mirror of
https://github.com/lwfinger/rtl8188eu.git
synced 2025-05-19 11:33:05 +00:00
rtl8188eu: Backport kernel version
This driver was added to the kernel with version 3.12. The changes in that version are now brought back to the GitHub repo. Essentually all of the code is updated. Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
This commit is contained in:
parent
868a407435
commit
19db43ecbd
89 changed files with 2026 additions and 5957 deletions
|
@ -28,7 +28,6 @@ static unsigned char ARTHEROS_OUI2[] = {0x00, 0x13, 0x74};
|
|||
|
||||
static unsigned char BROADCOM_OUI1[] = {0x00, 0x10, 0x18};
|
||||
static unsigned char BROADCOM_OUI2[] = {0x00, 0x0a, 0xf7};
|
||||
static unsigned char BROADCOM_OUI3[] = {0x00, 0x05, 0xb5};
|
||||
|
||||
static unsigned char CISCO_OUI[] = {0x00, 0x40, 0x96};
|
||||
static unsigned char MARVELL_OUI[] = {0x00, 0x50, 0x43};
|
||||
|
@ -145,7 +144,7 @@ u8 judge_network_type(struct adapter *padapter, unsigned char *rate, int ratelen
|
|||
return network_type;
|
||||
}
|
||||
|
||||
unsigned char ratetbl_val_2wifirate(unsigned char rate)
|
||||
static unsigned char ratetbl_val_2wifirate(unsigned char rate)
|
||||
{
|
||||
unsigned char val = 0;
|
||||
|
||||
|
@ -190,7 +189,7 @@ unsigned char ratetbl_val_2wifirate(unsigned char rate)
|
|||
return val;
|
||||
}
|
||||
|
||||
int is_basicrate(struct adapter *padapter, unsigned char rate)
|
||||
static int is_basicrate(struct adapter *padapter, unsigned char rate)
|
||||
{
|
||||
int i;
|
||||
unsigned char val;
|
||||
|
@ -207,7 +206,7 @@ int is_basicrate(struct adapter *padapter, unsigned char rate)
|
|||
return false;
|
||||
}
|
||||
|
||||
unsigned int ratetbl2rateset(struct adapter *padapter, unsigned char *rateset)
|
||||
static unsigned int ratetbl2rateset(struct adapter *padapter, unsigned char *rateset)
|
||||
{
|
||||
int i;
|
||||
unsigned char rate;
|
||||
|
@ -242,7 +241,7 @@ void get_rate_set(struct adapter *padapter, unsigned char *pbssrate, int *bssrat
|
|||
|
||||
_rtw_memset(supportedrates, 0, NumRates);
|
||||
*bssrate_len = ratetbl2rateset(padapter, supportedrates);
|
||||
_rtw_memcpy(pbssrate, supportedrates, *bssrate_len);
|
||||
memcpy(pbssrate, supportedrates, *bssrate_len);
|
||||
}
|
||||
|
||||
void UpdateBrateTbl(struct adapter *Adapter, u8 *mbrate)
|
||||
|
@ -307,11 +306,6 @@ void Switch_DM_Func(struct adapter *padapter, u32 mode, u8 enable)
|
|||
rtw_hal_set_hwreg(padapter, HW_VAR_DM_FUNC_CLR, (u8 *)(&mode));
|
||||
}
|
||||
|
||||
static void Set_NETYPE1_MSR(struct adapter *padapter, u8 type)
|
||||
{
|
||||
rtw_hal_set_hwreg(padapter, HW_VAR_MEDIA_STATUS1, (u8 *)(&type));
|
||||
}
|
||||
|
||||
static void Set_NETYPE0_MSR(struct adapter *padapter, u8 type)
|
||||
{
|
||||
rtw_hal_set_hwreg(padapter, HW_VAR_MEDIA_STATUS, (u8 *)(&type));
|
||||
|
@ -356,11 +350,11 @@ void SelectChannel(struct adapter *padapter, unsigned char channel)
|
|||
{
|
||||
/* saved channel info */
|
||||
rtw_set_oper_ch(padapter, channel);
|
||||
|
||||
rtw_hal_set_chan(padapter, channel);
|
||||
}
|
||||
|
||||
void SetBWMode(struct adapter *padapter, unsigned short bwmode, unsigned char channel_offset)
|
||||
void SetBWMode(struct adapter *padapter, unsigned short bwmode,
|
||||
unsigned char channel_offset)
|
||||
{
|
||||
/* saved bw info */
|
||||
rtw_set_oper_bw(padapter, bwmode);
|
||||
|
@ -419,7 +413,7 @@ __inline u8 *get_my_bssid(struct wlan_bssid_ex *pnetwork)
|
|||
u16 get_beacon_interval(struct wlan_bssid_ex *bss)
|
||||
{
|
||||
__le16 val;
|
||||
_rtw_memcpy((unsigned char *)&val, rtw_get_beacon_interval_from_ie(bss->IEs), 2);
|
||||
memcpy((unsigned char *)&val, rtw_get_beacon_interval_from_ie(bss->IEs), 2);
|
||||
|
||||
return le16_to_cpu(val);
|
||||
}
|
||||
|
@ -563,7 +557,7 @@ int WMM_param_handler(struct adapter *padapter, struct ndis_802_11_var_ie *pIE)
|
|||
}
|
||||
|
||||
pmlmeinfo->WMM_enable = 1;
|
||||
_rtw_memcpy(&(pmlmeinfo->WMM_param), (pIE->data + 6), sizeof(struct WMM_para_element));
|
||||
memcpy(&(pmlmeinfo->WMM_param), (pIE->data + 6), sizeof(struct WMM_para_element));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -637,7 +631,7 @@ void WMMOnAssocRsp(struct adapter *padapter)
|
|||
inx[0] = 0; inx[1] = 1; inx[2] = 2; inx[3] = 3;
|
||||
|
||||
if (pregpriv->wifi_spec == 1) {
|
||||
u32 j, tmp, change_inx;
|
||||
u32 j, tmp, change_inx = false;
|
||||
|
||||
/* entry indx: 0->vo, 1->vi, 2->be, 3->bk. */
|
||||
for (i = 0; i < 4; i++) {
|
||||
|
@ -819,7 +813,7 @@ void HT_info_handler(struct adapter *padapter, struct ndis_802_11_var_ie *pIE)
|
|||
return;
|
||||
|
||||
pmlmeinfo->HT_info_enable = 1;
|
||||
_rtw_memcpy(&(pmlmeinfo->HT_info), pIE->data, pIE->Length);
|
||||
memcpy(&(pmlmeinfo->HT_info), pIE->data, pIE->Length);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -863,7 +857,7 @@ void ERP_IE_handler(struct adapter *padapter, struct ndis_802_11_var_ie *pIE)
|
|||
return;
|
||||
|
||||
pmlmeinfo->ERP_enable = 1;
|
||||
_rtw_memcpy(&(pmlmeinfo->ERP_IE), pIE->data, pIE->Length);
|
||||
memcpy(&(pmlmeinfo->ERP_IE), pIE->data, pIE->Length);
|
||||
}
|
||||
|
||||
void VCS_update(struct adapter *padapter, struct sta_info *psta)
|
||||
|
@ -952,7 +946,7 @@ int rtw_check_bcn_info(struct adapter *Adapter, u8 *pframe, u32 packet_len)
|
|||
|
||||
/* below is to copy the information element */
|
||||
bssid->IELength = len;
|
||||
_rtw_memcpy(bssid->IEs, (pframe + sizeof(struct rtw_ieee80211_hdr_3addr)), bssid->IELength);
|
||||
memcpy(bssid->IEs, (pframe + sizeof(struct rtw_ieee80211_hdr_3addr)), bssid->IELength);
|
||||
|
||||
/* check bw and channel offset */
|
||||
/* parsing HT_CAP_IE */
|
||||
|
@ -1014,7 +1008,7 @@ int rtw_check_bcn_info(struct adapter *Adapter, u8 *pframe, u32 packet_len)
|
|||
}
|
||||
|
||||
if ((NULL != p) && (false == hidden_ssid && (*(p + 1)))) {
|
||||
_rtw_memcpy(bssid->Ssid.Ssid, (p + 2), *(p + 1));
|
||||
memcpy(bssid->Ssid.Ssid, (p + 2), *(p + 1));
|
||||
bssid->Ssid.SsidLength = *(p + 1);
|
||||
} else {
|
||||
bssid->Ssid.SsidLength = 0;
|
||||
|
@ -1101,14 +1095,14 @@ int rtw_check_bcn_info(struct adapter *Adapter, u8 *pframe, u32 packet_len)
|
|||
}
|
||||
}
|
||||
|
||||
rtw_mfree((u8 *)bssid, sizeof(struct wlan_bssid_ex));
|
||||
_func_exit_;
|
||||
kfree(bssid);
|
||||
return _SUCCESS;
|
||||
|
||||
_mismatch:
|
||||
rtw_mfree((u8 *)bssid, sizeof(struct wlan_bssid_ex));
|
||||
_func_exit_;
|
||||
kfree(bssid);
|
||||
return _FAIL;
|
||||
|
||||
_func_exit_;
|
||||
}
|
||||
|
||||
void update_beacon_info(struct adapter *padapter, u8 *pframe, uint pkt_len, struct sta_info *psta)
|
||||
|
@ -1351,24 +1345,12 @@ unsigned char get_highest_rate_idx(u32 mask)
|
|||
return rate_idx;
|
||||
}
|
||||
|
||||
unsigned char get_highest_mcs_rate(struct HT_caps_element *pHT_caps)
|
||||
{
|
||||
int i, mcs_rate;
|
||||
|
||||
mcs_rate = (pHT_caps->u.HT_cap_element.MCS_rate[0] | (pHT_caps->u.HT_cap_element.MCS_rate[1] << 8));
|
||||
|
||||
for (i = 15; i >= 0; i--)
|
||||
if (mcs_rate & (0x1 << i))
|
||||
break;
|
||||
return i;
|
||||
}
|
||||
|
||||
void Update_RA_Entry(struct adapter *padapter, u32 mac_id)
|
||||
{
|
||||
rtw_hal_update_ra_mask(padapter, mac_id, 0);
|
||||
}
|
||||
|
||||
void enable_rate_adaptive(struct adapter *padapter, u32 mac_id)
|
||||
static void enable_rate_adaptive(struct adapter *padapter, u32 mac_id)
|
||||
{
|
||||
Update_RA_Entry(padapter, mac_id);
|
||||
}
|
||||
|
@ -1383,7 +1365,7 @@ void set_sta_rate(struct adapter *padapter, struct sta_info *psta)
|
|||
void update_tx_basic_rate(struct adapter *padapter, u8 wirelessmode)
|
||||
{
|
||||
unsigned char supported_rates[NDIS_802_11_LENGTH_RATES_EX];
|
||||
#ifdef CONFIG_P2P
|
||||
#ifdef CONFIG_88EU_P2P
|
||||
struct wifidirect_info *pwdinfo = &padapter->wdinfo;
|
||||
|
||||
/* Added by Albert 2011/03/22 */
|
||||
|
@ -1391,15 +1373,15 @@ void update_tx_basic_rate(struct adapter *padapter, u8 wirelessmode)
|
|||
/* So, the Tx packet shouldn't use the CCK rate */
|
||||
if (!rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE))
|
||||
return;
|
||||
#endif /* CONFIG_P2P */
|
||||
#endif /* CONFIG_88EU_P2P */
|
||||
_rtw_memset(supported_rates, 0, NDIS_802_11_LENGTH_RATES_EX);
|
||||
|
||||
if ((wirelessmode & WIRELESS_11B) && (wirelessmode == WIRELESS_11B)) {
|
||||
_rtw_memcpy(supported_rates, rtw_basic_rate_cck, 4);
|
||||
memcpy(supported_rates, rtw_basic_rate_cck, 4);
|
||||
} else if (wirelessmode & WIRELESS_11B) {
|
||||
_rtw_memcpy(supported_rates, rtw_basic_rate_mix, 7);
|
||||
memcpy(supported_rates, rtw_basic_rate_mix, 7);
|
||||
} else {
|
||||
_rtw_memcpy(supported_rates, rtw_basic_rate_ofdm, 3);
|
||||
memcpy(supported_rates, rtw_basic_rate_ofdm, 3);
|
||||
}
|
||||
|
||||
if (wirelessmode & WIRELESS_11B)
|
||||
|
@ -1430,7 +1412,7 @@ unsigned char check_assoc_AP(u8 *pframe, uint len)
|
|||
return HT_IOT_PEER_ATHEROS;
|
||||
} else if ((_rtw_memcmp(pIE->data, BROADCOM_OUI1, 3)) ||
|
||||
(_rtw_memcmp(pIE->data, BROADCOM_OUI2, 3)) ||
|
||||
(_rtw_memcmp(pIE->data, BROADCOM_OUI3, 3))) {
|
||||
(_rtw_memcmp(pIE->data, BROADCOM_OUI2, 3))) {
|
||||
DBG_88E("link to Broadcom AP\n");
|
||||
return HT_IOT_PEER_BROADCOM;
|
||||
} else if (_rtw_memcmp(pIE->data, MARVELL_OUI, 3)) {
|
||||
|
@ -1608,9 +1590,9 @@ void update_bmc_sta_support_rate(struct adapter *padapter, u32 mac_id)
|
|||
|
||||
if (pmlmeext->cur_wireless_mode & WIRELESS_11B) {
|
||||
/* Only B, B/G, and B/G/N AP could use CCK rate */
|
||||
_rtw_memcpy((pmlmeinfo->FW_sta_info[mac_id].SupportedRates), rtw_basic_rate_cck, 4);
|
||||
memcpy((pmlmeinfo->FW_sta_info[mac_id].SupportedRates), rtw_basic_rate_cck, 4);
|
||||
} else {
|
||||
_rtw_memcpy((pmlmeinfo->FW_sta_info[mac_id].SupportedRates), rtw_basic_rate_ofdm, 4);
|
||||
memcpy((pmlmeinfo->FW_sta_info[mac_id].SupportedRates), rtw_basic_rate_ofdm, 3);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1626,12 +1608,12 @@ int update_sta_support_rate(struct adapter *padapter, u8 *pvar_ie, uint var_ie_l
|
|||
if (pIE == NULL)
|
||||
return _FAIL;
|
||||
|
||||
_rtw_memcpy(pmlmeinfo->FW_sta_info[cam_idx].SupportedRates, pIE->data, ie_len);
|
||||
memcpy(pmlmeinfo->FW_sta_info[cam_idx].SupportedRates, pIE->data, ie_len);
|
||||
supportRateNum = ie_len;
|
||||
|
||||
pIE = (struct ndis_802_11_var_ie *)rtw_get_ie(pvar_ie, _EXT_SUPPORTEDRATES_IE_, &ie_len, var_ie_len);
|
||||
if (pIE)
|
||||
_rtw_memcpy((pmlmeinfo->FW_sta_info[cam_idx].SupportedRates + supportRateNum), pIE->data, ie_len);
|
||||
memcpy((pmlmeinfo->FW_sta_info[cam_idx].SupportedRates + supportRateNum), pIE->data, ie_len);
|
||||
|
||||
return _SUCCESS;
|
||||
}
|
||||
|
@ -1703,6 +1685,5 @@ int rtw_handle_dualmac(struct adapter *adapter, bool init)
|
|||
} else {
|
||||
pbuddy_padapter = NULL;
|
||||
}
|
||||
exit:
|
||||
return status;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue