diff options
| -rwxr-xr-x | fw/wmi_tlv_defs.h | 21 | ||||
| -rwxr-xr-x | fw/wmi_unified.h | 76 | ||||
| -rwxr-xr-x | fw/wmi_version.h | 2 |
3 files changed, 98 insertions, 1 deletions
diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 0316ca756402..a3b33c0aa98f 100755 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -971,6 +971,9 @@ typedef enum { WMITLV_TAG_STRUC_wmi_pdev_set_rap_config_on_sta_ps_tlv_param, WMITLV_TAG_STRUC_wmi_pdev_rap_info_event_fixed_param, WMITLV_TAG_STRUC_wmi_sta_tdcc_config_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_roam_deauth_config_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_roam_idle_config_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_idle_trigger_monitor_cmd_fixed_param, } WMITLV_TAG_ID; /* @@ -1366,6 +1369,9 @@ typedef enum { OP(WMI_VDEV_GET_MWS_COEX_INFO_CMDID) \ OP(WMI_REQUEST_WLM_STATS_CMDID) \ OP(WMI_PDEV_SET_RAP_CONFIG_CMDID) \ + OP(WMI_ROAM_DEAUTH_CONFIG_CMDID) \ + OP(WMI_ROAM_IDLE_CONFIG_CMDID) \ + OP(WMI_IDLE_TRIGGER_MONITOR_CMDID) \ /* add new CMD_LIST elements above this line */ @@ -3019,6 +3025,21 @@ WMITLV_CREATE_PARAM_STRUC(WMI_REQUEST_ROAM_SCAN_STATS_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_roam_bss_load_config_cmd_fixed_param, wmi_roam_bss_load_config_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_BSS_LOAD_CONFIG_CMDID); +/* Deauth roam trigger parameters */ +#define WMITLV_TABLE_WMI_ROAM_DEAUTH_CONFIG_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_roam_deauth_config_cmd_fixed_param, wmi_roam_deauth_config_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_DEAUTH_CONFIG_CMDID); + +/* Idle roam trigger parameters */ +#define WMITLV_TABLE_WMI_ROAM_IDLE_CONFIG_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_roam_idle_config_cmd_fixed_param, wmi_roam_idle_config_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_IDLE_CONFIG_CMDID); + +/* Screen Status Command parameters */ +#define WMITLV_TABLE_WMI_IDLE_TRIGGER_MONITOR_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_idle_trigger_monitor_cmd_fixed_param, wmi_idle_trigger_monitor_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_IDLE_TRIGGER_MONITOR_CMDID); + #define WMITLV_TABLE_WMI_ROAM_BLACKLIST_EVENTID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_roam_blacklist_event_fixed_param, wmi_roam_blacklist_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_blacklist_with_timeout_tlv_param, blacklist_with_timeout, WMITLV_SIZE_VAR) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 42df52f72288..0be5904c1977 100755 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -693,6 +693,10 @@ typedef enum { WMI_REQUEST_ROAM_SCAN_STATS_CMDID, /** Configure BSS load parameters for roam trigger */ WMI_ROAM_BSS_LOAD_CONFIG_CMDID, + /** Configure deauth roam trigger parameters */ + WMI_ROAM_DEAUTH_CONFIG_CMDID, + /** Configure idle roam trigger parameters */ + WMI_ROAM_IDLE_CONFIG_CMDID, /** offload scan specific commands */ /** set offload scan AP profile */ @@ -968,6 +972,8 @@ typedef enum { WMI_RUNTIME_DPD_RECAL_CMDID, /* get TX power for input HALPHY parameters */ WMI_GET_TPC_POWER_CMDID, + /* Specify when to start monitoring for idle state */ + WMI_IDLE_TRIGGER_MONITOR_CMDID, /* Offload 11k related requests */ WMI_11K_OFFLOAD_REPORT_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_11K_OFFLOAD), @@ -23755,6 +23761,9 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) WMI_RETURN_STRING(WMI_REQUEST_WLM_STATS_CMDID); WMI_RETURN_STRING(WMI_PDEV_SET_RAP_CONFIG_CMDID); WMI_RETURN_STRING(WMI_STA_TDCC_CONFIG_CMDID); + WMI_RETURN_STRING(WMI_ROAM_DEAUTH_CONFIG_CMDID); + WMI_RETURN_STRING(WMI_ROAM_IDLE_CONFIG_CMDID); + WMI_RETURN_STRING(WMI_IDLE_TRIGGER_MONITOR_CMDID); } return "Invalid WMI cmd"; @@ -24799,6 +24808,8 @@ typedef enum { WMI_ROAM_TRIGGER_REASON_BTM, WMI_ROAM_TRIGGER_REASON_UNIT_TEST, WMI_ROAM_TRIGGER_REASON_BSS_LOAD, + WMI_ROAM_TRIGGER_REASON_DEAUTH, + WMI_ROAM_TRIGGER_REASON_IDLE, WMI_ROAM_TRIGGER_REASON_MAX, } WMI_ROAM_TRIGGER_REASON_ID; @@ -24838,6 +24849,71 @@ typedef struct { A_UINT32 bss_load_threshold; } wmi_roam_bss_load_config_cmd_fixed_param; +/** Deauth roam trigger parameters */ +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_deauth_config_cmd_fixed_param */ + A_UINT32 vdev_id; + /* 1-Enable, 0-Disable */ + A_UINT32 enable; +} wmi_roam_deauth_config_cmd_fixed_param; + +/** IDLE roam trigger parameters */ +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_idle_config_cmd_fixed_param */ + A_UINT32 vdev_id; + /* 1-Enable, 0-Disable */ + A_UINT32 enable; + /* Connected AP band. 0 - Any Band, 1 - 2.4Ghz Band, 2 - 5Ghz Band */ + A_UINT32 band; + /* Trigger Idle roaming only if rssi change of connected AP is within rssi_delta during idle time */ + A_UINT32 rssi_delta; /* units = dB */ + /* Trigger idle roam only if connected RSSI is better than min_rssi */ + A_INT32 min_rssi; /* units = dBm */ + /* Inactive/Idle time duration + * After screen is OFF (or whatever condition is suitable in a given + * system as an indication that the system is likely idle) + * and if below conditions are met then idle roaming will be triggered. + * 1. Connected AP band is matching with band value configured + * 2. No TX/RX data for more than idle_time configured + * or TX/RX data packets count is less than data_packet_count + * during idle_time + * 3. Connected AP rssi change is not more than rssi_delta + * 4. Connected AP rssi is better than min_rssi. + * The purpose of this trigger for idle scan is to issue the scan + * even if (moreover, particularly if) the connection to the + * existing AP is still good, to keep the STA from getting locked + * onto the current good AP and thus missing out on an available + * even better AP. This min_rssi threshold can be used to adjust + * the connection quality level at which the STA considers doing an + * idle scan. + */ + A_UINT32 idle_time; /* units = seconds */ + /* Maximum allowed data packets count during idle time */ + A_UINT32 data_packet_count; +} wmi_roam_idle_config_cmd_fixed_param; + +/** trigger to start/stop monitoring if system is idle command parameters */ +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_idle_trigger_monitor_cmd_fixed_param */ + /* idle_trigger_monitor values are from WMI_IDLE_TRIGGER_MONITOR_ID */ + A_UINT32 idle_trigger_monitor; +} wmi_idle_trigger_monitor_cmd_fixed_param; + +typedef enum { + WMI_IDLE_TRIGGER_MONITOR_NONE = 0, /* no-op */ + /* IDLE_TRIGGER_MONITOR_ON + * The host's screen has turned off (or some other event indicating that + * the system is likely idle) - + * start monitoring to check if the system is idle. + */ + WMI_IDLE_TRIGGER_MONITOR_ON, + /* IDLE_TRIGGER_MONITOR_OFF + * The host's screen has turned on (or some other event indicating that + * the system is not idle) + */ + WMI_IDLE_TRIGGER_MONITOR_OFF, +} WMI_SCREEN_STATUS_NOTIFY_ID; + typedef struct { /* * The timestamp is in units of ticks of a 19.2MHz clock. diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 84828e270f54..295c6ecc5a9d 100755 --- 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_ 646 +#define __WMI_REVISION_ 647 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work |
