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:
Abhinav Kumar
2019-05-13 23:53:40 +05:30
committed by nshrivas
父節點 c990f623c5
當前提交 392221599a
共有 8 個文件被更改,包括 338 次插入106 次删除

查看文件

@@ -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