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:
Sandeep Puligilla 2017-03-17 11:00:44 -07:00
commit 056c8b9263
4 changed files with 229 additions and 3 deletions

View file

@ -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 *******/

View file

@ -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) \

View file

@ -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";

View file

@ -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