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 
37246fc92c33SMichael Chan /* hwrm_func_dbr_pacing_qcfg_input (size:128b/16B) */
37256fc92c33SMichael Chan struct hwrm_func_dbr_pacing_qcfg_input {
37266fc92c33SMichael Chan 	__le16  req_type;
37276fc92c33SMichael Chan 	__le16  cmpl_ring;
37286fc92c33SMichael Chan 	__le16  seq_id;
37296fc92c33SMichael Chan 	__le16  target_id;
37306fc92c33SMichael Chan 	__le64  resp_addr;
37316fc92c33SMichael Chan };
37326fc92c33SMichael Chan 
37336fc92c33SMichael Chan /* hwrm_func_dbr_pacing_qcfg_output (size:512b/64B) */
37346fc92c33SMichael Chan struct hwrm_func_dbr_pacing_qcfg_output {
37356fc92c33SMichael Chan 	__le16  error_code;
37366fc92c33SMichael Chan 	__le16  req_type;
37376fc92c33SMichael Chan 	__le16  seq_id;
37386fc92c33SMichael Chan 	__le16  resp_len;
37396fc92c33SMichael Chan 	u8      flags;
37406fc92c33SMichael Chan #define FUNC_DBR_PACING_QCFG_RESP_FLAGS_DBR_NQ_EVENT_ENABLED     0x1UL
37416fc92c33SMichael Chan 	u8      unused_0[7];
37426fc92c33SMichael Chan 	__le32  dbr_stat_db_fifo_reg;
37436fc92c33SMichael Chan #define FUNC_DBR_PACING_QCFG_RESP_DBR_STAT_DB_FIFO_REG_ADDR_SPACE_MASK    0x3UL
37443322479eSMichael Chan #define FUNC_DBR_PACING_QCFG_RESP_DBR_STAT_DB_FIFO_REG_ADDR_SPACE_SFT     0
37456fc92c33SMichael Chan #define FUNC_DBR_PACING_QCFG_RESP_DBR_STAT_DB_FIFO_REG_ADDR_SPACE_PCIE_CFG  0x0UL
37466fc92c33SMichael Chan #define FUNC_DBR_PACING_QCFG_RESP_DBR_STAT_DB_FIFO_REG_ADDR_SPACE_GRC       0x1UL
37476fc92c33SMichael Chan #define FUNC_DBR_PACING_QCFG_RESP_DBR_STAT_DB_FIFO_REG_ADDR_SPACE_BAR0      0x2UL
37486fc92c33SMichael Chan #define FUNC_DBR_PACING_QCFG_RESP_DBR_STAT_DB_FIFO_REG_ADDR_SPACE_BAR1      0x3UL
3749894aa69aSMichael Chan #define FUNC_DBR_PACING_QCFG_RESP_DBR_STAT_DB_FIFO_REG_ADDR_SPACE_LAST     \
3750c0c050c5SMichael Chan 		FUNC_DBR_PACING_QCFG_RESP_DBR_STAT_DB_FIFO_REG_ADDR_SPACE_BAR1
3751c0c050c5SMichael Chan #define FUNC_DBR_PACING_QCFG_RESP_DBR_STAT_DB_FIFO_REG_ADDR_MASK          0xfffffffcUL
3752c0c050c5SMichael Chan #define FUNC_DBR_PACING_QCFG_RESP_DBR_STAT_DB_FIFO_REG_ADDR_SFT           2
3753c0c050c5SMichael Chan 	__le32  dbr_stat_db_fifo_reg_watermark_mask;
3754c0c050c5SMichael Chan 	u8      dbr_stat_db_fifo_reg_watermark_shift;
3755c0c050c5SMichael Chan 	u8      unused_1[3];
3756c0c050c5SMichael Chan 	__le32  dbr_stat_db_fifo_reg_fifo_room_mask;
3757c0c050c5SMichael Chan 	u8      dbr_stat_db_fifo_reg_fifo_room_shift;
375816d663a6SMichael Chan 	u8      unused_2[3];
3759c0c050c5SMichael Chan 	__le32  dbr_throttling_aeq_arm_reg;
3760c0c050c5SMichael Chan #define FUNC_DBR_PACING_QCFG_RESP_DBR_THROTTLING_AEQ_ARM_REG_ADDR_SPACE_MASK    0x3UL
376111f15ed3SMichael Chan #define FUNC_DBR_PACING_QCFG_RESP_DBR_THROTTLING_AEQ_ARM_REG_ADDR_SPACE_SFT     0
376211f15ed3SMichael Chan #define FUNC_DBR_PACING_QCFG_RESP_DBR_THROTTLING_AEQ_ARM_REG_ADDR_SPACE_PCIE_CFG  0x0UL
376311f15ed3SMichael Chan #define FUNC_DBR_PACING_QCFG_RESP_DBR_THROTTLING_AEQ_ARM_REG_ADDR_SPACE_GRC       0x1UL
376411f15ed3SMichael Chan #define FUNC_DBR_PACING_QCFG_RESP_DBR_THROTTLING_AEQ_ARM_REG_ADDR_SPACE_BAR0      0x2UL
3765a58a3e68SMichael Chan #define FUNC_DBR_PACING_QCFG_RESP_DBR_THROTTLING_AEQ_ARM_REG_ADDR_SPACE_BAR1      0x3UL
3766a58a3e68SMichael Chan #define FUNC_DBR_PACING_QCFG_RESP_DBR_THROTTLING_AEQ_ARM_REG_ADDR_SPACE_LAST	\
3767a58a3e68SMichael Chan 		FUNC_DBR_PACING_QCFG_RESP_DBR_THROTTLING_AEQ_ARM_REG_ADDR_SPACE_BAR1
3768a58a3e68SMichael Chan #define FUNC_DBR_PACING_QCFG_RESP_DBR_THROTTLING_AEQ_ARM_REG_ADDR_MASK          0xfffffffcUL
3769a58a3e68SMichael Chan #define FUNC_DBR_PACING_QCFG_RESP_DBR_THROTTLING_AEQ_ARM_REG_ADDR_SFT           2
3770a58a3e68SMichael Chan 	u8      dbr_throttling_aeq_arm_reg_val;
377116d663a6SMichael Chan 	u8      unused_3[7];
3772bfc6e5fbSMichael Chan 	__le32  primary_nq_id;
3773bfc6e5fbSMichael Chan 	__le32  pacing_threshold;
37749d6b648cSMichael Chan 	u8      unused_4[7];
37759d6b648cSMichael Chan 	u8      valid;
37769d6b648cSMichael Chan };
37779d6b648cSMichael Chan 
37789d6b648cSMichael Chan /* hwrm_func_drv_if_change_input (size:192b/24B) */
37799d6b648cSMichael Chan struct hwrm_func_drv_if_change_input {
3780c0c050c5SMichael Chan 	__le16	req_type;
3781c0c050c5SMichael Chan 	__le16	cmpl_ring;
3782c0c050c5SMichael Chan 	__le16	seq_id;
3783c0c050c5SMichael Chan 	__le16	target_id;
3784c0c050c5SMichael Chan 	__le64	resp_addr;
3785c0c050c5SMichael Chan 	__le32	flags;
3786c0c050c5SMichael Chan 	#define FUNC_DRV_IF_CHANGE_REQ_FLAGS_UP     0x1UL
3787c0c050c5SMichael Chan 	__le32	unused;
3788c0c050c5SMichael Chan };
3789c0c050c5SMichael Chan 
379011f15ed3SMichael Chan /* hwrm_func_drv_if_change_output (size:128b/16B) */
379111f15ed3SMichael Chan struct hwrm_func_drv_if_change_output {
3792bfc6e5fbSMichael Chan 	__le16	error_code;
3793bfc6e5fbSMichael Chan 	__le16	req_type;
3794c0c050c5SMichael Chan 	__le16	seq_id;
3795c0c050c5SMichael Chan 	__le16	resp_len;
3796441cabbbSMichael Chan 	__le32	flags;
3797441cabbbSMichael Chan 	#define FUNC_DRV_IF_CHANGE_RESP_FLAGS_RESC_CHANGE           0x1UL
3798441cabbbSMichael Chan 	#define FUNC_DRV_IF_CHANGE_RESP_FLAGS_HOT_FW_RESET_DONE     0x2UL
3799441cabbbSMichael Chan 	u8	unused_0[3];
3800441cabbbSMichael Chan 	u8	valid;
3801441cabbbSMichael Chan };
3802441cabbbSMichael Chan 
3803441cabbbSMichael Chan /* hwrm_port_phy_cfg_input (size:448b/56B) */
3804441cabbbSMichael Chan struct hwrm_port_phy_cfg_input {
3805441cabbbSMichael Chan 	__le16	req_type;
3806441cabbbSMichael Chan 	__le16	cmpl_ring;
3807894aa69aSMichael Chan 	__le16	seq_id;
3808c0c050c5SMichael Chan 	__le16	target_id;
3809441cabbbSMichael Chan 	__le64	resp_addr;
3810441cabbbSMichael Chan 	__le32	flags;
3811441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_FLAGS_RESET_PHY                  0x1UL
3812441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_FLAGS_DEPRECATED                 0x2UL
3813441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_FLAGS_FORCE                      0x4UL
3814894aa69aSMichael Chan 	#define PORT_PHY_CFG_REQ_FLAGS_RESTART_AUTONEG            0x8UL
3815c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_FLAGS_EEE_ENABLE                 0x10UL
3816441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_FLAGS_EEE_DISABLE                0x20UL
3817441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_FLAGS_EEE_TX_LPI_ENABLE          0x40UL
3818441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_FLAGS_EEE_TX_LPI_DISABLE         0x80UL
3819894aa69aSMichael Chan 	#define PORT_PHY_CFG_REQ_FLAGS_FEC_AUTONEG_ENABLE         0x100UL
3820c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_FLAGS_FEC_AUTONEG_DISABLE        0x200UL
3821c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_FLAGS_FEC_CLAUSE74_ENABLE        0x400UL
3822c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_FLAGS_FEC_CLAUSE74_DISABLE       0x800UL
382311f15ed3SMichael Chan 	#define PORT_PHY_CFG_REQ_FLAGS_FEC_CLAUSE91_ENABLE        0x1000UL
3824c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_FLAGS_FEC_CLAUSE91_DISABLE       0x2000UL
3825c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_FLAGS_FORCE_LINK_DWN             0x4000UL
3826441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_FLAGS_FEC_RS544_1XN_ENABLE       0x8000UL
3827441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_FLAGS_FEC_RS544_1XN_DISABLE      0x10000UL
3828441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_FLAGS_FEC_RS544_IEEE_ENABLE      0x20000UL
3829441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_FLAGS_FEC_RS544_IEEE_DISABLE     0x40000UL
3830441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_FLAGS_FEC_RS272_1XN_ENABLE       0x80000UL
3831441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_FLAGS_FEC_RS272_1XN_DISABLE      0x100000UL
3832441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_FLAGS_FEC_RS272_IEEE_ENABLE      0x200000UL
3833441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_FLAGS_FEC_RS272_IEEE_DISABLE     0x400000UL
3834441cabbbSMichael Chan 	__le32	enables;
3835441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_ENABLES_AUTO_MODE                     0x1UL
3836441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_ENABLES_AUTO_DUPLEX                   0x2UL
3837894aa69aSMichael 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
3844c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_ENABLES_EEE_LINK_SPEED_MASK           0x200UL
3845c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_ENABLES_TX_LPI_TIMER                  0x400UL
3846c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_ENABLES_FORCE_PAM4_LINK_SPEED         0x800UL
3847c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_ENABLES_AUTO_PAM4_LINK_SPEED_MASK     0x1000UL
3848c0c050c5SMichael Chan 	__le16	port_id;
3849c0c050c5SMichael Chan 	__le16	force_link_speed;
385011f15ed3SMichael Chan 	#define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_100MB 0x1UL
385111f15ed3SMichael Chan 	#define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_1GB   0xaUL
385211f15ed3SMichael Chan 	#define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_2GB   0x14UL
3853c0c050c5SMichael 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
3856894aa69aSMichael Chan 	#define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_25GB  0xfaUL
3857c0c050c5SMichael 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
38616fc92c33SMichael Chan 	#define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_LAST PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_10MB
38626fc92c33SMichael Chan 	u8	auto_mode;
3863c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_MODE_NONE         0x0UL
3864c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_MODE_ALL_SPEEDS   0x1UL
3865c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_MODE_ONE_SPEED    0x2UL
3866c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_MODE_ONE_OR_BELOW 0x3UL
3867c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_MODE_SPEED_MASK   0x4UL
386811f15ed3SMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_MODE_LAST        PORT_PHY_CFG_REQ_AUTO_MODE_SPEED_MASK
386911f15ed3SMichael Chan 	u8	auto_duplex;
387011f15ed3SMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_DUPLEX_HALF 0x0UL
387111f15ed3SMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_DUPLEX_FULL 0x1UL
387211f15ed3SMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_DUPLEX_BOTH 0x2UL
387311f15ed3SMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_DUPLEX_LAST PORT_PHY_CFG_REQ_AUTO_DUPLEX_BOTH
387411f15ed3SMichael Chan 	u8	auto_pause;
387511f15ed3SMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_PAUSE_TX                0x1UL
3876bfc6e5fbSMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_PAUSE_RX                0x2UL
3877bfc6e5fbSMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_PAUSE_AUTONEG_PAUSE     0x4UL
3878bfc6e5fbSMichael Chan 	u8	unused_0;
3879bfc6e5fbSMichael Chan 	__le16	auto_link_speed;
3880bfc6e5fbSMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_100MB 0x1UL
388111f15ed3SMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_1GB   0xaUL
388211f15ed3SMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_2GB   0x14UL
388311f15ed3SMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_2_5GB 0x19UL
3884bfc6e5fbSMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_10GB  0x64UL
3885bfc6e5fbSMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_20GB  0xc8UL
3886bfc6e5fbSMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_25GB  0xfaUL
3887bfc6e5fbSMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_40GB  0x190UL
3888bfc6e5fbSMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_50GB  0x1f4UL
3889c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_100GB 0x3e8UL
3890c0c050c5SMichael 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
3897894aa69aSMichael 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
3901d4f52de0SMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_25GB        0x100UL
3902d4f52de0SMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_40GB        0x200UL
3903d4f52de0SMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_50GB        0x400UL
3904d4f52de0SMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_100GB       0x800UL
3905d4f52de0SMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_10MBHD      0x1000UL
3906d4f52de0SMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_10MB        0x2000UL
3907d4f52de0SMichael Chan 	u8	wirespeed;
3908d4f52de0SMichael Chan 	#define PORT_PHY_CFG_REQ_WIRESPEED_OFF 0x0UL
3909d4f52de0SMichael Chan 	#define PORT_PHY_CFG_REQ_WIRESPEED_ON  0x1UL
3910d4f52de0SMichael Chan 	#define PORT_PHY_CFG_REQ_WIRESPEED_LAST PORT_PHY_CFG_REQ_WIRESPEED_ON
3911894aa69aSMichael Chan 	u8	lpbk;
3912c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_LPBK_NONE     0x0UL
3913c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_LPBK_LOCAL    0x1UL
3914c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_LPBK_REMOTE   0x2UL
3915c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_LPBK_EXTERNAL 0x3UL
3916c0c050c5SMichael 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
3919894aa69aSMichael Chan 	#define PORT_PHY_CFG_REQ_FORCE_PAUSE_RX     0x2UL
3920c0c050c5SMichael Chan 	u8	unused_1;
3921c0c050c5SMichael Chan 	__le32	preemphasis;
392284a911dbSMichael Chan 	__le16	eee_link_speed_mask;
3923c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_EEE_LINK_SPEED_MASK_RSVD1     0x1UL
3924c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_EEE_LINK_SPEED_MASK_100MB     0x2UL
3925c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_EEE_LINK_SPEED_MASK_RSVD2     0x4UL
3926c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_EEE_LINK_SPEED_MASK_1GB       0x8UL
3927c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_EEE_LINK_SPEED_MASK_RSVD3     0x10UL
3928c0c050c5SMichael Chan 	#define PORT_PHY_CFG_REQ_EEE_LINK_SPEED_MASK_RSVD4     0x20UL
3929441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_EEE_LINK_SPEED_MASK_10GB      0x40UL
3930441cabbbSMichael Chan 	__le16	force_pam4_link_speed;
3931441cabbbSMichael Chan 	#define PORT_PHY_CFG_REQ_FORCE_PAM4_LINK_SPEED_50GB  0x1f4UL
3932894aa69aSMichael Chan 	#define PORT_PHY_CFG_REQ_FORCE_PAM4_LINK_SPEED_100GB 0x3e8UL
39339d6b648cSMichael Chan 	#define PORT_PHY_CFG_REQ_FORCE_PAM4_LINK_SPEED_200GB 0x7d0UL
39349d6b648cSMichael Chan 	#define PORT_PHY_CFG_REQ_FORCE_PAM4_LINK_SPEED_LAST PORT_PHY_CFG_REQ_FORCE_PAM4_LINK_SPEED_200GB
39359d6b648cSMichael Chan 	__le32	tx_lpi_timer;
39369d6b648cSMichael Chan 	#define PORT_PHY_CFG_REQ_TX_LPI_TIMER_MASK 0xffffffUL
39379d6b648cSMichael Chan 	#define PORT_PHY_CFG_REQ_TX_LPI_TIMER_SFT 0
39389d6b648cSMichael Chan 	__le16	auto_link_pam4_speed_mask;
39399d6b648cSMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_LINK_PAM4_SPEED_MASK_50G      0x1UL
39409d6b648cSMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_LINK_PAM4_SPEED_MASK_100G     0x2UL
39419d6b648cSMichael Chan 	#define PORT_PHY_CFG_REQ_AUTO_LINK_PAM4_SPEED_MASK_200G     0x4UL
39429d6b648cSMichael Chan 	u8	unused_2[2];
39439d6b648cSMichael Chan };
39449d6b648cSMichael Chan 
39459d6b648cSMichael Chan /* hwrm_port_phy_cfg_output (size:128b/16B) */
39469d6b648cSMichael Chan struct hwrm_port_phy_cfg_output {
39479d6b648cSMichael Chan 	__le16	error_code;
39489d6b648cSMichael Chan 	__le16	req_type;
3949c0c050c5SMichael Chan 	__le16	seq_id;
3950441cabbbSMichael Chan 	__le16	resp_len;
3951441cabbbSMichael Chan 	u8	unused_0[7];
3952441cabbbSMichael Chan 	u8	valid;
3953441cabbbSMichael Chan };
3954441cabbbSMichael Chan 
3955441cabbbSMichael Chan /* hwrm_port_phy_cfg_cmd_err (size:64b/8B) */
3956441cabbbSMichael Chan struct hwrm_port_phy_cfg_cmd_err {
3957441cabbbSMichael Chan 	u8	code;
3958441cabbbSMichael Chan 	#define PORT_PHY_CFG_CMD_ERR_CODE_UNKNOWN       0x0UL
3959441cabbbSMichael Chan 	#define PORT_PHY_CFG_CMD_ERR_CODE_ILLEGAL_SPEED 0x1UL
396031d357c0SMichael Chan 	#define PORT_PHY_CFG_CMD_ERR_CODE_RETRY         0x2UL
3961441cabbbSMichael Chan 	#define PORT_PHY_CFG_CMD_ERR_CODE_LAST         PORT_PHY_CFG_CMD_ERR_CODE_RETRY
3962894aa69aSMichael Chan 	u8	unused_0[7];
3963acb20054SMichael Chan };
3964acb20054SMichael Chan 
3965acb20054SMichael Chan /* hwrm_port_phy_qcfg_input (size:192b/24B) */
3966894aa69aSMichael 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;
3973c0c050c5SMichael Chan 	u8	unused_0[6];
3974c0c050c5SMichael Chan };
3975c0c050c5SMichael Chan 
3976c0c050c5SMichael 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;
398211f15ed3SMichael Chan 	u8	link;
398311f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_NO_LINK 0x0UL
398411f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_SIGNAL  0x1UL
3985c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_LINK    0x2UL
3986441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_LAST   PORT_PHY_QCFG_RESP_LINK_LINK
3987441cabbbSMichael Chan 	u8	active_fec_signal_mode;
3988441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_SIGNAL_MODE_MASK                0xfUL
3989441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_SIGNAL_MODE_SFT                 0
3990441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_SIGNAL_MODE_NRZ                   0x0UL
3991441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_SIGNAL_MODE_PAM4                  0x1UL
3992441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_SIGNAL_MODE_LAST                 PORT_PHY_QCFG_RESP_SIGNAL_MODE_PAM4
3993441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_ACTIVE_FEC_MASK                 0xf0UL
3994441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_ACTIVE_FEC_SFT                  4
3995441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_ACTIVE_FEC_FEC_NONE_ACTIVE        (0x0UL << 4)
3996441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_ACTIVE_FEC_FEC_CLAUSE74_ACTIVE    (0x1UL << 4)
3997894aa69aSMichael Chan 	#define PORT_PHY_QCFG_RESP_ACTIVE_FEC_FEC_CLAUSE91_ACTIVE    (0x2UL << 4)
3998c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_ACTIVE_FEC_FEC_RS544_1XN_ACTIVE   (0x3UL << 4)
3999441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_ACTIVE_FEC_FEC_RS544_IEEE_ACTIVE  (0x4UL << 4)
4000441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_ACTIVE_FEC_FEC_RS272_1XN_ACTIVE   (0x5UL << 4)
4001441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_ACTIVE_FEC_FEC_RS272_IEEE_ACTIVE  (0x6UL << 4)
4002441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_ACTIVE_FEC_LAST                  PORT_PHY_QCFG_RESP_ACTIVE_FEC_FEC_RS272_IEEE_ACTIVE
4003441cabbbSMichael Chan 	__le16	link_speed;
4004894aa69aSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_SPEED_100MB 0x1UL
4005c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_SPEED_1GB   0xaUL
4006c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_SPEED_2GB   0x14UL
4007c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_SPEED_2_5GB 0x19UL
400811f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_SPEED_10GB  0x64UL
4009c0c050c5SMichael 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
4014441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_SPEED_200GB 0x7d0UL
4015441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_SPEED_10MB  0xffffUL
4016441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_SPEED_LAST PORT_PHY_QCFG_RESP_LINK_SPEED_10MB
4017441cabbbSMichael Chan 	u8	duplex_cfg;
4018441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_DUPLEX_CFG_HALF 0x0UL
4019441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_DUPLEX_CFG_FULL 0x1UL
4020441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_DUPLEX_CFG_LAST PORT_PHY_QCFG_RESP_DUPLEX_CFG_FULL
4021894aa69aSMichael 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
403411f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_40GB        0x200UL
403511f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_50GB        0x400UL
403611f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_100GB       0x800UL
4037c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_10MBHD      0x1000UL
4038441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_10MB        0x2000UL
4039441cabbbSMichael Chan 	__le16	force_link_speed;
4040894aa69aSMichael Chan 	#define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_100MB 0x1UL
4041c0c050c5SMichael 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
40456fc92c33SMichael Chan 	#define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_20GB  0xc8UL
40466fc92c33SMichael Chan 	#define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_25GB  0xfaUL
4047c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_40GB  0x190UL
4048c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_50GB  0x1f4UL
4049c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_100GB 0x3e8UL
405011f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_10MB  0xffffUL
4051441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_LAST PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_10MB
4052441cabbbSMichael 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
405641136ab3SMichael 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
4062c0c050c5SMichael 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
4075bac9a7e0SMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_LAST PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_10MB
4076bac9a7e0SMichael Chan 	__le16	auto_link_speed_mask;
4077bac9a7e0SMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_100MBHD     0x1UL
4078bac9a7e0SMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_100MB       0x2UL
4079bac9a7e0SMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_1GBHD       0x4UL
4080bac9a7e0SMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_1GB         0x8UL
4081bac9a7e0SMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_2GB         0x10UL
4082bac9a7e0SMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_2_5GB       0x20UL
4083bac9a7e0SMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_10GB        0x40UL
4084bac9a7e0SMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_20GB        0x80UL
4085bac9a7e0SMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_25GB        0x100UL
4086bac9a7e0SMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_40GB        0x200UL
4087bac9a7e0SMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_50GB        0x400UL
4088bac9a7e0SMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_100GB       0x800UL
4089acb20054SMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_10MBHD      0x1000UL
4090acb20054SMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_10MB        0x2000UL
4091acb20054SMichael Chan 	u8	wirespeed;
409231d357c0SMichael Chan 	#define PORT_PHY_QCFG_RESP_WIRESPEED_OFF 0x0UL
409331d357c0SMichael Chan 	#define PORT_PHY_QCFG_RESP_WIRESPEED_ON  0x1UL
409431d357c0SMichael Chan 	#define PORT_PHY_QCFG_RESP_WIRESPEED_LAST PORT_PHY_QCFG_RESP_WIRESPEED_ON
409531d357c0SMichael Chan 	u8	lpbk;
409621e70778SMichael Chan 	#define PORT_PHY_QCFG_RESP_LPBK_NONE     0x0UL
409721e70778SMichael Chan 	#define PORT_PHY_QCFG_RESP_LPBK_LOCAL    0x1UL
409821e70778SMichael Chan 	#define PORT_PHY_QCFG_RESP_LPBK_REMOTE   0x2UL
409921e70778SMichael Chan 	#define PORT_PHY_QCFG_RESP_LPBK_EXTERNAL 0x3UL
410021e70778SMichael Chan 	#define PORT_PHY_QCFG_RESP_LPBK_LAST    PORT_PHY_QCFG_RESP_LPBK_EXTERNAL
410121e70778SMichael Chan 	u8	force_pause;
410221e70778SMichael Chan 	#define PORT_PHY_QCFG_RESP_FORCE_PAUSE_TX     0x1UL
410321e70778SMichael Chan 	#define PORT_PHY_QCFG_RESP_FORCE_PAUSE_RX     0x2UL
410421e70778SMichael Chan 	u8	module_status;
4105c0c050c5SMichael 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
4110894aa69aSMichael Chan 	#define PORT_PHY_QCFG_RESP_MODULE_STATUS_CURRENTFAULT  0x5UL
411111f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_MODULE_STATUS_NOTAPPLICABLE 0xffUL
4112441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_MODULE_STATUS_LAST         PORT_PHY_QCFG_RESP_MODULE_STATUS_NOTAPPLICABLE
4113441cabbbSMichael Chan 	__le32	preemphasis;
4114894aa69aSMichael Chan 	u8	phy_maj;
411511f15ed3SMichael Chan 	u8	phy_min;
4116c0c050c5SMichael Chan 	u8	phy_bld;
4117c0c050c5SMichael Chan 	u8	phy_type;
4118894aa69aSMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_UNKNOWN          0x0UL
4119894aa69aSMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_BASECR           0x1UL
412011f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_BASEKR4          0x2UL
412111f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_BASELR           0x3UL
412211f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_BASESR           0x4UL
412311f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_BASEKR2          0x5UL
412411f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_BASEKX           0x6UL
4125c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_BASEKR           0x7UL
4126c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_BASET            0x8UL
4127c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_BASETE           0x9UL
4128c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_SGMIIEXTPHY      0xaUL
4129c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_25G_BASECR_CA_L  0xbUL
4130c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_25G_BASECR_CA_S  0xcUL
4131c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_25G_BASECR_CA_N  0xdUL
4132c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_25G_BASESR       0xeUL
4133c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_100G_BASECR4     0xfUL
4134c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_100G_BASESR4     0x10UL
4135c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_100G_BASELR4     0x11UL
4136c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_100G_BASEER4     0x12UL
413711f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_100G_BASESR10    0x13UL
413811f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_40G_BASECR4      0x14UL
413911f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_40G_BASESR4      0x15UL
4140c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_40G_BASELR4      0x16UL
4141441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_40G_BASEER4      0x17UL
4142441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_40G_ACTIVE_CABLE 0x18UL
4143441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_1G_BASET         0x19UL
4144441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_1G_BASESX        0x1aUL
4145441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_1G_BASECX        0x1bUL
4146894aa69aSMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_200G_BASECR4     0x1cUL
4147c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_200G_BASESR4     0x1dUL
4148c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_200G_BASELR4     0x1eUL
4149c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_200G_BASEER4     0x1fUL
415011f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_50G_BASECR       0x20UL
415111f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_50G_BASESR       0x21UL
415211f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_50G_BASELR       0x22UL
415311f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_50G_BASEER       0x23UL
415411f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_100G_BASECR2     0x24UL
415511f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_100G_BASESR2     0x25UL
415611f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_100G_BASELR2     0x26UL
415711f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_100G_BASEER2     0x27UL
415811f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_TYPE_LAST            PORT_PHY_QCFG_RESP_PHY_TYPE_100G_BASEER2
415911f15ed3SMichael Chan 	u8	media_type;
416011f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_MEDIA_TYPE_UNKNOWN 0x0UL
416111f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_MEDIA_TYPE_TP      0x1UL
416211f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_MEDIA_TYPE_DAC     0x2UL
416311f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_MEDIA_TYPE_FIBRE   0x3UL
416411f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_MEDIA_TYPE_LAST   PORT_PHY_QCFG_RESP_MEDIA_TYPE_FIBRE
416511f15ed3SMichael Chan 	u8	xcvr_pkg_type;
416611f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_XCVR_PKG_TYPE_XCVR_INTERNAL 0x1UL
416711f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_XCVR_PKG_TYPE_XCVR_EXTERNAL 0x2UL
416811f15ed3SMichael 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;
417011f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_ADDR_MASK              0x1fUL
417111f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_PHY_ADDR_SFT               0
417211f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_EEE_CONFIG_MASK            0xe0UL
417311f15ed3SMichael 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
4176894aa69aSMichael Chan 	#define PORT_PHY_QCFG_RESP_EEE_CONFIG_EEE_TX_LPI       0x80UL
4177a58a3e68SMichael Chan 	u8	parallel_detect;
4178a58a3e68SMichael Chan 	#define PORT_PHY_QCFG_RESP_PARALLEL_DETECT     0x1UL
4179a58a3e68SMichael Chan 	__le16	link_partner_adv_speeds;
4180a58a3e68SMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_100MBHD     0x1UL
4181a58a3e68SMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_100MB       0x2UL
4182a58a3e68SMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_1GBHD       0x4UL
4183a58a3e68SMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_1GB         0x8UL
4184a58a3e68SMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_2GB         0x10UL
4185bfc6e5fbSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_2_5GB       0x20UL
4186bfc6e5fbSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_10GB        0x40UL
41879d6b648cSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_20GB        0x80UL
41889d6b648cSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_25GB        0x100UL
41899d6b648cSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_40GB        0x200UL
41909d6b648cSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_50GB        0x400UL
41919d6b648cSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_100GB       0x800UL
41929d6b648cSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_10MBHD      0x1000UL
4193acb20054SMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_10MB        0x2000UL
4194acb20054SMichael Chan 	u8	link_partner_adv_auto_mode;
4195acb20054SMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_NONE         0x0UL
4196894aa69aSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_ALL_SPEEDS   0x1UL
4197894aa69aSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_ONE_SPEED    0x2UL
4198894aa69aSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_ONE_OR_BELOW 0x3UL
419916db6323SMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_SPEED_MASK   0x4UL
420011f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_LAST        PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_SPEED_MASK
420111f15ed3SMichael Chan 	u8	link_partner_adv_pause;
4202bfc6e5fbSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_PAUSE_TX     0x1UL
4203bfc6e5fbSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_PAUSE_RX     0x2UL
4204bfc6e5fbSMichael Chan 	__le16	adv_eee_link_speed_mask;
4205bfc6e5fbSMichael Chan 	#define PORT_PHY_QCFG_RESP_ADV_EEE_LINK_SPEED_MASK_RSVD1     0x1UL
4206bfc6e5fbSMichael Chan 	#define PORT_PHY_QCFG_RESP_ADV_EEE_LINK_SPEED_MASK_100MB     0x2UL
4207bfc6e5fbSMichael Chan 	#define PORT_PHY_QCFG_RESP_ADV_EEE_LINK_SPEED_MASK_RSVD2     0x4UL
4208bfc6e5fbSMichael Chan 	#define PORT_PHY_QCFG_RESP_ADV_EEE_LINK_SPEED_MASK_1GB       0x8UL
4209bfc6e5fbSMichael Chan 	#define PORT_PHY_QCFG_RESP_ADV_EEE_LINK_SPEED_MASK_RSVD3     0x10UL
4210bfc6e5fbSMichael Chan 	#define PORT_PHY_QCFG_RESP_ADV_EEE_LINK_SPEED_MASK_RSVD4     0x20UL
4211bfc6e5fbSMichael Chan 	#define PORT_PHY_QCFG_RESP_ADV_EEE_LINK_SPEED_MASK_10GB      0x40UL
4212bfc6e5fbSMichael Chan 	__le16	link_partner_adv_eee_link_speed_mask;
4213bfc6e5fbSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_EEE_LINK_SPEED_MASK_RSVD1     0x1UL
4214bfc6e5fbSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_EEE_LINK_SPEED_MASK_100MB     0x2UL
42159d6b648cSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_EEE_LINK_SPEED_MASK_RSVD2     0x4UL
4216bfc6e5fbSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_EEE_LINK_SPEED_MASK_1GB       0x8UL
4217bfc6e5fbSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_EEE_LINK_SPEED_MASK_RSVD3     0x10UL
4218bfc6e5fbSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_EEE_LINK_SPEED_MASK_RSVD4     0x20UL
421984a911dbSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_EEE_LINK_SPEED_MASK_10GB      0x40UL
422084a911dbSMichael Chan 	__le32	xcvr_identifier_type_tx_lpi_timer;
422184a911dbSMichael Chan 	#define PORT_PHY_QCFG_RESP_TX_LPI_TIMER_MASK            0xffffffUL
4222c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_TX_LPI_TIMER_SFT             0
4223c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_XCVR_IDENTIFIER_TYPE_MASK    0xff000000UL
4224c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_XCVR_IDENTIFIER_TYPE_SFT     24
42252895c153SMichael Chan 	#define PORT_PHY_QCFG_RESP_XCVR_IDENTIFIER_TYPE_UNKNOWN   (0x0UL << 24)
4226c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_XCVR_IDENTIFIER_TYPE_SFP       (0x3UL << 24)
4227c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_XCVR_IDENTIFIER_TYPE_QSFP      (0xcUL << 24)
4228c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_XCVR_IDENTIFIER_TYPE_QSFPPLUS  (0xdUL << 24)
4229c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_XCVR_IDENTIFIER_TYPE_QSFP28    (0x11UL << 24)
4230c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_XCVR_IDENTIFIER_TYPE_LAST     PORT_PHY_QCFG_RESP_XCVR_IDENTIFIER_TYPE_QSFP28
4231c0c050c5SMichael Chan 	__le16	fec_cfg;
4232c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_NONE_SUPPORTED           0x1UL
4233c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_AUTONEG_SUPPORTED        0x2UL
4234441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_AUTONEG_ENABLED          0x4UL
4235c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_CLAUSE74_SUPPORTED       0x8UL
4236c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_CLAUSE74_ENABLED         0x10UL
423711f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_CLAUSE91_SUPPORTED       0x20UL
423811f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_CLAUSE91_ENABLED         0x40UL
423911f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_RS544_1XN_SUPPORTED      0x80UL
424011f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_RS544_1XN_ENABLED        0x100UL
4241a58a3e68SMichael Chan 	#define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_RS544_IEEE_SUPPORTED     0x200UL
4242a58a3e68SMichael Chan 	#define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_RS544_IEEE_ENABLED       0x400UL
4243441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_RS272_1XN_SUPPORTED      0x800UL
4244441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_RS272_1XN_ENABLED        0x1000UL
4245441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_RS272_IEEE_SUPPORTED     0x2000UL
42464a50ddc2SMichael Chan 	#define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_RS272_IEEE_ENABLED       0x4000UL
4247ad04cc05SMichael Chan 	u8	duplex_state;
4248ad04cc05SMichael Chan 	#define PORT_PHY_QCFG_RESP_DUPLEX_STATE_HALF 0x0UL
4249c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_DUPLEX_STATE_FULL 0x1UL
4250c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_DUPLEX_STATE_LAST PORT_PHY_QCFG_RESP_DUPLEX_STATE_FULL
4251c0c050c5SMichael Chan 	u8	option_flags;
4252441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_OPTION_FLAGS_MEDIA_AUTO_DETECT     0x1UL
4253c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_OPTION_FLAGS_SIGNAL_MODE_KNOWN     0x2UL
4254c0c050c5SMichael Chan 	char	phy_vendor_name[16];
425511f15ed3SMichael Chan 	char	phy_vendor_partnumber[16];
425611f15ed3SMichael Chan 	__le16	support_pam4_speeds;
4257441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_SUPPORT_PAM4_SPEEDS_50G      0x1UL
42584a50ddc2SMichael Chan 	#define PORT_PHY_QCFG_RESP_SUPPORT_PAM4_SPEEDS_100G     0x2UL
425978eeadb8SMichael Chan 	#define PORT_PHY_QCFG_RESP_SUPPORT_PAM4_SPEEDS_200G     0x4UL
4260c0c050c5SMichael Chan 	__le16	force_pam4_link_speed;
4261c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_FORCE_PAM4_LINK_SPEED_50GB  0x1f4UL
4262c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_FORCE_PAM4_LINK_SPEED_100GB 0x3e8UL
4263441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_FORCE_PAM4_LINK_SPEED_200GB 0x7d0UL
4264441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_FORCE_PAM4_LINK_SPEED_LAST PORT_PHY_QCFG_RESP_FORCE_PAM4_LINK_SPEED_200GB
4265441cabbbSMichael Chan 	__le16	auto_pam4_link_speed_mask;
4266894aa69aSMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_PAM4_LINK_SPEED_MASK_50G      0x1UL
4267441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_PAM4_LINK_SPEED_MASK_100G     0x2UL
4268441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_AUTO_PAM4_LINK_SPEED_MASK_200G     0x4UL
4269c0c050c5SMichael Chan 	u8	link_partner_pam4_adv_speeds;
4270c0c050c5SMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_PAM4_ADV_SPEEDS_50GB      0x1UL
427111f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_PAM4_ADV_SPEEDS_100GB     0x2UL
427211f15ed3SMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_PARTNER_PAM4_ADV_SPEEDS_200GB     0x4UL
4273441cabbbSMichael Chan 	u8	link_down_reason;
4274441cabbbSMichael Chan 	#define PORT_PHY_QCFG_RESP_LINK_DOWN_REASON_RF     0x1UL
4275441cabbbSMichael Chan 	u8	unused_0[7];
4276441cabbbSMichael Chan 	u8	valid;
4277441cabbbSMichael Chan };
4278441cabbbSMichael Chan 
4279441cabbbSMichael Chan /* hwrm_port_mac_cfg_input (size:448b/56B) */
4280441cabbbSMichael Chan struct hwrm_port_mac_cfg_input {
4281441cabbbSMichael Chan 	__le16	req_type;
4282441cabbbSMichael Chan 	__le16	cmpl_ring;
4283441cabbbSMichael Chan 	__le16	seq_id;
4284441cabbbSMichael Chan 	__le16	target_id;
4285441cabbbSMichael Chan 	__le64	resp_addr;
4286441cabbbSMichael Chan 	__le32	flags;
4287441cabbbSMichael Chan 	#define PORT_MAC_CFG_REQ_FLAGS_MATCH_LINK                    0x1UL
4288441cabbbSMichael Chan 	#define PORT_MAC_CFG_REQ_FLAGS_VLAN_PRI2COS_ENABLE           0x2UL
4289441cabbbSMichael Chan 	#define PORT_MAC_CFG_REQ_FLAGS_TUNNEL_PRI2COS_ENABLE         0x4UL
4290441cabbbSMichael Chan 	#define PORT_MAC_CFG_REQ_FLAGS_IP_DSCP2COS_ENABLE            0x8UL
4291441cabbbSMichael Chan 	#define PORT_MAC_CFG_REQ_FLAGS_PTP_RX_TS_CAPTURE_ENABLE      0x10UL
429278eeadb8SMichael Chan 	#define PORT_MAC_CFG_REQ_FLAGS_PTP_RX_TS_CAPTURE_DISABLE     0x20UL
42932895c153SMichael Chan 	#define PORT_MAC_CFG_REQ_FLAGS_PTP_TX_TS_CAPTURE_ENABLE      0x40UL
42942895c153SMichael Chan 	#define PORT_MAC_CFG_REQ_FLAGS_PTP_TX_TS_CAPTURE_DISABLE     0x80UL
4295c0c050c5SMichael Chan 	#define PORT_MAC_CFG_REQ_FLAGS_OOB_WOL_ENABLE                0x100UL
4296c0c050c5SMichael Chan 	#define PORT_MAC_CFG_REQ_FLAGS_OOB_WOL_DISABLE               0x200UL
4297894aa69aSMichael Chan 	#define PORT_MAC_CFG_REQ_FLAGS_VLAN_PRI2COS_DISABLE          0x400UL
4298c0c050c5SMichael Chan 	#define PORT_MAC_CFG_REQ_FLAGS_TUNNEL_PRI2COS_DISABLE        0x800UL
4299c0c050c5SMichael Chan 	#define PORT_MAC_CFG_REQ_FLAGS_IP_DSCP2COS_DISABLE           0x1000UL
4300c0c050c5SMichael Chan 	#define PORT_MAC_CFG_REQ_FLAGS_PTP_ONE_STEP_TX_TS            0x2000UL
4301c0c050c5SMichael Chan 	#define PORT_MAC_CFG_REQ_FLAGS_ALL_RX_TS_CAPTURE_ENABLE      0x4000UL
4302c0c050c5SMichael 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
4306c0c050c5SMichael Chan 	#define PORT_MAC_CFG_REQ_ENABLES_VLAN_PRI2COS_MAP_PRI           0x4UL
4307441cabbbSMichael Chan 	#define PORT_MAC_CFG_REQ_ENABLES_TUNNEL_PRI2COS_MAP_PRI         0x10UL
4308441cabbbSMichael Chan 	#define PORT_MAC_CFG_REQ_ENABLES_DSCP2COS_MAP_PRI               0x20UL
4309441cabbbSMichael Chan 	#define PORT_MAC_CFG_REQ_ENABLES_RX_TS_CAPTURE_PTP_MSG_TYPE     0x40UL
4310894aa69aSMichael Chan 	#define PORT_MAC_CFG_REQ_ENABLES_TX_TS_CAPTURE_PTP_MSG_TYPE     0x80UL
4311c0c050c5SMichael Chan 	#define PORT_MAC_CFG_REQ_ENABLES_COS_FIELD_CFG                  0x100UL
4312c0c050c5SMichael Chan 	#define PORT_MAC_CFG_REQ_ENABLES_PTP_FREQ_ADJ_PPB               0x200UL
4313c0c050c5SMichael Chan 	#define PORT_MAC_CFG_REQ_ENABLES_PTP_ADJ_PHASE                  0x400UL
4314c0c050c5SMichael Chan 	__le16	port_id;
4315894aa69aSMichael Chan 	u8	ipg;
4316acb20054SMichael Chan 	u8	lpbk;
4317acb20054SMichael Chan 	#define PORT_MAC_CFG_REQ_LPBK_NONE   0x0UL
4318acb20054SMichael Chan 	#define PORT_MAC_CFG_REQ_LPBK_LOCAL  0x1UL
4319acb20054SMichael Chan 	#define PORT_MAC_CFG_REQ_LPBK_REMOTE 0x2UL
4320acb20054SMichael Chan 	#define PORT_MAC_CFG_REQ_LPBK_LAST  PORT_MAC_CFG_REQ_LPBK_REMOTE
4321acb20054SMichael Chan 	u8	vlan_pri2cos_map_pri;
4322acb20054SMichael Chan 	u8	reserved1;
4323894aa69aSMichael Chan 	u8	tunnel_pri2cos_map_pri;
4324acb20054SMichael Chan 	u8	dscp2pri_map_pri;
4325acb20054SMichael Chan 	__le16	rx_ts_capture_ptp_msg_type;
432678eeadb8SMichael Chan 	__le16	tx_ts_capture_ptp_msg_type;
4327acb20054SMichael Chan 	u8	cos_field_cfg;
4328acb20054SMichael Chan 	#define PORT_MAC_CFG_REQ_COS_FIELD_CFG_RSVD1                     0x1UL
4329acb20054SMichael Chan 	#define PORT_MAC_CFG_REQ_COS_FIELD_CFG_VLAN_PRI_SEL_MASK         0x6UL
4330acb20054SMichael Chan 	#define PORT_MAC_CFG_REQ_COS_FIELD_CFG_VLAN_PRI_SEL_SFT          1
4331acb20054SMichael Chan 	#define PORT_MAC_CFG_REQ_COS_FIELD_CFG_VLAN_PRI_SEL_INNERMOST      (0x0UL << 1)
4332acb20054SMichael Chan 	#define PORT_MAC_CFG_REQ_COS_FIELD_CFG_VLAN_PRI_SEL_OUTER          (0x1UL << 1)
4333acb20054SMichael Chan 	#define PORT_MAC_CFG_REQ_COS_FIELD_CFG_VLAN_PRI_SEL_OUTERMOST      (0x2UL << 1)
43344a50ddc2SMichael Chan 	#define PORT_MAC_CFG_REQ_COS_FIELD_CFG_VLAN_PRI_SEL_UNSPECIFIED    (0x3UL << 1)
433541136ab3SMichael Chan 	#define PORT_MAC_CFG_REQ_COS_FIELD_CFG_VLAN_PRI_SEL_LAST          PORT_MAC_CFG_REQ_COS_FIELD_CFG_VLAN_PRI_SEL_UNSPECIFIED
433678eeadb8SMichael Chan 	#define PORT_MAC_CFG_REQ_COS_FIELD_CFG_T_VLAN_PRI_SEL_MASK       0x18UL
43372895c153SMichael Chan 	#define PORT_MAC_CFG_REQ_COS_FIELD_CFG_T_VLAN_PRI_SEL_SFT        3
4338894aa69aSMichael Chan 	#define PORT_MAC_CFG_REQ_COS_FIELD_CFG_T_VLAN_PRI_SEL_INNERMOST    (0x0UL << 3)
4339acb20054SMichael Chan 	#define PORT_MAC_CFG_REQ_COS_FIELD_CFG_T_VLAN_PRI_SEL_OUTER        (0x1UL << 3)
4340acb20054SMichael Chan 	#define PORT_MAC_CFG_REQ_COS_FIELD_CFG_T_VLAN_PRI_SEL_OUTERMOST    (0x2UL << 3)
4341acb20054SMichael Chan 	#define PORT_MAC_CFG_REQ_COS_FIELD_CFG_T_VLAN_PRI_SEL_UNSPECIFIED  (0x3UL << 3)
4342acb20054SMichael 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
4343acb20054SMichael Chan 	#define PORT_MAC_CFG_REQ_COS_FIELD_CFG_DEFAULT_COS_MASK          0xe0UL
4344acb20054SMichael Chan 	#define PORT_MAC_CFG_REQ_COS_FIELD_CFG_DEFAULT_COS_SFT           5
4345acb20054SMichael Chan 	u8	unused_0[3];
4346acb20054SMichael Chan 	__le32	ptp_freq_adj_ppb;
4347acb20054SMichael Chan 	u8	unused_1[4];
4348acb20054SMichael Chan 	__le64	ptp_adj_phase;
4349acb20054SMichael Chan };
4350acb20054SMichael Chan 
4351acb20054SMichael Chan /* hwrm_port_mac_cfg_output (size:128b/16B) */
4352acb20054SMichael Chan struct hwrm_port_mac_cfg_output {
4353acb20054SMichael Chan 	__le16	error_code;
435478eeadb8SMichael Chan 	__le16	req_type;
435578eeadb8SMichael Chan 	__le16	seq_id;
4356894aa69aSMichael Chan 	__le16	resp_len;
4357acb20054SMichael Chan 	__le16	mru;
4358acb20054SMichael Chan 	__le16	mtu;
4359acb20054SMichael Chan 	u8	ipg;
43606fc92c33SMichael Chan 	u8	lpbk;
43616fc92c33SMichael Chan 	#define PORT_MAC_CFG_RESP_LPBK_NONE   0x0UL
43626fc92c33SMichael Chan 	#define PORT_MAC_CFG_RESP_LPBK_LOCAL  0x1UL
43636fc92c33SMichael Chan 	#define PORT_MAC_CFG_RESP_LPBK_REMOTE 0x2UL
43646fc92c33SMichael Chan 	#define PORT_MAC_CFG_RESP_LPBK_LAST  PORT_MAC_CFG_RESP_LPBK_REMOTE
43656fc92c33SMichael Chan 	u8	unused_0;
43666fc92c33SMichael Chan 	u8	valid;
43676fc92c33SMichael Chan };
43686fc92c33SMichael Chan 
43696fc92c33SMichael Chan /* hwrm_port_mac_ptp_qcfg_input (size:192b/24B) */
43706fc92c33SMichael Chan struct hwrm_port_mac_ptp_qcfg_input {
43716fc92c33SMichael Chan 	__le16	req_type;
43726fc92c33SMichael Chan 	__le16	cmpl_ring;
43736fc92c33SMichael Chan 	__le16	seq_id;
43746fc92c33SMichael Chan 	__le16	target_id;
43756fc92c33SMichael Chan 	__le64	resp_addr;
43766fc92c33SMichael Chan 	__le16	port_id;
43776fc92c33SMichael Chan 	u8	unused_0[6];
43786fc92c33SMichael Chan };
43796fc92c33SMichael Chan 
43806fc92c33SMichael Chan /* hwrm_port_mac_ptp_qcfg_output (size:704b/88B) */
43816fc92c33SMichael Chan struct hwrm_port_mac_ptp_qcfg_output {
43826fc92c33SMichael Chan 	__le16	error_code;
43836fc92c33SMichael Chan 	__le16	req_type;
43846fc92c33SMichael Chan 	__le16	seq_id;
43856fc92c33SMichael Chan 	__le16	resp_len;
43866fc92c33SMichael Chan 	u8	flags;
43876fc92c33SMichael Chan 	#define PORT_MAC_PTP_QCFG_RESP_FLAGS_DIRECT_ACCESS                       0x1UL
43886fc92c33SMichael Chan 	#define PORT_MAC_PTP_QCFG_RESP_FLAGS_ONE_STEP_TX_TS                      0x4UL
43896fc92c33SMichael Chan 	#define PORT_MAC_PTP_QCFG_RESP_FLAGS_HWRM_ACCESS                         0x8UL
43906fc92c33SMichael Chan 	#define PORT_MAC_PTP_QCFG_RESP_FLAGS_PARTIAL_DIRECT_ACCESS_REF_CLOCK     0x10UL
43916fc92c33SMichael Chan 	#define PORT_MAC_PTP_QCFG_RESP_FLAGS_RTC_CONFIGURED                      0x20UL
43926fc92c33SMichael Chan 	u8	unused_0[3];
43936fc92c33SMichael Chan 	__le32	rx_ts_reg_off_lower;
43946fc92c33SMichael Chan 	__le32	rx_ts_reg_off_upper;
43956fc92c33SMichael Chan 	__le32	rx_ts_reg_off_seq_id;
43966fc92c33SMichael Chan 	__le32	rx_ts_reg_off_src_id_0;
43976fc92c33SMichael Chan 	__le32	rx_ts_reg_off_src_id_1;
43986fc92c33SMichael Chan 	__le32	rx_ts_reg_off_src_id_2;
43996fc92c33SMichael Chan 	__le32	rx_ts_reg_off_domain_id;
44006fc92c33SMichael Chan 	__le32	rx_ts_reg_off_fifo;
44016fc92c33SMichael Chan 	__le32	rx_ts_reg_off_fifo_adv;
44026fc92c33SMichael Chan 	__le32	rx_ts_reg_off_granularity;
44036fc92c33SMichael Chan 	__le32	tx_ts_reg_off_lower;
44046fc92c33SMichael Chan 	__le32	tx_ts_reg_off_upper;
44056fc92c33SMichael Chan 	__le32	tx_ts_reg_off_seq_id;
44066fc92c33SMichael Chan 	__le32	tx_ts_reg_off_fifo;
44076fc92c33SMichael Chan 	__le32	tx_ts_reg_off_granularity;
44086fc92c33SMichael Chan 	__le32	ts_ref_clock_reg_lower;
44096fc92c33SMichael Chan 	__le32	ts_ref_clock_reg_upper;
44106fc92c33SMichael Chan 	u8	unused_1[7];
44116fc92c33SMichael Chan 	u8	valid;
44126fc92c33SMichael Chan };
44136fc92c33SMichael 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;
4485894aa69aSMichael Chan 	__le64	rx_bcast_frames;
4486c0c050c5SMichael Chan 	__le64	rx_fcs_err_frames;
4487c0c050c5SMichael Chan 	__le64	rx_ctrl_frames;
4488c0c050c5SMichael Chan 	__le64	rx_pause_frames;
4489c0c050c5SMichael Chan 	__le64	rx_pfc_frames;
4490c0c050c5SMichael Chan 	__le64	rx_unsupported_opcode_frames;
4491c0c050c5SMichael Chan 	__le64	rx_unsupported_da_pausepfc_frames;
4492c0c050c5SMichael Chan 	__le64	rx_wrong_sa_frames;
4493460c2577SMichael Chan 	__le64	rx_align_err_frames;
4494460c2577SMichael Chan 	__le64	rx_oor_len_frames;
4495460c2577SMichael Chan 	__le64	rx_code_err_frames;
4496c0c050c5SMichael Chan 	__le64	rx_false_carrier_frames;
4497c0c050c5SMichael Chan 	__le64	rx_ovrsz_frames;
4498c0c050c5SMichael Chan 	__le64	rx_jbr_frames;
4499c0c050c5SMichael Chan 	__le64	rx_mtu_err_frames;
4500894aa69aSMichael Chan 	__le64	rx_match_crc_frames;
4501c0c050c5SMichael Chan 	__le64	rx_promiscuous_frames;
4502c0c050c5SMichael Chan 	__le64	rx_tagged_frames;
4503c0c050c5SMichael Chan 	__le64	rx_double_tagged_frames;
4504c0c050c5SMichael Chan 	__le64	rx_trunc_frames;
4505c0c050c5SMichael Chan 	__le64	rx_good_frames;
4506c193554eSMichael Chan 	__le64	rx_pfc_xon2xoff_frames_pri0;
4507c193554eSMichael Chan 	__le64	rx_pfc_xon2xoff_frames_pri1;
4508894aa69aSMichael Chan 	__le64	rx_pfc_xon2xoff_frames_pri2;
4509c0c050c5SMichael Chan 	__le64	rx_pfc_xon2xoff_frames_pri3;
4510c0c050c5SMichael Chan 	__le64	rx_pfc_xon2xoff_frames_pri4;
4511c0c050c5SMichael 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 
45396fc92c33SMichael Chan /* hwrm_port_qstats_input (size:320b/40B) */
45406fc92c33SMichael Chan struct hwrm_port_qstats_input {
45416fc92c33SMichael Chan 	__le16	req_type;
45426fc92c33SMichael Chan 	__le16	cmpl_ring;
45436fc92c33SMichael Chan 	__le16	seq_id;
45446fc92c33SMichael Chan 	__le16	target_id;
45456fc92c33SMichael Chan 	__le64	resp_addr;
45466fc92c33SMichael Chan 	__le16	port_id;
45476fc92c33SMichael Chan 	u8	flags;
454821e70778SMichael Chan 	#define PORT_QSTATS_REQ_FLAGS_COUNTER_MASK     0x1UL
45496fc92c33SMichael Chan 	u8	unused_0[5];
45506fc92c33SMichael Chan 	__le64	tx_stat_host_addr;
45516fc92c33SMichael Chan 	__le64	rx_stat_host_addr;
45526fc92c33SMichael Chan };
45536fc92c33SMichael Chan 
45546fc92c33SMichael Chan /* hwrm_port_qstats_output (size:128b/16B) */
45556fc92c33SMichael Chan struct hwrm_port_qstats_output {
45566fc92c33SMichael Chan 	__le16	error_code;
45576fc92c33SMichael Chan 	__le16	req_type;
45586fc92c33SMichael Chan 	__le16	seq_id;
45596fc92c33SMichael Chan 	__le16	resp_len;
45606fc92c33SMichael Chan 	__le16	tx_stat_size;
45616fc92c33SMichael Chan 	__le16	rx_stat_size;
45626fc92c33SMichael Chan 	u8	unused_0[3];
45636fc92c33SMichael Chan 	u8	valid;
45646fc92c33SMichael Chan };
45656fc92c33SMichael 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;
45874a50ddc2SMichael Chan 	__le64	pfc_pri1_tx_transitions;
45884a50ddc2SMichael Chan 	__le64	pfc_pri2_tx_duration_us;
45894a50ddc2SMichael Chan 	__le64	pfc_pri2_tx_transitions;
45904a50ddc2SMichael Chan 	__le64	pfc_pri3_tx_duration_us;
45912792b5b9SMichael Chan 	__le64	pfc_pri3_tx_transitions;
45922792b5b9SMichael Chan 	__le64	pfc_pri4_tx_duration_us;
45932792b5b9SMichael Chan 	__le64	pfc_pri4_tx_transitions;
45942792b5b9SMichael Chan 	__le64	pfc_pri5_tx_duration_us;
45952792b5b9SMichael Chan 	__le64	pfc_pri5_tx_transitions;
45962792b5b9SMichael Chan 	__le64	pfc_pri6_tx_duration_us;
45972792b5b9SMichael Chan 	__le64	pfc_pri6_tx_transitions;
45982792b5b9SMichael Chan 	__le64	pfc_pri7_tx_duration_us;
45992792b5b9SMichael Chan 	__le64	pfc_pri7_tx_transitions;
46002792b5b9SMichael Chan };
46012792b5b9SMichael Chan 
46022792b5b9SMichael Chan /* rx_port_stats_ext (size:3776b/472B) */
46032792b5b9SMichael Chan struct rx_port_stats_ext {
46042792b5b9SMichael Chan 	__le64	link_down_events;
46052792b5b9SMichael Chan 	__le64	continuous_pause_events;
46062792b5b9SMichael Chan 	__le64	resume_pause_events;
460721e70778SMichael Chan 	__le64	continuous_roce_pause_events;
460821e70778SMichael Chan 	__le64	resume_roce_pause_events;
46096fc92c33SMichael Chan 	__le64	rx_bytes_cos0;
46106fc92c33SMichael Chan 	__le64	rx_bytes_cos1;
4611d4f52de0SMichael Chan 	__le64	rx_bytes_cos2;
4612d4f52de0SMichael Chan 	__le64	rx_bytes_cos3;
4613d4f52de0SMichael Chan 	__le64	rx_bytes_cos4;
4614d4f52de0SMichael Chan 	__le64	rx_bytes_cos5;
4615d4f52de0SMichael Chan 	__le64	rx_bytes_cos6;
4616d4f52de0SMichael Chan 	__le64	rx_bytes_cos7;
4617d4f52de0SMichael Chan 	__le64	rx_packets_cos0;
4618d4f52de0SMichael Chan 	__le64	rx_packets_cos1;
4619d4f52de0SMichael Chan 	__le64	rx_packets_cos2;
4620d4f52de0SMichael Chan 	__le64	rx_packets_cos3;
4621460c2577SMichael Chan 	__le64	rx_packets_cos4;
4622460c2577SMichael Chan 	__le64	rx_packets_cos5;
4623460c2577SMichael Chan 	__le64	rx_packets_cos6;
4624d4f52de0SMichael Chan 	__le64	rx_packets_cos7;
4625d4f52de0SMichael Chan 	__le64	pfc_pri0_rx_duration_us;
4626d4f52de0SMichael Chan 	__le64	pfc_pri0_rx_transitions;
4627d4f52de0SMichael Chan 	__le64	pfc_pri1_rx_duration_us;
4628d4f52de0SMichael Chan 	__le64	pfc_pri1_rx_transitions;
4629d4f52de0SMichael Chan 	__le64	pfc_pri2_rx_duration_us;
4630d4f52de0SMichael Chan 	__le64	pfc_pri2_rx_transitions;
4631d4f52de0SMichael Chan 	__le64	pfc_pri3_rx_duration_us;
4632d4f52de0SMichael Chan 	__le64	pfc_pri3_rx_transitions;
4633d4f52de0SMichael Chan 	__le64	pfc_pri4_rx_duration_us;
4634d4f52de0SMichael Chan 	__le64	pfc_pri4_rx_transitions;
4635d4f52de0SMichael Chan 	__le64	pfc_pri5_rx_duration_us;
46366fc92c33SMichael Chan 	__le64	pfc_pri5_rx_transitions;
463731d357c0SMichael Chan 	__le64	pfc_pri6_rx_duration_us;
463831d357c0SMichael Chan 	__le64	pfc_pri6_rx_transitions;
4639d4f52de0SMichael Chan 	__le64	pfc_pri7_rx_duration_us;
4640d4f52de0SMichael Chan 	__le64	pfc_pri7_rx_transitions;
4641d4f52de0SMichael Chan 	__le64	rx_bits;
4642894aa69aSMichael Chan 	__le64	rx_buffer_passed_threshold;
4643c0c050c5SMichael Chan 	__le64	rx_pcs_symbol_err;
4644c0c050c5SMichael Chan 	__le64	rx_corrected_bits;
4645c0c050c5SMichael Chan 	__le64	rx_discard_bytes_cos0;
4646c0c050c5SMichael Chan 	__le64	rx_discard_bytes_cos1;
4647c0c050c5SMichael Chan 	__le64	rx_discard_bytes_cos2;
4648c0c050c5SMichael Chan 	__le64	rx_discard_bytes_cos3;
4649c0c050c5SMichael Chan 	__le64	rx_discard_bytes_cos4;
4650c0c050c5SMichael Chan 	__le64	rx_discard_bytes_cos5;
4651894aa69aSMichael Chan 	__le64	rx_discard_bytes_cos6;
4652c0c050c5SMichael Chan 	__le64	rx_discard_bytes_cos7;
4653c0c050c5SMichael Chan 	__le64	rx_discard_packets_cos0;
4654c0c050c5SMichael Chan 	__le64	rx_discard_packets_cos1;
4655c0c050c5SMichael Chan 	__le64	rx_discard_packets_cos2;
4656c0c050c5SMichael Chan 	__le64	rx_discard_packets_cos3;
4657c0c050c5SMichael Chan 	__le64	rx_discard_packets_cos4;
4658c0c050c5SMichael Chan 	__le64	rx_discard_packets_cos5;
4659c0c050c5SMichael Chan 	__le64	rx_discard_packets_cos6;
4660c0c050c5SMichael Chan 	__le64	rx_discard_packets_cos7;
4661c0c050c5SMichael Chan 	__le64	rx_fec_corrected_blocks;
4662c0c050c5SMichael Chan 	__le64	rx_fec_uncorrectable_blocks;
4663c193554eSMichael Chan };
4664c193554eSMichael Chan 
4665c193554eSMichael Chan /* hwrm_port_qstats_ext_input (size:320b/40B) */
4666c193554eSMichael Chan struct hwrm_port_qstats_ext_input {
4667894aa69aSMichael Chan 	__le16	req_type;
4668c0c050c5SMichael Chan 	__le16	cmpl_ring;
4669c0c050c5SMichael Chan 	__le16	seq_id;
4670c0c050c5SMichael Chan 	__le16	target_id;
46719d6b648cSMichael Chan 	__le64	resp_addr;
46729d6b648cSMichael Chan 	__le16	port_id;
46739d6b648cSMichael Chan 	__le16	tx_stat_size;
46749d6b648cSMichael Chan 	__le16	rx_stat_size;
46759d6b648cSMichael Chan 	u8	flags;
46769d6b648cSMichael Chan 	#define PORT_QSTATS_EXT_REQ_FLAGS_COUNTER_MASK     0x1UL
46779d6b648cSMichael Chan 	u8	unused_0;
46789d6b648cSMichael Chan 	__le64	tx_stat_host_addr;
46799d6b648cSMichael Chan 	__le64	rx_stat_host_addr;
46809d6b648cSMichael Chan };
46819d6b648cSMichael Chan 
46829d6b648cSMichael Chan /* hwrm_port_qstats_ext_output (size:128b/16B) */
46839d6b648cSMichael Chan struct hwrm_port_qstats_ext_output {
46849d6b648cSMichael Chan 	__le16	error_code;
46859d6b648cSMichael Chan 	__le16	req_type;
46869d6b648cSMichael Chan 	__le16	seq_id;
46879d6b648cSMichael Chan 	__le16	resp_len;
46889d6b648cSMichael Chan 	__le16	tx_stat_size;
46899d6b648cSMichael Chan 	__le16	rx_stat_size;
46909d6b648cSMichael Chan 	__le16	total_active_cos_queues;
46919d6b648cSMichael Chan 	u8	flags;
46929d6b648cSMichael Chan 	#define PORT_QSTATS_EXT_RESP_FLAGS_CLEAR_ROCE_COUNTERS_SUPPORTED     0x1UL
46939d6b648cSMichael Chan 	u8	valid;
46949d6b648cSMichael Chan };
46959d6b648cSMichael Chan 
46969d6b648cSMichael Chan /* hwrm_port_lpbk_qstats_input (size:128b/16B) */
46979d6b648cSMichael Chan struct hwrm_port_lpbk_qstats_input {
46989d6b648cSMichael Chan 	__le16	req_type;
46999d6b648cSMichael Chan 	__le16	cmpl_ring;
47009d6b648cSMichael Chan 	__le16	seq_id;
47019d6b648cSMichael Chan 	__le16	target_id;
47029d6b648cSMichael Chan 	__le64	resp_addr;
47039d6b648cSMichael Chan };
47049d6b648cSMichael Chan 
47059d6b648cSMichael Chan /* hwrm_port_lpbk_qstats_output (size:768b/96B) */
47069d6b648cSMichael Chan struct hwrm_port_lpbk_qstats_output {
47079d6b648cSMichael Chan 	__le16	error_code;
47089d6b648cSMichael Chan 	__le16	req_type;
47099d6b648cSMichael Chan 	__le16	seq_id;
4710894aa69aSMichael 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;
4717c0c050c5SMichael Chan 	__le64	tx_stat_discard;
471831d357c0SMichael Chan 	__le64	tx_stat_error;
471931d357c0SMichael Chan 	__le64	rx_stat_discard;
472031d357c0SMichael Chan 	__le64	rx_stat_error;
4721c0c050c5SMichael Chan 	u8	unused_0[7];
4722c0c050c5SMichael Chan 	u8	valid;
4723894aa69aSMichael Chan };
4724c0c050c5SMichael Chan 
4725c0c050c5SMichael Chan /* hwrm_port_ecn_qstats_input (size:256b/32B) */
4726c0c050c5SMichael Chan struct hwrm_port_ecn_qstats_input {
4727c0c050c5SMichael Chan 	__le16	req_type;
4728c0c050c5SMichael Chan 	__le16	cmpl_ring;
4729894aa69aSMichael Chan 	__le16	seq_id;
4730c0c050c5SMichael Chan 	__le16	target_id;
4731c0c050c5SMichael Chan 	__le64	resp_addr;
4732c0c050c5SMichael Chan 	__le16	port_id;
4733894aa69aSMichael Chan 	__le16	ecn_stat_buf_size;
4734c0c050c5SMichael Chan 	u8	flags;
4735c0c050c5SMichael Chan 	#define PORT_ECN_QSTATS_REQ_FLAGS_COUNTER_MASK     0x1UL
4736c0c050c5SMichael Chan 	u8	unused_0[3];
4737c0c050c5SMichael Chan 	__le64	ecn_stat_host_addr;
4738c0c050c5SMichael Chan };
4739c0c050c5SMichael Chan 
4740c0c050c5SMichael Chan /* hwrm_port_ecn_qstats_output (size:128b/16B) */
4741c0c050c5SMichael Chan struct hwrm_port_ecn_qstats_output {
4742894aa69aSMichael Chan 	__le16	error_code;
4743c0c050c5SMichael Chan 	__le16	req_type;
4744c0c050c5SMichael Chan 	__le16	seq_id;
4745c0c050c5SMichael Chan 	__le16	resp_len;
4746c0c050c5SMichael Chan 	__le16	ecn_stat_buf_size;
4747c0c050c5SMichael Chan 	u8	mark_en;
4748894aa69aSMichael Chan 	u8	unused_0[4];
4749c0c050c5SMichael Chan 	u8	valid;
4750c0c050c5SMichael Chan };
4751c0c050c5SMichael Chan 
4752fbfee257SMichael Chan /* port_stats_ecn (size:512b/64B) */
47534a50ddc2SMichael Chan struct port_stats_ecn {
47544a50ddc2SMichael Chan 	__le64	mark_cnt_cos0;
47554a50ddc2SMichael Chan 	__le64	mark_cnt_cos1;
47564a50ddc2SMichael Chan 	__le64	mark_cnt_cos2;
47574a50ddc2SMichael Chan 	__le64	mark_cnt_cos3;
47584a50ddc2SMichael Chan 	__le64	mark_cnt_cos4;
47594a50ddc2SMichael Chan 	__le64	mark_cnt_cos5;
47604a50ddc2SMichael Chan 	__le64	mark_cnt_cos6;
47614a50ddc2SMichael Chan 	__le64	mark_cnt_cos7;
47624a50ddc2SMichael Chan };
47634a50ddc2SMichael Chan 
47644a50ddc2SMichael Chan /* hwrm_port_clr_stats_input (size:192b/24B) */
47654a50ddc2SMichael Chan struct hwrm_port_clr_stats_input {
47664a50ddc2SMichael Chan 	__le16	req_type;
476778eeadb8SMichael Chan 	__le16	cmpl_ring;
476878eeadb8SMichael Chan 	__le16	seq_id;
476978eeadb8SMichael Chan 	__le16	target_id;
4770fbfee257SMichael Chan 	__le64	resp_addr;
477178eeadb8SMichael Chan 	__le16	port_id;
477278eeadb8SMichael Chan 	u8	flags;
4773fbfee257SMichael Chan 	#define PORT_CLR_STATS_REQ_FLAGS_ROCE_COUNTERS     0x1UL
4774fbfee257SMichael Chan 	u8	unused_0[5];
47754a50ddc2SMichael Chan };
47764a50ddc2SMichael Chan 
47774a50ddc2SMichael Chan /* hwrm_port_clr_stats_output (size:128b/16B) */
47784a50ddc2SMichael Chan struct hwrm_port_clr_stats_output {
47794a50ddc2SMichael Chan 	__le16	error_code;
47804a50ddc2SMichael Chan 	__le16	req_type;
47814a50ddc2SMichael Chan 	__le16	seq_id;
47824a50ddc2SMichael Chan 	__le16	resp_len;
47834a50ddc2SMichael Chan 	u8	unused_0[7];
47844a50ddc2SMichael Chan 	u8	valid;
47854a50ddc2SMichael Chan };
47864a50ddc2SMichael Chan 
47874a50ddc2SMichael Chan /* hwrm_port_lpbk_clr_stats_input (size:128b/16B) */
47884a50ddc2SMichael Chan struct hwrm_port_lpbk_clr_stats_input {
4789894aa69aSMichael Chan 	__le16	req_type;
479011f15ed3SMichael Chan 	__le16	cmpl_ring;
479111f15ed3SMichael Chan 	__le16	seq_id;
479211f15ed3SMichael Chan 	__le16	target_id;
479311f15ed3SMichael Chan 	__le64	resp_addr;
479411f15ed3SMichael Chan };
479511f15ed3SMichael Chan 
479611f15ed3SMichael Chan /* hwrm_port_lpbk_clr_stats_output (size:128b/16B) */
4797894aa69aSMichael Chan struct hwrm_port_lpbk_clr_stats_output {
479811f15ed3SMichael Chan 	__le16	error_code;
479911f15ed3SMichael Chan 	__le16	req_type;
4800bfc6e5fbSMichael Chan 	__le16	seq_id;
480111f15ed3SMichael Chan 	__le16	resp_len;
480211f15ed3SMichael Chan 	u8	unused_0[7];
480311f15ed3SMichael Chan 	u8	valid;
480411f15ed3SMichael Chan };
480511f15ed3SMichael Chan 
4806acb20054SMichael Chan /* hwrm_port_ts_query_input (size:320b/40B) */
4807acb20054SMichael Chan struct hwrm_port_ts_query_input {
48086fc92c33SMichael Chan 	__le16	req_type;
480941136ab3SMichael Chan 	__le16	cmpl_ring;
481041136ab3SMichael Chan 	__le16	seq_id;
4811bfc6e5fbSMichael Chan 	__le16	target_id;
48129d6b648cSMichael Chan 	__le64	resp_addr;
481316db6323SMichael Chan 	__le32	flags;
481431f67c2eSMichael Chan 	#define PORT_TS_QUERY_REQ_FLAGS_PATH             0x1UL
48156a17eb27SMichael Chan 	#define PORT_TS_QUERY_REQ_FLAGS_PATH_TX            0x0UL
48166a17eb27SMichael Chan 	#define PORT_TS_QUERY_REQ_FLAGS_PATH_RX            0x1UL
48176a17eb27SMichael Chan 	#define PORT_TS_QUERY_REQ_FLAGS_PATH_LAST         PORT_TS_QUERY_REQ_FLAGS_PATH_RX
48186a17eb27SMichael Chan 	#define PORT_TS_QUERY_REQ_FLAGS_CURRENT_TIME     0x2UL
48196a17eb27SMichael Chan 	__le16	port_id;
48206a17eb27SMichael Chan 	u8	unused_0[2];
48212895c153SMichael Chan 	__le16	enables;
48222895c153SMichael Chan 	#define PORT_TS_QUERY_REQ_ENABLES_TS_REQ_TIMEOUT     0x1UL
482311f15ed3SMichael Chan 	#define PORT_TS_QUERY_REQ_ENABLES_PTP_SEQ_ID         0x2UL
482411f15ed3SMichael Chan 	#define PORT_TS_QUERY_REQ_ENABLES_PTP_HDR_OFFSET     0x4UL
482511f15ed3SMichael Chan 	__le16	ts_req_timeout;
482611f15ed3SMichael Chan 	__le32	ptp_seq_id;
482711f15ed3SMichael Chan 	__le16	ptp_hdr_offset;
482811f15ed3SMichael Chan 	u8	unused_1[6];
482911f15ed3SMichael Chan };
483011f15ed3SMichael Chan 
483111f15ed3SMichael Chan /* hwrm_port_ts_query_output (size:192b/24B) */
483211f15ed3SMichael Chan struct hwrm_port_ts_query_output {
483311f15ed3SMichael Chan 	__le16	error_code;
483411f15ed3SMichael Chan 	__le16	req_type;
483511f15ed3SMichael Chan 	__le16	seq_id;
483611f15ed3SMichael Chan 	__le16	resp_len;
483711f15ed3SMichael Chan 	__le64	ptp_msg_ts;
483811f15ed3SMichael Chan 	__le16	ptp_msg_seqid;
483911f15ed3SMichael Chan 	u8	unused_0[5];
484011f15ed3SMichael Chan 	u8	valid;
484111f15ed3SMichael Chan };
484211f15ed3SMichael Chan 
484311f15ed3SMichael 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;
485111f15ed3SMichael Chan 	u8	unused_0[6];
485211f15ed3SMichael Chan };
485311f15ed3SMichael Chan 
485411f15ed3SMichael 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;
486011f15ed3SMichael Chan 	u8	flags;
486111f15ed3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_FLAGS_EEE_SUPPORTED                    0x1UL
486211f15ed3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_FLAGS_EXTERNAL_LPBK_SUPPORTED          0x2UL
486311f15ed3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_FLAGS_AUTONEG_LPBK_SUPPORTED           0x4UL
486411f15ed3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_FLAGS_SHARED_PHY_CFG_SUPPORTED         0x8UL
486511f15ed3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_FLAGS_CUMULATIVE_COUNTERS_ON_RESET     0x10UL
486611f15ed3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_FLAGS_LOCAL_LPBK_NOT_SUPPORTED         0x20UL
486711f15ed3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_FLAGS_FW_MANAGED_LINK_DOWN             0x40UL
486811f15ed3SMichael Chan 	#define PORT_PHY_QCAPS_RESP_FLAGS_NO_FCS                           0x80UL
4869bfc6e5fbSMichael Chan 	u8	port_cnt;
4870bfc6e5fbSMichael Chan 	#define PORT_PHY_QCAPS_RESP_PORT_CNT_UNKNOWN 0x0UL
4871bfc6e5fbSMichael Chan 	#define PORT_PHY_QCAPS_RESP_PORT_CNT_1       0x1UL
4872bfc6e5fbSMichael Chan 	#define PORT_PHY_QCAPS_RESP_PORT_CNT_2       0x2UL
4873bfc6e5fbSMichael Chan 	#define PORT_PHY_QCAPS_RESP_PORT_CNT_3       0x3UL
4874bfc6e5fbSMichael Chan 	#define PORT_PHY_QCAPS_RESP_PORT_CNT_4       0x4UL
4875bfc6e5fbSMichael Chan 	#define PORT_PHY_QCAPS_RESP_PORT_CNT_12      0xcUL
4876bfc6e5fbSMichael Chan 	#define PORT_PHY_QCAPS_RESP_PORT_CNT_LAST   PORT_PHY_QCAPS_RESP_PORT_CNT_12
4877bfc6e5fbSMichael Chan 	__le16	supported_speeds_force_mode;
4878bfc6e5fbSMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_100MBHD     0x1UL
487921e70778SMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_100MB       0x2UL
488021e70778SMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_1GBHD       0x4UL
488121e70778SMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_1GB         0x8UL
488284a911dbSMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_2GB         0x10UL
48832895c153SMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_2_5GB       0x20UL
4884bfc6e5fbSMichael 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
4887894aa69aSMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_40GB        0x200UL
488842ee18feSAjit Khaparde 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_50GB        0x400UL
488942ee18feSAjit Khaparde 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_100GB       0x800UL
489042ee18feSAjit Khaparde 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_10MBHD      0x1000UL
489142ee18feSAjit Khaparde 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_10MB        0x2000UL
489242ee18feSAjit Khaparde 	__le16	supported_speeds_auto_mode;
489342ee18feSAjit Khaparde 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_100MBHD     0x1UL
489442ee18feSAjit Khaparde 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_100MB       0x2UL
489542ee18feSAjit Khaparde 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_1GBHD       0x4UL
489642ee18feSAjit Khaparde 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_1GB         0x8UL
489784a911dbSMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_2GB         0x10UL
489842ee18feSAjit Khaparde 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_2_5GB       0x20UL
489942ee18feSAjit Khaparde 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_10GB        0x40UL
490084a911dbSMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_20GB        0x80UL
490142ee18feSAjit Khaparde 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_25GB        0x100UL
490242ee18feSAjit Khaparde 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_40GB        0x200UL
490342ee18feSAjit Khaparde 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_50GB        0x400UL
490442ee18feSAjit Khaparde 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_100GB       0x800UL
490542ee18feSAjit Khaparde 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_10MBHD      0x1000UL
490642ee18feSAjit Khaparde 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_10MB        0x2000UL
4907894aa69aSMichael Chan 	__le16	supported_speeds_eee_mode;
490842ee18feSAjit Khaparde 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_EEE_MODE_RSVD1     0x1UL
490942ee18feSAjit Khaparde 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_EEE_MODE_100MB     0x2UL
491042ee18feSAjit Khaparde 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_EEE_MODE_RSVD2     0x4UL
491142ee18feSAjit Khaparde 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_EEE_MODE_1GB       0x8UL
491242ee18feSAjit Khaparde 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_EEE_MODE_RSVD3     0x10UL
491342ee18feSAjit Khaparde 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_EEE_MODE_RSVD4     0x20UL
4914894aa69aSMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_EEE_MODE_10GB      0x40UL
491542ee18feSAjit Khaparde 	__le32	tx_lpi_timer_low;
491642ee18feSAjit Khaparde 	#define PORT_PHY_QCAPS_RESP_TX_LPI_TIMER_LOW_MASK 0xffffffUL
491742ee18feSAjit Khaparde 	#define PORT_PHY_QCAPS_RESP_TX_LPI_TIMER_LOW_SFT 0
49183322479eSMichael Chan 	#define PORT_PHY_QCAPS_RESP_RSVD2_MASK           0xff000000UL
49193322479eSMichael Chan 	#define PORT_PHY_QCAPS_RESP_RSVD2_SFT            24
49203322479eSMichael Chan 	__le32	valid_tx_lpi_timer_high;
49213322479eSMichael Chan 	#define PORT_PHY_QCAPS_RESP_TX_LPI_TIMER_HIGH_MASK 0xffffffUL
49223322479eSMichael Chan 	#define PORT_PHY_QCAPS_RESP_TX_LPI_TIMER_HIGH_SFT 0
49233322479eSMichael Chan 	#define PORT_PHY_QCAPS_RESP_RSVD_MASK             0xff000000UL
49243322479eSMichael Chan 	#define PORT_PHY_QCAPS_RESP_RSVD_SFT              24
49253322479eSMichael Chan 	__le16	supported_pam4_speeds_auto_mode;
49263322479eSMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_PAM4_SPEEDS_AUTO_MODE_50G      0x1UL
49273322479eSMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_PAM4_SPEEDS_AUTO_MODE_100G     0x2UL
49283322479eSMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_PAM4_SPEEDS_AUTO_MODE_200G     0x4UL
49293322479eSMichael Chan 	__le16	supported_pam4_speeds_force_mode;
49303322479eSMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_PAM4_SPEEDS_FORCE_MODE_50G      0x1UL
49313322479eSMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_PAM4_SPEEDS_FORCE_MODE_100G     0x2UL
49323322479eSMichael Chan 	#define PORT_PHY_QCAPS_RESP_SUPPORTED_PAM4_SPEEDS_FORCE_MODE_200G     0x4UL
49333322479eSMichael Chan 	__le16	flags2;
49343322479eSMichael Chan 	#define PORT_PHY_QCAPS_RESP_FLAGS2_PAUSE_UNSUPPORTED       0x1UL
49353322479eSMichael Chan 	#define PORT_PHY_QCAPS_RESP_FLAGS2_PFC_UNSUPPORTED         0x2UL
49363322479eSMichael Chan 	#define PORT_PHY_QCAPS_RESP_FLAGS2_BANK_ADDR_SUPPORTED     0x4UL
49373322479eSMichael Chan 	u8	internal_port_cnt;
49383322479eSMichael Chan 	u8	valid;
49393322479eSMichael Chan };
49403322479eSMichael Chan 
49413322479eSMichael Chan /* hwrm_port_phy_i2c_read_input (size:320b/40B) */
49423322479eSMichael Chan struct hwrm_port_phy_i2c_read_input {
49433322479eSMichael Chan 	__le16	req_type;
49443322479eSMichael Chan 	__le16	cmpl_ring;
49453322479eSMichael Chan 	__le16	seq_id;
49463322479eSMichael Chan 	__le16	target_id;
49473322479eSMichael Chan 	__le64	resp_addr;
49483322479eSMichael Chan 	__le32	flags;
49493322479eSMichael Chan 	__le32	enables;
49503322479eSMichael Chan 	#define PORT_PHY_I2C_READ_REQ_ENABLES_PAGE_OFFSET     0x1UL
49513322479eSMichael Chan 	#define PORT_PHY_I2C_READ_REQ_ENABLES_BANK_NUMBER     0x2UL
49523322479eSMichael Chan 	__le16	port_id;
49533322479eSMichael Chan 	u8	i2c_slave_addr;
49543322479eSMichael Chan 	u8	bank_number;
49553322479eSMichael Chan 	__le16	page_number;
49563322479eSMichael Chan 	__le16	page_offset;
49573322479eSMichael Chan 	u8	data_length;
49583322479eSMichael Chan 	u8	unused_1[7];
49593322479eSMichael Chan };
49603322479eSMichael Chan 
49613322479eSMichael Chan /* hwrm_port_phy_i2c_read_output (size:640b/80B) */
49623322479eSMichael Chan struct hwrm_port_phy_i2c_read_output {
49633322479eSMichael Chan 	__le16	error_code;
49643322479eSMichael Chan 	__le16	req_type;
49653322479eSMichael Chan 	__le16	seq_id;
49663322479eSMichael Chan 	__le16	resp_len;
49673322479eSMichael Chan 	__le32	data[16];
49683322479eSMichael Chan 	u8	unused_0[7];
49693322479eSMichael Chan 	u8	valid;
49703322479eSMichael Chan };
49713322479eSMichael Chan 
4972894aa69aSMichael Chan /* hwrm_port_phy_mdio_write_input (size:320b/40B) */
4973f183886cSMichael Chan struct hwrm_port_phy_mdio_write_input {
4974f183886cSMichael Chan 	__le16	req_type;
4975f183886cSMichael Chan 	__le16	cmpl_ring;
4976f183886cSMichael Chan 	__le16	seq_id;
4977f183886cSMichael Chan 	__le16	target_id;
4978f183886cSMichael Chan 	__le64	resp_addr;
4979f183886cSMichael Chan 	__le32	unused_0[2];
4980f183886cSMichael Chan 	__le16	port_id;
4981f183886cSMichael Chan 	u8	phy_addr;
4982f183886cSMichael Chan 	u8	dev_addr;
4983f183886cSMichael Chan 	__le16	reg_addr;
4984f183886cSMichael Chan 	__le16	reg_data;
4985f183886cSMichael Chan 	u8	cl45_mdio;
4986f183886cSMichael Chan 	u8	unused_1[7];
4987f183886cSMichael Chan };
4988f183886cSMichael Chan 
4989f183886cSMichael Chan /* hwrm_port_phy_mdio_write_output (size:128b/16B) */
4990f183886cSMichael Chan struct hwrm_port_phy_mdio_write_output {
4991f183886cSMichael Chan 	__le16	error_code;
4992f183886cSMichael Chan 	__le16	req_type;
4993f183886cSMichael Chan 	__le16	seq_id;
4994f183886cSMichael Chan 	__le16	resp_len;
4995f183886cSMichael Chan 	u8	unused_0[7];
4996f183886cSMichael Chan 	u8	valid;
4997f183886cSMichael Chan };
4998f183886cSMichael Chan 
4999f183886cSMichael Chan /* hwrm_port_phy_mdio_read_input (size:256b/32B) */
5000f183886cSMichael Chan struct hwrm_port_phy_mdio_read_input {
5001f183886cSMichael Chan 	__le16	req_type;
5002f183886cSMichael Chan 	__le16	cmpl_ring;
5003f183886cSMichael Chan 	__le16	seq_id;
5004f183886cSMichael Chan 	__le16	target_id;
5005f183886cSMichael Chan 	__le64	resp_addr;
5006f183886cSMichael Chan 	__le32	unused_0[2];
5007f183886cSMichael Chan 	__le16	port_id;
5008f183886cSMichael Chan 	u8	phy_addr;
5009f183886cSMichael Chan 	u8	dev_addr;
5010f183886cSMichael Chan 	__le16	reg_addr;
5011f183886cSMichael Chan 	u8	cl45_mdio;
5012f183886cSMichael Chan 	u8	unused_1;
5013f183886cSMichael Chan };
5014894aa69aSMichael Chan 
5015f183886cSMichael Chan /* hwrm_port_phy_mdio_read_output (size:128b/16B) */
5016f183886cSMichael Chan struct hwrm_port_phy_mdio_read_output {
5017f183886cSMichael Chan 	__le16	error_code;
5018f183886cSMichael Chan 	__le16	req_type;
5019f183886cSMichael Chan 	__le16	seq_id;
5020894aa69aSMichael Chan 	__le16	resp_len;
5021f183886cSMichael Chan 	__le16	reg_data;
5022f183886cSMichael Chan 	u8	unused_0[5];
5023f183886cSMichael Chan 	u8	valid;
5024f183886cSMichael Chan };
5025f183886cSMichael Chan 
5026f183886cSMichael 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;
5033894aa69aSMichael 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
5039894aa69aSMichael 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
5052894aa69aSMichael 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
5058894aa69aSMichael 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
5068f183886cSMichael 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
5071894aa69aSMichael 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
5074f183886cSMichael 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;
5077894aa69aSMichael 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
5085894aa69aSMichael Chan 	#define PORT_LED_CFG_REQ_LED1_STATE_BLINK    0x3UL
5086f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_LED1_STATE_BLINKALT 0x4UL
5087f183886cSMichael 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
5091894aa69aSMichael Chan 	#define PORT_LED_CFG_REQ_LED1_COLOR_GREEN      0x2UL
5092f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_LED1_COLOR_GREENAMBER 0x3UL
5093f183886cSMichael Chan 	#define PORT_LED_CFG_REQ_LED1_COLOR_LAST      PORT_LED_CFG_REQ_LED1_COLOR_GREENAMBER
5094f183886cSMichael Chan 	u8	unused_1;
5095894aa69aSMichael Chan 	__le16	led1_blink_on;
5096894aa69aSMichael Chan 	__le16	led1_blink_off;
5097894aa69aSMichael Chan 	u8	led1_group_id;
5098894aa69aSMichael Chan 	u8	rsvd1;
5099894aa69aSMichael Chan 	u8	led2_id;
5100894aa69aSMichael Chan 	u8	led2_state;
5101894aa69aSMichael Chan 	#define PORT_LED_CFG_REQ_LED2_STATE_DEFAULT  0x0UL
5102894aa69aSMichael Chan 	#define PORT_LED_CFG_REQ_LED2_STATE_OFF      0x1UL
5103894aa69aSMichael Chan 	#define PORT_LED_CFG_REQ_LED2_STATE_ON       0x2UL
5104894aa69aSMichael Chan 	#define PORT_LED_CFG_REQ_LED2_STATE_BLINK    0x3UL
5105894aa69aSMichael 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
5107894aa69aSMichael Chan 	u8	led2_color;
5108894aa69aSMichael Chan 	#define PORT_LED_CFG_REQ_LED2_COLOR_DEFAULT    0x0UL
5109894aa69aSMichael Chan 	#define PORT_LED_CFG_REQ_LED2_COLOR_AMBER      0x1UL
5110894aa69aSMichael Chan 	#define PORT_LED_CFG_REQ_LED2_COLOR_GREEN      0x2UL
5111894aa69aSMichael 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
5113894aa69aSMichael Chan 	u8	unused_2;
5114894aa69aSMichael Chan 	__le16	led2_blink_on;
5115894aa69aSMichael Chan 	__le16	led2_blink_off;
5116894aa69aSMichael Chan 	u8	led2_group_id;
5117894aa69aSMichael Chan 	u8	rsvd2;
5118894aa69aSMichael Chan 	u8	led3_id;
5119894aa69aSMichael Chan 	u8	led3_state;
5120894aa69aSMichael Chan 	#define PORT_LED_CFG_REQ_LED3_STATE_DEFAULT  0x0UL
5121894aa69aSMichael Chan 	#define PORT_LED_CFG_REQ_LED3_STATE_OFF      0x1UL
5122894aa69aSMichael Chan 	#define PORT_LED_CFG_REQ_LED3_STATE_ON       0x2UL
5123894aa69aSMichael Chan 	#define PORT_LED_CFG_REQ_LED3_STATE_BLINK    0x3UL
5124894aa69aSMichael 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
5126894aa69aSMichael Chan 	u8	led3_color;
5127894aa69aSMichael Chan 	#define PORT_LED_CFG_REQ_LED3_COLOR_DEFAULT    0x0UL
5128894aa69aSMichael Chan 	#define PORT_LED_CFG_REQ_LED3_COLOR_AMBER      0x1UL
5129894aa69aSMichael Chan 	#define PORT_LED_CFG_REQ_LED3_COLOR_GREEN      0x2UL
5130894aa69aSMichael 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
5132894aa69aSMichael Chan 	u8	unused_3;
5133894aa69aSMichael Chan 	__le16	led3_blink_on;
5134894aa69aSMichael Chan 	__le16	led3_blink_off;
5135894aa69aSMichael Chan 	u8	led3_group_id;
5136894aa69aSMichael Chan 	u8	rsvd3;
5137894aa69aSMichael Chan };
5138894aa69aSMichael Chan 
5139894aa69aSMichael Chan /* hwrm_port_led_cfg_output (size:128b/16B) */
5140894aa69aSMichael Chan struct hwrm_port_led_cfg_output {
5141894aa69aSMichael Chan 	__le16	error_code;
5142894aa69aSMichael Chan 	__le16	req_type;
5143894aa69aSMichael Chan 	__le16	seq_id;
5144894aa69aSMichael Chan 	__le16	resp_len;
5145894aa69aSMichael Chan 	u8	unused_0[7];
5146894aa69aSMichael Chan 	u8	valid;
5147894aa69aSMichael Chan };
5148894aa69aSMichael 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;
5210f183886cSMichael Chan 	__le16	led1_blink_on;
5211f183886cSMichael Chan 	__le16	led1_blink_off;
5212f183886cSMichael Chan 	u8	led1_group_id;
5213f183886cSMichael Chan 	u8	led2_id;
5214f183886cSMichael Chan 	u8	led2_type;
5215f183886cSMichael Chan 	#define PORT_LED_QCFG_RESP_LED2_TYPE_SPEED    0x0UL
5216f183886cSMichael Chan 	#define PORT_LED_QCFG_RESP_LED2_TYPE_ACTIVITY 0x1UL
5217894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED2_TYPE_INVALID  0xffUL
5218f183886cSMichael Chan 	#define PORT_LED_QCFG_RESP_LED2_TYPE_LAST    PORT_LED_QCFG_RESP_LED2_TYPE_INVALID
5219f183886cSMichael Chan 	u8	led2_state;
5220894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED2_STATE_DEFAULT  0x0UL
5221f183886cSMichael Chan 	#define PORT_LED_QCFG_RESP_LED2_STATE_OFF      0x1UL
5222f183886cSMichael Chan 	#define PORT_LED_QCFG_RESP_LED2_STATE_ON       0x2UL
5223f183886cSMichael Chan 	#define PORT_LED_QCFG_RESP_LED2_STATE_BLINK    0x3UL
5224f183886cSMichael Chan 	#define PORT_LED_QCFG_RESP_LED2_STATE_BLINKALT 0x4UL
5225f183886cSMichael Chan 	#define PORT_LED_QCFG_RESP_LED2_STATE_LAST    PORT_LED_QCFG_RESP_LED2_STATE_BLINKALT
5226f183886cSMichael Chan 	u8	led2_color;
5227894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED2_COLOR_DEFAULT    0x0UL
5228f183886cSMichael Chan 	#define PORT_LED_QCFG_RESP_LED2_COLOR_AMBER      0x1UL
5229f183886cSMichael Chan 	#define PORT_LED_QCFG_RESP_LED2_COLOR_GREEN      0x2UL
5230f183886cSMichael Chan 	#define PORT_LED_QCFG_RESP_LED2_COLOR_GREENAMBER 0x3UL
5231f183886cSMichael Chan 	#define PORT_LED_QCFG_RESP_LED2_COLOR_LAST      PORT_LED_QCFG_RESP_LED2_COLOR_GREENAMBER
5232f183886cSMichael Chan 	u8	unused_2;
5233894aa69aSMichael Chan 	__le16	led2_blink_on;
5234f183886cSMichael Chan 	__le16	led2_blink_off;
5235894aa69aSMichael Chan 	u8	led2_group_id;
5236f183886cSMichael Chan 	u8	led3_id;
5237f183886cSMichael Chan 	u8	led3_type;
5238f183886cSMichael Chan 	#define PORT_LED_QCFG_RESP_LED3_TYPE_SPEED    0x0UL
5239f183886cSMichael Chan 	#define PORT_LED_QCFG_RESP_LED3_TYPE_ACTIVITY 0x1UL
5240f183886cSMichael Chan 	#define PORT_LED_QCFG_RESP_LED3_TYPE_INVALID  0xffUL
5241f183886cSMichael Chan 	#define PORT_LED_QCFG_RESP_LED3_TYPE_LAST    PORT_LED_QCFG_RESP_LED3_TYPE_INVALID
5242f183886cSMichael Chan 	u8	led3_state;
5243f183886cSMichael Chan 	#define PORT_LED_QCFG_RESP_LED3_STATE_DEFAULT  0x0UL
5244f183886cSMichael Chan 	#define PORT_LED_QCFG_RESP_LED3_STATE_OFF      0x1UL
5245f183886cSMichael Chan 	#define PORT_LED_QCFG_RESP_LED3_STATE_ON       0x2UL
5246f183886cSMichael Chan 	#define PORT_LED_QCFG_RESP_LED3_STATE_BLINK    0x3UL
5247f183886cSMichael Chan 	#define PORT_LED_QCFG_RESP_LED3_STATE_BLINKALT 0x4UL
5248f183886cSMichael Chan 	#define PORT_LED_QCFG_RESP_LED3_STATE_LAST    PORT_LED_QCFG_RESP_LED3_STATE_BLINKALT
5249f183886cSMichael Chan 	u8	led3_color;
5250f183886cSMichael Chan 	#define PORT_LED_QCFG_RESP_LED3_COLOR_DEFAULT    0x0UL
5251894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED3_COLOR_AMBER      0x1UL
5252f183886cSMichael Chan 	#define PORT_LED_QCFG_RESP_LED3_COLOR_GREEN      0x2UL
5253894aa69aSMichael Chan 	#define PORT_LED_QCFG_RESP_LED3_COLOR_GREENAMBER 0x3UL
5254f183886cSMichael Chan 	#define PORT_LED_QCFG_RESP_LED3_COLOR_LAST      PORT_LED_QCFG_RESP_LED3_COLOR_GREENAMBER
5255f183886cSMichael Chan 	u8	unused_3;
5256f183886cSMichael Chan 	__le16	led3_blink_on;
5257f183886cSMichael Chan 	__le16	led3_blink_off;
5258f183886cSMichael Chan 	u8	led3_group_id;
5259f183886cSMichael Chan 	u8	unused_4[6];
5260f183886cSMichael Chan 	u8	valid;
5261f183886cSMichael Chan };
5262f183886cSMichael Chan 
5263f183886cSMichael 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;
5269894aa69aSMichael Chan 	__le64	resp_addr;
5270f183886cSMichael Chan 	__le16	port_id;
5271894aa69aSMichael Chan 	u8	unused_0[6];
5272f183886cSMichael Chan };
5273f183886cSMichael Chan 
5274f183886cSMichael 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;
5281f183886cSMichael 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
5300894aa69aSMichael 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
5304894aa69aSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED1_TYPE_INVALID  0xffUL
5305c0c050c5SMichael Chan 	#define PORT_LED_QCAPS_RESP_LED1_TYPE_LAST    PORT_LED_QCAPS_RESP_LED1_TYPE_INVALID
5306c0c050c5SMichael Chan 	u8	led1_group_id;
5307c0c050c5SMichael Chan 	u8	unused_1;
5308c0c050c5SMichael Chan 	__le16	led1_state_caps;
5309c0c050c5SMichael Chan 	#define PORT_LED_QCAPS_RESP_LED1_STATE_CAPS_ENABLED                 0x1UL
5310c0c050c5SMichael Chan 	#define PORT_LED_QCAPS_RESP_LED1_STATE_CAPS_OFF_SUPPORTED           0x2UL
5311c0c050c5SMichael Chan 	#define PORT_LED_QCAPS_RESP_LED1_STATE_CAPS_ON_SUPPORTED            0x4UL
5312c0c050c5SMichael Chan 	#define PORT_LED_QCAPS_RESP_LED1_STATE_CAPS_BLINK_SUPPORTED         0x8UL
5313441cabbbSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED1_STATE_CAPS_BLINK_ALT_SUPPORTED     0x10UL
5314441cabbbSMichael Chan 	__le16	led1_color_caps;
531511f15ed3SMichael Chan 	#define PORT_LED_QCAPS_RESP_LED1_COLOR_CAPS_RSVD                0x1UL
5316c0c050c5SMichael Chan 	#define PORT_LED_QCAPS_RESP_LED1_COLOR_CAPS_AMBER_SUPPORTED     0x2UL
5317d4f52de0SMichael Chan 	#define PORT_LED_QCAPS_RESP_LED1_COLOR_CAPS_GREEN_SUPPORTED     0x4UL
5318d4f52de0SMichael Chan 	u8	led2_id;
5319d4f52de0SMichael Chan 	u8	led2_type;
5320d4f52de0SMichael Chan 	#define PORT_LED_QCAPS_RESP_LED2_TYPE_SPEED    0x0UL
5321d4f52de0SMichael Chan 	#define PORT_LED_QCAPS_RESP_LED2_TYPE_ACTIVITY 0x1UL
5322c0c050c5SMichael Chan 	#define PORT_LED_QCAPS_RESP_LED2_TYPE_INVALID  0xffUL
5323c0c050c5SMichael Chan 	#define PORT_LED_QCAPS_RESP_LED2_TYPE_LAST    PORT_LED_QCAPS_RESP_LED2_TYPE_INVALID
5324bfc6e5fbSMichael Chan 	u8	led2_group_id;
5325c0c050c5SMichael Chan 	u8	unused_2;
5326c0c050c5SMichael Chan 	__le16	led2_state_caps;
5327c0c050c5SMichael Chan 	#define PORT_LED_QCAPS_RESP_LED2_STATE_CAPS_ENABLED                 0x1UL
5328c0c050c5SMichael Chan 	#define PORT_LED_QCAPS_RESP_LED2_STATE_CAPS_OFF_SUPPORTED           0x2UL
5329c0c050c5SMichael Chan 	#define PORT_LED_QCAPS_RESP_LED2_STATE_CAPS_ON_SUPPORTED            0x4UL
5330c0c050c5SMichael Chan 	#define PORT_LED_QCAPS_RESP_LED2_STATE_CAPS_BLINK_SUPPORTED         0x8UL
5331c0c050c5SMichael Chan 	#define PORT_LED_QCAPS_RESP_LED2_STATE_CAPS_BLINK_ALT_SUPPORTED     0x10UL
5332c0c050c5SMichael Chan 	__le16	led2_color_caps;
5333441cabbbSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED2_COLOR_CAPS_RSVD                0x1UL
5334441cabbbSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED2_COLOR_CAPS_AMBER_SUPPORTED     0x2UL
533578eeadb8SMichael Chan 	#define PORT_LED_QCAPS_RESP_LED2_COLOR_CAPS_GREEN_SUPPORTED     0x4UL
5336c0c050c5SMichael Chan 	u8	led3_id;
5337c0c050c5SMichael Chan 	u8	led3_type;
5338c0c050c5SMichael Chan 	#define PORT_LED_QCAPS_RESP_LED3_TYPE_SPEED    0x0UL
5339c0c050c5SMichael Chan 	#define PORT_LED_QCAPS_RESP_LED3_TYPE_ACTIVITY 0x1UL
5340c0c050c5SMichael Chan 	#define PORT_LED_QCAPS_RESP_LED3_TYPE_INVALID  0xffUL
5341441cabbbSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED3_TYPE_LAST    PORT_LED_QCAPS_RESP_LED3_TYPE_INVALID
53426fc92c33SMichael Chan 	u8	led3_group_id;
5343d4f52de0SMichael Chan 	u8	unused_3;
5344d4f52de0SMichael Chan 	__le16	led3_state_caps;
5345d4f52de0SMichael Chan 	#define PORT_LED_QCAPS_RESP_LED3_STATE_CAPS_ENABLED                 0x1UL
5346441cabbbSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED3_STATE_CAPS_OFF_SUPPORTED           0x2UL
5347894aa69aSMichael Chan 	#define PORT_LED_QCAPS_RESP_LED3_STATE_CAPS_ON_SUPPORTED            0x4UL
5348c0c050c5SMichael Chan 	#define PORT_LED_QCAPS_RESP_LED3_STATE_CAPS_BLINK_SUPPORTED         0x8UL
5349c0c050c5SMichael Chan 	#define PORT_LED_QCAPS_RESP_LED3_STATE_CAPS_BLINK_ALT_SUPPORTED     0x10UL
5350441cabbbSMichael Chan 	__le16	led3_color_caps;
53516fc92c33SMichael Chan 	#define PORT_LED_QCAPS_RESP_LED3_COLOR_CAPS_RSVD                0x1UL
5352d4f52de0SMichael Chan 	#define PORT_LED_QCAPS_RESP_LED3_COLOR_CAPS_AMBER_SUPPORTED     0x2UL
5353d4f52de0SMichael Chan 	#define PORT_LED_QCAPS_RESP_LED3_COLOR_CAPS_GREEN_SUPPORTED     0x4UL
5354d4f52de0SMichael Chan 	u8	unused_4[3];
5355441cabbbSMichael Chan 	u8	valid;
5356894aa69aSMichael Chan };
5357c0c050c5SMichael Chan 
5358c0c050c5SMichael Chan /* hwrm_queue_qportcfg_input (size:192b/24B) */
5359441cabbbSMichael Chan struct hwrm_queue_qportcfg_input {
53606fc92c33SMichael Chan 	__le16	req_type;
5361d4f52de0SMichael Chan 	__le16	cmpl_ring;
5362d4f52de0SMichael Chan 	__le16	seq_id;
5363d4f52de0SMichael Chan 	__le16	target_id;
5364441cabbbSMichael Chan 	__le64	resp_addr;
5365894aa69aSMichael Chan 	__le32	flags;
5366c0c050c5SMichael Chan 	#define QUEUE_QPORTCFG_REQ_FLAGS_PATH     0x1UL
5367c0c050c5SMichael Chan 	#define QUEUE_QPORTCFG_REQ_FLAGS_PATH_TX    0x0UL
5368441cabbbSMichael Chan 	#define QUEUE_QPORTCFG_REQ_FLAGS_PATH_RX    0x1UL
53696fc92c33SMichael Chan 	#define QUEUE_QPORTCFG_REQ_FLAGS_PATH_LAST QUEUE_QPORTCFG_REQ_FLAGS_PATH_RX
5370d4f52de0SMichael Chan 	__le16	port_id;
5371d4f52de0SMichael Chan 	u8	drv_qmap_cap;
5372d4f52de0SMichael Chan 	#define QUEUE_QPORTCFG_REQ_DRV_QMAP_CAP_DISABLED 0x0UL
5373441cabbbSMichael Chan 	#define QUEUE_QPORTCFG_REQ_DRV_QMAP_CAP_ENABLED  0x1UL
5374894aa69aSMichael Chan 	#define QUEUE_QPORTCFG_REQ_DRV_QMAP_CAP_LAST    QUEUE_QPORTCFG_REQ_DRV_QMAP_CAP_ENABLED
5375c0c050c5SMichael Chan 	u8	unused_0;
5376c0c050c5SMichael Chan };
5377441cabbbSMichael Chan 
53786fc92c33SMichael Chan /* hwrm_queue_qportcfg_output (size:1344b/168B) */
5379d4f52de0SMichael Chan struct hwrm_queue_qportcfg_output {
5380d4f52de0SMichael Chan 	__le16	error_code;
5381d4f52de0SMichael Chan 	__le16	req_type;
5382441cabbbSMichael Chan 	__le16	seq_id;
5383894aa69aSMichael Chan 	__le16	resp_len;
5384c0c050c5SMichael Chan 	u8	max_configurable_queues;
5385c0c050c5SMichael Chan 	u8	max_configurable_lossless_queues;
5386441cabbbSMichael Chan 	u8	queue_cfg_allowed;
53876fc92c33SMichael Chan 	u8	queue_cfg_info;
5388d4f52de0SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_CFG_INFO_ASYM_CFG             0x1UL
5389d4f52de0SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_CFG_INFO_USE_PROFILE_TYPE     0x2UL
5390d4f52de0SMichael Chan 	u8	queue_pfcenable_cfg_allowed;
5391441cabbbSMichael Chan 	u8	queue_pri2cos_cfg_allowed;
5392894aa69aSMichael 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
541116db6323SMichael Chan 	u8	queue_id2;
541216db6323SMichael Chan 	u8	queue_id2_service_profile;
541316db6323SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID2_SERVICE_PROFILE_LOSSY          0x0UL
541416db6323SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID2_SERVICE_PROFILE_LOSSLESS       0x1UL
5415bfc6e5fbSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID2_SERVICE_PROFILE_LOSSLESS_ROCE  0x1UL
5416bfc6e5fbSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID2_SERVICE_PROFILE_LOSSY_ROCE_CNP 0x2UL
5417bfc6e5fbSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID2_SERVICE_PROFILE_LOSSLESS_NIC   0x3UL
5418bfc6e5fbSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID2_SERVICE_PROFILE_UNKNOWN        0xffUL
5419bfc6e5fbSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID2_SERVICE_PROFILE_LAST          QUEUE_QPORTCFG_RESP_QUEUE_ID2_SERVICE_PROFILE_UNKNOWN
5420bfc6e5fbSMichael Chan 	u8	queue_id3;
5421bfc6e5fbSMichael Chan 	u8	queue_id3_service_profile;
5422bfc6e5fbSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID3_SERVICE_PROFILE_LOSSY          0x0UL
542316db6323SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID3_SERVICE_PROFILE_LOSSLESS       0x1UL
542416db6323SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID3_SERVICE_PROFILE_LOSSLESS_ROCE  0x1UL
542516db6323SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID3_SERVICE_PROFILE_LOSSY_ROCE_CNP 0x2UL
542616db6323SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID3_SERVICE_PROFILE_LOSSLESS_NIC   0x3UL
542716db6323SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID3_SERVICE_PROFILE_UNKNOWN        0xffUL
542816db6323SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID3_SERVICE_PROFILE_LAST          QUEUE_QPORTCFG_RESP_QUEUE_ID3_SERVICE_PROFILE_UNKNOWN
542916db6323SMichael Chan 	u8	queue_id4;
543016db6323SMichael Chan 	u8	queue_id4_service_profile;
543116db6323SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID4_SERVICE_PROFILE_LOSSY          0x0UL
543216db6323SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID4_SERVICE_PROFILE_LOSSLESS       0x1UL
543316db6323SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID4_SERVICE_PROFILE_LOSSLESS_ROCE  0x1UL
543416db6323SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID4_SERVICE_PROFILE_LOSSY_ROCE_CNP 0x2UL
543516db6323SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID4_SERVICE_PROFILE_LOSSLESS_NIC   0x3UL
543616db6323SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID4_SERVICE_PROFILE_UNKNOWN        0xffUL
543716db6323SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID4_SERVICE_PROFILE_LAST          QUEUE_QPORTCFG_RESP_QUEUE_ID4_SERVICE_PROFILE_UNKNOWN
543816db6323SMichael Chan 	u8	queue_id5;
543916db6323SMichael Chan 	u8	queue_id5_service_profile;
544016db6323SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID5_SERVICE_PROFILE_LOSSY          0x0UL
544116db6323SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID5_SERVICE_PROFILE_LOSSLESS       0x1UL
544216db6323SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID5_SERVICE_PROFILE_LOSSLESS_ROCE  0x1UL
544316db6323SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID5_SERVICE_PROFILE_LOSSY_ROCE_CNP 0x2UL
544416db6323SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID5_SERVICE_PROFILE_LOSSLESS_NIC   0x3UL
544516db6323SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID5_SERVICE_PROFILE_UNKNOWN        0xffUL
544616db6323SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID5_SERVICE_PROFILE_LAST          QUEUE_QPORTCFG_RESP_QUEUE_ID5_SERVICE_PROFILE_UNKNOWN
544716db6323SMichael Chan 	u8	queue_id6;
544816db6323SMichael Chan 	u8	queue_id6_service_profile;
544916db6323SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID6_SERVICE_PROFILE_LOSSY          0x0UL
545016db6323SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID6_SERVICE_PROFILE_LOSSLESS       0x1UL
5451bfc6e5fbSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID6_SERVICE_PROFILE_LOSSLESS_ROCE  0x1UL
5452bfc6e5fbSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID6_SERVICE_PROFILE_LOSSY_ROCE_CNP 0x2UL
5453bfc6e5fbSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID6_SERVICE_PROFILE_LOSSLESS_NIC   0x3UL
5454bfc6e5fbSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID6_SERVICE_PROFILE_UNKNOWN        0xffUL
5455bfc6e5fbSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID6_SERVICE_PROFILE_LAST          QUEUE_QPORTCFG_RESP_QUEUE_ID6_SERVICE_PROFILE_UNKNOWN
5456bfc6e5fbSMichael Chan 	u8	queue_id7;
5457bfc6e5fbSMichael Chan 	u8	queue_id7_service_profile;
5458bfc6e5fbSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID7_SERVICE_PROFILE_LOSSY          0x0UL
5459bfc6e5fbSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID7_SERVICE_PROFILE_LOSSLESS       0x1UL
5460bfc6e5fbSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID7_SERVICE_PROFILE_LOSSLESS_ROCE  0x1UL
5461bfc6e5fbSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID7_SERVICE_PROFILE_LOSSY_ROCE_CNP 0x2UL
5462bfc6e5fbSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID7_SERVICE_PROFILE_LOSSLESS_NIC   0x3UL
5463bfc6e5fbSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID7_SERVICE_PROFILE_UNKNOWN        0xffUL
5464bfc6e5fbSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID7_SERVICE_PROFILE_LAST          QUEUE_QPORTCFG_RESP_QUEUE_ID7_SERVICE_PROFILE_UNKNOWN
5465bfc6e5fbSMichael Chan 	u8	queue_id0_service_profile_type;
5466bfc6e5fbSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID0_SERVICE_PROFILE_TYPE_ROCE     0x1UL
5467bfc6e5fbSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID0_SERVICE_PROFILE_TYPE_NIC      0x2UL
5468bfc6e5fbSMichael 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];
5477bfc6e5fbSMichael Chan 	u8	queue_id1_service_profile_type;
5478bfc6e5fbSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID1_SERVICE_PROFILE_TYPE_ROCE     0x1UL
5479bfc6e5fbSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID1_SERVICE_PROFILE_TYPE_NIC      0x2UL
5480bfc6e5fbSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID1_SERVICE_PROFILE_TYPE_CNP      0x4UL
5481bfc6e5fbSMichael Chan 	u8	queue_id2_service_profile_type;
5482bfc6e5fbSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID2_SERVICE_PROFILE_TYPE_ROCE     0x1UL
5483bfc6e5fbSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID2_SERVICE_PROFILE_TYPE_NIC      0x2UL
5484c0c050c5SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID2_SERVICE_PROFILE_TYPE_CNP      0x4UL
5485c0c050c5SMichael Chan 	u8	queue_id3_service_profile_type;
5486c0c050c5SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID3_SERVICE_PROFILE_TYPE_ROCE     0x1UL
5487894aa69aSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID3_SERVICE_PROFILE_TYPE_NIC      0x2UL
5488c0c050c5SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID3_SERVICE_PROFILE_TYPE_CNP      0x4UL
5489c0c050c5SMichael Chan 	u8	queue_id4_service_profile_type;
5490c0c050c5SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID4_SERVICE_PROFILE_TYPE_ROCE     0x1UL
5491c0c050c5SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID4_SERVICE_PROFILE_TYPE_NIC      0x2UL
5492c0c050c5SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID4_SERVICE_PROFILE_TYPE_CNP      0x4UL
5493c0c050c5SMichael Chan 	u8	queue_id5_service_profile_type;
5494c0c050c5SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID5_SERVICE_PROFILE_TYPE_ROCE     0x1UL
5495441cabbbSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID5_SERVICE_PROFILE_TYPE_NIC      0x2UL
5496441cabbbSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID5_SERVICE_PROFILE_TYPE_CNP      0x4UL
5497441cabbbSMichael Chan 	u8	queue_id6_service_profile_type;
5498441cabbbSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID6_SERVICE_PROFILE_TYPE_ROCE     0x1UL
5499441cabbbSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID6_SERVICE_PROFILE_TYPE_NIC      0x2UL
5500441cabbbSMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID6_SERVICE_PROFILE_TYPE_CNP      0x4UL
5501c0c050c5SMichael Chan 	u8	queue_id7_service_profile_type;
5502c0c050c5SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID7_SERVICE_PROFILE_TYPE_ROCE     0x1UL
5503c0c050c5SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID7_SERVICE_PROFILE_TYPE_NIC      0x2UL
5504c0c050c5SMichael Chan 	#define QUEUE_QPORTCFG_RESP_QUEUE_ID7_SERVICE_PROFILE_TYPE_CNP      0x4UL
5505c0c050c5SMichael Chan 	u8	valid;
5506c0c050c5SMichael Chan };
5507441cabbbSMichael Chan 
5508441cabbbSMichael Chan /* hwrm_queue_qcfg_input (size:192b/24B) */
5509441cabbbSMichael Chan struct hwrm_queue_qcfg_input {
5510894aa69aSMichael Chan 	__le16	req_type;
5511c0c050c5SMichael Chan 	__le16	cmpl_ring;
5512c0c050c5SMichael Chan 	__le16	seq_id;
5513c0c050c5SMichael Chan 	__le16	target_id;
5514894aa69aSMichael Chan 	__le64	resp_addr;
5515c0c050c5SMichael Chan 	__le32	flags;
5516c0c050c5SMichael Chan 	#define QUEUE_QCFG_REQ_FLAGS_PATH     0x1UL
5517c0c050c5SMichael Chan 	#define QUEUE_QCFG_REQ_FLAGS_PATH_TX    0x0UL
5518c0c050c5SMichael Chan 	#define QUEUE_QCFG_REQ_FLAGS_PATH_RX    0x1UL
5519c0c050c5SMichael Chan 	#define QUEUE_QCFG_REQ_FLAGS_PATH_LAST QUEUE_QCFG_REQ_FLAGS_PATH_RX
5520894aa69aSMichael Chan 	__le32	queue_id;
5521c0c050c5SMichael Chan };
5522c0c050c5SMichael Chan 
5523c0c050c5SMichael Chan /* hwrm_queue_qcfg_output (size:128b/16B) */
5524894aa69aSMichael Chan struct hwrm_queue_qcfg_output {
552587c374deSMichael Chan 	__le16	error_code;
552687c374deSMichael Chan 	__le16	req_type;
552787c374deSMichael Chan 	__le16	seq_id;
552887c374deSMichael Chan 	__le16	resp_len;
552987c374deSMichael Chan 	__le32	queue_len;
553087c374deSMichael Chan 	u8	service_profile;
553187c374deSMichael Chan 	#define QUEUE_QCFG_RESP_SERVICE_PROFILE_LOSSY    0x0UL
5532894aa69aSMichael Chan 	#define QUEUE_QCFG_RESP_SERVICE_PROFILE_LOSSLESS 0x1UL
553387c374deSMichael Chan 	#define QUEUE_QCFG_RESP_SERVICE_PROFILE_UNKNOWN  0xffUL
553487c374deSMichael Chan 	#define QUEUE_QCFG_RESP_SERVICE_PROFILE_LAST    QUEUE_QCFG_RESP_SERVICE_PROFILE_UNKNOWN
5535894aa69aSMichael Chan 	u8	queue_cfg_info;
553687c374deSMichael Chan 	#define QUEUE_QCFG_RESP_QUEUE_CFG_INFO_ASYM_CFG     0x1UL
553787c374deSMichael Chan 	u8	unused_0;
553887c374deSMichael Chan 	u8	valid;
553987c374deSMichael Chan };
554087c374deSMichael Chan 
554187c374deSMichael Chan /* hwrm_queue_cfg_input (size:320b/40B) */
554287c374deSMichael Chan struct hwrm_queue_cfg_input {
554387c374deSMichael Chan 	__le16	req_type;
554487c374deSMichael Chan 	__le16	cmpl_ring;
554587c374deSMichael Chan 	__le16	seq_id;
554687c374deSMichael Chan 	__le16	target_id;
554787c374deSMichael Chan 	__le64	resp_addr;
554887c374deSMichael Chan 	__le32	flags;
554987c374deSMichael Chan 	#define QUEUE_CFG_REQ_FLAGS_PATH_MASK 0x3UL
5550460c2577SMichael Chan 	#define QUEUE_CFG_REQ_FLAGS_PATH_SFT  0
5551460c2577SMichael Chan 	#define QUEUE_CFG_REQ_FLAGS_PATH_TX     0x0UL
5552460c2577SMichael Chan 	#define QUEUE_CFG_REQ_FLAGS_PATH_RX     0x1UL
5553460c2577SMichael Chan 	#define QUEUE_CFG_REQ_FLAGS_PATH_BIDIR  0x2UL
5554460c2577SMichael Chan 	#define QUEUE_CFG_REQ_FLAGS_PATH_LAST  QUEUE_CFG_REQ_FLAGS_PATH_BIDIR
5555460c2577SMichael Chan 	__le32	enables;
5556460c2577SMichael Chan 	#define QUEUE_CFG_REQ_ENABLES_DFLT_LEN            0x1UL
5557460c2577SMichael Chan 	#define QUEUE_CFG_REQ_ENABLES_SERVICE_PROFILE     0x2UL
5558894aa69aSMichael Chan 	__le32	queue_id;
555987c374deSMichael Chan 	__le32	dflt_len;
556087c374deSMichael Chan 	u8	service_profile;
556187c374deSMichael Chan 	#define QUEUE_CFG_REQ_SERVICE_PROFILE_LOSSY    0x0UL
5562894aa69aSMichael Chan 	#define QUEUE_CFG_REQ_SERVICE_PROFILE_LOSSLESS 0x1UL
5563c0c050c5SMichael Chan 	#define QUEUE_CFG_REQ_SERVICE_PROFILE_UNKNOWN  0xffUL
5564c0c050c5SMichael Chan 	#define QUEUE_CFG_REQ_SERVICE_PROFILE_LAST    QUEUE_CFG_REQ_SERVICE_PROFILE_UNKNOWN
5565c0c050c5SMichael Chan 	u8	unused_0[7];
5566c0c050c5SMichael Chan };
5567c0c050c5SMichael Chan 
5568c0c050c5SMichael Chan /* hwrm_queue_cfg_output (size:128b/16B) */
5569c193554eSMichael Chan struct hwrm_queue_cfg_output {
5570c193554eSMichael Chan 	__le16	error_code;
5571c193554eSMichael Chan 	__le16	req_type;
5572c193554eSMichael Chan 	__le16	seq_id;
5573c193554eSMichael Chan 	__le16	resp_len;
5574c193554eSMichael Chan 	u8	unused_0[7];
5575c193554eSMichael Chan 	u8	valid;
5576c193554eSMichael Chan };
5577c193554eSMichael Chan 
5578460c2577SMichael Chan /* hwrm_queue_pfcenable_qcfg_input (size:192b/24B) */
5579460c2577SMichael Chan struct hwrm_queue_pfcenable_qcfg_input {
5580460c2577SMichael Chan 	__le16	req_type;
5581460c2577SMichael Chan 	__le16	cmpl_ring;
5582460c2577SMichael Chan 	__le16	seq_id;
5583460c2577SMichael Chan 	__le16	target_id;
5584460c2577SMichael Chan 	__le64	resp_addr;
5585460c2577SMichael Chan 	__le16	port_id;
5586c0c050c5SMichael Chan 	u8	unused_0[6];
5587894aa69aSMichael Chan };
5588c0c050c5SMichael Chan 
5589c0c050c5SMichael Chan /* hwrm_queue_pfcenable_qcfg_output (size:128b/16B) */
5590894aa69aSMichael Chan struct hwrm_queue_pfcenable_qcfg_output {
5591c0c050c5SMichael Chan 	__le16	error_code;
5592c0c050c5SMichael Chan 	__le16	req_type;
5593c0c050c5SMichael Chan 	__le16	seq_id;
5594c0c050c5SMichael Chan 	__le16	resp_len;
5595c0c050c5SMichael Chan 	__le32	flags;
5596894aa69aSMichael Chan 	#define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI0_PFC_ENABLED              0x1UL
5597c0c050c5SMichael Chan 	#define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI1_PFC_ENABLED              0x2UL
5598c0c050c5SMichael Chan 	#define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI2_PFC_ENABLED              0x4UL
5599c0c050c5SMichael Chan 	#define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI3_PFC_ENABLED              0x8UL
5600894aa69aSMichael 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
560487c374deSMichael Chan 	#define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI0_PFC_WATCHDOG_ENABLED     0x100UL
560587c374deSMichael Chan 	#define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI1_PFC_WATCHDOG_ENABLED     0x200UL
560687c374deSMichael Chan 	#define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI2_PFC_WATCHDOG_ENABLED     0x400UL
560787c374deSMichael Chan 	#define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI3_PFC_WATCHDOG_ENABLED     0x800UL
560887c374deSMichael Chan 	#define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI4_PFC_WATCHDOG_ENABLED     0x1000UL
5609894aa69aSMichael Chan 	#define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI5_PFC_WATCHDOG_ENABLED     0x2000UL
5610894aa69aSMichael Chan 	#define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI6_PFC_WATCHDOG_ENABLED     0x4000UL
561187c374deSMichael Chan 	#define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI7_PFC_WATCHDOG_ENABLED     0x8000UL
561287c374deSMichael Chan 	u8	unused_0[3];
561387c374deSMichael Chan 	u8	valid;
561487c374deSMichael Chan };
561587c374deSMichael Chan 
561687c374deSMichael Chan /* hwrm_queue_pfcenable_cfg_input (size:192b/24B) */
5617894aa69aSMichael Chan struct hwrm_queue_pfcenable_cfg_input {
561887c374deSMichael Chan 	__le16	req_type;
561987c374deSMichael Chan 	__le16	cmpl_ring;
562087c374deSMichael Chan 	__le16	seq_id;
562187c374deSMichael Chan 	__le16	target_id;
562287c374deSMichael Chan 	__le64	resp_addr;
562387c374deSMichael Chan 	__le32	flags;
562487c374deSMichael Chan 	#define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI0_PFC_ENABLED              0x1UL
562587c374deSMichael Chan 	#define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI1_PFC_ENABLED              0x2UL
562687c374deSMichael Chan 	#define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI2_PFC_ENABLED              0x4UL
562787c374deSMichael Chan 	#define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI3_PFC_ENABLED              0x8UL
562887c374deSMichael Chan 	#define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI4_PFC_ENABLED              0x10UL
562987c374deSMichael Chan 	#define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI5_PFC_ENABLED              0x20UL
563087c374deSMichael Chan 	#define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI6_PFC_ENABLED              0x40UL
563187c374deSMichael Chan 	#define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI7_PFC_ENABLED              0x80UL
563287c374deSMichael Chan 	#define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI0_PFC_WATCHDOG_ENABLED     0x100UL
5633894aa69aSMichael Chan 	#define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI1_PFC_WATCHDOG_ENABLED     0x200UL
563487c374deSMichael Chan 	#define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI2_PFC_WATCHDOG_ENABLED     0x400UL
563587c374deSMichael Chan 	#define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI3_PFC_WATCHDOG_ENABLED     0x800UL
563687c374deSMichael Chan 	#define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI4_PFC_WATCHDOG_ENABLED     0x1000UL
5637894aa69aSMichael Chan 	#define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI5_PFC_WATCHDOG_ENABLED     0x2000UL
5638c0c050c5SMichael Chan 	#define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI6_PFC_WATCHDOG_ENABLED     0x4000UL
5639c0c050c5SMichael Chan 	#define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI7_PFC_WATCHDOG_ENABLED     0x8000UL
5640c0c050c5SMichael Chan 	__le16	port_id;
5641c0c050c5SMichael Chan 	u8	unused_0[2];
5642c0c050c5SMichael Chan };
5643c0c050c5SMichael Chan 
5644c0c050c5SMichael Chan /* hwrm_queue_pfcenable_cfg_output (size:128b/16B) */
5645441cabbbSMichael Chan struct hwrm_queue_pfcenable_cfg_output {
5646441cabbbSMichael Chan 	__le16	error_code;
5647894aa69aSMichael Chan 	__le16	req_type;
5648894aa69aSMichael Chan 	__le16	seq_id;
5649894aa69aSMichael Chan 	__le16	resp_len;
5650441cabbbSMichael Chan 	u8	unused_0[7];
5651441cabbbSMichael Chan 	u8	valid;
5652c0c050c5SMichael Chan };
5653441cabbbSMichael Chan 
5654441cabbbSMichael Chan /* hwrm_queue_pri2cos_qcfg_input (size:192b/24B) */
5655441cabbbSMichael Chan struct hwrm_queue_pri2cos_qcfg_input {
5656441cabbbSMichael Chan 	__le16	req_type;
5657441cabbbSMichael Chan 	__le16	cmpl_ring;
5658441cabbbSMichael Chan 	__le16	seq_id;
5659441cabbbSMichael Chan 	__le16	target_id;
5660441cabbbSMichael Chan 	__le64	resp_addr;
5661c0c050c5SMichael Chan 	__le32	flags;
5662c193554eSMichael Chan 	#define QUEUE_PRI2COS_QCFG_REQ_FLAGS_PATH      0x1UL
5663c193554eSMichael Chan 	#define QUEUE_PRI2COS_QCFG_REQ_FLAGS_PATH_TX     0x0UL
5664c193554eSMichael Chan 	#define QUEUE_PRI2COS_QCFG_REQ_FLAGS_PATH_RX     0x1UL
5665c193554eSMichael Chan 	#define QUEUE_PRI2COS_QCFG_REQ_FLAGS_PATH_LAST  QUEUE_PRI2COS_QCFG_REQ_FLAGS_PATH_RX
5666c193554eSMichael Chan 	#define QUEUE_PRI2COS_QCFG_REQ_FLAGS_IVLAN     0x2UL
5667c193554eSMichael Chan 	u8	port_id;
5668c193554eSMichael Chan 	u8	unused_0[3];
5669c193554eSMichael Chan };
5670c0c050c5SMichael Chan 
5671c0c050c5SMichael Chan /* hwrm_queue_pri2cos_qcfg_output (size:192b/24B) */
5672c0c050c5SMichael Chan struct hwrm_queue_pri2cos_qcfg_output {
5673894aa69aSMichael Chan 	__le16	error_code;
5674c0c050c5SMichael Chan 	__le16	req_type;
5675c0c050c5SMichael Chan 	__le16	seq_id;
5676c0c050c5SMichael Chan 	__le16	resp_len;
5677c0c050c5SMichael Chan 	u8	pri0_cos_queue_id;
5678c0c050c5SMichael Chan 	u8	pri1_cos_queue_id;
5679894aa69aSMichael Chan 	u8	pri2_cos_queue_id;
5680c0c050c5SMichael Chan 	u8	pri3_cos_queue_id;
5681c0c050c5SMichael Chan 	u8	pri4_cos_queue_id;
5682c0c050c5SMichael Chan 	u8	pri5_cos_queue_id;
5683894aa69aSMichael 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
568787c374deSMichael Chan 	u8	unused_0[6];
568887c374deSMichael Chan 	u8	valid;
568987c374deSMichael Chan };
569087c374deSMichael Chan 
5691894aa69aSMichael Chan /* hwrm_queue_pri2cos_cfg_input (size:320b/40B) */
569287c374deSMichael Chan struct hwrm_queue_pri2cos_cfg_input {
569387c374deSMichael Chan 	__le16	req_type;
5694894aa69aSMichael Chan 	__le16	cmpl_ring;
569587c374deSMichael Chan 	__le16	seq_id;
569687c374deSMichael Chan 	__le16	target_id;
569787c374deSMichael Chan 	__le64	resp_addr;
569887c374deSMichael Chan 	__le32	flags;
569987c374deSMichael Chan 	#define QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH_MASK 0x3UL
570087c374deSMichael Chan 	#define QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH_SFT  0
570187c374deSMichael Chan 	#define QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH_TX     0x0UL
570287c374deSMichael Chan 	#define QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH_RX     0x1UL
570387c374deSMichael Chan 	#define QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH_BIDIR  0x2UL
570487c374deSMichael Chan 	#define QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH_LAST  QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH_BIDIR
570587c374deSMichael Chan 	#define QUEUE_PRI2COS_CFG_REQ_FLAGS_IVLAN     0x4UL
5706bac9a7e0SMichael Chan 	__le32	enables;
5707bac9a7e0SMichael Chan 	#define QUEUE_PRI2COS_CFG_REQ_ENABLES_PRI0_COS_QUEUE_ID     0x1UL
5708bac9a7e0SMichael Chan 	#define QUEUE_PRI2COS_CFG_REQ_ENABLES_PRI1_COS_QUEUE_ID     0x2UL
5709bac9a7e0SMichael Chan 	#define QUEUE_PRI2COS_CFG_REQ_ENABLES_PRI2_COS_QUEUE_ID     0x4UL
571087c374deSMichael Chan 	#define QUEUE_PRI2COS_CFG_REQ_ENABLES_PRI3_COS_QUEUE_ID     0x8UL
571187c374deSMichael Chan 	#define QUEUE_PRI2COS_CFG_REQ_ENABLES_PRI4_COS_QUEUE_ID     0x10UL
5712bac9a7e0SMichael Chan 	#define QUEUE_PRI2COS_CFG_REQ_ENABLES_PRI5_COS_QUEUE_ID     0x20UL
5713bac9a7e0SMichael Chan 	#define QUEUE_PRI2COS_CFG_REQ_ENABLES_PRI6_COS_QUEUE_ID     0x40UL
5714bac9a7e0SMichael Chan 	#define QUEUE_PRI2COS_CFG_REQ_ENABLES_PRI7_COS_QUEUE_ID     0x80UL
5715bac9a7e0SMichael Chan 	u8	port_id;
571687c374deSMichael Chan 	u8	pri0_cos_queue_id;
571787c374deSMichael Chan 	u8	pri1_cos_queue_id;
571887c374deSMichael Chan 	u8	pri2_cos_queue_id;
571987c374deSMichael Chan 	u8	pri3_cos_queue_id;
572087c374deSMichael Chan 	u8	pri4_cos_queue_id;
572187c374deSMichael Chan 	u8	pri5_cos_queue_id;
5722bac9a7e0SMichael Chan 	u8	pri6_cos_queue_id;
5723bac9a7e0SMichael Chan 	u8	pri7_cos_queue_id;
5724bac9a7e0SMichael Chan 	u8	unused_0[7];
5725bac9a7e0SMichael Chan };
572687c374deSMichael Chan 
572787c374deSMichael Chan /* hwrm_queue_pri2cos_cfg_output (size:128b/16B) */
5728bac9a7e0SMichael Chan struct hwrm_queue_pri2cos_cfg_output {
5729bac9a7e0SMichael Chan 	__le16	error_code;
5730bac9a7e0SMichael Chan 	__le16	req_type;
5731bac9a7e0SMichael Chan 	__le16	seq_id;
573287c374deSMichael Chan 	__le16	resp_len;
573387c374deSMichael Chan 	u8	unused_0[7];
573487c374deSMichael Chan 	u8	valid;
573587c374deSMichael Chan };
573687c374deSMichael Chan 
573787c374deSMichael 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;
5742ac1b8c97SMichael Chan 	__le16	target_id;
5743ac1b8c97SMichael Chan 	__le64	resp_addr;
5744ac1b8c97SMichael Chan 	__le16	port_id;
5745ac1b8c97SMichael Chan 	u8	unused_0[6];
5746ac1b8c97SMichael Chan };
5747ac1b8c97SMichael Chan 
5748ac1b8c97SMichael Chan /* hwrm_queue_cos2bw_qcfg_output (size:896b/112B) */
5749ac1b8c97SMichael Chan struct hwrm_queue_cos2bw_qcfg_output {
5750ac1b8c97SMichael Chan 	__le16	error_code;
5751ac1b8c97SMichael Chan 	__le16	req_type;
5752ac1b8c97SMichael Chan 	__le16	seq_id;
5753ac1b8c97SMichael Chan 	__le16	resp_len;
5754ac1b8c97SMichael Chan 	u8	queue_id0;
5755ac1b8c97SMichael Chan 	u8	unused_0;
5756ac1b8c97SMichael Chan 	__le16	unused_1;
5757ac1b8c97SMichael Chan 	__le32	queue_id0_min_bw;
5758ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_MASK             0xfffffffUL
5759ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_SFT              0
5760ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_SCALE                     0x10000000UL
5761ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_SCALE_BITS                  (0x0UL << 28)
5762ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_SCALE_BYTES                 (0x1UL << 28)
5763ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_SCALE_LAST                 QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_SCALE_BYTES
5764ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
5765ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_SFT         29
5766ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
5767ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
5768ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
5769ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
5770ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
5771ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
5772ac1b8c97SMichael 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
5773ac1b8c97SMichael Chan 	__le32	queue_id0_max_bw;
5774ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_BW_VALUE_MASK             0xfffffffUL
5775ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_BW_VALUE_SFT              0
5776ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_SCALE                     0x10000000UL
5777ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_SCALE_BITS                  (0x0UL << 28)
5778ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_SCALE_BYTES                 (0x1UL << 28)
5779ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_SCALE_LAST                 QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_SCALE_BYTES
5780ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
5781ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_SFT         29
5782ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
5783ac1b8c97SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
5784894aa69aSMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
578587c374deSMichael 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)
5788894aa69aSMichael 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
5789c0c050c5SMichael Chan 	u8	queue_id0_tsa_assign;
5790c0c050c5SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_TSA_ASSIGN_SP             0x0UL
5791c0c050c5SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_TSA_ASSIGN_ETS            0x1UL
5792c0c050c5SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_TSA_ASSIGN_RESERVED_FIRST 0x2UL
5793c0c050c5SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_TSA_ASSIGN_RESERVED_LAST  0xffUL
5794c0c050c5SMichael Chan 	u8	queue_id0_pri_lvl;
5795c0c050c5SMichael Chan 	u8	queue_id0_bw_weight;
5796c0c050c5SMichael Chan 	struct {
5797c0c050c5SMichael Chan 		u8	queue_id;
5798c0c050c5SMichael Chan 		__le32	queue_id_min_bw;
5799c0c050c5SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MIN_BW_BW_VALUE_MASK             0xfffffffUL
5800c0c050c5SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MIN_BW_BW_VALUE_SFT              0
5801c0c050c5SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MIN_BW_SCALE                     0x10000000UL
5802c0c050c5SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MIN_BW_SCALE_BITS                  (0x0UL << 28)
5803c0c050c5SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MIN_BW_SCALE_BYTES                 (0x1UL << 28)
5804c0c050c5SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MIN_BW_SCALE_LAST                 QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MIN_BW_SCALE_BYTES
5805c0c050c5SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MIN_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
5806c0c050c5SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MIN_BW_BW_VALUE_UNIT_SFT         29
5807c0c050c5SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MIN_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
5808c0c050c5SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MIN_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
5809441cabbbSMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MIN_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
5810441cabbbSMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MIN_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
5811bac9a7e0SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MIN_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
5812bac9a7e0SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MIN_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
5813bac9a7e0SMichael 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
5814bac9a7e0SMichael Chan 		__le32	queue_id_max_bw;
5815441cabbbSMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MAX_BW_BW_VALUE_MASK             0xfffffffUL
5816441cabbbSMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MAX_BW_BW_VALUE_SFT              0
5817bac9a7e0SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MAX_BW_SCALE                     0x10000000UL
5818bac9a7e0SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MAX_BW_SCALE_BITS                  (0x0UL << 28)
5819bac9a7e0SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MAX_BW_SCALE_BYTES                 (0x1UL << 28)
5820bac9a7e0SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MAX_BW_SCALE_LAST                 QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MAX_BW_SCALE_BYTES
5821441cabbbSMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MAX_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
5822441cabbbSMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MAX_BW_BW_VALUE_UNIT_SFT         29
5823441cabbbSMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MAX_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
5824c0c050c5SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MAX_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
5825441cabbbSMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MAX_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
5826441cabbbSMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MAX_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
5827bac9a7e0SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MAX_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
5828bac9a7e0SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_MAX_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
5829bac9a7e0SMichael 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
5830bac9a7e0SMichael Chan 		u8	queue_id_tsa_assign;
5831441cabbbSMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_TSA_ASSIGN_SP             0x0UL
5832441cabbbSMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_TSA_ASSIGN_ETS            0x1UL
5833bac9a7e0SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_TSA_ASSIGN_RESERVED_FIRST 0x2UL
5834bac9a7e0SMichael Chan 	#define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID_TSA_ASSIGN_RESERVED_LAST  0xffUL
5835bac9a7e0SMichael Chan 		u8	queue_id_pri_lvl;
5836bac9a7e0SMichael Chan 		u8	queue_id_bw_weight;
5837441cabbbSMichael Chan 	} __packed cfg[7];
5838441cabbbSMichael Chan 	u8	unused_2[4];
5839441cabbbSMichael Chan 	u8	valid;
5840c0c050c5SMichael Chan };
5841441cabbbSMichael Chan 
5842441cabbbSMichael Chan /* hwrm_queue_cos2bw_cfg_input (size:1024b/128B) */
5843441cabbbSMichael Chan struct hwrm_queue_cos2bw_cfg_input {
5844441cabbbSMichael Chan 	__le16	req_type;
5845c0c050c5SMichael Chan 	__le16	cmpl_ring;
5846c0c050c5SMichael Chan 	__le16	seq_id;
5847*3d5ecadaSMichael Chan 	__le16	target_id;
5848*3d5ecadaSMichael Chan 	__le64	resp_addr;
5849*3d5ecadaSMichael Chan 	__le32	flags;
5850*3d5ecadaSMichael Chan 	__le32	enables;
5851*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_ENABLES_COS_QUEUE_ID0_VALID     0x1UL
5852*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_ENABLES_COS_QUEUE_ID1_VALID     0x2UL
5853*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_ENABLES_COS_QUEUE_ID2_VALID     0x4UL
5854*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_ENABLES_COS_QUEUE_ID3_VALID     0x8UL
5855*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_ENABLES_COS_QUEUE_ID4_VALID     0x10UL
5856*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_ENABLES_COS_QUEUE_ID5_VALID     0x20UL
5857*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_ENABLES_COS_QUEUE_ID6_VALID     0x40UL
5858*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_ENABLES_COS_QUEUE_ID7_VALID     0x80UL
5859*3d5ecadaSMichael Chan 	__le16	port_id;
5860*3d5ecadaSMichael Chan 	u8	queue_id0;
5861*3d5ecadaSMichael Chan 	u8	unused_0;
5862*3d5ecadaSMichael Chan 	__le32	queue_id0_min_bw;
5863*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_MASK             0xfffffffUL
5864*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_SFT              0
5865*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_SCALE                     0x10000000UL
5866*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_SCALE_BITS                  (0x0UL << 28)
5867*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_SCALE_BYTES                 (0x1UL << 28)
5868*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_SCALE_LAST                 QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_SCALE_BYTES
5869*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
5870*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_SFT         29
5871*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
5872*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
5873*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
5874*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
5875*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
5876*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
5877*3d5ecadaSMichael 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
5878*3d5ecadaSMichael Chan 	__le32	queue_id0_max_bw;
5879*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_MASK             0xfffffffUL
5880*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_SFT              0
5881*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_SCALE                     0x10000000UL
5882*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_SCALE_BITS                  (0x0UL << 28)
5883*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_SCALE_BYTES                 (0x1UL << 28)
5884*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_SCALE_LAST                 QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_SCALE_BYTES
5885*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
5886*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_SFT         29
5887*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
5888*3d5ecadaSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
5889c0c050c5SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
5890c0c050c5SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
5891c0c050c5SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
5892894aa69aSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
5893c0c050c5SMichael 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;
5895c0c050c5SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_TSA_ASSIGN_SP             0x0UL
5896c0c050c5SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_TSA_ASSIGN_ETS            0x1UL
5897c0c050c5SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_TSA_ASSIGN_RESERVED_FIRST 0x2UL
5898894aa69aSMichael 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;
5901c0c050c5SMichael Chan 	struct {
5902894aa69aSMichael Chan 		u8	queue_id;
5903acb20054SMichael Chan 		__le32	queue_id_min_bw;
5904acb20054SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MIN_BW_BW_VALUE_MASK             0xfffffffUL
5905acb20054SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MIN_BW_BW_VALUE_SFT              0
5906acb20054SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MIN_BW_SCALE                     0x10000000UL
5907acb20054SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MIN_BW_SCALE_BITS                  (0x0UL << 28)
5908acb20054SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MIN_BW_SCALE_BYTES                 (0x1UL << 28)
5909acb20054SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MIN_BW_SCALE_LAST                 QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MIN_BW_SCALE_BYTES
5910acb20054SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MIN_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
5911acb20054SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MIN_BW_BW_VALUE_UNIT_SFT         29
5912acb20054SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MIN_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
5913894aa69aSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MIN_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
5914acb20054SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MIN_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
5915acb20054SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MIN_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
5916acb20054SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MIN_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
5917acb20054SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MIN_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
5918acb20054SMichael 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
5919acb20054SMichael Chan 		__le32	queue_id_max_bw;
5920acb20054SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MAX_BW_BW_VALUE_MASK             0xfffffffUL
5921acb20054SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MAX_BW_BW_VALUE_SFT              0
5922894aa69aSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MAX_BW_SCALE                     0x10000000UL
5923acb20054SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MAX_BW_SCALE_BITS                  (0x0UL << 28)
5924acb20054SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MAX_BW_SCALE_BYTES                 (0x1UL << 28)
5925acb20054SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MAX_BW_SCALE_LAST                 QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MAX_BW_SCALE_BYTES
5926894aa69aSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MAX_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
5927acb20054SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MAX_BW_BW_VALUE_UNIT_SFT         29
5928acb20054SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MAX_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
5929acb20054SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MAX_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
5930acb20054SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MAX_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
5931acb20054SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MAX_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
5932acb20054SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MAX_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
5933acb20054SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_MAX_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
5934acb20054SMichael 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
5935acb20054SMichael Chan 		u8	queue_id_tsa_assign;
5936acb20054SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_TSA_ASSIGN_SP             0x0UL
5937894aa69aSMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_TSA_ASSIGN_ETS            0x1UL
5938acb20054SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_TSA_ASSIGN_RESERVED_FIRST 0x2UL
5939acb20054SMichael Chan 	#define QUEUE_COS2BW_CFG_REQ_QUEUE_ID_TSA_ASSIGN_RESERVED_LAST  0xffUL
5940894aa69aSMichael Chan 		u8	queue_id_pri_lvl;
5941acb20054SMichael Chan 		u8	queue_id_bw_weight;
5942acb20054SMichael Chan 	} __packed cfg[7];
5943acb20054SMichael Chan 	u8	unused_1[5];
5944acb20054SMichael Chan };
5945acb20054SMichael Chan 
5946acb20054SMichael Chan /* hwrm_queue_cos2bw_cfg_output (size:128b/16B) */
5947acb20054SMichael Chan struct hwrm_queue_cos2bw_cfg_output {
5948894aa69aSMichael Chan 	__le16	error_code;
5949acb20054SMichael Chan 	__le16	req_type;
5950acb20054SMichael Chan 	__le16	seq_id;
5951acb20054SMichael Chan 	__le16	resp_len;
5952894aa69aSMichael Chan 	u8	unused_0[7];
5953acb20054SMichael Chan 	u8	valid;
5954acb20054SMichael Chan };
5955acb20054SMichael Chan 
5956acb20054SMichael 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;
5970894aa69aSMichael 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) */
5981c0c050c5SMichael Chan struct hwrm_queue_dscp2pri_qcfg_input {
5982c0c050c5SMichael Chan 	__le16	req_type;
5983c0c050c5SMichael Chan 	__le16	cmpl_ring;
5984c0c050c5SMichael Chan 	__le16	seq_id;
5985c0c050c5SMichael Chan 	__le16	target_id;
5986c0c050c5SMichael Chan 	__le64	resp_addr;
5987c0c050c5SMichael Chan 	__le64	dest_data_addr;
5988c0c050c5SMichael Chan 	u8	port_id;
598916db6323SMichael Chan 	u8	unused_0;
599016db6323SMichael Chan 	__le16	dest_data_buffer_size;
599116db6323SMichael Chan 	u8	unused_1[4];
5992c0c050c5SMichael Chan };
5993c0c050c5SMichael Chan 
5994894aa69aSMichael Chan /* hwrm_queue_dscp2pri_qcfg_output (size:128b/16B) */
5995c0c050c5SMichael Chan struct hwrm_queue_dscp2pri_qcfg_output {
5996c0c050c5SMichael Chan 	__le16	error_code;
5997c0c050c5SMichael Chan 	__le16	req_type;
5998c0c050c5SMichael Chan 	__le16	seq_id;
5999c0c050c5SMichael Chan 	__le16	resp_len;
6000c0c050c5SMichael Chan 	__le16	entry_cnt;
6001894aa69aSMichael Chan 	u8	default_pri;
6002c0c050c5SMichael Chan 	u8	unused_0[4];
6003c0c050c5SMichael Chan 	u8	valid;
6004c0c050c5SMichael Chan };
6005894aa69aSMichael Chan 
6006c0c050c5SMichael Chan /* hwrm_queue_dscp2pri_cfg_input (size:320b/40B) */
6007c0c050c5SMichael Chan struct hwrm_queue_dscp2pri_cfg_input {
6008c0c050c5SMichael Chan 	__le16	req_type;
6009c0c050c5SMichael Chan 	__le16	cmpl_ring;
6010c0c050c5SMichael Chan 	__le16	seq_id;
6011c0c050c5SMichael Chan 	__le16	target_id;
6012c0c050c5SMichael Chan 	__le64	resp_addr;
6013894aa69aSMichael Chan 	__le64	src_data_addr;
6014c0c050c5SMichael Chan 	__le32	flags;
6015c0c050c5SMichael Chan 	#define QUEUE_DSCP2PRI_CFG_REQ_FLAGS_USE_HW_DEFAULT_PRI     0x1UL
6016894aa69aSMichael Chan 	__le32	enables;
6017c0c050c5SMichael Chan 	#define QUEUE_DSCP2PRI_CFG_REQ_ENABLES_DEFAULT_PRI     0x1UL
6018c0c050c5SMichael Chan 	u8	port_id;
6019c0c050c5SMichael Chan 	u8	default_pri;
6020c0c050c5SMichael Chan 	__le16	entry_cnt;
6021c0c050c5SMichael Chan 	u8	unused_0[4];
6022894aa69aSMichael Chan };
6023c0c050c5SMichael Chan 
6024c0c050c5SMichael Chan /* hwrm_queue_dscp2pri_cfg_output (size:128b/16B) */
6025c0c050c5SMichael Chan struct hwrm_queue_dscp2pri_cfg_output {
602672e0c9f9SMichael Chan 	__le16	error_code;
6027c0c050c5SMichael Chan 	__le16	req_type;
6028c0c050c5SMichael Chan 	__le16	seq_id;
6029c0c050c5SMichael Chan 	__le16	resp_len;
6030c0c050c5SMichael Chan 	u8	unused_0[7];
6031c0c050c5SMichael Chan 	u8	valid;
6032c0c050c5SMichael Chan };
6033c0c050c5SMichael Chan 
6034c0c050c5SMichael Chan /* hwrm_vnic_alloc_input (size:192b/24B) */
6035c0c050c5SMichael Chan struct hwrm_vnic_alloc_input {
6036c193554eSMichael Chan 	__le16	req_type;
603711f15ed3SMichael Chan 	__le16	cmpl_ring;
603811f15ed3SMichael Chan 	__le16	seq_id;
6039441cabbbSMichael Chan 	__le16	target_id;
604057922b0aSMichael Chan 	__le64	resp_addr;
6041c0c050c5SMichael Chan 	__le32	flags;
6042c0c050c5SMichael Chan 	#define VNIC_ALLOC_REQ_FLAGS_DEFAULT                  0x1UL
6043c0c050c5SMichael Chan 	#define VNIC_ALLOC_REQ_FLAGS_VIRTIO_NET_FID_VALID     0x2UL
6044c0c050c5SMichael Chan 	__le16	virtio_net_fid;
6045c0c050c5SMichael Chan 	u8	unused_0[2];
6046c0c050c5SMichael Chan };
60476fc92c33SMichael Chan 
60486fc92c33SMichael Chan /* hwrm_vnic_alloc_output (size:128b/16B) */
604972e0c9f9SMichael Chan struct hwrm_vnic_alloc_output {
6050bfc6e5fbSMichael Chan 	__le16	error_code;
6051ad04cc05SMichael Chan 	__le16	req_type;
6052c0c050c5SMichael Chan 	__le16	seq_id;
6053c0c050c5SMichael Chan 	__le16	resp_len;
6054c0c050c5SMichael Chan 	__le32	vnic_id;
6055c0c050c5SMichael Chan 	u8	unused_0[3];
6056c0c050c5SMichael Chan 	u8	valid;
6057c0c050c5SMichael Chan };
60586fc92c33SMichael Chan 
60596fc92c33SMichael Chan /* hwrm_vnic_free_input (size:192b/24B) */
606072e0c9f9SMichael Chan struct hwrm_vnic_free_input {
6061bfc6e5fbSMichael Chan 	__le16	req_type;
6062bfc6e5fbSMichael Chan 	__le16	cmpl_ring;
6063bfc6e5fbSMichael Chan 	__le16	seq_id;
6064bfc6e5fbSMichael Chan 	__le16	target_id;
6065bfc6e5fbSMichael Chan 	__le64	resp_addr;
6066ad04cc05SMichael Chan 	__le32	vnic_id;
6067ad04cc05SMichael Chan 	u8	unused_0[4];
6068ad04cc05SMichael Chan };
6069ad04cc05SMichael Chan 
6070ad04cc05SMichael Chan /* hwrm_vnic_free_output (size:128b/16B) */
6071ad04cc05SMichael Chan struct hwrm_vnic_free_output {
6072c0c050c5SMichael Chan 	__le16	error_code;
6073c0c050c5SMichael Chan 	__le16	req_type;
6074894aa69aSMichael Chan 	__le16	seq_id;
6075c0c050c5SMichael Chan 	__le16	resp_len;
6076c0c050c5SMichael Chan 	u8	unused_0[7];
6077c0c050c5SMichael Chan 	u8	valid;
6078c0c050c5SMichael Chan };
6079c0c050c5SMichael Chan 
6080894aa69aSMichael 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;
6084894aa69aSMichael Chan 	__le16	seq_id;
60858fdefd63SMichael Chan 	__le16	target_id;
60868fdefd63SMichael Chan 	__le64	resp_addr;
60878fdefd63SMichael Chan 	__le32	flags;
60888fdefd63SMichael Chan 	#define VNIC_CFG_REQ_FLAGS_DEFAULT                              0x1UL
60898fdefd63SMichael Chan 	#define VNIC_CFG_REQ_FLAGS_VLAN_STRIP_MODE                      0x2UL
60908fdefd63SMichael Chan 	#define VNIC_CFG_REQ_FLAGS_BD_STALL_MODE                        0x4UL
60918fdefd63SMichael Chan 	#define VNIC_CFG_REQ_FLAGS_ROCE_DUAL_VNIC_MODE                  0x8UL
6092894aa69aSMichael Chan 	#define VNIC_CFG_REQ_FLAGS_ROCE_ONLY_VNIC_MODE                  0x10UL
60938fdefd63SMichael Chan 	#define VNIC_CFG_REQ_FLAGS_RSS_DFLT_CR_MODE                     0x20UL
60948fdefd63SMichael Chan 	#define VNIC_CFG_REQ_FLAGS_ROCE_MIRRORING_CAPABLE_VNIC_MODE     0x40UL
6095894aa69aSMichael Chan 	__le32	enables;
60968fdefd63SMichael Chan 	#define VNIC_CFG_REQ_ENABLES_DFLT_RING_GRP            0x1UL
60978fdefd63SMichael Chan 	#define VNIC_CFG_REQ_ENABLES_RSS_RULE                 0x2UL
60988fdefd63SMichael Chan 	#define VNIC_CFG_REQ_ENABLES_COS_RULE                 0x4UL
60998fdefd63SMichael Chan 	#define VNIC_CFG_REQ_ENABLES_LB_RULE                  0x8UL
61008fdefd63SMichael Chan 	#define VNIC_CFG_REQ_ENABLES_MRU                      0x10UL
61018fdefd63SMichael Chan 	#define VNIC_CFG_REQ_ENABLES_DEFAULT_RX_RING_ID       0x20UL
6102894aa69aSMichael Chan 	#define VNIC_CFG_REQ_ENABLES_DEFAULT_CMPL_RING_ID     0x40UL
61038fdefd63SMichael Chan 	#define VNIC_CFG_REQ_ENABLES_QUEUE_ID                 0x80UL
6104bac9a7e0SMichael Chan 	#define VNIC_CFG_REQ_ENABLES_RX_CSUM_V2_MODE          0x100UL
61058fdefd63SMichael Chan 	#define VNIC_CFG_REQ_ENABLES_L2_CQE_MODE              0x200UL
61068fdefd63SMichael Chan 	__le16	vnic_id;
61078fdefd63SMichael Chan 	__le16	dflt_ring_grp;
61088fdefd63SMichael Chan 	__le16	rss_rule;
61098fdefd63SMichael Chan 	__le16	cos_rule;
6110894aa69aSMichael Chan 	__le16	lb_rule;
61116fc92c33SMichael Chan 	__le16	mru;
611272e0c9f9SMichael Chan 	__le16	default_rx_ring_id;
6113bfc6e5fbSMichael Chan 	__le16	default_cmpl_ring_id;
611416db6323SMichael Chan 	__le16	queue_id;
611516db6323SMichael Chan 	u8	rx_csum_v2_mode;
611631f67c2eSMichael Chan 	#define VNIC_CFG_REQ_RX_CSUM_V2_MODE_DEFAULT 0x0UL
611778eeadb8SMichael Chan 	#define VNIC_CFG_REQ_RX_CSUM_V2_MODE_ALL_OK  0x1UL
611821e70778SMichael Chan 	#define VNIC_CFG_REQ_RX_CSUM_V2_MODE_MAX     0x2UL
6119ad04cc05SMichael 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
612221e70778SMichael 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];
6126ad04cc05SMichael Chan };
6127ad04cc05SMichael Chan 
6128ad04cc05SMichael Chan /* hwrm_vnic_cfg_output (size:128b/16B) */
612984a911dbSMichael Chan struct hwrm_vnic_cfg_output {
61304a50ddc2SMichael Chan 	__le16	error_code;
61314a50ddc2SMichael Chan 	__le16	req_type;
61328fdefd63SMichael Chan 	__le16	seq_id;
61338fdefd63SMichael Chan 	__le16	resp_len;
61348fdefd63SMichael Chan 	u8	unused_0[7];
6135894aa69aSMichael Chan 	u8	valid;
6136c0c050c5SMichael Chan };
6137c0c050c5SMichael Chan 
6138c0c050c5SMichael Chan /* hwrm_vnic_qcaps_input (size:192b/24B) */
6139c0c050c5SMichael Chan struct hwrm_vnic_qcaps_input {
6140c0c050c5SMichael Chan 	__le16	req_type;
6141c0c050c5SMichael Chan 	__le16	cmpl_ring;
6142c0c050c5SMichael Chan 	__le16	seq_id;
6143c0c050c5SMichael Chan 	__le16	target_id;
6144c0c050c5SMichael Chan 	__le64	resp_addr;
6145c0c050c5SMichael Chan 	__le32	enables;
6146c0c050c5SMichael Chan 	u8	unused_0[4];
6147c0c050c5SMichael Chan };
6148c0c050c5SMichael Chan 
6149c0c050c5SMichael Chan /* hwrm_vnic_qcaps_output (size:192b/24B) */
6150c0c050c5SMichael Chan struct hwrm_vnic_qcaps_output {
61514a50ddc2SMichael Chan 	__le16	error_code;
6152c0c050c5SMichael Chan 	__le16	req_type;
6153c0c050c5SMichael Chan 	__le16	seq_id;
6154c0c050c5SMichael Chan 	__le16	resp_len;
6155c0c050c5SMichael Chan 	__le16	mru;
6156c0c050c5SMichael Chan 	u8	unused_0[2];
6157c0c050c5SMichael Chan 	__le32	flags;
6158c0c050c5SMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_UNUSED                                  0x1UL
6159441cabbbSMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_VLAN_STRIP_CAP                          0x2UL
6160441cabbbSMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_BD_STALL_CAP                            0x4UL
6161441cabbbSMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_ROCE_DUAL_VNIC_CAP                      0x8UL
6162441cabbbSMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_ROCE_ONLY_VNIC_CAP                      0x10UL
6163441cabbbSMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_RSS_DFLT_CR_CAP                         0x20UL
6164894aa69aSMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_ROCE_MIRRORING_CAPABLE_VNIC_CAP         0x40UL
6165c0c050c5SMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_OUTERMOST_RSS_CAP                       0x80UL
6166441cabbbSMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_COS_ASSIGNMENT_CAP                      0x100UL
6167441cabbbSMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_RX_CMPL_V2_CAP                          0x200UL
6168441cabbbSMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_VNIC_STATE_CAP                          0x400UL
6169441cabbbSMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_VIRTIO_NET_VNIC_ALLOC_CAP               0x800UL
6170441cabbbSMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_METADATA_FORMAT_CAP                     0x1000UL
6171441cabbbSMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_RSS_STRICT_HASH_TYPE_CAP                0x2000UL
6172894aa69aSMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_RSS_HASH_TYPE_DELTA_CAP                 0x4000UL
6173894aa69aSMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_RING_SELECT_MODE_TOEPLITZ_CAP           0x8000UL
6174c0c050c5SMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_RING_SELECT_MODE_XOR_CAP                0x10000UL
6175c0c050c5SMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_RING_SELECT_MODE_TOEPLITZ_CHKSM_CAP     0x20000UL
6176c0c050c5SMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_RSS_IPV6_FLOW_LABEL_CAP                 0x40000UL
6177c0c050c5SMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_RX_CMPL_V3_CAP                          0x80000UL
6178894aa69aSMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_L2_CQE_MODE_CAP                         0x100000UL
6179c0c050c5SMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_RSS_IPSEC_AH_SPI_IPV4_CAP               0x200000UL
6180c0c050c5SMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_RSS_IPSEC_ESP_SPI_IPV4_CAP              0x400000UL
6181c0c050c5SMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_RSS_IPSEC_AH_SPI_IPV6_CAP               0x800000UL
6182c0c050c5SMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_RSS_IPSEC_ESP_SPI_IPV6_CAP              0x1000000UL
6183c0c050c5SMichael Chan 	#define VNIC_QCAPS_RESP_FLAGS_OUTERMOST_RSS_TRUSTED_VF_CAP            0x2000000UL
6184894aa69aSMichael Chan 	__le16	max_aggs_supported;
6185c0c050c5SMichael Chan 	u8	unused_1[5];
6186c0c050c5SMichael Chan 	u8	valid;
6187c0c050c5SMichael Chan };
6188894aa69aSMichael Chan 
6189894aa69aSMichael Chan /* hwrm_vnic_tpa_cfg_input (size:320b/40B) */
6190894aa69aSMichael Chan struct hwrm_vnic_tpa_cfg_input {
6191894aa69aSMichael Chan 	__le16	req_type;
6192894aa69aSMichael Chan 	__le16	cmpl_ring;
6193894aa69aSMichael Chan 	__le16	seq_id;
6194894aa69aSMichael Chan 	__le16	target_id;
6195894aa69aSMichael Chan 	__le64	resp_addr;
6196894aa69aSMichael Chan 	__le32	flags;
6197894aa69aSMichael Chan 	#define VNIC_TPA_CFG_REQ_FLAGS_TPA                       0x1UL
6198894aa69aSMichael Chan 	#define VNIC_TPA_CFG_REQ_FLAGS_ENCAP_TPA                 0x2UL
6199894aa69aSMichael Chan 	#define VNIC_TPA_CFG_REQ_FLAGS_RSC_WND_UPDATE            0x4UL
6200894aa69aSMichael Chan 	#define VNIC_TPA_CFG_REQ_FLAGS_GRO                       0x8UL
6201894aa69aSMichael Chan 	#define VNIC_TPA_CFG_REQ_FLAGS_AGG_WITH_ECN              0x10UL
6202894aa69aSMichael Chan 	#define VNIC_TPA_CFG_REQ_FLAGS_AGG_WITH_SAME_GRE_SEQ     0x20UL
6203894aa69aSMichael Chan 	#define VNIC_TPA_CFG_REQ_FLAGS_GRO_IPID_CHECK            0x40UL
6204894aa69aSMichael Chan 	#define VNIC_TPA_CFG_REQ_FLAGS_GRO_TTL_CHECK             0x80UL
6205894aa69aSMichael Chan 	#define VNIC_TPA_CFG_REQ_FLAGS_AGG_PACK_AS_GRO           0x100UL
6206894aa69aSMichael Chan 	__le32	enables;
6207894aa69aSMichael Chan 	#define VNIC_TPA_CFG_REQ_ENABLES_MAX_AGG_SEGS      0x1UL
6208894aa69aSMichael Chan 	#define VNIC_TPA_CFG_REQ_ENABLES_MAX_AGGS          0x2UL
6209894aa69aSMichael Chan 	#define VNIC_TPA_CFG_REQ_ENABLES_MAX_AGG_TIMER     0x4UL
6210894aa69aSMichael Chan 	#define VNIC_TPA_CFG_REQ_ENABLES_MIN_AGG_LEN       0x8UL
6211894aa69aSMichael Chan 	__le16	vnic_id;
6212894aa69aSMichael Chan 	__le16	max_agg_segs;
6213894aa69aSMichael Chan 	#define VNIC_TPA_CFG_REQ_MAX_AGG_SEGS_1   0x0UL
6214894aa69aSMichael Chan 	#define VNIC_TPA_CFG_REQ_MAX_AGG_SEGS_2   0x1UL
6215894aa69aSMichael Chan 	#define VNIC_TPA_CFG_REQ_MAX_AGG_SEGS_4   0x2UL
6216894aa69aSMichael Chan 	#define VNIC_TPA_CFG_REQ_MAX_AGG_SEGS_8   0x3UL
6217894aa69aSMichael 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
6219894aa69aSMichael Chan 	__le16	max_aggs;
6220894aa69aSMichael Chan 	#define VNIC_TPA_CFG_REQ_MAX_AGGS_1   0x0UL
6221894aa69aSMichael Chan 	#define VNIC_TPA_CFG_REQ_MAX_AGGS_2   0x1UL
6222894aa69aSMichael Chan 	#define VNIC_TPA_CFG_REQ_MAX_AGGS_4   0x2UL
6223894aa69aSMichael Chan 	#define VNIC_TPA_CFG_REQ_MAX_AGGS_8   0x3UL
6224894aa69aSMichael Chan 	#define VNIC_TPA_CFG_REQ_MAX_AGGS_16  0x4UL
6225894aa69aSMichael 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];
6228894aa69aSMichael Chan 	__le32	max_agg_timer;
6229894aa69aSMichael Chan 	__le32	min_agg_len;
6230894aa69aSMichael Chan };
6231894aa69aSMichael Chan 
6232894aa69aSMichael Chan /* hwrm_vnic_tpa_cfg_output (size:128b/16B) */
6233894aa69aSMichael Chan struct hwrm_vnic_tpa_cfg_output {
6234894aa69aSMichael Chan 	__le16	error_code;
6235894aa69aSMichael Chan 	__le16	req_type;
6236c0c050c5SMichael Chan 	__le16	seq_id;
6237c0c050c5SMichael Chan 	__le16	resp_len;
6238c0c050c5SMichael Chan 	u8	unused_0[7];
6239c0c050c5SMichael Chan 	u8	valid;
6240c0c050c5SMichael Chan };
6241c0c050c5SMichael Chan 
6242c0c050c5SMichael Chan /* hwrm_vnic_tpa_qcfg_input (size:192b/24B) */
6243c0c050c5SMichael Chan struct hwrm_vnic_tpa_qcfg_input {
6244c0c050c5SMichael Chan 	__le16	req_type;
6245c0c050c5SMichael Chan 	__le16	cmpl_ring;
6246c0c050c5SMichael Chan 	__le16	seq_id;
6247c0c050c5SMichael Chan 	__le16	target_id;
6248c0c050c5SMichael Chan 	__le64	resp_addr;
62492895c153SMichael Chan 	__le16	vnic_id;
6250ad04cc05SMichael Chan 	u8	unused_0[6];
6251ad04cc05SMichael Chan };
6252ad04cc05SMichael Chan 
6253ad04cc05SMichael Chan /* hwrm_vnic_tpa_qcfg_output (size:256b/32B) */
62546fc92c33SMichael Chan struct hwrm_vnic_tpa_qcfg_output {
62556fc92c33SMichael Chan 	__le16	error_code;
62566fc92c33SMichael Chan 	__le16	req_type;
62576fc92c33SMichael Chan 	__le16	seq_id;
62586fc92c33SMichael Chan 	__le16	resp_len;
62596fc92c33SMichael Chan 	__le32	flags;
62606fc92c33SMichael Chan 	#define VNIC_TPA_QCFG_RESP_FLAGS_TPA                       0x1UL
62616fc92c33SMichael Chan 	#define VNIC_TPA_QCFG_RESP_FLAGS_ENCAP_TPA                 0x2UL
6262c0c050c5SMichael Chan 	#define VNIC_TPA_QCFG_RESP_FLAGS_RSC_WND_UPDATE            0x4UL
6263c0c050c5SMichael Chan 	#define VNIC_TPA_QCFG_RESP_FLAGS_GRO                       0x8UL
6264c0c050c5SMichael Chan 	#define VNIC_TPA_QCFG_RESP_FLAGS_AGG_WITH_ECN              0x10UL
626521e70778SMichael Chan 	#define VNIC_TPA_QCFG_RESP_FLAGS_AGG_WITH_SAME_GRE_SEQ     0x20UL
626621e70778SMichael Chan 	#define VNIC_TPA_QCFG_RESP_FLAGS_GRO_IPID_CHECK            0x40UL
626721e70778SMichael Chan 	#define VNIC_TPA_QCFG_RESP_FLAGS_GRO_TTL_CHECK             0x80UL
6268ad04cc05SMichael Chan 	__le16	max_agg_segs;
6269ad04cc05SMichael Chan 	#define VNIC_TPA_QCFG_RESP_MAX_AGG_SEGS_1   0x0UL
6270ad04cc05SMichael Chan 	#define VNIC_TPA_QCFG_RESP_MAX_AGG_SEGS_2   0x1UL
6271ad04cc05SMichael Chan 	#define VNIC_TPA_QCFG_RESP_MAX_AGG_SEGS_4   0x2UL
6272ad04cc05SMichael Chan 	#define VNIC_TPA_QCFG_RESP_MAX_AGG_SEGS_8   0x3UL
627321e70778SMichael Chan 	#define VNIC_TPA_QCFG_RESP_MAX_AGG_SEGS_MAX 0x1fUL
6274c0c050c5SMichael Chan 	#define VNIC_TPA_QCFG_RESP_MAX_AGG_SEGS_LAST VNIC_TPA_QCFG_RESP_MAX_AGG_SEGS_MAX
6275c0c050c5SMichael Chan 	__le16	max_aggs;
6276894aa69aSMichael Chan 	#define VNIC_TPA_QCFG_RESP_MAX_AGGS_1   0x0UL
6277c0c050c5SMichael Chan 	#define VNIC_TPA_QCFG_RESP_MAX_AGGS_2   0x1UL
6278c0c050c5SMichael Chan 	#define VNIC_TPA_QCFG_RESP_MAX_AGGS_4   0x2UL
6279c0c050c5SMichael Chan 	#define VNIC_TPA_QCFG_RESP_MAX_AGGS_8   0x3UL
6280c0c050c5SMichael Chan 	#define VNIC_TPA_QCFG_RESP_MAX_AGGS_16  0x4UL
6281c0c050c5SMichael 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
6283c0c050c5SMichael Chan 	__le32	max_agg_timer;
6284c0c050c5SMichael Chan 	__le32	min_agg_len;
6285c0c050c5SMichael Chan 	u8	unused_0[7];
628641136ab3SMichael Chan 	u8	valid;
628741136ab3SMichael Chan };
628841136ab3SMichael Chan 
628941136ab3SMichael Chan /* hwrm_vnic_rss_cfg_input (size:384b/48B) */
629041136ab3SMichael Chan struct hwrm_vnic_rss_cfg_input {
629141136ab3SMichael Chan 	__le16	req_type;
629241136ab3SMichael Chan 	__le16	cmpl_ring;
629341136ab3SMichael Chan 	__le16	seq_id;
629441136ab3SMichael Chan 	__le16	target_id;
629598a4322bSEdwin Peer 	__le64	resp_addr;
629698a4322bSEdwin Peer 	__le32	hash_type;
629798a4322bSEdwin Peer 	#define VNIC_RSS_CFG_REQ_HASH_TYPE_IPV4                0x1UL
629898a4322bSEdwin Peer 	#define VNIC_RSS_CFG_REQ_HASH_TYPE_TCP_IPV4            0x2UL
629998a4322bSEdwin Peer 	#define VNIC_RSS_CFG_REQ_HASH_TYPE_UDP_IPV4            0x4UL
630098a4322bSEdwin Peer 	#define VNIC_RSS_CFG_REQ_HASH_TYPE_IPV6                0x8UL
630198a4322bSEdwin Peer 	#define VNIC_RSS_CFG_REQ_HASH_TYPE_TCP_IPV6            0x10UL
630298a4322bSEdwin Peer 	#define VNIC_RSS_CFG_REQ_HASH_TYPE_UDP_IPV6            0x20UL
630398a4322bSEdwin Peer 	#define VNIC_RSS_CFG_REQ_HASH_TYPE_IPV6_FLOW_LABEL     0x40UL
630498a4322bSEdwin Peer 	#define VNIC_RSS_CFG_REQ_HASH_TYPE_AH_SPI_IPV4         0x80UL
630598a4322bSEdwin Peer 	#define VNIC_RSS_CFG_REQ_HASH_TYPE_ESP_SPI_IPV4        0x100UL
630698a4322bSEdwin Peer 	#define VNIC_RSS_CFG_REQ_HASH_TYPE_AH_SPI_IPV6         0x200UL
630798a4322bSEdwin Peer 	#define VNIC_RSS_CFG_REQ_HASH_TYPE_ESP_SPI_IPV6        0x400UL
630898a4322bSEdwin Peer 	__le16	vnic_id;
630998a4322bSEdwin Peer 	u8	ring_table_pair_index;
631098a4322bSEdwin Peer 	u8	hash_mode_flags;
631198a4322bSEdwin Peer 	#define VNIC_RSS_CFG_REQ_HASH_MODE_FLAGS_DEFAULT         0x1UL
631298a4322bSEdwin Peer 	#define VNIC_RSS_CFG_REQ_HASH_MODE_FLAGS_INNERMOST_4     0x2UL
631398a4322bSEdwin Peer 	#define VNIC_RSS_CFG_REQ_HASH_MODE_FLAGS_INNERMOST_2     0x4UL
631498a4322bSEdwin Peer 	#define VNIC_RSS_CFG_REQ_HASH_MODE_FLAGS_OUTERMOST_4     0x8UL
631598a4322bSEdwin Peer 	#define VNIC_RSS_CFG_REQ_HASH_MODE_FLAGS_OUTERMOST_2     0x10UL
631698a4322bSEdwin Peer 	__le64	ring_grp_tbl_addr;
631798a4322bSEdwin Peer 	__le64	hash_key_tbl_addr;
631898a4322bSEdwin Peer 	__le16	rss_ctx_idx;
631998a4322bSEdwin Peer 	u8	flags;
632098a4322bSEdwin Peer 	#define VNIC_RSS_CFG_REQ_FLAGS_HASH_TYPE_INCLUDE     0x1UL
632198a4322bSEdwin Peer 	#define VNIC_RSS_CFG_REQ_FLAGS_HASH_TYPE_EXCLUDE     0x2UL
632298a4322bSEdwin Peer 	u8	ring_select_mode;
632398a4322bSEdwin Peer 	#define VNIC_RSS_CFG_REQ_RING_SELECT_MODE_TOEPLITZ          0x0UL
632498a4322bSEdwin Peer 	#define VNIC_RSS_CFG_REQ_RING_SELECT_MODE_XOR               0x1UL
632598a4322bSEdwin Peer 	#define VNIC_RSS_CFG_REQ_RING_SELECT_MODE_TOEPLITZ_CHECKSUM 0x2UL
632698a4322bSEdwin Peer 	#define VNIC_RSS_CFG_REQ_RING_SELECT_MODE_LAST             VNIC_RSS_CFG_REQ_RING_SELECT_MODE_TOEPLITZ_CHECKSUM
632798a4322bSEdwin Peer 	u8	unused_1[4];
632898a4322bSEdwin Peer };
632998a4322bSEdwin Peer 
633098a4322bSEdwin Peer /* hwrm_vnic_rss_cfg_output (size:128b/16B) */
633198a4322bSEdwin Peer struct hwrm_vnic_rss_cfg_output {
633298a4322bSEdwin Peer 	__le16	error_code;
633398a4322bSEdwin Peer 	__le16	req_type;
633498a4322bSEdwin Peer 	__le16	seq_id;
633598a4322bSEdwin Peer 	__le16	resp_len;
633698a4322bSEdwin Peer 	u8	unused_0[7];
633798a4322bSEdwin Peer 	u8	valid;
633898a4322bSEdwin Peer };
633998a4322bSEdwin Peer 
634098a4322bSEdwin Peer /* hwrm_vnic_rss_cfg_cmd_err (size:64b/8B) */
634198a4322bSEdwin Peer struct hwrm_vnic_rss_cfg_cmd_err {
6342894aa69aSMichael Chan 	u8	code;
6343c0c050c5SMichael Chan 	#define VNIC_RSS_CFG_CMD_ERR_CODE_UNKNOWN             0x0UL
6344c0c050c5SMichael Chan 	#define VNIC_RSS_CFG_CMD_ERR_CODE_INTERFACE_NOT_READY 0x1UL
6345c0c050c5SMichael Chan 	#define VNIC_RSS_CFG_CMD_ERR_CODE_LAST               VNIC_RSS_CFG_CMD_ERR_CODE_INTERFACE_NOT_READY
6346c0c050c5SMichael Chan 	u8	unused_0[7];
6347c0c050c5SMichael Chan };
6348c0c050c5SMichael Chan 
6349c0c050c5SMichael Chan /* hwrm_vnic_rss_qcfg_input (size:192b/24B) */
6350c0c050c5SMichael Chan struct hwrm_vnic_rss_qcfg_input {
6351c0c050c5SMichael Chan 	__le16	req_type;
6352c0c050c5SMichael Chan 	__le16	cmpl_ring;
6353c0c050c5SMichael Chan 	__le16	seq_id;
6354c0c050c5SMichael Chan 	__le16	target_id;
6355c0c050c5SMichael Chan 	__le64	resp_addr;
6356bfc6e5fbSMichael Chan 	__le16	rss_ctx_idx;
6357c0c050c5SMichael Chan 	__le16	vnic_id;
6358c0c050c5SMichael Chan 	u8	unused_0[4];
6359c0c050c5SMichael Chan };
6360c0c050c5SMichael Chan 
6361bfc6e5fbSMichael Chan /* hwrm_vnic_rss_qcfg_output (size:512b/64B) */
6362c0c050c5SMichael Chan struct hwrm_vnic_rss_qcfg_output {
6363c0c050c5SMichael Chan 	__le16	error_code;
6364c0c050c5SMichael Chan 	__le16	req_type;
6365c0c050c5SMichael Chan 	__le16	seq_id;
6366bfc6e5fbSMichael Chan 	__le16	resp_len;
6367bfc6e5fbSMichael Chan 	__le32	hash_type;
6368c0c050c5SMichael Chan 	#define VNIC_RSS_QCFG_RESP_HASH_TYPE_IPV4                0x1UL
6369c0c050c5SMichael Chan 	#define VNIC_RSS_QCFG_RESP_HASH_TYPE_TCP_IPV4            0x2UL
6370894aa69aSMichael Chan 	#define VNIC_RSS_QCFG_RESP_HASH_TYPE_UDP_IPV4            0x4UL
6371c0c050c5SMichael Chan 	#define VNIC_RSS_QCFG_RESP_HASH_TYPE_IPV6                0x8UL
6372c0c050c5SMichael Chan 	#define VNIC_RSS_QCFG_RESP_HASH_TYPE_TCP_IPV6            0x10UL
6373c0c050c5SMichael Chan 	#define VNIC_RSS_QCFG_RESP_HASH_TYPE_UDP_IPV6            0x20UL
6374c0c050c5SMichael Chan 	#define VNIC_RSS_QCFG_RESP_HASH_TYPE_IPV6_FLOW_LABEL     0x40UL
6375c0c050c5SMichael Chan 	#define VNIC_RSS_QCFG_RESP_HASH_TYPE_AH_SPI_IPV4         0x80UL
6376894aa69aSMichael Chan 	#define VNIC_RSS_QCFG_RESP_HASH_TYPE_ESP_SPI_IPV4        0x100UL
6377c0c050c5SMichael Chan 	#define VNIC_RSS_QCFG_RESP_HASH_TYPE_AH_SPI_IPV6         0x200UL
6378c0c050c5SMichael Chan 	#define VNIC_RSS_QCFG_RESP_HASH_TYPE_ESP_SPI_IPV6        0x400UL
6379c0c050c5SMichael Chan 	u8	unused_0[4];
6380894aa69aSMichael Chan 	__le32	hash_key[10];
6381c0c050c5SMichael Chan 	u8	hash_mode_flags;
6382c0c050c5SMichael Chan 	#define VNIC_RSS_QCFG_RESP_HASH_MODE_FLAGS_DEFAULT         0x1UL
6383c0c050c5SMichael Chan 	#define VNIC_RSS_QCFG_RESP_HASH_MODE_FLAGS_INNERMOST_4     0x2UL
6384c0c050c5SMichael Chan 	#define VNIC_RSS_QCFG_RESP_HASH_MODE_FLAGS_INNERMOST_2     0x4UL
6385c0c050c5SMichael Chan 	#define VNIC_RSS_QCFG_RESP_HASH_MODE_FLAGS_OUTERMOST_4     0x8UL
6386c0c050c5SMichael Chan 	#define VNIC_RSS_QCFG_RESP_HASH_MODE_FLAGS_OUTERMOST_2     0x10UL
6387c0c050c5SMichael Chan 	u8	ring_select_mode;
6388c0c050c5SMichael Chan 	#define VNIC_RSS_QCFG_RESP_RING_SELECT_MODE_TOEPLITZ          0x0UL
6389894aa69aSMichael Chan 	#define VNIC_RSS_QCFG_RESP_RING_SELECT_MODE_XOR               0x1UL
6390c0c050c5SMichael Chan 	#define VNIC_RSS_QCFG_RESP_RING_SELECT_MODE_TOEPLITZ_CHECKSUM 0x2UL
6391c0c050c5SMichael Chan 	#define VNIC_RSS_QCFG_RESP_RING_SELECT_MODE_LAST             VNIC_RSS_QCFG_RESP_RING_SELECT_MODE_TOEPLITZ_CHECKSUM
6392c0c050c5SMichael Chan 	u8	unused_1[5];
6393c0c050c5SMichael Chan 	u8	valid;
6394c0c050c5SMichael Chan };
6395c0c050c5SMichael Chan 
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;
6400894aa69aSMichael 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
6408894aa69aSMichael Chan 	#define VNIC_PLCMODES_CFG_REQ_FLAGS_HDS_FCOE              0x10UL
6409c0c050c5SMichael Chan 	#define VNIC_PLCMODES_CFG_REQ_FLAGS_HDS_ROCE              0x20UL
6410c0c050c5SMichael Chan 	#define VNIC_PLCMODES_CFG_REQ_FLAGS_VIRTIO_PLACEMENT      0x40UL
6411894aa69aSMichael 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
6415c0c050c5SMichael Chan 	#define VNIC_PLCMODES_CFG_REQ_ENABLES_MAX_BDS_VALID           0x8UL
6416c0c050c5SMichael Chan 	__le32	vnic_id;
6417894aa69aSMichael Chan 	__le16	jumbo_thresh;
6418c0c050c5SMichael Chan 	__le16	hds_offset;
6419c0c050c5SMichael Chan 	__le16	hds_threshold;
6420c0c050c5SMichael Chan 	__le16	max_bds;
64216fc92c33SMichael Chan 	u8	unused_0[4];
6422c0c050c5SMichael Chan };
6423c0c050c5SMichael Chan 
6424c0c050c5SMichael 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;
6429441cabbbSMichael Chan 	__le16	resp_len;
6430c0c050c5SMichael Chan 	u8	unused_0[7];
6431c0c050c5SMichael Chan 	u8	valid;
64326fc92c33SMichael Chan };
64336fc92c33SMichael Chan 
64346fc92c33SMichael Chan /* hwrm_vnic_rss_cos_lb_ctx_alloc_input (size:128b/16B) */
6435bfc6e5fbSMichael Chan struct hwrm_vnic_rss_cos_lb_ctx_alloc_input {
64369d6b648cSMichael Chan 	__le16	req_type;
6437c0c050c5SMichael Chan 	__le16	cmpl_ring;
6438bac9a7e0SMichael Chan 	__le16	seq_id;
6439441cabbbSMichael Chan 	__le16	target_id;
6440441cabbbSMichael Chan 	__le64	resp_addr;
6441bac9a7e0SMichael Chan };
64426fc92c33SMichael Chan 
64436fc92c33SMichael Chan /* hwrm_vnic_rss_cos_lb_ctx_alloc_output (size:128b/16B) */
64446fc92c33SMichael Chan struct hwrm_vnic_rss_cos_lb_ctx_alloc_output {
644521e70778SMichael Chan 	__le16	error_code;
644621e70778SMichael Chan 	__le16	req_type;
644721e70778SMichael Chan 	__le16	seq_id;
644821e70778SMichael Chan 	__le16	resp_len;
644921e70778SMichael Chan 	__le16	rss_cos_lb_ctx_id;
645021e70778SMichael Chan 	u8	unused_0[5];
645121e70778SMichael Chan 	u8	valid;
645221e70778SMichael Chan };
645321e70778SMichael Chan 
645421e70778SMichael Chan /* hwrm_vnic_rss_cos_lb_ctx_free_input (size:192b/24B) */
645521e70778SMichael Chan struct hwrm_vnic_rss_cos_lb_ctx_free_input {
645621e70778SMichael Chan 	__le16	req_type;
645721e70778SMichael Chan 	__le16	cmpl_ring;
645821e70778SMichael Chan 	__le16	seq_id;
645921e70778SMichael Chan 	__le16	target_id;
646021e70778SMichael Chan 	__le64	resp_addr;
646121e70778SMichael Chan 	__le16	rss_cos_lb_ctx_id;
646221e70778SMichael Chan 	u8	unused_0[6];
646331d357c0SMichael Chan };
646431d357c0SMichael Chan 
6465ad04cc05SMichael Chan /* hwrm_vnic_rss_cos_lb_ctx_free_output (size:128b/16B) */
6466ad04cc05SMichael Chan struct hwrm_vnic_rss_cos_lb_ctx_free_output {
646784a911dbSMichael Chan 	__le16	error_code;
6468c0c050c5SMichael Chan 	__le16	req_type;
6469c0c050c5SMichael Chan 	__le16	seq_id;
6470c0c050c5SMichael Chan 	__le16	resp_len;
6471c0c050c5SMichael Chan 	u8	unused_0[7];
6472bfc6e5fbSMichael Chan 	u8	valid;
6473c0c050c5SMichael Chan };
6474c0c050c5SMichael Chan 
6475c0c050c5SMichael Chan /* hwrm_ring_alloc_input (size:704b/88B) */
6476c0c050c5SMichael Chan struct hwrm_ring_alloc_input {
64776fc92c33SMichael Chan 	__le16	req_type;
64786fc92c33SMichael Chan 	__le16	cmpl_ring;
64796fc92c33SMichael Chan 	__le16	seq_id;
6480441cabbbSMichael Chan 	__le16	target_id;
6481441cabbbSMichael Chan 	__le64	resp_addr;
6482441cabbbSMichael Chan 	__le32	enables;
6483894aa69aSMichael Chan 	#define RING_ALLOC_REQ_ENABLES_RING_ARB_CFG          0x2UL
6484894aa69aSMichael Chan 	#define RING_ALLOC_REQ_ENABLES_STAT_CTX_ID_VALID     0x8UL
6485441cabbbSMichael Chan 	#define RING_ALLOC_REQ_ENABLES_MAX_BW_VALID          0x20UL
6486441cabbbSMichael Chan 	#define RING_ALLOC_REQ_ENABLES_RX_RING_ID_VALID      0x40UL
6487441cabbbSMichael Chan 	#define RING_ALLOC_REQ_ENABLES_NQ_RING_ID_VALID      0x80UL
6488441cabbbSMichael Chan 	#define RING_ALLOC_REQ_ENABLES_RX_BUF_SIZE_VALID     0x100UL
6489441cabbbSMichael Chan 	#define RING_ALLOC_REQ_ENABLES_SCHQ_ID               0x200UL
6490894aa69aSMichael Chan 	#define RING_ALLOC_REQ_ENABLES_MPC_CHNLS_TYPE        0x400UL
6491c193554eSMichael Chan 	u8	ring_type;
6492c0c050c5SMichael Chan 	#define RING_ALLOC_REQ_RING_TYPE_L2_CMPL   0x0UL
6493c193554eSMichael Chan 	#define RING_ALLOC_REQ_RING_TYPE_TX        0x1UL
6494c0c050c5SMichael Chan 	#define RING_ALLOC_REQ_RING_TYPE_RX        0x2UL
6495441cabbbSMichael Chan 	#define RING_ALLOC_REQ_RING_TYPE_ROCE_CMPL 0x3UL
6496441cabbbSMichael Chan 	#define RING_ALLOC_REQ_RING_TYPE_RX_AGG    0x4UL
6497bac9a7e0SMichael Chan 	#define RING_ALLOC_REQ_RING_TYPE_NQ        0x5UL
6498bac9a7e0SMichael Chan 	#define RING_ALLOC_REQ_RING_TYPE_LAST     RING_ALLOC_REQ_RING_TYPE_NQ
6499bac9a7e0SMichael Chan 	u8	cmpl_coal_cnt;
6500bac9a7e0SMichael Chan 	#define RING_ALLOC_REQ_CMPL_COAL_CNT_COAL_OFF 0x0UL
6501441cabbbSMichael Chan 	#define RING_ALLOC_REQ_CMPL_COAL_CNT_COAL_4   0x1UL
6502441cabbbSMichael Chan 	#define RING_ALLOC_REQ_CMPL_COAL_CNT_COAL_8   0x2UL
6503bac9a7e0SMichael Chan 	#define RING_ALLOC_REQ_CMPL_COAL_CNT_COAL_12  0x3UL
6504bac9a7e0SMichael Chan 	#define RING_ALLOC_REQ_CMPL_COAL_CNT_COAL_16  0x4UL
6505bac9a7e0SMichael Chan 	#define RING_ALLOC_REQ_CMPL_COAL_CNT_COAL_24  0x5UL
6506bac9a7e0SMichael Chan 	#define RING_ALLOC_REQ_CMPL_COAL_CNT_COAL_32  0x6UL
6507441cabbbSMichael Chan 	#define RING_ALLOC_REQ_CMPL_COAL_CNT_COAL_48  0x7UL
6508441cabbbSMichael Chan 	#define RING_ALLOC_REQ_CMPL_COAL_CNT_COAL_64  0x8UL
6509441cabbbSMichael Chan 	#define RING_ALLOC_REQ_CMPL_COAL_CNT_COAL_96  0x9UL
6510c0c050c5SMichael Chan 	#define RING_ALLOC_REQ_CMPL_COAL_CNT_COAL_128 0xaUL
6511441cabbbSMichael Chan 	#define RING_ALLOC_REQ_CMPL_COAL_CNT_COAL_192 0xbUL
6512441cabbbSMichael Chan 	#define RING_ALLOC_REQ_CMPL_COAL_CNT_COAL_256 0xcUL
6513441cabbbSMichael Chan 	#define RING_ALLOC_REQ_CMPL_COAL_CNT_COAL_320 0xdUL
6514441cabbbSMichael Chan 	#define RING_ALLOC_REQ_CMPL_COAL_CNT_COAL_384 0xeUL
6515894aa69aSMichael Chan 	#define RING_ALLOC_REQ_CMPL_COAL_CNT_COAL_MAX 0xfUL
65169d6b648cSMichael Chan 	#define RING_ALLOC_REQ_CMPL_COAL_CNT_LAST    RING_ALLOC_REQ_CMPL_COAL_CNT_COAL_MAX
65179d6b648cSMichael Chan 	__le16	flags;
65189d6b648cSMichael Chan 	#define RING_ALLOC_REQ_FLAGS_RX_SOP_PAD                        0x1UL
65199d6b648cSMichael Chan 	#define RING_ALLOC_REQ_FLAGS_DISABLE_CQ_OVERFLOW_DETECTION     0x2UL
65209d6b648cSMichael Chan 	#define RING_ALLOC_REQ_FLAGS_NQ_DBR_PACING                     0x4UL
65219d6b648cSMichael Chan 	#define RING_ALLOC_REQ_FLAGS_TX_PKT_TS_CMPL_ENABLE             0x8UL
65229d6b648cSMichael Chan 	__le64	page_tbl_addr;
65239d6b648cSMichael Chan 	__le32	fbo;
65246fc92c33SMichael Chan 	u8	page_size;
6525c0c050c5SMichael Chan 	u8	page_tbl_depth;
6526c0c050c5SMichael Chan 	__le16	schq_id;
6527894aa69aSMichael Chan 	__le32	length;
6528c0c050c5SMichael Chan 	__le16	logical_id;
6529c0c050c5SMichael Chan 	__le16	cmpl_ring_id;
6530c0c050c5SMichael Chan 	__le16	queue_id;
6531c0c050c5SMichael Chan 	__le16	rx_buf_size;
6532c0c050c5SMichael Chan 	__le16	rx_ring_id;
6533c0c050c5SMichael Chan 	__le16	nq_ring_id;
6534c0c050c5SMichael Chan 	__le16	ring_arb_cfg;
653516db6323SMichael Chan 	#define RING_ALLOC_REQ_RING_ARB_CFG_ARB_POLICY_MASK      0xfUL
653616db6323SMichael Chan 	#define RING_ALLOC_REQ_RING_ARB_CFG_ARB_POLICY_SFT       0
653716db6323SMichael Chan 	#define RING_ALLOC_REQ_RING_ARB_CFG_ARB_POLICY_SP          0x1UL
653816db6323SMichael Chan 	#define RING_ALLOC_REQ_RING_ARB_CFG_ARB_POLICY_WFQ         0x2UL
653916db6323SMichael Chan 	#define RING_ALLOC_REQ_RING_ARB_CFG_ARB_POLICY_LAST       RING_ALLOC_REQ_RING_ARB_CFG_ARB_POLICY_WFQ
6540c0c050c5SMichael Chan 	#define RING_ALLOC_REQ_RING_ARB_CFG_RSVD_MASK            0xf0UL
6541c0c050c5SMichael Chan 	#define RING_ALLOC_REQ_RING_ARB_CFG_RSVD_SFT             4
6542c0c050c5SMichael Chan 	#define RING_ALLOC_REQ_RING_ARB_CFG_ARB_POLICY_PARAM_MASK 0xff00UL
654331f67c2eSMichael Chan 	#define RING_ALLOC_REQ_RING_ARB_CFG_ARB_POLICY_PARAM_SFT 8
6544c0c050c5SMichael Chan 	__le16	unused_3;
6545c0c050c5SMichael Chan 	__le32	reserved3;
6546c0c050c5SMichael Chan 	__le32	stat_ctx_id;
6547c0c050c5SMichael Chan 	__le32	reserved4;
6548c0c050c5SMichael Chan 	__le32	max_bw;
6549c0c050c5SMichael Chan 	#define RING_ALLOC_REQ_MAX_BW_BW_VALUE_MASK             0xfffffffUL
6550c0c050c5SMichael Chan 	#define RING_ALLOC_REQ_MAX_BW_BW_VALUE_SFT              0
6551bac9a7e0SMichael Chan 	#define RING_ALLOC_REQ_MAX_BW_SCALE                     0x10000000UL
6552441cabbbSMichael Chan 	#define RING_ALLOC_REQ_MAX_BW_SCALE_BITS                  (0x0UL << 28)
6553441cabbbSMichael 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
65556fc92c33SMichael Chan 	#define RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_MASK        0xe0000000UL
65566fc92c33SMichael Chan 	#define RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_SFT         29
65576fc92c33SMichael Chan 	#define RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_MEGA          (0x0UL << 29)
655831f67c2eSMichael Chan 	#define RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_KILO          (0x2UL << 29)
655931f67c2eSMichael Chan 	#define RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_BASE          (0x4UL << 29)
656031f67c2eSMichael Chan 	#define RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_GIGA          (0x6UL << 29)
6561c0c050c5SMichael Chan 	#define RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
656231f67c2eSMichael Chan 	#define RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
656331f67c2eSMichael Chan 	#define RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_LAST         RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_INVALID
656431f67c2eSMichael Chan 	u8	int_mode;
6565c0c050c5SMichael Chan 	#define RING_ALLOC_REQ_INT_MODE_LEGACY 0x0UL
6566c0c050c5SMichael Chan 	#define RING_ALLOC_REQ_INT_MODE_RSVD   0x1UL
6567894aa69aSMichael Chan 	#define RING_ALLOC_REQ_INT_MODE_MSIX   0x2UL
6568c0c050c5SMichael Chan 	#define RING_ALLOC_REQ_INT_MODE_POLL   0x3UL
6569c0c050c5SMichael Chan 	#define RING_ALLOC_REQ_INT_MODE_LAST  RING_ALLOC_REQ_INT_MODE_POLL
6570c0c050c5SMichael Chan 	u8	mpc_chnls_type;
6571c0c050c5SMichael Chan 	#define RING_ALLOC_REQ_MPC_CHNLS_TYPE_TCE     0x0UL
6572c0c050c5SMichael Chan 	#define RING_ALLOC_REQ_MPC_CHNLS_TYPE_RCE     0x1UL
6573894aa69aSMichael Chan 	#define RING_ALLOC_REQ_MPC_CHNLS_TYPE_TE_CFA  0x2UL
6574c0c050c5SMichael Chan 	#define RING_ALLOC_REQ_MPC_CHNLS_TYPE_RE_CFA  0x3UL
6575c0c050c5SMichael Chan 	#define RING_ALLOC_REQ_MPC_CHNLS_TYPE_PRIMATE 0x4UL
6576c0c050c5SMichael Chan 	#define RING_ALLOC_REQ_MPC_CHNLS_TYPE_LAST   RING_ALLOC_REQ_MPC_CHNLS_TYPE_PRIMATE
65773293ec23SMichael Chan 	u8	unused_4[2];
65783293ec23SMichael Chan 	__le64	cq_handle;
65793293ec23SMichael Chan };
65803293ec23SMichael Chan 
65813293ec23SMichael Chan /* hwrm_ring_alloc_output (size:128b/16B) */
65823293ec23SMichael Chan struct hwrm_ring_alloc_output {
65833293ec23SMichael Chan 	__le16	error_code;
65843293ec23SMichael Chan 	__le16	req_type;
65853293ec23SMichael Chan 	__le16	seq_id;
65863293ec23SMichael Chan 	__le16	resp_len;
65873293ec23SMichael Chan 	__le16	ring_id;
65883293ec23SMichael Chan 	__le16	logical_ring_id;
6589bfc6e5fbSMichael Chan 	u8	push_buffer_index;
6590bfc6e5fbSMichael Chan 	#define RING_ALLOC_RESP_PUSH_BUFFER_INDEX_PING_BUFFER 0x0UL
65913293ec23SMichael Chan 	#define RING_ALLOC_RESP_PUSH_BUFFER_INDEX_PONG_BUFFER 0x1UL
65923293ec23SMichael Chan 	#define RING_ALLOC_RESP_PUSH_BUFFER_INDEX_LAST       RING_ALLOC_RESP_PUSH_BUFFER_INDEX_PONG_BUFFER
65933293ec23SMichael Chan 	u8	unused_0[2];
65943293ec23SMichael Chan 	u8	valid;
65953293ec23SMichael Chan };
65963293ec23SMichael Chan 
65973293ec23SMichael Chan /* hwrm_ring_free_input (size:256b/32B) */
65983293ec23SMichael Chan struct hwrm_ring_free_input {
65993293ec23SMichael Chan 	__le16	req_type;
66003293ec23SMichael Chan 	__le16	cmpl_ring;
66013293ec23SMichael Chan 	__le16	seq_id;
660216db6323SMichael Chan 	__le16	target_id;
660316db6323SMichael Chan 	__le64	resp_addr;
660416db6323SMichael Chan 	u8	ring_type;
660516db6323SMichael Chan 	#define RING_FREE_REQ_RING_TYPE_L2_CMPL   0x0UL
660616db6323SMichael Chan 	#define RING_FREE_REQ_RING_TYPE_TX        0x1UL
66073293ec23SMichael Chan 	#define RING_FREE_REQ_RING_TYPE_RX        0x2UL
66083293ec23SMichael Chan 	#define RING_FREE_REQ_RING_TYPE_ROCE_CMPL 0x3UL
66093293ec23SMichael Chan 	#define RING_FREE_REQ_RING_TYPE_RX_AGG    0x4UL
66103293ec23SMichael Chan 	#define RING_FREE_REQ_RING_TYPE_NQ        0x5UL
66116fc92c33SMichael Chan 	#define RING_FREE_REQ_RING_TYPE_LAST     RING_FREE_REQ_RING_TYPE_NQ
66126fc92c33SMichael Chan 	u8	flags;
66136fc92c33SMichael Chan 	#define RING_FREE_REQ_FLAGS_VIRTIO_RING_VALID 0x1UL
66146fc92c33SMichael Chan 	#define RING_FREE_REQ_FLAGS_LAST             RING_FREE_REQ_FLAGS_VIRTIO_RING_VALID
66156fc92c33SMichael Chan 	__le16	ring_id;
66166fc92c33SMichael Chan 	__le32	prod_idx;
66176fc92c33SMichael Chan 	__le32	opaque;
66186fc92c33SMichael Chan 	__le32	unused_1;
66196fc92c33SMichael Chan };
66206fc92c33SMichael Chan 
66216fc92c33SMichael Chan /* hwrm_ring_free_output (size:128b/16B) */
66226fc92c33SMichael Chan struct hwrm_ring_free_output {
66236fc92c33SMichael Chan 	__le16	error_code;
66246fc92c33SMichael Chan 	__le16	req_type;
66256fc92c33SMichael Chan 	__le16	seq_id;
66266fc92c33SMichael Chan 	__le16	resp_len;
66276fc92c33SMichael Chan 	u8	unused_0[7];
66286fc92c33SMichael Chan 	u8	valid;
66296fc92c33SMichael Chan };
66306fc92c33SMichael Chan 
66316fc92c33SMichael Chan /* hwrm_ring_reset_input (size:192b/24B) */
66326fc92c33SMichael Chan struct hwrm_ring_reset_input {
66336fc92c33SMichael Chan 	__le16	req_type;
66346fc92c33SMichael Chan 	__le16	cmpl_ring;
66356fc92c33SMichael Chan 	__le16	seq_id;
66366fc92c33SMichael Chan 	__le16	target_id;
66376fc92c33SMichael Chan 	__le64	resp_addr;
66386fc92c33SMichael Chan 	u8	ring_type;
66396fc92c33SMichael Chan 	#define RING_RESET_REQ_RING_TYPE_L2_CMPL     0x0UL
66406fc92c33SMichael Chan 	#define RING_RESET_REQ_RING_TYPE_TX          0x1UL
66416fc92c33SMichael Chan 	#define RING_RESET_REQ_RING_TYPE_RX          0x2UL
66426fc92c33SMichael Chan 	#define RING_RESET_REQ_RING_TYPE_ROCE_CMPL   0x3UL
66436fc92c33SMichael Chan 	#define RING_RESET_REQ_RING_TYPE_RX_RING_GRP 0x6UL
66446fc92c33SMichael Chan 	#define RING_RESET_REQ_RING_TYPE_LAST       RING_RESET_REQ_RING_TYPE_RX_RING_GRP
66456fc92c33SMichael Chan 	u8	unused_0;
66466fc92c33SMichael Chan 	__le16	ring_id;
66476fc92c33SMichael Chan 	u8	unused_1[4];
66486fc92c33SMichael Chan };
66496fc92c33SMichael Chan 
66506fc92c33SMichael Chan /* hwrm_ring_reset_output (size:128b/16B) */
66516fc92c33SMichael Chan struct hwrm_ring_reset_output {
66526fc92c33SMichael Chan 	__le16	error_code;
66536fc92c33SMichael Chan 	__le16	req_type;
66546fc92c33SMichael Chan 	__le16	seq_id;
66556fc92c33SMichael Chan 	__le16	resp_len;
66566fc92c33SMichael Chan 	u8	push_buffer_index;
6657894aa69aSMichael Chan 	#define RING_RESET_RESP_PUSH_BUFFER_INDEX_PING_BUFFER 0x0UL
6658c0c050c5SMichael Chan 	#define RING_RESET_RESP_PUSH_BUFFER_INDEX_PONG_BUFFER 0x1UL
6659c0c050c5SMichael Chan 	#define RING_RESET_RESP_PUSH_BUFFER_INDEX_LAST       RING_RESET_RESP_PUSH_BUFFER_INDEX_PONG_BUFFER
6660c0c050c5SMichael Chan 	u8	unused_0[3];
6661c0c050c5SMichael Chan 	u8	consumer_idx[3];
6662c0c050c5SMichael Chan 	u8	valid;
6663c0c050c5SMichael Chan };
6664c0c050c5SMichael Chan 
6665460c2577SMichael Chan /* hwrm_ring_aggint_qcaps_input (size:128b/16B) */
6666460c2577SMichael Chan struct hwrm_ring_aggint_qcaps_input {
6667460c2577SMichael Chan 	__le16	req_type;
6668460c2577SMichael Chan 	__le16	cmpl_ring;
6669460c2577SMichael Chan 	__le16	seq_id;
6670c0c050c5SMichael Chan 	__le16	target_id;
6671c0c050c5SMichael Chan 	__le64	resp_addr;
6672894aa69aSMichael Chan };
6673c0c050c5SMichael Chan 
6674c0c050c5SMichael Chan /* hwrm_ring_aggint_qcaps_output (size:384b/48B) */
6675c0c050c5SMichael Chan struct hwrm_ring_aggint_qcaps_output {
6676c0c050c5SMichael Chan 	__le16	error_code;
6677c0c050c5SMichael Chan 	__le16	req_type;
6678c0c050c5SMichael Chan 	__le16	seq_id;
6679c0c050c5SMichael Chan 	__le16	resp_len;
6680c0c050c5SMichael Chan 	__le32	cmpl_params;
6681c0c050c5SMichael Chan 	#define RING_AGGINT_QCAPS_RESP_CMPL_PARAMS_INT_LAT_TMR_MIN                  0x1UL
6682c0c050c5SMichael Chan 	#define RING_AGGINT_QCAPS_RESP_CMPL_PARAMS_INT_LAT_TMR_MAX                  0x2UL
6683c0c050c5SMichael Chan 	#define RING_AGGINT_QCAPS_RESP_CMPL_PARAMS_TIMER_RESET                      0x4UL
6684c0c050c5SMichael Chan 	#define RING_AGGINT_QCAPS_RESP_CMPL_PARAMS_RING_IDLE                        0x8UL
6685c0c050c5SMichael Chan 	#define RING_AGGINT_QCAPS_RESP_CMPL_PARAMS_NUM_CMPL_DMA_AGGR                0x10UL
6686c0c050c5SMichael Chan 	#define RING_AGGINT_QCAPS_RESP_CMPL_PARAMS_NUM_CMPL_DMA_AGGR_DURING_INT     0x20UL
6687c0c050c5SMichael Chan 	#define RING_AGGINT_QCAPS_RESP_CMPL_PARAMS_CMPL_AGGR_DMA_TMR                0x40UL
6688894aa69aSMichael Chan 	#define RING_AGGINT_QCAPS_RESP_CMPL_PARAMS_CMPL_AGGR_DMA_TMR_DURING_INT     0x80UL
6689c0c050c5SMichael Chan 	#define RING_AGGINT_QCAPS_RESP_CMPL_PARAMS_NUM_CMPL_AGGR_INT                0x100UL
6690c0c050c5SMichael Chan 	__le32	nq_params;
6691c0c050c5SMichael Chan 	#define RING_AGGINT_QCAPS_RESP_NQ_PARAMS_INT_LAT_TMR_MIN     0x1UL
6692894aa69aSMichael Chan 	__le16	num_cmpl_dma_aggr_min;
6693c0c050c5SMichael Chan 	__le16	num_cmpl_dma_aggr_max;
6694c0c050c5SMichael Chan 	__le16	num_cmpl_dma_aggr_during_int_min;
6695c0c050c5SMichael Chan 	__le16	num_cmpl_dma_aggr_during_int_max;
6696c0c050c5SMichael Chan 	__le16	cmpl_aggr_dma_tmr_min;
6697c0c050c5SMichael Chan 	__le16	cmpl_aggr_dma_tmr_max;
6698c0c050c5SMichael Chan 	__le16	cmpl_aggr_dma_tmr_during_int_min;
6699c0c050c5SMichael Chan 	__le16	cmpl_aggr_dma_tmr_during_int_max;
6700c0c050c5SMichael Chan 	__le16	int_lat_tmr_min_min;
6701c0c050c5SMichael Chan 	__le16	int_lat_tmr_min_max;
6702c0c050c5SMichael Chan 	__le16	int_lat_tmr_max_min;
67036fc92c33SMichael Chan 	__le16	int_lat_tmr_max_max;
6704c0c050c5SMichael Chan 	__le16	num_cmpl_aggr_int_min;
6705c0c050c5SMichael Chan 	__le16	num_cmpl_aggr_int_max;
6706c0c050c5SMichael Chan 	__le16	timer_units;
6707c0c050c5SMichael Chan 	u8	unused_0[1];
6708c0c050c5SMichael Chan 	u8	valid;
6709c0c050c5SMichael Chan };
6710c0c050c5SMichael Chan 
67116fc92c33SMichael Chan /* hwrm_ring_cmpl_ring_qaggint_params_input (size:192b/24B) */
67126fc92c33SMichael Chan struct hwrm_ring_cmpl_ring_qaggint_params_input {
67136fc92c33SMichael Chan 	__le16	req_type;
67146fc92c33SMichael Chan 	__le16	cmpl_ring;
67156fc92c33SMichael Chan 	__le16	seq_id;
67166fc92c33SMichael Chan 	__le16	target_id;
67176fc92c33SMichael Chan 	__le64	resp_addr;
67186fc92c33SMichael Chan 	__le16	ring_id;
6719c0c050c5SMichael Chan 	__le16	flags;
6720c0c050c5SMichael Chan 	#define RING_CMPL_RING_QAGGINT_PARAMS_REQ_FLAGS_UNUSED_0_MASK 0x3UL
6721894aa69aSMichael Chan 	#define RING_CMPL_RING_QAGGINT_PARAMS_REQ_FLAGS_UNUSED_0_SFT 0
6722c0c050c5SMichael Chan 	#define RING_CMPL_RING_QAGGINT_PARAMS_REQ_FLAGS_IS_NQ        0x4UL
6723c0c050c5SMichael Chan 	u8	unused_0[4];
6724c0c050c5SMichael Chan };
6725c0c050c5SMichael Chan 
6726c0c050c5SMichael Chan /* hwrm_ring_cmpl_ring_qaggint_params_output (size:256b/32B) */
6727894aa69aSMichael Chan struct hwrm_ring_cmpl_ring_qaggint_params_output {
6728c0c050c5SMichael Chan 	__le16	error_code;
6729c0c050c5SMichael Chan 	__le16	req_type;
6730c0c050c5SMichael Chan 	__le16	seq_id;
6731894aa69aSMichael 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;
6742c0c050c5SMichael Chan 	u8	unused_0[7];
6743c0c050c5SMichael Chan 	u8	valid;
6744894aa69aSMichael Chan };
6745c0c050c5SMichael Chan 
6746c0c050c5SMichael 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;
6751894aa69aSMichael Chan 	__le16	target_id;
6752c0c050c5SMichael Chan 	__le64	resp_addr;
6753c0c050c5SMichael Chan 	__le16	ring_id;
6754c0c050c5SMichael Chan 	__le16	flags;
6755894aa69aSMichael 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
6757c0c050c5SMichael 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;
6763894aa69aSMichael Chan 	__le16	int_lat_tmr_max;
6764c0c050c5SMichael Chan 	__le16	num_cmpl_aggr_int;
6765c0c050c5SMichael Chan 	__le16	enables;
6766894aa69aSMichael Chan 	#define RING_CMPL_RING_CFG_AGGINT_PARAMS_REQ_ENABLES_NUM_CMPL_DMA_AGGR                0x1UL
6767c0c050c5SMichael Chan 	#define RING_CMPL_RING_CFG_AGGINT_PARAMS_REQ_ENABLES_NUM_CMPL_DMA_AGGR_DURING_INT     0x2UL
6768c0c050c5SMichael Chan 	#define RING_CMPL_RING_CFG_AGGINT_PARAMS_REQ_ENABLES_CMPL_AGGR_DMA_TMR                0x4UL
6769c0c050c5SMichael Chan 	#define RING_CMPL_RING_CFG_AGGINT_PARAMS_REQ_ENABLES_INT_LAT_TMR_MIN                  0x8UL
6770c0c050c5SMichael Chan 	#define RING_CMPL_RING_CFG_AGGINT_PARAMS_REQ_ENABLES_INT_LAT_TMR_MAX                  0x10UL
6771c0c050c5SMichael Chan 	#define RING_CMPL_RING_CFG_AGGINT_PARAMS_REQ_ENABLES_NUM_CMPL_AGGR_INT                0x20UL
6772894aa69aSMichael Chan 	u8	unused_0[4];
6773c0c050c5SMichael Chan };
6774c0c050c5SMichael Chan 
6775bfc6e5fbSMichael Chan /* hwrm_ring_cmpl_ring_cfg_aggint_params_output (size:128b/16B) */
67763322479eSMichael Chan struct hwrm_ring_cmpl_ring_cfg_aggint_params_output {
67773322479eSMichael Chan 	__le16	error_code;
67783322479eSMichael Chan 	__le16	req_type;
67793322479eSMichael Chan 	__le16	seq_id;
6780c0c050c5SMichael Chan 	__le16	resp_len;
6781894aa69aSMichael Chan 	u8	unused_0[7];
6782c0c050c5SMichael Chan 	u8	valid;
6783c0c050c5SMichael Chan };
6784c0c050c5SMichael Chan 
6785c0c050c5SMichael 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;
6790894aa69aSMichael Chan 	__le16	target_id;
6791894aa69aSMichael Chan 	__le64	resp_addr;
679211f15ed3SMichael Chan 	__le16	cr;
6793c0c050c5SMichael Chan 	__le16	rr;
6794c0c050c5SMichael Chan 	__le16	ar;
6795c0c050c5SMichael Chan 	__le16	sc;
679631d357c0SMichael Chan };
679731d357c0SMichael Chan 
679831d357c0SMichael Chan /* hwrm_ring_grp_alloc_output (size:128b/16B) */
679931d357c0SMichael Chan struct hwrm_ring_grp_alloc_output {
680031d357c0SMichael Chan 	__le16	error_code;
680131d357c0SMichael Chan 	__le16	req_type;
68024a50ddc2SMichael Chan 	__le16	seq_id;
68034a50ddc2SMichael Chan 	__le16	resp_len;
6804c0c050c5SMichael Chan 	__le32	ring_group_id;
6805c0c050c5SMichael Chan 	u8	unused_0[3];
6806c0c050c5SMichael Chan 	u8	valid;
6807c0c050c5SMichael Chan };
6808c0c050c5SMichael Chan 
6809c0c050c5SMichael 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;
6817c0c050c5SMichael Chan 	u8	unused_0[4];
6818c0c050c5SMichael Chan };
6819c0c050c5SMichael Chan 
6820c193554eSMichael Chan /* hwrm_ring_grp_free_output (size:128b/16B) */
6821c0c050c5SMichael Chan struct hwrm_ring_grp_free_output {
68224a50ddc2SMichael Chan 	__le16	error_code;
68234a50ddc2SMichael Chan 	__le16	req_type;
6824c0c050c5SMichael Chan 	__le16	seq_id;
68254a50ddc2SMichael Chan 	__le16	resp_len;
68264a50ddc2SMichael Chan 	u8	unused_0[7];
6827c0c050c5SMichael Chan 	u8	valid;
6828c0c050c5SMichael Chan };
6829c0c050c5SMichael Chan 
6830c0c050c5SMichael Chan #define DEFAULT_FLOW_ID 0xFFFFFFFFUL
6831c0c050c5SMichael Chan #define ROCEV1_FLOW_ID 0xFFFFFFFEUL
6832894aa69aSMichael Chan #define ROCEV2_FLOW_ID 0xFFFFFFFDUL
6833c0c050c5SMichael Chan #define ROCEV2_CNP_FLOW_ID 0xFFFFFFFCUL
6834894aa69aSMichael Chan 
6835c0c050c5SMichael 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;
6841441cabbbSMichael Chan 	__le64	resp_addr;
6842441cabbbSMichael Chan 	__le32	flags;
6843441cabbbSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_FLAGS_PATH              0x1UL
6844441cabbbSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_FLAGS_PATH_TX             0x0UL
6845441cabbbSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_FLAGS_PATH_RX             0x1UL
6846441cabbbSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_FLAGS_PATH_LAST          CFA_L2_FILTER_ALLOC_REQ_FLAGS_PATH_RX
6847441cabbbSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_FLAGS_LOOPBACK          0x2UL
6848441cabbbSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_FLAGS_DROP              0x4UL
6849894aa69aSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_FLAGS_OUTERMOST         0x8UL
6850894aa69aSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_FLAGS_TRAFFIC_MASK      0x30UL
6851c0c050c5SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_FLAGS_TRAFFIC_SFT       4
6852c0c050c5SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_FLAGS_TRAFFIC_NO_ROCE_L2  (0x0UL << 4)
6853441cabbbSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_FLAGS_TRAFFIC_L2          (0x1UL << 4)
6854441cabbbSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_FLAGS_TRAFFIC_ROCE        (0x2UL << 4)
6855441cabbbSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_FLAGS_TRAFFIC_LAST       CFA_L2_FILTER_ALLOC_REQ_FLAGS_TRAFFIC_ROCE
6856441cabbbSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_FLAGS_XDP_DISABLE       0x40UL
6857441cabbbSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_FLAGS_SOURCE_VALID      0x80UL
6858441cabbbSMichael Chan 	__le32	enables;
6859441cabbbSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_ENABLES_L2_ADDR             0x1UL
6860441cabbbSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_ENABLES_L2_ADDR_MASK        0x2UL
6861441cabbbSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_ENABLES_L2_OVLAN            0x4UL
686257922b0aSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_ENABLES_L2_OVLAN_MASK       0x8UL
686331d357c0SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_ENABLES_L2_IVLAN            0x10UL
686431d357c0SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_ENABLES_L2_IVLAN_MASK       0x20UL
68653322479eSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_ENABLES_T_L2_ADDR           0x40UL
6866441cabbbSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_ENABLES_T_L2_ADDR_MASK      0x80UL
6867894aa69aSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_ENABLES_T_L2_OVLAN          0x100UL
6868894aa69aSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_ENABLES_T_L2_OVLAN_MASK     0x200UL
6869c193554eSMichael 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
6872441cabbbSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_ENABLES_SRC_ID              0x2000UL
6873441cabbbSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_ENABLES_TUNNEL_TYPE         0x4000UL
6874441cabbbSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_ENABLES_DST_ID              0x8000UL
6875441cabbbSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_ENABLES_MIRROR_VNIC_ID      0x10000UL
6876441cabbbSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_ENABLES_NUM_VLANS           0x20000UL
6877894aa69aSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_ENABLES_T_NUM_VLANS         0x40000UL
6878894aa69aSMichael Chan 	u8	l2_addr[6];
6879894aa69aSMichael Chan 	u8	num_vlans;
6880c0c050c5SMichael Chan 	u8	t_num_vlans;
6881c0c050c5SMichael Chan 	u8	l2_addr_mask[6];
6882c0c050c5SMichael Chan 	__le16	l2_ovlan;
6883894aa69aSMichael Chan 	__le16	l2_ovlan_mask;
6884c0c050c5SMichael Chan 	__le16	l2_ivlan;
6885c0c050c5SMichael Chan 	__le16	l2_ivlan_mask;
6886c0c050c5SMichael Chan 	u8	unused_1[2];
6887c0c050c5SMichael Chan 	u8	t_l2_addr[6];
6888c0c050c5SMichael Chan 	u8	unused_2[2];
6889c0c050c5SMichael Chan 	u8	t_l2_addr_mask[6];
6890c0c050c5SMichael Chan 	__le16	t_l2_ovlan;
68914a50ddc2SMichael Chan 	__le16	t_l2_ovlan_mask;
68924a50ddc2SMichael Chan 	__le16	t_l2_ivlan;
68934a50ddc2SMichael Chan 	__le16	t_l2_ivlan_mask;
68944a50ddc2SMichael Chan 	u8	src_type;
68954a50ddc2SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_NPORT 0x0UL
68964a50ddc2SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_PF    0x1UL
68974a50ddc2SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_VF    0x2UL
68984a50ddc2SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_VNIC  0x3UL
68994a50ddc2SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_KONG  0x4UL
69004a50ddc2SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_APE   0x5UL
6901894aa69aSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_BONO  0x6UL
6902c0c050c5SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_TANG  0x7UL
6903c0c050c5SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_LAST CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_TANG
6904c0c050c5SMichael Chan 	u8	unused_3;
6905894aa69aSMichael Chan 	__le32	src_id;
6906c0c050c5SMichael Chan 	u8	tunnel_type;
6907c0c050c5SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_NONTUNNEL    0x0UL
6908c0c050c5SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_VXLAN        0x1UL
6909c0c050c5SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_NVGRE        0x2UL
6910c0c050c5SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_L2GRE        0x3UL
6911c0c050c5SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPIP         0x4UL
6912c0c050c5SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_GENEVE       0x5UL
6913c0c050c5SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_MPLS         0x6UL
6914c0c050c5SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_STT          0x7UL
6915894aa69aSMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPGRE        0x8UL
6916c0c050c5SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_VXLAN_V4     0x9UL
6917c0c050c5SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPGRE_V1     0xaUL
6918c0c050c5SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_L2_ETYPE     0xbUL
6919c0c050c5SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_VXLAN_GPE_V6 0xcUL
6920c0c050c5SMichael 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
6922c0c050c5SMichael Chan 	u8	unused_4;
6923c0c050c5SMichael Chan 	__le16	dst_id;
6924c0c050c5SMichael Chan 	__le16	mirror_vnic_id;
6925894aa69aSMichael Chan 	u8	pri_hint;
6926c0c050c5SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_PRI_HINT_NO_PREFER    0x0UL
6927c0c050c5SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_PRI_HINT_ABOVE_FILTER 0x1UL
6928c0c050c5SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_PRI_HINT_BELOW_FILTER 0x2UL
6929c0c050c5SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_PRI_HINT_MAX          0x3UL
6930c0c050c5SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_PRI_HINT_MIN          0x4UL
6931c0c050c5SMichael Chan 	#define CFA_L2_FILTER_ALLOC_REQ_PRI_HINT_LAST        CFA_L2_FILTER_ALLOC_REQ_PRI_HINT_MIN
6932c0c050c5SMichael Chan 	u8	unused_5;
6933c0c050c5SMichael Chan 	__le32	unused_6;
6934894aa69aSMichael Chan 	__le64	l2_filter_id_hint;
6935894aa69aSMichael Chan };
693611f15ed3SMichael Chan 
6937c0c050c5SMichael Chan /* hwrm_cfa_l2_filter_alloc_output (size:192b/24B) */
693831d357c0SMichael Chan struct hwrm_cfa_l2_filter_alloc_output {
693931d357c0SMichael Chan 	__le16	error_code;
694031d357c0SMichael Chan 	__le16	req_type;
694131d357c0SMichael Chan 	__le16	seq_id;
694231d357c0SMichael Chan 	__le16	resp_len;
694331d357c0SMichael Chan 	__le64	l2_filter_id;
6944c0c050c5SMichael Chan 	__le32	flow_id;
6945c193554eSMichael Chan 	#define CFA_L2_FILTER_ALLOC_RESP_FLOW_ID_VALUE_MASK 0x3fffffffUL
6946c193554eSMichael Chan 	#define CFA_L2_FILTER_ALLOC_RESP_FLOW_ID_VALUE_SFT 0
6947c0c050c5SMichael Chan 	#define CFA_L2_FILTER_ALLOC_RESP_FLOW_ID_TYPE      0x40000000UL
6948c193554eSMichael Chan 	#define CFA_L2_FILTER_ALLOC_RESP_FLOW_ID_TYPE_INT    (0x0UL << 30)
6949c193554eSMichael Chan 	#define CFA_L2_FILTER_ALLOC_RESP_FLOW_ID_TYPE_EXT    (0x1UL << 30)
6950c0c050c5SMichael Chan 	#define CFA_L2_FILTER_ALLOC_RESP_FLOW_ID_TYPE_LAST  CFA_L2_FILTER_ALLOC_RESP_FLOW_ID_TYPE_EXT
6951c0c050c5SMichael Chan 	#define CFA_L2_FILTER_ALLOC_RESP_FLOW_ID_DIR       0x80000000UL
6952894aa69aSMichael Chan 	#define CFA_L2_FILTER_ALLOC_RESP_FLOW_ID_DIR_RX      (0x0UL << 31)
6953c0c050c5SMichael Chan 	#define CFA_L2_FILTER_ALLOC_RESP_FLOW_ID_DIR_TX      (0x1UL << 31)
6954c0c050c5SMichael Chan 	#define CFA_L2_FILTER_ALLOC_RESP_FLOW_ID_DIR_LAST   CFA_L2_FILTER_ALLOC_RESP_FLOW_ID_DIR_TX
6955c0c050c5SMichael Chan 	u8	unused_0[3];
6956c0c050c5SMichael Chan 	u8	valid;
6957c0c050c5SMichael Chan };
6958894aa69aSMichael Chan 
6959c0c050c5SMichael Chan /* hwrm_cfa_l2_filter_free_input (size:192b/24B) */
6960c0c050c5SMichael Chan struct hwrm_cfa_l2_filter_free_input {
6961c0c050c5SMichael Chan 	__le16	req_type;
6962894aa69aSMichael 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 
6969c193554eSMichael 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;
6975c0c050c5SMichael Chan 	u8	unused_0[7];
6976a58a3e68SMichael Chan 	u8	valid;
6977a58a3e68SMichael Chan };
6978a58a3e68SMichael Chan 
6979c0c050c5SMichael Chan /* hwrm_cfa_l2_filter_cfg_input (size:320b/40B) */
6980c0c050c5SMichael Chan struct hwrm_cfa_l2_filter_cfg_input {
6981894aa69aSMichael Chan 	__le16	req_type;
6982a58a3e68SMichael Chan 	__le16	cmpl_ring;
6983a58a3e68SMichael Chan 	__le16	seq_id;
6984894aa69aSMichael Chan 	__le16	target_id;
6985c0c050c5SMichael Chan 	__le64	resp_addr;
6986c0c050c5SMichael Chan 	__le32	flags;
6987894aa69aSMichael Chan 	#define CFA_L2_FILTER_CFG_REQ_FLAGS_PATH              0x1UL
6988c0c050c5SMichael Chan 	#define CFA_L2_FILTER_CFG_REQ_FLAGS_PATH_TX             0x0UL
6989c0c050c5SMichael Chan 	#define CFA_L2_FILTER_CFG_REQ_FLAGS_PATH_RX             0x1UL
6990c0c050c5SMichael 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
6992c0c050c5SMichael Chan 	#define CFA_L2_FILTER_CFG_REQ_FLAGS_TRAFFIC_MASK      0xcUL
6993894aa69aSMichael Chan 	#define CFA_L2_FILTER_CFG_REQ_FLAGS_TRAFFIC_SFT       2
6994c0c050c5SMichael Chan 	#define CFA_L2_FILTER_CFG_REQ_FLAGS_TRAFFIC_NO_ROCE_L2  (0x0UL << 2)
6995c0c050c5SMichael Chan 	#define CFA_L2_FILTER_CFG_REQ_FLAGS_TRAFFIC_L2          (0x1UL << 2)
6996c0c050c5SMichael Chan 	#define CFA_L2_FILTER_CFG_REQ_FLAGS_TRAFFIC_ROCE        (0x2UL << 2)
6997894aa69aSMichael Chan 	#define CFA_L2_FILTER_CFG_REQ_FLAGS_TRAFFIC_LAST       CFA_L2_FILTER_CFG_REQ_FLAGS_TRAFFIC_ROCE
699857922b0aSMichael Chan 	__le32	enables;
699957922b0aSMichael Chan 	#define CFA_L2_FILTER_CFG_REQ_ENABLES_DST_ID                 0x1UL
700057922b0aSMichael Chan 	#define CFA_L2_FILTER_CFG_REQ_ENABLES_NEW_MIRROR_VNIC_ID     0x2UL
700157922b0aSMichael Chan 	__le64	l2_filter_id;
7002894aa69aSMichael Chan 	__le32	dst_id;
700357922b0aSMichael Chan 	__le32	new_mirror_vnic_id;
700457922b0aSMichael Chan };
700557922b0aSMichael 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;
7012c0c050c5SMichael Chan 	u8	unused_0[7];
7013c0c050c5SMichael Chan 	u8	valid;
7014c0c050c5SMichael Chan };
7015c0c050c5SMichael Chan 
7016c0c050c5SMichael 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;
7023c0c050c5SMichael 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
7030c0c050c5SMichael Chan 	#define CFA_L2_SET_RX_MASK_REQ_MASK_VLANONLY            0x40UL
7031c0c050c5SMichael Chan 	#define CFA_L2_SET_RX_MASK_REQ_MASK_VLAN_NONVLAN        0x80UL
7032c0c050c5SMichael Chan 	#define CFA_L2_SET_RX_MASK_REQ_MASK_ANYVLAN_NONVLAN     0x100UL
7033c0c050c5SMichael Chan 	__le64	mc_tbl_addr;
7034c0c050c5SMichael Chan 	__le32	num_mc_entries;
7035441cabbbSMichael Chan 	u8	unused_0[4];
7036441cabbbSMichael Chan 	__le64	vlan_tag_tbl_addr;
7037441cabbbSMichael Chan 	__le32	num_vlan_tags;
7038441cabbbSMichael Chan 	u8	unused_1[4];
7039441cabbbSMichael Chan };
7040441cabbbSMichael Chan 
7041441cabbbSMichael Chan /* hwrm_cfa_l2_set_rx_mask_output (size:128b/16B) */
7042441cabbbSMichael Chan struct hwrm_cfa_l2_set_rx_mask_output {
7043441cabbbSMichael Chan 	__le16	error_code;
704457922b0aSMichael Chan 	__le16	req_type;
704531d357c0SMichael Chan 	__le16	seq_id;
704631d357c0SMichael Chan 	__le16	resp_len;
70473322479eSMichael Chan 	u8	unused_0[7];
7048441cabbbSMichael Chan 	u8	valid;
7049894aa69aSMichael Chan };
7050894aa69aSMichael Chan 
7051894aa69aSMichael Chan /* hwrm_cfa_l2_set_rx_mask_cmd_err (size:64b/8B) */
7052894aa69aSMichael Chan struct hwrm_cfa_l2_set_rx_mask_cmd_err {
7053894aa69aSMichael Chan 	u8	code;
7054c0c050c5SMichael Chan 	#define CFA_L2_SET_RX_MASK_CMD_ERR_CODE_UNKNOWN                    0x0UL
7055c0c050c5SMichael Chan 	#define CFA_L2_SET_RX_MASK_CMD_ERR_CODE_NTUPLE_FILTER_CONFLICT_ERR 0x1UL
7056c0c050c5SMichael Chan 	#define CFA_L2_SET_RX_MASK_CMD_ERR_CODE_LAST                      CFA_L2_SET_RX_MASK_CMD_ERR_CODE_NTUPLE_FILTER_CONFLICT_ERR
7057c0c050c5SMichael Chan 	u8	unused_0[7];
7058c0c050c5SMichael Chan };
7059894aa69aSMichael Chan 
7060c0c050c5SMichael 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;
70674a50ddc2SMichael Chan 	__le32	flags;
70684a50ddc2SMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_FLAGS_LOOPBACK     0x1UL
70694a50ddc2SMichael Chan 	__le32	enables;
70704a50ddc2SMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_L2_FILTER_ID       0x1UL
70714a50ddc2SMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_L2_ADDR            0x2UL
70724a50ddc2SMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_L2_IVLAN           0x4UL
70734a50ddc2SMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_L3_ADDR            0x8UL
70744a50ddc2SMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_L3_ADDR_TYPE       0x10UL
70754a50ddc2SMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_T_L3_ADDR_TYPE     0x20UL
70764a50ddc2SMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_T_L3_ADDR          0x40UL
7077894aa69aSMichael 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
7081894aa69aSMichael 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;
7089c0c050c5SMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_NONTUNNEL    0x0UL
7090c0c050c5SMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_VXLAN        0x1UL
7091894aa69aSMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_NVGRE        0x2UL
7092c0c050c5SMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_L2GRE        0x3UL
7093c0c050c5SMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPIP         0x4UL
7094c0c050c5SMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_GENEVE       0x5UL
7095c0c050c5SMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_MPLS         0x6UL
7096c0c050c5SMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_STT          0x7UL
7097894aa69aSMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPGRE        0x8UL
7098c0c050c5SMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_VXLAN_V4     0x9UL
7099c0c050c5SMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPGRE_V1     0xaUL
7100c0c050c5SMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_L2_ETYPE     0xbUL
7101894aa69aSMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_VXLAN_GPE_V6 0xcUL
7102894aa69aSMichael 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
7108894aa69aSMichael Chan 	__le32	vni;
7109894aa69aSMichael Chan 	__le32	dst_vnic_id;
7110894aa69aSMichael Chan 	__le32	mirror_vnic_id;
7111894aa69aSMichael Chan };
7112894aa69aSMichael Chan 
7113894aa69aSMichael Chan /* hwrm_cfa_tunnel_filter_alloc_output (size:192b/24B) */
7114894aa69aSMichael Chan struct hwrm_cfa_tunnel_filter_alloc_output {
7115894aa69aSMichael Chan 	__le16	error_code;
7116894aa69aSMichael Chan 	__le16	req_type;
7117894aa69aSMichael Chan 	__le16	seq_id;
7118894aa69aSMichael Chan 	__le16	resp_len;
7119894aa69aSMichael Chan 	__le64	tunnel_filter_id;
7120894aa69aSMichael Chan 	__le32	flow_id;
7121894aa69aSMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_RESP_FLOW_ID_VALUE_MASK 0x3fffffffUL
7122894aa69aSMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_RESP_FLOW_ID_VALUE_SFT 0
7123894aa69aSMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_RESP_FLOW_ID_TYPE      0x40000000UL
7124894aa69aSMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_RESP_FLOW_ID_TYPE_INT    (0x0UL << 30)
7125894aa69aSMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_RESP_FLOW_ID_TYPE_EXT    (0x1UL << 30)
7126894aa69aSMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_RESP_FLOW_ID_TYPE_LAST  CFA_TUNNEL_FILTER_ALLOC_RESP_FLOW_ID_TYPE_EXT
7127894aa69aSMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_RESP_FLOW_ID_DIR       0x80000000UL
7128894aa69aSMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_RESP_FLOW_ID_DIR_RX      (0x0UL << 31)
7129894aa69aSMichael Chan 	#define CFA_TUNNEL_FILTER_ALLOC_RESP_FLOW_ID_DIR_TX      (0x1UL << 31)
7130894aa69aSMichael 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];
7132894aa69aSMichael Chan 	u8	valid;
7133894aa69aSMichael Chan };
713431d357c0SMichael Chan 
7135894aa69aSMichael Chan /* hwrm_cfa_tunnel_filter_free_input (size:192b/24B) */
7136894aa69aSMichael Chan struct hwrm_cfa_tunnel_filter_free_input {
7137894aa69aSMichael Chan 	__le16	req_type;
7138894aa69aSMichael Chan 	__le16	cmpl_ring;
7139894aa69aSMichael Chan 	__le16	seq_id;
7140894aa69aSMichael Chan 	__le16	target_id;
7141894aa69aSMichael Chan 	__le64	resp_addr;
7142894aa69aSMichael Chan 	__le64	tunnel_filter_id;
7143894aa69aSMichael Chan };
7144894aa69aSMichael Chan 
7145894aa69aSMichael Chan /* hwrm_cfa_tunnel_filter_free_output (size:128b/16B) */
7146894aa69aSMichael Chan struct hwrm_cfa_tunnel_filter_free_output {
7147894aa69aSMichael Chan 	__le16	error_code;
7148894aa69aSMichael Chan 	__le16	req_type;
7149894aa69aSMichael Chan 	__le16	seq_id;
7150894aa69aSMichael Chan 	__le16	resp_len;
7151894aa69aSMichael Chan 	u8	unused_0[7];
7152894aa69aSMichael Chan 	u8	valid;
715331d357c0SMichael Chan };
715431d357c0SMichael Chan 
715531d357c0SMichael Chan /* hwrm_vxlan_ipv4_hdr (size:128b/16B) */
715631d357c0SMichael 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
7160c0c050c5SMichael Chan 	#define VXLAN_IPV4_HDR_VER_HLEN_VERSION_MASK      0xf0UL
7161c0c050c5SMichael Chan 	#define VXLAN_IPV4_HDR_VER_HLEN_VERSION_SFT       4
7162c0c050c5SMichael Chan 	u8	tos;
7163c0c050c5SMichael Chan 	__be16	ip_id;
7164c0c050c5SMichael Chan 	__be16	flags_frag_offset;
7165c0c050c5SMichael Chan 	u8	ttl;
7166c0c050c5SMichael Chan 	u8	protocol;
7167c0c050c5SMichael Chan 	__be32	src_ip_addr;
71683293ec23SMichael Chan 	__be32	dest_ip_addr;
7169c0c050c5SMichael Chan };
7170441cabbbSMichael Chan 
7171441cabbbSMichael Chan /* hwrm_vxlan_ipv6_hdr (size:320b/40B) */
7172441cabbbSMichael Chan struct hwrm_vxlan_ipv6_hdr {
7173441cabbbSMichael Chan 	__be32	ver_tc_flow_label;
7174441cabbbSMichael Chan 	#define VXLAN_IPV6_HDR_VER_TC_FLOW_LABEL_VER_SFT         0x1cUL
7175441cabbbSMichael Chan 	#define VXLAN_IPV6_HDR_VER_TC_FLOW_LABEL_VER_MASK        0xf0000000UL
7176441cabbbSMichael Chan 	#define VXLAN_IPV6_HDR_VER_TC_FLOW_LABEL_TC_SFT          0x14UL
7177441cabbbSMichael Chan 	#define VXLAN_IPV6_HDR_VER_TC_FLOW_LABEL_TC_MASK         0xff00000UL
717831d357c0SMichael Chan 	#define VXLAN_IPV6_HDR_VER_TC_FLOW_LABEL_FLOW_LABEL_SFT  0x0UL
717931d357c0SMichael Chan 	#define VXLAN_IPV6_HDR_VER_TC_FLOW_LABEL_FLOW_LABEL_MASK 0xfffffUL
718031d357c0SMichael Chan 	#define VXLAN_IPV6_HDR_VER_TC_FLOW_LABEL_LAST           VXLAN_IPV6_HDR_VER_TC_FLOW_LABEL_FLOW_LABEL_MASK
71813293ec23SMichael Chan 	__be16	payload_len;
71823293ec23SMichael Chan 	u8	next_hdr;
7183894aa69aSMichael Chan 	u8	ttl;
7184acb20054SMichael Chan 	__be32	src_ip_addr[4];
7185c0c050c5SMichael Chan 	__be32	dest_ip_addr[4];
7186c0c050c5SMichael Chan };
7187894aa69aSMichael Chan 
7188c0c050c5SMichael Chan /* hwrm_cfa_encap_data_vxlan (size:640b/80B) */
7189c0c050c5SMichael Chan struct hwrm_cfa_encap_data_vxlan {
7190c0c050c5SMichael Chan 	u8	src_mac_addr[6];
7191c0c050c5SMichael Chan 	__le16	unused_0;
7192c0c050c5SMichael Chan 	u8	dst_mac_addr[6];
7193c193554eSMichael Chan 	u8	num_vlan_tags;
7194894aa69aSMichael Chan 	u8	unused_1;
7195c0c050c5SMichael Chan 	__be16	ovlan_tpid;
7196c0c050c5SMichael Chan 	__be16	ovlan_tci;
7197c0c050c5SMichael Chan 	__be16	ivlan_tpid;
7198894aa69aSMichael Chan 	__be16	ivlan_tci;
7199c0c050c5SMichael Chan 	__le32	l3[10];
7200c0c050c5SMichael Chan 	#define CFA_ENCAP_DATA_VXLAN_L3_VER_MASK 0xfUL
7201c0c050c5SMichael Chan 	#define CFA_ENCAP_DATA_VXLAN_L3_VER_IPV4 0x4UL
7202c0c050c5SMichael Chan 	#define CFA_ENCAP_DATA_VXLAN_L3_VER_IPV6 0x6UL
7203c0c050c5SMichael Chan 	#define CFA_ENCAP_DATA_VXLAN_L3_LAST    CFA_ENCAP_DATA_VXLAN_L3_VER_IPV6
7204c0c050c5SMichael Chan 	__be16	src_port;
7205c193554eSMichael Chan 	__be16	dst_port;
7206894aa69aSMichael Chan 	__be32	vni;
7207c0c050c5SMichael Chan 	u8	hdr_rsvd0[3];
7208c0c050c5SMichael Chan 	u8	hdr_rsvd1;
7209894aa69aSMichael Chan 	u8	hdr_flags;
7210c0c050c5SMichael Chan 	u8	unused[3];
7211c0c050c5SMichael Chan };
7212c0c050c5SMichael Chan 
7213c0c050c5SMichael Chan /* hwrm_cfa_encap_record_alloc_input (size:832b/104B) */
7214c0c050c5SMichael Chan struct hwrm_cfa_encap_record_alloc_input {
7215894aa69aSMichael Chan 	__le16	req_type;
7216c0c050c5SMichael Chan 	__le16	cmpl_ring;
7217c0c050c5SMichael Chan 	__le16	seq_id;
7218c0c050c5SMichael Chan 	__le16	target_id;
721941136ab3SMichael Chan 	__le64	resp_addr;
7220c0c050c5SMichael Chan 	__le32	flags;
7221c0c050c5SMichael Chan 	#define CFA_ENCAP_RECORD_ALLOC_REQ_FLAGS_LOOPBACK     0x1UL
7222c0c050c5SMichael Chan 	#define CFA_ENCAP_RECORD_ALLOC_REQ_FLAGS_EXTERNAL     0x2UL
7223c0c050c5SMichael Chan 	u8	encap_type;
7224c0c050c5SMichael Chan 	#define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_VXLAN        0x1UL
7225c0c050c5SMichael Chan 	#define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_NVGRE        0x2UL
7226c0c050c5SMichael Chan 	#define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_L2GRE        0x3UL
7227c0c050c5SMichael Chan 	#define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_IPIP         0x4UL
7228c0c050c5SMichael Chan 	#define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_GENEVE       0x5UL
7229bac9a7e0SMichael Chan 	#define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_MPLS         0x6UL
72303293ec23SMichael Chan 	#define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_VLAN         0x7UL
723141136ab3SMichael Chan 	#define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_IPGRE        0x8UL
723241136ab3SMichael Chan 	#define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_VXLAN_V4     0x9UL
723321e70778SMichael Chan 	#define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_IPGRE_V1     0xaUL
7234c0c050c5SMichael Chan 	#define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_L2_ETYPE     0xbUL
7235c0c050c5SMichael Chan 	#define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_VXLAN_GPE_V6 0xcUL
7236c0c050c5SMichael Chan 	#define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_LAST        CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_VXLAN_GPE_V6
7237c0c050c5SMichael Chan 	u8	unused_0[3];
7238c0c050c5SMichael Chan 	__le32	encap_data[20];
7239c0c050c5SMichael Chan };
7240c0c050c5SMichael Chan 
7241c0c050c5SMichael 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;
7247c0c050c5SMichael Chan 	__le32	encap_record_id;
7248c0c050c5SMichael Chan 	u8	unused_0[3];
7249c0c050c5SMichael Chan 	u8	valid;
7250c0c050c5SMichael Chan };
7251c193554eSMichael Chan 
7252c0c050c5SMichael Chan /* hwrm_cfa_encap_record_free_input (size:192b/24B) */
7253c193554eSMichael Chan struct hwrm_cfa_encap_record_free_input {
72544a50ddc2SMichael Chan 	__le16	req_type;
7255c0c050c5SMichael Chan 	__le16	cmpl_ring;
7256c0c050c5SMichael Chan 	__le16	seq_id;
7257c0c050c5SMichael Chan 	__le16	target_id;
7258c193554eSMichael Chan 	__le64	resp_addr;
7259441cabbbSMichael Chan 	__le32	encap_record_id;
7260441cabbbSMichael Chan 	u8	unused_0[4];
7261441cabbbSMichael Chan };
7262894aa69aSMichael Chan 
7263c0c050c5SMichael Chan /* hwrm_cfa_encap_record_free_output (size:128b/16B) */
7264441cabbbSMichael Chan struct hwrm_cfa_encap_record_free_output {
7265acb20054SMichael Chan 	__le16	error_code;
7266acb20054SMichael Chan 	__le16	req_type;
726784a911dbSMichael Chan 	__le16	seq_id;
726884a911dbSMichael Chan 	__le16	resp_len;
726984a911dbSMichael Chan 	u8	unused_0[7];
727084a911dbSMichael Chan 	u8	valid;
7271c193554eSMichael Chan };
7272c0c050c5SMichael Chan 
7273c0c050c5SMichael Chan /* hwrm_cfa_ntuple_filter_alloc_input (size:1024b/128B) */
7274441cabbbSMichael Chan struct hwrm_cfa_ntuple_filter_alloc_input {
7275441cabbbSMichael Chan 	__le16	req_type;
7276441cabbbSMichael Chan 	__le16	cmpl_ring;
7277441cabbbSMichael Chan 	__le16	seq_id;
7278441cabbbSMichael Chan 	__le16	target_id;
7279441cabbbSMichael Chan 	__le64	resp_addr;
7280441cabbbSMichael Chan 	__le32	flags;
7281441cabbbSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_FLAGS_LOOPBACK              0x1UL
7282441cabbbSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_FLAGS_DROP                  0x2UL
728357922b0aSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_FLAGS_METER                 0x4UL
728431d357c0SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_FLAGS_DEST_FID              0x8UL
728531d357c0SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_FLAGS_ARP_REPLY             0x10UL
72863322479eSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_FLAGS_DEST_RFS_RING_IDX     0x20UL
7287441cabbbSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_FLAGS_NO_L2_CONTEXT         0x40UL
7288894aa69aSMichael Chan 	__le32	enables;
7289c0c050c5SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_L2_FILTER_ID         0x1UL
7290441cabbbSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_ETHERTYPE            0x2UL
7291441cabbbSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_TUNNEL_TYPE          0x4UL
7292441cabbbSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_SRC_MACADDR          0x8UL
7293441cabbbSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_IPADDR_TYPE          0x10UL
7294441cabbbSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_SRC_IPADDR           0x20UL
7295894aa69aSMichael 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
7305c0c050c5SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_DST_ID               0x10000UL
7306c0c050c5SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_MIRROR_VNIC_ID       0x20000UL
7307894aa69aSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_DST_MACADDR          0x40000UL
7308c0c050c5SMichael 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;
7312c0c050c5SMichael Chan 	u8	ip_addr_type;
7313c0c050c5SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_ADDR_TYPE_UNKNOWN 0x0UL
7314c0c050c5SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_ADDR_TYPE_IPV4    0x4UL
73154a50ddc2SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_ADDR_TYPE_IPV6    0x6UL
73164a50ddc2SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_ADDR_TYPE_LAST   CFA_NTUPLE_FILTER_ALLOC_REQ_IP_ADDR_TYPE_IPV6
73174a50ddc2SMichael Chan 	u8	ip_protocol;
73184a50ddc2SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_PROTOCOL_UNKNOWN 0x0UL
73194a50ddc2SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_PROTOCOL_TCP     0x6UL
73204a50ddc2SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_PROTOCOL_UDP     0x11UL
73214a50ddc2SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_PROTOCOL_ICMP    0x1UL
73224a50ddc2SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_PROTOCOL_ICMPV6  0x3aUL
73234a50ddc2SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_PROTOCOL_RSVD    0xffUL
73244a50ddc2SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_PROTOCOL_LAST   CFA_NTUPLE_FILTER_ALLOC_REQ_IP_PROTOCOL_RSVD
7325894aa69aSMichael Chan 	__le16	dst_id;
7326c0c050c5SMichael Chan 	__le16	mirror_vnic_id;
7327c0c050c5SMichael Chan 	u8	tunnel_type;
7328c0c050c5SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_NONTUNNEL    0x0UL
7329894aa69aSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_VXLAN        0x1UL
733057922b0aSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_NVGRE        0x2UL
733157922b0aSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_L2GRE        0x3UL
733257922b0aSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPIP         0x4UL
733357922b0aSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_GENEVE       0x5UL
7334894aa69aSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_MPLS         0x6UL
733557922b0aSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_STT          0x7UL
733657922b0aSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPGRE        0x8UL
733757922b0aSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_VXLAN_V4     0x9UL
7338894aa69aSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPGRE_V1     0xaUL
7339c0c050c5SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_L2_ETYPE     0xbUL
7340c0c050c5SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_VXLAN_GPE_V6 0xcUL
7341c0c050c5SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_ANYTUNNEL    0xffUL
7342c0c050c5SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_LAST        CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_ANYTUNNEL
7343c0c050c5SMichael Chan 	u8	pri_hint;
7344c0c050c5SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_PRI_HINT_NO_PREFER 0x0UL
7345c0c050c5SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_PRI_HINT_ABOVE     0x1UL
7346c0c050c5SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_PRI_HINT_BELOW     0x2UL
7347c0c050c5SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_PRI_HINT_HIGHEST   0x3UL
7348894aa69aSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_REQ_PRI_HINT_LOWEST    0x4UL
7349c0c050c5SMichael 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];
7354894aa69aSMichael Chan 	__be16	src_port;
7355c0c050c5SMichael Chan 	__be16	src_port_mask;
7356c0c050c5SMichael Chan 	__be16	dst_port;
7357c0c050c5SMichael Chan 	__be16	dst_port_mask;
7358894aa69aSMichael Chan 	__le64	ntuple_filter_id_hint;
7359c0c050c5SMichael Chan };
7360c0c050c5SMichael Chan 
7361c0c050c5SMichael 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;
7366c193554eSMichael Chan 	__le16	resp_len;
7367c193554eSMichael Chan 	__le64	ntuple_filter_id;
7368bac9a7e0SMichael Chan 	__le32	flow_id;
73693293ec23SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_RESP_FLOW_ID_VALUE_MASK 0x3fffffffUL
73703293ec23SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_RESP_FLOW_ID_VALUE_SFT 0
737141136ab3SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_RESP_FLOW_ID_TYPE      0x40000000UL
737221e70778SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_RESP_FLOW_ID_TYPE_INT    (0x0UL << 30)
7373c0c050c5SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_RESP_FLOW_ID_TYPE_EXT    (0x1UL << 30)
7374c193554eSMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_RESP_FLOW_ID_TYPE_LAST  CFA_NTUPLE_FILTER_ALLOC_RESP_FLOW_ID_TYPE_EXT
7375c0c050c5SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_RESP_FLOW_ID_DIR       0x80000000UL
7376bac9a7e0SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_RESP_FLOW_ID_DIR_RX      (0x0UL << 31)
7377bac9a7e0SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_RESP_FLOW_ID_DIR_TX      (0x1UL << 31)
7378894aa69aSMichael 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 };
7382894aa69aSMichael Chan 
7383c0c050c5SMichael Chan /* hwrm_cfa_ntuple_filter_alloc_cmd_err (size:64b/8B) */
7384c0c050c5SMichael Chan struct hwrm_cfa_ntuple_filter_alloc_cmd_err {
7385c0c050c5SMichael Chan 	u8	code;
7386c0c050c5SMichael Chan 	#define CFA_NTUPLE_FILTER_ALLOC_CMD_ERR_CODE_UNKNOWN                   0x0UL
7387c0c050c5SMichael 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
7389c0c050c5SMichael Chan 	u8	unused_0[7];
7390c0c050c5SMichael Chan };
7391c0c050c5SMichael Chan 
7392894aa69aSMichael Chan /* hwrm_cfa_ntuple_filter_free_input (size:192b/24B) */
739357922b0aSMichael Chan struct hwrm_cfa_ntuple_filter_free_input {
739457922b0aSMichael Chan 	__le16	req_type;
739557922b0aSMichael Chan 	__le16	cmpl_ring;
739657922b0aSMichael Chan 	__le16	seq_id;
739757922b0aSMichael Chan 	__le16	target_id;
739857922b0aSMichael Chan 	__le64	resp_addr;
739957922b0aSMichael Chan 	__le64	ntuple_filter_id;
740057922b0aSMichael Chan };
740157922b0aSMichael Chan 
740257922b0aSMichael Chan /* hwrm_cfa_ntuple_filter_free_output (size:128b/16B) */
740357922b0aSMichael Chan struct hwrm_cfa_ntuple_filter_free_output {
740457922b0aSMichael Chan 	__le16	error_code;
740557922b0aSMichael Chan 	__le16	req_type;
740657922b0aSMichael Chan 	__le16	seq_id;
740757922b0aSMichael Chan 	__le16	resp_len;
740857922b0aSMichael Chan 	u8	unused_0[7];
740957922b0aSMichael Chan 	u8	valid;
741057922b0aSMichael Chan };
741157922b0aSMichael Chan 
741257922b0aSMichael Chan /* hwrm_cfa_ntuple_filter_cfg_input (size:384b/48B) */
741357922b0aSMichael Chan struct hwrm_cfa_ntuple_filter_cfg_input {
741457922b0aSMichael Chan 	__le16	req_type;
741557922b0aSMichael Chan 	__le16	cmpl_ring;
741657922b0aSMichael Chan 	__le16	seq_id;
741757922b0aSMichael Chan 	__le16	target_id;
741857922b0aSMichael Chan 	__le64	resp_addr;
741957922b0aSMichael Chan 	__le32	enables;
742057922b0aSMichael Chan 	#define CFA_NTUPLE_FILTER_CFG_REQ_ENABLES_NEW_DST_ID                0x1UL
742157922b0aSMichael Chan 	#define CFA_NTUPLE_FILTER_CFG_REQ_ENABLES_NEW_MIRROR_VNIC_ID        0x2UL
742257922b0aSMichael Chan 	#define CFA_NTUPLE_FILTER_CFG_REQ_ENABLES_NEW_METER_INSTANCE_ID     0x4UL
742357922b0aSMichael Chan 	__le32	flags;
742457922b0aSMichael Chan 	#define CFA_NTUPLE_FILTER_CFG_REQ_FLAGS_DEST_FID              0x1UL
742557922b0aSMichael Chan 	#define CFA_NTUPLE_FILTER_CFG_REQ_FLAGS_DEST_RFS_RING_IDX     0x2UL
742657922b0aSMichael Chan 	#define CFA_NTUPLE_FILTER_CFG_REQ_FLAGS_NO_L2_CONTEXT         0x4UL
742757922b0aSMichael Chan 	__le64	ntuple_filter_id;
742857922b0aSMichael Chan 	__le32	new_dst_id;
742957922b0aSMichael Chan 	__le32	new_mirror_vnic_id;
743057922b0aSMichael Chan 	__le16	new_meter_instance_id;
743131d357c0SMichael Chan 	#define CFA_NTUPLE_FILTER_CFG_REQ_NEW_METER_INSTANCE_ID_INVALID 0xffffUL
743231d357c0SMichael Chan 	#define CFA_NTUPLE_FILTER_CFG_REQ_NEW_METER_INSTANCE_ID_LAST   CFA_NTUPLE_FILTER_CFG_REQ_NEW_METER_INSTANCE_ID_INVALID
74333322479eSMichael Chan 	u8	unused_1[6];
743457922b0aSMichael Chan };
7435894aa69aSMichael Chan 
743657922b0aSMichael Chan /* hwrm_cfa_ntuple_filter_cfg_output (size:128b/16B) */
743757922b0aSMichael Chan struct hwrm_cfa_ntuple_filter_cfg_output {
743857922b0aSMichael Chan 	__le16	error_code;
7439894aa69aSMichael Chan 	__le16	req_type;
744057922b0aSMichael Chan 	__le16	seq_id;
744157922b0aSMichael Chan 	__le16	resp_len;
744257922b0aSMichael Chan 	u8	unused_0[7];
744357922b0aSMichael Chan 	u8	valid;
744457922b0aSMichael Chan };
744557922b0aSMichael Chan 
744657922b0aSMichael 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;
7450894aa69aSMichael 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
7455894aa69aSMichael Chan 	__le32	enables;
7456894aa69aSMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_ENABLES_TUNNEL_TYPE        0x1UL
7457894aa69aSMichael 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
7466894aa69aSMichael 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
7473894aa69aSMichael 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
7477894aa69aSMichael 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
7485894aa69aSMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPGRE_V1     0xaUL
748657922b0aSMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_TUNNEL_TYPE_L2_ETYPE     0xbUL
748757922b0aSMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_TUNNEL_TYPE_VXLAN_GPE_V6 0xcUL
7488894aa69aSMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_TUNNEL_TYPE_ANYTUNNEL    0xffUL
748957922b0aSMichael 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];
749357922b0aSMichael Chan 	u8	unused_2[2];
7494894aa69aSMichael Chan 	u8	dst_macaddr[6];
749557922b0aSMichael Chan 	__be16	ovlan_vid;
749657922b0aSMichael Chan 	__be16	ivlan_vid;
749757922b0aSMichael Chan 	__be16	t_ovlan_vid;
7498894aa69aSMichael Chan 	__be16	t_ivlan_vid;
74996a17eb27SMichael Chan 	__be16	ethertype;
75006a17eb27SMichael Chan 	u8	ip_addr_type;
75016a17eb27SMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_IP_ADDR_TYPE_UNKNOWN 0x0UL
75026a17eb27SMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_IP_ADDR_TYPE_IPV4    0x4UL
75036a17eb27SMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_IP_ADDR_TYPE_IPV6    0x6UL
75046a17eb27SMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_IP_ADDR_TYPE_LAST   CFA_DECAP_FILTER_ALLOC_REQ_IP_ADDR_TYPE_IPV6
75056a17eb27SMichael Chan 	u8	ip_protocol;
75066a17eb27SMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_IP_PROTOCOL_UNKNOWN 0x0UL
75076a17eb27SMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_IP_PROTOCOL_TCP     0x6UL
75086a17eb27SMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_IP_PROTOCOL_UDP     0x11UL
75096a17eb27SMichael Chan 	#define CFA_DECAP_FILTER_ALLOC_REQ_IP_PROTOCOL_LAST   CFA_DECAP_FILTER_ALLOC_REQ_IP_PROTOCOL_UDP
75106a17eb27SMichael Chan 	__le16	unused_3;
75116a17eb27SMichael Chan 	__le32	unused_4;
75126a17eb27SMichael Chan 	__be32	src_ipaddr[4];
75136a17eb27SMichael Chan 	__be32	dst_ipaddr[4];
75146a17eb27SMichael Chan 	__be16	src_port;
75156a17eb27SMichael Chan 	__be16	dst_port;
75166a17eb27SMichael Chan 	__le16	dst_id;
75176a17eb27SMichael Chan 	__le16	l2_ctxt_ref_id;
75186a17eb27SMichael Chan };
751931d357c0SMichael Chan 
752031d357c0SMichael Chan /* hwrm_cfa_decap_filter_alloc_output (size:128b/16B) */
752131d357c0SMichael Chan struct hwrm_cfa_decap_filter_alloc_output {
75223322479eSMichael Chan 	__le16	error_code;
75236a17eb27SMichael Chan 	__le16	req_type;
75246a17eb27SMichael Chan 	__le16	seq_id;
75256a17eb27SMichael Chan 	__le16	resp_len;
75266a17eb27SMichael Chan 	__le32	decap_filter_id;
75276a17eb27SMichael Chan 	u8	unused_0[3];
75286a17eb27SMichael Chan 	u8	valid;
75296a17eb27SMichael Chan };
75306a17eb27SMichael Chan 
75316a17eb27SMichael Chan /* hwrm_cfa_decap_filter_free_input (size:192b/24B) */
75326a17eb27SMichael Chan struct hwrm_cfa_decap_filter_free_input {
75336a17eb27SMichael Chan 	__le16	req_type;
75346a17eb27SMichael Chan 	__le16	cmpl_ring;
75356a17eb27SMichael Chan 	__le16	seq_id;
753631d357c0SMichael Chan 	__le16	target_id;
75373322479eSMichael Chan 	__le64	resp_addr;
75383322479eSMichael Chan 	__le32	decap_filter_id;
75394a50ddc2SMichael Chan 	u8	unused_0[4];
75406a17eb27SMichael Chan };
75416a17eb27SMichael Chan 
75426a17eb27SMichael Chan /* hwrm_cfa_decap_filter_free_output (size:128b/16B) */
75436a17eb27SMichael Chan struct hwrm_cfa_decap_filter_free_output {
75446a17eb27SMichael Chan 	__le16	error_code;
75456a17eb27SMichael Chan 	__le16	req_type;
75466a17eb27SMichael Chan 	__le16	seq_id;
75476a17eb27SMichael Chan 	__le16	resp_len;
75486a17eb27SMichael Chan 	u8	unused_0[7];
75496a17eb27SMichael Chan 	u8	valid;
75506a17eb27SMichael Chan };
75516a17eb27SMichael Chan 
75526a17eb27SMichael 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
756331d357c0SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_FLAGS_NUM_VLAN_NONE            (0x0UL << 1)
756431d357c0SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_FLAGS_NUM_VLAN_ONE             (0x1UL << 1)
756531d357c0SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_FLAGS_NUM_VLAN_TWO             (0x2UL << 1)
756631d357c0SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_FLAGS_NUM_VLAN_LAST           CFA_FLOW_ALLOC_REQ_FLAGS_NUM_VLAN_TWO
756731d357c0SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_FLAGS_FLOWTYPE_MASK          0x38UL
756831d357c0SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_FLAGS_FLOWTYPE_SFT           3
756931d357c0SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_FLAGS_FLOWTYPE_L2              (0x0UL << 3)
757031d357c0SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_FLAGS_FLOWTYPE_IPV4            (0x1UL << 3)
757131d357c0SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_FLAGS_FLOWTYPE_IPV6            (0x2UL << 3)
757231d357c0SMichael 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
757731d357c0SMichael Chan 	__le16	src_fid;
757831d357c0SMichael Chan 	__le32	tunnel_handle;
75796a17eb27SMichael Chan 	__le16	action_flags;
75806a17eb27SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_ACTION_FLAGS_FWD                       0x1UL
758131d357c0SMichael 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
758831d357c0SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_ACTION_FLAGS_L2_HEADER_REWRITE         0x100UL
758931d357c0SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_ACTION_FLAGS_TTL_DECREMENT             0x200UL
75904a50ddc2SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_ACTION_FLAGS_TUNNEL_IP                 0x400UL
75914a50ddc2SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_ACTION_FLAGS_FLOW_AGING_ENABLED        0x800UL
75924a50ddc2SMichael 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
75944a50ddc2SMichael Chan 	__le16	dst_fid;
75954a50ddc2SMichael Chan 	__be16	l2_rewrite_vlan_tpid;
75964a50ddc2SMichael Chan 	__be16	l2_rewrite_vlan_tci;
75974a50ddc2SMichael Chan 	__le16	act_meter_id;
75984a50ddc2SMichael Chan 	__le16	ref_flow_handle;
75994a50ddc2SMichael Chan 	__be16	ethertype;
760031d357c0SMichael Chan 	__be16	outer_vlan_tci;
76013322479eSMichael Chan 	__be16	dmac[3];
76023322479eSMichael Chan 	__be16	inner_vlan_tci;
76036a17eb27SMichael Chan 	__be16	smac[3];
76046a17eb27SMichael Chan 	u8	ip_dst_mask_len;
76056a17eb27SMichael Chan 	u8	ip_src_mask_len;
76062792b5b9SMichael Chan 	__be32	ip_dst[4];
76072792b5b9SMichael Chan 	__be32	ip_src[4];
76082792b5b9SMichael Chan 	__be16	l4_src_port;
76092792b5b9SMichael Chan 	__be16	l4_src_port_mask;
76102792b5b9SMichael Chan 	__be16	l4_dst_port;
76112792b5b9SMichael Chan 	__be16	l4_dst_port_mask;
76122792b5b9SMichael Chan 	__be32	nat_ip_address[4];
76132792b5b9SMichael Chan 	__be16	l2_rewrite_dmac[3];
76142792b5b9SMichael Chan 	__be16	nat_port;
76152792b5b9SMichael Chan 	__be16	l2_rewrite_smac[3];
76162792b5b9SMichael Chan 	u8	ip_proto;
76172792b5b9SMichael Chan 	u8	tunnel_type;
76182792b5b9SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_TUNNEL_TYPE_NONTUNNEL    0x0UL
76192792b5b9SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_TUNNEL_TYPE_VXLAN        0x1UL
76202792b5b9SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_TUNNEL_TYPE_NVGRE        0x2UL
762131d357c0SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_TUNNEL_TYPE_L2GRE        0x3UL
76226a17eb27SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_TUNNEL_TYPE_IPIP         0x4UL
76236a17eb27SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_TUNNEL_TYPE_GENEVE       0x5UL
76246a17eb27SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_TUNNEL_TYPE_MPLS         0x6UL
76256a17eb27SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_TUNNEL_TYPE_STT          0x7UL
76266a17eb27SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_TUNNEL_TYPE_IPGRE        0x8UL
76276a17eb27SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_TUNNEL_TYPE_VXLAN_V4     0x9UL
76286a17eb27SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_TUNNEL_TYPE_IPGRE_V1     0xaUL
76294a50ddc2SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_TUNNEL_TYPE_L2_ETYPE     0xbUL
76304a50ddc2SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_TUNNEL_TYPE_VXLAN_GPE_V6 0xcUL
763131d357c0SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_TUNNEL_TYPE_ANYTUNNEL    0xffUL
76326a17eb27SMichael Chan 	#define CFA_FLOW_ALLOC_REQ_TUNNEL_TYPE_LAST        CFA_FLOW_ALLOC_REQ_TUNNEL_TYPE_ANYTUNNEL
76336a17eb27SMichael Chan };
7634894aa69aSMichael Chan 
76356a17eb27SMichael 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;
7642894aa69aSMichael Chan 	u8	unused_0[2];
76436a17eb27SMichael Chan 	__le32	flow_id;
76446a17eb27SMichael Chan 	#define CFA_FLOW_ALLOC_RESP_FLOW_ID_VALUE_MASK 0x3fffffffUL
76456a17eb27SMichael Chan 	#define CFA_FLOW_ALLOC_RESP_FLOW_ID_VALUE_SFT 0
76463322479eSMichael Chan 	#define CFA_FLOW_ALLOC_RESP_FLOW_ID_TYPE      0x40000000UL
76473322479eSMichael Chan 	#define CFA_FLOW_ALLOC_RESP_FLOW_ID_TYPE_INT    (0x0UL << 30)
76483322479eSMichael Chan 	#define CFA_FLOW_ALLOC_RESP_FLOW_ID_TYPE_EXT    (0x1UL << 30)
76493322479eSMichael Chan 	#define CFA_FLOW_ALLOC_RESP_FLOW_ID_TYPE_LAST  CFA_FLOW_ALLOC_RESP_FLOW_ID_TYPE_EXT
76503322479eSMichael Chan 	#define CFA_FLOW_ALLOC_RESP_FLOW_ID_DIR       0x80000000UL
76513322479eSMichael Chan 	#define CFA_FLOW_ALLOC_RESP_FLOW_ID_DIR_RX      (0x0UL << 31)
76523322479eSMichael Chan 	#define CFA_FLOW_ALLOC_RESP_FLOW_ID_DIR_TX      (0x1UL << 31)
76533322479eSMichael Chan 	#define CFA_FLOW_ALLOC_RESP_FLOW_ID_DIR_LAST   CFA_FLOW_ALLOC_RESP_FLOW_ID_DIR_TX
76543322479eSMichael Chan 	__le64	ext_flow_handle;
76553322479eSMichael Chan 	__le32	flow_counter_id;
76563322479eSMichael Chan 	u8	unused_1[3];
7657ad04cc05SMichael Chan 	u8	valid;
76583322479eSMichael Chan };
76593322479eSMichael Chan 
7660ad04cc05SMichael Chan /* hwrm_cfa_flow_alloc_cmd_err (size:64b/8B) */
7661ad04cc05SMichael Chan struct hwrm_cfa_flow_alloc_cmd_err {
7662ad04cc05SMichael Chan 	u8	code;
7663ad04cc05SMichael Chan 	#define CFA_FLOW_ALLOC_CMD_ERR_CODE_UNKNOWN         0x0UL
7664ad04cc05SMichael Chan 	#define CFA_FLOW_ALLOC_CMD_ERR_CODE_L2_CONTEXT_TCAM 0x1UL
76653322479eSMichael Chan 	#define CFA_FLOW_ALLOC_CMD_ERR_CODE_ACTION_RECORD   0x2UL
76663322479eSMichael Chan 	#define CFA_FLOW_ALLOC_CMD_ERR_CODE_FLOW_COUNTER    0x3UL
76673322479eSMichael Chan 	#define CFA_FLOW_ALLOC_CMD_ERR_CODE_WILD_CARD_TCAM  0x4UL
76683322479eSMichael Chan 	#define CFA_FLOW_ALLOC_CMD_ERR_CODE_HASH_COLLISION  0x5UL
76693293ec23SMichael Chan 	#define CFA_FLOW_ALLOC_CMD_ERR_CODE_KEY_EXISTS      0x6UL
76703322479eSMichael Chan 	#define CFA_FLOW_ALLOC_CMD_ERR_CODE_FLOW_CTXT_DB    0x7UL
76713322479eSMichael Chan 	#define CFA_FLOW_ALLOC_CMD_ERR_CODE_LAST           CFA_FLOW_ALLOC_CMD_ERR_CODE_FLOW_CTXT_DB
76723322479eSMichael Chan 	u8	unused_0[7];
76733322479eSMichael Chan };
76743322479eSMichael Chan 
76753322479eSMichael Chan /* hwrm_cfa_flow_free_input (size:256b/32B) */
76763293ec23SMichael Chan struct hwrm_cfa_flow_free_input {
76773293ec23SMichael Chan 	__le16	req_type;
76783322479eSMichael Chan 	__le16	cmpl_ring;
76793322479eSMichael Chan 	__le16	seq_id;
76803322479eSMichael Chan 	__le16	target_id;
76813322479eSMichael Chan 	__le64	resp_addr;
76823322479eSMichael Chan 	__le16	flow_handle;
76833322479eSMichael Chan 	__le16	unused_0;
76843322479eSMichael Chan 	__le32	flow_counter_id;
76853322479eSMichael Chan 	__le64	ext_flow_handle;
76863322479eSMichael Chan };
76873322479eSMichael Chan 
76883322479eSMichael Chan /* hwrm_cfa_flow_free_output (size:256b/32B) */
76893293ec23SMichael Chan struct hwrm_cfa_flow_free_output {
76903293ec23SMichael Chan 	__le16	error_code;
76913293ec23SMichael Chan 	__le16	req_type;
76923293ec23SMichael Chan 	__le16	seq_id;
76933322479eSMichael Chan 	__le16	resp_len;
76943322479eSMichael Chan 	__le64	packet;
76953322479eSMichael Chan 	__le64	byte;
769631d357c0SMichael Chan 	u8	unused_0[7];
76976a17eb27SMichael Chan 	u8	valid;
76986a17eb27SMichael Chan };
76996a17eb27SMichael Chan 
77006a17eb27SMichael Chan /* hwrm_cfa_flow_info_input (size:256b/32B) */
77016a17eb27SMichael Chan struct hwrm_cfa_flow_info_input {
77026a17eb27SMichael Chan 	__le16	req_type;
77036a17eb27SMichael Chan 	__le16	cmpl_ring;
77046a17eb27SMichael Chan 	__le16	seq_id;
77056a17eb27SMichael Chan 	__le16	target_id;
77066a17eb27SMichael Chan 	__le64	resp_addr;
77076a17eb27SMichael Chan 	__le16	flow_handle;
77086a17eb27SMichael Chan 	#define CFA_FLOW_INFO_REQ_FLOW_HANDLE_MAX_MASK      0xfffUL
77096a17eb27SMichael Chan 	#define CFA_FLOW_INFO_REQ_FLOW_HANDLE_CNP_CNT       0x1000UL
77106a17eb27SMichael Chan 	#define CFA_FLOW_INFO_REQ_FLOW_HANDLE_ROCEV1_CNT    0x2000UL
77116a17eb27SMichael Chan 	#define CFA_FLOW_INFO_REQ_FLOW_HANDLE_NIC_TX        0x3000UL
77126a17eb27SMichael Chan 	#define CFA_FLOW_INFO_REQ_FLOW_HANDLE_ROCEV2_CNT    0x4000UL
77136a17eb27SMichael Chan 	#define CFA_FLOW_INFO_REQ_FLOW_HANDLE_DIR_RX        0x8000UL
7714894aa69aSMichael Chan 	#define CFA_FLOW_INFO_REQ_FLOW_HANDLE_CNP_CNT_RX    0x9000UL
771531d357c0SMichael Chan 	#define CFA_FLOW_INFO_REQ_FLOW_HANDLE_ROCEV1_CNT_RX 0xa000UL
771631d357c0SMichael Chan 	#define CFA_FLOW_INFO_REQ_FLOW_HANDLE_NIC_RX        0xb000UL
771731d357c0SMichael Chan 	#define CFA_FLOW_INFO_REQ_FLOW_HANDLE_ROCEV2_CNT_RX 0xc000UL
771831d357c0SMichael Chan 	#define CFA_FLOW_INFO_REQ_FLOW_HANDLE_LAST         CFA_FLOW_INFO_REQ_FLOW_HANDLE_ROCEV2_CNT_RX
771931d357c0SMichael Chan 	u8	unused_0[6];
772031d357c0SMichael Chan 	__le64	ext_flow_handle;
772131d357c0SMichael Chan };
772231d357c0SMichael Chan 
772331d357c0SMichael Chan /* hwrm_cfa_flow_info_output (size:5632b/704B) */
772431d357c0SMichael Chan struct hwrm_cfa_flow_info_output {
77256a17eb27SMichael Chan 	__le16	error_code;
77266a17eb27SMichael Chan 	__le16	req_type;
7727894aa69aSMichael Chan 	__le16	seq_id;
77286a17eb27SMichael Chan 	__le16	resp_len;
77296a17eb27SMichael Chan 	u8	flags;
77306a17eb27SMichael Chan 	#define CFA_FLOW_INFO_RESP_FLAGS_PATH_TX     0x1UL
77316a17eb27SMichael Chan 	#define CFA_FLOW_INFO_RESP_FLAGS_PATH_RX     0x2UL
77326a17eb27SMichael Chan 	u8	profile;
77336a17eb27SMichael Chan 	__le16	src_fid;
77346a17eb27SMichael Chan 	__le16	dst_fid;
77356a17eb27SMichael Chan 	__le16	l2_ctxt_id;
77366a17eb27SMichael Chan 	__le64	em_info;
77376a17eb27SMichael Chan 	__le64	tcam_info;
77386a17eb27SMichael Chan 	__le64	vfp_tcam_info;
77396a17eb27SMichael Chan 	__le16	ar_id;
77406a17eb27SMichael Chan 	__le16	flow_handle;
77416a17eb27SMichael Chan 	__le32	tunnel_handle;
77426a17eb27SMichael Chan 	__le16	flow_timer;
77436a17eb27SMichael Chan 	u8	unused_0[6];
77446a17eb27SMichael Chan 	__le32	flow_key_data[130];
77456a17eb27SMichael Chan 	__le32	flow_action_info[30];
77466a17eb27SMichael Chan 	u8	unused_1[7];
77476a17eb27SMichael Chan 	u8	valid;
77486a17eb27SMichael Chan };
77496a17eb27SMichael Chan 
77506a17eb27SMichael Chan /* hwrm_cfa_flow_stats_input (size:640b/80B) */
77516a17eb27SMichael Chan struct hwrm_cfa_flow_stats_input {
77526a17eb27SMichael Chan 	__le16	req_type;
7753ad04cc05SMichael Chan 	__le16	cmpl_ring;
7754ad04cc05SMichael Chan 	__le16	seq_id;
77556a17eb27SMichael Chan 	__le16	target_id;
77566a17eb27SMichael Chan 	__le64	resp_addr;
77576a17eb27SMichael Chan 	__le16	num_flows;
7758894aa69aSMichael Chan 	__le16	flow_handle_0;
7759acb20054SMichael Chan 	__le16	flow_handle_1;
7760acb20054SMichael Chan 	__le16	flow_handle_2;
7761acb20054SMichael Chan 	__le16	flow_handle_3;
7762acb20054SMichael Chan 	__le16	flow_handle_4;
7763acb20054SMichael Chan 	__le16	flow_handle_5;
7764acb20054SMichael Chan 	__le16	flow_handle_6;
7765acb20054SMichael Chan 	__le16	flow_handle_7;
7766acb20054SMichael Chan 	__le16	flow_handle_8;
7767894aa69aSMichael Chan 	__le16	flow_handle_9;
7768acb20054SMichael Chan 	u8	unused_0[2];
7769acb20054SMichael Chan 	__le32	flow_id_0;
7770acb20054SMichael Chan 	__le32	flow_id_1;
7771894aa69aSMichael Chan 	__le32	flow_id_2;
7772acb20054SMichael Chan 	__le32	flow_id_3;
7773acb20054SMichael Chan 	__le32	flow_id_4;
7774acb20054SMichael Chan 	__le32	flow_id_5;
7775acb20054SMichael Chan 	__le32	flow_id_6;
7776acb20054SMichael Chan 	__le32	flow_id_7;
7777acb20054SMichael Chan 	__le32	flow_id_8;
7778acb20054SMichael Chan 	__le32	flow_id_9;
7779894aa69aSMichael Chan };
7780acb20054SMichael Chan 
7781acb20054SMichael Chan /* hwrm_cfa_flow_stats_output (size:1408b/176B) */
7782acb20054SMichael Chan struct hwrm_cfa_flow_stats_output {
77839d6b648cSMichael Chan 	__le16	error_code;
7784acb20054SMichael Chan 	__le16	req_type;
7785acb20054SMichael Chan 	__le16	seq_id;
7786acb20054SMichael Chan 	__le16	resp_len;
7787acb20054SMichael Chan 	__le64	packet_0;
7788acb20054SMichael Chan 	__le64	packet_1;
7789acb20054SMichael Chan 	__le64	packet_2;
7790acb20054SMichael Chan 	__le64	packet_3;
77919d6b648cSMichael Chan 	__le64	packet_4;
77929d6b648cSMichael Chan 	__le64	packet_5;
77939d6b648cSMichael Chan 	__le64	packet_6;
7794acb20054SMichael Chan 	__le64	packet_7;
7795acb20054SMichael Chan 	__le64	packet_8;
7796894aa69aSMichael Chan 	__le64	packet_9;
7797acb20054SMichael Chan 	__le64	byte_0;
7798acb20054SMichael Chan 	__le64	byte_1;
7799acb20054SMichael Chan 	__le64	byte_2;
7800acb20054SMichael Chan 	__le64	byte_3;
7801acb20054SMichael Chan 	__le64	byte_4;
7802894aa69aSMichael Chan 	__le64	byte_5;
7803acb20054SMichael Chan 	__le64	byte_6;
7804acb20054SMichael Chan 	__le64	byte_7;
7805acb20054SMichael Chan 	__le64	byte_8;
78063322479eSMichael Chan 	__le64	byte_9;
78073322479eSMichael Chan 	__le16	flow_hits;
78083322479eSMichael Chan 	u8	unused_0[5];
78093322479eSMichael Chan 	u8	valid;
78103322479eSMichael Chan };
78113322479eSMichael Chan 
78123322479eSMichael Chan /* hwrm_cfa_vfr_alloc_input (size:448b/56B) */
78133322479eSMichael Chan struct hwrm_cfa_vfr_alloc_input {
78143322479eSMichael Chan 	__le16	req_type;
78153322479eSMichael Chan 	__le16	cmpl_ring;
78163322479eSMichael Chan 	__le16	seq_id;
78173322479eSMichael Chan 	__le16	target_id;
78183322479eSMichael Chan 	__le64	resp_addr;
78193322479eSMichael Chan 	__le16	vf_id;
78202792b5b9SMichael Chan 	__le16	reserved;
78213322479eSMichael Chan 	u8	unused_0[4];
78223322479eSMichael Chan 	char	vfr_name[32];
78233322479eSMichael Chan };
78243322479eSMichael Chan 
78253322479eSMichael Chan /* hwrm_cfa_vfr_alloc_output (size:128b/16B) */
78263322479eSMichael Chan struct hwrm_cfa_vfr_alloc_output {
78273322479eSMichael Chan 	__le16	error_code;
78283322479eSMichael Chan 	__le16	req_type;
78294a50ddc2SMichael Chan 	__le16	seq_id;
78304a50ddc2SMichael Chan 	__le16	resp_len;
78313322479eSMichael Chan 	__le16	rx_cfa_code;
78323322479eSMichael Chan 	__le16	tx_cfa_action;
78333322479eSMichael Chan 	u8	unused_0[3];
78343322479eSMichael Chan 	u8	valid;
78353322479eSMichael Chan };
78363322479eSMichael Chan 
78372792b5b9SMichael Chan /* hwrm_cfa_vfr_free_input (size:448b/56B) */
78383322479eSMichael Chan struct hwrm_cfa_vfr_free_input {
78393322479eSMichael Chan 	__le16	req_type;
78403322479eSMichael Chan 	__le16	cmpl_ring;
78413322479eSMichael Chan 	__le16	seq_id;
78422792b5b9SMichael Chan 	__le16	target_id;
78432792b5b9SMichael Chan 	__le64	resp_addr;
78443322479eSMichael Chan 	char	vfr_name[32];
78453322479eSMichael Chan 	__le16	vf_id;
78463322479eSMichael Chan 	__le16	reserved;
78472792b5b9SMichael Chan 	u8	unused_0[4];
78483322479eSMichael Chan };
78493322479eSMichael Chan 
78503322479eSMichael Chan /* hwrm_cfa_vfr_free_output (size:128b/16B) */
78513322479eSMichael Chan struct hwrm_cfa_vfr_free_output {
78523322479eSMichael Chan 	__le16	error_code;
78533322479eSMichael Chan 	__le16	req_type;
78543322479eSMichael Chan 	__le16	seq_id;
78553322479eSMichael Chan 	__le16	resp_len;
78563322479eSMichael Chan 	u8	unused_0[7];
78573322479eSMichael Chan 	u8	valid;
78584a50ddc2SMichael Chan };
78594a50ddc2SMichael Chan 
78604a50ddc2SMichael 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;
78672792b5b9SMichael Chan 	__le32	flags;
78682792b5b9SMichael Chan 	#define CFA_EEM_QCAPS_REQ_FLAGS_PATH_TX               0x1UL
78692792b5b9SMichael 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 
78743322479eSMichael 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
78833322479eSMichael Chan 	#define CFA_EEM_QCAPS_RESP_FLAGS_CENTRALIZED_MEMORY_MODEL_SUPPORTED              0x4UL
78843322479eSMichael 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
78913322479eSMichael 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;
78952792b5b9SMichael Chan 	__le16	efc_entry_size;
78963322479eSMichael Chan 	__le16	fid_entry_size;
78973322479eSMichael Chan 	u8	unused_1[7];
78983322479eSMichael Chan 	u8	valid;
78993322479eSMichael Chan };
79003322479eSMichael Chan 
79013322479eSMichael 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;
79062792b5b9SMichael Chan 	__le16	target_id;
79072792b5b9SMichael Chan 	__le64	resp_addr;
79082792b5b9SMichael Chan 	__le32	flags;
79092792b5b9SMichael Chan 	#define CFA_EEM_CFG_REQ_FLAGS_PATH_TX               0x1UL
79102792b5b9SMichael Chan 	#define CFA_EEM_CFG_REQ_FLAGS_PATH_RX               0x2UL
79112792b5b9SMichael Chan 	#define CFA_EEM_CFG_REQ_FLAGS_PREFERRED_OFFLOAD     0x4UL
79124a50ddc2SMichael Chan 	#define CFA_EEM_CFG_REQ_FLAGS_SECONDARY_PF          0x8UL
79133322479eSMichael Chan 	__le16	group_id;
79143322479eSMichael 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;
79213322479eSMichael Chan 	__le16	fid_ctx_id;
79223322479eSMichael Chan 	__le16	unused_2;
79233322479eSMichael 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;
79444a50ddc2SMichael Chan 	#define CFA_EEM_QCFG_REQ_FLAGS_PATH_TX     0x1UL
79454a50ddc2SMichael Chan 	#define CFA_EEM_QCFG_REQ_FLAGS_PATH_RX     0x2UL
79464a50ddc2SMichael Chan 	__le32	unused_0;
79474a50ddc2SMichael Chan };
79484a50ddc2SMichael Chan 
79494a50ddc2SMichael Chan /* hwrm_cfa_eem_qcfg_output (size:256b/32B) */
79504a50ddc2SMichael Chan struct hwrm_cfa_eem_qcfg_output {
79514a50ddc2SMichael Chan 	__le16	error_code;
79524a50ddc2SMichael Chan 	__le16	req_type;
79534a50ddc2SMichael Chan 	__le16	seq_id;
79544a50ddc2SMichael Chan 	__le16	resp_len;
79554a50ddc2SMichael Chan 	__le32	flags;
79564a50ddc2SMichael Chan 	#define CFA_EEM_QCFG_RESP_FLAGS_PATH_TX               0x1UL
79574a50ddc2SMichael Chan 	#define CFA_EEM_QCFG_RESP_FLAGS_PATH_RX               0x2UL
79584a50ddc2SMichael Chan 	#define CFA_EEM_QCFG_RESP_FLAGS_PREFERRED_OFFLOAD     0x4UL
79594a50ddc2SMichael Chan 	__le32	num_entries;
79604a50ddc2SMichael Chan 	__le16	key0_ctx_id;
79614a50ddc2SMichael Chan 	__le16	key1_ctx_id;
79624a50ddc2SMichael Chan 	__le16	record_ctx_id;
79634a50ddc2SMichael Chan 	__le16	efc_ctx_id;
79644a50ddc2SMichael Chan 	__le16	fid_ctx_id;
79654a50ddc2SMichael Chan 	u8	unused_2[5];
79664a50ddc2SMichael Chan 	u8	valid;
79674a50ddc2SMichael Chan };
79684a50ddc2SMichael Chan 
79694a50ddc2SMichael Chan /* hwrm_cfa_eem_op_input (size:192b/24B) */
79704a50ddc2SMichael Chan struct hwrm_cfa_eem_op_input {
79714a50ddc2SMichael Chan 	__le16	req_type;
79724a50ddc2SMichael Chan 	__le16	cmpl_ring;
797341136ab3SMichael Chan 	__le16	seq_id;
797441136ab3SMichael Chan 	__le16	target_id;
797541136ab3SMichael Chan 	__le64	resp_addr;
797616db6323SMichael Chan 	__le32	flags;
797716db6323SMichael Chan 	#define CFA_EEM_OP_REQ_FLAGS_PATH_TX     0x1UL
797878eeadb8SMichael Chan 	#define CFA_EEM_OP_REQ_FLAGS_PATH_RX     0x2UL
797921e70778SMichael Chan 	__le16	unused_0;
7980ad04cc05SMichael Chan 	__le16	op;
798184a911dbSMichael Chan 	#define CFA_EEM_OP_REQ_OP_RESERVED    0x0UL
79824a50ddc2SMichael Chan 	#define CFA_EEM_OP_REQ_OP_EEM_DISABLE 0x1UL
79834a50ddc2SMichael Chan 	#define CFA_EEM_OP_REQ_OP_EEM_ENABLE  0x2UL
79844a50ddc2SMichael Chan 	#define CFA_EEM_OP_REQ_OP_EEM_CLEANUP 0x3UL
79854a50ddc2SMichael Chan 	#define CFA_EEM_OP_REQ_OP_LAST       CFA_EEM_OP_REQ_OP_EEM_CLEANUP
79862895c153SMichael Chan };
7987c0c050c5SMichael Chan 
7988c0c050c5SMichael Chan /* hwrm_cfa_eem_op_output (size:128b/16B) */
7989c0c050c5SMichael Chan struct hwrm_cfa_eem_op_output {
7990c0c050c5SMichael Chan 	__le16	error_code;
7991c0c050c5SMichael Chan 	__le16	req_type;
7992c0c050c5SMichael Chan 	__le16	seq_id;
7993c0c050c5SMichael Chan 	__le16	resp_len;
7994441cabbbSMichael Chan 	u8	unused_0[7];
7995441cabbbSMichael Chan 	u8	valid;
799657922b0aSMichael Chan };
79976fc92c33SMichael Chan 
799831d357c0SMichael Chan /* hwrm_cfa_adv_flow_mgnt_qcaps_input (size:256b/32B) */
79993322479eSMichael Chan struct hwrm_cfa_adv_flow_mgnt_qcaps_input {
800084a911dbSMichael Chan 	__le16	req_type;
800184a911dbSMichael Chan 	__le16	cmpl_ring;
800284a911dbSMichael Chan 	__le16	seq_id;
8003c0c050c5SMichael Chan 	__le16	target_id;
8004c0c050c5SMichael Chan 	__le64	resp_addr;
8005c0c050c5SMichael Chan 	__le32	unused_0[4];
8006894aa69aSMichael Chan };
8007c0c050c5SMichael Chan 
8008c0c050c5SMichael Chan /* hwrm_cfa_adv_flow_mgnt_qcaps_output (size:128b/16B) */
8009c0c050c5SMichael Chan struct hwrm_cfa_adv_flow_mgnt_qcaps_output {
8010c0c050c5SMichael Chan 	__le16	error_code;
8011c0c050c5SMichael Chan 	__le16	req_type;
8012c0c050c5SMichael Chan 	__le16	seq_id;
8013c0c050c5SMichael Chan 	__le16	resp_len;
801484a911dbSMichael Chan 	__le32	flags;
801584a911dbSMichael Chan 	#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_FLOW_HND_16BIT_SUPPORTED                     0x1UL
801684a911dbSMichael Chan 	#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_FLOW_HND_64BIT_SUPPORTED                     0x2UL
801784a911dbSMichael Chan 	#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_FLOW_BATCH_DELETE_SUPPORTED                  0x4UL
801884a911dbSMichael Chan 	#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_FLOW_RESET_ALL_SUPPORTED                     0x8UL
801984a911dbSMichael Chan 	#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_NTUPLE_FLOW_DEST_FUNC_SUPPORTED              0x10UL
802084a911dbSMichael Chan 	#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_TX_EEM_FLOW_SUPPORTED                        0x20UL
802184a911dbSMichael Chan 	#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_RX_EEM_FLOW_SUPPORTED                        0x40UL
802284a911dbSMichael Chan 	#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_FLOW_COUNTER_ALLOC_SUPPORTED                 0x80UL
802384a911dbSMichael Chan 	#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_RFS_RING_TBL_IDX_SUPPORTED                   0x100UL
8024c0c050c5SMichael Chan 	#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_UNTAGGED_VLAN_SUPPORTED                      0x200UL
8025c0c050c5SMichael Chan 	#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_XDP_SUPPORTED                                0x400UL
8026c0c050c5SMichael Chan 	#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_L2_HEADER_SOURCE_FIELDS_SUPPORTED            0x800UL
8027894aa69aSMichael Chan 	#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_NTUPLE_FLOW_RX_ARP_SUPPORTED                 0x1000UL
8028c0c050c5SMichael Chan 	#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_RFS_RING_TBL_IDX_V2_SUPPORTED                0x2000UL
8029c0c050c5SMichael Chan 	#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_NTUPLE_FLOW_RX_ETHERTYPE_IP_SUPPORTED        0x4000UL
8030c0c050c5SMichael Chan 	#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_TRUFLOW_CAPABLE                              0x8000UL
8031c0c050c5SMichael Chan 	#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_L2_FILTER_TRAFFIC_TYPE_L2_ROCE_SUPPORTED     0x10000UL
8032c0c050c5SMichael Chan 	#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_LAG_SUPPORTED                                0x20000UL
8033c0c050c5SMichael Chan 	#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_NTUPLE_FLOW_NO_L2CTX_SUPPORTED               0x40000UL
8034c0c050c5SMichael Chan 	#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_NIC_FLOW_STATS_SUPPORTED                     0x80000UL
8035441cabbbSMichael Chan 	#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_NTUPLE_FLOW_RX_EXT_IP_PROTO_SUPPORTED        0x100000UL
8036441cabbbSMichael Chan 	u8	unused_0[3];
803757922b0aSMichael Chan 	u8	valid;
80386fc92c33SMichael Chan };
803931d357c0SMichael Chan 
80403322479eSMichael Chan /* hwrm_tunnel_dst_port_query_input (size:192b/24B) */
804184a911dbSMichael Chan struct hwrm_tunnel_dst_port_query_input {
804284a911dbSMichael Chan 	__le16	req_type;
804384a911dbSMichael Chan 	__le16	cmpl_ring;
8044c0c050c5SMichael Chan 	__le16	seq_id;
8045c0c050c5SMichael Chan 	__le16	target_id;
8046894aa69aSMichael Chan 	__le64	resp_addr;
8047c0c050c5SMichael Chan 	u8	tunnel_type;
8048c0c050c5SMichael Chan 	#define TUNNEL_DST_PORT_QUERY_REQ_TUNNEL_TYPE_VXLAN        0x1UL
8049894aa69aSMichael Chan 	#define TUNNEL_DST_PORT_QUERY_REQ_TUNNEL_TYPE_GENEVE       0x5UL
8050c0c050c5SMichael Chan 	#define TUNNEL_DST_PORT_QUERY_REQ_TUNNEL_TYPE_VXLAN_V4     0x9UL
8051c0c050c5SMichael Chan 	#define TUNNEL_DST_PORT_QUERY_REQ_TUNNEL_TYPE_IPGRE_V1     0xaUL
8052c0c050c5SMichael Chan 	#define TUNNEL_DST_PORT_QUERY_REQ_TUNNEL_TYPE_L2_ETYPE     0xbUL
8053c0c050c5SMichael Chan 	#define TUNNEL_DST_PORT_QUERY_REQ_TUNNEL_TYPE_VXLAN_GPE_V6 0xcUL
8054c0c050c5SMichael Chan 	#define TUNNEL_DST_PORT_QUERY_REQ_TUNNEL_TYPE_CUSTOM_GRE   0xdUL
8055c0c050c5SMichael 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
805784a911dbSMichael Chan 	u8	unused_0[7];
805884a911dbSMichael Chan };
805984a911dbSMichael Chan 
806084a911dbSMichael Chan /* hwrm_tunnel_dst_port_query_output (size:128b/16B) */
806184a911dbSMichael Chan struct hwrm_tunnel_dst_port_query_output {
806284a911dbSMichael Chan 	__le16	error_code;
806384a911dbSMichael Chan 	__le16	req_type;
806484a911dbSMichael Chan 	__le16	seq_id;
806584a911dbSMichael Chan 	__le16	resp_len;
806684a911dbSMichael Chan 	__le16	tunnel_dst_port_id;
806784a911dbSMichael 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
8071c0c050c5SMichael Chan 	#define TUNNEL_DST_PORT_QUERY_RESP_UPAR_IN_USE_UPAR2     0x4UL
8072c0c050c5SMichael Chan 	#define TUNNEL_DST_PORT_QUERY_RESP_UPAR_IN_USE_UPAR3     0x8UL
8073c0c050c5SMichael Chan 	#define TUNNEL_DST_PORT_QUERY_RESP_UPAR_IN_USE_UPAR4     0x10UL
8074894aa69aSMichael Chan 	#define TUNNEL_DST_PORT_QUERY_RESP_UPAR_IN_USE_UPAR5     0x20UL
8075c0c050c5SMichael Chan 	#define TUNNEL_DST_PORT_QUERY_RESP_UPAR_IN_USE_UPAR6     0x40UL
8076c0c050c5SMichael Chan 	#define TUNNEL_DST_PORT_QUERY_RESP_UPAR_IN_USE_UPAR7     0x80UL
8077c0c050c5SMichael Chan 	u8	unused_0[2];
8078c0c050c5SMichael Chan 	u8	valid;
8079c0c050c5SMichael Chan };
8080c0c050c5SMichael Chan 
8081c0c050c5SMichael Chan /* hwrm_tunnel_dst_port_alloc_input (size:192b/24B) */
8082441cabbbSMichael Chan struct hwrm_tunnel_dst_port_alloc_input {
8083441cabbbSMichael Chan 	__le16	req_type;
808457922b0aSMichael Chan 	__le16	cmpl_ring;
80856fc92c33SMichael Chan 	__le16	seq_id;
808631d357c0SMichael Chan 	__le16	target_id;
80873322479eSMichael Chan 	__le64	resp_addr;
808884a911dbSMichael Chan 	u8	tunnel_type;
808984a911dbSMichael Chan 	#define TUNNEL_DST_PORT_ALLOC_REQ_TUNNEL_TYPE_VXLAN        0x1UL
809084a911dbSMichael Chan 	#define TUNNEL_DST_PORT_ALLOC_REQ_TUNNEL_TYPE_GENEVE       0x5UL
8091c0c050c5SMichael Chan 	#define TUNNEL_DST_PORT_ALLOC_REQ_TUNNEL_TYPE_VXLAN_V4     0x9UL
8092c0c050c5SMichael Chan 	#define TUNNEL_DST_PORT_ALLOC_REQ_TUNNEL_TYPE_IPGRE_V1     0xaUL
8093894aa69aSMichael Chan 	#define TUNNEL_DST_PORT_ALLOC_REQ_TUNNEL_TYPE_L2_ETYPE     0xbUL
8094c0c050c5SMichael Chan 	#define TUNNEL_DST_PORT_ALLOC_REQ_TUNNEL_TYPE_VXLAN_GPE_V6 0xcUL
8095c0c050c5SMichael Chan 	#define TUNNEL_DST_PORT_ALLOC_REQ_TUNNEL_TYPE_CUSTOM_GRE   0xdUL
8096894aa69aSMichael Chan 	#define TUNNEL_DST_PORT_ALLOC_REQ_TUNNEL_TYPE_ECPRI        0xeUL
8097c0c050c5SMichael 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;
8100c0c050c5SMichael Chan 	u8	unused_1[4];
8101c0c050c5SMichael Chan };
810284a911dbSMichael Chan 
810384a911dbSMichael Chan /* hwrm_tunnel_dst_port_alloc_output (size:128b/16B) */
810484a911dbSMichael Chan struct hwrm_tunnel_dst_port_alloc_output {
810584a911dbSMichael Chan 	__le16	error_code;
810684a911dbSMichael Chan 	__le16	req_type;
810784a911dbSMichael Chan 	__le16	seq_id;
8108c0c050c5SMichael Chan 	__le16	resp_len;
8109c0c050c5SMichael Chan 	__le16	tunnel_dst_port_id;
8110c0c050c5SMichael Chan 	u8	error_info;
8111894aa69aSMichael Chan 	#define TUNNEL_DST_PORT_ALLOC_RESP_ERROR_INFO_SUCCESS         0x0UL
8112894aa69aSMichael Chan 	#define TUNNEL_DST_PORT_ALLOC_RESP_ERROR_INFO_ERR_ALLOCATED   0x1UL
8113894aa69aSMichael Chan 	#define TUNNEL_DST_PORT_ALLOC_RESP_ERROR_INFO_ERR_NO_RESOURCE 0x2UL
8114894aa69aSMichael Chan 	#define TUNNEL_DST_PORT_ALLOC_RESP_ERROR_INFO_LAST           TUNNEL_DST_PORT_ALLOC_RESP_ERROR_INFO_ERR_NO_RESOURCE
8115894aa69aSMichael Chan 	u8	upar_in_use;
8116894aa69aSMichael Chan 	#define TUNNEL_DST_PORT_ALLOC_RESP_UPAR_IN_USE_UPAR0     0x1UL
8117bfc6e5fbSMichael Chan 	#define TUNNEL_DST_PORT_ALLOC_RESP_UPAR_IN_USE_UPAR1     0x2UL
8118894aa69aSMichael Chan 	#define TUNNEL_DST_PORT_ALLOC_RESP_UPAR_IN_USE_UPAR2     0x4UL
8119894aa69aSMichael Chan 	#define TUNNEL_DST_PORT_ALLOC_RESP_UPAR_IN_USE_UPAR3     0x8UL
8120894aa69aSMichael Chan 	#define TUNNEL_DST_PORT_ALLOC_RESP_UPAR_IN_USE_UPAR4     0x10UL
8121894aa69aSMichael Chan 	#define TUNNEL_DST_PORT_ALLOC_RESP_UPAR_IN_USE_UPAR5     0x20UL
8122894aa69aSMichael Chan 	#define TUNNEL_DST_PORT_ALLOC_RESP_UPAR_IN_USE_UPAR6     0x40UL
8123894aa69aSMichael Chan 	#define TUNNEL_DST_PORT_ALLOC_RESP_UPAR_IN_USE_UPAR7     0x80UL
8124bfc6e5fbSMichael Chan 	u8	unused_0[3];
8125894aa69aSMichael Chan 	u8	valid;
8126894aa69aSMichael Chan };
8127894aa69aSMichael Chan 
8128894aa69aSMichael Chan /* hwrm_tunnel_dst_port_free_input (size:192b/24B) */
8129894aa69aSMichael Chan struct hwrm_tunnel_dst_port_free_input {
8130894aa69aSMichael Chan 	__le16	req_type;
8131894aa69aSMichael Chan 	__le16	cmpl_ring;
8132894aa69aSMichael Chan 	__le16	seq_id;
8133894aa69aSMichael Chan 	__le16	target_id;
8134894aa69aSMichael Chan 	__le64	resp_addr;
81359d6b648cSMichael Chan 	u8	tunnel_type;
81362792b5b9SMichael Chan 	#define TUNNEL_DST_PORT_FREE_REQ_TUNNEL_TYPE_VXLAN        0x1UL
81372792b5b9SMichael Chan 	#define TUNNEL_DST_PORT_FREE_REQ_TUNNEL_TYPE_GENEVE       0x5UL
81382792b5b9SMichael Chan 	#define TUNNEL_DST_PORT_FREE_REQ_TUNNEL_TYPE_VXLAN_V4     0x9UL
81392792b5b9SMichael Chan 	#define TUNNEL_DST_PORT_FREE_REQ_TUNNEL_TYPE_IPGRE_V1     0xaUL
81402792b5b9SMichael Chan 	#define TUNNEL_DST_PORT_FREE_REQ_TUNNEL_TYPE_L2_ETYPE     0xbUL
8141bfc6e5fbSMichael Chan 	#define TUNNEL_DST_PORT_FREE_REQ_TUNNEL_TYPE_VXLAN_GPE_V6 0xcUL
81422792b5b9SMichael Chan 	#define TUNNEL_DST_PORT_FREE_REQ_TUNNEL_TYPE_CUSTOM_GRE   0xdUL
81432792b5b9SMichael Chan 	#define TUNNEL_DST_PORT_FREE_REQ_TUNNEL_TYPE_ECPRI        0xeUL
81442792b5b9SMichael Chan 	#define TUNNEL_DST_PORT_FREE_REQ_TUNNEL_TYPE_LAST        TUNNEL_DST_PORT_FREE_REQ_TUNNEL_TYPE_ECPRI
81452792b5b9SMichael Chan 	u8	unused_0;
81462792b5b9SMichael Chan 	__le16	tunnel_dst_port_id;
81472792b5b9SMichael Chan 	u8	unused_1[4];
8148bfc6e5fbSMichael Chan };
81492792b5b9SMichael Chan 
81502792b5b9SMichael Chan /* hwrm_tunnel_dst_port_free_output (size:128b/16B) */
81512792b5b9SMichael Chan struct hwrm_tunnel_dst_port_free_output {
81522792b5b9SMichael Chan 	__le16	error_code;
81532792b5b9SMichael Chan 	__le16	req_type;
81542792b5b9SMichael Chan 	__le16	seq_id;
81552792b5b9SMichael Chan 	__le16	resp_len;
81562792b5b9SMichael Chan 	u8	error_info;
81572792b5b9SMichael Chan 	#define TUNNEL_DST_PORT_FREE_RESP_ERROR_INFO_SUCCESS           0x0UL
81589d6b648cSMichael Chan 	#define TUNNEL_DST_PORT_FREE_RESP_ERROR_INFO_ERR_NOT_OWNER     0x1UL
81592792b5b9SMichael Chan 	#define TUNNEL_DST_PORT_FREE_RESP_ERROR_INFO_ERR_NOT_ALLOCATED 0x2UL
81602792b5b9SMichael Chan 	#define TUNNEL_DST_PORT_FREE_RESP_ERROR_INFO_LAST             TUNNEL_DST_PORT_FREE_RESP_ERROR_INFO_ERR_NOT_ALLOCATED
8161894aa69aSMichael Chan 	u8	unused_1[6];
8162c0c050c5SMichael Chan 	u8	valid;
8163c0c050c5SMichael Chan };
8164c0c050c5SMichael Chan 
8165c0c050c5SMichael Chan /* ctx_hw_stats (size:1280b/160B) */
8166c0c050c5SMichael Chan struct ctx_hw_stats {
8167c0c050c5SMichael Chan 	__le64	rx_ucast_pkts;
8168c0c050c5SMichael Chan 	__le64	rx_mcast_pkts;
8169c0c050c5SMichael Chan 	__le64	rx_bcast_pkts;
817087c374deSMichael Chan 	__le64	rx_discard_pkts;
817187c374deSMichael Chan 	__le64	rx_error_pkts;
81722792b5b9SMichael Chan 	__le64	rx_ucast_bytes;
81732792b5b9SMichael Chan 	__le64	rx_mcast_bytes;
8174c0c050c5SMichael Chan 	__le64	rx_bcast_bytes;
8175c0c050c5SMichael Chan 	__le64	tx_ucast_pkts;
8176894aa69aSMichael Chan 	__le64	tx_mcast_pkts;
8177c0c050c5SMichael Chan 	__le64	tx_bcast_pkts;
8178c0c050c5SMichael Chan 	__le64	tx_error_pkts;
8179c0c050c5SMichael Chan 	__le64	tx_discard_pkts;
8180c0c050c5SMichael Chan 	__le64	tx_ucast_bytes;
8181c0c050c5SMichael Chan 	__le64	tx_mcast_bytes;
8182c0c050c5SMichael Chan 	__le64	tx_bcast_bytes;
8183894aa69aSMichael Chan 	__le64	tpa_pkts;
8184c0c050c5SMichael Chan 	__le64	tpa_bytes;
8185c0c050c5SMichael Chan 	__le64	tpa_events;
8186c0c050c5SMichael Chan 	__le64	tpa_aborts;
8187894aa69aSMichael Chan };
8188c0c050c5SMichael Chan 
8189c0c050c5SMichael Chan /* ctx_hw_stats_ext (size:1408b/176B) */
8190c0c050c5SMichael Chan struct ctx_hw_stats_ext {
8191c0c050c5SMichael Chan 	__le64	rx_ucast_pkts;
8192c0c050c5SMichael Chan 	__le64	rx_mcast_pkts;
8193c0c050c5SMichael Chan 	__le64	rx_bcast_pkts;
8194c0c050c5SMichael Chan 	__le64	rx_discard_pkts;
8195894aa69aSMichael Chan 	__le64	rx_error_pkts;
8196c0c050c5SMichael Chan 	__le64	rx_ucast_bytes;
8197c0c050c5SMichael Chan 	__le64	rx_mcast_bytes;
8198894aa69aSMichael Chan 	__le64	rx_bcast_bytes;
8199c0c050c5SMichael Chan 	__le64	tx_ucast_pkts;
8200c0c050c5SMichael Chan 	__le64	tx_mcast_pkts;
8201c0c050c5SMichael Chan 	__le64	tx_bcast_pkts;
8202c0c050c5SMichael Chan 	__le64	tx_error_pkts;
8203c0c050c5SMichael Chan 	__le64	tx_discard_pkts;
8204c0c050c5SMichael Chan 	__le64	tx_ucast_bytes;
8205894aa69aSMichael Chan 	__le64	tx_mcast_bytes;
8206c0c050c5SMichael Chan 	__le64	tx_bcast_bytes;
8207c0c050c5SMichael Chan 	__le64	rx_tpa_eligible_pkt;
8208c0c050c5SMichael Chan 	__le64	rx_tpa_eligible_bytes;
8209894aa69aSMichael Chan 	__le64	rx_tpa_pkt;
8210c0c050c5SMichael Chan 	__le64	rx_tpa_bytes;
8211c0c050c5SMichael Chan 	__le64	rx_tpa_errors;
8212c0c050c5SMichael Chan 	__le64	rx_tpa_events;
8213c0c050c5SMichael Chan };
8214c0c050c5SMichael Chan 
8215c0c050c5SMichael Chan /* hwrm_stat_ctx_alloc_input (size:256b/32B) */
8216c0c050c5SMichael Chan struct hwrm_stat_ctx_alloc_input {
8217bfc6e5fbSMichael Chan 	__le16	req_type;
8218bfc6e5fbSMichael Chan 	__le16	cmpl_ring;
8219bfc6e5fbSMichael Chan 	__le16	seq_id;
8220c0c050c5SMichael Chan 	__le16	target_id;
8221c0c050c5SMichael Chan 	__le64	resp_addr;
8222894aa69aSMichael Chan 	__le64	stats_dma_addr;
8223c0c050c5SMichael Chan 	__le32	update_period_ms;
8224c0c050c5SMichael Chan 	u8	stat_ctx_flags;
8225c0c050c5SMichael Chan 	#define STAT_CTX_ALLOC_REQ_STAT_CTX_FLAGS_ROCE     0x1UL
8226c0c050c5SMichael Chan 	u8	unused_0;
8227c0c050c5SMichael Chan 	__le16	stats_dma_length;
8228c0c050c5SMichael Chan };
8229c0c050c5SMichael Chan 
8230c0c050c5SMichael Chan /* hwrm_stat_ctx_alloc_output (size:128b/16B) */
82319d6b648cSMichael Chan struct hwrm_stat_ctx_alloc_output {
82329d6b648cSMichael 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;
8237c0c050c5SMichael Chan 	u8	unused_0[3];
8238c0c050c5SMichael Chan 	u8	valid;
82399d6b648cSMichael Chan };
82409d6b648cSMichael Chan 
8241c0c050c5SMichael 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;
8248894aa69aSMichael Chan 	__le32	stat_ctx_id;
8249c0c050c5SMichael Chan 	u8	unused_0[4];
8250c0c050c5SMichael Chan };
8251c0c050c5SMichael Chan 
8252bfc6e5fbSMichael Chan /* hwrm_stat_ctx_free_output (size:128b/16B) */
8253bfc6e5fbSMichael Chan struct hwrm_stat_ctx_free_output {
8254bfc6e5fbSMichael Chan 	__le16	error_code;
8255bfc6e5fbSMichael Chan 	__le16	req_type;
8256bfc6e5fbSMichael Chan 	__le16	seq_id;
8257bfc6e5fbSMichael Chan 	__le16	resp_len;
8258bfc6e5fbSMichael Chan 	__le32	stat_ctx_id;
8259bfc6e5fbSMichael Chan 	u8	unused_0[3];
8260bfc6e5fbSMichael Chan 	u8	valid;
8261bfc6e5fbSMichael Chan };
8262bfc6e5fbSMichael Chan 
8263bfc6e5fbSMichael Chan /* hwrm_stat_ctx_query_input (size:192b/24B) */
8264bfc6e5fbSMichael Chan struct hwrm_stat_ctx_query_input {
82659d6b648cSMichael Chan 	__le16	req_type;
8266bfc6e5fbSMichael Chan 	__le16	cmpl_ring;
8267bfc6e5fbSMichael Chan 	__le16	seq_id;
8268bfc6e5fbSMichael Chan 	__le16	target_id;
8269bfc6e5fbSMichael Chan 	__le64	resp_addr;
8270bfc6e5fbSMichael 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];
8274bfc6e5fbSMichael Chan };
8275bfc6e5fbSMichael Chan 
8276bfc6e5fbSMichael Chan /* hwrm_stat_ctx_query_output (size:1408b/176B) */
8277bfc6e5fbSMichael Chan struct hwrm_stat_ctx_query_output {
8278bfc6e5fbSMichael Chan 	__le16	error_code;
8279bfc6e5fbSMichael Chan 	__le16	req_type;
8280bfc6e5fbSMichael Chan 	__le16	seq_id;
8281bfc6e5fbSMichael Chan 	__le16	resp_len;
8282bfc6e5fbSMichael Chan 	__le64	tx_ucast_pkts;
8283bfc6e5fbSMichael Chan 	__le64	tx_mcast_pkts;
8284bfc6e5fbSMichael Chan 	__le64	tx_bcast_pkts;
8285bfc6e5fbSMichael Chan 	__le64	tx_discard_pkts;
8286bfc6e5fbSMichael Chan 	__le64	tx_error_pkts;
8287bfc6e5fbSMichael Chan 	__le64	tx_ucast_bytes;
8288bfc6e5fbSMichael Chan 	__le64	tx_mcast_bytes;
8289bfc6e5fbSMichael Chan 	__le64	tx_bcast_bytes;
8290bfc6e5fbSMichael Chan 	__le64	rx_ucast_pkts;
8291bfc6e5fbSMichael Chan 	__le64	rx_mcast_pkts;
82929d6b648cSMichael Chan 	__le64	rx_bcast_pkts;
8293bfc6e5fbSMichael Chan 	__le64	rx_discard_pkts;
8294bfc6e5fbSMichael Chan 	__le64	rx_error_pkts;
8295bfc6e5fbSMichael Chan 	__le64	rx_ucast_bytes;
8296bfc6e5fbSMichael Chan 	__le64	rx_mcast_bytes;
8297894aa69aSMichael 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;
8302c0c050c5SMichael Chan 	u8	unused_0[7];
8303c0c050c5SMichael Chan 	u8	valid;
8304c0c050c5SMichael Chan };
8305894aa69aSMichael Chan 
8306c0c050c5SMichael Chan /* hwrm_stat_ext_ctx_query_input (size:192b/24B) */
8307c0c050c5SMichael Chan struct hwrm_stat_ext_ctx_query_input {
8308894aa69aSMichael Chan 	__le16	req_type;
8309c0c050c5SMichael Chan 	__le16	cmpl_ring;
8310c0c050c5SMichael Chan 	__le16	seq_id;
8311c0c050c5SMichael Chan 	__le16	target_id;
8312c0c050c5SMichael Chan 	__le64	resp_addr;
8313c0c050c5SMichael Chan 	__le32	stat_ctx_id;
831411f15ed3SMichael Chan 	u8	flags;
831511f15ed3SMichael Chan 	#define STAT_EXT_CTX_QUERY_REQ_FLAGS_COUNTER_MASK     0x1UL
831611f15ed3SMichael Chan 	u8	unused_0[3];
831711f15ed3SMichael Chan };
8318d4f52de0SMichael Chan 
8319d4f52de0SMichael Chan /* hwrm_stat_ext_ctx_query_output (size:1536b/192B) */
8320d4f52de0SMichael Chan struct hwrm_stat_ext_ctx_query_output {
8321d4f52de0SMichael Chan 	__le16	error_code;
8322d4f52de0SMichael Chan 	__le16	req_type;
8323d4f52de0SMichael Chan 	__le16	seq_id;
8324d4f52de0SMichael Chan 	__le16	resp_len;
8325d4f52de0SMichael Chan 	__le64	rx_ucast_pkts;
8326d4f52de0SMichael Chan 	__le64	rx_mcast_pkts;
8327d4f52de0SMichael Chan 	__le64	rx_bcast_pkts;
8328d4f52de0SMichael Chan 	__le64	rx_discard_pkts;
8329d4f52de0SMichael Chan 	__le64	rx_error_pkts;
8330d4f52de0SMichael Chan 	__le64	rx_ucast_bytes;
8331d4f52de0SMichael Chan 	__le64	rx_mcast_bytes;
8332d4f52de0SMichael Chan 	__le64	rx_bcast_bytes;
8333d4f52de0SMichael Chan 	__le64	tx_ucast_pkts;
8334d4f52de0SMichael Chan 	__le64	tx_mcast_pkts;
8335d4f52de0SMichael Chan 	__le64	tx_bcast_pkts;
8336d4f52de0SMichael Chan 	__le64	tx_error_pkts;
8337d4f52de0SMichael Chan 	__le64	tx_discard_pkts;
8338d4f52de0SMichael Chan 	__le64	tx_ucast_bytes;
8339d4f52de0SMichael Chan 	__le64	tx_mcast_bytes;
8340d4f52de0SMichael Chan 	__le64	tx_bcast_bytes;
8341d4f52de0SMichael Chan 	__le64	rx_tpa_eligible_pkt;
8342d4f52de0SMichael Chan 	__le64	rx_tpa_eligible_bytes;
8343d4f52de0SMichael Chan 	__le64	rx_tpa_pkt;
8344d4f52de0SMichael Chan 	__le64	rx_tpa_bytes;
8345d4f52de0SMichael Chan 	__le64	rx_tpa_errors;
8346d4f52de0SMichael Chan 	__le64	rx_tpa_events;
8347d4f52de0SMichael Chan 	u8	unused_0[7];
8348d4f52de0SMichael Chan 	u8	valid;
8349d4f52de0SMichael Chan };
8350d4f52de0SMichael Chan 
8351d4f52de0SMichael Chan /* hwrm_stat_ctx_clr_stats_input (size:192b/24B) */
8352d4f52de0SMichael Chan struct hwrm_stat_ctx_clr_stats_input {
8353d4f52de0SMichael Chan 	__le16	req_type;
8354d4f52de0SMichael Chan 	__le16	cmpl_ring;
8355d4f52de0SMichael Chan 	__le16	seq_id;
8356ad04cc05SMichael Chan 	__le16	target_id;
8357ad04cc05SMichael Chan 	__le64	resp_addr;
8358ad04cc05SMichael Chan 	__le32	stat_ctx_id;
8359ad04cc05SMichael Chan 	u8	unused_0[4];
8360ad04cc05SMichael Chan };
8361ad04cc05SMichael Chan 
8362ad04cc05SMichael Chan /* hwrm_stat_ctx_clr_stats_output (size:128b/16B) */
8363ad04cc05SMichael Chan struct hwrm_stat_ctx_clr_stats_output {
8364ad04cc05SMichael Chan 	__le16	error_code;
8365ad04cc05SMichael Chan 	__le16	req_type;
8366ad04cc05SMichael Chan 	__le16	seq_id;
8367ad04cc05SMichael Chan 	__le16	resp_len;
8368ad04cc05SMichael Chan 	u8	unused_0[7];
8369ad04cc05SMichael Chan 	u8	valid;
8370ad04cc05SMichael Chan };
8371ad04cc05SMichael Chan 
8372ad04cc05SMichael Chan /* hwrm_pcie_qstats_input (size:256b/32B) */
8373ad04cc05SMichael Chan struct hwrm_pcie_qstats_input {
8374ad04cc05SMichael Chan 	__le16	req_type;
8375ad04cc05SMichael Chan 	__le16	cmpl_ring;
8376ad04cc05SMichael Chan 	__le16	seq_id;
8377ad04cc05SMichael Chan 	__le16	target_id;
8378ad04cc05SMichael Chan 	__le64	resp_addr;
8379ad04cc05SMichael Chan 	__le16	pcie_stat_size;
8380ad04cc05SMichael Chan 	u8	unused_0[6];
8381ad04cc05SMichael Chan 	__le64	pcie_stat_host_addr;
8382ad04cc05SMichael Chan };
8383ad04cc05SMichael Chan 
8384ad04cc05SMichael Chan /* hwrm_pcie_qstats_output (size:128b/16B) */
8385ad04cc05SMichael Chan struct hwrm_pcie_qstats_output {
8386ad04cc05SMichael Chan 	__le16	error_code;
8387ad04cc05SMichael Chan 	__le16	req_type;
8388ad04cc05SMichael Chan 	__le16	seq_id;
8389ad04cc05SMichael Chan 	__le16	resp_len;
8390ad04cc05SMichael Chan 	__le16	pcie_stat_size;
8391ad04cc05SMichael Chan 	u8	unused_0[5];
8392ad04cc05SMichael Chan 	u8	valid;
8393ad04cc05SMichael Chan };
8394ad04cc05SMichael Chan 
8395ad04cc05SMichael Chan /* pcie_ctx_hw_stats (size:768b/96B) */
8396ad04cc05SMichael Chan struct pcie_ctx_hw_stats {
8397ad04cc05SMichael Chan 	__le64	pcie_pl_signal_integrity;
8398ad04cc05SMichael Chan 	__le64	pcie_dl_signal_integrity;
8399ad04cc05SMichael Chan 	__le64	pcie_tl_signal_integrity;
8400ad04cc05SMichael Chan 	__le64	pcie_link_integrity;
8401ad04cc05SMichael Chan 	__le64	pcie_tx_traffic_rate;
8402ad04cc05SMichael Chan 	__le64	pcie_rx_traffic_rate;
8403ad04cc05SMichael Chan 	__le64	pcie_tx_dllp_statistics;
8404894aa69aSMichael Chan 	__le64	pcie_rx_dllp_statistics;
8405894aa69aSMichael Chan 	__le64	pcie_equalization_time;
8406894aa69aSMichael Chan 	__le32	pcie_ltssm_histogram[4];
8407894aa69aSMichael Chan 	__le64	pcie_recovery_histogram;
8408894aa69aSMichael Chan };
8409894aa69aSMichael Chan 
8410894aa69aSMichael Chan /* hwrm_stat_generic_qstats_input (size:256b/32B) */
8411894aa69aSMichael Chan struct hwrm_stat_generic_qstats_input {
8412894aa69aSMichael Chan 	__le16	req_type;
8413894aa69aSMichael Chan 	__le16	cmpl_ring;
8414894aa69aSMichael Chan 	__le16	seq_id;
8415894aa69aSMichael Chan 	__le16	target_id;
8416894aa69aSMichael Chan 	__le64	resp_addr;
8417894aa69aSMichael Chan 	__le16	generic_stat_size;
8418894aa69aSMichael Chan 	u8	flags;
8419d4f52de0SMichael Chan 	#define STAT_GENERIC_QSTATS_REQ_FLAGS_COUNTER_MASK     0x1UL
842072e0c9f9SMichael Chan 	u8	unused_0[5];
842172e0c9f9SMichael Chan 	__le64	generic_stat_host_addr;
8422894aa69aSMichael Chan };
8423894aa69aSMichael Chan 
8424894aa69aSMichael Chan /* hwrm_stat_generic_qstats_output (size:128b/16B) */
8425894aa69aSMichael Chan struct hwrm_stat_generic_qstats_output {
842631d357c0SMichael Chan 	__le16	error_code;
842731d357c0SMichael Chan 	__le16	req_type;
8428894aa69aSMichael Chan 	__le16	seq_id;
84293322479eSMichael Chan 	__le16	resp_len;
84303322479eSMichael Chan 	__le16	generic_stat_size;
8431fbfee257SMichael Chan 	u8	unused_0[5];
84323322479eSMichael Chan 	u8	valid;
843357922b0aSMichael Chan };
843457922b0aSMichael Chan 
8435894aa69aSMichael Chan /* generic_sw_hw_stats (size:1216b/152B) */
8436894aa69aSMichael Chan struct generic_sw_hw_stats {
8437894aa69aSMichael Chan 	__le64	pcie_statistics_tx_tlp;
8438894aa69aSMichael Chan 	__le64	pcie_statistics_rx_tlp;
8439894aa69aSMichael Chan 	__le64	pcie_credit_fc_hdr_posted;
8440894aa69aSMichael Chan 	__le64	pcie_credit_fc_hdr_nonposted;
8441894aa69aSMichael Chan 	__le64	pcie_credit_fc_hdr_cmpl;
8442894aa69aSMichael Chan 	__le64	pcie_credit_fc_data_posted;
8443894aa69aSMichael Chan 	__le64	pcie_credit_fc_data_nonposted;
8444894aa69aSMichael Chan 	__le64	pcie_credit_fc_data_cmpl;
844531d357c0SMichael Chan 	__le64	pcie_credit_fc_tgt_nonposted;
844631d357c0SMichael Chan 	__le64	pcie_credit_fc_tgt_data_posted;
8447894aa69aSMichael Chan 	__le64	pcie_credit_fc_tgt_hdr_posted;
8448894aa69aSMichael Chan 	__le64	pcie_credit_fc_cmpl_hdr_posted;
844957922b0aSMichael Chan 	__le64	pcie_credit_fc_cmpl_data_posted;
845057922b0aSMichael Chan 	__le64	pcie_cmpl_longest;
8451894aa69aSMichael Chan 	__le64	pcie_cmpl_shortest;
8452894aa69aSMichael Chan 	__le64	cache_miss_count_cfcq;
8453894aa69aSMichael Chan 	__le64	cache_miss_count_cfcs;
8454894aa69aSMichael Chan 	__le64	cache_miss_count_cfcc;
8455894aa69aSMichael Chan 	__le64	cache_miss_count_cfcm;
8456894aa69aSMichael Chan };
8457894aa69aSMichael 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
846857922b0aSMichael Chan 	#define FW_RESET_REQ_EMBEDDED_PROC_TYPE_NETCTRL               0x2UL
846957922b0aSMichael 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
8473894aa69aSMichael Chan 	#define FW_RESET_REQ_EMBEDDED_PROC_TYPE_HOST_RESOURCE_REINIT  0x7UL
8474894aa69aSMichael Chan 	#define FW_RESET_REQ_EMBEDDED_PROC_TYPE_IMPACTLESS_ACTIVATION 0x8UL
8475894aa69aSMichael 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
84804a50ddc2SMichael Chan 	#define FW_RESET_REQ_SELFRST_STATUS_SELFRSTIMMEDIATE 0x3UL
84814a50ddc2SMichael Chan 	#define FW_RESET_REQ_SELFRST_STATUS_LAST            FW_RESET_REQ_SELFRST_STATUS_SELFRSTIMMEDIATE
848231f67c2eSMichael Chan 	u8	host_idx;
848331f67c2eSMichael Chan 	u8	flags;
848431f67c2eSMichael Chan 	#define FW_RESET_REQ_FLAGS_RESET_GRACEFUL     0x1UL
848531f67c2eSMichael Chan 	#define FW_RESET_REQ_FLAGS_FW_ACTIVATION      0x2UL
848631f67c2eSMichael Chan 	u8	unused_0[4];
848731f67c2eSMichael Chan };
848831f67c2eSMichael Chan 
8489894aa69aSMichael Chan /* hwrm_fw_reset_output (size:128b/16B) */
849087c374deSMichael Chan struct hwrm_fw_reset_output {
849187c374deSMichael 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
8499894aa69aSMichael Chan 	#define FW_RESET_RESP_SELFRST_STATUS_SELFRSTIMMEDIATE 0x3UL
8500894aa69aSMichael Chan 	#define FW_RESET_RESP_SELFRST_STATUS_LAST            FW_RESET_RESP_SELFRST_STATUS_SELFRSTIMMEDIATE
8501894aa69aSMichael Chan 	u8	unused_0[6];
8502894aa69aSMichael Chan 	u8	valid;
8503894aa69aSMichael Chan };
8504894aa69aSMichael 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;
85104a50ddc2SMichael Chan 	__le16	target_id;
85114a50ddc2SMichael 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];
8522894aa69aSMichael Chan };
8523894aa69aSMichael Chan 
8524894aa69aSMichael Chan /* hwrm_fw_qstatus_output (size:128b/16B) */
8525894aa69aSMichael Chan struct hwrm_fw_qstatus_output {
8526894aa69aSMichael Chan 	__le16	error_code;
852787c374deSMichael Chan 	__le16	req_type;
852887c374deSMichael Chan 	__le16	seq_id;
852987c374deSMichael Chan 	__le16	resp_len;
8530f183886cSMichael Chan 	u8	selfrst_status;
8531f183886cSMichael Chan 	#define FW_QSTATUS_RESP_SELFRST_STATUS_SELFRSTNONE    0x0UL
8532f183886cSMichael Chan 	#define FW_QSTATUS_RESP_SELFRST_STATUS_SELFRSTASAP    0x1UL
8533f183886cSMichael Chan 	#define FW_QSTATUS_RESP_SELFRST_STATUS_SELFRSTPCIERST 0x2UL
8534f183886cSMichael Chan 	#define FW_QSTATUS_RESP_SELFRST_STATUS_SELFRSTPOWER   0x3UL
8535f183886cSMichael Chan 	#define FW_QSTATUS_RESP_SELFRST_STATUS_LAST          FW_QSTATUS_RESP_SELFRST_STATUS_SELFRSTPOWER
85363322479eSMichael Chan 	u8	nvm_option_action_status;
85378eb992e8SMichael Chan 	#define FW_QSTATUS_RESP_NVM_OPTION_ACTION_STATUS_NVMOPT_ACTION_NONE     0x0UL
8538f183886cSMichael Chan 	#define FW_QSTATUS_RESP_NVM_OPTION_ACTION_STATUS_NVMOPT_ACTION_HOTRESET 0x1UL
85396a17eb27SMichael Chan 	#define FW_QSTATUS_RESP_NVM_OPTION_ACTION_STATUS_NVMOPT_ACTION_WARMBOOT 0x2UL
854016db6323SMichael Chan 	#define FW_QSTATUS_RESP_NVM_OPTION_ACTION_STATUS_NVMOPT_ACTION_COLDBOOT 0x3UL
854116db6323SMichael Chan 	#define FW_QSTATUS_RESP_NVM_OPTION_ACTION_STATUS_LAST                  FW_QSTATUS_RESP_NVM_OPTION_ACTION_STATUS_NVMOPT_ACTION_COLDBOOT
854287c374deSMichael Chan 	u8	unused_0[5];
854387c374deSMichael Chan 	u8	valid;
854487c374deSMichael Chan };
854587c374deSMichael Chan 
854687c374deSMichael Chan /* hwrm_fw_set_time_input (size:256b/32B) */
854787c374deSMichael Chan struct hwrm_fw_set_time_input {
8548894aa69aSMichael Chan 	__le16	req_type;
854987c374deSMichael Chan 	__le16	cmpl_ring;
855087c374deSMichael Chan 	__le16	seq_id;
8551894aa69aSMichael Chan 	__le16	target_id;
8552f183886cSMichael Chan 	__le64	resp_addr;
8553f183886cSMichael Chan 	__le16	year;
855487c374deSMichael Chan 	#define FW_SET_TIME_REQ_YEAR_UNKNOWN 0x0UL
8555f183886cSMichael Chan 	#define FW_SET_TIME_REQ_YEAR_LAST   FW_SET_TIME_REQ_YEAR_UNKNOWN
8556f183886cSMichael Chan 	u8	month;
8557f183886cSMichael Chan 	u8	day;
8558f183886cSMichael Chan 	u8	hour;
8559894aa69aSMichael Chan 	u8	minute;
856087c374deSMichael Chan 	u8	second;
856187c374deSMichael Chan 	u8	unused_0;
856287c374deSMichael Chan 	__le16	millisecond;
856387c374deSMichael Chan 	__le16	zone;
856487c374deSMichael Chan 	#define FW_SET_TIME_REQ_ZONE_UTC     0
8565894aa69aSMichael 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) */
8581894aa69aSMichael Chan struct hwrm_struct_hdr {
8582894aa69aSMichael Chan 	__le16	struct_id;
8583894aa69aSMichael Chan 	#define STRUCT_HDR_STRUCT_ID_LLDP_CFG           0x41bUL
8584894aa69aSMichael Chan 	#define STRUCT_HDR_STRUCT_ID_DCBX_ETS           0x41dUL
8585894aa69aSMichael Chan 	#define STRUCT_HDR_STRUCT_ID_DCBX_PFC           0x41fUL
8586894aa69aSMichael Chan 	#define STRUCT_HDR_STRUCT_ID_DCBX_APP           0x421UL
8587894aa69aSMichael Chan 	#define STRUCT_HDR_STRUCT_ID_DCBX_FEATURE_STATE 0x422UL
8588894aa69aSMichael Chan 	#define STRUCT_HDR_STRUCT_ID_LLDP_GENERIC       0x424UL
8589894aa69aSMichael Chan 	#define STRUCT_HDR_STRUCT_ID_LLDP_DEVICE        0x426UL
8590894aa69aSMichael Chan 	#define STRUCT_HDR_STRUCT_ID_POWER_BKUP         0x427UL
8591894aa69aSMichael Chan 	#define STRUCT_HDR_STRUCT_ID_AFM_OPAQUE         0x1UL
8592894aa69aSMichael Chan 	#define STRUCT_HDR_STRUCT_ID_PORT_DESCRIPTION   0xaUL
8593894aa69aSMichael Chan 	#define STRUCT_HDR_STRUCT_ID_RSS_V2             0x64UL
8594894aa69aSMichael Chan 	#define STRUCT_HDR_STRUCT_ID_MSIX_PER_VF        0xc8UL
8595894aa69aSMichael Chan 	#define STRUCT_HDR_STRUCT_ID_LAST              STRUCT_HDR_STRUCT_ID_MSIX_PER_VF
8596894aa69aSMichael Chan 	__le16	len;
8597894aa69aSMichael Chan 	u8	version;
8598894aa69aSMichael Chan 	u8	count;
8599894aa69aSMichael Chan 	__le16	subtype;
8600894aa69aSMichael Chan 	__le16	next_offset;
8601894aa69aSMichael Chan 	#define STRUCT_HDR_NEXT_OFFSET_LAST 0x0UL
8602894aa69aSMichael Chan 	u8	unused_0[6];
8603894aa69aSMichael Chan };
8604894aa69aSMichael Chan 
8605894aa69aSMichael Chan /* hwrm_struct_data_dcbx_app (size:64b/8B) */
8606894aa69aSMichael Chan struct hwrm_struct_data_dcbx_app {
8607894aa69aSMichael Chan 	__be16	protocol_id;
8608894aa69aSMichael Chan 	u8	protocol_selector;
8609894aa69aSMichael Chan 	#define STRUCT_DATA_DCBX_APP_PROTOCOL_SELECTOR_ETHER_TYPE   0x1UL
8610894aa69aSMichael Chan 	#define STRUCT_DATA_DCBX_APP_PROTOCOL_SELECTOR_TCP_PORT     0x2UL
8611894aa69aSMichael Chan 	#define STRUCT_DATA_DCBX_APP_PROTOCOL_SELECTOR_UDP_PORT     0x3UL
8612894aa69aSMichael 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
8614894aa69aSMichael Chan 	u8	priority;
8615894aa69aSMichael Chan 	u8	valid;
8616894aa69aSMichael Chan 	u8	unused_0[3];
8617894aa69aSMichael Chan };
8618894aa69aSMichael 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 {
864421e70778SMichael Chan 	u8	code;
864521e70778SMichael Chan 	#define FW_SET_STRUCTURED_DATA_CMD_ERR_CODE_UNKNOWN     0x0UL
864621e70778SMichael Chan 	#define FW_SET_STRUCTURED_DATA_CMD_ERR_CODE_BAD_HDR_CNT 0x1UL
864721e70778SMichael Chan 	#define FW_SET_STRUCTURED_DATA_CMD_ERR_CODE_BAD_FMT     0x2UL
864821e70778SMichael Chan 	#define FW_SET_STRUCTURED_DATA_CMD_ERR_CODE_BAD_ID      0x3UL
864921e70778SMichael Chan 	#define FW_SET_STRUCTURED_DATA_CMD_ERR_CODE_LAST       FW_SET_STRUCTURED_DATA_CMD_ERR_CODE_BAD_ID
865021e70778SMichael Chan 	u8	unused_0[7];
865121e70778SMichael Chan };
865221e70778SMichael Chan 
865321e70778SMichael Chan /* hwrm_fw_get_structured_data_input (size:256b/32B) */
865421e70778SMichael Chan struct hwrm_fw_get_structured_data_input {
865521e70778SMichael Chan 	__le16	req_type;
865621e70778SMichael Chan 	__le16	cmpl_ring;
865721e70778SMichael Chan 	__le16	seq_id;
865821e70778SMichael Chan 	__le16	target_id;
865921e70778SMichael Chan 	__le64	resp_addr;
866021e70778SMichael Chan 	__le64	dest_data_addr;
866121e70778SMichael Chan 	__le16	data_len;
866221e70778SMichael Chan 	__le16	structure_id;
866321e70778SMichael Chan 	__le16	subtype;
866421e70778SMichael Chan 	#define FW_GET_STRUCTURED_DATA_REQ_SUBTYPE_UNUSED                  0x0UL
866521e70778SMichael Chan 	#define FW_GET_STRUCTURED_DATA_REQ_SUBTYPE_ALL                     0xffffUL
866621e70778SMichael Chan 	#define FW_GET_STRUCTURED_DATA_REQ_SUBTYPE_NEAR_BRIDGE_ADMIN       0x100UL
866721e70778SMichael Chan 	#define FW_GET_STRUCTURED_DATA_REQ_SUBTYPE_NEAR_BRIDGE_PEER        0x101UL
866821e70778SMichael Chan 	#define FW_GET_STRUCTURED_DATA_REQ_SUBTYPE_NEAR_BRIDGE_OPERATIONAL 0x102UL
866921e70778SMichael Chan 	#define FW_GET_STRUCTURED_DATA_REQ_SUBTYPE_NON_TPMR_ADMIN          0x200UL
867021e70778SMichael Chan 	#define FW_GET_STRUCTURED_DATA_REQ_SUBTYPE_NON_TPMR_PEER           0x201UL
867121e70778SMichael Chan 	#define FW_GET_STRUCTURED_DATA_REQ_SUBTYPE_NON_TPMR_OPERATIONAL    0x202UL
867221e70778SMichael Chan 	#define FW_GET_STRUCTURED_DATA_REQ_SUBTYPE_HOST_OPERATIONAL        0x300UL
867321e70778SMichael Chan 	#define FW_GET_STRUCTURED_DATA_REQ_SUBTYPE_LAST                   FW_GET_STRUCTURED_DATA_REQ_SUBTYPE_HOST_OPERATIONAL
867421e70778SMichael Chan 	u8	count;
867521e70778SMichael Chan 	u8	unused_0;
867621e70778SMichael Chan };
867721e70778SMichael Chan 
867821e70778SMichael Chan /* hwrm_fw_get_structured_data_output (size:128b/16B) */
867921e70778SMichael Chan struct hwrm_fw_get_structured_data_output {
868021e70778SMichael Chan 	__le16	error_code;
868121e70778SMichael Chan 	__le16	req_type;
868221e70778SMichael Chan 	__le16	seq_id;
868321e70778SMichael Chan 	__le16	resp_len;
868421e70778SMichael Chan 	u8	hdr_cnt;
868521e70778SMichael Chan 	u8	unused_0[6];
868621e70778SMichael Chan 	u8	valid;
868721e70778SMichael Chan };
868821e70778SMichael Chan 
868921e70778SMichael Chan /* hwrm_fw_get_structured_data_cmd_err (size:64b/8B) */
869021e70778SMichael Chan struct hwrm_fw_get_structured_data_cmd_err {
869121e70778SMichael Chan 	u8	code;
869221e70778SMichael Chan 	#define FW_GET_STRUCTURED_DATA_CMD_ERR_CODE_UNKNOWN 0x0UL
869321e70778SMichael Chan 	#define FW_GET_STRUCTURED_DATA_CMD_ERR_CODE_BAD_ID  0x3UL
869421e70778SMichael Chan 	#define FW_GET_STRUCTURED_DATA_CMD_ERR_CODE_LAST   FW_GET_STRUCTURED_DATA_CMD_ERR_CODE_BAD_ID
869521e70778SMichael Chan 	u8	unused_0[7];
869621e70778SMichael Chan };
869721e70778SMichael 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];
8724894aa69aSMichael Chan 	u8	valid;
8725894aa69aSMichael Chan };
8726894aa69aSMichael Chan 
8727894aa69aSMichael Chan /* hwrm_fw_livepatch_input (size:256b/32B) */
8728894aa69aSMichael Chan struct hwrm_fw_livepatch_input {
8729894aa69aSMichael Chan 	__le16	req_type;
8730894aa69aSMichael Chan 	__le16	cmpl_ring;
8731894aa69aSMichael Chan 	__le16	seq_id;
8732894aa69aSMichael Chan 	__le16	target_id;
8733894aa69aSMichael Chan 	__le64	resp_addr;
8734894aa69aSMichael Chan 	u8	opcode;
8735894aa69aSMichael Chan 	#define FW_LIVEPATCH_REQ_OPCODE_ACTIVATE   0x1UL
8736894aa69aSMichael Chan 	#define FW_LIVEPATCH_REQ_OPCODE_DEACTIVATE 0x2UL
8737894aa69aSMichael Chan 	#define FW_LIVEPATCH_REQ_OPCODE_LAST      FW_LIVEPATCH_REQ_OPCODE_DEACTIVATE
8738894aa69aSMichael Chan 	u8	fw_target;
8739894aa69aSMichael Chan 	#define FW_LIVEPATCH_REQ_FW_TARGET_COMMON_FW 0x1UL
8740894aa69aSMichael Chan 	#define FW_LIVEPATCH_REQ_FW_TARGET_SECURE_FW 0x2UL
8741894aa69aSMichael Chan 	#define FW_LIVEPATCH_REQ_FW_TARGET_LAST     FW_LIVEPATCH_REQ_FW_TARGET_SECURE_FW
8742894aa69aSMichael Chan 	u8	loadtype;
8743894aa69aSMichael Chan 	#define FW_LIVEPATCH_REQ_LOADTYPE_NVM_INSTALL   0x1UL
8744894aa69aSMichael Chan 	#define FW_LIVEPATCH_REQ_LOADTYPE_MEMORY_DIRECT 0x2UL
8745894aa69aSMichael Chan 	#define FW_LIVEPATCH_REQ_LOADTYPE_LAST         FW_LIVEPATCH_REQ_LOADTYPE_MEMORY_DIRECT
8746894aa69aSMichael Chan 	u8	flags;
8747894aa69aSMichael Chan 	__le32	patch_len;
8748894aa69aSMichael Chan 	__le64	host_addr;
8749894aa69aSMichael Chan };
8750894aa69aSMichael Chan 
8751894aa69aSMichael Chan /* hwrm_fw_livepatch_output (size:128b/16B) */
8752894aa69aSMichael Chan struct hwrm_fw_livepatch_output {
8753894aa69aSMichael Chan 	__le16	error_code;
8754894aa69aSMichael Chan 	__le16	req_type;
8755894aa69aSMichael Chan 	__le16	seq_id;
8756894aa69aSMichael Chan 	__le16	resp_len;
8757894aa69aSMichael Chan 	u8	unused_0[7];
8758894aa69aSMichael Chan 	u8	valid;
8759894aa69aSMichael Chan };
8760894aa69aSMichael Chan 
8761894aa69aSMichael Chan /* hwrm_fw_livepatch_cmd_err (size:64b/8B) */
8762894aa69aSMichael Chan struct hwrm_fw_livepatch_cmd_err {
8763894aa69aSMichael Chan 	u8	code;
8764894aa69aSMichael Chan 	#define FW_LIVEPATCH_CMD_ERR_CODE_UNKNOWN         0x0UL
8765894aa69aSMichael Chan 	#define FW_LIVEPATCH_CMD_ERR_CODE_INVALID_OPCODE  0x1UL
8766894aa69aSMichael Chan 	#define FW_LIVEPATCH_CMD_ERR_CODE_INVALID_TARGET  0x2UL
8767894aa69aSMichael Chan 	#define FW_LIVEPATCH_CMD_ERR_CODE_NOT_SUPPORTED   0x3UL
8768894aa69aSMichael Chan 	#define FW_LIVEPATCH_CMD_ERR_CODE_NOT_INSTALLED   0x4UL
8769894aa69aSMichael Chan 	#define FW_LIVEPATCH_CMD_ERR_CODE_NOT_PATCHED     0x5UL
8770894aa69aSMichael Chan 	#define FW_LIVEPATCH_CMD_ERR_CODE_AUTH_FAIL       0x6UL
8771894aa69aSMichael Chan 	#define FW_LIVEPATCH_CMD_ERR_CODE_INVALID_HEADER  0x7UL
8772894aa69aSMichael Chan 	#define FW_LIVEPATCH_CMD_ERR_CODE_INVALID_SIZE    0x8UL
8773894aa69aSMichael Chan 	#define FW_LIVEPATCH_CMD_ERR_CODE_ALREADY_PATCHED 0x9UL
8774894aa69aSMichael Chan 	#define FW_LIVEPATCH_CMD_ERR_CODE_LAST           FW_LIVEPATCH_CMD_ERR_CODE_ALREADY_PATCHED
8775894aa69aSMichael Chan 	u8	unused_0[7];
8776894aa69aSMichael Chan };
8777894aa69aSMichael 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;
883272e0c9f9SMichael Chan 	u8	unused_0;
883372e0c9f9SMichael Chan 	u8	unused_1;
883472e0c9f9SMichael Chan 	__le64	encap_resp_addr;
883572e0c9f9SMichael Chan 	__le32	encap_resp[24];
883672e0c9f9SMichael Chan };
883772e0c9f9SMichael Chan 
883872e0c9f9SMichael Chan /* hwrm_fwd_resp_output (size:128b/16B) */
883978eeadb8SMichael Chan struct hwrm_fwd_resp_output {
884078eeadb8SMichael Chan 	__le16	error_code;
884178eeadb8SMichael Chan 	__le16	req_type;
884278eeadb8SMichael 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;
8886894aa69aSMichael Chan 	u8	phy_temp;
8887894aa69aSMichael Chan 	u8	om_temp;
8888894aa69aSMichael Chan 	u8	flags;
8889894aa69aSMichael Chan 	#define TEMP_MONITOR_QUERY_RESP_FLAGS_TEMP_NOT_AVAILABLE            0x1UL
8890894aa69aSMichael Chan 	#define TEMP_MONITOR_QUERY_RESP_FLAGS_PHY_TEMP_NOT_AVAILABLE        0x2UL
8891894aa69aSMichael Chan 	#define TEMP_MONITOR_QUERY_RESP_FLAGS_OM_NOT_PRESENT                0x4UL
8892894aa69aSMichael Chan 	#define TEMP_MONITOR_QUERY_RESP_FLAGS_OM_TEMP_NOT_AVAILABLE         0x8UL
8893894aa69aSMichael Chan 	#define TEMP_MONITOR_QUERY_RESP_FLAGS_EXT_TEMP_FIELDS_AVAILABLE     0x10UL
8894894aa69aSMichael Chan 	u8	temp2;
8895894aa69aSMichael Chan 	u8	phy_temp2;
8896894aa69aSMichael 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 };
8985bfc6e5fbSMichael Chan 
8986bfc6e5fbSMichael Chan /* hwrm_wol_filter_qcfg_output (size:256b/32B) */
8987bfc6e5fbSMichael Chan struct hwrm_wol_filter_qcfg_output {
8988bfc6e5fbSMichael Chan 	__le16	error_code;
8989bfc6e5fbSMichael Chan 	__le16	req_type;
8990bfc6e5fbSMichael Chan 	__le16	seq_id;
8991bfc6e5fbSMichael Chan 	__le16	resp_len;
8992bfc6e5fbSMichael Chan 	__le16	next_handle;
8993bfc6e5fbSMichael Chan 	u8	wol_filter_id;
8994bfc6e5fbSMichael Chan 	u8	wol_type;
8995bfc6e5fbSMichael Chan 	#define WOL_FILTER_QCFG_RESP_WOL_TYPE_MAGICPKT 0x0UL
8996bfc6e5fbSMichael Chan 	#define WOL_FILTER_QCFG_RESP_WOL_TYPE_BMP      0x1UL
8997bfc6e5fbSMichael Chan 	#define WOL_FILTER_QCFG_RESP_WOL_TYPE_INVALID  0xffUL
8998bfc6e5fbSMichael Chan 	#define WOL_FILTER_QCFG_RESP_WOL_TYPE_LAST    WOL_FILTER_QCFG_RESP_WOL_TYPE_INVALID
8999bfc6e5fbSMichael Chan 	__le32	unused_0;
9000bfc6e5fbSMichael Chan 	u8	mac_address[6];
9001bfc6e5fbSMichael Chan 	__le16	pattern_offset;
9002bfc6e5fbSMichael Chan 	__le16	pattern_size;
9003bfc6e5fbSMichael Chan 	__le16	pattern_mask_size;
9004bfc6e5fbSMichael Chan 	u8	unused_1[3];
9005bfc6e5fbSMichael Chan 	u8	valid;
9006bfc6e5fbSMichael Chan };
9007bfc6e5fbSMichael Chan 
90089d6b648cSMichael Chan /* hwrm_wol_reason_qcfg_input (size:320b/40B) */
90099d6b648cSMichael Chan struct hwrm_wol_reason_qcfg_input {
90109d6b648cSMichael Chan 	__le16	req_type;
90119d6b648cSMichael Chan 	__le16	cmpl_ring;
90129d6b648cSMichael Chan 	__le16	seq_id;
90139d6b648cSMichael Chan 	__le16	target_id;
90149d6b648cSMichael Chan 	__le64	resp_addr;
90159d6b648cSMichael Chan 	__le16	port_id;
90169d6b648cSMichael Chan 	u8	unused_0[6];
90179d6b648cSMichael Chan 	__le64	wol_pkt_buf_addr;
90189d6b648cSMichael Chan 	__le16	wol_pkt_buf_size;
90199d6b648cSMichael Chan 	u8	unused_1[6];
90209d6b648cSMichael Chan };
90219d6b648cSMichael Chan 
90229d6b648cSMichael Chan /* hwrm_wol_reason_qcfg_output (size:128b/16B) */
90239d6b648cSMichael Chan struct hwrm_wol_reason_qcfg_output {
90249d6b648cSMichael Chan 	__le16	error_code;
90259d6b648cSMichael Chan 	__le16	req_type;
90269d6b648cSMichael Chan 	__le16	seq_id;
90279d6b648cSMichael Chan 	__le16	resp_len;
90289d6b648cSMichael Chan 	u8	wol_filter_id;
90299d6b648cSMichael Chan 	u8	wol_reason;
90309d6b648cSMichael Chan 	#define WOL_REASON_QCFG_RESP_WOL_REASON_MAGICPKT 0x0UL
90319d6b648cSMichael Chan 	#define WOL_REASON_QCFG_RESP_WOL_REASON_BMP      0x1UL
90329d6b648cSMichael Chan 	#define WOL_REASON_QCFG_RESP_WOL_REASON_INVALID  0xffUL
903378eeadb8SMichael Chan 	#define WOL_REASON_QCFG_RESP_WOL_REASON_LAST    WOL_REASON_QCFG_RESP_WOL_REASON_INVALID
90349d6b648cSMichael Chan 	u8	wol_pkt_len;
90359d6b648cSMichael Chan 	u8	unused_0[4];
90369d6b648cSMichael Chan 	u8	valid;
90379d6b648cSMichael Chan };
90389d6b648cSMichael Chan 
90399d6b648cSMichael Chan /* hwrm_dbg_read_direct_input (size:256b/32B) */
90409d6b648cSMichael Chan struct hwrm_dbg_read_direct_input {
90419d6b648cSMichael Chan 	__le16	req_type;
90429d6b648cSMichael Chan 	__le16	cmpl_ring;
90439d6b648cSMichael Chan 	__le16	seq_id;
90449d6b648cSMichael Chan 	__le16	target_id;
90459d6b648cSMichael Chan 	__le64	resp_addr;
90469d6b648cSMichael Chan 	__le64	host_dest_addr;
90479d6b648cSMichael Chan 	__le32	read_addr;
90489d6b648cSMichael Chan 	__le32	read_len32;
90499d6b648cSMichael Chan };
90509d6b648cSMichael Chan 
90519d6b648cSMichael Chan /* hwrm_dbg_read_direct_output (size:128b/16B) */
90529d6b648cSMichael Chan struct hwrm_dbg_read_direct_output {
90539d6b648cSMichael Chan 	__le16	error_code;
90549d6b648cSMichael Chan 	__le16	req_type;
90559d6b648cSMichael Chan 	__le16	seq_id;
90569d6b648cSMichael Chan 	__le16	resp_len;
90579d6b648cSMichael Chan 	__le32	crc32;
90589d6b648cSMichael Chan 	u8	unused_0[3];
90599d6b648cSMichael Chan 	u8	valid;
90609d6b648cSMichael Chan };
90619d6b648cSMichael 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;
90802895c153SMichael Chan 	u8	unused_0[2];
90812895c153SMichael Chan 	__le32	coredump_component_disable_caps;
90822895c153SMichael Chan 	#define DBG_QCAPS_RESP_COREDUMP_COMPONENT_DISABLE_CAPS_NVRAM     0x1UL
90832895c153SMichael Chan 	__le32	flags;
90842895c153SMichael Chan 	#define DBG_QCAPS_RESP_FLAGS_CRASHDUMP_NVM          0x1UL
90852895c153SMichael Chan 	#define DBG_QCAPS_RESP_FLAGS_CRASHDUMP_HOST_DDR     0x2UL
90862895c153SMichael Chan 	#define DBG_QCAPS_RESP_FLAGS_CRASHDUMP_SOC_DDR      0x4UL
90872895c153SMichael Chan 	#define DBG_QCAPS_RESP_FLAGS_USEQ                   0x8UL
90882895c153SMichael Chan 	u8	unused_1[3];
90892895c153SMichael Chan 	u8	valid;
90902895c153SMichael Chan };
90912895c153SMichael Chan 
90922895c153SMichael Chan /* hwrm_dbg_qcfg_input (size:192b/24B) */
90932895c153SMichael Chan struct hwrm_dbg_qcfg_input {
90942895c153SMichael Chan 	__le16	req_type;
90952895c153SMichael Chan 	__le16	cmpl_ring;
90962895c153SMichael Chan 	__le16	seq_id;
90972895c153SMichael Chan 	__le16	target_id;
90982895c153SMichael Chan 	__le64	resp_addr;
90992895c153SMichael Chan 	__le16	fid;
91002895c153SMichael Chan 	__le16	flags;
91012895c153SMichael Chan 	#define DBG_QCFG_REQ_FLAGS_CRASHDUMP_SIZE_FOR_DEST_MASK         0x3UL
91022895c153SMichael Chan 	#define DBG_QCFG_REQ_FLAGS_CRASHDUMP_SIZE_FOR_DEST_SFT          0
91032895c153SMichael Chan 	#define DBG_QCFG_REQ_FLAGS_CRASHDUMP_SIZE_FOR_DEST_DEST_NVM       0x0UL
91042895c153SMichael Chan 	#define DBG_QCFG_REQ_FLAGS_CRASHDUMP_SIZE_FOR_DEST_DEST_HOST_DDR  0x1UL
91052895c153SMichael Chan 	#define DBG_QCFG_REQ_FLAGS_CRASHDUMP_SIZE_FOR_DEST_DEST_SOC_DDR   0x2UL
91062895c153SMichael Chan 	#define DBG_QCFG_REQ_FLAGS_CRASHDUMP_SIZE_FOR_DEST_LAST          DBG_QCFG_REQ_FLAGS_CRASHDUMP_SIZE_FOR_DEST_DEST_SOC_DDR
91072895c153SMichael Chan 	__le32	coredump_component_disable_flags;
91082895c153SMichael Chan 	#define DBG_QCFG_REQ_COREDUMP_COMPONENT_DISABLE_FLAGS_NVRAM     0x1UL
91092895c153SMichael Chan };
91102895c153SMichael Chan 
91112895c153SMichael Chan /* hwrm_dbg_qcfg_output (size:256b/32B) */
91122895c153SMichael Chan struct hwrm_dbg_qcfg_output {
91132895c153SMichael Chan 	__le16	error_code;
91142895c153SMichael Chan 	__le16	req_type;
91152895c153SMichael Chan 	__le16	seq_id;
91162895c153SMichael Chan 	__le16	resp_len;
91172895c153SMichael Chan 	__le16	fid;
91182895c153SMichael Chan 	u8	unused_0[2];
91192895c153SMichael Chan 	__le32	coredump_size;
91202895c153SMichael Chan 	__le32	flags;
91212895c153SMichael Chan 	#define DBG_QCFG_RESP_FLAGS_UART_LOG               0x1UL
91222895c153SMichael Chan 	#define DBG_QCFG_RESP_FLAGS_UART_LOG_SECONDARY     0x2UL
91232895c153SMichael Chan 	#define DBG_QCFG_RESP_FLAGS_FW_TRACE               0x4UL
91246fc92c33SMichael Chan 	#define DBG_QCFG_RESP_FLAGS_FW_TRACE_SECONDARY     0x8UL
91256fc92c33SMichael Chan 	#define DBG_QCFG_RESP_FLAGS_DEBUG_NOTIFY           0x10UL
91266fc92c33SMichael Chan 	#define DBG_QCFG_RESP_FLAGS_JTAG_DEBUG             0x20UL
91276fc92c33SMichael Chan 	__le16	async_cmpl_ring;
91286fc92c33SMichael Chan 	u8	unused_2[2];
91296fc92c33SMichael Chan 	__le32	crashdump_size;
91306fc92c33SMichael Chan 	u8	unused_3[3];
91316fc92c33SMichael Chan 	u8	valid;
91322792b5b9SMichael Chan };
91332792b5b9SMichael Chan 
9134bfc6e5fbSMichael Chan /* hwrm_dbg_crashdump_medium_cfg_input (size:320b/40B) */
9135bfc6e5fbSMichael Chan struct hwrm_dbg_crashdump_medium_cfg_input {
91366fc92c33SMichael Chan 	__le16	req_type;
91376fc92c33SMichael Chan 	__le16	cmpl_ring;
91386fc92c33SMichael Chan 	__le16	seq_id;
91396fc92c33SMichael Chan 	__le16	target_id;
91406fc92c33SMichael Chan 	__le64	resp_addr;
91416fc92c33SMichael Chan 	__le16	output_dest_flags;
91426fc92c33SMichael Chan 	#define DBG_CRASHDUMP_MEDIUM_CFG_REQ_TYPE_DDR     0x1UL
91436fc92c33SMichael Chan 	__le16	pg_size_lvl;
91446fc92c33SMichael Chan 	#define DBG_CRASHDUMP_MEDIUM_CFG_REQ_LVL_MASK      0x3UL
91456fc92c33SMichael Chan 	#define DBG_CRASHDUMP_MEDIUM_CFG_REQ_LVL_SFT       0
91466fc92c33SMichael Chan 	#define DBG_CRASHDUMP_MEDIUM_CFG_REQ_LVL_LVL_0       0x0UL
91476fc92c33SMichael Chan 	#define DBG_CRASHDUMP_MEDIUM_CFG_REQ_LVL_LVL_1       0x1UL
91484a50ddc2SMichael Chan 	#define DBG_CRASHDUMP_MEDIUM_CFG_REQ_LVL_LVL_2       0x2UL
91494a50ddc2SMichael Chan 	#define DBG_CRASHDUMP_MEDIUM_CFG_REQ_LVL_LAST       DBG_CRASHDUMP_MEDIUM_CFG_REQ_LVL_LVL_2
91504a50ddc2SMichael Chan 	#define DBG_CRASHDUMP_MEDIUM_CFG_REQ_PG_SIZE_MASK  0x1cUL
91516fc92c33SMichael Chan 	#define DBG_CRASHDUMP_MEDIUM_CFG_REQ_PG_SIZE_SFT   2
91526fc92c33SMichael Chan 	#define DBG_CRASHDUMP_MEDIUM_CFG_REQ_PG_SIZE_PG_4K   (0x0UL << 2)
91536fc92c33SMichael Chan 	#define DBG_CRASHDUMP_MEDIUM_CFG_REQ_PG_SIZE_PG_8K   (0x1UL << 2)
91546fc92c33SMichael Chan 	#define DBG_CRASHDUMP_MEDIUM_CFG_REQ_PG_SIZE_PG_64K  (0x2UL << 2)
91556fc92c33SMichael Chan 	#define DBG_CRASHDUMP_MEDIUM_CFG_REQ_PG_SIZE_PG_2M   (0x3UL << 2)
91566fc92c33SMichael Chan 	#define DBG_CRASHDUMP_MEDIUM_CFG_REQ_PG_SIZE_PG_8M   (0x4UL << 2)
91576fc92c33SMichael Chan 	#define DBG_CRASHDUMP_MEDIUM_CFG_REQ_PG_SIZE_PG_1G   (0x5UL << 2)
91586fc92c33SMichael Chan 	#define DBG_CRASHDUMP_MEDIUM_CFG_REQ_PG_SIZE_LAST   DBG_CRASHDUMP_MEDIUM_CFG_REQ_PG_SIZE_PG_1G
91596fc92c33SMichael Chan 	#define DBG_CRASHDUMP_MEDIUM_CFG_REQ_UNUSED11_MASK 0xffe0UL
91606fc92c33SMichael Chan 	#define DBG_CRASHDUMP_MEDIUM_CFG_REQ_UNUSED11_SFT  5
91616fc92c33SMichael Chan 	__le32	size;
91626fc92c33SMichael Chan 	__le32	coredump_component_disable_flags;
91636fc92c33SMichael Chan 	#define DBG_CRASHDUMP_MEDIUM_CFG_REQ_NVRAM     0x1UL
91646fc92c33SMichael Chan 	__le32	unused_0;
91656fc92c33SMichael Chan 	__le64	pbl;
91666fc92c33SMichael Chan };
91676fc92c33SMichael Chan 
91686fc92c33SMichael Chan /* hwrm_dbg_crashdump_medium_cfg_output (size:128b/16B) */
91696fc92c33SMichael Chan struct hwrm_dbg_crashdump_medium_cfg_output {
91706fc92c33SMichael Chan 	__le16	error_code;
91716fc92c33SMichael Chan 	__le16	req_type;
91726fc92c33SMichael Chan 	__le16	seq_id;
91736fc92c33SMichael Chan 	__le16	resp_len;
91746fc92c33SMichael Chan 	u8	unused_1[7];
91756fc92c33SMichael Chan 	u8	valid;
91766fc92c33SMichael Chan };
91776fc92c33SMichael 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;
91866fc92c33SMichael Chan 	u8	compress_flags;
91876fc92c33SMichael Chan 	#define SFLAG_COMPRESSED_ZLIB     0x1UL
91886fc92c33SMichael Chan 	u8	unused_0[2];
91896fc92c33SMichael 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;
919716db6323SMichael Chan 	__le16	target_id;
919816db6323SMichael Chan 	__le64	resp_addr;
919916db6323SMichael Chan 	__le64	host_dest_addr;
92006fc92c33SMichael Chan 	__le32	host_buf_len;
92016fc92c33SMichael Chan 	__le16	seq_no;
92026fc92c33SMichael Chan 	u8	flags;
92036fc92c33SMichael Chan 	#define DBG_COREDUMP_LIST_REQ_FLAGS_CRASHDUMP     0x1UL
92046fc92c33SMichael 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;
924031d357c0SMichael Chan 	__le16	req_type;
924131d357c0SMichael Chan 	__le16	seq_id;
924231d357c0SMichael Chan 	__le16	resp_len;
924331d357c0SMichael Chan 	u8	unused_0[7];
924431d357c0SMichael Chan 	u8	valid;
924531d357c0SMichael Chan };
924631d357c0SMichael Chan 
924731d357c0SMichael Chan /* coredump_data_hdr (size:128b/16B) */
924831d357c0SMichael Chan struct coredump_data_hdr {
924931d357c0SMichael Chan 	__le32	address;
925031d357c0SMichael Chan 	__le32	flags_length;
9251bfc6e5fbSMichael Chan 	#define COREDUMP_DATA_HDR_FLAGS_LENGTH_ACTUAL_LEN_MASK     0xffffffUL
9252bfc6e5fbSMichael Chan 	#define COREDUMP_DATA_HDR_FLAGS_LENGTH_ACTUAL_LEN_SFT      0
925331d357c0SMichael Chan 	#define COREDUMP_DATA_HDR_FLAGS_LENGTH_INDIRECT_ACCESS     0x1000000UL
925431d357c0SMichael Chan 	__le32	instance;
925531d357c0SMichael Chan 	__le32	next_offset;
925631d357c0SMichael Chan };
925731d357c0SMichael Chan 
925831d357c0SMichael Chan /* hwrm_dbg_coredump_retrieve_input (size:448b/56B) */
925931d357c0SMichael Chan struct hwrm_dbg_coredump_retrieve_input {
926031d357c0SMichael Chan 	__le16	req_type;
926131d357c0SMichael Chan 	__le16	cmpl_ring;
926231d357c0SMichael Chan 	__le16	seq_id;
926331d357c0SMichael Chan 	__le16	target_id;
926431d357c0SMichael Chan 	__le64	resp_addr;
9265bfc6e5fbSMichael Chan 	__le64	host_dest_addr;
9266bfc6e5fbSMichael Chan 	__le32	host_buf_len;
926731d357c0SMichael Chan 	__le32	unused_0;
926831d357c0SMichael Chan 	__le16	component_id;
926931d357c0SMichael Chan 	__le16	segment_id;
9270894aa69aSMichael Chan 	__le16	instance;
9271894aa69aSMichael Chan 	__le16	unused_1;
9272894aa69aSMichael Chan 	u8	seg_flags;
9273894aa69aSMichael Chan 	u8	unused_2;
9274894aa69aSMichael Chan 	__le16	unused_3;
9275894aa69aSMichael Chan 	__le32	unused_4;
9276894aa69aSMichael Chan 	__le32	seq_no;
9277894aa69aSMichael Chan 	__le32	unused_5;
9278894aa69aSMichael Chan };
9279894aa69aSMichael Chan 
9280894aa69aSMichael Chan /* hwrm_dbg_coredump_retrieve_output (size:128b/16B) */
9281894aa69aSMichael Chan struct hwrm_dbg_coredump_retrieve_output {
9282894aa69aSMichael Chan 	__le16	error_code;
9283894aa69aSMichael Chan 	__le16	req_type;
9284894aa69aSMichael Chan 	__le16	seq_id;
9285894aa69aSMichael Chan 	__le16	resp_len;
9286894aa69aSMichael Chan 	u8	flags;
9287894aa69aSMichael Chan 	#define DBG_COREDUMP_RETRIEVE_RESP_FLAGS_MORE     0x1UL
9288894aa69aSMichael Chan 	u8	unused_0;
9289894aa69aSMichael Chan 	__le16	data_len;
9290894aa69aSMichael Chan 	u8	unused_1[3];
9291894aa69aSMichael Chan 	u8	valid;
9292894aa69aSMichael Chan };
9293894aa69aSMichael Chan 
9294894aa69aSMichael Chan /* hwrm_dbg_ring_info_get_input (size:192b/24B) */
9295894aa69aSMichael Chan struct hwrm_dbg_ring_info_get_input {
9296894aa69aSMichael Chan 	__le16	req_type;
9297894aa69aSMichael Chan 	__le16	cmpl_ring;
9298894aa69aSMichael Chan 	__le16	seq_id;
9299894aa69aSMichael Chan 	__le16	target_id;
9300894aa69aSMichael Chan 	__le64	resp_addr;
9301894aa69aSMichael Chan 	u8	ring_type;
9302894aa69aSMichael Chan 	#define DBG_RING_INFO_GET_REQ_RING_TYPE_L2_CMPL 0x0UL
9303894aa69aSMichael Chan 	#define DBG_RING_INFO_GET_REQ_RING_TYPE_TX      0x1UL
9304894aa69aSMichael Chan 	#define DBG_RING_INFO_GET_REQ_RING_TYPE_RX      0x2UL
9305894aa69aSMichael Chan 	#define DBG_RING_INFO_GET_REQ_RING_TYPE_NQ      0x3UL
9306894aa69aSMichael Chan 	#define DBG_RING_INFO_GET_REQ_RING_TYPE_LAST   DBG_RING_INFO_GET_REQ_RING_TYPE_NQ
9307894aa69aSMichael Chan 	u8	unused_0[3];
9308894aa69aSMichael Chan 	__le32	fw_ring_id;
9309894aa69aSMichael Chan };
9310894aa69aSMichael Chan 
9311894aa69aSMichael Chan /* hwrm_dbg_ring_info_get_output (size:192b/24B) */
9312894aa69aSMichael Chan struct hwrm_dbg_ring_info_get_output {
9313894aa69aSMichael Chan 	__le16	error_code;
9314894aa69aSMichael Chan 	__le16	req_type;
9315894aa69aSMichael Chan 	__le16	seq_id;
9316894aa69aSMichael Chan 	__le16	resp_len;
9317894aa69aSMichael Chan 	__le32	producer_index;
9318894aa69aSMichael Chan 	__le32	consumer_index;
9319894aa69aSMichael Chan 	__le32	cag_vector_ctrl;
9320894aa69aSMichael Chan 	u8	unused_0[3];
9321894aa69aSMichael Chan 	u8	valid;
9322894aa69aSMichael Chan };
9323894aa69aSMichael 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;
9336fbfee257SMichael 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;
9352fbfee257SMichael Chan 	__le16	cmpl_ring;
9353fbfee257SMichael Chan 	__le16	seq_id;
9354894aa69aSMichael Chan 	__le16	target_id;
9355fbfee257SMichael Chan 	__le64	resp_addr;
9356fbfee257SMichael 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 
9390894aa69aSMichael Chan /* hwrm_nvm_write_input (size:448b/56B) */
9391460c2577SMichael Chan struct hwrm_nvm_write_input {
9392460c2577SMichael Chan 	__le16	req_type;
9393460c2577SMichael 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
9406894aa69aSMichael Chan 	#define NVM_WRITE_REQ_FLAGS_BATCH_MODE               0x2UL
9407894aa69aSMichael Chan 	#define NVM_WRITE_REQ_FLAGS_BATCH_LAST               0x4UL
9408894aa69aSMichael Chan 	__le32	dir_item_length;
9409894aa69aSMichael Chan 	__le32	offset;
9410894aa69aSMichael 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;
9445894aa69aSMichael Chan 	__le16	flags;
9446894aa69aSMichael Chan 	#define NVM_MODIFY_REQ_FLAGS_BATCH_MODE     0x1UL
9447894aa69aSMichael 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;
9477424174f1SVasundhara Volam 	#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;
94894a50ddc2SMichael Chan 	__le16	req_type;
94904a50ddc2SMichael Chan 	__le16	seq_id;
94914a50ddc2SMichael Chan 	__le16	resp_len;
9492424174f1SVasundhara Volam 	__le32	dir_item_length;
9493424174f1SVasundhara Volam 	__le32	dir_data_length;
9494424174f1SVasundhara Volam 	__le32	fw_ver;
9495424174f1SVasundhara Volam 	__le16	dir_ordinal;
9496424174f1SVasundhara Volam 	__le16	dir_idx;
9497424174f1SVasundhara Volam 	u8	unused_0[7];
9498424174f1SVasundhara Volam 	u8	valid;
9499424174f1SVasundhara Volam };
9500424174f1SVasundhara Volam 
9501424174f1SVasundhara Volam /* hwrm_nvm_erase_dir_entry_input (size:192b/24B) */
9502424174f1SVasundhara Volam struct hwrm_nvm_erase_dir_entry_input {
9503424174f1SVasundhara Volam 	__le16	req_type;
9504424174f1SVasundhara Volam 	__le16	cmpl_ring;
9505424174f1SVasundhara Volam 	__le16	seq_id;
9506424174f1SVasundhara Volam 	__le16	target_id;
9507424174f1SVasundhara Volam 	__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 
9531894aa69aSMichael Chan /* 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;
9543894aa69aSMichael Chan 	u8	nvm_cfg_ver_maj;
9544894aa69aSMichael Chan 	u8	nvm_cfg_ver_min;
9545894aa69aSMichael Chan 	u8	nvm_cfg_ver_upd;
9546894aa69aSMichael Chan 	u8	flags;
9547894aa69aSMichael Chan 	#define NVM_GET_DEV_INFO_RESP_FLAGS_FW_VER_VALID     0x1UL
9548894aa69aSMichael Chan 	char	pkg_name[16];
9549894aa69aSMichael Chan 	__le16	hwrm_fw_major;
9550894aa69aSMichael Chan 	__le16	hwrm_fw_minor;
9551894aa69aSMichael Chan 	__le16	hwrm_fw_build;
9552894aa69aSMichael Chan 	__le16	hwrm_fw_patch;
9553894aa69aSMichael Chan 	__le16	mgmt_fw_major;
9554894aa69aSMichael Chan 	__le16	mgmt_fw_minor;
9555894aa69aSMichael Chan 	__le16	mgmt_fw_build;
9556894aa69aSMichael Chan 	__le16	mgmt_fw_patch;
9557894aa69aSMichael Chan 	__le16	roce_fw_major;
9558894aa69aSMichael Chan 	__le16	roce_fw_minor;
9559894aa69aSMichael Chan 	__le16	roce_fw_build;
9560894aa69aSMichael Chan 	__le16	roce_fw_patch;
9561894aa69aSMichael Chan 	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;
9575bfc6e5fbSMichael 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];
95882895c153SMichael Chan 	u8	valid;
95892895c153SMichael Chan };
95902895c153SMichael Chan 
95912895c153SMichael Chan /* hwrm_nvm_verify_update_input (size:192b/24B) */
95922895c153SMichael Chan struct hwrm_nvm_verify_update_input {
95932895c153SMichael Chan 	__le16	req_type;
95942895c153SMichael Chan 	__le16	cmpl_ring;
95952895c153SMichael Chan 	__le16	seq_id;
95962895c153SMichael Chan 	__le16	target_id;
95972895c153SMichael Chan 	__le64	resp_addr;
95982895c153SMichael Chan 	__le16	dir_type;
95992895c153SMichael Chan 	__le16	dir_ordinal;
96002895c153SMichael Chan 	__le16	dir_ext;
96012895c153SMichael Chan 	u8	unused_0[2];
96022895c153SMichael Chan };
96032895c153SMichael Chan 
96042895c153SMichael Chan /* hwrm_nvm_verify_update_output (size:128b/16B) */
96052895c153SMichael Chan struct hwrm_nvm_verify_update_output {
96062895c153SMichael Chan 	__le16	error_code;
96072895c153SMichael Chan 	__le16	req_type;
96082895c153SMichael Chan 	__le16	seq_id;
96092895c153SMichael Chan 	__le16	resp_len;
96102895c153SMichael Chan 	u8	unused_0[7];
96112895c153SMichael Chan 	u8	valid;
96122895c153SMichael Chan };
96132895c153SMichael Chan 
96142895c153SMichael Chan /* hwrm_nvm_install_update_input (size:192b/24B) */
96152895c153SMichael 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
9629894aa69aSMichael 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 {
963578eeadb8SMichael Chan 	__le16	error_code;
9636ad04cc05SMichael Chan 	__le16	req_type;
9637ad04cc05SMichael 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
9642894aa69aSMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_FAILURE                      0xffUL
9643894aa69aSMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_MALLOC_FAILURE               0xfdUL
9644894aa69aSMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_INVALID_INDEX_PARAMETER      0xfbUL
9645894aa69aSMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_INVALID_TYPE_PARAMETER       0xf3UL
9646894aa69aSMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_INVALID_PREREQUISITE         0xf2UL
9647894aa69aSMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_INVALID_FILE_HEADER          0xecUL
9648894aa69aSMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_INVALID_SIGNATURE            0xebUL
9649894aa69aSMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_INVALID_PROP_STREAM          0xeaUL
9650894aa69aSMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_INVALID_PROP_LENGTH          0xe9UL
9651894aa69aSMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_INVALID_MANIFEST             0xe8UL
9652894aa69aSMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_INVALID_TRAILER              0xe7UL
9653894aa69aSMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_INVALID_CHECKSUM             0xe6UL
9654894aa69aSMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_INVALID_ITEM_CHECKSUM        0xe5UL
9655894aa69aSMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_INVALID_DATA_LENGTH          0xe4UL
9656894aa69aSMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_INVALID_DIRECTIVE            0xe1UL
9657894aa69aSMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_UNSUPPORTED_CHIP_REV         0xceUL
9658894aa69aSMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_UNSUPPORTED_DEVICE_ID        0xcdUL
9659894aa69aSMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_UNSUPPORTED_SUBSYS_VENDOR    0xccUL
9660894aa69aSMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_UNSUPPORTED_SUBSYS_ID        0xcbUL
9661894aa69aSMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_UNSUPPORTED_PLATFORM         0xc5UL
9662894aa69aSMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_DUPLICATE_ITEM               0xc4UL
9663894aa69aSMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_ZERO_LENGTH_ITEM             0xc3UL
9664894aa69aSMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_INSTALL_CHECKSUM_ERROR       0xb9UL
9665894aa69aSMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_INSTALL_DATA_ERROR           0xb8UL
9666894aa69aSMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_INSTALL_AUTHENTICATION_ERROR 0xb7UL
9667894aa69aSMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_ITEM_NOT_FOUND               0xb0UL
9668894aa69aSMichael Chan 	#define NVM_INSTALL_UPDATE_RESP_RESULT_ITEM_LOCKED                  0xa7UL
9669894aa69aSMichael 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
9689894aa69aSMichael Chan 	#define NVM_INSTALL_UPDATE_CMD_ERR_CODE_ANTI_ROLLBACK      0x3UL
9690894aa69aSMichael Chan 	#define NVM_INSTALL_UPDATE_CMD_ERR_CODE_NO_VOLTREG_SUPPORT 0x4UL
9691894aa69aSMichael 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;
97146fc92c33SMichael Chan 	#define NVM_GET_VARIABLE_REQ_FLAGS_FACTORY_DFLT     0x1UL
97156fc92c33SMichael Chan 	u8	unused_0;
97166fc92c33SMichael Chan };
97172792b5b9SMichael Chan 
97182792b5b9SMichael Chan /* hwrm_nvm_get_variable_output (size:128b/16B) */
97192792b5b9SMichael 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)
9768894aa69aSMichael Chan 	#define NVM_SET_VARIABLE_REQ_FLAGS_ENCRYPT_MODE_AES256          (0x2UL << 1)
9769894aa69aSMichael Chan 	#define NVM_SET_VARIABLE_REQ_FLAGS_ENCRYPT_MODE_HMAC_SHA1_AUTH  (0x3UL << 1)
9770894aa69aSMichael Chan 	#define NVM_SET_VARIABLE_REQ_FLAGS_ENCRYPT_MODE_LAST           NVM_SET_VARIABLE_REQ_FLAGS_ENCRYPT_MODE_HMAC_SHA1_AUTH
9771894aa69aSMichael Chan 	#define NVM_SET_VARIABLE_REQ_FLAGS_FLAGS_UNUSED_0_MASK        0x70UL
9772894aa69aSMichael Chan 	#define NVM_SET_VARIABLE_REQ_FLAGS_FLAGS_UNUSED_0_SFT         4
9773894aa69aSMichael Chan 	#define NVM_SET_VARIABLE_REQ_FLAGS_FACTORY_DEFAULT            0x80UL
9774894aa69aSMichael Chan 	u8	unused_0;
9775894aa69aSMichael Chan };
9776d3e599c0SKees Cook 
9777bfc6e5fbSMichael Chan /* hwrm_nvm_set_variable_output (size:128b/16B) */
9778bfc6e5fbSMichael Chan struct hwrm_nvm_set_variable_output {
9779bfc6e5fbSMichael Chan 	__le16	error_code;
9780bfc6e5fbSMichael Chan 	__le16	req_type;
9781bfc6e5fbSMichael Chan 	__le16	seq_id;
9782bfc6e5fbSMichael Chan 	__le16	resp_len;
9783bfc6e5fbSMichael Chan 	u8	unused_0[7];
9784bfc6e5fbSMichael 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;
9802d4f52de0SMichael 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];
9830894aa69aSMichael Chan 	char	test_name[8][32];
9831894aa69aSMichael Chan 	u8	eyescope_target_BER_support;
9832894aa69aSMichael Chan 	#define SELFTEST_QLIST_RESP_EYESCOPE_TARGET_BER_SUPPORT_BER_1E8_SUPPORTED  0x0UL
9833894aa69aSMichael Chan 	#define SELFTEST_QLIST_RESP_EYESCOPE_TARGET_BER_SUPPORT_BER_1E9_SUPPORTED  0x1UL
9834894aa69aSMichael Chan 	#define SELFTEST_QLIST_RESP_EYESCOPE_TARGET_BER_SUPPORT_BER_1E10_SUPPORTED 0x2UL
9835894aa69aSMichael Chan 	#define SELFTEST_QLIST_RESP_EYESCOPE_TARGET_BER_SUPPORT_BER_1E11_SUPPORTED 0x3UL
9836894aa69aSMichael Chan 	#define SELFTEST_QLIST_RESP_EYESCOPE_TARGET_BER_SUPPORT_BER_1E12_SUPPORTED 0x4UL
9837894aa69aSMichael Chan 	#define SELFTEST_QLIST_RESP_EYESCOPE_TARGET_BER_SUPPORT_LAST              SELFTEST_QLIST_RESP_EYESCOPE_TARGET_BER_SUPPORT_BER_1E12_SUPPORTED
9838894aa69aSMichael 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;
9848a9a457f3SSelvin Xavier 	__le64	resp_addr;
9849a9a457f3SSelvin Xavier 	u8	flags;
9850a9a457f3SSelvin Xavier 	#define SELFTEST_EXEC_REQ_FLAGS_NVM_TEST                 0x1UL
9851a9a457f3SSelvin Xavier 	#define SELFTEST_EXEC_REQ_FLAGS_LINK_TEST                0x2UL
9852a9a457f3SSelvin Xavier 	#define SELFTEST_EXEC_REQ_FLAGS_REGISTER_TEST            0x4UL
9853a9a457f3SSelvin Xavier 	#define SELFTEST_EXEC_REQ_FLAGS_MEMORY_TEST              0x8UL
9854a9a457f3SSelvin Xavier 	#define SELFTEST_EXEC_REQ_FLAGS_PCIE_SERDES_TEST         0x10UL
9855a9a457f3SSelvin Xavier 	#define SELFTEST_EXEC_REQ_FLAGS_ETHERNET_SERDES_TEST     0x20UL
9856a9a457f3SSelvin Xavier 	u8	unused_0[7];
9857a9a457f3SSelvin Xavier };
9858a9a457f3SSelvin Xavier 
9859a9a457f3SSelvin Xavier /* hwrm_selftest_exec_output (size:128b/16B) */
9860a9a457f3SSelvin Xavier struct hwrm_selftest_exec_output {
9861a9a457f3SSelvin Xavier 	__le16	error_code;
9862a9a457f3SSelvin Xavier 	__le16	req_type;
9863a9a457f3SSelvin Xavier 	__le16	seq_id;
9864a9a457f3SSelvin Xavier 	__le16	resp_len;
9865a9a457f3SSelvin Xavier 	u8	requested_tests;
9866a9a457f3SSelvin Xavier 	#define SELFTEST_EXEC_RESP_REQUESTED_TESTS_NVM_TEST                 0x1UL
9867a9a457f3SSelvin Xavier 	#define SELFTEST_EXEC_RESP_REQUESTED_TESTS_LINK_TEST                0x2UL
9868a9a457f3SSelvin Xavier 	#define SELFTEST_EXEC_RESP_REQUESTED_TESTS_REGISTER_TEST            0x4UL
9869a9a457f3SSelvin Xavier 	#define SELFTEST_EXEC_RESP_REQUESTED_TESTS_MEMORY_TEST              0x8UL
9870a9a457f3SSelvin Xavier 	#define SELFTEST_EXEC_RESP_REQUESTED_TESTS_PCIE_SERDES_TEST         0x10UL
9871a9a457f3SSelvin Xavier 	#define SELFTEST_EXEC_RESP_REQUESTED_TESTS_ETHERNET_SERDES_TEST     0x20UL
9872a9a457f3SSelvin Xavier 	u8	test_success;
9873a9a457f3SSelvin Xavier 	#define SELFTEST_EXEC_RESP_TEST_SUCCESS_NVM_TEST                 0x1UL
9874a9a457f3SSelvin Xavier 	#define SELFTEST_EXEC_RESP_TEST_SUCCESS_LINK_TEST                0x2UL
9875a9a457f3SSelvin Xavier 	#define SELFTEST_EXEC_RESP_TEST_SUCCESS_REGISTER_TEST            0x4UL
9876a9a457f3SSelvin Xavier 	#define SELFTEST_EXEC_RESP_TEST_SUCCESS_MEMORY_TEST              0x8UL
9877a9a457f3SSelvin Xavier 	#define SELFTEST_EXEC_RESP_TEST_SUCCESS_PCIE_SERDES_TEST         0x10UL
9878a9a457f3SSelvin Xavier 	#define SELFTEST_EXEC_RESP_TEST_SUCCESS_ETHERNET_SERDES_TEST     0x20UL
9879a9a457f3SSelvin Xavier 	u8	unused_0[5];
9880a9a457f3SSelvin Xavier 	u8	valid;
9881a9a457f3SSelvin Xavier };
9882a9a457f3SSelvin Xavier 
9883a9a457f3SSelvin Xavier /* hwrm_selftest_irq_input (size:128b/16B) */
9884a9a457f3SSelvin Xavier struct hwrm_selftest_irq_input {
9885a9a457f3SSelvin Xavier 	__le16	req_type;
9886a9a457f3SSelvin Xavier 	__le16	cmpl_ring;
9887a9a457f3SSelvin Xavier 	__le16	seq_id;
9888a9a457f3SSelvin Xavier 	__le16	target_id;
9889a9a457f3SSelvin Xavier 	__le64	resp_addr;
9890a9a457f3SSelvin Xavier };
9891a9a457f3SSelvin Xavier 
9892a9a457f3SSelvin Xavier /* hwrm_selftest_irq_output (size:128b/16B) */
9893a9a457f3SSelvin Xavier struct hwrm_selftest_irq_output {
9894a9a457f3SSelvin Xavier 	__le16	error_code;
9895a9a457f3SSelvin Xavier 	__le16	req_type;
9896a9a457f3SSelvin Xavier 	__le16	seq_id;
9897a9a457f3SSelvin Xavier 	__le16	resp_len;
9898a9a457f3SSelvin Xavier 	u8	unused_0[7];
9899a9a457f3SSelvin Xavier 	u8	valid;
9900a9a457f3SSelvin Xavier };
9901a9a457f3SSelvin Xavier 
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)
99299d6b648cSMichael Chan 	#define DBC_DBC_TYPE_CQ_ARMALL      (0x6UL << 28)
99309d6b648cSMichael Chan 	#define DBC_DBC_TYPE_CQ_ARMENA      (0x7UL << 28)
99319d6b648cSMichael Chan 	#define DBC_DBC_TYPE_SRQ_ARMENA     (0x8UL << 28)
99329d6b648cSMichael Chan 	#define DBC_DBC_TYPE_CQ_CUTOFF_ACK  (0x9UL << 28)
99339d6b648cSMichael Chan 	#define DBC_DBC_TYPE_NQ             (0xaUL << 28)
99349d6b648cSMichael Chan 	#define DBC_DBC_TYPE_NQ_ARM         (0xbUL << 28)
99359d6b648cSMichael Chan 	#define DBC_DBC_TYPE_NQ_MASK        (0xeUL << 28)
99369d6b648cSMichael Chan 	#define DBC_DBC_TYPE_NULL           (0xfUL << 28)
99379d6b648cSMichael Chan 	#define DBC_DBC_TYPE_LAST          DBC_DBC_TYPE_NULL
99389d6b648cSMichael Chan };
9939460c2577SMichael Chan 
9940460c2577SMichael Chan /* db_push_start (size:64b/8B) */
9941460c2577SMichael Chan struct db_push_start {
9942460c2577SMichael Chan 	u64	db;
9943460c2577SMichael Chan 	#define DB_PUSH_START_DB_INDEX_MASK     0xffffffUL
9944460c2577SMichael Chan 	#define DB_PUSH_START_DB_INDEX_SFT      0
9945460c2577SMichael Chan 	#define DB_PUSH_START_DB_PI_LO_MASK     0xff000000UL
9946460c2577SMichael Chan 	#define DB_PUSH_START_DB_PI_LO_SFT      24
9947460c2577SMichael Chan 	#define DB_PUSH_START_DB_XID_MASK       0xfffff00000000ULL
9948460c2577SMichael Chan 	#define DB_PUSH_START_DB_XID_SFT        32
9949460c2577SMichael Chan 	#define DB_PUSH_START_DB_PI_HI_MASK     0xf0000000000000ULL
9950460c2577SMichael Chan 	#define DB_PUSH_START_DB_PI_HI_SFT      52
9951424174f1SVasundhara Volam 	#define DB_PUSH_START_DB_TYPE_MASK      0xf000000000000000ULL
995278eeadb8SMichael Chan 	#define DB_PUSH_START_DB_TYPE_SFT       60
995384a911dbSMichael Chan 	#define DB_PUSH_START_DB_TYPE_PUSH_START  (0xcULL << 60)
9954460c2577SMichael Chan 	#define DB_PUSH_START_DB_TYPE_PUSH_END    (0xdULL << 60)
9955460c2577SMichael Chan 	#define DB_PUSH_START_DB_TYPE_LAST       DB_PUSH_START_DB_TYPE_PUSH_END
99569d6b648cSMichael Chan };
99579d6b648cSMichael Chan 
99589d6b648cSMichael Chan /* db_push_end (size:64b/8B) */
99599d6b648cSMichael Chan struct db_push_end {
99609d6b648cSMichael Chan 	u64	db;
99619d6b648cSMichael Chan 	#define DB_PUSH_END_DB_INDEX_MASK      0xffffffUL
99629d6b648cSMichael Chan 	#define DB_PUSH_END_DB_INDEX_SFT       0
99639d6b648cSMichael Chan 	#define DB_PUSH_END_DB_PI_LO_MASK      0xff000000UL
99649d6b648cSMichael Chan 	#define DB_PUSH_END_DB_PI_LO_SFT       24
99659d6b648cSMichael Chan 	#define DB_PUSH_END_DB_XID_MASK        0xfffff00000000ULL
99669d6b648cSMichael Chan 	#define DB_PUSH_END_DB_XID_SFT         32
99679d6b648cSMichael Chan 	#define DB_PUSH_END_DB_PI_HI_MASK      0xf0000000000000ULL
99689d6b648cSMichael Chan 	#define DB_PUSH_END_DB_PI_HI_SFT       52
99699d6b648cSMichael Chan 	#define DB_PUSH_END_DB_PATH_MASK       0x300000000000000ULL
99709d6b648cSMichael Chan 	#define DB_PUSH_END_DB_PATH_SFT        56
99719d6b648cSMichael Chan 	#define DB_PUSH_END_DB_PATH_ROCE         (0x0ULL << 56)
99729d6b648cSMichael Chan 	#define DB_PUSH_END_DB_PATH_L2           (0x1ULL << 56)
99739d6b648cSMichael Chan 	#define DB_PUSH_END_DB_PATH_ENGINE       (0x2ULL << 56)
99749d6b648cSMichael Chan 	#define DB_PUSH_END_DB_PATH_LAST        DB_PUSH_END_DB_PATH_ENGINE
99759d6b648cSMichael Chan 	#define DB_PUSH_END_DB_DEBUG_TRACE     0x800000000000000ULL
99769d6b648cSMichael Chan 	#define DB_PUSH_END_DB_TYPE_MASK       0xf000000000000000ULL
99779d6b648cSMichael Chan 	#define DB_PUSH_END_DB_TYPE_SFT        60
99789d6b648cSMichael Chan 	#define DB_PUSH_END_DB_TYPE_PUSH_START   (0xcULL << 60)
99799d6b648cSMichael Chan 	#define DB_PUSH_END_DB_TYPE_PUSH_END     (0xdULL << 60)
9980894aa69aSMichael Chan 	#define DB_PUSH_END_DB_TYPE_LAST        DB_PUSH_END_DB_TYPE_PUSH_END
9981 };
9982 
9983 /* db_push_info (size:64b/8B) */
9984 struct db_push_info {
9985 	u32	push_size_push_index;
9986 	#define DB_PUSH_INFO_PUSH_INDEX_MASK 0xffffffUL
9987 	#define DB_PUSH_INFO_PUSH_INDEX_SFT 0
9988 	#define DB_PUSH_INFO_PUSH_SIZE_MASK 0x1f000000UL
9989 	#define DB_PUSH_INFO_PUSH_SIZE_SFT  24
9990 	u32	reserved32;
9991 };
9992 
9993 /* fw_status_reg (size:32b/4B) */
9994 struct fw_status_reg {
9995 	u32	fw_status;
9996 	#define FW_STATUS_REG_CODE_MASK              0xffffUL
9997 	#define FW_STATUS_REG_CODE_SFT               0
9998 	#define FW_STATUS_REG_CODE_READY               0x8000UL
9999 	#define FW_STATUS_REG_CODE_LAST               FW_STATUS_REG_CODE_READY
10000 	#define FW_STATUS_REG_IMAGE_DEGRADED         0x10000UL
10001 	#define FW_STATUS_REG_RECOVERABLE            0x20000UL
10002 	#define FW_STATUS_REG_CRASHDUMP_ONGOING      0x40000UL
10003 	#define FW_STATUS_REG_CRASHDUMP_COMPLETE     0x80000UL
10004 	#define FW_STATUS_REG_SHUTDOWN               0x100000UL
10005 	#define FW_STATUS_REG_CRASHED_NO_MASTER      0x200000UL
10006 	#define FW_STATUS_REG_RECOVERING             0x400000UL
10007 	#define FW_STATUS_REG_MANU_DEBUG_STATUS      0x800000UL
10008 };
10009 
10010 /* hcomm_status (size:64b/8B) */
10011 struct hcomm_status {
10012 	u32	sig_ver;
10013 	#define HCOMM_STATUS_VER_MASK      0xffUL
10014 	#define HCOMM_STATUS_VER_SFT       0
10015 	#define HCOMM_STATUS_VER_LATEST      0x1UL
10016 	#define HCOMM_STATUS_VER_LAST       HCOMM_STATUS_VER_LATEST
10017 	#define HCOMM_STATUS_SIGNATURE_MASK 0xffffff00UL
10018 	#define HCOMM_STATUS_SIGNATURE_SFT 8
10019 	#define HCOMM_STATUS_SIGNATURE_VAL   (0x484353UL << 8)
10020 	#define HCOMM_STATUS_SIGNATURE_LAST HCOMM_STATUS_SIGNATURE_VAL
10021 	u32	fw_status_loc;
10022 	#define HCOMM_STATUS_TRUE_ADDR_SPACE_MASK    0x3UL
10023 	#define HCOMM_STATUS_TRUE_ADDR_SPACE_SFT     0
10024 	#define HCOMM_STATUS_FW_STATUS_LOC_ADDR_SPACE_PCIE_CFG  0x0UL
10025 	#define HCOMM_STATUS_FW_STATUS_LOC_ADDR_SPACE_GRC       0x1UL
10026 	#define HCOMM_STATUS_FW_STATUS_LOC_ADDR_SPACE_BAR0      0x2UL
10027 	#define HCOMM_STATUS_FW_STATUS_LOC_ADDR_SPACE_BAR1      0x3UL
10028 	#define HCOMM_STATUS_FW_STATUS_LOC_ADDR_SPACE_LAST     HCOMM_STATUS_FW_STATUS_LOC_ADDR_SPACE_BAR1
10029 	#define HCOMM_STATUS_TRUE_OFFSET_MASK        0xfffffffcUL
10030 	#define HCOMM_STATUS_TRUE_OFFSET_SFT         2
10031 };
10032 #define HCOMM_STATUS_STRUCT_LOC 0x31001F0UL
10033 
10034 #endif /* _BNXT_HSI_H_ */
10035