Browse Source

qcacld-3.0: Remove mac address field from the csr session

csr has a mac address field which is redundant, the same can be
retrieved from the vdev object.

Hence remove the mac address field from the csr and update the same
from the vdev object.

Change-Id: I948cf858ddb26795e236aa4099186e5d10f504a6
CRs-Fixed: 2990480
Arun Kumar Khandavalli 3 years ago
parent
commit
a019216f89

+ 17 - 1
components/mlme/core/inc/wlan_mlme_main.h

@@ -706,7 +706,7 @@ QDF_STATUS wlan_mlme_get_ssid_vdev_id(struct wlan_objmgr_pdev *pdev,
 				      uint8_t *ssid, uint8_t *ssid_len);
 
 /**
- * wlan_vdev_get_bss_peer_mac() - get bss peer mac address(BSSID) using vdev id
+ * wlan_mlme_get_bssid_vdev_id() - get bss peer mac address(BSSID) using vdev id
  * @pdev: pdev
  * @vdev_id: vdev_id
  * @bss_peer_mac: pointer to bss_peer_mac_address
@@ -999,4 +999,20 @@ mlme_clear_operations_bitmap(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id);
  */
 void mlme_reinit_control_config_lfr_params(struct wlan_objmgr_psoc *psoc,
 					   struct wlan_mlme_lfr_cfg *lfr);
+
+/**
+ * wlan_mlme_get_mac_vdev_id() - get vdev self mac address using vdev id
+ * @pdev: pdev
+ * @vdev_id: vdev_id
+ * @self_mac: pointer to self_mac_address
+ *
+ * This API is used to get self mac address.
+ *
+ * Context: Any context.
+ *
+ * Return: QDF_STATUS based on overall success
+ */
+QDF_STATUS wlan_mlme_get_mac_vdev_id(struct wlan_objmgr_pdev *pdev,
+				     uint8_t vdev_id,
+				     struct qdf_mac_addr *self_mac);
 #endif

+ 21 - 0
components/mlme/core/src/wlan_mlme_main.c

@@ -3545,3 +3545,24 @@ QDF_STATUS mlme_get_fw_scan_channels(struct wlan_objmgr_psoc *psoc,
 	return QDF_STATUS_SUCCESS;
 }
 #endif
+
+QDF_STATUS wlan_mlme_get_mac_vdev_id(struct wlan_objmgr_pdev *pdev,
+				     uint8_t vdev_id,
+				     struct qdf_mac_addr *self_mac)
+{
+	struct wlan_objmgr_vdev *vdev;
+
+	if (!pdev)
+		return QDF_STATUS_E_INVAL;
+
+	vdev = wlan_objmgr_get_vdev_by_id_from_pdev(pdev, vdev_id,
+						    WLAN_LEGACY_MAC_ID);
+	if (!vdev)
+		return QDF_STATUS_E_INVAL;
+
+	qdf_mem_copy(self_mac->bytes,
+		     wlan_vdev_mlme_get_macaddr(vdev), QDF_MAC_ADDR_SIZE);
+	wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_MAC_ID);
+
+	return QDF_STATUS_SUCCESS;
+}

+ 0 - 3
core/sme/inc/csr_internal.h

@@ -287,9 +287,6 @@ struct csr_roam_session {
 	uint8_t vdev_id;
 	bool sessionActive;     /* true if it is used */
 
-	/* For BT-AMP station, this serve as BSSID for self-BSS. */
-	struct qdf_mac_addr self_mac_addr;
-
 	eCsrConnectState connectState;
 	struct csr_roam_connectedinfo connectedInfo;
 	tCsrRoamModifyProfileFields modifyProfileFields;

+ 2 - 2
core/sme/src/common/sme_api.c

@@ -5594,8 +5594,8 @@ QDF_STATUS sme_8023_multicast_list(mac_handle_t mac_handle, uint8_t sessionId,
 	qdf_mem_copy(request_buf, pMulticastAddrs,
 		     sizeof(tSirRcvFltMcAddrList));
 
-	qdf_copy_macaddr(&request_buf->self_macaddr, &pSession->self_mac_addr);
-
+	wlan_mlme_get_mac_vdev_id(mac->pdev, sessionId,
+				  &request_buf->self_macaddr);
 	wlan_mlme_get_bssid_vdev_id(mac->pdev, sessionId, &request_buf->bssid);
 
 	msg.type = WMA_8023_MULTICAST_LIST_REQ;

+ 6 - 11
core/sme/src/csr/csr_api_roam.c

@@ -6541,8 +6541,7 @@ QDF_STATUS csr_send_mb_disassoc_req_msg(struct mac_context *mac,
 	pMsg->length = sizeof(*pMsg);
 	pMsg->sessionId = sessionId;
 
-	qdf_mem_copy(&pMsg->bssid.bytes, &pSession->self_mac_addr,
-		     QDF_MAC_ADDR_SIZE);
+	wlan_mlme_get_mac_vdev_id(mac->pdev, sessionId, &pMsg->bssid);
 	qdf_mem_copy(&pMsg->peer_macaddr.bytes, bssId, QDF_MAC_ADDR_SIZE);
 	pMsg->reasonCode = reasonCode;
 
@@ -6585,7 +6584,8 @@ QDF_STATUS csr_send_chng_mcc_beacon_interval(struct mac_context *mac,
 		pMsg->message_type = eWNI_SME_CHNG_MCC_BEACON_INTERVAL;
 		pMsg->length = len;
 
-		qdf_copy_macaddr(&pMsg->bssid, &pSession->self_mac_addr);
+		wlan_mlme_get_mac_vdev_id(mac->pdev, sessionId,
+					  &pMsg->bssid);
 		sme_debug("CSR Attempting to change BI for Bssid= "
 			  QDF_MAC_ADDR_FMT,
 			  QDF_MAC_ADDR_REF(pMsg->bssid.bytes));
@@ -6627,7 +6627,7 @@ QDF_STATUS csr_set_ht2040_mode(struct mac_context *mac, uint32_t sessionId,
 		pMsg->messageType = eWNI_SME_SET_HT_2040_MODE;
 		pMsg->length = len;
 
-		qdf_copy_macaddr(&pMsg->bssid, &pSession->self_mac_addr);
+		wlan_mlme_get_mac_vdev_id(mac->pdev, sessionId, &pMsg->bssid);
 		sme_debug(
 			"CSR Attempting to set HT20/40 mode for Bssid= "
 			 QDF_MAC_ADDR_FMT,
@@ -6661,7 +6661,7 @@ QDF_STATUS csr_send_mb_deauth_req_msg(struct mac_context *mac,
 	pMsg->length = sizeof(*pMsg);
 	pMsg->vdev_id = vdev_id;
 
-	qdf_mem_copy(&pMsg->bssid, &pSession->self_mac_addr, QDF_MAC_ADDR_SIZE);
+	wlan_mlme_get_mac_vdev_id(mac->pdev, vdev_id, &pMsg->bssid);
 	/* Set the peer MAC address before sending the message to LIM */
 	qdf_mem_copy(&pMsg->peer_macaddr.bytes, bssId, QDF_MAC_ADDR_SIZE);
 	pMsg->reasonCode = reasonCode;
@@ -6821,7 +6821,7 @@ QDF_STATUS csr_send_mb_start_bss_req_msg(struct mac_context *mac, uint32_t
 	pMsg->length = sizeof(*pMsg);
 	qdf_copy_macaddr(&pMsg->bssid, &pParam->bssid);
 	/* self_mac_addr */
-	qdf_copy_macaddr(&pMsg->self_macaddr, &pSession->self_mac_addr);
+	wlan_mlme_get_mac_vdev_id(mac->pdev, sessionId, &pMsg->self_macaddr);
 	if (pParam->beaconInterval)
 		candidate_info.beacon_interval = pParam->beaconInterval;
 	else
@@ -7050,7 +7050,6 @@ QDF_STATUS csr_setup_vdev_session(struct vdev_mlme_obj *vdev_mlme)
 
 	vdev_id = wlan_vdev_get_id(vdev);
 	mac_addr = (struct qdf_mac_addr *)wlan_vdev_mlme_get_macaddr(vdev);
-
 	/* check to see if the mac address already belongs to a session */
 	status = csr_roam_get_session_id_from_bssid(mac_ctx, mac_addr,
 						    &existing_session_id);
@@ -7077,9 +7076,6 @@ QDF_STATUS csr_setup_vdev_session(struct vdev_mlme_obj *vdev_mlme)
 	session->sessionActive = true;
 	session->vdev_id = vdev_id;
 
-	qdf_mem_copy(&session->self_mac_addr, mac_addr,
-		     sizeof(struct qdf_mac_addr));
-
 	ht_cap.caps = 0;
 	vht_config.caps = 0;
 	ht_cap.ht_caps = mac_ctx->mlme_cfg->ht_caps.ht_cap_info;
@@ -7183,7 +7179,6 @@ static void csr_init_session(struct mac_context *mac, uint32_t sessionId)
 	pSession->vdev_id = WLAN_UMAC_VDEV_ID_MAX;
 	pSession->connectState = eCSR_ASSOC_STATE_TYPE_NOT_CONNECTED;
 	csr_roam_free_connected_info(mac, &pSession->connectedInfo);
-	qdf_mem_zero(&pSession->self_mac_addr, sizeof(struct qdf_mac_addr));
 }
 
 static void csr_get_vdev_id_from_bssid(struct wlan_objmgr_pdev *pdev,