Prechádzať zdrojové kódy

qcacmn: cfg80211 scan change for WIN

Change-Id: I2d2863c7193de8e79c7ff76039f9b64ecaf90100
CRs-Fixed: 2001106
Om Prakash Tripathi 8 rokov pred
rodič
commit
7d867d6729

+ 24 - 0
os_if/linux/qca_vendor.h

@@ -323,6 +323,7 @@ enum qca_nl80211_vendor_subcmds {
 	QCA_NL80211_VENDOR_SUBCMD_P2P_LISTEN_OFFLOAD_START = 122,
 	QCA_NL80211_VENDOR_SUBCMD_P2P_LISTEN_OFFLOAD_STOP = 123,
 	QCA_NL80211_VENDOR_SUBCMD_SAP_CONDITIONAL_CHAN_SWITCH = 124,
+	QCA_NL80211_VENDOR_SUBCMD_GPIO_CONFIG_COMMAND = 125,
 
 	QCA_NL80211_VENDOR_SUBCMD_LL_STATS_EXT = 127,
 
@@ -3596,6 +3597,29 @@ enum qca_wlan_vendor_acs_select_reason {
 	QCA_WLAN_VENDOR_ACS_SELECT_REASON_DFS,
 	QCA_WLAN_VENDOR_ACS_SELECT_REASON_LTE_COEX,
 };
+
+/**
+ * enum qca_wlan_gpio_attr - Parameters for GPIO configuration
+ */
+enum qca_wlan_gpio_attr {
+	QCA_WLAN_VENDOR_ATTR_GPIO_PARAM_INVALID = 0,
+	/* Unsigned 32-bit attribute for GPIO command */
+	QCA_WLAN_VENDOR_ATTR_GPIO_PARAM_COMMAND,
+	/* Unsigned 32-bit attribute for GPIO PIN number to configure */
+	QCA_WLAN_VENDOR_ATTR_GPIO_PARAM_PINNUM,
+	/* Unsigned 32-bit attribute for GPIO value to configure */
+	QCA_WLAN_VENDOR_ATTR_GPIO_PARAM_VALUE,
+	/* Unsigned 32-bit attribute for GPIO pull type */
+	QCA_WLAN_VENDOR_ATTR_GPIO_PARAM_PULL_TYPE,
+	/* Unsigned 32-bit attribute for GPIO interrupt mode */
+	QCA_WLAN_VENDOR_ATTR_GPIO_PARAM_INTR_MODE,
+
+	/* keep last */
+	QCA_WLAN_VENDOR_ATTR_GPIO_PARAM_LAST,
+	QCA_WLAN_VENDOR_ATTR_GPIO_PARAM_MAX =
+		QCA_WLAN_VENDOR_ATTR_GPIO_PARAM_LAST - 1,
+};
+
 #if !(defined (SUPPORT_WDEV_CFG80211_VENDOR_EVENT_ALLOC)) &&	\
 	(LINUX_VERSION_CODE < KERNEL_VERSION(4, 1, 0)) && 	\
 	!(defined(WITH_BACKPORTS))

+ 0 - 2
os_if/linux/scan/inc/wlan_cfg80211_scan.h

@@ -37,7 +37,6 @@
 /* Max number of scans allowed from userspace */
 #define WLAN_MAX_SCAN_COUNT 8
 
-#ifdef WLAN_ENABLE_AGEIE_ON_SCAN_RESULTS
 /* GPS application requirement */
 #define QCOM_VENDOR_IE_ID 221
 #define QCOM_OUI1         0x00
@@ -77,7 +76,6 @@ typedef struct {
 	u64 beacon_tsf;
 	u16 seq_ctrl;
 } __attribute__ ((packed)) qcom_ie_age;
-#endif
 
 /**
  * struct osif_scan_pdev - OS scan private strcutre

+ 30 - 3
os_if/linux/scan/src/wlan_cfg80211_scan.c

@@ -393,6 +393,34 @@ int wlan_cfg80211_sched_scan_stop(struct wlan_objmgr_pdev *pdev,
 }
 #endif /*FEATURE_WLAN_SCAN_PNO */
 
+/**
+ * wlan_copy_bssid_scan_request() - API to copy the bssid to Scan request
+ * @scan_req: Pointer to scan_start_request
+ * @request: scan request from Supplicant
+ *
+ * This API copies the BSSID in scan request from Supplicant and copies it to
+ * the scan_start_request
+ *
+ * Return: None
+ */
+#if defined(CFG80211_SCAN_BSSID) || \
+	(LINUX_VERSION_CODE >= KERNEL_VERSION(4, 7, 0))
+static inline void
+wlan_copy_bssid_scan_request(struct scan_start_request *scan_req,
+		struct cfg80211_scan_request *request)
+{
+	qdf_mem_copy(scan_req->scan_req.bssid_list[0].bytes,
+				request->bssid, QDF_MAC_ADDR_SIZE);
+}
+#else
+static inline void
+wlan_copy_bssid_scan_request(struct scan_start_request *scan_req,
+		struct cfg80211_scan_request *request)
+{
+
+}
+#endif
+
 /**
  * wlan_scan_request_enqueue() - enqueue Scan Request
  * @pdev: pointer to pdev object
@@ -719,7 +747,7 @@ QDF_STATUS wlan_cfg80211_scan_priv_init(struct wlan_objmgr_pdev *pdev)
 	psoc = wlan_pdev_get_psoc(pdev);
 	wlan_pdev_obj_unlock(pdev);
 
-	req_id = ucfg_scan_register_requester(psoc, "HDD",
+	req_id = ucfg_scan_register_requester(psoc, "CFG",
 		wlan_cfg80211_scan_done_callback, NULL);
 
 	osif_priv = wlan_pdev_get_ospriv(pdev);
@@ -938,8 +966,7 @@ int wlan_cfg80211_scan(struct wlan_objmgr_pdev *pdev,
 	 * which fw will send probe req.
 	 */
 	req->scan_req.num_bssid = 1;
-	qdf_mem_copy(&req->scan_req.bssid_list[0].bytes, request->bssid,
-			QDF_MAC_ADDR_SIZE);
+	wlan_copy_bssid_scan_request(req, request);
 	if (qdf_is_macaddr_zero(&req->scan_req.bssid_list[0]))
 		qdf_set_macaddr_broadcast(&req->scan_req.bssid_list[0]);