qcacld-3.0: Reject GET_CU_FOR_EACH_SUB_BW request for MLO conn
As per requirement, for MLO connection host should reject GET_CU_FOR_EACH_SUB_BW request and return failure to upper layer as a response. Change-Id: I8177d92982c832a17c1657239b69cc3712e1eaf4 CRs-Fixed: 3476349
This commit is contained in:

committed by
Madan Koyyalamudi

parent
fbcbaaf178
commit
042a37976b
@@ -929,10 +929,10 @@ uint32_t mlme_get_vdev_he_ops(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id);
|
|||||||
* @psoc: pointer to psoc object
|
* @psoc: pointer to psoc object
|
||||||
* @vdev_id: Vdev id
|
* @vdev_id: Vdev id
|
||||||
*
|
*
|
||||||
* Return: none
|
* Return: QDF_STATUS
|
||||||
*/
|
*/
|
||||||
void mlme_connected_chan_stats_request(struct wlan_objmgr_psoc *psoc,
|
QDF_STATUS mlme_connected_chan_stats_request(struct wlan_objmgr_psoc *psoc,
|
||||||
uint8_t vdev_id);
|
uint8_t vdev_id);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* mlme_get_ini_vdev_config() - get the vdev ini config params
|
* mlme_get_ini_vdev_config() - get the vdev ini config params
|
||||||
|
@@ -245,8 +245,8 @@ mlme_fill_freq_in_wide_scan_start_request(struct wlan_objmgr_vdev *vdev,
|
|||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
void mlme_connected_chan_stats_request(struct wlan_objmgr_psoc *psoc,
|
QDF_STATUS mlme_connected_chan_stats_request(struct wlan_objmgr_psoc *psoc,
|
||||||
uint8_t vdev_id)
|
uint8_t vdev_id)
|
||||||
{
|
{
|
||||||
struct wlan_mlme_psoc_ext_obj *mlme_obj;
|
struct wlan_mlme_psoc_ext_obj *mlme_obj;
|
||||||
QDF_STATUS status;
|
QDF_STATUS status;
|
||||||
@@ -256,20 +256,27 @@ void mlme_connected_chan_stats_request(struct wlan_objmgr_psoc *psoc,
|
|||||||
mlme_obj = mlme_get_psoc_ext_obj(psoc);
|
mlme_obj = mlme_get_psoc_ext_obj(psoc);
|
||||||
if (!mlme_obj) {
|
if (!mlme_obj) {
|
||||||
mlme_debug("vdev %d : NULL mlme psoc object", vdev_id);
|
mlme_debug("vdev %d : NULL mlme psoc object", vdev_id);
|
||||||
return;
|
return QDF_STATUS_E_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
vdev = wlan_objmgr_get_vdev_by_id_from_psoc(psoc, vdev_id,
|
vdev = wlan_objmgr_get_vdev_by_id_from_psoc(psoc, vdev_id,
|
||||||
WLAN_MLME_NB_ID);
|
WLAN_MLME_NB_ID);
|
||||||
if (!vdev) {
|
if (!vdev) {
|
||||||
mlme_debug("vdev %d : NULL vdev object", vdev_id);
|
mlme_debug("vdev %d : NULL vdev object", vdev_id);
|
||||||
return;
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (wlan_vdev_mlme_is_mlo_vdev(vdev)) {
|
||||||
|
mlme_debug("vdev %d :reject get_cu req for mlo connection",
|
||||||
|
vdev_id);
|
||||||
|
wlan_objmgr_vdev_release_ref(vdev, WLAN_MLME_NB_ID);
|
||||||
|
return QDF_STATUS_E_NOSUPPORT;
|
||||||
}
|
}
|
||||||
|
|
||||||
req = qdf_mem_malloc(sizeof(*req));
|
req = qdf_mem_malloc(sizeof(*req));
|
||||||
if (!req) {
|
if (!req) {
|
||||||
wlan_objmgr_vdev_release_ref(vdev, WLAN_MLME_NB_ID);
|
wlan_objmgr_vdev_release_ref(vdev, WLAN_MLME_NB_ID);
|
||||||
return;
|
return QDF_STATUS_E_NOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
status = wlan_scan_init_default_params(vdev, req);
|
status = wlan_scan_init_default_params(vdev, req);
|
||||||
@@ -311,10 +318,11 @@ void mlme_connected_chan_stats_request(struct wlan_objmgr_psoc *psoc,
|
|||||||
}
|
}
|
||||||
|
|
||||||
wlan_objmgr_vdev_release_ref(vdev, WLAN_MLME_NB_ID);
|
wlan_objmgr_vdev_release_ref(vdev, WLAN_MLME_NB_ID);
|
||||||
return;
|
return status;
|
||||||
release:
|
release:
|
||||||
qdf_mem_free(req);
|
qdf_mem_free(req);
|
||||||
wlan_objmgr_vdev_release_ref(vdev, WLAN_MLME_NB_ID);
|
wlan_objmgr_vdev_release_ref(vdev, WLAN_MLME_NB_ID);
|
||||||
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t mlme_get_vdev_he_ops(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id)
|
uint32_t mlme_get_vdev_he_ops(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id)
|
||||||
|
@@ -4619,10 +4619,10 @@ ucfg_mlme_is_chwidth_with_notify_supported(struct wlan_objmgr_psoc *psoc);
|
|||||||
* @psoc: pointer to psoc object
|
* @psoc: pointer to psoc object
|
||||||
* @vdev_id: Vdev id
|
* @vdev_id: Vdev id
|
||||||
*
|
*
|
||||||
* Return: none
|
* Return: QDF_STATUS
|
||||||
*/
|
*/
|
||||||
void ucfg_mlme_connected_chan_stats_request(struct wlan_objmgr_psoc *psoc,
|
QDF_STATUS ucfg_mlme_connected_chan_stats_request(struct wlan_objmgr_psoc *psoc,
|
||||||
uint8_t vdev_id);
|
uint8_t vdev_id);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ucfg_mlme_set_vdev_traffic_high_throughput() - Set/clear vdev high
|
* ucfg_mlme_set_vdev_traffic_high_throughput() - Set/clear vdev high
|
||||||
|
@@ -367,10 +367,10 @@ ucfg_mlme_set_vdev_traffic_type(struct wlan_objmgr_psoc *psoc,
|
|||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ucfg_mlme_connected_chan_stats_request(struct wlan_objmgr_psoc *psoc,
|
QDF_STATUS ucfg_mlme_connected_chan_stats_request(struct wlan_objmgr_psoc *psoc,
|
||||||
uint8_t vdev_id)
|
uint8_t vdev_id)
|
||||||
{
|
{
|
||||||
mlme_connected_chan_stats_request(psoc, vdev_id);
|
return mlme_connected_chan_stats_request(psoc, vdev_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
|
@@ -3963,19 +3963,20 @@ __wlan_hdd_cfg80211_connected_chan_stats_request(struct wiphy *wiphy,
|
|||||||
struct hdd_context *hdd_ctx = wiphy_priv(wiphy);
|
struct hdd_context *hdd_ctx = wiphy_priv(wiphy);
|
||||||
bool is_vdev_connected;
|
bool is_vdev_connected;
|
||||||
enum QDF_OPMODE mode;
|
enum QDF_OPMODE mode;
|
||||||
|
QDF_STATUS status;
|
||||||
|
|
||||||
is_vdev_connected = hdd_cm_is_vdev_connected(adapter);
|
is_vdev_connected = hdd_cm_is_vdev_connected(adapter);
|
||||||
mode = adapter->device_mode;
|
mode = adapter->device_mode;
|
||||||
if (mode == QDF_STA_MODE && is_vdev_connected) {
|
|
||||||
ucfg_mlme_connected_chan_stats_request(hdd_ctx->psoc,
|
if (mode != QDF_STA_MODE || !is_vdev_connected) {
|
||||||
adapter->deflink->vdev_id);
|
|
||||||
} else {
|
|
||||||
hdd_debug("vdev %d: reject chan stats req, mode:%d, conn:%d",
|
hdd_debug("vdev %d: reject chan stats req, mode:%d, conn:%d",
|
||||||
adapter->deflink->vdev_id, mode, is_vdev_connected);
|
adapter->deflink->vdev_id, mode, is_vdev_connected);
|
||||||
return -EINVAL;
|
return -EPERM;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
status = ucfg_mlme_connected_chan_stats_request(hdd_ctx->psoc,
|
||||||
|
adapter->deflink->vdev_id);
|
||||||
|
return qdf_status_to_os_return(status);
|
||||||
}
|
}
|
||||||
|
|
||||||
int wlan_hdd_cfg80211_connected_chan_stats_req(struct wiphy *wiphy,
|
int wlan_hdd_cfg80211_connected_chan_stats_req(struct wiphy *wiphy,
|
||||||
|
Reference in New Issue
Block a user