mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-09 21:59:12 -04:00
Merge dc2a8a0860 on remote branch
Change-Id: I5b563b40fb7af41d16ac9fd7f17b1ff827d6c6c8
This commit is contained in:
commit
1d5dd7e8d7
14 changed files with 375 additions and 12 deletions
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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__ */
|
||||
|
|
|
|||
|
|
@ -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
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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 */
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in a new issue