qcacld-3.0: Include/Exclude roam reason dynamically in reassoc frame

Currently, if roaming happens roam reason is not sent to AP. AP will
not able to know why roaming happened. As roaming is offloaded to
firmware, firmware will include roam reason vsie based on driver
indication by vdev param
WMI_VDEV_PARAM_ENABLE_DISABLE_ROAM_REASON_VSIE based on
below conditions:

Parse the QCA attribute CONFIG_ROAM_REASON to control
inclusion/exculsion of roam reason vsie dynamically. Vendor subcommand
QCA_NL80211_VENDOR_SUBCMD_SET_WIFI_CONFIGURATION can control roam
reason vsie inclusion using QCA atrribute CONFIG_ROAM_REASON.
Different operations required to implement this feature can be
specified in QCA_WLAN_VENDOR_ATTR_CONFIG_ROAM_REASON, so driver parses
CONFIG_ROAM_REASON, updates enable_roam_reason_vsie and indicates to
firmware by updating vdev param.

a.) If Userspace wants the firmware to include roam reason in reassoc
    frame, it can send QCA_WLAN_VENDOR_ATTR_CONFIG_ROAM_REASON with
    value 1 and driver will update enable_roam_reason_vsie  to 1.
    Driver will update vdev parameter
    WMI_VDEV_PARAM_ENABLE_DISABLE_ROAM_REASON_VSIE, so that firmware
    can include roam reason vsie in reassoc frame during roaming.
b.) If this command is not issued, the default behavior of the
    firmware is not to include err reason code in beacon report
    response. Driver will send default value of
    enable_roam_reason_vsie to firmware which is 0.
c.) The userspace requests the firmware to stop roam reason vsie
    reporting when roam reason is not required for AP anymore. If
    userspace doesn't want the roam reason  inclusion, userspace can
    send QCA_WLAN_VENDOR_ATTR_CONFIG_ROAM_REASON with value 0 and
    driver will update enable_roam_reason_vsie and notify firmware to
    exclude roam reason.
If userspace requests the driver to get the status of
enable_roam_reason_vsie , to check whether firmware includes roam
reason vsie or not, driver will fill CONFIG_ROAM_REASON attribute and
will update to userspace.

Change-Id: I063c822e99fd6908bd4188b429ffa6a2031cee5d
CRs-Fixed: 2624713
This commit is contained in:
sheenam monga
2020-02-24 13:23:13 +05:30
committed by nshrivas
parent 0df7f82004
commit 56b4d46146
5 changed files with 249 additions and 0 deletions

View File

@@ -2421,4 +2421,45 @@ wlan_mlme_get_status_ring_buffer(struct wlan_objmgr_psoc *psoc,
* Return: true if peer unmap confirmation support is enabled, else false
*/
bool wlan_mlme_get_peer_unmap_conf(struct wlan_objmgr_psoc *psoc);
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
/**
* wlan_mlme_get_roam_reason_vsie_status() - Indicate if roam reason
* vsie is enabled or disabled
* @psoc: pointer to psoc object
* @roam_reason_vsie_enabled: pointer to hold value of roam reason
* vsie
*
* Return: QDF_STATUS
*/
QDF_STATUS
wlan_mlme_get_roam_reason_vsie_status(struct wlan_objmgr_psoc *psoc,
uint8_t *roam_reason_vsie_enabled);
/**
* wlan_mlme_set_roam_reason_vsie_status() - Update roam reason vsie status
* @psoc: pointer to psoc object
* @roam_reason_vsie_enabled: value of roam reason vsie
*
* Return: QDF_STATUS
*/
QDF_STATUS
wlan_mlme_set_roam_reason_vsie_status(struct wlan_objmgr_psoc *psoc,
uint8_t roam_reason_vsie_enabled);
#else
static inline QDF_STATUS
wlan_mlme_get_roam_reason_vsie_status(struct wlan_objmgr_psoc *psoc,
uint8_t *roam_reason_vsie_enable)
{
return QDF_STATUS_E_FAILURE;
}
static inline QDF_STATUS
wlan_mlme_set_roam_reason_vsie_status(struct wlan_objmgr_psoc *psoc,
uint8_t roam_reason_vsie_enable)
{
return QDF_STATUS_E_FAILURE;
}
#endif
#endif /* _WLAN_MLME_API_H_ */