qcacld-3.0: Handle eMLSR STA concurrencies in policy mgr
Handle the following the eMLSR STA concurrency scenarios 1) eMLSR STA + SAP/P2P GO/NAN - Send a force disable link request to FW on any one of the eMLSR links. FW will decide which link to disable. 2) eMLSR STA + STA/P2P Client - Send a force disable link request to FW on any one of the eMLSR links. FW will decide which link to disable. This action happens before vdev start of the new connection request. 3) eMLSR STA + TDLS - TDLS connection is not allowed since eMLSR STA is given higher priority. 4) If there is already an existing connection, then eMLSR is not allowed. Once the other connection goes down, the disabled eMLSR link is restored. The concurrency handling API is invoked from corresponding interface manager APIs. Change-Id: Ib7d5da5dcb8eb3ea16c6e50c8fcadc20972d7d05 CRs-Fixed: 3185078
这个提交包含在:
@@ -28,6 +28,7 @@
|
||||
#include "wlan_p2p_cfg_api.h"
|
||||
#include "wlan_tdls_api.h"
|
||||
#include "wlan_p2p_api.h"
|
||||
#include "wlan_mlme_vdev_mgr_interface.h"
|
||||
|
||||
QDF_STATUS if_mgr_ap_start_bss(struct wlan_objmgr_vdev *vdev,
|
||||
struct if_mgr_event_data *event_data)
|
||||
@@ -45,6 +46,10 @@ QDF_STATUS if_mgr_ap_start_bss(struct wlan_objmgr_vdev *vdev,
|
||||
|
||||
wlan_tdls_teardown_links_sync(psoc);
|
||||
|
||||
if (wlan_vdev_mlme_get_opmode(vdev) == QDF_SAP_MODE ||
|
||||
wlan_vdev_mlme_get_opmode(vdev) == QDF_P2P_GO_MODE)
|
||||
wlan_handle_emlsr_sta_concurrency(vdev, true, false);
|
||||
|
||||
if (policy_mgr_is_hw_mode_change_in_progress(psoc)) {
|
||||
if (!QDF_IS_STATUS_SUCCESS(
|
||||
policy_mgr_wait_for_connection_update(psoc))) {
|
||||
@@ -119,6 +124,9 @@ if_mgr_ap_stop_bss_complete(struct wlan_objmgr_vdev *vdev,
|
||||
if (!psoc)
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
|
||||
if (wlan_vdev_mlme_get_opmode(vdev) == QDF_SAP_MODE ||
|
||||
wlan_vdev_mlme_get_opmode(vdev) == QDF_P2P_GO_MODE)
|
||||
wlan_handle_emlsr_sta_concurrency(vdev, false, false);
|
||||
/*
|
||||
* Due to audio share glitch with P2P GO caused by
|
||||
* roam scan on concurrent interface, disable
|
||||
|
@@ -34,6 +34,7 @@
|
||||
#include <wlan_mlo_mgr_cmn.h>
|
||||
#include <wlan_cm_roam_api.h>
|
||||
#include "wlan_nan_api.h"
|
||||
#include "wlan_mlme_vdev_mgr_interface.h"
|
||||
#ifdef WLAN_FEATURE_11BE_MLO
|
||||
#include <wlan_mlo_mgr_sta.h>
|
||||
#endif
|
||||
@@ -68,6 +69,10 @@ QDF_STATUS if_mgr_connect_start(struct wlan_objmgr_vdev *vdev,
|
||||
&vdev_id_list[sta_cnt],
|
||||
PM_SAP_MODE);
|
||||
op_mode = wlan_vdev_mlme_get_opmode(vdev);
|
||||
|
||||
if (op_mode == QDF_STA_MODE || op_mode == QDF_P2P_CLIENT_MODE)
|
||||
wlan_handle_emlsr_sta_concurrency(vdev, false, true);
|
||||
|
||||
if (op_mode == QDF_P2P_CLIENT_MODE || sap_cnt || sta_cnt) {
|
||||
for (i = 0; i < sta_cnt + sap_cnt; i++) {
|
||||
if (vdev_id_list[i] == wlan_vdev_get_id(vdev))
|
||||
@@ -200,6 +205,10 @@ QDF_STATUS if_mgr_disconnect_complete(struct wlan_objmgr_vdev *vdev,
|
||||
if (!psoc)
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
|
||||
if (wlan_vdev_mlme_get_opmode(vdev) == QDF_STA_MODE ||
|
||||
wlan_vdev_mlme_get_opmode(vdev) == QDF_P2P_CLIENT_MODE)
|
||||
wlan_handle_emlsr_sta_concurrency(vdev, false, false);
|
||||
|
||||
status = if_mgr_enable_roaming_after_p2p_disconnect(pdev, vdev,
|
||||
RSO_INVALID_REQUESTOR);
|
||||
if (status) {
|
||||
|
在新工单中引用
屏蔽一个用户