[x86] r8723au: Backport changes up to Linux 3.17 (Closes: #765685)
svn path=/dists/sid/linux/; revision=21973
This commit is contained in:
parent
7d3bad8448
commit
7088f8b607
|
@ -5,6 +5,7 @@ linux (3.16.5-2) UNRELEASED; urgency=medium
|
||||||
(Closes: #764804)
|
(Closes: #764804)
|
||||||
* [i386/486] Update description to say that the processor must have a TSC
|
* [i386/486] Update description to say that the processor must have a TSC
|
||||||
(see #766105)
|
(see #766105)
|
||||||
|
* [x86] r8723au: Backport changes up to Linux 3.17 (Closes: #765685)
|
||||||
|
|
||||||
[ Mauricio Faria de Oliveira ]
|
[ Mauricio Faria de Oliveira ]
|
||||||
* [ppc64el] Disable CONFIG_CMDLINE{,_BOOL} usage for setting consoles
|
* [ppc64el] Disable CONFIG_CMDLINE{,_BOOL} usage for setting consoles
|
||||||
|
|
156
debian/patches/features/all/r8723au/0001-staging-rtl8723au-rtw_get_wps_ie23a-Remove-unused-de.patch
vendored
Normal file
156
debian/patches/features/all/r8723au/0001-staging-rtl8723au-rtw_get_wps_ie23a-Remove-unused-de.patch
vendored
Normal file
|
@ -0,0 +1,156 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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 */
|
147
debian/patches/features/all/r8723au/0002-staging-rtl8723au-rtw_mlme_ext.c-Convert-rtw_get_wps.patch
vendored
Normal file
147
debian/patches/features/all/r8723au/0002-staging-rtl8723au-rtw_mlme_ext.c-Convert-rtw_get_wps.patch
vendored
Normal file
|
@ -0,0 +1,147 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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);
|
||||||
|
|
|
@ -0,0 +1,42 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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;
|
128
debian/patches/features/all/r8723au/0004-staging-rtl8723au-ioctl_cfg80211.c-Convert-rtw_get_w.patch
vendored
Normal file
128
debian/patches/features/all/r8723au/0004-staging-rtl8723au-ioctl_cfg80211.c-Convert-rtw_get_w.patch
vendored
Normal file
|
@ -0,0 +1,128 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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 */
|
|
@ -0,0 +1,78 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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;
|
|
@ -0,0 +1,79 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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);
|
||||||
|
|
621
debian/patches/features/all/r8723au/0009-staging-rtl8723au-rtw_mlme_ext.c-Fix-up-some-of-the-.patch
vendored
Normal file
621
debian/patches/features/all/r8723au/0009-staging-rtl8723au-rtw_mlme_ext.c-Fix-up-some-of-the-.patch
vendored
Normal file
|
@ -0,0 +1,621 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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 */
|
102
debian/patches/features/all/r8723au/0010-staging-rtl8723au-rtw_mlme.c-Remove-some-tab-and-par.patch
vendored
Normal file
102
debian/patches/features/all/r8723au/0010-staging-rtl8723au-rtw_mlme.c-Remove-some-tab-and-par.patch
vendored
Normal file
|
@ -0,0 +1,102 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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));
|
236
debian/patches/features/all/r8723au/0011-staging-rtl8723au-Use-struct-ieee80211_mcs_info-to-d.patch
vendored
Normal file
236
debian/patches/features/all/r8723au/0011-staging-rtl8723au-Use-struct-ieee80211_mcs_info-to-d.patch
vendored
Normal file
|
@ -0,0 +1,236 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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;
|
426
debian/patches/features/all/r8723au/0012-staging-rtl8723au-Use-struct-ieee80211_ht_cap-and-as.patch
vendored
Normal file
426
debian/patches/features/all/r8723au/0012-staging-rtl8723au-Use-struct-ieee80211_ht_cap-and-as.patch
vendored
Normal file
|
@ -0,0 +1,426 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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];
|
|
@ -0,0 +1,66 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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];
|
331
debian/patches/features/all/r8723au/0014-staging-rtl8723au-Eliminate-struct-HT_info_element.patch
vendored
Normal file
331
debian/patches/features/all/r8723au/0014-staging-rtl8723au-Eliminate-struct-HT_info_element.patch
vendored
Normal file
|
@ -0,0 +1,331 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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;
|
146
debian/patches/features/all/r8723au/0015-staging-rtl8723au-Don-t-carry-ht_cap_info-and-ht_par.patch
vendored
Normal file
146
debian/patches/features/all/r8723au/0015-staging-rtl8723au-Don-t-carry-ht_cap_info-and-ht_par.patch
vendored
Normal file
|
@ -0,0 +1,146 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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 {
|
|
@ -0,0 +1,25 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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;
|
168
debian/patches/features/all/r8723au/0017-staging-rtl8723au-Remmove-buddy-adapter-linking.patch
vendored
Normal file
168
debian/patches/features/all/r8723au/0017-staging-rtl8723au-Remmove-buddy-adapter-linking.patch
vendored
Normal file
|
@ -0,0 +1,168 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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);
|
144
debian/patches/features/all/r8723au/0018-staging-rtl8723au-Rewrite-update_beacon23a_info-tto-.patch
vendored
Normal file
144
debian/patches/features/all/r8723au/0018-staging-rtl8723au-Rewrite-update_beacon23a_info-tto-.patch
vendored
Normal file
|
@ -0,0 +1,144 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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);
|
|
@ -0,0 +1,58 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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);
|
|
@ -0,0 +1,59 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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;
|
|
@ -0,0 +1,42 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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;
|
|
@ -0,0 +1,64 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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;
|
||||||
|
}
|
|
@ -0,0 +1,45 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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
|
111
debian/patches/features/all/r8723au/0024-staging-rtl8723au-Remove-obsolete-rtw_get_sec_ie23a.patch
vendored
Normal file
111
debian/patches/features/all/r8723au/0024-staging-rtl8723au-Remove-obsolete-rtw_get_sec_ie23a.patch
vendored
Normal file
|
@ -0,0 +1,111 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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);
|
||||||
|
|
|
@ -0,0 +1,84 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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);
|
||||||
|
|
|
@ -0,0 +1,52 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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);
|
||||||
|
|
104
debian/patches/features/all/r8723au/0027-staging-rtl8723au-OnAssocRsp23a-Use-cfg80211_-to-par.patch
vendored
Normal file
104
debian/patches/features/all/r8723au/0027-staging-rtl8723au-OnAssocRsp23a-Use-cfg80211_-to-par.patch
vendored
Normal file
|
@ -0,0 +1,104 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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;
|
||||||
|
|
58
debian/patches/features/all/r8723au/0028-staging-rtl8723au-Remove-WMM_-defines.patch
vendored
Normal file
58
debian/patches/features/all/r8723au/0028-staging-rtl8723au-Remove-WMM_-defines.patch
vendored
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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
|
||||||
|
------------------------------------------------------------------------------*/
|
||||||
|
|
|
@ -0,0 +1,58 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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,
|
112
debian/patches/features/all/r8723au/0030-staging-rtl8723au-Be-consistent-in-how-htpriv.ht_opt.patch
vendored
Normal file
112
debian/patches/features/all/r8723au/0030-staging-rtl8723au-Be-consistent-in-how-htpriv.ht_opt.patch
vendored
Normal file
|
@ -0,0 +1,112 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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))
|
|
@ -0,0 +1,64 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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 */
|
191
debian/patches/features/all/r8723au/0032-staging-rtl8723au-issue_auth-Convert-to-using-struct.patch
vendored
Normal file
191
debian/patches/features/all/r8723au/0032-staging-rtl8723au-issue_auth-Convert-to-using-struct.patch
vendored
Normal file
|
@ -0,0 +1,191 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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);
|
|
@ -0,0 +1,75 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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,
|
|
@ -0,0 +1,63 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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;
|
||||||
|
|
|
@ -0,0 +1,70 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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);
|
|
@ -0,0 +1,88 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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 */
|
174
debian/patches/features/all/r8723au/0037-staging-rtl8723au-Do-not-xmit-BSS-Coexistence-manage.patch
vendored
Normal file
174
debian/patches/features/all/r8723au/0037-staging-rtl8723au-Do-not-xmit-BSS-Coexistence-manage.patch
vendored
Normal file
|
@ -0,0 +1,174 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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;
|
357
debian/patches/features/all/r8723au/0038-staging-rtl8723au-Let-cfg80211-handle-public-action-.patch
vendored
Normal file
357
debian/patches/features/all/r8723au/0038-staging-rtl8723au-Let-cfg80211-handle-public-action-.patch
vendored
Normal file
|
@ -0,0 +1,357 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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++;
|
|
@ -0,0 +1,74 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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) */
|
||||||
|
}
|
247
debian/patches/features/all/r8723au/0040-staging-rtl8723au-issue_action_BA23a-Use-struct-ieee.patch
vendored
Normal file
247
debian/patches/features/all/r8723au/0040-staging-rtl8723au-issue_action_BA23a-Use-struct-ieee.patch
vendored
Normal file
|
@ -0,0 +1,247 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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);
|
|
@ -0,0 +1,43 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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 {
|
|
@ -0,0 +1,52 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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);
|
|
@ -0,0 +1,33 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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
|
|
@ -0,0 +1,37 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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)
|
|
@ -0,0 +1,30 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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;
|
||||||
|
}
|
218
debian/patches/features/all/r8723au/0046-staging-rtl8723au-rtw_check_bcn_info23a-Don-t-make-a.patch
vendored
Normal file
218
debian/patches/features/all/r8723au/0046-staging-rtl8723au-rtw_check_bcn_info23a-Don-t-make-a.patch
vendored
Normal file
|
@ -0,0 +1,218 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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;
|
||||||
|
}
|
107
debian/patches/features/all/r8723au/0047-staging-rtl8723au-rtw_check_bcn_info23a-Don-t-search.patch
vendored
Normal file
107
debian/patches/features/all/r8723au/0047-staging-rtl8723au-rtw_check_bcn_info23a-Don-t-search.patch
vendored
Normal file
|
@ -0,0 +1,107 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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));
|
|
@ -0,0 +1,50 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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);
|
|
@ -0,0 +1,27 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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));
|
|
@ -0,0 +1,79 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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;
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
173
debian/patches/features/all/r8723au/0051-staging-rtl8723au-Allocate-struct-wlan_bssid_ex-in-c.patch
vendored
Normal file
173
debian/patches/features/all/r8723au/0051-staging-rtl8723au-Allocate-struct-wlan_bssid_ex-in-c.patch
vendored
Normal file
|
@ -0,0 +1,173 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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);
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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,
|
|
@ -0,0 +1,30 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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);
|
|
@ -0,0 +1,25 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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));
|
||||||
|
|
24
debian/patches/features/all/r8723au/0055-staging-rtl8723au-OnAuth23a-Use-ether_addr_copy.patch
vendored
Normal file
24
debian/patches/features/all/r8723au/0055-staging-rtl8723au-OnAuth23a-Use-ether_addr_copy.patch
vendored
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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);
|
||||||
|
|
53
debian/patches/features/all/r8723au/0056-staging-rtl8723au-Get-rid-of-IW_ESSID_MAX_SIZE.patch
vendored
Normal file
53
debian/patches/features/all/r8723au/0056-staging-rtl8723au-Get-rid-of-IW_ESSID_MAX_SIZE.patch
vendored
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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;
|
||||||
|
}
|
105
debian/patches/features/all/r8723au/0057-staging-rtl8723au-Make-rtw_is_same_ibss23a-return-bo.patch
vendored
Normal file
105
debian/patches/features/all/r8723au/0057-staging-rtl8723au-Make-rtw_is_same_ibss23a-return-bo.patch
vendored
Normal file
|
@ -0,0 +1,105 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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,
|
|
@ -0,0 +1,25 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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;
|
||||||
|
}
|
|
@ -0,0 +1,90 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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 <drv_types.h>
|
||||||
|
|
||||||
|
-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); */
|
325
debian/patches/features/all/r8723au/0060-staging-rtl8723au-Move-rtw_set_802_11_ssid23a-to-ioc.patch
vendored
Normal file
325
debian/patches/features/all/r8723au/0060-staging-rtl8723au-Move-rtw_set_802_11_ssid23a-to-ioc.patch
vendored
Normal file
|
@ -0,0 +1,325 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
140
debian/patches/features/all/r8723au/0061-staging-rtl8723au-cfg80211_rtw_connect-Clean-up-vari.patch
vendored
Normal file
140
debian/patches/features/all/r8723au/0061-staging-rtl8723au-cfg80211_rtw_connect-Clean-up-vari.patch
vendored
Normal file
|
@ -0,0 +1,140 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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;
|
||||||
|
}
|
|
@ -0,0 +1,58 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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");
|
||||||
|
|
|
@ -0,0 +1,52 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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;
|
107
debian/patches/features/all/r8723au/0064-staging-rtl8723au-Pass-a-struct-wlan_network-to-rtw_.patch
vendored
Normal file
107
debian/patches/features/all/r8723au/0064-staging-rtl8723au-Pass-a-struct-wlan_network-to-rtw_.patch
vendored
Normal file
|
@ -0,0 +1,107 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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;
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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_,
|
|
@ -0,0 +1,31 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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__));
|
|
@ -0,0 +1,27 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
34
debian/patches/features/all/r8723au/0068-staging-rtl8723au-Minor-debug-message-fixup.patch
vendored
Normal file
34
debian/patches/features/all/r8723au/0068-staging-rtl8723au-Minor-debug-message-fixup.patch
vendored
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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);
|
|
@ -0,0 +1,25 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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(...) \
|
|
@ -0,0 +1,89 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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 <rtw_ioctl_set.h>
|
||||||
|
#include <rtw_sreset.h>
|
||||||
|
|
||||||
|
+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;
|
||||||
|
}
|
||||||
|
|
119
debian/patches/features/all/r8723au/0071-staging-rtl8723au-Introduce-rtw_do_join_network.patch
vendored
Normal file
119
debian/patches/features/all/r8723au/0071-staging-rtl8723au-Introduce-rtw_do_join_network.patch
vendored
Normal file
|
@ -0,0 +1,119 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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);
|
|
@ -0,0 +1,57 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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;
|
|
@ -0,0 +1,25 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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));
|
221
debian/patches/features/all/r8723au/0074-staging-rtl8723au-Consolidate-duplicate-adhoc-joinin.patch
vendored
Normal file
221
debian/patches/features/all/r8723au/0074-staging-rtl8723au-Consolidate-duplicate-adhoc-joinin.patch
vendored
Normal file
|
@ -0,0 +1,221 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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);
|
|
@ -0,0 +1,51 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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);
|
|
@ -0,0 +1,45 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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(
|
|
@ -0,0 +1,33 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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);
|
|
@ -0,0 +1,28 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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);
|
|
@ -0,0 +1,53 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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);
|
||||||
|
|
126
debian/patches/features/all/r8723au/0080-staging-rtl8723au-rtw_do_join23a-Don-t-start-scannin.patch
vendored
Normal file
126
debian/patches/features/all/r8723au/0080-staging-rtl8723au-rtw_do_join23a-Don-t-start-scannin.patch
vendored
Normal file
|
@ -0,0 +1,126 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
139
debian/patches/features/all/r8723au/0081-staging-rtl8723au-Move-rtw_do_join23a-to-rtw_mlme.c-.patch
vendored
Normal file
139
debian/patches/features/all/r8723au/0081-staging-rtl8723au-Move-rtw_do_join23a-to-rtw_mlme.c-.patch
vendored
Normal file
|
@ -0,0 +1,139 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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 <usb_ops.h>
|
||||||
|
#include <linux/ieee80211.h>
|
||||||
|
|
||||||
|
-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
|
|
@ -0,0 +1,27 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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],
|
|
@ -0,0 +1,87 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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;
|
176
debian/patches/features/all/r8723au/0084-staging-rtl8723au-Move-rtw_get_cur_max_rate23a-to-io.patch
vendored
Normal file
176
debian/patches/features/all/r8723au/0084-staging-rtl8723au-Move-rtw_get_cur_max_rate23a-to-io.patch
vendored
Normal file
|
@ -0,0 +1,176 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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);
|
|
@ -0,0 +1,47 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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))) {
|
169
debian/patches/features/all/r8723au/0086-staging-rtl8723au-Don-t-run-regular-scans-in-the-dri.patch
vendored
Normal file
169
debian/patches/features/all/r8723au/0086-staging-rtl8723au-Don-t-run-regular-scans-in-the-dri.patch
vendored
Normal file
|
@ -0,0 +1,169 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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 <osdep_service.h>
|
||||||
|
-#include <drv_types.h>
|
||||||
|
-#include <rtw_ioctl_set.h>
|
||||||
|
-#include <hal_intf.h>
|
||||||
|
-
|
||||||
|
-#include <usb_ops.h>
|
||||||
|
-#include <linux/ieee80211.h>
|
||||||
|
-
|
||||||
|
-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 <drv_types.h>
|
||||||
|
|
||||||
|
-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
|
|
@ -0,0 +1,32 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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));
|
120
debian/patches/features/all/r8723au/0088-staging-rtl8723au-Move-FillH2CCmd-prototype-to-rtl87.patch
vendored
Normal file
120
debian/patches/features/all/r8723au/0088-staging-rtl8723au-Move-FillH2CCmd-prototype-to-rtl87.patch
vendored
Normal file
|
@ -0,0 +1,120 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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 <linux/ieee80211.h>
|
||||||
|
#include <wifi.h>
|
||||||
|
#include <wlan_bssdef.h>
|
||||||
|
-#include <rtw_ioctl_set.h>
|
||||||
|
#include <rtw_sreset.h>
|
||||||
|
|
||||||
|
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 <drv_types.h>
|
||||||
|
#include <rtl8723a_hal.h>
|
||||||
|
-#include <rtw_ioctl_set.h>
|
||||||
|
#include <usb_ops_linux.h>
|
||||||
|
|
||||||
|
#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 <drv_types.h>
|
||||||
|
#include <recv_osdep.h>
|
||||||
|
#include <mlme_osdep.h>
|
||||||
|
-#include <rtw_ioctl_set.h>
|
||||||
|
#include <rtl8723a_hal.h>
|
||||||
|
#include <usb_ops_linux.h>
|
||||||
|
|
||||||
|
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 <drv_types.h>
|
||||||
|
-
|
||||||
|
-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 <osdep_service.h>
|
||||||
|
#include <drv_types.h>
|
||||||
|
-#include <rtw_ioctl_set.h>
|
||||||
|
#include <xmit_osdep.h>
|
||||||
|
|
||||||
|
#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 <osdep_service.h>
|
||||||
|
#include <drv_types.h>
|
||||||
|
#include <mlme_osdep.h>
|
||||||
|
-#include <rtw_ioctl_set.h>
|
||||||
|
|
||||||
|
static struct rt_pmkid_list backupPMKIDList[NUM_PMKID_CACHE];
|
||||||
|
|
|
@ -0,0 +1,86 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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;
|
|
@ -0,0 +1,27 @@
|
||||||
|
From: Geert Uytterhoeven <geert@linux-m68k.org>
|
||||||
|
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 <geert@linux-m68k.org>
|
||||||
|
Acked-by: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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
|
102
debian/patches/features/all/r8723au/0091-staging-rtl8723au-Remove-redundant-casting-in-rtw_ml.patch
vendored
Normal file
102
debian/patches/features/all/r8723au/0091-staging-rtl8723au-Remove-redundant-casting-in-rtw_ml.patch
vendored
Normal file
|
@ -0,0 +1,102 @@
|
||||||
|
From: Sachin Kamat <sachin.kamat@linaro.org>
|
||||||
|
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 <sachin.kamat@linaro.org>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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;
|
|
@ -0,0 +1,26 @@
|
||||||
|
From: Sachin Kamat <sachin.kamat@linaro.org>
|
||||||
|
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 <sachin.kamat@linaro.org>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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;
|
|
@ -0,0 +1,33 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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));
|
107
debian/patches/features/all/r8723au/0094-staging-rtl8723au-rtw_cfg80211_inform_bss-Use-cfg802.patch
vendored
Normal file
107
debian/patches/features/all/r8723au/0094-staging-rtl8723au-rtw_cfg80211_inform_bss-Use-cfg802.patch
vendored
Normal file
|
@ -0,0 +1,107 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,75 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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);
|
|
@ -0,0 +1,47 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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);
|
||||||
|
|
|
@ -0,0 +1,93 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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 */
|
|
@ -0,0 +1,47 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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);
|
138
debian/patches/features/all/r8723au/0099-staging-rtl8723au-struct-wlan_bssid_ex-Rename-Beacon.patch
vendored
Normal file
138
debian/patches/features/all/r8723au/0099-staging-rtl8723au-struct-wlan_bssid_ex-Rename-Beacon.patch
vendored
Normal file
|
@ -0,0 +1,138 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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);
|
||||||
|
|
|
@ -0,0 +1,49 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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,
|
|
@ -0,0 +1,76 @@
|
||||||
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||||||
|
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 <Jes.Sorensen@redhat.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
---
|
||||||
|
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));
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue