fw-api: CL 12315625 - update fw common interface files

Change-Id: Idf559950e0eb337b10d55eddd4595c8d463343da
WMI: add latency config cmd msgs + PDEV_PARAM_LOW_LATENCY_MODE defs
CRs-Fixed: 2262693
This commit is contained in:
spuligil
2020-12-10 06:00:45 -08:00
committed by snandini
parent d819d8888d
commit 180149df48
3 changed files with 297 additions and 1 deletions

View File

@@ -266,6 +266,7 @@ typedef enum {
WMI_GRP_CFR_CAPTURE, /* 0x44 */
WMI_GRP_ATM, /* 0x45 ATM (Air Time Management group) */
WMI_GRP_VENDOR, /* 0x46 vendor specific group */
WMI_GRP_LATENCY, /* 0x47 TID/AC level latency config */
} WMI_GRP_ID;
#define WMI_CMD_GRP_START_ID(grp_id) (((grp_id) << 12) | 0x1)
@@ -1352,6 +1353,12 @@ typedef enum {
WMI_VENDOR_VDEV_CMDID,
WMI_VENDOR_PEER_CMDID,
/** Further vendor cmd IDs can be added below **/
/** WMI commands specific to Tid level Latency config **/
/** VDEV Latency Config command */
WMI_VDEV_TID_LATENCY_CONFIG_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_LATENCY),
/** TID Latency Request command */
WMI_PEER_TID_LATENCY_CONFIG_CMDID,
} WMI_CMD_ID;
typedef enum {
@@ -7104,6 +7111,9 @@ typedef enum {
*/
WMI_PDEV_PARAM_SET_MESH_PARAMS,
/* Param to enable low latency mode */
WMI_PDEV_PARAM_LOW_LATENCY_SCHED_MODE,
} WMI_PDEV_PARAM;
#define WMI_PDEV_ONLY_BSR_TRIG_IS_ENABLED(trig_type) WMI_GET_BITS(trig_type, 0, 1)
@@ -24696,6 +24706,274 @@ typedef struct {
*/
} wmi_atf_grp_wmm_ac_cfg_request_fixed_param;
#define WMI_VDEV_LATENCY_TIDNUM_BIT_POS 0
#define WMI_VDEV_LATENCY_TIDNUM_NUM_BITS 8
#define WMI_VDEV_LATENCY_GET_TIDNUM(vdev_latency_info) \
WMI_GET_BITS(vdev_latency_info, WMI_VDEV_LATENCY_TIDNUM_BIT_POS, WMI_VDEV_LATENCY_TIDNUM_NUM_BITS)
#define WMI_VDEV_LATENCY_SET_TIDNUM(vdev_latency_info,val) \
WMI_SET_BITS(vdev_latency_info, WMI_VDEV_LATENCY_TIDNUM_BIT_POS, WMI_VDEV_LATENCY_TIDNUM_NUM_BITS, val)
#define WMI_VDEV_LATENCY_AC_BIT_POS 8
#define WMI_VDEV_LATENCY_AC_NUM_BITS 2
#define WMI_VDEV_LATENCY_GET_AC(vdev_latency_info) \
WMI_GET_BITS(vdev_latency_info, WMI_VDEV_LATENCY_AC_BIT_POS, WMI_VDEV_LATENCY_AC_NUM_BITS)
#define WMI_VDEV_LATENCY_SET_AC(vdev_latency_info,val) \
WMI_SET_BITS(vdev_latency_info, WMI_VDEV_LATENCY_AC_BIT_POS, WMI_VDEV_LATENCY_AC_NUM_BITS, val)
#define WMI_VDEV_LATENCY_DL_VALID_BIT_POS 10
#define WMI_VDEV_LATENCY_DL_VALID_NUM_BITS 1
#define WMI_VDEV_LATENCY_GET_DL_VALID(vdev_latency_info) \
WMI_GET_BITS(vdev_latency_info, WMI_VDEV_LATENCY_DL_VALID_BIT_POS, WMI_VDEV_LATENCY_DL_VALID_NUM_BITS)
#define WMI_VDEV_LATENCY_SET_DL_VALID(vdev_latency_info,val) \
WMI_SET_BITS(vdev_latency_info, WMI_VDEV_LATENCY_DL_VALID_BIT_POS, WMI_VDEV_LATENCY_DL_VALID_NUM_BITS, val)
#define WMI_VDEV_LATENCY_UL_VALID_BIT_POS 11
#define WMI_VDEV_LATENCY_UL_VALID_NUM_BITS 1
#define WMI_VDEV_LATENCY_GET_UL_VALID(vdev_latency_info) \
WMI_GET_BITS(vdev_latency_info,WMI_VDEV_LATENCY_UL_VALID_BIT_POS, WMI_VDEV_LATENCY_UL_VALID_NUM_BITS)
#define WMI_VDEV_LATENCY_SET_UL_VALID(vdev_latency_info,val) \
WMI_SET_BITS(vdev_latency_info, WMI_VDEV_LATENCY_UL_VALID_BIT_POS, WMI_VDEV_LATENCY_UL_VALID_NUM_BITS, val)
typedef struct {
/** TLV tag and len; tag equals
* WMITLV_TAG_STRUC_wmi_vdev_latency_info
*/
A_UINT32 tlv_header;
/*
* Maximum expected average delay between 2 schedules in milliseconds
* of given TID type when it has active traffic.
* 0x0 is considered as invalid service interval.
*/
A_UINT32 service_interval;
/* burst_size:
* The number of bytes transmitted (in DL TIDs) / received (in UL ACs)
* in service interval.
*/
A_UINT32 burst_size;
/* max_latency:
* The maximum end to end latency expectation, in milliseconds.
* If this value is 0x0, it shall be ignored.
*/
A_UINT32 max_latency;
/* max_per:
* The maximum PER (as a percent) for the peer-TID, in range 1 - 100.
* If this value is 0x0, it shall be ignored.
*/
A_UINT32 max_per;
/* min_tput:
* The minimum guaranteed throughput to the peer-TID, in Kbps.
* If this value is 0x0, it shall be ignored.
*/
A_UINT32 min_tput;
/* vdev_latency_info
* Bits 12 - 31 - Reserved (Shall be zero)
* Bit 11 - UL latency config indication.
* If this bit is set then this latency info will
* be used when triggering UL traffic. Until the
* AC specified in bits 8-9 has transferred at least
* burst_size amount of UL data within the service
* period, the AP will continue sending UL triggers
* when the STA has data of the specified access
* category ready to transmit.
* Note that the TID specified in bits 0-7 does not
* apply to UL; the TID-to-AC mapping applied to DL
* data that can be adjusted by the TID specified
* in bits 0-7 and the AC specified in bits 8-9 is
* distinct from the TID-to-AC mapping applied to
* UL data.
* Bit 10 - DL latency config indication. If the bit is set
* then DL TID will use this latency config.
* Bits 8 - 9 - This bit has info on the custom AC of DL TID.
* Also if bit 11 is set, the AP will apply some
* of these latency specs (in particular, burst_size)
* to UL traffic for this AC, by sending UL triggers
* until the desired amount of data has been received
* within the service period.
* Bits 0 - 7 - Specifies the TID of interest that corresponds
* to the AC specified in bits 8-9. This can be
* used to adjust the TID-to-AC mapping applied to
* DL data (if bit 10 is set).
*/
A_UINT32 vdev_latency_info;
} wmi_vdev_latency_info;
/*
* Currently wmi_vdev_tid_latency_config_fixed_param will be sent per
* data tid to map the AC.
* Also to configure VDEV level latency config to be used by all TIDs
* based on the mapping.
* VDEV restart is expected during this command
*/
typedef struct {
A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_vdev_tid_latency_config_fixed_param */
A_UINT32 pdev_id;
A_UINT32 vdev_id;
/*
* Following this structure is the TLV:
* struct wmi_vdev_latency_info vdev_latency_info[];
*/
} wmi_vdev_tid_latency_config_fixed_param ;
#define WMI_TID_LATENCY_TIDNUM_BIT_POS 0
#define WMI_TID_LATENCY_TIDNUM_NUM_BITS 8
#define WMI_TID_LATENCY_GET_TIDNUM(latency_tid_info) \
WMI_GET_BITS(latency_tid_info, WMI_TID_LATENCY_TIDNUM_BIT_POS, WMI_TID_LATENCY_TIDNUM_NUM_BITS)
#define WMI_TID_LATENCY_SET_TIDNUM(latency_tid_info,val) \
WMI_SET_BITS(latency_tid_info, WMI_TID_LATENCY_TIDNUM_BIT_POS, WMI_TID_LATENCY_TIDNUM_NUM_BITS, val)
#define WMI_TID_LATENCY_AC_BIT_POS 8
#define WMI_TID_LATENCY_AC_NUM_BITS 2
#define WMI_TID_LATENCY_GET_AC(latency_tid_info) \
WMI_GET_BITS(latency_tid_info, WMI_TID_LATENCY_AC_BIT_POS , WMI_TID_LATENCY_AC_NUM_BITS)
#define WMI_TID_LATENCY_SET_AC(latency_tid_info,val) \
WMI_SET_BITS(latency_tid_info, WMI_TID_LATENCY_AC_BIT_POS , WMI_TID_LATENCY_AC_NUM_BITS, val)
#define WMI_TID_LATENCY_DL_ENABLE_BIT_POS 10
#define WMI_TID_LATENCY_DL_ENABLE_NUM_BITS 1
#define WMI_TID_LATENCY_GET_DL_ENABLE(latency_tid_info) \
WMI_GET_BITS(latency_tid_info,WMI_TID_LATENCY_DL_ENABLE_BIT_POS, WMI_TID_LATENCY_DL_ENABLE_NUM_BITS)
#define WMI_TID_LATENCY_SET_DL_ENABLE(latency_tid_info,val) \
WMI_SET_BITS(latency_tid_info,WMI_TID_LATENCY_DL_ENABLE_BIT_POS, WMI_TID_LATENCY_DL_ENABLE_NUM_BITS, val)
#define WMI_TID_LATENCY_UL_ENABLE_BIT_POS 11
#define WMI_TID_LATENCY_UL_ENABLE_NUM_BITS 1
#define WMI_TID_LATENCY_GET_UL_ENABLE(latency_tid_info) \
WMI_GET_BITS(latency_tid_info,WMI_TID_LATENCY_UL_ENABLE_BIT_POS, WMI_TID_LATENCY_UL_ENABLE_NUM_BITS)
#define WMI_TID_LATENCY_SET_UL_ENABLE(latency_tid_info,val) \
WMI_SET_BITS(latency_tid_info,WMI_TID_LATENCY_UL_ENABLE_BIT_POS, WMI_TID_LATENCY_UL_ENABLE_NUM_BITS, val)
#define WMI_LATENCY_BURST_SIZE_SUM_BIT_POS 12
#define WMI_LATENCY_BURST_SIZE_SUM_NUM_BITS 2
#define WMI_LATENCY_GET_BURST_SIZE_SUM(latency_tid_info) \
WMI_GET_BITS(latency_tid_info, WMI_LATENCY_BURST_SIZE_SUM_BIT_POS, WMI_LATENCY_BURST_SIZE_SUM_NUM_BITS)
#define WMI_LATENCY_SET_BURST_SIZE_SUM(latency_tid_info,val) \
WMI_SET_BITS(latency_tid_info, WMI_LATENCY_BURST_SIZE_SUM_BIT_POS, WMI_LATENCY_BURST_SIZE_SUM_NUM_BITS, val)
#define WMI_LATENCY_MSDUQ_ID_BIT_POS 14
#define WMI_LATENCY_MSDUQ_ID_NUM_BITS 4
#define WMI_LATENCY_GET_MSDUQ_ID(latency_tid_info) \
WMI_GET_BITS(latency_tid_info, WMI_LATENCY_MSDUQ_ID_BIT_POS, WMI_LATENCY_MSDUQ_ID_NUM_BITS)
#define WMI_LATENCY_SET_MSDUQ_ID(latency_tid_info,val) \
WMI_SET_BITS(latency_tid_info, WMI_LATENCY_MSDUQ_ID_BIT_POS, WMI_LATENCY_MSDUQ_ID_NUM_BITS, val)
typedef struct {
/** TLV tag and len; tag equals
* WMITLV_TAG_STRUC_wmi_tid_latency_info
*/
A_UINT32 tlv_header;
wmi_mac_addr dest_macaddr; /* Mac address of end client */
/*
* Maximum expected average delay between 2 schedules in milliseconds
* of given TID type when it has active traffic.
* 0x0 is considered as invalid service interval.
*/
A_UINT32 service_interval;
/*
* Cumulative number of bytes are expected to be transmitted or
* received in the service interval when this specific Peer-TID
* has active traffic.
* If cumulative number of bytes is 0x0, it is considered as
* invalid burst size. In that case, firmware would try to transmit
* and receive as many bytes as it can for this specific Peer-TID.
* This burst size will be added or subtracted from vdev burst size
* based on burst size sum bit in latency tid info.
* The VDEV burst size will be considered to be 0 when no VDEV latency
* command is received.
* If host needs to set burst size for a peer then they can use the
* peer cmd and set burst size sum bit to 1.
*/
A_UINT32 burst_size_diff;
/* max_latency:
* The maximum end to end latency expectation, in milliseconds.
* If this value is 0x0, it shall be ignored.
*/
A_UINT32 max_latency;
/* max_per:
* The maximum PER (as a percent) for the peer-TID, in range 1 - 100
* If this value is 0x0, it shall be ignored.
*/
A_UINT32 max_per;
/* min_tput:
* The minimum guaranteed throughput to the peer-TID, in Kbps.
* If this value is 0x0, it shall be ignored.
*/
A_UINT32 min_tput;
/* latency_tid_info
* Bits 18-31 - Reserved (Shall be zero)
* Bits 14-17 - MSDU queue flow id within the TID for configuring
* latency info per MSDU flow queue
* Bit 12-13 - burst size sum. Bit to indicate whether to add or
* subtract burst_size_diff from vdev cmd burst size:
* 1 -> addition
* 2 -> subtraction
* Bit 11 - UL latency config indication.
* If this bit is set then this latency info will
* be used when triggering UL traffic. Until the
* AC specified in bits 8-9 has transferred at least
* burst_size amount of UL data within the service
* period, the AP will continue sending UL triggers
* when the STA has data of the specified access
* category ready to transmit.
* Note that the TID specified in bits 0-7 does not
* apply to UL; the TID-to-AC mapping applied to DL
* data that can be adjusted by the TID specified
* in bits 0-7 and the AC specified in bits 8-9 is
* distinct from the TID-to-AC mapping applied to
* UL data.
* Bit 10 - DL latency config indication. If the bit is set
* then DL TID will use this latency config.
* Bits 8 - 9 - This bit has info on the custom AC of DL TID.
* Also if bit 11 is set, the AP will apply some
* of these latency specs (in particular, burst_size)
* to UL traffic for this AC, by sending UL triggers
* until the desired amount of data has been received
* within the service period.
* Bits 0 - 7 - Specifies the TID of interest that corresponds
* to the AC specified in bits 8-9. This can be
* used to adjust the TID-to-AC mapping applied to
* DL data (if bit 10 is set).
*/
A_UINT32 latency_tid_info;
} wmi_tid_latency_info;
/*
* Currently wmi_peer_tid_set_latency_request_fixed_param will be sent
* per TID per latency configured client.
* In future this command might come for multiple latency configured
* clients together.
* The clients are expected to be associated while receiving this command.
*/
typedef struct {
A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_peer_tid_latency_config_fixed_param */
A_UINT32 pdev_id;
/*
* Following this structure is the TLV:
* struct wmi_tid_latency_info latency_info[];
*/
} wmi_peer_tid_latency_config_fixed_param;
#define WMI_ATF_GROUP_CFG_PEER_BIT_POS 0
#define WMI_ATF_GROUP_CFG_PEER_NUM_BITS 1
@@ -27406,6 +27684,8 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command)
WMI_RETURN_STRING(WMI_PDEV_ENABLE_DURATION_BASED_TX_MODE_SELECTION_CMDID);
WMI_RETURN_STRING(WMI_TWT_NUDGE_DIALOG_CMDID);
WMI_RETURN_STRING(WMI_VDEV_SET_TPC_POWER_CMDID);
WMI_RETURN_STRING(WMI_VDEV_TID_LATENCY_CONFIG_CMDID);
WMI_RETURN_STRING(WMI_PEER_TID_LATENCY_CONFIG_CMDID);
}
return "Invalid WMI cmd";