Преглед изворни кода

qcacmn: Use mlo dev context to fetch link info

This change is to use ml dev context to fetch
link info, As ml dev context is available in both
vdev and psoc context. It's valid for both standby
and active links.

Change-Id: Ib705bd5a5a1144f980295331f5f26ba667906cf1
CRs-Fixed: 3568944
Aasir Rasheed пре 1 година
родитељ
комит
e4b28f875e

+ 4 - 2
os_if/linux/mlme/src/osif_cm_connect_rsp.c

@@ -533,7 +533,8 @@ osif_populate_partner_links_mlo_params(struct wlan_objmgr_vdev *vdev,
 		rsp_partner_info = &rsp->ml_parnter_info.partner_link_info[i];
 		link_id = rsp_partner_info->link_id;
 
-		link_info = mlo_mgr_get_ap_link_by_link_id(vdev, link_id);
+		link_info = mlo_mgr_get_ap_link_by_link_id(vdev->mlo_dev_ctx,
+							   link_id);
 		if (!link_info)
 			continue;
 
@@ -569,7 +570,8 @@ static void osif_fill_connect_resp_mlo_params(struct wlan_objmgr_vdev *vdev,
 	}
 
 	assoc_link_id = wlan_vdev_get_link_id(vdev);
-	link_info = mlo_mgr_get_ap_link_by_link_id(vdev, assoc_link_id);
+	link_info = mlo_mgr_get_ap_link_by_link_id(vdev->mlo_dev_ctx,
+						   assoc_link_id);
 	if (!link_info) {
 		osif_err("Unable to find link_info for link_id: %d",
 			 assoc_link_id);

+ 6 - 4
os_if/linux/mlme/src/osif_cm_roam_rsp.c

@@ -117,8 +117,9 @@ osif_populate_partner_links_roam_mlo_params(struct wlan_objmgr_vdev *roamed_vdev
 		if (QDF_IS_STATUS_ERROR(qdf_status))
 			continue;
 
-		link_info = mlo_mgr_get_ap_link_by_link_id(roamed_vdev,
-							   link_id);
+		link_info = mlo_mgr_get_ap_link_by_link_id(
+					roamed_vdev->mlo_dev_ctx,
+					link_id);
 		if (!link_info) {
 			osif_debug("link info not found for link_id:%d",
 				   link_id);
@@ -411,8 +412,9 @@ osif_send_roam_auth_mlo_links_event(struct sk_buff *skb,
 		/* Standby link */
 		if (link_vdev_id == WLAN_INVALID_VDEV_ID) {
 			struct mlo_link_info *standby_info =
-					mlo_mgr_get_ap_link_by_link_id(vdev,
-								       link_id);
+					mlo_mgr_get_ap_link_by_link_id(
+							vdev->mlo_dev_ctx,
+							link_id);
 			if (standby_info) {
 				link_addr = standby_info->link_addr;
 			} else {

+ 3 - 2
umac/mlo_mgr/inc/wlan_mlo_mgr_link_switch.h

@@ -234,7 +234,7 @@ void mlo_mgr_update_ap_channel_info(struct wlan_objmgr_vdev *vdev,
 
 /**
  * mlo_mgr_get_ap_link_by_link_id() - Get mlo link info from link id
- * @vdev: Object Manager vdev
+ * @mlo_dev_ctx: mlo context
  * @link_id: Link id of the AP MLD link
  *
  * Search for the @link_id in the array in link_ctx in mlo_dev_ctx.
@@ -244,7 +244,8 @@ void mlo_mgr_update_ap_channel_info(struct wlan_objmgr_vdev *vdev,
  * Return: Pointer of link info
  */
 struct mlo_link_info*
-mlo_mgr_get_ap_link_by_link_id(struct wlan_objmgr_vdev *vdev, int link_id);
+mlo_mgr_get_ap_link_by_link_id(struct wlan_mlo_dev_context *mlo_dev_ctx,
+			       int link_id);
 
 /**
  * mlo_mgr_get_ap_link() - Assoc mlo link info from link id

+ 14 - 9
umac/mlo_mgr/src/wlan_mlo_mgr_link_switch.c

@@ -97,7 +97,7 @@ void mlo_mgr_update_ap_channel_info(struct wlan_objmgr_vdev *vdev, uint8_t link_
 	if (!vdev || !vdev->mlo_dev_ctx || !ap_link_addr)
 		return;
 
-	link_info = mlo_mgr_get_ap_link_by_link_id(vdev, link_id);
+	link_info = mlo_mgr_get_ap_link_by_link_id(vdev->mlo_dev_ctx, link_id);
 	if (!link_info)
 		return;
 
@@ -172,15 +172,16 @@ void mlo_mgr_reset_ap_link_info(struct wlan_objmgr_vdev *vdev)
 }
 
 struct mlo_link_info
-*mlo_mgr_get_ap_link_by_link_id(struct wlan_objmgr_vdev *vdev, int link_id)
+*mlo_mgr_get_ap_link_by_link_id(struct wlan_mlo_dev_context *mlo_dev_ctx,
+				int link_id)
 {
 	struct mlo_link_info *link_info;
 	uint8_t link_info_iter;
 
-	if (!vdev || link_id < 0 || link_id > 15)
+	if (!mlo_dev_ctx || link_id < 0 || link_id > 15)
 		return NULL;
 
-	link_info = &vdev->mlo_dev_ctx->link_ctx->links_info[0];
+	link_info = &mlo_dev_ctx->link_ctx->links_info[0];
 	for (link_info_iter = 0; link_info_iter < WLAN_MAX_ML_BSS_LINKS;
 	     link_info_iter++) {
 		if (link_info->link_id == link_id)
@@ -497,7 +498,7 @@ mlo_mgr_osif_update_connect_info(struct wlan_objmgr_vdev *vdev, int32_t link_id)
 	    !g_mlo_ctx->osif_ops->mlo_mgr_osif_update_bss_info)
 		return;
 
-	link_info = mlo_mgr_get_ap_link_by_link_id(vdev, link_id);
+	link_info = mlo_mgr_get_ap_link_by_link_id(vdev->mlo_dev_ctx, link_id);
 	if (!link_info)
 		return;
 
@@ -540,7 +541,8 @@ QDF_STATUS mlo_mgr_link_switch_disconnect_done(struct wlan_objmgr_vdev *vdev,
 		  wlan_vdev_get_id(vdev));
 
 	new_link_info =
-		mlo_mgr_get_ap_link_by_link_id(vdev, req->new_ieee_link_id);
+		mlo_mgr_get_ap_link_by_link_id(vdev->mlo_dev_ctx,
+					       req->new_ieee_link_id);
 	if (!new_link_info) {
 		mlo_err("New link not found in mlo dev ctx");
 		mlo_mgr_remove_link_switch_cmd(vdev);
@@ -597,7 +599,8 @@ QDF_STATUS mlo_mgr_link_switch_set_mac_addr_resp(struct wlan_objmgr_vdev *vdev,
 	}
 
 	new_link_info =
-		mlo_mgr_get_ap_link_by_link_id(vdev, req->new_ieee_link_id);
+		mlo_mgr_get_ap_link_by_link_id(vdev->mlo_dev_ctx,
+					       req->new_ieee_link_id);
 	if (!new_link_info) {
 		mlo_mgr_remove_link_switch_cmd(vdev);
 		return status;
@@ -641,7 +644,8 @@ QDF_STATUS mlo_mgr_link_switch_start_connect(struct wlan_objmgr_vdev *vdev)
 	sta_ctx = vdev->mlo_dev_ctx->sta_ctx;
 
 	mlo_link_info =
-		mlo_mgr_get_ap_link_by_link_id(vdev, req->new_ieee_link_id);
+		mlo_mgr_get_ap_link_by_link_id(vdev->mlo_dev_ctx,
+					       req->new_ieee_link_id);
 
 	if (!mlo_link_info) {
 		mlo_err("New link ID not found");
@@ -956,7 +960,8 @@ mlo_mgr_link_switch_validate_request(struct wlan_objmgr_vdev *vdev,
 		return status;
 	}
 
-	if (!mlo_mgr_get_ap_link_by_link_id(vdev, req->new_ieee_link_id)) {
+	if (!mlo_mgr_get_ap_link_by_link_id(vdev->mlo_dev_ctx,
+					    req->new_ieee_link_id)) {
 		mlo_err("New link id %d not part of association",
 			req->new_ieee_link_id);
 		return status;