xref: /openbmc/linux/drivers/net/ethernet/broadcom/bnxt/bnxt_hsi.h (revision c900529f3d9161bfde5cca0754f83b4d3c3e0220)
1c0c050c5SMichael Chan /* Broadcom NetXtreme-C/E network driver.
2c0c050c5SMichael Chan  *
311f15ed3SMichael Chan  * Copyright (c) 2014-2016 Broadcom Corporation
42792b5b9SMichael Chan  * Copyright (c) 2014-2018 Broadcom Limited
5ad04cc05SMichael Chan  * Copyright (c) 2018-2022 Broadcom Inc.
6c0c050c5SMichael Chan  *
7c0c050c5SMichael Chan  * This program is free software; you can redistribute it and/or modify
8c0c050c5SMichael Chan  * it under the terms of the GNU General Public License as published by
9c0c050c5SMichael Chan  * the Free Software Foundation.
10894aa69aSMichael Chan  *
11894aa69aSMichael Chan  * DO NOT MODIFY!!! This file is automatically generated.
12c0c050c5SMichael Chan  */
13c0c050c5SMichael Chan 
14894aa69aSMichael Chan #ifndef _BNXT_HSI_H_
15894aa69aSMichael Chan #define _BNXT_HSI_H_
16c0c050c5SMichael Chan 
17894aa69aSMichael Chan /* hwrm_cmd_hdr (size:128b/16B) */
18894aa69aSMichael Chan struct hwrm_cmd_hdr {
19894aa69aSMichael Chan 	__le16	req_type;
20894aa69aSMichael Chan 	__le16	cmpl_ring;
21894aa69aSMichael Chan 	__le16	seq_id;
22894aa69aSMichael Chan 	__le16	target_id;
23894aa69aSMichael Chan 	__le64	resp_addr;
24894aa69aSMichael Chan };
2587c374deSMichael Chan 
26894aa69aSMichael Chan /* hwrm_resp_hdr (size:64b/8B) */
27894aa69aSMichael Chan struct hwrm_resp_hdr {
28894aa69aSMichael Chan 	__le16	error_code;
29894aa69aSMichael Chan 	__le16	req_type;
30894aa69aSMichael Chan 	__le16	seq_id;
31894aa69aSMichael Chan 	__le16	resp_len;
32894aa69aSMichael Chan };
338eb992e8SMichael Chan 
34894aa69aSMichael Chan #define CMD_DISCR_TLV_ENCAP 0x8000UL
35894aa69aSMichael Chan #define CMD_DISCR_LAST     CMD_DISCR_TLV_ENCAP
36894aa69aSMichael Chan 
37894aa69aSMichael Chan 
38894aa69aSMichael Chan #define TLV_TYPE_HWRM_REQUEST                    0x1UL
39894aa69aSMichael Chan #define TLV_TYPE_HWRM_RESPONSE                   0x2UL
40894aa69aSMichael Chan #define TLV_TYPE_ROCE_SP_COMMAND                 0x3UL
4131d357c0SMichael Chan #define TLV_TYPE_QUERY_ROCE_CC_GEN1              0x4UL
4231d357c0SMichael Chan #define TLV_TYPE_MODIFY_ROCE_CC_GEN1             0x5UL
432792b5b9SMichael Chan #define TLV_TYPE_ENGINE_CKV_ALIAS_ECC_PUBLIC_KEY 0x8001UL
44894aa69aSMichael Chan #define TLV_TYPE_ENGINE_CKV_IV                   0x8003UL
45894aa69aSMichael Chan #define TLV_TYPE_ENGINE_CKV_AUTH_TAG             0x8004UL
46894aa69aSMichael Chan #define TLV_TYPE_ENGINE_CKV_CIPHERTEXT           0x8005UL
4772e0c9f9SMichael Chan #define TLV_TYPE_ENGINE_CKV_HOST_ALGORITHMS      0x8006UL
482792b5b9SMichael Chan #define TLV_TYPE_ENGINE_CKV_HOST_ECC_PUBLIC_KEY  0x8007UL
49894aa69aSMichael Chan #define TLV_TYPE_ENGINE_CKV_ECDSA_SIGNATURE      0x8008UL
5072e0c9f9SMichael Chan #define TLV_TYPE_ENGINE_CKV_FW_ECC_PUBLIC_KEY    0x8009UL
5172e0c9f9SMichael Chan #define TLV_TYPE_ENGINE_CKV_FW_ALGORITHMS        0x800aUL
5272e0c9f9SMichael Chan #define TLV_TYPE_LAST                           TLV_TYPE_ENGINE_CKV_FW_ALGORITHMS
53894aa69aSMichael Chan 
54894aa69aSMichael Chan 
55894aa69aSMichael Chan /* tlv (size:64b/8B) */
56894aa69aSMichael Chan struct tlv {
57894aa69aSMichael Chan 	__le16	cmd_discr;
58894aa69aSMichael Chan 	u8	reserved_8b;
59894aa69aSMichael Chan 	u8	flags;
60894aa69aSMichael Chan 	#define TLV_FLAGS_MORE         0x1UL
61894aa69aSMichael Chan 	#define TLV_FLAGS_MORE_LAST      0x0UL
62894aa69aSMichael Chan 	#define TLV_FLAGS_MORE_NOT_LAST  0x1UL
63894aa69aSMichael Chan 	#define TLV_FLAGS_REQUIRED     0x2UL
64894aa69aSMichael Chan 	#define TLV_FLAGS_REQUIRED_NO    (0x0UL << 1)
65894aa69aSMichael Chan 	#define TLV_FLAGS_REQUIRED_YES   (0x1UL << 1)
66894aa69aSMichael Chan 	#define TLV_FLAGS_REQUIRED_LAST TLV_FLAGS_REQUIRED_YES
67894aa69aSMichael Chan 	__le16	tlv_type;
68894aa69aSMichael Chan 	__le16	length;
69894aa69aSMichael Chan };
70894aa69aSMichael Chan 
71894aa69aSMichael Chan /* input (size:128b/16B) */
72894aa69aSMichael Chan struct input {
73894aa69aSMichael Chan 	__le16	req_type;
74894aa69aSMichael Chan 	__le16	cmpl_ring;
75894aa69aSMichael Chan 	__le16	seq_id;
76894aa69aSMichael Chan 	__le16	target_id;
77894aa69aSMichael Chan 	__le64	resp_addr;
78894aa69aSMichael Chan };
79894aa69aSMichael Chan 
80894aa69aSMichael Chan /* output (size:64b/8B) */
81894aa69aSMichael Chan struct output {
82894aa69aSMichael Chan 	__le16	error_code;
83894aa69aSMichael Chan 	__le16	req_type;
84894aa69aSMichael Chan 	__le16	seq_id;
85894aa69aSMichael Chan 	__le16	resp_len;
86894aa69aSMichael Chan };
87894aa69aSMichael Chan 
88894aa69aSMichael Chan /* hwrm_short_input (size:128b/16B) */
89894aa69aSMichael Chan struct hwrm_short_input {
90894aa69aSMichael Chan 	__le16	req_type;
91894aa69aSMichael Chan 	__le16	signature;
92894aa69aSMichael Chan 	#define SHORT_REQ_SIGNATURE_SHORT_CMD 0x4321UL
93894aa69aSMichael Chan 	#define SHORT_REQ_SIGNATURE_LAST     SHORT_REQ_SIGNATURE_SHORT_CMD
944a50ddc2SMichael Chan 	__le16	target_id;
954a50ddc2SMichael Chan 	#define SHORT_REQ_TARGET_ID_DEFAULT 0x0UL
964a50ddc2SMichael Chan 	#define SHORT_REQ_TARGET_ID_TOOLS   0xfffdUL
974a50ddc2SMichael Chan 	#define SHORT_REQ_TARGET_ID_LAST   SHORT_REQ_TARGET_ID_TOOLS
98894aa69aSMichael Chan 	__le16	size;
99894aa69aSMichael Chan 	__le64	req_addr;
100894aa69aSMichael Chan };
101894aa69aSMichael Chan 
102894aa69aSMichael Chan /* cmd_nums (size:64b/8B) */
103894aa69aSMichael Chan struct cmd_nums {
104894aa69aSMichael Chan 	__le16	req_type;
105894aa69aSMichael Chan 	#define HWRM_VER_GET                              0x0UL
10631f67c2eSMichael Chan 	#define HWRM_FUNC_ECHO_RESPONSE                   0xbUL
1073293ec23SMichael Chan 	#define HWRM_ERROR_RECOVERY_QCFG                  0xcUL
1086fc92c33SMichael Chan 	#define HWRM_FUNC_DRV_IF_CHANGE                   0xdUL
109894aa69aSMichael Chan 	#define HWRM_FUNC_BUF_UNRGTR                      0xeUL
110894aa69aSMichael Chan 	#define HWRM_FUNC_VF_CFG                          0xfUL
111894aa69aSMichael Chan 	#define HWRM_RESERVED1                            0x10UL
112894aa69aSMichael Chan 	#define HWRM_FUNC_RESET                           0x11UL
113894aa69aSMichael Chan 	#define HWRM_FUNC_GETFID                          0x12UL
114894aa69aSMichael Chan 	#define HWRM_FUNC_VF_ALLOC                        0x13UL
115894aa69aSMichael Chan 	#define HWRM_FUNC_VF_FREE                         0x14UL
116894aa69aSMichael Chan 	#define HWRM_FUNC_QCAPS                           0x15UL
117894aa69aSMichael Chan 	#define HWRM_FUNC_QCFG                            0x16UL
118894aa69aSMichael Chan 	#define HWRM_FUNC_CFG                             0x17UL
119894aa69aSMichael Chan 	#define HWRM_FUNC_QSTATS                          0x18UL
120894aa69aSMichael Chan 	#define HWRM_FUNC_CLR_STATS                       0x19UL
121894aa69aSMichael Chan 	#define HWRM_FUNC_DRV_UNRGTR                      0x1aUL
122894aa69aSMichael Chan 	#define HWRM_FUNC_VF_RESC_FREE                    0x1bUL
123894aa69aSMichael Chan 	#define HWRM_FUNC_VF_VNIC_IDS_QUERY               0x1cUL
124894aa69aSMichael Chan 	#define HWRM_FUNC_DRV_RGTR                        0x1dUL
125894aa69aSMichael Chan 	#define HWRM_FUNC_DRV_QVER                        0x1eUL
126894aa69aSMichael Chan 	#define HWRM_FUNC_BUF_RGTR                        0x1fUL
127894aa69aSMichael Chan 	#define HWRM_PORT_PHY_CFG                         0x20UL
128894aa69aSMichael Chan 	#define HWRM_PORT_MAC_CFG                         0x21UL
129894aa69aSMichael Chan 	#define HWRM_PORT_TS_QUERY                        0x22UL
130894aa69aSMichael Chan 	#define HWRM_PORT_QSTATS                          0x23UL
131894aa69aSMichael Chan 	#define HWRM_PORT_LPBK_QSTATS                     0x24UL
132894aa69aSMichael Chan 	#define HWRM_PORT_CLR_STATS                       0x25UL
133894aa69aSMichael Chan 	#define HWRM_PORT_LPBK_CLR_STATS                  0x26UL
134894aa69aSMichael Chan 	#define HWRM_PORT_PHY_QCFG                        0x27UL
135894aa69aSMichael Chan 	#define HWRM_PORT_MAC_QCFG                        0x28UL
136894aa69aSMichael Chan 	#define HWRM_PORT_MAC_PTP_QCFG                    0x29UL
137894aa69aSMichael Chan 	#define HWRM_PORT_PHY_QCAPS                       0x2aUL
138894aa69aSMichael Chan 	#define HWRM_PORT_PHY_I2C_WRITE                   0x2bUL
139894aa69aSMichael Chan 	#define HWRM_PORT_PHY_I2C_READ                    0x2cUL
140894aa69aSMichael Chan 	#define HWRM_PORT_LED_CFG                         0x2dUL
141894aa69aSMichael Chan 	#define HWRM_PORT_LED_QCFG                        0x2eUL
142894aa69aSMichael Chan 	#define HWRM_PORT_LED_QCAPS                       0x2fUL
143894aa69aSMichael Chan 	#define HWRM_QUEUE_QPORTCFG                       0x30UL
144894aa69aSMichael Chan 	#define HWRM_QUEUE_QCFG                           0x31UL
145894aa69aSMichael Chan 	#define HWRM_QUEUE_CFG                            0x32UL
146894aa69aSMichael Chan 	#define HWRM_FUNC_VLAN_CFG                        0x33UL
147894aa69aSMichael Chan 	#define HWRM_FUNC_VLAN_QCFG                       0x34UL
148894aa69aSMichael Chan 	#define HWRM_QUEUE_PFCENABLE_QCFG                 0x35UL
149894aa69aSMichael Chan 	#define HWRM_QUEUE_PFCENABLE_CFG                  0x36UL
150894aa69aSMichael Chan 	#define HWRM_QUEUE_PRI2COS_QCFG                   0x37UL
151894aa69aSMichael Chan 	#define HWRM_QUEUE_PRI2COS_CFG                    0x38UL
152894aa69aSMichael Chan 	#define HWRM_QUEUE_COS2BW_QCFG                    0x39UL
153894aa69aSMichael Chan 	#define HWRM_QUEUE_COS2BW_CFG                     0x3aUL
154894aa69aSMichael Chan 	#define HWRM_QUEUE_DSCP_QCAPS                     0x3bUL
155894aa69aSMichael Chan 	#define HWRM_QUEUE_DSCP2PRI_QCFG                  0x3cUL
156894aa69aSMichael Chan 	#define HWRM_QUEUE_DSCP2PRI_CFG                   0x3dUL
157894aa69aSMichael Chan 	#define HWRM_VNIC_ALLOC                           0x40UL
158894aa69aSMichael Chan 	#define HWRM_VNIC_FREE                            0x41UL
159894aa69aSMichael Chan 	#define HWRM_VNIC_CFG                             0x42UL
160894aa69aSMichael Chan 	#define HWRM_VNIC_QCFG                            0x43UL
161894aa69aSMichael Chan 	#define HWRM_VNIC_TPA_CFG                         0x44UL
162894aa69aSMichael Chan 	#define HWRM_VNIC_TPA_QCFG                        0x45UL
163894aa69aSMichael Chan 	#define HWRM_VNIC_RSS_CFG                         0x46UL
164894aa69aSMichael Chan 	#define HWRM_VNIC_RSS_QCFG                        0x47UL
165894aa69aSMichael Chan 	#define HWRM_VNIC_PLCMODES_CFG                    0x48UL
166894aa69aSMichael Chan 	#define HWRM_VNIC_PLCMODES_QCFG                   0x49UL
167894aa69aSMichael Chan 	#define HWRM_VNIC_QCAPS                           0x4aUL
16816db6323SMichael Chan 	#define HWRM_VNIC_UPDATE                          0x4bUL
169894aa69aSMichael Chan 	#define HWRM_RING_ALLOC                           0x50UL
170894aa69aSMichael Chan 	#define HWRM_RING_FREE                            0x51UL
171894aa69aSMichael Chan 	#define HWRM_RING_CMPL_RING_QAGGINT_PARAMS        0x52UL
172894aa69aSMichael Chan 	#define HWRM_RING_CMPL_RING_CFG_AGGINT_PARAMS     0x53UL
1736fc92c33SMichael Chan 	#define HWRM_RING_AGGINT_QCAPS                    0x54UL
174bfc6e5fbSMichael Chan 	#define HWRM_RING_SCHQ_ALLOC                      0x55UL
175bfc6e5fbSMichael Chan 	#define HWRM_RING_SCHQ_CFG                        0x56UL
176bfc6e5fbSMichael Chan 	#define HWRM_RING_SCHQ_FREE                       0x57UL
177894aa69aSMichael Chan 	#define HWRM_RING_RESET                           0x5eUL
178894aa69aSMichael Chan 	#define HWRM_RING_GRP_ALLOC                       0x60UL
179894aa69aSMichael Chan 	#define HWRM_RING_GRP_FREE                        0x61UL
180bfc6e5fbSMichael Chan 	#define HWRM_RING_CFG                             0x62UL
181bfc6e5fbSMichael Chan 	#define HWRM_RING_QCFG                            0x63UL
182894aa69aSMichael Chan 	#define HWRM_RESERVED5                            0x64UL
183894aa69aSMichael Chan 	#define HWRM_RESERVED6                            0x65UL
184894aa69aSMichael Chan 	#define HWRM_VNIC_RSS_COS_LB_CTX_ALLOC            0x70UL
185894aa69aSMichael Chan 	#define HWRM_VNIC_RSS_COS_LB_CTX_FREE             0x71UL
18641136ab3SMichael Chan 	#define HWRM_QUEUE_MPLS_QCAPS                     0x80UL
18741136ab3SMichael Chan 	#define HWRM_QUEUE_MPLSTC2PRI_QCFG                0x81UL
18841136ab3SMichael Chan 	#define HWRM_QUEUE_MPLSTC2PRI_CFG                 0x82UL
18916db6323SMichael Chan 	#define HWRM_QUEUE_VLANPRI_QCAPS                  0x83UL
19016db6323SMichael Chan 	#define HWRM_QUEUE_VLANPRI2PRI_QCFG               0x84UL
19116db6323SMichael Chan 	#define HWRM_QUEUE_VLANPRI2PRI_CFG                0x85UL
19278eeadb8SMichael Chan 	#define HWRM_QUEUE_GLOBAL_CFG                     0x86UL
19378eeadb8SMichael Chan 	#define HWRM_QUEUE_GLOBAL_QCFG                    0x87UL
194894aa69aSMichael Chan 	#define HWRM_CFA_L2_FILTER_ALLOC                  0x90UL
195894aa69aSMichael Chan 	#define HWRM_CFA_L2_FILTER_FREE                   0x91UL
196894aa69aSMichael Chan 	#define HWRM_CFA_L2_FILTER_CFG                    0x92UL
197894aa69aSMichael Chan 	#define HWRM_CFA_L2_SET_RX_MASK                   0x93UL
198894aa69aSMichael Chan 	#define HWRM_CFA_VLAN_ANTISPOOF_CFG               0x94UL
199894aa69aSMichael Chan 	#define HWRM_CFA_TUNNEL_FILTER_ALLOC              0x95UL
200894aa69aSMichael Chan 	#define HWRM_CFA_TUNNEL_FILTER_FREE               0x96UL
201894aa69aSMichael Chan 	#define HWRM_CFA_ENCAP_RECORD_ALLOC               0x97UL
202894aa69aSMichael Chan 	#define HWRM_CFA_ENCAP_RECORD_FREE                0x98UL
203894aa69aSMichael Chan 	#define HWRM_CFA_NTUPLE_FILTER_ALLOC              0x99UL
204894aa69aSMichael Chan 	#define HWRM_CFA_NTUPLE_FILTER_FREE               0x9aUL
205894aa69aSMichael Chan 	#define HWRM_CFA_NTUPLE_FILTER_CFG                0x9bUL
206894aa69aSMichael Chan 	#define HWRM_CFA_EM_FLOW_ALLOC                    0x9cUL
207894aa69aSMichael Chan 	#define HWRM_CFA_EM_FLOW_FREE                     0x9dUL
208894aa69aSMichael Chan 	#define HWRM_CFA_EM_FLOW_CFG                      0x9eUL
209894aa69aSMichael Chan 	#define HWRM_TUNNEL_DST_PORT_QUERY                0xa0UL
210894aa69aSMichael Chan 	#define HWRM_TUNNEL_DST_PORT_ALLOC                0xa1UL
211894aa69aSMichael Chan 	#define HWRM_TUNNEL_DST_PORT_FREE                 0xa2UL
21231d357c0SMichael Chan 	#define HWRM_STAT_CTX_ENG_QUERY                   0xafUL
213894aa69aSMichael Chan 	#define HWRM_STAT_CTX_ALLOC                       0xb0UL
214894aa69aSMichael Chan 	#define HWRM_STAT_CTX_FREE                        0xb1UL
215894aa69aSMichael Chan 	#define HWRM_STAT_CTX_QUERY                       0xb2UL
216894aa69aSMichael Chan 	#define HWRM_STAT_CTX_CLR_STATS                   0xb3UL
217d4f52de0SMichael Chan 	#define HWRM_PORT_QSTATS_EXT                      0xb4UL
2183322479eSMichael Chan 	#define HWRM_PORT_PHY_MDIO_WRITE                  0xb5UL
2193322479eSMichael Chan 	#define HWRM_PORT_PHY_MDIO_READ                   0xb6UL
22072e0c9f9SMichael Chan 	#define HWRM_PORT_PHY_MDIO_BUS_ACQUIRE            0xb7UL
22172e0c9f9SMichael Chan 	#define HWRM_PORT_PHY_MDIO_BUS_RELEASE            0xb8UL
222460c2577SMichael Chan 	#define HWRM_PORT_QSTATS_EXT_PFC_WD               0xb9UL
2239d6b648cSMichael Chan 	#define HWRM_RESERVED7                            0xbaUL
2249d6b648cSMichael Chan 	#define HWRM_PORT_TX_FIR_CFG                      0xbbUL
2259d6b648cSMichael Chan 	#define HWRM_PORT_TX_FIR_QCFG                     0xbcUL
2269d6b648cSMichael Chan 	#define HWRM_PORT_ECN_QSTATS                      0xbdUL
22716db6323SMichael Chan 	#define HWRM_FW_LIVEPATCH_QUERY                   0xbeUL
22816db6323SMichael Chan 	#define HWRM_FW_LIVEPATCH                         0xbfUL
229894aa69aSMichael Chan 	#define HWRM_FW_RESET                             0xc0UL
230894aa69aSMichael Chan 	#define HWRM_FW_QSTATUS                           0xc1UL
2316fc92c33SMichael Chan 	#define HWRM_FW_HEALTH_CHECK                      0xc2UL
2326fc92c33SMichael Chan 	#define HWRM_FW_SYNC                              0xc3UL
23341136ab3SMichael Chan 	#define HWRM_FW_STATE_QCAPS                       0xc4UL
23472e0c9f9SMichael Chan 	#define HWRM_FW_STATE_QUIESCE                     0xc5UL
23572e0c9f9SMichael Chan 	#define HWRM_FW_STATE_BACKUP                      0xc6UL
23672e0c9f9SMichael Chan 	#define HWRM_FW_STATE_RESTORE                     0xc7UL
237894aa69aSMichael Chan 	#define HWRM_FW_SET_TIME                          0xc8UL
238894aa69aSMichael Chan 	#define HWRM_FW_GET_TIME                          0xc9UL
239894aa69aSMichael Chan 	#define HWRM_FW_SET_STRUCTURED_DATA               0xcaUL
240894aa69aSMichael Chan 	#define HWRM_FW_GET_STRUCTURED_DATA               0xcbUL
241894aa69aSMichael Chan 	#define HWRM_FW_IPC_MAILBOX                       0xccUL
242460c2577SMichael Chan 	#define HWRM_FW_ECN_CFG                           0xcdUL
243460c2577SMichael Chan 	#define HWRM_FW_ECN_QCFG                          0xceUL
244bfc6e5fbSMichael Chan 	#define HWRM_FW_SECURE_CFG                        0xcfUL
245894aa69aSMichael Chan 	#define HWRM_EXEC_FWD_RESP                        0xd0UL
246894aa69aSMichael Chan 	#define HWRM_REJECT_FWD_RESP                      0xd1UL
247894aa69aSMichael Chan 	#define HWRM_FWD_RESP                             0xd2UL
248894aa69aSMichael Chan 	#define HWRM_FWD_ASYNC_EVENT_CMPL                 0xd3UL
249d4f52de0SMichael Chan 	#define HWRM_OEM_CMD                              0xd4UL
2504a50ddc2SMichael Chan 	#define HWRM_PORT_PRBS_TEST                       0xd5UL
25172e0c9f9SMichael Chan 	#define HWRM_PORT_SFP_SIDEBAND_CFG                0xd6UL
25272e0c9f9SMichael Chan 	#define HWRM_PORT_SFP_SIDEBAND_QCFG               0xd7UL
25341136ab3SMichael Chan 	#define HWRM_FW_STATE_UNQUIESCE                   0xd8UL
25441136ab3SMichael Chan 	#define HWRM_PORT_DSC_DUMP                        0xd9UL
25578eeadb8SMichael Chan 	#define HWRM_PORT_EP_TX_QCFG                      0xdaUL
25678eeadb8SMichael Chan 	#define HWRM_PORT_EP_TX_CFG                       0xdbUL
25784a911dbSMichael Chan 	#define HWRM_PORT_CFG                             0xdcUL
25884a911dbSMichael Chan 	#define HWRM_PORT_QCFG                            0xddUL
259894aa69aSMichael Chan 	#define HWRM_TEMP_MONITOR_QUERY                   0xe0UL
26072e0c9f9SMichael Chan 	#define HWRM_REG_POWER_QUERY                      0xe1UL
26141136ab3SMichael Chan 	#define HWRM_CORE_FREQUENCY_QUERY                 0xe2UL
262460c2577SMichael Chan 	#define HWRM_REG_POWER_HISTOGRAM                  0xe3UL
263894aa69aSMichael Chan 	#define HWRM_WOL_FILTER_ALLOC                     0xf0UL
264894aa69aSMichael Chan 	#define HWRM_WOL_FILTER_FREE                      0xf1UL
265894aa69aSMichael Chan 	#define HWRM_WOL_FILTER_QCFG                      0xf2UL
266894aa69aSMichael Chan 	#define HWRM_WOL_REASON_QCFG                      0xf3UL
2673322479eSMichael Chan 	#define HWRM_CFA_METER_QCAPS                      0xf4UL
268894aa69aSMichael Chan 	#define HWRM_CFA_METER_PROFILE_ALLOC              0xf5UL
269894aa69aSMichael Chan 	#define HWRM_CFA_METER_PROFILE_FREE               0xf6UL
270894aa69aSMichael Chan 	#define HWRM_CFA_METER_PROFILE_CFG                0xf7UL
271894aa69aSMichael Chan 	#define HWRM_CFA_METER_INSTANCE_ALLOC             0xf8UL
272894aa69aSMichael Chan 	#define HWRM_CFA_METER_INSTANCE_FREE              0xf9UL
2733293ec23SMichael Chan 	#define HWRM_CFA_METER_INSTANCE_CFG               0xfaUL
274894aa69aSMichael Chan 	#define HWRM_CFA_VFR_ALLOC                        0xfdUL
275894aa69aSMichael Chan 	#define HWRM_CFA_VFR_FREE                         0xfeUL
276894aa69aSMichael Chan 	#define HWRM_CFA_VF_PAIR_ALLOC                    0x100UL
277894aa69aSMichael Chan 	#define HWRM_CFA_VF_PAIR_FREE                     0x101UL
278894aa69aSMichael Chan 	#define HWRM_CFA_VF_PAIR_INFO                     0x102UL
279894aa69aSMichael Chan 	#define HWRM_CFA_FLOW_ALLOC                       0x103UL
280894aa69aSMichael Chan 	#define HWRM_CFA_FLOW_FREE                        0x104UL
281894aa69aSMichael Chan 	#define HWRM_CFA_FLOW_FLUSH                       0x105UL
282894aa69aSMichael Chan 	#define HWRM_CFA_FLOW_STATS                       0x106UL
283894aa69aSMichael Chan 	#define HWRM_CFA_FLOW_INFO                        0x107UL
284894aa69aSMichael Chan 	#define HWRM_CFA_DECAP_FILTER_ALLOC               0x108UL
285894aa69aSMichael Chan 	#define HWRM_CFA_DECAP_FILTER_FREE                0x109UL
286894aa69aSMichael Chan 	#define HWRM_CFA_VLAN_ANTISPOOF_QCFG              0x10aUL
287894aa69aSMichael Chan 	#define HWRM_CFA_REDIRECT_TUNNEL_TYPE_ALLOC       0x10bUL
288894aa69aSMichael Chan 	#define HWRM_CFA_REDIRECT_TUNNEL_TYPE_FREE        0x10cUL
289894aa69aSMichael Chan 	#define HWRM_CFA_PAIR_ALLOC                       0x10dUL
290894aa69aSMichael Chan 	#define HWRM_CFA_PAIR_FREE                        0x10eUL
291894aa69aSMichael Chan 	#define HWRM_CFA_PAIR_INFO                        0x10fUL
292894aa69aSMichael Chan 	#define HWRM_FW_IPC_MSG                           0x110UL
293894aa69aSMichael Chan 	#define HWRM_CFA_REDIRECT_TUNNEL_TYPE_INFO        0x111UL
29431d357c0SMichael Chan 	#define HWRM_CFA_REDIRECT_QUERY_TUNNEL_TYPE       0x112UL
2953322479eSMichael Chan 	#define HWRM_CFA_FLOW_AGING_TIMER_RESET           0x113UL
2963322479eSMichael Chan 	#define HWRM_CFA_FLOW_AGING_CFG                   0x114UL
2973322479eSMichael Chan 	#define HWRM_CFA_FLOW_AGING_QCFG                  0x115UL
2983322479eSMichael Chan 	#define HWRM_CFA_FLOW_AGING_QCAPS                 0x116UL
2993322479eSMichael Chan 	#define HWRM_CFA_CTX_MEM_RGTR                     0x117UL
3003322479eSMichael Chan 	#define HWRM_CFA_CTX_MEM_UNRGTR                   0x118UL
3013322479eSMichael Chan 	#define HWRM_CFA_CTX_MEM_QCTX                     0x119UL
3023322479eSMichael Chan 	#define HWRM_CFA_CTX_MEM_QCAPS                    0x11aUL
3033322479eSMichael Chan 	#define HWRM_CFA_COUNTER_QCAPS                    0x11bUL
3043322479eSMichael Chan 	#define HWRM_CFA_COUNTER_CFG                      0x11cUL
3053322479eSMichael Chan 	#define HWRM_CFA_COUNTER_QCFG                     0x11dUL
3063322479eSMichael Chan 	#define HWRM_CFA_COUNTER_QSTATS                   0x11eUL
3073322479eSMichael Chan 	#define HWRM_CFA_TCP_FLAG_PROCESS_QCFG            0x11fUL
3083322479eSMichael Chan 	#define HWRM_CFA_EEM_QCAPS                        0x120UL
3093322479eSMichael Chan 	#define HWRM_CFA_EEM_CFG                          0x121UL
3103322479eSMichael Chan 	#define HWRM_CFA_EEM_QCFG                         0x122UL
3113322479eSMichael Chan 	#define HWRM_CFA_EEM_OP                           0x123UL
3123322479eSMichael Chan 	#define HWRM_CFA_ADV_FLOW_MGNT_QCAPS              0x124UL
3134a50ddc2SMichael Chan 	#define HWRM_CFA_TFLIB                            0x125UL
31478eeadb8SMichael Chan 	#define HWRM_CFA_LAG_GROUP_MEMBER_RGTR            0x126UL
31578eeadb8SMichael Chan 	#define HWRM_CFA_LAG_GROUP_MEMBER_UNRGTR          0x127UL
316ad04cc05SMichael Chan 	#define HWRM_CFA_TLS_FILTER_ALLOC                 0x128UL
317ad04cc05SMichael Chan 	#define HWRM_CFA_TLS_FILTER_FREE                  0x129UL
318894aa69aSMichael Chan 	#define HWRM_ENGINE_CKV_STATUS                    0x12eUL
319894aa69aSMichael Chan 	#define HWRM_ENGINE_CKV_CKEK_ADD                  0x12fUL
320894aa69aSMichael Chan 	#define HWRM_ENGINE_CKV_CKEK_DELETE               0x130UL
321894aa69aSMichael Chan 	#define HWRM_ENGINE_CKV_KEY_ADD                   0x131UL
322894aa69aSMichael Chan 	#define HWRM_ENGINE_CKV_KEY_DELETE                0x132UL
323894aa69aSMichael Chan 	#define HWRM_ENGINE_CKV_FLUSH                     0x133UL
324894aa69aSMichael Chan 	#define HWRM_ENGINE_CKV_RNG_GET                   0x134UL
325894aa69aSMichael Chan 	#define HWRM_ENGINE_CKV_KEY_GEN                   0x135UL
3263293ec23SMichael Chan 	#define HWRM_ENGINE_CKV_KEY_LABEL_CFG             0x136UL
3274a50ddc2SMichael Chan 	#define HWRM_ENGINE_CKV_KEY_LABEL_QCFG            0x137UL
328894aa69aSMichael Chan 	#define HWRM_ENGINE_QG_CONFIG_QUERY               0x13cUL
329894aa69aSMichael Chan 	#define HWRM_ENGINE_QG_QUERY                      0x13dUL
330894aa69aSMichael Chan 	#define HWRM_ENGINE_QG_METER_PROFILE_CONFIG_QUERY 0x13eUL
331894aa69aSMichael Chan 	#define HWRM_ENGINE_QG_METER_PROFILE_QUERY        0x13fUL
332894aa69aSMichael Chan 	#define HWRM_ENGINE_QG_METER_PROFILE_ALLOC        0x140UL
333894aa69aSMichael Chan 	#define HWRM_ENGINE_QG_METER_PROFILE_FREE         0x141UL
334894aa69aSMichael Chan 	#define HWRM_ENGINE_QG_METER_QUERY                0x142UL
335894aa69aSMichael Chan 	#define HWRM_ENGINE_QG_METER_BIND                 0x143UL
336894aa69aSMichael Chan 	#define HWRM_ENGINE_QG_METER_UNBIND               0x144UL
337894aa69aSMichael Chan 	#define HWRM_ENGINE_QG_FUNC_BIND                  0x145UL
338894aa69aSMichael Chan 	#define HWRM_ENGINE_SG_CONFIG_QUERY               0x146UL
339894aa69aSMichael Chan 	#define HWRM_ENGINE_SG_QUERY                      0x147UL
340894aa69aSMichael Chan 	#define HWRM_ENGINE_SG_METER_QUERY                0x148UL
341894aa69aSMichael Chan 	#define HWRM_ENGINE_SG_METER_CONFIG               0x149UL
342894aa69aSMichael Chan 	#define HWRM_ENGINE_SG_QG_BIND                    0x14aUL
343894aa69aSMichael Chan 	#define HWRM_ENGINE_QG_SG_UNBIND                  0x14bUL
344894aa69aSMichael Chan 	#define HWRM_ENGINE_CONFIG_QUERY                  0x154UL
345894aa69aSMichael Chan 	#define HWRM_ENGINE_STATS_CONFIG                  0x155UL
346894aa69aSMichael Chan 	#define HWRM_ENGINE_STATS_CLEAR                   0x156UL
347894aa69aSMichael Chan 	#define HWRM_ENGINE_STATS_QUERY                   0x157UL
34841136ab3SMichael Chan 	#define HWRM_ENGINE_STATS_QUERY_CONTINUOUS_ERROR  0x158UL
349894aa69aSMichael Chan 	#define HWRM_ENGINE_RQ_ALLOC                      0x15eUL
350894aa69aSMichael Chan 	#define HWRM_ENGINE_RQ_FREE                       0x15fUL
351894aa69aSMichael Chan 	#define HWRM_ENGINE_CQ_ALLOC                      0x160UL
352894aa69aSMichael Chan 	#define HWRM_ENGINE_CQ_FREE                       0x161UL
353894aa69aSMichael Chan 	#define HWRM_ENGINE_NQ_ALLOC                      0x162UL
354894aa69aSMichael Chan 	#define HWRM_ENGINE_NQ_FREE                       0x163UL
355894aa69aSMichael Chan 	#define HWRM_ENGINE_ON_DIE_RQE_CREDITS            0x164UL
3563293ec23SMichael Chan 	#define HWRM_ENGINE_FUNC_QCFG                     0x165UL
357894aa69aSMichael Chan 	#define HWRM_FUNC_RESOURCE_QCAPS                  0x190UL
358894aa69aSMichael Chan 	#define HWRM_FUNC_VF_RESOURCE_CFG                 0x191UL
3596fc92c33SMichael Chan 	#define HWRM_FUNC_BACKING_STORE_QCAPS             0x192UL
3606fc92c33SMichael Chan 	#define HWRM_FUNC_BACKING_STORE_CFG               0x193UL
3616fc92c33SMichael Chan 	#define HWRM_FUNC_BACKING_STORE_QCFG              0x194UL
3626fc92c33SMichael Chan 	#define HWRM_FUNC_VF_BW_CFG                       0x195UL
3636fc92c33SMichael Chan 	#define HWRM_FUNC_VF_BW_QCFG                      0x196UL
3642792b5b9SMichael Chan 	#define HWRM_FUNC_HOST_PF_IDS_QUERY               0x197UL
365460c2577SMichael Chan 	#define HWRM_FUNC_QSTATS_EXT                      0x198UL
366bfc6e5fbSMichael Chan 	#define HWRM_STAT_EXT_CTX_QUERY                   0x199UL
36716db6323SMichael Chan 	#define HWRM_FUNC_SPD_CFG                         0x19aUL
36816db6323SMichael Chan 	#define HWRM_FUNC_SPD_QCFG                        0x19bUL
36978eeadb8SMichael Chan 	#define HWRM_FUNC_PTP_PIN_QCFG                    0x19cUL
37078eeadb8SMichael Chan 	#define HWRM_FUNC_PTP_PIN_CFG                     0x19dUL
37178eeadb8SMichael Chan 	#define HWRM_FUNC_PTP_CFG                         0x19eUL
37278eeadb8SMichael Chan 	#define HWRM_FUNC_PTP_TS_QUERY                    0x19fUL
37378eeadb8SMichael Chan 	#define HWRM_FUNC_PTP_EXT_CFG                     0x1a0UL
37478eeadb8SMichael Chan 	#define HWRM_FUNC_PTP_EXT_QCFG                    0x1a1UL
375fbfee257SMichael Chan 	#define HWRM_FUNC_KEY_CTX_ALLOC                   0x1a2UL
3762895c153SMichael Chan 	#define HWRM_FUNC_BACKING_STORE_CFG_V2            0x1a3UL
3772895c153SMichael Chan 	#define HWRM_FUNC_BACKING_STORE_QCFG_V2           0x1a4UL
3782895c153SMichael Chan 	#define HWRM_FUNC_DBR_PACING_CFG                  0x1a5UL
3792895c153SMichael Chan 	#define HWRM_FUNC_DBR_PACING_QCFG                 0x1a6UL
3802895c153SMichael Chan 	#define HWRM_FUNC_DBR_PACING_BROADCAST_EVENT      0x1a7UL
3812895c153SMichael Chan 	#define HWRM_FUNC_BACKING_STORE_QCAPS_V2          0x1a8UL
382ad04cc05SMichael Chan 	#define HWRM_FUNC_DBR_PACING_NQLIST_QUERY         0x1a9UL
383ad04cc05SMichael Chan 	#define HWRM_FUNC_DBR_RECOVERY_COMPLETED          0x1aaUL
38484a911dbSMichael Chan 	#define HWRM_FUNC_SYNCE_CFG                       0x1abUL
38584a911dbSMichael Chan 	#define HWRM_FUNC_SYNCE_QCFG                      0x1acUL
386894aa69aSMichael Chan 	#define HWRM_SELFTEST_QLIST                       0x200UL
387894aa69aSMichael Chan 	#define HWRM_SELFTEST_EXEC                        0x201UL
388894aa69aSMichael Chan 	#define HWRM_SELFTEST_IRQ                         0x202UL
389894aa69aSMichael Chan 	#define HWRM_SELFTEST_RETRIEVE_SERDES_DATA        0x203UL
390d4f52de0SMichael Chan 	#define HWRM_PCIE_QSTATS                          0x204UL
3914a50ddc2SMichael Chan 	#define HWRM_MFG_FRU_WRITE_CONTROL                0x205UL
3924a50ddc2SMichael Chan 	#define HWRM_MFG_TIMERS_QUERY                     0x206UL
3934a50ddc2SMichael Chan 	#define HWRM_MFG_OTP_CFG                          0x207UL
3944a50ddc2SMichael Chan 	#define HWRM_MFG_OTP_QCFG                         0x208UL
3954a50ddc2SMichael Chan 	#define HWRM_MFG_HDMA_TEST                        0x209UL
396460c2577SMichael Chan 	#define HWRM_MFG_FRU_EEPROM_WRITE                 0x20aUL
397460c2577SMichael Chan 	#define HWRM_MFG_FRU_EEPROM_READ                  0x20bUL
39816db6323SMichael Chan 	#define HWRM_MFG_SOC_IMAGE                        0x20cUL
39916db6323SMichael Chan 	#define HWRM_MFG_SOC_QSTATUS                      0x20dUL
40016db6323SMichael Chan 	#define HWRM_MFG_PARAM_SEEPROM_SYNC               0x20eUL
40116db6323SMichael Chan 	#define HWRM_MFG_PARAM_SEEPROM_READ               0x20fUL
40216db6323SMichael Chan 	#define HWRM_MFG_PARAM_SEEPROM_HEALTH             0x210UL
40378eeadb8SMichael Chan 	#define HWRM_MFG_PRVSN_EXPORT_CSR                 0x211UL
40478eeadb8SMichael Chan 	#define HWRM_MFG_PRVSN_IMPORT_CERT                0x212UL
40578eeadb8SMichael Chan 	#define HWRM_MFG_PRVSN_GET_STATE                  0x213UL
40678eeadb8SMichael Chan 	#define HWRM_MFG_GET_NVM_MEASUREMENT              0x214UL
4072895c153SMichael Chan 	#define HWRM_MFG_PSOC_QSTATUS                     0x215UL
4082895c153SMichael Chan 	#define HWRM_MFG_SELFTEST_QLIST                   0x216UL
4092895c153SMichael Chan 	#define HWRM_MFG_SELFTEST_EXEC                    0x217UL
410ad04cc05SMichael Chan 	#define HWRM_STAT_GENERIC_QSTATS                  0x218UL
411460c2577SMichael Chan 	#define HWRM_TF                                   0x2bcUL
412460c2577SMichael Chan 	#define HWRM_TF_VERSION_GET                       0x2bdUL
413460c2577SMichael Chan 	#define HWRM_TF_SESSION_OPEN                      0x2c6UL
414460c2577SMichael Chan 	#define HWRM_TF_SESSION_ATTACH                    0x2c7UL
415bfc6e5fbSMichael Chan 	#define HWRM_TF_SESSION_REGISTER                  0x2c8UL
416bfc6e5fbSMichael Chan 	#define HWRM_TF_SESSION_UNREGISTER                0x2c9UL
417bfc6e5fbSMichael Chan 	#define HWRM_TF_SESSION_CLOSE                     0x2caUL
418bfc6e5fbSMichael Chan 	#define HWRM_TF_SESSION_QCFG                      0x2cbUL
419bfc6e5fbSMichael Chan 	#define HWRM_TF_SESSION_RESC_QCAPS                0x2ccUL
420bfc6e5fbSMichael Chan 	#define HWRM_TF_SESSION_RESC_ALLOC                0x2cdUL
421bfc6e5fbSMichael Chan 	#define HWRM_TF_SESSION_RESC_FREE                 0x2ceUL
422bfc6e5fbSMichael Chan 	#define HWRM_TF_SESSION_RESC_FLUSH                0x2cfUL
42378eeadb8SMichael Chan 	#define HWRM_TF_SESSION_RESC_INFO                 0x2d0UL
42484a911dbSMichael Chan 	#define HWRM_TF_SESSION_HOTUP_STATE_SET           0x2d1UL
42584a911dbSMichael Chan 	#define HWRM_TF_SESSION_HOTUP_STATE_GET           0x2d2UL
426bfc6e5fbSMichael Chan 	#define HWRM_TF_TBL_TYPE_GET                      0x2daUL
427bfc6e5fbSMichael Chan 	#define HWRM_TF_TBL_TYPE_SET                      0x2dbUL
428424174f1SVasundhara Volam 	#define HWRM_TF_TBL_TYPE_BULK_GET                 0x2dcUL
4299d6b648cSMichael Chan 	#define HWRM_TF_CTXT_MEM_ALLOC                    0x2e2UL
4309d6b648cSMichael Chan 	#define HWRM_TF_CTXT_MEM_FREE                     0x2e3UL
431bfc6e5fbSMichael Chan 	#define HWRM_TF_CTXT_MEM_RGTR                     0x2e4UL
432bfc6e5fbSMichael Chan 	#define HWRM_TF_CTXT_MEM_UNRGTR                   0x2e5UL
433bfc6e5fbSMichael Chan 	#define HWRM_TF_EXT_EM_QCAPS                      0x2e6UL
434bfc6e5fbSMichael Chan 	#define HWRM_TF_EXT_EM_OP                         0x2e7UL
435bfc6e5fbSMichael Chan 	#define HWRM_TF_EXT_EM_CFG                        0x2e8UL
436bfc6e5fbSMichael Chan 	#define HWRM_TF_EXT_EM_QCFG                       0x2e9UL
437bfc6e5fbSMichael Chan 	#define HWRM_TF_EM_INSERT                         0x2eaUL
438bfc6e5fbSMichael Chan 	#define HWRM_TF_EM_DELETE                         0x2ebUL
43916db6323SMichael Chan 	#define HWRM_TF_EM_HASH_INSERT                    0x2ecUL
44078eeadb8SMichael Chan 	#define HWRM_TF_EM_MOVE                           0x2edUL
441bfc6e5fbSMichael Chan 	#define HWRM_TF_TCAM_SET                          0x2f8UL
442bfc6e5fbSMichael Chan 	#define HWRM_TF_TCAM_GET                          0x2f9UL
443bfc6e5fbSMichael Chan 	#define HWRM_TF_TCAM_MOVE                         0x2faUL
444bfc6e5fbSMichael Chan 	#define HWRM_TF_TCAM_FREE                         0x2fbUL
445bfc6e5fbSMichael Chan 	#define HWRM_TF_GLOBAL_CFG_SET                    0x2fcUL
446bfc6e5fbSMichael Chan 	#define HWRM_TF_GLOBAL_CFG_GET                    0x2fdUL
4479d6b648cSMichael Chan 	#define HWRM_TF_IF_TBL_SET                        0x2feUL
4489d6b648cSMichael Chan 	#define HWRM_TF_IF_TBL_GET                        0x2ffUL
44984a911dbSMichael Chan 	#define HWRM_TFC_TBL_SCOPE_QCAPS                  0x380UL
45084a911dbSMichael Chan 	#define HWRM_TFC_TBL_SCOPE_ID_ALLOC               0x381UL
45184a911dbSMichael Chan 	#define HWRM_TFC_TBL_SCOPE_CONFIG                 0x382UL
45284a911dbSMichael Chan 	#define HWRM_TFC_TBL_SCOPE_DECONFIG               0x383UL
45384a911dbSMichael Chan 	#define HWRM_TFC_TBL_SCOPE_FID_ADD                0x384UL
45484a911dbSMichael Chan 	#define HWRM_TFC_TBL_SCOPE_FID_REM                0x385UL
45584a911dbSMichael Chan 	#define HWRM_TFC_TBL_SCOPE_POOL_ALLOC             0x386UL
45684a911dbSMichael Chan 	#define HWRM_TFC_TBL_SCOPE_POOL_FREE              0x387UL
45784a911dbSMichael Chan 	#define HWRM_TFC_SESSION_ID_ALLOC                 0x388UL
45884a911dbSMichael Chan 	#define HWRM_TFC_SESSION_FID_ADD                  0x389UL
45984a911dbSMichael Chan 	#define HWRM_TFC_SESSION_FID_REM                  0x38aUL
46084a911dbSMichael Chan 	#define HWRM_TFC_IDENT_ALLOC                      0x38bUL
46184a911dbSMichael Chan 	#define HWRM_TFC_IDENT_FREE                       0x38cUL
46284a911dbSMichael Chan 	#define HWRM_TFC_IDX_TBL_ALLOC                    0x38dUL
46384a911dbSMichael Chan 	#define HWRM_TFC_IDX_TBL_ALLOC_SET                0x38eUL
46484a911dbSMichael Chan 	#define HWRM_TFC_IDX_TBL_SET                      0x38fUL
46584a911dbSMichael Chan 	#define HWRM_TFC_IDX_TBL_GET                      0x390UL
46684a911dbSMichael Chan 	#define HWRM_TFC_IDX_TBL_FREE                     0x391UL
46784a911dbSMichael Chan 	#define HWRM_TFC_GLOBAL_ID_ALLOC                  0x392UL
468460c2577SMichael Chan 	#define HWRM_SV                                   0x400UL
469894aa69aSMichael Chan 	#define HWRM_DBG_READ_DIRECT                      0xff10UL
470894aa69aSMichael Chan 	#define HWRM_DBG_READ_INDIRECT                    0xff11UL
471894aa69aSMichael Chan 	#define HWRM_DBG_WRITE_DIRECT                     0xff12UL
472894aa69aSMichael Chan 	#define HWRM_DBG_WRITE_INDIRECT                   0xff13UL
473894aa69aSMichael Chan 	#define HWRM_DBG_DUMP                             0xff14UL
474894aa69aSMichael Chan 	#define HWRM_DBG_ERASE_NVM                        0xff15UL
475894aa69aSMichael Chan 	#define HWRM_DBG_CFG                              0xff16UL
476894aa69aSMichael Chan 	#define HWRM_DBG_COREDUMP_LIST                    0xff17UL
477894aa69aSMichael Chan 	#define HWRM_DBG_COREDUMP_INITIATE                0xff18UL
478894aa69aSMichael Chan 	#define HWRM_DBG_COREDUMP_RETRIEVE                0xff19UL
4796fc92c33SMichael Chan 	#define HWRM_DBG_FW_CLI                           0xff1aUL
4806fc92c33SMichael Chan 	#define HWRM_DBG_I2C_CMD                          0xff1bUL
48131d357c0SMichael Chan 	#define HWRM_DBG_RING_INFO_GET                    0xff1cUL
4824a50ddc2SMichael Chan 	#define HWRM_DBG_CRASHDUMP_HEADER                 0xff1dUL
4834a50ddc2SMichael Chan 	#define HWRM_DBG_CRASHDUMP_ERASE                  0xff1eUL
484460c2577SMichael Chan 	#define HWRM_DBG_DRV_TRACE                        0xff1fUL
485460c2577SMichael Chan 	#define HWRM_DBG_QCAPS                            0xff20UL
486460c2577SMichael Chan 	#define HWRM_DBG_QCFG                             0xff21UL
487460c2577SMichael Chan 	#define HWRM_DBG_CRASHDUMP_MEDIUM_CFG             0xff22UL
48878eeadb8SMichael Chan 	#define HWRM_DBG_USEQ_ALLOC                       0xff23UL
48978eeadb8SMichael Chan 	#define HWRM_DBG_USEQ_FREE                        0xff24UL
49078eeadb8SMichael Chan 	#define HWRM_DBG_USEQ_FLUSH                       0xff25UL
49178eeadb8SMichael Chan 	#define HWRM_DBG_USEQ_QCAPS                       0xff26UL
49278eeadb8SMichael Chan 	#define HWRM_DBG_USEQ_CW_CFG                      0xff27UL
49378eeadb8SMichael Chan 	#define HWRM_DBG_USEQ_SCHED_CFG                   0xff28UL
49478eeadb8SMichael Chan 	#define HWRM_DBG_USEQ_RUN                         0xff29UL
49578eeadb8SMichael Chan 	#define HWRM_DBG_USEQ_DELIVERY_REQ                0xff2aUL
49678eeadb8SMichael Chan 	#define HWRM_DBG_USEQ_RESP_HDR                    0xff2bUL
49778eeadb8SMichael Chan 	#define HWRM_NVM_DEFRAG                           0xffecUL
498bfc6e5fbSMichael Chan 	#define HWRM_NVM_REQ_ARBITRATION                  0xffedUL
499894aa69aSMichael Chan 	#define HWRM_NVM_FACTORY_DEFAULTS                 0xffeeUL
500894aa69aSMichael Chan 	#define HWRM_NVM_VALIDATE_OPTION                  0xffefUL
501894aa69aSMichael Chan 	#define HWRM_NVM_FLUSH                            0xfff0UL
502894aa69aSMichael Chan 	#define HWRM_NVM_GET_VARIABLE                     0xfff1UL
503894aa69aSMichael Chan 	#define HWRM_NVM_SET_VARIABLE                     0xfff2UL
504894aa69aSMichael Chan 	#define HWRM_NVM_INSTALL_UPDATE                   0xfff3UL
505894aa69aSMichael Chan 	#define HWRM_NVM_MODIFY                           0xfff4UL
506894aa69aSMichael Chan 	#define HWRM_NVM_VERIFY_UPDATE                    0xfff5UL
507894aa69aSMichael Chan 	#define HWRM_NVM_GET_DEV_INFO                     0xfff6UL
508894aa69aSMichael Chan 	#define HWRM_NVM_ERASE_DIR_ENTRY                  0xfff7UL
509894aa69aSMichael Chan 	#define HWRM_NVM_MOD_DIR_ENTRY                    0xfff8UL
510894aa69aSMichael Chan 	#define HWRM_NVM_FIND_DIR_ENTRY                   0xfff9UL
511894aa69aSMichael Chan 	#define HWRM_NVM_GET_DIR_ENTRIES                  0xfffaUL
512894aa69aSMichael Chan 	#define HWRM_NVM_GET_DIR_INFO                     0xfffbUL
513894aa69aSMichael Chan 	#define HWRM_NVM_RAW_DUMP                         0xfffcUL
514894aa69aSMichael Chan 	#define HWRM_NVM_READ                             0xfffdUL
515894aa69aSMichael Chan 	#define HWRM_NVM_WRITE                            0xfffeUL
516894aa69aSMichael Chan 	#define HWRM_NVM_RAW_WRITE_BLK                    0xffffUL
517894aa69aSMichael Chan 	#define HWRM_LAST                                HWRM_NVM_RAW_WRITE_BLK
518894aa69aSMichael Chan 	__le16	unused_0[3];
519894aa69aSMichael Chan };
520894aa69aSMichael Chan 
521894aa69aSMichael Chan /* ret_codes (size:64b/8B) */
522894aa69aSMichael Chan struct ret_codes {
523894aa69aSMichael Chan 	__le16	error_code;
524894aa69aSMichael Chan 	#define HWRM_ERR_CODE_SUCCESS                      0x0UL
525894aa69aSMichael Chan 	#define HWRM_ERR_CODE_FAIL                         0x1UL
526894aa69aSMichael Chan 	#define HWRM_ERR_CODE_INVALID_PARAMS               0x2UL
527894aa69aSMichael Chan 	#define HWRM_ERR_CODE_RESOURCE_ACCESS_DENIED       0x3UL
528894aa69aSMichael Chan 	#define HWRM_ERR_CODE_RESOURCE_ALLOC_ERROR         0x4UL
529894aa69aSMichael Chan 	#define HWRM_ERR_CODE_INVALID_FLAGS                0x5UL
530894aa69aSMichael Chan 	#define HWRM_ERR_CODE_INVALID_ENABLES              0x6UL
531894aa69aSMichael Chan 	#define HWRM_ERR_CODE_UNSUPPORTED_TLV              0x7UL
532894aa69aSMichael Chan 	#define HWRM_ERR_CODE_NO_BUFFER                    0x8UL
5336fc92c33SMichael Chan 	#define HWRM_ERR_CODE_UNSUPPORTED_OPTION_ERR       0x9UL
5343322479eSMichael Chan 	#define HWRM_ERR_CODE_HOT_RESET_PROGRESS           0xaUL
5353322479eSMichael Chan 	#define HWRM_ERR_CODE_HOT_RESET_FAIL               0xbUL
5364a50ddc2SMichael Chan 	#define HWRM_ERR_CODE_NO_FLOW_COUNTER_DURING_ALLOC 0xcUL
5374a50ddc2SMichael Chan 	#define HWRM_ERR_CODE_KEY_HASH_COLLISION           0xdUL
5384a50ddc2SMichael Chan 	#define HWRM_ERR_CODE_KEY_ALREADY_EXISTS           0xeUL
539894aa69aSMichael Chan 	#define HWRM_ERR_CODE_HWRM_ERROR                   0xfUL
54041136ab3SMichael Chan 	#define HWRM_ERR_CODE_BUSY                         0x10UL
5419d6b648cSMichael Chan 	#define HWRM_ERR_CODE_RESOURCE_LOCKED              0x11UL
54278eeadb8SMichael Chan 	#define HWRM_ERR_CODE_PF_UNAVAILABLE               0x12UL
54331d357c0SMichael Chan 	#define HWRM_ERR_CODE_TLV_ENCAPSULATED_RESPONSE    0x8000UL
544894aa69aSMichael Chan 	#define HWRM_ERR_CODE_UNKNOWN_ERR                  0xfffeUL
545894aa69aSMichael Chan 	#define HWRM_ERR_CODE_CMD_NOT_SUPPORTED            0xffffUL
546894aa69aSMichael Chan 	#define HWRM_ERR_CODE_LAST                        HWRM_ERR_CODE_CMD_NOT_SUPPORTED
547894aa69aSMichael Chan 	__le16	unused_0[3];
548894aa69aSMichael Chan };
549894aa69aSMichael Chan 
550894aa69aSMichael Chan /* hwrm_err_output (size:128b/16B) */
551894aa69aSMichael Chan struct hwrm_err_output {
552894aa69aSMichael Chan 	__le16	error_code;
553894aa69aSMichael Chan 	__le16	req_type;
554894aa69aSMichael Chan 	__le16	seq_id;
555894aa69aSMichael Chan 	__le16	resp_len;
556894aa69aSMichael Chan 	__le32	opaque_0;
557894aa69aSMichael Chan 	__le16	opaque_1;
558894aa69aSMichael Chan 	u8	cmd_err;
559894aa69aSMichael Chan 	u8	valid;
560894aa69aSMichael Chan };
56187c374deSMichael Chan #define HWRM_NA_SIGNATURE ((__le32)(-1))
562894aa69aSMichael Chan #define HWRM_MAX_REQ_LEN 128
5633293ec23SMichael Chan #define HWRM_MAX_RESP_LEN 704
564894aa69aSMichael Chan #define HW_HASH_INDEX_SIZE 0x80
56587c374deSMichael Chan #define HW_HASH_KEY_SIZE 40
566894aa69aSMichael Chan #define HWRM_RESP_VALID_KEY 1
5674a50ddc2SMichael Chan #define HWRM_TARGET_ID_BONO 0xFFF8
5684a50ddc2SMichael Chan #define HWRM_TARGET_ID_KONG 0xFFF9
5694a50ddc2SMichael Chan #define HWRM_TARGET_ID_APE 0xFFFA
5704a50ddc2SMichael Chan #define HWRM_TARGET_ID_TOOLS 0xFFFD
571894aa69aSMichael Chan #define HWRM_VERSION_MAJOR 1
57231d357c0SMichael Chan #define HWRM_VERSION_MINOR 10
57316db6323SMichael Chan #define HWRM_VERSION_UPDATE 2
57484a911dbSMichael Chan #define HWRM_VERSION_RSVD 118
57584a911dbSMichael Chan #define HWRM_VERSION_STR "1.10.2.118"
576c0c050c5SMichael Chan 
577894aa69aSMichael Chan /* hwrm_ver_get_input (size:192b/24B) */
578894aa69aSMichael Chan struct hwrm_ver_get_input {
579894aa69aSMichael Chan 	__le16	req_type;
580894aa69aSMichael Chan 	__le16	cmpl_ring;
581894aa69aSMichael Chan 	__le16	seq_id;
582894aa69aSMichael Chan 	__le16	target_id;
583894aa69aSMichael Chan 	__le64	resp_addr;
584894aa69aSMichael Chan 	u8	hwrm_intf_maj;
585894aa69aSMichael Chan 	u8	hwrm_intf_min;
586894aa69aSMichael Chan 	u8	hwrm_intf_upd;
587894aa69aSMichael Chan 	u8	unused_0[5];
588894aa69aSMichael Chan };
589894aa69aSMichael Chan 
590894aa69aSMichael Chan /* hwrm_ver_get_output (size:1408b/176B) */
591894aa69aSMichael Chan struct hwrm_ver_get_output {
592894aa69aSMichael Chan 	__le16	error_code;
593894aa69aSMichael Chan 	__le16	req_type;
594894aa69aSMichael Chan 	__le16	seq_id;
595894aa69aSMichael Chan 	__le16	resp_len;
596894aa69aSMichael Chan 	u8	hwrm_intf_maj_8b;
597894aa69aSMichael Chan 	u8	hwrm_intf_min_8b;
598894aa69aSMichael Chan 	u8	hwrm_intf_upd_8b;
599894aa69aSMichael Chan 	u8	hwrm_intf_rsvd_8b;
600894aa69aSMichael Chan 	u8	hwrm_fw_maj_8b;
601894aa69aSMichael Chan 	u8	hwrm_fw_min_8b;
602894aa69aSMichael Chan 	u8	hwrm_fw_bld_8b;
603894aa69aSMichael Chan 	u8	hwrm_fw_rsvd_8b;
604894aa69aSMichael Chan 	u8	mgmt_fw_maj_8b;
605894aa69aSMichael Chan 	u8	mgmt_fw_min_8b;
606894aa69aSMichael Chan 	u8	mgmt_fw_bld_8b;
607894aa69aSMichael Chan 	u8	mgmt_fw_rsvd_8b;
608894aa69aSMichael Chan 	u8	netctrl_fw_maj_8b;
609894aa69aSMichael Chan 	u8	netctrl_fw_min_8b;
610894aa69aSMichael Chan 	u8	netctrl_fw_bld_8b;
611894aa69aSMichael Chan 	u8	netctrl_fw_rsvd_8b;
612894aa69aSMichael Chan 	__le32	dev_caps_cfg;
613894aa69aSMichael Chan 	#define VER_GET_RESP_DEV_CAPS_CFG_SECURE_FW_UPD_SUPPORTED                  0x1UL
614894aa69aSMichael Chan 	#define VER_GET_RESP_DEV_CAPS_CFG_FW_DCBX_AGENT_SUPPORTED                  0x2UL
615894aa69aSMichael Chan 	#define VER_GET_RESP_DEV_CAPS_CFG_SHORT_CMD_SUPPORTED                      0x4UL
616894aa69aSMichael Chan 	#define VER_GET_RESP_DEV_CAPS_CFG_SHORT_CMD_REQUIRED                       0x8UL
61731d357c0SMichael Chan 	#define VER_GET_RESP_DEV_CAPS_CFG_KONG_MB_CHNL_SUPPORTED                   0x10UL
61831d357c0SMichael Chan 	#define VER_GET_RESP_DEV_CAPS_CFG_FLOW_HANDLE_64BIT_SUPPORTED              0x20UL
61931d357c0SMichael Chan 	#define VER_GET_RESP_DEV_CAPS_CFG_L2_FILTER_TYPES_ROCE_OR_L2_SUPPORTED     0x40UL
62031d357c0SMichael Chan 	#define VER_GET_RESP_DEV_CAPS_CFG_VIRTIO_VSWITCH_OFFLOAD_SUPPORTED         0x80UL
62131d357c0SMichael Chan 	#define VER_GET_RESP_DEV_CAPS_CFG_TRUSTED_VF_SUPPORTED                     0x100UL
6223322479eSMichael Chan 	#define VER_GET_RESP_DEV_CAPS_CFG_FLOW_AGING_SUPPORTED                     0x200UL
6233322479eSMichael Chan 	#define VER_GET_RESP_DEV_CAPS_CFG_ADV_FLOW_COUNTERS_SUPPORTED              0x400UL
6243322479eSMichael Chan 	#define VER_GET_RESP_DEV_CAPS_CFG_CFA_EEM_SUPPORTED                        0x800UL
6253322479eSMichael Chan 	#define VER_GET_RESP_DEV_CAPS_CFG_CFA_ADV_FLOW_MGNT_SUPPORTED              0x1000UL
6264a50ddc2SMichael Chan 	#define VER_GET_RESP_DEV_CAPS_CFG_CFA_TFLIB_SUPPORTED                      0x2000UL
627460c2577SMichael Chan 	#define VER_GET_RESP_DEV_CAPS_CFG_CFA_TRUFLOW_SUPPORTED                    0x4000UL
628fbfee257SMichael Chan 	#define VER_GET_RESP_DEV_CAPS_CFG_SECURE_BOOT_CAPABLE                      0x8000UL
629894aa69aSMichael Chan 	u8	roce_fw_maj_8b;
630894aa69aSMichael Chan 	u8	roce_fw_min_8b;
631894aa69aSMichael Chan 	u8	roce_fw_bld_8b;
632894aa69aSMichael Chan 	u8	roce_fw_rsvd_8b;
633894aa69aSMichael Chan 	char	hwrm_fw_name[16];
634894aa69aSMichael Chan 	char	mgmt_fw_name[16];
635894aa69aSMichael Chan 	char	netctrl_fw_name[16];
6364a50ddc2SMichael Chan 	char	active_pkg_name[16];
637894aa69aSMichael Chan 	char	roce_fw_name[16];
638894aa69aSMichael Chan 	__le16	chip_num;
639894aa69aSMichael Chan 	u8	chip_rev;
640894aa69aSMichael Chan 	u8	chip_metal;
641894aa69aSMichael Chan 	u8	chip_bond_id;
642894aa69aSMichael Chan 	u8	chip_platform_type;
643894aa69aSMichael Chan 	#define VER_GET_RESP_CHIP_PLATFORM_TYPE_ASIC      0x0UL
644894aa69aSMichael Chan 	#define VER_GET_RESP_CHIP_PLATFORM_TYPE_FPGA      0x1UL
645894aa69aSMichael Chan 	#define VER_GET_RESP_CHIP_PLATFORM_TYPE_PALLADIUM 0x2UL
646894aa69aSMichael Chan 	#define VER_GET_RESP_CHIP_PLATFORM_TYPE_LAST     VER_GET_RESP_CHIP_PLATFORM_TYPE_PALLADIUM
647894aa69aSMichael Chan 	__le16	max_req_win_len;
648894aa69aSMichael Chan 	__le16	max_resp_len;
649894aa69aSMichael Chan 	__le16	def_req_timeout;
650894aa69aSMichael Chan 	u8	flags;
651894aa69aSMichael Chan 	#define VER_GET_RESP_FLAGS_DEV_NOT_RDY                   0x1UL
652894aa69aSMichael Chan 	#define VER_GET_RESP_FLAGS_EXT_VER_AVAIL                 0x2UL
65316db6323SMichael Chan 	#define VER_GET_RESP_FLAGS_DEV_NOT_RDY_BACKING_STORE     0x4UL
654894aa69aSMichael Chan 	u8	unused_0[2];
655894aa69aSMichael Chan 	u8	always_1;
656894aa69aSMichael Chan 	__le16	hwrm_intf_major;
657894aa69aSMichael Chan 	__le16	hwrm_intf_minor;
658894aa69aSMichael Chan 	__le16	hwrm_intf_build;
659894aa69aSMichael Chan 	__le16	hwrm_intf_patch;
660894aa69aSMichael Chan 	__le16	hwrm_fw_major;
661894aa69aSMichael Chan 	__le16	hwrm_fw_minor;
662894aa69aSMichael Chan 	__le16	hwrm_fw_build;
663894aa69aSMichael Chan 	__le16	hwrm_fw_patch;
664894aa69aSMichael Chan 	__le16	mgmt_fw_major;
665894aa69aSMichael Chan 	__le16	mgmt_fw_minor;
666894aa69aSMichael Chan 	__le16	mgmt_fw_build;
667894aa69aSMichael Chan 	__le16	mgmt_fw_patch;
668894aa69aSMichael Chan 	__le16	netctrl_fw_major;
669894aa69aSMichael Chan 	__le16	netctrl_fw_minor;
670894aa69aSMichael Chan 	__le16	netctrl_fw_build;
671894aa69aSMichael Chan 	__le16	netctrl_fw_patch;
672894aa69aSMichael Chan 	__le16	roce_fw_major;
673894aa69aSMichael Chan 	__le16	roce_fw_minor;
674894aa69aSMichael Chan 	__le16	roce_fw_build;
675894aa69aSMichael Chan 	__le16	roce_fw_patch;
676894aa69aSMichael Chan 	__le16	max_ext_req_len;
67778eeadb8SMichael Chan 	__le16	max_req_timeout;
67878eeadb8SMichael Chan 	u8	unused_1[3];
679894aa69aSMichael Chan 	u8	valid;
680894aa69aSMichael Chan };
681894aa69aSMichael Chan 
682894aa69aSMichael Chan /* eject_cmpl (size:128b/16B) */
683c0c050c5SMichael Chan struct eject_cmpl {
684c0c050c5SMichael Chan 	__le16	type;
685c0c050c5SMichael Chan 	#define EJECT_CMPL_TYPE_MASK       0x3fUL
686c0c050c5SMichael Chan 	#define EJECT_CMPL_TYPE_SFT        0
687441cabbbSMichael Chan 	#define EJECT_CMPL_TYPE_STAT_EJECT   0x1aUL
688894aa69aSMichael Chan 	#define EJECT_CMPL_TYPE_LAST        EJECT_CMPL_TYPE_STAT_EJECT
6893322479eSMichael Chan 	#define EJECT_CMPL_FLAGS_MASK      0xffc0UL
6903322479eSMichael Chan 	#define EJECT_CMPL_FLAGS_SFT       6
6913322479eSMichael Chan 	#define EJECT_CMPL_FLAGS_ERROR      0x40UL
692c0c050c5SMichael Chan 	__le16	len;
693c0c050c5SMichael Chan 	__le32	opaque;
6943322479eSMichael Chan 	__le16	v;
695c0c050c5SMichael Chan 	#define EJECT_CMPL_V                              0x1UL
6963322479eSMichael Chan 	#define EJECT_CMPL_ERRORS_MASK                    0xfffeUL
6973322479eSMichael Chan 	#define EJECT_CMPL_ERRORS_SFT                     1
6983322479eSMichael Chan 	#define EJECT_CMPL_ERRORS_BUFFER_ERROR_MASK        0xeUL
6993322479eSMichael Chan 	#define EJECT_CMPL_ERRORS_BUFFER_ERROR_SFT         1
7003322479eSMichael Chan 	#define EJECT_CMPL_ERRORS_BUFFER_ERROR_NO_BUFFER     (0x0UL << 1)
7013322479eSMichael Chan 	#define EJECT_CMPL_ERRORS_BUFFER_ERROR_DID_NOT_FIT   (0x1UL << 1)
7023322479eSMichael Chan 	#define EJECT_CMPL_ERRORS_BUFFER_ERROR_BAD_FORMAT    (0x3UL << 1)
7033322479eSMichael Chan 	#define EJECT_CMPL_ERRORS_BUFFER_ERROR_FLUSH         (0x5UL << 1)
7043322479eSMichael Chan 	#define EJECT_CMPL_ERRORS_BUFFER_ERROR_LAST         EJECT_CMPL_ERRORS_BUFFER_ERROR_FLUSH
7053322479eSMichael Chan 	__le16	reserved16;
706c0c050c5SMichael Chan 	__le32	unused_2;
707c0c050c5SMichael Chan };
708c0c050c5SMichael Chan 
709894aa69aSMichael Chan /* hwrm_cmpl (size:128b/16B) */
710c0c050c5SMichael Chan struct hwrm_cmpl {
711c0c050c5SMichael Chan 	__le16	type;
71287c374deSMichael Chan 	#define CMPL_TYPE_MASK     0x3fUL
71387c374deSMichael Chan 	#define CMPL_TYPE_SFT      0
71487c374deSMichael Chan 	#define CMPL_TYPE_HWRM_DONE  0x20UL
715894aa69aSMichael Chan 	#define CMPL_TYPE_LAST      CMPL_TYPE_HWRM_DONE
716c0c050c5SMichael Chan 	__le16	sequence_id;
717c0c050c5SMichael Chan 	__le32	unused_1;
718c0c050c5SMichael Chan 	__le32	v;
71987c374deSMichael Chan 	#define CMPL_V     0x1UL
720c0c050c5SMichael Chan 	__le32	unused_3;
721c0c050c5SMichael Chan };
722c0c050c5SMichael Chan 
723894aa69aSMichael Chan /* hwrm_fwd_req_cmpl (size:128b/16B) */
724c0c050c5SMichael Chan struct hwrm_fwd_req_cmpl {
725c0c050c5SMichael Chan 	__le16	req_len_type;
72687c374deSMichael Chan 	#define FWD_REQ_CMPL_TYPE_MASK        0x3fUL
72787c374deSMichael Chan 	#define FWD_REQ_CMPL_TYPE_SFT         0
72887c374deSMichael Chan 	#define FWD_REQ_CMPL_TYPE_HWRM_FWD_REQ  0x22UL
729894aa69aSMichael Chan 	#define FWD_REQ_CMPL_TYPE_LAST         FWD_REQ_CMPL_TYPE_HWRM_FWD_REQ
73087c374deSMichael Chan 	#define FWD_REQ_CMPL_REQ_LEN_MASK     0xffc0UL
73187c374deSMichael Chan 	#define FWD_REQ_CMPL_REQ_LEN_SFT      6
732c0c050c5SMichael Chan 	__le16	source_id;
733894aa69aSMichael Chan 	__le32	unused0;
734c0c050c5SMichael Chan 	__le32	req_buf_addr_v[2];
73587c374deSMichael Chan 	#define FWD_REQ_CMPL_V                0x1UL
73687c374deSMichael Chan 	#define FWD_REQ_CMPL_REQ_BUF_ADDR_MASK 0xfffffffeUL
73787c374deSMichael Chan 	#define FWD_REQ_CMPL_REQ_BUF_ADDR_SFT 1
738c0c050c5SMichael Chan };
739c0c050c5SMichael Chan 
740894aa69aSMichael Chan /* hwrm_fwd_resp_cmpl (size:128b/16B) */
741c0c050c5SMichael Chan struct hwrm_fwd_resp_cmpl {
742c0c050c5SMichael Chan 	__le16	type;
74387c374deSMichael Chan 	#define FWD_RESP_CMPL_TYPE_MASK         0x3fUL
74487c374deSMichael Chan 	#define FWD_RESP_CMPL_TYPE_SFT          0
74587c374deSMichael Chan 	#define FWD_RESP_CMPL_TYPE_HWRM_FWD_RESP  0x24UL
746894aa69aSMichael Chan 	#define FWD_RESP_CMPL_TYPE_LAST          FWD_RESP_CMPL_TYPE_HWRM_FWD_RESP
747c0c050c5SMichael Chan 	__le16	source_id;
748c0c050c5SMichael Chan 	__le16	resp_len;
749c0c050c5SMichael Chan 	__le16	unused_1;
750c0c050c5SMichael Chan 	__le32	resp_buf_addr_v[2];
75187c374deSMichael Chan 	#define FWD_RESP_CMPL_V                 0x1UL
75287c374deSMichael Chan 	#define FWD_RESP_CMPL_RESP_BUF_ADDR_MASK 0xfffffffeUL
75387c374deSMichael Chan 	#define FWD_RESP_CMPL_RESP_BUF_ADDR_SFT 1
754c0c050c5SMichael Chan };
755c0c050c5SMichael Chan 
756894aa69aSMichael Chan /* hwrm_async_event_cmpl (size:128b/16B) */
757c0c050c5SMichael Chan struct hwrm_async_event_cmpl {
758c0c050c5SMichael Chan 	__le16	type;
75987c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_TYPE_MASK            0x3fUL
76087c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_TYPE_SFT             0
76187c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_TYPE_HWRM_ASYNC_EVENT  0x2eUL
762894aa69aSMichael Chan 	#define ASYNC_EVENT_CMPL_TYPE_LAST             ASYNC_EVENT_CMPL_TYPE_HWRM_ASYNC_EVENT
763c0c050c5SMichael Chan 	__le16	event_id;
76487c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_EVENT_ID_LINK_STATUS_CHANGE         0x0UL
76587c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_EVENT_ID_LINK_MTU_CHANGE            0x1UL
76687c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_EVENT_ID_LINK_SPEED_CHANGE          0x2UL
76787c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_EVENT_ID_DCB_CONFIG_CHANGE          0x3UL
76887c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_EVENT_ID_PORT_CONN_NOT_ALLOWED      0x4UL
76987c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_EVENT_ID_LINK_SPEED_CFG_NOT_ALLOWED 0x5UL
77087c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_EVENT_ID_LINK_SPEED_CFG_CHANGE      0x6UL
77187c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_EVENT_ID_PORT_PHY_CFG_CHANGE        0x7UL
77231d357c0SMichael Chan 	#define ASYNC_EVENT_CMPL_EVENT_ID_RESET_NOTIFY               0x8UL
7733293ec23SMichael Chan 	#define ASYNC_EVENT_CMPL_EVENT_ID_ERROR_RECOVERY             0x9UL
7749d6b648cSMichael Chan 	#define ASYNC_EVENT_CMPL_EVENT_ID_RING_MONITOR_MSG           0xaUL
77587c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_EVENT_ID_FUNC_DRVR_UNLOAD           0x10UL
77687c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_EVENT_ID_FUNC_DRVR_LOAD             0x11UL
77787c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_EVENT_ID_FUNC_FLR_PROC_CMPLT        0x12UL
77887c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_EVENT_ID_PF_DRVR_UNLOAD             0x20UL
77987c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_EVENT_ID_PF_DRVR_LOAD               0x21UL
78087c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_EVENT_ID_VF_FLR                     0x30UL
78187c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_EVENT_ID_VF_MAC_ADDR_CHANGE         0x31UL
78287c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_EVENT_ID_PF_VF_COMM_STATUS_CHANGE   0x32UL
78387c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_EVENT_ID_VF_CFG_CHANGE              0x33UL
78457922b0aSMichael Chan 	#define ASYNC_EVENT_CMPL_EVENT_ID_LLFC_PFC_CHANGE            0x34UL
7856fc92c33SMichael Chan 	#define ASYNC_EVENT_CMPL_EVENT_ID_DEFAULT_VNIC_CHANGE        0x35UL
78631d357c0SMichael Chan 	#define ASYNC_EVENT_CMPL_EVENT_ID_HW_FLOW_AGED               0x36UL
7873322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_EVENT_ID_DEBUG_NOTIFICATION         0x37UL
7883322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_EVENT_ID_EEM_CACHE_FLUSH_REQ        0x38UL
7893322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_EVENT_ID_EEM_CACHE_FLUSH_DONE       0x39UL
7903293ec23SMichael Chan 	#define ASYNC_EVENT_CMPL_EVENT_ID_TCP_FLAG_ACTION_CHANGE     0x3aUL
7913293ec23SMichael Chan 	#define ASYNC_EVENT_CMPL_EVENT_ID_EEM_FLOW_ACTIVE            0x3bUL
7923293ec23SMichael Chan 	#define ASYNC_EVENT_CMPL_EVENT_ID_EEM_CFG_CHANGE             0x3cUL
7932792b5b9SMichael Chan 	#define ASYNC_EVENT_CMPL_EVENT_ID_TFLIB_DEFAULT_VNIC_CHANGE  0x3dUL
7942792b5b9SMichael Chan 	#define ASYNC_EVENT_CMPL_EVENT_ID_TFLIB_LINK_STATUS_CHANGE   0x3eUL
79541136ab3SMichael Chan 	#define ASYNC_EVENT_CMPL_EVENT_ID_QUIESCE_DONE               0x3fUL
79641136ab3SMichael Chan 	#define ASYNC_EVENT_CMPL_EVENT_ID_DEFERRED_RESPONSE          0x40UL
797460c2577SMichael Chan 	#define ASYNC_EVENT_CMPL_EVENT_ID_PFC_WATCHDOG_CFG_CHANGE    0x41UL
79831f67c2eSMichael Chan 	#define ASYNC_EVENT_CMPL_EVENT_ID_ECHO_REQUEST               0x42UL
7992895c153SMichael Chan 	#define ASYNC_EVENT_CMPL_EVENT_ID_PHC_UPDATE                 0x43UL
80078eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_EVENT_ID_PPS_TIMESTAMP              0x44UL
80178eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_EVENT_ID_ERROR_REPORT               0x45UL
8022895c153SMichael Chan 	#define ASYNC_EVENT_CMPL_EVENT_ID_DOORBELL_PACING_THRESHOLD  0x46UL
803ad04cc05SMichael Chan 	#define ASYNC_EVENT_CMPL_EVENT_ID_RSS_CHANGE                 0x47UL
804ad04cc05SMichael Chan 	#define ASYNC_EVENT_CMPL_EVENT_ID_DOORBELL_PACING_NQ_UPDATE  0x48UL
805ad04cc05SMichael Chan 	#define ASYNC_EVENT_CMPL_EVENT_ID_MAX_RGTR_EVENT_ID          0x49UL
8063322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_EVENT_ID_FW_TRACE_MSG               0xfeUL
80787c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_EVENT_ID_HWRM_ERROR                 0xffUL
808894aa69aSMichael Chan 	#define ASYNC_EVENT_CMPL_EVENT_ID_LAST                      ASYNC_EVENT_CMPL_EVENT_ID_HWRM_ERROR
809c0c050c5SMichael Chan 	__le32	event_data2;
810c0c050c5SMichael Chan 	u8	opaque_v;
81187c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_V          0x1UL
81287c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_OPAQUE_MASK 0xfeUL
81387c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_OPAQUE_SFT 1
814c193554eSMichael Chan 	u8	timestamp_lo;
815c193554eSMichael Chan 	__le16	timestamp_hi;
816c0c050c5SMichael Chan 	__le32	event_data1;
817c0c050c5SMichael Chan };
818c0c050c5SMichael Chan 
819894aa69aSMichael Chan /* hwrm_async_event_cmpl_link_status_change (size:128b/16B) */
820c0c050c5SMichael Chan struct hwrm_async_event_cmpl_link_status_change {
821c0c050c5SMichael Chan 	__le16	type;
82287c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_TYPE_MASK            0x3fUL
82387c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_TYPE_SFT             0
82487c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_TYPE_HWRM_ASYNC_EVENT  0x2eUL
825894aa69aSMichael Chan 	#define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_TYPE_LAST             ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_TYPE_HWRM_ASYNC_EVENT
826c0c050c5SMichael Chan 	__le16	event_id;
82787c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_ID_LINK_STATUS_CHANGE 0x0UL
828894aa69aSMichael Chan 	#define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_ID_LAST              ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_ID_LINK_STATUS_CHANGE
829c0c050c5SMichael Chan 	__le32	event_data2;
830c0c050c5SMichael Chan 	u8	opaque_v;
83187c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_V          0x1UL
83287c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_OPAQUE_MASK 0xfeUL
83387c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_OPAQUE_SFT 1
834c193554eSMichael Chan 	u8	timestamp_lo;
835c193554eSMichael Chan 	__le16	timestamp_hi;
836c0c050c5SMichael Chan 	__le32	event_data1;
83787c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_LINK_CHANGE     0x1UL
838894aa69aSMichael Chan 	#define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_LINK_CHANGE_DOWN  0x0UL
839894aa69aSMichael Chan 	#define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_LINK_CHANGE_UP    0x1UL
84087c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_LINK_CHANGE_LAST ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_LINK_CHANGE_UP
84187c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_PORT_MASK       0xeUL
84287c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_PORT_SFT        1
84387c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_PORT_ID_MASK    0xffff0UL
84487c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_PORT_ID_SFT     4
8456fc92c33SMichael Chan 	#define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_PF_ID_MASK      0xff00000UL
8466fc92c33SMichael Chan 	#define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_PF_ID_SFT       20
847c0c050c5SMichael Chan };
848c0c050c5SMichael Chan 
849894aa69aSMichael Chan /* hwrm_async_event_cmpl_port_conn_not_allowed (size:128b/16B) */
850c0c050c5SMichael Chan struct hwrm_async_event_cmpl_port_conn_not_allowed {
851c0c050c5SMichael Chan 	__le16	type;
85287c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_TYPE_MASK            0x3fUL
85387c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_TYPE_SFT             0
85487c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_TYPE_HWRM_ASYNC_EVENT  0x2eUL
855894aa69aSMichael Chan 	#define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_TYPE_LAST             ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_TYPE_HWRM_ASYNC_EVENT
856c0c050c5SMichael Chan 	__le16	event_id;
85787c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_ID_PORT_CONN_NOT_ALLOWED 0x4UL
858894aa69aSMichael Chan 	#define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_ID_LAST                 ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_ID_PORT_CONN_NOT_ALLOWED
859c0c050c5SMichael Chan 	__le32	event_data2;
860c0c050c5SMichael Chan 	u8	opaque_v;
86187c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_V          0x1UL
86287c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_OPAQUE_MASK 0xfeUL
86387c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_OPAQUE_SFT 1
864c193554eSMichael Chan 	u8	timestamp_lo;
865c193554eSMichael Chan 	__le16	timestamp_hi;
866c0c050c5SMichael Chan 	__le32	event_data1;
86787c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_DATA1_PORT_ID_MASK                 0xffffUL
86887c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_DATA1_PORT_ID_SFT                  0
86987c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_DATA1_ENFORCEMENT_POLICY_MASK      0xff0000UL
87087c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_DATA1_ENFORCEMENT_POLICY_SFT       16
87187c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_DATA1_ENFORCEMENT_POLICY_NONE        (0x0UL << 16)
87287c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_DATA1_ENFORCEMENT_POLICY_DISABLETX   (0x1UL << 16)
87387c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_DATA1_ENFORCEMENT_POLICY_WARNINGMSG  (0x2UL << 16)
87487c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_DATA1_ENFORCEMENT_POLICY_PWRDOWN     (0x3UL << 16)
87587c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_DATA1_ENFORCEMENT_POLICY_LAST       ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_DATA1_ENFORCEMENT_POLICY_PWRDOWN
87611f15ed3SMichael Chan };
87711f15ed3SMichael Chan 
878894aa69aSMichael Chan /* hwrm_async_event_cmpl_link_speed_cfg_change (size:128b/16B) */
87911f15ed3SMichael Chan struct hwrm_async_event_cmpl_link_speed_cfg_change {
88011f15ed3SMichael Chan 	__le16	type;
88187c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_TYPE_MASK            0x3fUL
88287c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_TYPE_SFT             0
88387c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_TYPE_HWRM_ASYNC_EVENT  0x2eUL
884894aa69aSMichael Chan 	#define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_TYPE_LAST             ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_TYPE_HWRM_ASYNC_EVENT
88511f15ed3SMichael Chan 	__le16	event_id;
88687c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_EVENT_ID_LINK_SPEED_CFG_CHANGE 0x6UL
887894aa69aSMichael Chan 	#define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_EVENT_ID_LAST                 ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_EVENT_ID_LINK_SPEED_CFG_CHANGE
88811f15ed3SMichael Chan 	__le32	event_data2;
88911f15ed3SMichael Chan 	u8	opaque_v;
89087c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_V          0x1UL
89187c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_OPAQUE_MASK 0xfeUL
89287c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_OPAQUE_SFT 1
89311f15ed3SMichael Chan 	u8	timestamp_lo;
89411f15ed3SMichael Chan 	__le16	timestamp_hi;
89511f15ed3SMichael Chan 	__le32	event_data1;
89687c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_EVENT_DATA1_PORT_ID_MASK                     0xffffUL
89787c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_EVENT_DATA1_PORT_ID_SFT                      0
89887c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_EVENT_DATA1_SUPPORTED_LINK_SPEEDS_CHANGE     0x10000UL
89987c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_EVENT_DATA1_ILLEGAL_LINK_SPEED_CFG           0x20000UL
900c0c050c5SMichael Chan };
901c0c050c5SMichael Chan 
9023322479eSMichael Chan /* hwrm_async_event_cmpl_reset_notify (size:128b/16B) */
9033322479eSMichael Chan struct hwrm_async_event_cmpl_reset_notify {
9043322479eSMichael Chan 	__le16	type;
9053322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_RESET_NOTIFY_TYPE_MASK            0x3fUL
9063322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_RESET_NOTIFY_TYPE_SFT             0
9073322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_RESET_NOTIFY_TYPE_HWRM_ASYNC_EVENT  0x2eUL
9083322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_RESET_NOTIFY_TYPE_LAST             ASYNC_EVENT_CMPL_RESET_NOTIFY_TYPE_HWRM_ASYNC_EVENT
9093322479eSMichael Chan 	__le16	event_id;
9103322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_ID_RESET_NOTIFY 0x8UL
9113322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_ID_LAST        ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_ID_RESET_NOTIFY
9123322479eSMichael Chan 	__le32	event_data2;
91316db6323SMichael Chan 	#define ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_DATA2_FW_STATUS_CODE_MASK 0xffffUL
91416db6323SMichael Chan 	#define ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_DATA2_FW_STATUS_CODE_SFT 0
9153322479eSMichael Chan 	u8	opaque_v;
9163322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_RESET_NOTIFY_V          0x1UL
9173322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_RESET_NOTIFY_OPAQUE_MASK 0xfeUL
9183322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_RESET_NOTIFY_OPAQUE_SFT 1
9193322479eSMichael Chan 	u8	timestamp_lo;
9203322479eSMichael Chan 	__le16	timestamp_hi;
9213322479eSMichael Chan 	__le32	event_data1;
9223322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_DATA1_DRIVER_ACTION_MASK                  0xffUL
9233322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_DATA1_DRIVER_ACTION_SFT                   0
9243322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_DATA1_DRIVER_ACTION_DRIVER_STOP_TX_QUEUE    0x1UL
9253322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_DATA1_DRIVER_ACTION_DRIVER_IFDOWN           0x2UL
9263322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_DATA1_DRIVER_ACTION_LAST                   ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_DATA1_DRIVER_ACTION_DRIVER_IFDOWN
9273322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_DATA1_REASON_CODE_MASK                    0xff00UL
9283322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_DATA1_REASON_CODE_SFT                     8
9293322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_DATA1_REASON_CODE_MANAGEMENT_RESET_REQUEST  (0x1UL << 8)
9303322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_DATA1_REASON_CODE_FW_EXCEPTION_FATAL        (0x2UL << 8)
9313322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_DATA1_REASON_CODE_FW_EXCEPTION_NON_FATAL    (0x3UL << 8)
93216db6323SMichael Chan 	#define ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_DATA1_REASON_CODE_FAST_RESET                (0x4UL << 8)
933fbfee257SMichael Chan 	#define ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_DATA1_REASON_CODE_FW_ACTIVATION             (0x5UL << 8)
934fbfee257SMichael Chan 	#define ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_DATA1_REASON_CODE_LAST                     ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_DATA1_REASON_CODE_FW_ACTIVATION
9353322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_DATA1_DELAY_IN_100MS_TICKS_MASK           0xffff0000UL
9363322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_DATA1_DELAY_IN_100MS_TICKS_SFT            16
9373322479eSMichael Chan };
9383322479eSMichael Chan 
9393293ec23SMichael Chan /* hwrm_async_event_cmpl_error_recovery (size:128b/16B) */
9403293ec23SMichael Chan struct hwrm_async_event_cmpl_error_recovery {
9413293ec23SMichael Chan 	__le16	type;
9423293ec23SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_RECOVERY_TYPE_MASK            0x3fUL
9433293ec23SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_RECOVERY_TYPE_SFT             0
9443293ec23SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_RECOVERY_TYPE_HWRM_ASYNC_EVENT  0x2eUL
9453293ec23SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_RECOVERY_TYPE_LAST             ASYNC_EVENT_CMPL_ERROR_RECOVERY_TYPE_HWRM_ASYNC_EVENT
9463293ec23SMichael Chan 	__le16	event_id;
9473293ec23SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_RECOVERY_EVENT_ID_ERROR_RECOVERY 0x9UL
9483293ec23SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_RECOVERY_EVENT_ID_LAST          ASYNC_EVENT_CMPL_ERROR_RECOVERY_EVENT_ID_ERROR_RECOVERY
9493293ec23SMichael Chan 	__le32	event_data2;
9503293ec23SMichael Chan 	u8	opaque_v;
9513293ec23SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_RECOVERY_V          0x1UL
9523293ec23SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_RECOVERY_OPAQUE_MASK 0xfeUL
9533293ec23SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_RECOVERY_OPAQUE_SFT 1
9543293ec23SMichael Chan 	u8	timestamp_lo;
9553293ec23SMichael Chan 	__le16	timestamp_hi;
9563293ec23SMichael Chan 	__le32	event_data1;
9573293ec23SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_RECOVERY_EVENT_DATA1_FLAGS_MASK                 0xffUL
9583293ec23SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_RECOVERY_EVENT_DATA1_FLAGS_SFT                  0
9593293ec23SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_RECOVERY_EVENT_DATA1_FLAGS_MASTER_FUNC           0x1UL
9603293ec23SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_RECOVERY_EVENT_DATA1_FLAGS_RECOVERY_ENABLED      0x2UL
9613293ec23SMichael Chan };
9623293ec23SMichael Chan 
9639d6b648cSMichael Chan /* hwrm_async_event_cmpl_ring_monitor_msg (size:128b/16B) */
9649d6b648cSMichael Chan struct hwrm_async_event_cmpl_ring_monitor_msg {
9659d6b648cSMichael Chan 	__le16	type;
9669d6b648cSMichael Chan 	#define ASYNC_EVENT_CMPL_RING_MONITOR_MSG_TYPE_MASK            0x3fUL
9679d6b648cSMichael Chan 	#define ASYNC_EVENT_CMPL_RING_MONITOR_MSG_TYPE_SFT             0
9689d6b648cSMichael Chan 	#define ASYNC_EVENT_CMPL_RING_MONITOR_MSG_TYPE_HWRM_ASYNC_EVENT  0x2eUL
9699d6b648cSMichael Chan 	#define ASYNC_EVENT_CMPL_RING_MONITOR_MSG_TYPE_LAST             ASYNC_EVENT_CMPL_RING_MONITOR_MSG_TYPE_HWRM_ASYNC_EVENT
9709d6b648cSMichael Chan 	__le16	event_id;
9719d6b648cSMichael Chan 	#define ASYNC_EVENT_CMPL_RING_MONITOR_MSG_EVENT_ID_RING_MONITOR_MSG 0xaUL
9729d6b648cSMichael Chan 	#define ASYNC_EVENT_CMPL_RING_MONITOR_MSG_EVENT_ID_LAST            ASYNC_EVENT_CMPL_RING_MONITOR_MSG_EVENT_ID_RING_MONITOR_MSG
9739d6b648cSMichael Chan 	__le32	event_data2;
9749d6b648cSMichael Chan 	#define ASYNC_EVENT_CMPL_RING_MONITOR_MSG_EVENT_DATA2_DISABLE_RING_TYPE_MASK 0xffUL
9759d6b648cSMichael Chan 	#define ASYNC_EVENT_CMPL_RING_MONITOR_MSG_EVENT_DATA2_DISABLE_RING_TYPE_SFT 0
9769d6b648cSMichael Chan 	#define ASYNC_EVENT_CMPL_RING_MONITOR_MSG_EVENT_DATA2_DISABLE_RING_TYPE_TX    0x0UL
9779d6b648cSMichael Chan 	#define ASYNC_EVENT_CMPL_RING_MONITOR_MSG_EVENT_DATA2_DISABLE_RING_TYPE_RX    0x1UL
9789d6b648cSMichael Chan 	#define ASYNC_EVENT_CMPL_RING_MONITOR_MSG_EVENT_DATA2_DISABLE_RING_TYPE_CMPL  0x2UL
9799d6b648cSMichael Chan 	#define ASYNC_EVENT_CMPL_RING_MONITOR_MSG_EVENT_DATA2_DISABLE_RING_TYPE_LAST ASYNC_EVENT_CMPL_RING_MONITOR_MSG_EVENT_DATA2_DISABLE_RING_TYPE_CMPL
9809d6b648cSMichael Chan 	u8	opaque_v;
9819d6b648cSMichael Chan 	#define ASYNC_EVENT_CMPL_RING_MONITOR_MSG_V          0x1UL
9829d6b648cSMichael Chan 	#define ASYNC_EVENT_CMPL_RING_MONITOR_MSG_OPAQUE_MASK 0xfeUL
9839d6b648cSMichael Chan 	#define ASYNC_EVENT_CMPL_RING_MONITOR_MSG_OPAQUE_SFT 1
9849d6b648cSMichael Chan 	u8	timestamp_lo;
9859d6b648cSMichael Chan 	__le16	timestamp_hi;
9869d6b648cSMichael Chan 	__le32	event_data1;
9879d6b648cSMichael Chan };
9889d6b648cSMichael Chan 
989894aa69aSMichael Chan /* hwrm_async_event_cmpl_vf_cfg_change (size:128b/16B) */
99011f15ed3SMichael Chan struct hwrm_async_event_cmpl_vf_cfg_change {
99111f15ed3SMichael Chan 	__le16	type;
99287c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_VF_CFG_CHANGE_TYPE_MASK            0x3fUL
99387c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_VF_CFG_CHANGE_TYPE_SFT             0
99487c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_VF_CFG_CHANGE_TYPE_HWRM_ASYNC_EVENT  0x2eUL
995894aa69aSMichael Chan 	#define ASYNC_EVENT_CMPL_VF_CFG_CHANGE_TYPE_LAST             ASYNC_EVENT_CMPL_VF_CFG_CHANGE_TYPE_HWRM_ASYNC_EVENT
99611f15ed3SMichael Chan 	__le16	event_id;
99787c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_VF_CFG_CHANGE_EVENT_ID_VF_CFG_CHANGE 0x33UL
998894aa69aSMichael Chan 	#define ASYNC_EVENT_CMPL_VF_CFG_CHANGE_EVENT_ID_LAST         ASYNC_EVENT_CMPL_VF_CFG_CHANGE_EVENT_ID_VF_CFG_CHANGE
99911f15ed3SMichael Chan 	__le32	event_data2;
100078eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_VF_CFG_CHANGE_EVENT_DATA2_VF_ID_MASK 0xffffUL
100178eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_VF_CFG_CHANGE_EVENT_DATA2_VF_ID_SFT 0
100211f15ed3SMichael Chan 	u8	opaque_v;
100387c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_VF_CFG_CHANGE_V          0x1UL
100487c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_VF_CFG_CHANGE_OPAQUE_MASK 0xfeUL
100587c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_VF_CFG_CHANGE_OPAQUE_SFT 1
100611f15ed3SMichael Chan 	u8	timestamp_lo;
100711f15ed3SMichael Chan 	__le16	timestamp_hi;
100811f15ed3SMichael Chan 	__le32	event_data1;
100987c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_VF_CFG_CHANGE_EVENT_DATA1_MTU_CHANGE                0x1UL
101087c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_VF_CFG_CHANGE_EVENT_DATA1_MRU_CHANGE                0x2UL
101187c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_VF_CFG_CHANGE_EVENT_DATA1_DFLT_MAC_ADDR_CHANGE      0x4UL
101287c374deSMichael Chan 	#define ASYNC_EVENT_CMPL_VF_CFG_CHANGE_EVENT_DATA1_DFLT_VLAN_CHANGE          0x8UL
101331d357c0SMichael Chan 	#define ASYNC_EVENT_CMPL_VF_CFG_CHANGE_EVENT_DATA1_TRUSTED_VF_CFG_CHANGE     0x10UL
101411f15ed3SMichael Chan };
101511f15ed3SMichael Chan 
101672e0c9f9SMichael Chan /* hwrm_async_event_cmpl_default_vnic_change (size:128b/16B) */
101772e0c9f9SMichael Chan struct hwrm_async_event_cmpl_default_vnic_change {
101872e0c9f9SMichael Chan 	__le16	type;
101972e0c9f9SMichael Chan 	#define ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_TYPE_MASK            0x3fUL
102072e0c9f9SMichael Chan 	#define ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_TYPE_SFT             0
102172e0c9f9SMichael Chan 	#define ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_TYPE_HWRM_ASYNC_EVENT  0x2eUL
102272e0c9f9SMichael Chan 	#define ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_TYPE_LAST             ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_TYPE_HWRM_ASYNC_EVENT
102372e0c9f9SMichael Chan 	#define ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_UNUSED1_MASK         0xffc0UL
102472e0c9f9SMichael Chan 	#define ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_UNUSED1_SFT          6
102572e0c9f9SMichael Chan 	__le16	event_id;
102672e0c9f9SMichael Chan 	#define ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_EVENT_ID_ALLOC_FREE_NOTIFICATION 0x35UL
102772e0c9f9SMichael Chan 	#define ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_EVENT_ID_LAST                   ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_EVENT_ID_ALLOC_FREE_NOTIFICATION
102872e0c9f9SMichael Chan 	__le32	event_data2;
102972e0c9f9SMichael Chan 	u8	opaque_v;
103072e0c9f9SMichael Chan 	#define ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_V          0x1UL
103172e0c9f9SMichael Chan 	#define ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_OPAQUE_MASK 0xfeUL
103272e0c9f9SMichael Chan 	#define ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_OPAQUE_SFT 1
103372e0c9f9SMichael Chan 	u8	timestamp_lo;
103472e0c9f9SMichael Chan 	__le16	timestamp_hi;
103572e0c9f9SMichael Chan 	__le32	event_data1;
103672e0c9f9SMichael Chan 	#define ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_EVENT_DATA1_DEF_VNIC_STATE_MASK          0x3UL
103772e0c9f9SMichael Chan 	#define ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_EVENT_DATA1_DEF_VNIC_STATE_SFT           0
103872e0c9f9SMichael Chan 	#define ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_EVENT_DATA1_DEF_VNIC_STATE_DEF_VNIC_ALLOC  0x1UL
103972e0c9f9SMichael Chan 	#define ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_EVENT_DATA1_DEF_VNIC_STATE_DEF_VNIC_FREE   0x2UL
104072e0c9f9SMichael Chan 	#define ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_EVENT_DATA1_DEF_VNIC_STATE_LAST           ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_EVENT_DATA1_DEF_VNIC_STATE_DEF_VNIC_FREE
104172e0c9f9SMichael Chan 	#define ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_EVENT_DATA1_PF_ID_MASK                   0x3fcUL
104272e0c9f9SMichael Chan 	#define ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_EVENT_DATA1_PF_ID_SFT                    2
104372e0c9f9SMichael Chan 	#define ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_EVENT_DATA1_VF_ID_MASK                   0x3fffc00UL
104472e0c9f9SMichael Chan 	#define ASYNC_EVENT_CMPL_DEFAULT_VNIC_CHANGE_EVENT_DATA1_VF_ID_SFT                    10
104572e0c9f9SMichael Chan };
104672e0c9f9SMichael Chan 
10473322479eSMichael Chan /* hwrm_async_event_cmpl_hw_flow_aged (size:128b/16B) */
10483322479eSMichael Chan struct hwrm_async_event_cmpl_hw_flow_aged {
10493322479eSMichael Chan 	__le16	type;
10503322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_HW_FLOW_AGED_TYPE_MASK            0x3fUL
10513322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_HW_FLOW_AGED_TYPE_SFT             0
10523322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_HW_FLOW_AGED_TYPE_HWRM_ASYNC_EVENT  0x2eUL
10533322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_HW_FLOW_AGED_TYPE_LAST             ASYNC_EVENT_CMPL_HW_FLOW_AGED_TYPE_HWRM_ASYNC_EVENT
10543322479eSMichael Chan 	__le16	event_id;
10553322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_HW_FLOW_AGED_EVENT_ID_HW_FLOW_AGED 0x36UL
10563322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_HW_FLOW_AGED_EVENT_ID_LAST        ASYNC_EVENT_CMPL_HW_FLOW_AGED_EVENT_ID_HW_FLOW_AGED
10573322479eSMichael Chan 	__le32	event_data2;
10583322479eSMichael Chan 	u8	opaque_v;
10593322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_HW_FLOW_AGED_V          0x1UL
10603322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_HW_FLOW_AGED_OPAQUE_MASK 0xfeUL
10613322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_HW_FLOW_AGED_OPAQUE_SFT 1
10623322479eSMichael Chan 	u8	timestamp_lo;
10633322479eSMichael Chan 	__le16	timestamp_hi;
10643322479eSMichael Chan 	__le32	event_data1;
10653322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_HW_FLOW_AGED_EVENT_DATA1_FLOW_ID_MASK       0x7fffffffUL
10663322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_HW_FLOW_AGED_EVENT_DATA1_FLOW_ID_SFT        0
10673322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_HW_FLOW_AGED_EVENT_DATA1_FLOW_DIRECTION     0x80000000UL
10683322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_HW_FLOW_AGED_EVENT_DATA1_FLOW_DIRECTION_RX    (0x0UL << 31)
10693322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_HW_FLOW_AGED_EVENT_DATA1_FLOW_DIRECTION_TX    (0x1UL << 31)
10703322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_HW_FLOW_AGED_EVENT_DATA1_FLOW_DIRECTION_LAST ASYNC_EVENT_CMPL_HW_FLOW_AGED_EVENT_DATA1_FLOW_DIRECTION_TX
10713322479eSMichael Chan };
10723322479eSMichael Chan 
10733322479eSMichael Chan /* hwrm_async_event_cmpl_eem_cache_flush_req (size:128b/16B) */
10743322479eSMichael Chan struct hwrm_async_event_cmpl_eem_cache_flush_req {
10753322479eSMichael Chan 	__le16	type;
10763322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_EEM_CACHE_FLUSH_REQ_TYPE_MASK            0x3fUL
10773322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_EEM_CACHE_FLUSH_REQ_TYPE_SFT             0
10783322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_EEM_CACHE_FLUSH_REQ_TYPE_HWRM_ASYNC_EVENT  0x2eUL
10793322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_EEM_CACHE_FLUSH_REQ_TYPE_LAST             ASYNC_EVENT_CMPL_EEM_CACHE_FLUSH_REQ_TYPE_HWRM_ASYNC_EVENT
10803322479eSMichael Chan 	__le16	event_id;
10813322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_EEM_CACHE_FLUSH_REQ_EVENT_ID_EEM_CACHE_FLUSH_REQ 0x38UL
10823322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_EEM_CACHE_FLUSH_REQ_EVENT_ID_LAST               ASYNC_EVENT_CMPL_EEM_CACHE_FLUSH_REQ_EVENT_ID_EEM_CACHE_FLUSH_REQ
10833322479eSMichael Chan 	__le32	event_data2;
10843322479eSMichael Chan 	u8	opaque_v;
10853322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_EEM_CACHE_FLUSH_REQ_V          0x1UL
10863322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_EEM_CACHE_FLUSH_REQ_OPAQUE_MASK 0xfeUL
10873322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_EEM_CACHE_FLUSH_REQ_OPAQUE_SFT 1
10883322479eSMichael Chan 	u8	timestamp_lo;
10893322479eSMichael Chan 	__le16	timestamp_hi;
10903322479eSMichael Chan 	__le32	event_data1;
10913322479eSMichael Chan };
10923322479eSMichael Chan 
10933322479eSMichael Chan /* hwrm_async_event_cmpl_eem_cache_flush_done (size:128b/16B) */
10943322479eSMichael Chan struct hwrm_async_event_cmpl_eem_cache_flush_done {
10953322479eSMichael Chan 	__le16	type;
10963322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_EEM_CACHE_FLUSH_DONE_TYPE_MASK            0x3fUL
10973322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_EEM_CACHE_FLUSH_DONE_TYPE_SFT             0
10983322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_EEM_CACHE_FLUSH_DONE_TYPE_HWRM_ASYNC_EVENT  0x2eUL
10993322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_EEM_CACHE_FLUSH_DONE_TYPE_LAST             ASYNC_EVENT_CMPL_EEM_CACHE_FLUSH_DONE_TYPE_HWRM_ASYNC_EVENT
11003322479eSMichael Chan 	__le16	event_id;
11013322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_EEM_CACHE_FLUSH_DONE_EVENT_ID_EEM_CACHE_FLUSH_DONE 0x39UL
11023322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_EEM_CACHE_FLUSH_DONE_EVENT_ID_LAST                ASYNC_EVENT_CMPL_EEM_CACHE_FLUSH_DONE_EVENT_ID_EEM_CACHE_FLUSH_DONE
11033322479eSMichael Chan 	__le32	event_data2;
11043322479eSMichael Chan 	u8	opaque_v;
11053322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_EEM_CACHE_FLUSH_DONE_V          0x1UL
11063322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_EEM_CACHE_FLUSH_DONE_OPAQUE_MASK 0xfeUL
11073322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_EEM_CACHE_FLUSH_DONE_OPAQUE_SFT 1
11083322479eSMichael Chan 	u8	timestamp_lo;
11093322479eSMichael Chan 	__le16	timestamp_hi;
11103322479eSMichael Chan 	__le32	event_data1;
11113322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_EEM_CACHE_FLUSH_DONE_EVENT_DATA1_FID_MASK 0xffffUL
11123322479eSMichael Chan 	#define ASYNC_EVENT_CMPL_EEM_CACHE_FLUSH_DONE_EVENT_DATA1_FID_SFT 0
11133322479eSMichael Chan };
11143322479eSMichael Chan 
11159d6b648cSMichael Chan /* hwrm_async_event_cmpl_deferred_response (size:128b/16B) */
11169d6b648cSMichael Chan struct hwrm_async_event_cmpl_deferred_response {
11179d6b648cSMichael Chan 	__le16	type;
11189d6b648cSMichael Chan 	#define ASYNC_EVENT_CMPL_DEFERRED_RESPONSE_TYPE_MASK            0x3fUL
11199d6b648cSMichael Chan 	#define ASYNC_EVENT_CMPL_DEFERRED_RESPONSE_TYPE_SFT             0
11209d6b648cSMichael Chan 	#define ASYNC_EVENT_CMPL_DEFERRED_RESPONSE_TYPE_HWRM_ASYNC_EVENT  0x2eUL
11219d6b648cSMichael Chan 	#define ASYNC_EVENT_CMPL_DEFERRED_RESPONSE_TYPE_LAST             ASYNC_EVENT_CMPL_DEFERRED_RESPONSE_TYPE_HWRM_ASYNC_EVENT
11229d6b648cSMichael Chan 	__le16	event_id;
11239d6b648cSMichael Chan 	#define ASYNC_EVENT_CMPL_DEFERRED_RESPONSE_EVENT_ID_DEFERRED_RESPONSE 0x40UL
11249d6b648cSMichael Chan 	#define ASYNC_EVENT_CMPL_DEFERRED_RESPONSE_EVENT_ID_LAST             ASYNC_EVENT_CMPL_DEFERRED_RESPONSE_EVENT_ID_DEFERRED_RESPONSE
11259d6b648cSMichael Chan 	__le32	event_data2;
11269d6b648cSMichael Chan 	#define ASYNC_EVENT_CMPL_DEFERRED_RESPONSE_EVENT_DATA2_SEQ_ID_MASK 0xffffUL
11279d6b648cSMichael Chan 	#define ASYNC_EVENT_CMPL_DEFERRED_RESPONSE_EVENT_DATA2_SEQ_ID_SFT 0
11289d6b648cSMichael Chan 	u8	opaque_v;
11299d6b648cSMichael Chan 	#define ASYNC_EVENT_CMPL_DEFERRED_RESPONSE_V          0x1UL
11309d6b648cSMichael Chan 	#define ASYNC_EVENT_CMPL_DEFERRED_RESPONSE_OPAQUE_MASK 0xfeUL
11319d6b648cSMichael Chan 	#define ASYNC_EVENT_CMPL_DEFERRED_RESPONSE_OPAQUE_SFT 1
11329d6b648cSMichael Chan 	u8	timestamp_lo;
11339d6b648cSMichael Chan 	__le16	timestamp_hi;
11349d6b648cSMichael Chan 	__le32	event_data1;
11359d6b648cSMichael Chan };
11369d6b648cSMichael Chan 
113731f67c2eSMichael Chan /* hwrm_async_event_cmpl_echo_request (size:128b/16B) */
113831f67c2eSMichael Chan struct hwrm_async_event_cmpl_echo_request {
113931f67c2eSMichael Chan 	__le16	type;
114031f67c2eSMichael Chan 	#define ASYNC_EVENT_CMPL_ECHO_REQUEST_TYPE_MASK            0x3fUL
114131f67c2eSMichael Chan 	#define ASYNC_EVENT_CMPL_ECHO_REQUEST_TYPE_SFT             0
114231f67c2eSMichael Chan 	#define ASYNC_EVENT_CMPL_ECHO_REQUEST_TYPE_HWRM_ASYNC_EVENT  0x2eUL
114331f67c2eSMichael Chan 	#define ASYNC_EVENT_CMPL_ECHO_REQUEST_TYPE_LAST             ASYNC_EVENT_CMPL_ECHO_REQUEST_TYPE_HWRM_ASYNC_EVENT
114431f67c2eSMichael Chan 	__le16	event_id;
114531f67c2eSMichael Chan 	#define ASYNC_EVENT_CMPL_ECHO_REQUEST_EVENT_ID_ECHO_REQUEST 0x42UL
114631f67c2eSMichael Chan 	#define ASYNC_EVENT_CMPL_ECHO_REQUEST_EVENT_ID_LAST        ASYNC_EVENT_CMPL_ECHO_REQUEST_EVENT_ID_ECHO_REQUEST
114731f67c2eSMichael Chan 	__le32	event_data2;
114831f67c2eSMichael Chan 	u8	opaque_v;
114931f67c2eSMichael Chan 	#define ASYNC_EVENT_CMPL_ECHO_REQUEST_V          0x1UL
115031f67c2eSMichael Chan 	#define ASYNC_EVENT_CMPL_ECHO_REQUEST_OPAQUE_MASK 0xfeUL
115131f67c2eSMichael Chan 	#define ASYNC_EVENT_CMPL_ECHO_REQUEST_OPAQUE_SFT 1
115231f67c2eSMichael Chan 	u8	timestamp_lo;
115331f67c2eSMichael Chan 	__le16	timestamp_hi;
115431f67c2eSMichael Chan 	__le32	event_data1;
115531f67c2eSMichael Chan };
115631f67c2eSMichael Chan 
11572895c153SMichael Chan /* hwrm_async_event_cmpl_phc_update (size:128b/16B) */
11582895c153SMichael Chan struct hwrm_async_event_cmpl_phc_update {
115978eeadb8SMichael Chan 	__le16	type;
11602895c153SMichael Chan 	#define ASYNC_EVENT_CMPL_PHC_UPDATE_TYPE_MASK            0x3fUL
11612895c153SMichael Chan 	#define ASYNC_EVENT_CMPL_PHC_UPDATE_TYPE_SFT             0
11622895c153SMichael Chan 	#define ASYNC_EVENT_CMPL_PHC_UPDATE_TYPE_HWRM_ASYNC_EVENT  0x2eUL
11632895c153SMichael Chan 	#define ASYNC_EVENT_CMPL_PHC_UPDATE_TYPE_LAST             ASYNC_EVENT_CMPL_PHC_UPDATE_TYPE_HWRM_ASYNC_EVENT
116478eeadb8SMichael Chan 	__le16	event_id;
11652895c153SMichael Chan 	#define ASYNC_EVENT_CMPL_PHC_UPDATE_EVENT_ID_PHC_UPDATE 0x43UL
11662895c153SMichael Chan 	#define ASYNC_EVENT_CMPL_PHC_UPDATE_EVENT_ID_LAST      ASYNC_EVENT_CMPL_PHC_UPDATE_EVENT_ID_PHC_UPDATE
116778eeadb8SMichael Chan 	__le32	event_data2;
11682895c153SMichael Chan 	#define ASYNC_EVENT_CMPL_PHC_UPDATE_EVENT_DATA2_PHC_MASTER_FID_MASK 0xffffUL
11692895c153SMichael Chan 	#define ASYNC_EVENT_CMPL_PHC_UPDATE_EVENT_DATA2_PHC_MASTER_FID_SFT 0
11702895c153SMichael Chan 	#define ASYNC_EVENT_CMPL_PHC_UPDATE_EVENT_DATA2_PHC_SEC_FID_MASK   0xffff0000UL
11712895c153SMichael Chan 	#define ASYNC_EVENT_CMPL_PHC_UPDATE_EVENT_DATA2_PHC_SEC_FID_SFT    16
117278eeadb8SMichael Chan 	u8	opaque_v;
11732895c153SMichael Chan 	#define ASYNC_EVENT_CMPL_PHC_UPDATE_V          0x1UL
11742895c153SMichael Chan 	#define ASYNC_EVENT_CMPL_PHC_UPDATE_OPAQUE_MASK 0xfeUL
11752895c153SMichael Chan 	#define ASYNC_EVENT_CMPL_PHC_UPDATE_OPAQUE_SFT 1
117678eeadb8SMichael Chan 	u8	timestamp_lo;
117778eeadb8SMichael Chan 	__le16	timestamp_hi;
117878eeadb8SMichael Chan 	__le32	event_data1;
11792895c153SMichael Chan 	#define ASYNC_EVENT_CMPL_PHC_UPDATE_EVENT_DATA1_FLAGS_MASK          0xfUL
11802895c153SMichael Chan 	#define ASYNC_EVENT_CMPL_PHC_UPDATE_EVENT_DATA1_FLAGS_SFT           0
11812895c153SMichael Chan 	#define ASYNC_EVENT_CMPL_PHC_UPDATE_EVENT_DATA1_FLAGS_PHC_MASTER      0x1UL
11822895c153SMichael Chan 	#define ASYNC_EVENT_CMPL_PHC_UPDATE_EVENT_DATA1_FLAGS_PHC_SECONDARY   0x2UL
11832895c153SMichael Chan 	#define ASYNC_EVENT_CMPL_PHC_UPDATE_EVENT_DATA1_FLAGS_PHC_FAILOVER    0x3UL
11842895c153SMichael Chan 	#define ASYNC_EVENT_CMPL_PHC_UPDATE_EVENT_DATA1_FLAGS_PHC_RTC_UPDATE  0x4UL
11852895c153SMichael Chan 	#define ASYNC_EVENT_CMPL_PHC_UPDATE_EVENT_DATA1_FLAGS_LAST           ASYNC_EVENT_CMPL_PHC_UPDATE_EVENT_DATA1_FLAGS_PHC_RTC_UPDATE
11862895c153SMichael Chan 	#define ASYNC_EVENT_CMPL_PHC_UPDATE_EVENT_DATA1_PHC_TIME_MSB_MASK   0xffff0UL
11872895c153SMichael Chan 	#define ASYNC_EVENT_CMPL_PHC_UPDATE_EVENT_DATA1_PHC_TIME_MSB_SFT    4
118878eeadb8SMichael Chan };
118978eeadb8SMichael Chan 
119078eeadb8SMichael Chan /* hwrm_async_event_cmpl_pps_timestamp (size:128b/16B) */
119178eeadb8SMichael Chan struct hwrm_async_event_cmpl_pps_timestamp {
119278eeadb8SMichael Chan 	__le16	type;
119378eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_PPS_TIMESTAMP_TYPE_MASK            0x3fUL
119478eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_PPS_TIMESTAMP_TYPE_SFT             0
119578eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_PPS_TIMESTAMP_TYPE_HWRM_ASYNC_EVENT  0x2eUL
119678eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_PPS_TIMESTAMP_TYPE_LAST             ASYNC_EVENT_CMPL_PPS_TIMESTAMP_TYPE_HWRM_ASYNC_EVENT
119778eeadb8SMichael Chan 	__le16	event_id;
119878eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_PPS_TIMESTAMP_EVENT_ID_PPS_TIMESTAMP 0x44UL
119978eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_PPS_TIMESTAMP_EVENT_ID_LAST         ASYNC_EVENT_CMPL_PPS_TIMESTAMP_EVENT_ID_PPS_TIMESTAMP
120078eeadb8SMichael Chan 	__le32	event_data2;
120178eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_PPS_TIMESTAMP_EVENT_DATA2_EVENT_TYPE              0x1UL
120278eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_PPS_TIMESTAMP_EVENT_DATA2_EVENT_TYPE_INTERNAL       0x0UL
120378eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_PPS_TIMESTAMP_EVENT_DATA2_EVENT_TYPE_EXTERNAL       0x1UL
120478eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_PPS_TIMESTAMP_EVENT_DATA2_EVENT_TYPE_LAST          ASYNC_EVENT_CMPL_PPS_TIMESTAMP_EVENT_DATA2_EVENT_TYPE_EXTERNAL
120578eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_PPS_TIMESTAMP_EVENT_DATA2_PIN_NUMBER_MASK         0xeUL
120678eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_PPS_TIMESTAMP_EVENT_DATA2_PIN_NUMBER_SFT          1
120778eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_PPS_TIMESTAMP_EVENT_DATA2_PPS_TIMESTAMP_UPPER_MASK 0xffff0UL
120878eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_PPS_TIMESTAMP_EVENT_DATA2_PPS_TIMESTAMP_UPPER_SFT 4
120978eeadb8SMichael Chan 	u8	opaque_v;
121078eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_PPS_TIMESTAMP_V          0x1UL
121178eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_PPS_TIMESTAMP_OPAQUE_MASK 0xfeUL
121278eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_PPS_TIMESTAMP_OPAQUE_SFT 1
121378eeadb8SMichael Chan 	u8	timestamp_lo;
121478eeadb8SMichael Chan 	__le16	timestamp_hi;
121578eeadb8SMichael Chan 	__le32	event_data1;
121678eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_PPS_TIMESTAMP_EVENT_DATA1_PPS_TIMESTAMP_LOWER_MASK 0xffffffffUL
121778eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_PPS_TIMESTAMP_EVENT_DATA1_PPS_TIMESTAMP_LOWER_SFT 0
121878eeadb8SMichael Chan };
121978eeadb8SMichael Chan 
122078eeadb8SMichael Chan /* hwrm_async_event_cmpl_error_report (size:128b/16B) */
122178eeadb8SMichael Chan struct hwrm_async_event_cmpl_error_report {
122278eeadb8SMichael Chan 	__le16	type;
122378eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_TYPE_MASK            0x3fUL
122478eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_TYPE_SFT             0
122578eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_TYPE_HWRM_ASYNC_EVENT  0x2eUL
122678eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_TYPE_LAST             ASYNC_EVENT_CMPL_ERROR_REPORT_TYPE_HWRM_ASYNC_EVENT
122778eeadb8SMichael Chan 	__le16	event_id;
122878eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_EVENT_ID_ERROR_REPORT 0x45UL
122978eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_EVENT_ID_LAST        ASYNC_EVENT_CMPL_ERROR_REPORT_EVENT_ID_ERROR_REPORT
123078eeadb8SMichael Chan 	__le32	event_data2;
123178eeadb8SMichael Chan 	u8	opaque_v;
123278eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_V          0x1UL
123378eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_OPAQUE_MASK 0xfeUL
123478eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_OPAQUE_SFT 1
123578eeadb8SMichael Chan 	u8	timestamp_lo;
123678eeadb8SMichael Chan 	__le16	timestamp_hi;
123778eeadb8SMichael Chan 	__le32	event_data1;
123878eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_EVENT_DATA1_ERROR_TYPE_MASK 0xffUL
123978eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_EVENT_DATA1_ERROR_TYPE_SFT 0
124078eeadb8SMichael Chan };
124178eeadb8SMichael Chan 
124278eeadb8SMichael Chan /* hwrm_async_event_cmpl_hwrm_error (size:128b/16B) */
124378eeadb8SMichael Chan struct hwrm_async_event_cmpl_hwrm_error {
124478eeadb8SMichael Chan 	__le16	type;
124578eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_HWRM_ERROR_TYPE_MASK            0x3fUL
124678eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_HWRM_ERROR_TYPE_SFT             0
124778eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_HWRM_ERROR_TYPE_HWRM_ASYNC_EVENT  0x2eUL
124878eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_HWRM_ERROR_TYPE_LAST             ASYNC_EVENT_CMPL_HWRM_ERROR_TYPE_HWRM_ASYNC_EVENT
124978eeadb8SMichael Chan 	__le16	event_id;
125078eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_ID_HWRM_ERROR 0xffUL
125178eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_ID_LAST      ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_ID_HWRM_ERROR
125278eeadb8SMichael Chan 	__le32	event_data2;
125378eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_DATA2_SEVERITY_MASK    0xffUL
125478eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_DATA2_SEVERITY_SFT     0
125578eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_DATA2_SEVERITY_WARNING   0x0UL
125678eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_DATA2_SEVERITY_NONFATAL  0x1UL
125778eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_DATA2_SEVERITY_FATAL     0x2UL
125878eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_DATA2_SEVERITY_LAST     ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_DATA2_SEVERITY_FATAL
125978eeadb8SMichael Chan 	u8	opaque_v;
126078eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_HWRM_ERROR_V          0x1UL
126178eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_HWRM_ERROR_OPAQUE_MASK 0xfeUL
126278eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_HWRM_ERROR_OPAQUE_SFT 1
126378eeadb8SMichael Chan 	u8	timestamp_lo;
126478eeadb8SMichael Chan 	__le16	timestamp_hi;
126578eeadb8SMichael Chan 	__le32	event_data1;
126678eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_DATA1_TIMESTAMP     0x1UL
126778eeadb8SMichael Chan };
126878eeadb8SMichael Chan 
126978eeadb8SMichael Chan /* hwrm_async_event_cmpl_error_report_base (size:128b/16B) */
127078eeadb8SMichael Chan struct hwrm_async_event_cmpl_error_report_base {
127178eeadb8SMichael Chan 	__le16	type;
127278eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_BASE_TYPE_MASK            0x3fUL
127378eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_BASE_TYPE_SFT             0
127478eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_BASE_TYPE_HWRM_ASYNC_EVENT  0x2eUL
127578eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_BASE_TYPE_LAST             ASYNC_EVENT_CMPL_ERROR_REPORT_BASE_TYPE_HWRM_ASYNC_EVENT
127678eeadb8SMichael Chan 	__le16	event_id;
127778eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_BASE_EVENT_ID_ERROR_REPORT 0x45UL
127878eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_BASE_EVENT_ID_LAST        ASYNC_EVENT_CMPL_ERROR_REPORT_BASE_EVENT_ID_ERROR_REPORT
127978eeadb8SMichael Chan 	__le32	event_data2;
128078eeadb8SMichael Chan 	u8	opaque_v;
128178eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_BASE_V          0x1UL
128278eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_BASE_OPAQUE_MASK 0xfeUL
128378eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_BASE_OPAQUE_SFT 1
128478eeadb8SMichael Chan 	u8	timestamp_lo;
128578eeadb8SMichael Chan 	__le16	timestamp_hi;
128678eeadb8SMichael Chan 	__le32	event_data1;
128778eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_BASE_EVENT_DATA1_ERROR_TYPE_MASK                   0xffUL
128878eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_BASE_EVENT_DATA1_ERROR_TYPE_SFT                    0
128978eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_BASE_EVENT_DATA1_ERROR_TYPE_RESERVED                 0x0UL
129078eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_BASE_EVENT_DATA1_ERROR_TYPE_PAUSE_STORM              0x1UL
129178eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_BASE_EVENT_DATA1_ERROR_TYPE_INVALID_SIGNAL           0x2UL
129278eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_BASE_EVENT_DATA1_ERROR_TYPE_NVM                      0x3UL
1293fbfee257SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_BASE_EVENT_DATA1_ERROR_TYPE_DOORBELL_DROP_THRESHOLD  0x4UL
1294ad04cc05SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_BASE_EVENT_DATA1_ERROR_TYPE_THERMAL_THRESHOLD        0x5UL
1295ad04cc05SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_BASE_EVENT_DATA1_ERROR_TYPE_LAST                    ASYNC_EVENT_CMPL_ERROR_REPORT_BASE_EVENT_DATA1_ERROR_TYPE_THERMAL_THRESHOLD
129678eeadb8SMichael Chan };
129778eeadb8SMichael Chan 
129878eeadb8SMichael Chan /* hwrm_async_event_cmpl_error_report_pause_storm (size:128b/16B) */
129978eeadb8SMichael Chan struct hwrm_async_event_cmpl_error_report_pause_storm {
130078eeadb8SMichael Chan 	__le16	type;
130178eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_PAUSE_STORM_TYPE_MASK            0x3fUL
130278eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_PAUSE_STORM_TYPE_SFT             0
130378eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_PAUSE_STORM_TYPE_HWRM_ASYNC_EVENT  0x2eUL
130478eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_PAUSE_STORM_TYPE_LAST             ASYNC_EVENT_CMPL_ERROR_REPORT_PAUSE_STORM_TYPE_HWRM_ASYNC_EVENT
130578eeadb8SMichael Chan 	__le16	event_id;
130678eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_PAUSE_STORM_EVENT_ID_ERROR_REPORT 0x45UL
130778eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_PAUSE_STORM_EVENT_ID_LAST        ASYNC_EVENT_CMPL_ERROR_REPORT_PAUSE_STORM_EVENT_ID_ERROR_REPORT
130878eeadb8SMichael Chan 	__le32	event_data2;
130978eeadb8SMichael Chan 	u8	opaque_v;
131078eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_PAUSE_STORM_V          0x1UL
131178eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_PAUSE_STORM_OPAQUE_MASK 0xfeUL
131278eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_PAUSE_STORM_OPAQUE_SFT 1
131378eeadb8SMichael Chan 	u8	timestamp_lo;
131478eeadb8SMichael Chan 	__le16	timestamp_hi;
131578eeadb8SMichael Chan 	__le32	event_data1;
131678eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_PAUSE_STORM_EVENT_DATA1_ERROR_TYPE_MASK       0xffUL
131778eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_PAUSE_STORM_EVENT_DATA1_ERROR_TYPE_SFT        0
131878eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_PAUSE_STORM_EVENT_DATA1_ERROR_TYPE_PAUSE_STORM  0x1UL
131978eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_PAUSE_STORM_EVENT_DATA1_ERROR_TYPE_LAST        ASYNC_EVENT_CMPL_ERROR_REPORT_PAUSE_STORM_EVENT_DATA1_ERROR_TYPE_PAUSE_STORM
132078eeadb8SMichael Chan };
132178eeadb8SMichael Chan 
132278eeadb8SMichael Chan /* hwrm_async_event_cmpl_error_report_invalid_signal (size:128b/16B) */
132378eeadb8SMichael Chan struct hwrm_async_event_cmpl_error_report_invalid_signal {
132478eeadb8SMichael Chan 	__le16	type;
132578eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_INVALID_SIGNAL_TYPE_MASK            0x3fUL
132678eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_INVALID_SIGNAL_TYPE_SFT             0
132778eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_INVALID_SIGNAL_TYPE_HWRM_ASYNC_EVENT  0x2eUL
132878eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_INVALID_SIGNAL_TYPE_LAST             ASYNC_EVENT_CMPL_ERROR_REPORT_INVALID_SIGNAL_TYPE_HWRM_ASYNC_EVENT
132978eeadb8SMichael Chan 	__le16	event_id;
133078eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_INVALID_SIGNAL_EVENT_ID_ERROR_REPORT 0x45UL
133178eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_INVALID_SIGNAL_EVENT_ID_LAST        ASYNC_EVENT_CMPL_ERROR_REPORT_INVALID_SIGNAL_EVENT_ID_ERROR_REPORT
133278eeadb8SMichael Chan 	__le32	event_data2;
133378eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_INVALID_SIGNAL_EVENT_DATA2_PIN_ID_MASK 0xffUL
133478eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_INVALID_SIGNAL_EVENT_DATA2_PIN_ID_SFT 0
133578eeadb8SMichael Chan 	u8	opaque_v;
133678eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_INVALID_SIGNAL_V          0x1UL
133778eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_INVALID_SIGNAL_OPAQUE_MASK 0xfeUL
133878eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_INVALID_SIGNAL_OPAQUE_SFT 1
133978eeadb8SMichael Chan 	u8	timestamp_lo;
134078eeadb8SMichael Chan 	__le16	timestamp_hi;
134178eeadb8SMichael Chan 	__le32	event_data1;
134278eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_INVALID_SIGNAL_EVENT_DATA1_ERROR_TYPE_MASK          0xffUL
134378eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_INVALID_SIGNAL_EVENT_DATA1_ERROR_TYPE_SFT           0
134478eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_INVALID_SIGNAL_EVENT_DATA1_ERROR_TYPE_INVALID_SIGNAL  0x2UL
134578eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_INVALID_SIGNAL_EVENT_DATA1_ERROR_TYPE_LAST           ASYNC_EVENT_CMPL_ERROR_REPORT_INVALID_SIGNAL_EVENT_DATA1_ERROR_TYPE_INVALID_SIGNAL
134678eeadb8SMichael Chan };
134778eeadb8SMichael Chan 
134878eeadb8SMichael Chan /* hwrm_async_event_cmpl_error_report_nvm (size:128b/16B) */
134978eeadb8SMichael Chan struct hwrm_async_event_cmpl_error_report_nvm {
135078eeadb8SMichael Chan 	__le16	type;
135178eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_NVM_TYPE_MASK            0x3fUL
135278eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_NVM_TYPE_SFT             0
135378eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_NVM_TYPE_HWRM_ASYNC_EVENT  0x2eUL
135478eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_NVM_TYPE_LAST             ASYNC_EVENT_CMPL_ERROR_REPORT_NVM_TYPE_HWRM_ASYNC_EVENT
135578eeadb8SMichael Chan 	__le16	event_id;
135678eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_NVM_EVENT_ID_ERROR_REPORT 0x45UL
135778eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_NVM_EVENT_ID_LAST        ASYNC_EVENT_CMPL_ERROR_REPORT_NVM_EVENT_ID_ERROR_REPORT
135878eeadb8SMichael Chan 	__le32	event_data2;
135978eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_NVM_EVENT_DATA2_ERR_ADDR_MASK 0xffffffffUL
136078eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_NVM_EVENT_DATA2_ERR_ADDR_SFT 0
136178eeadb8SMichael Chan 	u8	opaque_v;
136278eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_NVM_V          0x1UL
136378eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_NVM_OPAQUE_MASK 0xfeUL
136478eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_NVM_OPAQUE_SFT 1
136578eeadb8SMichael Chan 	u8	timestamp_lo;
136678eeadb8SMichael Chan 	__le16	timestamp_hi;
136778eeadb8SMichael Chan 	__le32	event_data1;
136878eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_NVM_EVENT_DATA1_ERROR_TYPE_MASK     0xffUL
136978eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_NVM_EVENT_DATA1_ERROR_TYPE_SFT      0
137078eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_NVM_EVENT_DATA1_ERROR_TYPE_NVM_ERROR  0x3UL
137178eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_NVM_EVENT_DATA1_ERROR_TYPE_LAST      ASYNC_EVENT_CMPL_ERROR_REPORT_NVM_EVENT_DATA1_ERROR_TYPE_NVM_ERROR
137278eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_NVM_EVENT_DATA1_NVM_ERR_TYPE_MASK   0xff00UL
137378eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_NVM_EVENT_DATA1_NVM_ERR_TYPE_SFT    8
137478eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_NVM_EVENT_DATA1_NVM_ERR_TYPE_WRITE    (0x1UL << 8)
137578eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_NVM_EVENT_DATA1_NVM_ERR_TYPE_ERASE    (0x2UL << 8)
137678eeadb8SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_NVM_EVENT_DATA1_NVM_ERR_TYPE_LAST    ASYNC_EVENT_CMPL_ERROR_REPORT_NVM_EVENT_DATA1_NVM_ERR_TYPE_ERASE
137778eeadb8SMichael Chan };
137878eeadb8SMichael Chan 
13792895c153SMichael Chan /* hwrm_async_event_cmpl_error_report_doorbell_drop_threshold (size:128b/16B) */
13802895c153SMichael Chan struct hwrm_async_event_cmpl_error_report_doorbell_drop_threshold {
13812895c153SMichael Chan 	__le16	type;
13822895c153SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_DOORBELL_DROP_THRESHOLD_TYPE_MASK            0x3fUL
13832895c153SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_DOORBELL_DROP_THRESHOLD_TYPE_SFT             0
13842895c153SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_DOORBELL_DROP_THRESHOLD_TYPE_HWRM_ASYNC_EVENT  0x2eUL
13852895c153SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_DOORBELL_DROP_THRESHOLD_TYPE_LAST             ASYNC_EVENT_CMPL_ERROR_REPORT_DOORBELL_DROP_THRESHOLD_TYPE_HWRM_ASYNC_EVENT
13862895c153SMichael Chan 	__le16	event_id;
13872895c153SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_DOORBELL_DROP_THRESHOLD_EVENT_ID_ERROR_REPORT 0x45UL
13882895c153SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_DOORBELL_DROP_THRESHOLD_EVENT_ID_LAST        ASYNC_EVENT_CMPL_ERROR_REPORT_DOORBELL_DROP_THRESHOLD_EVENT_ID_ERROR_REPORT
13892895c153SMichael Chan 	__le32	event_data2;
13902895c153SMichael Chan 	u8	opaque_v;
13912895c153SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_DOORBELL_DROP_THRESHOLD_V          0x1UL
13922895c153SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_DOORBELL_DROP_THRESHOLD_OPAQUE_MASK 0xfeUL
13932895c153SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_DOORBELL_DROP_THRESHOLD_OPAQUE_SFT 1
13942895c153SMichael Chan 	u8	timestamp_lo;
13952895c153SMichael Chan 	__le16	timestamp_hi;
13962895c153SMichael Chan 	__le32	event_data1;
13972895c153SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_DOORBELL_DROP_THRESHOLD_EVENT_DATA1_ERROR_TYPE_MASK                   0xffUL
13982895c153SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_DOORBELL_DROP_THRESHOLD_EVENT_DATA1_ERROR_TYPE_SFT                    0
13992895c153SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_DOORBELL_DROP_THRESHOLD_EVENT_DATA1_ERROR_TYPE_DOORBELL_DROP_THRESHOLD  0x4UL
14002895c153SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_DOORBELL_DROP_THRESHOLD_EVENT_DATA1_ERROR_TYPE_LAST                    ASYNC_EVENT_CMPL_ERROR_REPORT_DOORBELL_DROP_THRESHOLD_EVENT_DATA1_ERROR_TYPE_DOORBELL_DROP_THRESHOLD
1401ad04cc05SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_DOORBELL_DROP_THRESHOLD_EVENT_DATA1_EPOCH_MASK                        0xffffff00UL
1402ad04cc05SMichael Chan 	#define ASYNC_EVENT_CMPL_ERROR_REPORT_DOORBELL_DROP_THRESHOLD_EVENT_DATA1_EPOCH_SFT                         8
14032895c153SMichael Chan };
14042895c153SMichael Chan 
1405894aa69aSMichael Chan /* hwrm_func_reset_input (size:192b/24B) */
1406c0c050c5SMichael Chan struct hwrm_func_reset_input {
1407c0c050c5SMichael Chan 	__le16	req_type;
1408c0c050c5SMichael Chan 	__le16	cmpl_ring;
1409c0c050c5SMichael Chan 	__le16	seq_id;
1410c0c050c5SMichael Chan 	__le16	target_id;
1411c0c050c5SMichael Chan 	__le64	resp_addr;
1412c0c050c5SMichael Chan 	__le32	enables;
1413c0c050c5SMichael Chan 	#define FUNC_RESET_REQ_ENABLES_VF_ID_VALID     0x1UL
1414c0c050c5SMichael Chan 	__le16	vf_id;
1415c193554eSMichael Chan 	u8	func_reset_level;
1416441cabbbSMichael Chan 	#define FUNC_RESET_REQ_FUNC_RESET_LEVEL_RESETALL      0x0UL
1417441cabbbSMichael Chan 	#define FUNC_RESET_REQ_FUNC_RESET_LEVEL_RESETME       0x1UL
1418441cabbbSMichael Chan 	#define FUNC_RESET_REQ_FUNC_RESET_LEVEL_RESETCHILDREN 0x2UL
1419441cabbbSMichael Chan 	#define FUNC_RESET_REQ_FUNC_RESET_LEVEL_RESETVF       0x3UL
1420894aa69aSMichael Chan 	#define FUNC_RESET_REQ_FUNC_RESET_LEVEL_LAST         FUNC_RESET_REQ_FUNC_RESET_LEVEL_RESETVF
1421c193554eSMichael Chan 	u8	unused_0;
1422c0c050c5SMichael Chan };
1423c0c050c5SMichael Chan 
1424894aa69aSMichael Chan /* hwrm_func_reset_output (size:128b/16B) */
1425c0c050c5SMichael Chan struct hwrm_func_reset_output {
1426c0c050c5SMichael Chan 	__le16	error_code;
1427c0c050c5SMichael Chan 	__le16	req_type;
1428c0c050c5SMichael Chan 	__le16	seq_id;
1429c0c050c5SMichael Chan 	__le16	resp_len;
1430894aa69aSMichael Chan 	u8	unused_0[7];
1431c0c050c5SMichael Chan 	u8	valid;
1432c0c050c5SMichael Chan };
1433c0c050c5SMichael Chan 
1434894aa69aSMichael Chan /* hwrm_func_getfid_input (size:192b/24B) */
1435c0c050c5SMichael Chan struct hwrm_func_getfid_input {
1436c0c050c5SMichael Chan 	__le16	req_type;
1437c0c050c5SMichael Chan 	__le16	cmpl_ring;
1438c0c050c5SMichael Chan 	__le16	seq_id;
1439c0c050c5SMichael Chan 	__le16	target_id;
1440c0c050c5SMichael Chan 	__le64	resp_addr;
1441c0c050c5SMichael Chan 	__le32	enables;
1442c0c050c5SMichael Chan 	#define FUNC_GETFID_REQ_ENABLES_PCI_ID     0x1UL
1443c0c050c5SMichael Chan 	__le16	pci_id;
1444894aa69aSMichael Chan 	u8	unused_0[2];
1445c0c050c5SMichael Chan };
1446c0c050c5SMichael Chan 
1447894aa69aSMichael Chan /* hwrm_func_getfid_output (size:128b/16B) */
1448c0c050c5SMichael Chan struct hwrm_func_getfid_output {
1449c0c050c5SMichael Chan 	__le16	error_code;
1450c0c050c5SMichael Chan 	__le16	req_type;
1451c0c050c5SMichael Chan 	__le16	seq_id;
1452c0c050c5SMichael Chan 	__le16	resp_len;
1453c0c050c5SMichael Chan 	__le16	fid;
1454894aa69aSMichael Chan 	u8	unused_0[5];
1455c0c050c5SMichael Chan 	u8	valid;
1456c0c050c5SMichael Chan };
1457c0c050c5SMichael Chan 
1458894aa69aSMichael Chan /* hwrm_func_vf_alloc_input (size:192b/24B) */
1459c0c050c5SMichael Chan struct hwrm_func_vf_alloc_input {
1460c0c050c5SMichael Chan 	__le16	req_type;
1461c0c050c5SMichael Chan 	__le16	cmpl_ring;
1462c0c050c5SMichael Chan 	__le16	seq_id;
1463c0c050c5SMichael Chan 	__le16	target_id;
1464c0c050c5SMichael Chan 	__le64	resp_addr;
1465c0c050c5SMichael Chan 	__le32	enables;
1466c0c050c5SMichael Chan 	#define FUNC_VF_ALLOC_REQ_ENABLES_FIRST_VF_ID     0x1UL
1467c0c050c5SMichael Chan 	__le16	first_vf_id;
1468c0c050c5SMichael Chan 	__le16	num_vfs;
1469c0c050c5SMichael Chan };
1470c0c050c5SMichael Chan 
1471894aa69aSMichael Chan /* hwrm_func_vf_alloc_output (size:128b/16B) */
1472c0c050c5SMichael Chan struct hwrm_func_vf_alloc_output {
1473c0c050c5SMichael Chan 	__le16	error_code;
1474c0c050c5SMichael Chan 	__le16	req_type;
1475c0c050c5SMichael Chan 	__le16	seq_id;
1476c0c050c5SMichael Chan 	__le16	resp_len;
1477c0c050c5SMichael Chan 	__le16	first_vf_id;
1478894aa69aSMichael Chan 	u8	unused_0[5];
1479c0c050c5SMichael Chan 	u8	valid;
1480c0c050c5SMichael Chan };
1481c0c050c5SMichael Chan 
1482894aa69aSMichael Chan /* hwrm_func_vf_free_input (size:192b/24B) */
1483c0c050c5SMichael Chan struct hwrm_func_vf_free_input {
1484c0c050c5SMichael Chan 	__le16	req_type;
1485c0c050c5SMichael Chan 	__le16	cmpl_ring;
1486c0c050c5SMichael Chan 	__le16	seq_id;
1487c0c050c5SMichael Chan 	__le16	target_id;
1488c0c050c5SMichael Chan 	__le64	resp_addr;
1489c0c050c5SMichael Chan 	__le32	enables;
1490c0c050c5SMichael Chan 	#define FUNC_VF_FREE_REQ_ENABLES_FIRST_VF_ID     0x1UL
1491c0c050c5SMichael Chan 	__le16	first_vf_id;
1492c0c050c5SMichael Chan 	__le16	num_vfs;
1493c0c050c5SMichael Chan };
1494c0c050c5SMichael Chan 
1495894aa69aSMichael Chan /* hwrm_func_vf_free_output (size:128b/16B) */
1496c0c050c5SMichael Chan struct hwrm_func_vf_free_output {
1497c0c050c5SMichael Chan 	__le16	error_code;
1498c0c050c5SMichael Chan 	__le16	req_type;
1499c0c050c5SMichael Chan 	__le16	seq_id;
1500c0c050c5SMichael Chan 	__le16	resp_len;
1501894aa69aSMichael Chan 	u8	unused_0[7];
1502c0c050c5SMichael Chan 	u8	valid;
1503c0c050c5SMichael Chan };
1504c0c050c5SMichael Chan 
1505894aa69aSMichael Chan /* hwrm_func_vf_cfg_input (size:448b/56B) */
1506c0c050c5SMichael Chan struct hwrm_func_vf_cfg_input {
1507c0c050c5SMichael Chan 	__le16	req_type;
1508c0c050c5SMichael Chan 	__le16	cmpl_ring;
1509c0c050c5SMichael Chan 	__le16	seq_id;
1510c0c050c5SMichael Chan 	__le16	target_id;
1511c0c050c5SMichael Chan 	__le64	resp_addr;
1512c0c050c5SMichael Chan 	__le32	enables;
1513c0c050c5SMichael Chan 	#define FUNC_VF_CFG_REQ_ENABLES_MTU                  0x1UL
1514c0c050c5SMichael Chan 	#define FUNC_VF_CFG_REQ_ENABLES_GUEST_VLAN           0x2UL
1515c193554eSMichael Chan 	#define FUNC_VF_CFG_REQ_ENABLES_ASYNC_EVENT_CR       0x4UL
151611f15ed3SMichael Chan 	#define FUNC_VF_CFG_REQ_ENABLES_DFLT_MAC_ADDR        0x8UL
1517894aa69aSMichael Chan 	#define FUNC_VF_CFG_REQ_ENABLES_NUM_RSSCOS_CTXS      0x10UL
1518894aa69aSMichael Chan 	#define FUNC_VF_CFG_REQ_ENABLES_NUM_CMPL_RINGS       0x20UL
1519894aa69aSMichael Chan 	#define FUNC_VF_CFG_REQ_ENABLES_NUM_TX_RINGS         0x40UL
1520894aa69aSMichael Chan 	#define FUNC_VF_CFG_REQ_ENABLES_NUM_RX_RINGS         0x80UL
1521894aa69aSMichael Chan 	#define FUNC_VF_CFG_REQ_ENABLES_NUM_L2_CTXS          0x100UL
1522894aa69aSMichael Chan 	#define FUNC_VF_CFG_REQ_ENABLES_NUM_VNICS            0x200UL
1523894aa69aSMichael Chan 	#define FUNC_VF_CFG_REQ_ENABLES_NUM_STAT_CTXS        0x400UL
1524894aa69aSMichael Chan 	#define FUNC_VF_CFG_REQ_ENABLES_NUM_HW_RING_GRPS     0x800UL
1525fbfee257SMichael Chan 	#define FUNC_VF_CFG_REQ_ENABLES_NUM_TX_KEY_CTXS      0x1000UL
1526fbfee257SMichael Chan 	#define FUNC_VF_CFG_REQ_ENABLES_NUM_RX_KEY_CTXS      0x2000UL
1527c0c050c5SMichael Chan 	__le16	mtu;
1528c0c050c5SMichael Chan 	__le16	guest_vlan;
1529c193554eSMichael Chan 	__le16	async_event_cr;
153011f15ed3SMichael Chan 	u8	dflt_mac_addr[6];
1531894aa69aSMichael Chan 	__le32	flags;
1532894aa69aSMichael Chan 	#define FUNC_VF_CFG_REQ_FLAGS_TX_ASSETS_TEST             0x1UL
1533894aa69aSMichael Chan 	#define FUNC_VF_CFG_REQ_FLAGS_RX_ASSETS_TEST             0x2UL
1534894aa69aSMichael Chan 	#define FUNC_VF_CFG_REQ_FLAGS_CMPL_ASSETS_TEST           0x4UL
1535894aa69aSMichael Chan 	#define FUNC_VF_CFG_REQ_FLAGS_RSSCOS_CTX_ASSETS_TEST     0x8UL
1536894aa69aSMichael Chan 	#define FUNC_VF_CFG_REQ_FLAGS_RING_GRP_ASSETS_TEST       0x10UL
1537894aa69aSMichael Chan 	#define FUNC_VF_CFG_REQ_FLAGS_STAT_CTX_ASSETS_TEST       0x20UL
1538894aa69aSMichael Chan 	#define FUNC_VF_CFG_REQ_FLAGS_VNIC_ASSETS_TEST           0x40UL
1539894aa69aSMichael Chan 	#define FUNC_VF_CFG_REQ_FLAGS_L2_CTX_ASSETS_TEST         0x80UL
1540bfc6e5fbSMichael Chan 	#define FUNC_VF_CFG_REQ_FLAGS_PPP_PUSH_MODE_ENABLE       0x100UL
1541bfc6e5fbSMichael Chan 	#define FUNC_VF_CFG_REQ_FLAGS_PPP_PUSH_MODE_DISABLE      0x200UL
1542894aa69aSMichael Chan 	__le16	num_rsscos_ctxs;
1543894aa69aSMichael Chan 	__le16	num_cmpl_rings;
1544894aa69aSMichael Chan 	__le16	num_tx_rings;
1545894aa69aSMichael Chan 	__le16	num_rx_rings;
1546894aa69aSMichael Chan 	__le16	num_l2_ctxs;
1547894aa69aSMichael Chan 	__le16	num_vnics;
1548894aa69aSMichael Chan 	__le16	num_stat_ctxs;
1549894aa69aSMichael Chan 	__le16	num_hw_ring_grps;
1550fbfee257SMichael Chan 	__le16	num_tx_key_ctxs;
1551fbfee257SMichael Chan 	__le16	num_rx_key_ctxs;
1552c0c050c5SMichael Chan };
1553c0c050c5SMichael Chan 
1554894aa69aSMichael Chan /* hwrm_func_vf_cfg_output (size:128b/16B) */
1555c0c050c5SMichael Chan struct hwrm_func_vf_cfg_output {
1556c0c050c5SMichael Chan 	__le16	error_code;
1557c0c050c5SMichael Chan 	__le16	req_type;
1558c0c050c5SMichael Chan 	__le16	seq_id;
1559c0c050c5SMichael Chan 	__le16	resp_len;
1560894aa69aSMichael Chan 	u8	unused_0[7];
1561c0c050c5SMichael Chan 	u8	valid;
1562c0c050c5SMichael Chan };
1563c0c050c5SMichael Chan 
1564894aa69aSMichael Chan /* hwrm_func_qcaps_input (size:192b/24B) */
1565c0c050c5SMichael Chan struct hwrm_func_qcaps_input {
1566c0c050c5SMichael Chan 	__le16	req_type;
1567c0c050c5SMichael Chan 	__le16	cmpl_ring;
1568c0c050c5SMichael Chan 	__le16	seq_id;
1569c0c050c5SMichael Chan 	__le16	target_id;
1570c0c050c5SMichael Chan 	__le64	resp_addr;
1571c0c050c5SMichael Chan 	__le16	fid;
1572894aa69aSMichael Chan 	u8	unused_0[6];
1573c0c050c5SMichael Chan };
1574c0c050c5SMichael Chan 
1575fbfee257SMichael Chan /* hwrm_func_qcaps_output (size:768b/96B) */
1576c0c050c5SMichael Chan struct hwrm_func_qcaps_output {
1577c0c050c5SMichael Chan 	__le16	error_code;
1578c0c050c5SMichael Chan 	__le16	req_type;
1579c0c050c5SMichael Chan 	__le16	seq_id;
1580c0c050c5SMichael Chan 	__le16	resp_len;
1581c0c050c5SMichael Chan 	__le16	fid;
1582c0c050c5SMichael Chan 	__le16	port_id;
1583c0c050c5SMichael Chan 	__le32	flags;
1584c0c050c5SMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_PUSH_MODE_SUPPORTED                   0x1UL
1585c0c050c5SMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_GLOBAL_MSIX_AUTOMASKING               0x2UL
158611f15ed3SMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_PTP_SUPPORTED                         0x4UL
1587a58a3e68SMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_ROCE_V1_SUPPORTED                     0x8UL
1588a58a3e68SMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_ROCE_V2_SUPPORTED                     0x10UL
1589a58a3e68SMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_WOL_MAGICPKT_SUPPORTED                0x20UL
1590a58a3e68SMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_WOL_BMP_SUPPORTED                     0x40UL
1591441cabbbSMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_TX_RING_RL_SUPPORTED                  0x80UL
1592441cabbbSMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_TX_BW_CFG_SUPPORTED                   0x100UL
1593441cabbbSMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_VF_TX_RING_RL_SUPPORTED               0x200UL
1594441cabbbSMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_VF_BW_CFG_SUPPORTED                   0x400UL
159587c374deSMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_STD_TX_RING_MODE_SUPPORTED            0x800UL
1596894aa69aSMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_GENEVE_TUN_FLAGS_SUPPORTED            0x1000UL
1597894aa69aSMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_NVGRE_TUN_FLAGS_SUPPORTED             0x2000UL
1598894aa69aSMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_GRE_TUN_FLAGS_SUPPORTED               0x4000UL
1599894aa69aSMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_MPLS_TUN_FLAGS_SUPPORTED              0x8000UL
1600d4f52de0SMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_PCIE_STATS_SUPPORTED                  0x10000UL
16016fc92c33SMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_ADOPTED_PF_SUPPORTED                  0x20000UL
16026fc92c33SMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_ADMIN_PF_SUPPORTED                    0x40000UL
16036fc92c33SMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_LINK_ADMIN_STATUS_SUPPORTED           0x80000UL
160431d357c0SMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_WCB_PUSH_MODE                         0x100000UL
16053322479eSMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_DYNAMIC_TX_RING_ALLOC                 0x200000UL
16063322479eSMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_HOT_RESET_CAPABLE                     0x400000UL
16073293ec23SMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_ERROR_RECOVERY_CAPABLE                0x800000UL
16084a50ddc2SMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_EXT_STATS_SUPPORTED                   0x1000000UL
160972e0c9f9SMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_ERR_RECOVER_RELOAD                    0x2000000UL
161072e0c9f9SMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_NOTIFY_VF_DEF_VNIC_CHNG_SUPPORTED     0x4000000UL
161141136ab3SMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_VLAN_ACCELERATION_TX_DISABLED         0x8000000UL
1612460c2577SMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_COREDUMP_CMD_SUPPORTED                0x10000000UL
1613460c2577SMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_CRASHDUMP_CMD_SUPPORTED               0x20000000UL
1614460c2577SMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_PFC_WD_STATS_SUPPORTED                0x40000000UL
1615460c2577SMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_DBG_QCAPS_CMD_SUPPORTED               0x80000000UL
161611f15ed3SMichael Chan 	u8	mac_address[6];
1617c0c050c5SMichael Chan 	__le16	max_rsscos_ctx;
1618c0c050c5SMichael Chan 	__le16	max_cmpl_rings;
1619c0c050c5SMichael Chan 	__le16	max_tx_rings;
1620c0c050c5SMichael Chan 	__le16	max_rx_rings;
1621c0c050c5SMichael Chan 	__le16	max_l2_ctxs;
1622c0c050c5SMichael Chan 	__le16	max_vnics;
1623c0c050c5SMichael Chan 	__le16	first_vf_id;
1624c0c050c5SMichael Chan 	__le16	max_vfs;
1625c0c050c5SMichael Chan 	__le16	max_stat_ctx;
1626c0c050c5SMichael Chan 	__le32	max_encap_records;
1627c0c050c5SMichael Chan 	__le32	max_decap_records;
1628c0c050c5SMichael Chan 	__le32	max_tx_em_flows;
1629c0c050c5SMichael Chan 	__le32	max_tx_wm_flows;
1630c0c050c5SMichael Chan 	__le32	max_rx_em_flows;
1631c0c050c5SMichael Chan 	__le32	max_rx_wm_flows;
1632c0c050c5SMichael Chan 	__le32	max_mcast_filters;
1633c0c050c5SMichael Chan 	__le32	max_flow_id;
1634c0c050c5SMichael Chan 	__le32	max_hw_ring_grps;
1635441cabbbSMichael Chan 	__le16	max_sp_tx_rings;
163678eeadb8SMichael Chan 	__le16	max_msix_vfs;
1637460c2577SMichael Chan 	__le32	flags_ext;
1638460c2577SMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_EXT_ECN_MARK_SUPPORTED                          0x1UL
1639460c2577SMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_EXT_ECN_STATS_SUPPORTED                         0x2UL
1640460c2577SMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_EXT_EXT_HW_STATS_SUPPORTED                      0x4UL
1641bfc6e5fbSMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_EXT_HOT_RESET_IF_SUPPORT                        0x8UL
1642bfc6e5fbSMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_EXT_PROXY_MODE_SUPPORT                          0x10UL
1643bfc6e5fbSMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_EXT_TX_PROXY_SRC_INTF_OVERRIDE_SUPPORT          0x20UL
1644bfc6e5fbSMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_EXT_SCHQ_SUPPORTED                              0x40UL
1645bfc6e5fbSMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_EXT_PPP_PUSH_MODE_SUPPORTED                     0x80UL
164616db6323SMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_EXT_EVB_MODE_CFG_NOT_SUPPORTED                  0x100UL
164716db6323SMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_EXT_SOC_SPD_SUPPORTED                           0x200UL
164816db6323SMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_EXT_FW_LIVEPATCH_SUPPORTED                      0x400UL
164916db6323SMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_EXT_FAST_RESET_CAPABLE                          0x800UL
165031f67c2eSMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_EXT_TX_METADATA_CFG_CAPABLE                     0x1000UL
165131f67c2eSMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_EXT_NVM_OPTION_ACTION_SUPPORTED                 0x2000UL
165231f67c2eSMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_EXT_BD_METADATA_SUPPORTED                       0x4000UL
165331f67c2eSMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_EXT_ECHO_REQUEST_SUPPORTED                      0x8000UL
165478eeadb8SMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_EXT_NPAR_1_2_SUPPORTED                          0x10000UL
165578eeadb8SMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_EXT_PTP_PTM_SUPPORTED                           0x20000UL
165678eeadb8SMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_EXT_PTP_PPS_SUPPORTED                           0x40000UL
165778eeadb8SMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_EXT_VF_CFG_ASYNC_FOR_PF_SUPPORTED               0x80000UL
165878eeadb8SMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_EXT_PARTITION_BW_SUPPORTED                      0x100000UL
165978eeadb8SMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_EXT_DFLT_VLAN_TPID_PCP_SUPPORTED                0x200000UL
166078eeadb8SMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_EXT_KTLS_SUPPORTED                              0x400000UL
166178eeadb8SMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_EXT_EP_RATE_CONTROL                             0x800000UL
166221e70778SMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_EXT_MIN_BW_SUPPORTED                            0x1000000UL
166321e70778SMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_EXT_TX_COAL_CMPL_CAP                            0x2000000UL
16642895c153SMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_EXT_BS_V2_SUPPORTED                             0x4000000UL
16652895c153SMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_EXT_BS_V2_REQUIRED                              0x8000000UL
16662895c153SMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_EXT_PTP_64BIT_RTC_SUPPORTED                     0x10000000UL
16672895c153SMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_EXT_DBR_PACING_SUPPORTED                        0x20000000UL
1668ad04cc05SMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_EXT_HW_DBR_DROP_RECOV_SUPPORTED                 0x40000000UL
1669ad04cc05SMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_EXT_DISABLE_CQ_OVERFLOW_DETECTION_SUPPORTED     0x80000000UL
1670bfc6e5fbSMichael Chan 	u8	max_schqs;
16719d6b648cSMichael Chan 	u8	mpc_chnls_cap;
16729d6b648cSMichael Chan 	#define FUNC_QCAPS_RESP_MPC_CHNLS_CAP_TCE         0x1UL
16739d6b648cSMichael Chan 	#define FUNC_QCAPS_RESP_MPC_CHNLS_CAP_RCE         0x2UL
16749d6b648cSMichael Chan 	#define FUNC_QCAPS_RESP_MPC_CHNLS_CAP_TE_CFA      0x4UL
16759d6b648cSMichael Chan 	#define FUNC_QCAPS_RESP_MPC_CHNLS_CAP_RE_CFA      0x8UL
16769d6b648cSMichael Chan 	#define FUNC_QCAPS_RESP_MPC_CHNLS_CAP_PRIMATE     0x10UL
1677fbfee257SMichael Chan 	__le16	max_key_ctxs_alloc;
1678ad04cc05SMichael Chan 	__le32	flags_ext2;
1679ad04cc05SMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_EXT2_RX_ALL_PKTS_TIMESTAMPS_SUPPORTED     0x1UL
1680ad04cc05SMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_EXT2_QUIC_SUPPORTED                       0x2UL
1681ad04cc05SMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_EXT2_KDNET_SUPPORTED                      0x4UL
1682ad04cc05SMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_EXT2_DBR_PACING_EXT_SUPPORTED             0x8UL
1683ad04cc05SMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_EXT2_SW_DBR_DROP_RECOVERY_SUPPORTED       0x10UL
1684ad04cc05SMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_EXT2_GENERIC_STATS_SUPPORTED              0x20UL
168584a911dbSMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_EXT2_UDP_GSO_SUPPORTED                    0x40UL
168684a911dbSMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_EXT2_SYNCE_SUPPORTED                      0x80UL
168784a911dbSMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_EXT2_DBR_PACING_V0_SUPPORTED              0x100UL
168884a911dbSMichael Chan 	#define FUNC_QCAPS_RESP_FLAGS_EXT2_TX_PKT_TS_CMPL_SUPPORTED             0x200UL
1689ad04cc05SMichael Chan 	__le16	tunnel_disable_flag;
1690ad04cc05SMichael Chan 	#define FUNC_QCAPS_RESP_TUNNEL_DISABLE_FLAG_DISABLE_VXLAN      0x1UL
1691ad04cc05SMichael Chan 	#define FUNC_QCAPS_RESP_TUNNEL_DISABLE_FLAG_DISABLE_NGE        0x2UL
1692ad04cc05SMichael Chan 	#define FUNC_QCAPS_RESP_TUNNEL_DISABLE_FLAG_DISABLE_NVGRE      0x4UL
1693ad04cc05SMichael Chan 	#define FUNC_QCAPS_RESP_TUNNEL_DISABLE_FLAG_DISABLE_L2GRE      0x8UL
1694ad04cc05SMichael Chan 	#define FUNC_QCAPS_RESP_TUNNEL_DISABLE_FLAG_DISABLE_GRE        0x10UL
1695ad04cc05SMichael Chan 	#define FUNC_QCAPS_RESP_TUNNEL_DISABLE_FLAG_DISABLE_IPINIP     0x20UL
1696ad04cc05SMichael Chan 	#define FUNC_QCAPS_RESP_TUNNEL_DISABLE_FLAG_DISABLE_MPLS       0x40UL
1697ad04cc05SMichael Chan 	#define FUNC_QCAPS_RESP_TUNNEL_DISABLE_FLAG_DISABLE_PPPOE      0x80UL
1698ad04cc05SMichael Chan 	u8	unused_1;
1699c0c050c5SMichael Chan 	u8	valid;
1700c0c050c5SMichael Chan };
1701c0c050c5SMichael Chan 
1702894aa69aSMichael Chan /* hwrm_func_qcfg_input (size:192b/24B) */
170311f15ed3SMichael Chan struct hwrm_func_qcfg_input {
170411f15ed3SMichael Chan 	__le16	req_type;
170511f15ed3SMichael Chan 	__le16	cmpl_ring;
170611f15ed3SMichael Chan 	__le16	seq_id;
170711f15ed3SMichael Chan 	__le16	target_id;
170811f15ed3SMichael Chan 	__le64	resp_addr;
170911f15ed3SMichael Chan 	__le16	fid;
1710894aa69aSMichael Chan 	u8	unused_0[6];
171111f15ed3SMichael Chan };
171211f15ed3SMichael Chan 
1713fbfee257SMichael Chan /* hwrm_func_qcfg_output (size:896b/112B) */
171411f15ed3SMichael Chan struct hwrm_func_qcfg_output {
171511f15ed3SMichael Chan 	__le16	error_code;
171611f15ed3SMichael Chan 	__le16	req_type;
171711f15ed3SMichael Chan 	__le16	seq_id;
171811f15ed3SMichael Chan 	__le16	resp_len;
171911f15ed3SMichael Chan 	__le16	fid;
172011f15ed3SMichael Chan 	__le16	port_id;
172111f15ed3SMichael Chan 	__le16	vlan;
1722a58a3e68SMichael Chan 	__le16	flags;
1723a58a3e68SMichael Chan 	#define FUNC_QCFG_RESP_FLAGS_OOB_WOL_MAGICPKT_ENABLED     0x1UL
1724a58a3e68SMichael Chan 	#define FUNC_QCFG_RESP_FLAGS_OOB_WOL_BMP_ENABLED          0x2UL
1725441cabbbSMichael Chan 	#define FUNC_QCFG_RESP_FLAGS_FW_DCBX_AGENT_ENABLED        0x4UL
172687c374deSMichael Chan 	#define FUNC_QCFG_RESP_FLAGS_STD_TX_RING_MODE_ENABLED     0x8UL
17278eb992e8SMichael Chan 	#define FUNC_QCFG_RESP_FLAGS_FW_LLDP_AGENT_ENABLED        0x10UL
17288eb992e8SMichael Chan 	#define FUNC_QCFG_RESP_FLAGS_MULTI_HOST                   0x20UL
172931d357c0SMichael Chan 	#define FUNC_QCFG_RESP_FLAGS_TRUSTED_VF                   0x40UL
17303322479eSMichael Chan 	#define FUNC_QCFG_RESP_FLAGS_SECURE_MODE_ENABLED          0x80UL
17312792b5b9SMichael Chan 	#define FUNC_QCFG_RESP_FLAGS_PREBOOT_LEGACY_L2_RINGS      0x100UL
1732bfc6e5fbSMichael Chan 	#define FUNC_QCFG_RESP_FLAGS_HOT_RESET_ALLOWED            0x200UL
1733bfc6e5fbSMichael Chan 	#define FUNC_QCFG_RESP_FLAGS_PPP_PUSH_MODE_ENABLED        0x400UL
17349d6b648cSMichael Chan 	#define FUNC_QCFG_RESP_FLAGS_RING_MONITOR_ENABLED         0x800UL
173516db6323SMichael Chan 	#define FUNC_QCFG_RESP_FLAGS_FAST_RESET_ALLOWED           0x1000UL
173631f67c2eSMichael Chan 	#define FUNC_QCFG_RESP_FLAGS_MULTI_ROOT                   0x2000UL
173778eeadb8SMichael Chan 	#define FUNC_QCFG_RESP_FLAGS_ENABLE_RDMA_SRIOV            0x4000UL
173811f15ed3SMichael Chan 	u8	mac_address[6];
173911f15ed3SMichael Chan 	__le16	pci_id;
174011f15ed3SMichael Chan 	__le16	alloc_rsscos_ctx;
174111f15ed3SMichael Chan 	__le16	alloc_cmpl_rings;
174211f15ed3SMichael Chan 	__le16	alloc_tx_rings;
174311f15ed3SMichael Chan 	__le16	alloc_rx_rings;
174411f15ed3SMichael Chan 	__le16	alloc_l2_ctx;
174511f15ed3SMichael Chan 	__le16	alloc_vnics;
174678eeadb8SMichael Chan 	__le16	admin_mtu;
174711f15ed3SMichael Chan 	__le16	mru;
174811f15ed3SMichael Chan 	__le16	stat_ctx_id;
174911f15ed3SMichael Chan 	u8	port_partition_type;
1750441cabbbSMichael Chan 	#define FUNC_QCFG_RESP_PORT_PARTITION_TYPE_SPF     0x0UL
1751441cabbbSMichael Chan 	#define FUNC_QCFG_RESP_PORT_PARTITION_TYPE_MPFS    0x1UL
1752441cabbbSMichael Chan 	#define FUNC_QCFG_RESP_PORT_PARTITION_TYPE_NPAR1_0 0x2UL
1753441cabbbSMichael Chan 	#define FUNC_QCFG_RESP_PORT_PARTITION_TYPE_NPAR1_5 0x3UL
1754441cabbbSMichael Chan 	#define FUNC_QCFG_RESP_PORT_PARTITION_TYPE_NPAR2_0 0x4UL
175578eeadb8SMichael Chan 	#define FUNC_QCFG_RESP_PORT_PARTITION_TYPE_NPAR1_2 0x5UL
1756441cabbbSMichael Chan 	#define FUNC_QCFG_RESP_PORT_PARTITION_TYPE_UNKNOWN 0xffUL
1757894aa69aSMichael Chan 	#define FUNC_QCFG_RESP_PORT_PARTITION_TYPE_LAST   FUNC_QCFG_RESP_PORT_PARTITION_TYPE_UNKNOWN
17588eb992e8SMichael Chan 	u8	port_pf_cnt;
17598eb992e8SMichael Chan 	#define FUNC_QCFG_RESP_PORT_PF_CNT_UNAVAIL 0x0UL
1760894aa69aSMichael Chan 	#define FUNC_QCFG_RESP_PORT_PF_CNT_LAST   FUNC_QCFG_RESP_PORT_PF_CNT_UNAVAIL
176111f15ed3SMichael Chan 	__le16	dflt_vnic_id;
176257922b0aSMichael Chan 	__le16	max_mtu_configured;
176311f15ed3SMichael Chan 	__le32	min_bw;
1764441cabbbSMichael Chan 	#define FUNC_QCFG_RESP_MIN_BW_BW_VALUE_MASK             0xfffffffUL
1765441cabbbSMichael Chan 	#define FUNC_QCFG_RESP_MIN_BW_BW_VALUE_SFT              0
1766bac9a7e0SMichael Chan 	#define FUNC_QCFG_RESP_MIN_BW_SCALE                     0x10000000UL
1767bac9a7e0SMichael Chan 	#define FUNC_QCFG_RESP_MIN_BW_SCALE_BITS                  (0x0UL << 28)
1768bac9a7e0SMichael Chan 	#define FUNC_QCFG_RESP_MIN_BW_SCALE_BYTES                 (0x1UL << 28)
1769bac9a7e0SMichael Chan 	#define FUNC_QCFG_RESP_MIN_BW_SCALE_LAST                 FUNC_QCFG_RESP_MIN_BW_SCALE_BYTES
1770441cabbbSMichael Chan 	#define FUNC_QCFG_RESP_MIN_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
1771441cabbbSMichael Chan 	#define FUNC_QCFG_RESP_MIN_BW_BW_VALUE_UNIT_SFT         29
1772bac9a7e0SMichael Chan 	#define FUNC_QCFG_RESP_MIN_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
1773bac9a7e0SMichael Chan 	#define FUNC_QCFG_RESP_MIN_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
1774bac9a7e0SMichael Chan 	#define FUNC_QCFG_RESP_MIN_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
1775bac9a7e0SMichael Chan 	#define FUNC_QCFG_RESP_MIN_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
1776441cabbbSMichael Chan 	#define FUNC_QCFG_RESP_MIN_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
1777441cabbbSMichael Chan 	#define FUNC_QCFG_RESP_MIN_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
1778441cabbbSMichael Chan 	#define FUNC_QCFG_RESP_MIN_BW_BW_VALUE_UNIT_LAST         FUNC_QCFG_RESP_MIN_BW_BW_VALUE_UNIT_INVALID
177911f15ed3SMichael Chan 	__le32	max_bw;
1780441cabbbSMichael Chan 	#define FUNC_QCFG_RESP_MAX_BW_BW_VALUE_MASK             0xfffffffUL
1781441cabbbSMichael Chan 	#define FUNC_QCFG_RESP_MAX_BW_BW_VALUE_SFT              0
1782bac9a7e0SMichael Chan 	#define FUNC_QCFG_RESP_MAX_BW_SCALE                     0x10000000UL
1783bac9a7e0SMichael Chan 	#define FUNC_QCFG_RESP_MAX_BW_SCALE_BITS                  (0x0UL << 28)
1784bac9a7e0SMichael Chan 	#define FUNC_QCFG_RESP_MAX_BW_SCALE_BYTES                 (0x1UL << 28)
1785bac9a7e0SMichael Chan 	#define FUNC_QCFG_RESP_MAX_BW_SCALE_LAST                 FUNC_QCFG_RESP_MAX_BW_SCALE_BYTES
1786441cabbbSMichael Chan 	#define FUNC_QCFG_RESP_MAX_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
1787441cabbbSMichael Chan 	#define FUNC_QCFG_RESP_MAX_BW_BW_VALUE_UNIT_SFT         29
1788bac9a7e0SMichael Chan 	#define FUNC_QCFG_RESP_MAX_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
1789bac9a7e0SMichael Chan 	#define FUNC_QCFG_RESP_MAX_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
1790bac9a7e0SMichael Chan 	#define FUNC_QCFG_RESP_MAX_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
1791bac9a7e0SMichael Chan 	#define FUNC_QCFG_RESP_MAX_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
1792441cabbbSMichael Chan 	#define FUNC_QCFG_RESP_MAX_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
1793441cabbbSMichael Chan 	#define FUNC_QCFG_RESP_MAX_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
1794441cabbbSMichael Chan 	#define FUNC_QCFG_RESP_MAX_BW_BW_VALUE_UNIT_LAST         FUNC_QCFG_RESP_MAX_BW_BW_VALUE_UNIT_INVALID
179511f15ed3SMichael Chan 	u8	evb_mode;
1796441cabbbSMichael Chan 	#define FUNC_QCFG_RESP_EVB_MODE_NO_EVB 0x0UL
1797441cabbbSMichael Chan 	#define FUNC_QCFG_RESP_EVB_MODE_VEB    0x1UL
1798441cabbbSMichael Chan 	#define FUNC_QCFG_RESP_EVB_MODE_VEPA   0x2UL
1799894aa69aSMichael Chan 	#define FUNC_QCFG_RESP_EVB_MODE_LAST  FUNC_QCFG_RESP_EVB_MODE_VEPA
1800d4f52de0SMichael Chan 	u8	options;
1801d4f52de0SMichael Chan 	#define FUNC_QCFG_RESP_OPTIONS_CACHE_LINESIZE_MASK         0x3UL
1802d4f52de0SMichael Chan 	#define FUNC_QCFG_RESP_OPTIONS_CACHE_LINESIZE_SFT          0
1803d4f52de0SMichael Chan 	#define FUNC_QCFG_RESP_OPTIONS_CACHE_LINESIZE_SIZE_64        0x0UL
1804d4f52de0SMichael Chan 	#define FUNC_QCFG_RESP_OPTIONS_CACHE_LINESIZE_SIZE_128       0x1UL
1805d4f52de0SMichael Chan 	#define FUNC_QCFG_RESP_OPTIONS_CACHE_LINESIZE_LAST          FUNC_QCFG_RESP_OPTIONS_CACHE_LINESIZE_SIZE_128
18066fc92c33SMichael Chan 	#define FUNC_QCFG_RESP_OPTIONS_LINK_ADMIN_STATE_MASK       0xcUL
18076fc92c33SMichael Chan 	#define FUNC_QCFG_RESP_OPTIONS_LINK_ADMIN_STATE_SFT        2
18086fc92c33SMichael Chan 	#define FUNC_QCFG_RESP_OPTIONS_LINK_ADMIN_STATE_FORCED_DOWN  (0x0UL << 2)
18096fc92c33SMichael Chan 	#define FUNC_QCFG_RESP_OPTIONS_LINK_ADMIN_STATE_FORCED_UP    (0x1UL << 2)
18106fc92c33SMichael Chan 	#define FUNC_QCFG_RESP_OPTIONS_LINK_ADMIN_STATE_AUTO         (0x2UL << 2)
18116fc92c33SMichael Chan 	#define FUNC_QCFG_RESP_OPTIONS_LINK_ADMIN_STATE_LAST        FUNC_QCFG_RESP_OPTIONS_LINK_ADMIN_STATE_AUTO
18126fc92c33SMichael Chan 	#define FUNC_QCFG_RESP_OPTIONS_RSVD_MASK                   0xf0UL
18136fc92c33SMichael Chan 	#define FUNC_QCFG_RESP_OPTIONS_RSVD_SFT                    4
1814441cabbbSMichael Chan 	__le16	alloc_vfs;
181511f15ed3SMichael Chan 	__le32	alloc_mcast_filters;
181611f15ed3SMichael Chan 	__le32	alloc_hw_ring_grps;
1817441cabbbSMichael Chan 	__le16	alloc_sp_tx_rings;
1818894aa69aSMichael Chan 	__le16	alloc_stat_ctx;
18196fc92c33SMichael Chan 	__le16	alloc_msix;
18203322479eSMichael Chan 	__le16	registered_vfs;
182172e0c9f9SMichael Chan 	__le16	l2_doorbell_bar_size_kb;
182272e0c9f9SMichael Chan 	u8	unused_1;
18233322479eSMichael Chan 	u8	always_1;
18243322479eSMichael Chan 	__le32	reset_addr_poll;
182541136ab3SMichael Chan 	__le16	legacy_l2_db_size_kb;
1826460c2577SMichael Chan 	__le16	svif_info;
1827460c2577SMichael Chan 	#define FUNC_QCFG_RESP_SVIF_INFO_SVIF_MASK      0x7fffUL
1828460c2577SMichael Chan 	#define FUNC_QCFG_RESP_SVIF_INFO_SVIF_SFT       0
1829460c2577SMichael Chan 	#define FUNC_QCFG_RESP_SVIF_INFO_SVIF_VALID     0x8000UL
18309d6b648cSMichael Chan 	u8	mpc_chnls;
18319d6b648cSMichael Chan 	#define FUNC_QCFG_RESP_MPC_CHNLS_TCE_ENABLED         0x1UL
18329d6b648cSMichael Chan 	#define FUNC_QCFG_RESP_MPC_CHNLS_RCE_ENABLED         0x2UL
18339d6b648cSMichael Chan 	#define FUNC_QCFG_RESP_MPC_CHNLS_TE_CFA_ENABLED      0x4UL
18349d6b648cSMichael Chan 	#define FUNC_QCFG_RESP_MPC_CHNLS_RE_CFA_ENABLED      0x8UL
18359d6b648cSMichael Chan 	#define FUNC_QCFG_RESP_MPC_CHNLS_PRIMATE_ENABLED     0x10UL
183684a911dbSMichael Chan 	u8	db_page_size;
183784a911dbSMichael Chan 	#define FUNC_QCFG_RESP_DB_PAGE_SIZE_4KB   0x0UL
183884a911dbSMichael Chan 	#define FUNC_QCFG_RESP_DB_PAGE_SIZE_8KB   0x1UL
183984a911dbSMichael Chan 	#define FUNC_QCFG_RESP_DB_PAGE_SIZE_16KB  0x2UL
184084a911dbSMichael Chan 	#define FUNC_QCFG_RESP_DB_PAGE_SIZE_32KB  0x3UL
184184a911dbSMichael Chan 	#define FUNC_QCFG_RESP_DB_PAGE_SIZE_64KB  0x4UL
184284a911dbSMichael Chan 	#define FUNC_QCFG_RESP_DB_PAGE_SIZE_128KB 0x5UL
184384a911dbSMichael Chan 	#define FUNC_QCFG_RESP_DB_PAGE_SIZE_256KB 0x6UL
184484a911dbSMichael Chan 	#define FUNC_QCFG_RESP_DB_PAGE_SIZE_512KB 0x7UL
184584a911dbSMichael Chan 	#define FUNC_QCFG_RESP_DB_PAGE_SIZE_1MB   0x8UL
184684a911dbSMichael Chan 	#define FUNC_QCFG_RESP_DB_PAGE_SIZE_2MB   0x9UL
184784a911dbSMichael Chan 	#define FUNC_QCFG_RESP_DB_PAGE_SIZE_4MB   0xaUL
184884a911dbSMichael Chan 	#define FUNC_QCFG_RESP_DB_PAGE_SIZE_LAST FUNC_QCFG_RESP_DB_PAGE_SIZE_4MB
184984a911dbSMichael Chan 	u8	unused_2[2];
185078eeadb8SMichael Chan 	__le32	partition_min_bw;
185178eeadb8SMichael Chan 	#define FUNC_QCFG_RESP_PARTITION_MIN_BW_BW_VALUE_MASK             0xfffffffUL
185278eeadb8SMichael Chan 	#define FUNC_QCFG_RESP_PARTITION_MIN_BW_BW_VALUE_SFT              0
185378eeadb8SMichael Chan 	#define FUNC_QCFG_RESP_PARTITION_MIN_BW_SCALE                     0x10000000UL
185478eeadb8SMichael Chan 	#define FUNC_QCFG_RESP_PARTITION_MIN_BW_SCALE_BITS                  (0x0UL << 28)
185578eeadb8SMichael Chan 	#define FUNC_QCFG_RESP_PARTITION_MIN_BW_SCALE_BYTES                 (0x1UL << 28)
185678eeadb8SMichael Chan 	#define FUNC_QCFG_RESP_PARTITION_MIN_BW_SCALE_LAST                 FUNC_QCFG_RESP_PARTITION_MIN_BW_SCALE_BYTES
185778eeadb8SMichael Chan 	#define FUNC_QCFG_RESP_PARTITION_MIN_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
185878eeadb8SMichael Chan 	#define FUNC_QCFG_RESP_PARTITION_MIN_BW_BW_VALUE_UNIT_SFT         29
185978eeadb8SMichael Chan 	#define FUNC_QCFG_RESP_PARTITION_MIN_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
186078eeadb8SMichael Chan 	#define FUNC_QCFG_RESP_PARTITION_MIN_BW_BW_VALUE_UNIT_LAST         FUNC_QCFG_RESP_PARTITION_MIN_BW_BW_VALUE_UNIT_PERCENT1_100
186178eeadb8SMichael Chan 	__le32	partition_max_bw;
186278eeadb8SMichael Chan 	#define FUNC_QCFG_RESP_PARTITION_MAX_BW_BW_VALUE_MASK             0xfffffffUL
186378eeadb8SMichael Chan 	#define FUNC_QCFG_RESP_PARTITION_MAX_BW_BW_VALUE_SFT              0
186478eeadb8SMichael Chan 	#define FUNC_QCFG_RESP_PARTITION_MAX_BW_SCALE                     0x10000000UL
186578eeadb8SMichael Chan 	#define FUNC_QCFG_RESP_PARTITION_MAX_BW_SCALE_BITS                  (0x0UL << 28)
186678eeadb8SMichael Chan 	#define FUNC_QCFG_RESP_PARTITION_MAX_BW_SCALE_BYTES                 (0x1UL << 28)
186778eeadb8SMichael Chan 	#define FUNC_QCFG_RESP_PARTITION_MAX_BW_SCALE_LAST                 FUNC_QCFG_RESP_PARTITION_MAX_BW_SCALE_BYTES
186878eeadb8SMichael Chan 	#define FUNC_QCFG_RESP_PARTITION_MAX_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
186978eeadb8SMichael Chan 	#define FUNC_QCFG_RESP_PARTITION_MAX_BW_BW_VALUE_UNIT_SFT         29
187078eeadb8SMichael Chan 	#define FUNC_QCFG_RESP_PARTITION_MAX_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
187178eeadb8SMichael Chan 	#define FUNC_QCFG_RESP_PARTITION_MAX_BW_BW_VALUE_UNIT_LAST         FUNC_QCFG_RESP_PARTITION_MAX_BW_BW_VALUE_UNIT_PERCENT1_100
187278eeadb8SMichael Chan 	__le16	host_mtu;
1873fbfee257SMichael Chan 	__le16	alloc_tx_key_ctxs;
1874fbfee257SMichael Chan 	__le16	alloc_rx_key_ctxs;
1875ad04cc05SMichael Chan 	u8	port_kdnet_mode;
1876ad04cc05SMichael Chan 	#define FUNC_QCFG_RESP_PORT_KDNET_MODE_DISABLED 0x0UL
1877ad04cc05SMichael Chan 	#define FUNC_QCFG_RESP_PORT_KDNET_MODE_ENABLED  0x1UL
1878ad04cc05SMichael Chan 	#define FUNC_QCFG_RESP_PORT_KDNET_MODE_LAST    FUNC_QCFG_RESP_PORT_KDNET_MODE_ENABLED
1879ad04cc05SMichael Chan 	u8	kdnet_pcie_function;
1880ad04cc05SMichael Chan 	__le16	port_kdnet_fid;
1881ad04cc05SMichael Chan 	u8	unused_3;
188211f15ed3SMichael Chan 	u8	valid;
188311f15ed3SMichael Chan };
188411f15ed3SMichael Chan 
1885ad04cc05SMichael Chan /* hwrm_func_cfg_input (size:960b/120B) */
1886c0c050c5SMichael Chan struct hwrm_func_cfg_input {
1887c0c050c5SMichael Chan 	__le16	req_type;
1888c0c050c5SMichael Chan 	__le16	cmpl_ring;
1889c0c050c5SMichael Chan 	__le16	seq_id;
1890c0c050c5SMichael Chan 	__le16	target_id;
1891c0c050c5SMichael Chan 	__le64	resp_addr;
1892c193554eSMichael Chan 	__le16	fid;
18936fc92c33SMichael Chan 	__le16	num_msix;
1894c0c050c5SMichael Chan 	__le32	flags;
18958eb992e8SMichael Chan 	#define FUNC_CFG_REQ_FLAGS_SRC_MAC_ADDR_CHECK_DISABLE     0x1UL
18968eb992e8SMichael Chan 	#define FUNC_CFG_REQ_FLAGS_SRC_MAC_ADDR_CHECK_ENABLE      0x2UL
18978eb992e8SMichael Chan 	#define FUNC_CFG_REQ_FLAGS_RSVD_MASK                      0x1fcUL
18988eb992e8SMichael Chan 	#define FUNC_CFG_REQ_FLAGS_RSVD_SFT                       2
18998eb992e8SMichael Chan 	#define FUNC_CFG_REQ_FLAGS_STD_TX_RING_MODE_ENABLE        0x200UL
19008eb992e8SMichael Chan 	#define FUNC_CFG_REQ_FLAGS_STD_TX_RING_MODE_DISABLE       0x400UL
19018eb992e8SMichael Chan 	#define FUNC_CFG_REQ_FLAGS_VIRT_MAC_PERSIST               0x800UL
1902acb20054SMichael Chan 	#define FUNC_CFG_REQ_FLAGS_NO_AUTOCLEAR_STATISTIC         0x1000UL
19036a17eb27SMichael Chan 	#define FUNC_CFG_REQ_FLAGS_TX_ASSETS_TEST                 0x2000UL
1904894aa69aSMichael Chan 	#define FUNC_CFG_REQ_FLAGS_RX_ASSETS_TEST                 0x4000UL
1905894aa69aSMichael Chan 	#define FUNC_CFG_REQ_FLAGS_CMPL_ASSETS_TEST               0x8000UL
1906894aa69aSMichael Chan 	#define FUNC_CFG_REQ_FLAGS_RSSCOS_CTX_ASSETS_TEST         0x10000UL
1907894aa69aSMichael Chan 	#define FUNC_CFG_REQ_FLAGS_RING_GRP_ASSETS_TEST           0x20000UL
1908894aa69aSMichael Chan 	#define FUNC_CFG_REQ_FLAGS_STAT_CTX_ASSETS_TEST           0x40000UL
1909894aa69aSMichael Chan 	#define FUNC_CFG_REQ_FLAGS_VNIC_ASSETS_TEST               0x80000UL
1910894aa69aSMichael Chan 	#define FUNC_CFG_REQ_FLAGS_L2_CTX_ASSETS_TEST             0x100000UL
191131d357c0SMichael Chan 	#define FUNC_CFG_REQ_FLAGS_TRUSTED_VF_ENABLE              0x200000UL
19123322479eSMichael Chan 	#define FUNC_CFG_REQ_FLAGS_DYNAMIC_TX_RING_ALLOC          0x400000UL
19130b815023SMichael Chan 	#define FUNC_CFG_REQ_FLAGS_NQ_ASSETS_TEST                 0x800000UL
19143293ec23SMichael Chan 	#define FUNC_CFG_REQ_FLAGS_TRUSTED_VF_DISABLE             0x1000000UL
19152792b5b9SMichael Chan 	#define FUNC_CFG_REQ_FLAGS_PREBOOT_LEGACY_L2_RINGS        0x2000000UL
1916bfc6e5fbSMichael Chan 	#define FUNC_CFG_REQ_FLAGS_HOT_RESET_IF_EN_DIS            0x4000000UL
1917bfc6e5fbSMichael Chan 	#define FUNC_CFG_REQ_FLAGS_PPP_PUSH_MODE_ENABLE           0x8000000UL
1918bfc6e5fbSMichael Chan 	#define FUNC_CFG_REQ_FLAGS_PPP_PUSH_MODE_DISABLE          0x10000000UL
191931f67c2eSMichael Chan 	#define FUNC_CFG_REQ_FLAGS_BD_METADATA_ENABLE             0x20000000UL
192031f67c2eSMichael Chan 	#define FUNC_CFG_REQ_FLAGS_BD_METADATA_DISABLE            0x40000000UL
192184a911dbSMichael Chan 	#define FUNC_CFG_REQ_FLAGS_KEY_CTX_ASSETS_TEST            0x80000000UL
1922c0c050c5SMichael Chan 	__le32	enables;
192378eeadb8SMichael Chan 	#define FUNC_CFG_REQ_ENABLES_ADMIN_MTU                0x1UL
1924c0c050c5SMichael Chan 	#define FUNC_CFG_REQ_ENABLES_MRU                      0x2UL
1925c0c050c5SMichael Chan 	#define FUNC_CFG_REQ_ENABLES_NUM_RSSCOS_CTXS          0x4UL
1926c0c050c5SMichael Chan 	#define FUNC_CFG_REQ_ENABLES_NUM_CMPL_RINGS           0x8UL
1927c0c050c5SMichael Chan 	#define FUNC_CFG_REQ_ENABLES_NUM_TX_RINGS             0x10UL
1928c0c050c5SMichael Chan 	#define FUNC_CFG_REQ_ENABLES_NUM_RX_RINGS             0x20UL
1929c0c050c5SMichael Chan 	#define FUNC_CFG_REQ_ENABLES_NUM_L2_CTXS              0x40UL
1930c0c050c5SMichael Chan 	#define FUNC_CFG_REQ_ENABLES_NUM_VNICS                0x80UL
1931c0c050c5SMichael Chan 	#define FUNC_CFG_REQ_ENABLES_NUM_STAT_CTXS            0x100UL
1932c0c050c5SMichael Chan 	#define FUNC_CFG_REQ_ENABLES_DFLT_MAC_ADDR            0x200UL
1933c0c050c5SMichael Chan 	#define FUNC_CFG_REQ_ENABLES_DFLT_VLAN                0x400UL
1934c0c050c5SMichael Chan 	#define FUNC_CFG_REQ_ENABLES_DFLT_IP_ADDR             0x800UL
1935c0c050c5SMichael Chan 	#define FUNC_CFG_REQ_ENABLES_MIN_BW                   0x1000UL
1936c0c050c5SMichael Chan 	#define FUNC_CFG_REQ_ENABLES_MAX_BW                   0x2000UL
1937c0c050c5SMichael Chan 	#define FUNC_CFG_REQ_ENABLES_ASYNC_EVENT_CR           0x4000UL
1938c0c050c5SMichael Chan 	#define FUNC_CFG_REQ_ENABLES_VLAN_ANTISPOOF_MODE      0x8000UL
1939c0c050c5SMichael Chan 	#define FUNC_CFG_REQ_ENABLES_ALLOWED_VLAN_PRIS        0x10000UL
1940c0c050c5SMichael Chan 	#define FUNC_CFG_REQ_ENABLES_EVB_MODE                 0x20000UL
1941c0c050c5SMichael Chan 	#define FUNC_CFG_REQ_ENABLES_NUM_MCAST_FILTERS        0x40000UL
1942c0c050c5SMichael Chan 	#define FUNC_CFG_REQ_ENABLES_NUM_HW_RING_GRPS         0x80000UL
1943894aa69aSMichael Chan 	#define FUNC_CFG_REQ_ENABLES_CACHE_LINESIZE           0x100000UL
19446fc92c33SMichael Chan 	#define FUNC_CFG_REQ_ENABLES_NUM_MSIX                 0x200000UL
19456fc92c33SMichael Chan 	#define FUNC_CFG_REQ_ENABLES_ADMIN_LINK_STATE         0x400000UL
1946bfc6e5fbSMichael Chan 	#define FUNC_CFG_REQ_ENABLES_HOT_RESET_IF_SUPPORT     0x800000UL
1947bfc6e5fbSMichael Chan 	#define FUNC_CFG_REQ_ENABLES_SCHQ_ID                  0x1000000UL
19489d6b648cSMichael Chan 	#define FUNC_CFG_REQ_ENABLES_MPC_CHNLS                0x2000000UL
194978eeadb8SMichael Chan 	#define FUNC_CFG_REQ_ENABLES_PARTITION_MIN_BW         0x4000000UL
195078eeadb8SMichael Chan 	#define FUNC_CFG_REQ_ENABLES_PARTITION_MAX_BW         0x8000000UL
195178eeadb8SMichael Chan 	#define FUNC_CFG_REQ_ENABLES_TPID                     0x10000000UL
195278eeadb8SMichael Chan 	#define FUNC_CFG_REQ_ENABLES_HOST_MTU                 0x20000000UL
1953fbfee257SMichael Chan 	#define FUNC_CFG_REQ_ENABLES_TX_KEY_CTXS              0x40000000UL
1954fbfee257SMichael Chan 	#define FUNC_CFG_REQ_ENABLES_RX_KEY_CTXS              0x80000000UL
195578eeadb8SMichael Chan 	__le16	admin_mtu;
1956c0c050c5SMichael Chan 	__le16	mru;
1957c0c050c5SMichael Chan 	__le16	num_rsscos_ctxs;
1958c0c050c5SMichael Chan 	__le16	num_cmpl_rings;
1959c0c050c5SMichael Chan 	__le16	num_tx_rings;
1960c0c050c5SMichael Chan 	__le16	num_rx_rings;
1961c0c050c5SMichael Chan 	__le16	num_l2_ctxs;
1962c0c050c5SMichael Chan 	__le16	num_vnics;
1963c0c050c5SMichael Chan 	__le16	num_stat_ctxs;
1964c0c050c5SMichael Chan 	__le16	num_hw_ring_grps;
1965c0c050c5SMichael Chan 	u8	dflt_mac_addr[6];
1966c0c050c5SMichael Chan 	__le16	dflt_vlan;
1967c0c050c5SMichael Chan 	__be32	dflt_ip_addr[4];
1968c0c050c5SMichael Chan 	__le32	min_bw;
1969441cabbbSMichael Chan 	#define FUNC_CFG_REQ_MIN_BW_BW_VALUE_MASK             0xfffffffUL
1970441cabbbSMichael Chan 	#define FUNC_CFG_REQ_MIN_BW_BW_VALUE_SFT              0
1971bac9a7e0SMichael Chan 	#define FUNC_CFG_REQ_MIN_BW_SCALE                     0x10000000UL
1972bac9a7e0SMichael Chan 	#define FUNC_CFG_REQ_MIN_BW_SCALE_BITS                  (0x0UL << 28)
1973bac9a7e0SMichael Chan 	#define FUNC_CFG_REQ_MIN_BW_SCALE_BYTES                 (0x1UL << 28)
1974bac9a7e0SMichael Chan 	#define FUNC_CFG_REQ_MIN_BW_SCALE_LAST                 FUNC_CFG_REQ_MIN_BW_SCALE_BYTES
1975441cabbbSMichael Chan 	#define FUNC_CFG_REQ_MIN_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
1976441cabbbSMichael Chan 	#define FUNC_CFG_REQ_MIN_BW_BW_VALUE_UNIT_SFT         29
1977bac9a7e0SMichael Chan 	#define FUNC_CFG_REQ_MIN_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
1978bac9a7e0SMichael Chan 	#define FUNC_CFG_REQ_MIN_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
1979bac9a7e0SMichael Chan 	#define FUNC_CFG_REQ_MIN_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
1980bac9a7e0SMichael Chan 	#define FUNC_CFG_REQ_MIN_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
1981441cabbbSMichael Chan 	#define FUNC_CFG_REQ_MIN_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
1982441cabbbSMichael Chan 	#define FUNC_CFG_REQ_MIN_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
1983441cabbbSMichael Chan 	#define FUNC_CFG_REQ_MIN_BW_BW_VALUE_UNIT_LAST         FUNC_CFG_REQ_MIN_BW_BW_VALUE_UNIT_INVALID
1984c0c050c5SMichael Chan 	__le32	max_bw;
1985441cabbbSMichael Chan 	#define FUNC_CFG_REQ_MAX_BW_BW_VALUE_MASK             0xfffffffUL
1986441cabbbSMichael Chan 	#define FUNC_CFG_REQ_MAX_BW_BW_VALUE_SFT              0
1987bac9a7e0SMichael Chan 	#define FUNC_CFG_REQ_MAX_BW_SCALE                     0x10000000UL
1988bac9a7e0SMichael Chan 	#define FUNC_CFG_REQ_MAX_BW_SCALE_BITS                  (0x0UL << 28)
1989bac9a7e0SMichael Chan 	#define FUNC_CFG_REQ_MAX_BW_SCALE_BYTES                 (0x1UL << 28)
1990bac9a7e0SMichael Chan 	#define FUNC_CFG_REQ_MAX_BW_SCALE_LAST                 FUNC_CFG_REQ_MAX_BW_SCALE_BYTES
1991441cabbbSMichael Chan 	#define FUNC_CFG_REQ_MAX_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
1992441cabbbSMichael Chan 	#define FUNC_CFG_REQ_MAX_BW_BW_VALUE_UNIT_SFT         29
1993bac9a7e0SMichael Chan 	#define FUNC_CFG_REQ_MAX_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
1994bac9a7e0SMichael Chan 	#define FUNC_CFG_REQ_MAX_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
1995bac9a7e0SMichael Chan 	#define FUNC_CFG_REQ_MAX_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
1996bac9a7e0SMichael Chan 	#define FUNC_CFG_REQ_MAX_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
1997441cabbbSMichael Chan 	#define FUNC_CFG_REQ_MAX_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
1998441cabbbSMichael Chan 	#define FUNC_CFG_REQ_MAX_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
1999441cabbbSMichael Chan 	#define FUNC_CFG_REQ_MAX_BW_BW_VALUE_UNIT_LAST         FUNC_CFG_REQ_MAX_BW_BW_VALUE_UNIT_INVALID
2000c0c050c5SMichael Chan 	__le16	async_event_cr;
2001c0c050c5SMichael Chan 	u8	vlan_antispoof_mode;
2002441cabbbSMichael Chan 	#define FUNC_CFG_REQ_VLAN_ANTISPOOF_MODE_NOCHECK                 0x0UL
2003441cabbbSMichael Chan 	#define FUNC_CFG_REQ_VLAN_ANTISPOOF_MODE_VALIDATE_VLAN           0x1UL
2004441cabbbSMichael Chan 	#define FUNC_CFG_REQ_VLAN_ANTISPOOF_MODE_INSERT_IF_VLANDNE       0x2UL
2005441cabbbSMichael Chan 	#define FUNC_CFG_REQ_VLAN_ANTISPOOF_MODE_INSERT_OR_OVERRIDE_VLAN 0x3UL
2006894aa69aSMichael Chan 	#define FUNC_CFG_REQ_VLAN_ANTISPOOF_MODE_LAST                   FUNC_CFG_REQ_VLAN_ANTISPOOF_MODE_INSERT_OR_OVERRIDE_VLAN
2007c0c050c5SMichael Chan 	u8	allowed_vlan_pris;
2008c0c050c5SMichael Chan 	u8	evb_mode;
2009441cabbbSMichael Chan 	#define FUNC_CFG_REQ_EVB_MODE_NO_EVB 0x0UL
2010441cabbbSMichael Chan 	#define FUNC_CFG_REQ_EVB_MODE_VEB    0x1UL
2011441cabbbSMichael Chan 	#define FUNC_CFG_REQ_EVB_MODE_VEPA   0x2UL
2012894aa69aSMichael Chan 	#define FUNC_CFG_REQ_EVB_MODE_LAST  FUNC_CFG_REQ_EVB_MODE_VEPA
2013d4f52de0SMichael Chan 	u8	options;
2014d4f52de0SMichael Chan 	#define FUNC_CFG_REQ_OPTIONS_CACHE_LINESIZE_MASK         0x3UL
2015d4f52de0SMichael Chan 	#define FUNC_CFG_REQ_OPTIONS_CACHE_LINESIZE_SFT          0
2016d4f52de0SMichael Chan 	#define FUNC_CFG_REQ_OPTIONS_CACHE_LINESIZE_SIZE_64        0x0UL
2017d4f52de0SMichael Chan 	#define FUNC_CFG_REQ_OPTIONS_CACHE_LINESIZE_SIZE_128       0x1UL
2018d4f52de0SMichael Chan 	#define FUNC_CFG_REQ_OPTIONS_CACHE_LINESIZE_LAST          FUNC_CFG_REQ_OPTIONS_CACHE_LINESIZE_SIZE_128
20196fc92c33SMichael Chan 	#define FUNC_CFG_REQ_OPTIONS_LINK_ADMIN_STATE_MASK       0xcUL
20206fc92c33SMichael Chan 	#define FUNC_CFG_REQ_OPTIONS_LINK_ADMIN_STATE_SFT        2
20216fc92c33SMichael Chan 	#define FUNC_CFG_REQ_OPTIONS_LINK_ADMIN_STATE_FORCED_DOWN  (0x0UL << 2)
20226fc92c33SMichael Chan 	#define FUNC_CFG_REQ_OPTIONS_LINK_ADMIN_STATE_FORCED_UP    (0x1UL << 2)
20236fc92c33SMichael Chan 	#define FUNC_CFG_REQ_OPTIONS_LINK_ADMIN_STATE_AUTO         (0x2UL << 2)
20246fc92c33SMichael Chan 	#define FUNC_CFG_REQ_OPTIONS_LINK_ADMIN_STATE_LAST        FUNC_CFG_REQ_OPTIONS_LINK_ADMIN_STATE_AUTO
20256fc92c33SMichael Chan 	#define FUNC_CFG_REQ_OPTIONS_RSVD_MASK                   0xf0UL
20266fc92c33SMichael Chan 	#define FUNC_CFG_REQ_OPTIONS_RSVD_SFT                    4
2027c0c050c5SMichael Chan 	__le16	num_mcast_filters;
2028bfc6e5fbSMichael Chan 	__le16	schq_id;
20299d6b648cSMichael Chan 	__le16	mpc_chnls;
20309d6b648cSMichael Chan 	#define FUNC_CFG_REQ_MPC_CHNLS_TCE_ENABLE          0x1UL
20319d6b648cSMichael Chan 	#define FUNC_CFG_REQ_MPC_CHNLS_TCE_DISABLE         0x2UL
20329d6b648cSMichael Chan 	#define FUNC_CFG_REQ_MPC_CHNLS_RCE_ENABLE          0x4UL
20339d6b648cSMichael Chan 	#define FUNC_CFG_REQ_MPC_CHNLS_RCE_DISABLE         0x8UL
20349d6b648cSMichael Chan 	#define FUNC_CFG_REQ_MPC_CHNLS_TE_CFA_ENABLE       0x10UL
20359d6b648cSMichael Chan 	#define FUNC_CFG_REQ_MPC_CHNLS_TE_CFA_DISABLE      0x20UL
20369d6b648cSMichael Chan 	#define FUNC_CFG_REQ_MPC_CHNLS_RE_CFA_ENABLE       0x40UL
20379d6b648cSMichael Chan 	#define FUNC_CFG_REQ_MPC_CHNLS_RE_CFA_DISABLE      0x80UL
20389d6b648cSMichael Chan 	#define FUNC_CFG_REQ_MPC_CHNLS_PRIMATE_ENABLE      0x100UL
20399d6b648cSMichael Chan 	#define FUNC_CFG_REQ_MPC_CHNLS_PRIMATE_DISABLE     0x200UL
204078eeadb8SMichael Chan 	__le32	partition_min_bw;
204178eeadb8SMichael Chan 	#define FUNC_CFG_REQ_PARTITION_MIN_BW_BW_VALUE_MASK             0xfffffffUL
204278eeadb8SMichael Chan 	#define FUNC_CFG_REQ_PARTITION_MIN_BW_BW_VALUE_SFT              0
204378eeadb8SMichael Chan 	#define FUNC_CFG_REQ_PARTITION_MIN_BW_SCALE                     0x10000000UL
204478eeadb8SMichael Chan 	#define FUNC_CFG_REQ_PARTITION_MIN_BW_SCALE_BITS                  (0x0UL << 28)
204578eeadb8SMichael Chan 	#define FUNC_CFG_REQ_PARTITION_MIN_BW_SCALE_BYTES                 (0x1UL << 28)
204678eeadb8SMichael Chan 	#define FUNC_CFG_REQ_PARTITION_MIN_BW_SCALE_LAST                 FUNC_CFG_REQ_PARTITION_MIN_BW_SCALE_BYTES
204778eeadb8SMichael Chan 	#define FUNC_CFG_REQ_PARTITION_MIN_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
204878eeadb8SMichael Chan 	#define FUNC_CFG_REQ_PARTITION_MIN_BW_BW_VALUE_UNIT_SFT         29
204978eeadb8SMichael Chan 	#define FUNC_CFG_REQ_PARTITION_MIN_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
205078eeadb8SMichael Chan 	#define FUNC_CFG_REQ_PARTITION_MIN_BW_BW_VALUE_UNIT_LAST         FUNC_CFG_REQ_PARTITION_MIN_BW_BW_VALUE_UNIT_PERCENT1_100
205178eeadb8SMichael Chan 	__le32	partition_max_bw;
205278eeadb8SMichael Chan 	#define FUNC_CFG_REQ_PARTITION_MAX_BW_BW_VALUE_MASK             0xfffffffUL
205378eeadb8SMichael Chan 	#define FUNC_CFG_REQ_PARTITION_MAX_BW_BW_VALUE_SFT              0
205478eeadb8SMichael Chan 	#define FUNC_CFG_REQ_PARTITION_MAX_BW_SCALE                     0x10000000UL
205578eeadb8SMichael Chan 	#define FUNC_CFG_REQ_PARTITION_MAX_BW_SCALE_BITS                  (0x0UL << 28)
205678eeadb8SMichael Chan 	#define FUNC_CFG_REQ_PARTITION_MAX_BW_SCALE_BYTES                 (0x1UL << 28)
205778eeadb8SMichael Chan 	#define FUNC_CFG_REQ_PARTITION_MAX_BW_SCALE_LAST                 FUNC_CFG_REQ_PARTITION_MAX_BW_SCALE_BYTES
205878eeadb8SMichael Chan 	#define FUNC_CFG_REQ_PARTITION_MAX_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
205978eeadb8SMichael Chan 	#define FUNC_CFG_REQ_PARTITION_MAX_BW_BW_VALUE_UNIT_SFT         29
206078eeadb8SMichael Chan 	#define FUNC_CFG_REQ_PARTITION_MAX_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
206178eeadb8SMichael Chan 	#define FUNC_CFG_REQ_PARTITION_MAX_BW_BW_VALUE_UNIT_LAST         FUNC_CFG_REQ_PARTITION_MAX_BW_BW_VALUE_UNIT_PERCENT1_100
206278eeadb8SMichael Chan 	__be16	tpid;
206378eeadb8SMichael Chan 	__le16	host_mtu;
2064fbfee257SMichael Chan 	__le16	num_tx_key_ctxs;
2065fbfee257SMichael Chan 	__le16	num_rx_key_ctxs;
2066ad04cc05SMichael Chan 	__le32	enables2;
2067ad04cc05SMichael Chan 	#define FUNC_CFG_REQ_ENABLES2_KDNET            0x1UL
206884a911dbSMichael Chan 	#define FUNC_CFG_REQ_ENABLES2_DB_PAGE_SIZE     0x2UL
2069ad04cc05SMichael Chan 	u8	port_kdnet_mode;
2070ad04cc05SMichael Chan 	#define FUNC_CFG_REQ_PORT_KDNET_MODE_DISABLED 0x0UL
2071ad04cc05SMichael Chan 	#define FUNC_CFG_REQ_PORT_KDNET_MODE_ENABLED  0x1UL
2072ad04cc05SMichael Chan 	#define FUNC_CFG_REQ_PORT_KDNET_MODE_LAST    FUNC_CFG_REQ_PORT_KDNET_MODE_ENABLED
207384a911dbSMichael Chan 	u8	db_page_size;
207484a911dbSMichael Chan 	#define FUNC_CFG_REQ_DB_PAGE_SIZE_4KB   0x0UL
207584a911dbSMichael Chan 	#define FUNC_CFG_REQ_DB_PAGE_SIZE_8KB   0x1UL
207684a911dbSMichael Chan 	#define FUNC_CFG_REQ_DB_PAGE_SIZE_16KB  0x2UL
207784a911dbSMichael Chan 	#define FUNC_CFG_REQ_DB_PAGE_SIZE_32KB  0x3UL
207884a911dbSMichael Chan 	#define FUNC_CFG_REQ_DB_PAGE_SIZE_64KB  0x4UL
207984a911dbSMichael Chan 	#define FUNC_CFG_REQ_DB_PAGE_SIZE_128KB 0x5UL
208084a911dbSMichael Chan 	#define FUNC_CFG_REQ_DB_PAGE_SIZE_256KB 0x6UL
208184a911dbSMichael Chan 	#define FUNC_CFG_REQ_DB_PAGE_SIZE_512KB 0x7UL
208284a911dbSMichael Chan 	#define FUNC_CFG_REQ_DB_PAGE_SIZE_1MB   0x8UL
208384a911dbSMichael Chan 	#define FUNC_CFG_REQ_DB_PAGE_SIZE_2MB   0x9UL
208484a911dbSMichael Chan 	#define FUNC_CFG_REQ_DB_PAGE_SIZE_4MB   0xaUL
208584a911dbSMichael Chan 	#define FUNC_CFG_REQ_DB_PAGE_SIZE_LAST FUNC_CFG_REQ_DB_PAGE_SIZE_4MB
208684a911dbSMichael Chan 	u8	unused_0[6];
2087c0c050c5SMichael Chan };
2088c0c050c5SMichael Chan 
2089894aa69aSMichael Chan /* hwrm_func_cfg_output (size:128b/16B) */
2090c0c050c5SMichael Chan struct hwrm_func_cfg_output {
2091c0c050c5SMichael Chan 	__le16	error_code;
2092c0c050c5SMichael Chan 	__le16	req_type;
2093c0c050c5SMichael Chan 	__le16	seq_id;
2094c0c050c5SMichael Chan 	__le16	resp_len;
2095894aa69aSMichael Chan 	u8	unused_0[7];
2096c0c050c5SMichael Chan 	u8	valid;
2097c0c050c5SMichael Chan };
2098c0c050c5SMichael Chan 
209921e70778SMichael Chan /* hwrm_func_cfg_cmd_err (size:64b/8B) */
210021e70778SMichael Chan struct hwrm_func_cfg_cmd_err {
210121e70778SMichael Chan 	u8	code;
210221e70778SMichael Chan 	#define FUNC_CFG_CMD_ERR_CODE_UNKNOWN                      0x0UL
210321e70778SMichael Chan 	#define FUNC_CFG_CMD_ERR_CODE_PARTITION_MIN_BW_RANGE       0x1UL
210421e70778SMichael Chan 	#define FUNC_CFG_CMD_ERR_CODE_PARTITION_MIN_MORE_THAN_MAX  0x2UL
210521e70778SMichael Chan 	#define FUNC_CFG_CMD_ERR_CODE_PARTITION_MIN_BW_UNSUPPORTED 0x3UL
210621e70778SMichael Chan 	#define FUNC_CFG_CMD_ERR_CODE_PARTITION_BW_PERCENT         0x4UL
210721e70778SMichael Chan 	#define FUNC_CFG_CMD_ERR_CODE_LAST                        FUNC_CFG_CMD_ERR_CODE_PARTITION_BW_PERCENT
210821e70778SMichael Chan 	u8	unused_0[7];
210921e70778SMichael Chan };
211021e70778SMichael Chan 
2111894aa69aSMichael Chan /* hwrm_func_qstats_input (size:192b/24B) */
2112c0c050c5SMichael Chan struct hwrm_func_qstats_input {
2113c0c050c5SMichael Chan 	__le16	req_type;
2114c0c050c5SMichael Chan 	__le16	cmpl_ring;
2115c0c050c5SMichael Chan 	__le16	seq_id;
2116c0c050c5SMichael Chan 	__le16	target_id;
2117c0c050c5SMichael Chan 	__le64	resp_addr;
2118c0c050c5SMichael Chan 	__le16	fid;
211972e0c9f9SMichael Chan 	u8	flags;
212072e0c9f9SMichael Chan 	#define FUNC_QSTATS_REQ_FLAGS_ROCE_ONLY        0x1UL
2121460c2577SMichael Chan 	#define FUNC_QSTATS_REQ_FLAGS_COUNTER_MASK     0x2UL
212284a911dbSMichael Chan 	#define FUNC_QSTATS_REQ_FLAGS_L2_ONLY          0x4UL
212372e0c9f9SMichael Chan 	u8	unused_0[5];
2124c0c050c5SMichael Chan };
2125c0c050c5SMichael Chan 
2126894aa69aSMichael Chan /* hwrm_func_qstats_output (size:1408b/176B) */
2127c0c050c5SMichael Chan struct hwrm_func_qstats_output {
2128c0c050c5SMichael Chan 	__le16	error_code;
2129c0c050c5SMichael Chan 	__le16	req_type;
2130c0c050c5SMichael Chan 	__le16	seq_id;
2131c0c050c5SMichael Chan 	__le16	resp_len;
2132c0c050c5SMichael Chan 	__le64	tx_ucast_pkts;
2133c0c050c5SMichael Chan 	__le64	tx_mcast_pkts;
2134c0c050c5SMichael Chan 	__le64	tx_bcast_pkts;
21358eb992e8SMichael Chan 	__le64	tx_discard_pkts;
2136c0c050c5SMichael Chan 	__le64	tx_drop_pkts;
2137c0c050c5SMichael Chan 	__le64	tx_ucast_bytes;
2138c0c050c5SMichael Chan 	__le64	tx_mcast_bytes;
2139c0c050c5SMichael Chan 	__le64	tx_bcast_bytes;
2140c0c050c5SMichael Chan 	__le64	rx_ucast_pkts;
2141c0c050c5SMichael Chan 	__le64	rx_mcast_pkts;
2142c0c050c5SMichael Chan 	__le64	rx_bcast_pkts;
21438eb992e8SMichael Chan 	__le64	rx_discard_pkts;
2144c0c050c5SMichael Chan 	__le64	rx_drop_pkts;
2145c0c050c5SMichael Chan 	__le64	rx_ucast_bytes;
2146c0c050c5SMichael Chan 	__le64	rx_mcast_bytes;
2147c0c050c5SMichael Chan 	__le64	rx_bcast_bytes;
2148c0c050c5SMichael Chan 	__le64	rx_agg_pkts;
2149c0c050c5SMichael Chan 	__le64	rx_agg_bytes;
2150c0c050c5SMichael Chan 	__le64	rx_agg_events;
2151c0c050c5SMichael Chan 	__le64	rx_agg_aborts;
215284a911dbSMichael Chan 	u8	clear_seq;
215384a911dbSMichael Chan 	u8	unused_0[6];
2154c0c050c5SMichael Chan 	u8	valid;
2155c0c050c5SMichael Chan };
2156c0c050c5SMichael Chan 
2157bfc6e5fbSMichael Chan /* hwrm_func_qstats_ext_input (size:256b/32B) */
2158460c2577SMichael Chan struct hwrm_func_qstats_ext_input {
2159460c2577SMichael Chan 	__le16	req_type;
2160460c2577SMichael Chan 	__le16	cmpl_ring;
2161460c2577SMichael Chan 	__le16	seq_id;
2162460c2577SMichael Chan 	__le16	target_id;
2163460c2577SMichael Chan 	__le64	resp_addr;
2164460c2577SMichael Chan 	__le16	fid;
2165460c2577SMichael Chan 	u8	flags;
2166460c2577SMichael Chan 	#define FUNC_QSTATS_EXT_REQ_FLAGS_ROCE_ONLY        0x1UL
2167460c2577SMichael Chan 	#define FUNC_QSTATS_EXT_REQ_FLAGS_COUNTER_MASK     0x2UL
2168bfc6e5fbSMichael Chan 	u8	unused_0[1];
2169bfc6e5fbSMichael Chan 	__le32	enables;
2170bfc6e5fbSMichael Chan 	#define FUNC_QSTATS_EXT_REQ_ENABLES_SCHQ_ID     0x1UL
2171bfc6e5fbSMichael Chan 	__le16	schq_id;
2172bfc6e5fbSMichael Chan 	__le16	traffic_class;
2173bfc6e5fbSMichael Chan 	u8	unused_1[4];
2174460c2577SMichael Chan };
2175460c2577SMichael Chan 
21769d6b648cSMichael Chan /* hwrm_func_qstats_ext_output (size:1536b/192B) */
2177460c2577SMichael Chan struct hwrm_func_qstats_ext_output {
2178460c2577SMichael Chan 	__le16	error_code;
2179460c2577SMichael Chan 	__le16	req_type;
2180460c2577SMichael Chan 	__le16	seq_id;
2181460c2577SMichael Chan 	__le16	resp_len;
2182460c2577SMichael Chan 	__le64	rx_ucast_pkts;
2183460c2577SMichael Chan 	__le64	rx_mcast_pkts;
2184460c2577SMichael Chan 	__le64	rx_bcast_pkts;
2185460c2577SMichael Chan 	__le64	rx_discard_pkts;
2186bfc6e5fbSMichael Chan 	__le64	rx_error_pkts;
2187460c2577SMichael Chan 	__le64	rx_ucast_bytes;
2188460c2577SMichael Chan 	__le64	rx_mcast_bytes;
2189460c2577SMichael Chan 	__le64	rx_bcast_bytes;
2190460c2577SMichael Chan 	__le64	tx_ucast_pkts;
2191460c2577SMichael Chan 	__le64	tx_mcast_pkts;
2192460c2577SMichael Chan 	__le64	tx_bcast_pkts;
2193bfc6e5fbSMichael Chan 	__le64	tx_error_pkts;
2194460c2577SMichael Chan 	__le64	tx_discard_pkts;
2195460c2577SMichael Chan 	__le64	tx_ucast_bytes;
2196460c2577SMichael Chan 	__le64	tx_mcast_bytes;
2197460c2577SMichael Chan 	__le64	tx_bcast_bytes;
2198460c2577SMichael Chan 	__le64	rx_tpa_eligible_pkt;
2199460c2577SMichael Chan 	__le64	rx_tpa_eligible_bytes;
2200460c2577SMichael Chan 	__le64	rx_tpa_pkt;
2201460c2577SMichael Chan 	__le64	rx_tpa_bytes;
2202460c2577SMichael Chan 	__le64	rx_tpa_errors;
22039d6b648cSMichael Chan 	__le64	rx_tpa_events;
2204460c2577SMichael Chan 	u8	unused_0[7];
2205460c2577SMichael Chan 	u8	valid;
2206460c2577SMichael Chan };
2207460c2577SMichael Chan 
2208894aa69aSMichael Chan /* hwrm_func_clr_stats_input (size:192b/24B) */
2209c0c050c5SMichael Chan struct hwrm_func_clr_stats_input {
2210c0c050c5SMichael Chan 	__le16	req_type;
2211c0c050c5SMichael Chan 	__le16	cmpl_ring;
2212c0c050c5SMichael Chan 	__le16	seq_id;
2213c0c050c5SMichael Chan 	__le16	target_id;
2214c0c050c5SMichael Chan 	__le64	resp_addr;
2215c0c050c5SMichael Chan 	__le16	fid;
2216894aa69aSMichael Chan 	u8	unused_0[6];
2217c0c050c5SMichael Chan };
2218c0c050c5SMichael Chan 
2219894aa69aSMichael Chan /* hwrm_func_clr_stats_output (size:128b/16B) */
2220c0c050c5SMichael Chan struct hwrm_func_clr_stats_output {
2221c0c050c5SMichael Chan 	__le16	error_code;
2222c0c050c5SMichael Chan 	__le16	req_type;
2223c0c050c5SMichael Chan 	__le16	seq_id;
2224c0c050c5SMichael Chan 	__le16	resp_len;
2225894aa69aSMichael Chan 	u8	unused_0[7];
2226c0c050c5SMichael Chan 	u8	valid;
2227c0c050c5SMichael Chan };
2228c0c050c5SMichael Chan 
2229894aa69aSMichael Chan /* hwrm_func_vf_resc_free_input (size:192b/24B) */
2230c0c050c5SMichael Chan struct hwrm_func_vf_resc_free_input {
2231c0c050c5SMichael Chan 	__le16	req_type;
2232c0c050c5SMichael Chan 	__le16	cmpl_ring;
2233c0c050c5SMichael Chan 	__le16	seq_id;
2234c0c050c5SMichael Chan 	__le16	target_id;
2235c0c050c5SMichael Chan 	__le64	resp_addr;
2236c0c050c5SMichael Chan 	__le16	vf_id;
2237894aa69aSMichael Chan 	u8	unused_0[6];
2238c0c050c5SMichael Chan };
2239c0c050c5SMichael Chan 
2240894aa69aSMichael Chan /* hwrm_func_vf_resc_free_output (size:128b/16B) */
2241c0c050c5SMichael Chan struct hwrm_func_vf_resc_free_output {
2242c0c050c5SMichael Chan 	__le16	error_code;
2243c0c050c5SMichael Chan 	__le16	req_type;
2244c0c050c5SMichael Chan 	__le16	seq_id;
2245c0c050c5SMichael Chan 	__le16	resp_len;
2246894aa69aSMichael Chan 	u8	unused_0[7];
2247c0c050c5SMichael Chan 	u8	valid;
2248c0c050c5SMichael Chan };
2249c0c050c5SMichael Chan 
2250d4f52de0SMichael Chan /* hwrm_func_drv_rgtr_input (size:896b/112B) */
2251c0c050c5SMichael Chan struct hwrm_func_drv_rgtr_input {
2252c0c050c5SMichael Chan 	__le16	req_type;
2253c0c050c5SMichael Chan 	__le16	cmpl_ring;
2254c0c050c5SMichael Chan 	__le16	seq_id;
2255c0c050c5SMichael Chan 	__le16	target_id;
2256c0c050c5SMichael Chan 	__le64	resp_addr;
2257c0c050c5SMichael Chan 	__le32	flags;
2258c0c050c5SMichael Chan 	#define FUNC_DRV_RGTR_REQ_FLAGS_FWD_ALL_MODE                     0x1UL
2259c0c050c5SMichael Chan 	#define FUNC_DRV_RGTR_REQ_FLAGS_FWD_NONE_MODE                    0x2UL
2260d4f52de0SMichael Chan 	#define FUNC_DRV_RGTR_REQ_FLAGS_16BIT_VER_MODE                   0x4UL
226131d357c0SMichael Chan 	#define FUNC_DRV_RGTR_REQ_FLAGS_FLOW_HANDLE_64BIT_MODE           0x8UL
22623322479eSMichael Chan 	#define FUNC_DRV_RGTR_REQ_FLAGS_HOT_RESET_SUPPORT                0x10UL
22633293ec23SMichael Chan 	#define FUNC_DRV_RGTR_REQ_FLAGS_ERROR_RECOVERY_SUPPORT           0x20UL
226441136ab3SMichael Chan 	#define FUNC_DRV_RGTR_REQ_FLAGS_MASTER_SUPPORT                   0x40UL
226516db6323SMichael Chan 	#define FUNC_DRV_RGTR_REQ_FLAGS_FAST_RESET_SUPPORT               0x80UL
226678eeadb8SMichael Chan 	#define FUNC_DRV_RGTR_REQ_FLAGS_RSS_STRICT_HASH_TYPE_SUPPORT     0x100UL
2267fbfee257SMichael Chan 	#define FUNC_DRV_RGTR_REQ_FLAGS_NPAR_1_2_SUPPORT                 0x200UL
226884a911dbSMichael Chan 	#define FUNC_DRV_RGTR_REQ_FLAGS_ASYM_QUEUE_CFG_SUPPORT           0x400UL
2269c0c050c5SMichael Chan 	__le32	enables;
2270c0c050c5SMichael Chan 	#define FUNC_DRV_RGTR_REQ_ENABLES_OS_TYPE             0x1UL
2271c0c050c5SMichael Chan 	#define FUNC_DRV_RGTR_REQ_ENABLES_VER                 0x2UL
2272c0c050c5SMichael Chan 	#define FUNC_DRV_RGTR_REQ_ENABLES_TIMESTAMP           0x4UL
2273c0c050c5SMichael Chan 	#define FUNC_DRV_RGTR_REQ_ENABLES_VF_REQ_FWD          0x8UL
2274c0c050c5SMichael Chan 	#define FUNC_DRV_RGTR_REQ_ENABLES_ASYNC_EVENT_FWD     0x10UL
2275c0c050c5SMichael Chan 	__le16	os_type;
2276441cabbbSMichael Chan 	#define FUNC_DRV_RGTR_REQ_OS_TYPE_UNKNOWN   0x0UL
2277441cabbbSMichael Chan 	#define FUNC_DRV_RGTR_REQ_OS_TYPE_OTHER     0x1UL
2278441cabbbSMichael Chan 	#define FUNC_DRV_RGTR_REQ_OS_TYPE_MSDOS     0xeUL
2279441cabbbSMichael Chan 	#define FUNC_DRV_RGTR_REQ_OS_TYPE_WINDOWS   0x12UL
2280441cabbbSMichael Chan 	#define FUNC_DRV_RGTR_REQ_OS_TYPE_SOLARIS   0x1dUL
2281441cabbbSMichael Chan 	#define FUNC_DRV_RGTR_REQ_OS_TYPE_LINUX     0x24UL
2282441cabbbSMichael Chan 	#define FUNC_DRV_RGTR_REQ_OS_TYPE_FREEBSD   0x2aUL
2283441cabbbSMichael Chan 	#define FUNC_DRV_RGTR_REQ_OS_TYPE_ESXI      0x68UL
2284441cabbbSMichael Chan 	#define FUNC_DRV_RGTR_REQ_OS_TYPE_WIN864    0x73UL
2285441cabbbSMichael Chan 	#define FUNC_DRV_RGTR_REQ_OS_TYPE_WIN2012R2 0x74UL
228616d663a6SMichael Chan 	#define FUNC_DRV_RGTR_REQ_OS_TYPE_UEFI      0x8000UL
2287894aa69aSMichael Chan 	#define FUNC_DRV_RGTR_REQ_OS_TYPE_LAST     FUNC_DRV_RGTR_REQ_OS_TYPE_UEFI
2288d4f52de0SMichael Chan 	u8	ver_maj_8b;
2289d4f52de0SMichael Chan 	u8	ver_min_8b;
2290d4f52de0SMichael Chan 	u8	ver_upd_8b;
2291894aa69aSMichael Chan 	u8	unused_0[3];
2292c0c050c5SMichael Chan 	__le32	timestamp;
2293894aa69aSMichael Chan 	u8	unused_1[4];
2294c0c050c5SMichael Chan 	__le32	vf_req_fwd[8];
2295c0c050c5SMichael Chan 	__le32	async_event_fwd[8];
2296d4f52de0SMichael Chan 	__le16	ver_maj;
2297d4f52de0SMichael Chan 	__le16	ver_min;
2298d4f52de0SMichael Chan 	__le16	ver_upd;
2299d4f52de0SMichael Chan 	__le16	ver_patch;
2300c0c050c5SMichael Chan };
2301c0c050c5SMichael Chan 
2302894aa69aSMichael Chan /* hwrm_func_drv_rgtr_output (size:128b/16B) */
2303c0c050c5SMichael Chan struct hwrm_func_drv_rgtr_output {
2304c0c050c5SMichael Chan 	__le16	error_code;
2305c0c050c5SMichael Chan 	__le16	req_type;
2306c0c050c5SMichael Chan 	__le16	seq_id;
2307c0c050c5SMichael Chan 	__le16	resp_len;
23086fc92c33SMichael Chan 	__le32	flags;
23096fc92c33SMichael Chan 	#define FUNC_DRV_RGTR_RESP_FLAGS_IF_CHANGE_SUPPORTED     0x1UL
23106fc92c33SMichael Chan 	u8	unused_0[3];
2311c0c050c5SMichael Chan 	u8	valid;
2312c0c050c5SMichael Chan };
2313c0c050c5SMichael Chan 
2314894aa69aSMichael Chan /* hwrm_func_drv_unrgtr_input (size:192b/24B) */
2315c0c050c5SMichael Chan struct hwrm_func_drv_unrgtr_input {
2316c0c050c5SMichael Chan 	__le16	req_type;
2317c0c050c5SMichael Chan 	__le16	cmpl_ring;
2318c0c050c5SMichael Chan 	__le16	seq_id;
2319c0c050c5SMichael Chan 	__le16	target_id;
2320c0c050c5SMichael Chan 	__le64	resp_addr;
2321c0c050c5SMichael Chan 	__le32	flags;
2322c0c050c5SMichael Chan 	#define FUNC_DRV_UNRGTR_REQ_FLAGS_PREPARE_FOR_SHUTDOWN     0x1UL
2323894aa69aSMichael Chan 	u8	unused_0[4];
2324c0c050c5SMichael Chan };
2325c0c050c5SMichael Chan 
2326894aa69aSMichael Chan /* hwrm_func_drv_unrgtr_output (size:128b/16B) */
2327c0c050c5SMichael Chan struct hwrm_func_drv_unrgtr_output {
2328c0c050c5SMichael Chan 	__le16	error_code;
2329c0c050c5SMichael Chan 	__le16	req_type;
2330c0c050c5SMichael Chan 	__le16	seq_id;
2331c0c050c5SMichael Chan 	__le16	resp_len;
2332894aa69aSMichael Chan 	u8	unused_0[7];
2333c0c050c5SMichael Chan 	u8	valid;
2334c0c050c5SMichael Chan };
2335c0c050c5SMichael Chan 
2336894aa69aSMichael Chan /* hwrm_func_buf_rgtr_input (size:1024b/128B) */
2337c0c050c5SMichael Chan struct hwrm_func_buf_rgtr_input {
2338c0c050c5SMichael Chan 	__le16	req_type;
2339c0c050c5SMichael Chan 	__le16	cmpl_ring;
2340c0c050c5SMichael Chan 	__le16	seq_id;
2341c0c050c5SMichael Chan 	__le16	target_id;
2342c0c050c5SMichael Chan 	__le64	resp_addr;
2343c0c050c5SMichael Chan 	__le32	enables;
2344c0c050c5SMichael Chan 	#define FUNC_BUF_RGTR_REQ_ENABLES_VF_ID            0x1UL
2345c0c050c5SMichael Chan 	#define FUNC_BUF_RGTR_REQ_ENABLES_ERR_BUF_ADDR     0x2UL
2346c0c050c5SMichael Chan 	__le16	vf_id;
2347c0c050c5SMichael Chan 	__le16	req_buf_num_pages;
2348c0c050c5SMichael Chan 	__le16	req_buf_page_size;
2349441cabbbSMichael Chan 	#define FUNC_BUF_RGTR_REQ_REQ_BUF_PAGE_SIZE_16B 0x4UL
2350441cabbbSMichael Chan 	#define FUNC_BUF_RGTR_REQ_REQ_BUF_PAGE_SIZE_4K  0xcUL
2351441cabbbSMichael Chan 	#define FUNC_BUF_RGTR_REQ_REQ_BUF_PAGE_SIZE_8K  0xdUL
2352441cabbbSMichael Chan 	#define FUNC_BUF_RGTR_REQ_REQ_BUF_PAGE_SIZE_64K 0x10UL
2353441cabbbSMichael Chan 	#define FUNC_BUF_RGTR_REQ_REQ_BUF_PAGE_SIZE_2M  0x15UL
2354441cabbbSMichael Chan 	#define FUNC_BUF_RGTR_REQ_REQ_BUF_PAGE_SIZE_4M  0x16UL
2355441cabbbSMichael Chan 	#define FUNC_BUF_RGTR_REQ_REQ_BUF_PAGE_SIZE_1G  0x1eUL
2356894aa69aSMichael Chan 	#define FUNC_BUF_RGTR_REQ_REQ_BUF_PAGE_SIZE_LAST FUNC_BUF_RGTR_REQ_REQ_BUF_PAGE_SIZE_1G
2357c0c050c5SMichael Chan 	__le16	req_buf_len;
2358c0c050c5SMichael Chan 	__le16	resp_buf_len;
2359894aa69aSMichael Chan 	u8	unused_0[2];
2360c0c050c5SMichael Chan 	__le64	req_buf_page_addr0;
2361c0c050c5SMichael Chan 	__le64	req_buf_page_addr1;
2362c0c050c5SMichael Chan 	__le64	req_buf_page_addr2;
2363c0c050c5SMichael Chan 	__le64	req_buf_page_addr3;
2364c0c050c5SMichael Chan 	__le64	req_buf_page_addr4;
2365c0c050c5SMichael Chan 	__le64	req_buf_page_addr5;
2366c0c050c5SMichael Chan 	__le64	req_buf_page_addr6;
2367c0c050c5SMichael Chan 	__le64	req_buf_page_addr7;
2368c0c050c5SMichael Chan 	__le64	req_buf_page_addr8;
2369c0c050c5SMichael Chan 	__le64	req_buf_page_addr9;
2370c0c050c5SMichael Chan 	__le64	error_buf_addr;
2371c0c050c5SMichael Chan 	__le64	resp_buf_addr;
2372c0c050c5SMichael Chan };
2373c0c050c5SMichael Chan 
2374894aa69aSMichael Chan /* hwrm_func_buf_rgtr_output (size:128b/16B) */
2375c0c050c5SMichael Chan struct hwrm_func_buf_rgtr_output {
2376c0c050c5SMichael Chan 	__le16	error_code;
2377c0c050c5SMichael Chan 	__le16	req_type;
2378c0c050c5SMichael Chan 	__le16	seq_id;
2379c0c050c5SMichael Chan 	__le16	resp_len;
2380894aa69aSMichael Chan 	u8	unused_0[7];
2381c0c050c5SMichael Chan 	u8	valid;
2382c0c050c5SMichael Chan };
2383c0c050c5SMichael Chan 
2384894aa69aSMichael Chan /* hwrm_func_drv_qver_input (size:192b/24B) */
2385c0c050c5SMichael Chan struct hwrm_func_drv_qver_input {
2386c0c050c5SMichael Chan 	__le16	req_type;
2387c0c050c5SMichael Chan 	__le16	cmpl_ring;
2388c0c050c5SMichael Chan 	__le16	seq_id;
2389c0c050c5SMichael Chan 	__le16	target_id;
2390c0c050c5SMichael Chan 	__le64	resp_addr;
2391c193554eSMichael Chan 	__le32	reserved;
2392c0c050c5SMichael Chan 	__le16	fid;
2393894aa69aSMichael Chan 	u8	unused_0[2];
2394c0c050c5SMichael Chan };
2395c0c050c5SMichael Chan 
23966fc92c33SMichael Chan /* hwrm_func_drv_qver_output (size:256b/32B) */
2397c0c050c5SMichael Chan struct hwrm_func_drv_qver_output {
2398c0c050c5SMichael Chan 	__le16	error_code;
2399c0c050c5SMichael Chan 	__le16	req_type;
2400c0c050c5SMichael Chan 	__le16	seq_id;
2401c0c050c5SMichael Chan 	__le16	resp_len;
2402c0c050c5SMichael Chan 	__le16	os_type;
2403441cabbbSMichael Chan 	#define FUNC_DRV_QVER_RESP_OS_TYPE_UNKNOWN   0x0UL
2404441cabbbSMichael Chan 	#define FUNC_DRV_QVER_RESP_OS_TYPE_OTHER     0x1UL
2405441cabbbSMichael Chan 	#define FUNC_DRV_QVER_RESP_OS_TYPE_MSDOS     0xeUL
2406441cabbbSMichael Chan 	#define FUNC_DRV_QVER_RESP_OS_TYPE_WINDOWS   0x12UL
2407441cabbbSMichael Chan 	#define FUNC_DRV_QVER_RESP_OS_TYPE_SOLARIS   0x1dUL
2408441cabbbSMichael Chan 	#define FUNC_DRV_QVER_RESP_OS_TYPE_LINUX     0x24UL
2409441cabbbSMichael Chan 	#define FUNC_DRV_QVER_RESP_OS_TYPE_FREEBSD   0x2aUL
2410441cabbbSMichael Chan 	#define FUNC_DRV_QVER_RESP_OS_TYPE_ESXI      0x68UL
2411441cabbbSMichael Chan 	#define FUNC_DRV_QVER_RESP_OS_TYPE_WIN864    0x73UL
2412441cabbbSMichael Chan 	#define FUNC_DRV_QVER_RESP_OS_TYPE_WIN2012R2 0x74UL
241387c374deSMichael Chan 	#define FUNC_DRV_QVER_RESP_OS_TYPE_UEFI      0x8000UL
2414894aa69aSMichael Chan 	#define FUNC_DRV_QVER_RESP_OS_TYPE_LAST     FUNC_DRV_QVER_RESP_OS_TYPE_UEFI
2415d4f52de0SMichael Chan 	u8	ver_maj_8b;
2416d4f52de0SMichael Chan 	u8	ver_min_8b;
2417d4f52de0SMichael Chan 	u8	ver_upd_8b;
24186fc92c33SMichael Chan 	u8	unused_0[3];
2419d4f52de0SMichael Chan 	__le16	ver_maj;
2420d4f52de0SMichael Chan 	__le16	ver_min;
2421d4f52de0SMichael Chan 	__le16	ver_upd;
2422d4f52de0SMichael Chan 	__le16	ver_patch;
24236fc92c33SMichael Chan 	u8	unused_1[7];
24246fc92c33SMichael Chan 	u8	valid;
2425c0c050c5SMichael Chan };
2426c0c050c5SMichael Chan 
2427894aa69aSMichael Chan /* hwrm_func_resource_qcaps_input (size:192b/24B) */
2428894aa69aSMichael Chan struct hwrm_func_resource_qcaps_input {
2429894aa69aSMichael Chan 	__le16	req_type;
2430894aa69aSMichael Chan 	__le16	cmpl_ring;
2431894aa69aSMichael Chan 	__le16	seq_id;
2432894aa69aSMichael Chan 	__le16	target_id;
2433894aa69aSMichael Chan 	__le64	resp_addr;
2434894aa69aSMichael Chan 	__le16	fid;
2435894aa69aSMichael Chan 	u8	unused_0[6];
2436894aa69aSMichael Chan };
2437894aa69aSMichael Chan 
2438fbfee257SMichael Chan /* hwrm_func_resource_qcaps_output (size:512b/64B) */
2439894aa69aSMichael Chan struct hwrm_func_resource_qcaps_output {
2440894aa69aSMichael Chan 	__le16	error_code;
2441894aa69aSMichael Chan 	__le16	req_type;
2442894aa69aSMichael Chan 	__le16	seq_id;
2443894aa69aSMichael Chan 	__le16	resp_len;
2444894aa69aSMichael Chan 	__le16	max_vfs;
2445894aa69aSMichael Chan 	__le16	max_msix;
2446894aa69aSMichael Chan 	__le16	vf_reservation_strategy;
2447894aa69aSMichael Chan 	#define FUNC_RESOURCE_QCAPS_RESP_VF_RESERVATION_STRATEGY_MAXIMAL        0x0UL
2448894aa69aSMichael Chan 	#define FUNC_RESOURCE_QCAPS_RESP_VF_RESERVATION_STRATEGY_MINIMAL        0x1UL
2449d4f52de0SMichael Chan 	#define FUNC_RESOURCE_QCAPS_RESP_VF_RESERVATION_STRATEGY_MINIMAL_STATIC 0x2UL
2450d4f52de0SMichael Chan 	#define FUNC_RESOURCE_QCAPS_RESP_VF_RESERVATION_STRATEGY_LAST          FUNC_RESOURCE_QCAPS_RESP_VF_RESERVATION_STRATEGY_MINIMAL_STATIC
2451894aa69aSMichael Chan 	__le16	min_rsscos_ctx;
2452894aa69aSMichael Chan 	__le16	max_rsscos_ctx;
2453894aa69aSMichael Chan 	__le16	min_cmpl_rings;
2454894aa69aSMichael Chan 	__le16	max_cmpl_rings;
2455894aa69aSMichael Chan 	__le16	min_tx_rings;
2456894aa69aSMichael Chan 	__le16	max_tx_rings;
2457894aa69aSMichael Chan 	__le16	min_rx_rings;
2458894aa69aSMichael Chan 	__le16	max_rx_rings;
2459894aa69aSMichael Chan 	__le16	min_l2_ctxs;
2460894aa69aSMichael Chan 	__le16	max_l2_ctxs;
2461894aa69aSMichael Chan 	__le16	min_vnics;
2462894aa69aSMichael Chan 	__le16	max_vnics;
2463894aa69aSMichael Chan 	__le16	min_stat_ctx;
2464894aa69aSMichael Chan 	__le16	max_stat_ctx;
2465894aa69aSMichael Chan 	__le16	min_hw_ring_grps;
2466894aa69aSMichael Chan 	__le16	max_hw_ring_grps;
2467d4f52de0SMichael Chan 	__le16	max_tx_scheduler_inputs;
246831d357c0SMichael Chan 	__le16	flags;
246931d357c0SMichael Chan 	#define FUNC_RESOURCE_QCAPS_RESP_FLAGS_MIN_GUARANTEED     0x1UL
2470fbfee257SMichael Chan 	__le16	min_tx_key_ctxs;
2471fbfee257SMichael Chan 	__le16	max_tx_key_ctxs;
2472fbfee257SMichael Chan 	__le16	min_rx_key_ctxs;
2473fbfee257SMichael Chan 	__le16	max_rx_key_ctxs;
247431d357c0SMichael Chan 	u8	unused_0[5];
2475894aa69aSMichael Chan 	u8	valid;
2476894aa69aSMichael Chan };
2477894aa69aSMichael Chan 
2478fbfee257SMichael Chan /* hwrm_func_vf_resource_cfg_input (size:512b/64B) */
2479894aa69aSMichael Chan struct hwrm_func_vf_resource_cfg_input {
2480894aa69aSMichael Chan 	__le16	req_type;
2481894aa69aSMichael Chan 	__le16	cmpl_ring;
2482894aa69aSMichael Chan 	__le16	seq_id;
2483894aa69aSMichael Chan 	__le16	target_id;
2484894aa69aSMichael Chan 	__le64	resp_addr;
2485894aa69aSMichael Chan 	__le16	vf_id;
2486894aa69aSMichael Chan 	__le16	max_msix;
2487894aa69aSMichael Chan 	__le16	min_rsscos_ctx;
2488894aa69aSMichael Chan 	__le16	max_rsscos_ctx;
2489894aa69aSMichael Chan 	__le16	min_cmpl_rings;
2490894aa69aSMichael Chan 	__le16	max_cmpl_rings;
2491894aa69aSMichael Chan 	__le16	min_tx_rings;
2492894aa69aSMichael Chan 	__le16	max_tx_rings;
2493894aa69aSMichael Chan 	__le16	min_rx_rings;
2494894aa69aSMichael Chan 	__le16	max_rx_rings;
2495894aa69aSMichael Chan 	__le16	min_l2_ctxs;
2496894aa69aSMichael Chan 	__le16	max_l2_ctxs;
2497894aa69aSMichael Chan 	__le16	min_vnics;
2498894aa69aSMichael Chan 	__le16	max_vnics;
2499894aa69aSMichael Chan 	__le16	min_stat_ctx;
2500894aa69aSMichael Chan 	__le16	max_stat_ctx;
2501894aa69aSMichael Chan 	__le16	min_hw_ring_grps;
2502894aa69aSMichael Chan 	__le16	max_hw_ring_grps;
250331d357c0SMichael Chan 	__le16	flags;
250431d357c0SMichael Chan 	#define FUNC_VF_RESOURCE_CFG_REQ_FLAGS_MIN_GUARANTEED     0x1UL
2505fbfee257SMichael Chan 	__le16	min_tx_key_ctxs;
2506fbfee257SMichael Chan 	__le16	max_tx_key_ctxs;
2507fbfee257SMichael Chan 	__le16	min_rx_key_ctxs;
2508fbfee257SMichael Chan 	__le16	max_rx_key_ctxs;
250931d357c0SMichael Chan 	u8	unused_0[2];
2510894aa69aSMichael Chan };
2511894aa69aSMichael Chan 
2512894aa69aSMichael Chan /* hwrm_func_vf_resource_cfg_output (size:256b/32B) */
2513894aa69aSMichael Chan struct hwrm_func_vf_resource_cfg_output {
2514894aa69aSMichael Chan 	__le16	error_code;
2515894aa69aSMichael Chan 	__le16	req_type;
2516894aa69aSMichael Chan 	__le16	seq_id;
2517894aa69aSMichael Chan 	__le16	resp_len;
2518894aa69aSMichael Chan 	__le16	reserved_rsscos_ctx;
2519894aa69aSMichael Chan 	__le16	reserved_cmpl_rings;
2520894aa69aSMichael Chan 	__le16	reserved_tx_rings;
2521894aa69aSMichael Chan 	__le16	reserved_rx_rings;
2522894aa69aSMichael Chan 	__le16	reserved_l2_ctxs;
2523894aa69aSMichael Chan 	__le16	reserved_vnics;
2524894aa69aSMichael Chan 	__le16	reserved_stat_ctx;
2525894aa69aSMichael Chan 	__le16	reserved_hw_ring_grps;
2526fbfee257SMichael Chan 	__le16	reserved_tx_key_ctxs;
2527fbfee257SMichael Chan 	__le16	reserved_rx_key_ctxs;
2528fbfee257SMichael Chan 	u8	unused_0[3];
2529894aa69aSMichael Chan 	u8	valid;
2530894aa69aSMichael Chan };
2531894aa69aSMichael Chan 
25326fc92c33SMichael Chan /* hwrm_func_backing_store_qcaps_input (size:128b/16B) */
25336fc92c33SMichael Chan struct hwrm_func_backing_store_qcaps_input {
25346fc92c33SMichael Chan 	__le16	req_type;
25356fc92c33SMichael Chan 	__le16	cmpl_ring;
25366fc92c33SMichael Chan 	__le16	seq_id;
25376fc92c33SMichael Chan 	__le16	target_id;
25386fc92c33SMichael Chan 	__le64	resp_addr;
25396fc92c33SMichael Chan };
25406fc92c33SMichael Chan 
254178eeadb8SMichael Chan /* hwrm_func_backing_store_qcaps_output (size:832b/104B) */
25426fc92c33SMichael Chan struct hwrm_func_backing_store_qcaps_output {
25436fc92c33SMichael Chan 	__le16	error_code;
25446fc92c33SMichael Chan 	__le16	req_type;
25456fc92c33SMichael Chan 	__le16	seq_id;
25466fc92c33SMichael Chan 	__le16	resp_len;
25476fc92c33SMichael Chan 	__le32	qp_max_entries;
25486fc92c33SMichael Chan 	__le16	qp_min_qp1_entries;
25496fc92c33SMichael Chan 	__le16	qp_max_l2_entries;
25506fc92c33SMichael Chan 	__le16	qp_entry_size;
25516fc92c33SMichael Chan 	__le16	srq_max_l2_entries;
25526fc92c33SMichael Chan 	__le32	srq_max_entries;
25536fc92c33SMichael Chan 	__le16	srq_entry_size;
25546fc92c33SMichael Chan 	__le16	cq_max_l2_entries;
25556fc92c33SMichael Chan 	__le32	cq_max_entries;
25566fc92c33SMichael Chan 	__le16	cq_entry_size;
25576fc92c33SMichael Chan 	__le16	vnic_max_vnic_entries;
25586fc92c33SMichael Chan 	__le16	vnic_max_ring_table_entries;
25596fc92c33SMichael Chan 	__le16	vnic_entry_size;
25606fc92c33SMichael Chan 	__le32	stat_max_entries;
25616fc92c33SMichael Chan 	__le16	stat_entry_size;
25626fc92c33SMichael Chan 	__le16	tqm_entry_size;
25636fc92c33SMichael Chan 	__le32	tqm_min_entries_per_ring;
25646fc92c33SMichael Chan 	__le32	tqm_max_entries_per_ring;
25656fc92c33SMichael Chan 	__le32	mrav_max_entries;
25666fc92c33SMichael Chan 	__le16	mrav_entry_size;
25676fc92c33SMichael Chan 	__le16	tim_entry_size;
25686fc92c33SMichael Chan 	__le32	tim_max_entries;
25694a50ddc2SMichael Chan 	__le16	mrav_num_entries_units;
257031d357c0SMichael Chan 	u8	tqm_entries_multiple;
257141136ab3SMichael Chan 	u8	ctx_kind_initializer;
257216db6323SMichael Chan 	__le16	ctx_init_mask;
257316db6323SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_RESP_CTX_INIT_MASK_QP       0x1UL
257416db6323SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_RESP_CTX_INIT_MASK_SRQ      0x2UL
257516db6323SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_RESP_CTX_INIT_MASK_CQ       0x4UL
257616db6323SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_RESP_CTX_INIT_MASK_VNIC     0x8UL
257716db6323SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_RESP_CTX_INIT_MASK_STAT     0x10UL
257816db6323SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_RESP_CTX_INIT_MASK_MRAV     0x20UL
257978eeadb8SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_RESP_CTX_INIT_MASK_TKC      0x40UL
258078eeadb8SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_RESP_CTX_INIT_MASK_RKC      0x80UL
258116db6323SMichael Chan 	u8	qp_init_offset;
258216db6323SMichael Chan 	u8	srq_init_offset;
258316db6323SMichael Chan 	u8	cq_init_offset;
258416db6323SMichael Chan 	u8	vnic_init_offset;
2585460c2577SMichael Chan 	u8	tqm_fp_rings_count;
258616db6323SMichael Chan 	u8	stat_init_offset;
258716db6323SMichael Chan 	u8	mrav_init_offset;
258831f67c2eSMichael Chan 	u8	tqm_fp_rings_count_ext;
258978eeadb8SMichael Chan 	u8	tkc_init_offset;
259078eeadb8SMichael Chan 	u8	rkc_init_offset;
259178eeadb8SMichael Chan 	__le16	tkc_entry_size;
259278eeadb8SMichael Chan 	__le16	rkc_entry_size;
259378eeadb8SMichael Chan 	__le32	tkc_max_entries;
259478eeadb8SMichael Chan 	__le32	rkc_max_entries;
25952895c153SMichael Chan 	u8	rsvd1[7];
25966fc92c33SMichael Chan 	u8	valid;
25976fc92c33SMichael Chan };
25986fc92c33SMichael Chan 
259931f67c2eSMichael Chan /* tqm_fp_ring_cfg (size:128b/16B) */
260031f67c2eSMichael Chan struct tqm_fp_ring_cfg {
260131f67c2eSMichael Chan 	u8	tqm_ring_pg_size_tqm_ring_lvl;
260231f67c2eSMichael Chan 	#define TQM_FP_RING_CFG_TQM_RING_CFG_TQM_RING_LVL_MASK      0xfUL
260331f67c2eSMichael Chan 	#define TQM_FP_RING_CFG_TQM_RING_CFG_TQM_RING_LVL_SFT       0
260431f67c2eSMichael Chan 	#define TQM_FP_RING_CFG_TQM_RING_CFG_TQM_RING_LVL_LVL_0       0x0UL
260531f67c2eSMichael Chan 	#define TQM_FP_RING_CFG_TQM_RING_CFG_TQM_RING_LVL_LVL_1       0x1UL
260631f67c2eSMichael Chan 	#define TQM_FP_RING_CFG_TQM_RING_CFG_TQM_RING_LVL_LVL_2       0x2UL
260731f67c2eSMichael Chan 	#define TQM_FP_RING_CFG_TQM_RING_CFG_TQM_RING_LVL_LAST       TQM_FP_RING_CFG_TQM_RING_CFG_TQM_RING_LVL_LVL_2
260831f67c2eSMichael Chan 	#define TQM_FP_RING_CFG_TQM_RING_CFG_TQM_RING_PG_SIZE_MASK  0xf0UL
260931f67c2eSMichael Chan 	#define TQM_FP_RING_CFG_TQM_RING_CFG_TQM_RING_PG_SIZE_SFT   4
261031f67c2eSMichael Chan 	#define TQM_FP_RING_CFG_TQM_RING_CFG_TQM_RING_PG_SIZE_PG_4K   (0x0UL << 4)
261131f67c2eSMichael Chan 	#define TQM_FP_RING_CFG_TQM_RING_CFG_TQM_RING_PG_SIZE_PG_8K   (0x1UL << 4)
261231f67c2eSMichael Chan 	#define TQM_FP_RING_CFG_TQM_RING_CFG_TQM_RING_PG_SIZE_PG_64K  (0x2UL << 4)
261331f67c2eSMichael Chan 	#define TQM_FP_RING_CFG_TQM_RING_CFG_TQM_RING_PG_SIZE_PG_2M   (0x3UL << 4)
261431f67c2eSMichael Chan 	#define TQM_FP_RING_CFG_TQM_RING_CFG_TQM_RING_PG_SIZE_PG_8M   (0x4UL << 4)
261531f67c2eSMichael Chan 	#define TQM_FP_RING_CFG_TQM_RING_CFG_TQM_RING_PG_SIZE_PG_1G   (0x5UL << 4)
261631f67c2eSMichael Chan 	#define TQM_FP_RING_CFG_TQM_RING_CFG_TQM_RING_PG_SIZE_LAST   TQM_FP_RING_CFG_TQM_RING_CFG_TQM_RING_PG_SIZE_PG_1G
261731f67c2eSMichael Chan 	u8	unused[3];
261831f67c2eSMichael Chan 	__le32	tqm_ring_num_entries;
261931f67c2eSMichael Chan 	__le64	tqm_ring_page_dir;
262031f67c2eSMichael Chan };
262131f67c2eSMichael Chan 
262278eeadb8SMichael Chan /* hwrm_func_backing_store_cfg_input (size:2688b/336B) */
26236fc92c33SMichael Chan struct hwrm_func_backing_store_cfg_input {
26246fc92c33SMichael Chan 	__le16	req_type;
26256fc92c33SMichael Chan 	__le16	cmpl_ring;
26266fc92c33SMichael Chan 	__le16	seq_id;
26276fc92c33SMichael Chan 	__le16	target_id;
26286fc92c33SMichael Chan 	__le64	resp_addr;
26296fc92c33SMichael Chan 	__le32	flags;
26306fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_FLAGS_PREBOOT_MODE               0x1UL
26314a50ddc2SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_FLAGS_MRAV_RESERVATION_SPLIT     0x2UL
26326fc92c33SMichael Chan 	__le32	enables;
26336fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_ENABLES_QP             0x1UL
26346fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_ENABLES_SRQ            0x2UL
26356fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_ENABLES_CQ             0x4UL
26366fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_ENABLES_VNIC           0x8UL
26376fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_ENABLES_STAT           0x10UL
26386fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_ENABLES_TQM_SP         0x20UL
26396fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_ENABLES_TQM_RING0      0x40UL
26406fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_ENABLES_TQM_RING1      0x80UL
26416fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_ENABLES_TQM_RING2      0x100UL
26426fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_ENABLES_TQM_RING3      0x200UL
26436fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_ENABLES_TQM_RING4      0x400UL
26446fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_ENABLES_TQM_RING5      0x800UL
26456fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_ENABLES_TQM_RING6      0x1000UL
26466fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_ENABLES_TQM_RING7      0x2000UL
26476fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_ENABLES_MRAV           0x4000UL
26486fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_ENABLES_TIM            0x8000UL
264916db6323SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_ENABLES_TQM_RING8      0x10000UL
265016db6323SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_ENABLES_TQM_RING9      0x20000UL
265116db6323SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_ENABLES_TQM_RING10     0x40000UL
265278eeadb8SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_ENABLES_TKC            0x80000UL
265378eeadb8SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_ENABLES_RKC            0x100000UL
26546fc92c33SMichael Chan 	u8	qpc_pg_size_qpc_lvl;
26556fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_QPC_LVL_MASK      0xfUL
26566fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_QPC_LVL_SFT       0
26576fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_QPC_LVL_LVL_0       0x0UL
26586fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_QPC_LVL_LVL_1       0x1UL
26596fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_QPC_LVL_LVL_2       0x2UL
26606fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_QPC_LVL_LAST       FUNC_BACKING_STORE_CFG_REQ_QPC_LVL_LVL_2
26616fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_QPC_PG_SIZE_MASK  0xf0UL
26626fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_QPC_PG_SIZE_SFT   4
26636fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_QPC_PG_SIZE_PG_4K   (0x0UL << 4)
26646fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_QPC_PG_SIZE_PG_8K   (0x1UL << 4)
26656fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_QPC_PG_SIZE_PG_64K  (0x2UL << 4)
26666fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_QPC_PG_SIZE_PG_2M   (0x3UL << 4)
26676fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_QPC_PG_SIZE_PG_8M   (0x4UL << 4)
26686fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_QPC_PG_SIZE_PG_1G   (0x5UL << 4)
26696fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_QPC_PG_SIZE_LAST   FUNC_BACKING_STORE_CFG_REQ_QPC_PG_SIZE_PG_1G
26706fc92c33SMichael Chan 	u8	srq_pg_size_srq_lvl;
26716fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_SRQ_LVL_MASK      0xfUL
26726fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_SRQ_LVL_SFT       0
26736fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_SRQ_LVL_LVL_0       0x0UL
26746fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_SRQ_LVL_LVL_1       0x1UL
26756fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_SRQ_LVL_LVL_2       0x2UL
26766fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_SRQ_LVL_LAST       FUNC_BACKING_STORE_CFG_REQ_SRQ_LVL_LVL_2
26776fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_SRQ_PG_SIZE_MASK  0xf0UL
26786fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_SRQ_PG_SIZE_SFT   4
26796fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_SRQ_PG_SIZE_PG_4K   (0x0UL << 4)
26806fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_SRQ_PG_SIZE_PG_8K   (0x1UL << 4)
26816fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_SRQ_PG_SIZE_PG_64K  (0x2UL << 4)
26826fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_SRQ_PG_SIZE_PG_2M   (0x3UL << 4)
26836fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_SRQ_PG_SIZE_PG_8M   (0x4UL << 4)
26846fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_SRQ_PG_SIZE_PG_1G   (0x5UL << 4)
26856fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_SRQ_PG_SIZE_LAST   FUNC_BACKING_STORE_CFG_REQ_SRQ_PG_SIZE_PG_1G
26866fc92c33SMichael Chan 	u8	cq_pg_size_cq_lvl;
26876fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_CQ_LVL_MASK      0xfUL
26886fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_CQ_LVL_SFT       0
26896fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_CQ_LVL_LVL_0       0x0UL
26906fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_CQ_LVL_LVL_1       0x1UL
26916fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_CQ_LVL_LVL_2       0x2UL
26926fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_CQ_LVL_LAST       FUNC_BACKING_STORE_CFG_REQ_CQ_LVL_LVL_2
26936fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_CQ_PG_SIZE_MASK  0xf0UL
26946fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_CQ_PG_SIZE_SFT   4
26956fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_CQ_PG_SIZE_PG_4K   (0x0UL << 4)
26966fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_CQ_PG_SIZE_PG_8K   (0x1UL << 4)
26976fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_CQ_PG_SIZE_PG_64K  (0x2UL << 4)
26986fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_CQ_PG_SIZE_PG_2M   (0x3UL << 4)
26996fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_CQ_PG_SIZE_PG_8M   (0x4UL << 4)
27006fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_CQ_PG_SIZE_PG_1G   (0x5UL << 4)
27016fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_CQ_PG_SIZE_LAST   FUNC_BACKING_STORE_CFG_REQ_CQ_PG_SIZE_PG_1G
27026fc92c33SMichael Chan 	u8	vnic_pg_size_vnic_lvl;
27036fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_VNIC_LVL_MASK      0xfUL
27046fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_VNIC_LVL_SFT       0
27056fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_VNIC_LVL_LVL_0       0x0UL
27066fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_VNIC_LVL_LVL_1       0x1UL
27076fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_VNIC_LVL_LVL_2       0x2UL
27086fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_VNIC_LVL_LAST       FUNC_BACKING_STORE_CFG_REQ_VNIC_LVL_LVL_2
27096fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_VNIC_PG_SIZE_MASK  0xf0UL
27106fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_VNIC_PG_SIZE_SFT   4
27116fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_VNIC_PG_SIZE_PG_4K   (0x0UL << 4)
27126fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_VNIC_PG_SIZE_PG_8K   (0x1UL << 4)
27136fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_VNIC_PG_SIZE_PG_64K  (0x2UL << 4)
27146fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_VNIC_PG_SIZE_PG_2M   (0x3UL << 4)
27156fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_VNIC_PG_SIZE_PG_8M   (0x4UL << 4)
27166fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_VNIC_PG_SIZE_PG_1G   (0x5UL << 4)
27176fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_VNIC_PG_SIZE_LAST   FUNC_BACKING_STORE_CFG_REQ_VNIC_PG_SIZE_PG_1G
27186fc92c33SMichael Chan 	u8	stat_pg_size_stat_lvl;
27196fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_STAT_LVL_MASK      0xfUL
27206fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_STAT_LVL_SFT       0
27216fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_STAT_LVL_LVL_0       0x0UL
27226fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_STAT_LVL_LVL_1       0x1UL
27236fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_STAT_LVL_LVL_2       0x2UL
27246fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_STAT_LVL_LAST       FUNC_BACKING_STORE_CFG_REQ_STAT_LVL_LVL_2
27256fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_STAT_PG_SIZE_MASK  0xf0UL
27266fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_STAT_PG_SIZE_SFT   4
27276fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_STAT_PG_SIZE_PG_4K   (0x0UL << 4)
27286fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_STAT_PG_SIZE_PG_8K   (0x1UL << 4)
27296fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_STAT_PG_SIZE_PG_64K  (0x2UL << 4)
27306fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_STAT_PG_SIZE_PG_2M   (0x3UL << 4)
27316fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_STAT_PG_SIZE_PG_8M   (0x4UL << 4)
27326fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_STAT_PG_SIZE_PG_1G   (0x5UL << 4)
27336fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_STAT_PG_SIZE_LAST   FUNC_BACKING_STORE_CFG_REQ_STAT_PG_SIZE_PG_1G
27346fc92c33SMichael Chan 	u8	tqm_sp_pg_size_tqm_sp_lvl;
27356fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_SP_LVL_MASK      0xfUL
27366fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_SP_LVL_SFT       0
27376fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_SP_LVL_LVL_0       0x0UL
27386fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_SP_LVL_LVL_1       0x1UL
27396fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_SP_LVL_LVL_2       0x2UL
27406fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_SP_LVL_LAST       FUNC_BACKING_STORE_CFG_REQ_TQM_SP_LVL_LVL_2
27416fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_SP_PG_SIZE_MASK  0xf0UL
27426fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_SP_PG_SIZE_SFT   4
27436fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_SP_PG_SIZE_PG_4K   (0x0UL << 4)
27446fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_SP_PG_SIZE_PG_8K   (0x1UL << 4)
27456fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_SP_PG_SIZE_PG_64K  (0x2UL << 4)
27466fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_SP_PG_SIZE_PG_2M   (0x3UL << 4)
27476fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_SP_PG_SIZE_PG_8M   (0x4UL << 4)
27486fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_SP_PG_SIZE_PG_1G   (0x5UL << 4)
27496fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_SP_PG_SIZE_LAST   FUNC_BACKING_STORE_CFG_REQ_TQM_SP_PG_SIZE_PG_1G
27506fc92c33SMichael Chan 	u8	tqm_ring0_pg_size_tqm_ring0_lvl;
27516fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING0_LVL_MASK      0xfUL
27526fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING0_LVL_SFT       0
27536fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING0_LVL_LVL_0       0x0UL
27546fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING0_LVL_LVL_1       0x1UL
27556fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING0_LVL_LVL_2       0x2UL
27566fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING0_LVL_LAST       FUNC_BACKING_STORE_CFG_REQ_TQM_RING0_LVL_LVL_2
27576fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING0_PG_SIZE_MASK  0xf0UL
27586fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING0_PG_SIZE_SFT   4
27596fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING0_PG_SIZE_PG_4K   (0x0UL << 4)
27606fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING0_PG_SIZE_PG_8K   (0x1UL << 4)
27616fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING0_PG_SIZE_PG_64K  (0x2UL << 4)
27626fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING0_PG_SIZE_PG_2M   (0x3UL << 4)
27636fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING0_PG_SIZE_PG_8M   (0x4UL << 4)
27646fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING0_PG_SIZE_PG_1G   (0x5UL << 4)
27656fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING0_PG_SIZE_LAST   FUNC_BACKING_STORE_CFG_REQ_TQM_RING0_PG_SIZE_PG_1G
27666fc92c33SMichael Chan 	u8	tqm_ring1_pg_size_tqm_ring1_lvl;
27676fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING1_LVL_MASK      0xfUL
27686fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING1_LVL_SFT       0
27696fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING1_LVL_LVL_0       0x0UL
27706fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING1_LVL_LVL_1       0x1UL
27716fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING1_LVL_LVL_2       0x2UL
27726fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING1_LVL_LAST       FUNC_BACKING_STORE_CFG_REQ_TQM_RING1_LVL_LVL_2
27736fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING1_PG_SIZE_MASK  0xf0UL
27746fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING1_PG_SIZE_SFT   4
27756fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING1_PG_SIZE_PG_4K   (0x0UL << 4)
27766fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING1_PG_SIZE_PG_8K   (0x1UL << 4)
27776fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING1_PG_SIZE_PG_64K  (0x2UL << 4)
27786fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING1_PG_SIZE_PG_2M   (0x3UL << 4)
27796fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING1_PG_SIZE_PG_8M   (0x4UL << 4)
27806fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING1_PG_SIZE_PG_1G   (0x5UL << 4)
27816fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING1_PG_SIZE_LAST   FUNC_BACKING_STORE_CFG_REQ_TQM_RING1_PG_SIZE_PG_1G
27826fc92c33SMichael Chan 	u8	tqm_ring2_pg_size_tqm_ring2_lvl;
27836fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING2_LVL_MASK      0xfUL
27846fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING2_LVL_SFT       0
27856fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING2_LVL_LVL_0       0x0UL
27866fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING2_LVL_LVL_1       0x1UL
27876fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING2_LVL_LVL_2       0x2UL
27886fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING2_LVL_LAST       FUNC_BACKING_STORE_CFG_REQ_TQM_RING2_LVL_LVL_2
27896fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING2_PG_SIZE_MASK  0xf0UL
27906fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING2_PG_SIZE_SFT   4
27916fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING2_PG_SIZE_PG_4K   (0x0UL << 4)
27926fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING2_PG_SIZE_PG_8K   (0x1UL << 4)
27936fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING2_PG_SIZE_PG_64K  (0x2UL << 4)
27946fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING2_PG_SIZE_PG_2M   (0x3UL << 4)
27956fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING2_PG_SIZE_PG_8M   (0x4UL << 4)
27966fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING2_PG_SIZE_PG_1G   (0x5UL << 4)
27976fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING2_PG_SIZE_LAST   FUNC_BACKING_STORE_CFG_REQ_TQM_RING2_PG_SIZE_PG_1G
27986fc92c33SMichael Chan 	u8	tqm_ring3_pg_size_tqm_ring3_lvl;
27996fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING3_LVL_MASK      0xfUL
28006fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING3_LVL_SFT       0
28016fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING3_LVL_LVL_0       0x0UL
28026fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING3_LVL_LVL_1       0x1UL
28036fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING3_LVL_LVL_2       0x2UL
28046fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING3_LVL_LAST       FUNC_BACKING_STORE_CFG_REQ_TQM_RING3_LVL_LVL_2
28056fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING3_PG_SIZE_MASK  0xf0UL
28066fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING3_PG_SIZE_SFT   4
28076fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING3_PG_SIZE_PG_4K   (0x0UL << 4)
28086fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING3_PG_SIZE_PG_8K   (0x1UL << 4)
28096fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING3_PG_SIZE_PG_64K  (0x2UL << 4)
28106fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING3_PG_SIZE_PG_2M   (0x3UL << 4)
28116fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING3_PG_SIZE_PG_8M   (0x4UL << 4)
28126fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING3_PG_SIZE_PG_1G   (0x5UL << 4)
28136fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING3_PG_SIZE_LAST   FUNC_BACKING_STORE_CFG_REQ_TQM_RING3_PG_SIZE_PG_1G
28146fc92c33SMichael Chan 	u8	tqm_ring4_pg_size_tqm_ring4_lvl;
28156fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING4_LVL_MASK      0xfUL
28166fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING4_LVL_SFT       0
28176fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING4_LVL_LVL_0       0x0UL
28186fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING4_LVL_LVL_1       0x1UL
28196fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING4_LVL_LVL_2       0x2UL
28206fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING4_LVL_LAST       FUNC_BACKING_STORE_CFG_REQ_TQM_RING4_LVL_LVL_2
28216fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING4_PG_SIZE_MASK  0xf0UL
28226fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING4_PG_SIZE_SFT   4
28236fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING4_PG_SIZE_PG_4K   (0x0UL << 4)
28246fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING4_PG_SIZE_PG_8K   (0x1UL << 4)
28256fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING4_PG_SIZE_PG_64K  (0x2UL << 4)
28266fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING4_PG_SIZE_PG_2M   (0x3UL << 4)
28276fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING4_PG_SIZE_PG_8M   (0x4UL << 4)
28286fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING4_PG_SIZE_PG_1G   (0x5UL << 4)
28296fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING4_PG_SIZE_LAST   FUNC_BACKING_STORE_CFG_REQ_TQM_RING4_PG_SIZE_PG_1G
28306fc92c33SMichael Chan 	u8	tqm_ring5_pg_size_tqm_ring5_lvl;
28316fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING5_LVL_MASK      0xfUL
28326fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING5_LVL_SFT       0
28336fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING5_LVL_LVL_0       0x0UL
28346fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING5_LVL_LVL_1       0x1UL
28356fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING5_LVL_LVL_2       0x2UL
28366fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING5_LVL_LAST       FUNC_BACKING_STORE_CFG_REQ_TQM_RING5_LVL_LVL_2
28376fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING5_PG_SIZE_MASK  0xf0UL
28386fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING5_PG_SIZE_SFT   4
28396fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING5_PG_SIZE_PG_4K   (0x0UL << 4)
28406fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING5_PG_SIZE_PG_8K   (0x1UL << 4)
28416fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING5_PG_SIZE_PG_64K  (0x2UL << 4)
28426fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING5_PG_SIZE_PG_2M   (0x3UL << 4)
28436fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING5_PG_SIZE_PG_8M   (0x4UL << 4)
28446fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING5_PG_SIZE_PG_1G   (0x5UL << 4)
28456fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING5_PG_SIZE_LAST   FUNC_BACKING_STORE_CFG_REQ_TQM_RING5_PG_SIZE_PG_1G
28466fc92c33SMichael Chan 	u8	tqm_ring6_pg_size_tqm_ring6_lvl;
28476fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING6_LVL_MASK      0xfUL
28486fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING6_LVL_SFT       0
28496fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING6_LVL_LVL_0       0x0UL
28506fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING6_LVL_LVL_1       0x1UL
28516fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING6_LVL_LVL_2       0x2UL
28526fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING6_LVL_LAST       FUNC_BACKING_STORE_CFG_REQ_TQM_RING6_LVL_LVL_2
28536fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING6_PG_SIZE_MASK  0xf0UL
28546fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING6_PG_SIZE_SFT   4
28556fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING6_PG_SIZE_PG_4K   (0x0UL << 4)
28566fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING6_PG_SIZE_PG_8K   (0x1UL << 4)
28576fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING6_PG_SIZE_PG_64K  (0x2UL << 4)
28586fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING6_PG_SIZE_PG_2M   (0x3UL << 4)
28596fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING6_PG_SIZE_PG_8M   (0x4UL << 4)
28606fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING6_PG_SIZE_PG_1G   (0x5UL << 4)
28616fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING6_PG_SIZE_LAST   FUNC_BACKING_STORE_CFG_REQ_TQM_RING6_PG_SIZE_PG_1G
28626fc92c33SMichael Chan 	u8	tqm_ring7_pg_size_tqm_ring7_lvl;
28636fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING7_LVL_MASK      0xfUL
28646fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING7_LVL_SFT       0
28656fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING7_LVL_LVL_0       0x0UL
28666fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING7_LVL_LVL_1       0x1UL
28676fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING7_LVL_LVL_2       0x2UL
28686fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING7_LVL_LAST       FUNC_BACKING_STORE_CFG_REQ_TQM_RING7_LVL_LVL_2
28696fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING7_PG_SIZE_MASK  0xf0UL
28706fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING7_PG_SIZE_SFT   4
28716fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING7_PG_SIZE_PG_4K   (0x0UL << 4)
28726fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING7_PG_SIZE_PG_8K   (0x1UL << 4)
28736fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING7_PG_SIZE_PG_64K  (0x2UL << 4)
28746fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING7_PG_SIZE_PG_2M   (0x3UL << 4)
28756fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING7_PG_SIZE_PG_8M   (0x4UL << 4)
28766fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING7_PG_SIZE_PG_1G   (0x5UL << 4)
28776fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TQM_RING7_PG_SIZE_LAST   FUNC_BACKING_STORE_CFG_REQ_TQM_RING7_PG_SIZE_PG_1G
28786fc92c33SMichael Chan 	u8	mrav_pg_size_mrav_lvl;
28796fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_MRAV_LVL_MASK      0xfUL
28806fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_MRAV_LVL_SFT       0
28816fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_MRAV_LVL_LVL_0       0x0UL
28826fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_MRAV_LVL_LVL_1       0x1UL
28836fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_MRAV_LVL_LVL_2       0x2UL
28846fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_MRAV_LVL_LAST       FUNC_BACKING_STORE_CFG_REQ_MRAV_LVL_LVL_2
28856fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_MRAV_PG_SIZE_MASK  0xf0UL
28866fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_MRAV_PG_SIZE_SFT   4
28876fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_MRAV_PG_SIZE_PG_4K   (0x0UL << 4)
28886fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_MRAV_PG_SIZE_PG_8K   (0x1UL << 4)
28896fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_MRAV_PG_SIZE_PG_64K  (0x2UL << 4)
28906fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_MRAV_PG_SIZE_PG_2M   (0x3UL << 4)
28916fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_MRAV_PG_SIZE_PG_8M   (0x4UL << 4)
28926fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_MRAV_PG_SIZE_PG_1G   (0x5UL << 4)
28936fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_MRAV_PG_SIZE_LAST   FUNC_BACKING_STORE_CFG_REQ_MRAV_PG_SIZE_PG_1G
28946fc92c33SMichael Chan 	u8	tim_pg_size_tim_lvl;
28956fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TIM_LVL_MASK      0xfUL
28966fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TIM_LVL_SFT       0
28976fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TIM_LVL_LVL_0       0x0UL
28986fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TIM_LVL_LVL_1       0x1UL
28996fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TIM_LVL_LVL_2       0x2UL
29006fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TIM_LVL_LAST       FUNC_BACKING_STORE_CFG_REQ_TIM_LVL_LVL_2
29016fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TIM_PG_SIZE_MASK  0xf0UL
29026fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TIM_PG_SIZE_SFT   4
29036fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TIM_PG_SIZE_PG_4K   (0x0UL << 4)
29046fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TIM_PG_SIZE_PG_8K   (0x1UL << 4)
29056fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TIM_PG_SIZE_PG_64K  (0x2UL << 4)
29066fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TIM_PG_SIZE_PG_2M   (0x3UL << 4)
29076fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TIM_PG_SIZE_PG_8M   (0x4UL << 4)
29086fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TIM_PG_SIZE_PG_1G   (0x5UL << 4)
29096fc92c33SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TIM_PG_SIZE_LAST   FUNC_BACKING_STORE_CFG_REQ_TIM_PG_SIZE_PG_1G
29106fc92c33SMichael Chan 	__le64	qpc_page_dir;
29116fc92c33SMichael Chan 	__le64	srq_page_dir;
29126fc92c33SMichael Chan 	__le64	cq_page_dir;
29136fc92c33SMichael Chan 	__le64	vnic_page_dir;
29146fc92c33SMichael Chan 	__le64	stat_page_dir;
29156fc92c33SMichael Chan 	__le64	tqm_sp_page_dir;
29166fc92c33SMichael Chan 	__le64	tqm_ring0_page_dir;
29176fc92c33SMichael Chan 	__le64	tqm_ring1_page_dir;
29186fc92c33SMichael Chan 	__le64	tqm_ring2_page_dir;
29196fc92c33SMichael Chan 	__le64	tqm_ring3_page_dir;
29206fc92c33SMichael Chan 	__le64	tqm_ring4_page_dir;
29216fc92c33SMichael Chan 	__le64	tqm_ring5_page_dir;
29226fc92c33SMichael Chan 	__le64	tqm_ring6_page_dir;
29236fc92c33SMichael Chan 	__le64	tqm_ring7_page_dir;
29246fc92c33SMichael Chan 	__le64	mrav_page_dir;
29256fc92c33SMichael Chan 	__le64	tim_page_dir;
29266fc92c33SMichael Chan 	__le32	qp_num_entries;
29276fc92c33SMichael Chan 	__le32	srq_num_entries;
29286fc92c33SMichael Chan 	__le32	cq_num_entries;
29296fc92c33SMichael Chan 	__le32	stat_num_entries;
29306fc92c33SMichael Chan 	__le32	tqm_sp_num_entries;
29316fc92c33SMichael Chan 	__le32	tqm_ring0_num_entries;
29326fc92c33SMichael Chan 	__le32	tqm_ring1_num_entries;
29336fc92c33SMichael Chan 	__le32	tqm_ring2_num_entries;
29346fc92c33SMichael Chan 	__le32	tqm_ring3_num_entries;
29356fc92c33SMichael Chan 	__le32	tqm_ring4_num_entries;
29366fc92c33SMichael Chan 	__le32	tqm_ring5_num_entries;
29376fc92c33SMichael Chan 	__le32	tqm_ring6_num_entries;
29386fc92c33SMichael Chan 	__le32	tqm_ring7_num_entries;
29396fc92c33SMichael Chan 	__le32	mrav_num_entries;
29406fc92c33SMichael Chan 	__le32	tim_num_entries;
29416fc92c33SMichael Chan 	__le16	qp_num_qp1_entries;
29426fc92c33SMichael Chan 	__le16	qp_num_l2_entries;
29436fc92c33SMichael Chan 	__le16	qp_entry_size;
29446fc92c33SMichael Chan 	__le16	srq_num_l2_entries;
29456fc92c33SMichael Chan 	__le16	srq_entry_size;
29466fc92c33SMichael Chan 	__le16	cq_num_l2_entries;
29476fc92c33SMichael Chan 	__le16	cq_entry_size;
29486fc92c33SMichael Chan 	__le16	vnic_num_vnic_entries;
29496fc92c33SMichael Chan 	__le16	vnic_num_ring_table_entries;
29506fc92c33SMichael Chan 	__le16	vnic_entry_size;
29516fc92c33SMichael Chan 	__le16	stat_entry_size;
29526fc92c33SMichael Chan 	__le16	tqm_entry_size;
29536fc92c33SMichael Chan 	__le16	mrav_entry_size;
29546fc92c33SMichael Chan 	__le16	tim_entry_size;
295516db6323SMichael Chan 	u8	tqm_ring8_pg_size_tqm_ring_lvl;
295616db6323SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RING8_TQM_RING_LVL_MASK      0xfUL
295716db6323SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RING8_TQM_RING_LVL_SFT       0
295816db6323SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RING8_TQM_RING_LVL_LVL_0       0x0UL
295916db6323SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RING8_TQM_RING_LVL_LVL_1       0x1UL
296016db6323SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RING8_TQM_RING_LVL_LVL_2       0x2UL
296116db6323SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RING8_TQM_RING_LVL_LAST       FUNC_BACKING_STORE_CFG_REQ_RING8_TQM_RING_LVL_LVL_2
296216db6323SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RING8_TQM_RING_PG_SIZE_MASK  0xf0UL
296316db6323SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RING8_TQM_RING_PG_SIZE_SFT   4
296416db6323SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RING8_TQM_RING_PG_SIZE_PG_4K   (0x0UL << 4)
296516db6323SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RING8_TQM_RING_PG_SIZE_PG_8K   (0x1UL << 4)
296616db6323SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RING8_TQM_RING_PG_SIZE_PG_64K  (0x2UL << 4)
296716db6323SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RING8_TQM_RING_PG_SIZE_PG_2M   (0x3UL << 4)
296816db6323SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RING8_TQM_RING_PG_SIZE_PG_8M   (0x4UL << 4)
296916db6323SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RING8_TQM_RING_PG_SIZE_PG_1G   (0x5UL << 4)
297016db6323SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RING8_TQM_RING_PG_SIZE_LAST   FUNC_BACKING_STORE_CFG_REQ_RING8_TQM_RING_PG_SIZE_PG_1G
297116db6323SMichael Chan 	u8	ring8_unused[3];
297216db6323SMichael Chan 	__le32	tqm_ring8_num_entries;
297316db6323SMichael Chan 	__le64	tqm_ring8_page_dir;
297416db6323SMichael Chan 	u8	tqm_ring9_pg_size_tqm_ring_lvl;
297516db6323SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RING9_TQM_RING_LVL_MASK      0xfUL
297616db6323SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RING9_TQM_RING_LVL_SFT       0
297716db6323SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RING9_TQM_RING_LVL_LVL_0       0x0UL
297816db6323SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RING9_TQM_RING_LVL_LVL_1       0x1UL
297916db6323SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RING9_TQM_RING_LVL_LVL_2       0x2UL
298016db6323SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RING9_TQM_RING_LVL_LAST       FUNC_BACKING_STORE_CFG_REQ_RING9_TQM_RING_LVL_LVL_2
298116db6323SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RING9_TQM_RING_PG_SIZE_MASK  0xf0UL
298216db6323SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RING9_TQM_RING_PG_SIZE_SFT   4
298316db6323SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RING9_TQM_RING_PG_SIZE_PG_4K   (0x0UL << 4)
298416db6323SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RING9_TQM_RING_PG_SIZE_PG_8K   (0x1UL << 4)
298516db6323SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RING9_TQM_RING_PG_SIZE_PG_64K  (0x2UL << 4)
298616db6323SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RING9_TQM_RING_PG_SIZE_PG_2M   (0x3UL << 4)
298716db6323SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RING9_TQM_RING_PG_SIZE_PG_8M   (0x4UL << 4)
298816db6323SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RING9_TQM_RING_PG_SIZE_PG_1G   (0x5UL << 4)
298916db6323SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RING9_TQM_RING_PG_SIZE_LAST   FUNC_BACKING_STORE_CFG_REQ_RING9_TQM_RING_PG_SIZE_PG_1G
299016db6323SMichael Chan 	u8	ring9_unused[3];
299116db6323SMichael Chan 	__le32	tqm_ring9_num_entries;
299216db6323SMichael Chan 	__le64	tqm_ring9_page_dir;
299316db6323SMichael Chan 	u8	tqm_ring10_pg_size_tqm_ring_lvl;
299416db6323SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RING10_TQM_RING_LVL_MASK      0xfUL
299516db6323SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RING10_TQM_RING_LVL_SFT       0
299616db6323SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RING10_TQM_RING_LVL_LVL_0       0x0UL
299716db6323SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RING10_TQM_RING_LVL_LVL_1       0x1UL
299816db6323SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RING10_TQM_RING_LVL_LVL_2       0x2UL
299916db6323SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RING10_TQM_RING_LVL_LAST       FUNC_BACKING_STORE_CFG_REQ_RING10_TQM_RING_LVL_LVL_2
300016db6323SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RING10_TQM_RING_PG_SIZE_MASK  0xf0UL
300116db6323SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RING10_TQM_RING_PG_SIZE_SFT   4
300216db6323SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RING10_TQM_RING_PG_SIZE_PG_4K   (0x0UL << 4)
300316db6323SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RING10_TQM_RING_PG_SIZE_PG_8K   (0x1UL << 4)
300416db6323SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RING10_TQM_RING_PG_SIZE_PG_64K  (0x2UL << 4)
300516db6323SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RING10_TQM_RING_PG_SIZE_PG_2M   (0x3UL << 4)
300616db6323SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RING10_TQM_RING_PG_SIZE_PG_8M   (0x4UL << 4)
300716db6323SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RING10_TQM_RING_PG_SIZE_PG_1G   (0x5UL << 4)
300816db6323SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RING10_TQM_RING_PG_SIZE_LAST   FUNC_BACKING_STORE_CFG_REQ_RING10_TQM_RING_PG_SIZE_PG_1G
300916db6323SMichael Chan 	u8	ring10_unused[3];
301016db6323SMichael Chan 	__le32	tqm_ring10_num_entries;
301116db6323SMichael Chan 	__le64	tqm_ring10_page_dir;
301278eeadb8SMichael Chan 	__le32	tkc_num_entries;
301378eeadb8SMichael Chan 	__le32	rkc_num_entries;
301478eeadb8SMichael Chan 	__le64	tkc_page_dir;
301578eeadb8SMichael Chan 	__le64	rkc_page_dir;
301678eeadb8SMichael Chan 	__le16	tkc_entry_size;
301778eeadb8SMichael Chan 	__le16	rkc_entry_size;
301878eeadb8SMichael Chan 	u8	tkc_pg_size_tkc_lvl;
301978eeadb8SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TKC_LVL_MASK      0xfUL
302078eeadb8SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TKC_LVL_SFT       0
302178eeadb8SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TKC_LVL_LVL_0       0x0UL
302278eeadb8SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TKC_LVL_LVL_1       0x1UL
302378eeadb8SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TKC_LVL_LVL_2       0x2UL
302478eeadb8SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TKC_LVL_LAST       FUNC_BACKING_STORE_CFG_REQ_TKC_LVL_LVL_2
302578eeadb8SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TKC_PG_SIZE_MASK  0xf0UL
302678eeadb8SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TKC_PG_SIZE_SFT   4
302778eeadb8SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TKC_PG_SIZE_PG_4K   (0x0UL << 4)
302878eeadb8SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TKC_PG_SIZE_PG_8K   (0x1UL << 4)
302978eeadb8SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TKC_PG_SIZE_PG_64K  (0x2UL << 4)
303078eeadb8SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TKC_PG_SIZE_PG_2M   (0x3UL << 4)
303178eeadb8SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TKC_PG_SIZE_PG_8M   (0x4UL << 4)
303278eeadb8SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TKC_PG_SIZE_PG_1G   (0x5UL << 4)
303378eeadb8SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_TKC_PG_SIZE_LAST   FUNC_BACKING_STORE_CFG_REQ_TKC_PG_SIZE_PG_1G
303478eeadb8SMichael Chan 	u8	rkc_pg_size_rkc_lvl;
303578eeadb8SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RKC_LVL_MASK      0xfUL
303678eeadb8SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RKC_LVL_SFT       0
303778eeadb8SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RKC_LVL_LVL_0       0x0UL
303878eeadb8SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RKC_LVL_LVL_1       0x1UL
303978eeadb8SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RKC_LVL_LVL_2       0x2UL
304078eeadb8SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RKC_LVL_LAST       FUNC_BACKING_STORE_CFG_REQ_RKC_LVL_LVL_2
304178eeadb8SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RKC_PG_SIZE_MASK  0xf0UL
304278eeadb8SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RKC_PG_SIZE_SFT   4
304378eeadb8SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RKC_PG_SIZE_PG_4K   (0x0UL << 4)
304478eeadb8SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RKC_PG_SIZE_PG_8K   (0x1UL << 4)
304578eeadb8SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RKC_PG_SIZE_PG_64K  (0x2UL << 4)
304678eeadb8SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RKC_PG_SIZE_PG_2M   (0x3UL << 4)
304778eeadb8SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RKC_PG_SIZE_PG_8M   (0x4UL << 4)
304878eeadb8SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RKC_PG_SIZE_PG_1G   (0x5UL << 4)
304978eeadb8SMichael Chan 	#define FUNC_BACKING_STORE_CFG_REQ_RKC_PG_SIZE_LAST   FUNC_BACKING_STORE_CFG_REQ_RKC_PG_SIZE_PG_1G
305078eeadb8SMichael Chan 	u8	rsvd[2];
30516fc92c33SMichael Chan };
30526fc92c33SMichael Chan 
30536fc92c33SMichael Chan /* hwrm_func_backing_store_cfg_output (size:128b/16B) */
30546fc92c33SMichael Chan struct hwrm_func_backing_store_cfg_output {
30556fc92c33SMichael Chan 	__le16	error_code;
30566fc92c33SMichael Chan 	__le16	req_type;
30576fc92c33SMichael Chan 	__le16	seq_id;
30586fc92c33SMichael Chan 	__le16	resp_len;
30596fc92c33SMichael Chan 	u8	unused_0[7];
30606fc92c33SMichael Chan 	u8	valid;
30616fc92c33SMichael Chan };
30626fc92c33SMichael Chan 
30633293ec23SMichael Chan /* hwrm_error_recovery_qcfg_input (size:192b/24B) */
30643293ec23SMichael Chan struct hwrm_error_recovery_qcfg_input {
30653293ec23SMichael Chan 	__le16	req_type;
30663293ec23SMichael Chan 	__le16	cmpl_ring;
30673293ec23SMichael Chan 	__le16	seq_id;
30683293ec23SMichael Chan 	__le16	target_id;
30693293ec23SMichael Chan 	__le64	resp_addr;
30703293ec23SMichael Chan 	u8	unused_0[8];
30713293ec23SMichael Chan };
30723293ec23SMichael Chan 
30733293ec23SMichael Chan /* hwrm_error_recovery_qcfg_output (size:1664b/208B) */
30743293ec23SMichael Chan struct hwrm_error_recovery_qcfg_output {
30753293ec23SMichael Chan 	__le16	error_code;
30763293ec23SMichael Chan 	__le16	req_type;
30773293ec23SMichael Chan 	__le16	seq_id;
30783293ec23SMichael Chan 	__le16	resp_len;
30793293ec23SMichael Chan 	__le32	flags;
30803293ec23SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_FLAGS_HOST       0x1UL
30813293ec23SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_FLAGS_CO_CPU     0x2UL
30823293ec23SMichael Chan 	__le32	driver_polling_freq;
30833293ec23SMichael Chan 	__le32	master_func_wait_period;
30843293ec23SMichael Chan 	__le32	normal_func_wait_period;
30853293ec23SMichael Chan 	__le32	master_func_wait_period_after_reset;
30863293ec23SMichael Chan 	__le32	max_bailout_time_after_reset;
30873293ec23SMichael Chan 	__le32	fw_health_status_reg;
30883293ec23SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_FW_HEALTH_STATUS_REG_ADDR_SPACE_MASK    0x3UL
30893293ec23SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_FW_HEALTH_STATUS_REG_ADDR_SPACE_SFT     0
30903293ec23SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_FW_HEALTH_STATUS_REG_ADDR_SPACE_PCIE_CFG  0x0UL
30913293ec23SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_FW_HEALTH_STATUS_REG_ADDR_SPACE_GRC       0x1UL
30923293ec23SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_FW_HEALTH_STATUS_REG_ADDR_SPACE_BAR0      0x2UL
30933293ec23SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_FW_HEALTH_STATUS_REG_ADDR_SPACE_BAR1      0x3UL
30943293ec23SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_FW_HEALTH_STATUS_REG_ADDR_SPACE_LAST     ERROR_RECOVERY_QCFG_RESP_FW_HEALTH_STATUS_REG_ADDR_SPACE_BAR1
30953293ec23SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_FW_HEALTH_STATUS_REG_ADDR_MASK          0xfffffffcUL
30963293ec23SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_FW_HEALTH_STATUS_REG_ADDR_SFT           2
30973293ec23SMichael Chan 	__le32	fw_heartbeat_reg;
30983293ec23SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_FW_HEARTBEAT_REG_ADDR_SPACE_MASK    0x3UL
30993293ec23SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_FW_HEARTBEAT_REG_ADDR_SPACE_SFT     0
31003293ec23SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_FW_HEARTBEAT_REG_ADDR_SPACE_PCIE_CFG  0x0UL
31013293ec23SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_FW_HEARTBEAT_REG_ADDR_SPACE_GRC       0x1UL
31023293ec23SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_FW_HEARTBEAT_REG_ADDR_SPACE_BAR0      0x2UL
31033293ec23SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_FW_HEARTBEAT_REG_ADDR_SPACE_BAR1      0x3UL
31043293ec23SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_FW_HEARTBEAT_REG_ADDR_SPACE_LAST     ERROR_RECOVERY_QCFG_RESP_FW_HEARTBEAT_REG_ADDR_SPACE_BAR1
31053293ec23SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_FW_HEARTBEAT_REG_ADDR_MASK          0xfffffffcUL
31063293ec23SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_FW_HEARTBEAT_REG_ADDR_SFT           2
31073293ec23SMichael Chan 	__le32	fw_reset_cnt_reg;
31083293ec23SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_FW_RESET_CNT_REG_ADDR_SPACE_MASK    0x3UL
31093293ec23SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_FW_RESET_CNT_REG_ADDR_SPACE_SFT     0
31103293ec23SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_FW_RESET_CNT_REG_ADDR_SPACE_PCIE_CFG  0x0UL
31113293ec23SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_FW_RESET_CNT_REG_ADDR_SPACE_GRC       0x1UL
31123293ec23SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_FW_RESET_CNT_REG_ADDR_SPACE_BAR0      0x2UL
31133293ec23SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_FW_RESET_CNT_REG_ADDR_SPACE_BAR1      0x3UL
31143293ec23SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_FW_RESET_CNT_REG_ADDR_SPACE_LAST     ERROR_RECOVERY_QCFG_RESP_FW_RESET_CNT_REG_ADDR_SPACE_BAR1
31153293ec23SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_FW_RESET_CNT_REG_ADDR_MASK          0xfffffffcUL
31163293ec23SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_FW_RESET_CNT_REG_ADDR_SFT           2
31173293ec23SMichael Chan 	__le32	reset_inprogress_reg;
31183293ec23SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_RESET_INPROGRESS_REG_ADDR_SPACE_MASK    0x3UL
31193293ec23SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_RESET_INPROGRESS_REG_ADDR_SPACE_SFT     0
31203293ec23SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_RESET_INPROGRESS_REG_ADDR_SPACE_PCIE_CFG  0x0UL
31213293ec23SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_RESET_INPROGRESS_REG_ADDR_SPACE_GRC       0x1UL
31223293ec23SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_RESET_INPROGRESS_REG_ADDR_SPACE_BAR0      0x2UL
31233293ec23SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_RESET_INPROGRESS_REG_ADDR_SPACE_BAR1      0x3UL
31243293ec23SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_RESET_INPROGRESS_REG_ADDR_SPACE_LAST     ERROR_RECOVERY_QCFG_RESP_RESET_INPROGRESS_REG_ADDR_SPACE_BAR1
31253293ec23SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_RESET_INPROGRESS_REG_ADDR_MASK          0xfffffffcUL
31263293ec23SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_RESET_INPROGRESS_REG_ADDR_SFT           2
31273293ec23SMichael Chan 	__le32	reset_inprogress_reg_mask;
31283293ec23SMichael Chan 	u8	unused_0[3];
31293293ec23SMichael Chan 	u8	reg_array_cnt;
31303293ec23SMichael Chan 	__le32	reset_reg[16];
31313293ec23SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_RESET_REG_ADDR_SPACE_MASK    0x3UL
31323293ec23SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_RESET_REG_ADDR_SPACE_SFT     0
31333293ec23SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_RESET_REG_ADDR_SPACE_PCIE_CFG  0x0UL
31343293ec23SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_RESET_REG_ADDR_SPACE_GRC       0x1UL
31353293ec23SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_RESET_REG_ADDR_SPACE_BAR0      0x2UL
31363293ec23SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_RESET_REG_ADDR_SPACE_BAR1      0x3UL
31373293ec23SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_RESET_REG_ADDR_SPACE_LAST     ERROR_RECOVERY_QCFG_RESP_RESET_REG_ADDR_SPACE_BAR1
31383293ec23SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_RESET_REG_ADDR_MASK          0xfffffffcUL
31393293ec23SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_RESET_REG_ADDR_SFT           2
31403293ec23SMichael Chan 	__le32	reset_reg_val[16];
31413293ec23SMichael Chan 	u8	delay_after_reset[16];
3142460c2577SMichael Chan 	__le32	err_recovery_cnt_reg;
3143460c2577SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_ERR_RECOVERY_CNT_REG_ADDR_SPACE_MASK    0x3UL
3144460c2577SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_ERR_RECOVERY_CNT_REG_ADDR_SPACE_SFT     0
3145460c2577SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_ERR_RECOVERY_CNT_REG_ADDR_SPACE_PCIE_CFG  0x0UL
3146460c2577SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_ERR_RECOVERY_CNT_REG_ADDR_SPACE_GRC       0x1UL
3147460c2577SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_ERR_RECOVERY_CNT_REG_ADDR_SPACE_BAR0      0x2UL
3148460c2577SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_ERR_RECOVERY_CNT_REG_ADDR_SPACE_BAR1      0x3UL
3149460c2577SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_ERR_RECOVERY_CNT_REG_ADDR_SPACE_LAST     ERROR_RECOVERY_QCFG_RESP_ERR_RECOVERY_CNT_REG_ADDR_SPACE_BAR1
3150460c2577SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_ERR_RECOVERY_CNT_REG_ADDR_MASK          0xfffffffcUL
3151460c2577SMichael Chan 	#define ERROR_RECOVERY_QCFG_RESP_ERR_RECOVERY_CNT_REG_ADDR_SFT           2
3152460c2577SMichael Chan 	u8	unused_1[3];
31533293ec23SMichael Chan 	u8	valid;
31543293ec23SMichael Chan };
31553293ec23SMichael Chan 
315631f67c2eSMichael Chan /* hwrm_func_echo_response_input (size:192b/24B) */
315731f67c2eSMichael Chan struct hwrm_func_echo_response_input {
315831f67c2eSMichael Chan 	__le16	req_type;
315931f67c2eSMichael Chan 	__le16	cmpl_ring;
316031f67c2eSMichael Chan 	__le16	seq_id;
316131f67c2eSMichael Chan 	__le16	target_id;
316231f67c2eSMichael Chan 	__le64	resp_addr;
316331f67c2eSMichael Chan 	__le32	event_data1;
316431f67c2eSMichael Chan 	__le32	event_data2;
316531f67c2eSMichael Chan };
316631f67c2eSMichael Chan 
316731f67c2eSMichael Chan /* hwrm_func_echo_response_output (size:128b/16B) */
316831f67c2eSMichael Chan struct hwrm_func_echo_response_output {
316931f67c2eSMichael Chan 	__le16	error_code;
317031f67c2eSMichael Chan 	__le16	req_type;
317131f67c2eSMichael Chan 	__le16	seq_id;
317231f67c2eSMichael Chan 	__le16	resp_len;
317331f67c2eSMichael Chan 	u8	unused_0[7];
317431f67c2eSMichael Chan 	u8	valid;
317531f67c2eSMichael Chan };
317631f67c2eSMichael Chan 
317778eeadb8SMichael Chan /* hwrm_func_ptp_pin_qcfg_input (size:192b/24B) */
317878eeadb8SMichael Chan struct hwrm_func_ptp_pin_qcfg_input {
317978eeadb8SMichael Chan 	__le16	req_type;
318078eeadb8SMichael Chan 	__le16	cmpl_ring;
318178eeadb8SMichael Chan 	__le16	seq_id;
318278eeadb8SMichael Chan 	__le16	target_id;
318378eeadb8SMichael Chan 	__le64	resp_addr;
318478eeadb8SMichael Chan 	u8	unused_0[8];
318578eeadb8SMichael Chan };
318678eeadb8SMichael Chan 
318778eeadb8SMichael Chan /* hwrm_func_ptp_pin_qcfg_output (size:128b/16B) */
318878eeadb8SMichael Chan struct hwrm_func_ptp_pin_qcfg_output {
318978eeadb8SMichael Chan 	__le16	error_code;
319078eeadb8SMichael Chan 	__le16	req_type;
319178eeadb8SMichael Chan 	__le16	seq_id;
319278eeadb8SMichael Chan 	__le16	resp_len;
319378eeadb8SMichael Chan 	u8	num_pins;
319478eeadb8SMichael Chan 	u8	state;
319578eeadb8SMichael Chan 	#define FUNC_PTP_PIN_QCFG_RESP_STATE_PIN0_ENABLED     0x1UL
319678eeadb8SMichael Chan 	#define FUNC_PTP_PIN_QCFG_RESP_STATE_PIN1_ENABLED     0x2UL
319778eeadb8SMichael Chan 	#define FUNC_PTP_PIN_QCFG_RESP_STATE_PIN2_ENABLED     0x4UL
319878eeadb8SMichael Chan 	#define FUNC_PTP_PIN_QCFG_RESP_STATE_PIN3_ENABLED     0x8UL
319978eeadb8SMichael Chan 	u8	pin0_usage;
320078eeadb8SMichael Chan 	#define FUNC_PTP_PIN_QCFG_RESP_PIN0_USAGE_NONE     0x0UL
320178eeadb8SMichael Chan 	#define FUNC_PTP_PIN_QCFG_RESP_PIN0_USAGE_PPS_IN   0x1UL
320278eeadb8SMichael Chan 	#define FUNC_PTP_PIN_QCFG_RESP_PIN0_USAGE_PPS_OUT  0x2UL
320378eeadb8SMichael Chan 	#define FUNC_PTP_PIN_QCFG_RESP_PIN0_USAGE_SYNC_IN  0x3UL
320478eeadb8SMichael Chan 	#define FUNC_PTP_PIN_QCFG_RESP_PIN0_USAGE_SYNC_OUT 0x4UL
320578eeadb8SMichael Chan 	#define FUNC_PTP_PIN_QCFG_RESP_PIN0_USAGE_LAST    FUNC_PTP_PIN_QCFG_RESP_PIN0_USAGE_SYNC_OUT
320678eeadb8SMichael Chan 	u8	pin1_usage;
320778eeadb8SMichael Chan 	#define FUNC_PTP_PIN_QCFG_RESP_PIN1_USAGE_NONE     0x0UL
320878eeadb8SMichael Chan 	#define FUNC_PTP_PIN_QCFG_RESP_PIN1_USAGE_PPS_IN   0x1UL
320978eeadb8SMichael Chan 	#define FUNC_PTP_PIN_QCFG_RESP_PIN1_USAGE_PPS_OUT  0x2UL
321078eeadb8SMichael Chan 	#define FUNC_PTP_PIN_QCFG_RESP_PIN1_USAGE_SYNC_IN  0x3UL
321178eeadb8SMichael Chan 	#define FUNC_PTP_PIN_QCFG_RESP_PIN1_USAGE_SYNC_OUT 0x4UL
321278eeadb8SMichael Chan 	#define FUNC_PTP_PIN_QCFG_RESP_PIN1_USAGE_LAST    FUNC_PTP_PIN_QCFG_RESP_PIN1_USAGE_SYNC_OUT
321378eeadb8SMichael Chan 	u8	pin2_usage;
321478eeadb8SMichael Chan 	#define FUNC_PTP_PIN_QCFG_RESP_PIN2_USAGE_NONE                      0x0UL
321578eeadb8SMichael Chan 	#define FUNC_PTP_PIN_QCFG_RESP_PIN2_USAGE_PPS_IN                    0x1UL
321678eeadb8SMichael Chan 	#define FUNC_PTP_PIN_QCFG_RESP_PIN2_USAGE_PPS_OUT                   0x2UL
321778eeadb8SMichael Chan 	#define FUNC_PTP_PIN_QCFG_RESP_PIN2_USAGE_SYNC_IN                   0x3UL
321878eeadb8SMichael Chan 	#define FUNC_PTP_PIN_QCFG_RESP_PIN2_USAGE_SYNC_OUT                  0x4UL
321984a911dbSMichael Chan 	#define FUNC_PTP_PIN_QCFG_RESP_PIN2_USAGE_SYNCE_PRIMARY_CLOCK_OUT   0x5UL
322084a911dbSMichael Chan 	#define FUNC_PTP_PIN_QCFG_RESP_PIN2_USAGE_SYNCE_SECONDARY_CLOCK_OUT 0x6UL
322184a911dbSMichael Chan 	#define FUNC_PTP_PIN_QCFG_RESP_PIN2_USAGE_LAST                     FUNC_PTP_PIN_QCFG_RESP_PIN2_USAGE_SYNCE_SECONDARY_CLOCK_OUT
322278eeadb8SMichael Chan 	u8	pin3_usage;
322378eeadb8SMichael Chan 	#define FUNC_PTP_PIN_QCFG_RESP_PIN3_USAGE_NONE                      0x0UL
322478eeadb8SMichael Chan 	#define FUNC_PTP_PIN_QCFG_RESP_PIN3_USAGE_PPS_IN                    0x1UL
322578eeadb8SMichael Chan 	#define FUNC_PTP_PIN_QCFG_RESP_PIN3_USAGE_PPS_OUT                   0x2UL
322678eeadb8SMichael Chan 	#define FUNC_PTP_PIN_QCFG_RESP_PIN3_USAGE_SYNC_IN                   0x3UL
322778eeadb8SMichael Chan 	#define FUNC_PTP_PIN_QCFG_RESP_PIN3_USAGE_SYNC_OUT                  0x4UL
322884a911dbSMichael Chan 	#define FUNC_PTP_PIN_QCFG_RESP_PIN3_USAGE_SYNCE_PRIMARY_CLOCK_OUT   0x5UL
322984a911dbSMichael Chan 	#define FUNC_PTP_PIN_QCFG_RESP_PIN3_USAGE_SYNCE_SECONDARY_CLOCK_OUT 0x6UL
323084a911dbSMichael Chan 	#define FUNC_PTP_PIN_QCFG_RESP_PIN3_USAGE_LAST                     FUNC_PTP_PIN_QCFG_RESP_PIN3_USAGE_SYNCE_SECONDARY_CLOCK_OUT
323178eeadb8SMichael Chan 	u8	unused_0;
323278eeadb8SMichael Chan 	u8	valid;
323378eeadb8SMichael Chan };
323478eeadb8SMichael Chan 
323578eeadb8SMichael Chan /* hwrm_func_ptp_pin_cfg_input (size:256b/32B) */
323678eeadb8SMichael Chan struct hwrm_func_ptp_pin_cfg_input {
323778eeadb8SMichael Chan 	__le16	req_type;
323878eeadb8SMichael Chan 	__le16	cmpl_ring;
323978eeadb8SMichael Chan 	__le16	seq_id;
324078eeadb8SMichael Chan 	__le16	target_id;
324178eeadb8SMichael Chan 	__le64	resp_addr;
324278eeadb8SMichael Chan 	__le32	enables;
324378eeadb8SMichael Chan 	#define FUNC_PTP_PIN_CFG_REQ_ENABLES_PIN0_STATE     0x1UL
324478eeadb8SMichael Chan 	#define FUNC_PTP_PIN_CFG_REQ_ENABLES_PIN0_USAGE     0x2UL
324578eeadb8SMichael Chan 	#define FUNC_PTP_PIN_CFG_REQ_ENABLES_PIN1_STATE     0x4UL
324678eeadb8SMichael Chan 	#define FUNC_PTP_PIN_CFG_REQ_ENABLES_PIN1_USAGE     0x8UL
324778eeadb8SMichael Chan 	#define FUNC_PTP_PIN_CFG_REQ_ENABLES_PIN2_STATE     0x10UL
324878eeadb8SMichael Chan 	#define FUNC_PTP_PIN_CFG_REQ_ENABLES_PIN2_USAGE     0x20UL
324978eeadb8SMichael Chan 	#define FUNC_PTP_PIN_CFG_REQ_ENABLES_PIN3_STATE     0x40UL
325078eeadb8SMichael Chan 	#define FUNC_PTP_PIN_CFG_REQ_ENABLES_PIN3_USAGE     0x80UL
325178eeadb8SMichael Chan 	u8	pin0_state;
325278eeadb8SMichael Chan 	#define FUNC_PTP_PIN_CFG_REQ_PIN0_STATE_DISABLED 0x0UL
325378eeadb8SMichael Chan 	#define FUNC_PTP_PIN_CFG_REQ_PIN0_STATE_ENABLED  0x1UL
325478eeadb8SMichael Chan 	#define FUNC_PTP_PIN_CFG_REQ_PIN0_STATE_LAST    FUNC_PTP_PIN_CFG_REQ_PIN0_STATE_ENABLED
325578eeadb8SMichael Chan 	u8	pin0_usage;
325678eeadb8SMichael Chan 	#define FUNC_PTP_PIN_CFG_REQ_PIN0_USAGE_NONE     0x0UL
325778eeadb8SMichael Chan 	#define FUNC_PTP_PIN_CFG_REQ_PIN0_USAGE_PPS_IN   0x1UL
325878eeadb8SMichael Chan 	#define FUNC_PTP_PIN_CFG_REQ_PIN0_USAGE_PPS_OUT  0x2UL
325978eeadb8SMichael Chan 	#define FUNC_PTP_PIN_CFG_REQ_PIN0_USAGE_SYNC_IN  0x3UL
326078eeadb8SMichael Chan 	#define FUNC_PTP_PIN_CFG_REQ_PIN0_USAGE_SYNC_OUT 0x4UL
326178eeadb8SMichael Chan 	#define FUNC_PTP_PIN_CFG_REQ_PIN0_USAGE_LAST    FUNC_PTP_PIN_CFG_REQ_PIN0_USAGE_SYNC_OUT
326278eeadb8SMichael Chan 	u8	pin1_state;
326378eeadb8SMichael Chan 	#define FUNC_PTP_PIN_CFG_REQ_PIN1_STATE_DISABLED 0x0UL
326478eeadb8SMichael Chan 	#define FUNC_PTP_PIN_CFG_REQ_PIN1_STATE_ENABLED  0x1UL
326578eeadb8SMichael Chan 	#define FUNC_PTP_PIN_CFG_REQ_PIN1_STATE_LAST    FUNC_PTP_PIN_CFG_REQ_PIN1_STATE_ENABLED
326678eeadb8SMichael Chan 	u8	pin1_usage;
326778eeadb8SMichael Chan 	#define FUNC_PTP_PIN_CFG_REQ_PIN1_USAGE_NONE     0x0UL
326878eeadb8SMichael Chan 	#define FUNC_PTP_PIN_CFG_REQ_PIN1_USAGE_PPS_IN   0x1UL
326978eeadb8SMichael Chan 	#define FUNC_PTP_PIN_CFG_REQ_PIN1_USAGE_PPS_OUT  0x2UL
327078eeadb8SMichael Chan 	#define FUNC_PTP_PIN_CFG_REQ_PIN1_USAGE_SYNC_IN  0x3UL
327178eeadb8SMichael Chan 	#define FUNC_PTP_PIN_CFG_REQ_PIN1_USAGE_SYNC_OUT 0x4UL
327278eeadb8SMichael Chan 	#define FUNC_PTP_PIN_CFG_REQ_PIN1_USAGE_LAST    FUNC_PTP_PIN_CFG_REQ_PIN1_USAGE_SYNC_OUT
327378eeadb8SMichael Chan 	u8	pin2_state;
327478eeadb8SMichael Chan 	#define FUNC_PTP_PIN_CFG_REQ_PIN2_STATE_DISABLED 0x0UL
327578eeadb8SMichael Chan 	#define FUNC_PTP_PIN_CFG_REQ_PIN2_STATE_ENABLED  0x1UL
327678eeadb8SMichael Chan 	#define FUNC_PTP_PIN_CFG_REQ_PIN2_STATE_LAST    FUNC_PTP_PIN_CFG_REQ_PIN2_STATE_ENABLED
327778eeadb8SMichael Chan 	u8	pin2_usage;
327878eeadb8SMichael Chan 	#define FUNC_PTP_PIN_CFG_REQ_PIN2_USAGE_NONE                      0x0UL
327978eeadb8SMichael Chan 	#define FUNC_PTP_PIN_CFG_REQ_PIN2_USAGE_PPS_IN                    0x1UL
328078eeadb8SMichael Chan 	#define FUNC_PTP_PIN_CFG_REQ_PIN2_USAGE_PPS_OUT                   0x2UL
328178eeadb8SMichael Chan 	#define FUNC_PTP_PIN_CFG_REQ_PIN2_USAGE_SYNC_IN                   0x3UL
328278eeadb8SMichael Chan 	#define FUNC_PTP_PIN_CFG_REQ_PIN2_USAGE_SYNC_OUT                  0x4UL
328384a911dbSMichael Chan 	#define FUNC_PTP_PIN_CFG_REQ_PIN2_USAGE_SYNCE_PRIMARY_CLOCK_OUT   0x5UL
328484a911dbSMichael Chan 	#define FUNC_PTP_PIN_CFG_REQ_PIN2_USAGE_SYNCE_SECONDARY_CLOCK_OUT 0x6UL
328584a911dbSMichael Chan 	#define FUNC_PTP_PIN_CFG_REQ_PIN2_USAGE_LAST                     FUNC_PTP_PIN_CFG_REQ_PIN2_USAGE_SYNCE_SECONDARY_CLOCK_OUT
328678eeadb8SMichael Chan 	u8	pin3_state;
328778eeadb8SMichael Chan 	#define FUNC_PTP_PIN_CFG_REQ_PIN3_STATE_DISABLED 0x0UL
328878eeadb8SMichael Chan 	#define FUNC_PTP_PIN_CFG_REQ_PIN3_STATE_ENABLED  0x1UL
328978eeadb8SMichael Chan 	#define FUNC_PTP_PIN_CFG_REQ_PIN3_STATE_LAST    FUNC_PTP_PIN_CFG_REQ_PIN3_STATE_ENABLED
329078eeadb8SMichael Chan 	u8	pin3_usage;
329178eeadb8SMichael Chan 	#define FUNC_PTP_PIN_CFG_REQ_PIN3_USAGE_NONE                      0x0UL
329278eeadb8SMichael Chan 	#define FUNC_PTP_PIN_CFG_REQ_PIN3_USAGE_PPS_IN                    0x1UL
329378eeadb8SMichael Chan 	#define FUNC_PTP_PIN_CFG_REQ_PIN3_USAGE_PPS_OUT                   0x2UL
329478eeadb8SMichael Chan 	#define FUNC_PTP_PIN_CFG_REQ_PIN3_USAGE_SYNC_IN                   0x3UL
329578eeadb8SMichael Chan 	#define FUNC_PTP_PIN_CFG_REQ_PIN3_USAGE_SYNC_OUT                  0x4UL
329684a911dbSMichael Chan 	#define FUNC_PTP_PIN_CFG_REQ_PIN3_USAGE_SYNCE_PRIMARY_CLOCK_OUT   0x5UL
329784a911dbSMichael Chan 	#define FUNC_PTP_PIN_CFG_REQ_PIN3_USAGE_SYNCE_SECONDARY_CLOCK_OUT 0x6UL
329884a911dbSMichael Chan 	#define FUNC_PTP_PIN_CFG_REQ_PIN3_USAGE_LAST                     FUNC_PTP_PIN_CFG_REQ_PIN3_USAGE_SYNCE_SECONDARY_CLOCK_OUT
329978eeadb8SMichael Chan 	u8	unused_0[4];
330078eeadb8SMichael Chan };
330178eeadb8SMichael Chan 
330278eeadb8SMichael Chan /* hwrm_func_ptp_pin_cfg_output (size:128b/16B) */
330378eeadb8SMichael Chan struct hwrm_func_ptp_pin_cfg_output {
330478eeadb8SMichael Chan 	__le16	error_code;
330578eeadb8SMichael Chan 	__le16	req_type;
330678eeadb8SMichael Chan 	__le16	seq_id;
330778eeadb8SMichael Chan 	__le16	resp_len;
330878eeadb8SMichael Chan 	u8	unused_0[7];
330978eeadb8SMichael Chan 	u8	valid;
331078eeadb8SMichael Chan };
331178eeadb8SMichael Chan 
33122895c153SMichael Chan /* hwrm_func_ptp_cfg_input (size:384b/48B) */
331378eeadb8SMichael Chan struct hwrm_func_ptp_cfg_input {
331478eeadb8SMichael Chan 	__le16	req_type;
331578eeadb8SMichael Chan 	__le16	cmpl_ring;
331678eeadb8SMichael Chan 	__le16	seq_id;
331778eeadb8SMichael Chan 	__le16	target_id;
331878eeadb8SMichael Chan 	__le64	resp_addr;
331978eeadb8SMichael Chan 	__le16	enables;
332078eeadb8SMichael Chan 	#define FUNC_PTP_CFG_REQ_ENABLES_PTP_PPS_EVENT               0x1UL
332178eeadb8SMichael Chan 	#define FUNC_PTP_CFG_REQ_ENABLES_PTP_FREQ_ADJ_DLL_SOURCE     0x2UL
332278eeadb8SMichael Chan 	#define FUNC_PTP_CFG_REQ_ENABLES_PTP_FREQ_ADJ_DLL_PHASE      0x4UL
332378eeadb8SMichael Chan 	#define FUNC_PTP_CFG_REQ_ENABLES_PTP_FREQ_ADJ_EXT_PERIOD     0x8UL
332478eeadb8SMichael Chan 	#define FUNC_PTP_CFG_REQ_ENABLES_PTP_FREQ_ADJ_EXT_UP         0x10UL
332578eeadb8SMichael Chan 	#define FUNC_PTP_CFG_REQ_ENABLES_PTP_FREQ_ADJ_EXT_PHASE      0x20UL
33262895c153SMichael Chan 	#define FUNC_PTP_CFG_REQ_ENABLES_PTP_SET_TIME                0x40UL
332778eeadb8SMichael Chan 	u8	ptp_pps_event;
332878eeadb8SMichael Chan 	#define FUNC_PTP_CFG_REQ_PTP_PPS_EVENT_INTERNAL     0x1UL
332978eeadb8SMichael Chan 	#define FUNC_PTP_CFG_REQ_PTP_PPS_EVENT_EXTERNAL     0x2UL
333078eeadb8SMichael Chan 	u8	ptp_freq_adj_dll_source;
333178eeadb8SMichael Chan 	#define FUNC_PTP_CFG_REQ_PTP_FREQ_ADJ_DLL_SOURCE_NONE    0x0UL
333278eeadb8SMichael Chan 	#define FUNC_PTP_CFG_REQ_PTP_FREQ_ADJ_DLL_SOURCE_TSIO_0  0x1UL
333378eeadb8SMichael Chan 	#define FUNC_PTP_CFG_REQ_PTP_FREQ_ADJ_DLL_SOURCE_TSIO_1  0x2UL
333478eeadb8SMichael Chan 	#define FUNC_PTP_CFG_REQ_PTP_FREQ_ADJ_DLL_SOURCE_TSIO_2  0x3UL
333578eeadb8SMichael Chan 	#define FUNC_PTP_CFG_REQ_PTP_FREQ_ADJ_DLL_SOURCE_TSIO_3  0x4UL
333678eeadb8SMichael Chan 	#define FUNC_PTP_CFG_REQ_PTP_FREQ_ADJ_DLL_SOURCE_PORT_0  0x5UL
333778eeadb8SMichael Chan 	#define FUNC_PTP_CFG_REQ_PTP_FREQ_ADJ_DLL_SOURCE_PORT_1  0x6UL
333878eeadb8SMichael Chan 	#define FUNC_PTP_CFG_REQ_PTP_FREQ_ADJ_DLL_SOURCE_PORT_2  0x7UL
333978eeadb8SMichael Chan 	#define FUNC_PTP_CFG_REQ_PTP_FREQ_ADJ_DLL_SOURCE_PORT_3  0x8UL
334078eeadb8SMichael Chan 	#define FUNC_PTP_CFG_REQ_PTP_FREQ_ADJ_DLL_SOURCE_INVALID 0xffUL
334178eeadb8SMichael Chan 	#define FUNC_PTP_CFG_REQ_PTP_FREQ_ADJ_DLL_SOURCE_LAST   FUNC_PTP_CFG_REQ_PTP_FREQ_ADJ_DLL_SOURCE_INVALID
334278eeadb8SMichael Chan 	u8	ptp_freq_adj_dll_phase;
334378eeadb8SMichael Chan 	#define FUNC_PTP_CFG_REQ_PTP_FREQ_ADJ_DLL_PHASE_NONE 0x0UL
334478eeadb8SMichael Chan 	#define FUNC_PTP_CFG_REQ_PTP_FREQ_ADJ_DLL_PHASE_4K   0x1UL
334578eeadb8SMichael Chan 	#define FUNC_PTP_CFG_REQ_PTP_FREQ_ADJ_DLL_PHASE_8K   0x2UL
334678eeadb8SMichael Chan 	#define FUNC_PTP_CFG_REQ_PTP_FREQ_ADJ_DLL_PHASE_10M  0x3UL
334778eeadb8SMichael Chan 	#define FUNC_PTP_CFG_REQ_PTP_FREQ_ADJ_DLL_PHASE_LAST FUNC_PTP_CFG_REQ_PTP_FREQ_ADJ_DLL_PHASE_10M
334878eeadb8SMichael Chan 	u8	unused_0[3];
334978eeadb8SMichael Chan 	__le32	ptp_freq_adj_ext_period;
335078eeadb8SMichael Chan 	__le32	ptp_freq_adj_ext_up;
335178eeadb8SMichael Chan 	__le32	ptp_freq_adj_ext_phase_lower;
335278eeadb8SMichael Chan 	__le32	ptp_freq_adj_ext_phase_upper;
33532895c153SMichael Chan 	__le64	ptp_set_time;
335478eeadb8SMichael Chan };
335578eeadb8SMichael Chan 
335678eeadb8SMichael Chan /* hwrm_func_ptp_cfg_output (size:128b/16B) */
335778eeadb8SMichael Chan struct hwrm_func_ptp_cfg_output {
335878eeadb8SMichael Chan 	__le16	error_code;
335978eeadb8SMichael Chan 	__le16	req_type;
336078eeadb8SMichael Chan 	__le16	seq_id;
336178eeadb8SMichael Chan 	__le16	resp_len;
336278eeadb8SMichael Chan 	u8	unused_0[7];
336378eeadb8SMichael Chan 	u8	valid;
336478eeadb8SMichael Chan };
336578eeadb8SMichael Chan 
336678eeadb8SMichael Chan /* hwrm_func_ptp_ts_query_input (size:192b/24B) */
336778eeadb8SMichael Chan struct hwrm_func_ptp_ts_query_input {
336878eeadb8SMichael Chan 	__le16	req_type;
336978eeadb8SMichael Chan 	__le16	cmpl_ring;
337078eeadb8SMichael Chan 	__le16	seq_id;
337178eeadb8SMichael Chan 	__le16	target_id;
337278eeadb8SMichael Chan 	__le64	resp_addr;
337378eeadb8SMichael Chan 	__le32	flags;
337478eeadb8SMichael Chan 	#define FUNC_PTP_TS_QUERY_REQ_FLAGS_PPS_TIME     0x1UL
337578eeadb8SMichael Chan 	#define FUNC_PTP_TS_QUERY_REQ_FLAGS_PTM_TIME     0x2UL
337678eeadb8SMichael Chan 	u8	unused_0[4];
337778eeadb8SMichael Chan };
337878eeadb8SMichael Chan 
337978eeadb8SMichael Chan /* hwrm_func_ptp_ts_query_output (size:320b/40B) */
338078eeadb8SMichael Chan struct hwrm_func_ptp_ts_query_output {
338178eeadb8SMichael Chan 	__le16	error_code;
338278eeadb8SMichael Chan 	__le16	req_type;
338378eeadb8SMichael Chan 	__le16	seq_id;
338478eeadb8SMichael Chan 	__le16	resp_len;
338578eeadb8SMichael Chan 	__le64	pps_event_ts;
338684a911dbSMichael Chan 	__le64	ptm_local_ts;
338784a911dbSMichael Chan 	__le64	ptm_system_ts;
338884a911dbSMichael Chan 	__le32	ptm_link_delay;
338978eeadb8SMichael Chan 	u8	unused_0[3];
339078eeadb8SMichael Chan 	u8	valid;
339178eeadb8SMichael Chan };
339278eeadb8SMichael Chan 
33932895c153SMichael Chan /* hwrm_func_ptp_ext_cfg_input (size:256b/32B) */
33942895c153SMichael Chan struct hwrm_func_ptp_ext_cfg_input {
33952895c153SMichael Chan 	__le16	req_type;
33962895c153SMichael Chan 	__le16	cmpl_ring;
33972895c153SMichael Chan 	__le16	seq_id;
33982895c153SMichael Chan 	__le16	target_id;
33992895c153SMichael Chan 	__le64	resp_addr;
34002895c153SMichael Chan 	__le16	enables;
34012895c153SMichael Chan 	#define FUNC_PTP_EXT_CFG_REQ_ENABLES_PHC_MASTER_FID     0x1UL
34022895c153SMichael Chan 	#define FUNC_PTP_EXT_CFG_REQ_ENABLES_PHC_SEC_FID        0x2UL
34032895c153SMichael Chan 	#define FUNC_PTP_EXT_CFG_REQ_ENABLES_PHC_SEC_MODE       0x4UL
34042895c153SMichael Chan 	#define FUNC_PTP_EXT_CFG_REQ_ENABLES_FAILOVER_TIMER     0x8UL
34052895c153SMichael Chan 	__le16	phc_master_fid;
34062895c153SMichael Chan 	__le16	phc_sec_fid;
34072895c153SMichael Chan 	u8	phc_sec_mode;
34082895c153SMichael Chan 	#define FUNC_PTP_EXT_CFG_REQ_PHC_SEC_MODE_SWITCH  0x0UL
34092895c153SMichael Chan 	#define FUNC_PTP_EXT_CFG_REQ_PHC_SEC_MODE_ALL     0x1UL
34102895c153SMichael Chan 	#define FUNC_PTP_EXT_CFG_REQ_PHC_SEC_MODE_PF_ONLY 0x2UL
34112895c153SMichael Chan 	#define FUNC_PTP_EXT_CFG_REQ_PHC_SEC_MODE_LAST   FUNC_PTP_EXT_CFG_REQ_PHC_SEC_MODE_PF_ONLY
34122895c153SMichael Chan 	u8	unused_0;
34132895c153SMichael Chan 	__le32	failover_timer;
34142895c153SMichael Chan 	u8	unused_1[4];
34152895c153SMichael Chan };
34162895c153SMichael Chan 
34172895c153SMichael Chan /* hwrm_func_ptp_ext_cfg_output (size:128b/16B) */
34182895c153SMichael Chan struct hwrm_func_ptp_ext_cfg_output {
34192895c153SMichael Chan 	__le16	error_code;
34202895c153SMichael Chan 	__le16	req_type;
34212895c153SMichael Chan 	__le16	seq_id;
34222895c153SMichael Chan 	__le16	resp_len;
34232895c153SMichael Chan 	u8	unused_0[7];
34242895c153SMichael Chan 	u8	valid;
34252895c153SMichael Chan };
34262895c153SMichael Chan 
34272895c153SMichael Chan /* hwrm_func_ptp_ext_qcfg_input (size:192b/24B) */
34282895c153SMichael Chan struct hwrm_func_ptp_ext_qcfg_input {
34292895c153SMichael Chan 	__le16	req_type;
34302895c153SMichael Chan 	__le16	cmpl_ring;
34312895c153SMichael Chan 	__le16	seq_id;
34322895c153SMichael Chan 	__le16	target_id;
34332895c153SMichael Chan 	__le64	resp_addr;
34342895c153SMichael Chan 	u8	unused_0[8];
34352895c153SMichael Chan };
34362895c153SMichael Chan 
34372895c153SMichael Chan /* hwrm_func_ptp_ext_qcfg_output (size:256b/32B) */
34382895c153SMichael Chan struct hwrm_func_ptp_ext_qcfg_output {
34392895c153SMichael Chan 	__le16	error_code;
34402895c153SMichael Chan 	__le16	req_type;
34412895c153SMichael Chan 	__le16	seq_id;
34422895c153SMichael Chan 	__le16	resp_len;
34432895c153SMichael Chan 	__le16	phc_master_fid;
34442895c153SMichael Chan 	__le16	phc_sec_fid;
34452895c153SMichael Chan 	__le16	phc_active_fid0;
34462895c153SMichael Chan 	__le16	phc_active_fid1;
34472895c153SMichael Chan 	__le32	last_failover_event;
34482895c153SMichael Chan 	__le16	from_fid;
34492895c153SMichael Chan 	__le16	to_fid;
34502895c153SMichael Chan 	u8	unused_0[7];
34512895c153SMichael Chan 	u8	valid;
34522895c153SMichael Chan };
34532895c153SMichael Chan 
34542895c153SMichael Chan /* hwrm_func_backing_store_cfg_v2_input (size:448b/56B) */
34552895c153SMichael Chan struct hwrm_func_backing_store_cfg_v2_input {
34562895c153SMichael Chan 	__le16	req_type;
34572895c153SMichael Chan 	__le16	cmpl_ring;
34582895c153SMichael Chan 	__le16	seq_id;
34592895c153SMichael Chan 	__le16	target_id;
34602895c153SMichael Chan 	__le64	resp_addr;
34612895c153SMichael Chan 	__le16	type;
34622895c153SMichael Chan 	#define FUNC_BACKING_STORE_CFG_V2_REQ_TYPE_QP            0x0UL
34632895c153SMichael Chan 	#define FUNC_BACKING_STORE_CFG_V2_REQ_TYPE_SRQ           0x1UL
34642895c153SMichael Chan 	#define FUNC_BACKING_STORE_CFG_V2_REQ_TYPE_CQ            0x2UL
34652895c153SMichael Chan 	#define FUNC_BACKING_STORE_CFG_V2_REQ_TYPE_VNIC          0x3UL
34662895c153SMichael Chan 	#define FUNC_BACKING_STORE_CFG_V2_REQ_TYPE_STAT          0x4UL
34672895c153SMichael Chan 	#define FUNC_BACKING_STORE_CFG_V2_REQ_TYPE_SP_TQM_RING   0x5UL
34682895c153SMichael Chan 	#define FUNC_BACKING_STORE_CFG_V2_REQ_TYPE_FP_TQM_RING   0x6UL
34692895c153SMichael Chan 	#define FUNC_BACKING_STORE_CFG_V2_REQ_TYPE_MRAV          0xeUL
34702895c153SMichael Chan 	#define FUNC_BACKING_STORE_CFG_V2_REQ_TYPE_TIM           0xfUL
34712895c153SMichael Chan 	#define FUNC_BACKING_STORE_CFG_V2_REQ_TYPE_TKC           0x13UL
34722895c153SMichael Chan 	#define FUNC_BACKING_STORE_CFG_V2_REQ_TYPE_RKC           0x14UL
34732895c153SMichael Chan 	#define FUNC_BACKING_STORE_CFG_V2_REQ_TYPE_MP_TQM_RING   0x15UL
3474ad04cc05SMichael Chan 	#define FUNC_BACKING_STORE_CFG_V2_REQ_TYPE_SQ_DB_SHADOW  0x16UL
3475ad04cc05SMichael Chan 	#define FUNC_BACKING_STORE_CFG_V2_REQ_TYPE_RQ_DB_SHADOW  0x17UL
3476ad04cc05SMichael Chan 	#define FUNC_BACKING_STORE_CFG_V2_REQ_TYPE_SRQ_DB_SHADOW 0x18UL
3477ad04cc05SMichael Chan 	#define FUNC_BACKING_STORE_CFG_V2_REQ_TYPE_CQ_DB_SHADOW  0x19UL
3478ad04cc05SMichael Chan 	#define FUNC_BACKING_STORE_CFG_V2_REQ_TYPE_QUIC_TKC      0x1aUL
3479ad04cc05SMichael Chan 	#define FUNC_BACKING_STORE_CFG_V2_REQ_TYPE_QUIC_RKC      0x1bUL
34802895c153SMichael Chan 	#define FUNC_BACKING_STORE_CFG_V2_REQ_TYPE_INVALID       0xffffUL
34812895c153SMichael Chan 	#define FUNC_BACKING_STORE_CFG_V2_REQ_TYPE_LAST         FUNC_BACKING_STORE_CFG_V2_REQ_TYPE_INVALID
34822895c153SMichael Chan 	__le16	instance;
34832895c153SMichael Chan 	__le32	flags;
34842895c153SMichael Chan 	#define FUNC_BACKING_STORE_CFG_V2_REQ_FLAGS_PREBOOT_MODE        0x1UL
348584a911dbSMichael Chan 	#define FUNC_BACKING_STORE_CFG_V2_REQ_FLAGS_BS_CFG_ALL_DONE     0x2UL
348684a911dbSMichael Chan 	#define FUNC_BACKING_STORE_CFG_V2_REQ_FLAGS_BS_EXTEND           0x4UL
34872895c153SMichael Chan 	__le64	page_dir;
34882895c153SMichael Chan 	__le32	num_entries;
34892895c153SMichael Chan 	__le16	entry_size;
34902895c153SMichael Chan 	u8	page_size_pbl_level;
34912895c153SMichael Chan 	#define FUNC_BACKING_STORE_CFG_V2_REQ_PBL_LEVEL_MASK  0xfUL
34922895c153SMichael Chan 	#define FUNC_BACKING_STORE_CFG_V2_REQ_PBL_LEVEL_SFT   0
34932895c153SMichael Chan 	#define FUNC_BACKING_STORE_CFG_V2_REQ_PBL_LEVEL_LVL_0   0x0UL
34942895c153SMichael Chan 	#define FUNC_BACKING_STORE_CFG_V2_REQ_PBL_LEVEL_LVL_1   0x1UL
34952895c153SMichael Chan 	#define FUNC_BACKING_STORE_CFG_V2_REQ_PBL_LEVEL_LVL_2   0x2UL
34962895c153SMichael Chan 	#define FUNC_BACKING_STORE_CFG_V2_REQ_PBL_LEVEL_LAST   FUNC_BACKING_STORE_CFG_V2_REQ_PBL_LEVEL_LVL_2
34972895c153SMichael Chan 	#define FUNC_BACKING_STORE_CFG_V2_REQ_PAGE_SIZE_MASK  0xf0UL
34982895c153SMichael Chan 	#define FUNC_BACKING_STORE_CFG_V2_REQ_PAGE_SIZE_SFT   4
34992895c153SMichael Chan 	#define FUNC_BACKING_STORE_CFG_V2_REQ_PAGE_SIZE_PG_4K   (0x0UL << 4)
35002895c153SMichael Chan 	#define FUNC_BACKING_STORE_CFG_V2_REQ_PAGE_SIZE_PG_8K   (0x1UL << 4)
35012895c153SMichael Chan 	#define FUNC_BACKING_STORE_CFG_V2_REQ_PAGE_SIZE_PG_64K  (0x2UL << 4)
35022895c153SMichael Chan 	#define FUNC_BACKING_STORE_CFG_V2_REQ_PAGE_SIZE_PG_2M   (0x3UL << 4)
35032895c153SMichael Chan 	#define FUNC_BACKING_STORE_CFG_V2_REQ_PAGE_SIZE_PG_8M   (0x4UL << 4)
35042895c153SMichael Chan 	#define FUNC_BACKING_STORE_CFG_V2_REQ_PAGE_SIZE_PG_1G   (0x5UL << 4)
35052895c153SMichael Chan 	#define FUNC_BACKING_STORE_CFG_V2_REQ_PAGE_SIZE_LAST   FUNC_BACKING_STORE_CFG_V2_REQ_PAGE_SIZE_PG_1G
35062895c153SMichael Chan 	u8	subtype_valid_cnt;
35072895c153SMichael Chan 	__le32	split_entry_0;
35082895c153SMichael Chan 	__le32	split_entry_1;
35092895c153SMichael Chan 	__le32	split_entry_2;
35102895c153SMichael Chan 	__le32	split_entry_3;
35112895c153SMichael Chan };
35122895c153SMichael Chan 
35132895c153SMichael Chan /* hwrm_func_backing_store_cfg_v2_output (size:128b/16B) */
35142895c153SMichael Chan struct hwrm_func_backing_store_cfg_v2_output {
35152895c153SMichael Chan 	__le16	error_code;
35162895c153SMichael Chan 	__le16	req_type;
35172895c153SMichael Chan 	__le16	seq_id;
35182895c153SMichael Chan 	__le16	resp_len;
35192895c153SMichael Chan 	u8	rsvd0[7];
35202895c153SMichael Chan 	u8	valid;
35212895c153SMichael Chan };
35222895c153SMichael Chan 
35232895c153SMichael Chan /* hwrm_func_backing_store_qcfg_v2_input (size:192b/24B) */
35242895c153SMichael Chan struct hwrm_func_backing_store_qcfg_v2_input {
35252895c153SMichael Chan 	__le16	req_type;
35262895c153SMichael Chan 	__le16	cmpl_ring;
35272895c153SMichael Chan 	__le16	seq_id;
35282895c153SMichael Chan 	__le16	target_id;
35292895c153SMichael Chan 	__le64	resp_addr;
35302895c153SMichael Chan 	__le16	type;
35312895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_REQ_TYPE_QP            0x0UL
35322895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_REQ_TYPE_SRQ           0x1UL
35332895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_REQ_TYPE_CQ            0x2UL
35342895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_REQ_TYPE_VNIC          0x3UL
35352895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_REQ_TYPE_STAT          0x4UL
35362895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_REQ_TYPE_SP_TQM_RING   0x5UL
35372895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_REQ_TYPE_FP_TQM_RING   0x6UL
35382895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_REQ_TYPE_MRAV          0xeUL
35392895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_REQ_TYPE_TIM           0xfUL
35402895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_REQ_TYPE_TKC           0x13UL
35412895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_REQ_TYPE_RKC           0x14UL
35422895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_REQ_TYPE_MP_TQM_RING   0x15UL
3543ad04cc05SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_REQ_TYPE_SQ_DB_SHADOW  0x16UL
3544ad04cc05SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_REQ_TYPE_RQ_DB_SHADOW  0x17UL
3545ad04cc05SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_REQ_TYPE_SRQ_DB_SHADOW 0x18UL
3546ad04cc05SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_REQ_TYPE_CQ_DB_SHADOW  0x19UL
3547ad04cc05SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_REQ_TYPE_QUIC_TKC      0x1aUL
3548ad04cc05SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_REQ_TYPE_QUIC_RKC      0x1bUL
35492895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_REQ_TYPE_INVALID       0xffffUL
35502895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_REQ_TYPE_LAST         FUNC_BACKING_STORE_QCFG_V2_REQ_TYPE_INVALID
35512895c153SMichael Chan 	__le16	instance;
35522895c153SMichael Chan 	u8	rsvd[4];
35532895c153SMichael Chan };
35542895c153SMichael Chan 
35552895c153SMichael Chan /* hwrm_func_backing_store_qcfg_v2_output (size:448b/56B) */
35562895c153SMichael Chan struct hwrm_func_backing_store_qcfg_v2_output {
35572895c153SMichael Chan 	__le16	error_code;
35582895c153SMichael Chan 	__le16	req_type;
35592895c153SMichael Chan 	__le16	seq_id;
35602895c153SMichael Chan 	__le16	resp_len;
35612895c153SMichael Chan 	__le16	type;
35622895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_RESP_TYPE_QP          0x0UL
35632895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_RESP_TYPE_SRQ         0x1UL
35642895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_RESP_TYPE_CQ          0x2UL
35652895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_RESP_TYPE_VNIC        0x3UL
35662895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_RESP_TYPE_STAT        0x4UL
35672895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_RESP_TYPE_SP_TQM_RING 0x5UL
35682895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_RESP_TYPE_FP_TQM_RING 0x6UL
35692895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_RESP_TYPE_MRAV        0xeUL
35702895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_RESP_TYPE_TIM         0xfUL
35712895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_RESP_TYPE_TKC         0x13UL
35722895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_RESP_TYPE_RKC         0x14UL
35732895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_RESP_TYPE_MP_TQM_RING 0x15UL
3574ad04cc05SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_RESP_TYPE_QUIC_TKC    0x1aUL
3575ad04cc05SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_RESP_TYPE_QUIC_RKC    0x1bUL
35762895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_RESP_TYPE_INVALID     0xffffUL
35772895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_RESP_TYPE_LAST       FUNC_BACKING_STORE_QCFG_V2_RESP_TYPE_INVALID
35782895c153SMichael Chan 	__le16	instance;
35792895c153SMichael Chan 	__le32	flags;
35802895c153SMichael Chan 	__le64	page_dir;
35812895c153SMichael Chan 	__le32	num_entries;
35822895c153SMichael Chan 	u8	page_size_pbl_level;
35832895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_RESP_PBL_LEVEL_MASK  0xfUL
35842895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_RESP_PBL_LEVEL_SFT   0
35852895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_RESP_PBL_LEVEL_LVL_0   0x0UL
35862895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_RESP_PBL_LEVEL_LVL_1   0x1UL
35872895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_RESP_PBL_LEVEL_LVL_2   0x2UL
35882895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_RESP_PBL_LEVEL_LAST   FUNC_BACKING_STORE_QCFG_V2_RESP_PBL_LEVEL_LVL_2
35892895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_RESP_PAGE_SIZE_MASK  0xf0UL
35902895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_RESP_PAGE_SIZE_SFT   4
35912895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_RESP_PAGE_SIZE_PG_4K   (0x0UL << 4)
35922895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_RESP_PAGE_SIZE_PG_8K   (0x1UL << 4)
35932895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_RESP_PAGE_SIZE_PG_64K  (0x2UL << 4)
35942895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_RESP_PAGE_SIZE_PG_2M   (0x3UL << 4)
35952895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_RESP_PAGE_SIZE_PG_8M   (0x4UL << 4)
35962895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_RESP_PAGE_SIZE_PG_1G   (0x5UL << 4)
35972895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCFG_V2_RESP_PAGE_SIZE_LAST   FUNC_BACKING_STORE_QCFG_V2_RESP_PAGE_SIZE_PG_1G
35982895c153SMichael Chan 	u8	subtype_valid_cnt;
35992895c153SMichael Chan 	u8	rsvd[2];
36002895c153SMichael Chan 	__le32	split_entry_0;
36012895c153SMichael Chan 	__le32	split_entry_1;
36022895c153SMichael Chan 	__le32	split_entry_2;
36032895c153SMichael Chan 	__le32	split_entry_3;
36042895c153SMichael Chan 	u8	rsvd2[7];
36052895c153SMichael Chan 	u8	valid;
36062895c153SMichael Chan };
36072895c153SMichael Chan 
36082895c153SMichael Chan /* qpc_split_entries (size:128b/16B) */
36092895c153SMichael Chan struct qpc_split_entries {
36102895c153SMichael Chan 	__le32	qp_num_l2_entries;
36112895c153SMichael Chan 	__le32	qp_num_qp1_entries;
36122895c153SMichael Chan 	__le32	rsvd[2];
36132895c153SMichael Chan };
36142895c153SMichael Chan 
36152895c153SMichael Chan /* srq_split_entries (size:128b/16B) */
36162895c153SMichael Chan struct srq_split_entries {
36172895c153SMichael Chan 	__le32	srq_num_l2_entries;
36182895c153SMichael Chan 	__le32	rsvd;
36192895c153SMichael Chan 	__le32	rsvd2[2];
36202895c153SMichael Chan };
36212895c153SMichael Chan 
36222895c153SMichael Chan /* cq_split_entries (size:128b/16B) */
36232895c153SMichael Chan struct cq_split_entries {
36242895c153SMichael Chan 	__le32	cq_num_l2_entries;
36252895c153SMichael Chan 	__le32	rsvd;
36262895c153SMichael Chan 	__le32	rsvd2[2];
36272895c153SMichael Chan };
36282895c153SMichael Chan 
36292895c153SMichael Chan /* vnic_split_entries (size:128b/16B) */
36302895c153SMichael Chan struct vnic_split_entries {
36312895c153SMichael Chan 	__le32	vnic_num_vnic_entries;
36322895c153SMichael Chan 	__le32	rsvd;
36332895c153SMichael Chan 	__le32	rsvd2[2];
36342895c153SMichael Chan };
36352895c153SMichael Chan 
36362895c153SMichael Chan /* mrav_split_entries (size:128b/16B) */
36372895c153SMichael Chan struct mrav_split_entries {
36382895c153SMichael Chan 	__le32	mrav_num_av_entries;
36392895c153SMichael Chan 	__le32	rsvd;
36402895c153SMichael Chan 	__le32	rsvd2[2];
36412895c153SMichael Chan };
36422895c153SMichael Chan 
36432895c153SMichael Chan /* hwrm_func_backing_store_qcaps_v2_input (size:192b/24B) */
36442895c153SMichael Chan struct hwrm_func_backing_store_qcaps_v2_input {
36452895c153SMichael Chan 	__le16	req_type;
36462895c153SMichael Chan 	__le16	cmpl_ring;
36472895c153SMichael Chan 	__le16	seq_id;
36482895c153SMichael Chan 	__le16	target_id;
36492895c153SMichael Chan 	__le64	resp_addr;
36502895c153SMichael Chan 	__le16	type;
36512895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_V2_REQ_TYPE_QP            0x0UL
36522895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_V2_REQ_TYPE_SRQ           0x1UL
36532895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_V2_REQ_TYPE_CQ            0x2UL
36542895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_V2_REQ_TYPE_VNIC          0x3UL
36552895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_V2_REQ_TYPE_STAT          0x4UL
36562895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_V2_REQ_TYPE_SP_TQM_RING   0x5UL
36572895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_V2_REQ_TYPE_FP_TQM_RING   0x6UL
36582895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_V2_REQ_TYPE_MRAV          0xeUL
36592895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_V2_REQ_TYPE_TIM           0xfUL
36602895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_V2_REQ_TYPE_TKC           0x13UL
36612895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_V2_REQ_TYPE_RKC           0x14UL
36622895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_V2_REQ_TYPE_MP_TQM_RING   0x15UL
3663ad04cc05SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_V2_REQ_TYPE_SQ_DB_SHADOW  0x16UL
3664ad04cc05SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_V2_REQ_TYPE_RQ_DB_SHADOW  0x17UL
3665ad04cc05SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_V2_REQ_TYPE_SRQ_DB_SHADOW 0x18UL
3666ad04cc05SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_V2_REQ_TYPE_CQ_DB_SHADOW  0x19UL
3667ad04cc05SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_V2_REQ_TYPE_QUIC_TKC      0x1aUL
3668ad04cc05SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_V2_REQ_TYPE_QUIC_RKC      0x1bUL
36692895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_V2_REQ_TYPE_INVALID       0xffffUL
36702895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_V2_REQ_TYPE_LAST         FUNC_BACKING_STORE_QCAPS_V2_REQ_TYPE_INVALID
36712895c153SMichael Chan 	u8	rsvd[6];
36722895c153SMichael Chan };
36732895c153SMichael Chan 
36742895c153SMichael Chan /* hwrm_func_backing_store_qcaps_v2_output (size:448b/56B) */
36752895c153SMichael Chan struct hwrm_func_backing_store_qcaps_v2_output {
36762895c153SMichael Chan 	__le16	error_code;
36772895c153SMichael Chan 	__le16	req_type;
36782895c153SMichael Chan 	__le16	seq_id;
36792895c153SMichael Chan 	__le16	resp_len;
36802895c153SMichael Chan 	__le16	type;
36812895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_V2_RESP_TYPE_QP            0x0UL
36822895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_V2_RESP_TYPE_SRQ           0x1UL
36832895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_V2_RESP_TYPE_CQ            0x2UL
36842895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_V2_RESP_TYPE_VNIC          0x3UL
36852895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_V2_RESP_TYPE_STAT          0x4UL
36862895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_V2_RESP_TYPE_SP_TQM_RING   0x5UL
36872895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_V2_RESP_TYPE_FP_TQM_RING   0x6UL
36882895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_V2_RESP_TYPE_MRAV          0xeUL
36892895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_V2_RESP_TYPE_TIM           0xfUL
36902895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_V2_RESP_TYPE_TKC           0x13UL
36912895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_V2_RESP_TYPE_RKC           0x14UL
36922895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_V2_RESP_TYPE_MP_TQM_RING   0x15UL
3693ad04cc05SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_V2_RESP_TYPE_SQ_DB_SHADOW  0x16UL
3694ad04cc05SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_V2_RESP_TYPE_RQ_DB_SHADOW  0x17UL
3695ad04cc05SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_V2_RESP_TYPE_SRQ_DB_SHADOW 0x18UL
3696ad04cc05SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_V2_RESP_TYPE_CQ_DB_SHADOW  0x19UL
3697ad04cc05SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_V2_RESP_TYPE_QUIC_TKC      0x1aUL
3698ad04cc05SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_V2_RESP_TYPE_QUIC_RKC      0x1bUL
36992895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_V2_RESP_TYPE_INVALID       0xffffUL
37002895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_V2_RESP_TYPE_LAST         FUNC_BACKING_STORE_QCAPS_V2_RESP_TYPE_INVALID
37012895c153SMichael Chan 	__le16	entry_size;
37022895c153SMichael Chan 	__le32	flags;
37032895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_V2_RESP_FLAGS_ENABLE_CTX_KIND_INIT      0x1UL
37042895c153SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_V2_RESP_FLAGS_TYPE_VALID                0x2UL
3705ad04cc05SMichael Chan 	#define FUNC_BACKING_STORE_QCAPS_V2_RESP_FLAGS_DRIVER_MANAGED_MEMORY     0x4UL
37062895c153SMichael Chan 	__le32	instance_bit_map;
37072895c153SMichael Chan 	u8	ctx_init_value;
37082895c153SMichael Chan 	u8	ctx_init_offset;
37092895c153SMichael Chan 	u8	entry_multiple;
37102895c153SMichael Chan 	u8	rsvd;
37112895c153SMichael Chan 	__le32	max_num_entries;
37122895c153SMichael Chan 	__le32	min_num_entries;
37132895c153SMichael Chan 	__le16	next_valid_type;
37142895c153SMichael Chan 	u8	subtype_valid_cnt;
37152895c153SMichael Chan 	u8	rsvd2;
37162895c153SMichael Chan 	__le32	split_entry_0;
37172895c153SMichael Chan 	__le32	split_entry_1;
37182895c153SMichael Chan 	__le32	split_entry_2;
37192895c153SMichael Chan 	__le32	split_entry_3;
37202895c153SMichael Chan 	u8	rsvd3[3];
37212895c153SMichael Chan 	u8	valid;
37222895c153SMichael Chan };
37232895c153SMichael Chan 
3724cf1694f0SChandramohan Akula /* hwrm_func_dbr_pacing_qcfg_input (size:128b/16B) */
3725cf1694f0SChandramohan Akula struct hwrm_func_dbr_pacing_qcfg_input {
3726cf1694f0SChandramohan Akula 	__le16  req_type;
3727cf1694f0SChandramohan Akula 	__le16  cmpl_ring;
3728cf1694f0SChandramohan Akula 	__le16  seq_id;
3729cf1694f0SChandramohan Akula 	__le16  target_id;
3730cf1694f0SChandramohan Akula 	__le64  resp_addr;
3731cf1694f0SChandramohan Akula };
3732cf1694f0SChandramohan Akula 
3733cf1694f0SChandramohan Akula /* hwrm_func_dbr_pacing_qcfg_output (size:512b/64B) */
3734cf1694f0SChandramohan Akula struct hwrm_func_dbr_pacing_qcfg_output {
3735cf1694f0SChandramohan Akula 	__le16  error_code;
3736cf1694f0SChandramohan Akula 	__le16  req_type;
3737cf1694f0SChandramohan Akula 	__le16  seq_id;
3738cf1694f0SChandramohan Akula 	__le16  resp_len;
3739cf1694f0SChandramohan Akula 	u8      flags;
3740cf1694f0SChandramohan Akula #define FUNC_DBR_PACING_QCFG_RESP_FLAGS_DBR_NQ_EVENT_ENABLED     0x1UL
3741cf1694f0SChandramohan Akula 	u8      unused_0[7];
3742cf1694f0SChandramohan Akula 	__le32  dbr_stat_db_fifo_reg;
3743cf1694f0SChandramohan Akula #define FUNC_DBR_PACING_QCFG_RESP_DBR_STAT_DB_FIFO_REG_ADDR_SPACE_MASK    0x3UL
3744cf1694f0SChandramohan Akula #define FUNC_DBR_PACING_QCFG_RESP_DBR_STAT_DB_FIFO_REG_ADDR_SPACE_SFT     0
3745cf1694f0SChandramohan Akula #define FUNC_DBR_PACING_QCFG_RESP_DBR_STAT_DB_FIFO_REG_ADDR_SPACE_PCIE_CFG  0x0UL
3746cf1694f0SChandramohan Akula #define FUNC_DBR_PACING_QCFG_RESP_DBR_STAT_DB_FIFO_REG_ADDR_SPACE_GRC       0x1UL
3747cf1694f0SChandramohan Akula #define FUNC_DBR_PACING_QCFG_RESP_DBR_STAT_DB_FIFO_REG_ADDR_SPACE_BAR0      0x2UL
3748cf1694f0SChandramohan Akula #define FUNC_DBR_PACING_QCFG_RESP_DBR_STAT_DB_FIFO_REG_ADDR_SPACE_BAR1      0x3UL
3749cf1694f0SChandramohan Akula #define FUNC_DBR_PACING_QCFG_RESP_DBR_STAT_DB_FIFO_REG_ADDR_SPACE_LAST     \
3750cf1694f0SChandramohan Akula 		FUNC_DBR_PACING_QCFG_RESP_DBR_STAT_DB_FIFO_REG_ADDR_SPACE_BAR1
3751cf1694f0SChandramohan Akula #define FUNC_DBR_PACING_QCFG_RESP_DBR_STAT_DB_FIFO_REG_ADDR_MASK          0xfffffffcUL
3752cf1694f0SChandramohan Akula #define FUNC_DBR_PACING_QCFG_RESP_DBR_STAT_DB_FIFO_REG_ADDR_SFT           2
3753cf1694f0SChandramohan Akula 	__le32  dbr_stat_db_fifo_reg_watermark_mask;
3754cf1694f0SChandramohan Akula 	u8      dbr_stat_db_fifo_reg_watermark_shift;
3755cf1694f0SChandramohan Akula 	u8      unused_1[3];
3756cf1694f0SChandramohan Akula 	__le32  dbr_stat_db_fifo_reg_fifo_room_mask;
3757cf1694f0SChandramohan Akula 	u8      dbr_stat_db_fifo_reg_fifo_room_shift;
3758cf1694f0SChandramohan Akula 	u8      unused_2[3];
3759cf1694f0SChandramohan Akula 	__le32  dbr_throttling_aeq_arm_reg;
3760cf1694f0SChandramohan Akula #define FUNC_DBR_PACING_QCFG_RESP_DBR_THROTTLING_AEQ_ARM_REG_ADDR_SPACE_MASK    0x3UL
3761cf1694f0SChandramohan Akula #define FUNC_DBR_PACING_QCFG_RESP_DBR_THROTTLING_AEQ_ARM_REG_ADDR_SPACE_SFT     0
3762cf1694f0SChandramohan Akula #define FUNC_DBR_PACING_QCFG_RESP_DBR_THROTTLING_AEQ_ARM_REG_ADDR_SPACE_PCIE_CFG  0x0UL
3763cf1694f0SChandramohan Akula #define FUNC_DBR_PACING_QCFG_RESP_DBR_THROTTLING_AEQ_ARM_REG_ADDR_SPACE_GRC       0x1UL
3764cf1694f0SChandramohan Akula #define FUNC_DBR_PACING_QCFG_RESP_DBR_THROTTLING_AEQ_ARM_REG_ADDR_SPACE_BAR0      0x2UL
3765cf1694f0SChandramohan Akula #define FUNC_DBR_PACING_QCFG_RESP_DBR_THROTTLING_AEQ_ARM_REG_ADDR_SPACE_BAR1      0x3UL
3766cf1694f0SChandramohan Akula #define FUNC_DBR_PACING_QCFG_RESP_DBR_THROTTLING_AEQ_ARM_REG_ADDR_SPACE_LAST	\
3767cf1694f0SChandramohan Akula 		FUNC_DBR_PACING_QCFG_RESP_DBR_THROTTLING_AEQ_ARM_REG_ADDR_SPACE_BAR1
3768cf1694f0SChandramohan Akula #define FUNC_DBR_PACING_QCFG_RESP_DBR_THROTTLING_AEQ_ARM_REG_ADDR_MASK          0xfffffffcUL
3769cf1694f0SChandramohan Akula #define FUNC_DBR_PACING_QCFG_RESP_DBR_THROTTLING_AEQ_ARM_REG_ADDR_SFT           2
3770cf1694f0SChandramohan Akula 	u8      dbr_throttling_aeq_arm_reg_val;
3771cf1694f0SChandramohan Akula 	u8      unused_3[7];
3772cf1694f0SChandramohan Akula 	__le32  primary_nq_id;
3773cf1694f0SChandramohan Akula 	__le32  pacing_threshold;
3774cf1694f0SChandramohan Akula 	u8      unused_4[7];
3775cf1694f0SChandramohan Akula 	u8      valid;
3776cf1694f0SChandramohan Akula };
3777cf1694f0SChandramohan Akula 
37786fc92c33SMichael Chan /* hwrm_func_drv_if_change_input (size:192b/24B) */
37796fc92c33SMichael Chan struct hwrm_func_drv_if_change_input {
37806fc92c33SMichael Chan 	__le16	req_type;
37816fc92c33SMichael Chan 	__le16	cmpl_ring;
37826fc92c33SMichael Chan 	__le16	seq_id;
37836fc92c33SMichael Chan 	__le16	target_id;
37846fc92c33SMichael Chan 	__le64	resp_addr;
37856fc92c33SMichael Chan 	__le32	flags;
37866fc92c33SMichael Chan 	#define FUNC_DRV_IF_CHANGE_REQ_FLAGS_UP     0x1UL
37876fc92c33SMichael Chan 	__le32	unused;
37886fc92c33SMichael Chan };
37896fc92c33SMichael Chan 
37906fc92c33SMichael Chan /* hwrm_func_drv_if_change_output (size:128b/16B) */
37916fc92c33SMichael Chan struct hwrm_func_drv_if_change_output {
37926fc92c33SMichael Chan 	__le16	error_code;
37936fc92c33SMichael Chan 	__le16	req_type;
37946fc92c33SMichael Chan 	__le16	seq_id;
37956fc92c33SMichael Chan 	__le16	resp_len;
37966fc92c33SMichael Chan 	__le32	flags;
37976fc92c33SMichael Chan 	#define FUNC_DRV_IF_CHANGE_RESP_FLAGS_RESC_CHANGE           0x1UL
37983322479eSMichael Chan 	#define FUNC_DRV_IF_CHANGE_RESP_FLAGS_HOT_FW_RESET_DONE     0x2UL
37996fc92c33SMichael Chan 	u8	unused_0[3];
38006fc92c33SMichael Chan 	u8	valid;
38016fc92c33SMichael Chan };
38026fc92c33SMichael Chan 
3803894aa69aSMichael Chan /* hwrm_port_phy_cfg_input (size:448b/56B) */
3804c0c050c5SMichael Chan struct hwrm_port_phy_cfg_input {
3805c0c050c5SMichael Chan 	__le16	req_type;
3806c0c050c5SMichael Chan 	__le16	cmpl_ring;
3807c0c050c5SMichael Chan 	__le16	seq_id;
3808c0c050c5SMichael Chan 	__le16	target_id;
3809c0c050c5SMichael Chan 	__le64	resp_addr;
3810c0c050c5SMichael Chan 	__le32	flags;
3811c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_FLAGS_RESET_PHY                  0x1UL
381216d663a6SMichael Chan 	#define PORT_PHY_CFG_REQ_FLAGS_DEPRECATED                 0x2UL
3813c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_FLAGS_FORCE                      0x4UL
3814c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_FLAGS_RESTART_AUTONEG            0x8UL
381511f15ed3SMichael Chan 	#define PORT_PHY_CFG_REQ_FLAGS_EEE_ENABLE                 0x10UL
381611f15ed3SMichael Chan 	#define PORT_PHY_CFG_REQ_FLAGS_EEE_DISABLE                0x20UL
381711f15ed3SMichael Chan 	#define PORT_PHY_CFG_REQ_FLAGS_EEE_TX_LPI_ENABLE          0x40UL
381811f15ed3SMichael Chan 	#define PORT_PHY_CFG_REQ_FLAGS_EEE_TX_LPI_DISABLE         0x80UL
3819a58a3e68SMichael Chan 	#define PORT_PHY_CFG_REQ_FLAGS_FEC_AUTONEG_ENABLE         0x100UL
3820a58a3e68SMichael Chan 	#define PORT_PHY_CFG_REQ_FLAGS_FEC_AUTONEG_DISABLE        0x200UL
3821a58a3e68SMichael Chan 	#define PORT_PHY_CFG_REQ_FLAGS_FEC_CLAUSE74_ENABLE        0x400UL
3822a58a3e68SMichael Chan 	#define PORT_PHY_CFG_REQ_FLAGS_FEC_CLAUSE74_DISABLE       0x800UL
3823a58a3e68SMichael Chan 	#define PORT_PHY_CFG_REQ_FLAGS_FEC_CLAUSE91_ENABLE        0x1000UL
3824a58a3e68SMichael Chan 	#define PORT_PHY_CFG_REQ_FLAGS_FEC_CLAUSE91_DISABLE       0x2000UL
382516d663a6SMichael Chan 	#define PORT_PHY_CFG_REQ_FLAGS_FORCE_LINK_DWN             0x4000UL
3826bfc6e5fbSMichael Chan 	#define PORT_PHY_CFG_REQ_FLAGS_FEC_RS544_1XN_ENABLE       0x8000UL
3827bfc6e5fbSMichael Chan 	#define PORT_PHY_CFG_REQ_FLAGS_FEC_RS544_1XN_DISABLE      0x10000UL
38289d6b648cSMichael Chan 	#define PORT_PHY_CFG_REQ_FLAGS_FEC_RS544_IEEE_ENABLE      0x20000UL
38299d6b648cSMichael Chan 	#define PORT_PHY_CFG_REQ_FLAGS_FEC_RS544_IEEE_DISABLE     0x40000UL
38309d6b648cSMichael Chan 	#define PORT_PHY_CFG_REQ_FLAGS_FEC_RS272_1XN_ENABLE       0x80000UL
38319d6b648cSMichael Chan 	#define PORT_PHY_CFG_REQ_FLAGS_FEC_RS272_1XN_DISABLE      0x100000UL
38329d6b648cSMichael Chan 	#define PORT_PHY_CFG_REQ_FLAGS_FEC_RS272_IEEE_ENABLE      0x200000UL
38339d6b648cSMichael Chan 	#define PORT_PHY_CFG_REQ_FLAGS_FEC_RS272_IEEE_DISABLE     0x400000UL
3834c0c050c5SMichael Chan 	__le32	enables;
3835c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_ENABLES_AUTO_MODE                     0x1UL
3836c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_ENABLES_AUTO_DUPLEX                   0x2UL
3837c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_ENABLES_AUTO_PAUSE                    0x4UL
3838c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_ENABLES_AUTO_LINK_SPEED               0x8UL
3839c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_ENABLES_AUTO_LINK_SPEED_MASK          0x10UL
3840c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_ENABLES_WIRESPEED                     0x20UL
3841c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_ENABLES_LPBK                          0x40UL
3842c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_ENABLES_PREEMPHASIS                   0x80UL
3843c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_ENABLES_FORCE_PAUSE                   0x100UL
384411f15ed3SMichael Chan 	#define PORT_PHY_CFG_REQ_ENABLES_EEE_LINK_SPEED_MASK           0x200UL
384511f15ed3SMichael Chan 	#define PORT_PHY_CFG_REQ_ENABLES_TX_LPI_TIMER                  0x400UL
3846bfc6e5fbSMichael Chan 	#define PORT_PHY_CFG_REQ_ENABLES_FORCE_PAM4_LINK_SPEED         0x800UL
3847bfc6e5fbSMichael Chan 	#define PORT_PHY_CFG_REQ_ENABLES_AUTO_PAM4_LINK_SPEED_MASK     0x1000UL
3848c0c050c5SMichael Chan 	__le16	port_id;
3849c0c050c5SMichael Chan 	__le16	force_link_speed;
3850441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_100MB 0x1UL
3851441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_1GB   0xaUL
3852441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_2GB   0x14UL
3853441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_2_5GB 0x19UL
3854441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_10GB  0x64UL
3855441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_20GB  0xc8UL
3856441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_25GB  0xfaUL
3857441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_40GB  0x190UL
3858441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_50GB  0x1f4UL
3859441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_100GB 0x3e8UL
3860441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_10MB  0xffffUL
3861894aa69aSMichael Chan 	#define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_LAST PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_10MB
3862c0c050c5SMichael Chan 	u8	auto_mode;
3863441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_MODE_NONE         0x0UL
3864441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_MODE_ALL_SPEEDS   0x1UL
3865441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_MODE_ONE_SPEED    0x2UL
3866441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_MODE_ONE_OR_BELOW 0x3UL
3867441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_MODE_SPEED_MASK   0x4UL
3868894aa69aSMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_MODE_LAST        PORT_PHY_CFG_REQ_AUTO_MODE_SPEED_MASK
3869c0c050c5SMichael Chan 	u8	auto_duplex;
3870441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_DUPLEX_HALF 0x0UL
3871441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_DUPLEX_FULL 0x1UL
3872441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_DUPLEX_BOTH 0x2UL
3873894aa69aSMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_DUPLEX_LAST PORT_PHY_CFG_REQ_AUTO_DUPLEX_BOTH
3874c0c050c5SMichael Chan 	u8	auto_pause;
3875c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_PAUSE_TX                0x1UL
3876c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_PAUSE_RX                0x2UL
387711f15ed3SMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_PAUSE_AUTONEG_PAUSE     0x4UL
3878c0c050c5SMichael Chan 	u8	unused_0;
3879c0c050c5SMichael Chan 	__le16	auto_link_speed;
3880441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_100MB 0x1UL
3881441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_1GB   0xaUL
3882441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_2GB   0x14UL
3883441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_2_5GB 0x19UL
3884441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_10GB  0x64UL
3885441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_20GB  0xc8UL
3886441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_25GB  0xfaUL
3887441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_40GB  0x190UL
3888441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_50GB  0x1f4UL
3889441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_100GB 0x3e8UL
3890441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_10MB  0xffffUL
3891894aa69aSMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_LAST PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_10MB
3892c0c050c5SMichael Chan 	__le16	auto_link_speed_mask;
3893c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_100MBHD     0x1UL
3894c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_100MB       0x2UL
3895c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_1GBHD       0x4UL
3896c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_1GB         0x8UL
3897c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_2GB         0x10UL
3898c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_2_5GB       0x20UL
3899c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_10GB        0x40UL
3900c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_20GB        0x80UL
3901c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_25GB        0x100UL
3902c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_40GB        0x200UL
3903c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_50GB        0x400UL
390411f15ed3SMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_100GB       0x800UL
390511f15ed3SMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_10MBHD      0x1000UL
390611f15ed3SMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_10MB        0x2000UL
3907c0c050c5SMichael Chan 	u8	wirespeed;
3908441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_WIRESPEED_OFF 0x0UL
3909441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_WIRESPEED_ON  0x1UL
3910894aa69aSMichael Chan 	#define PORT_PHY_CFG_REQ_WIRESPEED_LAST PORT_PHY_CFG_REQ_WIRESPEED_ON
3911c0c050c5SMichael Chan 	u8	lpbk;
3912441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_LPBK_NONE     0x0UL
3913441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_LPBK_LOCAL    0x1UL
3914441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_LPBK_REMOTE   0x2UL
39156fc92c33SMichael Chan 	#define PORT_PHY_CFG_REQ_LPBK_EXTERNAL 0x3UL
39166fc92c33SMichael Chan 	#define PORT_PHY_CFG_REQ_LPBK_LAST    PORT_PHY_CFG_REQ_LPBK_EXTERNAL
3917c0c050c5SMichael Chan 	u8	force_pause;
3918c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_FORCE_PAUSE_TX     0x1UL
3919c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_FORCE_PAUSE_RX     0x2UL
3920c0c050c5SMichael Chan 	u8	unused_1;
3921c0c050c5SMichael Chan 	__le32	preemphasis;
392211f15ed3SMichael Chan 	__le16	eee_link_speed_mask;
392311f15ed3SMichael Chan 	#define PORT_PHY_CFG_REQ_EEE_LINK_SPEED_MASK_RSVD1     0x1UL
392411f15ed3SMichael Chan 	#define PORT_PHY_CFG_REQ_EEE_LINK_SPEED_MASK_100MB     0x2UL
392511f15ed3SMichael Chan 	#define PORT_PHY_CFG_REQ_EEE_LINK_SPEED_MASK_RSVD2     0x4UL
392611f15ed3SMichael Chan 	#define PORT_PHY_CFG_REQ_EEE_LINK_SPEED_MASK_1GB       0x8UL
392711f15ed3SMichael Chan 	#define PORT_PHY_CFG_REQ_EEE_LINK_SPEED_MASK_RSVD3     0x10UL
392811f15ed3SMichael Chan 	#define PORT_PHY_CFG_REQ_EEE_LINK_SPEED_MASK_RSVD4     0x20UL
392911f15ed3SMichael Chan 	#define PORT_PHY_CFG_REQ_EEE_LINK_SPEED_MASK_10GB      0x40UL
3930bfc6e5fbSMichael Chan 	__le16	force_pam4_link_speed;
3931bfc6e5fbSMichael Chan 	#define PORT_PHY_CFG_REQ_FORCE_PAM4_LINK_SPEED_50GB  0x1f4UL
3932bfc6e5fbSMichael Chan 	#define PORT_PHY_CFG_REQ_FORCE_PAM4_LINK_SPEED_100GB 0x3e8UL
3933bfc6e5fbSMichael Chan 	#define PORT_PHY_CFG_REQ_FORCE_PAM4_LINK_SPEED_200GB 0x7d0UL
3934bfc6e5fbSMichael Chan 	#define PORT_PHY_CFG_REQ_FORCE_PAM4_LINK_SPEED_LAST PORT_PHY_CFG_REQ_FORCE_PAM4_LINK_SPEED_200GB
393511f15ed3SMichael Chan 	__le32	tx_lpi_timer;
393611f15ed3SMichael Chan 	#define PORT_PHY_CFG_REQ_TX_LPI_TIMER_MASK 0xffffffUL
393711f15ed3SMichael Chan 	#define PORT_PHY_CFG_REQ_TX_LPI_TIMER_SFT 0
3938bfc6e5fbSMichael Chan 	__le16	auto_link_pam4_speed_mask;
3939bfc6e5fbSMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_LINK_PAM4_SPEED_MASK_50G      0x1UL
3940bfc6e5fbSMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_LINK_PAM4_SPEED_MASK_100G     0x2UL
3941bfc6e5fbSMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_LINK_PAM4_SPEED_MASK_200G     0x4UL
3942bfc6e5fbSMichael Chan 	u8	unused_2[2];
3943c0c050c5SMichael Chan };
3944c0c050c5SMichael Chan 
3945894aa69aSMichael Chan /* hwrm_port_phy_cfg_output (size:128b/16B) */
3946c0c050c5SMichael Chan struct hwrm_port_phy_cfg_output {
3947c0c050c5SMichael Chan 	__le16	error_code;
3948c0c050c5SMichael Chan 	__le16	req_type;
3949c0c050c5SMichael Chan 	__le16	seq_id;
3950c0c050c5SMichael Chan 	__le16	resp_len;
3951894aa69aSMichael Chan 	u8	unused_0[7];
3952c0c050c5SMichael Chan 	u8	valid;
3953c0c050c5SMichael Chan };
3954c0c050c5SMichael Chan 
3955d4f52de0SMichael Chan /* hwrm_port_phy_cfg_cmd_err (size:64b/8B) */
3956d4f52de0SMichael Chan struct hwrm_port_phy_cfg_cmd_err {
3957d4f52de0SMichael Chan 	u8	code;
3958d4f52de0SMichael Chan 	#define PORT_PHY_CFG_CMD_ERR_CODE_UNKNOWN       0x0UL
3959d4f52de0SMichael Chan 	#define PORT_PHY_CFG_CMD_ERR_CODE_ILLEGAL_SPEED 0x1UL
3960d4f52de0SMichael Chan 	#define PORT_PHY_CFG_CMD_ERR_CODE_RETRY         0x2UL
3961d4f52de0SMichael Chan 	#define PORT_PHY_CFG_CMD_ERR_CODE_LAST         PORT_PHY_CFG_CMD_ERR_CODE_RETRY
3962d4f52de0SMichael Chan 	u8	unused_0[7];
3963d4f52de0SMichael Chan };
3964d4f52de0SMichael Chan 
3965894aa69aSMichael Chan /* hwrm_port_phy_qcfg_input (size:192b/24B) */
3966c0c050c5SMichael Chan struct hwrm_port_phy_qcfg_input {
3967c0c050c5SMichael Chan 	__le16	req_type;
3968c0c050c5SMichael Chan 	__le16	cmpl_ring;
3969c0c050c5SMichael Chan 	__le16	seq_id;
3970c0c050c5SMichael Chan 	__le16	target_id;
3971c0c050c5SMichael Chan 	__le64	resp_addr;
3972c0c050c5SMichael Chan 	__le16	port_id;
3973894aa69aSMichael Chan 	u8	unused_0[6];
3974c0c050c5SMichael Chan };
3975c0c050c5SMichael Chan 
397684a911dbSMichael Chan /* hwrm_port_phy_qcfg_output (size:832b/104B) */
3977c0c050c5SMichael Chan struct hwrm_port_phy_qcfg_output {
3978c0c050c5SMichael Chan 	__le16	error_code;
3979c0c050c5SMichael Chan 	__le16	req_type;
3980c0c050c5SMichael Chan 	__le16	seq_id;
3981c0c050c5SMichael Chan 	__le16	resp_len;
3982c0c050c5SMichael Chan 	u8	link;
3983441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_NO_LINK 0x0UL
3984441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_SIGNAL  0x1UL
3985441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_LINK    0x2UL
3986894aa69aSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_LAST   PORT_PHY_QCFG_RESP_LINK_LINK
39879d6b648cSMichael Chan 	u8	active_fec_signal_mode;
39889d6b648cSMichael Chan 	#define PORT_PHY_QCFG_RESP_SIGNAL_MODE_MASK                0xfUL
39899d6b648cSMichael Chan 	#define PORT_PHY_QCFG_RESP_SIGNAL_MODE_SFT                 0
39909d6b648cSMichael Chan 	#define PORT_PHY_QCFG_RESP_SIGNAL_MODE_NRZ                   0x0UL
39919d6b648cSMichael Chan 	#define PORT_PHY_QCFG_RESP_SIGNAL_MODE_PAM4                  0x1UL
39929d6b648cSMichael Chan 	#define PORT_PHY_QCFG_RESP_SIGNAL_MODE_LAST                 PORT_PHY_QCFG_RESP_SIGNAL_MODE_PAM4
39939d6b648cSMichael Chan 	#define PORT_PHY_QCFG_RESP_ACTIVE_FEC_MASK                 0xf0UL
39949d6b648cSMichael Chan 	#define PORT_PHY_QCFG_RESP_ACTIVE_FEC_SFT                  4
39959d6b648cSMichael Chan 	#define PORT_PHY_QCFG_RESP_ACTIVE_FEC_FEC_NONE_ACTIVE        (0x0UL << 4)
39969d6b648cSMichael Chan 	#define PORT_PHY_QCFG_RESP_ACTIVE_FEC_FEC_CLAUSE74_ACTIVE    (0x1UL << 4)
39979d6b648cSMichael Chan 	#define PORT_PHY_QCFG_RESP_ACTIVE_FEC_FEC_CLAUSE91_ACTIVE    (0x2UL << 4)
39989d6b648cSMichael Chan 	#define PORT_PHY_QCFG_RESP_ACTIVE_FEC_FEC_RS544_1XN_ACTIVE   (0x3UL << 4)
39999d6b648cSMichael Chan 	#define PORT_PHY_QCFG_RESP_ACTIVE_FEC_FEC_RS544_IEEE_ACTIVE  (0x4UL << 4)
40009d6b648cSMichael Chan 	#define PORT_PHY_QCFG_RESP_ACTIVE_FEC_FEC_RS272_1XN_ACTIVE   (0x5UL << 4)
40019d6b648cSMichael Chan 	#define PORT_PHY_QCFG_RESP_ACTIVE_FEC_FEC_RS272_IEEE_ACTIVE  (0x6UL << 4)
40029d6b648cSMichael Chan 	#define PORT_PHY_QCFG_RESP_ACTIVE_FEC_LAST                  PORT_PHY_QCFG_RESP_ACTIVE_FEC_FEC_RS272_IEEE_ACTIVE
4003c0c050c5SMichael Chan 	__le16	link_speed;
4004441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_SPEED_100MB 0x1UL
4005441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_SPEED_1GB   0xaUL
4006441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_SPEED_2GB   0x14UL
4007441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_SPEED_2_5GB 0x19UL
4008441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_SPEED_10GB  0x64UL
4009441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_SPEED_20GB  0xc8UL
4010441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_SPEED_25GB  0xfaUL
4011441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_SPEED_40GB  0x190UL
4012441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_SPEED_50GB  0x1f4UL
4013441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_SPEED_100GB 0x3e8UL
401431d357c0SMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_SPEED_200GB 0x7d0UL
4015441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_SPEED_10MB  0xffffUL
4016894aa69aSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_SPEED_LAST PORT_PHY_QCFG_RESP_LINK_SPEED_10MB
4017acb20054SMichael Chan 	u8	duplex_cfg;
4018acb20054SMichael Chan 	#define PORT_PHY_QCFG_RESP_DUPLEX_CFG_HALF 0x0UL
4019acb20054SMichael Chan 	#define PORT_PHY_QCFG_RESP_DUPLEX_CFG_FULL 0x1UL
4020894aa69aSMichael Chan 	#define PORT_PHY_QCFG_RESP_DUPLEX_CFG_LAST PORT_PHY_QCFG_RESP_DUPLEX_CFG_FULL
4021c0c050c5SMichael Chan 	u8	pause;
4022c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_PAUSE_TX     0x1UL
4023c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_PAUSE_RX     0x2UL
4024c0c050c5SMichael Chan 	__le16	support_speeds;
4025c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_100MBHD     0x1UL
4026c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_100MB       0x2UL
4027c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_1GBHD       0x4UL
4028c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_1GB         0x8UL
4029c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_2GB         0x10UL
4030c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_2_5GB       0x20UL
4031c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_10GB        0x40UL
4032c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_20GB        0x80UL
4033c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_25GB        0x100UL
4034c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_40GB        0x200UL
4035c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_50GB        0x400UL
403611f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_100GB       0x800UL
403711f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_10MBHD      0x1000UL
403811f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_10MB        0x2000UL
4039c0c050c5SMichael Chan 	__le16	force_link_speed;
4040441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_100MB 0x1UL
4041441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_1GB   0xaUL
4042441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_2GB   0x14UL
4043441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_2_5GB 0x19UL
4044441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_10GB  0x64UL
4045441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_20GB  0xc8UL
4046441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_25GB  0xfaUL
4047441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_40GB  0x190UL
4048441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_50GB  0x1f4UL
4049441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_100GB 0x3e8UL
4050441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_10MB  0xffffUL
4051894aa69aSMichael Chan 	#define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_LAST PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_10MB
4052c0c050c5SMichael Chan 	u8	auto_mode;
4053441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_MODE_NONE         0x0UL
4054441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_MODE_ALL_SPEEDS   0x1UL
4055441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_MODE_ONE_SPEED    0x2UL
4056441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_MODE_ONE_OR_BELOW 0x3UL
4057441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_MODE_SPEED_MASK   0x4UL
4058894aa69aSMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_MODE_LAST        PORT_PHY_QCFG_RESP_AUTO_MODE_SPEED_MASK
4059c0c050c5SMichael Chan 	u8	auto_pause;
4060c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_PAUSE_TX                0x1UL
4061c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_PAUSE_RX                0x2UL
406211f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_PAUSE_AUTONEG_PAUSE     0x4UL
4063c0c050c5SMichael Chan 	__le16	auto_link_speed;
4064441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_100MB 0x1UL
4065441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_1GB   0xaUL
4066441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_2GB   0x14UL
4067441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_2_5GB 0x19UL
4068441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_10GB  0x64UL
4069441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_20GB  0xc8UL
4070441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_25GB  0xfaUL
4071441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_40GB  0x190UL
4072441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_50GB  0x1f4UL
4073441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_100GB 0x3e8UL
4074441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_10MB  0xffffUL
4075894aa69aSMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_LAST PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_10MB
4076c0c050c5SMichael Chan 	__le16	auto_link_speed_mask;
4077c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_100MBHD     0x1UL
4078c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_100MB       0x2UL
4079c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_1GBHD       0x4UL
4080c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_1GB         0x8UL
4081c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_2GB         0x10UL
4082c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_2_5GB       0x20UL
4083c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_10GB        0x40UL
4084c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_20GB        0x80UL
4085c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_25GB        0x100UL
4086c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_40GB        0x200UL
4087c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_50GB        0x400UL
408811f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_100GB       0x800UL
408911f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_10MBHD      0x1000UL
409011f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_10MB        0x2000UL
4091c0c050c5SMichael Chan 	u8	wirespeed;
4092441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_WIRESPEED_OFF 0x0UL
4093441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_WIRESPEED_ON  0x1UL
4094894aa69aSMichael Chan 	#define PORT_PHY_QCFG_RESP_WIRESPEED_LAST PORT_PHY_QCFG_RESP_WIRESPEED_ON
4095c0c050c5SMichael Chan 	u8	lpbk;
4096441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_LPBK_NONE     0x0UL
4097441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_LPBK_LOCAL    0x1UL
4098441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_LPBK_REMOTE   0x2UL
40996fc92c33SMichael Chan 	#define PORT_PHY_QCFG_RESP_LPBK_EXTERNAL 0x3UL
41006fc92c33SMichael Chan 	#define PORT_PHY_QCFG_RESP_LPBK_LAST    PORT_PHY_QCFG_RESP_LPBK_EXTERNAL
4101c0c050c5SMichael Chan 	u8	force_pause;
4102c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_FORCE_PAUSE_TX     0x1UL
4103c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_FORCE_PAUSE_RX     0x2UL
410411f15ed3SMichael Chan 	u8	module_status;
4105441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_MODULE_STATUS_NONE          0x0UL
4106441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_MODULE_STATUS_DISABLETX     0x1UL
4107441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_MODULE_STATUS_WARNINGMSG    0x2UL
4108441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_MODULE_STATUS_PWRDOWN       0x3UL
4109441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_MODULE_STATUS_NOTINSERTED   0x4UL
411041136ab3SMichael Chan 	#define PORT_PHY_QCFG_RESP_MODULE_STATUS_CURRENTFAULT  0x5UL
4111441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_MODULE_STATUS_NOTAPPLICABLE 0xffUL
4112894aa69aSMichael Chan 	#define PORT_PHY_QCFG_RESP_MODULE_STATUS_LAST         PORT_PHY_QCFG_RESP_MODULE_STATUS_NOTAPPLICABLE
4113c0c050c5SMichael Chan 	__le32	preemphasis;
4114c0c050c5SMichael Chan 	u8	phy_maj;
4115c0c050c5SMichael Chan 	u8	phy_min;
4116c0c050c5SMichael Chan 	u8	phy_bld;
4117c0c050c5SMichael Chan 	u8	phy_type;
4118441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_UNKNOWN          0x0UL
4119441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_BASECR           0x1UL
4120441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_BASEKR4          0x2UL
4121441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_BASELR           0x3UL
4122441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_BASESR           0x4UL
4123441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_BASEKR2          0x5UL
4124441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_BASEKX           0x6UL
4125441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_BASEKR           0x7UL
4126441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_BASET            0x8UL
4127441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_BASETE           0x9UL
4128441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_SGMIIEXTPHY      0xaUL
4129bac9a7e0SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_25G_BASECR_CA_L  0xbUL
4130bac9a7e0SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_25G_BASECR_CA_S  0xcUL
4131bac9a7e0SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_25G_BASECR_CA_N  0xdUL
4132bac9a7e0SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_25G_BASESR       0xeUL
4133bac9a7e0SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_100G_BASECR4     0xfUL
4134bac9a7e0SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_100G_BASESR4     0x10UL
4135bac9a7e0SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_100G_BASELR4     0x11UL
4136bac9a7e0SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_100G_BASEER4     0x12UL
4137bac9a7e0SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_100G_BASESR10    0x13UL
4138bac9a7e0SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_40G_BASECR4      0x14UL
4139bac9a7e0SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_40G_BASESR4      0x15UL
4140bac9a7e0SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_40G_BASELR4      0x16UL
4141bac9a7e0SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_40G_BASEER4      0x17UL
4142bac9a7e0SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_40G_ACTIVE_CABLE 0x18UL
4143acb20054SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_1G_BASET         0x19UL
4144acb20054SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_1G_BASESX        0x1aUL
4145acb20054SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_1G_BASECX        0x1bUL
414631d357c0SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_200G_BASECR4     0x1cUL
414731d357c0SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_200G_BASESR4     0x1dUL
414831d357c0SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_200G_BASELR4     0x1eUL
414931d357c0SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_200G_BASEER4     0x1fUL
415021e70778SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_50G_BASECR       0x20UL
415121e70778SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_50G_BASESR       0x21UL
415221e70778SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_50G_BASELR       0x22UL
415321e70778SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_50G_BASEER       0x23UL
415421e70778SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_100G_BASECR2     0x24UL
415521e70778SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_100G_BASESR2     0x25UL
415621e70778SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_100G_BASELR2     0x26UL
415721e70778SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_100G_BASEER2     0x27UL
415821e70778SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_LAST            PORT_PHY_QCFG_RESP_PHY_TYPE_100G_BASEER2
4159c0c050c5SMichael Chan 	u8	media_type;
4160441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_MEDIA_TYPE_UNKNOWN 0x0UL
4161441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_MEDIA_TYPE_TP      0x1UL
4162441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_MEDIA_TYPE_DAC     0x2UL
4163441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_MEDIA_TYPE_FIBRE   0x3UL
4164894aa69aSMichael Chan 	#define PORT_PHY_QCFG_RESP_MEDIA_TYPE_LAST   PORT_PHY_QCFG_RESP_MEDIA_TYPE_FIBRE
416511f15ed3SMichael Chan 	u8	xcvr_pkg_type;
4166441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_XCVR_PKG_TYPE_XCVR_INTERNAL 0x1UL
4167441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_XCVR_PKG_TYPE_XCVR_EXTERNAL 0x2UL
4168894aa69aSMichael Chan 	#define PORT_PHY_QCFG_RESP_XCVR_PKG_TYPE_LAST         PORT_PHY_QCFG_RESP_XCVR_PKG_TYPE_XCVR_EXTERNAL
416911f15ed3SMichael Chan 	u8	eee_config_phy_addr;
4170c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_ADDR_MASK              0x1fUL
4171c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_ADDR_SFT               0
4172894aa69aSMichael Chan 	#define PORT_PHY_QCFG_RESP_EEE_CONFIG_MASK            0xe0UL
4173894aa69aSMichael Chan 	#define PORT_PHY_QCFG_RESP_EEE_CONFIG_SFT             5
417411f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_EEE_CONFIG_EEE_ENABLED      0x20UL
417511f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_EEE_CONFIG_EEE_ACTIVE       0x40UL
417611f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_EEE_CONFIG_EEE_TX_LPI       0x80UL
417711f15ed3SMichael Chan 	u8	parallel_detect;
417811f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_PARALLEL_DETECT     0x1UL
4179c0c050c5SMichael Chan 	__le16	link_partner_adv_speeds;
4180c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_100MBHD     0x1UL
4181c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_100MB       0x2UL
4182c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_1GBHD       0x4UL
4183c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_1GB         0x8UL
4184c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_2GB         0x10UL
4185c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_2_5GB       0x20UL
4186c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_10GB        0x40UL
4187c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_20GB        0x80UL
4188c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_25GB        0x100UL
4189c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_40GB        0x200UL
4190c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_50GB        0x400UL
419111f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_100GB       0x800UL
419211f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_10MBHD      0x1000UL
419311f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_10MB        0x2000UL
4194c0c050c5SMichael Chan 	u8	link_partner_adv_auto_mode;
4195441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_NONE         0x0UL
4196441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_ALL_SPEEDS   0x1UL
4197441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_ONE_SPEED    0x2UL
4198441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_ONE_OR_BELOW 0x3UL
4199441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_SPEED_MASK   0x4UL
4200894aa69aSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_LAST        PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_SPEED_MASK
4201c0c050c5SMichael Chan 	u8	link_partner_adv_pause;
4202c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_PAUSE_TX     0x1UL
4203c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_PAUSE_RX     0x2UL
420411f15ed3SMichael Chan 	__le16	adv_eee_link_speed_mask;
420511f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_ADV_EEE_LINK_SPEED_MASK_RSVD1     0x1UL
420611f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_ADV_EEE_LINK_SPEED_MASK_100MB     0x2UL
420711f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_ADV_EEE_LINK_SPEED_MASK_RSVD2     0x4UL
420811f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_ADV_EEE_LINK_SPEED_MASK_1GB       0x8UL
420911f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_ADV_EEE_LINK_SPEED_MASK_RSVD3     0x10UL
421011f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_ADV_EEE_LINK_SPEED_MASK_RSVD4     0x20UL
421111f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_ADV_EEE_LINK_SPEED_MASK_10GB      0x40UL
421211f15ed3SMichael Chan 	__le16	link_partner_adv_eee_link_speed_mask;
421311f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_EEE_LINK_SPEED_MASK_RSVD1     0x1UL
421411f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_EEE_LINK_SPEED_MASK_100MB     0x2UL
421511f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_EEE_LINK_SPEED_MASK_RSVD2     0x4UL
421611f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_EEE_LINK_SPEED_MASK_1GB       0x8UL
421711f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_EEE_LINK_SPEED_MASK_RSVD3     0x10UL
421811f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_EEE_LINK_SPEED_MASK_RSVD4     0x20UL
421911f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_EEE_LINK_SPEED_MASK_10GB      0x40UL
422011f15ed3SMichael Chan 	__le32	xcvr_identifier_type_tx_lpi_timer;
422111f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_TX_LPI_TIMER_MASK            0xffffffUL
422211f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_TX_LPI_TIMER_SFT             0
422311f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_XCVR_IDENTIFIER_TYPE_MASK    0xff000000UL
422411f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_XCVR_IDENTIFIER_TYPE_SFT     24
422511f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_XCVR_IDENTIFIER_TYPE_UNKNOWN   (0x0UL << 24)
422611f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_XCVR_IDENTIFIER_TYPE_SFP       (0x3UL << 24)
422711f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_XCVR_IDENTIFIER_TYPE_QSFP      (0xcUL << 24)
422811f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_XCVR_IDENTIFIER_TYPE_QSFPPLUS  (0xdUL << 24)
422911f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_XCVR_IDENTIFIER_TYPE_QSFP28    (0x11UL << 24)
4230894aa69aSMichael Chan 	#define PORT_PHY_QCFG_RESP_XCVR_IDENTIFIER_TYPE_LAST     PORT_PHY_QCFG_RESP_XCVR_IDENTIFIER_TYPE_QSFP28
4231a58a3e68SMichael Chan 	__le16	fec_cfg;
4232a58a3e68SMichael Chan 	#define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_NONE_SUPPORTED           0x1UL
4233a58a3e68SMichael Chan 	#define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_AUTONEG_SUPPORTED        0x2UL
4234a58a3e68SMichael Chan 	#define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_AUTONEG_ENABLED          0x4UL
4235a58a3e68SMichael Chan 	#define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_CLAUSE74_SUPPORTED       0x8UL
4236a58a3e68SMichael Chan 	#define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_CLAUSE74_ENABLED         0x10UL
4237a58a3e68SMichael Chan 	#define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_CLAUSE91_SUPPORTED       0x20UL
4238a58a3e68SMichael Chan 	#define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_CLAUSE91_ENABLED         0x40UL
4239bfc6e5fbSMichael Chan 	#define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_RS544_1XN_SUPPORTED      0x80UL
4240bfc6e5fbSMichael Chan 	#define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_RS544_1XN_ENABLED        0x100UL
42419d6b648cSMichael Chan 	#define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_RS544_IEEE_SUPPORTED     0x200UL
42429d6b648cSMichael Chan 	#define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_RS544_IEEE_ENABLED       0x400UL
42439d6b648cSMichael Chan 	#define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_RS272_1XN_SUPPORTED      0x800UL
42449d6b648cSMichael Chan 	#define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_RS272_1XN_ENABLED        0x1000UL
42459d6b648cSMichael Chan 	#define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_RS272_IEEE_SUPPORTED     0x2000UL
42469d6b648cSMichael Chan 	#define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_RS272_IEEE_ENABLED       0x4000UL
4247acb20054SMichael Chan 	u8	duplex_state;
4248acb20054SMichael Chan 	#define PORT_PHY_QCFG_RESP_DUPLEX_STATE_HALF 0x0UL
4249acb20054SMichael Chan 	#define PORT_PHY_QCFG_RESP_DUPLEX_STATE_FULL 0x1UL
4250894aa69aSMichael Chan 	#define PORT_PHY_QCFG_RESP_DUPLEX_STATE_LAST PORT_PHY_QCFG_RESP_DUPLEX_STATE_FULL
4251894aa69aSMichael Chan 	u8	option_flags;
4252894aa69aSMichael Chan 	#define PORT_PHY_QCFG_RESP_OPTION_FLAGS_MEDIA_AUTO_DETECT     0x1UL
425316db6323SMichael Chan 	#define PORT_PHY_QCFG_RESP_OPTION_FLAGS_SIGNAL_MODE_KNOWN     0x2UL
425411f15ed3SMichael Chan 	char	phy_vendor_name[16];
425511f15ed3SMichael Chan 	char	phy_vendor_partnumber[16];
4256bfc6e5fbSMichael Chan 	__le16	support_pam4_speeds;
4257bfc6e5fbSMichael Chan 	#define PORT_PHY_QCFG_RESP_SUPPORT_PAM4_SPEEDS_50G      0x1UL
4258bfc6e5fbSMichael Chan 	#define PORT_PHY_QCFG_RESP_SUPPORT_PAM4_SPEEDS_100G     0x2UL
4259bfc6e5fbSMichael Chan 	#define PORT_PHY_QCFG_RESP_SUPPORT_PAM4_SPEEDS_200G     0x4UL
4260bfc6e5fbSMichael Chan 	__le16	force_pam4_link_speed;
4261bfc6e5fbSMichael Chan 	#define PORT_PHY_QCFG_RESP_FORCE_PAM4_LINK_SPEED_50GB  0x1f4UL
4262bfc6e5fbSMichael Chan 	#define PORT_PHY_QCFG_RESP_FORCE_PAM4_LINK_SPEED_100GB 0x3e8UL
4263bfc6e5fbSMichael Chan 	#define PORT_PHY_QCFG_RESP_FORCE_PAM4_LINK_SPEED_200GB 0x7d0UL
4264bfc6e5fbSMichael Chan 	#define PORT_PHY_QCFG_RESP_FORCE_PAM4_LINK_SPEED_LAST PORT_PHY_QCFG_RESP_FORCE_PAM4_LINK_SPEED_200GB
4265bfc6e5fbSMichael Chan 	__le16	auto_pam4_link_speed_mask;
4266bfc6e5fbSMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_PAM4_LINK_SPEED_MASK_50G      0x1UL
4267bfc6e5fbSMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_PAM4_LINK_SPEED_MASK_100G     0x2UL
4268bfc6e5fbSMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_PAM4_LINK_SPEED_MASK_200G     0x4UL
42699d6b648cSMichael Chan 	u8	link_partner_pam4_adv_speeds;
4270bfc6e5fbSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_PAM4_ADV_SPEEDS_50GB      0x1UL
4271bfc6e5fbSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_PAM4_ADV_SPEEDS_100GB     0x2UL
4272bfc6e5fbSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_PAM4_ADV_SPEEDS_200GB     0x4UL
427384a911dbSMichael Chan 	u8	link_down_reason;
427484a911dbSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_DOWN_REASON_RF     0x1UL
427584a911dbSMichael Chan 	u8	unused_0[7];
4276c0c050c5SMichael Chan 	u8	valid;
4277c0c050c5SMichael Chan };
4278c0c050c5SMichael Chan 
42792895c153SMichael Chan /* hwrm_port_mac_cfg_input (size:448b/56B) */
4280c0c050c5SMichael Chan struct hwrm_port_mac_cfg_input {
4281c0c050c5SMichael Chan 	__le16	req_type;
4282c0c050c5SMichael Chan 	__le16	cmpl_ring;
4283c0c050c5SMichael Chan 	__le16	seq_id;
4284c0c050c5SMichael Chan 	__le16	target_id;
4285c0c050c5SMichael Chan 	__le64	resp_addr;
4286c0c050c5SMichael Chan 	__le32	flags;
4287c0c050c5SMichael Chan 	#define PORT_MAC_CFG_REQ_FLAGS_MATCH_LINK                    0x1UL
4288441cabbbSMichael Chan 	#define PORT_MAC_CFG_REQ_FLAGS_VLAN_PRI2COS_ENABLE           0x2UL
4289c0c050c5SMichael Chan 	#define PORT_MAC_CFG_REQ_FLAGS_TUNNEL_PRI2COS_ENABLE         0x4UL
4290c0c050c5SMichael Chan 	#define PORT_MAC_CFG_REQ_FLAGS_IP_DSCP2COS_ENABLE            0x8UL
429111f15ed3SMichael Chan 	#define PORT_MAC_CFG_REQ_FLAGS_PTP_RX_TS_CAPTURE_ENABLE      0x10UL
429211f15ed3SMichael Chan 	#define PORT_MAC_CFG_REQ_FLAGS_PTP_RX_TS_CAPTURE_DISABLE     0x20UL
429311f15ed3SMichael Chan 	#define PORT_MAC_CFG_REQ_FLAGS_PTP_TX_TS_CAPTURE_ENABLE      0x40UL
429411f15ed3SMichael Chan 	#define PORT_MAC_CFG_REQ_FLAGS_PTP_TX_TS_CAPTURE_DISABLE     0x80UL
4295a58a3e68SMichael Chan 	#define PORT_MAC_CFG_REQ_FLAGS_OOB_WOL_ENABLE                0x100UL
4296a58a3e68SMichael Chan 	#define PORT_MAC_CFG_REQ_FLAGS_OOB_WOL_DISABLE               0x200UL
4297441cabbbSMichael Chan 	#define PORT_MAC_CFG_REQ_FLAGS_VLAN_PRI2COS_DISABLE          0x400UL
4298441cabbbSMichael Chan 	#define PORT_MAC_CFG_REQ_FLAGS_TUNNEL_PRI2COS_DISABLE        0x800UL
4299441cabbbSMichael Chan 	#define PORT_MAC_CFG_REQ_FLAGS_IP_DSCP2COS_DISABLE           0x1000UL
43004a50ddc2SMichael Chan 	#define PORT_MAC_CFG_REQ_FLAGS_PTP_ONE_STEP_TX_TS            0x2000UL
4301ad04cc05SMichael Chan 	#define PORT_MAC_CFG_REQ_FLAGS_ALL_RX_TS_CAPTURE_ENABLE      0x4000UL
4302ad04cc05SMichael Chan 	#define PORT_MAC_CFG_REQ_FLAGS_ALL_RX_TS_CAPTURE_DISABLE     0x8000UL
4303c0c050c5SMichael Chan 	__le32	enables;
4304c0c050c5SMichael Chan 	#define PORT_MAC_CFG_REQ_ENABLES_IPG                            0x1UL
4305c0c050c5SMichael Chan 	#define PORT_MAC_CFG_REQ_ENABLES_LPBK                           0x2UL
4306441cabbbSMichael Chan 	#define PORT_MAC_CFG_REQ_ENABLES_VLAN_PRI2COS_MAP_PRI           0x4UL
4307c0c050c5SMichael Chan 	#define PORT_MAC_CFG_REQ_ENABLES_TUNNEL_PRI2COS_MAP_PRI         0x10UL
4308c0c050c5SMichael Chan 	#define PORT_MAC_CFG_REQ_ENABLES_DSCP2COS_MAP_PRI               0x20UL
430911f15ed3SMichael Chan 	#define PORT_MAC_CFG_REQ_ENABLES_RX_TS_CAPTURE_PTP_MSG_TYPE     0x40UL
431011f15ed3SMichael Chan 	#define PORT_MAC_CFG_REQ_ENABLES_TX_TS_CAPTURE_PTP_MSG_TYPE     0x80UL
4311441cabbbSMichael Chan 	#define PORT_MAC_CFG_REQ_ENABLES_COS_FIELD_CFG                  0x100UL
43124a50ddc2SMichael Chan 	#define PORT_MAC_CFG_REQ_ENABLES_PTP_FREQ_ADJ_PPB               0x200UL
431378eeadb8SMichael Chan 	#define PORT_MAC_CFG_REQ_ENABLES_PTP_ADJ_PHASE                  0x400UL
4314c0c050c5SMichael Chan 	__le16	port_id;
4315c0c050c5SMichael Chan 	u8	ipg;
4316c0c050c5SMichael Chan 	u8	lpbk;
4317441cabbbSMichael Chan 	#define PORT_MAC_CFG_REQ_LPBK_NONE   0x0UL
4318441cabbbSMichael Chan 	#define PORT_MAC_CFG_REQ_LPBK_LOCAL  0x1UL
4319441cabbbSMichael Chan 	#define PORT_MAC_CFG_REQ_LPBK_REMOTE 0x2UL
4320894aa69aSMichael Chan 	#define PORT_MAC_CFG_REQ_LPBK_LAST  PORT_MAC_CFG_REQ_LPBK_REMOTE
4321441cabbbSMichael Chan 	u8	vlan_pri2cos_map_pri;
4322441cabbbSMichael Chan 	u8	reserved1;
4323c0c050c5SMichael Chan 	u8	tunnel_pri2cos_map_pri;
4324c0c050c5SMichael Chan 	u8	dscp2pri_map_pri;
432511f15ed3SMichael Chan 	__le16	rx_ts_capture_ptp_msg_type;
432611f15ed3SMichael Chan 	__le16	tx_ts_capture_ptp_msg_type;
4327441cabbbSMichael Chan 	u8	cos_field_cfg;
4328441cabbbSMichael Chan 	#define PORT_MAC_CFG_REQ_COS_FIELD_CFG_RSVD1                     0x1UL
4329441cabbbSMichael Chan 	#define PORT_MAC_CFG_REQ_COS_FIELD_CFG_VLAN_PRI_SEL_MASK         0x6UL
4330441cabbbSMichael Chan 	#define PORT_MAC_CFG_REQ_COS_FIELD_CFG_VLAN_PRI_SEL_SFT          1
4331441cabbbSMichael Chan 	#define PORT_MAC_CFG_REQ_COS_FIELD_CFG_VLAN_PRI_SEL_INNERMOST      (0x0UL << 1)
4332441cabbbSMichael Chan 	#define PORT_MAC_CFG_REQ_COS_FIELD_CFG_VLAN_PRI_SEL_OUTER          (0x1UL << 1)
4333441cabbbSMichael Chan 	#define PORT_MAC_CFG_REQ_COS_FIELD_CFG_VLAN_PRI_SEL_OUTERMOST      (0x2UL << 1)
4334441cabbbSMichael Chan 	#define PORT_MAC_CFG_REQ_COS_FIELD_CFG_VLAN_PRI_SEL_UNSPECIFIED    (0x3UL << 1)
4335441cabbbSMichael Chan 	#define PORT_MAC_CFG_REQ_COS_FIELD_CFG_VLAN_PRI_SEL_LAST          PORT_MAC_CFG_REQ_COS_FIELD_CFG_VLAN_PRI_SEL_UNSPECIFIED
4336441cabbbSMichael Chan 	#define PORT_MAC_CFG_REQ_COS_FIELD_CFG_T_VLAN_PRI_SEL_MASK       0x18UL
4337441cabbbSMichael Chan 	#define PORT_MAC_CFG_REQ_COS_FIELD_CFG_T_VLAN_PRI_SEL_SFT        3
4338441cabbbSMichael Chan 	#define PORT_MAC_CFG_REQ_COS_FIELD_CFG_T_VLAN_PRI_SEL_INNERMOST    (0x0UL << 3)
4339441cabbbSMichael Chan 	#define PORT_MAC_CFG_REQ_COS_FIELD_CFG_T_VLAN_PRI_SEL_OUTER        (0x1UL << 3)
4340441cabbbSMichael Chan 	#define PORT_MAC_CFG_REQ_COS_FIELD_CFG_T_VLAN_PRI_SEL_OUTERMOST    (0x2UL << 3)
4341441cabbbSMichael Chan 	#define PORT_MAC_CFG_REQ_COS_FIELD_CFG_T_VLAN_PRI_SEL_UNSPECIFIED  (0x3UL << 3)
4342441cabbbSMichael Chan 	#define PORT_MAC_CFG_REQ_COS_FIELD_CFG_T_VLAN_PRI_SEL_LAST        PORT_MAC_CFG_REQ_COS_FIELD_CFG_T_VLAN_PRI_SEL_UNSPECIFIED
4343441cabbbSMichael Chan 	#define PORT_MAC_CFG_REQ_COS_FIELD_CFG_DEFAULT_COS_MASK          0xe0UL
4344441cabbbSMichael Chan 	#define PORT_MAC_CFG_REQ_COS_FIELD_CFG_DEFAULT_COS_SFT           5
4345441cabbbSMichael Chan 	u8	unused_0[3];
434678eeadb8SMichael Chan 	__le32	ptp_freq_adj_ppb;
43472895c153SMichael Chan 	u8	unused_1[4];
43482895c153SMichael Chan 	__le64	ptp_adj_phase;
4349c0c050c5SMichael Chan };
4350c0c050c5SMichael Chan 
4351894aa69aSMichael Chan /* hwrm_port_mac_cfg_output (size:128b/16B) */
4352c0c050c5SMichael Chan struct hwrm_port_mac_cfg_output {
4353c0c050c5SMichael Chan 	__le16	error_code;
4354c0c050c5SMichael Chan 	__le16	req_type;
4355c0c050c5SMichael Chan 	__le16	seq_id;
4356c0c050c5SMichael Chan 	__le16	resp_len;
4357c0c050c5SMichael Chan 	__le16	mru;
4358c0c050c5SMichael Chan 	__le16	mtu;
4359c0c050c5SMichael Chan 	u8	ipg;
4360c0c050c5SMichael Chan 	u8	lpbk;
4361441cabbbSMichael Chan 	#define PORT_MAC_CFG_RESP_LPBK_NONE   0x0UL
4362441cabbbSMichael Chan 	#define PORT_MAC_CFG_RESP_LPBK_LOCAL  0x1UL
4363441cabbbSMichael Chan 	#define PORT_MAC_CFG_RESP_LPBK_REMOTE 0x2UL
4364894aa69aSMichael Chan 	#define PORT_MAC_CFG_RESP_LPBK_LAST  PORT_MAC_CFG_RESP_LPBK_REMOTE
4365c0c050c5SMichael Chan 	u8	unused_0;
4366c0c050c5SMichael Chan 	u8	valid;
4367c0c050c5SMichael Chan };
4368c0c050c5SMichael Chan 
4369894aa69aSMichael Chan /* hwrm_port_mac_ptp_qcfg_input (size:192b/24B) */
4370acb20054SMichael Chan struct hwrm_port_mac_ptp_qcfg_input {
4371acb20054SMichael Chan 	__le16	req_type;
4372acb20054SMichael Chan 	__le16	cmpl_ring;
4373acb20054SMichael Chan 	__le16	seq_id;
4374acb20054SMichael Chan 	__le16	target_id;
4375acb20054SMichael Chan 	__le64	resp_addr;
4376acb20054SMichael Chan 	__le16	port_id;
4377894aa69aSMichael Chan 	u8	unused_0[6];
4378acb20054SMichael Chan };
4379acb20054SMichael Chan 
438078eeadb8SMichael Chan /* hwrm_port_mac_ptp_qcfg_output (size:704b/88B) */
4381acb20054SMichael Chan struct hwrm_port_mac_ptp_qcfg_output {
4382acb20054SMichael Chan 	__le16	error_code;
4383acb20054SMichael Chan 	__le16	req_type;
4384acb20054SMichael Chan 	__le16	seq_id;
4385acb20054SMichael Chan 	__le16	resp_len;
4386acb20054SMichael Chan 	u8	flags;
4387acb20054SMichael Chan 	#define PORT_MAC_PTP_QCFG_RESP_FLAGS_DIRECT_ACCESS                       0x1UL
43884a50ddc2SMichael Chan 	#define PORT_MAC_PTP_QCFG_RESP_FLAGS_ONE_STEP_TX_TS                      0x4UL
438941136ab3SMichael Chan 	#define PORT_MAC_PTP_QCFG_RESP_FLAGS_HWRM_ACCESS                         0x8UL
439078eeadb8SMichael Chan 	#define PORT_MAC_PTP_QCFG_RESP_FLAGS_PARTIAL_DIRECT_ACCESS_REF_CLOCK     0x10UL
43912895c153SMichael Chan 	#define PORT_MAC_PTP_QCFG_RESP_FLAGS_RTC_CONFIGURED                      0x20UL
4392894aa69aSMichael Chan 	u8	unused_0[3];
4393acb20054SMichael Chan 	__le32	rx_ts_reg_off_lower;
4394acb20054SMichael Chan 	__le32	rx_ts_reg_off_upper;
4395acb20054SMichael Chan 	__le32	rx_ts_reg_off_seq_id;
4396acb20054SMichael Chan 	__le32	rx_ts_reg_off_src_id_0;
4397acb20054SMichael Chan 	__le32	rx_ts_reg_off_src_id_1;
4398acb20054SMichael Chan 	__le32	rx_ts_reg_off_src_id_2;
4399acb20054SMichael Chan 	__le32	rx_ts_reg_off_domain_id;
4400acb20054SMichael Chan 	__le32	rx_ts_reg_off_fifo;
4401acb20054SMichael Chan 	__le32	rx_ts_reg_off_fifo_adv;
4402acb20054SMichael Chan 	__le32	rx_ts_reg_off_granularity;
4403acb20054SMichael Chan 	__le32	tx_ts_reg_off_lower;
4404acb20054SMichael Chan 	__le32	tx_ts_reg_off_upper;
4405acb20054SMichael Chan 	__le32	tx_ts_reg_off_seq_id;
4406acb20054SMichael Chan 	__le32	tx_ts_reg_off_fifo;
4407acb20054SMichael Chan 	__le32	tx_ts_reg_off_granularity;
440878eeadb8SMichael Chan 	__le32	ts_ref_clock_reg_lower;
440978eeadb8SMichael Chan 	__le32	ts_ref_clock_reg_upper;
4410894aa69aSMichael Chan 	u8	unused_1[7];
4411acb20054SMichael Chan 	u8	valid;
4412acb20054SMichael Chan };
4413acb20054SMichael Chan 
44146fc92c33SMichael Chan /* tx_port_stats (size:3264b/408B) */
44156fc92c33SMichael Chan struct tx_port_stats {
44166fc92c33SMichael Chan 	__le64	tx_64b_frames;
44176fc92c33SMichael Chan 	__le64	tx_65b_127b_frames;
44186fc92c33SMichael Chan 	__le64	tx_128b_255b_frames;
44196fc92c33SMichael Chan 	__le64	tx_256b_511b_frames;
44206fc92c33SMichael Chan 	__le64	tx_512b_1023b_frames;
44216fc92c33SMichael Chan 	__le64	tx_1024b_1518b_frames;
44226fc92c33SMichael Chan 	__le64	tx_good_vlan_frames;
44236fc92c33SMichael Chan 	__le64	tx_1519b_2047b_frames;
44246fc92c33SMichael Chan 	__le64	tx_2048b_4095b_frames;
44256fc92c33SMichael Chan 	__le64	tx_4096b_9216b_frames;
44266fc92c33SMichael Chan 	__le64	tx_9217b_16383b_frames;
44276fc92c33SMichael Chan 	__le64	tx_good_frames;
44286fc92c33SMichael Chan 	__le64	tx_total_frames;
44296fc92c33SMichael Chan 	__le64	tx_ucast_frames;
44306fc92c33SMichael Chan 	__le64	tx_mcast_frames;
44316fc92c33SMichael Chan 	__le64	tx_bcast_frames;
44326fc92c33SMichael Chan 	__le64	tx_pause_frames;
44336fc92c33SMichael Chan 	__le64	tx_pfc_frames;
44346fc92c33SMichael Chan 	__le64	tx_jabber_frames;
44356fc92c33SMichael Chan 	__le64	tx_fcs_err_frames;
44366fc92c33SMichael Chan 	__le64	tx_control_frames;
44376fc92c33SMichael Chan 	__le64	tx_oversz_frames;
44386fc92c33SMichael Chan 	__le64	tx_single_dfrl_frames;
44396fc92c33SMichael Chan 	__le64	tx_multi_dfrl_frames;
44406fc92c33SMichael Chan 	__le64	tx_single_coll_frames;
44416fc92c33SMichael Chan 	__le64	tx_multi_coll_frames;
44426fc92c33SMichael Chan 	__le64	tx_late_coll_frames;
44436fc92c33SMichael Chan 	__le64	tx_excessive_coll_frames;
44446fc92c33SMichael Chan 	__le64	tx_frag_frames;
44456fc92c33SMichael Chan 	__le64	tx_err;
44466fc92c33SMichael Chan 	__le64	tx_tagged_frames;
44476fc92c33SMichael Chan 	__le64	tx_dbl_tagged_frames;
44486fc92c33SMichael Chan 	__le64	tx_runt_frames;
44496fc92c33SMichael Chan 	__le64	tx_fifo_underruns;
44506fc92c33SMichael Chan 	__le64	tx_pfc_ena_frames_pri0;
44516fc92c33SMichael Chan 	__le64	tx_pfc_ena_frames_pri1;
44526fc92c33SMichael Chan 	__le64	tx_pfc_ena_frames_pri2;
44536fc92c33SMichael Chan 	__le64	tx_pfc_ena_frames_pri3;
44546fc92c33SMichael Chan 	__le64	tx_pfc_ena_frames_pri4;
44556fc92c33SMichael Chan 	__le64	tx_pfc_ena_frames_pri5;
44566fc92c33SMichael Chan 	__le64	tx_pfc_ena_frames_pri6;
44576fc92c33SMichael Chan 	__le64	tx_pfc_ena_frames_pri7;
44586fc92c33SMichael Chan 	__le64	tx_eee_lpi_events;
44596fc92c33SMichael Chan 	__le64	tx_eee_lpi_duration;
44606fc92c33SMichael Chan 	__le64	tx_llfc_logical_msgs;
44616fc92c33SMichael Chan 	__le64	tx_hcfc_msgs;
44626fc92c33SMichael Chan 	__le64	tx_total_collisions;
44636fc92c33SMichael Chan 	__le64	tx_bytes;
44646fc92c33SMichael Chan 	__le64	tx_xthol_frames;
44656fc92c33SMichael Chan 	__le64	tx_stat_discard;
44666fc92c33SMichael Chan 	__le64	tx_stat_error;
44676fc92c33SMichael Chan };
44686fc92c33SMichael Chan 
44696fc92c33SMichael Chan /* rx_port_stats (size:4224b/528B) */
44706fc92c33SMichael Chan struct rx_port_stats {
44716fc92c33SMichael Chan 	__le64	rx_64b_frames;
44726fc92c33SMichael Chan 	__le64	rx_65b_127b_frames;
44736fc92c33SMichael Chan 	__le64	rx_128b_255b_frames;
44746fc92c33SMichael Chan 	__le64	rx_256b_511b_frames;
44756fc92c33SMichael Chan 	__le64	rx_512b_1023b_frames;
44766fc92c33SMichael Chan 	__le64	rx_1024b_1518b_frames;
44776fc92c33SMichael Chan 	__le64	rx_good_vlan_frames;
44786fc92c33SMichael Chan 	__le64	rx_1519b_2047b_frames;
44796fc92c33SMichael Chan 	__le64	rx_2048b_4095b_frames;
44806fc92c33SMichael Chan 	__le64	rx_4096b_9216b_frames;
44816fc92c33SMichael Chan 	__le64	rx_9217b_16383b_frames;
44826fc92c33SMichael Chan 	__le64	rx_total_frames;
44836fc92c33SMichael Chan 	__le64	rx_ucast_frames;
44846fc92c33SMichael Chan 	__le64	rx_mcast_frames;
44856fc92c33SMichael Chan 	__le64	rx_bcast_frames;
44866fc92c33SMichael Chan 	__le64	rx_fcs_err_frames;
44876fc92c33SMichael Chan 	__le64	rx_ctrl_frames;
44886fc92c33SMichael Chan 	__le64	rx_pause_frames;
44896fc92c33SMichael Chan 	__le64	rx_pfc_frames;
44906fc92c33SMichael Chan 	__le64	rx_unsupported_opcode_frames;
44916fc92c33SMichael Chan 	__le64	rx_unsupported_da_pausepfc_frames;
44926fc92c33SMichael Chan 	__le64	rx_wrong_sa_frames;
44936fc92c33SMichael Chan 	__le64	rx_align_err_frames;
44946fc92c33SMichael Chan 	__le64	rx_oor_len_frames;
44956fc92c33SMichael Chan 	__le64	rx_code_err_frames;
44966fc92c33SMichael Chan 	__le64	rx_false_carrier_frames;
44976fc92c33SMichael Chan 	__le64	rx_ovrsz_frames;
44986fc92c33SMichael Chan 	__le64	rx_jbr_frames;
44996fc92c33SMichael Chan 	__le64	rx_mtu_err_frames;
45006fc92c33SMichael Chan 	__le64	rx_match_crc_frames;
45016fc92c33SMichael Chan 	__le64	rx_promiscuous_frames;
45026fc92c33SMichael Chan 	__le64	rx_tagged_frames;
45036fc92c33SMichael Chan 	__le64	rx_double_tagged_frames;
45046fc92c33SMichael Chan 	__le64	rx_trunc_frames;
45056fc92c33SMichael Chan 	__le64	rx_good_frames;
45066fc92c33SMichael Chan 	__le64	rx_pfc_xon2xoff_frames_pri0;
45076fc92c33SMichael Chan 	__le64	rx_pfc_xon2xoff_frames_pri1;
45086fc92c33SMichael Chan 	__le64	rx_pfc_xon2xoff_frames_pri2;
45096fc92c33SMichael Chan 	__le64	rx_pfc_xon2xoff_frames_pri3;
45106fc92c33SMichael Chan 	__le64	rx_pfc_xon2xoff_frames_pri4;
45116fc92c33SMichael Chan 	__le64	rx_pfc_xon2xoff_frames_pri5;
45126fc92c33SMichael Chan 	__le64	rx_pfc_xon2xoff_frames_pri6;
45136fc92c33SMichael Chan 	__le64	rx_pfc_xon2xoff_frames_pri7;
45146fc92c33SMichael Chan 	__le64	rx_pfc_ena_frames_pri0;
45156fc92c33SMichael Chan 	__le64	rx_pfc_ena_frames_pri1;
45166fc92c33SMichael Chan 	__le64	rx_pfc_ena_frames_pri2;
45176fc92c33SMichael Chan 	__le64	rx_pfc_ena_frames_pri3;
45186fc92c33SMichael Chan 	__le64	rx_pfc_ena_frames_pri4;
45196fc92c33SMichael Chan 	__le64	rx_pfc_ena_frames_pri5;
45206fc92c33SMichael Chan 	__le64	rx_pfc_ena_frames_pri6;
45216fc92c33SMichael Chan 	__le64	rx_pfc_ena_frames_pri7;
45226fc92c33SMichael Chan 	__le64	rx_sch_crc_err_frames;
45236fc92c33SMichael Chan 	__le64	rx_undrsz_frames;
45246fc92c33SMichael Chan 	__le64	rx_frag_frames;
45256fc92c33SMichael Chan 	__le64	rx_eee_lpi_events;
45266fc92c33SMichael Chan 	__le64	rx_eee_lpi_duration;
45276fc92c33SMichael Chan 	__le64	rx_llfc_physical_msgs;
45286fc92c33SMichael Chan 	__le64	rx_llfc_logical_msgs;
45296fc92c33SMichael Chan 	__le64	rx_llfc_msgs_with_crc_err;
45306fc92c33SMichael Chan 	__le64	rx_hcfc_msgs;
45316fc92c33SMichael Chan 	__le64	rx_hcfc_msgs_with_crc_err;
45326fc92c33SMichael Chan 	__le64	rx_bytes;
45336fc92c33SMichael Chan 	__le64	rx_runt_bytes;
45346fc92c33SMichael Chan 	__le64	rx_runt_frames;
45356fc92c33SMichael Chan 	__le64	rx_stat_discard;
45366fc92c33SMichael Chan 	__le64	rx_stat_err;
45376fc92c33SMichael Chan };
45386fc92c33SMichael Chan 
4539894aa69aSMichael Chan /* hwrm_port_qstats_input (size:320b/40B) */
4540c0c050c5SMichael Chan struct hwrm_port_qstats_input {
4541c0c050c5SMichael Chan 	__le16	req_type;
4542c0c050c5SMichael Chan 	__le16	cmpl_ring;
4543c0c050c5SMichael Chan 	__le16	seq_id;
4544c0c050c5SMichael Chan 	__le16	target_id;
4545c0c050c5SMichael Chan 	__le64	resp_addr;
4546c0c050c5SMichael Chan 	__le16	port_id;
4547460c2577SMichael Chan 	u8	flags;
4548460c2577SMichael Chan 	#define PORT_QSTATS_REQ_FLAGS_COUNTER_MASK     0x1UL
4549460c2577SMichael Chan 	u8	unused_0[5];
4550c0c050c5SMichael Chan 	__le64	tx_stat_host_addr;
4551c0c050c5SMichael Chan 	__le64	rx_stat_host_addr;
4552c0c050c5SMichael Chan };
4553c0c050c5SMichael Chan 
4554894aa69aSMichael Chan /* hwrm_port_qstats_output (size:128b/16B) */
4555c0c050c5SMichael Chan struct hwrm_port_qstats_output {
4556c0c050c5SMichael Chan 	__le16	error_code;
4557c0c050c5SMichael Chan 	__le16	req_type;
4558c0c050c5SMichael Chan 	__le16	seq_id;
4559c0c050c5SMichael Chan 	__le16	resp_len;
4560c193554eSMichael Chan 	__le16	tx_stat_size;
4561c193554eSMichael Chan 	__le16	rx_stat_size;
4562894aa69aSMichael Chan 	u8	unused_0[3];
4563c0c050c5SMichael Chan 	u8	valid;
4564c0c050c5SMichael Chan };
4565c0c050c5SMichael Chan 
45666fc92c33SMichael Chan /* tx_port_stats_ext (size:2048b/256B) */
45676fc92c33SMichael Chan struct tx_port_stats_ext {
45686fc92c33SMichael Chan 	__le64	tx_bytes_cos0;
45696fc92c33SMichael Chan 	__le64	tx_bytes_cos1;
45706fc92c33SMichael Chan 	__le64	tx_bytes_cos2;
45716fc92c33SMichael Chan 	__le64	tx_bytes_cos3;
45726fc92c33SMichael Chan 	__le64	tx_bytes_cos4;
45736fc92c33SMichael Chan 	__le64	tx_bytes_cos5;
45746fc92c33SMichael Chan 	__le64	tx_bytes_cos6;
45756fc92c33SMichael Chan 	__le64	tx_bytes_cos7;
45766fc92c33SMichael Chan 	__le64	tx_packets_cos0;
45776fc92c33SMichael Chan 	__le64	tx_packets_cos1;
45786fc92c33SMichael Chan 	__le64	tx_packets_cos2;
45796fc92c33SMichael Chan 	__le64	tx_packets_cos3;
45806fc92c33SMichael Chan 	__le64	tx_packets_cos4;
45816fc92c33SMichael Chan 	__le64	tx_packets_cos5;
45826fc92c33SMichael Chan 	__le64	tx_packets_cos6;
45836fc92c33SMichael Chan 	__le64	tx_packets_cos7;
45846fc92c33SMichael Chan 	__le64	pfc_pri0_tx_duration_us;
45856fc92c33SMichael Chan 	__le64	pfc_pri0_tx_transitions;
45866fc92c33SMichael Chan 	__le64	pfc_pri1_tx_duration_us;
45876fc92c33SMichael Chan 	__le64	pfc_pri1_tx_transitions;
45886fc92c33SMichael Chan 	__le64	pfc_pri2_tx_duration_us;
45896fc92c33SMichael Chan 	__le64	pfc_pri2_tx_transitions;
45906fc92c33SMichael Chan 	__le64	pfc_pri3_tx_duration_us;
45916fc92c33SMichael Chan 	__le64	pfc_pri3_tx_transitions;
45926fc92c33SMichael Chan 	__le64	pfc_pri4_tx_duration_us;
45936fc92c33SMichael Chan 	__le64	pfc_pri4_tx_transitions;
45946fc92c33SMichael Chan 	__le64	pfc_pri5_tx_duration_us;
45956fc92c33SMichael Chan 	__le64	pfc_pri5_tx_transitions;
45966fc92c33SMichael Chan 	__le64	pfc_pri6_tx_duration_us;
45976fc92c33SMichael Chan 	__le64	pfc_pri6_tx_transitions;
45986fc92c33SMichael Chan 	__le64	pfc_pri7_tx_duration_us;
45996fc92c33SMichael Chan 	__le64	pfc_pri7_tx_transitions;
46006fc92c33SMichael Chan };
46016fc92c33SMichael Chan 
460221e70778SMichael Chan /* rx_port_stats_ext (size:3776b/472B) */
46036fc92c33SMichael Chan struct rx_port_stats_ext {
46046fc92c33SMichael Chan 	__le64	link_down_events;
46056fc92c33SMichael Chan 	__le64	continuous_pause_events;
46066fc92c33SMichael Chan 	__le64	resume_pause_events;
46076fc92c33SMichael Chan 	__le64	continuous_roce_pause_events;
46086fc92c33SMichael Chan 	__le64	resume_roce_pause_events;
46096fc92c33SMichael Chan 	__le64	rx_bytes_cos0;
46106fc92c33SMichael Chan 	__le64	rx_bytes_cos1;
46116fc92c33SMichael Chan 	__le64	rx_bytes_cos2;
46126fc92c33SMichael Chan 	__le64	rx_bytes_cos3;
46136fc92c33SMichael Chan 	__le64	rx_bytes_cos4;
46146fc92c33SMichael Chan 	__le64	rx_bytes_cos5;
46156fc92c33SMichael Chan 	__le64	rx_bytes_cos6;
46166fc92c33SMichael Chan 	__le64	rx_bytes_cos7;
46176fc92c33SMichael Chan 	__le64	rx_packets_cos0;
46186fc92c33SMichael Chan 	__le64	rx_packets_cos1;
46196fc92c33SMichael Chan 	__le64	rx_packets_cos2;
46206fc92c33SMichael Chan 	__le64	rx_packets_cos3;
46216fc92c33SMichael Chan 	__le64	rx_packets_cos4;
46226fc92c33SMichael Chan 	__le64	rx_packets_cos5;
46236fc92c33SMichael Chan 	__le64	rx_packets_cos6;
46246fc92c33SMichael Chan 	__le64	rx_packets_cos7;
46256fc92c33SMichael Chan 	__le64	pfc_pri0_rx_duration_us;
46266fc92c33SMichael Chan 	__le64	pfc_pri0_rx_transitions;
46276fc92c33SMichael Chan 	__le64	pfc_pri1_rx_duration_us;
46286fc92c33SMichael Chan 	__le64	pfc_pri1_rx_transitions;
46296fc92c33SMichael Chan 	__le64	pfc_pri2_rx_duration_us;
46306fc92c33SMichael Chan 	__le64	pfc_pri2_rx_transitions;
46316fc92c33SMichael Chan 	__le64	pfc_pri3_rx_duration_us;
46326fc92c33SMichael Chan 	__le64	pfc_pri3_rx_transitions;
46336fc92c33SMichael Chan 	__le64	pfc_pri4_rx_duration_us;
46346fc92c33SMichael Chan 	__le64	pfc_pri4_rx_transitions;
46356fc92c33SMichael Chan 	__le64	pfc_pri5_rx_duration_us;
46366fc92c33SMichael Chan 	__le64	pfc_pri5_rx_transitions;
46376fc92c33SMichael Chan 	__le64	pfc_pri6_rx_duration_us;
46386fc92c33SMichael Chan 	__le64	pfc_pri6_rx_transitions;
46396fc92c33SMichael Chan 	__le64	pfc_pri7_rx_duration_us;
46406fc92c33SMichael Chan 	__le64	pfc_pri7_rx_transitions;
46414a50ddc2SMichael Chan 	__le64	rx_bits;
46424a50ddc2SMichael Chan 	__le64	rx_buffer_passed_threshold;
46434a50ddc2SMichael Chan 	__le64	rx_pcs_symbol_err;
46444a50ddc2SMichael Chan 	__le64	rx_corrected_bits;
46452792b5b9SMichael Chan 	__le64	rx_discard_bytes_cos0;
46462792b5b9SMichael Chan 	__le64	rx_discard_bytes_cos1;
46472792b5b9SMichael Chan 	__le64	rx_discard_bytes_cos2;
46482792b5b9SMichael Chan 	__le64	rx_discard_bytes_cos3;
46492792b5b9SMichael Chan 	__le64	rx_discard_bytes_cos4;
46502792b5b9SMichael Chan 	__le64	rx_discard_bytes_cos5;
46512792b5b9SMichael Chan 	__le64	rx_discard_bytes_cos6;
46522792b5b9SMichael Chan 	__le64	rx_discard_bytes_cos7;
46532792b5b9SMichael Chan 	__le64	rx_discard_packets_cos0;
46542792b5b9SMichael Chan 	__le64	rx_discard_packets_cos1;
46552792b5b9SMichael Chan 	__le64	rx_discard_packets_cos2;
46562792b5b9SMichael Chan 	__le64	rx_discard_packets_cos3;
46572792b5b9SMichael Chan 	__le64	rx_discard_packets_cos4;
46582792b5b9SMichael Chan 	__le64	rx_discard_packets_cos5;
46592792b5b9SMichael Chan 	__le64	rx_discard_packets_cos6;
46602792b5b9SMichael Chan 	__le64	rx_discard_packets_cos7;
466121e70778SMichael Chan 	__le64	rx_fec_corrected_blocks;
466221e70778SMichael Chan 	__le64	rx_fec_uncorrectable_blocks;
46636fc92c33SMichael Chan };
46646fc92c33SMichael Chan 
4665d4f52de0SMichael Chan /* hwrm_port_qstats_ext_input (size:320b/40B) */
4666d4f52de0SMichael Chan struct hwrm_port_qstats_ext_input {
4667d4f52de0SMichael Chan 	__le16	req_type;
4668d4f52de0SMichael Chan 	__le16	cmpl_ring;
4669d4f52de0SMichael Chan 	__le16	seq_id;
4670d4f52de0SMichael Chan 	__le16	target_id;
4671d4f52de0SMichael Chan 	__le64	resp_addr;
4672d4f52de0SMichael Chan 	__le16	port_id;
4673d4f52de0SMichael Chan 	__le16	tx_stat_size;
4674d4f52de0SMichael Chan 	__le16	rx_stat_size;
4675460c2577SMichael Chan 	u8	flags;
4676460c2577SMichael Chan 	#define PORT_QSTATS_EXT_REQ_FLAGS_COUNTER_MASK     0x1UL
4677460c2577SMichael Chan 	u8	unused_0;
4678d4f52de0SMichael Chan 	__le64	tx_stat_host_addr;
4679d4f52de0SMichael Chan 	__le64	rx_stat_host_addr;
4680d4f52de0SMichael Chan };
4681d4f52de0SMichael Chan 
4682d4f52de0SMichael Chan /* hwrm_port_qstats_ext_output (size:128b/16B) */
4683d4f52de0SMichael Chan struct hwrm_port_qstats_ext_output {
4684d4f52de0SMichael Chan 	__le16	error_code;
4685d4f52de0SMichael Chan 	__le16	req_type;
4686d4f52de0SMichael Chan 	__le16	seq_id;
4687d4f52de0SMichael Chan 	__le16	resp_len;
4688d4f52de0SMichael Chan 	__le16	tx_stat_size;
4689d4f52de0SMichael Chan 	__le16	rx_stat_size;
46906fc92c33SMichael Chan 	__le16	total_active_cos_queues;
469131d357c0SMichael Chan 	u8	flags;
469231d357c0SMichael Chan 	#define PORT_QSTATS_EXT_RESP_FLAGS_CLEAR_ROCE_COUNTERS_SUPPORTED     0x1UL
4693d4f52de0SMichael Chan 	u8	valid;
4694d4f52de0SMichael Chan };
4695d4f52de0SMichael Chan 
4696894aa69aSMichael Chan /* hwrm_port_lpbk_qstats_input (size:128b/16B) */
4697c0c050c5SMichael Chan struct hwrm_port_lpbk_qstats_input {
4698c0c050c5SMichael Chan 	__le16	req_type;
4699c0c050c5SMichael Chan 	__le16	cmpl_ring;
4700c0c050c5SMichael Chan 	__le16	seq_id;
4701c0c050c5SMichael Chan 	__le16	target_id;
4702c0c050c5SMichael Chan 	__le64	resp_addr;
4703c0c050c5SMichael Chan };
4704c0c050c5SMichael Chan 
4705894aa69aSMichael Chan /* hwrm_port_lpbk_qstats_output (size:768b/96B) */
4706c0c050c5SMichael Chan struct hwrm_port_lpbk_qstats_output {
4707c0c050c5SMichael Chan 	__le16	error_code;
4708c0c050c5SMichael Chan 	__le16	req_type;
4709c0c050c5SMichael Chan 	__le16	seq_id;
4710c0c050c5SMichael Chan 	__le16	resp_len;
4711c0c050c5SMichael Chan 	__le64	lpbk_ucast_frames;
4712c0c050c5SMichael Chan 	__le64	lpbk_mcast_frames;
4713c0c050c5SMichael Chan 	__le64	lpbk_bcast_frames;
4714c0c050c5SMichael Chan 	__le64	lpbk_ucast_bytes;
4715c0c050c5SMichael Chan 	__le64	lpbk_mcast_bytes;
4716c0c050c5SMichael Chan 	__le64	lpbk_bcast_bytes;
4717c193554eSMichael Chan 	__le64	tx_stat_discard;
4718c193554eSMichael Chan 	__le64	tx_stat_error;
4719c193554eSMichael Chan 	__le64	rx_stat_discard;
4720c193554eSMichael Chan 	__le64	rx_stat_error;
4721894aa69aSMichael Chan 	u8	unused_0[7];
4722c0c050c5SMichael Chan 	u8	valid;
4723c0c050c5SMichael Chan };
4724c0c050c5SMichael Chan 
47259d6b648cSMichael Chan /* hwrm_port_ecn_qstats_input (size:256b/32B) */
47269d6b648cSMichael Chan struct hwrm_port_ecn_qstats_input {
47279d6b648cSMichael Chan 	__le16	req_type;
47289d6b648cSMichael Chan 	__le16	cmpl_ring;
47299d6b648cSMichael Chan 	__le16	seq_id;
47309d6b648cSMichael Chan 	__le16	target_id;
47319d6b648cSMichael Chan 	__le64	resp_addr;
47329d6b648cSMichael Chan 	__le16	port_id;
47339d6b648cSMichael Chan 	__le16	ecn_stat_buf_size;
47349d6b648cSMichael Chan 	u8	flags;
47359d6b648cSMichael Chan 	#define PORT_ECN_QSTATS_REQ_FLAGS_COUNTER_MASK     0x1UL
47369d6b648cSMichael Chan 	u8	unused_0[3];
47379d6b648cSMichael Chan 	__le64	ecn_stat_host_addr;
47389d6b648cSMichael Chan };
47399d6b648cSMichael Chan 
47409d6b648cSMichael Chan /* hwrm_port_ecn_qstats_output (size:128b/16B) */
47419d6b648cSMichael Chan struct hwrm_port_ecn_qstats_output {
47429d6b648cSMichael Chan 	__le16	error_code;
47439d6b648cSMichael Chan 	__le16	req_type;
47449d6b648cSMichael Chan 	__le16	seq_id;
47459d6b648cSMichael Chan 	__le16	resp_len;
47469d6b648cSMichael Chan 	__le16	ecn_stat_buf_size;
47479d6b648cSMichael Chan 	u8	mark_en;
47489d6b648cSMichael Chan 	u8	unused_0[4];
47499d6b648cSMichael Chan 	u8	valid;
47509d6b648cSMichael Chan };
47519d6b648cSMichael Chan 
47529d6b648cSMichael Chan /* port_stats_ecn (size:512b/64B) */
47539d6b648cSMichael Chan struct port_stats_ecn {
47549d6b648cSMichael Chan 	__le64	mark_cnt_cos0;
47559d6b648cSMichael Chan 	__le64	mark_cnt_cos1;
47569d6b648cSMichael Chan 	__le64	mark_cnt_cos2;
47579d6b648cSMichael Chan 	__le64	mark_cnt_cos3;
47589d6b648cSMichael Chan 	__le64	mark_cnt_cos4;
47599d6b648cSMichael Chan 	__le64	mark_cnt_cos5;
47609d6b648cSMichael Chan 	__le64	mark_cnt_cos6;
47619d6b648cSMichael Chan 	__le64	mark_cnt_cos7;
47629d6b648cSMichael Chan };
47639d6b648cSMichael Chan 
4764894aa69aSMichael Chan /* hwrm_port_clr_stats_input (size:192b/24B) */
4765c0c050c5SMichael Chan struct hwrm_port_clr_stats_input {
4766c0c050c5SMichael Chan 	__le16	req_type;
4767c0c050c5SMichael Chan 	__le16	cmpl_ring;
4768c0c050c5SMichael Chan 	__le16	seq_id;
4769c0c050c5SMichael Chan 	__le16	target_id;
4770c0c050c5SMichael Chan 	__le64	resp_addr;
4771c0c050c5SMichael Chan 	__le16	port_id;
477231d357c0SMichael Chan 	u8	flags;
477331d357c0SMichael Chan 	#define PORT_CLR_STATS_REQ_FLAGS_ROCE_COUNTERS     0x1UL
477431d357c0SMichael Chan 	u8	unused_0[5];
4775c0c050c5SMichael Chan };
4776c0c050c5SMichael Chan 
4777894aa69aSMichael Chan /* hwrm_port_clr_stats_output (size:128b/16B) */
4778c0c050c5SMichael Chan struct hwrm_port_clr_stats_output {
4779c0c050c5SMichael Chan 	__le16	error_code;
4780c0c050c5SMichael Chan 	__le16	req_type;
4781c0c050c5SMichael Chan 	__le16	seq_id;
4782c0c050c5SMichael Chan 	__le16	resp_len;
4783894aa69aSMichael Chan 	u8	unused_0[7];
4784c0c050c5SMichael Chan 	u8	valid;
4785c0c050c5SMichael Chan };
4786c0c050c5SMichael Chan 
4787894aa69aSMichael Chan /* hwrm_port_lpbk_clr_stats_input (size:128b/16B) */
4788c0c050c5SMichael Chan struct hwrm_port_lpbk_clr_stats_input {
4789c0c050c5SMichael Chan 	__le16	req_type;
4790c0c050c5SMichael Chan 	__le16	cmpl_ring;
4791c0c050c5SMichael Chan 	__le16	seq_id;
4792c0c050c5SMichael Chan 	__le16	target_id;
4793c0c050c5SMichael Chan 	__le64	resp_addr;
4794c0c050c5SMichael Chan };
4795c0c050c5SMichael Chan 
4796894aa69aSMichael Chan /* hwrm_port_lpbk_clr_stats_output (size:128b/16B) */
4797c0c050c5SMichael Chan struct hwrm_port_lpbk_clr_stats_output {
4798c0c050c5SMichael Chan 	__le16	error_code;
4799c0c050c5SMichael Chan 	__le16	req_type;
4800c0c050c5SMichael Chan 	__le16	seq_id;
4801c0c050c5SMichael Chan 	__le16	resp_len;
4802894aa69aSMichael Chan 	u8	unused_0[7];
4803c0c050c5SMichael Chan 	u8	valid;
4804c0c050c5SMichael Chan };
4805c0c050c5SMichael Chan 
4806fbfee257SMichael Chan /* hwrm_port_ts_query_input (size:320b/40B) */
48074a50ddc2SMichael Chan struct hwrm_port_ts_query_input {
48084a50ddc2SMichael Chan 	__le16	req_type;
48094a50ddc2SMichael Chan 	__le16	cmpl_ring;
48104a50ddc2SMichael Chan 	__le16	seq_id;
48114a50ddc2SMichael Chan 	__le16	target_id;
48124a50ddc2SMichael Chan 	__le64	resp_addr;
48134a50ddc2SMichael Chan 	__le32	flags;
48144a50ddc2SMichael Chan 	#define PORT_TS_QUERY_REQ_FLAGS_PATH             0x1UL
48154a50ddc2SMichael Chan 	#define PORT_TS_QUERY_REQ_FLAGS_PATH_TX            0x0UL
48164a50ddc2SMichael Chan 	#define PORT_TS_QUERY_REQ_FLAGS_PATH_RX            0x1UL
48174a50ddc2SMichael Chan 	#define PORT_TS_QUERY_REQ_FLAGS_PATH_LAST         PORT_TS_QUERY_REQ_FLAGS_PATH_RX
48184a50ddc2SMichael Chan 	#define PORT_TS_QUERY_REQ_FLAGS_CURRENT_TIME     0x2UL
48194a50ddc2SMichael Chan 	__le16	port_id;
48204a50ddc2SMichael Chan 	u8	unused_0[2];
482178eeadb8SMichael Chan 	__le16	enables;
482278eeadb8SMichael Chan 	#define PORT_TS_QUERY_REQ_ENABLES_TS_REQ_TIMEOUT     0x1UL
482378eeadb8SMichael Chan 	#define PORT_TS_QUERY_REQ_ENABLES_PTP_SEQ_ID         0x2UL
4824fbfee257SMichael Chan 	#define PORT_TS_QUERY_REQ_ENABLES_PTP_HDR_OFFSET     0x4UL
482578eeadb8SMichael Chan 	__le16	ts_req_timeout;
482678eeadb8SMichael Chan 	__le32	ptp_seq_id;
4827fbfee257SMichael Chan 	__le16	ptp_hdr_offset;
4828fbfee257SMichael Chan 	u8	unused_1[6];
48294a50ddc2SMichael Chan };
48304a50ddc2SMichael Chan 
48314a50ddc2SMichael Chan /* hwrm_port_ts_query_output (size:192b/24B) */
48324a50ddc2SMichael Chan struct hwrm_port_ts_query_output {
48334a50ddc2SMichael Chan 	__le16	error_code;
48344a50ddc2SMichael Chan 	__le16	req_type;
48354a50ddc2SMichael Chan 	__le16	seq_id;
48364a50ddc2SMichael Chan 	__le16	resp_len;
48374a50ddc2SMichael Chan 	__le64	ptp_msg_ts;
48384a50ddc2SMichael Chan 	__le16	ptp_msg_seqid;
48394a50ddc2SMichael Chan 	u8	unused_0[5];
48404a50ddc2SMichael Chan 	u8	valid;
48414a50ddc2SMichael Chan };
48424a50ddc2SMichael Chan 
4843894aa69aSMichael Chan /* hwrm_port_phy_qcaps_input (size:192b/24B) */
484411f15ed3SMichael Chan struct hwrm_port_phy_qcaps_input {
484511f15ed3SMichael Chan 	__le16	req_type;
484611f15ed3SMichael Chan 	__le16	cmpl_ring;
484711f15ed3SMichael Chan 	__le16	seq_id;
484811f15ed3SMichael Chan 	__le16	target_id;
484911f15ed3SMichael Chan 	__le64	resp_addr;
485011f15ed3SMichael Chan 	__le16	port_id;
4851894aa69aSMichael Chan 	u8	unused_0[6];
485211f15ed3SMichael Chan };
485311f15ed3SMichael Chan 
4854bfc6e5fbSMichael Chan /* hwrm_port_phy_qcaps_output (size:256b/32B) */
485511f15ed3SMichael Chan struct hwrm_port_phy_qcaps_output {
485611f15ed3SMichael Chan 	__le16	error_code;
485711f15ed3SMichael Chan 	__le16	req_type;
485811f15ed3SMichael Chan 	__le16	seq_id;
485911f15ed3SMichael Chan 	__le16	resp_len;
4860acb20054SMichael Chan 	u8	flags;
4861acb20054SMichael Chan 	#define PORT_PHY_QCAPS_RESP_FLAGS_EEE_SUPPORTED                    0x1UL
48626fc92c33SMichael Chan 	#define PORT_PHY_QCAPS_RESP_FLAGS_EXTERNAL_LPBK_SUPPORTED          0x2UL
486341136ab3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_FLAGS_AUTONEG_LPBK_SUPPORTED           0x4UL
486441136ab3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_FLAGS_SHARED_PHY_CFG_SUPPORTED         0x8UL
4865bfc6e5fbSMichael Chan 	#define PORT_PHY_QCAPS_RESP_FLAGS_CUMULATIVE_COUNTERS_ON_RESET     0x10UL
48669d6b648cSMichael Chan 	#define PORT_PHY_QCAPS_RESP_FLAGS_LOCAL_LPBK_NOT_SUPPORTED         0x20UL
486716db6323SMichael Chan 	#define PORT_PHY_QCAPS_RESP_FLAGS_FW_MANAGED_LINK_DOWN             0x40UL
486831f67c2eSMichael Chan 	#define PORT_PHY_QCAPS_RESP_FLAGS_NO_FCS                           0x80UL
48696a17eb27SMichael Chan 	u8	port_cnt;
48706a17eb27SMichael Chan 	#define PORT_PHY_QCAPS_RESP_PORT_CNT_UNKNOWN 0x0UL
48716a17eb27SMichael Chan 	#define PORT_PHY_QCAPS_RESP_PORT_CNT_1       0x1UL
48726a17eb27SMichael Chan 	#define PORT_PHY_QCAPS_RESP_PORT_CNT_2       0x2UL
48736a17eb27SMichael Chan 	#define PORT_PHY_QCAPS_RESP_PORT_CNT_3       0x3UL
48746a17eb27SMichael Chan 	#define PORT_PHY_QCAPS_RESP_PORT_CNT_4       0x4UL
48752895c153SMichael Chan 	#define PORT_PHY_QCAPS_RESP_PORT_CNT_12      0xcUL
48762895c153SMichael Chan 	#define PORT_PHY_QCAPS_RESP_PORT_CNT_LAST   PORT_PHY_QCAPS_RESP_PORT_CNT_12
487711f15ed3SMichael Chan 	__le16	supported_speeds_force_mode;
487811f15ed3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_100MBHD     0x1UL
487911f15ed3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_100MB       0x2UL
488011f15ed3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_1GBHD       0x4UL
488111f15ed3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_1GB         0x8UL
488211f15ed3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_2GB         0x10UL
488311f15ed3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_2_5GB       0x20UL
488411f15ed3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_10GB        0x40UL
488511f15ed3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_20GB        0x80UL
488611f15ed3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_25GB        0x100UL
488711f15ed3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_40GB        0x200UL
488811f15ed3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_50GB        0x400UL
488911f15ed3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_100GB       0x800UL
489011f15ed3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_10MBHD      0x1000UL
489111f15ed3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_10MB        0x2000UL
489211f15ed3SMichael Chan 	__le16	supported_speeds_auto_mode;
489311f15ed3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_100MBHD     0x1UL
489411f15ed3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_100MB       0x2UL
489511f15ed3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_1GBHD       0x4UL
489611f15ed3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_1GB         0x8UL
489711f15ed3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_2GB         0x10UL
489811f15ed3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_2_5GB       0x20UL
489911f15ed3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_10GB        0x40UL
490011f15ed3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_20GB        0x80UL
490111f15ed3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_25GB        0x100UL
490211f15ed3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_40GB        0x200UL
490311f15ed3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_50GB        0x400UL
490411f15ed3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_100GB       0x800UL
490511f15ed3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_10MBHD      0x1000UL
490611f15ed3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_10MB        0x2000UL
490711f15ed3SMichael Chan 	__le16	supported_speeds_eee_mode;
490811f15ed3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_EEE_MODE_RSVD1     0x1UL
490911f15ed3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_EEE_MODE_100MB     0x2UL
491011f15ed3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_EEE_MODE_RSVD2     0x4UL
491111f15ed3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_EEE_MODE_1GB       0x8UL
491211f15ed3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_EEE_MODE_RSVD3     0x10UL
491311f15ed3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_EEE_MODE_RSVD4     0x20UL
491411f15ed3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_EEE_MODE_10GB      0x40UL
491511f15ed3SMichael Chan 	__le32	tx_lpi_timer_low;
491611f15ed3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_TX_LPI_TIMER_LOW_MASK 0xffffffUL
491711f15ed3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_TX_LPI_TIMER_LOW_SFT 0
491811f15ed3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_RSVD2_MASK           0xff000000UL
491911f15ed3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_RSVD2_SFT            24
492011f15ed3SMichael Chan 	__le32	valid_tx_lpi_timer_high;
492111f15ed3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_TX_LPI_TIMER_HIGH_MASK 0xffffffUL
492211f15ed3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_TX_LPI_TIMER_HIGH_SFT 0
4923bfc6e5fbSMichael Chan 	#define PORT_PHY_QCAPS_RESP_RSVD_MASK             0xff000000UL
4924bfc6e5fbSMichael Chan 	#define PORT_PHY_QCAPS_RESP_RSVD_SFT              24
4925bfc6e5fbSMichael Chan 	__le16	supported_pam4_speeds_auto_mode;
4926bfc6e5fbSMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_PAM4_SPEEDS_AUTO_MODE_50G      0x1UL
4927bfc6e5fbSMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_PAM4_SPEEDS_AUTO_MODE_100G     0x2UL
4928bfc6e5fbSMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_PAM4_SPEEDS_AUTO_MODE_200G     0x4UL
4929bfc6e5fbSMichael Chan 	__le16	supported_pam4_speeds_force_mode;
4930bfc6e5fbSMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_PAM4_SPEEDS_FORCE_MODE_50G      0x1UL
4931bfc6e5fbSMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_PAM4_SPEEDS_FORCE_MODE_100G     0x2UL
4932bfc6e5fbSMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_PAM4_SPEEDS_FORCE_MODE_200G     0x4UL
493321e70778SMichael Chan 	__le16	flags2;
493421e70778SMichael Chan 	#define PORT_PHY_QCAPS_RESP_FLAGS2_PAUSE_UNSUPPORTED       0x1UL
493521e70778SMichael Chan 	#define PORT_PHY_QCAPS_RESP_FLAGS2_PFC_UNSUPPORTED         0x2UL
493684a911dbSMichael Chan 	#define PORT_PHY_QCAPS_RESP_FLAGS2_BANK_ADDR_SUPPORTED     0x4UL
49372895c153SMichael Chan 	u8	internal_port_cnt;
4938bfc6e5fbSMichael Chan 	u8	valid;
493911f15ed3SMichael Chan };
494011f15ed3SMichael Chan 
4941894aa69aSMichael Chan /* hwrm_port_phy_i2c_read_input (size:320b/40B) */
494242ee18feSAjit Khaparde struct hwrm_port_phy_i2c_read_input {
494342ee18feSAjit Khaparde 	__le16	req_type;
494442ee18feSAjit Khaparde 	__le16	cmpl_ring;
494542ee18feSAjit Khaparde 	__le16	seq_id;
494642ee18feSAjit Khaparde 	__le16	target_id;
494742ee18feSAjit Khaparde 	__le64	resp_addr;
494842ee18feSAjit Khaparde 	__le32	flags;
494942ee18feSAjit Khaparde 	__le32	enables;
495042ee18feSAjit Khaparde 	#define PORT_PHY_I2C_READ_REQ_ENABLES_PAGE_OFFSET     0x1UL
495184a911dbSMichael Chan 	#define PORT_PHY_I2C_READ_REQ_ENABLES_BANK_NUMBER     0x2UL
495242ee18feSAjit Khaparde 	__le16	port_id;
495342ee18feSAjit Khaparde 	u8	i2c_slave_addr;
495484a911dbSMichael Chan 	u8	bank_number;
495542ee18feSAjit Khaparde 	__le16	page_number;
495642ee18feSAjit Khaparde 	__le16	page_offset;
495742ee18feSAjit Khaparde 	u8	data_length;
495842ee18feSAjit Khaparde 	u8	unused_1[7];
495942ee18feSAjit Khaparde };
496042ee18feSAjit Khaparde 
4961894aa69aSMichael Chan /* hwrm_port_phy_i2c_read_output (size:640b/80B) */
496242ee18feSAjit Khaparde struct hwrm_port_phy_i2c_read_output {
496342ee18feSAjit Khaparde 	__le16	error_code;
496442ee18feSAjit Khaparde 	__le16	req_type;
496542ee18feSAjit Khaparde 	__le16	seq_id;
496642ee18feSAjit Khaparde 	__le16	resp_len;
496742ee18feSAjit Khaparde 	__le32	data[16];
4968894aa69aSMichael Chan 	u8	unused_0[7];
496942ee18feSAjit Khaparde 	u8	valid;
497042ee18feSAjit Khaparde };
497142ee18feSAjit Khaparde 
49723322479eSMichael Chan /* hwrm_port_phy_mdio_write_input (size:320b/40B) */
49733322479eSMichael Chan struct hwrm_port_phy_mdio_write_input {
49743322479eSMichael Chan 	__le16	req_type;
49753322479eSMichael Chan 	__le16	cmpl_ring;
49763322479eSMichael Chan 	__le16	seq_id;
49773322479eSMichael Chan 	__le16	target_id;
49783322479eSMichael Chan 	__le64	resp_addr;
49793322479eSMichael Chan 	__le32	unused_0[2];
49803322479eSMichael Chan 	__le16	port_id;
49813322479eSMichael Chan 	u8	phy_addr;
49823322479eSMichael Chan 	u8	dev_addr;
49833322479eSMichael Chan 	__le16	reg_addr;
49843322479eSMichael Chan 	__le16	reg_data;
49853322479eSMichael Chan 	u8	cl45_mdio;
49863322479eSMichael Chan 	u8	unused_1[7];
49873322479eSMichael Chan };
49883322479eSMichael Chan 
49893322479eSMichael Chan /* hwrm_port_phy_mdio_write_output (size:128b/16B) */
49903322479eSMichael Chan struct hwrm_port_phy_mdio_write_output {
49913322479eSMichael Chan 	__le16	error_code;
49923322479eSMichael Chan 	__le16	req_type;
49933322479eSMichael Chan 	__le16	seq_id;
49943322479eSMichael Chan 	__le16	resp_len;
49953322479eSMichael Chan 	u8	unused_0[7];
49963322479eSMichael Chan 	u8	valid;
49973322479eSMichael Chan };
49983322479eSMichael Chan 
49993322479eSMichael Chan /* hwrm_port_phy_mdio_read_input (size:256b/32B) */
50003322479eSMichael Chan struct hwrm_port_phy_mdio_read_input {
50013322479eSMichael Chan 	__le16	req_type;
50023322479eSMichael Chan 	__le16	cmpl_ring;
50033322479eSMichael Chan 	__le16	seq_id;
50043322479eSMichael Chan 	__le16	target_id;
50053322479eSMichael Chan 	__le64	resp_addr;
50063322479eSMichael Chan 	__le32	unused_0[2];
50073322479eSMichael Chan 	__le16	port_id;
50083322479eSMichael Chan 	u8	phy_addr;
50093322479eSMichael Chan 	u8	dev_addr;
50103322479eSMichael Chan 	__le16	reg_addr;
50113322479eSMichael Chan 	u8	cl45_mdio;
50123322479eSMichael Chan 	u8	unused_1;
50133322479eSMichael Chan };
50143322479eSMichael Chan 
50153322479eSMichael Chan /* hwrm_port_phy_mdio_read_output (size:128b/16B) */
50163322479eSMichael Chan struct hwrm_port_phy_mdio_read_output {
50173322479eSMichael Chan 	__le16	error_code;
50183322479eSMichael Chan 	__le16	req_type;
50193322479eSMichael Chan 	__le16	seq_id;
50203322479eSMichael Chan 	__le16	resp_len;
50213322479eSMichael Chan 	__le16	reg_data;
50223322479eSMichael Chan 	u8	unused_0[5];
50233322479eSMichael Chan 	u8	valid;
50243322479eSMichael Chan };
50253322479eSMichael Chan 
5026894aa69aSMichael Chan /* hwrm_port_led_cfg_input (size:512b/64B) */
5027f183886cSMichael Chan struct hwrm_port_led_cfg_input {
5028f183886cSMichael Chan 	__le16	req_type;
5029f183886cSMichael Chan 	__le16	cmpl_ring;
5030f183886cSMichael Chan 	__le16	seq_id;
5031f183886cSMichael Chan 	__le16	target_id;
5032f183886cSMichael Chan 	__le64	resp_addr;
5033f183886cSMichael Chan 	__le32	enables;
5034f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_ENABLES_LED0_ID            0x1UL
5035f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_ENABLES_LED0_STATE         0x2UL
5036f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_ENABLES_LED0_COLOR         0x4UL
5037f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_ENABLES_LED0_BLINK_ON      0x8UL
5038f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_ENABLES_LED0_BLINK_OFF     0x10UL
5039f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_ENABLES_LED0_GROUP_ID      0x20UL
5040f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_ENABLES_LED1_ID            0x40UL
5041f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_ENABLES_LED1_STATE         0x80UL
5042f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_ENABLES_LED1_COLOR         0x100UL
5043f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_ENABLES_LED1_BLINK_ON      0x200UL
5044f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_ENABLES_LED1_BLINK_OFF     0x400UL
5045f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_ENABLES_LED1_GROUP_ID      0x800UL
5046f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_ENABLES_LED2_ID            0x1000UL
5047f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_ENABLES_LED2_STATE         0x2000UL
5048f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_ENABLES_LED2_COLOR         0x4000UL
5049f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_ENABLES_LED2_BLINK_ON      0x8000UL
5050f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_ENABLES_LED2_BLINK_OFF     0x10000UL
5051f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_ENABLES_LED2_GROUP_ID      0x20000UL
5052f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_ENABLES_LED3_ID            0x40000UL
5053f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_ENABLES_LED3_STATE         0x80000UL
5054f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_ENABLES_LED3_COLOR         0x100000UL
5055f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_ENABLES_LED3_BLINK_ON      0x200000UL
5056f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_ENABLES_LED3_BLINK_OFF     0x400000UL
5057f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_ENABLES_LED3_GROUP_ID      0x800000UL
5058f183886cSMichael Chan 	__le16	port_id;
5059f183886cSMichael Chan 	u8	num_leds;
5060f183886cSMichael Chan 	u8	rsvd;
5061f183886cSMichael Chan 	u8	led0_id;
5062f183886cSMichael Chan 	u8	led0_state;
5063f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_LED0_STATE_DEFAULT  0x0UL
5064f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_LED0_STATE_OFF      0x1UL
5065f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_LED0_STATE_ON       0x2UL
5066f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_LED0_STATE_BLINK    0x3UL
5067f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_LED0_STATE_BLINKALT 0x4UL
5068894aa69aSMichael Chan 	#define PORT_LED_CFG_REQ_LED0_STATE_LAST    PORT_LED_CFG_REQ_LED0_STATE_BLINKALT
5069f183886cSMichael Chan 	u8	led0_color;
5070f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_LED0_COLOR_DEFAULT    0x0UL
5071f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_LED0_COLOR_AMBER      0x1UL
5072f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_LED0_COLOR_GREEN      0x2UL
5073f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_LED0_COLOR_GREENAMBER 0x3UL
5074894aa69aSMichael Chan 	#define PORT_LED_CFG_REQ_LED0_COLOR_LAST      PORT_LED_CFG_REQ_LED0_COLOR_GREENAMBER
5075f183886cSMichael Chan 	u8	unused_0;
5076f183886cSMichael Chan 	__le16	led0_blink_on;
5077f183886cSMichael Chan 	__le16	led0_blink_off;
5078f183886cSMichael Chan 	u8	led0_group_id;
5079f183886cSMichael Chan 	u8	rsvd0;
5080f183886cSMichael Chan 	u8	led1_id;
5081f183886cSMichael Chan 	u8	led1_state;
5082f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_LED1_STATE_DEFAULT  0x0UL
5083f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_LED1_STATE_OFF      0x1UL
5084f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_LED1_STATE_ON       0x2UL
5085f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_LED1_STATE_BLINK    0x3UL
5086f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_LED1_STATE_BLINKALT 0x4UL
5087894aa69aSMichael Chan 	#define PORT_LED_CFG_REQ_LED1_STATE_LAST    PORT_LED_CFG_REQ_LED1_STATE_BLINKALT
5088f183886cSMichael Chan 	u8	led1_color;
5089f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_LED1_COLOR_DEFAULT    0x0UL
5090f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_LED1_COLOR_AMBER      0x1UL
5091f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_LED1_COLOR_GREEN      0x2UL
5092f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_LED1_COLOR_GREENAMBER 0x3UL
5093894aa69aSMichael Chan 	#define PORT_LED_CFG_REQ_LED1_COLOR_LAST      PORT_LED_CFG_REQ_LED1_COLOR_GREENAMBER
5094f183886cSMichael Chan 	u8	unused_1;
5095f183886cSMichael Chan 	__le16	led1_blink_on;
5096f183886cSMichael Chan 	__le16	led1_blink_off;
5097f183886cSMichael Chan 	u8	led1_group_id;
5098f183886cSMichael Chan 	u8	rsvd1;
5099f183886cSMichael Chan 	u8	led2_id;
5100f183886cSMichael Chan 	u8	led2_state;
5101f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_LED2_STATE_DEFAULT  0x0UL
5102f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_LED2_STATE_OFF      0x1UL
5103f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_LED2_STATE_ON       0x2UL
5104f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_LED2_STATE_BLINK    0x3UL
5105f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_LED2_STATE_BLINKALT 0x4UL
5106894aa69aSMichael Chan 	#define PORT_LED_CFG_REQ_LED2_STATE_LAST    PORT_LED_CFG_REQ_LED2_STATE_BLINKALT
5107f183886cSMichael Chan 	u8	led2_color;
5108f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_LED2_COLOR_DEFAULT    0x0UL
5109f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_LED2_COLOR_AMBER      0x1UL
5110f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_LED2_COLOR_GREEN      0x2UL
5111f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_LED2_COLOR_GREENAMBER 0x3UL
5112894aa69aSMichael Chan 	#define PORT_LED_CFG_REQ_LED2_COLOR_LAST      PORT_LED_CFG_REQ_LED2_COLOR_GREENAMBER
5113f183886cSMichael Chan 	u8	unused_2;
5114f183886cSMichael Chan 	__le16	led2_blink_on;
5115f183886cSMichael Chan 	__le16	led2_blink_off;
5116f183886cSMichael Chan 	u8	led2_group_id;
5117f183886cSMichael Chan 	u8	rsvd2;
5118f183886cSMichael Chan 	u8	led3_id;
5119f183886cSMichael Chan 	u8	led3_state;
5120f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_LED3_STATE_DEFAULT  0x0UL
5121f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_LED3_STATE_OFF      0x1UL
5122f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_LED3_STATE_ON       0x2UL
5123f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_LED3_STATE_BLINK    0x3UL
5124f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_LED3_STATE_BLINKALT 0x4UL
5125894aa69aSMichael Chan 	#define PORT_LED_CFG_REQ_LED3_STATE_LAST    PORT_LED_CFG_REQ_LED3_STATE_BLINKALT
5126f183886cSMichael Chan 	u8	led3_color;
5127f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_LED3_COLOR_DEFAULT    0x0UL
5128f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_LED3_COLOR_AMBER      0x1UL
5129f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_LED3_COLOR_GREEN      0x2UL
5130f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_LED3_COLOR_GREENAMBER 0x3UL
5131894aa69aSMichael Chan 	#define PORT_LED_CFG_REQ_LED3_COLOR_LAST      PORT_LED_CFG_REQ_LED3_COLOR_GREENAMBER
5132f183886cSMichael Chan 	u8	unused_3;
5133f183886cSMichael Chan 	__le16	led3_blink_on;
5134f183886cSMichael Chan 	__le16	led3_blink_off;
5135f183886cSMichael Chan 	u8	led3_group_id;
5136f183886cSMichael Chan 	u8	rsvd3;
5137f183886cSMichael Chan };
5138f183886cSMichael Chan 
5139894aa69aSMichael Chan /* hwrm_port_led_cfg_output (size:128b/16B) */
5140f183886cSMichael Chan struct hwrm_port_led_cfg_output {
5141f183886cSMichael Chan 	__le16	error_code;
5142f183886cSMichael Chan 	__le16	req_type;
5143f183886cSMichael Chan 	__le16	seq_id;
5144f183886cSMichael Chan 	__le16	resp_len;
5145894aa69aSMichael Chan 	u8	unused_0[7];
5146f183886cSMichael Chan 	u8	valid;
5147f183886cSMichael Chan };
5148f183886cSMichael Chan 
5149894aa69aSMichael Chan /* hwrm_port_led_qcfg_input (size:192b/24B) */
5150894aa69aSMichael Chan struct hwrm_port_led_qcfg_input {
5151894aa69aSMichael Chan 	__le16	req_type;
5152894aa69aSMichael Chan 	__le16	cmpl_ring;
5153894aa69aSMichael Chan 	__le16	seq_id;
5154894aa69aSMichael Chan 	__le16	target_id;
5155894aa69aSMichael Chan 	__le64	resp_addr;
5156894aa69aSMichael Chan 	__le16	port_id;
5157894aa69aSMichael Chan 	u8	unused_0[6];
5158894aa69aSMichael Chan };
5159894aa69aSMichael Chan 
5160894aa69aSMichael Chan /* hwrm_port_led_qcfg_output (size:448b/56B) */
5161894aa69aSMichael Chan struct hwrm_port_led_qcfg_output {
5162894aa69aSMichael Chan 	__le16	error_code;
5163894aa69aSMichael Chan 	__le16	req_type;
5164894aa69aSMichael Chan 	__le16	seq_id;
5165894aa69aSMichael Chan 	__le16	resp_len;
5166894aa69aSMichael Chan 	u8	num_leds;
5167894aa69aSMichael Chan 	u8	led0_id;
5168894aa69aSMichael Chan 	u8	led0_type;
5169894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED0_TYPE_SPEED    0x0UL
5170894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED0_TYPE_ACTIVITY 0x1UL
5171894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED0_TYPE_INVALID  0xffUL
5172894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED0_TYPE_LAST    PORT_LED_QCFG_RESP_LED0_TYPE_INVALID
5173894aa69aSMichael Chan 	u8	led0_state;
5174894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED0_STATE_DEFAULT  0x0UL
5175894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED0_STATE_OFF      0x1UL
5176894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED0_STATE_ON       0x2UL
5177894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED0_STATE_BLINK    0x3UL
5178894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED0_STATE_BLINKALT 0x4UL
5179894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED0_STATE_LAST    PORT_LED_QCFG_RESP_LED0_STATE_BLINKALT
5180894aa69aSMichael Chan 	u8	led0_color;
5181894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED0_COLOR_DEFAULT    0x0UL
5182894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED0_COLOR_AMBER      0x1UL
5183894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED0_COLOR_GREEN      0x2UL
5184894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED0_COLOR_GREENAMBER 0x3UL
5185894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED0_COLOR_LAST      PORT_LED_QCFG_RESP_LED0_COLOR_GREENAMBER
5186894aa69aSMichael Chan 	u8	unused_0;
5187894aa69aSMichael Chan 	__le16	led0_blink_on;
5188894aa69aSMichael Chan 	__le16	led0_blink_off;
5189894aa69aSMichael Chan 	u8	led0_group_id;
5190894aa69aSMichael Chan 	u8	led1_id;
5191894aa69aSMichael Chan 	u8	led1_type;
5192894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED1_TYPE_SPEED    0x0UL
5193894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED1_TYPE_ACTIVITY 0x1UL
5194894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED1_TYPE_INVALID  0xffUL
5195894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED1_TYPE_LAST    PORT_LED_QCFG_RESP_LED1_TYPE_INVALID
5196894aa69aSMichael Chan 	u8	led1_state;
5197894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED1_STATE_DEFAULT  0x0UL
5198894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED1_STATE_OFF      0x1UL
5199894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED1_STATE_ON       0x2UL
5200894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED1_STATE_BLINK    0x3UL
5201894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED1_STATE_BLINKALT 0x4UL
5202894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED1_STATE_LAST    PORT_LED_QCFG_RESP_LED1_STATE_BLINKALT
5203894aa69aSMichael Chan 	u8	led1_color;
5204894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED1_COLOR_DEFAULT    0x0UL
5205894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED1_COLOR_AMBER      0x1UL
5206894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED1_COLOR_GREEN      0x2UL
5207894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED1_COLOR_GREENAMBER 0x3UL
5208894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED1_COLOR_LAST      PORT_LED_QCFG_RESP_LED1_COLOR_GREENAMBER
5209894aa69aSMichael Chan 	u8	unused_1;
5210894aa69aSMichael Chan 	__le16	led1_blink_on;
5211894aa69aSMichael Chan 	__le16	led1_blink_off;
5212894aa69aSMichael Chan 	u8	led1_group_id;
5213894aa69aSMichael Chan 	u8	led2_id;
5214894aa69aSMichael Chan 	u8	led2_type;
5215894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED2_TYPE_SPEED    0x0UL
5216894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED2_TYPE_ACTIVITY 0x1UL
5217894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED2_TYPE_INVALID  0xffUL
5218894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED2_TYPE_LAST    PORT_LED_QCFG_RESP_LED2_TYPE_INVALID
5219894aa69aSMichael Chan 	u8	led2_state;
5220894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED2_STATE_DEFAULT  0x0UL
5221894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED2_STATE_OFF      0x1UL
5222894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED2_STATE_ON       0x2UL
5223894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED2_STATE_BLINK    0x3UL
5224894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED2_STATE_BLINKALT 0x4UL
5225894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED2_STATE_LAST    PORT_LED_QCFG_RESP_LED2_STATE_BLINKALT
5226894aa69aSMichael Chan 	u8	led2_color;
5227894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED2_COLOR_DEFAULT    0x0UL
5228894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED2_COLOR_AMBER      0x1UL
5229894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED2_COLOR_GREEN      0x2UL
5230894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED2_COLOR_GREENAMBER 0x3UL
5231894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED2_COLOR_LAST      PORT_LED_QCFG_RESP_LED2_COLOR_GREENAMBER
5232894aa69aSMichael Chan 	u8	unused_2;
5233894aa69aSMichael Chan 	__le16	led2_blink_on;
5234894aa69aSMichael Chan 	__le16	led2_blink_off;
5235894aa69aSMichael Chan 	u8	led2_group_id;
5236894aa69aSMichael Chan 	u8	led3_id;
5237894aa69aSMichael Chan 	u8	led3_type;
5238894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED3_TYPE_SPEED    0x0UL
5239894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED3_TYPE_ACTIVITY 0x1UL
5240894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED3_TYPE_INVALID  0xffUL
5241894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED3_TYPE_LAST    PORT_LED_QCFG_RESP_LED3_TYPE_INVALID
5242894aa69aSMichael Chan 	u8	led3_state;
5243894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED3_STATE_DEFAULT  0x0UL
5244894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED3_STATE_OFF      0x1UL
5245894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED3_STATE_ON       0x2UL
5246894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED3_STATE_BLINK    0x3UL
5247894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED3_STATE_BLINKALT 0x4UL
5248894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED3_STATE_LAST    PORT_LED_QCFG_RESP_LED3_STATE_BLINKALT
5249894aa69aSMichael Chan 	u8	led3_color;
5250894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED3_COLOR_DEFAULT    0x0UL
5251894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED3_COLOR_AMBER      0x1UL
5252894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED3_COLOR_GREEN      0x2UL
5253894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED3_COLOR_GREENAMBER 0x3UL
5254894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED3_COLOR_LAST      PORT_LED_QCFG_RESP_LED3_COLOR_GREENAMBER
5255894aa69aSMichael Chan 	u8	unused_3;
5256894aa69aSMichael Chan 	__le16	led3_blink_on;
5257894aa69aSMichael Chan 	__le16	led3_blink_off;
5258894aa69aSMichael Chan 	u8	led3_group_id;
5259894aa69aSMichael Chan 	u8	unused_4[6];
5260894aa69aSMichael Chan 	u8	valid;
5261894aa69aSMichael Chan };
5262894aa69aSMichael Chan 
5263894aa69aSMichael Chan /* hwrm_port_led_qcaps_input (size:192b/24B) */
5264f183886cSMichael Chan struct hwrm_port_led_qcaps_input {
5265f183886cSMichael Chan 	__le16	req_type;
5266f183886cSMichael Chan 	__le16	cmpl_ring;
5267f183886cSMichael Chan 	__le16	seq_id;
5268f183886cSMichael Chan 	__le16	target_id;
5269f183886cSMichael Chan 	__le64	resp_addr;
5270f183886cSMichael Chan 	__le16	port_id;
5271894aa69aSMichael Chan 	u8	unused_0[6];
5272f183886cSMichael Chan };
5273f183886cSMichael Chan 
5274894aa69aSMichael Chan /* hwrm_port_led_qcaps_output (size:384b/48B) */
5275f183886cSMichael Chan struct hwrm_port_led_qcaps_output {
5276f183886cSMichael Chan 	__le16	error_code;
5277f183886cSMichael Chan 	__le16	req_type;
5278f183886cSMichael Chan 	__le16	seq_id;
5279f183886cSMichael Chan 	__le16	resp_len;
5280f183886cSMichael Chan 	u8	num_leds;
5281894aa69aSMichael Chan 	u8	unused[3];
5282f183886cSMichael Chan 	u8	led0_id;
5283f183886cSMichael Chan 	u8	led0_type;
5284f183886cSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED0_TYPE_SPEED    0x0UL
5285f183886cSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED0_TYPE_ACTIVITY 0x1UL
5286f183886cSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED0_TYPE_INVALID  0xffUL
5287894aa69aSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED0_TYPE_LAST    PORT_LED_QCAPS_RESP_LED0_TYPE_INVALID
5288f183886cSMichael Chan 	u8	led0_group_id;
5289894aa69aSMichael Chan 	u8	unused_0;
5290f183886cSMichael Chan 	__le16	led0_state_caps;
5291f183886cSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED0_STATE_CAPS_ENABLED                 0x1UL
5292f183886cSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED0_STATE_CAPS_OFF_SUPPORTED           0x2UL
5293f183886cSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED0_STATE_CAPS_ON_SUPPORTED            0x4UL
5294f183886cSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED0_STATE_CAPS_BLINK_SUPPORTED         0x8UL
5295f183886cSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED0_STATE_CAPS_BLINK_ALT_SUPPORTED     0x10UL
5296f183886cSMichael Chan 	__le16	led0_color_caps;
5297f183886cSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED0_COLOR_CAPS_RSVD                0x1UL
5298f183886cSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED0_COLOR_CAPS_AMBER_SUPPORTED     0x2UL
5299f183886cSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED0_COLOR_CAPS_GREEN_SUPPORTED     0x4UL
5300f183886cSMichael Chan 	u8	led1_id;
5301f183886cSMichael Chan 	u8	led1_type;
5302f183886cSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED1_TYPE_SPEED    0x0UL
5303f183886cSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED1_TYPE_ACTIVITY 0x1UL
5304f183886cSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED1_TYPE_INVALID  0xffUL
5305894aa69aSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED1_TYPE_LAST    PORT_LED_QCAPS_RESP_LED1_TYPE_INVALID
5306f183886cSMichael Chan 	u8	led1_group_id;
5307894aa69aSMichael Chan 	u8	unused_1;
5308f183886cSMichael Chan 	__le16	led1_state_caps;
5309f183886cSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED1_STATE_CAPS_ENABLED                 0x1UL
5310f183886cSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED1_STATE_CAPS_OFF_SUPPORTED           0x2UL
5311f183886cSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED1_STATE_CAPS_ON_SUPPORTED            0x4UL
5312f183886cSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED1_STATE_CAPS_BLINK_SUPPORTED         0x8UL
5313f183886cSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED1_STATE_CAPS_BLINK_ALT_SUPPORTED     0x10UL
5314f183886cSMichael Chan 	__le16	led1_color_caps;
5315f183886cSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED1_COLOR_CAPS_RSVD                0x1UL
5316f183886cSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED1_COLOR_CAPS_AMBER_SUPPORTED     0x2UL
5317f183886cSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED1_COLOR_CAPS_GREEN_SUPPORTED     0x4UL
5318f183886cSMichael Chan 	u8	led2_id;
5319f183886cSMichael Chan 	u8	led2_type;
5320f183886cSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED2_TYPE_SPEED    0x0UL
5321f183886cSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED2_TYPE_ACTIVITY 0x1UL
5322f183886cSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED2_TYPE_INVALID  0xffUL
5323894aa69aSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED2_TYPE_LAST    PORT_LED_QCAPS_RESP_LED2_TYPE_INVALID
5324f183886cSMichael Chan 	u8	led2_group_id;
5325894aa69aSMichael Chan 	u8	unused_2;
5326f183886cSMichael Chan 	__le16	led2_state_caps;
5327f183886cSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED2_STATE_CAPS_ENABLED                 0x1UL
5328f183886cSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED2_STATE_CAPS_OFF_SUPPORTED           0x2UL
5329f183886cSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED2_STATE_CAPS_ON_SUPPORTED            0x4UL
5330f183886cSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED2_STATE_CAPS_BLINK_SUPPORTED         0x8UL
5331f183886cSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED2_STATE_CAPS_BLINK_ALT_SUPPORTED     0x10UL
5332f183886cSMichael Chan 	__le16	led2_color_caps;
5333f183886cSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED2_COLOR_CAPS_RSVD                0x1UL
5334f183886cSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED2_COLOR_CAPS_AMBER_SUPPORTED     0x2UL
5335f183886cSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED2_COLOR_CAPS_GREEN_SUPPORTED     0x4UL
5336f183886cSMichael Chan 	u8	led3_id;
5337f183886cSMichael Chan 	u8	led3_type;
5338f183886cSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED3_TYPE_SPEED    0x0UL
5339f183886cSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED3_TYPE_ACTIVITY 0x1UL
5340f183886cSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED3_TYPE_INVALID  0xffUL
5341894aa69aSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED3_TYPE_LAST    PORT_LED_QCAPS_RESP_LED3_TYPE_INVALID
5342f183886cSMichael Chan 	u8	led3_group_id;
5343894aa69aSMichael Chan 	u8	unused_3;
5344f183886cSMichael Chan 	__le16	led3_state_caps;
5345f183886cSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED3_STATE_CAPS_ENABLED                 0x1UL
5346f183886cSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED3_STATE_CAPS_OFF_SUPPORTED           0x2UL
5347f183886cSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED3_STATE_CAPS_ON_SUPPORTED            0x4UL
5348f183886cSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED3_STATE_CAPS_BLINK_SUPPORTED         0x8UL
5349f183886cSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED3_STATE_CAPS_BLINK_ALT_SUPPORTED     0x10UL
5350f183886cSMichael Chan 	__le16	led3_color_caps;
5351f183886cSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED3_COLOR_CAPS_RSVD                0x1UL
5352f183886cSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED3_COLOR_CAPS_AMBER_SUPPORTED     0x2UL
5353f183886cSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED3_COLOR_CAPS_GREEN_SUPPORTED     0x4UL
5354894aa69aSMichael Chan 	u8	unused_4[3];
5355f183886cSMichael Chan 	u8	valid;
5356f183886cSMichael Chan };
5357f183886cSMichael Chan 
5358894aa69aSMichael Chan /* hwrm_queue_qportcfg_input (size:192b/24B) */
5359c0c050c5SMichael Chan struct hwrm_queue_qportcfg_input {
5360c0c050c5SMichael Chan 	__le16	req_type;
5361c0c050c5SMichael Chan 	__le16	cmpl_ring;
5362c0c050c5SMichael Chan 	__le16	seq_id;
5363c0c050c5SMichael Chan 	__le16	target_id;
5364c0c050c5SMichael Chan 	__le64	resp_addr;
5365c0c050c5SMichael Chan 	__le32	flags;
5366c0c050c5SMichael Chan 	#define QUEUE_QPORTCFG_REQ_FLAGS_PATH     0x1UL
5367441cabbbSMichael Chan 	#define QUEUE_QPORTCFG_REQ_FLAGS_PATH_TX    0x0UL
5368441cabbbSMichael Chan 	#define QUEUE_QPORTCFG_REQ_FLAGS_PATH_RX    0x1UL
536911f15ed3SMichael Chan 	#define QUEUE_QPORTCFG_REQ_FLAGS_PATH_LAST QUEUE_QPORTCFG_REQ_FLAGS_PATH_RX
5370c0c050c5SMichael Chan 	__le16	port_id;
5371d4f52de0SMichael Chan 	u8	drv_qmap_cap;
5372d4f52de0SMichael Chan 	#define QUEUE_QPORTCFG_REQ_DRV_QMAP_CAP_DISABLED 0x0UL
5373d4f52de0SMichael Chan 	#define QUEUE_QPORTCFG_REQ_DRV_QMAP_CAP_ENABLED  0x1UL
5374d4f52de0SMichael Chan 	#define QUEUE_QPORTCFG_REQ_DRV_QMAP_CAP_LAST    QUEUE_QPORTCFG_REQ_DRV_QMAP_CAP_ENABLED
5375d4f52de0SMichael Chan 	u8	unused_0;
5376c0c050c5SMichael Chan };
5377c0c050c5SMichael Chan 
5378bfc6e5fbSMichael Chan /* hwrm_queue_qportcfg_output (size:1344b/168B) */
5379c0c050c5SMichael Chan struct hwrm_queue_qportcfg_output {
5380c0c050c5SMichael Chan 	__le16	error_code;
5381c0c050c5SMichael Chan 	__le16	req_type;
5382c0c050c5SMichael Chan 	__le16	seq_id;
5383c0c050c5SMichael Chan 	__le16	resp_len;
5384c0c050c5SMichael Chan 	u8	max_configurable_queues;
5385c0c050c5SMichael Chan 	u8	max_configurable_lossless_queues;
5386c0c050c5SMichael Chan 	u8	queue_cfg_allowed;
5387441cabbbSMichael Chan 	u8	queue_cfg_info;
5388441cabbbSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_CFG_INFO_ASYM_CFG             0x1UL
538978eeadb8SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_CFG_INFO_USE_PROFILE_TYPE     0x2UL
5390c0c050c5SMichael Chan 	u8	queue_pfcenable_cfg_allowed;
5391c0c050c5SMichael Chan 	u8	queue_pri2cos_cfg_allowed;
5392c0c050c5SMichael Chan 	u8	queue_cos2bw_cfg_allowed;
5393c0c050c5SMichael Chan 	u8	queue_id0;
5394c0c050c5SMichael Chan 	u8	queue_id0_service_profile;
5395441cabbbSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID0_SERVICE_PROFILE_LOSSY          0x0UL
53966fc92c33SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID0_SERVICE_PROFILE_LOSSLESS       0x1UL
5397d4f52de0SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID0_SERVICE_PROFILE_LOSSLESS_ROCE  0x1UL
5398d4f52de0SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID0_SERVICE_PROFILE_LOSSY_ROCE_CNP 0x2UL
5399d4f52de0SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID0_SERVICE_PROFILE_LOSSLESS_NIC   0x3UL
5400441cabbbSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID0_SERVICE_PROFILE_UNKNOWN        0xffUL
5401894aa69aSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID0_SERVICE_PROFILE_LAST          QUEUE_QPORTCFG_RESP_QUEUE_ID0_SERVICE_PROFILE_UNKNOWN
5402c0c050c5SMichael Chan 	u8	queue_id1;
5403c0c050c5SMichael Chan 	u8	queue_id1_service_profile;
5404441cabbbSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID1_SERVICE_PROFILE_LOSSY          0x0UL
54056fc92c33SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID1_SERVICE_PROFILE_LOSSLESS       0x1UL
5406d4f52de0SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID1_SERVICE_PROFILE_LOSSLESS_ROCE  0x1UL
5407d4f52de0SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID1_SERVICE_PROFILE_LOSSY_ROCE_CNP 0x2UL
5408d4f52de0SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID1_SERVICE_PROFILE_LOSSLESS_NIC   0x3UL
5409441cabbbSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID1_SERVICE_PROFILE_UNKNOWN        0xffUL
5410894aa69aSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID1_SERVICE_PROFILE_LAST          QUEUE_QPORTCFG_RESP_QUEUE_ID1_SERVICE_PROFILE_UNKNOWN
5411c0c050c5SMichael Chan 	u8	queue_id2;
5412c0c050c5SMichael Chan 	u8	queue_id2_service_profile;
5413441cabbbSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID2_SERVICE_PROFILE_LOSSY          0x0UL
54146fc92c33SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID2_SERVICE_PROFILE_LOSSLESS       0x1UL
5415d4f52de0SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID2_SERVICE_PROFILE_LOSSLESS_ROCE  0x1UL
5416d4f52de0SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID2_SERVICE_PROFILE_LOSSY_ROCE_CNP 0x2UL
5417d4f52de0SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID2_SERVICE_PROFILE_LOSSLESS_NIC   0x3UL
5418441cabbbSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID2_SERVICE_PROFILE_UNKNOWN        0xffUL
5419894aa69aSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID2_SERVICE_PROFILE_LAST          QUEUE_QPORTCFG_RESP_QUEUE_ID2_SERVICE_PROFILE_UNKNOWN
5420c0c050c5SMichael Chan 	u8	queue_id3;
5421c0c050c5SMichael Chan 	u8	queue_id3_service_profile;
5422441cabbbSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID3_SERVICE_PROFILE_LOSSY          0x0UL
54236fc92c33SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID3_SERVICE_PROFILE_LOSSLESS       0x1UL
5424d4f52de0SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID3_SERVICE_PROFILE_LOSSLESS_ROCE  0x1UL
5425d4f52de0SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID3_SERVICE_PROFILE_LOSSY_ROCE_CNP 0x2UL
5426d4f52de0SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID3_SERVICE_PROFILE_LOSSLESS_NIC   0x3UL
5427441cabbbSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID3_SERVICE_PROFILE_UNKNOWN        0xffUL
5428894aa69aSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID3_SERVICE_PROFILE_LAST          QUEUE_QPORTCFG_RESP_QUEUE_ID3_SERVICE_PROFILE_UNKNOWN
5429c0c050c5SMichael Chan 	u8	queue_id4;
5430c0c050c5SMichael Chan 	u8	queue_id4_service_profile;
5431441cabbbSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID4_SERVICE_PROFILE_LOSSY          0x0UL
54326fc92c33SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID4_SERVICE_PROFILE_LOSSLESS       0x1UL
5433d4f52de0SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID4_SERVICE_PROFILE_LOSSLESS_ROCE  0x1UL
5434d4f52de0SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID4_SERVICE_PROFILE_LOSSY_ROCE_CNP 0x2UL
5435d4f52de0SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID4_SERVICE_PROFILE_LOSSLESS_NIC   0x3UL
5436441cabbbSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID4_SERVICE_PROFILE_UNKNOWN        0xffUL
5437894aa69aSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID4_SERVICE_PROFILE_LAST          QUEUE_QPORTCFG_RESP_QUEUE_ID4_SERVICE_PROFILE_UNKNOWN
5438c0c050c5SMichael Chan 	u8	queue_id5;
5439c0c050c5SMichael Chan 	u8	queue_id5_service_profile;
5440441cabbbSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID5_SERVICE_PROFILE_LOSSY          0x0UL
54416fc92c33SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID5_SERVICE_PROFILE_LOSSLESS       0x1UL
5442d4f52de0SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID5_SERVICE_PROFILE_LOSSLESS_ROCE  0x1UL
5443d4f52de0SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID5_SERVICE_PROFILE_LOSSY_ROCE_CNP 0x2UL
5444d4f52de0SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID5_SERVICE_PROFILE_LOSSLESS_NIC   0x3UL
5445441cabbbSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID5_SERVICE_PROFILE_UNKNOWN        0xffUL
5446894aa69aSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID5_SERVICE_PROFILE_LAST          QUEUE_QPORTCFG_RESP_QUEUE_ID5_SERVICE_PROFILE_UNKNOWN
5447c0c050c5SMichael Chan 	u8	queue_id6;
5448c0c050c5SMichael Chan 	u8	queue_id6_service_profile;
5449441cabbbSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID6_SERVICE_PROFILE_LOSSY          0x0UL
54506fc92c33SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID6_SERVICE_PROFILE_LOSSLESS       0x1UL
5451d4f52de0SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID6_SERVICE_PROFILE_LOSSLESS_ROCE  0x1UL
5452d4f52de0SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID6_SERVICE_PROFILE_LOSSY_ROCE_CNP 0x2UL
5453d4f52de0SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID6_SERVICE_PROFILE_LOSSLESS_NIC   0x3UL
5454441cabbbSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID6_SERVICE_PROFILE_UNKNOWN        0xffUL
5455894aa69aSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID6_SERVICE_PROFILE_LAST          QUEUE_QPORTCFG_RESP_QUEUE_ID6_SERVICE_PROFILE_UNKNOWN
5456c0c050c5SMichael Chan 	u8	queue_id7;
5457c0c050c5SMichael Chan 	u8	queue_id7_service_profile;
5458441cabbbSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID7_SERVICE_PROFILE_LOSSY          0x0UL
54596fc92c33SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID7_SERVICE_PROFILE_LOSSLESS       0x1UL
5460d4f52de0SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID7_SERVICE_PROFILE_LOSSLESS_ROCE  0x1UL
5461d4f52de0SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID7_SERVICE_PROFILE_LOSSY_ROCE_CNP 0x2UL
5462d4f52de0SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID7_SERVICE_PROFILE_LOSSLESS_NIC   0x3UL
5463441cabbbSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID7_SERVICE_PROFILE_UNKNOWN        0xffUL
5464894aa69aSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID7_SERVICE_PROFILE_LAST          QUEUE_QPORTCFG_RESP_QUEUE_ID7_SERVICE_PROFILE_UNKNOWN
546516db6323SMichael Chan 	u8	queue_id0_service_profile_type;
546616db6323SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID0_SERVICE_PROFILE_TYPE_ROCE     0x1UL
546716db6323SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID0_SERVICE_PROFILE_TYPE_NIC      0x2UL
546816db6323SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID0_SERVICE_PROFILE_TYPE_CNP      0x4UL
5469bfc6e5fbSMichael Chan 	char	qid0_name[16];
5470bfc6e5fbSMichael Chan 	char	qid1_name[16];
5471bfc6e5fbSMichael Chan 	char	qid2_name[16];
5472bfc6e5fbSMichael Chan 	char	qid3_name[16];
5473bfc6e5fbSMichael Chan 	char	qid4_name[16];
5474bfc6e5fbSMichael Chan 	char	qid5_name[16];
5475bfc6e5fbSMichael Chan 	char	qid6_name[16];
5476bfc6e5fbSMichael Chan 	char	qid7_name[16];
547716db6323SMichael Chan 	u8	queue_id1_service_profile_type;
547816db6323SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID1_SERVICE_PROFILE_TYPE_ROCE     0x1UL
547916db6323SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID1_SERVICE_PROFILE_TYPE_NIC      0x2UL
548016db6323SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID1_SERVICE_PROFILE_TYPE_CNP      0x4UL
548116db6323SMichael Chan 	u8	queue_id2_service_profile_type;
548216db6323SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID2_SERVICE_PROFILE_TYPE_ROCE     0x1UL
548316db6323SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID2_SERVICE_PROFILE_TYPE_NIC      0x2UL
548416db6323SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID2_SERVICE_PROFILE_TYPE_CNP      0x4UL
548516db6323SMichael Chan 	u8	queue_id3_service_profile_type;
548616db6323SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID3_SERVICE_PROFILE_TYPE_ROCE     0x1UL
548716db6323SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID3_SERVICE_PROFILE_TYPE_NIC      0x2UL
548816db6323SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID3_SERVICE_PROFILE_TYPE_CNP      0x4UL
548916db6323SMichael Chan 	u8	queue_id4_service_profile_type;
549016db6323SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID4_SERVICE_PROFILE_TYPE_ROCE     0x1UL
549116db6323SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID4_SERVICE_PROFILE_TYPE_NIC      0x2UL
549216db6323SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID4_SERVICE_PROFILE_TYPE_CNP      0x4UL
549316db6323SMichael Chan 	u8	queue_id5_service_profile_type;
549416db6323SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID5_SERVICE_PROFILE_TYPE_ROCE     0x1UL
549516db6323SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID5_SERVICE_PROFILE_TYPE_NIC      0x2UL
549616db6323SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID5_SERVICE_PROFILE_TYPE_CNP      0x4UL
549716db6323SMichael Chan 	u8	queue_id6_service_profile_type;
549816db6323SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID6_SERVICE_PROFILE_TYPE_ROCE     0x1UL
549916db6323SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID6_SERVICE_PROFILE_TYPE_NIC      0x2UL
550016db6323SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID6_SERVICE_PROFILE_TYPE_CNP      0x4UL
550116db6323SMichael Chan 	u8	queue_id7_service_profile_type;
550216db6323SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID7_SERVICE_PROFILE_TYPE_ROCE     0x1UL
550316db6323SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID7_SERVICE_PROFILE_TYPE_NIC      0x2UL
550416db6323SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID7_SERVICE_PROFILE_TYPE_CNP      0x4UL
5505bfc6e5fbSMichael Chan 	u8	valid;
5506bfc6e5fbSMichael Chan };
5507bfc6e5fbSMichael Chan 
5508bfc6e5fbSMichael Chan /* hwrm_queue_qcfg_input (size:192b/24B) */
5509bfc6e5fbSMichael Chan struct hwrm_queue_qcfg_input {
5510bfc6e5fbSMichael Chan 	__le16	req_type;
5511bfc6e5fbSMichael Chan 	__le16	cmpl_ring;
5512bfc6e5fbSMichael Chan 	__le16	seq_id;
5513bfc6e5fbSMichael Chan 	__le16	target_id;
5514bfc6e5fbSMichael Chan 	__le64	resp_addr;
5515bfc6e5fbSMichael Chan 	__le32	flags;
5516bfc6e5fbSMichael Chan 	#define QUEUE_QCFG_REQ_FLAGS_PATH     0x1UL
5517bfc6e5fbSMichael Chan 	#define QUEUE_QCFG_REQ_FLAGS_PATH_TX    0x0UL
5518bfc6e5fbSMichael Chan 	#define QUEUE_QCFG_REQ_FLAGS_PATH_RX    0x1UL
5519bfc6e5fbSMichael Chan 	#define QUEUE_QCFG_REQ_FLAGS_PATH_LAST QUEUE_QCFG_REQ_FLAGS_PATH_RX
5520bfc6e5fbSMichael Chan 	__le32	queue_id;
5521bfc6e5fbSMichael Chan };
5522bfc6e5fbSMichael Chan 
5523bfc6e5fbSMichael Chan /* hwrm_queue_qcfg_output (size:128b/16B) */
5524bfc6e5fbSMichael Chan struct hwrm_queue_qcfg_output {
5525bfc6e5fbSMichael Chan 	__le16	error_code;
5526bfc6e5fbSMichael Chan 	__le16	req_type;
5527bfc6e5fbSMichael Chan 	__le16	seq_id;
5528bfc6e5fbSMichael Chan 	__le16	resp_len;
5529bfc6e5fbSMichael Chan 	__le32	queue_len;
5530bfc6e5fbSMichael Chan 	u8	service_profile;
5531bfc6e5fbSMichael Chan 	#define QUEUE_QCFG_RESP_SERVICE_PROFILE_LOSSY    0x0UL
5532bfc6e5fbSMichael Chan 	#define QUEUE_QCFG_RESP_SERVICE_PROFILE_LOSSLESS 0x1UL
5533bfc6e5fbSMichael Chan 	#define QUEUE_QCFG_RESP_SERVICE_PROFILE_UNKNOWN  0xffUL
5534bfc6e5fbSMichael Chan 	#define QUEUE_QCFG_RESP_SERVICE_PROFILE_LAST    QUEUE_QCFG_RESP_SERVICE_PROFILE_UNKNOWN
5535bfc6e5fbSMichael Chan 	u8	queue_cfg_info;
5536bfc6e5fbSMichael Chan 	#define QUEUE_QCFG_RESP_QUEUE_CFG_INFO_ASYM_CFG     0x1UL
5537bfc6e5fbSMichael Chan 	u8	unused_0;
5538c0c050c5SMichael Chan 	u8	valid;
5539c0c050c5SMichael Chan };
5540c0c050c5SMichael Chan 
5541894aa69aSMichael Chan /* hwrm_queue_cfg_input (size:320b/40B) */
5542c0c050c5SMichael Chan struct hwrm_queue_cfg_input {
5543c0c050c5SMichael Chan 	__le16	req_type;
5544c0c050c5SMichael Chan 	__le16	cmpl_ring;
5545c0c050c5SMichael Chan 	__le16	seq_id;
5546c0c050c5SMichael Chan 	__le16	target_id;
5547c0c050c5SMichael Chan 	__le64	resp_addr;
5548c0c050c5SMichael Chan 	__le32	flags;
5549441cabbbSMichael Chan 	#define QUEUE_CFG_REQ_FLAGS_PATH_MASK 0x3UL
5550441cabbbSMichael Chan 	#define QUEUE_CFG_REQ_FLAGS_PATH_SFT  0
5551441cabbbSMichael Chan 	#define QUEUE_CFG_REQ_FLAGS_PATH_TX     0x0UL
5552441cabbbSMichael Chan 	#define QUEUE_CFG_REQ_FLAGS_PATH_RX     0x1UL
5553441cabbbSMichael Chan 	#define QUEUE_CFG_REQ_FLAGS_PATH_BIDIR  0x2UL
5554441cabbbSMichael Chan 	#define QUEUE_CFG_REQ_FLAGS_PATH_LAST  QUEUE_CFG_REQ_FLAGS_PATH_BIDIR
5555c0c050c5SMichael Chan 	__le32	enables;
5556c0c050c5SMichael Chan 	#define QUEUE_CFG_REQ_ENABLES_DFLT_LEN            0x1UL
5557c0c050c5SMichael Chan 	#define QUEUE_CFG_REQ_ENABLES_SERVICE_PROFILE     0x2UL
5558c0c050c5SMichael Chan 	__le32	queue_id;
5559c0c050c5SMichael Chan 	__le32	dflt_len;
5560c0c050c5SMichael Chan 	u8	service_profile;
5561441cabbbSMichael Chan 	#define QUEUE_CFG_REQ_SERVICE_PROFILE_LOSSY    0x0UL
5562441cabbbSMichael Chan 	#define QUEUE_CFG_REQ_SERVICE_PROFILE_LOSSLESS 0x1UL
5563441cabbbSMichael Chan 	#define QUEUE_CFG_REQ_SERVICE_PROFILE_UNKNOWN  0xffUL
5564894aa69aSMichael Chan 	#define QUEUE_CFG_REQ_SERVICE_PROFILE_LAST    QUEUE_CFG_REQ_SERVICE_PROFILE_UNKNOWN
5565c0c050c5SMichael Chan 	u8	unused_0[7];
5566c0c050c5SMichael Chan };
5567c0c050c5SMichael Chan 
5568894aa69aSMichael Chan /* hwrm_queue_cfg_output (size:128b/16B) */
5569c0c050c5SMichael Chan struct hwrm_queue_cfg_output {
5570c0c050c5SMichael Chan 	__le16	error_code;
5571c0c050c5SMichael Chan 	__le16	req_type;
5572c0c050c5SMichael Chan 	__le16	seq_id;
5573c0c050c5SMichael Chan 	__le16	resp_len;
5574894aa69aSMichael Chan 	u8	unused_0[7];
5575c0c050c5SMichael Chan 	u8	valid;
5576c0c050c5SMichael Chan };
5577c0c050c5SMichael Chan 
5578894aa69aSMichael Chan /* hwrm_queue_pfcenable_qcfg_input (size:192b/24B) */
557987c374deSMichael Chan struct hwrm_queue_pfcenable_qcfg_input {
558087c374deSMichael Chan 	__le16	req_type;
558187c374deSMichael Chan 	__le16	cmpl_ring;
558287c374deSMichael Chan 	__le16	seq_id;
558387c374deSMichael Chan 	__le16	target_id;
558487c374deSMichael Chan 	__le64	resp_addr;
558587c374deSMichael Chan 	__le16	port_id;
5586894aa69aSMichael Chan 	u8	unused_0[6];
558787c374deSMichael Chan };
558887c374deSMichael Chan 
5589894aa69aSMichael Chan /* hwrm_queue_pfcenable_qcfg_output (size:128b/16B) */
559087c374deSMichael Chan struct hwrm_queue_pfcenable_qcfg_output {
559187c374deSMichael Chan 	__le16	error_code;
559287c374deSMichael Chan 	__le16	req_type;
559387c374deSMichael Chan 	__le16	seq_id;
559487c374deSMichael Chan 	__le16	resp_len;
559587c374deSMichael Chan 	__le32	flags;
559687c374deSMichael Chan 	#define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI0_PFC_ENABLED              0x1UL
559787c374deSMichael Chan 	#define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI1_PFC_ENABLED              0x2UL
559887c374deSMichael Chan 	#define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI2_PFC_ENABLED              0x4UL
559987c374deSMichael Chan 	#define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI3_PFC_ENABLED              0x8UL
560087c374deSMichael Chan 	#define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI4_PFC_ENABLED              0x10UL
560187c374deSMichael Chan 	#define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI5_PFC_ENABLED              0x20UL
560287c374deSMichael Chan 	#define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI6_PFC_ENABLED              0x40UL
560387c374deSMichael Chan 	#define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI7_PFC_ENABLED              0x80UL
5604460c2577SMichael Chan 	#define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI0_PFC_WATCHDOG_ENABLED     0x100UL
5605460c2577SMichael Chan 	#define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI1_PFC_WATCHDOG_ENABLED     0x200UL
5606460c2577SMichael Chan 	#define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI2_PFC_WATCHDOG_ENABLED     0x400UL
5607460c2577SMichael Chan 	#define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI3_PFC_WATCHDOG_ENABLED     0x800UL
5608460c2577SMichael Chan 	#define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI4_PFC_WATCHDOG_ENABLED     0x1000UL
5609460c2577SMichael Chan 	#define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI5_PFC_WATCHDOG_ENABLED     0x2000UL
5610460c2577SMichael Chan 	#define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI6_PFC_WATCHDOG_ENABLED     0x4000UL
5611460c2577SMichael Chan 	#define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI7_PFC_WATCHDOG_ENABLED     0x8000UL
5612894aa69aSMichael Chan 	u8	unused_0[3];
561387c374deSMichael Chan 	u8	valid;
561487c374deSMichael Chan };
561587c374deSMichael Chan 
5616894aa69aSMichael Chan /* hwrm_queue_pfcenable_cfg_input (size:192b/24B) */
5617c0c050c5SMichael Chan struct hwrm_queue_pfcenable_cfg_input {
5618c0c050c5SMichael Chan 	__le16	req_type;
5619c0c050c5SMichael Chan 	__le16	cmpl_ring;
5620c0c050c5SMichael Chan 	__le16	seq_id;
5621c0c050c5SMichael Chan 	__le16	target_id;
5622c0c050c5SMichael Chan 	__le64	resp_addr;
5623c193554eSMichael Chan 	__le32	flags;
5624c193554eSMichael Chan 	#define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI0_PFC_ENABLED              0x1UL
5625c193554eSMichael Chan 	#define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI1_PFC_ENABLED              0x2UL
5626c193554eSMichael Chan 	#define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI2_PFC_ENABLED              0x4UL
5627c193554eSMichael Chan 	#define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI3_PFC_ENABLED              0x8UL
5628c193554eSMichael Chan 	#define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI4_PFC_ENABLED              0x10UL
5629c193554eSMichael Chan 	#define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI5_PFC_ENABLED              0x20UL
5630c193554eSMichael Chan 	#define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI6_PFC_ENABLED              0x40UL
5631c193554eSMichael Chan 	#define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI7_PFC_ENABLED              0x80UL
5632460c2577SMichael Chan 	#define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI0_PFC_WATCHDOG_ENABLED     0x100UL
5633460c2577SMichael Chan 	#define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI1_PFC_WATCHDOG_ENABLED     0x200UL
5634460c2577SMichael Chan 	#define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI2_PFC_WATCHDOG_ENABLED     0x400UL
5635460c2577SMichael Chan 	#define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI3_PFC_WATCHDOG_ENABLED     0x800UL
5636460c2577SMichael Chan 	#define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI4_PFC_WATCHDOG_ENABLED     0x1000UL
5637460c2577SMichael Chan 	#define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI5_PFC_WATCHDOG_ENABLED     0x2000UL
5638460c2577SMichael Chan 	#define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI6_PFC_WATCHDOG_ENABLED     0x4000UL
5639460c2577SMichael Chan 	#define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI7_PFC_WATCHDOG_ENABLED     0x8000UL
5640c0c050c5SMichael Chan 	__le16	port_id;
5641894aa69aSMichael Chan 	u8	unused_0[2];
5642c0c050c5SMichael Chan };
5643c0c050c5SMichael Chan 
5644894aa69aSMichael Chan /* hwrm_queue_pfcenable_cfg_output (size:128b/16B) */
5645c0c050c5SMichael Chan struct hwrm_queue_pfcenable_cfg_output {
5646c0c050c5SMichael Chan 	__le16	error_code;
5647c0c050c5SMichael Chan 	__le16	req_type;
5648c0c050c5SMichael Chan 	__le16	seq_id;
5649c0c050c5SMichael Chan 	__le16	resp_len;
5650894aa69aSMichael Chan 	u8	unused_0[7];
5651c0c050c5SMichael Chan 	u8	valid;
5652c0c050c5SMichael Chan };
5653c0c050c5SMichael Chan 
5654894aa69aSMichael Chan /* hwrm_queue_pri2cos_qcfg_input (size:192b/24B) */
565587c374deSMichael Chan struct hwrm_queue_pri2cos_qcfg_input {
565687c374deSMichael Chan 	__le16	req_type;
565787c374deSMichael Chan 	__le16	cmpl_ring;
565887c374deSMichael Chan 	__le16	seq_id;
565987c374deSMichael Chan 	__le16	target_id;
566087c374deSMichael Chan 	__le64	resp_addr;
566187c374deSMichael Chan 	__le32	flags;
566287c374deSMichael Chan 	#define QUEUE_PRI2COS_QCFG_REQ_FLAGS_PATH      0x1UL
5663894aa69aSMichael Chan 	#define QUEUE_PRI2COS_QCFG_REQ_FLAGS_PATH_TX     0x0UL
5664894aa69aSMichael Chan 	#define QUEUE_PRI2COS_QCFG_REQ_FLAGS_PATH_RX     0x1UL
566587c374deSMichael Chan 	#define QUEUE_PRI2COS_QCFG_REQ_FLAGS_PATH_LAST  QUEUE_PRI2COS_QCFG_REQ_FLAGS_PATH_RX
566687c374deSMichael Chan 	#define QUEUE_PRI2COS_QCFG_REQ_FLAGS_IVLAN     0x2UL
566787c374deSMichael Chan 	u8	port_id;
566887c374deSMichael Chan 	u8	unused_0[3];
566987c374deSMichael Chan };
567087c374deSMichael Chan 
5671894aa69aSMichael Chan /* hwrm_queue_pri2cos_qcfg_output (size:192b/24B) */
567287c374deSMichael Chan struct hwrm_queue_pri2cos_qcfg_output {
567387c374deSMichael Chan 	__le16	error_code;
567487c374deSMichael Chan 	__le16	req_type;
567587c374deSMichael Chan 	__le16	seq_id;
567687c374deSMichael Chan 	__le16	resp_len;
567787c374deSMichael Chan 	u8	pri0_cos_queue_id;
567887c374deSMichael Chan 	u8	pri1_cos_queue_id;
567987c374deSMichael Chan 	u8	pri2_cos_queue_id;
568087c374deSMichael Chan 	u8	pri3_cos_queue_id;
568187c374deSMichael Chan 	u8	pri4_cos_queue_id;
568287c374deSMichael Chan 	u8	pri5_cos_queue_id;
568387c374deSMichael Chan 	u8	pri6_cos_queue_id;
568487c374deSMichael Chan 	u8	pri7_cos_queue_id;
568587c374deSMichael Chan 	u8	queue_cfg_info;
568687c374deSMichael Chan 	#define QUEUE_PRI2COS_QCFG_RESP_QUEUE_CFG_INFO_ASYM_CFG     0x1UL
5687894aa69aSMichael Chan 	u8	unused_0[6];
568887c374deSMichael Chan 	u8	valid;
568987c374deSMichael Chan };
569087c374deSMichael Chan 
5691894aa69aSMichael Chan /* hwrm_queue_pri2cos_cfg_input (size:320b/40B) */
5692c0c050c5SMichael Chan struct hwrm_queue_pri2cos_cfg_input {
5693c0c050c5SMichael Chan 	__le16	req_type;
5694c0c050c5SMichael Chan 	__le16	cmpl_ring;
5695c0c050c5SMichael Chan 	__le16	seq_id;
5696c0c050c5SMichael Chan 	__le16	target_id;
5697c0c050c5SMichael Chan 	__le64	resp_addr;
5698c0c050c5SMichael Chan 	__le32	flags;
5699441cabbbSMichael Chan 	#define QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH_MASK 0x3UL
5700441cabbbSMichael Chan 	#define QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH_SFT  0
5701894aa69aSMichael Chan 	#define QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH_TX     0x0UL
5702894aa69aSMichael Chan 	#define QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH_RX     0x1UL
5703894aa69aSMichael Chan 	#define QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH_BIDIR  0x2UL
5704441cabbbSMichael Chan 	#define QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH_LAST  QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH_BIDIR
5705441cabbbSMichael Chan 	#define QUEUE_PRI2COS_CFG_REQ_FLAGS_IVLAN     0x4UL
5706c0c050c5SMichael Chan 	__le32	enables;
5707441cabbbSMichael Chan 	#define QUEUE_PRI2COS_CFG_REQ_ENABLES_PRI0_COS_QUEUE_ID     0x1UL
5708441cabbbSMichael Chan 	#define QUEUE_PRI2COS_CFG_REQ_ENABLES_PRI1_COS_QUEUE_ID     0x2UL
5709441cabbbSMichael Chan 	#define QUEUE_PRI2COS_CFG_REQ_ENABLES_PRI2_COS_QUEUE_ID     0x4UL
5710441cabbbSMichael Chan 	#define QUEUE_PRI2COS_CFG_REQ_ENABLES_PRI3_COS_QUEUE_ID     0x8UL
5711441cabbbSMichael Chan 	#define QUEUE_PRI2COS_CFG_REQ_ENABLES_PRI4_COS_QUEUE_ID     0x10UL
5712441cabbbSMichael Chan 	#define QUEUE_PRI2COS_CFG_REQ_ENABLES_PRI5_COS_QUEUE_ID     0x20UL
5713441cabbbSMichael Chan 	#define QUEUE_PRI2COS_CFG_REQ_ENABLES_PRI6_COS_QUEUE_ID     0x40UL
5714441cabbbSMichael Chan 	#define QUEUE_PRI2COS_CFG_REQ_ENABLES_PRI7_COS_QUEUE_ID     0x80UL
5715c0c050c5SMichael Chan 	u8	port_id;
5716c193554eSMichael Chan 	u8	pri0_cos_queue_id;
5717c193554eSMichael Chan 	u8	pri1_cos_queue_id;
5718c193554eSMichael Chan 	u8	pri2_cos_queue_id;
5719c193554eSMichael Chan 	u8	pri3_cos_queue_id;
5720c193554eSMichael Chan 	u8	pri4_cos_queue_id;
5721c193554eSMichael Chan 	u8	pri5_cos_queue_id;
5722c193554eSMichael Chan 	u8	pri6_cos_queue_id;
5723c193554eSMichael Chan 	u8	pri7_cos_queue_id;
5724c0c050c5SMichael Chan 	u8	unused_0[7];
5725c0c050c5SMichael Chan };
5726c0c050c5SMichael Chan 
5727894aa69aSMichael Chan /* hwrm_queue_pri2cos_cfg_output (size:128b/16B) */
5728c0c050c5SMichael Chan struct hwrm_queue_pri2cos_cfg_output {
5729c0c050c5SMichael Chan 	__le16	error_code;
5730c0c050c5SMichael Chan 	__le16	req_type;
5731c0c050c5SMichael Chan 	__le16	seq_id;
5732c0c050c5SMichael Chan 	__le16	resp_len;
5733894aa69aSMichael Chan 	u8	unused_0[7];
5734c0c050c5SMichael Chan 	u8	valid;
5735c0c050c5SMichael Chan };
5736c0c050c5SMichael Chan 
5737894aa69aSMichael Chan /* hwrm_queue_cos2bw_qcfg_input (size:192b/24B) */
573887c374deSMichael Chan struct hwrm_queue_cos2bw_qcfg_input {
573987c374deSMichael Chan 	__le16	req_type;
574087c374deSMichael Chan 	__le16	cmpl_ring;
574187c374deSMichael Chan 	__le16	seq_id;
574287c374deSMichael Chan 	__le16	target_id;
574387c374deSMichael Chan 	__le64	resp_addr;
574487c374deSMichael Chan 	__le16	port_id;
5745894aa69aSMichael Chan 	u8	unused_0[6];
574687c374deSMichael Chan };
574787c374deSMichael Chan 
5748894aa69aSMichael Chan /* hwrm_queue_cos2bw_qcfg_output (size:896b/112B) */
574987c374deSMichael Chan struct hwrm_queue_cos2bw_qcfg_output {
575087c374deSMichael Chan 	__le16	error_code;
575187c374deSMichael Chan 	__le16	req_type;
575287c374deSMichael Chan 	__le16	seq_id;
575387c374deSMichael Chan 	__le16	resp_len;
575487c374deSMichael Chan 	u8	queue_id0;
575587c374deSMichael Chan 	u8	unused_0;
575687c374deSMichael Chan 	__le16	unused_1;
575787c374deSMichael Chan 	__le32	queue_id0_min_bw;
575887c374deSMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_MASK             0xfffffffUL
575987c374deSMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_SFT              0
5760bac9a7e0SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_SCALE                     0x10000000UL
5761bac9a7e0SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_SCALE_BITS                  (0x0UL << 28)
5762bac9a7e0SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_SCALE_BYTES                 (0x1UL << 28)
5763bac9a7e0SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_SCALE_LAST                 QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_SCALE_BYTES
576487c374deSMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
576587c374deSMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_SFT         29
5766bac9a7e0SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
5767bac9a7e0SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
5768bac9a7e0SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
5769bac9a7e0SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
577087c374deSMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
577187c374deSMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
577287c374deSMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_LAST         QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_INVALID
577387c374deSMichael Chan 	__le32	queue_id0_max_bw;
577487c374deSMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_BW_VALUE_MASK             0xfffffffUL
577587c374deSMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_BW_VALUE_SFT              0
5776bac9a7e0SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_SCALE                     0x10000000UL
5777bac9a7e0SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_SCALE_BITS                  (0x0UL << 28)
5778bac9a7e0SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_SCALE_BYTES                 (0x1UL << 28)
5779bac9a7e0SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_SCALE_LAST                 QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_SCALE_BYTES
578087c374deSMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
578187c374deSMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_SFT         29
5782bac9a7e0SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
5783bac9a7e0SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
5784bac9a7e0SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
5785bac9a7e0SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
578687c374deSMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
578787c374deSMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
578887c374deSMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_LAST         QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_INVALID
578987c374deSMichael Chan 	u8	queue_id0_tsa_assign;
579087c374deSMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_TSA_ASSIGN_SP             0x0UL
579187c374deSMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_TSA_ASSIGN_ETS            0x1UL
579287c374deSMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_TSA_ASSIGN_RESERVED_FIRST 0x2UL
579387c374deSMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_TSA_ASSIGN_RESERVED_LAST  0xffUL
579487c374deSMichael Chan 	u8	queue_id0_pri_lvl;
579587c374deSMichael Chan 	u8	queue_id0_bw_weight;
5796ac1b8c97SMichael Chan 	struct {
5797ac1b8c97SMichael Chan 		u8	queue_id;
5798ac1b8c97SMichael Chan 		__le32	queue_id_min_bw;
5799ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MIN_BW_BW_VALUE_MASK             0xfffffffUL
5800ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MIN_BW_BW_VALUE_SFT              0
5801ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MIN_BW_SCALE                     0x10000000UL
5802ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MIN_BW_SCALE_BITS                  (0x0UL << 28)
5803ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MIN_BW_SCALE_BYTES                 (0x1UL << 28)
5804ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MIN_BW_SCALE_LAST                 QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MIN_BW_SCALE_BYTES
5805ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MIN_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
5806ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MIN_BW_BW_VALUE_UNIT_SFT         29
5807ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MIN_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
5808ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MIN_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
5809ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MIN_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
5810ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MIN_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
5811ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MIN_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
5812ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MIN_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
5813ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MIN_BW_BW_VALUE_UNIT_LAST         QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MIN_BW_BW_VALUE_UNIT_INVALID
5814ac1b8c97SMichael Chan 		__le32	queue_id_max_bw;
5815ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MAX_BW_BW_VALUE_MASK             0xfffffffUL
5816ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MAX_BW_BW_VALUE_SFT              0
5817ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MAX_BW_SCALE                     0x10000000UL
5818ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MAX_BW_SCALE_BITS                  (0x0UL << 28)
5819ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MAX_BW_SCALE_BYTES                 (0x1UL << 28)
5820ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MAX_BW_SCALE_LAST                 QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MAX_BW_SCALE_BYTES
5821ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MAX_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
5822ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MAX_BW_BW_VALUE_UNIT_SFT         29
5823ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MAX_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
5824ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MAX_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
5825ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MAX_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
5826ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MAX_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
5827ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MAX_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
5828ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MAX_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
5829ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MAX_BW_BW_VALUE_UNIT_LAST         QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MAX_BW_BW_VALUE_UNIT_INVALID
5830ac1b8c97SMichael Chan 		u8	queue_id_tsa_assign;
5831ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_TSA_ASSIGN_SP             0x0UL
5832ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_TSA_ASSIGN_ETS            0x1UL
5833ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_TSA_ASSIGN_RESERVED_FIRST 0x2UL
5834ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_TSA_ASSIGN_RESERVED_LAST  0xffUL
5835ac1b8c97SMichael Chan 		u8	queue_id_pri_lvl;
5836ac1b8c97SMichael Chan 		u8	queue_id_bw_weight;
5837ac1b8c97SMichael Chan 	} __packed cfg[7];
5838894aa69aSMichael Chan 	u8	unused_2[4];
583987c374deSMichael Chan 	u8	valid;
584087c374deSMichael Chan };
584187c374deSMichael Chan 
5842894aa69aSMichael Chan /* hwrm_queue_cos2bw_cfg_input (size:1024b/128B) */
5843c0c050c5SMichael Chan struct hwrm_queue_cos2bw_cfg_input {
5844c0c050c5SMichael Chan 	__le16	req_type;
5845c0c050c5SMichael Chan 	__le16	cmpl_ring;
5846c0c050c5SMichael Chan 	__le16	seq_id;
5847c0c050c5SMichael Chan 	__le16	target_id;
5848c0c050c5SMichael Chan 	__le64	resp_addr;
5849c0c050c5SMichael Chan 	__le32	flags;
5850c0c050c5SMichael Chan 	__le32	enables;
5851c0c050c5SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_ENABLES_COS_QUEUE_ID0_VALID     0x1UL
5852c0c050c5SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_ENABLES_COS_QUEUE_ID1_VALID     0x2UL
5853c0c050c5SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_ENABLES_COS_QUEUE_ID2_VALID     0x4UL
5854c0c050c5SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_ENABLES_COS_QUEUE_ID3_VALID     0x8UL
5855c0c050c5SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_ENABLES_COS_QUEUE_ID4_VALID     0x10UL
5856c0c050c5SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_ENABLES_COS_QUEUE_ID5_VALID     0x20UL
5857c0c050c5SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_ENABLES_COS_QUEUE_ID6_VALID     0x40UL
5858c0c050c5SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_ENABLES_COS_QUEUE_ID7_VALID     0x80UL
5859c0c050c5SMichael Chan 	__le16	port_id;
5860c0c050c5SMichael Chan 	u8	queue_id0;
5861c0c050c5SMichael Chan 	u8	unused_0;
5862c0c050c5SMichael Chan 	__le32	queue_id0_min_bw;
5863441cabbbSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_MASK             0xfffffffUL
5864441cabbbSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_SFT              0
5865bac9a7e0SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_SCALE                     0x10000000UL
5866bac9a7e0SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_SCALE_BITS                  (0x0UL << 28)
5867bac9a7e0SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_SCALE_BYTES                 (0x1UL << 28)
5868bac9a7e0SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_SCALE_LAST                 QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_SCALE_BYTES
5869441cabbbSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
5870441cabbbSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_SFT         29
5871bac9a7e0SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
5872bac9a7e0SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
5873bac9a7e0SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
5874bac9a7e0SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
5875441cabbbSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
5876441cabbbSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
5877441cabbbSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_LAST         QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_INVALID
5878c0c050c5SMichael Chan 	__le32	queue_id0_max_bw;
5879441cabbbSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_MASK             0xfffffffUL
5880441cabbbSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_SFT              0
5881bac9a7e0SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_SCALE                     0x10000000UL
5882bac9a7e0SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_SCALE_BITS                  (0x0UL << 28)
5883bac9a7e0SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_SCALE_BYTES                 (0x1UL << 28)
5884bac9a7e0SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_SCALE_LAST                 QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_SCALE_BYTES
5885441cabbbSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
5886441cabbbSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_SFT         29
5887bac9a7e0SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
5888bac9a7e0SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
5889bac9a7e0SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
5890bac9a7e0SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
5891441cabbbSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
5892441cabbbSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
5893441cabbbSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_LAST         QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_INVALID
5894c0c050c5SMichael Chan 	u8	queue_id0_tsa_assign;
5895441cabbbSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_TSA_ASSIGN_SP             0x0UL
5896441cabbbSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_TSA_ASSIGN_ETS            0x1UL
5897441cabbbSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_TSA_ASSIGN_RESERVED_FIRST 0x2UL
5898441cabbbSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_TSA_ASSIGN_RESERVED_LAST  0xffUL
5899c0c050c5SMichael Chan 	u8	queue_id0_pri_lvl;
5900c0c050c5SMichael Chan 	u8	queue_id0_bw_weight;
5901*3d5ecadaSMichael Chan 	struct {
5902*3d5ecadaSMichael Chan 		u8	queue_id;
5903*3d5ecadaSMichael Chan 		__le32	queue_id_min_bw;
5904*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MIN_BW_BW_VALUE_MASK             0xfffffffUL
5905*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MIN_BW_BW_VALUE_SFT              0
5906*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MIN_BW_SCALE                     0x10000000UL
5907*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MIN_BW_SCALE_BITS                  (0x0UL << 28)
5908*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MIN_BW_SCALE_BYTES                 (0x1UL << 28)
5909*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MIN_BW_SCALE_LAST                 QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MIN_BW_SCALE_BYTES
5910*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MIN_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
5911*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MIN_BW_BW_VALUE_UNIT_SFT         29
5912*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MIN_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
5913*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MIN_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
5914*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MIN_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
5915*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MIN_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
5916*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MIN_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
5917*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MIN_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
5918*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MIN_BW_BW_VALUE_UNIT_LAST         QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MIN_BW_BW_VALUE_UNIT_INVALID
5919*3d5ecadaSMichael Chan 		__le32	queue_id_max_bw;
5920*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MAX_BW_BW_VALUE_MASK             0xfffffffUL
5921*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MAX_BW_BW_VALUE_SFT              0
5922*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MAX_BW_SCALE                     0x10000000UL
5923*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MAX_BW_SCALE_BITS                  (0x0UL << 28)
5924*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MAX_BW_SCALE_BYTES                 (0x1UL << 28)
5925*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MAX_BW_SCALE_LAST                 QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MAX_BW_SCALE_BYTES
5926*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MAX_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
5927*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MAX_BW_BW_VALUE_UNIT_SFT         29
5928*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MAX_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
5929*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MAX_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
5930*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MAX_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
5931*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MAX_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
5932*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MAX_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
5933*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MAX_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
5934*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MAX_BW_BW_VALUE_UNIT_LAST         QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MAX_BW_BW_VALUE_UNIT_INVALID
5935*3d5ecadaSMichael Chan 		u8	queue_id_tsa_assign;
5936*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_TSA_ASSIGN_SP             0x0UL
5937*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_TSA_ASSIGN_ETS            0x1UL
5938*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_TSA_ASSIGN_RESERVED_FIRST 0x2UL
5939*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_TSA_ASSIGN_RESERVED_LAST  0xffUL
5940*3d5ecadaSMichael Chan 		u8	queue_id_pri_lvl;
5941*3d5ecadaSMichael Chan 		u8	queue_id_bw_weight;
5942*3d5ecadaSMichael Chan 	} __packed cfg[7];
5943c0c050c5SMichael Chan 	u8	unused_1[5];
5944c0c050c5SMichael Chan };
5945c0c050c5SMichael Chan 
5946894aa69aSMichael Chan /* hwrm_queue_cos2bw_cfg_output (size:128b/16B) */
5947c0c050c5SMichael Chan struct hwrm_queue_cos2bw_cfg_output {
5948c0c050c5SMichael Chan 	__le16	error_code;
5949c0c050c5SMichael Chan 	__le16	req_type;
5950c0c050c5SMichael Chan 	__le16	seq_id;
5951c0c050c5SMichael Chan 	__le16	resp_len;
5952894aa69aSMichael Chan 	u8	unused_0[7];
5953c0c050c5SMichael Chan 	u8	valid;
5954c0c050c5SMichael Chan };
5955c0c050c5SMichael Chan 
5956894aa69aSMichael Chan /* hwrm_queue_dscp_qcaps_input (size:192b/24B) */
5957acb20054SMichael Chan struct hwrm_queue_dscp_qcaps_input {
5958acb20054SMichael Chan 	__le16	req_type;
5959acb20054SMichael Chan 	__le16	cmpl_ring;
5960acb20054SMichael Chan 	__le16	seq_id;
5961acb20054SMichael Chan 	__le16	target_id;
5962acb20054SMichael Chan 	__le64	resp_addr;
5963acb20054SMichael Chan 	u8	port_id;
5964acb20054SMichael Chan 	u8	unused_0[7];
5965acb20054SMichael Chan };
5966acb20054SMichael Chan 
5967894aa69aSMichael Chan /* hwrm_queue_dscp_qcaps_output (size:128b/16B) */
5968acb20054SMichael Chan struct hwrm_queue_dscp_qcaps_output {
5969acb20054SMichael Chan 	__le16	error_code;
5970acb20054SMichael Chan 	__le16	req_type;
5971acb20054SMichael Chan 	__le16	seq_id;
5972acb20054SMichael Chan 	__le16	resp_len;
5973acb20054SMichael Chan 	u8	num_dscp_bits;
5974acb20054SMichael Chan 	u8	unused_0;
5975acb20054SMichael Chan 	__le16	max_entries;
5976894aa69aSMichael Chan 	u8	unused_1[3];
5977acb20054SMichael Chan 	u8	valid;
5978acb20054SMichael Chan };
5979acb20054SMichael Chan 
5980894aa69aSMichael Chan /* hwrm_queue_dscp2pri_qcfg_input (size:256b/32B) */
5981acb20054SMichael Chan struct hwrm_queue_dscp2pri_qcfg_input {
5982acb20054SMichael Chan 	__le16	req_type;
5983acb20054SMichael Chan 	__le16	cmpl_ring;
5984acb20054SMichael Chan 	__le16	seq_id;
5985acb20054SMichael Chan 	__le16	target_id;
5986acb20054SMichael Chan 	__le64	resp_addr;
5987acb20054SMichael Chan 	__le64	dest_data_addr;
5988acb20054SMichael Chan 	u8	port_id;
5989acb20054SMichael Chan 	u8	unused_0;
5990acb20054SMichael Chan 	__le16	dest_data_buffer_size;
5991894aa69aSMichael Chan 	u8	unused_1[4];
5992acb20054SMichael Chan };
5993acb20054SMichael Chan 
5994894aa69aSMichael Chan /* hwrm_queue_dscp2pri_qcfg_output (size:128b/16B) */
5995acb20054SMichael Chan struct hwrm_queue_dscp2pri_qcfg_output {
5996acb20054SMichael Chan 	__le16	error_code;
5997acb20054SMichael Chan 	__le16	req_type;
5998acb20054SMichael Chan 	__le16	seq_id;
5999acb20054SMichael Chan 	__le16	resp_len;
6000acb20054SMichael Chan 	__le16	entry_cnt;
6001acb20054SMichael Chan 	u8	default_pri;
6002894aa69aSMichael Chan 	u8	unused_0[4];
6003acb20054SMichael Chan 	u8	valid;
6004acb20054SMichael Chan };
6005acb20054SMichael Chan 
6006894aa69aSMichael Chan /* hwrm_queue_dscp2pri_cfg_input (size:320b/40B) */
6007acb20054SMichael Chan struct hwrm_queue_dscp2pri_cfg_input {
6008acb20054SMichael Chan 	__le16	req_type;
6009acb20054SMichael Chan 	__le16	cmpl_ring;
6010acb20054SMichael Chan 	__le16	seq_id;
6011acb20054SMichael Chan 	__le16	target_id;
6012acb20054SMichael Chan 	__le64	resp_addr;
6013acb20054SMichael Chan 	__le64	src_data_addr;
6014acb20054SMichael Chan 	__le32	flags;
6015acb20054SMichael Chan 	#define QUEUE_DSCP2PRI_CFG_REQ_FLAGS_USE_HW_DEFAULT_PRI     0x1UL
6016acb20054SMichael Chan 	__le32	enables;
6017acb20054SMichael Chan 	#define QUEUE_DSCP2PRI_CFG_REQ_ENABLES_DEFAULT_PRI     0x1UL
6018acb20054SMichael Chan 	u8	port_id;
6019acb20054SMichael Chan 	u8	default_pri;
6020acb20054SMichael Chan 	__le16	entry_cnt;
6021894aa69aSMichael Chan 	u8	unused_0[4];
6022acb20054SMichael Chan };
6023acb20054SMichael Chan 
6024894aa69aSMichael Chan /* hwrm_queue_dscp2pri_cfg_output (size:128b/16B) */
6025acb20054SMichael Chan struct hwrm_queue_dscp2pri_cfg_output {
6026acb20054SMichael Chan 	__le16	error_code;
6027acb20054SMichael Chan 	__le16	req_type;
6028acb20054SMichael Chan 	__le16	seq_id;
6029acb20054SMichael Chan 	__le16	resp_len;
6030894aa69aSMichael Chan 	u8	unused_0[7];
6031acb20054SMichael Chan 	u8	valid;
6032acb20054SMichael Chan };
6033acb20054SMichael Chan 
6034894aa69aSMichael Chan /* hwrm_vnic_alloc_input (size:192b/24B) */
6035c0c050c5SMichael Chan struct hwrm_vnic_alloc_input {
6036c0c050c5SMichael Chan 	__le16	req_type;
6037c0c050c5SMichael Chan 	__le16	cmpl_ring;
6038c0c050c5SMichael Chan 	__le16	seq_id;
6039c0c050c5SMichael Chan 	__le16	target_id;
6040c0c050c5SMichael Chan 	__le64	resp_addr;
6041c0c050c5SMichael Chan 	__le32	flags;
6042c0c050c5SMichael Chan 	#define VNIC_ALLOC_REQ_FLAGS_DEFAULT                  0x1UL
604316db6323SMichael Chan 	#define VNIC_ALLOC_REQ_FLAGS_VIRTIO_NET_FID_VALID     0x2UL
604416db6323SMichael Chan 	__le16	virtio_net_fid;
604516db6323SMichael Chan 	u8	unused_0[2];
6046c0c050c5SMichael Chan };
6047c0c050c5SMichael Chan 
6048894aa69aSMichael Chan /* hwrm_vnic_alloc_output (size:128b/16B) */
6049c0c050c5SMichael Chan struct hwrm_vnic_alloc_output {
6050c0c050c5SMichael Chan 	__le16	error_code;
6051c0c050c5SMichael Chan 	__le16	req_type;
6052c0c050c5SMichael Chan 	__le16	seq_id;
6053c0c050c5SMichael Chan 	__le16	resp_len;
6054c0c050c5SMichael Chan 	__le32	vnic_id;
6055894aa69aSMichael Chan 	u8	unused_0[3];
6056c0c050c5SMichael Chan 	u8	valid;
6057c0c050c5SMichael Chan };
6058c0c050c5SMichael Chan 
6059894aa69aSMichael Chan /* hwrm_vnic_free_input (size:192b/24B) */
6060c0c050c5SMichael Chan struct hwrm_vnic_free_input {
6061c0c050c5SMichael Chan 	__le16	req_type;
6062c0c050c5SMichael Chan 	__le16	cmpl_ring;
6063c0c050c5SMichael Chan 	__le16	seq_id;
6064c0c050c5SMichael Chan 	__le16	target_id;
6065c0c050c5SMichael Chan 	__le64	resp_addr;
6066c0c050c5SMichael Chan 	__le32	vnic_id;
6067894aa69aSMichael Chan 	u8	unused_0[4];
6068c0c050c5SMichael Chan };
6069c0c050c5SMichael Chan 
6070894aa69aSMichael Chan /* hwrm_vnic_free_output (size:128b/16B) */
6071c0c050c5SMichael Chan struct hwrm_vnic_free_output {
6072c0c050c5SMichael Chan 	__le16	error_code;
6073c0c050c5SMichael Chan 	__le16	req_type;
6074c0c050c5SMichael Chan 	__le16	seq_id;
6075c0c050c5SMichael Chan 	__le16	resp_len;
6076894aa69aSMichael Chan 	u8	unused_0[7];
6077c0c050c5SMichael Chan 	u8	valid;
6078c0c050c5SMichael Chan };
6079c0c050c5SMichael Chan 
608072e0c9f9SMichael Chan /* hwrm_vnic_cfg_input (size:384b/48B) */
6081c0c050c5SMichael Chan struct hwrm_vnic_cfg_input {
6082c0c050c5SMichael Chan 	__le16	req_type;
6083c0c050c5SMichael Chan 	__le16	cmpl_ring;
6084c0c050c5SMichael Chan 	__le16	seq_id;
6085c0c050c5SMichael Chan 	__le16	target_id;
6086c0c050c5SMichael Chan 	__le64	resp_addr;
6087c0c050c5SMichael Chan 	__le32	flags;
6088c0c050c5SMichael Chan 	#define VNIC_CFG_REQ_FLAGS_DEFAULT                              0x1UL
6089c0c050c5SMichael Chan 	#define VNIC_CFG_REQ_FLAGS_VLAN_STRIP_MODE                      0x2UL
6090c193554eSMichael Chan 	#define VNIC_CFG_REQ_FLAGS_BD_STALL_MODE                        0x4UL
609111f15ed3SMichael Chan 	#define VNIC_CFG_REQ_FLAGS_ROCE_DUAL_VNIC_MODE                  0x8UL
609211f15ed3SMichael Chan 	#define VNIC_CFG_REQ_FLAGS_ROCE_ONLY_VNIC_MODE                  0x10UL
6093441cabbbSMichael Chan 	#define VNIC_CFG_REQ_FLAGS_RSS_DFLT_CR_MODE                     0x20UL
609457922b0aSMichael Chan 	#define VNIC_CFG_REQ_FLAGS_ROCE_MIRRORING_CAPABLE_VNIC_MODE     0x40UL
6095c0c050c5SMichael Chan 	__le32	enables;
6096c0c050c5SMichael Chan 	#define VNIC_CFG_REQ_ENABLES_DFLT_RING_GRP            0x1UL
6097c0c050c5SMichael Chan 	#define VNIC_CFG_REQ_ENABLES_RSS_RULE                 0x2UL
6098c0c050c5SMichael Chan 	#define VNIC_CFG_REQ_ENABLES_COS_RULE                 0x4UL
6099c0c050c5SMichael Chan 	#define VNIC_CFG_REQ_ENABLES_LB_RULE                  0x8UL
6100c0c050c5SMichael Chan 	#define VNIC_CFG_REQ_ENABLES_MRU                      0x10UL
61016fc92c33SMichael Chan 	#define VNIC_CFG_REQ_ENABLES_DEFAULT_RX_RING_ID       0x20UL
61026fc92c33SMichael Chan 	#define VNIC_CFG_REQ_ENABLES_DEFAULT_CMPL_RING_ID     0x40UL
610372e0c9f9SMichael Chan 	#define VNIC_CFG_REQ_ENABLES_QUEUE_ID                 0x80UL
6104bfc6e5fbSMichael Chan 	#define VNIC_CFG_REQ_ENABLES_RX_CSUM_V2_MODE          0x100UL
6105ad04cc05SMichael Chan 	#define VNIC_CFG_REQ_ENABLES_L2_CQE_MODE              0x200UL
6106c0c050c5SMichael Chan 	__le16	vnic_id;
6107c0c050c5SMichael Chan 	__le16	dflt_ring_grp;
6108c0c050c5SMichael Chan 	__le16	rss_rule;
6109c0c050c5SMichael Chan 	__le16	cos_rule;
6110c0c050c5SMichael Chan 	__le16	lb_rule;
6111c0c050c5SMichael Chan 	__le16	mru;
61126fc92c33SMichael Chan 	__le16	default_rx_ring_id;
61136fc92c33SMichael Chan 	__le16	default_cmpl_ring_id;
611472e0c9f9SMichael Chan 	__le16	queue_id;
6115bfc6e5fbSMichael Chan 	u8	rx_csum_v2_mode;
6116bfc6e5fbSMichael Chan 	#define VNIC_CFG_REQ_RX_CSUM_V2_MODE_DEFAULT 0x0UL
6117bfc6e5fbSMichael Chan 	#define VNIC_CFG_REQ_RX_CSUM_V2_MODE_ALL_OK  0x1UL
6118bfc6e5fbSMichael Chan 	#define VNIC_CFG_REQ_RX_CSUM_V2_MODE_MAX     0x2UL
6119bfc6e5fbSMichael Chan 	#define VNIC_CFG_REQ_RX_CSUM_V2_MODE_LAST   VNIC_CFG_REQ_RX_CSUM_V2_MODE_MAX
6120ad04cc05SMichael Chan 	u8	l2_cqe_mode;
6121ad04cc05SMichael Chan 	#define VNIC_CFG_REQ_L2_CQE_MODE_DEFAULT    0x0UL
6122ad04cc05SMichael Chan 	#define VNIC_CFG_REQ_L2_CQE_MODE_COMPRESSED 0x1UL
6123ad04cc05SMichael Chan 	#define VNIC_CFG_REQ_L2_CQE_MODE_MIXED      0x2UL
6124ad04cc05SMichael Chan 	#define VNIC_CFG_REQ_L2_CQE_MODE_LAST      VNIC_CFG_REQ_L2_CQE_MODE_MIXED
6125ad04cc05SMichael Chan 	u8	unused0[4];
6126c0c050c5SMichael Chan };
6127c0c050c5SMichael Chan 
6128894aa69aSMichael Chan /* hwrm_vnic_cfg_output (size:128b/16B) */
6129c0c050c5SMichael Chan struct hwrm_vnic_cfg_output {
6130c0c050c5SMichael Chan 	__le16	error_code;
6131c0c050c5SMichael Chan 	__le16	req_type;
6132c0c050c5SMichael Chan 	__le16	seq_id;
6133c0c050c5SMichael Chan 	__le16	resp_len;
6134894aa69aSMichael Chan 	u8	unused_0[7];
6135c0c050c5SMichael Chan 	u8	valid;
6136c0c050c5SMichael Chan };
6137c0c050c5SMichael Chan 
6138894aa69aSMichael Chan /* hwrm_vnic_qcaps_input (size:192b/24B) */
61398fdefd63SMichael Chan struct hwrm_vnic_qcaps_input {
61408fdefd63SMichael Chan 	__le16	req_type;
61418fdefd63SMichael Chan 	__le16	cmpl_ring;
61428fdefd63SMichael Chan 	__le16	seq_id;
61438fdefd63SMichael Chan 	__le16	target_id;
61448fdefd63SMichael Chan 	__le64	resp_addr;
61458fdefd63SMichael Chan 	__le32	enables;
6146894aa69aSMichael Chan 	u8	unused_0[4];
61478fdefd63SMichael Chan };
61488fdefd63SMichael Chan 
6149894aa69aSMichael Chan /* hwrm_vnic_qcaps_output (size:192b/24B) */
61508fdefd63SMichael Chan struct hwrm_vnic_qcaps_output {
61518fdefd63SMichael Chan 	__le16	error_code;
61528fdefd63SMichael Chan 	__le16	req_type;
61538fdefd63SMichael Chan 	__le16	seq_id;
61548fdefd63SMichael Chan 	__le16	resp_len;
61558fdefd63SMichael Chan 	__le16	mru;
6156894aa69aSMichael Chan 	u8	unused_0[2];
61578fdefd63SMichael Chan 	__le32	flags;
6158bac9a7e0SMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_UNUSED                                  0x1UL
61598fdefd63SMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_VLAN_STRIP_CAP                          0x2UL
61608fdefd63SMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_BD_STALL_CAP                            0x4UL
61618fdefd63SMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_ROCE_DUAL_VNIC_CAP                      0x8UL
61628fdefd63SMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_ROCE_ONLY_VNIC_CAP                      0x10UL
61638fdefd63SMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_RSS_DFLT_CR_CAP                         0x20UL
6164894aa69aSMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_ROCE_MIRRORING_CAPABLE_VNIC_CAP         0x40UL
61656fc92c33SMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_OUTERMOST_RSS_CAP                       0x80UL
616672e0c9f9SMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_COS_ASSIGNMENT_CAP                      0x100UL
6167bfc6e5fbSMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_RX_CMPL_V2_CAP                          0x200UL
616816db6323SMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_VNIC_STATE_CAP                          0x400UL
616916db6323SMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_VIRTIO_NET_VNIC_ALLOC_CAP               0x800UL
617031f67c2eSMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_METADATA_FORMAT_CAP                     0x1000UL
617178eeadb8SMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_RSS_STRICT_HASH_TYPE_CAP                0x2000UL
617221e70778SMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_RSS_HASH_TYPE_DELTA_CAP                 0x4000UL
6173ad04cc05SMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_RING_SELECT_MODE_TOEPLITZ_CAP           0x8000UL
6174ad04cc05SMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_RING_SELECT_MODE_XOR_CAP                0x10000UL
6175ad04cc05SMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_RING_SELECT_MODE_TOEPLITZ_CHKSM_CAP     0x20000UL
617621e70778SMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_RSS_IPV6_FLOW_LABEL_CAP                 0x40000UL
6177ad04cc05SMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_RX_CMPL_V3_CAP                          0x80000UL
6178ad04cc05SMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_L2_CQE_MODE_CAP                         0x100000UL
6179ad04cc05SMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_RSS_IPSEC_AH_SPI_IPV4_CAP               0x200000UL
6180ad04cc05SMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_RSS_IPSEC_ESP_SPI_IPV4_CAP              0x400000UL
6181ad04cc05SMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_RSS_IPSEC_AH_SPI_IPV6_CAP               0x800000UL
6182ad04cc05SMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_RSS_IPSEC_ESP_SPI_IPV6_CAP              0x1000000UL
618384a911dbSMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_OUTERMOST_RSS_TRUSTED_VF_CAP            0x2000000UL
61844a50ddc2SMichael Chan 	__le16	max_aggs_supported;
61854a50ddc2SMichael Chan 	u8	unused_1[5];
61868fdefd63SMichael Chan 	u8	valid;
61878fdefd63SMichael Chan };
61888fdefd63SMichael Chan 
6189894aa69aSMichael Chan /* hwrm_vnic_tpa_cfg_input (size:320b/40B) */
6190c0c050c5SMichael Chan struct hwrm_vnic_tpa_cfg_input {
6191c0c050c5SMichael Chan 	__le16	req_type;
6192c0c050c5SMichael Chan 	__le16	cmpl_ring;
6193c0c050c5SMichael Chan 	__le16	seq_id;
6194c0c050c5SMichael Chan 	__le16	target_id;
6195c0c050c5SMichael Chan 	__le64	resp_addr;
6196c0c050c5SMichael Chan 	__le32	flags;
6197c0c050c5SMichael Chan 	#define VNIC_TPA_CFG_REQ_FLAGS_TPA                       0x1UL
6198c0c050c5SMichael Chan 	#define VNIC_TPA_CFG_REQ_FLAGS_ENCAP_TPA                 0x2UL
6199c0c050c5SMichael Chan 	#define VNIC_TPA_CFG_REQ_FLAGS_RSC_WND_UPDATE            0x4UL
6200c0c050c5SMichael Chan 	#define VNIC_TPA_CFG_REQ_FLAGS_GRO                       0x8UL
6201c0c050c5SMichael Chan 	#define VNIC_TPA_CFG_REQ_FLAGS_AGG_WITH_ECN              0x10UL
6202c0c050c5SMichael Chan 	#define VNIC_TPA_CFG_REQ_FLAGS_AGG_WITH_SAME_GRE_SEQ     0x20UL
6203c0c050c5SMichael Chan 	#define VNIC_TPA_CFG_REQ_FLAGS_GRO_IPID_CHECK            0x40UL
6204c0c050c5SMichael Chan 	#define VNIC_TPA_CFG_REQ_FLAGS_GRO_TTL_CHECK             0x80UL
62054a50ddc2SMichael Chan 	#define VNIC_TPA_CFG_REQ_FLAGS_AGG_PACK_AS_GRO           0x100UL
6206c0c050c5SMichael Chan 	__le32	enables;
6207c0c050c5SMichael Chan 	#define VNIC_TPA_CFG_REQ_ENABLES_MAX_AGG_SEGS      0x1UL
6208c0c050c5SMichael Chan 	#define VNIC_TPA_CFG_REQ_ENABLES_MAX_AGGS          0x2UL
6209c0c050c5SMichael Chan 	#define VNIC_TPA_CFG_REQ_ENABLES_MAX_AGG_TIMER     0x4UL
6210c0c050c5SMichael Chan 	#define VNIC_TPA_CFG_REQ_ENABLES_MIN_AGG_LEN       0x8UL
6211c0c050c5SMichael Chan 	__le16	vnic_id;
6212c0c050c5SMichael Chan 	__le16	max_agg_segs;
6213441cabbbSMichael Chan 	#define VNIC_TPA_CFG_REQ_MAX_AGG_SEGS_1   0x0UL
6214441cabbbSMichael Chan 	#define VNIC_TPA_CFG_REQ_MAX_AGG_SEGS_2   0x1UL
6215441cabbbSMichael Chan 	#define VNIC_TPA_CFG_REQ_MAX_AGG_SEGS_4   0x2UL
6216441cabbbSMichael Chan 	#define VNIC_TPA_CFG_REQ_MAX_AGG_SEGS_8   0x3UL
6217441cabbbSMichael Chan 	#define VNIC_TPA_CFG_REQ_MAX_AGG_SEGS_MAX 0x1fUL
6218894aa69aSMichael Chan 	#define VNIC_TPA_CFG_REQ_MAX_AGG_SEGS_LAST VNIC_TPA_CFG_REQ_MAX_AGG_SEGS_MAX
6219c0c050c5SMichael Chan 	__le16	max_aggs;
6220441cabbbSMichael Chan 	#define VNIC_TPA_CFG_REQ_MAX_AGGS_1   0x0UL
6221441cabbbSMichael Chan 	#define VNIC_TPA_CFG_REQ_MAX_AGGS_2   0x1UL
6222441cabbbSMichael Chan 	#define VNIC_TPA_CFG_REQ_MAX_AGGS_4   0x2UL
6223441cabbbSMichael Chan 	#define VNIC_TPA_CFG_REQ_MAX_AGGS_8   0x3UL
6224441cabbbSMichael Chan 	#define VNIC_TPA_CFG_REQ_MAX_AGGS_16  0x4UL
6225441cabbbSMichael Chan 	#define VNIC_TPA_CFG_REQ_MAX_AGGS_MAX 0x7UL
6226894aa69aSMichael Chan 	#define VNIC_TPA_CFG_REQ_MAX_AGGS_LAST VNIC_TPA_CFG_REQ_MAX_AGGS_MAX
6227894aa69aSMichael Chan 	u8	unused_0[2];
6228c0c050c5SMichael Chan 	__le32	max_agg_timer;
6229c0c050c5SMichael Chan 	__le32	min_agg_len;
6230c0c050c5SMichael Chan };
6231c0c050c5SMichael Chan 
6232894aa69aSMichael Chan /* hwrm_vnic_tpa_cfg_output (size:128b/16B) */
6233c0c050c5SMichael Chan struct hwrm_vnic_tpa_cfg_output {
6234c0c050c5SMichael Chan 	__le16	error_code;
6235c0c050c5SMichael Chan 	__le16	req_type;
6236c0c050c5SMichael Chan 	__le16	seq_id;
6237c0c050c5SMichael Chan 	__le16	resp_len;
6238894aa69aSMichael Chan 	u8	unused_0[7];
6239c0c050c5SMichael Chan 	u8	valid;
6240c0c050c5SMichael Chan };
6241c0c050c5SMichael Chan 
6242894aa69aSMichael Chan /* hwrm_vnic_tpa_qcfg_input (size:192b/24B) */
6243894aa69aSMichael Chan struct hwrm_vnic_tpa_qcfg_input {
6244894aa69aSMichael Chan 	__le16	req_type;
6245894aa69aSMichael Chan 	__le16	cmpl_ring;
6246894aa69aSMichael Chan 	__le16	seq_id;
6247894aa69aSMichael Chan 	__le16	target_id;
6248894aa69aSMichael Chan 	__le64	resp_addr;
6249894aa69aSMichael Chan 	__le16	vnic_id;
6250894aa69aSMichael Chan 	u8	unused_0[6];
6251894aa69aSMichael Chan };
6252894aa69aSMichael Chan 
6253894aa69aSMichael Chan /* hwrm_vnic_tpa_qcfg_output (size:256b/32B) */
6254894aa69aSMichael Chan struct hwrm_vnic_tpa_qcfg_output {
6255894aa69aSMichael Chan 	__le16	error_code;
6256894aa69aSMichael Chan 	__le16	req_type;
6257894aa69aSMichael Chan 	__le16	seq_id;
6258894aa69aSMichael Chan 	__le16	resp_len;
6259894aa69aSMichael Chan 	__le32	flags;
6260894aa69aSMichael Chan 	#define VNIC_TPA_QCFG_RESP_FLAGS_TPA                       0x1UL
6261894aa69aSMichael Chan 	#define VNIC_TPA_QCFG_RESP_FLAGS_ENCAP_TPA                 0x2UL
6262894aa69aSMichael Chan 	#define VNIC_TPA_QCFG_RESP_FLAGS_RSC_WND_UPDATE            0x4UL
6263894aa69aSMichael Chan 	#define VNIC_TPA_QCFG_RESP_FLAGS_GRO                       0x8UL
6264894aa69aSMichael Chan 	#define VNIC_TPA_QCFG_RESP_FLAGS_AGG_WITH_ECN              0x10UL
6265894aa69aSMichael Chan 	#define VNIC_TPA_QCFG_RESP_FLAGS_AGG_WITH_SAME_GRE_SEQ     0x20UL
6266894aa69aSMichael Chan 	#define VNIC_TPA_QCFG_RESP_FLAGS_GRO_IPID_CHECK            0x40UL
6267894aa69aSMichael Chan 	#define VNIC_TPA_QCFG_RESP_FLAGS_GRO_TTL_CHECK             0x80UL
6268894aa69aSMichael Chan 	__le16	max_agg_segs;
6269894aa69aSMichael Chan 	#define VNIC_TPA_QCFG_RESP_MAX_AGG_SEGS_1   0x0UL
6270894aa69aSMichael Chan 	#define VNIC_TPA_QCFG_RESP_MAX_AGG_SEGS_2   0x1UL
6271894aa69aSMichael Chan 	#define VNIC_TPA_QCFG_RESP_MAX_AGG_SEGS_4   0x2UL
6272894aa69aSMichael Chan 	#define VNIC_TPA_QCFG_RESP_MAX_AGG_SEGS_8   0x3UL
6273894aa69aSMichael Chan 	#define VNIC_TPA_QCFG_RESP_MAX_AGG_SEGS_MAX 0x1fUL
6274894aa69aSMichael Chan 	#define VNIC_TPA_QCFG_RESP_MAX_AGG_SEGS_LAST VNIC_TPA_QCFG_RESP_MAX_AGG_SEGS_MAX
6275894aa69aSMichael Chan 	__le16	max_aggs;
6276894aa69aSMichael Chan 	#define VNIC_TPA_QCFG_RESP_MAX_AGGS_1   0x0UL
6277894aa69aSMichael Chan 	#define VNIC_TPA_QCFG_RESP_MAX_AGGS_2   0x1UL
6278894aa69aSMichael Chan 	#define VNIC_TPA_QCFG_RESP_MAX_AGGS_4   0x2UL
6279894aa69aSMichael Chan 	#define VNIC_TPA_QCFG_RESP_MAX_AGGS_8   0x3UL
6280894aa69aSMichael Chan 	#define VNIC_TPA_QCFG_RESP_MAX_AGGS_16  0x4UL
6281894aa69aSMichael Chan 	#define VNIC_TPA_QCFG_RESP_MAX_AGGS_MAX 0x7UL
6282894aa69aSMichael Chan 	#define VNIC_TPA_QCFG_RESP_MAX_AGGS_LAST VNIC_TPA_QCFG_RESP_MAX_AGGS_MAX
6283894aa69aSMichael Chan 	__le32	max_agg_timer;
6284894aa69aSMichael Chan 	__le32	min_agg_len;
6285894aa69aSMichael Chan 	u8	unused_0[7];
6286894aa69aSMichael Chan 	u8	valid;
6287894aa69aSMichael Chan };
6288894aa69aSMichael Chan 
6289894aa69aSMichael Chan /* hwrm_vnic_rss_cfg_input (size:384b/48B) */
6290c0c050c5SMichael Chan struct hwrm_vnic_rss_cfg_input {
6291c0c050c5SMichael Chan 	__le16	req_type;
6292c0c050c5SMichael Chan 	__le16	cmpl_ring;
6293c0c050c5SMichael Chan 	__le16	seq_id;
6294c0c050c5SMichael Chan 	__le16	target_id;
6295c0c050c5SMichael Chan 	__le64	resp_addr;
6296c0c050c5SMichael Chan 	__le32	hash_type;
6297c0c050c5SMichael Chan 	#define VNIC_RSS_CFG_REQ_HASH_TYPE_IPV4                0x1UL
6298c0c050c5SMichael Chan 	#define VNIC_RSS_CFG_REQ_HASH_TYPE_TCP_IPV4            0x2UL
6299c0c050c5SMichael Chan 	#define VNIC_RSS_CFG_REQ_HASH_TYPE_UDP_IPV4            0x4UL
6300c0c050c5SMichael Chan 	#define VNIC_RSS_CFG_REQ_HASH_TYPE_IPV6                0x8UL
6301c0c050c5SMichael Chan 	#define VNIC_RSS_CFG_REQ_HASH_TYPE_TCP_IPV6            0x10UL
6302c0c050c5SMichael Chan 	#define VNIC_RSS_CFG_REQ_HASH_TYPE_UDP_IPV6            0x20UL
63032895c153SMichael Chan 	#define VNIC_RSS_CFG_REQ_HASH_TYPE_IPV6_FLOW_LABEL     0x40UL
6304ad04cc05SMichael Chan 	#define VNIC_RSS_CFG_REQ_HASH_TYPE_AH_SPI_IPV4         0x80UL
6305ad04cc05SMichael Chan 	#define VNIC_RSS_CFG_REQ_HASH_TYPE_ESP_SPI_IPV4        0x100UL
6306ad04cc05SMichael Chan 	#define VNIC_RSS_CFG_REQ_HASH_TYPE_AH_SPI_IPV6         0x200UL
6307ad04cc05SMichael Chan 	#define VNIC_RSS_CFG_REQ_HASH_TYPE_ESP_SPI_IPV6        0x400UL
63086fc92c33SMichael Chan 	__le16	vnic_id;
63096fc92c33SMichael Chan 	u8	ring_table_pair_index;
63106fc92c33SMichael Chan 	u8	hash_mode_flags;
63116fc92c33SMichael Chan 	#define VNIC_RSS_CFG_REQ_HASH_MODE_FLAGS_DEFAULT         0x1UL
63126fc92c33SMichael Chan 	#define VNIC_RSS_CFG_REQ_HASH_MODE_FLAGS_INNERMOST_4     0x2UL
63136fc92c33SMichael Chan 	#define VNIC_RSS_CFG_REQ_HASH_MODE_FLAGS_INNERMOST_2     0x4UL
63146fc92c33SMichael Chan 	#define VNIC_RSS_CFG_REQ_HASH_MODE_FLAGS_OUTERMOST_4     0x8UL
63156fc92c33SMichael Chan 	#define VNIC_RSS_CFG_REQ_HASH_MODE_FLAGS_OUTERMOST_2     0x10UL
6316c0c050c5SMichael Chan 	__le64	ring_grp_tbl_addr;
6317c0c050c5SMichael Chan 	__le64	hash_key_tbl_addr;
6318c0c050c5SMichael Chan 	__le16	rss_ctx_idx;
631921e70778SMichael Chan 	u8	flags;
632021e70778SMichael Chan 	#define VNIC_RSS_CFG_REQ_FLAGS_HASH_TYPE_INCLUDE     0x1UL
632121e70778SMichael Chan 	#define VNIC_RSS_CFG_REQ_FLAGS_HASH_TYPE_EXCLUDE     0x2UL
6322ad04cc05SMichael Chan 	u8	ring_select_mode;
6323ad04cc05SMichael Chan 	#define VNIC_RSS_CFG_REQ_RING_SELECT_MODE_TOEPLITZ          0x0UL
6324ad04cc05SMichael Chan 	#define VNIC_RSS_CFG_REQ_RING_SELECT_MODE_XOR               0x1UL
6325ad04cc05SMichael Chan 	#define VNIC_RSS_CFG_REQ_RING_SELECT_MODE_TOEPLITZ_CHECKSUM 0x2UL
6326ad04cc05SMichael Chan 	#define VNIC_RSS_CFG_REQ_RING_SELECT_MODE_LAST             VNIC_RSS_CFG_REQ_RING_SELECT_MODE_TOEPLITZ_CHECKSUM
632721e70778SMichael Chan 	u8	unused_1[4];
6328c0c050c5SMichael Chan };
6329c0c050c5SMichael Chan 
6330894aa69aSMichael Chan /* hwrm_vnic_rss_cfg_output (size:128b/16B) */
6331c0c050c5SMichael Chan struct hwrm_vnic_rss_cfg_output {
6332c0c050c5SMichael Chan 	__le16	error_code;
6333c0c050c5SMichael Chan 	__le16	req_type;
6334c0c050c5SMichael Chan 	__le16	seq_id;
6335c0c050c5SMichael Chan 	__le16	resp_len;
6336894aa69aSMichael Chan 	u8	unused_0[7];
6337c0c050c5SMichael Chan 	u8	valid;
6338c0c050c5SMichael Chan };
6339c0c050c5SMichael Chan 
634041136ab3SMichael Chan /* hwrm_vnic_rss_cfg_cmd_err (size:64b/8B) */
634141136ab3SMichael Chan struct hwrm_vnic_rss_cfg_cmd_err {
634241136ab3SMichael Chan 	u8	code;
634341136ab3SMichael Chan 	#define VNIC_RSS_CFG_CMD_ERR_CODE_UNKNOWN             0x0UL
634441136ab3SMichael Chan 	#define VNIC_RSS_CFG_CMD_ERR_CODE_INTERFACE_NOT_READY 0x1UL
634541136ab3SMichael Chan 	#define VNIC_RSS_CFG_CMD_ERR_CODE_LAST               VNIC_RSS_CFG_CMD_ERR_CODE_INTERFACE_NOT_READY
634641136ab3SMichael Chan 	u8	unused_0[7];
634741136ab3SMichael Chan };
634841136ab3SMichael Chan 
634998a4322bSEdwin Peer /* hwrm_vnic_rss_qcfg_input (size:192b/24B) */
635098a4322bSEdwin Peer struct hwrm_vnic_rss_qcfg_input {
635198a4322bSEdwin Peer 	__le16	req_type;
635298a4322bSEdwin Peer 	__le16	cmpl_ring;
635398a4322bSEdwin Peer 	__le16	seq_id;
635498a4322bSEdwin Peer 	__le16	target_id;
635598a4322bSEdwin Peer 	__le64	resp_addr;
635698a4322bSEdwin Peer 	__le16	rss_ctx_idx;
635798a4322bSEdwin Peer 	__le16	vnic_id;
635898a4322bSEdwin Peer 	u8	unused_0[4];
635998a4322bSEdwin Peer };
636098a4322bSEdwin Peer 
636198a4322bSEdwin Peer /* hwrm_vnic_rss_qcfg_output (size:512b/64B) */
636298a4322bSEdwin Peer struct hwrm_vnic_rss_qcfg_output {
636398a4322bSEdwin Peer 	__le16	error_code;
636498a4322bSEdwin Peer 	__le16	req_type;
636598a4322bSEdwin Peer 	__le16	seq_id;
636698a4322bSEdwin Peer 	__le16	resp_len;
636798a4322bSEdwin Peer 	__le32	hash_type;
636898a4322bSEdwin Peer 	#define VNIC_RSS_QCFG_RESP_HASH_TYPE_IPV4                0x1UL
636998a4322bSEdwin Peer 	#define VNIC_RSS_QCFG_RESP_HASH_TYPE_TCP_IPV4            0x2UL
637098a4322bSEdwin Peer 	#define VNIC_RSS_QCFG_RESP_HASH_TYPE_UDP_IPV4            0x4UL
637198a4322bSEdwin Peer 	#define VNIC_RSS_QCFG_RESP_HASH_TYPE_IPV6                0x8UL
637298a4322bSEdwin Peer 	#define VNIC_RSS_QCFG_RESP_HASH_TYPE_TCP_IPV6            0x10UL
637398a4322bSEdwin Peer 	#define VNIC_RSS_QCFG_RESP_HASH_TYPE_UDP_IPV6            0x20UL
637498a4322bSEdwin Peer 	#define VNIC_RSS_QCFG_RESP_HASH_TYPE_IPV6_FLOW_LABEL     0x40UL
637598a4322bSEdwin Peer 	#define VNIC_RSS_QCFG_RESP_HASH_TYPE_AH_SPI_IPV4         0x80UL
637698a4322bSEdwin Peer 	#define VNIC_RSS_QCFG_RESP_HASH_TYPE_ESP_SPI_IPV4        0x100UL
637798a4322bSEdwin Peer 	#define VNIC_RSS_QCFG_RESP_HASH_TYPE_AH_SPI_IPV6         0x200UL
637898a4322bSEdwin Peer 	#define VNIC_RSS_QCFG_RESP_HASH_TYPE_ESP_SPI_IPV6        0x400UL
637998a4322bSEdwin Peer 	u8	unused_0[4];
638098a4322bSEdwin Peer 	__le32	hash_key[10];
638198a4322bSEdwin Peer 	u8	hash_mode_flags;
638298a4322bSEdwin Peer 	#define VNIC_RSS_QCFG_RESP_HASH_MODE_FLAGS_DEFAULT         0x1UL
638398a4322bSEdwin Peer 	#define VNIC_RSS_QCFG_RESP_HASH_MODE_FLAGS_INNERMOST_4     0x2UL
638498a4322bSEdwin Peer 	#define VNIC_RSS_QCFG_RESP_HASH_MODE_FLAGS_INNERMOST_2     0x4UL
638598a4322bSEdwin Peer 	#define VNIC_RSS_QCFG_RESP_HASH_MODE_FLAGS_OUTERMOST_4     0x8UL
638698a4322bSEdwin Peer 	#define VNIC_RSS_QCFG_RESP_HASH_MODE_FLAGS_OUTERMOST_2     0x10UL
638798a4322bSEdwin Peer 	u8	ring_select_mode;
638898a4322bSEdwin Peer 	#define VNIC_RSS_QCFG_RESP_RING_SELECT_MODE_TOEPLITZ          0x0UL
638998a4322bSEdwin Peer 	#define VNIC_RSS_QCFG_RESP_RING_SELECT_MODE_XOR               0x1UL
639098a4322bSEdwin Peer 	#define VNIC_RSS_QCFG_RESP_RING_SELECT_MODE_TOEPLITZ_CHECKSUM 0x2UL
639198a4322bSEdwin Peer 	#define VNIC_RSS_QCFG_RESP_RING_SELECT_MODE_LAST             VNIC_RSS_QCFG_RESP_RING_SELECT_MODE_TOEPLITZ_CHECKSUM
639298a4322bSEdwin Peer 	u8	unused_1[5];
639398a4322bSEdwin Peer 	u8	valid;
639498a4322bSEdwin Peer };
639598a4322bSEdwin Peer 
6396894aa69aSMichael Chan /* hwrm_vnic_plcmodes_cfg_input (size:320b/40B) */
6397c0c050c5SMichael Chan struct hwrm_vnic_plcmodes_cfg_input {
6398c0c050c5SMichael Chan 	__le16	req_type;
6399c0c050c5SMichael Chan 	__le16	cmpl_ring;
6400c0c050c5SMichael Chan 	__le16	seq_id;
6401c0c050c5SMichael Chan 	__le16	target_id;
6402c0c050c5SMichael Chan 	__le64	resp_addr;
6403c0c050c5SMichael Chan 	__le32	flags;
6404c0c050c5SMichael Chan 	#define VNIC_PLCMODES_CFG_REQ_FLAGS_REGULAR_PLACEMENT     0x1UL
6405c0c050c5SMichael Chan 	#define VNIC_PLCMODES_CFG_REQ_FLAGS_JUMBO_PLACEMENT       0x2UL
6406c0c050c5SMichael Chan 	#define VNIC_PLCMODES_CFG_REQ_FLAGS_HDS_IPV4              0x4UL
6407c0c050c5SMichael Chan 	#define VNIC_PLCMODES_CFG_REQ_FLAGS_HDS_IPV6              0x8UL
6408c0c050c5SMichael Chan 	#define VNIC_PLCMODES_CFG_REQ_FLAGS_HDS_FCOE              0x10UL
6409c0c050c5SMichael Chan 	#define VNIC_PLCMODES_CFG_REQ_FLAGS_HDS_ROCE              0x20UL
6410bfc6e5fbSMichael Chan 	#define VNIC_PLCMODES_CFG_REQ_FLAGS_VIRTIO_PLACEMENT      0x40UL
6411c0c050c5SMichael Chan 	__le32	enables;
6412c0c050c5SMichael Chan 	#define VNIC_PLCMODES_CFG_REQ_ENABLES_JUMBO_THRESH_VALID      0x1UL
6413c0c050c5SMichael Chan 	#define VNIC_PLCMODES_CFG_REQ_ENABLES_HDS_OFFSET_VALID        0x2UL
6414c0c050c5SMichael Chan 	#define VNIC_PLCMODES_CFG_REQ_ENABLES_HDS_THRESHOLD_VALID     0x4UL
6415bfc6e5fbSMichael Chan 	#define VNIC_PLCMODES_CFG_REQ_ENABLES_MAX_BDS_VALID           0x8UL
6416c0c050c5SMichael Chan 	__le32	vnic_id;
6417c0c050c5SMichael Chan 	__le16	jumbo_thresh;
6418c0c050c5SMichael Chan 	__le16	hds_offset;
6419c0c050c5SMichael Chan 	__le16	hds_threshold;
6420bfc6e5fbSMichael Chan 	__le16	max_bds;
6421bfc6e5fbSMichael Chan 	u8	unused_0[4];
6422c0c050c5SMichael Chan };
6423c0c050c5SMichael Chan 
6424894aa69aSMichael Chan /* hwrm_vnic_plcmodes_cfg_output (size:128b/16B) */
6425c0c050c5SMichael Chan struct hwrm_vnic_plcmodes_cfg_output {
6426c0c050c5SMichael Chan 	__le16	error_code;
6427c0c050c5SMichael Chan 	__le16	req_type;
6428c0c050c5SMichael Chan 	__le16	seq_id;
6429c0c050c5SMichael Chan 	__le16	resp_len;
6430894aa69aSMichael Chan 	u8	unused_0[7];
6431c0c050c5SMichael Chan 	u8	valid;
6432c0c050c5SMichael Chan };
6433c0c050c5SMichael Chan 
6434894aa69aSMichael Chan /* hwrm_vnic_rss_cos_lb_ctx_alloc_input (size:128b/16B) */
6435c0c050c5SMichael Chan struct hwrm_vnic_rss_cos_lb_ctx_alloc_input {
6436c0c050c5SMichael Chan 	__le16	req_type;
6437c0c050c5SMichael Chan 	__le16	cmpl_ring;
6438c0c050c5SMichael Chan 	__le16	seq_id;
6439c0c050c5SMichael Chan 	__le16	target_id;
6440c0c050c5SMichael Chan 	__le64	resp_addr;
6441c0c050c5SMichael Chan };
6442c0c050c5SMichael Chan 
6443894aa69aSMichael Chan /* hwrm_vnic_rss_cos_lb_ctx_alloc_output (size:128b/16B) */
6444c0c050c5SMichael Chan struct hwrm_vnic_rss_cos_lb_ctx_alloc_output {
6445c0c050c5SMichael Chan 	__le16	error_code;
6446c0c050c5SMichael Chan 	__le16	req_type;
6447c0c050c5SMichael Chan 	__le16	seq_id;
6448c0c050c5SMichael Chan 	__le16	resp_len;
6449c0c050c5SMichael Chan 	__le16	rss_cos_lb_ctx_id;
6450894aa69aSMichael Chan 	u8	unused_0[5];
6451c0c050c5SMichael Chan 	u8	valid;
6452c0c050c5SMichael Chan };
6453c0c050c5SMichael Chan 
6454894aa69aSMichael Chan /* hwrm_vnic_rss_cos_lb_ctx_free_input (size:192b/24B) */
6455c0c050c5SMichael Chan struct hwrm_vnic_rss_cos_lb_ctx_free_input {
6456c0c050c5SMichael Chan 	__le16	req_type;
6457c0c050c5SMichael Chan 	__le16	cmpl_ring;
6458c0c050c5SMichael Chan 	__le16	seq_id;
6459c0c050c5SMichael Chan 	__le16	target_id;
6460c0c050c5SMichael Chan 	__le64	resp_addr;
6461c0c050c5SMichael Chan 	__le16	rss_cos_lb_ctx_id;
6462894aa69aSMichael Chan 	u8	unused_0[6];
6463c0c050c5SMichael Chan };
6464c0c050c5SMichael Chan 
6465894aa69aSMichael Chan /* hwrm_vnic_rss_cos_lb_ctx_free_output (size:128b/16B) */
6466c0c050c5SMichael Chan struct hwrm_vnic_rss_cos_lb_ctx_free_output {
6467c0c050c5SMichael Chan 	__le16	error_code;
6468c0c050c5SMichael Chan 	__le16	req_type;
6469c0c050c5SMichael Chan 	__le16	seq_id;
6470c0c050c5SMichael Chan 	__le16	resp_len;
6471894aa69aSMichael Chan 	u8	unused_0[7];
6472c0c050c5SMichael Chan 	u8	valid;
6473c0c050c5SMichael Chan };
6474c0c050c5SMichael Chan 
64756fc92c33SMichael Chan /* hwrm_ring_alloc_input (size:704b/88B) */
6476c0c050c5SMichael Chan struct hwrm_ring_alloc_input {
6477c0c050c5SMichael Chan 	__le16	req_type;
6478c0c050c5SMichael Chan 	__le16	cmpl_ring;
6479c0c050c5SMichael Chan 	__le16	seq_id;
6480c0c050c5SMichael Chan 	__le16	target_id;
6481c0c050c5SMichael Chan 	__le64	resp_addr;
6482c0c050c5SMichael Chan 	__le32	enables;
6483441cabbbSMichael Chan 	#define RING_ALLOC_REQ_ENABLES_RING_ARB_CFG          0x2UL
6484c0c050c5SMichael Chan 	#define RING_ALLOC_REQ_ENABLES_STAT_CTX_ID_VALID     0x8UL
6485c0c050c5SMichael Chan 	#define RING_ALLOC_REQ_ENABLES_MAX_BW_VALID          0x20UL
64866fc92c33SMichael Chan 	#define RING_ALLOC_REQ_ENABLES_RX_RING_ID_VALID      0x40UL
64876fc92c33SMichael Chan 	#define RING_ALLOC_REQ_ENABLES_NQ_RING_ID_VALID      0x80UL
64886fc92c33SMichael Chan 	#define RING_ALLOC_REQ_ENABLES_RX_BUF_SIZE_VALID     0x100UL
6489bfc6e5fbSMichael Chan 	#define RING_ALLOC_REQ_ENABLES_SCHQ_ID               0x200UL
64909d6b648cSMichael Chan 	#define RING_ALLOC_REQ_ENABLES_MPC_CHNLS_TYPE        0x400UL
6491c0c050c5SMichael Chan 	u8	ring_type;
6492bac9a7e0SMichael Chan 	#define RING_ALLOC_REQ_RING_TYPE_L2_CMPL   0x0UL
6493441cabbbSMichael Chan 	#define RING_ALLOC_REQ_RING_TYPE_TX        0x1UL
6494441cabbbSMichael Chan 	#define RING_ALLOC_REQ_RING_TYPE_RX        0x2UL
6495bac9a7e0SMichael Chan 	#define RING_ALLOC_REQ_RING_TYPE_ROCE_CMPL 0x3UL
64966fc92c33SMichael Chan 	#define RING_ALLOC_REQ_RING_TYPE_RX_AGG    0x4UL
64976fc92c33SMichael Chan 	#define RING_ALLOC_REQ_RING_TYPE_NQ        0x5UL
64986fc92c33SMichael Chan 	#define RING_ALLOC_REQ_RING_TYPE_LAST     RING_ALLOC_REQ_RING_TYPE_NQ
649921e70778SMichael Chan 	u8	cmpl_coal_cnt;
650021e70778SMichael Chan 	#define RING_ALLOC_REQ_CMPL_COAL_CNT_COAL_OFF 0x0UL
650121e70778SMichael Chan 	#define RING_ALLOC_REQ_CMPL_COAL_CNT_COAL_4   0x1UL
650221e70778SMichael Chan 	#define RING_ALLOC_REQ_CMPL_COAL_CNT_COAL_8   0x2UL
650321e70778SMichael Chan 	#define RING_ALLOC_REQ_CMPL_COAL_CNT_COAL_12  0x3UL
650421e70778SMichael Chan 	#define RING_ALLOC_REQ_CMPL_COAL_CNT_COAL_16  0x4UL
650521e70778SMichael Chan 	#define RING_ALLOC_REQ_CMPL_COAL_CNT_COAL_24  0x5UL
650621e70778SMichael Chan 	#define RING_ALLOC_REQ_CMPL_COAL_CNT_COAL_32  0x6UL
650721e70778SMichael Chan 	#define RING_ALLOC_REQ_CMPL_COAL_CNT_COAL_48  0x7UL
650821e70778SMichael Chan 	#define RING_ALLOC_REQ_CMPL_COAL_CNT_COAL_64  0x8UL
650921e70778SMichael Chan 	#define RING_ALLOC_REQ_CMPL_COAL_CNT_COAL_96  0x9UL
651021e70778SMichael Chan 	#define RING_ALLOC_REQ_CMPL_COAL_CNT_COAL_128 0xaUL
651121e70778SMichael Chan 	#define RING_ALLOC_REQ_CMPL_COAL_CNT_COAL_192 0xbUL
651221e70778SMichael Chan 	#define RING_ALLOC_REQ_CMPL_COAL_CNT_COAL_256 0xcUL
651321e70778SMichael Chan 	#define RING_ALLOC_REQ_CMPL_COAL_CNT_COAL_320 0xdUL
651421e70778SMichael Chan 	#define RING_ALLOC_REQ_CMPL_COAL_CNT_COAL_384 0xeUL
651521e70778SMichael Chan 	#define RING_ALLOC_REQ_CMPL_COAL_CNT_COAL_MAX 0xfUL
651621e70778SMichael Chan 	#define RING_ALLOC_REQ_CMPL_COAL_CNT_LAST    RING_ALLOC_REQ_CMPL_COAL_CNT_COAL_MAX
651731d357c0SMichael Chan 	__le16	flags;
651831d357c0SMichael Chan 	#define RING_ALLOC_REQ_FLAGS_RX_SOP_PAD                        0x1UL
6519ad04cc05SMichael Chan 	#define RING_ALLOC_REQ_FLAGS_DISABLE_CQ_OVERFLOW_DETECTION     0x2UL
6520ad04cc05SMichael Chan 	#define RING_ALLOC_REQ_FLAGS_NQ_DBR_PACING                     0x4UL
652184a911dbSMichael Chan 	#define RING_ALLOC_REQ_FLAGS_TX_PKT_TS_CMPL_ENABLE             0x8UL
6522c0c050c5SMichael Chan 	__le64	page_tbl_addr;
6523c0c050c5SMichael Chan 	__le32	fbo;
6524c0c050c5SMichael Chan 	u8	page_size;
6525c0c050c5SMichael Chan 	u8	page_tbl_depth;
6526bfc6e5fbSMichael Chan 	__le16	schq_id;
6527c0c050c5SMichael Chan 	__le32	length;
6528c0c050c5SMichael Chan 	__le16	logical_id;
6529c0c050c5SMichael Chan 	__le16	cmpl_ring_id;
6530c0c050c5SMichael Chan 	__le16	queue_id;
65316fc92c33SMichael Chan 	__le16	rx_buf_size;
65326fc92c33SMichael Chan 	__le16	rx_ring_id;
65336fc92c33SMichael Chan 	__le16	nq_ring_id;
6534441cabbbSMichael Chan 	__le16	ring_arb_cfg;
6535441cabbbSMichael Chan 	#define RING_ALLOC_REQ_RING_ARB_CFG_ARB_POLICY_MASK      0xfUL
6536441cabbbSMichael Chan 	#define RING_ALLOC_REQ_RING_ARB_CFG_ARB_POLICY_SFT       0
6537894aa69aSMichael Chan 	#define RING_ALLOC_REQ_RING_ARB_CFG_ARB_POLICY_SP          0x1UL
6538894aa69aSMichael Chan 	#define RING_ALLOC_REQ_RING_ARB_CFG_ARB_POLICY_WFQ         0x2UL
6539441cabbbSMichael Chan 	#define RING_ALLOC_REQ_RING_ARB_CFG_ARB_POLICY_LAST       RING_ALLOC_REQ_RING_ARB_CFG_ARB_POLICY_WFQ
6540441cabbbSMichael Chan 	#define RING_ALLOC_REQ_RING_ARB_CFG_RSVD_MASK            0xf0UL
6541441cabbbSMichael Chan 	#define RING_ALLOC_REQ_RING_ARB_CFG_RSVD_SFT             4
6542441cabbbSMichael Chan 	#define RING_ALLOC_REQ_RING_ARB_CFG_ARB_POLICY_PARAM_MASK 0xff00UL
6543441cabbbSMichael Chan 	#define RING_ALLOC_REQ_RING_ARB_CFG_ARB_POLICY_PARAM_SFT 8
6544894aa69aSMichael Chan 	__le16	unused_3;
6545c193554eSMichael Chan 	__le32	reserved3;
6546c0c050c5SMichael Chan 	__le32	stat_ctx_id;
6547c193554eSMichael Chan 	__le32	reserved4;
6548c0c050c5SMichael Chan 	__le32	max_bw;
6549441cabbbSMichael Chan 	#define RING_ALLOC_REQ_MAX_BW_BW_VALUE_MASK             0xfffffffUL
6550441cabbbSMichael Chan 	#define RING_ALLOC_REQ_MAX_BW_BW_VALUE_SFT              0
6551bac9a7e0SMichael Chan 	#define RING_ALLOC_REQ_MAX_BW_SCALE                     0x10000000UL
6552bac9a7e0SMichael Chan 	#define RING_ALLOC_REQ_MAX_BW_SCALE_BITS                  (0x0UL << 28)
6553bac9a7e0SMichael Chan 	#define RING_ALLOC_REQ_MAX_BW_SCALE_BYTES                 (0x1UL << 28)
6554bac9a7e0SMichael Chan 	#define RING_ALLOC_REQ_MAX_BW_SCALE_LAST                 RING_ALLOC_REQ_MAX_BW_SCALE_BYTES
6555441cabbbSMichael Chan 	#define RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
6556441cabbbSMichael Chan 	#define RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_SFT         29
6557bac9a7e0SMichael Chan 	#define RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
6558bac9a7e0SMichael Chan 	#define RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
6559bac9a7e0SMichael Chan 	#define RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
6560bac9a7e0SMichael Chan 	#define RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
6561441cabbbSMichael Chan 	#define RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
6562441cabbbSMichael Chan 	#define RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
6563441cabbbSMichael Chan 	#define RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_LAST         RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_INVALID
6564c0c050c5SMichael Chan 	u8	int_mode;
6565441cabbbSMichael Chan 	#define RING_ALLOC_REQ_INT_MODE_LEGACY 0x0UL
6566441cabbbSMichael Chan 	#define RING_ALLOC_REQ_INT_MODE_RSVD   0x1UL
6567441cabbbSMichael Chan 	#define RING_ALLOC_REQ_INT_MODE_MSIX   0x2UL
6568441cabbbSMichael Chan 	#define RING_ALLOC_REQ_INT_MODE_POLL   0x3UL
6569894aa69aSMichael Chan 	#define RING_ALLOC_REQ_INT_MODE_LAST  RING_ALLOC_REQ_INT_MODE_POLL
65709d6b648cSMichael Chan 	u8	mpc_chnls_type;
65719d6b648cSMichael Chan 	#define RING_ALLOC_REQ_MPC_CHNLS_TYPE_TCE     0x0UL
65729d6b648cSMichael Chan 	#define RING_ALLOC_REQ_MPC_CHNLS_TYPE_RCE     0x1UL
65739d6b648cSMichael Chan 	#define RING_ALLOC_REQ_MPC_CHNLS_TYPE_TE_CFA  0x2UL
65749d6b648cSMichael Chan 	#define RING_ALLOC_REQ_MPC_CHNLS_TYPE_RE_CFA  0x3UL
65759d6b648cSMichael Chan 	#define RING_ALLOC_REQ_MPC_CHNLS_TYPE_PRIMATE 0x4UL
65769d6b648cSMichael Chan 	#define RING_ALLOC_REQ_MPC_CHNLS_TYPE_LAST   RING_ALLOC_REQ_MPC_CHNLS_TYPE_PRIMATE
65779d6b648cSMichael Chan 	u8	unused_4[2];
65786fc92c33SMichael Chan 	__le64	cq_handle;
6579c0c050c5SMichael Chan };
6580c0c050c5SMichael Chan 
6581894aa69aSMichael Chan /* hwrm_ring_alloc_output (size:128b/16B) */
6582c0c050c5SMichael Chan struct hwrm_ring_alloc_output {
6583c0c050c5SMichael Chan 	__le16	error_code;
6584c0c050c5SMichael Chan 	__le16	req_type;
6585c0c050c5SMichael Chan 	__le16	seq_id;
6586c0c050c5SMichael Chan 	__le16	resp_len;
6587c0c050c5SMichael Chan 	__le16	ring_id;
6588c0c050c5SMichael Chan 	__le16	logical_ring_id;
658916db6323SMichael Chan 	u8	push_buffer_index;
659016db6323SMichael Chan 	#define RING_ALLOC_RESP_PUSH_BUFFER_INDEX_PING_BUFFER 0x0UL
659116db6323SMichael Chan 	#define RING_ALLOC_RESP_PUSH_BUFFER_INDEX_PONG_BUFFER 0x1UL
659216db6323SMichael Chan 	#define RING_ALLOC_RESP_PUSH_BUFFER_INDEX_LAST       RING_ALLOC_RESP_PUSH_BUFFER_INDEX_PONG_BUFFER
659316db6323SMichael Chan 	u8	unused_0[2];
6594c0c050c5SMichael Chan 	u8	valid;
6595c0c050c5SMichael Chan };
6596c0c050c5SMichael Chan 
659731f67c2eSMichael Chan /* hwrm_ring_free_input (size:256b/32B) */
6598c0c050c5SMichael Chan struct hwrm_ring_free_input {
6599c0c050c5SMichael Chan 	__le16	req_type;
6600c0c050c5SMichael Chan 	__le16	cmpl_ring;
6601c0c050c5SMichael Chan 	__le16	seq_id;
6602c0c050c5SMichael Chan 	__le16	target_id;
6603c0c050c5SMichael Chan 	__le64	resp_addr;
6604c0c050c5SMichael Chan 	u8	ring_type;
6605bac9a7e0SMichael Chan 	#define RING_FREE_REQ_RING_TYPE_L2_CMPL   0x0UL
6606441cabbbSMichael Chan 	#define RING_FREE_REQ_RING_TYPE_TX        0x1UL
6607441cabbbSMichael Chan 	#define RING_FREE_REQ_RING_TYPE_RX        0x2UL
6608bac9a7e0SMichael Chan 	#define RING_FREE_REQ_RING_TYPE_ROCE_CMPL 0x3UL
66096fc92c33SMichael Chan 	#define RING_FREE_REQ_RING_TYPE_RX_AGG    0x4UL
66106fc92c33SMichael Chan 	#define RING_FREE_REQ_RING_TYPE_NQ        0x5UL
66116fc92c33SMichael Chan 	#define RING_FREE_REQ_RING_TYPE_LAST     RING_FREE_REQ_RING_TYPE_NQ
661231f67c2eSMichael Chan 	u8	flags;
661331f67c2eSMichael Chan 	#define RING_FREE_REQ_FLAGS_VIRTIO_RING_VALID 0x1UL
661431f67c2eSMichael Chan 	#define RING_FREE_REQ_FLAGS_LAST             RING_FREE_REQ_FLAGS_VIRTIO_RING_VALID
6615c0c050c5SMichael Chan 	__le16	ring_id;
661631f67c2eSMichael Chan 	__le32	prod_idx;
661731f67c2eSMichael Chan 	__le32	opaque;
661831f67c2eSMichael Chan 	__le32	unused_1;
6619c0c050c5SMichael Chan };
6620c0c050c5SMichael Chan 
6621894aa69aSMichael Chan /* hwrm_ring_free_output (size:128b/16B) */
6622c0c050c5SMichael Chan struct hwrm_ring_free_output {
6623c0c050c5SMichael Chan 	__le16	error_code;
6624c0c050c5SMichael Chan 	__le16	req_type;
6625c0c050c5SMichael Chan 	__le16	seq_id;
6626c0c050c5SMichael Chan 	__le16	resp_len;
6627894aa69aSMichael Chan 	u8	unused_0[7];
6628c0c050c5SMichael Chan 	u8	valid;
6629c0c050c5SMichael Chan };
6630c0c050c5SMichael Chan 
66313293ec23SMichael Chan /* hwrm_ring_reset_input (size:192b/24B) */
66323293ec23SMichael Chan struct hwrm_ring_reset_input {
66333293ec23SMichael Chan 	__le16	req_type;
66343293ec23SMichael Chan 	__le16	cmpl_ring;
66353293ec23SMichael Chan 	__le16	seq_id;
66363293ec23SMichael Chan 	__le16	target_id;
66373293ec23SMichael Chan 	__le64	resp_addr;
66383293ec23SMichael Chan 	u8	ring_type;
66393293ec23SMichael Chan 	#define RING_RESET_REQ_RING_TYPE_L2_CMPL     0x0UL
66403293ec23SMichael Chan 	#define RING_RESET_REQ_RING_TYPE_TX          0x1UL
66413293ec23SMichael Chan 	#define RING_RESET_REQ_RING_TYPE_RX          0x2UL
66423293ec23SMichael Chan 	#define RING_RESET_REQ_RING_TYPE_ROCE_CMPL   0x3UL
6643bfc6e5fbSMichael Chan 	#define RING_RESET_REQ_RING_TYPE_RX_RING_GRP 0x6UL
6644bfc6e5fbSMichael Chan 	#define RING_RESET_REQ_RING_TYPE_LAST       RING_RESET_REQ_RING_TYPE_RX_RING_GRP
66453293ec23SMichael Chan 	u8	unused_0;
66463293ec23SMichael Chan 	__le16	ring_id;
66473293ec23SMichael Chan 	u8	unused_1[4];
66483293ec23SMichael Chan };
66493293ec23SMichael Chan 
66503293ec23SMichael Chan /* hwrm_ring_reset_output (size:128b/16B) */
66513293ec23SMichael Chan struct hwrm_ring_reset_output {
66523293ec23SMichael Chan 	__le16	error_code;
66533293ec23SMichael Chan 	__le16	req_type;
66543293ec23SMichael Chan 	__le16	seq_id;
66553293ec23SMichael Chan 	__le16	resp_len;
665616db6323SMichael Chan 	u8	push_buffer_index;
665716db6323SMichael Chan 	#define RING_RESET_RESP_PUSH_BUFFER_INDEX_PING_BUFFER 0x0UL
665816db6323SMichael Chan 	#define RING_RESET_RESP_PUSH_BUFFER_INDEX_PONG_BUFFER 0x1UL
665916db6323SMichael Chan 	#define RING_RESET_RESP_PUSH_BUFFER_INDEX_LAST       RING_RESET_RESP_PUSH_BUFFER_INDEX_PONG_BUFFER
666016db6323SMichael Chan 	u8	unused_0[3];
66613293ec23SMichael Chan 	u8	consumer_idx[3];
66623293ec23SMichael Chan 	u8	valid;
66633293ec23SMichael Chan };
66643293ec23SMichael Chan 
66656fc92c33SMichael Chan /* hwrm_ring_aggint_qcaps_input (size:128b/16B) */
66666fc92c33SMichael Chan struct hwrm_ring_aggint_qcaps_input {
66676fc92c33SMichael Chan 	__le16	req_type;
66686fc92c33SMichael Chan 	__le16	cmpl_ring;
66696fc92c33SMichael Chan 	__le16	seq_id;
66706fc92c33SMichael Chan 	__le16	target_id;
66716fc92c33SMichael Chan 	__le64	resp_addr;
66726fc92c33SMichael Chan };
66736fc92c33SMichael Chan 
66746fc92c33SMichael Chan /* hwrm_ring_aggint_qcaps_output (size:384b/48B) */
66756fc92c33SMichael Chan struct hwrm_ring_aggint_qcaps_output {
66766fc92c33SMichael Chan 	__le16	error_code;
66776fc92c33SMichael Chan 	__le16	req_type;
66786fc92c33SMichael Chan 	__le16	seq_id;
66796fc92c33SMichael Chan 	__le16	resp_len;
66806fc92c33SMichael Chan 	__le32	cmpl_params;
66816fc92c33SMichael Chan 	#define RING_AGGINT_QCAPS_RESP_CMPL_PARAMS_INT_LAT_TMR_MIN                  0x1UL
66826fc92c33SMichael Chan 	#define RING_AGGINT_QCAPS_RESP_CMPL_PARAMS_INT_LAT_TMR_MAX                  0x2UL
66836fc92c33SMichael Chan 	#define RING_AGGINT_QCAPS_RESP_CMPL_PARAMS_TIMER_RESET                      0x4UL
66846fc92c33SMichael Chan 	#define RING_AGGINT_QCAPS_RESP_CMPL_PARAMS_RING_IDLE                        0x8UL
66856fc92c33SMichael Chan 	#define RING_AGGINT_QCAPS_RESP_CMPL_PARAMS_NUM_CMPL_DMA_AGGR                0x10UL
66866fc92c33SMichael Chan 	#define RING_AGGINT_QCAPS_RESP_CMPL_PARAMS_NUM_CMPL_DMA_AGGR_DURING_INT     0x20UL
66876fc92c33SMichael Chan 	#define RING_AGGINT_QCAPS_RESP_CMPL_PARAMS_CMPL_AGGR_DMA_TMR                0x40UL
66886fc92c33SMichael Chan 	#define RING_AGGINT_QCAPS_RESP_CMPL_PARAMS_CMPL_AGGR_DMA_TMR_DURING_INT     0x80UL
66896fc92c33SMichael Chan 	#define RING_AGGINT_QCAPS_RESP_CMPL_PARAMS_NUM_CMPL_AGGR_INT                0x100UL
66906fc92c33SMichael Chan 	__le32	nq_params;
66916fc92c33SMichael Chan 	#define RING_AGGINT_QCAPS_RESP_NQ_PARAMS_INT_LAT_TMR_MIN     0x1UL
66926fc92c33SMichael Chan 	__le16	num_cmpl_dma_aggr_min;
66936fc92c33SMichael Chan 	__le16	num_cmpl_dma_aggr_max;
66946fc92c33SMichael Chan 	__le16	num_cmpl_dma_aggr_during_int_min;
66956fc92c33SMichael Chan 	__le16	num_cmpl_dma_aggr_during_int_max;
66966fc92c33SMichael Chan 	__le16	cmpl_aggr_dma_tmr_min;
66976fc92c33SMichael Chan 	__le16	cmpl_aggr_dma_tmr_max;
66986fc92c33SMichael Chan 	__le16	cmpl_aggr_dma_tmr_during_int_min;
66996fc92c33SMichael Chan 	__le16	cmpl_aggr_dma_tmr_during_int_max;
67006fc92c33SMichael Chan 	__le16	int_lat_tmr_min_min;
67016fc92c33SMichael Chan 	__le16	int_lat_tmr_min_max;
67026fc92c33SMichael Chan 	__le16	int_lat_tmr_max_min;
67036fc92c33SMichael Chan 	__le16	int_lat_tmr_max_max;
67046fc92c33SMichael Chan 	__le16	num_cmpl_aggr_int_min;
67056fc92c33SMichael Chan 	__le16	num_cmpl_aggr_int_max;
67066fc92c33SMichael Chan 	__le16	timer_units;
67076fc92c33SMichael Chan 	u8	unused_0[1];
67086fc92c33SMichael Chan 	u8	valid;
67096fc92c33SMichael Chan };
67106fc92c33SMichael Chan 
6711894aa69aSMichael Chan /* hwrm_ring_cmpl_ring_qaggint_params_input (size:192b/24B) */
6712c0c050c5SMichael Chan struct hwrm_ring_cmpl_ring_qaggint_params_input {
6713c0c050c5SMichael Chan 	__le16	req_type;
6714c0c050c5SMichael Chan 	__le16	cmpl_ring;
6715c0c050c5SMichael Chan 	__le16	seq_id;
6716c0c050c5SMichael Chan 	__le16	target_id;
6717c0c050c5SMichael Chan 	__le64	resp_addr;
6718c0c050c5SMichael Chan 	__le16	ring_id;
6719460c2577SMichael Chan 	__le16	flags;
6720460c2577SMichael Chan 	#define RING_CMPL_RING_QAGGINT_PARAMS_REQ_FLAGS_UNUSED_0_MASK 0x3UL
6721460c2577SMichael Chan 	#define RING_CMPL_RING_QAGGINT_PARAMS_REQ_FLAGS_UNUSED_0_SFT 0
6722460c2577SMichael Chan 	#define RING_CMPL_RING_QAGGINT_PARAMS_REQ_FLAGS_IS_NQ        0x4UL
6723460c2577SMichael Chan 	u8	unused_0[4];
6724c0c050c5SMichael Chan };
6725c0c050c5SMichael Chan 
6726894aa69aSMichael Chan /* hwrm_ring_cmpl_ring_qaggint_params_output (size:256b/32B) */
6727c0c050c5SMichael Chan struct hwrm_ring_cmpl_ring_qaggint_params_output {
6728c0c050c5SMichael Chan 	__le16	error_code;
6729c0c050c5SMichael Chan 	__le16	req_type;
6730c0c050c5SMichael Chan 	__le16	seq_id;
6731c0c050c5SMichael Chan 	__le16	resp_len;
6732c0c050c5SMichael Chan 	__le16	flags;
6733c0c050c5SMichael Chan 	#define RING_CMPL_RING_QAGGINT_PARAMS_RESP_FLAGS_TIMER_RESET     0x1UL
6734c0c050c5SMichael Chan 	#define RING_CMPL_RING_QAGGINT_PARAMS_RESP_FLAGS_RING_IDLE       0x2UL
6735c0c050c5SMichael Chan 	__le16	num_cmpl_dma_aggr;
6736c0c050c5SMichael Chan 	__le16	num_cmpl_dma_aggr_during_int;
6737c0c050c5SMichael Chan 	__le16	cmpl_aggr_dma_tmr;
6738c0c050c5SMichael Chan 	__le16	cmpl_aggr_dma_tmr_during_int;
6739c0c050c5SMichael Chan 	__le16	int_lat_tmr_min;
6740c0c050c5SMichael Chan 	__le16	int_lat_tmr_max;
6741c0c050c5SMichael Chan 	__le16	num_cmpl_aggr_int;
6742894aa69aSMichael Chan 	u8	unused_0[7];
6743c0c050c5SMichael Chan 	u8	valid;
6744c0c050c5SMichael Chan };
6745c0c050c5SMichael Chan 
6746894aa69aSMichael Chan /* hwrm_ring_cmpl_ring_cfg_aggint_params_input (size:320b/40B) */
6747c0c050c5SMichael Chan struct hwrm_ring_cmpl_ring_cfg_aggint_params_input {
6748c0c050c5SMichael Chan 	__le16	req_type;
6749c0c050c5SMichael Chan 	__le16	cmpl_ring;
6750c0c050c5SMichael Chan 	__le16	seq_id;
6751c0c050c5SMichael Chan 	__le16	target_id;
6752c0c050c5SMichael Chan 	__le64	resp_addr;
6753c0c050c5SMichael Chan 	__le16	ring_id;
6754c0c050c5SMichael Chan 	__le16	flags;
6755c0c050c5SMichael Chan 	#define RING_CMPL_RING_CFG_AGGINT_PARAMS_REQ_FLAGS_TIMER_RESET     0x1UL
6756c0c050c5SMichael Chan 	#define RING_CMPL_RING_CFG_AGGINT_PARAMS_REQ_FLAGS_RING_IDLE       0x2UL
67576fc92c33SMichael Chan 	#define RING_CMPL_RING_CFG_AGGINT_PARAMS_REQ_FLAGS_IS_NQ           0x4UL
6758c0c050c5SMichael Chan 	__le16	num_cmpl_dma_aggr;
6759c0c050c5SMichael Chan 	__le16	num_cmpl_dma_aggr_during_int;
6760c0c050c5SMichael Chan 	__le16	cmpl_aggr_dma_tmr;
6761c0c050c5SMichael Chan 	__le16	cmpl_aggr_dma_tmr_during_int;
6762c0c050c5SMichael Chan 	__le16	int_lat_tmr_min;
6763c0c050c5SMichael Chan 	__le16	int_lat_tmr_max;
6764c0c050c5SMichael Chan 	__le16	num_cmpl_aggr_int;
67656fc92c33SMichael Chan 	__le16	enables;
67666fc92c33SMichael Chan 	#define RING_CMPL_RING_CFG_AGGINT_PARAMS_REQ_ENABLES_NUM_CMPL_DMA_AGGR                0x1UL
67676fc92c33SMichael Chan 	#define RING_CMPL_RING_CFG_AGGINT_PARAMS_REQ_ENABLES_NUM_CMPL_DMA_AGGR_DURING_INT     0x2UL
67686fc92c33SMichael Chan 	#define RING_CMPL_RING_CFG_AGGINT_PARAMS_REQ_ENABLES_CMPL_AGGR_DMA_TMR                0x4UL
67696fc92c33SMichael Chan 	#define RING_CMPL_RING_CFG_AGGINT_PARAMS_REQ_ENABLES_INT_LAT_TMR_MIN                  0x8UL
67706fc92c33SMichael Chan 	#define RING_CMPL_RING_CFG_AGGINT_PARAMS_REQ_ENABLES_INT_LAT_TMR_MAX                  0x10UL
67716fc92c33SMichael Chan 	#define RING_CMPL_RING_CFG_AGGINT_PARAMS_REQ_ENABLES_NUM_CMPL_AGGR_INT                0x20UL
67726fc92c33SMichael Chan 	u8	unused_0[4];
6773c0c050c5SMichael Chan };
6774c0c050c5SMichael Chan 
6775894aa69aSMichael Chan /* hwrm_ring_cmpl_ring_cfg_aggint_params_output (size:128b/16B) */
6776c0c050c5SMichael Chan struct hwrm_ring_cmpl_ring_cfg_aggint_params_output {
6777c0c050c5SMichael Chan 	__le16	error_code;
6778c0c050c5SMichael Chan 	__le16	req_type;
6779c0c050c5SMichael Chan 	__le16	seq_id;
6780c0c050c5SMichael Chan 	__le16	resp_len;
6781894aa69aSMichael Chan 	u8	unused_0[7];
6782c0c050c5SMichael Chan 	u8	valid;
6783c0c050c5SMichael Chan };
6784c0c050c5SMichael Chan 
6785894aa69aSMichael Chan /* hwrm_ring_grp_alloc_input (size:192b/24B) */
6786c0c050c5SMichael Chan struct hwrm_ring_grp_alloc_input {
6787c0c050c5SMichael Chan 	__le16	req_type;
6788c0c050c5SMichael Chan 	__le16	cmpl_ring;
6789c0c050c5SMichael Chan 	__le16	seq_id;
6790c0c050c5SMichael Chan 	__le16	target_id;
6791c0c050c5SMichael Chan 	__le64	resp_addr;
6792c0c050c5SMichael Chan 	__le16	cr;
6793c0c050c5SMichael Chan 	__le16	rr;
6794c0c050c5SMichael Chan 	__le16	ar;
6795c0c050c5SMichael Chan 	__le16	sc;
6796c0c050c5SMichael Chan };
6797c0c050c5SMichael Chan 
6798894aa69aSMichael Chan /* hwrm_ring_grp_alloc_output (size:128b/16B) */
6799c0c050c5SMichael Chan struct hwrm_ring_grp_alloc_output {
6800c0c050c5SMichael Chan 	__le16	error_code;
6801c0c050c5SMichael Chan 	__le16	req_type;
6802c0c050c5SMichael Chan 	__le16	seq_id;
6803c0c050c5SMichael Chan 	__le16	resp_len;
6804c0c050c5SMichael Chan 	__le32	ring_group_id;
6805894aa69aSMichael Chan 	u8	unused_0[3];
6806c0c050c5SMichael Chan 	u8	valid;
6807c0c050c5SMichael Chan };
6808c0c050c5SMichael Chan 
6809894aa69aSMichael Chan /* hwrm_ring_grp_free_input (size:192b/24B) */
6810c0c050c5SMichael Chan struct hwrm_ring_grp_free_input {
6811c0c050c5SMichael Chan 	__le16	req_type;
6812c0c050c5SMichael Chan 	__le16	cmpl_ring;
6813c0c050c5SMichael Chan 	__le16	seq_id;
6814c0c050c5SMichael Chan 	__le16	target_id;
6815c0c050c5SMichael Chan 	__le64	resp_addr;
6816c0c050c5SMichael Chan 	__le32	ring_group_id;
6817894aa69aSMichael Chan 	u8	unused_0[4];
6818c0c050c5SMichael Chan };
6819c0c050c5SMichael Chan 
6820894aa69aSMichael Chan /* hwrm_ring_grp_free_output (size:128b/16B) */
6821c0c050c5SMichael Chan struct hwrm_ring_grp_free_output {
6822c0c050c5SMichael Chan 	__le16	error_code;
6823c0c050c5SMichael Chan 	__le16	req_type;
6824c0c050c5SMichael Chan 	__le16	seq_id;
6825c0c050c5SMichael Chan 	__le16	resp_len;
6826894aa69aSMichael Chan 	u8	unused_0[7];
6827c0c050c5SMichael Chan 	u8	valid;
6828c0c050c5SMichael Chan };
6829bfc6e5fbSMichael Chan 
68303322479eSMichael Chan #define DEFAULT_FLOW_ID 0xFFFFFFFFUL
68313322479eSMichael Chan #define ROCEV1_FLOW_ID 0xFFFFFFFEUL
68323322479eSMichael Chan #define ROCEV2_FLOW_ID 0xFFFFFFFDUL
68333322479eSMichael Chan #define ROCEV2_CNP_FLOW_ID 0xFFFFFFFCUL
6834c0c050c5SMichael Chan 
6835894aa69aSMichael Chan /* hwrm_cfa_l2_filter_alloc_input (size:768b/96B) */
6836c0c050c5SMichael Chan struct hwrm_cfa_l2_filter_alloc_input {
6837c0c050c5SMichael Chan 	__le16	req_type;
6838c0c050c5SMichael Chan 	__le16	cmpl_ring;
6839c0c050c5SMichael Chan 	__le16	seq_id;
6840c0c050c5SMichael Chan 	__le16	target_id;
6841c0c050c5SMichael Chan 	__le64	resp_addr;
6842c0c050c5SMichael Chan 	__le32	flags;
6843c0c050c5SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_FLAGS_PATH              0x1UL
6844894aa69aSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_FLAGS_PATH_TX             0x0UL
6845894aa69aSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_FLAGS_PATH_RX             0x1UL
684611f15ed3SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_FLAGS_PATH_LAST          CFA_L2_FILTER_ALLOC_REQ_FLAGS_PATH_RX
6847c0c050c5SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_FLAGS_LOOPBACK          0x2UL
6848c0c050c5SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_FLAGS_DROP              0x4UL
6849c0c050c5SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_FLAGS_OUTERMOST         0x8UL
685031d357c0SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_FLAGS_TRAFFIC_MASK      0x30UL
685131d357c0SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_FLAGS_TRAFFIC_SFT       4
685231d357c0SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_FLAGS_TRAFFIC_NO_ROCE_L2  (0x0UL << 4)
685331d357c0SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_FLAGS_TRAFFIC_L2          (0x1UL << 4)
685431d357c0SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_FLAGS_TRAFFIC_ROCE        (0x2UL << 4)
685531d357c0SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_FLAGS_TRAFFIC_LAST       CFA_L2_FILTER_ALLOC_REQ_FLAGS_TRAFFIC_ROCE
68564a50ddc2SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_FLAGS_XDP_DISABLE       0x40UL
68574a50ddc2SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_FLAGS_SOURCE_VALID      0x80UL
6858c0c050c5SMichael Chan 	__le32	enables;
6859c0c050c5SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_ENABLES_L2_ADDR             0x1UL
6860c0c050c5SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_ENABLES_L2_ADDR_MASK        0x2UL
6861c0c050c5SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_ENABLES_L2_OVLAN            0x4UL
6862c0c050c5SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_ENABLES_L2_OVLAN_MASK       0x8UL
6863c0c050c5SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_ENABLES_L2_IVLAN            0x10UL
6864c0c050c5SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_ENABLES_L2_IVLAN_MASK       0x20UL
6865c0c050c5SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_ENABLES_T_L2_ADDR           0x40UL
6866c0c050c5SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_ENABLES_T_L2_ADDR_MASK      0x80UL
6867c0c050c5SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_ENABLES_T_L2_OVLAN          0x100UL
6868c0c050c5SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_ENABLES_T_L2_OVLAN_MASK     0x200UL
6869c0c050c5SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_ENABLES_T_L2_IVLAN          0x400UL
6870c0c050c5SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_ENABLES_T_L2_IVLAN_MASK     0x800UL
6871c0c050c5SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_ENABLES_SRC_TYPE            0x1000UL
6872c0c050c5SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_ENABLES_SRC_ID              0x2000UL
6873c0c050c5SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_ENABLES_TUNNEL_TYPE         0x4000UL
6874c193554eSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_ENABLES_DST_ID              0x8000UL
6875c0c050c5SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_ENABLES_MIRROR_VNIC_ID      0x10000UL
68764a50ddc2SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_ENABLES_NUM_VLANS           0x20000UL
68774a50ddc2SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_ENABLES_T_NUM_VLANS         0x40000UL
6878c0c050c5SMichael Chan 	u8	l2_addr[6];
68794a50ddc2SMichael Chan 	u8	num_vlans;
68804a50ddc2SMichael Chan 	u8	t_num_vlans;
6881c0c050c5SMichael Chan 	u8	l2_addr_mask[6];
6882c0c050c5SMichael Chan 	__le16	l2_ovlan;
6883c0c050c5SMichael Chan 	__le16	l2_ovlan_mask;
6884c0c050c5SMichael Chan 	__le16	l2_ivlan;
6885c0c050c5SMichael Chan 	__le16	l2_ivlan_mask;
6886894aa69aSMichael Chan 	u8	unused_1[2];
6887c0c050c5SMichael Chan 	u8	t_l2_addr[6];
6888894aa69aSMichael Chan 	u8	unused_2[2];
6889c0c050c5SMichael Chan 	u8	t_l2_addr_mask[6];
6890c0c050c5SMichael Chan 	__le16	t_l2_ovlan;
6891c0c050c5SMichael Chan 	__le16	t_l2_ovlan_mask;
6892c0c050c5SMichael Chan 	__le16	t_l2_ivlan;
6893c0c050c5SMichael Chan 	__le16	t_l2_ivlan_mask;
6894c0c050c5SMichael Chan 	u8	src_type;
6895441cabbbSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_NPORT 0x0UL
6896441cabbbSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_PF    0x1UL
6897441cabbbSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_VF    0x2UL
6898441cabbbSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_VNIC  0x3UL
6899441cabbbSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_KONG  0x4UL
6900441cabbbSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_APE   0x5UL
6901441cabbbSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_BONO  0x6UL
6902441cabbbSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_TANG  0x7UL
6903894aa69aSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_LAST CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_TANG
6904894aa69aSMichael Chan 	u8	unused_3;
6905c0c050c5SMichael Chan 	__le32	src_id;
6906c0c050c5SMichael Chan 	u8	tunnel_type;
6907441cabbbSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_NONTUNNEL    0x0UL
6908441cabbbSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_VXLAN        0x1UL
6909441cabbbSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_NVGRE        0x2UL
6910441cabbbSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_L2GRE        0x3UL
6911441cabbbSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPIP         0x4UL
6912441cabbbSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_GENEVE       0x5UL
6913441cabbbSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_MPLS         0x6UL
6914441cabbbSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_STT          0x7UL
6915441cabbbSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPGRE        0x8UL
691657922b0aSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_VXLAN_V4     0x9UL
691731d357c0SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPGRE_V1     0xaUL
691831d357c0SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_L2_ETYPE     0xbUL
69193322479eSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_VXLAN_GPE_V6 0xcUL
6920441cabbbSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_ANYTUNNEL    0xffUL
6921894aa69aSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_LAST        CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_ANYTUNNEL
6922894aa69aSMichael Chan 	u8	unused_4;
6923c193554eSMichael Chan 	__le16	dst_id;
6924c0c050c5SMichael Chan 	__le16	mirror_vnic_id;
6925c0c050c5SMichael Chan 	u8	pri_hint;
6926441cabbbSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_PRI_HINT_NO_PREFER    0x0UL
6927441cabbbSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_PRI_HINT_ABOVE_FILTER 0x1UL
6928441cabbbSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_PRI_HINT_BELOW_FILTER 0x2UL
6929441cabbbSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_PRI_HINT_MAX          0x3UL
6930441cabbbSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_PRI_HINT_MIN          0x4UL
6931894aa69aSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_PRI_HINT_LAST        CFA_L2_FILTER_ALLOC_REQ_PRI_HINT_MIN
6932894aa69aSMichael Chan 	u8	unused_5;
6933894aa69aSMichael Chan 	__le32	unused_6;
6934c0c050c5SMichael Chan 	__le64	l2_filter_id_hint;
6935c0c050c5SMichael Chan };
6936c0c050c5SMichael Chan 
6937894aa69aSMichael Chan /* hwrm_cfa_l2_filter_alloc_output (size:192b/24B) */
6938c0c050c5SMichael Chan struct hwrm_cfa_l2_filter_alloc_output {
6939c0c050c5SMichael Chan 	__le16	error_code;
6940c0c050c5SMichael Chan 	__le16	req_type;
6941c0c050c5SMichael Chan 	__le16	seq_id;
6942c0c050c5SMichael Chan 	__le16	resp_len;
6943c0c050c5SMichael Chan 	__le64	l2_filter_id;
6944c0c050c5SMichael Chan 	__le32	flow_id;
69454a50ddc2SMichael Chan 	#define CFA_L2_FILTER_ALLOC_RESP_FLOW_ID_VALUE_MASK 0x3fffffffUL
69464a50ddc2SMichael Chan 	#define CFA_L2_FILTER_ALLOC_RESP_FLOW_ID_VALUE_SFT 0
69474a50ddc2SMichael Chan 	#define CFA_L2_FILTER_ALLOC_RESP_FLOW_ID_TYPE      0x40000000UL
69484a50ddc2SMichael Chan 	#define CFA_L2_FILTER_ALLOC_RESP_FLOW_ID_TYPE_INT    (0x0UL << 30)
69494a50ddc2SMichael Chan 	#define CFA_L2_FILTER_ALLOC_RESP_FLOW_ID_TYPE_EXT    (0x1UL << 30)
69504a50ddc2SMichael Chan 	#define CFA_L2_FILTER_ALLOC_RESP_FLOW_ID_TYPE_LAST  CFA_L2_FILTER_ALLOC_RESP_FLOW_ID_TYPE_EXT
69514a50ddc2SMichael Chan 	#define CFA_L2_FILTER_ALLOC_RESP_FLOW_ID_DIR       0x80000000UL
69524a50ddc2SMichael Chan 	#define CFA_L2_FILTER_ALLOC_RESP_FLOW_ID_DIR_RX      (0x0UL << 31)
69534a50ddc2SMichael Chan 	#define CFA_L2_FILTER_ALLOC_RESP_FLOW_ID_DIR_TX      (0x1UL << 31)
69544a50ddc2SMichael Chan 	#define CFA_L2_FILTER_ALLOC_RESP_FLOW_ID_DIR_LAST   CFA_L2_FILTER_ALLOC_RESP_FLOW_ID_DIR_TX
6955894aa69aSMichael Chan 	u8	unused_0[3];
6956c0c050c5SMichael Chan 	u8	valid;
6957c0c050c5SMichael Chan };
6958c0c050c5SMichael Chan 
6959894aa69aSMichael Chan /* hwrm_cfa_l2_filter_free_input (size:192b/24B) */
6960c0c050c5SMichael Chan struct hwrm_cfa_l2_filter_free_input {
6961c0c050c5SMichael Chan 	__le16	req_type;
6962c0c050c5SMichael Chan 	__le16	cmpl_ring;
6963c0c050c5SMichael Chan 	__le16	seq_id;
6964c0c050c5SMichael Chan 	__le16	target_id;
6965c0c050c5SMichael Chan 	__le64	resp_addr;
6966c0c050c5SMichael Chan 	__le64	l2_filter_id;
6967c0c050c5SMichael Chan };
6968c0c050c5SMichael Chan 
6969894aa69aSMichael Chan /* hwrm_cfa_l2_filter_free_output (size:128b/16B) */
6970c0c050c5SMichael Chan struct hwrm_cfa_l2_filter_free_output {
6971c0c050c5SMichael Chan 	__le16	error_code;
6972c0c050c5SMichael Chan 	__le16	req_type;
6973c0c050c5SMichael Chan 	__le16	seq_id;
6974c0c050c5SMichael Chan 	__le16	resp_len;
6975894aa69aSMichael Chan 	u8	unused_0[7];
6976c0c050c5SMichael Chan 	u8	valid;
6977c0c050c5SMichael Chan };
6978c0c050c5SMichael Chan 
6979894aa69aSMichael Chan /* hwrm_cfa_l2_filter_cfg_input (size:320b/40B) */
6980c0c050c5SMichael Chan struct hwrm_cfa_l2_filter_cfg_input {
6981c0c050c5SMichael Chan 	__le16	req_type;
6982c0c050c5SMichael Chan 	__le16	cmpl_ring;
6983c0c050c5SMichael Chan 	__le16	seq_id;
6984c0c050c5SMichael Chan 	__le16	target_id;
6985c0c050c5SMichael Chan 	__le64	resp_addr;
6986c0c050c5SMichael Chan 	__le32	flags;
6987c0c050c5SMichael Chan 	#define CFA_L2_FILTER_CFG_REQ_FLAGS_PATH              0x1UL
6988894aa69aSMichael Chan 	#define CFA_L2_FILTER_CFG_REQ_FLAGS_PATH_TX             0x0UL
6989894aa69aSMichael Chan 	#define CFA_L2_FILTER_CFG_REQ_FLAGS_PATH_RX             0x1UL
699011f15ed3SMichael Chan 	#define CFA_L2_FILTER_CFG_REQ_FLAGS_PATH_LAST          CFA_L2_FILTER_CFG_REQ_FLAGS_PATH_RX
6991c0c050c5SMichael Chan 	#define CFA_L2_FILTER_CFG_REQ_FLAGS_DROP              0x2UL
699231d357c0SMichael Chan 	#define CFA_L2_FILTER_CFG_REQ_FLAGS_TRAFFIC_MASK      0xcUL
699331d357c0SMichael Chan 	#define CFA_L2_FILTER_CFG_REQ_FLAGS_TRAFFIC_SFT       2
699431d357c0SMichael Chan 	#define CFA_L2_FILTER_CFG_REQ_FLAGS_TRAFFIC_NO_ROCE_L2  (0x0UL << 2)
699531d357c0SMichael Chan 	#define CFA_L2_FILTER_CFG_REQ_FLAGS_TRAFFIC_L2          (0x1UL << 2)
699631d357c0SMichael Chan 	#define CFA_L2_FILTER_CFG_REQ_FLAGS_TRAFFIC_ROCE        (0x2UL << 2)
699731d357c0SMichael Chan 	#define CFA_L2_FILTER_CFG_REQ_FLAGS_TRAFFIC_LAST       CFA_L2_FILTER_CFG_REQ_FLAGS_TRAFFIC_ROCE
6998c0c050c5SMichael Chan 	__le32	enables;
6999c193554eSMichael Chan 	#define CFA_L2_FILTER_CFG_REQ_ENABLES_DST_ID                 0x1UL
7000c193554eSMichael Chan 	#define CFA_L2_FILTER_CFG_REQ_ENABLES_NEW_MIRROR_VNIC_ID     0x2UL
7001c0c050c5SMichael Chan 	__le64	l2_filter_id;
7002c193554eSMichael Chan 	__le32	dst_id;
7003c193554eSMichael Chan 	__le32	new_mirror_vnic_id;
7004c0c050c5SMichael Chan };
7005c0c050c5SMichael Chan 
7006894aa69aSMichael Chan /* hwrm_cfa_l2_filter_cfg_output (size:128b/16B) */
7007c0c050c5SMichael Chan struct hwrm_cfa_l2_filter_cfg_output {
7008c0c050c5SMichael Chan 	__le16	error_code;
7009c0c050c5SMichael Chan 	__le16	req_type;
7010c0c050c5SMichael Chan 	__le16	seq_id;
7011c0c050c5SMichael Chan 	__le16	resp_len;
7012894aa69aSMichael Chan 	u8	unused_0[7];
7013c0c050c5SMichael Chan 	u8	valid;
7014c0c050c5SMichael Chan };
7015c0c050c5SMichael Chan 
7016894aa69aSMichael Chan /* hwrm_cfa_l2_set_rx_mask_input (size:448b/56B) */
7017c0c050c5SMichael Chan struct hwrm_cfa_l2_set_rx_mask_input {
7018c0c050c5SMichael Chan 	__le16	req_type;
7019c0c050c5SMichael Chan 	__le16	cmpl_ring;
7020c0c050c5SMichael Chan 	__le16	seq_id;
7021c0c050c5SMichael Chan 	__le16	target_id;
7022c0c050c5SMichael Chan 	__le64	resp_addr;
7023c193554eSMichael Chan 	__le32	vnic_id;
7024c0c050c5SMichael Chan 	__le32	mask;
7025c0c050c5SMichael Chan 	#define CFA_L2_SET_RX_MASK_REQ_MASK_MCAST               0x2UL
7026c0c050c5SMichael Chan 	#define CFA_L2_SET_RX_MASK_REQ_MASK_ALL_MCAST           0x4UL
7027c0c050c5SMichael Chan 	#define CFA_L2_SET_RX_MASK_REQ_MASK_BCAST               0x8UL
7028c0c050c5SMichael Chan 	#define CFA_L2_SET_RX_MASK_REQ_MASK_PROMISCUOUS         0x10UL
7029c0c050c5SMichael Chan 	#define CFA_L2_SET_RX_MASK_REQ_MASK_OUTERMOST           0x20UL
7030a58a3e68SMichael Chan 	#define CFA_L2_SET_RX_MASK_REQ_MASK_VLANONLY            0x40UL
7031a58a3e68SMichael Chan 	#define CFA_L2_SET_RX_MASK_REQ_MASK_VLAN_NONVLAN        0x80UL
7032a58a3e68SMichael Chan 	#define CFA_L2_SET_RX_MASK_REQ_MASK_ANYVLAN_NONVLAN     0x100UL
7033c0c050c5SMichael Chan 	__le64	mc_tbl_addr;
7034c0c050c5SMichael Chan 	__le32	num_mc_entries;
7035894aa69aSMichael Chan 	u8	unused_0[4];
7036a58a3e68SMichael Chan 	__le64	vlan_tag_tbl_addr;
7037a58a3e68SMichael Chan 	__le32	num_vlan_tags;
7038894aa69aSMichael Chan 	u8	unused_1[4];
7039c0c050c5SMichael Chan };
7040c0c050c5SMichael Chan 
7041894aa69aSMichael Chan /* hwrm_cfa_l2_set_rx_mask_output (size:128b/16B) */
7042c0c050c5SMichael Chan struct hwrm_cfa_l2_set_rx_mask_output {
7043c0c050c5SMichael Chan 	__le16	error_code;
7044c0c050c5SMichael Chan 	__le16	req_type;
7045c0c050c5SMichael Chan 	__le16	seq_id;
7046c0c050c5SMichael Chan 	__le16	resp_len;
7047894aa69aSMichael Chan 	u8	unused_0[7];
7048c0c050c5SMichael Chan 	u8	valid;
7049c0c050c5SMichael Chan };
7050c0c050c5SMichael Chan 
7051894aa69aSMichael Chan /* hwrm_cfa_l2_set_rx_mask_cmd_err (size:64b/8B) */
705257922b0aSMichael Chan struct hwrm_cfa_l2_set_rx_mask_cmd_err {
705357922b0aSMichael Chan 	u8	code;
705457922b0aSMichael Chan 	#define CFA_L2_SET_RX_MASK_CMD_ERR_CODE_UNKNOWN                    0x0UL
705557922b0aSMichael Chan 	#define CFA_L2_SET_RX_MASK_CMD_ERR_CODE_NTUPLE_FILTER_CONFLICT_ERR 0x1UL
7056894aa69aSMichael Chan 	#define CFA_L2_SET_RX_MASK_CMD_ERR_CODE_LAST                      CFA_L2_SET_RX_MASK_CMD_ERR_CODE_NTUPLE_FILTER_CONFLICT_ERR
705757922b0aSMichael Chan 	u8	unused_0[7];
705857922b0aSMichael Chan };
705957922b0aSMichael Chan 
7060894aa69aSMichael Chan /* hwrm_cfa_tunnel_filter_alloc_input (size:704b/88B) */
7061c0c050c5SMichael Chan struct hwrm_cfa_tunnel_filter_alloc_input {
7062c0c050c5SMichael Chan 	__le16	req_type;
7063c0c050c5SMichael Chan 	__le16	cmpl_ring;
7064c0c050c5SMichael Chan 	__le16	seq_id;
7065c0c050c5SMichael Chan 	__le16	target_id;
7066c0c050c5SMichael Chan 	__le64	resp_addr;
7067c0c050c5SMichael Chan 	__le32	flags;
7068c0c050c5SMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_FLAGS_LOOPBACK     0x1UL
7069c0c050c5SMichael Chan 	__le32	enables;
7070c0c050c5SMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_L2_FILTER_ID       0x1UL
7071c0c050c5SMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_L2_ADDR            0x2UL
7072c0c050c5SMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_L2_IVLAN           0x4UL
7073c0c050c5SMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_L3_ADDR            0x8UL
7074c0c050c5SMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_L3_ADDR_TYPE       0x10UL
7075c0c050c5SMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_T_L3_ADDR_TYPE     0x20UL
7076c0c050c5SMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_T_L3_ADDR          0x40UL
7077c0c050c5SMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_TUNNEL_TYPE        0x80UL
7078c0c050c5SMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_VNI                0x100UL
7079c0c050c5SMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_DST_VNIC_ID        0x200UL
7080c0c050c5SMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_MIRROR_VNIC_ID     0x400UL
7081c0c050c5SMichael Chan 	__le64	l2_filter_id;
7082c0c050c5SMichael Chan 	u8	l2_addr[6];
7083c0c050c5SMichael Chan 	__le16	l2_ivlan;
7084c0c050c5SMichael Chan 	__le32	l3_addr[4];
7085c0c050c5SMichael Chan 	__le32	t_l3_addr[4];
7086c0c050c5SMichael Chan 	u8	l3_addr_type;
7087c0c050c5SMichael Chan 	u8	t_l3_addr_type;
7088c0c050c5SMichael Chan 	u8	tunnel_type;
7089441cabbbSMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_NONTUNNEL    0x0UL
7090441cabbbSMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_VXLAN        0x1UL
7091441cabbbSMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_NVGRE        0x2UL
7092441cabbbSMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_L2GRE        0x3UL
7093441cabbbSMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPIP         0x4UL
7094441cabbbSMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_GENEVE       0x5UL
7095441cabbbSMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_MPLS         0x6UL
7096441cabbbSMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_STT          0x7UL
7097441cabbbSMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPGRE        0x8UL
709857922b0aSMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_VXLAN_V4     0x9UL
709931d357c0SMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPGRE_V1     0xaUL
710031d357c0SMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_L2_ETYPE     0xbUL
71013322479eSMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_VXLAN_GPE_V6 0xcUL
7102441cabbbSMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_ANYTUNNEL    0xffUL
7103894aa69aSMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_LAST        CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_ANYTUNNEL
7104894aa69aSMichael Chan 	u8	tunnel_flags;
7105894aa69aSMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_FLAGS_TUN_FLAGS_OAM_CHECKSUM_EXPLHDR     0x1UL
7106894aa69aSMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_FLAGS_TUN_FLAGS_CRITICAL_OPT_S1          0x2UL
7107894aa69aSMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_FLAGS_TUN_FLAGS_EXTHDR_SEQNUM_S0         0x4UL
7108c0c050c5SMichael Chan 	__le32	vni;
7109c0c050c5SMichael Chan 	__le32	dst_vnic_id;
7110c0c050c5SMichael Chan 	__le32	mirror_vnic_id;
7111c0c050c5SMichael Chan };
7112c0c050c5SMichael Chan 
7113894aa69aSMichael Chan /* hwrm_cfa_tunnel_filter_alloc_output (size:192b/24B) */
7114c0c050c5SMichael Chan struct hwrm_cfa_tunnel_filter_alloc_output {
7115c0c050c5SMichael Chan 	__le16	error_code;
7116c0c050c5SMichael Chan 	__le16	req_type;
7117c0c050c5SMichael Chan 	__le16	seq_id;
7118c0c050c5SMichael Chan 	__le16	resp_len;
7119c0c050c5SMichael Chan 	__le64	tunnel_filter_id;
7120c0c050c5SMichael Chan 	__le32	flow_id;
71214a50ddc2SMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_RESP_FLOW_ID_VALUE_MASK 0x3fffffffUL
71224a50ddc2SMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_RESP_FLOW_ID_VALUE_SFT 0
71234a50ddc2SMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_RESP_FLOW_ID_TYPE      0x40000000UL
71244a50ddc2SMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_RESP_FLOW_ID_TYPE_INT    (0x0UL << 30)
71254a50ddc2SMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_RESP_FLOW_ID_TYPE_EXT    (0x1UL << 30)
71264a50ddc2SMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_RESP_FLOW_ID_TYPE_LAST  CFA_TUNNEL_FILTER_ALLOC_RESP_FLOW_ID_TYPE_EXT
71274a50ddc2SMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_RESP_FLOW_ID_DIR       0x80000000UL
71284a50ddc2SMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_RESP_FLOW_ID_DIR_RX      (0x0UL << 31)
71294a50ddc2SMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_RESP_FLOW_ID_DIR_TX      (0x1UL << 31)
71304a50ddc2SMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_RESP_FLOW_ID_DIR_LAST   CFA_TUNNEL_FILTER_ALLOC_RESP_FLOW_ID_DIR_TX
7131894aa69aSMichael Chan 	u8	unused_0[3];
7132c0c050c5SMichael Chan 	u8	valid;
7133c0c050c5SMichael Chan };
7134c0c050c5SMichael Chan 
7135894aa69aSMichael Chan /* hwrm_cfa_tunnel_filter_free_input (size:192b/24B) */
7136c0c050c5SMichael Chan struct hwrm_cfa_tunnel_filter_free_input {
7137c0c050c5SMichael Chan 	__le16	req_type;
7138c0c050c5SMichael Chan 	__le16	cmpl_ring;
7139c0c050c5SMichael Chan 	__le16	seq_id;
7140c0c050c5SMichael Chan 	__le16	target_id;
7141c0c050c5SMichael Chan 	__le64	resp_addr;
7142c0c050c5SMichael Chan 	__le64	tunnel_filter_id;
7143c0c050c5SMichael Chan };
7144c0c050c5SMichael Chan 
7145894aa69aSMichael Chan /* hwrm_cfa_tunnel_filter_free_output (size:128b/16B) */
7146c0c050c5SMichael Chan struct hwrm_cfa_tunnel_filter_free_output {
7147c0c050c5SMichael Chan 	__le16	error_code;
7148c0c050c5SMichael Chan 	__le16	req_type;
7149c0c050c5SMichael Chan 	__le16	seq_id;
7150c0c050c5SMichael Chan 	__le16	resp_len;
7151894aa69aSMichael Chan 	u8	unused_0[7];
7152c0c050c5SMichael Chan 	u8	valid;
7153c0c050c5SMichael Chan };
7154c0c050c5SMichael Chan 
7155894aa69aSMichael Chan /* hwrm_vxlan_ipv4_hdr (size:128b/16B) */
7156894aa69aSMichael Chan struct hwrm_vxlan_ipv4_hdr {
7157894aa69aSMichael Chan 	u8	ver_hlen;
7158894aa69aSMichael Chan 	#define VXLAN_IPV4_HDR_VER_HLEN_HEADER_LENGTH_MASK 0xfUL
7159894aa69aSMichael Chan 	#define VXLAN_IPV4_HDR_VER_HLEN_HEADER_LENGTH_SFT 0
7160894aa69aSMichael Chan 	#define VXLAN_IPV4_HDR_VER_HLEN_VERSION_MASK      0xf0UL
7161894aa69aSMichael Chan 	#define VXLAN_IPV4_HDR_VER_HLEN_VERSION_SFT       4
7162894aa69aSMichael Chan 	u8	tos;
7163894aa69aSMichael Chan 	__be16	ip_id;
7164894aa69aSMichael Chan 	__be16	flags_frag_offset;
7165894aa69aSMichael Chan 	u8	ttl;
7166894aa69aSMichael Chan 	u8	protocol;
7167894aa69aSMichael Chan 	__be32	src_ip_addr;
7168894aa69aSMichael Chan 	__be32	dest_ip_addr;
7169894aa69aSMichael Chan };
7170894aa69aSMichael Chan 
7171894aa69aSMichael Chan /* hwrm_vxlan_ipv6_hdr (size:320b/40B) */
7172894aa69aSMichael Chan struct hwrm_vxlan_ipv6_hdr {
7173894aa69aSMichael Chan 	__be32	ver_tc_flow_label;
7174894aa69aSMichael Chan 	#define VXLAN_IPV6_HDR_VER_TC_FLOW_LABEL_VER_SFT         0x1cUL
7175894aa69aSMichael Chan 	#define VXLAN_IPV6_HDR_VER_TC_FLOW_LABEL_VER_MASK        0xf0000000UL
7176894aa69aSMichael Chan 	#define VXLAN_IPV6_HDR_VER_TC_FLOW_LABEL_TC_SFT          0x14UL
7177894aa69aSMichael Chan 	#define VXLAN_IPV6_HDR_VER_TC_FLOW_LABEL_TC_MASK         0xff00000UL
7178894aa69aSMichael Chan 	#define VXLAN_IPV6_HDR_VER_TC_FLOW_LABEL_FLOW_LABEL_SFT  0x0UL
7179894aa69aSMichael Chan 	#define VXLAN_IPV6_HDR_VER_TC_FLOW_LABEL_FLOW_LABEL_MASK 0xfffffUL
7180894aa69aSMichael Chan 	#define VXLAN_IPV6_HDR_VER_TC_FLOW_LABEL_LAST           VXLAN_IPV6_HDR_VER_TC_FLOW_LABEL_FLOW_LABEL_MASK
7181894aa69aSMichael Chan 	__be16	payload_len;
7182894aa69aSMichael Chan 	u8	next_hdr;
7183894aa69aSMichael Chan 	u8	ttl;
7184894aa69aSMichael Chan 	__be32	src_ip_addr[4];
7185894aa69aSMichael Chan 	__be32	dest_ip_addr[4];
7186894aa69aSMichael Chan };
7187894aa69aSMichael Chan 
718831d357c0SMichael Chan /* hwrm_cfa_encap_data_vxlan (size:640b/80B) */
7189894aa69aSMichael Chan struct hwrm_cfa_encap_data_vxlan {
7190894aa69aSMichael Chan 	u8	src_mac_addr[6];
7191894aa69aSMichael Chan 	__le16	unused_0;
7192894aa69aSMichael Chan 	u8	dst_mac_addr[6];
7193894aa69aSMichael Chan 	u8	num_vlan_tags;
7194894aa69aSMichael Chan 	u8	unused_1;
7195894aa69aSMichael Chan 	__be16	ovlan_tpid;
7196894aa69aSMichael Chan 	__be16	ovlan_tci;
7197894aa69aSMichael Chan 	__be16	ivlan_tpid;
7198894aa69aSMichael Chan 	__be16	ivlan_tci;
7199894aa69aSMichael Chan 	__le32	l3[10];
7200894aa69aSMichael Chan 	#define CFA_ENCAP_DATA_VXLAN_L3_VER_MASK 0xfUL
7201894aa69aSMichael Chan 	#define CFA_ENCAP_DATA_VXLAN_L3_VER_IPV4 0x4UL
7202894aa69aSMichael Chan 	#define CFA_ENCAP_DATA_VXLAN_L3_VER_IPV6 0x6UL
7203894aa69aSMichael Chan 	#define CFA_ENCAP_DATA_VXLAN_L3_LAST    CFA_ENCAP_DATA_VXLAN_L3_VER_IPV6
7204894aa69aSMichael Chan 	__be16	src_port;
7205894aa69aSMichael Chan 	__be16	dst_port;
7206894aa69aSMichael Chan 	__be32	vni;
720731d357c0SMichael Chan 	u8	hdr_rsvd0[3];
720831d357c0SMichael Chan 	u8	hdr_rsvd1;
720931d357c0SMichael Chan 	u8	hdr_flags;
721031d357c0SMichael Chan 	u8	unused[3];
7211894aa69aSMichael Chan };
7212894aa69aSMichael Chan 
7213894aa69aSMichael Chan /* hwrm_cfa_encap_record_alloc_input (size:832b/104B) */
7214c0c050c5SMichael Chan struct hwrm_cfa_encap_record_alloc_input {
7215c0c050c5SMichael Chan 	__le16	req_type;
7216c0c050c5SMichael Chan 	__le16	cmpl_ring;
7217c0c050c5SMichael Chan 	__le16	seq_id;
7218c0c050c5SMichael Chan 	__le16	target_id;
7219c0c050c5SMichael Chan 	__le64	resp_addr;
7220c0c050c5SMichael Chan 	__le32	flags;
7221c0c050c5SMichael Chan 	#define CFA_ENCAP_RECORD_ALLOC_REQ_FLAGS_LOOPBACK     0x1UL
72223293ec23SMichael Chan 	#define CFA_ENCAP_RECORD_ALLOC_REQ_FLAGS_EXTERNAL     0x2UL
7223c0c050c5SMichael Chan 	u8	encap_type;
7224441cabbbSMichael Chan 	#define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_VXLAN        0x1UL
7225441cabbbSMichael Chan 	#define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_NVGRE        0x2UL
7226441cabbbSMichael Chan 	#define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_L2GRE        0x3UL
7227441cabbbSMichael Chan 	#define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_IPIP         0x4UL
7228441cabbbSMichael Chan 	#define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_GENEVE       0x5UL
7229441cabbbSMichael Chan 	#define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_MPLS         0x6UL
7230441cabbbSMichael Chan 	#define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_VLAN         0x7UL
7231441cabbbSMichael Chan 	#define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_IPGRE        0x8UL
723231d357c0SMichael Chan 	#define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_VXLAN_V4     0x9UL
723331d357c0SMichael Chan 	#define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_IPGRE_V1     0xaUL
723431d357c0SMichael Chan 	#define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_L2_ETYPE     0xbUL
72353293ec23SMichael Chan 	#define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_VXLAN_GPE_V6 0xcUL
72363293ec23SMichael Chan 	#define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_LAST        CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_VXLAN_GPE_V6
7237894aa69aSMichael Chan 	u8	unused_0[3];
7238acb20054SMichael Chan 	__le32	encap_data[20];
7239c0c050c5SMichael Chan };
7240c0c050c5SMichael Chan 
7241894aa69aSMichael Chan /* hwrm_cfa_encap_record_alloc_output (size:128b/16B) */
7242c0c050c5SMichael Chan struct hwrm_cfa_encap_record_alloc_output {
7243c0c050c5SMichael Chan 	__le16	error_code;
7244c0c050c5SMichael Chan 	__le16	req_type;
7245c0c050c5SMichael Chan 	__le16	seq_id;
7246c0c050c5SMichael Chan 	__le16	resp_len;
7247c193554eSMichael Chan 	__le32	encap_record_id;
7248894aa69aSMichael Chan 	u8	unused_0[3];
7249c0c050c5SMichael Chan 	u8	valid;
7250c0c050c5SMichael Chan };
7251c0c050c5SMichael Chan 
7252894aa69aSMichael Chan /* hwrm_cfa_encap_record_free_input (size:192b/24B) */
7253c0c050c5SMichael Chan struct hwrm_cfa_encap_record_free_input {
7254c0c050c5SMichael Chan 	__le16	req_type;
7255c0c050c5SMichael Chan 	__le16	cmpl_ring;
7256c0c050c5SMichael Chan 	__le16	seq_id;
7257c0c050c5SMichael Chan 	__le16	target_id;
7258c0c050c5SMichael Chan 	__le64	resp_addr;
7259c193554eSMichael Chan 	__le32	encap_record_id;
7260894aa69aSMichael Chan 	u8	unused_0[4];
7261c0c050c5SMichael Chan };
7262c0c050c5SMichael Chan 
7263894aa69aSMichael Chan /* hwrm_cfa_encap_record_free_output (size:128b/16B) */
7264c0c050c5SMichael Chan struct hwrm_cfa_encap_record_free_output {
7265c0c050c5SMichael Chan 	__le16	error_code;
7266c0c050c5SMichael Chan 	__le16	req_type;
7267c0c050c5SMichael Chan 	__le16	seq_id;
7268c0c050c5SMichael Chan 	__le16	resp_len;
7269894aa69aSMichael Chan 	u8	unused_0[7];
7270c0c050c5SMichael Chan 	u8	valid;
7271c0c050c5SMichael Chan };
7272c0c050c5SMichael Chan 
727341136ab3SMichael Chan /* hwrm_cfa_ntuple_filter_alloc_input (size:1024b/128B) */
7274c0c050c5SMichael Chan struct hwrm_cfa_ntuple_filter_alloc_input {
7275c0c050c5SMichael Chan 	__le16	req_type;
7276c0c050c5SMichael Chan 	__le16	cmpl_ring;
7277c0c050c5SMichael Chan 	__le16	seq_id;
7278c0c050c5SMichael Chan 	__le16	target_id;
7279c0c050c5SMichael Chan 	__le64	resp_addr;
7280c0c050c5SMichael Chan 	__le32	flags;
7281c0c050c5SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_FLAGS_LOOPBACK              0x1UL
7282c0c050c5SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_FLAGS_DROP                  0x2UL
7283bac9a7e0SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_FLAGS_METER                 0x4UL
72843293ec23SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_FLAGS_DEST_FID              0x8UL
728541136ab3SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_FLAGS_ARP_REPLY             0x10UL
728641136ab3SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_FLAGS_DEST_RFS_RING_IDX     0x20UL
728721e70778SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_FLAGS_NO_L2_CONTEXT         0x40UL
7288c0c050c5SMichael Chan 	__le32	enables;
7289c0c050c5SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_L2_FILTER_ID         0x1UL
7290c0c050c5SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_ETHERTYPE            0x2UL
7291c0c050c5SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_TUNNEL_TYPE          0x4UL
7292c0c050c5SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_SRC_MACADDR          0x8UL
7293c0c050c5SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_IPADDR_TYPE          0x10UL
7294c0c050c5SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_SRC_IPADDR           0x20UL
7295c0c050c5SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_SRC_IPADDR_MASK      0x40UL
7296c0c050c5SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_DST_IPADDR           0x80UL
7297c0c050c5SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_DST_IPADDR_MASK      0x100UL
7298c0c050c5SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_IP_PROTOCOL          0x200UL
7299c0c050c5SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_SRC_PORT             0x400UL
7300c0c050c5SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_SRC_PORT_MASK        0x800UL
7301c0c050c5SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_DST_PORT             0x1000UL
7302c0c050c5SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_DST_PORT_MASK        0x2000UL
7303c0c050c5SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_PRI_HINT             0x4000UL
7304c0c050c5SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_NTUPLE_FILTER_ID     0x8000UL
7305c193554eSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_DST_ID               0x10000UL
7306c0c050c5SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_MIRROR_VNIC_ID       0x20000UL
7307c193554eSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_DST_MACADDR          0x40000UL
73084a50ddc2SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_RFS_RING_TBL_IDX     0x80000UL
7309c0c050c5SMichael Chan 	__le64	l2_filter_id;
7310c0c050c5SMichael Chan 	u8	src_macaddr[6];
7311c0c050c5SMichael Chan 	__be16	ethertype;
7312c193554eSMichael Chan 	u8	ip_addr_type;
7313441cabbbSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_ADDR_TYPE_UNKNOWN 0x0UL
7314441cabbbSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_ADDR_TYPE_IPV4    0x4UL
7315441cabbbSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_ADDR_TYPE_IPV6    0x6UL
7316894aa69aSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_ADDR_TYPE_LAST   CFA_NTUPLE_FILTER_ALLOC_REQ_IP_ADDR_TYPE_IPV6
7317c0c050c5SMichael Chan 	u8	ip_protocol;
7318441cabbbSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_PROTOCOL_UNKNOWN 0x0UL
7319acb20054SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_PROTOCOL_TCP     0x6UL
7320acb20054SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_PROTOCOL_UDP     0x11UL
732184a911dbSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_PROTOCOL_ICMP    0x1UL
732284a911dbSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_PROTOCOL_ICMPV6  0x3aUL
732384a911dbSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_PROTOCOL_RSVD    0xffUL
732484a911dbSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_PROTOCOL_LAST   CFA_NTUPLE_FILTER_ALLOC_REQ_IP_PROTOCOL_RSVD
7325c193554eSMichael Chan 	__le16	dst_id;
7326c0c050c5SMichael Chan 	__le16	mirror_vnic_id;
7327c0c050c5SMichael Chan 	u8	tunnel_type;
7328441cabbbSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_NONTUNNEL    0x0UL
7329441cabbbSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_VXLAN        0x1UL
7330441cabbbSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_NVGRE        0x2UL
7331441cabbbSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_L2GRE        0x3UL
7332441cabbbSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPIP         0x4UL
7333441cabbbSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_GENEVE       0x5UL
7334441cabbbSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_MPLS         0x6UL
7335441cabbbSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_STT          0x7UL
7336441cabbbSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPGRE        0x8UL
733757922b0aSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_VXLAN_V4     0x9UL
733831d357c0SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPGRE_V1     0xaUL
733931d357c0SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_L2_ETYPE     0xbUL
73403322479eSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_VXLAN_GPE_V6 0xcUL
7341441cabbbSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_ANYTUNNEL    0xffUL
7342894aa69aSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_LAST        CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_ANYTUNNEL
7343c0c050c5SMichael Chan 	u8	pri_hint;
7344441cabbbSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_PRI_HINT_NO_PREFER 0x0UL
7345441cabbbSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_PRI_HINT_ABOVE     0x1UL
7346441cabbbSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_PRI_HINT_BELOW     0x2UL
7347441cabbbSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_PRI_HINT_HIGHEST   0x3UL
7348441cabbbSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_PRI_HINT_LOWEST    0x4UL
7349894aa69aSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_PRI_HINT_LAST     CFA_NTUPLE_FILTER_ALLOC_REQ_PRI_HINT_LOWEST
7350c0c050c5SMichael Chan 	__be32	src_ipaddr[4];
7351c0c050c5SMichael Chan 	__be32	src_ipaddr_mask[4];
7352c0c050c5SMichael Chan 	__be32	dst_ipaddr[4];
7353c0c050c5SMichael Chan 	__be32	dst_ipaddr_mask[4];
7354c0c050c5SMichael Chan 	__be16	src_port;
7355c0c050c5SMichael Chan 	__be16	src_port_mask;
7356c0c050c5SMichael Chan 	__be16	dst_port;
7357c0c050c5SMichael Chan 	__be16	dst_port_mask;
7358c0c050c5SMichael Chan 	__le64	ntuple_filter_id_hint;
7359c0c050c5SMichael Chan };
7360c0c050c5SMichael Chan 
7361894aa69aSMichael Chan /* hwrm_cfa_ntuple_filter_alloc_output (size:192b/24B) */
7362c0c050c5SMichael Chan struct hwrm_cfa_ntuple_filter_alloc_output {
7363c0c050c5SMichael Chan 	__le16	error_code;
7364c0c050c5SMichael Chan 	__le16	req_type;
7365c0c050c5SMichael Chan 	__le16	seq_id;
7366c0c050c5SMichael Chan 	__le16	resp_len;
7367c0c050c5SMichael Chan 	__le64	ntuple_filter_id;
7368c0c050c5SMichael Chan 	__le32	flow_id;
73694a50ddc2SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_RESP_FLOW_ID_VALUE_MASK 0x3fffffffUL
73704a50ddc2SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_RESP_FLOW_ID_VALUE_SFT 0
73714a50ddc2SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_RESP_FLOW_ID_TYPE      0x40000000UL
73724a50ddc2SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_RESP_FLOW_ID_TYPE_INT    (0x0UL << 30)
73734a50ddc2SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_RESP_FLOW_ID_TYPE_EXT    (0x1UL << 30)
73744a50ddc2SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_RESP_FLOW_ID_TYPE_LAST  CFA_NTUPLE_FILTER_ALLOC_RESP_FLOW_ID_TYPE_EXT
73754a50ddc2SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_RESP_FLOW_ID_DIR       0x80000000UL
73764a50ddc2SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_RESP_FLOW_ID_DIR_RX      (0x0UL << 31)
73774a50ddc2SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_RESP_FLOW_ID_DIR_TX      (0x1UL << 31)
73784a50ddc2SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_RESP_FLOW_ID_DIR_LAST   CFA_NTUPLE_FILTER_ALLOC_RESP_FLOW_ID_DIR_TX
7379894aa69aSMichael Chan 	u8	unused_0[3];
7380c0c050c5SMichael Chan 	u8	valid;
7381c0c050c5SMichael Chan };
7382c0c050c5SMichael Chan 
7383894aa69aSMichael Chan /* hwrm_cfa_ntuple_filter_alloc_cmd_err (size:64b/8B) */
738457922b0aSMichael Chan struct hwrm_cfa_ntuple_filter_alloc_cmd_err {
738557922b0aSMichael Chan 	u8	code;
738657922b0aSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_CMD_ERR_CODE_UNKNOWN                   0x0UL
738757922b0aSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_CMD_ERR_CODE_RX_MASK_VLAN_CONFLICT_ERR 0x1UL
7388894aa69aSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_CMD_ERR_CODE_LAST                     CFA_NTUPLE_FILTER_ALLOC_CMD_ERR_CODE_RX_MASK_VLAN_CONFLICT_ERR
738957922b0aSMichael Chan 	u8	unused_0[7];
739057922b0aSMichael Chan };
739157922b0aSMichael Chan 
7392894aa69aSMichael Chan /* hwrm_cfa_ntuple_filter_free_input (size:192b/24B) */
7393c0c050c5SMichael Chan struct hwrm_cfa_ntuple_filter_free_input {
7394c0c050c5SMichael Chan 	__le16	req_type;
7395c0c050c5SMichael Chan 	__le16	cmpl_ring;
7396c0c050c5SMichael Chan 	__le16	seq_id;
7397c0c050c5SMichael Chan 	__le16	target_id;
7398c0c050c5SMichael Chan 	__le64	resp_addr;
7399c0c050c5SMichael Chan 	__le64	ntuple_filter_id;
7400c0c050c5SMichael Chan };
7401c0c050c5SMichael Chan 
7402894aa69aSMichael Chan /* hwrm_cfa_ntuple_filter_free_output (size:128b/16B) */
7403c0c050c5SMichael Chan struct hwrm_cfa_ntuple_filter_free_output {
7404c0c050c5SMichael Chan 	__le16	error_code;
7405c0c050c5SMichael Chan 	__le16	req_type;
7406c0c050c5SMichael Chan 	__le16	seq_id;
7407c0c050c5SMichael Chan 	__le16	resp_len;
7408894aa69aSMichael Chan 	u8	unused_0[7];
7409c0c050c5SMichael Chan 	u8	valid;
7410c0c050c5SMichael Chan };
7411c0c050c5SMichael Chan 
7412894aa69aSMichael Chan /* hwrm_cfa_ntuple_filter_cfg_input (size:384b/48B) */
7413c0c050c5SMichael Chan struct hwrm_cfa_ntuple_filter_cfg_input {
7414c0c050c5SMichael Chan 	__le16	req_type;
7415c0c050c5SMichael Chan 	__le16	cmpl_ring;
7416c0c050c5SMichael Chan 	__le16	seq_id;
7417c0c050c5SMichael Chan 	__le16	target_id;
7418c0c050c5SMichael Chan 	__le64	resp_addr;
7419c0c050c5SMichael Chan 	__le32	enables;
7420c193554eSMichael Chan 	#define CFA_NTUPLE_FILTER_CFG_REQ_ENABLES_NEW_DST_ID                0x1UL
7421c193554eSMichael Chan 	#define CFA_NTUPLE_FILTER_CFG_REQ_ENABLES_NEW_MIRROR_VNIC_ID        0x2UL
7422bac9a7e0SMichael Chan 	#define CFA_NTUPLE_FILTER_CFG_REQ_ENABLES_NEW_METER_INSTANCE_ID     0x4UL
74233293ec23SMichael Chan 	__le32	flags;
74243293ec23SMichael Chan 	#define CFA_NTUPLE_FILTER_CFG_REQ_FLAGS_DEST_FID              0x1UL
742541136ab3SMichael Chan 	#define CFA_NTUPLE_FILTER_CFG_REQ_FLAGS_DEST_RFS_RING_IDX     0x2UL
742621e70778SMichael Chan 	#define CFA_NTUPLE_FILTER_CFG_REQ_FLAGS_NO_L2_CONTEXT         0x4UL
7427c0c050c5SMichael Chan 	__le64	ntuple_filter_id;
7428c193554eSMichael Chan 	__le32	new_dst_id;
7429c0c050c5SMichael Chan 	__le32	new_mirror_vnic_id;
7430bac9a7e0SMichael Chan 	__le16	new_meter_instance_id;
7431bac9a7e0SMichael Chan 	#define CFA_NTUPLE_FILTER_CFG_REQ_NEW_METER_INSTANCE_ID_INVALID 0xffffUL
7432894aa69aSMichael Chan 	#define CFA_NTUPLE_FILTER_CFG_REQ_NEW_METER_INSTANCE_ID_LAST   CFA_NTUPLE_FILTER_CFG_REQ_NEW_METER_INSTANCE_ID_INVALID
7433894aa69aSMichael Chan 	u8	unused_1[6];
7434c0c050c5SMichael Chan };
7435c0c050c5SMichael Chan 
7436894aa69aSMichael Chan /* hwrm_cfa_ntuple_filter_cfg_output (size:128b/16B) */
7437c0c050c5SMichael Chan struct hwrm_cfa_ntuple_filter_cfg_output {
7438c0c050c5SMichael Chan 	__le16	error_code;
7439c0c050c5SMichael Chan 	__le16	req_type;
7440c0c050c5SMichael Chan 	__le16	seq_id;
7441c0c050c5SMichael Chan 	__le16	resp_len;
7442894aa69aSMichael Chan 	u8	unused_0[7];
7443c0c050c5SMichael Chan 	u8	valid;
7444c0c050c5SMichael Chan };
7445c0c050c5SMichael Chan 
7446894aa69aSMichael Chan /* hwrm_cfa_decap_filter_alloc_input (size:832b/104B) */
744757922b0aSMichael Chan struct hwrm_cfa_decap_filter_alloc_input {
744857922b0aSMichael Chan 	__le16	req_type;
744957922b0aSMichael Chan 	__le16	cmpl_ring;
745057922b0aSMichael Chan 	__le16	seq_id;
745157922b0aSMichael Chan 	__le16	target_id;
745257922b0aSMichael Chan 	__le64	resp_addr;
745357922b0aSMichael Chan 	__le32	flags;
745457922b0aSMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_FLAGS_OVS_TUNNEL     0x1UL
745557922b0aSMichael Chan 	__le32	enables;
745657922b0aSMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_ENABLES_TUNNEL_TYPE        0x1UL
745757922b0aSMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_ENABLES_TUNNEL_ID          0x2UL
745857922b0aSMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_ENABLES_SRC_MACADDR        0x4UL
745957922b0aSMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_ENABLES_DST_MACADDR        0x8UL
746057922b0aSMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_ENABLES_OVLAN_VID          0x10UL
746157922b0aSMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_ENABLES_IVLAN_VID          0x20UL
746257922b0aSMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_ENABLES_T_OVLAN_VID        0x40UL
746357922b0aSMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_ENABLES_T_IVLAN_VID        0x80UL
746457922b0aSMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_ENABLES_ETHERTYPE          0x100UL
746557922b0aSMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_ENABLES_SRC_IPADDR         0x200UL
746657922b0aSMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_ENABLES_DST_IPADDR         0x400UL
746757922b0aSMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_ENABLES_IPADDR_TYPE        0x800UL
746857922b0aSMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_ENABLES_IP_PROTOCOL        0x1000UL
746957922b0aSMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_ENABLES_SRC_PORT           0x2000UL
747057922b0aSMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_ENABLES_DST_PORT           0x4000UL
747157922b0aSMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_ENABLES_DST_ID             0x8000UL
747257922b0aSMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_ENABLES_MIRROR_VNIC_ID     0x10000UL
747357922b0aSMichael Chan 	__be32	tunnel_id;
747457922b0aSMichael Chan 	u8	tunnel_type;
747557922b0aSMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_TUNNEL_TYPE_NONTUNNEL    0x0UL
747657922b0aSMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_TUNNEL_TYPE_VXLAN        0x1UL
747757922b0aSMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_TUNNEL_TYPE_NVGRE        0x2UL
747857922b0aSMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_TUNNEL_TYPE_L2GRE        0x3UL
747957922b0aSMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPIP         0x4UL
748057922b0aSMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_TUNNEL_TYPE_GENEVE       0x5UL
748157922b0aSMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_TUNNEL_TYPE_MPLS         0x6UL
748257922b0aSMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_TUNNEL_TYPE_STT          0x7UL
748357922b0aSMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPGRE        0x8UL
748457922b0aSMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_TUNNEL_TYPE_VXLAN_V4     0x9UL
748531d357c0SMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPGRE_V1     0xaUL
748631d357c0SMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_TUNNEL_TYPE_L2_ETYPE     0xbUL
74873322479eSMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_TUNNEL_TYPE_VXLAN_GPE_V6 0xcUL
748857922b0aSMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_TUNNEL_TYPE_ANYTUNNEL    0xffUL
7489894aa69aSMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_TUNNEL_TYPE_LAST        CFA_DECAP_FILTER_ALLOC_REQ_TUNNEL_TYPE_ANYTUNNEL
749057922b0aSMichael Chan 	u8	unused_0;
749157922b0aSMichael Chan 	__le16	unused_1;
749257922b0aSMichael Chan 	u8	src_macaddr[6];
7493894aa69aSMichael Chan 	u8	unused_2[2];
749457922b0aSMichael Chan 	u8	dst_macaddr[6];
749557922b0aSMichael Chan 	__be16	ovlan_vid;
749657922b0aSMichael Chan 	__be16	ivlan_vid;
749757922b0aSMichael Chan 	__be16	t_ovlan_vid;
749857922b0aSMichael Chan 	__be16	t_ivlan_vid;
749957922b0aSMichael Chan 	__be16	ethertype;
750057922b0aSMichael Chan 	u8	ip_addr_type;
750157922b0aSMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_IP_ADDR_TYPE_UNKNOWN 0x0UL
750257922b0aSMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_IP_ADDR_TYPE_IPV4    0x4UL
750357922b0aSMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_IP_ADDR_TYPE_IPV6    0x6UL
7504894aa69aSMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_IP_ADDR_TYPE_LAST   CFA_DECAP_FILTER_ALLOC_REQ_IP_ADDR_TYPE_IPV6
750557922b0aSMichael Chan 	u8	ip_protocol;
750657922b0aSMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_IP_PROTOCOL_UNKNOWN 0x0UL
750757922b0aSMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_IP_PROTOCOL_TCP     0x6UL
750857922b0aSMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_IP_PROTOCOL_UDP     0x11UL
7509894aa69aSMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_IP_PROTOCOL_LAST   CFA_DECAP_FILTER_ALLOC_REQ_IP_PROTOCOL_UDP
7510894aa69aSMichael Chan 	__le16	unused_3;
7511894aa69aSMichael Chan 	__le32	unused_4;
751257922b0aSMichael Chan 	__be32	src_ipaddr[4];
751357922b0aSMichael Chan 	__be32	dst_ipaddr[4];
751457922b0aSMichael Chan 	__be16	src_port;
751557922b0aSMichael Chan 	__be16	dst_port;
751657922b0aSMichael Chan 	__le16	dst_id;
751757922b0aSMichael Chan 	__le16	l2_ctxt_ref_id;
751857922b0aSMichael Chan };
751957922b0aSMichael Chan 
7520894aa69aSMichael Chan /* hwrm_cfa_decap_filter_alloc_output (size:128b/16B) */
752157922b0aSMichael Chan struct hwrm_cfa_decap_filter_alloc_output {
752257922b0aSMichael Chan 	__le16	error_code;
752357922b0aSMichael Chan 	__le16	req_type;
752457922b0aSMichael Chan 	__le16	seq_id;
752557922b0aSMichael Chan 	__le16	resp_len;
752657922b0aSMichael Chan 	__le32	decap_filter_id;
7527894aa69aSMichael Chan 	u8	unused_0[3];
752857922b0aSMichael Chan 	u8	valid;
752957922b0aSMichael Chan };
753057922b0aSMichael Chan 
7531894aa69aSMichael Chan /* hwrm_cfa_decap_filter_free_input (size:192b/24B) */
753257922b0aSMichael Chan struct hwrm_cfa_decap_filter_free_input {
753357922b0aSMichael Chan 	__le16	req_type;
753457922b0aSMichael Chan 	__le16	cmpl_ring;
753557922b0aSMichael Chan 	__le16	seq_id;
753657922b0aSMichael Chan 	__le16	target_id;
753757922b0aSMichael Chan 	__le64	resp_addr;
753857922b0aSMichael Chan 	__le32	decap_filter_id;
7539894aa69aSMichael Chan 	u8	unused_0[4];
754057922b0aSMichael Chan };
754157922b0aSMichael Chan 
7542894aa69aSMichael Chan /* hwrm_cfa_decap_filter_free_output (size:128b/16B) */
754357922b0aSMichael Chan struct hwrm_cfa_decap_filter_free_output {
754457922b0aSMichael Chan 	__le16	error_code;
754557922b0aSMichael Chan 	__le16	req_type;
754657922b0aSMichael Chan 	__le16	seq_id;
754757922b0aSMichael Chan 	__le16	resp_len;
7548894aa69aSMichael Chan 	u8	unused_0[7];
754957922b0aSMichael Chan 	u8	valid;
755057922b0aSMichael Chan };
755157922b0aSMichael Chan 
7552894aa69aSMichael Chan /* hwrm_cfa_flow_alloc_input (size:1024b/128B) */
75536a17eb27SMichael Chan struct hwrm_cfa_flow_alloc_input {
75546a17eb27SMichael Chan 	__le16	req_type;
75556a17eb27SMichael Chan 	__le16	cmpl_ring;
75566a17eb27SMichael Chan 	__le16	seq_id;
75576a17eb27SMichael Chan 	__le16	target_id;
75586a17eb27SMichael Chan 	__le64	resp_addr;
75596a17eb27SMichael Chan 	__le16	flags;
75606a17eb27SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_FLAGS_TUNNEL                 0x1UL
75616a17eb27SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_FLAGS_NUM_VLAN_MASK          0x6UL
75626a17eb27SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_FLAGS_NUM_VLAN_SFT           1
75636a17eb27SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_FLAGS_NUM_VLAN_NONE            (0x0UL << 1)
75646a17eb27SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_FLAGS_NUM_VLAN_ONE             (0x1UL << 1)
75656a17eb27SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_FLAGS_NUM_VLAN_TWO             (0x2UL << 1)
75666a17eb27SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_FLAGS_NUM_VLAN_LAST           CFA_FLOW_ALLOC_REQ_FLAGS_NUM_VLAN_TWO
75676a17eb27SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_FLAGS_FLOWTYPE_MASK          0x38UL
75686a17eb27SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_FLAGS_FLOWTYPE_SFT           3
75696a17eb27SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_FLAGS_FLOWTYPE_L2              (0x0UL << 3)
75706a17eb27SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_FLAGS_FLOWTYPE_IPV4            (0x1UL << 3)
75716a17eb27SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_FLAGS_FLOWTYPE_IPV6            (0x2UL << 3)
75726a17eb27SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_FLAGS_FLOWTYPE_LAST           CFA_FLOW_ALLOC_REQ_FLAGS_FLOWTYPE_IPV6
757331d357c0SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_FLAGS_PATH_TX                0x40UL
757431d357c0SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_FLAGS_PATH_RX                0x80UL
757531d357c0SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_FLAGS_MATCH_VXLAN_IP_VNI     0x100UL
75763322479eSMichael Chan 	#define CFA_FLOW_ALLOC_REQ_FLAGS_VHOST_ID_USE_VLAN      0x200UL
75776a17eb27SMichael Chan 	__le16	src_fid;
75786a17eb27SMichael Chan 	__le32	tunnel_handle;
75796a17eb27SMichael Chan 	__le16	action_flags;
75806a17eb27SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_ACTION_FLAGS_FWD                       0x1UL
75816a17eb27SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_ACTION_FLAGS_RECYCLE                   0x2UL
75826a17eb27SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_ACTION_FLAGS_DROP                      0x4UL
75836a17eb27SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_ACTION_FLAGS_METER                     0x8UL
75846a17eb27SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_ACTION_FLAGS_TUNNEL                    0x10UL
75856a17eb27SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_ACTION_FLAGS_NAT_SRC                   0x20UL
75866a17eb27SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_ACTION_FLAGS_NAT_DEST                  0x40UL
75876a17eb27SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_ACTION_FLAGS_NAT_IPV4_ADDRESS          0x80UL
75886a17eb27SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_ACTION_FLAGS_L2_HEADER_REWRITE         0x100UL
75896a17eb27SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_ACTION_FLAGS_TTL_DECREMENT             0x200UL
759031d357c0SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_ACTION_FLAGS_TUNNEL_IP                 0x400UL
75913322479eSMichael Chan 	#define CFA_FLOW_ALLOC_REQ_ACTION_FLAGS_FLOW_AGING_ENABLED        0x800UL
75923322479eSMichael Chan 	#define CFA_FLOW_ALLOC_REQ_ACTION_FLAGS_PRI_HINT                  0x1000UL
75934a50ddc2SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_ACTION_FLAGS_NO_FLOW_COUNTER_ALLOC     0x2000UL
75946a17eb27SMichael Chan 	__le16	dst_fid;
75956a17eb27SMichael Chan 	__be16	l2_rewrite_vlan_tpid;
75966a17eb27SMichael Chan 	__be16	l2_rewrite_vlan_tci;
75976a17eb27SMichael Chan 	__le16	act_meter_id;
75986a17eb27SMichael Chan 	__le16	ref_flow_handle;
75996a17eb27SMichael Chan 	__be16	ethertype;
76006a17eb27SMichael Chan 	__be16	outer_vlan_tci;
76016a17eb27SMichael Chan 	__be16	dmac[3];
76026a17eb27SMichael Chan 	__be16	inner_vlan_tci;
76036a17eb27SMichael Chan 	__be16	smac[3];
76046a17eb27SMichael Chan 	u8	ip_dst_mask_len;
76056a17eb27SMichael Chan 	u8	ip_src_mask_len;
76066a17eb27SMichael Chan 	__be32	ip_dst[4];
76076a17eb27SMichael Chan 	__be32	ip_src[4];
76086a17eb27SMichael Chan 	__be16	l4_src_port;
76096a17eb27SMichael Chan 	__be16	l4_src_port_mask;
76106a17eb27SMichael Chan 	__be16	l4_dst_port;
76116a17eb27SMichael Chan 	__be16	l4_dst_port_mask;
76126a17eb27SMichael Chan 	__be32	nat_ip_address[4];
76136a17eb27SMichael Chan 	__be16	l2_rewrite_dmac[3];
76146a17eb27SMichael Chan 	__be16	nat_port;
76156a17eb27SMichael Chan 	__be16	l2_rewrite_smac[3];
76166a17eb27SMichael Chan 	u8	ip_proto;
761731d357c0SMichael Chan 	u8	tunnel_type;
761831d357c0SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_TUNNEL_TYPE_NONTUNNEL    0x0UL
761931d357c0SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_TUNNEL_TYPE_VXLAN        0x1UL
762031d357c0SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_TUNNEL_TYPE_NVGRE        0x2UL
762131d357c0SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_TUNNEL_TYPE_L2GRE        0x3UL
762231d357c0SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_TUNNEL_TYPE_IPIP         0x4UL
762331d357c0SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_TUNNEL_TYPE_GENEVE       0x5UL
762431d357c0SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_TUNNEL_TYPE_MPLS         0x6UL
762531d357c0SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_TUNNEL_TYPE_STT          0x7UL
762631d357c0SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_TUNNEL_TYPE_IPGRE        0x8UL
762731d357c0SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_TUNNEL_TYPE_VXLAN_V4     0x9UL
762831d357c0SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_TUNNEL_TYPE_IPGRE_V1     0xaUL
762931d357c0SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_TUNNEL_TYPE_L2_ETYPE     0xbUL
76303322479eSMichael Chan 	#define CFA_FLOW_ALLOC_REQ_TUNNEL_TYPE_VXLAN_GPE_V6 0xcUL
763131d357c0SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_TUNNEL_TYPE_ANYTUNNEL    0xffUL
763231d357c0SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_TUNNEL_TYPE_LAST        CFA_FLOW_ALLOC_REQ_TUNNEL_TYPE_ANYTUNNEL
76336a17eb27SMichael Chan };
76346a17eb27SMichael Chan 
763531d357c0SMichael Chan /* hwrm_cfa_flow_alloc_output (size:256b/32B) */
76366a17eb27SMichael Chan struct hwrm_cfa_flow_alloc_output {
76376a17eb27SMichael Chan 	__le16	error_code;
76386a17eb27SMichael Chan 	__le16	req_type;
76396a17eb27SMichael Chan 	__le16	seq_id;
76406a17eb27SMichael Chan 	__le16	resp_len;
76416a17eb27SMichael Chan 	__le16	flow_handle;
764231d357c0SMichael Chan 	u8	unused_0[2];
764331d357c0SMichael Chan 	__le32	flow_id;
76444a50ddc2SMichael Chan 	#define CFA_FLOW_ALLOC_RESP_FLOW_ID_VALUE_MASK 0x3fffffffUL
76454a50ddc2SMichael Chan 	#define CFA_FLOW_ALLOC_RESP_FLOW_ID_VALUE_SFT 0
76464a50ddc2SMichael Chan 	#define CFA_FLOW_ALLOC_RESP_FLOW_ID_TYPE      0x40000000UL
76474a50ddc2SMichael Chan 	#define CFA_FLOW_ALLOC_RESP_FLOW_ID_TYPE_INT    (0x0UL << 30)
76484a50ddc2SMichael Chan 	#define CFA_FLOW_ALLOC_RESP_FLOW_ID_TYPE_EXT    (0x1UL << 30)
76494a50ddc2SMichael Chan 	#define CFA_FLOW_ALLOC_RESP_FLOW_ID_TYPE_LAST  CFA_FLOW_ALLOC_RESP_FLOW_ID_TYPE_EXT
76504a50ddc2SMichael Chan 	#define CFA_FLOW_ALLOC_RESP_FLOW_ID_DIR       0x80000000UL
76514a50ddc2SMichael Chan 	#define CFA_FLOW_ALLOC_RESP_FLOW_ID_DIR_RX      (0x0UL << 31)
76524a50ddc2SMichael Chan 	#define CFA_FLOW_ALLOC_RESP_FLOW_ID_DIR_TX      (0x1UL << 31)
76534a50ddc2SMichael Chan 	#define CFA_FLOW_ALLOC_RESP_FLOW_ID_DIR_LAST   CFA_FLOW_ALLOC_RESP_FLOW_ID_DIR_TX
765431d357c0SMichael Chan 	__le64	ext_flow_handle;
76553322479eSMichael Chan 	__le32	flow_counter_id;
76563322479eSMichael Chan 	u8	unused_1[3];
76576a17eb27SMichael Chan 	u8	valid;
76586a17eb27SMichael Chan };
76596a17eb27SMichael Chan 
76602792b5b9SMichael Chan /* hwrm_cfa_flow_alloc_cmd_err (size:64b/8B) */
76612792b5b9SMichael Chan struct hwrm_cfa_flow_alloc_cmd_err {
76622792b5b9SMichael Chan 	u8	code;
76632792b5b9SMichael Chan 	#define CFA_FLOW_ALLOC_CMD_ERR_CODE_UNKNOWN         0x0UL
76642792b5b9SMichael Chan 	#define CFA_FLOW_ALLOC_CMD_ERR_CODE_L2_CONTEXT_TCAM 0x1UL
76652792b5b9SMichael Chan 	#define CFA_FLOW_ALLOC_CMD_ERR_CODE_ACTION_RECORD   0x2UL
76662792b5b9SMichael Chan 	#define CFA_FLOW_ALLOC_CMD_ERR_CODE_FLOW_COUNTER    0x3UL
76672792b5b9SMichael Chan 	#define CFA_FLOW_ALLOC_CMD_ERR_CODE_WILD_CARD_TCAM  0x4UL
76682792b5b9SMichael Chan 	#define CFA_FLOW_ALLOC_CMD_ERR_CODE_HASH_COLLISION  0x5UL
76692792b5b9SMichael Chan 	#define CFA_FLOW_ALLOC_CMD_ERR_CODE_KEY_EXISTS      0x6UL
76702792b5b9SMichael Chan 	#define CFA_FLOW_ALLOC_CMD_ERR_CODE_FLOW_CTXT_DB    0x7UL
76712792b5b9SMichael Chan 	#define CFA_FLOW_ALLOC_CMD_ERR_CODE_LAST           CFA_FLOW_ALLOC_CMD_ERR_CODE_FLOW_CTXT_DB
76722792b5b9SMichael Chan 	u8	unused_0[7];
76732792b5b9SMichael Chan };
76742792b5b9SMichael Chan 
767531d357c0SMichael Chan /* hwrm_cfa_flow_free_input (size:256b/32B) */
76766a17eb27SMichael Chan struct hwrm_cfa_flow_free_input {
76776a17eb27SMichael Chan 	__le16	req_type;
76786a17eb27SMichael Chan 	__le16	cmpl_ring;
76796a17eb27SMichael Chan 	__le16	seq_id;
76806a17eb27SMichael Chan 	__le16	target_id;
76816a17eb27SMichael Chan 	__le64	resp_addr;
76826a17eb27SMichael Chan 	__le16	flow_handle;
76834a50ddc2SMichael Chan 	__le16	unused_0;
76844a50ddc2SMichael Chan 	__le32	flow_counter_id;
768531d357c0SMichael Chan 	__le64	ext_flow_handle;
76866a17eb27SMichael Chan };
76876a17eb27SMichael Chan 
7688894aa69aSMichael Chan /* hwrm_cfa_flow_free_output (size:256b/32B) */
76896a17eb27SMichael Chan struct hwrm_cfa_flow_free_output {
76906a17eb27SMichael Chan 	__le16	error_code;
76916a17eb27SMichael Chan 	__le16	req_type;
76926a17eb27SMichael Chan 	__le16	seq_id;
76936a17eb27SMichael Chan 	__le16	resp_len;
76946a17eb27SMichael Chan 	__le64	packet;
76956a17eb27SMichael Chan 	__le64	byte;
7696894aa69aSMichael Chan 	u8	unused_0[7];
76976a17eb27SMichael Chan 	u8	valid;
76986a17eb27SMichael Chan };
76996a17eb27SMichael Chan 
77003322479eSMichael Chan /* hwrm_cfa_flow_info_input (size:256b/32B) */
77013322479eSMichael Chan struct hwrm_cfa_flow_info_input {
77023322479eSMichael Chan 	__le16	req_type;
77033322479eSMichael Chan 	__le16	cmpl_ring;
77043322479eSMichael Chan 	__le16	seq_id;
77053322479eSMichael Chan 	__le16	target_id;
77063322479eSMichael Chan 	__le64	resp_addr;
77073322479eSMichael Chan 	__le16	flow_handle;
77083322479eSMichael Chan 	#define CFA_FLOW_INFO_REQ_FLOW_HANDLE_MAX_MASK      0xfffUL
77093322479eSMichael Chan 	#define CFA_FLOW_INFO_REQ_FLOW_HANDLE_CNP_CNT       0x1000UL
77103322479eSMichael Chan 	#define CFA_FLOW_INFO_REQ_FLOW_HANDLE_ROCEV1_CNT    0x2000UL
7711ad04cc05SMichael Chan 	#define CFA_FLOW_INFO_REQ_FLOW_HANDLE_NIC_TX        0x3000UL
77123322479eSMichael Chan 	#define CFA_FLOW_INFO_REQ_FLOW_HANDLE_ROCEV2_CNT    0x4000UL
77133322479eSMichael Chan 	#define CFA_FLOW_INFO_REQ_FLOW_HANDLE_DIR_RX        0x8000UL
7714ad04cc05SMichael Chan 	#define CFA_FLOW_INFO_REQ_FLOW_HANDLE_CNP_CNT_RX    0x9000UL
7715ad04cc05SMichael Chan 	#define CFA_FLOW_INFO_REQ_FLOW_HANDLE_ROCEV1_CNT_RX 0xa000UL
7716ad04cc05SMichael Chan 	#define CFA_FLOW_INFO_REQ_FLOW_HANDLE_NIC_RX        0xb000UL
7717ad04cc05SMichael Chan 	#define CFA_FLOW_INFO_REQ_FLOW_HANDLE_ROCEV2_CNT_RX 0xc000UL
7718ad04cc05SMichael Chan 	#define CFA_FLOW_INFO_REQ_FLOW_HANDLE_LAST         CFA_FLOW_INFO_REQ_FLOW_HANDLE_ROCEV2_CNT_RX
77193322479eSMichael Chan 	u8	unused_0[6];
77203322479eSMichael Chan 	__le64	ext_flow_handle;
77213322479eSMichael Chan };
77223322479eSMichael Chan 
77233293ec23SMichael Chan /* hwrm_cfa_flow_info_output (size:5632b/704B) */
77243322479eSMichael Chan struct hwrm_cfa_flow_info_output {
77253322479eSMichael Chan 	__le16	error_code;
77263322479eSMichael Chan 	__le16	req_type;
77273322479eSMichael Chan 	__le16	seq_id;
77283322479eSMichael Chan 	__le16	resp_len;
77293322479eSMichael Chan 	u8	flags;
77303293ec23SMichael Chan 	#define CFA_FLOW_INFO_RESP_FLAGS_PATH_TX     0x1UL
77313293ec23SMichael Chan 	#define CFA_FLOW_INFO_RESP_FLAGS_PATH_RX     0x2UL
77323322479eSMichael Chan 	u8	profile;
77333322479eSMichael Chan 	__le16	src_fid;
77343322479eSMichael Chan 	__le16	dst_fid;
77353322479eSMichael Chan 	__le16	l2_ctxt_id;
77363322479eSMichael Chan 	__le64	em_info;
77373322479eSMichael Chan 	__le64	tcam_info;
77383322479eSMichael Chan 	__le64	vfp_tcam_info;
77393322479eSMichael Chan 	__le16	ar_id;
77403322479eSMichael Chan 	__le16	flow_handle;
77413322479eSMichael Chan 	__le32	tunnel_handle;
77423322479eSMichael Chan 	__le16	flow_timer;
77433293ec23SMichael Chan 	u8	unused_0[6];
77443293ec23SMichael Chan 	__le32	flow_key_data[130];
77453293ec23SMichael Chan 	__le32	flow_action_info[30];
77463293ec23SMichael Chan 	u8	unused_1[7];
77473322479eSMichael Chan 	u8	valid;
77483322479eSMichael Chan };
77493322479eSMichael Chan 
775031d357c0SMichael Chan /* hwrm_cfa_flow_stats_input (size:640b/80B) */
77516a17eb27SMichael Chan struct hwrm_cfa_flow_stats_input {
77526a17eb27SMichael Chan 	__le16	req_type;
77536a17eb27SMichael Chan 	__le16	cmpl_ring;
77546a17eb27SMichael Chan 	__le16	seq_id;
77556a17eb27SMichael Chan 	__le16	target_id;
77566a17eb27SMichael Chan 	__le64	resp_addr;
77576a17eb27SMichael Chan 	__le16	num_flows;
77586a17eb27SMichael Chan 	__le16	flow_handle_0;
77596a17eb27SMichael Chan 	__le16	flow_handle_1;
77606a17eb27SMichael Chan 	__le16	flow_handle_2;
77616a17eb27SMichael Chan 	__le16	flow_handle_3;
77626a17eb27SMichael Chan 	__le16	flow_handle_4;
77636a17eb27SMichael Chan 	__le16	flow_handle_5;
77646a17eb27SMichael Chan 	__le16	flow_handle_6;
77656a17eb27SMichael Chan 	__le16	flow_handle_7;
77666a17eb27SMichael Chan 	__le16	flow_handle_8;
77676a17eb27SMichael Chan 	__le16	flow_handle_9;
7768894aa69aSMichael Chan 	u8	unused_0[2];
776931d357c0SMichael Chan 	__le32	flow_id_0;
777031d357c0SMichael Chan 	__le32	flow_id_1;
777131d357c0SMichael Chan 	__le32	flow_id_2;
777231d357c0SMichael Chan 	__le32	flow_id_3;
777331d357c0SMichael Chan 	__le32	flow_id_4;
777431d357c0SMichael Chan 	__le32	flow_id_5;
777531d357c0SMichael Chan 	__le32	flow_id_6;
777631d357c0SMichael Chan 	__le32	flow_id_7;
777731d357c0SMichael Chan 	__le32	flow_id_8;
777831d357c0SMichael Chan 	__le32	flow_id_9;
77796a17eb27SMichael Chan };
77806a17eb27SMichael Chan 
7781894aa69aSMichael Chan /* hwrm_cfa_flow_stats_output (size:1408b/176B) */
77826a17eb27SMichael Chan struct hwrm_cfa_flow_stats_output {
77836a17eb27SMichael Chan 	__le16	error_code;
77846a17eb27SMichael Chan 	__le16	req_type;
77856a17eb27SMichael Chan 	__le16	seq_id;
77866a17eb27SMichael Chan 	__le16	resp_len;
77876a17eb27SMichael Chan 	__le64	packet_0;
77886a17eb27SMichael Chan 	__le64	packet_1;
77896a17eb27SMichael Chan 	__le64	packet_2;
77906a17eb27SMichael Chan 	__le64	packet_3;
77916a17eb27SMichael Chan 	__le64	packet_4;
77926a17eb27SMichael Chan 	__le64	packet_5;
77936a17eb27SMichael Chan 	__le64	packet_6;
77946a17eb27SMichael Chan 	__le64	packet_7;
77956a17eb27SMichael Chan 	__le64	packet_8;
77966a17eb27SMichael Chan 	__le64	packet_9;
77976a17eb27SMichael Chan 	__le64	byte_0;
77986a17eb27SMichael Chan 	__le64	byte_1;
77996a17eb27SMichael Chan 	__le64	byte_2;
78006a17eb27SMichael Chan 	__le64	byte_3;
78016a17eb27SMichael Chan 	__le64	byte_4;
78026a17eb27SMichael Chan 	__le64	byte_5;
78036a17eb27SMichael Chan 	__le64	byte_6;
78046a17eb27SMichael Chan 	__le64	byte_7;
78056a17eb27SMichael Chan 	__le64	byte_8;
78066a17eb27SMichael Chan 	__le64	byte_9;
7807ad04cc05SMichael Chan 	__le16	flow_hits;
7808ad04cc05SMichael Chan 	u8	unused_0[5];
78096a17eb27SMichael Chan 	u8	valid;
78106a17eb27SMichael Chan };
78116a17eb27SMichael Chan 
7812894aa69aSMichael Chan /* hwrm_cfa_vfr_alloc_input (size:448b/56B) */
7813acb20054SMichael Chan struct hwrm_cfa_vfr_alloc_input {
7814acb20054SMichael Chan 	__le16	req_type;
7815acb20054SMichael Chan 	__le16	cmpl_ring;
7816acb20054SMichael Chan 	__le16	seq_id;
7817acb20054SMichael Chan 	__le16	target_id;
7818acb20054SMichael Chan 	__le64	resp_addr;
7819acb20054SMichael Chan 	__le16	vf_id;
7820acb20054SMichael Chan 	__le16	reserved;
7821894aa69aSMichael Chan 	u8	unused_0[4];
7822acb20054SMichael Chan 	char	vfr_name[32];
7823acb20054SMichael Chan };
7824acb20054SMichael Chan 
7825894aa69aSMichael Chan /* hwrm_cfa_vfr_alloc_output (size:128b/16B) */
7826acb20054SMichael Chan struct hwrm_cfa_vfr_alloc_output {
7827acb20054SMichael Chan 	__le16	error_code;
7828acb20054SMichael Chan 	__le16	req_type;
7829acb20054SMichael Chan 	__le16	seq_id;
7830acb20054SMichael Chan 	__le16	resp_len;
7831acb20054SMichael Chan 	__le16	rx_cfa_code;
7832acb20054SMichael Chan 	__le16	tx_cfa_action;
7833894aa69aSMichael Chan 	u8	unused_0[3];
7834acb20054SMichael Chan 	u8	valid;
7835acb20054SMichael Chan };
7836acb20054SMichael Chan 
78379d6b648cSMichael Chan /* hwrm_cfa_vfr_free_input (size:448b/56B) */
7838acb20054SMichael Chan struct hwrm_cfa_vfr_free_input {
7839acb20054SMichael Chan 	__le16	req_type;
7840acb20054SMichael Chan 	__le16	cmpl_ring;
7841acb20054SMichael Chan 	__le16	seq_id;
7842acb20054SMichael Chan 	__le16	target_id;
7843acb20054SMichael Chan 	__le64	resp_addr;
7844acb20054SMichael Chan 	char	vfr_name[32];
78459d6b648cSMichael Chan 	__le16	vf_id;
78469d6b648cSMichael Chan 	__le16	reserved;
78479d6b648cSMichael Chan 	u8	unused_0[4];
7848acb20054SMichael Chan };
7849acb20054SMichael Chan 
7850894aa69aSMichael Chan /* hwrm_cfa_vfr_free_output (size:128b/16B) */
7851acb20054SMichael Chan struct hwrm_cfa_vfr_free_output {
7852acb20054SMichael Chan 	__le16	error_code;
7853acb20054SMichael Chan 	__le16	req_type;
7854acb20054SMichael Chan 	__le16	seq_id;
7855acb20054SMichael Chan 	__le16	resp_len;
7856894aa69aSMichael Chan 	u8	unused_0[7];
7857acb20054SMichael Chan 	u8	valid;
7858acb20054SMichael Chan };
7859acb20054SMichael Chan 
78603322479eSMichael Chan /* hwrm_cfa_eem_qcaps_input (size:192b/24B) */
78613322479eSMichael Chan struct hwrm_cfa_eem_qcaps_input {
78623322479eSMichael Chan 	__le16	req_type;
78633322479eSMichael Chan 	__le16	cmpl_ring;
78643322479eSMichael Chan 	__le16	seq_id;
78653322479eSMichael Chan 	__le16	target_id;
78663322479eSMichael Chan 	__le64	resp_addr;
78673322479eSMichael Chan 	__le32	flags;
78683322479eSMichael Chan 	#define CFA_EEM_QCAPS_REQ_FLAGS_PATH_TX               0x1UL
78693322479eSMichael Chan 	#define CFA_EEM_QCAPS_REQ_FLAGS_PATH_RX               0x2UL
78703322479eSMichael Chan 	#define CFA_EEM_QCAPS_REQ_FLAGS_PREFERRED_OFFLOAD     0x4UL
78713322479eSMichael Chan 	__le32	unused_0;
78723322479eSMichael Chan };
78733322479eSMichael Chan 
78742792b5b9SMichael Chan /* hwrm_cfa_eem_qcaps_output (size:320b/40B) */
78753322479eSMichael Chan struct hwrm_cfa_eem_qcaps_output {
78763322479eSMichael Chan 	__le16	error_code;
78773322479eSMichael Chan 	__le16	req_type;
78783322479eSMichael Chan 	__le16	seq_id;
78793322479eSMichael Chan 	__le16	resp_len;
78803322479eSMichael Chan 	__le32	flags;
78813322479eSMichael Chan 	#define CFA_EEM_QCAPS_RESP_FLAGS_PATH_TX                                         0x1UL
78823322479eSMichael Chan 	#define CFA_EEM_QCAPS_RESP_FLAGS_PATH_RX                                         0x2UL
78834a50ddc2SMichael Chan 	#define CFA_EEM_QCAPS_RESP_FLAGS_CENTRALIZED_MEMORY_MODEL_SUPPORTED              0x4UL
78844a50ddc2SMichael Chan 	#define CFA_EEM_QCAPS_RESP_FLAGS_DETACHED_CENTRALIZED_MEMORY_MODEL_SUPPORTED     0x8UL
78853322479eSMichael Chan 	__le32	unused_0;
78863322479eSMichael Chan 	__le32	supported;
78873322479eSMichael Chan 	#define CFA_EEM_QCAPS_RESP_SUPPORTED_KEY0_TABLE                       0x1UL
78883322479eSMichael Chan 	#define CFA_EEM_QCAPS_RESP_SUPPORTED_KEY1_TABLE                       0x2UL
78893322479eSMichael Chan 	#define CFA_EEM_QCAPS_RESP_SUPPORTED_EXTERNAL_RECORD_TABLE            0x4UL
78903322479eSMichael Chan 	#define CFA_EEM_QCAPS_RESP_SUPPORTED_EXTERNAL_FLOW_COUNTERS_TABLE     0x8UL
78912792b5b9SMichael Chan 	#define CFA_EEM_QCAPS_RESP_SUPPORTED_FID_TABLE                        0x10UL
78923322479eSMichael Chan 	__le32	max_entries_supported;
78933322479eSMichael Chan 	__le16	key_entry_size;
78943322479eSMichael Chan 	__le16	record_entry_size;
78953322479eSMichael Chan 	__le16	efc_entry_size;
78962792b5b9SMichael Chan 	__le16	fid_entry_size;
78972792b5b9SMichael Chan 	u8	unused_1[7];
78983322479eSMichael Chan 	u8	valid;
78993322479eSMichael Chan };
79003322479eSMichael Chan 
79012792b5b9SMichael Chan /* hwrm_cfa_eem_cfg_input (size:384b/48B) */
79023322479eSMichael Chan struct hwrm_cfa_eem_cfg_input {
79033322479eSMichael Chan 	__le16	req_type;
79043322479eSMichael Chan 	__le16	cmpl_ring;
79053322479eSMichael Chan 	__le16	seq_id;
79063322479eSMichael Chan 	__le16	target_id;
79073322479eSMichael Chan 	__le64	resp_addr;
79083322479eSMichael Chan 	__le32	flags;
79093322479eSMichael Chan 	#define CFA_EEM_CFG_REQ_FLAGS_PATH_TX               0x1UL
79103322479eSMichael Chan 	#define CFA_EEM_CFG_REQ_FLAGS_PATH_RX               0x2UL
79113322479eSMichael Chan 	#define CFA_EEM_CFG_REQ_FLAGS_PREFERRED_OFFLOAD     0x4UL
79124a50ddc2SMichael Chan 	#define CFA_EEM_CFG_REQ_FLAGS_SECONDARY_PF          0x8UL
79134a50ddc2SMichael Chan 	__le16	group_id;
79144a50ddc2SMichael Chan 	__le16	unused_0;
79153322479eSMichael Chan 	__le32	num_entries;
79163322479eSMichael Chan 	__le32	unused_1;
79173322479eSMichael Chan 	__le16	key0_ctx_id;
79183322479eSMichael Chan 	__le16	key1_ctx_id;
79193322479eSMichael Chan 	__le16	record_ctx_id;
79203322479eSMichael Chan 	__le16	efc_ctx_id;
79212792b5b9SMichael Chan 	__le16	fid_ctx_id;
79222792b5b9SMichael Chan 	__le16	unused_2;
79232792b5b9SMichael Chan 	__le32	unused_3;
79243322479eSMichael Chan };
79253322479eSMichael Chan 
79263322479eSMichael Chan /* hwrm_cfa_eem_cfg_output (size:128b/16B) */
79273322479eSMichael Chan struct hwrm_cfa_eem_cfg_output {
79283322479eSMichael Chan 	__le16	error_code;
79293322479eSMichael Chan 	__le16	req_type;
79303322479eSMichael Chan 	__le16	seq_id;
79313322479eSMichael Chan 	__le16	resp_len;
79323322479eSMichael Chan 	u8	unused_0[7];
79333322479eSMichael Chan 	u8	valid;
79343322479eSMichael Chan };
79353322479eSMichael Chan 
79363322479eSMichael Chan /* hwrm_cfa_eem_qcfg_input (size:192b/24B) */
79373322479eSMichael Chan struct hwrm_cfa_eem_qcfg_input {
79383322479eSMichael Chan 	__le16	req_type;
79393322479eSMichael Chan 	__le16	cmpl_ring;
79403322479eSMichael Chan 	__le16	seq_id;
79413322479eSMichael Chan 	__le16	target_id;
79423322479eSMichael Chan 	__le64	resp_addr;
79433322479eSMichael Chan 	__le32	flags;
79443322479eSMichael Chan 	#define CFA_EEM_QCFG_REQ_FLAGS_PATH_TX     0x1UL
79453322479eSMichael Chan 	#define CFA_EEM_QCFG_REQ_FLAGS_PATH_RX     0x2UL
79463322479eSMichael Chan 	__le32	unused_0;
79473322479eSMichael Chan };
79483322479eSMichael Chan 
79492792b5b9SMichael Chan /* hwrm_cfa_eem_qcfg_output (size:256b/32B) */
79503322479eSMichael Chan struct hwrm_cfa_eem_qcfg_output {
79513322479eSMichael Chan 	__le16	error_code;
79523322479eSMichael Chan 	__le16	req_type;
79533322479eSMichael Chan 	__le16	seq_id;
79543322479eSMichael Chan 	__le16	resp_len;
79553322479eSMichael Chan 	__le32	flags;
79563322479eSMichael Chan 	#define CFA_EEM_QCFG_RESP_FLAGS_PATH_TX               0x1UL
79573322479eSMichael Chan 	#define CFA_EEM_QCFG_RESP_FLAGS_PATH_RX               0x2UL
79583322479eSMichael Chan 	#define CFA_EEM_QCFG_RESP_FLAGS_PREFERRED_OFFLOAD     0x4UL
79593322479eSMichael Chan 	__le32	num_entries;
79602792b5b9SMichael Chan 	__le16	key0_ctx_id;
79612792b5b9SMichael Chan 	__le16	key1_ctx_id;
79622792b5b9SMichael Chan 	__le16	record_ctx_id;
79632792b5b9SMichael Chan 	__le16	efc_ctx_id;
79642792b5b9SMichael Chan 	__le16	fid_ctx_id;
79652792b5b9SMichael Chan 	u8	unused_2[5];
79664a50ddc2SMichael Chan 	u8	valid;
79673322479eSMichael Chan };
79683322479eSMichael Chan 
79693322479eSMichael Chan /* hwrm_cfa_eem_op_input (size:192b/24B) */
79703322479eSMichael Chan struct hwrm_cfa_eem_op_input {
79713322479eSMichael Chan 	__le16	req_type;
79723322479eSMichael Chan 	__le16	cmpl_ring;
79733322479eSMichael Chan 	__le16	seq_id;
79743322479eSMichael Chan 	__le16	target_id;
79753322479eSMichael Chan 	__le64	resp_addr;
79763322479eSMichael Chan 	__le32	flags;
79773322479eSMichael Chan 	#define CFA_EEM_OP_REQ_FLAGS_PATH_TX     0x1UL
79783322479eSMichael Chan 	#define CFA_EEM_OP_REQ_FLAGS_PATH_RX     0x2UL
79793322479eSMichael Chan 	__le16	unused_0;
79803322479eSMichael Chan 	__le16	op;
79813322479eSMichael Chan 	#define CFA_EEM_OP_REQ_OP_RESERVED    0x0UL
79823322479eSMichael Chan 	#define CFA_EEM_OP_REQ_OP_EEM_DISABLE 0x1UL
79833322479eSMichael Chan 	#define CFA_EEM_OP_REQ_OP_EEM_ENABLE  0x2UL
79843322479eSMichael Chan 	#define CFA_EEM_OP_REQ_OP_EEM_CLEANUP 0x3UL
79853322479eSMichael Chan 	#define CFA_EEM_OP_REQ_OP_LAST       CFA_EEM_OP_REQ_OP_EEM_CLEANUP
79863322479eSMichael Chan };
79873322479eSMichael Chan 
79883322479eSMichael Chan /* hwrm_cfa_eem_op_output (size:128b/16B) */
79893322479eSMichael Chan struct hwrm_cfa_eem_op_output {
79903322479eSMichael Chan 	__le16	error_code;
79913322479eSMichael Chan 	__le16	req_type;
79923322479eSMichael Chan 	__le16	seq_id;
79933322479eSMichael Chan 	__le16	resp_len;
79943322479eSMichael Chan 	u8	unused_0[7];
79953322479eSMichael Chan 	u8	valid;
79963322479eSMichael Chan };
79973322479eSMichael Chan 
79984a50ddc2SMichael Chan /* hwrm_cfa_adv_flow_mgnt_qcaps_input (size:256b/32B) */
79994a50ddc2SMichael Chan struct hwrm_cfa_adv_flow_mgnt_qcaps_input {
80004a50ddc2SMichael Chan 	__le16	req_type;
80014a50ddc2SMichael Chan 	__le16	cmpl_ring;
80024a50ddc2SMichael Chan 	__le16	seq_id;
80034a50ddc2SMichael Chan 	__le16	target_id;
80044a50ddc2SMichael Chan 	__le64	resp_addr;
80054a50ddc2SMichael Chan 	__le32	unused_0[4];
80064a50ddc2SMichael Chan };
80074a50ddc2SMichael Chan 
80084a50ddc2SMichael Chan /* hwrm_cfa_adv_flow_mgnt_qcaps_output (size:128b/16B) */
80094a50ddc2SMichael Chan struct hwrm_cfa_adv_flow_mgnt_qcaps_output {
80104a50ddc2SMichael Chan 	__le16	error_code;
80114a50ddc2SMichael Chan 	__le16	req_type;
80124a50ddc2SMichael Chan 	__le16	seq_id;
80134a50ddc2SMichael Chan 	__le16	resp_len;
80144a50ddc2SMichael Chan 	__le32	flags;
80154a50ddc2SMichael Chan 	#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_FLOW_HND_16BIT_SUPPORTED                     0x1UL
80164a50ddc2SMichael Chan 	#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_FLOW_HND_64BIT_SUPPORTED                     0x2UL
80174a50ddc2SMichael Chan 	#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_FLOW_BATCH_DELETE_SUPPORTED                  0x4UL
80184a50ddc2SMichael Chan 	#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_FLOW_RESET_ALL_SUPPORTED                     0x8UL
80194a50ddc2SMichael Chan 	#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_NTUPLE_FLOW_DEST_FUNC_SUPPORTED              0x10UL
80204a50ddc2SMichael Chan 	#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_TX_EEM_FLOW_SUPPORTED                        0x20UL
80214a50ddc2SMichael Chan 	#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_RX_EEM_FLOW_SUPPORTED                        0x40UL
80224a50ddc2SMichael Chan 	#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_FLOW_COUNTER_ALLOC_SUPPORTED                 0x80UL
80234a50ddc2SMichael Chan 	#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_RFS_RING_TBL_IDX_SUPPORTED                   0x100UL
80244a50ddc2SMichael Chan 	#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_UNTAGGED_VLAN_SUPPORTED                      0x200UL
80254a50ddc2SMichael Chan 	#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_XDP_SUPPORTED                                0x400UL
80264a50ddc2SMichael Chan 	#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_L2_HEADER_SOURCE_FIELDS_SUPPORTED            0x800UL
802741136ab3SMichael Chan 	#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_NTUPLE_FLOW_RX_ARP_SUPPORTED                 0x1000UL
802841136ab3SMichael Chan 	#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_RFS_RING_TBL_IDX_V2_SUPPORTED                0x2000UL
802941136ab3SMichael Chan 	#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_NTUPLE_FLOW_RX_ETHERTYPE_IP_SUPPORTED        0x4000UL
803016db6323SMichael Chan 	#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_TRUFLOW_CAPABLE                              0x8000UL
803116db6323SMichael Chan 	#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_L2_FILTER_TRAFFIC_TYPE_L2_ROCE_SUPPORTED     0x10000UL
803278eeadb8SMichael Chan 	#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_LAG_SUPPORTED                                0x20000UL
803321e70778SMichael Chan 	#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_NTUPLE_FLOW_NO_L2CTX_SUPPORTED               0x40000UL
8034ad04cc05SMichael Chan 	#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_NIC_FLOW_STATS_SUPPORTED                     0x80000UL
803584a911dbSMichael Chan 	#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_NTUPLE_FLOW_RX_EXT_IP_PROTO_SUPPORTED        0x100000UL
80364a50ddc2SMichael Chan 	u8	unused_0[3];
80374a50ddc2SMichael Chan 	u8	valid;
80384a50ddc2SMichael Chan };
80394a50ddc2SMichael Chan 
80402895c153SMichael Chan /* hwrm_tunnel_dst_port_query_input (size:192b/24B) */
8041c0c050c5SMichael Chan struct hwrm_tunnel_dst_port_query_input {
8042c0c050c5SMichael Chan 	__le16	req_type;
8043c0c050c5SMichael Chan 	__le16	cmpl_ring;
8044c0c050c5SMichael Chan 	__le16	seq_id;
8045c0c050c5SMichael Chan 	__le16	target_id;
8046c0c050c5SMichael Chan 	__le64	resp_addr;
8047c0c050c5SMichael Chan 	u8	tunnel_type;
8048441cabbbSMichael Chan 	#define TUNNEL_DST_PORT_QUERY_REQ_TUNNEL_TYPE_VXLAN        0x1UL
8049441cabbbSMichael Chan 	#define TUNNEL_DST_PORT_QUERY_REQ_TUNNEL_TYPE_GENEVE       0x5UL
805057922b0aSMichael Chan 	#define TUNNEL_DST_PORT_QUERY_REQ_TUNNEL_TYPE_VXLAN_V4     0x9UL
80516fc92c33SMichael Chan 	#define TUNNEL_DST_PORT_QUERY_REQ_TUNNEL_TYPE_IPGRE_V1     0xaUL
805231d357c0SMichael Chan 	#define TUNNEL_DST_PORT_QUERY_REQ_TUNNEL_TYPE_L2_ETYPE     0xbUL
80533322479eSMichael Chan 	#define TUNNEL_DST_PORT_QUERY_REQ_TUNNEL_TYPE_VXLAN_GPE_V6 0xcUL
805484a911dbSMichael Chan 	#define TUNNEL_DST_PORT_QUERY_REQ_TUNNEL_TYPE_CUSTOM_GRE   0xdUL
805584a911dbSMichael Chan 	#define TUNNEL_DST_PORT_QUERY_REQ_TUNNEL_TYPE_ECPRI        0xeUL
805684a911dbSMichael Chan 	#define TUNNEL_DST_PORT_QUERY_REQ_TUNNEL_TYPE_LAST        TUNNEL_DST_PORT_QUERY_REQ_TUNNEL_TYPE_ECPRI
8057c0c050c5SMichael Chan 	u8	unused_0[7];
8058c0c050c5SMichael Chan };
8059c0c050c5SMichael Chan 
8060894aa69aSMichael Chan /* hwrm_tunnel_dst_port_query_output (size:128b/16B) */
8061c0c050c5SMichael Chan struct hwrm_tunnel_dst_port_query_output {
8062c0c050c5SMichael Chan 	__le16	error_code;
8063c0c050c5SMichael Chan 	__le16	req_type;
8064c0c050c5SMichael Chan 	__le16	seq_id;
8065c0c050c5SMichael Chan 	__le16	resp_len;
8066c0c050c5SMichael Chan 	__le16	tunnel_dst_port_id;
8067c0c050c5SMichael Chan 	__be16	tunnel_dst_port_val;
806884a911dbSMichael Chan 	u8	upar_in_use;
806984a911dbSMichael Chan 	#define TUNNEL_DST_PORT_QUERY_RESP_UPAR_IN_USE_UPAR0     0x1UL
807084a911dbSMichael Chan 	#define TUNNEL_DST_PORT_QUERY_RESP_UPAR_IN_USE_UPAR1     0x2UL
807184a911dbSMichael Chan 	#define TUNNEL_DST_PORT_QUERY_RESP_UPAR_IN_USE_UPAR2     0x4UL
807284a911dbSMichael Chan 	#define TUNNEL_DST_PORT_QUERY_RESP_UPAR_IN_USE_UPAR3     0x8UL
807384a911dbSMichael Chan 	#define TUNNEL_DST_PORT_QUERY_RESP_UPAR_IN_USE_UPAR4     0x10UL
807484a911dbSMichael Chan 	#define TUNNEL_DST_PORT_QUERY_RESP_UPAR_IN_USE_UPAR5     0x20UL
807584a911dbSMichael Chan 	#define TUNNEL_DST_PORT_QUERY_RESP_UPAR_IN_USE_UPAR6     0x40UL
807684a911dbSMichael Chan 	#define TUNNEL_DST_PORT_QUERY_RESP_UPAR_IN_USE_UPAR7     0x80UL
807784a911dbSMichael Chan 	u8	unused_0[2];
8078c0c050c5SMichael Chan 	u8	valid;
8079c0c050c5SMichael Chan };
8080c0c050c5SMichael Chan 
8081894aa69aSMichael Chan /* hwrm_tunnel_dst_port_alloc_input (size:192b/24B) */
8082c0c050c5SMichael Chan struct hwrm_tunnel_dst_port_alloc_input {
8083c0c050c5SMichael Chan 	__le16	req_type;
8084c0c050c5SMichael Chan 	__le16	cmpl_ring;
8085c0c050c5SMichael Chan 	__le16	seq_id;
8086c0c050c5SMichael Chan 	__le16	target_id;
8087c0c050c5SMichael Chan 	__le64	resp_addr;
8088c0c050c5SMichael Chan 	u8	tunnel_type;
8089441cabbbSMichael Chan 	#define TUNNEL_DST_PORT_ALLOC_REQ_TUNNEL_TYPE_VXLAN        0x1UL
8090441cabbbSMichael Chan 	#define TUNNEL_DST_PORT_ALLOC_REQ_TUNNEL_TYPE_GENEVE       0x5UL
809157922b0aSMichael Chan 	#define TUNNEL_DST_PORT_ALLOC_REQ_TUNNEL_TYPE_VXLAN_V4     0x9UL
80926fc92c33SMichael Chan 	#define TUNNEL_DST_PORT_ALLOC_REQ_TUNNEL_TYPE_IPGRE_V1     0xaUL
809331d357c0SMichael Chan 	#define TUNNEL_DST_PORT_ALLOC_REQ_TUNNEL_TYPE_L2_ETYPE     0xbUL
80943322479eSMichael Chan 	#define TUNNEL_DST_PORT_ALLOC_REQ_TUNNEL_TYPE_VXLAN_GPE_V6 0xcUL
809584a911dbSMichael Chan 	#define TUNNEL_DST_PORT_ALLOC_REQ_TUNNEL_TYPE_CUSTOM_GRE   0xdUL
809684a911dbSMichael Chan 	#define TUNNEL_DST_PORT_ALLOC_REQ_TUNNEL_TYPE_ECPRI        0xeUL
809784a911dbSMichael Chan 	#define TUNNEL_DST_PORT_ALLOC_REQ_TUNNEL_TYPE_LAST        TUNNEL_DST_PORT_ALLOC_REQ_TUNNEL_TYPE_ECPRI
8098c0c050c5SMichael Chan 	u8	unused_0;
8099c0c050c5SMichael Chan 	__be16	tunnel_dst_port_val;
8100894aa69aSMichael Chan 	u8	unused_1[4];
8101c0c050c5SMichael Chan };
8102c0c050c5SMichael Chan 
8103894aa69aSMichael Chan /* hwrm_tunnel_dst_port_alloc_output (size:128b/16B) */
8104c0c050c5SMichael Chan struct hwrm_tunnel_dst_port_alloc_output {
8105c0c050c5SMichael Chan 	__le16	error_code;
8106c0c050c5SMichael Chan 	__le16	req_type;
8107c0c050c5SMichael Chan 	__le16	seq_id;
8108c0c050c5SMichael Chan 	__le16	resp_len;
8109c0c050c5SMichael Chan 	__le16	tunnel_dst_port_id;
811084a911dbSMichael Chan 	u8	error_info;
811184a911dbSMichael Chan 	#define TUNNEL_DST_PORT_ALLOC_RESP_ERROR_INFO_SUCCESS         0x0UL
811284a911dbSMichael Chan 	#define TUNNEL_DST_PORT_ALLOC_RESP_ERROR_INFO_ERR_ALLOCATED   0x1UL
811384a911dbSMichael Chan 	#define TUNNEL_DST_PORT_ALLOC_RESP_ERROR_INFO_ERR_NO_RESOURCE 0x2UL
811484a911dbSMichael Chan 	#define TUNNEL_DST_PORT_ALLOC_RESP_ERROR_INFO_LAST           TUNNEL_DST_PORT_ALLOC_RESP_ERROR_INFO_ERR_NO_RESOURCE
811584a911dbSMichael Chan 	u8	upar_in_use;
811684a911dbSMichael Chan 	#define TUNNEL_DST_PORT_ALLOC_RESP_UPAR_IN_USE_UPAR0     0x1UL
811784a911dbSMichael Chan 	#define TUNNEL_DST_PORT_ALLOC_RESP_UPAR_IN_USE_UPAR1     0x2UL
811884a911dbSMichael Chan 	#define TUNNEL_DST_PORT_ALLOC_RESP_UPAR_IN_USE_UPAR2     0x4UL
811984a911dbSMichael Chan 	#define TUNNEL_DST_PORT_ALLOC_RESP_UPAR_IN_USE_UPAR3     0x8UL
812084a911dbSMichael Chan 	#define TUNNEL_DST_PORT_ALLOC_RESP_UPAR_IN_USE_UPAR4     0x10UL
812184a911dbSMichael Chan 	#define TUNNEL_DST_PORT_ALLOC_RESP_UPAR_IN_USE_UPAR5     0x20UL
812284a911dbSMichael Chan 	#define TUNNEL_DST_PORT_ALLOC_RESP_UPAR_IN_USE_UPAR6     0x40UL
812384a911dbSMichael Chan 	#define TUNNEL_DST_PORT_ALLOC_RESP_UPAR_IN_USE_UPAR7     0x80UL
812484a911dbSMichael Chan 	u8	unused_0[3];
8125c0c050c5SMichael Chan 	u8	valid;
8126c0c050c5SMichael Chan };
8127c0c050c5SMichael Chan 
8128894aa69aSMichael Chan /* hwrm_tunnel_dst_port_free_input (size:192b/24B) */
8129c0c050c5SMichael Chan struct hwrm_tunnel_dst_port_free_input {
8130c0c050c5SMichael Chan 	__le16	req_type;
8131c0c050c5SMichael Chan 	__le16	cmpl_ring;
8132c0c050c5SMichael Chan 	__le16	seq_id;
8133c0c050c5SMichael Chan 	__le16	target_id;
8134c0c050c5SMichael Chan 	__le64	resp_addr;
8135c0c050c5SMichael Chan 	u8	tunnel_type;
8136441cabbbSMichael Chan 	#define TUNNEL_DST_PORT_FREE_REQ_TUNNEL_TYPE_VXLAN        0x1UL
8137441cabbbSMichael Chan 	#define TUNNEL_DST_PORT_FREE_REQ_TUNNEL_TYPE_GENEVE       0x5UL
813857922b0aSMichael Chan 	#define TUNNEL_DST_PORT_FREE_REQ_TUNNEL_TYPE_VXLAN_V4     0x9UL
81396fc92c33SMichael Chan 	#define TUNNEL_DST_PORT_FREE_REQ_TUNNEL_TYPE_IPGRE_V1     0xaUL
814031d357c0SMichael Chan 	#define TUNNEL_DST_PORT_FREE_REQ_TUNNEL_TYPE_L2_ETYPE     0xbUL
81413322479eSMichael Chan 	#define TUNNEL_DST_PORT_FREE_REQ_TUNNEL_TYPE_VXLAN_GPE_V6 0xcUL
814284a911dbSMichael Chan 	#define TUNNEL_DST_PORT_FREE_REQ_TUNNEL_TYPE_CUSTOM_GRE   0xdUL
814384a911dbSMichael Chan 	#define TUNNEL_DST_PORT_FREE_REQ_TUNNEL_TYPE_ECPRI        0xeUL
814484a911dbSMichael Chan 	#define TUNNEL_DST_PORT_FREE_REQ_TUNNEL_TYPE_LAST        TUNNEL_DST_PORT_FREE_REQ_TUNNEL_TYPE_ECPRI
8145c0c050c5SMichael Chan 	u8	unused_0;
8146c0c050c5SMichael Chan 	__le16	tunnel_dst_port_id;
8147894aa69aSMichael Chan 	u8	unused_1[4];
8148c0c050c5SMichael Chan };
8149c0c050c5SMichael Chan 
8150894aa69aSMichael Chan /* hwrm_tunnel_dst_port_free_output (size:128b/16B) */
8151c0c050c5SMichael Chan struct hwrm_tunnel_dst_port_free_output {
8152c0c050c5SMichael Chan 	__le16	error_code;
8153c0c050c5SMichael Chan 	__le16	req_type;
8154c0c050c5SMichael Chan 	__le16	seq_id;
8155c0c050c5SMichael Chan 	__le16	resp_len;
815684a911dbSMichael Chan 	u8	error_info;
815784a911dbSMichael Chan 	#define TUNNEL_DST_PORT_FREE_RESP_ERROR_INFO_SUCCESS           0x0UL
815884a911dbSMichael Chan 	#define TUNNEL_DST_PORT_FREE_RESP_ERROR_INFO_ERR_NOT_OWNER     0x1UL
815984a911dbSMichael Chan 	#define TUNNEL_DST_PORT_FREE_RESP_ERROR_INFO_ERR_NOT_ALLOCATED 0x2UL
816084a911dbSMichael Chan 	#define TUNNEL_DST_PORT_FREE_RESP_ERROR_INFO_LAST             TUNNEL_DST_PORT_FREE_RESP_ERROR_INFO_ERR_NOT_ALLOCATED
816184a911dbSMichael Chan 	u8	unused_1[6];
8162c0c050c5SMichael Chan 	u8	valid;
8163c0c050c5SMichael Chan };
8164c0c050c5SMichael Chan 
8165894aa69aSMichael Chan /* ctx_hw_stats (size:1280b/160B) */
8166894aa69aSMichael Chan struct ctx_hw_stats {
8167894aa69aSMichael Chan 	__le64	rx_ucast_pkts;
8168894aa69aSMichael Chan 	__le64	rx_mcast_pkts;
8169894aa69aSMichael Chan 	__le64	rx_bcast_pkts;
8170894aa69aSMichael Chan 	__le64	rx_discard_pkts;
8171bfc6e5fbSMichael Chan 	__le64	rx_error_pkts;
8172894aa69aSMichael Chan 	__le64	rx_ucast_bytes;
8173894aa69aSMichael Chan 	__le64	rx_mcast_bytes;
8174894aa69aSMichael Chan 	__le64	rx_bcast_bytes;
8175894aa69aSMichael Chan 	__le64	tx_ucast_pkts;
8176894aa69aSMichael Chan 	__le64	tx_mcast_pkts;
8177894aa69aSMichael Chan 	__le64	tx_bcast_pkts;
8178bfc6e5fbSMichael Chan 	__le64	tx_error_pkts;
8179894aa69aSMichael Chan 	__le64	tx_discard_pkts;
8180894aa69aSMichael Chan 	__le64	tx_ucast_bytes;
8181894aa69aSMichael Chan 	__le64	tx_mcast_bytes;
8182894aa69aSMichael Chan 	__le64	tx_bcast_bytes;
8183894aa69aSMichael Chan 	__le64	tpa_pkts;
8184894aa69aSMichael Chan 	__le64	tpa_bytes;
8185894aa69aSMichael Chan 	__le64	tpa_events;
8186894aa69aSMichael Chan 	__le64	tpa_aborts;
8187894aa69aSMichael Chan };
8188894aa69aSMichael Chan 
81899d6b648cSMichael Chan /* ctx_hw_stats_ext (size:1408b/176B) */
81902792b5b9SMichael Chan struct ctx_hw_stats_ext {
81912792b5b9SMichael Chan 	__le64	rx_ucast_pkts;
81922792b5b9SMichael Chan 	__le64	rx_mcast_pkts;
81932792b5b9SMichael Chan 	__le64	rx_bcast_pkts;
81942792b5b9SMichael Chan 	__le64	rx_discard_pkts;
8195bfc6e5fbSMichael Chan 	__le64	rx_error_pkts;
81962792b5b9SMichael Chan 	__le64	rx_ucast_bytes;
81972792b5b9SMichael Chan 	__le64	rx_mcast_bytes;
81982792b5b9SMichael Chan 	__le64	rx_bcast_bytes;
81992792b5b9SMichael Chan 	__le64	tx_ucast_pkts;
82002792b5b9SMichael Chan 	__le64	tx_mcast_pkts;
82012792b5b9SMichael Chan 	__le64	tx_bcast_pkts;
8202bfc6e5fbSMichael Chan 	__le64	tx_error_pkts;
82032792b5b9SMichael Chan 	__le64	tx_discard_pkts;
82042792b5b9SMichael Chan 	__le64	tx_ucast_bytes;
82052792b5b9SMichael Chan 	__le64	tx_mcast_bytes;
82062792b5b9SMichael Chan 	__le64	tx_bcast_bytes;
82072792b5b9SMichael Chan 	__le64	rx_tpa_eligible_pkt;
82082792b5b9SMichael Chan 	__le64	rx_tpa_eligible_bytes;
82092792b5b9SMichael Chan 	__le64	rx_tpa_pkt;
82102792b5b9SMichael Chan 	__le64	rx_tpa_bytes;
82112792b5b9SMichael Chan 	__le64	rx_tpa_errors;
82129d6b648cSMichael Chan 	__le64	rx_tpa_events;
82132792b5b9SMichael Chan };
82142792b5b9SMichael Chan 
8215894aa69aSMichael Chan /* hwrm_stat_ctx_alloc_input (size:256b/32B) */
8216c0c050c5SMichael Chan struct hwrm_stat_ctx_alloc_input {
8217c0c050c5SMichael Chan 	__le16	req_type;
8218c0c050c5SMichael Chan 	__le16	cmpl_ring;
8219c0c050c5SMichael Chan 	__le16	seq_id;
8220c0c050c5SMichael Chan 	__le16	target_id;
8221c0c050c5SMichael Chan 	__le64	resp_addr;
8222c0c050c5SMichael Chan 	__le64	stats_dma_addr;
8223c0c050c5SMichael Chan 	__le32	update_period_ms;
822487c374deSMichael Chan 	u8	stat_ctx_flags;
822587c374deSMichael Chan 	#define STAT_CTX_ALLOC_REQ_STAT_CTX_FLAGS_ROCE     0x1UL
82262792b5b9SMichael Chan 	u8	unused_0;
82272792b5b9SMichael Chan 	__le16	stats_dma_length;
8228c0c050c5SMichael Chan };
8229c0c050c5SMichael Chan 
8230894aa69aSMichael Chan /* hwrm_stat_ctx_alloc_output (size:128b/16B) */
8231c0c050c5SMichael Chan struct hwrm_stat_ctx_alloc_output {
8232c0c050c5SMichael Chan 	__le16	error_code;
8233c0c050c5SMichael Chan 	__le16	req_type;
8234c0c050c5SMichael Chan 	__le16	seq_id;
8235c0c050c5SMichael Chan 	__le16	resp_len;
8236c0c050c5SMichael Chan 	__le32	stat_ctx_id;
8237894aa69aSMichael Chan 	u8	unused_0[3];
8238c0c050c5SMichael Chan 	u8	valid;
8239c0c050c5SMichael Chan };
8240c0c050c5SMichael Chan 
8241894aa69aSMichael Chan /* hwrm_stat_ctx_free_input (size:192b/24B) */
8242c0c050c5SMichael Chan struct hwrm_stat_ctx_free_input {
8243c0c050c5SMichael Chan 	__le16	req_type;
8244c0c050c5SMichael Chan 	__le16	cmpl_ring;
8245c0c050c5SMichael Chan 	__le16	seq_id;
8246c0c050c5SMichael Chan 	__le16	target_id;
8247c0c050c5SMichael Chan 	__le64	resp_addr;
8248c0c050c5SMichael Chan 	__le32	stat_ctx_id;
8249894aa69aSMichael Chan 	u8	unused_0[4];
8250c0c050c5SMichael Chan };
8251c0c050c5SMichael Chan 
8252894aa69aSMichael Chan /* hwrm_stat_ctx_free_output (size:128b/16B) */
8253c0c050c5SMichael Chan struct hwrm_stat_ctx_free_output {
8254c0c050c5SMichael Chan 	__le16	error_code;
8255c0c050c5SMichael Chan 	__le16	req_type;
8256c0c050c5SMichael Chan 	__le16	seq_id;
8257c0c050c5SMichael Chan 	__le16	resp_len;
8258c0c050c5SMichael Chan 	__le32	stat_ctx_id;
8259894aa69aSMichael Chan 	u8	unused_0[3];
8260c0c050c5SMichael Chan 	u8	valid;
8261c0c050c5SMichael Chan };
8262c0c050c5SMichael Chan 
8263894aa69aSMichael Chan /* hwrm_stat_ctx_query_input (size:192b/24B) */
8264c0c050c5SMichael Chan struct hwrm_stat_ctx_query_input {
8265c0c050c5SMichael Chan 	__le16	req_type;
8266c0c050c5SMichael Chan 	__le16	cmpl_ring;
8267c0c050c5SMichael Chan 	__le16	seq_id;
8268c0c050c5SMichael Chan 	__le16	target_id;
8269c0c050c5SMichael Chan 	__le64	resp_addr;
8270c0c050c5SMichael Chan 	__le32	stat_ctx_id;
8271bfc6e5fbSMichael Chan 	u8	flags;
8272bfc6e5fbSMichael Chan 	#define STAT_CTX_QUERY_REQ_FLAGS_COUNTER_MASK     0x1UL
8273bfc6e5fbSMichael Chan 	u8	unused_0[3];
8274c0c050c5SMichael Chan };
8275c0c050c5SMichael Chan 
8276894aa69aSMichael Chan /* hwrm_stat_ctx_query_output (size:1408b/176B) */
8277c0c050c5SMichael Chan struct hwrm_stat_ctx_query_output {
8278c0c050c5SMichael Chan 	__le16	error_code;
8279c0c050c5SMichael Chan 	__le16	req_type;
8280c0c050c5SMichael Chan 	__le16	seq_id;
8281c0c050c5SMichael Chan 	__le16	resp_len;
8282c0c050c5SMichael Chan 	__le64	tx_ucast_pkts;
8283c0c050c5SMichael Chan 	__le64	tx_mcast_pkts;
8284c0c050c5SMichael Chan 	__le64	tx_bcast_pkts;
82859d6b648cSMichael Chan 	__le64	tx_discard_pkts;
82869d6b648cSMichael Chan 	__le64	tx_error_pkts;
8287c0c050c5SMichael Chan 	__le64	tx_ucast_bytes;
8288c0c050c5SMichael Chan 	__le64	tx_mcast_bytes;
8289c0c050c5SMichael Chan 	__le64	tx_bcast_bytes;
8290c0c050c5SMichael Chan 	__le64	rx_ucast_pkts;
8291c0c050c5SMichael Chan 	__le64	rx_mcast_pkts;
8292c0c050c5SMichael Chan 	__le64	rx_bcast_pkts;
82939d6b648cSMichael Chan 	__le64	rx_discard_pkts;
82949d6b648cSMichael Chan 	__le64	rx_error_pkts;
8295c0c050c5SMichael Chan 	__le64	rx_ucast_bytes;
8296c0c050c5SMichael Chan 	__le64	rx_mcast_bytes;
8297c0c050c5SMichael Chan 	__le64	rx_bcast_bytes;
8298c0c050c5SMichael Chan 	__le64	rx_agg_pkts;
8299c0c050c5SMichael Chan 	__le64	rx_agg_bytes;
8300c0c050c5SMichael Chan 	__le64	rx_agg_events;
8301c0c050c5SMichael Chan 	__le64	rx_agg_aborts;
8302894aa69aSMichael Chan 	u8	unused_0[7];
8303c0c050c5SMichael Chan 	u8	valid;
8304c0c050c5SMichael Chan };
8305c0c050c5SMichael Chan 
8306bfc6e5fbSMichael Chan /* hwrm_stat_ext_ctx_query_input (size:192b/24B) */
8307bfc6e5fbSMichael Chan struct hwrm_stat_ext_ctx_query_input {
8308bfc6e5fbSMichael Chan 	__le16	req_type;
8309bfc6e5fbSMichael Chan 	__le16	cmpl_ring;
8310bfc6e5fbSMichael Chan 	__le16	seq_id;
8311bfc6e5fbSMichael Chan 	__le16	target_id;
8312bfc6e5fbSMichael Chan 	__le64	resp_addr;
8313bfc6e5fbSMichael Chan 	__le32	stat_ctx_id;
8314bfc6e5fbSMichael Chan 	u8	flags;
8315bfc6e5fbSMichael Chan 	#define STAT_EXT_CTX_QUERY_REQ_FLAGS_COUNTER_MASK     0x1UL
8316bfc6e5fbSMichael Chan 	u8	unused_0[3];
8317bfc6e5fbSMichael Chan };
8318bfc6e5fbSMichael Chan 
83199d6b648cSMichael Chan /* hwrm_stat_ext_ctx_query_output (size:1536b/192B) */
8320bfc6e5fbSMichael Chan struct hwrm_stat_ext_ctx_query_output {
8321bfc6e5fbSMichael Chan 	__le16	error_code;
8322bfc6e5fbSMichael Chan 	__le16	req_type;
8323bfc6e5fbSMichael Chan 	__le16	seq_id;
8324bfc6e5fbSMichael Chan 	__le16	resp_len;
8325bfc6e5fbSMichael Chan 	__le64	rx_ucast_pkts;
8326bfc6e5fbSMichael Chan 	__le64	rx_mcast_pkts;
8327bfc6e5fbSMichael Chan 	__le64	rx_bcast_pkts;
8328bfc6e5fbSMichael Chan 	__le64	rx_discard_pkts;
8329bfc6e5fbSMichael Chan 	__le64	rx_error_pkts;
8330bfc6e5fbSMichael Chan 	__le64	rx_ucast_bytes;
8331bfc6e5fbSMichael Chan 	__le64	rx_mcast_bytes;
8332bfc6e5fbSMichael Chan 	__le64	rx_bcast_bytes;
8333bfc6e5fbSMichael Chan 	__le64	tx_ucast_pkts;
8334bfc6e5fbSMichael Chan 	__le64	tx_mcast_pkts;
8335bfc6e5fbSMichael Chan 	__le64	tx_bcast_pkts;
8336bfc6e5fbSMichael Chan 	__le64	tx_error_pkts;
8337bfc6e5fbSMichael Chan 	__le64	tx_discard_pkts;
8338bfc6e5fbSMichael Chan 	__le64	tx_ucast_bytes;
8339bfc6e5fbSMichael Chan 	__le64	tx_mcast_bytes;
8340bfc6e5fbSMichael Chan 	__le64	tx_bcast_bytes;
8341bfc6e5fbSMichael Chan 	__le64	rx_tpa_eligible_pkt;
8342bfc6e5fbSMichael Chan 	__le64	rx_tpa_eligible_bytes;
8343bfc6e5fbSMichael Chan 	__le64	rx_tpa_pkt;
8344bfc6e5fbSMichael Chan 	__le64	rx_tpa_bytes;
8345bfc6e5fbSMichael Chan 	__le64	rx_tpa_errors;
83469d6b648cSMichael Chan 	__le64	rx_tpa_events;
8347bfc6e5fbSMichael Chan 	u8	unused_0[7];
8348bfc6e5fbSMichael Chan 	u8	valid;
8349bfc6e5fbSMichael Chan };
8350bfc6e5fbSMichael Chan 
8351894aa69aSMichael Chan /* hwrm_stat_ctx_clr_stats_input (size:192b/24B) */
8352c0c050c5SMichael Chan struct hwrm_stat_ctx_clr_stats_input {
8353c0c050c5SMichael Chan 	__le16	req_type;
8354c0c050c5SMichael Chan 	__le16	cmpl_ring;
8355c0c050c5SMichael Chan 	__le16	seq_id;
8356c0c050c5SMichael Chan 	__le16	target_id;
8357c0c050c5SMichael Chan 	__le64	resp_addr;
8358c0c050c5SMichael Chan 	__le32	stat_ctx_id;
8359894aa69aSMichael Chan 	u8	unused_0[4];
8360c0c050c5SMichael Chan };
8361c0c050c5SMichael Chan 
8362894aa69aSMichael Chan /* hwrm_stat_ctx_clr_stats_output (size:128b/16B) */
8363c0c050c5SMichael Chan struct hwrm_stat_ctx_clr_stats_output {
8364c0c050c5SMichael Chan 	__le16	error_code;
8365c0c050c5SMichael Chan 	__le16	req_type;
8366c0c050c5SMichael Chan 	__le16	seq_id;
8367c0c050c5SMichael Chan 	__le16	resp_len;
836811f15ed3SMichael Chan 	u8	unused_0[7];
836911f15ed3SMichael Chan 	u8	valid;
837011f15ed3SMichael Chan };
837111f15ed3SMichael Chan 
8372d4f52de0SMichael Chan /* hwrm_pcie_qstats_input (size:256b/32B) */
8373d4f52de0SMichael Chan struct hwrm_pcie_qstats_input {
8374d4f52de0SMichael Chan 	__le16	req_type;
8375d4f52de0SMichael Chan 	__le16	cmpl_ring;
8376d4f52de0SMichael Chan 	__le16	seq_id;
8377d4f52de0SMichael Chan 	__le16	target_id;
8378d4f52de0SMichael Chan 	__le64	resp_addr;
8379d4f52de0SMichael Chan 	__le16	pcie_stat_size;
8380d4f52de0SMichael Chan 	u8	unused_0[6];
8381d4f52de0SMichael Chan 	__le64	pcie_stat_host_addr;
8382d4f52de0SMichael Chan };
8383d4f52de0SMichael Chan 
8384d4f52de0SMichael Chan /* hwrm_pcie_qstats_output (size:128b/16B) */
8385d4f52de0SMichael Chan struct hwrm_pcie_qstats_output {
8386d4f52de0SMichael Chan 	__le16	error_code;
8387d4f52de0SMichael Chan 	__le16	req_type;
8388d4f52de0SMichael Chan 	__le16	seq_id;
8389d4f52de0SMichael Chan 	__le16	resp_len;
8390d4f52de0SMichael Chan 	__le16	pcie_stat_size;
8391d4f52de0SMichael Chan 	u8	unused_0[5];
8392d4f52de0SMichael Chan 	u8	valid;
8393d4f52de0SMichael Chan };
8394d4f52de0SMichael Chan 
8395d4f52de0SMichael Chan /* pcie_ctx_hw_stats (size:768b/96B) */
8396d4f52de0SMichael Chan struct pcie_ctx_hw_stats {
8397d4f52de0SMichael Chan 	__le64	pcie_pl_signal_integrity;
8398d4f52de0SMichael Chan 	__le64	pcie_dl_signal_integrity;
8399d4f52de0SMichael Chan 	__le64	pcie_tl_signal_integrity;
8400d4f52de0SMichael Chan 	__le64	pcie_link_integrity;
8401d4f52de0SMichael Chan 	__le64	pcie_tx_traffic_rate;
8402d4f52de0SMichael Chan 	__le64	pcie_rx_traffic_rate;
8403d4f52de0SMichael Chan 	__le64	pcie_tx_dllp_statistics;
8404d4f52de0SMichael Chan 	__le64	pcie_rx_dllp_statistics;
8405d4f52de0SMichael Chan 	__le64	pcie_equalization_time;
8406d4f52de0SMichael Chan 	__le32	pcie_ltssm_histogram[4];
8407d4f52de0SMichael Chan 	__le64	pcie_recovery_histogram;
8408d4f52de0SMichael Chan };
8409d4f52de0SMichael Chan 
8410ad04cc05SMichael Chan /* hwrm_stat_generic_qstats_input (size:256b/32B) */
8411ad04cc05SMichael Chan struct hwrm_stat_generic_qstats_input {
8412ad04cc05SMichael Chan 	__le16	req_type;
8413ad04cc05SMichael Chan 	__le16	cmpl_ring;
8414ad04cc05SMichael Chan 	__le16	seq_id;
8415ad04cc05SMichael Chan 	__le16	target_id;
8416ad04cc05SMichael Chan 	__le64	resp_addr;
8417ad04cc05SMichael Chan 	__le16	generic_stat_size;
8418ad04cc05SMichael Chan 	u8	flags;
8419ad04cc05SMichael Chan 	#define STAT_GENERIC_QSTATS_REQ_FLAGS_COUNTER_MASK     0x1UL
8420ad04cc05SMichael Chan 	u8	unused_0[5];
8421ad04cc05SMichael Chan 	__le64	generic_stat_host_addr;
8422ad04cc05SMichael Chan };
8423ad04cc05SMichael Chan 
8424ad04cc05SMichael Chan /* hwrm_stat_generic_qstats_output (size:128b/16B) */
8425ad04cc05SMichael Chan struct hwrm_stat_generic_qstats_output {
8426ad04cc05SMichael Chan 	__le16	error_code;
8427ad04cc05SMichael Chan 	__le16	req_type;
8428ad04cc05SMichael Chan 	__le16	seq_id;
8429ad04cc05SMichael Chan 	__le16	resp_len;
8430ad04cc05SMichael Chan 	__le16	generic_stat_size;
8431ad04cc05SMichael Chan 	u8	unused_0[5];
8432ad04cc05SMichael Chan 	u8	valid;
8433ad04cc05SMichael Chan };
8434ad04cc05SMichael Chan 
8435ad04cc05SMichael Chan /* generic_sw_hw_stats (size:1216b/152B) */
8436ad04cc05SMichael Chan struct generic_sw_hw_stats {
8437ad04cc05SMichael Chan 	__le64	pcie_statistics_tx_tlp;
8438ad04cc05SMichael Chan 	__le64	pcie_statistics_rx_tlp;
8439ad04cc05SMichael Chan 	__le64	pcie_credit_fc_hdr_posted;
8440ad04cc05SMichael Chan 	__le64	pcie_credit_fc_hdr_nonposted;
8441ad04cc05SMichael Chan 	__le64	pcie_credit_fc_hdr_cmpl;
8442ad04cc05SMichael Chan 	__le64	pcie_credit_fc_data_posted;
8443ad04cc05SMichael Chan 	__le64	pcie_credit_fc_data_nonposted;
8444ad04cc05SMichael Chan 	__le64	pcie_credit_fc_data_cmpl;
8445ad04cc05SMichael Chan 	__le64	pcie_credit_fc_tgt_nonposted;
8446ad04cc05SMichael Chan 	__le64	pcie_credit_fc_tgt_data_posted;
8447ad04cc05SMichael Chan 	__le64	pcie_credit_fc_tgt_hdr_posted;
8448ad04cc05SMichael Chan 	__le64	pcie_credit_fc_cmpl_hdr_posted;
8449ad04cc05SMichael Chan 	__le64	pcie_credit_fc_cmpl_data_posted;
8450ad04cc05SMichael Chan 	__le64	pcie_cmpl_longest;
8451ad04cc05SMichael Chan 	__le64	pcie_cmpl_shortest;
8452ad04cc05SMichael Chan 	__le64	cache_miss_count_cfcq;
8453ad04cc05SMichael Chan 	__le64	cache_miss_count_cfcs;
8454ad04cc05SMichael Chan 	__le64	cache_miss_count_cfcc;
8455ad04cc05SMichael Chan 	__le64	cache_miss_count_cfcm;
8456ad04cc05SMichael Chan };
8457ad04cc05SMichael Chan 
8458894aa69aSMichael Chan /* hwrm_fw_reset_input (size:192b/24B) */
8459894aa69aSMichael Chan struct hwrm_fw_reset_input {
8460894aa69aSMichael Chan 	__le16	req_type;
8461894aa69aSMichael Chan 	__le16	cmpl_ring;
8462894aa69aSMichael Chan 	__le16	seq_id;
8463894aa69aSMichael Chan 	__le16	target_id;
8464894aa69aSMichael Chan 	__le64	resp_addr;
8465894aa69aSMichael Chan 	u8	embedded_proc_type;
8466894aa69aSMichael Chan 	#define FW_RESET_REQ_EMBEDDED_PROC_TYPE_BOOT                  0x0UL
8467894aa69aSMichael Chan 	#define FW_RESET_REQ_EMBEDDED_PROC_TYPE_MGMT                  0x1UL
8468894aa69aSMichael Chan 	#define FW_RESET_REQ_EMBEDDED_PROC_TYPE_NETCTRL               0x2UL
8469894aa69aSMichael Chan 	#define FW_RESET_REQ_EMBEDDED_PROC_TYPE_ROCE                  0x3UL
8470894aa69aSMichael Chan 	#define FW_RESET_REQ_EMBEDDED_PROC_TYPE_HOST                  0x4UL
8471894aa69aSMichael Chan 	#define FW_RESET_REQ_EMBEDDED_PROC_TYPE_AP                    0x5UL
8472894aa69aSMichael Chan 	#define FW_RESET_REQ_EMBEDDED_PROC_TYPE_CHIP                  0x6UL
8473d4f52de0SMichael Chan 	#define FW_RESET_REQ_EMBEDDED_PROC_TYPE_HOST_RESOURCE_REINIT  0x7UL
847472e0c9f9SMichael Chan 	#define FW_RESET_REQ_EMBEDDED_PROC_TYPE_IMPACTLESS_ACTIVATION 0x8UL
847572e0c9f9SMichael Chan 	#define FW_RESET_REQ_EMBEDDED_PROC_TYPE_LAST                 FW_RESET_REQ_EMBEDDED_PROC_TYPE_IMPACTLESS_ACTIVATION
8476894aa69aSMichael Chan 	u8	selfrst_status;
8477894aa69aSMichael Chan 	#define FW_RESET_REQ_SELFRST_STATUS_SELFRSTNONE      0x0UL
8478894aa69aSMichael Chan 	#define FW_RESET_REQ_SELFRST_STATUS_SELFRSTASAP      0x1UL
8479894aa69aSMichael Chan 	#define FW_RESET_REQ_SELFRST_STATUS_SELFRSTPCIERST   0x2UL
848031d357c0SMichael Chan 	#define FW_RESET_REQ_SELFRST_STATUS_SELFRSTIMMEDIATE 0x3UL
848131d357c0SMichael Chan 	#define FW_RESET_REQ_SELFRST_STATUS_LAST            FW_RESET_REQ_SELFRST_STATUS_SELFRSTIMMEDIATE
8482894aa69aSMichael Chan 	u8	host_idx;
84833322479eSMichael Chan 	u8	flags;
84843322479eSMichael Chan 	#define FW_RESET_REQ_FLAGS_RESET_GRACEFUL     0x1UL
8485fbfee257SMichael Chan 	#define FW_RESET_REQ_FLAGS_FW_ACTIVATION      0x2UL
84863322479eSMichael Chan 	u8	unused_0[4];
848757922b0aSMichael Chan };
848857922b0aSMichael Chan 
8489894aa69aSMichael Chan /* hwrm_fw_reset_output (size:128b/16B) */
8490894aa69aSMichael Chan struct hwrm_fw_reset_output {
8491894aa69aSMichael Chan 	__le16	error_code;
8492894aa69aSMichael Chan 	__le16	req_type;
8493894aa69aSMichael Chan 	__le16	seq_id;
8494894aa69aSMichael Chan 	__le16	resp_len;
8495894aa69aSMichael Chan 	u8	selfrst_status;
8496894aa69aSMichael Chan 	#define FW_RESET_RESP_SELFRST_STATUS_SELFRSTNONE      0x0UL
8497894aa69aSMichael Chan 	#define FW_RESET_RESP_SELFRST_STATUS_SELFRSTASAP      0x1UL
8498894aa69aSMichael Chan 	#define FW_RESET_RESP_SELFRST_STATUS_SELFRSTPCIERST   0x2UL
849931d357c0SMichael Chan 	#define FW_RESET_RESP_SELFRST_STATUS_SELFRSTIMMEDIATE 0x3UL
850031d357c0SMichael Chan 	#define FW_RESET_RESP_SELFRST_STATUS_LAST            FW_RESET_RESP_SELFRST_STATUS_SELFRSTIMMEDIATE
8501894aa69aSMichael Chan 	u8	unused_0[6];
8502894aa69aSMichael Chan 	u8	valid;
850357922b0aSMichael Chan };
850457922b0aSMichael Chan 
8505894aa69aSMichael Chan /* hwrm_fw_qstatus_input (size:192b/24B) */
8506894aa69aSMichael Chan struct hwrm_fw_qstatus_input {
8507894aa69aSMichael Chan 	__le16	req_type;
8508894aa69aSMichael Chan 	__le16	cmpl_ring;
8509894aa69aSMichael Chan 	__le16	seq_id;
8510894aa69aSMichael Chan 	__le16	target_id;
8511894aa69aSMichael Chan 	__le64	resp_addr;
8512894aa69aSMichael Chan 	u8	embedded_proc_type;
8513894aa69aSMichael Chan 	#define FW_QSTATUS_REQ_EMBEDDED_PROC_TYPE_BOOT    0x0UL
8514894aa69aSMichael Chan 	#define FW_QSTATUS_REQ_EMBEDDED_PROC_TYPE_MGMT    0x1UL
8515894aa69aSMichael Chan 	#define FW_QSTATUS_REQ_EMBEDDED_PROC_TYPE_NETCTRL 0x2UL
8516894aa69aSMichael Chan 	#define FW_QSTATUS_REQ_EMBEDDED_PROC_TYPE_ROCE    0x3UL
8517894aa69aSMichael Chan 	#define FW_QSTATUS_REQ_EMBEDDED_PROC_TYPE_HOST    0x4UL
8518894aa69aSMichael Chan 	#define FW_QSTATUS_REQ_EMBEDDED_PROC_TYPE_AP      0x5UL
8519894aa69aSMichael Chan 	#define FW_QSTATUS_REQ_EMBEDDED_PROC_TYPE_CHIP    0x6UL
8520894aa69aSMichael Chan 	#define FW_QSTATUS_REQ_EMBEDDED_PROC_TYPE_LAST   FW_QSTATUS_REQ_EMBEDDED_PROC_TYPE_CHIP
8521894aa69aSMichael Chan 	u8	unused_0[7];
852257922b0aSMichael Chan };
852357922b0aSMichael Chan 
8524894aa69aSMichael Chan /* hwrm_fw_qstatus_output (size:128b/16B) */
8525894aa69aSMichael Chan struct hwrm_fw_qstatus_output {
8526894aa69aSMichael Chan 	__le16	error_code;
8527894aa69aSMichael Chan 	__le16	req_type;
8528894aa69aSMichael Chan 	__le16	seq_id;
8529894aa69aSMichael Chan 	__le16	resp_len;
8530894aa69aSMichael Chan 	u8	selfrst_status;
8531894aa69aSMichael Chan 	#define FW_QSTATUS_RESP_SELFRST_STATUS_SELFRSTNONE    0x0UL
8532894aa69aSMichael Chan 	#define FW_QSTATUS_RESP_SELFRST_STATUS_SELFRSTASAP    0x1UL
8533894aa69aSMichael Chan 	#define FW_QSTATUS_RESP_SELFRST_STATUS_SELFRSTPCIERST 0x2UL
85344a50ddc2SMichael Chan 	#define FW_QSTATUS_RESP_SELFRST_STATUS_SELFRSTPOWER   0x3UL
85354a50ddc2SMichael Chan 	#define FW_QSTATUS_RESP_SELFRST_STATUS_LAST          FW_QSTATUS_RESP_SELFRST_STATUS_SELFRSTPOWER
853631f67c2eSMichael Chan 	u8	nvm_option_action_status;
853731f67c2eSMichael Chan 	#define FW_QSTATUS_RESP_NVM_OPTION_ACTION_STATUS_NVMOPT_ACTION_NONE     0x0UL
853831f67c2eSMichael Chan 	#define FW_QSTATUS_RESP_NVM_OPTION_ACTION_STATUS_NVMOPT_ACTION_HOTRESET 0x1UL
853931f67c2eSMichael Chan 	#define FW_QSTATUS_RESP_NVM_OPTION_ACTION_STATUS_NVMOPT_ACTION_WARMBOOT 0x2UL
854031f67c2eSMichael Chan 	#define FW_QSTATUS_RESP_NVM_OPTION_ACTION_STATUS_NVMOPT_ACTION_COLDBOOT 0x3UL
854131f67c2eSMichael Chan 	#define FW_QSTATUS_RESP_NVM_OPTION_ACTION_STATUS_LAST                  FW_QSTATUS_RESP_NVM_OPTION_ACTION_STATUS_NVMOPT_ACTION_COLDBOOT
854231f67c2eSMichael Chan 	u8	unused_0[5];
8543894aa69aSMichael Chan 	u8	valid;
854487c374deSMichael Chan };
854587c374deSMichael Chan 
8546894aa69aSMichael Chan /* hwrm_fw_set_time_input (size:256b/32B) */
8547894aa69aSMichael Chan struct hwrm_fw_set_time_input {
8548894aa69aSMichael Chan 	__le16	req_type;
8549894aa69aSMichael Chan 	__le16	cmpl_ring;
8550894aa69aSMichael Chan 	__le16	seq_id;
8551894aa69aSMichael Chan 	__le16	target_id;
8552894aa69aSMichael Chan 	__le64	resp_addr;
8553894aa69aSMichael Chan 	__le16	year;
8554894aa69aSMichael Chan 	#define FW_SET_TIME_REQ_YEAR_UNKNOWN 0x0UL
8555894aa69aSMichael Chan 	#define FW_SET_TIME_REQ_YEAR_LAST   FW_SET_TIME_REQ_YEAR_UNKNOWN
8556894aa69aSMichael Chan 	u8	month;
8557894aa69aSMichael Chan 	u8	day;
8558894aa69aSMichael Chan 	u8	hour;
8559894aa69aSMichael Chan 	u8	minute;
8560894aa69aSMichael Chan 	u8	second;
8561894aa69aSMichael Chan 	u8	unused_0;
8562894aa69aSMichael Chan 	__le16	millisecond;
8563894aa69aSMichael Chan 	__le16	zone;
85644a50ddc2SMichael Chan 	#define FW_SET_TIME_REQ_ZONE_UTC     0
85654a50ddc2SMichael Chan 	#define FW_SET_TIME_REQ_ZONE_UNKNOWN 65535
8566894aa69aSMichael Chan 	#define FW_SET_TIME_REQ_ZONE_LAST   FW_SET_TIME_REQ_ZONE_UNKNOWN
8567894aa69aSMichael Chan 	u8	unused_1[4];
8568894aa69aSMichael Chan };
8569894aa69aSMichael Chan 
8570894aa69aSMichael Chan /* hwrm_fw_set_time_output (size:128b/16B) */
8571894aa69aSMichael Chan struct hwrm_fw_set_time_output {
8572894aa69aSMichael Chan 	__le16	error_code;
8573894aa69aSMichael Chan 	__le16	req_type;
8574894aa69aSMichael Chan 	__le16	seq_id;
8575894aa69aSMichael Chan 	__le16	resp_len;
8576894aa69aSMichael Chan 	u8	unused_0[7];
8577894aa69aSMichael Chan 	u8	valid;
8578894aa69aSMichael Chan };
8579894aa69aSMichael Chan 
8580894aa69aSMichael Chan /* hwrm_struct_hdr (size:128b/16B) */
858187c374deSMichael Chan struct hwrm_struct_hdr {
858287c374deSMichael Chan 	__le16	struct_id;
858387c374deSMichael Chan 	#define STRUCT_HDR_STRUCT_ID_LLDP_CFG           0x41bUL
8584f183886cSMichael Chan 	#define STRUCT_HDR_STRUCT_ID_DCBX_ETS           0x41dUL
8585f183886cSMichael Chan 	#define STRUCT_HDR_STRUCT_ID_DCBX_PFC           0x41fUL
8586f183886cSMichael Chan 	#define STRUCT_HDR_STRUCT_ID_DCBX_APP           0x421UL
8587f183886cSMichael Chan 	#define STRUCT_HDR_STRUCT_ID_DCBX_FEATURE_STATE 0x422UL
8588f183886cSMichael Chan 	#define STRUCT_HDR_STRUCT_ID_LLDP_GENERIC       0x424UL
8589f183886cSMichael Chan 	#define STRUCT_HDR_STRUCT_ID_LLDP_DEVICE        0x426UL
85903322479eSMichael Chan 	#define STRUCT_HDR_STRUCT_ID_POWER_BKUP         0x427UL
85918eb992e8SMichael Chan 	#define STRUCT_HDR_STRUCT_ID_AFM_OPAQUE         0x1UL
8592f183886cSMichael Chan 	#define STRUCT_HDR_STRUCT_ID_PORT_DESCRIPTION   0xaUL
85936a17eb27SMichael Chan 	#define STRUCT_HDR_STRUCT_ID_RSS_V2             0x64UL
859416db6323SMichael Chan 	#define STRUCT_HDR_STRUCT_ID_MSIX_PER_VF        0xc8UL
859516db6323SMichael Chan 	#define STRUCT_HDR_STRUCT_ID_LAST              STRUCT_HDR_STRUCT_ID_MSIX_PER_VF
859687c374deSMichael Chan 	__le16	len;
859787c374deSMichael Chan 	u8	version;
859887c374deSMichael Chan 	u8	count;
859987c374deSMichael Chan 	__le16	subtype;
860087c374deSMichael Chan 	__le16	next_offset;
860187c374deSMichael Chan 	#define STRUCT_HDR_NEXT_OFFSET_LAST 0x0UL
8602894aa69aSMichael Chan 	u8	unused_0[6];
860387c374deSMichael Chan };
860487c374deSMichael Chan 
8605894aa69aSMichael Chan /* hwrm_struct_data_dcbx_app (size:64b/8B) */
8606f183886cSMichael Chan struct hwrm_struct_data_dcbx_app {
8607f183886cSMichael Chan 	__be16	protocol_id;
860887c374deSMichael Chan 	u8	protocol_selector;
8609f183886cSMichael Chan 	#define STRUCT_DATA_DCBX_APP_PROTOCOL_SELECTOR_ETHER_TYPE   0x1UL
8610f183886cSMichael Chan 	#define STRUCT_DATA_DCBX_APP_PROTOCOL_SELECTOR_TCP_PORT     0x2UL
8611f183886cSMichael Chan 	#define STRUCT_DATA_DCBX_APP_PROTOCOL_SELECTOR_UDP_PORT     0x3UL
8612f183886cSMichael Chan 	#define STRUCT_DATA_DCBX_APP_PROTOCOL_SELECTOR_TCP_UDP_PORT 0x4UL
8613894aa69aSMichael Chan 	#define STRUCT_DATA_DCBX_APP_PROTOCOL_SELECTOR_LAST        STRUCT_DATA_DCBX_APP_PROTOCOL_SELECTOR_TCP_UDP_PORT
861487c374deSMichael Chan 	u8	priority;
861587c374deSMichael Chan 	u8	valid;
861687c374deSMichael Chan 	u8	unused_0[3];
861787c374deSMichael Chan };
861887c374deSMichael Chan 
8619894aa69aSMichael Chan /* hwrm_fw_set_structured_data_input (size:256b/32B) */
8620894aa69aSMichael Chan struct hwrm_fw_set_structured_data_input {
8621894aa69aSMichael Chan 	__le16	req_type;
8622894aa69aSMichael Chan 	__le16	cmpl_ring;
8623894aa69aSMichael Chan 	__le16	seq_id;
8624894aa69aSMichael Chan 	__le16	target_id;
8625894aa69aSMichael Chan 	__le64	resp_addr;
8626894aa69aSMichael Chan 	__le64	src_data_addr;
8627894aa69aSMichael Chan 	__le16	data_len;
8628894aa69aSMichael Chan 	u8	hdr_cnt;
8629894aa69aSMichael Chan 	u8	unused_0[5];
8630894aa69aSMichael Chan };
8631894aa69aSMichael Chan 
8632894aa69aSMichael Chan /* hwrm_fw_set_structured_data_output (size:128b/16B) */
8633894aa69aSMichael Chan struct hwrm_fw_set_structured_data_output {
8634894aa69aSMichael Chan 	__le16	error_code;
8635894aa69aSMichael Chan 	__le16	req_type;
8636894aa69aSMichael Chan 	__le16	seq_id;
8637894aa69aSMichael Chan 	__le16	resp_len;
8638894aa69aSMichael Chan 	u8	unused_0[7];
8639894aa69aSMichael Chan 	u8	valid;
8640894aa69aSMichael Chan };
8641894aa69aSMichael Chan 
8642894aa69aSMichael Chan /* hwrm_fw_set_structured_data_cmd_err (size:64b/8B) */
8643894aa69aSMichael Chan struct hwrm_fw_set_structured_data_cmd_err {
8644894aa69aSMichael Chan 	u8	code;
8645894aa69aSMichael Chan 	#define FW_SET_STRUCTURED_DATA_CMD_ERR_CODE_UNKNOWN     0x0UL
8646894aa69aSMichael Chan 	#define FW_SET_STRUCTURED_DATA_CMD_ERR_CODE_BAD_HDR_CNT 0x1UL
8647894aa69aSMichael Chan 	#define FW_SET_STRUCTURED_DATA_CMD_ERR_CODE_BAD_FMT     0x2UL
8648894aa69aSMichael Chan 	#define FW_SET_STRUCTURED_DATA_CMD_ERR_CODE_BAD_ID      0x3UL
8649894aa69aSMichael Chan 	#define FW_SET_STRUCTURED_DATA_CMD_ERR_CODE_LAST       FW_SET_STRUCTURED_DATA_CMD_ERR_CODE_BAD_ID
8650894aa69aSMichael Chan 	u8	unused_0[7];
8651894aa69aSMichael Chan };
8652894aa69aSMichael Chan 
8653894aa69aSMichael Chan /* hwrm_fw_get_structured_data_input (size:256b/32B) */
8654894aa69aSMichael Chan struct hwrm_fw_get_structured_data_input {
8655894aa69aSMichael Chan 	__le16	req_type;
8656894aa69aSMichael Chan 	__le16	cmpl_ring;
8657894aa69aSMichael Chan 	__le16	seq_id;
8658894aa69aSMichael Chan 	__le16	target_id;
8659894aa69aSMichael Chan 	__le64	resp_addr;
8660894aa69aSMichael Chan 	__le64	dest_data_addr;
8661894aa69aSMichael Chan 	__le16	data_len;
8662894aa69aSMichael Chan 	__le16	structure_id;
8663894aa69aSMichael Chan 	__le16	subtype;
8664894aa69aSMichael Chan 	#define FW_GET_STRUCTURED_DATA_REQ_SUBTYPE_UNUSED                  0x0UL
8665894aa69aSMichael Chan 	#define FW_GET_STRUCTURED_DATA_REQ_SUBTYPE_ALL                     0xffffUL
8666894aa69aSMichael Chan 	#define FW_GET_STRUCTURED_DATA_REQ_SUBTYPE_NEAR_BRIDGE_ADMIN       0x100UL
8667894aa69aSMichael Chan 	#define FW_GET_STRUCTURED_DATA_REQ_SUBTYPE_NEAR_BRIDGE_PEER        0x101UL
8668894aa69aSMichael Chan 	#define FW_GET_STRUCTURED_DATA_REQ_SUBTYPE_NEAR_BRIDGE_OPERATIONAL 0x102UL
8669894aa69aSMichael Chan 	#define FW_GET_STRUCTURED_DATA_REQ_SUBTYPE_NON_TPMR_ADMIN          0x200UL
8670894aa69aSMichael Chan 	#define FW_GET_STRUCTURED_DATA_REQ_SUBTYPE_NON_TPMR_PEER           0x201UL
8671894aa69aSMichael Chan 	#define FW_GET_STRUCTURED_DATA_REQ_SUBTYPE_NON_TPMR_OPERATIONAL    0x202UL
8672894aa69aSMichael Chan 	#define FW_GET_STRUCTURED_DATA_REQ_SUBTYPE_HOST_OPERATIONAL        0x300UL
8673894aa69aSMichael Chan 	#define FW_GET_STRUCTURED_DATA_REQ_SUBTYPE_LAST                   FW_GET_STRUCTURED_DATA_REQ_SUBTYPE_HOST_OPERATIONAL
8674894aa69aSMichael Chan 	u8	count;
8675894aa69aSMichael Chan 	u8	unused_0;
8676894aa69aSMichael Chan };
8677894aa69aSMichael Chan 
8678894aa69aSMichael Chan /* hwrm_fw_get_structured_data_output (size:128b/16B) */
8679894aa69aSMichael Chan struct hwrm_fw_get_structured_data_output {
8680894aa69aSMichael Chan 	__le16	error_code;
8681894aa69aSMichael Chan 	__le16	req_type;
8682894aa69aSMichael Chan 	__le16	seq_id;
8683894aa69aSMichael Chan 	__le16	resp_len;
8684894aa69aSMichael Chan 	u8	hdr_cnt;
8685894aa69aSMichael Chan 	u8	unused_0[6];
8686894aa69aSMichael Chan 	u8	valid;
8687894aa69aSMichael Chan };
8688894aa69aSMichael Chan 
8689894aa69aSMichael Chan /* hwrm_fw_get_structured_data_cmd_err (size:64b/8B) */
8690894aa69aSMichael Chan struct hwrm_fw_get_structured_data_cmd_err {
8691894aa69aSMichael Chan 	u8	code;
8692894aa69aSMichael Chan 	#define FW_GET_STRUCTURED_DATA_CMD_ERR_CODE_UNKNOWN 0x0UL
8693894aa69aSMichael Chan 	#define FW_GET_STRUCTURED_DATA_CMD_ERR_CODE_BAD_ID  0x3UL
8694894aa69aSMichael Chan 	#define FW_GET_STRUCTURED_DATA_CMD_ERR_CODE_LAST   FW_GET_STRUCTURED_DATA_CMD_ERR_CODE_BAD_ID
8695894aa69aSMichael Chan 	u8	unused_0[7];
8696894aa69aSMichael Chan };
8697894aa69aSMichael Chan 
869821e70778SMichael Chan /* hwrm_fw_livepatch_query_input (size:192b/24B) */
869921e70778SMichael Chan struct hwrm_fw_livepatch_query_input {
870021e70778SMichael Chan 	__le16	req_type;
870121e70778SMichael Chan 	__le16	cmpl_ring;
870221e70778SMichael Chan 	__le16	seq_id;
870321e70778SMichael Chan 	__le16	target_id;
870421e70778SMichael Chan 	__le64	resp_addr;
870521e70778SMichael Chan 	u8	fw_target;
870621e70778SMichael Chan 	#define FW_LIVEPATCH_QUERY_REQ_FW_TARGET_COMMON_FW 0x1UL
870721e70778SMichael Chan 	#define FW_LIVEPATCH_QUERY_REQ_FW_TARGET_SECURE_FW 0x2UL
870821e70778SMichael Chan 	#define FW_LIVEPATCH_QUERY_REQ_FW_TARGET_LAST     FW_LIVEPATCH_QUERY_REQ_FW_TARGET_SECURE_FW
870921e70778SMichael Chan 	u8	unused_0[7];
871021e70778SMichael Chan };
871121e70778SMichael Chan 
871221e70778SMichael Chan /* hwrm_fw_livepatch_query_output (size:640b/80B) */
871321e70778SMichael Chan struct hwrm_fw_livepatch_query_output {
871421e70778SMichael Chan 	__le16	error_code;
871521e70778SMichael Chan 	__le16	req_type;
871621e70778SMichael Chan 	__le16	seq_id;
871721e70778SMichael Chan 	__le16	resp_len;
871821e70778SMichael Chan 	char	install_ver[32];
871921e70778SMichael Chan 	char	active_ver[32];
872021e70778SMichael Chan 	__le16	status_flags;
872121e70778SMichael Chan 	#define FW_LIVEPATCH_QUERY_RESP_STATUS_FLAGS_INSTALL     0x1UL
872221e70778SMichael Chan 	#define FW_LIVEPATCH_QUERY_RESP_STATUS_FLAGS_ACTIVE      0x2UL
872321e70778SMichael Chan 	u8	unused_0[5];
872421e70778SMichael Chan 	u8	valid;
872521e70778SMichael Chan };
872621e70778SMichael Chan 
872721e70778SMichael Chan /* hwrm_fw_livepatch_input (size:256b/32B) */
872821e70778SMichael Chan struct hwrm_fw_livepatch_input {
872921e70778SMichael Chan 	__le16	req_type;
873021e70778SMichael Chan 	__le16	cmpl_ring;
873121e70778SMichael Chan 	__le16	seq_id;
873221e70778SMichael Chan 	__le16	target_id;
873321e70778SMichael Chan 	__le64	resp_addr;
873421e70778SMichael Chan 	u8	opcode;
873521e70778SMichael Chan 	#define FW_LIVEPATCH_REQ_OPCODE_ACTIVATE   0x1UL
873621e70778SMichael Chan 	#define FW_LIVEPATCH_REQ_OPCODE_DEACTIVATE 0x2UL
873721e70778SMichael Chan 	#define FW_LIVEPATCH_REQ_OPCODE_LAST      FW_LIVEPATCH_REQ_OPCODE_DEACTIVATE
873821e70778SMichael Chan 	u8	fw_target;
873921e70778SMichael Chan 	#define FW_LIVEPATCH_REQ_FW_TARGET_COMMON_FW 0x1UL
874021e70778SMichael Chan 	#define FW_LIVEPATCH_REQ_FW_TARGET_SECURE_FW 0x2UL
874121e70778SMichael Chan 	#define FW_LIVEPATCH_REQ_FW_TARGET_LAST     FW_LIVEPATCH_REQ_FW_TARGET_SECURE_FW
874221e70778SMichael Chan 	u8	loadtype;
874321e70778SMichael Chan 	#define FW_LIVEPATCH_REQ_LOADTYPE_NVM_INSTALL   0x1UL
874421e70778SMichael Chan 	#define FW_LIVEPATCH_REQ_LOADTYPE_MEMORY_DIRECT 0x2UL
874521e70778SMichael Chan 	#define FW_LIVEPATCH_REQ_LOADTYPE_LAST         FW_LIVEPATCH_REQ_LOADTYPE_MEMORY_DIRECT
874621e70778SMichael Chan 	u8	flags;
874721e70778SMichael Chan 	__le32	patch_len;
874821e70778SMichael Chan 	__le64	host_addr;
874921e70778SMichael Chan };
875021e70778SMichael Chan 
875121e70778SMichael Chan /* hwrm_fw_livepatch_output (size:128b/16B) */
875221e70778SMichael Chan struct hwrm_fw_livepatch_output {
875321e70778SMichael Chan 	__le16	error_code;
875421e70778SMichael Chan 	__le16	req_type;
875521e70778SMichael Chan 	__le16	seq_id;
875621e70778SMichael Chan 	__le16	resp_len;
875721e70778SMichael Chan 	u8	unused_0[7];
875821e70778SMichael Chan 	u8	valid;
875921e70778SMichael Chan };
876021e70778SMichael Chan 
876121e70778SMichael Chan /* hwrm_fw_livepatch_cmd_err (size:64b/8B) */
876221e70778SMichael Chan struct hwrm_fw_livepatch_cmd_err {
876321e70778SMichael Chan 	u8	code;
876421e70778SMichael Chan 	#define FW_LIVEPATCH_CMD_ERR_CODE_UNKNOWN         0x0UL
876521e70778SMichael Chan 	#define FW_LIVEPATCH_CMD_ERR_CODE_INVALID_OPCODE  0x1UL
876621e70778SMichael Chan 	#define FW_LIVEPATCH_CMD_ERR_CODE_INVALID_TARGET  0x2UL
876721e70778SMichael Chan 	#define FW_LIVEPATCH_CMD_ERR_CODE_NOT_SUPPORTED   0x3UL
876821e70778SMichael Chan 	#define FW_LIVEPATCH_CMD_ERR_CODE_NOT_INSTALLED   0x4UL
876921e70778SMichael Chan 	#define FW_LIVEPATCH_CMD_ERR_CODE_NOT_PATCHED     0x5UL
877021e70778SMichael Chan 	#define FW_LIVEPATCH_CMD_ERR_CODE_AUTH_FAIL       0x6UL
877121e70778SMichael Chan 	#define FW_LIVEPATCH_CMD_ERR_CODE_INVALID_HEADER  0x7UL
877221e70778SMichael Chan 	#define FW_LIVEPATCH_CMD_ERR_CODE_INVALID_SIZE    0x8UL
877321e70778SMichael Chan 	#define FW_LIVEPATCH_CMD_ERR_CODE_ALREADY_PATCHED 0x9UL
877421e70778SMichael Chan 	#define FW_LIVEPATCH_CMD_ERR_CODE_LAST           FW_LIVEPATCH_CMD_ERR_CODE_ALREADY_PATCHED
877521e70778SMichael Chan 	u8	unused_0[7];
877621e70778SMichael Chan };
877721e70778SMichael Chan 
8778894aa69aSMichael Chan /* hwrm_exec_fwd_resp_input (size:1024b/128B) */
8779894aa69aSMichael Chan struct hwrm_exec_fwd_resp_input {
8780894aa69aSMichael Chan 	__le16	req_type;
8781894aa69aSMichael Chan 	__le16	cmpl_ring;
8782894aa69aSMichael Chan 	__le16	seq_id;
8783894aa69aSMichael Chan 	__le16	target_id;
8784894aa69aSMichael Chan 	__le64	resp_addr;
8785894aa69aSMichael Chan 	__le32	encap_request[26];
8786894aa69aSMichael Chan 	__le16	encap_resp_target_id;
8787894aa69aSMichael Chan 	u8	unused_0[6];
8788894aa69aSMichael Chan };
8789894aa69aSMichael Chan 
8790894aa69aSMichael Chan /* hwrm_exec_fwd_resp_output (size:128b/16B) */
8791894aa69aSMichael Chan struct hwrm_exec_fwd_resp_output {
8792894aa69aSMichael Chan 	__le16	error_code;
8793894aa69aSMichael Chan 	__le16	req_type;
8794894aa69aSMichael Chan 	__le16	seq_id;
8795894aa69aSMichael Chan 	__le16	resp_len;
8796894aa69aSMichael Chan 	u8	unused_0[7];
8797894aa69aSMichael Chan 	u8	valid;
8798894aa69aSMichael Chan };
8799894aa69aSMichael Chan 
8800894aa69aSMichael Chan /* hwrm_reject_fwd_resp_input (size:1024b/128B) */
8801894aa69aSMichael Chan struct hwrm_reject_fwd_resp_input {
8802894aa69aSMichael Chan 	__le16	req_type;
8803894aa69aSMichael Chan 	__le16	cmpl_ring;
8804894aa69aSMichael Chan 	__le16	seq_id;
8805894aa69aSMichael Chan 	__le16	target_id;
8806894aa69aSMichael Chan 	__le64	resp_addr;
8807894aa69aSMichael Chan 	__le32	encap_request[26];
8808894aa69aSMichael Chan 	__le16	encap_resp_target_id;
8809894aa69aSMichael Chan 	u8	unused_0[6];
8810894aa69aSMichael Chan };
8811894aa69aSMichael Chan 
8812894aa69aSMichael Chan /* hwrm_reject_fwd_resp_output (size:128b/16B) */
8813894aa69aSMichael Chan struct hwrm_reject_fwd_resp_output {
8814894aa69aSMichael Chan 	__le16	error_code;
8815894aa69aSMichael Chan 	__le16	req_type;
8816894aa69aSMichael Chan 	__le16	seq_id;
8817894aa69aSMichael Chan 	__le16	resp_len;
8818894aa69aSMichael Chan 	u8	unused_0[7];
8819894aa69aSMichael Chan 	u8	valid;
8820894aa69aSMichael Chan };
8821894aa69aSMichael Chan 
8822894aa69aSMichael Chan /* hwrm_fwd_resp_input (size:1024b/128B) */
8823894aa69aSMichael Chan struct hwrm_fwd_resp_input {
8824894aa69aSMichael Chan 	__le16	req_type;
8825894aa69aSMichael Chan 	__le16	cmpl_ring;
8826894aa69aSMichael Chan 	__le16	seq_id;
8827894aa69aSMichael Chan 	__le16	target_id;
8828894aa69aSMichael Chan 	__le64	resp_addr;
8829894aa69aSMichael Chan 	__le16	encap_resp_target_id;
8830894aa69aSMichael Chan 	__le16	encap_resp_cmpl_ring;
8831894aa69aSMichael Chan 	__le16	encap_resp_len;
8832894aa69aSMichael Chan 	u8	unused_0;
8833894aa69aSMichael Chan 	u8	unused_1;
8834894aa69aSMichael Chan 	__le64	encap_resp_addr;
8835894aa69aSMichael Chan 	__le32	encap_resp[24];
8836894aa69aSMichael Chan };
8837894aa69aSMichael Chan 
8838894aa69aSMichael Chan /* hwrm_fwd_resp_output (size:128b/16B) */
8839894aa69aSMichael Chan struct hwrm_fwd_resp_output {
8840894aa69aSMichael Chan 	__le16	error_code;
8841894aa69aSMichael Chan 	__le16	req_type;
8842894aa69aSMichael Chan 	__le16	seq_id;
8843894aa69aSMichael Chan 	__le16	resp_len;
8844894aa69aSMichael Chan 	u8	unused_0[7];
8845894aa69aSMichael Chan 	u8	valid;
8846894aa69aSMichael Chan };
8847894aa69aSMichael Chan 
8848894aa69aSMichael Chan /* hwrm_fwd_async_event_cmpl_input (size:320b/40B) */
8849894aa69aSMichael Chan struct hwrm_fwd_async_event_cmpl_input {
8850894aa69aSMichael Chan 	__le16	req_type;
8851894aa69aSMichael Chan 	__le16	cmpl_ring;
8852894aa69aSMichael Chan 	__le16	seq_id;
8853894aa69aSMichael Chan 	__le16	target_id;
8854894aa69aSMichael Chan 	__le64	resp_addr;
8855894aa69aSMichael Chan 	__le16	encap_async_event_target_id;
8856894aa69aSMichael Chan 	u8	unused_0[6];
8857894aa69aSMichael Chan 	__le32	encap_async_event_cmpl[4];
8858894aa69aSMichael Chan };
8859894aa69aSMichael Chan 
8860894aa69aSMichael Chan /* hwrm_fwd_async_event_cmpl_output (size:128b/16B) */
8861894aa69aSMichael Chan struct hwrm_fwd_async_event_cmpl_output {
8862894aa69aSMichael Chan 	__le16	error_code;
8863894aa69aSMichael Chan 	__le16	req_type;
8864894aa69aSMichael Chan 	__le16	seq_id;
8865894aa69aSMichael Chan 	__le16	resp_len;
8866894aa69aSMichael Chan 	u8	unused_0[7];
8867894aa69aSMichael Chan 	u8	valid;
8868894aa69aSMichael Chan };
8869894aa69aSMichael Chan 
8870894aa69aSMichael Chan /* hwrm_temp_monitor_query_input (size:128b/16B) */
8871894aa69aSMichael Chan struct hwrm_temp_monitor_query_input {
8872894aa69aSMichael Chan 	__le16	req_type;
8873894aa69aSMichael Chan 	__le16	cmpl_ring;
8874894aa69aSMichael Chan 	__le16	seq_id;
8875894aa69aSMichael Chan 	__le16	target_id;
8876894aa69aSMichael Chan 	__le64	resp_addr;
8877894aa69aSMichael Chan };
8878894aa69aSMichael Chan 
8879894aa69aSMichael Chan /* hwrm_temp_monitor_query_output (size:128b/16B) */
8880894aa69aSMichael Chan struct hwrm_temp_monitor_query_output {
8881894aa69aSMichael Chan 	__le16	error_code;
8882894aa69aSMichael Chan 	__le16	req_type;
8883894aa69aSMichael Chan 	__le16	seq_id;
8884894aa69aSMichael Chan 	__le16	resp_len;
8885894aa69aSMichael Chan 	u8	temp;
888672e0c9f9SMichael Chan 	u8	phy_temp;
888772e0c9f9SMichael Chan 	u8	om_temp;
888872e0c9f9SMichael Chan 	u8	flags;
888972e0c9f9SMichael Chan 	#define TEMP_MONITOR_QUERY_RESP_FLAGS_TEMP_NOT_AVAILABLE            0x1UL
889072e0c9f9SMichael Chan 	#define TEMP_MONITOR_QUERY_RESP_FLAGS_PHY_TEMP_NOT_AVAILABLE        0x2UL
889172e0c9f9SMichael Chan 	#define TEMP_MONITOR_QUERY_RESP_FLAGS_OM_NOT_PRESENT                0x4UL
889272e0c9f9SMichael Chan 	#define TEMP_MONITOR_QUERY_RESP_FLAGS_OM_TEMP_NOT_AVAILABLE         0x8UL
889378eeadb8SMichael Chan 	#define TEMP_MONITOR_QUERY_RESP_FLAGS_EXT_TEMP_FIELDS_AVAILABLE     0x10UL
889478eeadb8SMichael Chan 	u8	temp2;
889578eeadb8SMichael Chan 	u8	phy_temp2;
889678eeadb8SMichael Chan 	u8	om_temp2;
8897894aa69aSMichael Chan 	u8	valid;
8898894aa69aSMichael Chan };
8899894aa69aSMichael Chan 
8900894aa69aSMichael Chan /* hwrm_wol_filter_alloc_input (size:512b/64B) */
8901894aa69aSMichael Chan struct hwrm_wol_filter_alloc_input {
8902894aa69aSMichael Chan 	__le16	req_type;
8903894aa69aSMichael Chan 	__le16	cmpl_ring;
8904894aa69aSMichael Chan 	__le16	seq_id;
8905894aa69aSMichael Chan 	__le16	target_id;
8906894aa69aSMichael Chan 	__le64	resp_addr;
8907894aa69aSMichael Chan 	__le32	flags;
8908894aa69aSMichael Chan 	__le32	enables;
8909894aa69aSMichael Chan 	#define WOL_FILTER_ALLOC_REQ_ENABLES_MAC_ADDRESS           0x1UL
8910894aa69aSMichael Chan 	#define WOL_FILTER_ALLOC_REQ_ENABLES_PATTERN_OFFSET        0x2UL
8911894aa69aSMichael Chan 	#define WOL_FILTER_ALLOC_REQ_ENABLES_PATTERN_BUF_SIZE      0x4UL
8912894aa69aSMichael Chan 	#define WOL_FILTER_ALLOC_REQ_ENABLES_PATTERN_BUF_ADDR      0x8UL
8913894aa69aSMichael Chan 	#define WOL_FILTER_ALLOC_REQ_ENABLES_PATTERN_MASK_ADDR     0x10UL
8914894aa69aSMichael Chan 	#define WOL_FILTER_ALLOC_REQ_ENABLES_PATTERN_MASK_SIZE     0x20UL
8915894aa69aSMichael Chan 	__le16	port_id;
8916894aa69aSMichael Chan 	u8	wol_type;
8917894aa69aSMichael Chan 	#define WOL_FILTER_ALLOC_REQ_WOL_TYPE_MAGICPKT 0x0UL
8918894aa69aSMichael Chan 	#define WOL_FILTER_ALLOC_REQ_WOL_TYPE_BMP      0x1UL
8919894aa69aSMichael Chan 	#define WOL_FILTER_ALLOC_REQ_WOL_TYPE_INVALID  0xffUL
8920894aa69aSMichael Chan 	#define WOL_FILTER_ALLOC_REQ_WOL_TYPE_LAST    WOL_FILTER_ALLOC_REQ_WOL_TYPE_INVALID
8921894aa69aSMichael Chan 	u8	unused_0[5];
8922894aa69aSMichael Chan 	u8	mac_address[6];
8923894aa69aSMichael Chan 	__le16	pattern_offset;
8924894aa69aSMichael Chan 	__le16	pattern_buf_size;
8925894aa69aSMichael Chan 	__le16	pattern_mask_size;
8926894aa69aSMichael Chan 	u8	unused_1[4];
8927894aa69aSMichael Chan 	__le64	pattern_buf_addr;
8928894aa69aSMichael Chan 	__le64	pattern_mask_addr;
8929894aa69aSMichael Chan };
8930894aa69aSMichael Chan 
8931894aa69aSMichael Chan /* hwrm_wol_filter_alloc_output (size:128b/16B) */
8932894aa69aSMichael Chan struct hwrm_wol_filter_alloc_output {
8933894aa69aSMichael Chan 	__le16	error_code;
8934894aa69aSMichael Chan 	__le16	req_type;
8935894aa69aSMichael Chan 	__le16	seq_id;
8936894aa69aSMichael Chan 	__le16	resp_len;
8937894aa69aSMichael Chan 	u8	wol_filter_id;
8938894aa69aSMichael Chan 	u8	unused_0[6];
8939894aa69aSMichael Chan 	u8	valid;
8940894aa69aSMichael Chan };
8941894aa69aSMichael Chan 
8942894aa69aSMichael Chan /* hwrm_wol_filter_free_input (size:256b/32B) */
8943894aa69aSMichael Chan struct hwrm_wol_filter_free_input {
8944894aa69aSMichael Chan 	__le16	req_type;
8945894aa69aSMichael Chan 	__le16	cmpl_ring;
8946894aa69aSMichael Chan 	__le16	seq_id;
8947894aa69aSMichael Chan 	__le16	target_id;
8948894aa69aSMichael Chan 	__le64	resp_addr;
8949894aa69aSMichael Chan 	__le32	flags;
8950894aa69aSMichael Chan 	#define WOL_FILTER_FREE_REQ_FLAGS_FREE_ALL_WOL_FILTERS     0x1UL
8951894aa69aSMichael Chan 	__le32	enables;
8952894aa69aSMichael Chan 	#define WOL_FILTER_FREE_REQ_ENABLES_WOL_FILTER_ID     0x1UL
8953894aa69aSMichael Chan 	__le16	port_id;
8954894aa69aSMichael Chan 	u8	wol_filter_id;
8955894aa69aSMichael Chan 	u8	unused_0[5];
8956894aa69aSMichael Chan };
8957894aa69aSMichael Chan 
8958894aa69aSMichael Chan /* hwrm_wol_filter_free_output (size:128b/16B) */
8959894aa69aSMichael Chan struct hwrm_wol_filter_free_output {
8960894aa69aSMichael Chan 	__le16	error_code;
8961894aa69aSMichael Chan 	__le16	req_type;
8962894aa69aSMichael Chan 	__le16	seq_id;
8963894aa69aSMichael Chan 	__le16	resp_len;
8964894aa69aSMichael Chan 	u8	unused_0[7];
8965894aa69aSMichael Chan 	u8	valid;
8966894aa69aSMichael Chan };
8967894aa69aSMichael Chan 
8968894aa69aSMichael Chan /* hwrm_wol_filter_qcfg_input (size:448b/56B) */
8969894aa69aSMichael Chan struct hwrm_wol_filter_qcfg_input {
8970894aa69aSMichael Chan 	__le16	req_type;
8971894aa69aSMichael Chan 	__le16	cmpl_ring;
8972894aa69aSMichael Chan 	__le16	seq_id;
8973894aa69aSMichael Chan 	__le16	target_id;
8974894aa69aSMichael Chan 	__le64	resp_addr;
8975894aa69aSMichael Chan 	__le16	port_id;
8976894aa69aSMichael Chan 	__le16	handle;
8977894aa69aSMichael Chan 	u8	unused_0[4];
8978894aa69aSMichael Chan 	__le64	pattern_buf_addr;
8979894aa69aSMichael Chan 	__le16	pattern_buf_size;
8980894aa69aSMichael Chan 	u8	unused_1[6];
8981894aa69aSMichael Chan 	__le64	pattern_mask_addr;
8982894aa69aSMichael Chan 	__le16	pattern_mask_size;
8983894aa69aSMichael Chan 	u8	unused_2[6];
8984894aa69aSMichael Chan };
8985894aa69aSMichael Chan 
8986894aa69aSMichael Chan /* hwrm_wol_filter_qcfg_output (size:256b/32B) */
8987894aa69aSMichael Chan struct hwrm_wol_filter_qcfg_output {
8988894aa69aSMichael Chan 	__le16	error_code;
8989894aa69aSMichael Chan 	__le16	req_type;
8990894aa69aSMichael Chan 	__le16	seq_id;
8991894aa69aSMichael Chan 	__le16	resp_len;
8992894aa69aSMichael Chan 	__le16	next_handle;
8993894aa69aSMichael Chan 	u8	wol_filter_id;
8994894aa69aSMichael Chan 	u8	wol_type;
8995894aa69aSMichael Chan 	#define WOL_FILTER_QCFG_RESP_WOL_TYPE_MAGICPKT 0x0UL
8996894aa69aSMichael Chan 	#define WOL_FILTER_QCFG_RESP_WOL_TYPE_BMP      0x1UL
8997894aa69aSMichael Chan 	#define WOL_FILTER_QCFG_RESP_WOL_TYPE_INVALID  0xffUL
8998894aa69aSMichael Chan 	#define WOL_FILTER_QCFG_RESP_WOL_TYPE_LAST    WOL_FILTER_QCFG_RESP_WOL_TYPE_INVALID
8999894aa69aSMichael Chan 	__le32	unused_0;
9000894aa69aSMichael Chan 	u8	mac_address[6];
9001894aa69aSMichael Chan 	__le16	pattern_offset;
9002894aa69aSMichael Chan 	__le16	pattern_size;
9003894aa69aSMichael Chan 	__le16	pattern_mask_size;
9004894aa69aSMichael Chan 	u8	unused_1[3];
9005894aa69aSMichael Chan 	u8	valid;
9006894aa69aSMichael Chan };
9007894aa69aSMichael Chan 
9008894aa69aSMichael Chan /* hwrm_wol_reason_qcfg_input (size:320b/40B) */
9009894aa69aSMichael Chan struct hwrm_wol_reason_qcfg_input {
9010894aa69aSMichael Chan 	__le16	req_type;
9011894aa69aSMichael Chan 	__le16	cmpl_ring;
9012894aa69aSMichael Chan 	__le16	seq_id;
9013894aa69aSMichael Chan 	__le16	target_id;
9014894aa69aSMichael Chan 	__le64	resp_addr;
9015894aa69aSMichael Chan 	__le16	port_id;
9016894aa69aSMichael Chan 	u8	unused_0[6];
9017894aa69aSMichael Chan 	__le64	wol_pkt_buf_addr;
9018894aa69aSMichael Chan 	__le16	wol_pkt_buf_size;
9019894aa69aSMichael Chan 	u8	unused_1[6];
9020894aa69aSMichael Chan };
9021894aa69aSMichael Chan 
9022894aa69aSMichael Chan /* hwrm_wol_reason_qcfg_output (size:128b/16B) */
9023894aa69aSMichael Chan struct hwrm_wol_reason_qcfg_output {
9024894aa69aSMichael Chan 	__le16	error_code;
9025894aa69aSMichael Chan 	__le16	req_type;
9026894aa69aSMichael Chan 	__le16	seq_id;
9027894aa69aSMichael Chan 	__le16	resp_len;
9028894aa69aSMichael Chan 	u8	wol_filter_id;
9029894aa69aSMichael Chan 	u8	wol_reason;
9030894aa69aSMichael Chan 	#define WOL_REASON_QCFG_RESP_WOL_REASON_MAGICPKT 0x0UL
9031894aa69aSMichael Chan 	#define WOL_REASON_QCFG_RESP_WOL_REASON_BMP      0x1UL
9032894aa69aSMichael Chan 	#define WOL_REASON_QCFG_RESP_WOL_REASON_INVALID  0xffUL
9033894aa69aSMichael Chan 	#define WOL_REASON_QCFG_RESP_WOL_REASON_LAST    WOL_REASON_QCFG_RESP_WOL_REASON_INVALID
9034894aa69aSMichael Chan 	u8	wol_pkt_len;
9035894aa69aSMichael Chan 	u8	unused_0[4];
9036894aa69aSMichael Chan 	u8	valid;
9037894aa69aSMichael Chan };
9038894aa69aSMichael Chan 
9039bfc6e5fbSMichael Chan /* hwrm_dbg_read_direct_input (size:256b/32B) */
9040bfc6e5fbSMichael Chan struct hwrm_dbg_read_direct_input {
9041bfc6e5fbSMichael Chan 	__le16	req_type;
9042bfc6e5fbSMichael Chan 	__le16	cmpl_ring;
9043bfc6e5fbSMichael Chan 	__le16	seq_id;
9044bfc6e5fbSMichael Chan 	__le16	target_id;
9045bfc6e5fbSMichael Chan 	__le64	resp_addr;
9046bfc6e5fbSMichael Chan 	__le64	host_dest_addr;
9047bfc6e5fbSMichael Chan 	__le32	read_addr;
9048bfc6e5fbSMichael Chan 	__le32	read_len32;
9049bfc6e5fbSMichael Chan };
9050bfc6e5fbSMichael Chan 
9051bfc6e5fbSMichael Chan /* hwrm_dbg_read_direct_output (size:128b/16B) */
9052bfc6e5fbSMichael Chan struct hwrm_dbg_read_direct_output {
9053bfc6e5fbSMichael Chan 	__le16	error_code;
9054bfc6e5fbSMichael Chan 	__le16	req_type;
9055bfc6e5fbSMichael Chan 	__le16	seq_id;
9056bfc6e5fbSMichael Chan 	__le16	resp_len;
9057bfc6e5fbSMichael Chan 	__le32	crc32;
9058bfc6e5fbSMichael Chan 	u8	unused_0[3];
9059bfc6e5fbSMichael Chan 	u8	valid;
9060bfc6e5fbSMichael Chan };
9061bfc6e5fbSMichael Chan 
90629d6b648cSMichael Chan /* hwrm_dbg_qcaps_input (size:192b/24B) */
90639d6b648cSMichael Chan struct hwrm_dbg_qcaps_input {
90649d6b648cSMichael Chan 	__le16	req_type;
90659d6b648cSMichael Chan 	__le16	cmpl_ring;
90669d6b648cSMichael Chan 	__le16	seq_id;
90679d6b648cSMichael Chan 	__le16	target_id;
90689d6b648cSMichael Chan 	__le64	resp_addr;
90699d6b648cSMichael Chan 	__le16	fid;
90709d6b648cSMichael Chan 	u8	unused_0[6];
90719d6b648cSMichael Chan };
90729d6b648cSMichael Chan 
90739d6b648cSMichael Chan /* hwrm_dbg_qcaps_output (size:192b/24B) */
90749d6b648cSMichael Chan struct hwrm_dbg_qcaps_output {
90759d6b648cSMichael Chan 	__le16	error_code;
90769d6b648cSMichael Chan 	__le16	req_type;
90779d6b648cSMichael Chan 	__le16	seq_id;
90789d6b648cSMichael Chan 	__le16	resp_len;
90799d6b648cSMichael Chan 	__le16	fid;
90809d6b648cSMichael Chan 	u8	unused_0[2];
90819d6b648cSMichael Chan 	__le32	coredump_component_disable_caps;
90829d6b648cSMichael Chan 	#define DBG_QCAPS_RESP_COREDUMP_COMPONENT_DISABLE_CAPS_NVRAM     0x1UL
90839d6b648cSMichael Chan 	__le32	flags;
90849d6b648cSMichael Chan 	#define DBG_QCAPS_RESP_FLAGS_CRASHDUMP_NVM          0x1UL
90859d6b648cSMichael Chan 	#define DBG_QCAPS_RESP_FLAGS_CRASHDUMP_HOST_DDR     0x2UL
90869d6b648cSMichael Chan 	#define DBG_QCAPS_RESP_FLAGS_CRASHDUMP_SOC_DDR      0x4UL
908778eeadb8SMichael Chan 	#define DBG_QCAPS_RESP_FLAGS_USEQ                   0x8UL
90889d6b648cSMichael Chan 	u8	unused_1[3];
90899d6b648cSMichael Chan 	u8	valid;
90909d6b648cSMichael Chan };
90919d6b648cSMichael Chan 
90929d6b648cSMichael Chan /* hwrm_dbg_qcfg_input (size:192b/24B) */
90939d6b648cSMichael Chan struct hwrm_dbg_qcfg_input {
90949d6b648cSMichael Chan 	__le16	req_type;
90959d6b648cSMichael Chan 	__le16	cmpl_ring;
90969d6b648cSMichael Chan 	__le16	seq_id;
90979d6b648cSMichael Chan 	__le16	target_id;
90989d6b648cSMichael Chan 	__le64	resp_addr;
90999d6b648cSMichael Chan 	__le16	fid;
91009d6b648cSMichael Chan 	__le16	flags;
91019d6b648cSMichael Chan 	#define DBG_QCFG_REQ_FLAGS_CRASHDUMP_SIZE_FOR_DEST_MASK         0x3UL
91029d6b648cSMichael Chan 	#define DBG_QCFG_REQ_FLAGS_CRASHDUMP_SIZE_FOR_DEST_SFT          0
91039d6b648cSMichael Chan 	#define DBG_QCFG_REQ_FLAGS_CRASHDUMP_SIZE_FOR_DEST_DEST_NVM       0x0UL
91049d6b648cSMichael Chan 	#define DBG_QCFG_REQ_FLAGS_CRASHDUMP_SIZE_FOR_DEST_DEST_HOST_DDR  0x1UL
91059d6b648cSMichael Chan 	#define DBG_QCFG_REQ_FLAGS_CRASHDUMP_SIZE_FOR_DEST_DEST_SOC_DDR   0x2UL
91069d6b648cSMichael Chan 	#define DBG_QCFG_REQ_FLAGS_CRASHDUMP_SIZE_FOR_DEST_LAST          DBG_QCFG_REQ_FLAGS_CRASHDUMP_SIZE_FOR_DEST_DEST_SOC_DDR
91079d6b648cSMichael Chan 	__le32	coredump_component_disable_flags;
91089d6b648cSMichael Chan 	#define DBG_QCFG_REQ_COREDUMP_COMPONENT_DISABLE_FLAGS_NVRAM     0x1UL
91099d6b648cSMichael Chan };
91109d6b648cSMichael Chan 
91119d6b648cSMichael Chan /* hwrm_dbg_qcfg_output (size:256b/32B) */
91129d6b648cSMichael Chan struct hwrm_dbg_qcfg_output {
91139d6b648cSMichael Chan 	__le16	error_code;
91149d6b648cSMichael Chan 	__le16	req_type;
91159d6b648cSMichael Chan 	__le16	seq_id;
91169d6b648cSMichael Chan 	__le16	resp_len;
91179d6b648cSMichael Chan 	__le16	fid;
91189d6b648cSMichael Chan 	u8	unused_0[2];
91199d6b648cSMichael Chan 	__le32	coredump_size;
91209d6b648cSMichael Chan 	__le32	flags;
91219d6b648cSMichael Chan 	#define DBG_QCFG_RESP_FLAGS_UART_LOG               0x1UL
91229d6b648cSMichael Chan 	#define DBG_QCFG_RESP_FLAGS_UART_LOG_SECONDARY     0x2UL
91239d6b648cSMichael Chan 	#define DBG_QCFG_RESP_FLAGS_FW_TRACE               0x4UL
91249d6b648cSMichael Chan 	#define DBG_QCFG_RESP_FLAGS_FW_TRACE_SECONDARY     0x8UL
91259d6b648cSMichael Chan 	#define DBG_QCFG_RESP_FLAGS_DEBUG_NOTIFY           0x10UL
91269d6b648cSMichael Chan 	#define DBG_QCFG_RESP_FLAGS_JTAG_DEBUG             0x20UL
91279d6b648cSMichael Chan 	__le16	async_cmpl_ring;
91289d6b648cSMichael Chan 	u8	unused_2[2];
91299d6b648cSMichael Chan 	__le32	crashdump_size;
91309d6b648cSMichael Chan 	u8	unused_3[3];
91319d6b648cSMichael Chan 	u8	valid;
91329d6b648cSMichael Chan };
91339d6b648cSMichael Chan 
91342895c153SMichael Chan /* hwrm_dbg_crashdump_medium_cfg_input (size:320b/40B) */
91352895c153SMichael Chan struct hwrm_dbg_crashdump_medium_cfg_input {
91362895c153SMichael Chan 	__le16	req_type;
91372895c153SMichael Chan 	__le16	cmpl_ring;
91382895c153SMichael Chan 	__le16	seq_id;
91392895c153SMichael Chan 	__le16	target_id;
91402895c153SMichael Chan 	__le64	resp_addr;
91412895c153SMichael Chan 	__le16	output_dest_flags;
91422895c153SMichael Chan 	#define DBG_CRASHDUMP_MEDIUM_CFG_REQ_TYPE_DDR     0x1UL
91432895c153SMichael Chan 	__le16	pg_size_lvl;
91442895c153SMichael Chan 	#define DBG_CRASHDUMP_MEDIUM_CFG_REQ_LVL_MASK      0x3UL
91452895c153SMichael Chan 	#define DBG_CRASHDUMP_MEDIUM_CFG_REQ_LVL_SFT       0
91462895c153SMichael Chan 	#define DBG_CRASHDUMP_MEDIUM_CFG_REQ_LVL_LVL_0       0x0UL
91472895c153SMichael Chan 	#define DBG_CRASHDUMP_MEDIUM_CFG_REQ_LVL_LVL_1       0x1UL
91482895c153SMichael Chan 	#define DBG_CRASHDUMP_MEDIUM_CFG_REQ_LVL_LVL_2       0x2UL
91492895c153SMichael Chan 	#define DBG_CRASHDUMP_MEDIUM_CFG_REQ_LVL_LAST       DBG_CRASHDUMP_MEDIUM_CFG_REQ_LVL_LVL_2
91502895c153SMichael Chan 	#define DBG_CRASHDUMP_MEDIUM_CFG_REQ_PG_SIZE_MASK  0x1cUL
91512895c153SMichael Chan 	#define DBG_CRASHDUMP_MEDIUM_CFG_REQ_PG_SIZE_SFT   2
91522895c153SMichael Chan 	#define DBG_CRASHDUMP_MEDIUM_CFG_REQ_PG_SIZE_PG_4K   (0x0UL << 2)
91532895c153SMichael Chan 	#define DBG_CRASHDUMP_MEDIUM_CFG_REQ_PG_SIZE_PG_8K   (0x1UL << 2)
91542895c153SMichael Chan 	#define DBG_CRASHDUMP_MEDIUM_CFG_REQ_PG_SIZE_PG_64K  (0x2UL << 2)
91552895c153SMichael Chan 	#define DBG_CRASHDUMP_MEDIUM_CFG_REQ_PG_SIZE_PG_2M   (0x3UL << 2)
91562895c153SMichael Chan 	#define DBG_CRASHDUMP_MEDIUM_CFG_REQ_PG_SIZE_PG_8M   (0x4UL << 2)
91572895c153SMichael Chan 	#define DBG_CRASHDUMP_MEDIUM_CFG_REQ_PG_SIZE_PG_1G   (0x5UL << 2)
91582895c153SMichael Chan 	#define DBG_CRASHDUMP_MEDIUM_CFG_REQ_PG_SIZE_LAST   DBG_CRASHDUMP_MEDIUM_CFG_REQ_PG_SIZE_PG_1G
91592895c153SMichael Chan 	#define DBG_CRASHDUMP_MEDIUM_CFG_REQ_UNUSED11_MASK 0xffe0UL
91602895c153SMichael Chan 	#define DBG_CRASHDUMP_MEDIUM_CFG_REQ_UNUSED11_SFT  5
91612895c153SMichael Chan 	__le32	size;
91622895c153SMichael Chan 	__le32	coredump_component_disable_flags;
91632895c153SMichael Chan 	#define DBG_CRASHDUMP_MEDIUM_CFG_REQ_NVRAM     0x1UL
91642895c153SMichael Chan 	__le32	unused_0;
91652895c153SMichael Chan 	__le64	pbl;
91662895c153SMichael Chan };
91672895c153SMichael Chan 
91682895c153SMichael Chan /* hwrm_dbg_crashdump_medium_cfg_output (size:128b/16B) */
91692895c153SMichael Chan struct hwrm_dbg_crashdump_medium_cfg_output {
91702895c153SMichael Chan 	__le16	error_code;
91712895c153SMichael Chan 	__le16	req_type;
91722895c153SMichael Chan 	__le16	seq_id;
91732895c153SMichael Chan 	__le16	resp_len;
91742895c153SMichael Chan 	u8	unused_1[7];
91752895c153SMichael Chan 	u8	valid;
91762895c153SMichael Chan };
91772895c153SMichael Chan 
91786fc92c33SMichael Chan /* coredump_segment_record (size:128b/16B) */
91796fc92c33SMichael Chan struct coredump_segment_record {
91806fc92c33SMichael Chan 	__le16	component_id;
91816fc92c33SMichael Chan 	__le16	segment_id;
91826fc92c33SMichael Chan 	__le16	max_instances;
91836fc92c33SMichael Chan 	u8	version_hi;
91846fc92c33SMichael Chan 	u8	version_low;
91856fc92c33SMichael Chan 	u8	seg_flags;
91862792b5b9SMichael Chan 	u8	compress_flags;
91872792b5b9SMichael Chan 	#define SFLAG_COMPRESSED_ZLIB     0x1UL
9188bfc6e5fbSMichael Chan 	u8	unused_0[2];
9189bfc6e5fbSMichael Chan 	__le32	segment_len;
91906fc92c33SMichael Chan };
91916fc92c33SMichael Chan 
91926fc92c33SMichael Chan /* hwrm_dbg_coredump_list_input (size:256b/32B) */
91936fc92c33SMichael Chan struct hwrm_dbg_coredump_list_input {
91946fc92c33SMichael Chan 	__le16	req_type;
91956fc92c33SMichael Chan 	__le16	cmpl_ring;
91966fc92c33SMichael Chan 	__le16	seq_id;
91976fc92c33SMichael Chan 	__le16	target_id;
91986fc92c33SMichael Chan 	__le64	resp_addr;
91996fc92c33SMichael Chan 	__le64	host_dest_addr;
92006fc92c33SMichael Chan 	__le32	host_buf_len;
92016fc92c33SMichael Chan 	__le16	seq_no;
92024a50ddc2SMichael Chan 	u8	flags;
92034a50ddc2SMichael Chan 	#define DBG_COREDUMP_LIST_REQ_FLAGS_CRASHDUMP     0x1UL
92044a50ddc2SMichael Chan 	u8	unused_0[1];
92056fc92c33SMichael Chan };
92066fc92c33SMichael Chan 
92076fc92c33SMichael Chan /* hwrm_dbg_coredump_list_output (size:128b/16B) */
92086fc92c33SMichael Chan struct hwrm_dbg_coredump_list_output {
92096fc92c33SMichael Chan 	__le16	error_code;
92106fc92c33SMichael Chan 	__le16	req_type;
92116fc92c33SMichael Chan 	__le16	seq_id;
92126fc92c33SMichael Chan 	__le16	resp_len;
92136fc92c33SMichael Chan 	u8	flags;
92146fc92c33SMichael Chan 	#define DBG_COREDUMP_LIST_RESP_FLAGS_MORE     0x1UL
92156fc92c33SMichael Chan 	u8	unused_0;
92166fc92c33SMichael Chan 	__le16	total_segments;
92176fc92c33SMichael Chan 	__le16	data_len;
92186fc92c33SMichael Chan 	u8	unused_1;
92196fc92c33SMichael Chan 	u8	valid;
92206fc92c33SMichael Chan };
92216fc92c33SMichael Chan 
92226fc92c33SMichael Chan /* hwrm_dbg_coredump_initiate_input (size:256b/32B) */
92236fc92c33SMichael Chan struct hwrm_dbg_coredump_initiate_input {
92246fc92c33SMichael Chan 	__le16	req_type;
92256fc92c33SMichael Chan 	__le16	cmpl_ring;
92266fc92c33SMichael Chan 	__le16	seq_id;
92276fc92c33SMichael Chan 	__le16	target_id;
92286fc92c33SMichael Chan 	__le64	resp_addr;
92296fc92c33SMichael Chan 	__le16	component_id;
92306fc92c33SMichael Chan 	__le16	segment_id;
92316fc92c33SMichael Chan 	__le16	instance;
92326fc92c33SMichael Chan 	__le16	unused_0;
92336fc92c33SMichael Chan 	u8	seg_flags;
92346fc92c33SMichael Chan 	u8	unused_1[7];
92356fc92c33SMichael Chan };
92366fc92c33SMichael Chan 
92376fc92c33SMichael Chan /* hwrm_dbg_coredump_initiate_output (size:128b/16B) */
92386fc92c33SMichael Chan struct hwrm_dbg_coredump_initiate_output {
92396fc92c33SMichael Chan 	__le16	error_code;
92406fc92c33SMichael Chan 	__le16	req_type;
92416fc92c33SMichael Chan 	__le16	seq_id;
92426fc92c33SMichael Chan 	__le16	resp_len;
92436fc92c33SMichael Chan 	u8	unused_0[7];
92446fc92c33SMichael Chan 	u8	valid;
92456fc92c33SMichael Chan };
92466fc92c33SMichael Chan 
92476fc92c33SMichael Chan /* coredump_data_hdr (size:128b/16B) */
92486fc92c33SMichael Chan struct coredump_data_hdr {
92496fc92c33SMichael Chan 	__le32	address;
92506fc92c33SMichael Chan 	__le32	flags_length;
925116db6323SMichael Chan 	#define COREDUMP_DATA_HDR_FLAGS_LENGTH_ACTUAL_LEN_MASK     0xffffffUL
925216db6323SMichael Chan 	#define COREDUMP_DATA_HDR_FLAGS_LENGTH_ACTUAL_LEN_SFT      0
925316db6323SMichael Chan 	#define COREDUMP_DATA_HDR_FLAGS_LENGTH_INDIRECT_ACCESS     0x1000000UL
92546fc92c33SMichael Chan 	__le32	instance;
92556fc92c33SMichael Chan 	__le32	next_offset;
92566fc92c33SMichael Chan };
92576fc92c33SMichael Chan 
92586fc92c33SMichael Chan /* hwrm_dbg_coredump_retrieve_input (size:448b/56B) */
92596fc92c33SMichael Chan struct hwrm_dbg_coredump_retrieve_input {
92606fc92c33SMichael Chan 	__le16	req_type;
92616fc92c33SMichael Chan 	__le16	cmpl_ring;
92626fc92c33SMichael Chan 	__le16	seq_id;
92636fc92c33SMichael Chan 	__le16	target_id;
92646fc92c33SMichael Chan 	__le64	resp_addr;
92656fc92c33SMichael Chan 	__le64	host_dest_addr;
92666fc92c33SMichael Chan 	__le32	host_buf_len;
92676fc92c33SMichael Chan 	__le32	unused_0;
92686fc92c33SMichael Chan 	__le16	component_id;
92696fc92c33SMichael Chan 	__le16	segment_id;
92706fc92c33SMichael Chan 	__le16	instance;
92716fc92c33SMichael Chan 	__le16	unused_1;
92726fc92c33SMichael Chan 	u8	seg_flags;
92736fc92c33SMichael Chan 	u8	unused_2;
92746fc92c33SMichael Chan 	__le16	unused_3;
92756fc92c33SMichael Chan 	__le32	unused_4;
92766fc92c33SMichael Chan 	__le32	seq_no;
92776fc92c33SMichael Chan 	__le32	unused_5;
92786fc92c33SMichael Chan };
92796fc92c33SMichael Chan 
92806fc92c33SMichael Chan /* hwrm_dbg_coredump_retrieve_output (size:128b/16B) */
92816fc92c33SMichael Chan struct hwrm_dbg_coredump_retrieve_output {
92826fc92c33SMichael Chan 	__le16	error_code;
92836fc92c33SMichael Chan 	__le16	req_type;
92846fc92c33SMichael Chan 	__le16	seq_id;
92856fc92c33SMichael Chan 	__le16	resp_len;
92866fc92c33SMichael Chan 	u8	flags;
92876fc92c33SMichael Chan 	#define DBG_COREDUMP_RETRIEVE_RESP_FLAGS_MORE     0x1UL
92886fc92c33SMichael Chan 	u8	unused_0;
92896fc92c33SMichael Chan 	__le16	data_len;
92906fc92c33SMichael Chan 	u8	unused_1[3];
92916fc92c33SMichael Chan 	u8	valid;
92926fc92c33SMichael Chan };
92936fc92c33SMichael Chan 
929431d357c0SMichael Chan /* hwrm_dbg_ring_info_get_input (size:192b/24B) */
929531d357c0SMichael Chan struct hwrm_dbg_ring_info_get_input {
929631d357c0SMichael Chan 	__le16	req_type;
929731d357c0SMichael Chan 	__le16	cmpl_ring;
929831d357c0SMichael Chan 	__le16	seq_id;
929931d357c0SMichael Chan 	__le16	target_id;
930031d357c0SMichael Chan 	__le64	resp_addr;
930131d357c0SMichael Chan 	u8	ring_type;
930231d357c0SMichael Chan 	#define DBG_RING_INFO_GET_REQ_RING_TYPE_L2_CMPL 0x0UL
930331d357c0SMichael Chan 	#define DBG_RING_INFO_GET_REQ_RING_TYPE_TX      0x1UL
930431d357c0SMichael Chan 	#define DBG_RING_INFO_GET_REQ_RING_TYPE_RX      0x2UL
9305bfc6e5fbSMichael Chan 	#define DBG_RING_INFO_GET_REQ_RING_TYPE_NQ      0x3UL
9306bfc6e5fbSMichael Chan 	#define DBG_RING_INFO_GET_REQ_RING_TYPE_LAST   DBG_RING_INFO_GET_REQ_RING_TYPE_NQ
930731d357c0SMichael Chan 	u8	unused_0[3];
930831d357c0SMichael Chan 	__le32	fw_ring_id;
930931d357c0SMichael Chan };
931031d357c0SMichael Chan 
931131d357c0SMichael Chan /* hwrm_dbg_ring_info_get_output (size:192b/24B) */
931231d357c0SMichael Chan struct hwrm_dbg_ring_info_get_output {
931331d357c0SMichael Chan 	__le16	error_code;
931431d357c0SMichael Chan 	__le16	req_type;
931531d357c0SMichael Chan 	__le16	seq_id;
931631d357c0SMichael Chan 	__le16	resp_len;
931731d357c0SMichael Chan 	__le32	producer_index;
931831d357c0SMichael Chan 	__le32	consumer_index;
9319bfc6e5fbSMichael Chan 	__le32	cag_vector_ctrl;
9320bfc6e5fbSMichael Chan 	u8	unused_0[3];
932131d357c0SMichael Chan 	u8	valid;
932231d357c0SMichael Chan };
932331d357c0SMichael Chan 
9324894aa69aSMichael Chan /* hwrm_nvm_read_input (size:320b/40B) */
9325894aa69aSMichael Chan struct hwrm_nvm_read_input {
9326894aa69aSMichael Chan 	__le16	req_type;
9327894aa69aSMichael Chan 	__le16	cmpl_ring;
9328894aa69aSMichael Chan 	__le16	seq_id;
9329894aa69aSMichael Chan 	__le16	target_id;
9330894aa69aSMichael Chan 	__le64	resp_addr;
9331894aa69aSMichael Chan 	__le64	host_dest_addr;
9332894aa69aSMichael Chan 	__le16	dir_idx;
9333894aa69aSMichael Chan 	u8	unused_0[2];
9334894aa69aSMichael Chan 	__le32	offset;
9335894aa69aSMichael Chan 	__le32	len;
9336894aa69aSMichael Chan 	u8	unused_1[4];
9337894aa69aSMichael Chan };
9338894aa69aSMichael Chan 
9339894aa69aSMichael Chan /* hwrm_nvm_read_output (size:128b/16B) */
9340894aa69aSMichael Chan struct hwrm_nvm_read_output {
9341894aa69aSMichael Chan 	__le16	error_code;
9342894aa69aSMichael Chan 	__le16	req_type;
9343894aa69aSMichael Chan 	__le16	seq_id;
9344894aa69aSMichael Chan 	__le16	resp_len;
9345894aa69aSMichael Chan 	u8	unused_0[7];
9346894aa69aSMichael Chan 	u8	valid;
9347894aa69aSMichael Chan };
9348894aa69aSMichael Chan 
9349894aa69aSMichael Chan /* hwrm_nvm_get_dir_entries_input (size:192b/24B) */
9350894aa69aSMichael Chan struct hwrm_nvm_get_dir_entries_input {
9351894aa69aSMichael Chan 	__le16	req_type;
9352894aa69aSMichael Chan 	__le16	cmpl_ring;
9353894aa69aSMichael Chan 	__le16	seq_id;
9354894aa69aSMichael Chan 	__le16	target_id;
9355894aa69aSMichael Chan 	__le64	resp_addr;
9356894aa69aSMichael Chan 	__le64	host_dest_addr;
9357894aa69aSMichael Chan };
9358894aa69aSMichael Chan 
9359894aa69aSMichael Chan /* hwrm_nvm_get_dir_entries_output (size:128b/16B) */
9360894aa69aSMichael Chan struct hwrm_nvm_get_dir_entries_output {
9361894aa69aSMichael Chan 	__le16	error_code;
9362894aa69aSMichael Chan 	__le16	req_type;
9363894aa69aSMichael Chan 	__le16	seq_id;
9364894aa69aSMichael Chan 	__le16	resp_len;
9365894aa69aSMichael Chan 	u8	unused_0[7];
9366894aa69aSMichael Chan 	u8	valid;
9367894aa69aSMichael Chan };
9368894aa69aSMichael Chan 
9369894aa69aSMichael Chan /* hwrm_nvm_get_dir_info_input (size:128b/16B) */
9370894aa69aSMichael Chan struct hwrm_nvm_get_dir_info_input {
9371894aa69aSMichael Chan 	__le16	req_type;
9372894aa69aSMichael Chan 	__le16	cmpl_ring;
9373894aa69aSMichael Chan 	__le16	seq_id;
9374894aa69aSMichael Chan 	__le16	target_id;
9375894aa69aSMichael Chan 	__le64	resp_addr;
9376894aa69aSMichael Chan };
9377894aa69aSMichael Chan 
9378894aa69aSMichael Chan /* hwrm_nvm_get_dir_info_output (size:192b/24B) */
9379894aa69aSMichael Chan struct hwrm_nvm_get_dir_info_output {
9380894aa69aSMichael Chan 	__le16	error_code;
9381894aa69aSMichael Chan 	__le16	req_type;
9382894aa69aSMichael Chan 	__le16	seq_id;
9383894aa69aSMichael Chan 	__le16	resp_len;
9384894aa69aSMichael Chan 	__le32	entries;
9385894aa69aSMichael Chan 	__le32	entry_length;
9386894aa69aSMichael Chan 	u8	unused_0[7];
9387894aa69aSMichael Chan 	u8	valid;
9388894aa69aSMichael Chan };
9389894aa69aSMichael Chan 
9390fbfee257SMichael Chan /* hwrm_nvm_write_input (size:448b/56B) */
9391894aa69aSMichael Chan struct hwrm_nvm_write_input {
9392894aa69aSMichael Chan 	__le16	req_type;
9393894aa69aSMichael Chan 	__le16	cmpl_ring;
9394894aa69aSMichael Chan 	__le16	seq_id;
9395894aa69aSMichael Chan 	__le16	target_id;
9396894aa69aSMichael Chan 	__le64	resp_addr;
9397894aa69aSMichael Chan 	__le64	host_src_addr;
9398894aa69aSMichael Chan 	__le16	dir_type;
9399894aa69aSMichael Chan 	__le16	dir_ordinal;
9400894aa69aSMichael Chan 	__le16	dir_ext;
9401894aa69aSMichael Chan 	__le16	dir_attr;
9402894aa69aSMichael Chan 	__le32	dir_data_length;
9403894aa69aSMichael Chan 	__le16	option;
9404894aa69aSMichael Chan 	__le16	flags;
9405894aa69aSMichael Chan 	#define NVM_WRITE_REQ_FLAGS_KEEP_ORIG_ACTIVE_IMG     0x1UL
9406fbfee257SMichael Chan 	#define NVM_WRITE_REQ_FLAGS_BATCH_MODE               0x2UL
9407fbfee257SMichael Chan 	#define NVM_WRITE_REQ_FLAGS_BATCH_LAST               0x4UL
9408894aa69aSMichael Chan 	__le32	dir_item_length;
9409fbfee257SMichael Chan 	__le32	offset;
9410fbfee257SMichael Chan 	__le32	len;
9411894aa69aSMichael Chan 	__le32	unused_0;
9412894aa69aSMichael Chan };
9413894aa69aSMichael Chan 
9414894aa69aSMichael Chan /* hwrm_nvm_write_output (size:128b/16B) */
9415894aa69aSMichael Chan struct hwrm_nvm_write_output {
9416894aa69aSMichael Chan 	__le16	error_code;
9417894aa69aSMichael Chan 	__le16	req_type;
9418894aa69aSMichael Chan 	__le16	seq_id;
9419894aa69aSMichael Chan 	__le16	resp_len;
9420894aa69aSMichael Chan 	__le32	dir_item_length;
9421894aa69aSMichael Chan 	__le16	dir_idx;
9422894aa69aSMichael Chan 	u8	unused_0;
9423894aa69aSMichael Chan 	u8	valid;
9424894aa69aSMichael Chan };
9425894aa69aSMichael Chan 
9426894aa69aSMichael Chan /* hwrm_nvm_write_cmd_err (size:64b/8B) */
9427894aa69aSMichael Chan struct hwrm_nvm_write_cmd_err {
9428894aa69aSMichael Chan 	u8	code;
9429894aa69aSMichael Chan 	#define NVM_WRITE_CMD_ERR_CODE_UNKNOWN  0x0UL
9430894aa69aSMichael Chan 	#define NVM_WRITE_CMD_ERR_CODE_FRAG_ERR 0x1UL
9431894aa69aSMichael Chan 	#define NVM_WRITE_CMD_ERR_CODE_NO_SPACE 0x2UL
9432894aa69aSMichael Chan 	#define NVM_WRITE_CMD_ERR_CODE_LAST    NVM_WRITE_CMD_ERR_CODE_NO_SPACE
9433894aa69aSMichael Chan 	u8	unused_0[7];
9434894aa69aSMichael Chan };
9435894aa69aSMichael Chan 
9436894aa69aSMichael Chan /* hwrm_nvm_modify_input (size:320b/40B) */
9437894aa69aSMichael Chan struct hwrm_nvm_modify_input {
9438894aa69aSMichael Chan 	__le16	req_type;
9439894aa69aSMichael Chan 	__le16	cmpl_ring;
9440894aa69aSMichael Chan 	__le16	seq_id;
9441894aa69aSMichael Chan 	__le16	target_id;
9442894aa69aSMichael Chan 	__le64	resp_addr;
9443894aa69aSMichael Chan 	__le64	host_src_addr;
9444894aa69aSMichael Chan 	__le16	dir_idx;
9445460c2577SMichael Chan 	__le16	flags;
9446460c2577SMichael Chan 	#define NVM_MODIFY_REQ_FLAGS_BATCH_MODE     0x1UL
9447460c2577SMichael Chan 	#define NVM_MODIFY_REQ_FLAGS_BATCH_LAST     0x2UL
9448894aa69aSMichael Chan 	__le32	offset;
9449894aa69aSMichael Chan 	__le32	len;
9450894aa69aSMichael Chan 	u8	unused_1[4];
9451894aa69aSMichael Chan };
9452894aa69aSMichael Chan 
9453894aa69aSMichael Chan /* hwrm_nvm_modify_output (size:128b/16B) */
9454894aa69aSMichael Chan struct hwrm_nvm_modify_output {
9455894aa69aSMichael Chan 	__le16	error_code;
9456894aa69aSMichael Chan 	__le16	req_type;
9457894aa69aSMichael Chan 	__le16	seq_id;
9458894aa69aSMichael Chan 	__le16	resp_len;
9459894aa69aSMichael Chan 	u8	unused_0[7];
9460894aa69aSMichael Chan 	u8	valid;
9461894aa69aSMichael Chan };
9462894aa69aSMichael Chan 
9463894aa69aSMichael Chan /* hwrm_nvm_find_dir_entry_input (size:256b/32B) */
9464894aa69aSMichael Chan struct hwrm_nvm_find_dir_entry_input {
9465894aa69aSMichael Chan 	__le16	req_type;
9466894aa69aSMichael Chan 	__le16	cmpl_ring;
9467894aa69aSMichael Chan 	__le16	seq_id;
9468894aa69aSMichael Chan 	__le16	target_id;
9469894aa69aSMichael Chan 	__le64	resp_addr;
9470894aa69aSMichael Chan 	__le32	enables;
9471894aa69aSMichael Chan 	#define NVM_FIND_DIR_ENTRY_REQ_ENABLES_DIR_IDX_VALID     0x1UL
9472894aa69aSMichael Chan 	__le16	dir_idx;
9473894aa69aSMichael Chan 	__le16	dir_type;
9474894aa69aSMichael Chan 	__le16	dir_ordinal;
9475894aa69aSMichael Chan 	__le16	dir_ext;
9476894aa69aSMichael Chan 	u8	opt_ordinal;
9477894aa69aSMichael Chan 	#define NVM_FIND_DIR_ENTRY_REQ_OPT_ORDINAL_MASK 0x3UL
9478894aa69aSMichael Chan 	#define NVM_FIND_DIR_ENTRY_REQ_OPT_ORDINAL_SFT 0
9479894aa69aSMichael Chan 	#define NVM_FIND_DIR_ENTRY_REQ_OPT_ORDINAL_EQ    0x0UL
9480894aa69aSMichael Chan 	#define NVM_FIND_DIR_ENTRY_REQ_OPT_ORDINAL_GE    0x1UL
9481894aa69aSMichael Chan 	#define NVM_FIND_DIR_ENTRY_REQ_OPT_ORDINAL_GT    0x2UL
9482894aa69aSMichael Chan 	#define NVM_FIND_DIR_ENTRY_REQ_OPT_ORDINAL_LAST NVM_FIND_DIR_ENTRY_REQ_OPT_ORDINAL_GT
9483894aa69aSMichael Chan 	u8	unused_0[3];
9484894aa69aSMichael Chan };
9485894aa69aSMichael Chan 
9486894aa69aSMichael Chan /* hwrm_nvm_find_dir_entry_output (size:256b/32B) */
9487894aa69aSMichael Chan struct hwrm_nvm_find_dir_entry_output {
9488894aa69aSMichael Chan 	__le16	error_code;
9489894aa69aSMichael Chan 	__le16	req_type;
9490894aa69aSMichael Chan 	__le16	seq_id;
9491894aa69aSMichael Chan 	__le16	resp_len;
9492894aa69aSMichael Chan 	__le32	dir_item_length;
9493894aa69aSMichael Chan 	__le32	dir_data_length;
9494894aa69aSMichael Chan 	__le32	fw_ver;
9495894aa69aSMichael Chan 	__le16	dir_ordinal;
9496894aa69aSMichael Chan 	__le16	dir_idx;
9497894aa69aSMichael Chan 	u8	unused_0[7];
9498894aa69aSMichael Chan 	u8	valid;
9499894aa69aSMichael Chan };
9500894aa69aSMichael Chan 
9501894aa69aSMichael Chan /* hwrm_nvm_erase_dir_entry_input (size:192b/24B) */
9502894aa69aSMichael Chan struct hwrm_nvm_erase_dir_entry_input {
9503894aa69aSMichael Chan 	__le16	req_type;
9504894aa69aSMichael Chan 	__le16	cmpl_ring;
9505894aa69aSMichael Chan 	__le16	seq_id;
9506894aa69aSMichael Chan 	__le16	target_id;
9507894aa69aSMichael Chan 	__le64	resp_addr;
9508894aa69aSMichael Chan 	__le16	dir_idx;
9509894aa69aSMichael Chan 	u8	unused_0[6];
9510894aa69aSMichael Chan };
9511894aa69aSMichael Chan 
9512894aa69aSMichael Chan /* hwrm_nvm_erase_dir_entry_output (size:128b/16B) */
9513894aa69aSMichael Chan struct hwrm_nvm_erase_dir_entry_output {
9514894aa69aSMichael Chan 	__le16	error_code;
9515894aa69aSMichael Chan 	__le16	req_type;
9516894aa69aSMichael Chan 	__le16	seq_id;
9517894aa69aSMichael Chan 	__le16	resp_len;
9518894aa69aSMichael Chan 	u8	unused_0[7];
9519894aa69aSMichael Chan 	u8	valid;
9520894aa69aSMichael Chan };
9521894aa69aSMichael Chan 
9522894aa69aSMichael Chan /* hwrm_nvm_get_dev_info_input (size:128b/16B) */
9523894aa69aSMichael Chan struct hwrm_nvm_get_dev_info_input {
9524894aa69aSMichael Chan 	__le16	req_type;
9525894aa69aSMichael Chan 	__le16	cmpl_ring;
9526894aa69aSMichael Chan 	__le16	seq_id;
9527894aa69aSMichael Chan 	__le16	target_id;
9528894aa69aSMichael Chan 	__le64	resp_addr;
9529894aa69aSMichael Chan };
9530894aa69aSMichael Chan 
9531424174f1SVasundhara Volam /* hwrm_nvm_get_dev_info_output (size:640b/80B) */
9532894aa69aSMichael Chan struct hwrm_nvm_get_dev_info_output {
9533894aa69aSMichael Chan 	__le16	error_code;
9534894aa69aSMichael Chan 	__le16	req_type;
9535894aa69aSMichael Chan 	__le16	seq_id;
9536894aa69aSMichael Chan 	__le16	resp_len;
9537894aa69aSMichael Chan 	__le16	manufacturer_id;
9538894aa69aSMichael Chan 	__le16	device_id;
9539894aa69aSMichael Chan 	__le32	sector_size;
9540894aa69aSMichael Chan 	__le32	nvram_size;
9541894aa69aSMichael Chan 	__le32	reserved_size;
9542894aa69aSMichael Chan 	__le32	available_size;
95434a50ddc2SMichael Chan 	u8	nvm_cfg_ver_maj;
95444a50ddc2SMichael Chan 	u8	nvm_cfg_ver_min;
95454a50ddc2SMichael Chan 	u8	nvm_cfg_ver_upd;
9546424174f1SVasundhara Volam 	u8	flags;
9547424174f1SVasundhara Volam 	#define NVM_GET_DEV_INFO_RESP_FLAGS_FW_VER_VALID     0x1UL
9548424174f1SVasundhara Volam 	char	pkg_name[16];
9549424174f1SVasundhara Volam 	__le16	hwrm_fw_major;
9550424174f1SVasundhara Volam 	__le16	hwrm_fw_minor;
9551424174f1SVasundhara Volam 	__le16	hwrm_fw_build;
9552424174f1SVasundhara Volam 	__le16	hwrm_fw_patch;
9553424174f1SVasundhara Volam 	__le16	mgmt_fw_major;
9554424174f1SVasundhara Volam 	__le16	mgmt_fw_minor;
9555424174f1SVasundhara Volam 	__le16	mgmt_fw_build;
9556424174f1SVasundhara Volam 	__le16	mgmt_fw_patch;
9557424174f1SVasundhara Volam 	__le16	roce_fw_major;
9558424174f1SVasundhara Volam 	__le16	roce_fw_minor;
9559424174f1SVasundhara Volam 	__le16	roce_fw_build;
9560424174f1SVasundhara Volam 	__le16	roce_fw_patch;
9561424174f1SVasundhara Volam 	u8	unused_0[7];
9562894aa69aSMichael Chan 	u8	valid;
9563894aa69aSMichael Chan };
9564894aa69aSMichael Chan 
9565894aa69aSMichael Chan /* hwrm_nvm_mod_dir_entry_input (size:256b/32B) */
9566894aa69aSMichael Chan struct hwrm_nvm_mod_dir_entry_input {
9567894aa69aSMichael Chan 	__le16	req_type;
9568894aa69aSMichael Chan 	__le16	cmpl_ring;
9569894aa69aSMichael Chan 	__le16	seq_id;
9570894aa69aSMichael Chan 	__le16	target_id;
9571894aa69aSMichael Chan 	__le64	resp_addr;
9572894aa69aSMichael Chan 	__le32	enables;
9573894aa69aSMichael Chan 	#define NVM_MOD_DIR_ENTRY_REQ_ENABLES_CHECKSUM     0x1UL
9574894aa69aSMichael Chan 	__le16	dir_idx;
9575894aa69aSMichael Chan 	__le16	dir_ordinal;
9576894aa69aSMichael Chan 	__le16	dir_ext;
9577894aa69aSMichael Chan 	__le16	dir_attr;
9578894aa69aSMichael Chan 	__le32	checksum;
9579894aa69aSMichael Chan };
9580894aa69aSMichael Chan 
9581894aa69aSMichael Chan /* hwrm_nvm_mod_dir_entry_output (size:128b/16B) */
9582894aa69aSMichael Chan struct hwrm_nvm_mod_dir_entry_output {
9583894aa69aSMichael Chan 	__le16	error_code;
9584894aa69aSMichael Chan 	__le16	req_type;
9585894aa69aSMichael Chan 	__le16	seq_id;
9586894aa69aSMichael Chan 	__le16	resp_len;
9587894aa69aSMichael Chan 	u8	unused_0[7];
9588894aa69aSMichael Chan 	u8	valid;
9589894aa69aSMichael Chan };
9590894aa69aSMichael Chan 
9591894aa69aSMichael Chan /* hwrm_nvm_verify_update_input (size:192b/24B) */
9592894aa69aSMichael Chan struct hwrm_nvm_verify_update_input {
9593894aa69aSMichael Chan 	__le16	req_type;
9594894aa69aSMichael Chan 	__le16	cmpl_ring;
9595894aa69aSMichael Chan 	__le16	seq_id;
9596894aa69aSMichael Chan 	__le16	target_id;
9597894aa69aSMichael Chan 	__le64	resp_addr;
9598894aa69aSMichael Chan 	__le16	dir_type;
9599894aa69aSMichael Chan 	__le16	dir_ordinal;
9600894aa69aSMichael Chan 	__le16	dir_ext;
9601894aa69aSMichael Chan 	u8	unused_0[2];
9602894aa69aSMichael Chan };
9603894aa69aSMichael Chan 
9604894aa69aSMichael Chan /* hwrm_nvm_verify_update_output (size:128b/16B) */
9605894aa69aSMichael Chan struct hwrm_nvm_verify_update_output {
9606894aa69aSMichael Chan 	__le16	error_code;
9607894aa69aSMichael Chan 	__le16	req_type;
9608894aa69aSMichael Chan 	__le16	seq_id;
9609894aa69aSMichael Chan 	__le16	resp_len;
9610894aa69aSMichael Chan 	u8	unused_0[7];
9611894aa69aSMichael Chan 	u8	valid;
9612894aa69aSMichael Chan };
9613894aa69aSMichael Chan 
9614894aa69aSMichael Chan /* hwrm_nvm_install_update_input (size:192b/24B) */
9615894aa69aSMichael Chan struct hwrm_nvm_install_update_input {
9616894aa69aSMichael Chan 	__le16	req_type;
9617894aa69aSMichael Chan 	__le16	cmpl_ring;
9618894aa69aSMichael Chan 	__le16	seq_id;
9619894aa69aSMichael Chan 	__le16	target_id;
9620894aa69aSMichael Chan 	__le64	resp_addr;
9621894aa69aSMichael Chan 	__le32	install_type;
9622894aa69aSMichael Chan 	#define NVM_INSTALL_UPDATE_REQ_INSTALL_TYPE_NORMAL 0x0UL
9623894aa69aSMichael Chan 	#define NVM_INSTALL_UPDATE_REQ_INSTALL_TYPE_ALL    0xffffffffUL
9624894aa69aSMichael Chan 	#define NVM_INSTALL_UPDATE_REQ_INSTALL_TYPE_LAST  NVM_INSTALL_UPDATE_REQ_INSTALL_TYPE_ALL
9625894aa69aSMichael Chan 	__le16	flags;
9626894aa69aSMichael Chan 	#define NVM_INSTALL_UPDATE_REQ_FLAGS_ERASE_UNUSED_SPACE     0x1UL
9627894aa69aSMichael Chan 	#define NVM_INSTALL_UPDATE_REQ_FLAGS_REMOVE_UNUSED_PKG      0x2UL
9628894aa69aSMichael Chan 	#define NVM_INSTALL_UPDATE_REQ_FLAGS_ALLOWED_TO_DEFRAG      0x4UL
9629bfc6e5fbSMichael Chan 	#define NVM_INSTALL_UPDATE_REQ_FLAGS_VERIFY_ONLY            0x8UL
9630894aa69aSMichael Chan 	u8	unused_0[2];
9631894aa69aSMichael Chan };
9632894aa69aSMichael Chan 
9633894aa69aSMichael Chan /* hwrm_nvm_install_update_output (size:192b/24B) */
9634894aa69aSMichael Chan struct hwrm_nvm_install_update_output {
9635894aa69aSMichael Chan 	__le16	error_code;
9636894aa69aSMichael Chan 	__le16	req_type;
9637894aa69aSMichael Chan 	__le16	seq_id;
9638894aa69aSMichael Chan 	__le16	resp_len;
9639894aa69aSMichael Chan 	__le64	installed_items;
9640894aa69aSMichael Chan 	u8	result;
9641894aa69aSMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_SUCCESS                      0x0UL
96422895c153SMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_FAILURE                      0xffUL
96432895c153SMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_MALLOC_FAILURE               0xfdUL
96442895c153SMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_INVALID_INDEX_PARAMETER      0xfbUL
96452895c153SMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_INVALID_TYPE_PARAMETER       0xf3UL
96462895c153SMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_INVALID_PREREQUISITE         0xf2UL
96472895c153SMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_INVALID_FILE_HEADER          0xecUL
96482895c153SMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_INVALID_SIGNATURE            0xebUL
96492895c153SMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_INVALID_PROP_STREAM          0xeaUL
96502895c153SMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_INVALID_PROP_LENGTH          0xe9UL
96512895c153SMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_INVALID_MANIFEST             0xe8UL
96522895c153SMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_INVALID_TRAILER              0xe7UL
96532895c153SMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_INVALID_CHECKSUM             0xe6UL
96542895c153SMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_INVALID_ITEM_CHECKSUM        0xe5UL
96552895c153SMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_INVALID_DATA_LENGTH          0xe4UL
96562895c153SMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_INVALID_DIRECTIVE            0xe1UL
96572895c153SMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_UNSUPPORTED_CHIP_REV         0xceUL
96582895c153SMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_UNSUPPORTED_DEVICE_ID        0xcdUL
96592895c153SMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_UNSUPPORTED_SUBSYS_VENDOR    0xccUL
96602895c153SMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_UNSUPPORTED_SUBSYS_ID        0xcbUL
96612895c153SMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_UNSUPPORTED_PLATFORM         0xc5UL
96622895c153SMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_DUPLICATE_ITEM               0xc4UL
96632895c153SMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_ZERO_LENGTH_ITEM             0xc3UL
96642895c153SMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_INSTALL_CHECKSUM_ERROR       0xb9UL
96652895c153SMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_INSTALL_DATA_ERROR           0xb8UL
96662895c153SMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_INSTALL_AUTHENTICATION_ERROR 0xb7UL
96672895c153SMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_ITEM_NOT_FOUND               0xb0UL
96682895c153SMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_ITEM_LOCKED                  0xa7UL
96692895c153SMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_LAST                        NVM_INSTALL_UPDATE_RESP_RESULT_ITEM_LOCKED
9670894aa69aSMichael Chan 	u8	problem_item;
9671894aa69aSMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_PROBLEM_ITEM_NONE    0x0UL
9672894aa69aSMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_PROBLEM_ITEM_PACKAGE 0xffUL
9673894aa69aSMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_PROBLEM_ITEM_LAST   NVM_INSTALL_UPDATE_RESP_PROBLEM_ITEM_PACKAGE
9674894aa69aSMichael Chan 	u8	reset_required;
9675894aa69aSMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESET_REQUIRED_NONE  0x0UL
9676894aa69aSMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESET_REQUIRED_PCI   0x1UL
9677894aa69aSMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESET_REQUIRED_POWER 0x2UL
9678894aa69aSMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESET_REQUIRED_LAST NVM_INSTALL_UPDATE_RESP_RESET_REQUIRED_POWER
9679894aa69aSMichael Chan 	u8	unused_0[4];
9680894aa69aSMichael Chan 	u8	valid;
9681894aa69aSMichael Chan };
9682894aa69aSMichael Chan 
9683894aa69aSMichael Chan /* hwrm_nvm_install_update_cmd_err (size:64b/8B) */
9684894aa69aSMichael Chan struct hwrm_nvm_install_update_cmd_err {
9685894aa69aSMichael Chan 	u8	code;
9686894aa69aSMichael Chan 	#define NVM_INSTALL_UPDATE_CMD_ERR_CODE_UNKNOWN            0x0UL
9687894aa69aSMichael Chan 	#define NVM_INSTALL_UPDATE_CMD_ERR_CODE_FRAG_ERR           0x1UL
9688894aa69aSMichael Chan 	#define NVM_INSTALL_UPDATE_CMD_ERR_CODE_NO_SPACE           0x2UL
968978eeadb8SMichael Chan 	#define NVM_INSTALL_UPDATE_CMD_ERR_CODE_ANTI_ROLLBACK      0x3UL
9690ad04cc05SMichael Chan 	#define NVM_INSTALL_UPDATE_CMD_ERR_CODE_NO_VOLTREG_SUPPORT 0x4UL
9691ad04cc05SMichael Chan 	#define NVM_INSTALL_UPDATE_CMD_ERR_CODE_LAST              NVM_INSTALL_UPDATE_CMD_ERR_CODE_NO_VOLTREG_SUPPORT
9692894aa69aSMichael Chan 	u8	unused_0[7];
9693894aa69aSMichael Chan };
9694894aa69aSMichael Chan 
9695894aa69aSMichael Chan /* hwrm_nvm_get_variable_input (size:320b/40B) */
9696894aa69aSMichael Chan struct hwrm_nvm_get_variable_input {
9697894aa69aSMichael Chan 	__le16	req_type;
9698894aa69aSMichael Chan 	__le16	cmpl_ring;
9699894aa69aSMichael Chan 	__le16	seq_id;
9700894aa69aSMichael Chan 	__le16	target_id;
9701894aa69aSMichael Chan 	__le64	resp_addr;
9702894aa69aSMichael Chan 	__le64	dest_data_addr;
9703894aa69aSMichael Chan 	__le16	data_len;
9704894aa69aSMichael Chan 	__le16	option_num;
9705894aa69aSMichael Chan 	#define NVM_GET_VARIABLE_REQ_OPTION_NUM_RSVD_0    0x0UL
9706894aa69aSMichael Chan 	#define NVM_GET_VARIABLE_REQ_OPTION_NUM_RSVD_FFFF 0xffffUL
9707894aa69aSMichael Chan 	#define NVM_GET_VARIABLE_REQ_OPTION_NUM_LAST     NVM_GET_VARIABLE_REQ_OPTION_NUM_RSVD_FFFF
9708894aa69aSMichael Chan 	__le16	dimensions;
9709894aa69aSMichael Chan 	__le16	index_0;
9710894aa69aSMichael Chan 	__le16	index_1;
9711894aa69aSMichael Chan 	__le16	index_2;
9712894aa69aSMichael Chan 	__le16	index_3;
9713894aa69aSMichael Chan 	u8	flags;
9714894aa69aSMichael Chan 	#define NVM_GET_VARIABLE_REQ_FLAGS_FACTORY_DFLT     0x1UL
9715894aa69aSMichael Chan 	u8	unused_0;
9716894aa69aSMichael Chan };
9717894aa69aSMichael Chan 
9718894aa69aSMichael Chan /* hwrm_nvm_get_variable_output (size:128b/16B) */
9719894aa69aSMichael Chan struct hwrm_nvm_get_variable_output {
9720894aa69aSMichael Chan 	__le16	error_code;
9721894aa69aSMichael Chan 	__le16	req_type;
9722894aa69aSMichael Chan 	__le16	seq_id;
9723894aa69aSMichael Chan 	__le16	resp_len;
9724894aa69aSMichael Chan 	__le16	data_len;
9725894aa69aSMichael Chan 	__le16	option_num;
9726894aa69aSMichael Chan 	#define NVM_GET_VARIABLE_RESP_OPTION_NUM_RSVD_0    0x0UL
9727894aa69aSMichael Chan 	#define NVM_GET_VARIABLE_RESP_OPTION_NUM_RSVD_FFFF 0xffffUL
9728894aa69aSMichael Chan 	#define NVM_GET_VARIABLE_RESP_OPTION_NUM_LAST     NVM_GET_VARIABLE_RESP_OPTION_NUM_RSVD_FFFF
9729894aa69aSMichael Chan 	u8	unused_0[3];
9730894aa69aSMichael Chan 	u8	valid;
9731894aa69aSMichael Chan };
9732894aa69aSMichael Chan 
9733894aa69aSMichael Chan /* hwrm_nvm_get_variable_cmd_err (size:64b/8B) */
9734894aa69aSMichael Chan struct hwrm_nvm_get_variable_cmd_err {
9735894aa69aSMichael Chan 	u8	code;
9736894aa69aSMichael Chan 	#define NVM_GET_VARIABLE_CMD_ERR_CODE_UNKNOWN       0x0UL
9737894aa69aSMichael Chan 	#define NVM_GET_VARIABLE_CMD_ERR_CODE_VAR_NOT_EXIST 0x1UL
9738894aa69aSMichael Chan 	#define NVM_GET_VARIABLE_CMD_ERR_CODE_CORRUPT_VAR   0x2UL
9739894aa69aSMichael Chan 	#define NVM_GET_VARIABLE_CMD_ERR_CODE_LEN_TOO_SHORT 0x3UL
9740894aa69aSMichael Chan 	#define NVM_GET_VARIABLE_CMD_ERR_CODE_LAST         NVM_GET_VARIABLE_CMD_ERR_CODE_LEN_TOO_SHORT
9741894aa69aSMichael Chan 	u8	unused_0[7];
9742894aa69aSMichael Chan };
9743894aa69aSMichael Chan 
9744894aa69aSMichael Chan /* hwrm_nvm_set_variable_input (size:320b/40B) */
9745894aa69aSMichael Chan struct hwrm_nvm_set_variable_input {
9746894aa69aSMichael Chan 	__le16	req_type;
9747894aa69aSMichael Chan 	__le16	cmpl_ring;
9748894aa69aSMichael Chan 	__le16	seq_id;
9749894aa69aSMichael Chan 	__le16	target_id;
9750894aa69aSMichael Chan 	__le64	resp_addr;
9751894aa69aSMichael Chan 	__le64	src_data_addr;
9752894aa69aSMichael Chan 	__le16	data_len;
9753894aa69aSMichael Chan 	__le16	option_num;
9754894aa69aSMichael Chan 	#define NVM_SET_VARIABLE_REQ_OPTION_NUM_RSVD_0    0x0UL
9755894aa69aSMichael Chan 	#define NVM_SET_VARIABLE_REQ_OPTION_NUM_RSVD_FFFF 0xffffUL
9756894aa69aSMichael Chan 	#define NVM_SET_VARIABLE_REQ_OPTION_NUM_LAST     NVM_SET_VARIABLE_REQ_OPTION_NUM_RSVD_FFFF
9757894aa69aSMichael Chan 	__le16	dimensions;
9758894aa69aSMichael Chan 	__le16	index_0;
9759894aa69aSMichael Chan 	__le16	index_1;
9760894aa69aSMichael Chan 	__le16	index_2;
9761894aa69aSMichael Chan 	__le16	index_3;
9762894aa69aSMichael Chan 	u8	flags;
9763894aa69aSMichael Chan 	#define NVM_SET_VARIABLE_REQ_FLAGS_FORCE_FLUSH                0x1UL
9764894aa69aSMichael Chan 	#define NVM_SET_VARIABLE_REQ_FLAGS_ENCRYPT_MODE_MASK          0xeUL
9765894aa69aSMichael Chan 	#define NVM_SET_VARIABLE_REQ_FLAGS_ENCRYPT_MODE_SFT           1
9766894aa69aSMichael Chan 	#define NVM_SET_VARIABLE_REQ_FLAGS_ENCRYPT_MODE_NONE            (0x0UL << 1)
9767894aa69aSMichael Chan 	#define NVM_SET_VARIABLE_REQ_FLAGS_ENCRYPT_MODE_HMAC_SHA1       (0x1UL << 1)
97686fc92c33SMichael Chan 	#define NVM_SET_VARIABLE_REQ_FLAGS_ENCRYPT_MODE_AES256          (0x2UL << 1)
97696fc92c33SMichael Chan 	#define NVM_SET_VARIABLE_REQ_FLAGS_ENCRYPT_MODE_HMAC_SHA1_AUTH  (0x3UL << 1)
97706fc92c33SMichael Chan 	#define NVM_SET_VARIABLE_REQ_FLAGS_ENCRYPT_MODE_LAST           NVM_SET_VARIABLE_REQ_FLAGS_ENCRYPT_MODE_HMAC_SHA1_AUTH
97712792b5b9SMichael Chan 	#define NVM_SET_VARIABLE_REQ_FLAGS_FLAGS_UNUSED_0_MASK        0x70UL
97722792b5b9SMichael Chan 	#define NVM_SET_VARIABLE_REQ_FLAGS_FLAGS_UNUSED_0_SFT         4
97732792b5b9SMichael Chan 	#define NVM_SET_VARIABLE_REQ_FLAGS_FACTORY_DEFAULT            0x80UL
9774894aa69aSMichael Chan 	u8	unused_0;
9775894aa69aSMichael Chan };
9776894aa69aSMichael Chan 
9777894aa69aSMichael Chan /* hwrm_nvm_set_variable_output (size:128b/16B) */
9778894aa69aSMichael Chan struct hwrm_nvm_set_variable_output {
9779894aa69aSMichael Chan 	__le16	error_code;
9780894aa69aSMichael Chan 	__le16	req_type;
9781894aa69aSMichael Chan 	__le16	seq_id;
9782894aa69aSMichael Chan 	__le16	resp_len;
9783894aa69aSMichael Chan 	u8	unused_0[7];
9784894aa69aSMichael Chan 	u8	valid;
9785894aa69aSMichael Chan };
9786894aa69aSMichael Chan 
9787894aa69aSMichael Chan /* hwrm_nvm_set_variable_cmd_err (size:64b/8B) */
9788894aa69aSMichael Chan struct hwrm_nvm_set_variable_cmd_err {
9789894aa69aSMichael Chan 	u8	code;
9790894aa69aSMichael Chan 	#define NVM_SET_VARIABLE_CMD_ERR_CODE_UNKNOWN       0x0UL
9791894aa69aSMichael Chan 	#define NVM_SET_VARIABLE_CMD_ERR_CODE_VAR_NOT_EXIST 0x1UL
9792894aa69aSMichael Chan 	#define NVM_SET_VARIABLE_CMD_ERR_CODE_CORRUPT_VAR   0x2UL
9793894aa69aSMichael Chan 	#define NVM_SET_VARIABLE_CMD_ERR_CODE_LAST         NVM_SET_VARIABLE_CMD_ERR_CODE_CORRUPT_VAR
9794894aa69aSMichael Chan 	u8	unused_0[7];
9795894aa69aSMichael Chan };
9796894aa69aSMichael Chan 
9797894aa69aSMichael Chan /* hwrm_selftest_qlist_input (size:128b/16B) */
9798894aa69aSMichael Chan struct hwrm_selftest_qlist_input {
9799894aa69aSMichael Chan 	__le16	req_type;
9800894aa69aSMichael Chan 	__le16	cmpl_ring;
9801894aa69aSMichael Chan 	__le16	seq_id;
9802894aa69aSMichael Chan 	__le16	target_id;
9803894aa69aSMichael Chan 	__le64	resp_addr;
9804894aa69aSMichael Chan };
9805894aa69aSMichael Chan 
9806894aa69aSMichael Chan /* hwrm_selftest_qlist_output (size:2240b/280B) */
9807894aa69aSMichael Chan struct hwrm_selftest_qlist_output {
9808894aa69aSMichael Chan 	__le16	error_code;
9809894aa69aSMichael Chan 	__le16	req_type;
9810894aa69aSMichael Chan 	__le16	seq_id;
9811894aa69aSMichael Chan 	__le16	resp_len;
9812894aa69aSMichael Chan 	u8	num_tests;
9813894aa69aSMichael Chan 	u8	available_tests;
9814894aa69aSMichael Chan 	#define SELFTEST_QLIST_RESP_AVAILABLE_TESTS_NVM_TEST                 0x1UL
9815894aa69aSMichael Chan 	#define SELFTEST_QLIST_RESP_AVAILABLE_TESTS_LINK_TEST                0x2UL
9816894aa69aSMichael Chan 	#define SELFTEST_QLIST_RESP_AVAILABLE_TESTS_REGISTER_TEST            0x4UL
9817894aa69aSMichael Chan 	#define SELFTEST_QLIST_RESP_AVAILABLE_TESTS_MEMORY_TEST              0x8UL
9818894aa69aSMichael Chan 	#define SELFTEST_QLIST_RESP_AVAILABLE_TESTS_PCIE_SERDES_TEST         0x10UL
9819894aa69aSMichael Chan 	#define SELFTEST_QLIST_RESP_AVAILABLE_TESTS_ETHERNET_SERDES_TEST     0x20UL
9820894aa69aSMichael Chan 	u8	offline_tests;
9821894aa69aSMichael Chan 	#define SELFTEST_QLIST_RESP_OFFLINE_TESTS_NVM_TEST                 0x1UL
9822894aa69aSMichael Chan 	#define SELFTEST_QLIST_RESP_OFFLINE_TESTS_LINK_TEST                0x2UL
9823894aa69aSMichael Chan 	#define SELFTEST_QLIST_RESP_OFFLINE_TESTS_REGISTER_TEST            0x4UL
9824894aa69aSMichael Chan 	#define SELFTEST_QLIST_RESP_OFFLINE_TESTS_MEMORY_TEST              0x8UL
9825894aa69aSMichael Chan 	#define SELFTEST_QLIST_RESP_OFFLINE_TESTS_PCIE_SERDES_TEST         0x10UL
9826894aa69aSMichael Chan 	#define SELFTEST_QLIST_RESP_OFFLINE_TESTS_ETHERNET_SERDES_TEST     0x20UL
9827894aa69aSMichael Chan 	u8	unused_0;
9828894aa69aSMichael Chan 	__le16	test_timeout;
9829894aa69aSMichael Chan 	u8	unused_1[2];
9830d3e599c0SKees Cook 	char	test_name[8][32];
9831bfc6e5fbSMichael Chan 	u8	eyescope_target_BER_support;
9832bfc6e5fbSMichael Chan 	#define SELFTEST_QLIST_RESP_EYESCOPE_TARGET_BER_SUPPORT_BER_1E8_SUPPORTED  0x0UL
9833bfc6e5fbSMichael Chan 	#define SELFTEST_QLIST_RESP_EYESCOPE_TARGET_BER_SUPPORT_BER_1E9_SUPPORTED  0x1UL
9834bfc6e5fbSMichael Chan 	#define SELFTEST_QLIST_RESP_EYESCOPE_TARGET_BER_SUPPORT_BER_1E10_SUPPORTED 0x2UL
9835bfc6e5fbSMichael Chan 	#define SELFTEST_QLIST_RESP_EYESCOPE_TARGET_BER_SUPPORT_BER_1E11_SUPPORTED 0x3UL
9836bfc6e5fbSMichael Chan 	#define SELFTEST_QLIST_RESP_EYESCOPE_TARGET_BER_SUPPORT_BER_1E12_SUPPORTED 0x4UL
9837bfc6e5fbSMichael Chan 	#define SELFTEST_QLIST_RESP_EYESCOPE_TARGET_BER_SUPPORT_LAST              SELFTEST_QLIST_RESP_EYESCOPE_TARGET_BER_SUPPORT_BER_1E12_SUPPORTED
9838bfc6e5fbSMichael Chan 	u8	unused_2[6];
9839894aa69aSMichael Chan 	u8	valid;
9840894aa69aSMichael Chan };
9841894aa69aSMichael Chan 
9842894aa69aSMichael Chan /* hwrm_selftest_exec_input (size:192b/24B) */
9843894aa69aSMichael Chan struct hwrm_selftest_exec_input {
9844894aa69aSMichael Chan 	__le16	req_type;
9845894aa69aSMichael Chan 	__le16	cmpl_ring;
9846894aa69aSMichael Chan 	__le16	seq_id;
9847894aa69aSMichael Chan 	__le16	target_id;
9848894aa69aSMichael Chan 	__le64	resp_addr;
9849894aa69aSMichael Chan 	u8	flags;
9850894aa69aSMichael Chan 	#define SELFTEST_EXEC_REQ_FLAGS_NVM_TEST                 0x1UL
9851894aa69aSMichael Chan 	#define SELFTEST_EXEC_REQ_FLAGS_LINK_TEST                0x2UL
9852894aa69aSMichael Chan 	#define SELFTEST_EXEC_REQ_FLAGS_REGISTER_TEST            0x4UL
9853894aa69aSMichael Chan 	#define SELFTEST_EXEC_REQ_FLAGS_MEMORY_TEST              0x8UL
9854894aa69aSMichael Chan 	#define SELFTEST_EXEC_REQ_FLAGS_PCIE_SERDES_TEST         0x10UL
9855894aa69aSMichael Chan 	#define SELFTEST_EXEC_REQ_FLAGS_ETHERNET_SERDES_TEST     0x20UL
9856d4f52de0SMichael Chan 	u8	unused_0[7];
9857894aa69aSMichael Chan };
9858894aa69aSMichael Chan 
9859894aa69aSMichael Chan /* hwrm_selftest_exec_output (size:128b/16B) */
9860894aa69aSMichael Chan struct hwrm_selftest_exec_output {
9861894aa69aSMichael Chan 	__le16	error_code;
9862894aa69aSMichael Chan 	__le16	req_type;
9863894aa69aSMichael Chan 	__le16	seq_id;
9864894aa69aSMichael Chan 	__le16	resp_len;
9865894aa69aSMichael Chan 	u8	requested_tests;
9866894aa69aSMichael Chan 	#define SELFTEST_EXEC_RESP_REQUESTED_TESTS_NVM_TEST                 0x1UL
9867894aa69aSMichael Chan 	#define SELFTEST_EXEC_RESP_REQUESTED_TESTS_LINK_TEST                0x2UL
9868894aa69aSMichael Chan 	#define SELFTEST_EXEC_RESP_REQUESTED_TESTS_REGISTER_TEST            0x4UL
9869894aa69aSMichael Chan 	#define SELFTEST_EXEC_RESP_REQUESTED_TESTS_MEMORY_TEST              0x8UL
9870894aa69aSMichael Chan 	#define SELFTEST_EXEC_RESP_REQUESTED_TESTS_PCIE_SERDES_TEST         0x10UL
9871894aa69aSMichael Chan 	#define SELFTEST_EXEC_RESP_REQUESTED_TESTS_ETHERNET_SERDES_TEST     0x20UL
9872894aa69aSMichael Chan 	u8	test_success;
9873894aa69aSMichael Chan 	#define SELFTEST_EXEC_RESP_TEST_SUCCESS_NVM_TEST                 0x1UL
9874894aa69aSMichael Chan 	#define SELFTEST_EXEC_RESP_TEST_SUCCESS_LINK_TEST                0x2UL
9875894aa69aSMichael Chan 	#define SELFTEST_EXEC_RESP_TEST_SUCCESS_REGISTER_TEST            0x4UL
9876894aa69aSMichael Chan 	#define SELFTEST_EXEC_RESP_TEST_SUCCESS_MEMORY_TEST              0x8UL
9877894aa69aSMichael Chan 	#define SELFTEST_EXEC_RESP_TEST_SUCCESS_PCIE_SERDES_TEST         0x10UL
9878894aa69aSMichael Chan 	#define SELFTEST_EXEC_RESP_TEST_SUCCESS_ETHERNET_SERDES_TEST     0x20UL
9879894aa69aSMichael Chan 	u8	unused_0[5];
9880894aa69aSMichael Chan 	u8	valid;
9881894aa69aSMichael Chan };
9882894aa69aSMichael Chan 
9883894aa69aSMichael Chan /* hwrm_selftest_irq_input (size:128b/16B) */
9884894aa69aSMichael Chan struct hwrm_selftest_irq_input {
9885894aa69aSMichael Chan 	__le16	req_type;
9886894aa69aSMichael Chan 	__le16	cmpl_ring;
9887894aa69aSMichael Chan 	__le16	seq_id;
9888894aa69aSMichael Chan 	__le16	target_id;
9889894aa69aSMichael Chan 	__le64	resp_addr;
9890894aa69aSMichael Chan };
9891894aa69aSMichael Chan 
9892894aa69aSMichael Chan /* hwrm_selftest_irq_output (size:128b/16B) */
9893894aa69aSMichael Chan struct hwrm_selftest_irq_output {
9894894aa69aSMichael Chan 	__le16	error_code;
9895894aa69aSMichael Chan 	__le16	req_type;
9896894aa69aSMichael Chan 	__le16	seq_id;
9897894aa69aSMichael Chan 	__le16	resp_len;
9898894aa69aSMichael Chan 	u8	unused_0[7];
9899894aa69aSMichael Chan 	u8	valid;
9900894aa69aSMichael Chan };
9901894aa69aSMichael Chan 
9902a9a457f3SSelvin Xavier /* dbc_dbc (size:64b/8B) */
9903a9a457f3SSelvin Xavier struct dbc_dbc {
9904a9a457f3SSelvin Xavier 	u32	index;
9905a9a457f3SSelvin Xavier 	#define DBC_DBC_INDEX_MASK 0xffffffUL
9906a9a457f3SSelvin Xavier 	#define DBC_DBC_INDEX_SFT  0
9907a9a457f3SSelvin Xavier 	#define DBC_DBC_EPOCH      0x1000000UL
9908a9a457f3SSelvin Xavier 	#define DBC_DBC_TOGGLE_MASK 0x6000000UL
9909a9a457f3SSelvin Xavier 	#define DBC_DBC_TOGGLE_SFT 25
9910a9a457f3SSelvin Xavier 	u32	type_path_xid;
9911a9a457f3SSelvin Xavier 	#define DBC_DBC_XID_MASK          0xfffffUL
9912a9a457f3SSelvin Xavier 	#define DBC_DBC_XID_SFT           0
9913a9a457f3SSelvin Xavier 	#define DBC_DBC_PATH_MASK         0x3000000UL
9914a9a457f3SSelvin Xavier 	#define DBC_DBC_PATH_SFT          24
9915a9a457f3SSelvin Xavier 	#define DBC_DBC_PATH_ROCE           (0x0UL << 24)
9916a9a457f3SSelvin Xavier 	#define DBC_DBC_PATH_L2             (0x1UL << 24)
9917a9a457f3SSelvin Xavier 	#define DBC_DBC_PATH_ENGINE         (0x2UL << 24)
9918a9a457f3SSelvin Xavier 	#define DBC_DBC_PATH_LAST          DBC_DBC_PATH_ENGINE
9919a9a457f3SSelvin Xavier 	#define DBC_DBC_VALID             0x4000000UL
9920a9a457f3SSelvin Xavier 	#define DBC_DBC_DEBUG_TRACE       0x8000000UL
9921a9a457f3SSelvin Xavier 	#define DBC_DBC_TYPE_MASK         0xf0000000UL
9922a9a457f3SSelvin Xavier 	#define DBC_DBC_TYPE_SFT          28
9923a9a457f3SSelvin Xavier 	#define DBC_DBC_TYPE_SQ             (0x0UL << 28)
9924a9a457f3SSelvin Xavier 	#define DBC_DBC_TYPE_RQ             (0x1UL << 28)
9925a9a457f3SSelvin Xavier 	#define DBC_DBC_TYPE_SRQ            (0x2UL << 28)
9926a9a457f3SSelvin Xavier 	#define DBC_DBC_TYPE_SRQ_ARM        (0x3UL << 28)
9927a9a457f3SSelvin Xavier 	#define DBC_DBC_TYPE_CQ             (0x4UL << 28)
9928a9a457f3SSelvin Xavier 	#define DBC_DBC_TYPE_CQ_ARMSE       (0x5UL << 28)
9929a9a457f3SSelvin Xavier 	#define DBC_DBC_TYPE_CQ_ARMALL      (0x6UL << 28)
9930a9a457f3SSelvin Xavier 	#define DBC_DBC_TYPE_CQ_ARMENA      (0x7UL << 28)
9931a9a457f3SSelvin Xavier 	#define DBC_DBC_TYPE_SRQ_ARMENA     (0x8UL << 28)
9932a9a457f3SSelvin Xavier 	#define DBC_DBC_TYPE_CQ_CUTOFF_ACK  (0x9UL << 28)
9933a9a457f3SSelvin Xavier 	#define DBC_DBC_TYPE_NQ             (0xaUL << 28)
9934a9a457f3SSelvin Xavier 	#define DBC_DBC_TYPE_NQ_ARM         (0xbUL << 28)
9935a9a457f3SSelvin Xavier 	#define DBC_DBC_TYPE_NQ_MASK        (0xeUL << 28)
9936a9a457f3SSelvin Xavier 	#define DBC_DBC_TYPE_NULL           (0xfUL << 28)
9937a9a457f3SSelvin Xavier 	#define DBC_DBC_TYPE_LAST          DBC_DBC_TYPE_NULL
9938a9a457f3SSelvin Xavier };
9939a9a457f3SSelvin Xavier 
9940a9a457f3SSelvin Xavier /* db_push_start (size:64b/8B) */
9941a9a457f3SSelvin Xavier struct db_push_start {
9942a9a457f3SSelvin Xavier 	u64	db;
9943a9a457f3SSelvin Xavier 	#define DB_PUSH_START_DB_INDEX_MASK     0xffffffUL
9944a9a457f3SSelvin Xavier 	#define DB_PUSH_START_DB_INDEX_SFT      0
9945a9a457f3SSelvin Xavier 	#define DB_PUSH_START_DB_PI_LO_MASK     0xff000000UL
9946a9a457f3SSelvin Xavier 	#define DB_PUSH_START_DB_PI_LO_SFT      24
9947a9a457f3SSelvin Xavier 	#define DB_PUSH_START_DB_XID_MASK       0xfffff00000000ULL
9948a9a457f3SSelvin Xavier 	#define DB_PUSH_START_DB_XID_SFT        32
9949a9a457f3SSelvin Xavier 	#define DB_PUSH_START_DB_PI_HI_MASK     0xf0000000000000ULL
9950a9a457f3SSelvin Xavier 	#define DB_PUSH_START_DB_PI_HI_SFT      52
9951a9a457f3SSelvin Xavier 	#define DB_PUSH_START_DB_TYPE_MASK      0xf000000000000000ULL
9952a9a457f3SSelvin Xavier 	#define DB_PUSH_START_DB_TYPE_SFT       60
9953a9a457f3SSelvin Xavier 	#define DB_PUSH_START_DB_TYPE_PUSH_START  (0xcULL << 60)
9954a9a457f3SSelvin Xavier 	#define DB_PUSH_START_DB_TYPE_PUSH_END    (0xdULL << 60)
9955a9a457f3SSelvin Xavier 	#define DB_PUSH_START_DB_TYPE_LAST       DB_PUSH_START_DB_TYPE_PUSH_END
9956a9a457f3SSelvin Xavier };
9957a9a457f3SSelvin Xavier 
9958a9a457f3SSelvin Xavier /* db_push_end (size:64b/8B) */
9959a9a457f3SSelvin Xavier struct db_push_end {
9960a9a457f3SSelvin Xavier 	u64	db;
9961a9a457f3SSelvin Xavier 	#define DB_PUSH_END_DB_INDEX_MASK      0xffffffUL
9962a9a457f3SSelvin Xavier 	#define DB_PUSH_END_DB_INDEX_SFT       0
9963a9a457f3SSelvin Xavier 	#define DB_PUSH_END_DB_PI_LO_MASK      0xff000000UL
9964a9a457f3SSelvin Xavier 	#define DB_PUSH_END_DB_PI_LO_SFT       24
9965a9a457f3SSelvin Xavier 	#define DB_PUSH_END_DB_XID_MASK        0xfffff00000000ULL
9966a9a457f3SSelvin Xavier 	#define DB_PUSH_END_DB_XID_SFT         32
9967a9a457f3SSelvin Xavier 	#define DB_PUSH_END_DB_PI_HI_MASK      0xf0000000000000ULL
9968a9a457f3SSelvin Xavier 	#define DB_PUSH_END_DB_PI_HI_SFT       52
9969a9a457f3SSelvin Xavier 	#define DB_PUSH_END_DB_PATH_MASK       0x300000000000000ULL
9970a9a457f3SSelvin Xavier 	#define DB_PUSH_END_DB_PATH_SFT        56
9971a9a457f3SSelvin Xavier 	#define DB_PUSH_END_DB_PATH_ROCE         (0x0ULL << 56)
9972a9a457f3SSelvin Xavier 	#define DB_PUSH_END_DB_PATH_L2           (0x1ULL << 56)
9973a9a457f3SSelvin Xavier 	#define DB_PUSH_END_DB_PATH_ENGINE       (0x2ULL << 56)
9974a9a457f3SSelvin Xavier 	#define DB_PUSH_END_DB_PATH_LAST        DB_PUSH_END_DB_PATH_ENGINE
9975a9a457f3SSelvin Xavier 	#define DB_PUSH_END_DB_DEBUG_TRACE     0x800000000000000ULL
9976a9a457f3SSelvin Xavier 	#define DB_PUSH_END_DB_TYPE_MASK       0xf000000000000000ULL
9977a9a457f3SSelvin Xavier 	#define DB_PUSH_END_DB_TYPE_SFT        60
9978a9a457f3SSelvin Xavier 	#define DB_PUSH_END_DB_TYPE_PUSH_START   (0xcULL << 60)
9979a9a457f3SSelvin Xavier 	#define DB_PUSH_END_DB_TYPE_PUSH_END     (0xdULL << 60)
9980a9a457f3SSelvin Xavier 	#define DB_PUSH_END_DB_TYPE_LAST        DB_PUSH_END_DB_TYPE_PUSH_END
9981a9a457f3SSelvin Xavier };
9982a9a457f3SSelvin Xavier 
99839d6b648cSMichael Chan /* db_push_info (size:64b/8B) */
99849d6b648cSMichael Chan struct db_push_info {
99859d6b648cSMichael Chan 	u32	push_size_push_index;
99869d6b648cSMichael Chan 	#define DB_PUSH_INFO_PUSH_INDEX_MASK 0xffffffUL
99879d6b648cSMichael Chan 	#define DB_PUSH_INFO_PUSH_INDEX_SFT 0
99889d6b648cSMichael Chan 	#define DB_PUSH_INFO_PUSH_SIZE_MASK 0x1f000000UL
99899d6b648cSMichael Chan 	#define DB_PUSH_INFO_PUSH_SIZE_SFT  24
99909d6b648cSMichael Chan 	u32	reserved32;
99919d6b648cSMichael Chan };
99929d6b648cSMichael Chan 
9993460c2577SMichael Chan /* fw_status_reg (size:32b/4B) */
9994460c2577SMichael Chan struct fw_status_reg {
9995460c2577SMichael Chan 	u32	fw_status;
9996460c2577SMichael Chan 	#define FW_STATUS_REG_CODE_MASK              0xffffUL
9997460c2577SMichael Chan 	#define FW_STATUS_REG_CODE_SFT               0
9998460c2577SMichael Chan 	#define FW_STATUS_REG_CODE_READY               0x8000UL
9999460c2577SMichael Chan 	#define FW_STATUS_REG_CODE_LAST               FW_STATUS_REG_CODE_READY
10000460c2577SMichael Chan 	#define FW_STATUS_REG_IMAGE_DEGRADED         0x10000UL
10001460c2577SMichael Chan 	#define FW_STATUS_REG_RECOVERABLE            0x20000UL
10002460c2577SMichael Chan 	#define FW_STATUS_REG_CRASHDUMP_ONGOING      0x40000UL
10003460c2577SMichael Chan 	#define FW_STATUS_REG_CRASHDUMP_COMPLETE     0x80000UL
10004460c2577SMichael Chan 	#define FW_STATUS_REG_SHUTDOWN               0x100000UL
10005424174f1SVasundhara Volam 	#define FW_STATUS_REG_CRASHED_NO_MASTER      0x200000UL
1000678eeadb8SMichael Chan 	#define FW_STATUS_REG_RECOVERING             0x400000UL
1000784a911dbSMichael Chan 	#define FW_STATUS_REG_MANU_DEBUG_STATUS      0x800000UL
10008460c2577SMichael Chan };
10009460c2577SMichael Chan 
100109d6b648cSMichael Chan /* hcomm_status (size:64b/8B) */
100119d6b648cSMichael Chan struct hcomm_status {
100129d6b648cSMichael Chan 	u32	sig_ver;
100139d6b648cSMichael Chan 	#define HCOMM_STATUS_VER_MASK      0xffUL
100149d6b648cSMichael Chan 	#define HCOMM_STATUS_VER_SFT       0
100159d6b648cSMichael Chan 	#define HCOMM_STATUS_VER_LATEST      0x1UL
100169d6b648cSMichael Chan 	#define HCOMM_STATUS_VER_LAST       HCOMM_STATUS_VER_LATEST
100179d6b648cSMichael Chan 	#define HCOMM_STATUS_SIGNATURE_MASK 0xffffff00UL
100189d6b648cSMichael Chan 	#define HCOMM_STATUS_SIGNATURE_SFT 8
100199d6b648cSMichael Chan 	#define HCOMM_STATUS_SIGNATURE_VAL   (0x484353UL << 8)
100209d6b648cSMichael Chan 	#define HCOMM_STATUS_SIGNATURE_LAST HCOMM_STATUS_SIGNATURE_VAL
100219d6b648cSMichael Chan 	u32	fw_status_loc;
100229d6b648cSMichael Chan 	#define HCOMM_STATUS_TRUE_ADDR_SPACE_MASK    0x3UL
100239d6b648cSMichael Chan 	#define HCOMM_STATUS_TRUE_ADDR_SPACE_SFT     0
100249d6b648cSMichael Chan 	#define HCOMM_STATUS_FW_STATUS_LOC_ADDR_SPACE_PCIE_CFG  0x0UL
100259d6b648cSMichael Chan 	#define HCOMM_STATUS_FW_STATUS_LOC_ADDR_SPACE_GRC       0x1UL
100269d6b648cSMichael Chan 	#define HCOMM_STATUS_FW_STATUS_LOC_ADDR_SPACE_BAR0      0x2UL
100279d6b648cSMichael Chan 	#define HCOMM_STATUS_FW_STATUS_LOC_ADDR_SPACE_BAR1      0x3UL
100289d6b648cSMichael Chan 	#define HCOMM_STATUS_FW_STATUS_LOC_ADDR_SPACE_LAST     HCOMM_STATUS_FW_STATUS_LOC_ADDR_SPACE_BAR1
100299d6b648cSMichael Chan 	#define HCOMM_STATUS_TRUE_OFFSET_MASK        0xfffffffcUL
100309d6b648cSMichael Chan 	#define HCOMM_STATUS_TRUE_OFFSET_SFT         2
100319d6b648cSMichael Chan };
100329d6b648cSMichael Chan #define HCOMM_STATUS_STRUCT_LOC 0x31001F0UL
100339d6b648cSMichael Chan 
10034894aa69aSMichael Chan #endif /* _BNXT_HSI_H_ */
10035