qcacld-3.0: Avoid NSS and Antenna mode change during TDLS connection
In the api hdd_set_nss_params() and hdd_set_antenna_mode() change in nss parameter or antenna mode cause the TDLS teardown. Add a check in api hdd_set_nss_params() and hdd_set_antenna_mode() to prevent change in parameter if there is a existing TDLS connection. Change-Id: I8a58b8b0a617a8de490907e4c3181b15d90e0dbb CRs-Fixed: 3789892
此提交包含在:
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 2020, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2022-2024 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
|
||||
@@ -104,6 +104,15 @@ wlan_tdls_notify_sta_connect(uint8_t vdev_id,
|
||||
bool tdls_prohibited,
|
||||
struct wlan_objmgr_vdev *vdev);
|
||||
|
||||
/**
|
||||
* wlan_is_tdls_session_present() - Get TDLS session status
|
||||
* @vdev: vdev pointer
|
||||
*
|
||||
* Return: QDF_STATUS_SUCCESS if success; other value if failed
|
||||
*/
|
||||
QDF_STATUS
|
||||
wlan_is_tdls_session_present(struct wlan_objmgr_vdev *vdev);
|
||||
|
||||
/**
|
||||
* wlan_tdls_update_tx_pkt_cnt() - update tx pkt count
|
||||
* @vdev: tdls vdev object
|
||||
|
@@ -31,6 +31,7 @@
|
||||
#include <wlan_objmgr_cmn.h>
|
||||
#include "wlan_tdls_cfg_api.h"
|
||||
#include "wlan_policy_mgr_api.h"
|
||||
#include "wlan_mlo_mgr_sta.h"
|
||||
|
||||
static QDF_STATUS tdls_teardown_flush_cb(struct scheduler_msg *msg)
|
||||
{
|
||||
@@ -286,6 +287,50 @@ wlan_tdls_handle_sap_start(struct wlan_objmgr_psoc *psoc)
|
||||
{}
|
||||
#endif
|
||||
|
||||
#ifdef WLAN_FEATURE_11BE_MLO
|
||||
static QDF_STATUS
|
||||
wlan_mlo_is_tdls_session_present(struct wlan_objmgr_vdev *vdev)
|
||||
{
|
||||
uint8_t i;
|
||||
struct wlan_mlo_dev_context *ml_dev = vdev->mlo_dev_ctx;
|
||||
|
||||
if (!ml_dev) {
|
||||
tdls_err("MLO dev ctx is null");
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
for (i = 0; i < ml_dev->wlan_vdev_count; i++) {
|
||||
vdev = ml_dev->wlan_vdev_list[i];
|
||||
if (tdls_get_connected_peer_count_from_vdev(vdev) > 0) {
|
||||
tdls_debug("TDLS session is present");
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
#else
|
||||
static QDF_STATUS
|
||||
wlan_mlo_is_tdls_session_present(struct wlan_objmgr_vdev *vdev)
|
||||
{
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
#endif
|
||||
|
||||
QDF_STATUS
|
||||
wlan_is_tdls_session_present(struct wlan_objmgr_vdev *vdev)
|
||||
{
|
||||
if (mlo_is_mld_sta(vdev))
|
||||
return wlan_mlo_is_tdls_session_present(vdev);
|
||||
|
||||
if (tdls_get_connected_peer_count_from_vdev(vdev) > 0) {
|
||||
tdls_debug("TDLS session is present");
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
||||
void wlan_tdls_notify_start_bss(struct wlan_objmgr_psoc *psoc,
|
||||
struct wlan_objmgr_vdev *vdev)
|
||||
{
|
||||
|
新增問題並參考
封鎖使用者