From: Jes Sorensen <Jes.Sorensen@xxxxxxxxxx> Greg, Please find attach my latest changeset for the rtl8723au. The primary change is how we handle the beacon frame information within the driver. Previously the driver would keep half of the ieee80211 management frame plus the IE (information elements), which was a mess since it relied on custom hardcoded offsets into this array. Now we only store the IE elements and keep the beacon information in the data structure describing the network. This is something I have wanted to clean up for a long time - I think I caught all the cases of hard coded offsets into the array, and at least I haven't experienced any crashes after having run with this for a few days. The second part of the patch attempts to clean up the key handling a bit. It's not perfect, but a good chunk better than what it was before. This should apply cleanly to the staging-next tree as of today. Cheers, Jes Jes Sorensen (43): staging: rtl8723au: Remove unused size defines for mgmt frame elements staging: rtl8723au: Remove usage of _{RE,}ASOCREQ_IE_OFFSET_ staging: rtl8723au: Remove unused IE offset #defines staging: rtl8723au: rtw_get_cur_max_rate(): Use _FIXED_IE_LENGTH_ instead of hardcoded value staging: rtl8723au: rtw_add_beacon(): Construct a full beacon frame for validation staging: rtl8723au: rtw_check_beacon_data23a(): Capability is already uptodate in cur_network staging: rtl8723au: Use _FIXED_IE_LEN_ instead of hard coded value staging: rtl8723au: ConstructProbeRsp(): Use struct ieee80211_mgmt staging: rtl8723au: Remove no-op CheckFwRsvdPageContent23a() staging: rtl8723au: Remove unused dump_txrpt_ccx_8723a() staging: rtl8723au: issue_beacon23a(): Fix another case issuing a corrupted beacon staging: rtl8723au: issue_beacon23a(): Determine ie buffer location using 80211_mgmt staging: rtl8723au: rtw_generate_ie23a(): update network info as well as IE staging: rtl8723au: Stop carrying half the beacon frame header in the stored IE array staging: rtl8723au: Get rid of obsolete _FIXED_IE_LENGTH_ + _BEACON_IE_OFFSET staging: rtl8723au: Remove unused #define EID_BSSIntolerantChlReport staging: rtl8723au: Remove unused #define P80211CAPTURE_VERSION staging: rtl8723au: rtw_get_wps_attr_content23a(): Remove unused argument staging: rtl8723au: Remove unused RSN_VERSION_BSD23A staging: rtl8723au: rtw_cfg80211_ap_set_encryption(): Use key_params->cipher to determine encryption staging: rtl8723au: rtw_cfg80211_ap_set_encryption() is only called for WIFI_AP_STATE staging: rtl8723au: rtw_cfg80211_ap_set_encryption(): Use key len from struct key_params staging: rtl8723au: rtw_cfg80211_ap_set_encryption(): Stop using param->u.crypt.alg staging: rtl8723au: rtw_cfg80211_ap_set_encryption(): Use keyparms->cipher to set WEP size staging: rtl8723au: rtw_cfg80211_set_encryption(): Pass additional struct key_params staging: rtl8723au: rtw_cfg80211_set_encryption(): Obtain key_len from struct key_params staging: rtl8723au: rtw_cfg80211_set_encryption(): Use key_params->cipher staging: rtl8723au: rtw_cfg80211_set_encryption(): Obtain key from key_params->key staging: rtl8723au: rtw_cfg80211_set_encryption(): Pass key_index as argument staging: rtl8723au: rtw_cfg80211_ap_set_encryption(): Pass key_index argument staging: rtl8723au: rtw_cfg80211_ap_set_encryption(): obtain key from key_params staging: rtl8723au: rtw_cfg80211_{ap_}set_encryption(): Add set_tx argument staging: rtl8723au: Stop setting ieee_parm arguments that aren't used staging: rtl8723au: rtw_cfg80211_{ap_}set_encryption(): No more string parsing to determine cipher staging: rtl8723au: rtw_cfg80211_{ap_}set_encryption(): Add sta_addr argument staging: rtl8723au: rtw_cfg80211_{ap_}set_encryption(): Stop passing ieee_parms argument staging: rtl8723au: Remove obsolete struct ieee_parm staging: rtl8723au: Validate keys in cfg80211_rtw_add_key() staging: rtl8723au: Eliminate set_wep_key() and call set_group_key() directly staging: rtl8723au: rtw_restruct_wmm_ie23a(): Use cfg80211_find_vendor_ie() staging: rtl8723au: rtw_append_pmkid(): Adjust for IEs array not arrying fixed elements staging: rtl8723au: Only validate vendor specific ies, when they it is vendor specific staging: rtl8723au: OnAssocReq23a(): Use cfg80211_find_vendor_ie() to locate VMM drivers/staging/rtl8723au/core/rtw_ap.c | 85 ++- drivers/staging/rtl8723au/core/rtw_ieee80211.c | 51 +- drivers/staging/rtl8723au/core/rtw_mlme.c | 80 +-- drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 202 ++++--- drivers/staging/rtl8723au/core/rtw_wlan_util.c | 29 +- drivers/staging/rtl8723au/hal/rtl8723a_cmd.c | 44 +- drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c | 2 - drivers/staging/rtl8723au/hal/rtl8723a_xmit.c | 21 - drivers/staging/rtl8723au/include/ieee80211.h | 53 +- drivers/staging/rtl8723au/include/rtl8723a_cmd.h | 2 - drivers/staging/rtl8723au/include/rtl8723a_xmit.h | 1 - drivers/staging/rtl8723au/include/rtw_ap.h | 3 +- drivers/staging/rtl8723au/include/wifi.h | 30 -- drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 622 ++++++++-------------- 14 files changed, 413 insertions(+), 812 deletions(-) -- 1.9.3 _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel