From 57925408b60dbbe4ddf40958ac0c19fee40317f8 Mon Sep 17 00:00:00 2001 From: Abhinav Kumar Date: Tue, 3 Dec 2019 14:16:17 +0530 Subject: [PATCH] qcacld-3.0: Don't Process BEACON_REPORTING OP if Scan is on-going MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit As per SS’s WIPS requirements, if Host receives beacon recv start command while processing scan request, HOST should not process beacon reporting start cmd. Next start command should get allow only after completion of scan. After scan completion, supplicant should send a fresh start command to start BEACON_REPORTING again. Change-Id: I8b64665b6d019cfab76eefba4f7b11fa7dd2782e CRs-Fixed: 2578642 --- core/hdd/src/wlan_hdd_bcn_recv.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/core/hdd/src/wlan_hdd_bcn_recv.c b/core/hdd/src/wlan_hdd_bcn_recv.c index b30436590ced..2a017917b676 100644 --- a/core/hdd/src/wlan_hdd_bcn_recv.c +++ b/core/hdd/src/wlan_hdd_bcn_recv.c @@ -30,6 +30,7 @@ #include "osif_sync.h" #include "wlan_hdd_bcn_recv.h" #include +#include #define SET_BIT(value, mask) ((value) |= (1 << (mask))) @@ -312,6 +313,8 @@ static int __wlan_hdd_cfg80211_bcn_rcv_op(struct wiphy *wiphy, uint32_t bcn_report, nth_value = 1; int errno; bool active_report, do_not_resume; + struct wlan_objmgr_vdev *vdev; + enum scm_scan_status scan_req_status; hdd_enter_dev(dev); @@ -329,6 +332,19 @@ static int __wlan_hdd_cfg80211_bcn_rcv_op(struct wiphy *wiphy, return -EINVAL; } + vdev = hdd_objmgr_get_vdev(adapter); + if (!vdev) + return -EINVAL; + + scan_req_status = ucfg_scan_get_pdev_status(wlan_vdev_get_pdev(vdev)); + wlan_objmgr_vdev_release_ref(vdev, WLAN_OSIF_ID); + + if (scan_req_status != SCAN_NOT_IN_PROGRESS) { + hdd_debug("Scan in progress: %d, bcn rpt start OP not allowed", + scan_req_status); + return -EBUSY; + } + errno = wlan_cfg80211_nla_parse(tb, QCA_WLAN_VENDOR_ATTR_BEACON_REPORTING_MAX,