Browse Source

qcacld-3.0: Cleanup the scan blacklist path

Currently with the support of Blacklist manager
component, all the blacklist, avoid list, RSSI-REJECT
list is maintained by the BLM, hence the filter logic
of the blacklist APs in the scan component is not
required.

Cleanup the blacklist BSSID APIs, and related functionality.

Change-Id: I4c8283d2c5e4ca66c24a25d31a74026510bb452c
CRs-Fixed: 2464188
gaurank kathpalia 5 năm trước cách đây
mục cha
commit
ac8504a703

+ 2 - 2
components/blacklist_mgr/core/inc/wlan_blm_core.h

@@ -219,7 +219,7 @@ blm_update_bssid_connect_params(struct wlan_objmgr_pdev *pdev,
 				enum blm_connection_state con_state);
 
 /**
- * blm_delete_reject_ap_list() - Clear away BSSID and destroy the reject ap list
+ * blm_flush_reject_ap_list() - Clear away BSSID and destroy the reject ap list
  * @blm_ctx: blacklist manager pdev priv object
  *
  * This API will clear the BSSID info in the reject AP list maintained by the
@@ -228,7 +228,7 @@ blm_update_bssid_connect_params(struct wlan_objmgr_pdev *pdev,
  * Return: None
  */
 void
-blm_delete_reject_ap_list(struct blm_pdev_priv_obj *blm_ctx);
+blm_flush_reject_ap_list(struct blm_pdev_priv_obj *blm_ctx);
 
 /**
  * blm_get_bssid_reject_list() - Get the BSSIDs in reject list from BLM

+ 2 - 2
components/blacklist_mgr/core/src/wlan_blm_core.c

@@ -847,7 +847,7 @@ blm_add_userspace_black_list(struct wlan_objmgr_pdev *pdev,
 }
 
 void
-blm_delete_reject_ap_list(struct blm_pdev_priv_obj *blm_ctx)
+blm_flush_reject_ap_list(struct blm_pdev_priv_obj *blm_ctx)
 {
 	struct blm_reject_ap *blm_entry = NULL;
 	QDF_STATUS status;
@@ -873,7 +873,7 @@ blm_delete_reject_ap_list(struct blm_pdev_priv_obj *blm_ctx)
 		next_node = NULL;
 	}
 
-	qdf_list_destroy(&blm_ctx->reject_ap_list);
+	blm_debug("BLM reject ap list flushed");
 	qdf_mutex_release(&blm_ctx->reject_ap_list_lock);
 }
 

+ 2 - 1
components/blacklist_mgr/core/src/wlan_blm_main.c

@@ -101,7 +101,8 @@ blm_pdev_object_destroyed_notification(struct wlan_objmgr_pdev *pdev,
 		return QDF_STATUS_E_FAILURE;
 	}
 	/* Clear away the memory allocated for the bad BSSIDs */
-	blm_delete_reject_ap_list(blm_ctx);
+	blm_flush_reject_ap_list(blm_ctx);
+	qdf_list_destroy(&blm_ctx->reject_ap_list);
 	qdf_mutex_destroy(&blm_ctx->reject_ap_list_lock);
 
 	wlan_objmgr_pdev_component_obj_detach(pdev,

+ 17 - 0
components/blacklist_mgr/dispatcher/inc/wlan_blm_ucfg_api.h

@@ -116,6 +116,18 @@ QDF_STATUS
 ucfg_blm_add_bssid_to_reject_list(struct wlan_objmgr_pdev *pdev,
 				  struct reject_ap_info *ap_info);
 
+/**
+ * ucfg_blm_flush_reject_ap_list() - Flush the reject ap entries stored in BLM.
+ * @blm_ctx: blacklist manager pdev priv object
+ *
+ * This API will clear the BSSID info in the reject AP list maintained by the
+ * blacklist manager, and will destroy the list as well.
+ *
+ * Return: None
+ */
+void
+ucfg_blm_flush_reject_ap_list(struct wlan_objmgr_pdev *pdev);
+
 #else
 static inline
 QDF_STATUS ucfg_blm_init(void)
@@ -164,5 +176,10 @@ ucfg_blm_update_bssid_connect_params(struct wlan_objmgr_pdev *pdev,
 {
 }
 
+static inline
+void ucfg_blm_flush_reject_ap_list(struct wlan_objmgr_pdev *pdev)
+{
+}
+
 #endif
 #endif /* _WLAN_BLM_UCFG_H_ */

+ 14 - 0
components/blacklist_mgr/dispatcher/src/wlan_blm_ucfg_api.c

@@ -138,3 +138,17 @@ ucfg_blm_update_bssid_connect_params(struct wlan_objmgr_pdev *pdev,
 {
 	blm_update_bssid_connect_params(pdev, bssid, con_state);
 }
+
+void
+ucfg_blm_flush_reject_ap_list(struct wlan_objmgr_pdev *pdev)
+{
+	struct blm_pdev_priv_obj *blm_ctx;
+
+	blm_ctx = blm_get_pdev_obj(pdev);
+	if (!blm_ctx) {
+		blm_err("blm_ctx is NULL");
+		return;
+	}
+
+	blm_flush_reject_ap_list(blm_ctx);
+}

+ 19 - 0
core/hdd/src/wlan_hdd_main.c

@@ -3224,6 +3224,21 @@ static int hdd_open(struct net_device *net_dev)
 	return errno;
 }
 
+static bool
+hdd_is_any_sta_interface_open(struct hdd_context *hdd_ctx)
+{
+	struct hdd_adapter *adapter;
+
+	hdd_for_each_adapter(hdd_ctx, adapter) {
+		if (adapter->device_mode == QDF_STA_MODE &&
+		   (test_bit(DEVICE_IFACE_OPENED, &adapter->event_flags) ||
+		    test_bit(SME_SESSION_OPENED, &adapter->event_flags)))
+			return true;
+	}
+
+	return false;
+}
+
 /**
  * __hdd_stop() - HDD stop function
  * @dev:	Pointer to net_device structure
@@ -3308,6 +3323,10 @@ static int __hdd_stop(struct net_device *dev)
 	/* DeInit the adapter. This ensures datapath cleanup as well */
 	hdd_deinit_adapter(hdd_ctx, adapter, true);
 
+	/* If no STA interface is open, then flush out the BLM entries */
+	if (!hdd_is_any_sta_interface_open(hdd_ctx))
+		ucfg_blm_flush_reject_ap_list(hdd_ctx->pdev);
+
 	if (!hdd_is_any_interface_open(hdd_ctx))
 		hdd_psoc_idle_timer_start(hdd_ctx);
 

+ 0 - 36
core/sme/src/common/sme_api.c

@@ -925,40 +925,6 @@ QDF_STATUS sme_update_config(mac_handle_t mac_handle,
 	return status;
 }
 
-/**
- * sme_update_scan_roam_params() - Update the scan roaming params
- * @mac_ctx: mac ctx
- *
- * Return: void.
- */
-static void sme_update_scan_roam_params(struct mac_context *mac_ctx)
-{
-	struct roam_filter_params scan_params = {0};
-	struct roam_ext_params *roam_params_src;
-	uint8_t i;
-	QDF_STATUS status;
-
-	roam_params_src = &mac_ctx->roam.configParam.roam_params;
-
-	scan_params.num_bssid_avoid_list =
-		roam_params_src->num_bssid_avoid_list;
-
-	if (scan_params.num_bssid_avoid_list >
-	   MAX_AVOID_LIST_BSSID)
-		scan_params.num_bssid_avoid_list =
-			MAX_AVOID_LIST_BSSID;
-
-	for (i = 0; i < scan_params.num_bssid_avoid_list; i++) {
-		qdf_copy_macaddr(&scan_params.bssid_avoid_list[i],
-				&roam_params_src->bssid_avoid_list[i]);
-	}
-
-	status = ucfg_scan_update_roam_params(mac_ctx->psoc, &scan_params);
-	if (QDF_IS_STATUS_ERROR(status))
-		sme_err("ailed to update scan roam params with status=%d",
-			status);
-}
-
 /**
  * sme_update_roam_params() - Store/Update the roaming params
  * @mac_handle: Opaque handle to the global MAC context
@@ -1049,8 +1015,6 @@ QDF_STATUS sme_update_roam_params(mac_handle_t mac_handle,
 		sme_release_global_lock(&mac_ctx->sme);
 	}
 
-	sme_update_scan_roam_params(mac_ctx);
-
 	return 0;
 }