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:
Gururaj Pandurangi
2022-12-20 00:34:58 -08:00
committad av Madan Koyyalamudi
förälder c73843f146
incheckning 06bec08823
7 ändrade filer med 68 tillägg och 48 borttagningar

Visa fil

@@ -1,6 +1,6 @@
/*
* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved
* Copyright (c) 2021-2023 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
@@ -551,21 +551,27 @@ qdf_freq_t wlan_get_conc_freq(void);
#ifdef WLAN_FEATURE_11BE_MLO
/**
* wlan_handle_emlsr_sta_concurrency() - Handle concurrency scenarios with
* existing eMLSR connection when a new cktn request is received.
* EMLSR STA.
* @vdev: pointer to vdev
* @ap_coming_up: Check if the new connection request is SAP/P2P GO/NAN
* @sta_coming_up: Check if the new connection request is STA/P2P Client
* @emlsr_sta_coming_up: Check if the new connection request is EMLSR STA
*
* @vdev: pointer to vdev on which new connection is coming up
* @ap_coming_up: Check if the new cktn request is SAP/P2P GO/NAN
* @sta_coming_up: Check if the new cktn request is STA/P2P Client
* The API handles concurrency scenarios with existing EMLSR connection when a
* new connection request is received OR with an existing legacy connection when
* an EMLSR sta comes up.
*
* Return: none
*/
void
wlan_handle_emlsr_sta_concurrency(struct wlan_objmgr_vdev *vdev,
bool ap_coming_up, bool sta_coming_up);
bool ap_coming_up, bool sta_coming_up,
bool emlsr_sta_coming_up);
#else
static inline void
wlan_handle_emlsr_sta_concurrency(struct wlan_objmgr_vdev *vdev,
bool ap_coming_up, bool sta_coming_up)
bool ap_coming_up, bool sta_coming_up,
bool emlsr_sta_coming_up)
{
}
#endif

Visa fil

@@ -1,6 +1,6 @@
/*
* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2021-2023 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
@@ -467,7 +467,8 @@ static QDF_STATUS ap_mlme_vdev_up_send(struct vdev_mlme_obj *vdev_mlme,
#ifdef WLAN_FEATURE_11BE_MLO
void wlan_handle_emlsr_sta_concurrency(struct wlan_objmgr_vdev *vdev,
bool ap_coming_up, bool sta_coming_up)
bool ap_coming_up, bool sta_coming_up,
bool emlsr_sta_coming_up)
{
struct wlan_objmgr_psoc *psoc = wlan_vdev_get_psoc(vdev);
@@ -477,7 +478,8 @@ void wlan_handle_emlsr_sta_concurrency(struct wlan_objmgr_vdev *vdev,
}
policy_mgr_handle_emlsr_sta_concurrency(psoc, vdev, ap_coming_up,
sta_coming_up);
sta_coming_up,
emlsr_sta_coming_up);
}
#endif