diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 2a62360ef1..503a722ea4 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1115,6 +1115,8 @@ typedef enum { WMITLV_TAG_STRUC_wmi_regulatory_rule_ext_struct, WMITLV_TAG_STRUC_wmi_reg_chan_list_cc_event_ext_fixed_param, WMITLV_TAG_STRUC_wmi_ctrl_path_mem_stats_struct, + WMITLV_TAG_STRUC_wmi_twt_nudge_dialog_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_twt_nudge_dialog_complete_event_fixed_param, } WMITLV_TAG_ID; /* @@ -1567,6 +1569,7 @@ typedef enum { OP(WMI_REQUEST_UNIFIED_LL_GET_STA_CMDID) \ OP(WMI_QOS_NULL_FRAME_TX_SEND_CMDID) \ OP(WMI_PDEV_ENABLE_DURATION_BASED_TX_MODE_SELECTION_CMDID) \ + OP(WMI_TWT_NUDGE_DIALOG_CMDID) \ /* add new CMD_LIST elements above this line */ @@ -1825,6 +1828,7 @@ typedef enum { OP(WMI_TWT_SESSION_STATS_EVENTID) \ OP(WMI_SSCAN_EVT_MESSAGE_EVENTID) \ OP(WMI_QOS_NULL_FRAME_TX_COMPLETION_EVENTID) \ + OP(WMI_TWT_NUDGE_DIALOG_COMPLETE_EVENTID) \ /* add new EVT_LIST elements above this line */ @@ -4255,6 +4259,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_TWT_PAUSE_DIALOG_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_twt_resume_dialog_cmd_fixed_param, wmi_twt_resume_dialog_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_TWT_RESUME_DIALOG_CMDID); +/* TWT nudge dialog cmd */ +#define WMITLV_TABLE_WMI_TWT_NUDGE_DIALOG_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_twt_nudge_dialog_cmd_fixed_param, wmi_twt_nudge_dialog_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_TWT_NUDGE_DIALOG_CMDID); + /* B-TWT STA invitation cmd */ #define WMITLV_TABLE_WMI_TWT_BTWT_INVITE_STA_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_twt_btwt_invite_sta_cmd_fixed_param, wmi_twt_btwt_invite_sta_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) @@ -5958,6 +5967,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_TWT_PAUSE_DIALOG_COMPLETE_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_twt_resume_dialog_complete_event_fixed_param, wmi_twt_resume_dialog_complete_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_TWT_RESUME_DIALOG_COMPLETE_EVENTID); +/* nudging TWT dialog complete Event */ +#define WMITLV_TABLE_WMI_TWT_NUDGE_DIALOG_COMPLETE_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_twt_nudge_dialog_complete_event_fixed_param, wmi_twt_nudge_dialog_complete_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_TWT_NUDGE_DIALOG_COMPLETE_EVENTID); + /* inviting STA to B-TWT dialog complete Event */ #define WMITLV_TABLE_WMI_TWT_BTWT_INVITE_STA_COMPLETE_EVENTID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_twt_btwt_invite_sta_complete_event_fixed_param, wmi_twt_btwt_invite_sta_complete_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 35864da3c0..d7c83f901a 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -1298,6 +1298,7 @@ typedef enum { WMI_TWT_RESUME_DIALOG_CMDID, WMI_TWT_BTWT_INVITE_STA_CMDID, WMI_TWT_BTWT_REMOVE_STA_CMDID, + WMI_TWT_NUDGE_DIALOG_CMDID, /** WMI commands related to motion detection **/ WMI_MOTION_DET_CONFIG_PARAM_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_MOTION_DET), @@ -2010,6 +2011,7 @@ typedef enum { WMI_TWT_BTWT_INVITE_STA_COMPLETE_EVENTID, WMI_TWT_BTWT_REMOVE_STA_COMPLETE_EVENTID, WMI_TWT_SESSION_STATS_EVENTID, + WMI_TWT_NUDGE_DIALOG_COMPLETE_EVENTID, /** Events in Prototyping phase */ WMI_NDI_CAP_RSP_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_PROTOTYPE), @@ -27326,6 +27328,7 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) WMI_RETURN_STRING(WMI_REQUEST_UNIFIED_LL_GET_STA_CMDID); WMI_RETURN_STRING(WMI_QOS_NULL_FRAME_TX_SEND_CMDID); WMI_RETURN_STRING(WMI_PDEV_ENABLE_DURATION_BASED_TX_MODE_SELECTION_CMDID); + WMI_RETURN_STRING(WMI_TWT_NUDGE_DIALOG_CMDID); } return "Invalid WMI cmd"; @@ -28320,7 +28323,7 @@ typedef struct { wmi_mac_addr peer_macaddr; /* peer MAC address */ A_UINT32 dialog_id; /* TWT dialog ID */ A_UINT32 sp_offset_us; /* this long time after TWT resumed the 1st SP will start */ - A_UINT32 next_twt_size; /* Next TWT subfield Size, refer to IEEE 802.11ax sectin "9.4.1.60 TWT Information field" */ + A_UINT32 next_twt_size; /* Next TWT subfield Size, refer to IEEE 802.11ax section "9.4.1.60 TWT Information field" */ } wmi_twt_resume_dialog_cmd_fixed_param; /* status code of resuming TWT dialog */ @@ -28343,6 +28346,34 @@ typedef struct { A_UINT32 status; /* refer to WMI_RESUME_TWT_STATUS_T */ } wmi_twt_resume_dialog_complete_event_fixed_param; +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_twt_nudge_dialog_cmd_fixed_param */ + A_UINT32 vdev_id; /* VDEV identifier */ + wmi_mac_addr peer_macaddr; /* peer MAC address */ + A_UINT32 dialog_id; /* TWT dialog ID */ + A_UINT32 suspend_duration_ms; /* this long time after TWT paused the 1st SP will start (millisecond) */ + A_UINT32 next_twt_size; /* Next TWT subfield Size, refer to IEEE 802.11ax section "9.4.1.60 TWT Information field" */ +} wmi_twt_nudge_dialog_cmd_fixed_param; + +/* status code of nudging TWT dialog */ +typedef enum _WMI_TWT_NUDGE_STATUS_T { + WMI_NUDGE_TWT_STATUS_OK, /* nudging TWT dialog successfully completed */ + WMI_NUDGE_TWT_STATUS_DIALOG_ID_NOT_EXIST, /* TWT dialog ID doesn't exist */ + WMI_NUDGE_TWT_STATUS_INVALID_PARAM, /* invalid parameters */ + WMI_NUDGE_TWT_STATUS_DIALOG_ID_BUSY, /* FW is in the process of handling this dialog */ + WMI_NUDGE_TWT_STATUS_NO_RESOURCE, /* FW resource exhausted */ + WMI_NUDGE_TWT_STATUS_NO_ACK, /* peer AP/STA did not ACK the request/response frame */ + WMI_NUDGE_TWT_STATUS_UNKNOWN_ERROR, /* nudging TWT dialog failed with an unknown reason */ +} WMI_TWT_NUDGE_STATUS_T; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_twt_nudge_dialog_complete_event_fixed_param */ + A_UINT32 vdev_id; /* VDEV identifier */ + wmi_mac_addr peer_macaddr; /* peer MAC address */ + A_UINT32 dialog_id; /* TWT dialog ID */ + A_UINT32 status; /* refer to WMI_NUDGE_TWT_STATUS_T */ +} wmi_twt_nudge_dialog_complete_event_fixed_param; + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_twt_btwt_invite_sta_cmd_fixed_param */ A_UINT32 vdev_id; /* VDEV identifier */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index e1f6e47582..600858955c 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_ 910 +#define __WMI_REVISION_ 911 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work