qcacld-3.0: Introduce ini to configure roam RSSI diff for 6 GHz AP
This is applicable only when the roaming happens from 2.4 GHz/5 GHz to 6 GHz AP. The value is used to check if the 6 GHz AP to which we are roaming (from 2.4 GHz/ 5 GHz) is better than current AP in terms of RSSI. This checking is disabled if the value is set to zero. Change-Id: I77f1183e1fd704dfa153841e669a20c9e75d0fe7 CRs-Fixed: 3353346
Este cometimento está contido em:

cometido por
Madan Koyyalamudi

ascendente
fc8c64aa9e
cometimento
b73718cf7d
@@ -3005,6 +3005,7 @@ cm_roam_start_req(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
|
||||
struct rso_config *rso_cfg;
|
||||
struct wlan_objmgr_vdev *vdev;
|
||||
struct wlan_objmgr_pdev *pdev;
|
||||
struct cm_roam_values_copy temp;
|
||||
|
||||
start_req = qdf_mem_malloc(sizeof(*start_req));
|
||||
if (!start_req)
|
||||
@@ -3072,6 +3073,9 @@ cm_roam_start_req(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
|
||||
start_req->wlan_roam_full_scan_6ghz_on_disc =
|
||||
wlan_cm_roam_get_full_scan_6ghz_on_disc(psoc);
|
||||
|
||||
wlan_cm_roam_cfg_get_value(psoc, vdev_id, ROAM_RSSI_DIFF_6GHZ, &temp);
|
||||
start_req->wlan_roam_rssi_diff_6ghz = temp.uint_value;
|
||||
|
||||
status = wlan_cm_tgt_send_roam_start_req(psoc, vdev_id, start_req);
|
||||
if (QDF_IS_STATUS_ERROR(status))
|
||||
mlme_debug("fail to send roam start");
|
||||
@@ -3101,6 +3105,7 @@ cm_roam_update_config_req(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
|
||||
struct rso_config *rso_cfg;
|
||||
struct wlan_objmgr_vdev *vdev;
|
||||
struct wlan_objmgr_pdev *pdev;
|
||||
struct cm_roam_values_copy temp;
|
||||
|
||||
cm_roam_set_roam_reason_better_ap(psoc, vdev_id, false);
|
||||
|
||||
@@ -3166,6 +3171,9 @@ cm_roam_update_config_req(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
|
||||
update_req->wlan_roam_full_scan_6ghz_on_disc =
|
||||
wlan_cm_roam_get_full_scan_6ghz_on_disc(psoc);
|
||||
|
||||
wlan_cm_roam_cfg_get_value(psoc, vdev_id, ROAM_RSSI_DIFF_6GHZ, &temp);
|
||||
update_req->wlan_roam_rssi_diff_6ghz = temp.uint_value;
|
||||
|
||||
status = wlan_cm_tgt_send_roam_update_req(psoc, vdev_id, update_req);
|
||||
if (QDF_IS_STATUS_ERROR(status))
|
||||
mlme_debug("fail to send update config");
|
||||
@@ -4981,6 +4989,8 @@ cm_restore_default_roaming_params(struct wlan_mlme_psoc_ext_obj *mlme_obj,
|
||||
mlme_obj->cfg.lfr.neighbor_lookup_rssi_threshold;
|
||||
cfg_params->roam_rssi_diff =
|
||||
mlme_obj->cfg.lfr.roam_rssi_diff;
|
||||
cfg_params->roam_rssi_diff_6ghz =
|
||||
mlme_obj->cfg.lfr.roam_rssi_diff_6ghz;
|
||||
cfg_params->bg_rssi_threshold =
|
||||
mlme_obj->cfg.lfr.bg_rssi_threshold;
|
||||
|
||||
@@ -5468,6 +5478,10 @@ static void cm_roam_start_init(struct wlan_objmgr_psoc *psoc,
|
||||
wlan_cm_roam_cfg_set_value(psoc, vdev_id,
|
||||
IS_11R_CONNECTION, &src_cfg);
|
||||
|
||||
src_cfg.uint_value = mlme_obj->cfg.lfr.roam_rssi_diff_6ghz;
|
||||
wlan_cm_roam_cfg_set_value(psoc, vdev_id,
|
||||
ROAM_RSSI_DIFF_6GHZ, &src_cfg);
|
||||
|
||||
if (!mlme_obj->cfg.lfr.roam_scan_offload_enabled)
|
||||
return;
|
||||
/*
|
||||
|
@@ -307,6 +307,7 @@ struct rso_cfg_params {
|
||||
uint32_t full_roam_scan_period;
|
||||
bool enable_scoring_for_roam;
|
||||
uint8_t roam_rssi_diff;
|
||||
uint8_t roam_rssi_diff_6ghz;
|
||||
uint8_t bg_rssi_threshold;
|
||||
uint16_t roam_scan_home_away_time;
|
||||
uint8_t roam_scan_n_probes;
|
||||
@@ -661,6 +662,7 @@ struct rso_config_params {
|
||||
* @MBO_OCE_ENABLED_AP: MBO/OCE enabled network
|
||||
* @LOST_LINK_RSSI: lost link RSSI
|
||||
* @ROAM_BAND: Allowed band for roaming in FW
|
||||
* @ROAM_RSSI_DIFF_6GHZ: roam rssi diff for 6 GHz AP
|
||||
*/
|
||||
enum roam_cfg_param {
|
||||
RSSI_CHANGE_THRESHOLD,
|
||||
@@ -691,6 +693,7 @@ enum roam_cfg_param {
|
||||
LOST_LINK_RSSI,
|
||||
ROAM_BAND,
|
||||
HI_RSSI_SCAN_RSSI_DELTA,
|
||||
ROAM_RSSI_DIFF_6GHZ,
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -1782,6 +1785,8 @@ struct wlan_roam_mlo_config {
|
||||
* scan that are already scanned as part of partial scan.
|
||||
* @wlan_roam_full_scan_6ghz_on_disc: Include the 6 GHz channels in roam full
|
||||
* scan only on prior discovery of any 6 GHz support in the environment.
|
||||
* @wlan_roam_rssi_diff_6ghz: This value is used as to how better the RSSI of
|
||||
* the new/roamable 6GHz AP should be for roaming.
|
||||
*/
|
||||
struct wlan_roam_start_config {
|
||||
struct wlan_roam_offload_scan_rssi_params rssi_params;
|
||||
@@ -1806,6 +1811,7 @@ struct wlan_roam_start_config {
|
||||
uint16_t wlan_roam_ho_delay_config;
|
||||
uint8_t wlan_exclude_rm_partial_scan_freq;
|
||||
uint8_t wlan_roam_full_scan_6ghz_on_disc;
|
||||
uint8_t wlan_roam_rssi_diff_6ghz;
|
||||
/* other wmi cmd structures */
|
||||
};
|
||||
|
||||
@@ -1861,6 +1867,8 @@ struct wlan_roam_stop_config {
|
||||
* scan that are already scanned as part of partial scan.
|
||||
* @wlan_roam_full_scan_6ghz_on_disc: Include the 6 GHz channels in roam full
|
||||
* scan only on prior discovery of any 6 GHz support in the environment.
|
||||
* @wlan_roam_rssi_diff_6ghz: This value is used as to how better the RSSI of
|
||||
* the new/roamable 6GHz AP should be for roaming.
|
||||
*/
|
||||
struct wlan_roam_update_config {
|
||||
struct wlan_roam_beacon_miss_cnt beacon_miss_cnt;
|
||||
@@ -1879,6 +1887,7 @@ struct wlan_roam_update_config {
|
||||
uint16_t wlan_roam_ho_delay_config;
|
||||
uint8_t wlan_exclude_rm_partial_scan_freq;
|
||||
uint8_t wlan_roam_full_scan_6ghz_on_disc;
|
||||
uint8_t wlan_roam_rssi_diff_6ghz;
|
||||
};
|
||||
|
||||
#if defined(WLAN_FEATURE_HOST_ROAM) || defined(WLAN_FEATURE_ROAM_OFFLOAD)
|
||||
|
@@ -762,6 +762,9 @@ QDF_STATUS wlan_cm_roam_cfg_get_value(struct wlan_objmgr_psoc *psoc,
|
||||
case ROAM_RSSI_DIFF:
|
||||
dst_config->uint_value = src_cfg->roam_rssi_diff;
|
||||
break;
|
||||
case ROAM_RSSI_DIFF_6GHZ:
|
||||
dst_config->uint_value = src_cfg->roam_rssi_diff_6ghz;
|
||||
break;
|
||||
case NEIGHBOUR_LOOKUP_THRESHOLD:
|
||||
dst_config->uint_value = src_cfg->neighbor_lookup_threshold;
|
||||
break;
|
||||
@@ -1334,6 +1337,9 @@ wlan_cm_roam_cfg_set_value(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
|
||||
cm_roam_update_cfg(psoc, vdev_id,
|
||||
REASON_RSSI_DIFF_CHANGED);
|
||||
break;
|
||||
case ROAM_RSSI_DIFF_6GHZ:
|
||||
dst_cfg->roam_rssi_diff_6ghz = src_config->uint_value;
|
||||
break;
|
||||
case NEIGHBOUR_LOOKUP_THRESHOLD:
|
||||
dst_cfg->neighbor_lookup_threshold = src_config->uint_value;
|
||||
break;
|
||||
@@ -1567,6 +1573,8 @@ QDF_STATUS wlan_cm_rso_config_init(struct wlan_objmgr_vdev *vdev,
|
||||
mlme_obj->cfg.lfr.roam_scan_hi_rssi_ub;
|
||||
cfg_params->roam_rssi_diff =
|
||||
mlme_obj->cfg.lfr.roam_rssi_diff;
|
||||
cfg_params->roam_rssi_diff_6ghz =
|
||||
mlme_obj->cfg.lfr.roam_rssi_diff_6ghz;
|
||||
cfg_params->bg_rssi_threshold =
|
||||
mlme_obj->cfg.lfr.bg_rssi_threshold;
|
||||
|
||||
|
Criar uma nova questão referindo esta
Bloquear um utilizador