Pārlūkot izejas kodu

qcacld-3.0: Update link id after roaming

Update the link id in vdev mlme after roam sync is processed.

Change-Id: I4f7a80ad91235ebafd2bab10c1de22ac8798a816
CRs-Fixed: 3314935
Amruta Kulkarni 2 gadi atpakaļ
vecāks
revīzija
2fe6f6adb9

+ 1 - 1
components/umac/mlme/connection_mgr/core/src/wlan_cm_roam_fw_sync.c

@@ -887,6 +887,7 @@ cm_fw_roam_sync_propagation(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
 		policy_mgr_move_vdev_from_disabled_to_connection_tbl(psoc,
 								     vdev_id);
 	mlo_roam_copy_partner_info(connect_rsp, roam_synch_data);
+	mlo_roam_set_link_id(vdev, roam_synch_data);
 
 	/**
 	 * Don't send roam_sync complete for MLO link vdevs.
@@ -909,7 +910,6 @@ cm_fw_roam_sync_propagation(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
 			cm_roam_start_init_on_connect(pdev, vdev_id);
 		}
 		wlan_cm_tgt_send_roam_sync_complete_cmd(psoc, vdev_id);
-
 		mlo_roam_update_connected_links(vdev, connect_rsp);
 		mlo_set_single_link_ml_roaming(psoc, vdev_id,
 					       roam_synch_data, false);

+ 19 - 0
components/umac/mlme/mlo_mgr/inc/wlan_mlo_mgr_roam.h

@@ -253,6 +253,20 @@ wlan_mlo_roam_abort_on_link(struct wlan_objmgr_psoc *psoc,
 bool
 mlo_check_if_all_links_up(struct wlan_objmgr_vdev *vdev);
 
+/**
+ * mlo_roam_set_link_id - set link id post roaming
+ *
+ * @vdev: vdev pointer
+ * @sync_ind: roam sync indication pointer
+ *
+ * This api will be called to set link id post roaming
+ *
+ * Return: none
+ */
+void
+mlo_roam_set_link_id(struct wlan_objmgr_vdev *vdev,
+		     struct roam_offload_synch_ind *sync_ind);
+
 #else /* WLAN_FEATURE_11BE_MLO */
 #ifdef WLAN_FEATURE_ROAM_OFFLOAD
 static inline
@@ -354,5 +368,10 @@ mlo_check_if_all_links_up(struct wlan_objmgr_vdev *vdev)
 {
 	return false;
 }
+
+static inline void
+mlo_roam_set_link_id(struct wlan_objmgr_vdev *vdev,
+		     struct roam_offload_synch_ind *sync_ind)
+{}
 #endif /* WLAN_FEATURE_11BE_MLO */
 #endif

+ 16 - 0
components/umac/mlme/mlo_mgr/src/wlan_mlo_mgr_roam.c

@@ -615,3 +615,19 @@ mlo_check_if_all_links_up(struct wlan_objmgr_vdev *vdev)
 	return false;
 }
 
+void
+mlo_roam_set_link_id(struct wlan_objmgr_vdev *vdev,
+		     struct roam_offload_synch_ind *sync_ind)
+{
+	uint8_t i;
+
+	for (i = 0; i < sync_ind->num_setup_links; i++) {
+		if (sync_ind->ml_link[i].vdev_id == wlan_vdev_get_id(vdev)) {
+			wlan_vdev_set_link_id(vdev,
+					      sync_ind->ml_link[i].link_id);
+			mlme_debug("Set link for vdev id %d link id %d",
+				   wlan_vdev_get_id(vdev),
+				   sync_ind->ml_link[i].link_id);
+		}
+	}
+}