diff --git a/umac/mlme/connection_mgr/core/src/wlan_cm_connect.c b/umac/mlme/connection_mgr/core/src/wlan_cm_connect.c index dc465e152d..dc70bb5ddb 100644 --- a/umac/mlme/connection_mgr/core/src/wlan_cm_connect.c +++ b/umac/mlme/connection_mgr/core/src/wlan_cm_connect.c @@ -249,6 +249,17 @@ static QDF_STATUS cm_ser_connect_req(struct wlan_objmgr_pdev *pdev, QDF_STATUS status; uint8_t vdev_id = wlan_vdev_get_id(cm_ctx->vdev); + if (cm_is_link_switch_connect_req(cm_req)) { + /* + * For link switch, connect serialization is not required as + * link switch is already serialized. + */ + return cm_sm_deliver_event_sync(cm_ctx, + WLAN_CM_SM_EV_CONNECT_ACTIVE, + sizeof(wlan_cm_id), + &cm_req->cm_id); + } + status = wlan_objmgr_vdev_try_get_ref(cm_ctx->vdev, WLAN_MLME_CM_ID); if (QDF_IS_STATUS_ERROR(status)) { mlme_err(CM_PREFIX_FMT "unable to get reference", @@ -1937,17 +1948,7 @@ QDF_STATUS cm_connect_start(struct cnx_mgr *cm_ctx, return QDF_STATUS_SUCCESS; } - if (cm_is_link_switch_connect_req(cm_req)) { - /* The error handling has to be different here.not corresponds - * to connect req serialization now. - */ - status = cm_sm_deliver_event_sync(cm_ctx, - WLAN_CM_SM_EV_CONNECT_ACTIVE, - sizeof(wlan_cm_id), - &cm_req->cm_id); - } else { - status = cm_ser_connect_req(pdev, cm_ctx, cm_req); - } + status = cm_ser_connect_req(pdev, cm_ctx, cm_req); if (QDF_IS_STATUS_ERROR(status)) { reason = CM_SER_FAILURE;