diff --git a/debian/changelog b/debian/changelog index b37f6b201..f8ef9e84c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -5,6 +5,7 @@ linux (3.16.5-2) UNRELEASED; urgency=medium (Closes: #764804) * [i386/486] Update description to say that the processor must have a TSC (see #766105) + * [x86] r8723au: Backport changes up to Linux 3.17 (Closes: #765685) [ Mauricio Faria de Oliveira ] * [ppc64el] Disable CONFIG_CMDLINE{,_BOOL} usage for setting consoles diff --git a/debian/patches/features/all/r8723au/0001-staging-rtl8723au-rtw_get_wps_ie23a-Remove-unused-de.patch b/debian/patches/features/all/r8723au/0001-staging-rtl8723au-rtw_get_wps_ie23a-Remove-unused-de.patch new file mode 100644 index 000000000..8f42eb998 --- /dev/null +++ b/debian/patches/features/all/r8723au/0001-staging-rtl8723au-rtw_get_wps_ie23a-Remove-unused-de.patch @@ -0,0 +1,156 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:15:53 +0200 +Subject: [001/249] staging: rtl8723au: rtw_get_wps_ie23a(): Remove unused dest + pointer wps_ie +Origin: https://git.kernel.org/linus/fbf380cf9af65ef79741ef128f583bc14339da8b + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_ap.c | 7 +++++-- + drivers/staging/rtl8723au/core/rtw_ieee80211.c | 7 +------ + drivers/staging/rtl8723au/core/rtw_mlme.c | 2 +- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 6 ++---- + drivers/staging/rtl8723au/include/ieee80211.h | 2 +- + drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 9 ++++----- + 6 files changed, 14 insertions(+), 19 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_ap.c b/drivers/staging/rtl8723au/core/rtw_ap.c +index c8700b3..976d4e4 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ap.c ++++ b/drivers/staging/rtl8723au/core/rtw_ap.c +@@ -660,7 +660,9 @@ static void start_bss_network(struct rtw_adapter *padapter, u8 *pbuf) + /* check if there is wps ie, */ + /* if there is wpsie in beacon, the hostapd will update beacon twice when stating hostapd, */ + /* and at first time the security ie (RSN/WPA IE) will not include in beacon. */ +- if (NULL == rtw_get_wps_ie23a(pnetwork->IEs+_FIXED_IE_LENGTH_, pnetwork->IELength-_FIXED_IE_LENGTH_, NULL, NULL)) ++ if (NULL == rtw_get_wps_ie23a(pnetwork->IEs + _FIXED_IE_LENGTH_, ++ pnetwork->IELength - _FIXED_IE_LENGTH_, ++ NULL)) + pmlmeext->bstart_bss = true; + + /* todo: update wmm, ht cap */ +@@ -1239,7 +1241,8 @@ static void update_bcn_wps_ie(struct rtw_adapter *padapter) + if (pwps_ie_src == NULL) + return; + +- pwps_ie = rtw_get_wps_ie23a(ie+_FIXED_IE_LENGTH_, ielen-_FIXED_IE_LENGTH_, NULL, &wps_ielen); ++ pwps_ie = rtw_get_wps_ie23a(ie + _FIXED_IE_LENGTH_, ++ ielen - _FIXED_IE_LENGTH_, &wps_ielen); + + if (pwps_ie == NULL || wps_ielen == 0) + return; +diff --git a/drivers/staging/rtl8723au/core/rtw_ieee80211.c b/drivers/staging/rtl8723au/core/rtw_ieee80211.c +index adb86a5..52eb5ff 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ieee80211.c ++++ b/drivers/staging/rtl8723au/core/rtw_ieee80211.c +@@ -700,14 +700,12 @@ int rtw_get_sec_ie23a(u8 *in_ie, uint in_len, u8 *rsn_ie, u16 *rsn_len, + * rtw_get_wps_ie23a - Search WPS IE from a series of IEs + * @in_ie: Address of IEs to search + * @in_len: Length limit from in_ie +- * @wps_ie: If not NULL and WPS IE is found, WPS IE will be copied to the +- * buf starting from wps_ie + * @wps_ielen: If not NULL and WPS IE is found, will set to the length of + * the entire WPS IE + * + * Returns: The address of the WPS IE found, or NULL + */ +-u8 *rtw_get_wps_ie23a(u8 *in_ie, uint in_len, u8 *wps_ie, uint *wps_ielen) ++u8 *rtw_get_wps_ie23a(u8 *in_ie, uint in_len, uint *wps_ielen) + { + uint cnt; + u8 *wpsie_ptr = NULL; +@@ -728,9 +726,6 @@ u8 *rtw_get_wps_ie23a(u8 *in_ie, uint in_len, u8 *wps_ie, uint *wps_ielen) + !memcmp(&in_ie[cnt+2], wps_oui, 4)) { + wpsie_ptr = &in_ie[cnt]; + +- if (wps_ie) +- memcpy(wps_ie, &in_ie[cnt], in_ie[cnt + 1] + 2); +- + if (wps_ielen) + *wps_ielen = in_ie[cnt + 1] + 2; + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c +index 7170258..f292fce 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c +@@ -600,7 +600,7 @@ static int rtw_is_desired_network(struct rtw_adapter *adapter, + if (check_fwstate(pmlmepriv, WIFI_UNDER_WPS)) { + if (rtw_get_wps_ie23a(pnetwork->network.IEs + _FIXED_IE_LENGTH_, + pnetwork->network.IELength - +- _FIXED_IE_LENGTH_, NULL, &wps_ielen)) ++ _FIXED_IE_LENGTH_, &wps_ielen)) + return true; + else + return false; +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index e1b28a2..c1e8299 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -2511,8 +2511,7 @@ void issue_beacon23a(struct rtw_adapter *padapter, int timeout_ms) + sizeof (struct ieee80211_hdr_3addr) + + _BEACON_IE_OFFSET_, pattrib->pktlen - + sizeof (struct ieee80211_hdr_3addr) - +- _BEACON_IE_OFFSET_, NULL, +- &wps_ielen); ++ _BEACON_IE_OFFSET_, &wps_ielen); + if (wps_ie && wps_ielen > 0) { + rtw_get_wps_attr_content23a(wps_ie, wps_ielen, + WPS_ATTR_SELECTED_REGISTRAR, +@@ -2677,8 +2676,7 @@ static void issue_probersp(struct rtw_adapter *padapter, unsigned char *da, + pwps_ie = rtw_get_wps_ie23a(cur_network->IEs + + _FIXED_IE_LENGTH_, + cur_network->IELength - +- _FIXED_IE_LENGTH_, NULL, +- &wps_ielen); ++ _FIXED_IE_LENGTH_, &wps_ielen); + + /* inerset & update wps_probe_resp_ie */ + if (pmlmepriv->wps_probe_resp_ie && pwps_ie && wps_ielen > 0) { +diff --git a/drivers/staging/rtl8723au/include/ieee80211.h b/drivers/staging/rtl8723au/include/ieee80211.h +index 69c0f5c..68ee71b 100644 +--- a/drivers/staging/rtl8723au/include/ieee80211.h ++++ b/drivers/staging/rtl8723au/include/ieee80211.h +@@ -432,7 +432,7 @@ int rtw_parse_wpa2_ie23a(const u8* wpa_ie, int wpa_ie_len, int *group_cipher, in + + int rtw_get_sec_ie23a(u8 *in_ie,uint in_len,u8 *rsn_ie,u16 *rsn_len,u8 *wpa_ie,u16 *wpa_len); + +-u8 *rtw_get_wps_ie23a(u8 *in_ie, uint in_len, u8 *wps_ie, uint *wps_ielen); ++u8 *rtw_get_wps_ie23a(u8 *in_ie, uint in_len, uint *wps_ielen); + u8 *rtw_get_wps_attr23a(u8 *wps_ie, uint wps_ielen, u16 target_attr_id ,u8 *buf_attr, u32 *len_attr); + u8 *rtw_get_wps_attr_content23a(u8 *wps_ie, uint wps_ielen, u16 target_attr_id ,u8 *buf_content, uint *len_content); + +diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +index f0839f6..693310c 100644 +--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c ++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +@@ -1486,7 +1486,7 @@ static int rtw_cfg80211_set_probe_req_wpsp2pie(struct rtw_adapter *padapter, + DBG_8723A("%s, ielen =%d\n", __func__, len); + + if (len > 0) { +- wps_ie = rtw_get_wps_ie23a(buf, len, NULL, &wps_ielen); ++ wps_ie = rtw_get_wps_ie23a(buf, len, &wps_ielen); + if (wps_ie) { + DBG_8723A("probe_req_wps_ielen =%d\n", wps_ielen); + +@@ -1886,7 +1886,7 @@ static int rtw_cfg80211_set_wpa_ie(struct rtw_adapter *padapter, const u8 *pie, + uint wps_ielen; + u8 *wps_ie; + +- wps_ie = rtw_get_wps_ie23a(buf, ielen, NULL, &wps_ielen); ++ wps_ie = rtw_get_wps_ie23a(buf, ielen, &wps_ielen); + if (wps_ie && wps_ielen > 0) { + DBG_8723A("got wps_ie, wps_ielen:%u\n", wps_ielen); + padapter->securitypriv.wps_ie_len = +@@ -2825,9 +2825,8 @@ static int rtw_add_beacon(struct rtw_adapter *adapter, const u8 *head, + len = head_len + tail_len - 24; + + /* check wps ie if inclued */ +- if (rtw_get_wps_ie23a +- (pbuf + _FIXED_IE_LENGTH_, len - _FIXED_IE_LENGTH_, NULL, +- &wps_ielen)) ++ if (rtw_get_wps_ie23a(pbuf + _FIXED_IE_LENGTH_, len - _FIXED_IE_LENGTH_, ++ &wps_ielen)) + DBG_8723A("add bcn, wps_ielen =%d\n", wps_ielen); + + /* pbss_network->IEs will not include p2p_ie, wfd ie */ diff --git a/debian/patches/features/all/r8723au/0002-staging-rtl8723au-rtw_mlme_ext.c-Convert-rtw_get_wps.patch b/debian/patches/features/all/r8723au/0002-staging-rtl8723au-rtw_mlme_ext.c-Convert-rtw_get_wps.patch new file mode 100644 index 000000000..e12aee1e7 --- /dev/null +++ b/debian/patches/features/all/r8723au/0002-staging-rtl8723au-rtw_mlme_ext.c-Convert-rtw_get_wps.patch @@ -0,0 +1,147 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:15:54 +0200 +Subject: [002/249] staging: rtl8723au: rtw_mlme_ext.c: Convert + rtw_get_wps_ie23a() to cfg80211_find_vendor_ie() +Origin: https://git.kernel.org/linus/6e5e41840e2bdafbe1be3fffa2cb0d90bfd067ca + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_ieee80211.c | 15 +++++----- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 40 +++++++++++++++----------- + drivers/staging/rtl8723au/include/ieee80211.h | 4 +-- + 3 files changed, 34 insertions(+), 25 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_ieee80211.c b/drivers/staging/rtl8723au/core/rtw_ieee80211.c +index 52eb5ff..a1a27e2 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ieee80211.c ++++ b/drivers/staging/rtl8723au/core/rtw_ieee80211.c +@@ -752,11 +752,11 @@ u8 *rtw_get_wps_ie23a(u8 *in_ie, uint in_len, uint *wps_ielen) + * + * Returns: the address of the specific WPS attribute found, or NULL + */ +-u8 *rtw_get_wps_attr23a(u8 *wps_ie, uint wps_ielen, u16 target_attr_id, +- u8 *buf_attr, u32 *len_attr) ++const u8 *rtw_get_wps_attr23a(const u8 *wps_ie, uint wps_ielen, ++ u16 target_attr_id, u8 *buf_attr, u32 *len_attr) + { +- u8 *attr_ptr = NULL; +- u8 * target_attr_ptr = NULL; ++ const u8 *attr_ptr = NULL; ++ const u8 *target_attr_ptr = NULL; + u8 wps_oui[4] = {0x00, 0x50, 0xF2, 0x04}; + + if (len_attr) +@@ -808,10 +808,11 @@ u8 *rtw_get_wps_attr23a(u8 *wps_ie, uint wps_ielen, u16 target_attr_id, + * + * Returns: the address of the specific WPS attribute content found, or NULL + */ +-u8 *rtw_get_wps_attr_content23a(u8 *wps_ie, uint wps_ielen, u16 target_attr_id, +- u8 *buf_content, uint *len_content) ++const u8 *rtw_get_wps_attr_content23a(const u8 *wps_ie, uint wps_ielen, ++ u16 target_attr_id, u8 *buf_content, ++ uint *len_content) + { +- u8 *attr_ptr; ++ const u8 *attr_ptr; + u32 attr_len; + + if (len_content) +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index c1e8299..20e9b62 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -2460,8 +2460,7 @@ void issue_beacon23a(struct rtw_adapter *padapter, int timeout_ms) + 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}; +- u8 *wps_ie; +- u32 wps_ielen; ++ const u8 *wps_ie; + u8 sr = 0; + int len_diff; + +@@ -2498,6 +2497,8 @@ void issue_beacon23a(struct rtw_adapter *padapter, int timeout_ms) + pattrib->pktlen = sizeof(struct ieee80211_hdr_3addr); + + if ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE) { ++ u8 *iebuf; ++ int buflen; + /* DBG_8723A("ie len =%d\n", cur_network->IELength); */ + memcpy(pframe, cur_network->IEs, cur_network->IELength); + len_diff = update_hidden_ssid(pframe + _BEACON_IE_OFFSET_, +@@ -2507,13 +2508,17 @@ void issue_beacon23a(struct rtw_adapter *padapter, int timeout_ms) + pframe += (cur_network->IELength+len_diff); + pattrib->pktlen += (cur_network->IELength+len_diff); + +- wps_ie = rtw_get_wps_ie23a(pmgntframe->buf_addr + TXDESC_OFFSET+ +- sizeof (struct ieee80211_hdr_3addr) + +- _BEACON_IE_OFFSET_, pattrib->pktlen - +- sizeof (struct ieee80211_hdr_3addr) - +- _BEACON_IE_OFFSET_, &wps_ielen); +- if (wps_ie && wps_ielen > 0) { +- rtw_get_wps_attr_content23a(wps_ie, wps_ielen, ++ iebuf = pmgntframe->buf_addr + TXDESC_OFFSET + ++ sizeof (struct ieee80211_hdr_3addr) + ++ _BEACON_IE_OFFSET_; ++ buflen = pattrib->pktlen - sizeof (struct ieee80211_hdr_3addr) - ++ _BEACON_IE_OFFSET_; ++ wps_ie = cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT, ++ WLAN_OUI_TYPE_MICROSOFT_WPS, ++ iebuf, buflen); ++ ++ if (wps_ie && wps_ie[1] > 0) { ++ rtw_get_wps_attr_content23a(wps_ie, wps_ie[1], + WPS_ATTR_SELECTED_REGISTRAR, + (u8*)&sr, NULL); + } +@@ -2619,7 +2624,7 @@ static void issue_probersp(struct rtw_adapter *padapter, unsigned char *da, + unsigned char *mac, *bssid; + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + #ifdef CONFIG_8723AU_AP_MODE +- u8 *pwps_ie; ++ const u8 *pwps_ie; + uint wps_ielen; + u8 *ssid_ie; + int ssid_ielen; +@@ -2673,16 +2678,19 @@ static void issue_probersp(struct rtw_adapter *padapter, unsigned char *da, + + #ifdef CONFIG_8723AU_AP_MODE + if ((pmlmeinfo->state & 0x03) == WIFI_FW_AP_STATE) { +- pwps_ie = rtw_get_wps_ie23a(cur_network->IEs + +- _FIXED_IE_LENGTH_, +- cur_network->IELength - +- _FIXED_IE_LENGTH_, &wps_ielen); ++ pwps_ie = cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT, ++ WLAN_OUI_TYPE_MICROSOFT_WPS, ++ cur_network->IEs + ++ _FIXED_IE_LENGTH_, ++ cur_network->IELength - ++ _FIXED_IE_LENGTH_); + + /* inerset & update wps_probe_resp_ie */ +- if (pmlmepriv->wps_probe_resp_ie && pwps_ie && wps_ielen > 0) { ++ if (pmlmepriv->wps_probe_resp_ie && pwps_ie && pwps_ie[1] > 0) { + uint wps_offset, remainder_ielen; +- u8 *premainder_ie; ++ const u8 *premainder_ie; + ++ wps_ielen = pwps_ie[1]; + wps_offset = (uint)(pwps_ie - cur_network->IEs); + + premainder_ie = pwps_ie + wps_ielen; +diff --git a/drivers/staging/rtl8723au/include/ieee80211.h b/drivers/staging/rtl8723au/include/ieee80211.h +index 68ee71b..e023e05 100644 +--- a/drivers/staging/rtl8723au/include/ieee80211.h ++++ b/drivers/staging/rtl8723au/include/ieee80211.h +@@ -433,8 +433,8 @@ int rtw_parse_wpa2_ie23a(const u8* wpa_ie, int wpa_ie_len, int *group_cipher, in + int rtw_get_sec_ie23a(u8 *in_ie,uint in_len,u8 *rsn_ie,u16 *rsn_len,u8 *wpa_ie,u16 *wpa_len); + + u8 *rtw_get_wps_ie23a(u8 *in_ie, uint in_len, uint *wps_ielen); +-u8 *rtw_get_wps_attr23a(u8 *wps_ie, uint wps_ielen, u16 target_attr_id ,u8 *buf_attr, u32 *len_attr); +-u8 *rtw_get_wps_attr_content23a(u8 *wps_ie, uint wps_ielen, u16 target_attr_id ,u8 *buf_content, uint *len_content); ++const u8 *rtw_get_wps_attr23a(const u8 *wps_ie, uint wps_ielen, u16 target_attr_id ,u8 *buf_attr, u32 *len_attr); ++const u8 *rtw_get_wps_attr_content23a(const u8 *wps_ie, uint wps_ielen, u16 target_attr_id ,u8 *buf_content, uint *len_content); + + uint rtw_get_rateset_len23a(u8 *rateset); + diff --git a/debian/patches/features/all/r8723au/0003-staging-rtl8723au-rtw_mlme.c-Convert-rtw_get_wps_ie2.patch b/debian/patches/features/all/r8723au/0003-staging-rtl8723au-rtw_mlme.c-Convert-rtw_get_wps_ie2.patch new file mode 100644 index 000000000..01a93ac79 --- /dev/null +++ b/debian/patches/features/all/r8723au/0003-staging-rtl8723au-rtw_mlme.c-Convert-rtw_get_wps_ie2.patch @@ -0,0 +1,42 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:15:55 +0200 +Subject: [003/249] staging: rtl8723au: rtw_mlme.c: Convert rtw_get_wps_ie23a() + to cfg80211_find_vendor_ie() +Origin: https://git.kernel.org/linus/9c40e1230ec57a8ff7261681feeec6cbe72bbfb2 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme.c | 13 ++++++------- + 1 file changed, 6 insertions(+), 7 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c +index f292fce..0b9fd3a 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c +@@ -588,19 +588,18 @@ static int rtw_is_desired_network(struct rtw_adapter *adapter, + struct mlme_priv *pmlmepriv = &adapter->mlmepriv; + u32 desired_encmode; + u32 privacy; +- +- /* u8 wps_ie[512]; */ +- uint wps_ielen; +- + int bselected = true; + + desired_encmode = psecuritypriv->ndisencryptstatus; + privacy = pnetwork->network.Privacy; + + if (check_fwstate(pmlmepriv, WIFI_UNDER_WPS)) { +- if (rtw_get_wps_ie23a(pnetwork->network.IEs + _FIXED_IE_LENGTH_, +- pnetwork->network.IELength - +- _FIXED_IE_LENGTH_, &wps_ielen)) ++ if (cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT, ++ WLAN_OUI_TYPE_MICROSOFT_WPA, ++ pnetwork->network.IEs + ++ _FIXED_IE_LENGTH_, ++ pnetwork->network.IELength - ++ _FIXED_IE_LENGTH_)) + return true; + else + return false; diff --git a/debian/patches/features/all/r8723au/0004-staging-rtl8723au-ioctl_cfg80211.c-Convert-rtw_get_w.patch b/debian/patches/features/all/r8723au/0004-staging-rtl8723au-ioctl_cfg80211.c-Convert-rtw_get_w.patch new file mode 100644 index 000000000..9a2d1284a --- /dev/null +++ b/debian/patches/features/all/r8723au/0004-staging-rtl8723au-ioctl_cfg80211.c-Convert-rtw_get_w.patch @@ -0,0 +1,128 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:15:56 +0200 +Subject: [004/249] staging: rtl8723au: ioctl_cfg80211.c: Convert + rtw_get_wps_ie23a() to cfg80211_find_vendor_ie() +Origin: https://git.kernel.org/linus/d3797af488780e4f83d92ea0a3dc0a6381b566f3 + +Given that the IE len is stored in a u8, there is no point having a +512 buffer to store it, nor check if the size exceeds this size. + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/include/ieee80211.h | 2 +- + drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 48 +++++++++++------------ + 2 files changed, 24 insertions(+), 26 deletions(-) + +diff --git a/drivers/staging/rtl8723au/include/ieee80211.h b/drivers/staging/rtl8723au/include/ieee80211.h +index e023e05..43ad669 100644 +--- a/drivers/staging/rtl8723au/include/ieee80211.h ++++ b/drivers/staging/rtl8723au/include/ieee80211.h +@@ -317,7 +317,7 @@ struct ieee80211_snap_hdr { + #define MAX_CHANNEL_NUMBER 161 + + #define MAX_WPA_IE_LEN 256 +-#define MAX_WPS_IE_LEN 512 ++#define MAX_WPS_IE_LEN 256 + #define MAX_P2P_IE_LEN 256 + #define MAX_WFD_IE_LEN 128 + +diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +index 693310c..d2fa9b20 100644 +--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c ++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +@@ -1479,16 +1479,17 @@ static int rtw_cfg80211_set_probe_req_wpsp2pie(struct rtw_adapter *padapter, + char *buf, int len) + { + int ret = 0; +- uint wps_ielen = 0; +- u8 *wps_ie; ++ const u8 *wps_ie; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + + DBG_8723A("%s, ielen =%d\n", __func__, len); + + if (len > 0) { +- wps_ie = rtw_get_wps_ie23a(buf, len, &wps_ielen); ++ wps_ie = cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT, ++ WLAN_OUI_TYPE_MICROSOFT_WPS, ++ buf, len); + if (wps_ie) { +- DBG_8723A("probe_req_wps_ielen =%d\n", wps_ielen); ++ DBG_8723A("probe_req_wps_ielen =%d\n", wps_ie[1]); + + if (pmlmepriv->wps_probe_req_ie) { + pmlmepriv->wps_probe_req_ie_len = 0; +@@ -1496,15 +1497,14 @@ static int rtw_cfg80211_set_probe_req_wpsp2pie(struct rtw_adapter *padapter, + pmlmepriv->wps_probe_req_ie = NULL; + } + +- pmlmepriv->wps_probe_req_ie = kmemdup(wps_ie, +- wps_ielen, ++ pmlmepriv->wps_probe_req_ie = kmemdup(wps_ie, wps_ie[1], + GFP_KERNEL); + if (pmlmepriv->wps_probe_req_ie == NULL) { + DBG_8723A("%s()-%d: kmalloc() ERROR!\n", + __func__, __LINE__); + return -EINVAL; + } +- pmlmepriv->wps_probe_req_ie_len = wps_ielen; ++ pmlmepriv->wps_probe_req_ie_len = wps_ie[1]; + } + } + +@@ -1751,6 +1751,7 @@ static int rtw_cfg80211_set_key_mgt(struct security_priv *psecuritypriv, + static int rtw_cfg80211_set_wpa_ie(struct rtw_adapter *padapter, const u8 *pie, + size_t ielen) + { ++ const u8 *wps_ie; + u8 *buf = NULL; + int group_cipher = 0, pairwise_cipher = 0; + int ret = 0; +@@ -1882,22 +1883,17 @@ static int rtw_cfg80211_set_wpa_ie(struct rtw_adapter *padapter, const u8 *pie, + break; + } + +- { /* handle wps_ie */ +- uint wps_ielen; +- u8 *wps_ie; +- +- wps_ie = rtw_get_wps_ie23a(buf, ielen, &wps_ielen); +- if (wps_ie && wps_ielen > 0) { +- DBG_8723A("got wps_ie, wps_ielen:%u\n", wps_ielen); +- padapter->securitypriv.wps_ie_len = +- wps_ielen < +- MAX_WPS_IE_LEN ? wps_ielen : MAX_WPS_IE_LEN; +- memcpy(padapter->securitypriv.wps_ie, wps_ie, +- padapter->securitypriv.wps_ie_len); +- set_fwstate(&padapter->mlmepriv, WIFI_UNDER_WPS); +- } else { +- _clr_fwstate_(&padapter->mlmepriv, WIFI_UNDER_WPS); +- } ++ wps_ie = cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT, ++ WLAN_OUI_TYPE_MICROSOFT_WPS, ++ buf, ielen); ++ if (wps_ie && wps_ie[1] > 0) { ++ DBG_8723A("got wps_ie, wps_ielen:%u\n", wps_ie[1]); ++ padapter->securitypriv.wps_ie_len = wps_ie[1]; ++ memcpy(padapter->securitypriv.wps_ie, wps_ie, ++ padapter->securitypriv.wps_ie_len); ++ set_fwstate(&padapter->mlmepriv, WIFI_UNDER_WPS); ++ } else { ++ _clr_fwstate_(&padapter->mlmepriv, WIFI_UNDER_WPS); + } + + /* TKIP and AES disallow multicast packets until installing group key */ +@@ -2825,8 +2821,10 @@ static int rtw_add_beacon(struct rtw_adapter *adapter, const u8 *head, + len = head_len + tail_len - 24; + + /* check wps ie if inclued */ +- if (rtw_get_wps_ie23a(pbuf + _FIXED_IE_LENGTH_, len - _FIXED_IE_LENGTH_, +- &wps_ielen)) ++ if (cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT, ++ WLAN_OUI_TYPE_MICROSOFT_WPS, ++ pbuf + _FIXED_IE_LENGTH_, ++ len - _FIXED_IE_LENGTH_)) + DBG_8723A("add bcn, wps_ielen =%d\n", wps_ielen); + + /* pbss_network->IEs will not include p2p_ie, wfd ie */ diff --git a/debian/patches/features/all/r8723au/0005-staging-rtl8723au-rtw_ap.c-Convert-from-rtw_get_wps_.patch b/debian/patches/features/all/r8723au/0005-staging-rtl8723au-rtw_ap.c-Convert-from-rtw_get_wps_.patch new file mode 100644 index 000000000..acc17a601 --- /dev/null +++ b/debian/patches/features/all/r8723au/0005-staging-rtl8723au-rtw_ap.c-Convert-from-rtw_get_wps_.patch @@ -0,0 +1,78 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:15:57 +0200 +Subject: [005/249] staging: rtl8723au: rtw_ap.c: Convert from + rtw_get_wps_ie23a() to cfg80211_find_vendor_ie() +Origin: https://git.kernel.org/linus/715a8a749310e78d6ca34d85229407db7a7775ec + +Some of this is hackish, but so was the original code. This needs to +be cleaned up eventually. + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_ap.c | 25 ++++++++++++++++--------- + 1 file changed, 16 insertions(+), 9 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_ap.c b/drivers/staging/rtl8723au/core/rtw_ap.c +index 976d4e4..d03bb3e 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ap.c ++++ b/drivers/staging/rtl8723au/core/rtw_ap.c +@@ -660,9 +660,11 @@ static void start_bss_network(struct rtw_adapter *padapter, u8 *pbuf) + /* check if there is wps ie, */ + /* if there is wpsie in beacon, the hostapd will update beacon twice when stating hostapd, */ + /* and at first time the security ie (RSN/WPA IE) will not include in beacon. */ +- if (NULL == rtw_get_wps_ie23a(pnetwork->IEs + _FIXED_IE_LENGTH_, +- pnetwork->IELength - _FIXED_IE_LENGTH_, +- NULL)) ++ if (NULL == cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT, ++ WLAN_OUI_TYPE_MICROSOFT_WPS, ++ pnetwork->IEs + _FIXED_IE_LENGTH_, ++ pnetwork->IELength - ++ _FIXED_IE_LENGTH_)) + pmlmeext->bstart_bss = true; + + /* todo: update wmm, ht cap */ +@@ -1226,7 +1228,8 @@ static void update_bcn_wmm_ie(struct rtw_adapter *padapter) + + static void update_bcn_wps_ie(struct rtw_adapter *padapter) + { +- u8 *pwps_ie = NULL, *pwps_ie_src, *premainder_ie, *pbackup_remainder_ie = NULL; ++ const u8 *pwps_ie, *premainder_ie; ++ u8 *pwps_ie_src, *pbackup_remainder_ie = NULL; + uint wps_ielen = 0, wps_offset, remainder_ielen; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; +@@ -1241,12 +1244,15 @@ static void update_bcn_wps_ie(struct rtw_adapter *padapter) + if (pwps_ie_src == NULL) + return; + +- pwps_ie = rtw_get_wps_ie23a(ie + _FIXED_IE_LENGTH_, +- ielen - _FIXED_IE_LENGTH_, &wps_ielen); ++ pwps_ie = cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT, ++ WLAN_OUI_TYPE_MICROSOFT_WPS, ++ ie + _FIXED_IE_LENGTH_, ++ ielen - _FIXED_IE_LENGTH_); + +- if (pwps_ie == NULL || wps_ielen == 0) ++ if (pwps_ie == NULL || pwps_ie[1] == 0) + return; + ++ wps_ielen = pwps_ie[1]; + wps_offset = (uint)(pwps_ie-ie); + + premainder_ie = pwps_ie + wps_ielen; +@@ -1263,11 +1269,12 @@ static void update_bcn_wps_ie(struct rtw_adapter *padapter) + wps_ielen = (uint)pwps_ie_src[1];/* to get ie data len */ + if ((wps_offset+wps_ielen+2+remainder_ielen)<= MAX_IE_SZ) + { +- memcpy(pwps_ie, pwps_ie_src, wps_ielen+2); ++ memcpy(ie + wps_offset, pwps_ie_src, wps_ielen + 2); + pwps_ie += (wps_ielen+2); + + if (pbackup_remainder_ie) +- memcpy(pwps_ie, pbackup_remainder_ie, remainder_ielen); ++ memcpy(ie + wps_offset + wps_ielen + 2, ++ pbackup_remainder_ie, remainder_ielen); + + /* update IELength */ + pnetwork->IELength = wps_offset + (wps_ielen+2) + remainder_ielen; diff --git a/debian/patches/features/all/r8723au/0006-staging-rtl8723au-Remove-obsolete-rtw_get_wps_ie23a.patch b/debian/patches/features/all/r8723au/0006-staging-rtl8723au-Remove-obsolete-rtw_get_wps_ie23a.patch new file mode 100644 index 000000000..7ba556dbd --- /dev/null +++ b/debian/patches/features/all/r8723au/0006-staging-rtl8723au-Remove-obsolete-rtw_get_wps_ie23a.patch @@ -0,0 +1,79 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:15:58 +0200 +Subject: [006/249] staging: rtl8723au: Remove obsolete rtw_get_wps_ie23a() +Origin: https://git.kernel.org/linus/4aea177681d809cb64ff97a3f10ed49780a9de99 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_ieee80211.c | 44 -------------------------- + drivers/staging/rtl8723au/include/ieee80211.h | 1 - + 2 files changed, 45 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_ieee80211.c b/drivers/staging/rtl8723au/core/rtw_ieee80211.c +index a1a27e2..3dc9119 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ieee80211.c ++++ b/drivers/staging/rtl8723au/core/rtw_ieee80211.c +@@ -697,50 +697,6 @@ int rtw_get_sec_ie23a(u8 *in_ie, uint in_len, u8 *rsn_ie, u16 *rsn_len, + } + + /** +- * rtw_get_wps_ie23a - Search WPS IE from a series of IEs +- * @in_ie: Address of IEs to search +- * @in_len: Length limit from in_ie +- * @wps_ielen: If not NULL and WPS IE is found, will set to the length of +- * the entire WPS IE +- * +- * Returns: The address of the WPS IE found, or NULL +- */ +-u8 *rtw_get_wps_ie23a(u8 *in_ie, uint in_len, uint *wps_ielen) +-{ +- uint cnt; +- u8 *wpsie_ptr = NULL; +- u8 eid, wps_oui[4] = {0x0, 0x50, 0xf2, 0x04}; +- +- if (wps_ielen) +- *wps_ielen = 0; +- +- if (!in_ie || in_len <= 0) +- return wpsie_ptr; +- +- cnt = 0; +- +- while (cnt < in_len) { +- eid = in_ie[cnt]; +- +- if (eid == WLAN_EID_VENDOR_SPECIFIC && +- !memcmp(&in_ie[cnt+2], wps_oui, 4)) { +- wpsie_ptr = &in_ie[cnt]; +- +- if (wps_ielen) +- *wps_ielen = in_ie[cnt + 1] + 2; +- +- cnt += in_ie[cnt + 1] + 2; +- +- break; +- } else { +- cnt += in_ie[cnt + 1] + 2; /* goto next */ +- } +- } +- +- return wpsie_ptr; +-} +- +-/** + * rtw_get_wps_attr23a - Search a specific WPS attribute from a given WPS IE + * @wps_ie: Address of WPS IE to search + * @wps_ielen: Length limit from wps_ie +diff --git a/drivers/staging/rtl8723au/include/ieee80211.h b/drivers/staging/rtl8723au/include/ieee80211.h +index 43ad669..bb645cf 100644 +--- a/drivers/staging/rtl8723au/include/ieee80211.h ++++ b/drivers/staging/rtl8723au/include/ieee80211.h +@@ -432,7 +432,6 @@ int rtw_parse_wpa2_ie23a(const u8* wpa_ie, int wpa_ie_len, int *group_cipher, in + + int rtw_get_sec_ie23a(u8 *in_ie,uint in_len,u8 *rsn_ie,u16 *rsn_len,u8 *wpa_ie,u16 *wpa_len); + +-u8 *rtw_get_wps_ie23a(u8 *in_ie, uint in_len, uint *wps_ielen); + const u8 *rtw_get_wps_attr23a(const u8 *wps_ie, uint wps_ielen, u16 target_attr_id ,u8 *buf_attr, u32 *len_attr); + const u8 *rtw_get_wps_attr_content23a(const u8 *wps_ie, uint wps_ielen, u16 target_attr_id ,u8 *buf_content, uint *len_content); + diff --git a/debian/patches/features/all/r8723au/0009-staging-rtl8723au-rtw_mlme_ext.c-Fix-up-some-of-the-.patch b/debian/patches/features/all/r8723au/0009-staging-rtl8723au-rtw_mlme_ext.c-Fix-up-some-of-the-.patch new file mode 100644 index 000000000..8afc3a979 --- /dev/null +++ b/debian/patches/features/all/r8723au/0009-staging-rtl8723au-rtw_mlme_ext.c-Fix-up-some-of-the-.patch @@ -0,0 +1,621 @@ +From: Jes Sorensen +Date: Sat, 31 May 2014 18:05:08 +0200 +Subject: [009/249] staging: rtl8723au: rtw_mlme_ext.c: Fix up some of the bad + formatting +Origin: https://git.kernel.org/linus/d54239a4856cf447a4ba0cbbb4b4f35f4715e4f4 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 274 +++++++++++++++----------- + 1 file changed, 160 insertions(+), 114 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index 20e9b62..7a117c0 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -107,12 +107,12 @@ static u8 null_addr[ETH_ALEN]= {0, 0, 0, 0, 0, 0}; + OUI definitions for the vendor specific IE + ***************************************************/ + unsigned char WMM_OUI23A[] = {0x00, 0x50, 0xf2, 0x02}; +-unsigned char WPS_OUI23A[] = {0x00, 0x50, 0xf2, 0x04}; +-unsigned char P2P_OUI23A[] = {0x50, 0x6F, 0x9A, 0x09}; +-unsigned char WFD_OUI23A[] = {0x50, 0x6F, 0x9A, 0x0A}; ++unsigned char WPS_OUI23A[] = {0x00, 0x50, 0xf2, 0x04}; ++unsigned char P2P_OUI23A[] = {0x50, 0x6F, 0x9A, 0x09}; ++unsigned char WFD_OUI23A[] = {0x50, 0x6F, 0x9A, 0x0A}; + +-unsigned char WMM_INFO_OUI23A[] = {0x00, 0x50, 0xf2, 0x02, 0x00, 0x01}; +-unsigned char WMM_PARA_OUI23A[] = {0x00, 0x50, 0xf2, 0x02, 0x01, 0x01}; ++unsigned char WMM_INFO_OUI23A[] = {0x00, 0x50, 0xf2, 0x02, 0x00, 0x01}; ++unsigned char WMM_PARA_OUI23A[] = {0x00, 0x50, 0xf2, 0x02, 0x01, 0x01}; + + static unsigned char REALTEK_96B_IE[] = {0x00, 0xe0, 0x4c, 0x02, 0x01, 0x20}; + +@@ -120,49 +120,87 @@ static unsigned char REALTEK_96B_IE[] = {0x00, 0xe0, 0x4c, 0x02, 0x01, 0x20}; + MCS rate definitions + *********************************************************/ + unsigned char MCS_rate_2R23A[16] = { +- 0xff, 0xff, 0x0, 0x0, 0x01, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}; ++ 0xff, 0xff, 0x0, 0x0, 0x01, 0x0, 0x0, 0x0, ++ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}; + unsigned char MCS_rate_1R23A[16] = { +- 0xff, 0x00, 0x0, 0x0, 0x01, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}; ++ 0xff, 0x00, 0x0, 0x0, 0x01, 0x0, 0x0, 0x0, ++ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}; + + /******************************************************** + ChannelPlan definitions + *********************************************************/ + +-static struct rt_channel_plan_2g RTW_ChannelPlan2G[RT_CHANNEL_DOMAIN_2G_MAX] = { +- {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13}, 13}, /* 0x00, RT_CHANNEL_DOMAIN_2G_WORLD , Passive scan CH 12, 13 */ +- {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13}, 13}, /* 0x01, RT_CHANNEL_DOMAIN_2G_ETSI1 */ +- {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, 11}, /* 0x02, RT_CHANNEL_DOMAIN_2G_FCC1 */ +- {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14}, 14}, /* 0x03, RT_CHANNEL_DOMAIN_2G_MIKK1 */ +- {{10, 11, 12, 13}, 4}, /* 0x04, RT_CHANNEL_DOMAIN_2G_ETSI2 */ +- {{}, 0}, /* 0x05, RT_CHANNEL_DOMAIN_2G_NULL */ ++static struct rt_channel_plan_2g RTW_ChannelPlan2G[RT_CHANNEL_DOMAIN_2G_MAX] = { ++ /* 0x00, RT_CHANNEL_DOMAIN_2G_WORLD , Passive scan CH 12, 13 */ ++ {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13}, 13}, ++ /* 0x01, RT_CHANNEL_DOMAIN_2G_ETSI1 */ ++ {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13}, 13}, ++ /* 0x02, RT_CHANNEL_DOMAIN_2G_FCC1 */ ++ {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, 11}, ++ /* 0x03, RT_CHANNEL_DOMAIN_2G_MIKK1 */ ++ {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14}, 14}, ++ /* 0x04, RT_CHANNEL_DOMAIN_2G_ETSI2 */ ++ {{10, 11, 12, 13}, 4}, ++ /* 0x05, RT_CHANNEL_DOMAIN_2G_NULL */ ++ {{}, 0}, + }; + +-static struct rt_channel_plan_5g RTW_ChannelPlan5G[RT_CHANNEL_DOMAIN_5G_MAX] = { +- {{}, 0}, /* 0x00, RT_CHANNEL_DOMAIN_5G_NULL */ +- {{36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140}, 19}, /* 0x01, RT_CHANNEL_DOMAIN_5G_ETSI1 */ +- {{36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 149, 153, 157, 161, 165}, 24}, /* 0x02, RT_CHANNEL_DOMAIN_5G_ETSI2 */ +- {{36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 149, 153, 157, 161, 165}, 22}, /* 0x03, RT_CHANNEL_DOMAIN_5G_ETSI3 */ +- {{36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 149, 153, 157, 161, 165}, 24}, /* 0x04, RT_CHANNEL_DOMAIN_5G_FCC1 */ +- {{36, 40, 44, 48, 149, 153, 157, 161, 165}, 9}, /* 0x05, RT_CHANNEL_DOMAIN_5G_FCC2 */ +- {{36, 40, 44, 48, 52, 56, 60, 64, 149, 153, 157, 161, 165}, 13}, /* 0x06, RT_CHANNEL_DOMAIN_5G_FCC3 */ +- {{36, 40, 44, 48, 52, 56, 60, 64, 149, 153, 157, 161}, 12}, /* 0x07, RT_CHANNEL_DOMAIN_5G_FCC4 */ +- {{149, 153, 157, 161, 165}, 5}, /* 0x08, RT_CHANNEL_DOMAIN_5G_FCC5 */ +- {{36, 40, 44, 48, 52, 56, 60, 64}, 8}, /* 0x09, RT_CHANNEL_DOMAIN_5G_FCC6 */ +- {{36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 136, 140, 149, 153, 157, 161, 165}, 20}, /* 0x0A, RT_CHANNEL_DOMAIN_5G_FCC7_IC1 */ +- {{36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 149, 153, 157, 161, 165}, 20}, /* 0x0B, RT_CHANNEL_DOMAIN_5G_KCC1 */ +- {{36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140}, 19}, /* 0x0C, RT_CHANNEL_DOMAIN_5G_MKK1 */ +- {{36, 40, 44, 48, 52, 56, 60, 64}, 8}, /* 0x0D, RT_CHANNEL_DOMAIN_5G_MKK2 */ +- {{100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140}, 11}, /* 0x0E, RT_CHANNEL_DOMAIN_5G_MKK3 */ +- {{56, 60, 64, 100, 104, 108, 112, 116, 136, 140, 149, 153, 157, 161, 165}, 15}, /* 0x0F, RT_CHANNEL_DOMAIN_5G_NCC1 */ +- {{56, 60, 64, 149, 153, 157, 161, 165}, 8}, /* 0x10, RT_CHANNEL_DOMAIN_5G_NCC2 */ +- +- /* Driver self defined for old channel plan Compatible , Remember to modify if have new channel plan definition ===== */ +- {{36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 132, 136, 140, 149, 153, 157, 161, 165}, 21}, /* 0x11, RT_CHANNEL_DOMAIN_5G_FCC */ +- {{36, 40, 44, 48}, 4}, /* 0x12, RT_CHANNEL_DOMAIN_5G_JAPAN_NO_DFS */ +- {{36, 40, 44, 48, 149, 153, 157, 161}, 8}, /* 0x13, RT_CHANNEL_DOMAIN_5G_FCC4_NO_DFS */ ++static struct rt_channel_plan_5g RTW_ChannelPlan5G[RT_CHANNEL_DOMAIN_5G_MAX] = { ++ /* 0x00, RT_CHANNEL_DOMAIN_5G_NULL */ ++ {{}, 0}, ++ /* 0x01, RT_CHANNEL_DOMAIN_5G_ETSI1 */ ++ {{36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, ++ 116, 120, 124, 128, 132, 136, 140}, 19}, ++ /* 0x02, RT_CHANNEL_DOMAIN_5G_ETSI2 */ ++ {{36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, ++ 116, 120, 124, 128, 132, 136, 140, 149, 153, 157, 161, 165}, 24}, ++ /* 0x03, RT_CHANNEL_DOMAIN_5G_ETSI3 */ ++ {{36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, ++ 116, 120, 124, 128, 132, 149, 153, 157, 161, 165}, 22}, ++ /* 0x04, RT_CHANNEL_DOMAIN_5G_FCC1 */ ++ {{36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, ++ 116, 120, 124, 128, 132, 136, 140, 149, 153, 157, 161, 165}, 24}, ++ /* 0x05, RT_CHANNEL_DOMAIN_5G_FCC2 */ ++ {{36, 40, 44, 48, 149, 153, 157, 161, 165}, 9}, ++ /* 0x06, RT_CHANNEL_DOMAIN_5G_FCC3 */ ++ {{36, 40, 44, 48, 52, 56, 60, 64, 149, 153, 157, 161, 165}, 13}, ++ /* 0x07, RT_CHANNEL_DOMAIN_5G_FCC4 */ ++ {{36, 40, 44, 48, 52, 56, 60, 64, 149, 153, 157, 161}, 12}, ++ /* 0x08, RT_CHANNEL_DOMAIN_5G_FCC5 */ ++ {{149, 153, 157, 161, 165}, 5}, ++ /* 0x09, RT_CHANNEL_DOMAIN_5G_FCC6 */ ++ {{36, 40, 44, 48, 52, 56, 60, 64}, 8}, ++ /* 0x0A, RT_CHANNEL_DOMAIN_5G_FCC7_IC1 */ ++ {{36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, ++ 116, 136, 140, 149, 153, 157, 161, 165}, 20}, ++ /* 0x0B, RT_CHANNEL_DOMAIN_5G_KCC1 */ ++ {{36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, ++ 116, 120, 124, 149, 153, 157, 161, 165}, 20}, ++ /* 0x0C, RT_CHANNEL_DOMAIN_5G_MKK1 */ ++ {{36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, ++ 116, 120, 124, 128, 132, 136, 140}, 19}, ++ /* 0x0D, RT_CHANNEL_DOMAIN_5G_MKK2 */ ++ {{36, 40, 44, 48, 52, 56, 60, 64}, 8}, ++ /* 0x0E, RT_CHANNEL_DOMAIN_5G_MKK3 */ ++ {{100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140}, 11}, ++ /* 0x0F, RT_CHANNEL_DOMAIN_5G_NCC1 */ ++ {{56, 60, 64, 100, 104, 108, 112, 116, 136, 140, 149, ++ 153, 157, 161, 165}, 15}, ++ /* 0x10, RT_CHANNEL_DOMAIN_5G_NCC2 */ ++ {{56, 60, 64, 149, 153, 157, 161, 165}, 8}, ++ ++ /* Driver self defined for old channel plan Compatible, ++ Remember to modify if have new channel plan definition ===== */ ++ /* 0x11, RT_CHANNEL_DOMAIN_5G_FCC */ ++ {{36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, ++ 116, 132, 136, 140, 149, 153, 157, 161, 165}, 21}, ++ /* 0x12, RT_CHANNEL_DOMAIN_5G_JAPAN_NO_DFS */ ++ {{36, 40, 44, 48}, 4}, ++ /* 0x13, RT_CHANNEL_DOMAIN_5G_FCC4_NO_DFS */ ++ {{36, 40, 44, 48, 149, 153, 157, 161}, 8}, + }; + +-static struct rt_channel_plan_map RTW_ChannelPlanMap[RT_CHANNEL_DOMAIN_MAX] = { ++static struct rt_channel_plan_map RTW_ChannelPlanMap[RT_CHANNEL_DOMAIN_MAX] = { + /* 0x00 ~ 0x1F , Old Define ===== */ + {0x02, 0x11}, /* 0x00, RT_CHANNEL_DOMAIN_FCC */ + {0x02, 0x0A}, /* 0x01, RT_CHANNEL_DOMAIN_IC */ +@@ -233,7 +271,8 @@ static struct rt_channel_plan_map RTW_ChannelPlanMap[RT_CHANNEL_DOMAIN_MAX] = { + {0x03, 0x00}, /* 0x41, RT_CHANNEL_DOMAIN_GLOBAL_DOAMIN_2G */ + }; + +-static struct rt_channel_plan_map RTW_CHANNEL_PLAN_MAP_REALTEK_DEFINE = {0x03, 0x02}; /* use the conbination for max channel numbers */ ++static struct rt_channel_plan_map RTW_CHANNEL_PLAN_MAP_REALTEK_DEFINE = ++{0x03, 0x02}; /* use the conbination for max channel numbers */ + + static void dummy_event_callback(struct rtw_adapter *adapter, const u8 *pbuf) + { +@@ -250,8 +289,7 @@ static struct fwevent wlanevents[] = + {0, NULL}, + {0, NULL}, + {0, &rtw_survey_event_cb23a}, /*8*/ +- {sizeof (struct surveydone_event), &rtw_surveydone_event_callback23a}, /*9*/ +- ++ {sizeof (struct surveydone_event), &rtw_surveydone_event_callback23a}, + {0, &rtw23a_joinbss_event_cb}, /*10*/ + {sizeof(struct stassoc_event), &rtw_stassoc_event_callback23a}, + {sizeof(struct stadel_event), &rtw_stadel_event_callback23a}, +@@ -309,7 +347,7 @@ Following are the initialization functions for WiFi MLME + + int init_hw_mlme_ext23a(struct rtw_adapter *padapter) + { +- struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; ++ struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + + set_channel_bwmode23a(padapter, pmlmeext->cur_channel, + pmlmeext->cur_ch_offset, pmlmeext->cur_bwmode); +@@ -318,7 +356,7 @@ int init_hw_mlme_ext23a(struct rtw_adapter *padapter) + + static void init_mlme_ext_priv23a_value(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; + unsigned char mixed_datarate[NumRates] = { + _1M_RATE_, _2M_RATE_, _5M_RATE_, _11M_RATE_, _6M_RATE_, +@@ -391,8 +429,8 @@ static int has_channel(struct rt_channel_info *channel_set, + static void init_channel_list(struct rtw_adapter *padapter, + struct rt_channel_info *channel_set, + u8 chanset_size, +- struct p2p_channels *channel_list) { +- ++ struct p2p_channels *channel_list) ++{ + struct p2p_oper_class_map op_class[] = { + { IEEE80211G, 81, 1, 13, 1, BW20 }, + { IEEE80211G, 82, 14, 14, 1, BW20 }, +@@ -526,7 +564,7 @@ static u8 init_channel_set(struct rtw_adapter* padapter, u8 cplan, + + int init_mlme_ext_priv23a(struct rtw_adapter* padapter) + { +- int res = _SUCCESS; ++ int res = _SUCCESS; + struct registry_priv* pregistrypriv = &padapter->registrypriv; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; +@@ -1920,7 +1958,7 @@ OnDeAuth23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame) + static int + OnDisassoc23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame) + { +- unsigned short reason; ++ unsigned short reason; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; +@@ -2835,17 +2873,17 @@ static int _issue_probereq(struct rtw_adapter *padapter, + struct cfg80211_ssid *pssid, u8 *da, int wait_ack) + { + int ret = _FAIL; +- struct xmit_frame *pmgntframe; +- struct pkt_attrib *pattrib; +- unsigned char *pframe; +- struct ieee80211_hdr *pwlanhdr; +- unsigned char *mac; +- unsigned char bssrate[NumRates]; ++ struct xmit_frame *pmgntframe; ++ struct pkt_attrib *pattrib; ++ unsigned char *pframe; ++ struct ieee80211_hdr *pwlanhdr; ++ unsigned char *mac; ++ unsigned char bssrate[NumRates]; + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; +- int bssrate_len = 0; +- u8 bc_addr[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; ++ int bssrate_len = 0; ++ u8 bc_addr[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; + + RT_TRACE(_module_rtl871x_mlme_c_, _drv_notice_, + ("+%s\n", __func__)); +@@ -4297,7 +4335,7 @@ int send_delba23a(struct rtw_adapter *padapter, u8 initiator, u8 *addr) + struct sta_priv *pstapriv = &padapter->stapriv; + struct sta_info *psta = NULL; + /* struct recv_reorder_ctrl *preorder_ctrl; */ +- struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; ++ struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; + u16 tid; + +@@ -4334,8 +4372,8 @@ int send_delba23a(struct rtw_adapter *padapter, u8 initiator, u8 *addr) + + int send_beacon23a(struct rtw_adapter *padapter) + { +- bool bxmitok; +- int issue = 0; ++ bool bxmitok; ++ int issue = 0; + int poll = 0; + unsigned long start = jiffies; + unsigned int passing_time; +@@ -4383,9 +4421,10 @@ bool IsLegal5GChannel(struct rtw_adapter *Adapter, u8 channel) + + int i = 0; + u8 Channel_5G[45] = {36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, +- 60, 62, 64, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, +- 124, 126, 128, 130, 132, 134, 136, 138, 140, 149, 151, 153, 155, 157, 159, +- 161, 163, 165}; ++ 60, 62, 64, 100, 102, 104, 106, 108, 110, 112, ++ 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, ++ 134, 136, 138, 140, 149, 151, 153, 155, 157, 159, ++ 161, 163, 165}; + for (i = 0; i < sizeof(Channel_5G); i++) + if (channel == Channel_5G[i]) + return true; +@@ -4396,7 +4435,7 @@ static void rtw_site_survey(struct rtw_adapter *padapter) + { + unsigned char survey_channel = 0; + enum rt_scan_type ScanType = SCAN_PASSIVE; +- struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; ++ struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; + struct rtw_ieee80211_channel *ch; + +@@ -4659,8 +4698,8 @@ int collect_bss_info23a(struct rtw_adapter *padapter, + + static void start_create_ibss(struct rtw_adapter* padapter) + { +- unsigned short caps; +- struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; ++ unsigned short caps; ++ struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; + struct wlan_bssid_ex *pnetwork = &pmlmeinfo->network; + pmlmeext->cur_channel = (u8)pnetwork->DSConfig; +@@ -4711,9 +4750,9 @@ static void start_create_ibss(struct rtw_adapter* padapter) + + static void start_clnt_join(struct rtw_adapter* padapter) + { +- unsigned short caps; +- u8 val8; +- struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; ++ unsigned short caps; ++ u8 val8; ++ struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; + struct wlan_bssid_ex *pnetwork = &pmlmeinfo->network; + int beacon_timeout; +@@ -4771,7 +4810,7 @@ static void start_clnt_join(struct rtw_adapter* padapter) + + static void start_clnt_auth(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; + + del_timer_sync(&pmlmeext->link_timer); +@@ -4789,8 +4828,10 @@ static void start_clnt_auth(struct rtw_adapter* padapter) + /* AP may: 1)not response auth or 2)deauth us after link is complete */ + /* issue deauth before issuing auth to deal with the situation */ + /* Commented by Albert 2012/07/21 */ +- /* For the Win8 P2P connection, it will be hard to have a successful connection if this Wi-Fi doesn't connect to it. */ +- issue_deauth23a(padapter, (&pmlmeinfo->network)->MacAddress, WLAN_REASON_DEAUTH_LEAVING); ++ /* For the Win8 P2P connection, it will be hard to have a ++ successful connection if this Wi-Fi doesn't connect to it. */ ++ issue_deauth23a(padapter, (&pmlmeinfo->network)->MacAddress, ++ WLAN_REASON_DEAUTH_LEAVING); + + DBG_8723A_LEVEL(_drv_always_, "start auth\n"); + issue_auth(padapter, NULL, 0); +@@ -4800,7 +4841,7 @@ static void start_clnt_auth(struct rtw_adapter* padapter) + + static void start_clnt_assoc(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; + + del_timer_sync(&pmlmeext->link_timer); +@@ -4816,7 +4857,7 @@ static void start_clnt_assoc(struct rtw_adapter* padapter) + int receive_disconnect23a(struct rtw_adapter *padapter, + unsigned char *MacAddr, unsigned short reason) + { +- struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; ++ struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; + + /* check A3 */ +@@ -5074,12 +5115,13 @@ Following are the functions to report events + + *****************************************************************************/ + +-void report_survey_event23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame) ++void report_survey_event23a(struct rtw_adapter *padapter, ++ struct recv_frame *precv_frame) + { + struct cmd_obj *pcmd_obj; +- u8 *pevtcmd; ++ u8 *pevtcmd; + u32 cmdsz; +- struct survey_event *psurvey_evt; ++ struct survey_event *psurvey_evt; + struct C2HEvent_Header *pc2h_evt_hdr; + struct mlme_ext_priv *pmlmeext; + struct cmd_priv *pcmdpriv; +@@ -5134,11 +5176,11 @@ void report_survey_event23a(struct rtw_adapter *padapter, struct recv_frame *pre + void report_surveydone_event23a(struct rtw_adapter *padapter) + { + struct cmd_obj *pcmd_obj; +- u8 *pevtcmd; ++ u8 *pevtcmd; + u32 cmdsz; + struct surveydone_event *psurveydone_evt; +- struct C2HEvent_Header *pc2h_evt_hdr; +- struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; ++ struct C2HEvent_Header *pc2h_evt_hdr; ++ struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct cmd_priv *pcmdpriv = &padapter->cmdpriv; + + pcmd_obj = (struct cmd_obj *)kzalloc(sizeof(struct cmd_obj), +@@ -5178,7 +5220,7 @@ void report_surveydone_event23a(struct rtw_adapter *padapter) + void report_join_res23a(struct rtw_adapter *padapter, int res) + { + struct cmd_obj *pcmd_obj; +- u8 *pevtcmd; ++ u8 *pevtcmd; + u32 cmdsz; + struct joinbss_event *pjoinbss_evt; + struct C2HEvent_Header *pc2h_evt_hdr; +@@ -5224,16 +5266,17 @@ void report_join_res23a(struct rtw_adapter *padapter, int res) + return; + } + +-void report_del_sta_event23a(struct rtw_adapter *padapter, unsigned char* MacAddr, unsigned short reason) ++void report_del_sta_event23a(struct rtw_adapter *padapter, ++ unsigned char* MacAddr, unsigned short reason) + { + struct cmd_obj *pcmd_obj; +- u8 *pevtcmd; ++ u8 *pevtcmd; + u32 cmdsz; + struct sta_info *psta; +- int mac_id; +- struct stadel_event *pdel_sta_evt; +- struct C2HEvent_Header *pc2h_evt_hdr; +- struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; ++ int mac_id; ++ struct stadel_event *pdel_sta_evt; ++ struct C2HEvent_Header *pc2h_evt_hdr; ++ struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct cmd_priv *pcmdpriv = &padapter->cmdpriv; + + pcmd_obj = (struct cmd_obj *)kzalloc(sizeof(struct cmd_obj), +@@ -5280,14 +5323,15 @@ void report_del_sta_event23a(struct rtw_adapter *padapter, unsigned char* MacAdd + return; + } + +-void report_add_sta_event23a(struct rtw_adapter *padapter, unsigned char* MacAddr, int cam_idx) ++void report_add_sta_event23a(struct rtw_adapter *padapter, ++ unsigned char* MacAddr, int cam_idx) + { + struct cmd_obj *pcmd_obj; +- u8 *pevtcmd; ++ u8 *pevtcmd; + u32 cmdsz; +- struct stassoc_event *padd_sta_evt; +- struct C2HEvent_Header *pc2h_evt_hdr; +- struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; ++ struct stassoc_event *padd_sta_evt; ++ struct C2HEvent_Header *pc2h_evt_hdr; ++ struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct cmd_priv *pcmdpriv = &padapter->cmdpriv; + + pcmd_obj = (struct cmd_obj *)kzalloc(sizeof(struct cmd_obj), +@@ -5335,8 +5379,8 @@ Following are the event callback functions + void update_sta_info23a(struct rtw_adapter *padapter, struct sta_info *psta) + { + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; +- struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; +- struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; ++ struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; ++ struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; + + /* ERP */ + VCS_update23a(padapter, psta); +@@ -5377,13 +5421,14 @@ void update_sta_info23a(struct rtw_adapter *padapter, struct sta_info *psta) + psta->state = _FW_LINKED; + } + +-void mlmeext_joinbss_event_callback23a(struct rtw_adapter *padapter, int join_res) ++void mlmeext_joinbss_event_callback23a(struct rtw_adapter *padapter, ++ int join_res) + { +- struct sta_info *psta, *psta_bmc; +- struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; ++ struct sta_info *psta, *psta_bmc; ++ struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; + struct wlan_bssid_ex *cur_network = &pmlmeinfo->network; +- struct sta_priv *pstapriv = &padapter->stapriv; ++ struct sta_priv *pstapriv = &padapter->stapriv; + + if (join_res < 0) { + hw_var_set_mlme_join(padapter, 1); +@@ -5459,7 +5504,8 @@ exit_mlmeext_joinbss_event_callback23a: + DBG_8723A("=>%s\n", __func__); + } + +-void mlmeext_sta_add_event_callback23a(struct rtw_adapter *padapter, struct sta_info *psta) ++void mlmeext_sta_add_event_callback23a(struct rtw_adapter *padapter, ++ struct sta_info *psta) + { + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; +@@ -5732,7 +5778,7 @@ static void link_timer_hdl(unsigned long data) + /* static unsigned int rx_pkt = 0; */ + /* static u64 tx_cnt = 0; */ + /* struct xmit_priv *pxmitpriv = &padapter->xmitpriv; */ +- struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; ++ struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; + /* struct sta_priv *pstapriv = &padapter->stapriv; */ + +@@ -5779,7 +5825,7 @@ static void link_timer_hdl(unsigned long data) + static void addba_timer_hdl(unsigned long data) + { + struct sta_info *psta = (struct sta_info *)data; +- struct ht_priv *phtpriv; ++ struct ht_priv *phtpriv; + + if (!psta) + return; +@@ -5800,7 +5846,7 @@ void init_addba_retry_timer23a(struct sta_info *psta) + + void init_mlme_ext_timer23a(struct rtw_adapter *padapter) + { +- struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; ++ struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + + setup_timer(&pmlmeext->survey_timer, survey_timer_hdl, + (unsigned long)padapter); +@@ -5851,7 +5897,7 @@ int setopmode_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf) + + int createbss_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf) + { +- struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; ++ struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; + struct wlan_bssid_ex *pnetwork = &pmlmeinfo->network; + const struct wlan_bssid_ex *pparm = (struct wlan_bssid_ex *)pbuf; +@@ -6069,7 +6115,7 @@ int disconnect_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf) + + rtw_free_uc_swdec_pending_queue23a(padapter); + +- return H2C_SUCCESS; ++ return H2C_SUCCESS; + } + + static int +@@ -6080,7 +6126,7 @@ rtw_scan_ch_decision(struct rtw_adapter *padapter, + int i, j; + int scan_ch_num = 0; + int set_idx; +- struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; ++ struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + + /* clear out first */ + memset(out, 0, sizeof(struct rtw_ieee80211_channel)*out_num); +@@ -6233,7 +6279,7 @@ int setauth_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf) + if (pparm->mode < 4) + pmlmeinfo->auth_algo = pparm->mode; + +- return H2C_SUCCESS; ++ return H2C_SUCCESS; + } + + int setkey_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf) +@@ -6358,7 +6404,7 @@ int add_ba_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf) + psta = rtw_get_stainfo23a(&padapter->stapriv, pparm->addr); + + if (!psta) +- return H2C_SUCCESS; ++ return H2C_SUCCESS; + + if (((pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS) && + pmlmeinfo->HT_enable) || +@@ -6370,15 +6416,15 @@ int add_ba_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf) + } else + psta->htpriv.candidate_tid_bitmap &= ~BIT(pparm->tid); + +- return H2C_SUCCESS; ++ return H2C_SUCCESS; + } + + int set_tx_beacon_cmd23a(struct rtw_adapter* padapter) + { + struct cmd_obj *ph2c; +- struct Tx_Beacon_param *ptxBeacon_parm; ++ struct Tx_Beacon_param *ptxBeacon_parm; + struct cmd_priv *pcmdpriv = &padapter->cmdpriv; +- struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; ++ struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; + u8 res = _SUCCESS; + int len_diff = 0; +@@ -6518,7 +6564,7 @@ int tx_beacon_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf) + int set_ch_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf) + { + const struct set_ch_parm *set_ch_parm; +- struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; ++ struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + + if (!pbuf) + return H2C_PARAMETERS_ERROR; +@@ -6536,13 +6582,13 @@ int set_ch_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf) + set_channel_bwmode23a(padapter, set_ch_parm->ch, + set_ch_parm->ch_offset, set_ch_parm->bw); + +- return H2C_SUCCESS; ++ return H2C_SUCCESS; + } + + int set_chplan_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf) + { + const struct SetChannelPlan_param *setChannelPlan_param; +- struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; ++ struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + + if (!pbuf) + return H2C_PARAMETERS_ERROR; +@@ -6555,7 +6601,7 @@ int set_chplan_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf) + init_channel_list(padapter, pmlmeext->channel_set, + pmlmeext->max_chan_nums, &pmlmeext->channel_list); + +- return H2C_SUCCESS; ++ return H2C_SUCCESS; + } + + int led_blink_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf) +@@ -6567,12 +6613,12 @@ int led_blink_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf) + + ledBlink_param = (struct LedBlink_param *)pbuf; + +- return H2C_SUCCESS; ++ return H2C_SUCCESS; + } + + int set_csa_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf) + { +- return H2C_REJECTED; ++ return H2C_REJECTED; + } + + /* TDLS_WRCR : write RCR DATA BIT */ diff --git a/debian/patches/features/all/r8723au/0010-staging-rtl8723au-rtw_mlme.c-Remove-some-tab-and-par.patch b/debian/patches/features/all/r8723au/0010-staging-rtl8723au-rtw_mlme.c-Remove-some-tab-and-par.patch new file mode 100644 index 000000000..f9b0abfb8 --- /dev/null +++ b/debian/patches/features/all/r8723au/0010-staging-rtl8723au-rtw_mlme.c-Remove-some-tab-and-par.patch @@ -0,0 +1,102 @@ +From: Jes Sorensen +Date: Sat, 31 May 2014 18:05:09 +0200 +Subject: [010/249] staging: rtl8723au: rtw_mlme.c: Remove some tab and + parenthesis abuse +Origin: https://git.kernel.org/linus/8b3d9cde7d8a50ae7bf7902cbf966adf856350d1 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme.c | 26 ++++++++++++-------------- + 1 file changed, 12 insertions(+), 14 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c +index 0b9fd3a..47a1df0 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c +@@ -29,7 +29,7 @@ + + static void rtw_init_mlme_timer(struct rtw_adapter *padapter) + { +- struct mlme_priv *pmlmepriv = &padapter->mlmepriv; ++ struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + + setup_timer(&pmlmepriv->assoc_timer, rtw23a_join_to_handler, + (unsigned long)padapter); +@@ -369,11 +369,10 @@ int is_same_network23a(struct wlan_bssid_ex *src, struct wlan_bssid_ex *dst) + return ((src->Ssid.ssid_len == dst->Ssid.ssid_len) && + /* (src->DSConfig == dst->DSConfig) && */ + ether_addr_equal(src->MacAddress, dst->MacAddress) && +- ((!memcmp(src->Ssid.ssid, dst->Ssid.ssid, src->Ssid.ssid_len))) && +- ((s_cap & WLAN_CAPABILITY_IBSS) == +- (d_cap & WLAN_CAPABILITY_IBSS)) && +- ((s_cap & WLAN_CAPABILITY_ESS) == +- (d_cap & WLAN_CAPABILITY_ESS))); ++ !memcmp(src->Ssid.ssid, dst->Ssid.ssid, src->Ssid.ssid_len) && ++ (s_cap & WLAN_CAPABILITY_IBSS) == ++ (d_cap & WLAN_CAPABILITY_IBSS) && ++ (s_cap & WLAN_CAPABILITY_ESS) == (d_cap & WLAN_CAPABILITY_ESS)); + } + + struct wlan_network * +@@ -611,8 +610,7 @@ static int rtw_is_desired_network(struct rtw_adapter *adapter, + bselected = false; + } + +- if (desired_encmode != Ndis802_11EncryptionDisabled && +- privacy == 0) { ++ if (desired_encmode != Ndis802_11EncryptionDisabled && privacy == 0) { + DBG_8723A("desired_encmode: %d, privacy: %d\n", + desired_encmode, privacy); + bselected = false; +@@ -639,7 +637,7 @@ void rtw_survey_event_cb23a(struct rtw_adapter *adapter, const u8 *pbuf) + { + u32 len; + struct wlan_bssid_ex *pnetwork; +- struct mlme_priv *pmlmepriv = &adapter->mlmepriv; ++ struct mlme_priv *pmlmepriv = &adapter->mlmepriv; + + pnetwork = (struct wlan_bssid_ex *)pbuf; + +@@ -698,7 +696,7 @@ exit: + void + rtw_surveydone_event_callback23a(struct rtw_adapter *adapter, const u8 *pbuf) + { +- struct mlme_priv *pmlmepriv = &adapter->mlmepriv; ++ struct mlme_priv *pmlmepriv = &adapter->mlmepriv; + struct mlme_ext_priv *pmlmeext = &adapter->mlmeextpriv; + struct wlan_bssid_ex *pdev_network; + u8 *pibss; +@@ -937,7 +935,7 @@ void rtw_indicate_connect23a(struct rtw_adapter *padapter) + */ + void rtw_indicate_disconnect23a(struct rtw_adapter *padapter) + { +- struct mlme_priv *pmlmepriv = &padapter->mlmepriv; ++ struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + + RT_TRACE(_module_rtl871x_mlme_c_, _drv_err_, + ("+rtw_indicate_disconnect23a\n")); +@@ -1538,12 +1536,12 @@ void rtw_stadel_event_callback23a(struct rtw_adapter *adapter, const u8 *pbuf) + void rtw23a_join_to_handler (unsigned long data) + { + struct rtw_adapter *adapter = (struct rtw_adapter *)data; +- struct mlme_priv *pmlmepriv = &adapter->mlmepriv; ++ struct mlme_priv *pmlmepriv = &adapter->mlmepriv; + int do_join_r; + + DBG_8723A("%s, fw_state=%x\n", __func__, get_fwstate(pmlmepriv)); + +- if (adapter->bDriverStopped ||adapter->bSurpriseRemoved) ++ if (adapter->bDriverStopped || adapter->bSurpriseRemoved) + return; + + spin_lock_bh(&pmlmepriv->lock); +@@ -1589,7 +1587,7 @@ void rtw23a_join_to_handler (unsigned long data) + void rtw_scan_timeout_handler23a(unsigned long data) + { + struct rtw_adapter *adapter = (struct rtw_adapter *)data; +- struct mlme_priv *pmlmepriv = &adapter->mlmepriv; ++ struct mlme_priv *pmlmepriv = &adapter->mlmepriv; + + DBG_8723A("%s(%s): fw_state =%x\n", __func__, adapter->pnetdev->name, + get_fwstate(pmlmepriv)); diff --git a/debian/patches/features/all/r8723au/0011-staging-rtl8723au-Use-struct-ieee80211_mcs_info-to-d.patch b/debian/patches/features/all/r8723au/0011-staging-rtl8723au-Use-struct-ieee80211_mcs_info-to-d.patch new file mode 100644 index 000000000..2e7b13aa1 --- /dev/null +++ b/debian/patches/features/all/r8723au/0011-staging-rtl8723au-Use-struct-ieee80211_mcs_info-to-d.patch @@ -0,0 +1,236 @@ +From: Jes Sorensen +Date: Sat, 31 May 2014 18:05:10 +0200 +Subject: [011/249] staging: rtl8723au: Use struct ieee80211_mcs_info to + describe MCS information +Origin: https://git.kernel.org/linus/198e95d548ac741e91521f1e638aa8221bb0f468 + +The original RTL code defined the MCS information as a 16 byte array +and blindly applied it's masking over the full array, ignoring the +fact that only the first 10 bytes describe the rx_mask and the rest +are different fields. + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_ieee80211.c | 52 +++++++++++++------------- + drivers/staging/rtl8723au/core/rtw_ioctl_set.c | 2 +- + drivers/staging/rtl8723au/core/rtw_mlme.c | 6 +-- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 4 +- + drivers/staging/rtl8723au/core/rtw_wlan_util.c | 12 +++--- + drivers/staging/rtl8723au/include/ieee80211.h | 3 +- + drivers/staging/rtl8723au/include/wifi.h | 2 +- + 7 files changed, 40 insertions(+), 41 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_ieee80211.c b/drivers/staging/rtl8723au/core/rtw_ieee80211.c +index 3dc9119..47ac4e9 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ieee80211.c ++++ b/drivers/staging/rtl8723au/core/rtw_ieee80211.c +@@ -924,69 +924,69 @@ void rtw_get_bcn_info23a(struct wlan_network *pnetwork) + + /* show MCS rate, unit: 100Kbps */ + u16 rtw_mcs_rate23a(u8 rf_type, u8 bw_40MHz, u8 short_GI_20, u8 short_GI_40, +- unsigned char * MCS_rate) ++ struct ieee80211_mcs_info *mcs) + { + u16 max_rate = 0; + + if (rf_type == RF_1T1R) { +- if (MCS_rate[0] & BIT(7)) ++ if (mcs->rx_mask[0] & BIT(7)) + max_rate = (bw_40MHz) ? ((short_GI_40)?1500:1350): + ((short_GI_20)?722:650); +- else if (MCS_rate[0] & BIT(6)) ++ else if (mcs->rx_mask[0] & BIT(6)) + max_rate = (bw_40MHz) ? ((short_GI_40)?1350:1215): + ((short_GI_20)?650:585); +- else if (MCS_rate[0] & BIT(5)) ++ else if (mcs->rx_mask[0] & BIT(5)) + max_rate = (bw_40MHz) ? ((short_GI_40)?1200:1080): + ((short_GI_20)?578:520); +- else if (MCS_rate[0] & BIT(4)) ++ else if (mcs->rx_mask[0] & BIT(4)) + max_rate = (bw_40MHz) ? ((short_GI_40)?900:810): + ((short_GI_20)?433:390); +- else if (MCS_rate[0] & BIT(3)) ++ else if (mcs->rx_mask[0] & BIT(3)) + max_rate = (bw_40MHz) ? ((short_GI_40)?600:540): + ((short_GI_20)?289:260); +- else if (MCS_rate[0] & BIT(2)) ++ else if (mcs->rx_mask[0] & BIT(2)) + max_rate = (bw_40MHz) ? ((short_GI_40)?450:405): + ((short_GI_20)?217:195); +- else if (MCS_rate[0] & BIT(1)) ++ else if (mcs->rx_mask[0] & BIT(1)) + max_rate = (bw_40MHz) ? ((short_GI_40)?300:270): + ((short_GI_20)?144:130); +- else if (MCS_rate[0] & BIT(0)) ++ else if (mcs->rx_mask[0] & BIT(0)) + max_rate = (bw_40MHz) ? ((short_GI_40)?150:135): + ((short_GI_20)?72:65); + } else { +- if (MCS_rate[1]) { +- if (MCS_rate[1] & BIT(7)) ++ if (mcs->rx_mask[1]) { ++ if (mcs->rx_mask[1] & BIT(7)) + max_rate = (bw_40MHz) ? ((short_GI_40)?3000:2700):((short_GI_20)?1444:1300); +- else if (MCS_rate[1] & BIT(6)) ++ else if (mcs->rx_mask[1] & BIT(6)) + max_rate = (bw_40MHz) ? ((short_GI_40)?2700:2430):((short_GI_20)?1300:1170); +- else if (MCS_rate[1] & BIT(5)) ++ else if (mcs->rx_mask[1] & BIT(5)) + max_rate = (bw_40MHz) ? ((short_GI_40)?2400:2160):((short_GI_20)?1156:1040); +- else if (MCS_rate[1] & BIT(4)) ++ else if (mcs->rx_mask[1] & BIT(4)) + max_rate = (bw_40MHz) ? ((short_GI_40)?1800:1620):((short_GI_20)?867:780); +- else if (MCS_rate[1] & BIT(3)) ++ else if (mcs->rx_mask[1] & BIT(3)) + max_rate = (bw_40MHz) ? ((short_GI_40)?1200:1080):((short_GI_20)?578:520); +- else if (MCS_rate[1] & BIT(2)) ++ else if (mcs->rx_mask[1] & BIT(2)) + max_rate = (bw_40MHz) ? ((short_GI_40)?900:810):((short_GI_20)?433:390); +- else if (MCS_rate[1] & BIT(1)) ++ else if (mcs->rx_mask[1] & BIT(1)) + max_rate = (bw_40MHz) ? ((short_GI_40)?600:540):((short_GI_20)?289:260); +- else if (MCS_rate[1] & BIT(0)) ++ else if (mcs->rx_mask[1] & BIT(0)) + max_rate = (bw_40MHz) ? ((short_GI_40)?300:270):((short_GI_20)?144:130); + } else { +- if (MCS_rate[0] & BIT(7)) ++ if (mcs->rx_mask[0] & BIT(7)) + max_rate = (bw_40MHz) ? ((short_GI_40)?1500:1350):((short_GI_20)?722:650); +- else if (MCS_rate[0] & BIT(6)) ++ else if (mcs->rx_mask[0] & BIT(6)) + max_rate = (bw_40MHz) ? ((short_GI_40)?1350:1215):((short_GI_20)?650:585); +- else if (MCS_rate[0] & BIT(5)) ++ else if (mcs->rx_mask[0] & BIT(5)) + max_rate = (bw_40MHz) ? ((short_GI_40)?1200:1080):((short_GI_20)?578:520); +- else if (MCS_rate[0] & BIT(4)) ++ else if (mcs->rx_mask[0] & BIT(4)) + max_rate = (bw_40MHz) ? ((short_GI_40)?900:810):((short_GI_20)?433:390); +- else if (MCS_rate[0] & BIT(3)) ++ else if (mcs->rx_mask[0] & BIT(3)) + max_rate = (bw_40MHz) ? ((short_GI_40)?600:540):((short_GI_20)?289:260); +- else if (MCS_rate[0] & BIT(2)) ++ else if (mcs->rx_mask[0] & BIT(2)) + max_rate = (bw_40MHz) ? ((short_GI_40)?450:405):((short_GI_20)?217:195); +- else if (MCS_rate[0] & BIT(1)) ++ else if (mcs->rx_mask[0] & BIT(1)) + max_rate = (bw_40MHz) ? ((short_GI_40)?300:270):((short_GI_20)?144:130); +- else if (MCS_rate[0] & BIT(0)) ++ else if (mcs->rx_mask[0] & BIT(0)) + max_rate = (bw_40MHz) ? ((short_GI_40)?150:135):((short_GI_20)?72:65); + } + } +diff --git a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c +index cf897c7..30474f5 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c ++++ b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c +@@ -406,7 +406,7 @@ u16 rtw_get_cur_max_rate23a(struct rtw_adapter *adapter) + max_rate = rtw_mcs_rate23a(rf_type, bw_40MHz & + pregistrypriv->cbw40_enable, + short_GI_20, short_GI_40, +- pmlmeinfo->HT_caps.u.HT_cap_element.MCS_rate ++ &pmlmeinfo->HT_caps.u.HT_cap_element.mcs_info + ); + } + } else { +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c +index 47a1df0..ab59ab7 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c +@@ -2328,11 +2328,11 @@ void rtw_update_ht_cap23a(struct rtw_adapter *padapter, u8 *pie, uint ie_len) + rf_type = rtl8723a_get_rf_type(padapter); + + /* update the MCS rates */ +- for (i = 0; i < 16; i++) { ++ for (i = 0; i < IEEE80211_HT_MCS_MASK_LEN; i++) { + if (rf_type == RF_1T1R || rf_type == RF_1T2R) +- pmlmeinfo->HT_caps.u.HT_cap_element.MCS_rate[i] &= MCS_rate_1R23A[i]; ++ pmlmeinfo->HT_caps.u.HT_cap_element.mcs_info.rx_mask[i] &= MCS_rate_1R23A[i]; + else +- pmlmeinfo->HT_caps.u.HT_cap_element.MCS_rate[i] &= MCS_rate_2R23A[i]; ++ pmlmeinfo->HT_caps.u.HT_cap_element.mcs_info.rx_mask[i] &= MCS_rate_2R23A[i]; + } + /* switch to the 40M Hz mode accoring to the AP */ + pmlmeext->cur_bwmode = HT_CHANNEL_WIDTH_40; +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index 7a117c0..6249ab2 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -3498,7 +3498,7 @@ static void issue_assocreq(struct rtw_adapter *padapter) + if (pregpriv->rx_stbc) + pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info |= cpu_to_le16(0x0100); + +- memcpy(pmlmeinfo->HT_caps.u.HT_cap_element.MCS_rate, MCS_rate_1R23A, 16); ++ memcpy(&pmlmeinfo->HT_caps.u.HT_cap_element.mcs_info, MCS_rate_1R23A, 16); + break; + + case RF_2T2R: +@@ -3519,7 +3519,7 @@ static void issue_assocreq(struct rtw_adapter *padapter) + "STBC\n"); + pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info |= cpu_to_le16(0x0200);/* RX STBC two spatial stream */ + } +- memcpy(pmlmeinfo->HT_caps.u.HT_cap_element.MCS_rate, MCS_rate_2R23A, 16); ++ memcpy(&pmlmeinfo->HT_caps.u.HT_cap_element.mcs_info, MCS_rate_2R23A, 16); + break; + } + pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info = +diff --git a/drivers/staging/rtl8723au/core/rtw_wlan_util.c b/drivers/staging/rtl8723au/core/rtw_wlan_util.c +index 579a4a8..b63248b 100644 +--- a/drivers/staging/rtl8723au/core/rtw_wlan_util.c ++++ b/drivers/staging/rtl8723au/core/rtw_wlan_util.c +@@ -762,13 +762,11 @@ void HT_caps_handler23a(struct rtw_adapter *padapter, u8 *p) + rf_type = rtl8723a_get_rf_type(padapter); + + /* update the MCS rates */ +- for (i = 0; i < 16; i++) { ++ for (i = 0; i < IEEE80211_HT_MCS_MASK_LEN; i++) { + if (rf_type == RF_1T1R || rf_type == RF_1T2R) +- pmlmeinfo->HT_caps.u.HT_cap_element.MCS_rate[i] &= +- MCS_rate_1R23A[i]; ++ pmlmeinfo->HT_caps.u.HT_cap_element.mcs_info.rx_mask[i] &= MCS_rate_1R23A[i]; + else +- pmlmeinfo->HT_caps.u.HT_cap_element.MCS_rate[i] &= +- MCS_rate_2R23A[i]; ++ pmlmeinfo->HT_caps.u.HT_cap_element.mcs_info.rx_mask[i] &= MCS_rate_2R23A[i]; + } + return; + } +@@ -1344,8 +1342,8 @@ unsigned int update_MSC_rate23a(struct HT_caps_element *pHT_caps) + { + unsigned int mask = 0; + +- mask = pHT_caps->u.HT_cap_element.MCS_rate[0] << 12 | +- pHT_caps->u.HT_cap_element.MCS_rate[1] << 20; ++ mask = pHT_caps->u.HT_cap_element.mcs_info.rx_mask[0] << 12 | ++ pHT_caps->u.HT_cap_element.mcs_info.rx_mask[1] << 20; + + return mask; + } +diff --git a/drivers/staging/rtl8723au/include/ieee80211.h b/drivers/staging/rtl8723au/include/ieee80211.h +index bb645cf..6f42d2d 100644 +--- a/drivers/staging/rtl8723au/include/ieee80211.h ++++ b/drivers/staging/rtl8723au/include/ieee80211.h +@@ -447,7 +447,8 @@ int rtw_check_network_type23a(unsigned char *rate, int ratelen, int channel); + + void rtw_get_bcn_info23a(struct wlan_network *pnetwork); + +-u16 rtw_mcs_rate23a(u8 rf_type, u8 bw_40MHz, u8 short_GI_20, u8 short_GI_40, unsigned char * MCS_rate); ++u16 rtw_mcs_rate23a(u8 rf_type, u8 bw_40MHz, u8 short_GI_20, u8 short_GI_40, ++ struct ieee80211_mcs_info *mcs); + + const char *action_public_str23a(u8 action); + +diff --git a/drivers/staging/rtl8723au/include/wifi.h b/drivers/staging/rtl8723au/include/wifi.h +index cccea6a..f731833 100644 +--- a/drivers/staging/rtl8723au/include/wifi.h ++++ b/drivers/staging/rtl8723au/include/wifi.h +@@ -81,7 +81,7 @@ struct HT_caps_element { + struct { + unsigned short HT_caps_info; + unsigned char AMPDU_para; +- unsigned char MCS_rate[16]; ++ struct ieee80211_mcs_info mcs_info; + unsigned short HT_ext_caps; + unsigned int Beamforming_caps; + unsigned char ASEL_caps; diff --git a/debian/patches/features/all/r8723au/0012-staging-rtl8723au-Use-struct-ieee80211_ht_cap-and-as.patch b/debian/patches/features/all/r8723au/0012-staging-rtl8723au-Use-struct-ieee80211_ht_cap-and-as.patch new file mode 100644 index 000000000..e67181e0d --- /dev/null +++ b/debian/patches/features/all/r8723au/0012-staging-rtl8723au-Use-struct-ieee80211_ht_cap-and-as.patch @@ -0,0 +1,426 @@ +From: Jes Sorensen +Date: Sat, 31 May 2014 18:05:11 +0200 +Subject: [012/249] staging: rtl8723au: Use struct ieee80211_ht_cap and + associated #defines +Origin: https://git.kernel.org/linus/65be27da4953163c638a006542d279f5b1f346ea + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_ap.c | 9 ++-- + drivers/staging/rtl8723au/core/rtw_ioctl_set.c | 11 ++-- + drivers/staging/rtl8723au/core/rtw_mlme.c | 14 +++-- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 42 ++++++++------- + drivers/staging/rtl8723au/core/rtw_wlan_util.c | 60 ++++++++++++---------- + .../staging/rtl8723au/hal/rtl8723a_bt-coexist.c | 4 +- + drivers/staging/rtl8723au/hal/usb_halinit.c | 4 +- + drivers/staging/rtl8723au/include/rtw_mlme_ext.h | 6 +-- + drivers/staging/rtl8723au/include/wifi.h | 14 ----- + 9 files changed, 84 insertions(+), 80 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_ap.c b/drivers/staging/rtl8723au/core/rtw_ap.c +index d03bb3e..83be27f 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ap.c ++++ b/drivers/staging/rtl8723au/core/rtw_ap.c +@@ -623,15 +623,18 @@ static void update_hw_ht_param(struct rtw_adapter *padapter) + AMPDU_para [1:0]:Max AMPDU Len => 0:8k , 1:16k, 2:32k, 3:64k + AMPDU_para [4:2]:Min MPDU Start Spacing + */ +- max_AMPDU_len = pmlmeinfo->HT_caps.u.HT_cap_element.AMPDU_para & 0x03; ++ max_AMPDU_len = pmlmeinfo->ht_cap.ampdu_params_info & ++ IEEE80211_HT_AMPDU_PARM_FACTOR; + +- min_MPDU_spacing = (pmlmeinfo->HT_caps.u.HT_cap_element.AMPDU_para & 0x1c) >> 2; ++ min_MPDU_spacing = (pmlmeinfo->ht_cap.ampdu_params_info & ++ IEEE80211_HT_AMPDU_PARM_DENSITY) >> 2; + + rtl8723a_set_ampdu_min_space(padapter, min_MPDU_spacing); + rtl8723a_set_ampdu_factor(padapter, max_AMPDU_len); + + /* Config SM Power Save setting */ +- pmlmeinfo->SM_PS = (pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info & 0x0C) >> 2; ++ pmlmeinfo->SM_PS = (le16_to_cpu(pmlmeinfo->ht_cap.cap_info) & ++ IEEE80211_HT_CAP_SM_PS) >> 2; + if (pmlmeinfo->SM_PS == WLAN_HT_CAP_SM_PS_STATIC) + DBG_8723A("%s(): WLAN_HT_CAP_SM_PS_STATIC\n", __func__); + } +diff --git a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c +index 30474f5..e9f46a6 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c ++++ b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c +@@ -399,15 +399,18 @@ u16 rtw_get_cur_max_rate23a(struct rtw_adapter *adapter) + + /* short_GI = (pht_capie->cap_info & (IEEE80211_HT_CAP + _SGI_20|IEEE80211_HT_CAP_SGI_40)) ? 1 : 0; */ +- short_GI_20 = (pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info&IEEE80211_HT_CAP_SGI_20) ? 1:0; +- short_GI_40 = (pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info&IEEE80211_HT_CAP_SGI_40) ? 1:0; ++ short_GI_20 = ++ (pmlmeinfo->ht_cap.cap_info & ++ cpu_to_le16(IEEE80211_HT_CAP_SGI_20)) ? 1:0; ++ short_GI_40 = ++ (pmlmeinfo->ht_cap.cap_info & ++ cpu_to_le16(IEEE80211_HT_CAP_SGI_40)) ? 1:0; + + rf_type = rtl8723a_get_rf_type(adapter); + max_rate = rtw_mcs_rate23a(rf_type, bw_40MHz & + pregistrypriv->cbw40_enable, + short_GI_20, short_GI_40, +- &pmlmeinfo->HT_caps.u.HT_cap_element.mcs_info +- ); ++ &pmlmeinfo->ht_cap.mcs); + } + } else { + while ((pcur_bss->SupportedRates[i] != 0) && +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c +index ab59ab7..19b891f 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c +@@ -2320,7 +2320,8 @@ void rtw_update_ht_cap23a(struct rtw_adapter *padapter, u8 *pie, uint ie_len) + + /* update cur_bwmode & cur_ch_offset */ + if (pregistrypriv->cbw40_enable && +- pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info & BIT(1) && ++ pmlmeinfo->ht_cap.cap_info & ++ cpu_to_le16(IEEE80211_HT_CAP_SUP_WIDTH_20_40) && + pmlmeinfo->HT_info.infos[0] & BIT(2)) { + int i; + u8 rf_type; +@@ -2330,9 +2331,11 @@ void rtw_update_ht_cap23a(struct rtw_adapter *padapter, u8 *pie, uint ie_len) + /* update the MCS rates */ + for (i = 0; i < IEEE80211_HT_MCS_MASK_LEN; i++) { + if (rf_type == RF_1T1R || rf_type == RF_1T2R) +- pmlmeinfo->HT_caps.u.HT_cap_element.mcs_info.rx_mask[i] &= MCS_rate_1R23A[i]; ++ pmlmeinfo->ht_cap.mcs.rx_mask[i] &= ++ MCS_rate_1R23A[i]; + else +- pmlmeinfo->HT_caps.u.HT_cap_element.mcs_info.rx_mask[i] &= MCS_rate_2R23A[i]; ++ pmlmeinfo->ht_cap.mcs.rx_mask[i] &= ++ MCS_rate_2R23A[i]; + } + /* switch to the 40M Hz mode accoring to the AP */ + pmlmeext->cur_bwmode = HT_CHANNEL_WIDTH_40; +@@ -2356,8 +2359,9 @@ void rtw_update_ht_cap23a(struct rtw_adapter *padapter, u8 *pie, uint ie_len) + /* */ + /* Config SM Power Save setting */ + /* */ +- pmlmeinfo->SM_PS = (pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info & +- 0x0C) >> 2; ++ pmlmeinfo->SM_PS = ++ (le16_to_cpu(pmlmeinfo->ht_cap.cap_info) & ++ IEEE80211_HT_CAP_SM_PS) >> IEEE80211_HT_CAP_SM_PS_SHIFT; + if (pmlmeinfo->SM_PS == WLAN_HT_CAP_SM_PS_STATIC) + DBG_8723A("%s(): WLAN_HT_CAP_SM_PS_STATIC\n", __func__); + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index 6249ab2..b5f1d40 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -3476,19 +3476,22 @@ static void issue_assocreq(struct rtw_adapter *padapter) + p = cfg80211_find_ie(WLAN_EID_HT_CAPABILITY, pie, pie_len); + + if (p && !is_ap_in_tkip23a(padapter)) { +- memcpy(&pmlmeinfo->HT_caps, p + 2, +- sizeof(struct HT_caps_element)); ++ struct ieee80211_ht_cap *cap = &pmlmeinfo->ht_cap; ++ ++ memcpy(cap, p + 2, sizeof(struct ieee80211_ht_cap)); + + /* to disable 40M Hz support while gd_bw_40MHz_en = 0 */ + if (pregpriv->cbw40_enable == 0) { +- pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info &= (~(BIT(6) | BIT(1))); ++ cap->cap_info &= ~cpu_to_le16( ++ IEEE80211_HT_CAP_SGI_40 | ++ IEEE80211_HT_CAP_SUP_WIDTH_20_40); + } else { +- pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info |= BIT(1); ++ cap->cap_info |= cpu_to_le16( ++ IEEE80211_HT_CAP_SUP_WIDTH_20_40); + } + + /* todo: disable SM power save mode */ +- pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info |= +- 0x000c; ++ cap->cap_info |= cpu_to_le16(IEEE80211_HT_CAP_SM_PS); + + rf_type = rtl8723a_get_rf_type(padapter); + /* switch (pregpriv->rf_config) */ +@@ -3496,9 +3499,9 @@ static void issue_assocreq(struct rtw_adapter *padapter) + case RF_1T1R: + /* RX STBC One spatial stream */ + if (pregpriv->rx_stbc) +- pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info |= cpu_to_le16(0x0100); ++ cap->cap_info |= cpu_to_le16(1 << IEEE80211_HT_CAP_RX_STBC_SHIFT); + +- memcpy(&pmlmeinfo->HT_caps.u.HT_cap_element.mcs_info, MCS_rate_1R23A, 16); ++ memcpy(&cap->mcs, MCS_rate_1R23A, 16); + break; + + case RF_2T2R: +@@ -3517,23 +3520,23 @@ static void issue_assocreq(struct rtw_adapter *padapter) + pregpriv->wifi_spec == 1) { + DBG_8723A("declare supporting RX " + "STBC\n"); +- pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info |= cpu_to_le16(0x0200);/* RX STBC two spatial stream */ ++ /* RX STBC two spatial stream */ ++ cap->cap_info |= cpu_to_le16(2 << IEEE80211_HT_CAP_RX_STBC_SHIFT); + } +- memcpy(&pmlmeinfo->HT_caps.u.HT_cap_element.mcs_info, MCS_rate_2R23A, 16); ++ memcpy(&cap->mcs, MCS_rate_2R23A, 16); + break; + } +- pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info = +- cpu_to_le16(pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info); + + if (rtl8723a_BT_coexist(padapter) && + rtl8723a_BT_using_antenna_1(padapter)) { + /* set to 8K */ +- pmlmeinfo->HT_caps.u.HT_cap_element.AMPDU_para &= (u8)~IEEE80211_HT_AMPDU_PARM_FACTOR; +-/* pmlmeinfo->HT_caps.u.HT_cap_element.AMPDU_para |= MAX_AMPDU_FACTOR_8K */ ++ cap->ampdu_params_info &= ++ ~IEEE80211_HT_AMPDU_PARM_FACTOR; ++/* cap->ampdu_params_info |= MAX_AMPDU_FACTOR_8K */ + } + + pframe = rtw_set_ie23a(pframe, WLAN_EID_HT_CAPABILITY, +- p[1], (u8 *)&pmlmeinfo->HT_caps, ++ p[1], (u8 *)&pmlmeinfo->ht_cap, + &pattrib->pktlen); + } + } +@@ -4679,10 +4682,11 @@ int collect_bss_info23a(struct rtw_adapter *padapter, + bssid->IEs + ie_offset, + bssid->IELength - ie_offset); + if (p && p[1] > 0) { +- struct HT_caps_element *pHT_caps; +- pHT_caps = (struct HT_caps_element *)(p + 2); ++ struct ieee80211_ht_cap *pHT_caps; ++ pHT_caps = (struct ieee80211_ht_cap *)(p + 2); + +- if (pHT_caps->u.HT_cap_element.HT_caps_info & BIT(14)) ++ if (pHT_caps->cap_info & ++ cpu_to_le16(IEEE80211_HT_CAP_40MHZ_INTOLERANT)) + pmlmepriv->num_FortyMHzIntolerant++; + } else + pmlmepriv->num_sta_no_ht++; +@@ -5392,7 +5396,7 @@ void update_sta_info23a(struct rtw_adapter *padapter, struct sta_info *psta) + + psta->htpriv.ampdu_enable = pmlmepriv->htpriv.ampdu_enable; + +- if (support_short_GI23a(padapter, &pmlmeinfo->HT_caps)) ++ if (support_short_GI23a(padapter, &pmlmeinfo->ht_cap)) + psta->htpriv.sgi = true; + + psta->qos_option = true; +diff --git a/drivers/staging/rtl8723au/core/rtw_wlan_util.c b/drivers/staging/rtl8723au/core/rtw_wlan_util.c +index b63248b..1194a6e 100644 +--- a/drivers/staging/rtl8723au/core/rtw_wlan_util.c ++++ b/drivers/staging/rtl8723au/core/rtw_wlan_util.c +@@ -720,6 +720,8 @@ void HT_caps_handler23a(struct rtw_adapter *padapter, u8 *p) + struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct ht_priv *phtpriv = &pmlmepriv->htpriv; ++ struct ieee80211_ht_cap *cap; ++ u8 *dstcap; + + if (!p) + return; +@@ -729,44 +731,44 @@ void HT_caps_handler23a(struct rtw_adapter *padapter, u8 *p) + + pmlmeinfo->HT_caps_enable = 1; + ++ cap = &pmlmeinfo->ht_cap; ++ dstcap = (u8 *)cap; + for (i = 0; i < p[1]; i++) { + if (i != 2) { +- /* Commented by Albert 2010/07/12 */ +- /* Got the endian issue here. */ +- pmlmeinfo->HT_caps.u.HT_cap[i] &= p[i + 2]; ++ dstcap[i] &= p[i + 2]; + } else { + /* modify from fw by Thomas 2010/11/17 */ +- if ((pmlmeinfo->HT_caps.u.HT_cap_element.AMPDU_para & 0x3) > (p[i + 2] & 0x3)) +- max_AMPDU_len = p[i + 2] & 0x3; ++ if ((cap->ampdu_params_info & ++ IEEE80211_HT_AMPDU_PARM_FACTOR) > ++ (p[i + 2] & IEEE80211_HT_AMPDU_PARM_FACTOR)) ++ max_AMPDU_len = p[i + 2] & ++ IEEE80211_HT_AMPDU_PARM_FACTOR; + else +- max_AMPDU_len = pmlmeinfo->HT_caps.u.HT_cap_element.AMPDU_para & 0x3; +- +- if ((pmlmeinfo->HT_caps.u.HT_cap_element.AMPDU_para & 0x1c) > (p[i + 2] & 0x1c)) +- min_MPDU_spacing = pmlmeinfo->HT_caps.u.HT_cap_element.AMPDU_para & 0x1c; ++ max_AMPDU_len = cap->ampdu_params_info & ++ IEEE80211_HT_AMPDU_PARM_FACTOR; ++ ++ if ((cap->ampdu_params_info & ++ IEEE80211_HT_AMPDU_PARM_DENSITY) > ++ (p[i + 2] & IEEE80211_HT_AMPDU_PARM_DENSITY)) ++ min_MPDU_spacing = cap->ampdu_params_info & ++ IEEE80211_HT_AMPDU_PARM_DENSITY; + else +- min_MPDU_spacing = p[i + 2] & 0x1c; ++ min_MPDU_spacing = p[i + 2] & ++ IEEE80211_HT_AMPDU_PARM_DENSITY; + +- pmlmeinfo->HT_caps.u.HT_cap_element.AMPDU_para = ++ cap->ampdu_params_info = + max_AMPDU_len | min_MPDU_spacing; + } + } + +- /* Commented by Albert 2010/07/12 */ +- /* Have to handle the endian issue after copying. */ +- /* HT_ext_caps didn't be used yet. */ +- pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info = +- le16_to_cpu(pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info); +- pmlmeinfo->HT_caps.u.HT_cap_element.HT_ext_caps = +- le16_to_cpu(pmlmeinfo->HT_caps.u.HT_cap_element.HT_ext_caps); +- + rf_type = rtl8723a_get_rf_type(padapter); + + /* update the MCS rates */ + for (i = 0; i < IEEE80211_HT_MCS_MASK_LEN; i++) { + if (rf_type == RF_1T1R || rf_type == RF_1T2R) +- pmlmeinfo->HT_caps.u.HT_cap_element.mcs_info.rx_mask[i] &= MCS_rate_1R23A[i]; ++ cap->mcs.rx_mask[i] &= MCS_rate_1R23A[i]; + else +- pmlmeinfo->HT_caps.u.HT_cap_element.mcs_info.rx_mask[i] &= MCS_rate_2R23A[i]; ++ cap->mcs.rx_mask[i] &= MCS_rate_2R23A[i]; + } + return; + } +@@ -816,10 +818,12 @@ void HTOnAssocRsp23a(struct rtw_adapter *padapter) + AMPDU_para [1:0]:Max AMPDU Len => 0:8k , 1:16k, 2:32k, 3:64k + AMPDU_para [4:2]:Min MPDU Start Spacing + */ +- max_AMPDU_len = pmlmeinfo->HT_caps.u.HT_cap_element.AMPDU_para & 0x03; ++ max_AMPDU_len = pmlmeinfo->ht_cap.ampdu_params_info & ++ IEEE80211_HT_AMPDU_PARM_FACTOR; + + min_MPDU_spacing = +- (pmlmeinfo->HT_caps.u.HT_cap_element.AMPDU_para & 0x1c) >> 2; ++ (pmlmeinfo->ht_cap.ampdu_params_info & ++ IEEE80211_HT_AMPDU_PARM_DENSITY) >> 2; + + rtl8723a_set_ampdu_min_space(padapter, min_MPDU_spacing); + rtl8723a_set_ampdu_factor(padapter, max_AMPDU_len); +@@ -1338,18 +1342,18 @@ unsigned int update_supported_rate23a(unsigned char *ptn, unsigned int ptn_sz) + return mask; + } + +-unsigned int update_MSC_rate23a(struct HT_caps_element *pHT_caps) ++unsigned int update_MSC_rate23a(struct ieee80211_ht_cap *pHT_caps) + { + unsigned int mask = 0; + +- mask = pHT_caps->u.HT_cap_element.mcs_info.rx_mask[0] << 12 | +- pHT_caps->u.HT_cap_element.mcs_info.rx_mask[1] << 20; ++ mask = pHT_caps->mcs.rx_mask[0] << 12 | ++ pHT_caps->mcs.rx_mask[1] << 20; + + return mask; + } + + int support_short_GI23a(struct rtw_adapter *padapter, +- struct HT_caps_element *pHT_caps) ++ struct ieee80211_ht_cap *pHT_caps) + { + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; +@@ -1361,7 +1365,7 @@ int support_short_GI23a(struct rtw_adapter *padapter, + return _FAIL; + bit_offset = (pmlmeext->cur_bwmode & HT_CHANNEL_WIDTH_40)? 6: 5; + +- if (pHT_caps->u.HT_cap_element.HT_caps_info & (0x1 << bit_offset)) ++ if (pHT_caps->cap_info & cpu_to_le16(0x1 << bit_offset)) + return _SUCCESS; + else + return _FAIL; +diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_bt-coexist.c b/drivers/staging/rtl8723au/hal/rtl8723a_bt-coexist.c +index c001053..bb86986 100644 +--- a/drivers/staging/rtl8723au/hal/rtl8723a_bt-coexist.c ++++ b/drivers/staging/rtl8723au/hal/rtl8723a_bt-coexist.c +@@ -5871,8 +5871,8 @@ btdm_1AntUpdateHalRAMask(struct rtw_adapter *padapter, u32 mac_id, u32 filter) + mask = update_supported_rate23a(cur_network->SupportedRates, + supportRateNum); + mask |= (pmlmeinfo->HT_enable) ? +- update_MSC_rate23a(&pmlmeinfo->HT_caps):0; +- if (support_short_GI23a(padapter, &pmlmeinfo->HT_caps)) ++ update_MSC_rate23a(&pmlmeinfo->ht_cap):0; ++ if (support_short_GI23a(padapter, &pmlmeinfo->ht_cap)) + shortGIrate = true; + break; + case 1:/* for broadcast/multicast */ +diff --git a/drivers/staging/rtl8723au/hal/usb_halinit.c b/drivers/staging/rtl8723au/hal/usb_halinit.c +index 6a7fb28..d3d7289 100644 +--- a/drivers/staging/rtl8723au/hal/usb_halinit.c ++++ b/drivers/staging/rtl8723au/hal/usb_halinit.c +@@ -1532,9 +1532,9 @@ void rtl8723a_update_ramask(struct rtw_adapter *padapter, + mask = update_supported_rate23a(cur_network->SupportedRates, + supportRateNum); + mask |= (pmlmeinfo->HT_enable) ? +- update_MSC_rate23a(&pmlmeinfo->HT_caps) : 0; ++ update_MSC_rate23a(&pmlmeinfo->ht_cap) : 0; + +- if (support_short_GI23a(padapter, &pmlmeinfo->HT_caps)) ++ if (support_short_GI23a(padapter, &pmlmeinfo->ht_cap)) + shortGIrate = true; + break; + +diff --git a/drivers/staging/rtl8723au/include/rtw_mlme_ext.h b/drivers/staging/rtl8723au/include/rtw_mlme_ext.h +index badbce0..57622fb 100644 +--- a/drivers/staging/rtl8723au/include/rtw_mlme_ext.h ++++ b/drivers/staging/rtl8723au/include/rtw_mlme_ext.h +@@ -366,7 +366,7 @@ struct mlme_ext_info + + struct ADDBA_request ADDBA_req; + struct WMM_para_element WMM_param; +- struct HT_caps_element HT_caps; ++ struct ieee80211_ht_cap ht_cap; + struct HT_info_element HT_info; + struct wlan_bssid_ex network;/* join network or bss_network, if in ap mode, it is the same to cur_network.network */ + struct FW_Sta_Info FW_sta_info[NUM_STA]; +@@ -536,7 +536,7 @@ int update_sta_support_rate23a(struct rtw_adapter *padapter, u8* pvar_ie, + void update_sta_info23a(struct rtw_adapter *padapter, struct sta_info *psta); + unsigned int update_basic_rate23a(unsigned char *ptn, unsigned int ptn_sz); + unsigned int update_supported_rate23a(unsigned char *ptn, unsigned int ptn_sz); +-unsigned int update_MSC_rate23a(struct HT_caps_element *pHT_caps); ++unsigned int update_MSC_rate23a(struct ieee80211_ht_cap *ht_cap); + void Update_RA_Entry23a(struct rtw_adapter *padapter, struct sta_info *psta); + void set_sta_rate23a(struct rtw_adapter *padapter, struct sta_info *psta); + +@@ -545,7 +545,7 @@ int receive_disconnect23a(struct rtw_adapter *padapter, + + unsigned char get_highest_rate_idx23a(u32 mask); + int support_short_GI23a(struct rtw_adapter *padapter, +- struct HT_caps_element *pHT_caps); ++ struct ieee80211_ht_cap *ht_cap); + bool is_ap_in_tkip23a(struct rtw_adapter *padapter); + bool is_ap_in_wep23a(struct rtw_adapter *padapter); + bool should_forbid_n_rate23a(struct rtw_adapter *padapter); +diff --git a/drivers/staging/rtl8723au/include/wifi.h b/drivers/staging/rtl8723au/include/wifi.h +index f731833..d0a8c86 100644 +--- a/drivers/staging/rtl8723au/include/wifi.h ++++ b/drivers/staging/rtl8723au/include/wifi.h +@@ -76,20 +76,6 @@ struct ieee80211_ht_addt_info { + unsigned char basic_set[16]; + } __packed; + +-struct HT_caps_element { +- union { +- struct { +- unsigned short HT_caps_info; +- unsigned char AMPDU_para; +- struct ieee80211_mcs_info mcs_info; +- unsigned short HT_ext_caps; +- unsigned int Beamforming_caps; +- unsigned char ASEL_caps; +- } HT_cap_element; +- unsigned char HT_cap[26]; +- } u; +-} __packed; +- + struct HT_info_element { + unsigned char primary_channel; + unsigned char infos[5]; diff --git a/debian/patches/features/all/r8723au/0013-staging-rtl8723au-Use-correct-struct-for-WLAN_EID_HT.patch b/debian/patches/features/all/r8723au/0013-staging-rtl8723au-Use-correct-struct-for-WLAN_EID_HT.patch new file mode 100644 index 000000000..faac72900 --- /dev/null +++ b/debian/patches/features/all/r8723au/0013-staging-rtl8723au-Use-correct-struct-for-WLAN_EID_HT.patch @@ -0,0 +1,66 @@ +From: Jes Sorensen +Date: Sat, 31 May 2014 18:05:12 +0200 +Subject: [013/249] staging: rtl8723au: Use correct struct for + WLAN_EID_HT_CAPABILITY +Origin: https://git.kernel.org/linus/6594c965ca8c07ba2c152bfa3c23700650d2969b + +WLAN_EID_HT_CAPABILITY carries a struct ieee80211_ht_operation - use +the right struct instead of a self invented one. + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme.c | 6 +++--- + drivers/staging/rtl8723au/include/wifi.h | 8 -------- + 2 files changed, 3 insertions(+), 11 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c +index 19b891f..297e2e4 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c +@@ -2249,7 +2249,7 @@ unsigned int rtw_restructure_ht_ie23a(struct rtw_adapter *padapter, u8 *in_ie, + + p = cfg80211_find_ie(WLAN_EID_HT_OPERATION, in_ie + 12, + in_len -12); +- if (p && (p[1] == sizeof(struct ieee80211_ht_addt_info))) { ++ if (p && (p[1] == sizeof(struct ieee80211_ht_operation))) { + out_len = *pout_len; + pframe = rtw_set_ie23a(out_ie + out_len, + WLAN_EID_HT_OPERATION, +@@ -2266,7 +2266,7 @@ void rtw_update_ht_cap23a(struct rtw_adapter *padapter, u8 *pie, uint ie_len) + u8 max_ampdu_sz; + const u8 *p; + struct ieee80211_ht_cap *pht_capie; +- struct ieee80211_ht_addt_info *pht_addtinfo; ++ struct ieee80211_ht_operation *pht_addtinfo; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct ht_priv *phtpriv = &pmlmepriv->htpriv; + struct registry_priv *pregistrypriv = &padapter->registrypriv; +@@ -2314,7 +2314,7 @@ void rtw_update_ht_cap23a(struct rtw_adapter *padapter, u8 *pie, uint ie_len) + + p = cfg80211_find_ie(WLAN_EID_HT_OPERATION, pie, ie_len); + if (p && p[1] > 0) { +- pht_addtinfo = (struct ieee80211_ht_addt_info *)(p + 2); ++ pht_addtinfo = (struct ieee80211_ht_operation *)(p + 2); + /* todo: */ + } + +diff --git a/drivers/staging/rtl8723au/include/wifi.h b/drivers/staging/rtl8723au/include/wifi.h +index d0a8c86..6d221df 100644 +--- a/drivers/staging/rtl8723au/include/wifi.h ++++ b/drivers/staging/rtl8723au/include/wifi.h +@@ -68,14 +68,6 @@ + * This structure refers to "HT information element" as + * described in 802.11n draft section 7.3.2.53 + */ +-struct ieee80211_ht_addt_info { +- unsigned char control_chan; +- unsigned char ht_param; +- unsigned short operation_mode; +- unsigned short stbc_param; +- unsigned char basic_set[16]; +-} __packed; +- + struct HT_info_element { + unsigned char primary_channel; + unsigned char infos[5]; diff --git a/debian/patches/features/all/r8723au/0014-staging-rtl8723au-Eliminate-struct-HT_info_element.patch b/debian/patches/features/all/r8723au/0014-staging-rtl8723au-Eliminate-struct-HT_info_element.patch new file mode 100644 index 000000000..814522af4 --- /dev/null +++ b/debian/patches/features/all/r8723au/0014-staging-rtl8723au-Eliminate-struct-HT_info_element.patch @@ -0,0 +1,331 @@ +From: Jes Sorensen +Date: Sat, 31 May 2014 18:05:13 +0200 +Subject: [014/249] staging: rtl8723au: Eliminate struct HT_info_element +Origin: https://git.kernel.org/linus/4dc5f8bab2663b902b9cb0be29198dbbf38aa3fb + +Yet another duplicate version of struct ieee80211_ht_operation + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_ap.c | 14 +++++++------ + drivers/staging/rtl8723au/core/rtw_ieee80211.c | 6 +++--- + drivers/staging/rtl8723au/core/rtw_ioctl_set.c | 4 ++-- + drivers/staging/rtl8723au/core/rtw_mlme.c | 14 +++++++------ + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 23 +++++++++++----------- + drivers/staging/rtl8723au/core/rtw_wlan_util.c | 25 ++++++++++++------------ + drivers/staging/rtl8723au/include/rtw_mlme_ext.h | 2 +- + drivers/staging/rtl8723au/include/rtw_rf.h | 11 ----------- + drivers/staging/rtl8723au/include/wifi.h | 11 ----------- + 9 files changed, 47 insertions(+), 63 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_ap.c b/drivers/staging/rtl8723au/core/rtw_ap.c +index 83be27f..d67a5f1 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ap.c ++++ b/drivers/staging/rtl8723au/core/rtw_ap.c +@@ -652,7 +652,7 @@ static void start_bss_network(struct rtw_adapter *padapter, u8 *pbuf) + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; + struct wlan_bssid_ex *pnetwork_mlmeext = &pmlmeinfo->network; +- struct HT_info_element *pht_info = NULL; ++ struct ieee80211_ht_operation *pht_info = NULL; + int bcn_fixed_size; + + bcn_interval = (u16)pnetwork->BeaconPeriod; +@@ -736,18 +736,20 @@ static void start_bss_network(struct rtw_adapter *padapter, u8 *pbuf) + pnetwork->IEs + bcn_fixed_size, + pnetwork->IELength - bcn_fixed_size); + if (p && p[1]) { +- pht_info = (struct HT_info_element *)(p + 2); ++ pht_info = (struct ieee80211_ht_operation *)(p + 2); + +- if (pregpriv->cbw40_enable && pht_info->infos[0] & BIT(2)) { ++ if (pregpriv->cbw40_enable && pht_info->ht_param & ++ IEEE80211_HT_PARAM_CHAN_WIDTH_ANY) { + /* switch to the 40M Hz mode */ + cur_bwmode = HT_CHANNEL_WIDTH_40; +- switch (pht_info->infos[0] & 0x3) { +- case 1: ++ switch (pht_info->ht_param & ++ IEEE80211_HT_PARAM_CHA_SEC_OFFSET) { ++ case IEEE80211_HT_PARAM_CHA_SEC_ABOVE: + /* pmlmeext->cur_ch_offset = + HAL_PRIME_CHNL_OFFSET_LOWER; */ + cur_ch_offset = HAL_PRIME_CHNL_OFFSET_LOWER; + break; +- case 3: ++ case IEEE80211_HT_PARAM_CHA_SEC_BELOW: + cur_ch_offset = HAL_PRIME_CHNL_OFFSET_UPPER; + break; + default: +diff --git a/drivers/staging/rtl8723au/core/rtw_ieee80211.c b/drivers/staging/rtl8723au/core/rtw_ieee80211.c +index 47ac4e9..69d2423 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ieee80211.c ++++ b/drivers/staging/rtl8723au/core/rtw_ieee80211.c +@@ -859,7 +859,7 @@ void rtw_get_bcn_info23a(struct wlan_network *pnetwork) + u8 bencrypt = 0; + /* u8 wpa_ie[255], rsn_ie[255]; */ + u16 wpa_len = 0, rsn_len = 0; +- struct HT_info_element *pht_info; ++ struct ieee80211_ht_operation *pht_info; + struct ieee80211_ht_cap *pht_cap; + const u8 *p; + +@@ -916,8 +916,8 @@ void rtw_get_bcn_info23a(struct wlan_network *pnetwork) + pnetwork->network.IEs + _FIXED_IE_LENGTH_, + pnetwork->network.IELength - _FIXED_IE_LENGTH_); + if (p && p[1] > 0) { +- pht_info = (struct HT_info_element *)(p + 2); +- pnetwork->BcnInfo.ht_info_infos_0 = pht_info->infos[0]; ++ pht_info = (struct ieee80211_ht_operation *)(p + 2); ++ pnetwork->BcnInfo.ht_info_infos_0 = pht_info->ht_param; + } else + pnetwork->BcnInfo.ht_info_infos_0 = 0; + } +diff --git a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c +index e9f46a6..1d2ea4e 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c ++++ b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c +@@ -394,8 +394,8 @@ u16 rtw_get_cur_max_rate23a(struct rtw_adapter *adapter) + /* cur_bwmod is updated by beacon, pmlmeinfo is + updated by association response */ + bw_40MHz = (pmlmeext->cur_bwmode && +- (IEEE80211_HT_PARAM_CHAN_WIDTH_ANY & +- pmlmeinfo->HT_info.infos[0])) ? 1:0; ++ (pmlmeinfo->HT_info.ht_param & ++ IEEE80211_HT_PARAM_CHAN_WIDTH_ANY)) ? 1:0; + + /* short_GI = (pht_capie->cap_info & (IEEE80211_HT_CAP + _SGI_20|IEEE80211_HT_CAP_SGI_40)) ? 1 : 0; */ +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c +index 297e2e4..9982886 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c +@@ -2322,7 +2322,7 @@ void rtw_update_ht_cap23a(struct rtw_adapter *padapter, u8 *pie, uint ie_len) + if (pregistrypriv->cbw40_enable && + pmlmeinfo->ht_cap.cap_info & + cpu_to_le16(IEEE80211_HT_CAP_SUP_WIDTH_20_40) && +- pmlmeinfo->HT_info.infos[0] & BIT(2)) { ++ pmlmeinfo->HT_info.ht_param & IEEE80211_HT_PARAM_CHAN_WIDTH_ANY) { + int i; + u8 rf_type; + +@@ -2339,13 +2339,13 @@ void rtw_update_ht_cap23a(struct rtw_adapter *padapter, u8 *pie, uint ie_len) + } + /* switch to the 40M Hz mode accoring to the AP */ + pmlmeext->cur_bwmode = HT_CHANNEL_WIDTH_40; +- switch ((pmlmeinfo->HT_info.infos[0] & 0x3)) +- { +- case HT_EXTCHNL_OFFSET_UPPER: ++ switch (pmlmeinfo->HT_info.ht_param & ++ IEEE80211_HT_PARAM_CHAN_WIDTH_ANY) { ++ case IEEE80211_HT_PARAM_CHA_SEC_ABOVE: + pmlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_LOWER; + break; + +- case HT_EXTCHNL_OFFSET_LOWER: ++ case IEEE80211_HT_PARAM_CHA_SEC_BELOW: + pmlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_UPPER; + break; + +@@ -2368,7 +2368,9 @@ void rtw_update_ht_cap23a(struct rtw_adapter *padapter, u8 *pie, uint ie_len) + /* */ + /* Config current HT Protection mode. */ + /* */ +- pmlmeinfo->HT_protection = pmlmeinfo->HT_info.infos[1] & 0x3; ++ pmlmeinfo->HT_protection = ++ le16_to_cpu(pmlmeinfo->HT_info.operation_mode) & ++ IEEE80211_HT_OP_MODE_PROTECTION; + } + + void rtw_issue_addbareq_cmd23a(struct rtw_adapter *padapter, +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index b5f1d40..0dc49d3 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -4640,9 +4640,9 @@ int collect_bss_info23a(struct rtw_adapter *padapter, + bssid->IEs + ie_offset, + bssid->IELength - ie_offset); + if (p) { +- struct HT_info_element *HT_info = +- (struct HT_info_element *)(p + 2); +- bssid->DSConfig = HT_info->primary_channel; ++ struct ieee80211_ht_operation *HT_info = ++ (struct ieee80211_ht_operation *)(p + 2); ++ bssid->DSConfig = HT_info->primary_chan; + } else /* use current channel */ + bssid->DSConfig = rtw_get_oper_ch23a(padapter); + } +@@ -5959,7 +5959,7 @@ int join_cmd_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf) + struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; + struct wlan_bssid_ex *pnetwork = &pmlmeinfo->network; + const struct wlan_bssid_ex *pparm = (struct wlan_bssid_ex *)pbuf; +- struct HT_info_element *pht_info; ++ struct ieee80211_ht_operation *pht_info; + u32 i; + int bcn_fixed_size; + u8 *p; +@@ -6028,20 +6028,21 @@ int join_cmd_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf) + + /* spec case only for cisco's ap because cisco's ap + * issue assoc rsp using mcs rate @40MHz or @20MHz */ +- pht_info = (struct HT_info_element *)(p + 2); ++ pht_info = (struct ieee80211_ht_operation *)(p + 2); + +- if ((pregpriv->cbw40_enable) && +- (pht_info->infos[0] & BIT(2))) { ++ if (pregpriv->cbw40_enable && ++ (pht_info->ht_param & ++ IEEE80211_HT_PARAM_CHAN_WIDTH_ANY)) { + /* switch to the 40M Hz mode according to AP */ + pmlmeext->cur_bwmode = HT_CHANNEL_WIDTH_40; +- switch (pht_info->infos[0] & 0x3) +- { +- case 1: ++ switch (pht_info->ht_param & ++ IEEE80211_HT_PARAM_CHA_SEC_OFFSET) { ++ case IEEE80211_HT_PARAM_CHA_SEC_ABOVE: + pmlmeext->cur_ch_offset = + HAL_PRIME_CHNL_OFFSET_LOWER; + break; + +- case 3: ++ case IEEE80211_HT_PARAM_CHA_SEC_BELOW: + pmlmeext->cur_ch_offset = + HAL_PRIME_CHNL_OFFSET_UPPER; + break; +diff --git a/drivers/staging/rtl8723au/core/rtw_wlan_util.c b/drivers/staging/rtl8723au/core/rtw_wlan_util.c +index 1194a6e..6d69811 100644 +--- a/drivers/staging/rtl8723au/core/rtw_wlan_util.c ++++ b/drivers/staging/rtl8723au/core/rtw_wlan_util.c +@@ -635,7 +635,7 @@ void WMMOnAssocRsp23a(struct rtw_adapter *padapter) + + static void bwmode_update_check(struct rtw_adapter *padapter, u8 *p) + { +- struct HT_info_element *pHT_info; ++ struct ieee80211_ht_operation *pHT_info; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; +@@ -648,19 +648,20 @@ static void bwmode_update_check(struct rtw_adapter *padapter, u8 *p) + return; + if (!phtpriv->ht_option) + return; +- if (p[1] > sizeof(struct HT_info_element)) ++ if (p[1] != sizeof(struct ieee80211_ht_operation)) + return; + +- pHT_info = (struct HT_info_element *)(p + 2); ++ pHT_info = (struct ieee80211_ht_operation *)(p + 2); + +- if ((pHT_info->infos[0] & BIT(2)) && pregistrypriv->cbw40_enable) { ++ if ((pHT_info->ht_param & IEEE80211_HT_PARAM_CHAN_WIDTH_ANY) && ++ pregistrypriv->cbw40_enable) { + new_bwmode = HT_CHANNEL_WIDTH_40; + +- switch (pHT_info->infos[0] & 0x3) { +- case 1: ++ switch (pHT_info->ht_param & IEEE80211_HT_PARAM_CHA_SEC_OFFSET){ ++ case IEEE80211_HT_PARAM_CHA_SEC_ABOVE: + new_ch_offset = HAL_PRIME_CHNL_OFFSET_LOWER; + break; +- case 3: ++ case IEEE80211_HT_PARAM_CHA_SEC_BELOW: + new_ch_offset = HAL_PRIME_CHNL_OFFSET_UPPER; + break; + default: +@@ -786,7 +787,7 @@ void HT_info_handler23a(struct rtw_adapter *padapter, u8 *p) + if (phtpriv->ht_option == false) + return; + +- if (p[1] > sizeof(struct HT_info_element)) ++ if (p[1] != sizeof(struct ieee80211_ht_operation)) + return; + + pmlmeinfo->HT_info_enable = 1; +@@ -883,7 +884,7 @@ int rtw_check_bcn_info23a(struct rtw_adapter *Adapter, + struct ieee80211_mgmt *mgmt, u32 pkt_len) + { + struct wlan_network *cur_network = &Adapter->mlmepriv.cur_network; +- struct HT_info_element *pht_info; ++ struct ieee80211_ht_operation *pht_info; + struct ieee80211_ht_cap *pht_cap; + struct wlan_bssid_ex *bssid; + unsigned short val16; +@@ -952,8 +953,8 @@ int rtw_check_bcn_info23a(struct rtw_adapter *Adapter, + /* parsing HT_INFO_IE */ + p = cfg80211_find_ie(WLAN_EID_HT_OPERATION, pie, pie_len); + if (p && p[1] > 0) { +- pht_info = (struct HT_info_element *)(p + 2); +- ht_info_infos_0 = pht_info->infos[0]; ++ pht_info = (struct ieee80211_ht_operation *)(p + 2); ++ ht_info_infos_0 = pht_info->ht_param; + } else { + pht_info = NULL; + ht_info_infos_0 = 0; +@@ -985,7 +986,7 @@ int rtw_check_bcn_info23a(struct rtw_adapter *Adapter, + p = cfg80211_find_ie(WLAN_EID_HT_OPERATION, pie, pie_len); + + if (pht_info) +- bcn_channel = pht_info->primary_channel; ++ bcn_channel = pht_info->primary_chan; + else { /* we don't find channel IE, so don't check it */ + DBG_8723A("Oops: %s we don't find channel IE, so don't " + "check it\n", __func__); +diff --git a/drivers/staging/rtl8723au/include/rtw_mlme_ext.h b/drivers/staging/rtl8723au/include/rtw_mlme_ext.h +index 57622fb..368e57d 100644 +--- a/drivers/staging/rtl8723au/include/rtw_mlme_ext.h ++++ b/drivers/staging/rtl8723au/include/rtw_mlme_ext.h +@@ -367,7 +367,7 @@ struct mlme_ext_info + struct ADDBA_request ADDBA_req; + struct WMM_para_element WMM_param; + struct ieee80211_ht_cap ht_cap; +- struct HT_info_element HT_info; ++ struct ieee80211_ht_operation HT_info; + struct wlan_bssid_ex network;/* join network or bss_network, if in ap mode, it is the same to cur_network.network */ + struct FW_Sta_Info FW_sta_info[NUM_STA]; + }; +diff --git a/drivers/staging/rtl8723au/include/rtw_rf.h b/drivers/staging/rtl8723au/include/rtw_rf.h +index 91a0a22..a7de714 100644 +--- a/drivers/staging/rtl8723au/include/rtw_rf.h ++++ b/drivers/staging/rtl8723au/include/rtw_rf.h +@@ -89,17 +89,6 @@ enum ht_channel_width { + HT_CHANNEL_WIDTH_10 = 4, + }; + +-/* */ +-/* Represent Extention Channel Offset in HT Capabilities */ +-/* This is available only in 40Mhz mode. */ +-/* */ +-enum { +- HT_EXTCHNL_OFFSET_NO_EXT = 0, +- HT_EXTCHNL_OFFSET_UPPER = 1, +- HT_EXTCHNL_OFFSET_NO_DEF = 2, +- HT_EXTCHNL_OFFSET_LOWER = 3, +-}; +- + /* 2007/11/15 MH Define different RF type. */ + enum { + RF_1T2R = 0, +diff --git a/drivers/staging/rtl8723au/include/wifi.h b/drivers/staging/rtl8723au/include/wifi.h +index 6d221df..4ab28e5 100644 +--- a/drivers/staging/rtl8723au/include/wifi.h ++++ b/drivers/staging/rtl8723au/include/wifi.h +@@ -63,17 +63,6 @@ + Below is the definition for 802.11n + ------------------------------------------------------------------------------*/ + +-/* struct rtw_ieee80211_ht_cap - HT additional information +- * +- * This structure refers to "HT information element" as +- * described in 802.11n draft section 7.3.2.53 +- */ +-struct HT_info_element { +- unsigned char primary_channel; +- unsigned char infos[5]; +- unsigned char MCS_rate[16]; +-} __packed; +- + struct AC_param { + unsigned char ACI_AIFSN; + unsigned char CW; diff --git a/debian/patches/features/all/r8723au/0015-staging-rtl8723au-Don-t-carry-ht_cap_info-and-ht_par.patch b/debian/patches/features/all/r8723au/0015-staging-rtl8723au-Don-t-carry-ht_cap_info-and-ht_par.patch new file mode 100644 index 000000000..bf8fa0546 --- /dev/null +++ b/debian/patches/features/all/r8723au/0015-staging-rtl8723au-Don-t-carry-ht_cap_info-and-ht_par.patch @@ -0,0 +1,146 @@ +From: Jes Sorensen +Date: Sat, 31 May 2014 18:05:14 +0200 +Subject: [015/249] staging: rtl8723au: Don't carry ht_cap_info and ht_param in + struct wlan_bcn_info +Origin: https://git.kernel.org/linus/ed08b4de7c26a898b9deb65ee46c5d7eaf2bdd62 + +These were just stored to check whether the beacon info had changed +and print a debug message in this case. If we ever need this again, we +can determine this change differently. + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_ieee80211.c | 22 ------------- + drivers/staging/rtl8723au/core/rtw_wlan_util.c | 43 ++----------------------- + drivers/staging/rtl8723au/include/wlan_bssdef.h | 2 -- + 3 files changed, 3 insertions(+), 64 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_ieee80211.c b/drivers/staging/rtl8723au/core/rtw_ieee80211.c +index 69d2423..2740639 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ieee80211.c ++++ b/drivers/staging/rtl8723au/core/rtw_ieee80211.c +@@ -859,9 +859,6 @@ void rtw_get_bcn_info23a(struct wlan_network *pnetwork) + u8 bencrypt = 0; + /* u8 wpa_ie[255], rsn_ie[255]; */ + u16 wpa_len = 0, rsn_len = 0; +- struct ieee80211_ht_operation *pht_info; +- struct ieee80211_ht_cap *pht_cap; +- const u8 *p; + + cap = get_unaligned_le16( + rtw_get_capability23a_from_ie(pnetwork->network.IEs)); +@@ -901,25 +898,6 @@ void rtw_get_bcn_info23a(struct wlan_network *pnetwork) + rtw_get_cipher_info(pnetwork); + + /* get bwmode and ch_offset */ +- /* parsing HT_CAP_IE */ +- p = cfg80211_find_ie(WLAN_EID_HT_CAPABILITY, +- pnetwork->network.IEs + _FIXED_IE_LENGTH_, +- pnetwork->network.IELength - _FIXED_IE_LENGTH_); +- if (p && p[1] > 0) { +- pht_cap = (struct ieee80211_ht_cap *)(p + 2); +- pnetwork->BcnInfo.ht_cap_info = pht_cap->cap_info; +- } else +- pnetwork->BcnInfo.ht_cap_info = 0; +- +- /* parsing HT_INFO_IE */ +- p = cfg80211_find_ie(WLAN_EID_HT_OPERATION, +- pnetwork->network.IEs + _FIXED_IE_LENGTH_, +- pnetwork->network.IELength - _FIXED_IE_LENGTH_); +- if (p && p[1] > 0) { +- pht_info = (struct ieee80211_ht_operation *)(p + 2); +- pnetwork->BcnInfo.ht_info_infos_0 = pht_info->ht_param; +- } else +- pnetwork->BcnInfo.ht_info_infos_0 = 0; + } + + /* show MCS rate, unit: 100Kbps */ +diff --git a/drivers/staging/rtl8723au/core/rtw_wlan_util.c b/drivers/staging/rtl8723au/core/rtw_wlan_util.c +index 6d69811..8c007cd 100644 +--- a/drivers/staging/rtl8723au/core/rtw_wlan_util.c ++++ b/drivers/staging/rtl8723au/core/rtw_wlan_util.c +@@ -885,15 +885,12 @@ int rtw_check_bcn_info23a(struct rtw_adapter *Adapter, + { + struct wlan_network *cur_network = &Adapter->mlmepriv.cur_network; + struct ieee80211_ht_operation *pht_info; +- struct ieee80211_ht_cap *pht_cap; + struct wlan_bssid_ex *bssid; + unsigned short val16; + u16 wpa_len = 0, rsn_len = 0; + u8 encryp_protocol; + int group_cipher = 0, pairwise_cipher = 0, is_8021x = 0, r; + u32 bcn_channel; +- unsigned short ht_cap_info; +- unsigned char ht_info_infos_0; + int len, pie_len, ie_offset; + const u8 *p; + u8 *pie; +@@ -941,41 +938,6 @@ int rtw_check_bcn_info23a(struct rtw_adapter *Adapter, + pie = bssid->IEs + ie_offset; + pie_len = pkt_len - ie_offset; + +- p = cfg80211_find_ie(WLAN_EID_HT_CAPABILITY, pie, pie_len); +- if (p && p[1] > 0) { +- pht_cap = (struct ieee80211_ht_cap *)(p + 2); +- ht_cap_info = pht_cap->cap_info; +- } else { +- pht_cap = NULL; +- ht_cap_info = 0; +- } +- +- /* parsing HT_INFO_IE */ +- p = cfg80211_find_ie(WLAN_EID_HT_OPERATION, pie, pie_len); +- if (p && p[1] > 0) { +- pht_info = (struct ieee80211_ht_operation *)(p + 2); +- ht_info_infos_0 = pht_info->ht_param; +- } else { +- pht_info = NULL; +- ht_info_infos_0 = 0; +- } +- +- if (ht_cap_info != cur_network->BcnInfo.ht_cap_info || +- ((ht_info_infos_0 & 0x03) != +- (cur_network->BcnInfo.ht_info_infos_0 & 0x03))) { +- DBG_8723A("%s bcn now: ht_cap_info:%x ht_info_infos_0:%x\n", +- __func__, ht_cap_info, ht_info_infos_0); +- DBG_8723A("%s bcn link: ht_cap_info:%x ht_info_infos_0:%x\n", +- __func__, cur_network->BcnInfo.ht_cap_info, +- cur_network->BcnInfo.ht_info_infos_0); +- DBG_8723A("%s bw mode change, disconnect\n", __func__); +- /* bcn_info_update */ +- cur_network->BcnInfo.ht_cap_info = ht_cap_info; +- cur_network->BcnInfo.ht_info_infos_0 = ht_info_infos_0; +- /* to do : need to check that whether modify related +- register of BB or not */ +- } +- + /* Checking for channel */ + p = cfg80211_find_ie(WLAN_EID_DS_PARAMS, pie, pie_len); + if (p) +@@ -985,9 +947,10 @@ int rtw_check_bcn_info23a(struct rtw_adapter *Adapter, + info for channel */ + p = cfg80211_find_ie(WLAN_EID_HT_OPERATION, pie, pie_len); + +- if (pht_info) ++ if (p && p[1] > 0) { ++ pht_info = (struct ieee80211_ht_operation *)(p + 2); + bcn_channel = pht_info->primary_chan; +- else { /* we don't find channel IE, so don't check it */ ++ } else { /* we don't find channel IE, so don't check it */ + DBG_8723A("Oops: %s we don't find channel IE, so don't " + "check it\n", __func__); + bcn_channel = Adapter->mlmeextpriv.cur_channel; +diff --git a/drivers/staging/rtl8723au/include/wlan_bssdef.h b/drivers/staging/rtl8723au/include/wlan_bssdef.h +index 664015d..b717687 100644 +--- a/drivers/staging/rtl8723au/include/wlan_bssdef.h ++++ b/drivers/staging/rtl8723au/include/wlan_bssdef.h +@@ -83,8 +83,6 @@ struct wlan_bcn_info { + int is_8021x; + + /* bwmode 20/40 and ch_offset UP/LOW */ +- unsigned short ht_cap_info; +- unsigned char ht_info_infos_0; + }; + + struct wlan_bssid_ex { diff --git a/debian/patches/features/all/r8723au/0016-staging-rtl8723au-rtw_check_bcn_info23a-Use-capabili.patch b/debian/patches/features/all/r8723au/0016-staging-rtl8723au-rtw_check_bcn_info23a-Use-capabili.patch new file mode 100644 index 000000000..6bcbd462c --- /dev/null +++ b/debian/patches/features/all/r8723au/0016-staging-rtl8723au-rtw_check_bcn_info23a-Use-capabili.patch @@ -0,0 +1,25 @@ +From: Jes Sorensen +Date: Sat, 31 May 2014 18:05:15 +0200 +Subject: [016/249] staging: rtl8723au: rtw_check_bcn_info23a(): Use capability + bit define +Origin: https://git.kernel.org/linus/a665bcc2441fcf30636c2792c125a4d07d44d617 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_wlan_util.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_wlan_util.c b/drivers/staging/rtl8723au/core/rtw_wlan_util.c +index 8c007cd..67fb7ec 100644 +--- a/drivers/staging/rtl8723au/core/rtw_wlan_util.c ++++ b/drivers/staging/rtl8723au/core/rtw_wlan_util.c +@@ -995,7 +995,7 @@ int rtw_check_bcn_info23a(struct rtw_adapter *Adapter, + /* check encryption info */ + val16 = rtw_get_capability23a(bssid); + +- if (val16 & BIT(4)) ++ if (val16 & WLAN_CAPABILITY_PRIVACY) + bssid->Privacy = 1; + else + bssid->Privacy = 0; diff --git a/debian/patches/features/all/r8723au/0017-staging-rtl8723au-Remmove-buddy-adapter-linking.patch b/debian/patches/features/all/r8723au/0017-staging-rtl8723au-Remmove-buddy-adapter-linking.patch new file mode 100644 index 000000000..88bf61717 --- /dev/null +++ b/debian/patches/features/all/r8723au/0017-staging-rtl8723au-Remmove-buddy-adapter-linking.patch @@ -0,0 +1,168 @@ +From: Jes Sorensen +Date: Sat, 31 May 2014 18:05:16 +0200 +Subject: [017/249] staging: rtl8723au: Remmove buddy-adapter linking +Origin: https://git.kernel.org/linus/e3916153ea15f97a343e463c4b69bd819229d41a + +This sort of stuff should be handled by the bonding driver + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_pwrctrl.c | 16 ---------------- + drivers/staging/rtl8723au/core/rtw_wlan_util.c | 25 ------------------------- + drivers/staging/rtl8723au/include/drv_types.h | 3 --- + drivers/staging/rtl8723au/os_dep/os_intfs.c | 5 ----- + drivers/staging/rtl8723au/os_dep/usb_intf.c | 12 ++---------- + 5 files changed, 2 insertions(+), 59 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_pwrctrl.c b/drivers/staging/rtl8723au/core/rtw_pwrctrl.c +index dbd01b6..7dc7c90 100644 +--- a/drivers/staging/rtl8723au/core/rtw_pwrctrl.c ++++ b/drivers/staging/rtl8723au/core/rtw_pwrctrl.c +@@ -114,7 +114,6 @@ int ips_leave23a(struct rtw_adapter * padapter) + + static bool rtw_pwr_unassociated_idle(struct rtw_adapter *adapter) + { +- struct rtw_adapter *buddy = adapter->pbuddy_adapter; + struct mlme_priv *pmlmepriv = &adapter->mlmepriv; + struct xmit_priv *pxmit_priv = &adapter->xmitpriv; + +@@ -130,21 +129,6 @@ static bool rtw_pwr_unassociated_idle(struct rtw_adapter *adapter) + goto exit; + } + +- /* consider buddy, if exist */ +- if (buddy) { +- struct mlme_priv *b_pmlmepriv = &buddy->mlmepriv; +- +- if (check_fwstate(b_pmlmepriv, +- WIFI_ASOC_STATE|WIFI_SITE_MONITOR) || +- check_fwstate(b_pmlmepriv, +- WIFI_UNDER_LINKING|WIFI_UNDER_WPS) || +- check_fwstate(b_pmlmepriv, WIFI_AP_STATE) || +- check_fwstate(b_pmlmepriv, +- WIFI_ADHOC_MASTER_STATE|WIFI_ADHOC_STATE)) { +- goto exit; +- } +- } +- + if (pxmit_priv->free_xmitbuf_cnt != NR_XMITBUFF || + pxmit_priv->free_xmit_extbuf_cnt != NR_XMIT_EXTBUFF) { + DBG_8723A_LEVEL(_drv_always_, +diff --git a/drivers/staging/rtl8723au/core/rtw_wlan_util.c b/drivers/staging/rtl8723au/core/rtw_wlan_util.c +index 67fb7ec..a9fa109 100644 +--- a/drivers/staging/rtl8723au/core/rtw_wlan_util.c ++++ b/drivers/staging/rtl8723au/core/rtw_wlan_util.c +@@ -1644,28 +1644,3 @@ void process_addba_req23a(struct rtw_adapter *padapter, + true : false; + } + } +- +-static struct rtw_adapter *pbuddy_padapter; +- +-int rtw_handle_dualmac23a(struct rtw_adapter *adapter, bool init) +-{ +- int status = _SUCCESS; +- +- if (init) { +- if (pbuddy_padapter == NULL) { +- pbuddy_padapter = adapter; +- DBG_8723A("%s(): pbuddy_padapter == NULL, " +- "Set pbuddy_padapter\n", __func__); +- } else { +- adapter->pbuddy_adapter = pbuddy_padapter; +- pbuddy_padapter->pbuddy_adapter = adapter; +- /* clear global value */ +- pbuddy_padapter = NULL; +- DBG_8723A("%s(): pbuddy_padapter exist, " +- "Exchange Information\n", __func__); +- } +- } else +- pbuddy_padapter = NULL; +- +- return status; +-} +diff --git a/drivers/staging/rtl8723au/include/drv_types.h b/drivers/staging/rtl8723au/include/drv_types.h +index a94857d..3ef9d7a 100644 +--- a/drivers/staging/rtl8723au/include/drv_types.h ++++ b/drivers/staging/rtl8723au/include/drv_types.h +@@ -259,7 +259,6 @@ struct rtw_adapter { + u8 bWritePortCancel; + /* The driver will show the desired chan nor when this flag is 1. */ + u8 bNotifyChannelChange; +- struct rtw_adapter *pbuddy_adapter; + + /* extend to support multi interface */ + /* IFACE_ID0 is equals to PRIMARY_ADAPTER */ +@@ -269,8 +268,6 @@ struct rtw_adapter { + + #define adapter_to_dvobj(adapter) (adapter->dvobj) + +-int rtw_handle_dualmac23a(struct rtw_adapter *adapter, bool init); +- + static inline u8 *myid(struct eeprom_priv *peepriv) + { + return peepriv->mac_addr; +diff --git a/drivers/staging/rtl8723au/os_dep/os_intfs.c b/drivers/staging/rtl8723au/os_dep/os_intfs.c +index 1fb3438..ee3d62c 100644 +--- a/drivers/staging/rtl8723au/os_dep/os_intfs.c ++++ b/drivers/staging/rtl8723au/os_dep/os_intfs.c +@@ -584,11 +584,6 @@ int rtw_free_drv_sw23a(struct rtw_adapter *padapter) + kfree(padapter->HalData); + padapter->HalData = NULL; + +- RT_TRACE(_module_os_intfs_c_, _drv_info_, ("<== rtw_free_drv_sw23a\n")); +- +- /* clear pbuddy_adapter to avoid access wrong pointer. */ +- if (padapter->pbuddy_adapter != NULL) +- padapter->pbuddy_adapter->pbuddy_adapter = NULL; + RT_TRACE(_module_os_intfs_c_, _drv_info_, ("-rtw_free_drv_sw23a\n")); + return _SUCCESS; + } +diff --git a/drivers/staging/rtl8723au/os_dep/usb_intf.c b/drivers/staging/rtl8723au/os_dep/usb_intf.c +index 8b25c1a..d0a3a1e6 100644 +--- a/drivers/staging/rtl8723au/os_dep/usb_intf.c ++++ b/drivers/staging/rtl8723au/os_dep/usb_intf.c +@@ -572,7 +572,7 @@ static struct rtw_adapter *rtw_usb_if1_init(struct dvobj_priv *dvobj, + + pnetdev = rtw_init_netdev23a(padapter); + if (!pnetdev) +- goto handle_dualmac; ++ goto free_adapter; + padapter = netdev_priv(pnetdev); + + padapter->dvobj = dvobj; +@@ -583,13 +583,10 @@ static struct rtw_adapter *rtw_usb_if1_init(struct dvobj_priv *dvobj, + + rtl8723au_set_hw_type(padapter); + +- if (rtw_handle_dualmac23a(padapter, 1) != _SUCCESS) +- goto free_adapter; +- + SET_NETDEV_DEV(pnetdev, dvobj_to_dev(dvobj)); + + if (rtw_wdev_alloc(padapter, dvobj_to_dev(dvobj))) +- goto handle_dualmac; ++ goto free_adapter; + + /* step 2. allocate HalData */ + padapter->HalData = kzalloc(sizeof(struct hal_data_8723a), GFP_KERNEL); +@@ -650,9 +647,6 @@ free_wdev: + rtw_wdev_unregister(padapter->rtw_wdev); + rtw_wdev_free(padapter->rtw_wdev); + } +-handle_dualmac: +- if (status != _SUCCESS) +- rtw_handle_dualmac23a(padapter, 0); + free_adapter: + if (status != _SUCCESS) { + if (pnetdev) +@@ -684,8 +678,6 @@ static void rtw_usb_if1_deinit(struct rtw_adapter *if1) + DBG_8723A("+r871xu_dev_remove, hw_init_completed =%d\n", + if1->hw_init_completed); + +- rtw_handle_dualmac23a(if1, 0); +- + if (if1->rtw_wdev) { + rtw_wdev_unregister(if1->rtw_wdev); + rtw_wdev_free(if1->rtw_wdev); diff --git a/debian/patches/features/all/r8723au/0018-staging-rtl8723au-Rewrite-update_beacon23a_info-tto-.patch b/debian/patches/features/all/r8723au/0018-staging-rtl8723au-Rewrite-update_beacon23a_info-tto-.patch new file mode 100644 index 000000000..d184dd3d4 --- /dev/null +++ b/debian/patches/features/all/r8723au/0018-staging-rtl8723au-Rewrite-update_beacon23a_info-tto-.patch @@ -0,0 +1,144 @@ +From: Jes Sorensen +Date: Sat, 31 May 2014 18:05:17 +0200 +Subject: [018/249] staging: rtl8723au: Rewrite update_beacon23a_info() tto use + cfg80211_find_ie() +Origin: https://git.kernel.org/linus/7882ef454c613c8e79700ca1c81274357e1286ff + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 5 ++-- + drivers/staging/rtl8723au/core/rtw_wlan_util.c | 38 ++++++++++-------------- + drivers/staging/rtl8723au/include/rtw_mlme_ext.h | 9 +++--- + 3 files changed, 22 insertions(+), 30 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index 0dc49d3..bf0d62e 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -789,7 +789,6 @@ OnBeacon23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame) + struct sta_priv *pstapriv = &padapter->stapriv; + struct sk_buff *skb = precv_frame->pkt; + struct ieee80211_mgmt *mgmt = (struct ieee80211_mgmt *) skb->data; +- u8 *pframe = skb->data; + int pkt_len = skb->len; + struct wlan_bssid_ex *pbss; + int ret = _SUCCESS; +@@ -869,7 +868,7 @@ OnBeacon23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame) + the number of the beacon received */ + if ((sta_rx_pkts(psta) & 0xf) == 0) { + /* DBG_8723A("update_bcn_info\n"); */ +- update_beacon23a_info(padapter, pframe, ++ update_beacon23a_info(padapter, mgmt, + pkt_len, psta); + } + } +@@ -881,7 +880,7 @@ OnBeacon23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame) + number of the beacon received */ + if ((sta_rx_pkts(psta) & 0xf) == 0) { + /* DBG_8723A("update_bcn_info\n"); */ +- update_beacon23a_info(padapter, pframe, ++ update_beacon23a_info(padapter, mgmt, + pkt_len, psta); + } + } else { +diff --git a/drivers/staging/rtl8723au/core/rtw_wlan_util.c b/drivers/staging/rtl8723au/core/rtw_wlan_util.c +index a9fa109..82904d0 100644 +--- a/drivers/staging/rtl8723au/core/rtw_wlan_util.c ++++ b/drivers/staging/rtl8723au/core/rtw_wlan_util.c +@@ -633,7 +633,7 @@ void WMMOnAssocRsp23a(struct rtw_adapter *padapter) + return; + } + +-static void bwmode_update_check(struct rtw_adapter *padapter, u8 *p) ++static void bwmode_update_check(struct rtw_adapter *padapter, const u8 *p) + { + struct ieee80211_ht_operation *pHT_info; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; +@@ -774,7 +774,7 @@ void HT_caps_handler23a(struct rtw_adapter *padapter, u8 *p) + return; + } + +-void HT_info_handler23a(struct rtw_adapter *padapter, u8 *p) ++void HT_info_handler23a(struct rtw_adapter *padapter, const u8 *p) + { + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; +@@ -830,7 +830,7 @@ void HTOnAssocRsp23a(struct rtw_adapter *padapter) + rtl8723a_set_ampdu_factor(padapter, max_AMPDU_len); + } + +-void ERP_IE_handler23a(struct rtw_adapter *padapter, u8 *p) ++void ERP_IE_handler23a(struct rtw_adapter *padapter, const u8 *p) + { + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; +@@ -1091,32 +1091,24 @@ _mismatch: + return _FAIL; + } + +-void update_beacon23a_info(struct rtw_adapter *padapter, u8 *pframe, ++void update_beacon23a_info(struct rtw_adapter *padapter, ++ struct ieee80211_mgmt *mgmt, + uint pkt_len, struct sta_info *psta) + { +- unsigned int i; + unsigned int len; +- u8 *p; ++ const u8 *p; + +- len = pkt_len - +- (_BEACON_IE_OFFSET_ + sizeof(struct ieee80211_hdr_3addr)); ++ len = pkt_len - offsetof(struct ieee80211_mgmt, u.beacon.variable); + +- for (i = 0; i < len;) { +- p = (u8 *)(pframe + (_BEACON_IE_OFFSET_ + sizeof(struct ieee80211_hdr_3addr)) + i); ++ p = cfg80211_find_ie(WLAN_EID_HT_OPERATION, mgmt->u.beacon.variable, ++ len); ++ if (p) ++ bwmode_update_check(padapter, p); + +- switch (p[0]) { +- case WLAN_EID_HT_OPERATION: /* HT info */ +- /* HT_info_handler23a(padapter, pIE); */ +- bwmode_update_check(padapter, p); +- break; +- case WLAN_EID_ERP_INFO: +- ERP_IE_handler23a(padapter, p); +- VCS_update23a(padapter, psta); +- break; +- default: +- break; +- } +- i += (p[1] + 2); ++ p = cfg80211_find_ie(WLAN_EID_ERP_INFO, mgmt->u.beacon.variable, len); ++ if (p) { ++ ERP_IE_handler23a(padapter, p); ++ VCS_update23a(padapter, psta); + } + } + +diff --git a/drivers/staging/rtl8723au/include/rtw_mlme_ext.h b/drivers/staging/rtl8723au/include/rtw_mlme_ext.h +index 368e57d..b8a108b 100644 +--- a/drivers/staging/rtl8723au/include/rtw_mlme_ext.h ++++ b/drivers/staging/rtl8723au/include/rtw_mlme_ext.h +@@ -514,14 +514,15 @@ int WMM_param_handler23a(struct rtw_adapter *padapter, u8 *p); + void WMMOnAssocRsp23a(struct rtw_adapter *padapter); + + void HT_caps_handler23a(struct rtw_adapter *padapter, u8 *p); +-void HT_info_handler23a(struct rtw_adapter *padapter, u8 *p); ++void HT_info_handler23a(struct rtw_adapter *padapter, const u8 *p); + void HTOnAssocRsp23a(struct rtw_adapter *padapter); + +-void ERP_IE_handler23a(struct rtw_adapter *padapter, u8 *p); ++void ERP_IE_handler23a(struct rtw_adapter *padapter, const u8 *p); + void VCS_update23a(struct rtw_adapter *padapter, struct sta_info *psta); + +-void update_beacon23a_info(struct rtw_adapter *padapter, u8 *pframe, uint len, +- struct sta_info *psta); ++void update_beacon23a_info(struct rtw_adapter *padapter, ++ struct ieee80211_mgmt *mgmt, uint len, ++ struct sta_info *psta); + int rtw_check_bcn_info23a(struct rtw_adapter *Adapter, + struct ieee80211_mgmt *mgmt, u32 packet_len); + void update_IOT_info23a(struct rtw_adapter *padapter); diff --git a/debian/patches/features/all/r8723au/0019-staging-rtl8723au-collect_bss_info23a-Collect-beacon.patch b/debian/patches/features/all/r8723au/0019-staging-rtl8723au-collect_bss_info23a-Collect-beacon.patch new file mode 100644 index 000000000..40fe600e3 --- /dev/null +++ b/debian/patches/features/all/r8723au/0019-staging-rtl8723au-collect_bss_info23a-Collect-beacon.patch @@ -0,0 +1,58 @@ +From: Jes Sorensen +Date: Sat, 31 May 2014 18:05:18 +0200 +Subject: [019/249] staging: rtl8723au: collect_bss_info23a(): Collect + beacon_interval correct +Origin: https://git.kernel.org/linus/5b124b1aa2979b1319d6434464c318ef0111ceb4 + +Only retrieve beacon_interval from frames where it is present. This +avoids setting BeaconPeriod to garbage for other frame types. + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 11 ++++++++--- + 1 file changed, 8 insertions(+), 3 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index bf0d62e..fde8a32 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -4547,20 +4547,28 @@ int collect_bss_info23a(struct rtw_adapter *padapter, + bssid->reserved = 1; + ie_offset = offsetof(struct ieee80211_mgmt, u.beacon.variable); + capab_info = mgmt->u.beacon.capab_info; ++ bssid->BeaconPeriod = ++ get_unaligned_le16(&mgmt->u.beacon.beacon_int); + } else if (ieee80211_is_probe_req(mgmt->frame_control)) { + ie_offset = offsetof(struct ieee80211_mgmt, + u.probe_req.variable); + bssid->reserved = 2; + capab_info = 0; ++ bssid->BeaconPeriod = ++ padapter->registrypriv.dev_network.BeaconPeriod; + } else if (ieee80211_is_probe_resp(mgmt->frame_control)) { + ie_offset = offsetof(struct ieee80211_mgmt, + u.probe_resp.variable); + bssid->reserved = 3; + capab_info = mgmt->u.probe_resp.capab_info; ++ bssid->BeaconPeriod = ++ get_unaligned_le16(&mgmt->u.probe_resp.beacon_int); + } else { + bssid->reserved = 0; + ie_offset = offsetof(struct ieee80211_mgmt, u.beacon.variable); + capab_info = mgmt->u.beacon.capab_info; ++ bssid->BeaconPeriod = ++ padapter->registrypriv.dev_network.BeaconPeriod; + } + ie_offset -= offsetof(struct ieee80211_mgmt, u); + +@@ -4654,9 +4662,6 @@ int collect_bss_info23a(struct rtw_adapter *padapter, + return _SUCCESS; + } + +- bssid->BeaconPeriod = get_unaligned_le16( +- rtw_get_beacon_interval23a_from_ie(bssid->IEs)); +- + if (capab_info & BIT(0)) { + bssid->ifmode = NL80211_IFTYPE_STATION; + ether_addr_copy(bssid->MacAddress, mgmt->sa); diff --git a/debian/patches/features/all/r8723au/0020-staging-rtl8723au-collect_bss_info23a-ieee80211_mgmt.patch b/debian/patches/features/all/r8723au/0020-staging-rtl8723au-collect_bss_info23a-ieee80211_mgmt.patch new file mode 100644 index 000000000..7f8744f08 --- /dev/null +++ b/debian/patches/features/all/r8723au/0020-staging-rtl8723au-collect_bss_info23a-ieee80211_mgmt.patch @@ -0,0 +1,59 @@ +From: Jes Sorensen +Date: Sat, 31 May 2014 18:05:19 +0200 +Subject: [020/249] staging: rtl8723au: collect_bss_info23a(): ieee80211_mgmt + capab_info is little endian +Origin: https://git.kernel.org/linus/c2b8047aff855bfbcb5a2ff478465c01bb82fda5 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index fde8a32..1c22d1b 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -4546,7 +4546,7 @@ int collect_bss_info23a(struct rtw_adapter *padapter, + if (ieee80211_is_beacon(mgmt->frame_control)) { + bssid->reserved = 1; + ie_offset = offsetof(struct ieee80211_mgmt, u.beacon.variable); +- capab_info = mgmt->u.beacon.capab_info; ++ capab_info = get_unaligned_le16(&mgmt->u.beacon.capab_info); + bssid->BeaconPeriod = + get_unaligned_le16(&mgmt->u.beacon.beacon_int); + } else if (ieee80211_is_probe_req(mgmt->frame_control)) { +@@ -4560,13 +4560,13 @@ int collect_bss_info23a(struct rtw_adapter *padapter, + ie_offset = offsetof(struct ieee80211_mgmt, + u.probe_resp.variable); + bssid->reserved = 3; +- capab_info = mgmt->u.probe_resp.capab_info; ++ capab_info = get_unaligned_le16(&mgmt->u.probe_resp.capab_info); + bssid->BeaconPeriod = + get_unaligned_le16(&mgmt->u.probe_resp.beacon_int); + } else { + bssid->reserved = 0; + ie_offset = offsetof(struct ieee80211_mgmt, u.beacon.variable); +- capab_info = mgmt->u.beacon.capab_info; ++ capab_info = get_unaligned_le16(&mgmt->u.beacon.capab_info); + bssid->BeaconPeriod = + padapter->registrypriv.dev_network.BeaconPeriod; + } +@@ -4662,7 +4662,7 @@ int collect_bss_info23a(struct rtw_adapter *padapter, + return _SUCCESS; + } + +- if (capab_info & BIT(0)) { ++ if (capab_info & WLAN_CAPABILITY_ESS) { + bssid->ifmode = NL80211_IFTYPE_STATION; + ether_addr_copy(bssid->MacAddress, mgmt->sa); + } else { +@@ -4670,7 +4670,7 @@ int collect_bss_info23a(struct rtw_adapter *padapter, + ether_addr_copy(bssid->MacAddress, mgmt->bssid); + } + +- if (capab_info & BIT(4)) ++ if (capab_info & WLAN_CAPABILITY_PRIVACY) + bssid->Privacy = 1; + else + bssid->Privacy = 0; diff --git a/debian/patches/features/all/r8723au/0021-staging-rtl8723au-rtw_update_ht_cap23a-Use-correct-m.patch b/debian/patches/features/all/r8723au/0021-staging-rtl8723au-rtw_update_ht_cap23a-Use-correct-m.patch new file mode 100644 index 000000000..0a379a35c --- /dev/null +++ b/debian/patches/features/all/r8723au/0021-staging-rtl8723au-rtw_update_ht_cap23a-Use-correct-m.patch @@ -0,0 +1,42 @@ +From: Jes Sorensen +Date: Tue, 3 Jun 2014 23:41:22 +0200 +Subject: [021/249] staging: rtl8723au: rtw_update_ht_cap23a(): Use correct + mask when determining 40MHz channel location +Origin: https://git.kernel.org/linus/b2775415844e89d528a0c40f81caedd6aad595f7 + +commit 4dc5f8bab2663b902b9cb0be29198dbbf38aa3fb +Author: Jes Sorensen +Date: Tue May 27 13:43:12 2014 +0200 + + staging: rtl8723au: Eliminate struct HT_info_element + + Yet another duplicate version of struct ieee80211_ht_operation + + Signed-off-by: Jes Sorensen + +introduced a bad error, applying the wrong value as the mask when +determining the location of the 40MHz channel, effectively making it +always determining it as not present. This caused hangs and delays +when running in 40MHz channel mode. + +This should get it right. + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c +index 9982886..76e1797 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c +@@ -2340,7 +2340,7 @@ void rtw_update_ht_cap23a(struct rtw_adapter *padapter, u8 *pie, uint ie_len) + /* switch to the 40M Hz mode accoring to the AP */ + pmlmeext->cur_bwmode = HT_CHANNEL_WIDTH_40; + switch (pmlmeinfo->HT_info.ht_param & +- IEEE80211_HT_PARAM_CHAN_WIDTH_ANY) { ++ IEEE80211_HT_PARAM_CHA_SEC_OFFSET) { + case IEEE80211_HT_PARAM_CHA_SEC_ABOVE: + pmlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_LOWER; + break; diff --git a/debian/patches/features/all/r8723au/0022-staging-rtl8723au-rtw_get_bcn_info23a-Use-cfg80211_-.patch b/debian/patches/features/all/r8723au/0022-staging-rtl8723au-rtw_get_bcn_info23a-Use-cfg80211_-.patch new file mode 100644 index 000000000..5c5b7d44c --- /dev/null +++ b/debian/patches/features/all/r8723au/0022-staging-rtl8723au-rtw_get_bcn_info23a-Use-cfg80211_-.patch @@ -0,0 +1,64 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:15:59 +0200 +Subject: [022/249] staging: rtl8723au: rtw_get_bcn_info23a(): Use cfg80211_* + to obtain crypto info +Origin: https://git.kernel.org/linus/54ddd2266a429e801382a32733177ec33384c8a0 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_ieee80211.c | 29 +++++++++++++------------- + 1 file changed, 14 insertions(+), 15 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_ieee80211.c b/drivers/staging/rtl8723au/core/rtw_ieee80211.c +index 2740639..484272e 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ieee80211.c ++++ b/drivers/staging/rtl8723au/core/rtw_ieee80211.c +@@ -857,8 +857,9 @@ void rtw_get_bcn_info23a(struct wlan_network *pnetwork) + { + unsigned short cap; + u8 bencrypt = 0; +- /* u8 wpa_ie[255], rsn_ie[255]; */ +- u16 wpa_len = 0, rsn_len = 0; ++ int pie_len, ie_offset; ++ u8 *pie; ++ const u8 *p; + + cap = get_unaligned_le16( + rtw_get_capability23a_from_ie(pnetwork->network.IEs)); +@@ -868,24 +869,22 @@ void rtw_get_bcn_info23a(struct wlan_network *pnetwork) + } else + pnetwork->BcnInfo.encryp_protocol = ENCRYP_PROTOCOL_OPENSYS; + +- rtw_get_sec_ie23a(pnetwork->network.IEs, pnetwork->network.IELength, +- NULL, &rsn_len, NULL, &wpa_len); + RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_, + ("rtw_get_bcn_info23a: ssid =%s\n", pnetwork->network.Ssid.ssid)); +- RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_, +- ("rtw_get_bcn_info23a: wpa_len =%d rsn_len =%d\n", +- wpa_len, rsn_len)); +- RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_, +- ("rtw_get_bcn_info23a: ssid =%s\n", pnetwork->network.Ssid.ssid)); +- RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_, +- ("rtw_get_bcn_info23a: wpa_len =%d rsn_len =%d\n", +- wpa_len, rsn_len)); + +- if (rsn_len > 0) ++ ie_offset = offsetof(struct ieee80211_mgmt, u.beacon.variable) - ++ offsetof(struct ieee80211_mgmt, u); ++ pie = pnetwork->network.IEs + ie_offset; ++ pie_len = pnetwork->network.IELength - ie_offset; ++ ++ p = cfg80211_find_ie(WLAN_EID_RSN, pie, pie_len); ++ if (p && p[1]) { + pnetwork->BcnInfo.encryp_protocol = ENCRYP_PROTOCOL_WPA2; +- else if (wpa_len > 0) ++ } else if (cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT, ++ WLAN_OUI_TYPE_MICROSOFT_WPA, ++ pie, pie_len)) { + pnetwork->BcnInfo.encryp_protocol = ENCRYP_PROTOCOL_WPA; +- else { ++ } else { + if (bencrypt) + pnetwork->BcnInfo.encryp_protocol = ENCRYP_PROTOCOL_WEP; + } diff --git a/debian/patches/features/all/r8723au/0023-staging-rtl8723au-rtw_wlan_util.c-Use-cfg80211_-to-d.patch b/debian/patches/features/all/r8723au/0023-staging-rtl8723au-rtw_wlan_util.c-Use-cfg80211_-to-d.patch new file mode 100644 index 000000000..54f09b868 --- /dev/null +++ b/debian/patches/features/all/r8723au/0023-staging-rtl8723au-rtw_wlan_util.c-Use-cfg80211_-to-d.patch @@ -0,0 +1,45 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:00 +0200 +Subject: [023/249] staging: rtl8723au: rtw_wlan_util.c: Use cfg80211_* to + determine crypto +Origin: https://git.kernel.org/linus/77953edfac8dfc2c5b0d2007fdc64839c736e7a1 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_wlan_util.c | 13 ++++++------- + 1 file changed, 6 insertions(+), 7 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_wlan_util.c b/drivers/staging/rtl8723au/core/rtw_wlan_util.c +index 82904d0..043ba40 100644 +--- a/drivers/staging/rtl8723au/core/rtw_wlan_util.c ++++ b/drivers/staging/rtl8723au/core/rtw_wlan_util.c +@@ -887,7 +887,6 @@ int rtw_check_bcn_info23a(struct rtw_adapter *Adapter, + struct ieee80211_ht_operation *pht_info; + struct wlan_bssid_ex *bssid; + unsigned short val16; +- u16 wpa_len = 0, rsn_len = 0; + u8 encryp_protocol; + int group_cipher = 0, pairwise_cipher = 0, is_8021x = 0, r; + u32 bcn_channel; +@@ -1009,14 +1008,14 @@ int rtw_check_bcn_info23a(struct rtw_adapter *Adapter, + goto _mismatch; + } + +- rtw_get_sec_ie23a(bssid->IEs, bssid->IELength, NULL, &rsn_len, NULL, +- &wpa_len); +- +- if (rsn_len > 0) ++ p = cfg80211_find_ie(WLAN_EID_RSN, pie, pie_len); ++ if (p && p[1]) { + encryp_protocol = ENCRYP_PROTOCOL_WPA2; +- else if (wpa_len > 0) ++ } else if (cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT, ++ WLAN_OUI_TYPE_MICROSOFT_WPA, ++ pie, pie_len)) { + encryp_protocol = ENCRYP_PROTOCOL_WPA; +- else { ++ } else { + if (bssid->Privacy) + encryp_protocol = ENCRYP_PROTOCOL_WEP; + else diff --git a/debian/patches/features/all/r8723au/0024-staging-rtl8723au-Remove-obsolete-rtw_get_sec_ie23a.patch b/debian/patches/features/all/r8723au/0024-staging-rtl8723au-Remove-obsolete-rtw_get_sec_ie23a.patch new file mode 100644 index 000000000..e140e03e9 --- /dev/null +++ b/debian/patches/features/all/r8723au/0024-staging-rtl8723au-Remove-obsolete-rtw_get_sec_ie23a.patch @@ -0,0 +1,111 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:01 +0200 +Subject: [024/249] staging: rtl8723au: Remove obsolete rtw_get_sec_ie23a() +Origin: https://git.kernel.org/linus/0b548a5c4d55058393b27c888a5cd04610c95ee3 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_ieee80211.c | 75 -------------------------- + drivers/staging/rtl8723au/include/ieee80211.h | 2 - + 2 files changed, 77 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_ieee80211.c b/drivers/staging/rtl8723au/core/rtw_ieee80211.c +index 484272e..cbb1b85 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ieee80211.c ++++ b/drivers/staging/rtl8723au/core/rtw_ieee80211.c +@@ -621,81 +621,6 @@ int rtw_parse_wpa2_ie23a(const u8* rsn_ie, int rsn_ie_len, int *group_cipher, + return ret; + } + +-int rtw_get_sec_ie23a(u8 *in_ie, uint in_len, u8 *rsn_ie, u16 *rsn_len, +- u8 *wpa_ie, u16 *wpa_len) +-{ +- u8 authmode, sec_idx, i; +- uint cnt; +- +- +- /* Search required WPA or WPA2 IE and copy to sec_ie[ ] */ +- +- cnt = (_TIMESTAMP_ + _BEACON_ITERVAL_ + _CAPABILITY_); +- +- sec_idx = 0; +- +- while(cnt < in_len) { +- authmode = in_ie[cnt]; +- +- if ((authmode == WLAN_EID_VENDOR_SPECIFIC) && +- !memcmp(&in_ie[cnt+2], RTW_WPA_OUI23A_TYPE, 4)) { +- RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_, +- ("\n rtw_get_wpa_ie23a: sec_idx =%d " +- "in_ie[cnt+1]+2 =%d\n", +- sec_idx, in_ie[cnt + 1] + 2)); +- +- if (wpa_ie) { +- memcpy(wpa_ie, &in_ie[cnt], in_ie[cnt+1]+2); +- +- for (i = 0; i < (in_ie[cnt + 1] + 2); i = i + 8) { +- RT_TRACE(_module_rtl871x_mlme_c_, +- _drv_info_, +- ("\n %2x,%2x,%2x,%2x,%2x,%2x," +- "%2x,%2x\n", wpa_ie[i], +- wpa_ie[i + 1], wpa_ie[i + 2], +- wpa_ie[i + 3], wpa_ie[i + 4], +- wpa_ie[i + 5], wpa_ie[i + 6], +- wpa_ie[i + 7])); +- } +- } +- +- *wpa_len = in_ie[cnt + 1] + 2; +- cnt += in_ie[cnt + 1] + 2; /* get next */ +- } else { +- if (authmode == _WPA2_IE_ID_) { +- RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_, +- ("\n get_rsn_ie: sec_idx =%d in_ie" +- "[cnt+1]+2 =%d\n", sec_idx, +- in_ie[cnt + 1] + 2)); +- +- if (rsn_ie) { +- memcpy(rsn_ie, &in_ie[cnt], in_ie[cnt + 1] + 2); +- +- for (i = 0; i < (in_ie[cnt + 1] + 2); i = i + 8) { +- RT_TRACE(_module_rtl871x_mlme_c_, +- _drv_info_, +- ("\n %2x,%2x,%2x,%2x,%2x,%2x," +- "%2x,%2x\n", rsn_ie[i], +- rsn_ie[i + 1], rsn_ie[i + 2], +- rsn_ie[i + 3], rsn_ie[i + 4], +- rsn_ie[i + 5], rsn_ie[i + 6], +- rsn_ie[i + 7])); +- } +- } +- +- *rsn_len = in_ie[cnt + 1] + 2; +- cnt += in_ie[cnt + 1] + 2; /* get next */ +- } else { +- cnt += in_ie[cnt + 1] + 2; /* get next */ +- } +- } +- } +- +- +- +- return *rsn_len + *wpa_len; +-} +- + /** + * rtw_get_wps_attr23a - Search a specific WPS attribute from a given WPS IE + * @wps_ie: Address of WPS IE to search +diff --git a/drivers/staging/rtl8723au/include/ieee80211.h b/drivers/staging/rtl8723au/include/ieee80211.h +index 6f42d2d..3738978 100644 +--- a/drivers/staging/rtl8723au/include/ieee80211.h ++++ b/drivers/staging/rtl8723au/include/ieee80211.h +@@ -430,8 +430,6 @@ int rtw_get_wpa2_cipher_suite23a(const u8 *s); + int rtw_parse_wpa_ie23a(const u8* wpa_ie, int wpa_ie_len, int *group_cipher, int *pairwise_cipher, int *is_8021x); + int rtw_parse_wpa2_ie23a(const u8* wpa_ie, int wpa_ie_len, int *group_cipher, int *pairwise_cipher, int *is_8021x); + +-int rtw_get_sec_ie23a(u8 *in_ie,uint in_len,u8 *rsn_ie,u16 *rsn_len,u8 *wpa_ie,u16 *wpa_len); +- + const u8 *rtw_get_wps_attr23a(const u8 *wps_ie, uint wps_ielen, u16 target_attr_id ,u8 *buf_attr, u32 *len_attr); + const u8 *rtw_get_wps_attr_content23a(const u8 *wps_ie, uint wps_ielen, u16 target_attr_id ,u8 *buf_content, uint *len_content); + diff --git a/debian/patches/features/all/r8723au/0025-staging-rtl8723au-Declare-rtw_get_wpa-2-_cipher_suit.patch b/debian/patches/features/all/r8723au/0025-staging-rtl8723au-Declare-rtw_get_wpa-2-_cipher_suit.patch new file mode 100644 index 000000000..ccfb017e2 --- /dev/null +++ b/debian/patches/features/all/r8723au/0025-staging-rtl8723au-Declare-rtw_get_wpa-2-_cipher_suit.patch @@ -0,0 +1,84 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:02 +0200 +Subject: [025/249] staging: rtl8723au: Declare rtw_get_wpa{2, }_cipher_suite() + static +Origin: https://git.kernel.org/linus/0cac3f9ee447e42c01a38a795c4f6eccd2868084 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_ieee80211.c | 12 ++++++------ + drivers/staging/rtl8723au/include/ieee80211.h | 2 -- + 2 files changed, 6 insertions(+), 8 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_ieee80211.c b/drivers/staging/rtl8723au/core/rtw_ieee80211.c +index cbb1b85..fa3ca9e 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ieee80211.c ++++ b/drivers/staging/rtl8723au/core/rtw_ieee80211.c +@@ -436,7 +436,7 @@ int rtw_generate_ie23a(struct registry_priv *pregistrypriv) + return sz; + } + +-int rtw_get_wpa_cipher_suite23a(const u8 *s) ++static int rtw_get_wpa_cipher_suite(const u8 *s) + { + if (!memcmp(s, WPA_CIPHER_SUITE_NONE23A, WPA_SELECTOR_LEN)) + return WPA_CIPHER_NONE; +@@ -452,7 +452,7 @@ int rtw_get_wpa_cipher_suite23a(const u8 *s) + return 0; + } + +-int rtw_get_wpa2_cipher_suite23a(const u8 *s) ++static int rtw_get_wpa2_cipher_suite(const u8 *s) + { + if (!memcmp(s, RSN_CIPHER_SUITE_NONE23A, RSN_SELECTOR_LEN)) + return WPA_CIPHER_NONE; +@@ -490,7 +490,7 @@ int rtw_parse_wpa_ie23a(const u8* wpa_ie, int wpa_ie_len, int *group_cipher, int + /* group_cipher */ + if (left >= WPA_SELECTOR_LEN) { + +- *group_cipher = rtw_get_wpa_cipher_suite23a(pos); ++ *group_cipher = rtw_get_wpa_cipher_suite(pos); + + pos += WPA_SELECTOR_LEN; + left -= WPA_SELECTOR_LEN; +@@ -518,7 +518,7 @@ int rtw_parse_wpa_ie23a(const u8* wpa_ie, int wpa_ie_len, int *group_cipher, int + } + + for (i = 0; i < count; i++) { +- *pairwise_cipher |= rtw_get_wpa_cipher_suite23a(pos); ++ *pairwise_cipher |= rtw_get_wpa_cipher_suite(pos); + + pos += WPA_SELECTOR_LEN; + left -= WPA_SELECTOR_LEN; +@@ -567,7 +567,7 @@ int rtw_parse_wpa2_ie23a(const u8* rsn_ie, int rsn_ie_len, int *group_cipher, + + /* group_cipher */ + if (left >= RSN_SELECTOR_LEN) { +- *group_cipher = rtw_get_wpa2_cipher_suite23a(pos); ++ *group_cipher = rtw_get_wpa2_cipher_suite(pos); + + pos += RSN_SELECTOR_LEN; + left -= RSN_SELECTOR_LEN; +@@ -594,7 +594,7 @@ int rtw_parse_wpa2_ie23a(const u8* rsn_ie, int rsn_ie_len, int *group_cipher, + } + + for (i = 0; i < count; i++) { +- *pairwise_cipher |= rtw_get_wpa2_cipher_suite23a(pos); ++ *pairwise_cipher |= rtw_get_wpa2_cipher_suite(pos); + + pos += RSN_SELECTOR_LEN; + left -= RSN_SELECTOR_LEN; +diff --git a/drivers/staging/rtl8723au/include/ieee80211.h b/drivers/staging/rtl8723au/include/ieee80211.h +index 3738978..0ef6e79 100644 +--- a/drivers/staging/rtl8723au/include/ieee80211.h ++++ b/drivers/staging/rtl8723au/include/ieee80211.h +@@ -425,8 +425,6 @@ int rtw_ies_remove_ie23a(u8 *ies, uint *ies_len, uint offset, u8 eid, u8 *oui, u + + void rtw_set_supported_rate23a(u8* SupportedRates, uint mode) ; + +-int rtw_get_wpa_cipher_suite23a(const u8 *s); +-int rtw_get_wpa2_cipher_suite23a(const u8 *s); + int rtw_parse_wpa_ie23a(const u8* wpa_ie, int wpa_ie_len, int *group_cipher, int *pairwise_cipher, int *is_8021x); + int rtw_parse_wpa2_ie23a(const u8* wpa_ie, int wpa_ie_len, int *group_cipher, int *pairwise_cipher, int *is_8021x); + diff --git a/debian/patches/features/all/r8723au/0026-staging-rtl8723au-Make-WMM_param_handler23a-and-HT_c.patch b/debian/patches/features/all/r8723au/0026-staging-rtl8723au-Make-WMM_param_handler23a-and-HT_c.patch new file mode 100644 index 000000000..f97c820b5 --- /dev/null +++ b/debian/patches/features/all/r8723au/0026-staging-rtl8723au-Make-WMM_param_handler23a-and-HT_c.patch @@ -0,0 +1,52 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:03 +0200 +Subject: [026/249] staging: rtl8723au: Make WMM_param_handler23a() and + HT_caps_handler23a() take a const u8 * +Origin: https://git.kernel.org/linus/3cdf27730ac7a005cc0ca15bea5743389e136030 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_wlan_util.c | 4 ++-- + drivers/staging/rtl8723au/include/rtw_mlme_ext.h | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_wlan_util.c b/drivers/staging/rtl8723au/core/rtw_wlan_util.c +index 043ba40..b9ca088 100644 +--- a/drivers/staging/rtl8723au/core/rtw_wlan_util.c ++++ b/drivers/staging/rtl8723au/core/rtw_wlan_util.c +@@ -504,7 +504,7 @@ void flush_all_cam_entry23a(struct rtw_adapter *padapter) + memset(pmlmeinfo->FW_sta_info, 0, sizeof(pmlmeinfo->FW_sta_info)); + } + +-int WMM_param_handler23a(struct rtw_adapter *padapter, u8 *p) ++int WMM_param_handler23a(struct rtw_adapter *padapter, const u8 *p) + { + /* struct registry_priv *pregpriv = &padapter->registrypriv; */ + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; +@@ -712,7 +712,7 @@ static void bwmode_update_check(struct rtw_adapter *padapter, const u8 *p) + } + } + +-void HT_caps_handler23a(struct rtw_adapter *padapter, u8 *p) ++void HT_caps_handler23a(struct rtw_adapter *padapter, const u8 *p) + { + unsigned int i; + u8 rf_type; +diff --git a/drivers/staging/rtl8723au/include/rtw_mlme_ext.h b/drivers/staging/rtl8723au/include/rtw_mlme_ext.h +index b8a108b..eb61012 100644 +--- a/drivers/staging/rtl8723au/include/rtw_mlme_ext.h ++++ b/drivers/staging/rtl8723au/include/rtw_mlme_ext.h +@@ -510,10 +510,10 @@ bool is_IBSS_empty23a(struct rtw_adapter *padapter); + + unsigned char check_assoc_AP23a(u8 *pframe, uint len); + +-int WMM_param_handler23a(struct rtw_adapter *padapter, u8 *p); ++int WMM_param_handler23a(struct rtw_adapter *padapter, const u8 *p); + void WMMOnAssocRsp23a(struct rtw_adapter *padapter); + +-void HT_caps_handler23a(struct rtw_adapter *padapter, u8 *p); ++void HT_caps_handler23a(struct rtw_adapter *padapter, const u8 *p); + void HT_info_handler23a(struct rtw_adapter *padapter, const u8 *p); + void HTOnAssocRsp23a(struct rtw_adapter *padapter); + diff --git a/debian/patches/features/all/r8723au/0027-staging-rtl8723au-OnAssocRsp23a-Use-cfg80211_-to-par.patch b/debian/patches/features/all/r8723au/0027-staging-rtl8723au-OnAssocRsp23a-Use-cfg80211_-to-par.patch new file mode 100644 index 000000000..be360e492 --- /dev/null +++ b/debian/patches/features/all/r8723au/0027-staging-rtl8723au-OnAssocRsp23a-Use-cfg80211_-to-par.patch @@ -0,0 +1,104 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:04 +0200 +Subject: [027/249] staging: rtl8723au: OnAssocRsp23a(): Use cfg80211_* to + parse IEs +Origin: https://git.kernel.org/linus/e1d143b49521e5c5859c3b7dd48ac301720000af + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 66 +++++++++++++++------------ + 1 file changed, 37 insertions(+), 29 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index 1c22d1b..e32df75 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -1805,11 +1805,12 @@ OnAssocRsp23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame) + struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; + struct sk_buff *skb = precv_frame->pkt; + struct ieee80211_mgmt *pmgmt = (struct ieee80211_mgmt *) skb->data; +- int res, i; ++ int res; + unsigned short status; +- u8 *p; ++ const u8 *p, *pie; + u8 *pframe = skb->data; + int pkt_len = skb->len; ++ int pielen; + + DBG_8723A("%s\n", __func__); + +@@ -1843,38 +1844,45 @@ OnAssocRsp23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame) + /* AID */ + res = pmlmeinfo->aid = le16_to_cpu(pmgmt->u.assoc_resp.aid) & 0x3fff; + +- /* following are moved to join event callback function */ +- /* to handle HT, WMM, rate adaptive, update MAC reg */ +- /* for not to handle the synchronous IO in the tasklet */ +- for (i = offsetof(struct ieee80211_mgmt, u.assoc_resp.variable); +- i < pkt_len;) { +- p = pframe + i; +- +- switch (p[0]) +- { +- case WLAN_EID_VENDOR_SPECIFIC: +- if (!memcmp(p + 2, WMM_PARA_OUI23A, 6))/* WMM */ +- WMM_param_handler23a(padapter, p); +- break; +- +- case WLAN_EID_HT_CAPABILITY: /* HT caps */ +- HT_caps_handler23a(padapter, p); ++ pie = pframe + offsetof(struct ieee80211_mgmt, u.assoc_resp.variable); ++ pielen = pkt_len - ++ offsetof(struct ieee80211_mgmt, u.assoc_resp.variable); ++ ++ p = cfg80211_find_ie(WLAN_EID_HT_CAPABILITY, ++ pmgmt->u.assoc_resp.variable, pielen); ++ if (p && p[1]) ++ HT_caps_handler23a(padapter, p); ++ ++ p = cfg80211_find_ie(WLAN_EID_HT_OPERATION, ++ pmgmt->u.assoc_resp.variable, pielen); ++ if (p && p[1]) ++ HT_info_handler23a(padapter, p); ++ ++ p = cfg80211_find_ie(WLAN_EID_ERP_INFO, ++ pmgmt->u.assoc_resp.variable, pielen); ++ if (p && p[1]) ++ ERP_IE_handler23a(padapter, p); ++ ++ pie = pframe + offsetof(struct ieee80211_mgmt, u.assoc_resp.variable); ++ while (true) { ++ p = cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT, ++ WLAN_OUI_TYPE_MICROSOFT_WMM, ++ pie, pframe + pkt_len - pie); ++ if (!p) + break; + +- case WLAN_EID_HT_OPERATION: /* HT info */ +- HT_info_handler23a(padapter, p); ++ pie = p + p[1] + 2; ++ /* if this IE is too short, try the next */ ++ if (p[1] <= 4) ++ continue; ++ /* if this IE is WMM params, we found what we wanted */ ++ if (p[6] == 1) + break; +- +- case WLAN_EID_ERP_INFO: +- ERP_IE_handler23a(padapter, p); +- +- default: +- break; +- } +- +- i += (p[1] + 2); + } + ++ if (p && p[1]) ++ WMM_param_handler23a(padapter, p); ++ + pmlmeinfo->state &= ~WIFI_FW_ASSOC_STATE; + pmlmeinfo->state |= WIFI_FW_ASSOC_SUCCESS; + diff --git a/debian/patches/features/all/r8723au/0028-staging-rtl8723au-Remove-WMM_-defines.patch b/debian/patches/features/all/r8723au/0028-staging-rtl8723au-Remove-WMM_-defines.patch new file mode 100644 index 000000000..b4f48cef1 --- /dev/null +++ b/debian/patches/features/all/r8723au/0028-staging-rtl8723au-Remove-WMM_-defines.patch @@ -0,0 +1,58 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:05 +0200 +Subject: [028/249] staging: rtl8723au: Remove WMM_ defines +Origin: https://git.kernel.org/linus/c9324c88533fbb15ec59de8e0d4b9d0c9d100026 + +Only one is used, and only describes the size of an array defined in a +local function. Use sizeof() in the local function to deobfuscate it. + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme.c | 7 ++++--- + drivers/staging/rtl8723au/include/wifi.h | 7 ------- + 2 files changed, 4 insertions(+), 10 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c +index 76e1797..a3174c0 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c +@@ -2197,7 +2197,7 @@ unsigned int rtw_restructure_ht_ie23a(struct rtw_adapter *padapter, u8 *in_ie, + unsigned char *pframe; + const u8 *p; + struct ieee80211_ht_cap ht_capie; +- unsigned char WMM_IE[] = {0x00, 0x50, 0xf2, 0x02, 0x00, 0x01, 0x00}; ++ u8 WMM_IE[7] = {0x00, 0x50, 0xf2, 0x02, 0x00, 0x01, 0x00}; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct ht_priv *phtpriv = &pmlmepriv->htpriv; + +@@ -2210,8 +2210,9 @@ unsigned int rtw_restructure_ht_ie23a(struct rtw_adapter *padapter, u8 *in_ie, + if (pmlmepriv->qos_option == 0) { + out_len = *pout_len; + pframe = rtw_set_ie23a(out_ie + out_len, +- WLAN_EID_VENDOR_SPECIFIC, +- _WMM_IE_Length_, WMM_IE, pout_len); ++ WLAN_EID_VENDOR_SPECIFIC, ++ sizeof(WMM_IE), WMM_IE, ++ pout_len); + + pmlmepriv->qos_option = 1; + } +diff --git a/drivers/staging/rtl8723au/include/wifi.h b/drivers/staging/rtl8723au/include/wifi.h +index 4ab28e5..07ea4c6 100644 +--- a/drivers/staging/rtl8723au/include/wifi.h ++++ b/drivers/staging/rtl8723au/include/wifi.h +@@ -53,13 +53,6 @@ + #define _TIMESTAMP_ 8 + + /*----------------------------------------------------------------------------- +- Below is the definition for WMM +-------------------------------------------------------------------------------*/ +-#define _WMM_IE_Length_ 7 /* for WMM STA */ +-#define _WMM_Para_Element_Length_ 24 +- +- +-/*----------------------------------------------------------------------------- + Below is the definition for 802.11n + ------------------------------------------------------------------------------*/ + diff --git a/debian/patches/features/all/r8723au/0029-staging-rtl8723au-Make-struct-ht_priv.ht_option-a-bo.patch b/debian/patches/features/all/r8723au/0029-staging-rtl8723au-Make-struct-ht_priv.ht_option-a-bo.patch new file mode 100644 index 000000000..ed3320ead --- /dev/null +++ b/debian/patches/features/all/r8723au/0029-staging-rtl8723au-Make-struct-ht_priv.ht_option-a-bo.patch @@ -0,0 +1,58 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:06 +0200 +Subject: [029/249] staging: rtl8723au: Make struct ht_priv.ht_option a bool +Origin: https://git.kernel.org/linus/6f765c20ca85b4d11d9f1e4b81d0d3251f5a4321 + +Match the return type of rtw_restructure_ht_ie23a() accordingly + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme.c | 4 ++-- + drivers/staging/rtl8723au/include/rtw_ht.h | 2 +- + drivers/staging/rtl8723au/include/rtw_mlme.h | 4 ++-- + 3 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c +index a3174c0..d48b986 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c +@@ -2189,8 +2189,8 @@ void rtw_joinbss_reset23a(struct rtw_adapter *padapter) + } + + /* the fucntion is >= passive_level */ +-unsigned int rtw_restructure_ht_ie23a(struct rtw_adapter *padapter, u8 *in_ie, +- u8 *out_ie, uint in_len, uint *pout_len) ++bool rtw_restructure_ht_ie23a(struct rtw_adapter *padapter, u8 *in_ie, ++ u8 *out_ie, uint in_len, uint *pout_len) + { + u32 out_len; + int max_rx_ampdu_factor; +diff --git a/drivers/staging/rtl8723au/include/rtw_ht.h b/drivers/staging/rtl8723au/include/rtw_ht.h +index 86ce86b..f086376 100644 +--- a/drivers/staging/rtl8723au/include/rtw_ht.h ++++ b/drivers/staging/rtl8723au/include/rtw_ht.h +@@ -21,7 +21,7 @@ + + struct ht_priv + { +- u32 ht_option; ++ bool ht_option; + u32 ampdu_enable;/* for enable Tx A-MPDU */ + /* u8 baddbareq_issued[16]; */ + u32 tx_amsdu_enable;/* for enable Tx A-MSDU */ +diff --git a/drivers/staging/rtl8723au/include/rtw_mlme.h b/drivers/staging/rtl8723au/include/rtw_mlme.h +index 4d327ba..a11b5bd 100644 +--- a/drivers/staging/rtl8723au/include/rtw_mlme.h ++++ b/drivers/staging/rtl8723au/include/rtw_mlme.h +@@ -356,8 +356,8 @@ __le16 *rtw_get_beacon_interval23a_from_ie(u8 *ie); + + void rtw_joinbss_reset23a(struct rtw_adapter *padapter); + +-unsigned int rtw_restructure_ht_ie23a(struct rtw_adapter *padapter, u8 *in_ie, +- u8 *out_ie, uint in_len, uint *pout_len); ++bool rtw_restructure_ht_ie23a(struct rtw_adapter *padapter, u8 *in_ie, ++ u8 *out_ie, uint in_len, uint *pout_len); + void rtw_update_ht_cap23a(struct rtw_adapter *padapter, + u8 *pie, uint ie_len); + void rtw_issue_addbareq_cmd23a(struct rtw_adapter *padapter, diff --git a/debian/patches/features/all/r8723au/0030-staging-rtl8723au-Be-consistent-in-how-htpriv.ht_opt.patch b/debian/patches/features/all/r8723au/0030-staging-rtl8723au-Be-consistent-in-how-htpriv.ht_opt.patch new file mode 100644 index 000000000..0c2ce1b21 --- /dev/null +++ b/debian/patches/features/all/r8723au/0030-staging-rtl8723au-Be-consistent-in-how-htpriv.ht_opt.patch @@ -0,0 +1,112 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:07 +0200 +Subject: [030/249] staging: rtl8723au: Be consistent in how htpriv.ht_option + is checked +Origin: https://git.kernel.org/linus/6a5f657db5cb7e0ced04d085154d7f96296488e6 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_ap.c | 6 +++--- + drivers/staging/rtl8723au/core/rtw_mlme.c | 2 +- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 6 +++--- + drivers/staging/rtl8723au/core/rtw_wlan_util.c | 4 ++-- + 4 files changed, 9 insertions(+), 9 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_ap.c b/drivers/staging/rtl8723au/core/rtw_ap.c +index d67a5f1..a52662e 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ap.c ++++ b/drivers/staging/rtl8723au/core/rtw_ap.c +@@ -1391,7 +1391,7 @@ static int rtw_ht_operation_update(struct rtw_adapter *padapter) + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct ht_priv *phtpriv_ap = &pmlmepriv->htpriv; + +- if (pmlmepriv->htpriv.ht_option == true) ++ if (pmlmepriv->htpriv.ht_option) + return 0; + + /* if (!iface->conf->ieee80211n || iface->conf->ht_op_mode_fixed) */ +@@ -1627,7 +1627,7 @@ void bss_cap_update_on_sta_join23a(struct rtw_adapter *padapter, struct sta_info + psta->no_ht_set = 1; + pmlmepriv->num_sta_no_ht++; + } +- if (pmlmepriv->htpriv.ht_option == true) { ++ if (pmlmepriv->htpriv.ht_option) { + DBG_8723A("%s STA " MAC_FMT + " - no HT, num of non-HT stations %d\n", + __func__, MAC_ARG(psta->hwaddr), +@@ -1865,7 +1865,7 @@ void sta_info_update23a(struct rtw_adapter *padapter, struct sta_info *psta) + psta->htpriv.ht_option = false; + } + +- if (pmlmepriv->htpriv.ht_option == false) ++ if (!pmlmepriv->htpriv.ht_option) + psta->htpriv.ht_option = false; + + update_sta_info23a_apmode23a(padapter, psta); +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c +index d48b986..31c414a 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c +@@ -2409,7 +2409,7 @@ void rtw_issue_addbareq_cmd23a(struct rtw_adapter *padapter, + + phtpriv = &psta->htpriv; + +- if (phtpriv->ht_option == true && phtpriv->ampdu_enable == true) { ++ if (phtpriv->ht_option && phtpriv->ampdu_enable == true) { + issued = (phtpriv->agg_enable_bitmap>>priority)&0x1; + issued |= (phtpriv->candidate_tid_bitmap>>priority)&0x1; + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index e32df75..ae8d38f 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -1666,7 +1666,7 @@ OnAssocReq23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame) + } else + pstat->flags &= ~WLAN_STA_HT; + +- if (pmlmepriv->htpriv.ht_option == false && pstat->flags & WLAN_STA_HT){ ++ if (!pmlmepriv->htpriv.ht_option && pstat->flags & WLAN_STA_HT){ + status = WLAN_STATUS_UNSPECIFIED_FAILURE; + goto OnAssocReq23aFail; + } +@@ -3479,7 +3479,7 @@ static void issue_assocreq(struct rtw_adapter *padapter) + &pattrib->pktlen); + + /* HT caps */ +- if (padapter->mlmepriv.htpriv.ht_option == true) { ++ if (padapter->mlmepriv.htpriv.ht_option) { + p = cfg80211_find_ie(WLAN_EID_HT_CAPABILITY, pie, pie_len); + + if (p && !is_ap_in_tkip23a(padapter)) { +@@ -5848,7 +5848,7 @@ static void addba_timer_hdl(unsigned long data) + + phtpriv = &psta->htpriv; + +- if (phtpriv->ht_option == true && phtpriv->ampdu_enable == true) { ++ if (phtpriv->ht_option && phtpriv->ampdu_enable == true) { + if (phtpriv->candidate_tid_bitmap) + phtpriv->candidate_tid_bitmap = 0x0; + } +diff --git a/drivers/staging/rtl8723au/core/rtw_wlan_util.c b/drivers/staging/rtl8723au/core/rtw_wlan_util.c +index b9ca088..3195b44 100644 +--- a/drivers/staging/rtl8723au/core/rtw_wlan_util.c ++++ b/drivers/staging/rtl8723au/core/rtw_wlan_util.c +@@ -727,7 +727,7 @@ void HT_caps_handler23a(struct rtw_adapter *padapter, const u8 *p) + if (!p) + return; + +- if (phtpriv->ht_option == false) ++ if (!phtpriv->ht_option) + return; + + pmlmeinfo->HT_caps_enable = 1; +@@ -784,7 +784,7 @@ void HT_info_handler23a(struct rtw_adapter *padapter, const u8 *p) + if (!p) + return; + +- if (phtpriv->ht_option == false) ++ if (!phtpriv->ht_option) + return; + + if (p[1] != sizeof(struct ieee80211_ht_operation)) diff --git a/debian/patches/features/all/r8723au/0031-staging-rtl8723au-Make-struct-htpriv.ampdu_enable-a-.patch b/debian/patches/features/all/r8723au/0031-staging-rtl8723au-Make-struct-htpriv.ampdu_enable-a-.patch new file mode 100644 index 000000000..059379af2 --- /dev/null +++ b/debian/patches/features/all/r8723au/0031-staging-rtl8723au-Make-struct-htpriv.ampdu_enable-a-.patch @@ -0,0 +1,64 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:08 +0200 +Subject: [031/249] staging: rtl8723au: Make struct htpriv.ampdu_enable a bool +Origin: https://git.kernel.org/linus/47e5d2f26d86d8bf1b5ecff2994f939e4283ffeb + +Be consistent in parsing it's value + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme.c | 5 ++--- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 2 +- + drivers/staging/rtl8723au/include/rtw_ht.h | 2 +- + 3 files changed, 4 insertions(+), 5 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c +index 31c414a..4a33e7d 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c +@@ -2291,8 +2291,7 @@ void rtw_update_ht_cap23a(struct rtw_adapter *padapter, u8 *pie, uint ie_len) + ie_len -= bcn_fixed_size; + + /* maybe needs check if ap supports rx ampdu. */ +- if (phtpriv->ampdu_enable == false && +- pregistrypriv->ampdu_enable == 1) { ++ if (!phtpriv->ampdu_enable && pregistrypriv->ampdu_enable == 1) { + if (pregistrypriv->wifi_spec == 1) + phtpriv->ampdu_enable = false; + else +@@ -2409,7 +2408,7 @@ void rtw_issue_addbareq_cmd23a(struct rtw_adapter *padapter, + + phtpriv = &psta->htpriv; + +- if (phtpriv->ht_option && phtpriv->ampdu_enable == true) { ++ if (phtpriv->ht_option && phtpriv->ampdu_enable) { + issued = (phtpriv->agg_enable_bitmap>>priority)&0x1; + issued |= (phtpriv->candidate_tid_bitmap>>priority)&0x1; + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index ae8d38f..9b8566c 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -5848,7 +5848,7 @@ static void addba_timer_hdl(unsigned long data) + + phtpriv = &psta->htpriv; + +- if (phtpriv->ht_option && phtpriv->ampdu_enable == true) { ++ if (phtpriv->ht_option && phtpriv->ampdu_enable) { + if (phtpriv->candidate_tid_bitmap) + phtpriv->candidate_tid_bitmap = 0x0; + } +diff --git a/drivers/staging/rtl8723au/include/rtw_ht.h b/drivers/staging/rtl8723au/include/rtw_ht.h +index f086376..cfc947d 100644 +--- a/drivers/staging/rtl8723au/include/rtw_ht.h ++++ b/drivers/staging/rtl8723au/include/rtw_ht.h +@@ -22,7 +22,7 @@ + struct ht_priv + { + bool ht_option; +- u32 ampdu_enable;/* for enable Tx A-MPDU */ ++ bool ampdu_enable;/* for enable Tx A-MPDU */ + /* u8 baddbareq_issued[16]; */ + u32 tx_amsdu_enable;/* for enable Tx A-MSDU */ + u32 tx_amdsu_maxlen; /* 1: 8k, 0:4k ; default:8k, for tx */ diff --git a/debian/patches/features/all/r8723au/0032-staging-rtl8723au-issue_auth-Convert-to-using-struct.patch b/debian/patches/features/all/r8723au/0032-staging-rtl8723au-issue_auth-Convert-to-using-struct.patch new file mode 100644 index 000000000..94703cf11 --- /dev/null +++ b/debian/patches/features/all/r8723au/0032-staging-rtl8723au-issue_auth-Convert-to-using-struct.patch @@ -0,0 +1,191 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:09 +0200 +Subject: [032/249] staging: rtl8723au: issue_auth(): Convert to using struct + ieee80211_mgmt +Origin: https://git.kernel.org/linus/88e06f020083d7d276fda6df331f96469f1517c8 + +This reduces the dependency of rtw_set_fixed_ie23a() which is +scheduled to go away. + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 101 +++++++++++--------------- + 1 file changed, 44 insertions(+), 57 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index 9b8566c..616bb7c 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -3036,9 +3036,10 @@ static void issue_auth(struct rtw_adapter *padapter, struct sta_info *psta, + struct xmit_frame *pmgntframe; + struct pkt_attrib *pattrib; + unsigned char *pframe; +- struct ieee80211_hdr *pwlanhdr; ++ struct ieee80211_mgmt *mgmt; + unsigned int val32; + unsigned short val16; ++ u16 auth_algo; + int use_shared_key = 0; + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; +@@ -3055,23 +3056,20 @@ static void issue_auth(struct rtw_adapter *padapter, struct sta_info *psta, + memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET); + + pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET; +- pwlanhdr = (struct ieee80211_hdr *)pframe; ++ mgmt = (struct ieee80211_mgmt *)pframe; + +- pwlanhdr->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT | +- IEEE80211_STYPE_AUTH); +- pwlanhdr->seq_ctrl = +- cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq)); ++ mgmt->frame_control = ++ cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_AUTH); ++ mgmt->seq_ctrl = cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq)); + pmlmeext->mgnt_seq++; + +- pframe += sizeof(struct ieee80211_hdr_3addr); +- pattrib->pktlen = sizeof(struct ieee80211_hdr_3addr); ++ pattrib->pktlen = offsetof(struct ieee80211_mgmt, u.auth.variable); + + if (psta) { /* for AP mode */ + #ifdef CONFIG_8723AU_AP_MODE +- +- ether_addr_copy(pwlanhdr->addr1, psta->hwaddr); +- ether_addr_copy(pwlanhdr->addr2, myid(&padapter->eeprompriv)); +- ether_addr_copy(pwlanhdr->addr3, myid(&padapter->eeprompriv)); ++ ether_addr_copy(mgmt->da, psta->hwaddr); ++ ether_addr_copy(mgmt->sa, myid(&padapter->eeprompriv)); ++ ether_addr_copy(mgmt->bssid, myid(&padapter->eeprompriv)); + + /* setting auth algo number */ + val16 = (u16)psta->authalg; +@@ -3079,29 +3077,19 @@ static void issue_auth(struct rtw_adapter *padapter, struct sta_info *psta, + if (status != WLAN_STATUS_SUCCESS) + val16 = 0; + +- if (val16) { +- val16 = cpu_to_le16(val16); ++ if (val16) + use_shared_key = 1; +- } + +- pframe = rtw_set_fixed_ie23a(pframe, _AUTH_ALGM_NUM_, +- (unsigned char *)&val16, +- &pattrib->pktlen); ++ mgmt->u.auth.auth_alg = cpu_to_le16(val16); + + /* setting auth seq number */ +- val16 = (u16)psta->auth_seq; +- val16 = cpu_to_le16(val16); +- pframe = rtw_set_fixed_ie23a(pframe, _AUTH_SEQ_NUM_, +- (unsigned char *)&val16, +- &pattrib->pktlen); ++ mgmt->u.auth.auth_transaction = ++ cpu_to_le16((u16)psta->auth_seq); + + /* setting status code... */ +- val16 = status; +- val16 = cpu_to_le16(val16); +- pframe = rtw_set_fixed_ie23a(pframe, _STATUS_CODE_, +- (unsigned char *)&val16, +- &pattrib->pktlen); ++ mgmt->u.auth.status_code = cpu_to_le16(status); + ++ pframe = mgmt->u.auth.variable; + /* added challenging text... */ + if ((psta->auth_seq == 2) && + (psta->state & WIFI_FW_AUTH_STATE) && (use_shared_key == 1)) +@@ -3109,19 +3097,21 @@ static void issue_auth(struct rtw_adapter *padapter, struct sta_info *psta, + psta->chg_txt, &pattrib->pktlen); + #endif + } else { +- ether_addr_copy(pwlanhdr->addr1, +- get_my_bssid23a(&pmlmeinfo->network)); +- ether_addr_copy(pwlanhdr->addr2, myid(&padapter->eeprompriv)); +- ether_addr_copy(pwlanhdr->addr3, ++ struct ieee80211_mgmt *iv_mgmt; ++ ++ ether_addr_copy(mgmt->da, get_my_bssid23a(&pmlmeinfo->network)); ++ ether_addr_copy(mgmt->sa, myid(&padapter->eeprompriv)); ++ ether_addr_copy(mgmt->bssid, + get_my_bssid23a(&pmlmeinfo->network)); + + /* setting auth algo number */ + /* 0:OPEN System, 1:Shared key */ +- val16 = (pmlmeinfo->auth_algo == dot11AuthAlgrthm_Shared)? 1: 0; +- if (val16) { +- val16 = cpu_to_le16(val16); ++ if (pmlmeinfo->auth_algo == dot11AuthAlgrthm_Shared) { + use_shared_key = 1; +- } ++ auth_algo = WLAN_AUTH_SHARED_KEY; ++ } else ++ auth_algo = WLAN_AUTH_OPEN; ++ + /* DBG_8723A("%s auth_algo = %s auth_seq =%d\n", __func__, + (pmlmeinfo->auth_algo == 0)?"OPEN":"SHARED", + pmlmeinfo->auth_seq); */ +@@ -3130,35 +3120,32 @@ static void issue_auth(struct rtw_adapter *padapter, struct sta_info *psta, + if ((pmlmeinfo->auth_seq == 3) && + (pmlmeinfo->state & WIFI_FW_AUTH_STATE) && + (use_shared_key == 1)) { ++ u32 *piv = (u32 *)&mgmt->u.auth; ++ ++ iv_mgmt = (struct ieee80211_mgmt *)(pframe + 4); + /* DBG_8723A("==> iv(%d), key_index(%d)\n", + pmlmeinfo->iv, pmlmeinfo->key_index); */ +- val32 = ((pmlmeinfo->iv++) | +- (pmlmeinfo->key_index << 30)); +- val32 = cpu_to_le32(val32); +- pframe = rtw_set_fixed_ie23a(pframe, 4, +- (unsigned char *)&val32, +- &pattrib->pktlen); ++ val32 = (pmlmeinfo->iv & 0x3fffffff) | ++ (pmlmeinfo->key_index << 30); ++ pmlmeinfo->iv++; ++ put_unaligned_le32(val32, piv); ++ ++ pattrib->pktlen += 4; + + pattrib->iv_len = IEEE80211_WEP_IV_LEN; +- } ++ } else ++ iv_mgmt = mgmt; + +- pframe = rtw_set_fixed_ie23a(pframe, _AUTH_ALGM_NUM_, +- (unsigned char *)&val16, +- &pattrib->pktlen); ++ iv_mgmt->u.auth.auth_alg = cpu_to_le16(auth_algo); + + /* setting auth seq number */ +- val16 = pmlmeinfo->auth_seq; +- val16 = cpu_to_le16(val16); +- pframe = rtw_set_fixed_ie23a(pframe, _AUTH_SEQ_NUM_, +- (unsigned char *)&val16, +- &pattrib->pktlen); ++ iv_mgmt->u.auth.auth_transaction = ++ cpu_to_le16(pmlmeinfo->auth_seq); + + /* setting status code... */ +- val16 = status; +- val16 = cpu_to_le16(val16); +- pframe = rtw_set_fixed_ie23a(pframe, _STATUS_CODE_, +- (unsigned char *)&val16, +- &pattrib->pktlen); ++ iv_mgmt->u.auth.status_code = cpu_to_le16(status); ++ ++ pframe = iv_mgmt->u.auth.variable; + + /* then checking to see if sending challenging text... */ + if ((pmlmeinfo->auth_seq == 3) && +@@ -3168,7 +3155,7 @@ static void issue_auth(struct rtw_adapter *padapter, struct sta_info *psta, + pmlmeinfo->chg_txt, + &pattrib->pktlen); + +- pwlanhdr->frame_control |= ++ mgmt->frame_control |= + cpu_to_le16(IEEE80211_FCTL_PROTECTED); + + pattrib->hdrlen = sizeof(struct ieee80211_hdr_3addr); diff --git a/debian/patches/features/all/r8723au/0033-staging-rtl8723au-issue_assocrsp-Use-struct-ieee8021.patch b/debian/patches/features/all/r8723au/0033-staging-rtl8723au-issue_assocrsp-Use-struct-ieee8021.patch new file mode 100644 index 000000000..08971c039 --- /dev/null +++ b/debian/patches/features/all/r8723au/0033-staging-rtl8723au-issue_assocrsp-Use-struct-ieee8021.patch @@ -0,0 +1,75 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:10 +0200 +Subject: [033/249] staging: rtl8723au: issue_assocrsp(): Use struct + ieee80211_mgmt instead of rtw_set_fixed_ie23a() +Origin: https://git.kernel.org/linus/c144c3bbd50b0a900d7f952333e5cf76377d0109 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 33 +++++++++++---------------- + 1 file changed, 13 insertions(+), 20 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index 616bb7c..e5df86a 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -3182,7 +3182,7 @@ static void issue_assocrsp(struct rtw_adapter *padapter, unsigned short status, + struct sta_info *pstat, u16 pkt_type) + { + struct xmit_frame *pmgntframe; +- struct ieee80211_hdr *pwlanhdr; ++ struct ieee80211_mgmt *mgmt; + struct pkt_attrib *pattrib; + unsigned char *pframe; + unsigned short val; +@@ -3207,37 +3207,30 @@ static void issue_assocrsp(struct rtw_adapter *padapter, unsigned short status, + memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET); + + pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET; +- pwlanhdr = (struct ieee80211_hdr *)pframe; ++ mgmt = (struct ieee80211_mgmt *)pframe; + +- pwlanhdr->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT | pkt_type); ++ mgmt->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT | pkt_type); + +- ether_addr_copy(pwlanhdr->addr1, pstat->hwaddr); +- ether_addr_copy(pwlanhdr->addr2, myid(&padapter->eeprompriv)); +- ether_addr_copy(pwlanhdr->addr3, get_my_bssid23a(&pmlmeinfo->network)); ++ ether_addr_copy(mgmt->da, pstat->hwaddr); ++ ether_addr_copy(mgmt->sa, myid(&padapter->eeprompriv)); ++ ether_addr_copy(mgmt->bssid, get_my_bssid23a(&pmlmeinfo->network)); + +- pwlanhdr->seq_ctrl = +- cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq)); ++ mgmt->seq_ctrl = cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq)); + + pmlmeext->mgnt_seq++; + + pattrib->hdrlen = sizeof(struct ieee80211_hdr_3addr); +- pattrib->pktlen += pattrib->hdrlen; +- pframe += pattrib->hdrlen; ++ pattrib->pktlen = ++ offsetof(struct ieee80211_mgmt, u.assoc_resp.variable); + + /* capability */ + val = *(unsigned short *)rtw_get_capability23a_from_ie(ie); + +- pframe = rtw_set_fixed_ie23a(pframe, _CAPABILITY_, +- (unsigned char *)&val, &pattrib->pktlen); ++ mgmt->u.assoc_resp.capab_info = val; ++ mgmt->u.assoc_resp.status_code = cpu_to_le16(status); ++ mgmt->u.assoc_resp.aid = cpu_to_le16(pstat->aid | BIT(14) | BIT(15)); + +- status = cpu_to_le16(status); +- pframe = rtw_set_fixed_ie23a(pframe, _STATUS_CODE_, +- (unsigned char *)&status, +- &pattrib->pktlen); +- +- val = cpu_to_le16(pstat->aid | BIT(14) | BIT(15)); +- pframe = rtw_set_fixed_ie23a(pframe, _ASOC_ID_, (unsigned char *)&val, +- &pattrib->pktlen); ++ pframe = mgmt->u.assoc_resp.variable; + + if (pstat->bssratelen <= 8) { + pframe = rtw_set_ie23a(pframe, WLAN_EID_SUPP_RATES, diff --git a/debian/patches/features/all/r8723au/0034-staging-rtl8723au-_issue_deauth-Use-struct-ieee80211.patch b/debian/patches/features/all/r8723au/0034-staging-rtl8723au-_issue_deauth-Use-struct-ieee80211.patch new file mode 100644 index 000000000..6157cb002 --- /dev/null +++ b/debian/patches/features/all/r8723au/0034-staging-rtl8723au-_issue_deauth-Use-struct-ieee80211.patch @@ -0,0 +1,63 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:13 +0200 +Subject: [034/249] staging: rtl8723au: _issue_deauth(): Use struct + ieee80211_mgmt to build frame +Origin: https://git.kernel.org/linus/f89547b651d842035c982f43d4303c0e7b890191 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 27 ++++++++++----------------- + 1 file changed, 10 insertions(+), 17 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index e5df86a..d109256 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -3840,8 +3840,7 @@ static int _issue_deauth(struct rtw_adapter *padapter, unsigned char *da, + { + struct xmit_frame *pmgntframe; + struct pkt_attrib *pattrib; +- unsigned char *pframe; +- struct ieee80211_hdr *pwlanhdr; ++ struct ieee80211_mgmt *mgmt; + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; +@@ -3860,27 +3859,21 @@ static int _issue_deauth(struct rtw_adapter *padapter, unsigned char *da, + + memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET); + +- pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET; +- pwlanhdr = (struct ieee80211_hdr *)pframe; ++ mgmt = (struct ieee80211_mgmt *)(pmgntframe->buf_addr + TXDESC_OFFSET); + +- pwlanhdr->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT | +- IEEE80211_STYPE_DEAUTH); ++ mgmt->frame_control = ++ cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_DEAUTH); + +- ether_addr_copy(pwlanhdr->addr1, da); +- ether_addr_copy(pwlanhdr->addr2, myid(&padapter->eeprompriv)); +- ether_addr_copy(pwlanhdr->addr3, get_my_bssid23a(&pmlmeinfo->network)); ++ ether_addr_copy(mgmt->da, da); ++ ether_addr_copy(mgmt->sa, myid(&padapter->eeprompriv)); ++ ether_addr_copy(mgmt->bssid, get_my_bssid23a(&pmlmeinfo->network)); + +- pwlanhdr->seq_ctrl = +- cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq)); ++ mgmt->seq_ctrl = cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq)); + pmlmeext->mgnt_seq++; + +- pframe += sizeof(struct ieee80211_hdr_3addr); +- pattrib->pktlen = sizeof(struct ieee80211_hdr_3addr); ++ pattrib->pktlen = sizeof(struct ieee80211_hdr_3addr) + 2; + +- reason = cpu_to_le16(reason); +- pframe = rtw_set_fixed_ie23a(pframe, WLAN_REASON_PREV_AUTH_NOT_VALID, +- (unsigned char *)&reason, +- &pattrib->pktlen); ++ mgmt->u.deauth.reason_code = cpu_to_le16(reason); + + pattrib->last_txcmdsz = pattrib->pktlen; + diff --git a/debian/patches/features/all/r8723au/0035-staging-rtl8723au-issue_action_spct_ch_switch23a-Use.patch b/debian/patches/features/all/r8723au/0035-staging-rtl8723au-issue_action_spct_ch_switch23a-Use.patch new file mode 100644 index 000000000..a2d0402a4 --- /dev/null +++ b/debian/patches/features/all/r8723au/0035-staging-rtl8723au-issue_action_spct_ch_switch23a-Use.patch @@ -0,0 +1,70 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:14 +0200 +Subject: [035/249] staging: rtl8723au: issue_action_spct_ch_switch23a(): Use + struct ieee80211_mgmt +Origin: https://git.kernel.org/linus/7ed61b5b305d107ccb627d7c285a240574b86864 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 32 +++++++++++---------------- + 1 file changed, 13 insertions(+), 19 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index d109256..b397029 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -3946,10 +3946,9 @@ void issue_action_spct_ch_switch23a(struct rtw_adapter *padapter, + struct xmit_frame *pmgntframe; + struct pkt_attrib *pattrib; + unsigned char *pframe; +- struct ieee80211_hdr *pwlanhdr; ++ struct ieee80211_mgmt *mgmt; + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; +- u8 category, action; + + DBG_8723A("%s(%s): ra ="MAC_FMT", ch:%u, offset:%u\n", __func__, + padapter->pnetdev->name, MAC_ARG(ra), new_ch, ch_offset); +@@ -3964,29 +3963,24 @@ void issue_action_spct_ch_switch23a(struct rtw_adapter *padapter, + + memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET); + +- pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET; +- pwlanhdr = (struct ieee80211_hdr *)pframe; ++ mgmt = (struct ieee80211_mgmt *)(pmgntframe->buf_addr + TXDESC_OFFSET); + +- pwlanhdr->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT | +- IEEE80211_STYPE_ACTION); ++ mgmt->frame_control = ++ cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_ACTION); + +- ether_addr_copy(pwlanhdr->addr1, ra); /* RA */ +- ether_addr_copy(pwlanhdr->addr2, myid(&padapter->eeprompriv)); /* TA */ +- ether_addr_copy(pwlanhdr->addr3, ra); /* DA = RA */ ++ ether_addr_copy(mgmt->da, ra); /* RA */ ++ ether_addr_copy(mgmt->sa, myid(&padapter->eeprompriv)); /* TA */ ++ ether_addr_copy(mgmt->bssid, ra); /* DA = RA */ + +- pwlanhdr->seq_ctrl = +- cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq)); ++ mgmt->seq_ctrl = cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq)); + pmlmeext->mgnt_seq++; + +- pframe += sizeof(struct ieee80211_hdr_3addr); +- pattrib->pktlen = sizeof(struct ieee80211_hdr_3addr); +- +- /* category, action */ +- category = WLAN_CATEGORY_SPECTRUM_MGMT; +- action = WLAN_ACTION_SPCT_CHL_SWITCH; ++ mgmt->u.action.category = WLAN_CATEGORY_SPECTRUM_MGMT; ++ mgmt->u.action.u.chan_switch.action_code = WLAN_ACTION_SPCT_CHL_SWITCH; + +- pframe = rtw_set_fixed_ie23a(pframe, 1, &category, &pattrib->pktlen); +- pframe = rtw_set_fixed_ie23a(pframe, 1, &action, &pattrib->pktlen); ++ pframe = mgmt->u.action.u.chan_switch.variable; ++ pattrib->pktlen = offsetof(struct ieee80211_mgmt, ++ u.action.u.chan_switch.variable); + + pframe = rtw_set_ie23a_ch_switch (pframe, &pattrib->pktlen, 0, + new_ch, 0); diff --git a/debian/patches/features/all/r8723au/0036-staging-rtl8723au-issue_action_BSSCoexistPacket-Use-.patch b/debian/patches/features/all/r8723au/0036-staging-rtl8723au-issue_action_BSSCoexistPacket-Use-.patch new file mode 100644 index 000000000..330b7c0fc --- /dev/null +++ b/debian/patches/features/all/r8723au/0036-staging-rtl8723au-issue_action_BSSCoexistPacket-Use-.patch @@ -0,0 +1,88 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:15 +0200 +Subject: [036/249] staging: rtl8723au: issue_action_BSSCoexistPacket(): Use + struct ieee80211_mgmt +Origin: https://git.kernel.org/linus/85d5120d5234f5655662b4eda697c0b1af72bca4 + +This gets rid of the rtw_set_fixed_ie23a() usage here. Note that this +abuses ieee80211_mgmt.u.action.u.chan_switch for now, since the +correct defines are currently missing, and this one matches. + +Need to fix up the definitions in ieee80211.h and afterwards fix it up +here. + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 35 ++++++++++++++------------- + 1 file changed, 18 insertions(+), 17 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index b397029..eedac9a 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -4177,11 +4177,10 @@ out: + static void issue_action_BSSCoexistPacket(struct rtw_adapter *padapter) + { + struct list_head *plist, *phead, *ptmp; +- unsigned char category, action; + struct xmit_frame *pmgntframe; + struct pkt_attrib *pattrib; + u8 *pframe; +- struct ieee80211_hdr *pwlanhdr; ++ struct ieee80211_mgmt *mgmt; + struct wlan_network *pnetwork; + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; +@@ -4201,9 +4200,6 @@ static void issue_action_BSSCoexistPacket(struct rtw_adapter *padapter) + + DBG_8723A("%s\n", __func__); + +- category = WLAN_CATEGORY_PUBLIC; +- action = ACT_PUBLIC_BSSCOEXIST; +- + pmgntframe = alloc_mgtxmitframe23a(pxmitpriv); + if (!pmgntframe) + return; +@@ -4215,24 +4211,29 @@ static void issue_action_BSSCoexistPacket(struct rtw_adapter *padapter) + memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET); + + pframe = (u8 *)pmgntframe->buf_addr + TXDESC_OFFSET; +- pwlanhdr = (struct ieee80211_hdr *)pframe; ++ mgmt = (struct ieee80211_mgmt *)pframe; + +- pwlanhdr->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT | +- IEEE80211_STYPE_ACTION); ++ mgmt->frame_control = ++ cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_ACTION); + +- ether_addr_copy(pwlanhdr->addr1, get_my_bssid23a(&pmlmeinfo->network)); +- ether_addr_copy(pwlanhdr->addr2, myid(&padapter->eeprompriv)); +- ether_addr_copy(pwlanhdr->addr3, get_my_bssid23a(&pmlmeinfo->network)); ++ ether_addr_copy(mgmt->da, get_my_bssid23a(&pmlmeinfo->network)); ++ ether_addr_copy(mgmt->sa, myid(&padapter->eeprompriv)); ++ ether_addr_copy(mgmt->bssid, get_my_bssid23a(&pmlmeinfo->network)); + +- pwlanhdr->seq_ctrl = +- cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq)); ++ mgmt->seq_ctrl = cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq)); + pmlmeext->mgnt_seq++; + +- pframe += sizeof(struct ieee80211_hdr_3addr); +- pattrib->pktlen = sizeof(struct ieee80211_hdr_3addr); ++ mgmt->u.action.category = WLAN_CATEGORY_PUBLIC; ++ /* ++ * This is cheating, but as there is currently no coexist_action ++ * defined in struct struct ieee80211_mgmt, abuse chan_switch ++ * for now, since it matches. ++ */ ++ mgmt->u.action.u.chan_switch.action_code = ACT_PUBLIC_BSSCOEXIST; + +- pframe = rtw_set_fixed_ie23a(pframe, 1, &category, &pattrib->pktlen); +- pframe = rtw_set_fixed_ie23a(pframe, 1, &action, &pattrib->pktlen); ++ pframe = mgmt->u.action.u.chan_switch.variable; ++ pattrib->pktlen = offsetof(struct ieee80211_mgmt, ++ u.action.u.chan_switch.variable); + + if (pmlmepriv->num_FortyMHzIntolerant > 0) { + u8 iedata = BIT(2);/* 20 MHz BSS Width Request */ diff --git a/debian/patches/features/all/r8723au/0037-staging-rtl8723au-Do-not-xmit-BSS-Coexistence-manage.patch b/debian/patches/features/all/r8723au/0037-staging-rtl8723au-Do-not-xmit-BSS-Coexistence-manage.patch new file mode 100644 index 000000000..21b25f90c --- /dev/null +++ b/debian/patches/features/all/r8723au/0037-staging-rtl8723au-Do-not-xmit-BSS-Coexistence-manage.patch @@ -0,0 +1,174 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:16 +0200 +Subject: [037/249] staging: rtl8723au: Do not xmit BSS Coexistence management + action frames +Origin: https://git.kernel.org/linus/372713a942c7eee27fe67a661902c6e30c014930 + +The driver should not be issuing BSS Coexistence management action +frames when scanning. This isn't required by the spec, and if needed, +these should come from wpa_s instead. + +Recommended by Johannes Berg. + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 138 -------------------------- + 1 file changed, 138 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index eedac9a..051ea49 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -4174,140 +4174,6 @@ out: + dump_mgntframe23a(padapter, pmgntframe); + } + +-static void issue_action_BSSCoexistPacket(struct rtw_adapter *padapter) +-{ +- struct list_head *plist, *phead, *ptmp; +- struct xmit_frame *pmgntframe; +- struct pkt_attrib *pattrib; +- u8 *pframe; +- struct ieee80211_mgmt *mgmt; +- struct wlan_network *pnetwork; +- struct xmit_priv *pxmitpriv = &padapter->xmitpriv; +- struct mlme_priv *pmlmepriv = &padapter->mlmepriv; +- struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; +- struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; +- struct rtw_queue *queue = &pmlmepriv->scanned_queue; +- u8 InfoContent[16] = {0}; +- u8 ICS[8][15]; +- int i; +- +- if (pmlmepriv->num_FortyMHzIntolerant == 0 || +- pmlmepriv->num_sta_no_ht == 0) +- return; +- +- if (pmlmeinfo->bwmode_updated) +- return; +- +- DBG_8723A("%s\n", __func__); +- +- pmgntframe = alloc_mgtxmitframe23a(pxmitpriv); +- if (!pmgntframe) +- return; +- +- /* update attribute */ +- pattrib = &pmgntframe->attrib; +- update_mgntframe_attrib23a(padapter, pattrib); +- +- memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET); +- +- pframe = (u8 *)pmgntframe->buf_addr + TXDESC_OFFSET; +- mgmt = (struct ieee80211_mgmt *)pframe; +- +- mgmt->frame_control = +- cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_ACTION); +- +- ether_addr_copy(mgmt->da, get_my_bssid23a(&pmlmeinfo->network)); +- ether_addr_copy(mgmt->sa, myid(&padapter->eeprompriv)); +- ether_addr_copy(mgmt->bssid, get_my_bssid23a(&pmlmeinfo->network)); +- +- mgmt->seq_ctrl = cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq)); +- pmlmeext->mgnt_seq++; +- +- mgmt->u.action.category = WLAN_CATEGORY_PUBLIC; +- /* +- * This is cheating, but as there is currently no coexist_action +- * defined in struct struct ieee80211_mgmt, abuse chan_switch +- * for now, since it matches. +- */ +- mgmt->u.action.u.chan_switch.action_code = ACT_PUBLIC_BSSCOEXIST; +- +- pframe = mgmt->u.action.u.chan_switch.variable; +- pattrib->pktlen = offsetof(struct ieee80211_mgmt, +- u.action.u.chan_switch.variable); +- +- if (pmlmepriv->num_FortyMHzIntolerant > 0) { +- u8 iedata = BIT(2);/* 20 MHz BSS Width Request */ +- +- pframe = rtw_set_ie23a(pframe, WLAN_EID_BSS_COEX_2040, 1, +- &iedata, &pattrib->pktlen); +- } +- +- if (pmlmepriv->num_sta_no_ht <= 0) +- goto out; +- +- memset(ICS, 0, sizeof(ICS)); +- +- spin_lock_bh(&pmlmepriv->scanned_queue.lock); +- +- phead = get_list_head(queue); +- plist = phead->next; +- +- list_for_each_safe(plist, ptmp, phead) { +- const u8 *p; +- struct wlan_bssid_ex *pbss_network; +- +- pnetwork = container_of(plist, struct wlan_network, list); +- +- pbss_network = &pnetwork->network; +- +- p = cfg80211_find_ie(WLAN_EID_HT_CAPABILITY, +- pbss_network->IEs + _FIXED_IE_LENGTH_, +- pbss_network->IELength -_FIXED_IE_LENGTH_); +- if (!p || !p[1]) { /* non-HT */ +- if (pbss_network->DSConfig <= 0 || +- pbss_network->DSConfig > 14) +- continue; +- +- ICS[0][pbss_network->DSConfig] = 1; +- +- if (ICS[0][0] == 0) +- ICS[0][0] = 1; +- } +- +- } +- +- spin_unlock_bh(&pmlmepriv->scanned_queue.lock); +- +- for (i = 0; i < 8;i++) { +- if (ICS[i][0] == 1) { +- int j, k = 0; +- +- InfoContent[k] = i; +- /* SET_BSS_INTOLERANT_ELE_REG_CLASS(InfoContent, i); */ +- k++; +- +- for (j = 1; j <= 14; j++) { +- if (ICS[i][j] == 1) { +- if (k < 16) { +- /* channel number */ +- InfoContent[k] = j; +- k++; +- } +- } +- } +- +- pframe = rtw_set_ie23a(pframe, +- EID_BSSIntolerantChlReport, k, +- InfoContent, &pattrib->pktlen); +- } +- } +- +-out: +- pattrib->last_txcmdsz = pattrib->pktlen; +- +- dump_mgntframe23a(padapter, pmgntframe); +-} +- + int send_delba23a(struct rtw_adapter *padapter, u8 initiator, u8 *addr) + { + struct sta_priv *pstapriv = &padapter->stapriv; +@@ -4485,10 +4351,6 @@ static void rtw_site_survey(struct rtw_adapter *padapter) + + pmlmeext->chan_scan_time = SURVEY_TO; + pmlmeext->sitesurvey_res.state = SCAN_DISABLE; +- +- issue_action_BSSCoexistPacket(padapter); +- issue_action_BSSCoexistPacket(padapter); +- issue_action_BSSCoexistPacket(padapter); + } + + return; diff --git a/debian/patches/features/all/r8723au/0038-staging-rtl8723au-Let-cfg80211-handle-public-action-.patch b/debian/patches/features/all/r8723au/0038-staging-rtl8723au-Let-cfg80211-handle-public-action-.patch new file mode 100644 index 000000000..f0463fb1c --- /dev/null +++ b/debian/patches/features/all/r8723au/0038-staging-rtl8723au-Let-cfg80211-handle-public-action-.patch @@ -0,0 +1,357 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:17 +0200 +Subject: [038/249] staging: rtl8723au: Let cfg80211 handle public action + management frames +Origin: https://git.kernel.org/linus/2e74d336edb945b4a1f851e821001093e4094729 + +The driver shouldn't be dealing with public action management frames. +Let these go directly to the cfg80211 layer which can defer them to +userland if needed. + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_ieee80211.c | 26 ---- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 132 +++------------------ + drivers/staging/rtl8723au/include/ieee80211.h | 23 +--- + drivers/staging/rtl8723au/include/ioctl_cfg80211.h | 3 - + drivers/staging/rtl8723au/include/wifi.h | 1 - + drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 43 +------ + 6 files changed, 18 insertions(+), 210 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_ieee80211.c b/drivers/staging/rtl8723au/core/rtw_ieee80211.c +index fa3ca9e..9f6dd77 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ieee80211.c ++++ b/drivers/staging/rtl8723au/core/rtw_ieee80211.c +@@ -894,29 +894,3 @@ u16 rtw_mcs_rate23a(u8 rf_type, u8 bw_40MHz, u8 short_GI_20, u8 short_GI_40, + } + return max_rate; + } +- +-static const char *_action_public_str23a[] = { +- "ACT_PUB_BSSCOEXIST", +- "ACT_PUB_DSE_ENABLE", +- "ACT_PUB_DSE_DEENABLE", +- "ACT_PUB_DSE_REG_LOCATION", +- "ACT_PUB_EXT_CHL_SWITCH", +- "ACT_PUB_DSE_MSR_REQ", +- "ACT_PUB_DSE_MSR_RPRT", +- "ACT_PUB_MP", +- "ACT_PUB_DSE_PWR_CONSTRAINT", +- "ACT_PUB_VENDOR", +- "ACT_PUB_GAS_INITIAL_REQ", +- "ACT_PUB_GAS_INITIAL_RSP", +- "ACT_PUB_GAS_COMEBACK_REQ", +- "ACT_PUB_GAS_COMEBACK_RSP", +- "ACT_PUB_TDLS_DISCOVERY_RSP", +- "ACT_PUB_LOCATION_TRACK", +- "ACT_PUB_RSVD", +-}; +- +-const char *action_public_str23a(u8 action) +-{ +- action = (action >= ACT_PUBLIC_MAX) ? ACT_PUBLIC_MAX : action; +- return _action_public_str23a[action]; +-} +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index 051ea49..80a822c 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -2135,136 +2135,32 @@ static int OnAction23a_back23a(struct rtw_adapter *padapter, + return _SUCCESS; + } + +-static int rtw_action_public_decache(struct recv_frame *recv_frame, s32 token) +-{ +- struct rtw_adapter *adapter = recv_frame->adapter; +- struct mlme_ext_priv *mlmeext = &adapter->mlmeextpriv; +- struct sk_buff *skb = recv_frame->pkt; +- struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data; +- u16 seq_ctrl; +- +- seq_ctrl = ((recv_frame->attrib.seq_num&0xffff) << 4) | +- (recv_frame->attrib.frag_num & 0xf); +- +- if (ieee80211_has_retry(hdr->frame_control)) { +- if (token >= 0) { +- if ((seq_ctrl == mlmeext->action_public_rxseq) && +- (token == mlmeext->action_public_dialog_token)) { +- DBG_8723A("%s(%s): seq_ctrl = 0x%x, " +- "rxseq = 0x%x, token:%d\n", __func__, +- adapter->pnetdev->name, seq_ctrl, +- mlmeext->action_public_rxseq, token); +- return _FAIL; +- } +- } else { +- if (seq_ctrl == mlmeext->action_public_rxseq) { +- DBG_8723A("%s(%s): seq_ctrl = 0x%x, " +- "rxseq = 0x%x\n", __func__, +- adapter->pnetdev->name, seq_ctrl, +- mlmeext->action_public_rxseq); +- return _FAIL; +- } +- } +- } +- +- mlmeext->action_public_rxseq = seq_ctrl; +- +- if (token >= 0) +- mlmeext->action_public_dialog_token = token; +- +- return _SUCCESS; +-} +- +-static int on_action_public23a_p2p(struct recv_frame *precv_frame) +-{ +- struct sk_buff *skb = precv_frame->pkt; +- u8 *pframe = skb->data; +- u8 *frame_body; +- u8 dialogToken = 0; +- +- frame_body = (unsigned char *) +- (pframe + sizeof(struct ieee80211_hdr_3addr)); +- +- dialogToken = frame_body[7]; +- +- if (rtw_action_public_decache(precv_frame, dialogToken) == _FAIL) +- return _FAIL; +- +- return _SUCCESS; +-} +- +-static int on_action_public23a_vendor(struct recv_frame *precv_frame) +-{ +- unsigned int ret = _FAIL; +- struct sk_buff *skb = precv_frame->pkt; +- u8 *pframe = skb->data; +- u8 *frame_body = pframe + sizeof(struct ieee80211_hdr_3addr); +- +- if (!memcmp(frame_body + 2, P2P_OUI23A, 4)) { +- ret = on_action_public23a_p2p(precv_frame); +- } +- +- return ret; +-} +- +-static unsigned int +-on_action_public23a_default(struct recv_frame *precv_frame, u8 action) +-{ +- unsigned int ret = _FAIL; +- struct sk_buff *skb = precv_frame->pkt; +- u8 *pframe = skb->data; +- uint frame_len = skb->len; +- u8 *frame_body = pframe + sizeof(struct ieee80211_hdr_3addr); +- u8 token; +- struct rtw_adapter *adapter = precv_frame->adapter; +- int cnt = 0; +- char msg[64]; +- +- token = frame_body[2]; +- +- if (rtw_action_public_decache(precv_frame, token) == _FAIL) +- goto exit; +- +- cnt += sprintf((msg+cnt), "%s(token:%u)", +- action_public_str23a(action), token); +- rtw_cfg80211_rx_action(adapter, pframe, frame_len, msg); +- +- ret = _SUCCESS; +- +-exit: +- return ret; +-} +- + static int on_action_public23a(struct rtw_adapter *padapter, + struct recv_frame *precv_frame) + { +- int ret = _FAIL; + struct sk_buff *skb = precv_frame->pkt; + struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data; + u8 *pframe = skb->data; +- u8 *frame_body = pframe + sizeof(struct ieee80211_hdr_3addr); +- u8 category, action; ++ int freq, channel; + + /* check RA matches or not */ + if (!ether_addr_equal(myid(&padapter->eeprompriv), hdr->addr1)) +- goto exit; ++ return _FAIL; + +- category = frame_body[0]; +- if (category != WLAN_CATEGORY_PUBLIC) +- goto exit; ++ channel = rtw_get_oper_ch23a(padapter); + +- action = frame_body[1]; +- switch (action) { +- case ACT_PUBLIC_VENDOR: +- ret = on_action_public23a_vendor(precv_frame); +- break; +- default: +- ret = on_action_public23a_default(precv_frame, action); +- break; +- } ++ if (channel <= RTW_CH_MAX_2G_CHANNEL) ++ freq = ieee80211_channel_to_frequency(channel, ++ IEEE80211_BAND_2GHZ); ++ else ++ freq = ieee80211_channel_to_frequency(channel, ++ IEEE80211_BAND_5GHZ); + +-exit: +- return ret; ++ if (cfg80211_rx_mgmt(padapter->rtw_wdev, freq, 0, pframe, ++ skb->len, 0, GFP_ATOMIC)) ++ return _SUCCESS; ++ ++ return _FAIL; + } + + static int +diff --git a/drivers/staging/rtl8723au/include/ieee80211.h b/drivers/staging/rtl8723au/include/ieee80211.h +index 0ef6e79..f6e982e 100644 +--- a/drivers/staging/rtl8723au/include/ieee80211.h ++++ b/drivers/staging/rtl8723au/include/ieee80211.h +@@ -315,6 +315,7 @@ struct ieee80211_snap_hdr { + #define MAX_RATES_LENGTH 12 + #define MAX_RATES_EX_LENGTH 16 + #define MAX_CHANNEL_NUMBER 161 ++#define RTW_CH_MAX_2G_CHANNEL 14 /* Max channel in 2G band */ + + #define MAX_WPA_IE_LEN 256 + #define MAX_WPS_IE_LEN 256 +@@ -335,26 +336,6 @@ join_res: + + #define MAXTID 16 + +-enum _PUBLIC_ACTION{ +- ACT_PUBLIC_BSSCOEXIST = 0, /* 20/40 BSS Coexistence */ +- ACT_PUBLIC_DSE_ENABLE = 1, +- ACT_PUBLIC_DSE_DEENABLE = 2, +- ACT_PUBLIC_DSE_REG_LOCATION = 3, +- ACT_PUBLIC_EXT_CHL_SWITCH = 4, +- ACT_PUBLIC_DSE_MSR_REQ = 5, +- ACT_PUBLIC_DSE_MSR_RPRT = 6, +- ACT_PUBLIC_MP = 7, /* Measurement Pilot */ +- ACT_PUBLIC_DSE_PWR_CONSTRAINT = 8, +- ACT_PUBLIC_VENDOR = 9, /* for WIFI_DIRECT */ +- ACT_PUBLIC_GAS_INITIAL_REQ = 10, +- ACT_PUBLIC_GAS_INITIAL_RSP = 11, +- ACT_PUBLIC_GAS_COMEBACK_REQ = 12, +- ACT_PUBLIC_GAS_COMEBACK_RSP = 13, +- ACT_PUBLIC_TDLS_DISCOVERY_RSP = 14, +- ACT_PUBLIC_LOCATION_TRACK = 15, +- ACT_PUBLIC_MAX +-}; +- + #define WME_OUI_TYPE 2 + #define WME_OUI_SUBTYPE_INFORMATION_ELEMENT 0 + #define WME_OUI_SUBTYPE_PARAMETER_ELEMENT 1 +@@ -446,6 +427,4 @@ void rtw_get_bcn_info23a(struct wlan_network *pnetwork); + u16 rtw_mcs_rate23a(u8 rf_type, u8 bw_40MHz, u8 short_GI_20, u8 short_GI_40, + struct ieee80211_mcs_info *mcs); + +-const char *action_public_str23a(u8 action); +- + #endif /* IEEE80211_H */ +diff --git a/drivers/staging/rtl8723au/include/ioctl_cfg80211.h b/drivers/staging/rtl8723au/include/ioctl_cfg80211.h +index 63e921f..3a4ead5 100644 +--- a/drivers/staging/rtl8723au/include/ioctl_cfg80211.h ++++ b/drivers/staging/rtl8723au/include/ioctl_cfg80211.h +@@ -61,9 +61,6 @@ void rtw_cfg80211_indicate_sta_disassoc(struct rtw_adapter *padapter, + unsigned char *da, unsigned short reason); + #endif /* CONFIG_8723AU_AP_MODE */ + +-void rtw_cfg80211_rx_action(struct rtw_adapter *adapter, u8 *frame, +- uint frame_len, const char*msg); +- + bool rtw_cfg80211_pwr_mgmt(struct rtw_adapter *adapter); + + #endif /* __IOCTL_CFG80211_H__ */ +diff --git a/drivers/staging/rtl8723au/include/wifi.h b/drivers/staging/rtl8723au/include/wifi.h +index 07ea4c6..3f64546 100644 +--- a/drivers/staging/rtl8723au/include/wifi.h ++++ b/drivers/staging/rtl8723au/include/wifi.h +@@ -32,7 +32,6 @@ + #define _AUTH_IE_OFFSET_ 6 + #define _DEAUTH_IE_OFFSET_ 0 + #define _BEACON_IE_OFFSET_ 12 +-#define _PUBLIC_ACTION_IE_OFFSET_ 8 + + #define _FIXED_IE_LENGTH_ _BEACON_IE_OFFSET_ + +diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +index d2fa9b20..0d581c8 100644 +--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c ++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +@@ -26,8 +26,6 @@ + #define RTW_MAX_REMAIN_ON_CHANNEL_DURATION 65535 /* ms */ + #define RTW_MAX_NUM_PMKIDS 4 + +-#define RTW_CH_MAX_2G_CHANNEL 14 /* Max channel in 2G band */ +- + static const u32 rtw_cipher_suites[] = { + WLAN_CIPHER_SUITE_WEP40, + WLAN_CIPHER_SUITE_WEP104, +@@ -2593,11 +2591,8 @@ static int rtw_cfg80211_monitor_if_xmit_entry(struct sk_buff *skb, + MAC_ARG(mgmt->da), __func__, ndev->name); + category = mgmt->u.action.category; + action = mgmt->u.action.u.wme_action.action_code; +- if (mgmt->u.action.category == WLAN_CATEGORY_PUBLIC) +- DBG_8723A("RTW_Tx:%s\n", action_public_str23a(action)); +- else +- DBG_8723A("RTW_Tx:category(%u), action(%u)\n", category, +- action); ++ DBG_8723A("RTW_Tx:category(%u), action(%u)\n", ++ category, action); + + /* starting alloc mgmt frame to dump it */ + pmgntframe = alloc_mgtxmitframe23a(pxmitpriv); +@@ -3011,34 +3006,6 @@ static int cfg80211_rtw_change_bss(struct wiphy *wiphy, struct net_device *ndev, + } + #endif /* CONFIG_8723AU_AP_MODE */ + +-void rtw_cfg80211_rx_action(struct rtw_adapter *adapter, u8 *frame, +- uint frame_len, const char *msg) +-{ +- struct ieee80211_mgmt *hdr = (struct ieee80211_mgmt *)frame; +- s32 freq; +- int channel; +- +- channel = rtw_get_oper_ch23a(adapter); +- +- DBG_8723A("RTW_Rx:cur_ch =%d\n", channel); +- if (msg) +- DBG_8723A("RTW_Rx:%s\n", msg); +- else +- DBG_8723A("RTW_Rx:category(%u), action(%u)\n", +- hdr->u.action.category, +- hdr->u.action.u.wme_action.action_code); +- +- if (channel <= RTW_CH_MAX_2G_CHANNEL) +- freq = ieee80211_channel_to_frequency(channel, +- IEEE80211_BAND_2GHZ); +- else +- freq = ieee80211_channel_to_frequency(channel, +- IEEE80211_BAND_5GHZ); +- +- cfg80211_rx_mgmt(adapter->rtw_wdev, freq, 0, frame, frame_len, +- 0, GFP_ATOMIC); +-} +- + static int _cfg80211_rtw_mgmt_tx(struct rtw_adapter *padapter, u8 tx_ch, + const u8 *buf, size_t len) + { +@@ -3145,11 +3112,7 @@ static int cfg80211_rtw_mgmt_tx(struct wiphy *wiphy, struct wireless_dev *wdev, + MAC_ARG(hdr->da)); + category = hdr->u.action.category; + action = hdr->u.action.u.wme_action.action_code; +- if (category == WLAN_CATEGORY_PUBLIC) +- DBG_8723A("RTW_Tx:%s\n", action_public_str23a(action)); +- else +- DBG_8723A("RTW_Tx:category(%u), action(%u)\n", +- category, action); ++ DBG_8723A("RTW_Tx:category(%u), action(%u)\n", category, action); + + do { + dump_cnt++; diff --git a/debian/patches/features/all/r8723au/0039-staging-rtl8723au-ioctl_cfg80211.c-Use-struct-ieee80.patch b/debian/patches/features/all/r8723au/0039-staging-rtl8723au-ioctl_cfg80211.c-Use-struct-ieee80.patch new file mode 100644 index 000000000..e0dda4286 --- /dev/null +++ b/debian/patches/features/all/r8723au/0039-staging-rtl8723au-ioctl_cfg80211.c-Use-struct-ieee80.patch @@ -0,0 +1,74 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:18 +0200 +Subject: [039/249] staging: rtl8723au: ioctl_cfg80211.c: Use struct + ieee80211_mgmt to build mgmt frame +Origin: https://git.kernel.org/linus/cc531f6154167893f1cf8ab084871fe06b38fb2b + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 30 ++++++++--------------- + 1 file changed, 10 insertions(+), 20 deletions(-) + +diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +index 0d581c8..2fdc2b5 100644 +--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c ++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +@@ -2437,17 +2437,15 @@ void rtw_cfg80211_indicate_sta_disassoc(struct rtw_adapter *padapter, + { + s32 freq; + int channel; +- u8 *pmgmt_frame; + uint frame_len; +- struct ieee80211_hdr *pwlanhdr; +- u8 mgmt_buf[128]; ++ struct ieee80211_mgmt mgmt; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; + struct net_device *ndev = padapter->pnetdev; + + DBG_8723A("%s(padapter =%p,%s)\n", __func__, padapter, ndev->name); + +- memset(mgmt_buf, 0, 128); ++ memset(&mgmt, 0, sizeof(struct ieee80211_mgmt)); + + #if defined(RTW_USE_CFG80211_STA_EVENT) + cfg80211_del_sta(ndev, da, GFP_ATOMIC); +@@ -2460,29 +2458,21 @@ void rtw_cfg80211_indicate_sta_disassoc(struct rtw_adapter *padapter, + freq = ieee80211_channel_to_frequency(channel, + IEEE80211_BAND_5GHZ); + +- pmgmt_frame = mgmt_buf; +- pwlanhdr = (struct ieee80211_hdr *)pmgmt_frame; +- +- pwlanhdr->frame_control = ++ mgmt.frame_control = + cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_DEAUTH); + +- ether_addr_copy(pwlanhdr->addr1, myid(&padapter->eeprompriv)); +- ether_addr_copy(pwlanhdr->addr2, da); +- ether_addr_copy(pwlanhdr->addr3, get_my_bssid23a(&pmlmeinfo->network)); ++ ether_addr_copy(mgmt.da, myid(&padapter->eeprompriv)); ++ ether_addr_copy(mgmt.sa, da); ++ ether_addr_copy(mgmt.bssid, get_my_bssid23a(&pmlmeinfo->network)); + +- pwlanhdr->seq_ctrl = +- cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq)); ++ mgmt.seq_ctrl = cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq)); + pmlmeext->mgnt_seq++; + +- pmgmt_frame += sizeof(struct ieee80211_hdr_3addr); +- frame_len = sizeof(struct ieee80211_hdr_3addr); ++ mgmt.u.disassoc.reason_code = cpu_to_le16(reason); + +- reason = cpu_to_le16(reason); +- pmgmt_frame = rtw_set_fixed_ie23a(pmgmt_frame, +- WLAN_REASON_PREV_AUTH_NOT_VALID, +- (unsigned char *)&reason, &frame_len); ++ frame_len = sizeof(struct ieee80211_hdr_3addr) + 2; + +- cfg80211_rx_mgmt(padapter->rtw_wdev, freq, 0, mgmt_buf, frame_len, ++ cfg80211_rx_mgmt(padapter->rtw_wdev, freq, 0, (u8 *)&mgmt, frame_len, + 0, GFP_ATOMIC); + #endif /* defined(RTW_USE_CFG80211_STA_EVENT) */ + } diff --git a/debian/patches/features/all/r8723au/0040-staging-rtl8723au-issue_action_BA23a-Use-struct-ieee.patch b/debian/patches/features/all/r8723au/0040-staging-rtl8723au-issue_action_BA23a-Use-struct-ieee.patch new file mode 100644 index 000000000..c10faa1ca --- /dev/null +++ b/debian/patches/features/all/r8723au/0040-staging-rtl8723au-issue_action_BA23a-Use-struct-ieee.patch @@ -0,0 +1,247 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:19 +0200 +Subject: [040/249] staging: rtl8723au: issue_action_BA23a(): Use struct + ieee80211_mgmt to build action frames +Origin: https://git.kernel.org/linus/a491548d6641f2dc4a83bb6ab337cccfdd53afe4 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 149 +++++++++++++------------- + 1 file changed, 74 insertions(+), 75 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index 80a822c..ff0800e 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -3892,17 +3892,15 @@ void issue_action_BA23a(struct rtw_adapter *padapter, + const unsigned char *raddr, + unsigned char action, unsigned short status) + { +- u8 category = WLAN_CATEGORY_BACK; + u16 start_seq; + u16 BA_para_set; +- u16 reason_code; + u16 BA_timeout_value; + u16 BA_starting_seqctrl; ++ u16 BA_para; + int max_rx_ampdu_factor; + struct xmit_frame *pmgntframe; + struct pkt_attrib *pattrib; +- u8 *pframe; +- struct ieee80211_hdr *pwlanhdr; ++ struct ieee80211_mgmt *mgmt; + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; +@@ -3911,8 +3909,7 @@ void issue_action_BA23a(struct rtw_adapter *padapter, + struct registry_priv *pregpriv = &padapter->registrypriv; + u8 tendaAPMac[] = {0xC8, 0x3A, 0x35}; + +- DBG_8723A("%s, category =%d, action =%d, status =%d\n", +- __func__, category, action, status); ++ DBG_8723A("%s, action =%d, status =%d\n", __func__, action, status); + + pmgntframe = alloc_mgtxmitframe23a(pxmitpriv); + if (!pmgntframe) +@@ -3924,40 +3921,36 @@ void issue_action_BA23a(struct rtw_adapter *padapter, + + memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET); + +- pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET; +- pwlanhdr = (struct ieee80211_hdr *)pframe; ++ mgmt = (struct ieee80211_mgmt *)(pmgntframe->buf_addr + TXDESC_OFFSET); + +- pwlanhdr->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT | +- IEEE80211_STYPE_ACTION); ++ mgmt->frame_control = ++ cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_ACTION); + +- /* memcpy(pwlanhdr->addr1, get_my_bssid23a(&pmlmeinfo->network), ETH_ALEN); */ +- ether_addr_copy(pwlanhdr->addr1, raddr); +- ether_addr_copy(pwlanhdr->addr2, myid(&padapter->eeprompriv)); +- ether_addr_copy(pwlanhdr->addr3, get_my_bssid23a(&pmlmeinfo->network)); ++ ether_addr_copy(mgmt->da, raddr); ++ ether_addr_copy(mgmt->sa, myid(&padapter->eeprompriv)); ++ ether_addr_copy(mgmt->bssid, get_my_bssid23a(&pmlmeinfo->network)); + +- pwlanhdr->seq_ctrl = +- cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq)); ++ mgmt->seq_ctrl = cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq)); + pmlmeext->mgnt_seq++; + +- pframe += sizeof(struct ieee80211_hdr_3addr); +- pattrib->pktlen = sizeof(struct ieee80211_hdr_3addr); ++ mgmt->u.action.category = WLAN_CATEGORY_BACK; + +- pframe = rtw_set_fixed_ie23a(pframe, 1, &category, &pattrib->pktlen); +- pframe = rtw_set_fixed_ie23a(pframe, 1, &action, &pattrib->pktlen); ++ pattrib->pktlen = sizeof(struct ieee80211_hdr_3addr) + 1; + + status = cpu_to_le16(status); + +- if (category != 3) +- goto out; ++ switch (action) { ++ case WLAN_ACTION_ADDBA_REQ: ++ pattrib->pktlen += sizeof(mgmt->u.action.u.addba_req); ++ ++ mgmt->u.action.u.addba_req.action_code = action; + +- switch (action) +- { +- case 0: /* ADDBA req */ + do { + pmlmeinfo->dialogToken++; + } while (pmlmeinfo->dialogToken == 0); +- pframe = rtw_set_fixed_ie23a(pframe, 1, &pmlmeinfo->dialogToken, +- &pattrib->pktlen); ++ ++ mgmt->u.action.u.addba_req.dialog_token = ++ pmlmeinfo->dialogToken; + + if (rtl8723a_BT_coexist(padapter) && + rtl8723a_BT_using_antenna_1(padapter) && +@@ -3978,51 +3971,60 @@ void issue_action_BA23a(struct rtw_adapter *padapter, + /* immediate ack & 64 buffer size */ + BA_para_set = (0x1002 | ((status & 0xf) << 2)); + } +- BA_para_set = cpu_to_le16(BA_para_set); +- pframe = rtw_set_fixed_ie23a(pframe, 2, +- (unsigned char *)&BA_para_set, +- &pattrib->pktlen); ++ ++ put_unaligned_le16(BA_para_set, ++ &mgmt->u.action.u.addba_req.capab); + + BA_timeout_value = 5000;/* 5ms */ + BA_timeout_value = cpu_to_le16(BA_timeout_value); +- pframe = rtw_set_fixed_ie23a(pframe, 2, (unsigned char *) +- &BA_timeout_value, +- &pattrib->pktlen); ++ put_unaligned_le16(BA_timeout_value, ++ &mgmt->u.action.u.addba_req.timeout); ++ ++ psta = rtw_get_stainfo23a(pstapriv, raddr); ++ if (psta) { ++ int idx; + +- /* if ((psta = rtw_get_stainfo23a(pstapriv, +- pmlmeinfo->network.MacAddress)) != NULL) */ +- if ((psta = rtw_get_stainfo23a(pstapriv, raddr))) { +- start_seq = (psta->sta_xmitpriv.txseq_tid[status & 0x07]&0xfff) + 1; ++ idx = status & 0x07; ++ start_seq = ++ (psta->sta_xmitpriv.txseq_tid[idx] & 0xfff) + 1; + + DBG_8723A("BA_starting_seqctrl = %d for TID =%d\n", +- start_seq, status & 0x07); ++ start_seq, idx); + +- psta->BA_starting_seqctrl[status & 0x07] = start_seq; ++ psta->BA_starting_seqctrl[idx] = start_seq; + + BA_starting_seqctrl = start_seq << 4; +- } ++ } else ++ BA_starting_seqctrl = 0; ++ ++ put_unaligned_le16(BA_starting_seqctrl, ++ &mgmt->u.action.u.addba_req.start_seq_num); + +- BA_starting_seqctrl = cpu_to_le16(BA_starting_seqctrl); +- pframe = rtw_set_fixed_ie23a(pframe, 2, (unsigned char *)&BA_starting_seqctrl, &pattrib->pktlen); + break; + +- case 1: /* ADDBA rsp */ +- pframe = rtw_set_fixed_ie23a(pframe, 1, &pmlmeinfo->ADDBA_req.dialog_token, &pattrib->pktlen); +- pframe = rtw_set_fixed_ie23a(pframe, 2, +- (unsigned char *)&status, +- &pattrib->pktlen); ++ case WLAN_ACTION_ADDBA_RESP: ++ pattrib->pktlen += sizeof(mgmt->u.action.u.addba_resp); ++ ++ mgmt->u.action.u.addba_resp.action_code = action; ++ mgmt->u.action.u.addba_resp.dialog_token = ++ pmlmeinfo->ADDBA_req.dialog_token; ++ put_unaligned_le16(status, ++ &mgmt->u.action.u.addba_resp.status); ++ + GetHalDefVar8192CUsb(padapter, HW_VAR_MAX_RX_AMPDU_FACTOR, + &max_rx_ampdu_factor); ++ ++ BA_para = le16_to_cpu(pmlmeinfo->ADDBA_req.BA_para_set) & 0x3f; + if (max_rx_ampdu_factor == IEEE80211_HT_MAX_AMPDU_64K) +- BA_para_set = ((le16_to_cpu(pmlmeinfo->ADDBA_req.BA_para_set) & 0x3f) | 0x1000); /* 64 buffer size */ ++ BA_para_set = BA_para | 0x1000; /* 64 buffer size */ + else if (max_rx_ampdu_factor == IEEE80211_HT_MAX_AMPDU_32K) +- BA_para_set = ((le16_to_cpu(pmlmeinfo->ADDBA_req.BA_para_set) & 0x3f) | 0x0800); /* 32 buffer size */ ++ BA_para_set = BA_para | 0x0800; /* 32 buffer size */ + else if (max_rx_ampdu_factor == IEEE80211_HT_MAX_AMPDU_16K) +- BA_para_set = ((le16_to_cpu(pmlmeinfo->ADDBA_req.BA_para_set) & 0x3f) | 0x0400); /* 16 buffer size */ ++ BA_para_set = BA_para | 0x0400; /* 16 buffer size */ + else if (max_rx_ampdu_factor == IEEE80211_HT_MAX_AMPDU_8K) +- BA_para_set = ((le16_to_cpu(pmlmeinfo->ADDBA_req.BA_para_set) & 0x3f) | 0x0200); /* 8 buffer size */ ++ BA_para_set = BA_para | 0x0200; /* 8 buffer size */ + else +- BA_para_set = ((le16_to_cpu(pmlmeinfo->ADDBA_req.BA_para_set) & 0x3f) | 0x1000); /* 64 buffer size */ ++ BA_para_set = BA_para | 0x1000; /* 64 buffer size */ + + if (rtl8723a_BT_coexist(padapter) && + rtl8723a_BT_using_antenna_1(padapter) && +@@ -4035,36 +4037,33 @@ void issue_action_BA23a(struct rtw_adapter *padapter, + } + + if (pregpriv->ampdu_amsdu == 0)/* disabled */ +- BA_para_set = cpu_to_le16(BA_para_set & ~BIT(0)); ++ BA_para_set &= ~BIT(0); + else if (pregpriv->ampdu_amsdu == 1)/* enabled */ +- BA_para_set = cpu_to_le16(BA_para_set | BIT(0)); +- else /* auto */ +- BA_para_set = cpu_to_le16(BA_para_set); +- +- pframe = rtw_set_fixed_ie23a(pframe, 2, +- (unsigned char *)&BA_para_set, +- &pattrib->pktlen); +- pframe = rtw_set_fixed_ie23a(pframe, 2, (unsigned char *)&pmlmeinfo->ADDBA_req.BA_timeout_value, &pattrib->pktlen); ++ BA_para_set |= BIT(0); ++ ++ put_unaligned_le16(BA_para_set, ++ &mgmt->u.action.u.addba_resp.capab); ++ ++ put_unaligned_le16(pmlmeinfo->ADDBA_req.BA_timeout_value, ++ &mgmt->u.action.u.addba_resp.timeout); ++ ++ pattrib->pktlen += 8; + break; +- case 2:/* DELBA */ ++ case WLAN_ACTION_DELBA: ++ pattrib->pktlen += sizeof(mgmt->u.action.u.delba); ++ ++ mgmt->u.action.u.delba.action_code = action; + BA_para_set = (status & 0x1F) << 3; +- BA_para_set = cpu_to_le16(BA_para_set); +- pframe = rtw_set_fixed_ie23a(pframe, 2, +- (unsigned char *)&BA_para_set, +- &pattrib->pktlen); +- +- reason_code = 37;/* Requested from peer STA as it does not +- want to use the mechanism */ +- reason_code = cpu_to_le16(reason_code); +- pframe = rtw_set_fixed_ie23a(pframe, 2, +- (unsigned char *)&reason_code, +- &pattrib->pktlen); ++ mgmt->u.action.u.delba.params = cpu_to_le16(BA_para_set); ++ mgmt->u.action.u.delba.reason_code = ++ cpu_to_le16(WLAN_REASON_QSTA_NOT_USE); ++ ++ pattrib->pktlen += 5; + break; + default: + break; + } + +-out: + pattrib->last_txcmdsz = pattrib->pktlen; + + dump_mgntframe23a(padapter, pmgntframe); diff --git a/debian/patches/features/all/r8723au/0041-staging-rtl8723au-Remove-obsolete-rtw_set_fixed_ie23.patch b/debian/patches/features/all/r8723au/0041-staging-rtl8723au-Remove-obsolete-rtw_set_fixed_ie23.patch new file mode 100644 index 000000000..65eac7c66 --- /dev/null +++ b/debian/patches/features/all/r8723au/0041-staging-rtl8723au-Remove-obsolete-rtw_set_fixed_ie23.patch @@ -0,0 +1,43 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:20 +0200 +Subject: [041/249] staging: rtl8723au: Remove obsolete rtw_set_fixed_ie23a() +Origin: https://git.kernel.org/linus/2a907fe46b861f16135c58580ce222c7abb02c2d + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_ieee80211.c | 8 -------- + drivers/staging/rtl8723au/include/ieee80211.h | 1 - + 2 files changed, 9 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_ieee80211.c b/drivers/staging/rtl8723au/core/rtw_ieee80211.c +index 9f6dd77..922b45e 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ieee80211.c ++++ b/drivers/staging/rtl8723au/core/rtw_ieee80211.c +@@ -124,14 +124,6 @@ int rtw_check_network_type23a(unsigned char *rate, int ratelen, int channel) + } + } + +-u8 *rtw_set_fixed_ie23a(unsigned char *pbuf, unsigned int len, +- unsigned char *source, unsigned int *frlen) +-{ +- memcpy((void *)pbuf, (void *)source, len); +- *frlen = *frlen + len; +- return pbuf + len; +-} +- + /* rtw_set_ie23a will update frame length */ + u8 *rtw_set_ie23a(u8 *pbuf, int index, uint len, const u8 *source, uint *frlen) + { +diff --git a/drivers/staging/rtl8723au/include/ieee80211.h b/drivers/staging/rtl8723au/include/ieee80211.h +index f6e982e..9e03d41 100644 +--- a/drivers/staging/rtl8723au/include/ieee80211.h ++++ b/drivers/staging/rtl8723au/include/ieee80211.h +@@ -388,7 +388,6 @@ struct rtw_ieee80211_channel { + /*, (channel)->orig_mag*/ \ + /*, (channel)->orig_mpwr*/ \ + +-u8 *rtw_set_fixed_ie23a(unsigned char *pbuf, unsigned int len, unsigned char *source, unsigned int *frlen); + u8 *rtw_set_ie23a(u8 *pbuf, int index, uint len, const u8 *source, uint *frlen); + + enum secondary_ch_offset { diff --git a/debian/patches/features/all/r8723au/0042-staging-rtl8723au-Remove-duplicate-defines-of-IEEE80.patch b/debian/patches/features/all/r8723au/0042-staging-rtl8723au-Remove-duplicate-defines-of-IEEE80.patch new file mode 100644 index 000000000..eba3b17de --- /dev/null +++ b/debian/patches/features/all/r8723au/0042-staging-rtl8723au-Remove-duplicate-defines-of-IEEE80.patch @@ -0,0 +1,52 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:21 +0200 +Subject: [042/249] staging: rtl8723au: Remove duplicate defines of + IEEE80211_HT_PARAM_CHA_SEC_* +Origin: https://git.kernel.org/linus/bf51cb6780a17b2ab64b6e6c0eacfc1b882a5d54 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_ieee80211.c | 10 ++++------ + drivers/staging/rtl8723au/include/ieee80211.h | 5 ----- + 2 files changed, 4 insertions(+), 11 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_ieee80211.c b/drivers/staging/rtl8723au/core/rtw_ieee80211.c +index 922b45e..9d0662c 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ieee80211.c ++++ b/drivers/staging/rtl8723au/core/rtw_ieee80211.c +@@ -153,14 +153,12 @@ inline u8 *rtw_set_ie23a_ch_switch (u8 *buf, u32 *buf_len, u8 ch_switch_mode, + + inline u8 hal_ch_offset_to_secondary_ch_offset23a(u8 ch_offset) + { +- if (ch_offset == HAL_PRIME_CHNL_OFFSET_DONT_CARE) +- return SCN; +- else if (ch_offset == HAL_PRIME_CHNL_OFFSET_LOWER) +- return SCB; ++ if (ch_offset == HAL_PRIME_CHNL_OFFSET_LOWER) ++ return IEEE80211_HT_PARAM_CHA_SEC_BELOW; + else if (ch_offset == HAL_PRIME_CHNL_OFFSET_UPPER) +- return SCA; ++ return IEEE80211_HT_PARAM_CHA_SEC_ABOVE; + +- return SCN; ++ return IEEE80211_HT_PARAM_CHA_SEC_NONE; + } + + inline u8 *rtw_set_ie23a_secondary_ch_offset(u8 *buf, u32 *buf_len, +diff --git a/drivers/staging/rtl8723au/include/ieee80211.h b/drivers/staging/rtl8723au/include/ieee80211.h +index 9e03d41..cb3f4fa 100644 +--- a/drivers/staging/rtl8723au/include/ieee80211.h ++++ b/drivers/staging/rtl8723au/include/ieee80211.h +@@ -390,11 +390,6 @@ struct rtw_ieee80211_channel { + + u8 *rtw_set_ie23a(u8 *pbuf, int index, uint len, const u8 *source, uint *frlen); + +-enum secondary_ch_offset { +- SCN = 0, /* no secondary channel */ +- SCA = 1, /* secondary channel above */ +- SCB = 3, /* secondary channel below */ +-}; + u8 hal_ch_offset_to_secondary_ch_offset23a(u8 ch_offset); + u8 *rtw_set_ie23a_ch_switch(u8 *buf, u32 *buf_len, u8 ch_switch_mode, u8 new_ch, u8 ch_switch_cnt); + u8 *rtw_set_ie23a_secondary_ch_offset(u8 *buf, u32 *buf_len, u8 secondary_ch_offset); diff --git a/debian/patches/features/all/r8723au/0043-staging-rtl8723au-Remove-unused-defines-WEP_KEY_LEN-.patch b/debian/patches/features/all/r8723au/0043-staging-rtl8723au-Remove-unused-defines-WEP_KEY_LEN-.patch new file mode 100644 index 000000000..2343d00b8 --- /dev/null +++ b/debian/patches/features/all/r8723au/0043-staging-rtl8723au-Remove-unused-defines-WEP_KEY_LEN-.patch @@ -0,0 +1,33 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:22 +0200 +Subject: [043/249] staging: rtl8723au: Remove unused #defines WEP_KEY_LEN and + MGMT_QUEUE_NUM +Origin: https://git.kernel.org/linus/e0ea5c8e665f14b1d018bc3f6e8f2f2f1d8a4b1d + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/include/ieee80211.h | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/drivers/staging/rtl8723au/include/ieee80211.h b/drivers/staging/rtl8723au/include/ieee80211.h +index cb3f4fa..7d22825 100644 +--- a/drivers/staging/rtl8723au/include/ieee80211.h ++++ b/drivers/staging/rtl8723au/include/ieee80211.h +@@ -27,8 +27,6 @@ + #endif + + +-#define MGMT_QUEUE_NUM 5 +- + #ifdef CONFIG_8723AU_AP_MODE + + /* STA flags */ +@@ -305,7 +303,6 @@ struct ieee80211_snap_hdr { + #define IEEE80211_OFDM_SHIFT_MASK_A 4 + + #define WEP_KEYS 4 +-#define WEP_KEY_LEN 13 + + + /* MAX_RATES_LENGTH needs to be 12. The spec says 8, and many APs diff --git a/debian/patches/features/all/r8723au/0044-staging-rtl8723au-Remove-some-unused-80211-header-pa.patch b/debian/patches/features/all/r8723au/0044-staging-rtl8723au-Remove-some-unused-80211-header-pa.patch new file mode 100644 index 000000000..ecf6afc86 --- /dev/null +++ b/debian/patches/features/all/r8723au/0044-staging-rtl8723au-Remove-some-unused-80211-header-pa.patch @@ -0,0 +1,37 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:23 +0200 +Subject: [044/249] staging: rtl8723au: Remove some unused 80211 header parsing + macros +Origin: https://git.kernel.org/linus/51dacaa7baa95b00f7369a687295f59d4e963d64 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/include/ieee80211.h | 10 ---------- + 1 file changed, 10 deletions(-) + +diff --git a/drivers/staging/rtl8723au/include/ieee80211.h b/drivers/staging/rtl8723au/include/ieee80211.h +index 7d22825..c2c57c7 100644 +--- a/drivers/staging/rtl8723au/include/ieee80211.h ++++ b/drivers/staging/rtl8723au/include/ieee80211.h +@@ -219,20 +219,10 @@ struct ieee80211_snap_hdr { + + #define SNAP_SIZE sizeof(struct ieee80211_snap_hdr) + +-#define WLAN_FC_GET_TYPE(fc) (fc & IEEE80211_FCTL_FTYPE) +-#define WLAN_FC_GET_STYPE(fc) (fc & IEEE80211_FCTL_STYPE) +- +-#define WLAN_QC_GET_TID(qc) (qc & 0x0f) +- +-#define WLAN_GET_SEQ_FRAG(seq) (seq & RTW_IEEE80211_SCTL_FRAG) +-#define WLAN_GET_SEQ_SEQ(seq) (seq & RTW_IEEE80211_SCTL_SEQ) +- +- + #define WLAN_REASON_JOIN_WRONG_CHANNEL 65534 + #define WLAN_REASON_EXPIRATION_CHK 65535 + + +- + #define IEEE80211_STATMASK_SIGNAL (1<<0) + #define IEEE80211_STATMASK_RSSI (1<<1) + #define IEEE80211_STATMASK_NOISE (1<<2) diff --git a/debian/patches/features/all/r8723au/0045-staging-rtl8723au-rtw_check_bcn_info23a-Use-ether_ad.patch b/debian/patches/features/all/r8723au/0045-staging-rtl8723au-rtw_check_bcn_info23a-Use-ether_ad.patch new file mode 100644 index 000000000..f2517bafe --- /dev/null +++ b/debian/patches/features/all/r8723au/0045-staging-rtl8723au-rtw_check_bcn_info23a-Use-ether_ad.patch @@ -0,0 +1,30 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:24 +0200 +Subject: [045/249] staging: rtl8723au: rtw_check_bcn_info23a(): Use + ether_addr_equal() to check BSSID +Origin: https://git.kernel.org/linus/0c45e6170d65332e9f314dbc36468884a650b412 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_wlan_util.c | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_wlan_util.c b/drivers/staging/rtl8723au/core/rtw_wlan_util.c +index 3195b44..a2c249f 100644 +--- a/drivers/staging/rtl8723au/core/rtw_wlan_util.c ++++ b/drivers/staging/rtl8723au/core/rtw_wlan_util.c +@@ -910,10 +910,9 @@ int rtw_check_bcn_info23a(struct rtw_adapter *Adapter, + return _FAIL; + } + +- if (memcmp(cur_network->network.MacAddress, mgmt->bssid, 6)) { +- DBG_8723A("Oops: rtw_check_network_encrypt linked but recv " +- "other bssid bcn\n" MAC_FMT MAC_FMT, +- MAC_ARG(mgmt->bssid), ++ if (!ether_addr_equal(cur_network->network.MacAddress, mgmt->bssid)) { ++ DBG_8723A("%s: linked but recv other bssid bcn" ++ MAC_FMT MAC_FMT "\n", __func__, MAC_ARG(mgmt->bssid), + MAC_ARG(cur_network->network.MacAddress)); + return true; + } diff --git a/debian/patches/features/all/r8723au/0046-staging-rtl8723au-rtw_check_bcn_info23a-Don-t-make-a.patch b/debian/patches/features/all/r8723au/0046-staging-rtl8723au-rtw_check_bcn_info23a-Don-t-make-a.patch new file mode 100644 index 000000000..eb49339e3 --- /dev/null +++ b/debian/patches/features/all/r8723au/0046-staging-rtl8723au-rtw_check_bcn_info23a-Don-t-make-a.patch @@ -0,0 +1,218 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:25 +0200 +Subject: [046/249] staging: rtl8723au: rtw_check_bcn_info23a(): Don't make a + local copy of beacon just to parse it +Origin: https://git.kernel.org/linus/17b19396a675659e04eac6dbdbe57b2a9e462950 + +In addition be consistent with return values and parsing them. + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 2 +- + drivers/staging/rtl8723au/core/rtw_wlan_util.c | 88 +++++++++----------------- + 2 files changed, 32 insertions(+), 58 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index ff0800e..693a1a4 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -857,7 +857,7 @@ OnBeacon23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame) + psta = rtw_get_stainfo23a(pstapriv, mgmt->sa); + if (psta) { + ret = rtw_check_bcn_info23a(padapter, mgmt, pkt_len); +- if (!ret) { ++ if (ret != _SUCCESS) { + DBG_8723A_LEVEL(_drv_always_, "ap has changed, " + "disconnect now\n"); + receive_disconnect23a(padapter, pmlmeinfo->network.MacAddress, 65535); +diff --git a/drivers/staging/rtl8723au/core/rtw_wlan_util.c b/drivers/staging/rtl8723au/core/rtw_wlan_util.c +index a2c249f..17b04c2 100644 +--- a/drivers/staging/rtl8723au/core/rtw_wlan_util.c ++++ b/drivers/staging/rtl8723au/core/rtw_wlan_util.c +@@ -885,28 +885,19 @@ int rtw_check_bcn_info23a(struct rtw_adapter *Adapter, + { + struct wlan_network *cur_network = &Adapter->mlmepriv.cur_network; + struct ieee80211_ht_operation *pht_info; +- struct wlan_bssid_ex *bssid; + unsigned short val16; + u8 encryp_protocol; + int group_cipher = 0, pairwise_cipher = 0, is_8021x = 0, r; + u32 bcn_channel; +- int len, pie_len, ie_offset; +- const u8 *p; +- u8 *pie; ++ int pie_len, ie_offset, ssid_len, privacy; ++ const u8 *p, *ssid; + + if (is_client_associated_to_ap23a(Adapter) == false) +- return true; ++ return _SUCCESS; + + if (unlikely(!ieee80211_is_beacon(mgmt->frame_control))) { + printk(KERN_WARNING "%s: received a non beacon frame!\n", + __func__); +- return false; +- } +- +- len = pkt_len - sizeof(struct ieee80211_hdr_3addr); +- +- if (len > MAX_IE_SZ) { +- DBG_8723A("%s IE too long for survey event\n", __func__); + return _FAIL; + } + +@@ -914,36 +905,25 @@ int rtw_check_bcn_info23a(struct rtw_adapter *Adapter, + DBG_8723A("%s: linked but recv other bssid bcn" + MAC_FMT MAC_FMT "\n", __func__, MAC_ARG(mgmt->bssid), + MAC_ARG(cur_network->network.MacAddress)); +- return true; +- } +- +- bssid = kzalloc(sizeof(struct wlan_bssid_ex), GFP_ATOMIC); +- if (!bssid) + return _FAIL; +- +- bssid->reserved = 1; +- +- bssid->Length = offsetof(struct wlan_bssid_ex, IEs) + len; +- +- /* below is to copy the information element */ +- bssid->IELength = len; +- memcpy(bssid->IEs, &mgmt->u, len); ++ } + + /* check bw and channel offset */ + /* parsing HT_CAP_IE */ + ie_offset = offsetof(struct ieee80211_mgmt, u.beacon.variable) - + offsetof(struct ieee80211_mgmt, u); +- pie = bssid->IEs + ie_offset; +- pie_len = pkt_len - ie_offset; ++ pie_len = pkt_len - offsetof(struct ieee80211_mgmt, u.beacon.variable); + + /* Checking for channel */ +- p = cfg80211_find_ie(WLAN_EID_DS_PARAMS, pie, pie_len); ++ p = cfg80211_find_ie(WLAN_EID_DS_PARAMS, mgmt->u.beacon.variable, ++ pie_len); + if (p) + bcn_channel = p[2]; + else { + /* In 5G, some ap do not have DSSET IE checking HT + info for channel */ +- p = cfg80211_find_ie(WLAN_EID_HT_OPERATION, pie, pie_len); ++ p = cfg80211_find_ie(WLAN_EID_HT_OPERATION, ++ mgmt->u.beacon.variable, pie_len); + + if (p && p[1] > 0) { + pht_info = (struct ieee80211_ht_operation *)(p + 2); +@@ -962,60 +942,55 @@ int rtw_check_bcn_info23a(struct rtw_adapter *Adapter, + } + + /* checking SSID */ +- p = cfg80211_find_ie(WLAN_EID_SSID, pie, pie_len); ++ p = cfg80211_find_ie(WLAN_EID_SSID, mgmt->u.beacon.variable, pie_len); + if (p && p[1]) { +- memcpy(bssid->Ssid.ssid, p + 2, p[1]); +- bssid->Ssid.ssid_len = p[1]; ++ ssid = p + 2; ++ ssid_len = p[1]; + } else { + DBG_8723A("%s marc: cannot find SSID for survey event\n", + __func__); +- bssid->Ssid.ssid_len = 0; +- bssid->Ssid.ssid[0] = '\0'; ++ ssid = NULL; ++ ssid_len = 0; + } + + RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_, + ("%s bssid.Ssid.Ssid:%s bssid.Ssid.SsidLength:%d " + "cur_network->network.Ssid.Ssid:%s len:%d\n", __func__, +- bssid->Ssid.ssid, bssid->Ssid.ssid_len, +- cur_network->network.Ssid.ssid, ++ ssid, ssid_len, cur_network->network.Ssid.ssid, + cur_network->network.Ssid.ssid_len)); + +- if (memcmp(bssid->Ssid.ssid, cur_network->network.Ssid.ssid, 32) || +- bssid->Ssid.ssid_len != cur_network->network.Ssid.ssid_len) { +- if (bssid->Ssid.ssid[0] != '\0' && +- bssid->Ssid.ssid_len != 0) { /* not hidden ssid */ +- DBG_8723A("%s(), SSID is not match return FAIL\n", +- __func__); +- goto _mismatch; +- } ++ if (ssid_len != cur_network->network.Ssid.ssid_len || ssid_len > 32 || ++ (ssid_len && ++ memcmp(ssid, cur_network->network.Ssid.ssid, ssid_len))) { ++ DBG_8723A("%s(), SSID is not match return FAIL\n", __func__); ++ goto _mismatch; + } + + /* check encryption info */ +- val16 = rtw_get_capability23a(bssid); ++ val16 = le16_to_cpu(mgmt->u.beacon.capab_info); + + if (val16 & WLAN_CAPABILITY_PRIVACY) +- bssid->Privacy = 1; ++ privacy = 1; + else +- bssid->Privacy = 0; ++ privacy = 0; + + RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_, + ("%s(): cur_network->network.Privacy is %d, bssid.Privacy " +- "is %d\n", __func__, cur_network->network.Privacy, +- bssid->Privacy)); +- if (cur_network->network.Privacy != bssid->Privacy) { ++ "is %d\n", __func__, cur_network->network.Privacy, privacy)); ++ if (cur_network->network.Privacy != privacy) { + DBG_8723A("%s(), privacy is not match return FAIL\n", __func__); + goto _mismatch; + } + +- p = cfg80211_find_ie(WLAN_EID_RSN, pie, pie_len); ++ p = cfg80211_find_ie(WLAN_EID_RSN, mgmt->u.beacon.variable, pie_len); + if (p && p[1]) { + encryp_protocol = ENCRYP_PROTOCOL_WPA2; + } else if (cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT, + WLAN_OUI_TYPE_MICROSOFT_WPA, +- pie, pie_len)) { ++ mgmt->u.beacon.variable, pie_len)) { + encryp_protocol = ENCRYP_PROTOCOL_WPA; + } else { +- if (bssid->Privacy) ++ if (privacy) + encryp_protocol = ENCRYP_PROTOCOL_WEP; + else + encryp_protocol = ENCRYP_PROTOCOL_OPENSYS; +@@ -1030,7 +1005,7 @@ int rtw_check_bcn_info23a(struct rtw_adapter *Adapter, + encryp_protocol == ENCRYP_PROTOCOL_WPA2) { + p = cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT, + WLAN_OUI_TYPE_MICROSOFT_WPA, +- pie, pie_len); ++ mgmt->u.beacon.variable, pie_len); + if (p && p[1] > 0) { + r = rtw_parse_wpa_ie23a(p, p[1] + 2, &group_cipher, + &pairwise_cipher, &is_8021x); +@@ -1041,7 +1016,8 @@ int rtw_check_bcn_info23a(struct rtw_adapter *Adapter, + "%d\n", __func__, pairwise_cipher, + group_cipher, is_8021x)); + } else { +- p = cfg80211_find_ie(WLAN_EID_RSN, pie, pie_len); ++ p = cfg80211_find_ie(WLAN_EID_RSN, ++ mgmt->u.beacon.variable, pie_len); + + if (p && p[1] > 0) { + r = rtw_parse_wpa2_ie23a(p, p[1] + 2, +@@ -1080,11 +1056,9 @@ int rtw_check_bcn_info23a(struct rtw_adapter *Adapter, + } + } + +- kfree(bssid); + return _SUCCESS; + + _mismatch: +- kfree(bssid); + + return _FAIL; + } diff --git a/debian/patches/features/all/r8723au/0047-staging-rtl8723au-rtw_check_bcn_info23a-Don-t-search.patch b/debian/patches/features/all/r8723au/0047-staging-rtl8723au-rtw_check_bcn_info23a-Don-t-search.patch new file mode 100644 index 000000000..57b28a091 --- /dev/null +++ b/debian/patches/features/all/r8723au/0047-staging-rtl8723au-rtw_check_bcn_info23a-Don-t-search.patch @@ -0,0 +1,107 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:26 +0200 +Subject: [047/249] staging: rtl8723au: rtw_check_bcn_info23a(): Don't search + for WPA/WPA2 info twice +Origin: https://git.kernel.org/linus/bbf5fdbd56f8a97ccfe25621057771742725c3b0 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_wlan_util.c | 63 ++++++++++---------------- + 1 file changed, 25 insertions(+), 38 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_wlan_util.c b/drivers/staging/rtl8723au/core/rtw_wlan_util.c +index 17b04c2..5aaff13 100644 +--- a/drivers/staging/rtl8723au/core/rtw_wlan_util.c ++++ b/drivers/staging/rtl8723au/core/rtw_wlan_util.c +@@ -886,9 +886,8 @@ int rtw_check_bcn_info23a(struct rtw_adapter *Adapter, + struct wlan_network *cur_network = &Adapter->mlmepriv.cur_network; + struct ieee80211_ht_operation *pht_info; + unsigned short val16; +- u8 encryp_protocol; ++ u8 crypto, bcn_channel; + int group_cipher = 0, pairwise_cipher = 0, is_8021x = 0, r; +- u32 bcn_channel; + int pie_len, ie_offset, ssid_len, privacy; + const u8 *p, *ssid; + +@@ -984,29 +983,23 @@ int rtw_check_bcn_info23a(struct rtw_adapter *Adapter, + + p = cfg80211_find_ie(WLAN_EID_RSN, mgmt->u.beacon.variable, pie_len); + if (p && p[1]) { +- encryp_protocol = ENCRYP_PROTOCOL_WPA2; +- } else if (cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT, +- WLAN_OUI_TYPE_MICROSOFT_WPA, +- mgmt->u.beacon.variable, pie_len)) { +- encryp_protocol = ENCRYP_PROTOCOL_WPA; ++ crypto = ENCRYP_PROTOCOL_WPA2; ++ if (p && p[1]) { ++ r = rtw_parse_wpa2_ie23a(p, p[1] + 2, &group_cipher, ++ &pairwise_cipher, &is_8021x); ++ if (r == _SUCCESS) ++ RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_, ++ ("%s pnetwork->pairwise_cipher: %d, " ++ "pnetwork->group_cipher: %d, is_802x " ++ ": %d\n", __func__, pairwise_cipher, ++ group_cipher, is_8021x)); ++ } + } else { +- if (privacy) +- encryp_protocol = ENCRYP_PROTOCOL_WEP; +- else +- encryp_protocol = ENCRYP_PROTOCOL_OPENSYS; +- } +- +- if (cur_network->BcnInfo.encryp_protocol != encryp_protocol) { +- DBG_8723A("%s(): enctyp is not match, return FAIL\n", __func__); +- goto _mismatch; +- } +- +- if (encryp_protocol == ENCRYP_PROTOCOL_WPA || +- encryp_protocol == ENCRYP_PROTOCOL_WPA2) { + p = cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT, + WLAN_OUI_TYPE_MICROSOFT_WPA, + mgmt->u.beacon.variable, pie_len); +- if (p && p[1] > 0) { ++ if (p && p[1]) { ++ crypto = ENCRYP_PROTOCOL_WPA; + r = rtw_parse_wpa_ie23a(p, p[1] + 2, &group_cipher, + &pairwise_cipher, &is_8021x); + if (r == _SUCCESS) +@@ -1016,25 +1009,19 @@ int rtw_check_bcn_info23a(struct rtw_adapter *Adapter, + "%d\n", __func__, pairwise_cipher, + group_cipher, is_8021x)); + } else { +- p = cfg80211_find_ie(WLAN_EID_RSN, +- mgmt->u.beacon.variable, pie_len); +- +- if (p && p[1] > 0) { +- r = rtw_parse_wpa2_ie23a(p, p[1] + 2, +- &group_cipher, +- &pairwise_cipher, +- &is_8021x); +- if (r == _SUCCESS) +- RT_TRACE(_module_rtl871x_mlme_c_, +- _drv_info_, +- ("%s pnetwork->pairwise_cipher" +- ": %d, pnetwork->group_cipher" +- " is %d, is_802x is %d\n", +- __func__, pairwise_cipher, +- group_cipher, is_8021x)); +- } ++ if (privacy) ++ crypto = ENCRYP_PROTOCOL_WEP; ++ else ++ crypto = ENCRYP_PROTOCOL_OPENSYS; + } ++ } ++ ++ if (cur_network->BcnInfo.encryp_protocol != crypto) { ++ DBG_8723A("%s(): encryption mismatch, return FAIL\n", __func__); ++ goto _mismatch; ++ } + ++ if (crypto == ENCRYP_PROTOCOL_WPA || crypto == ENCRYP_PROTOCOL_WPA2) { + RT_TRACE(_module_rtl871x_mlme_c_, _drv_err_, + ("%s cur_network->group_cipher is %d: %d\n", __func__, + cur_network->BcnInfo.group_cipher, group_cipher)); diff --git a/debian/patches/features/all/r8723au/0048-staging-rtl8723au-Declare-rtw_update_scanned_network.patch b/debian/patches/features/all/r8723au/0048-staging-rtl8723au-Declare-rtw_update_scanned_network.patch new file mode 100644 index 000000000..4b685530e --- /dev/null +++ b/debian/patches/features/all/r8723au/0048-staging-rtl8723au-Declare-rtw_update_scanned_network.patch @@ -0,0 +1,50 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:27 +0200 +Subject: [048/249] staging: rtl8723au: Declare rtw_update_scanned_network() + static +Origin: https://git.kernel.org/linus/8ab7bdba0ddb0f6a9ca93562f2d6065b1350802e + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme.c | 6 +++--- + drivers/staging/rtl8723au/include/rtw_mlme.h | 2 -- + 2 files changed, 3 insertions(+), 5 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c +index 4a33e7d..44a5249 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c +@@ -487,8 +487,8 @@ static void update_current_network(struct rtw_adapter *adapter, + Caller must hold pmlmepriv->lock first. + + */ +-void rtw_update_scanned_network23a(struct rtw_adapter *adapter, +- struct wlan_bssid_ex *target) ++static void rtw_update_scanned_network(struct rtw_adapter *adapter, ++ struct wlan_bssid_ex *target) + { + struct list_head *plist, *phead; + struct mlme_priv *pmlmepriv = &adapter->mlmepriv; +@@ -571,7 +571,7 @@ static void rtw_add_network(struct rtw_adapter *adapter, + struct wlan_bssid_ex *pnetwork) + { + update_current_network(adapter, pnetwork); +- rtw_update_scanned_network23a(adapter, pnetwork); ++ rtw_update_scanned_network(adapter, pnetwork); + } + + /* select the desired network based on the capability of the (i)bss. */ +diff --git a/drivers/staging/rtl8723au/include/rtw_mlme.h b/drivers/staging/rtl8723au/include/rtw_mlme.h +index a11b5bd..baac8da 100644 +--- a/drivers/staging/rtl8723au/include/rtw_mlme.h ++++ b/drivers/staging/rtl8723au/include/rtw_mlme.h +@@ -308,8 +308,6 @@ static inline void clr_fwstate_ex(struct mlme_priv *pmlmepriv, int state) + } + + u16 rtw_get_capability23a(struct wlan_bssid_ex *bss); +-void rtw_update_scanned_network23a(struct rtw_adapter *adapter, +- struct wlan_bssid_ex *target); + void rtw_disconnect_hdl23a_under_linked(struct rtw_adapter *adapter, + struct sta_info *psta, u8 free_assoc); + void rtw_generate_random_ibss23a(u8 *pibss); diff --git a/debian/patches/features/all/r8723au/0049-staging-rtl8723au-rtw_survey_event_cb23a-Use-the-cor.patch b/debian/patches/features/all/r8723au/0049-staging-rtl8723au-rtw_survey_event_cb23a-Use-the-cor.patch new file mode 100644 index 000000000..46f0a1ac0 --- /dev/null +++ b/debian/patches/features/all/r8723au/0049-staging-rtl8723au-rtw_survey_event_cb23a-Use-the-cor.patch @@ -0,0 +1,27 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:28 +0200 +Subject: [049/249] staging: rtl8723au: rtw_survey_event_cb23a(): Use the + correct types for the received arguments +Origin: https://git.kernel.org/linus/7195dc0e1a9982eb950b614e07abc5ba3068e95d + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c +index 44a5249..639dfca 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c +@@ -638,8 +638,9 @@ void rtw_survey_event_cb23a(struct rtw_adapter *adapter, const u8 *pbuf) + u32 len; + struct wlan_bssid_ex *pnetwork; + struct mlme_priv *pmlmepriv = &adapter->mlmepriv; ++ struct survey_event *survey = (struct survey_event *)pbuf; + +- pnetwork = (struct wlan_bssid_ex *)pbuf; ++ pnetwork = &survey->bss; + + RT_TRACE(_module_rtl871x_mlme_c_,_drv_info_, + ("rtw_survey_event_cb23a, ssid=%s\n", pnetwork->Ssid.ssid)); diff --git a/debian/patches/features/all/r8723au/0050-staging-rtl8723au-Do-not-embed-struct-wlan_bssid_ex-.patch b/debian/patches/features/all/r8723au/0050-staging-rtl8723au-Do-not-embed-struct-wlan_bssid_ex-.patch new file mode 100644 index 000000000..dfb50d783 --- /dev/null +++ b/debian/patches/features/all/r8723au/0050-staging-rtl8723au-Do-not-embed-struct-wlan_bssid_ex-.patch @@ -0,0 +1,79 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:29 +0200 +Subject: [050/249] staging: rtl8723au: Do not embed struct wlan_bssid_ex in + struct survey_event +Origin: https://git.kernel.org/linus/246879640e636256326221e70df8e1c3ef84ece0 + +Instead allocate it separately and reference it from survey_event. +This will allow for us to pass it on later without having to copy it. + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme.c | 5 ++++- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 9 +++++++-- + drivers/staging/rtl8723au/include/rtw_event.h | 2 +- + 3 files changed, 12 insertions(+), 4 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c +index 639dfca..71ff753 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c +@@ -640,7 +640,7 @@ void rtw_survey_event_cb23a(struct rtw_adapter *adapter, const u8 *pbuf) + struct mlme_priv *pmlmepriv = &adapter->mlmepriv; + struct survey_event *survey = (struct survey_event *)pbuf; + +- pnetwork = &survey->bss; ++ pnetwork = survey->bss; + + RT_TRACE(_module_rtl871x_mlme_c_,_drv_info_, + ("rtw_survey_event_cb23a, ssid=%s\n", pnetwork->Ssid.ssid)); +@@ -691,6 +691,9 @@ exit: + + spin_unlock_bh(&pmlmepriv->lock); + ++ kfree(survey->bss); ++ survey->bss = NULL; ++ + return; + } + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index 693a1a4..9b6d918 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -4898,14 +4898,19 @@ void report_survey_event23a(struct rtw_adapter *padapter, + pc2h_evt_hdr->seq = atomic_inc_return(&pmlmeext->event_seq); + + psurvey_evt = (struct survey_event*)(pevtcmd + sizeof(struct C2HEvent_Header)); ++ psurvey_evt->bss = kzalloc(sizeof(struct wlan_bssid_ex), GFP_ATOMIC); ++ if (!psurvey_evt->bss) { ++ kfree(pcmd_obj); ++ kfree(pevtcmd); ++ } + +- if (collect_bss_info23a(padapter, precv_frame, &psurvey_evt->bss) == _FAIL) { ++ if (collect_bss_info23a(padapter, precv_frame, psurvey_evt->bss) == _FAIL) { + kfree(pcmd_obj); + kfree(pevtcmd); + return; + } + +- process_80211d(padapter, &psurvey_evt->bss); ++ process_80211d(padapter, psurvey_evt->bss); + + rtw_enqueue_cmd23a(pcmdpriv, pcmd_obj); + +diff --git a/drivers/staging/rtl8723au/include/rtw_event.h b/drivers/staging/rtl8723au/include/rtw_event.h +index 807cc83..4557aec 100644 +--- a/drivers/staging/rtl8723au/include/rtw_event.h ++++ b/drivers/staging/rtl8723au/include/rtw_event.h +@@ -22,7 +22,7 @@ + Used to report a bss has been scanned + */ + struct survey_event { +- struct wlan_bssid_ex bss; ++ struct wlan_bssid_ex *bss; + }; + + /* diff --git a/debian/patches/features/all/r8723au/0051-staging-rtl8723au-Allocate-struct-wlan_bssid_ex-in-c.patch b/debian/patches/features/all/r8723au/0051-staging-rtl8723au-Allocate-struct-wlan_bssid_ex-in-c.patch new file mode 100644 index 000000000..73f662180 --- /dev/null +++ b/debian/patches/features/all/r8723au/0051-staging-rtl8723au-Allocate-struct-wlan_bssid_ex-in-c.patch @@ -0,0 +1,173 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:30 +0200 +Subject: [051/249] staging: rtl8723au: Allocate struct wlan_bssid_ex in + collect_bss_info() +Origin: https://git.kernel.org/linus/1bebe756269a020add3e128c93b2edf1ef66362f + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 52 ++++++++++++------------ + drivers/staging/rtl8723au/include/rtw_mlme_ext.h | 3 -- + 2 files changed, 25 insertions(+), 30 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index 9b6d918..02180fc 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -61,6 +61,8 @@ static void start_clnt_assoc(struct rtw_adapter *padapter); + static void start_clnt_auth(struct rtw_adapter *padapter); + static void start_clnt_join(struct rtw_adapter *padapter); + static void start_create_ibss(struct rtw_adapter *padapter); ++static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter, ++ struct recv_frame *precv_frame); + + #ifdef CONFIG_8723AU_AP_MODE + static int OnAuth23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame); +@@ -825,16 +827,11 @@ OnBeacon23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame) + if (pmlmeinfo->state & WIFI_FW_AUTH_NULL) { + /* we should update current network before auth, + or some IE is wrong */ +- pbss = (struct wlan_bssid_ex *) +- kmalloc(sizeof(struct wlan_bssid_ex), GFP_ATOMIC); ++ pbss = collect_bss_info(padapter, precv_frame); + if (pbss) { +- if (collect_bss_info23a(padapter, precv_frame, pbss) == +- _SUCCESS) { +- update_network23a( +- &pmlmepriv->cur_network.network, pbss, +- padapter, true); +- rtw_get_bcn_info23a(&pmlmepriv->cur_network); +- } ++ update_network23a(&pmlmepriv->cur_network.network, pbss, ++ padapter, true); ++ rtw_get_bcn_info23a(&pmlmepriv->cur_network); + kfree(pbss); + } + +@@ -4252,9 +4249,8 @@ static void rtw_site_survey(struct rtw_adapter *padapter) + } + + /* collect bss info from Beacon and Probe request/response frames. */ +-int collect_bss_info23a(struct rtw_adapter *padapter, +- struct recv_frame *precv_frame, +- struct wlan_bssid_ex *bssid) ++static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter, ++ struct recv_frame *precv_frame) + { + int i; + const u8 *p; +@@ -4265,16 +4261,19 @@ int collect_bss_info23a(struct rtw_adapter *padapter, + struct registry_priv *pregistrypriv = &padapter->registrypriv; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; ++ struct wlan_bssid_ex *bssid; + u16 capab_info; + + length = skb->len - sizeof(struct ieee80211_hdr_3addr); + + if (length > MAX_IE_SZ) { + /* DBG_8723A("IE too long for survey event\n"); */ +- return _FAIL; ++ return NULL; + } + +- memset(bssid, 0, sizeof(struct wlan_bssid_ex)); ++ bssid = kzalloc(sizeof(struct wlan_bssid_ex), GFP_ATOMIC); ++ if (!bssid) ++ return NULL; + + if (ieee80211_is_beacon(mgmt->frame_control)) { + bssid->reserved = 1; +@@ -4325,13 +4324,13 @@ int collect_bss_info23a(struct rtw_adapter *padapter, + + if (!p) { + DBG_8723A("marc: cannot find SSID for survey event\n"); +- return _FAIL; ++ goto fail; + } + + if (p[1] > IEEE80211_MAX_SSID_LEN) { + DBG_8723A("%s()-%d: IE too long (%d) for survey " + "event\n", __func__, __LINE__, p[1]); +- return _FAIL; ++ goto fail; + } + memcpy(bssid->Ssid.ssid, p + 2, p[1]); + bssid->Ssid.ssid_len = p[1]; +@@ -4346,7 +4345,7 @@ int collect_bss_info23a(struct rtw_adapter *padapter, + if (p[1] > NDIS_802_11_LENGTH_RATES_EX) { + DBG_8723A("%s()-%d: IE too long (%d) for survey " + "event\n", __func__, __LINE__, p[1]); +- return _FAIL; ++ goto fail; + } + memcpy(bssid->SupportedRates, p + 2, p[1]); + i = p[1]; +@@ -4358,13 +4357,13 @@ int collect_bss_info23a(struct rtw_adapter *padapter, + if (p[1] > (NDIS_802_11_LENGTH_RATES_EX-i)) { + DBG_8723A("%s()-%d: IE too long (%d) for survey " + "event\n", __func__, __LINE__, p[1]); +- return _FAIL; ++ goto fail; + } + memcpy(bssid->SupportedRates + i, p + 2, p[1]); + } + + if (bssid->IELength < 12) +- return _FAIL; ++ goto fail; + + /* Checking for DSConfig */ + p = cfg80211_find_ie(WLAN_EID_DS_PARAMS, bssid->IEs + ie_offset, +@@ -4392,7 +4391,7 @@ int collect_bss_info23a(struct rtw_adapter *padapter, + bssid->ifmode = NL80211_IFTYPE_STATION; + ether_addr_copy(bssid->MacAddress, mgmt->sa); + bssid->Privacy = 1; +- return _SUCCESS; ++ return bssid; + } + + if (capab_info & WLAN_CAPABILITY_ESS) { +@@ -4434,7 +4433,10 @@ int collect_bss_info23a(struct rtw_adapter *padapter, + if (bssid->DSConfig != rtw_get_oper_ch23a(padapter)) + bssid->PhyInfo.SignalQuality = 101; + +- return _SUCCESS; ++ return bssid; ++fail: ++ kfree (bssid); ++ return NULL; + } + + static void start_create_ibss(struct rtw_adapter* padapter) +@@ -4898,13 +4900,9 @@ void report_survey_event23a(struct rtw_adapter *padapter, + pc2h_evt_hdr->seq = atomic_inc_return(&pmlmeext->event_seq); + + psurvey_evt = (struct survey_event*)(pevtcmd + sizeof(struct C2HEvent_Header)); +- psurvey_evt->bss = kzalloc(sizeof(struct wlan_bssid_ex), GFP_ATOMIC); +- if (!psurvey_evt->bss) { +- kfree(pcmd_obj); +- kfree(pevtcmd); +- } + +- if (collect_bss_info23a(padapter, precv_frame, psurvey_evt->bss) == _FAIL) { ++ psurvey_evt->bss = collect_bss_info(padapter, precv_frame); ++ if (!psurvey_evt->bss) { + kfree(pcmd_obj); + kfree(pevtcmd); + return; +diff --git a/drivers/staging/rtl8723au/include/rtw_mlme_ext.h b/drivers/staging/rtl8723au/include/rtw_mlme_ext.h +index eb61012..0219aa1 100644 +--- a/drivers/staging/rtl8723au/include/rtw_mlme_ext.h ++++ b/drivers/staging/rtl8723au/include/rtw_mlme_ext.h +@@ -495,9 +495,6 @@ void flush_all_cam_entry23a(struct rtw_adapter *padapter); + + bool IsLegal5GChannel(struct rtw_adapter *Adapter, u8 channel); + +-int collect_bss_info23a(struct rtw_adapter *padapter, +- struct recv_frame *precv_frame, +- struct wlan_bssid_ex *bssid); + void update_network23a(struct wlan_bssid_ex *dst, struct wlan_bssid_ex *src, + struct rtw_adapter *padapter, bool update_ie); + diff --git a/debian/patches/features/all/r8723au/0052-staging-rtl8723au-collect_bss_info-Don-t-memset-what.patch b/debian/patches/features/all/r8723au/0052-staging-rtl8723au-collect_bss_info-Don-t-memset-what.patch new file mode 100644 index 000000000..91f2a5944 --- /dev/null +++ b/debian/patches/features/all/r8723au/0052-staging-rtl8723au-collect_bss_info-Don-t-memset-what.patch @@ -0,0 +1,25 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:31 +0200 +Subject: [052/249] staging: rtl8723au: collect_bss_info(): Don't memset() what + we just kzalloc()'d +Origin: https://git.kernel.org/linus/8d7fb1b874988b663d796f5b3b328cc50e99c1e2 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index 02180fc..14193b4 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -4335,8 +4335,6 @@ static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter, + memcpy(bssid->Ssid.ssid, p + 2, p[1]); + bssid->Ssid.ssid_len = p[1]; + +- memset(bssid->SupportedRates, 0, NDIS_802_11_LENGTH_RATES_EX); +- + /* checking rate info... */ + i = 0; + p = cfg80211_find_ie(WLAN_EID_SUPP_RATES, bssid->IEs + ie_offset, diff --git a/debian/patches/features/all/r8723au/0053-staging-rtl8723au-free_scanqueue-Use-_rtw_free_netwo.patch b/debian/patches/features/all/r8723au/0053-staging-rtl8723au-free_scanqueue-Use-_rtw_free_netwo.patch new file mode 100644 index 000000000..027cb39ed --- /dev/null +++ b/debian/patches/features/all/r8723au/0053-staging-rtl8723au-free_scanqueue-Use-_rtw_free_netwo.patch @@ -0,0 +1,30 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:32 +0200 +Subject: [053/249] staging: rtl8723au: free_scanqueue(): Use + _rtw_free_network23a() +Origin: https://git.kernel.org/linus/46805acb89edec720493e5779459ae8d0ccc680d + +Use _rtw_free_network23() so elements are freed in one place. + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c +index 71ff753..7c99c37 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c +@@ -831,9 +831,9 @@ static void free_scanqueue(struct mlme_priv *pmlmepriv) + phead = get_list_head(scan_queue); + + list_for_each_safe(plist, ptemp, phead) { +- list_del_init(plist); + pnetwork = container_of(plist, struct wlan_network, list); +- kfree(pnetwork); ++ pnetwork->fixed = false; ++ _rtw_free_network23a(pmlmepriv, pnetwork); + } + + spin_unlock_bh(&scan_queue->lock); diff --git a/debian/patches/features/all/r8723au/0054-staging-rtl8723au-rtw_stadel_event_callback23a-Remov.patch b/debian/patches/features/all/r8723au/0054-staging-rtl8723au-rtw_stadel_event_callback23a-Remov.patch new file mode 100644 index 000000000..543ef760e --- /dev/null +++ b/debian/patches/features/all/r8723au/0054-staging-rtl8723au-rtw_stadel_event_callback23a-Remov.patch @@ -0,0 +1,25 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:33 +0200 +Subject: [054/249] staging: rtl8723au: rtw_stadel_event_callback23a(): Remove + superfluous memset() +Origin: https://git.kernel.org/linus/1ae17bf1690d6781d260db96952b8a937a204570 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme.c | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c +index 7c99c37..bcc6893 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c +@@ -1506,8 +1506,6 @@ void rtw_stadel_event_callback23a(struct rtw_adapter *adapter, const u8 *pbuf) + memcpy(pdev_network, &tgt_network->network, + get_wlan_bssid_ex_sz(&tgt_network->network)); + +- memset(&pdev_network->Ssid, 0, +- sizeof(struct cfg80211_ssid)); + memcpy(&pdev_network->Ssid, &pmlmepriv->assoc_ssid, + sizeof(struct cfg80211_ssid)); + diff --git a/debian/patches/features/all/r8723au/0055-staging-rtl8723au-OnAuth23a-Use-ether_addr_copy.patch b/debian/patches/features/all/r8723au/0055-staging-rtl8723au-OnAuth23a-Use-ether_addr_copy.patch new file mode 100644 index 000000000..e60944ccf --- /dev/null +++ b/debian/patches/features/all/r8723au/0055-staging-rtl8723au-OnAuth23a-Use-ether_addr_copy.patch @@ -0,0 +1,24 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:34 +0200 +Subject: [055/249] staging: rtl8723au: OnAuth23a(): Use ether_addr_copy() +Origin: https://git.kernel.org/linus/ded7a20f827164bb7efc602f6f11e70cfa3e73e4 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index 14193b4..bed7eb7 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -1087,7 +1087,7 @@ auth_fail: + pstat = &stat; + memset((char *)pstat, '\0', sizeof(stat)); + pstat->auth_seq = 2; +- memcpy(pstat->hwaddr, sa, 6); ++ ether_addr_copy(pstat->hwaddr, sa); + + issue_auth(padapter, pstat, (unsigned short)status); + diff --git a/debian/patches/features/all/r8723au/0056-staging-rtl8723au-Get-rid-of-IW_ESSID_MAX_SIZE.patch b/debian/patches/features/all/r8723au/0056-staging-rtl8723au-Get-rid-of-IW_ESSID_MAX_SIZE.patch new file mode 100644 index 000000000..e917fb6f5 --- /dev/null +++ b/debian/patches/features/all/r8723au/0056-staging-rtl8723au-Get-rid-of-IW_ESSID_MAX_SIZE.patch @@ -0,0 +1,53 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:35 +0200 +Subject: [056/249] staging: rtl8723au: Get rid of IW_ESSID_MAX_SIZE +Origin: https://git.kernel.org/linus/7b2e06a159a2398c6b03d38d5e023f98da8c53c6 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 3 ++- + drivers/staging/rtl8723au/include/ieee80211.h | 2 -- + drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 2 +- + 3 files changed, 3 insertions(+), 4 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index bed7eb7..59047ad 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -5945,7 +5945,8 @@ int sitesurvey_cmd_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf) + for (i = 0; i < RTW_SSID_SCAN_AMOUNT; i++) { + if (pparm->ssid[i].ssid_len) { + memcpy(pmlmeext->sitesurvey_res.ssid[i].ssid, +- pparm->ssid[i].ssid, IW_ESSID_MAX_SIZE); ++ pparm->ssid[i].ssid, ++ IEEE80211_MAX_SSID_LEN); + pmlmeext->sitesurvey_res.ssid[i].ssid_len = + pparm->ssid[i].ssid_len; + } else { +diff --git a/drivers/staging/rtl8723au/include/ieee80211.h b/drivers/staging/rtl8723au/include/ieee80211.h +index c2c57c7..43f002d 100644 +--- a/drivers/staging/rtl8723au/include/ieee80211.h ++++ b/drivers/staging/rtl8723au/include/ieee80211.h +@@ -309,8 +309,6 @@ struct ieee80211_snap_hdr { + #define MAX_P2P_IE_LEN 256 + #define MAX_WFD_IE_LEN 128 + +-#define IW_ESSID_MAX_SIZE 32 +- + /* + join_res: + -1: authentication fail +diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +index 2fdc2b5..5e05134 100644 +--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c ++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +@@ -2020,7 +2020,7 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev, + goto exit; + } + +- if (sme->ssid_len > IW_ESSID_MAX_SIZE) { ++ if (sme->ssid_len > IEEE80211_MAX_SSID_LEN) { + ret = -E2BIG; + goto exit; + } diff --git a/debian/patches/features/all/r8723au/0057-staging-rtl8723au-Make-rtw_is_same_ibss23a-return-bo.patch b/debian/patches/features/all/r8723au/0057-staging-rtl8723au-Make-rtw_is_same_ibss23a-return-bo.patch new file mode 100644 index 000000000..f4b764a8c --- /dev/null +++ b/debian/patches/features/all/r8723au/0057-staging-rtl8723au-Make-rtw_is_same_ibss23a-return-bo.patch @@ -0,0 +1,105 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:36 +0200 +Subject: [057/249] staging: rtl8723au: Make rtw_is_same_ibss23a() return bool +Origin: https://git.kernel.org/linus/ec36ce29ca8e935d747ec0eddfa813da9324ee6d + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_ioctl_set.c | 44 ++++++++++++++++---------- + drivers/staging/rtl8723au/core/rtw_mlme.c | 6 ++-- + drivers/staging/rtl8723au/include/rtw_mlme.h | 4 +-- + 3 files changed, 33 insertions(+), 21 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c +index 1d2ea4e..8d76748 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c ++++ b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c +@@ -188,26 +188,38 @@ int rtw_set_802_11_ssid23a(struct rtw_adapter* padapter, + !memcmp(&pmlmepriv->assoc_ssid.ssid, ssid->ssid, + ssid->ssid_len)) { + if (!check_fwstate(pmlmepriv, WIFI_STATION_STATE)) { +- RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_, +- ("Set SSID is the same ssid, fw_state = 0x%08x\n", +- get_fwstate(pmlmepriv))); ++ RT_TRACE(_module_rtl871x_ioctl_set_c_, ++ _drv_err_, ("New SSID is same SSID, " ++ "fw_state = 0x%08x\n", ++ get_fwstate(pmlmepriv))); ++ ++ if (rtw_is_same_ibss23a(padapter, pnetwork)) { ++ /* ++ * it means driver is in ++ * WIFI_ADHOC_MASTER_STATE, we needn't ++ * create bss again. ++ */ ++ goto release_mlme_lock; ++ } + +- if (rtw_is_same_ibss23a(padapter, pnetwork) == false) +- { +- /* if in WIFI_ADHOC_MASTER_STATE | WIFI_ADHOC_STATE, create bss or rejoin again */ +- rtw_disassoc_cmd23a(padapter, 0, true); ++ /* ++ * if in WIFI_ADHOC_MASTER_STATE | ++ * WIFI_ADHOC_STATE, create bss or ++ * rejoin again ++ */ ++ rtw_disassoc_cmd23a(padapter, 0, true); + +- if (check_fwstate(pmlmepriv, _FW_LINKED)) +- rtw_indicate_disconnect23a(padapter); ++ if (check_fwstate(pmlmepriv, _FW_LINKED)) ++ rtw_indicate_disconnect23a(padapter); + +- rtw_free_assoc_resources23a(padapter, 1); ++ rtw_free_assoc_resources23a(padapter, 1); + +- if (check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE)) { +- _clr_fwstate_(pmlmepriv, WIFI_ADHOC_MASTER_STATE); +- set_fwstate(pmlmepriv, WIFI_ADHOC_STATE); +- } +- } else { +- goto release_mlme_lock;/* it means driver is in WIFI_ADHOC_MASTER_STATE, we needn't create bss again. */ ++ if (check_fwstate(pmlmepriv, ++ WIFI_ADHOC_MASTER_STATE)) { ++ _clr_fwstate_(pmlmepriv, ++ WIFI_ADHOC_MASTER_STATE); ++ set_fwstate(pmlmepriv, ++ WIFI_ADHOC_STATE); + } + } else { + rtw_lps_ctrl_wk_cmd23a(padapter, LPS_CTRL_JOINBSS, 1); +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c +index bcc6893..2a0c43a 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c +@@ -334,10 +334,10 @@ static void rtw_free_network_nolock(struct mlme_priv *pmlmepriv, + _rtw_free_network23a(pmlmepriv, pnetwork); + } + +-int rtw_is_same_ibss23a(struct rtw_adapter *adapter, +- struct wlan_network *pnetwork) ++bool rtw_is_same_ibss23a(struct rtw_adapter *adapter, ++ struct wlan_network *pnetwork) + { +- int ret = true; ++ int ret; + struct security_priv *psecuritypriv = &adapter->securitypriv; + + if (psecuritypriv->dot11PrivacyAlgrthm != 0 && +diff --git a/drivers/staging/rtl8723au/include/rtw_mlme.h b/drivers/staging/rtl8723au/include/rtw_mlme.h +index baac8da..c8e82bf 100644 +--- a/drivers/staging/rtl8723au/include/rtw_mlme.h ++++ b/drivers/staging/rtl8723au/include/rtw_mlme.h +@@ -361,8 +361,8 @@ void rtw_update_ht_cap23a(struct rtw_adapter *padapter, + void rtw_issue_addbareq_cmd23a(struct rtw_adapter *padapter, + struct xmit_frame *pxmitframe); + +-int rtw_is_same_ibss23a(struct rtw_adapter *adapter, +- struct wlan_network *pnetwork); ++bool rtw_is_same_ibss23a(struct rtw_adapter *adapter, ++ struct wlan_network *pnetwork); + int is_same_network23a(struct wlan_bssid_ex *src, struct wlan_bssid_ex *dst); + + void rtw23a_roaming(struct rtw_adapter *adapter, diff --git a/debian/patches/features/all/r8723au/0058-staging-rtl8723au-cfg80211_rtw_connect-Check-correct.patch b/debian/patches/features/all/r8723au/0058-staging-rtl8723au-cfg80211_rtw_connect-Check-correct.patch new file mode 100644 index 000000000..5ae00779c --- /dev/null +++ b/debian/patches/features/all/r8723au/0058-staging-rtl8723au-cfg80211_rtw_connect-Check-correct.patch @@ -0,0 +1,25 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:37 +0200 +Subject: [058/249] staging: rtl8723au: cfg80211_rtw_connect(): Check correct + return value from rtw_set_802_11_ssid23a() +Origin: https://git.kernel.org/linus/7c0e0636753ed98941eb4f904a03b2c6b5e5614d + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +index 5e05134..c116b21 100644 +--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c ++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +@@ -2204,7 +2204,7 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev, + /* rtw_set_802_11_encryption_mode(padapter, + padapter->securitypriv.ndisencryptstatus); */ + +- if (rtw_set_802_11_ssid23a(padapter, &ndis_ssid) == false) { ++ if (rtw_set_802_11_ssid23a(padapter, &ndis_ssid) != _SUCCESS) { + ret = -1; + goto exit; + } diff --git a/debian/patches/features/all/r8723au/0059-staging-rtl8723au-Fold-rtw_set_802_11_authentication.patch b/debian/patches/features/all/r8723au/0059-staging-rtl8723au-Fold-rtw_set_802_11_authentication.patch new file mode 100644 index 000000000..9d0cbea7b --- /dev/null +++ b/debian/patches/features/all/r8723au/0059-staging-rtl8723au-Fold-rtw_set_802_11_authentication.patch @@ -0,0 +1,90 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:38 +0200 +Subject: [059/249] staging: rtl8723au: Fold + rtw_set_802_11_authentication_mode23a() into cfg80211_rtw_connect() +Origin: https://git.kernel.org/linus/39dbc446a7168e4d7542d6523132ee44189d0ba2 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_ioctl_set.c | 24 ----------------------- + drivers/staging/rtl8723au/include/rtw_ioctl_set.h | 2 -- + drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 10 +++++++--- + 3 files changed, 7 insertions(+), 29 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c +index 8d76748..5c3b561 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c ++++ b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c +@@ -343,30 +343,6 @@ exit: + return res; + } + +-int rtw_set_802_11_authentication_mode23a(struct rtw_adapter* padapter, +- enum ndis_802_11_auth_mode authmode) +-{ +- struct security_priv *psecuritypriv = &padapter->securitypriv; +- int res; +- +- RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_info_, +- ("set_802_11_auth.mode(): mode =%x\n", authmode)); +- +- psecuritypriv->ndisauthtype = authmode; +- +- RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_info_, +- ("rtw_set_802_11_authentication_mode23a:" +- "psecuritypriv->ndisauthtype =%d", +- psecuritypriv->ndisauthtype)); +- +- if (psecuritypriv->ndisauthtype > 3) +- psecuritypriv->dot11AuthAlgrthm = dot11AuthAlgrthm_8021X; +- +- res = rtw_set_auth23a(padapter, psecuritypriv); +- +- return res; +-} +- + /* + * rtw_get_cur_max_rate23a - + * @adapter: pointer to _adapter structure +diff --git a/drivers/staging/rtl8723au/include/rtw_ioctl_set.h b/drivers/staging/rtl8723au/include/rtw_ioctl_set.h +index 040543b..bc5805a 100644 +--- a/drivers/staging/rtl8723au/include/rtw_ioctl_set.h ++++ b/drivers/staging/rtl8723au/include/rtw_ioctl_set.h +@@ -17,8 +17,6 @@ + + #include + +-int rtw_set_802_11_authentication_mode23a(struct rtw_adapter *pdapter, +- enum ndis_802_11_auth_mode authmode); + int rtw_set_802_11_bssid23a_list_scan(struct rtw_adapter *padapter, + struct cfg80211_ssid *pssid, + int ssid_max_num); +diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +index c116b21..0628416 100644 +--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c ++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +@@ -1987,7 +1987,6 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev, + int ret = 0; + struct list_head *phead, *plist, *ptmp; + struct wlan_network *pnetwork = NULL; +- enum ndis_802_11_auth_mode authmode; + struct cfg80211_ssid ndis_ssid; + u8 *dst_ssid; + u8 *src_ssid; +@@ -2198,8 +2197,13 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev, + goto exit; + } + +- authmode = psecuritypriv->ndisauthtype; +- rtw_set_802_11_authentication_mode23a(padapter, authmode); ++ if (psecuritypriv->ndisauthtype > 3) ++ psecuritypriv->dot11AuthAlgrthm = dot11AuthAlgrthm_8021X; ++ ++ if (rtw_set_auth23a(padapter, psecuritypriv) != _SUCCESS) { ++ ret = -EBUSY; ++ goto exit; ++ } + + /* rtw_set_802_11_encryption_mode(padapter, + padapter->securitypriv.ndisencryptstatus); */ diff --git a/debian/patches/features/all/r8723au/0060-staging-rtl8723au-Move-rtw_set_802_11_ssid23a-to-ioc.patch b/debian/patches/features/all/r8723au/0060-staging-rtl8723au-Move-rtw_set_802_11_ssid23a-to-ioc.patch new file mode 100644 index 000000000..dd6b231bb --- /dev/null +++ b/debian/patches/features/all/r8723au/0060-staging-rtl8723au-Move-rtw_set_802_11_ssid23a-to-ioc.patch @@ -0,0 +1,325 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:39 +0200 +Subject: [060/249] staging: rtl8723au: Move rtw_set_802_11_ssid23a() to + ioctl_cfg80211.c +Origin: https://git.kernel.org/linus/97c4361d50e833a0c178cf425590a15e9663f3d0 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_ioctl_set.c | 135 ---------------------- + drivers/staging/rtl8723au/include/rtw_ioctl_set.h | 2 - + drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 134 ++++++++++++++++++++- + 3 files changed, 132 insertions(+), 139 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c +index 5c3b561..7b0d3db 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c ++++ b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c +@@ -151,141 +151,6 @@ exit: + return ret; + } + +-int rtw_set_802_11_ssid23a(struct rtw_adapter* padapter, +- struct cfg80211_ssid *ssid) +-{ +- int status = _SUCCESS; +- u32 cur_time = 0; +- +- struct mlme_priv *pmlmepriv = &padapter->mlmepriv; +- struct wlan_network *pnetwork = &pmlmepriv->cur_network; +- +- +- +- DBG_8723A_LEVEL(_drv_always_, "set ssid [%s] fw_state = 0x%08x\n", +- ssid->ssid, get_fwstate(pmlmepriv)); +- +- if (padapter->hw_init_completed == false) { +- RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_, +- ("set_ssid: hw_init_completed == false =>exit!!!\n")); +- status = _FAIL; +- goto exit; +- } +- +- spin_lock_bh(&pmlmepriv->lock); +- +- DBG_8723A("Set SSID under fw_state = 0x%08x\n", get_fwstate(pmlmepriv)); +- if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY)) +- goto handle_tkip_countermeasure; +- else if (check_fwstate(pmlmepriv, _FW_UNDER_LINKING)) +- goto release_mlme_lock; +- +- if (check_fwstate(pmlmepriv, _FW_LINKED|WIFI_ADHOC_MASTER_STATE)) { +- RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_info_, +- ("set_ssid: _FW_LINKED||WIFI_ADHOC_MASTER_STATE\n")); +- +- if ((pmlmepriv->assoc_ssid.ssid_len == ssid->ssid_len) && +- !memcmp(&pmlmepriv->assoc_ssid.ssid, ssid->ssid, +- ssid->ssid_len)) { +- if (!check_fwstate(pmlmepriv, WIFI_STATION_STATE)) { +- RT_TRACE(_module_rtl871x_ioctl_set_c_, +- _drv_err_, ("New SSID is same SSID, " +- "fw_state = 0x%08x\n", +- get_fwstate(pmlmepriv))); +- +- if (rtw_is_same_ibss23a(padapter, pnetwork)) { +- /* +- * it means driver is in +- * WIFI_ADHOC_MASTER_STATE, we needn't +- * create bss again. +- */ +- goto release_mlme_lock; +- } +- +- /* +- * if in WIFI_ADHOC_MASTER_STATE | +- * WIFI_ADHOC_STATE, create bss or +- * rejoin again +- */ +- rtw_disassoc_cmd23a(padapter, 0, true); +- +- if (check_fwstate(pmlmepriv, _FW_LINKED)) +- rtw_indicate_disconnect23a(padapter); +- +- rtw_free_assoc_resources23a(padapter, 1); +- +- if (check_fwstate(pmlmepriv, +- WIFI_ADHOC_MASTER_STATE)) { +- _clr_fwstate_(pmlmepriv, +- WIFI_ADHOC_MASTER_STATE); +- set_fwstate(pmlmepriv, +- WIFI_ADHOC_STATE); +- } +- } else { +- rtw_lps_ctrl_wk_cmd23a(padapter, LPS_CTRL_JOINBSS, 1); +- } +- } else { +- RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_info_, +- ("Set SSID not the same ssid\n")); +- RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_info_, +- ("set_ssid =[%s] len = 0x%x\n", ssid->ssid, +- (unsigned int)ssid->ssid_len)); +- RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_info_, +- ("assoc_ssid =[%s] len = 0x%x\n", +- pmlmepriv->assoc_ssid.ssid, +- (unsigned int)pmlmepriv->assoc_ssid.ssid_len)); +- +- rtw_disassoc_cmd23a(padapter, 0, true); +- +- if (check_fwstate(pmlmepriv, _FW_LINKED)) +- rtw_indicate_disconnect23a(padapter); +- +- rtw_free_assoc_resources23a(padapter, 1); +- +- if (check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE)) { +- _clr_fwstate_(pmlmepriv, WIFI_ADHOC_MASTER_STATE); +- set_fwstate(pmlmepriv, WIFI_ADHOC_STATE); +- } +- } +- } +- +-handle_tkip_countermeasure: +- +- if (padapter->securitypriv.btkip_countermeasure == true) { +- cur_time = jiffies; +- +- if ((cur_time - padapter->securitypriv.btkip_countermeasure_time) > 60 * HZ) +- { +- padapter->securitypriv.btkip_countermeasure = false; +- padapter->securitypriv.btkip_countermeasure_time = 0; +- } +- else +- { +- status = _FAIL; +- goto release_mlme_lock; +- } +- } +- +- memcpy(&pmlmepriv->assoc_ssid, ssid, sizeof(struct cfg80211_ssid)); +- pmlmepriv->assoc_by_bssid = false; +- +- if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY)) +- pmlmepriv->to_join = true; +- else +- status = rtw_do_join23a(padapter); +- +-release_mlme_lock: +- spin_unlock_bh(&pmlmepriv->lock); +- +-exit: +- RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_, +- ("-rtw_set_802_11_ssid23a: status =%d\n", status)); +- +- +- +- return status; +-} +- + int rtw_set_802_11_bssid23a_list_scan(struct rtw_adapter *padapter, + struct cfg80211_ssid *pssid, + int ssid_max_num) +diff --git a/drivers/staging/rtl8723au/include/rtw_ioctl_set.h b/drivers/staging/rtl8723au/include/rtw_ioctl_set.h +index bc5805a..14a36f5 100644 +--- a/drivers/staging/rtl8723au/include/rtw_ioctl_set.h ++++ b/drivers/staging/rtl8723au/include/rtw_ioctl_set.h +@@ -20,8 +20,6 @@ + int rtw_set_802_11_bssid23a_list_scan(struct rtw_adapter *padapter, + struct cfg80211_ssid *pssid, + int ssid_max_num); +-int rtw_set_802_11_ssid23a(struct rtw_adapter * padapter, +- struct cfg80211_ssid * ssid); + + u16 rtw_get_cur_max_rate23a(struct rtw_adapter *adapter); + s32 FillH2CCmd(struct rtw_adapter *padapter, u8 ElementID, u32 CmdLen, u8 *pCmdBuffer); +diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +index 0628416..30473d0 100644 +--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c ++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +@@ -1981,6 +1981,136 @@ exit: + return res; + } + ++static int rtw_set_ssid(struct rtw_adapter* padapter, ++ struct cfg80211_ssid *ssid) ++{ ++ struct mlme_priv *pmlmepriv = &padapter->mlmepriv; ++ struct wlan_network *pnetwork = &pmlmepriv->cur_network; ++ int status = _SUCCESS; ++ u32 cur_time = 0; ++ ++ DBG_8723A_LEVEL(_drv_always_, "set ssid [%s] fw_state = 0x%08x\n", ++ ssid->ssid, get_fwstate(pmlmepriv)); ++ ++ if (padapter->hw_init_completed == false) { ++ RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_, ++ ("set_ssid: hw_init_completed == false =>exit!!!\n")); ++ status = _FAIL; ++ goto exit; ++ } ++ ++ spin_lock_bh(&pmlmepriv->lock); ++ ++ DBG_8723A("Set SSID under fw_state = 0x%08x\n", get_fwstate(pmlmepriv)); ++ if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY)) ++ goto handle_tkip_countermeasure; ++ else if (check_fwstate(pmlmepriv, _FW_UNDER_LINKING)) ++ goto release_mlme_lock; ++ ++ if (check_fwstate(pmlmepriv, _FW_LINKED|WIFI_ADHOC_MASTER_STATE)) { ++ RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_info_, ++ ("set_ssid: _FW_LINKED||WIFI_ADHOC_MASTER_STATE\n")); ++ ++ if (pmlmepriv->assoc_ssid.ssid_len == ssid->ssid_len && ++ !memcmp(&pmlmepriv->assoc_ssid.ssid, ssid->ssid, ++ ssid->ssid_len)) { ++ if (!check_fwstate(pmlmepriv, WIFI_STATION_STATE)) { ++ RT_TRACE(_module_rtl871x_ioctl_set_c_, ++ _drv_err_, ("New SSID is same SSID, " ++ "fw_state = 0x%08x\n", ++ get_fwstate(pmlmepriv))); ++ ++ if (rtw_is_same_ibss23a(padapter, pnetwork)) { ++ /* ++ * it means driver is in ++ * WIFI_ADHOC_MASTER_STATE, we needn't ++ * create bss again. ++ */ ++ goto release_mlme_lock; ++ } ++ ++ /* ++ * if in WIFI_ADHOC_MASTER_STATE | ++ * WIFI_ADHOC_STATE, create bss or ++ * rejoin again ++ */ ++ rtw_disassoc_cmd23a(padapter, 0, true); ++ ++ if (check_fwstate(pmlmepriv, _FW_LINKED)) ++ rtw_indicate_disconnect23a(padapter); ++ ++ rtw_free_assoc_resources23a(padapter, 1); ++ ++ if (check_fwstate(pmlmepriv, ++ WIFI_ADHOC_MASTER_STATE)) { ++ _clr_fwstate_(pmlmepriv, ++ WIFI_ADHOC_MASTER_STATE); ++ set_fwstate(pmlmepriv, ++ WIFI_ADHOC_STATE); ++ } ++ } else { ++ rtw_lps_ctrl_wk_cmd23a(padapter, ++ LPS_CTRL_JOINBSS, 1); ++ } ++ } else { ++ RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_info_, ++ ("Set SSID not the same ssid\n")); ++ RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_info_, ++ ("set_ssid =[%s] len = 0x%x\n", ssid->ssid, ++ ssid->ssid_len)); ++ RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_info_, ++ ("assoc_ssid =[%s] len = 0x%x\n", ++ pmlmepriv->assoc_ssid.ssid, ++ pmlmepriv->assoc_ssid.ssid_len)); ++ ++ rtw_disassoc_cmd23a(padapter, 0, true); ++ ++ if (check_fwstate(pmlmepriv, _FW_LINKED)) ++ rtw_indicate_disconnect23a(padapter); ++ ++ rtw_free_assoc_resources23a(padapter, 1); ++ ++ if (check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE)) { ++ _clr_fwstate_(pmlmepriv, WIFI_ADHOC_MASTER_STATE); ++ set_fwstate(pmlmepriv, WIFI_ADHOC_STATE); ++ } ++ } ++ } ++ ++handle_tkip_countermeasure: ++ ++ if (padapter->securitypriv.btkip_countermeasure == true) { ++ cur_time = jiffies; ++ ++ if ((cur_time - ++ padapter->securitypriv.btkip_countermeasure_time) > ++ 60 * HZ) { ++ padapter->securitypriv.btkip_countermeasure = false; ++ padapter->securitypriv.btkip_countermeasure_time = 0; ++ } else { ++ status = _FAIL; ++ goto release_mlme_lock; ++ } ++ } ++ ++ memcpy(&pmlmepriv->assoc_ssid, ssid, sizeof(struct cfg80211_ssid)); ++ pmlmepriv->assoc_by_bssid = false; ++ ++ if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY)) ++ pmlmepriv->to_join = true; ++ else ++ status = rtw_do_join23a(padapter); ++ ++release_mlme_lock: ++ spin_unlock_bh(&pmlmepriv->lock); ++ ++exit: ++ RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_, ++ ("-%s: status =%d\n", __func__, status)); ++ ++ return status; ++} ++ + static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev, + struct cfg80211_connect_params *sme) + { +@@ -2208,8 +2338,8 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev, + /* rtw_set_802_11_encryption_mode(padapter, + padapter->securitypriv.ndisencryptstatus); */ + +- if (rtw_set_802_11_ssid23a(padapter, &ndis_ssid) != _SUCCESS) { +- ret = -1; ++ if (rtw_set_ssid(padapter, &ndis_ssid) != _SUCCESS) { ++ ret = -EBUSY; + goto exit; + } + diff --git a/debian/patches/features/all/r8723au/0061-staging-rtl8723au-cfg80211_rtw_connect-Clean-up-vari.patch b/debian/patches/features/all/r8723au/0061-staging-rtl8723au-cfg80211_rtw_connect-Clean-up-vari.patch new file mode 100644 index 000000000..f8a907ab2 --- /dev/null +++ b/debian/patches/features/all/r8723au/0061-staging-rtl8723au-cfg80211_rtw_connect-Clean-up-vari.patch @@ -0,0 +1,140 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:40 +0200 +Subject: [061/249] staging: rtl8723au: cfg80211_rtw_connect(): Clean up + various bits +Origin: https://git.kernel.org/linus/c5178b0bc2ea2e72d45a90ae346a9b2fda0b5f08 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 53 +++++++++-------------- + 1 file changed, 20 insertions(+), 33 deletions(-) + +diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +index 30473d0..b0d959e 100644 +--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c ++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +@@ -2117,11 +2117,9 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev, + int ret = 0; + struct list_head *phead, *plist, *ptmp; + struct wlan_network *pnetwork = NULL; +- struct cfg80211_ssid ndis_ssid; ++ struct cfg80211_ssid ssid; + u8 *dst_ssid; +- u8 *src_ssid; + u8 *dst_bssid; +- const u8 *src_bssid; + /* u8 matched_by_bssid = false; */ + /* u8 matched_by_ssid = false; */ + u8 matched = false; +@@ -2144,21 +2142,13 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev, + goto exit; + } + +- if (!sme->ssid || !sme->ssid_len) { ++ if (!sme->ssid || !sme->ssid_len || ++ sme->ssid_len > IEEE80211_MAX_SSID_LEN) { + ret = -EINVAL; + goto exit; + } + +- if (sme->ssid_len > IEEE80211_MAX_SSID_LEN) { +- ret = -E2BIG; +- goto exit; +- } +- +- memset(&ndis_ssid, 0, sizeof(struct cfg80211_ssid)); +- ndis_ssid.ssid_len = sme->ssid_len; +- memcpy(ndis_ssid.ssid, sme->ssid, sme->ssid_len); +- +- DBG_8723A("ssid =%s, len =%zu\n", ndis_ssid.ssid, sme->ssid_len); ++ DBG_8723A("ssid =%s, len =%zu\n", sme->ssid, sme->ssid_len); + + if (sme->bssid) + DBG_8723A("bssid =" MAC_FMT "\n", MAC_ARG(sme->bssid)); +@@ -2173,6 +2163,8 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev, + rtw_scan_abort23a(padapter); + } + ++ memset(ssid.ssid, 0, sizeof(struct cfg80211_ssid)); ++ + spin_lock_bh(&queue->lock); + + phead = get_list_head(queue); +@@ -2197,28 +2189,24 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev, + } + + if (sme->bssid) { +- src_bssid = sme->bssid; +- +- if (ether_addr_equal(dst_bssid, src_bssid)) { ++ if (ether_addr_equal(dst_bssid, sme->bssid)) { + DBG_8723A("matched by bssid\n"); + +- ndis_ssid.ssid_len = +- pnetwork->network.Ssid.ssid_len; +- memcpy(ndis_ssid.ssid, +- pnetwork->network.Ssid.ssid, ++ memcpy(ssid.ssid, pnetwork->network.Ssid.ssid, + pnetwork->network.Ssid.ssid_len); ++ ssid.ssid_len = pnetwork->network.Ssid.ssid_len; + + matched = true; + break; + } +- + } else if (sme->ssid && sme->ssid_len) { +- src_ssid = ndis_ssid.ssid; +- +- if ((!memcmp(dst_ssid, src_ssid, ndis_ssid.ssid_len)) && +- (pnetwork->network.Ssid.ssid_len == +- ndis_ssid.ssid_len)) { ++ if (!memcmp(dst_ssid, sme->ssid, sme->ssid_len) && ++ pnetwork->network.Ssid.ssid_len == sme->ssid_len) { + DBG_8723A("matched by ssid\n"); ++ ++ memcpy(ssid.ssid, sme->ssid, sme->ssid_len); ++ ssid.ssid_len = sme->ssid_len; ++ + matched = true; + break; + } +@@ -2227,7 +2215,7 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev, + + spin_unlock_bh(&queue->lock); + +- if (!matched || (pnetwork == NULL)) { ++ if (!matched || !pnetwork) { + ret = -ENOENT; + DBG_8723A("connect, matched == false, goto exit\n"); + goto exit; +@@ -2245,9 +2233,8 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev, + psecuritypriv->dot11AuthAlgrthm = dot11AuthAlgrthm_Open; + psecuritypriv->ndisauthtype = Ndis802_11AuthModeOpen; + +- ret = +- rtw_cfg80211_set_wpa_version(psecuritypriv, +- sme->crypto.wpa_versions); ++ ret = rtw_cfg80211_set_wpa_version(psecuritypriv, ++ sme->crypto.wpa_versions); + if (ret < 0) + goto exit; + +@@ -2318,7 +2305,7 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev, + ret = rtw_cfg80211_set_cipher(psecuritypriv, + sme->crypto.cipher_group, false); + if (ret < 0) +- return ret; ++ goto exit; + + if (sme->crypto.n_akm_suites) { + ret = rtw_cfg80211_set_key_mgt(psecuritypriv, +@@ -2338,7 +2325,7 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev, + /* rtw_set_802_11_encryption_mode(padapter, + padapter->securitypriv.ndisencryptstatus); */ + +- if (rtw_set_ssid(padapter, &ndis_ssid) != _SUCCESS) { ++ if (rtw_set_ssid(padapter, &ssid) != _SUCCESS) { + ret = -EBUSY; + goto exit; + } diff --git a/debian/patches/features/all/r8723au/0062-staging-rtl8723au-cfg80211_rtw_connect-Remove-obfusc.patch b/debian/patches/features/all/r8723au/0062-staging-rtl8723au-cfg80211_rtw_connect-Remove-obfusc.patch new file mode 100644 index 000000000..44c938115 --- /dev/null +++ b/debian/patches/features/all/r8723au/0062-staging-rtl8723au-cfg80211_rtw_connect-Remove-obfusc.patch @@ -0,0 +1,58 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:41 +0200 +Subject: [062/249] staging: rtl8723au: cfg80211_rtw_connect(): Remove + obfuscating pointers +Origin: https://git.kernel.org/linus/9ab98d42401d50d6ab5f6ef59e1d63c486391f1c + +dst_ssid and dst_bssid were just obfuscating that we were in fact +looking at pnetwork. + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 11 ++++------- + 1 file changed, 4 insertions(+), 7 deletions(-) + +diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +index b0d959e..281b48c 100644 +--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c ++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +@@ -2118,8 +2118,6 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev, + struct list_head *phead, *plist, *ptmp; + struct wlan_network *pnetwork = NULL; + struct cfg80211_ssid ssid; +- u8 *dst_ssid; +- u8 *dst_bssid; + /* u8 matched_by_bssid = false; */ + /* u8 matched_by_ssid = false; */ + u8 matched = false; +@@ -2172,9 +2170,6 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev, + list_for_each_safe(plist, ptmp, phead) { + pnetwork = container_of(plist, struct wlan_network, list); + +- dst_ssid = pnetwork->network.Ssid.ssid; +- dst_bssid = pnetwork->network.MacAddress; +- + if (sme->bssid) { + if (!ether_addr_equal(pnetwork->network.MacAddress, + sme->bssid)) +@@ -2189,7 +2184,8 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev, + } + + if (sme->bssid) { +- if (ether_addr_equal(dst_bssid, sme->bssid)) { ++ if (ether_addr_equal(pnetwork->network.MacAddress, ++ sme->bssid)) { + DBG_8723A("matched by bssid\n"); + + memcpy(ssid.ssid, pnetwork->network.Ssid.ssid, +@@ -2200,7 +2196,8 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev, + break; + } + } else if (sme->ssid && sme->ssid_len) { +- if (!memcmp(dst_ssid, sme->ssid, sme->ssid_len) && ++ if (!memcmp(pnetwork->network.Ssid.ssid, ++ sme->ssid, sme->ssid_len) && + pnetwork->network.Ssid.ssid_len == sme->ssid_len) { + DBG_8723A("matched by ssid\n"); + diff --git a/debian/patches/features/all/r8723au/0063-staging-rtl8723au-cfg80211_rtw_connect-Simplify-ssid.patch b/debian/patches/features/all/r8723au/0063-staging-rtl8723au-cfg80211_rtw_connect-Simplify-ssid.patch new file mode 100644 index 000000000..7118018b5 --- /dev/null +++ b/debian/patches/features/all/r8723au/0063-staging-rtl8723au-cfg80211_rtw_connect-Simplify-ssid.patch @@ -0,0 +1,52 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:42 +0200 +Subject: [063/249] staging: rtl8723au: cfg80211_rtw_connect(): Simplify ssid + preparation +Origin: https://git.kernel.org/linus/9cb08ff32c386cda497f83635817cd328478a308 + +Since we just matched sme->{ssid,ssid_len} to +pnetwork->network.Ssid.{ssid,ssid_len} we can simplify the copy and +move it to just before the call to rtw_set_ssid(). + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 11 ++++------- + 1 file changed, 4 insertions(+), 7 deletions(-) + +diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +index 281b48c..0a6922d 100644 +--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c ++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +@@ -2188,10 +2188,6 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev, + sme->bssid)) { + DBG_8723A("matched by bssid\n"); + +- memcpy(ssid.ssid, pnetwork->network.Ssid.ssid, +- pnetwork->network.Ssid.ssid_len); +- ssid.ssid_len = pnetwork->network.Ssid.ssid_len; +- + matched = true; + break; + } +@@ -2201,9 +2197,6 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev, + pnetwork->network.Ssid.ssid_len == sme->ssid_len) { + DBG_8723A("matched by ssid\n"); + +- memcpy(ssid.ssid, sme->ssid, sme->ssid_len); +- ssid.ssid_len = sme->ssid_len; +- + matched = true; + break; + } +@@ -2322,6 +2315,10 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev, + /* rtw_set_802_11_encryption_mode(padapter, + padapter->securitypriv.ndisencryptstatus); */ + ++ memcpy(ssid.ssid, pnetwork->network.Ssid.ssid, ++ pnetwork->network.Ssid.ssid_len); ++ ssid.ssid_len = pnetwork->network.Ssid.ssid_len; ++ + if (rtw_set_ssid(padapter, &ssid) != _SUCCESS) { + ret = -EBUSY; + goto exit; diff --git a/debian/patches/features/all/r8723au/0064-staging-rtl8723au-Pass-a-struct-wlan_network-to-rtw_.patch b/debian/patches/features/all/r8723au/0064-staging-rtl8723au-Pass-a-struct-wlan_network-to-rtw_.patch new file mode 100644 index 000000000..1b5b155d6 --- /dev/null +++ b/debian/patches/features/all/r8723au/0064-staging-rtl8723au-Pass-a-struct-wlan_network-to-rtw_.patch @@ -0,0 +1,107 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:43 +0200 +Subject: [064/249] staging: rtl8723au: Pass a struct wlan_network to + rtw_set_ssid() +Origin: https://git.kernel.org/linus/e73d82efa4583e5ecaf598d85341403806a16e62 + +There is no point copying the ssid out of struct wlan_network when we +can just pass on the whole struct. + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 32 +++++++++++------------ + 1 file changed, 15 insertions(+), 17 deletions(-) + +diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +index 0a6922d..c03181d 100644 +--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c ++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +@@ -1981,8 +1981,8 @@ exit: + return res; + } + +-static int rtw_set_ssid(struct rtw_adapter* padapter, +- struct cfg80211_ssid *ssid) ++static int rtw_set_ssid(struct rtw_adapter *padapter, ++ struct wlan_network *newnetwork) + { + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct wlan_network *pnetwork = &pmlmepriv->cur_network; +@@ -1990,7 +1990,7 @@ static int rtw_set_ssid(struct rtw_adapter* padapter, + u32 cur_time = 0; + + DBG_8723A_LEVEL(_drv_always_, "set ssid [%s] fw_state = 0x%08x\n", +- ssid->ssid, get_fwstate(pmlmepriv)); ++ newnetwork->network.Ssid.ssid, get_fwstate(pmlmepriv)); + + if (padapter->hw_init_completed == false) { + RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_, +@@ -2011,9 +2011,11 @@ static int rtw_set_ssid(struct rtw_adapter* padapter, + RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_info_, + ("set_ssid: _FW_LINKED||WIFI_ADHOC_MASTER_STATE\n")); + +- if (pmlmepriv->assoc_ssid.ssid_len == ssid->ssid_len && +- !memcmp(&pmlmepriv->assoc_ssid.ssid, ssid->ssid, +- ssid->ssid_len)) { ++ if (pmlmepriv->assoc_ssid.ssid_len == ++ newnetwork->network.Ssid.ssid_len && ++ !memcmp(&pmlmepriv->assoc_ssid.ssid, ++ newnetwork->network.Ssid.ssid, ++ newnetwork->network.Ssid.ssid_len)) { + if (!check_fwstate(pmlmepriv, WIFI_STATION_STATE)) { + RT_TRACE(_module_rtl871x_ioctl_set_c_, + _drv_err_, ("New SSID is same SSID, " +@@ -2056,8 +2058,9 @@ static int rtw_set_ssid(struct rtw_adapter* padapter, + RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_info_, + ("Set SSID not the same ssid\n")); + RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_info_, +- ("set_ssid =[%s] len = 0x%x\n", ssid->ssid, +- ssid->ssid_len)); ++ ("set_ssid =[%s] len = 0x%x\n", ++ newnetwork->network.Ssid.ssid, ++ newnetwork->network.Ssid.ssid_len)); + RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_info_, + ("assoc_ssid =[%s] len = 0x%x\n", + pmlmepriv->assoc_ssid.ssid, +@@ -2093,7 +2096,9 @@ handle_tkip_countermeasure: + } + } + +- memcpy(&pmlmepriv->assoc_ssid, ssid, sizeof(struct cfg80211_ssid)); ++ memcpy(&pmlmepriv->assoc_ssid, &newnetwork->network.Ssid, ++ sizeof(struct cfg80211_ssid)); ++ + pmlmepriv->assoc_by_bssid = false; + + if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY)) +@@ -2117,7 +2122,6 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev, + int ret = 0; + struct list_head *phead, *plist, *ptmp; + struct wlan_network *pnetwork = NULL; +- struct cfg80211_ssid ssid; + /* u8 matched_by_bssid = false; */ + /* u8 matched_by_ssid = false; */ + u8 matched = false; +@@ -2161,8 +2165,6 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev, + rtw_scan_abort23a(padapter); + } + +- memset(ssid.ssid, 0, sizeof(struct cfg80211_ssid)); +- + spin_lock_bh(&queue->lock); + + phead = get_list_head(queue); +@@ -2315,11 +2317,7 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev, + /* rtw_set_802_11_encryption_mode(padapter, + padapter->securitypriv.ndisencryptstatus); */ + +- memcpy(ssid.ssid, pnetwork->network.Ssid.ssid, +- pnetwork->network.Ssid.ssid_len); +- ssid.ssid_len = pnetwork->network.Ssid.ssid_len; +- +- if (rtw_set_ssid(padapter, &ssid) != _SUCCESS) { ++ if (rtw_set_ssid(padapter, pnetwork) != _SUCCESS) { + ret = -EBUSY; + goto exit; + } diff --git a/debian/patches/features/all/r8723au/0065-staging-rtl8723au-rtw_set_ssid-This-is-never-called-.patch b/debian/patches/features/all/r8723au/0065-staging-rtl8723au-rtw_set_ssid-This-is-never-called-.patch new file mode 100644 index 000000000..5cb93db31 --- /dev/null +++ b/debian/patches/features/all/r8723au/0065-staging-rtl8723au-rtw_set_ssid-This-is-never-called-.patch @@ -0,0 +1,25 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:44 +0200 +Subject: [065/249] staging: rtl8723au: rtw_set_ssid(): This is never called + with _FW_UNDER_LINKING +Origin: https://git.kernel.org/linus/70fbc1a8a191bb97c4a38ea105a92dd6cd20a140 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +index c03181d..5a8b88c 100644 +--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c ++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +@@ -2004,8 +2004,6 @@ static int rtw_set_ssid(struct rtw_adapter *padapter, + DBG_8723A("Set SSID under fw_state = 0x%08x\n", get_fwstate(pmlmepriv)); + if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY)) + goto handle_tkip_countermeasure; +- else if (check_fwstate(pmlmepriv, _FW_UNDER_LINKING)) +- goto release_mlme_lock; + + if (check_fwstate(pmlmepriv, _FW_LINKED|WIFI_ADHOC_MASTER_STATE)) { + RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_info_, diff --git a/debian/patches/features/all/r8723au/0066-staging-rtl8723au-rtw_cfg80211_add_wep-Use-WLAN_KEY_.patch b/debian/patches/features/all/r8723au/0066-staging-rtl8723au-rtw_cfg80211_add_wep-Use-WLAN_KEY_.patch new file mode 100644 index 000000000..65319db87 --- /dev/null +++ b/debian/patches/features/all/r8723au/0066-staging-rtl8723au-rtw_cfg80211_add_wep-Use-WLAN_KEY_.patch @@ -0,0 +1,31 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:45 +0200 +Subject: [066/249] staging: rtl8723au: rtw_cfg80211_add_wep(): Use + WLAN_KEY_LEN_* +Origin: https://git.kernel.org/linus/4d9c63bbd207b20ae648bd6bd3ebcf6e52619616 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +index 5a8b88c..9c36f6c 100644 +--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c ++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +@@ -1931,12 +1931,12 @@ static int rtw_cfg80211_add_wep(struct rtw_adapter *padapter, + } + + switch (wep->keylen) { +- case 5: ++ case WLAN_KEY_LEN_WEP40: + psecuritypriv->dot11PrivacyAlgrthm = WLAN_CIPHER_SUITE_WEP40; + RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_info_, + ("%s:wep->KeyLength = 5\n", __func__)); + break; +- case 13: ++ case WLAN_KEY_LEN_WEP104: + psecuritypriv->dot11PrivacyAlgrthm = WLAN_CIPHER_SUITE_WEP104; + RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_info_, + ("%s:wep->KeyLength = 13\n", __func__)); diff --git a/debian/patches/features/all/r8723au/0067-staging-rtl8723au-rtw_do_join23a-Use-correct-error-r.patch b/debian/patches/features/all/r8723au/0067-staging-rtl8723au-rtw_do_join23a-Use-correct-error-r.patch new file mode 100644 index 000000000..eb8080803 --- /dev/null +++ b/debian/patches/features/all/r8723au/0067-staging-rtl8723au-rtw_do_join23a-Use-correct-error-r.patch @@ -0,0 +1,27 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:46 +0200 +Subject: [067/249] staging: rtl8723au: rtw_do_join23a(): Use correct error + return values +Origin: https://git.kernel.org/linus/be82728e9c10542688dfc0810afa38fd47f4a06b + +Don't mix true/fail with _SUCCESS/_FAIL as return value + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_ioctl_set.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c +index 7b0d3db..28cfea5 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c ++++ b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c +@@ -109,7 +109,7 @@ int rtw_do_join23a(struct rtw_adapter *padapter) + _drv_err_, + ("***Error =>do_goin: rtw_creat" + "ebss_cmd status FAIL***\n")); +- ret = false; ++ ret = _FAIL; + goto exit; + } + diff --git a/debian/patches/features/all/r8723au/0068-staging-rtl8723au-Minor-debug-message-fixup.patch b/debian/patches/features/all/r8723au/0068-staging-rtl8723au-Minor-debug-message-fixup.patch new file mode 100644 index 000000000..c36591579 --- /dev/null +++ b/debian/patches/features/all/r8723au/0068-staging-rtl8723au-Minor-debug-message-fixup.patch @@ -0,0 +1,34 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:47 +0200 +Subject: [068/249] staging: rtl8723au: Minor debug message fixup +Origin: https://git.kernel.org/linus/2febc8679edbe1f885bd2aedc548ff383853465b + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme.c | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c +index 2a0c43a..31cf1ac 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c +@@ -1771,7 +1771,7 @@ int rtw_select_and_join_from_scanned_queue23a(struct mlme_priv *pmlmepriv) + pnetwork = container_of(plist, struct wlan_network, list); + if (!pnetwork) { + RT_TRACE(_module_rtl871x_mlme_c_, _drv_err_, +- ("%s return _FAIL:(pnetwork == NULL)\n", ++ ("%s: return _FAIL:(pnetwork == NULL)\n", + __func__)); + ret = _FAIL; + goto exit; +@@ -1793,8 +1793,7 @@ int rtw_select_and_join_from_scanned_queue23a(struct mlme_priv *pmlmepriv) + + /* check for situation of _FW_LINKED */ + if (check_fwstate(pmlmepriv, _FW_LINKED)) { +- DBG_8723A("%s: _FW_LINKED while ask_for_joinbss!!!\n", +- __func__); ++ DBG_8723A("%s: _FW_LINKED while ask_for_joinbss!\n", __func__); + + rtw_disassoc_cmd23a(adapter, 0, true); + rtw_indicate_disconnect23a(adapter); diff --git a/debian/patches/features/all/r8723au/0069-staging-rtl8723au-Don-t-prepend-debug-console-messag.patch b/debian/patches/features/all/r8723au/0069-staging-rtl8723au-Don-t-prepend-debug-console-messag.patch new file mode 100644 index 000000000..eacad407f --- /dev/null +++ b/debian/patches/features/all/r8723au/0069-staging-rtl8723au-Don-t-prepend-debug-console-messag.patch @@ -0,0 +1,25 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:48 +0200 +Subject: [069/249] staging: rtl8723au: Don't prepend debug console messages + with 'ERROR ' +Origin: https://git.kernel.org/linus/fa862a7f799fcf60f9e0aed9c04fbfdeae518668 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/include/rtw_debug.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/staging/rtl8723au/include/rtw_debug.h b/drivers/staging/rtl8723au/include/rtw_debug.h +index a69d6e2..b6b0173 100644 +--- a/drivers/staging/rtl8723au/include/rtw_debug.h ++++ b/drivers/staging/rtl8723au/include/rtw_debug.h +@@ -146,7 +146,7 @@ + #define DBG_8723A_LEVEL(_level, fmt, arg...) \ + do { \ + if (_level <= GlobalDebugLevel23A) \ +- pr_info(DRIVER_PREFIX"ERROR " fmt, ##arg);\ ++ pr_info(DRIVER_PREFIX fmt, ##arg);\ + } while (0) + + #define DBG_8723A(...) \ diff --git a/debian/patches/features/all/r8723au/0070-staging-rtl8723au-Introduce-rtw_select_candidate_fro.patch b/debian/patches/features/all/r8723au/0070-staging-rtl8723au-Introduce-rtw_select_candidate_fro.patch new file mode 100644 index 000000000..abfbe5404 --- /dev/null +++ b/debian/patches/features/all/r8723au/0070-staging-rtl8723au-Introduce-rtw_select_candidate_fro.patch @@ -0,0 +1,89 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:49 +0200 +Subject: [070/249] staging: rtl8723au: Introduce + rtw_select_candidate_from_queue() +Origin: https://git.kernel.org/linus/0e634a029b4397c5a045f1d26fad6b7458386738 + +This splits a portion of rtw_select_and_join_from_scanned_queue23a() +into rtw_select_candidate_from_queue() + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme.c | 31 +++++++++++++++++++++---------- + 1 file changed, 21 insertions(+), 10 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c +index 31cf1ac..9248f48 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c +@@ -27,6 +27,9 @@ + #include + #include + ++static struct wlan_network * ++rtw_select_candidate_from_queue(struct mlme_priv *pmlmepriv); ++ + static void rtw_init_mlme_timer(struct rtw_adapter *padapter) + { + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; +@@ -1754,18 +1757,15 @@ pmlmepriv->lock + + */ + +-int rtw_select_and_join_from_scanned_queue23a(struct mlme_priv *pmlmepriv) ++static struct wlan_network * ++rtw_select_candidate_from_queue(struct mlme_priv *pmlmepriv) + { +- int ret; +- struct list_head *phead, *plist, *ptmp; +- struct rtw_adapter *adapter; ++ struct wlan_network *pnetwork, *candidate = NULL; + struct rtw_queue *queue = &pmlmepriv->scanned_queue; +- struct wlan_network *pnetwork; +- struct wlan_network *candidate = NULL; ++ struct list_head *phead, *plist, *ptmp; + + spin_lock_bh(&pmlmepriv->scanned_queue.lock); + phead = get_list_head(queue); +- adapter = pmlmepriv->nic_hdl; + + list_for_each_safe(plist, ptmp, phead) { + pnetwork = container_of(plist, struct wlan_network, list); +@@ -1773,13 +1773,26 @@ int rtw_select_and_join_from_scanned_queue23a(struct mlme_priv *pmlmepriv) + RT_TRACE(_module_rtl871x_mlme_c_, _drv_err_, + ("%s: return _FAIL:(pnetwork == NULL)\n", + __func__)); +- ret = _FAIL; + goto exit; + } + + rtw_check_join_candidate(pmlmepriv, &candidate, pnetwork); + } + ++exit: ++ spin_unlock_bh(&pmlmepriv->scanned_queue.lock); ++ return candidate; ++} ++ ++int rtw_select_and_join_from_scanned_queue23a(struct mlme_priv *pmlmepriv) ++{ ++ struct rtw_adapter *adapter; ++ struct wlan_network *candidate = NULL; ++ int ret; ++ ++ adapter = pmlmepriv->nic_hdl; ++ ++ candidate = rtw_select_candidate_from_queue(pmlmepriv); + if (!candidate) { + DBG_8723A("%s: return _FAIL(candidate == NULL)\n", __func__); + ret = _FAIL; +@@ -1803,8 +1816,6 @@ int rtw_select_and_join_from_scanned_queue23a(struct mlme_priv *pmlmepriv) + ret = rtw_joinbss_cmd23a(adapter, candidate); + + exit: +- spin_unlock_bh(&pmlmepriv->scanned_queue.lock); +- + return ret; + } + diff --git a/debian/patches/features/all/r8723au/0071-staging-rtl8723au-Introduce-rtw_do_join_network.patch b/debian/patches/features/all/r8723au/0071-staging-rtl8723au-Introduce-rtw_do_join_network.patch new file mode 100644 index 000000000..4c8eb20b6 --- /dev/null +++ b/debian/patches/features/all/r8723au/0071-staging-rtl8723au-Introduce-rtw_do_join_network.patch @@ -0,0 +1,119 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:50 +0200 +Subject: [071/249] staging: rtl8723au: Introduce rtw_do_join_network() +Origin: https://git.kernel.org/linus/b66dad2d502080d05320b74f38d247bf1a9993fa + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_ioctl_set.c | 2 -- + drivers/staging/rtl8723au/core/rtw_mlme.c | 46 ++++++++++++++++---------- + drivers/staging/rtl8723au/include/rtw_mlme.h | 2 ++ + 3 files changed, 30 insertions(+), 20 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c +index 28cfea5..d2ed9d1 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c ++++ b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c +@@ -79,8 +79,6 @@ int rtw_do_join23a(struct rtw_adapter *padapter) + select_ret = rtw_select_and_join_from_scanned_queue23a(pmlmepriv); + if (select_ret == _SUCCESS) { + pmlmepriv->to_join = false; +- mod_timer(&pmlmepriv->assoc_timer, +- jiffies + msecs_to_jiffies(MAX_JOIN_TIMEOUT)); + } else { + if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE)) { + struct wlan_bssid_ex *pdev_network; +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c +index 9248f48..4a146fb 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c +@@ -739,8 +739,6 @@ rtw_surveydone_event_callback23a(struct rtw_adapter *adapter, const u8 *pbuf) + + if (rtw_select_and_join_from_scanned_queue23a( + pmlmepriv) == _SUCCESS) { +- mod_timer(&pmlmepriv->assoc_timer, +- jiffies + msecs_to_jiffies(MAX_JOIN_TIMEOUT)); + } else { + pdev_network = &adapter->registrypriv.dev_network; + pibss = adapter->registrypriv.dev_network.MacAddress; +@@ -782,14 +780,10 @@ rtw_surveydone_event_callback23a(struct rtw_adapter *adapter, const u8 *pbuf) + pmlmepriv->to_join = false; + ret = rtw_select_and_join_from_scanned_queue23a( + pmlmepriv); +- if (ret == _SUCCESS) { +- unsigned long e; +- e = msecs_to_jiffies(MAX_JOIN_TIMEOUT); +- mod_timer(&pmlmepriv->assoc_timer, jiffies + e); +- } else if (ret == 2) {/* there is no need to wait */ ++ if (ret == 2) {/* there is no need to wait */ + _clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING); + rtw_indicate_connect23a(adapter); +- } else { ++ } else if (ret != _SUCCESS) { + DBG_8723A("try_to_join, but select scanning " + "queue fail, to_roaming:%d\n", + adapter->mlmepriv.to_roaming); +@@ -1784,6 +1778,31 @@ exit: + return candidate; + } + ++ ++int rtw_do_join_network(struct rtw_adapter *adapter, ++ struct wlan_network *candidate) ++{ ++ int ret; ++ ++ /* check for situation of _FW_LINKED */ ++ if (check_fwstate(&adapter->mlmepriv, _FW_LINKED)) { ++ DBG_8723A("%s: _FW_LINKED while ask_for_joinbss!\n", __func__); ++ ++ rtw_disassoc_cmd23a(adapter, 0, true); ++ rtw_indicate_disconnect23a(adapter); ++ rtw_free_assoc_resources23a(adapter, 0); ++ } ++ set_fwstate(&adapter->mlmepriv, _FW_UNDER_LINKING); ++ ++ ret = rtw_joinbss_cmd23a(adapter, candidate); ++ ++ if (ret == _SUCCESS) ++ mod_timer(&adapter->mlmepriv.assoc_timer, ++ jiffies + msecs_to_jiffies(MAX_JOIN_TIMEOUT)); ++ ++ return ret; ++} ++ + int rtw_select_and_join_from_scanned_queue23a(struct mlme_priv *pmlmepriv) + { + struct rtw_adapter *adapter; +@@ -1804,16 +1823,7 @@ int rtw_select_and_join_from_scanned_queue23a(struct mlme_priv *pmlmepriv) + candidate->network.DSConfig); + } + +- /* check for situation of _FW_LINKED */ +- if (check_fwstate(pmlmepriv, _FW_LINKED)) { +- DBG_8723A("%s: _FW_LINKED while ask_for_joinbss!\n", __func__); +- +- rtw_disassoc_cmd23a(adapter, 0, true); +- rtw_indicate_disconnect23a(adapter); +- rtw_free_assoc_resources23a(adapter, 0); +- } +- set_fwstate(pmlmepriv, _FW_UNDER_LINKING); +- ret = rtw_joinbss_cmd23a(adapter, candidate); ++ ret = rtw_do_join_network(adapter, candidate); + + exit: + return ret; +diff --git a/drivers/staging/rtl8723au/include/rtw_mlme.h b/drivers/staging/rtl8723au/include/rtw_mlme.h +index c8e82bf..e48518f 100644 +--- a/drivers/staging/rtl8723au/include/rtw_mlme.h ++++ b/drivers/staging/rtl8723au/include/rtw_mlme.h +@@ -240,6 +240,8 @@ int rtw_init_mlme_priv23a(struct rtw_adapter *adapter); + + void rtw_free_mlme_priv23a(struct mlme_priv *pmlmepriv); + ++int rtw_do_join_network(struct rtw_adapter *adapter, ++ struct wlan_network *candidate); + int rtw_select_and_join_from_scanned_queue23a(struct mlme_priv *pmlmepriv); + int rtw_set_key23a(struct rtw_adapter *adapter, + struct security_priv *psecuritypriv, int keyid, u8 set_tx); diff --git a/debian/patches/features/all/r8723au/0072-staging-rtl8723au-rtw_do_join23a-Use-__func__-to-get.patch b/debian/patches/features/all/r8723au/0072-staging-rtl8723au-rtw_do_join23a-Use-__func__-to-get.patch new file mode 100644 index 000000000..ac7133f15 --- /dev/null +++ b/debian/patches/features/all/r8723au/0072-staging-rtl8723au-rtw_do_join23a-Use-__func__-to-get.patch @@ -0,0 +1,57 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:51 +0200 +Subject: [072/249] staging: rtl8723au: rtw_do_join23a(): Use __func__ to get + function name in debug messages +Origin: https://git.kernel.org/linus/557f9a452df4e0388fa48402b0e2673c45a579f8 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_ioctl_set.c | 13 ++++++------- + 1 file changed, 6 insertions(+), 7 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c +index d2ed9d1..f3dd995 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c ++++ b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c +@@ -35,8 +35,7 @@ int rtw_do_join23a(struct rtw_adapter *padapter) + plist = phead->next; + + RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_info_, +- ("\n rtw_do_join23a: phead = %p; plist = %p\n\n\n", +- phead, plist)); ++ ("%s: phead = %p; plist = %p\n\n\n", __func__, phead, plist)); + + pmlmepriv->cur_network.join_res = -2; + +@@ -55,8 +54,8 @@ int rtw_do_join23a(struct rtw_adapter *padapter) + if (pmlmepriv->LinkDetectInfo.bBusyTraffic == false || + padapter->mlmepriv.to_roaming > 0) { + RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_info_, +- ("rtw_do_join23a(): site survey if scanned_queue " +- "is empty\n.")); ++ ("%s: site survey if scanned_queue is empty\n", ++ __func__)); + /* submit site_survey23a_cmd */ + ret = rtw_sitesurvey_cmd23a(padapter, + &pmlmepriv->assoc_ssid, 1, +@@ -64,8 +63,8 @@ int rtw_do_join23a(struct rtw_adapter *padapter) + if (ret != _SUCCESS) { + pmlmepriv->to_join = false; + RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_, +- ("rtw_do_join23a(): site survey return " +- "error\n.")); ++ ("%s: site survey return error\n", ++ __func__)); + } + } else { + pmlmepriv->to_join = false; +@@ -134,7 +133,7 @@ int rtw_do_join23a(struct rtw_adapter *padapter) + ret = rtw_sitesurvey_cmd23a(padapter, &pmlmepriv->assoc_ssid, 1, NULL, 0); + if (ret != _SUCCESS) { + pmlmepriv->to_join = false; +- RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_, ("do_join(): site survey return error\n.")); ++ RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_, ("%s: site survey return error\n", __func__)); + } + } else { + ret = _FAIL; diff --git a/debian/patches/features/all/r8723au/0073-staging-rtl8723au-rtw_surveydone_event_callback23a-R.patch b/debian/patches/features/all/r8723au/0073-staging-rtl8723au-rtw_surveydone_event_callback23a-R.patch new file mode 100644 index 000000000..45c32cbcb --- /dev/null +++ b/debian/patches/features/all/r8723au/0073-staging-rtl8723au-rtw_surveydone_event_callback23a-R.patch @@ -0,0 +1,25 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:52 +0200 +Subject: [073/249] staging: rtl8723au: rtw_surveydone_event_callback23a(): + Remove superfluous memset() +Origin: https://git.kernel.org/linus/ca3504be633315cb19b433bada574d109065e2fa + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme.c | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c +index 4a146fb..77a0a4a 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c +@@ -751,8 +751,6 @@ rtw_surveydone_event_callback23a(struct rtw_adapter *adapter, const u8 *pbuf) + ("switching to adhoc " + "master\n")); + +- memset(&pdev_network->Ssid, 0, +- sizeof(struct cfg80211_ssid)); + memcpy(&pdev_network->Ssid, + &pmlmepriv->assoc_ssid, + sizeof(struct cfg80211_ssid)); diff --git a/debian/patches/features/all/r8723au/0074-staging-rtl8723au-Consolidate-duplicate-adhoc-joinin.patch b/debian/patches/features/all/r8723au/0074-staging-rtl8723au-Consolidate-duplicate-adhoc-joinin.patch new file mode 100644 index 000000000..885da949f --- /dev/null +++ b/debian/patches/features/all/r8723au/0074-staging-rtl8723au-Consolidate-duplicate-adhoc-joinin.patch @@ -0,0 +1,221 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:53 +0200 +Subject: [074/249] staging: rtl8723au: Consolidate duplicate adhoc joining + code into rtw_do_join_adhoc() +Origin: https://git.kernel.org/linus/fcc6020ae8915eedf8f9bd584f32a6f731ff1d14 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_ioctl_set.c | 40 +---------- + drivers/staging/rtl8723au/core/rtw_mlme.c | 93 ++++++++++---------------- + drivers/staging/rtl8723au/include/rtw_mlme.h | 1 + + 3 files changed, 41 insertions(+), 93 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c +index f3dd995..a994893e 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c ++++ b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c +@@ -25,7 +25,6 @@ + int rtw_do_join23a(struct rtw_adapter *padapter) + { + struct list_head *plist, *phead; +- u8* pibss = NULL; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct rtw_queue *queue = &pmlmepriv->scanned_queue; + int ret = _SUCCESS; +@@ -80,43 +79,10 @@ int rtw_do_join23a(struct rtw_adapter *padapter) + pmlmepriv->to_join = false; + } else { + if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE)) { +- struct wlan_bssid_ex *pdev_network; +- /* submit createbss_cmd to change to a +- ADHOC_MASTER */ +- +- /* pmlmepriv->lock has been acquired by +- caller... */ +- pdev_network = +- &padapter->registrypriv.dev_network; +- +- pmlmepriv->fw_state = WIFI_ADHOC_MASTER_STATE; +- +- pibss = padapter->registrypriv.dev_network.MacAddress; +- +- memcpy(&pdev_network->Ssid, +- &pmlmepriv->assoc_ssid, +- sizeof(struct cfg80211_ssid)); +- +- rtw_update_registrypriv_dev_network23a(padapter); +- +- rtw_generate_random_ibss23a(pibss); +- +- if (rtw_createbss_cmd23a(padapter) != _SUCCESS) { +- RT_TRACE(_module_rtl871x_ioctl_set_c_, +- _drv_err_, +- ("***Error =>do_goin: rtw_creat" +- "ebss_cmd status FAIL***\n")); +- ret = _FAIL; ++ /* switch to ADHOC_MASTER */ ++ ret = rtw_do_join_adhoc(padapter); ++ if (ret != _SUCCESS) + goto exit; +- } +- +- pmlmepriv->to_join = false; +- +- RT_TRACE(_module_rtl871x_ioctl_set_c_, +- _drv_info_, +- ("***Error => rtw_select_and_join_from" +- "_scanned_queue FAIL under STA_Mode" +- "***\n ")); + } else { + /* can't associate ; reset under-linking */ + _clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING); +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c +index 77a0a4a..81693c1 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c +@@ -705,8 +705,6 @@ rtw_surveydone_event_callback23a(struct rtw_adapter *adapter, const u8 *pbuf) + { + struct mlme_priv *pmlmepriv = &adapter->mlmepriv; + struct mlme_ext_priv *pmlmeext = &adapter->mlmeextpriv; +- struct wlan_bssid_ex *pdev_network; +- u8 *pibss; + + spin_lock_bh(&pmlmepriv->lock); + +@@ -738,39 +736,8 @@ rtw_surveydone_event_callback23a(struct rtw_adapter *adapter, const u8 *pbuf) + set_fwstate(pmlmepriv, _FW_UNDER_LINKING); + + if (rtw_select_and_join_from_scanned_queue23a( +- pmlmepriv) == _SUCCESS) { +- } else { +- pdev_network = &adapter->registrypriv.dev_network; +- pibss = adapter->registrypriv.dev_network.MacAddress; +- +- _clr_fwstate_(pmlmepriv, +- _FW_UNDER_SURVEY); +- +- RT_TRACE(_module_rtl871x_mlme_c_, +- _drv_err_, +- ("switching to adhoc " +- "master\n")); +- +- memcpy(&pdev_network->Ssid, +- &pmlmepriv->assoc_ssid, +- sizeof(struct cfg80211_ssid)); +- +- rtw_update_registrypriv_dev_network23a( +- adapter); +- rtw_generate_random_ibss23a(pibss); +- +- pmlmepriv->fw_state = +- WIFI_ADHOC_MASTER_STATE; +- +- if (rtw_createbss_cmd23a(adapter) != +- _SUCCESS) +- RT_TRACE(_module_rtl871x_mlme_c_, +- _drv_err_, +- ("Error =>rtw_createbss_cmd23a" +- " status FAIL\n")); +- +- pmlmepriv->to_join = false; +- } ++ pmlmepriv) != _SUCCESS) ++ rtw_do_join_adhoc(adapter); + } + } else { + int ret; +@@ -1425,7 +1392,6 @@ void rtw_stadel_event_callback23a(struct rtw_adapter *adapter, const u8 *pbuf) + struct sta_info *psta; + struct wlan_network* pwlan; + struct wlan_bssid_ex *pdev_network; +- u8 *pibss; + struct mlme_priv *pmlmepriv = &adapter->mlmepriv; + struct stadel_event *pstadel = (struct stadel_event *)pbuf; + struct sta_priv *pstapriv = &adapter->stapriv; +@@ -1496,30 +1462,11 @@ void rtw_stadel_event_callback23a(struct rtw_adapter *adapter, const u8 *pbuf) + spin_unlock_bh(&pmlmepriv->scanned_queue.lock); + /* re-create ibss */ + pdev_network = &adapter->registrypriv.dev_network; +- pibss = adapter->registrypriv.dev_network.MacAddress; + + memcpy(pdev_network, &tgt_network->network, + get_wlan_bssid_ex_sz(&tgt_network->network)); + +- memcpy(&pdev_network->Ssid, &pmlmepriv->assoc_ssid, +- sizeof(struct cfg80211_ssid)); +- +- rtw_update_registrypriv_dev_network23a(adapter); +- +- rtw_generate_random_ibss23a(pibss); +- +- if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE)) { +- set_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE); +- _clr_fwstate_(pmlmepriv, WIFI_ADHOC_STATE); +- } +- +- if (rtw_createbss_cmd23a(adapter) != _SUCCESS) { +- RT_TRACE(_module_rtl871x_ioctl_set_c_, +- _drv_err_, +- ("***Error =>stadel_event_callback: " +- "rtw_createbss_cmd23a status " +- "FAIL***\n")); +- } ++ rtw_do_join_adhoc(adapter); + } + } + +@@ -1777,6 +1724,40 @@ exit: + } + + ++int rtw_do_join_adhoc(struct rtw_adapter *adapter) ++{ ++ struct mlme_priv *pmlmepriv = &adapter->mlmepriv; ++ struct wlan_bssid_ex *pdev_network; ++ u8 *ibss; ++ int ret; ++ ++ pdev_network = &adapter->registrypriv.dev_network; ++ ibss = adapter->registrypriv.dev_network.MacAddress; ++ ++ _clr_fwstate_(pmlmepriv, _FW_UNDER_SURVEY); ++ ++ RT_TRACE(_module_rtl871x_mlme_c_, _drv_err_, ++ ("switching to adhoc master\n")); ++ ++ memcpy(&pdev_network->Ssid, &pmlmepriv->assoc_ssid, ++ sizeof(struct cfg80211_ssid)); ++ ++ rtw_update_registrypriv_dev_network23a(adapter); ++ rtw_generate_random_ibss23a(ibss); ++ ++ pmlmepriv->fw_state = WIFI_ADHOC_MASTER_STATE; ++ ++ ret = rtw_createbss_cmd23a(adapter); ++ if (ret != _SUCCESS) { ++ RT_TRACE(_module_rtl871x_mlme_c_, _drv_err_, ++ ("Error =>rtw_createbss_cmd23a status FAIL\n")); ++ } else { ++ pmlmepriv->to_join = false; ++ } ++ ++ return ret; ++} ++ + int rtw_do_join_network(struct rtw_adapter *adapter, + struct wlan_network *candidate) + { +diff --git a/drivers/staging/rtl8723au/include/rtw_mlme.h b/drivers/staging/rtl8723au/include/rtw_mlme.h +index e48518f..79c3b3d 100644 +--- a/drivers/staging/rtl8723au/include/rtw_mlme.h ++++ b/drivers/staging/rtl8723au/include/rtw_mlme.h +@@ -240,6 +240,7 @@ int rtw_init_mlme_priv23a(struct rtw_adapter *adapter); + + void rtw_free_mlme_priv23a(struct mlme_priv *pmlmepriv); + ++int rtw_do_join_adhoc(struct rtw_adapter *adapter); + int rtw_do_join_network(struct rtw_adapter *adapter, + struct wlan_network *candidate); + int rtw_select_and_join_from_scanned_queue23a(struct mlme_priv *pmlmepriv); diff --git a/debian/patches/features/all/r8723au/0075-staging-rtl8723au-Remove-no-op-rtw_get_encrypt_decry.patch b/debian/patches/features/all/r8723au/0075-staging-rtl8723au-Remove-no-op-rtw_get_encrypt_decry.patch new file mode 100644 index 000000000..81c4e73dc --- /dev/null +++ b/debian/patches/features/all/r8723au/0075-staging-rtl8723au-Remove-no-op-rtw_get_encrypt_decry.patch @@ -0,0 +1,51 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:54 +0200 +Subject: [075/249] staging: rtl8723au: Remove no-op + rtw_get_encrypt_decrypt_from_registrypriv23a() +Origin: https://git.kernel.org/linus/3221bb536d92967ac204424140699a4fc23e0ac5 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme.c | 7 ------- + drivers/staging/rtl8723au/include/rtw_mlme.h | 2 -- + 2 files changed, 9 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c +index 81693c1..efb2161 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c +@@ -1151,8 +1151,6 @@ void rtw_joinbss_event_prehandle23a(struct rtw_adapter *adapter, u8 *pbuf) + ("joinbss event call back received with res=%d\n", + pnetwork->join_res)); + +- rtw_get_encrypt_decrypt_from_registrypriv23a(adapter); +- + if (pmlmepriv->assoc_ssid.ssid_len == 0) { + RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_, + ("@@@@@ joinbss event call back for Any SSid\n")); +@@ -2155,11 +2153,6 @@ void rtw_update_registrypriv_dev_network23a(struct rtw_adapter* adapter) + /* pdev_network->IELength = cpu_to_le32(sz); */ + } + +-void rtw_get_encrypt_decrypt_from_registrypriv23a(struct rtw_adapter* adapter) +-{ +- +-} +- + /* the fucntion is at passive_level */ + void rtw_joinbss_reset23a(struct rtw_adapter *padapter) + { +diff --git a/drivers/staging/rtl8723au/include/rtw_mlme.h b/drivers/staging/rtl8723au/include/rtw_mlme.h +index 79c3b3d..bc420ec 100644 +--- a/drivers/staging/rtl8723au/include/rtw_mlme.h ++++ b/drivers/staging/rtl8723au/include/rtw_mlme.h +@@ -331,8 +331,6 @@ void rtw_init_registrypriv_dev_network23a(struct rtw_adapter *adapter); + + void rtw_update_registrypriv_dev_network23a(struct rtw_adapter *adapter); + +-void rtw_get_encrypt_decrypt_from_registrypriv23a(struct rtw_adapter *adapter); +- + void rtw_scan_timeout_handler23a(unsigned long data); + + void rtw_dynamic_check_timer_handler(unsigned long data); diff --git a/debian/patches/features/all/r8723au/0076-staging-rtl8723au-to_join-will-no-be-true-if-_FW_LIN.patch b/debian/patches/features/all/r8723au/0076-staging-rtl8723au-to_join-will-no-be-true-if-_FW_LIN.patch new file mode 100644 index 000000000..9111f7a46 --- /dev/null +++ b/debian/patches/features/all/r8723au/0076-staging-rtl8723au-to_join-will-no-be-true-if-_FW_LIN.patch @@ -0,0 +1,45 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:55 +0200 +Subject: [076/249] staging: rtl8723au: to_join will no be true if _FW_LINKED + is set +Origin: https://git.kernel.org/linus/e5c4db0959fd604baf95508e5ac6c62b72bf2c7a + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme.c | 13 ++++++------- + 1 file changed, 6 insertions(+), 7 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c +index efb2161..06dc897 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c +@@ -705,6 +705,7 @@ rtw_surveydone_event_callback23a(struct rtw_adapter *adapter, const u8 *pbuf) + { + struct mlme_priv *pmlmepriv = &adapter->mlmepriv; + struct mlme_ext_priv *pmlmeext = &adapter->mlmeextpriv; ++ int ret; + + spin_lock_bh(&pmlmepriv->lock); + +@@ -732,15 +733,13 @@ rtw_surveydone_event_callback23a(struct rtw_adapter *adapter, const u8 *pbuf) + + if (pmlmepriv->to_join == true) { + if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE)) { +- if (!check_fwstate(pmlmepriv, _FW_LINKED)) { +- set_fwstate(pmlmepriv, _FW_UNDER_LINKING); ++ set_fwstate(pmlmepriv, _FW_UNDER_LINKING); + +- if (rtw_select_and_join_from_scanned_queue23a( +- pmlmepriv) != _SUCCESS) +- rtw_do_join_adhoc(adapter); +- } ++ ret = rtw_select_and_join_from_scanned_queue23a( ++ pmlmepriv); ++ if (ret != _SUCCESS) ++ rtw_do_join_adhoc(adapter); + } else { +- int ret; + set_fwstate(pmlmepriv, _FW_UNDER_LINKING); + pmlmepriv->to_join = false; + ret = rtw_select_and_join_from_scanned_queue23a( diff --git a/debian/patches/features/all/r8723au/0077-staging-rtl8723au-rtw_surveydone_event_callback23a-W.patch b/debian/patches/features/all/r8723au/0077-staging-rtl8723au-rtw_surveydone_event_callback23a-W.patch new file mode 100644 index 000000000..7605d4bfc --- /dev/null +++ b/debian/patches/features/all/r8723au/0077-staging-rtl8723au-rtw_surveydone_event_callback23a-W.patch @@ -0,0 +1,33 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:56 +0200 +Subject: [077/249] staging: rtl8723au: rtw_surveydone_event_callback23a(): We + always set _FW_UNDER_LINKING +Origin: https://git.kernel.org/linus/66ed1bc999eaa4357bd2d7098386e2284439098c + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme.c | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c +index 06dc897..d2b38f7 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c +@@ -732,15 +732,13 @@ rtw_surveydone_event_callback23a(struct rtw_adapter *adapter, const u8 *pbuf) + rtw_set_signal_stat_timer(&adapter->recvpriv); + + if (pmlmepriv->to_join == true) { ++ set_fwstate(pmlmepriv, _FW_UNDER_LINKING); + if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE)) { +- set_fwstate(pmlmepriv, _FW_UNDER_LINKING); +- + ret = rtw_select_and_join_from_scanned_queue23a( + pmlmepriv); + if (ret != _SUCCESS) + rtw_do_join_adhoc(adapter); + } else { +- set_fwstate(pmlmepriv, _FW_UNDER_LINKING); + pmlmepriv->to_join = false; + ret = rtw_select_and_join_from_scanned_queue23a( + pmlmepriv); diff --git a/debian/patches/features/all/r8723au/0078-staging-rtl8723au-rtw_select_and_join_from_scanned_q.patch b/debian/patches/features/all/r8723au/0078-staging-rtl8723au-rtw_select_and_join_from_scanned_q.patch new file mode 100644 index 000000000..6c5e10f4e --- /dev/null +++ b/debian/patches/features/all/r8723au/0078-staging-rtl8723au-rtw_select_and_join_from_scanned_q.patch @@ -0,0 +1,28 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:57 +0200 +Subject: [078/249] staging: rtl8723au: + rtw_select_and_join_from_scanned_queue23a() never returns 2 +Origin: https://git.kernel.org/linus/85b3c5e48e6bd5e29272f9b1a4c1e2fd03eb21ab + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme.c | 5 +---- + 1 file changed, 1 insertion(+), 4 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c +index d2b38f7..1557088 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c +@@ -742,10 +742,7 @@ rtw_surveydone_event_callback23a(struct rtw_adapter *adapter, const u8 *pbuf) + pmlmepriv->to_join = false; + ret = rtw_select_and_join_from_scanned_queue23a( + pmlmepriv); +- if (ret == 2) {/* there is no need to wait */ +- _clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING); +- rtw_indicate_connect23a(adapter); +- } else if (ret != _SUCCESS) { ++ if (ret != _SUCCESS) { + DBG_8723A("try_to_join, but select scanning " + "queue fail, to_roaming:%d\n", + adapter->mlmepriv.to_roaming); diff --git a/debian/patches/features/all/r8723au/0079-staging-rtl8723au-rtw_set_ssid-Use-rtw_do_join_netwo.patch b/debian/patches/features/all/r8723au/0079-staging-rtl8723au-rtw_set_ssid-Use-rtw_do_join_netwo.patch new file mode 100644 index 000000000..44293bc40 --- /dev/null +++ b/debian/patches/features/all/r8723au/0079-staging-rtl8723au-rtw_set_ssid-Use-rtw_do_join_netwo.patch @@ -0,0 +1,53 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:58 +0200 +Subject: [079/249] staging: rtl8723au: rtw_set_ssid(): Use + rtw_do_join_network() +Origin: https://git.kernel.org/linus/72795e9de7deae0952d1174cfb37cb869b582d29 + +We already have the wlan_network we wish to join, hence it's pointless +to go back to the scanned_queue and pull it out of there, before +running the join logic. + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 25 +++++++++++++++++++---- + 1 file changed, 21 insertions(+), 4 deletions(-) + +diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +index 9c36f6c..e75e078 100644 +--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c ++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +@@ -2099,11 +2099,28 @@ handle_tkip_countermeasure: + + pmlmepriv->assoc_by_bssid = false; + +- if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY)) +- pmlmepriv->to_join = true; +- else +- status = rtw_do_join23a(padapter); ++ pmlmepriv->to_join = true; ++ ++ if (!check_fwstate(pmlmepriv, _FW_UNDER_SURVEY)) { ++ pmlmepriv->cur_network.join_res = -2; + ++ status = rtw_do_join_network(padapter, newnetwork); ++ if (status == _SUCCESS) { ++ pmlmepriv->to_join = false; ++ } else { ++ if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE)) { ++ /* switch to ADHOC_MASTER */ ++ status = rtw_do_join_adhoc(padapter); ++ if (status != _SUCCESS) ++ goto release_mlme_lock; ++ } else { ++ /* can't associate ; reset under-linking */ ++ _clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING); ++ status = _FAIL; ++ pmlmepriv->to_join = false; ++ } ++ } ++ } + release_mlme_lock: + spin_unlock_bh(&pmlmepriv->lock); + diff --git a/debian/patches/features/all/r8723au/0080-staging-rtl8723au-rtw_do_join23a-Don-t-start-scannin.patch b/debian/patches/features/all/r8723au/0080-staging-rtl8723au-rtw_do_join23a-Don-t-start-scannin.patch new file mode 100644 index 000000000..2198acff1 --- /dev/null +++ b/debian/patches/features/all/r8723au/0080-staging-rtl8723au-rtw_do_join23a-Don-t-start-scannin.patch @@ -0,0 +1,126 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:16:59 +0200 +Subject: [080/249] staging: rtl8723au: rtw_do_join23a(): Don't start scanning + if network isn't found +Origin: https://git.kernel.org/linus/e89c05505ff6f2796a044931d622b6565f416e18 + +Don't start running network scans if trying to connect to a network +not in our cache. Let the 802.11 stack do it's job instead. + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_ioctl_set.c | 85 ++++---------------------- + 1 file changed, 13 insertions(+), 72 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c +index a994893e..4f6d7f5 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c ++++ b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c +@@ -24,17 +24,8 @@ + + int rtw_do_join23a(struct rtw_adapter *padapter) + { +- struct list_head *plist, *phead; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; +- struct rtw_queue *queue = &pmlmepriv->scanned_queue; +- int ret = _SUCCESS; +- +- spin_lock_bh(&pmlmepriv->scanned_queue.lock); +- phead = get_list_head(queue); +- plist = phead->next; +- +- RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_info_, +- ("%s: phead = %p; plist = %p\n\n\n", __func__, phead, plist)); ++ int ret; + + pmlmepriv->cur_network.join_res = -2; + +@@ -42,75 +33,25 @@ int rtw_do_join23a(struct rtw_adapter *padapter) + + pmlmepriv->to_join = true; + +- if (list_empty(&queue->queue)) { +- spin_unlock_bh(&pmlmepriv->scanned_queue.lock); +- _clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING); +- +- /* when set_ssid/set_bssid for rtw_do_join23a(), but +- scanning queue is empty */ +- /* we try to issue sitesurvey firstly */ +- +- if (pmlmepriv->LinkDetectInfo.bBusyTraffic == false || +- padapter->mlmepriv.to_roaming > 0) { +- RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_info_, +- ("%s: site survey if scanned_queue is empty\n", +- __func__)); +- /* submit site_survey23a_cmd */ +- ret = rtw_sitesurvey_cmd23a(padapter, +- &pmlmepriv->assoc_ssid, 1, +- NULL, 0); +- if (ret != _SUCCESS) { +- pmlmepriv->to_join = false; +- RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_, +- ("%s: site survey return error\n", +- __func__)); +- } ++ ret = rtw_select_and_join_from_scanned_queue23a(pmlmepriv); ++ if (ret == _SUCCESS) { ++ pmlmepriv->to_join = false; ++ } else { ++ if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE)) { ++ /* switch to ADHOC_MASTER */ ++ ret = rtw_do_join_adhoc(padapter); ++ if (ret != _SUCCESS) ++ goto exit; + } else { +- pmlmepriv->to_join = false; +- ret = _FAIL; +- } ++ /* can't associate ; reset under-linking */ ++ _clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING); + +- goto exit; +- } else { +- int select_ret; +- spin_unlock_bh(&pmlmepriv->scanned_queue.lock); +- select_ret = rtw_select_and_join_from_scanned_queue23a(pmlmepriv); +- if (select_ret == _SUCCESS) { ++ ret = _FAIL; + pmlmepriv->to_join = false; +- } else { +- if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE)) { +- /* switch to ADHOC_MASTER */ +- ret = rtw_do_join_adhoc(padapter); +- if (ret != _SUCCESS) +- goto exit; +- } else { +- /* can't associate ; reset under-linking */ +- _clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING); +- +- /* when set_ssid/set_bssid for rtw_do_join23a(), +- but there are no desired bss in scanning +- queue */ +- /* we try to issue sitesurvey firstly */ +- if (pmlmepriv->LinkDetectInfo.bBusyTraffic == +- false || padapter->mlmepriv.to_roaming > 0){ +- /* DBG_8723A("rtw_do_join23a() when no " +- "desired bss in scanning queue\n"); +- */ +- ret = rtw_sitesurvey_cmd23a(padapter, &pmlmepriv->assoc_ssid, 1, NULL, 0); +- if (ret != _SUCCESS) { +- pmlmepriv->to_join = false; +- RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_, ("%s: site survey return error\n", __func__)); +- } +- } else { +- ret = _FAIL; +- pmlmepriv->to_join = false; +- } +- } + } + } + + exit: +- + return ret; + } + diff --git a/debian/patches/features/all/r8723au/0081-staging-rtl8723au-Move-rtw_do_join23a-to-rtw_mlme.c-.patch b/debian/patches/features/all/r8723au/0081-staging-rtl8723au-Move-rtw_do_join23a-to-rtw_mlme.c-.patch new file mode 100644 index 000000000..e74870625 --- /dev/null +++ b/debian/patches/features/all/r8723au/0081-staging-rtl8723au-Move-rtw_do_join23a-to-rtw_mlme.c-.patch @@ -0,0 +1,139 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:17:00 +0200 +Subject: [081/249] staging: rtl8723au: Move rtw_do_join23a() to rtw_mlme.c and + declare it static +Origin: https://git.kernel.org/linus/e007b4c77cd70c087929c1493cc4207dd5163748 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_ioctl_set.c | 33 -------------------- + drivers/staging/rtl8723au/core/rtw_mlme.c | 38 +++++++++++++++++++++-- + drivers/staging/rtl8723au/include/rtw_ioctl_set.h | 1 - + 3 files changed, 36 insertions(+), 36 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c +index 4f6d7f5..77835fc 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c ++++ b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c +@@ -22,39 +22,6 @@ + #include + #include + +-int rtw_do_join23a(struct rtw_adapter *padapter) +-{ +- struct mlme_priv *pmlmepriv = &padapter->mlmepriv; +- int ret; +- +- pmlmepriv->cur_network.join_res = -2; +- +- set_fwstate(pmlmepriv, _FW_UNDER_LINKING); +- +- pmlmepriv->to_join = true; +- +- ret = rtw_select_and_join_from_scanned_queue23a(pmlmepriv); +- if (ret == _SUCCESS) { +- pmlmepriv->to_join = false; +- } else { +- if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE)) { +- /* switch to ADHOC_MASTER */ +- ret = rtw_do_join_adhoc(padapter); +- if (ret != _SUCCESS) +- goto exit; +- } else { +- /* can't associate ; reset under-linking */ +- _clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING); +- +- ret = _FAIL; +- pmlmepriv->to_join = false; +- } +- } +- +-exit: +- return ret; +-} +- + int rtw_set_802_11_bssid23a_list_scan(struct rtw_adapter *padapter, + struct cfg80211_ssid *pssid, + int ssid_max_num) +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c +index 1557088..bdebde7 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c +@@ -29,6 +29,7 @@ + + static struct wlan_network * + rtw_select_candidate_from_queue(struct mlme_priv *pmlmepriv); ++static int rtw_do_join(struct rtw_adapter *padapter); + + static void rtw_init_mlme_timer(struct rtw_adapter *padapter) + { +@@ -280,7 +281,7 @@ static void _rtw_roaming(struct rtw_adapter *padapter, + pmlmepriv->assoc_by_bssid = false; + + while (1) { +- do_join_r = rtw_do_join23a(padapter); ++ do_join_r = rtw_do_join(padapter); + if (do_join_r == _SUCCESS) + break; + else { +@@ -1489,7 +1490,7 @@ void rtw23a_join_to_handler (unsigned long data) + if (adapter->mlmepriv.to_roaming != 0) { + /* try another */ + DBG_8723A("%s try another roaming\n", __func__); +- do_join_r = rtw_do_join23a(adapter); ++ do_join_r = rtw_do_join(adapter); + if (do_join_r != _SUCCESS) { + DBG_8723A("%s roaming do_join return " + "%d\n", __func__ , do_join_r); +@@ -1688,6 +1689,39 @@ pmlmepriv->lock + + */ + ++static int rtw_do_join(struct rtw_adapter *padapter) ++{ ++ struct mlme_priv *pmlmepriv = &padapter->mlmepriv; ++ int ret; ++ ++ pmlmepriv->cur_network.join_res = -2; ++ ++ set_fwstate(pmlmepriv, _FW_UNDER_LINKING); ++ ++ pmlmepriv->to_join = true; ++ ++ ret = rtw_select_and_join_from_scanned_queue23a(pmlmepriv); ++ if (ret == _SUCCESS) { ++ pmlmepriv->to_join = false; ++ } else { ++ if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE)) { ++ /* switch to ADHOC_MASTER */ ++ ret = rtw_do_join_adhoc(padapter); ++ if (ret != _SUCCESS) ++ goto exit; ++ } else { ++ /* can't associate ; reset under-linking */ ++ _clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING); ++ ++ ret = _FAIL; ++ pmlmepriv->to_join = false; ++ } ++ } ++ ++exit: ++ return ret; ++} ++ + static struct wlan_network * + rtw_select_candidate_from_queue(struct mlme_priv *pmlmepriv) + { +diff --git a/drivers/staging/rtl8723au/include/rtw_ioctl_set.h b/drivers/staging/rtl8723au/include/rtw_ioctl_set.h +index 14a36f5..e84a422 100644 +--- a/drivers/staging/rtl8723au/include/rtw_ioctl_set.h ++++ b/drivers/staging/rtl8723au/include/rtw_ioctl_set.h +@@ -23,6 +23,5 @@ int rtw_set_802_11_bssid23a_list_scan(struct rtw_adapter *padapter, + + u16 rtw_get_cur_max_rate23a(struct rtw_adapter *adapter); + s32 FillH2CCmd(struct rtw_adapter *padapter, u8 ElementID, u32 CmdLen, u8 *pCmdBuffer); +-int rtw_do_join23a(struct rtw_adapter *padapter); + + #endif diff --git a/debian/patches/features/all/r8723au/0082-staging-rtl8723au-rtw_get_cur_max_rate23a-Remove-dup.patch b/debian/patches/features/all/r8723au/0082-staging-rtl8723au-rtw_get_cur_max_rate23a-Remove-dup.patch new file mode 100644 index 000000000..a35e21c7c --- /dev/null +++ b/debian/patches/features/all/r8723au/0082-staging-rtl8723au-rtw_get_cur_max_rate23a-Remove-dup.patch @@ -0,0 +1,27 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:17:01 +0200 +Subject: [082/249] staging: rtl8723au: rtw_get_cur_max_rate23a(): Remove + duplicate fwstate checks +Origin: https://git.kernel.org/linus/8f9558b906bed222231fcfaed89cca36d0b56f01 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_ioctl_set.c | 4 ---- + 1 file changed, 4 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c +index 77835fc..481f94c 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c ++++ b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c +@@ -100,10 +100,6 @@ u16 rtw_get_cur_max_rate23a(struct rtw_adapter *adapter) + u8 bw_40MHz = 0, short_GI_20 = 0, short_GI_40 = 0; + u16 mcs_rate = 0; + +- if (!check_fwstate(pmlmepriv, _FW_LINKED) && +- !check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE)) +- return 0; +- + if (pmlmeext->cur_wireless_mode & (WIRELESS_11_24N|WIRELESS_11_5N)) { + p = cfg80211_find_ie(WLAN_EID_HT_CAPABILITY, + &pcur_bss->IEs[12], diff --git a/debian/patches/features/all/r8723au/0083-staging-rtl8723au-rtw_get_cur_max_rate23a-We-are-in-.patch b/debian/patches/features/all/r8723au/0083-staging-rtl8723au-rtw_get_cur_max_rate23a-We-are-in-.patch new file mode 100644 index 000000000..894944848 --- /dev/null +++ b/debian/patches/features/all/r8723au/0083-staging-rtl8723au-rtw_get_cur_max_rate23a-We-are-in-.patch @@ -0,0 +1,87 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:17:02 +0200 +Subject: [083/249] staging: rtl8723au: rtw_get_cur_max_rate23a(): We are in N + mode if WLAN_EID_HT_CAPABILITY is present +Origin: https://git.kernel.org/linus/023b40d882d7bfee65612115fd736bafd285e8dc + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_ioctl_set.c | 63 ++++++++++++-------------- + 1 file changed, 29 insertions(+), 34 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c +index 481f94c..e2c40a6 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c ++++ b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c +@@ -100,41 +100,36 @@ u16 rtw_get_cur_max_rate23a(struct rtw_adapter *adapter) + u8 bw_40MHz = 0, short_GI_20 = 0, short_GI_40 = 0; + u16 mcs_rate = 0; + +- if (pmlmeext->cur_wireless_mode & (WIRELESS_11_24N|WIRELESS_11_5N)) { +- p = cfg80211_find_ie(WLAN_EID_HT_CAPABILITY, +- &pcur_bss->IEs[12], +- pcur_bss->IELength - 12); +- if (p && p[1] > 0) { +- pht_capie = (struct ieee80211_ht_cap *)(p + 2); +- +- memcpy(&mcs_rate, &pht_capie->mcs, 2); +- +- /* bw_40MHz = (pht_capie->cap_info& +- IEEE80211_HT_CAP_SUP_WIDTH_20_40) ? 1:0; */ +- /* cur_bwmod is updated by beacon, pmlmeinfo is +- updated by association response */ +- bw_40MHz = (pmlmeext->cur_bwmode && +- (pmlmeinfo->HT_info.ht_param & +- IEEE80211_HT_PARAM_CHAN_WIDTH_ANY)) ? 1:0; +- +- /* short_GI = (pht_capie->cap_info & (IEEE80211_HT_CAP +- _SGI_20|IEEE80211_HT_CAP_SGI_40)) ? 1 : 0; */ +- short_GI_20 = +- (pmlmeinfo->ht_cap.cap_info & +- cpu_to_le16(IEEE80211_HT_CAP_SGI_20)) ? 1:0; +- short_GI_40 = +- (pmlmeinfo->ht_cap.cap_info & +- cpu_to_le16(IEEE80211_HT_CAP_SGI_40)) ? 1:0; +- +- rf_type = rtl8723a_get_rf_type(adapter); +- max_rate = rtw_mcs_rate23a(rf_type, bw_40MHz & +- pregistrypriv->cbw40_enable, +- short_GI_20, short_GI_40, +- &pmlmeinfo->ht_cap.mcs); +- } ++ p = cfg80211_find_ie(WLAN_EID_HT_CAPABILITY, &pcur_bss->IEs[12], ++ pcur_bss->IELength - 12); ++ if (p && p[1] > 0) { ++ pht_capie = (struct ieee80211_ht_cap *)(p + 2); ++ ++ memcpy(&mcs_rate, &pht_capie->mcs, 2); ++ ++ /* bw_40MHz = (pht_capie->cap_info& ++ IEEE80211_HT_CAP_SUP_WIDTH_20_40) ? 1:0; */ ++ /* cur_bwmod is updated by beacon, pmlmeinfo is ++ updated by association response */ ++ bw_40MHz = (pmlmeext->cur_bwmode && ++ (pmlmeinfo->HT_info.ht_param & ++ IEEE80211_HT_PARAM_CHAN_WIDTH_ANY)) ? 1:0; ++ ++ /* short_GI = (pht_capie->cap_info & (IEEE80211_HT_CAP ++ _SGI_20|IEEE80211_HT_CAP_SGI_40)) ? 1 : 0; */ ++ short_GI_20 = (pmlmeinfo->ht_cap.cap_info & ++ cpu_to_le16(IEEE80211_HT_CAP_SGI_20)) ? 1:0; ++ short_GI_40 = (pmlmeinfo->ht_cap.cap_info & ++ cpu_to_le16(IEEE80211_HT_CAP_SGI_40)) ? 1:0; ++ ++ rf_type = rtl8723a_get_rf_type(adapter); ++ max_rate = rtw_mcs_rate23a(rf_type, bw_40MHz & ++ pregistrypriv->cbw40_enable, ++ short_GI_20, short_GI_40, ++ &pmlmeinfo->ht_cap.mcs); + } else { +- while ((pcur_bss->SupportedRates[i] != 0) && +- (pcur_bss->SupportedRates[i] != 0xFF)) { ++ while (pcur_bss->SupportedRates[i] != 0 && ++ pcur_bss->SupportedRates[i] != 0xFF) { + rate = pcur_bss->SupportedRates[i] & 0x7F; + if (rate>max_rate) + max_rate = rate; diff --git a/debian/patches/features/all/r8723au/0084-staging-rtl8723au-Move-rtw_get_cur_max_rate23a-to-io.patch b/debian/patches/features/all/r8723au/0084-staging-rtl8723au-Move-rtw_get_cur_max_rate23a-to-io.patch new file mode 100644 index 000000000..3cf9e6e3e --- /dev/null +++ b/debian/patches/features/all/r8723au/0084-staging-rtl8723au-Move-rtw_get_cur_max_rate23a-to-io.patch @@ -0,0 +1,176 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:17:03 +0200 +Subject: [084/249] staging: rtl8723au: Move rtw_get_cur_max_rate23a() to + ioctl_cfg80211.c +Origin: https://git.kernel.org/linus/27fd731ece203c37f0a3708cafc95e9cead8cd2d + +This function has only one caller, so move it home and declare it static + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_ioctl_set.c | 63 ----------------------- + drivers/staging/rtl8723au/include/rtw_ioctl_set.h | 1 - + drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 59 ++++++++++++++++++++- + 3 files changed, 58 insertions(+), 65 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c +index e2c40a6..b58cd9e 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c ++++ b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c +@@ -78,66 +78,3 @@ int rtw_set_802_11_bssid23a_list_scan(struct rtw_adapter *padapter, + exit: + return res; + } +- +-/* +-* rtw_get_cur_max_rate23a - +-* @adapter: pointer to _adapter structure +-* +-* Return 0 or 100Kbps +-*/ +-u16 rtw_get_cur_max_rate23a(struct rtw_adapter *adapter) +-{ +- int i = 0; +- const u8 *p; +- u16 rate = 0, max_rate = 0; +- struct mlme_ext_priv *pmlmeext = &adapter->mlmeextpriv; +- struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; +- struct registry_priv *pregistrypriv = &adapter->registrypriv; +- struct mlme_priv *pmlmepriv = &adapter->mlmepriv; +- struct wlan_bssid_ex *pcur_bss = &pmlmepriv->cur_network.network; +- 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; +- +- p = cfg80211_find_ie(WLAN_EID_HT_CAPABILITY, &pcur_bss->IEs[12], +- pcur_bss->IELength - 12); +- if (p && p[1] > 0) { +- pht_capie = (struct ieee80211_ht_cap *)(p + 2); +- +- memcpy(&mcs_rate, &pht_capie->mcs, 2); +- +- /* bw_40MHz = (pht_capie->cap_info& +- IEEE80211_HT_CAP_SUP_WIDTH_20_40) ? 1:0; */ +- /* cur_bwmod is updated by beacon, pmlmeinfo is +- updated by association response */ +- bw_40MHz = (pmlmeext->cur_bwmode && +- (pmlmeinfo->HT_info.ht_param & +- IEEE80211_HT_PARAM_CHAN_WIDTH_ANY)) ? 1:0; +- +- /* short_GI = (pht_capie->cap_info & (IEEE80211_HT_CAP +- _SGI_20|IEEE80211_HT_CAP_SGI_40)) ? 1 : 0; */ +- short_GI_20 = (pmlmeinfo->ht_cap.cap_info & +- cpu_to_le16(IEEE80211_HT_CAP_SGI_20)) ? 1:0; +- short_GI_40 = (pmlmeinfo->ht_cap.cap_info & +- cpu_to_le16(IEEE80211_HT_CAP_SGI_40)) ? 1:0; +- +- rf_type = rtl8723a_get_rf_type(adapter); +- max_rate = rtw_mcs_rate23a(rf_type, bw_40MHz & +- pregistrypriv->cbw40_enable, +- short_GI_20, short_GI_40, +- &pmlmeinfo->ht_cap.mcs); +- } else { +- while (pcur_bss->SupportedRates[i] != 0 && +- pcur_bss->SupportedRates[i] != 0xFF) { +- rate = pcur_bss->SupportedRates[i] & 0x7F; +- if (rate>max_rate) +- max_rate = rate; +- i++; +- } +- +- max_rate = max_rate * 10 / 2; +- } +- +- return max_rate; +-} +diff --git a/drivers/staging/rtl8723au/include/rtw_ioctl_set.h b/drivers/staging/rtl8723au/include/rtw_ioctl_set.h +index e84a422..855fc40 100644 +--- a/drivers/staging/rtl8723au/include/rtw_ioctl_set.h ++++ b/drivers/staging/rtl8723au/include/rtw_ioctl_set.h +@@ -21,7 +21,6 @@ int rtw_set_802_11_bssid23a_list_scan(struct rtw_adapter *padapter, + struct cfg80211_ssid *pssid, + int ssid_max_num); + +-u16 rtw_get_cur_max_rate23a(struct rtw_adapter *adapter); + s32 FillH2CCmd(struct rtw_adapter *padapter, u8 ElementID, u32 CmdLen, u8 *pCmdBuffer); + + #endif +diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +index e75e078..a29718d 100644 +--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c ++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +@@ -1223,6 +1223,63 @@ static int cfg80211_rtw_set_default_key(struct wiphy *wiphy, + return 0; + } + ++static u16 rtw_get_cur_max_rate(struct rtw_adapter *adapter) ++{ ++ int i = 0; ++ const u8 *p; ++ u16 rate = 0, max_rate = 0; ++ struct mlme_ext_priv *pmlmeext = &adapter->mlmeextpriv; ++ struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; ++ struct registry_priv *pregistrypriv = &adapter->registrypriv; ++ struct mlme_priv *pmlmepriv = &adapter->mlmepriv; ++ struct wlan_bssid_ex *pcur_bss = &pmlmepriv->cur_network.network; ++ 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; ++ ++ p = cfg80211_find_ie(WLAN_EID_HT_CAPABILITY, &pcur_bss->IEs[12], ++ pcur_bss->IELength - 12); ++ if (p && p[1] > 0) { ++ pht_capie = (struct ieee80211_ht_cap *)(p + 2); ++ ++ memcpy(&mcs_rate, &pht_capie->mcs, 2); ++ ++ /* bw_40MHz = (pht_capie->cap_info& ++ IEEE80211_HT_CAP_SUP_WIDTH_20_40) ? 1:0; */ ++ /* cur_bwmod is updated by beacon, pmlmeinfo is ++ updated by association response */ ++ bw_40MHz = (pmlmeext->cur_bwmode && ++ (pmlmeinfo->HT_info.ht_param & ++ IEEE80211_HT_PARAM_CHAN_WIDTH_ANY)) ? 1:0; ++ ++ /* short_GI = (pht_capie->cap_info & (IEEE80211_HT_CAP ++ _SGI_20|IEEE80211_HT_CAP_SGI_40)) ? 1 : 0; */ ++ short_GI_20 = (pmlmeinfo->ht_cap.cap_info & ++ cpu_to_le16(IEEE80211_HT_CAP_SGI_20)) ? 1:0; ++ short_GI_40 = (pmlmeinfo->ht_cap.cap_info & ++ cpu_to_le16(IEEE80211_HT_CAP_SGI_40)) ? 1:0; ++ ++ rf_type = rtl8723a_get_rf_type(adapter); ++ max_rate = rtw_mcs_rate23a(rf_type, bw_40MHz & ++ pregistrypriv->cbw40_enable, ++ short_GI_20, short_GI_40, ++ &pmlmeinfo->ht_cap.mcs); ++ } else { ++ while (pcur_bss->SupportedRates[i] != 0 && ++ pcur_bss->SupportedRates[i] != 0xFF) { ++ rate = pcur_bss->SupportedRates[i] & 0x7F; ++ if (rate>max_rate) ++ max_rate = rate; ++ i++; ++ } ++ ++ max_rate = max_rate * 10 / 2; ++ } ++ ++ return max_rate; ++} ++ + static int cfg80211_rtw_get_station(struct wiphy *wiphy, + struct net_device *ndev, + const u8 *mac, struct station_info *sinfo) +@@ -1267,7 +1324,7 @@ static int cfg80211_rtw_get_station(struct wiphy *wiphy, + signal_strength); + + sinfo->filled |= STATION_INFO_TX_BITRATE; +- sinfo->txrate.legacy = rtw_get_cur_max_rate23a(padapter); ++ sinfo->txrate.legacy = rtw_get_cur_max_rate(padapter); + + sinfo->filled |= STATION_INFO_RX_PACKETS; + sinfo->rx_packets = sta_rx_data_pkts(psta); diff --git a/debian/patches/features/all/r8723au/0085-staging-rtl8723au-rtw_set_802_11_bssid23a_list_scan-.patch b/debian/patches/features/all/r8723au/0085-staging-rtl8723au-rtw_set_802_11_bssid23a_list_scan-.patch new file mode 100644 index 000000000..eb06f3ec0 --- /dev/null +++ b/debian/patches/features/all/r8723au/0085-staging-rtl8723au-rtw_set_802_11_bssid23a_list_scan-.patch @@ -0,0 +1,47 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:17:04 +0200 +Subject: [085/249] staging: rtl8723au: rtw_set_802_11_bssid23a_list_scan(): + Use __func__ to print function name +Origin: https://git.kernel.org/linus/e9bb5ad46d85aa81036913b938d2f4410beceb85 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_ioctl_set.c | 10 ++++------ + 1 file changed, 4 insertions(+), 6 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c +index b58cd9e..30287af 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c ++++ b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c +@@ -30,8 +30,7 @@ int rtw_set_802_11_bssid23a_list_scan(struct rtw_adapter *padapter, + int res = _SUCCESS; + + RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_, +- ("+rtw_set_802_11_bssid23a_list_scan(), fw_state =%x\n", +- get_fwstate(pmlmepriv))); ++ ("+%s: fw_state =%x\n", __func__, get_fwstate(pmlmepriv))); + + if (!padapter) { + res = _FAIL; +@@ -40,8 +39,7 @@ int rtw_set_802_11_bssid23a_list_scan(struct rtw_adapter *padapter, + if (padapter->hw_init_completed == false) { + res = _FAIL; + RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_, +- ("\n === rtw_set_802_11_bssid23a_list_scan:" +- "hw_init_completed == false ===\n")); ++ ("%s: hw_init_completed == false ===\n", __func__)); + goto exit; + } + +@@ -49,8 +47,8 @@ int rtw_set_802_11_bssid23a_list_scan(struct rtw_adapter *padapter, + (pmlmepriv->LinkDetectInfo.bBusyTraffic == true)) { + /* Scan or linking is in progress, do nothing. */ + RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_, +- ("rtw_set_802_11_bssid23a_list_scan fail since fw_state " +- "= %x\n", get_fwstate(pmlmepriv))); ++ ("%s fail since fw_state = %x\n", __func__, ++ get_fwstate(pmlmepriv))); + + if (check_fwstate(pmlmepriv, + (_FW_UNDER_SURVEY|_FW_UNDER_LINKING))) { diff --git a/debian/patches/features/all/r8723au/0086-staging-rtl8723au-Don-t-run-regular-scans-in-the-dri.patch b/debian/patches/features/all/r8723au/0086-staging-rtl8723au-Don-t-run-regular-scans-in-the-dri.patch new file mode 100644 index 000000000..6a3355d38 --- /dev/null +++ b/debian/patches/features/all/r8723au/0086-staging-rtl8723au-Don-t-run-regular-scans-in-the-dri.patch @@ -0,0 +1,169 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:17:05 +0200 +Subject: [086/249] staging: rtl8723au: Don't run regular scans in the driver, + the stack handles that +Origin: https://git.kernel.org/linus/073c9d47c33e549bfad1935d986710f1d1e57279 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/Makefile | 1 - + drivers/staging/rtl8723au/core/rtw_ioctl_set.c | 78 ----------------------- + drivers/staging/rtl8723au/core/rtw_mlme.c | 21 ------ + drivers/staging/rtl8723au/include/rtw_ioctl_set.h | 4 -- + 4 files changed, 104 deletions(-) + delete mode 100644 drivers/staging/rtl8723au/core/rtw_ioctl_set.c + +diff --git a/drivers/staging/rtl8723au/Makefile b/drivers/staging/rtl8723au/Makefile +index a6316af..6f76c7b 100644 +--- a/drivers/staging/rtl8723au/Makefile ++++ b/drivers/staging/rtl8723au/Makefile +@@ -1,7 +1,6 @@ + r8723au-y := \ + core/rtw_cmd.o \ + core/rtw_efuse.o \ +- core/rtw_ioctl_set.o \ + core/rtw_ieee80211.o \ + core/rtw_led.o \ + core/rtw_mlme.o \ +diff --git a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c +deleted file mode 100644 +index 30287af..0000000 +--- a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c ++++ /dev/null +@@ -1,78 +0,0 @@ +-/****************************************************************************** +- * +- * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved. +- * +- * This program is free software; you can redistribute it and/or modify it +- * under the terms of version 2 of the GNU General Public License as +- * published by the Free Software Foundation. +- * +- * This program is distributed in the hope that it will be useful, but WITHOUT +- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +- * more details. +- * +- ******************************************************************************/ +-#define _RTW_IOCTL_SET_C_ +- +-#include +-#include +-#include +-#include +- +-#include +-#include +- +-int rtw_set_802_11_bssid23a_list_scan(struct rtw_adapter *padapter, +- struct cfg80211_ssid *pssid, +- int ssid_max_num) +-{ +- struct mlme_priv *pmlmepriv = &padapter->mlmepriv; +- int res = _SUCCESS; +- +- RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_, +- ("+%s: fw_state =%x\n", __func__, get_fwstate(pmlmepriv))); +- +- if (!padapter) { +- res = _FAIL; +- goto exit; +- } +- if (padapter->hw_init_completed == false) { +- res = _FAIL; +- RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_, +- ("%s: hw_init_completed == false ===\n", __func__)); +- goto exit; +- } +- +- if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY | _FW_UNDER_LINKING) || +- (pmlmepriv->LinkDetectInfo.bBusyTraffic == true)) { +- /* Scan or linking is in progress, do nothing. */ +- RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_, +- ("%s fail since fw_state = %x\n", __func__, +- get_fwstate(pmlmepriv))); +- +- if (check_fwstate(pmlmepriv, +- (_FW_UNDER_SURVEY|_FW_UNDER_LINKING))) { +- RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_, +- ("\n###_FW_UNDER_SURVEY|_FW_UNDER_LINKING\n")); +- } else { +- RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_, +- ("\n###pmlmepriv->sitesurveyctrl.traffic_" +- "busy == true\n")); +- } +- } else { +- if (rtw_is_scan_deny(padapter)) { +- DBG_8723A("%s(%s): scan deny\n", +- __func__, padapter->pnetdev->name); +- return _SUCCESS; +- } +- +- spin_lock_bh(&pmlmepriv->lock); +- +- res = rtw_sitesurvey_cmd23a(padapter, pssid, ssid_max_num, +- NULL, 0); +- +- spin_unlock_bh(&pmlmepriv->lock); +- } +-exit: +- return res; +-} +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c +index bdebde7..e89d019 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c +@@ -1538,26 +1538,9 @@ void rtw_scan_timeout_handler23a(unsigned long data) + rtw_cfg80211_indicate_scan_done(wdev_to_priv(adapter->rtw_wdev), true); + } + +-static void rtw_auto_scan_handler(struct rtw_adapter *padapter) +-{ +- struct mlme_priv *pmlmepriv = &padapter->mlmepriv; +- +- /* auto site survey per 60sec */ +- if (pmlmepriv->scan_interval > 0) { +- pmlmepriv->scan_interval--; +- if (pmlmepriv->scan_interval == 0) { +- DBG_8723A("%s\n", __func__); +- rtw_set_802_11_bssid23a_list_scan(padapter, NULL, 0); +- /* 30*2 sec = 60sec */ +- pmlmepriv->scan_interval = SCAN_INTERVAL; +- } +- } +-} +- + void rtw_dynamic_check_timer_handler(unsigned long data) + { + struct rtw_adapter *adapter = (struct rtw_adapter *)data; +- struct registry_priv *pregistrypriv = &adapter->registrypriv; + + if (adapter->hw_init_completed == false) + goto out; +@@ -1571,10 +1554,6 @@ void rtw_dynamic_check_timer_handler(unsigned long data) + + rtw_dynamic_chk_wk_cmd23a(adapter); + +- if (pregistrypriv->wifi_spec == 1) { +- /* auto site survey */ +- rtw_auto_scan_handler(adapter); +- } + out: + mod_timer(&adapter->mlmepriv.dynamic_chk_timer, + jiffies + msecs_to_jiffies(2000)); +diff --git a/drivers/staging/rtl8723au/include/rtw_ioctl_set.h b/drivers/staging/rtl8723au/include/rtw_ioctl_set.h +index 855fc40..6c102dc 100644 +--- a/drivers/staging/rtl8723au/include/rtw_ioctl_set.h ++++ b/drivers/staging/rtl8723au/include/rtw_ioctl_set.h +@@ -17,10 +17,6 @@ + + #include + +-int rtw_set_802_11_bssid23a_list_scan(struct rtw_adapter *padapter, +- struct cfg80211_ssid *pssid, +- int ssid_max_num); +- + s32 FillH2CCmd(struct rtw_adapter *padapter, u8 ElementID, u32 CmdLen, u8 *pCmdBuffer); + + #endif diff --git a/debian/patches/features/all/r8723au/0087-staging-rtl8723au-Quiet-unused-variable-warning-when.patch b/debian/patches/features/all/r8723au/0087-staging-rtl8723au-Quiet-unused-variable-warning-when.patch new file mode 100644 index 000000000..f76b43956 --- /dev/null +++ b/debian/patches/features/all/r8723au/0087-staging-rtl8723au-Quiet-unused-variable-warning-when.patch @@ -0,0 +1,32 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:17:06 +0200 +Subject: [087/249] staging: rtl8723au: Quiet unused variable warning when + building with CONFIG_8723AU_AP_MODE=n +Origin: https://git.kernel.org/linus/da23732c6320dd1dfe802191532072da8e967833 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index 59047ad..0d52699 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -2931,7 +2931,6 @@ static void issue_auth(struct rtw_adapter *padapter, struct sta_info *psta, + unsigned char *pframe; + struct ieee80211_mgmt *mgmt; + unsigned int val32; +- unsigned short val16; + u16 auth_algo; + int use_shared_key = 0; + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; +@@ -2960,6 +2959,7 @@ static void issue_auth(struct rtw_adapter *padapter, struct sta_info *psta, + + if (psta) { /* for AP mode */ + #ifdef CONFIG_8723AU_AP_MODE ++ unsigned short val16; + ether_addr_copy(mgmt->da, psta->hwaddr); + ether_addr_copy(mgmt->sa, myid(&padapter->eeprompriv)); + ether_addr_copy(mgmt->bssid, myid(&padapter->eeprompriv)); diff --git a/debian/patches/features/all/r8723au/0088-staging-rtl8723au-Move-FillH2CCmd-prototype-to-rtl87.patch b/debian/patches/features/all/r8723au/0088-staging-rtl8723au-Move-FillH2CCmd-prototype-to-rtl87.patch new file mode 100644 index 000000000..6b48263dd --- /dev/null +++ b/debian/patches/features/all/r8723au/0088-staging-rtl8723au-Move-FillH2CCmd-prototype-to-rtl87.patch @@ -0,0 +1,120 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:17:07 +0200 +Subject: [088/249] staging: rtl8723au: Move FillH2CCmd() prototype to + rtl8723a_cmd.h where it really belongs +Origin: https://git.kernel.org/linus/379878662637a1247f19caf938a22918d702b14b + +As an added bonus, remove the now obsolete rtw_ioctl_set.h + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme.c | 1 - + .../staging/rtl8723au/hal/rtl8723a_bt-coexist.c | 1 - + drivers/staging/rtl8723au/hal/rtl8723a_cmd.c | 1 - + drivers/staging/rtl8723au/include/rtl8723a_cmd.h | 2 ++ + drivers/staging/rtl8723au/include/rtw_ioctl_set.h | 22 ---------------------- + drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 1 - + drivers/staging/rtl8723au/os_dep/mlme_linux.c | 1 - + 7 files changed, 2 insertions(+), 27 deletions(-) + delete mode 100644 drivers/staging/rtl8723au/include/rtw_ioctl_set.h + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c +index e89d019..ab95ef0 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c +@@ -24,7 +24,6 @@ + #include + #include + #include +-#include + #include + + static struct wlan_network * +diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_bt-coexist.c b/drivers/staging/rtl8723au/hal/rtl8723a_bt-coexist.c +index bb86986..9054a98 100644 +--- a/drivers/staging/rtl8723au/hal/rtl8723a_bt-coexist.c ++++ b/drivers/staging/rtl8723au/hal/rtl8723a_bt-coexist.c +@@ -14,7 +14,6 @@ + ******************************************************************************/ + #include + #include +-#include + #include + + #define DIS_PS_RX_BCN +diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c b/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c +index e873791..6e1fed2 100644 +--- a/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c ++++ b/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c +@@ -18,7 +18,6 @@ + #include + #include + #include +-#include + #include + #include + +diff --git a/drivers/staging/rtl8723au/include/rtl8723a_cmd.h b/drivers/staging/rtl8723au/include/rtl8723a_cmd.h +index 900bacc..e1ecbd0 100644 +--- a/drivers/staging/rtl8723au/include/rtl8723a_cmd.h ++++ b/drivers/staging/rtl8723au/include/rtl8723a_cmd.h +@@ -155,4 +155,6 @@ void rtl8723a_add_rateatid(struct rtw_adapter *padapter, u32 bitmap, u8 arg, u8 + + void CheckFwRsvdPageContent23a(struct rtw_adapter *padapter); + ++int FillH2CCmd(struct rtw_adapter *padapter, u8 ElementID, u32 CmdLen, u8 *pCmdBuffer); ++ + #endif +diff --git a/drivers/staging/rtl8723au/include/rtw_ioctl_set.h b/drivers/staging/rtl8723au/include/rtw_ioctl_set.h +deleted file mode 100644 +index 6c102dc..0000000 +--- a/drivers/staging/rtl8723au/include/rtw_ioctl_set.h ++++ /dev/null +@@ -1,22 +0,0 @@ +-/****************************************************************************** +- * +- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. +- * +- * This program is free software; you can redistribute it and/or modify it +- * under the terms of version 2 of the GNU General Public License as +- * published by the Free Software Foundation. +- * +- * This program is distributed in the hope that it will be useful, but WITHOUT +- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +- * more details. +- * +- ******************************************************************************/ +-#ifndef __RTW_IOCTL_SET_H_ +-#define __RTW_IOCTL_SET_H_ +- +-#include +- +-s32 FillH2CCmd(struct rtw_adapter *padapter, u8 ElementID, u32 CmdLen, u8 *pCmdBuffer); +- +-#endif +diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +index a29718d..5f0a6c7 100644 +--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c ++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +@@ -16,7 +16,6 @@ + + #include + #include +-#include + #include + + #include "ioctl_cfg80211.h" +diff --git a/drivers/staging/rtl8723au/os_dep/mlme_linux.c b/drivers/staging/rtl8723au/os_dep/mlme_linux.c +index ac618fb..ca24369 100644 +--- a/drivers/staging/rtl8723au/os_dep/mlme_linux.c ++++ b/drivers/staging/rtl8723au/os_dep/mlme_linux.c +@@ -18,7 +18,6 @@ + #include + #include + #include +-#include + + static struct rt_pmkid_list backupPMKIDList[NUM_PMKID_CACHE]; + diff --git a/debian/patches/features/all/r8723au/0089-staging-rtl8723au-rtw_cfg80211_set_wpa_ie-Avoid-poin.patch b/debian/patches/features/all/r8723au/0089-staging-rtl8723au-rtw_cfg80211_set_wpa_ie-Avoid-poin.patch new file mode 100644 index 000000000..466c036e3 --- /dev/null +++ b/debian/patches/features/all/r8723au/0089-staging-rtl8723au-rtw_cfg80211_set_wpa_ie-Avoid-poin.patch @@ -0,0 +1,86 @@ +From: Jes Sorensen +Date: Mon, 9 Jun 2014 15:17:08 +0200 +Subject: [089/249] staging: rtl8723au: rtw_cfg80211_set_wpa_ie(): Avoid + pointless memcpy +Origin: https://git.kernel.org/linus/7579a7e47d6572455c48f822dd47bd1993ec9d95 + +There is no point copying a buffer, just to scan it and then free it +again. + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 21 +++++++-------------- + 1 file changed, 7 insertions(+), 14 deletions(-) + +diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +index 5f0a6c7..9ad049c 100644 +--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c ++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +@@ -1806,7 +1806,6 @@ static int rtw_cfg80211_set_wpa_ie(struct rtw_adapter *padapter, const u8 *pie, + size_t ielen) + { + const u8 *wps_ie; +- u8 *buf = NULL; + int group_cipher = 0, pairwise_cipher = 0; + int ret = 0; + const u8 *pwpa, *pwpa2; +@@ -1822,19 +1821,14 @@ static int rtw_cfg80211_set_wpa_ie(struct rtw_adapter *padapter, const u8 *pie, + ret = -EINVAL; + goto exit; + } +- buf = kmemdup(pie, ielen, GFP_KERNEL); +- if (buf == NULL) { +- ret = -ENOMEM; +- goto exit; +- } + + /* dump */ + DBG_8723A("set wpa_ie(length:%zu):\n", ielen); + for (i = 0; i < ielen; i = i + 8) +- DBG_8723A("0x%.2x 0x%.2x 0x%.2x 0x%.2x 0x%.2x 0x%.2x 0x%.2x 0x%.2x\n", +- buf[i], buf[i + 1], +- buf[i + 2], buf[i + 3], buf[i + 4], +- buf[i + 5], buf[i + 6], buf[i + 7]); ++ DBG_8723A("0x%.2x 0x%.2x 0x%.2x 0x%.2x " ++ "0x%.2x 0x%.2x 0x%.2x 0x%.2x\n", ++ pie[i], pie[i + 1], pie[i + 2], pie[i + 3], ++ pie[i + 4], pie[i + 5], pie[i + 6], pie[i + 7]); + if (ielen < RSN_HEADER_LEN) { + RT_TRACE(_module_rtl871x_ioctl_os_c, _drv_err_, + ("Ie len too short %d\n", (int)ielen)); +@@ -1844,7 +1838,7 @@ static int rtw_cfg80211_set_wpa_ie(struct rtw_adapter *padapter, const u8 *pie, + + pwpa = cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT, + WLAN_OUI_TYPE_MICROSOFT_WPA, +- buf, ielen); ++ pie, ielen); + if (pwpa && pwpa[1] > 0) { + if (rtw_parse_wpa_ie23a(pwpa, pwpa[1] + 2, &group_cipher, + &pairwise_cipher, NULL) == _SUCCESS) { +@@ -1859,7 +1853,7 @@ static int rtw_cfg80211_set_wpa_ie(struct rtw_adapter *padapter, const u8 *pie, + } + } + +- pwpa2 = cfg80211_find_ie(WLAN_EID_RSN, buf, ielen); ++ pwpa2 = cfg80211_find_ie(WLAN_EID_RSN, pie, ielen); + if (pwpa2 && pwpa2[1] > 0) { + if (rtw_parse_wpa2_ie23a (pwpa2, pwpa2[1] + 2, &group_cipher, + &pairwise_cipher, NULL) == _SUCCESS) { +@@ -1939,7 +1933,7 @@ static int rtw_cfg80211_set_wpa_ie(struct rtw_adapter *padapter, const u8 *pie, + + wps_ie = cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT, + WLAN_OUI_TYPE_MICROSOFT_WPS, +- buf, ielen); ++ pie, ielen); + if (wps_ie && wps_ie[1] > 0) { + DBG_8723A("got wps_ie, wps_ielen:%u\n", wps_ie[1]); + padapter->securitypriv.wps_ie_len = wps_ie[1]; +@@ -1967,7 +1961,6 @@ static int rtw_cfg80211_set_wpa_ie(struct rtw_adapter *padapter, const u8 *pie, + padapter->securitypriv.ndisauthtype)); + + exit: +- kfree(buf); + if (ret) + _clr_fwstate_(&padapter->mlmepriv, WIFI_UNDER_WPS); + return ret; diff --git a/debian/patches/features/all/r8723au/0090-staging-rtl8723au-Add-compiler-check-for-Wtype-limit.patch b/debian/patches/features/all/r8723au/0090-staging-rtl8723au-Add-compiler-check-for-Wtype-limit.patch new file mode 100644 index 000000000..b5e09c81c --- /dev/null +++ b/debian/patches/features/all/r8723au/0090-staging-rtl8723au-Add-compiler-check-for-Wtype-limit.patch @@ -0,0 +1,27 @@ +From: Geert Uytterhoeven +Date: Wed, 11 Jun 2014 16:57:46 +0200 +Subject: [090/249] staging: rtl8723au: Add compiler check for -Wtype-limits +Origin: https://git.kernel.org/linus/ee264346fa08395aa6e846b72e7b3987e959f053 + +Gcc versions before 4.3 do not support -Wtype-limits: + +cc1: error: unrecognized command line option "-Wtype-limits" + +Signed-off-by: Geert Uytterhoeven +Acked-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/Makefile | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/drivers/staging/rtl8723au/Makefile b/drivers/staging/rtl8723au/Makefile +index 6f76c7b..a9aae21 100644 +--- a/drivers/staging/rtl8723au/Makefile ++++ b/drivers/staging/rtl8723au/Makefile +@@ -52,4 +52,5 @@ r8723au-$(CONFIG_8723AU_AP_MODE) += core/rtw_ap.o + + obj-$(CONFIG_R8723AU) := r8723au.o + +-ccflags-y += -Wtype-limits -D__CHECK_ENDIAN__ -I$(src)/include ++ccflags-y += $(call cc-option,-Wtype-limits,) ++ccflags-y += -D__CHECK_ENDIAN__ -I$(src)/include diff --git a/debian/patches/features/all/r8723au/0091-staging-rtl8723au-Remove-redundant-casting-in-rtw_ml.patch b/debian/patches/features/all/r8723au/0091-staging-rtl8723au-Remove-redundant-casting-in-rtw_ml.patch new file mode 100644 index 000000000..10059a8ae --- /dev/null +++ b/debian/patches/features/all/r8723au/0091-staging-rtl8723au-Remove-redundant-casting-in-rtw_ml.patch @@ -0,0 +1,102 @@ +From: Sachin Kamat +Date: Thu, 29 May 2014 17:05:18 +0530 +Subject: [091/249] staging: rtl8723au: Remove redundant casting in + rtw_mlme_ext.c +Origin: https://git.kernel.org/linus/248c95915277edbe632ab171b0b082c2ba1af935 + +Casting value returned by kzalloc is useless. + +Signed-off-by: Sachin Kamat +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 27 ++++++++++----------------- + 1 file changed, 10 insertions(+), 17 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index 0d52699..84ca06b 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -4873,8 +4873,7 @@ void report_survey_event23a(struct rtw_adapter *padapter, + pmlmeext = &padapter->mlmeextpriv; + pcmdpriv = &padapter->cmdpriv; + +- pcmd_obj = (struct cmd_obj *)kzalloc(sizeof(struct cmd_obj), +- GFP_ATOMIC); ++ pcmd_obj = kzalloc(sizeof(struct cmd_obj), GFP_ATOMIC); + if (!pcmd_obj) + return; + +@@ -4925,8 +4924,7 @@ void report_surveydone_event23a(struct rtw_adapter *padapter) + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct cmd_priv *pcmdpriv = &padapter->cmdpriv; + +- pcmd_obj = (struct cmd_obj *)kzalloc(sizeof(struct cmd_obj), +- GFP_ATOMIC); ++ pcmd_obj = kzalloc(sizeof(struct cmd_obj), GFP_ATOMIC); + if (!pcmd_obj) + return; + +@@ -4970,8 +4968,7 @@ void report_join_res23a(struct rtw_adapter *padapter, int res) + struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; + struct cmd_priv *pcmdpriv = &padapter->cmdpriv; + +- pcmd_obj = (struct cmd_obj *)kzalloc(sizeof(struct cmd_obj), +- GFP_ATOMIC); ++ pcmd_obj = kzalloc(sizeof(struct cmd_obj), GFP_ATOMIC); + if (!pcmd_obj) + return; + +@@ -5021,8 +5018,7 @@ void report_del_sta_event23a(struct rtw_adapter *padapter, + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct cmd_priv *pcmdpriv = &padapter->cmdpriv; + +- pcmd_obj = (struct cmd_obj *)kzalloc(sizeof(struct cmd_obj), +- GFP_ATOMIC); ++ pcmd_obj = kzalloc(sizeof(struct cmd_obj), GFP_ATOMIC); + if (!pcmd_obj) + return; + +@@ -5076,8 +5072,7 @@ void report_add_sta_event23a(struct rtw_adapter *padapter, + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct cmd_priv *pcmdpriv = &padapter->cmdpriv; + +- pcmd_obj = (struct cmd_obj *)kzalloc(sizeof(struct cmd_obj), +- GFP_ATOMIC); ++ pcmd_obj = kzalloc(sizeof(struct cmd_obj), GFP_ATOMIC); + if (!pcmd_obj) + return; + +@@ -5493,13 +5488,12 @@ static void survey_timer_hdl(unsigned long data) + pmlmeext->scan_abort = false;/* reset */ + } + +- ph2c = (struct cmd_obj *)kzalloc(sizeof(struct cmd_obj), +- GFP_ATOMIC); ++ ph2c = kzalloc(sizeof(struct cmd_obj), GFP_ATOMIC); + if (!ph2c) + goto exit_survey_timer_hdl; + +- psurveyPara = (struct sitesurvey_parm*) +- kzalloc(sizeof(struct sitesurvey_parm), GFP_ATOMIC); ++ psurveyPara = kzalloc(sizeof(struct sitesurvey_parm), ++ GFP_ATOMIC); + if (!psurveyPara) { + kfree(ph2c); + goto exit_survey_timer_hdl; +@@ -6173,14 +6167,13 @@ int set_tx_beacon_cmd23a(struct rtw_adapter* padapter) + u8 res = _SUCCESS; + int len_diff = 0; + +- ph2c = (struct cmd_obj *)kzalloc(sizeof(struct cmd_obj), GFP_ATOMIC); ++ ph2c = kzalloc(sizeof(struct cmd_obj), GFP_ATOMIC); + if (!ph2c) { + res = _FAIL; + goto exit; + } + +- ptxBeacon_parm = (struct Tx_Beacon_param *) +- kzalloc(sizeof(struct Tx_Beacon_param), GFP_ATOMIC); ++ ptxBeacon_parm = kzalloc(sizeof(struct Tx_Beacon_param), GFP_ATOMIC); + if (!ptxBeacon_parm) { + kfree(ph2c); + res = _FAIL; diff --git a/debian/patches/features/all/r8723au/0092-staging-rtl8723au-Remove-redundant-casting-in-rtw_ml.patch b/debian/patches/features/all/r8723au/0092-staging-rtl8723au-Remove-redundant-casting-in-rtw_ml.patch new file mode 100644 index 000000000..5bde56d59 --- /dev/null +++ b/debian/patches/features/all/r8723au/0092-staging-rtl8723au-Remove-redundant-casting-in-rtw_ml.patch @@ -0,0 +1,26 @@ +From: Sachin Kamat +Date: Thu, 29 May 2014 17:05:19 +0530 +Subject: [092/249] staging: rtl8723au: Remove redundant casting in rtw_mlme.c +Origin: https://git.kernel.org/linus/db5767a3f9715540411d9c1cf2dfb4aeec366893 + +Casting value returned by kzalloc is useless. + +Signed-off-by: Sachin Kamat +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c +index ab95ef0..799338b 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c +@@ -1820,7 +1820,7 @@ int rtw_set_auth23a(struct rtw_adapter * adapter, + struct cmd_priv *pcmdpriv = &adapter->cmdpriv; + int res = _SUCCESS; + +- pcmd = (struct cmd_obj *)kzalloc(sizeof(struct cmd_obj), GFP_KERNEL); ++ pcmd = kzalloc(sizeof(struct cmd_obj), GFP_KERNEL); + if (!pcmd) { + res = _FAIL; /* try again */ + goto exit; diff --git a/debian/patches/features/all/r8723au/0093-staging-rtl8723au-rtw_cfg80211_inform_bss-timestamp-.patch b/debian/patches/features/all/r8723au/0093-staging-rtl8723au-rtw_cfg80211_inform_bss-timestamp-.patch new file mode 100644 index 000000000..d5e0d5a1c --- /dev/null +++ b/debian/patches/features/all/r8723au/0093-staging-rtl8723au-rtw_cfg80211_inform_bss-timestamp-.patch @@ -0,0 +1,33 @@ +From: Jes Sorensen +Date: Thu, 19 Jun 2014 11:37:16 +0200 +Subject: [093/249] staging: rtl8723au: rtw_cfg80211_inform_bss(): timestamp + isn't used +Origin: https://git.kernel.org/linus/8a3adc24806060b4ade2bc6bd172077a57455f98 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +index 9ad049c..f102e03 100644 +--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c ++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +@@ -249,7 +249,6 @@ static int rtw_cfg80211_inform_bss(struct rtw_adapter *padapter, + /* struct ieee80211_supported_band *band; */ + u16 channel; + u32 freq; +- u64 notify_timestamp; + u16 notify_capability; + u16 notify_interval; + u8 *notify_ie; +@@ -280,8 +279,6 @@ static int rtw_cfg80211_inform_bss(struct rtw_adapter *padapter, + + notify_channel = ieee80211_get_channel(wiphy, freq); + +- notify_timestamp = jiffies_to_msecs(jiffies) * 1000; /* uSec */ +- + notify_interval = + get_unaligned_le16( + rtw_get_beacon_interval23a_from_ie(pnetwork->network.IEs)); diff --git a/debian/patches/features/all/r8723au/0094-staging-rtl8723au-rtw_cfg80211_inform_bss-Use-cfg802.patch b/debian/patches/features/all/r8723au/0094-staging-rtl8723au-rtw_cfg80211_inform_bss-Use-cfg802.patch new file mode 100644 index 000000000..861dbab73 --- /dev/null +++ b/debian/patches/features/all/r8723au/0094-staging-rtl8723au-rtw_cfg80211_inform_bss-Use-cfg802.patch @@ -0,0 +1,107 @@ +From: Jes Sorensen +Date: Thu, 19 Jun 2014 11:37:17 +0200 +Subject: [094/249] staging: rtl8723au: rtw_cfg80211_inform_bss(): Use + cfg80211_inform_bss() +Origin: https://git.kernel.org/linus/4062f7aa8f867e515267aeec62a152d2cf763a1c + +There is no point in creating a fake beacon frame to call +cfg80211_inform_bss_frame() when we can just call +cfg80211_inform_bss() with the parameters we were sticking into the +fake frame. + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 47 +++-------------------- + 1 file changed, 5 insertions(+), 42 deletions(-) + +diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +index f102e03..0a0c58d 100644 +--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c ++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +@@ -239,14 +239,12 @@ rtw_cfg80211_default_mgmt_stypes[NUM_NL80211_IFTYPES] = { + }, + }; + +-#define MAX_BSSINFO_LEN 1000 + static int rtw_cfg80211_inform_bss(struct rtw_adapter *padapter, + struct wlan_network *pnetwork) + { + int ret = 0; + struct ieee80211_channel *notify_channel; + struct cfg80211_bss *bss; +- /* struct ieee80211_supported_band *band; */ + u16 channel; + u32 freq; + u16 notify_capability; +@@ -254,21 +252,10 @@ static int rtw_cfg80211_inform_bss(struct rtw_adapter *padapter, + u8 *notify_ie; + size_t notify_ielen; + s32 notify_signal; +- u8 buf[MAX_BSSINFO_LEN], *pbuf; +- size_t len; +- struct ieee80211_hdr *pwlanhdr; + struct wireless_dev *wdev = padapter->rtw_wdev; + struct wiphy *wiphy = wdev->wiphy; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + +- /* DBG_8723A("%s\n", __func__); */ +- +- if (pnetwork->network.IELength > MAX_IE_SZ) { +- DBG_8723A("%s IE Length too long > %d byte\n", __func__, +- MAX_IE_SZ); +- goto exit; +- } +- + channel = pnetwork->network.DSConfig; + if (channel <= RTW_CH_MAX_2G_CHANNEL) + freq = ieee80211_channel_to_frequency(channel, +@@ -299,35 +286,12 @@ static int rtw_cfg80211_inform_bss(struct rtw_adapter *padapter, + } else { + notify_signal = 100 * translate_percentage_to_dbm(pnetwork->network.PhyInfo.SignalStrength); /* dbm */ + } +- pbuf = buf; +- +- pwlanhdr = (struct ieee80211_hdr *)pbuf; +- +- pwlanhdr->seq_ctrl = 0; +- +- if (pnetwork->network.reserved == 1) { /* WIFI_BEACON */ +- eth_broadcast_addr(pwlanhdr->addr1); +- pwlanhdr->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT | +- IEEE80211_STYPE_BEACON); +- } else { +- ether_addr_copy(pwlanhdr->addr1, myid(&padapter->eeprompriv)); +- pwlanhdr->frame_control = +- cpu_to_le16(IEEE80211_FTYPE_MGMT | +- IEEE80211_STYPE_PROBE_RESP); +- } +- +- ether_addr_copy(pwlanhdr->addr2, pnetwork->network.MacAddress); +- ether_addr_copy(pwlanhdr->addr3, pnetwork->network.MacAddress); + +- pbuf += sizeof(struct ieee80211_hdr_3addr); +- len = sizeof(struct ieee80211_hdr_3addr); +- +- memcpy(pbuf, pnetwork->network.IEs, pnetwork->network.IELength); +- len += pnetwork->network.IELength; +- +- bss = cfg80211_inform_bss_frame(wiphy, notify_channel, +- (struct ieee80211_mgmt *)buf, len, +- notify_signal, GFP_ATOMIC); ++ bss = cfg80211_inform_bss(wiphy, notify_channel, ++ pnetwork->network.MacAddress, 0, ++ notify_capability, notify_interval, ++ notify_ie, notify_ielen, ++ notify_signal, GFP_ATOMIC); + + if (unlikely(!bss)) { + DBG_8723A("rtw_cfg80211_inform_bss error\n"); +@@ -336,7 +300,6 @@ static int rtw_cfg80211_inform_bss(struct rtw_adapter *padapter, + + cfg80211_put_bss(wiphy, bss); + +-exit: + return ret; + } + diff --git a/debian/patches/features/all/r8723au/0095-staging-rtl8723au-Save-timestamp-for-network-in-coll.patch b/debian/patches/features/all/r8723au/0095-staging-rtl8723au-Save-timestamp-for-network-in-coll.patch new file mode 100644 index 000000000..10f1bdb3f --- /dev/null +++ b/debian/patches/features/all/r8723au/0095-staging-rtl8723au-Save-timestamp-for-network-in-coll.patch @@ -0,0 +1,75 @@ +From: Jes Sorensen +Date: Thu, 19 Jun 2014 11:37:18 +0200 +Subject: [095/249] staging: rtl8723au: Save timestamp for network in + collect_bss_info() and report it to the stack +Origin: https://git.kernel.org/linus/993c52ba61a72a8c669c8091fa75c9514776b3f7 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 4 ++++ + drivers/staging/rtl8723au/include/wlan_bssdef.h | 1 + + drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 3 ++- + 3 files changed, 7 insertions(+), 1 deletion(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index 84ca06b..823489b 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -4281,6 +4281,7 @@ static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter, + capab_info = get_unaligned_le16(&mgmt->u.beacon.capab_info); + bssid->BeaconPeriod = + get_unaligned_le16(&mgmt->u.beacon.beacon_int); ++ bssid->tsf = get_unaligned_le64(&mgmt->u.beacon.timestamp); + } else if (ieee80211_is_probe_req(mgmt->frame_control)) { + ie_offset = offsetof(struct ieee80211_mgmt, + u.probe_req.variable); +@@ -4288,6 +4289,7 @@ static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter, + capab_info = 0; + bssid->BeaconPeriod = + padapter->registrypriv.dev_network.BeaconPeriod; ++ bssid->tsf = 0; + } else if (ieee80211_is_probe_resp(mgmt->frame_control)) { + ie_offset = offsetof(struct ieee80211_mgmt, + u.probe_resp.variable); +@@ -4295,12 +4297,14 @@ static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter, + capab_info = get_unaligned_le16(&mgmt->u.probe_resp.capab_info); + bssid->BeaconPeriod = + get_unaligned_le16(&mgmt->u.probe_resp.beacon_int); ++ bssid->tsf = get_unaligned_le64(&mgmt->u.probe_resp.timestamp); + } else { + bssid->reserved = 0; + ie_offset = offsetof(struct ieee80211_mgmt, u.beacon.variable); + capab_info = get_unaligned_le16(&mgmt->u.beacon.capab_info); + bssid->BeaconPeriod = + padapter->registrypriv.dev_network.BeaconPeriod; ++ bssid->tsf = 0; + } + ie_offset -= offsetof(struct ieee80211_mgmt, u); + +diff --git a/drivers/staging/rtl8723au/include/wlan_bssdef.h b/drivers/staging/rtl8723au/include/wlan_bssdef.h +index b717687..60455e6 100644 +--- a/drivers/staging/rtl8723au/include/wlan_bssdef.h ++++ b/drivers/staging/rtl8723au/include/wlan_bssdef.h +@@ -93,6 +93,7 @@ struct wlan_bssid_ex { + u32 Privacy; + long Rssi;/* in dBM, raw data , get from PHY) */ + u16 BeaconPeriod; /* units are Kusec */ ++ u64 tsf; + u32 ATIMWindow; /* units are Kusec */ + u32 DSConfig; /* Frequency, units are kHz */ + enum nl80211_iftype ifmode; +diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +index 0a0c58d..2621a0e 100644 +--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c ++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +@@ -288,7 +288,8 @@ static int rtw_cfg80211_inform_bss(struct rtw_adapter *padapter, + } + + bss = cfg80211_inform_bss(wiphy, notify_channel, +- pnetwork->network.MacAddress, 0, ++ pnetwork->network.MacAddress, ++ pnetwork->network.tsf, + notify_capability, notify_interval, + notify_ie, notify_ielen, + notify_signal, GFP_ATOMIC); diff --git a/debian/patches/features/all/r8723au/0096-staging-rtl8723au-rtw_cfg80211_inform_bss-Report-the.patch b/debian/patches/features/all/r8723au/0096-staging-rtl8723au-rtw_cfg80211_inform_bss-Report-the.patch new file mode 100644 index 000000000..8fe8f3bed --- /dev/null +++ b/debian/patches/features/all/r8723au/0096-staging-rtl8723au-rtw_cfg80211_inform_bss-Report-the.patch @@ -0,0 +1,47 @@ +From: Jes Sorensen +Date: Thu, 19 Jun 2014 11:37:19 +0200 +Subject: [096/249] staging: rtl8723au: rtw_cfg80211_inform_bss(): Report the + beacon interval already retrieved +Origin: https://git.kernel.org/linus/2620e339e84320814eb9b4c46d9295703ada1010 + +Use the beacon interval we already retreived in collect_bss_info() +instead of pulling it out of the saved IE array again. + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 7 ++----- + 1 file changed, 2 insertions(+), 5 deletions(-) + +diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +index 2621a0e..ff838fc 100644 +--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c ++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +@@ -248,7 +248,6 @@ static int rtw_cfg80211_inform_bss(struct rtw_adapter *padapter, + u16 channel; + u32 freq; + u16 notify_capability; +- u16 notify_interval; + u8 *notify_ie; + size_t notify_ielen; + s32 notify_signal; +@@ -266,9 +265,6 @@ static int rtw_cfg80211_inform_bss(struct rtw_adapter *padapter, + + notify_channel = ieee80211_get_channel(wiphy, freq); + +- notify_interval = +- get_unaligned_le16( +- rtw_get_beacon_interval23a_from_ie(pnetwork->network.IEs)); + notify_capability = + get_unaligned_le16( + rtw_get_capability23a_from_ie(pnetwork->network.IEs)); +@@ -290,7 +286,8 @@ static int rtw_cfg80211_inform_bss(struct rtw_adapter *padapter, + bss = cfg80211_inform_bss(wiphy, notify_channel, + pnetwork->network.MacAddress, + pnetwork->network.tsf, +- notify_capability, notify_interval, ++ notify_capability, ++ pnetwork->network.BeaconPeriod, + notify_ie, notify_ielen, + notify_signal, GFP_ATOMIC); + diff --git a/debian/patches/features/all/r8723au/0097-staging-rtl8723au-collect_bss_info-Save-capability-i.patch b/debian/patches/features/all/r8723au/0097-staging-rtl8723au-collect_bss_info-Save-capability-i.patch new file mode 100644 index 000000000..0d6bf2645 --- /dev/null +++ b/debian/patches/features/all/r8723au/0097-staging-rtl8723au-collect_bss_info-Save-capability-i.patch @@ -0,0 +1,93 @@ +From: Jes Sorensen +Date: Thu, 19 Jun 2014 11:37:20 +0200 +Subject: [097/249] staging: rtl8723au: collect_bss_info(): Save capability in + struct wlan_bssid_ex +Origin: https://git.kernel.org/linus/53c660006766aef0c4d423cd0990ead2537bed6a + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 16 +++++++++------- + drivers/staging/rtl8723au/include/wlan_bssdef.h | 1 + + 2 files changed, 10 insertions(+), 7 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index 823489b..a91198f 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -4262,7 +4262,6 @@ static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter, + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; + struct wlan_bssid_ex *bssid; +- u16 capab_info; + + length = skb->len - sizeof(struct ieee80211_hdr_3addr); + +@@ -4278,7 +4277,8 @@ static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter, + if (ieee80211_is_beacon(mgmt->frame_control)) { + bssid->reserved = 1; + ie_offset = offsetof(struct ieee80211_mgmt, u.beacon.variable); +- capab_info = get_unaligned_le16(&mgmt->u.beacon.capab_info); ++ bssid->capability = ++ get_unaligned_le16(&mgmt->u.beacon.capab_info); + bssid->BeaconPeriod = + get_unaligned_le16(&mgmt->u.beacon.beacon_int); + bssid->tsf = get_unaligned_le64(&mgmt->u.beacon.timestamp); +@@ -4286,7 +4286,7 @@ static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter, + ie_offset = offsetof(struct ieee80211_mgmt, + u.probe_req.variable); + bssid->reserved = 2; +- capab_info = 0; ++ bssid->capability = 0; + bssid->BeaconPeriod = + padapter->registrypriv.dev_network.BeaconPeriod; + bssid->tsf = 0; +@@ -4294,14 +4294,16 @@ static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter, + ie_offset = offsetof(struct ieee80211_mgmt, + u.probe_resp.variable); + bssid->reserved = 3; +- capab_info = get_unaligned_le16(&mgmt->u.probe_resp.capab_info); ++ bssid->capability = ++ get_unaligned_le16(&mgmt->u.probe_resp.capab_info); + bssid->BeaconPeriod = + get_unaligned_le16(&mgmt->u.probe_resp.beacon_int); + bssid->tsf = get_unaligned_le64(&mgmt->u.probe_resp.timestamp); + } else { + bssid->reserved = 0; + ie_offset = offsetof(struct ieee80211_mgmt, u.beacon.variable); +- capab_info = get_unaligned_le16(&mgmt->u.beacon.capab_info); ++ bssid->capability = ++ get_unaligned_le16(&mgmt->u.beacon.capab_info); + bssid->BeaconPeriod = + padapter->registrypriv.dev_network.BeaconPeriod; + bssid->tsf = 0; +@@ -4396,7 +4398,7 @@ static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter, + return bssid; + } + +- if (capab_info & WLAN_CAPABILITY_ESS) { ++ if (bssid->capability & WLAN_CAPABILITY_ESS) { + bssid->ifmode = NL80211_IFTYPE_STATION; + ether_addr_copy(bssid->MacAddress, mgmt->sa); + } else { +@@ -4404,7 +4406,7 @@ static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter, + ether_addr_copy(bssid->MacAddress, mgmt->bssid); + } + +- if (capab_info & WLAN_CAPABILITY_PRIVACY) ++ if (bssid->capability & WLAN_CAPABILITY_PRIVACY) + bssid->Privacy = 1; + else + bssid->Privacy = 0; +diff --git a/drivers/staging/rtl8723au/include/wlan_bssdef.h b/drivers/staging/rtl8723au/include/wlan_bssdef.h +index 60455e6..c43c855 100644 +--- a/drivers/staging/rtl8723au/include/wlan_bssdef.h ++++ b/drivers/staging/rtl8723au/include/wlan_bssdef.h +@@ -93,6 +93,7 @@ struct wlan_bssid_ex { + u32 Privacy; + long Rssi;/* in dBM, raw data , get from PHY) */ + u16 BeaconPeriod; /* units are Kusec */ ++ u16 capability; + u64 tsf; + u32 ATIMWindow; /* units are Kusec */ + u32 DSConfig; /* Frequency, units are kHz */ diff --git a/debian/patches/features/all/r8723au/0098-staging-rtl8723au-rtw_cfg80211_inform_bss-Use-the-ca.patch b/debian/patches/features/all/r8723au/0098-staging-rtl8723au-rtw_cfg80211_inform_bss-Use-the-ca.patch new file mode 100644 index 000000000..57ff96f6a --- /dev/null +++ b/debian/patches/features/all/r8723au/0098-staging-rtl8723au-rtw_cfg80211_inform_bss-Use-the-ca.patch @@ -0,0 +1,47 @@ +From: Jes Sorensen +Date: Thu, 19 Jun 2014 11:37:21 +0200 +Subject: [098/249] staging: rtl8723au: rtw_cfg80211_inform_bss(): Use the + capability info we already saved +Origin: https://git.kernel.org/linus/11a80e8877bf2db8a13b68018049b48e367bd76e + +No point in pulling capability info out of the IE array when it's +already stored in struct wlan_bssid_ex + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 7 +------ + 1 file changed, 1 insertion(+), 6 deletions(-) + +diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +index ff838fc..4eef408 100644 +--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c ++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +@@ -247,7 +247,6 @@ static int rtw_cfg80211_inform_bss(struct rtw_adapter *padapter, + struct cfg80211_bss *bss; + u16 channel; + u32 freq; +- u16 notify_capability; + u8 *notify_ie; + size_t notify_ielen; + s32 notify_signal; +@@ -265,10 +264,6 @@ static int rtw_cfg80211_inform_bss(struct rtw_adapter *padapter, + + notify_channel = ieee80211_get_channel(wiphy, freq); + +- notify_capability = +- get_unaligned_le16( +- rtw_get_capability23a_from_ie(pnetwork->network.IEs)); +- + notify_ie = pnetwork->network.IEs + _FIXED_IE_LENGTH_; + notify_ielen = pnetwork->network.IELength - _FIXED_IE_LENGTH_; + +@@ -286,7 +281,7 @@ static int rtw_cfg80211_inform_bss(struct rtw_adapter *padapter, + bss = cfg80211_inform_bss(wiphy, notify_channel, + pnetwork->network.MacAddress, + pnetwork->network.tsf, +- notify_capability, ++ pnetwork->network.capability, + pnetwork->network.BeaconPeriod, + notify_ie, notify_ielen, + notify_signal, GFP_ATOMIC); diff --git a/debian/patches/features/all/r8723au/0099-staging-rtl8723au-struct-wlan_bssid_ex-Rename-Beacon.patch b/debian/patches/features/all/r8723au/0099-staging-rtl8723au-struct-wlan_bssid_ex-Rename-Beacon.patch new file mode 100644 index 000000000..cff8f77e4 --- /dev/null +++ b/debian/patches/features/all/r8723au/0099-staging-rtl8723au-struct-wlan_bssid_ex-Rename-Beacon.patch @@ -0,0 +1,138 @@ +From: Jes Sorensen +Date: Thu, 19 Jun 2014 11:37:22 +0200 +Subject: [099/249] staging: rtl8723au: struct wlan_bssid_ex: Rename + BeaconPeriod to beacon_interval +Origin: https://git.kernel.org/linus/143ced27acaa948cbcf34cafe0bca3c926fd35fc + +This is to be more consistent mapping the names in wlan_bssid_ex to +those in struct ieee80211_mgmt. + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_ap.c | 4 ++-- + drivers/staging/rtl8723au/core/rtw_ieee80211.c | 2 +- + drivers/staging/rtl8723au/core/rtw_mlme.c | 2 +- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 12 ++++++------ + drivers/staging/rtl8723au/include/wlan_bssdef.h | 2 +- + drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 2 +- + 6 files changed, 12 insertions(+), 12 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_ap.c b/drivers/staging/rtl8723au/core/rtw_ap.c +index a52662e..73161b9 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ap.c ++++ b/drivers/staging/rtl8723au/core/rtw_ap.c +@@ -655,7 +655,7 @@ static void start_bss_network(struct rtw_adapter *padapter, u8 *pbuf) + struct ieee80211_ht_operation *pht_info = NULL; + int bcn_fixed_size; + +- bcn_interval = (u16)pnetwork->BeaconPeriod; ++ bcn_interval = (u16)pnetwork->beacon_interval; + cur_channel = pnetwork->DSConfig; + cur_bwmode = HT_CHANNEL_WIDTH_20;; + cur_ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; +@@ -847,7 +847,7 @@ int rtw_check_beacon_data23a(struct rtw_adapter *padapter, u8 *pbuf, + /* beacon interval */ + /* ie + 8; 8: TimeStamp, 2: Beacon Interval 2:Capability */ + pbeacon = rtw_get_beacon_interval23a_from_ie(ie); +- pbss_network->BeaconPeriod = get_unaligned_le16(pbeacon); ++ pbss_network->beacon_interval = get_unaligned_le16(pbeacon); + + /* capability */ + cap = get_unaligned_le16(ie); +diff --git a/drivers/staging/rtl8723au/core/rtw_ieee80211.c b/drivers/staging/rtl8723au/core/rtw_ieee80211.c +index 9d0662c..442bdef 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ieee80211.c ++++ b/drivers/staging/rtl8723au/core/rtw_ieee80211.c +@@ -360,7 +360,7 @@ int rtw_generate_ie23a(struct registry_priv *pregistrypriv) + + /* beacon interval : 2bytes */ + /* BCN_INTERVAL; */ +- *(u16*)ie = cpu_to_le16(pdev_network->BeaconPeriod); ++ *(u16*)ie = cpu_to_le16(pdev_network->beacon_interval); + sz += 2; + ie += 2; + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c +index 799338b..567be5e 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c +@@ -2117,7 +2117,7 @@ void rtw_init_registrypriv_dev_network23a(struct rtw_adapter* adapter) + memcpy(&pdev_network->Ssid, &pregistrypriv->ssid, + sizeof(struct cfg80211_ssid)); + +- pdev_network->BeaconPeriod = 100; ++ pdev_network->beacon_interval = 100; + } + + void rtw_update_registrypriv_dev_network23a(struct rtw_adapter* adapter) +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index a91198f..f40b733 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -4279,7 +4279,7 @@ static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter, + ie_offset = offsetof(struct ieee80211_mgmt, u.beacon.variable); + bssid->capability = + get_unaligned_le16(&mgmt->u.beacon.capab_info); +- bssid->BeaconPeriod = ++ bssid->beacon_interval = + get_unaligned_le16(&mgmt->u.beacon.beacon_int); + bssid->tsf = get_unaligned_le64(&mgmt->u.beacon.timestamp); + } else if (ieee80211_is_probe_req(mgmt->frame_control)) { +@@ -4287,8 +4287,8 @@ static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter, + u.probe_req.variable); + bssid->reserved = 2; + bssid->capability = 0; +- bssid->BeaconPeriod = +- padapter->registrypriv.dev_network.BeaconPeriod; ++ bssid->beacon_interval = ++ padapter->registrypriv.dev_network.beacon_interval; + bssid->tsf = 0; + } else if (ieee80211_is_probe_resp(mgmt->frame_control)) { + ie_offset = offsetof(struct ieee80211_mgmt, +@@ -4296,7 +4296,7 @@ static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter, + bssid->reserved = 3; + bssid->capability = + get_unaligned_le16(&mgmt->u.probe_resp.capab_info); +- bssid->BeaconPeriod = ++ bssid->beacon_interval = + get_unaligned_le16(&mgmt->u.probe_resp.beacon_int); + bssid->tsf = get_unaligned_le64(&mgmt->u.probe_resp.timestamp); + } else { +@@ -4304,8 +4304,8 @@ static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter, + ie_offset = offsetof(struct ieee80211_mgmt, u.beacon.variable); + bssid->capability = + get_unaligned_le16(&mgmt->u.beacon.capab_info); +- bssid->BeaconPeriod = +- padapter->registrypriv.dev_network.BeaconPeriod; ++ bssid->beacon_interval = ++ padapter->registrypriv.dev_network.beacon_interval; + bssid->tsf = 0; + } + ie_offset -= offsetof(struct ieee80211_mgmt, u); +diff --git a/drivers/staging/rtl8723au/include/wlan_bssdef.h b/drivers/staging/rtl8723au/include/wlan_bssdef.h +index c43c855..96e8074 100644 +--- a/drivers/staging/rtl8723au/include/wlan_bssdef.h ++++ b/drivers/staging/rtl8723au/include/wlan_bssdef.h +@@ -92,7 +92,7 @@ struct wlan_bssid_ex { + struct cfg80211_ssid Ssid; + u32 Privacy; + long Rssi;/* in dBM, raw data , get from PHY) */ +- u16 BeaconPeriod; /* units are Kusec */ ++ u16 beacon_interval; + u16 capability; + u64 tsf; + u32 ATIMWindow; /* units are Kusec */ +diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +index 4eef408..638e833 100644 +--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c ++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +@@ -282,7 +282,7 @@ static int rtw_cfg80211_inform_bss(struct rtw_adapter *padapter, + pnetwork->network.MacAddress, + pnetwork->network.tsf, + pnetwork->network.capability, +- pnetwork->network.BeaconPeriod, ++ pnetwork->network.beacon_interval, + notify_ie, notify_ielen, + notify_signal, GFP_ATOMIC); + diff --git a/debian/patches/features/all/r8723au/0100-staging-rtl8723au-rtw_add_beacon-Replace-magic-const.patch b/debian/patches/features/all/r8723au/0100-staging-rtl8723au-rtw_add_beacon-Replace-magic-const.patch new file mode 100644 index 000000000..5a89af9d9 --- /dev/null +++ b/debian/patches/features/all/r8723au/0100-staging-rtl8723au-rtw_add_beacon-Replace-magic-const.patch @@ -0,0 +1,49 @@ +From: Jes Sorensen +Date: Thu, 19 Jun 2014 11:37:23 +0200 +Subject: [100/249] staging: rtl8723au: rtw_add_beacon(): Replace magic + constant with appropriate struct size +Origin: https://git.kernel.org/linus/db97812c2c5e8a18d7cf3eb679a4cfdd6125f748 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 12 +++++++----- + 1 file changed, 7 insertions(+), 5 deletions(-) + +diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +index 638e833..80d5fe7 100644 +--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c ++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +@@ -2912,7 +2912,7 @@ static int rtw_add_beacon(struct rtw_adapter *adapter, const u8 *head, + size_t head_len, const u8 *tail, size_t tail_len) + { + int ret = 0; +- u8 *pbuf = NULL; ++ u8 *pbuf; + uint len, wps_ielen = 0; + struct mlme_priv *pmlmepriv = &adapter->mlmepriv; + /* struct sta_priv *pstapriv = &padapter->stapriv; */ +@@ -2923,17 +2923,19 @@ static int rtw_add_beacon(struct rtw_adapter *adapter, const u8 *head, + if (check_fwstate(pmlmepriv, WIFI_AP_STATE) != true) + return -EINVAL; + +- if (head_len < 24) ++ if (head_len < sizeof(struct ieee80211_hdr_3addr)) + return -EINVAL; + + pbuf = kzalloc(head_len + tail_len, GFP_KERNEL); + if (!pbuf) + return -ENOMEM; + /* 24 = beacon header len. */ +- memcpy(pbuf, (void *)head + 24, head_len - 24); +- memcpy(pbuf + head_len - 24, (void *)tail, tail_len); ++ memcpy(pbuf, (void *)head + sizeof(struct ieee80211_hdr_3addr), ++ head_len - sizeof(struct ieee80211_hdr_3addr)); ++ memcpy(pbuf + head_len - sizeof(struct ieee80211_hdr_3addr), ++ (void *)tail, tail_len); + +- len = head_len + tail_len - 24; ++ len = head_len + tail_len - sizeof(struct ieee80211_hdr_3addr); + + /* check wps ie if inclued */ + if (cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT, diff --git a/debian/patches/features/all/r8723au/0101-staging-rtl8723au-Update-bss-beacon-info-in-rtw_add_.patch b/debian/patches/features/all/r8723au/0101-staging-rtl8723au-Update-bss-beacon-info-in-rtw_add_.patch new file mode 100644 index 000000000..1797d05d8 --- /dev/null +++ b/debian/patches/features/all/r8723au/0101-staging-rtl8723au-Update-bss-beacon-info-in-rtw_add_.patch @@ -0,0 +1,76 @@ +From: Jes Sorensen +Date: Thu, 19 Jun 2014 11:37:24 +0200 +Subject: [101/249] staging: rtl8723au: Update bss beacon info in + rtw_add_beacon() +Origin: https://git.kernel.org/linus/ddf5c2bd1044d923ad82f519c68cdf12a055a568 + +Pull out the core info beacon_interval, capability, and tsf and update +cur_network.network with the info in rtw_add_beacon() instead of +relying on it being in ->IEs. + +This will help later when getting rid of the beacon struct info from +->IEs and only carrying the actual IEs there. + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_ap.c | 6 ------ + drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 9 ++++++++- + 2 files changed, 8 insertions(+), 7 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_ap.c b/drivers/staging/rtl8723au/core/rtw_ap.c +index 73161b9..e943b6b 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ap.c ++++ b/drivers/staging/rtl8723au/core/rtw_ap.c +@@ -798,7 +798,6 @@ int rtw_check_beacon_data23a(struct rtw_adapter *padapter, u8 *pbuf, + u8 *pHT_caps_ie = NULL; + u8 *pHT_info_ie = NULL; + struct sta_info *psta = NULL; +- __le16 *pbeacon; + u16 cap, ht_cap = false; + uint ie_len = 0; + int group_cipher, pairwise_cipher; +@@ -844,11 +843,6 @@ int rtw_check_beacon_data23a(struct rtw_adapter *padapter, u8 *pbuf, + + memcpy(pbss_network->MacAddress, myid(&padapter->eeprompriv), ETH_ALEN); + +- /* beacon interval */ +- /* ie + 8; 8: TimeStamp, 2: Beacon Interval 2:Capability */ +- pbeacon = rtw_get_beacon_interval23a_from_ie(ie); +- pbss_network->beacon_interval = get_unaligned_le16(pbeacon); +- + /* capability */ + cap = get_unaligned_le16(ie); + +diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +index 80d5fe7..6c06d57 100644 +--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c ++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +@@ -2915,6 +2915,8 @@ static int rtw_add_beacon(struct rtw_adapter *adapter, const u8 *head, + u8 *pbuf; + uint len, wps_ielen = 0; + struct mlme_priv *pmlmepriv = &adapter->mlmepriv; ++ struct wlan_bssid_ex *bss = &pmlmepriv->cur_network.network; ++ const struct ieee80211_mgmt *mgmt = (struct ieee80211_mgmt *)head; + /* struct sta_priv *pstapriv = &padapter->stapriv; */ + + DBG_8723A("%s beacon_head_len =%zu, beacon_tail_len =%zu\n", +@@ -2923,12 +2925,17 @@ static int rtw_add_beacon(struct rtw_adapter *adapter, const u8 *head, + if (check_fwstate(pmlmepriv, WIFI_AP_STATE) != true) + return -EINVAL; + +- if (head_len < sizeof(struct ieee80211_hdr_3addr)) ++ if (head_len < offsetof(struct ieee80211_mgmt, u.beacon.variable)) + return -EINVAL; + + pbuf = kzalloc(head_len + tail_len, GFP_KERNEL); + if (!pbuf) + return -ENOMEM; ++ ++ bss->beacon_interval = get_unaligned_le16(&mgmt->u.beacon.beacon_int); ++ bss->capability = get_unaligned_le16(&mgmt->u.beacon.capab_info); ++ bss->tsf = get_unaligned_le64(&mgmt->u.beacon.timestamp); ++ + /* 24 = beacon header len. */ + memcpy(pbuf, (void *)head + sizeof(struct ieee80211_hdr_3addr), + head_len - sizeof(struct ieee80211_hdr_3addr)); diff --git a/debian/patches/features/all/r8723au/0102-staging-rtl8723au-is_same_network23a-Use-the-capabil.patch b/debian/patches/features/all/r8723au/0102-staging-rtl8723au-is_same_network23a-Use-the-capabil.patch new file mode 100644 index 000000000..d9a389722 --- /dev/null +++ b/debian/patches/features/all/r8723au/0102-staging-rtl8723au-is_same_network23a-Use-the-capabil.patch @@ -0,0 +1,30 @@ +From: Jes Sorensen +Date: Thu, 19 Jun 2014 11:37:25 +0200 +Subject: [102/249] staging: rtl8723au: is_same_network23a(): Use the + capability info from wlan_bssid_ex +Origin: https://git.kernel.org/linus/ccb1bdcb485864dde708b059a9437f2a481a8282 + +We already have the capability info in struct wlan_bssid_ex, no point +in searching for it once again. + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c +index 567be5e..2119dfb 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c +@@ -366,8 +366,8 @@ int is_same_network23a(struct wlan_bssid_ex *src, struct wlan_bssid_ex *dst) + { + u16 s_cap, d_cap; + +- s_cap = get_unaligned_le16(rtw_get_capability23a_from_ie(src->IEs)); +- d_cap = get_unaligned_le16(rtw_get_capability23a_from_ie(dst->IEs)); ++ s_cap = src->capability; ++ d_cap = dst->capability; + + return ((src->Ssid.ssid_len == dst->Ssid.ssid_len) && + /* (src->DSConfig == dst->DSConfig) && */ diff --git a/debian/patches/features/all/r8723au/0103-staging-rtl8723au-ConstructBeacon-Use-struct-ieee802.patch b/debian/patches/features/all/r8723au/0103-staging-rtl8723au-ConstructBeacon-Use-struct-ieee802.patch new file mode 100644 index 000000000..dc21637dc --- /dev/null +++ b/debian/patches/features/all/r8723au/0103-staging-rtl8723au-ConstructBeacon-Use-struct-ieee802.patch @@ -0,0 +1,81 @@ +From: Jes Sorensen +Date: Thu, 19 Jun 2014 11:37:26 +0200 +Subject: [103/249] staging: rtl8723au: ConstructBeacon(): Use struct + ieee80211_mgmt to build beacon +Origin: https://git.kernel.org/linus/0b46cfdd0320534b0064529c242c4ba324b21dc1 + +This gets rid of a bunch of hard coded offsets and reduces the +dependency of the ugly rtw_get_*_from_ie() functions. + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/rtl8723a_cmd.c | 37 +++++++++++----------------- + 1 file changed, 15 insertions(+), 22 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c b/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c +index 6e1fed2..ae15624 100644 +--- a/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c ++++ b/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c +@@ -200,9 +200,10 @@ void rtl8723a_set_FwPwrMode_cmd(struct rtw_adapter *padapter, u8 Mode) + + } + +-static void ConstructBeacon(struct rtw_adapter *padapter, u8 *pframe, u32 *pLength) ++static void ++ConstructBeacon(struct rtw_adapter *padapter, u8 *pframe, u32 *pLength) + { +- struct ieee80211_hdr *pwlanhdr; ++ struct ieee80211_mgmt *mgmt; + u32 rate_len, pktlen; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; +@@ -212,36 +213,28 @@ static void ConstructBeacon(struct rtw_adapter *padapter, u8 *pframe, u32 *pLeng + + /* DBG_8723A("%s\n", __func__); */ + +- pwlanhdr = (struct ieee80211_hdr *)pframe; ++ mgmt = (struct ieee80211_mgmt *)pframe; + +- pwlanhdr->frame_control = ++ mgmt->frame_control = + cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_BEACON); + +- memcpy(pwlanhdr->addr1, bc_addr, ETH_ALEN); +- memcpy(pwlanhdr->addr2, myid(&padapter->eeprompriv), ETH_ALEN); +- memcpy(pwlanhdr->addr3, get_my_bssid23a(cur_network), ETH_ALEN); ++ ether_addr_copy(mgmt->da, bc_addr); ++ ether_addr_copy(mgmt->sa, myid(&padapter->eeprompriv)); ++ ether_addr_copy(mgmt->bssid, get_my_bssid23a(cur_network)); + + /* A Beacon frame shouldn't have fragment bits set */ +- pwlanhdr->seq_ctrl = 0; +- +- pframe += sizeof(struct ieee80211_hdr_3addr); +- pktlen = sizeof (struct ieee80211_hdr_3addr); ++ mgmt->seq_ctrl = 0; + + /* timestamp will be inserted by hardware */ +- pframe += 8; +- pktlen += 8; +- +- /* beacon interval: 2 bytes */ +- memcpy(pframe, (unsigned char *)(rtw_get_beacon_interval23a_from_ie(cur_network->IEs)), 2); + +- pframe += 2; +- pktlen += 2; ++ put_unaligned_le16(cur_network->beacon_interval, ++ &mgmt->u.beacon.beacon_int); + +- /* capability info: 2 bytes */ +- memcpy(pframe, (unsigned char *)(rtw_get_capability23a_from_ie(cur_network->IEs)), 2); ++ put_unaligned_le16(cur_network->capability, ++ &mgmt->u.beacon.capab_info); + +- pframe += 2; +- pktlen += 2; ++ pframe = mgmt->u.beacon.variable; ++ pktlen = offsetof(struct ieee80211_mgmt, u.beacon.variable); + + if ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE) { + bcn_fixed_size = diff --git a/debian/patches/features/all/r8723au/0104-staging-rtl8723au-issue_beacon23a-Do-not-copy-IEs-in.patch b/debian/patches/features/all/r8723au/0104-staging-rtl8723au-issue_beacon23a-Do-not-copy-IEs-in.patch new file mode 100644 index 000000000..c9c7d7351 --- /dev/null +++ b/debian/patches/features/all/r8723au/0104-staging-rtl8723au-issue_beacon23a-Do-not-copy-IEs-in.patch @@ -0,0 +1,80 @@ +From: Jes Sorensen +Date: Thu, 19 Jun 2014 11:37:27 +0200 +Subject: [104/249] staging: rtl8723au: issue_beacon23a(): Do not copy IEs in + front of beacon data +Origin: https://git.kernel.org/linus/b81d36cbee8650d42cc30cdf390d7ef28faae83d + +Not sure how this happened, but one should never copy the IEs in front +of the beacon frame info. This could lead to some nasty corrupted +beacon frames hitting the wire if running AP mode - ouf! + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 46 +++++++++++++-------------- + 1 file changed, 23 insertions(+), 23 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index f40b733..265fd2a 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -2434,7 +2434,29 @@ void issue_beacon23a(struct rtw_adapter *padapter, int timeout_ms) + pframe += sizeof(struct ieee80211_hdr_3addr); + pattrib->pktlen = sizeof(struct ieee80211_hdr_3addr); + +- if ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE) { ++ /* below for ad-hoc mode */ ++ ++ /* timestamp will be inserted by hardware */ ++ pframe += 8; ++ pattrib->pktlen += 8; ++ ++ /* beacon interval: 2 bytes */ ++ ++ memcpy(pframe, (unsigned char *) ++ rtw_get_beacon_interval23a_from_ie(cur_network->IEs), 2); ++ ++ pframe += 2; ++ pattrib->pktlen += 2; ++ ++ /* capability info: 2 bytes */ ++ ++ memcpy(pframe, (unsigned char *) ++ rtw_get_capability23a_from_ie(cur_network->IEs), 2); ++ ++ pframe += 2; ++ pattrib->pktlen += 2; ++ ++ if ((pmlmeinfo->state & 0x03) == WIFI_FW_AP_STATE) { + u8 *iebuf; + int buflen; + /* DBG_8723A("ie len =%d\n", cur_network->IELength); */ +@@ -2468,28 +2490,6 @@ void issue_beacon23a(struct rtw_adapter *padapter, int timeout_ms) + goto _issue_bcn; + } + +- /* below for ad-hoc mode */ +- +- /* timestamp will be inserted by hardware */ +- pframe += 8; +- pattrib->pktlen += 8; +- +- /* beacon interval: 2 bytes */ +- +- memcpy(pframe, (unsigned char *) +- rtw_get_beacon_interval23a_from_ie(cur_network->IEs), 2); +- +- pframe += 2; +- pattrib->pktlen += 2; +- +- /* capability info: 2 bytes */ +- +- memcpy(pframe, (unsigned char *) +- rtw_get_capability23a_from_ie(cur_network->IEs), 2); +- +- pframe += 2; +- pattrib->pktlen += 2; +- + /* SSID */ + pframe = rtw_set_ie23a(pframe, WLAN_EID_SSID, + cur_network->Ssid.ssid_len, diff --git a/debian/patches/features/all/r8723au/0105-staging-rtl8723au-issue_beacon23a-Use-struct-ieee802.patch b/debian/patches/features/all/r8723au/0105-staging-rtl8723au-issue_beacon23a-Use-struct-ieee802.patch new file mode 100644 index 000000000..b0f75256c --- /dev/null +++ b/debian/patches/features/all/r8723au/0105-staging-rtl8723au-issue_beacon23a-Use-struct-ieee802.patch @@ -0,0 +1,82 @@ +From: Jes Sorensen +Date: Thu, 19 Jun 2014 11:37:28 +0200 +Subject: [105/249] staging: rtl8723au: issue_beacon23a(): Use struct + ieee80211_mgmt to build beacon +Origin: https://git.kernel.org/linus/5d43182bc35c055408fac06dc31da88f8ce33886 + +Why on Earth we have two functions in the driver constructing beacon +frames is beyond me ... but one step at a time + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 42 +++++++++------------------ + 1 file changed, 14 insertions(+), 28 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index 265fd2a..9b83a701 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -2390,7 +2390,7 @@ void issue_beacon23a(struct rtw_adapter *padapter, int timeout_ms) + struct xmit_frame *pmgntframe; + struct pkt_attrib *pattrib; + unsigned char *pframe; +- struct ieee80211_hdr *pwlanhdr; ++ struct ieee80211_mgmt *mgmt; + unsigned int rate_len; + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; +@@ -2421,40 +2421,26 @@ void issue_beacon23a(struct rtw_adapter *padapter, int timeout_ms) + memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET); + + pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET; +- pwlanhdr = (struct ieee80211_hdr *)pframe; +- +- pwlanhdr->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT | +- IEEE80211_STYPE_BEACON); +- pwlanhdr->seq_ctrl = 0; +- +- ether_addr_copy(pwlanhdr->addr1, bc_addr); +- ether_addr_copy(pwlanhdr->addr2, myid(&padapter->eeprompriv)); +- ether_addr_copy(pwlanhdr->addr3, get_my_bssid23a(cur_network)); ++ mgmt = (struct ieee80211_mgmt *)pframe; + +- pframe += sizeof(struct ieee80211_hdr_3addr); +- pattrib->pktlen = sizeof(struct ieee80211_hdr_3addr); ++ mgmt->frame_control = ++ cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_BEACON); ++ mgmt->seq_ctrl = 0; + +- /* below for ad-hoc mode */ ++ ether_addr_copy(mgmt->da, bc_addr); ++ ether_addr_copy(mgmt->sa, myid(&padapter->eeprompriv)); ++ ether_addr_copy(mgmt->bssid, get_my_bssid23a(cur_network)); + + /* timestamp will be inserted by hardware */ +- pframe += 8; +- pattrib->pktlen += 8; +- +- /* beacon interval: 2 bytes */ + +- memcpy(pframe, (unsigned char *) +- rtw_get_beacon_interval23a_from_ie(cur_network->IEs), 2); ++ put_unaligned_le16(cur_network->beacon_interval, ++ &mgmt->u.beacon.beacon_int); + +- pframe += 2; +- pattrib->pktlen += 2; ++ put_unaligned_le16(cur_network->capability, ++ &mgmt->u.beacon.capab_info); + +- /* capability info: 2 bytes */ +- +- memcpy(pframe, (unsigned char *) +- rtw_get_capability23a_from_ie(cur_network->IEs), 2); +- +- pframe += 2; +- pattrib->pktlen += 2; ++ pframe = mgmt->u.beacon.variable; ++ pattrib->pktlen = offsetof(struct ieee80211_mgmt, u.beacon.variable); + + if ((pmlmeinfo->state & 0x03) == WIFI_FW_AP_STATE) { + u8 *iebuf; diff --git a/debian/patches/features/all/r8723au/0106-staging-rtl8723au-issue_probersp-Do-not-copy-the-IEs.patch b/debian/patches/features/all/r8723au/0106-staging-rtl8723au-issue_probersp-Do-not-copy-the-IEs.patch new file mode 100644 index 000000000..ec2974ea2 --- /dev/null +++ b/debian/patches/features/all/r8723au/0106-staging-rtl8723au-issue_probersp-Do-not-copy-the-IEs.patch @@ -0,0 +1,117 @@ +From: Jes Sorensen +Date: Thu, 19 Jun 2014 11:37:29 +0200 +Subject: [106/249] staging: rtl8723au: issue_probersp(): Do not copy the IEs + in front of probe_resp data +Origin: https://git.kernel.org/linus/08519034b3f75e030582724b9f1a280a5b0cfb73 + +Another case where the driver was copying IEs in front of the +probe_resp data in the management frame, when running in AP mode. This +would result in badly corrupted frames hitting the wire - ouf ouf ouf! + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 59 +++++++++++---------------- + 1 file changed, 23 insertions(+), 36 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index 9b83a701..d2a09c6 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -2544,7 +2544,7 @@ static void issue_probersp(struct rtw_adapter *padapter, unsigned char *da, + struct xmit_frame *pmgntframe; + struct pkt_attrib *pattrib; + unsigned char *pframe; +- struct ieee80211_hdr *pwlanhdr; ++ struct ieee80211_mgmt *mgmt; + unsigned char *mac, *bssid; + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + #ifdef CONFIG_8723AU_AP_MODE +@@ -2564,6 +2564,9 @@ static void issue_probersp(struct rtw_adapter *padapter, unsigned char *da, + + /* DBG_8723A("%s\n", __func__); */ + ++ if (cur_network->IELength > MAX_IE_SZ) ++ return; ++ + pmgntframe = alloc_mgtxmitframe23a(pxmitpriv); + if (!pmgntframe) { + DBG_8723A("%s, alloc mgnt frame fail\n", __func__); +@@ -2577,28 +2580,35 @@ static void issue_probersp(struct rtw_adapter *padapter, unsigned char *da, + memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET); + + pframe = (u8 *)pmgntframe->buf_addr + TXDESC_OFFSET; +- pwlanhdr = (struct ieee80211_hdr *)pframe; ++ mgmt = (struct ieee80211_mgmt *)pframe; + + mac = myid(&padapter->eeprompriv); + bssid = cur_network->MacAddress; + +- pwlanhdr->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT | +- IEEE80211_STYPE_PROBE_RESP); ++ mgmt->frame_control = ++ cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_PROBE_RESP); + +- ether_addr_copy(pwlanhdr->addr1, da); +- ether_addr_copy(pwlanhdr->addr2, mac); +- ether_addr_copy(pwlanhdr->addr3, bssid); ++ ether_addr_copy(mgmt->da, da); ++ ether_addr_copy(mgmt->sa, mac); ++ ether_addr_copy(mgmt->bssid, bssid); + +- pwlanhdr->seq_ctrl = +- cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq)); ++ mgmt->seq_ctrl = cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq)); + pmlmeext->mgnt_seq++; + + pattrib->hdrlen = sizeof(struct ieee80211_hdr_3addr); +- pattrib->pktlen = pattrib->hdrlen; +- pframe += pattrib->hdrlen; + +- if (cur_network->IELength > MAX_IE_SZ) +- return; ++ /* timestamp will be inserted by hardware */ ++ put_unaligned_le16(cur_network->beacon_interval, ++ &mgmt->u.probe_resp.beacon_int); ++ ++ put_unaligned_le16(cur_network->capability, ++ &mgmt->u.probe_resp.capab_info); ++ ++ pframe = mgmt->u.probe_resp.variable; ++ pattrib->pktlen = ++ offsetof(struct ieee80211_mgmt, u.probe_resp.variable); ++ ++ /* below for ad-hoc mode */ + + #ifdef CONFIG_8723AU_AP_MODE + if ((pmlmeinfo->state & 0x03) == WIFI_FW_AP_STATE) { +@@ -2682,29 +2692,6 @@ static void issue_probersp(struct rtw_adapter *padapter, unsigned char *da, + } else + #endif + { +- +- /* timestamp will be inserted by hardware */ +- pframe += 8; +- pattrib->pktlen += 8; +- +- /* beacon interval: 2 bytes */ +- +- memcpy(pframe, (unsigned char *) +- rtw_get_beacon_interval23a_from_ie(cur_network->IEs), 2); +- +- pframe += 2; +- pattrib->pktlen += 2; +- +- /* capability info: 2 bytes */ +- +- memcpy(pframe, (unsigned char *) +- rtw_get_capability23a_from_ie(cur_network->IEs), 2); +- +- pframe += 2; +- pattrib->pktlen += 2; +- +- /* below for ad-hoc mode */ +- + /* SSID */ + pframe = rtw_set_ie23a(pframe, WLAN_EID_SSID, + cur_network->Ssid.ssid_len, diff --git a/debian/patches/features/all/r8723au/0107-staging-rtl8723au-issue_assocrsp-Use-capability-from.patch b/debian/patches/features/all/r8723au/0107-staging-rtl8723au-issue_assocrsp-Use-capability-from.patch new file mode 100644 index 000000000..065f4d798 --- /dev/null +++ b/debian/patches/features/all/r8723au/0107-staging-rtl8723au-issue_assocrsp-Use-capability-from.patch @@ -0,0 +1,36 @@ +From: Jes Sorensen +Date: Thu, 19 Jun 2014 11:37:30 +0200 +Subject: [107/249] staging: rtl8723au: issue_assocrsp(): Use capability from + struct wlan_bssid_ex +Origin: https://git.kernel.org/linus/5376badca02fabc7ca3ffa9e7dd5e795a4250486 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 6 +----- + 1 file changed, 1 insertion(+), 5 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index d2a09c6..a8bc12c 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -3051,7 +3051,6 @@ static void issue_assocrsp(struct rtw_adapter *padapter, unsigned short status, + struct ieee80211_mgmt *mgmt; + struct pkt_attrib *pattrib; + unsigned char *pframe; +- unsigned short val; + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; +@@ -3089,10 +3088,7 @@ static void issue_assocrsp(struct rtw_adapter *padapter, unsigned short status, + pattrib->pktlen = + offsetof(struct ieee80211_mgmt, u.assoc_resp.variable); + +- /* capability */ +- val = *(unsigned short *)rtw_get_capability23a_from_ie(ie); +- +- mgmt->u.assoc_resp.capab_info = val; ++ mgmt->u.assoc_resp.capab_info = cpu_to_le16(pnetwork->capability); + mgmt->u.assoc_resp.status_code = cpu_to_le16(status); + mgmt->u.assoc_resp.aid = cpu_to_le16(pstat->aid | BIT(14) | BIT(15)); + diff --git a/debian/patches/features/all/r8723au/0108-staging-rtl8723au-issue_assocreq-Use-struct-ieee8021.patch b/debian/patches/features/all/r8723au/0108-staging-rtl8723au-issue_assocreq-Use-struct-ieee8021.patch new file mode 100644 index 000000000..6f070a4ba --- /dev/null +++ b/debian/patches/features/all/r8723au/0108-staging-rtl8723au-issue_assocreq-Use-struct-ieee8021.patch @@ -0,0 +1,82 @@ +From: Jes Sorensen +Date: Thu, 19 Jun 2014 11:37:31 +0200 +Subject: [108/249] staging: rtl8723au: issue_assocreq(): Use struct + ieee80211_mgmt to build assoc_req frame +Origin: https://git.kernel.org/linus/92af4499c69e57827bee8dfcdf6c65d4c5394179 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 38 +++++++++++---------------- + 1 file changed, 15 insertions(+), 23 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index a8bc12c..f7ddd6a 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -3185,7 +3185,7 @@ static void issue_assocreq(struct rtw_adapter *padapter) + struct pkt_attrib *pattrib; + unsigned char *pframe; + const u8 *p; +- struct ieee80211_hdr *pwlanhdr; ++ struct ieee80211_mgmt *mgmt; + unsigned int i, j, index = 0; + unsigned char rf_type, bssrate[NumRates], sta_bssrate[NumRates]; + struct registry_priv *pregpriv = &padapter->registrypriv; +@@ -3207,34 +3207,26 @@ static void issue_assocreq(struct rtw_adapter *padapter) + memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET); + + pframe = (u8 *)pmgntframe->buf_addr + TXDESC_OFFSET; +- pwlanhdr = (struct ieee80211_hdr *)pframe; ++ mgmt = (struct ieee80211_mgmt *)pframe; + +- pwlanhdr->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT | +- IEEE80211_STYPE_ASSOC_REQ); ++ mgmt->frame_control = ++ cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_ASSOC_REQ); + +- ether_addr_copy(pwlanhdr->addr1, get_my_bssid23a(&pmlmeinfo->network)); +- ether_addr_copy(pwlanhdr->addr2, myid(&padapter->eeprompriv)); +- ether_addr_copy(pwlanhdr->addr3, get_my_bssid23a(&pmlmeinfo->network)); ++ ether_addr_copy(mgmt->da, get_my_bssid23a(&pmlmeinfo->network)); ++ ether_addr_copy(mgmt->sa, myid(&padapter->eeprompriv)); ++ ether_addr_copy(mgmt->bssid, get_my_bssid23a(&pmlmeinfo->network)); + +- pwlanhdr->seq_ctrl = +- cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq)); ++ mgmt->seq_ctrl = cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq)); + pmlmeext->mgnt_seq++; + +- pframe += sizeof(struct ieee80211_hdr_3addr); +- pattrib->pktlen = sizeof(struct ieee80211_hdr_3addr); +- + /* caps */ +- memcpy(pframe, +- rtw_get_capability23a_from_ie(pmlmeinfo->network.IEs), 2); +- +- pframe += 2; +- pattrib->pktlen += 2; +- +- /* listen interval */ ++ put_unaligned_le16(pmlmeinfo->network.capability, ++ &mgmt->u.assoc_req.capab_info); + /* todo: listen interval for power saving */ +- put_unaligned_le16(3, pframe); +- pframe += 2; +- pattrib->pktlen += 2; ++ put_unaligned_le16(3, &mgmt->u.assoc_req.listen_interval); ++ ++ pframe = mgmt->u.assoc_req.variable; ++ pattrib->pktlen = offsetof(struct ieee80211_mgmt, u.assoc_req.variable); + + /* SSID */ + pframe = rtw_set_ie23a(pframe, WLAN_EID_SSID, +@@ -3437,7 +3429,7 @@ exit: + kfree(pmlmepriv->assoc_req); + pmlmepriv->assoc_req = kmalloc(pattrib->pktlen, GFP_ATOMIC); + if (pmlmepriv->assoc_req) { +- memcpy(pmlmepriv->assoc_req, pwlanhdr, pattrib->pktlen); ++ memcpy(pmlmepriv->assoc_req, mgmt, pattrib->pktlen); + pmlmepriv->assoc_req_len = pattrib->pktlen; + } + } else diff --git a/debian/patches/features/all/r8723au/0109-staging-rtl8723au-rtw_get_bcn_info23a-Use-capability.patch b/debian/patches/features/all/r8723au/0109-staging-rtl8723au-rtw_get_bcn_info23a-Use-capability.patch new file mode 100644 index 000000000..5efb60100 --- /dev/null +++ b/debian/patches/features/all/r8723au/0109-staging-rtl8723au-rtw_get_bcn_info23a-Use-capability.patch @@ -0,0 +1,35 @@ +From: Jes Sorensen +Date: Thu, 19 Jun 2014 11:37:32 +0200 +Subject: [109/249] staging: rtl8723au: rtw_get_bcn_info23a(): Use capability + from wlan_bssid_ex +Origin: https://git.kernel.org/linus/9ce73e2e6aafde2915d2210e644de94203212a04 + +This eliminates yet another user of rtw_get_capability23a_from_ie() + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_ieee80211.c | 5 +---- + 1 file changed, 1 insertion(+), 4 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_ieee80211.c b/drivers/staging/rtl8723au/core/rtw_ieee80211.c +index 442bdef..d60fb3c 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ieee80211.c ++++ b/drivers/staging/rtl8723au/core/rtw_ieee80211.c +@@ -770,15 +770,12 @@ static int rtw_get_cipher_info(struct wlan_network *pnetwork) + + void rtw_get_bcn_info23a(struct wlan_network *pnetwork) + { +- unsigned short cap; + u8 bencrypt = 0; + int pie_len, ie_offset; + u8 *pie; + const u8 *p; + +- cap = get_unaligned_le16( +- rtw_get_capability23a_from_ie(pnetwork->network.IEs)); +- if (cap & WLAN_CAPABILITY_PRIVACY) { ++ if (pnetwork->network.capability & WLAN_CAPABILITY_PRIVACY) { + bencrypt = 1; + pnetwork->network.Privacy = 1; + } else diff --git a/debian/patches/features/all/r8723au/0110-staging-rtl8723au-rtw_get_bcn_info23a-Use-__func__-i.patch b/debian/patches/features/all/r8723au/0110-staging-rtl8723au-rtw_get_bcn_info23a-Use-__func__-i.patch new file mode 100644 index 000000000..f4598e0f6 --- /dev/null +++ b/debian/patches/features/all/r8723au/0110-staging-rtl8723au-rtw_get_bcn_info23a-Use-__func__-i.patch @@ -0,0 +1,38 @@ +From: Jes Sorensen +Date: Thu, 19 Jun 2014 11:37:33 +0200 +Subject: [110/249] staging: rtl8723au: rtw_get_bcn_info23a(): Use __func__ in + debug prints +Origin: https://git.kernel.org/linus/0396416f541075315c67fe8817105122b75b5317 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_ieee80211.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_ieee80211.c b/drivers/staging/rtl8723au/core/rtw_ieee80211.c +index d60fb3c..f2c4a0e 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ieee80211.c ++++ b/drivers/staging/rtl8723au/core/rtw_ieee80211.c +@@ -782,7 +782,7 @@ void rtw_get_bcn_info23a(struct wlan_network *pnetwork) + pnetwork->BcnInfo.encryp_protocol = ENCRYP_PROTOCOL_OPENSYS; + + RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_, +- ("rtw_get_bcn_info23a: ssid =%s\n", pnetwork->network.Ssid.ssid)); ++ ("%s: ssid =%s\n", __func__, pnetwork->network.Ssid.ssid)); + + ie_offset = offsetof(struct ieee80211_mgmt, u.beacon.variable) - + offsetof(struct ieee80211_mgmt, u); +@@ -801,10 +801,10 @@ void rtw_get_bcn_info23a(struct wlan_network *pnetwork) + pnetwork->BcnInfo.encryp_protocol = ENCRYP_PROTOCOL_WEP; + } + RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_, +- ("rtw_get_bcn_info23a: pnetwork->encryp_protocol is %x\n", ++ ("%s: pnetwork->encryp_protocol is %x\n", __func__, + pnetwork->BcnInfo.encryp_protocol)); + RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_, +- ("rtw_get_bcn_info23a: pnetwork->encryp_protocol is %x\n", ++ ("%s: pnetwork->encryp_protocol is %x\n", __func__, + pnetwork->BcnInfo.encryp_protocol)); + rtw_get_cipher_info(pnetwork); + diff --git a/debian/patches/features/all/r8723au/0111-staging-rtl8723au-Remove-last-users-of-rtw_get_capab.patch b/debian/patches/features/all/r8723au/0111-staging-rtl8723au-Remove-last-users-of-rtw_get_capab.patch new file mode 100644 index 000000000..38f55c5a1 --- /dev/null +++ b/debian/patches/features/all/r8723au/0111-staging-rtl8723au-Remove-last-users-of-rtw_get_capab.patch @@ -0,0 +1,127 @@ +From: Jes Sorensen +Date: Thu, 19 Jun 2014 11:37:34 +0200 +Subject: [111/249] staging: rtl8723au: Remove last users of + rtw_get_capability*() functions +Origin: https://git.kernel.org/linus/a94e12b18331194d2ac9fe37da9da6c5c3b244d4 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_ap.c | 2 +- + drivers/staging/rtl8723au/core/rtw_mlme.c | 14 -------------- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 4 ++-- + drivers/staging/rtl8723au/core/rtw_wlan_util.c | 6 +++--- + drivers/staging/rtl8723au/include/rtw_mlme.h | 2 -- + 5 files changed, 6 insertions(+), 22 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_ap.c b/drivers/staging/rtl8723au/core/rtw_ap.c +index e943b6b..2a960b1 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ap.c ++++ b/drivers/staging/rtl8723au/core/rtw_ap.c +@@ -773,7 +773,7 @@ static void start_bss_network(struct rtw_adapter *padapter, u8 *pbuf) + update_wireless_mode23a(padapter); + + /* udpate capability after cur_wireless_mode updated */ +- update_capinfo23a(padapter, rtw_get_capability23a(pnetwork)); ++ update_capinfo23a(padapter, pnetwork->capability); + + /* let pnetwork_mlmeext == pnetwork_mlme. */ + memcpy(pnetwork_mlmeext, pnetwork, pnetwork->Length); +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c +index 2119dfb..776068d 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c +@@ -312,20 +312,6 @@ void rtw23a_roaming(struct rtw_adapter *padapter, + spin_unlock_bh(&pmlmepriv->lock); + } + +-__le16 *rtw_get_capability23a_from_ie(u8 *ie) +-{ +- return (__le16 *)(ie + 8 + 2); +-} +- +-u16 rtw_get_capability23a(struct wlan_bssid_ex *bss) +-{ +- u16 val; +- +- memcpy(&val, rtw_get_capability23a_from_ie(bss->IEs), 2); +- +- return le16_to_cpu(val); +-} +- + __le16 *rtw_get_beacon_interval23a_from_ie(u8 *ie) + { + return (__le16 *)(ie + 8); +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index f7ddd6a..d058178 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -4417,7 +4417,7 @@ static void start_create_ibss(struct rtw_adapter* padapter) + update_wireless_mode23a(padapter); + + /* udpate capability */ +- caps = rtw_get_capability23a(pnetwork); ++ caps = pnetwork->capability; + update_capinfo23a(padapter, caps); + if (caps & WLAN_CAPABILITY_IBSS) { /* adhoc master */ + rtl8723a_set_sec_cfg(padapter, 0xcf); +@@ -4472,7 +4472,7 @@ static void start_clnt_join(struct rtw_adapter* padapter) + update_wireless_mode23a(padapter); + + /* udpate capability */ +- caps = rtw_get_capability23a(pnetwork); ++ caps = pnetwork->capability; + update_capinfo23a(padapter, caps); + if (caps & WLAN_CAPABILITY_ESS) { + /* switch channel */ +diff --git a/drivers/staging/rtl8723au/core/rtw_wlan_util.c b/drivers/staging/rtl8723au/core/rtw_wlan_util.c +index 5aaff13..b07c13b 100644 +--- a/drivers/staging/rtl8723au/core/rtw_wlan_util.c ++++ b/drivers/staging/rtl8723au/core/rtw_wlan_util.c +@@ -1083,7 +1083,7 @@ bool is_ap_in_tkip23a(struct rtw_adapter *padapter) + 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 (cur_network->capability & WLAN_CAPABILITY_PRIVACY) { + for (i = bcn_fixed_size; i < pmlmeinfo->network.IELength;) { + p = pmlmeinfo->network.IEs + i; + +@@ -1118,7 +1118,7 @@ bool should_forbid_n_rate23a(struct rtw_adapter * padapter) + 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 (cur_network->capability & WLAN_CAPABILITY_PRIVACY) { + for (i = bcn_fixed_size; i < cur_network->IELength;) { + p = cur_network->IEs + i; + +@@ -1161,7 +1161,7 @@ bool is_ap_in_wep23a(struct rtw_adapter *padapter) + 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 (cur_network->capability & WLAN_CAPABILITY_PRIVACY) { + for (i = bcn_fixed_size; i < pmlmeinfo->network.IELength;) { + p = pmlmeinfo->network.IEs + i; + +diff --git a/drivers/staging/rtl8723au/include/rtw_mlme.h b/drivers/staging/rtl8723au/include/rtw_mlme.h +index bc420ec..039e697 100644 +--- a/drivers/staging/rtl8723au/include/rtw_mlme.h ++++ b/drivers/staging/rtl8723au/include/rtw_mlme.h +@@ -310,7 +310,6 @@ static inline void clr_fwstate_ex(struct mlme_priv *pmlmepriv, int state) + spin_unlock_bh(&pmlmepriv->lock); + } + +-u16 rtw_get_capability23a(struct wlan_bssid_ex *bss); + void rtw_disconnect_hdl23a_under_linked(struct rtw_adapter *adapter, + struct sta_info *psta, u8 free_assoc); + void rtw_generate_random_ibss23a(u8 *pibss); +@@ -349,7 +348,6 @@ int rtw_if_up23a(struct rtw_adapter *padapter); + + int rtw_linked_check(struct rtw_adapter *padapter); + +-__le16 *rtw_get_capability23a_from_ie(u8 *ie); + __le16 *rtw_get_beacon_interval23a_from_ie(u8 *ie); + + diff --git a/debian/patches/features/all/r8723au/0112-staging-rtl8723au-Eliminate-last-rtw_get_beacon_inte.patch b/debian/patches/features/all/r8723au/0112-staging-rtl8723au-Eliminate-last-rtw_get_beacon_inte.patch new file mode 100644 index 000000000..36e085a20 --- /dev/null +++ b/debian/patches/features/all/r8723au/0112-staging-rtl8723au-Eliminate-last-rtw_get_beacon_inte.patch @@ -0,0 +1,99 @@ +From: Jes Sorensen +Date: Thu, 19 Jun 2014 11:37:35 +0200 +Subject: [112/249] staging: rtl8723au: Eliminate last + rtw_get_beacon_interval*() usage +Origin: https://git.kernel.org/linus/0fd90b74cb270d03d5d651a921092e12c9e2b87e + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme.c | 5 ----- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 4 ++-- + drivers/staging/rtl8723au/core/rtw_wlan_util.c | 8 -------- + drivers/staging/rtl8723au/include/rtw_mlme.h | 3 --- + drivers/staging/rtl8723au/include/rtw_mlme_ext.h | 1 - + 5 files changed, 2 insertions(+), 19 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c +index 776068d..9a8c9ff 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c +@@ -312,11 +312,6 @@ void rtw23a_roaming(struct rtw_adapter *padapter, + spin_unlock_bh(&pmlmepriv->lock); + } + +-__le16 *rtw_get_beacon_interval23a_from_ie(u8 *ie) +-{ +- return (__le16 *)(ie + 8); +-} +- + static void rtw_free_network_nolock(struct mlme_priv *pmlmepriv, + struct wlan_network *pnetwork) + { +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index d058178..4047f6d 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -4411,7 +4411,7 @@ static void start_create_ibss(struct rtw_adapter* padapter) + struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; + struct wlan_bssid_ex *pnetwork = &pmlmeinfo->network; + pmlmeext->cur_channel = (u8)pnetwork->DSConfig; +- pmlmeinfo->bcn_interval = get_beacon_interval23a(pnetwork); ++ pmlmeinfo->bcn_interval = pnetwork->beacon_interval; + + /* update wireless mode */ + update_wireless_mode23a(padapter); +@@ -4466,7 +4466,7 @@ static void start_clnt_join(struct rtw_adapter* padapter) + int beacon_timeout; + + pmlmeext->cur_channel = (u8)pnetwork->DSConfig; +- pmlmeinfo->bcn_interval = get_beacon_interval23a(pnetwork); ++ pmlmeinfo->bcn_interval = pnetwork->beacon_interval; + + /* update wireless mode */ + update_wireless_mode23a(padapter); +diff --git a/drivers/staging/rtl8723au/core/rtw_wlan_util.c b/drivers/staging/rtl8723au/core/rtw_wlan_util.c +index b07c13b..dbca440 100644 +--- a/drivers/staging/rtl8723au/core/rtw_wlan_util.c ++++ b/drivers/staging/rtl8723au/core/rtw_wlan_util.c +@@ -399,14 +399,6 @@ inline u8 *get_my_bssid23a(struct wlan_bssid_ex *pnetwork) + return pnetwork->MacAddress; + } + +-u16 get_beacon_interval23a(struct wlan_bssid_ex *bss) +-{ +- unsigned short val; +- memcpy(&val, rtw_get_beacon_interval23a_from_ie(bss->IEs), 2); +- +- return le16_to_cpu(val); +-} +- + bool is_client_associated_to_ap23a(struct rtw_adapter *padapter) + { + struct mlme_ext_priv *pmlmeext; +diff --git a/drivers/staging/rtl8723au/include/rtw_mlme.h b/drivers/staging/rtl8723au/include/rtw_mlme.h +index 039e697..a679545 100644 +--- a/drivers/staging/rtl8723au/include/rtw_mlme.h ++++ b/drivers/staging/rtl8723au/include/rtw_mlme.h +@@ -348,9 +348,6 @@ int rtw_if_up23a(struct rtw_adapter *padapter); + + int rtw_linked_check(struct rtw_adapter *padapter); + +-__le16 *rtw_get_beacon_interval23a_from_ie(u8 *ie); +- +- + void rtw_joinbss_reset23a(struct rtw_adapter *padapter); + + bool rtw_restructure_ht_ie23a(struct rtw_adapter *padapter, u8 *in_ie, +diff --git a/drivers/staging/rtl8723au/include/rtw_mlme_ext.h b/drivers/staging/rtl8723au/include/rtw_mlme_ext.h +index 0219aa1..7fd249f 100644 +--- a/drivers/staging/rtl8723au/include/rtw_mlme_ext.h ++++ b/drivers/staging/rtl8723au/include/rtw_mlme_ext.h +@@ -499,7 +499,6 @@ void update_network23a(struct wlan_bssid_ex *dst, struct wlan_bssid_ex *src, + struct rtw_adapter *padapter, bool update_ie); + + u8 *get_my_bssid23a(struct wlan_bssid_ex *pnetwork); +-u16 get_beacon_interval23a(struct wlan_bssid_ex *bss); + + bool is_client_associated_to_ap23a(struct rtw_adapter *padapter); + bool is_client_associated_to_ibss23a(struct rtw_adapter *padapter); diff --git a/debian/patches/features/all/r8723au/0113-staging-rtl8723au-struct-mlme_priv-wps_beacon_ie-is-.patch b/debian/patches/features/all/r8723au/0113-staging-rtl8723au-struct-mlme_priv-wps_beacon_ie-is-.patch new file mode 100644 index 000000000..2262b578e --- /dev/null +++ b/debian/patches/features/all/r8723au/0113-staging-rtl8723au-struct-mlme_priv-wps_beacon_ie-is-.patch @@ -0,0 +1,153 @@ +From: Jes Sorensen +Date: Sat, 21 Jun 2014 16:50:09 +0200 +Subject: [113/249] staging: rtl8723au: struct mlme_priv->wps_beacon_ie is + never set +Origin: https://git.kernel.org/linus/2331ef89ef249b3e07594252eaec1bf1a483c1f1 + +Remove all code trying to use it + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_ap.c | 54 +-------------------------- + drivers/staging/rtl8723au/core/rtw_mlme.c | 2 - + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 25 ------------- + drivers/staging/rtl8723au/include/rtw_mlme.h | 2 - + 4 files changed, 1 insertion(+), 82 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_ap.c b/drivers/staging/rtl8723au/core/rtw_ap.c +index 2a960b1..8ba346f 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ap.c ++++ b/drivers/staging/rtl8723au/core/rtw_ap.c +@@ -1227,60 +1227,9 @@ static void update_bcn_wmm_ie(struct rtw_adapter *padapter) + + static void update_bcn_wps_ie(struct rtw_adapter *padapter) + { +- const u8 *pwps_ie, *premainder_ie; +- u8 *pwps_ie_src, *pbackup_remainder_ie = NULL; +- uint wps_ielen = 0, wps_offset, remainder_ielen; +- struct mlme_priv *pmlmepriv = &padapter->mlmepriv; +- struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; +- struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; +- struct wlan_bssid_ex *pnetwork = &pmlmeinfo->network; +- unsigned char *ie = pnetwork->IEs; +- u32 ielen = pnetwork->IELength; +- + DBG_8723A("%s\n", __func__); + +- pwps_ie_src = pmlmepriv->wps_beacon_ie; +- if (pwps_ie_src == NULL) +- return; +- +- pwps_ie = cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT, +- WLAN_OUI_TYPE_MICROSOFT_WPS, +- ie + _FIXED_IE_LENGTH_, +- ielen - _FIXED_IE_LENGTH_); +- +- if (pwps_ie == NULL || pwps_ie[1] == 0) +- return; +- +- wps_ielen = pwps_ie[1]; +- wps_offset = (uint)(pwps_ie-ie); +- +- premainder_ie = pwps_ie + wps_ielen; +- +- remainder_ielen = ielen - wps_offset - wps_ielen; +- +- if (remainder_ielen > 0) { +- pbackup_remainder_ie = kmalloc(remainder_ielen, GFP_ATOMIC); +- if (pbackup_remainder_ie) +- memcpy(pbackup_remainder_ie, premainder_ie, +- remainder_ielen); +- } +- +- wps_ielen = (uint)pwps_ie_src[1];/* to get ie data len */ +- if ((wps_offset+wps_ielen+2+remainder_ielen)<= MAX_IE_SZ) +- { +- memcpy(ie + wps_offset, pwps_ie_src, wps_ielen + 2); +- pwps_ie += (wps_ielen+2); +- +- if (pbackup_remainder_ie) +- memcpy(ie + wps_offset + wps_ielen + 2, +- pbackup_remainder_ie, remainder_ielen); +- +- /* update IELength */ +- pnetwork->IELength = wps_offset + (wps_ielen+2) + remainder_ielen; +- } +- +- if (pbackup_remainder_ie) +- kfree(pbackup_remainder_ie); ++ return; + } + + static void update_bcn_p2p_ie(struct rtw_adapter *padapter) +@@ -1966,7 +1915,6 @@ void start_ap_mode23a(struct rtw_adapter *padapter) + for (i = 0; ista_aid[i] = NULL; + +- pmlmepriv->wps_beacon_ie = NULL; + pmlmepriv->wps_probe_resp_ie = NULL; + pmlmepriv->wps_assoc_resp_ie = NULL; + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c +index 9a8c9ff..eefe40a 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c +@@ -87,8 +87,6 @@ void rtw23a_free_mlme_priv_ie_data(struct mlme_priv *pmlmepriv) + #ifdef CONFIG_8723AU_AP_MODE + kfree(pmlmepriv->assoc_req); + kfree(pmlmepriv->assoc_rsp); +- rtw_free_mlme_ie_data(&pmlmepriv->wps_beacon_ie, +- &pmlmepriv->wps_beacon_ie_len); + rtw_free_mlme_ie_data(&pmlmepriv->wps_probe_req_ie, + &pmlmepriv->wps_probe_req_ie_len); + rtw_free_mlme_ie_data(&pmlmepriv->wps_probe_resp_ie, +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index 4047f6d..8590faa 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -1534,31 +1534,6 @@ OnAssocReq23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame) + "Association Request - possible WPS use\n"); + pstat->flags |= WLAN_STA_MAYBE_WPS; + } +- +- /* AP support WPA/RSN, and sta is going to do WPS, but AP +- is not ready */ +- /* that the selected registrar of AP is _FLASE */ +- if (psecuritypriv->wpa_psk > 0 && +- pstat->flags & (WLAN_STA_WPS|WLAN_STA_MAYBE_WPS)) { +- if (pmlmepriv->wps_beacon_ie) { +- u8 selected_registrar = 0; +- +- rtw_get_wps_attr_content23a( +- pmlmepriv->wps_beacon_ie, +- pmlmepriv->wps_beacon_ie_len, +- WPS_ATTR_SELECTED_REGISTRAR, +- &selected_registrar, NULL); +- +- if (!selected_registrar) { +- DBG_8723A("selected_registrar is false," +- "or AP is not ready to do " +- "WPS\n"); +- +- status = WLAN_STATUS_AP_UNABLE_TO_HANDLE_NEW_STA; +- goto OnAssocReq23aFail; +- } +- } +- } + } else { + int copy_len; + +diff --git a/drivers/staging/rtl8723au/include/rtw_mlme.h b/drivers/staging/rtl8723au/include/rtw_mlme.h +index a679545..6dccfb0 100644 +--- a/drivers/staging/rtl8723au/include/rtw_mlme.h ++++ b/drivers/staging/rtl8723au/include/rtw_mlme.h +@@ -167,8 +167,6 @@ struct mlme_priv { + u8 *wps_assoc_resp_ie; + u8 *wps_probe_resp_ie; + u32 wps_probe_resp_ie_len; +- u8 *wps_beacon_ie; +- u32 wps_beacon_ie_len; + u32 p2p_go_probe_resp_ie_len; /* for GO */ + u32 p2p_assoc_req_ie_len; + u8 *p2p_beacon_ie; diff --git a/debian/patches/features/all/r8723au/0114-staging-rtl8723au-Remove-unused-mlme_priv-wps_assoc_.patch b/debian/patches/features/all/r8723au/0114-staging-rtl8723au-Remove-unused-mlme_priv-wps_assoc_.patch new file mode 100644 index 000000000..3f76e9d25 --- /dev/null +++ b/debian/patches/features/all/r8723au/0114-staging-rtl8723au-Remove-unused-mlme_priv-wps_assoc_.patch @@ -0,0 +1,74 @@ +From: Jes Sorensen +Date: Sat, 21 Jun 2014 16:50:10 +0200 +Subject: [114/249] staging: rtl8723au: Remove unused + mlme_priv->wps_assoc_resp_ie and friends +Origin: https://git.kernel.org/linus/302b1cd631cf495731194d15d69d670b5843ea20 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_ap.c | 1 - + drivers/staging/rtl8723au/core/rtw_mlme.c | 2 -- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 10 ---------- + drivers/staging/rtl8723au/include/rtw_mlme.h | 2 -- + 4 files changed, 15 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_ap.c b/drivers/staging/rtl8723au/core/rtw_ap.c +index 8ba346f..76e2357 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ap.c ++++ b/drivers/staging/rtl8723au/core/rtw_ap.c +@@ -1916,7 +1916,6 @@ void start_ap_mode23a(struct rtw_adapter *padapter) + pstapriv->sta_aid[i] = NULL; + + pmlmepriv->wps_probe_resp_ie = NULL; +- pmlmepriv->wps_assoc_resp_ie = NULL; + + pmlmepriv->p2p_beacon_ie = NULL; + pmlmepriv->p2p_probe_resp_ie = NULL; +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c +index eefe40a..c873cb3 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c +@@ -91,8 +91,6 @@ void rtw23a_free_mlme_priv_ie_data(struct mlme_priv *pmlmepriv) + &pmlmepriv->wps_probe_req_ie_len); + rtw_free_mlme_ie_data(&pmlmepriv->wps_probe_resp_ie, + &pmlmepriv->wps_probe_resp_ie_len); +- rtw_free_mlme_ie_data(&pmlmepriv->wps_assoc_resp_ie, +- &pmlmepriv->wps_assoc_resp_ie_len); + + rtw_free_mlme_ie_data(&pmlmepriv->p2p_beacon_ie, + &pmlmepriv->p2p_beacon_ie_len); +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index 8590faa..d995bec 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -3137,16 +3137,6 @@ static void issue_assocrsp(struct rtw_adapter *padapter, unsigned short status, + REALTEK_96B_IE, &pattrib->pktlen); + } + +- /* add WPS IE ie for wps 2.0 */ +- if (pmlmepriv->wps_assoc_resp_ie && +- pmlmepriv->wps_assoc_resp_ie_len > 0) { +- memcpy(pframe, pmlmepriv->wps_assoc_resp_ie, +- pmlmepriv->wps_assoc_resp_ie_len); +- +- pframe += pmlmepriv->wps_assoc_resp_ie_len; +- pattrib->pktlen += pmlmepriv->wps_assoc_resp_ie_len; +- } +- + pattrib->last_txcmdsz = pattrib->pktlen; + + dump_mgntframe23a(padapter, pmgntframe); +diff --git a/drivers/staging/rtl8723au/include/rtw_mlme.h b/drivers/staging/rtl8723au/include/rtw_mlme.h +index 6dccfb0..c45a9f0 100644 +--- a/drivers/staging/rtl8723au/include/rtw_mlme.h ++++ b/drivers/staging/rtl8723au/include/rtw_mlme.h +@@ -163,8 +163,6 @@ struct mlme_priv { + u32 assoc_req_len; + u32 assoc_rsp_len; + u8 *assoc_rsp; +- u32 wps_assoc_resp_ie_len; +- u8 *wps_assoc_resp_ie; + u8 *wps_probe_resp_ie; + u32 wps_probe_resp_ie_len; + u32 p2p_go_probe_resp_ie_len; /* for GO */ diff --git a/debian/patches/features/all/r8723au/0115-staging-rtl8723au-Remove-unused-struct-mlme_priv-wps.patch b/debian/patches/features/all/r8723au/0115-staging-rtl8723au-Remove-unused-struct-mlme_priv-wps.patch new file mode 100644 index 000000000..5685fe364 --- /dev/null +++ b/debian/patches/features/all/r8723au/0115-staging-rtl8723au-Remove-unused-struct-mlme_priv-wps.patch @@ -0,0 +1,119 @@ +From: Jes Sorensen +Date: Sat, 21 Jun 2014 16:50:11 +0200 +Subject: [115/249] staging: rtl8723au: Remove unused struct + mlme_priv->wps_probe_resp_ie +Origin: https://git.kernel.org/linus/86bbac609dc6ebf51982506ac14aab091456b92d + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_ap.c | 2 -- + drivers/staging/rtl8723au/core/rtw_mlme.c | 2 -- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 42 ++------------------------- + drivers/staging/rtl8723au/include/rtw_mlme.h | 2 -- + 4 files changed, 3 insertions(+), 45 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_ap.c b/drivers/staging/rtl8723au/core/rtw_ap.c +index 76e2357..753a0fe 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ap.c ++++ b/drivers/staging/rtl8723au/core/rtw_ap.c +@@ -1915,8 +1915,6 @@ void start_ap_mode23a(struct rtw_adapter *padapter) + for (i = 0; ista_aid[i] = NULL; + +- pmlmepriv->wps_probe_resp_ie = NULL; +- + pmlmepriv->p2p_beacon_ie = NULL; + pmlmepriv->p2p_probe_resp_ie = NULL; + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c +index c873cb3..0653f95 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c +@@ -89,8 +89,6 @@ void rtw23a_free_mlme_priv_ie_data(struct mlme_priv *pmlmepriv) + kfree(pmlmepriv->assoc_rsp); + rtw_free_mlme_ie_data(&pmlmepriv->wps_probe_req_ie, + &pmlmepriv->wps_probe_req_ie_len); +- rtw_free_mlme_ie_data(&pmlmepriv->wps_probe_resp_ie, +- &pmlmepriv->wps_probe_resp_ie_len); + + rtw_free_mlme_ie_data(&pmlmepriv->p2p_beacon_ie, + &pmlmepriv->p2p_beacon_ie_len); +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index d995bec..d1c40ae 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -2524,13 +2524,11 @@ static void issue_probersp(struct rtw_adapter *padapter, unsigned char *da, + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + #ifdef CONFIG_8723AU_AP_MODE + const u8 *pwps_ie; +- uint wps_ielen; + u8 *ssid_ie; + int ssid_ielen; + int ssid_ielen_diff; + u8 buf[MAX_IE_SZ]; + u8 *ies; +- struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + #endif + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; +@@ -2594,43 +2592,9 @@ static void issue_probersp(struct rtw_adapter *padapter, unsigned char *da, + cur_network->IELength - + _FIXED_IE_LENGTH_); + +- /* inerset & update wps_probe_resp_ie */ +- if (pmlmepriv->wps_probe_resp_ie && pwps_ie && pwps_ie[1] > 0) { +- uint wps_offset, remainder_ielen; +- const u8 *premainder_ie; +- +- wps_ielen = pwps_ie[1]; +- wps_offset = (uint)(pwps_ie - cur_network->IEs); +- +- premainder_ie = pwps_ie + wps_ielen; +- +- remainder_ielen = cur_network->IELength - wps_offset - +- wps_ielen; +- +- memcpy(pframe, cur_network->IEs, wps_offset); +- pframe += wps_offset; +- pattrib->pktlen += wps_offset; +- +- /* to get ie data len */ +- wps_ielen = (uint)pmlmepriv->wps_probe_resp_ie[1]; +- if (wps_offset + wps_ielen + 2 <= MAX_IE_SZ) { +- memcpy(pframe, pmlmepriv->wps_probe_resp_ie, +- wps_ielen+2); +- pframe += wps_ielen+2; +- pattrib->pktlen += wps_ielen+2; +- } +- +- if (wps_offset + wps_ielen + 2 + remainder_ielen <= +- MAX_IE_SZ) { +- memcpy(pframe, premainder_ie, remainder_ielen); +- pframe += remainder_ielen; +- pattrib->pktlen += remainder_ielen; +- } +- } else { +- memcpy(pframe, cur_network->IEs, cur_network->IELength); +- pframe += cur_network->IELength; +- pattrib->pktlen += cur_network->IELength; +- } ++ memcpy(pframe, cur_network->IEs, cur_network->IELength); ++ pframe += cur_network->IELength; ++ pattrib->pktlen += cur_network->IELength; + + /* retrieve SSID IE from cur_network->Ssid */ + ies = pmgntframe->buf_addr + TXDESC_OFFSET + +diff --git a/drivers/staging/rtl8723au/include/rtw_mlme.h b/drivers/staging/rtl8723au/include/rtw_mlme.h +index c45a9f0..ef70e4a 100644 +--- a/drivers/staging/rtl8723au/include/rtw_mlme.h ++++ b/drivers/staging/rtl8723au/include/rtw_mlme.h +@@ -163,8 +163,6 @@ struct mlme_priv { + u32 assoc_req_len; + u32 assoc_rsp_len; + u8 *assoc_rsp; +- u8 *wps_probe_resp_ie; +- u32 wps_probe_resp_ie_len; + u32 p2p_go_probe_resp_ie_len; /* for GO */ + u32 p2p_assoc_req_ie_len; + u8 *p2p_beacon_ie; diff --git a/debian/patches/features/all/r8723au/0116-staging-rtl8723au-Remove-obsolete-mlme_priv-p2p_-ent.patch b/debian/patches/features/all/r8723au/0116-staging-rtl8723au-Remove-obsolete-mlme_priv-p2p_-ent.patch new file mode 100644 index 000000000..ddc9152ff --- /dev/null +++ b/debian/patches/features/all/r8723au/0116-staging-rtl8723au-Remove-obsolete-mlme_priv-p2p_-ent.patch @@ -0,0 +1,71 @@ +From: Jes Sorensen +Date: Sat, 21 Jun 2014 16:50:12 +0200 +Subject: [116/249] staging: rtl8723au: Remove obsolete mlme_priv->p2p_* + entries +Origin: https://git.kernel.org/linus/a8607ffcf2783662eb757477d3a7493d0f087ed2 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_ap.c | 3 --- + drivers/staging/rtl8723au/core/rtw_mlme.c | 11 ----------- + drivers/staging/rtl8723au/include/rtw_mlme.h | 10 ---------- + 3 files changed, 24 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_ap.c b/drivers/staging/rtl8723au/core/rtw_ap.c +index 753a0fe..7f1c687 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ap.c ++++ b/drivers/staging/rtl8723au/core/rtw_ap.c +@@ -1915,9 +1915,6 @@ void start_ap_mode23a(struct rtw_adapter *padapter) + for (i = 0; ista_aid[i] = NULL; + +- pmlmepriv->p2p_beacon_ie = NULL; +- pmlmepriv->p2p_probe_resp_ie = NULL; +- + /* for ACL */ + INIT_LIST_HEAD(&pacl_list->acl_node_q.queue); + pacl_list->num = 0; +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c +index 0653f95..f9ead3e 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c +@@ -90,17 +90,6 @@ void rtw23a_free_mlme_priv_ie_data(struct mlme_priv *pmlmepriv) + rtw_free_mlme_ie_data(&pmlmepriv->wps_probe_req_ie, + &pmlmepriv->wps_probe_req_ie_len); + +- rtw_free_mlme_ie_data(&pmlmepriv->p2p_beacon_ie, +- &pmlmepriv->p2p_beacon_ie_len); +- rtw_free_mlme_ie_data(&pmlmepriv->p2p_probe_req_ie, +- &pmlmepriv->p2p_probe_req_ie_len); +- rtw_free_mlme_ie_data(&pmlmepriv->p2p_probe_resp_ie, +- &pmlmepriv->p2p_probe_resp_ie_len); +- rtw_free_mlme_ie_data(&pmlmepriv->p2p_go_probe_resp_ie, +- &pmlmepriv->p2p_go_probe_resp_ie_len); +- rtw_free_mlme_ie_data(&pmlmepriv->p2p_assoc_req_ie, +- &pmlmepriv->p2p_assoc_req_ie_len); +- + rtw_free_mlme_ie_data(&pmlmepriv->wfd_beacon_ie, + &pmlmepriv->wfd_beacon_ie_len); + rtw_free_mlme_ie_data(&pmlmepriv->wfd_probe_req_ie, +diff --git a/drivers/staging/rtl8723au/include/rtw_mlme.h b/drivers/staging/rtl8723au/include/rtw_mlme.h +index ef70e4a..be60998 100644 +--- a/drivers/staging/rtl8723au/include/rtw_mlme.h ++++ b/drivers/staging/rtl8723au/include/rtw_mlme.h +@@ -163,16 +163,6 @@ struct mlme_priv { + u32 assoc_req_len; + u32 assoc_rsp_len; + u8 *assoc_rsp; +- u32 p2p_go_probe_resp_ie_len; /* for GO */ +- u32 p2p_assoc_req_ie_len; +- u8 *p2p_beacon_ie; +- u8 *p2p_probe_req_ie; +- u8 *p2p_probe_resp_ie; +- u8 *p2p_go_probe_resp_ie; /* for GO */ +- u8 *p2p_assoc_req_ie; +- u32 p2p_beacon_ie_len; +- u32 p2p_probe_req_ie_len; +- u32 p2p_probe_resp_ie_len; + u8 *wfd_assoc_req_ie; + u32 wfd_assoc_req_ie_len; + diff --git a/debian/patches/features/all/r8723au/0117-staging-rtl8723au-Remove-unused-struct-mlme_priv-wfd.patch b/debian/patches/features/all/r8723au/0117-staging-rtl8723au-Remove-unused-struct-mlme_priv-wfd.patch new file mode 100644 index 000000000..06c65916b --- /dev/null +++ b/debian/patches/features/all/r8723au/0117-staging-rtl8723au-Remove-unused-struct-mlme_priv-wfd.patch @@ -0,0 +1,78 @@ +From: Jes Sorensen +Date: Sat, 21 Jun 2014 16:50:13 +0200 +Subject: [117/249] staging: rtl8723au: Remove unused struct mlme_priv->wfd_* + entries +Origin: https://git.kernel.org/linus/d4fc0213dd9a72611af586d2d6134807951111b2 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_ap.c | 1 - + drivers/staging/rtl8723au/core/rtw_mlme.c | 11 ----------- + drivers/staging/rtl8723au/include/rtw_mlme.h | 12 ------------ + 3 files changed, 24 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_ap.c b/drivers/staging/rtl8723au/core/rtw_ap.c +index 7f1c687..18c9b30 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ap.c ++++ b/drivers/staging/rtl8723au/core/rtw_ap.c +@@ -24,7 +24,6 @@ + extern unsigned char WMM_OUI23A[]; + extern unsigned char WPS_OUI23A[]; + extern unsigned char P2P_OUI23A[]; +-extern unsigned char WFD_OUI23A[]; + + void init_mlme_ap_info23a(struct rtw_adapter *padapter) + { +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c +index f9ead3e..77714fe 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c +@@ -89,17 +89,6 @@ void rtw23a_free_mlme_priv_ie_data(struct mlme_priv *pmlmepriv) + kfree(pmlmepriv->assoc_rsp); + rtw_free_mlme_ie_data(&pmlmepriv->wps_probe_req_ie, + &pmlmepriv->wps_probe_req_ie_len); +- +- rtw_free_mlme_ie_data(&pmlmepriv->wfd_beacon_ie, +- &pmlmepriv->wfd_beacon_ie_len); +- rtw_free_mlme_ie_data(&pmlmepriv->wfd_probe_req_ie, +- &pmlmepriv->wfd_probe_req_ie_len); +- rtw_free_mlme_ie_data(&pmlmepriv->wfd_probe_resp_ie, +- &pmlmepriv->wfd_probe_resp_ie_len); +- rtw_free_mlme_ie_data(&pmlmepriv->wfd_go_probe_resp_ie, +- &pmlmepriv->wfd_go_probe_resp_ie_len); +- rtw_free_mlme_ie_data(&pmlmepriv->wfd_assoc_req_ie, +- &pmlmepriv->wfd_assoc_req_ie_len); + #endif + } + +diff --git a/drivers/staging/rtl8723au/include/rtw_mlme.h b/drivers/staging/rtl8723au/include/rtw_mlme.h +index be60998..277d90b 100644 +--- a/drivers/staging/rtl8723au/include/rtw_mlme.h ++++ b/drivers/staging/rtl8723au/include/rtw_mlme.h +@@ -163,8 +163,6 @@ struct mlme_priv { + u32 assoc_req_len; + u32 assoc_rsp_len; + u8 *assoc_rsp; +- u8 *wfd_assoc_req_ie; +- u32 wfd_assoc_req_ie_len; + + #ifdef CONFIG_8723AU_AP_MODE + /* Number of associated Non-ERP stations (i.e., stations using 802.11b +@@ -197,16 +195,6 @@ struct mlme_priv { + u8 update_bcn; + + #endif /* ifdef CONFIG_8723AU_AP_MODE */ +- +- u8 *wfd_beacon_ie; +- u8 *wfd_probe_req_ie; +- u8 *wfd_probe_resp_ie; +- u8 *wfd_go_probe_resp_ie; /* for GO */ +- +- u32 wfd_beacon_ie_len; +- u32 wfd_probe_req_ie_len; +- u32 wfd_probe_resp_ie_len; +- u32 wfd_go_probe_resp_ie_len; /* for GO */ + }; + + void rtw_joinbss_event_prehandle23a(struct rtw_adapter *adapter, u8 *pbuf); diff --git a/debian/patches/features/all/r8723au/0118-staging-rtl8723au-Remove-write-only-struct-security_.patch b/debian/patches/features/all/r8723au/0118-staging-rtl8723au-Remove-write-only-struct-security_.patch new file mode 100644 index 000000000..cfd7f5fad --- /dev/null +++ b/debian/patches/features/all/r8723au/0118-staging-rtl8723au-Remove-write-only-struct-security_.patch @@ -0,0 +1,56 @@ +From: Jes Sorensen +Date: Sat, 21 Jun 2014 16:50:14 +0200 +Subject: [118/249] staging: rtl8723au: Remove write-only struct + security_priv->authenticator_ie +Origin: https://git.kernel.org/linus/2bd3b4fb370be0ad529975273399ccb60968a266 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_cmd.c | 13 ------------- + drivers/staging/rtl8723au/include/rtw_security.h | 1 - + 2 files changed, 14 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_cmd.c b/drivers/staging/rtl8723au/core/rtw_cmd.c +index 1696cb8..35f879e 100644 +--- a/drivers/staging/rtl8723au/core/rtw_cmd.c ++++ b/drivers/staging/rtl8723au/core/rtw_cmd.c +@@ -464,7 +464,6 @@ exit: + int rtw_joinbss_cmd23a(struct rtw_adapter *padapter, + struct wlan_network *pnetwork) + { +- u8 *auth; + int res = _SUCCESS; + struct wlan_bssid_ex *psecnetwork; + struct cmd_obj *pcmd; +@@ -532,18 +531,6 @@ int rtw_joinbss_cmd23a(struct rtw_adapter *padapter, + memcpy(psecnetwork, &pnetwork->network, + get_wlan_bssid_ex_sz(&pnetwork->network)); + +- auth = &psecuritypriv->authenticator_ie[0]; +- psecuritypriv->authenticator_ie[0] = +- (unsigned char)psecnetwork->IELength; +- +- if ((psecnetwork->IELength-12) < (256-1)) { +- memcpy(&psecuritypriv->authenticator_ie[1], +- &psecnetwork->IEs[12], psecnetwork->IELength - 12); +- } else { +- memcpy(&psecuritypriv->authenticator_ie[1], +- &psecnetwork->IEs[12], 256 - 1); +- } +- + psecnetwork->IELength = 0; + /* Added by Albert 2009/02/18 */ + /* If the the driver wants to use the bssid to create the +diff --git a/drivers/staging/rtl8723au/include/rtw_security.h b/drivers/staging/rtl8723au/include/rtw_security.h +index 8b84333..8ed7b2f 100644 +--- a/drivers/staging/rtl8723au/include/rtw_security.h ++++ b/drivers/staging/rtl8723au/include/rtw_security.h +@@ -145,7 +145,6 @@ struct security_priv { + u8 assoc_info[600]; + u8 szofcapability[256]; /* for wpa2 usage */ + u8 oidassociation[512]; /* for wpa/wpa2 usage */ +- u8 authenticator_ie[256]; /* store ap security information element */ + u8 supplicant_ie[256]; /* store sta security information element */ + + /* for tkip countermeasure */ diff --git a/debian/patches/features/all/r8723au/0119-staging-rtl8723au-Remove-hopefully-last-duplicate-de.patch b/debian/patches/features/all/r8723au/0119-staging-rtl8723au-Remove-hopefully-last-duplicate-de.patch new file mode 100644 index 000000000..f620c5475 --- /dev/null +++ b/debian/patches/features/all/r8723au/0119-staging-rtl8723au-Remove-hopefully-last-duplicate-de.patch @@ -0,0 +1,74 @@ +From: Jes Sorensen +Date: Sat, 21 Jun 2014 16:50:15 +0200 +Subject: [119/249] staging: rtl8723au: Remove (hopefully) last duplicate + define of WLAN_EID_RSN +Origin: https://git.kernel.org/linus/a131aac3b67df908f185402cabbfcb38b891df43 + +So much for thinking the removal of the previous 217 duplicate copies +would suffice .... + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_ieee80211.c | 2 +- + drivers/staging/rtl8723au/core/rtw_mlme.c | 6 +++--- + drivers/staging/rtl8723au/include/rtw_security.h | 2 -- + 3 files changed, 4 insertions(+), 6 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_ieee80211.c b/drivers/staging/rtl8723au/core/rtw_ieee80211.c +index f2c4a0e..efad6f8 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ieee80211.c ++++ b/drivers/staging/rtl8723au/core/rtw_ieee80211.c +@@ -547,7 +547,7 @@ int rtw_parse_wpa2_ie23a(const u8* rsn_ie, int rsn_ie_len, int *group_cipher, + return _FAIL; + } + +- if (*rsn_ie != _WPA2_IE_ID_ || *(rsn_ie+1) != (u8)(rsn_ie_len - 2)) { ++ if (*rsn_ie != WLAN_EID_RSN || *(rsn_ie+1) != (u8)(rsn_ie_len - 2)) { + return _FAIL; + } + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c +index 77714fe..fc84831 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c +@@ -2031,7 +2031,7 @@ int rtw_restruct_sec_ie23a(struct rtw_adapter *adapter, u8 *in_ie, u8 *out_ie, + authmode = WLAN_EID_VENDOR_SPECIFIC; + if (ndisauthmode == Ndis802_11AuthModeWPA2 || + ndisauthmode == Ndis802_11AuthModeWPA2PSK) +- authmode = _WPA2_IE_ID_; ++ authmode = WLAN_EID_RSN; + + if (check_fwstate(pmlmepriv, WIFI_UNDER_WPS)) { + memcpy(out_ie + ielength, psecuritypriv->wps_ie, +@@ -2039,7 +2039,7 @@ int rtw_restruct_sec_ie23a(struct rtw_adapter *adapter, u8 *in_ie, u8 *out_ie, + + ielength += psecuritypriv->wps_ie_len; + } else if (authmode == WLAN_EID_VENDOR_SPECIFIC || +- authmode == _WPA2_IE_ID_) { ++ authmode == WLAN_EID_RSN) { + /* copy RSN or SSN */ + memcpy(&out_ie[ielength], &psecuritypriv->supplicant_ie[0], + psecuritypriv->supplicant_ie[1] + 2); +@@ -2050,7 +2050,7 @@ int rtw_restruct_sec_ie23a(struct rtw_adapter *adapter, u8 *in_ie, u8 *out_ie, + if (iEntry < 0) + return ielength; + else { +- if (authmode == _WPA2_IE_ID_) ++ if (authmode == WLAN_EID_RSN) + ielength = rtw_append_pmkid(adapter, iEntry, + out_ie, ielength); + } +diff --git a/drivers/staging/rtl8723au/include/rtw_security.h b/drivers/staging/rtl8723au/include/rtw_security.h +index 8ed7b2f..624a9d7 100644 +--- a/drivers/staging/rtl8723au/include/rtw_security.h ++++ b/drivers/staging/rtl8723au/include/rtw_security.h +@@ -23,8 +23,6 @@ + #define is_wep_enc(alg) (alg == WLAN_CIPHER_SUITE_WEP40 || \ + alg == WLAN_CIPHER_SUITE_WEP104) + +-#define _WPA2_IE_ID_ 0x30 +- + #define SHA256_MAC_LEN 32 + #define AES_BLOCK_SIZE 16 + #define AES_PRIV_SIZE (4 * 44) diff --git a/debian/patches/features/all/r8723au/0120-staging-rtl8723au-rtw_survey_event_cb23a-Remember-to.patch b/debian/patches/features/all/r8723au/0120-staging-rtl8723au-rtw_survey_event_cb23a-Remember-to.patch new file mode 100644 index 000000000..f0a8144d3 --- /dev/null +++ b/debian/patches/features/all/r8723au/0120-staging-rtl8723au-rtw_survey_event_cb23a-Remember-to.patch @@ -0,0 +1,45 @@ +From: Jes Sorensen +Date: Sat, 21 Jun 2014 16:50:16 +0200 +Subject: [120/249] staging: rtl8723au: rtw_survey_event_cb23a(): Remember to + clone beacon data +Origin: https://git.kernel.org/linus/eb4f07bf859d412bf4662e65d4ed2fc06994f87b + +We need to clone all the beacon information, not just the IE data, in +particular as the long term goal is to stop carrying this information +in the IE data. + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme.c | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c +index fc84831..c91ea8c 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c +@@ -621,6 +621,11 @@ void rtw_survey_event_cb23a(struct rtw_adapter *adapter, const u8 *pbuf) + + memcpy(pmlmepriv->cur_network.network.IEs, + pnetwork->IEs, 8); ++ pmlmepriv->cur_network.network.beacon_interval = ++ pnetwork->beacon_interval; ++ pmlmepriv->cur_network.network.capability = ++ pnetwork->capability; ++ pmlmepriv->cur_network.network.tsf = pnetwork->tsf; + spin_lock_bh(&pmlmepriv->scanned_queue.lock); + ibss_wlan = rtw_find_network23a( + &pmlmepriv->scanned_queue, +@@ -628,6 +633,12 @@ void rtw_survey_event_cb23a(struct rtw_adapter *adapter, const u8 *pbuf) + if (ibss_wlan) { + memcpy(ibss_wlan->network.IEs, + pnetwork->IEs, 8); ++ pmlmepriv->cur_network.network.beacon_interval = ++ ibss_wlan->network.beacon_interval; ++ pmlmepriv->cur_network.network.capability = ++ ibss_wlan->network.capability; ++ pmlmepriv->cur_network.network.tsf = ++ ibss_wlan->network.tsf; + spin_unlock_bh(&pmlmepriv->scanned_queue.lock); + goto exit; + } diff --git a/debian/patches/features/all/r8723au/0121-staging-rtl8723au-rtw_joinbss_update_network23a-upda.patch b/debian/patches/features/all/r8723au/0121-staging-rtl8723au-rtw_joinbss_update_network23a-upda.patch new file mode 100644 index 000000000..0b6a71f40 --- /dev/null +++ b/debian/patches/features/all/r8723au/0121-staging-rtl8723au-rtw_joinbss_update_network23a-upda.patch @@ -0,0 +1,30 @@ +From: Jes Sorensen +Date: Sat, 21 Jun 2014 16:50:17 +0200 +Subject: [121/249] staging: rtl8723au: rtw_joinbss_update_network23a(): update + beacon info as well +Origin: https://git.kernel.org/linus/2bde0527538802d38b1bed939aefde999600c1ca + +We need to copy over the beacon info (interval, capability, tsf) as +well as the IE data. + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c +index c91ea8c..b7a3528 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c +@@ -1035,6 +1035,10 @@ rtw_joinbss_update_network23a(struct rtw_adapter *padapter, + memcpy(&cur_network->network.IEs[0], &ptarget_wlan->network.IEs[0], + MAX_IE_SZ); + ++ cur_network->network.capability = ptarget_wlan->network.capability; ++ cur_network->network.beacon_interval = ++ ptarget_wlan->network.beacon_interval; ++ cur_network->network.tsf = ptarget_wlan->network.tsf; + cur_network->aid = pnetwork->join_res; + + rtw_set_signal_stat_timer(&padapter->recvpriv); diff --git a/debian/patches/features/all/r8723au/0122-staging-rtl8723au-issue_probersp-Don-t-insert-beacon.patch b/debian/patches/features/all/r8723au/0122-staging-rtl8723au-issue_probersp-Don-t-insert-beacon.patch new file mode 100644 index 000000000..6383907c6 --- /dev/null +++ b/debian/patches/features/all/r8723au/0122-staging-rtl8723au-issue_probersp-Don-t-insert-beacon.patch @@ -0,0 +1,29 @@ +From: Jes Sorensen +Date: Sat, 21 Jun 2014 16:50:18 +0200 +Subject: [122/249] staging: rtl8723au: issue_probersp(): Don't insert beacon + data twice +Origin: https://git.kernel.org/linus/d642a0a0b91d220f3c44bba84e54f8983b781fde + +In case of AP mode, we were inserting the beacon data twice in the +probe_resp frame, leading to a corrupted on the wire frame. + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index d1c40ae..4f9e5a9 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -2592,7 +2592,8 @@ static void issue_probersp(struct rtw_adapter *padapter, unsigned char *da, + cur_network->IELength - + _FIXED_IE_LENGTH_); + +- memcpy(pframe, cur_network->IEs, cur_network->IELength); ++ memcpy(pframe, cur_network->IEs + _FIXED_IE_LENGTH_, ++ cur_network->IELength - _FIXED_IE_LENGTH_); + pframe += cur_network->IELength; + pattrib->pktlen += cur_network->IELength; + diff --git a/debian/patches/features/all/r8723au/0123-staging-rtl8723au-issue_probersp-No-need-to-calculat.patch b/debian/patches/features/all/r8723au/0123-staging-rtl8723au-issue_probersp-No-need-to-calculat.patch new file mode 100644 index 000000000..d2b889317 --- /dev/null +++ b/debian/patches/features/all/r8723au/0123-staging-rtl8723au-issue_probersp-No-need-to-calculat.patch @@ -0,0 +1,40 @@ +From: Jes Sorensen +Date: Sat, 21 Jun 2014 16:50:19 +0200 +Subject: [123/249] staging: rtl8723au: issue_probersp(): No need to calculate + location of IEs, we know where they are +Origin: https://git.kernel.org/linus/ad8686bc05adc2b8301d749f5958bd904f3a46ee + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 9 +++------ + 1 file changed, 3 insertions(+), 6 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index 4f9e5a9..03ced01 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -2528,7 +2528,6 @@ static void issue_probersp(struct rtw_adapter *padapter, unsigned char *da, + int ssid_ielen; + int ssid_ielen_diff; + u8 buf[MAX_IE_SZ]; +- u8 *ies; + #endif + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; +@@ -2598,12 +2597,10 @@ static void issue_probersp(struct rtw_adapter *padapter, unsigned char *da, + pattrib->pktlen += cur_network->IELength; + + /* retrieve SSID IE from cur_network->Ssid */ +- ies = pmgntframe->buf_addr + TXDESC_OFFSET + +- sizeof(struct ieee80211_hdr_3addr); + +- ssid_ie = rtw_get_ie23a(ies + _FIXED_IE_LENGTH_, WLAN_EID_SSID, +- &ssid_ielen, +- pframe - ies - _FIXED_IE_LENGTH_); ++ ssid_ie = rtw_get_ie23a(mgmt->u.probe_resp.variable, ++ WLAN_EID_SSID, &ssid_ielen, ++ pframe - mgmt->u.probe_resp.variable); + + ssid_ielen_diff = cur_network->Ssid.ssid_len - ssid_ielen; + diff --git a/debian/patches/features/all/r8723au/0124-staging-rtl8723au-Remove-unused-size-defines-for-mgm.patch b/debian/patches/features/all/r8723au/0124-staging-rtl8723au-Remove-unused-size-defines-for-mgm.patch new file mode 100644 index 000000000..f2361fe40 --- /dev/null +++ b/debian/patches/features/all/r8723au/0124-staging-rtl8723au-Remove-unused-size-defines-for-mgm.patch @@ -0,0 +1,36 @@ +From: Jes Sorensen +Date: Tue, 24 Jun 2014 15:03:16 +0200 +Subject: [124/249] staging: rtl8723au: Remove unused size defines for mgmt + frame elements +Origin: https://git.kernel.org/linus/40954b63859f373ad83454a2598bc8d251973a34 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/include/wifi.h | 13 ------------- + 1 file changed, 13 deletions(-) + +diff --git a/drivers/staging/rtl8723au/include/wifi.h b/drivers/staging/rtl8723au/include/wifi.h +index 3f64546..bd581ec 100644 +--- a/drivers/staging/rtl8723au/include/wifi.h ++++ b/drivers/staging/rtl8723au/include/wifi.h +@@ -38,19 +38,6 @@ + + #define EID_BSSIntolerantChlReport 73 + +-/* --------------------------------------------------------------------------- +- Below is the fixed elements... +------------------------------------------------------------------------------*/ +-#define _AUTH_ALGM_NUM_ 2 +-#define _AUTH_SEQ_NUM_ 2 +-#define _BEACON_ITERVAL_ 2 +-#define _CAPABILITY_ 2 +-#define _CURRENT_APADDR_ 6 +-#define _LISTEN_INTERVAL_ 2 +-#define _ASOC_ID_ 2 +-#define _STATUS_CODE_ 2 +-#define _TIMESTAMP_ 8 +- + /*----------------------------------------------------------------------------- + Below is the definition for 802.11n + ------------------------------------------------------------------------------*/ diff --git a/debian/patches/features/all/r8723au/0125-staging-rtl8723au-Remove-usage-of-_-RE-ASOCREQ_IE_OF.patch b/debian/patches/features/all/r8723au/0125-staging-rtl8723au-Remove-usage-of-_-RE-ASOCREQ_IE_OF.patch new file mode 100644 index 000000000..15008d030 --- /dev/null +++ b/debian/patches/features/all/r8723au/0125-staging-rtl8723au-Remove-usage-of-_-RE-ASOCREQ_IE_OF.patch @@ -0,0 +1,40 @@ +From: Jes Sorensen +Date: Tue, 24 Jun 2014 15:03:17 +0200 +Subject: [125/249] staging: rtl8723au: Remove usage of _{RE, + }ASOCREQ_IE_OFFSET_ +Origin: https://git.kernel.org/linus/60e78f3df4f5b9bc3fd61755fd00e69c4923ac1d + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 12 +++++++----- + 1 file changed, 7 insertions(+), 5 deletions(-) + +diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +index 6c06d57..ebb98a0 100644 +--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c ++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +@@ -2535,16 +2535,18 @@ void rtw_cfg80211_indicate_sta_assoc(struct rtw_adapter *padapter, + { + struct station_info sinfo; + u8 ie_offset; ++ + if (ieee80211_is_assoc_req(hdr->frame_control)) +- ie_offset = _ASOCREQ_IE_OFFSET_; ++ ie_offset = offsetof(struct ieee80211_mgmt, ++ u.assoc_req.variable); + else /* WIFI_REASSOCREQ */ +- ie_offset = _REASOCREQ_IE_OFFSET_; ++ ie_offset = offsetof(struct ieee80211_mgmt, ++ u.reassoc_req.variable); + + sinfo.filled = 0; + sinfo.filled = STATION_INFO_ASSOC_REQ_IES; +- sinfo.assoc_req_ies = pmgmt_frame + WLAN_HDR_A3_LEN + ie_offset; +- sinfo.assoc_req_ies_len = +- frame_len - WLAN_HDR_A3_LEN - ie_offset; ++ sinfo.assoc_req_ies = pmgmt_frame + ie_offset; ++ sinfo.assoc_req_ies_len = frame_len - ie_offset; + cfg80211_new_sta(ndev, hdr->addr2, &sinfo, GFP_ATOMIC); + } + #else /* defined(RTW_USE_CFG80211_STA_EVENT) */ diff --git a/debian/patches/features/all/r8723au/0126-staging-rtl8723au-Remove-unused-IE-offset-defines.patch b/debian/patches/features/all/r8723au/0126-staging-rtl8723au-Remove-unused-IE-offset-defines.patch new file mode 100644 index 000000000..6c2a10b66 --- /dev/null +++ b/debian/patches/features/all/r8723au/0126-staging-rtl8723au-Remove-unused-IE-offset-defines.patch @@ -0,0 +1,30 @@ +From: Jes Sorensen +Date: Tue, 24 Jun 2014 15:03:18 +0200 +Subject: [126/249] staging: rtl8723au: Remove unused IE offset #defines +Origin: https://git.kernel.org/linus/5b5cf9941fd01da487e3324668d2237226fdeb23 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/include/wifi.h | 8 -------- + 1 file changed, 8 deletions(-) + +diff --git a/drivers/staging/rtl8723au/include/wifi.h b/drivers/staging/rtl8723au/include/wifi.h +index bd581ec..d07fd12 100644 +--- a/drivers/staging/rtl8723au/include/wifi.h ++++ b/drivers/staging/rtl8723au/include/wifi.h +@@ -23,14 +23,6 @@ + */ + #define WiFiNavUpperUs 30000 /* 30 ms */ + +-#define _ASOCREQ_IE_OFFSET_ 4 /* excluding wlan_hdr */ +-#define _ASOCRSP_IE_OFFSET_ 6 +-#define _REASOCREQ_IE_OFFSET_ 10 +-#define _REASOCRSP_IE_OFFSET_ 6 +-#define _PROBEREQ_IE_OFFSET_ 0 +-#define _PROBERSP_IE_OFFSET_ 12 +-#define _AUTH_IE_OFFSET_ 6 +-#define _DEAUTH_IE_OFFSET_ 0 + #define _BEACON_IE_OFFSET_ 12 + + #define _FIXED_IE_LENGTH_ _BEACON_IE_OFFSET_ diff --git a/debian/patches/features/all/r8723au/0127-staging-rtl8723au-rtw_get_cur_max_rate-Use-_FIXED_IE.patch b/debian/patches/features/all/r8723au/0127-staging-rtl8723au-rtw_get_cur_max_rate-Use-_FIXED_IE.patch new file mode 100644 index 000000000..a051f4f37 --- /dev/null +++ b/debian/patches/features/all/r8723au/0127-staging-rtl8723au-rtw_get_cur_max_rate-Use-_FIXED_IE.patch @@ -0,0 +1,28 @@ +From: Jes Sorensen +Date: Tue, 24 Jun 2014 15:03:19 +0200 +Subject: [127/249] staging: rtl8723au: rtw_get_cur_max_rate(): Use + _FIXED_IE_LENGTH_ instead of hardcoded value +Origin: https://git.kernel.org/linus/1d33b0766385957c0e70ff32ec501d1f775c8316 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +index ebb98a0..9584688 100644 +--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c ++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +@@ -1190,8 +1190,9 @@ static u16 rtw_get_cur_max_rate(struct rtw_adapter *adapter) + u8 bw_40MHz = 0, short_GI_20 = 0, short_GI_40 = 0; + u16 mcs_rate = 0; + +- p = cfg80211_find_ie(WLAN_EID_HT_CAPABILITY, &pcur_bss->IEs[12], +- pcur_bss->IELength - 12); ++ p = cfg80211_find_ie(WLAN_EID_HT_CAPABILITY, ++ &pcur_bss->IEs[_FIXED_IE_LENGTH_], ++ pcur_bss->IELength - _FIXED_IE_LENGTH_); + if (p && p[1] > 0) { + pht_capie = (struct ieee80211_ht_cap *)(p + 2); + diff --git a/debian/patches/features/all/r8723au/0128-staging-rtl8723au-rtw_add_beacon-Construct-a-full-be.patch b/debian/patches/features/all/r8723au/0128-staging-rtl8723au-rtw_add_beacon-Construct-a-full-be.patch new file mode 100644 index 000000000..be9fc1dab --- /dev/null +++ b/debian/patches/features/all/r8723au/0128-staging-rtl8723au-rtw_add_beacon-Construct-a-full-be.patch @@ -0,0 +1,121 @@ +From: Jes Sorensen +Date: Tue, 24 Jun 2014 15:03:20 +0200 +Subject: [128/249] staging: rtl8723au: rtw_add_beacon(): Construct a full + beacon frame for validation +Origin: https://git.kernel.org/linus/fb5fd46dbdd32faecd5f826f2d47e798732b7b4d + +Clean up and correct the beacon frame validation using a full beacon +frame, and pass that to rtw_check_beacon_data23a(). Previous we went +through hoops to construct the frame, minus the ieee80211_3addr header +which just made it more complicated, and resulted in inconsistencies +and bugs. + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_ap.c | 8 +++++--- + drivers/staging/rtl8723au/include/rtw_ap.h | 3 ++- + drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 24 +++++++++++------------ + 3 files changed, 19 insertions(+), 16 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_ap.c b/drivers/staging/rtl8723au/core/rtw_ap.c +index 18c9b30..08e933a 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ap.c ++++ b/drivers/staging/rtl8723au/core/rtw_ap.c +@@ -789,8 +789,8 @@ static void start_bss_network(struct rtw_adapter *padapter, u8 *pbuf) + update_bmc_sta(padapter); + } + +-int rtw_check_beacon_data23a(struct rtw_adapter *padapter, u8 *pbuf, +- unsigned int len) ++int rtw_check_beacon_data23a(struct rtw_adapter *padapter, ++ struct ieee80211_mgmt *mgmt, unsigned int len) + { + int ret = _SUCCESS; + u8 *p; +@@ -808,7 +808,9 @@ int rtw_check_beacon_data23a(struct rtw_adapter *padapter, u8 *pbuf, + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct wlan_bssid_ex *pbss_network = &pmlmepriv->cur_network.network; + u8 *ie = pbss_network->IEs; +- ++ u8 *pbuf = mgmt->u.beacon.variable - _FIXED_IE_LENGTH_; ++ len -= (offsetof(struct ieee80211_mgmt, u.beacon.variable) - ++ _FIXED_IE_LENGTH_); + /* SSID */ + /* Supported rates */ + /* DS Params */ +diff --git a/drivers/staging/rtl8723au/include/rtw_ap.h b/drivers/staging/rtl8723au/include/rtw_ap.h +index 8d9be5a..9f8d235 100644 +--- a/drivers/staging/rtl8723au/include/rtw_ap.h ++++ b/drivers/staging/rtl8723au/include/rtw_ap.h +@@ -32,7 +32,8 @@ void update_beacon23a(struct rtw_adapter *padapter, u8 ie_id, u8 *oui, u8 tx); + void add_RATid23a(struct rtw_adapter *padapter, struct sta_info *psta, u8 rssi_level); + void expire_timeout_chk23a(struct rtw_adapter *padapter); + void update_sta_info23a_apmode23a(struct rtw_adapter *padapter, struct sta_info *psta); +-int rtw_check_beacon_data23a(struct rtw_adapter *padapter, u8 *pbuf, unsigned int len); ++int rtw_check_beacon_data23a(struct rtw_adapter *padapter, ++ struct ieee80211_mgmt *mgmt, unsigned int len); + void rtw_ap_restore_network(struct rtw_adapter *padapter); + void rtw_set_macaddr_acl23a(struct rtw_adapter *padapter, int mode); + int rtw_acl_add_sta23a(struct rtw_adapter *padapter, u8 *addr); +diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +index 9584688..2a4a696 100644 +--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c ++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +@@ -2916,10 +2916,11 @@ static int rtw_add_beacon(struct rtw_adapter *adapter, const u8 *head, + { + int ret = 0; + u8 *pbuf; +- uint len, wps_ielen = 0; ++ uint len, ielen, wps_ielen = 0; + struct mlme_priv *pmlmepriv = &adapter->mlmepriv; + struct wlan_bssid_ex *bss = &pmlmepriv->cur_network.network; + const struct ieee80211_mgmt *mgmt = (struct ieee80211_mgmt *)head; ++ struct ieee80211_mgmt *tmpmgmt; + /* struct sta_priv *pstapriv = &padapter->stapriv; */ + + DBG_8723A("%s beacon_head_len =%zu, beacon_tail_len =%zu\n", +@@ -2934,33 +2935,32 @@ static int rtw_add_beacon(struct rtw_adapter *adapter, const u8 *head, + pbuf = kzalloc(head_len + tail_len, GFP_KERNEL); + if (!pbuf) + return -ENOMEM; ++ tmpmgmt = (struct ieee80211_mgmt *)pbuf; + + bss->beacon_interval = get_unaligned_le16(&mgmt->u.beacon.beacon_int); + bss->capability = get_unaligned_le16(&mgmt->u.beacon.capab_info); + bss->tsf = get_unaligned_le64(&mgmt->u.beacon.timestamp); + + /* 24 = beacon header len. */ +- memcpy(pbuf, (void *)head + sizeof(struct ieee80211_hdr_3addr), +- head_len - sizeof(struct ieee80211_hdr_3addr)); +- memcpy(pbuf + head_len - sizeof(struct ieee80211_hdr_3addr), +- (void *)tail, tail_len); +- +- len = head_len + tail_len - sizeof(struct ieee80211_hdr_3addr); ++ memcpy(pbuf, (void *)head, head_len); ++ memcpy(pbuf + head_len, (void *)tail, tail_len); + ++ len = head_len + tail_len; ++ ielen = len - offsetof(struct ieee80211_mgmt, u.beacon.variable); + /* check wps ie if inclued */ + if (cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT, + WLAN_OUI_TYPE_MICROSOFT_WPS, +- pbuf + _FIXED_IE_LENGTH_, +- len - _FIXED_IE_LENGTH_)) ++ tmpmgmt->u.beacon.variable, ielen)) + DBG_8723A("add bcn, wps_ielen =%d\n", wps_ielen); + + /* pbss_network->IEs will not include p2p_ie, wfd ie */ +- rtw_ies_remove_ie23a(pbuf, &len, _BEACON_IE_OFFSET_, ++ rtw_ies_remove_ie23a(tmpmgmt->u.beacon.variable, &ielen, 0, + WLAN_EID_VENDOR_SPECIFIC, P2P_OUI23A, 4); +- rtw_ies_remove_ie23a(pbuf, &len, _BEACON_IE_OFFSET_, ++ rtw_ies_remove_ie23a(tmpmgmt->u.beacon.variable, &ielen, 0, + WLAN_EID_VENDOR_SPECIFIC, WFD_OUI23A, 4); + +- if (rtw_check_beacon_data23a(adapter, pbuf, len) == _SUCCESS) { ++ len = ielen + offsetof(struct ieee80211_mgmt, u.beacon.variable); ++ if (rtw_check_beacon_data23a(adapter, tmpmgmt, len) == _SUCCESS) { + ret = 0; + } else { + ret = -EINVAL; diff --git a/debian/patches/features/all/r8723au/0129-staging-rtl8723au-rtw_check_beacon_data23a-Capabilit.patch b/debian/patches/features/all/r8723au/0129-staging-rtl8723au-rtw_check_beacon_data23a-Capabilit.patch new file mode 100644 index 000000000..4ded8b2a9 --- /dev/null +++ b/debian/patches/features/all/r8723au/0129-staging-rtl8723au-rtw_check_beacon_data23a-Capabilit.patch @@ -0,0 +1,48 @@ +From: Jes Sorensen +Date: Tue, 24 Jun 2014 15:03:21 +0200 +Subject: [129/249] staging: rtl8723au: rtw_check_beacon_data23a(): Capability + is already uptodate in cur_network +Origin: https://git.kernel.org/linus/51a26d26feec3e8d41092f33fde6b111961d59b2 + +Beacon capability was already added to mlme_priv->cur_network before +calling this function, so no need to retrieve it from the IE array +again. + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_ap.c | 7 ++----- + 1 file changed, 2 insertions(+), 5 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_ap.c b/drivers/staging/rtl8723au/core/rtw_ap.c +index 08e933a..c19ed95 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ap.c ++++ b/drivers/staging/rtl8723au/core/rtw_ap.c +@@ -797,7 +797,7 @@ int rtw_check_beacon_data23a(struct rtw_adapter *padapter, + u8 *pHT_caps_ie = NULL; + u8 *pHT_info_ie = NULL; + struct sta_info *psta = NULL; +- u16 cap, ht_cap = false; ++ u16 ht_cap = false; + uint ie_len = 0; + int group_cipher, pairwise_cipher; + u8 channel, network_type, supportRate[NDIS_802_11_LENGTH_RATES_EX]; +@@ -844,9 +844,6 @@ int rtw_check_beacon_data23a(struct rtw_adapter *padapter, + + memcpy(pbss_network->MacAddress, myid(&padapter->eeprompriv), ETH_ALEN); + +- /* capability */ +- cap = get_unaligned_le16(ie); +- + /* SSID */ + p = rtw_get_ie23a(ie + _BEACON_IE_OFFSET_, WLAN_EID_SSID, &ie_len, + (pbss_network->IELength -_BEACON_IE_OFFSET_)); +@@ -894,7 +891,7 @@ int rtw_check_beacon_data23a(struct rtw_adapter *padapter, + ERP_IE_handler23a(padapter, p); + + /* update privacy/security */ +- if (cap & BIT(4)) ++ if (pbss_network->capability & BIT(4)) + pbss_network->Privacy = 1; + else + pbss_network->Privacy = 0; diff --git a/debian/patches/features/all/r8723au/0130-staging-rtl8723au-Use-_FIXED_IE_LEN_-instead-of-hard.patch b/debian/patches/features/all/r8723au/0130-staging-rtl8723au-Use-_FIXED_IE_LEN_-instead-of-hard.patch new file mode 100644 index 000000000..f0805f2a3 --- /dev/null +++ b/debian/patches/features/all/r8723au/0130-staging-rtl8723au-Use-_FIXED_IE_LEN_-instead-of-hard.patch @@ -0,0 +1,75 @@ +From: Jes Sorensen +Date: Tue, 24 Jun 2014 15:03:22 +0200 +Subject: [130/249] staging: rtl8723au: Use _FIXED_IE_LEN_ instead of hard + coded value +Origin: https://git.kernel.org/linus/e61fc7cf90c9eb6af8380e2b02e28c60d4ee0ef5 + +This should help catching all the users once we stop carrying the +fixed beacon elements in the IE array. + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme.c | 14 ++++++++------ + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 2 +- + 2 files changed, 9 insertions(+), 7 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c +index b7a3528..66f24dc 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c +@@ -1929,7 +1929,7 @@ int rtw_restruct_wmm_ie23a(struct rtw_adapter *adapter, u8 *in_ie, + unsigned int ielength = 0; + unsigned int i, j; + +- i = 12; /* after the fixed IE */ ++ i = _FIXED_IE_LENGTH_; /* after the fixed IE */ + while (i < in_len) { + ielength = initial_out_len; + +@@ -2039,8 +2039,8 @@ int rtw_restruct_sec_ie23a(struct rtw_adapter *adapter, u8 *in_ie, u8 *out_ie, + "ndissecuritytype=%d\n", ndisauthmode, ndissecuritytype)); + + /* copy fixed ie only */ +- memcpy(out_ie, in_ie, 12); +- ielength = 12; ++ memcpy(out_ie, in_ie, _FIXED_IE_LENGTH_); ++ ielength = _FIXED_IE_LENGTH_; + if (ndisauthmode == Ndis802_11AuthModeWPA || + ndisauthmode == Ndis802_11AuthModeWPAPSK) + authmode = WLAN_EID_VENDOR_SPECIFIC; +@@ -2171,7 +2171,8 @@ bool rtw_restructure_ht_ie23a(struct rtw_adapter *padapter, u8 *in_ie, + + phtpriv->ht_option = false; + +- p = cfg80211_find_ie(WLAN_EID_HT_CAPABILITY, in_ie + 12, in_len -12); ++ p = cfg80211_find_ie(WLAN_EID_HT_CAPABILITY, in_ie + _FIXED_IE_LENGTH_, ++ in_len - _FIXED_IE_LENGTH_); + + if (p && p[1] > 0) { + u32 rx_packet_offset, max_recvbuf_sz; +@@ -2216,8 +2217,9 @@ bool rtw_restructure_ht_ie23a(struct rtw_adapter *padapter, u8 *in_ie, + + phtpriv->ht_option = true; + +- p = cfg80211_find_ie(WLAN_EID_HT_OPERATION, in_ie + 12, +- in_len -12); ++ p = cfg80211_find_ie(WLAN_EID_HT_OPERATION, ++ in_ie + _FIXED_IE_LENGTH_, ++ in_len - _FIXED_IE_LENGTH_); + if (p && (p[1] == sizeof(struct ieee80211_ht_operation))) { + out_len = *pout_len; + pframe = rtw_set_ie23a(out_ie + out_len, +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index 03ced01..6791ad7 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -4254,7 +4254,7 @@ static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter, + memcpy(bssid->SupportedRates + i, p + 2, p[1]); + } + +- if (bssid->IELength < 12) ++ if (bssid->IELength < _FIXED_IE_LENGTH_) + goto fail; + + /* Checking for DSConfig */ diff --git a/debian/patches/features/all/r8723au/0131-staging-rtl8723au-ConstructProbeRsp-Use-struct-ieee8.patch b/debian/patches/features/all/r8723au/0131-staging-rtl8723au-ConstructProbeRsp-Use-struct-ieee8.patch new file mode 100644 index 000000000..9a2476cd4 --- /dev/null +++ b/debian/patches/features/all/r8723au/0131-staging-rtl8723au-ConstructProbeRsp-Use-struct-ieee8.patch @@ -0,0 +1,76 @@ +From: Jes Sorensen +Date: Tue, 24 Jun 2014 15:03:23 +0200 +Subject: [131/249] staging: rtl8723au: ConstructProbeRsp(): Use struct + ieee80211_mgmt +Origin: https://git.kernel.org/linus/a22301ec9600a5c1d6961b2e006c0b9d73975828 + +Use ieee80211_mgmt to construct the frame instead of relying on hard +coded offsets. + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/rtl8723a_cmd.c | 31 +++++++++++++++++----------- + 1 file changed, 19 insertions(+), 12 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c b/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c +index ae15624..ca1bea8 100644 +--- a/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c ++++ b/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c +@@ -398,7 +398,7 @@ ConstructNullFunctionData(struct rtw_adapter *padapter, u8 *pframe, + static void ConstructProbeRsp(struct rtw_adapter *padapter, u8 *pframe, + u32 *pLength, u8 *StaAddr, bool bHideSSID) + { +- struct ieee80211_hdr *pwlanhdr; ++ struct ieee80211_mgmt *mgmt; + u8 *mac, *bssid; + u32 pktlen; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; +@@ -407,29 +407,36 @@ static void ConstructProbeRsp(struct rtw_adapter *padapter, u8 *pframe, + + /* DBG_8723A("%s\n", __func__); */ + +- pwlanhdr = (struct ieee80211_hdr *)pframe; ++ mgmt = (struct ieee80211_mgmt *)pframe; + + mac = myid(&padapter->eeprompriv); + bssid = cur_network->MacAddress; + +- pwlanhdr->frame_control = ++ mgmt->frame_control = + cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_PROBE_RESP); + +- pwlanhdr->seq_ctrl = 0; ++ mgmt->seq_ctrl = 0; ++ ++ memcpy(mgmt->da, StaAddr, ETH_ALEN); ++ memcpy(mgmt->sa, mac, ETH_ALEN); ++ memcpy(mgmt->bssid, bssid, ETH_ALEN); + +- memcpy(pwlanhdr->addr1, StaAddr, ETH_ALEN); +- memcpy(pwlanhdr->addr2, mac, ETH_ALEN); +- memcpy(pwlanhdr->addr3, bssid, ETH_ALEN); ++ put_unaligned_le64(cur_network->tsf, ++ &mgmt->u.probe_resp.timestamp); ++ put_unaligned_le16(cur_network->beacon_interval, ++ &mgmt->u.probe_resp.beacon_int); ++ put_unaligned_le16(cur_network->capability, ++ &mgmt->u.probe_resp.capab_info); + +- pktlen = sizeof(struct ieee80211_hdr_3addr); +- pframe += pktlen; ++ pktlen = offsetof(struct ieee80211_mgmt, u.probe_resp.variable); + + if (cur_network->IELength > MAX_IE_SZ) + return; + +- memcpy(pframe, cur_network->IEs, cur_network->IELength); +- pframe += cur_network->IELength; +- pktlen += cur_network->IELength; ++ memcpy(mgmt->u.probe_resp.variable, ++ cur_network->IEs + _FIXED_IE_LENGTH_, ++ cur_network->IELength - _FIXED_IE_LENGTH_); ++ pktlen += (cur_network->IELength - _FIXED_IE_LENGTH_); + + *pLength = pktlen; + } diff --git a/debian/patches/features/all/r8723au/0132-staging-rtl8723au-Remove-no-op-CheckFwRsvdPageConten.patch b/debian/patches/features/all/r8723au/0132-staging-rtl8723au-Remove-no-op-CheckFwRsvdPageConten.patch new file mode 100644 index 000000000..3c056fc2a --- /dev/null +++ b/debian/patches/features/all/r8723au/0132-staging-rtl8723au-Remove-no-op-CheckFwRsvdPageConten.patch @@ -0,0 +1,56 @@ +From: Jes Sorensen +Date: Tue, 24 Jun 2014 15:03:24 +0200 +Subject: [132/249] staging: rtl8723au: Remove no-op + CheckFwRsvdPageContent23a() +Origin: https://git.kernel.org/linus/559789d6cba66348072bbe2f372b6233945b011b + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/rtl8723a_cmd.c | 5 ----- + drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c | 2 -- + drivers/staging/rtl8723au/include/rtl8723a_cmd.h | 2 -- + 3 files changed, 9 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c b/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c +index ca1bea8..2d67762 100644 +--- a/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c ++++ b/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c +@@ -441,11 +441,6 @@ static void ConstructProbeRsp(struct rtw_adapter *padapter, u8 *pframe, + *pLength = pktlen; + } + +-/* To check if reserved page content is destroyed by beacon beacuse beacon is too large. */ +-void CheckFwRsvdPageContent23a(struct rtw_adapter *Adapter) +-{ +-} +- + /* */ + /* Description: Fill the reserved packets that FW will use to RSVD page. */ + /* Now we just send 4 types packet to rsvd page. */ +diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c b/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c +index 46f5abc..8b3473f 100644 +--- a/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c ++++ b/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c +@@ -1034,8 +1034,6 @@ static void StopTxBeacon(struct rtw_adapter *padapter) + rtl8723au_write8(padapter, REG_TBTT_PROHIBIT + 1, 0x64); + pHalData->RegReg542 &= ~BIT(0); + rtl8723au_write8(padapter, REG_TBTT_PROHIBIT + 2, pHalData->RegReg542); +- +- CheckFwRsvdPageContent23a(padapter); /* 2010.06.23. Added by tynli. */ + } + + static void _BeaconFunctionEnable(struct rtw_adapter *padapter, u8 Enable, +diff --git a/drivers/staging/rtl8723au/include/rtl8723a_cmd.h b/drivers/staging/rtl8723au/include/rtl8723a_cmd.h +index e1ecbd0..014c02e 100644 +--- a/drivers/staging/rtl8723au/include/rtl8723a_cmd.h ++++ b/drivers/staging/rtl8723au/include/rtl8723a_cmd.h +@@ -153,8 +153,6 @@ int rtl8723a_set_rssi_cmd(struct rtw_adapter *padapter, u8 *param); + int rtl8723a_set_raid_cmd(struct rtw_adapter *padapter, u32 mask, u8 arg); + void rtl8723a_add_rateatid(struct rtw_adapter *padapter, u32 bitmap, u8 arg, u8 rssi_level); + +-void CheckFwRsvdPageContent23a(struct rtw_adapter *padapter); +- + int FillH2CCmd(struct rtw_adapter *padapter, u8 ElementID, u32 CmdLen, u8 *pCmdBuffer); + + #endif diff --git a/debian/patches/features/all/r8723au/0133-staging-rtl8723au-Remove-unused-dump_txrpt_ccx_8723a.patch b/debian/patches/features/all/r8723au/0133-staging-rtl8723au-Remove-unused-dump_txrpt_ccx_8723a.patch new file mode 100644 index 000000000..21926ade9 --- /dev/null +++ b/debian/patches/features/all/r8723au/0133-staging-rtl8723au-Remove-unused-dump_txrpt_ccx_8723a.patch @@ -0,0 +1,56 @@ +From: Jes Sorensen +Date: Tue, 24 Jun 2014 15:03:25 +0200 +Subject: [133/249] staging: rtl8723au: Remove unused dump_txrpt_ccx_8723a() +Origin: https://git.kernel.org/linus/2131891c6ac7643859a01efe35f647835c003b00 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/rtl8723a_xmit.c | 21 --------------------- + drivers/staging/rtl8723au/include/rtl8723a_xmit.h | 1 - + 2 files changed, 22 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_xmit.c b/drivers/staging/rtl8723au/hal/rtl8723a_xmit.c +index d7612cc..6ea2f9e 100644 +--- a/drivers/staging/rtl8723au/hal/rtl8723a_xmit.c ++++ b/drivers/staging/rtl8723au/hal/rtl8723a_xmit.c +@@ -18,27 +18,6 @@ + #include + #include + +-void dump_txrpt_ccx_8723a(void *buf) +-{ +- struct txrpt_ccx_8723a *txrpt_ccx = buf; +- +- DBG_8723A("%s:\n" +- "tag1:%u, rsvd:%u, int_bt:%u, int_tri:%u, int_ccx:%u\n" +- "mac_id:%u, pkt_drop:%u, pkt_ok:%u, bmc:%u\n" +- "retry_cnt:%u, lifetime_over:%u, retry_over:%u\n" +- "ccx_qtime:%u\n" +- "final_data_rate:0x%02x\n" +- "qsel:%u, sw:0x%03x\n" +- , __func__ +- , txrpt_ccx->tag1, txrpt_ccx->rsvd, txrpt_ccx->int_bt, txrpt_ccx->int_tri, txrpt_ccx->int_ccx +- , txrpt_ccx->mac_id, txrpt_ccx->pkt_drop, txrpt_ccx->pkt_ok, txrpt_ccx->bmc +- , txrpt_ccx->retry_cnt, txrpt_ccx->lifetime_over, txrpt_ccx->retry_over +- , txrpt_ccx_qtime_8723a(txrpt_ccx) +- , txrpt_ccx->final_data_rate +- , txrpt_ccx->qsel, txrpt_ccx_sw_8723a(txrpt_ccx) +- ); +-} +- + void handle_txrpt_ccx_8723a(struct rtw_adapter *adapter, void *buf) + { + struct txrpt_ccx_8723a *txrpt_ccx = buf; +diff --git a/drivers/staging/rtl8723au/include/rtl8723a_xmit.h b/drivers/staging/rtl8723au/include/rtl8723a_xmit.h +index 79883d7..815560c 100644 +--- a/drivers/staging/rtl8723au/include/rtl8723a_xmit.h ++++ b/drivers/staging/rtl8723au/include/rtl8723a_xmit.h +@@ -211,7 +211,6 @@ struct txrpt_ccx_8723a { + #define txrpt_ccx_sw_8723a(txrpt_ccx) ((txrpt_ccx)->sw0 + ((txrpt_ccx)->sw1<<8)) + #define txrpt_ccx_qtime_8723a(txrpt_ccx) ((txrpt_ccx)->ccx_qtime0+((txrpt_ccx)->ccx_qtime1<<8)) + +-void dump_txrpt_ccx_8723a(void *buf); + void handle_txrpt_ccx_8723a(struct rtw_adapter *adapter, void *buf); + void rtl8723a_update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem); + void rtl8723a_fill_fake_txdesc(struct rtw_adapter *padapter, u8 *pDesc, u32 BufferLen, u8 IsPsPoll, u8 IsBTQosNull); diff --git a/debian/patches/features/all/r8723au/0134-staging-rtl8723au-issue_beacon23a-Fix-another-case-i.patch b/debian/patches/features/all/r8723au/0134-staging-rtl8723au-issue_beacon23a-Fix-another-case-i.patch new file mode 100644 index 000000000..51cdfa76e --- /dev/null +++ b/debian/patches/features/all/r8723au/0134-staging-rtl8723au-issue_beacon23a-Fix-another-case-i.patch @@ -0,0 +1,24 @@ +From: Jes Sorensen +Date: Tue, 24 Jun 2014 15:03:26 +0200 +Subject: [134/249] staging: rtl8723au: issue_beacon23a(): Fix another case + issuing a corrupted beacon +Origin: https://git.kernel.org/linus/89060370dbc34cffcce925712eb5b796c6731744 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index 6791ad7..cb882fb 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -2420,6 +2420,7 @@ void issue_beacon23a(struct rtw_adapter *padapter, int timeout_ms) + if ((pmlmeinfo->state & 0x03) == WIFI_FW_AP_STATE) { + u8 *iebuf; + int buflen; ++ pframe -= _BEACON_IE_OFFSET_; + /* DBG_8723A("ie len =%d\n", cur_network->IELength); */ + memcpy(pframe, cur_network->IEs, cur_network->IELength); + len_diff = update_hidden_ssid(pframe + _BEACON_IE_OFFSET_, diff --git a/debian/patches/features/all/r8723au/0135-staging-rtl8723au-issue_beacon23a-Determine-ie-buffe.patch b/debian/patches/features/all/r8723au/0135-staging-rtl8723au-issue_beacon23a-Determine-ie-buffe.patch new file mode 100644 index 000000000..30fa616cb --- /dev/null +++ b/debian/patches/features/all/r8723au/0135-staging-rtl8723au-issue_beacon23a-Determine-ie-buffe.patch @@ -0,0 +1,31 @@ +From: Jes Sorensen +Date: Tue, 24 Jun 2014 15:03:27 +0200 +Subject: [135/249] staging: rtl8723au: issue_beacon23a(): Determine ie buffer + location using 80211_mgmt +Origin: https://git.kernel.org/linus/0f728f10334f5ca6f9c28dffcfae96dcabd2a952 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 8 +++----- + 1 file changed, 3 insertions(+), 5 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index cb882fb..ebd3743 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -2430,11 +2430,9 @@ void issue_beacon23a(struct rtw_adapter *padapter, int timeout_ms) + pframe += (cur_network->IELength+len_diff); + pattrib->pktlen += (cur_network->IELength+len_diff); + +- iebuf = pmgntframe->buf_addr + TXDESC_OFFSET + +- sizeof (struct ieee80211_hdr_3addr) + +- _BEACON_IE_OFFSET_; +- buflen = pattrib->pktlen - sizeof (struct ieee80211_hdr_3addr) - +- _BEACON_IE_OFFSET_; ++ iebuf = mgmt->u.beacon.variable; ++ buflen = pattrib->pktlen - ++ offsetof(struct ieee80211_mgmt, u.beacon.variable); + wps_ie = cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT, + WLAN_OUI_TYPE_MICROSOFT_WPS, + iebuf, buflen); diff --git a/debian/patches/features/all/r8723au/0136-staging-rtl8723au-rtw_generate_ie23a-update-network-.patch b/debian/patches/features/all/r8723au/0136-staging-rtl8723au-rtw_generate_ie23a-update-network-.patch new file mode 100644 index 000000000..a9fdaf02e --- /dev/null +++ b/debian/patches/features/all/r8723au/0136-staging-rtl8723au-rtw_generate_ie23a-update-network-.patch @@ -0,0 +1,53 @@ +From: Jes Sorensen +Date: Tue, 24 Jun 2014 15:03:28 +0200 +Subject: [136/249] staging: rtl8723au: rtw_generate_ie23a(): update network + info as well as IE +Origin: https://git.kernel.org/linus/a4cf0d65e584329bd85beca84f04325870e2ea69 + +We need to make sure to update the network info as well as the IE +array. + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_ieee80211.c | 14 +++++++++++--- + 1 file changed, 11 insertions(+), 3 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_ieee80211.c b/drivers/staging/rtl8723au/core/rtw_ieee80211.c +index efad6f8..f235ae0 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ieee80211.c ++++ b/drivers/staging/rtl8723au/core/rtw_ieee80211.c +@@ -351,8 +351,9 @@ int rtw_generate_ie23a(struct registry_priv *pregistrypriv) + int sz = 0, rateLen; + struct wlan_bssid_ex* pdev_network = &pregistrypriv->dev_network; + u8* ie = pdev_network->IEs; ++ u16 cap; + +- ++ pdev_network->tsf = 0; + + /* timestamp will be inserted by hardware */ + sz += 8; +@@ -368,13 +369,20 @@ int rtw_generate_ie23a(struct registry_priv *pregistrypriv) + *(u16*)ie = 0; + + *(u16*)ie |= cpu_to_le16(WLAN_CAPABILITY_IBSS); ++ cap = WLAN_CAPABILITY_IBSS; + +- if (pregistrypriv->preamble == PREAMBLE_SHORT) ++ if (pregistrypriv->preamble == PREAMBLE_SHORT) { + *(u16*)ie |= cpu_to_le16(WLAN_CAPABILITY_SHORT_PREAMBLE); ++ cap |= WLAN_CAPABILITY_SHORT_PREAMBLE; ++ } + +- if (pdev_network->Privacy) ++ if (pdev_network->Privacy) { + *(u16*)ie |= cpu_to_le16(WLAN_CAPABILITY_PRIVACY); ++ cap |= WLAN_CAPABILITY_PRIVACY; ++ ++ } + ++ pdev_network->capability = cap; + sz += 2; + ie += 2; + diff --git a/debian/patches/features/all/r8723au/0137-staging-rtl8723au-Stop-carrying-half-the-beacon-fram.patch b/debian/patches/features/all/r8723au/0137-staging-rtl8723au-Stop-carrying-half-the-beacon-fram.patch new file mode 100644 index 000000000..5d600d21d --- /dev/null +++ b/debian/patches/features/all/r8723au/0137-staging-rtl8723au-Stop-carrying-half-the-beacon-fram.patch @@ -0,0 +1,567 @@ +From: Jes Sorensen +Date: Tue, 24 Jun 2014 15:03:29 +0200 +Subject: [137/249] staging: rtl8723au: Stop carrying half the beacon frame + header in the stored IE array +Origin: https://git.kernel.org/linus/68e6c79609fc2d2d1132fd293f4d9dd7bdd514b5 + +This gets rid of the odd carrying of half the beacon frame in the IE +array stored for the network. Instead we rely on the relevant fields +(timestamp, beacon_interval, and capability) stored in struct +wlan_bssid_ex. + +Carrying only half the ieee80211_mgmt header led to a number of bugs +and simply obfuscated the code. + +I have tried catching all instances relying on these three elements in +the IEs array, but missed cases may still need to be tracked down. + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_ap.c | 8 +-- + drivers/staging/rtl8723au/core/rtw_ieee80211.c | 41 +++---------- + drivers/staging/rtl8723au/core/rtw_mlme.c | 27 +-------- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 83 +++++++++++--------------- + drivers/staging/rtl8723au/core/rtw_wlan_util.c | 29 ++------- + drivers/staging/rtl8723au/hal/rtl8723a_cmd.c | 9 +-- + drivers/staging/rtl8723au/include/wifi.h | 2 +- + 7 files changed, 58 insertions(+), 141 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_ap.c b/drivers/staging/rtl8723au/core/rtw_ap.c +index c19ed95..5c30f7b 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ap.c ++++ b/drivers/staging/rtl8723au/core/rtw_ap.c +@@ -652,7 +652,6 @@ 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 ieee80211_ht_operation *pht_info = NULL; +- int bcn_fixed_size; + + bcn_interval = (u16)pnetwork->beacon_interval; + cur_channel = pnetwork->DSConfig; +@@ -728,12 +727,9 @@ 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 + bcn_fixed_size, +- pnetwork->IELength - bcn_fixed_size); ++ p = cfg80211_find_ie(WLAN_EID_HT_OPERATION, pnetwork->IEs, ++ pnetwork->IELength); + if (p && p[1]) { + pht_info = (struct ieee80211_ht_operation *)(p + 2); + +diff --git a/drivers/staging/rtl8723au/core/rtw_ieee80211.c b/drivers/staging/rtl8723au/core/rtw_ieee80211.c +index f235ae0..2cb8eed 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ieee80211.c ++++ b/drivers/staging/rtl8723au/core/rtw_ieee80211.c +@@ -355,36 +355,15 @@ int rtw_generate_ie23a(struct registry_priv *pregistrypriv) + + pdev_network->tsf = 0; + +- /* timestamp will be inserted by hardware */ +- sz += 8; +- ie += sz; +- +- /* beacon interval : 2bytes */ +- /* BCN_INTERVAL; */ +- *(u16*)ie = cpu_to_le16(pdev_network->beacon_interval); +- sz += 2; +- ie += 2; +- +- /* capability info */ +- *(u16*)ie = 0; +- +- *(u16*)ie |= cpu_to_le16(WLAN_CAPABILITY_IBSS); + cap = WLAN_CAPABILITY_IBSS; + +- if (pregistrypriv->preamble == PREAMBLE_SHORT) { +- *(u16*)ie |= cpu_to_le16(WLAN_CAPABILITY_SHORT_PREAMBLE); ++ if (pregistrypriv->preamble == PREAMBLE_SHORT) + cap |= WLAN_CAPABILITY_SHORT_PREAMBLE; +- } + +- if (pdev_network->Privacy) { +- *(u16*)ie |= cpu_to_le16(WLAN_CAPABILITY_PRIVACY); ++ if (pdev_network->Privacy) + cap |= WLAN_CAPABILITY_PRIVACY; + +- } +- + pdev_network->capability = cap; +- sz += 2; +- ie += 2; + + /* SSID */ + ie = rtw_set_ie23a(ie, WLAN_EID_SSID, pdev_network->Ssid.ssid_len, +@@ -718,13 +697,11 @@ static int rtw_get_cipher_info(struct wlan_network *pnetwork) + const u8 *pbuf; + int group_cipher = 0, pairwise_cipher = 0, is8021x = 0; + int ret = _FAIL; +- int r, offset, plen; ++ int r, plen; + char *pie; + +- offset = offsetof(struct ieee80211_mgmt, u.beacon.variable) - +- offsetof(struct ieee80211_mgmt, u); +- pie = &pnetwork->network.IEs[offset]; +- plen = pnetwork->network.IELength - offset; ++ pie = pnetwork->network.IEs; ++ plen = pnetwork->network.IELength; + + pbuf = cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT, + WLAN_OUI_TYPE_MICROSOFT_WPA, pie, plen); +@@ -779,7 +756,7 @@ static int rtw_get_cipher_info(struct wlan_network *pnetwork) + void rtw_get_bcn_info23a(struct wlan_network *pnetwork) + { + u8 bencrypt = 0; +- int pie_len, ie_offset; ++ int pie_len; + u8 *pie; + const u8 *p; + +@@ -792,10 +769,8 @@ void rtw_get_bcn_info23a(struct wlan_network *pnetwork) + RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_, + ("%s: ssid =%s\n", __func__, pnetwork->network.Ssid.ssid)); + +- ie_offset = offsetof(struct ieee80211_mgmt, u.beacon.variable) - +- offsetof(struct ieee80211_mgmt, u); +- pie = pnetwork->network.IEs + ie_offset; +- pie_len = pnetwork->network.IELength - ie_offset; ++ pie = pnetwork->network.IEs; ++ pie_len = pnetwork->network.IELength; + + p = cfg80211_find_ie(WLAN_EID_RSN, pie, pie_len); + if (p && p[1]) { +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c +index 66f24dc..1ccaa6f2 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c +@@ -424,16 +424,11 @@ 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 + +- bcn_size, ++ pmlmepriv->cur_network.network.IEs, + pmlmepriv->cur_network.network.IELength); + } + } +@@ -619,8 +614,6 @@ void rtw_survey_event_cb23a(struct rtw_adapter *adapter, const u8 *pbuf) + pnetwork->MacAddress)) { + struct wlan_network* ibss_wlan; + +- memcpy(pmlmepriv->cur_network.network.IEs, +- pnetwork->IEs, 8); + pmlmepriv->cur_network.network.beacon_interval = + pnetwork->beacon_interval; + pmlmepriv->cur_network.network.capability = +@@ -631,8 +624,6 @@ void rtw_survey_event_cb23a(struct rtw_adapter *adapter, const u8 *pbuf) + &pmlmepriv->scanned_queue, + pnetwork->MacAddress); + if (ibss_wlan) { +- memcpy(ibss_wlan->network.IEs, +- pnetwork->IEs, 8); + pmlmepriv->cur_network.network.beacon_interval = + ibss_wlan->network.beacon_interval; + pmlmepriv->cur_network.network.capability = +@@ -1019,7 +1010,6 @@ 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__); + +@@ -1076,11 +1066,8 @@ 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 + +- bcn_size, cur_network->network.IELength); ++ rtw_update_protection23a(padapter, cur_network->network.IEs, ++ cur_network->network.IELength); + + rtw_update_ht_cap23a(padapter, cur_network->network.IEs, + cur_network->network.IELength); +@@ -2243,7 +2230,6 @@ 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; +@@ -2253,13 +2239,6 @@ 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 += bcn_fixed_size; +- ie_len -= bcn_fixed_size; +- + /* maybe needs check if ap supports rx ampdu. */ + if (!phtpriv->ampdu_enable && pregistrypriv->ampdu_enable == 1) { + if (pregistrypriv->wifi_spec == 1) +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index ebd3743..c473e33 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -3119,7 +3119,7 @@ static void issue_assocreq(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, bcn_fixed_size; ++ int bssrate_len = 0, sta_bssrate_len = 0, pie_len; + u8 *pie; + + pmgntframe = alloc_mgtxmitframe23a(pxmitpriv); +@@ -3227,11 +3227,9 @@ static void issue_assocreq(struct rtw_adapter *padapter) + bssrate_len, bssrate, &pattrib->pktlen); + + /* RSN */ +- 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; ++ pie = pmlmeinfo->network.IEs; ++ pie_len = pmlmeinfo->network.IELength; + + p = cfg80211_find_ie(WLAN_EID_RSN, pie, pie_len); + if (p) +@@ -3309,7 +3307,7 @@ static void issue_assocreq(struct rtw_adapter *padapter) + } + + /* vendor specific IE, such as WPA, WMM, WPS */ +- for (i = bcn_fixed_size; i < pmlmeinfo->network.IELength;) { ++ for (i = 0; i < pmlmeinfo->network.IELength;) { + p = pmlmeinfo->network.IEs + i; + + switch (p[0]) { +@@ -4139,47 +4137,44 @@ static void rtw_site_survey(struct rtw_adapter *padapter) + static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter, + struct recv_frame *precv_frame) + { +- int i; +- const u8 *p; + struct sk_buff *skb = precv_frame->pkt; + struct ieee80211_mgmt *mgmt = (struct ieee80211_mgmt *) skb->data; +- unsigned int length; +- u8 ie_offset; + struct registry_priv *pregistrypriv = &padapter->registrypriv; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; + struct wlan_bssid_ex *bssid; ++ const u8 *p; ++ u8 *pie; ++ unsigned int length; ++ int i; + +- length = skb->len - sizeof(struct ieee80211_hdr_3addr); +- +- if (length > MAX_IE_SZ) { +- /* DBG_8723A("IE too long for survey event\n"); */ +- return NULL; +- } ++ length = skb->len; + + bssid = kzalloc(sizeof(struct wlan_bssid_ex), GFP_ATOMIC); + if (!bssid) + return NULL; + + if (ieee80211_is_beacon(mgmt->frame_control)) { ++ length -= offsetof(struct ieee80211_mgmt, u.beacon.variable); ++ pie = mgmt->u.beacon.variable; + bssid->reserved = 1; +- ie_offset = offsetof(struct ieee80211_mgmt, u.beacon.variable); + bssid->capability = + get_unaligned_le16(&mgmt->u.beacon.capab_info); + bssid->beacon_interval = + get_unaligned_le16(&mgmt->u.beacon.beacon_int); + bssid->tsf = get_unaligned_le64(&mgmt->u.beacon.timestamp); +- } else if (ieee80211_is_probe_req(mgmt->frame_control)) { +- ie_offset = offsetof(struct ieee80211_mgmt, +- u.probe_req.variable); ++ } else if (ieee80211_is_probe_req(mgmt->frame_control)) { ++ length -= offsetof(struct ieee80211_mgmt, u.probe_req.variable); ++ pie = mgmt->u.probe_req.variable; + bssid->reserved = 2; + bssid->capability = 0; + bssid->beacon_interval = + padapter->registrypriv.dev_network.beacon_interval; + bssid->tsf = 0; + } else if (ieee80211_is_probe_resp(mgmt->frame_control)) { +- ie_offset = offsetof(struct ieee80211_mgmt, +- u.probe_resp.variable); ++ length -= ++ offsetof(struct ieee80211_mgmt, u.probe_resp.variable); ++ pie = mgmt->u.probe_resp.variable; + bssid->reserved = 3; + bssid->capability = + get_unaligned_le16(&mgmt->u.probe_resp.capab_info); +@@ -4187,21 +4182,27 @@ static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter, + get_unaligned_le16(&mgmt->u.probe_resp.beacon_int); + bssid->tsf = get_unaligned_le64(&mgmt->u.probe_resp.timestamp); + } else { ++ length -= offsetof(struct ieee80211_mgmt, u.beacon.variable); ++ pie = mgmt->u.beacon.variable; + bssid->reserved = 0; +- ie_offset = offsetof(struct ieee80211_mgmt, u.beacon.variable); + bssid->capability = + get_unaligned_le16(&mgmt->u.beacon.capab_info); + bssid->beacon_interval = + padapter->registrypriv.dev_network.beacon_interval; + bssid->tsf = 0; + } +- ie_offset -= offsetof(struct ieee80211_mgmt, u); ++ ++ if (length > MAX_IE_SZ) { ++ /* DBG_8723A("IE too long for survey event\n"); */ ++ kfree(bssid); ++ return NULL; ++ } + + bssid->Length = offsetof(struct wlan_bssid_ex, IEs) + length; + + /* below is to copy the information element */ + bssid->IELength = length; +- memcpy(bssid->IEs, &mgmt->u, bssid->IELength); ++ memcpy(bssid->IEs, pie, bssid->IELength); + + /* get the signal strength */ + /* in dBM.raw data */ +@@ -4212,8 +4213,7 @@ static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter, + precv_frame->attrib.phy_info.SignalStrength;/* in percentage */ + + /* checking SSID */ +- p = cfg80211_find_ie(WLAN_EID_SSID, bssid->IEs + ie_offset, +- bssid->IELength - ie_offset); ++ p = cfg80211_find_ie(WLAN_EID_SSID, bssid->IEs, bssid->IELength); + + if (!p) { + DBG_8723A("marc: cannot find SSID for survey event\n"); +@@ -4230,8 +4230,7 @@ static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter, + + /* checking rate info... */ + i = 0; +- p = cfg80211_find_ie(WLAN_EID_SUPP_RATES, bssid->IEs + ie_offset, +- bssid->IELength - ie_offset); ++ p = cfg80211_find_ie(WLAN_EID_SUPP_RATES, bssid->IEs, bssid->IELength); + if (p) { + if (p[1] > NDIS_802_11_LENGTH_RATES_EX) { + DBG_8723A("%s()-%d: IE too long (%d) for survey " +@@ -4242,8 +4241,8 @@ static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter, + i = p[1]; + } + +- p = cfg80211_find_ie(WLAN_EID_EXT_SUPP_RATES, bssid->IEs + ie_offset, +- bssid->IELength - ie_offset); ++ p = cfg80211_find_ie(WLAN_EID_EXT_SUPP_RATES, bssid->IEs, ++ bssid->IELength); + if (p) { + if (p[1] > (NDIS_802_11_LENGTH_RATES_EX-i)) { + DBG_8723A("%s()-%d: IE too long (%d) for survey " +@@ -4253,12 +4252,8 @@ static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter, + memcpy(bssid->SupportedRates + i, p + 2, p[1]); + } + +- if (bssid->IELength < _FIXED_IE_LENGTH_) +- goto fail; +- + /* Checking for DSConfig */ +- p = cfg80211_find_ie(WLAN_EID_DS_PARAMS, bssid->IEs + ie_offset, +- bssid->IELength - ie_offset); ++ p = cfg80211_find_ie(WLAN_EID_DS_PARAMS, bssid->IEs, bssid->IELength); + + bssid->DSConfig = 0; + +@@ -4266,9 +4261,8 @@ static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter, + bssid->DSConfig = p[2]; + } else {/* In 5G, some ap do not have DSSET IE */ + /* checking HT info for channel */ +- p = cfg80211_find_ie(WLAN_EID_HT_OPERATION, +- bssid->IEs + ie_offset, +- bssid->IELength - ie_offset); ++ p = cfg80211_find_ie(WLAN_EID_HT_OPERATION, bssid->IEs, ++ bssid->IELength); + if (p) { + struct ieee80211_ht_operation *HT_info = + (struct ieee80211_ht_operation *)(p + 2); +@@ -4305,9 +4299,8 @@ static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter, + pmlmeinfo->bwmode_updated == false) { + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + +- p = cfg80211_find_ie(WLAN_EID_HT_CAPABILITY, +- bssid->IEs + ie_offset, +- bssid->IELength - ie_offset); ++ p = cfg80211_find_ie(WLAN_EID_HT_CAPABILITY, bssid->IEs, ++ bssid->IELength); + if (p && p[1] > 0) { + struct ieee80211_ht_cap *pHT_caps; + pHT_caps = (struct ieee80211_ht_cap *)(p + 2); +@@ -5586,7 +5579,6 @@ int join_cmd_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf) + const struct wlan_bssid_ex *pparm = (struct wlan_bssid_ex *)pbuf; + struct ieee80211_ht_operation *pht_info; + u32 i; +- int bcn_fixed_size; + u8 *p; + /* u32 initialgain; */ + /* u32 acparm; */ +@@ -5632,10 +5624,7 @@ int join_cmd_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf) + /* pmlmeinfo->assoc_AP_vendor = check_assoc_AP23a(pnetwork->IEs, + 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;) { ++ for (i = 0; i < pnetwork->IELength;) { + p = pnetwork->IEs + i; + + switch (p[0]) { +diff --git a/drivers/staging/rtl8723au/core/rtw_wlan_util.c b/drivers/staging/rtl8723au/core/rtw_wlan_util.c +index dbca440..66e72e2 100644 +--- a/drivers/staging/rtl8723au/core/rtw_wlan_util.c ++++ b/drivers/staging/rtl8723au/core/rtw_wlan_util.c +@@ -880,7 +880,7 @@ int rtw_check_bcn_info23a(struct rtw_adapter *Adapter, + unsigned short val16; + u8 crypto, bcn_channel; + int group_cipher = 0, pairwise_cipher = 0, is_8021x = 0, r; +- int pie_len, ie_offset, ssid_len, privacy; ++ int pie_len, ssid_len, privacy; + const u8 *p, *ssid; + + if (is_client_associated_to_ap23a(Adapter) == false) +@@ -901,8 +901,6 @@ int rtw_check_bcn_info23a(struct rtw_adapter *Adapter, + + /* check bw and channel offset */ + /* parsing HT_CAP_IE */ +- ie_offset = offsetof(struct ieee80211_mgmt, u.beacon.variable) - +- offsetof(struct ieee80211_mgmt, u); + pie_len = pkt_len - offsetof(struct ieee80211_mgmt, u.beacon.variable); + + /* Checking for channel */ +@@ -1070,13 +1068,9 @@ bool is_ap_in_tkip23a(struct rtw_adapter *padapter) + struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; + struct wlan_bssid_ex *cur_network = &pmlmeinfo->network; + const u8 *p; +- int bcn_fixed_size; +- +- bcn_fixed_size = offsetof(struct ieee80211_mgmt, u.beacon.variable) - +- offsetof(struct ieee80211_mgmt, u.beacon); + + if (cur_network->capability & WLAN_CAPABILITY_PRIVACY) { +- for (i = bcn_fixed_size; i < pmlmeinfo->network.IELength;) { ++ for (i = 0; i < pmlmeinfo->network.IELength;) { + p = pmlmeinfo->network.IEs + i; + + switch (p[0]) { +@@ -1105,13 +1099,9 @@ bool should_forbid_n_rate23a(struct rtw_adapter * padapter) + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct wlan_bssid_ex *cur_network = &pmlmepriv->cur_network.network; + const u8 *p; +- int bcn_fixed_size; +- +- bcn_fixed_size = offsetof(struct ieee80211_mgmt, u.beacon.variable) - +- offsetof(struct ieee80211_mgmt, u.beacon); + + if (cur_network->capability & WLAN_CAPABILITY_PRIVACY) { +- for (i = bcn_fixed_size; i < cur_network->IELength;) { ++ for (i = 0; i < cur_network->IELength;) { + p = cur_network->IEs + i; + + switch (p[0]) { +@@ -1148,13 +1138,9 @@ bool is_ap_in_wep23a(struct rtw_adapter *padapter) + struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; + struct wlan_bssid_ex *cur_network = &pmlmeinfo->network; + const u8 *p; +- int bcn_fixed_size; +- +- bcn_fixed_size = offsetof(struct ieee80211_mgmt, u.beacon.variable) - +- offsetof(struct ieee80211_mgmt, u.beacon); + + if (cur_network->capability & WLAN_CAPABILITY_PRIVACY) { +- for (i = bcn_fixed_size; i < pmlmeinfo->network.IELength;) { ++ for (i = 0; i < pmlmeinfo->network.IELength;) { + p = pmlmeinfo->network.IEs + i; + + switch (p[0]) { +@@ -1334,17 +1320,14 @@ void update_tx_basic_rate23a(struct rtw_adapter *padapter, u8 wirelessmode) + + unsigned char check_assoc_AP23a(u8 *pframe, uint len) + { +- int i, bcn_fixed_size; ++ int i; + u8 epigram_vendor_flag; + u8 ralink_vendor_flag; + const u8 *p; + epigram_vendor_flag = 0; + ralink_vendor_flag = 0; + +- bcn_fixed_size = offsetof(struct ieee80211_mgmt, u.beacon.variable) - +- offsetof(struct ieee80211_mgmt, u.beacon); +- +- for (i = bcn_fixed_size; i < len;) { ++ for (i = 0; i < len;) { + p = pframe + i; + + switch (p[0]) { +diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c b/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c +index 2d67762..7a70e22 100644 +--- a/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c ++++ b/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c +@@ -209,7 +209,6 @@ ConstructBeacon(struct rtw_adapter *padapter, u8 *pframe, u32 *pLength) + 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", __func__); */ + +@@ -237,13 +236,9 @@ ConstructBeacon(struct rtw_adapter *padapter, u8 *pframe, u32 *pLength) + pktlen = offsetof(struct ieee80211_mgmt, u.beacon.variable); + + 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 - bcn_fixed_size; +- memcpy(pframe, cur_network->IEs + bcn_fixed_size, pktlen); ++ pktlen += cur_network->IELength; ++ memcpy(pframe, cur_network->IEs, pktlen); + + goto _ConstructBeacon; + } +diff --git a/drivers/staging/rtl8723au/include/wifi.h b/drivers/staging/rtl8723au/include/wifi.h +index d07fd12..2508120 100644 +--- a/drivers/staging/rtl8723au/include/wifi.h ++++ b/drivers/staging/rtl8723au/include/wifi.h +@@ -23,7 +23,7 @@ + */ + #define WiFiNavUpperUs 30000 /* 30 ms */ + +-#define _BEACON_IE_OFFSET_ 12 ++#define _BEACON_IE_OFFSET_ 0 + + #define _FIXED_IE_LENGTH_ _BEACON_IE_OFFSET_ + diff --git a/debian/patches/features/all/r8723au/0138-staging-rtl8723au-Get-rid-of-obsolete-_FIXED_IE_LENG.patch b/debian/patches/features/all/r8723au/0138-staging-rtl8723au-Get-rid-of-obsolete-_FIXED_IE_LENG.patch new file mode 100644 index 000000000..3b2a73d3f --- /dev/null +++ b/debian/patches/features/all/r8723au/0138-staging-rtl8723au-Get-rid-of-obsolete-_FIXED_IE_LENG.patch @@ -0,0 +1,417 @@ +From: Jes Sorensen +Date: Tue, 24 Jun 2014 15:03:30 +0200 +Subject: [138/249] staging: rtl8723au: Get rid of obsolete _FIXED_IE_LENGTH_ + + _BEACON_IE_OFFSET +Origin: https://git.kernel.org/linus/1de65ccb1f90be71cd7deb3c963f7440560e4325 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_ap.c | 68 +++++++++++------------ + drivers/staging/rtl8723au/core/rtw_mlme.c | 19 ++----- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 41 +++++--------- + drivers/staging/rtl8723au/hal/rtl8723a_cmd.c | 7 +-- + drivers/staging/rtl8723au/include/wifi.h | 5 -- + drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 7 +-- + 6 files changed, 58 insertions(+), 89 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_ap.c b/drivers/staging/rtl8723au/core/rtw_ap.c +index 5c30f7b..ab9a66e 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ap.c ++++ b/drivers/staging/rtl8723au/core/rtw_ap.c +@@ -77,8 +77,8 @@ static void update_BCNTIM(struct rtw_adapter *padapter) + + tim_bitmap_le = cpu_to_le16(pstapriv->tim_bitmap); + +- p = rtw_get_ie23a(pie + _FIXED_IE_LENGTH_, WLAN_EID_TIM, &tim_ielen, +- pnetwork_mlmeext->IELength - _FIXED_IE_LENGTH_); ++ p = rtw_get_ie23a(pie, WLAN_EID_TIM, &tim_ielen, ++ pnetwork_mlmeext->IELength); + if (p != NULL && tim_ielen>0) { + tim_ielen += 2; + +@@ -94,19 +94,17 @@ static void update_BCNTIM(struct rtw_adapter *padapter) + tim_ielen = 0; + + /* calulate head_len */ +- offset = _FIXED_IE_LENGTH_; ++ offset = 0; + + /* get ssid_ie len */ +- p = rtw_get_ie23a(pie + _BEACON_IE_OFFSET_, WLAN_EID_SSID, +- &tmp_len, (pnetwork_mlmeext->IELength - +- _BEACON_IE_OFFSET_)); ++ p = rtw_get_ie23a(pie, WLAN_EID_SSID, ++ &tmp_len, pnetwork_mlmeext->IELength); + if (p != NULL) + offset += tmp_len+2; + + /* get supported rates len */ +- p = rtw_get_ie23a(pie + _BEACON_IE_OFFSET_, WLAN_EID_SUPP_RATES, +- &tmp_len, (pnetwork_mlmeext->IELength - +- _BEACON_IE_OFFSET_)); ++ p = rtw_get_ie23a(pie, WLAN_EID_SUPP_RATES, ++ &tmp_len, pnetwork_mlmeext->IELength); + if (p != NULL) + offset += tmp_len+2; + +@@ -663,9 +661,8 @@ static void start_bss_network(struct rtw_adapter *padapter, u8 *pbuf) + /* and at first time the security ie (RSN/WPA IE) will not include in beacon. */ + if (NULL == cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT, + WLAN_OUI_TYPE_MICROSOFT_WPS, +- pnetwork->IEs + _FIXED_IE_LENGTH_, +- pnetwork->IELength - +- _FIXED_IE_LENGTH_)) ++ pnetwork->IEs, ++ pnetwork->IELength)) + pmlmeext->bstart_bss = true; + + /* todo: update wmm, ht cap */ +@@ -804,9 +801,8 @@ int rtw_check_beacon_data23a(struct rtw_adapter *padapter, + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct wlan_bssid_ex *pbss_network = &pmlmepriv->cur_network.network; + u8 *ie = pbss_network->IEs; +- u8 *pbuf = mgmt->u.beacon.variable - _FIXED_IE_LENGTH_; +- len -= (offsetof(struct ieee80211_mgmt, u.beacon.variable) - +- _FIXED_IE_LENGTH_); ++ u8 *pbuf = mgmt->u.beacon.variable; ++ len -= offsetof(struct ieee80211_mgmt, u.beacon.variable); + /* SSID */ + /* Supported rates */ + /* DS Params */ +@@ -841,8 +837,7 @@ int rtw_check_beacon_data23a(struct rtw_adapter *padapter, + memcpy(pbss_network->MacAddress, myid(&padapter->eeprompriv), ETH_ALEN); + + /* SSID */ +- p = rtw_get_ie23a(ie + _BEACON_IE_OFFSET_, WLAN_EID_SSID, &ie_len, +- (pbss_network->IELength -_BEACON_IE_OFFSET_)); ++ p = rtw_get_ie23a(ie, WLAN_EID_SSID, &ie_len, pbss_network->IELength); + if (p && ie_len > 0) { + memset(&pbss_network->Ssid, 0, sizeof(struct cfg80211_ssid)); + memcpy(pbss_network->Ssid.ssid, (p + 2), ie_len); +@@ -851,8 +846,8 @@ int rtw_check_beacon_data23a(struct rtw_adapter *padapter, + + /* chnnel */ + channel = 0; +- p = rtw_get_ie23a(ie + _BEACON_IE_OFFSET_, WLAN_EID_DS_PARAMS, &ie_len, +- (pbss_network->IELength - _BEACON_IE_OFFSET_)); ++ p = rtw_get_ie23a(ie, WLAN_EID_DS_PARAMS, &ie_len, ++ pbss_network->IELength); + if (p && ie_len > 0) + channel = *(p + 2); + +@@ -860,16 +855,16 @@ int rtw_check_beacon_data23a(struct rtw_adapter *padapter, + + memset(supportRate, 0, NDIS_802_11_LENGTH_RATES_EX); + /* get supported rates */ +- p = rtw_get_ie23a(ie + _BEACON_IE_OFFSET_, WLAN_EID_SUPP_RATES, &ie_len, +- (pbss_network->IELength - _BEACON_IE_OFFSET_)); ++ p = rtw_get_ie23a(ie, WLAN_EID_SUPP_RATES, &ie_len, ++ pbss_network->IELength); + if (p) { + memcpy(supportRate, p+2, ie_len); + supportRateNum = ie_len; + } + + /* get ext_supported rates */ +- p = rtw_get_ie23a(ie + _BEACON_IE_OFFSET_, WLAN_EID_EXT_SUPP_RATES, +- &ie_len, pbss_network->IELength - _BEACON_IE_OFFSET_); ++ p = rtw_get_ie23a(ie, WLAN_EID_EXT_SUPP_RATES, ++ &ie_len, pbss_network->IELength); + if (p) { + memcpy(supportRate+supportRateNum, p+2, ie_len); + supportRateNum += ie_len; +@@ -881,8 +876,8 @@ int rtw_check_beacon_data23a(struct rtw_adapter *padapter, + rtw_set_supported_rate23a(pbss_network->SupportedRates, network_type); + + /* parsing ERP_IE */ +- p = rtw_get_ie23a(ie + _BEACON_IE_OFFSET_, WLAN_EID_ERP_INFO, &ie_len, +- (pbss_network->IELength - _BEACON_IE_OFFSET_)); ++ p = rtw_get_ie23a(ie, WLAN_EID_ERP_INFO, &ie_len, ++ pbss_network->IELength); + if (p && ie_len > 0) + ERP_IE_handler23a(padapter, p); + +@@ -898,8 +893,8 @@ int rtw_check_beacon_data23a(struct rtw_adapter *padapter, + group_cipher = 0; pairwise_cipher = 0; + psecuritypriv->wpa2_group_cipher = 0; + psecuritypriv->wpa2_pairwise_cipher = 0; +- p = rtw_get_ie23a(ie + _BEACON_IE_OFFSET_, WLAN_EID_RSN, &ie_len, +- (pbss_network->IELength - _BEACON_IE_OFFSET_)); ++ p = rtw_get_ie23a(ie, WLAN_EID_RSN, &ie_len, ++ pbss_network->IELength); + if (p && ie_len > 0) { + if (rtw_parse_wpa2_ie23a(p, ie_len+2, &group_cipher, + &pairwise_cipher, NULL) == _SUCCESS) { +@@ -919,10 +914,9 @@ int rtw_check_beacon_data23a(struct rtw_adapter *padapter, + pairwise_cipher = 0; + psecuritypriv->wpa_group_cipher = 0; + psecuritypriv->wpa_pairwise_cipher = 0; +- for (p = ie + _BEACON_IE_OFFSET_; ;p += (ie_len + 2)) { ++ for (p = ie; ;p += (ie_len + 2)) { + p = rtw_get_ie23a(p, WLAN_EID_VENDOR_SPECIFIC, &ie_len, +- (pbss_network->IELength - _BEACON_IE_OFFSET_ - +- (ie_len + 2))); ++ pbss_network->IELength - (ie_len + 2)); + if ((p) && (!memcmp(p+2, RTW_WPA_OUI23A_TYPE, 4))) { + if (rtw_parse_wpa_ie23a(p, ie_len+2, &group_cipher, + &pairwise_cipher, NULL) == _SUCCESS) { +@@ -947,10 +941,10 @@ int rtw_check_beacon_data23a(struct rtw_adapter *padapter, + ie_len = 0; + pmlmepriv->qos_option = 0; + if (pregistrypriv->wmm_enable) { +- for (p = ie + _BEACON_IE_OFFSET_; ;p += (ie_len + 2)) { ++ for (p = ie; ;p += (ie_len + 2)) { + p = rtw_get_ie23a(p, WLAN_EID_VENDOR_SPECIFIC, &ie_len, + (pbss_network->IELength - +- _BEACON_IE_OFFSET_ - (ie_len + 2))); ++ (ie_len + 2))); + if ((p) && !memcmp(p+2, WMM_PARA_IE, 6)) { + pmlmepriv->qos_option = 1; + +@@ -970,8 +964,8 @@ int rtw_check_beacon_data23a(struct rtw_adapter *padapter, + } + } + /* parsing HT_CAP_IE */ +- p = rtw_get_ie23a(ie + _BEACON_IE_OFFSET_, WLAN_EID_HT_CAPABILITY, &ie_len, +- (pbss_network->IELength - _BEACON_IE_OFFSET_)); ++ p = rtw_get_ie23a(ie, WLAN_EID_HT_CAPABILITY, &ie_len, ++ pbss_network->IELength); + if (p && ie_len > 0) { + u8 rf_type; + +@@ -1002,8 +996,8 @@ int rtw_check_beacon_data23a(struct rtw_adapter *padapter, + } + + /* parsing HT_INFO_IE */ +- p = rtw_get_ie23a(ie + _BEACON_IE_OFFSET_, WLAN_EID_HT_OPERATION, &ie_len, +- (pbss_network->IELength - _BEACON_IE_OFFSET_)); ++ p = rtw_get_ie23a(ie, WLAN_EID_HT_OPERATION, &ie_len, ++ pbss_network->IELength); + if (p && ie_len > 0) + pHT_info_ie = p; + +@@ -1176,7 +1170,7 @@ static void update_bcn_erpinfo_ie(struct rtw_adapter *padapter) + return; + + /* parsing ERP_IE */ +- p = rtw_get_ie23a(ie + _BEACON_IE_OFFSET_, WLAN_EID_ERP_INFO, &len, (pnetwork->IELength - _BEACON_IE_OFFSET_)); ++ p = rtw_get_ie23a(ie, WLAN_EID_ERP_INFO, &len, pnetwork->IELength); + if (p && len > 0) { + if (pmlmepriv->num_sta_non_erp == 1) + p[2] |= WLAN_ERP_NON_ERP_PRESENT | +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c +index 1ccaa6f2..b3db56a 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c +@@ -546,10 +546,8 @@ static int rtw_is_desired_network(struct rtw_adapter *adapter, + if (check_fwstate(pmlmepriv, WIFI_UNDER_WPS)) { + if (cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT, + WLAN_OUI_TYPE_MICROSOFT_WPA, +- pnetwork->network.IEs + +- _FIXED_IE_LENGTH_, +- pnetwork->network.IELength - +- _FIXED_IE_LENGTH_)) ++ pnetwork->network.IEs, ++ pnetwork->network.IELength)) + return true; + else + return false; +@@ -1916,7 +1914,7 @@ int rtw_restruct_wmm_ie23a(struct rtw_adapter *adapter, u8 *in_ie, + unsigned int ielength = 0; + unsigned int i, j; + +- i = _FIXED_IE_LENGTH_; /* after the fixed IE */ ++ i = 0; /* after the fixed IE */ + while (i < in_len) { + ielength = initial_out_len; + +@@ -2025,9 +2023,7 @@ int rtw_restruct_sec_ie23a(struct rtw_adapter *adapter, u8 *in_ie, u8 *out_ie, + ("+rtw_restruct_sec_ie23a: ndisauthmode=%d " + "ndissecuritytype=%d\n", ndisauthmode, ndissecuritytype)); + +- /* copy fixed ie only */ +- memcpy(out_ie, in_ie, _FIXED_IE_LENGTH_); +- ielength = _FIXED_IE_LENGTH_; ++ ielength = 0; + if (ndisauthmode == Ndis802_11AuthModeWPA || + ndisauthmode == Ndis802_11AuthModeWPAPSK) + authmode = WLAN_EID_VENDOR_SPECIFIC; +@@ -2158,8 +2154,7 @@ bool rtw_restructure_ht_ie23a(struct rtw_adapter *padapter, u8 *in_ie, + + phtpriv->ht_option = false; + +- p = cfg80211_find_ie(WLAN_EID_HT_CAPABILITY, in_ie + _FIXED_IE_LENGTH_, +- in_len - _FIXED_IE_LENGTH_); ++ p = cfg80211_find_ie(WLAN_EID_HT_CAPABILITY, in_ie, in_len); + + if (p && p[1] > 0) { + u32 rx_packet_offset, max_recvbuf_sz; +@@ -2204,9 +2199,7 @@ bool rtw_restructure_ht_ie23a(struct rtw_adapter *padapter, u8 *in_ie, + + phtpriv->ht_option = true; + +- p = cfg80211_find_ie(WLAN_EID_HT_OPERATION, +- in_ie + _FIXED_IE_LENGTH_, +- in_len - _FIXED_IE_LENGTH_); ++ p = cfg80211_find_ie(WLAN_EID_HT_OPERATION, in_ie, in_len); + if (p && (p[1] == sizeof(struct ieee80211_ht_operation))) { + out_len = *pout_len; + pframe = rtw_set_ie23a(out_ie + out_len, +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index c473e33..3a86b75 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -2420,12 +2420,9 @@ void issue_beacon23a(struct rtw_adapter *padapter, int timeout_ms) + if ((pmlmeinfo->state & 0x03) == WIFI_FW_AP_STATE) { + u8 *iebuf; + int buflen; +- pframe -= _BEACON_IE_OFFSET_; + /* DBG_8723A("ie len =%d\n", cur_network->IELength); */ + memcpy(pframe, cur_network->IEs, cur_network->IELength); +- len_diff = update_hidden_ssid(pframe + _BEACON_IE_OFFSET_, +- cur_network->IELength - +- _BEACON_IE_OFFSET_, ++ len_diff = update_hidden_ssid(pframe, cur_network->IELength, + pmlmeinfo->hidden_ssid_mode); + pframe += (cur_network->IELength+len_diff); + pattrib->pktlen += (cur_network->IELength+len_diff); +@@ -2585,13 +2582,10 @@ static void issue_probersp(struct rtw_adapter *padapter, unsigned char *da, + if ((pmlmeinfo->state & 0x03) == WIFI_FW_AP_STATE) { + pwps_ie = cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT, + WLAN_OUI_TYPE_MICROSOFT_WPS, +- cur_network->IEs + +- _FIXED_IE_LENGTH_, +- cur_network->IELength - +- _FIXED_IE_LENGTH_); ++ cur_network->IEs, ++ cur_network->IELength); + +- memcpy(pframe, cur_network->IEs + _FIXED_IE_LENGTH_, +- cur_network->IELength - _FIXED_IE_LENGTH_); ++ memcpy(pframe, cur_network->IEs, cur_network->IELength); + pframe += cur_network->IELength; + pattrib->pktlen += cur_network->IELength; + +@@ -3045,9 +3039,8 @@ static void issue_assocrsp(struct rtw_adapter *padapter, unsigned short status, + if (pstat->flags & WLAN_STA_HT && pmlmepriv->htpriv.ht_option) { + /* FILL HT CAP INFO IE */ + /* p = hostapd_eid_ht_capabilities_info(hapd, p); */ +- p = cfg80211_find_ie(WLAN_EID_HT_CAPABILITY, +- ie + _BEACON_IE_OFFSET_, +- pnetwork->IELength -_BEACON_IE_OFFSET_); ++ p = cfg80211_find_ie(WLAN_EID_HT_CAPABILITY, ie, ++ pnetwork->IELength); + if (p && p[1]) { + memcpy(pframe, p, p[1] + 2); + pframe += (p[1] + 2); +@@ -3056,9 +3049,8 @@ static void issue_assocrsp(struct rtw_adapter *padapter, unsigned short status, + + /* FILL HT ADD INFO IE */ + /* p = hostapd_eid_ht_operation(hapd, p); */ +- p = cfg80211_find_ie(WLAN_EID_HT_OPERATION, +- ie + _BEACON_IE_OFFSET_, +- pnetwork->IELength - _BEACON_IE_OFFSET_); ++ p = cfg80211_find_ie(WLAN_EID_HT_OPERATION, ie, ++ pnetwork->IELength); + if (p && p[1] > 0) { + memcpy(pframe, p, p[1] + 2); + pframe += (p[1] + 2); +@@ -3072,10 +3064,9 @@ static void issue_assocrsp(struct rtw_adapter *padapter, unsigned short status, + 0x01, 0x01}; + int ie_len = 0; + +- for (p = ie + _BEACON_IE_OFFSET_; ; p += (ie_len + 2)) { ++ for (p = ie; ; p += (ie_len + 2)) { + p = cfg80211_find_ie(WLAN_EID_VENDOR_SPECIFIC, p, +- pnetwork->IELength - +- _BEACON_IE_OFFSET_ - (ie_len + 2)); ++ pnetwork->IELength - (ie_len + 2)); + if (p) + ie_len = p[1]; + else +@@ -4534,9 +4525,8 @@ static void process_80211d(struct rtw_adapter *padapter, + u8 noc; /* number of channel */ + u8 j, k; + +- ie = cfg80211_find_ie(WLAN_EID_COUNTRY, +- bssid->IEs + _FIXED_IE_LENGTH_, +- bssid->IELength - _FIXED_IE_LENGTH_); ++ ie = cfg80211_find_ie(WLAN_EID_COUNTRY, bssid->IEs, ++ bssid->IELength); + if (!ie || ie[1] < IEEE80211_COUNTRY_IE_MIN_LEN) + return; + +@@ -6065,10 +6055,9 @@ int set_tx_beacon_cmd23a(struct rtw_adapter* padapter) + memcpy(&ptxBeacon_parm->network, &pmlmeinfo->network, + sizeof(struct wlan_bssid_ex)); + +- len_diff = update_hidden_ssid( +- ptxBeacon_parm->network.IEs+_BEACON_IE_OFFSET_, +- ptxBeacon_parm->network.IELength-_BEACON_IE_OFFSET_, +- pmlmeinfo->hidden_ssid_mode); ++ len_diff = update_hidden_ssid(ptxBeacon_parm->network.IEs, ++ ptxBeacon_parm->network.IELength, ++ pmlmeinfo->hidden_ssid_mode); + ptxBeacon_parm->network.IELength += len_diff; + + init_h2fwcmd_w_parm_no_rsp(ph2c, ptxBeacon_parm, +diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c b/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c +index 7a70e22..66ece49 100644 +--- a/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c ++++ b/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c +@@ -428,10 +428,9 @@ static void ConstructProbeRsp(struct rtw_adapter *padapter, u8 *pframe, + if (cur_network->IELength > MAX_IE_SZ) + return; + +- memcpy(mgmt->u.probe_resp.variable, +- cur_network->IEs + _FIXED_IE_LENGTH_, +- cur_network->IELength - _FIXED_IE_LENGTH_); +- pktlen += (cur_network->IELength - _FIXED_IE_LENGTH_); ++ memcpy(mgmt->u.probe_resp.variable, cur_network->IEs, ++ cur_network->IELength); ++ pktlen += (cur_network->IELength); + + *pLength = pktlen; + } +diff --git a/drivers/staging/rtl8723au/include/wifi.h b/drivers/staging/rtl8723au/include/wifi.h +index 2508120..23026e9 100644 +--- a/drivers/staging/rtl8723au/include/wifi.h ++++ b/drivers/staging/rtl8723au/include/wifi.h +@@ -23,11 +23,6 @@ + */ + #define WiFiNavUpperUs 30000 /* 30 ms */ + +-#define _BEACON_IE_OFFSET_ 0 +- +-#define _FIXED_IE_LENGTH_ _BEACON_IE_OFFSET_ +- +- + #define EID_BSSIntolerantChlReport 73 + + /*----------------------------------------------------------------------------- +diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +index 2a4a696..5e8f7b3 100644 +--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c ++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +@@ -264,8 +264,8 @@ static int rtw_cfg80211_inform_bss(struct rtw_adapter *padapter, + + notify_channel = ieee80211_get_channel(wiphy, freq); + +- notify_ie = pnetwork->network.IEs + _FIXED_IE_LENGTH_; +- notify_ielen = pnetwork->network.IELength - _FIXED_IE_LENGTH_; ++ notify_ie = pnetwork->network.IEs; ++ notify_ielen = pnetwork->network.IELength; + + /* We've set wiphy's signal_type as CFG80211_SIGNAL_TYPE_MBM: + * signal strength in mBm (100*dBm) +@@ -1191,8 +1191,7 @@ static u16 rtw_get_cur_max_rate(struct rtw_adapter *adapter) + u16 mcs_rate = 0; + + p = cfg80211_find_ie(WLAN_EID_HT_CAPABILITY, +- &pcur_bss->IEs[_FIXED_IE_LENGTH_], +- pcur_bss->IELength - _FIXED_IE_LENGTH_); ++ pcur_bss->IEs, pcur_bss->IELength); + if (p && p[1] > 0) { + pht_capie = (struct ieee80211_ht_cap *)(p + 2); + diff --git a/debian/patches/features/all/r8723au/0139-staging-rtl8723au-Remove-unused-define-EID_BSSIntole.patch b/debian/patches/features/all/r8723au/0139-staging-rtl8723au-Remove-unused-define-EID_BSSIntole.patch new file mode 100644 index 000000000..429704d71 --- /dev/null +++ b/debian/patches/features/all/r8723au/0139-staging-rtl8723au-Remove-unused-define-EID_BSSIntole.patch @@ -0,0 +1,25 @@ +From: Jes Sorensen +Date: Tue, 24 Jun 2014 15:03:31 +0200 +Subject: [139/249] staging: rtl8723au: Remove unused #define + EID_BSSIntolerantChlReport +Origin: https://git.kernel.org/linus/71b0956b16872c2ac93ab2d269e1af6685b78f8e + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/include/wifi.h | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/drivers/staging/rtl8723au/include/wifi.h b/drivers/staging/rtl8723au/include/wifi.h +index 23026e9..b82b0d0 100644 +--- a/drivers/staging/rtl8723au/include/wifi.h ++++ b/drivers/staging/rtl8723au/include/wifi.h +@@ -23,8 +23,6 @@ + */ + #define WiFiNavUpperUs 30000 /* 30 ms */ + +-#define EID_BSSIntolerantChlReport 73 +- + /*----------------------------------------------------------------------------- + Below is the definition for 802.11n + ------------------------------------------------------------------------------*/ diff --git a/debian/patches/features/all/r8723au/0140-staging-rtl8723au-Remove-unused-define-P80211CAPTURE.patch b/debian/patches/features/all/r8723au/0140-staging-rtl8723au-Remove-unused-define-P80211CAPTURE.patch new file mode 100644 index 000000000..a9311b496 --- /dev/null +++ b/debian/patches/features/all/r8723au/0140-staging-rtl8723au-Remove-unused-define-P80211CAPTURE.patch @@ -0,0 +1,25 @@ +From: Jes Sorensen +Date: Tue, 24 Jun 2014 15:03:32 +0200 +Subject: [140/249] staging: rtl8723au: Remove unused #define + P80211CAPTURE_VERSION +Origin: https://git.kernel.org/linus/7ef2a15a40aa87e0b0dab35044248c08df511044 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/include/wifi.h | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/drivers/staging/rtl8723au/include/wifi.h b/drivers/staging/rtl8723au/include/wifi.h +index b82b0d0..fd3da3b 100644 +--- a/drivers/staging/rtl8723au/include/wifi.h ++++ b/drivers/staging/rtl8723au/include/wifi.h +@@ -15,8 +15,6 @@ + #ifndef _WIFI_H_ + #define _WIFI_H_ + +-#define P80211CAPTURE_VERSION 0x80211001 +- + /* This value is tested by WiFi 11n Test Plan 5.2.3. + * This test verifies the WLAN NIC can update the NAV through sending + * the CTS with large duration. diff --git a/debian/patches/features/all/r8723au/0141-staging-rtl8723au-rtw_get_wps_attr_content23a-Remove.patch b/debian/patches/features/all/r8723au/0141-staging-rtl8723au-rtw_get_wps_attr_content23a-Remove.patch new file mode 100644 index 000000000..a4504078d --- /dev/null +++ b/debian/patches/features/all/r8723au/0141-staging-rtl8723au-rtw_get_wps_attr_content23a-Remove.patch @@ -0,0 +1,71 @@ +From: Jes Sorensen +Date: Tue, 24 Jun 2014 15:03:33 +0200 +Subject: [141/249] staging: rtl8723au: rtw_get_wps_attr_content23a(): Remove + unused argument +Origin: https://git.kernel.org/linus/c250e07e99ac8381e99a1a0c406a4342243df6ac + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_ieee80211.c | 9 +-------- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 2 +- + drivers/staging/rtl8723au/include/ieee80211.h | 2 +- + 3 files changed, 3 insertions(+), 10 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_ieee80211.c b/drivers/staging/rtl8723au/core/rtw_ieee80211.c +index 2cb8eed..1f28cca 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ieee80211.c ++++ b/drivers/staging/rtl8723au/core/rtw_ieee80211.c +@@ -667,15 +667,11 @@ const u8 *rtw_get_wps_attr23a(const u8 *wps_ie, uint wps_ielen, + * Returns: the address of the specific WPS attribute content found, or NULL + */ + const u8 *rtw_get_wps_attr_content23a(const u8 *wps_ie, uint wps_ielen, +- u16 target_attr_id, u8 *buf_content, +- uint *len_content) ++ u16 target_attr_id, u8 *buf_content) + { + const u8 *attr_ptr; + u32 attr_len; + +- if (len_content) +- *len_content = 0; +- + attr_ptr = rtw_get_wps_attr23a(wps_ie, wps_ielen, target_attr_id, + NULL, &attr_len); + +@@ -683,9 +679,6 @@ const u8 *rtw_get_wps_attr_content23a(const u8 *wps_ie, uint wps_ielen, + if (buf_content) + memcpy(buf_content, attr_ptr + 4, attr_len - 4); + +- if (len_content) +- *len_content = attr_len - 4; +- + return attr_ptr + 4; + } + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index 3a86b75..4b769d5 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -2437,7 +2437,7 @@ void issue_beacon23a(struct rtw_adapter *padapter, int timeout_ms) + if (wps_ie && wps_ie[1] > 0) { + rtw_get_wps_attr_content23a(wps_ie, wps_ie[1], + WPS_ATTR_SELECTED_REGISTRAR, +- (u8*)&sr, NULL); ++ (u8*)&sr); + } + if (sr != 0) + set_fwstate(pmlmepriv, WIFI_UNDER_WPS); +diff --git a/drivers/staging/rtl8723au/include/ieee80211.h b/drivers/staging/rtl8723au/include/ieee80211.h +index 43f002d..89c23ae 100644 +--- a/drivers/staging/rtl8723au/include/ieee80211.h ++++ b/drivers/staging/rtl8723au/include/ieee80211.h +@@ -389,7 +389,7 @@ int rtw_parse_wpa_ie23a(const u8* wpa_ie, int wpa_ie_len, int *group_cipher, int + int rtw_parse_wpa2_ie23a(const u8* wpa_ie, int wpa_ie_len, int *group_cipher, int *pairwise_cipher, int *is_8021x); + + const u8 *rtw_get_wps_attr23a(const u8 *wps_ie, uint wps_ielen, u16 target_attr_id ,u8 *buf_attr, u32 *len_attr); +-const u8 *rtw_get_wps_attr_content23a(const u8 *wps_ie, uint wps_ielen, u16 target_attr_id ,u8 *buf_content, uint *len_content); ++const u8 *rtw_get_wps_attr_content23a(const u8 *wps_ie, uint wps_ielen, u16 target_attr_id ,u8 *buf_content); + + uint rtw_get_rateset_len23a(u8 *rateset); + diff --git a/debian/patches/features/all/r8723au/0142-staging-rtl8723au-Remove-unused-RSN_VERSION_BSD23A.patch b/debian/patches/features/all/r8723au/0142-staging-rtl8723au-Remove-unused-RSN_VERSION_BSD23A.patch new file mode 100644 index 000000000..c00ec5d61 --- /dev/null +++ b/debian/patches/features/all/r8723au/0142-staging-rtl8723au-Remove-unused-RSN_VERSION_BSD23A.patch @@ -0,0 +1,36 @@ +From: Jes Sorensen +Date: Tue, 24 Jun 2014 15:03:34 +0200 +Subject: [142/249] staging: rtl8723au: Remove unused RSN_VERSION_BSD23A +Origin: https://git.kernel.org/linus/ef80f1f564e2337266f98c49646b55c54d95db98 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_ieee80211.c | 1 - + drivers/staging/rtl8723au/include/ieee80211.h | 1 - + 2 files changed, 2 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_ieee80211.c b/drivers/staging/rtl8723au/core/rtw_ieee80211.c +index 1f28cca..78a7b27 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ieee80211.c ++++ b/drivers/staging/rtl8723au/core/rtw_ieee80211.c +@@ -33,7 +33,6 @@ u8 WPA_CIPHER_SUITE_WRAP23A[] = { 0x00, 0x50, 0xf2, 3 }; + u8 WPA_CIPHER_SUITE_CCMP23A[] = { 0x00, 0x50, 0xf2, 4 }; + u8 WPA_CIPHER_SUITE_WEP10423A[] = { 0x00, 0x50, 0xf2, 5 }; + +-u16 RSN_VERSION_BSD23A = 1; + u8 RSN_AUTH_KEY_MGMT_UNSPEC_802_1X23A[] = { 0x00, 0x0f, 0xac, 1 }; + u8 RSN_AUTH_KEY_MGMT_PSK_OVER_802_1X23A[] = { 0x00, 0x0f, 0xac, 2 }; + u8 RSN_CIPHER_SUITE_NONE23A[] = { 0x00, 0x0f, 0xac, 0 }; +diff --git a/drivers/staging/rtl8723au/include/ieee80211.h b/drivers/staging/rtl8723au/include/ieee80211.h +index 89c23ae..0b17a7f 100644 +--- a/drivers/staging/rtl8723au/include/ieee80211.h ++++ b/drivers/staging/rtl8723au/include/ieee80211.h +@@ -79,7 +79,6 @@ extern u8 WPA_CIPHER_SUITE_WEP10423A[]; + #define RSN_HEADER_LEN 4 + #define RSN_SELECTOR_LEN 4 + +-extern u16 RSN_VERSION_BSD23A; + extern u8 RSN_AUTH_KEY_MGMT_UNSPEC_802_1X23A[]; + extern u8 RSN_AUTH_KEY_MGMT_PSK_OVER_802_1X23A[]; + extern u8 RSN_CIPHER_SUITE_NONE23A[]; diff --git a/debian/patches/features/all/r8723au/0143-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-Use.patch b/debian/patches/features/all/r8723au/0143-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-Use.patch new file mode 100644 index 000000000..69674fe91 --- /dev/null +++ b/debian/patches/features/all/r8723au/0143-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-Use.patch @@ -0,0 +1,156 @@ +From: Jes Sorensen +Date: Tue, 24 Jun 2014 15:03:35 +0200 +Subject: [143/249] staging: rtl8723au: rtw_cfg80211_ap_set_encryption(): Use + key_params->cipher to determine encryption +Origin: https://git.kernel.org/linus/5dab9e7d2af054ad1df60ef51e25b2dd5e85517b + +Passing strings around for something we have defines for is just +silly. + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 47 +++++++++++++++-------- + 1 file changed, 31 insertions(+), 16 deletions(-) + +diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +index 5e8f7b3..f44d0f4 100644 +--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c ++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +@@ -501,7 +501,8 @@ static int set_wep_key(struct rtw_adapter *padapter, u8 *key, u16 keylen, + + static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, + struct ieee_param *param, +- u32 param_len) ++ u32 param_len, ++ struct key_params *keyparms) + { + int ret = 0; + u16 wep_key_len; +@@ -549,7 +550,8 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, + goto exit; + } + +- if (strcmp(param->u.crypt.alg, "WEP") == 0 && (psta == NULL)) { ++ if (!psta && (keyparms->cipher == WLAN_CIPHER_SUITE_WEP40 || ++ keyparms->cipher == WLAN_CIPHER_SUITE_WEP104)) { + DBG_8723A("r871x_set_encryption, crypt.alg = WEP\n"); + + wep_key_idx = param->u.crypt.idx; +@@ -598,7 +600,8 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, + + if (!psta && check_fwstate(pmlmepriv, WIFI_AP_STATE)) { /* group key */ + if (param->u.crypt.set_tx == 0) { /* group key */ +- if (strcmp(param->u.crypt.alg, "WEP") == 0) { ++ if (keyparms->cipher == WLAN_CIPHER_SUITE_WEP40 || ++ keyparms->cipher == WLAN_CIPHER_SUITE_WEP104) { + DBG_8723A("%s, set group_key, WEP\n", __func__); + + memcpy(psecuritypriv-> +@@ -613,7 +616,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, + WLAN_CIPHER_SUITE_WEP104; + } + +- } else if (strcmp(param->u.crypt.alg, "TKIP") == 0) { ++ } else if (keyparms->cipher == WLAN_CIPHER_SUITE_TKIP) { + DBG_8723A("%s, set group_key, TKIP\n", + __func__); + +@@ -638,8 +641,8 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, + + psecuritypriv->busetkipkey = 1; + +- } else if (strcmp(param->u.crypt.alg, "CCMP") == 0) { +- DBG_8723A("%s, set group_key, CCMP\n", ++ } else if (keyparms->cipher == WLAN_CIPHER_SUITE_CCMP) { ++ DBG_8723A("%s, set group_key, CCMP\n", + __func__); + + psecuritypriv->dot118021XGrpPrivacy = WLAN_CIPHER_SUITE_CCMP; +@@ -692,7 +695,10 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, + (param->u.crypt.key_len > + 16 ? 16 : param->u.crypt.key_len)); + +- if (!strcmp(param->u.crypt.alg, "WEP")) { ++ if (keyparms->cipher == ++ WLAN_CIPHER_SUITE_WEP40 || ++ keyparms->cipher == ++ WLAN_CIPHER_SUITE_WEP104) { + DBG_8723A("%s, set pairwise key, WEP\n", + __func__); + +@@ -701,11 +707,13 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, + psta->dot118021XPrivacy = + WLAN_CIPHER_SUITE_WEP104; + } +- } else if (!strcmp(param->u.crypt.alg, "TKIP")) { ++ } else if (keyparms->cipher == ++ WLAN_CIPHER_SUITE_TKIP) { + DBG_8723A("%s, set pairwise key, " + "TKIP\n", __func__); + +- psta->dot118021XPrivacy = WLAN_CIPHER_SUITE_TKIP; ++ psta->dot118021XPrivacy = ++ WLAN_CIPHER_SUITE_TKIP; + + /* DEBUG_ERR("set key length :param->u.crypt.key_len =%d\n", param->u.crypt.key_len); */ + /* set mic key */ +@@ -716,12 +724,13 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, + + psecuritypriv->busetkipkey = 1; + +- } else if (!strcmp(param->u.crypt.alg, "CCMP")) { +- ++ } else if (keyparms->cipher == ++ WLAN_CIPHER_SUITE_CCMP) { + DBG_8723A("%s, set pairwise key, " + "CCMP\n", __func__); + +- psta->dot118021XPrivacy = WLAN_CIPHER_SUITE_CCMP; ++ psta->dot118021XPrivacy = ++ WLAN_CIPHER_SUITE_CCMP; + } else { + DBG_8723A("%s, set pairwise key, " + "none\n", __func__); +@@ -735,7 +744,10 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, + + psta->bpairwise_key_installed = true; + } else { /* group key??? */ +- if (!strcmp(param->u.crypt.alg, "WEP")) { ++ if (keyparms->cipher == ++ WLAN_CIPHER_SUITE_WEP40 || ++ keyparms->cipher == ++ WLAN_CIPHER_SUITE_WEP104) { + memcpy(psecuritypriv-> + dot118021XGrpKey[param->u.crypt. + idx].skey, +@@ -751,7 +763,8 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, + dot118021XGrpPrivacy = + WLAN_CIPHER_SUITE_WEP104; + } +- } else if (!strcmp(param->u.crypt.alg, "TKIP")) { ++ } else if (keyparms->cipher == ++ WLAN_CIPHER_SUITE_TKIP) { + psecuritypriv->dot118021XGrpPrivacy = + WLAN_CIPHER_SUITE_TKIP; + +@@ -780,7 +793,8 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, + + psecuritypriv->busetkipkey = 1; + +- } else if (!strcmp(param->u.crypt.alg, "CCMP")) { ++ } else if (keyparms->cipher == ++ WLAN_CIPHER_SUITE_CCMP) { + psecuritypriv->dot118021XGrpPrivacy = + WLAN_CIPHER_SUITE_CCMP; + +@@ -1099,7 +1113,8 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev, + if (mac_addr) + ether_addr_copy(param->sta_addr, mac_addr); + +- ret = rtw_cfg80211_ap_set_encryption(ndev, param, param_len); ++ ret = rtw_cfg80211_ap_set_encryption(ndev, param, param_len, ++ params); + #endif + } else { + DBG_8723A("error! fw_state = 0x%x, iftype =%d\n", diff --git a/debian/patches/features/all/r8723au/0144-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-is-.patch b/debian/patches/features/all/r8723au/0144-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-is-.patch new file mode 100644 index 000000000..2a8a27cb3 --- /dev/null +++ b/debian/patches/features/all/r8723au/0144-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-is-.patch @@ -0,0 +1,320 @@ +From: Jes Sorensen +Date: Tue, 24 Jun 2014 15:03:36 +0200 +Subject: [144/249] staging: rtl8723au: rtw_cfg80211_ap_set_encryption() is + only called for WIFI_AP_STATE +Origin: https://git.kernel.org/linus/4e297c21bf2932178e7bdaeff654914b576e5f70 + +No point checking it again in here, twice! + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 237 ++++++++++------------ + 1 file changed, 110 insertions(+), 127 deletions(-) + +diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +index f44d0f4..bbc4ac5 100644 +--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c ++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +@@ -509,7 +509,6 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, + u8 wep_key_idx; + struct sta_info *psta = NULL, *pbcmc_sta = NULL; + struct rtw_adapter *padapter = netdev_priv(dev); +- struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct security_priv *psecuritypriv = &padapter->securitypriv; + struct sta_priv *pstapriv = &padapter->stapriv; + +@@ -598,7 +597,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, + + } + +- if (!psta && check_fwstate(pmlmepriv, WIFI_AP_STATE)) { /* group key */ ++ if (!psta) { /* group key */ + if (param->u.crypt.set_tx == 0) { /* group key */ + if (keyparms->cipher == WLAN_CIPHER_SUITE_WEP40 || + keyparms->cipher == WLAN_CIPHER_SUITE_WEP104) { +@@ -620,7 +619,8 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, + DBG_8723A("%s, set group_key, TKIP\n", + __func__); + +- psecuritypriv->dot118021XGrpPrivacy = WLAN_CIPHER_SUITE_TKIP; ++ psecuritypriv->dot118021XGrpPrivacy = ++ WLAN_CIPHER_SUITE_TKIP; + + memcpy(psecuritypriv-> + dot118021XGrpKey[param->u.crypt.idx]. +@@ -645,7 +645,8 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, + DBG_8723A("%s, set group_key, CCMP\n", + __func__); + +- psecuritypriv->dot118021XGrpPrivacy = WLAN_CIPHER_SUITE_CCMP; ++ psecuritypriv->dot118021XGrpPrivacy = ++ WLAN_CIPHER_SUITE_CCMP; + + memcpy(psecuritypriv-> + dot118021XGrpKey[param->u.crypt.idx]. +@@ -685,151 +686,134 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, + goto exit; + } + +- if (psecuritypriv->dot11AuthAlgrthm == +- dot11AuthAlgrthm_8021X && psta) { /* psk/802_1x */ +- if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) { +- if (param->u.crypt.set_tx == 1) { +- /* pairwise key */ +- memcpy(psta->dot118021x_UncstKey.skey, +- param->u.crypt.key, +- (param->u.crypt.key_len > +- 16 ? 16 : param->u.crypt.key_len)); ++ if (psecuritypriv->dot11AuthAlgrthm == dot11AuthAlgrthm_8021X && psta) { ++ /* psk/802_1x */ ++ if (param->u.crypt.set_tx == 1) { ++ /* pairwise key */ ++ memcpy(psta->dot118021x_UncstKey.skey, ++ param->u.crypt.key, ++ (param->u.crypt.key_len > ++ 16 ? 16 : param->u.crypt.key_len)); + +- if (keyparms->cipher == +- WLAN_CIPHER_SUITE_WEP40 || +- keyparms->cipher == +- WLAN_CIPHER_SUITE_WEP104) { +- DBG_8723A("%s, set pairwise key, WEP\n", +- __func__); +- +- psta->dot118021XPrivacy = WLAN_CIPHER_SUITE_WEP40; +- if (param->u.crypt.key_len == 13) { +- psta->dot118021XPrivacy = +- WLAN_CIPHER_SUITE_WEP104; +- } +- } else if (keyparms->cipher == +- WLAN_CIPHER_SUITE_TKIP) { +- DBG_8723A("%s, set pairwise key, " +- "TKIP\n", __func__); ++ if (keyparms->cipher == WLAN_CIPHER_SUITE_WEP40 || ++ keyparms->cipher == WLAN_CIPHER_SUITE_WEP104) { ++ DBG_8723A("%s, set pairwise key, WEP\n", ++ __func__); + ++ psta->dot118021XPrivacy = ++ WLAN_CIPHER_SUITE_WEP40; ++ if (param->u.crypt.key_len == 13) { + psta->dot118021XPrivacy = +- WLAN_CIPHER_SUITE_TKIP; ++ WLAN_CIPHER_SUITE_WEP104; ++ } ++ } else if (keyparms->cipher == WLAN_CIPHER_SUITE_TKIP) { ++ DBG_8723A("%s, set pairwise key, TKIP\n", ++ __func__); + +- /* DEBUG_ERR("set key length :param->u.crypt.key_len =%d\n", param->u.crypt.key_len); */ +- /* set mic key */ +- memcpy(psta->dot11tkiptxmickey.skey, +- ¶m->u.crypt.key[16], 8); +- memcpy(psta->dot11tkiprxmickey.skey, +- ¶m->u.crypt.key[24], 8); ++ psta->dot118021XPrivacy = ++ WLAN_CIPHER_SUITE_TKIP; + +- psecuritypriv->busetkipkey = 1; ++ /* DEBUG_ERR("set key length :param->u.crypt.key_len =%d\n", param->u.crypt.key_len); */ ++ /* set mic key */ ++ memcpy(psta->dot11tkiptxmickey.skey, ++ ¶m->u.crypt.key[16], 8); ++ memcpy(psta->dot11tkiprxmickey.skey, ++ ¶m->u.crypt.key[24], 8); + +- } else if (keyparms->cipher == +- WLAN_CIPHER_SUITE_CCMP) { +- DBG_8723A("%s, set pairwise key, " +- "CCMP\n", __func__); ++ psecuritypriv->busetkipkey = 1; + +- psta->dot118021XPrivacy = +- WLAN_CIPHER_SUITE_CCMP; +- } else { +- DBG_8723A("%s, set pairwise key, " +- "none\n", __func__); ++ } else if (keyparms->cipher == WLAN_CIPHER_SUITE_CCMP) { ++ DBG_8723A("%s, set pairwise key, CCMP\n", ++ __func__); + +- psta->dot118021XPrivacy = 0; +- } ++ psta->dot118021XPrivacy = ++ WLAN_CIPHER_SUITE_CCMP; ++ } else { ++ DBG_8723A("%s, set pairwise key, none\n", ++ __func__); ++ ++ psta->dot118021XPrivacy = 0; ++ } + +- set_pairwise_key(padapter, psta); ++ set_pairwise_key(padapter, psta); + +- psta->ieee8021x_blocked = false; ++ psta->ieee8021x_blocked = false; + +- psta->bpairwise_key_installed = true; +- } else { /* group key??? */ +- if (keyparms->cipher == +- WLAN_CIPHER_SUITE_WEP40 || +- keyparms->cipher == +- WLAN_CIPHER_SUITE_WEP104) { +- memcpy(psecuritypriv-> +- dot118021XGrpKey[param->u.crypt. +- idx].skey, +- param->u.crypt.key, +- (param->u.crypt.key_len > +- 16 ? 16 : param->u.crypt. +- key_len)); ++ psta->bpairwise_key_installed = true; ++ } else { /* group key??? */ ++ if (keyparms->cipher == WLAN_CIPHER_SUITE_WEP40 || ++ keyparms->cipher == WLAN_CIPHER_SUITE_WEP104) { ++ memcpy(psecuritypriv-> ++ dot118021XGrpKey[param->u.crypt. ++ idx].skey, ++ param->u.crypt.key, ++ (param->u.crypt.key_len > ++ 16 ? 16 : param->u.crypt.key_len)); + ++ psecuritypriv->dot118021XGrpPrivacy = ++ WLAN_CIPHER_SUITE_WEP40; ++ if (param->u.crypt.key_len == 13) { + psecuritypriv->dot118021XGrpPrivacy = +- WLAN_CIPHER_SUITE_WEP40; +- if (param->u.crypt.key_len == 13) { +- psecuritypriv-> +- dot118021XGrpPrivacy = +- WLAN_CIPHER_SUITE_WEP104; +- } +- } else if (keyparms->cipher == +- WLAN_CIPHER_SUITE_TKIP) { +- psecuritypriv->dot118021XGrpPrivacy = +- WLAN_CIPHER_SUITE_TKIP; ++ WLAN_CIPHER_SUITE_WEP104; ++ } ++ } else if (keyparms->cipher == WLAN_CIPHER_SUITE_TKIP) { ++ psecuritypriv->dot118021XGrpPrivacy = ++ WLAN_CIPHER_SUITE_TKIP; + +- memcpy(psecuritypriv-> +- dot118021XGrpKey[param->u.crypt. +- idx].skey, +- param->u.crypt.key, +- (param->u.crypt.key_len > +- 16 ? 16 : param->u.crypt. +- key_len)); ++ memcpy(psecuritypriv-> ++ dot118021XGrpKey[param->u.crypt. ++ idx].skey, ++ param->u.crypt.key, ++ (param->u.crypt.key_len > ++ 16 ? 16 : param->u.crypt.key_len)); + +- /* DEBUG_ERR("set key length :param->u" +- ".crypt.key_len =%d\n", +- param->u.crypt.key_len); */ +- /* set mic key */ +- memcpy(psecuritypriv-> +- dot118021XGrptxmickey[param->u. +- crypt.idx]. +- skey, ¶m->u.crypt.key[16], +- 8); +- memcpy(psecuritypriv-> +- dot118021XGrprxmickey[param->u. +- crypt.idx]. +- skey, ¶m->u.crypt.key[24], +- 8); ++ /* DEBUG_ERR("set key length :param->u" ++ ".crypt.key_len =%d\n", ++ param->u.crypt.key_len); */ ++ /* set mic key */ ++ memcpy(psecuritypriv-> ++ dot118021XGrptxmickey[param->u. ++ crypt.idx].skey, ++ ¶m->u.crypt.key[16], 8); ++ memcpy(psecuritypriv-> ++ dot118021XGrprxmickey[param->u. ++ crypt.idx].skey, ++ ¶m->u.crypt.key[24], 8); + +- psecuritypriv->busetkipkey = 1; ++ psecuritypriv->busetkipkey = 1; + +- } else if (keyparms->cipher == +- WLAN_CIPHER_SUITE_CCMP) { +- psecuritypriv->dot118021XGrpPrivacy = +- WLAN_CIPHER_SUITE_CCMP; ++ } else if (keyparms->cipher == WLAN_CIPHER_SUITE_CCMP) { ++ psecuritypriv->dot118021XGrpPrivacy = ++ WLAN_CIPHER_SUITE_CCMP; + +- memcpy(psecuritypriv-> +- dot118021XGrpKey[param->u.crypt. +- idx].skey, +- param->u.crypt.key, +- (param->u.crypt.key_len > +- 16 ? 16 : param->u.crypt. +- key_len)); +- } else { +- psecuritypriv->dot118021XGrpPrivacy = +- 0; +- } ++ memcpy(psecuritypriv-> ++ dot118021XGrpKey[param->u.crypt. ++ idx].skey, ++ param->u.crypt.key, ++ (param->u.crypt.key_len > ++ 16 ? 16 : param->u.crypt.key_len)); ++ } else { ++ psecuritypriv->dot118021XGrpPrivacy = 0; ++ } + +- psecuritypriv->dot118021XGrpKeyid = +- param->u.crypt.idx; ++ psecuritypriv->dot118021XGrpKeyid = param->u.crypt.idx; + +- psecuritypriv->binstallGrpkey = 1; ++ psecuritypriv->binstallGrpkey = 1; + +- psecuritypriv->dot11PrivacyAlgrthm = +- psecuritypriv->dot118021XGrpPrivacy; ++ psecuritypriv->dot11PrivacyAlgrthm = ++ psecuritypriv->dot118021XGrpPrivacy; + +- set_group_key(padapter, param->u.crypt.key, +- psecuritypriv-> +- dot118021XGrpPrivacy, +- param->u.crypt.idx); ++ set_group_key(padapter, param->u.crypt.key, ++ psecuritypriv->dot118021XGrpPrivacy, ++ param->u.crypt.idx); + +- pbcmc_sta = rtw_get_bcmc_stainfo23a(padapter); +- if (pbcmc_sta) { +- /* rx will use bmc_sta's +- dot118021XPrivacy */ +- pbcmc_sta->ieee8021x_blocked = false; +- pbcmc_sta->dot118021XPrivacy = psecuritypriv->dot118021XGrpPrivacy; +- } ++ pbcmc_sta = rtw_get_bcmc_stainfo23a(padapter); ++ if (pbcmc_sta) { ++ /* rx will use bmc_sta's ++ dot118021XPrivacy */ ++ pbcmc_sta->ieee8021x_blocked = false; ++ pbcmc_sta->dot118021XPrivacy = ++ psecuritypriv->dot118021XGrpPrivacy; + } + } + } +@@ -837,7 +821,6 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, + exit: + + return ret; +- + } + #endif + diff --git a/debian/patches/features/all/r8723au/0145-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-Use.patch b/debian/patches/features/all/r8723au/0145-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-Use.patch new file mode 100644 index 000000000..4e2e294ab --- /dev/null +++ b/debian/patches/features/all/r8723au/0145-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-Use.patch @@ -0,0 +1,188 @@ +From: Jes Sorensen +Date: Tue, 24 Jun 2014 15:03:37 +0200 +Subject: [145/249] staging: rtl8723au: rtw_cfg80211_ap_set_encryption(): Use + key len from struct key_params +Origin: https://git.kernel.org/linus/c36e122f6eba4e31c67d572c1e01ef845747010d + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 55 ++++++++++------------- + 1 file changed, 24 insertions(+), 31 deletions(-) + +diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +index bbc4ac5..0925d56 100644 +--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c ++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +@@ -417,7 +417,7 @@ exit: + return res; + } + +-static int set_group_key(struct rtw_adapter *padapter, u8 *key, u32 alg, ++static int set_group_key(struct rtw_adapter *padapter, const u8 *key, u32 alg, + u8 keyid) + { + u8 keylen; +@@ -480,7 +480,7 @@ exit: + return res; + } + +-static int set_wep_key(struct rtw_adapter *padapter, u8 *key, u16 keylen, ++static int set_wep_key(struct rtw_adapter *padapter, const u8 *key, u16 keylen, + u8 keyid) + { + u32 alg; +@@ -505,7 +505,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, + struct key_params *keyparms) + { + int ret = 0; +- u16 wep_key_len; ++ int key_len; + u8 wep_key_idx; + struct sta_info *psta = NULL, *pbcmc_sta = NULL; + struct rtw_adapter *padapter = netdev_priv(dev); +@@ -549,23 +549,24 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, + goto exit; + } + ++ key_len = keyparms->key_len; ++ + if (!psta && (keyparms->cipher == WLAN_CIPHER_SUITE_WEP40 || + keyparms->cipher == WLAN_CIPHER_SUITE_WEP104)) { + DBG_8723A("r871x_set_encryption, crypt.alg = WEP\n"); + + wep_key_idx = param->u.crypt.idx; +- wep_key_len = param->u.crypt.key_len; + + DBG_8723A("r871x_set_encryption, wep_key_idx =%d, len =%d\n", +- wep_key_idx, wep_key_len); ++ wep_key_idx, key_len); + +- if ((wep_key_idx >= WEP_KEYS) || (wep_key_len <= 0)) { ++ if (wep_key_idx >= WEP_KEYS || key_len <= 0) { + ret = -EINVAL; + goto exit; + } + +- if (wep_key_len > 0) { +- wep_key_len = wep_key_len <= 5 ? 5 : 13; ++ if (key_len > 0) { ++ key_len = key_len <= 5 ? 5 : 13; + } + + if (psecuritypriv->bWepDefaultKeyIdxSet == 0) { +@@ -577,7 +578,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, + psecuritypriv->dot11PrivacyAlgrthm = WLAN_CIPHER_SUITE_WEP40; + psecuritypriv->dot118021XGrpPrivacy = WLAN_CIPHER_SUITE_WEP40; + +- if (wep_key_len == 13) { ++ if (key_len == 13) { + psecuritypriv->dot11PrivacyAlgrthm = WLAN_CIPHER_SUITE_WEP104; + psecuritypriv->dot118021XGrpPrivacy = WLAN_CIPHER_SUITE_WEP104; + } +@@ -586,12 +587,11 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, + } + + memcpy(&psecuritypriv->wep_key[wep_key_idx].key, +- param->u.crypt.key, wep_key_len); ++ keyparms->key, key_len); + +- psecuritypriv->wep_key[wep_key_idx].keylen = wep_key_len; ++ psecuritypriv->wep_key[wep_key_idx].keylen = key_len; + +- set_wep_key(padapter, param->u.crypt.key, wep_key_len, +- wep_key_idx); ++ set_wep_key(padapter, keyparms->key, key_len, wep_key_idx); + + goto exit; + +@@ -605,12 +605,11 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, + + memcpy(psecuritypriv-> + dot118021XGrpKey[param->u.crypt.idx]. +- skey, param->u.crypt.key, +- (param->u.crypt.key_len > +- 16 ? 16 : param->u.crypt.key_len)); ++ skey, keyparms->key, ++ (key_len > 16 ? 16 : key_len)); + + psecuritypriv->dot118021XGrpPrivacy = WLAN_CIPHER_SUITE_WEP40; +- if (param->u.crypt.key_len == 13) { ++ if (key_len == 13) { + psecuritypriv->dot118021XGrpPrivacy = + WLAN_CIPHER_SUITE_WEP104; + } +@@ -625,8 +624,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, + memcpy(psecuritypriv-> + dot118021XGrpKey[param->u.crypt.idx]. + skey, param->u.crypt.key, +- (param->u.crypt.key_len > +- 16 ? 16 : param->u.crypt.key_len)); ++ (key_len > 16 ? 16 : key_len)); + + /* DEBUG_ERR("set key length :param->u.crypt.key_len =%d\n", param->u.crypt.key_len); */ + /* set mic key */ +@@ -651,8 +649,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, + memcpy(psecuritypriv-> + dot118021XGrpKey[param->u.crypt.idx]. + skey, param->u.crypt.key, +- (param->u.crypt.key_len > +- 16 ? 16 : param->u.crypt.key_len)); ++ (key_len > 16 ? 16 : key_len)); + } else { + DBG_8723A("%s, set group_key, none\n", + __func__); +@@ -692,8 +689,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, + /* pairwise key */ + memcpy(psta->dot118021x_UncstKey.skey, + param->u.crypt.key, +- (param->u.crypt.key_len > +- 16 ? 16 : param->u.crypt.key_len)); ++ (key_len > 16 ? 16 : key_len)); + + if (keyparms->cipher == WLAN_CIPHER_SUITE_WEP40 || + keyparms->cipher == WLAN_CIPHER_SUITE_WEP104) { +@@ -702,7 +698,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, + + psta->dot118021XPrivacy = + WLAN_CIPHER_SUITE_WEP40; +- if (param->u.crypt.key_len == 13) { ++ if (key_len == 13) { + psta->dot118021XPrivacy = + WLAN_CIPHER_SUITE_WEP104; + } +@@ -747,12 +743,11 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, + dot118021XGrpKey[param->u.crypt. + idx].skey, + param->u.crypt.key, +- (param->u.crypt.key_len > +- 16 ? 16 : param->u.crypt.key_len)); ++ (key_len > 16 ? 16 : key_len)); + + psecuritypriv->dot118021XGrpPrivacy = + WLAN_CIPHER_SUITE_WEP40; +- if (param->u.crypt.key_len == 13) { ++ if (key_len == 13) { + psecuritypriv->dot118021XGrpPrivacy = + WLAN_CIPHER_SUITE_WEP104; + } +@@ -764,8 +759,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, + dot118021XGrpKey[param->u.crypt. + idx].skey, + param->u.crypt.key, +- (param->u.crypt.key_len > +- 16 ? 16 : param->u.crypt.key_len)); ++ (key_len > 16 ? 16 : key_len)); + + /* DEBUG_ERR("set key length :param->u" + ".crypt.key_len =%d\n", +@@ -790,8 +784,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, + dot118021XGrpKey[param->u.crypt. + idx].skey, + param->u.crypt.key, +- (param->u.crypt.key_len > +- 16 ? 16 : param->u.crypt.key_len)); ++ (key_len > 16 ? 16 : key_len)); + } else { + psecuritypriv->dot118021XGrpPrivacy = 0; + } diff --git a/debian/patches/features/all/r8723au/0146-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-Sto.patch b/debian/patches/features/all/r8723au/0146-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-Sto.patch new file mode 100644 index 000000000..28106f3f9 --- /dev/null +++ b/debian/patches/features/all/r8723au/0146-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-Sto.patch @@ -0,0 +1,50 @@ +From: Jes Sorensen +Date: Tue, 24 Jun 2014 15:03:38 +0200 +Subject: [146/249] staging: rtl8723au: rtw_cfg80211_ap_set_encryption(): Stop + using param->u.crypt.alg +Origin: https://git.kernel.org/linus/f84f97fd6a90080b89a7aa6ddd7b6b5b6d6c3898 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 20 +++++++++++--------- + 1 file changed, 11 insertions(+), 9 deletions(-) + +diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +index 0925d56..ac13df1 100644 +--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c ++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +@@ -530,6 +530,17 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, + ret = -EINVAL; + goto exit; + } ++ switch (keyparms->cipher) { ++ case WLAN_CIPHER_SUITE_WEP40: ++ case WLAN_CIPHER_SUITE_WEP104: ++ case WLAN_CIPHER_SUITE_TKIP: ++ case WLAN_CIPHER_SUITE_CCMP: ++ break; ++ default: ++ ret = -EINVAL; ++ goto exit; ++ } ++ + } else { + psta = rtw_get_stainfo23a(pstapriv, param->sta_addr); + if (!psta) { +@@ -540,15 +551,6 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, + } + } + +- if (strcmp(param->u.crypt.alg, "none") == 0 && (psta == NULL)) { +- /* todo:clear default encryption keys */ +- +- DBG_8723A("clear default encryption keys, keyid =%d\n", +- param->u.crypt.idx); +- +- goto exit; +- } +- + key_len = keyparms->key_len; + + if (!psta && (keyparms->cipher == WLAN_CIPHER_SUITE_WEP40 || diff --git a/debian/patches/features/all/r8723au/0147-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-Use.patch b/debian/patches/features/all/r8723au/0147-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-Use.patch new file mode 100644 index 000000000..23e88aa88 --- /dev/null +++ b/debian/patches/features/all/r8723au/0147-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-Use.patch @@ -0,0 +1,86 @@ +From: Jes Sorensen +Date: Tue, 24 Jun 2014 15:03:39 +0200 +Subject: [147/249] staging: rtl8723au: rtw_cfg80211_ap_set_encryption(): Use + keyparms->cipher to set WEP size +Origin: https://git.kernel.org/linus/55db5d02f81bd45c3a47f4ab4a917a70c6e13916 + +We already know which type of WEP we are using when we get here, no +point trying to determine it from key_len. + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 32 +++++------------------ + 1 file changed, 7 insertions(+), 25 deletions(-) + +diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +index ac13df1..c0b0cb1 100644 +--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c ++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +@@ -577,13 +577,8 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, + + psecuritypriv->ndisencryptstatus = + Ndis802_11Encryption1Enabled; +- psecuritypriv->dot11PrivacyAlgrthm = WLAN_CIPHER_SUITE_WEP40; +- psecuritypriv->dot118021XGrpPrivacy = WLAN_CIPHER_SUITE_WEP40; +- +- if (key_len == 13) { +- psecuritypriv->dot11PrivacyAlgrthm = WLAN_CIPHER_SUITE_WEP104; +- psecuritypriv->dot118021XGrpPrivacy = WLAN_CIPHER_SUITE_WEP104; +- } ++ psecuritypriv->dot11PrivacyAlgrthm = keyparms->cipher; ++ psecuritypriv->dot118021XGrpPrivacy = keyparms->cipher; + + psecuritypriv->dot11PrivacyKeyIndex = wep_key_idx; + } +@@ -596,7 +591,6 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, + set_wep_key(padapter, keyparms->key, key_len, wep_key_idx); + + goto exit; +- + } + + if (!psta) { /* group key */ +@@ -610,12 +604,8 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, + skey, keyparms->key, + (key_len > 16 ? 16 : key_len)); + +- psecuritypriv->dot118021XGrpPrivacy = WLAN_CIPHER_SUITE_WEP40; +- if (key_len == 13) { +- psecuritypriv->dot118021XGrpPrivacy = +- WLAN_CIPHER_SUITE_WEP104; +- } +- ++ psecuritypriv->dot118021XGrpPrivacy = ++ keyparms->cipher; + } else if (keyparms->cipher == WLAN_CIPHER_SUITE_TKIP) { + DBG_8723A("%s, set group_key, TKIP\n", + __func__); +@@ -698,12 +688,8 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, + DBG_8723A("%s, set pairwise key, WEP\n", + __func__); + +- psta->dot118021XPrivacy = +- WLAN_CIPHER_SUITE_WEP40; +- if (key_len == 13) { +- psta->dot118021XPrivacy = +- WLAN_CIPHER_SUITE_WEP104; +- } ++ psecuritypriv->dot118021XGrpPrivacy = ++ keyparms->cipher; + } else if (keyparms->cipher == WLAN_CIPHER_SUITE_TKIP) { + DBG_8723A("%s, set pairwise key, TKIP\n", + __func__); +@@ -748,11 +734,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, + (key_len > 16 ? 16 : key_len)); + + psecuritypriv->dot118021XGrpPrivacy = +- WLAN_CIPHER_SUITE_WEP40; +- if (key_len == 13) { +- psecuritypriv->dot118021XGrpPrivacy = +- WLAN_CIPHER_SUITE_WEP104; +- } ++ keyparms->cipher; + } else if (keyparms->cipher == WLAN_CIPHER_SUITE_TKIP) { + psecuritypriv->dot118021XGrpPrivacy = + WLAN_CIPHER_SUITE_TKIP; diff --git a/debian/patches/features/all/r8723au/0148-staging-rtl8723au-rtw_cfg80211_set_encryption-Pass-a.patch b/debian/patches/features/all/r8723au/0148-staging-rtl8723au-rtw_cfg80211_set_encryption-Pass-a.patch new file mode 100644 index 000000000..06f46cd25 --- /dev/null +++ b/debian/patches/features/all/r8723au/0148-staging-rtl8723au-rtw_cfg80211_set_encryption-Pass-a.patch @@ -0,0 +1,36 @@ +From: Jes Sorensen +Date: Tue, 24 Jun 2014 15:03:40 +0200 +Subject: [148/249] staging: rtl8723au: rtw_cfg80211_set_encryption(): Pass + additional struct key_params +Origin: https://git.kernel.org/linus/a9e346fb88d6daeef37c21a3c55ebd70f1501fd2 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +index c0b0cb1..7c3a58f 100644 +--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c ++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +@@ -802,7 +802,8 @@ exit: + #endif + + static int rtw_cfg80211_set_encryption(struct net_device *dev, +- struct ieee_param *param, u32 param_len) ++ struct ieee_param *param, u32 param_len, ++ struct key_params *keyparms) + { + int ret = 0; + u32 wep_key_idx; +@@ -1067,7 +1068,8 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev, + } + + if (check_fwstate(pmlmepriv, WIFI_STATION_STATE)) { +- ret = rtw_cfg80211_set_encryption(ndev, param, param_len); ++ ret = rtw_cfg80211_set_encryption(ndev, param, param_len, ++ params); + } else if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) { + #ifdef CONFIG_8723AU_AP_MODE + if (mac_addr) diff --git a/debian/patches/features/all/r8723au/0149-staging-rtl8723au-rtw_cfg80211_set_encryption-Obtain.patch b/debian/patches/features/all/r8723au/0149-staging-rtl8723au-rtw_cfg80211_set_encryption-Obtain.patch new file mode 100644 index 000000000..4deb2333b --- /dev/null +++ b/debian/patches/features/all/r8723au/0149-staging-rtl8723au-rtw_cfg80211_set_encryption-Obtain.patch @@ -0,0 +1,109 @@ +From: Jes Sorensen +Date: Tue, 24 Jun 2014 15:03:41 +0200 +Subject: [149/249] staging: rtl8723au: rtw_cfg80211_set_encryption(): Obtain + key_len from struct key_params +Origin: https://git.kernel.org/linus/d0dc266692d1bd4579fd9abd4a9b80f8d0ab5150 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 28 +++++++++-------------- + 1 file changed, 11 insertions(+), 17 deletions(-) + +diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +index 7c3a58f..5ea0fa1 100644 +--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c ++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +@@ -807,7 +807,7 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev, + { + int ret = 0; + u32 wep_key_idx; +- u16 wep_key_len; ++ int key_len; + struct rtw_adapter *padapter = netdev_priv(dev); + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct security_priv *psecuritypriv = &padapter->securitypriv; +@@ -817,9 +817,10 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev, + param->u.crypt.err = 0; + param->u.crypt.alg[IEEE_CRYPT_ALG_NAME_LEN - 1] = '\0'; + ++ key_len = keyparms->key_len; ++ + if (param_len < +- (u32) ((u8 *) param->u.crypt.key - (u8 *) param) + +- param->u.crypt.key_len) { ++ (u32) ((u8 *) param->u.crypt.key - (u8 *) param) + key_len) { + ret = -EINVAL; + goto exit; + } +@@ -840,9 +841,8 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev, + DBG_8723A("wpa_set_encryption, crypt.alg = WEP\n"); + + wep_key_idx = param->u.crypt.idx; +- wep_key_len = param->u.crypt.key_len; + +- if ((wep_key_idx > WEP_KEYS) || (wep_key_len <= 0)) { ++ if (wep_key_idx > WEP_KEYS || key_len <= 0) { + ret = -EINVAL; + goto exit; + } +@@ -851,14 +851,14 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev, + /* wep default key has not been set, so use this + key index as default key. */ + +- wep_key_len = wep_key_len <= 5 ? 5 : 13; ++ key_len = key_len <= 5 ? 5 : 13; + + psecuritypriv->ndisencryptstatus = + Ndis802_11Encryption1Enabled; + psecuritypriv->dot11PrivacyAlgrthm = WLAN_CIPHER_SUITE_WEP40; + psecuritypriv->dot118021XGrpPrivacy = WLAN_CIPHER_SUITE_WEP40; + +- if (wep_key_len == 13) { ++ if (key_len == 13) { + psecuritypriv->dot11PrivacyAlgrthm = WLAN_CIPHER_SUITE_WEP104; + psecuritypriv->dot118021XGrpPrivacy = WLAN_CIPHER_SUITE_WEP104; + } +@@ -867,9 +867,9 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev, + } + + memcpy(&psecuritypriv->wep_key[wep_key_idx].key, +- param->u.crypt.key, wep_key_len); ++ param->u.crypt.key, key_len); + +- psecuritypriv->wep_key[wep_key_idx].keylen = wep_key_len; ++ psecuritypriv->wep_key[wep_key_idx].keylen = key_len; + + rtw_set_key23a(padapter, psecuritypriv, wep_key_idx, 0); + +@@ -910,9 +910,7 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev, + + memcpy(psta->dot118021x_UncstKey.skey, + param->u.crypt.key, +- (param->u.crypt.key_len > +- 16 ? 16 : param->u.crypt. +- key_len)); ++ (key_len > 16 ? 16 : key_len)); + + if (strcmp(param->u.crypt.alg, + "TKIP") == 0) { +@@ -938,9 +936,7 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev, + dot118021XGrpKey[param->u.crypt. + idx].skey, + param->u.crypt.key, +- (param->u.crypt.key_len > +- 16 ? 16 : param->u.crypt. +- key_len)); ++ (key_len > 16 ? 16 : key_len)); + memcpy(padapter->securitypriv. + dot118021XGrptxmickey[param->u. + crypt.idx]. +@@ -953,8 +949,6 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev, + 8); + padapter->securitypriv.binstallGrpkey = + 1; +- /* DEBUG_ERR((" param->u.crypt.key_len" +- "=%d\n", param->u.crypt.key_len)); */ + DBG_8723A + (" ~~~~set sta key:groupkey\n"); + diff --git a/debian/patches/features/all/r8723au/0150-staging-rtl8723au-rtw_cfg80211_set_encryption-Use-ke.patch b/debian/patches/features/all/r8723au/0150-staging-rtl8723au-rtw_cfg80211_set_encryption-Use-ke.patch new file mode 100644 index 000000000..6f6aca825 --- /dev/null +++ b/debian/patches/features/all/r8723au/0150-staging-rtl8723au-rtw_cfg80211_set_encryption-Use-ke.patch @@ -0,0 +1,39 @@ +From: Jes Sorensen +Date: Tue, 24 Jun 2014 15:03:42 +0200 +Subject: [150/249] staging: rtl8723au: rtw_cfg80211_set_encryption(): Use + key_params->cipher +Origin: https://git.kernel.org/linus/8188b1cb6165655d087edf89b6619e62021762d8 + +Use key_params->cipher to determine WEP/TKIP + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +index 5ea0fa1..2e21223 100644 +--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c ++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +@@ -835,7 +835,8 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev, + goto exit; + } + +- if (strcmp(param->u.crypt.alg, "WEP") == 0) { ++ if (keyparms->cipher == WLAN_CIPHER_SUITE_WEP40 || ++ keyparms->cipher == WLAN_CIPHER_SUITE_WEP104) { + RT_TRACE(_module_rtl871x_ioctl_os_c, _drv_err_, + ("wpa_set_encryption, crypt.alg = WEP\n")); + DBG_8723A("wpa_set_encryption, crypt.alg = WEP\n"); +@@ -912,8 +913,8 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev, + param->u.crypt.key, + (key_len > 16 ? 16 : key_len)); + +- if (strcmp(param->u.crypt.alg, +- "TKIP") == 0) { ++ if (keyparms->cipher == ++ WLAN_CIPHER_SUITE_TKIP) { + memcpy(psta->dot11tkiptxmickey. + skey, + ¶m->u.crypt.key[16], diff --git a/debian/patches/features/all/r8723au/0151-staging-rtl8723au-rtw_cfg80211_set_encryption-Obtain.patch b/debian/patches/features/all/r8723au/0151-staging-rtl8723au-rtw_cfg80211_set_encryption-Obtain.patch new file mode 100644 index 000000000..d1135b8ba --- /dev/null +++ b/debian/patches/features/all/r8723au/0151-staging-rtl8723au-rtw_cfg80211_set_encryption-Obtain.patch @@ -0,0 +1,70 @@ +From: Jes Sorensen +Date: Tue, 24 Jun 2014 15:03:43 +0200 +Subject: [151/249] staging: rtl8723au: rtw_cfg80211_set_encryption(): Obtain + key from key_params->key +Origin: https://git.kernel.org/linus/e1343f90809ab29bd1ec286fef1d9e6fcc59b404 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 18 +++++++----------- + 1 file changed, 7 insertions(+), 11 deletions(-) + +diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +index 2e21223..e521c77 100644 +--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c ++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +@@ -868,7 +868,7 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev, + } + + memcpy(&psecuritypriv->wep_key[wep_key_idx].key, +- param->u.crypt.key, key_len); ++ keyparms->key, key_len); + + psecuritypriv->wep_key[wep_key_idx].keylen = key_len; + +@@ -910,19 +910,17 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev, + " == 1\n", __func__); + + memcpy(psta->dot118021x_UncstKey.skey, +- param->u.crypt.key, ++ keyparms->key, + (key_len > 16 ? 16 : key_len)); + + if (keyparms->cipher == + WLAN_CIPHER_SUITE_TKIP) { + memcpy(psta->dot11tkiptxmickey. + skey, +- ¶m->u.crypt.key[16], +- 8); ++ &keyparms->key[16], 8); + memcpy(psta->dot11tkiprxmickey. + skey, +- ¶m->u.crypt.key[24], +- 8); ++ &keyparms->key[24], 8); + + padapter->securitypriv. + busetkipkey = 0; +@@ -936,18 +934,16 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev, + memcpy(padapter->securitypriv. + dot118021XGrpKey[param->u.crypt. + idx].skey, +- param->u.crypt.key, ++ keyparms->key, + (key_len > 16 ? 16 : key_len)); + memcpy(padapter->securitypriv. + dot118021XGrptxmickey[param->u. + crypt.idx]. +- skey, ¶m->u.crypt.key[16], +- 8); ++ skey, &keyparms->key[16], 8); + memcpy(padapter->securitypriv. + dot118021XGrprxmickey[param->u. + crypt.idx]. +- skey, ¶m->u.crypt.key[24], +- 8); ++ skey, &keyparms->key[24], 8); + padapter->securitypriv.binstallGrpkey = + 1; + DBG_8723A diff --git a/debian/patches/features/all/r8723au/0152-staging-rtl8723au-rtw_cfg80211_set_encryption-Pass-k.patch b/debian/patches/features/all/r8723au/0152-staging-rtl8723au-rtw_cfg80211_set_encryption-Pass-k.patch new file mode 100644 index 000000000..3628dbab5 --- /dev/null +++ b/debian/patches/features/all/r8723au/0152-staging-rtl8723au-rtw_cfg80211_set_encryption-Pass-k.patch @@ -0,0 +1,117 @@ +From: Jes Sorensen +Date: Tue, 24 Jun 2014 15:03:44 +0200 +Subject: [152/249] staging: rtl8723au: rtw_cfg80211_set_encryption(): Pass + key_index as argument +Origin: https://git.kernel.org/linus/5292a891979aab582cb66e5105fc2ab78ff2a070 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 35 +++++++++-------------- + 1 file changed, 14 insertions(+), 21 deletions(-) + +diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +index e521c77..c5ac645 100644 +--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c ++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +@@ -801,12 +801,11 @@ exit: + } + #endif + +-static int rtw_cfg80211_set_encryption(struct net_device *dev, ++static int rtw_cfg80211_set_encryption(struct net_device *dev, u8 key_index, + struct ieee_param *param, u32 param_len, + struct key_params *keyparms) + { + int ret = 0; +- u32 wep_key_idx; + int key_len; + struct rtw_adapter *padapter = netdev_priv(dev); + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; +@@ -826,7 +825,7 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev, + } + + if (is_broadcast_ether_addr(param->sta_addr)) { +- if (param->u.crypt.idx >= WEP_KEYS) { ++ if (key_index >= WEP_KEYS) { + ret = -EINVAL; + goto exit; + } +@@ -841,9 +840,7 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev, + ("wpa_set_encryption, crypt.alg = WEP\n")); + DBG_8723A("wpa_set_encryption, crypt.alg = WEP\n"); + +- wep_key_idx = param->u.crypt.idx; +- +- if (wep_key_idx > WEP_KEYS || key_len <= 0) { ++ if (key_index > WEP_KEYS || key_len <= 0) { + ret = -EINVAL; + goto exit; + } +@@ -864,15 +861,15 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev, + psecuritypriv->dot118021XGrpPrivacy = WLAN_CIPHER_SUITE_WEP104; + } + +- psecuritypriv->dot11PrivacyKeyIndex = wep_key_idx; ++ psecuritypriv->dot11PrivacyKeyIndex = key_index; + } + +- memcpy(&psecuritypriv->wep_key[wep_key_idx].key, ++ memcpy(&psecuritypriv->wep_key[key_index].key, + keyparms->key, key_len); + +- psecuritypriv->wep_key[wep_key_idx].keylen = key_len; ++ psecuritypriv->wep_key[key_index].keylen = key_len; + +- rtw_set_key23a(padapter, psecuritypriv, wep_key_idx, 0); ++ rtw_set_key23a(padapter, psecuritypriv, key_index, 0); + + goto exit; + } +@@ -932,17 +929,14 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev, + true); + } else { /* group key */ + memcpy(padapter->securitypriv. +- dot118021XGrpKey[param->u.crypt. +- idx].skey, ++ dot118021XGrpKey[key_index].skey, + keyparms->key, + (key_len > 16 ? 16 : key_len)); + memcpy(padapter->securitypriv. +- dot118021XGrptxmickey[param->u. +- crypt.idx]. ++ dot118021XGrptxmickey[key_index]. + skey, &keyparms->key[16], 8); + memcpy(padapter->securitypriv. +- dot118021XGrprxmickey[param->u. +- crypt.idx]. ++ dot118021XGrprxmickey[key_index]. + skey, &keyparms->key[24], 8); + padapter->securitypriv.binstallGrpkey = + 1; +@@ -950,12 +944,11 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev, + (" ~~~~set sta key:groupkey\n"); + + padapter->securitypriv. +- dot118021XGrpKeyid = +- param->u.crypt.idx; ++ dot118021XGrpKeyid = key_index; + + rtw_set_key23a(padapter, + &padapter->securitypriv, +- param->u.crypt.idx, 1); ++ key_index, 1); + } + } + +@@ -1059,8 +1052,8 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev, + } + + if (check_fwstate(pmlmepriv, WIFI_STATION_STATE)) { +- ret = rtw_cfg80211_set_encryption(ndev, param, param_len, +- params); ++ ret = rtw_cfg80211_set_encryption(ndev, key_index, param, ++ param_len, params); + } else if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) { + #ifdef CONFIG_8723AU_AP_MODE + if (mac_addr) diff --git a/debian/patches/features/all/r8723au/0153-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-Pas.patch b/debian/patches/features/all/r8723au/0153-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-Pas.patch new file mode 100644 index 000000000..3f435e7c5 --- /dev/null +++ b/debian/patches/features/all/r8723au/0153-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-Pas.patch @@ -0,0 +1,211 @@ +From: Jes Sorensen +Date: Tue, 24 Jun 2014 15:03:45 +0200 +Subject: [153/249] staging: rtl8723au: rtw_cfg80211_ap_set_encryption(): Pass + key_index argument +Origin: https://git.kernel.org/linus/f7ce87cdb7b8e7a674fa66d3948c5f6986737377 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 62 ++++++++++------------- + 1 file changed, 26 insertions(+), 36 deletions(-) + +diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +index c5ac645..819573f 100644 +--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c ++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +@@ -499,14 +499,13 @@ static int set_wep_key(struct rtw_adapter *padapter, const u8 *key, u16 keylen, + return set_group_key(padapter, key, alg, keyid); + } + +-static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, ++static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index, + struct ieee_param *param, + u32 param_len, + struct key_params *keyparms) + { + int ret = 0; + int key_len; +- u8 wep_key_idx; + struct sta_info *psta = NULL, *pbcmc_sta = NULL; + struct rtw_adapter *padapter = netdev_priv(dev); + struct security_priv *psecuritypriv = &padapter->securitypriv; +@@ -526,7 +525,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, + } + + if (is_broadcast_ether_addr(param->sta_addr)) { +- if (param->u.crypt.idx >= WEP_KEYS) { ++ if (key_index >= WEP_KEYS) { + ret = -EINVAL; + goto exit; + } +@@ -557,12 +556,10 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, + keyparms->cipher == WLAN_CIPHER_SUITE_WEP104)) { + DBG_8723A("r871x_set_encryption, crypt.alg = WEP\n"); + +- wep_key_idx = param->u.crypt.idx; +- + DBG_8723A("r871x_set_encryption, wep_key_idx =%d, len =%d\n", +- wep_key_idx, key_len); ++ key_index, key_len); + +- if (wep_key_idx >= WEP_KEYS || key_len <= 0) { ++ if (key_index >= WEP_KEYS || key_len <= 0) { + ret = -EINVAL; + goto exit; + } +@@ -580,15 +577,15 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, + psecuritypriv->dot11PrivacyAlgrthm = keyparms->cipher; + psecuritypriv->dot118021XGrpPrivacy = keyparms->cipher; + +- psecuritypriv->dot11PrivacyKeyIndex = wep_key_idx; ++ psecuritypriv->dot11PrivacyKeyIndex = key_index; + } + +- memcpy(&psecuritypriv->wep_key[wep_key_idx].key, ++ memcpy(&psecuritypriv->wep_key[key_index].key, + keyparms->key, key_len); + +- psecuritypriv->wep_key[wep_key_idx].keylen = key_len; ++ psecuritypriv->wep_key[key_index].keylen = key_len; + +- set_wep_key(padapter, keyparms->key, key_len, wep_key_idx); ++ set_wep_key(padapter, keyparms->key, key_len, key_index); + + goto exit; + } +@@ -600,8 +597,8 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, + DBG_8723A("%s, set group_key, WEP\n", __func__); + + memcpy(psecuritypriv-> +- dot118021XGrpKey[param->u.crypt.idx]. +- skey, keyparms->key, ++ dot118021XGrpKey[key_index].skey, ++ keyparms->key, + (key_len > 16 ? 16 : key_len)); + + psecuritypriv->dot118021XGrpPrivacy = +@@ -614,19 +611,17 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, + WLAN_CIPHER_SUITE_TKIP; + + memcpy(psecuritypriv-> +- dot118021XGrpKey[param->u.crypt.idx]. +- skey, param->u.crypt.key, ++ dot118021XGrpKey[key_index].skey, ++ param->u.crypt.key, + (key_len > 16 ? 16 : key_len)); + + /* DEBUG_ERR("set key length :param->u.crypt.key_len =%d\n", param->u.crypt.key_len); */ + /* set mic key */ + memcpy(psecuritypriv-> +- dot118021XGrptxmickey[param->u.crypt. +- idx].skey, ++ dot118021XGrptxmickey[key_index].skey, + ¶m->u.crypt.key[16], 8); + memcpy(psecuritypriv-> +- dot118021XGrprxmickey[param->u.crypt. +- idx].skey, ++ dot118021XGrprxmickey[key_index].skey, + ¶m->u.crypt.key[24], 8); + + psecuritypriv->busetkipkey = 1; +@@ -639,7 +634,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, + WLAN_CIPHER_SUITE_CCMP; + + memcpy(psecuritypriv-> +- dot118021XGrpKey[param->u.crypt.idx]. ++ dot118021XGrpKey[key_index]. + skey, param->u.crypt.key, + (key_len > 16 ? 16 : key_len)); + } else { +@@ -650,7 +645,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, + 0; + } + +- psecuritypriv->dot118021XGrpKeyid = param->u.crypt.idx; ++ psecuritypriv->dot118021XGrpKeyid = key_index; + + psecuritypriv->binstallGrpkey = 1; + +@@ -659,7 +654,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, + + set_group_key(padapter, param->u.crypt.key, + psecuritypriv->dot118021XGrpPrivacy, +- param->u.crypt.idx); ++ key_index); + + pbcmc_sta = rtw_get_bcmc_stainfo23a(padapter); + if (pbcmc_sta) { +@@ -728,8 +723,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, + if (keyparms->cipher == WLAN_CIPHER_SUITE_WEP40 || + keyparms->cipher == WLAN_CIPHER_SUITE_WEP104) { + memcpy(psecuritypriv-> +- dot118021XGrpKey[param->u.crypt. +- idx].skey, ++ dot118021XGrpKey[key_index].skey, + param->u.crypt.key, + (key_len > 16 ? 16 : key_len)); + +@@ -740,8 +734,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, + WLAN_CIPHER_SUITE_TKIP; + + memcpy(psecuritypriv-> +- dot118021XGrpKey[param->u.crypt. +- idx].skey, ++ dot118021XGrpKey[key_index].skey, + param->u.crypt.key, + (key_len > 16 ? 16 : key_len)); + +@@ -750,12 +743,10 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, + param->u.crypt.key_len); */ + /* set mic key */ + memcpy(psecuritypriv-> +- dot118021XGrptxmickey[param->u. +- crypt.idx].skey, ++ dot118021XGrptxmickey[key_index].skey, + ¶m->u.crypt.key[16], 8); + memcpy(psecuritypriv-> +- dot118021XGrprxmickey[param->u. +- crypt.idx].skey, ++ dot118021XGrprxmickey[key_index].skey, + ¶m->u.crypt.key[24], 8); + + psecuritypriv->busetkipkey = 1; +@@ -765,15 +756,14 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, + WLAN_CIPHER_SUITE_CCMP; + + memcpy(psecuritypriv-> +- dot118021XGrpKey[param->u.crypt. +- idx].skey, ++ dot118021XGrpKey[key_index].skey, + param->u.crypt.key, + (key_len > 16 ? 16 : key_len)); + } else { + psecuritypriv->dot118021XGrpPrivacy = 0; + } + +- psecuritypriv->dot118021XGrpKeyid = param->u.crypt.idx; ++ psecuritypriv->dot118021XGrpKeyid = key_index; + + psecuritypriv->binstallGrpkey = 1; + +@@ -782,7 +772,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, + + set_group_key(padapter, param->u.crypt.key, + psecuritypriv->dot118021XGrpPrivacy, +- param->u.crypt.idx); ++ key_index); + + pbcmc_sta = rtw_get_bcmc_stainfo23a(padapter); + if (pbcmc_sta) { +@@ -1059,8 +1049,8 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev, + if (mac_addr) + ether_addr_copy(param->sta_addr, mac_addr); + +- ret = rtw_cfg80211_ap_set_encryption(ndev, param, param_len, +- params); ++ ret = rtw_cfg80211_ap_set_encryption(ndev, key_index, param, ++ param_len, params); + #endif + } else { + DBG_8723A("error! fw_state = 0x%x, iftype =%d\n", diff --git a/debian/patches/features/all/r8723au/0154-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-obt.patch b/debian/patches/features/all/r8723au/0154-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-obt.patch new file mode 100644 index 000000000..a542ecb05 --- /dev/null +++ b/debian/patches/features/all/r8723au/0154-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-obt.patch @@ -0,0 +1,128 @@ +From: Jes Sorensen +Date: Tue, 24 Jun 2014 15:03:46 +0200 +Subject: [154/249] staging: rtl8723au: rtw_cfg80211_ap_set_encryption(): + obtain key from key_params +Origin: https://git.kernel.org/linus/fd381874eb3efded6c088f649a03c03b9690d588 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 31 +++++++++++------------ + 1 file changed, 15 insertions(+), 16 deletions(-) + +diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +index 819573f..f676ec6 100644 +--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c ++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +@@ -612,17 +612,17 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index, + + memcpy(psecuritypriv-> + dot118021XGrpKey[key_index].skey, +- param->u.crypt.key, ++ keyparms->key, + (key_len > 16 ? 16 : key_len)); + + /* DEBUG_ERR("set key length :param->u.crypt.key_len =%d\n", param->u.crypt.key_len); */ + /* set mic key */ + memcpy(psecuritypriv-> + dot118021XGrptxmickey[key_index].skey, +- ¶m->u.crypt.key[16], 8); ++ &keyparms->key[16], 8); + memcpy(psecuritypriv-> + dot118021XGrprxmickey[key_index].skey, +- ¶m->u.crypt.key[24], 8); ++ &keyparms->key[24], 8); + + psecuritypriv->busetkipkey = 1; + +@@ -634,8 +634,8 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index, + WLAN_CIPHER_SUITE_CCMP; + + memcpy(psecuritypriv-> +- dot118021XGrpKey[key_index]. +- skey, param->u.crypt.key, ++ dot118021XGrpKey[key_index].skey, ++ keyparms->key, + (key_len > 16 ? 16 : key_len)); + } else { + DBG_8723A("%s, set group_key, none\n", +@@ -652,7 +652,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index, + psecuritypriv->dot11PrivacyAlgrthm = + psecuritypriv->dot118021XGrpPrivacy; + +- set_group_key(padapter, param->u.crypt.key, ++ set_group_key(padapter, keyparms->key, + psecuritypriv->dot118021XGrpPrivacy, + key_index); + +@@ -675,8 +675,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index, + if (param->u.crypt.set_tx == 1) { + /* pairwise key */ + memcpy(psta->dot118021x_UncstKey.skey, +- param->u.crypt.key, +- (key_len > 16 ? 16 : key_len)); ++ keyparms->key, (key_len > 16 ? 16 : key_len)); + + if (keyparms->cipher == WLAN_CIPHER_SUITE_WEP40 || + keyparms->cipher == WLAN_CIPHER_SUITE_WEP104) { +@@ -695,9 +694,9 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index, + /* DEBUG_ERR("set key length :param->u.crypt.key_len =%d\n", param->u.crypt.key_len); */ + /* set mic key */ + memcpy(psta->dot11tkiptxmickey.skey, +- ¶m->u.crypt.key[16], 8); ++ &keyparms->key[16], 8); + memcpy(psta->dot11tkiprxmickey.skey, +- ¶m->u.crypt.key[24], 8); ++ &keyparms->key[24], 8); + + psecuritypriv->busetkipkey = 1; + +@@ -724,7 +723,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index, + keyparms->cipher == WLAN_CIPHER_SUITE_WEP104) { + memcpy(psecuritypriv-> + dot118021XGrpKey[key_index].skey, +- param->u.crypt.key, ++ keyparms->key, + (key_len > 16 ? 16 : key_len)); + + psecuritypriv->dot118021XGrpPrivacy = +@@ -735,7 +734,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index, + + memcpy(psecuritypriv-> + dot118021XGrpKey[key_index].skey, +- param->u.crypt.key, ++ keyparms->key, + (key_len > 16 ? 16 : key_len)); + + /* DEBUG_ERR("set key length :param->u" +@@ -744,10 +743,10 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index, + /* set mic key */ + memcpy(psecuritypriv-> + dot118021XGrptxmickey[key_index].skey, +- ¶m->u.crypt.key[16], 8); ++ &keyparms->key[16], 8); + memcpy(psecuritypriv-> + dot118021XGrprxmickey[key_index].skey, +- ¶m->u.crypt.key[24], 8); ++ &keyparms->key[24], 8); + + psecuritypriv->busetkipkey = 1; + +@@ -757,7 +756,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index, + + memcpy(psecuritypriv-> + dot118021XGrpKey[key_index].skey, +- param->u.crypt.key, ++ keyparms->key, + (key_len > 16 ? 16 : key_len)); + } else { + psecuritypriv->dot118021XGrpPrivacy = 0; +@@ -770,7 +769,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index, + psecuritypriv->dot11PrivacyAlgrthm = + psecuritypriv->dot118021XGrpPrivacy; + +- set_group_key(padapter, param->u.crypt.key, ++ set_group_key(padapter, keyparms->key, + psecuritypriv->dot118021XGrpPrivacy, + key_index); + diff --git a/debian/patches/features/all/r8723au/0155-staging-rtl8723au-rtw_cfg80211_-ap_-set_encryption-A.patch b/debian/patches/features/all/r8723au/0155-staging-rtl8723au-rtw_cfg80211_-ap_-set_encryption-A.patch new file mode 100644 index 000000000..92f8d5059 --- /dev/null +++ b/debian/patches/features/all/r8723au/0155-staging-rtl8723au-rtw_cfg80211_-ap_-set_encryption-A.patch @@ -0,0 +1,109 @@ +From: Jes Sorensen +Date: Tue, 24 Jun 2014 15:03:47 +0200 +Subject: [155/249] staging: rtl8723au: rtw_cfg80211_{ap_}set_encryption(): Add + set_tx argument +Origin: https://git.kernel.org/linus/0996cf9c693fd58d116619005ac1e1382865e0db + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 31 ++++++++++++----------- + 1 file changed, 16 insertions(+), 15 deletions(-) + +diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +index f676ec6..624966e 100644 +--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c ++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +@@ -500,6 +500,7 @@ static int set_wep_key(struct rtw_adapter *padapter, const u8 *key, u16 keylen, + } + + static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index, ++ int set_tx, + struct ieee_param *param, + u32 param_len, + struct key_params *keyparms) +@@ -591,7 +592,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index, + } + + if (!psta) { /* group key */ +- if (param->u.crypt.set_tx == 0) { /* group key */ ++ if (set_tx == 0) { /* group key */ + if (keyparms->cipher == WLAN_CIPHER_SUITE_WEP40 || + keyparms->cipher == WLAN_CIPHER_SUITE_WEP104) { + DBG_8723A("%s, set group_key, WEP\n", __func__); +@@ -672,7 +673,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index, + + if (psecuritypriv->dot11AuthAlgrthm == dot11AuthAlgrthm_8021X && psta) { + /* psk/802_1x */ +- if (param->u.crypt.set_tx == 1) { ++ if (set_tx == 1) { + /* pairwise key */ + memcpy(psta->dot118021x_UncstKey.skey, + keyparms->key, (key_len > 16 ? 16 : key_len)); +@@ -791,6 +792,7 @@ exit: + #endif + + static int rtw_cfg80211_set_encryption(struct net_device *dev, u8 key_index, ++ int set_tx, + struct ieee_param *param, u32 param_len, + struct key_params *keyparms) + { +@@ -890,10 +892,10 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev, u8 key_index, + dot11PrivacyAlgrthm; + } + +- if (param->u.crypt.set_tx == 1) { ++ if (set_tx == 1) { + /* pairwise key */ +- DBG_8723A("%s, : param->u.crypt.set_tx" +- " == 1\n", __func__); ++ DBG_8723A("%s, : set_tx == 1\n", ++ __func__); + + memcpy(psta->dot118021x_UncstKey.skey, + keyparms->key, +@@ -977,7 +979,7 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev, + char *alg_name; + u32 param_len; + struct ieee_param *param; +- int ret = 0; ++ int set_tx, ret = 0; + struct wireless_dev *rtw_wdev = wiphy_to_wdev(wiphy); + struct rtw_adapter *padapter = wiphy_to_adapter(wiphy); + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; +@@ -1022,11 +1024,10 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev, + + strncpy((char *)param->u.crypt.alg, alg_name, IEEE_CRYPT_ALG_NAME_LEN); + +- if (!mac_addr || is_broadcast_ether_addr(mac_addr)) { +- param->u.crypt.set_tx = 0; /* for wpa/wpa2 group key */ +- } else { +- param->u.crypt.set_tx = 1; /* for wpa/wpa2 pairwise key */ +- } ++ if (!mac_addr || is_broadcast_ether_addr(mac_addr)) ++ set_tx = 0; /* for wpa/wpa2 group key */ ++ else ++ set_tx = 1; /* for wpa/wpa2 pairwise key */ + + /* param->u.crypt.idx = key_index - 1; */ + param->u.crypt.idx = key_index; +@@ -1041,15 +1042,15 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev, + } + + if (check_fwstate(pmlmepriv, WIFI_STATION_STATE)) { +- ret = rtw_cfg80211_set_encryption(ndev, key_index, param, +- param_len, params); ++ ret = rtw_cfg80211_set_encryption(ndev, key_index, set_tx, ++ param, param_len, params); + } else if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) { + #ifdef CONFIG_8723AU_AP_MODE + if (mac_addr) + ether_addr_copy(param->sta_addr, mac_addr); + +- ret = rtw_cfg80211_ap_set_encryption(ndev, key_index, param, +- param_len, params); ++ ret = rtw_cfg80211_ap_set_encryption(ndev, key_index, set_tx, ++ param, param_len, params); + #endif + } else { + DBG_8723A("error! fw_state = 0x%x, iftype =%d\n", diff --git a/debian/patches/features/all/r8723au/0156-staging-rtl8723au-Stop-setting-ieee_parm-arguments-t.patch b/debian/patches/features/all/r8723au/0156-staging-rtl8723au-Stop-setting-ieee_parm-arguments-t.patch new file mode 100644 index 000000000..f92bf8b31 --- /dev/null +++ b/debian/patches/features/all/r8723au/0156-staging-rtl8723au-Stop-setting-ieee_parm-arguments-t.patch @@ -0,0 +1,97 @@ +From: Jes Sorensen +Date: Tue, 24 Jun 2014 15:03:48 +0200 +Subject: [156/249] staging: rtl8723au: Stop setting ieee_parm arguments that + aren't used +Origin: https://git.kernel.org/linus/6e6e2d633b7410953597eff63ccb210aa2aadd33 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 37 ----------------------- + 1 file changed, 37 deletions(-) + +diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +index 624966e..7aaa3f8 100644 +--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c ++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +@@ -514,17 +514,6 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index, + + DBG_8723A("%s\n", __func__); + +- param->u.crypt.err = 0; +- param->u.crypt.alg[IEEE_CRYPT_ALG_NAME_LEN - 1] = '\0'; +- +- /* sizeof(struct ieee_param) = 64 bytes; */ +- /* if (param_len != (u32) ((u8 *) param->u.crypt.key - +- (u8 *) param) + param->u.crypt.key_len) */ +- if (param_len != sizeof(struct ieee_param) + param->u.crypt.key_len) { +- ret = -EINVAL; +- goto exit; +- } +- + if (is_broadcast_ether_addr(param->sta_addr)) { + if (key_index >= WEP_KEYS) { + ret = -EINVAL; +@@ -616,7 +605,6 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index, + keyparms->key, + (key_len > 16 ? 16 : key_len)); + +- /* DEBUG_ERR("set key length :param->u.crypt.key_len =%d\n", param->u.crypt.key_len); */ + /* set mic key */ + memcpy(psecuritypriv-> + dot118021XGrptxmickey[key_index].skey, +@@ -692,7 +680,6 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index, + psta->dot118021XPrivacy = + WLAN_CIPHER_SUITE_TKIP; + +- /* DEBUG_ERR("set key length :param->u.crypt.key_len =%d\n", param->u.crypt.key_len); */ + /* set mic key */ + memcpy(psta->dot11tkiptxmickey.skey, + &keyparms->key[16], 8); +@@ -738,9 +725,6 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index, + keyparms->key, + (key_len > 16 ? 16 : key_len)); + +- /* DEBUG_ERR("set key length :param->u" +- ".crypt.key_len =%d\n", +- param->u.crypt.key_len); */ + /* set mic key */ + memcpy(psecuritypriv-> + dot118021XGrptxmickey[key_index].skey, +@@ -804,17 +788,8 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev, u8 key_index, + + DBG_8723A("%s\n", __func__); + +- param->u.crypt.err = 0; +- param->u.crypt.alg[IEEE_CRYPT_ALG_NAME_LEN - 1] = '\0'; +- + key_len = keyparms->key_len; + +- if (param_len < +- (u32) ((u8 *) param->u.crypt.key - (u8 *) param) + key_len) { +- ret = -EINVAL; +- goto exit; +- } +- + if (is_broadcast_ether_addr(param->sta_addr)) { + if (key_index >= WEP_KEYS) { + ret = -EINVAL; +@@ -1029,18 +1004,6 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev, + else + set_tx = 1; /* for wpa/wpa2 pairwise key */ + +- /* param->u.crypt.idx = key_index - 1; */ +- param->u.crypt.idx = key_index; +- +- if (params->seq_len && params->seq) { +- memcpy(param->u.crypt.seq, params->seq, params->seq_len); +- } +- +- if (params->key_len && params->key) { +- param->u.crypt.key_len = params->key_len; +- memcpy(param->u.crypt.key, params->key, params->key_len); +- } +- + if (check_fwstate(pmlmepriv, WIFI_STATION_STATE)) { + ret = rtw_cfg80211_set_encryption(ndev, key_index, set_tx, + param, param_len, params); diff --git a/debian/patches/features/all/r8723au/0157-staging-rtl8723au-rtw_cfg80211_-ap_-set_encryption-N.patch b/debian/patches/features/all/r8723au/0157-staging-rtl8723au-rtw_cfg80211_-ap_-set_encryption-N.patch new file mode 100644 index 000000000..b381b7cac --- /dev/null +++ b/debian/patches/features/all/r8723au/0157-staging-rtl8723au-rtw_cfg80211_-ap_-set_encryption-N.patch @@ -0,0 +1,101 @@ +From: Jes Sorensen +Date: Tue, 24 Jun 2014 15:03:49 +0200 +Subject: [157/249] staging: rtl8723au: rtw_cfg80211_{ap_}set_encryption(): No + more string parsing to determine cipher +Origin: https://git.kernel.org/linus/efd4216c2d558f2faf03284e95a9c1c1297d801a + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 37 ++++++++--------------- + 1 file changed, 13 insertions(+), 24 deletions(-) + +diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +index 7aaa3f8..7e34f89 100644 +--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c ++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +@@ -855,7 +855,8 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev, u8 key_index, + } else { + /* Jeff: don't disable ieee8021x_blocked + while clearing key */ +- if (strcmp(param->u.crypt.alg, "none") != 0) ++ if (keyparms->cipher != IW_AUTH_CIPHER_NONE && ++ keyparms->cipher != 0) + psta->ieee8021x_blocked = false; + + if ((padapter->securitypriv.ndisencryptstatus == +@@ -922,7 +923,8 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev, u8 key_index, + if (pbcmc_sta) { + /* Jeff: don't disable ieee8021x_blocked + while clearing key */ +- if (strcmp(param->u.crypt.alg, "none") != 0) ++ if (keyparms->cipher != IW_AUTH_CIPHER_NONE && ++ keyparms->cipher != 0) + pbcmc_sta->ieee8021x_blocked = false; + + if ((padapter->securitypriv.ndisencryptstatus == +@@ -951,7 +953,6 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev, + u8 key_index, bool pairwise, + const u8 *mac_addr, struct key_params *params) + { +- char *alg_name; + u32 param_len; + struct ieee_param *param; + int set_tx, ret = 0; +@@ -967,37 +968,25 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev, + DBG_8723A("key_index =%d\n", key_index); + DBG_8723A("pairwise =%d\n", pairwise); + +- param_len = sizeof(struct ieee_param) + params->key_len; +- param = kzalloc(param_len, GFP_KERNEL); +- if (!param) +- return -ENOMEM; +- +- param->cmd = IEEE_CMD_SET_ENCRYPTION; +- eth_broadcast_addr(param->sta_addr); +- + switch (params->cipher) { + case IW_AUTH_CIPHER_NONE: +- /* todo: remove key */ +- /* remove = 1; */ +- alg_name = "none"; +- break; + case WLAN_CIPHER_SUITE_WEP40: + case WLAN_CIPHER_SUITE_WEP104: +- alg_name = "WEP"; +- break; + case WLAN_CIPHER_SUITE_TKIP: +- alg_name = "TKIP"; +- break; + case WLAN_CIPHER_SUITE_CCMP: +- alg_name = "CCMP"; + break; +- + default: + ret = -ENOTSUPP; +- goto addkey_end; ++ goto exit; + } + +- strncpy((char *)param->u.crypt.alg, alg_name, IEEE_CRYPT_ALG_NAME_LEN); ++ param_len = sizeof(struct ieee_param) + params->key_len; ++ param = kzalloc(param_len, GFP_KERNEL); ++ if (!param) ++ return -ENOMEM; ++ ++ param->cmd = IEEE_CMD_SET_ENCRYPTION; ++ eth_broadcast_addr(param->sta_addr); + + if (!mac_addr || is_broadcast_ether_addr(mac_addr)) + set_tx = 0; /* for wpa/wpa2 group key */ +@@ -1021,9 +1010,9 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev, + + } + +-addkey_end: + kfree(param); + ++exit: + return ret; + } + diff --git a/debian/patches/features/all/r8723au/0158-staging-rtl8723au-rtw_cfg80211_-ap_-set_encryption-A.patch b/debian/patches/features/all/r8723au/0158-staging-rtl8723au-rtw_cfg80211_-ap_-set_encryption-A.patch new file mode 100644 index 000000000..c209cf082 --- /dev/null +++ b/debian/patches/features/all/r8723au/0158-staging-rtl8723au-rtw_cfg80211_-ap_-set_encryption-A.patch @@ -0,0 +1,95 @@ +From: Jes Sorensen +Date: Tue, 24 Jun 2014 15:03:50 +0200 +Subject: [158/249] staging: rtl8723au: rtw_cfg80211_{ap_}set_encryption(): Add + sta_addr argument +Origin: https://git.kernel.org/linus/f88ab54c10b1270257f39268e88c1949fd903fb2 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 17 ++++++++++------- + 1 file changed, 10 insertions(+), 7 deletions(-) + +diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +index 7e34f89..0cbf255 100644 +--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c ++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +@@ -500,7 +500,7 @@ static int set_wep_key(struct rtw_adapter *padapter, const u8 *key, u16 keylen, + } + + static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index, +- int set_tx, ++ int set_tx, const u8 *sta_addr, + struct ieee_param *param, + u32 param_len, + struct key_params *keyparms) +@@ -514,7 +514,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index, + + DBG_8723A("%s\n", __func__); + +- if (is_broadcast_ether_addr(param->sta_addr)) { ++ if (is_broadcast_ether_addr(sta_addr)) { + if (key_index >= WEP_KEYS) { + ret = -EINVAL; + goto exit; +@@ -531,7 +531,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index, + } + + } else { +- psta = rtw_get_stainfo23a(pstapriv, param->sta_addr); ++ psta = rtw_get_stainfo23a(pstapriv, sta_addr); + if (!psta) { + /* ret = -EINVAL; */ + DBG_8723A("rtw_set_encryption(), sta has already " +@@ -776,7 +776,7 @@ exit: + #endif + + static int rtw_cfg80211_set_encryption(struct net_device *dev, u8 key_index, +- int set_tx, ++ int set_tx, const u8 *sta_addr, + struct ieee_param *param, u32 param_len, + struct key_params *keyparms) + { +@@ -790,7 +790,7 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev, u8 key_index, + + key_len = keyparms->key_len; + +- if (is_broadcast_ether_addr(param->sta_addr)) { ++ if (is_broadcast_ether_addr(sta_addr)) { + if (key_index >= WEP_KEYS) { + ret = -EINVAL; + goto exit; +@@ -959,6 +959,7 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev, + struct wireless_dev *rtw_wdev = wiphy_to_wdev(wiphy); + struct rtw_adapter *padapter = wiphy_to_adapter(wiphy); + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; ++ u8 sta_addr[ETH_ALEN]; + + DBG_8723A("%s(%s): adding key for %pM\n", __func__, ndev->name, + mac_addr); +@@ -986,7 +987,7 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev, + return -ENOMEM; + + param->cmd = IEEE_CMD_SET_ENCRYPTION; +- eth_broadcast_addr(param->sta_addr); ++ eth_broadcast_addr(sta_addr); + + if (!mac_addr || is_broadcast_ether_addr(mac_addr)) + set_tx = 0; /* for wpa/wpa2 group key */ +@@ -995,13 +996,15 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev, + + if (check_fwstate(pmlmepriv, WIFI_STATION_STATE)) { + ret = rtw_cfg80211_set_encryption(ndev, key_index, set_tx, ++ sta_addr, + param, param_len, params); + } else if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) { + #ifdef CONFIG_8723AU_AP_MODE + if (mac_addr) +- ether_addr_copy(param->sta_addr, mac_addr); ++ ether_addr_copy(sta_addr, mac_addr); + + ret = rtw_cfg80211_ap_set_encryption(ndev, key_index, set_tx, ++ sta_addr, + param, param_len, params); + #endif + } else { diff --git a/debian/patches/features/all/r8723au/0159-staging-rtl8723au-rtw_cfg80211_-ap_-set_encryption-S.patch b/debian/patches/features/all/r8723au/0159-staging-rtl8723au-rtw_cfg80211_-ap_-set_encryption-S.patch new file mode 100644 index 000000000..72003d42a --- /dev/null +++ b/debian/patches/features/all/r8723au/0159-staging-rtl8723au-rtw_cfg80211_-ap_-set_encryption-S.patch @@ -0,0 +1,85 @@ +From: Jes Sorensen +Date: Tue, 24 Jun 2014 15:03:51 +0200 +Subject: [159/249] staging: rtl8723au: rtw_cfg80211_{ap_}set_encryption(): + Stop passing ieee_parms argument +Origin: https://git.kernel.org/linus/f0bf8dd53d1a1c952784f1e5cf0c076cb514bdaf + +struct ieee_parms is obsolete, so stop passing it on. + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 19 ++----------------- + 1 file changed, 2 insertions(+), 17 deletions(-) + +diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +index 0cbf255..f53189a 100644 +--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c ++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +@@ -501,8 +501,6 @@ static int set_wep_key(struct rtw_adapter *padapter, const u8 *key, u16 keylen, + + static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index, + int set_tx, const u8 *sta_addr, +- struct ieee_param *param, +- u32 param_len, + struct key_params *keyparms) + { + int ret = 0; +@@ -777,7 +775,6 @@ exit: + + static int rtw_cfg80211_set_encryption(struct net_device *dev, u8 key_index, + int set_tx, const u8 *sta_addr, +- struct ieee_param *param, u32 param_len, + struct key_params *keyparms) + { + int ret = 0; +@@ -953,8 +950,6 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev, + u8 key_index, bool pairwise, + const u8 *mac_addr, struct key_params *params) + { +- u32 param_len; +- struct ieee_param *param; + int set_tx, ret = 0; + struct wireless_dev *rtw_wdev = wiphy_to_wdev(wiphy); + struct rtw_adapter *padapter = wiphy_to_adapter(wiphy); +@@ -981,12 +976,6 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev, + goto exit; + } + +- param_len = sizeof(struct ieee_param) + params->key_len; +- param = kzalloc(param_len, GFP_KERNEL); +- if (!param) +- return -ENOMEM; +- +- param->cmd = IEEE_CMD_SET_ENCRYPTION; + eth_broadcast_addr(sta_addr); + + if (!mac_addr || is_broadcast_ether_addr(mac_addr)) +@@ -996,16 +985,14 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev, + + if (check_fwstate(pmlmepriv, WIFI_STATION_STATE)) { + ret = rtw_cfg80211_set_encryption(ndev, key_index, set_tx, +- sta_addr, +- param, param_len, params); ++ sta_addr, params); + } else if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) { + #ifdef CONFIG_8723AU_AP_MODE + if (mac_addr) + ether_addr_copy(sta_addr, mac_addr); + + ret = rtw_cfg80211_ap_set_encryption(ndev, key_index, set_tx, +- sta_addr, +- param, param_len, params); ++ sta_addr, params); + #endif + } else { + DBG_8723A("error! fw_state = 0x%x, iftype =%d\n", +@@ -1013,8 +1000,6 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev, + + } + +- kfree(param); +- + exit: + return ret; + } diff --git a/debian/patches/features/all/r8723au/0160-staging-rtl8723au-Remove-obsolete-struct-ieee_parm.patch b/debian/patches/features/all/r8723au/0160-staging-rtl8723au-Remove-obsolete-struct-ieee_parm.patch new file mode 100644 index 000000000..0dced6146 --- /dev/null +++ b/debian/patches/features/all/r8723au/0160-staging-rtl8723au-Remove-obsolete-struct-ieee_parm.patch @@ -0,0 +1,79 @@ +From: Jes Sorensen +Date: Tue, 24 Jun 2014 15:03:52 +0200 +Subject: [160/249] staging: rtl8723au: Remove obsolete struct ieee_parm +Origin: https://git.kernel.org/linus/3e71669accfadd670aa745d7bdcabc179360d9cb + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/include/ieee80211.h | 50 --------------------------- + 1 file changed, 50 deletions(-) + +diff --git a/drivers/staging/rtl8723au/include/ieee80211.h b/drivers/staging/rtl8723au/include/ieee80211.h +index 0b17a7f..e9f465f 100644 +--- a/drivers/staging/rtl8723au/include/ieee80211.h ++++ b/drivers/staging/rtl8723au/include/ieee80211.h +@@ -48,12 +48,6 @@ + + #endif + +-#define IEEE_CMD_SET_WPA_PARAM 1 +-#define IEEE_CMD_SET_WPA_IE 2 +-#define IEEE_CMD_SET_ENCRYPTION 3 +- +-#define IEEE_CRYPT_ALG_NAME_LEN 16 +- + #define WPA_CIPHER_NONE BIT(0) + #define WPA_CIPHER_WEP40 BIT(1) + #define WPA_CIPHER_WEP104 BIT(2) +@@ -151,50 +145,6 @@ enum NETWORK_TYPE + #define IsSupportedTxMCS(NetType) (NetType & (WIRELESS_11_24N|WIRELESS_11_5N) ? true : false) + + +-struct ieee_param { +- u32 cmd; +- u8 sta_addr[ETH_ALEN]; +- union { +- struct { +- u8 name; +- u32 value; +- } wpa_param; +- struct { +- u32 len; +- u8 reserved[32]; +- u8 data[0]; +- } wpa_ie; +- struct{ +- int command; +- int reason_code; +- } mlme; +- struct { +- u8 alg[IEEE_CRYPT_ALG_NAME_LEN]; +- u8 set_tx; +- u32 err; +- u8 idx; +- u8 seq[8]; /* sequence counter (set: RX, get: TX) */ +- u16 key_len; +- u8 key[0]; +- } crypt; +-#ifdef CONFIG_8723AU_AP_MODE +- struct { +- u16 aid; +- u16 capability; +- int flags; +- u8 tx_supp_rates[16]; +- struct ieee80211_ht_cap ht_cap; +- } add_sta; +- struct { +- u8 reserved[2];/* for set max_num_sta */ +- u8 buf[0]; +- } bcn_ie; +-#endif +- +- } u; +-}; +- +- + #define MIN_FRAG_THRESHOLD 256U + #define MAX_FRAG_THRESHOLD 2346U + diff --git a/debian/patches/features/all/r8723au/0161-staging-rtl8723au-Validate-keys-in-cfg80211_rtw_add_.patch b/debian/patches/features/all/r8723au/0161-staging-rtl8723au-Validate-keys-in-cfg80211_rtw_add_.patch new file mode 100644 index 000000000..3625072cf --- /dev/null +++ b/debian/patches/features/all/r8723au/0161-staging-rtl8723au-Validate-keys-in-cfg80211_rtw_add_.patch @@ -0,0 +1,170 @@ +From: Jes Sorensen +Date: Tue, 24 Jun 2014 15:03:53 +0200 +Subject: [161/249] staging: rtl8723au: Validate keys in cfg80211_rtw_add_key() +Origin: https://git.kernel.org/linus/7ef2743da1bb1edcad5cdfafe75652445fa3cc1b + +We validate the parameters in cfg80211_rtw_add_key() so no need to do +it all again in rtw_cfg80211_{ap_}set_encryption() + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 76 ++++++----------------- + 1 file changed, 19 insertions(+), 57 deletions(-) + +diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +index f53189a..87f953c 100644 +--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c ++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +@@ -512,23 +512,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index, + + DBG_8723A("%s\n", __func__); + +- if (is_broadcast_ether_addr(sta_addr)) { +- if (key_index >= WEP_KEYS) { +- ret = -EINVAL; +- goto exit; +- } +- switch (keyparms->cipher) { +- case WLAN_CIPHER_SUITE_WEP40: +- case WLAN_CIPHER_SUITE_WEP104: +- case WLAN_CIPHER_SUITE_TKIP: +- case WLAN_CIPHER_SUITE_CCMP: +- break; +- default: +- ret = -EINVAL; +- goto exit; +- } +- +- } else { ++ if (!is_broadcast_ether_addr(sta_addr)) { + psta = rtw_get_stainfo23a(pstapriv, sta_addr); + if (!psta) { + /* ret = -EINVAL; */ +@@ -547,15 +531,6 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index, + DBG_8723A("r871x_set_encryption, wep_key_idx =%d, len =%d\n", + key_index, key_len); + +- if (key_index >= WEP_KEYS || key_len <= 0) { +- ret = -EINVAL; +- goto exit; +- } +- +- if (key_len > 0) { +- key_len = key_len <= 5 ? 5 : 13; +- } +- + if (psecuritypriv->bWepDefaultKeyIdxSet == 0) { + /* wep default key has not been set, so use + this key index as default key. */ +@@ -586,8 +561,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index, + + memcpy(psecuritypriv-> + dot118021XGrpKey[key_index].skey, +- keyparms->key, +- (key_len > 16 ? 16 : key_len)); ++ keyparms->key, key_len); + + psecuritypriv->dot118021XGrpPrivacy = + keyparms->cipher; +@@ -628,8 +602,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index, + DBG_8723A("%s, set group_key, none\n", + __func__); + +- psecuritypriv->dot118021XGrpPrivacy = +- 0; ++ psecuritypriv->dot118021XGrpPrivacy = 0; + } + + psecuritypriv->dot118021XGrpKeyid = key_index; +@@ -709,8 +682,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index, + keyparms->cipher == WLAN_CIPHER_SUITE_WEP104) { + memcpy(psecuritypriv-> + dot118021XGrpKey[key_index].skey, +- keyparms->key, +- (key_len > 16 ? 16 : key_len)); ++ keyparms->key, key_len); + + psecuritypriv->dot118021XGrpPrivacy = + keyparms->cipher; +@@ -732,7 +704,6 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index, + &keyparms->key[24], 8); + + psecuritypriv->busetkipkey = 1; +- + } else if (keyparms->cipher == WLAN_CIPHER_SUITE_CCMP) { + psecuritypriv->dot118021XGrpPrivacy = + WLAN_CIPHER_SUITE_CCMP; +@@ -787,42 +758,20 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev, u8 key_index, + + key_len = keyparms->key_len; + +- if (is_broadcast_ether_addr(sta_addr)) { +- if (key_index >= WEP_KEYS) { +- ret = -EINVAL; +- goto exit; +- } +- } else { +- ret = -EINVAL; +- goto exit; +- } +- + if (keyparms->cipher == WLAN_CIPHER_SUITE_WEP40 || + keyparms->cipher == WLAN_CIPHER_SUITE_WEP104) { + RT_TRACE(_module_rtl871x_ioctl_os_c, _drv_err_, + ("wpa_set_encryption, crypt.alg = WEP\n")); + DBG_8723A("wpa_set_encryption, crypt.alg = WEP\n"); + +- if (key_index > WEP_KEYS || key_len <= 0) { +- ret = -EINVAL; +- goto exit; +- } +- + if (psecuritypriv->bWepDefaultKeyIdxSet == 0) { + /* wep default key has not been set, so use this + key index as default key. */ + +- key_len = key_len <= 5 ? 5 : 13; +- + psecuritypriv->ndisencryptstatus = + Ndis802_11Encryption1Enabled; +- psecuritypriv->dot11PrivacyAlgrthm = WLAN_CIPHER_SUITE_WEP40; +- psecuritypriv->dot118021XGrpPrivacy = WLAN_CIPHER_SUITE_WEP40; +- +- if (key_len == 13) { +- psecuritypriv->dot11PrivacyAlgrthm = WLAN_CIPHER_SUITE_WEP104; +- psecuritypriv->dot118021XGrpPrivacy = WLAN_CIPHER_SUITE_WEP104; +- } ++ psecuritypriv->dot11PrivacyAlgrthm = keyparms->cipher; ++ psecuritypriv->dot118021XGrpPrivacy = keyparms->cipher; + + psecuritypriv->dot11PrivacyKeyIndex = key_index; + } +@@ -967,7 +916,15 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev, + switch (params->cipher) { + case IW_AUTH_CIPHER_NONE: + case WLAN_CIPHER_SUITE_WEP40: ++ if (params->key_len != WLAN_KEY_LEN_WEP40) { ++ ret = -EINVAL; ++ goto exit; ++ } + case WLAN_CIPHER_SUITE_WEP104: ++ if (params->key_len != WLAN_KEY_LEN_WEP104) { ++ ret = -EINVAL; ++ goto exit; ++ } + case WLAN_CIPHER_SUITE_TKIP: + case WLAN_CIPHER_SUITE_CCMP: + break; +@@ -976,6 +933,11 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev, + goto exit; + } + ++ if (key_index >= WEP_KEYS || params->key_len < 0) { ++ ret = -EINVAL; ++ goto exit; ++ } ++ + eth_broadcast_addr(sta_addr); + + if (!mac_addr || is_broadcast_ether_addr(mac_addr)) diff --git a/debian/patches/features/all/r8723au/0162-staging-rtl8723au-Eliminate-set_wep_key-and-call-set.patch b/debian/patches/features/all/r8723au/0162-staging-rtl8723au-Eliminate-set_wep_key-and-call-set.patch new file mode 100644 index 000000000..4fe36d02a --- /dev/null +++ b/debian/patches/features/all/r8723au/0162-staging-rtl8723au-Eliminate-set_wep_key-and-call-set.patch @@ -0,0 +1,107 @@ +From: Jes Sorensen +Date: Tue, 24 Jun 2014 15:03:54 +0200 +Subject: [162/249] staging: rtl8723au: Eliminate set_wep_key() and call + set_group_key() directly +Origin: https://git.kernel.org/linus/2dcf6b4c73a3b92774955b83e5bd7c5cec2c87e6 + +This also eliminates another round of determine algorithm based on key +length, followed by determine key length based on algorithm. + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 45 +++-------------------- + 1 file changed, 6 insertions(+), 39 deletions(-) + +diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +index 87f953c..93dc844 100644 +--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c ++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +@@ -417,10 +417,9 @@ exit: + return res; + } + +-static int set_group_key(struct rtw_adapter *padapter, const u8 *key, u32 alg, +- u8 keyid) ++static int set_group_key(struct rtw_adapter *padapter, struct key_params *parms, ++ u32 alg, u8 keyid) + { +- u8 keylen; + struct cmd_obj *pcmd; + struct setkey_parm *psetkeyparm; + struct cmd_priv *pcmdpriv = &padapter->cmdpriv; +@@ -453,20 +452,7 @@ static int set_group_key(struct rtw_adapter *padapter, const u8 *key, u32 alg, + + psetkeyparm->set_tx = 1; + +- switch (alg) { +- case WLAN_CIPHER_SUITE_WEP40: +- keylen = 5; +- break; +- case WLAN_CIPHER_SUITE_WEP104: +- keylen = 13; +- break; +- case WLAN_CIPHER_SUITE_TKIP: +- case WLAN_CIPHER_SUITE_CCMP: +- default: +- keylen = 16; +- } +- +- memcpy(&psetkeyparm->key[0], key, keylen); ++ memcpy(&psetkeyparm->key, parms->key, parms->key_len); + + pcmd->cmdcode = _SetKey_CMD_; + pcmd->parmbuf = (u8 *) psetkeyparm; +@@ -480,25 +466,6 @@ exit: + return res; + } + +-static int set_wep_key(struct rtw_adapter *padapter, const u8 *key, u16 keylen, +- u8 keyid) +-{ +- u32 alg; +- +- switch (keylen) { +- case 5: +- alg = WLAN_CIPHER_SUITE_WEP40; +- break; +- case 13: +- alg = WLAN_CIPHER_SUITE_WEP104; +- break; +- default: +- alg = 0; +- } +- +- return set_group_key(padapter, key, alg, keyid); +-} +- + static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index, + int set_tx, const u8 *sta_addr, + struct key_params *keyparms) +@@ -548,7 +515,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index, + + psecuritypriv->wep_key[key_index].keylen = key_len; + +- set_wep_key(padapter, keyparms->key, key_len, key_index); ++ set_group_key(padapter, keyparms, keyparms->cipher, key_index); + + goto exit; + } +@@ -612,7 +579,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index, + psecuritypriv->dot11PrivacyAlgrthm = + psecuritypriv->dot118021XGrpPrivacy; + +- set_group_key(padapter, keyparms->key, ++ set_group_key(padapter, keyparms, + psecuritypriv->dot118021XGrpPrivacy, + key_index); + +@@ -723,7 +690,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index, + psecuritypriv->dot11PrivacyAlgrthm = + psecuritypriv->dot118021XGrpPrivacy; + +- set_group_key(padapter, keyparms->key, ++ set_group_key(padapter, keyparms, + psecuritypriv->dot118021XGrpPrivacy, + key_index); + diff --git a/debian/patches/features/all/r8723au/0163-staging-rtl8723au-rtw_restruct_wmm_ie23a-Use-cfg8021.patch b/debian/patches/features/all/r8723au/0163-staging-rtl8723au-rtw_restruct_wmm_ie23a-Use-cfg8021.patch new file mode 100644 index 000000000..ac94697a3 --- /dev/null +++ b/debian/patches/features/all/r8723au/0163-staging-rtl8723au-rtw_restruct_wmm_ie23a-Use-cfg8021.patch @@ -0,0 +1,65 @@ +From: Jes Sorensen +Date: Tue, 24 Jun 2014 15:03:55 +0200 +Subject: [163/249] staging: rtl8723au: rtw_restruct_wmm_ie23a(): Use + cfg80211_find_vendor_ie() +Origin: https://git.kernel.org/linus/86184b93c52c21ad3bd56d185634a4704f9e98c9 + +Rewrite rtw_restruct_wmm_ie23a() using cfg80211_find_vendor_ie() + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme.c | 34 ++++++++++++------------------- + 1 file changed, 13 insertions(+), 21 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c +index b3db56a..d0e9b66 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c +@@ -1909,33 +1909,25 @@ exit: + + /* adjust IEs for rtw_joinbss_cmd23a in WMM */ + int rtw_restruct_wmm_ie23a(struct rtw_adapter *adapter, u8 *in_ie, +- u8 *out_ie, uint in_len, uint initial_out_len) ++ u8 *out_ie, uint in_len, uint initial_out_len) + { +- unsigned int ielength = 0; +- unsigned int i, j; ++ int ielength; ++ const u8 *p; + +- i = 0; /* after the fixed IE */ +- while (i < in_len) { +- ielength = initial_out_len; ++ ielength = initial_out_len; + +- /* WMM element ID and OUI */ +- if (in_ie[i] == 0xDD && in_ie[i + 2] == 0x00 && +- in_ie[i + 3] == 0x50 && in_ie[i + 4] == 0xF2 && +- in_ie[i + 5] == 0x02 && i+5 < in_len) { ++ p = cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT, ++ WLAN_OUI_TYPE_MICROSOFT_WMM, ++ in_ie, in_len); + +- /* Append WMM IE to the last index of out_ie */ +- for (j = i; j < i + 9; j++) { +- out_ie[ielength] = in_ie[j]; +- ielength++; +- } +- out_ie[initial_out_len + 1] = 0x07; +- out_ie[initial_out_len + 6] = 0x00; +- out_ie[initial_out_len + 8] = 0x00; ++ if (p && p[1]) { ++ memcpy(out_ie + initial_out_len, p, 9); + +- break; +- } ++ out_ie[initial_out_len + 1] = 7; ++ out_ie[initial_out_len + 6] = 0; ++ out_ie[initial_out_len + 8] = 0; + +- i += (in_ie[i + 1] + 2); /* to the next IE element */ ++ ielength += 9; + } + + return ielength; diff --git a/debian/patches/features/all/r8723au/0164-staging-rtl8723au-rtw_append_pmkid-Adjust-for-IEs-ar.patch b/debian/patches/features/all/r8723au/0164-staging-rtl8723au-rtw_append_pmkid-Adjust-for-IEs-ar.patch new file mode 100644 index 000000000..2cd24d1db --- /dev/null +++ b/debian/patches/features/all/r8723au/0164-staging-rtl8723au-rtw_append_pmkid-Adjust-for-IEs-ar.patch @@ -0,0 +1,37 @@ +From: Jes Sorensen +Date: Tue, 24 Jun 2014 15:03:56 +0200 +Subject: [164/249] staging: rtl8723au: rtw_append_pmkid(): Adjust for IEs + array not arrying fixed elements +Origin: https://git.kernel.org/linus/98f979f1f80cf2ef0188370ee8fec996c3ee7fd8 + +Another case using hard coded offsets counting on the presence of +fixed beacon elements in the IEs array. + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c +index d0e9b66..c2e3777 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c +@@ -1984,7 +1984,7 @@ static int rtw_append_pmkid(struct rtw_adapter *Adapter, int iEntry, + { + struct security_priv *psecuritypriv = &Adapter->securitypriv; + +- if (ie[13] <= 20) { ++ if (ie[1] <= 20) { + /* The RSN IE didn't include the PMK ID, + append the PMK information */ + ie[ie_len] = 1; +@@ -1995,7 +1995,7 @@ static int rtw_append_pmkid(struct rtw_adapter *Adapter, int iEntry, + &psecuritypriv->PMKIDList[iEntry].PMKID, 16); + + ie_len += 16; +- ie[13] += 18;/* PMKID length = 2+16 */ ++ ie[1] += 18;/* PMKID length = 2+16 */ + } + return ie_len; + } diff --git a/debian/patches/features/all/r8723au/0165-staging-rtl8723au-Only-validate-vendor-specific-ies-.patch b/debian/patches/features/all/r8723au/0165-staging-rtl8723au-Only-validate-vendor-specific-ies-.patch new file mode 100644 index 000000000..346248970 --- /dev/null +++ b/debian/patches/features/all/r8723au/0165-staging-rtl8723au-Only-validate-vendor-specific-ies-.patch @@ -0,0 +1,51 @@ +From: Jes Sorensen +Date: Tue, 24 Jun 2014 15:03:57 +0200 +Subject: [165/249] staging: rtl8723au: Only validate vendor specific ies, when + they it is vendor specific +Origin: https://git.kernel.org/linus/42282f4147e2bc5b89d6a050244a7c5475613d83 + +Don't run rtw_validate_vendor_specific_ies() on anything but +WLAN_EID_VENDOR_SPECIFIC. In addition use the proper +WLAN_OUI_TYPE_MICROSOFT_* definitions. + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index 4b769d5..88cf1fd 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -1204,11 +1204,11 @@ static int rtw_validate_vendor_specific_ies(const u8 *pos, int elen) + /* Microsoft/Wi-Fi information elements are further typed and + * subtyped */ + switch (pos[3]) { +- case 1: ++ case WLAN_OUI_TYPE_MICROSOFT_WPA: + /* Microsoft OUI (00:50:F2) with OUI Type 1: + * real WPA information element */ + break; +- case WME_OUI_TYPE: /* this is a Wi-Fi WME info. element */ ++ case WLAN_OUI_TYPE_MICROSOFT_WMM: + if (elen < 5) { + DBG_8723A("short WME information element " + "ignored (len =%i)\n", elen); +@@ -1227,7 +1227,7 @@ static int rtw_validate_vendor_specific_ies(const u8 *pos, int elen) + return -EINVAL; + } + break; +- case 4: ++ case WLAN_OUI_TYPE_MICROSOFT_WPS: + /* Wi-Fi Protected Setup (WPS) IE */ + break; + default: +@@ -1289,6 +1289,7 @@ static int rtw_validate_frame_ies(const u8 *start, uint len) + case WLAN_EID_CHALLENGE: + case WLAN_EID_ERP_INFO: + case WLAN_EID_EXT_SUPP_RATES: ++ break; + case WLAN_EID_VENDOR_SPECIFIC: + if (rtw_validate_vendor_specific_ies(pos, elen)) + unknown++; diff --git a/debian/patches/features/all/r8723au/0166-staging-rtl8723au-OnAssocReq23a-Use-cfg80211_find_ve.patch b/debian/patches/features/all/r8723au/0166-staging-rtl8723au-OnAssocReq23a-Use-cfg80211_find_ve.patch new file mode 100644 index 000000000..3f1442c8d --- /dev/null +++ b/debian/patches/features/all/r8723au/0166-staging-rtl8723au-OnAssocReq23a-Use-cfg80211_find_ve.patch @@ -0,0 +1,102 @@ +From: Jes Sorensen +Date: Tue, 24 Jun 2014 15:03:58 +0200 +Subject: [166/249] staging: rtl8723au: OnAssocReq23a(): Use + cfg80211_find_vendor_ie() to locate VMM +Origin: https://git.kernel.org/linus/7c3a8f2a5ec95e2b13704562f36321e20ddfc190 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 62 +++++++++++++-------------- + 1 file changed, 30 insertions(+), 32 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index 88cf1fd..09e5a59 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -1327,7 +1327,6 @@ OnAssocReq23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame) + u16 capab_info, listen_interval; + struct sta_info *pstat; + unsigned char reassoc; +- unsigned char WMM_IE[] = {0x00, 0x50, 0xf2, 0x02, 0x00, 0x01}; + int i, wpa_ie_len, left; + unsigned char supportRate[16]; + int supportRateNum; +@@ -1577,47 +1576,46 @@ OnAssocReq23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame) + + for (;;) { + left = end - p; +- p = cfg80211_find_ie(WLAN_EID_VENDOR_SPECIFIC, p, left); ++ p = cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT, ++ WLAN_OUI_TYPE_MICROSOFT_WMM, ++ p, left); + if (p) { +- if (!memcmp(p + 2, WMM_IE, 6)) { +- pstat->flags |= WLAN_STA_WME; ++ pstat->flags |= WLAN_STA_WME; + +- pstat->qos_option = 1; +- pstat->qos_info = *(p + 8); ++ pstat->qos_option = 1; ++ pstat->qos_info = *(p + 8); + +- pstat->max_sp_len = +- (pstat->qos_info >> 5) & 0x3; ++ pstat->max_sp_len = ++ (pstat->qos_info >> 5) & 0x3; + +- if ((pstat->qos_info & 0xf) != 0xf) +- pstat->has_legacy_ac = true; +- else +- pstat->has_legacy_ac = false; +- +- if (pstat->qos_info & 0xf) { +- if (pstat->qos_info & BIT(0)) +- pstat->uapsd_vo = BIT(0)|BIT(1); +- else +- pstat->uapsd_vo = 0; ++ if ((pstat->qos_info & 0xf) != 0xf) ++ pstat->has_legacy_ac = true; ++ else ++ pstat->has_legacy_ac = false; + +- if (pstat->qos_info & BIT(1)) +- pstat->uapsd_vi = BIT(0)|BIT(1); +- else +- pstat->uapsd_vi = 0; ++ if (pstat->qos_info & 0xf) { ++ if (pstat->qos_info & BIT(0)) ++ pstat->uapsd_vo = BIT(0)|BIT(1); ++ else ++ pstat->uapsd_vo = 0; + +- if (pstat->qos_info & BIT(2)) +- pstat->uapsd_bk = BIT(0)|BIT(1); +- else +- pstat->uapsd_bk = 0; ++ if (pstat->qos_info & BIT(1)) ++ pstat->uapsd_vi = BIT(0)|BIT(1); ++ else ++ pstat->uapsd_vi = 0; + +- if (pstat->qos_info & BIT(3)) +- pstat->uapsd_be = BIT(0)|BIT(1); +- else +- pstat->uapsd_be = 0; ++ if (pstat->qos_info & BIT(2)) ++ pstat->uapsd_bk = BIT(0)|BIT(1); ++ else ++ pstat->uapsd_bk = 0; + +- } ++ if (pstat->qos_info & BIT(3)) ++ pstat->uapsd_be = BIT(0)|BIT(1); ++ else ++ pstat->uapsd_be = 0; + +- break; + } ++ break; + } else { + break; + } diff --git a/debian/patches/features/all/r8723au/0167-staging-rtl8723au-fix-sparse-warning.patch b/debian/patches/features/all/r8723au/0167-staging-rtl8723au-fix-sparse-warning.patch new file mode 100644 index 000000000..3d1bd8374 --- /dev/null +++ b/debian/patches/features/all/r8723au/0167-staging-rtl8723au-fix-sparse-warning.patch @@ -0,0 +1,46 @@ +From: =?UTF-8?q?Cl=C3=A9ment=20Calmels?= +Date: Thu, 26 Jun 2014 10:20:46 +0200 +Subject: [167/249] staging: rtl8723au: fix sparse warning +Origin: https://git.kernel.org/linus/809d208b1b0175843f19f8f552bf05af84496b56 + +Found running sparse on the rtl8723au driver. + + CHECK drivers/staging/rtl8723au/core/rtw_cmd.c +drivers/staging/rtl8723au/core/rtw_cmd.c:1479:54: warning: incorrect type in argument 2 (different base types) +drivers/staging/rtl8723au/core/rtw_cmd.c:1479:54: expected int [signed] gfp +drivers/staging/rtl8723au/core/rtw_cmd.c:1479:54: got restricted gfp_t + +Signed-off-by: Clement Calmels +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme.c | 2 +- + drivers/staging/rtl8723au/include/rtw_mlme.h | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c +index c2e3777..4827280 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c +@@ -100,7 +100,7 @@ void rtw_free_mlme_priv23a(struct mlme_priv *pmlmepriv) + rtw23a_free_mlme_priv_ie_data(pmlmepriv); + } + +-struct wlan_network *rtw_alloc_network(struct mlme_priv *pmlmepriv, int gfp) ++struct wlan_network *rtw_alloc_network(struct mlme_priv *pmlmepriv, gfp_t gfp) + { + struct wlan_network *pnetwork; + +diff --git a/drivers/staging/rtl8723au/include/rtw_mlme.h b/drivers/staging/rtl8723au/include/rtw_mlme.h +index 277d90b..2ff01eb 100644 +--- a/drivers/staging/rtl8723au/include/rtw_mlme.h ++++ b/drivers/staging/rtl8723au/include/rtw_mlme.h +@@ -314,7 +314,7 @@ void rtw23a_free_mlme_priv_ie_data(struct mlme_priv *pmlmepriv); + + void _rtw_free_mlme_priv23a(struct mlme_priv *pmlmepriv); + +-struct wlan_network *rtw_alloc_network(struct mlme_priv *pmlmepriv, int gfp); ++struct wlan_network *rtw_alloc_network(struct mlme_priv *pmlmepriv, gfp_t gfp); + + int rtw_if_up23a(struct rtw_adapter *padapter); + diff --git a/debian/patches/features/all/r8723au/0168-staging-rtl8723au-usb_ops_linux.c-Add-blank-line-bet.patch b/debian/patches/features/all/r8723au/0168-staging-rtl8723au-usb_ops_linux.c-Add-blank-line-bet.patch new file mode 100644 index 000000000..78f30b986 --- /dev/null +++ b/debian/patches/features/all/r8723au/0168-staging-rtl8723au-usb_ops_linux.c-Add-blank-line-bet.patch @@ -0,0 +1,35 @@ +From: Jes Sorensen +Date: Thu, 26 Jun 2014 10:20:47 +0200 +Subject: [168/249] staging: rtl8723au: usb_ops_linux.c: Add blank line between + declaration and usage +Origin: https://git.kernel.org/linus/1c69be9facbbb7d6aaa87831444544736c884653 + +This fixes a minor sparse warning. + +Reported-by: Fengguang Wu +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/usb_ops_linux.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/staging/rtl8723au/hal/usb_ops_linux.c b/drivers/staging/rtl8723au/hal/usb_ops_linux.c +index 8e9e61c..6acb0e3 100644 +--- a/drivers/staging/rtl8723au/hal/usb_ops_linux.c ++++ b/drivers/staging/rtl8723au/hal/usb_ops_linux.c +@@ -28,7 +28,6 @@ static int usbctrl_vendorreq(struct rtw_adapter *padapter, u8 request, + { + struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter); + struct usb_device *udev = pdvobjpriv->pusbdev; +- + unsigned int pipe; + int status = 0; + u8 reqtype; +@@ -97,6 +96,7 @@ static int usbctrl_vendorreq(struct rtw_adapter *padapter, u8 request, + padapter->bSurpriseRemoved = true; + else { + struct hal_data_8723a *pHalData; ++ + pHalData = GET_HAL_DATA(padapter); + pHalData->srestpriv.Wifi_Error_Status = + USB_VEN_REQ_CMD_FAIL; diff --git a/debian/patches/features/all/r8723au/0169-staging-rtl8723au-rtw_sta_mgt.c-Use-ether_addr_-copy.patch b/debian/patches/features/all/r8723au/0169-staging-rtl8723au-rtw_sta_mgt.c-Use-ether_addr_-copy.patch new file mode 100644 index 000000000..d47915b84 --- /dev/null +++ b/debian/patches/features/all/r8723au/0169-staging-rtl8723au-rtw_sta_mgt.c-Use-ether_addr_-copy.patch @@ -0,0 +1,48 @@ +From: Jes Sorensen +Date: Thu, 26 Jun 2014 10:20:48 +0200 +Subject: [169/249] staging: rtl8723au: rtw_sta_mgt.c: Use ether_addr_{copy, + equal}() +Origin: https://git.kernel.org/linus/a6f4e0c17cecf7ccdf3f61bc998c5ecbd5fdfd00 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_sta_mgt.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_sta_mgt.c b/drivers/staging/rtl8723au/core/rtw_sta_mgt.c +index 14a82be..62e35dd 100644 +--- a/drivers/staging/rtl8723au/core/rtw_sta_mgt.c ++++ b/drivers/staging/rtl8723au/core/rtw_sta_mgt.c +@@ -126,7 +126,7 @@ rtw_alloc_stainfo23a(struct sta_priv *pstapriv, u8 *hwaddr, gfp_t gfp) + + psta->padapter = pstapriv->padapter; + +- memcpy(psta->hwaddr, hwaddr, ETH_ALEN); ++ ether_addr_copy(psta->hwaddr, hwaddr); + + index = wifi_mac_hash(hwaddr); + +@@ -363,10 +363,10 @@ struct sta_info *rtw_get_stainfo23a(struct sta_priv *pstapriv, const u8 *hwaddr) + list_for_each(plist, phead) { + psta = container_of(plist, struct sta_info, hash_list); + +- if (!memcmp(psta->hwaddr, addr, ETH_ALEN)) { +- /* if found the matched address */ ++ /* if found the matched address */ ++ if (ether_addr_equal(psta->hwaddr, addr)) + break; +- } ++ + psta = NULL; + } + spin_unlock_bh(&pstapriv->sta_hash_lock); +@@ -422,7 +422,7 @@ bool rtw_access_ctrl23a(struct rtw_adapter *padapter, u8 *mac_addr) + list_for_each(plist, phead) { + paclnode = container_of(plist, struct rtw_wlan_acl_node, list); + +- if (!memcmp(paclnode->addr, mac_addr, ETH_ALEN)) { ++ if (ether_addr_equal(paclnode->addr, mac_addr)) { + if (paclnode->valid) { + match = true; + break; diff --git a/debian/patches/features/all/r8723au/0170-staging-rtl8723au-rtw_sta_mgt.c-One-copy-of-the-broa.patch b/debian/patches/features/all/r8723au/0170-staging-rtl8723au-rtw_sta_mgt.c-One-copy-of-the-broa.patch new file mode 100644 index 000000000..f4b2f4986 --- /dev/null +++ b/debian/patches/features/all/r8723au/0170-staging-rtl8723au-rtw_sta_mgt.c-One-copy-of-the-broa.patch @@ -0,0 +1,55 @@ +From: Jes Sorensen +Date: Thu, 26 Jun 2014 10:20:49 +0200 +Subject: [170/249] staging: rtl8723au: rtw_sta_mgt.c: One copy of the + broadcast address should suffice +Origin: https://git.kernel.org/linus/25f71900872a5b2120011489d8f5d76420ebc193 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_sta_mgt.c | 9 ++++----- + 1 file changed, 4 insertions(+), 5 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_sta_mgt.c b/drivers/staging/rtl8723au/core/rtw_sta_mgt.c +index 62e35dd..f13a470 100644 +--- a/drivers/staging/rtl8723au/core/rtw_sta_mgt.c ++++ b/drivers/staging/rtl8723au/core/rtw_sta_mgt.c +@@ -22,6 +22,8 @@ + #include + #include + ++static u8 bc_addr[ETH_ALEN] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; ++ + static void _rtw_init_stainfo(struct sta_info *psta) + { + memset((u8 *)psta, 0, sizeof (struct sta_info)); +@@ -344,7 +346,6 @@ struct sta_info *rtw_get_stainfo23a(struct sta_priv *pstapriv, const u8 *hwaddr) + struct sta_info *psta = NULL; + u32 index; + const u8 *addr; +- u8 bc_addr[ETH_ALEN] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; + + if (hwaddr == NULL) + return NULL; +@@ -379,9 +380,8 @@ int rtw_init_bcmc_stainfo23a(struct rtw_adapter* padapter) + struct sta_info *psta; + struct tx_servq *ptxservq; + int res = _SUCCESS; +- unsigned char bcast_addr[6] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; + +- psta = rtw_alloc_stainfo23a(pstapriv, bcast_addr, GFP_KERNEL); ++ psta = rtw_alloc_stainfo23a(pstapriv, bc_addr, GFP_KERNEL); + if (psta == NULL) { + res = _FAIL; + RT_TRACE(_module_rtl871x_sta_mgt_c_, _drv_err_, +@@ -399,9 +399,8 @@ struct sta_info *rtw_get_bcmc_stainfo23a(struct rtw_adapter *padapter) + { + struct sta_info *psta; + struct sta_priv *pstapriv = &padapter->stapriv; +- u8 bc_addr[ETH_ALEN] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; + +- psta = rtw_get_stainfo23a(pstapriv, bc_addr); ++ psta = rtw_get_stainfo23a(pstapriv, bc_addr); + return psta; + } + diff --git a/debian/patches/features/all/r8723au/0171-staging-rtl8723au-rtw_allow_stainfo23a-Make-hwaddr-a.patch b/debian/patches/features/all/r8723au/0171-staging-rtl8723au-rtw_allow_stainfo23a-Make-hwaddr-a.patch new file mode 100644 index 000000000..2f535c739 --- /dev/null +++ b/debian/patches/features/all/r8723au/0171-staging-rtl8723au-rtw_allow_stainfo23a-Make-hwaddr-a.patch @@ -0,0 +1,48 @@ +From: Jes Sorensen +Date: Thu, 26 Jun 2014 10:20:50 +0200 +Subject: [171/249] staging: rtl8723au: rtw_allow_stainfo23a(): Make hwaddr + argument const +Origin: https://git.kernel.org/linus/3cf7fa6f8a2005f8cbe2e44228239a8dc1fffff6 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_sta_mgt.c | 4 ++-- + drivers/staging/rtl8723au/include/sta_info.h | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_sta_mgt.c b/drivers/staging/rtl8723au/core/rtw_sta_mgt.c +index f13a470..8db844b 100644 +--- a/drivers/staging/rtl8723au/core/rtw_sta_mgt.c ++++ b/drivers/staging/rtl8723au/core/rtw_sta_mgt.c +@@ -22,7 +22,7 @@ + #include + #include + +-static u8 bc_addr[ETH_ALEN] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; ++static const u8 bc_addr[ETH_ALEN] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; + + static void _rtw_init_stainfo(struct sta_info *psta) + { +@@ -109,7 +109,7 @@ int _rtw_free_sta_priv23a(struct sta_priv *pstapriv) + } + + struct sta_info * +-rtw_alloc_stainfo23a(struct sta_priv *pstapriv, u8 *hwaddr, gfp_t gfp) ++rtw_alloc_stainfo23a(struct sta_priv *pstapriv, const u8 *hwaddr, gfp_t gfp) + { + struct list_head *phash_list; + struct sta_info *psta; +diff --git a/drivers/staging/rtl8723au/include/sta_info.h b/drivers/staging/rtl8723au/include/sta_info.h +index d1939a6..c756b4f 100644 +--- a/drivers/staging/rtl8723au/include/sta_info.h ++++ b/drivers/staging/rtl8723au/include/sta_info.h +@@ -362,7 +362,7 @@ static inline u32 wifi_mac_hash(const u8 *mac) + int _rtw_init_sta_priv23a(struct sta_priv *pstapriv); + int _rtw_free_sta_priv23a(struct sta_priv *pstapriv); + +-struct sta_info *rtw_alloc_stainfo23a(struct sta_priv *pstapriv, u8 *hwaddr, gfp_t gfp); ++struct sta_info *rtw_alloc_stainfo23a(struct sta_priv *pstapriv, const u8 *hwaddr, gfp_t gfp); + int rtw_free_stainfo23a(struct rtw_adapter *padapter, struct sta_info *psta); + void rtw_free_all_stainfo23a(struct rtw_adapter *padapter); + struct sta_info *rtw_get_stainfo23a(struct sta_priv *pstapriv, const u8 *hwaddr); diff --git a/debian/patches/features/all/r8723au/0172-staging-rtl8723au-Remove-unused-rtw_sreset_get_wifi_.patch b/debian/patches/features/all/r8723au/0172-staging-rtl8723au-Remove-unused-rtw_sreset_get_wifi_.patch new file mode 100644 index 000000000..4cd2c10e6 --- /dev/null +++ b/debian/patches/features/all/r8723au/0172-staging-rtl8723au-Remove-unused-rtw_sreset_get_wifi_.patch @@ -0,0 +1,65 @@ +From: Jes Sorensen +Date: Thu, 26 Jun 2014 10:20:51 +0200 +Subject: [172/249] staging: rtl8723au: Remove unused + rtw_sreset_get_wifi_status() +Origin: https://git.kernel.org/linus/5a90765817bbff15edb9f3fa094856ec01576312 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_sreset.c | 29 -------------------------- + drivers/staging/rtl8723au/include/rtw_sreset.h | 1 - + 2 files changed, 30 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_sreset.c b/drivers/staging/rtl8723au/core/rtw_sreset.c +index 18a42a2..8142dd1 100644 +--- a/drivers/staging/rtl8723au/core/rtw_sreset.c ++++ b/drivers/staging/rtl8723au/core/rtw_sreset.c +@@ -39,35 +39,6 @@ void rtw_sreset_reset_value(struct rtw_adapter *padapter) + psrtpriv->last_tx_complete_time = 0; + } + +-u8 rtw_sreset_get_wifi_status(struct rtw_adapter *padapter) +-{ +- struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); +- struct sreset_priv *psrtpriv = &pHalData->srestpriv; +- u8 status = WIFI_STATUS_SUCCESS; +- u32 val32 = 0; +- +- if (psrtpriv->silent_reset_inprogress) +- return status; +- val32 = rtl8723au_read32(padapter, REG_TXDMA_STATUS); +- if (val32 == 0xeaeaeaea) { +- psrtpriv->Wifi_Error_Status = WIFI_IF_NOT_EXIST; +- } else if (val32 != 0) { +- DBG_8723A("txdmastatu(%x)\n", val32); +- psrtpriv->Wifi_Error_Status = WIFI_MAC_TXDMA_ERROR; +- } +- +- if (WIFI_STATUS_SUCCESS != psrtpriv->Wifi_Error_Status) { +- DBG_8723A("==>%s error_status(0x%x)\n", __func__, psrtpriv->Wifi_Error_Status); +- status = (psrtpriv->Wifi_Error_Status &~(USB_READ_PORT_FAIL|USB_WRITE_PORT_FAIL)); +- } +- DBG_8723A("==> %s wifi_status(0x%x)\n", __func__, status); +- +- /* status restore */ +- psrtpriv->Wifi_Error_Status = WIFI_STATUS_SUCCESS; +- +- return status; +-} +- + void sreset_set_wifi_error_status23a(struct rtw_adapter *padapter, u32 status) + { + struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); +diff --git a/drivers/staging/rtl8723au/include/rtw_sreset.h b/drivers/staging/rtl8723au/include/rtw_sreset.h +index 77cc794..a4c45cb 100644 +--- a/drivers/staging/rtl8723au/include/rtw_sreset.h ++++ b/drivers/staging/rtl8723au/include/rtw_sreset.h +@@ -47,7 +47,6 @@ struct sreset_priv { + + void rtw_sreset_init(struct rtw_adapter *padapter); + void rtw_sreset_reset_value(struct rtw_adapter *padapter); +-u8 rtw_sreset_get_wifi_status(struct rtw_adapter *padapter); + bool rtw_sreset_inprogress(struct rtw_adapter *padapter); + void sreset_set_wifi_error_status23a(struct rtw_adapter *padapter, u32 status); + void sreset_set_trigger_point(struct rtw_adapter *padapter, s32 tgp); diff --git a/debian/patches/features/all/r8723au/0173-staging-rtl8723au-Wifi_Error_Status-isn-t-used-for-a.patch b/debian/patches/features/all/r8723au/0173-staging-rtl8723au-Wifi_Error_Status-isn-t-used-for-a.patch new file mode 100644 index 000000000..a323f0fd1 --- /dev/null +++ b/debian/patches/features/all/r8723au/0173-staging-rtl8723au-Wifi_Error_Status-isn-t-used-for-a.patch @@ -0,0 +1,149 @@ +From: Jes Sorensen +Date: Thu, 26 Jun 2014 10:20:52 +0200 +Subject: [173/249] staging: rtl8723au: Wifi_Error_Status isn't used for + anything +Origin: https://git.kernel.org/linus/63a7cabbd57522fdbf063ccb0d0309fd8b3b7ada + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_sreset.c | 11 ----------- + drivers/staging/rtl8723au/hal/rtl8723a_sreset.c | 1 - + drivers/staging/rtl8723au/hal/usb_ops_linux.c | 11 ----------- + drivers/staging/rtl8723au/include/rtw_sreset.h | 11 ----------- + drivers/staging/rtl8723au/os_dep/usb_ops_linux.c | 2 -- + 5 files changed, 36 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_sreset.c b/drivers/staging/rtl8723au/core/rtw_sreset.c +index 8142dd1..c19831c 100644 +--- a/drivers/staging/rtl8723au/core/rtw_sreset.c ++++ b/drivers/staging/rtl8723au/core/rtw_sreset.c +@@ -23,7 +23,6 @@ void rtw_sreset_init(struct rtw_adapter *padapter) + + mutex_init(&psrtpriv->silentreset_mutex); + psrtpriv->silent_reset_inprogress = false; +- psrtpriv->Wifi_Error_Status = WIFI_STATUS_SUCCESS; + psrtpriv->last_tx_time = 0; + psrtpriv->last_tx_complete_time = 0; + } +@@ -34,18 +33,10 @@ void rtw_sreset_reset_value(struct rtw_adapter *padapter) + struct sreset_priv *psrtpriv = &pHalData->srestpriv; + + psrtpriv->silent_reset_inprogress = false; +- psrtpriv->Wifi_Error_Status = WIFI_STATUS_SUCCESS; + psrtpriv->last_tx_time = 0; + psrtpriv->last_tx_complete_time = 0; + } + +-void sreset_set_wifi_error_status23a(struct rtw_adapter *padapter, u32 status) +-{ +- struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); +- +- pHalData->srestpriv.Wifi_Error_Status = status; +-} +- + void sreset_set_trigger_point(struct rtw_adapter *padapter, s32 tgp) + { + struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); +@@ -213,8 +204,6 @@ void rtw_sreset_reset(struct rtw_adapter *active_adapter) + + DBG_8723A("%s\n", __func__); + +- psrtpriv->Wifi_Error_Status = WIFI_STATUS_SUCCESS; +- + mutex_lock(&psrtpriv->silentreset_mutex); + psrtpriv->silent_reset_inprogress = true; + pwrpriv->change_rfpwrstate = rf_off; +diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_sreset.c b/drivers/staging/rtl8723au/hal/rtl8723a_sreset.c +index 0680e29..4374036 100644 +--- a/drivers/staging/rtl8723au/hal/rtl8723a_sreset.c ++++ b/drivers/staging/rtl8723au/hal/rtl8723a_sreset.c +@@ -46,7 +46,6 @@ void rtl8723a_sreset_xmit_status_check(struct rtw_adapter *padapter) + } else { + diff_time = jiffies_to_msecs(jiffies - psrtpriv->last_tx_complete_time); + if (diff_time > 4000) { +- /* padapter->Wifi_Error_Status = WIFI_TX_HANG; */ + DBG_8723A("%s tx hang\n", __func__); + rtw_sreset_reset(padapter); + } +diff --git a/drivers/staging/rtl8723au/hal/usb_ops_linux.c b/drivers/staging/rtl8723au/hal/usb_ops_linux.c +index 6acb0e3..23af718 100644 +--- a/drivers/staging/rtl8723au/hal/usb_ops_linux.c ++++ b/drivers/staging/rtl8723au/hal/usb_ops_linux.c +@@ -94,13 +94,6 @@ static int usbctrl_vendorreq(struct rtw_adapter *padapter, u8 request, + if (status < 0) { + if (status == -ESHUTDOWN || status == -ENODEV) + padapter->bSurpriseRemoved = true; +- else { +- struct hal_data_8723a *pHalData; +- +- pHalData = GET_HAL_DATA(padapter); +- pHalData->srestpriv.Wifi_Error_Status = +- USB_VEN_REQ_CMD_FAIL; +- } + } else { /* status != len && status >= 0 */ + if (status > 0) { + if (requesttype == 0x01) { +@@ -647,7 +640,6 @@ static void usb_read_port_complete(struct urb *purb) + struct recv_buf *precvbuf = (struct recv_buf *)purb->context; + struct rtw_adapter *padapter = (struct rtw_adapter *)precvbuf->adapter; + struct recv_priv *precvpriv = &padapter->recvpriv; +- struct hal_data_8723a *pHalData; + + RT_TRACE(_module_hci_ops_os_c_, _drv_err_, + ("usb_read_port_complete!!!\n")); +@@ -726,9 +718,6 @@ static void usb_read_port_complete(struct urb *purb) + break; + case -EPROTO: + case -EOVERFLOW: +- pHalData = GET_HAL_DATA(padapter); +- pHalData->srestpriv.Wifi_Error_Status = +- USB_READ_PORT_FAIL; + rtl8723au_read_port(padapter, RECV_BULK_IN_ADDR, 0, + precvbuf); + break; +diff --git a/drivers/staging/rtl8723au/include/rtw_sreset.h b/drivers/staging/rtl8723au/include/rtw_sreset.h +index a4c45cb..4799614 100644 +--- a/drivers/staging/rtl8723au/include/rtw_sreset.h ++++ b/drivers/staging/rtl8723au/include/rtw_sreset.h +@@ -27,7 +27,6 @@ enum { + struct sreset_priv { + struct mutex silentreset_mutex; + u8 silent_reset_inprogress; +- u8 Wifi_Error_Status; + unsigned long last_tx_time; + unsigned long last_tx_complete_time; + +@@ -36,19 +35,9 @@ struct sreset_priv { + + #include + +-#define WIFI_STATUS_SUCCESS 0 +-#define USB_VEN_REQ_CMD_FAIL BIT(0) +-#define USB_READ_PORT_FAIL BIT(1) +-#define USB_WRITE_PORT_FAIL BIT(2) +-#define WIFI_MAC_TXDMA_ERROR BIT(3) +-#define WIFI_TX_HANG BIT(4) +-#define WIFI_RX_HANG BIT(5) +-#define WIFI_IF_NOT_EXIST BIT(6) +- + void rtw_sreset_init(struct rtw_adapter *padapter); + void rtw_sreset_reset_value(struct rtw_adapter *padapter); + bool rtw_sreset_inprogress(struct rtw_adapter *padapter); +-void sreset_set_wifi_error_status23a(struct rtw_adapter *padapter, u32 status); + void sreset_set_trigger_point(struct rtw_adapter *padapter, s32 tgp); + void rtw_sreset_reset(struct rtw_adapter *active_adapter); + +diff --git a/drivers/staging/rtl8723au/os_dep/usb_ops_linux.c b/drivers/staging/rtl8723au/os_dep/usb_ops_linux.c +index d081449..3352807 100644 +--- a/drivers/staging/rtl8723au/os_dep/usb_ops_linux.c ++++ b/drivers/staging/rtl8723au/os_dep/usb_ops_linux.c +@@ -96,8 +96,6 @@ static void usb_write_port23a_complete(struct urb *purb) + DBG_8723A("###=> urb_write_port_complete status(%d)\n", + purb->status); + if (purb->status == -EPIPE || purb->status == -EPROTO) { +- sreset_set_wifi_error_status23a(padapter, +- USB_WRITE_PORT_FAIL); + } else if (purb->status == -EINPROGRESS) { + RT_TRACE(_module_hci_ops_os_c_, _drv_err_, + ("usb_write_port23a_complete: EINPROGESS\n")); diff --git a/debian/patches/features/all/r8723au/0174-staging-rtl8723au-sreset_priv-dbg_trigger_point-is-n.patch b/debian/patches/features/all/r8723au/0174-staging-rtl8723au-sreset_priv-dbg_trigger_point-is-n.patch new file mode 100644 index 000000000..e2e6d3c60 --- /dev/null +++ b/debian/patches/features/all/r8723au/0174-staging-rtl8723au-sreset_priv-dbg_trigger_point-is-n.patch @@ -0,0 +1,86 @@ +From: Jes Sorensen +Date: Thu, 26 Jun 2014 10:20:53 +0200 +Subject: [174/249] staging: rtl8723au: sreset_priv->dbg_trigger_point is never + set +Origin: https://git.kernel.org/linus/e899c9176a1d0659d854802966f1b1a8e74394a6 + +No point carrying a bunch of code around that is never going to get +called. + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_sreset.c | 7 ------- + drivers/staging/rtl8723au/hal/rtl8723a_sreset.c | 14 -------------- + drivers/staging/rtl8723au/include/rtw_sreset.h | 8 -------- + 3 files changed, 29 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_sreset.c b/drivers/staging/rtl8723au/core/rtw_sreset.c +index c19831c..c152aef 100644 +--- a/drivers/staging/rtl8723au/core/rtw_sreset.c ++++ b/drivers/staging/rtl8723au/core/rtw_sreset.c +@@ -37,13 +37,6 @@ void rtw_sreset_reset_value(struct rtw_adapter *padapter) + psrtpriv->last_tx_complete_time = 0; + } + +-void sreset_set_trigger_point(struct rtw_adapter *padapter, s32 tgp) +-{ +- struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); +- +- pHalData->srestpriv.dbg_trigger_point = tgp; +-} +- + bool rtw_sreset_inprogress(struct rtw_adapter *padapter) + { + struct rtw_adapter *primary_adapter = GET_PRIMARY_ADAPTER(padapter); +diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_sreset.c b/drivers/staging/rtl8723au/hal/rtl8723a_sreset.c +index 4374036..54a08a1 100644 +--- a/drivers/staging/rtl8723au/hal/rtl8723a_sreset.c ++++ b/drivers/staging/rtl8723au/hal/rtl8723a_sreset.c +@@ -52,22 +52,8 @@ void rtl8723a_sreset_xmit_status_check(struct rtw_adapter *padapter) + } + } + } +- +- if (psrtpriv->dbg_trigger_point == SRESET_TGP_XMIT_STATUS) { +- psrtpriv->dbg_trigger_point = SRESET_TGP_NULL; +- rtw_sreset_reset(padapter); +- return; +- } + } + + void rtl8723a_sreset_linked_status_check(struct rtw_adapter *padapter) + { +- struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); +- struct sreset_priv *psrtpriv = &pHalData->srestpriv; +- +- if (psrtpriv->dbg_trigger_point == SRESET_TGP_LINK_STATUS) { +- psrtpriv->dbg_trigger_point = SRESET_TGP_NULL; +- rtw_sreset_reset(padapter); +- return; +- } + } +diff --git a/drivers/staging/rtl8723au/include/rtw_sreset.h b/drivers/staging/rtl8723au/include/rtw_sreset.h +index 4799614..60fa829 100644 +--- a/drivers/staging/rtl8723au/include/rtw_sreset.h ++++ b/drivers/staging/rtl8723au/include/rtw_sreset.h +@@ -18,19 +18,11 @@ + #include + #include + +-enum { +- SRESET_TGP_NULL = 0, +- SRESET_TGP_XMIT_STATUS = 1, +- SRESET_TGP_LINK_STATUS = 2, +-}; +- + struct sreset_priv { + struct mutex silentreset_mutex; + u8 silent_reset_inprogress; + unsigned long last_tx_time; + unsigned long last_tx_complete_time; +- +- s32 dbg_trigger_point; + }; + + #include diff --git a/debian/patches/features/all/r8723au/0175-staging-rtl8723au-Remove-no-op-rtl8723a_sreset_linke.patch b/debian/patches/features/all/r8723au/0175-staging-rtl8723au-Remove-no-op-rtl8723a_sreset_linke.patch new file mode 100644 index 000000000..4c9053c97 --- /dev/null +++ b/debian/patches/features/all/r8723au/0175-staging-rtl8723au-Remove-no-op-rtl8723a_sreset_linke.patch @@ -0,0 +1,50 @@ +From: Jes Sorensen +Date: Thu, 26 Jun 2014 10:20:54 +0200 +Subject: [175/249] staging: rtl8723au: Remove no-op + rtl8723a_sreset_linked_status_check() +Origin: https://git.kernel.org/linus/f2750d90565bf1ee629593472dd26fbb076bfc41 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 2 -- + drivers/staging/rtl8723au/hal/rtl8723a_sreset.c | 4 ---- + drivers/staging/rtl8723au/include/rtl8723a_sreset.h | 1 - + 3 files changed, 7 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index 09e5a59..3655ee5 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -5215,8 +5215,6 @@ void linked_status_chk23a(struct rtw_adapter *padapter) + struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; + struct sta_priv *pstapriv = &padapter->stapriv; + +- rtl8723a_sreset_linked_status_check(padapter); +- + if (is_client_associated_to_ap23a(padapter)) { + /* linked infrastructure client mode */ + +diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_sreset.c b/drivers/staging/rtl8723au/hal/rtl8723a_sreset.c +index 54a08a1..3c46294 100644 +--- a/drivers/staging/rtl8723au/hal/rtl8723a_sreset.c ++++ b/drivers/staging/rtl8723au/hal/rtl8723a_sreset.c +@@ -53,7 +53,3 @@ void rtl8723a_sreset_xmit_status_check(struct rtw_adapter *padapter) + } + } + } +- +-void rtl8723a_sreset_linked_status_check(struct rtw_adapter *padapter) +-{ +-} +diff --git a/drivers/staging/rtl8723au/include/rtl8723a_sreset.h b/drivers/staging/rtl8723au/include/rtl8723a_sreset.h +index 82af6a2..6197910 100644 +--- a/drivers/staging/rtl8723au/include/rtl8723a_sreset.h ++++ b/drivers/staging/rtl8723au/include/rtl8723a_sreset.h +@@ -20,6 +20,5 @@ + #include + + void rtl8723a_sreset_xmit_status_check(struct rtw_adapter *padapter); +-void rtl8723a_sreset_linked_status_check(struct rtw_adapter *padapter); + + #endif diff --git a/debian/patches/features/all/r8723au/0176-staging-rtl8723au-Remove-unused-rtw_pwr_wakeup_ex.patch b/debian/patches/features/all/r8723au/0176-staging-rtl8723au-Remove-unused-rtw_pwr_wakeup_ex.patch new file mode 100644 index 000000000..4f462e32a --- /dev/null +++ b/debian/patches/features/all/r8723au/0176-staging-rtl8723au-Remove-unused-rtw_pwr_wakeup_ex.patch @@ -0,0 +1,24 @@ +From: Jes Sorensen +Date: Thu, 26 Jun 2014 10:20:55 +0200 +Subject: [176/249] staging: rtl8723au: Remove unused rtw_pwr_wakeup_ex() +Origin: https://git.kernel.org/linus/80f8210abc5ecd5c12c31e57c46a7758396978e1 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/include/rtw_pwrctrl.h | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/drivers/staging/rtl8723au/include/rtw_pwrctrl.h b/drivers/staging/rtl8723au/include/rtw_pwrctrl.h +index a458af9..577914d 100644 +--- a/drivers/staging/rtl8723au/include/rtw_pwrctrl.h ++++ b/drivers/staging/rtl8723au/include/rtw_pwrctrl.h +@@ -253,8 +253,6 @@ int _rtw_pwr_wakeup23a(struct rtw_adapter *padapter, u32 ips_deffer_ms, + const char *caller); + #define rtw_pwr_wakeup(adapter) _rtw_pwr_wakeup23a(adapter, \ + RTW_PWR_STATE_CHK_INTERVAL, __func__) +-#define rtw_pwr_wakeup_ex(adapter, ips_deffer_ms) \ +- _rtw_pwr_wakeup23a(adapter, ips_deffer_ms, __func__) + int rtw_pm_set_ips23a(struct rtw_adapter *padapter, u8 mode); + int rtw_pm_set_lps23a(struct rtw_adapter *padapter, u8 mode); + diff --git a/debian/patches/features/all/r8723au/0177-staging-rtl8723au-Clean-up-rtw_pm_set_ips23a.patch b/debian/patches/features/all/r8723au/0177-staging-rtl8723au-Clean-up-rtw_pm_set_ips23a.patch new file mode 100644 index 000000000..91554683d --- /dev/null +++ b/debian/patches/features/all/r8723au/0177-staging-rtl8723au-Clean-up-rtw_pm_set_ips23a.patch @@ -0,0 +1,59 @@ +From: Jes Sorensen +Date: Tue, 1 Jul 2014 10:11:14 +0200 +Subject: [177/249] staging: rtl8723au: Clean up rtw_pm_set_ips23a() +Origin: https://git.kernel.org/linus/c742e339d5ed554cc20f20df56ae90b553405c9c + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_pwrctrl.c | 15 ++++++--------- + drivers/staging/rtl8723au/include/rtw_pwrctrl.h | 6 ------ + 2 files changed, 6 insertions(+), 15 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_pwrctrl.c b/drivers/staging/rtl8723au/core/rtw_pwrctrl.c +index 7dc7c90..ef29118 100644 +--- a/drivers/staging/rtl8723au/core/rtw_pwrctrl.c ++++ b/drivers/staging/rtl8723au/core/rtw_pwrctrl.c +@@ -615,19 +615,16 @@ int rtw_pm_set_ips23a(struct rtw_adapter *padapter, u8 mode) + { + struct pwrctrl_priv *pwrctrlpriv = &padapter->pwrctrlpriv; + +- if (mode == IPS_NORMAL || mode == IPS_LEVEL_2) { +- rtw_ips_mode_req(pwrctrlpriv, mode); +- DBG_8723A("%s %s\n", __func__, +- mode == IPS_NORMAL?"IPS_NORMAL":"IPS_LEVEL_2"); +- return 0; +- } else if (mode == IPS_NONE) { +- rtw_ips_mode_req(pwrctrlpriv, mode); ++ if (mode != IPS_NORMAL && mode != IPS_LEVEL_2 && mode != IPS_NONE) ++ return -EINVAL; ++ ++ pwrctrlpriv->ips_mode_req = mode; ++ if (mode == IPS_NONE) { + DBG_8723A("%s %s\n", __func__, "IPS_NONE"); + if (padapter->bSurpriseRemoved == 0 && + rtw_pwr_wakeup(padapter) == _FAIL) + return -EFAULT; +- } else +- return -EINVAL; ++ } + + return 0; + } +diff --git a/drivers/staging/rtl8723au/include/rtw_pwrctrl.h b/drivers/staging/rtl8723au/include/rtw_pwrctrl.h +index 577914d..97bb569 100644 +--- a/drivers/staging/rtl8723au/include/rtw_pwrctrl.h ++++ b/drivers/staging/rtl8723au/include/rtw_pwrctrl.h +@@ -214,12 +214,6 @@ struct pwrctrl_priv { + unsigned long PS_BBRegBackup[PSBBREG_TOTALCNT]; + }; + +-#define rtw_get_ips_mode_req(pwrctrlpriv) \ +- ((pwrctrlpriv)->ips_mode_req) +- +-#define rtw_ips_mode_req(pwrctrlpriv, ips_mode) \ +- ((pwrctrlpriv)->ips_mode_req = (ips_mode)) +- + #define RTW_PWR_STATE_CHK_INTERVAL 2000 + + #define _rtw_set_pwr_state_check_timer(pwrctrlpriv, ms) \ diff --git a/debian/patches/features/all/r8723au/0178-staging-rtl8723au-Fold-power_saving_wk_hdl-into-rtw_.patch b/debian/patches/features/all/r8723au/0178-staging-rtl8723au-Fold-power_saving_wk_hdl-into-rtw_.patch new file mode 100644 index 000000000..888de0d6d --- /dev/null +++ b/debian/patches/features/all/r8723au/0178-staging-rtl8723au-Fold-power_saving_wk_hdl-into-rtw_.patch @@ -0,0 +1,38 @@ +From: Jes Sorensen +Date: Tue, 1 Jul 2014 10:11:15 +0200 +Subject: [178/249] staging: rtl8723au: Fold power_saving_wk_hdl() into + rtw_drvextra_cmd_hdl23a() +Origin: https://git.kernel.org/linus/462eb49eae7060081d6e29e93c6defb866580e91 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_cmd.c | 8 +------- + 1 file changed, 1 insertion(+), 7 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_cmd.c b/drivers/staging/rtl8723au/core/rtw_cmd.c +index 35f879e..f44f941 100644 +--- a/drivers/staging/rtl8723au/core/rtw_cmd.c ++++ b/drivers/staging/rtl8723au/core/rtw_cmd.c +@@ -1113,11 +1113,6 @@ exit: + return res; + } + +-static void power_saving_wk_hdl(struct rtw_adapter *padapter, u8 *pbuf, int sz) +-{ +- rtw_ps_processor23a(padapter); +-} +- + int rtw_ps_cmd23a(struct rtw_adapter*padapter) + { + struct cmd_obj *ppscmd; +@@ -1332,8 +1327,7 @@ int rtw_drvextra_cmd_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf) + pdrvextra_cmd->type_size); + break; + case POWER_SAVING_CTRL_WK_CID: +- power_saving_wk_hdl(padapter, pdrvextra_cmd->pbuf, +- pdrvextra_cmd->type_size); ++ rtw_ps_processor23a(padapter); + break; + case LPS_CTRL_WK_CID: + lps_ctrl_wk_hdl(padapter, (u8)pdrvextra_cmd->type_size); diff --git a/debian/patches/features/all/r8723au/0179-staging-rtl8723au-Remove-unused-pwrctrl_priv-brfoffb.patch b/debian/patches/features/all/r8723au/0179-staging-rtl8723au-Remove-unused-pwrctrl_priv-brfoffb.patch new file mode 100644 index 000000000..6101f07e8 --- /dev/null +++ b/debian/patches/features/all/r8723au/0179-staging-rtl8723au-Remove-unused-pwrctrl_priv-brfoffb.patch @@ -0,0 +1,49 @@ +From: Jes Sorensen +Date: Tue, 1 Jul 2014 10:11:16 +0200 +Subject: [179/249] staging: rtl8723au: Remove unused pwrctrl_priv->brfoffbyhw +Origin: https://git.kernel.org/linus/bf51ee79fd468f958ce191f01bf4995fb3eb354c + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_pwrctrl.c | 1 - + drivers/staging/rtl8723au/include/rtw_pwrctrl.h | 1 - + drivers/staging/rtl8723au/os_dep/usb_intf.c | 1 - + 3 files changed, 3 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_pwrctrl.c b/drivers/staging/rtl8723au/core/rtw_pwrctrl.c +index ef29118..ad06335 100644 +--- a/drivers/staging/rtl8723au/core/rtw_pwrctrl.c ++++ b/drivers/staging/rtl8723au/core/rtw_pwrctrl.c +@@ -165,7 +165,6 @@ void rtw_ps_processor23a(struct rtw_adapter*padapter) + if (rfpwrstate!= pwrpriv->rf_pwrstate) { + if (rfpwrstate == rf_off) { + pwrpriv->change_rfpwrstate = rf_off; +- pwrpriv->brfoffbyhw = true; + padapter->bCardDisableWOHSM = true; + rtw_hw_suspend23a(padapter); + } else { +diff --git a/drivers/staging/rtl8723au/include/rtw_pwrctrl.h b/drivers/staging/rtl8723au/include/rtw_pwrctrl.h +index 97bb569..110bad9 100644 +--- a/drivers/staging/rtl8723au/include/rtw_pwrctrl.h ++++ b/drivers/staging/rtl8723au/include/rtw_pwrctrl.h +@@ -210,7 +210,6 @@ struct pwrctrl_priv { + u8 bHWPowerdown;/* if support hw power down */ + u8 bHWPwrPindetect; + u8 bkeepfwalive; +- u8 brfoffbyhw; + unsigned long PS_BBRegBackup[PSBBREG_TOTALCNT]; + }; + +diff --git a/drivers/staging/rtl8723au/os_dep/usb_intf.c b/drivers/staging/rtl8723au/os_dep/usb_intf.c +index d0a3a1e6..e0d5514 100644 +--- a/drivers/staging/rtl8723au/os_dep/usb_intf.c ++++ b/drivers/staging/rtl8723au/os_dep/usb_intf.c +@@ -416,7 +416,6 @@ int rtw_hw_resume23a(struct rtw_adapter *padapter) + netif_tx_wake_all_queues(pnetdev); + + pwrpriv->bkeepfwalive = false; +- pwrpriv->brfoffbyhw = false; + + pwrpriv->rf_pwrstate = rf_on; + pwrpriv->bips_processing = false; diff --git a/debian/patches/features/all/r8723au/0180-staging-rtl8723au-Remove-unused-variables-from-struc.patch b/debian/patches/features/all/r8723au/0180-staging-rtl8723au-Remove-unused-variables-from-struc.patch new file mode 100644 index 000000000..00d9a42c6 --- /dev/null +++ b/debian/patches/features/all/r8723au/0180-staging-rtl8723au-Remove-unused-variables-from-struc.patch @@ -0,0 +1,43 @@ +From: Jes Sorensen +Date: Tue, 1 Jul 2014 10:11:17 +0200 +Subject: [180/249] staging: rtl8723au: Remove unused variables from struct + pwrctrl_priv +Origin: https://git.kernel.org/linus/46eff7392d23d6ec8e2b1d02bc90e6cdb2c72d41 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/include/rtw_pwrctrl.h | 5 ----- + 1 file changed, 5 deletions(-) + +diff --git a/drivers/staging/rtl8723au/include/rtw_pwrctrl.h b/drivers/staging/rtl8723au/include/rtw_pwrctrl.h +index 110bad9..2142255 100644 +--- a/drivers/staging/rtl8723au/include/rtw_pwrctrl.h ++++ b/drivers/staging/rtl8723au/include/rtw_pwrctrl.h +@@ -155,18 +155,14 @@ struct pwrctrl_priv { + * read from HCPWM 2. driver lowers power level + */ + volatile u8 tog; /* toggling */ +- volatile u8 cpwm_tog; /* toggling */ + + u8 pwr_mode; + u8 smart_ps; + u8 bcn_ant_mode; + +- u32 alives; +- struct work_struct cpwm_event; + u8 bpower_saving; + + u8 reg_rfoff; +- u8 reg_pdnmode; /* powerdown mode */ + u32 rfoff_reason; + + /* RF OFF Level */ +@@ -206,7 +202,6 @@ struct pwrctrl_priv { + enum rt_rf_power_state rf_pwrstate;/* cur power state */ + enum rt_rf_power_state change_rfpwrstate; + +- u8 wepkeymask; + u8 bHWPowerdown;/* if support hw power down */ + u8 bHWPwrPindetect; + u8 bkeepfwalive; diff --git a/debian/patches/features/all/r8723au/0181-staging-rtl8723au-pnp_bstop_trx-is-never-set.patch b/debian/patches/features/all/r8723au/0181-staging-rtl8723au-pnp_bstop_trx-is-never-set.patch new file mode 100644 index 000000000..8bb10bb67 --- /dev/null +++ b/debian/patches/features/all/r8723au/0181-staging-rtl8723au-pnp_bstop_trx-is-never-set.patch @@ -0,0 +1,80 @@ +From: Jes Sorensen +Date: Tue, 1 Jul 2014 10:11:18 +0200 +Subject: [181/249] staging: rtl8723au: pnp_bstop_trx is never set +Origin: https://git.kernel.org/linus/e976cf6f135713cb6f4c904bf24fadfbbf325160 + +In addition remove unused pnp_current_pwr_state + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/usb_ops_linux.c | 11 ++++------- + drivers/staging/rtl8723au/include/rtw_pwrctrl.h | 2 -- + drivers/staging/rtl8723au/os_dep/usb_ops_linux.c | 8 +++----- + 3 files changed, 7 insertions(+), 14 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/usb_ops_linux.c b/drivers/staging/rtl8723au/hal/usb_ops_linux.c +index 23af718..780658c 100644 +--- a/drivers/staging/rtl8723au/hal/usb_ops_linux.c ++++ b/drivers/staging/rtl8723au/hal/usb_ops_linux.c +@@ -34,10 +34,9 @@ static int usbctrl_vendorreq(struct rtw_adapter *padapter, u8 request, + u8 *pIo_buf; + int vendorreq_times = 0; + +- if (padapter->bSurpriseRemoved || padapter->pwrctrlpriv.pnp_bstop_trx) { ++ if (padapter->bSurpriseRemoved) { + RT_TRACE(_module_hci_ops_os_c_, _drv_err_, +- ("usbctrl_vendorreq:(padapter->bSurpriseRemoved||" +- "adapter->pwrctrlpriv.pnp_bstop_trx)!!!\n")); ++ ("usbctrl_vendorreq:(padapter->bSurpriseRemoved)!!!")); + status = -EPERM; + goto exit; + } +@@ -743,12 +742,10 @@ int rtl8723au_read_port(struct rtw_adapter *adapter, u32 addr, u32 cnt, + struct recv_priv *precvpriv = &adapter->recvpriv; + struct usb_device *pusbd = pdvobj->pusbdev; + +- if (adapter->bDriverStopped || adapter->bSurpriseRemoved || +- adapter->pwrctrlpriv.pnp_bstop_trx) { ++ if (adapter->bDriverStopped || adapter->bSurpriseRemoved) { + RT_TRACE(_module_hci_ops_os_c_, _drv_err_, + ("usb_read_port:(padapter->bDriverStopped ||" +- "padapter->bSurpriseRemoved ||adapter->" +- "pwrctrlpriv.pnp_bstop_trx)!!!\n")); ++ "padapter->bSurpriseRemoved)!!!\n")); + return _FAIL; + } + +diff --git a/drivers/staging/rtl8723au/include/rtw_pwrctrl.h b/drivers/staging/rtl8723au/include/rtw_pwrctrl.h +index 2142255..45e13ce 100644 +--- a/drivers/staging/rtl8723au/include/rtw_pwrctrl.h ++++ b/drivers/staging/rtl8723au/include/rtw_pwrctrl.h +@@ -184,8 +184,6 @@ struct pwrctrl_priv { + u8 bFwCurrentInPSMode; + unsigned long DelayLPSLastTimeStamp; + u8 btcoex_rfon; +- s32 pnp_current_pwr_state; +- u8 pnp_bstop_trx; + + u8 bInSuspend; + #ifdef CONFIG_8723AU_BT_COEXIST +diff --git a/drivers/staging/rtl8723au/os_dep/usb_ops_linux.c b/drivers/staging/rtl8723au/os_dep/usb_ops_linux.c +index 3352807..a3349ac 100644 +--- a/drivers/staging/rtl8723au/os_dep/usb_ops_linux.c ++++ b/drivers/staging/rtl8723au/os_dep/usb_ops_linux.c +@@ -153,12 +153,10 @@ int rtl8723au_write_port(struct rtw_adapter *padapter, u32 addr, u32 cnt, + + RT_TRACE(_module_hci_ops_os_c_, _drv_err_, ("+usb_write_port23a\n")); + +- if (padapter->bDriverStopped || padapter->bSurpriseRemoved || +- padapter->pwrctrlpriv.pnp_bstop_trx) { ++ if (padapter->bDriverStopped || padapter->bSurpriseRemoved) { + RT_TRACE(_module_hci_ops_os_c_, _drv_err_, +- ("usb_write_port23a:( padapter->bDriverStopped || " +- "padapter->bSurpriseRemoved || " +- "adapter->pwrctrlpriv.pnp_bstop_trx)!!!\n")); ++ ("%s:(padapter->bDriverStopped || " ++ "padapter->bSurpriseRemoved)!!!\n", __func__)); + rtw23a_sctx_done_err(&pxmitbuf->sctx, RTW_SCTX_DONE_TX_DENY); + goto exit; + } diff --git a/debian/patches/features/all/r8723au/0182-staging-rtl8723au-pwrctrl_priv-ps_flag-is-never-set.patch b/debian/patches/features/all/r8723au/0182-staging-rtl8723au-pwrctrl_priv-ps_flag-is-never-set.patch new file mode 100644 index 000000000..ca83ec3d4 --- /dev/null +++ b/debian/patches/features/all/r8723au/0182-staging-rtl8723au-pwrctrl_priv-ps_flag-is-never-set.patch @@ -0,0 +1,48 @@ +From: Jes Sorensen +Date: Tue, 1 Jul 2014 10:11:19 +0200 +Subject: [182/249] staging: rtl8723au: pwrctrl_priv->ps_flag is never set +Origin: https://git.kernel.org/linus/c3a3e226113dc43a0acdca3b98a7e175cc8b622b + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/include/rtw_pwrctrl.h | 2 -- + drivers/staging/rtl8723au/os_dep/os_intfs.c | 5 ----- + 2 files changed, 7 deletions(-) + +diff --git a/drivers/staging/rtl8723au/include/rtw_pwrctrl.h b/drivers/staging/rtl8723au/include/rtw_pwrctrl.h +index 45e13ce..1fa712f 100644 +--- a/drivers/staging/rtl8723au/include/rtw_pwrctrl.h ++++ b/drivers/staging/rtl8723au/include/rtw_pwrctrl.h +@@ -195,8 +195,6 @@ struct pwrctrl_priv { + int pwr_state_check_interval; + u8 pwr_state_check_cnts; + +- int ps_flag; +- + enum rt_rf_power_state rf_pwrstate;/* cur power state */ + enum rt_rf_power_state change_rfpwrstate; + +diff --git a/drivers/staging/rtl8723au/os_dep/os_intfs.c b/drivers/staging/rtl8723au/os_dep/os_intfs.c +index ee3d62c..7fa5c4c 100644 +--- a/drivers/staging/rtl8723au/os_dep/os_intfs.c ++++ b/drivers/staging/rtl8723au/os_dep/os_intfs.c +@@ -663,10 +663,6 @@ int netdev_open23a(struct net_device *pnetdev) + mutex_lock(&adapter_to_dvobj(padapter)->hw_init_mutex); + + pwrctrlpriv = &padapter->pwrctrlpriv; +- if (pwrctrlpriv->ps_flag) { +- padapter->net_closed = false; +- goto netdev_open23a_normal_process; +- } + + if (!padapter->bup) { + padapter->bDriverStopped = false; +@@ -711,7 +707,6 @@ int netdev_open23a(struct net_device *pnetdev) + else + netif_tx_wake_all_queues(pnetdev); + +-netdev_open23a_normal_process: + RT_TRACE(_module_os_intfs_c_, _drv_info_, ("-871x_drv - dev_open\n")); + DBG_8723A("-871x_drv - drv_open, bup =%d\n", padapter->bup); + exit: diff --git a/debian/patches/features/all/r8723au/0183-staging-rtl8723au-Remove-never-set-struct-rtw_adapte.patch b/debian/patches/features/all/r8723au/0183-staging-rtl8723au-Remove-never-set-struct-rtw_adapte.patch new file mode 100644 index 000000000..255bc7020 --- /dev/null +++ b/debian/patches/features/all/r8723au/0183-staging-rtl8723au-Remove-never-set-struct-rtw_adapte.patch @@ -0,0 +1,69 @@ +From: Jes Sorensen +Date: Tue, 1 Jul 2014 10:11:20 +0200 +Subject: [183/249] staging: rtl8723au: Remove never set struct + rtw_adapter->bNotifyChannelChange +Origin: https://git.kernel.org/linus/a4f3d3c776140bb739353ca8614fd1105c696d97 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_wlan_util.c | 4 ---- + drivers/staging/rtl8723au/hal/rtl8723a_phycfg.c | 3 --- + drivers/staging/rtl8723au/include/drv_types.h | 2 -- + drivers/staging/rtl8723au/os_dep/os_intfs.c | 1 - + 4 files changed, 10 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_wlan_util.c b/drivers/staging/rtl8723au/core/rtw_wlan_util.c +index 66e72e2..25dae51 100644 +--- a/drivers/staging/rtl8723au/core/rtw_wlan_util.c ++++ b/drivers/staging/rtl8723au/core/rtw_wlan_util.c +@@ -360,10 +360,6 @@ void set_channel_bwmode23a(struct rtw_adapter *padapter, unsigned char channel, + { + u8 center_ch; + +- if (padapter->bNotifyChannelChange) +- DBG_8723A("[%s] ch = %d, offset = %d, bwmode = %d\n", +- __func__, channel, channel_offset, bwmode); +- + if (bwmode == HT_CHANNEL_WIDTH_20 || + channel_offset == HAL_PRIME_CHNL_OFFSET_DONT_CARE) { + /* SelectChannel23a(padapter, channel); */ +diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_phycfg.c b/drivers/staging/rtl8723au/hal/rtl8723a_phycfg.c +index d23525e..8a6ba63 100644 +--- a/drivers/staging/rtl8723au/hal/rtl8723a_phycfg.c ++++ b/drivers/staging/rtl8723au/hal/rtl8723a_phycfg.c +@@ -1098,9 +1098,6 @@ static void _PHY_SwChnl8723A(struct rtw_adapter *Adapter, u8 channel) + u32 param1, param2; + struct hal_data_8723a *pHalData = GET_HAL_DATA(Adapter); + +- if (Adapter->bNotifyChannelChange) +- DBG_8723A("[%s] ch = %d\n", __func__, channel); +- + /* s1. pre common command - CmdID_SetTxPowerLevel */ + PHY_SetTxPowerLevel8723A(Adapter, channel); + +diff --git a/drivers/staging/rtl8723au/include/drv_types.h b/drivers/staging/rtl8723au/include/drv_types.h +index 3ef9d7a..c06de68 100644 +--- a/drivers/staging/rtl8723au/include/drv_types.h ++++ b/drivers/staging/rtl8723au/include/drv_types.h +@@ -257,8 +257,6 @@ struct rtw_adapter { + u8 bFWReady; + u8 bReadPortCancel; + u8 bWritePortCancel; +- /* The driver will show the desired chan nor when this flag is 1. */ +- u8 bNotifyChannelChange; + + /* extend to support multi interface */ + /* IFACE_ID0 is equals to PRIMARY_ADAPTER */ +diff --git a/drivers/staging/rtl8723au/os_dep/os_intfs.c b/drivers/staging/rtl8723au/os_dep/os_intfs.c +index 7fa5c4c..d72305d 100644 +--- a/drivers/staging/rtl8723au/os_dep/os_intfs.c ++++ b/drivers/staging/rtl8723au/os_dep/os_intfs.c +@@ -425,7 +425,6 @@ static int rtw_init_default_value(struct rtw_adapter *padapter) + /* misc. */ + padapter->bReadPortCancel = false; + padapter->bWritePortCancel = false; +- padapter->bNotifyChannelChange = 0; + return ret; + } + diff --git a/debian/patches/features/all/r8723au/0184-staging-rtl8723au-Sanitize-USB-read-write-functions.patch b/debian/patches/features/all/r8723au/0184-staging-rtl8723au-Sanitize-USB-read-write-functions.patch new file mode 100644 index 000000000..b3b0d97b9 --- /dev/null +++ b/debian/patches/features/all/r8723au/0184-staging-rtl8723au-Sanitize-USB-read-write-functions.patch @@ -0,0 +1,474 @@ +From: Jes Sorensen +Date: Tue, 1 Jul 2014 12:07:00 +0200 +Subject: [184/249] staging: rtl8723au: Sanitize USB read/write functions +Origin: https://git.kernel.org/linus/2786faa33bfc8d61b4fa45dd2e31664de796c837 + +The original Realtek provided functions suffered badly from clutter to +accommodate broken operating systems. Lets try this lean and clean +version instead. + +v2: Do not use the stack for data passed to usb_control_msg(). This + requires reintroducing the mutex used in the old function. In + addition, get rid of the no longer used 'usb_vendor_req_buf'. + Note that rtl8723au_writeN() remains unlocked, so it can be used + for bulk block transfers without having to retake the mutex for + every write(). + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/usb_ops_linux.c | 299 +++++++--------------- + drivers/staging/rtl8723au/include/drv_types.h | 9 +- + drivers/staging/rtl8723au/include/usb_ops_linux.h | 14 +- + drivers/staging/rtl8723au/os_dep/usb_intf.c | 21 +- + 4 files changed, 105 insertions(+), 238 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/usb_ops_linux.c b/drivers/staging/rtl8723au/hal/usb_ops_linux.c +index 780658c..c1b04c1 100644 +--- a/drivers/staging/rtl8723au/hal/usb_ops_linux.c ++++ b/drivers/staging/rtl8723au/hal/usb_ops_linux.c +@@ -22,270 +22,149 @@ + #include + #include + +-static int usbctrl_vendorreq(struct rtw_adapter *padapter, u8 request, +- u16 value, u16 index, void *pdata, u16 len, +- u8 requesttype) ++u8 rtl8723au_read8(struct rtw_adapter *padapter, u16 addr) + { + struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter); + struct usb_device *udev = pdvobjpriv->pusbdev; +- unsigned int pipe; +- int status = 0; +- u8 reqtype; +- u8 *pIo_buf; +- int vendorreq_times = 0; +- +- if (padapter->bSurpriseRemoved) { +- RT_TRACE(_module_hci_ops_os_c_, _drv_err_, +- ("usbctrl_vendorreq:(padapter->bSurpriseRemoved)!!!")); +- status = -EPERM; +- goto exit; +- } +- +- if (len > MAX_VENDOR_REQ_CMD_SIZE) { +- DBG_8723A("[%s] Buffer len error , vendor request failed\n", +- __func__); +- status = -EINVAL; +- goto exit; +- } ++ int len; ++ u8 data; + + mutex_lock(&pdvobjpriv->usb_vendor_req_mutex); ++ len = usb_control_msg(udev, usb_rcvctrlpipe(udev, 0), ++ REALTEK_USB_VENQT_CMD_REQ, REALTEK_USB_VENQT_READ, ++ addr, 0, &pdvobjpriv->usb_buf.val8, sizeof(data), ++ RTW_USB_CONTROL_MSG_TIMEOUT); + +- /* Acquire IO memory for vendorreq */ +- pIo_buf = pdvobjpriv->usb_vendor_req_buf; +- +- if (pIo_buf == NULL) { +- DBG_8723A("[%s] pIo_buf == NULL \n", __func__); +- status = -ENOMEM; +- goto release_mutex; +- } +- +- while (++vendorreq_times <= MAX_USBCTRL_VENDORREQ_TIMES) { +- memset(pIo_buf, 0, len); +- +- if (requesttype == 0x01) { +- pipe = usb_rcvctrlpipe(udev, 0);/* read_in */ +- reqtype = REALTEK_USB_VENQT_READ; +- } else { +- pipe = usb_sndctrlpipe(udev, 0);/* write_out */ +- reqtype = REALTEK_USB_VENQT_WRITE; +- memcpy(pIo_buf, pdata, len); +- } +- +- status = usb_control_msg(udev, pipe, request, reqtype, +- value, index, pIo_buf, len, +- RTW_USB_CONTROL_MSG_TIMEOUT); +- +- if (status == len) { /* Success this control transfer. */ +- rtw_reset_continual_urb_error(pdvobjpriv); +- if (requesttype == 0x01) { +- /* For Control read transfer, we have to copy +- * the read data from pIo_buf to pdata. +- */ +- memcpy(pdata, pIo_buf, len); +- } +- } else { /* error cases */ +- DBG_8723A("reg 0x%x, usb %s %u fail, status:%d value =" +- " 0x%x, vendorreq_times:%d\n", +- value, (requesttype == 0x01) ? +- "read" : "write", +- len, status, *(u32 *)pdata, vendorreq_times); +- +- if (status < 0) { +- if (status == -ESHUTDOWN || status == -ENODEV) +- padapter->bSurpriseRemoved = true; +- } else { /* status != len && status >= 0 */ +- if (status > 0) { +- if (requesttype == 0x01) { +- /* +- * For Control read transfer, +- * we have to copy the read +- * data from pIo_buf to pdata. +- */ +- memcpy(pdata, pIo_buf, len); +- } +- } +- } +- +- if (rtw_inc_and_chk_continual_urb_error(pdvobjpriv)) { +- padapter->bSurpriseRemoved = true; +- break; +- } +- } +- +- /* firmware download is checksumed, don't retry */ +- if ((value >= FW_8723A_START_ADDRESS && +- value <= FW_8723A_END_ADDRESS) || status == len) +- break; +- } +- +-release_mutex: ++ data = pdvobjpriv->usb_buf.val8; + mutex_unlock(&pdvobjpriv->usb_vendor_req_mutex); +-exit: +- return status; +-} +- +-u8 rtl8723au_read8(struct rtw_adapter *padapter, u32 addr) +-{ +- u8 request; +- u8 requesttype; +- u16 wvalue; +- u16 index; +- u16 len; +- u8 data = 0; +- +- request = 0x05; +- requesttype = 0x01;/* read_in */ +- index = 0;/* n/a */ +- +- wvalue = (u16)(addr&0x0000ffff); +- len = 1; +- +- usbctrl_vendorreq(padapter, request, wvalue, index, &data, +- len, requesttype); + + return data; + } + +-u16 rtl8723au_read16(struct rtw_adapter *padapter, u32 addr) ++u16 rtl8723au_read16(struct rtw_adapter *padapter, u16 addr) + { +- u8 request; +- u8 requesttype; +- u16 wvalue; +- u16 index; +- u16 len; +- __le16 data; +- +- request = 0x05; +- requesttype = 0x01;/* read_in */ +- index = 0;/* n/a */ ++ struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter); ++ struct usb_device *udev = pdvobjpriv->pusbdev; ++ int len; ++ u16 data; + +- wvalue = (u16)(addr&0x0000ffff); +- len = 2; ++ mutex_lock(&pdvobjpriv->usb_vendor_req_mutex); ++ len = usb_control_msg(udev, usb_rcvctrlpipe(udev, 0), ++ REALTEK_USB_VENQT_CMD_REQ, REALTEK_USB_VENQT_READ, ++ addr, 0, &pdvobjpriv->usb_buf.val16, sizeof(data), ++ RTW_USB_CONTROL_MSG_TIMEOUT); + +- usbctrl_vendorreq(padapter, request, wvalue, index, &data, +- len, requesttype); ++ data = le16_to_cpu(pdvobjpriv->usb_buf.val16); ++ mutex_unlock(&pdvobjpriv->usb_vendor_req_mutex); + +- return le16_to_cpu(data); ++ return data; + } + +-u32 rtl8723au_read32(struct rtw_adapter *padapter, u32 addr) ++u32 rtl8723au_read32(struct rtw_adapter *padapter, u16 addr) + { +- u8 request; +- u8 requesttype; +- u16 wvalue; +- u16 index; +- u16 len; +- __le32 data; +- +- request = 0x05; +- requesttype = 0x01;/* read_in */ +- index = 0;/* n/a */ ++ struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter); ++ struct usb_device *udev = pdvobjpriv->pusbdev; ++ int len; ++ u32 data; + +- wvalue = (u16)(addr&0x0000ffff); +- len = 4; ++ mutex_lock(&pdvobjpriv->usb_vendor_req_mutex); ++ len = usb_control_msg(udev, usb_rcvctrlpipe(udev, 0), ++ REALTEK_USB_VENQT_CMD_REQ, REALTEK_USB_VENQT_READ, ++ addr, 0, &pdvobjpriv->usb_buf.val32, sizeof(data), ++ RTW_USB_CONTROL_MSG_TIMEOUT); + +- usbctrl_vendorreq(padapter, request, wvalue, index, &data, +- len, requesttype); ++ data = le32_to_cpu(pdvobjpriv->usb_buf.val32); ++ mutex_unlock(&pdvobjpriv->usb_vendor_req_mutex); + +- return le32_to_cpu(data); ++ return data; + } + +-int rtl8723au_write8(struct rtw_adapter *padapter, u32 addr, u8 val) ++int rtl8723au_write8(struct rtw_adapter *padapter, u16 addr, u8 val) + { +- u8 request; +- u8 requesttype; +- u16 wvalue; +- u16 index; +- u16 len; +- u8 data; ++ struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter); ++ struct usb_device *udev = pdvobjpriv->pusbdev; + int ret; + +- request = 0x05; +- requesttype = 0x00;/* write_out */ +- index = 0;/* n/a */ +- +- wvalue = (u16)(addr&0x0000ffff); +- len = 1; ++ mutex_lock(&pdvobjpriv->usb_vendor_req_mutex); ++ pdvobjpriv->usb_buf.val8 = val; + +- data = val; ++ ret = usb_control_msg(udev, usb_sndctrlpipe(udev, 0), ++ REALTEK_USB_VENQT_CMD_REQ, ++ REALTEK_USB_VENQT_WRITE, ++ addr, 0, &pdvobjpriv->usb_buf.val8, sizeof(val), ++ RTW_USB_CONTROL_MSG_TIMEOUT); + +- ret = usbctrl_vendorreq(padapter, request, wvalue, index, &data, +- len, requesttype); ++ if (ret != sizeof(val)) ++ ret = _FAIL; ++ else ++ ret = _SUCCESS; + ++ mutex_unlock(&pdvobjpriv->usb_vendor_req_mutex); + return ret; + } + +-int rtl8723au_write16(struct rtw_adapter *padapter, u32 addr, u16 val) ++int rtl8723au_write16(struct rtw_adapter *padapter, u16 addr, u16 val) + { +- u8 request; +- u8 requesttype; +- u16 wvalue; +- u16 index; +- u16 len; +- __le16 data; ++ struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter); ++ struct usb_device *udev = pdvobjpriv->pusbdev; + int ret; + +- request = 0x05; +- requesttype = 0x00;/* write_out */ +- index = 0;/* n/a */ ++ mutex_lock(&pdvobjpriv->usb_vendor_req_mutex); ++ pdvobjpriv->usb_buf.val16 = cpu_to_le16(val); + +- wvalue = (u16)(addr&0x0000ffff); +- len = 2; ++ ret = usb_control_msg(udev, usb_sndctrlpipe(udev, 0), ++ REALTEK_USB_VENQT_CMD_REQ, ++ REALTEK_USB_VENQT_WRITE, ++ addr, 0, &pdvobjpriv->usb_buf.val16, sizeof(val), ++ RTW_USB_CONTROL_MSG_TIMEOUT); + +- data = cpu_to_le16(val); ++ if (ret != sizeof(val)) ++ ret = _FAIL; ++ else ++ ret = _SUCCESS; + +- ret = usbctrl_vendorreq(padapter, request, wvalue, index, &data, +- len, requesttype); ++ mutex_unlock(&pdvobjpriv->usb_vendor_req_mutex); + return ret; + } + +-int rtl8723au_write32(struct rtw_adapter *padapter, u32 addr, u32 val) ++int rtl8723au_write32(struct rtw_adapter *padapter, u16 addr, u32 val) + { +- u8 request; +- u8 requesttype; +- u16 wvalue; +- u16 index; +- u16 len; +- __le32 data; ++ struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter); ++ struct usb_device *udev = pdvobjpriv->pusbdev; + int ret; + +- request = 0x05; +- requesttype = 0x00;/* write_out */ +- index = 0;/* n/a */ ++ mutex_lock(&pdvobjpriv->usb_vendor_req_mutex); ++ pdvobjpriv->usb_buf.val32 = cpu_to_le32(val); + +- wvalue = (u16)(addr&0x0000ffff); +- len = 4; +- data = cpu_to_le32(val); ++ ret = usb_control_msg(udev, usb_sndctrlpipe(udev, 0), ++ REALTEK_USB_VENQT_CMD_REQ, ++ REALTEK_USB_VENQT_WRITE, ++ addr, 0, &pdvobjpriv->usb_buf.val32, sizeof(val), ++ RTW_USB_CONTROL_MSG_TIMEOUT); + +- ret = usbctrl_vendorreq(padapter, request, wvalue, index, &data, +- len, requesttype); ++ if (ret != sizeof(val)) ++ ret = _FAIL; ++ else ++ ret = _SUCCESS; + ++ mutex_unlock(&pdvobjpriv->usb_vendor_req_mutex); + return ret; + } + +-int rtl8723au_writeN(struct rtw_adapter *padapter, +- u32 addr, u32 length, u8 *pdata) ++int rtl8723au_writeN(struct rtw_adapter *padapter, u16 addr, u16 len, u8 *buf) + { +- u8 request; +- u8 requesttype; +- u16 wvalue; +- u16 index; +- u16 len; +- u8 buf[VENDOR_CMD_MAX_DATA_LEN] = {0}; ++ struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter); ++ struct usb_device *udev = pdvobjpriv->pusbdev; + int ret; + +- request = 0x05; +- requesttype = 0x00;/* write_out */ +- index = 0;/* n/a */ +- +- wvalue = (u16)(addr&0x0000ffff); +- len = length; +- memcpy(buf, pdata, len); ++ ret = usb_control_msg(udev, usb_sndctrlpipe(udev, 0), ++ REALTEK_USB_VENQT_CMD_REQ, ++ REALTEK_USB_VENQT_WRITE, ++ addr, 0, buf, len, RTW_USB_CONTROL_MSG_TIMEOUT); + +- ret = usbctrl_vendorreq(padapter, request, wvalue, index, buf, +- len, requesttype); +- +- return ret; ++ if (ret != len) ++ return _FAIL; ++ return _SUCCESS; + } + + /* +diff --git a/drivers/staging/rtl8723au/include/drv_types.h b/drivers/staging/rtl8723au/include/drv_types.h +index c06de68..df55e5b 100644 +--- a/drivers/staging/rtl8723au/include/drv_types.h ++++ b/drivers/staging/rtl8723au/include/drv_types.h +@@ -177,10 +177,13 @@ struct dvobj_priv { + u8 RtNumOutPipes; + int ep_num[5]; /* endpoint number */ + +- struct mutex usb_vendor_req_mutex; ++ struct mutex usb_vendor_req_mutex; + +- u8 *usb_alloc_vendor_req_buf; +- u8 *usb_vendor_req_buf; ++ union { ++ __le32 val32; ++ __le16 val16; ++ u8 val8; ++ } usb_buf; + + struct usb_interface *pusbintf; + struct usb_device *pusbdev; +diff --git a/drivers/staging/rtl8723au/include/usb_ops_linux.h b/drivers/staging/rtl8723au/include/usb_ops_linux.h +index e540a4b..bf68bbb 100644 +--- a/drivers/staging/rtl8723au/include/usb_ops_linux.h ++++ b/drivers/staging/rtl8723au/include/usb_ops_linux.h +@@ -29,13 +29,13 @@ int rtl8723au_write_port(struct rtw_adapter *padapter, u32 addr, u32 cnt, + void rtl8723au_write_port_cancel(struct rtw_adapter *padapter); + int rtl8723au_read_interrupt(struct rtw_adapter *adapter, u32 addr); + +-u8 rtl8723au_read8(struct rtw_adapter *padapter, u32 addr); +-u16 rtl8723au_read16(struct rtw_adapter *padapter, u32 addr); +-u32 rtl8723au_read32(struct rtw_adapter *padapter, u32 addr); +-int rtl8723au_write8(struct rtw_adapter *padapter, u32 addr, u8 val); +-int rtl8723au_write16(struct rtw_adapter *padapter, u32 addr, u16 val); +-int rtl8723au_write32(struct rtw_adapter *padapter, u32 addr, u32 val); ++u8 rtl8723au_read8(struct rtw_adapter *padapter, u16 addr); ++u16 rtl8723au_read16(struct rtw_adapter *padapter, u16 addr); ++u32 rtl8723au_read32(struct rtw_adapter *padapter, u16 addr); ++int rtl8723au_write8(struct rtw_adapter *padapter, u16 addr, u8 val); ++int rtl8723au_write16(struct rtw_adapter *padapter, u16 addr, u16 val); ++int rtl8723au_write32(struct rtw_adapter *padapter, u16 addr, u32 val); + int rtl8723au_writeN(struct rtw_adapter *padapter, +- u32 addr, u32 length, u8 *pdata); ++ u16 addr, u16 length, u8 *pdata); + + #endif +diff --git a/drivers/staging/rtl8723au/os_dep/usb_intf.c b/drivers/staging/rtl8723au/os_dep/usb_intf.c +index e0d5514..ec90216 100644 +--- a/drivers/staging/rtl8723au/os_dep/usb_intf.c ++++ b/drivers/staging/rtl8723au/os_dep/usb_intf.c +@@ -101,31 +101,16 @@ static inline int RT_usb_endpoint_num(const struct usb_endpoint_descriptor *epd) + + static int rtw_init_intf_priv(struct dvobj_priv *dvobj) + { +- int rst = _SUCCESS; +- + mutex_init(&dvobj->usb_vendor_req_mutex); +- dvobj->usb_alloc_vendor_req_buf = kzalloc(MAX_USB_IO_CTL_SIZE, +- GFP_KERNEL); +- if (dvobj->usb_alloc_vendor_req_buf == NULL) { +- DBG_8723A("alloc usb_vendor_req_buf failed...\n"); +- rst = _FAIL; +- goto exit; +- } +- dvobj->usb_vendor_req_buf = +- PTR_ALIGN(dvobj->usb_alloc_vendor_req_buf, ALIGNMENT_UNIT); +-exit: +- return rst; ++ ++ return _SUCCESS; + } + + static int rtw_deinit_intf_priv(struct dvobj_priv *dvobj) + { +- int rst = _SUCCESS; +- +- kfree(dvobj->usb_alloc_vendor_req_buf); +- + mutex_destroy(&dvobj->usb_vendor_req_mutex); + +- return rst; ++ return _SUCCESS; + } + + static struct dvobj_priv *usb_dvobj_init(struct usb_interface *usb_intf) diff --git a/debian/patches/features/all/r8723au/0185-staging-rtl8723au-Simplify-_BlockWrite-based-on-sane.patch b/debian/patches/features/all/r8723au/0185-staging-rtl8723au-Simplify-_BlockWrite-based-on-sane.patch new file mode 100644 index 000000000..2877e2181 --- /dev/null +++ b/debian/patches/features/all/r8723au/0185-staging-rtl8723au-Simplify-_BlockWrite-based-on-sane.patch @@ -0,0 +1,115 @@ +From: Jes Sorensen +Date: Tue, 1 Jul 2014 10:11:22 +0200 +Subject: [185/249] staging: rtl8723au: Simplify _BlockWrite() based on saner + rtl8723au_writeN() +Origin: https://git.kernel.org/linus/42f984eb6f0ed957825d13fa81c308a50c4cab17 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c | 89 ++--------------------- + 1 file changed, 5 insertions(+), 84 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c b/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c +index 8b3473f..2bc830f 100644 +--- a/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c ++++ b/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c +@@ -49,93 +49,14 @@ static void _FWDownloadEnable(struct rtw_adapter *padapter, bool enable) + + static int _BlockWrite(struct rtw_adapter *padapter, void *buffer, u32 buffSize) + { +- int ret = _SUCCESS; +- /* (Default) Phase #1 : PCI muse use 4-byte write to download FW */ +- u32 blockSize_p1 = 4; +- /* Phase #2 : Use 8-byte, if Phase#1 use big size to write FW. */ +- u32 blockSize_p2 = 8; +- /* Phase #3 : Use 1-byte, the remnant of FW image. */ +- u32 blockSize_p3 = 1; +- u32 blockCount_p1 = 0, blockCount_p2 = 0, blockCount_p3 = 0; +- u32 remainSize_p1 = 0, remainSize_p2 = 0; +- u8 *bufferPtr = (u8 *) buffer; +- u32 i = 0, offset = 0; +- +- blockSize_p1 = 254; +- +- /* 3 Phase #1 */ +- blockCount_p1 = buffSize / blockSize_p1; +- remainSize_p1 = buffSize % blockSize_p1; ++ int ret; + +- if (blockCount_p1) { +- RT_TRACE(_module_hal_init_c_, _drv_notice_, +- ("_BlockWrite: [P1] buffSize(%d) blockSize_p1(%d) " +- "blockCount_p1(%d) remainSize_p1(%d)\n", +- buffSize, blockSize_p1, blockCount_p1, +- remainSize_p1)); +- } +- +- for (i = 0; i < blockCount_p1; i++) { +- ret = rtl8723au_writeN(padapter, (FW_8723A_START_ADDRESS + +- i * blockSize_p1), +- blockSize_p1, +- (bufferPtr + i * blockSize_p1)); +- if (ret == _FAIL) +- goto exit; +- } +- +- /* 3 Phase #2 */ +- if (remainSize_p1) { +- offset = blockCount_p1 * blockSize_p1; +- +- blockCount_p2 = remainSize_p1 / blockSize_p2; +- remainSize_p2 = remainSize_p1 % blockSize_p2; +- +- if (blockCount_p2) { +- RT_TRACE(_module_hal_init_c_, _drv_notice_, +- ("_BlockWrite: [P2] buffSize_p2(%d) " +- "blockSize_p2(%d) blockCount_p2(%d) " +- "remainSize_p2(%d)\n", +- (buffSize - offset), blockSize_p2, +- blockCount_p2, remainSize_p2)); +- } +- +- for (i = 0; i < blockCount_p2; i++) { +- ret = rtl8723au_writeN(padapter, +- (FW_8723A_START_ADDRESS + +- offset + i * blockSize_p2), +- blockSize_p2, +- (bufferPtr + offset + +- i * blockSize_p2)); +- +- if (ret == _FAIL) +- goto exit; +- } +- } +- +- /* 3 Phase #3 */ +- if (remainSize_p2) { +- offset = (blockCount_p1 * blockSize_p1) + +- (blockCount_p2 * blockSize_p2); +- +- blockCount_p3 = remainSize_p2 / blockSize_p3; +- +- RT_TRACE(_module_hal_init_c_, _drv_notice_, +- ("_BlockWrite: [P3] buffSize_p3(%d) blockSize_p3(%d) " +- "blockCount_p3(%d)\n", +- (buffSize - offset), blockSize_p3, blockCount_p3)); +- +- for (i = 0; i < blockCount_p3; i++) { +- ret = rtl8723au_write8(padapter, +- (FW_8723A_START_ADDRESS + offset + i), +- *(bufferPtr + offset + i)); ++ if (buffSize > MAX_PAGE_SIZE) ++ return _FAIL; + +- if (ret == _FAIL) +- goto exit; +- } +- } ++ ret = rtl8723au_writeN(padapter, FW_8723A_START_ADDRESS, ++ buffSize, buffer); + +-exit: + return ret; + } + diff --git a/debian/patches/features/all/r8723au/0186-staging-rtl8723au-Remove-unnecessary-null-test-befor.patch b/debian/patches/features/all/r8723au/0186-staging-rtl8723au-Remove-unnecessary-null-test-befor.patch new file mode 100644 index 000000000..56aa2a587 --- /dev/null +++ b/debian/patches/features/all/r8723au/0186-staging-rtl8723au-Remove-unnecessary-null-test-befor.patch @@ -0,0 +1,34 @@ +From: Fabian Frederick +Date: Tue, 1 Jul 2014 10:11:23 +0200 +Subject: [186/249] staging: rtl8723au: Remove unnecessary null test before + kfree +Origin: https://git.kernel.org/linus/352f145d8fce34aa75b58cca102587ba7bce4412 + +Fix checkpatch warning: +WARNING: kfree(NULL) is safe this check is probably not required + +Cc: Larry Finger +Cc: Jes Sorensen +Cc: linux-wireless@vger.kernel.org +Signed-off-by: Fabian Frederick +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_cmd.c | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_cmd.c b/drivers/staging/rtl8723au/core/rtw_cmd.c +index f44f941..df1ffb3 100644 +--- a/drivers/staging/rtl8723au/core/rtw_cmd.c ++++ b/drivers/staging/rtl8723au/core/rtw_cmd.c +@@ -515,9 +515,7 @@ int rtw_joinbss_cmd23a(struct rtw_adapter *padapter, + + psecnetwork = &psecuritypriv->sec_bss; + if (!psecnetwork) { +- if (pcmd) +- kfree(pcmd); +- ++ kfree(pcmd); + res = _FAIL; + + RT_TRACE(_module_rtl871x_cmd_c_, _drv_err_, diff --git a/debian/patches/features/all/r8723au/0187-staging-rtl8723au-Remove-horrendous-code-obfuscation.patch b/debian/patches/features/all/r8723au/0187-staging-rtl8723au-Remove-horrendous-code-obfuscation.patch new file mode 100644 index 000000000..138e165f6 --- /dev/null +++ b/debian/patches/features/all/r8723au/0187-staging-rtl8723au-Remove-horrendous-code-obfuscation.patch @@ -0,0 +1,62 @@ +From: Jes Sorensen +Date: Sun, 13 Jul 2014 09:32:01 +0200 +Subject: [187/249] staging: rtl8723au: Remove horrendous code obfuscation + READ_AND_CONFIG*() +Origin: https://git.kernel.org/linus/974fe27ceca9f8449275169dd2759b23cbfd6a06 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/odm_HWConfig.c | 18 ++++-------------- + 1 file changed, 4 insertions(+), 14 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/odm_HWConfig.c b/drivers/staging/rtl8723au/hal/odm_HWConfig.c +index 82b1b83..388654d 100644 +--- a/drivers/staging/rtl8723au/hal/odm_HWConfig.c ++++ b/drivers/staging/rtl8723au/hal/odm_HWConfig.c +@@ -19,11 +19,6 @@ + + #include "odm_precomp.h" + +-#define READ_AND_CONFIG READ_AND_CONFIG_MP +- +-#define READ_AND_CONFIG_MP(ic, txt) (ODM_ReadAndConfig##txt##ic(pDM_Odm)) +-#define READ_AND_CONFIG_TC(ic, txt) (ODM_ReadAndConfig_TC##txt##ic(pDM_Odm)) +- + static u8 odm_QueryRxPwrPercentage(s8 AntPower) + { + if ((AntPower <= -100) || (AntPower >= 20)) +@@ -436,12 +431,7 @@ int ODM_ConfigRFWithHeaderFile23a(struct dm_odm_t *pDM_Odm, + ("===>ODM_ConfigRFWithHeaderFile23a\n")); + if (pDM_Odm->SupportICType == ODM_RTL8723A) { + if (eRFPath == RF_PATH_A) +- READ_AND_CONFIG_MP(8723A, _RadioA_1T_); +- +- ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD, +- (" ===> ODM_ConfigRFWithHeaderFile23a() Radio_A:Rtl8723RadioA_1TArray\n")); +- ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD, +- (" ===> ODM_ConfigRFWithHeaderFile23a() Radio_B:Rtl8723RadioB_1TArray\n")); ++ ODM_ReadAndConfig_RadioA_1T_8723A(pDM_Odm); + } + ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_TRACE, + ("ODM_ConfigRFWithHeaderFile23a: Radio No %x\n", eRFPath)); +@@ -453,9 +443,9 @@ int ODM_ConfigBBWithHeaderFile23a(struct dm_odm_t *pDM_Odm, + { + if (pDM_Odm->SupportICType == ODM_RTL8723A) { + if (ConfigType == CONFIG_BB_PHY_REG) +- READ_AND_CONFIG_MP(8723A, _PHY_REG_1T_); ++ ODM_ReadAndConfig_PHY_REG_1T_8723A(pDM_Odm); + else if (ConfigType == CONFIG_BB_AGC_TAB) +- READ_AND_CONFIG_MP(8723A, _AGC_TAB_1T_); ++ ODM_ReadAndConfig_AGC_TAB_1T_8723A(pDM_Odm); + ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD, + (" ===> phy_ConfigBBWithHeaderFile() phy:Rtl8723AGCTAB_1TArray\n")); + ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD, +@@ -467,6 +457,6 @@ int ODM_ConfigBBWithHeaderFile23a(struct dm_odm_t *pDM_Odm, + int ODM_ConfigMACWithHeaderFile23a(struct dm_odm_t *pDM_Odm) + { + if (pDM_Odm->SupportICType == ODM_RTL8723A) +- READ_AND_CONFIG_MP(8723A, _MAC_REG_); ++ ODM_ReadAndConfig_MAC_REG_8723A(pDM_Odm); + return _SUCCESS; + } diff --git a/debian/patches/features/all/r8723au/0188-staging-rtl8723au-Call-to-ODM_ConfigRFWithHeaderFile.patch b/debian/patches/features/all/r8723au/0188-staging-rtl8723au-Call-to-ODM_ConfigRFWithHeaderFile.patch new file mode 100644 index 000000000..4bdee22c4 --- /dev/null +++ b/debian/patches/features/all/r8723au/0188-staging-rtl8723au-Call-to-ODM_ConfigRFWithHeaderFile.patch @@ -0,0 +1,30 @@ +From: Jes Sorensen +Date: Sun, 13 Jul 2014 09:32:02 +0200 +Subject: [188/249] staging: rtl8723au: Call to ODM_ConfigRFWithHeaderFile23a + path is identical for RF_PATH_[AB] +Origin: https://git.kernel.org/linus/a8950425732317380ddbe27453c7a16e61ec20c6 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/rtl8723a_rf6052.c | 7 ------- + 1 file changed, 7 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_rf6052.c b/drivers/staging/rtl8723au/hal/rtl8723a_rf6052.c +index c30bd23..6686a29 100644 +--- a/drivers/staging/rtl8723au/hal/rtl8723a_rf6052.c ++++ b/drivers/staging/rtl8723au/hal/rtl8723a_rf6052.c +@@ -455,13 +455,6 @@ static int phy_RF6052_Config_ParaFile(struct rtw_adapter *Adapter) + /*----Initialize RF fom connfiguration file----*/ + switch (eRFPath) { + case RF_PATH_A: +- if (ODM_ConfigRFWithHeaderFile23a(&pHalData->odmpriv, +- (enum RF_RADIO_PATH) +- eRFPath, +- (enum RF_RADIO_PATH) +- eRFPath) == _FAIL) +- rtStatus = _FAIL; +- break; + case RF_PATH_B: + if (ODM_ConfigRFWithHeaderFile23a(&pHalData->odmpriv, + (enum RF_RADIO_PATH) diff --git a/debian/patches/features/all/r8723au/0189-staging-rtl8723au-Eliminate-wrapper-ODM_ConfigRFWith.patch b/debian/patches/features/all/r8723au/0189-staging-rtl8723au-Eliminate-wrapper-ODM_ConfigRFWith.patch new file mode 100644 index 000000000..bef5fb927 --- /dev/null +++ b/debian/patches/features/all/r8723au/0189-staging-rtl8723au-Eliminate-wrapper-ODM_ConfigRFWith.patch @@ -0,0 +1,100 @@ +From: Jes Sorensen +Date: Sun, 13 Jul 2014 09:32:03 +0200 +Subject: [189/249] staging: rtl8723au: Eliminate wrapper + ODM_ConfigRFWithHeaderFile23a() +Origin: https://git.kernel.org/linus/6b435adbcb2e05e92684bcb1721e7377f91c4825 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/odm_HWConfig.c | 15 --------------- + drivers/staging/rtl8723au/hal/odm_RegConfig8723A.c | 6 ++---- + drivers/staging/rtl8723au/hal/rtl8723a_rf6052.c | 8 ++------ + drivers/staging/rtl8723au/include/odm_HWConfig.h | 4 ---- + 4 files changed, 4 insertions(+), 29 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/odm_HWConfig.c b/drivers/staging/rtl8723au/hal/odm_HWConfig.c +index 388654d..4fc0b06 100644 +--- a/drivers/staging/rtl8723au/hal/odm_HWConfig.c ++++ b/drivers/staging/rtl8723au/hal/odm_HWConfig.c +@@ -423,21 +423,6 @@ void ODM_MacStatusQuery23a(struct dm_odm_t *pDM_Odm, u8 *pMacStatus, u8 MacID, + + } + +-int ODM_ConfigRFWithHeaderFile23a(struct dm_odm_t *pDM_Odm, +- enum RF_RADIO_PATH Content, +- enum RF_RADIO_PATH eRFPath) +-{ +- ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD, +- ("===>ODM_ConfigRFWithHeaderFile23a\n")); +- if (pDM_Odm->SupportICType == ODM_RTL8723A) { +- if (eRFPath == RF_PATH_A) +- ODM_ReadAndConfig_RadioA_1T_8723A(pDM_Odm); +- } +- ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_TRACE, +- ("ODM_ConfigRFWithHeaderFile23a: Radio No %x\n", eRFPath)); +- return _SUCCESS; +-} +- + int ODM_ConfigBBWithHeaderFile23a(struct dm_odm_t *pDM_Odm, + enum odm_bb_config_type ConfigType) + { +diff --git a/drivers/staging/rtl8723au/hal/odm_RegConfig8723A.c b/drivers/staging/rtl8723au/hal/odm_RegConfig8723A.c +index d076e14..8f883d9 100644 +--- a/drivers/staging/rtl8723au/hal/odm_RegConfig8723A.c ++++ b/drivers/staging/rtl8723au/hal/odm_RegConfig8723A.c +@@ -54,8 +54,7 @@ void odm_ConfigRF_RadioA_8723A(struct dm_odm_t *pDM_Odm, + odm_ConfigRFReg_8723A(pDM_Odm, Addr, Data, RF_PATH_A, + Addr|maskforPhySet); + ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD, +- ("===> ODM_ConfigRFWithHeaderFile23a: [RadioA] %08X %08X\n", +- Addr, Data)); ++ ("===> %s: [RadioA] %08X %08X\n", __func__, Addr, Data)); + } + + void odm_ConfigRF_RadioB_8723A(struct dm_odm_t *pDM_Odm, +@@ -69,8 +68,7 @@ void odm_ConfigRF_RadioB_8723A(struct dm_odm_t *pDM_Odm, + odm_ConfigRFReg_8723A(pDM_Odm, Addr, Data, RF_PATH_B, + Addr|maskforPhySet); + ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD, +- ("===> ODM_ConfigRFWithHeaderFile23a: [RadioB] %08X %08X\n", +- Addr, Data)); ++ ("===> %s: [RadioB] %08X %08X\n", __func__, Addr, Data)); + } + + void odm_ConfigMAC_8723A(struct dm_odm_t *pDM_Odm, +diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_rf6052.c b/drivers/staging/rtl8723au/hal/rtl8723a_rf6052.c +index 6686a29..2dc0886 100644 +--- a/drivers/staging/rtl8723au/hal/rtl8723a_rf6052.c ++++ b/drivers/staging/rtl8723au/hal/rtl8723a_rf6052.c +@@ -455,13 +455,9 @@ static int phy_RF6052_Config_ParaFile(struct rtw_adapter *Adapter) + /*----Initialize RF fom connfiguration file----*/ + switch (eRFPath) { + case RF_PATH_A: ++ ODM_ReadAndConfig_RadioA_1T_8723A(&pHalData->odmpriv); ++ break; + case RF_PATH_B: +- if (ODM_ConfigRFWithHeaderFile23a(&pHalData->odmpriv, +- (enum RF_RADIO_PATH) +- eRFPath, +- (enum RF_RADIO_PATH) +- eRFPath) == _FAIL) +- rtStatus = _FAIL; + break; + } + +diff --git a/drivers/staging/rtl8723au/include/odm_HWConfig.h b/drivers/staging/rtl8723au/include/odm_HWConfig.h +index 6b98e05..f8236ca 100644 +--- a/drivers/staging/rtl8723au/include/odm_HWConfig.h ++++ b/drivers/staging/rtl8723au/include/odm_HWConfig.h +@@ -160,10 +160,6 @@ void ODM_MacStatusQuery23a(struct dm_odm_t *pDM_Odm, + bool bPacketBeacon + ); + +-int ODM_ConfigRFWithHeaderFile23a(struct dm_odm_t *pDM_Odm, +- enum RF_RADIO_PATH Content, +- enum RF_RADIO_PATH eRFPath); +- + int ODM_ConfigBBWithHeaderFile23a(struct dm_odm_t *pDM_Odm, + enum odm_bb_config_type ConfigType); + diff --git a/debian/patches/features/all/r8723au/0190-staging-rtl8723au-Remove-zero-value-calculation-adde.patch b/debian/patches/features/all/r8723au/0190-staging-rtl8723au-Remove-zero-value-calculation-adde.patch new file mode 100644 index 000000000..df1c37fd3 --- /dev/null +++ b/debian/patches/features/all/r8723au/0190-staging-rtl8723au-Remove-zero-value-calculation-adde.patch @@ -0,0 +1,51 @@ +From: Jes Sorensen +Date: Sun, 13 Jul 2014 09:32:04 +0200 +Subject: [190/249] staging: rtl8723au: Remove zero value calculation added to + address +Origin: https://git.kernel.org/linus/d10ef6371eab6642e9925c43200a7fea6fca04b8 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/odm_RegConfig8723A.c | 22 ++++------------------ + 1 file changed, 4 insertions(+), 18 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/odm_RegConfig8723A.c b/drivers/staging/rtl8723au/hal/odm_RegConfig8723A.c +index 8f883d9..70b7168 100644 +--- a/drivers/staging/rtl8723au/hal/odm_RegConfig8723A.c ++++ b/drivers/staging/rtl8723au/hal/odm_RegConfig8723A.c +@@ -43,30 +43,16 @@ odm_ConfigRFReg_8723A( + } + } + +-void odm_ConfigRF_RadioA_8723A(struct dm_odm_t *pDM_Odm, +- u32 Addr, +- u32 Data +- ) ++void odm_ConfigRF_RadioA_8723A(struct dm_odm_t *pDM_Odm, u32 Addr, u32 Data) + { +- u32 content = 0x1000; /* RF_Content: radioa_txt */ +- u32 maskforPhySet = (u32)(content&0xE000); +- +- odm_ConfigRFReg_8723A(pDM_Odm, Addr, Data, RF_PATH_A, +- Addr|maskforPhySet); ++ odm_ConfigRFReg_8723A(pDM_Odm, Addr, Data, RF_PATH_A, Addr); + ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD, + ("===> %s: [RadioA] %08X %08X\n", __func__, Addr, Data)); + } + +-void odm_ConfigRF_RadioB_8723A(struct dm_odm_t *pDM_Odm, +- u32 Addr, +- u32 Data +- ) ++void odm_ConfigRF_RadioB_8723A(struct dm_odm_t *pDM_Odm, u32 Addr, u32 Data) + { +- u32 content = 0x1001; /* RF_Content: radiob_txt */ +- u32 maskforPhySet = (u32)(content&0xE000); +- +- odm_ConfigRFReg_8723A(pDM_Odm, Addr, Data, RF_PATH_B, +- Addr|maskforPhySet); ++ odm_ConfigRFReg_8723A(pDM_Odm, Addr, Data, RF_PATH_B, Addr); + ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD, + ("===> %s: [RadioB] %08X %08X\n", __func__, Addr, Data)); + } diff --git a/debian/patches/features/all/r8723au/0191-staging-rtl8723au-Remove-pointless-wrappers-for-call.patch b/debian/patches/features/all/r8723au/0191-staging-rtl8723au-Remove-pointless-wrappers-for-call.patch new file mode 100644 index 000000000..4170b5958 --- /dev/null +++ b/debian/patches/features/all/r8723au/0191-staging-rtl8723au-Remove-pointless-wrappers-for-call.patch @@ -0,0 +1,77 @@ +From: Jes Sorensen +Date: Sun, 13 Jul 2014 09:32:05 +0200 +Subject: [191/249] staging: rtl8723au: Remove pointless wrappers for calling + odm_ConfigRFReg_8723A() +Origin: https://git.kernel.org/linus/863b61948e4057f418ee081591724ed112f14cdf + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/HalHWImg8723A_RF.c | 5 +++-- + drivers/staging/rtl8723au/hal/odm_RegConfig8723A.c | 14 -------------- + drivers/staging/rtl8723au/include/odm_RegConfig8723A.h | 4 ---- + 3 files changed, 3 insertions(+), 20 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/HalHWImg8723A_RF.c b/drivers/staging/rtl8723au/hal/HalHWImg8723A_RF.c +index 0f2ae05..00480f5 100644 +--- a/drivers/staging/rtl8723au/hal/HalHWImg8723A_RF.c ++++ b/drivers/staging/rtl8723au/hal/HalHWImg8723A_RF.c +@@ -230,7 +230,7 @@ void ODM_ReadAndConfig_RadioA_1T_8723A(struct dm_odm_t *pDM_Odm) + + /* This (offset, data) pair meets the condition. */ + if (v1 < 0xCDCDCDCD) { +- odm_ConfigRF_RadioA_8723A(pDM_Odm, v1, v2); ++ odm_ConfigRFReg_8723A(pDM_Odm, v1, v2, RF_PATH_A, v1); + continue; + } else { + if (!CheckCondition(Array[i], hex)) { +@@ -247,7 +247,8 @@ void ODM_ReadAndConfig_RadioA_1T_8723A(struct dm_odm_t *pDM_Odm) + while (v2 != 0xDEAD && + v2 != 0xCDEF && + v2 != 0xCDCD && i < ArrayLen - 2) { +- odm_ConfigRF_RadioA_8723A(pDM_Odm, v1, v2); ++ odm_ConfigRFReg_8723A(pDM_Odm, v1, v2, ++ RF_PATH_A, v1); + READ_NEXT_PAIR(v1, v2, i); + } + +diff --git a/drivers/staging/rtl8723au/hal/odm_RegConfig8723A.c b/drivers/staging/rtl8723au/hal/odm_RegConfig8723A.c +index 70b7168..bd86b6c 100644 +--- a/drivers/staging/rtl8723au/hal/odm_RegConfig8723A.c ++++ b/drivers/staging/rtl8723au/hal/odm_RegConfig8723A.c +@@ -43,20 +43,6 @@ odm_ConfigRFReg_8723A( + } + } + +-void odm_ConfigRF_RadioA_8723A(struct dm_odm_t *pDM_Odm, u32 Addr, u32 Data) +-{ +- odm_ConfigRFReg_8723A(pDM_Odm, Addr, Data, RF_PATH_A, Addr); +- ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD, +- ("===> %s: [RadioA] %08X %08X\n", __func__, Addr, Data)); +-} +- +-void odm_ConfigRF_RadioB_8723A(struct dm_odm_t *pDM_Odm, u32 Addr, u32 Data) +-{ +- odm_ConfigRFReg_8723A(pDM_Odm, Addr, Data, RF_PATH_B, Addr); +- ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD, +- ("===> %s: [RadioB] %08X %08X\n", __func__, Addr, Data)); +-} +- + void odm_ConfigMAC_8723A(struct dm_odm_t *pDM_Odm, + u32 Addr, + u8 Data +diff --git a/drivers/staging/rtl8723au/include/odm_RegConfig8723A.h b/drivers/staging/rtl8723au/include/odm_RegConfig8723A.h +index 4ea579b..4117830 100644 +--- a/drivers/staging/rtl8723au/include/odm_RegConfig8723A.h ++++ b/drivers/staging/rtl8723au/include/odm_RegConfig8723A.h +@@ -18,10 +18,6 @@ + void odm_ConfigRFReg_8723A(struct dm_odm_t *pDM_Odm, u32 Addr, u32 Data, + enum RF_RADIO_PATH RF_PATH, u32 RegAddr); + +-void odm_ConfigRF_RadioA_8723A(struct dm_odm_t *pDM_Odm, u32 Addr, u32 Data); +- +-void odm_ConfigRF_RadioB_8723A(struct dm_odm_t *pDM_Odm, u32 Addr, u32 Data); +- + void odm_ConfigMAC_8723A(struct dm_odm_t *pDM_Odm, u32 Addr, u8 Data); + + void odm_ConfigBB_AGC_8723A(struct dm_odm_t *pDM_Odm, u32 Addr, diff --git a/debian/patches/features/all/r8723au/0192-staging-rtl8723au-Remove-unused-ODM_ReadAndConfig_PH.patch b/debian/patches/features/all/r8723au/0192-staging-rtl8723au-Remove-unused-ODM_ReadAndConfig_PH.patch new file mode 100644 index 000000000..5dc403305 --- /dev/null +++ b/debian/patches/features/all/r8723au/0192-staging-rtl8723au-Remove-unused-ODM_ReadAndConfig_PH.patch @@ -0,0 +1,250 @@ +From: Jes Sorensen +Date: Sun, 13 Jul 2014 09:32:06 +0200 +Subject: [192/249] staging: rtl8723au: Remove unused + ODM_ReadAndConfig_PHY_REG_PG_8723A() and related code+data +Origin: https://git.kernel.org/linus/7bafabf2d939e72b56591939883a31c31b93a076 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/HalHWImg8723A_BB.c | 160 --------------------- + drivers/staging/rtl8723au/hal/odm_RegConfig8723A.c | 28 ---- + .../staging/rtl8723au/include/HalHWImg8723A_BB.h | 6 - + .../staging/rtl8723au/include/odm_RegConfig8723A.h | 2 - + 4 files changed, 196 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/HalHWImg8723A_BB.c b/drivers/staging/rtl8723au/hal/HalHWImg8723A_BB.c +index 294e6a6..9d4f6be 100644 +--- a/drivers/staging/rtl8723au/hal/HalHWImg8723A_BB.c ++++ b/drivers/staging/rtl8723au/hal/HalHWImg8723A_BB.c +@@ -564,163 +564,3 @@ void ODM_ReadAndConfig_PHY_REG_MP_8723A(struct dm_odm_t *pDM_Odm) + } + } + } +- +-/****************************************************************************** +-* PHY_REG_PG.TXT +-******************************************************************************/ +- +-static u32 Array_PHY_REG_PG_8723A[] = { +- 0xE00, 0xFFFFFFFF, 0x0A0C0C0C, +- 0xE04, 0xFFFFFFFF, 0x02040608, +- 0xE08, 0x0000FF00, 0x00000000, +- 0x86C, 0xFFFFFF00, 0x00000000, +- 0xE10, 0xFFFFFFFF, 0x0A0C0D0E, +- 0xE14, 0xFFFFFFFF, 0x02040608, +- 0xE18, 0xFFFFFFFF, 0x0A0C0D0E, +- 0xE1C, 0xFFFFFFFF, 0x02040608, +- 0x830, 0xFFFFFFFF, 0x0A0C0C0C, +- 0x834, 0xFFFFFFFF, 0x02040608, +- 0x838, 0xFFFFFF00, 0x00000000, +- 0x86C, 0x000000FF, 0x00000000, +- 0x83C, 0xFFFFFFFF, 0x0A0C0D0E, +- 0x848, 0xFFFFFFFF, 0x02040608, +- 0x84C, 0xFFFFFFFF, 0x0A0C0D0E, +- 0x868, 0xFFFFFFFF, 0x02040608, +- 0xE00, 0xFFFFFFFF, 0x00000000, +- 0xE04, 0xFFFFFFFF, 0x00000000, +- 0xE08, 0x0000FF00, 0x00000000, +- 0x86C, 0xFFFFFF00, 0x00000000, +- 0xE10, 0xFFFFFFFF, 0x00000000, +- 0xE14, 0xFFFFFFFF, 0x00000000, +- 0xE18, 0xFFFFFFFF, 0x00000000, +- 0xE1C, 0xFFFFFFFF, 0x00000000, +- 0x830, 0xFFFFFFFF, 0x00000000, +- 0x834, 0xFFFFFFFF, 0x00000000, +- 0x838, 0xFFFFFF00, 0x00000000, +- 0x86C, 0x000000FF, 0x00000000, +- 0x83C, 0xFFFFFFFF, 0x00000000, +- 0x848, 0xFFFFFFFF, 0x00000000, +- 0x84C, 0xFFFFFFFF, 0x00000000, +- 0x868, 0xFFFFFFFF, 0x00000000, +- 0xE00, 0xFFFFFFFF, 0x04040404, +- 0xE04, 0xFFFFFFFF, 0x00020204, +- 0xE08, 0x0000FF00, 0x00000000, +- 0x86C, 0xFFFFFF00, 0x00000000, +- 0xE10, 0xFFFFFFFF, 0x06060606, +- 0xE14, 0xFFFFFFFF, 0x00020406, +- 0xE18, 0xFFFFFFFF, 0x00000000, +- 0xE1C, 0xFFFFFFFF, 0x00000000, +- 0x830, 0xFFFFFFFF, 0x04040404, +- 0x834, 0xFFFFFFFF, 0x00020204, +- 0x838, 0xFFFFFF00, 0x00000000, +- 0x86C, 0x000000FF, 0x00000000, +- 0x83C, 0xFFFFFFFF, 0x06060606, +- 0x848, 0xFFFFFFFF, 0x00020406, +- 0x84C, 0xFFFFFFFF, 0x00000000, +- 0x868, 0xFFFFFFFF, 0x00000000, +- 0xE00, 0xFFFFFFFF, 0x00000000, +- 0xE04, 0xFFFFFFFF, 0x00000000, +- 0xE08, 0x0000FF00, 0x00000000, +- 0x86C, 0xFFFFFF00, 0x00000000, +- 0xE10, 0xFFFFFFFF, 0x00000000, +- 0xE14, 0xFFFFFFFF, 0x00000000, +- 0xE18, 0xFFFFFFFF, 0x00000000, +- 0xE1C, 0xFFFFFFFF, 0x00000000, +- 0x830, 0xFFFFFFFF, 0x00000000, +- 0x834, 0xFFFFFFFF, 0x00000000, +- 0x838, 0xFFFFFF00, 0x00000000, +- 0x86C, 0x000000FF, 0x00000000, +- 0x83C, 0xFFFFFFFF, 0x00000000, +- 0x848, 0xFFFFFFFF, 0x00000000, +- 0x84C, 0xFFFFFFFF, 0x00000000, +- 0x868, 0xFFFFFFFF, 0x00000000, +- 0xE00, 0xFFFFFFFF, 0x00000000, +- 0xE04, 0xFFFFFFFF, 0x00000000, +- 0xE08, 0x0000FF00, 0x00000000, +- 0x86C, 0xFFFFFF00, 0x00000000, +- 0xE10, 0xFFFFFFFF, 0x00000000, +- 0xE14, 0xFFFFFFFF, 0x00000000, +- 0xE18, 0xFFFFFFFF, 0x00000000, +- 0xE1C, 0xFFFFFFFF, 0x00000000, +- 0x830, 0xFFFFFFFF, 0x00000000, +- 0x834, 0xFFFFFFFF, 0x00000000, +- 0x838, 0xFFFFFF00, 0x00000000, +- 0x86C, 0x000000FF, 0x00000000, +- 0x83C, 0xFFFFFFFF, 0x00000000, +- 0x848, 0xFFFFFFFF, 0x00000000, +- 0x84C, 0xFFFFFFFF, 0x00000000, +- 0x868, 0xFFFFFFFF, 0x00000000, +- 0xE00, 0xFFFFFFFF, 0x04040404, +- 0xE04, 0xFFFFFFFF, 0x00020204, +- 0xE08, 0x0000FF00, 0x00000000, +- 0x86C, 0xFFFFFF00, 0x00000000, +- 0xE10, 0xFFFFFFFF, 0x00000000, +- 0xE14, 0xFFFFFFFF, 0x00000000, +- 0xE18, 0xFFFFFFFF, 0x00000000, +- 0xE1C, 0xFFFFFFFF, 0x00000000, +- 0x830, 0xFFFFFFFF, 0x04040404, +- 0x834, 0xFFFFFFFF, 0x00020204, +- 0x838, 0xFFFFFF00, 0x00000000, +- 0x86C, 0x000000FF, 0x00000000, +- 0x83C, 0xFFFFFFFF, 0x00000000, +- 0x848, 0xFFFFFFFF, 0x00000000, +- 0x84C, 0xFFFFFFFF, 0x00000000, +- 0x868, 0xFFFFFFFF, 0x00000000, +- 0xE00, 0xFFFFFFFF, 0x00000000, +- 0xE04, 0xFFFFFFFF, 0x00000000, +- 0xE08, 0x0000FF00, 0x00000000, +- 0x86C, 0xFFFFFF00, 0x00000000, +- 0xE10, 0xFFFFFFFF, 0x00000000, +- 0xE14, 0xFFFFFFFF, 0x00000000, +- 0xE18, 0xFFFFFFFF, 0x00000000, +- 0xE1C, 0xFFFFFFFF, 0x00000000, +- 0x830, 0xFFFFFFFF, 0x00000000, +- 0x834, 0xFFFFFFFF, 0x00000000, +- 0x838, 0xFFFFFF00, 0x00000000, +- 0x86C, 0x000000FF, 0x00000000, +- 0x83C, 0xFFFFFFFF, 0x00000000, +- 0x848, 0xFFFFFFFF, 0x00000000, +- 0x84C, 0xFFFFFFFF, 0x00000000, +- 0x868, 0xFFFFFFFF, 0x00000000, +-}; +- +-void ODM_ReadAndConfig_PHY_REG_PG_8723A(struct dm_odm_t *pDM_Odm) +-{ +- u32 hex = 0; +- u32 i = 0; +- u8 platform = 0x04; +- u8 interfaceValue = pDM_Odm->SupportInterface; +- u8 board = pDM_Odm->BoardType; +- u32 ArrayLen = sizeof(Array_PHY_REG_PG_8723A)/sizeof(u32); +- u32 *Array = Array_PHY_REG_PG_8723A; +- +- hex += board; +- hex += interfaceValue << 8; +- hex += platform << 16; +- hex += 0xFF000000; +- for (i = 0; i < ArrayLen; i += 3) { +- u32 v1 = Array[i]; +- u32 v2 = Array[i+1]; +- u32 v3 = Array[i+2]; +- +- /* this line is a line of pure_body */ +- if (v1 < 0xCDCDCDCD) { +- odm_ConfigBB_PHY_REG_PG_8723A(pDM_Odm, v1, v2, v3); +- continue; +- } else { /* this line is the start of branch */ +- if (!CheckCondition(Array[i], hex)) { +- /* don't need the hw_body */ +- i += 2; /* skip the pair of expression */ +- v1 = Array[i]; +- v2 = Array[i+1]; +- v3 = Array[i+2]; +- while (v2 != 0xDEAD) { +- i += 3; +- v1 = Array[i]; +- v2 = Array[i+1]; +- v3 = Array[i+1]; +- } +- } +- } +- } +-} +diff --git a/drivers/staging/rtl8723au/hal/odm_RegConfig8723A.c b/drivers/staging/rtl8723au/hal/odm_RegConfig8723A.c +index bd86b6c..88e0126 100644 +--- a/drivers/staging/rtl8723au/hal/odm_RegConfig8723A.c ++++ b/drivers/staging/rtl8723au/hal/odm_RegConfig8723A.c +@@ -72,34 +72,6 @@ odm_ConfigBB_AGC_8723A( + } + + void +-odm_ConfigBB_PHY_REG_PG_8723A( +- struct dm_odm_t *pDM_Odm, +- u32 Addr, +- u32 Bitmask, +- u32 Data +- ) +-{ +- if (Addr == 0xfe) +- msleep(50); +- else if (Addr == 0xfd) +- mdelay(5); +- else if (Addr == 0xfc) +- mdelay(1); +- else if (Addr == 0xfb) +- udelay(50); +- else if (Addr == 0xfa) +- udelay(5); +- else if (Addr == 0xf9) +- udelay(1); +- /* TODO: ODM_StorePwrIndexDiffRateOffset(...) */ +- /* storePwrIndexDiffRateOffset(Adapter, Addr, Bitmask, Data); */ +- +- ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD, +- ("===> ODM_ConfigBBWithHeaderFile23a: [PHY_REG] %08X %08X %08X\n", +- Addr, Bitmask, Data)); +-} +- +-void + odm_ConfigBB_PHY_8723A( + struct dm_odm_t *pDM_Odm, + u32 Addr, +diff --git a/drivers/staging/rtl8723au/include/HalHWImg8723A_BB.h b/drivers/staging/rtl8723au/include/HalHWImg8723A_BB.h +index e99833c..1276094 100644 +--- a/drivers/staging/rtl8723au/include/HalHWImg8723A_BB.h ++++ b/drivers/staging/rtl8723au/include/HalHWImg8723A_BB.h +@@ -35,10 +35,4 @@ void ODM_ReadAndConfig_PHY_REG_1T_8723A(struct dm_odm_t *pDM_Odm); + + void ODM_ReadAndConfig_PHY_REG_MP_8723A(struct dm_odm_t *pDM_Odm); + +-/****************************************************************************** +-* PHY_REG_PG.TXT +-******************************************************************************/ +- +-void ODM_ReadAndConfig_PHY_REG_PG_8723A(struct dm_odm_t *pDM_Odm); +- + #endif /* end of HWIMG_SUPPORT */ +diff --git a/drivers/staging/rtl8723au/include/odm_RegConfig8723A.h b/drivers/staging/rtl8723au/include/odm_RegConfig8723A.h +index 4117830..a6cfb6d 100644 +--- a/drivers/staging/rtl8723au/include/odm_RegConfig8723A.h ++++ b/drivers/staging/rtl8723au/include/odm_RegConfig8723A.h +@@ -23,8 +23,6 @@ void odm_ConfigMAC_8723A(struct dm_odm_t *pDM_Odm, u32 Addr, u8 Data); + void odm_ConfigBB_AGC_8723A(struct dm_odm_t *pDM_Odm, u32 Addr, + u32 Bitmask, u32 Data); + +-void odm_ConfigBB_PHY_REG_PG_8723A(struct dm_odm_t *pDM_Odm, u32 Addr, u32 Bitmask, u32 Data); +- + void odm_ConfigBB_PHY_8723A(struct dm_odm_t *pDM_Odm, u32 Addr, u32 Bitmask, u32 Data); + + #endif /* end of SUPPORT */ diff --git a/debian/patches/features/all/r8723au/0193-staging-rtl8723au-Remove-ugly-wrapper-ODM_ConfigBBWi.patch b/debian/patches/features/all/r8723au/0193-staging-rtl8723au-Remove-ugly-wrapper-ODM_ConfigBBWi.patch new file mode 100644 index 000000000..d1ba9c49a --- /dev/null +++ b/debian/patches/features/all/r8723au/0193-staging-rtl8723au-Remove-ugly-wrapper-ODM_ConfigBBWi.patch @@ -0,0 +1,103 @@ +From: Jes Sorensen +Date: Sun, 13 Jul 2014 09:32:07 +0200 +Subject: [193/249] staging: rtl8723au: Remove ugly wrapper + ODM_ConfigBBWithHeaderFile23a() +Origin: https://git.kernel.org/linus/79756e687c52e0cec233906dcc9b57a71c306b3d + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/odm_HWConfig.c | 16 ---------------- + drivers/staging/rtl8723au/hal/rtl8723a_phycfg.c | 10 ++-------- + drivers/staging/rtl8723au/include/odm.h | 8 -------- + drivers/staging/rtl8723au/include/odm_HWConfig.h | 3 --- + 4 files changed, 2 insertions(+), 35 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/odm_HWConfig.c b/drivers/staging/rtl8723au/hal/odm_HWConfig.c +index 4fc0b06..40fea7d 100644 +--- a/drivers/staging/rtl8723au/hal/odm_HWConfig.c ++++ b/drivers/staging/rtl8723au/hal/odm_HWConfig.c +@@ -423,22 +423,6 @@ void ODM_MacStatusQuery23a(struct dm_odm_t *pDM_Odm, u8 *pMacStatus, u8 MacID, + + } + +-int ODM_ConfigBBWithHeaderFile23a(struct dm_odm_t *pDM_Odm, +- enum odm_bb_config_type ConfigType) +-{ +- if (pDM_Odm->SupportICType == ODM_RTL8723A) { +- if (ConfigType == CONFIG_BB_PHY_REG) +- ODM_ReadAndConfig_PHY_REG_1T_8723A(pDM_Odm); +- else if (ConfigType == CONFIG_BB_AGC_TAB) +- ODM_ReadAndConfig_AGC_TAB_1T_8723A(pDM_Odm); +- ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD, +- (" ===> phy_ConfigBBWithHeaderFile() phy:Rtl8723AGCTAB_1TArray\n")); +- ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD, +- (" ===> phy_ConfigBBWithHeaderFile() agc:Rtl8723PHY_REG_1TArray\n")); +- } +- return _SUCCESS; +-} +- + int ODM_ConfigMACWithHeaderFile23a(struct dm_odm_t *pDM_Odm) + { + if (pDM_Odm->SupportICType == ODM_RTL8723A) +diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_phycfg.c b/drivers/staging/rtl8723au/hal/rtl8723a_phycfg.c +index 8a6ba63..7dc2de0 100644 +--- a/drivers/staging/rtl8723au/hal/rtl8723a_phycfg.c ++++ b/drivers/staging/rtl8723au/hal/rtl8723a_phycfg.c +@@ -753,11 +753,7 @@ phy_BB8723a_Config_ParaFile(struct rtw_adapter *Adapter) + /* 1. Read PHY_REG.TXT BB INIT!! */ + /* We will seperate as 88C / 92C according to chip version */ + /* */ +- if (ODM_ConfigBBWithHeaderFile23a(&pHalData->odmpriv, +- CONFIG_BB_PHY_REG) == _FAIL) +- rtStatus = _FAIL; +- if (rtStatus != _SUCCESS) +- goto phy_BB8190_Config_ParaFile_Fail; ++ ODM_ReadAndConfig_PHY_REG_1T_8723A(&pHalData->odmpriv); + + /* */ + /* 20100318 Joseph: Config 2T2R to 1T2R if necessary. */ +@@ -784,9 +780,7 @@ phy_BB8723a_Config_ParaFile(struct rtw_adapter *Adapter) + /* */ + /* 3. BB AGC table Initialization */ + /* */ +- if (ODM_ConfigBBWithHeaderFile23a(&pHalData->odmpriv, +- CONFIG_BB_AGC_TAB) == _FAIL) +- rtStatus = _FAIL; ++ ODM_ReadAndConfig_AGC_TAB_1T_8723A(&pHalData->odmpriv); + + phy_BB8190_Config_ParaFile_Fail: + +diff --git a/drivers/staging/rtl8723au/include/odm.h b/drivers/staging/rtl8723au/include/odm.h +index 183d8ff..08c6f72 100644 +--- a/drivers/staging/rtl8723au/include/odm.h ++++ b/drivers/staging/rtl8723au/include/odm.h +@@ -855,14 +855,6 @@ enum odm_rf_content { + odm_radiod_txt = 0x1003 + }; + +-enum odm_bb_config_type { +- CONFIG_BB_PHY_REG, +- CONFIG_BB_AGC_TAB, +- CONFIG_BB_AGC_TAB_2G, +- CONFIG_BB_AGC_TAB_5G, +- CONFIG_BB_PHY_REG_PG, +-}; +- + /* Status code */ + enum rt_status { + RT_STATUS_SUCCESS, +diff --git a/drivers/staging/rtl8723au/include/odm_HWConfig.h b/drivers/staging/rtl8723au/include/odm_HWConfig.h +index f8236ca..6fe6f70 100644 +--- a/drivers/staging/rtl8723au/include/odm_HWConfig.h ++++ b/drivers/staging/rtl8723au/include/odm_HWConfig.h +@@ -160,9 +160,6 @@ void ODM_MacStatusQuery23a(struct dm_odm_t *pDM_Odm, + bool bPacketBeacon + ); + +-int ODM_ConfigBBWithHeaderFile23a(struct dm_odm_t *pDM_Odm, +- enum odm_bb_config_type ConfigType); +- + int ODM_ConfigMACWithHeaderFile23a(struct dm_odm_t *pDM_Odm); + + #endif diff --git a/debian/patches/features/all/r8723au/0194-staging-rtl8723au-Remove-unused-ODM_MacStatusQuery23.patch b/debian/patches/features/all/r8723au/0194-staging-rtl8723au-Remove-unused-ODM_MacStatusQuery23.patch new file mode 100644 index 000000000..9956b4fef --- /dev/null +++ b/debian/patches/features/all/r8723au/0194-staging-rtl8723au-Remove-unused-ODM_MacStatusQuery23.patch @@ -0,0 +1,51 @@ +From: Jes Sorensen +Date: Sun, 13 Jul 2014 09:32:08 +0200 +Subject: [194/249] staging: rtl8723au: Remove unused ODM_MacStatusQuery23a() +Origin: https://git.kernel.org/linus/f467c2b214928132980a2d850741407cd59af502 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/odm_HWConfig.c | 9 --------- + drivers/staging/rtl8723au/include/odm_HWConfig.h | 8 -------- + 2 files changed, 17 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/odm_HWConfig.c b/drivers/staging/rtl8723au/hal/odm_HWConfig.c +index 40fea7d..b3c711a 100644 +--- a/drivers/staging/rtl8723au/hal/odm_HWConfig.c ++++ b/drivers/staging/rtl8723au/hal/odm_HWConfig.c +@@ -414,15 +414,6 @@ void ODM_PhyStatusQuery23a(struct dm_odm_t *pDM_Odm, struct phy_info *pPhyInfo, + ODM_PhyStatusQuery23a_92CSeries(pDM_Odm, pPhyInfo, pPhyStatus, pPktinfo); + } + +-/* For future use. */ +-void ODM_MacStatusQuery23a(struct dm_odm_t *pDM_Odm, u8 *pMacStatus, u8 MacID, +- bool bPacketMatchBSSID, bool bPacketToSelf, +- bool bPacketBeacon) +-{ +- /* 2011/10/19 Driver team will handle in the future. */ +- +-} +- + int ODM_ConfigMACWithHeaderFile23a(struct dm_odm_t *pDM_Odm) + { + if (pDM_Odm->SupportICType == ODM_RTL8723A) +diff --git a/drivers/staging/rtl8723au/include/odm_HWConfig.h b/drivers/staging/rtl8723au/include/odm_HWConfig.h +index 6fe6f70..2d0fc86 100644 +--- a/drivers/staging/rtl8723au/include/odm_HWConfig.h ++++ b/drivers/staging/rtl8723au/include/odm_HWConfig.h +@@ -152,14 +152,6 @@ ODM_PhyStatusQuery23a( + struct odm_packet_info *pPktinfo + ); + +-void ODM_MacStatusQuery23a(struct dm_odm_t *pDM_Odm, +- u8 *pMacStatus, +- u8 MacID, +- bool bPacketMatchBSSID, +- bool bPacketToSelf, +- bool bPacketBeacon +-); +- + int ODM_ConfigMACWithHeaderFile23a(struct dm_odm_t *pDM_Odm); + + #endif diff --git a/debian/patches/features/all/r8723au/0195-staging-rtl8723au-Remove-obfuscating-wrapper-ODM_Con.patch b/debian/patches/features/all/r8723au/0195-staging-rtl8723au-Remove-obfuscating-wrapper-ODM_Con.patch new file mode 100644 index 000000000..40972f236 --- /dev/null +++ b/debian/patches/features/all/r8723au/0195-staging-rtl8723au-Remove-obfuscating-wrapper-ODM_Con.patch @@ -0,0 +1,54 @@ +From: Jes Sorensen +Date: Sun, 13 Jul 2014 09:32:09 +0200 +Subject: [195/249] staging: rtl8723au: Remove obfuscating wrapper + ODM_ConfigMACWithHeaderFile23a() +Origin: https://git.kernel.org/linus/9464cac7c940e800fc5a2e8696b19febbd8b537c + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/odm_HWConfig.c | 7 ------- + drivers/staging/rtl8723au/hal/rtl8723a_phycfg.c | 3 +-- + drivers/staging/rtl8723au/include/odm_HWConfig.h | 2 -- + 3 files changed, 1 insertion(+), 11 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/odm_HWConfig.c b/drivers/staging/rtl8723au/hal/odm_HWConfig.c +index b3c711a..26fbf6c 100644 +--- a/drivers/staging/rtl8723au/hal/odm_HWConfig.c ++++ b/drivers/staging/rtl8723au/hal/odm_HWConfig.c +@@ -413,10 +413,3 @@ void ODM_PhyStatusQuery23a(struct dm_odm_t *pDM_Odm, struct phy_info *pPhyInfo, + { + ODM_PhyStatusQuery23a_92CSeries(pDM_Odm, pPhyInfo, pPhyStatus, pPktinfo); + } +- +-int ODM_ConfigMACWithHeaderFile23a(struct dm_odm_t *pDM_Odm) +-{ +- if (pDM_Odm->SupportICType == ODM_RTL8723A) +- ODM_ReadAndConfig_MAC_REG_8723A(pDM_Odm); +- return _SUCCESS; +-} +diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_phycfg.c b/drivers/staging/rtl8723au/hal/rtl8723a_phycfg.c +index 7dc2de0..bd01c10 100644 +--- a/drivers/staging/rtl8723au/hal/rtl8723a_phycfg.c ++++ b/drivers/staging/rtl8723au/hal/rtl8723a_phycfg.c +@@ -425,8 +425,7 @@ int PHY_MACConfig8723A(struct rtw_adapter *Adapter) + /* */ + /* Config MAC */ + /* */ +- if (ODM_ConfigMACWithHeaderFile23a(&pHalData->odmpriv) == _FAIL) +- rtStatus = _FAIL; ++ ODM_ReadAndConfig_MAC_REG_8723A(&pHalData->odmpriv); + + /* 2010.07.13 AMPDU aggregation number 9 */ + /* rtw_write16(Adapter, REG_MAX_AGGR_NUM, MAX_AGGR_NUM); */ +diff --git a/drivers/staging/rtl8723au/include/odm_HWConfig.h b/drivers/staging/rtl8723au/include/odm_HWConfig.h +index 2d0fc86..78021a8 100644 +--- a/drivers/staging/rtl8723au/include/odm_HWConfig.h ++++ b/drivers/staging/rtl8723au/include/odm_HWConfig.h +@@ -152,6 +152,4 @@ ODM_PhyStatusQuery23a( + struct odm_packet_info *pPktinfo + ); + +-int ODM_ConfigMACWithHeaderFile23a(struct dm_odm_t *pDM_Odm); +- + #endif diff --git a/debian/patches/features/all/r8723au/0196-staging-rtl8723au-Remove-unncessary-wrapper-PHY_RFCo.patch b/debian/patches/features/all/r8723au/0196-staging-rtl8723au-Remove-unncessary-wrapper-PHY_RFCo.patch new file mode 100644 index 000000000..fa3095872 --- /dev/null +++ b/debian/patches/features/all/r8723au/0196-staging-rtl8723au-Remove-unncessary-wrapper-PHY_RFCo.patch @@ -0,0 +1,65 @@ +From: Jes Sorensen +Date: Sun, 13 Jul 2014 09:32:10 +0200 +Subject: [196/249] staging: rtl8723au: Remove unncessary wrapper + PHY_RFConfig8723A() +Origin: https://git.kernel.org/linus/f6a7125c82e8904436d09cf9002194143e4d7019 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/rtl8723a_phycfg.c | 12 ------------ + drivers/staging/rtl8723au/hal/usb_halinit.c | 4 ++-- + drivers/staging/rtl8723au/include/Hal8723APhyCfg.h | 1 - + 3 files changed, 2 insertions(+), 15 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_phycfg.c b/drivers/staging/rtl8723au/hal/rtl8723a_phycfg.c +index bd01c10..3d4d7ec 100644 +--- a/drivers/staging/rtl8723au/hal/rtl8723a_phycfg.c ++++ b/drivers/staging/rtl8723au/hal/rtl8723a_phycfg.c +@@ -839,18 +839,6 @@ PHY_BBConfig8723A(struct rtw_adapter *Adapter) + return rtStatus; + } + +-int +-PHY_RFConfig8723A(struct rtw_adapter *Adapter) +-{ +- int rtStatus = _SUCCESS; +- +- /* */ +- /* RF config */ +- /* */ +- rtStatus = PHY_RF6052_Config8723A(Adapter); +- return rtStatus; +-} +- + static void getTxPowerIndex(struct rtw_adapter *Adapter, + u8 channel, u8 *cckPowerLevel, u8 *ofdmPowerLevel) + { +diff --git a/drivers/staging/rtl8723au/hal/usb_halinit.c b/drivers/staging/rtl8723au/hal/usb_halinit.c +index d3d7289..8a7e644 100644 +--- a/drivers/staging/rtl8723au/hal/usb_halinit.c ++++ b/drivers/staging/rtl8723au/hal/usb_halinit.c +@@ -718,9 +718,9 @@ static int rtl8723au_hal_init(struct rtw_adapter *Adapter) + /* Add for tx power by rate fine tune. We need to call the function after BB config. */ + /* Because the tx power by rate table is inited in BB config. */ + +- status = PHY_RFConfig8723A(Adapter); ++ status = PHY_RF6052_Config8723A(Adapter); + if (status == _FAIL) { +- DBG_8723A("PHY_RFConfig8723A fault !!\n"); ++ DBG_8723A("PHY_RF6052_Config8723A failed!!\n"); + goto exit; + } + +diff --git a/drivers/staging/rtl8723au/include/Hal8723APhyCfg.h b/drivers/staging/rtl8723au/include/Hal8723APhyCfg.h +index 299598b..688f204 100644 +--- a/drivers/staging/rtl8723au/include/Hal8723APhyCfg.h ++++ b/drivers/staging/rtl8723au/include/Hal8723APhyCfg.h +@@ -224,7 +224,6 @@ SetAntennaConfig92C(struct rtw_adapter *Adapter, u8 DefaultAnt); + + /* MAC/BB/RF HAL config */ + int PHY_BBConfig8723A(struct rtw_adapter *Adapter); +-int PHY_RFConfig8723A(struct rtw_adapter *Adapter); + s32 PHY_MACConfig8723A(struct rtw_adapter *padapter); + + #endif diff --git a/debian/patches/features/all/r8723au/0197-staging-rtl8723au-Eliminate-Set_MSR-wrapper-call.patch b/debian/patches/features/all/r8723au/0197-staging-rtl8723au-Eliminate-Set_MSR-wrapper-call.patch new file mode 100644 index 000000000..78b7f5d63 --- /dev/null +++ b/debian/patches/features/all/r8723au/0197-staging-rtl8723au-Eliminate-Set_MSR-wrapper-call.patch @@ -0,0 +1,148 @@ +From: Jes Sorensen +Date: Thu, 17 Jul 2014 22:59:45 +0200 +Subject: [197/249] staging: rtl8723au: Eliminate Set_MSR() wrapper call +Origin: https://git.kernel.org/linus/ee225f0f19b88909b53c8d612e7195379b0553e7 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_ap.c | 2 +- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 18 +++++++++--------- + drivers/staging/rtl8723au/core/rtw_sreset.c | 2 +- + drivers/staging/rtl8723au/core/rtw_wlan_util.c | 5 ----- + drivers/staging/rtl8723au/include/rtw_mlme_ext.h | 2 -- + 5 files changed, 11 insertions(+), 18 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_ap.c b/drivers/staging/rtl8723au/core/rtw_ap.c +index ab9a66e..1ee8747 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ap.c ++++ b/drivers/staging/rtl8723au/core/rtw_ap.c +@@ -688,7 +688,7 @@ static void start_bss_network(struct rtw_adapter *padapter, u8 *pbuf) + } + + /* set MSR to AP_Mode */ +- Set_MSR23a(padapter, _HW_STATE_AP_); ++ rtl8723a_set_media_status(padapter, _HW_STATE_AP_); + + /* Set BSSID REG */ + hw_var_set_bssid(padapter, pnetwork->MacAddress); +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index 3655ee5..44f3cd9 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -4102,7 +4102,7 @@ static void rtw_site_survey(struct rtw_adapter *padapter) + /* val8 = 0; */ + + /* config MSR */ +- Set_MSR23a(padapter, (pmlmeinfo->state & 0x3)); ++ rtl8723a_set_media_status(padapter, pmlmeinfo->state & 0x3); + + /* restore RX GAIN */ + rtl8723a_set_initial_gain(padapter, 0xff); +@@ -4339,7 +4339,7 @@ static void start_create_ibss(struct rtw_adapter* padapter) + + /* set msr to WIFI_FW_ADHOC_STATE */ + pmlmeinfo->state = WIFI_FW_ADHOC_STATE; +- Set_MSR23a(padapter, (pmlmeinfo->state & 0x3)); ++ rtl8723a_set_media_status(padapter, pmlmeinfo->state & 0x3); + + /* issue beacon */ + if (send_beacon23a(padapter) == _FAIL) +@@ -4387,7 +4387,7 @@ static void start_clnt_join(struct rtw_adapter* padapter) + /* switch channel */ + set_channel_bwmode23a(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_offset, pmlmeext->cur_bwmode); + +- Set_MSR23a(padapter, WIFI_FW_STATION_STATE); ++ rtl8723a_set_media_status(padapter, WIFI_FW_STATION_STATE); + + val8 = (pmlmeinfo->auth_algo == dot11AuthAlgrthm_8021X) ? + 0xcc: 0xcf; +@@ -4405,7 +4405,7 @@ static void start_clnt_join(struct rtw_adapter* padapter) + msecs_to_jiffies((REAUTH_TO * REAUTH_LIMIT) + (REASSOC_TO*REASSOC_LIMIT) + beacon_timeout)); + pmlmeinfo->state = WIFI_FW_AUTH_NULL | WIFI_FW_STATION_STATE; + } else if (caps & WLAN_CAPABILITY_IBSS) { /* adhoc client */ +- Set_MSR23a(padapter, WIFI_FW_ADHOC_STATE); ++ rtl8723a_set_media_status(padapter, WIFI_FW_ADHOC_STATE); + + rtl8723a_set_sec_cfg(padapter, 0xcf); + +@@ -5185,7 +5185,7 @@ void mlmeext_sta_del_event_callback23a(struct rtw_adapter *padapter) + pmlmeinfo->state = WIFI_FW_NULL_STATE; + + /* set MSR to no link state -> infra. mode */ +- Set_MSR23a(padapter, _HW_STATE_STATION_); ++ rtl8723a_set_media_status(padapter, _HW_STATE_STATION_); + + del_timer_sync(&pmlmeext->link_timer); + } +@@ -5584,8 +5584,8 @@ int join_cmd_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf) + del_timer_sync(&pmlmeext->link_timer); + + /* set MSR to nolink -> infra. mode */ +- /* Set_MSR23a(padapter, _HW_STATE_NOLINK_); */ +- Set_MSR23a(padapter, _HW_STATE_STATION_); ++ /* rtl8723a_set_media_status(padapter, _HW_STATE_NOLINK_); */ ++ rtl8723a_set_media_status(padapter, _HW_STATE_STATION_); + + hw_var_set_mlme_disconnect(padapter); + } +@@ -5704,7 +5704,7 @@ int disconnect_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf) + rtl8723a_set_bcn_func(padapter, 0); /* Stop BCN */ + + /* set MSR to no link state -> infra. mode */ +- Set_MSR23a(padapter, _HW_STATE_STATION_); ++ rtl8723a_set_media_status(padapter, _HW_STATE_STATION_); + + pmlmeinfo->state = WIFI_FW_NULL_STATE; + +@@ -5865,7 +5865,7 @@ int sitesurvey_cmd_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf) + rtl8723a_set_initial_gain(padapter, initialgain); + + /* set MSR to no link state */ +- Set_MSR23a(padapter, _HW_STATE_NOLINK_); ++ rtl8723a_set_media_status(padapter, _HW_STATE_NOLINK_); + + rtl8723a_mlme_sitesurvey(padapter, 1); + +diff --git a/drivers/staging/rtl8723au/core/rtw_sreset.c b/drivers/staging/rtl8723au/core/rtw_sreset.c +index c152aef..9a79e11 100644 +--- a/drivers/staging/rtl8723au/core/rtw_sreset.c ++++ b/drivers/staging/rtl8723au/core/rtw_sreset.c +@@ -103,7 +103,7 @@ static void sreset_restore_network_station(struct rtw_adapter *padapter) + hw_var_set_bssid(padapter, pmlmeinfo->network.MacAddress); + hw_var_set_mlme_join(padapter, 0); + +- Set_MSR23a(padapter, (pmlmeinfo->state & 0x3)); ++ rtl8723a_set_media_status(padapter, pmlmeinfo->state & 0x3); + + mlmeext_joinbss_event_callback23a(padapter, 1); + /* restore Sequence No. */ +diff --git a/drivers/staging/rtl8723au/core/rtw_wlan_util.c b/drivers/staging/rtl8723au/core/rtw_wlan_util.c +index 25dae51..59cf5f1 100644 +--- a/drivers/staging/rtl8723au/core/rtw_wlan_util.c ++++ b/drivers/staging/rtl8723au/core/rtw_wlan_util.c +@@ -293,11 +293,6 @@ void Update23aTblForSoftAP(u8 *bssrateset, u32 bssratelen) + } + } + +-void Set_MSR23a(struct rtw_adapter *padapter, u8 type) +-{ +- rtl8723a_set_media_status(padapter, type); +-} +- + inline u8 rtw_get_oper_ch23a(struct rtw_adapter *adapter) + { + return adapter_to_dvobj(adapter)->oper_channel; +diff --git a/drivers/staging/rtl8723au/include/rtw_mlme_ext.h b/drivers/staging/rtl8723au/include/rtw_mlme_ext.h +index 7fd249f..87803e0 100644 +--- a/drivers/staging/rtl8723au/include/rtw_mlme_ext.h ++++ b/drivers/staging/rtl8723au/include/rtw_mlme_ext.h +@@ -471,8 +471,6 @@ void get_rate_set23a(struct rtw_adapter *padapter, unsigned char *pbssrate, + void UpdateBrateTbl23a(struct rtw_adapter *padapter,u8 *mBratesOS); + void Update23aTblForSoftAP(u8 *bssrateset, u32 bssratelen); + +-void Set_MSR23a(struct rtw_adapter *padapter, u8 type); +- + u8 rtw_get_oper_ch23a(struct rtw_adapter *adapter); + void rtw_set_oper_ch23a(struct rtw_adapter *adapter, u8 ch); + u8 rtw_get_oper_bw23a(struct rtw_adapter *adapter); diff --git a/debian/patches/features/all/r8723au/0198-staging-rtl8723au-Reduce-number-of-duplicate-defines.patch b/debian/patches/features/all/r8723au/0198-staging-rtl8723au-Reduce-number-of-duplicate-defines.patch new file mode 100644 index 000000000..7089737e7 --- /dev/null +++ b/debian/patches/features/all/r8723au/0198-staging-rtl8723au-Reduce-number-of-duplicate-defines.patch @@ -0,0 +1,594 @@ +From: Jes Sorensen +Date: Thu, 17 Jul 2014 22:59:46 +0200 +Subject: [198/249] staging: rtl8723au: Reduce number of duplicate defines for + link state +Origin: https://git.kernel.org/linus/6ec262733ecbb4578c2bd7d9d586f40fd587f636 + +We use the MSR bits to define link state anyway, so no point having an +additional two sets of defines for the same thing. + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_ap.c | 8 +- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 112 +++++++++++----------- + drivers/staging/rtl8723au/core/rtw_wlan_util.c | 5 +- + drivers/staging/rtl8723au/hal/hal_com.c | 4 +- + drivers/staging/rtl8723au/hal/rtl8723a_cmd.c | 4 +- + drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c | 14 +-- + drivers/staging/rtl8723au/include/rtw_mlme_ext.h | 10 -- + 7 files changed, 72 insertions(+), 85 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_ap.c b/drivers/staging/rtl8723au/core/rtw_ap.c +index 1ee8747..14c8d4e 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ap.c ++++ b/drivers/staging/rtl8723au/core/rtw_ap.c +@@ -52,7 +52,7 @@ void free_mlme_ap_info23a(struct rtw_adapter *padapter) + + rtw_sta_flush23a(padapter); + +- pmlmeinfo->state = _HW_STATE_NOLINK_; ++ pmlmeinfo->state = MSR_NOLINK; + + /* free_assoc_sta_resources */ + rtw_free_all_stainfo23a(padapter); +@@ -688,7 +688,7 @@ static void start_bss_network(struct rtw_adapter *padapter, u8 *pbuf) + } + + /* set MSR to AP_Mode */ +- rtl8723a_set_media_status(padapter, _HW_STATE_AP_); ++ rtl8723a_set_media_status(padapter, MSR_AP); + + /* Set BSSID REG */ + hw_var_set_bssid(padapter, pnetwork->MacAddress); +@@ -1703,7 +1703,7 @@ int rtw_ap_inform_ch_switch23a (struct rtw_adapter *padapter, u8 new_ch, u8 ch_o + struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; + u8 bc_addr[ETH_ALEN] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; + +- if ((pmlmeinfo->state&0x03) != WIFI_FW_AP_STATE) ++ if ((pmlmeinfo->state&0x03) != MSR_AP) + return ret; + + DBG_8723A("%s(%s): with ch:%u, offset:%u\n", __func__, +@@ -1740,7 +1740,7 @@ int rtw_sta_flush23a(struct rtw_adapter *padapter) + + DBG_8723A("%s(%s)\n", __func__, padapter->pnetdev->name); + +- if ((pmlmeinfo->state&0x03) != WIFI_FW_AP_STATE) ++ if ((pmlmeinfo->state&0x03) != MSR_AP) + return ret; + + spin_lock_bh(&pstapriv->asoc_list_lock); +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index 44f3cd9..18e4d24 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -393,7 +393,7 @@ static void init_mlme_ext_priv23a_value(struct rtw_adapter* padapter) + pmlmeext->sitesurvey_res.bss_cnt = 0; + pmlmeext->scan_abort = false; + +- pmlmeinfo->state = WIFI_FW_NULL_STATE; ++ pmlmeinfo->state = MSR_NOLINK; + pmlmeinfo->reauth_count = 0; + pmlmeinfo->reassoc_count = 0; + pmlmeinfo->link_count = 0; +@@ -849,7 +849,7 @@ OnBeacon23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame) + return _SUCCESS; + } + +- if (((pmlmeinfo->state & 0x03) == WIFI_FW_STATION_STATE) && ++ if (((pmlmeinfo->state & 0x03) == MSR_AP) && + (pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS)) { + psta = rtw_get_stainfo23a(pstapriv, mgmt->sa); + if (psta) { +@@ -869,7 +869,7 @@ OnBeacon23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame) + pkt_len, psta); + } + } +- } else if ((pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) { ++ } else if ((pmlmeinfo->state&0x03) == MSR_ADHOC) { + psta = rtw_get_stainfo23a(pstapriv, mgmt->sa); + if (psta) { + /* update WMM, ERP in the beacon */ +@@ -925,7 +925,7 @@ OnAuth23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame) + u16 auth_mode, seq, algorithm; + int status, len = skb->len; + +- if ((pmlmeinfo->state & 0x03) != WIFI_FW_AP_STATE) ++ if ((pmlmeinfo->state & 0x03) != MSR_AP) + return _FAIL; + + DBG_8723A("+OnAuth23a\n"); +@@ -1344,7 +1344,7 @@ OnAssocReq23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame) + uint pkt_len = skb->len; + int r; + +- if ((pmlmeinfo->state & 0x03) != WIFI_FW_AP_STATE) ++ if ((pmlmeinfo->state & 0x03) != MSR_AP) + return _FAIL; + + left = pkt_len - sizeof(struct ieee80211_hdr_3addr); +@@ -1801,7 +1801,7 @@ OnAssocRsp23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame) + status = le16_to_cpu(pmgmt->u.assoc_resp.status_code); + if (status > 0) { + DBG_8723A("assoc reject, status code: %d\n", status); +- pmlmeinfo->state = WIFI_FW_NULL_STATE; ++ pmlmeinfo->state = MSR_NOLINK; + res = -4; + goto report_assoc_result; + } +@@ -2033,7 +2033,7 @@ static int OnAction23a_back23a(struct rtw_adapter *padapter, + + DBG_8723A("%s\n", __func__); + +- if ((pmlmeinfo->state&0x03) != WIFI_FW_AP_STATE) ++ if ((pmlmeinfo->state&0x03) != MSR_AP) + if (!(pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS)) + return _SUCCESS; + +@@ -2416,7 +2416,7 @@ void issue_beacon23a(struct rtw_adapter *padapter, int timeout_ms) + pframe = mgmt->u.beacon.variable; + pattrib->pktlen = offsetof(struct ieee80211_mgmt, u.beacon.variable); + +- if ((pmlmeinfo->state & 0x03) == WIFI_FW_AP_STATE) { ++ if ((pmlmeinfo->state & 0x03) == MSR_AP) { + u8 *iebuf; + int buflen; + /* DBG_8723A("ie len =%d\n", cur_network->IELength); */ +@@ -2461,7 +2461,7 @@ void issue_beacon23a(struct rtw_adapter *padapter, int timeout_ms) + pframe = rtw_set_ie23a(pframe, WLAN_EID_DS_PARAMS, 1, (unsigned char *) + &cur_network->DSConfig, &pattrib->pktlen); + +- /* if ((pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) */ ++ /* if ((pmlmeinfo->state&0x03) == MSR_ADHOC) */ + { + u8 erpinfo = 0; + u32 ATIMWindow; +@@ -2578,7 +2578,7 @@ static void issue_probersp(struct rtw_adapter *padapter, unsigned char *da, + /* below for ad-hoc mode */ + + #ifdef CONFIG_8723AU_AP_MODE +- if ((pmlmeinfo->state & 0x03) == WIFI_FW_AP_STATE) { ++ if ((pmlmeinfo->state & 0x03) == MSR_AP) { + pwps_ie = cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT, + WLAN_OUI_TYPE_MICROSOFT_WPS, + cur_network->IEs, +@@ -2639,7 +2639,7 @@ static void issue_probersp(struct rtw_adapter *padapter, unsigned char *da, + (unsigned char *)&cur_network->DSConfig, + &pattrib->pktlen); + +- if ((pmlmeinfo->state & 0x03) == WIFI_FW_ADHOC_STATE) { ++ if ((pmlmeinfo->state & 0x03) == MSR_ADHOC) { + u8 erpinfo = 0; + u32 ATIMWindow; + /* IBSS Parameter Set... */ +@@ -3391,9 +3391,9 @@ static int _issue_nulldata23a(struct rtw_adapter *padapter, unsigned char *da, + pwlanhdr->frame_control = cpu_to_le16(IEEE80211_FTYPE_DATA | + IEEE80211_STYPE_NULLFUNC); + +- if ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE) ++ if ((pmlmeinfo->state&0x03) == MSR_AP) + pwlanhdr->frame_control |= cpu_to_le16(IEEE80211_FCTL_FROMDS); +- else if ((pmlmeinfo->state&0x03) == WIFI_FW_STATION_STATE) ++ else if ((pmlmeinfo->state&0x03) == MSR_INFRA) + pwlanhdr->frame_control |= cpu_to_le16(IEEE80211_FCTL_TODS); + + if (power_mode) +@@ -3513,9 +3513,9 @@ static int _issue_qos_nulldata23a(struct rtw_adapter *padapter, + pwlanhdr->frame_control = cpu_to_le16(IEEE80211_FTYPE_DATA | + IEEE80211_STYPE_QOS_NULLFUNC); + +- if ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE) ++ if ((pmlmeinfo->state&0x03) == MSR_AP) + pwlanhdr->frame_control |= cpu_to_le16(IEEE80211_FCTL_FROMDS); +- else if ((pmlmeinfo->state&0x03) == WIFI_FW_STATION_STATE) ++ else if ((pmlmeinfo->state&0x03) == MSR_INFRA) + pwlanhdr->frame_control |= cpu_to_le16(IEEE80211_FCTL_TODS); + + if (pattrib->mdata) +@@ -3950,7 +3950,7 @@ int send_delba23a(struct rtw_adapter *padapter, u8 initiator, u8 *addr) + struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; + u16 tid; + +- if ((pmlmeinfo->state&0x03) != WIFI_FW_AP_STATE) ++ if ((pmlmeinfo->state&0x03) != MSR_AP) + if (!(pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS)) + return _SUCCESS; + +@@ -4337,20 +4337,17 @@ static void start_create_ibss(struct rtw_adapter* padapter) + + rtl8723a_SetBeaconRelatedRegisters(padapter); + +- /* set msr to WIFI_FW_ADHOC_STATE */ +- pmlmeinfo->state = WIFI_FW_ADHOC_STATE; ++ /* set msr to MSR_ADHOC */ ++ pmlmeinfo->state = MSR_ADHOC; + rtl8723a_set_media_status(padapter, pmlmeinfo->state & 0x3); + + /* issue beacon */ +- if (send_beacon23a(padapter) == _FAIL) +- { ++ if (send_beacon23a(padapter) == _FAIL) { + RT_TRACE(_module_rtl871x_mlme_c_, _drv_err_, ("issuing beacon frame fail....\n")); + + report_join_res23a(padapter, -1); +- pmlmeinfo->state = WIFI_FW_NULL_STATE; +- } +- else +- { ++ pmlmeinfo->state = MSR_NOLINK; ++ } else { + hw_var_set_bssid(padapter, padapter->registrypriv.dev_network.MacAddress); + hw_var_set_mlme_join(padapter, 0); + +@@ -4387,7 +4384,7 @@ static void start_clnt_join(struct rtw_adapter* padapter) + /* switch channel */ + set_channel_bwmode23a(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_offset, pmlmeext->cur_bwmode); + +- rtl8723a_set_media_status(padapter, WIFI_FW_STATION_STATE); ++ rtl8723a_set_media_status(padapter, MSR_INFRA); + + val8 = (pmlmeinfo->auth_algo == dot11AuthAlgrthm_8021X) ? + 0xcc: 0xcf; +@@ -4403,9 +4400,9 @@ static void start_clnt_join(struct rtw_adapter* padapter) + set_link_timer(pmlmeext, beacon_timeout); + mod_timer(&padapter->mlmepriv.assoc_timer, jiffies + + msecs_to_jiffies((REAUTH_TO * REAUTH_LIMIT) + (REASSOC_TO*REASSOC_LIMIT) + beacon_timeout)); +- pmlmeinfo->state = WIFI_FW_AUTH_NULL | WIFI_FW_STATION_STATE; ++ pmlmeinfo->state = WIFI_FW_AUTH_NULL | MSR_INFRA; + } else if (caps & WLAN_CAPABILITY_IBSS) { /* adhoc client */ +- rtl8723a_set_media_status(padapter, WIFI_FW_ADHOC_STATE); ++ rtl8723a_set_media_status(padapter, MSR_ADHOC); + + rtl8723a_set_sec_cfg(padapter, 0xcf); + +@@ -4414,7 +4411,7 @@ static void start_clnt_join(struct rtw_adapter* padapter) + + rtl8723a_SetBeaconRelatedRegisters(padapter); + +- pmlmeinfo->state = WIFI_FW_ADHOC_STATE; ++ pmlmeinfo->state = MSR_ADHOC; + + report_join_res23a(padapter, 1); + } +@@ -4483,17 +4480,17 @@ int receive_disconnect23a(struct rtw_adapter *padapter, + + DBG_8723A("%s\n", __func__); + +- if ((pmlmeinfo->state&0x03) == WIFI_FW_STATION_STATE) ++ if ((pmlmeinfo->state&0x03) == MSR_INFRA) + { + if (pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS) + { +- pmlmeinfo->state = WIFI_FW_NULL_STATE; ++ pmlmeinfo->state = MSR_NOLINK; + report_del_sta_event23a(padapter, MacAddr, reason); + + } + else if (pmlmeinfo->state & WIFI_FW_LINKING_STATE) + { +- pmlmeinfo->state = WIFI_FW_NULL_STATE; ++ pmlmeinfo->state = MSR_NOLINK; + report_join_res23a(padapter, -2); + } + } +@@ -5053,7 +5050,7 @@ void mlmeext_joinbss_event_callback23a(struct rtw_adapter *padapter, + goto exit_mlmeext_joinbss_event_callback23a; + } + +- if ((pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) ++ if ((pmlmeinfo->state&0x03) == MSR_ADHOC) + { + /* for bc/mc */ + psta_bmc = rtw_get_bcmc_stainfo23a(padapter); +@@ -5103,7 +5100,7 @@ void mlmeext_joinbss_event_callback23a(struct rtw_adapter *padapter, + + hw_var_set_mlme_join(padapter, 2); + +- if ((pmlmeinfo->state&0x03) == WIFI_FW_STATION_STATE) { ++ if ((pmlmeinfo->state&0x03) == MSR_INFRA) { + /* correcting TSF */ + rtw_correct_TSF(padapter); + +@@ -5124,7 +5121,7 @@ void mlmeext_sta_add_event_callback23a(struct rtw_adapter *padapter, + + DBG_8723A("%s\n", __func__); + +- if ((pmlmeinfo->state & 0x03) == WIFI_FW_ADHOC_STATE) { ++ if ((pmlmeinfo->state & 0x03) == MSR_ADHOC) { + /* adhoc master or sta_count>1 */ + if (pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS) + { +@@ -5137,7 +5134,7 @@ void mlmeext_sta_add_event_callback23a(struct rtw_adapter *padapter, + if (send_beacon23a(padapter) != _SUCCESS) { + pmlmeinfo->FW_sta_info[psta->mac_id].status = 0; + +- pmlmeinfo->state ^= WIFI_FW_ADHOC_STATE; ++ pmlmeinfo->state ^= MSR_ADHOC; + + return; + } +@@ -5182,10 +5179,10 @@ void mlmeext_sta_del_event_callback23a(struct rtw_adapter *padapter) + + flush_all_cam_entry23a(padapter); + +- pmlmeinfo->state = WIFI_FW_NULL_STATE; ++ pmlmeinfo->state = MSR_NOLINK; + + /* set MSR to no link state -> infra. mode */ +- rtl8723a_set_media_status(padapter, _HW_STATE_STATION_); ++ rtl8723a_set_media_status(padapter, MSR_INFRA); + + del_timer_sync(&pmlmeext->link_timer); + } +@@ -5393,7 +5390,7 @@ static void link_timer_hdl(unsigned long data) + + if (pmlmeinfo->state & WIFI_FW_AUTH_NULL) { + DBG_8723A("link_timer_hdl:no beacon while connecting\n"); +- pmlmeinfo->state = WIFI_FW_NULL_STATE; ++ pmlmeinfo->state = MSR_NOLINK; + report_join_res23a(padapter, -3); + } else if (pmlmeinfo->state & WIFI_FW_AUTH_STATE) { + /* re-auth timer */ +@@ -5418,7 +5415,7 @@ static void link_timer_hdl(unsigned long data) + } else if (pmlmeinfo->state & WIFI_FW_ASSOC_STATE) { + /* re-assoc timer */ + if (++pmlmeinfo->reassoc_count > REASSOC_LIMIT) { +- pmlmeinfo->state = WIFI_FW_NULL_STATE; ++ pmlmeinfo->state = MSR_NOLINK; + report_join_res23a(padapter, -2); + return; + } +@@ -5479,22 +5476,22 @@ int setopmode_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf) + switch (psetop->mode) { + case NL80211_IFTYPE_P2P_GO: + case NL80211_IFTYPE_AP: +- pmlmeinfo->state = WIFI_FW_AP_STATE; +- type = _HW_STATE_AP_; ++ pmlmeinfo->state = MSR_AP; ++ type = MSR_AP; + break; + case NL80211_IFTYPE_P2P_CLIENT: + case NL80211_IFTYPE_STATION: + /* clear state */ + pmlmeinfo->state &= ~(BIT(0)|BIT(1)); + /* set to STATION_STATE */ +- pmlmeinfo->state |= WIFI_FW_STATION_STATE; +- type = _HW_STATE_STATION_; ++ pmlmeinfo->state |= MSR_INFRA; ++ type = MSR_INFRA; + break; + case NL80211_IFTYPE_ADHOC: +- type = _HW_STATE_ADHOC_; ++ type = MSR_ADHOC; + break; + default: +- type = _HW_STATE_NOLINK_; ++ type = MSR_NOLINK; + break; + } + +@@ -5515,7 +5512,7 @@ int createbss_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf) + if (pparm->ifmode == NL80211_IFTYPE_AP || + pparm->ifmode == NL80211_IFTYPE_P2P_GO) { + #ifdef CONFIG_8723AU_AP_MODE +- if (pmlmeinfo->state == WIFI_FW_AP_STATE) { ++ if (pmlmeinfo->state == MSR_AP) { + /* todo: */ + return H2C_SUCCESS; + } +@@ -5572,11 +5569,11 @@ int join_cmd_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf) + + /* check already connecting to AP or not */ + if (pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS) { +- if (pmlmeinfo->state & WIFI_FW_STATION_STATE) ++ if (pmlmeinfo->state & MSR_INFRA) + issue_deauth_ex(padapter, pnetwork->MacAddress, + WLAN_REASON_DEAUTH_LEAVING, 5, 100); + +- pmlmeinfo->state = WIFI_FW_NULL_STATE; ++ pmlmeinfo->state = MSR_NOLINK; + + /* clear CAM */ + flush_all_cam_entry23a(padapter); +@@ -5584,8 +5581,7 @@ int join_cmd_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf) + del_timer_sync(&pmlmeext->link_timer); + + /* set MSR to nolink -> infra. mode */ +- /* rtl8723a_set_media_status(padapter, _HW_STATE_NOLINK_); */ +- rtl8723a_set_media_status(padapter, _HW_STATE_STATION_); ++ rtl8723a_set_media_status(padapter, MSR_INFRA); + + hw_var_set_mlme_disconnect(padapter); + } +@@ -5691,7 +5687,7 @@ int disconnect_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf) + + /* set_opmode_cmd(padapter, infra_client_with_mlme); */ + +- /* pmlmeinfo->state = WIFI_FW_NULL_STATE; */ ++ /* pmlmeinfo->state = MSR_NOLINK; */ + + hw_var_set_mlme_disconnect(padapter); + hw_var_set_bssid(padapter, null_addr); +@@ -5699,14 +5695,14 @@ int disconnect_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf) + /* restore to initial setting. */ + update_tx_basic_rate23a(padapter, padapter->registrypriv.wireless_mode); + +- if ((pmlmeinfo->state & 0x03) == WIFI_FW_ADHOC_STATE || +- (pmlmeinfo->state & 0x03) == WIFI_FW_AP_STATE) ++ if ((pmlmeinfo->state & 0x03) == MSR_ADHOC || ++ (pmlmeinfo->state & 0x03) == MSR_AP) + rtl8723a_set_bcn_func(padapter, 0); /* Stop BCN */ + + /* set MSR to no link state -> infra. mode */ +- rtl8723a_set_media_status(padapter, _HW_STATE_STATION_); ++ rtl8723a_set_media_status(padapter, MSR_INFRA); + +- pmlmeinfo->state = WIFI_FW_NULL_STATE; ++ pmlmeinfo->state = MSR_NOLINK; + + /* switch to the 20M Hz mode after disconnect */ + pmlmeext->cur_bwmode = HT_CHANNEL_WIDTH_20; +@@ -5865,7 +5861,7 @@ int sitesurvey_cmd_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf) + rtl8723a_set_initial_gain(padapter, initialgain); + + /* set MSR to no link state */ +- rtl8723a_set_media_status(padapter, _HW_STATE_NOLINK_); ++ rtl8723a_set_media_status(padapter, MSR_NOLINK); + + rtl8723a_mlme_sitesurvey(padapter, 1); + +@@ -5941,7 +5937,7 @@ int set_stakey_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf) + DBG_8723A_LEVEL(_drv_always_, "set pairwise key to hw: alg:%d(WEP40-1 " + "WEP104-5 TKIP-2 AES-4) camid:%d\n", + pparm->algorithm, cam_id); +- if ((pmlmeinfo->state & 0x03) == WIFI_FW_AP_STATE) { ++ if ((pmlmeinfo->state & 0x03) == MSR_AP) { + struct sta_info *psta; + struct sta_priv *pstapriv = &padapter->stapriv; + +@@ -6015,7 +6011,7 @@ int add_ba_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf) + + if (((pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS) && + pmlmeinfo->HT_enable) || +- (pmlmeinfo->state & 0x03) == WIFI_FW_AP_STATE) { ++ (pmlmeinfo->state & 0x03) == MSR_AP) { + issue_action_BA23a(padapter, pparm->addr, + WLAN_ACTION_ADDBA_REQ, (u16)pparm->tid); + mod_timer(&psta->addba_retry_timer, +diff --git a/drivers/staging/rtl8723au/core/rtw_wlan_util.c b/drivers/staging/rtl8723au/core/rtw_wlan_util.c +index 59cf5f1..3228c59 100644 +--- a/drivers/staging/rtl8723au/core/rtw_wlan_util.c ++++ b/drivers/staging/rtl8723au/core/rtw_wlan_util.c +@@ -18,6 +18,7 @@ + #include + #include + #include ++#include + + static unsigned char ARTHEROS_OUI1[] = {0x00, 0x03, 0x7f}; + static unsigned char ARTHEROS_OUI2[] = {0x00, 0x13, 0x74}; +@@ -402,7 +403,7 @@ bool is_client_associated_to_ap23a(struct rtw_adapter *padapter) + pmlmeinfo = &pmlmeext->mlmext_info; + + if (pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS && +- (pmlmeinfo->state & 0x03) == WIFI_FW_STATION_STATE) ++ (pmlmeinfo->state & 0x03) == MSR_INFRA) + return true; + else + return false; +@@ -414,7 +415,7 @@ bool is_client_associated_to_ibss23a(struct rtw_adapter *padapter) + struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; + + if (pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS && +- (pmlmeinfo->state & 0x03) == WIFI_FW_ADHOC_STATE) ++ (pmlmeinfo->state & 0x03) == MSR_ADHOC) + return true; + else + return false; +diff --git a/drivers/staging/rtl8723au/hal/hal_com.c b/drivers/staging/rtl8723au/hal/hal_com.c +index 9fba049..44fc37b 100644 +--- a/drivers/staging/rtl8723au/hal/hal_com.c ++++ b/drivers/staging/rtl8723au/hal/hal_com.c +@@ -567,8 +567,8 @@ void rtl8723a_mlme_sitesurvey(struct rtw_adapter *padapter, u8 flag) + pmlmeinfo = &pmlmeext->mlmext_info; + + if ((is_client_associated_to_ap23a(padapter) == true) || +- ((pmlmeinfo->state & 0x03) == WIFI_FW_ADHOC_STATE) || +- ((pmlmeinfo->state & 0x03) == WIFI_FW_AP_STATE)) { ++ ((pmlmeinfo->state & 0x03) == MSR_ADHOC) || ++ ((pmlmeinfo->state & 0x03) == MSR_AP)) { + /* enable to rx data frame */ + rtl8723au_write16(padapter, REG_RXFLTMAP2, 0xFFFF); + +diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c b/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c +index 66ece49..7dd62b3 100644 +--- a/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c ++++ b/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c +@@ -235,7 +235,7 @@ ConstructBeacon(struct rtw_adapter *padapter, u8 *pframe, u32 *pLength) + pframe = mgmt->u.beacon.variable; + pktlen = offsetof(struct ieee80211_mgmt, u.beacon.variable); + +- if ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE) { ++ if ((pmlmeinfo->state&0x03) == MSR_AP) { + /* DBG_8723A("ie len =%d\n", cur_network->IELength); */ + pktlen += cur_network->IELength; + memcpy(pframe, cur_network->IEs, pktlen); +@@ -259,7 +259,7 @@ ConstructBeacon(struct rtw_adapter *padapter, u8 *pframe, u32 *pLength) + pframe = rtw_set_ie23a(pframe, WLAN_EID_DS_PARAMS, 1, (unsigned char *) + &cur_network->DSConfig, &pktlen); + +- if ((pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) { ++ if ((pmlmeinfo->state&0x03) == MSR_ADHOC) { + u32 ATIMWindow; + /* IBSS Parameter Set... */ + /* ATIMWindow = cur->ATIMWindow; */ +diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c b/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c +index 2bc830f..bc9e880 100644 +--- a/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c ++++ b/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c +@@ -2300,18 +2300,18 @@ void hw_var_set_opmode(struct rtw_adapter *padapter, u8 mode) + { + u8 val8; + +- if ((mode == _HW_STATE_STATION_) || (mode == _HW_STATE_NOLINK_)) { ++ if (mode == MSR_INFRA || mode == MSR_NOLINK) { + StopTxBeacon(padapter); + + /* disable atim wnd */ + val8 = DIS_TSF_UDT | EN_BCN_FUNCTION | DIS_ATIM; + SetBcnCtrlReg23a(padapter, val8, ~val8); +- } else if ((mode == _HW_STATE_ADHOC_) /*|| (mode == _HW_STATE_AP_) */) { ++ } else if (mode == MSR_ADHOC) { + ResumeTxBeacon(padapter); + + val8 = DIS_TSF_UDT | EN_BCN_FUNCTION | DIS_BCNQ_SUB; + SetBcnCtrlReg23a(padapter, val8, ~val8); +- } else if (mode == _HW_STATE_AP_) { ++ } else if (mode == MSR_AP) { + /* add NULL Data and BT NULL Data Packets to FW RSVD Page */ + rtl8723a_set_BTCoex_AP_mode_FwRsvdPkt_cmd(padapter); + +@@ -2393,8 +2393,8 @@ void hw_var_set_correct_tsf(struct rtw_adapter *padapter) + do_div(pmlmeext->TSFValue, + (pmlmeinfo->bcn_interval * 1024)) - 1024; /* us */ + +- if (((pmlmeinfo->state & 0x03) == WIFI_FW_ADHOC_STATE) || +- ((pmlmeinfo->state & 0x03) == WIFI_FW_AP_STATE)) { ++ if (((pmlmeinfo->state & 0x03) == MSR_ADHOC) || ++ ((pmlmeinfo->state & 0x03) == MSR_AP)) { + /* pHalData->RegTxPause |= STOP_BCNQ;BIT(6) */ + /* rtl8723au_write8(padapter, REG_TXPAUSE, + (rtl8723au_read8(Adapter, REG_TXPAUSE)|BIT(6))); */ +@@ -2412,8 +2412,8 @@ void hw_var_set_correct_tsf(struct rtw_adapter *padapter) + /* enable related TSF function */ + SetBcnCtrlReg23a(padapter, EN_BCN_FUNCTION, 0); + +- if (((pmlmeinfo->state & 0x03) == WIFI_FW_ADHOC_STATE) || +- ((pmlmeinfo->state & 0x03) == WIFI_FW_AP_STATE)) ++ if (((pmlmeinfo->state & 0x03) == MSR_ADHOC) || ++ ((pmlmeinfo->state & 0x03) == MSR_AP)) + ResumeTxBeacon(padapter); + } + +diff --git a/drivers/staging/rtl8723au/include/rtw_mlme_ext.h b/drivers/staging/rtl8723au/include/rtw_mlme_ext.h +index 87803e0..2e32c83 100644 +--- a/drivers/staging/rtl8723au/include/rtw_mlme_ext.h ++++ b/drivers/staging/rtl8723au/include/rtw_mlme_ext.h +@@ -282,16 +282,6 @@ struct ss_res + struct rtw_ieee80211_channel ch[RTW_CHANNEL_SCAN_AMOUNT]; + }; + +-/* define AP_MODE 0x0C */ +-/* define STATION_MODE 0x08 */ +-/* define AD_HOC_MODE 0x04 */ +-/* define NO_LINK_MODE 0x00 */ +- +-#define WIFI_FW_NULL_STATE _HW_STATE_NOLINK_ +-#define WIFI_FW_STATION_STATE _HW_STATE_STATION_ +-#define WIFI_FW_AP_STATE _HW_STATE_AP_ +-#define WIFI_FW_ADHOC_STATE _HW_STATE_ADHOC_ +- + #define WIFI_FW_AUTH_NULL 0x00000100 + #define WIFI_FW_AUTH_STATE 0x00000200 + #define WIFI_FW_AUTH_SUCCESS 0x00000400 diff --git a/debian/patches/features/all/r8723au/0199-staging-rtl8723au-Use-rtl8723au_set_media_status-to-.patch b/debian/patches/features/all/r8723au/0199-staging-rtl8723au-Use-rtl8723au_set_media_status-to-.patch new file mode 100644 index 000000000..c65b475d7 --- /dev/null +++ b/debian/patches/features/all/r8723au/0199-staging-rtl8723au-Use-rtl8723au_set_media_status-to-.patch @@ -0,0 +1,65 @@ +From: Jes Sorensen +Date: Thu, 17 Jul 2014 22:59:47 +0200 +Subject: [199/249] staging: rtl8723au: Use rtl8723au_set_media_status() to + replace _InitNetworkType() +Origin: https://git.kernel.org/linus/df72ac93ee22daf1595e93b45de9e6804af0afde + +Reduce yet another duplicate implementation of set_media_status() + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/usb_halinit.c | 13 +------------ + drivers/staging/rtl8723au/include/rtl8723a_spec.h | 8 -------- + 2 files changed, 1 insertion(+), 20 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/usb_halinit.c b/drivers/staging/rtl8723au/hal/usb_halinit.c +index 8a7e644..d8f9f27 100644 +--- a/drivers/staging/rtl8723au/hal/usb_halinit.c ++++ b/drivers/staging/rtl8723au/hal/usb_halinit.c +@@ -338,17 +338,6 @@ static void _InitQueuePriority(struct rtw_adapter *Adapter) + _InitNormalChipQueuePriority(Adapter); + } + +-static void _InitNetworkType(struct rtw_adapter *Adapter) +-{ +- u32 value32; +- +- value32 = rtl8723au_read32(Adapter, REG_CR); +- +- /* TODO: use the other function to set network type */ +- value32 = (value32 & ~MASK_NETTYPE) | _NETTYPE(NT_LINK_AP); +- rtl8723au_write32(Adapter, REG_CR, value32); +-} +- + static void _InitTransferPageSize(struct rtw_adapter *Adapter) + { + /* Tx page size is always 128. */ +@@ -756,7 +745,7 @@ static int rtl8723au_hal_init(struct rtw_adapter *Adapter) + + _InitInterrupt(Adapter); + hw_var_set_macaddr(Adapter, Adapter->eeprompriv.mac_addr); +- _InitNetworkType(Adapter);/* set msr */ ++ rtl8723a_set_media_status(Adapter, MSR_INFRA); + _InitWMACSetting(Adapter); + _InitAdaptiveCtrl(Adapter); + _InitEDCA(Adapter); +diff --git a/drivers/staging/rtl8723au/include/rtl8723a_spec.h b/drivers/staging/rtl8723au/include/rtl8723a_spec.h +index b5d7123..8d19b28 100644 +--- a/drivers/staging/rtl8723au/include/rtl8723a_spec.h ++++ b/drivers/staging/rtl8723au/include/rtl8723a_spec.h +@@ -1323,14 +1323,6 @@ Current IOREG MAP + #define ENSWBCN BIT(8) + #define ENSEC BIT(9) + +-/* Network type */ +-#define _NETTYPE(x) (((x) & 0x3) << 16) +-#define MASK_NETTYPE 0x30000 +-#define NT_NO_LINK 0x0 +-#define NT_LINK_AD_HOC 0x1 +-#define NT_LINK_AP 0x2 +-#define NT_AS_AP 0x3 +- + #define _LBMODE(x) (((x) & 0xF) << 24) + #define MASK_LBMODE 0xF000000 + #define LOOPBACK_NORMAL 0x0 diff --git a/debian/patches/features/all/r8723au/0200-staging-rtl8723au-Corrections-in-the-coding-style.patch b/debian/patches/features/all/r8723au/0200-staging-rtl8723au-Corrections-in-the-coding-style.patch new file mode 100644 index 000000000..c57a642bc --- /dev/null +++ b/debian/patches/features/all/r8723au/0200-staging-rtl8723au-Corrections-in-the-coding-style.patch @@ -0,0 +1,144 @@ +From: Raphael Silva +Date: Thu, 17 Jul 2014 22:59:48 +0200 +Subject: [200/249] staging: rtl8723au: Corrections in the coding style +Origin: https://git.kernel.org/linus/1d69fe84f33e92e2097e83a99200716ea4bfc873 + +Some corrections were made to the code in order to conform to the +Kernel Coding Style. + +Jes: Fix build problem + +Signed-off-by: Raphael Silva +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_sta_mgt.c | 42 ++++++++++++++++++---------- + 1 file changed, 27 insertions(+), 15 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_sta_mgt.c b/drivers/staging/rtl8723au/core/rtw_sta_mgt.c +index 8db844b..d17998d 100644 +--- a/drivers/staging/rtl8723au/core/rtw_sta_mgt.c ++++ b/drivers/staging/rtl8723au/core/rtw_sta_mgt.c +@@ -26,7 +26,7 @@ static const u8 bc_addr[ETH_ALEN] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; + + static void _rtw_init_stainfo(struct sta_info *psta) + { +- memset((u8 *)psta, 0, sizeof (struct sta_info)); ++ memset((u8 *)psta, 0, sizeof(struct sta_info)); + spin_lock_init(&psta->lock); + INIT_LIST_HEAD(&psta->list); + INIT_LIST_HEAD(&psta->hash_list); +@@ -71,8 +71,10 @@ int _rtw_init_sta_priv23a(struct sta_priv *pstapriv) + pstapriv->auth_list_cnt = 0; + pstapriv->auth_to = 3; /* 3*2 = 6 sec */ + pstapriv->assoc_to = 3; +- /* pstapriv->expire_to = 900; 900*2 = 1800 sec = 30 min, expire after no any traffic. */ +- /* pstapriv->expire_to = 30; 30*2 = 60 sec = 1 min, expire after no any traffic. */ ++ /* pstapriv->expire_to = 900; 900*2 = 1800 sec = 30 min, ++ expire after no any traffic. */ ++ /* pstapriv->expire_to = 30; 30*2 = 60 sec = 1 min, ++ expire after no any traffic. */ + pstapriv->expire_to = 3; /* 3*2 = 6 sec */ + pstapriv->max_num_sta = NUM_STA; + #endif +@@ -94,6 +96,7 @@ int _rtw_free_sta_priv23a(struct sta_priv *pstapriv) + + list_for_each_safe(plist, ptmp, phead) { + int i; ++ + psta = container_of(plist, struct sta_info, + hash_list); + for (i = 0; i < 16 ; i++) { +@@ -144,14 +147,17 @@ rtw_alloc_stainfo23a(struct sta_priv *pstapriv, const u8 *hwaddr, gfp_t gfp) + + list_add_tail(&psta->hash_list, phash_list); + +- pstapriv->asoc_sta_count ++ ; ++ pstapriv->asoc_sta_count++; + +-/* For the SMC router, the sequence number of first packet of WPS handshake will be 0. */ +-/* In this case, this packet will be dropped by recv_decache function if we use the 0x00 as the default value for tid_rxseq variable. */ ++/* For the SMC router, the sequence number of first packet of WPS ++ handshake will be 0. */ ++/* In this case, this packet will be dropped by recv_decache function ++ if we use the 0x00 as the default value for tid_rxseq variable. */ + /* So, we initialize the tid_rxseq variable as the 0xffff. */ + + for (i = 0; i < 16; i++) +- memcpy(&psta->sta_recvpriv.rxcache.tid_rxseq[i], &wRxSeqInitialValue, 2); ++ memcpy(&psta->sta_recvpriv.rxcache.tid_rxseq[i], ++ &wRxSeqInitialValue, 2); + + RT_TRACE(_module_rtl871x_sta_mgt_c_, _drv_info_, + ("alloc number_%d stainfo with hwaddr = %pM\n", +@@ -242,8 +248,12 @@ int rtw_free_stainfo23a(struct rtw_adapter *padapter, struct sta_info *psta) + spin_unlock_bh(&pxmitpriv->lock); + + list_del_init(&psta->hash_list); +- RT_TRACE(_module_rtl871x_sta_mgt_c_, _drv_err_, ("\n free number_%d stainfo with hwaddr = 0x%.2x 0x%.2x 0x%.2x 0x%.2x 0x%.2x 0x%.2x \n", pstapriv->asoc_sta_count, psta->hwaddr[0], psta->hwaddr[1], psta->hwaddr[2], psta->hwaddr[3], psta->hwaddr[4], psta->hwaddr[5])); +- pstapriv->asoc_sta_count --; ++ RT_TRACE(_module_rtl871x_sta_mgt_c_, _drv_err_, ++ ("\n free number_%d stainfo with hwaddr = 0x%.2x 0x%.2x 0x%.2x 0x%.2x 0x%.2x 0x%.2x\n", ++ pstapriv->asoc_sta_count, psta->hwaddr[0], ++ psta->hwaddr[1], psta->hwaddr[2], psta->hwaddr[3], ++ psta->hwaddr[4], psta->hwaddr[5])); ++ pstapriv->asoc_sta_count--; + + /* re-init sta_info; 20061114 will be init in alloc_stainfo */ + /* _rtw_init_sta_xmit_priv23a(&psta->sta_xmitpriv); */ +@@ -251,7 +261,8 @@ int rtw_free_stainfo23a(struct rtw_adapter *padapter, struct sta_info *psta) + + del_timer_sync(&psta->addba_retry_timer); + +- /* for A-MPDU Rx reordering buffer control, cancel reordering_ctrl_timer */ ++ /* for A-MPDU Rx reordering buffer control, ++ cancel reordering_ctrl_timer */ + for (i = 0; i < 16; i++) { + struct list_head *phead, *plist; + struct recv_frame *prframe; +@@ -261,7 +272,8 @@ int rtw_free_stainfo23a(struct rtw_adapter *padapter, struct sta_info *psta) + + del_timer_sync(&preorder_ctrl->reordering_ctrl_timer); + +- ppending_recvframe_queue = &preorder_ctrl->pending_recvframe_queue; ++ ppending_recvframe_queue = ++ &preorder_ctrl->pending_recvframe_queue; + + spin_lock_bh(&ppending_recvframe_queue->lock); + phead = get_list_head(ppending_recvframe_queue); +@@ -301,7 +313,7 @@ int rtw_free_stainfo23a(struct rtw_adapter *padapter, struct sta_info *psta) + pstapriv->sta_dz_bitmap &= ~CHKBIT(psta->aid); + pstapriv->tim_bitmap &= ~CHKBIT(psta->aid); + +- if ((psta->aid >0) && (pstapriv->sta_aid[psta->aid - 1] == psta)) { ++ if ((psta->aid > 0) && (pstapriv->sta_aid[psta->aid - 1] == psta)) { + pstapriv->sta_aid[psta->aid - 1] = NULL; + psta->aid = 0; + } +@@ -318,7 +330,7 @@ void rtw_free_all_stainfo23a(struct rtw_adapter *padapter) + struct list_head *plist, *phead, *ptmp; + struct sta_info *psta; + struct sta_priv *pstapriv = &padapter->stapriv; +- struct sta_info* pbcmc_stainfo = rtw_get_bcmc_stainfo23a(padapter); ++ struct sta_info *pbcmc_stainfo = rtw_get_bcmc_stainfo23a(padapter); + s32 index; + + if (pstapriv->asoc_sta_count == 1) +@@ -332,7 +344,7 @@ void rtw_free_all_stainfo23a(struct rtw_adapter *padapter) + list_for_each_safe(plist, ptmp, phead) { + psta = container_of(plist, struct sta_info, hash_list); + +- if (pbcmc_stainfo!= psta) ++ if (pbcmc_stainfo != psta) + rtw_free_stainfo23a(padapter, psta); + } + } +@@ -374,7 +386,7 @@ struct sta_info *rtw_get_stainfo23a(struct sta_priv *pstapriv, const u8 *hwaddr) + return psta; + } + +-int rtw_init_bcmc_stainfo23a(struct rtw_adapter* padapter) ++int rtw_init_bcmc_stainfo23a(struct rtw_adapter *padapter) + { + struct sta_priv *pstapriv = &padapter->stapriv; + struct sta_info *psta; diff --git a/debian/patches/features/all/r8723au/0201-staging-rtl8723au-Remove-write-only-variable-UsbRxHi.patch b/debian/patches/features/all/r8723au/0201-staging-rtl8723au-Remove-write-only-variable-UsbRxHi.patch new file mode 100644 index 000000000..788f32638 --- /dev/null +++ b/debian/patches/features/all/r8723au/0201-staging-rtl8723au-Remove-write-only-variable-UsbRxHi.patch @@ -0,0 +1,41 @@ +From: Jes Sorensen +Date: Thu, 17 Jul 2014 22:59:49 +0200 +Subject: [201/249] staging: rtl8723au: Remove write-only variable + UsbRxHighSpeedMode +Origin: https://git.kernel.org/linus/ef03600cae2dec4e5225b18e9ffbcdd5bc56d73c + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/usb_halinit.c | 3 --- + drivers/staging/rtl8723au/include/rtl8723a_hal.h | 3 --- + 2 files changed, 6 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/usb_halinit.c b/drivers/staging/rtl8723au/hal/usb_halinit.c +index d8f9f27..227a363 100644 +--- a/drivers/staging/rtl8723au/hal/usb_halinit.c ++++ b/drivers/staging/rtl8723au/hal/usb_halinit.c +@@ -520,9 +520,6 @@ static void InitUsbAggregationSetting(struct rtw_adapter *Adapter) + + /* Rx aggregation setting */ + usb_AggSettingRxUpdate(Adapter); +- +- /* 201/12/10 MH Add for USB agg mode dynamic switch. */ +- pHalData->UsbRxHighSpeedMode = false; + } + + static void _InitOperationMode(struct rtw_adapter *Adapter) +diff --git a/drivers/staging/rtl8723au/include/rtl8723a_hal.h b/drivers/staging/rtl8723au/include/rtl8723a_hal.h +index 344b708..066dc9c 100644 +--- a/drivers/staging/rtl8723au/include/rtl8723a_hal.h ++++ b/drivers/staging/rtl8723au/include/rtl8723a_hal.h +@@ -384,9 +384,6 @@ struct hal_data_8723a { + u8 OutEpQueueSel; + u8 OutEpNumber; + +- /* 2010/12/10 MH Add for USB aggreation mode dynamic shceme. */ +- bool UsbRxHighSpeedMode; +- + /* 2010/11/22 MH Add for slim combo debug mode selective. */ + /* This is used for fix the drawback of CU TSMC-A/UMC-A cut. HW auto suspend ability. Close BT clock. */ + bool SlimComboDbg; diff --git a/debian/patches/features/all/r8723au/0202-staging-rtl8723au-Remove-no-op-usb_AggSetting.patch b/debian/patches/features/all/r8723au/0202-staging-rtl8723au-Remove-no-op-usb_AggSetting.patch new file mode 100644 index 000000000..2d5ec21f2 --- /dev/null +++ b/debian/patches/features/all/r8723au/0202-staging-rtl8723au-Remove-no-op-usb_AggSetting.patch @@ -0,0 +1,79 @@ +From: Jes Sorensen +Date: Thu, 17 Jul 2014 22:59:50 +0200 +Subject: [202/249] staging: rtl8723au: Remove no-op usb_AggSetting*() +Origin: https://git.kernel.org/linus/120036acecd1610b88a6445252377c0b8ba73442 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/usb_halinit.c | 50 ----------------------------- + 1 file changed, 50 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/usb_halinit.c b/drivers/staging/rtl8723au/hal/usb_halinit.c +index 227a363..4161409 100644 +--- a/drivers/staging/rtl8723au/hal/usb_halinit.c ++++ b/drivers/staging/rtl8723au/hal/usb_halinit.c +@@ -473,55 +473,6 @@ static void _InitRetryFunction(struct rtw_adapter *Adapter) + rtl8723au_write8(Adapter, REG_ACKTO, 0x40); + } + +-/*----------------------------------------------------------------------------- +- * Function: usb_AggSettingTxUpdate() +- * +- * Overview: Seperate TX/RX parameters update independent for TP +- * detection and dynamic TX/RX aggreagtion parameters update. +- * +- * Input: struct rtw_adapter * +- * +- * Output/Return: NONE +- * +- * Revised History: +- * When Who Remark +- * 12/10/2010 MHC Seperate to smaller function. +- * +- *---------------------------------------------------------------------------*/ +-static void usb_AggSettingTxUpdate(struct rtw_adapter *Adapter) +-{ +-} /* usb_AggSettingTxUpdate */ +- +-/*----------------------------------------------------------------------------- +- * Function: usb_AggSettingRxUpdate() +- * +- * Overview: Seperate TX/RX parameters update independent for TP +- * detection and dynamic TX/RX aggreagtion parameters update. +- * +- * Input: struct rtw_adapter * +- * +- * Output/Return: NONE +- * +- * Revised History: +- * When Who Remark +- * 12/10/2010 MHC Seperate to smaller function. +- * +- *---------------------------------------------------------------------------*/ +-static void usb_AggSettingRxUpdate(struct rtw_adapter *Adapter) +-{ +-} /* usb_AggSettingRxUpdate */ +- +-static void InitUsbAggregationSetting(struct rtw_adapter *Adapter) +-{ +- struct hal_data_8723a *pHalData = GET_HAL_DATA(Adapter); +- +- /* Tx aggregation setting */ +- usb_AggSettingTxUpdate(Adapter); +- +- /* Rx aggregation setting */ +- usb_AggSettingRxUpdate(Adapter); +-} +- + static void _InitOperationMode(struct rtw_adapter *Adapter) + { + } +@@ -748,7 +699,6 @@ static int rtl8723au_hal_init(struct rtw_adapter *Adapter) + _InitEDCA(Adapter); + _InitRateFallback(Adapter); + _InitRetryFunction(Adapter); +- InitUsbAggregationSetting(Adapter); + _InitOperationMode(Adapter);/* todo */ + rtl8723a_InitBeaconParameters(Adapter); + diff --git a/debian/patches/features/all/r8723au/0203-staging-rtl8723au-Remove-no-op-_InitOperation_mode-f.patch b/debian/patches/features/all/r8723au/0203-staging-rtl8723au-Remove-no-op-_InitOperation_mode-f.patch new file mode 100644 index 000000000..f378b7ec0 --- /dev/null +++ b/debian/patches/features/all/r8723au/0203-staging-rtl8723au-Remove-no-op-_InitOperation_mode-f.patch @@ -0,0 +1,35 @@ +From: Jes Sorensen +Date: Thu, 17 Jul 2014 22:59:51 +0200 +Subject: [203/249] staging: rtl8723au: Remove no-op _InitOperation_mode() + function +Origin: https://git.kernel.org/linus/a2c379ce26a054b4154effddd61601ef0acffb59 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/usb_halinit.c | 5 ----- + 1 file changed, 5 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/usb_halinit.c b/drivers/staging/rtl8723au/hal/usb_halinit.c +index 4161409..0c760e5 100644 +--- a/drivers/staging/rtl8723au/hal/usb_halinit.c ++++ b/drivers/staging/rtl8723au/hal/usb_halinit.c +@@ -473,10 +473,6 @@ static void _InitRetryFunction(struct rtw_adapter *Adapter) + rtl8723au_write8(Adapter, REG_ACKTO, 0x40); + } + +-static void _InitOperationMode(struct rtw_adapter *Adapter) +-{ +-} +- + static void _InitRFType(struct rtw_adapter *Adapter) + { + struct hal_data_8723a *pHalData = GET_HAL_DATA(Adapter); +@@ -699,7 +695,6 @@ static int rtl8723au_hal_init(struct rtw_adapter *Adapter) + _InitEDCA(Adapter); + _InitRateFallback(Adapter); + _InitRetryFunction(Adapter); +- _InitOperationMode(Adapter);/* todo */ + rtl8723a_InitBeaconParameters(Adapter); + + _InitHWLed(Adapter); diff --git a/debian/patches/features/all/r8723au/0204-staging-rtl8723au-Remove-RegBcnCtrlVal.patch b/debian/patches/features/all/r8723au/0204-staging-rtl8723au-Remove-RegBcnCtrlVal.patch new file mode 100644 index 000000000..d6504db21 --- /dev/null +++ b/debian/patches/features/all/r8723au/0204-staging-rtl8723au-Remove-RegBcnCtrlVal.patch @@ -0,0 +1,66 @@ +From: Jes Sorensen +Date: Thu, 17 Jul 2014 22:59:52 +0200 +Subject: [204/249] staging: rtl8723au: Remove RegBcnCtrlVal +Origin: https://git.kernel.org/linus/e4d480b012f371c12a5c317494a5e068ad27216f + +The value saved in RegBcnCtrlVal was never used. In addition the code +was highly endian broken, declaring it as a u32, then accessing it via +a u8 * later. + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c | 18 +++++------------- + drivers/staging/rtl8723au/include/rtl8723a_hal.h | 1 - + 2 files changed, 5 insertions(+), 14 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c b/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c +index bc9e880..5c4751c 100644 +--- a/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c ++++ b/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c +@@ -882,20 +882,13 @@ void rtl8723a_read_chip_version(struct rtw_adapter *padapter) + /* */ + void SetBcnCtrlReg23a(struct rtw_adapter *padapter, u8 SetBits, u8 ClearBits) + { +- struct hal_data_8723a *pHalData; +- u32 addr; +- u8 *pRegBcnCtrlVal; +- +- pHalData = GET_HAL_DATA(padapter); +- pRegBcnCtrlVal = (u8 *)&pHalData->RegBcnCtrlVal; +- +- addr = REG_BCN_CTRL; ++ u8 val8; + +- *pRegBcnCtrlVal = rtl8723au_read8(padapter, addr); +- *pRegBcnCtrlVal |= SetBits; +- *pRegBcnCtrlVal &= ~ClearBits; ++ val8 = rtl8723au_read8(padapter, REG_BCN_CTRL); ++ val8 |= SetBits; ++ val8 &= ~ClearBits; + +- rtl8723au_write8(padapter, addr, *pRegBcnCtrlVal); ++ rtl8723au_write8(padapter, REG_BCN_CTRL, val8); + } + + void rtl8723a_InitBeaconParameters(struct rtw_adapter *padapter) +@@ -903,7 +896,6 @@ void rtl8723a_InitBeaconParameters(struct rtw_adapter *padapter) + struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); + + rtl8723au_write16(padapter, REG_BCN_CTRL, 0x1010); +- pHalData->RegBcnCtrlVal = 0x1010; + + /* TODO: Remove these magic number */ + rtl8723au_write16(padapter, REG_TBTT_PROHIBIT, 0x6404); /* ms */ +diff --git a/drivers/staging/rtl8723au/include/rtl8723a_hal.h b/drivers/staging/rtl8723au/include/rtl8723a_hal.h +index 066dc9c..1f63eb1 100644 +--- a/drivers/staging/rtl8723au/include/rtl8723a_hal.h ++++ b/drivers/staging/rtl8723au/include/rtl8723a_hal.h +@@ -356,7 +356,6 @@ struct hal_data_8723a { + u8 fw_ractrl; + u8 RegTxPause; + /* Beacon function related global variable. */ +- u32 RegBcnCtrlVal; + u8 RegFwHwTxQCtrl; + u8 RegReg542; + diff --git a/debian/patches/features/all/r8723au/0205-staging-rtl8723au-Use-proper-name-REG_CAMCMD-and-rem.patch b/debian/patches/features/all/r8723au/0205-staging-rtl8723au-Use-proper-name-REG_CAMCMD-and-rem.patch new file mode 100644 index 000000000..173e33c93 --- /dev/null +++ b/debian/patches/features/all/r8723au/0205-staging-rtl8723au-Use-proper-name-REG_CAMCMD-and-rem.patch @@ -0,0 +1,113 @@ +From: Jes Sorensen +Date: Thu, 17 Jul 2014 22:59:53 +0200 +Subject: [205/249] staging: rtl8723au: Use proper name REG_CAMCMD and remove + wrapper invalidate_cam_all23a() +Origin: https://git.kernel.org/linus/2a3bc8aa4fb2466ac478180dd9b21339b689ff5e + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_wlan_util.c | 7 +------ + drivers/staging/rtl8723au/hal/hal_com.c | 8 ++++---- + drivers/staging/rtl8723au/hal/usb_halinit.c | 2 +- + drivers/staging/rtl8723au/include/hal_com.h | 2 +- + drivers/staging/rtl8723au/include/rtl8723a_spec.h | 2 -- + 5 files changed, 7 insertions(+), 14 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_wlan_util.c b/drivers/staging/rtl8723au/core/rtw_wlan_util.c +index 3228c59..32f3603 100644 +--- a/drivers/staging/rtl8723au/core/rtw_wlan_util.c ++++ b/drivers/staging/rtl8723au/core/rtw_wlan_util.c +@@ -445,11 +445,6 @@ unsigned int decide_wait_for_beacon_timeout23a(unsigned int bcn_interval) + return bcn_interval << 2; + } + +-void invalidate_cam_all23a(struct rtw_adapter *padapter) +-{ +- rtl8723a_cam_invalid_all(padapter); +-} +- + void clear_cam_entry23a(struct rtw_adapter *padapter, u8 entry) + { + unsigned char null_sta[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; +@@ -483,7 +478,7 @@ void flush_all_cam_entry23a(struct rtw_adapter *padapter) + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; + +- rtl8723a_cam_invalid_all(padapter); ++ rtl8723a_cam_invalidate_all(padapter); + + memset(pmlmeinfo->FW_sta_info, 0, sizeof(pmlmeinfo->FW_sta_info)); + } +diff --git a/drivers/staging/rtl8723au/hal/hal_com.c b/drivers/staging/rtl8723au/hal/hal_com.c +index 44fc37b..8718151 100644 +--- a/drivers/staging/rtl8723au/hal/hal_com.c ++++ b/drivers/staging/rtl8723au/hal/hal_com.c +@@ -669,16 +669,16 @@ void rtl8723a_cam_empty_entry(struct rtw_adapter *padapter, u8 ucIndex) + ("rtl8723a_cam_empty_entry(): WRITE A4: %lx \n", + ulContent));*/ + /* delay_ms(40); */ +- rtl8723au_write32(padapter, RWCAM, ulCommand); ++ rtl8723au_write32(padapter, REG_CAMCMD, ulCommand); + /* RT_TRACE(COMP_SEC, DBG_LOUD, + ("rtl8723a_cam_empty_entry(): WRITE A0: %lx \n", + ulCommand));*/ + } + } + +-void rtl8723a_cam_invalid_all(struct rtw_adapter *padapter) ++void rtl8723a_cam_invalidate_all(struct rtw_adapter *padapter) + { +- rtl8723au_write32(padapter, RWCAM, BIT(31) | BIT(30)); ++ rtl8723au_write32(padapter, REG_CAMCMD, CAM_POLLINIG | BIT(30)); + } + + void rtl8723a_cam_write(struct rtw_adapter *padapter, +@@ -708,7 +708,7 @@ void rtl8723a_cam_write(struct rtw_adapter *padapter, + + rtl8723au_write32(padapter, WCAMI, val); + cmd = CAM_POLLINIG | CAM_WRITE | (addr + j); +- rtl8723au_write32(padapter, RWCAM, cmd); ++ rtl8723au_write32(padapter, REG_CAMCMD, cmd); + + /* DBG_8723A("%s => cam write: %x, %x\n", __func__, cmd, val);*/ + } +diff --git a/drivers/staging/rtl8723au/hal/usb_halinit.c b/drivers/staging/rtl8723au/hal/usb_halinit.c +index 0c760e5..e09329b 100644 +--- a/drivers/staging/rtl8723au/hal/usb_halinit.c ++++ b/drivers/staging/rtl8723au/hal/usb_halinit.c +@@ -702,7 +702,7 @@ static int rtl8723au_hal_init(struct rtw_adapter *Adapter) + _BBTurnOnBlock(Adapter); + /* NicIFSetMacAddress(padapter, padapter->PermanentAddress); */ + +- invalidate_cam_all23a(Adapter); ++ rtl8723a_cam_invalidate_all(Adapter); + + /* 2010/12/17 MH We need to set TX power according to EFUSE content at first. */ + PHY_SetTxPowerLevel8723A(Adapter, pHalData->CurrentChannel); +diff --git a/drivers/staging/rtl8723au/include/hal_com.h b/drivers/staging/rtl8723au/include/hal_com.h +index 4a161e2..6c2ca4f 100644 +--- a/drivers/staging/rtl8723au/include/hal_com.h ++++ b/drivers/staging/rtl8723au/include/hal_com.h +@@ -182,7 +182,7 @@ void rtl8723a_set_slot_time(struct rtw_adapter *padapter, u8 slottime); + void rtl8723a_ack_preamble(struct rtw_adapter *padapter, u8 bShortPreamble); + void rtl8723a_set_sec_cfg(struct rtw_adapter *padapter, u8 sec); + void rtl8723a_cam_empty_entry(struct rtw_adapter *padapter, u8 ucIndex); +-void rtl8723a_cam_invalid_all(struct rtw_adapter *padapter); ++void rtl8723a_cam_invalidate_all(struct rtw_adapter *padapter); + void rtl8723a_cam_write(struct rtw_adapter *padapter, + u8 entry, u16 ctrl, const u8 *mac, const u8 *key); + void rtl8723a_fifo_cleanup(struct rtw_adapter *padapter); +diff --git a/drivers/staging/rtl8723au/include/rtl8723a_spec.h b/drivers/staging/rtl8723au/include/rtl8723a_spec.h +index 8d19b28..59b545b 100644 +--- a/drivers/staging/rtl8723au/include/rtl8723a_spec.h ++++ b/drivers/staging/rtl8723au/include/rtl8723a_spec.h +@@ -454,8 +454,6 @@ + /* */ + /* 9. Security Control Registers (Offset: ) */ + /* */ +- /* IN 8190 Data Sheet is called CAMcmd */ +-#define RWCAM REG_CAMCMD + /* Software write CAM input content */ + #define WCAMI REG_CAMWRITE + /* Software read/write CAM config */ diff --git a/debian/patches/features/all/r8723au/0206-staging-rtl8723au-rtl8723a_InitBeaconParameters-Remo.patch b/debian/patches/features/all/r8723au/0206-staging-rtl8723au-rtl8723a_InitBeaconParameters-Remo.patch new file mode 100644 index 000000000..75e2a9647 --- /dev/null +++ b/debian/patches/features/all/r8723au/0206-staging-rtl8723au-rtl8723a_InitBeaconParameters-Remo.patch @@ -0,0 +1,25 @@ +From: Jes Sorensen +Date: Thu, 17 Jul 2014 22:59:54 +0200 +Subject: [206/249] staging: rtl8723au: rtl8723a_InitBeaconParameters(): Remove + unused variable +Origin: https://git.kernel.org/linus/b3ee999e0b4e8a3e42bf186dae0ccf4f2692a8a5 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c b/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c +index 5c4751c..8523908 100644 +--- a/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c ++++ b/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c +@@ -893,8 +893,6 @@ void SetBcnCtrlReg23a(struct rtw_adapter *padapter, u8 SetBits, u8 ClearBits) + + void rtl8723a_InitBeaconParameters(struct rtw_adapter *padapter) + { +- struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); +- + rtl8723au_write16(padapter, REG_BCN_CTRL, 0x1010); + + /* TODO: Remove these magic number */ diff --git a/debian/patches/features/all/r8723au/0207-staging-rtl8723au-ODM_IC_11N_SERIES-is-always-true-f.patch b/debian/patches/features/all/r8723au/0207-staging-rtl8723au-ODM_IC_11N_SERIES-is-always-true-f.patch new file mode 100644 index 000000000..c7aedb6ba --- /dev/null +++ b/debian/patches/features/all/r8723au/0207-staging-rtl8723au-ODM_IC_11N_SERIES-is-always-true-f.patch @@ -0,0 +1,293 @@ +From: Jes Sorensen +Date: Thu, 17 Jul 2014 22:59:55 +0200 +Subject: [207/249] staging: rtl8723au: ODM_IC_11N_SERIES is always true for + SupportICType +Origin: https://git.kernel.org/linus/344af82c94311c4b11af968503c8b97cedb2fa91 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/odm.c | 142 +++++++++++----------- + drivers/staging/rtl8723au/include/odm.h | 4 - + drivers/staging/rtl8723au/include/odm_interface.h | 11 +- + 3 files changed, 75 insertions(+), 82 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/odm.c b/drivers/staging/rtl8723au/hal/odm.c +index e15ebfe..f21861e 100644 +--- a/drivers/staging/rtl8723au/hal/odm.c ++++ b/drivers/staging/rtl8723au/hal/odm.c +@@ -274,18 +274,16 @@ void ODM23a_DMInit(struct dm_odm_t *pDM_Odm) + odm_DIG23aInit(pDM_Odm); + odm_RateAdaptiveMaskInit23a(pDM_Odm); + +- if (pDM_Odm->SupportICType & ODM_IC_11N_SERIES) { +- odm23a_DynBBPSInit(pDM_Odm); +- odm_DynamicTxPower23aInit(pDM_Odm); +- odm_TXPowerTrackingInit23a(pDM_Odm); +- ODM_EdcaTurboInit23a(pDM_Odm); +- if ((pDM_Odm->AntDivType == CG_TRX_HW_ANTDIV) || +- (pDM_Odm->AntDivType == CGCS_RX_HW_ANTDIV) || +- (pDM_Odm->AntDivType == CG_TRX_SMART_ANTDIV)) +- odm_InitHybridAntDiv23a(pDM_Odm); +- else if (pDM_Odm->AntDivType == CGCS_RX_SW_ANTDIV) +- odm_SwAntDivInit(pDM_Odm); +- } ++ odm23a_DynBBPSInit(pDM_Odm); ++ odm_DynamicTxPower23aInit(pDM_Odm); ++ odm_TXPowerTrackingInit23a(pDM_Odm); ++ ODM_EdcaTurboInit23a(pDM_Odm); ++ if ((pDM_Odm->AntDivType == CG_TRX_HW_ANTDIV) || ++ (pDM_Odm->AntDivType == CGCS_RX_HW_ANTDIV) || ++ (pDM_Odm->AntDivType == CG_TRX_SMART_ANTDIV)) ++ odm_InitHybridAntDiv23a(pDM_Odm); ++ else if (pDM_Odm->AntDivType == CGCS_RX_SW_ANTDIV) ++ odm_SwAntDivInit(pDM_Odm); + } + + /* 2011/09/20 MH This is the entry pointer for all team to execute HW out source DM. */ +@@ -304,7 +302,7 @@ void ODM_DMWatchdog23a(struct dm_odm_t *pDM_Odm) + /* NeilChen--2012--08--24-- */ + /* Fix Leave LPS issue */ + if ((pDM_Odm->Adapter->pwrctrlpriv.pwr_mode != PS_MODE_ACTIVE) &&/* in LPS mode */ +- (pDM_Odm->SupportICType & (ODM_RTL8723A))) { ++ (pDM_Odm->SupportICType & ODM_RTL8723A)) { + ODM_RT_TRACE(pDM_Odm, ODM_COMP_DIG, ODM_DBG_LOUD, ("----Step1: odm_DIG23a is in LPS mode\n")); + ODM_RT_TRACE(pDM_Odm, ODM_COMP_DIG, ODM_DBG_LOUD, ("---Step2: 8723AS is in LPS mode\n")); + odm_DIG23abyRSSI_LPS(pDM_Odm); +@@ -327,10 +325,8 @@ void ODM_DMWatchdog23a(struct dm_odm_t *pDM_Odm) + else if (pDM_Odm->AntDivType == CGCS_RX_SW_ANTDIV) + odm_SwAntDivChkAntSwitch(pDM_Odm, SWAW_STEP_PEAK); + +- if (pDM_Odm->SupportICType & ODM_IC_11N_SERIES) { +- ODM_TXPowerTrackingCheck23a(pDM_Odm); +- odm_EdcaTurboCheck23a(pDM_Odm); +- } ++ ODM_TXPowerTrackingCheck23a(pDM_Odm); ++ odm_EdcaTurboCheck23a(pDM_Odm); + + odm_dtc(pDM_Odm); + } +@@ -551,7 +547,7 @@ void odm_CommonInfoSelfInit23a(struct dm_odm_t *pDM_Odm + { + pDM_Odm->bCckHighPower = (bool) ODM_GetBBReg(pDM_Odm, 0x824, BIT(9)); + pDM_Odm->RFPathRxEnable = (u8) ODM_GetBBReg(pDM_Odm, 0xc04, 0x0F); +- if (pDM_Odm->SupportICType & (ODM_RTL8723A)) ++ if (pDM_Odm->SupportICType & ODM_RTL8723A) + pDM_Odm->AntDivType = CGCS_RX_SW_ANTDIV; + + ODM_InitDebugSetting23a(pDM_Odm); +@@ -655,7 +651,7 @@ void odm_DIG23abyRSSI_LPS(struct dm_odm_t *pDM_Odm) + u8 bFwCurrentInPSMode = false; + u8 CurrentIGI = pDM_Odm->RSSI_Min; + +- if (!(pDM_Odm->SupportICType & (ODM_RTL8723A))) ++ if (!(pDM_Odm->SupportICType & ODM_RTL8723A)) + return; + + CurrentIGI = CurrentIGI+RSSI_OFFSET_DIG; +@@ -764,7 +760,7 @@ void odm_DIG23a(struct dm_odm_t *pDM_Odm) + FirstDisConnect = (!pDM_Odm->bLinked) && (pDM_DigTable->bMediaConnect_0); + + /* 1 Boundary Decision */ +- if ((pDM_Odm->SupportICType & (ODM_RTL8723A)) && ++ if ((pDM_Odm->SupportICType & ODM_RTL8723A) && + ((pDM_Odm->BoardType == ODM_BOARD_HIGHPWR) || pDM_Odm->ExtLNA)) { + dm_dig_max = DM_DIG_MAX_NIC_HP; + dm_dig_min = DM_DIG_MIN_NIC_HP; +@@ -777,7 +773,7 @@ void odm_DIG23a(struct dm_odm_t *pDM_Odm) + + if (pDM_Odm->bLinked) { + /* 2 8723A Series, offset need to be 10 */ +- if (pDM_Odm->SupportICType == (ODM_RTL8723A)) { ++ if (pDM_Odm->SupportICType == ODM_RTL8723A) { + /* 2 Upper Bound */ + if ((pDM_Odm->RSSI_Min + 10) > DM_DIG_MAX_NIC) + pDM_DigTable->rx_gain_range_max = DM_DIG_MAX_NIC; +@@ -925,32 +921,36 @@ void odm_FalseAlarmCounterStatistics23a(struct dm_odm_t *pDM_Odm) + if (!(pDM_Odm->SupportAbility & ODM_BB_FA_CNT)) + return; + +- if (pDM_Odm->SupportICType & ODM_IC_11N_SERIES) { +- /* hold ofdm counter */ +- ODM_SetBBReg(pDM_Odm, ODM_REG_OFDM_FA_HOLDC_11N, BIT(31), 1); /* hold page C counter */ +- ODM_SetBBReg(pDM_Odm, ODM_REG_OFDM_FA_RSTD_11N, BIT(31), 1); /* hold page D counter */ +- +- ret_value = ODM_GetBBReg(pDM_Odm, ODM_REG_OFDM_FA_TYPE1_11N, bMaskDWord); +- FalseAlmCnt->Cnt_Fast_Fsync = (ret_value&0xffff); +- FalseAlmCnt->Cnt_SB_Search_fail = ((ret_value&0xffff0000)>>16); +- ret_value = ODM_GetBBReg(pDM_Odm, ODM_REG_OFDM_FA_TYPE2_11N, bMaskDWord); +- FalseAlmCnt->Cnt_OFDM_CCA = (ret_value&0xffff); +- FalseAlmCnt->Cnt_Parity_Fail = ((ret_value&0xffff0000)>>16); +- ret_value = ODM_GetBBReg(pDM_Odm, ODM_REG_OFDM_FA_TYPE3_11N, bMaskDWord); +- FalseAlmCnt->Cnt_Rate_Illegal = (ret_value&0xffff); +- FalseAlmCnt->Cnt_Crc8_fail = ((ret_value&0xffff0000)>>16); +- ret_value = ODM_GetBBReg(pDM_Odm, ODM_REG_OFDM_FA_TYPE4_11N, bMaskDWord); +- FalseAlmCnt->Cnt_Mcs_fail = (ret_value&0xffff); +- +- FalseAlmCnt->Cnt_Ofdm_fail = FalseAlmCnt->Cnt_Parity_Fail + +- FalseAlmCnt->Cnt_Rate_Illegal + +- FalseAlmCnt->Cnt_Crc8_fail + +- FalseAlmCnt->Cnt_Mcs_fail + +- FalseAlmCnt->Cnt_Fast_Fsync + +- FalseAlmCnt->Cnt_SB_Search_fail; +- /* hold cck counter */ +- ODM_SetBBReg(pDM_Odm, ODM_REG_CCK_FA_RST_11N, BIT(12), 1); +- ODM_SetBBReg(pDM_Odm, ODM_REG_CCK_FA_RST_11N, BIT(14), 1); ++ /* hold ofdm counter */ ++ /* hold page C counter */ ++ ODM_SetBBReg(pDM_Odm, ODM_REG_OFDM_FA_HOLDC_11N, BIT(31), 1); ++ /* hold page D counter */ ++ ODM_SetBBReg(pDM_Odm, ODM_REG_OFDM_FA_RSTD_11N, BIT(31), 1); ++ ret_value = ++ ODM_GetBBReg(pDM_Odm, ODM_REG_OFDM_FA_TYPE1_11N, bMaskDWord); ++ FalseAlmCnt->Cnt_Fast_Fsync = (ret_value&0xffff); ++ FalseAlmCnt->Cnt_SB_Search_fail = ((ret_value&0xffff0000)>>16); ++ ret_value = ++ ODM_GetBBReg(pDM_Odm, ODM_REG_OFDM_FA_TYPE2_11N, bMaskDWord); ++ FalseAlmCnt->Cnt_OFDM_CCA = (ret_value&0xffff); ++ FalseAlmCnt->Cnt_Parity_Fail = ((ret_value&0xffff0000)>>16); ++ ret_value = ++ ODM_GetBBReg(pDM_Odm, ODM_REG_OFDM_FA_TYPE3_11N, bMaskDWord); ++ FalseAlmCnt->Cnt_Rate_Illegal = (ret_value&0xffff); ++ FalseAlmCnt->Cnt_Crc8_fail = ((ret_value&0xffff0000)>>16); ++ ret_value = ++ ODM_GetBBReg(pDM_Odm, ODM_REG_OFDM_FA_TYPE4_11N, bMaskDWord); ++ FalseAlmCnt->Cnt_Mcs_fail = (ret_value&0xffff); ++ ++ FalseAlmCnt->Cnt_Ofdm_fail = FalseAlmCnt->Cnt_Parity_Fail + ++ FalseAlmCnt->Cnt_Rate_Illegal + ++ FalseAlmCnt->Cnt_Crc8_fail + ++ FalseAlmCnt->Cnt_Mcs_fail + ++ FalseAlmCnt->Cnt_Fast_Fsync + ++ FalseAlmCnt->Cnt_SB_Search_fail; ++ /* hold cck counter */ ++ ODM_SetBBReg(pDM_Odm, ODM_REG_CCK_FA_RST_11N, BIT(12), 1); ++ ODM_SetBBReg(pDM_Odm, ODM_REG_CCK_FA_RST_11N, BIT(14), 1); + + ret_value = ODM_GetBBReg(pDM_Odm, ODM_REG_CCK_FA_LSB_11N, bMaskByte0); + FalseAlmCnt->Cnt_Cck_fail = ret_value; +@@ -958,7 +958,8 @@ void odm_FalseAlarmCounterStatistics23a(struct dm_odm_t *pDM_Odm) + FalseAlmCnt->Cnt_Cck_fail += (ret_value & 0xff) << 8; + + ret_value = ODM_GetBBReg(pDM_Odm, ODM_REG_CCK_CCA_CNT_11N, bMaskDWord); +- FalseAlmCnt->Cnt_CCK_CCA = ((ret_value&0xFF)<<8) | ((ret_value&0xFF00)>>8); ++ FalseAlmCnt->Cnt_CCK_CCA = ++ ((ret_value&0xFF)<<8) | ((ret_value&0xFF00)>>8); + + FalseAlmCnt->Cnt_all = (FalseAlmCnt->Cnt_Fast_Fsync + + FalseAlmCnt->Cnt_SB_Search_fail + +@@ -968,7 +969,8 @@ void odm_FalseAlarmCounterStatistics23a(struct dm_odm_t *pDM_Odm) + FalseAlmCnt->Cnt_Mcs_fail + + FalseAlmCnt->Cnt_Cck_fail); + +- FalseAlmCnt->Cnt_CCA_all = FalseAlmCnt->Cnt_OFDM_CCA + FalseAlmCnt->Cnt_CCK_CCA; ++ FalseAlmCnt->Cnt_CCA_all = ++ FalseAlmCnt->Cnt_OFDM_CCA + FalseAlmCnt->Cnt_CCK_CCA; + + if (pDM_Odm->SupportICType >= ODM_RTL8723A) { + /* reset false alarm counter registers */ +@@ -977,8 +979,10 @@ void odm_FalseAlarmCounterStatistics23a(struct dm_odm_t *pDM_Odm) + ODM_SetBBReg(pDM_Odm, ODM_REG_OFDM_FA_RSTD_11N, BIT(27), 1); + ODM_SetBBReg(pDM_Odm, ODM_REG_OFDM_FA_RSTD_11N, BIT(27), 0); + /* update ofdm counter */ +- ODM_SetBBReg(pDM_Odm, ODM_REG_OFDM_FA_HOLDC_11N, BIT(31), 0); /* update page C counter */ +- ODM_SetBBReg(pDM_Odm, ODM_REG_OFDM_FA_RSTD_11N, BIT(31), 0); /* update page D counter */ ++ /* update page C counter */ ++ ODM_SetBBReg(pDM_Odm, ODM_REG_OFDM_FA_HOLDC_11N, BIT(31), 0); ++ /* update page D counter */ ++ ODM_SetBBReg(pDM_Odm, ODM_REG_OFDM_FA_RSTD_11N, BIT(31), 0); + + /* reset CCK CCA counter */ + ODM_SetBBReg(pDM_Odm, ODM_REG_CCK_FA_RST_11N, +@@ -992,26 +996,20 @@ void odm_FalseAlarmCounterStatistics23a(struct dm_odm_t *pDM_Odm) + BIT(15) | BIT(14), 2); + } + +- ODM_RT_TRACE(pDM_Odm, ODM_COMP_FA_CNT, ODM_DBG_LOUD, ("Enter odm_FalseAlarmCounterStatistics23a\n")); +- ODM_RT_TRACE(pDM_Odm, ODM_COMP_FA_CNT, ODM_DBG_LOUD, ("Cnt_Fast_Fsync =%d, Cnt_SB_Search_fail =%d\n", +- FalseAlmCnt->Cnt_Fast_Fsync, FalseAlmCnt->Cnt_SB_Search_fail)); +- ODM_RT_TRACE(pDM_Odm, ODM_COMP_FA_CNT, ODM_DBG_LOUD, ("Cnt_Parity_Fail =%d, Cnt_Rate_Illegal =%d\n", +- FalseAlmCnt->Cnt_Parity_Fail, FalseAlmCnt->Cnt_Rate_Illegal)); +- ODM_RT_TRACE(pDM_Odm, ODM_COMP_FA_CNT, ODM_DBG_LOUD, ("Cnt_Crc8_fail =%d, Cnt_Mcs_fail =%d\n", +- FalseAlmCnt->Cnt_Crc8_fail, FalseAlmCnt->Cnt_Mcs_fail)); +- } else { /* FOR ODM_IC_11AC_SERIES */ +- /* read OFDM FA counter */ +- FalseAlmCnt->Cnt_Ofdm_fail = ODM_GetBBReg(pDM_Odm, ODM_REG_OFDM_FA_11AC, bMaskLWord); +- FalseAlmCnt->Cnt_Cck_fail = ODM_GetBBReg(pDM_Odm, ODM_REG_CCK_FA_11AC, bMaskLWord); +- FalseAlmCnt->Cnt_all = FalseAlmCnt->Cnt_Ofdm_fail + FalseAlmCnt->Cnt_Cck_fail; +- +- /* reset OFDM FA coutner */ +- ODM_SetBBReg(pDM_Odm, ODM_REG_OFDM_FA_RST_11AC, BIT(17), 1); +- ODM_SetBBReg(pDM_Odm, ODM_REG_OFDM_FA_RST_11AC, BIT(17), 0); +- /* reset CCK FA counter */ +- ODM_SetBBReg(pDM_Odm, ODM_REG_CCK_FA_RST_11AC, BIT(15), 0); +- ODM_SetBBReg(pDM_Odm, ODM_REG_CCK_FA_RST_11AC, BIT(15), 1); +- } ++ ODM_RT_TRACE(pDM_Odm, ODM_COMP_FA_CNT, ODM_DBG_LOUD, ++ ("Enter odm_FalseAlarmCounterStatistics23a\n")); ++ ODM_RT_TRACE(pDM_Odm, ODM_COMP_FA_CNT, ODM_DBG_LOUD, ++ ("Cnt_Fast_Fsync =%d, Cnt_SB_Search_fail =%d\n", ++ FalseAlmCnt->Cnt_Fast_Fsync, ++ FalseAlmCnt->Cnt_SB_Search_fail)); ++ ODM_RT_TRACE(pDM_Odm, ODM_COMP_FA_CNT, ODM_DBG_LOUD, ++ ("Cnt_Parity_Fail =%d, Cnt_Rate_Illegal =%d\n", ++ FalseAlmCnt->Cnt_Parity_Fail, ++ FalseAlmCnt->Cnt_Rate_Illegal)); ++ ODM_RT_TRACE(pDM_Odm, ODM_COMP_FA_CNT, ODM_DBG_LOUD, ++ ("Cnt_Crc8_fail =%d, Cnt_Mcs_fail =%d\n", ++ FalseAlmCnt->Cnt_Crc8_fail, FalseAlmCnt->Cnt_Mcs_fail)); ++ + ODM_RT_TRACE(pDM_Odm, ODM_COMP_FA_CNT, ODM_DBG_LOUD, ("Cnt_Cck_fail =%d\n", FalseAlmCnt->Cnt_Cck_fail)); + ODM_RT_TRACE(pDM_Odm, ODM_COMP_FA_CNT, ODM_DBG_LOUD, ("Cnt_Ofdm_fail =%d\n", FalseAlmCnt->Cnt_Ofdm_fail)); + ODM_RT_TRACE(pDM_Odm, ODM_COMP_FA_CNT, ODM_DBG_LOUD, ("Total False Alarm =%d\n", FalseAlmCnt->Cnt_all)); +@@ -1836,7 +1834,7 @@ bool ODM_SingleDualAntennaDetection(struct dm_odm_t *pDM_Odm, u8 mode) + rSleep, rPMPD_ANAEN, + rFPGA0_XCD_SwitchControl, rBlue_Tooth}; + +- if (!(pDM_Odm->SupportICType & (ODM_RTL8723A))) ++ if (!(pDM_Odm->SupportICType & ODM_RTL8723A)) + return bResult; + + if (!(pDM_Odm->SupportAbility&ODM_BB_ANT_DIV)) +diff --git a/drivers/staging/rtl8723au/include/odm.h b/drivers/staging/rtl8723au/include/odm.h +index 08c6f72..b466a81 100644 +--- a/drivers/staging/rtl8723au/include/odm.h ++++ b/drivers/staging/rtl8723au/include/odm.h +@@ -415,10 +415,6 @@ enum odm_ic_type_def { + ODM_RTL8821 = BIT(6), + }; + +-#define ODM_IC_11N_SERIES \ +- (ODM_RTL8192S|ODM_RTL8192C|ODM_RTL8192D|ODM_RTL8723A|ODM_RTL8188E) +-#define ODM_IC_11AC_SERIES (ODM_RTL8812) +- + /* ODM_CMNINFO_CUT_VER */ + enum odm_cut_version { + ODM_CUT_A = 1, +diff --git a/drivers/staging/rtl8723au/include/odm_interface.h b/drivers/staging/rtl8723au/include/odm_interface.h +index c260d6b..ea35070 100644 +--- a/drivers/staging/rtl8723au/include/odm_interface.h ++++ b/drivers/staging/rtl8723au/include/odm_interface.h +@@ -33,17 +33,16 @@ ODM_REG(DIG,_pDM_Odm) + #define _bit_11N(_name) ODM_BIT_##_name##_11N + #define _bit_11AC(_name) ODM_BIT_##_name##_11AC + +-#define _cat(_name, _ic_type, _func) \ +- ( \ +- ((_ic_type) & ODM_IC_11N_SERIES)? _func##_11N(_name): \ +- _func##_11AC(_name) \ ++#define _cat(_name, _func) \ ++ ( \ ++ _func##_11N(_name) \ + ) + + /* _name: name of register or bit. */ + /* Example: "ODM_REG(R_A_AGC_CORE1, pDM_Odm)" */ + /* gets "ODM_R_A_AGC_CORE1" or "ODM_R_A_AGC_CORE1_8192C", depends on SupportICType. */ +-#define ODM_REG(_name, _pDM_Odm) _cat(_name, _pDM_Odm->SupportICType, _reg) +-#define ODM_BIT(_name, _pDM_Odm) _cat(_name, _pDM_Odm->SupportICType, _bit) ++#define ODM_REG(_name, _pDM_Odm) _cat(_name, _reg) ++#define ODM_BIT(_name, _pDM_Odm) _cat(_name, _bit) + + /* */ + /* 2012/02/17 MH For non-MP compile pass only. Linux does not support workitem. */ diff --git a/debian/patches/features/all/r8723au/0208-staging-rtl8723au-Remove-unused-odm_RegDefine11AC.h.patch b/debian/patches/features/all/r8723au/0208-staging-rtl8723au-Remove-unused-odm_RegDefine11AC.h.patch new file mode 100644 index 000000000..85c96dae5 --- /dev/null +++ b/debian/patches/features/all/r8723au/0208-staging-rtl8723au-Remove-unused-odm_RegDefine11AC.h.patch @@ -0,0 +1,80 @@ +From: Jes Sorensen +Date: Thu, 17 Jul 2014 22:59:56 +0200 +Subject: [208/249] staging: rtl8723au: Remove unused odm_RegDefine11AC.h +Origin: https://git.kernel.org/linus/bc919b0e599eb7a7c04b57001320bbd95eddadb1 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + .../staging/rtl8723au/include/odm_RegDefine11AC.h | 49 ---------------------- + drivers/staging/rtl8723au/include/odm_precomp.h | 1 - + 2 files changed, 50 deletions(-) + delete mode 100644 drivers/staging/rtl8723au/include/odm_RegDefine11AC.h + +diff --git a/drivers/staging/rtl8723au/include/odm_RegDefine11AC.h b/drivers/staging/rtl8723au/include/odm_RegDefine11AC.h +deleted file mode 100644 +index 77b7ace..0000000 +--- a/drivers/staging/rtl8723au/include/odm_RegDefine11AC.h ++++ /dev/null +@@ -1,49 +0,0 @@ +-/****************************************************************************** +- * +- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. +- * +- * This program is free software; you can redistribute it and/or modify it +- * under the terms of version 2 of the GNU General Public License as +- * published by the Free Software Foundation. +- * +- * This program is distributed in the hope that it will be useful, but WITHOUT +- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +- * more details. +- * +- ******************************************************************************/ +- +-#ifndef __ODM_REGDEFINE11AC_H__ +-#define __ODM_REGDEFINE11AC_H__ +- +-/* 2 RF REG LIST */ +- +- +- +-/* 2 BB REG LIST */ +-/* PAGE 8 */ +-/* PAGE 9 */ +-#define ODM_REG_OFDM_FA_RST_11AC 0x9A4 +-/* PAGE A */ +-#define ODM_REG_CCK_CCA_11AC 0xA0A +-#define ODM_REG_CCK_FA_RST_11AC 0xA2C +-#define ODM_REG_CCK_FA_11AC 0xA5C +-/* PAGE C */ +-#define ODM_REG_IGI_A_11AC 0xC50 +-/* PAGE E */ +-#define ODM_REG_IGI_B_11AC 0xE50 +-/* PAGE F */ +-#define ODM_REG_OFDM_FA_11AC 0xF48 +- +- +-/* 2 MAC REG LIST */ +- +- +- +- +-/* DIG Related */ +-#define ODM_BIT_IGI_11AC 0xFFFFFFFF +- +- +- +-#endif +diff --git a/drivers/staging/rtl8723au/include/odm_precomp.h b/drivers/staging/rtl8723au/include/odm_precomp.h +index 69de888..fb793c8 100644 +--- a/drivers/staging/rtl8723au/include/odm_precomp.h ++++ b/drivers/staging/rtl8723au/include/odm_precomp.h +@@ -32,7 +32,6 @@ + #include "odm.h" + #include "odm_HWConfig.h" + #include "odm_debug.h" +-#include "odm_RegDefine11AC.h" + #include "odm_RegDefine11N.h" + + #include "HalDMOutSrc8723A.h" /* for IQK,LCK,Power-tracking */ diff --git a/debian/patches/features/all/r8723au/0209-staging-rtl8723au-Remove-pointless-IS_STA_VALID-macr.patch b/debian/patches/features/all/r8723au/0209-staging-rtl8723au-Remove-pointless-IS_STA_VALID-macr.patch new file mode 100644 index 000000000..2bd1fd083 --- /dev/null +++ b/debian/patches/features/all/r8723au/0209-staging-rtl8723au-Remove-pointless-IS_STA_VALID-macr.patch @@ -0,0 +1,81 @@ +From: Jes Sorensen +Date: Thu, 17 Jul 2014 22:59:57 +0200 +Subject: [209/249] staging: rtl8723au: Remove pointless IS_STA_VALID() macro +Origin: https://git.kernel.org/linus/2e8d47e039ec09959800ce559ed6396c4a29351d + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/odm.c | 8 ++++---- + drivers/staging/rtl8723au/hal/odm_HWConfig.c | 2 +- + drivers/staging/rtl8723au/include/odm.h | 4 ---- + 3 files changed, 5 insertions(+), 9 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/odm.c b/drivers/staging/rtl8723au/hal/odm.c +index f21861e..ce192de 100644 +--- a/drivers/staging/rtl8723au/hal/odm.c ++++ b/drivers/staging/rtl8723au/hal/odm.c +@@ -570,7 +570,7 @@ void odm_CommonInfoSelfUpdate23a(struct dm_odm_t *pDM_Odm) + + for (i = 0; i < ODM_ASSOCIATE_ENTRY_NUM; i++) { + pEntry = pDM_Odm->pODM_StaInfo[i]; +- if (IS_STA_VALID(pEntry)) ++ if (pEntry) + EntryCnt++; + } + if (EntryCnt == 1) +@@ -1216,7 +1216,7 @@ u32 ODM_Get_Rate_Bitmap23a(struct dm_odm_t *pDM_Odm, + /* u8 WirelessMode =*(pDM_Odm->pWirelessMode); */ + + pEntry = pDM_Odm->pODM_StaInfo[macid]; +- if (!IS_STA_VALID(pEntry)) ++ if (!pEntry) + return ra_mask; + + WirelessMode = pEntry->wireless_mode; +@@ -1338,7 +1338,7 @@ void odm_RefreshRateAdaptiveMask23aCE23a(struct dm_odm_t *pDM_Odm) + + for (i = 0; i < ODM_ASSOCIATE_ENTRY_NUM; i++) { + struct sta_info *pstat = pDM_Odm->pODM_StaInfo[i]; +- if (IS_STA_VALID(pstat)) { ++ if (pstat) { + if (ODM_RAStateCheck23a(pDM_Odm, pstat->rssi_stat.UndecoratedSmoothedPWDB, false, &pstat->rssi_level)) { + ODM_RT_TRACE(pDM_Odm, ODM_COMP_RA_MASK, ODM_DBG_LOUD, + ("RSSI:%d, RSSI_LEVEL:%d\n", +@@ -1480,7 +1480,7 @@ void odm_RSSIMonitorCheck23aCE(struct dm_odm_t *pDM_Odm) + + for (i = 0; i < ODM_ASSOCIATE_ENTRY_NUM; i++) { + psta = pDM_Odm->pODM_StaInfo[i]; +- if (IS_STA_VALID(psta)) { ++ if (psta) { + if (psta->rssi_stat.UndecoratedSmoothedPWDB < tmpEntryMinPWDB) + tmpEntryMinPWDB = psta->rssi_stat.UndecoratedSmoothedPWDB; + +diff --git a/drivers/staging/rtl8723au/hal/odm_HWConfig.c b/drivers/staging/rtl8723au/hal/odm_HWConfig.c +index 26fbf6c..ab820a8 100644 +--- a/drivers/staging/rtl8723au/hal/odm_HWConfig.c ++++ b/drivers/staging/rtl8723au/hal/odm_HWConfig.c +@@ -291,7 +291,7 @@ static void odm_Process_RSSIForDM(struct dm_odm_t *pDM_Odm, + return; + + pEntry = pDM_Odm->pODM_StaInfo[pPktinfo->StationID]; +- if (!IS_STA_VALID(pEntry)) ++ if (!pEntry) + return; + if ((!pPktinfo->bPacketMatchBSSID)) + return; +diff --git a/drivers/staging/rtl8723au/include/odm.h b/drivers/staging/rtl8723au/include/odm.h +index b466a81..b2f661e 100644 +--- a/drivers/staging/rtl8723au/include/odm.h ++++ b/drivers/staging/rtl8723au/include/odm.h +@@ -1001,10 +1001,6 @@ extern u8 CCKSwingTable_Ch1423A [CCK_TABLE_SIZE][8]; + + + +-/* */ +-/* check Sta pointer valid or not */ +-/* */ +-#define IS_STA_VALID(pSta) (pSta) + /* 20100514 Joseph: Add definition for antenna switching test after link. */ + /* This indicates two different the steps. */ + /* In SWAW_STEP_PEAK, driver needs to switch antenna and listen to the signal on the air. */ diff --git a/debian/patches/features/all/r8723au/0210-staging-rtl8723au-Fold-odm_EdcaTurboCheck23aCE23a-in.patch b/debian/patches/features/all/r8723au/0210-staging-rtl8723au-Fold-odm_EdcaTurboCheck23aCE23a-in.patch new file mode 100644 index 000000000..d6cabb23d --- /dev/null +++ b/debian/patches/features/all/r8723au/0210-staging-rtl8723au-Fold-odm_EdcaTurboCheck23aCE23a-in.patch @@ -0,0 +1,77 @@ +From: Jes Sorensen +Date: Mon, 21 Jul 2014 11:24:41 +0200 +Subject: [210/249] staging: rtl8723au: Fold odm_EdcaTurboCheck23aCE23a() into + odm_EdcaTurboCheck23a() +Origin: https://git.kernel.org/linus/9ea3b82630d9f0e8839df87772af3342473121d5 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/odm.c | 37 +++++++++++++------------------------ + 1 file changed, 13 insertions(+), 24 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/odm.c b/drivers/staging/rtl8723au/hal/odm.c +index ce192de..3292b5f 100644 +--- a/drivers/staging/rtl8723au/hal/odm.c ++++ b/drivers/staging/rtl8723au/hal/odm.c +@@ -241,8 +241,6 @@ void odm_TXPowerTrackingCheckCE23a(struct dm_odm_t *pDM_Odm); + void odm_EdcaTurboCheck23a(struct dm_odm_t *pDM_Odm); + void ODM_EdcaTurboInit23a(struct dm_odm_t *pDM_Odm); + +-void odm_EdcaTurboCheck23aCE23a(struct dm_odm_t *pDM_Odm); +- + #define RxDefaultAnt1 0x65a9 + #define RxDefaultAnt2 0x569a + +@@ -1628,38 +1626,29 @@ void ODM_EdcaTurboInit23a(struct dm_odm_t *pDM_Odm) + + void odm_EdcaTurboCheck23a(struct dm_odm_t *pDM_Odm) + { ++ struct rtw_adapter *Adapter = pDM_Odm->Adapter; ++ struct hal_data_8723a *pHalData = GET_HAL_DATA(Adapter); ++ struct xmit_priv *pxmitpriv = &Adapter->xmitpriv; ++ struct recv_priv *precvpriv = &Adapter->recvpriv; ++ struct registry_priv *pregpriv = &Adapter->registrypriv; ++ struct mlme_ext_priv *pmlmeext = &Adapter->mlmeextpriv; ++ struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; ++ u32 trafficIndex; ++ u32 edca_param; ++ u64 cur_tx_bytes = 0; ++ u64 cur_rx_bytes = 0; ++ u8 bbtchange = false; ++ + /* For AP/ADSL use struct rtl8723a_priv * */ + /* For CE/NIC use struct rtw_adapter * */ + + /* 2011/09/29 MH In HW integration first stage, we provide 4 different handle to operate */ + /* at the same time. In the stage2/3, we need to prive universal interface and merge all */ + /* HW dynamic mechanism. */ +- ODM_RT_TRACE(pDM_Odm, ODM_COMP_EDCA_TURBO, ODM_DBG_LOUD, ("odm_EdcaTurboCheck23a ========================>\n")); + + if (!(pDM_Odm->SupportAbility & ODM_MAC_EDCA_TURBO)) + return; + +- odm_EdcaTurboCheck23aCE23a(pDM_Odm); +- ODM_RT_TRACE(pDM_Odm, ODM_COMP_EDCA_TURBO, ODM_DBG_LOUD, ("<======================== odm_EdcaTurboCheck23a\n")); +- +-} /* odm_CheckEdcaTurbo */ +- +-void odm_EdcaTurboCheck23aCE23a(struct dm_odm_t *pDM_Odm) +-{ +- struct rtw_adapter *Adapter = pDM_Odm->Adapter; +- +- u32 trafficIndex; +- u32 edca_param; +- u64 cur_tx_bytes = 0; +- u64 cur_rx_bytes = 0; +- u8 bbtchange = false; +- struct hal_data_8723a *pHalData = GET_HAL_DATA(Adapter); +- struct xmit_priv *pxmitpriv = &Adapter->xmitpriv; +- struct recv_priv *precvpriv = &Adapter->recvpriv; +- struct registry_priv *pregpriv = &Adapter->registrypriv; +- struct mlme_ext_priv *pmlmeext = &Adapter->mlmeextpriv; +- struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; +- + if ((pregpriv->wifi_spec == 1))/* (pmlmeinfo->HT_enable == 0)) */ + goto dm_CheckEdcaTurbo_EXIT; + diff --git a/debian/patches/features/all/r8723au/0211-staging-rtl8723au-Declare-odm_EdcaTurbo-functions-st.patch b/debian/patches/features/all/r8723au/0211-staging-rtl8723au-Declare-odm_EdcaTurbo-functions-st.patch new file mode 100644 index 000000000..a19082efc --- /dev/null +++ b/debian/patches/features/all/r8723au/0211-staging-rtl8723au-Declare-odm_EdcaTurbo-functions-st.patch @@ -0,0 +1,45 @@ +From: Jes Sorensen +Date: Mon, 21 Jul 2014 11:24:42 +0200 +Subject: [211/249] staging: rtl8723au: Declare odm_EdcaTurbo*() functions + static +Origin: https://git.kernel.org/linus/4d1def6b5cd9294c6484145e1965899a0a5029dc + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/odm.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/odm.c b/drivers/staging/rtl8723au/hal/odm.c +index 3292b5f..dd02585 100644 +--- a/drivers/staging/rtl8723au/hal/odm.c ++++ b/drivers/staging/rtl8723au/hal/odm.c +@@ -238,8 +238,8 @@ void odm_TXPowerTrackingCheckMP(struct dm_odm_t *pDM_Odm); + + void odm_TXPowerTrackingCheckCE23a(struct dm_odm_t *pDM_Odm); + +-void odm_EdcaTurboCheck23a(struct dm_odm_t *pDM_Odm); +-void ODM_EdcaTurboInit23a(struct dm_odm_t *pDM_Odm); ++static void odm_EdcaTurboCheck23a(struct dm_odm_t *pDM_Odm); ++static void ODM_EdcaTurboInit23a(struct dm_odm_t *pDM_Odm); + + #define RxDefaultAnt1 0x65a9 + #define RxDefaultAnt2 0x569a +@@ -1609,7 +1609,7 @@ void odm_HwAntDiv23a(struct dm_odm_t *pDM_Odm) + } + + /* EDCA Turbo */ +-void ODM_EdcaTurboInit23a(struct dm_odm_t *pDM_Odm) ++static void ODM_EdcaTurboInit23a(struct dm_odm_t *pDM_Odm) + { + + struct rtw_adapter *Adapter = pDM_Odm->Adapter; +@@ -1624,7 +1624,7 @@ void ODM_EdcaTurboInit23a(struct dm_odm_t *pDM_Odm) + + } /* ODM_InitEdcaTurbo */ + +-void odm_EdcaTurboCheck23a(struct dm_odm_t *pDM_Odm) ++static void odm_EdcaTurboCheck23a(struct dm_odm_t *pDM_Odm) + { + struct rtw_adapter *Adapter = pDM_Odm->Adapter; + struct hal_data_8723a *pHalData = GET_HAL_DATA(Adapter); diff --git a/debian/patches/features/all/r8723au/0212-staging-rtl8723au-bDMInitialGainEnable-is-always-tru.patch b/debian/patches/features/all/r8723au/0212-staging-rtl8723au-bDMInitialGainEnable-is-always-tru.patch new file mode 100644 index 000000000..12cafb57f --- /dev/null +++ b/debian/patches/features/all/r8723au/0212-staging-rtl8723au-bDMInitialGainEnable-is-always-tru.patch @@ -0,0 +1,52 @@ +From: Jes Sorensen +Date: Mon, 21 Jul 2014 11:24:43 +0200 +Subject: [212/249] staging: rtl8723au: bDMInitialGainEnable is always true +Origin: https://git.kernel.org/linus/3f22aed843c7f7984e61f64394dc6b00000e2d18 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/odm.c | 10 ---------- + drivers/staging/rtl8723au/include/odm.h | 1 - + 2 files changed, 11 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/odm.c b/drivers/staging/rtl8723au/hal/odm.c +index dd02585..ed6d3af 100644 +--- a/drivers/staging/rtl8723au/hal/odm.c ++++ b/drivers/staging/rtl8723au/hal/odm.c +@@ -717,10 +717,6 @@ void odm_DIG23aInit(struct dm_odm_t *pDM_Odm) + pDM_DigTable->DIG_Dynamic_MIN_1 = DM_DIG_MIN_NIC; + pDM_DigTable->bMediaConnect_0 = false; + pDM_DigTable->bMediaConnect_1 = false; +- +- /* To Initialize pDM_Odm->bDMInitialGainEnable == false to avoid DIG error */ +- pDM_Odm->bDMInitialGainEnable = true; +- + } + + void odm_DIG23a(struct dm_odm_t *pDM_Odm) +@@ -747,12 +743,6 @@ void odm_DIG23a(struct dm_odm_t *pDM_Odm) + return; + } + +- /* add by Neil Chen to avoid PSD is processing */ +- if (!pDM_Odm->bDMInitialGainEnable) { +- ODM_RT_TRACE(pDM_Odm, ODM_COMP_DIG, ODM_DBG_LOUD, ("odm_DIG23a() Return: PSD is Processing \n")); +- return; +- } +- + DIG_Dynamic_MIN = pDM_DigTable->DIG_Dynamic_MIN_0; + FirstConnect = (pDM_Odm->bLinked) && (!pDM_DigTable->bMediaConnect_0); + FirstDisConnect = (!pDM_Odm->bLinked) && (pDM_DigTable->bMediaConnect_0); +diff --git a/drivers/staging/rtl8723au/include/odm.h b/drivers/staging/rtl8723au/include/odm.h +index b2f661e..9c8e7d8 100644 +--- a/drivers/staging/rtl8723au/include/odm.h ++++ b/drivers/staging/rtl8723au/include/odm.h +@@ -818,7 +818,6 @@ struct dm_odm_t { + bool bUserAssignLevel; + u8 RSSI_BT; /* come from BT */ + bool bPSDinProcess; +- bool bDMInitialGainEnable; + + /* for rate adaptive, in fact, 88c/92c fw will handle this */ + u8 bUseRAMask; diff --git a/debian/patches/features/all/r8723au/0213-staging-rtl8723au-Remove-unused-DefaultInitialGain-a.patch b/debian/patches/features/all/r8723au/0213-staging-rtl8723au-Remove-unused-DefaultInitialGain-a.patch new file mode 100644 index 000000000..93336a28c --- /dev/null +++ b/debian/patches/features/all/r8723au/0213-staging-rtl8723au-Remove-unused-DefaultInitialGain-a.patch @@ -0,0 +1,23 @@ +From: Jes Sorensen +Date: Mon, 21 Jul 2014 11:24:44 +0200 +Subject: [213/249] staging: rtl8723au: Remove unused DefaultInitialGain array +Origin: https://git.kernel.org/linus/22965e3937ff1d8417aef5612d398a3eff793d3b + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/include/rtl8723a_hal.h | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/drivers/staging/rtl8723au/include/rtl8723a_hal.h b/drivers/staging/rtl8723au/include/rtl8723a_hal.h +index 1f63eb1..3b0b06d 100644 +--- a/drivers/staging/rtl8723au/include/rtl8723a_hal.h ++++ b/drivers/staging/rtl8723au/include/rtl8723a_hal.h +@@ -315,7 +315,6 @@ struct hal_data_8723a { + u8 framesync; + u32 framesyncC34; + u8 framesyncMonitor; +- u8 DefaultInitialGain[4]; + u8 pwrGroupCnt; + u32 MCSTxPowerLevelOriginalOffset[7][16]; + u32 CCKTxPowerLevelOriginalOffset; diff --git a/debian/patches/features/all/r8723au/0214-staging-rtl8723au-Remove-some-redundant-check-for-hw.patch b/debian/patches/features/all/r8723au/0214-staging-rtl8723au-Remove-some-redundant-check-for-hw.patch new file mode 100644 index 000000000..833afa233 --- /dev/null +++ b/debian/patches/features/all/r8723au/0214-staging-rtl8723au-Remove-some-redundant-check-for-hw.patch @@ -0,0 +1,54 @@ +From: Jes Sorensen +Date: Mon, 21 Jul 2014 11:24:45 +0200 +Subject: [214/249] staging: rtl8723au: Remove some redundant check for + hw_init_completed +Origin: https://git.kernel.org/linus/c7abd8749308bbdf6c83e8232a5c94d84a9bee27 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/rtl8723a_dm.c | 16 ++++++---------- + 1 file changed, 6 insertions(+), 10 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c +index ac47a97..bf1db90 100644 +--- a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c ++++ b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c +@@ -211,6 +211,7 @@ rtl8723a_HalDmWatchDog( + { + bool bFwCurrentInPSMode = false; + bool bFwPSAwake = true; ++ u8 bLinked = false; + u8 hw_init_completed = false; + struct hal_data_8723a *pHalData = GET_HAL_DATA(Adapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; +@@ -223,7 +224,7 @@ rtl8723a_HalDmWatchDog( + bFwCurrentInPSMode = Adapter->pwrctrlpriv.bFwCurrentInPSMode; + bFwPSAwake = rtl8723a_get_fwlps_rf_on(Adapter); + +- if ((hw_init_completed) && ((!bFwCurrentInPSMode) && bFwPSAwake)) { ++ if (!bFwCurrentInPSMode && bFwPSAwake) { + /* Calculate Tx/Rx statistics. */ + dm_CheckStatistics(Adapter); + +@@ -238,16 +239,11 @@ rtl8723a_HalDmWatchDog( + } + + /* ODM */ +- if (hw_init_completed == true) { +- u8 bLinked = false; ++ if (rtw_linked_check(Adapter)) ++ bLinked = true; + +- if (rtw_linked_check(Adapter)) +- bLinked = true; +- +- ODM_CmnInfoUpdate23a(&pHalData->odmpriv, ODM_CMNINFO_LINK, +- bLinked); +- ODM_DMWatchdog23a(&pHalData->odmpriv); +- } ++ ODM_CmnInfoUpdate23a(&pHalData->odmpriv, ODM_CMNINFO_LINK, bLinked); ++ ODM_DMWatchdog23a(&pHalData->odmpriv); + + skip_dm: + diff --git a/debian/patches/features/all/r8723au/0215-staging-rtl8723au-Remove-no-op-rtl8723a_deinit_dm_pr.patch b/debian/patches/features/all/r8723au/0215-staging-rtl8723au-Remove-no-op-rtl8723a_deinit_dm_pr.patch new file mode 100644 index 000000000..1d97312a0 --- /dev/null +++ b/debian/patches/features/all/r8723au/0215-staging-rtl8723au-Remove-no-op-rtl8723a_deinit_dm_pr.patch @@ -0,0 +1,50 @@ +From: Jes Sorensen +Date: Mon, 21 Jul 2014 11:24:46 +0200 +Subject: [215/249] staging: rtl8723au: Remove no-op rtl8723a_deinit_dm_priv() +Origin: https://git.kernel.org/linus/71cd6f54dcf6e9fd858c55b109f8efd1f9539808 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/rtl8723a_dm.c | 4 ---- + drivers/staging/rtl8723au/include/rtl8723a_dm.h | 1 - + drivers/staging/rtl8723au/os_dep/os_intfs.c | 2 -- + 3 files changed, 7 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c +index bf1db90..4a3d2e1 100644 +--- a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c ++++ b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c +@@ -260,7 +260,3 @@ void rtl8723a_init_dm_priv(struct rtw_adapter *Adapter) + memset(pdmpriv, 0, sizeof(struct dm_priv)); + Init_ODM_ComInfo_8723a(Adapter); + } +- +-void rtl8723a_deinit_dm_priv(struct rtw_adapter *Adapter) +-{ +-} +diff --git a/drivers/staging/rtl8723au/include/rtl8723a_dm.h b/drivers/staging/rtl8723au/include/rtl8723a_dm.h +index ccac672..57be347 100644 +--- a/drivers/staging/rtl8723au/include/rtl8723a_dm.h ++++ b/drivers/staging/rtl8723au/include/rtl8723a_dm.h +@@ -134,7 +134,6 @@ struct dm_priv + /* */ + + void rtl8723a_init_dm_priv(struct rtw_adapter *padapter); +-void rtl8723a_deinit_dm_priv(struct rtw_adapter *padapter); + + void rtl8723a_InitHalDm(struct rtw_adapter *padapter); + void rtl8723a_HalDmWatchDog(struct rtw_adapter *padapter); +diff --git a/drivers/staging/rtl8723au/os_dep/os_intfs.c b/drivers/staging/rtl8723au/os_dep/os_intfs.c +index d72305d..a081e7a 100644 +--- a/drivers/staging/rtl8723au/os_dep/os_intfs.c ++++ b/drivers/staging/rtl8723au/os_dep/os_intfs.c +@@ -557,8 +557,6 @@ void rtw_cancel_all_timer23a(struct rtw_adapter *padapter) + ("%s:cancel set_scan_deny_timer!\n", __func__)); + + del_timer_sync(&padapter->recvpriv.signal_stat_timer); +- /* cancel dm timer */ +- rtl8723a_deinit_dm_priv(padapter); + } + + int rtw_free_drv_sw23a(struct rtw_adapter *padapter) diff --git a/debian/patches/features/all/r8723au/0216-staging-rtl8723au-Remove-no-op-function-dm_CheckStat.patch b/debian/patches/features/all/r8723au/0216-staging-rtl8723au-Remove-no-op-function-dm_CheckStat.patch new file mode 100644 index 000000000..778c3e577 --- /dev/null +++ b/debian/patches/features/all/r8723au/0216-staging-rtl8723au-Remove-no-op-function-dm_CheckStat.patch @@ -0,0 +1,37 @@ +From: Jes Sorensen +Date: Mon, 21 Jul 2014 11:24:47 +0200 +Subject: [216/249] staging: rtl8723au: Remove no-op function + dm_CheckStatistics() +Origin: https://git.kernel.org/linus/45555706d2361088c9e1209638b6ade0bb4bdd41 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/rtl8723a_dm.c | 7 ------- + 1 file changed, 7 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c +index 4a3d2e1..3fb54fc 100644 +--- a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c ++++ b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c +@@ -34,10 +34,6 @@ + /* Global var */ + /* */ + +-static void dm_CheckStatistics(struct rtw_adapter *Adapter) +-{ +-} +- + static void dm_CheckPbcGPIO(struct rtw_adapter *padapter) + { + u8 tmp1byte; +@@ -225,9 +221,6 @@ rtl8723a_HalDmWatchDog( + bFwPSAwake = rtl8723a_get_fwlps_rf_on(Adapter); + + if (!bFwCurrentInPSMode && bFwPSAwake) { +- /* Calculate Tx/Rx statistics. */ +- dm_CheckStatistics(Adapter); +- + /* Read REG_INIDATA_RATE_SEL value for TXDESC. */ + if (check_fwstate(&Adapter->mlmepriv, WIFI_STATION_STATE)) { + pdmpriv->INIDATA_RATE[0] = rtl8723au_read8(Adapter, REG_INIDATA_RATE_SEL) & 0x3f; diff --git a/debian/patches/features/all/r8723au/0217-staging-rtl8723au-Remove-write-only-struct-dm_priv-D.patch b/debian/patches/features/all/r8723au/0217-staging-rtl8723au-Remove-write-only-struct-dm_priv-D.patch new file mode 100644 index 000000000..becb5539c --- /dev/null +++ b/debian/patches/features/all/r8723au/0217-staging-rtl8723au-Remove-write-only-struct-dm_priv-D.patch @@ -0,0 +1,37 @@ +From: Jes Sorensen +Date: Mon, 21 Jul 2014 11:24:48 +0200 +Subject: [217/249] staging: rtl8723au: Remove write-only struct + dm_priv->DM_Type variable +Origin: https://git.kernel.org/linus/a0a88236a3c0d4696c141c09522d87e221cc537a + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/rtl8723a_dm.c | 1 - + drivers/staging/rtl8723au/include/rtl8723a_dm.h | 1 - + 2 files changed, 2 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c +index 3fb54fc..b7ed764 100644 +--- a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c ++++ b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c +@@ -185,7 +185,6 @@ void rtl8723a_InitHalDm(struct rtw_adapter *Adapter) + struct dm_odm_t *pDM_Odm = &pHalData->odmpriv; + u8 i; + +- pdmpriv->DM_Type = DM_Type_ByDriver; + pdmpriv->DMFlag = DYNAMIC_FUNC_DISABLE; + + #ifdef CONFIG_8723AU_BT_COEXIST +diff --git a/drivers/staging/rtl8723au/include/rtl8723a_dm.h b/drivers/staging/rtl8723au/include/rtl8723a_dm.h +index 57be347..5ee3af4 100644 +--- a/drivers/staging/rtl8723au/include/rtl8723a_dm.h ++++ b/drivers/staging/rtl8723au/include/rtl8723a_dm.h +@@ -39,7 +39,6 @@ enum{ + /* duplicate code,will move to ODM ######### */ + struct dm_priv + { +- u8 DM_Type; + u8 DMFlag; + u8 InitDMFlag; + u32 InitODMFlag; diff --git a/debian/patches/features/all/r8723au/0218-staging-rtl8723au-Remove-write-only-variables-struct.patch b/debian/patches/features/all/r8723au/0218-staging-rtl8723au-Remove-write-only-variables-struct.patch new file mode 100644 index 000000000..53387425c --- /dev/null +++ b/debian/patches/features/all/r8723au/0218-staging-rtl8723au-Remove-write-only-variables-struct.patch @@ -0,0 +1,64 @@ +From: Jes Sorensen +Date: Mon, 21 Jul 2014 11:24:49 +0200 +Subject: [218/249] staging: rtl8723au: Remove write-only variables struct + dm_priv->{Init,}DMFlag +Origin: https://git.kernel.org/linus/353cb50dc7d42a062f0cd96c20543384fbf630eb + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/hal_com.c | 6 ++---- + drivers/staging/rtl8723au/hal/rtl8723a_dm.c | 7 ------- + drivers/staging/rtl8723au/include/rtl8723a_dm.h | 2 -- + 3 files changed, 2 insertions(+), 13 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/hal_com.c b/drivers/staging/rtl8723au/hal/hal_com.c +index 8718151..4a66ed5 100644 +--- a/drivers/staging/rtl8723au/hal/hal_com.c ++++ b/drivers/staging/rtl8723au/hal/hal_com.c +@@ -867,12 +867,10 @@ void rtl8723a_odm_support_ability_set(struct rtw_adapter *padapter, u32 val) + { + struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); + +- if (val == DYNAMIC_ALL_FUNC_ENABLE) { +- pHalData->dmpriv.DMFlag = pHalData->dmpriv.InitDMFlag; ++ if (val == DYNAMIC_ALL_FUNC_ENABLE) + pHalData->odmpriv.SupportAbility = pHalData->dmpriv.InitODMFlag; +- } else { ++ else + pHalData->odmpriv.SupportAbility |= val; +- } + } + + void rtl8723a_odm_support_ability_clr(struct rtw_adapter *padapter, u32 val) +diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c +index b7ed764..479ce7a 100644 +--- a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c ++++ b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c +@@ -185,13 +185,6 @@ void rtl8723a_InitHalDm(struct rtw_adapter *Adapter) + struct dm_odm_t *pDM_Odm = &pHalData->odmpriv; + u8 i; + +- pdmpriv->DMFlag = DYNAMIC_FUNC_DISABLE; +- +-#ifdef CONFIG_8723AU_BT_COEXIST +- pdmpriv->DMFlag |= DYNAMIC_FUNC_BT; +-#endif +- pdmpriv->InitDMFlag = pdmpriv->DMFlag; +- + Update_ODM_ComInfo_8723a(Adapter); + ODM23a_DMInit(pDM_Odm); + /* Save REG_INIDATA_RATE_SEL value for TXDESC. */ +diff --git a/drivers/staging/rtl8723au/include/rtl8723a_dm.h b/drivers/staging/rtl8723au/include/rtl8723a_dm.h +index 5ee3af4..1811222 100644 +--- a/drivers/staging/rtl8723au/include/rtl8723a_dm.h ++++ b/drivers/staging/rtl8723au/include/rtl8723a_dm.h +@@ -39,8 +39,6 @@ enum{ + /* duplicate code,will move to ODM ######### */ + struct dm_priv + { +- u8 DMFlag; +- u8 InitDMFlag; + u32 InitODMFlag; + + /* Upper and Lower Signal threshold for Rate Adaptive*/ diff --git a/debian/patches/features/all/r8723au/0219-staging-rtl8723au-Remove-ODM_CMNINFO_-RT-X_UNI-and-r.patch b/debian/patches/features/all/r8723au/0219-staging-rtl8723au-Remove-ODM_CMNINFO_-RT-X_UNI-and-r.patch new file mode 100644 index 000000000..02b7c669a --- /dev/null +++ b/debian/patches/features/all/r8723au/0219-staging-rtl8723au-Remove-ODM_CMNINFO_-RT-X_UNI-and-r.patch @@ -0,0 +1,79 @@ +From: Jes Sorensen +Date: Mon, 21 Jul 2014 11:24:50 +0200 +Subject: [219/249] staging: rtl8723au: Remove ODM_CMNINFO_[RT]X_UNI and + related code +Origin: https://git.kernel.org/linus/65064399c2a85a2ab76e0089f2c20f766a962bc7 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/odm.c | 8 -------- + drivers/staging/rtl8723au/hal/rtl8723a_dm.c | 4 ---- + drivers/staging/rtl8723au/include/odm.h | 6 ------ + 3 files changed, 18 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/odm.c b/drivers/staging/rtl8723au/hal/odm.c +index ed6d3af..4f25606 100644 +--- a/drivers/staging/rtl8723au/hal/odm.c ++++ b/drivers/staging/rtl8723au/hal/odm.c +@@ -421,12 +421,6 @@ void ODM23a_CmnInfoHook(struct dm_odm_t *pDM_Odm, + case ODM_CMNINFO_MAC_PHY_MODE: + pDM_Odm->pMacPhyMode = (u8 *)pValue; + break; +- case ODM_CMNINFO_TX_UNI: +- pDM_Odm->pNumTxBytesUnicast = (u64 *)pValue; +- break; +- case ODM_CMNINFO_RX_UNI: +- pDM_Odm->pNumRxBytesUnicast = (u64 *)pValue; +- break; + case ODM_CMNINFO_WM_MODE: + pDM_Odm->pWirelessMode = (u8 *)pValue; + break; +@@ -600,8 +594,6 @@ void odm_CmnInfoInit_Debug23a(struct dm_odm_t *pDM_Odm) + void odm_CmnInfoHook_Debug23a(struct dm_odm_t *pDM_Odm) + { + ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("odm_CmnInfoHook_Debug23a ==>\n")); +- ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("pNumTxBytesUnicast =%llu\n", *(pDM_Odm->pNumTxBytesUnicast))); +- ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("pNumRxBytesUnicast =%llu\n", *(pDM_Odm->pNumRxBytesUnicast))); + ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("pWirelessMode = 0x%x\n", *(pDM_Odm->pWirelessMode))); + ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("pSecChOffset =%d\n", *(pDM_Odm->pSecChOffset))); + ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("pSecurity =%d\n", *(pDM_Odm->pSecurity))); +diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c +index 479ce7a..37a11c3 100644 +--- a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c ++++ b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c +@@ -154,10 +154,6 @@ static void Update_ODM_ComInfo_8723a(struct rtw_adapter *Adapter) + + ODM_CmnInfoUpdate23a(pDM_Odm, ODM_CMNINFO_ABILITY, pdmpriv->InitODMFlag); + +- ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_TX_UNI, +- &Adapter->xmitpriv.tx_bytes); +- ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_RX_UNI, +- &Adapter->recvpriv.rx_bytes); + ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_WM_MODE, + &pmlmeext->cur_wireless_mode); + ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_SEC_CHNL_OFFSET, +diff --git a/drivers/staging/rtl8723au/include/odm.h b/drivers/staging/rtl8723au/include/odm.h +index 9c8e7d8..d549b7f 100644 +--- a/drivers/staging/rtl8723au/include/odm.h ++++ b/drivers/staging/rtl8723au/include/odm.h +@@ -321,8 +321,6 @@ enum odm_cmninfo { + /* Dynamic value: */ + /* */ + ODM_CMNINFO_MAC_PHY_MODE, /* enum odm_mac_phy_mode */ +- ODM_CMNINFO_TX_UNI, +- ODM_CMNINFO_RX_UNI, + ODM_CMNINFO_WM_MODE, /* enum odm_wireless_mode */ + ODM_CMNINFO_BAND, /* enum odm_band_type */ + ODM_CMNINFO_SEC_CHNL_OFFSET, /* enum odm_sec_chnl_offset */ +@@ -715,10 +713,6 @@ struct dm_odm_t { + + /* MAC PHY Mode SMSP/DMSP/DMDP = 0/1/2 */ + u8 *pMacPhyMode; +- /* TX Unicast byte count */ +- u64 *pNumTxBytesUnicast; +- /* RX Unicast byte count */ +- u64 *pNumRxBytesUnicast; + /* Wireless mode B/G/A/N = BIT0/BIT1/BIT2/BIT3 */ + u8 *pWirelessMode; /* enum odm_wireless_mode */ + /* Frequence band 2.4G/5G = 0/1 */ diff --git a/debian/patches/features/all/r8723au/0220-staging-rtl8723au-Remove-useless-ODM_CMNINFO_-WM_MOD.patch b/debian/patches/features/all/r8723au/0220-staging-rtl8723au-Remove-useless-ODM_CMNINFO_-WM_MOD.patch new file mode 100644 index 000000000..89a8f6bf3 --- /dev/null +++ b/debian/patches/features/all/r8723au/0220-staging-rtl8723au-Remove-useless-ODM_CMNINFO_-WM_MOD.patch @@ -0,0 +1,84 @@ +From: Jes Sorensen +Date: Mon, 21 Jul 2014 11:24:51 +0200 +Subject: [220/249] staging: rtl8723au: Remove useless ODM_CMNINFO_{WM_MODE, + BAND} related code +Origin: https://git.kernel.org/linus/c17a42655644c06598bb0efbb7fdb24393fb66f8 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/odm.c | 8 -------- + drivers/staging/rtl8723au/hal/rtl8723a_dm.c | 2 -- + drivers/staging/rtl8723au/include/odm.h | 6 ------ + 3 files changed, 16 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/odm.c b/drivers/staging/rtl8723au/hal/odm.c +index 4f25606..d931169 100644 +--- a/drivers/staging/rtl8723au/hal/odm.c ++++ b/drivers/staging/rtl8723au/hal/odm.c +@@ -421,12 +421,6 @@ void ODM23a_CmnInfoHook(struct dm_odm_t *pDM_Odm, + case ODM_CMNINFO_MAC_PHY_MODE: + pDM_Odm->pMacPhyMode = (u8 *)pValue; + break; +- case ODM_CMNINFO_WM_MODE: +- pDM_Odm->pWirelessMode = (u8 *)pValue; +- break; +- case ODM_CMNINFO_BAND: +- pDM_Odm->pBandType = (u8 *)pValue; +- break; + case ODM_CMNINFO_SEC_CHNL_OFFSET: + pDM_Odm->pSecChOffset = (u8 *)pValue; + break; +@@ -594,7 +588,6 @@ void odm_CmnInfoInit_Debug23a(struct dm_odm_t *pDM_Odm) + void odm_CmnInfoHook_Debug23a(struct dm_odm_t *pDM_Odm) + { + ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("odm_CmnInfoHook_Debug23a ==>\n")); +- ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("pWirelessMode = 0x%x\n", *(pDM_Odm->pWirelessMode))); + ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("pSecChOffset =%d\n", *(pDM_Odm->pSecChOffset))); + ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("pSecurity =%d\n", *(pDM_Odm->pSecurity))); + ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("pBandWidth =%d\n", *(pDM_Odm->pBandWidth))); +@@ -1193,7 +1186,6 @@ u32 ODM_Get_Rate_Bitmap23a(struct dm_odm_t *pDM_Odm, + struct sta_info *pEntry; + u32 rate_bitmap = 0x0fffffff; + u8 WirelessMode; +- /* u8 WirelessMode =*(pDM_Odm->pWirelessMode); */ + + pEntry = pDM_Odm->pODM_StaInfo[macid]; + if (!pEntry) +diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c +index 37a11c3..fe4754f 100644 +--- a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c ++++ b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c +@@ -154,8 +154,6 @@ static void Update_ODM_ComInfo_8723a(struct rtw_adapter *Adapter) + + ODM_CmnInfoUpdate23a(pDM_Odm, ODM_CMNINFO_ABILITY, pdmpriv->InitODMFlag); + +- ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_WM_MODE, +- &pmlmeext->cur_wireless_mode); + ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_SEC_CHNL_OFFSET, + &pHalData->nCur40MhzPrimeSC); + ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_SEC_MODE, +diff --git a/drivers/staging/rtl8723au/include/odm.h b/drivers/staging/rtl8723au/include/odm.h +index d549b7f..6fa7de6 100644 +--- a/drivers/staging/rtl8723au/include/odm.h ++++ b/drivers/staging/rtl8723au/include/odm.h +@@ -321,8 +321,6 @@ enum odm_cmninfo { + /* Dynamic value: */ + /* */ + ODM_CMNINFO_MAC_PHY_MODE, /* enum odm_mac_phy_mode */ +- ODM_CMNINFO_WM_MODE, /* enum odm_wireless_mode */ +- ODM_CMNINFO_BAND, /* enum odm_band_type */ + ODM_CMNINFO_SEC_CHNL_OFFSET, /* enum odm_sec_chnl_offset */ + ODM_CMNINFO_SEC_MODE, /* enum odm_security */ + ODM_CMNINFO_BW, /* enum odm_band_width */ +@@ -713,10 +711,6 @@ struct dm_odm_t { + + /* MAC PHY Mode SMSP/DMSP/DMDP = 0/1/2 */ + u8 *pMacPhyMode; +- /* Wireless mode B/G/A/N = BIT0/BIT1/BIT2/BIT3 */ +- u8 *pWirelessMode; /* enum odm_wireless_mode */ +- /* Frequence band 2.4G/5G = 0/1 */ +- u8 *pBandType; + /* Secondary channel offset don't_care/below/above = 0/1/2 */ + u8 *pSecChOffset; + /* Security mode Open/WEP/AES/TKIP = 0/1/2/3 */ diff --git a/debian/patches/features/all/r8723au/0221-staging-rtl8723au-Remove-another-pile-of-useless-ODM.patch b/debian/patches/features/all/r8723au/0221-staging-rtl8723au-Remove-another-pile-of-useless-ODM.patch new file mode 100644 index 000000000..20a3b9e4f --- /dev/null +++ b/debian/patches/features/all/r8723au/0221-staging-rtl8723au-Remove-another-pile-of-useless-ODM.patch @@ -0,0 +1,123 @@ +From: Jes Sorensen +Date: Mon, 21 Jul 2014 11:24:52 +0200 +Subject: [221/249] staging: rtl8723au: Remove another pile of useless ODM + variables +Origin: https://git.kernel.org/linus/c5f3dc2fef61458efd8ef08c3f9bd7b15c143cfd + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/odm.c | 16 ---------------- + drivers/staging/rtl8723au/hal/rtl8723a_dm.c | 5 +---- + drivers/staging/rtl8723au/include/odm.h | 16 +--------------- + 3 files changed, 2 insertions(+), 35 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/odm.c b/drivers/staging/rtl8723au/hal/odm.c +index d931169..0c4756c 100644 +--- a/drivers/staging/rtl8723au/hal/odm.c ++++ b/drivers/staging/rtl8723au/hal/odm.c +@@ -418,30 +418,15 @@ void ODM23a_CmnInfoHook(struct dm_odm_t *pDM_Odm, + /* Hook call by reference pointer. */ + switch (CmnInfo) { + /* Dynamic call by reference pointer. */ +- case ODM_CMNINFO_MAC_PHY_MODE: +- pDM_Odm->pMacPhyMode = (u8 *)pValue; +- break; + case ODM_CMNINFO_SEC_CHNL_OFFSET: + pDM_Odm->pSecChOffset = (u8 *)pValue; + break; +- case ODM_CMNINFO_SEC_MODE: +- pDM_Odm->pSecurity = (u8 *)pValue; +- break; + case ODM_CMNINFO_BW: + pDM_Odm->pBandWidth = (u8 *)pValue; + break; + case ODM_CMNINFO_CHNL: + pDM_Odm->pChannel = (u8 *)pValue; + break; +- case ODM_CMNINFO_DMSP_GET_VALUE: +- pDM_Odm->pbGetValueFromOtherMac = (bool *)pValue; +- break; +- case ODM_CMNINFO_BUDDY_ADAPTOR: +- pDM_Odm->pBuddyAdapter = (struct rtw_adapter **)pValue; +- break; +- case ODM_CMNINFO_DMSP_IS_MASTER: +- pDM_Odm->pbMasterOfDMSP = (bool *)pValue; +- break; + case ODM_CMNINFO_SCAN: + pDM_Odm->pbScanInProcess = (bool *)pValue; + break; +@@ -589,7 +574,6 @@ void odm_CmnInfoHook_Debug23a(struct dm_odm_t *pDM_Odm) + { + ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("odm_CmnInfoHook_Debug23a ==>\n")); + ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("pSecChOffset =%d\n", *(pDM_Odm->pSecChOffset))); +- ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("pSecurity =%d\n", *(pDM_Odm->pSecurity))); + ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("pBandWidth =%d\n", *(pDM_Odm->pBandWidth))); + ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("pChannel =%d\n", *(pDM_Odm->pChannel))); + +diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c +index fe4754f..06b1496 100644 +--- a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c ++++ b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c +@@ -133,8 +133,7 @@ static void Init_ODM_ComInfo_8723a(struct rtw_adapter *Adapter) + + static void Update_ODM_ComInfo_8723a(struct rtw_adapter *Adapter) + { +- struct mlme_ext_priv *pmlmeext = &Adapter->mlmeextpriv; +- struct mlme_priv *pmlmepriv = &Adapter->mlmepriv; ++ struct mlme_priv *pmlmepriv = &Adapter->mlmepriv; + struct pwrctrl_priv *pwrctrlpriv = &Adapter->pwrctrlpriv; + struct hal_data_8723a *pHalData = GET_HAL_DATA(Adapter); + struct dm_odm_t *pDM_Odm = &pHalData->odmpriv; +@@ -156,8 +155,6 @@ static void Update_ODM_ComInfo_8723a(struct rtw_adapter *Adapter) + + ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_SEC_CHNL_OFFSET, + &pHalData->nCur40MhzPrimeSC); +- ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_SEC_MODE, +- &Adapter->securitypriv.dot11PrivacyAlgrthm); + ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_BW, + &pHalData->CurrentChannelBW); + ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_CHNL, +diff --git a/drivers/staging/rtl8723au/include/odm.h b/drivers/staging/rtl8723au/include/odm.h +index 6fa7de6..eaee966 100644 +--- a/drivers/staging/rtl8723au/include/odm.h ++++ b/drivers/staging/rtl8723au/include/odm.h +@@ -320,15 +320,10 @@ enum odm_cmninfo { + /* */ + /* Dynamic value: */ + /* */ +- ODM_CMNINFO_MAC_PHY_MODE, /* enum odm_mac_phy_mode */ + ODM_CMNINFO_SEC_CHNL_OFFSET, /* enum odm_sec_chnl_offset */ +- ODM_CMNINFO_SEC_MODE, /* enum odm_security */ +- ODM_CMNINFO_BW, /* enum odm_band_width */ ++ ODM_CMNINFO_BW, /* enum odm_band_width */ + ODM_CMNINFO_CHNL, + +- ODM_CMNINFO_DMSP_GET_VALUE, +- ODM_CMNINFO_BUDDY_ADAPTOR, +- ODM_CMNINFO_DMSP_IS_MASTER, + ODM_CMNINFO_SCAN, + ODM_CMNINFO_POWER_SAVING, + ODM_CMNINFO_ONE_PATH_CCA, /* enum odm_cca_path */ +@@ -709,21 +704,12 @@ struct dm_odm_t { + bool bool_temp; + struct rtw_adapter *PADAPTER_temp; + +- /* MAC PHY Mode SMSP/DMSP/DMDP = 0/1/2 */ +- u8 *pMacPhyMode; + /* Secondary channel offset don't_care/below/above = 0/1/2 */ + u8 *pSecChOffset; +- /* Security mode Open/WEP/AES/TKIP = 0/1/2/3 */ +- u8 *pSecurity; + /* BW info 20M/40M/80M = 0/1/2 */ + u8 *pBandWidth; + /* Central channel location Ch1/Ch2/.... */ + u8 *pChannel; /* central channel number */ +- /* Common info for 92D DMSP */ +- +- bool *pbGetValueFromOtherMac; +- struct rtw_adapter **pBuddyAdapter; +- bool *pbMasterOfDMSP; /* MAC0: master, MAC1: slave */ + /* Common info for Status */ + bool *pbScanInProcess; + bool *pbPowerSaving; diff --git a/debian/patches/features/all/r8723au/0222-staging-rtl8723au-Remove-another-pile-of-awful-unuse.patch b/debian/patches/features/all/r8723au/0222-staging-rtl8723au-Remove-another-pile-of-awful-unuse.patch new file mode 100644 index 000000000..44b8bb481 --- /dev/null +++ b/debian/patches/features/all/r8723au/0222-staging-rtl8723au-Remove-another-pile-of-awful-unuse.patch @@ -0,0 +1,97 @@ +From: Jes Sorensen +Date: Mon, 21 Jul 2014 11:24:53 +0200 +Subject: [222/249] staging: rtl8723au: Remove another pile of awful unused ODM + variables +Origin: https://git.kernel.org/linus/42f9f19ef59926c5d881ffce9fd61e0b9b708678 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/odm.c | 18 ------------------ + drivers/staging/rtl8723au/hal/rtl8723a_dm.c | 2 -- + drivers/staging/rtl8723au/include/odm.h | 16 ---------------- + 3 files changed, 36 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/odm.c b/drivers/staging/rtl8723au/hal/odm.c +index 0c4756c..491ba9c 100644 +--- a/drivers/staging/rtl8723au/hal/odm.c ++++ b/drivers/staging/rtl8723au/hal/odm.c +@@ -433,24 +433,6 @@ void ODM23a_CmnInfoHook(struct dm_odm_t *pDM_Odm, + case ODM_CMNINFO_POWER_SAVING: + pDM_Odm->pbPowerSaving = (bool *)pValue; + break; +- case ODM_CMNINFO_ONE_PATH_CCA: +- pDM_Odm->pOnePathCCA = (u8 *)pValue; +- break; +- case ODM_CMNINFO_DRV_STOP: +- pDM_Odm->pbDriverStopped = (bool *)pValue; +- break; +- case ODM_CMNINFO_PNP_IN: +- pDM_Odm->pbDriverIsGoingToPnpSetPowerSleep = (bool *)pValue; +- break; +- case ODM_CMNINFO_INIT_ON: +- pDM_Odm->pinit_adpt_in_progress = (bool *)pValue; +- break; +- case ODM_CMNINFO_ANT_TEST: +- pDM_Odm->pAntennaTest = (u8 *)pValue; +- break; +- case ODM_CMNINFO_NET_CLOSED: +- pDM_Odm->pbNet_closed = (bool *)pValue; +- break; + /* To remove the compiler warning, must add an empty default statement to handle the other values. */ + default: + /* do nothing */ +diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c +index 06b1496..4383c43 100644 +--- a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c ++++ b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c +@@ -159,8 +159,6 @@ static void Update_ODM_ComInfo_8723a(struct rtw_adapter *Adapter) + &pHalData->CurrentChannelBW); + ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_CHNL, + &pHalData->CurrentChannel); +- ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_NET_CLOSED, &Adapter->net_closed); +- + ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_SCAN, &pmlmepriv->bScanInProcess); + ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_POWER_SAVING, + &pwrctrlpriv->bpower_saving); +diff --git a/drivers/staging/rtl8723au/include/odm.h b/drivers/staging/rtl8723au/include/odm.h +index eaee966..7598e61 100644 +--- a/drivers/staging/rtl8723au/include/odm.h ++++ b/drivers/staging/rtl8723au/include/odm.h +@@ -326,12 +326,6 @@ enum odm_cmninfo { + + ODM_CMNINFO_SCAN, + ODM_CMNINFO_POWER_SAVING, +- ODM_CMNINFO_ONE_PATH_CCA, /* enum odm_cca_path */ +- ODM_CMNINFO_DRV_STOP, +- ODM_CMNINFO_PNP_IN, +- ODM_CMNINFO_INIT_ON, +- ODM_CMNINFO_ANT_TEST, +- ODM_CMNINFO_NET_CLOSED, + ODM_CMNINFO_MP_MODE, + + ODM_CMNINFO_WIFI_DIRECT, +@@ -713,11 +707,6 @@ struct dm_odm_t { + /* Common info for Status */ + bool *pbScanInProcess; + bool *pbPowerSaving; +- /* CCA Path 2-path/path-A/path-B = 0/1/2; using enum odm_cca_path. */ +- u8 *pOnePathCCA; +- /* pMgntInfo->AntennaTest */ +- u8 *pAntennaTest; +- bool *pbNet_closed; + /* POINTER REFERENCE----------- */ + /* */ + /* CALL BY VALUE------------- */ +@@ -783,11 +772,6 @@ struct dm_odm_t { + /* ================================================== */ + /* */ + +- /* common */ +- bool *pbDriverStopped; +- bool *pbDriverIsGoingToPnpSetPowerSleep; +- bool *pinit_adpt_in_progress; +- + /* PSD */ + bool bUserAssignLevel; + u8 RSSI_BT; /* come from BT */ diff --git a/debian/patches/features/all/r8723au/0223-staging-rtl8723au-We-don-t-need-two-APIs-to-set-pHal.patch b/debian/patches/features/all/r8723au/0223-staging-rtl8723au-We-don-t-need-two-APIs-to-set-pHal.patch new file mode 100644 index 000000000..fb6dc1c01 --- /dev/null +++ b/debian/patches/features/all/r8723au/0223-staging-rtl8723au-We-don-t-need-two-APIs-to-set-pHal.patch @@ -0,0 +1,64 @@ +From: Jes Sorensen +Date: Mon, 21 Jul 2014 11:24:54 +0200 +Subject: [223/249] staging: rtl8723au: We don't need two APIs to set + pHalData->odmpriv.SupportAbility +Origin: https://git.kernel.org/linus/09b052a90976393c371cd411475b88b3778071ee + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/odm.c | 6 ------ + drivers/staging/rtl8723au/hal/rtl8723a_dm.c | 3 +-- + drivers/staging/rtl8723au/include/odm.h | 1 - + 3 files changed, 1 insertion(+), 9 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/odm.c b/drivers/staging/rtl8723au/hal/odm.c +index 491ba9c..c239b52 100644 +--- a/drivers/staging/rtl8723au/hal/odm.c ++++ b/drivers/staging/rtl8723au/hal/odm.c +@@ -344,9 +344,6 @@ void ODM_CmnInfoInit23a(struct dm_odm_t *pDM_Odm, + /* */ + switch (CmnInfo) { + /* Fixed ODM value. */ +- case ODM_CMNINFO_ABILITY: +- pDM_Odm->SupportAbility = (u32)Value; +- break; + case ODM_CMNINFO_PLATFORM: + break; + case ODM_CMNINFO_INTERFACE: +@@ -461,9 +458,6 @@ void ODM_CmnInfoUpdate23a(struct dm_odm_t *pDM_Odm, u32 CmnInfo, u64 Value) + { + /* This init variable may be changed in run time. */ + switch (CmnInfo) { +- case ODM_CMNINFO_ABILITY: +- pDM_Odm->SupportAbility = (u32)Value; +- break; + case ODM_CMNINFO_RF_TYPE: + pDM_Odm->RFType = (u8)Value; + break; +diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c +index 4383c43..204b4ad 100644 +--- a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c ++++ b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c +@@ -150,8 +150,7 @@ static void Update_ODM_ComInfo_8723a(struct rtw_adapter *Adapter) + ODM_RF_TX_PWR_TRACK | + ODM_RF_CALIBRATION; + /* Pointer reference */ +- +- ODM_CmnInfoUpdate23a(pDM_Odm, ODM_CMNINFO_ABILITY, pdmpriv->InitODMFlag); ++ rtl8723a_odm_support_ability_set(Adapter, DYNAMIC_ALL_FUNC_ENABLE); + + ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_SEC_CHNL_OFFSET, + &pHalData->nCur40MhzPrimeSC); +diff --git a/drivers/staging/rtl8723au/include/odm.h b/drivers/staging/rtl8723au/include/odm.h +index 7598e61..546cbb5 100644 +--- a/drivers/staging/rtl8723au/include/odm.h ++++ b/drivers/staging/rtl8723au/include/odm.h +@@ -300,7 +300,6 @@ enum odm_cmninfo { + /* */ + + ODM_CMNINFO_PLATFORM = 0, +- ODM_CMNINFO_ABILITY, /* enum odm_ability */ + ODM_CMNINFO_INTERFACE, /* enum odm_interface_def */ + ODM_CMNINFO_MP_TEST_CHIP, + ODM_CMNINFO_IC_TYPE, /* enum odm_ic_type_def */ diff --git a/debian/patches/features/all/r8723au/0224-staging-rtl8723au-ODM_DMWatchdog23a-Take-a-struct-ha.patch b/debian/patches/features/all/r8723au/0224-staging-rtl8723au-ODM_DMWatchdog23a-Take-a-struct-ha.patch new file mode 100644 index 000000000..293bd77fe --- /dev/null +++ b/debian/patches/features/all/r8723au/0224-staging-rtl8723au-ODM_DMWatchdog23a-Take-a-struct-ha.patch @@ -0,0 +1,60 @@ +From: Jes Sorensen +Date: Mon, 21 Jul 2014 11:24:55 +0200 +Subject: [224/249] staging: rtl8723au: ODM_DMWatchdog23a(): Take a struct + hal_data_8723a * +Origin: https://git.kernel.org/linus/ec8884fb20912e866d5f4ce34cdb509c146dbde1 + +This will allow us to access variables in the hal_data struct +directly, and get rid of the horrendous ODM_CMNINFO spaghetti API. + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/odm.c | 4 +++- + drivers/staging/rtl8723au/hal/rtl8723a_dm.c | 2 +- + drivers/staging/rtl8723au/include/odm.h | 3 ++- + 3 files changed, 6 insertions(+), 3 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/odm.c b/drivers/staging/rtl8723au/hal/odm.c +index c239b52..e4a9225 100644 +--- a/drivers/staging/rtl8723au/hal/odm.c ++++ b/drivers/staging/rtl8723au/hal/odm.c +@@ -287,8 +287,10 @@ void ODM23a_DMInit(struct dm_odm_t *pDM_Odm) + /* 2011/09/20 MH This is the entry pointer for all team to execute HW out source DM. */ + /* You can not add any dummy function here, be care, you can only use DM structure */ + /* to perform any new ODM_DM. */ +-void ODM_DMWatchdog23a(struct dm_odm_t *pDM_Odm) ++void ODM_DMWatchdog23a(struct hal_data_8723a *pHalData) + { ++ struct dm_odm_t *pDM_Odm = &pHalData->odmpriv; ++ + /* 2012.05.03 Luke: For all IC series */ + odm_CmnInfoHook_Debug23a(pDM_Odm); + odm_CmnInfoUpdate_Debug23a(pDM_Odm); +diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c +index 204b4ad..272c1e7 100644 +--- a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c ++++ b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c +@@ -216,7 +216,7 @@ rtl8723a_HalDmWatchDog( + bLinked = true; + + ODM_CmnInfoUpdate23a(&pHalData->odmpriv, ODM_CMNINFO_LINK, bLinked); +- ODM_DMWatchdog23a(&pHalData->odmpriv); ++ ODM_DMWatchdog23a(pHalData); + + skip_dm: + +diff --git a/drivers/staging/rtl8723au/include/odm.h b/drivers/staging/rtl8723au/include/odm.h +index 546cbb5..b2d8983 100644 +--- a/drivers/staging/rtl8723au/include/odm.h ++++ b/drivers/staging/rtl8723au/include/odm.h +@@ -999,7 +999,8 @@ u32 ODM_Get_Rate_Bitmap23a(struct dm_odm_t *pDM_Odm, u32 macid, u32 ra_mask, u8 + + void ODM23a_DMInit(struct dm_odm_t *pDM_Odm); + +-void ODM_DMWatchdog23a(struct dm_odm_t *pDM_Odm); /* For common use in the future */ ++struct hal_data_8723a; ++void ODM_DMWatchdog23a(struct hal_data_8723a *pHalData); + + void ODM_CmnInfoInit23a(struct dm_odm_t *pDM_Odm, enum odm_cmninfo CmnInfo, u32 Value); + diff --git a/debian/patches/features/all/r8723au/0225-staging-rtl8723au-Eliminate-ugly-ODM_CMNINFO_SEC_CHN.patch b/debian/patches/features/all/r8723au/0225-staging-rtl8723au-Eliminate-ugly-ODM_CMNINFO_SEC_CHN.patch new file mode 100644 index 000000000..d257a32bf --- /dev/null +++ b/debian/patches/features/all/r8723au/0225-staging-rtl8723au-Eliminate-ugly-ODM_CMNINFO_SEC_CHN.patch @@ -0,0 +1,110 @@ +From: Jes Sorensen +Date: Mon, 21 Jul 2014 11:24:56 +0200 +Subject: [225/249] staging: rtl8723au: Eliminate ugly + ODM_CMNINFO_SEC_CHNL_OFFSET usage +Origin: https://git.kernel.org/linus/91a2916a82f326c9836bc2d3e2dad5f3b5405836 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/odm.c | 17 +++++++---------- + drivers/staging/rtl8723au/hal/rtl8723a_dm.c | 2 -- + drivers/staging/rtl8723au/include/odm.h | 3 --- + 3 files changed, 7 insertions(+), 15 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/odm.c b/drivers/staging/rtl8723au/hal/odm.c +index e4a9225..aa310a3 100644 +--- a/drivers/staging/rtl8723au/hal/odm.c ++++ b/drivers/staging/rtl8723au/hal/odm.c +@@ -166,7 +166,7 @@ u8 CCKSwingTable_Ch1423A[CCK_TABLE_SIZE][8] = { + /* START------------COMMON INFO RELATED--------------- */ + void odm_CommonInfoSelfInit23a(struct dm_odm_t *pDM_Odm); + +-void odm_CommonInfoSelfUpdate23a(struct dm_odm_t *pDM_Odm); ++static void odm_CommonInfoSelfUpdate(struct hal_data_8723a *pHalData); + + void odm_CmnInfoInit_Debug23a(struct dm_odm_t *pDM_Odm); + +@@ -294,7 +294,7 @@ void ODM_DMWatchdog23a(struct hal_data_8723a *pHalData) + /* 2012.05.03 Luke: For all IC series */ + odm_CmnInfoHook_Debug23a(pDM_Odm); + odm_CmnInfoUpdate_Debug23a(pDM_Odm); +- odm_CommonInfoSelfUpdate23a(pDM_Odm); ++ odm_CommonInfoSelfUpdate(pHalData); + odm_FalseAlarmCounterStatistics23a(pDM_Odm); + odm_RSSIMonitorCheck23a(pDM_Odm); + +@@ -417,9 +417,6 @@ void ODM23a_CmnInfoHook(struct dm_odm_t *pDM_Odm, + /* Hook call by reference pointer. */ + switch (CmnInfo) { + /* Dynamic call by reference pointer. */ +- case ODM_CMNINFO_SEC_CHNL_OFFSET: +- pDM_Odm->pSecChOffset = (u8 *)pValue; +- break; + case ODM_CMNINFO_BW: + pDM_Odm->pBandWidth = (u8 *)pValue; + break; +@@ -502,16 +499,17 @@ void odm_CommonInfoSelfInit23a(struct dm_odm_t *pDM_Odm + ODM_InitDebugSetting23a(pDM_Odm); + } + +-void odm_CommonInfoSelfUpdate23a(struct dm_odm_t *pDM_Odm) ++static void odm_CommonInfoSelfUpdate(struct hal_data_8723a *pHalData) + { ++ struct dm_odm_t *pDM_Odm = &pHalData->odmpriv; ++ struct sta_info *pEntry; + u8 EntryCnt = 0; + u8 i; +- struct sta_info *pEntry; + + if (*(pDM_Odm->pBandWidth) == ODM_BW40M) { +- if (*(pDM_Odm->pSecChOffset) == 1) ++ if (pHalData->nCur40MhzPrimeSC == 1) + pDM_Odm->ControlChannel = *(pDM_Odm->pChannel) - 2; +- else if (*(pDM_Odm->pSecChOffset) == 2) ++ else if (pHalData->nCur40MhzPrimeSC == 2) + pDM_Odm->ControlChannel = *(pDM_Odm->pChannel) + 2; + } else { + pDM_Odm->ControlChannel = *(pDM_Odm->pChannel); +@@ -551,7 +549,6 @@ void odm_CmnInfoInit_Debug23a(struct dm_odm_t *pDM_Odm) + void odm_CmnInfoHook_Debug23a(struct dm_odm_t *pDM_Odm) + { + ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("odm_CmnInfoHook_Debug23a ==>\n")); +- ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("pSecChOffset =%d\n", *(pDM_Odm->pSecChOffset))); + ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("pBandWidth =%d\n", *(pDM_Odm->pBandWidth))); + ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("pChannel =%d\n", *(pDM_Odm->pChannel))); + +diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c +index 272c1e7..89ae2f2 100644 +--- a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c ++++ b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c +@@ -152,8 +152,6 @@ static void Update_ODM_ComInfo_8723a(struct rtw_adapter *Adapter) + /* Pointer reference */ + rtl8723a_odm_support_ability_set(Adapter, DYNAMIC_ALL_FUNC_ENABLE); + +- ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_SEC_CHNL_OFFSET, +- &pHalData->nCur40MhzPrimeSC); + ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_BW, + &pHalData->CurrentChannelBW); + ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_CHNL, +diff --git a/drivers/staging/rtl8723au/include/odm.h b/drivers/staging/rtl8723au/include/odm.h +index b2d8983..e361c45 100644 +--- a/drivers/staging/rtl8723au/include/odm.h ++++ b/drivers/staging/rtl8723au/include/odm.h +@@ -319,7 +319,6 @@ enum odm_cmninfo { + /* */ + /* Dynamic value: */ + /* */ +- ODM_CMNINFO_SEC_CHNL_OFFSET, /* enum odm_sec_chnl_offset */ + ODM_CMNINFO_BW, /* enum odm_band_width */ + ODM_CMNINFO_CHNL, + +@@ -697,8 +696,6 @@ struct dm_odm_t { + bool bool_temp; + struct rtw_adapter *PADAPTER_temp; + +- /* Secondary channel offset don't_care/below/above = 0/1/2 */ +- u8 *pSecChOffset; + /* BW info 20M/40M/80M = 0/1/2 */ + u8 *pBandWidth; + /* Central channel location Ch1/Ch2/.... */ diff --git a/debian/patches/features/all/r8723au/0226-staging-rtl8723au-Eliminate-ODM_CMNINFO_BW-usage.patch b/debian/patches/features/all/r8723au/0226-staging-rtl8723au-Eliminate-ODM_CMNINFO_BW-usage.patch new file mode 100644 index 000000000..4c60912f8 --- /dev/null +++ b/debian/patches/features/all/r8723au/0226-staging-rtl8723au-Eliminate-ODM_CMNINFO_BW-usage.patch @@ -0,0 +1,183 @@ +From: Jes Sorensen +Date: Mon, 21 Jul 2014 11:24:57 +0200 +Subject: [226/249] staging: rtl8723au: Eliminate ODM_CMNINFO_BW usage +Origin: https://git.kernel.org/linus/301fc630ef3ea2f1e855d409cf6be34924f67ac9 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/odm.c | 19 ++++++++----------- + drivers/staging/rtl8723au/hal/rtl8723a_cmd.c | 3 ++- + drivers/staging/rtl8723au/hal/rtl8723a_dm.c | 2 -- + drivers/staging/rtl8723au/hal/usb_halinit.c | 4 ++-- + drivers/staging/rtl8723au/include/odm.h | 17 +++-------------- + 5 files changed, 15 insertions(+), 30 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/odm.c b/drivers/staging/rtl8723au/hal/odm.c +index aa310a3..a15a8cb 100644 +--- a/drivers/staging/rtl8723au/hal/odm.c ++++ b/drivers/staging/rtl8723au/hal/odm.c +@@ -417,9 +417,6 @@ void ODM23a_CmnInfoHook(struct dm_odm_t *pDM_Odm, + /* Hook call by reference pointer. */ + switch (CmnInfo) { + /* Dynamic call by reference pointer. */ +- case ODM_CMNINFO_BW: +- pDM_Odm->pBandWidth = (u8 *)pValue; +- break; + case ODM_CMNINFO_CHNL: + pDM_Odm->pChannel = (u8 *)pValue; + break; +@@ -506,7 +503,7 @@ static void odm_CommonInfoSelfUpdate(struct hal_data_8723a *pHalData) + u8 EntryCnt = 0; + u8 i; + +- if (*(pDM_Odm->pBandWidth) == ODM_BW40M) { ++ if (pHalData->CurrentChannelBW == HT_CHANNEL_WIDTH_40) { + if (pHalData->nCur40MhzPrimeSC == 1) + pDM_Odm->ControlChannel = *(pDM_Odm->pChannel) - 2; + else if (pHalData->nCur40MhzPrimeSC == 2) +@@ -549,7 +546,6 @@ void odm_CmnInfoInit_Debug23a(struct dm_odm_t *pDM_Odm) + void odm_CmnInfoHook_Debug23a(struct dm_odm_t *pDM_Odm) + { + ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("odm_CmnInfoHook_Debug23a ==>\n")); +- ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("pBandWidth =%d\n", *(pDM_Odm->pBandWidth))); + ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("pChannel =%d\n", *(pDM_Odm->pChannel))); + + ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("pbScanInProcess =%d\n", *(pDM_Odm->pbScanInProcess))); +@@ -1137,11 +1133,10 @@ void odm_RateAdaptiveMaskInit23a(struct dm_odm_t *pDM_Odm) + pOdmRA->LowRSSIThresh = 20; + } + +-u32 ODM_Get_Rate_Bitmap23a(struct dm_odm_t *pDM_Odm, +- u32 macid, +- u32 ra_mask, +- u8 rssi_level) ++u32 ODM_Get_Rate_Bitmap23a(struct hal_data_8723a *pHalData, u32 macid, ++ u32 ra_mask, u8 rssi_level) + { ++ struct dm_odm_t *pDM_Odm = &pHalData->odmpriv; + struct sta_info *pEntry; + u32 rate_bitmap = 0x0fffffff; + u8 WirelessMode; +@@ -1181,7 +1176,8 @@ u32 ODM_Get_Rate_Bitmap23a(struct dm_odm_t *pDM_Odm, + } else if (rssi_level == DM_RATR_STA_MIDDLE) { + rate_bitmap = 0x000ff000; + } else { +- if (*(pDM_Odm->pBandWidth) == ODM_BW40M) ++ if (pHalData->CurrentChannelBW == ++ HT_CHANNEL_WIDTH_40) + rate_bitmap = 0x000ff015; + else + rate_bitmap = 0x000ff005; +@@ -1192,7 +1188,8 @@ u32 ODM_Get_Rate_Bitmap23a(struct dm_odm_t *pDM_Odm, + } else if (rssi_level == DM_RATR_STA_MIDDLE) { + rate_bitmap = 0x0f8ff000; + } else { +- if (*(pDM_Odm->pBandWidth) == ODM_BW40M) ++ if (pHalData->CurrentChannelBW == ++ HT_CHANNEL_WIDTH_40) + rate_bitmap = 0x0f8ff015; + else + rate_bitmap = 0x0f8ff005; +diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c b/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c +index 7dd62b3..271c33d 100644 +--- a/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c ++++ b/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c +@@ -151,7 +151,8 @@ void rtl8723a_add_rateatid(struct rtw_adapter *pAdapter, u32 bitmap, u8 arg, u8 + + bitmap &= 0x0fffffff; + if (rssi_level != DM_RATR_STA_INIT) +- bitmap = ODM_Get_Rate_Bitmap23a(&pHalData->odmpriv, macid, bitmap, rssi_level); ++ bitmap = ODM_Get_Rate_Bitmap23a(pHalData, macid, bitmap, ++ rssi_level); + + bitmap |= ((raid<<28)&0xf0000000); + +diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c +index 89ae2f2..dfed57e 100644 +--- a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c ++++ b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c +@@ -152,8 +152,6 @@ static void Update_ODM_ComInfo_8723a(struct rtw_adapter *Adapter) + /* Pointer reference */ + rtl8723a_odm_support_ability_set(Adapter, DYNAMIC_ALL_FUNC_ENABLE); + +- ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_BW, +- &pHalData->CurrentChannelBW); + ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_CHNL, + &pHalData->CurrentChannel); + ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_SCAN, &pmlmepriv->bScanInProcess); +diff --git a/drivers/staging/rtl8723au/hal/usb_halinit.c b/drivers/staging/rtl8723au/hal/usb_halinit.c +index e09329b..b51762a 100644 +--- a/drivers/staging/rtl8723au/hal/usb_halinit.c ++++ b/drivers/staging/rtl8723au/hal/usb_halinit.c +@@ -1500,8 +1500,8 @@ void rtl8723a_update_ramask(struct rtw_adapter *padapter, + + /* mask &= 0x0fffffff; */ + rate_bitmap = 0x0fffffff; +- rate_bitmap = ODM_Get_Rate_Bitmap23a(&pHalData->odmpriv, +- mac_id, mask, rssi_level); ++ rate_bitmap = ODM_Get_Rate_Bitmap23a(pHalData, mac_id, mask, ++ rssi_level); + DBG_8723A("%s => mac_id:%d, networkType:0x%02x, " + "mask:0x%08x\n\t ==> rssi_level:%d, rate_bitmap:0x%08x\n", + __func__, mac_id, networkType, mask, rssi_level, rate_bitmap); +diff --git a/drivers/staging/rtl8723au/include/odm.h b/drivers/staging/rtl8723au/include/odm.h +index e361c45..be0b84f 100644 +--- a/drivers/staging/rtl8723au/include/odm.h ++++ b/drivers/staging/rtl8723au/include/odm.h +@@ -319,7 +319,6 @@ enum odm_cmninfo { + /* */ + /* Dynamic value: */ + /* */ +- ODM_CMNINFO_BW, /* enum odm_band_width */ + ODM_CMNINFO_CHNL, + + ODM_CMNINFO_SCAN, +@@ -495,15 +494,6 @@ enum odm_sec_chnl_offset { + ODM_ABOVE = 2 + }; + +-/* ODM_CMNINFO_BW */ +-enum odm_band_width { +- ODM_BW20M = 0, +- ODM_BW40M = 1, +- ODM_BW80M = 2, +- ODM_BW160M = 3, +- ODM_BW10M = 4, +-}; +- + /* ODM_CMNINFO_CHNL */ + + /* ODM_CMNINFO_BOARD_TYPE */ +@@ -696,8 +686,6 @@ struct dm_odm_t { + bool bool_temp; + struct rtw_adapter *PADAPTER_temp; + +- /* BW info 20M/40M/80M = 0/1/2 */ +- u8 *pBandWidth; + /* Central channel location Ch1/Ch2/.... */ + u8 *pChannel; /* central channel number */ + /* Common info for Status */ +@@ -962,6 +950,8 @@ extern u8 CCKSwingTable_Ch1423A [CCK_TABLE_SIZE][8]; + #define SWAW_STEP_PEAK 0 + #define SWAW_STEP_DETERMINE 1 + ++struct hal_data_8723a; ++ + void ODM_Write_DIG23a(struct dm_odm_t *pDM_Odm, u8 CurrentIGI); + void ODM_Write_CCK_CCA_Thres23a(struct dm_odm_t *pDM_Odm, u8 CurCCK_CCAThres); + +@@ -991,12 +981,11 @@ u32 GetPSDData(struct dm_odm_t *pDM_Odm, unsigned int point, u8 initial_gain_psd + + void odm_DIG23abyRSSI_LPS(struct dm_odm_t *pDM_Odm); + +-u32 ODM_Get_Rate_Bitmap23a(struct dm_odm_t *pDM_Odm, u32 macid, u32 ra_mask, u8 rssi_level); ++u32 ODM_Get_Rate_Bitmap23a(struct hal_data_8723a *pHalData, u32 macid, u32 ra_mask, u8 rssi_level); + + + void ODM23a_DMInit(struct dm_odm_t *pDM_Odm); + +-struct hal_data_8723a; + void ODM_DMWatchdog23a(struct hal_data_8723a *pHalData); + + void ODM_CmnInfoInit23a(struct dm_odm_t *pDM_Odm, enum odm_cmninfo CmnInfo, u32 Value); diff --git a/debian/patches/features/all/r8723au/0227-staging-rtl8723au-Eliminate-ODM_CMNINFO_CHNL-usage.patch b/debian/patches/features/all/r8723au/0227-staging-rtl8723au-Eliminate-ODM_CMNINFO_CHNL-usage.patch new file mode 100644 index 000000000..c383a0f23 --- /dev/null +++ b/debian/patches/features/all/r8723au/0227-staging-rtl8723au-Eliminate-ODM_CMNINFO_CHNL-usage.patch @@ -0,0 +1,85 @@ +From: Jes Sorensen +Date: Mon, 21 Jul 2014 11:24:58 +0200 +Subject: [227/249] staging: rtl8723au: Eliminate ODM_CMNINFO_CHNL usage +Origin: https://git.kernel.org/linus/ac6c69d31128cb479b1b99dcd019aa2c41b9ecfd + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/odm.c | 10 +++------- + drivers/staging/rtl8723au/hal/rtl8723a_dm.c | 2 -- + drivers/staging/rtl8723au/include/odm.h | 4 ---- + 3 files changed, 3 insertions(+), 13 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/odm.c b/drivers/staging/rtl8723au/hal/odm.c +index a15a8cb..ac9be21 100644 +--- a/drivers/staging/rtl8723au/hal/odm.c ++++ b/drivers/staging/rtl8723au/hal/odm.c +@@ -417,9 +417,6 @@ void ODM23a_CmnInfoHook(struct dm_odm_t *pDM_Odm, + /* Hook call by reference pointer. */ + switch (CmnInfo) { + /* Dynamic call by reference pointer. */ +- case ODM_CMNINFO_CHNL: +- pDM_Odm->pChannel = (u8 *)pValue; +- break; + case ODM_CMNINFO_SCAN: + pDM_Odm->pbScanInProcess = (bool *)pValue; + break; +@@ -505,11 +502,11 @@ static void odm_CommonInfoSelfUpdate(struct hal_data_8723a *pHalData) + + if (pHalData->CurrentChannelBW == HT_CHANNEL_WIDTH_40) { + if (pHalData->nCur40MhzPrimeSC == 1) +- pDM_Odm->ControlChannel = *(pDM_Odm->pChannel) - 2; ++ pDM_Odm->ControlChannel = pHalData->CurrentChannel - 2; + else if (pHalData->nCur40MhzPrimeSC == 2) +- pDM_Odm->ControlChannel = *(pDM_Odm->pChannel) + 2; ++ pDM_Odm->ControlChannel = pHalData->CurrentChannel + 2; + } else { +- pDM_Odm->ControlChannel = *(pDM_Odm->pChannel); ++ pDM_Odm->ControlChannel = pHalData->CurrentChannel; + } + + for (i = 0; i < ODM_ASSOCIATE_ENTRY_NUM; i++) { +@@ -546,7 +543,6 @@ void odm_CmnInfoInit_Debug23a(struct dm_odm_t *pDM_Odm) + void odm_CmnInfoHook_Debug23a(struct dm_odm_t *pDM_Odm) + { + ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("odm_CmnInfoHook_Debug23a ==>\n")); +- ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("pChannel =%d\n", *(pDM_Odm->pChannel))); + + ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("pbScanInProcess =%d\n", *(pDM_Odm->pbScanInProcess))); + ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("pbPowerSaving =%d\n", *(pDM_Odm->pbPowerSaving))); +diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c +index dfed57e..d1e4231 100644 +--- a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c ++++ b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c +@@ -152,8 +152,6 @@ static void Update_ODM_ComInfo_8723a(struct rtw_adapter *Adapter) + /* Pointer reference */ + rtl8723a_odm_support_ability_set(Adapter, DYNAMIC_ALL_FUNC_ENABLE); + +- ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_CHNL, +- &pHalData->CurrentChannel); + ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_SCAN, &pmlmepriv->bScanInProcess); + ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_POWER_SAVING, + &pwrctrlpriv->bpower_saving); +diff --git a/drivers/staging/rtl8723au/include/odm.h b/drivers/staging/rtl8723au/include/odm.h +index be0b84f..022387b 100644 +--- a/drivers/staging/rtl8723au/include/odm.h ++++ b/drivers/staging/rtl8723au/include/odm.h +@@ -319,8 +319,6 @@ enum odm_cmninfo { + /* */ + /* Dynamic value: */ + /* */ +- ODM_CMNINFO_CHNL, +- + ODM_CMNINFO_SCAN, + ODM_CMNINFO_POWER_SAVING, + ODM_CMNINFO_MP_MODE, +@@ -686,8 +684,6 @@ struct dm_odm_t { + bool bool_temp; + struct rtw_adapter *PADAPTER_temp; + +- /* Central channel location Ch1/Ch2/.... */ +- u8 *pChannel; /* central channel number */ + /* Common info for Status */ + bool *pbScanInProcess; + bool *pbPowerSaving; diff --git a/debian/patches/features/all/r8723au/0228-staging-rtl8723au-Eliminate-ODM_CMNINFO_SCAN-related.patch b/debian/patches/features/all/r8723au/0228-staging-rtl8723au-Eliminate-ODM_CMNINFO_SCAN-related.patch new file mode 100644 index 000000000..ef8e0f54e --- /dev/null +++ b/debian/patches/features/all/r8723au/0228-staging-rtl8723au-Eliminate-ODM_CMNINFO_SCAN-related.patch @@ -0,0 +1,144 @@ +From: Jes Sorensen +Date: Mon, 21 Jul 2014 11:24:59 +0200 +Subject: [228/249] staging: rtl8723au: Eliminate ODM_CMNINFO_SCAN related code +Origin: https://git.kernel.org/linus/1a573d2bbeb379aa1fb3cd20be839a23a43d8a3e + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/odm.c | 18 ++++++++---------- + drivers/staging/rtl8723au/hal/rtl8723a_dm.c | 4 +--- + drivers/staging/rtl8723au/include/odm.h | 4 +--- + 3 files changed, 10 insertions(+), 16 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/odm.c b/drivers/staging/rtl8723au/hal/odm.c +index ac9be21..eadf2ed 100644 +--- a/drivers/staging/rtl8723au/hal/odm.c ++++ b/drivers/staging/rtl8723au/hal/odm.c +@@ -179,7 +179,7 @@ void odm_FalseAlarmCounterStatistics23a(struct dm_odm_t *pDM_Odm); + + void odm_DIG23aInit(struct dm_odm_t *pDM_Odm); + +-void odm_DIG23a(struct dm_odm_t *pDM_Odm); ++void odm_DIG23a(struct rtw_adapter *adapter); + + void odm_CCKPacketDetectionThresh23a(struct dm_odm_t *pDM_Odm); + /* END---------------DIG--------------------------- */ +@@ -287,8 +287,9 @@ void ODM23a_DMInit(struct dm_odm_t *pDM_Odm) + /* 2011/09/20 MH This is the entry pointer for all team to execute HW out source DM. */ + /* You can not add any dummy function here, be care, you can only use DM structure */ + /* to perform any new ODM_DM. */ +-void ODM_DMWatchdog23a(struct hal_data_8723a *pHalData) ++void ODM_DMWatchdog23a(struct rtw_adapter *adapter) + { ++ struct hal_data_8723a *pHalData = GET_HAL_DATA(adapter); + struct dm_odm_t *pDM_Odm = &pHalData->odmpriv; + + /* 2012.05.03 Luke: For all IC series */ +@@ -307,7 +308,7 @@ void ODM_DMWatchdog23a(struct hal_data_8723a *pHalData) + ODM_RT_TRACE(pDM_Odm, ODM_COMP_DIG, ODM_DBG_LOUD, ("---Step2: 8723AS is in LPS mode\n")); + odm_DIG23abyRSSI_LPS(pDM_Odm); + } else { +- odm_DIG23a(pDM_Odm); ++ odm_DIG23a(adapter); + } + + odm_CCKPacketDetectionThresh23a(pDM_Odm); +@@ -417,9 +418,6 @@ void ODM23a_CmnInfoHook(struct dm_odm_t *pDM_Odm, + /* Hook call by reference pointer. */ + switch (CmnInfo) { + /* Dynamic call by reference pointer. */ +- case ODM_CMNINFO_SCAN: +- pDM_Odm->pbScanInProcess = (bool *)pValue; +- break; + case ODM_CMNINFO_POWER_SAVING: + pDM_Odm->pbPowerSaving = (bool *)pValue; + break; +@@ -544,7 +542,6 @@ void odm_CmnInfoHook_Debug23a(struct dm_odm_t *pDM_Odm) + { + ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("odm_CmnInfoHook_Debug23a ==>\n")); + +- ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("pbScanInProcess =%d\n", *(pDM_Odm->pbScanInProcess))); + ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("pbPowerSaving =%d\n", *(pDM_Odm->pbPowerSaving))); + } + +@@ -655,9 +652,10 @@ void odm_DIG23aInit(struct dm_odm_t *pDM_Odm) + pDM_DigTable->bMediaConnect_1 = false; + } + +-void odm_DIG23a(struct dm_odm_t *pDM_Odm) ++void odm_DIG23a(struct rtw_adapter *adapter) + { +- ++ struct hal_data_8723a *pHalData = GET_HAL_DATA(adapter); ++ struct dm_odm_t *pDM_Odm = &pHalData->odmpriv; + struct dig_t *pDM_DigTable = &pDM_Odm->DM_DigTable; + struct false_alarm_stats *pFalseAlmCnt = &pDM_Odm->FalseAlmCnt; + u8 DIG_Dynamic_MIN; +@@ -674,7 +672,7 @@ void odm_DIG23a(struct dm_odm_t *pDM_Odm) + return; + } + +- if (*(pDM_Odm->pbScanInProcess)) { ++ if (adapter->mlmepriv.bScanInProcess) { + ODM_RT_TRACE(pDM_Odm, ODM_COMP_DIG, ODM_DBG_LOUD, ("odm_DIG23a() Return: In Scan Progress \n")); + return; + } +diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c +index d1e4231..22dec5c 100644 +--- a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c ++++ b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c +@@ -133,7 +133,6 @@ static void Init_ODM_ComInfo_8723a(struct rtw_adapter *Adapter) + + static void Update_ODM_ComInfo_8723a(struct rtw_adapter *Adapter) + { +- struct mlme_priv *pmlmepriv = &Adapter->mlmepriv; + struct pwrctrl_priv *pwrctrlpriv = &Adapter->pwrctrlpriv; + struct hal_data_8723a *pHalData = GET_HAL_DATA(Adapter); + struct dm_odm_t *pDM_Odm = &pHalData->odmpriv; +@@ -152,7 +151,6 @@ static void Update_ODM_ComInfo_8723a(struct rtw_adapter *Adapter) + /* Pointer reference */ + rtl8723a_odm_support_ability_set(Adapter, DYNAMIC_ALL_FUNC_ENABLE); + +- ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_SCAN, &pmlmepriv->bScanInProcess); + ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_POWER_SAVING, + &pwrctrlpriv->bpower_saving); + +@@ -210,7 +208,7 @@ rtl8723a_HalDmWatchDog( + bLinked = true; + + ODM_CmnInfoUpdate23a(&pHalData->odmpriv, ODM_CMNINFO_LINK, bLinked); +- ODM_DMWatchdog23a(pHalData); ++ ODM_DMWatchdog23a(Adapter); + + skip_dm: + +diff --git a/drivers/staging/rtl8723au/include/odm.h b/drivers/staging/rtl8723au/include/odm.h +index 022387b..300f8fb 100644 +--- a/drivers/staging/rtl8723au/include/odm.h ++++ b/drivers/staging/rtl8723au/include/odm.h +@@ -319,7 +319,6 @@ enum odm_cmninfo { + /* */ + /* Dynamic value: */ + /* */ +- ODM_CMNINFO_SCAN, + ODM_CMNINFO_POWER_SAVING, + ODM_CMNINFO_MP_MODE, + +@@ -685,7 +684,6 @@ struct dm_odm_t { + struct rtw_adapter *PADAPTER_temp; + + /* Common info for Status */ +- bool *pbScanInProcess; + bool *pbPowerSaving; + /* POINTER REFERENCE----------- */ + /* */ +@@ -982,7 +980,7 @@ u32 ODM_Get_Rate_Bitmap23a(struct hal_data_8723a *pHalData, u32 macid, u32 ra_ma + + void ODM23a_DMInit(struct dm_odm_t *pDM_Odm); + +-void ODM_DMWatchdog23a(struct hal_data_8723a *pHalData); ++void ODM_DMWatchdog23a(struct rtw_adapter *adapter); + + void ODM_CmnInfoInit23a(struct dm_odm_t *pDM_Odm, enum odm_cmninfo CmnInfo, u32 Value); + diff --git a/debian/patches/features/all/r8723au/0229-staging-rtl8723au-Eliminate-ODM_CMNINFO_POWER_SAVING.patch b/debian/patches/features/all/r8723au/0229-staging-rtl8723au-Eliminate-ODM_CMNINFO_POWER_SAVING.patch new file mode 100644 index 000000000..376d1f578 --- /dev/null +++ b/debian/patches/features/all/r8723au/0229-staging-rtl8723au-Eliminate-ODM_CMNINFO_POWER_SAVING.patch @@ -0,0 +1,97 @@ +From: Jes Sorensen +Date: Mon, 21 Jul 2014 11:25:00 +0200 +Subject: [229/249] staging: rtl8723au: Eliminate ODM_CMNINFO_POWER_SAVING + usage +Origin: https://git.kernel.org/linus/638847c94b37fb173048129370029d3594e7de6d + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/odm.c | 8 ++------ + drivers/staging/rtl8723au/hal/rtl8723a_dm.c | 4 ---- + drivers/staging/rtl8723au/include/odm.h | 3 --- + 3 files changed, 2 insertions(+), 13 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/odm.c b/drivers/staging/rtl8723au/hal/odm.c +index eadf2ed..754b816 100644 +--- a/drivers/staging/rtl8723au/hal/odm.c ++++ b/drivers/staging/rtl8723au/hal/odm.c +@@ -291,6 +291,7 @@ void ODM_DMWatchdog23a(struct rtw_adapter *adapter) + { + struct hal_data_8723a *pHalData = GET_HAL_DATA(adapter); + struct dm_odm_t *pDM_Odm = &pHalData->odmpriv; ++ struct pwrctrl_priv *pwrctrlpriv = &adapter->pwrctrlpriv; + + /* 2012.05.03 Luke: For all IC series */ + odm_CmnInfoHook_Debug23a(pDM_Odm); +@@ -313,7 +314,7 @@ void ODM_DMWatchdog23a(struct rtw_adapter *adapter) + + odm_CCKPacketDetectionThresh23a(pDM_Odm); + +- if (*(pDM_Odm->pbPowerSaving)) ++ if (pwrctrlpriv->bpower_saving) + return; + + odm_RefreshRateAdaptiveMask23a(pDM_Odm); +@@ -418,9 +419,6 @@ void ODM23a_CmnInfoHook(struct dm_odm_t *pDM_Odm, + /* Hook call by reference pointer. */ + switch (CmnInfo) { + /* Dynamic call by reference pointer. */ +- case ODM_CMNINFO_POWER_SAVING: +- pDM_Odm->pbPowerSaving = (bool *)pValue; +- break; + /* To remove the compiler warning, must add an empty default statement to handle the other values. */ + default: + /* do nothing */ +@@ -541,8 +539,6 @@ void odm_CmnInfoInit_Debug23a(struct dm_odm_t *pDM_Odm) + void odm_CmnInfoHook_Debug23a(struct dm_odm_t *pDM_Odm) + { + ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("odm_CmnInfoHook_Debug23a ==>\n")); +- +- ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("pbPowerSaving =%d\n", *(pDM_Odm->pbPowerSaving))); + } + + void odm_CmnInfoUpdate_Debug23a(struct dm_odm_t *pDM_Odm) +diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c +index 22dec5c..fa3e5aa 100644 +--- a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c ++++ b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c +@@ -133,7 +133,6 @@ static void Init_ODM_ComInfo_8723a(struct rtw_adapter *Adapter) + + static void Update_ODM_ComInfo_8723a(struct rtw_adapter *Adapter) + { +- struct pwrctrl_priv *pwrctrlpriv = &Adapter->pwrctrlpriv; + struct hal_data_8723a *pHalData = GET_HAL_DATA(Adapter); + struct dm_odm_t *pDM_Odm = &pHalData->odmpriv; + struct dm_priv *pdmpriv = &pHalData->dmpriv; +@@ -151,9 +150,6 @@ static void Update_ODM_ComInfo_8723a(struct rtw_adapter *Adapter) + /* Pointer reference */ + rtl8723a_odm_support_ability_set(Adapter, DYNAMIC_ALL_FUNC_ENABLE); + +- ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_POWER_SAVING, +- &pwrctrlpriv->bpower_saving); +- + for (i = 0; i < NUM_STA; i++) + ODM_CmnInfoPtrArrayHook23a(pDM_Odm, ODM_CMNINFO_STA_STATUS, i, NULL); + } +diff --git a/drivers/staging/rtl8723au/include/odm.h b/drivers/staging/rtl8723au/include/odm.h +index 300f8fb..58875f4 100644 +--- a/drivers/staging/rtl8723au/include/odm.h ++++ b/drivers/staging/rtl8723au/include/odm.h +@@ -319,7 +319,6 @@ enum odm_cmninfo { + /* */ + /* Dynamic value: */ + /* */ +- ODM_CMNINFO_POWER_SAVING, + ODM_CMNINFO_MP_MODE, + + ODM_CMNINFO_WIFI_DIRECT, +@@ -683,8 +682,6 @@ struct dm_odm_t { + bool bool_temp; + struct rtw_adapter *PADAPTER_temp; + +- /* Common info for Status */ +- bool *pbPowerSaving; + /* POINTER REFERENCE----------- */ + /* */ + /* CALL BY VALUE------------- */ diff --git a/debian/patches/features/all/r8723au/0230-staging-rtl8723au-Eliminate-obsolete-odm_CmnInfoHook.patch b/debian/patches/features/all/r8723au/0230-staging-rtl8723au-Eliminate-obsolete-odm_CmnInfoHook.patch new file mode 100644 index 000000000..b699ed912 --- /dev/null +++ b/debian/patches/features/all/r8723au/0230-staging-rtl8723au-Eliminate-obsolete-odm_CmnInfoHook.patch @@ -0,0 +1,45 @@ +From: Jes Sorensen +Date: Mon, 21 Jul 2014 11:25:01 +0200 +Subject: [230/249] staging: rtl8723au: Eliminate obsolete + odm_CmnInfoHook_Debug23a() +Origin: https://git.kernel.org/linus/555f1ca7bcf062b4f9c85f71f1738096877053dd + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/odm.c | 8 -------- + 1 file changed, 8 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/odm.c b/drivers/staging/rtl8723au/hal/odm.c +index 754b816..d420f33 100644 +--- a/drivers/staging/rtl8723au/hal/odm.c ++++ b/drivers/staging/rtl8723au/hal/odm.c +@@ -170,8 +170,6 @@ static void odm_CommonInfoSelfUpdate(struct hal_data_8723a *pHalData); + + void odm_CmnInfoInit_Debug23a(struct dm_odm_t *pDM_Odm); + +-void odm_CmnInfoHook_Debug23a(struct dm_odm_t *pDM_Odm); +- + void odm_CmnInfoUpdate_Debug23a(struct dm_odm_t *pDM_Odm); + + /* START---------------DIG--------------------------- */ +@@ -294,7 +292,6 @@ void ODM_DMWatchdog23a(struct rtw_adapter *adapter) + struct pwrctrl_priv *pwrctrlpriv = &adapter->pwrctrlpriv; + + /* 2012.05.03 Luke: For all IC series */ +- odm_CmnInfoHook_Debug23a(pDM_Odm); + odm_CmnInfoUpdate_Debug23a(pDM_Odm); + odm_CommonInfoSelfUpdate(pHalData); + odm_FalseAlarmCounterStatistics23a(pDM_Odm); +@@ -536,11 +533,6 @@ void odm_CmnInfoInit_Debug23a(struct dm_odm_t *pDM_Odm) + + } + +-void odm_CmnInfoHook_Debug23a(struct dm_odm_t *pDM_Odm) +-{ +- ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("odm_CmnInfoHook_Debug23a ==>\n")); +-} +- + void odm_CmnInfoUpdate_Debug23a(struct dm_odm_t *pDM_Odm) + { + ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("odm_CmnInfoUpdate_Debug23a ==>\n")); diff --git a/debian/patches/features/all/r8723au/0231-staging-rtl8723au-Remove-obsolete-ODM23a_CmnInfoHook.patch b/debian/patches/features/all/r8723au/0231-staging-rtl8723au-Remove-obsolete-ODM23a_CmnInfoHook.patch new file mode 100644 index 000000000..1cc2556dd --- /dev/null +++ b/debian/patches/features/all/r8723au/0231-staging-rtl8723au-Remove-obsolete-ODM23a_CmnInfoHook.patch @@ -0,0 +1,51 @@ +From: Jes Sorensen +Date: Mon, 21 Jul 2014 11:25:02 +0200 +Subject: [231/249] staging: rtl8723au: Remove obsolete ODM23a_CmnInfoHook() +Origin: https://git.kernel.org/linus/bd9bda22d8cf1667f3389418f0a9daad6e6c2ee4 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/odm.c | 15 --------------- + drivers/staging/rtl8723au/include/odm.h | 2 -- + 2 files changed, 17 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/odm.c b/drivers/staging/rtl8723au/hal/odm.c +index d420f33..1b39cbe 100644 +--- a/drivers/staging/rtl8723au/hal/odm.c ++++ b/drivers/staging/rtl8723au/hal/odm.c +@@ -408,21 +408,6 @@ void ODM_CmnInfoInit23a(struct dm_odm_t *pDM_Odm, + + } + +-void ODM23a_CmnInfoHook(struct dm_odm_t *pDM_Odm, +- enum odm_cmninfo CmnInfo, +- void *pValue +- ) +-{ +- /* Hook call by reference pointer. */ +- switch (CmnInfo) { +- /* Dynamic call by reference pointer. */ +- /* To remove the compiler warning, must add an empty default statement to handle the other values. */ +- default: +- /* do nothing */ +- break; +- } +-} +- + void ODM_CmnInfoPtrArrayHook23a(struct dm_odm_t *pDM_Odm, enum odm_cmninfo CmnInfo, + u16 Index, void *pValue) + { +diff --git a/drivers/staging/rtl8723au/include/odm.h b/drivers/staging/rtl8723au/include/odm.h +index 58875f4..80aa215 100644 +--- a/drivers/staging/rtl8723au/include/odm.h ++++ b/drivers/staging/rtl8723au/include/odm.h +@@ -981,8 +981,6 @@ void ODM_DMWatchdog23a(struct rtw_adapter *adapter); + + void ODM_CmnInfoInit23a(struct dm_odm_t *pDM_Odm, enum odm_cmninfo CmnInfo, u32 Value); + +-void ODM23a_CmnInfoHook(struct dm_odm_t *pDM_Odm, enum odm_cmninfo CmnInfo, void *pValue); +- + void ODM_CmnInfoPtrArrayHook23a(struct dm_odm_t *pDM_Odm, enum odm_cmninfo CmnInfo, u16 Index, void *pValue); + + void ODM_CmnInfoUpdate23a(struct dm_odm_t *pDM_Odm, u32 CmnInfo, u64 Value); diff --git a/debian/patches/features/all/r8723au/0232-staging-rtl8723au-Merge-Init_ODM_ComInfo_8723a-into-.patch b/debian/patches/features/all/r8723au/0232-staging-rtl8723au-Merge-Init_ODM_ComInfo_8723a-into-.patch new file mode 100644 index 000000000..1597d59de --- /dev/null +++ b/debian/patches/features/all/r8723au/0232-staging-rtl8723au-Merge-Init_ODM_ComInfo_8723a-into-.patch @@ -0,0 +1,51 @@ +From: Jes Sorensen +Date: Mon, 21 Jul 2014 11:25:03 +0200 +Subject: [232/249] staging: rtl8723au: Merge Init_ODM_ComInfo_8723a() into + rtl8723a_init_dm_priv() +Origin: https://git.kernel.org/linus/62b0d72b3cf0307a2fc2693f39b290d6657f49a9 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/rtl8723a_dm.c | 20 +++++--------------- + 1 file changed, 5 insertions(+), 15 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c +index fa3e5aa..fa826b0 100644 +--- a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c ++++ b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c +@@ -82,16 +82,15 @@ static void dm_CheckPbcGPIO(struct rtw_adapter *padapter) + + /* Initialize GPIO setting registers */ + /* functions */ +-static void Init_ODM_ComInfo_8723a(struct rtw_adapter *Adapter) +-{ + ++void rtl8723a_init_dm_priv(struct rtw_adapter *Adapter) ++{ + struct hal_data_8723a *pHalData = GET_HAL_DATA(Adapter); ++ struct dm_priv *pdmpriv = &pHalData->dmpriv; + struct dm_odm_t *pDM_Odm = &pHalData->odmpriv; +- u8 cut_ver, fab_ver; ++ u8 cut_ver, fab_ver; + +- /* */ +- /* Init Value */ +- /* */ ++ memset(pdmpriv, 0, sizeof(struct dm_priv)); + memset(pDM_Odm, 0, sizeof(*pDM_Odm)); + + pDM_Odm->Adapter = Adapter; +@@ -212,12 +211,3 @@ skip_dm: + /* Check Hardware Radio ON/OFF or not */ + dm_CheckPbcGPIO(Adapter); + } +- +-void rtl8723a_init_dm_priv(struct rtw_adapter *Adapter) +-{ +- struct hal_data_8723a *pHalData = GET_HAL_DATA(Adapter); +- struct dm_priv *pdmpriv = &pHalData->dmpriv; +- +- memset(pdmpriv, 0, sizeof(struct dm_priv)); +- Init_ODM_ComInfo_8723a(Adapter); +-} diff --git a/debian/patches/features/all/r8723au/0233-staging-rtl8723au-odm_CommonInfoSelfInit23a-Use-prop.patch b/debian/patches/features/all/r8723au/0233-staging-rtl8723au-odm_CommonInfoSelfInit23a-Use-prop.patch new file mode 100644 index 000000000..1af5e2f52 --- /dev/null +++ b/debian/patches/features/all/r8723au/0233-staging-rtl8723au-odm_CommonInfoSelfInit23a-Use-prop.patch @@ -0,0 +1,29 @@ +From: Jes Sorensen +Date: Mon, 21 Jul 2014 11:25:04 +0200 +Subject: [233/249] staging: rtl8723au: odm_CommonInfoSelfInit23a(): Use proper + register defines +Origin: https://git.kernel.org/linus/36cf7c75af1bdc2a4f5eeea2711690e47e8cc129 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/odm.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/odm.c b/drivers/staging/rtl8723au/hal/odm.c +index 1b39cbe..4e7a198 100644 +--- a/drivers/staging/rtl8723au/hal/odm.c ++++ b/drivers/staging/rtl8723au/hal/odm.c +@@ -463,8 +463,10 @@ void ODM_CmnInfoUpdate23a(struct dm_odm_t *pDM_Odm, u32 CmnInfo, u64 Value) + void odm_CommonInfoSelfInit23a(struct dm_odm_t *pDM_Odm + ) + { +- pDM_Odm->bCckHighPower = (bool) ODM_GetBBReg(pDM_Odm, 0x824, BIT(9)); +- pDM_Odm->RFPathRxEnable = (u8) ODM_GetBBReg(pDM_Odm, 0xc04, 0x0F); ++ pDM_Odm->bCckHighPower = ++ (bool) ODM_GetBBReg(pDM_Odm, rFPGA0_XA_HSSIParameter2, BIT(9)); ++ pDM_Odm->RFPathRxEnable = ++ (u8) ODM_GetBBReg(pDM_Odm, rOFDM0_TRxPathEnable, 0x0F); + if (pDM_Odm->SupportICType & ODM_RTL8723A) + pDM_Odm->AntDivType = CGCS_RX_SW_ANTDIV; + diff --git a/debian/patches/features/all/r8723au/0234-staging-rtl8723au-Remove-a-pile-of-fluff-for-calling.patch b/debian/patches/features/all/r8723au/0234-staging-rtl8723au-Remove-a-pile-of-fluff-for-calling.patch new file mode 100644 index 000000000..48a44d695 --- /dev/null +++ b/debian/patches/features/all/r8723au/0234-staging-rtl8723au-Remove-a-pile-of-fluff-for-calling.patch @@ -0,0 +1,208 @@ +From: Jes Sorensen +Date: Mon, 21 Jul 2014 11:25:05 +0200 +Subject: [234/249] staging: rtl8723au: Remove a pile of fluff for calling into + a bunch of no-op functions +Origin: https://git.kernel.org/linus/62900ebf471556f30a2a9208985e1d73c902b8fd + +The whole antenna diversity selection was completely pointless as all +the end functions called were no-ops. + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/odm.c | 77 ---------------------------- + drivers/staging/rtl8723au/hal/odm_HWConfig.c | 2 - + drivers/staging/rtl8723au/include/odm.h | 9 ---- + 3 files changed, 88 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/odm.c b/drivers/staging/rtl8723au/hal/odm.c +index 4e7a198..1c0f106d 100644 +--- a/drivers/staging/rtl8723au/hal/odm.c ++++ b/drivers/staging/rtl8723au/hal/odm.c +@@ -208,18 +208,6 @@ void odm_RSSIMonitorCheck23aAP(struct dm_odm_t *pDM_Odm); + void odm_RSSIMonitorCheck23a(struct dm_odm_t *pDM_Odm); + void odm_DynamicTxPower23a(struct dm_odm_t *pDM_Odm); + +-void odm_SwAntDivInit(struct dm_odm_t *pDM_Odm); +- +-void odm_SwAntDivInit_NIC(struct dm_odm_t *pDM_Odm); +- +-void odm_SwAntDivChkAntSwitch(struct dm_odm_t *pDM_Odm, u8 Step); +- +-void odm_SwAntDivChkAntSwitchNIC(struct dm_odm_t *pDM_Odm, +- u8 Step +- ); +- +-void odm_SwAntDivChkAntSwitchCallback23a(unsigned long data); +- + void odm_RefreshRateAdaptiveMask23a(struct dm_odm_t *pDM_Odm); + + void ODM_TXPowerTrackingCheck23a(struct dm_odm_t *pDM_Odm); +@@ -242,8 +230,6 @@ static void ODM_EdcaTurboInit23a(struct dm_odm_t *pDM_Odm); + #define RxDefaultAnt1 0x65a9 + #define RxDefaultAnt2 0x569a + +-void odm_InitHybridAntDiv23a(struct dm_odm_t *pDM_Odm); +- + bool odm_StaDefAntSel(struct dm_odm_t *pDM_Odm, + u32 OFDM_Ant1_Cnt, + u32 OFDM_Ant2_Cnt, +@@ -257,8 +243,6 @@ void odm_SetRxIdleAnt(struct dm_odm_t *pDM_Odm, + bool bDualPath + ); + +-void odm_HwAntDiv23a(struct dm_odm_t *pDM_Odm); +- + /* 3 Export Interface */ + + /* 2011/09/21 MH Add to describe different team necessary resource allocate?? */ +@@ -274,12 +258,6 @@ void ODM23a_DMInit(struct dm_odm_t *pDM_Odm) + odm_DynamicTxPower23aInit(pDM_Odm); + odm_TXPowerTrackingInit23a(pDM_Odm); + ODM_EdcaTurboInit23a(pDM_Odm); +- if ((pDM_Odm->AntDivType == CG_TRX_HW_ANTDIV) || +- (pDM_Odm->AntDivType == CGCS_RX_HW_ANTDIV) || +- (pDM_Odm->AntDivType == CG_TRX_SMART_ANTDIV)) +- odm_InitHybridAntDiv23a(pDM_Odm); +- else if (pDM_Odm->AntDivType == CGCS_RX_SW_ANTDIV) +- odm_SwAntDivInit(pDM_Odm); + } + + /* 2011/09/20 MH This is the entry pointer for all team to execute HW out source DM. */ +@@ -317,12 +295,6 @@ void ODM_DMWatchdog23a(struct rtw_adapter *adapter) + odm_RefreshRateAdaptiveMask23a(pDM_Odm); + + odm_DynamicBBPowerSaving23a(pDM_Odm); +- if ((pDM_Odm->AntDivType == CG_TRX_HW_ANTDIV) || +- (pDM_Odm->AntDivType == CGCS_RX_HW_ANTDIV) || +- (pDM_Odm->AntDivType == CG_TRX_SMART_ANTDIV)) +- odm_HwAntDiv23a(pDM_Odm); +- else if (pDM_Odm->AntDivType == CGCS_RX_SW_ANTDIV) +- odm_SwAntDivChkAntSwitch(pDM_Odm, SWAW_STEP_PEAK); + + ODM_TXPowerTrackingCheck23a(pDM_Odm); + odm_EdcaTurboCheck23a(pDM_Odm); +@@ -365,9 +337,6 @@ void ODM_CmnInfoInit23a(struct dm_odm_t *pDM_Odm, + case ODM_CMNINFO_RF_TYPE: + pDM_Odm->RFType = (u8)Value; + break; +- case ODM_CMNINFO_RF_ANTENNA_TYPE: +- pDM_Odm->AntDivType = (u8)Value; +- break; + case ODM_CMNINFO_BOARD_TYPE: + pDM_Odm->BoardType = (u8)Value; + break; +@@ -467,8 +436,6 @@ void odm_CommonInfoSelfInit23a(struct dm_odm_t *pDM_Odm + (bool) ODM_GetBBReg(pDM_Odm, rFPGA0_XA_HSSIParameter2, BIT(9)); + pDM_Odm->RFPathRxEnable = + (u8) ODM_GetBBReg(pDM_Odm, rOFDM0_TRxPathEnable, 0x0F); +- if (pDM_Odm->SupportICType & ODM_RTL8723A) +- pDM_Odm->AntDivType = CGCS_RX_SW_ANTDIV; + + ODM_InitDebugSetting23a(pDM_Odm); + } +@@ -1463,50 +1430,6 @@ void odm_TXPowerTrackingCheckAP(struct dm_odm_t *pDM_Odm) + { + } + +-/* antenna mapping info */ +-/* 1: right-side antenna */ +-/* 2/0: left-side antenna */ +-/* PpDM_SWAT_Table->CCK_Ant1_Cnt /OFDM_Ant1_Cnt: for right-side antenna: Ant:1 RxDefaultAnt1 */ +-/* PpDM_SWAT_Table->CCK_Ant2_Cnt /OFDM_Ant2_Cnt: for left-side antenna: Ant:0 RxDefaultAnt2 */ +-/* We select left antenna as default antenna in initial process, modify it as needed */ +-/* */ +- +-/* 3 ============================================================ */ +-/* 3 SW Antenna Diversity */ +-/* 3 ============================================================ */ +-void odm_SwAntDivInit(struct dm_odm_t *pDM_Odm) +-{ +-} +- +-void ODM_SwAntDivChkPerPktRssi(struct dm_odm_t *pDM_Odm, u8 StationID, +- struct phy_info *pPhyInfo) +-{ +-} +- +-void odm_SwAntDivChkAntSwitch(struct dm_odm_t *pDM_Odm, u8 Step) +-{ +-} +- +-void ODM_SwAntDivRestAfterLink(struct dm_odm_t *pDM_Odm) +-{ +-} +- +-void odm_SwAntDivChkAntSwitchCallback23a(unsigned long data) +-{ +-} +- +-/* 3 ============================================================ */ +-/* 3 SW Antenna Diversity */ +-/* 3 ============================================================ */ +- +-void odm_InitHybridAntDiv23a(struct dm_odm_t *pDM_Odm) +-{ +-} +- +-void odm_HwAntDiv23a(struct dm_odm_t *pDM_Odm) +-{ +-} +- + /* EDCA Turbo */ + static void ODM_EdcaTurboInit23a(struct dm_odm_t *pDM_Odm) + { +diff --git a/drivers/staging/rtl8723au/hal/odm_HWConfig.c b/drivers/staging/rtl8723au/hal/odm_HWConfig.c +index ab820a8..409fde4 100644 +--- a/drivers/staging/rtl8723au/hal/odm_HWConfig.c ++++ b/drivers/staging/rtl8723au/hal/odm_HWConfig.c +@@ -401,8 +401,6 @@ static void ODM_PhyStatusQuery23a_92CSeries(struct dm_odm_t *pDM_Odm, + pPhyStatus, pPktinfo); + if (pDM_Odm->RSSI_test) { + /* Select the packets to do RSSI checking for antenna switching. */ +- if (pPktinfo->bPacketToSelf || pPktinfo->bPacketBeacon) +- ODM_SwAntDivChkPerPktRssi(pDM_Odm, pPktinfo->StationID, pPhyInfo); + } else { + odm_Process_RSSIForDM(pDM_Odm, pPhyInfo, pPktinfo); + } +diff --git a/drivers/staging/rtl8723au/include/odm.h b/drivers/staging/rtl8723au/include/odm.h +index 80aa215..41dba62 100644 +--- a/drivers/staging/rtl8723au/include/odm.h ++++ b/drivers/staging/rtl8723au/include/odm.h +@@ -125,7 +125,6 @@ struct dig_t { + bool bMediaConnect_0; + bool bMediaConnect_1; + +- u32 AntDiv_RSSI_max; + u32 RSSI_max; + }; + +@@ -670,7 +669,6 @@ struct dm_odm_t { + + bool bDualMacSmartConcurrent; + u32 BK_SupportAbility; +- u8 AntDivType; + /* HOOK BEFORE REG INIT----------- */ + + /* */ +@@ -952,9 +950,6 @@ void ODM_SetAntenna(struct dm_odm_t *pDM_Odm, u8 Antenna); + #define dm_RF_Saving ODM_RF_Saving23a + void ODM_RF_Saving23a(struct dm_odm_t *pDM_Odm, u8 bForceInNormal); + +-#define SwAntDivRestAfterLink ODM_SwAntDivRestAfterLink +-void ODM_SwAntDivRestAfterLink(struct dm_odm_t *pDM_Odm); +- + #define dm_CheckTXPowerTracking ODM_TXPowerTrackingCheck23a + void ODM_TXPowerTrackingCheck23a(struct dm_odm_t *pDM_Odm); + +@@ -962,10 +957,6 @@ bool ODM_RAStateCheck23a(struct dm_odm_t *pDM_Odm, s32 RSSI, bool bForceUpdate, + u8 *pRATRState); + + +-#define dm_SWAW_RSSI_Check ODM_SwAntDivChkPerPktRssi +-void ODM_SwAntDivChkPerPktRssi(struct dm_odm_t *pDM_Odm, u8 StationID, +- struct phy_info *pPhyInfo); +- + u32 ConvertTo_dB23a(u32 Value); + + u32 GetPSDData(struct dm_odm_t *pDM_Odm, unsigned int point, u8 initial_gain_psd); diff --git a/debian/patches/features/all/r8723au/0235-staging-rtl8723au-Fold-rtl8723a_set_nav_upper-into-r.patch b/debian/patches/features/all/r8723au/0235-staging-rtl8723au-Fold-rtl8723a_set_nav_upper-into-r.patch new file mode 100644 index 000000000..7e6267003 --- /dev/null +++ b/debian/patches/features/all/r8723au/0235-staging-rtl8723au-Fold-rtl8723a_set_nav_upper-into-r.patch @@ -0,0 +1,70 @@ +From: Jes Sorensen +Date: Mon, 21 Jul 2014 11:25:06 +0200 +Subject: [235/249] staging: rtl8723au: Fold rtl8723a_set_nav_upper() into + rtl8723au_hal_init() +Origin: https://git.kernel.org/linus/d0b39f87427c806b984c57d52148200af9c57bf2 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/hal_com.c | 18 ------------------ + drivers/staging/rtl8723au/hal/usb_halinit.c | 4 +++- + drivers/staging/rtl8723au/include/hal_com.h | 1 - + 3 files changed, 3 insertions(+), 20 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/hal_com.c b/drivers/staging/rtl8723au/hal/hal_com.c +index 4a66ed5..8f299ec 100644 +--- a/drivers/staging/rtl8723au/hal/hal_com.c ++++ b/drivers/staging/rtl8723au/hal/hal_com.c +@@ -818,24 +818,6 @@ void rtl8723a_set_rxdma_agg_pg_th(struct rtw_adapter *padapter, u8 val) + rtl8723au_write8(padapter, REG_RXDMA_AGG_PG_TH, val); + } + +-void rtl8723a_set_nav_upper(struct rtw_adapter *padapter, u32 usNavUpper) +-{ +- if (usNavUpper > HAL_8723A_NAV_UPPER_UNIT * 0xFF) { +- RT_TRACE(_module_hal_init_c_, _drv_notice_, +- ("The setting value (0x%08X us) of NAV_UPPER " +- "is larger than (%d * 0xFF)!!!\n", +- usNavUpper, HAL_8723A_NAV_UPPER_UNIT)); +- return; +- } +- +- /* The value of ((usNavUpper + HAL_8723A_NAV_UPPER_UNIT - 1) / +- HAL_8723A_NAV_UPPER_UNIT) */ +- /* is getting the upper integer. */ +- usNavUpper = (usNavUpper + HAL_8723A_NAV_UPPER_UNIT - 1) / +- HAL_8723A_NAV_UPPER_UNIT; +- rtl8723au_write8(padapter, REG_NAV_UPPER, (u8) usNavUpper); +-} +- + void rtl8723a_set_initial_gain(struct rtw_adapter *padapter, u32 rx_gain) + { + struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); +diff --git a/drivers/staging/rtl8723au/hal/usb_halinit.c b/drivers/staging/rtl8723au/hal/usb_halinit.c +index b51762a..d896d06 100644 +--- a/drivers/staging/rtl8723au/hal/usb_halinit.c ++++ b/drivers/staging/rtl8723au/hal/usb_halinit.c +@@ -780,7 +780,9 @@ static int rtl8723au_hal_init(struct rtw_adapter *Adapter) + + rtl8723a_InitHalDm(Adapter); + +- rtl8723a_set_nav_upper(Adapter, WiFiNavUpperUs); ++ val8 = ((WiFiNavUpperUs + HAL_8723A_NAV_UPPER_UNIT - 1) / ++ HAL_8723A_NAV_UPPER_UNIT); ++ rtl8723au_write8(Adapter, REG_NAV_UPPER, val8); + + /* 2011/03/09 MH debug only, UMC-B cut pass 2500 S5 test, but we need to fin root cause. */ + if (((rtl8723au_read32(Adapter, rFPGA0_RFMOD) & 0xFF000000) != +diff --git a/drivers/staging/rtl8723au/include/hal_com.h b/drivers/staging/rtl8723au/include/hal_com.h +index 6c2ca4f..7c31865 100644 +--- a/drivers/staging/rtl8723au/include/hal_com.h ++++ b/drivers/staging/rtl8723au/include/hal_com.h +@@ -197,7 +197,6 @@ void rtl8723a_set_ac_param_vi(struct rtw_adapter *padapter, u32 vi); + void rtl8723a_set_ac_param_be(struct rtw_adapter *padapter, u32 be); + void rtl8723a_set_ac_param_bk(struct rtw_adapter *padapter, u32 bk); + void rtl8723a_set_rxdma_agg_pg_th(struct rtw_adapter *padapter, u8 val); +-void rtl8723a_set_nav_upper(struct rtw_adapter *padapter, u32 usNavUpper); + void rtl8723a_set_initial_gain(struct rtw_adapter *padapter, u32 rx_gain); + + void rtl8723a_odm_support_ability_write(struct rtw_adapter *padapter, u32 val); diff --git a/debian/patches/features/all/r8723au/0236-staging-rtl8723au-Reduce-wrapper-layers-around-hal_-.patch b/debian/patches/features/all/r8723au/0236-staging-rtl8723au-Reduce-wrapper-layers-around-hal_-.patch new file mode 100644 index 000000000..ff58900d7 --- /dev/null +++ b/debian/patches/features/all/r8723au/0236-staging-rtl8723au-Reduce-wrapper-layers-around-hal_-.patch @@ -0,0 +1,169 @@ +From: Jes Sorensen +Date: Mon, 21 Jul 2014 11:25:07 +0200 +Subject: [236/249] staging: rtl8723au: Reduce wrapper layers around hal_{de, + }init() calls +Origin: https://git.kernel.org/linus/dc20d1da78a631b1c823b6cebbf8f659d0faac1d + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/usb_halinit.c | 52 +++++++--------------------- + drivers/staging/rtl8723au/include/hal_intf.h | 4 +-- + drivers/staging/rtl8723au/os_dep/os_intfs.c | 6 ++-- + drivers/staging/rtl8723au/os_dep/usb_intf.c | 2 +- + 4 files changed, 19 insertions(+), 45 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/usb_halinit.c b/drivers/staging/rtl8723au/hal/usb_halinit.c +index d896d06..681810e 100644 +--- a/drivers/staging/rtl8723au/hal/usb_halinit.c ++++ b/drivers/staging/rtl8723au/hal/usb_halinit.c +@@ -534,7 +534,7 @@ enum rt_rf_power_state RfOnOffDetect23a(struct rtw_adapter *pAdapter) + + void _ps_open_RF23a(struct rtw_adapter *padapter); + +-static int rtl8723au_hal_init(struct rtw_adapter *Adapter) ++int rtl8723au_hal_init(struct rtw_adapter *Adapter) + { + u8 val8 = 0; + u32 boundary; +@@ -545,6 +545,8 @@ static int rtl8723au_hal_init(struct rtw_adapter *Adapter) + + unsigned long init_start_time = jiffies; + ++ Adapter->hw_init_completed = false; ++ + if (Adapter->pwrctrlpriv.bkeepfwalive) { + _ps_open_RF23a(Adapter); + +@@ -796,6 +798,13 @@ static int rtl8723au_hal_init(struct rtw_adapter *Adapter) + rtl8723au_read32(Adapter, REG_FWHW_TXQ_CTRL)|BIT(12)); + + exit: ++ if (status == _SUCCESS) { ++ Adapter->hw_init_completed = true; ++ ++ if (Adapter->registrypriv.notch_filter == 1) ++ rtl8723a_notch_filter(Adapter, 1); ++ } ++ + DBG_8723A("%s in %dms\n", __func__, + jiffies_to_msecs(jiffies - init_start_time)); + return status; +@@ -1105,7 +1114,7 @@ static void CardDisableRTL8723U(struct rtw_adapter *Adapter) + rtl8723au_write8(Adapter, REG_RSV_CTRL, 0x0e); + } + +-static int rtl8723au_hal_deinit(struct rtw_adapter *padapter) ++int rtl8723au_hal_deinit(struct rtw_adapter *padapter) + { + DBG_8723A("==> %s\n", __func__); + +@@ -1118,6 +1127,8 @@ static int rtl8723au_hal_deinit(struct rtw_adapter *padapter) + /* IC. Accord to johnny's opinion, only RU need the support. */ + CardDisableRTL8723U(padapter); + ++ padapter->hw_init_completed = false; ++ + return _SUCCESS; + } + +@@ -1543,40 +1554,3 @@ void rtl8723a_update_ramask(struct rtw_adapter *padapter, + /* set correct initial date rate for each mac_id */ + pdmpriv->INIDATA_RATE[mac_id] = init_rate; + } +- +-int rtw_hal_init23a(struct rtw_adapter *padapter) +-{ +- int status; +- +- padapter->hw_init_completed = false; +- +- status = rtl8723au_hal_init(padapter); +- +- if (status == _SUCCESS) { +- padapter->hw_init_completed = true; +- +- if (padapter->registrypriv.notch_filter == 1) +- rtl8723a_notch_filter(padapter, 1); +- } else { +- padapter->hw_init_completed = false; +- DBG_8723A("rtw_hal_init23a: hal__init fail\n"); +- } +- +- RT_TRACE(_module_hal_init_c_, _drv_err_, +- ("-rtl871x_hal_init:status = 0x%x\n", status)); +- +- return status; +-} +- +-int rtw_hal_deinit23a(struct rtw_adapter *padapter) +-{ +- int status; +- +- status = rtl8723au_hal_deinit(padapter); +- +- if (status == _SUCCESS) +- padapter->hw_init_completed = false; +- else +- DBG_8723A("\n rtw_hal_deinit23a: hal_init fail\n"); +- return status; +-} +diff --git a/drivers/staging/rtl8723au/include/hal_intf.h b/drivers/staging/rtl8723au/include/hal_intf.h +index 04223b5..396decb 100644 +--- a/drivers/staging/rtl8723au/include/hal_intf.h ++++ b/drivers/staging/rtl8723au/include/hal_intf.h +@@ -103,8 +103,8 @@ void rtw_hal_def_value_init23a(struct rtw_adapter *padapter); + int pm_netdev_open23a(struct net_device *pnetdev, u8 bnormal); + int rtw_resume_process23a(struct rtw_adapter *padapter); + +-int rtw_hal_init23a(struct rtw_adapter *padapter); +-int rtw_hal_deinit23a(struct rtw_adapter *padapter); ++int rtl8723au_hal_init(struct rtw_adapter *padapter); ++int rtl8723au_hal_deinit(struct rtw_adapter *padapter); + void rtw_hal_stop(struct rtw_adapter *padapter); + + void rtw_hal_update_ra_mask23a(struct sta_info *psta, u8 rssi_level); +diff --git a/drivers/staging/rtl8723au/os_dep/os_intfs.c b/drivers/staging/rtl8723au/os_dep/os_intfs.c +index a081e7a..b34eaec 100644 +--- a/drivers/staging/rtl8723au/os_dep/os_intfs.c ++++ b/drivers/staging/rtl8723au/os_dep/os_intfs.c +@@ -666,7 +666,7 @@ int netdev_open23a(struct net_device *pnetdev) + padapter->bSurpriseRemoved = false; + padapter->bCardDisableWOHSM = false; + +- status = rtw_hal_init23a(padapter); ++ status = rtl8723au_hal_init(padapter); + if (status == _FAIL) { + RT_TRACE(_module_os_intfs_c_, _drv_err_, + ("rtl871x_hal_init(): Can't init h/w!\n")); +@@ -735,7 +735,7 @@ static int ips_netdrv_open(struct rtw_adapter *padapter) + padapter->bSurpriseRemoved = false; + padapter->bCardDisableWOHSM = false; + +- status = rtw_hal_init23a(padapter); ++ status = rtl8723au_hal_init(padapter); + if (status == _FAIL) { + RT_TRACE(_module_os_intfs_c_, _drv_err_, + ("ips_netdrv_open(): Can't init h/w!\n")); +@@ -800,7 +800,7 @@ void rtw_ips_dev_unload23a(struct rtw_adapter *padapter) + + /* s5. */ + if (!padapter->bSurpriseRemoved) +- rtw_hal_deinit23a(padapter); ++ rtl8723au_hal_deinit(padapter); + } + + int pm_netdev_open23a(struct net_device *pnetdev, u8 bnormal) +diff --git a/drivers/staging/rtl8723au/os_dep/usb_intf.c b/drivers/staging/rtl8723au/os_dep/usb_intf.c +index ec90216..aeaedcd 100644 +--- a/drivers/staging/rtl8723au/os_dep/usb_intf.c ++++ b/drivers/staging/rtl8723au/os_dep/usb_intf.c +@@ -303,7 +303,7 @@ static void rtw_dev_unload(struct rtw_adapter *padapter) + + /* s5. */ + if (!padapter->bSurpriseRemoved) { +- rtw_hal_deinit23a(padapter); ++ rtl8723au_hal_deinit(padapter); + padapter->bSurpriseRemoved = true; + } + padapter->bup = false; diff --git a/debian/patches/features/all/r8723au/0237-staging-rtl8723au-Fold-rtw_resume_process23a-into-rt.patch b/debian/patches/features/all/r8723au/0237-staging-rtl8723au-Fold-rtw_resume_process23a-into-rt.patch new file mode 100644 index 000000000..f609cf39a --- /dev/null +++ b/debian/patches/features/all/r8723au/0237-staging-rtl8723au-Fold-rtw_resume_process23a-into-rt.patch @@ -0,0 +1,45 @@ +From: Jes Sorensen +Date: Mon, 21 Jul 2014 11:25:08 +0200 +Subject: [237/249] staging: rtl8723au: Fold rtw_resume_process23a() into + rtw_resume() +Origin: https://git.kernel.org/linus/30c588e04c2ba3d2cc1ff06c2d0bc7ef9d3d9cf0 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/include/hal_intf.h | 1 - + drivers/staging/rtl8723au/os_dep/usb_intf.c | 9 --------- + 2 files changed, 10 deletions(-) + +diff --git a/drivers/staging/rtl8723au/include/hal_intf.h b/drivers/staging/rtl8723au/include/hal_intf.h +index 396decb..404acb5 100644 +--- a/drivers/staging/rtl8723au/include/hal_intf.h ++++ b/drivers/staging/rtl8723au/include/hal_intf.h +@@ -101,7 +101,6 @@ enum hardware_type { + + void rtw_hal_def_value_init23a(struct rtw_adapter *padapter); + int pm_netdev_open23a(struct net_device *pnetdev, u8 bnormal); +-int rtw_resume_process23a(struct rtw_adapter *padapter); + + int rtl8723au_hal_init(struct rtw_adapter *padapter); + int rtl8723au_hal_deinit(struct rtw_adapter *padapter); +diff --git a/drivers/staging/rtl8723au/os_dep/usb_intf.c b/drivers/staging/rtl8723au/os_dep/usb_intf.c +index aeaedcd..c75427f 100644 +--- a/drivers/staging/rtl8723au/os_dep/usb_intf.c ++++ b/drivers/staging/rtl8723au/os_dep/usb_intf.c +@@ -488,15 +488,6 @@ static int rtw_resume(struct usb_interface *pusb_intf) + { + struct dvobj_priv *dvobj = usb_get_intfdata(pusb_intf); + struct rtw_adapter *padapter = dvobj->if1; +- int ret; +- +- ret = rtw_resume_process23a(padapter); +- +- return ret; +-} +- +-int rtw_resume_process23a(struct rtw_adapter *padapter) +-{ + struct net_device *pnetdev; + struct pwrctrl_priv *pwrpriv = NULL; + int ret = -1; diff --git a/debian/patches/features/all/r8723au/0239-staging-rtl8723au-Fix-typo-in-rtw_mlme_ext.c.patch b/debian/patches/features/all/r8723au/0239-staging-rtl8723au-Fix-typo-in-rtw_mlme_ext.c.patch new file mode 100644 index 000000000..2396f96e1 --- /dev/null +++ b/debian/patches/features/all/r8723au/0239-staging-rtl8723au-Fix-typo-in-rtw_mlme_ext.c.patch @@ -0,0 +1,134 @@ +From: Masanari Iida +Date: Tue, 22 Jul 2014 23:42:13 +0900 +Subject: [239/249] staging: rtl8723au: Fix typo in rtw_mlme_ext.c +Origin: https://git.kernel.org/linus/fae062ad57def6abf344ba1765a90c83f1a2d143 + +This patch fix spelling typo in comments within rtw_mlme_ext.c + +Signed-off-by: Masanari Iida +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 26 +++++++++++++------------- + 1 file changed, 13 insertions(+), 13 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +index 18e4d24..c5fdcb8 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +@@ -2213,7 +2213,7 @@ exit: + + /**************************************************************************** + +-Following are some TX fuctions for WiFi MLME ++Following are some TX functions for WiFi MLME + + *****************************************************************************/ + +@@ -3352,7 +3352,7 @@ exit: + return; + } + +-/* when wait_ack is ture, this function shoule be called at process context */ ++/* when wait_ack is true, this function should be called at process context */ + static int _issue_nulldata23a(struct rtw_adapter *padapter, unsigned char *da, + unsigned int power_mode, int wait_ack) + { +@@ -3423,7 +3423,7 @@ exit: + return ret; + } + +-/* when wait_ms >0 , this function shoule be called at process context */ ++/* when wait_ms >0 , this function should be called at process context */ + /* da == NULL for station mode */ + int issue_nulldata23a(struct rtw_adapter *padapter, unsigned char *da, + unsigned int power_mode, int try_cnt, int wait_ms) +@@ -3434,7 +3434,7 @@ int issue_nulldata23a(struct rtw_adapter *padapter, unsigned char *da, + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; + +- /* da == NULL, assum it's null data for sta to ap*/ ++ /* da == NULL, assume it's null data for sta to ap*/ + if (da == NULL) + da = get_my_bssid23a(&pmlmeinfo->network); + +@@ -3476,7 +3476,7 @@ exit: + return ret; + } + +-/* when wait_ack is ture, this function shoule be called at process context */ ++/* when wait_ack is true, this function should be called at process context */ + static int _issue_qos_nulldata23a(struct rtw_adapter *padapter, + unsigned char *da, u16 tid, int wait_ack) + { +@@ -3551,7 +3551,7 @@ exit: + return ret; + } + +-/* when wait_ms >0 , this function shoule be called at process context */ ++/* when wait_ms >0 , this function should be called at process context */ + /* da == NULL for station mode */ + int issue_qos_nulldata23a(struct rtw_adapter *padapter, unsigned char *da, + u16 tid, int try_cnt, int wait_ms) +@@ -3562,7 +3562,7 @@ int issue_qos_nulldata23a(struct rtw_adapter *padapter, unsigned char *da, + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; + +- /* da == NULL, assum it's null data for sta to ap*/ ++ /* da == NULL, assume it's null data for sta to ap*/ + if (da == NULL) + da = get_my_bssid23a(&pmlmeinfo->network); + +@@ -4023,7 +4023,7 @@ int send_beacon23a(struct rtw_adapter *padapter) + + /**************************************************************************** + +-Following are some utitity fuctions for WiFi MLME ++Following are some utitity functions for WiFi MLME + + *****************************************************************************/ + +@@ -4303,7 +4303,7 @@ static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter, + } + + +- /* mark bss info receving from nearby channel as SignalQuality 101 */ ++ /* mark bss info receiving from nearby channel as SignalQuality 101 */ + if (bssid->DSConfig != rtw_get_oper_ch23a(padapter)) + bssid->PhyInfo.SignalQuality = 101; + +@@ -4325,7 +4325,7 @@ static void start_create_ibss(struct rtw_adapter* padapter) + /* update wireless mode */ + update_wireless_mode23a(padapter); + +- /* udpate capability */ ++ /* update capability */ + caps = pnetwork->capability; + update_capinfo23a(padapter, caps); + if (caps & WLAN_CAPABILITY_IBSS) { /* adhoc master */ +@@ -4377,7 +4377,7 @@ static void start_clnt_join(struct rtw_adapter* padapter) + /* update wireless mode */ + update_wireless_mode23a(padapter); + +- /* udpate capability */ ++ /* update capability */ + caps = pnetwork->capability; + update_capinfo23a(padapter, caps); + if (caps & WLAN_CAPABILITY_ESS) { +@@ -5073,7 +5073,7 @@ void mlmeext_joinbss_event_callback23a(struct rtw_adapter *padapter, + /* BCN interval */ + rtl8723a_set_beacon_interval(padapter, pmlmeinfo->bcn_interval); + +- /* udpate capability */ ++ /* update capability */ + update_capinfo23a(padapter, pmlmeinfo->capability); + + /* WMM, Update EDCA param */ +@@ -5851,7 +5851,7 @@ int sitesurvey_cmd_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf) + rtl8723a_odm_support_ability_clr(padapter, + DYNAMIC_FUNC_DISABLE); + +- /* config the initial gain under scaning, need to ++ /* config the initial gain under scanning, need to + write the BB registers */ + if (wdev_to_priv(padapter->rtw_wdev)->p2p_enabled == true) + initialgain = 0x30; diff --git a/debian/patches/features/all/r8723au/0240-staging-rtl8723au-Fix-typo-in-rtw_mlme.c.patch b/debian/patches/features/all/r8723au/0240-staging-rtl8723au-Fix-typo-in-rtw_mlme.c.patch new file mode 100644 index 000000000..cffdab153 --- /dev/null +++ b/debian/patches/features/all/r8723au/0240-staging-rtl8723au-Fix-typo-in-rtw_mlme.c.patch @@ -0,0 +1,125 @@ +From: Masanari Iida +Date: Tue, 22 Jul 2014 23:42:24 +0900 +Subject: [240/249] staging: rtl8723au: Fix typo in rtw_mlme.c +Origin: https://git.kernel.org/linus/7c17d2d9b4cec3d5a78f9fbf5c1081d8a653fa80 + +This patch fix spelling typo in comments within rtw_mlme.c + +Signed-off-by: Masanari Iida +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_mlme.c | 24 ++++++++++++------------ + 1 file changed, 12 insertions(+), 12 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c +index 4827280..c475b79 100644 +--- a/drivers/staging/rtl8723au/core/rtw_mlme.c ++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c +@@ -134,7 +134,7 @@ static void _rtw_free_network23a(struct mlme_priv *pmlmepriv, + /* + return the wlan_network with the matching addr + +- Shall be calle under atomic context... to avoid possible racing condition... ++ Shall be called under atomic context... to avoid possible racing condition... + */ + struct wlan_network * + rtw_find_network23a(struct rtw_queue *scanned_queue, u8 *addr) +@@ -395,7 +395,7 @@ void update_network23a(struct wlan_bssid_ex *dst, struct wlan_bssid_ex *src, + (u32)dst->PhyInfo.SignalQuality * 4) / 5; + rssi_final = src->Rssi+dst->Rssi * 4 / 5; + } else { +- /* bss info not receving from the right channel, use ++ /* bss info not receiving from the right channel, use + the original RX signal infos */ + ss_final = dst->PhyInfo.SignalStrength; + sq_final = dst->PhyInfo.SignalQuality; +@@ -490,7 +490,7 @@ static void rtw_update_scanned_network(struct rtw_adapter *adapter, + pnetwork->aid = 0; + pnetwork->join_res = 0; + +- /* bss info not receving from the right channel */ ++ /* bss info not receiving from the right channel */ + if (pnetwork->network.PhyInfo.SignalQuality == 101) + pnetwork->network.PhyInfo.SignalQuality = 0; + } else { +@@ -956,7 +956,7 @@ rtw_joinbss_update_stainfo(struct rtw_adapter *padapter, + /* Commented by Albert 2012/07/21 */ + /* When doing the WPS, the wps_ie_len won't equal to 0 */ + /* And the Wi-Fi driver shouldn't allow the data packet +- to be tramsmitted. */ ++ to be transmitted. */ + if (padapter->securitypriv.wps_ie_len != 0) { + psta->ieee8021x_blocked = true; + padapter->securitypriv.wps_ie_len = 0; +@@ -964,7 +964,7 @@ rtw_joinbss_update_stainfo(struct rtw_adapter *padapter, + + /* for A-MPDU Rx reordering buffer control for bmc_sta & + * sta_info */ +- /* if A-MPDU Rx is enabled, reseting ++ /* if A-MPDU Rx is enabled, resetting + rx_ordering_ctrl wstart_b(indicate_seq) to default + value = 0xffff */ + /* todo: check if AP can send A-MPDU packets */ +@@ -1073,7 +1073,7 @@ rtw_joinbss_update_network23a(struct rtw_adapter *padapter, + + /* + * Notes: +- * the fucntion could be > passive_level (the same context as Rx tasklet) ++ * the function could be > passive_level (the same context as Rx tasklet) + * pnetwork : returns from rtw23a_joinbss_event_cb + * ptarget_wlan: found from scanned_queue + * if join_res > 0, for (fw_state==WIFI_STATION_STATE), +@@ -1419,7 +1419,7 @@ void rtw_stadel_event_callback23a(struct rtw_adapter *adapter, const u8 *pbuf) + } + + /* +-* rtw23a_join_to_handler - Timeout/faliure handler for CMD JoinBss ++* rtw23a_join_to_handler - Timeout/failure handler for CMD JoinBss + * @adapter: pointer to _adapter structure + */ + void rtw23a_join_to_handler (unsigned long data) +@@ -1470,7 +1470,7 @@ void rtw23a_join_to_handler (unsigned long data) + } + + /* +-* rtw_scan_timeout_handler23a - Timeout/Faliure handler for CMD SiteSurvey ++* rtw_scan_timeout_handler23a - Timeout/Failure handler for CMD SiteSurvey + * @data: pointer to _adapter structure + */ + void rtw_scan_timeout_handler23a(unsigned long data) +@@ -2102,7 +2102,7 @@ void rtw_update_registrypriv_dev_network23a(struct rtw_adapter* adapter) + /* pdev_network->IELength = cpu_to_le32(sz); */ + } + +-/* the fucntion is at passive_level */ ++/* the function is at passive_level */ + void rtw_joinbss_reset23a(struct rtw_adapter *padapter) + { + u8 threshold; +@@ -2131,7 +2131,7 @@ void rtw_joinbss_reset23a(struct rtw_adapter *padapter) + rtl8723a_set_rxdma_agg_pg_th(padapter, threshold); + } + +-/* the fucntion is >= passive_level */ ++/* the function is >= passive_level */ + bool rtw_restructure_ht_ie23a(struct rtw_adapter *padapter, u8 *in_ie, + u8 *out_ie, uint in_len, uint *pout_len) + { +@@ -2203,7 +2203,7 @@ bool rtw_restructure_ht_ie23a(struct rtw_adapter *padapter, u8 *in_ie, + return phtpriv->ht_option; + } + +-/* the fucntion is > passive_level (in critical_section) */ ++/* the function is > passive_level (in critical_section) */ + void rtw_update_ht_cap23a(struct rtw_adapter *padapter, u8 *pie, uint ie_len) + { + u8 max_ampdu_sz; +@@ -2271,7 +2271,7 @@ void rtw_update_ht_cap23a(struct rtw_adapter *padapter, u8 *pie, uint ie_len) + pmlmeinfo->ht_cap.mcs.rx_mask[i] &= + MCS_rate_2R23A[i]; + } +- /* switch to the 40M Hz mode accoring to the AP */ ++ /* switch to the 40M Hz mode according to the AP */ + pmlmeext->cur_bwmode = HT_CHANNEL_WIDTH_40; + switch (pmlmeinfo->HT_info.ht_param & + IEEE80211_HT_PARAM_CHA_SEC_OFFSET) { diff --git a/debian/patches/features/all/r8723au/0241-staging-rtl8723au-Fix-typo-in-rtw_xmit.c.patch b/debian/patches/features/all/r8723au/0241-staging-rtl8723au-Fix-typo-in-rtw_xmit.c.patch new file mode 100644 index 000000000..1f47d0f66 --- /dev/null +++ b/debian/patches/features/all/r8723au/0241-staging-rtl8723au-Fix-typo-in-rtw_xmit.c.patch @@ -0,0 +1,71 @@ +From: Masanari Iida +Date: Tue, 22 Jul 2014 23:42:37 +0900 +Subject: [241/249] staging: rtl8723au: Fix typo in rtw_xmit.c +Origin: https://git.kernel.org/linus/c582db4cb82e69f92ca5111b5043129438d5fae9 + +This patch fix spelling typo in comments within rtw_xmit.c + +Signed-off-by: Masanari Iida +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_xmit.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_xmit.c b/drivers/staging/rtl8723au/core/rtw_xmit.c +index b917526..d83af87 100644 +--- a/drivers/staging/rtl8723au/core/rtw_xmit.c ++++ b/drivers/staging/rtl8723au/core/rtw_xmit.c +@@ -1197,7 +1197,7 @@ int rtw_xmitframe_coalesce23a(struct rtw_adapter *padapter, struct sk_buff *skb, + mpdu_len -= pattrib->icv_len; + + if (bmcst) +- /* don't do fragment to broadcat/multicast packets */ ++ /* don't do fragment to broadcast/multicast packets */ + mem_sz = min_t(s32, data_len, pattrib->pktlen); + else + mem_sz = min_t(s32, data_len, mpdu_len); +@@ -2011,7 +2011,7 @@ int xmitframe_enqueue_for_sleeping_sta23a(struct rtw_adapter *padapter, struct x + + /* DBG_8723A("enqueue, sq_len =%d, tim =%x\n", psta->sleepq_len, pstapriv->tim_bitmap); */ + +- /* tx bc/mc packets after upate bcn */ ++ /* tx bc/mc packets after update bcn */ + update_beacon23a(padapter, WLAN_EID_TIM, NULL, false); + + /* spin_unlock_bh(&psta->sleep_q.lock); */ +@@ -2068,7 +2068,7 @@ int xmitframe_enqueue_for_sleeping_sta23a(struct rtw_adapter *padapter, struct x + pstapriv->tim_bitmap |= CHKBIT(psta->aid); + + if (psta->sleepq_len == 1) { +- /* upate BCN for TIM IE */ ++ /* update BCN for TIM IE */ + update_beacon23a(padapter, WLAN_EID_TIM, + NULL, false); + } +@@ -2227,7 +2227,7 @@ void wakeup_sta_to_xmit23a(struct rtw_adapter *padapter, struct sta_info *psta) + if (psta->sleepq_len == 0) { + pstapriv->tim_bitmap &= ~CHKBIT(psta->aid); + +- /* upate BCN for TIM IE */ ++ /* update BCN for TIM IE */ + update_mask = BIT(0); + + if (psta->state&WIFI_SLEEP_STATE) +@@ -2274,7 +2274,7 @@ void wakeup_sta_to_xmit23a(struct rtw_adapter *padapter, struct sta_info *psta) + pstapriv->tim_bitmap &= ~BIT(0); + pstapriv->sta_dz_bitmap &= ~BIT(0); + +- /* upate BCN for TIM IE */ ++ /* update BCN for TIM IE */ + /* update_BCNTIM(padapter); */ + update_mask |= BIT(1); + } +@@ -2348,7 +2348,7 @@ void xmit_delivery_enabled_frames23a(struct rtw_adapter *padapter, + (wmmps_ac)) { + pstapriv->tim_bitmap &= ~CHKBIT(psta->aid); + +- /* upate BCN for TIM IE */ ++ /* update BCN for TIM IE */ + update_beacon23a(padapter, WLAN_EID_TIM, NULL, false); + } + } diff --git a/debian/patches/features/all/r8723au/0242-staging-rtl8723au-Fix-typo-in-rtw_ap.c.patch b/debian/patches/features/all/r8723au/0242-staging-rtl8723au-Fix-typo-in-rtw_ap.c.patch new file mode 100644 index 000000000..b13918d4f --- /dev/null +++ b/debian/patches/features/all/r8723au/0242-staging-rtl8723au-Fix-typo-in-rtw_ap.c.patch @@ -0,0 +1,98 @@ +From: Masanari Iida +Date: Tue, 22 Jul 2014 23:42:45 +0900 +Subject: [242/249] staging: rtl8723au: Fix typo in rtw_ap.c +Origin: https://git.kernel.org/linus/96b0a5baa99b225ff7a3af5a60584cb96f8cec85 + +This patch fix spelling typo in comments within rtw_ap.c + +Signed-off-by: Masanari Iida +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_ap.c | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_ap.c b/drivers/staging/rtl8723au/core/rtw_ap.c +index 14c8d4e..4d2880a 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ap.c ++++ b/drivers/staging/rtl8723au/core/rtw_ap.c +@@ -93,7 +93,7 @@ static void update_BCNTIM(struct rtw_adapter *padapter) + } else { + tim_ielen = 0; + +- /* calulate head_len */ ++ /* calculate head_len */ + offset = 0; + + /* get ssid_ie len */ +@@ -135,7 +135,7 @@ static void update_BCNTIM(struct rtw_adapter *padapter) + *dst_ie++= tim_ielen; + + *dst_ie++= 0;/* DTIM count */ +- *dst_ie++= 1;/* DTIM peroid */ ++ *dst_ie++= 1;/* DTIM period */ + + if (pstapriv->tim_bitmap & BIT(0))/* for bc/mc frames */ + *dst_ie++ = BIT(0);/* bitmap ctrl */ +@@ -243,7 +243,7 @@ void expire_timeout_chk23a(struct rtw_adapter *padapter) + + if (psta->state & WIFI_SLEEP_STATE) { + if (!(psta->state & WIFI_STA_ALIVE_CHK_STATE)) { +- /* to check if alive by another methods if staion is at ps mode. */ ++ /* to check if alive by another methods if station is at ps mode. */ + psta->expire_to = pstapriv->expire_to; + psta->state |= WIFI_STA_ALIVE_CHK_STATE; + +@@ -764,7 +764,7 @@ static void start_bss_network(struct rtw_adapter *padapter, u8 *pbuf) + /* update cur_wireless_mode */ + update_wireless_mode23a(padapter); + +- /* udpate capability after cur_wireless_mode updated */ ++ /* update capability after cur_wireless_mode updated */ + update_capinfo23a(padapter, pnetwork->capability); + + /* let pnetwork_mlmeext == pnetwork_mlme. */ +@@ -844,7 +844,7 @@ int rtw_check_beacon_data23a(struct rtw_adapter *padapter, + pbss_network->Ssid.ssid_len = ie_len; + } + +- /* chnnel */ ++ /* channel */ + channel = 0; + p = rtw_get_ie23a(ie, WLAN_EID_DS_PARAMS, &ie_len, + pbss_network->IELength); +@@ -1305,7 +1305,7 @@ void update_beacon23a(struct rtw_adapter *padapter, u8 ie_id, u8 *oui, u8 tx) + + /* + op_mode +-Set to 0 (HT pure) under the followign conditions ++Set to 0 (HT pure) under the following conditions + - all STAs in the BSS are 20/40 MHz HT in 20/40 MHz BSS or + - all STAs in the BSS are 20 MHz HT in 20 MHz BSS + Set to 1 (HT non-member protection) if there may be non-HT STAs +@@ -1387,7 +1387,7 @@ static int rtw_ht_operation_update(struct rtw_adapter *padapter) + + void associated_clients_update23a(struct rtw_adapter *padapter, u8 updated) + { +- /* update associcated stations cap. */ ++ /* update associated stations cap. */ + if (updated == true) + { + struct list_head *phead, *plist, *ptmp; +@@ -1572,7 +1572,7 @@ void bss_cap_update_on_sta_join23a(struct rtw_adapter *padapter, struct sta_info + update_beacon23a(padapter, WLAN_EID_HT_OPERATION, NULL, true); + } + +- /* update associcated stations cap. */ ++ /* update associated stations cap. */ + associated_clients_update23a(padapter, beacon_updated); + + DBG_8723A("%s, updated =%d\n", __func__, beacon_updated); +@@ -1641,7 +1641,7 @@ u8 bss_cap_update_on_sta_leave23a(struct rtw_adapter *padapter, struct sta_info + update_beacon23a(padapter, WLAN_EID_HT_OPERATION, NULL, true); + } + +- /* update associcated stations cap. */ ++ /* update associated stations cap. */ + + DBG_8723A("%s, updated =%d\n", __func__, beacon_updated); + diff --git a/debian/patches/features/all/r8723au/0243-staging-rtl8723au-Fix-typo-in-rtl8723au-core.patch b/debian/patches/features/all/r8723au/0243-staging-rtl8723au-Fix-typo-in-rtl8723au-core.patch new file mode 100644 index 000000000..26cd75939 --- /dev/null +++ b/debian/patches/features/all/r8723au/0243-staging-rtl8723au-Fix-typo-in-rtl8723au-core.patch @@ -0,0 +1,137 @@ +From: Masanari Iida +Date: Tue, 22 Jul 2014 23:42:53 +0900 +Subject: [243/249] staging: rtl8723au: Fix typo in rtl8723au/core +Origin: https://git.kernel.org/linus/808bcb4e78f7cd79feb89d53d54ea569cbba7386 + +This patch fix spelling typo in comments within +rtl8723au/core. + +Signed-off-by: Masanari Iida +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_cmd.c | 4 ++-- + drivers/staging/rtl8723au/core/rtw_efuse.c | 6 +++--- + drivers/staging/rtl8723au/core/rtw_ieee80211.c | 2 +- + drivers/staging/rtl8723au/core/rtw_pwrctrl.c | 2 +- + drivers/staging/rtl8723au/core/rtw_recv.c | 8 ++++---- + 5 files changed, 11 insertions(+), 11 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_cmd.c b/drivers/staging/rtl8723au/core/rtw_cmd.c +index df1ffb3..25d65b27 100644 +--- a/drivers/staging/rtl8723au/core/rtw_cmd.c ++++ b/drivers/staging/rtl8723au/core/rtw_cmd.c +@@ -322,7 +322,7 @@ post_process: + pcmd_callback, pcmd->cmdcode)); + rtw_free_cmd_obj23a(pcmd); + } else { +- /* need conider that free cmd_obj in ++ /* need consider that free cmd_obj in + rtw_cmd_callback */ + pcmd_callback(pcmd->padapter, pcmd); + } +@@ -736,7 +736,7 @@ int rtw_setstakey_cmd23a(struct rtw_adapter *padapter, u8 *psta, u8 unicast_key) + &psecuritypriv->dot118021XGrpKey[idx].skey, 16); + } + +- /* jeff: set this becasue at least sw key is ready */ ++ /* jeff: set this because at least sw key is ready */ + padapter->securitypriv.busetkipkey = 1; + + res = rtw_enqueue_cmd23a(pcmdpriv, ph2c); +diff --git a/drivers/staging/rtl8723au/core/rtw_efuse.c b/drivers/staging/rtl8723au/core/rtw_efuse.c +index cc063cb..345bff8 100644 +--- a/drivers/staging/rtl8723au/core/rtw_efuse.c ++++ b/drivers/staging/rtl8723au/core/rtw_efuse.c +@@ -59,7 +59,7 @@ static void Efuse_PowerSwitch(struct rtw_adapter *padapter, + rtl8723au_write8(padapter, REG_EFUSE_ACCESS, EFUSE_ACCESS_ON); + + /* 1.2V Power: From VDDON with Power +- Cut(0x0000h[15]), defualt valid */ ++ Cut(0x0000h[15]), default valid */ + tmpV16 = rtl8723au_read16(padapter, REG_SYS_ISO_CTRL); + if (!(tmpV16 & PWC_EV12V)) { + tmpV16 |= PWC_EV12V; +@@ -144,7 +144,7 @@ Efuse_CalculateWordCnts23a(u8 word_en) + /* */ + /* Description: */ + /* Execute E-Fuse read byte operation. */ +-/* Refered from SD1 Richard. */ ++/* Referred from SD1 Richard. */ + /* */ + /* Assumption: */ + /* 1. Boot from E-Fuse and successfully auto-load. */ +@@ -521,7 +521,7 @@ static int efuse_write8(struct rtw_adapter *padapter, u16 address, u8 *value) + } + + /* +- * read/wirte raw efuse data ++ * read/write raw efuse data + */ + int rtw_efuse_access23a(struct rtw_adapter *padapter, u8 bWrite, u16 start_addr, + u16 cnts, u8 *data) +diff --git a/drivers/staging/rtl8723au/core/rtw_ieee80211.c b/drivers/staging/rtl8723au/core/rtw_ieee80211.c +index 78a7b27..23e6662 100644 +--- a/drivers/staging/rtl8723au/core/rtw_ieee80211.c ++++ b/drivers/staging/rtl8723au/core/rtw_ieee80211.c +@@ -250,7 +250,7 @@ u8 *rtw_get_ie23a_ex(u8 *in_ie, uint in_len, u8 eid, u8 *oui, u8 oui_len, + * rtw_ies_remove_ie23a - Find matching IEs and remove + * @ies: Address of IEs to search + * @ies_len: Pointer of length of ies, will update to new length +- * @offset: The offset to start scarch ++ * @offset: The offset to start search + * @eid: Element ID to match + * @oui: OUI to match + * @oui_len: OUI length +diff --git a/drivers/staging/rtl8723au/core/rtw_pwrctrl.c b/drivers/staging/rtl8723au/core/rtw_pwrctrl.c +index ad06335..7fbbdaf 100644 +--- a/drivers/staging/rtl8723au/core/rtw_pwrctrl.c ++++ b/drivers/staging/rtl8723au/core/rtw_pwrctrl.c +@@ -498,7 +498,7 @@ inline void rtw_set_ips_deny23a(struct rtw_adapter *padapter, u32 ms) + /* + * rtw_pwr_wakeup - Wake the NIC up from: 1)IPS. 2)USB autosuspend + * @adapter: pointer to _adapter structure +-* @ips_deffer_ms: the ms wiil prevent from falling into IPS after wakeup ++* @ips_deffer_ms: the ms will prevent from falling into IPS after wakeup + * Return _SUCCESS or _FAIL + */ + +diff --git a/drivers/staging/rtl8723au/core/rtw_recv.c b/drivers/staging/rtl8723au/core/rtw_recv.c +index 690970e..a9f8183 100644 +--- a/drivers/staging/rtl8723au/core/rtw_recv.c ++++ b/drivers/staging/rtl8723au/core/rtw_recv.c +@@ -1185,7 +1185,7 @@ static int validate_recv_ctrl_frame(struct rtw_adapter *padapter, + + /* DBG_8723A("after handling ps-poll, tim =%x\n", pstapriv->tim_bitmap); */ + +- /* upate BCN for TIM IE */ ++ /* update BCN for TIM IE */ + /* update_BCNTIM(padapter); */ + update_beacon23a(padapter, WLAN_EID_TIM, + NULL, false); +@@ -1217,7 +1217,7 @@ static int validate_recv_ctrl_frame(struct rtw_adapter *padapter, + + pstapriv->tim_bitmap &= ~CHKBIT(psta->aid); + +- /* upate BCN for TIM IE */ ++ /* update BCN for TIM IE */ + /* update_BCNTIM(padapter); */ + update_beacon23a(padapter, WLAN_EID_TIM, + NULL, false); +@@ -2363,7 +2363,7 @@ void rtw_signal_stat_timer_hdl23a(unsigned long data) + recvpriv->signal_strength_data.avg_val; + num_signal_strength = + recvpriv->signal_strength_data.total_num; +- /* after avg_vals are accquired, we can re-stat */ ++ /* after avg_vals are acquired, we can re-stat */ + /* the signal values */ + recvpriv->signal_strength_data.update_req = 1; + } +@@ -2372,7 +2372,7 @@ void rtw_signal_stat_timer_hdl23a(unsigned long data) + /* update_req is clear, means we got rx */ + avg_signal_qual = recvpriv->signal_qual_data.avg_val; + num_signal_qual = recvpriv->signal_qual_data.total_num; +- /* after avg_vals are accquired, we can re-stat */ ++ /* after avg_vals are acquired, we can re-stat */ + /*the signal values */ + recvpriv->signal_qual_data.update_req = 1; + } diff --git a/debian/patches/features/all/r8723au/0244-staging-rtl8723au-RSSI_test-is-never-set.patch b/debian/patches/features/all/r8723au/0244-staging-rtl8723au-RSSI_test-is-never-set.patch new file mode 100644 index 000000000..dda80a548 --- /dev/null +++ b/debian/patches/features/all/r8723au/0244-staging-rtl8723au-RSSI_test-is-never-set.patch @@ -0,0 +1,42 @@ +From: Jes Sorensen +Date: Thu, 31 Jul 2014 10:36:41 +0200 +Subject: [244/249] staging: rtl8723au: RSSI_test is never set +Origin: https://git.kernel.org/linus/1a8dcde8d3ecf68924df3a5f6e38379b2b0a5415 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/odm_HWConfig.c | 7 ++----- + drivers/staging/rtl8723au/include/odm.h | 1 - + 2 files changed, 2 insertions(+), 6 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/odm_HWConfig.c b/drivers/staging/rtl8723au/hal/odm_HWConfig.c +index 409fde4..29d844d 100644 +--- a/drivers/staging/rtl8723au/hal/odm_HWConfig.c ++++ b/drivers/staging/rtl8723au/hal/odm_HWConfig.c +@@ -399,11 +399,8 @@ static void ODM_PhyStatusQuery23a_92CSeries(struct dm_odm_t *pDM_Odm, + { + odm_RxPhyStatus92CSeries_Parsing(pDM_Odm, pPhyInfo, + pPhyStatus, pPktinfo); +- if (pDM_Odm->RSSI_test) { +- /* Select the packets to do RSSI checking for antenna switching. */ +- } else { +- odm_Process_RSSIForDM(pDM_Odm, pPhyInfo, pPktinfo); +- } ++ ++ odm_Process_RSSIForDM(pDM_Odm, pPhyInfo, pPktinfo); + } + + void ODM_PhyStatusQuery23a(struct dm_odm_t *pDM_Odm, struct phy_info *pPhyInfo, +diff --git a/drivers/staging/rtl8723au/include/odm.h b/drivers/staging/rtl8723au/include/odm.h +index 41dba62..68ff7bb 100644 +--- a/drivers/staging/rtl8723au/include/odm.h ++++ b/drivers/staging/rtl8723au/include/odm.h +@@ -736,7 +736,6 @@ struct dm_odm_t { + struct false_alarm_stats FalseAlmCnt; + struct false_alarm_stats FlaseAlmCntBuddyAdapter; + struct sw_ant_sw DM_SWAT_Table; +- bool RSSI_test; + + struct edca_turbo DM_EDCA_Table; + u32 WMMEDCA_BE; diff --git a/debian/patches/features/all/r8723au/0245-staging-rtl8723au-Remove-two-never-set-variables.patch b/debian/patches/features/all/r8723au/0245-staging-rtl8723au-Remove-two-never-set-variables.patch new file mode 100644 index 000000000..a21f42d01 --- /dev/null +++ b/debian/patches/features/all/r8723au/0245-staging-rtl8723au-Remove-two-never-set-variables.patch @@ -0,0 +1,107 @@ +From: Jes Sorensen +Date: Thu, 31 Jul 2014 10:36:42 +0200 +Subject: [245/249] staging: rtl8723au: Remove two never set variables +Origin: https://git.kernel.org/linus/a48dd468efbb75a47447f82c849b1d43255a6792 + +struct registry_priv.usbss_enable and +struct pwrctrl_priv.bHWPwrPindetect are never set. + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_cmd.c | 13 ------------- + drivers/staging/rtl8723au/core/rtw_pwrctrl.c | 22 ---------------------- + drivers/staging/rtl8723au/include/drv_types.h | 1 - + drivers/staging/rtl8723au/include/rtw_pwrctrl.h | 1 - + 4 files changed, 37 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_cmd.c b/drivers/staging/rtl8723au/core/rtw_cmd.c +index 25d65b27..7241a5a 100644 +--- a/drivers/staging/rtl8723au/core/rtw_cmd.c ++++ b/drivers/staging/rtl8723au/core/rtw_cmd.c +@@ -203,22 +203,9 @@ void rtw_free_evt_priv23a(struct evt_priv *pevtpriv) + + static int rtw_cmd_filter(struct cmd_priv *pcmdpriv, struct cmd_obj *cmd_obj) + { +- struct drvextra_cmd_parm *pdrvextra_cmd_parm; + /* set to true to allow enqueuing cmd when hw_init_completed is false */ + u8 bAllow = false; + +- /* To decide allow or not */ +- if (pcmdpriv->padapter->pwrctrlpriv.bHWPwrPindetect && +- !pcmdpriv->padapter->registrypriv.usbss_enable) { +- if (cmd_obj->cmdcode == GEN_CMD_CODE(_Set_Drv_Extra)) { +- pdrvextra_cmd_parm = +- (struct drvextra_cmd_parm *)cmd_obj->parmbuf; +- if (pdrvextra_cmd_parm->ec_id == +- POWER_SAVING_CTRL_WK_CID) +- bAllow = true; +- } +- } +- + if (cmd_obj->cmdcode == GEN_CMD_CODE(_SetChannelPlan)) + bAllow = true; + +diff --git a/drivers/staging/rtl8723au/core/rtw_pwrctrl.c b/drivers/staging/rtl8723au/core/rtw_pwrctrl.c +index 7fbbdaf..d5fa26a 100644 +--- a/drivers/staging/rtl8723au/core/rtw_pwrctrl.c ++++ b/drivers/staging/rtl8723au/core/rtw_pwrctrl.c +@@ -150,34 +150,12 @@ void rtw_ps_processor23a(struct rtw_adapter*padapter) + { + struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; +- enum rt_rf_power_state rfpwrstate; + + pwrpriv->ps_processing = true; + + if (pwrpriv->bips_processing == true) + goto exit; + +- if (padapter->pwrctrlpriv.bHWPwrPindetect) { +- rfpwrstate = RfOnOffDetect23a(padapter); +- DBG_8723A("@@@@- #2 %s ==> rfstate:%s\n", __func__, +- (rfpwrstate == rf_on)?"rf_on":"rf_off"); +- +- if (rfpwrstate!= pwrpriv->rf_pwrstate) { +- if (rfpwrstate == rf_off) { +- pwrpriv->change_rfpwrstate = rf_off; +- padapter->bCardDisableWOHSM = true; +- rtw_hw_suspend23a(padapter); +- } else { +- pwrpriv->change_rfpwrstate = rf_on; +- rtw_hw_resume23a(padapter); +- } +- DBG_8723A("current rf_pwrstate(%s)\n", +- (pwrpriv->rf_pwrstate == rf_off) ? +- "rf_off":"rf_on"); +- } +- pwrpriv->pwr_state_check_cnts ++; +- } +- + if (pwrpriv->ips_mode_req == IPS_NONE) + goto exit; + +diff --git a/drivers/staging/rtl8723au/include/drv_types.h b/drivers/staging/rtl8723au/include/drv_types.h +index df55e5b..9870f87 100644 +--- a/drivers/staging/rtl8723au/include/drv_types.h ++++ b/drivers/staging/rtl8723au/include/drv_types.h +@@ -111,7 +111,6 @@ struct registry_priv { + u8 antdiv_cfg; + u8 antdiv_type; + +- u8 usbss_enable;/* 0:disable,1:enable */ + u8 hwpdn_mode;/* 0:disable,1:enable,2:decide by EFUSE config */ + u8 hwpwrp_detect;/* 0:disable,1:enable */ + +diff --git a/drivers/staging/rtl8723au/include/rtw_pwrctrl.h b/drivers/staging/rtl8723au/include/rtw_pwrctrl.h +index 1fa712f..be465c2 100644 +--- a/drivers/staging/rtl8723au/include/rtw_pwrctrl.h ++++ b/drivers/staging/rtl8723au/include/rtw_pwrctrl.h +@@ -199,7 +199,6 @@ struct pwrctrl_priv { + enum rt_rf_power_state change_rfpwrstate; + + u8 bHWPowerdown;/* if support hw power down */ +- u8 bHWPwrPindetect; + u8 bkeepfwalive; + unsigned long PS_BBRegBackup[PSBBREG_TOTALCNT]; + }; diff --git a/debian/patches/features/all/r8723au/0246-staging-rtl8723au-Remove-never-set-struct-pwrctrl_pr.patch b/debian/patches/features/all/r8723au/0246-staging-rtl8723au-Remove-never-set-struct-pwrctrl_pr.patch new file mode 100644 index 000000000..773fe24a3 --- /dev/null +++ b/debian/patches/features/all/r8723au/0246-staging-rtl8723au-Remove-never-set-struct-pwrctrl_pr.patch @@ -0,0 +1,58 @@ +From: Jes Sorensen +Date: Thu, 31 Jul 2014 10:36:43 +0200 +Subject: [246/249] staging: rtl8723au: Remove never set struct + pwrctrl_priv.bHWPowerdown +Origin: https://git.kernel.org/linus/06736c291492f90f779fe6127431036b73b0a7b4 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/hal/usb_halinit.c | 21 ++++++++------------- + drivers/staging/rtl8723au/include/rtw_pwrctrl.h | 1 - + 2 files changed, 8 insertions(+), 14 deletions(-) + +diff --git a/drivers/staging/rtl8723au/hal/usb_halinit.c b/drivers/staging/rtl8723au/hal/usb_halinit.c +index 681810e..b49bf33 100644 +--- a/drivers/staging/rtl8723au/hal/usb_halinit.c ++++ b/drivers/staging/rtl8723au/hal/usb_halinit.c +@@ -517,20 +517,15 @@ enum rt_rf_power_state RfOnOffDetect23a(struct rtw_adapter *pAdapter) + u8 val8; + enum rt_rf_power_state rfpowerstate = rf_off; + +- if (pAdapter->pwrctrlpriv.bHWPowerdown) { +- val8 = rtl8723au_read8(pAdapter, REG_HSISR); +- DBG_8723A("pwrdown, 0x5c(BIT7) =%02x\n", val8); +- rfpowerstate = (val8 & BIT(7)) ? rf_off : rf_on; +- } else { /* rf on/off */ +- rtl8723au_write8(pAdapter, REG_MAC_PINMUX_CFG, +- rtl8723au_read8(pAdapter, REG_MAC_PINMUX_CFG) & +- ~BIT(3)); +- val8 = rtl8723au_read8(pAdapter, REG_GPIO_IO_SEL); +- DBG_8723A("GPIO_IN =%02x\n", val8); +- rfpowerstate = (val8 & BIT(3)) ? rf_on : rf_off; +- } ++ rtl8723au_write8(pAdapter, REG_MAC_PINMUX_CFG, ++ rtl8723au_read8(pAdapter, ++ REG_MAC_PINMUX_CFG) & ~BIT(3)); ++ val8 = rtl8723au_read8(pAdapter, REG_GPIO_IO_SEL); ++ DBG_8723A("GPIO_IN =%02x\n", val8); ++ rfpowerstate = (val8 & BIT(3)) ? rf_on : rf_off; ++ + return rfpowerstate; +-} /* HalDetectPwrDownMode */ ++} + + void _ps_open_RF23a(struct rtw_adapter *padapter); + +diff --git a/drivers/staging/rtl8723au/include/rtw_pwrctrl.h b/drivers/staging/rtl8723au/include/rtw_pwrctrl.h +index be465c2..599fed9 100644 +--- a/drivers/staging/rtl8723au/include/rtw_pwrctrl.h ++++ b/drivers/staging/rtl8723au/include/rtw_pwrctrl.h +@@ -198,7 +198,6 @@ struct pwrctrl_priv { + enum rt_rf_power_state rf_pwrstate;/* cur power state */ + enum rt_rf_power_state change_rfpwrstate; + +- u8 bHWPowerdown;/* if support hw power down */ + u8 bkeepfwalive; + unsigned long PS_BBRegBackup[PSBBREG_TOTALCNT]; + }; diff --git a/debian/patches/features/all/r8723au/0247-staging-rtl8723au-Do-not-duplicate-kernel-provided-U.patch b/debian/patches/features/all/r8723au/0247-staging-rtl8723au-Do-not-duplicate-kernel-provided-U.patch new file mode 100644 index 000000000..f879e6df1 --- /dev/null +++ b/debian/patches/features/all/r8723au/0247-staging-rtl8723au-Do-not-duplicate-kernel-provided-U.patch @@ -0,0 +1,97 @@ +From: Jes Sorensen +Date: Thu, 31 Jul 2014 10:36:44 +0200 +Subject: [247/249] staging: rtl8723au: Do not duplicate kernel provided USB + macros +Origin: https://git.kernel.org/linus/c8875b2f1fc830f07cd08b8b5bce99471bfcffd9 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/os_dep/usb_intf.c | 45 +++++++---------------------- + 1 file changed, 10 insertions(+), 35 deletions(-) + +diff --git a/drivers/staging/rtl8723au/os_dep/usb_intf.c b/drivers/staging/rtl8723au/os_dep/usb_intf.c +index 06c885f..c5ff1b8 100644 +--- a/drivers/staging/rtl8723au/os_dep/usb_intf.c ++++ b/drivers/staging/rtl8723au/os_dep/usb_intf.c +@@ -59,44 +59,19 @@ static struct usb_driver rtl8723a_usb_drv = { + + static struct usb_driver *usb_drv = &rtl8723a_usb_drv; + +-static inline int RT_usb_endpoint_dir_in(const struct usb_endpoint_descriptor *epd) +-{ +- return (epd->bEndpointAddress & USB_ENDPOINT_DIR_MASK) == USB_DIR_IN; +-} +- +-static inline int RT_usb_endpoint_dir_out(const struct usb_endpoint_descriptor *epd) +-{ +- return (epd->bEndpointAddress & USB_ENDPOINT_DIR_MASK) == USB_DIR_OUT; +-} +- +-static inline int RT_usb_endpoint_xfer_int(const struct usb_endpoint_descriptor *epd) +-{ +- return (epd->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_INT; +-} +- +-static inline int RT_usb_endpoint_xfer_bulk(const struct usb_endpoint_descriptor *epd) +-{ +- return (epd->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_BULK; +-} +- + static inline int RT_usb_endpoint_is_bulk_in(const struct usb_endpoint_descriptor *epd) + { +- return RT_usb_endpoint_xfer_bulk(epd) && RT_usb_endpoint_dir_in(epd); ++ return usb_endpoint_xfer_bulk(epd) && usb_endpoint_dir_in(epd); + } + + static inline int RT_usb_endpoint_is_bulk_out(const struct usb_endpoint_descriptor *epd) + { +- return RT_usb_endpoint_xfer_bulk(epd) && RT_usb_endpoint_dir_out(epd); ++ return usb_endpoint_xfer_bulk(epd) && usb_endpoint_dir_out(epd); + } + + static inline int RT_usb_endpoint_is_int_in(const struct usb_endpoint_descriptor *epd) + { +- return RT_usb_endpoint_xfer_int(epd) && RT_usb_endpoint_dir_in(epd); +-} +- +-static inline int RT_usb_endpoint_num(const struct usb_endpoint_descriptor *epd) +-{ +- return epd->bEndpointAddress & USB_ENDPOINT_NUMBER_MASK; ++ return usb_endpoint_xfer_int(epd) && usb_endpoint_dir_in(epd); + } + + static int rtw_init_intf_priv(struct dvobj_priv *dvobj) +@@ -173,25 +148,25 @@ static struct dvobj_priv *usb_dvobj_init(struct usb_interface *usb_intf) + + if (RT_usb_endpoint_is_bulk_in(pendp_desc)) { + DBG_8723A("RT_usb_endpoint_is_bulk_in = %x\n", +- RT_usb_endpoint_num(pendp_desc)); ++ usb_endpoint_num(pendp_desc)); + pdvobjpriv->RtInPipe[pdvobjpriv->RtNumInPipes] = +- RT_usb_endpoint_num(pendp_desc); ++ usb_endpoint_num(pendp_desc); + pdvobjpriv->RtNumInPipes++; + } else if (RT_usb_endpoint_is_int_in(pendp_desc)) { + DBG_8723A("RT_usb_endpoint_is_int_in = %x, Interval = %x\n", +- RT_usb_endpoint_num(pendp_desc), ++ usb_endpoint_num(pendp_desc), + pendp_desc->bInterval); + pdvobjpriv->RtInPipe[pdvobjpriv->RtNumInPipes] = +- RT_usb_endpoint_num(pendp_desc); ++ usb_endpoint_num(pendp_desc); + pdvobjpriv->RtNumInPipes++; + } else if (RT_usb_endpoint_is_bulk_out(pendp_desc)) { + DBG_8723A("RT_usb_endpoint_is_bulk_out = %x\n", +- RT_usb_endpoint_num(pendp_desc)); ++ usb_endpoint_num(pendp_desc)); + pdvobjpriv->RtOutPipe[pdvobjpriv->RtNumOutPipes] = +- RT_usb_endpoint_num(pendp_desc); ++ usb_endpoint_num(pendp_desc); + pdvobjpriv->RtNumOutPipes++; + } +- pdvobjpriv->ep_num[i] = RT_usb_endpoint_num(pendp_desc); ++ pdvobjpriv->ep_num[i] = usb_endpoint_num(pendp_desc); + } + } + DBG_8723A("nr_endpoint =%d, in_num =%d, out_num =%d\n\n", diff --git a/debian/patches/features/all/r8723au/0248-staging-rtl8723au-usb_dvobj_init-Remove-unused-varia.patch b/debian/patches/features/all/r8723au/0248-staging-rtl8723au-usb_dvobj_init-Remove-unused-varia.patch new file mode 100644 index 000000000..66b0ca2b7 --- /dev/null +++ b/debian/patches/features/all/r8723au/0248-staging-rtl8723au-usb_dvobj_init-Remove-unused-varia.patch @@ -0,0 +1,33 @@ +From: Jes Sorensen +Date: Thu, 31 Jul 2014 10:36:45 +0200 +Subject: [248/249] staging: rtl8723au: usb_dvobj_init(): Remove unused + variable 'pdev_desc' +Origin: https://git.kernel.org/linus/bd2dec915e0aa1280d477fd4d08e28f90df321e0 + +Signed-off-by: Jes Sorensen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/os_dep/usb_intf.c | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/drivers/staging/rtl8723au/os_dep/usb_intf.c b/drivers/staging/rtl8723au/os_dep/usb_intf.c +index c5ff1b8..865743e 100644 +--- a/drivers/staging/rtl8723au/os_dep/usb_intf.c ++++ b/drivers/staging/rtl8723au/os_dep/usb_intf.c +@@ -91,7 +91,6 @@ static int rtw_deinit_intf_priv(struct dvobj_priv *dvobj) + static struct dvobj_priv *usb_dvobj_init(struct usb_interface *usb_intf) + { + struct dvobj_priv *pdvobjpriv; +- struct usb_device_descriptor *pdev_desc; + struct usb_host_config *phost_conf; + struct usb_config_descriptor *pconf_desc; + struct usb_host_interface *phost_iface; +@@ -119,8 +118,6 @@ static struct dvobj_priv *usb_dvobj_init(struct usb_interface *usb_intf) + pdvobjpriv->RtNumInPipes = 0; + pdvobjpriv->RtNumOutPipes = 0; + +- pdev_desc = &pusbd->descriptor; +- + phost_conf = pusbd->actconfig; + pconf_desc = &phost_conf->desc; + diff --git a/debian/patches/features/all/r8723au/0249-staging-rtl8723au-Fix-static-symbol-sparse-warning.patch b/debian/patches/features/all/r8723au/0249-staging-rtl8723au-Fix-static-symbol-sparse-warning.patch new file mode 100644 index 000000000..2d2418d71 --- /dev/null +++ b/debian/patches/features/all/r8723au/0249-staging-rtl8723au-Fix-static-symbol-sparse-warning.patch @@ -0,0 +1,58 @@ +From: Miguel Oliveira +Date: Fri, 1 Aug 2014 17:54:39 +0100 +Subject: [249/249] staging: rtl8723au: Fix static symbol sparse warning +Origin: https://git.kernel.org/linus/1a4493c55594842fa75a91ba95c73056a29f25e6 + +Fix sparse warning: +drivers/staging/rtl8723au/core/rtw_efuse.c:579:5: warning: symbol 'efuse_GetCurrentSize23a' was not declared. Should it be static? +by removing efuse_GetCurrentSize23a since its never used + +Signed-off-by: Miguel Oliveira +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/rtl8723au/core/rtw_efuse.c | 25 ------------------------- + 1 file changed, 25 deletions(-) + +diff --git a/drivers/staging/rtl8723au/core/rtw_efuse.c b/drivers/staging/rtl8723au/core/rtw_efuse.c +index 345bff8..fe092c5 100644 +--- a/drivers/staging/rtl8723au/core/rtw_efuse.c ++++ b/drivers/staging/rtl8723au/core/rtw_efuse.c +@@ -100,22 +100,6 @@ static void Efuse_PowerSwitch(struct rtw_adapter *padapter, + } + } + +-/*----------------------------------------------------------------------------- +- * Function: efuse_GetCurrentSize23a +- * +- * Overview: Get current efuse size!!! +- * +- * Input: NONE +- * +- * Output: NONE +- * +- * Return: NONE +- * +- * Revised History: +- * When Who Remark +- * 11/16/2008 MHC Create Version 0. +- * +- *---------------------------------------------------------------------------*/ + u16 + Efuse_GetCurrentSize23a(struct rtw_adapter *pAdapter, u8 efuseType) + { +@@ -576,15 +560,6 @@ u16 efuse_GetMaxSize23a(struct rtw_adapter *padapter) + return max_size; + } + /* */ +-int efuse_GetCurrentSize23a(struct rtw_adapter *padapter, u16 *size) +-{ +- Efuse_PowerSwitch(padapter, false, true); +- *size = Efuse_GetCurrentSize23a(padapter, EFUSE_WIFI); +- Efuse_PowerSwitch(padapter, false, false); +- +- return _SUCCESS; +-} +-/* */ + int rtw_efuse_map_read23a(struct rtw_adapter *padapter, + u16 addr, u16 cnts, u8 *data) + { diff --git a/debian/patches/series b/debian/patches/series index 60d92e955..705e1d2be 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -135,6 +135,255 @@ features/all/virtio-scsi-Implement-change_queue_depth-for-virtscs.patch debian/revert-staging-sm7xxfb-remove-driver.patch features/all/sfc-Adding-PCI-ID-for-Solarflare-7000-series-40G-net.patch features/all/sfc-Add-40G-link-capability-decoding.patch + +# Update r8723au to 3.17 +features/all/r8723au/0001-staging-rtl8723au-rtw_get_wps_ie23a-Remove-unused-de.patch +features/all/r8723au/0002-staging-rtl8723au-rtw_mlme_ext.c-Convert-rtw_get_wps.patch +features/all/r8723au/0003-staging-rtl8723au-rtw_mlme.c-Convert-rtw_get_wps_ie2.patch +features/all/r8723au/0004-staging-rtl8723au-ioctl_cfg80211.c-Convert-rtw_get_w.patch +features/all/r8723au/0005-staging-rtl8723au-rtw_ap.c-Convert-from-rtw_get_wps_.patch +features/all/r8723au/0006-staging-rtl8723au-Remove-obsolete-rtw_get_wps_ie23a.patch +features/all/r8723au/0009-staging-rtl8723au-rtw_mlme_ext.c-Fix-up-some-of-the-.patch +features/all/r8723au/0010-staging-rtl8723au-rtw_mlme.c-Remove-some-tab-and-par.patch +features/all/r8723au/0011-staging-rtl8723au-Use-struct-ieee80211_mcs_info-to-d.patch +features/all/r8723au/0012-staging-rtl8723au-Use-struct-ieee80211_ht_cap-and-as.patch +features/all/r8723au/0013-staging-rtl8723au-Use-correct-struct-for-WLAN_EID_HT.patch +features/all/r8723au/0014-staging-rtl8723au-Eliminate-struct-HT_info_element.patch +features/all/r8723au/0015-staging-rtl8723au-Don-t-carry-ht_cap_info-and-ht_par.patch +features/all/r8723au/0016-staging-rtl8723au-rtw_check_bcn_info23a-Use-capabili.patch +features/all/r8723au/0017-staging-rtl8723au-Remmove-buddy-adapter-linking.patch +features/all/r8723au/0018-staging-rtl8723au-Rewrite-update_beacon23a_info-tto-.patch +features/all/r8723au/0019-staging-rtl8723au-collect_bss_info23a-Collect-beacon.patch +features/all/r8723au/0020-staging-rtl8723au-collect_bss_info23a-ieee80211_mgmt.patch +features/all/r8723au/0021-staging-rtl8723au-rtw_update_ht_cap23a-Use-correct-m.patch +features/all/r8723au/0022-staging-rtl8723au-rtw_get_bcn_info23a-Use-cfg80211_-.patch +features/all/r8723au/0023-staging-rtl8723au-rtw_wlan_util.c-Use-cfg80211_-to-d.patch +features/all/r8723au/0024-staging-rtl8723au-Remove-obsolete-rtw_get_sec_ie23a.patch +features/all/r8723au/0025-staging-rtl8723au-Declare-rtw_get_wpa-2-_cipher_suit.patch +features/all/r8723au/0026-staging-rtl8723au-Make-WMM_param_handler23a-and-HT_c.patch +features/all/r8723au/0027-staging-rtl8723au-OnAssocRsp23a-Use-cfg80211_-to-par.patch +features/all/r8723au/0028-staging-rtl8723au-Remove-WMM_-defines.patch +features/all/r8723au/0029-staging-rtl8723au-Make-struct-ht_priv.ht_option-a-bo.patch +features/all/r8723au/0030-staging-rtl8723au-Be-consistent-in-how-htpriv.ht_opt.patch +features/all/r8723au/0031-staging-rtl8723au-Make-struct-htpriv.ampdu_enable-a-.patch +features/all/r8723au/0032-staging-rtl8723au-issue_auth-Convert-to-using-struct.patch +features/all/r8723au/0033-staging-rtl8723au-issue_assocrsp-Use-struct-ieee8021.patch +features/all/r8723au/0034-staging-rtl8723au-_issue_deauth-Use-struct-ieee80211.patch +features/all/r8723au/0035-staging-rtl8723au-issue_action_spct_ch_switch23a-Use.patch +features/all/r8723au/0036-staging-rtl8723au-issue_action_BSSCoexistPacket-Use-.patch +features/all/r8723au/0037-staging-rtl8723au-Do-not-xmit-BSS-Coexistence-manage.patch +features/all/r8723au/0038-staging-rtl8723au-Let-cfg80211-handle-public-action-.patch +features/all/r8723au/0039-staging-rtl8723au-ioctl_cfg80211.c-Use-struct-ieee80.patch +features/all/r8723au/0040-staging-rtl8723au-issue_action_BA23a-Use-struct-ieee.patch +features/all/r8723au/0041-staging-rtl8723au-Remove-obsolete-rtw_set_fixed_ie23.patch +features/all/r8723au/0042-staging-rtl8723au-Remove-duplicate-defines-of-IEEE80.patch +features/all/r8723au/0043-staging-rtl8723au-Remove-unused-defines-WEP_KEY_LEN-.patch +features/all/r8723au/0044-staging-rtl8723au-Remove-some-unused-80211-header-pa.patch +features/all/r8723au/0045-staging-rtl8723au-rtw_check_bcn_info23a-Use-ether_ad.patch +features/all/r8723au/0046-staging-rtl8723au-rtw_check_bcn_info23a-Don-t-make-a.patch +features/all/r8723au/0047-staging-rtl8723au-rtw_check_bcn_info23a-Don-t-search.patch +features/all/r8723au/0048-staging-rtl8723au-Declare-rtw_update_scanned_network.patch +features/all/r8723au/0049-staging-rtl8723au-rtw_survey_event_cb23a-Use-the-cor.patch +features/all/r8723au/0050-staging-rtl8723au-Do-not-embed-struct-wlan_bssid_ex-.patch +features/all/r8723au/0051-staging-rtl8723au-Allocate-struct-wlan_bssid_ex-in-c.patch +features/all/r8723au/0052-staging-rtl8723au-collect_bss_info-Don-t-memset-what.patch +features/all/r8723au/0053-staging-rtl8723au-free_scanqueue-Use-_rtw_free_netwo.patch +features/all/r8723au/0054-staging-rtl8723au-rtw_stadel_event_callback23a-Remov.patch +features/all/r8723au/0055-staging-rtl8723au-OnAuth23a-Use-ether_addr_copy.patch +features/all/r8723au/0056-staging-rtl8723au-Get-rid-of-IW_ESSID_MAX_SIZE.patch +features/all/r8723au/0057-staging-rtl8723au-Make-rtw_is_same_ibss23a-return-bo.patch +features/all/r8723au/0058-staging-rtl8723au-cfg80211_rtw_connect-Check-correct.patch +features/all/r8723au/0059-staging-rtl8723au-Fold-rtw_set_802_11_authentication.patch +features/all/r8723au/0060-staging-rtl8723au-Move-rtw_set_802_11_ssid23a-to-ioc.patch +features/all/r8723au/0061-staging-rtl8723au-cfg80211_rtw_connect-Clean-up-vari.patch +features/all/r8723au/0062-staging-rtl8723au-cfg80211_rtw_connect-Remove-obfusc.patch +features/all/r8723au/0063-staging-rtl8723au-cfg80211_rtw_connect-Simplify-ssid.patch +features/all/r8723au/0064-staging-rtl8723au-Pass-a-struct-wlan_network-to-rtw_.patch +features/all/r8723au/0065-staging-rtl8723au-rtw_set_ssid-This-is-never-called-.patch +features/all/r8723au/0066-staging-rtl8723au-rtw_cfg80211_add_wep-Use-WLAN_KEY_.patch +features/all/r8723au/0067-staging-rtl8723au-rtw_do_join23a-Use-correct-error-r.patch +features/all/r8723au/0068-staging-rtl8723au-Minor-debug-message-fixup.patch +features/all/r8723au/0069-staging-rtl8723au-Don-t-prepend-debug-console-messag.patch +features/all/r8723au/0070-staging-rtl8723au-Introduce-rtw_select_candidate_fro.patch +features/all/r8723au/0071-staging-rtl8723au-Introduce-rtw_do_join_network.patch +features/all/r8723au/0072-staging-rtl8723au-rtw_do_join23a-Use-__func__-to-get.patch +features/all/r8723au/0073-staging-rtl8723au-rtw_surveydone_event_callback23a-R.patch +features/all/r8723au/0074-staging-rtl8723au-Consolidate-duplicate-adhoc-joinin.patch +features/all/r8723au/0075-staging-rtl8723au-Remove-no-op-rtw_get_encrypt_decry.patch +features/all/r8723au/0076-staging-rtl8723au-to_join-will-no-be-true-if-_FW_LIN.patch +features/all/r8723au/0077-staging-rtl8723au-rtw_surveydone_event_callback23a-W.patch +features/all/r8723au/0078-staging-rtl8723au-rtw_select_and_join_from_scanned_q.patch +features/all/r8723au/0079-staging-rtl8723au-rtw_set_ssid-Use-rtw_do_join_netwo.patch +features/all/r8723au/0080-staging-rtl8723au-rtw_do_join23a-Don-t-start-scannin.patch +features/all/r8723au/0081-staging-rtl8723au-Move-rtw_do_join23a-to-rtw_mlme.c-.patch +features/all/r8723au/0082-staging-rtl8723au-rtw_get_cur_max_rate23a-Remove-dup.patch +features/all/r8723au/0083-staging-rtl8723au-rtw_get_cur_max_rate23a-We-are-in-.patch +features/all/r8723au/0084-staging-rtl8723au-Move-rtw_get_cur_max_rate23a-to-io.patch +features/all/r8723au/0085-staging-rtl8723au-rtw_set_802_11_bssid23a_list_scan-.patch +features/all/r8723au/0086-staging-rtl8723au-Don-t-run-regular-scans-in-the-dri.patch +features/all/r8723au/0087-staging-rtl8723au-Quiet-unused-variable-warning-when.patch +features/all/r8723au/0088-staging-rtl8723au-Move-FillH2CCmd-prototype-to-rtl87.patch +features/all/r8723au/0089-staging-rtl8723au-rtw_cfg80211_set_wpa_ie-Avoid-poin.patch +features/all/r8723au/0090-staging-rtl8723au-Add-compiler-check-for-Wtype-limit.patch +features/all/r8723au/0091-staging-rtl8723au-Remove-redundant-casting-in-rtw_ml.patch +features/all/r8723au/0092-staging-rtl8723au-Remove-redundant-casting-in-rtw_ml.patch +features/all/r8723au/0093-staging-rtl8723au-rtw_cfg80211_inform_bss-timestamp-.patch +features/all/r8723au/0094-staging-rtl8723au-rtw_cfg80211_inform_bss-Use-cfg802.patch +features/all/r8723au/0095-staging-rtl8723au-Save-timestamp-for-network-in-coll.patch +features/all/r8723au/0096-staging-rtl8723au-rtw_cfg80211_inform_bss-Report-the.patch +features/all/r8723au/0097-staging-rtl8723au-collect_bss_info-Save-capability-i.patch +features/all/r8723au/0098-staging-rtl8723au-rtw_cfg80211_inform_bss-Use-the-ca.patch +features/all/r8723au/0099-staging-rtl8723au-struct-wlan_bssid_ex-Rename-Beacon.patch +features/all/r8723au/0100-staging-rtl8723au-rtw_add_beacon-Replace-magic-const.patch +features/all/r8723au/0101-staging-rtl8723au-Update-bss-beacon-info-in-rtw_add_.patch +features/all/r8723au/0102-staging-rtl8723au-is_same_network23a-Use-the-capabil.patch +features/all/r8723au/0103-staging-rtl8723au-ConstructBeacon-Use-struct-ieee802.patch +features/all/r8723au/0104-staging-rtl8723au-issue_beacon23a-Do-not-copy-IEs-in.patch +features/all/r8723au/0105-staging-rtl8723au-issue_beacon23a-Use-struct-ieee802.patch +features/all/r8723au/0106-staging-rtl8723au-issue_probersp-Do-not-copy-the-IEs.patch +features/all/r8723au/0107-staging-rtl8723au-issue_assocrsp-Use-capability-from.patch +features/all/r8723au/0108-staging-rtl8723au-issue_assocreq-Use-struct-ieee8021.patch +features/all/r8723au/0109-staging-rtl8723au-rtw_get_bcn_info23a-Use-capability.patch +features/all/r8723au/0110-staging-rtl8723au-rtw_get_bcn_info23a-Use-__func__-i.patch +features/all/r8723au/0111-staging-rtl8723au-Remove-last-users-of-rtw_get_capab.patch +features/all/r8723au/0112-staging-rtl8723au-Eliminate-last-rtw_get_beacon_inte.patch +features/all/r8723au/0113-staging-rtl8723au-struct-mlme_priv-wps_beacon_ie-is-.patch +features/all/r8723au/0114-staging-rtl8723au-Remove-unused-mlme_priv-wps_assoc_.patch +features/all/r8723au/0115-staging-rtl8723au-Remove-unused-struct-mlme_priv-wps.patch +features/all/r8723au/0116-staging-rtl8723au-Remove-obsolete-mlme_priv-p2p_-ent.patch +features/all/r8723au/0117-staging-rtl8723au-Remove-unused-struct-mlme_priv-wfd.patch +features/all/r8723au/0118-staging-rtl8723au-Remove-write-only-struct-security_.patch +features/all/r8723au/0119-staging-rtl8723au-Remove-hopefully-last-duplicate-de.patch +features/all/r8723au/0120-staging-rtl8723au-rtw_survey_event_cb23a-Remember-to.patch +features/all/r8723au/0121-staging-rtl8723au-rtw_joinbss_update_network23a-upda.patch +features/all/r8723au/0122-staging-rtl8723au-issue_probersp-Don-t-insert-beacon.patch +features/all/r8723au/0123-staging-rtl8723au-issue_probersp-No-need-to-calculat.patch +features/all/r8723au/0124-staging-rtl8723au-Remove-unused-size-defines-for-mgm.patch +features/all/r8723au/0125-staging-rtl8723au-Remove-usage-of-_-RE-ASOCREQ_IE_OF.patch +features/all/r8723au/0126-staging-rtl8723au-Remove-unused-IE-offset-defines.patch +features/all/r8723au/0127-staging-rtl8723au-rtw_get_cur_max_rate-Use-_FIXED_IE.patch +features/all/r8723au/0128-staging-rtl8723au-rtw_add_beacon-Construct-a-full-be.patch +features/all/r8723au/0129-staging-rtl8723au-rtw_check_beacon_data23a-Capabilit.patch +features/all/r8723au/0130-staging-rtl8723au-Use-_FIXED_IE_LEN_-instead-of-hard.patch +features/all/r8723au/0131-staging-rtl8723au-ConstructProbeRsp-Use-struct-ieee8.patch +features/all/r8723au/0132-staging-rtl8723au-Remove-no-op-CheckFwRsvdPageConten.patch +features/all/r8723au/0133-staging-rtl8723au-Remove-unused-dump_txrpt_ccx_8723a.patch +features/all/r8723au/0134-staging-rtl8723au-issue_beacon23a-Fix-another-case-i.patch +features/all/r8723au/0135-staging-rtl8723au-issue_beacon23a-Determine-ie-buffe.patch +features/all/r8723au/0136-staging-rtl8723au-rtw_generate_ie23a-update-network-.patch +features/all/r8723au/0137-staging-rtl8723au-Stop-carrying-half-the-beacon-fram.patch +features/all/r8723au/0138-staging-rtl8723au-Get-rid-of-obsolete-_FIXED_IE_LENG.patch +features/all/r8723au/0139-staging-rtl8723au-Remove-unused-define-EID_BSSIntole.patch +features/all/r8723au/0140-staging-rtl8723au-Remove-unused-define-P80211CAPTURE.patch +features/all/r8723au/0141-staging-rtl8723au-rtw_get_wps_attr_content23a-Remove.patch +features/all/r8723au/0142-staging-rtl8723au-Remove-unused-RSN_VERSION_BSD23A.patch +features/all/r8723au/0143-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-Use.patch +features/all/r8723au/0144-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-is-.patch +features/all/r8723au/0145-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-Use.patch +features/all/r8723au/0146-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-Sto.patch +features/all/r8723au/0147-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-Use.patch +features/all/r8723au/0148-staging-rtl8723au-rtw_cfg80211_set_encryption-Pass-a.patch +features/all/r8723au/0149-staging-rtl8723au-rtw_cfg80211_set_encryption-Obtain.patch +features/all/r8723au/0150-staging-rtl8723au-rtw_cfg80211_set_encryption-Use-ke.patch +features/all/r8723au/0151-staging-rtl8723au-rtw_cfg80211_set_encryption-Obtain.patch +features/all/r8723au/0152-staging-rtl8723au-rtw_cfg80211_set_encryption-Pass-k.patch +features/all/r8723au/0153-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-Pas.patch +features/all/r8723au/0154-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-obt.patch +features/all/r8723au/0155-staging-rtl8723au-rtw_cfg80211_-ap_-set_encryption-A.patch +features/all/r8723au/0156-staging-rtl8723au-Stop-setting-ieee_parm-arguments-t.patch +features/all/r8723au/0157-staging-rtl8723au-rtw_cfg80211_-ap_-set_encryption-N.patch +features/all/r8723au/0158-staging-rtl8723au-rtw_cfg80211_-ap_-set_encryption-A.patch +features/all/r8723au/0159-staging-rtl8723au-rtw_cfg80211_-ap_-set_encryption-S.patch +features/all/r8723au/0160-staging-rtl8723au-Remove-obsolete-struct-ieee_parm.patch +features/all/r8723au/0161-staging-rtl8723au-Validate-keys-in-cfg80211_rtw_add_.patch +features/all/r8723au/0162-staging-rtl8723au-Eliminate-set_wep_key-and-call-set.patch +features/all/r8723au/0163-staging-rtl8723au-rtw_restruct_wmm_ie23a-Use-cfg8021.patch +features/all/r8723au/0164-staging-rtl8723au-rtw_append_pmkid-Adjust-for-IEs-ar.patch +features/all/r8723au/0165-staging-rtl8723au-Only-validate-vendor-specific-ies-.patch +features/all/r8723au/0166-staging-rtl8723au-OnAssocReq23a-Use-cfg80211_find_ve.patch +features/all/r8723au/0167-staging-rtl8723au-fix-sparse-warning.patch +features/all/r8723au/0168-staging-rtl8723au-usb_ops_linux.c-Add-blank-line-bet.patch +features/all/r8723au/0169-staging-rtl8723au-rtw_sta_mgt.c-Use-ether_addr_-copy.patch +features/all/r8723au/0170-staging-rtl8723au-rtw_sta_mgt.c-One-copy-of-the-broa.patch +features/all/r8723au/0171-staging-rtl8723au-rtw_allow_stainfo23a-Make-hwaddr-a.patch +features/all/r8723au/0172-staging-rtl8723au-Remove-unused-rtw_sreset_get_wifi_.patch +features/all/r8723au/0173-staging-rtl8723au-Wifi_Error_Status-isn-t-used-for-a.patch +features/all/r8723au/0174-staging-rtl8723au-sreset_priv-dbg_trigger_point-is-n.patch +features/all/r8723au/0175-staging-rtl8723au-Remove-no-op-rtl8723a_sreset_linke.patch +features/all/r8723au/0176-staging-rtl8723au-Remove-unused-rtw_pwr_wakeup_ex.patch +features/all/r8723au/0177-staging-rtl8723au-Clean-up-rtw_pm_set_ips23a.patch +features/all/r8723au/0178-staging-rtl8723au-Fold-power_saving_wk_hdl-into-rtw_.patch +features/all/r8723au/0179-staging-rtl8723au-Remove-unused-pwrctrl_priv-brfoffb.patch +features/all/r8723au/0180-staging-rtl8723au-Remove-unused-variables-from-struc.patch +features/all/r8723au/0181-staging-rtl8723au-pnp_bstop_trx-is-never-set.patch +features/all/r8723au/0182-staging-rtl8723au-pwrctrl_priv-ps_flag-is-never-set.patch +features/all/r8723au/0183-staging-rtl8723au-Remove-never-set-struct-rtw_adapte.patch +features/all/r8723au/0184-staging-rtl8723au-Sanitize-USB-read-write-functions.patch +features/all/r8723au/0185-staging-rtl8723au-Simplify-_BlockWrite-based-on-sane.patch +features/all/r8723au/0186-staging-rtl8723au-Remove-unnecessary-null-test-befor.patch +features/all/r8723au/0187-staging-rtl8723au-Remove-horrendous-code-obfuscation.patch +features/all/r8723au/0188-staging-rtl8723au-Call-to-ODM_ConfigRFWithHeaderFile.patch +features/all/r8723au/0189-staging-rtl8723au-Eliminate-wrapper-ODM_ConfigRFWith.patch +features/all/r8723au/0190-staging-rtl8723au-Remove-zero-value-calculation-adde.patch +features/all/r8723au/0191-staging-rtl8723au-Remove-pointless-wrappers-for-call.patch +features/all/r8723au/0192-staging-rtl8723au-Remove-unused-ODM_ReadAndConfig_PH.patch +features/all/r8723au/0193-staging-rtl8723au-Remove-ugly-wrapper-ODM_ConfigBBWi.patch +features/all/r8723au/0194-staging-rtl8723au-Remove-unused-ODM_MacStatusQuery23.patch +features/all/r8723au/0195-staging-rtl8723au-Remove-obfuscating-wrapper-ODM_Con.patch +features/all/r8723au/0196-staging-rtl8723au-Remove-unncessary-wrapper-PHY_RFCo.patch +features/all/r8723au/0197-staging-rtl8723au-Eliminate-Set_MSR-wrapper-call.patch +features/all/r8723au/0198-staging-rtl8723au-Reduce-number-of-duplicate-defines.patch +features/all/r8723au/0199-staging-rtl8723au-Use-rtl8723au_set_media_status-to-.patch +features/all/r8723au/0200-staging-rtl8723au-Corrections-in-the-coding-style.patch +features/all/r8723au/0201-staging-rtl8723au-Remove-write-only-variable-UsbRxHi.patch +features/all/r8723au/0202-staging-rtl8723au-Remove-no-op-usb_AggSetting.patch +features/all/r8723au/0203-staging-rtl8723au-Remove-no-op-_InitOperation_mode-f.patch +features/all/r8723au/0204-staging-rtl8723au-Remove-RegBcnCtrlVal.patch +features/all/r8723au/0205-staging-rtl8723au-Use-proper-name-REG_CAMCMD-and-rem.patch +features/all/r8723au/0206-staging-rtl8723au-rtl8723a_InitBeaconParameters-Remo.patch +features/all/r8723au/0207-staging-rtl8723au-ODM_IC_11N_SERIES-is-always-true-f.patch +features/all/r8723au/0208-staging-rtl8723au-Remove-unused-odm_RegDefine11AC.h.patch +features/all/r8723au/0209-staging-rtl8723au-Remove-pointless-IS_STA_VALID-macr.patch +features/all/r8723au/0210-staging-rtl8723au-Fold-odm_EdcaTurboCheck23aCE23a-in.patch +features/all/r8723au/0211-staging-rtl8723au-Declare-odm_EdcaTurbo-functions-st.patch +features/all/r8723au/0212-staging-rtl8723au-bDMInitialGainEnable-is-always-tru.patch +features/all/r8723au/0213-staging-rtl8723au-Remove-unused-DefaultInitialGain-a.patch +features/all/r8723au/0214-staging-rtl8723au-Remove-some-redundant-check-for-hw.patch +features/all/r8723au/0215-staging-rtl8723au-Remove-no-op-rtl8723a_deinit_dm_pr.patch +features/all/r8723au/0216-staging-rtl8723au-Remove-no-op-function-dm_CheckStat.patch +features/all/r8723au/0217-staging-rtl8723au-Remove-write-only-struct-dm_priv-D.patch +features/all/r8723au/0218-staging-rtl8723au-Remove-write-only-variables-struct.patch +features/all/r8723au/0219-staging-rtl8723au-Remove-ODM_CMNINFO_-RT-X_UNI-and-r.patch +features/all/r8723au/0220-staging-rtl8723au-Remove-useless-ODM_CMNINFO_-WM_MOD.patch +features/all/r8723au/0221-staging-rtl8723au-Remove-another-pile-of-useless-ODM.patch +features/all/r8723au/0222-staging-rtl8723au-Remove-another-pile-of-awful-unuse.patch +features/all/r8723au/0223-staging-rtl8723au-We-don-t-need-two-APIs-to-set-pHal.patch +features/all/r8723au/0224-staging-rtl8723au-ODM_DMWatchdog23a-Take-a-struct-ha.patch +features/all/r8723au/0225-staging-rtl8723au-Eliminate-ugly-ODM_CMNINFO_SEC_CHN.patch +features/all/r8723au/0226-staging-rtl8723au-Eliminate-ODM_CMNINFO_BW-usage.patch +features/all/r8723au/0227-staging-rtl8723au-Eliminate-ODM_CMNINFO_CHNL-usage.patch +features/all/r8723au/0228-staging-rtl8723au-Eliminate-ODM_CMNINFO_SCAN-related.patch +features/all/r8723au/0229-staging-rtl8723au-Eliminate-ODM_CMNINFO_POWER_SAVING.patch +features/all/r8723au/0230-staging-rtl8723au-Eliminate-obsolete-odm_CmnInfoHook.patch +features/all/r8723au/0231-staging-rtl8723au-Remove-obsolete-ODM23a_CmnInfoHook.patch +features/all/r8723au/0232-staging-rtl8723au-Merge-Init_ODM_ComInfo_8723a-into-.patch +features/all/r8723au/0233-staging-rtl8723au-odm_CommonInfoSelfInit23a-Use-prop.patch +features/all/r8723au/0234-staging-rtl8723au-Remove-a-pile-of-fluff-for-calling.patch +features/all/r8723au/0235-staging-rtl8723au-Fold-rtl8723a_set_nav_upper-into-r.patch +features/all/r8723au/0236-staging-rtl8723au-Reduce-wrapper-layers-around-hal_-.patch +features/all/r8723au/0237-staging-rtl8723au-Fold-rtw_resume_process23a-into-rt.patch +features/all/r8723au/0239-staging-rtl8723au-Fix-typo-in-rtw_mlme_ext.c.patch +features/all/r8723au/0240-staging-rtl8723au-Fix-typo-in-rtw_mlme.c.patch +features/all/r8723au/0241-staging-rtl8723au-Fix-typo-in-rtw_xmit.c.patch +features/all/r8723au/0242-staging-rtl8723au-Fix-typo-in-rtw_ap.c.patch +features/all/r8723au/0243-staging-rtl8723au-Fix-typo-in-rtl8723au-core.patch +features/all/r8723au/0244-staging-rtl8723au-RSSI_test-is-never-set.patch +features/all/r8723au/0245-staging-rtl8723au-Remove-two-never-set-variables.patch +features/all/r8723au/0246-staging-rtl8723au-Remove-never-set-struct-pwrctrl_pr.patch +features/all/r8723au/0247-staging-rtl8723au-Do-not-duplicate-kernel-provided-U.patch +features/all/r8723au/0248-staging-rtl8723au-usb_dvobj_init-Remove-unused-varia.patch +features/all/r8723au/0249-staging-rtl8723au-Fix-static-symbol-sparse-warning.patch + bugfix/s390/s390-3215-fix-tty-output-containing-tabs.patch bugfix/all/fold-swapping-d_name.hash-into-switch_names.patch bugfix/all/vfs-Don-t-exchange-short-filenames-unconditionally.patch