diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 0c9fbb88dd01..4a0c53819751 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -861,6 +861,9 @@ typedef enum { WMITLV_TAG_STRUC_wmi_pdev_config_vendor_oui_action_fixed_param, WMITLV_TAG_STRUC_wmi_vendor_oui_ext, WMITLV_TAG_STRUC_wmi_roam_synch_frame_event_fixed_param, + WMITLV_TAG_STRUC_wmi_fd_send_from_host_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_enable_fils_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_host_swfda_event_fixed_param, } WMITLV_TAG_ID; /* @@ -1206,6 +1209,8 @@ typedef enum { OP(WMI_WLM_CONFIG_CMDID) \ OP(WMI_PDEV_UPDATE_CTLTABLE_REQUEST_CMDID) \ OP(WMI_PDEV_CONFIG_VENDOR_OUI_ACTION_CMDID) \ + OP(WMI_PDEV_SEND_FD_CMDID) \ + OP(WMI_ENABLE_FILS_CMDID) \ /* add new CMD_LIST elements above this line */ @@ -1395,6 +1400,7 @@ typedef enum { OP(WMI_PDEV_BSS_CHAN_INFO_EVENTID) \ OP(WMI_UNIT_TEST_EVENTID) \ OP(WMI_PDEV_UPDATE_CTLTABLE_EVENTID) \ + OP(WMI_HOST_SWFDA_EVENTID) \ /* add new EVT_LIST elements above this line */ @@ -2159,6 +2165,18 @@ WMITLV_CREATE_PARAM_STRUC(WMI_MGMT_TX_SEND_CMDID); WMITLV_CREATE_PARAM_STRUC(WMI_OFFCHAN_DATA_TX_SEND_CMDID); +/** PDEV send FILS Discovery frame cmd */ +#define WMITLV_TABLE_WMI_PDEV_SEND_FD_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_fd_send_from_host_cmd_fixed_param, wmi_fd_send_from_host_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) + +WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_SEND_FD_CMDID); + +/** Enable or Disable Fast Initial Link Setup (FILS) feature cmd */ +#define WMITLV_TABLE_WMI_ENABLE_FILS_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_enable_fils_cmd_fixed_param, wmi_enable_fils_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) + +WMITLV_CREATE_PARAM_STRUC(WMI_ENABLE_FILS_CMDID); + /* ADD clear response Cmd */ #define WMITLV_TABLE_WMI_ADDBA_CLEAR_RESP_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_addba_clear_resp_cmd_fixed_param, wmi_addba_clear_resp_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) @@ -3872,6 +3890,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_OEM_DMA_BUF_RELEASE_EVENTID); WMITLV_CREATE_PARAM_STRUC(WMI_HOST_SWBA_EVENTID); +/* HOST SWFDA Event requesting host to queue a FILS Discovery frame for transmission */ +#define WMITLV_TABLE_WMI_HOST_SWFDA_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_host_swfda_event_fixed_param, wmi_host_swfda_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + +WMITLV_CREATE_PARAM_STRUC(WMI_HOST_SWFDA_EVENTID); /* Update stats Event */ #define WMITLV_TABLE_WMI_UPDATE_STATS_EVENTID(id,op,buf,len)\ diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 84bfb17060a2..d1fdbc5bda06 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -520,6 +520,8 @@ typedef enum { WMI_MGMT_TX_SEND_CMDID, /** Transmit data frame by reference */ WMI_OFFCHAN_DATA_TX_SEND_CMDID, + /** transmit FILS Discovery frame by value */ + WMI_PDEV_SEND_FD_CMDID, /** commands to directly control ba negotiation directly from host. only used in test mode */ @@ -595,6 +597,8 @@ typedef enum { WMI_ROAM_PER_CONFIG_CMDID, /** configure BSS Transition Management (BTM) offload for roaming */ WMI_ROAM_BTM_CONFIG_CMDID, + /** Enable or Disable Fast Initial Link Setup (FILS) feature */ + WMI_ENABLE_FILS_CMDID, /** offload scan specific commands */ /** set offload scan AP profile */ @@ -1256,6 +1260,9 @@ typedef enum { /** Event for offchan data TX completion event */ WMI_OFFCHAN_DATA_TX_COMPLETION_EVENTID, + /** software FILS Discovery Frame alert event to Host, requesting host to Queue an FD frame for transmission */ + WMI_HOST_SWFDA_EVENTID, + /* ADDBA Related WMI Events*/ /** Indication the completion of the prior WMI_PEER_TID_DELBA_CMDID(initiator) */ @@ -8686,6 +8693,15 @@ typedef struct { #define WMI_MAX_AP_VDEV 16 +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_host_swfda_event_fixed_param */ + /** vdev_id identifying the VDEV for which FILS should be generated */ + A_UINT32 vdev_id; + /** time (in TU) at which current FILS Discovery frame is scheduled for Tx */ + A_UINT32 fils_tt; + /** next TBTT time (in TU) for this vdev */ + A_UINT32 tbtt; +} wmi_host_swfda_event_fixed_param; typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_tbtt_offset_event_fixed_param */ @@ -10167,6 +10183,28 @@ typedef struct wmi_pdev_send_bcn { wmi_bcn_send_from_host_cmd_fixed_param bcn_cmd[1]; } wmi_pdev_send_bcn_cmd_t; +typedef struct wmi_fd_send_from_host { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_fd_send_from_host_cmd_fixed_param */ + A_UINT32 vdev_id; + A_UINT32 data_len; + union { + A_UINT32 frag_ptr; /* Physical address of the frame */ + A_UINT32 frag_ptr_lo; /* LSBs of physical address of the frame */ + }; + A_UINT32 frag_ptr_hi; /* MSBs of physical address of the frame */ + A_UINT32 frame_ctrl; /* frame ctrl to setup PPDU desc */ +} wmi_fd_send_from_host_cmd_fixed_param; + +/* + * WMI command structure for FILS feature enable/disable + */ +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_enable_fils_cmd_fixed_param */ + /* VDEV identifier */ + A_UINT32 vdev_id; + A_UINT32 fd_period; /* non-zero - enable Fils Discovery frames with this period (in TU), 0 - disable FD frames */ +} wmi_enable_fils_cmd_fixed_param; + /* * WMI_ROAM_AP_PROFILE: AP profile of connected AP for roaming. */ @@ -20377,6 +20415,8 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) WMI_RETURN_STRING(WMI_WLM_CONFIG_CMDID); WMI_RETURN_STRING(WMI_PDEV_UPDATE_CTLTABLE_REQUEST_CMDID); WMI_RETURN_STRING(WMI_PDEV_CONFIG_VENDOR_OUI_ACTION_CMDID); + WMI_RETURN_STRING(WMI_PDEV_SEND_FD_CMDID); + WMI_RETURN_STRING(WMI_ENABLE_FILS_CMDID; } return "Invalid WMI cmd"; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 848f3d3d62c9..173dce4b6b41 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_ 450 +#define __WMI_REVISION_ 451 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work