Эх сурвалжийг харах

qcacld-3.0: Refactor IEs reset on SAP adapter stop

Move the IEs reset on SAP/P2P_GO adapter stop to new API
1) hdd_reset_ies_on_sap_stop()

Modify the below API to take link info pointer to reset VDEV
probe response IEs.
1) wlan_hdd_reset_prob_rspies()

Change-Id: Ia386be49aa19b51d97e3d9eb0368c68a2886c437
CRs-Fixed: 3523646
Vinod Kumar Pirla 2 жил өмнө
parent
commit
2e7fb09aee

+ 10 - 1
core/hdd/inc/wlan_hdd_main.h

@@ -2938,7 +2938,16 @@ uint32_t hdd_get_operating_chan_freq(struct hdd_context *hdd_ctx,
 
 void hdd_set_conparam(int32_t con_param);
 enum QDF_GLOBAL_MODE hdd_get_conparam(void);
-void wlan_hdd_reset_prob_rspies(struct hdd_adapter *adapter);
+
+/**
+ * wlan_hdd_reset_prob_rspies() - Reset probe response IEs
+ * @link_info: Link info pointer in HDD adapter.
+ *
+ * Reset the probe response IEs for the VDEV pointer by link info.
+ *
+ * Return: void
+ */
+void wlan_hdd_reset_prob_rspies(struct wlan_hdd_link_info *link_info);
 void hdd_prevent_suspend(uint32_t reason);
 
 /*

+ 1 - 1
core/hdd/src/wlan_hdd_hostapd.c

@@ -7196,7 +7196,7 @@ static int __wlan_hdd_cfg80211_stop_ap(struct wiphy *wiphy,
 		hdd_err("Could not pass on ASSOC_RSP data to PE");
 	}
 	/* Reset WNI_CFG_PROBE_RSP Flags */
-	wlan_hdd_reset_prob_rspies(adapter);
+	wlan_hdd_reset_prob_rspies(adapter->deflink);
 	hdd_destroy_acs_timer(adapter);
 
 	ucfg_p2p_status_stop_bss(adapter->deflink->vdev);

+ 35 - 26
core/hdd/src/wlan_hdd_main.c

@@ -8547,18 +8547,19 @@ void hdd_close_all_adapters(struct hdd_context *hdd_ctx, bool rtnl_held)
 	hdd_exit();
 }
 
-void wlan_hdd_reset_prob_rspies(struct hdd_adapter *adapter)
+void wlan_hdd_reset_prob_rspies(struct wlan_hdd_link_info *link_info)
 {
 	struct qdf_mac_addr *bssid = NULL;
 	tSirUpdateIE update_ie;
 	mac_handle_t mac_handle;
+	struct hdd_adapter *adapter = link_info->adapter;
 
 	switch (adapter->device_mode) {
 	case QDF_STA_MODE:
 	case QDF_P2P_CLIENT_MODE:
 	{
 		struct hdd_station_ctx *sta_ctx =
-			WLAN_HDD_GET_STATION_CTX_PTR(adapter->deflink);
+			WLAN_HDD_GET_STATION_CTX_PTR(link_info);
 		bssid = &sta_ctx->conn_info.bssid;
 		break;
 	}
@@ -8581,7 +8582,7 @@ void wlan_hdd_reset_prob_rspies(struct hdd_adapter *adapter)
 	}
 
 	qdf_copy_macaddr(&update_ie.bssid, bssid);
-	update_ie.vdev_id = adapter->deflink->vdev_id;
+	update_ie.vdev_id = link_info->vdev_id;
 	update_ie.ieBufferlength = 0;
 	update_ie.pAdditionIEBuffer = NULL;
 	update_ie.append = true;
@@ -8850,6 +8851,36 @@ hdd_stop_and_close_pre_cac_adapter(struct hdd_context *hdd_ctx,
 	}
 }
 
+static void hdd_reset_ies_on_sap_stop(struct wlan_hdd_link_info *link_info)
+{
+	mac_handle_t mac_handle;
+	tSirUpdateIE update_ie;
+	QDF_STATUS status;
+	struct hdd_adapter *adapter = link_info->adapter;
+
+	mac_handle = hdd_adapter_get_mac_handle(adapter);
+	update_ie.vdev_id = link_info->vdev_id;
+	update_ie.ieBufferlength = 0;
+	update_ie.pAdditionIEBuffer = NULL;
+	update_ie.append = false;
+	update_ie.notify = false;
+
+	/* Probe bcn reset */
+	status = sme_update_add_ie(mac_handle, &update_ie,
+				   eUPDATE_IE_PROBE_BCN);
+	if (status == QDF_STATUS_E_FAILURE)
+		hdd_err("Could not pass PROBE_RSP_BCN to PE");
+
+	/* Assoc resp reset */
+	status = sme_update_add_ie(mac_handle, &update_ie,
+				   eUPDATE_IE_ASSOC_RESP);
+	if (status == QDF_STATUS_E_FAILURE)
+		hdd_err("Could not pass ASSOC_RSP to PE");
+
+	/* Reset WNI_CFG_PROBE_RSP Flags */
+	wlan_hdd_reset_prob_rspies(link_info);
+}
+
 QDF_STATUS hdd_stop_adapter_ext(struct hdd_context *hdd_ctx,
 				struct hdd_adapter *adapter)
 {
@@ -8857,7 +8888,6 @@ QDF_STATUS hdd_stop_adapter_ext(struct hdd_context *hdd_ctx,
 	struct hdd_station_ctx *sta_ctx;
 	struct hdd_ap_ctx *ap_ctx;
 	union iwreq_data wrqu;
-	tSirUpdateIE update_ie;
 	struct sap_config *sap_config;
 	mac_handle_t mac_handle;
 	struct wlan_objmgr_vdev *vdev;
@@ -9020,28 +9050,7 @@ QDF_STATUS hdd_stop_adapter_ext(struct hdd_context *hdd_ctx,
 						    adapter->device_mode,
 						    false);
 
-			qdf_copy_macaddr(&update_ie.bssid,
-					 &adapter->mac_addr);
-			update_ie.vdev_id = link_info->vdev_id;
-			update_ie.ieBufferlength = 0;
-			update_ie.pAdditionIEBuffer = NULL;
-			update_ie.append = false;
-			update_ie.notify = false;
-
-			/* Probe bcn reset */
-			status = sme_update_add_ie(mac_handle, &update_ie,
-						   eUPDATE_IE_PROBE_BCN);
-			if (status == QDF_STATUS_E_FAILURE)
-				hdd_err("Could not pass PROBE_RSP_BCN to PE");
-
-			/* Assoc resp reset */
-			status = sme_update_add_ie(mac_handle, &update_ie,
-						   eUPDATE_IE_ASSOC_RESP);
-			if (status == QDF_STATUS_E_FAILURE)
-				hdd_err("Could not pass ASSOC_RSP to PE");
-
-			/* Reset WNI_CFG_PROBE_RSP Flags */
-			wlan_hdd_reset_prob_rspies(adapter);
+			hdd_reset_ies_on_sap_stop(link_info);
 		}
 
 		/*