Message ID | 20190703131848.22879-1-shay.bar@celeno.com (mailing list archive) |
---|---|
State | Accepted |
Delegated to: | Johannes Berg |
Headers | show |
Series | mac80211: HE STA disassoc due to QOS NULL not sent | expand |
On Wed, 2019-07-03 at 16:18 +0300, Shay Bar wrote: > In case of HE AP-STA link, ieee80211_send_nullfunc() will not send the QOS NULL packet to check if AP is still associated. > In this case, probe_send_count will be non zero and ieee80211_sta_work() will later disassociate the AP. > (although it didn't really send a test QOS NULL packet). > Fix is to decrement probe_send_count and not call ieee80211_send_nullfunc() in case of HE link. > > Signed-off-by: Shay Bar <shay.bar@celeno.com> > --- > Hope I solved all the SMTP server problems and patch is better now :) Yep, thanks. > if (ieee80211_hw_check(&sdata->local->hw, REPORTS_TX_ACK_STATUS)) { > ifmgd->nullfunc_failed = false; > - ieee80211_send_nullfunc(sdata->local, sdata, false); > + if (!(ifmgd->flags & IEEE80211_STA_DISABLE_HE)) > + ifmgd->probe_send_count--; > + else > + ieee80211_send_nullfunc(sdata->local, sdata, false); Not sure that makes sense though. Why go through all the motions of doing the counting and all, and the run_again() etc. when all that will happen is that we'll disconnect anyway? johannes
Hi Johannes, Station may receive a beacon from the AP that will rearm the bcn_mon_timer. If it will not get a beacon within the timeout, it will disconnect. In my test case, beacon arrived later (within the timeout). Without this patch, STA (wrongly) kicked out the AP without even sending QOS NULL. With this patch, STA keeps AP associated and will only disassoc if beacon timeout will pass. Thanks, Shay -----Original Message----- From: linux-wireless-owner@vger.kernel.org <linux-wireless-owner@vger.kernel.org> On Behalf Of Johannes Berg Sent: Wednesday, 31 July 2019 11:54 To: Shay Bar <Shay.Bar@celeno.com> Cc: linux-wireless@vger.kernel.org Subject: Re: [PATCH] mac80211: HE STA disassoc due to QOS NULL not sent External Email On Wed, 2019-07-03 at 16:18 +0300, Shay Bar wrote: > In case of HE AP-STA link, ieee80211_send_nullfunc() will not send the QOS NULL packet to check if AP is still associated. > In this case, probe_send_count will be non zero and ieee80211_sta_work() will later disassociate the AP. > (although it didn't really send a test QOS NULL packet). > Fix is to decrement probe_send_count and not call ieee80211_send_nullfunc() in case of HE link. > > Signed-off-by: Shay Bar <shay.bar@celeno.com> > --- > Hope I solved all the SMTP server problems and patch is better now :) Yep, thanks. > if (ieee80211_hw_check(&sdata->local->hw, REPORTS_TX_ACK_STATUS)) { > ifmgd->nullfunc_failed = false; > - ieee80211_send_nullfunc(sdata->local, sdata, false); > + if (!(ifmgd->flags & IEEE80211_STA_DISABLE_HE)) > + ifmgd->probe_send_count--; > + else > + ieee80211_send_nullfunc(sdata->local, sdata, false); Not sure that makes sense though. Why go through all the motions of doing the counting and all, and the run_again() etc. when all that will happen is that we'll disconnect anyway? johannes ---------- This email has been scanned for spam and viruses by Proofpoint Essentials. Visit the following link to report this email as spam: https://eu1.proofpointessentials.com/index01.php?mod_id=11&mod_option=logitem&mail_id=1564563252-6zoAqEa3QRRO&r_address=shay.bar%40celeno.com&report=1
On Wed, 2019-07-31 at 10:12 +0000, Shay Bar wrote: > Hi Johannes, > Station may receive a beacon from the AP that will rearm the bcn_mon_timer. > If it will not get a beacon within the timeout, it will disconnect. > In my test case, beacon arrived later (within the timeout). > Without this patch, STA (wrongly) kicked out the AP without even sending QOS NULL. > With this patch, STA keeps AP associated and will only disassoc if beacon timeout will pass. Ah, we still need the timeout, right. johannes
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index 379d2ab6d327..bc5ed2dbe69b 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c @@ -2511,7 +2511,10 @@ static void ieee80211_mgd_probe_ap_send(struct ieee80211_sub_if_data *sdata) if (ieee80211_hw_check(&sdata->local->hw, REPORTS_TX_ACK_STATUS)) { ifmgd->nullfunc_failed = false; - ieee80211_send_nullfunc(sdata->local, sdata, false); + if (!(ifmgd->flags & IEEE80211_STA_DISABLE_HE)) + ifmgd->probe_send_count--; + else + ieee80211_send_nullfunc(sdata->local, sdata, false); } else { int ssid_len;
In case of HE AP-STA link, ieee80211_send_nullfunc() will not send the QOS NULL packet to check if AP is still associated. In this case, probe_send_count will be non zero and ieee80211_sta_work() will later disassociate the AP. (although it didn't really send a test QOS NULL packet). Fix is to decrement probe_send_count and not call ieee80211_send_nullfunc() in case of HE link. Signed-off-by: Shay Bar <shay.bar@celeno.com> --- Hope I solved all the SMTP server problems and patch is better now :) net/mac80211/mlme.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)