Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 999bdb6b authored by abhinav kumar's avatar abhinav kumar Committed by Gerrit - the friendly Code Review server
Browse files

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
parent 11cc5336
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -7793,6 +7793,10 @@ struct wmi_roam_deauth_trigger_data {
 * @wtc_scan_mode: WTC scan mode
 * @wtc_rssi_th: Connected 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 {
	uint32_t roaming_mode;
@@ -7802,6 +7806,9 @@ struct wmi_roam_wtc_btm_trigger_data {
	uint32_t wtc_scan_mode;
	uint32_t wtc_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;
};

/**
+31 −1
Original line number Diff line number Diff line
@@ -13900,6 +13900,28 @@ static QDF_STATUS extract_ani_level_tlv(uint8_t *evt_buf,
#endif /* FEATURE_ANI_LEVEL_REQUEST */

#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
 * from the WMI_ROAM_STATS_EVENTID
@@ -13980,11 +14002,19 @@ extract_roam_trigger_stats_tlv(wmi_unified_t wmi_handle, void *evt_buf,
		trig->wtc_btm_trig_data.wtc_mode =
					src_data->vendor_specific1[3];
		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 =
					src_data->vendor_specific1[5];
		trig->wtc_btm_trig_data.wtc_candi_rssi_th =
					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;
	default:
		return QDF_STATUS_SUCCESS;