Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 180149df authored by spuligil's avatar spuligil Committed by snandini
Browse files

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
parent d819d888
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -1126,6 +1126,10 @@ typedef enum {
    WMITLV_TAG_STRUC_wmi_roam_msg_info_tlv_param,
    WMITLV_TAG_STRUC_wmi_vdev_set_tpc_power_cmd_fixed_param,
    WMITLV_TAG_STRUC_wmi_vdev_ch_power_info,
    WMITLV_TAG_STRUC_wmi_vdev_tid_latency_config_fixed_param,
    WMITLV_TAG_STRUC_wmi_vdev_latency_info,
    WMITLV_TAG_STRUC_wmi_peer_tid_latency_config_fixed_param,
    WMITLV_TAG_STRUC_wmi_tid_latency_info,
} WMITLV_TAG_ID;

/*
@@ -1580,6 +1584,8 @@ typedef enum {
    OP(WMI_PDEV_ENABLE_DURATION_BASED_TX_MODE_SELECTION_CMDID) \
    OP(WMI_TWT_NUDGE_DIALOG_CMDID) \
    OP(WMI_VDEV_SET_TPC_POWER_CMDID) \
    OP(WMI_VDEV_TID_LATENCY_CONFIG_CMDID) \
    OP(WMI_PEER_TID_LATENCY_CONFIG_CMDID) \
    /* add new CMD_LIST elements above this line */


@@ -3977,6 +3983,16 @@ WMITLV_CREATE_PARAM_STRUC(WMI_FWTEST_CMDID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_atf_peer_info, peer_info, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_PEER_ATF_REQUEST_CMDID);

#define WMITLV_TABLE_WMI_VDEV_TID_LATENCY_CONFIG_CMDID(id,op,buf,len) \
    WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_tid_latency_config_fixed_param, wmi_vdev_tid_latency_config_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
    WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_vdev_latency_info, vdev_latency_info, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_TID_LATENCY_CONFIG_CMDID);

#define WMITLV_TABLE_WMI_PEER_TID_LATENCY_CONFIG_CMDID(id,op,buf,len) \
    WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_peer_tid_latency_config_fixed_param, wmi_peer_tid_latency_config_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
    WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_tid_latency_info, latency_info, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_PEER_TID_LATENCY_CONFIG_CMDID);

/* ATF Group Request commands */
#define WMITLV_TABLE_WMI_ATF_SSID_GROUPING_REQUEST_CMDID(id,op,buf,len) \
    WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_atf_ssid_grp_request_fixed_param, wmi_atf_ssid_grp_request_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
+280 −0
Original line number Diff line number Diff line
@@ -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";
+1 −1
Original line number Diff line number Diff line
@@ -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_ 929
#define __WMI_REVISION_ 930

/** The Version Namespace should not be normally changed. Only
 *  host and firmware of the same WMI namespace will work