diff --git a/core/hdd/inc/wlan_hdd_mlo.h b/core/hdd/inc/wlan_hdd_mlo.h index 9450cdbb7e..3621dffd36 100644 --- a/core/hdd/inc/wlan_hdd_mlo.h +++ b/core/hdd/inc/wlan_hdd_mlo.h @@ -128,6 +128,15 @@ void hdd_adapter_set_ml_adapter(struct hdd_adapter *adapter); * Return: adapter or NULL */ struct hdd_adapter *hdd_get_ml_adater(struct hdd_context *hdd_ctx); + +/** + * hdd_get_assoc_link_adapter() - get assoc link adapter + * @ml_adapter: ML adapter + * + * This function returns assoc link adapter + * Return: adapter or NULL + */ +struct hdd_adapter *hdd_get_assoc_link_adapter(struct hdd_adapter *ml_adapter); #else static inline QDF_STATUS hdd_wlan_unregister_mlo_interfaces(struct hdd_adapter *adapter, @@ -158,5 +167,11 @@ struct hdd_adapter *hdd_get_ml_adater(struct hdd_context *hdd_ctx) { return NULL; } + +static inline +struct hdd_adapter *hdd_get_assoc_link_adapter(struct hdd_adapter *ml_adapter) +{ + return NULL; +} #endif #endif diff --git a/core/hdd/src/wlan_hdd_cm_connect.c b/core/hdd/src/wlan_hdd_cm_connect.c index e9197fe448..302aeb4369 100644 --- a/core/hdd/src/wlan_hdd_cm_connect.c +++ b/core/hdd/src/wlan_hdd_cm_connect.c @@ -1217,7 +1217,6 @@ static bool hdd_cm_is_roam_auth_required(struct hdd_station_ctx *sta_ctx, #endif #if defined(WLAN_FEATURE_11BE_MLO) && defined(CFG80211_11BE_BASIC) -static struct hdd_adapter *hdd_get_assoc_link_adapter(struct hdd_adapter *ml_adapter) { int i; @@ -1236,13 +1235,6 @@ struct hdd_adapter *hdd_get_assoc_link_adapter(struct hdd_adapter *ml_adapter) } return NULL; } - -#else -static -struct hdd_adapter *hdd_get_assoc_link_adapter(struct hdd_adapter *ml_adapter) -{ - return NULL; -} #endif static void diff --git a/core/hdd/src/wlan_hdd_cm_disconnect.c b/core/hdd/src/wlan_hdd_cm_disconnect.c index a6023eb325..d8ba4dffca 100644 --- a/core/hdd/src/wlan_hdd_cm_disconnect.c +++ b/core/hdd/src/wlan_hdd_cm_disconnect.c @@ -165,6 +165,8 @@ void __hdd_cm_disconnect_handler_post_user_update(struct hdd_adapter *adapter, struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(adapter); struct hdd_station_ctx *sta_ctx = WLAN_HDD_GET_STATION_CTX_PTR(adapter); mac_handle_t mac_handle; + struct hdd_adapter *link_adapter; + struct hdd_station_ctx *link_sta_ctx; mac_handle = hdd_ctx->mac_handle; @@ -188,6 +190,16 @@ void __hdd_cm_disconnect_handler_post_user_update(struct hdd_adapter *adapter, SCAN_EVENT_TYPE_MAX, true); } + if (adapter->device_mode == QDF_STA_MODE && + hdd_adapter_is_ml_adapter(adapter)) { + /* Clear connection info in assoc link adapter as well */ + link_adapter = hdd_get_assoc_link_adapter(adapter); + if (link_adapter) { + link_sta_ctx = + WLAN_HDD_GET_STATION_CTX_PTR(link_adapter); + hdd_conn_remove_connect_info(link_sta_ctx); + } + } /* Clear saved connection information in HDD */ hdd_conn_remove_connect_info(sta_ctx);