Parcourir la source

qcacld-3.0: Add changes to send max blacklist bssids supported

qcacld-2.0 to qcacld-3.0 propagation

Add changes to send maximum number of blacklist bssid that firmware
supports to user space. Blacklist bssid information is used by driver
and firmware to avoid connection to that particular bssid.

Change-Id: I135d3b4d7723a8d4efe46dcef9efb2de6c0f558a
CRs-Fixed: 1080765
Padma, Santhosh Kumar il y a 8 ans
Parent
commit
1ac0240593

+ 5 - 0
core/hdd/src/wlan_hdd_cfg80211.h

@@ -1175,6 +1175,9 @@ enum qca_wlan_vendor_attr_extscan_config_params {
  *	Unsigned 32bit value, Bit mask of all buckets scanned in the
  *	Unsigned 32bit value, Bit mask of all buckets scanned in the
  *	current EXTSCAN CYCLE. For e.g. If fw scan is going to scan
  *	current EXTSCAN CYCLE. For e.g. If fw scan is going to scan
  *	following buckets 0, 1, 2 in current cycle then it will be (0x111)
  *	following buckets 0, 1, 2 in current cycle then it will be (0x111)
+ * @QCA_WLAN_VENDOR_ATTR_EXTSCAN_MAX_NUM_BLACKLISTED_BSSID:
+ *	Unsigned 32bit value; a EXTSCAN Capabilities attribute to send
+ *	maximum umber of blacklist bssid's that firmware can support.
  * @QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_AFTER_LAST: After last
  * @QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_AFTER_LAST: After last
  * @QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_MAX: Max value
  * @QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_MAX: Max value
  */
  */
@@ -1297,6 +1300,8 @@ enum qca_wlan_vendor_attr_extscan_results {
 	 */
 	 */
 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_BUCKETS_SCANNED,
 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_BUCKETS_SCANNED,
 
 
+	QCA_WLAN_VENDOR_ATTR_EXTSCAN_MAX_NUM_BLACKLISTED_BSSID,
+
 	/* keep last */
 	/* keep last */
 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_AFTER_LAST,
 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_AFTER_LAST,
 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_MAX =
 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_MAX =

+ 10 - 2
core/hdd/src/wlan_hdd_ext_scan.c

@@ -1604,6 +1604,8 @@ void wlan_hdd_cfg80211_extscan_callback(void *ctx, const uint16_t evType,
 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_CAPABILITIES_MAX_NUM_EPNO_NETS_BY_SSID
 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_CAPABILITIES_MAX_NUM_EPNO_NETS_BY_SSID
 #define MAX_NUM_WHITELISTED_SSID \
 #define MAX_NUM_WHITELISTED_SSID \
 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_CAPABILITIES_MAX_NUM_WHITELISTED_SSID
 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_CAPABILITIES_MAX_NUM_WHITELISTED_SSID
+#define MAX_NUM_BLACKLISTED_BSSID \
+	QCA_WLAN_VENDOR_ATTR_EXTSCAN_MAX_NUM_BLACKLISTED_BSSID
 
 
 /**
 /**
  * wlan_hdd_send_ext_scan_capability - send ext scan capability to user space
  * wlan_hdd_send_ext_scan_capability - send ext scan capability to user space
@@ -1638,7 +1640,8 @@ static int wlan_hdd_send_ext_scan_capability(hdd_context_t *hdd_ctx)
 	(sizeof(data->max_hotlist_ssids) + NLA_HDRLEN) +
 	(sizeof(data->max_hotlist_ssids) + NLA_HDRLEN) +
 	(sizeof(data->max_number_epno_networks) + NLA_HDRLEN) +
 	(sizeof(data->max_number_epno_networks) + NLA_HDRLEN) +
 	(sizeof(data->max_number_epno_networks_by_ssid) + NLA_HDRLEN) +
 	(sizeof(data->max_number_epno_networks_by_ssid) + NLA_HDRLEN) +
-	(sizeof(data->max_number_of_white_listed_ssid) + NLA_HDRLEN);
+	(sizeof(data->max_number_of_white_listed_ssid) + NLA_HDRLEN) +
+	(sizeof(data->max_number_of_black_listed_bssid) + NLA_HDRLEN);
 
 
 	skb = cfg80211_vendor_cmd_alloc_reply_skb(hdd_ctx->wiphy, nl_buf_len);
 	skb = cfg80211_vendor_cmd_alloc_reply_skb(hdd_ctx->wiphy, nl_buf_len);
 
 
@@ -1672,6 +1675,8 @@ static int wlan_hdd_send_ext_scan_capability(hdd_context_t *hdd_ctx)
 					data->max_number_epno_networks_by_ssid);
 					data->max_number_epno_networks_by_ssid);
 	hdd_notice("max_number_of_white_listed_ssid %u",
 	hdd_notice("max_number_of_white_listed_ssid %u",
 					data->max_number_of_white_listed_ssid);
 					data->max_number_of_white_listed_ssid);
+	hdd_notice("max_number_of_black_listed_bssid (%u)",
+					data->max_number_of_black_listed_bssid);
 
 
 	if (nla_put_u32(skb, PARAM_REQUEST_ID, data->requestId) ||
 	if (nla_put_u32(skb, PARAM_REQUEST_ID, data->requestId) ||
 	    nla_put_u32(skb, PARAM_STATUS, data->status) ||
 	    nla_put_u32(skb, PARAM_STATUS, data->status) ||
@@ -1694,7 +1699,9 @@ static int wlan_hdd_send_ext_scan_capability(hdd_context_t *hdd_ctx)
 	    nla_put_u32(skb, MAX_NUM_EPNO_NETS_BY_SSID,
 	    nla_put_u32(skb, MAX_NUM_EPNO_NETS_BY_SSID,
 			data->max_number_epno_networks_by_ssid) ||
 			data->max_number_epno_networks_by_ssid) ||
 	    nla_put_u32(skb, MAX_NUM_WHITELISTED_SSID,
 	    nla_put_u32(skb, MAX_NUM_WHITELISTED_SSID,
-		data->max_number_of_white_listed_ssid)) {
+		data->max_number_of_white_listed_ssid) ||
+	    nla_put_u32(skb, MAX_NUM_BLACKLISTED_BSSID,
+		data->max_number_of_black_listed_bssid)) {
 			hdd_err("nla put fail");
 			hdd_err("nla put fail");
 			goto nla_put_failure;
 			goto nla_put_failure;
 	}
 	}
@@ -1724,6 +1731,7 @@ nla_put_failure:
 #undef MAX_NUM_EPNO_NETS
 #undef MAX_NUM_EPNO_NETS
 #undef MAX_NUM_EPNO_NETS_BY_SSID
 #undef MAX_NUM_EPNO_NETS_BY_SSID
 #undef MAX_NUM_WHITELISTED_SSID
 #undef MAX_NUM_WHITELISTED_SSID
+#undef MAX_NUM_BLACKLISTED_BSSID
 
 
 /**
 /**
  * __wlan_hdd_cfg80211_extscan_get_capabilities() - get ext scan capabilities
  * __wlan_hdd_cfg80211_extscan_get_capabilities() - get ext scan capabilities

+ 2 - 0
core/mac/inc/sir_api.h

@@ -4303,6 +4303,7 @@ typedef struct {
  *			which an exact match is required,
  *			which an exact match is required,
  *			or entries corresponding to hidden ssids
  *			or entries corresponding to hidden ssids
  * @max_number_of_white_listed_ssid: max number of white listed SSIDs
  * @max_number_of_white_listed_ssid: max number of white listed SSIDs
+ * @max_number_of_black_listed_bssid: max number of black listed BSSIDs
  */
  */
 struct ext_scan_capabilities_response {
 struct ext_scan_capabilities_response {
 	uint32_t requestId;
 	uint32_t requestId;
@@ -4322,6 +4323,7 @@ struct ext_scan_capabilities_response {
 	uint32_t max_number_epno_networks;
 	uint32_t max_number_epno_networks;
 	uint32_t max_number_epno_networks_by_ssid;
 	uint32_t max_number_epno_networks_by_ssid;
 	uint32_t max_number_of_white_listed_ssid;
 	uint32_t max_number_of_white_listed_ssid;
+	uint32_t max_number_of_black_listed_bssid;
 };
 };
 
 
 typedef struct {
 typedef struct {

+ 6 - 2
core/wma/src/wma_scan_roam.c

@@ -3904,6 +3904,8 @@ int wma_extscan_capabilities_event_handler(void *handle,
 				event->num_epno_networks;
 				event->num_epno_networks;
 	dest_capab->max_number_of_white_listed_ssid =
 	dest_capab->max_number_of_white_listed_ssid =
 				event->num_roam_ssid_whitelist;
 				event->num_roam_ssid_whitelist;
+	dest_capab->max_number_of_black_listed_bssid =
+				event->num_roam_bssid_blacklist;
 	dest_capab->status = 0;
 	dest_capab->status = 0;
 
 
 	WMA_LOGD("%s: request_id: %u status: %d",
 	WMA_LOGD("%s: request_id: %u status: %d",
@@ -3925,11 +3927,13 @@ int wma_extscan_capabilities_event_handler(void *handle,
 
 
 	WMA_LOGD("%s: Capabilities: max_hotlist_ssids: %d,"
 	WMA_LOGD("%s: Capabilities: max_hotlist_ssids: %d,"
 		 "max_number_epno_networks: %d, max_number_epno_networks_by_ssid: %d,"
 		 "max_number_epno_networks: %d, max_number_epno_networks_by_ssid: %d,"
-		 "max_number_of_white_listed_ssid: %d",
+		 "max_number_of_white_listed_ssid: %d,"
+		 "max_number_of_black_listed_bssid: %d",
 		 __func__, dest_capab->max_hotlist_ssids,
 		 __func__, dest_capab->max_hotlist_ssids,
 		dest_capab->max_number_epno_networks,
 		dest_capab->max_number_epno_networks,
 		dest_capab->max_number_epno_networks_by_ssid,
 		dest_capab->max_number_epno_networks_by_ssid,
-		dest_capab->max_number_of_white_listed_ssid);
+		dest_capab->max_number_of_white_listed_ssid,
+		dest_capab->max_number_of_black_listed_bssid);
 
 
 	pMac->sme.pExtScanIndCb(pMac->hHdd,
 	pMac->sme.pExtScanIndCb(pMac->hHdd,
 				eSIR_EXTSCAN_GET_CAPABILITIES_IND, dest_capab);
 				eSIR_EXTSCAN_GET_CAPABILITIES_IND, dest_capab);