Browse Source

qcacld-3.0: Refactor softap register STA APIs

Refactor the following APIs which are used to register STA for
SoftAP (both MC/BC and UC peers).
1) hdd_softap_register_bc_sta()
2) hdd_softap_register_sta()

Change-Id: Ibbc84e3c4c37c34d30d7d53ce39e3eab8fc42f47
CRs-Fixed: 3522878
Vinod Kumar Pirla 2 years ago
parent
commit
9a6fdde548

+ 6 - 7
core/hdd/inc/wlan_hdd_softap_tx_rx.h

@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2014-2021 The Linux Foundation. All rights reserved.
- * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
  *
  * Permission to use, copy, modify, and/or distribute this software for
  * any purpose with or without fee is hereby granted, provided that the
@@ -128,7 +128,7 @@ QDF_STATUS hdd_softap_deregister_sta(struct hdd_adapter *adapter,
 
 /**
  * hdd_softap_register_sta() - Register a SoftAP STA
- * @adapter: pointer to adapter context
+ * @link_info: Link info pointer in HDD adapter
  * @auth_required: is additional authentication required?
  * @privacy_required: should 802.11 privacy bit be set?
  * @sta_mac: station MAC address
@@ -137,20 +137,19 @@ QDF_STATUS hdd_softap_deregister_sta(struct hdd_adapter *adapter,
  * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error
  */
 QDF_STATUS
-hdd_softap_register_sta(struct hdd_adapter *adapter,
-			bool auth_required,
-			bool privacy_required,
+hdd_softap_register_sta(struct wlan_hdd_link_info *link_info,
+			bool auth_required, bool privacy_required,
 			struct qdf_mac_addr *sta_mac,
 			tSap_StationAssocReassocCompleteEvent *event);
 
 /**
  * hdd_softap_register_bc_sta() - Register the SoftAP broadcast STA
- * @adapter: pointer to adapter context
+ * @link_info: Link info pointer in HDD adapter
  * @privacy_required: should 802.11 privacy bit be set?
  *
  * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error
  */
-QDF_STATUS hdd_softap_register_bc_sta(struct hdd_adapter *adapter,
+QDF_STATUS hdd_softap_register_bc_sta(struct wlan_hdd_link_info *link_info,
 				      bool privacy_required);
 
 /**

+ 13 - 30
core/hdd/src/wlan_hdd_hostapd.c

@@ -2237,7 +2237,7 @@ QDF_STATUS hdd_hostapd_sap_event_cb(struct sap_event *sap_event,
 
 			/* @@@ need wep logic here to set privacy bit */
 			qdf_status =
-				hdd_softap_register_bc_sta(adapter,
+				hdd_softap_register_bc_sta(link_info,
 							   ap_ctx->privacy);
 			if (!QDF_IS_STATUS_SUCCESS(qdf_status)) {
 				hdd_warn("Failed to register BC STA %d",
@@ -2572,35 +2572,18 @@ QDF_STATUS hdd_hostapd_sap_event_cb(struct sap_event *sap_event,
 			bAuthRequired = false;
 		}
 
-		if (bAuthRequired) {
-			qdf_status = hdd_softap_register_sta(
-						adapter,
-						true,
-						ap_ctx->privacy,
-						(struct qdf_mac_addr *)
-						wrqu.addr.sa_data,
-						event);
-			if (QDF_IS_STATUS_SUCCESS(qdf_status))
-				hdd_fill_station_info(adapter, event);
-			else
-				hdd_err("Failed to register STA %d "
-					QDF_MAC_ADDR_FMT, qdf_status,
-					QDF_MAC_ADDR_REF(wrqu.addr.sa_data));
-		} else {
-			qdf_status = hdd_softap_register_sta(
-						adapter,
-						false,
-						ap_ctx->privacy,
-						(struct qdf_mac_addr *)
-						wrqu.addr.sa_data,
-						event);
-			if (QDF_IS_STATUS_SUCCESS(qdf_status))
-				hdd_fill_station_info(adapter, event);
-			else
-				hdd_err("Failed to register STA %d "
-					QDF_MAC_ADDR_FMT, qdf_status,
-					QDF_MAC_ADDR_REF(wrqu.addr.sa_data));
-		}
+		qdf_status = hdd_softap_register_sta(link_info,
+						     bAuthRequired,
+						     ap_ctx->privacy,
+						     (struct qdf_mac_addr *)
+						           wrqu.addr.sa_data,
+						     event);
+		if (QDF_IS_STATUS_SUCCESS(qdf_status))
+			hdd_fill_station_info(adapter, event);
+		else
+			hdd_err("Failed to register STA %d "
+				QDF_MAC_ADDR_FMT, qdf_status,
+				QDF_MAC_ADDR_REF(wrqu.addr.sa_data));
 
 		sta_id = event->staId;
 

+ 11 - 17
core/hdd/src/wlan_hdd_softap_tx_rx.c

@@ -521,14 +521,14 @@ QDF_STATUS hdd_softap_deregister_sta(struct hdd_adapter *adapter,
 	return QDF_STATUS_SUCCESS;
 }
 
-QDF_STATUS hdd_softap_register_sta(struct hdd_adapter *adapter,
-				   bool auth_required,
-				   bool privacy_required,
+QDF_STATUS hdd_softap_register_sta(struct wlan_hdd_link_info *link_info,
+				   bool auth_required, bool privacy_required,
 				   struct qdf_mac_addr *sta_mac,
 				   tSap_StationAssocReassocCompleteEvent *event)
 {
 	QDF_STATUS qdf_status = QDF_STATUS_E_FAILURE;
 	struct ol_txrx_desc_type txrx_desc = {0};
+	struct hdd_adapter *adapter = link_info->adapter;
 	struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(adapter);
 	struct ol_txrx_ops txrx_ops;
 	void *soc = cds_get_context(QDF_MODULE_ID_SOC);
@@ -545,7 +545,7 @@ QDF_STATUS hdd_softap_register_sta(struct hdd_adapter *adapter,
 		dot11mode = hdd_convert_dot11mode_from_phymode(event->chan_info.info);
 	}
 
-	ap_ctx = WLAN_HDD_GET_AP_CTX_PTR(adapter->deflink);
+	ap_ctx = WLAN_HDD_GET_AP_CTX_PTR(link_info);
 
 	/*
 	 * If the address is a broadcast address, then provide the self mac addr
@@ -572,7 +572,7 @@ QDF_STATUS hdd_softap_register_sta(struct hdd_adapter *adapter,
 
 	txrx_desc.is_qos_enabled = wmm_enabled;
 
-	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)
 		return QDF_STATUS_E_INVAL;
 
@@ -659,29 +659,23 @@ QDF_STATUS hdd_softap_register_sta(struct hdd_adapter *adapter,
 	return qdf_status;
 }
 
-/**
- * hdd_softap_register_bc_sta() - Register the SoftAP broadcast STA
- * @adapter: pointer to adapter context
- * @privacy_required: should 802.11 privacy bit be set?
- *
- * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error
- */
-QDF_STATUS hdd_softap_register_bc_sta(struct hdd_adapter *adapter,
-				      bool privacy_required)
+QDF_STATUS
+hdd_softap_register_bc_sta(struct wlan_hdd_link_info *link_info,
+			   bool privacy_required)
 {
 	QDF_STATUS qdf_status = QDF_STATUS_E_FAILURE;
 	struct qdf_mac_addr broadcast_macaddr = QDF_MAC_ADDR_BCAST_INIT;
 	struct hdd_ap_ctx *ap_ctx;
 	uint8_t sta_id;
-	ap_ctx = WLAN_HDD_GET_AP_CTX_PTR(adapter->deflink);
-	sta_id = ap_ctx->broadcast_sta_id;
 
+	ap_ctx = WLAN_HDD_GET_AP_CTX_PTR(link_info);
+	sta_id = ap_ctx->broadcast_sta_id;
 	if (sta_id >= WLAN_MAX_STA_COUNT) {
 		hdd_err("Error: Invalid sta_id: %u", sta_id);
 		return qdf_status;
 	}
 
-	qdf_status = hdd_softap_register_sta(adapter, false,
+	qdf_status = hdd_softap_register_sta(link_info, false,
 					     privacy_required,
 					     &broadcast_macaddr, NULL);