From 918e46deec2ad759e59d6bfcd0f9421e0877dfde Mon Sep 17 00:00:00 2001 From: Sourav Mohapatra Date: Thu, 13 Feb 2020 15:25:39 +0530 Subject: [PATCH] qcacmn: Add policy attribute to QCA_NL80211_VENDOR_SUBCMD_ABORT_SCAN According to new changes in kernel 5.2 version onwards, driver has to provide the policy for a NL command to be verified against while registering wiphy to the kernel. To accommodate these changes, add policy to the following vendor command that is being registered in the driver. QCA_NL80211_VENDOR_SUBCMD_ABORT_SCAN Change-Id: I7cd4e6c50a48580a124e36c32b9cbebe557c04bf CRs-Fixed: 2621311 --- os_if/linux/scan/inc/wlan_cfg80211_scan.h | 15 +++++++++++++++ os_if/linux/scan/src/wlan_cfg80211_scan.c | 6 +++--- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/os_if/linux/scan/inc/wlan_cfg80211_scan.h b/os_if/linux/scan/inc/wlan_cfg80211_scan.h index a43e057b9050..9944bf7245d2 100644 --- a/os_if/linux/scan/inc/wlan_cfg80211_scan.h +++ b/os_if/linux/scan/inc/wlan_cfg80211_scan.h @@ -37,6 +37,21 @@ /* Max number of scans allowed from userspace */ #define WLAN_MAX_SCAN_COUNT 8 +extern const struct nla_policy cfg80211_scan_policy[ + QCA_WLAN_VENDOR_ATTR_SCAN_MAX + 1]; + +#define FEATURE_ABORT_SCAN_VENDOR_COMMANDS \ + { \ + .info.vendor_id = QCA_NL80211_VENDOR_ID, \ + .info.subcmd = QCA_NL80211_VENDOR_SUBCMD_ABORT_SCAN, \ + .flags = WIPHY_VENDOR_CMD_NEED_WDEV | \ + WIPHY_VENDOR_CMD_NEED_NETDEV | \ + WIPHY_VENDOR_CMD_NEED_RUNNING, \ + .doit = wlan_hdd_vendor_abort_scan, \ + vendor_command_policy(cfg80211_scan_policy, \ + QCA_WLAN_VENDOR_ATTR_SCAN_MAX) \ + }, + /* GPS application requirement */ #define QCOM_VENDOR_IE_ID 221 #define QCOM_OUI1 0x00 diff --git a/os_if/linux/scan/src/wlan_cfg80211_scan.c b/os_if/linux/scan/src/wlan_cfg80211_scan.c index 52ca22433ddd..340b0c1bf3ae 100644 --- a/os_if/linux/scan/src/wlan_cfg80211_scan.c +++ b/os_if/linux/scan/src/wlan_cfg80211_scan.c @@ -44,8 +44,8 @@ #include "host_diag_core_event.h" #endif -static const -struct nla_policy scan_policy[QCA_WLAN_VENDOR_ATTR_SCAN_MAX + 1] = { +const struct nla_policy cfg80211_scan_policy[ + QCA_WLAN_VENDOR_ATTR_SCAN_MAX + 1] = { [QCA_WLAN_VENDOR_ATTR_SCAN_FLAGS] = {.type = NLA_U32}, [QCA_WLAN_VENDOR_ATTR_SCAN_TX_NO_CCK_RATE] = {.type = NLA_FLAG}, [QCA_WLAN_VENDOR_ATTR_SCAN_COOKIE] = {.type = NLA_U64}, @@ -1731,7 +1731,7 @@ int wlan_vendor_abort_scan(struct wlan_objmgr_pdev *pdev, pdev_id = wlan_objmgr_pdev_get_pdev_id(pdev); if (wlan_cfg80211_nla_parse(tb, QCA_WLAN_VENDOR_ATTR_SCAN_MAX, data, - data_len, scan_policy)) { + data_len, cfg80211_scan_policy)) { osif_err("Invalid ATTR"); return ret; }