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
This commit is contained in:
Gururaj Pandurangi
2022-04-21 11:38:48 -07:00
committad av Madan Koyyalamudi
förälder 61a1943070
incheckning 61dfd77555
14 ändrade filer med 267 tillägg och 79 borttagningar

Visa fil

@@ -527,4 +527,25 @@ QDF_STATUS wlan_sap_stop_bss(uint8_t vdev_id);
*/
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.
*
* @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
*
* Return: none
*/
void
wlan_handle_emlsr_sta_concurrency(struct wlan_objmgr_vdev *vdev,
bool ap_coming_up, bool 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)
{
}
#endif
#endif

Visa fil

@@ -464,6 +464,22 @@ static QDF_STATUS ap_mlme_vdev_up_send(struct vdev_mlme_obj *vdev_mlme,
return lim_ap_mlme_vdev_up_send(vdev_mlme, data_len, data);
}
#ifdef WLAN_FEATURE_11BE_MLO
void wlan_handle_emlsr_sta_concurrency(struct wlan_objmgr_vdev *vdev,
bool ap_coming_up, bool sta_coming_up)
{
struct wlan_objmgr_psoc *psoc = wlan_vdev_get_psoc(vdev);
if (!psoc) {
mlme_legacy_debug("psoc Null");
return;
}
policy_mgr_handle_emlsr_sta_concurrency(psoc, vdev, ap_coming_up,
sta_coming_up);
}
#endif
/**
* ap_mlme_vdev_notify_up_complete() - callback to notify up completion
* @vdev_mlme: vdev mlme object