qcacld-3.0: Send async event to user space in case of roaming

Currently, if SR (Spatial Reuse) is supported by AP and then
STA roams to another AP then host needs to parse SR IE and
send events to userspace and commands to Fw based on below
scenarios:

i.) Roamed AP doesn't support SR: If roamed AP doesn't support
SR then async event with SR disable is required to be sent to
userspace.

ii.) Roamed AP supports SR: If roamed AP supports SR then below
validations are required.

a.) existing thresholds are in range of roamed AP: Send SR enable
command to FW with previous thresholds , as FW disables SR during
roaming.

b.) existing thresholds are not in range of roamed AP: then decision
will be based on whether threshold is provided during SR enable command
or not. If threshold is provided along with SR enable command then send
disable to userspace and in other case update thresholds as per roamed
AP , send async event to userspace with new configured values and send
enable command to fw with new thresholds.

Change-Id: I0c39de349c0f723d49d510c6e8ba09dcb98c6d17
CRs-Fixed: 3316985
This commit is contained in:
Sheenam Monga
2022-11-20 00:37:25 -08:00
committed by Madan Koyyalamudi
parent 1689071af8
commit 728998c4af
8 changed files with 223 additions and 30 deletions

View File

@@ -33,7 +33,7 @@ void ucfg_spatial_reuse_get_sr_config(struct wlan_objmgr_vdev *vdev,
bool *he_spr_enabled)
{
*sr_ctrl = wlan_vdev_mlme_get_sr_ctrl(vdev);
*non_srg_max_pd_offset = wlan_vdev_mlme_get_pd_offset(vdev);
*non_srg_max_pd_offset = wlan_vdev_mlme_get_non_srg_pd_offset(vdev);
*he_spr_enabled = wlan_vdev_mlme_get_he_spr_enabled(vdev);
}
@@ -42,7 +42,7 @@ void ucfg_spatial_reuse_set_sr_config(struct wlan_objmgr_vdev *vdev,
uint8_t non_srg_max_pd_offset)
{
wlan_vdev_mlme_set_sr_ctrl(vdev, sr_ctrl);
wlan_vdev_mlme_set_pd_offset(vdev, non_srg_max_pd_offset);
wlan_vdev_mlme_set_non_srg_pd_offset(vdev, non_srg_max_pd_offset);
}
bool ucfg_spatial_reuse_is_sr_disabled_due_conc(struct wlan_objmgr_vdev *vdev)
@@ -72,7 +72,8 @@ void ucfg_spatial_reuse_send_sr_config(struct wlan_objmgr_vdev *vdev,
if (enable) {
sr_ctrl = wlan_vdev_mlme_get_sr_ctrl(vdev);
non_srg_max_pd_offset = wlan_vdev_mlme_get_pd_offset(vdev);
non_srg_max_pd_offset =
wlan_vdev_mlme_get_non_srg_pd_offset(vdev);
if (sr_ctrl && non_srg_max_pd_offset)
wlan_spatial_reuse_config_set(vdev, sr_ctrl,
non_srg_max_pd_offset);