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:
@@ -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_ */
|
||||
|
Reference in New Issue
Block a user