qcacld-3.0: Process vendor cmd for BEACON_REPORTING_OP_STOP
Userspace request driver to report details of each beacon received whose bssid is same as currently connected BSS's mac address. The driver encapsulates the details of these beacons as an asynchronous event within vendor command: QCA_NL80211_VENDOR_SUBCMD_BEACON_REPORTING with operation type QCA_WLAN_VENDOR_BEACON_REPORTING_OP_STOP until userspace requests to stop sending beacons. When driver gets stop indication from userspace, it does the following things: 1. De-register all callback which is registered while handling start indication 2. Add beacon filter and send it to fw If driver is in WOW mode and WMI_ADD_BCN_FILTER_CMDID is NOT configured, fw wakeup HOST and sends connected AP beacon. Fw should not wakeup host if host is in wow mode. In order to support this, configure WOW_BEACON_EVENT for STA and P2P. Change-Id: Ie7c768fa957d02e1361e1ecb95435ba3f06034b0 CRs-Fixed: 2431360
This commit is contained in:
@@ -444,6 +444,14 @@ static inline void hdd_save_gtk_params(struct hdd_adapter *adapter,
|
||||
void hdd_copy_ht_caps(struct ieee80211_ht_cap *hdd_ht_cap,
|
||||
tDot11fIEHTCaps *roam_ht_cap);
|
||||
|
||||
/**
|
||||
* hdd_add_beacon_filter() - add beacon filter
|
||||
* @adapter: Pointer to the hdd adapter
|
||||
*
|
||||
* Return: 0 on success and errno on failure
|
||||
*/
|
||||
int hdd_add_beacon_filter(struct hdd_adapter *adapter);
|
||||
|
||||
/**
|
||||
* hdd_copy_vht_caps()- copy vht caps info from roam vht caps
|
||||
* info to source vht_cap info of type ieee80211_vht_cap.
|
||||
|
@@ -42,6 +42,21 @@ int wlan_hdd_cfg80211_bcn_rcv_start(struct wiphy *wiphy,
|
||||
struct wireless_dev *wdev,
|
||||
const void *data, int data_len);
|
||||
|
||||
/**
|
||||
* hdd_beacon_recv_pause_indication()- Send vendor event to user space
|
||||
* to inform SCAN started indication
|
||||
* @hdd_handle: hdd handler
|
||||
* @vdev_id: vdev id
|
||||
* @type: scan event type
|
||||
* @is_disconnected: Connection state of driver
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
void hdd_beacon_recv_pause_indication(hdd_handle_t hdd_handle,
|
||||
uint8_t vdev_id,
|
||||
enum scan_event_type type,
|
||||
bool is_disconnected);
|
||||
|
||||
#define BCN_RECV_FEATURE_VENDOR_COMMANDS \
|
||||
{ \
|
||||
.info.vendor_id = QCA_NL80211_VENDOR_ID, \
|
||||
@@ -59,5 +74,13 @@ int wlan_hdd_cfg80211_bcn_rcv_start(struct wiphy *wiphy,
|
||||
#else
|
||||
#define BCN_RECV_FEATURE_VENDOR_COMMANDS
|
||||
#define BCN_RECV_FEATURE_VENDOR_EVENTS
|
||||
|
||||
static inline
|
||||
void hdd_beacon_recv_pause_indication(hdd_handle_t hdd_handle,
|
||||
uint8_t vdev_id,
|
||||
enum scan_event_type type,
|
||||
bool is_disconnected)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
|
Reference in New Issue
Block a user