Merge dc2a8a0860 on remote branch

Change-Id: I5b563b40fb7af41d16ac9fd7f17b1ff827d6c6c8
This commit is contained in:
Linux Build Service Account 2024-02-12 21:05:17 -08:00
commit 1d5dd7e8d7
14 changed files with 375 additions and 12 deletions

View file

@ -1631,6 +1631,8 @@ struct fw_scan_channels {
* vsie in Re(assoc) frame
* @roam_trigger_bitmap: Bitmap of roaming triggers.
* @sta_roam_disable STA roaming disabled by interfaces
* @roam_high_rssi_delta: Delta change in high RSSI at which roam scan is
* triggered in 2.4/5 GHz.
* @early_stop_scan_enable: Set early stop scan
* @enable_5g_band_pref: Enable preference for 5G from INI
* @ese_enabled: Enable ESE feature
@ -1752,6 +1754,7 @@ struct wlan_mlme_lfr_cfg {
bool enable_roam_reason_vsie;
uint32_t roam_trigger_bitmap;
uint32_t sta_roam_disable;
uint8_t roam_high_rssi_delta;
#endif
bool early_stop_scan_enable;
bool enable_5g_band_pref;

View file

@ -1,6 +1,6 @@
/*
* Copyright (c) 2020, The Linux Foundation. All rights reserved.
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
@ -264,6 +264,56 @@ target_if_cm_roam_rssi_diff_6ghz(struct wlan_objmgr_vdev *vdev,
return status;
}
static QDF_STATUS
target_if_cm_roam_scan_offload_rssi_thresh(
wmi_unified_t wmi_handle,
struct wlan_roam_offload_scan_rssi_params *req);
/**
* target_if_cm_roam_scan_offload_rssi_params() - Set the RSSI parameters
* for roam offload scan
* @vdev: vdev object
* @roam_rssi_params: structure containing parameters for roam offload scan
* based on RSSI
*
* Return: QDF_STATUS
*/
static QDF_STATUS
target_if_cm_roam_scan_offload_rssi_params(
struct wlan_objmgr_vdev *vdev,
struct wlan_roam_offload_scan_rssi_params *roam_rssi_params)
{
QDF_STATUS status = QDF_STATUS_E_FAILURE;
wmi_unified_t wmi_handle;
wmi_handle = target_if_cm_roam_get_wmi_handle_from_vdev(vdev);
if (!wmi_handle)
return status;
status = target_if_cm_roam_scan_offload_rssi_thresh(wmi_handle,
roam_rssi_params);
return status;
}
static void
target_if_check_hi_rssi_5ghz_support(
wmi_unified_t wmi_handle,
struct wlan_roam_offload_scan_rssi_params *roam_rssi_params)
{
if ((roam_rssi_params->flags &
ROAM_SCAN_RSSI_THRESHOLD_FLAG_ROAM_HI_RSSI_EN_ON_5G) &&
wmi_service_enabled(wmi_handle,
wmi_service_5ghz_hi_rssi_roam_support)) {
target_if_debug("FW supports Hi RSSI roam in 5 GHz");
roam_rssi_params->flags |=
WMI_ROAM_SCAN_RSSI_THRESHOLD_FLAG_ROAM_HI_RSSI_EN_ON_5G;
} else {
roam_rssi_params->flags &=
~ROAM_SCAN_RSSI_THRESHOLD_FLAG_ROAM_HI_RSSI_EN_ON_5G;
}
}
static void
target_if_cm_roam_register_lfr3_ops(struct wlan_cm_roam_tx_ops *tx_ops)
{
@ -274,6 +324,8 @@ target_if_cm_roam_register_lfr3_ops(struct wlan_cm_roam_tx_ops *tx_ops)
target_if_cm_exclude_rm_partial_scan_freq;
tx_ops->send_roam_full_scan_6ghz_on_disc =
target_if_cm_roam_full_scan_6ghz_on_disc;
tx_ops->send_roam_scan_offload_rssi_params =
target_if_cm_roam_scan_offload_rssi_params;
}
#else
static inline void
@ -314,6 +366,12 @@ target_if_cm_roam_rssi_diff_6ghz(struct wlan_objmgr_vdev *vdev,
{
return QDF_STATUS_E_NOSUPPORT;
}
static inline void
target_if_check_hi_rssi_5ghz_support(
wmi_unified_t wmi_handle,
struct wlan_roam_offload_scan_rssi_params *roam_rssi_params)
{}
#endif
/**
@ -678,6 +736,9 @@ target_if_cm_roam_scan_offload_rssi_thresh(
}
}
if (req->hi_rssi_scan_rssi_delta)
target_if_check_hi_rssi_5ghz_support(wmi_handle, req);
target_if_debug("RSO_CFG: vdev %d: db2dbm enabled:%d, good_rssi_threshold:%d, early_stop_thresholds en:%d, min:%d, max:%d, roam_scan_rssi_thresh:%d, roam_rssi_thresh_diff:%d",
req->vdev_id, db2dbm_enabled, req->good_rssi_threshold,
req->early_stop_scan_enable,

View file

@ -1,6 +1,6 @@
/*
* Copyright (c) 2012-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
@ -317,6 +317,51 @@ QDF_STATUS cm_roam_full_scan_6ghz_on_disc(struct wlan_objmgr_psoc *psoc,
return status;
}
QDF_STATUS cm_set_roam_scan_high_rssi_offset(struct wlan_objmgr_psoc *psoc,
uint8_t vdev_id,
uint8_t param_value)
{
struct wlan_objmgr_vdev *vdev;
struct wlan_roam_offload_scan_rssi_params *roam_rssi_params;
QDF_STATUS status = QDF_STATUS_E_INVAL;
vdev = wlan_objmgr_get_vdev_by_id_from_psoc(psoc, vdev_id,
WLAN_MLME_CM_ID);
if (!vdev) {
mlme_err("vdev object is NULL for vdev %d", vdev_id);
return QDF_STATUS_E_FAILURE;
}
roam_rssi_params = qdf_mem_malloc(sizeof(*roam_rssi_params));
if (!roam_rssi_params)
goto rel_vdev_ref;
wlan_cm_set_roam_scan_high_rssi_offset(psoc, param_value);
qdf_mem_zero(roam_rssi_params, sizeof(*roam_rssi_params));
status = wlan_cm_roam_scan_offload_rssi_thresh(psoc, vdev_id,
roam_rssi_params);
if (!QDF_IS_STATUS_SUCCESS(status)) {
mlme_err("fail to set roam scan offload RSSI threshold params");
goto mem_free;
}
mlme_debug("vdev:%d Configured high RSSI delta=%d, 5 GHZ roam flag=%d",
vdev_id, roam_rssi_params->hi_rssi_scan_rssi_delta,
(roam_rssi_params->flags &
ROAM_SCAN_RSSI_THRESHOLD_FLAG_ROAM_HI_RSSI_EN_ON_5G));
status = wlan_cm_tgt_send_roam_scan_offload_rssi_params(
vdev, roam_rssi_params);
if (!QDF_IS_STATUS_SUCCESS(status))
mlme_err("fail to set roam scan high RSSI offset");
mem_free:
qdf_mem_free(roam_rssi_params);
rel_vdev_ref:
wlan_objmgr_vdev_release_ref(vdev, WLAN_MLME_CM_ID);
return status;
}
#else
static inline void
cm_roam_reason_vsie(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,

View file

@ -1,6 +1,6 @@
/*
* Copyright (c) 2012-2020 The Linux Foundation. All rights reserved.
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
@ -156,6 +156,21 @@ cm_exclude_rm_partial_scan_freq(struct wlan_objmgr_psoc *psoc,
*/
QDF_STATUS cm_roam_full_scan_6ghz_on_disc(struct wlan_objmgr_psoc *psoc,
uint8_t vdev_id, uint8_t param_value);
/**
* cm_set_roam_scan_high_rssi_offset() - Set the delta change in high RSSI at
* which roam scan is triggered in 2.4/5 GHz.
* @psoc: PSOC pointer
* @vdev_id: vdev id
* @param_value: Set the High RSSI delta for roam scan trigger
* * 1-16 - Set an offset value in this range
* * 0 - Disable
*
* Return: QDF_STATUS
*/
QDF_STATUS
cm_set_roam_scan_high_rssi_offset(struct wlan_objmgr_psoc *psoc,
uint8_t vdev_id, uint8_t param_value);
#else
static inline QDF_STATUS
cm_roam_send_rt_stats_config(struct wlan_objmgr_psoc *psoc,

View file

@ -1,6 +1,6 @@
/*
* Copyright (c) 2020, The Linux Foundation. All rights reserved.
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
@ -692,6 +692,44 @@ wlan_cm_roam_set_ho_delay_config(struct wlan_objmgr_psoc *psoc,
*/
uint16_t
wlan_cm_roam_get_ho_delay_config(struct wlan_objmgr_psoc *psoc);
/**
* wlan_cm_set_roam_scan_high_rssi_offset() - Set the delta change in high RSSI
* at which roam scan is triggered in 2.4/5 GHz.
* @psoc: PSOC pointer
* @roam_high_rssi_delta: Set the High RSSI delta for roam scan trigger
* * 1-16 - Set an offset value in this range
* * 0 - Disable
*
* Return: none
*/
void
wlan_cm_set_roam_scan_high_rssi_offset(struct wlan_objmgr_psoc *psoc,
uint8_t roam_high_rssi_delta);
/**
* wlan_cm_get_roam_scan_high_rssi_offset() - Get the delta change in high RSSI
* at which roam scan is triggered in 2.4/5 GHz.
* @psoc: PSOC pointer
*
* Return: High RSSI delta for roam scan trigger
*/
uint8_t wlan_cm_get_roam_scan_high_rssi_offset(struct wlan_objmgr_psoc *psoc);
/**
* wlan_cm_roam_scan_offload_rssi_thresh() - set roam offload scan rssi
* parameters
* @psoc: PSOC pointer
* @vdev_id: VDEV id
* @roam_rssi_params: roam offload scan rssi related parameters
*
* This function is used to set roam offload scan rssi related parameters
*
* Return: QDF_STATUS
*/
QDF_STATUS wlan_cm_roam_scan_offload_rssi_thresh(
struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
struct wlan_roam_offload_scan_rssi_params *roam_rssi_params);
#else
static inline
void wlan_cm_roam_activate_pcl_per_vdev(struct wlan_objmgr_psoc *psoc,
@ -826,5 +864,11 @@ wlan_cm_roam_get_full_scan_6ghz_on_disc(struct wlan_objmgr_psoc *psoc)
{
return 0;
}
static inline uint8_t
wlan_cm_get_roam_scan_high_rssi_offset(struct wlan_objmgr_psoc *psoc)
{
return 0;
}
#endif /* FEATURE_ROAM_OFFLOAD */
#endif /* WLAN_CM_ROAM_API_H__ */

View file

@ -1,6 +1,6 @@
/*
* Copyright (c) 2020-2021, The Linux Foundation. All rights reserved.
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
@ -980,6 +980,19 @@ struct wlan_roam_scan_offload_params {
#endif
};
/**
* enum wlan_roam_offload_scan_rssi_flags - Flags for roam scan RSSI threshold
* params, this enums will be used in flags param of the structure
* wlan_roam_offload_scan_rssi_params
* @ROAM_SCAN_RSSI_THRESHOLD_INVALID_FLAG: invalid flag
* @ROAM_SCAN_RSSI_THRESHOLD_FLAG_ROAM_HI_RSSI_EN_ON_5G: enable high RSSI roam
* trigger support to roam from 5 GHz to 6 GHz band
*/
enum wlan_roam_offload_scan_rssi_flags {
ROAM_SCAN_RSSI_THRESHOLD_INVALID_FLAG,
ROAM_SCAN_RSSI_THRESHOLD_FLAG_ROAM_HI_RSSI_EN_ON_5G = BIT(0),
};
/**
* struct wlan_roam_offload_scan_rssi_params - structure containing
* parameters for roam offload scan based on RSSI
@ -1015,6 +1028,7 @@ struct wlan_roam_scan_offload_params {
* roam
* @roam_data_rssi_threshold: Bad data RSSI threshold to roam
* @rx_data_inactivity_time: Rx duration to check data RSSI
* @flags: Flags for roam scan RSSI threshold params
*/
struct wlan_roam_offload_scan_rssi_params {
int8_t rssi_thresh;
@ -1046,6 +1060,7 @@ struct wlan_roam_offload_scan_rssi_params {
uint32_t roam_data_rssi_threshold_triggers;
int32_t roam_data_rssi_threshold;
uint32_t rx_data_inactivity_time;
uint32_t flags;
};
/**
@ -1400,6 +1415,8 @@ struct set_pcl_req {
* scan that are already scanned as part of partial scan.
* @send_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.
* @send_roam_scan_offload_rssi_params: Set the RSSI parameters for roam
* offload scan
*/
struct wlan_cm_roam_tx_ops {
QDF_STATUS (*send_vdev_set_pcl_cmd)(struct wlan_objmgr_vdev *vdev,
@ -1436,6 +1453,9 @@ struct wlan_cm_roam_tx_ops {
QDF_STATUS (*send_roam_full_scan_6ghz_on_disc)(
struct wlan_objmgr_vdev *vdev,
uint8_t value);
QDF_STATUS (*send_roam_scan_offload_rssi_params)(
struct wlan_objmgr_vdev *vdev,
struct wlan_roam_offload_scan_rssi_params *roam_rssi_params);
#endif
};

View file

@ -1,6 +1,6 @@
/*
* Copyright (c) 2020, The Linux Foundation. All rights reserved.
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
@ -227,6 +227,24 @@ ucfg_cm_exclude_rm_partial_scan_freq(struct wlan_objmgr_pdev *pdev,
QDF_STATUS ucfg_cm_roam_full_scan_6ghz_on_disc(struct wlan_objmgr_pdev *pdev,
uint8_t vdev_id,
uint8_t param_value);
/**
* ucfg_cm_set_roam_scan_high_rssi_offset() - Set the delta change in high RSSI
* at which roam scan is triggered in 2.4/5 GHz.
* @psoc: Pointer to psoc object
* @vdev_id: vdev id
* @param_value: Set the High RSSI delta for roam scan trigger
* 0 - Disable
* 1-16 - Set an offset value in this range
*
* Return: QDF_STATUS
*/
static inline QDF_STATUS
ucfg_cm_set_roam_scan_high_rssi_offset(struct wlan_objmgr_psoc *psoc,
uint8_t vdev_id, uint8_t param_value)
{
return cm_set_roam_scan_high_rssi_offset(psoc, vdev_id, param_value);
}
#else
static inline QDF_STATUS
ucfg_cm_update_roam_scan_scheme_bitmap(struct wlan_objmgr_psoc *psoc,
@ -277,4 +295,11 @@ ucfg_cm_roam_full_scan_6ghz_on_disc(struct wlan_objmgr_pdev *pdev,
{
return QDF_STATUS_SUCCESS;
}
static inline QDF_STATUS
ucfg_cm_set_roam_scan_high_rssi_offset(struct wlan_objmgr_psoc *psoc,
uint8_t vdev_id, uint8_t param_value)
{
return QDF_STATUS_SUCCESS;
}
#endif

View file

@ -1,6 +1,6 @@
/*
* Copyright (c) 2020, The Linux Foundation. All rights reserved.
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
@ -93,6 +93,20 @@ wlan_cm_tgt_send_roam_full_scan_6ghz_on_disc(
struct wlan_objmgr_psoc *psoc,
uint8_t vdev_id,
uint8_t roam_full_scan_6ghz_on_disc);
/**
* wlan_cm_tgt_send_roam_scan_offload_rssi_params() - Set the RSSI parameters
* for roam offload scan
* @vdev: Pointer to vdev object
* @roam_rssi_params: structure containing parameters for roam offload scan
* based on RSSI
*
* Return: QDF_STATUS
*/
QDF_STATUS
wlan_cm_tgt_send_roam_scan_offload_rssi_params(
struct wlan_objmgr_vdev *vdev,
struct wlan_roam_offload_scan_rssi_params *roam_rssi_params);
#else
static inline QDF_STATUS
wlan_cm_roam_send_set_vdev_pcl(struct wlan_objmgr_psoc *psoc,

View file

@ -1,6 +1,6 @@
/*
* Copyright (c) 2020, The Linux Foundation. All rights reserved.
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
@ -922,7 +922,9 @@ wlan_cm_roam_get_ho_delay_config(struct wlan_objmgr_psoc *psoc)
return mlme_obj->cfg.lfr.roam_ho_delay_config;
}
#endif
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
void
wlan_cm_set_exclude_rm_partial_scan_freq(struct wlan_objmgr_psoc *psoc,
uint8_t exclude_rm_partial_scan_freq)
@ -977,4 +979,29 @@ uint8_t wlan_cm_roam_get_full_scan_6ghz_on_disc(struct wlan_objmgr_psoc *psoc)
return mlme_obj->cfg.lfr.roam_full_scan_6ghz_on_disc;
}
void
wlan_cm_set_roam_scan_high_rssi_offset(struct wlan_objmgr_psoc *psoc,
uint8_t roam_high_rssi_delta)
{
struct wlan_mlme_psoc_ext_obj *mlme_obj;
mlme_obj = mlme_get_psoc_ext_obj(psoc);
if (!mlme_obj)
return;
mlme_obj->cfg.lfr.roam_high_rssi_delta = roam_high_rssi_delta;
}
uint8_t
wlan_cm_get_roam_scan_high_rssi_offset(struct wlan_objmgr_psoc *psoc)
{
struct wlan_mlme_psoc_ext_obj *mlme_obj;
mlme_obj = mlme_get_psoc_ext_obj(psoc);
if (!mlme_obj)
return 0;
return mlme_obj->cfg.lfr.roam_high_rssi_delta;
}
#endif

View file

@ -1,6 +1,6 @@
/*
* Copyright (c) 2020, The Linux Foundation. All rights reserved.
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved
* Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
@ -299,6 +299,34 @@ QDF_STATUS wlan_cm_tgt_send_roam_full_scan_6ghz_on_disc(
return status;
}
QDF_STATUS
wlan_cm_tgt_send_roam_scan_offload_rssi_params(
struct wlan_objmgr_vdev *vdev,
struct wlan_roam_offload_scan_rssi_params *roam_rssi_params)
{
QDF_STATUS status;
uint8_t vdev_id;
struct wlan_cm_roam_tx_ops *roam_tx_ops;
vdev_id = wlan_vdev_get_id(vdev);
roam_tx_ops = wlan_cm_roam_get_tx_ops_from_vdev(vdev);
if (!roam_tx_ops || !roam_tx_ops->send_roam_scan_offload_rssi_params) {
mlme_err("vdev %d send_roam_scan_offload_rssi_params is NULL",
vdev_id);
wlan_objmgr_vdev_release_ref(vdev, WLAN_MLME_NB_ID);
return QDF_STATUS_E_INVAL;
}
status = roam_tx_ops->send_roam_scan_offload_rssi_params(
vdev, roam_rssi_params);
if (QDF_IS_STATUS_ERROR(status))
mlme_debug("vdev %d fail to send roam scan offload RSSI params",
vdev_id);
return status;
}
#endif
#if defined(WLAN_FEATURE_HOST_ROAM) || defined(WLAN_FEATURE_ROAM_OFFLOAD)

View file

@ -1,6 +1,6 @@
/*
* Copyright (c) 2013-2021, The Linux Foundation. All rights reserved.
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
@ -215,6 +215,7 @@ static QDF_STATUS send_roam_scan_offload_rssi_thresh_cmd_tlv(
rssi_threshold_fp->hirssi_upper_bound = roam_req->hi_rssi_scan_rssi_ub;
rssi_threshold_fp->rssi_thresh_offset_5g =
roam_req->rssi_thresh_offset_5g;
rssi_threshold_fp->flags = roam_req->flags;
buf_ptr += sizeof(wmi_roam_scan_rssi_threshold_fixed_param);
WMITLV_SET_HDR(buf_ptr,

View file

@ -4655,6 +4655,7 @@ roam_control_policy[QCA_ATTR_ROAM_CONTROL_MAX + 1] = {
.type = NLA_U8},
[QCA_ATTR_ROAM_CONTROL_FULL_SCAN_6GHZ_ONLY_ON_PRIOR_DISCOVERY] = {
.type = NLA_U8},
[QCA_ATTR_ROAM_CONTROL_CONNECTED_HIGH_RSSI_OFFSET] = {.type = NLA_U8},
};
/**
@ -5306,6 +5307,31 @@ hdd_set_roam_with_control_config(struct hdd_context *hdd_ctx,
hdd_err("Fail to decide inclusion of 6 GHz channels");
}
attr = tb2[QCA_ATTR_ROAM_CONTROL_CONNECTED_HIGH_RSSI_OFFSET];
if (attr) {
value = nla_get_u8(attr);
if (!cfg_in_range(CFG_LFR_ROAM_SCAN_HI_RSSI_DELTA, value)) {
hdd_err("High RSSI offset value %d is out of range",
value);
return -EINVAL;
}
hdd_debug("%s roam scan high RSSI with offset: %d for vdev %d",
value ? "Enable" : "Disable", value, vdev_id);
if (!value &&
!wlan_cm_get_roam_scan_high_rssi_offset(hdd_ctx->psoc)) {
hdd_debug("Roam scan high RSSI is already disabled");
return -EINVAL;
}
status = ucfg_cm_set_roam_scan_high_rssi_offset(hdd_ctx->psoc,
vdev_id, value);
if (QDF_IS_STATUS_ERROR(status))
hdd_err("Fail to set roam scan high RSSI offset for vdev %d",
vdev_id);
}
return qdf_status_to_os_return(status);
}

View file

@ -32,9 +32,9 @@
#define QWLAN_VERSION_MAJOR 2
#define QWLAN_VERSION_MINOR 0
#define QWLAN_VERSION_PATCH 8
#define QWLAN_VERSION_EXTRA "I"
#define QWLAN_VERSION_EXTRA "J"
#define QWLAN_VERSION_BUILD 34
#define QWLAN_VERSIONSTR "2.0.8.34I"
#define QWLAN_VERSIONSTR "2.0.8.34J"
#endif /* QWLAN_VERSION_H */

View file

@ -17882,6 +17882,29 @@ csr_cm_roam_scan_offload_rssi_thresh(struct mac_context *mac_ctx,
else
params->hi_rssi_scan_rssi_delta =
roam_info->cfgParams.hi_rssi_scan_rssi_delta;
/*
* When the STA operating band is 2.4/5 GHz and if the high RSSI delta
* is configured through vendor command then the priority should be
* given to it and the high RSSI delta value will be overridden with it.
*/
if (!WLAN_REG_IS_6GHZ_CHAN_FREQ(session->connectedProfile.op_freq)) {
uint8_t roam_high_rssi_delta;
roam_high_rssi_delta =
wlan_cm_get_roam_scan_high_rssi_offset(mac_ctx->psoc);
if (roam_high_rssi_delta)
params->hi_rssi_scan_rssi_delta =
roam_high_rssi_delta;
/*
* Firmware will use this flag to enable 5 to 6 GHz
* high RSSI roam
*/
if (roam_high_rssi_delta &&
WLAN_REG_IS_5GHZ_CH_FREQ(session->connectedProfile.op_freq))
params->flags |=
ROAM_SCAN_RSSI_THRESHOLD_FLAG_ROAM_HI_RSSI_EN_ON_5G;
}
params->hi_rssi_scan_rssi_ub =
roam_info->cfgParams.hi_rssi_scan_rssi_ub;
params->raise_rssi_thresh_5g =
@ -18474,6 +18497,37 @@ csr_cm_fill_rso_sae_single_pmk_info(struct mac_context *mac_ctx,
return false;
}
#endif
QDF_STATUS wlan_cm_roam_scan_offload_rssi_thresh(
struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
struct wlan_roam_offload_scan_rssi_params *roam_rssi_params)
{
struct csr_roam_session *session;
struct mac_context *mac_ctx;
mac_ctx = sme_get_mac_context();
if (!mac_ctx) {
sme_err("mac_ctx is NULL");
return QDF_STATUS_E_FAILURE;
}
session = CSR_GET_SESSION(mac_ctx, vdev_id);
if (!session) {
sme_err("session is null %d", vdev_id);
return QDF_STATUS_E_FAILURE;
}
if (WLAN_REG_IS_6GHZ_CHAN_FREQ(session->connectedProfile.op_freq)) {
sme_err("vdev:%d High RSSI offset can't be set in 6 GHz band",
vdev_id);
return QDF_STATUS_E_FAILURE;
}
csr_cm_roam_scan_offload_rssi_thresh(mac_ctx, session,
roam_rssi_params);
return QDF_STATUS_SUCCESS;
}
#endif
#ifdef WLAN_FEATURE_ROAM_OFFLOAD