Commit c164bcff authored by Jes Sorensen's avatar Jes Sorensen Committed by Greg Kroah-Hartman

staging: rtli8723au: Get rid of struct ndis_802_11_fixed_ies

Signed-off-by: default avatarJes Sorensen <Jes.Sorensen@redhat.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 37cb982c
...@@ -652,6 +652,7 @@ static void start_bss_network(struct rtw_adapter *padapter, u8 *pbuf) ...@@ -652,6 +652,7 @@ static void start_bss_network(struct rtw_adapter *padapter, u8 *pbuf)
struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
struct wlan_bssid_ex *pnetwork_mlmeext = &pmlmeinfo->network; struct wlan_bssid_ex *pnetwork_mlmeext = &pmlmeinfo->network;
struct HT_info_element *pht_info = NULL; struct HT_info_element *pht_info = NULL;
int bcn_fixed_size;
bcn_interval = (u16)pnetwork->BeaconPeriod; bcn_interval = (u16)pnetwork->BeaconPeriod;
cur_channel = pnetwork->DSConfig; cur_channel = pnetwork->DSConfig;
...@@ -723,11 +724,12 @@ static void start_bss_network(struct rtw_adapter *padapter, u8 *pbuf) ...@@ -723,11 +724,12 @@ static void start_bss_network(struct rtw_adapter *padapter, u8 *pbuf)
DYNAMIC_ALL_FUNC_ENABLE); DYNAMIC_ALL_FUNC_ENABLE);
} }
/* set channel, bwmode */ /* 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, p = cfg80211_find_ie(WLAN_EID_HT_OPERATION,
pnetwork->IEs + pnetwork->IEs + bcn_fixed_size,
sizeof(struct ndis_802_11_fixed_ies), pnetwork->IELength - bcn_fixed_size);
pnetwork->IELength -
sizeof(struct ndis_802_11_fixed_ies));
if (p && p[1]) { if (p && p[1]) {
pht_info = (struct HT_info_element *)(p + 2); pht_info = (struct HT_info_element *)(p + 2);
......
...@@ -469,11 +469,16 @@ static void update_current_network(struct rtw_adapter *adapter, ...@@ -469,11 +469,16 @@ static void update_current_network(struct rtw_adapter *adapter,
if (check_fwstate(pmlmepriv, _FW_LINKED) && if (check_fwstate(pmlmepriv, _FW_LINKED) &&
is_same_network23a(&pmlmepriv->cur_network.network, pnetwork)) { is_same_network23a(&pmlmepriv->cur_network.network, pnetwork)) {
int bcn_size;
update_network23a(&pmlmepriv->cur_network.network, update_network23a(&pmlmepriv->cur_network.network,
pnetwork,adapter, true); pnetwork,adapter, true);
bcn_size = offsetof(struct ieee80211_mgmt, u.beacon.variable) -
offsetof(struct ieee80211_mgmt, u.beacon);
rtw_update_protection23a(adapter, rtw_update_protection23a(adapter,
pmlmepriv->cur_network.network.IEs + pmlmepriv->cur_network.network.IEs +
sizeof (struct ndis_802_11_fixed_ies), bcn_size,
pmlmepriv->cur_network.network.IELength); pmlmepriv->cur_network.network.IELength);
} }
} }
...@@ -1101,6 +1106,7 @@ rtw_joinbss_update_network23a(struct rtw_adapter *padapter, ...@@ -1101,6 +1106,7 @@ rtw_joinbss_update_network23a(struct rtw_adapter *padapter,
{ {
struct mlme_priv *pmlmepriv = &padapter->mlmepriv; struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
struct wlan_network *cur_network = &pmlmepriv->cur_network; struct wlan_network *cur_network = &pmlmepriv->cur_network;
int bcn_size;
DBG_8723A("%s\n", __func__); DBG_8723A("%s\n", __func__);
...@@ -1153,9 +1159,11 @@ rtw_joinbss_update_network23a(struct rtw_adapter *padapter, ...@@ -1153,9 +1159,11 @@ rtw_joinbss_update_network23a(struct rtw_adapter *padapter,
break; break;
} }
bcn_size = offsetof(struct ieee80211_mgmt, u.beacon.variable) -
offsetof(struct ieee80211_mgmt, u.beacon);
rtw_update_protection23a(padapter, cur_network->network.IEs + rtw_update_protection23a(padapter, cur_network->network.IEs +
sizeof (struct ndis_802_11_fixed_ies), bcn_size, cur_network->network.IELength);
cur_network->network.IELength);
rtw_update_ht_cap23a(padapter, cur_network->network.IEs, rtw_update_ht_cap23a(padapter, cur_network->network.IEs,
cur_network->network.IELength); cur_network->network.IELength);
...@@ -2282,6 +2290,7 @@ void rtw_update_ht_cap23a(struct rtw_adapter *padapter, u8 *pie, uint ie_len) ...@@ -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 registry_priv *pregistrypriv = &padapter->registrypriv;
struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
int bcn_fixed_size;
if (!phtpriv->ht_option) if (!phtpriv->ht_option)
return; return;
...@@ -2291,9 +2300,12 @@ void rtw_update_ht_cap23a(struct rtw_adapter *padapter, u8 *pie, uint ie_len) ...@@ -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"); 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 */ /* Adjust pie + ie_len for our searches */
pie += sizeof (struct ndis_802_11_fixed_ies); pie += bcn_fixed_size;
ie_len -= sizeof (struct ndis_802_11_fixed_ies); ie_len -= bcn_fixed_size;
/* maybe needs check if ap supports rx ampdu. */ /* maybe needs check if ap supports rx ampdu. */
if (phtpriv->ampdu_enable == false && if (phtpriv->ampdu_enable == false &&
......
...@@ -3278,7 +3278,7 @@ void issue_assocreq23a(struct rtw_adapter *padapter) ...@@ -3278,7 +3278,7 @@ void issue_assocreq23a(struct rtw_adapter *padapter)
struct mlme_priv *pmlmepriv = &padapter->mlmepriv; struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; 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; u8 * pie;
pmgntframe = alloc_mgtxmitframe23a(pxmitpriv); pmgntframe = alloc_mgtxmitframe23a(pxmitpriv);
...@@ -3393,9 +3393,11 @@ void issue_assocreq23a(struct rtw_adapter *padapter) ...@@ -3393,9 +3393,11 @@ void issue_assocreq23a(struct rtw_adapter *padapter)
bssrate_len, bssrate, &pattrib->pktlen); bssrate_len, bssrate, &pattrib->pktlen);
/* RSN */ /* RSN */
pie = pmlmeinfo->network.IEs + sizeof(struct ndis_802_11_fixed_ies); bcn_fixed_size = offsetof(struct ieee80211_mgmt, u.beacon.variable) -
pie_len = pmlmeinfo->network.IELength - offsetof(struct ieee80211_mgmt, u.beacon);
sizeof(struct ndis_802_11_fixed_ies);
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); p = cfg80211_find_ie(WLAN_EID_RSN, pie, pie_len);
if (p) if (p)
...@@ -3471,8 +3473,7 @@ void issue_assocreq23a(struct rtw_adapter *padapter) ...@@ -3471,8 +3473,7 @@ void issue_assocreq23a(struct rtw_adapter *padapter)
} }
/* vendor specific IE, such as WPA, WMM, WPS */ /* vendor specific IE, such as WPA, WMM, WPS */
for (i = sizeof(struct ndis_802_11_fixed_ies); for (i = bcn_fixed_size; i < pmlmeinfo->network.IELength;) {
i < pmlmeinfo->network.IELength;) {
pIE = (struct ndis_802_11_var_ies *) pIE = (struct ndis_802_11_var_ies *)
(pmlmeinfo->network.IEs + i); (pmlmeinfo->network.IEs + i);
...@@ -5900,6 +5901,7 @@ int join_cmd_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf) ...@@ -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; const struct wlan_bssid_ex *pparm = (struct wlan_bssid_ex *)pbuf;
struct HT_info_element *pht_info; struct HT_info_element *pht_info;
u32 i; u32 i;
int bcn_fixed_size;
/* u32 initialgain; */ /* u32 initialgain; */
/* u32 acparm; */ /* u32 acparm; */
...@@ -5945,8 +5947,10 @@ int join_cmd_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf) ...@@ -5945,8 +5947,10 @@ int join_cmd_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
/* pmlmeinfo->assoc_AP_vendor = check_assoc_AP23a(pnetwork->IEs, /* pmlmeinfo->assoc_AP_vendor = check_assoc_AP23a(pnetwork->IEs,
pnetwork->IELength); */ 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); pIE = (struct ndis_802_11_var_ies *)(pnetwork->IEs + i);
switch (pIE->ElementID) switch (pIE->ElementID)
......
...@@ -1173,10 +1173,13 @@ bool is_ap_in_tkip23a(struct rtw_adapter *padapter) ...@@ -1173,10 +1173,13 @@ bool is_ap_in_tkip23a(struct rtw_adapter *padapter)
struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
struct wlan_bssid_ex *cur_network = &pmlmeinfo->network; 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) { if (rtw_get_capability23a(cur_network) & WLAN_CAPABILITY_PRIVACY) {
for (i = sizeof(struct ndis_802_11_fixed_ies); for (i = bcn_fixed_size; i < pmlmeinfo->network.IELength;) {
i < pmlmeinfo->network.IELength;) {
pIE = (struct ndis_802_11_var_ies *) pIE = (struct ndis_802_11_var_ies *)
(pmlmeinfo->network.IEs + i); (pmlmeinfo->network.IEs + i);
...@@ -1207,10 +1210,13 @@ bool should_forbid_n_rate23a(struct rtw_adapter * padapter) ...@@ -1207,10 +1210,13 @@ bool should_forbid_n_rate23a(struct rtw_adapter * padapter)
struct ndis_802_11_var_ies *pIE; struct ndis_802_11_var_ies *pIE;
struct mlme_priv *pmlmepriv = &padapter->mlmepriv; struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
struct wlan_bssid_ex *cur_network = &pmlmepriv->cur_network.network; 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) { if (rtw_get_capability23a(cur_network) & WLAN_CAPABILITY_PRIVACY) {
for (i = sizeof(struct ndis_802_11_fixed_ies); for (i = bcn_fixed_size; i < cur_network->IELength;) {
i < cur_network->IELength;) {
pIE = (struct ndis_802_11_var_ies *) pIE = (struct ndis_802_11_var_ies *)
(cur_network->IEs + i); (cur_network->IEs + i);
...@@ -1248,10 +1254,13 @@ bool is_ap_in_wep23a(struct rtw_adapter *padapter) ...@@ -1248,10 +1254,13 @@ bool is_ap_in_wep23a(struct rtw_adapter *padapter)
struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
struct wlan_bssid_ex *cur_network = &pmlmeinfo->network; 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) { if (rtw_get_capability23a(cur_network) & WLAN_CAPABILITY_PRIVACY) {
for (i = sizeof(struct ndis_802_11_fixed_ies); for (i = bcn_fixed_size; i < pmlmeinfo->network.IELength;) {
i < pmlmeinfo->network.IELength;) {
pIE = (struct ndis_802_11_var_ies *) pIE = (struct ndis_802_11_var_ies *)
(pmlmeinfo->network.IEs + i); (pmlmeinfo->network.IEs + i);
...@@ -1432,14 +1441,17 @@ void update_tx_basic_rate23a(struct rtw_adapter *padapter, u8 wirelessmode) ...@@ -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 char check_assoc_AP23a(u8 *pframe, uint len)
{ {
unsigned int i; int i, bcn_fixed_size;
struct ndis_802_11_var_ies *pIE; struct ndis_802_11_var_ies *pIE;
u8 epigram_vendor_flag; u8 epigram_vendor_flag;
u8 ralink_vendor_flag; u8 ralink_vendor_flag;
epigram_vendor_flag = 0; epigram_vendor_flag = 0;
ralink_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); pIE = (struct ndis_802_11_var_ies *)(pframe + i);
switch (pIE->ElementID) { switch (pIE->ElementID) {
......
...@@ -210,6 +210,7 @@ static void ConstructBeacon(struct rtw_adapter *padapter, u8 *pframe, u32 *pLeng ...@@ -210,6 +210,7 @@ static void ConstructBeacon(struct rtw_adapter *padapter, u8 *pframe, u32 *pLeng
struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
struct wlan_bssid_ex *cur_network = &pmlmeinfo->network; struct wlan_bssid_ex *cur_network = &pmlmeinfo->network;
u8 bc_addr[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; u8 bc_addr[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
int bcn_fixed_size;
/* DBG_8723A("%s\n", __FUNCTION__); */ /* DBG_8723A("%s\n", __FUNCTION__); */
...@@ -246,9 +247,13 @@ static void ConstructBeacon(struct rtw_adapter *padapter, u8 *pframe, u32 *pLeng ...@@ -246,9 +247,13 @@ static void ConstructBeacon(struct rtw_adapter *padapter, u8 *pframe, u32 *pLeng
pktlen += 2; pktlen += 2;
if ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE) { 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); */ /* DBG_8723A("ie len =%d\n", cur_network->IELength); */
pktlen += cur_network->IELength - sizeof(struct ndis_802_11_fixed_ies); pktlen += cur_network->IELength - bcn_fixed_size;
memcpy(pframe, cur_network->IEs+sizeof(struct ndis_802_11_fixed_ies), pktlen); memcpy(pframe, cur_network->IEs + bcn_fixed_size, pktlen);
goto _ConstructBeacon; goto _ConstructBeacon;
} }
......
...@@ -22,12 +22,6 @@ ...@@ -22,12 +22,6 @@
#define NDIS_802_11_LENGTH_RATES 8 #define NDIS_802_11_LENGTH_RATES 8
#define NDIS_802_11_LENGTH_RATES_EX 16 #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 { struct ndis_802_11_var_ies {
u8 ElementID; u8 ElementID;
u8 Length; u8 Length;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment