From d76cbb313de719eaf9f11459f1c0ec5fbf70524d Mon Sep 17 00:00:00 2001 From: Larry Finger Date: Wed, 8 Apr 2015 13:43:40 -0500 Subject: [PATCH] rtl8188eu: Replace rtw_ieee80211_ht_cap with standard kernel version As shown in the previous commits, keeping alignment beetween the private header and the kernel version is a problem. Solve the issue by using the kernel version. Signed-off-by: Larry Finger --- core/rtw_ap.c | 11 +++++------ core/rtw_ieee80211.c | 4 ++-- core/rtw_ioctl_set.c | 6 +++--- core/rtw_mlme.c | 10 +++++----- core/rtw_mlme_ext.c | 6 +++--- core/rtw_wlan_util.c | 4 ++-- include/ieee80211.h | 4 ++-- include/rtw_ht.h | 2 +- include/wifi.h | 21 +-------------------- os_dep/ioctl_linux.c | 10 +++++----- 10 files changed, 29 insertions(+), 49 deletions(-) diff --git a/core/rtw_ap.c b/core/rtw_ap.c index 0024348..7c4f4ff 100644 --- a/core/rtw_ap.c +++ b/core/rtw_ap.c @@ -543,7 +543,7 @@ void add_RATid(struct adapter *padapter, struct sta_info *psta, u8 rssi_level) limit=8;/* 1R */ for (i=0; iht_cap.supp_mcs_set[i/8] & BIT(i%8)) + if (psta_ht->ht_cap.mcs.rx_mask[i/8] & BIT(i%8)) tx_ra_bitmap |= BIT(i+12); } @@ -1207,7 +1207,7 @@ int rtw_check_beacon_data(struct adapter *padapter, u8 *pbuf, int len) { u8 rf_type; - struct rtw_ieee80211_ht_cap *pht_cap = (struct rtw_ieee80211_ht_cap *)(p+2); + struct ieee80211_ht_cap *pht_cap = (struct ieee80211_ht_cap *)(p+2); pHT_caps_ie=p; @@ -1230,10 +1230,9 @@ int rtw_check_beacon_data(struct adapter *padapter, u8 *pbuf, int len) pht_cap->ampdu_params_info |= (IEEE80211_HT_CAP_AMPDU_FACTOR & 0x03); /* set Max Rx AMPDU size to 64K */ - if(rf_type == RF_1T1R) - { - pht_cap->supp_mcs_set[0] = 0xff; - pht_cap->supp_mcs_set[1] = 0x0; + if(rf_type == RF_1T1R) { + pht_cap->mcs.rx_mask[0] = 0xff; + pht_cap->mcs.rx_mask[1] = 0x0; } memcpy(&pmlmepriv->htpriv.ht_cap, p+2, ie_len); diff --git a/core/rtw_ieee80211.c b/core/rtw_ieee80211.c index 045b285..26554d6 100644 --- a/core/rtw_ieee80211.c +++ b/core/rtw_ieee80211.c @@ -1918,7 +1918,7 @@ void rtw_get_bcn_info(struct wlan_network *pnetwork) /* u8 wpa_ie[255],rsn_ie[255]; */ u16 wpa_len=0,rsn_len=0; struct HT_info_element *pht_info = NULL; - struct rtw_ieee80211_ht_cap *pht_cap = NULL; + struct ieee80211_ht_cap *pht_cap = NULL; unsigned int len; unsigned char *p; __le16 le_tmp; @@ -1955,7 +1955,7 @@ void rtw_get_bcn_info(struct wlan_network *pnetwork) /* parsing HT_CAP_IE */ p = rtw_get_ie(pnetwork->network.IEs + _FIXED_IE_LENGTH_, _HT_CAPABILITY_IE_, &len, pnetwork->network.IELength - _FIXED_IE_LENGTH_); if(p && len>0) { - pht_cap = (struct rtw_ieee80211_ht_cap *)(p + 2); + pht_cap = (struct ieee80211_ht_cap *)(p + 2); pnetwork->BcnInfo.ht_cap_info = le16_to_cpu(pht_cap->cap_info); } else { pnetwork->BcnInfo.ht_cap_info = 0; diff --git a/core/rtw_ioctl_set.c b/core/rtw_ioctl_set.c index 90c484b..28c7d84 100644 --- a/core/rtw_ioctl_set.c +++ b/core/rtw_ioctl_set.c @@ -1194,7 +1194,7 @@ u16 rtw_get_cur_max_rate(struct adapter *adapter) struct registry_priv *pregistrypriv = &adapter->registrypriv; struct mlme_priv *pmlmepriv = &adapter->mlmepriv; struct wlan_bssid_ex *pcur_bss = &pmlmepriv->cur_network.network; - struct rtw_ieee80211_ht_cap *pht_capie; + struct ieee80211_ht_cap *pht_capie; u8 rf_type = 0; u8 bw_40MHz=0, short_GI_20=0, short_GI_40=0; u16 mcs_rate=0; @@ -1208,9 +1208,9 @@ u16 rtw_get_cur_max_rate(struct adapter *adapter) p = rtw_get_ie(&pcur_bss->IEs[12], _HT_CAPABILITY_IE_, &ht_ielen, pcur_bss->IELength-12); if(p && ht_ielen>0) { - pht_capie = (struct rtw_ieee80211_ht_cap *)(p+2); + pht_capie = (struct ieee80211_ht_cap *)(p+2); - memcpy(&mcs_rate , pht_capie->supp_mcs_set, 2); + memcpy(&mcs_rate , pht_capie->mcs.rx_mask, 2); /* bw_40MHz = (pht_capie->cap_info&IEEE80211_HT_CAP_SUP_WIDTH) ? 1:0; */ /* cur_bwmod is updated by beacon, pmlmeinfo is updated by association response */ diff --git a/core/rtw_mlme.c b/core/rtw_mlme.c index 8659c27..3d6ca98 100644 --- a/core/rtw_mlme.c +++ b/core/rtw_mlme.c @@ -2826,7 +2826,7 @@ unsigned int rtw_restructure_ht_ie(struct adapter *padapter, u8 *in_ie, u8 *out_ u32 ielen, out_len; enum HT_CAP_AMPDU_FACTOR max_rx_ampdu_factor; unsigned char *p, *pframe; - struct rtw_ieee80211_ht_cap ht_capie; + struct ieee80211_ht_cap ht_capie; unsigned char WMM_IE[] = {0x00, 0x50, 0xf2, 0x02, 0x00, 0x01, 0x00}; struct mlme_priv *pmlmepriv = &padapter->mlmepriv; struct qos_priv *pqospriv= &pmlmepriv->qospriv; @@ -2850,7 +2850,7 @@ unsigned int rtw_restructure_ht_ie(struct adapter *padapter, u8 *in_ie, u8 *out_ out_len = *pout_len; - memset(&ht_capie, 0, sizeof(struct rtw_ieee80211_ht_cap)); + memset(&ht_capie, 0, sizeof(struct ieee80211_ht_cap)); ht_capie.cap_info = cpu_to_le16(IEEE80211_HT_CAP_SUP_WIDTH |IEEE80211_HT_CAP_SGI_20 | IEEE80211_HT_CAP_SGI_40 | IEEE80211_HT_CAP_TX_STBC | @@ -2873,7 +2873,7 @@ unsigned int rtw_restructure_ht_ie(struct adapter *padapter, u8 *in_ie, u8 *out_ pframe = rtw_set_ie(out_ie+out_len, _HT_CAPABILITY_IE_, - sizeof(struct rtw_ieee80211_ht_cap), (unsigned char*)&ht_capie, pout_len); + sizeof(struct ieee80211_ht_cap), (unsigned char*)&ht_capie, pout_len); phtpriv->ht_option = true; @@ -2896,7 +2896,7 @@ void rtw_update_ht_cap(struct adapter *padapter, u8 *pie, uint ie_len) u8 *p, max_ampdu_sz; int len; /* struct sta_info *bmc_sta, *psta; */ - struct rtw_ieee80211_ht_cap *pht_capie; + struct ieee80211_ht_cap *pht_capie; struct ieee80211_ht_addt_info *pht_addtinfo; /* struct recv_reorder_ctrl *preorder_ctrl; */ struct mlme_priv *pmlmepriv = &padapter->mlmepriv; @@ -2939,7 +2939,7 @@ void rtw_update_ht_cap(struct adapter *padapter, u8 *pie, uint ie_len) p = rtw_get_ie(pie+sizeof (struct ndis_802_11_fixed_ies), _HT_CAPABILITY_IE_, &len, ie_len-sizeof (struct ndis_802_11_fixed_ies)); if(p && len>0) { - pht_capie = (struct rtw_ieee80211_ht_cap *)(p+2); + pht_capie = (struct ieee80211_ht_cap *)(p+2); max_ampdu_sz = (pht_capie->ampdu_params_info & IEEE80211_HT_CAP_AMPDU_FACTOR); max_ampdu_sz = 1 << (max_ampdu_sz+3); /* max_ampdu_sz (kbytes); */ diff --git a/core/rtw_mlme_ext.c b/core/rtw_mlme_ext.c index 05bd3fb..7d944ee 100644 --- a/core/rtw_mlme_ext.c +++ b/core/rtw_mlme_ext.c @@ -1698,14 +1698,14 @@ unsigned int OnAssocReq(struct adapter *padapter, union recv_frame *precv_frame) } /* save HT capabilities in the sta object */ - memset(&pstat->htpriv.ht_cap, 0, sizeof(struct rtw_ieee80211_ht_cap)); - if (elems.ht_capabilities && elems.ht_capabilities_len >= sizeof(struct rtw_ieee80211_ht_cap)) + memset(&pstat->htpriv.ht_cap, 0, sizeof(struct ieee80211_ht_cap)); + if (elems.ht_capabilities && elems.ht_capabilities_len >= sizeof(struct ieee80211_ht_cap)) { pstat->flags |= WLAN_STA_HT; pstat->flags |= WLAN_STA_WME; - memcpy(&pstat->htpriv.ht_cap, elems.ht_capabilities, sizeof(struct rtw_ieee80211_ht_cap)); + memcpy(&pstat->htpriv.ht_cap, elems.ht_capabilities, sizeof(struct ieee80211_ht_cap)); } else pstat->flags &= ~WLAN_STA_HT; diff --git a/core/rtw_wlan_util.c b/core/rtw_wlan_util.c index c44eb71..e177d8d 100644 --- a/core/rtw_wlan_util.c +++ b/core/rtw_wlan_util.c @@ -1170,7 +1170,7 @@ int rtw_check_bcn_info(struct adapter *Adapter, u8 *pframe, u32 packet_len) u32 hidden_ssid = 0; u8 cur_network_type, network_type=0; struct HT_info_element *pht_info = NULL; - struct rtw_ieee80211_ht_cap *pht_cap = NULL; + struct ieee80211_ht_cap *pht_cap = NULL; u32 bcn_channel; unsigned short ht_cap_info; unsigned char ht_info_infos_0; @@ -1210,7 +1210,7 @@ int rtw_check_bcn_info(struct adapter *Adapter, u8 *pframe, u32 packet_len) /* parsing HT_CAP_IE */ p = rtw_get_ie(bssid->IEs + _FIXED_IE_LENGTH_, _HT_CAPABILITY_IE_, &len, bssid->IELength - _FIXED_IE_LENGTH_); if(p && len>0) { - pht_cap = (struct rtw_ieee80211_ht_cap *)(p + 2); + pht_cap = (struct ieee80211_ht_cap *)(p + 2); ht_cap_info = le16_to_cpu(pht_cap->cap_info); } else { ht_cap_info = 0; diff --git a/include/ieee80211.h b/include/ieee80211.h index 1f4c434..d038d3b 100644 --- a/include/ieee80211.h +++ b/include/ieee80211.h @@ -232,7 +232,7 @@ struct ieee_param { u16 capability; int flags; u8 tx_supp_rates[16]; - struct rtw_ieee80211_ht_cap ht_cap; + struct ieee80211_ht_cap ht_cap; } add_sta; struct { u8 reserved[2];/* for set max_num_sta */ @@ -257,7 +257,7 @@ struct sta_data { u32 sta_set; u8 tx_supp_rates[16]; u32 tx_supp_rates_len; - struct rtw_ieee80211_ht_cap ht_cap; + struct ieee80211_ht_cap ht_cap; u64 rx_pkts; u64 rx_bytes; u64 rx_drops; diff --git a/include/rtw_ht.h b/include/rtw_ht.h index fcaa937..c411bf6 100644 --- a/include/rtw_ht.h +++ b/include/rtw_ht.h @@ -42,7 +42,7 @@ struct ht_priv /* u8 ADDBA_retry_count; */ u8 candidate_tid_bitmap; - struct rtw_ieee80211_ht_cap ht_cap; + struct ieee80211_ht_cap ht_cap; }; diff --git a/include/wifi.h b/include/wifi.h index 6b0d4fe..d44e451 100644 --- a/include/wifi.h +++ b/include/wifi.h @@ -606,27 +606,8 @@ struct rtw_ieee80211_bar { #define IEEE80211_BAR_CTRL_ACK_POLICY_NORMAL 0x0000 #define IEEE80211_BAR_CTRL_CBMTID_COMPRESSED_BA 0x0004 - /** - * struct rtw_ieee80211_ht_cap - HT capabilities - * - * This structure refers to "HT capabilities element" as - * described in 802.11n draft section 7.3.2.52 - */ - -struct rtw_ieee80211_ht_cap { - __le16 cap_info; - u8 ampdu_params_info; - union { - u8 supp_mcs_set[16]; - struct ieee80211_mcs_info mcs; - }; - __le16 extended_ht_cap_info; - __le32 tx_BF_cap_info; - u8 antenna_selection_info; -} __packed; - /** - * struct rtw_ieee80211_ht_cap - HT additional information + * struct ieee80211_ht_cap - HT additional information * * This structure refers to "HT information element" as * described in 802.11n draft section 7.3.2.53 diff --git a/os_dep/ioctl_linux.c b/os_dep/ioctl_linux.c index 56d6301..d89ae3b 100644 --- a/os_dep/ioctl_linux.c +++ b/os_dep/ioctl_linux.c @@ -346,10 +346,10 @@ static char *translate_scan(struct adapter *padapter, p = rtw_get_ie(&pnetwork->network.IEs[12], _HT_CAPABILITY_IE_, &ht_ielen, pnetwork->network.IELength-12); if(p && ht_ielen>0) { - struct rtw_ieee80211_ht_cap *pht_capie; + struct ieee80211_ht_cap *pht_capie; ht_cap = true; - pht_capie = (struct rtw_ieee80211_ht_cap *)(p+2); - memcpy(&mcs_rate , pht_capie->supp_mcs_set, 2); + pht_capie = (struct ieee80211_ht_cap *)(p+2); + memcpy(&mcs_rate , pht_capie->mcs.rx_mask, 2); bw_40MHz = (le16_to_cpu(pht_capie->cap_info) & IEEE80211_HT_CAP_SUP_WIDTH) ? 1 : 0; short_GI = (le16_to_cpu(pht_capie->cap_info) & (IEEE80211_HT_CAP_SGI_20 | IEEE80211_HT_CAP_SGI_40)) ? 1 : 0; } @@ -6855,7 +6855,7 @@ static int rtw_add_sta(struct net_device *dev, struct ieee_param *param) { psta->htpriv.ht_option = true; psta->qos_option = 1; - memcpy((void*)&psta->htpriv.ht_cap, (void*)¶m->u.add_sta.ht_cap, sizeof(struct rtw_ieee80211_ht_cap)); + memcpy((void*)&psta->htpriv.ht_cap, (void*)¶m->u.add_sta.ht_cap, sizeof(struct ieee80211_ht_cap)); } else { @@ -6969,7 +6969,7 @@ static int rtw_ioctl_get_sta_data(struct net_device *dev, struct ieee_param *par psta_data->tx_supp_rates_len = psta->bssratelen; memcpy(psta_data->tx_supp_rates, psta->bssrateset, psta->bssratelen); - memcpy(&psta_data->ht_cap, &psta->htpriv.ht_cap, sizeof(struct rtw_ieee80211_ht_cap)); + memcpy(&psta_data->ht_cap, &psta->htpriv.ht_cap, sizeof(struct ieee80211_ht_cap)); psta_data->rx_pkts = psta->sta_stats.rx_data_pkts; psta_data->rx_bytes = psta->sta_stats.rx_bytes; psta_data->rx_drops = psta->sta_stats.rx_drops;