With some conditions, the device is able to send/receive frames during scan operation. So, it is possible to use it implement the "remain on channel" feature. We just ask for a passive scan (without sending any probe request) on one channel. This architecture allows to leverage some interesting features: - if the device is AP, the device switches channel just after the next beacon and the beacons are stopped during the off-channel interval. - if the device is connected, it advertises it is asleep before to switch channel (so the AP should stop to try to send data) Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com> Signed-off-by: Kalle Valo <kvalo@kernel.org> Link: https://lore.kernel.org/r/20231004172843.195332-9-jerome.pouiller@silabs.com
28 lines
886 B
C
28 lines
886 B
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* Scan related functions.
|
|
*
|
|
* Copyright (c) 2017-2020, Silicon Laboratories, Inc.
|
|
* Copyright (c) 2010, ST-Ericsson
|
|
*/
|
|
#ifndef WFX_SCAN_H
|
|
#define WFX_SCAN_H
|
|
|
|
#include <net/mac80211.h>
|
|
|
|
struct wfx_dev;
|
|
struct wfx_vif;
|
|
|
|
void wfx_hw_scan_work(struct work_struct *work);
|
|
int wfx_hw_scan(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
|
|
struct ieee80211_scan_request *req);
|
|
void wfx_cancel_hw_scan(struct ieee80211_hw *hw, struct ieee80211_vif *vif);
|
|
void wfx_scan_complete(struct wfx_vif *wvif, int nb_chan_done);
|
|
|
|
void wfx_remain_on_channel_work(struct work_struct *work);
|
|
int wfx_remain_on_channel(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
|
|
struct ieee80211_channel *chan, int duration,
|
|
enum ieee80211_roc_type type);
|
|
int wfx_cancel_remain_on_channel(struct ieee80211_hw *hw, struct ieee80211_vif *vif);
|
|
|
|
#endif
|