diff options
author | Jérôme Pouiller <jerome.pouiller@silabs.com> | 2020-04-20 18:02:57 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2020-04-23 13:26:02 +0200 |
commit | 5a0af69888488d2b873f55bcba4cd17b162e4bea (patch) | |
tree | b4098cd764a7b079870091282691d01915558bca /drivers/staging/wfx/queue.c | |
parent | staging: wfx: simplify the check if the the device is associated (diff) | |
download | linux-dev-5a0af69888488d2b873f55bcba4cd17b162e4bea.tar.xz linux-dev-5a0af69888488d2b873f55bcba4cd17b162e4bea.zip |
staging: wfx: use ieee80211_beacon_loss() provided by mac80211
The firmware is able to filter beacons and send a notification if one or
multiple beacons are not received. Note that it send this notification
only once. Only if it receive beacons gain, it send a new notification.
Currently, the driver handle the connection loss itself (see
wfx_cqm_bssloss_sm()). It send null frames and watch the answers.
This patch fixes all this mess:
- settle firmware to send a notification on the first beacon loss
- call ieee80211_beacon_loss() and let mac80211 handle all the process
- since we do have notification for each beacon loss, add a period
task that call ieee80211_beacon_loss() until we receive "REGAIN"
notification.
Thus, we can drop the ugly wfx_cqm_bssloss_sm() and
wfx_bss_params_work().
Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com>
Link: https://lore.kernel.org/r/20200420160311.57323-3-Jerome.Pouiller@silabs.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/wfx/queue.c')
-rw-r--r-- | drivers/staging/wfx/queue.c | 11 |
1 files changed, 0 insertions, 11 deletions
diff --git a/drivers/staging/wfx/queue.c b/drivers/staging/wfx/queue.c index e6d7d0e45156..e9573e9d009f 100644 --- a/drivers/staging/wfx/queue.c +++ b/drivers/staging/wfx/queue.c @@ -266,17 +266,6 @@ static bool wfx_handle_tx_data(struct wfx_dev *wdev, struct sk_buff *skb) if (!wvif) return false; - // FIXME: mac80211 is smart enough to handle BSS loss. Driver should not - // try to do anything about that. - if (ieee80211_is_nullfunc(frame->frame_control)) { - mutex_lock(&wvif->bss_loss_lock); - if (wvif->bss_loss_state) { - wvif->bss_loss_confirm_id = req->packet_id; - req->queue_id.queue_id = HIF_QUEUE_ID_VOICE; - } - mutex_unlock(&wvif->bss_loss_lock); - } - // FIXME: identify the exact scenario matched by this condition. Does it // happen yet? if (ieee80211_has_protected(frame->frame_control) && |