Ver código fonte

qcacld-3.0: Refactor disconnect userspace update APIs

Refactor the following APIs to pass link info pointer
corresponding to the VDEV to update the disconnection
status using the sta context from the link info.

1) __hdd_cm_disconnect_handler_pre_user_update()
2) hdd_handle_disassociation_event()

Change-Id: Ic90d2fb062af3907ad9eb8ce8ca4c676ea07adb6
CRs-Fixed: 3522354
Vinod Kumar Pirla 2 anos atrás
pai
commit
e5462e248b
2 arquivos alterados com 19 adições e 15 exclusões
  1. 5 4
      core/hdd/src/wlan_hdd_cm_api.h
  2. 14 11
      core/hdd/src/wlan_hdd_cm_disconnect.c

+ 5 - 4
core/hdd/src/wlan_hdd_cm_api.h

@@ -234,22 +234,23 @@ void reset_mscs_params(struct wlan_hdd_link_info *link_info)
 
 /**
  * hdd_handle_disassociation_event() - Handle disassociation event
- * @adapter: Pointer to adapter
+ * @link_info: Link info pointer in HDD adapter
  * @peer_macaddr: Pointer to peer mac address
  *
  * Return: None
  */
-void hdd_handle_disassociation_event(struct hdd_adapter *adapter,
+void hdd_handle_disassociation_event(struct wlan_hdd_link_info *link_info,
 				     struct qdf_mac_addr *peer_macaddr);
 
 /**
  * __hdd_cm_disconnect_handler_pre_user_update() - Handle disconnect indication
  * before updating to user space
- * @adapter: Pointer to adapter
+ * @link_info: Link info pointer in HDD adapter
  *
  * Return: None
  */
-void __hdd_cm_disconnect_handler_pre_user_update(struct hdd_adapter *adapter);
+void
+__hdd_cm_disconnect_handler_pre_user_update(struct wlan_hdd_link_info *link_info);
 
 /**
  * __hdd_cm_disconnect_handler_post_user_update() - Handle disconnect indication

+ 14 - 11
core/hdd/src/wlan_hdd_cm_disconnect.c

@@ -52,15 +52,16 @@
 #include "wlan_dp_ucfg_api.h"
 #include "wma.h"
 
-void hdd_handle_disassociation_event(struct hdd_adapter *adapter,
+void hdd_handle_disassociation_event(struct wlan_hdd_link_info *link_info,
 				     struct qdf_mac_addr *peer_macaddr)
 {
+	struct hdd_adapter *adapter = link_info->adapter;
 	struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(adapter);
 	struct hdd_station_ctx *sta_ctx;
 	ol_txrx_soc_handle soc = cds_get_context(QDF_MODULE_ID_SOC);
 	struct wlan_objmgr_vdev *vdev;
 
-	sta_ctx = WLAN_HDD_GET_STATION_CTX_PTR(adapter->deflink);
+	sta_ctx = WLAN_HDD_GET_STATION_CTX_PTR(link_info);
 	hdd_green_ap_start_state_mc(hdd_ctx, adapter->device_mode, false);
 
 	wlan_hdd_auto_shutdown_enable(hdd_ctx, true);
@@ -70,12 +71,12 @@ void hdd_handle_disassociation_event(struct hdd_adapter *adapter,
 		/* send peer status indication to oem app */
 		hdd_send_peer_status_ind_to_app(peer_macaddr,
 						ePeerDisconnected, 0,
-						adapter->deflink->vdev_id, NULL,
+						link_info->vdev_id, NULL,
 						adapter->device_mode);
 
 	hdd_lpass_notify_disconnect(adapter);
 
-	vdev = hdd_objmgr_get_vdev_by_user(adapter->deflink, WLAN_DP_ID);
+	vdev = hdd_objmgr_get_vdev_by_user(link_info, WLAN_DP_ID);
 	if (vdev) {
 		ucfg_dp_del_latency_critical_client(vdev,
 			hdd_convert_cfgdot11mode_to_80211mode(
@@ -122,14 +123,16 @@ static void hdd_cm_print_bss_info(struct hdd_station_ctx *hdd_sta_ctx)
 		       conn_info->hs20vendor_ie.release_num : 0);
 }
 
-void __hdd_cm_disconnect_handler_pre_user_update(struct hdd_adapter *adapter)
+void
+__hdd_cm_disconnect_handler_pre_user_update(struct wlan_hdd_link_info *link_info)
 {
+	struct hdd_adapter *adapter = link_info->adapter;
 	struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(adapter);
 	struct hdd_station_ctx *sta_ctx;
 	uint32_t time_buffer_size;
 	struct wlan_objmgr_vdev *vdev;
 
-	sta_ctx = WLAN_HDD_GET_STATION_CTX_PTR(adapter->deflink);
+	sta_ctx = WLAN_HDD_GET_STATION_CTX_PTR(link_info);
 	hdd_stop_tsf_sync(adapter);
 	time_buffer_size = sizeof(sta_ctx->conn_info.connect_time);
 	qdf_mem_zero(sta_ctx->conn_info.connect_time, time_buffer_size);
@@ -138,12 +141,12 @@ void __hdd_cm_disconnect_handler_pre_user_update(struct hdd_adapter *adapter)
 				  &sta_ctx->conn_info.bssid)))
 		ucfg_ipa_wlan_evt(hdd_ctx->pdev, adapter->dev,
 				  adapter->device_mode,
-				  adapter->deflink->vdev_id,
+				  link_info->vdev_id,
 				  WLAN_IPA_STA_DISCONNECT,
 				  sta_ctx->conn_info.bssid.bytes,
 				  false);
 
-	vdev = hdd_objmgr_get_vdev_by_user(adapter->deflink, WLAN_DP_ID);
+	vdev = hdd_objmgr_get_vdev_by_user(link_info, WLAN_DP_ID);
 	if (vdev) {
 		ucfg_dp_periodic_sta_stats_stop(vdev);
 		hdd_objmgr_put_vdev_by_user(vdev, WLAN_DP_ID);
@@ -152,7 +155,7 @@ void __hdd_cm_disconnect_handler_pre_user_update(struct hdd_adapter *adapter)
 	wlan_hdd_auto_shutdown_enable(hdd_ctx, true);
 
 	DPTRACE(qdf_dp_trace_mgmt_pkt(QDF_DP_TRACE_MGMT_PACKET_RECORD,
-		adapter->deflink->vdev_id,
+		link_info->vdev_id,
 		QDF_TRACE_DEFAULT_PDEV_ID,
 		QDF_PROTO_TYPE_MGMT, QDF_PROTO_MGMT_DISASSOC));
 
@@ -357,9 +360,9 @@ hdd_cm_disconnect_complete_pre_user_update(struct wlan_objmgr_vdev *vdev,
 	hdd_conn_set_authenticated(link_info, false);
 	hdd_napi_serialize(0);
 	hdd_disable_and_flush_mc_addr_list(adapter, pmo_peer_disconnect);
-	__hdd_cm_disconnect_handler_pre_user_update(adapter);
+	__hdd_cm_disconnect_handler_pre_user_update(link_info);
 
-	hdd_handle_disassociation_event(adapter, &rsp->req.req.bssid);
+	hdd_handle_disassociation_event(link_info, &rsp->req.req.bssid);
 
 	wlan_rec_conn_info(link_info->vdev_id,
 			   DEBUG_CONN_DISCONNECT_HANDLER,