qcacld-3.0: handle MLO scenario for roam processing
Treat MLO STA as a single entity in roam processing: only process roam related requests on assoc vdev. Change-Id: Ida9665771e00236c491f58dc764cc6e470dcb6df CRs-Fixed: 3104659
这个提交包含在:
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 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
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
@@ -133,10 +133,10 @@ if_mgr_enable_roaming_on_connected_sta(struct wlan_objmgr_pdev *pdev,
|
||||
if (!psoc)
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
|
||||
vdev_id = wlan_vdev_get_id(vdev);
|
||||
|
||||
if (policy_mgr_is_sta_active_connection_exists(psoc) &&
|
||||
wlan_vdev_mlme_get_opmode(vdev) == QDF_STA_MODE) {
|
||||
wlan_vdev_mlme_get_opmode(vdev) == QDF_STA_MODE &&
|
||||
!wlan_vdev_mlme_is_mlo_link_vdev(vdev)) {
|
||||
vdev_id = wlan_vdev_get_id(vdev);
|
||||
ifmgr_debug("Enable roaming on connected sta for vdev_id %d", vdev_id);
|
||||
wlan_cm_enable_roaming_on_connected_sta(pdev, vdev_id);
|
||||
policy_mgr_set_pcl_for_connected_vdev(psoc, vdev_id, true);
|
||||
|
@@ -40,9 +40,8 @@
|
||||
#include "wlan_mlme_api.h"
|
||||
#include "wlan_mlme_main.h"
|
||||
#include "wlan_mlme_vdev_mgr_interface.h"
|
||||
#ifdef WLAN_FEATURE_11BE_MLO
|
||||
#include "wlan_mlo_mgr_sta.h"
|
||||
#endif
|
||||
#include "wlan_cm_ucfg_api.h"
|
||||
|
||||
/* invalid channel id. */
|
||||
#define INVALID_CHANNEL_ID 0
|
||||
@@ -6156,6 +6155,7 @@ uint8_t policy_mgr_get_roam_enabled_sta_session_id(
|
||||
uint32_t list[MAX_NUMBER_OF_CONC_CONNECTIONS];
|
||||
uint32_t index, count;
|
||||
struct policy_mgr_psoc_priv_obj *pm_ctx;
|
||||
struct wlan_objmgr_vdev *vdev, *assoc_vdev;
|
||||
|
||||
pm_ctx = policy_mgr_get_context(psoc);
|
||||
if (!pm_ctx) {
|
||||
@@ -6163,6 +6163,23 @@ uint8_t policy_mgr_get_roam_enabled_sta_session_id(
|
||||
return false;
|
||||
}
|
||||
|
||||
vdev = wlan_objmgr_get_vdev_by_id_from_psoc(psoc, vdev_id,
|
||||
WLAN_POLICY_MGR_ID);
|
||||
if (!vdev) {
|
||||
policy_mgr_err("Invalid vdev");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (wlan_vdev_mlme_is_link_sta_vdev(vdev)) {
|
||||
assoc_vdev = ucfg_mlo_get_assoc_link_vdev(vdev);
|
||||
if (assoc_vdev && ucfg_cm_is_vdev_active(assoc_vdev)) {
|
||||
policy_mgr_debug("replace link vdev %d with assoc vdev %d",
|
||||
vdev_id, wlan_vdev_get_id(assoc_vdev));
|
||||
vdev_id = wlan_vdev_get_id(assoc_vdev);
|
||||
}
|
||||
}
|
||||
wlan_objmgr_vdev_release_ref(vdev, WLAN_POLICY_MGR_ID);
|
||||
|
||||
count = policy_mgr_mode_specific_connection_count(
|
||||
psoc, PM_STA_MODE, list);
|
||||
qdf_mutex_acquire(&pm_ctx->qdf_conc_list_lock);
|
||||
|
在新工单中引用
屏蔽一个用户