diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 19196afa5173..ebf846308762 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1051,6 +1051,8 @@ typedef enum { WMITLV_TAG_STRUC_wmi_nan_dmesg_event_fixed_param, WMITLV_TAG_STRUC_wmi_frame_inject_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_smartant_event_fixed_param, + WMITLV_TAG_STRUC_wmi_pdev_tbtt_offset_sync_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_pdev_rnr_bss_tbtt_info, } WMITLV_TAG_ID; /* @@ -1481,6 +1483,7 @@ typedef enum { OP(WMI_ROAM_GET_SCAN_CHANNEL_LIST_CMDID) \ OP(WMI_VDEV_GET_BIG_DATA_CMDID) \ OP(WMI_PDEV_FRAME_INJECT_CMDID) \ + OP(WMI_PDEV_TBTT_OFFSET_SYNC_CMDID) \ /* add new CMD_LIST elements above this line */ @@ -4302,6 +4305,12 @@ WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_GET_BIG_DATA_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, bufp, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_FRAME_INJECT_CMDID); +/* Get / Set RNR TBTT offset info */ +#define WMITLV_TABLE_WMI_PDEV_TBTT_OFFSET_SYNC_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_tbtt_offset_sync_cmd_fixed_param, wmi_pdev_tbtt_offset_sync_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_pdev_rnr_bss_tbtt_info, rnr_tbtt_info, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_TBTT_OFFSET_SYNC_CMDID); + /************************** TLV definitions of WMI events *******************************/ @@ -5797,6 +5806,7 @@ WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_SEND_BIG_DATA_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, msg, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_NAN_DMESG_EVENTID); + #ifdef __cplusplus } #endif diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 2da181033d21..05d3d669cf05 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -414,6 +414,14 @@ typedef enum { WMI_PDEV_DSM_FILTER_CMDID, /** enable/disable periodic frame injection */ WMI_PDEV_FRAME_INJECT_CMDID, + /* + * Pdev level command to: + * a) solicit @WMI_TBTTOFFSET_EXT_UPDATE_EVENTID having TBTT in qtime + * domain for all active vdevs or + * b) update one pdevs tbtt offset to another pdev for use in + * RNR TBTT offset calculation. + */ + WMI_PDEV_TBTT_OFFSET_SYNC_CMDID, /* VDEV (virtual device) specific commands */ /** vdev create */ @@ -3518,6 +3526,14 @@ typedef struct { * Bits 31:1 - Reserved */ A_UINT32 host_service_flags; + + /** @brief max_rnr_neighbours - +     * The Maximum number of neighbour RNR's from other SoC. +     * This limits the field @num_bss in @wmi_pdev_tbtt_offset_sync_cmd_fixed_param. +     * Value of 0 means crosss SoC TBTT offset syncronization not required and +     * @PDEV_TBTT_OFFSET_SYNC_CMD wouldn't be used. +     */ + A_UINT32 max_rnr_neighbours; } wmi_resource_config; #define WMI_MSDU_FLOW_AST_ENABLE_GET(msdu_flow_config0, ast_x) \ @@ -11722,6 +11738,7 @@ typedef struct { */ } wmi_tbtt_offset_event_fixed_param; +#define WMI_TBTT_OFFSET_INVALID 0xffffffff /* tbttoffset is not updated by FW */ typedef struct { A_UINT32 tlv_header;/* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_tbtt_offset_info */ /** unique id identifying the VDEV */ @@ -24211,6 +24228,49 @@ typedef struct { **/ } wmi_vdev_set_pcl_cmd_fixed_param; +/** command type for WMI_PDEV_TBTT_OFFSET_SYNC_CMDID */ +enum pdev_tbtt_offset_cmd_type +{ + WMI_PDEV_GET_TBTT_OFFSET, + WMI_PDEV_SET_TBTT_OFFSET, +}; + +/** Per neighbour TBTT offset information */ +typedef struct +{ + /** TLV tag and len, tag equals WMITLV_TAG_STRUC_wmi_pdev_tbtt_offset_info */ + A_UINT32 tlv_header; + /* neighbour bss mac address */ + wmi_mac_addr bss_mac; + /* neighbour bss beacon interval in TU */ + A_UINT32 beacon_intval; + /* neighbour bss operating class as defined in Annex E, IEEE80211 standard */ + A_UINT32 opclass; + /* neighbour bss operating channel index */ + A_UINT32 chan_idx; + /* neighbour bss next QTIME TBTT high 32 bit value */ + A_UINT32 next_qtime_tbtt_high; + /* neighbour bss next QTIME TBTT low 32 bit value */ + A_UINT32 next_qtime_tbtt_low; +} wmi_pdev_rnr_bss_tbtt_info; + +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_pdev_tbtt_offset_sync_cmd_fixed_param */ + A_UINT32 tlv_header; + /* + * PDEV identifier. Value WMI_PDEV_ID_SOC implies applicable to all pdevs + * on SoC else applicable only to specified pdev + */ + A_UINT32 pdev_id; + /* command_type from enum pdev_tbtt_offset_cmd_type */ + A_UINT32 cmd_type; + /* + * Following this structure is the TLV: + * struct wmi_pdev_rnr_bss_tbtt_info rnr_tbtt_info[num_rnr_tbtt_info]; + */ +} wmi_pdev_tbtt_offset_sync_cmd_fixed_param; + typedef enum { WLAN_2G_CAPABILITY = 0x1, WLAN_5G_CAPABILITY = 0x2, @@ -25484,6 +25544,7 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) WMI_RETURN_STRING(WMI_ROAM_GET_SCAN_CHANNEL_LIST_CMDID); WMI_RETURN_STRING(WMI_VDEV_GET_BIG_DATA_CMDID); WMI_RETURN_STRING(WMI_PDEV_FRAME_INJECT_CMDID); + WMI_RETURN_STRING(WMI_PDEV_TBTT_OFFSET_SYNC_CMDID); } return "Invalid WMI cmd"; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 66e808557364..bce04efd665d 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_ 793 +#define __WMI_REVISION_ 794 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work