diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index d28670db411e..14922014440c 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -975,6 +975,8 @@ typedef enum { WMITLV_TAG_STRUC_wmi_roam_idle_config_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_idle_trigger_monitor_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_stats_interference, + WMITLV_TAG_STRUC_wmi_roam_score_delta_param, + WMITLV_TAG_STRUC_wmi_roam_cnd_min_rssi_param, } WMITLV_TAG_ID; /* @@ -2556,7 +2558,9 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PEER_MCAST_GROUP_CMDID); #define WMITLV_TABLE_WMI_ROAM_AP_PROFILE(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_roam_ap_profile_fixed_param, wmi_roam_ap_profile_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_ap_profile, wmi_ap_profile, ap_profile, WMITLV_SIZE_FIX) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_roam_cnd_scoring_param, wmi_roam_cnd_scoring_param, roam_cnd_scoring_param, WMITLV_SIZE_FIX) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_roam_cnd_scoring_param, wmi_roam_cnd_scoring_param, roam_cnd_scoring_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_score_delta_param, roam_score_delta_param_list, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_cnd_min_rssi_param, roam_cnd_min_rssi_param_list, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_AP_PROFILE); diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 4d5a4bd2265b..8e8f3d5ae062 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -11640,6 +11640,11 @@ typedef struct { * If roam trigger reasons are unspecified, btm_bitmap will be 0x0. */ A_UINT32 btm_bitmap; + /* + * Consider AP as roam candidate only if AP score is better than + * btm_candidate_min_score for BTM roam trigger + */ + A_UINT32 btm_candidate_min_score; } wmi_btm_config_fixed_param; #define WMI_ROAM_5G_BOOST_PENALIZE_ALGO_FIXED 0x0 @@ -11672,6 +11677,12 @@ typedef struct { A_UINT32 roam_scan_period; /** Aging for Roam scans */ A_UINT32 roam_scan_age; + /** Inactivity monitoring time to consider device is in inactive state with data count is less than roam_inactive_count */ + A_UINT32 inactivity_time_period; /* units = milli seconds */ + /** Maximum allowed data packets count during inactivity_time_period */ + A_UINT32 roam_inactive_count; + /** New roam scan period after device is in inactivity state */ + A_UINT32 roam_scan_period_after_inactivity; /* units = milli seconds */ } wmi_roam_scan_period_fixed_param; /** @@ -12001,6 +12012,31 @@ typedef struct { A_UINT32 roam_score_delta_mask; } wmi_roam_cnd_scoring_param; +typedef struct { + A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_score_delta_param */ + /* Roam trigger reason ID from WMI_ROAM_TRIGGER_REASON_ID */ + A_UINT32 roam_trigger_reason; + /* Roam score delta in %. + * Consider AP as roam candidate only if AP score is at least + * roam_score_delta % better than connected AP score. + * Ex: roam_score_delta = 20, and connected AP score is 4000, + * then consider candidate AP only if its score is at least + * 4800 (= 4000 * 120%) + */ + A_UINT32 roam_score_delta; +} wmi_roam_score_delta_param; + +typedef struct { + A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_cnd_min_rssi_param */ + /* Roam trigger reason ID from WMI_ROAM_TRIGGER_REASON_ID */ + A_UINT32 roam_trigger_reason; + /* + * Consider AP as roam candidate only if AP rssi is better than + * candidate_min_rssi + */ + A_UINT32 candidate_min_rssi; /* units = dbm */ +} wmi_roam_cnd_min_rssi_param; + /** To match an open AP, the rs_authmode should be set to WMI_AUTH_NONE * and WMI_AP_PROFILE_FLAG_CRYPTO should be clear. * To match a WEP enabled AP, the rs_authmode should be set to WMI_AUTH_NONE @@ -12187,6 +12223,8 @@ typedef struct { * Following this structure is the TLV: * wmi_ap_profile ap_profile; <-- AP profile info * wmi_roam_cnd_scoring_param roam_cnd_scoring_param + * wmi_roam_score_delta_param roam_score_delta_param_list[] + * wmi_roam_cnd_min_rssi_param roam_cnd_min_rssi_param_list[] */ } wmi_roam_ap_profile_fixed_param; @@ -24706,6 +24744,18 @@ typedef struct { A_UINT32 monitor_time_window; /** BSS load threshold after which roam scan should trigger */ A_UINT32 bss_load_threshold; + /** rssi_2g_threshold + * If connected AP is in 2.4Ghz, then consider bss load roam triggered + * only if load % > bss_load_threshold && connected AP rssi is worse + * than rssi_2g_threshold. + */ + A_INT32 rssi_2g_threshold; /* units = dbm */ + /** rssi_5g_threshold + * If connected AP is in 5Ghz, then consider bss load roam triggered + * only if load % > bss_load_threshold && connected AP rssi is worse + * than rssi_5g_threshold. + */ + A_INT32 rssi_5g_threshold; /* units = dbm */ } wmi_roam_bss_load_config_cmd_fixed_param; /** Deauth roam trigger parameters */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 1afae172f8f3..289523065f6f 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -36,7 +36,7 @@ #define __WMI_VER_MINOR_ 0 /** WMI revision number has to be incremented when there is a * change that may or may not break compatibility. */ -#define __WMI_REVISION_ 650 +#define __WMI_REVISION_ 651 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work