qcacld-3.0: Fail SR commands in concurrency

Fail all the Spatial Reuse commands if SR in concurrency
is not supported.

Change-Id: Ifcee0cfb6f52bcde5bcb4193f4f8bb336ba6b191
CRs-Fixed: 3338582
This commit is contained in:
Rachit Kankane
2022-11-21 12:50:44 +05:30
committed by Madan Koyyalamudi
vanhempi b9a928a6c5
commit f5b2eeb7f6
3 muutettua tiedostoa jossa 45 lisäystä ja 5 poistoa

Näytä tiedosto

@@ -120,11 +120,11 @@ void ucfg_spatial_reuse_send_sr_prohibit(struct wlan_objmgr_vdev *vdev,
/**
* ucfg_spatial_reuse_setup_req() - To enable/disable SR (Spatial Reuse)
* vdev: object manager vdev
* pdev: object manager pdev
* is_sr_enable: SR enable/disable
* srg_pd_threshold: SRG pd threshold
* non_srg_pd_threshold: NON SRG pd threshold
* @vdev: object manager vdev
* @pdev: object manager pdev
* @is_sr_enable: SR enable/disable
* @srg_pd_threshold: SRG pd threshold
* @non_srg_pd_threshold: NON SRG pd threshold
*
* Return: Success/Failure
*/
@@ -134,6 +134,16 @@ ucfg_spatial_reuse_setup_req(struct wlan_objmgr_vdev *vdev,
bool is_sr_enable, int32_t srg_pd_threshold,
int32_t non_srg_pd_threshold);
/**
* ucfg_spatial_reuse_operation_allowed() - Checks whether SR is allowed or not
* @psoc: Object manager psoc
* @vdev: object manager vdev
*
* Return: QDF_STATUS_SUCCESS when SR is allowed else Failure
*/
QDF_STATUS
ucfg_spatial_reuse_operation_allowed(struct wlan_objmgr_psoc *psoc,
struct wlan_objmgr_vdev *vdev);
#else
static inline
void ucfg_spatial_reuse_register_cb(struct wlan_objmgr_psoc *psoc,

Näytä tiedosto

@@ -20,6 +20,7 @@
#include <qdf_trace.h>
#include <spatial_reuse_ucfg_api.h>
#include <spatial_reuse_api.h>
#include <wlan_policy_mgr_api.h>
void ucfg_spatial_reuse_register_cb(struct wlan_objmgr_psoc *psoc,
sr_osif_event_cb cb)
@@ -122,3 +123,26 @@ ucfg_spatial_reuse_setup_req(struct wlan_objmgr_vdev *vdev,
return wlan_sr_setup_req(vdev, pdev, is_sr_enable,
srg_pd_threshold, non_srg_pd_threshold);
}
QDF_STATUS ucfg_spatial_reuse_operation_allowed(struct wlan_objmgr_psoc *psoc,
struct wlan_objmgr_vdev *vdev)
{
uint32_t conc_vdev_id;
uint8_t vdev_id, mac_id;
QDF_STATUS status;
if (!vdev || !psoc)
return QDF_STATUS_E_NULL_VALUE;
vdev_id = wlan_vdev_get_id(vdev);
status = policy_mgr_get_mac_id_by_session_id(psoc, vdev_id, &mac_id);
if (QDF_IS_STATUS_ERROR(status))
return status;
conc_vdev_id = policy_mgr_get_conc_vdev_on_same_mac(psoc, vdev_id,
mac_id);
if (conc_vdev_id != WLAN_INVALID_VDEV_ID &&
!policy_mgr_sr_same_mac_conc_enabled(psoc))
return QDF_STATUS_E_NOSUPPORT;
return status;
}

Näytä tiedosto

@@ -702,6 +702,12 @@ static int __wlan_hdd_cfg80211_sr_operations(struct wiphy *wiphy,
hdd_err("11AX is not supported");
return -EINVAL;
}
status = ucfg_spatial_reuse_operation_allowed(hdd_ctx->psoc,
adapter->vdev);
if (QDF_IS_STATUS_ERROR(status)) {
hdd_err("SR operations not allowed status: %u", status);
return qdf_status_to_os_return(status);
}
if (wlan_cfg80211_nla_parse(tb, QCA_WLAN_VENDOR_ATTR_SR_MAX, data,
data_len, wlan_hdd_sr_policy)) {
hdd_err("invalid attr");