qcacld-3.0: Add support for adaptive 11r

Adaptive 11r feature that enables the AP to support FT-AKM
without configuring the FT-AKM in the network. The AP will
advertise non-FT akm with a vendor specific IE having Adaptive
11r bit set to 1 in the IE data. The AP also advertises the
MDE in beacon/probe response.

The STA should check the adaptive 11r capability if the AP
advertises MDE in beacon/probe and adaptive 11r capability in
vendor specific IE.  If adaptive 11r capability is found,
STA should advertise the FT equivalent of the non-FT AKM.

Introdue a compile time flag WLAN_ADAPTIVE_11R_ENABLED to
enable/disable adaptive 11r support.

If the AP is adaptive 11r capable, set the is_adaptive_11r_ap
flag in bss descrtiptor. This flag will be sent in join request
and populated to pe_session. Also mark the CSR session as
adaptive 11r session based on this flag.

Add changes to check for the adaptive 11r service capability
advertised by firmware. If the host driver connects to adaptive
11r AP, enable RSO only if the firmware advertises adaptive
11r capability, else RSO should be disabled.

If the connection is adaptive 11r connection and if the adaptive
11r ini is enabled, set the adaptive_11r flag in
wmi_roam_11r_offload_tlv_param sent over the wmi command
WMI_ROAM_SCAN_MODE to the firmware. This will enable firmware to
filter the adaptive 11r AP from roam scan results.

Change-Id: If27a2393e3f4bb68942f5ebcec0135f57627f16b
CRs-Fixed: 2437988
This commit is contained in:
Pragaspathi Thilagaraj
2019-04-24 23:48:47 +05:30
committed by nshrivas
orang tua 57808d9d69
melakukan 1f3f99fd1f
13 mengubah file dengan 249 tambahan dan 0 penghapusan

Melihat File

@@ -2385,6 +2385,42 @@
#define LFR_SUBNET_DETECTION_ALL
#endif
#ifdef WLAN_ADAPTIVE_11R
/*
* <ini>
* adaptive_11r - Enable/disable adaptive 11r feature.
* @Min: 0
* @Max: 1
* @Default: 0
*
* Adaptive 11r feature enables the AP to support FT-AKM without
* configuring the FT-AKM in the network. The AP will advertise non-FT akm
* with a vendor specific IE having Adaptive 11r bit set to 1 in the IE data.
* The AP also advertises the MDE in beacon/probe response.
*
* STA should check the adaptive 11r capability if the AP advertises MDE in
* beacon/probe and adaptive 11r capability in vendor specific IE. If adaptive
* 11r capability is found, STA can advertise the FT equivalent of the non-FT
* AKM and connect with 11r protocol.
*
* Related: None.
*
* Supported Feature: Fast BSS Transition
*
* Usage: External
*
* </ini>
*/
#define CFG_ADAPTIVE_11R CFG_INI_BOOL( \
"enable_adaptive_11r", \
false, \
"Enable/disable adaptive 11r support")
#define ADAPTIVE_11R_ALL CFG(CFG_ADAPTIVE_11R)
#else
#define ADAPTIVE_11R_ALL
#endif
/*
* <ini>
* roaming_scan_policy - To config roaming scan policy
@@ -2589,6 +2625,7 @@
CFG(CFG_POST_INACTIVITY_ROAM_SCAN_PERIOD) \
CFG(CFG_BSS_LOAD_TRIG_5G_RSSI_THRES) \
CFG(CFG_BSS_LOAD_TRIG_2G_RSSI_THRES) \
ADAPTIVE_11R_ALL \
ROAM_OFFLOAD_ALL \
LFR_ESE_ALL \
LFR_SUBNET_DETECTION_ALL

Melihat File

@@ -1352,6 +1352,9 @@ struct bss_load_trigger {
* @roam_scan_hi_rssi_ub: Upper bound after which 5GHz scan
* @roam_prefer_5ghz: Prefer roaming to 5GHz Bss
* @roam_intra_band: Prefer roaming within Band
* @enable_adaptive_11r Flag to check if adaptive 11r ini is enabled
* @tgt_adaptive_11r_cap: Flag to check if target supports adaptive
* 11r
* @roam_scan_home_away_time: The home away time to firmware
* @roam_scan_n_probes: The number of probes to be sent for firmware roaming
* @delay_before_vdev_stop:Wait time for tx complete before vdev stop
@@ -1450,6 +1453,10 @@ struct wlan_mlme_lfr_cfg {
uint32_t roam_scan_hi_rssi_ub;
bool roam_prefer_5ghz;
bool roam_intra_band;
#ifdef WLAN_ADAPTIVE_11R
bool enable_adaptive_11r;
bool tgt_adaptive_11r_cap;
#endif
uint16_t roam_scan_home_away_time;
uint32_t roam_scan_n_probes;
uint8_t delay_before_vdev_stop;

Melihat File

@@ -1156,6 +1156,27 @@ QDF_STATUS
ucfg_mlme_is_roam_scan_offload_enabled(struct wlan_objmgr_psoc *psoc,
bool *val);
#ifdef WLAN_ADAPTIVE_11R
/**
* ucfg_mlme_set_tgt_adaptive_11r_cap() - Set adaptive 11r target service
* capability
* @psoc: pointer to psoc object
* @val: Target capability of adaptive 11r
*
* Return: QDF Status
*/
QDF_STATUS
ucfg_mlme_set_tgt_adaptive_11r_cap(struct wlan_objmgr_psoc *psoc,
bool val);
#else
static inline QDF_STATUS
ucfg_mlme_set_tgt_adaptive_11r_cap(struct wlan_objmgr_psoc *psoc,
bool val)
{
return QDF_STATUS_SUCCESS;
}
#endif
/**
* ucfg_mlme_set_roam_scan_offload_enabled() - Set roam scan offload enable
* @psoc: pointer to psoc object

Melihat File

@@ -849,6 +849,23 @@ ucfg_mlme_set_fast_transition_enabled(struct wlan_objmgr_psoc *psoc,
return QDF_STATUS_SUCCESS;
}
#ifdef WLAN_ADAPTIVE_11R
QDF_STATUS
ucfg_mlme_set_tgt_adaptive_11r_cap(struct wlan_objmgr_psoc *psoc,
bool val)
{
struct wlan_mlme_psoc_obj *mlme_obj;
mlme_obj = mlme_get_psoc_obj(psoc);
if (!mlme_obj)
return QDF_STATUS_E_INVAL;
mlme_obj->cfg.lfr.tgt_adaptive_11r_cap = val;
return QDF_STATUS_SUCCESS;
}
#endif
QDF_STATUS
ucfg_mlme_is_roam_scan_offload_enabled(struct wlan_objmgr_psoc *psoc,
bool *val)