From c164bcff6832766593125b4b9e150e1dce76728a Mon Sep 17 00:00:00 2001 From: Jes Sorensen Date: Wed, 21 May 2014 09:37:41 +0200 Subject: [PATCH] staging: rtli8723au: Get rid of struct ndis_802_11_fixed_ies Signed-off-by: Jes Sorensen Signed-off-by: Greg Kroah-Hartman --- drivers/staging/rtl8723au/core/rtw_ap.c | 10 +++++---- drivers/staging/rtl8723au/core/rtw_mlme.c | 22 ++++++++++++++----- drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 20 +++++++++++------- drivers/staging/rtl8723au/core/rtw_wlan_util.c | 28 ++++++++++++++++++------- drivers/staging/rtl8723au/hal/rtl8723a_cmd.c | 9 ++++++-- drivers/staging/rtl8723au/include/wlan_bssdef.h | 6 ------ 6 files changed, 62 insertions(+), 33 deletions(-) diff --git a/drivers/staging/rtl8723au/core/rtw_ap.c b/drivers/staging/rtl8723au/core/rtw_ap.c index e86e5f8..878d2b52 100644 --- a/drivers/staging/rtl8723au/core/rtw_ap.c +++ b/drivers/staging/rtl8723au/core/rtw_ap.c @@ -652,6 +652,7 @@ static void start_bss_network(struct rtw_adapter *padapter, u8 *pbuf) struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; struct wlan_bssid_ex *pnetwork_mlmeext = &pmlmeinfo->network; struct HT_info_element *pht_info = NULL; + int bcn_fixed_size; bcn_interval = (u16)pnetwork->BeaconPeriod; cur_channel = pnetwork->DSConfig; @@ -723,11 +724,12 @@ static void start_bss_network(struct rtw_adapter *padapter, u8 *pbuf) DYNAMIC_ALL_FUNC_ENABLE); } /* set channel, bwmode */ + bcn_fixed_size = offsetof(struct ieee80211_mgmt, u.beacon.variable) - + offsetof(struct ieee80211_mgmt, u.beacon); + p = cfg80211_find_ie(WLAN_EID_HT_OPERATION, - pnetwork->IEs + - sizeof(struct ndis_802_11_fixed_ies), - pnetwork->IELength - - sizeof(struct ndis_802_11_fixed_ies)); + pnetwork->IEs + bcn_fixed_size, + pnetwork->IELength - bcn_fixed_size); if (p && p[1]) { pht_info = (struct HT_info_element *)(p + 2); diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c index 40a3d6f..da25485 100644 --- a/drivers/staging/rtl8723au/core/rtw_mlme.c +++ b/drivers/staging/rtl8723au/core/rtw_mlme.c @@ -469,11 +469,16 @@ static void update_current_network(struct rtw_adapter *adapter, if (check_fwstate(pmlmepriv, _FW_LINKED) && is_same_network23a(&pmlmepriv->cur_network.network, pnetwork)) { + int bcn_size; update_network23a(&pmlmepriv->cur_network.network, pnetwork,adapter, true); + + bcn_size = offsetof(struct ieee80211_mgmt, u.beacon.variable) - + offsetof(struct ieee80211_mgmt, u.beacon); + rtw_update_protection23a(adapter, pmlmepriv->cur_network.network.IEs + - sizeof (struct ndis_802_11_fixed_ies), + bcn_size, pmlmepriv->cur_network.network.IELength); } } @@ -1101,6 +1106,7 @@ rtw_joinbss_update_network23a(struct rtw_adapter *padapter, { struct mlme_priv *pmlmepriv = &padapter->mlmepriv; struct wlan_network *cur_network = &pmlmepriv->cur_network; + int bcn_size; DBG_8723A("%s\n", __func__); @@ -1153,9 +1159,11 @@ rtw_joinbss_update_network23a(struct rtw_adapter *padapter, break; } + bcn_size = offsetof(struct ieee80211_mgmt, u.beacon.variable) - + offsetof(struct ieee80211_mgmt, u.beacon); + rtw_update_protection23a(padapter, cur_network->network.IEs + - sizeof (struct ndis_802_11_fixed_ies), - cur_network->network.IELength); + bcn_size, cur_network->network.IELength); rtw_update_ht_cap23a(padapter, cur_network->network.IEs, cur_network->network.IELength); @@ -2282,6 +2290,7 @@ void rtw_update_ht_cap23a(struct rtw_adapter *padapter, u8 *pie, uint ie_len) struct registry_priv *pregistrypriv = &padapter->registrypriv; struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; + int bcn_fixed_size; if (!phtpriv->ht_option) return; @@ -2291,9 +2300,12 @@ void rtw_update_ht_cap23a(struct rtw_adapter *padapter, u8 *pie, uint ie_len) DBG_8723A("+rtw_update_ht_cap23a()\n"); + bcn_fixed_size = offsetof(struct ieee80211_mgmt, u.beacon.variable) - + offsetof(struct ieee80211_mgmt, u.beacon); + /* Adjust pie + ie_len for our searches */ - pie += sizeof (struct ndis_802_11_fixed_ies); - ie_len -= sizeof (struct ndis_802_11_fixed_ies); + pie += bcn_fixed_size; + ie_len -= bcn_fixed_size; /* maybe needs check if ap supports rx ampdu. */ if (phtpriv->ampdu_enable == false && diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c index 41ca73c..8c73fed 100644 --- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c @@ -3278,7 +3278,7 @@ void issue_assocreq23a(struct rtw_adapter *padapter) struct mlme_priv *pmlmepriv = &padapter->mlmepriv; struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; - int bssrate_len = 0, sta_bssrate_len = 0, pie_len; + int bssrate_len = 0, sta_bssrate_len = 0, pie_len, bcn_fixed_size; u8 * pie; pmgntframe = alloc_mgtxmitframe23a(pxmitpriv); @@ -3393,9 +3393,11 @@ void issue_assocreq23a(struct rtw_adapter *padapter) bssrate_len, bssrate, &pattrib->pktlen); /* RSN */ - pie = pmlmeinfo->network.IEs + sizeof(struct ndis_802_11_fixed_ies); - pie_len = pmlmeinfo->network.IELength - - sizeof(struct ndis_802_11_fixed_ies); + bcn_fixed_size = offsetof(struct ieee80211_mgmt, u.beacon.variable) - + offsetof(struct ieee80211_mgmt, u.beacon); + + pie = pmlmeinfo->network.IEs + bcn_fixed_size; + pie_len = pmlmeinfo->network.IELength - bcn_fixed_size; p = cfg80211_find_ie(WLAN_EID_RSN, pie, pie_len); if (p) @@ -3471,8 +3473,7 @@ void issue_assocreq23a(struct rtw_adapter *padapter) } /* vendor specific IE, such as WPA, WMM, WPS */ - for (i = sizeof(struct ndis_802_11_fixed_ies); - i < pmlmeinfo->network.IELength;) { + for (i = bcn_fixed_size; i < pmlmeinfo->network.IELength;) { pIE = (struct ndis_802_11_var_ies *) (pmlmeinfo->network.IEs + i); @@ -5900,6 +5901,7 @@ int join_cmd_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf) const struct wlan_bssid_ex *pparm = (struct wlan_bssid_ex *)pbuf; struct HT_info_element *pht_info; u32 i; + int bcn_fixed_size; /* u32 initialgain; */ /* u32 acparm; */ @@ -5945,8 +5947,10 @@ int join_cmd_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf) /* pmlmeinfo->assoc_AP_vendor = check_assoc_AP23a(pnetwork->IEs, pnetwork->IELength); */ - for (i = sizeof(struct ndis_802_11_fixed_ies); i < pnetwork->IELength;) - { + bcn_fixed_size = offsetof(struct ieee80211_mgmt, u.beacon.variable) - + offsetof(struct ieee80211_mgmt, u.beacon); + + for (i = bcn_fixed_size; i < pnetwork->IELength;) { pIE = (struct ndis_802_11_var_ies *)(pnetwork->IEs + i); switch (pIE->ElementID) diff --git a/drivers/staging/rtl8723au/core/rtw_wlan_util.c b/drivers/staging/rtl8723au/core/rtw_wlan_util.c index c4c4716..ce73cbe 100644 --- a/drivers/staging/rtl8723au/core/rtw_wlan_util.c +++ b/drivers/staging/rtl8723au/core/rtw_wlan_util.c @@ -1173,10 +1173,13 @@ bool is_ap_in_tkip23a(struct rtw_adapter *padapter) struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; struct wlan_bssid_ex *cur_network = &pmlmeinfo->network; + int bcn_fixed_size; + + bcn_fixed_size = offsetof(struct ieee80211_mgmt, u.beacon.variable) - + offsetof(struct ieee80211_mgmt, u.beacon); if (rtw_get_capability23a(cur_network) & WLAN_CAPABILITY_PRIVACY) { - for (i = sizeof(struct ndis_802_11_fixed_ies); - i < pmlmeinfo->network.IELength;) { + for (i = bcn_fixed_size; i < pmlmeinfo->network.IELength;) { pIE = (struct ndis_802_11_var_ies *) (pmlmeinfo->network.IEs + i); @@ -1207,10 +1210,13 @@ bool should_forbid_n_rate23a(struct rtw_adapter * padapter) struct ndis_802_11_var_ies *pIE; struct mlme_priv *pmlmepriv = &padapter->mlmepriv; struct wlan_bssid_ex *cur_network = &pmlmepriv->cur_network.network; + int bcn_fixed_size; + + bcn_fixed_size = offsetof(struct ieee80211_mgmt, u.beacon.variable) - + offsetof(struct ieee80211_mgmt, u.beacon); if (rtw_get_capability23a(cur_network) & WLAN_CAPABILITY_PRIVACY) { - for (i = sizeof(struct ndis_802_11_fixed_ies); - i < cur_network->IELength;) { + for (i = bcn_fixed_size; i < cur_network->IELength;) { pIE = (struct ndis_802_11_var_ies *) (cur_network->IEs + i); @@ -1248,10 +1254,13 @@ bool is_ap_in_wep23a(struct rtw_adapter *padapter) struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; struct wlan_bssid_ex *cur_network = &pmlmeinfo->network; + int bcn_fixed_size; + + bcn_fixed_size = offsetof(struct ieee80211_mgmt, u.beacon.variable) - + offsetof(struct ieee80211_mgmt, u.beacon); if (rtw_get_capability23a(cur_network) & WLAN_CAPABILITY_PRIVACY) { - for (i = sizeof(struct ndis_802_11_fixed_ies); - i < pmlmeinfo->network.IELength;) { + for (i = bcn_fixed_size; i < pmlmeinfo->network.IELength;) { pIE = (struct ndis_802_11_var_ies *) (pmlmeinfo->network.IEs + i); @@ -1432,14 +1441,17 @@ void update_tx_basic_rate23a(struct rtw_adapter *padapter, u8 wirelessmode) unsigned char check_assoc_AP23a(u8 *pframe, uint len) { - unsigned int i; + int i, bcn_fixed_size; struct ndis_802_11_var_ies *pIE; u8 epigram_vendor_flag; u8 ralink_vendor_flag; epigram_vendor_flag = 0; ralink_vendor_flag = 0; - for (i = sizeof(struct ndis_802_11_fixed_ies); i < len;) { + bcn_fixed_size = offsetof(struct ieee80211_mgmt, u.beacon.variable) - + offsetof(struct ieee80211_mgmt, u.beacon); + + for (i = bcn_fixed_size; i < len;) { pIE = (struct ndis_802_11_var_ies *)(pframe + i); switch (pIE->ElementID) { diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c b/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c index 457ce92..1166062 100644 --- a/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c +++ b/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c @@ -210,6 +210,7 @@ static void ConstructBeacon(struct rtw_adapter *padapter, u8 *pframe, u32 *pLeng struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; struct wlan_bssid_ex *cur_network = &pmlmeinfo->network; u8 bc_addr[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; + int bcn_fixed_size; /* DBG_8723A("%s\n", __FUNCTION__); */ @@ -246,9 +247,13 @@ static void ConstructBeacon(struct rtw_adapter *padapter, u8 *pframe, u32 *pLeng pktlen += 2; if ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE) { + bcn_fixed_size = + offsetof(struct ieee80211_mgmt, u.beacon.variable) - + offsetof(struct ieee80211_mgmt, u.beacon); + /* DBG_8723A("ie len =%d\n", cur_network->IELength); */ - pktlen += cur_network->IELength - sizeof(struct ndis_802_11_fixed_ies); - memcpy(pframe, cur_network->IEs+sizeof(struct ndis_802_11_fixed_ies), pktlen); + pktlen += cur_network->IELength - bcn_fixed_size; + memcpy(pframe, cur_network->IEs + bcn_fixed_size, pktlen); goto _ConstructBeacon; } diff --git a/drivers/staging/rtl8723au/include/wlan_bssdef.h b/drivers/staging/rtl8723au/include/wlan_bssdef.h index 3c330f3..c0dfcda 100644 --- a/drivers/staging/rtl8723au/include/wlan_bssdef.h +++ b/drivers/staging/rtl8723au/include/wlan_bssdef.h @@ -22,12 +22,6 @@ #define NDIS_802_11_LENGTH_RATES 8 #define NDIS_802_11_LENGTH_RATES_EX 16 -struct ndis_802_11_fixed_ies { - u8 Timestamp[8]; - u16 BeaconInterval; - u16 Capabilities; -}; - struct ndis_802_11_var_ies { u8 ElementID; u8 Length; -- 2.7.4