qcacld-3.0: Process the BAND_MASK attribute

Process the BAND_MASK attribute which comes to the
host via the QCA_WLAN_VENDOR_ROAMING_SUBCMD_CONTROL_SET
vendor command. Save the value of this band mask into
the RSO configuration structure.

Change-Id: I57ecc10912a38207ef478b38cf3add3c584dd2f4
CRs-Fixed: 3009749
This commit is contained in:
abhinav kumar
2021-08-01 17:17:38 +05:30
committed by Madan Koyyalamudi
parent cfa33dc393
commit 0697018d60
6 changed files with 100 additions and 20 deletions

View File

@@ -4311,6 +4311,8 @@ static void cm_roam_start_init(struct wlan_objmgr_psoc *psoc,
DEFAULT_ROAM_SCAN_SCHEME_BITMAP);
wlan_cm_roam_cfg_get_value(psoc, vdev_id,
MOBILITY_DOMAIN, &src_cfg);
wlan_cm_set_roam_band_bitmask(psoc, vdev_id, REG_BAND_MASK_ALL);
mdie_present = src_cfg.bool_value;
/* Based on the auth scheme tell if we are 11r */
if (cm_is_auth_type_11r(mlme_obj, vdev, mdie_present)) {

View File

@@ -880,6 +880,19 @@ wlan_cm_update_roam_scan_scheme_bitmap(struct wlan_objmgr_psoc *psoc,
uint8_t vdev_id,
uint32_t roam_scan_scheme_bitmap);
/**
* wlan_cm_set_roam_band_bitmask() - Set roam band bitmask for vdev
* @psoc: psoc pointer
* @vdev_id: vdev id
* @roam_band_bitmask: bitmask of roam band for which roam scan needs to be
* enabled in fw
*
* Return: QDF_STATUS
*/
QDF_STATUS wlan_cm_set_roam_band_bitmask(struct wlan_objmgr_psoc *psoc,
uint8_t vdev_id,
uint32_t roam_band_bitmask);
/**
* wlan_cm_get_roam_scan_scheme_bitmap() - Get roam scan scheme bitmap value
* @psoc: PSOC pointer
@@ -1113,6 +1126,13 @@ wlan_cm_update_roam_scan_scheme_bitmap(struct wlan_objmgr_psoc *psoc,
return QDF_STATUS_E_NOSUPPORT;
}
static inline QDF_STATUS
wlan_cm_set_roam_band_bitmask(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
uint32_t roam_band_bitmask)
{
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)

View File

@@ -337,6 +337,7 @@ struct roam_synch_frame_ind {
* wmi_roam_invoke_status_error in case of forced roam
* @lost_link_rssi: lost link RSSI
* @roam_sync_frame_ind: roam sync frame ind
* @roam_band_bitmask: This allows the driver to roam within this band
*/
struct rso_config {
#ifdef WLAN_FEATURE_HOST_ROAM
@@ -381,6 +382,7 @@ struct rso_config {
uint32_t roam_invoke_fail_reason;
int32_t lost_link_rssi;
struct roam_synch_frame_ind roam_sync_frame_ind;
uint32_t roam_band_bitmask;
};
/**
@@ -486,6 +488,7 @@ struct rso_config_params {
* @HS_20_AP: Hotspot 2.0 AP
* @MBO_OCE_ENABLED_AP: MBO/OCE enabled network
* @LOST_LINK_RSSI: lost link RSSI
* @ROAM_BAND: Allowed band for roaming in FW
*/
enum roam_cfg_param {
RSSI_CHANGE_THRESHOLD,
@@ -514,6 +517,7 @@ enum roam_cfg_param {
MBO_OCE_ENABLED_AP,
IS_SINGLE_PMK,
LOST_LINK_RSSI,
ROAM_BAND,
};
/**

View File

@@ -122,6 +122,14 @@ ucfg_cm_update_roam_scan_scheme_bitmap(struct wlan_objmgr_psoc *psoc,
return wlan_cm_update_roam_scan_scheme_bitmap(psoc, vdev_id,
roam_scan_scheme_bitmap);
}
static inline QDF_STATUS
ucfg_cm_set_roam_band_mask(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
uint32_t roam_band_mask)
{
return wlan_cm_set_roam_band_bitmask(psoc, vdev_id, roam_band_mask);
}
#else
static inline QDF_STATUS
ucfg_cm_update_roam_scan_scheme_bitmap(struct wlan_objmgr_psoc *psoc,
@@ -130,6 +138,13 @@ ucfg_cm_update_roam_scan_scheme_bitmap(struct wlan_objmgr_psoc *psoc,
{
return QDF_STATUS_SUCCESS;
}
static inline QDF_STATUS
ucfg_cm_set_roam_band_mask(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
uint32_t roam_band_mask)
{
return QDF_STATUS_SUCCESS;
}
#endif
/**

View File

@@ -1181,6 +1181,11 @@ wlan_cm_roam_cfg_set_value(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
case LOST_LINK_RSSI:
rso_cfg->lost_link_rssi = src_config->int_value;
break;
case ROAM_BAND:
rso_cfg->roam_band_bitmask = src_config->uint_value;
mlme_debug("[ROAM BAND] Set roam band:%d",
rso_cfg->roam_band_bitmask);
break;
default:
mlme_err("Invalid roam config requested:%d", roam_cfg_type);
status = QDF_STATUS_E_FAILURE;
@@ -1925,6 +1930,17 @@ wlan_cm_update_roam_scan_scheme_bitmap(struct wlan_objmgr_psoc *psoc,
return QDF_STATUS_SUCCESS;
}
QDF_STATUS wlan_cm_set_roam_band_bitmask(struct wlan_objmgr_psoc *psoc,
uint8_t vdev_id,
uint32_t roam_band_bitmask)
{
struct cm_roam_values_copy src_config;
src_config.uint_value = roam_band_bitmask;
return wlan_cm_roam_cfg_set_value(psoc, vdev_id, ROAM_BAND,
&src_config);
}
uint32_t wlan_cm_get_roam_scan_scheme_bitmap(struct wlan_objmgr_psoc *psoc,
uint8_t vdev_id)
{