Re: [PATCH v2 04/10] rtlwifi: unlink bss when un-association

2018-01-15 Thread Larry Finger

On 01/11/2018 01:09 AM, pks...@realtek.com wrote:

From: Tsang-Shian Lin 

When AP change bandwidth setting from 20M to 40M, STA may use old 20M AP
information to association with AP. Driver unlink bss in the
.bss_info_changed of ieee80211_ops to make sure that later scan can get
correct AP bandwidth capability.

Signed-off-by: Tsang-Shian Lin 
Signed-off-by: Ping-Ke Shih 
---
  drivers/net/wireless/realtek/rtlwifi/core.c | 18 ++
  1 file changed, 18 insertions(+)


Acked-by: Larry Finger 




diff --git a/drivers/net/wireless/realtek/rtlwifi/core.c 
b/drivers/net/wireless/realtek/rtlwifi/core.c
index ec639fa8095e..6c698123ac07 100644
--- a/drivers/net/wireless/realtek/rtlwifi/core.c
+++ b/drivers/net/wireless/realtek/rtlwifi/core.c
@@ -1171,6 +1171,8 @@ static void rtl_op_bss_info_changed(struct ieee80211_hw 
*hw,
RT_TRACE(rtlpriv, COMP_MAC80211, DBG_DMESG,
 "BSS_CHANGED_ASSOC\n");
} else {
+   struct cfg80211_bss *bss = NULL;
+
mstatus = RT_MEDIA_DISCONNECT;
  
  			if (mac->link_state == MAC80211_LINKED)

@@ -1178,6 +1180,22 @@ static void rtl_op_bss_info_changed(struct ieee80211_hw 
*hw,
if (ppsc->p2p_ps_info.p2p_ps_mode > P2P_PS_NONE)
rtl_p2p_ps_cmd(hw, P2P_PS_DISABLE);
mac->link_state = MAC80211_NOLINK;
+
+   bss = cfg80211_get_bss(hw->wiphy, NULL,
+  (u8 *)mac->bssid, NULL, 0,
+  IEEE80211_BSS_TYPE_ESS,
+  IEEE80211_PRIVACY_OFF);
+
+   RT_TRACE(rtlpriv, COMP_MAC80211, DBG_DMESG,
+"bssid = %pMF\n", mac->bssid);
+
+   if (bss) {
+   cfg80211_unlink_bss(hw->wiphy, bss);
+   cfg80211_put_bss(hw->wiphy, bss);
+   RT_TRACE(rtlpriv, COMP_MAC80211, DBG_DMESG,
+"cfg80211_unlink !!\n");
+   }
+
eth_zero_addr(mac->bssid);
mac->vendor = PEER_UNKNOWN;
mac->mode = 0;





[PATCH v2 04/10] rtlwifi: unlink bss when un-association

2018-01-10 Thread pkshih
From: Tsang-Shian Lin 

When AP change bandwidth setting from 20M to 40M, STA may use old 20M AP
information to association with AP. Driver unlink bss in the
.bss_info_changed of ieee80211_ops to make sure that later scan can get
correct AP bandwidth capability.

Signed-off-by: Tsang-Shian Lin 
Signed-off-by: Ping-Ke Shih 
---
 drivers/net/wireless/realtek/rtlwifi/core.c | 18 ++
 1 file changed, 18 insertions(+)

diff --git a/drivers/net/wireless/realtek/rtlwifi/core.c 
b/drivers/net/wireless/realtek/rtlwifi/core.c
index ec639fa8095e..6c698123ac07 100644
--- a/drivers/net/wireless/realtek/rtlwifi/core.c
+++ b/drivers/net/wireless/realtek/rtlwifi/core.c
@@ -1171,6 +1171,8 @@ static void rtl_op_bss_info_changed(struct ieee80211_hw 
*hw,
RT_TRACE(rtlpriv, COMP_MAC80211, DBG_DMESG,
 "BSS_CHANGED_ASSOC\n");
} else {
+   struct cfg80211_bss *bss = NULL;
+
mstatus = RT_MEDIA_DISCONNECT;
 
if (mac->link_state == MAC80211_LINKED)
@@ -1178,6 +1180,22 @@ static void rtl_op_bss_info_changed(struct ieee80211_hw 
*hw,
if (ppsc->p2p_ps_info.p2p_ps_mode > P2P_PS_NONE)
rtl_p2p_ps_cmd(hw, P2P_PS_DISABLE);
mac->link_state = MAC80211_NOLINK;
+
+   bss = cfg80211_get_bss(hw->wiphy, NULL,
+  (u8 *)mac->bssid, NULL, 0,
+  IEEE80211_BSS_TYPE_ESS,
+  IEEE80211_PRIVACY_OFF);
+
+   RT_TRACE(rtlpriv, COMP_MAC80211, DBG_DMESG,
+"bssid = %pMF\n", mac->bssid);
+
+   if (bss) {
+   cfg80211_unlink_bss(hw->wiphy, bss);
+   cfg80211_put_bss(hw->wiphy, bss);
+   RT_TRACE(rtlpriv, COMP_MAC80211, DBG_DMESG,
+"cfg80211_unlink !!\n");
+   }
+
eth_zero_addr(mac->bssid);
mac->vendor = PEER_UNKNOWN;
mac->mode = 0;
-- 
2.15.1