qcacld-3.0: Add support to send roam scan scheme for the triggers
Add support to handle the nl80211 attribute - QCA_ATTR_ROAM_CONTROL_TRIGGERS_SCAN_SCHEME. Send RSO update to firmware if roam scan scheme value is received via the nl80211 attribute QCA_ATTR_ROAM_CONTROL_TRIGGERS_SCAN_SCHEME over the QCA_WLAN_VENDOR_ATTR_ROAMING_SUBCMD subcommand. Change-Id: If21281245097648380990b9218a722691279f598 CRs-Fixed: 2785256
This commit is contained in:

committed by
snandini

vanhempi
adbc4f7d5b
commit
cd22d076ab
@@ -513,6 +513,31 @@ wlan_cm_roam_get_vendor_btm_params(struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t vdev_id,
|
||||
struct wlan_cm_roam_vendor_btm_params
|
||||
*param);
|
||||
|
||||
/**
|
||||
* wlan_cm_update_roam_scan_scheme_bitmap() - Set roam scan scheme bitmap for
|
||||
* each vdev
|
||||
* @psoc: PSOC pointer
|
||||
* @vdev_id: VDEV id
|
||||
* @roam_scan_scheme_bitmap: bitmap of roam triggers for which partial roam
|
||||
* scan needs to be enabled
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
QDF_STATUS
|
||||
wlan_cm_update_roam_scan_scheme_bitmap(struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t vdev_id,
|
||||
uint32_t roam_scan_scheme_bitmap);
|
||||
|
||||
/**
|
||||
* wlan_cm_get_roam_scan_scheme_bitmap() - Get roam scan scheme bitmap value
|
||||
* @psoc: PSOC pointer
|
||||
* @vdev_id: VDEV id
|
||||
*
|
||||
* Return: Roam scan scheme bitmap value
|
||||
*/
|
||||
uint32_t wlan_cm_get_roam_scan_scheme_bitmap(struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t vdev_id);
|
||||
#else
|
||||
static inline
|
||||
void wlan_cm_roam_activate_pcl_per_vdev(struct wlan_objmgr_psoc *psoc,
|
||||
@@ -570,5 +595,20 @@ wlan_cm_roam_get_vendor_btm_params(struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t vdev_id,
|
||||
struct wlan_cm_roam_vendor_btm_params *param)
|
||||
{}
|
||||
|
||||
static inline QDF_STATUS
|
||||
wlan_cm_update_roam_scan_scheme_bitmap(struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t vdev_id,
|
||||
uint32_t roam_scan_scheme_bitmap)
|
||||
{
|
||||
return QDF_STATUS_E_NOSUPPORT;
|
||||
}
|
||||
|
||||
static inline
|
||||
uint32_t wlan_cm_get_roam_scan_scheme_bitmap(struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t vdev_id)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif /* FEATURE_ROAM_OFFLOAD */
|
||||
#endif /* WLAN_CM_ROAM_API_H__ */
|
||||
|
@@ -94,6 +94,7 @@
|
||||
#define WLAN_FILS_FT_MAX_LEN 48
|
||||
|
||||
#define WLAN_MAX_PMK_DUMP_BYTES 6
|
||||
#define DEFAULT_ROAM_SCAN_SCHEME_BITMAP 0
|
||||
|
||||
/**
|
||||
* enum roam_cfg_param - Type values for roaming parameters used as index
|
||||
@@ -1312,12 +1313,18 @@ enum roam_scan_freq_scheme {
|
||||
* @beacon_rssi_weight: Number of beacons to be used to calculate the average
|
||||
* rssi of the AP.
|
||||
* @hi_rssi_scan_delay: Roam scan delay in ms for High RSSI roam trigger.
|
||||
* @roam_scan_scheme_bitmap: Bitmap of roam triggers for which partial channel
|
||||
* map scan scheme needs to be enabled. Each bit in the bitmap corresponds to
|
||||
* the bit position in the order provided by the enum roam_trigger_reason
|
||||
* Ex: roam_scan_scheme_bitmap - 0x00110 will enable partial scan for below
|
||||
* triggers:
|
||||
* ROAM_TRIGGER_REASON_PER, ROAM_TRIGGER_REASON_BMISS
|
||||
*/
|
||||
struct wlan_cm_rso_configs {
|
||||
uint8_t rescan_rssi_delta;
|
||||
uint8_t beacon_rssi_weight;
|
||||
uint32_t hi_rssi_scan_delay;
|
||||
|
||||
uint32_t roam_scan_scheme_bitmap;
|
||||
};
|
||||
|
||||
/**
|
||||
|
@@ -135,5 +135,24 @@ ucfg_cm_roaming_in_progress(struct wlan_objmgr_pdev *pdev, uint8_t vdev_id)
|
||||
return wlan_cm_roaming_in_progress(pdev, vdev_id);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
|
||||
static inline QDF_STATUS
|
||||
ucfg_cm_update_roam_scan_scheme_bitmap(struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t vdev_id,
|
||||
uint32_t roam_scan_scheme_bitmap)
|
||||
{
|
||||
return wlan_cm_update_roam_scan_scheme_bitmap(psoc, vdev_id,
|
||||
roam_scan_scheme_bitmap);
|
||||
}
|
||||
#else
|
||||
static inline QDF_STATUS
|
||||
ucfg_cm_update_roam_scan_scheme_bitmap(struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t vdev_id,
|
||||
uint32_t roam_scan_scheme_bitmap)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
@@ -674,3 +674,65 @@ QDF_STATUS wlan_cm_update_fils_ft(struct wlan_objmgr_psoc *psoc,
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
|
||||
QDF_STATUS
|
||||
wlan_cm_update_roam_scan_scheme_bitmap(struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t vdev_id,
|
||||
uint32_t roam_scan_scheme_bitmap)
|
||||
{
|
||||
struct wlan_objmgr_vdev *vdev;
|
||||
struct mlme_legacy_priv *mlme_priv;
|
||||
|
||||
vdev = wlan_objmgr_get_vdev_by_id_from_psoc(psoc, vdev_id,
|
||||
WLAN_MLME_NB_ID);
|
||||
|
||||
if (!vdev) {
|
||||
mlme_err("vdev%d: vdev object is NULL", vdev_id);
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
mlme_priv = wlan_vdev_mlme_get_ext_hdl(vdev);
|
||||
if (!mlme_priv) {
|
||||
mlme_err("vdev%d: vdev legacy private object is NULL", vdev_id);
|
||||
wlan_objmgr_vdev_release_ref(vdev, WLAN_MLME_NB_ID);
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
mlme_priv->cm_roam.vdev_rso_config.roam_scan_scheme_bitmap =
|
||||
roam_scan_scheme_bitmap;
|
||||
wlan_objmgr_vdev_release_ref(vdev, WLAN_MLME_NB_ID);
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
uint32_t wlan_cm_get_roam_scan_scheme_bitmap(struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t vdev_id)
|
||||
{
|
||||
struct wlan_objmgr_vdev *vdev;
|
||||
struct mlme_legacy_priv *mlme_priv;
|
||||
uint32_t roam_scan_scheme_bitmap;
|
||||
|
||||
vdev = wlan_objmgr_get_vdev_by_id_from_psoc(psoc, vdev_id,
|
||||
WLAN_MLME_NB_ID);
|
||||
|
||||
if (!vdev) {
|
||||
mlme_err("vdev%d: vdev object is NULL", vdev_id);
|
||||
return 0;
|
||||
}
|
||||
|
||||
mlme_priv = wlan_vdev_mlme_get_ext_hdl(vdev);
|
||||
if (!mlme_priv) {
|
||||
mlme_err("vdev%d: vdev legacy private object is NULL", vdev_id);
|
||||
wlan_objmgr_vdev_release_ref(vdev, WLAN_MLME_NB_ID);
|
||||
return 0;
|
||||
}
|
||||
|
||||
roam_scan_scheme_bitmap =
|
||||
mlme_priv->cm_roam.vdev_rso_config.roam_scan_scheme_bitmap;
|
||||
|
||||
wlan_objmgr_vdev_release_ref(vdev, WLAN_MLME_NB_ID);
|
||||
|
||||
return roam_scan_scheme_bitmap;
|
||||
}
|
||||
#endif
|
||||
|
Viittaa uudesa ongelmassa
Block a user