|
@@ -902,6 +902,32 @@ rel_ref:
|
|
|
return status;
|
|
|
}
|
|
|
|
|
|
+#ifdef WLAN_FEATURE_11BE_MLO
|
|
|
+static void
|
|
|
+cm_get_and_disable_link_from_roam_ind(struct wlan_objmgr_psoc *psoc,
|
|
|
+ uint8_t vdev_id,
|
|
|
+ struct roam_offload_synch_ind *synch_data)
|
|
|
+{
|
|
|
+ uint8_t i;
|
|
|
+
|
|
|
+ for (i = 0; i < synch_data->num_setup_links; i++) {
|
|
|
+ if (synch_data->ml_link[i].vdev_id == vdev_id &&
|
|
|
+ synch_data->ml_link[i].flags & CM_ROAM_LINK_FLAG_DISABLE) {
|
|
|
+ mlme_info("Vdev %d: link flags 0x%x, indicate link disable",
|
|
|
+ vdev_id, synch_data->ml_link[i].flags);
|
|
|
+ policy_mgr_move_vdev_from_connection_to_disabled_tbl(
|
|
|
+ psoc, vdev_id);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+#else
|
|
|
+static inline void
|
|
|
+cm_get_and_disable_link_from_roam_ind(struct wlan_objmgr_psoc *psoc,
|
|
|
+ uint8_t vdev_id,
|
|
|
+ struct roam_offload_synch_ind *synch_data)
|
|
|
+{}
|
|
|
+#endif
|
|
|
QDF_STATUS cm_fw_roam_complete(struct cnx_mgr *cm_ctx, void *data)
|
|
|
{
|
|
|
struct roam_offload_synch_ind *roam_synch_data;
|
|
@@ -941,6 +967,8 @@ QDF_STATUS cm_fw_roam_complete(struct cnx_mgr *cm_ctx, void *data)
|
|
|
goto end;
|
|
|
}
|
|
|
|
|
|
+ /* Check if FW as indicated this link as disabled */
|
|
|
+ cm_get_and_disable_link_from_roam_ind(psoc, vdev_id, roam_synch_data);
|
|
|
/*
|
|
|
* Following operations need to be done once roam sync
|
|
|
* completion is sent to FW, hence called here:
|