qcacld-3.0: Enable RSO for ML connection
For MLO connection, roaming is enabled after ML link is up. Change-Id: Ib042a9593bef9f287b92f0b256c942f8133a7f71 CRs-Fixed: 3098637
This commit is contained in:

committed by
Madan Koyyalamudi

parent
54f3255108
commit
f99679197f
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2012-2015, 2020-2021, The Linux Foundation. All rights reserved.
|
* Copyright (c) 2012-2015, 2020-2021, The Linux Foundation. All rights reserved.
|
||||||
* Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved.
|
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||||
*
|
*
|
||||||
* Permission to use, copy, modify, and/or distribute this software for any
|
* Permission to use, copy, modify, and/or distribute this software for any
|
||||||
* purpose with or without fee is hereby granted, provided that the above
|
* purpose with or without fee is hereby granted, provided that the above
|
||||||
@@ -35,6 +35,7 @@
|
|||||||
#include "cfg_ucfg_api.h"
|
#include "cfg_ucfg_api.h"
|
||||||
#include "wlan_roam_debug.h"
|
#include "wlan_roam_debug.h"
|
||||||
#include "wlan_mlo_mgr_sta.h"
|
#include "wlan_mlo_mgr_sta.h"
|
||||||
|
#include "wlan_mlo_mgr_roam.h"
|
||||||
|
|
||||||
#ifdef WLAN_FEATURE_FILS_SK
|
#ifdef WLAN_FEATURE_FILS_SK
|
||||||
void cm_update_hlp_info(struct wlan_objmgr_vdev *vdev,
|
void cm_update_hlp_info(struct wlan_objmgr_vdev *vdev,
|
||||||
@@ -1377,6 +1378,7 @@ static void cm_process_connect_complete(struct wlan_objmgr_psoc *psoc,
|
|||||||
QDF_HAS_PARAM(ucast_cipher, WLAN_CRYPTO_CIPHER_WEP_104) ||
|
QDF_HAS_PARAM(ucast_cipher, WLAN_CRYPTO_CIPHER_WEP_104) ||
|
||||||
QDF_HAS_PARAM(ucast_cipher, WLAN_CRYPTO_CIPHER_WEP))) {
|
QDF_HAS_PARAM(ucast_cipher, WLAN_CRYPTO_CIPHER_WEP))) {
|
||||||
cm_csr_set_ss_none(vdev_id);
|
cm_csr_set_ss_none(vdev_id);
|
||||||
|
if (!wlan_vdev_mlme_is_mlo_vdev(vdev))
|
||||||
cm_roam_start_init_on_connect(pdev, vdev_id);
|
cm_roam_start_init_on_connect(pdev, vdev_id);
|
||||||
} else {
|
} else {
|
||||||
if (rsp->is_wps_connection)
|
if (rsp->is_wps_connection)
|
||||||
@@ -1398,6 +1400,7 @@ cm_connect_complete_ind(struct wlan_objmgr_vdev *vdev,
|
|||||||
struct wlan_objmgr_pdev *pdev;
|
struct wlan_objmgr_pdev *pdev;
|
||||||
struct wlan_objmgr_psoc *psoc;
|
struct wlan_objmgr_psoc *psoc;
|
||||||
enum QDF_OPMODE op_mode;
|
enum QDF_OPMODE op_mode;
|
||||||
|
QDF_STATUS status;
|
||||||
|
|
||||||
if (!vdev || !rsp) {
|
if (!vdev || !rsp) {
|
||||||
mlme_err("vdev or rsp is NULL");
|
mlme_err("vdev or rsp is NULL");
|
||||||
@@ -1435,10 +1438,15 @@ cm_connect_complete_ind(struct wlan_objmgr_vdev *vdev,
|
|||||||
wlan_p2p_status_connect(vdev);
|
wlan_p2p_status_connect(vdev);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (op_mode == QDF_STA_MODE)
|
if (op_mode == QDF_STA_MODE &&
|
||||||
|
!wlan_vdev_mlme_is_mlo_vdev(vdev))
|
||||||
wlan_cm_roam_state_change(pdev, vdev_id, WLAN_ROAM_INIT,
|
wlan_cm_roam_state_change(pdev, vdev_id, WLAN_ROAM_INIT,
|
||||||
REASON_CONNECT);
|
REASON_CONNECT);
|
||||||
|
|
||||||
|
status = mlo_enable_rso(pdev, vdev);
|
||||||
|
if (QDF_IS_STATUS_ERROR(status))
|
||||||
|
return status;
|
||||||
|
|
||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved.
|
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||||
*
|
*
|
||||||
* Permission to use, copy, modify, and/or distribute this software for any
|
* Permission to use, copy, modify, and/or distribute this software for any
|
||||||
* purpose with or without fee is hereby granted, provided that the above
|
* purpose with or without fee is hereby granted, provided that the above
|
||||||
@@ -88,6 +88,19 @@ mlo_get_sta_link_mac_addr(uint8_t vdev_id,
|
|||||||
bool
|
bool
|
||||||
is_multi_link_roam(struct roam_offload_synch_ind *sync_ind);
|
is_multi_link_roam(struct roam_offload_synch_ind *sync_ind);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* mlo_enable_rso - Enable rso on assoc vdev
|
||||||
|
*
|
||||||
|
* @pdev: pdev pointer
|
||||||
|
* @vdev: assoc vdev pointer
|
||||||
|
*
|
||||||
|
* This api will be called to enable RSO for MLO connection.
|
||||||
|
*
|
||||||
|
* Return: qdf_status success or fail
|
||||||
|
*/
|
||||||
|
QDF_STATUS mlo_enable_rso(struct wlan_objmgr_pdev *pdev,
|
||||||
|
struct wlan_objmgr_vdev *vdev);
|
||||||
|
|
||||||
#else
|
#else
|
||||||
static inline QDF_STATUS
|
static inline QDF_STATUS
|
||||||
mlo_get_sta_link_mac_addr(uint8_t vdev_id,
|
mlo_get_sta_link_mac_addr(uint8_t vdev_id,
|
||||||
@@ -103,5 +116,11 @@ is_multi_link_roam(struct roam_offload_synch_ind *sync_ind)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline
|
||||||
|
QDF_STATUS mlo_enable_rso(struct wlan_objmgr_pdev *pdev,
|
||||||
|
struct wlan_objmgr_vdev *vdev)
|
||||||
|
{
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
#endif /* WLAN_FEATURE_11BE_MLO */
|
#endif /* WLAN_FEATURE_11BE_MLO */
|
||||||
#endif
|
#endif
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved.
|
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||||
*
|
*
|
||||||
* Permission to use, copy, modify, and/or distribute this software for any
|
* Permission to use, copy, modify, and/or distribute this software for any
|
||||||
* purpose with or without fee is hereby granted, provided that the above
|
* purpose with or without fee is hereby granted, provided that the above
|
||||||
@@ -69,3 +69,23 @@ bool is_multi_link_roam(struct roam_offload_synch_ind *sync_ind)
|
|||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QDF_STATUS mlo_enable_rso(struct wlan_objmgr_pdev *pdev,
|
||||||
|
struct wlan_objmgr_vdev *vdev)
|
||||||
|
{
|
||||||
|
struct wlan_objmgr_vdev *assoc_vdev;
|
||||||
|
|
||||||
|
if (wlan_vdev_mlme_is_mlo_link_vdev(vdev)) {
|
||||||
|
assoc_vdev = wlan_mlo_get_assoc_link_vdev(vdev);
|
||||||
|
if (!assoc_vdev) {
|
||||||
|
mlo_err("Assoc vdev is null");
|
||||||
|
return QDF_STATUS_E_NULL_VALUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
cm_roam_start_init_on_connect(pdev,
|
||||||
|
wlan_vdev_get_id(assoc_vdev));
|
||||||
|
}
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -4120,6 +4120,7 @@ csr_roam_chk_lnk_set_ctx_rsp(struct mac_context *mac_ctx, tSirSmeRsp *msg_ptr)
|
|||||||
csr_roam_substate_change(mac_ctx, eCSR_ROAM_SUBSTATE_NONE,
|
csr_roam_substate_change(mac_ctx, eCSR_ROAM_SUBSTATE_NONE,
|
||||||
sessionId);
|
sessionId);
|
||||||
cm_stop_wait_for_key_timer(mac_ctx->psoc, sessionId);
|
cm_stop_wait_for_key_timer(mac_ctx->psoc, sessionId);
|
||||||
|
if (!wlan_vdev_mlme_get_is_mlo_vdev(mac_ctx->psoc, sessionId))
|
||||||
cm_roam_start_init_on_connect(mac_ctx->pdev, sessionId);
|
cm_roam_start_init_on_connect(mac_ctx->pdev, sessionId);
|
||||||
}
|
}
|
||||||
if (eSIR_SME_SUCCESS == pRsp->status_code) {
|
if (eSIR_SME_SUCCESS == pRsp->status_code) {
|
||||||
|
Reference in New Issue
Block a user