qcacmn: Add support to print candidate rssi in kmsg

First Requirement:
In case of WTC_BTM roam trigger reason, if FW reports rssi
threshold for 5G and 6G AP via wmi_roam_trigger_reason,
Host should print it in kmsg.

If wtc_candi_rssi_ext_present is set (1), It means fw
reports 5g and 6g candidate rssi (new firmware case).
If wtc_candi_rssi_ext_present is clear (0), It means fw
doesn’t report 5g and 6g candidate rssi (old firmware case).

Host use flag "wtc_candi_rssi_ext_present" to keep backward
compatibility.

Second requirement:
As per user space, value for scan mode in WTC command, is
like below:
0: no Scan, 1: partial scan and 2: full scan.

For NO scan case, FW sends value
ROAM_TRIGGER_SCAN_MODE_NO_SCAN_DISCONNECTION (3)
in wmi_roam_trigger_reason-> wtc_scan_mode. When driver receives
WTC scan mode as ROAM_TRIGGER_SCAN_MODE_NO_SCAN_DISCONNECTION,
it should print value as 0 instead of 3.

Convert WTC scan mode comes from FW to
wmi_configure_roam_trigger_parameters->scan_mode to make it
compatible to WTC command.

Change-Id: I8266460aac1272d345e4349c2ca52b4f9a745d4c
CRs-Fixed: 2965362
This commit is contained in:
abhinav kumar
2021-06-09 10:45:10 +05:30
committed by Madan Koyyalamudi
parent fa7cf78ebf
commit 96f19b772c
2 changed files with 38 additions and 1 deletions

View File

@@ -7536,6 +7536,10 @@ struct wmi_roam_deauth_trigger_data {
* @wtc_scan_mode: WTC scan mode * @wtc_scan_mode: WTC scan mode
* @wtc_rssi_th: Connected AP threshold * @wtc_rssi_th: Connected AP threshold
* @wtc_candi_rssi_th: Candidate AP threshold * @wtc_candi_rssi_th: Candidate AP threshold
* @wtc_candi_rssi_ext_present: Flag to notify that whether fw sends rssi
* threshold for 5g & 6g AP to host or not
* @wtc_candi_rssi_th_5g: 5g candidate AP rssi threshold
* @wtc_candi_rssi_th_6g: 6g candidate AP rssi threshold
*/ */
struct wmi_roam_wtc_btm_trigger_data { struct wmi_roam_wtc_btm_trigger_data {
uint32_t roaming_mode; uint32_t roaming_mode;
@@ -7545,6 +7549,9 @@ struct wmi_roam_wtc_btm_trigger_data {
uint32_t wtc_scan_mode; uint32_t wtc_scan_mode;
uint32_t wtc_rssi_th; uint32_t wtc_rssi_th;
uint32_t wtc_candi_rssi_th; uint32_t wtc_candi_rssi_th;
uint32_t wtc_candi_rssi_ext_present;
uint32_t wtc_candi_rssi_th_5g;
uint32_t wtc_candi_rssi_th_6g;
}; };
/** /**

View File

@@ -14351,6 +14351,28 @@ static QDF_STATUS extract_ani_level_tlv(uint8_t *evt_buf,
#endif /* FEATURE_ANI_LEVEL_REQUEST */ #endif /* FEATURE_ANI_LEVEL_REQUEST */
#ifdef WLAN_FEATURE_ROAM_OFFLOAD #ifdef WLAN_FEATURE_ROAM_OFFLOAD
/**
* convert_wtc_scan_mode() - Function to convert TLV specific
* ROAM_TRIGGER_SCAN_MODE scan mode to unified Roam trigger scan mode enum
* @scan_mode: scan freq scheme coming from firmware
*
* Return: ROAM_TRIGGER_SCAN_MODE
*/
static enum roam_scan_freq_scheme
convert_wtc_scan_mode(WMI_ROAM_TRIGGER_SCAN_MODE scan_mode)
{
switch (scan_mode) {
case ROAM_TRIGGER_SCAN_MODE_NO_SCAN_DISCONNECTION:
return ROAM_SCAN_FREQ_SCHEME_NO_SCAN;
case ROAM_TRIGGER_SCAN_MODE_PARTIAL:
return ROAM_SCAN_FREQ_SCHEME_PARTIAL_SCAN;
case ROAM_TRIGGER_SCAN_MODE_FULL:
return ROAM_SCAN_FREQ_SCHEME_FULL_SCAN;
default:
return ROAM_SCAN_FREQ_SCHEME_NONE;
}
}
/** /**
* extract_roam_trigger_stats_tlv() - Extract the Roam trigger stats * extract_roam_trigger_stats_tlv() - Extract the Roam trigger stats
* from the WMI_ROAM_STATS_EVENTID * from the WMI_ROAM_STATS_EVENTID
@@ -14431,11 +14453,19 @@ extract_roam_trigger_stats_tlv(wmi_unified_t wmi_handle, void *evt_buf,
trig->wtc_btm_trig_data.wtc_mode = trig->wtc_btm_trig_data.wtc_mode =
src_data->vendor_specific1[3]; src_data->vendor_specific1[3];
trig->wtc_btm_trig_data.wtc_scan_mode = trig->wtc_btm_trig_data.wtc_scan_mode =
src_data->vendor_specific1[4]; convert_wtc_scan_mode(src_data->vendor_specific1[4]);
trig->wtc_btm_trig_data.wtc_rssi_th = trig->wtc_btm_trig_data.wtc_rssi_th =
src_data->vendor_specific1[5]; src_data->vendor_specific1[5];
trig->wtc_btm_trig_data.wtc_candi_rssi_th = trig->wtc_btm_trig_data.wtc_candi_rssi_th =
src_data->vendor_specific1[6]; src_data->vendor_specific1[6];
trig->wtc_btm_trig_data.wtc_candi_rssi_ext_present =
src_data->vendor_specific2[0];
trig->wtc_btm_trig_data.wtc_candi_rssi_th_5g =
src_data->vendor_specific2[1];
trig->wtc_btm_trig_data.wtc_candi_rssi_th_6g =
src_data->vendor_specific2[2];
return QDF_STATUS_SUCCESS; return QDF_STATUS_SUCCESS;
default: default:
return QDF_STATUS_SUCCESS; return QDF_STATUS_SUCCESS;