qcacld-3.0: Handle concurrency with new EMLSR connection
Currently, if there is a legacy connection and a new STA connection comes up with EMLSR capability, Host does not advertise EML caps in assoc request. But there is no support to enable EMLSR mode if the legacy connection goes away. Thus, add support to handle this concurrency scenario as follows 1) Host should advertise EML support capability in assoc request. 2) After association is complete, force disable one of the EMLSR links. 3) Once the legacy connection goes down, re-enable the disabled link. Change-Id: I5d9f37827e2a9f0571fa9733b4779668bd987f92 CRs-Fixed: 3363115
This commit is contained in:

committed by
Madan Koyyalamudi

parent
c73843f146
commit
06bec08823
@@ -50,7 +50,7 @@ QDF_STATUS if_mgr_ap_start_bss(struct wlan_objmgr_vdev *vdev,
|
||||
|
||||
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);
|
||||
wlan_handle_emlsr_sta_concurrency(vdev, true, false, false);
|
||||
|
||||
if (policy_mgr_is_hw_mode_change_in_progress(psoc)) {
|
||||
if (!QDF_IS_STATUS_SUCCESS(
|
||||
@@ -132,7 +132,7 @@ if_mgr_ap_stop_bss_complete(struct wlan_objmgr_vdev *vdev,
|
||||
|
||||
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);
|
||||
wlan_handle_emlsr_sta_concurrency(vdev, false, false, true);
|
||||
/*
|
||||
* Due to audio share glitch with P2P GO caused by
|
||||
* roam scan on concurrent interface, disable
|
||||
|
@@ -72,7 +72,7 @@ QDF_STATUS if_mgr_connect_start(struct wlan_objmgr_vdev *vdev,
|
||||
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);
|
||||
wlan_handle_emlsr_sta_concurrency(vdev, false, true, false);
|
||||
|
||||
if (op_mode == QDF_P2P_CLIENT_MODE || sap_cnt || sta_cnt) {
|
||||
for (i = 0; i < sta_cnt + sap_cnt; i++) {
|
||||
@@ -165,6 +165,9 @@ QDF_STATUS if_mgr_connect_complete(struct wlan_objmgr_vdev *vdev,
|
||||
}
|
||||
|
||||
policy_mgr_check_n_start_opportunistic_timer(psoc);
|
||||
if (wlan_vdev_mlme_get_opmode(vdev) == QDF_STA_MODE &&
|
||||
wlan_vdev_mlme_is_mlo_vdev(vdev))
|
||||
wlan_handle_emlsr_sta_concurrency(vdev, false, false, true);
|
||||
|
||||
if (!wlan_cm_is_vdev_roaming(vdev))
|
||||
policy_mgr_check_concurrent_intf_and_restart_sap(psoc,
|
||||
@@ -209,7 +212,7 @@ QDF_STATUS if_mgr_disconnect_complete(struct wlan_objmgr_vdev *vdev,
|
||||
|
||||
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);
|
||||
wlan_handle_emlsr_sta_concurrency(vdev, false, false, true);
|
||||
|
||||
status = if_mgr_enable_roaming_after_p2p_disconnect(pdev, vdev,
|
||||
RSO_CONNECT_START);
|
||||
|
Reference in New Issue
Block a user