qcacld-3.0: Add 3 ini for data rssi check when roaming

3 ini:
roam_data_rssi_threshold_triggers
roam_data_rssi_threshold
rx_data_inactivity_time
If there's rx activity during latest rx_data_inactivity_time
and avg of data_rssi is better than roam_data_rssi_threshold, then
suppress roaming triggered by roam_data_rssi_threshold_triggers: low
RSSI or bg scan.

Change-Id: I5b41c4119e61392b50e52ab8ccb8650e5758f3b3
CRs-Fixed: 2768053
这个提交包含在:
Jianmin Zhu
2020-09-03 00:20:12 +08:00
提交者 snandini
父节点 233ac1b475
当前提交 e7c9718446
修改 11 个文件,包含 204 行新增6 行删除

查看文件

@@ -95,6 +95,10 @@ struct rssi_monitor_param {
* @roam_bad_rssi_thresh_offset_2g: Offset from Bad RSSI threshold for 2G
* to 5G Roam
* @bg_scan_client_bitmap: Bitmap used to identify the client scans to snoop
* @roam_data_rssi_threshold_triggers: triggers of bad data RSSI threshold to
* roam
* @roam_data_rssi_threshold: Bad data RSSI threshold to roam
* @rx_data_inactivity_time: Rx duration to check data RSSI
* @flags: Flags for Background Roaming
* Bit 0 : BG roaming enabled when we connect to 2G AP only and roaming
* to 5G AP only.
@@ -125,6 +129,9 @@ struct roam_offload_scan_rssi_params {
int8_t bg_scan_bad_rssi_thresh;
uint8_t roam_bad_rssi_thresh_offset_2g;
uint32_t bg_scan_client_bitmap;
uint32_t roam_data_rssi_threshold_triggers;
int32_t roam_data_rssi_threshold;
uint32_t rx_data_inactivity_time;
uint32_t flags;
};

查看文件

@@ -179,6 +179,7 @@ static QDF_STATUS send_roam_scan_offload_rssi_thresh_cmd_tlv(
wmi_roam_earlystop_rssi_thres_param *early_stop_thresholds = NULL;
wmi_roam_dense_thres_param *dense_thresholds = NULL;
wmi_roam_bg_scan_roaming_param *bg_scan_params = NULL;
wmi_roam_data_rssi_roaming_param *data_rssi_param = NULL;
len = sizeof(wmi_roam_scan_rssi_threshold_fixed_param);
len += WMI_TLV_HDR_SIZE; /* TLV for ext_thresholds*/
@@ -189,6 +190,8 @@ static QDF_STATUS send_roam_scan_offload_rssi_thresh_cmd_tlv(
len += sizeof(wmi_roam_dense_thres_param);
len += WMI_TLV_HDR_SIZE; /* TLV for BG Scan*/
len += sizeof(wmi_roam_bg_scan_roaming_param);
len += WMI_TLV_HDR_SIZE; /* TLV for data RSSI*/
len += sizeof(wmi_roam_data_rssi_roaming_param);
buf = wmi_buf_alloc(wmi_handle, len);
if (!buf)
return QDF_STATUS_E_NOMEM;
@@ -289,6 +292,26 @@ static QDF_STATUS send_roam_scan_offload_rssi_thresh_cmd_tlv(
WMITLV_GET_STRUCT_TLVLEN
(wmi_roam_bg_scan_roaming_param));
buf_ptr += sizeof(wmi_roam_bg_scan_roaming_param);
WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_STRUC,
sizeof(wmi_roam_data_rssi_roaming_param));
buf_ptr += WMI_TLV_HDR_SIZE;
data_rssi_param = (wmi_roam_data_rssi_roaming_param *)buf_ptr;
data_rssi_param->flags =
roam_req->roam_data_rssi_threshold_triggers;
data_rssi_param->roam_data_rssi_thres =
roam_req->roam_data_rssi_threshold;
data_rssi_param->rx_inactivity_ms =
roam_req->rx_data_inactivity_time;
WMITLV_SET_HDR(&data_rssi_param->tlv_header,
WMITLV_TAG_STRUC_wmi_roam_data_rssi_roaming_param,
WMITLV_GET_STRUCT_TLVLEN
(wmi_roam_data_rssi_roaming_param));
WMI_LOGD("Data rssi threshold: %d, triggers: 0x%x, rx time: %d",
data_rssi_param->roam_data_rssi_thres,
data_rssi_param->flags,
data_rssi_param->rx_inactivity_ms);
wmi_mtrace(WMI_ROAM_SCAN_RSSI_THRESHOLD, NO_SESSION, 0);
status = wmi_unified_cmd_send(wmi_handle, buf,
len, WMI_ROAM_SCAN_RSSI_THRESHOLD);
@@ -383,6 +406,7 @@ static QDF_STATUS send_roam_scan_offload_rssi_thresh_cmd_tlv(
wmi_roam_earlystop_rssi_thres_param *early_stop_thresholds = NULL;
wmi_roam_dense_thres_param *dense_thresholds = NULL;
wmi_roam_bg_scan_roaming_param *bg_scan_params = NULL;
wmi_roam_data_rssi_roaming_param *data_rssi_param = NULL;
len = sizeof(wmi_roam_scan_rssi_threshold_fixed_param);
len += WMI_TLV_HDR_SIZE; /* TLV for ext_thresholds*/
@@ -489,6 +513,22 @@ static QDF_STATUS send_roam_scan_offload_rssi_thresh_cmd_tlv(
WMITLV_GET_STRUCT_TLVLEN
(wmi_roam_bg_scan_roaming_param));
buf_ptr += sizeof(wmi_roam_bg_scan_roaming_param);
WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_STRUC,
sizeof(wmi_roam_data_rssi_roaming_param));
buf_ptr += WMI_TLV_HDR_SIZE;
data_rssi_param = (wmi_roam_data_rssi_roaming_param *)buf_ptr;
data_rssi_param->flags =
roam_req->roam_data_rssi_threshold_triggers;
data_rssi_param->roam_data_rssi_thres =
roam_req->roam_data_rssi_threshold;
data_rssi_param->rx_inactivity_ms =
roam_req->rx_data_inactivity_time;
WMITLV_SET_HDR(&data_rssi_param->tlv_header,
WMITLV_TAG_STRUC_wmi_roam_data_rssi_roaming_param,
WMITLV_GET_STRUCT_TLVLEN
(wmi_roam_data_rssi_roaming_param));
wmi_mtrace(WMI_ROAM_SCAN_RSSI_THRESHOLD, NO_SESSION, 0);
status = wmi_unified_cmd_send(wmi_handle, buf,
len, WMI_ROAM_SCAN_RSSI_THRESHOLD);