diff --git a/wmi/inc/wmi_unified_param.h b/wmi/inc/wmi_unified_param.h index f7335ff2a8..b5f2d9e61a 100644 --- a/wmi/inc/wmi_unified_param.h +++ b/wmi/inc/wmi_unified_param.h @@ -7536,6 +7536,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; @@ -7545,6 +7549,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; }; /** diff --git a/wmi/src/wmi_unified_tlv.c b/wmi/src/wmi_unified_tlv.c index a2d1ee473e..7ff1873510 100644 --- a/wmi/src/wmi_unified_tlv.c +++ b/wmi/src/wmi_unified_tlv.c @@ -14351,6 +14351,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 @@ -14431,11 +14453,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;