mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-01-07 07:02:32 -05:00
wcn36xx: Treat repeated BMPS entry fail as connection loss
On an open AP when you pull the plug on the AP, if we are not already in BMPS mode then the firmware will not generate a disconnection event. Instead we need to monitor for failure to enter BMPS and treat a string of failures as connection loss. Secure AP connections don't appear to demonstrate this behavior so the work-around is limited to open APs only. Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org> Signed-off-by: Kalle Valo <kvalo@codeaurora.org> Link: https://lore.kernel.org/r/20211022140447.2846248-2-bryan.odonoghue@linaro.org
This commit is contained in:
committed by
Kalle Valo
parent
a224b47ab3
commit
2f1ae32f73
@@ -18,6 +18,8 @@
|
||||
|
||||
#include "wcn36xx.h"
|
||||
|
||||
#define WCN36XX_BMPS_FAIL_THREHOLD 3
|
||||
|
||||
int wcn36xx_pmc_enter_bmps_state(struct wcn36xx *wcn,
|
||||
struct ieee80211_vif *vif)
|
||||
{
|
||||
@@ -31,6 +33,7 @@ int wcn36xx_pmc_enter_bmps_state(struct wcn36xx *wcn,
|
||||
if (!ret) {
|
||||
wcn36xx_dbg(WCN36XX_DBG_PMC, "Entered BMPS\n");
|
||||
vif_priv->pw_state = WCN36XX_BMPS;
|
||||
vif_priv->bmps_fail_ct = 0;
|
||||
vif->driver_flags |= IEEE80211_VIF_BEACON_FILTER;
|
||||
} else {
|
||||
/*
|
||||
@@ -39,6 +42,11 @@ int wcn36xx_pmc_enter_bmps_state(struct wcn36xx *wcn,
|
||||
* received just after auth complete
|
||||
*/
|
||||
wcn36xx_err("Can not enter BMPS!\n");
|
||||
|
||||
if (vif_priv->bmps_fail_ct++ == WCN36XX_BMPS_FAIL_THREHOLD) {
|
||||
ieee80211_connection_loss(vif);
|
||||
vif_priv->bmps_fail_ct = 0;
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -151,6 +151,8 @@ struct wcn36xx_vif {
|
||||
} rekey_data;
|
||||
|
||||
struct list_head sta_list;
|
||||
|
||||
int bmps_fail_ct;
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user