mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-25 06:03:36 -04:00
fw-api: CL 2936935 - update fw common interface files
Define new WMI_OFFCHAN_DATA_TX_SEND_CMDID message Change-Id: I5448876da005ed9410e328fc627a3d37dde6adb8 CRs-Fixed: 1107600
This commit is contained in:
parent
8f8b3ba868
commit
056c8b9263
4 changed files with 229 additions and 3 deletions
|
|
@ -189,6 +189,7 @@ typedef enum {
|
|||
WMI_SERVICE_MULTIPLE_VDEV_RESTART=120, /* Support for single command for multiple vdev restart */
|
||||
WMI_SERVICE_PKT_ROUTING=121, /* Support for routing specific data packets to selected destination rings */
|
||||
WMI_SERVICE_CHECK_CAL_VERSION=122, /* Support cal version check */
|
||||
WMI_SERVICE_OFFCHAN_TX_WMI=123, /* Support offchan data/mgmt tx over wmi */
|
||||
|
||||
|
||||
/******* ADD NEW SERVICES HERE UNTIL ALL VALUES UP TO 128 ARE USED *******/
|
||||
|
|
|
|||
|
|
@ -814,6 +814,9 @@ typedef enum {
|
|||
WMITLV_TAG_STRUC_wmi_coex_bt_activity_event_fixed_param,
|
||||
WMITLV_TAG_STRUC_wmi_vdev_get_tx_power_cmd_fixed_param,
|
||||
WMITLV_TAG_STRUC_wmi_vdev_tx_power_event_fixed_param,
|
||||
WMITLV_TAG_STRUC_wmi_offchan_data_tx_compl_event_fixed_param,
|
||||
WMITLV_TAG_STRUC_wmi_offchan_data_tx_send_cmd_fixed_param,
|
||||
WMITLV_TAG_STRUC_wmi_tx_send_params,
|
||||
} WMITLV_TAG_ID;
|
||||
|
||||
/*
|
||||
|
|
@ -1142,6 +1145,7 @@ typedef enum {
|
|||
OP(WMI_VDEV_SET_ARP_STAT_CMDID) \
|
||||
OP(WMI_VDEV_GET_ARP_STAT_CMDID) \
|
||||
OP(WMI_VDEV_GET_TX_POWER_CMDID) \
|
||||
OP(WMI_OFFCHAN_DATA_TX_SEND_CMDID) \
|
||||
/* add new CMD_LIST elements above this line */
|
||||
|
||||
|
||||
|
|
@ -1323,6 +1327,7 @@ typedef enum {
|
|||
OP(WMI_VDEV_GET_ARP_STAT_EVENTID) \
|
||||
OP(WMI_WLAN_COEX_BT_ACTIVITY_EVENTID) \
|
||||
OP(WMI_VDEV_GET_TX_POWER_EVENTID) \
|
||||
OP(WMI_OFFCHAN_DATA_TX_COMPLETION_EVENTID) \
|
||||
/* add new EVT_LIST elements above this line */
|
||||
|
||||
|
||||
|
|
@ -2049,10 +2054,19 @@ WMITLV_CREATE_PARAM_STRUC(WMI_MGMT_TX_CMDID);
|
|||
/* Management tx send cmd */
|
||||
#define WMITLV_TABLE_WMI_MGMT_TX_SEND_CMDID(id,op,buf,len) \
|
||||
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mgmt_tx_send_cmd_fixed_param, wmi_mgmt_tx_send_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
|
||||
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, bufp, WMITLV_SIZE_VAR)
|
||||
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, bufp, WMITLV_SIZE_VAR) \
|
||||
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_tx_send_params, wmi_tx_send_params, tx_send_params, WMITLV_SIZE_FIX)
|
||||
|
||||
WMITLV_CREATE_PARAM_STRUC(WMI_MGMT_TX_SEND_CMDID);
|
||||
|
||||
/* offchan data tx send cmd */
|
||||
#define WMITLV_TABLE_WMI_OFFCHAN_DATA_TX_SEND_CMDID(id,op,buf,len) \
|
||||
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_offchan_data_tx_send_cmd_fixed_param, wmi_offchan_data_tx_send_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
|
||||
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, bufp, WMITLV_SIZE_VAR) \
|
||||
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_tx_send_params, wmi_tx_send_params, tx_send_params, WMITLV_SIZE_FIX)
|
||||
|
||||
WMITLV_CREATE_PARAM_STRUC(WMI_OFFCHAN_DATA_TX_SEND_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)
|
||||
|
|
@ -3409,6 +3423,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_TX_PAUSE_EVENTID);
|
|||
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mgmt_tx_compl_event_fixed_param, wmi_mgmt_tx_compl_event_fixed_param, fixed_param, WMITLV_SIZE_FIX)
|
||||
WMITLV_CREATE_PARAM_STRUC(WMI_MGMT_TX_COMPLETION_EVENTID);
|
||||
|
||||
/* offchan data TX completion event */
|
||||
#define WMITLV_TABLE_WMI_OFFCHAN_DATA_TX_COMPLETION_EVENTID(id,op,buf,len) \
|
||||
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_offchan_data_tx_compl_event_fixed_param, wmi_offchan_data_tx_compl_event_fixed_param, fixed_param, WMITLV_SIZE_FIX)
|
||||
WMITLV_CREATE_PARAM_STRUC(WMI_OFFCHAN_DATA_TX_COMPLETION_EVENTID);
|
||||
|
||||
/* Bundled Mgmt TX completion event */
|
||||
#define WMITLV_TABLE_WMI_MGMT_TX_BUNDLE_COMPLETION_EVENTID(id,op,buf,len) \
|
||||
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mgmt_tx_compl_bundle_event_fixed_param, wmi_mgmt_tx_compl_bundle_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
|
||||
|
|
|
|||
208
fw/wmi_unified.h
208
fw/wmi_unified.h
|
|
@ -501,6 +501,8 @@ typedef enum {
|
|||
WMI_PRB_TMPL_CMDID,
|
||||
/** Transmit Mgmt frame by reference */
|
||||
WMI_MGMT_TX_SEND_CMDID,
|
||||
/** Transmit data frame by reference */
|
||||
WMI_OFFCHAN_DATA_TX_SEND_CMDID,
|
||||
|
||||
/** commands to directly control ba negotiation directly from host. only used in test mode */
|
||||
|
||||
|
|
@ -1209,8 +1211,10 @@ typedef enum {
|
|||
* Use this event if number of vdevs > 32.
|
||||
*/
|
||||
WMI_TBTTOFFSET_EXT_UPDATE_EVENTID,
|
||||
/** Event for offchan data TX completion event */
|
||||
WMI_OFFCHAN_DATA_TX_COMPLETION_EVENTID,
|
||||
|
||||
/*ADDBA Related WMI Events*/
|
||||
/* ADDBA Related WMI Events*/
|
||||
/** Indication the completion of the prior
|
||||
WMI_PEER_TID_DELBA_CMDID(initiator) */
|
||||
WMI_TX_DELBA_COMPLETE_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_BA_NEG),
|
||||
|
|
@ -3393,6 +3397,167 @@ typedef struct {
|
|||
*/
|
||||
} wmi_mgmt_tx_hdr;
|
||||
|
||||
#define WMI_TX_SEND_PARAM_PWR_GET(tx_param_dword0) WMI_GET_BITS(tx_param_dword0, 0, 8)
|
||||
#define WMI_TX_SEND_PARAM_PWR_SET(tx_param_dword0, value) WMI_SET_BITS(tx_param_dword0, 0, 8, value)
|
||||
|
||||
#define WMI_TX_SEND_PARAM_MCS_MASK_GET(tx_param_dword0) WMI_GET_BITS(tx_param_dword0, 8, 12)
|
||||
#define WMI_TX_SEND_PARAM_MCS_MASK_SET(tx_param_dword0, value) WMI_SET_BITS(tx_param_dword0, 8, 12, value)
|
||||
|
||||
#define WMI_TX_SEND_PARAM_NSS_MASK_GET(tx_param_dword0) WMI_GET_BITS(tx_param_dword0, 20, 8)
|
||||
#define WMI_TX_SEND_PARAM_NSS_MASK_SET(tx_param_dword0, value) WMI_SET_BITS(tx_param_dword0, 20, 8, value)
|
||||
|
||||
#define WMI_TX_SEND_PARAM_RETRY_LIMIT_GET(tx_param_dword0) WMI_GET_BITS(tx_param_dword0, 28, 4)
|
||||
#define WMI_TX_SEND_PARAM_RETRY_LIMIT_SET(tx_param_dword0, value) WMI_SET_BITS(tx_param_dword0, 28, 4, value)
|
||||
|
||||
#define WMI_TX_SEND_PARAM_CHAIN_MASK_GET(tx_param_dword1) WMI_GET_BITS(tx_param_dword1, 0, 8)
|
||||
#define WMI_TX_SEND_PARAM_CHAIN_MASK_SET(tx_param_dword1, value) WMI_SET_BITS(tx_param_dword1, 0, 8, value)
|
||||
|
||||
#define WMI_TX_SEND_PARAM_BW_MASK_GET(tx_param_dword1) WMI_GET_BITS(tx_param_dword1, 8, 7)
|
||||
#define WMI_TX_SEND_PARAM_BW_MASK_SET(tx_param_dword1, value) WMI_SET_BITS(tx_param_dword1, 8, 7, value)
|
||||
|
||||
#define WMI_TX_SEND_PARAM_PREAMBLE_GET(tx_param_dword1) WMI_GET_BITS(tx_param_dword1, 15, 5)
|
||||
#define WMI_TX_SEND_PARAM_PREAMBLE_SET(tx_param_dword1, value) WMI_SET_BITS(tx_param_dword1, 15, 5, value)
|
||||
|
||||
#define WMI_TX_SEND_PARAM_FRAME_TYPE_GET(tx_param_dword1) WMI_GET_BITS(tx_param_dword1, 20, 1)
|
||||
#define WMI_TX_SEND_PARAM_FRAME_TYPE_SET(tx_param_dword1, value) WMI_SET_BITS(tx_param_dword1, 20, 1, value)
|
||||
|
||||
typedef struct {
|
||||
A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_tx_send_params */
|
||||
|
||||
union {
|
||||
struct {
|
||||
/* DWORD 0: tx power, tx rate, retry_limit */
|
||||
A_UINT32
|
||||
/* pwr -
|
||||
* Specify what power the tx frame needs to be transmitted at.
|
||||
* The power a signed (two's complement) value is in units of 0.5 dBm.
|
||||
* The value needs to be appropriately sign-extended when extracting
|
||||
* the value from the message and storing it in a variable that is
|
||||
* larger than A_INT8. (fw automatically handles this sign-extension.)
|
||||
* If the transmission uses multiple tx chains, this power spec is
|
||||
* the total transmit power, assuming incoherent combination of
|
||||
* per-chain power to produce the total power.
|
||||
*/
|
||||
pwr: 8,
|
||||
|
||||
/* mcs_mask -
|
||||
* Specify the allowable values for MCS index (modulation and coding)
|
||||
* to use for transmitting the frame.
|
||||
*
|
||||
* For HT / VHT preamble types, this mask directly corresponds to
|
||||
* the HT or VHT MCS indices that are allowed. For each bit N set
|
||||
* within the mask, MCS index N is allowed for transmitting the frame.
|
||||
* For legacy CCK and OFDM rates, separate bits are provided for CCK
|
||||
* rates versus OFDM rates, so the host has the option of specifying
|
||||
* that the target must transmit the frame with CCK or OFDM rates
|
||||
* (not HT or VHT), but leaving the decision to the target whether
|
||||
* to use CCK or OFDM.
|
||||
*
|
||||
* For CCK and OFDM, the bits within this mask are interpreted as
|
||||
* follows:
|
||||
* bit 0 -> CCK 1 Mbps rate is allowed
|
||||
* bit 1 -> CCK 2 Mbps rate is allowed
|
||||
* bit 2 -> CCK 5.5 Mbps rate is allowed
|
||||
* bit 3 -> CCK 11 Mbps rate is allowed
|
||||
* bit 4 -> OFDM BPSK modulation, 1/2 coding rate is allowed
|
||||
* bit 5 -> OFDM BPSK modulation, 3/4 coding rate is allowed
|
||||
* bit 6 -> OFDM QPSK modulation, 1/2 coding rate is allowed
|
||||
* bit 7 -> OFDM QPSK modulation, 3/4 coding rate is allowed
|
||||
* bit 8 -> OFDM 16-QAM modulation, 1/2 coding rate is allowed
|
||||
* bit 9 -> OFDM 16-QAM modulation, 3/4 coding rate is allowed
|
||||
* bit 10 -> OFDM 64-QAM modulation, 2/3 coding rate is allowed
|
||||
* bit 11 -> OFDM 64-QAM modulation, 3/4 coding rate is allowed
|
||||
*
|
||||
* The MCS index specification needs to be compatible with the
|
||||
* bandwidth mask specification. For example, a MCS index == 9
|
||||
* specification is inconsistent with a preamble type == VHT,
|
||||
* Nss == 1, and channel bandwidth == 20 MHz.
|
||||
*
|
||||
* Furthermore, the host has only a limited ability to specify to
|
||||
* the target to select from HT + legacy rates, or VHT + legacy rates,
|
||||
* since this mcs_mask can specify either HT/VHT rates or legacy rates.
|
||||
* If no bits are set, target can choose what MCS type to use.
|
||||
*/
|
||||
mcs_mask: 12,
|
||||
|
||||
/* nss_mask -
|
||||
* Specify which numbers of spatial streams (MIMO factor) are permitted.
|
||||
* Each bit in this mask corresponds to a Nss value:
|
||||
* bit 0: if set, Nss = 1 (non-MIMO) is permitted
|
||||
* bit 1: if set, Nss = 2 (2x2 MIMO) is permitted
|
||||
* bit 2: if set, Nss = 3 (3x3 MIMO) is permitted
|
||||
* bit 3: if set, Nss = 4 (4x4 MIMO) is permitted
|
||||
* bit 4: if set, Nss = 5 (5x5 MIMO) is permitted
|
||||
* bit 5: if set, Nss = 6 (6x6 MIMO) is permitted
|
||||
* bit 6: if set, Nss = 7 (7x7 MIMO) is permitted
|
||||
* bit 7: if set, Nss = 8 (8x8 MIMO) is permitted
|
||||
* The values in the Nss mask must be suitable for the recipient, e.g.
|
||||
* a value of 0x4 (Nss = 3) cannot be specified for a tx frame to a
|
||||
* recipient which only supports 2x2 MIMO.
|
||||
* If no bits are set, target can choose what NSS type to use.
|
||||
*/
|
||||
nss_mask: 8,
|
||||
|
||||
/* retry_limit -
|
||||
* Specify the maximum number of transmissions, including the
|
||||
* initial transmission, to attempt before giving up if no ack
|
||||
* is received.
|
||||
* If the tx rate is specified, then all retries shall use the
|
||||
* same rate as the initial transmission.
|
||||
* If no tx rate is specified, the target can choose whether to
|
||||
* retain the original rate during the retransmissions, or to
|
||||
* fall back to a more robust rate.
|
||||
*/
|
||||
retry_limit: 4;
|
||||
|
||||
};
|
||||
A_UINT32 tx_param_dword0;
|
||||
};
|
||||
|
||||
union {
|
||||
struct {
|
||||
/* DWORD 1: tx chain mask, preamble_type, tx BW */
|
||||
A_UINT32
|
||||
/* chain_mask - specify which chains to transmit from
|
||||
* If not set, target will choose what chain_mask to use.
|
||||
*/
|
||||
chain_mask: 8,
|
||||
|
||||
/* The bits in this mask correspond to the values as below
|
||||
* bit 0 -> 5MHz
|
||||
* bit 1 -> 10MHz
|
||||
* bit 2 -> 20MHz
|
||||
* bit 3 -> 40MHz
|
||||
* bit 4 -> 80MHz
|
||||
* bit 5 -> 160MHz
|
||||
* bit 6 -> 80_80MHz
|
||||
* If no bits are set, target can choose what BW to use.
|
||||
*/
|
||||
bw_mask: 7,
|
||||
|
||||
/* preamble_type_mask -
|
||||
* Specify which preamble types (CCK, OFDM, HT, VHT) the target
|
||||
* may choose from for transmitting this frame.
|
||||
* Each bit in this mask corresponds to a preamble_type value:
|
||||
* bit 0: if set, OFDM
|
||||
* bit 1: if set, CCK
|
||||
* bit 2: if set, HT
|
||||
* bit 3: if set, VHT
|
||||
* bit 4: if set, HE
|
||||
* If no bits are set, target can choose what preamble type to use.
|
||||
*/
|
||||
preamble_type: 5,
|
||||
|
||||
/* Data:1 Mgmt:0
|
||||
*/
|
||||
frame_type: 1,
|
||||
|
||||
reserved1_31_21: 11;
|
||||
};
|
||||
A_UINT32 tx_param_dword1;
|
||||
};
|
||||
} wmi_tx_send_params;
|
||||
|
||||
typedef struct {
|
||||
A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mgmt_tx_send_cmd_fixed_param */
|
||||
A_UINT32 vdev_id;
|
||||
|
|
@ -3402,11 +3567,41 @@ typedef struct {
|
|||
A_UINT32 paddr_hi;
|
||||
A_UINT32 frame_len;
|
||||
A_UINT32 buf_len; /** Buffer length in bytes */
|
||||
/*
|
||||
* The frame which will have tx_params_valid set will be always be RAW
|
||||
* frame, as it will be tx'ed on non-pause tid
|
||||
*/
|
||||
A_UINT32 tx_params_valid;
|
||||
/* This TLV is followed by array of bytes: First 64 bytes of management frame
|
||||
* A_UINT8 bufp[];
|
||||
*/
|
||||
/* This TLV is followed by wmi_tx_send_params
|
||||
* wmi_tx_send_params tx_send_params;
|
||||
*/
|
||||
} wmi_mgmt_tx_send_cmd_fixed_param;
|
||||
|
||||
typedef struct {
|
||||
A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_offchan_data_tx_send_cmd_fixed_param */
|
||||
A_UINT32 vdev_id;
|
||||
A_UINT32 desc_id; /* echoed in tx_compl_event */
|
||||
A_UINT32 chanfreq; /* MHz units */
|
||||
A_UINT32 paddr_lo;
|
||||
A_UINT32 paddr_hi;
|
||||
A_UINT32 frame_len;
|
||||
A_UINT32 buf_len; /** Buffer length in bytes */
|
||||
/* The frame which will have tx_params_valid set will be always be RAW
|
||||
* frame, as it will be tx'ed on non-pause tid
|
||||
*/
|
||||
A_UINT32 tx_params_valid;
|
||||
|
||||
/* This TLV is followed by array of bytes: First 64 bytes of frame
|
||||
* A_UINT8 bufp[];
|
||||
*/
|
||||
/* This TLV is followed by wmi_tx_send_params
|
||||
* wmi_tx_send_params tx_send_params;
|
||||
*/
|
||||
} wmi_offchan_data_tx_send_cmd_fixed_param;
|
||||
|
||||
typedef struct {
|
||||
A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_echo_event_fixed_param */
|
||||
A_UINT32 value;
|
||||
|
|
@ -4198,6 +4393,16 @@ typedef struct {
|
|||
A_UINT32 pdev_id;
|
||||
} wmi_mgmt_tx_compl_event_fixed_param;
|
||||
|
||||
typedef struct {
|
||||
A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_offchan_data_tx_compl_event_fixed_param */
|
||||
A_UINT32 desc_id; /* from tx_send_cmd */
|
||||
A_UINT32 status; /* same status as WMI_MGMT_TX_COMP_STATUS_TYPE */
|
||||
/** pdev_id for identifying the MAC that transmitted the mgmt frame
|
||||
* See macros starting with WMI_PDEV_ID_ for values.
|
||||
*/
|
||||
A_UINT32 pdev_id;
|
||||
} wmi_offchan_data_tx_compl_event_fixed_param;
|
||||
|
||||
typedef struct {
|
||||
A_UINT32 tlv_header;
|
||||
A_UINT32 num_reports;
|
||||
|
|
@ -18459,6 +18664,7 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command)
|
|||
WMI_RETURN_STRING(WMI_VDEV_SET_ARP_STAT_CMDID);
|
||||
WMI_RETURN_STRING(WMI_VDEV_GET_ARP_STAT_CMDID);
|
||||
WMI_RETURN_STRING(WMI_VDEV_GET_TX_POWER_CMDID);
|
||||
WMI_RETURN_STRING(WMI_OFFCHAN_DATA_TX_SEND_CMDID);
|
||||
}
|
||||
|
||||
return "Invalid WMI cmd";
|
||||
|
|
|
|||
|
|
@ -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_ 367
|
||||
#define __WMI_REVISION_ 368
|
||||
|
||||
/** The Version Namespace should not be normally changed. Only
|
||||
* host and firmware of the same WMI namespace will work
|
||||
|
|
|
|||
Loading…
Reference in a new issue