]> git.kernelconcepts.de Git - karo-tx-linux.git/blob - drivers/net/ethernet/broadcom/bnxt/bnxt_hsi.h
bnxt_en: Update firmware header file to latest 1.6.0.
[karo-tx-linux.git] / drivers / net / ethernet / broadcom / bnxt / bnxt_hsi.h
1 /* Broadcom NetXtreme-C/E network driver.
2  *
3  * Copyright (c) 2014-2016 Broadcom Corporation
4  * Copyright (c) 2016 Broadcom Limited
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation.
9  */
10
11 #ifndef BNXT_HSI_H
12 #define BNXT_HSI_H
13
14 /* HSI and HWRM Specification 1.6.0 */
15 #define HWRM_VERSION_MAJOR      1
16 #define HWRM_VERSION_MINOR      6
17 #define HWRM_VERSION_UPDATE     0
18
19 #define HWRM_VERSION_STR        "1.6.0"
20 /*
21  * Following is the signature for HWRM message field that indicates not
22  * applicable (All F's). Need to cast it the size of the field if needed.
23  */
24 #define HWRM_NA_SIGNATURE       ((__le32)(-1))
25 #define HWRM_MAX_REQ_LEN    (128)  /* hwrm_func_buf_rgtr */
26 #define HWRM_MAX_RESP_LEN    (176)  /* hwrm_func_qstats */
27 #define HW_HASH_INDEX_SIZE      0x80    /* 7 bit indirection table index. */
28 #define HW_HASH_KEY_SIZE        40
29 #define HWRM_RESP_VALID_KEY      1 /* valid key for HWRM response */
30
31 /* Statistics Ejection Buffer Completion Record (16 bytes) */
32 struct eject_cmpl {
33         __le16 type;
34         #define EJECT_CMPL_TYPE_MASK                                0x3fUL
35         #define EJECT_CMPL_TYPE_SFT                                 0
36         #define EJECT_CMPL_TYPE_STAT_EJECT                         0x1aUL
37         __le16 len;
38         __le32 opaque;
39         __le32 v;
40         #define EJECT_CMPL_V                                        0x1UL
41         __le32 unused_2;
42 };
43
44 /* HWRM Completion Record (16 bytes) */
45 struct hwrm_cmpl {
46         __le16 type;
47         #define CMPL_TYPE_MASK                                      0x3fUL
48         #define CMPL_TYPE_SFT                                       0
49         #define CMPL_TYPE_HWRM_DONE                                0x20UL
50         __le16 sequence_id;
51         __le32 unused_1;
52         __le32 v;
53         #define CMPL_V                                              0x1UL
54         __le32 unused_3;
55 };
56
57 /* HWRM Forwarded Request (16 bytes) */
58 struct hwrm_fwd_req_cmpl {
59         __le16 req_len_type;
60         #define FWD_REQ_CMPL_TYPE_MASK                              0x3fUL
61         #define FWD_REQ_CMPL_TYPE_SFT                               0
62         #define FWD_REQ_CMPL_TYPE_HWRM_FWD_REQ                     0x22UL
63         #define FWD_REQ_CMPL_REQ_LEN_MASK                           0xffc0UL
64         #define FWD_REQ_CMPL_REQ_LEN_SFT                            6
65         __le16 source_id;
66         __le32 unused_0;
67         __le32 req_buf_addr_v[2];
68         #define FWD_REQ_CMPL_V                                      0x1UL
69         #define FWD_REQ_CMPL_REQ_BUF_ADDR_MASK                      0xfffffffeUL
70         #define FWD_REQ_CMPL_REQ_BUF_ADDR_SFT                       1
71 };
72
73 /* HWRM Forwarded Response (16 bytes) */
74 struct hwrm_fwd_resp_cmpl {
75         __le16 type;
76         #define FWD_RESP_CMPL_TYPE_MASK                     0x3fUL
77         #define FWD_RESP_CMPL_TYPE_SFT                              0
78         #define FWD_RESP_CMPL_TYPE_HWRM_FWD_RESP                   0x24UL
79         __le16 source_id;
80         __le16 resp_len;
81         __le16 unused_1;
82         __le32 resp_buf_addr_v[2];
83         #define FWD_RESP_CMPL_V                             0x1UL
84         #define FWD_RESP_CMPL_RESP_BUF_ADDR_MASK                    0xfffffffeUL
85         #define FWD_RESP_CMPL_RESP_BUF_ADDR_SFT             1
86 };
87
88 /* HWRM Asynchronous Event Completion Record (16 bytes) */
89 struct hwrm_async_event_cmpl {
90         __le16 type;
91         #define ASYNC_EVENT_CMPL_TYPE_MASK                          0x3fUL
92         #define ASYNC_EVENT_CMPL_TYPE_SFT                           0
93         #define ASYNC_EVENT_CMPL_TYPE_HWRM_ASYNC_EVENT             0x2eUL
94         __le16 event_id;
95         #define ASYNC_EVENT_CMPL_EVENT_ID_LINK_STATUS_CHANGE      0x0UL
96         #define ASYNC_EVENT_CMPL_EVENT_ID_LINK_MTU_CHANGE          0x1UL
97         #define ASYNC_EVENT_CMPL_EVENT_ID_LINK_SPEED_CHANGE       0x2UL
98         #define ASYNC_EVENT_CMPL_EVENT_ID_DCB_CONFIG_CHANGE       0x3UL
99         #define ASYNC_EVENT_CMPL_EVENT_ID_PORT_CONN_NOT_ALLOWED   0x4UL
100         #define ASYNC_EVENT_CMPL_EVENT_ID_LINK_SPEED_CFG_NOT_ALLOWED 0x5UL
101         #define ASYNC_EVENT_CMPL_EVENT_ID_LINK_SPEED_CFG_CHANGE   0x6UL
102         #define ASYNC_EVENT_CMPL_EVENT_ID_PORT_PHY_CFG_CHANGE     0x7UL
103         #define ASYNC_EVENT_CMPL_EVENT_ID_FUNC_DRVR_UNLOAD         0x10UL
104         #define ASYNC_EVENT_CMPL_EVENT_ID_FUNC_DRVR_LOAD           0x11UL
105         #define ASYNC_EVENT_CMPL_EVENT_ID_FUNC_FLR_PROC_CMPLT     0x12UL
106         #define ASYNC_EVENT_CMPL_EVENT_ID_PF_DRVR_UNLOAD           0x20UL
107         #define ASYNC_EVENT_CMPL_EVENT_ID_PF_DRVR_LOAD             0x21UL
108         #define ASYNC_EVENT_CMPL_EVENT_ID_VF_FLR                   0x30UL
109         #define ASYNC_EVENT_CMPL_EVENT_ID_VF_MAC_ADDR_CHANGE      0x31UL
110         #define ASYNC_EVENT_CMPL_EVENT_ID_PF_VF_COMM_STATUS_CHANGE 0x32UL
111         #define ASYNC_EVENT_CMPL_EVENT_ID_VF_CFG_CHANGE    0x33UL
112         #define ASYNC_EVENT_CMPL_EVENT_ID_HWRM_ERROR               0xffUL
113         __le32 event_data2;
114         u8 opaque_v;
115         #define ASYNC_EVENT_CMPL_V                                  0x1UL
116         #define ASYNC_EVENT_CMPL_OPAQUE_MASK                        0xfeUL
117         #define ASYNC_EVENT_CMPL_OPAQUE_SFT                         1
118         u8 timestamp_lo;
119         __le16 timestamp_hi;
120         __le32 event_data1;
121 };
122
123 /* HWRM Asynchronous Event Completion Record for link status change (16 bytes) */
124 struct hwrm_async_event_cmpl_link_status_change {
125         __le16 type;
126         #define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_TYPE_MASK      0x3fUL
127         #define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_TYPE_SFT       0
128         #define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_TYPE_HWRM_ASYNC_EVENT 0x2eUL
129         __le16 event_id;
130         #define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_ID_LINK_STATUS_CHANGE 0x0UL
131         __le32 event_data2;
132         u8 opaque_v;
133         #define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_V               0x1UL
134         #define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_OPAQUE_MASK    0xfeUL
135         #define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_OPAQUE_SFT     1
136         u8 timestamp_lo;
137         __le16 timestamp_hi;
138         __le32 event_data1;
139         #define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_LINK_CHANGE 0x1UL
140         #define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_LINK_CHANGE_DOWN (0x0UL << 0)
141         #define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_LINK_CHANGE_UP (0x1UL << 0)
142         #define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_LINK_CHANGE_LAST    ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_LINK_CHANGE_UP
143         #define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_PORT_MASK 0xeUL
144         #define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_PORT_SFT 1
145         #define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_PORT_ID_MASK 0xffff0UL
146         #define ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_PORT_ID_SFT 4
147 };
148
149 /* HWRM Asynchronous Event Completion Record for link MTU change (16 bytes) */
150 struct hwrm_async_event_cmpl_link_mtu_change {
151         __le16 type;
152         #define ASYNC_EVENT_CMPL_LINK_MTU_CHANGE_TYPE_MASK          0x3fUL
153         #define ASYNC_EVENT_CMPL_LINK_MTU_CHANGE_TYPE_SFT           0
154         #define ASYNC_EVENT_CMPL_LINK_MTU_CHANGE_TYPE_HWRM_ASYNC_EVENT 0x2eUL
155         __le16 event_id;
156         #define ASYNC_EVENT_CMPL_LINK_MTU_CHANGE_EVENT_ID_LINK_MTU_CHANGE 0x1UL
157         __le32 event_data2;
158         u8 opaque_v;
159         #define ASYNC_EVENT_CMPL_LINK_MTU_CHANGE_V                  0x1UL
160         #define ASYNC_EVENT_CMPL_LINK_MTU_CHANGE_OPAQUE_MASK       0xfeUL
161         #define ASYNC_EVENT_CMPL_LINK_MTU_CHANGE_OPAQUE_SFT         1
162         u8 timestamp_lo;
163         __le16 timestamp_hi;
164         __le32 event_data1;
165         #define ASYNC_EVENT_CMPL_LINK_MTU_CHANGE_EVENT_DATA1_NEW_MTU_MASK 0xffffUL
166         #define ASYNC_EVENT_CMPL_LINK_MTU_CHANGE_EVENT_DATA1_NEW_MTU_SFT 0
167 };
168
169 /* HWRM Asynchronous Event Completion Record for link speed change (16 bytes) */
170 struct hwrm_async_event_cmpl_link_speed_change {
171         __le16 type;
172         #define ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_TYPE_MASK       0x3fUL
173         #define ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_TYPE_SFT         0
174         #define ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_TYPE_HWRM_ASYNC_EVENT 0x2eUL
175         __le16 event_id;
176         #define ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_ID_LINK_SPEED_CHANGE 0x2UL
177         __le32 event_data2;
178         u8 opaque_v;
179         #define ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_V                0x1UL
180         #define ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_OPAQUE_MASK     0xfeUL
181         #define ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_OPAQUE_SFT      1
182         u8 timestamp_lo;
183         __le16 timestamp_hi;
184         __le32 event_data1;
185         #define ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_FORCE 0x1UL
186         #define ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_MASK 0xfffeUL
187         #define ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_SFT 1
188         #define ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_100MB (0x1UL << 1)
189         #define ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_1GB (0xaUL << 1)
190         #define ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_2GB (0x14UL << 1)
191         #define ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_2_5GB (0x19UL << 1)
192         #define ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_10GB (0x64UL << 1)
193         #define ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_20GB (0xc8UL << 1)
194         #define ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_25GB (0xfaUL << 1)
195         #define ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_40GB (0x190UL << 1)
196         #define ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_50GB (0x1f4UL << 1)
197         #define ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_100GB (0x3e8UL << 1)
198         #define ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_LAST    ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_100GB
199         #define ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_PORT_ID_MASK 0xffff0000UL
200         #define ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_PORT_ID_SFT 16
201 };
202
203 /* HWRM Asynchronous Event Completion Record for DCB Config change (16 bytes) */
204 struct hwrm_async_event_cmpl_dcb_config_change {
205         __le16 type;
206         #define ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_TYPE_MASK       0x3fUL
207         #define ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_TYPE_SFT         0
208         #define ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_TYPE_HWRM_ASYNC_EVENT 0x2eUL
209         __le16 event_id;
210         #define ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_EVENT_ID_DCB_CONFIG_CHANGE 0x3UL
211         __le32 event_data2;
212         #define ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_EVENT_DATA2_ETS 0x1UL
213         #define ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_EVENT_DATA2_PFC 0x2UL
214         #define ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_EVENT_DATA2_APP 0x4UL
215         u8 opaque_v;
216         #define ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_V                0x1UL
217         #define ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_OPAQUE_MASK     0xfeUL
218         #define ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_OPAQUE_SFT      1
219         u8 timestamp_lo;
220         __le16 timestamp_hi;
221         __le32 event_data1;
222         #define ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_EVENT_DATA1_PORT_ID_MASK 0xffffUL
223         #define ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_EVENT_DATA1_PORT_ID_SFT 0
224         #define ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_EVENT_DATA1_RECOMMEND_ROCE_PRIORITY_MASK 0xff0000UL
225         #define ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_EVENT_DATA1_RECOMMEND_ROCE_PRIORITY_SFT 16
226         #define ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_EVENT_DATA1_RECOMMEND_ROCE_PRIORITY_NONE (0xffUL << 16)
227         #define ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_EVENT_DATA1_RECOMMEND_ROCE_PRIORITY_LAST    ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_EVENT_DATA1_RECOMMEND_ROCE_PRIORITY_NONE
228         #define ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_EVENT_DATA1_RECOMMEND_L2_PRIORITY_MASK 0xff000000UL
229         #define ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_EVENT_DATA1_RECOMMEND_L2_PRIORITY_SFT 24
230         #define ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_EVENT_DATA1_RECOMMEND_L2_PRIORITY_NONE (0xffUL << 24)
231         #define ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_EVENT_DATA1_RECOMMEND_L2_PRIORITY_LAST    ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_EVENT_DATA1_RECOMMEND_L2_PRIORITY_NONE
232 };
233
234 /* HWRM Asynchronous Event Completion Record for port connection not allowed (16 bytes) */
235 struct hwrm_async_event_cmpl_port_conn_not_allowed {
236         __le16 type;
237         #define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_TYPE_MASK   0x3fUL
238         #define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_TYPE_SFT    0
239         #define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_TYPE_HWRM_ASYNC_EVENT 0x2eUL
240         __le16 event_id;
241         #define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_ID_PORT_CONN_NOT_ALLOWED 0x4UL
242         __le32 event_data2;
243         u8 opaque_v;
244         #define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_V            0x1UL
245         #define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_OPAQUE_MASK 0xfeUL
246         #define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_OPAQUE_SFT  1
247         u8 timestamp_lo;
248         __le16 timestamp_hi;
249         __le32 event_data1;
250         #define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_DATA1_PORT_ID_MASK 0xffffUL
251         #define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_DATA1_PORT_ID_SFT 0
252         #define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_DATA1_ENFORCEMENT_POLICY_MASK 0xff0000UL
253         #define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_DATA1_ENFORCEMENT_POLICY_SFT 16
254         #define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_DATA1_ENFORCEMENT_POLICY_NONE (0x0UL << 16)
255         #define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_DATA1_ENFORCEMENT_POLICY_DISABLETX (0x1UL << 16)
256         #define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_DATA1_ENFORCEMENT_POLICY_WARNINGMSG (0x2UL << 16)
257         #define ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_DATA1_ENFORCEMENT_POLICY_PWRDOWN (0x3UL << 16)
258         #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
259 };
260
261 /* HWRM Asynchronous Event Completion Record for link speed config not allowed (16 bytes) */
262 struct hwrm_async_event_cmpl_link_speed_cfg_not_allowed {
263         __le16 type;
264         #define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_NOT_ALLOWED_TYPE_MASK 0x3fUL
265         #define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_NOT_ALLOWED_TYPE_SFT 0
266         #define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_NOT_ALLOWED_TYPE_HWRM_ASYNC_EVENT 0x2eUL
267         __le16 event_id;
268         #define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_NOT_ALLOWED_EVENT_ID_LINK_SPEED_CFG_NOT_ALLOWED 0x5UL
269         __le32 event_data2;
270         u8 opaque_v;
271         #define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_NOT_ALLOWED_V      0x1UL
272         #define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_NOT_ALLOWED_OPAQUE_MASK 0xfeUL
273         #define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_NOT_ALLOWED_OPAQUE_SFT 1
274         u8 timestamp_lo;
275         __le16 timestamp_hi;
276         __le32 event_data1;
277         #define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_NOT_ALLOWED_EVENT_DATA1_PORT_ID_MASK 0xffffUL
278         #define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_NOT_ALLOWED_EVENT_DATA1_PORT_ID_SFT 0
279 };
280
281 /* HWRM Asynchronous Event Completion Record for link speed configuration change (16 bytes) */
282 struct hwrm_async_event_cmpl_link_speed_cfg_change {
283         __le16 type;
284         #define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_TYPE_MASK   0x3fUL
285         #define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_TYPE_SFT    0
286         #define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_TYPE_HWRM_ASYNC_EVENT 0x2eUL
287         __le16 event_id;
288         #define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_EVENT_ID_LINK_SPEED_CFG_CHANGE 0x6UL
289         __le32 event_data2;
290         u8 opaque_v;
291         #define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_V            0x1UL
292         #define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_OPAQUE_MASK 0xfeUL
293         #define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_OPAQUE_SFT  1
294         u8 timestamp_lo;
295         __le16 timestamp_hi;
296         __le32 event_data1;
297         #define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_EVENT_DATA1_PORT_ID_MASK 0xffffUL
298         #define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_EVENT_DATA1_PORT_ID_SFT 0
299         #define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_EVENT_DATA1_SUPPORTED_LINK_SPEEDS_CHANGE 0x10000UL
300         #define ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_EVENT_DATA1_ILLEGAL_LINK_SPEED_CFG 0x20000UL
301 };
302
303 /* HWRM Asynchronous Event Completion Record for Function Driver Unload (16 bytes) */
304 struct hwrm_async_event_cmpl_func_drvr_unload {
305         __le16 type;
306         #define ASYNC_EVENT_CMPL_FUNC_DRVR_UNLOAD_TYPE_MASK         0x3fUL
307         #define ASYNC_EVENT_CMPL_FUNC_DRVR_UNLOAD_TYPE_SFT          0
308         #define ASYNC_EVENT_CMPL_FUNC_DRVR_UNLOAD_TYPE_HWRM_ASYNC_EVENT 0x2eUL
309         __le16 event_id;
310         #define ASYNC_EVENT_CMPL_FUNC_DRVR_UNLOAD_EVENT_ID_FUNC_DRVR_UNLOAD 0x10UL
311         __le32 event_data2;
312         u8 opaque_v;
313         #define ASYNC_EVENT_CMPL_FUNC_DRVR_UNLOAD_V                 0x1UL
314         #define ASYNC_EVENT_CMPL_FUNC_DRVR_UNLOAD_OPAQUE_MASK      0xfeUL
315         #define ASYNC_EVENT_CMPL_FUNC_DRVR_UNLOAD_OPAQUE_SFT       1
316         u8 timestamp_lo;
317         __le16 timestamp_hi;
318         __le32 event_data1;
319         #define ASYNC_EVENT_CMPL_FUNC_DRVR_UNLOAD_EVENT_DATA1_FUNC_ID_MASK 0xffffUL
320         #define ASYNC_EVENT_CMPL_FUNC_DRVR_UNLOAD_EVENT_DATA1_FUNC_ID_SFT 0
321 };
322
323 /* HWRM Asynchronous Event Completion Record for Function Driver load (16 bytes) */
324 struct hwrm_async_event_cmpl_func_drvr_load {
325         __le16 type;
326         #define ASYNC_EVENT_CMPL_FUNC_DRVR_LOAD_TYPE_MASK           0x3fUL
327         #define ASYNC_EVENT_CMPL_FUNC_DRVR_LOAD_TYPE_SFT            0
328         #define ASYNC_EVENT_CMPL_FUNC_DRVR_LOAD_TYPE_HWRM_ASYNC_EVENT 0x2eUL
329         __le16 event_id;
330         #define ASYNC_EVENT_CMPL_FUNC_DRVR_LOAD_EVENT_ID_FUNC_DRVR_LOAD 0x11UL
331         __le32 event_data2;
332         u8 opaque_v;
333         #define ASYNC_EVENT_CMPL_FUNC_DRVR_LOAD_V                   0x1UL
334         #define ASYNC_EVENT_CMPL_FUNC_DRVR_LOAD_OPAQUE_MASK         0xfeUL
335         #define ASYNC_EVENT_CMPL_FUNC_DRVR_LOAD_OPAQUE_SFT          1
336         u8 timestamp_lo;
337         __le16 timestamp_hi;
338         __le32 event_data1;
339         #define ASYNC_EVENT_CMPL_FUNC_DRVR_LOAD_EVENT_DATA1_FUNC_ID_MASK 0xffffUL
340         #define ASYNC_EVENT_CMPL_FUNC_DRVR_LOAD_EVENT_DATA1_FUNC_ID_SFT 0
341 };
342
343 /* HWRM Asynchronous Event Completion Record to indicate completion of FLR related processing (16 bytes) */
344 struct hwrm_async_event_cmpl_func_flr_proc_cmplt {
345         __le16 type;
346         #define ASYNC_EVENT_CMPL_FUNC_FLR_PROC_CMPLT_TYPE_MASK     0x3fUL
347         #define ASYNC_EVENT_CMPL_FUNC_FLR_PROC_CMPLT_TYPE_SFT      0
348         #define ASYNC_EVENT_CMPL_FUNC_FLR_PROC_CMPLT_TYPE_HWRM_ASYNC_EVENT 0x2eUL
349         __le16 event_id;
350         #define ASYNC_EVENT_CMPL_FUNC_FLR_PROC_CMPLT_EVENT_ID_FUNC_FLR_PROC_CMPLT 0x12UL
351         __le32 event_data2;
352         u8 opaque_v;
353         #define ASYNC_EVENT_CMPL_FUNC_FLR_PROC_CMPLT_V              0x1UL
354         #define ASYNC_EVENT_CMPL_FUNC_FLR_PROC_CMPLT_OPAQUE_MASK   0xfeUL
355         #define ASYNC_EVENT_CMPL_FUNC_FLR_PROC_CMPLT_OPAQUE_SFT    1
356         u8 timestamp_lo;
357         __le16 timestamp_hi;
358         __le32 event_data1;
359         #define ASYNC_EVENT_CMPL_FUNC_FLR_PROC_CMPLT_EVENT_DATA1_FUNC_ID_MASK 0xffffUL
360         #define ASYNC_EVENT_CMPL_FUNC_FLR_PROC_CMPLT_EVENT_DATA1_FUNC_ID_SFT 0
361 };
362
363 /* HWRM Asynchronous Event Completion Record for PF Driver Unload (16 bytes) */
364 struct hwrm_async_event_cmpl_pf_drvr_unload {
365         __le16 type;
366         #define ASYNC_EVENT_CMPL_PF_DRVR_UNLOAD_TYPE_MASK           0x3fUL
367         #define ASYNC_EVENT_CMPL_PF_DRVR_UNLOAD_TYPE_SFT            0
368         #define ASYNC_EVENT_CMPL_PF_DRVR_UNLOAD_TYPE_HWRM_ASYNC_EVENT 0x2eUL
369         __le16 event_id;
370         #define ASYNC_EVENT_CMPL_PF_DRVR_UNLOAD_EVENT_ID_PF_DRVR_UNLOAD 0x20UL
371         __le32 event_data2;
372         u8 opaque_v;
373         #define ASYNC_EVENT_CMPL_PF_DRVR_UNLOAD_V                   0x1UL
374         #define ASYNC_EVENT_CMPL_PF_DRVR_UNLOAD_OPAQUE_MASK         0xfeUL
375         #define ASYNC_EVENT_CMPL_PF_DRVR_UNLOAD_OPAQUE_SFT          1
376         u8 timestamp_lo;
377         __le16 timestamp_hi;
378         __le32 event_data1;
379         #define ASYNC_EVENT_CMPL_PF_DRVR_UNLOAD_EVENT_DATA1_FUNC_ID_MASK 0xffffUL
380         #define ASYNC_EVENT_CMPL_PF_DRVR_UNLOAD_EVENT_DATA1_FUNC_ID_SFT 0
381         #define ASYNC_EVENT_CMPL_PF_DRVR_UNLOAD_EVENT_DATA1_PORT_MASK 0x70000UL
382         #define ASYNC_EVENT_CMPL_PF_DRVR_UNLOAD_EVENT_DATA1_PORT_SFT 16
383 };
384
385 /* HWRM Asynchronous Event Completion Record for PF Driver load (16 bytes) */
386 struct hwrm_async_event_cmpl_pf_drvr_load {
387         __le16 type;
388         #define ASYNC_EVENT_CMPL_PF_DRVR_LOAD_TYPE_MASK     0x3fUL
389         #define ASYNC_EVENT_CMPL_PF_DRVR_LOAD_TYPE_SFT              0
390         #define ASYNC_EVENT_CMPL_PF_DRVR_LOAD_TYPE_HWRM_ASYNC_EVENT 0x2eUL
391         __le16 event_id;
392         #define ASYNC_EVENT_CMPL_PF_DRVR_LOAD_EVENT_ID_PF_DRVR_LOAD 0x21UL
393         __le32 event_data2;
394         u8 opaque_v;
395         #define ASYNC_EVENT_CMPL_PF_DRVR_LOAD_V             0x1UL
396         #define ASYNC_EVENT_CMPL_PF_DRVR_LOAD_OPAQUE_MASK           0xfeUL
397         #define ASYNC_EVENT_CMPL_PF_DRVR_LOAD_OPAQUE_SFT            1
398         u8 timestamp_lo;
399         __le16 timestamp_hi;
400         __le32 event_data1;
401         #define ASYNC_EVENT_CMPL_PF_DRVR_LOAD_EVENT_DATA1_FUNC_ID_MASK 0xffffUL
402         #define ASYNC_EVENT_CMPL_PF_DRVR_LOAD_EVENT_DATA1_FUNC_ID_SFT 0
403         #define ASYNC_EVENT_CMPL_PF_DRVR_LOAD_EVENT_DATA1_PORT_MASK 0x70000UL
404         #define ASYNC_EVENT_CMPL_PF_DRVR_LOAD_EVENT_DATA1_PORT_SFT 16
405 };
406
407 /* HWRM Asynchronous Event Completion Record for VF FLR (16 bytes) */
408 struct hwrm_async_event_cmpl_vf_flr {
409         __le16 type;
410         #define ASYNC_EVENT_CMPL_VF_FLR_TYPE_MASK                   0x3fUL
411         #define ASYNC_EVENT_CMPL_VF_FLR_TYPE_SFT                    0
412         #define ASYNC_EVENT_CMPL_VF_FLR_TYPE_HWRM_ASYNC_EVENT     0x2eUL
413         __le16 event_id;
414         #define ASYNC_EVENT_CMPL_VF_FLR_EVENT_ID_VF_FLR    0x30UL
415         __le32 event_data2;
416         u8 opaque_v;
417         #define ASYNC_EVENT_CMPL_VF_FLR_V                           0x1UL
418         #define ASYNC_EVENT_CMPL_VF_FLR_OPAQUE_MASK                 0xfeUL
419         #define ASYNC_EVENT_CMPL_VF_FLR_OPAQUE_SFT                  1
420         u8 timestamp_lo;
421         __le16 timestamp_hi;
422         __le32 event_data1;
423         #define ASYNC_EVENT_CMPL_VF_FLR_EVENT_DATA1_VF_ID_MASK     0xffffUL
424         #define ASYNC_EVENT_CMPL_VF_FLR_EVENT_DATA1_VF_ID_SFT      0
425 };
426
427 /* HWRM Asynchronous Event Completion Record for VF MAC Addr change (16 bytes) */
428 struct hwrm_async_event_cmpl_vf_mac_addr_change {
429         __le16 type;
430         #define ASYNC_EVENT_CMPL_VF_MAC_ADDR_CHANGE_TYPE_MASK      0x3fUL
431         #define ASYNC_EVENT_CMPL_VF_MAC_ADDR_CHANGE_TYPE_SFT       0
432         #define ASYNC_EVENT_CMPL_VF_MAC_ADDR_CHANGE_TYPE_HWRM_ASYNC_EVENT 0x2eUL
433         __le16 event_id;
434         #define ASYNC_EVENT_CMPL_VF_MAC_ADDR_CHANGE_EVENT_ID_VF_MAC_ADDR_CHANGE 0x31UL
435         __le32 event_data2;
436         u8 opaque_v;
437         #define ASYNC_EVENT_CMPL_VF_MAC_ADDR_CHANGE_V               0x1UL
438         #define ASYNC_EVENT_CMPL_VF_MAC_ADDR_CHANGE_OPAQUE_MASK    0xfeUL
439         #define ASYNC_EVENT_CMPL_VF_MAC_ADDR_CHANGE_OPAQUE_SFT     1
440         u8 timestamp_lo;
441         __le16 timestamp_hi;
442         __le32 event_data1;
443         #define ASYNC_EVENT_CMPL_VF_MAC_ADDR_CHANGE_EVENT_DATA1_VF_ID_MASK 0xffffUL
444         #define ASYNC_EVENT_CMPL_VF_MAC_ADDR_CHANGE_EVENT_DATA1_VF_ID_SFT 0
445 };
446
447 /* HWRM Asynchronous Event Completion Record for PF-VF communication status change (16 bytes) */
448 struct hwrm_async_event_cmpl_pf_vf_comm_status_change {
449         __le16 type;
450         #define ASYNC_EVENT_CMPL_PF_VF_COMM_STATUS_CHANGE_TYPE_MASK 0x3fUL
451         #define ASYNC_EVENT_CMPL_PF_VF_COMM_STATUS_CHANGE_TYPE_SFT 0
452         #define ASYNC_EVENT_CMPL_PF_VF_COMM_STATUS_CHANGE_TYPE_HWRM_ASYNC_EVENT 0x2eUL
453         __le16 event_id;
454         #define ASYNC_EVENT_CMPL_PF_VF_COMM_STATUS_CHANGE_EVENT_ID_PF_VF_COMM_STATUS_CHANGE 0x32UL
455         __le32 event_data2;
456         u8 opaque_v;
457         #define ASYNC_EVENT_CMPL_PF_VF_COMM_STATUS_CHANGE_V         0x1UL
458         #define ASYNC_EVENT_CMPL_PF_VF_COMM_STATUS_CHANGE_OPAQUE_MASK 0xfeUL
459         #define ASYNC_EVENT_CMPL_PF_VF_COMM_STATUS_CHANGE_OPAQUE_SFT 1
460         u8 timestamp_lo;
461         __le16 timestamp_hi;
462         __le32 event_data1;
463         #define ASYNC_EVENT_CMPL_PF_VF_COMM_STATUS_CHANGE_EVENT_DATA1_COMM_ESTABLISHED 0x1UL
464 };
465
466 /* HWRM Asynchronous Event Completion Record for VF configuration change (16 bytes) */
467 struct hwrm_async_event_cmpl_vf_cfg_change {
468         __le16 type;
469         #define ASYNC_EVENT_CMPL_VF_CFG_CHANGE_TYPE_MASK            0x3fUL
470         #define ASYNC_EVENT_CMPL_VF_CFG_CHANGE_TYPE_SFT     0
471         #define ASYNC_EVENT_CMPL_VF_CFG_CHANGE_TYPE_HWRM_ASYNC_EVENT 0x2eUL
472         __le16 event_id;
473         #define ASYNC_EVENT_CMPL_VF_CFG_CHANGE_EVENT_ID_VF_CFG_CHANGE 0x33UL
474         __le32 event_data2;
475         u8 opaque_v;
476         #define ASYNC_EVENT_CMPL_VF_CFG_CHANGE_V                    0x1UL
477         #define ASYNC_EVENT_CMPL_VF_CFG_CHANGE_OPAQUE_MASK          0xfeUL
478         #define ASYNC_EVENT_CMPL_VF_CFG_CHANGE_OPAQUE_SFT           1
479         u8 timestamp_lo;
480         __le16 timestamp_hi;
481         __le32 event_data1;
482         #define ASYNC_EVENT_CMPL_VF_CFG_CHANGE_EVENT_DATA1_MTU_CHANGE 0x1UL
483         #define ASYNC_EVENT_CMPL_VF_CFG_CHANGE_EVENT_DATA1_MRU_CHANGE 0x2UL
484         #define ASYNC_EVENT_CMPL_VF_CFG_CHANGE_EVENT_DATA1_DFLT_MAC_ADDR_CHANGE 0x4UL
485         #define ASYNC_EVENT_CMPL_VF_CFG_CHANGE_EVENT_DATA1_DFLT_VLAN_CHANGE 0x8UL
486 };
487
488 /* HWRM Asynchronous Event Completion Record for HWRM Error (16 bytes) */
489 struct hwrm_async_event_cmpl_hwrm_error {
490         __le16 type;
491         #define ASYNC_EVENT_CMPL_HWRM_ERROR_TYPE_MASK               0x3fUL
492         #define ASYNC_EVENT_CMPL_HWRM_ERROR_TYPE_SFT                0
493         #define ASYNC_EVENT_CMPL_HWRM_ERROR_TYPE_HWRM_ASYNC_EVENT 0x2eUL
494         __le16 event_id;
495         #define ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_ID_HWRM_ERROR   0xffUL
496         __le32 event_data2;
497         #define ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_DATA2_SEVERITY_MASK 0xffUL
498         #define ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_DATA2_SEVERITY_SFT 0
499         #define ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_DATA2_SEVERITY_WARNING 0x0UL
500         #define ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_DATA2_SEVERITY_NONFATAL 0x1UL
501         #define ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_DATA2_SEVERITY_FATAL 0x2UL
502         #define ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_DATA2_SEVERITY_LAST    ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_DATA2_SEVERITY_FATAL
503         u8 opaque_v;
504         #define ASYNC_EVENT_CMPL_HWRM_ERROR_V                       0x1UL
505         #define ASYNC_EVENT_CMPL_HWRM_ERROR_OPAQUE_MASK     0xfeUL
506         #define ASYNC_EVENT_CMPL_HWRM_ERROR_OPAQUE_SFT              1
507         u8 timestamp_lo;
508         __le16 timestamp_hi;
509         __le32 event_data1;
510         #define ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_DATA1_TIMESTAMP  0x1UL
511 };
512
513 /* hwrm_ver_get */
514 /* Input (24 bytes) */
515 struct hwrm_ver_get_input {
516         __le16 req_type;
517         __le16 cmpl_ring;
518         __le16 seq_id;
519         __le16 target_id;
520         __le64 resp_addr;
521         u8 hwrm_intf_maj;
522         u8 hwrm_intf_min;
523         u8 hwrm_intf_upd;
524         u8 unused_0[5];
525 };
526
527 /* Output (128 bytes) */
528 struct hwrm_ver_get_output {
529         __le16 error_code;
530         __le16 req_type;
531         __le16 seq_id;
532         __le16 resp_len;
533         u8 hwrm_intf_maj;
534         u8 hwrm_intf_min;
535         u8 hwrm_intf_upd;
536         u8 hwrm_intf_rsvd;
537         u8 hwrm_fw_maj;
538         u8 hwrm_fw_min;
539         u8 hwrm_fw_bld;
540         u8 hwrm_fw_rsvd;
541         u8 mgmt_fw_maj;
542         u8 mgmt_fw_min;
543         u8 mgmt_fw_bld;
544         u8 mgmt_fw_rsvd;
545         u8 netctrl_fw_maj;
546         u8 netctrl_fw_min;
547         u8 netctrl_fw_bld;
548         u8 netctrl_fw_rsvd;
549         __le32 dev_caps_cfg;
550         #define VER_GET_RESP_DEV_CAPS_CFG_SECURE_FW_UPD_SUPPORTED  0x1UL
551         #define VER_GET_RESP_DEV_CAPS_CFG_FW_DCBX_AGENT_SUPPORTED  0x2UL
552         u8 roce_fw_maj;
553         u8 roce_fw_min;
554         u8 roce_fw_bld;
555         u8 roce_fw_rsvd;
556         char hwrm_fw_name[16];
557         char mgmt_fw_name[16];
558         char netctrl_fw_name[16];
559         __le32 reserved2[4];
560         char roce_fw_name[16];
561         __le16 chip_num;
562         u8 chip_rev;
563         u8 chip_metal;
564         u8 chip_bond_id;
565         u8 chip_platform_type;
566         #define VER_GET_RESP_CHIP_PLATFORM_TYPE_ASIC               0x0UL
567         #define VER_GET_RESP_CHIP_PLATFORM_TYPE_FPGA               0x1UL
568         #define VER_GET_RESP_CHIP_PLATFORM_TYPE_PALLADIUM          0x2UL
569         __le16 max_req_win_len;
570         __le16 max_resp_len;
571         __le16 def_req_timeout;
572         u8 unused_0;
573         u8 unused_1;
574         u8 unused_2;
575         u8 valid;
576 };
577
578 /* hwrm_func_reset */
579 /* Input (24 bytes) */
580 struct hwrm_func_reset_input {
581         __le16 req_type;
582         __le16 cmpl_ring;
583         __le16 seq_id;
584         __le16 target_id;
585         __le64 resp_addr;
586         __le32 enables;
587         #define FUNC_RESET_REQ_ENABLES_VF_ID_VALID                  0x1UL
588         __le16 vf_id;
589         u8 func_reset_level;
590         #define FUNC_RESET_REQ_FUNC_RESET_LEVEL_RESETALL           0x0UL
591         #define FUNC_RESET_REQ_FUNC_RESET_LEVEL_RESETME    0x1UL
592         #define FUNC_RESET_REQ_FUNC_RESET_LEVEL_RESETCHILDREN     0x2UL
593         #define FUNC_RESET_REQ_FUNC_RESET_LEVEL_RESETVF    0x3UL
594         u8 unused_0;
595 };
596
597 /* Output (16 bytes) */
598 struct hwrm_func_reset_output {
599         __le16 error_code;
600         __le16 req_type;
601         __le16 seq_id;
602         __le16 resp_len;
603         __le32 unused_0;
604         u8 unused_1;
605         u8 unused_2;
606         u8 unused_3;
607         u8 valid;
608 };
609
610 /* hwrm_func_getfid */
611 /* Input (24 bytes) */
612 struct hwrm_func_getfid_input {
613         __le16 req_type;
614         __le16 cmpl_ring;
615         __le16 seq_id;
616         __le16 target_id;
617         __le64 resp_addr;
618         __le32 enables;
619         #define FUNC_GETFID_REQ_ENABLES_PCI_ID                      0x1UL
620         __le16 pci_id;
621         __le16 unused_0;
622 };
623
624 /* Output (16 bytes) */
625 struct hwrm_func_getfid_output {
626         __le16 error_code;
627         __le16 req_type;
628         __le16 seq_id;
629         __le16 resp_len;
630         __le16 fid;
631         u8 unused_0;
632         u8 unused_1;
633         u8 unused_2;
634         u8 unused_3;
635         u8 unused_4;
636         u8 valid;
637 };
638
639 /* hwrm_func_vf_alloc */
640 /* Input (24 bytes) */
641 struct hwrm_func_vf_alloc_input {
642         __le16 req_type;
643         __le16 cmpl_ring;
644         __le16 seq_id;
645         __le16 target_id;
646         __le64 resp_addr;
647         __le32 enables;
648         #define FUNC_VF_ALLOC_REQ_ENABLES_FIRST_VF_ID               0x1UL
649         __le16 first_vf_id;
650         __le16 num_vfs;
651 };
652
653 /* Output (16 bytes) */
654 struct hwrm_func_vf_alloc_output {
655         __le16 error_code;
656         __le16 req_type;
657         __le16 seq_id;
658         __le16 resp_len;
659         __le16 first_vf_id;
660         u8 unused_0;
661         u8 unused_1;
662         u8 unused_2;
663         u8 unused_3;
664         u8 unused_4;
665         u8 valid;
666 };
667
668 /* hwrm_func_vf_free */
669 /* Input (24 bytes) */
670 struct hwrm_func_vf_free_input {
671         __le16 req_type;
672         __le16 cmpl_ring;
673         __le16 seq_id;
674         __le16 target_id;
675         __le64 resp_addr;
676         __le32 enables;
677         #define FUNC_VF_FREE_REQ_ENABLES_FIRST_VF_ID                0x1UL
678         __le16 first_vf_id;
679         __le16 num_vfs;
680 };
681
682 /* Output (16 bytes) */
683 struct hwrm_func_vf_free_output {
684         __le16 error_code;
685         __le16 req_type;
686         __le16 seq_id;
687         __le16 resp_len;
688         __le32 unused_0;
689         u8 unused_1;
690         u8 unused_2;
691         u8 unused_3;
692         u8 valid;
693 };
694
695 /* hwrm_func_vf_cfg */
696 /* Input (32 bytes) */
697 struct hwrm_func_vf_cfg_input {
698         __le16 req_type;
699         __le16 cmpl_ring;
700         __le16 seq_id;
701         __le16 target_id;
702         __le64 resp_addr;
703         __le32 enables;
704         #define FUNC_VF_CFG_REQ_ENABLES_MTU                         0x1UL
705         #define FUNC_VF_CFG_REQ_ENABLES_GUEST_VLAN                  0x2UL
706         #define FUNC_VF_CFG_REQ_ENABLES_ASYNC_EVENT_CR              0x4UL
707         #define FUNC_VF_CFG_REQ_ENABLES_DFLT_MAC_ADDR               0x8UL
708         __le16 mtu;
709         __le16 guest_vlan;
710         __le16 async_event_cr;
711         u8 dflt_mac_addr[6];
712 };
713
714 /* Output (16 bytes) */
715 struct hwrm_func_vf_cfg_output {
716         __le16 error_code;
717         __le16 req_type;
718         __le16 seq_id;
719         __le16 resp_len;
720         __le32 unused_0;
721         u8 unused_1;
722         u8 unused_2;
723         u8 unused_3;
724         u8 valid;
725 };
726
727 /* hwrm_func_qcaps */
728 /* Input (24 bytes) */
729 struct hwrm_func_qcaps_input {
730         __le16 req_type;
731         __le16 cmpl_ring;
732         __le16 seq_id;
733         __le16 target_id;
734         __le64 resp_addr;
735         __le16 fid;
736         __le16 unused_0[3];
737 };
738
739 /* Output (80 bytes) */
740 struct hwrm_func_qcaps_output {
741         __le16 error_code;
742         __le16 req_type;
743         __le16 seq_id;
744         __le16 resp_len;
745         __le16 fid;
746         __le16 port_id;
747         __le32 flags;
748         #define FUNC_QCAPS_RESP_FLAGS_PUSH_MODE_SUPPORTED           0x1UL
749         #define FUNC_QCAPS_RESP_FLAGS_GLOBAL_MSIX_AUTOMASKING      0x2UL
750         #define FUNC_QCAPS_RESP_FLAGS_PTP_SUPPORTED                 0x4UL
751         #define FUNC_QCAPS_RESP_FLAGS_ROCE_V1_SUPPORTED     0x8UL
752         #define FUNC_QCAPS_RESP_FLAGS_ROCE_V2_SUPPORTED     0x10UL
753         #define FUNC_QCAPS_RESP_FLAGS_WOL_MAGICPKT_SUPPORTED       0x20UL
754         #define FUNC_QCAPS_RESP_FLAGS_WOL_BMP_SUPPORTED     0x40UL
755         #define FUNC_QCAPS_RESP_FLAGS_TX_RING_RL_SUPPORTED          0x80UL
756         #define FUNC_QCAPS_RESP_FLAGS_TX_BW_CFG_SUPPORTED           0x100UL
757         #define FUNC_QCAPS_RESP_FLAGS_VF_TX_RING_RL_SUPPORTED      0x200UL
758         #define FUNC_QCAPS_RESP_FLAGS_VF_BW_CFG_SUPPORTED           0x400UL
759         #define FUNC_QCAPS_RESP_FLAGS_STD_TX_RING_MODE_SUPPORTED   0x800UL
760         u8 mac_address[6];
761         __le16 max_rsscos_ctx;
762         __le16 max_cmpl_rings;
763         __le16 max_tx_rings;
764         __le16 max_rx_rings;
765         __le16 max_l2_ctxs;
766         __le16 max_vnics;
767         __le16 first_vf_id;
768         __le16 max_vfs;
769         __le16 max_stat_ctx;
770         __le32 max_encap_records;
771         __le32 max_decap_records;
772         __le32 max_tx_em_flows;
773         __le32 max_tx_wm_flows;
774         __le32 max_rx_em_flows;
775         __le32 max_rx_wm_flows;
776         __le32 max_mcast_filters;
777         __le32 max_flow_id;
778         __le32 max_hw_ring_grps;
779         __le16 max_sp_tx_rings;
780         u8 unused_0;
781         u8 valid;
782 };
783
784 /* hwrm_func_qcfg */
785 /* Input (24 bytes) */
786 struct hwrm_func_qcfg_input {
787         __le16 req_type;
788         __le16 cmpl_ring;
789         __le16 seq_id;
790         __le16 target_id;
791         __le64 resp_addr;
792         __le16 fid;
793         __le16 unused_0[3];
794 };
795
796 /* Output (72 bytes) */
797 struct hwrm_func_qcfg_output {
798         __le16 error_code;
799         __le16 req_type;
800         __le16 seq_id;
801         __le16 resp_len;
802         __le16 fid;
803         __le16 port_id;
804         __le16 vlan;
805         __le16 flags;
806         #define FUNC_QCFG_RESP_FLAGS_OOB_WOL_MAGICPKT_ENABLED      0x1UL
807         #define FUNC_QCFG_RESP_FLAGS_OOB_WOL_BMP_ENABLED            0x2UL
808         #define FUNC_QCFG_RESP_FLAGS_FW_DCBX_AGENT_ENABLED          0x4UL
809         #define FUNC_QCFG_RESP_FLAGS_STD_TX_RING_MODE_ENABLED      0x8UL
810         u8 mac_address[6];
811         __le16 pci_id;
812         __le16 alloc_rsscos_ctx;
813         __le16 alloc_cmpl_rings;
814         __le16 alloc_tx_rings;
815         __le16 alloc_rx_rings;
816         __le16 alloc_l2_ctx;
817         __le16 alloc_vnics;
818         __le16 mtu;
819         __le16 mru;
820         __le16 stat_ctx_id;
821         u8 port_partition_type;
822         #define FUNC_QCFG_RESP_PORT_PARTITION_TYPE_SPF             0x0UL
823         #define FUNC_QCFG_RESP_PORT_PARTITION_TYPE_MPFS    0x1UL
824         #define FUNC_QCFG_RESP_PORT_PARTITION_TYPE_NPAR1_0         0x2UL
825         #define FUNC_QCFG_RESP_PORT_PARTITION_TYPE_NPAR1_5         0x3UL
826         #define FUNC_QCFG_RESP_PORT_PARTITION_TYPE_NPAR2_0         0x4UL
827         #define FUNC_QCFG_RESP_PORT_PARTITION_TYPE_UNKNOWN         0xffUL
828         u8 unused_0;
829         __le16 dflt_vnic_id;
830         u8 unused_1;
831         u8 unused_2;
832         __le32 min_bw;
833         #define FUNC_QCFG_RESP_MIN_BW_BW_VALUE_MASK                 0xfffffffUL
834         #define FUNC_QCFG_RESP_MIN_BW_BW_VALUE_SFT                  0
835         #define FUNC_QCFG_RESP_MIN_BW_RSVD                          0x10000000UL
836         #define FUNC_QCFG_RESP_MIN_BW_BW_VALUE_UNIT_MASK            0xe0000000UL
837         #define FUNC_QCFG_RESP_MIN_BW_BW_VALUE_UNIT_SFT     29
838         #define FUNC_QCFG_RESP_MIN_BW_BW_VALUE_UNIT_MBPS           (0x0UL << 29)
839         #define FUNC_QCFG_RESP_MIN_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
840         #define FUNC_QCFG_RESP_MIN_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
841         #define FUNC_QCFG_RESP_MIN_BW_BW_VALUE_UNIT_LAST    FUNC_QCFG_RESP_MIN_BW_BW_VALUE_UNIT_INVALID
842         __le32 max_bw;
843         #define FUNC_QCFG_RESP_MAX_BW_BW_VALUE_MASK                 0xfffffffUL
844         #define FUNC_QCFG_RESP_MAX_BW_BW_VALUE_SFT                  0
845         #define FUNC_QCFG_RESP_MAX_BW_RSVD                          0x10000000UL
846         #define FUNC_QCFG_RESP_MAX_BW_BW_VALUE_UNIT_MASK            0xe0000000UL
847         #define FUNC_QCFG_RESP_MAX_BW_BW_VALUE_UNIT_SFT     29
848         #define FUNC_QCFG_RESP_MAX_BW_BW_VALUE_UNIT_MBPS           (0x0UL << 29)
849         #define FUNC_QCFG_RESP_MAX_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
850         #define FUNC_QCFG_RESP_MAX_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
851         #define FUNC_QCFG_RESP_MAX_BW_BW_VALUE_UNIT_LAST    FUNC_QCFG_RESP_MAX_BW_BW_VALUE_UNIT_INVALID
852         u8 evb_mode;
853         #define FUNC_QCFG_RESP_EVB_MODE_NO_EVB                     0x0UL
854         #define FUNC_QCFG_RESP_EVB_MODE_VEB                        0x1UL
855         #define FUNC_QCFG_RESP_EVB_MODE_VEPA                       0x2UL
856         u8 unused_3;
857         __le16 alloc_vfs;
858         __le32 alloc_mcast_filters;
859         __le32 alloc_hw_ring_grps;
860         __le16 alloc_sp_tx_rings;
861         u8 unused_4;
862         u8 valid;
863 };
864
865 /* hwrm_func_cfg */
866 /* Input (88 bytes) */
867 struct hwrm_func_cfg_input {
868         __le16 req_type;
869         __le16 cmpl_ring;
870         __le16 seq_id;
871         __le16 target_id;
872         __le64 resp_addr;
873         __le16 fid;
874         u8 unused_0;
875         u8 unused_1;
876         __le32 flags;
877         #define FUNC_CFG_REQ_FLAGS_PROM_MODE                        0x1UL
878         #define FUNC_CFG_REQ_FLAGS_SRC_MAC_ADDR_CHECK               0x2UL
879         #define FUNC_CFG_REQ_FLAGS_SRC_IP_ADDR_CHECK                0x4UL
880         #define FUNC_CFG_REQ_FLAGS_VLAN_PRI_MATCH                   0x8UL
881         #define FUNC_CFG_REQ_FLAGS_DFLT_PRI_NOMATCH                 0x10UL
882         #define FUNC_CFG_REQ_FLAGS_DISABLE_PAUSE                    0x20UL
883         #define FUNC_CFG_REQ_FLAGS_DISABLE_STP                      0x40UL
884         #define FUNC_CFG_REQ_FLAGS_DISABLE_LLDP             0x80UL
885         #define FUNC_CFG_REQ_FLAGS_DISABLE_PTPV2                    0x100UL
886         #define FUNC_CFG_REQ_FLAGS_STD_TX_RING_MODE                 0x200UL
887         __le32 enables;
888         #define FUNC_CFG_REQ_ENABLES_MTU                            0x1UL
889         #define FUNC_CFG_REQ_ENABLES_MRU                            0x2UL
890         #define FUNC_CFG_REQ_ENABLES_NUM_RSSCOS_CTXS                0x4UL
891         #define FUNC_CFG_REQ_ENABLES_NUM_CMPL_RINGS                 0x8UL
892         #define FUNC_CFG_REQ_ENABLES_NUM_TX_RINGS                   0x10UL
893         #define FUNC_CFG_REQ_ENABLES_NUM_RX_RINGS                   0x20UL
894         #define FUNC_CFG_REQ_ENABLES_NUM_L2_CTXS                    0x40UL
895         #define FUNC_CFG_REQ_ENABLES_NUM_VNICS                      0x80UL
896         #define FUNC_CFG_REQ_ENABLES_NUM_STAT_CTXS                  0x100UL
897         #define FUNC_CFG_REQ_ENABLES_DFLT_MAC_ADDR                  0x200UL
898         #define FUNC_CFG_REQ_ENABLES_DFLT_VLAN                      0x400UL
899         #define FUNC_CFG_REQ_ENABLES_DFLT_IP_ADDR                   0x800UL
900         #define FUNC_CFG_REQ_ENABLES_MIN_BW                         0x1000UL
901         #define FUNC_CFG_REQ_ENABLES_MAX_BW                         0x2000UL
902         #define FUNC_CFG_REQ_ENABLES_ASYNC_EVENT_CR                 0x4000UL
903         #define FUNC_CFG_REQ_ENABLES_VLAN_ANTISPOOF_MODE            0x8000UL
904         #define FUNC_CFG_REQ_ENABLES_ALLOWED_VLAN_PRIS              0x10000UL
905         #define FUNC_CFG_REQ_ENABLES_EVB_MODE                       0x20000UL
906         #define FUNC_CFG_REQ_ENABLES_NUM_MCAST_FILTERS              0x40000UL
907         #define FUNC_CFG_REQ_ENABLES_NUM_HW_RING_GRPS               0x80000UL
908         __le16 mtu;
909         __le16 mru;
910         __le16 num_rsscos_ctxs;
911         __le16 num_cmpl_rings;
912         __le16 num_tx_rings;
913         __le16 num_rx_rings;
914         __le16 num_l2_ctxs;
915         __le16 num_vnics;
916         __le16 num_stat_ctxs;
917         __le16 num_hw_ring_grps;
918         u8 dflt_mac_addr[6];
919         __le16 dflt_vlan;
920         __be32 dflt_ip_addr[4];
921         __le32 min_bw;
922         #define FUNC_CFG_REQ_MIN_BW_BW_VALUE_MASK                   0xfffffffUL
923         #define FUNC_CFG_REQ_MIN_BW_BW_VALUE_SFT                    0
924         #define FUNC_CFG_REQ_MIN_BW_RSVD                            0x10000000UL
925         #define FUNC_CFG_REQ_MIN_BW_BW_VALUE_UNIT_MASK              0xe0000000UL
926         #define FUNC_CFG_REQ_MIN_BW_BW_VALUE_UNIT_SFT               29
927         #define FUNC_CFG_REQ_MIN_BW_BW_VALUE_UNIT_MBPS             (0x0UL << 29)
928         #define FUNC_CFG_REQ_MIN_BW_BW_VALUE_UNIT_PERCENT1_100    (0x1UL << 29)
929         #define FUNC_CFG_REQ_MIN_BW_BW_VALUE_UNIT_INVALID          (0x7UL << 29)
930         #define FUNC_CFG_REQ_MIN_BW_BW_VALUE_UNIT_LAST    FUNC_CFG_REQ_MIN_BW_BW_VALUE_UNIT_INVALID
931         __le32 max_bw;
932         #define FUNC_CFG_REQ_MAX_BW_BW_VALUE_MASK                   0xfffffffUL
933         #define FUNC_CFG_REQ_MAX_BW_BW_VALUE_SFT                    0
934         #define FUNC_CFG_REQ_MAX_BW_RSVD                            0x10000000UL
935         #define FUNC_CFG_REQ_MAX_BW_BW_VALUE_UNIT_MASK              0xe0000000UL
936         #define FUNC_CFG_REQ_MAX_BW_BW_VALUE_UNIT_SFT               29
937         #define FUNC_CFG_REQ_MAX_BW_BW_VALUE_UNIT_MBPS             (0x0UL << 29)
938         #define FUNC_CFG_REQ_MAX_BW_BW_VALUE_UNIT_PERCENT1_100    (0x1UL << 29)
939         #define FUNC_CFG_REQ_MAX_BW_BW_VALUE_UNIT_INVALID          (0x7UL << 29)
940         #define FUNC_CFG_REQ_MAX_BW_BW_VALUE_UNIT_LAST    FUNC_CFG_REQ_MAX_BW_BW_VALUE_UNIT_INVALID
941         __le16 async_event_cr;
942         u8 vlan_antispoof_mode;
943         #define FUNC_CFG_REQ_VLAN_ANTISPOOF_MODE_NOCHECK           0x0UL
944         #define FUNC_CFG_REQ_VLAN_ANTISPOOF_MODE_VALIDATE_VLAN    0x1UL
945         #define FUNC_CFG_REQ_VLAN_ANTISPOOF_MODE_INSERT_IF_VLANDNE 0x2UL
946         #define FUNC_CFG_REQ_VLAN_ANTISPOOF_MODE_INSERT_OR_OVERRIDE_VLAN 0x3UL
947         u8 allowed_vlan_pris;
948         u8 evb_mode;
949         #define FUNC_CFG_REQ_EVB_MODE_NO_EVB                       0x0UL
950         #define FUNC_CFG_REQ_EVB_MODE_VEB                          0x1UL
951         #define FUNC_CFG_REQ_EVB_MODE_VEPA                         0x2UL
952         u8 unused_2;
953         __le16 num_mcast_filters;
954 };
955
956 /* Output (16 bytes) */
957 struct hwrm_func_cfg_output {
958         __le16 error_code;
959         __le16 req_type;
960         __le16 seq_id;
961         __le16 resp_len;
962         __le32 unused_0;
963         u8 unused_1;
964         u8 unused_2;
965         u8 unused_3;
966         u8 valid;
967 };
968
969 /* hwrm_func_qstats */
970 /* Input (24 bytes) */
971 struct hwrm_func_qstats_input {
972         __le16 req_type;
973         __le16 cmpl_ring;
974         __le16 seq_id;
975         __le16 target_id;
976         __le64 resp_addr;
977         __le16 fid;
978         __le16 unused_0[3];
979 };
980
981 /* Output (176 bytes) */
982 struct hwrm_func_qstats_output {
983         __le16 error_code;
984         __le16 req_type;
985         __le16 seq_id;
986         __le16 resp_len;
987         __le64 tx_ucast_pkts;
988         __le64 tx_mcast_pkts;
989         __le64 tx_bcast_pkts;
990         __le64 tx_err_pkts;
991         __le64 tx_drop_pkts;
992         __le64 tx_ucast_bytes;
993         __le64 tx_mcast_bytes;
994         __le64 tx_bcast_bytes;
995         __le64 rx_ucast_pkts;
996         __le64 rx_mcast_pkts;
997         __le64 rx_bcast_pkts;
998         __le64 rx_err_pkts;
999         __le64 rx_drop_pkts;
1000         __le64 rx_ucast_bytes;
1001         __le64 rx_mcast_bytes;
1002         __le64 rx_bcast_bytes;
1003         __le64 rx_agg_pkts;
1004         __le64 rx_agg_bytes;
1005         __le64 rx_agg_events;
1006         __le64 rx_agg_aborts;
1007         __le32 unused_0;
1008         u8 unused_1;
1009         u8 unused_2;
1010         u8 unused_3;
1011         u8 valid;
1012 };
1013
1014 /* hwrm_func_clr_stats */
1015 /* Input (24 bytes) */
1016 struct hwrm_func_clr_stats_input {
1017         __le16 req_type;
1018         __le16 cmpl_ring;
1019         __le16 seq_id;
1020         __le16 target_id;
1021         __le64 resp_addr;
1022         __le16 fid;
1023         __le16 unused_0[3];
1024 };
1025
1026 /* Output (16 bytes) */
1027 struct hwrm_func_clr_stats_output {
1028         __le16 error_code;
1029         __le16 req_type;
1030         __le16 seq_id;
1031         __le16 resp_len;
1032         __le32 unused_0;
1033         u8 unused_1;
1034         u8 unused_2;
1035         u8 unused_3;
1036         u8 valid;
1037 };
1038
1039 /* hwrm_func_vf_resc_free */
1040 /* Input (24 bytes) */
1041 struct hwrm_func_vf_resc_free_input {
1042         __le16 req_type;
1043         __le16 cmpl_ring;
1044         __le16 seq_id;
1045         __le16 target_id;
1046         __le64 resp_addr;
1047         __le16 vf_id;
1048         __le16 unused_0[3];
1049 };
1050
1051 /* Output (16 bytes) */
1052 struct hwrm_func_vf_resc_free_output {
1053         __le16 error_code;
1054         __le16 req_type;
1055         __le16 seq_id;
1056         __le16 resp_len;
1057         __le32 unused_0;
1058         u8 unused_1;
1059         u8 unused_2;
1060         u8 unused_3;
1061         u8 valid;
1062 };
1063
1064 /* hwrm_func_vf_vnic_ids_query */
1065 /* Input (32 bytes) */
1066 struct hwrm_func_vf_vnic_ids_query_input {
1067         __le16 req_type;
1068         __le16 cmpl_ring;
1069         __le16 seq_id;
1070         __le16 target_id;
1071         __le64 resp_addr;
1072         __le16 vf_id;
1073         u8 unused_0;
1074         u8 unused_1;
1075         __le32 max_vnic_id_cnt;
1076         __le64 vnic_id_tbl_addr;
1077 };
1078
1079 /* Output (16 bytes) */
1080 struct hwrm_func_vf_vnic_ids_query_output {
1081         __le16 error_code;
1082         __le16 req_type;
1083         __le16 seq_id;
1084         __le16 resp_len;
1085         __le32 vnic_id_cnt;
1086         u8 unused_0;
1087         u8 unused_1;
1088         u8 unused_2;
1089         u8 valid;
1090 };
1091
1092 /* hwrm_func_drv_rgtr */
1093 /* Input (80 bytes) */
1094 struct hwrm_func_drv_rgtr_input {
1095         __le16 req_type;
1096         __le16 cmpl_ring;
1097         __le16 seq_id;
1098         __le16 target_id;
1099         __le64 resp_addr;
1100         __le32 flags;
1101         #define FUNC_DRV_RGTR_REQ_FLAGS_FWD_ALL_MODE                0x1UL
1102         #define FUNC_DRV_RGTR_REQ_FLAGS_FWD_NONE_MODE               0x2UL
1103         __le32 enables;
1104         #define FUNC_DRV_RGTR_REQ_ENABLES_OS_TYPE                   0x1UL
1105         #define FUNC_DRV_RGTR_REQ_ENABLES_VER                       0x2UL
1106         #define FUNC_DRV_RGTR_REQ_ENABLES_TIMESTAMP                 0x4UL
1107         #define FUNC_DRV_RGTR_REQ_ENABLES_VF_REQ_FWD                0x8UL
1108         #define FUNC_DRV_RGTR_REQ_ENABLES_ASYNC_EVENT_FWD           0x10UL
1109         __le16 os_type;
1110         #define FUNC_DRV_RGTR_REQ_OS_TYPE_UNKNOWN                  0x0UL
1111         #define FUNC_DRV_RGTR_REQ_OS_TYPE_OTHER            0x1UL
1112         #define FUNC_DRV_RGTR_REQ_OS_TYPE_MSDOS            0xeUL
1113         #define FUNC_DRV_RGTR_REQ_OS_TYPE_WINDOWS                  0x12UL
1114         #define FUNC_DRV_RGTR_REQ_OS_TYPE_SOLARIS                  0x1dUL
1115         #define FUNC_DRV_RGTR_REQ_OS_TYPE_LINUX            0x24UL
1116         #define FUNC_DRV_RGTR_REQ_OS_TYPE_FREEBSD                  0x2aUL
1117         #define FUNC_DRV_RGTR_REQ_OS_TYPE_ESXI                     0x68UL
1118         #define FUNC_DRV_RGTR_REQ_OS_TYPE_WIN864                   0x73UL
1119         #define FUNC_DRV_RGTR_REQ_OS_TYPE_WIN2012R2                0x74UL
1120         #define FUNC_DRV_RGTR_REQ_OS_TYPE_UEFI                     0x8000UL
1121         u8 ver_maj;
1122         u8 ver_min;
1123         u8 ver_upd;
1124         u8 unused_0;
1125         __le16 unused_1;
1126         __le32 timestamp;
1127         __le32 unused_2;
1128         __le32 vf_req_fwd[8];
1129         __le32 async_event_fwd[8];
1130 };
1131
1132 /* Output (16 bytes) */
1133 struct hwrm_func_drv_rgtr_output {
1134         __le16 error_code;
1135         __le16 req_type;
1136         __le16 seq_id;
1137         __le16 resp_len;
1138         __le32 unused_0;
1139         u8 unused_1;
1140         u8 unused_2;
1141         u8 unused_3;
1142         u8 valid;
1143 };
1144
1145 /* hwrm_func_drv_unrgtr */
1146 /* Input (24 bytes) */
1147 struct hwrm_func_drv_unrgtr_input {
1148         __le16 req_type;
1149         __le16 cmpl_ring;
1150         __le16 seq_id;
1151         __le16 target_id;
1152         __le64 resp_addr;
1153         __le32 flags;
1154         #define FUNC_DRV_UNRGTR_REQ_FLAGS_PREPARE_FOR_SHUTDOWN     0x1UL
1155         __le32 unused_0;
1156 };
1157
1158 /* Output (16 bytes) */
1159 struct hwrm_func_drv_unrgtr_output {
1160         __le16 error_code;
1161         __le16 req_type;
1162         __le16 seq_id;
1163         __le16 resp_len;
1164         __le32 unused_0;
1165         u8 unused_1;
1166         u8 unused_2;
1167         u8 unused_3;
1168         u8 valid;
1169 };
1170
1171 /* hwrm_func_buf_rgtr */
1172 /* Input (128 bytes) */
1173 struct hwrm_func_buf_rgtr_input {
1174         __le16 req_type;
1175         __le16 cmpl_ring;
1176         __le16 seq_id;
1177         __le16 target_id;
1178         __le64 resp_addr;
1179         __le32 enables;
1180         #define FUNC_BUF_RGTR_REQ_ENABLES_VF_ID             0x1UL
1181         #define FUNC_BUF_RGTR_REQ_ENABLES_ERR_BUF_ADDR              0x2UL
1182         __le16 vf_id;
1183         __le16 req_buf_num_pages;
1184         __le16 req_buf_page_size;
1185         #define FUNC_BUF_RGTR_REQ_REQ_BUF_PAGE_SIZE_16B    0x4UL
1186         #define FUNC_BUF_RGTR_REQ_REQ_BUF_PAGE_SIZE_4K             0xcUL
1187         #define FUNC_BUF_RGTR_REQ_REQ_BUF_PAGE_SIZE_8K             0xdUL
1188         #define FUNC_BUF_RGTR_REQ_REQ_BUF_PAGE_SIZE_64K    0x10UL
1189         #define FUNC_BUF_RGTR_REQ_REQ_BUF_PAGE_SIZE_2M             0x15UL
1190         #define FUNC_BUF_RGTR_REQ_REQ_BUF_PAGE_SIZE_4M             0x16UL
1191         #define FUNC_BUF_RGTR_REQ_REQ_BUF_PAGE_SIZE_1G             0x1eUL
1192         __le16 req_buf_len;
1193         __le16 resp_buf_len;
1194         u8 unused_0;
1195         u8 unused_1;
1196         __le64 req_buf_page_addr0;
1197         __le64 req_buf_page_addr1;
1198         __le64 req_buf_page_addr2;
1199         __le64 req_buf_page_addr3;
1200         __le64 req_buf_page_addr4;
1201         __le64 req_buf_page_addr5;
1202         __le64 req_buf_page_addr6;
1203         __le64 req_buf_page_addr7;
1204         __le64 req_buf_page_addr8;
1205         __le64 req_buf_page_addr9;
1206         __le64 error_buf_addr;
1207         __le64 resp_buf_addr;
1208 };
1209
1210 /* Output (16 bytes) */
1211 struct hwrm_func_buf_rgtr_output {
1212         __le16 error_code;
1213         __le16 req_type;
1214         __le16 seq_id;
1215         __le16 resp_len;
1216         __le32 unused_0;
1217         u8 unused_1;
1218         u8 unused_2;
1219         u8 unused_3;
1220         u8 valid;
1221 };
1222
1223 /* hwrm_func_drv_qver */
1224 /* Input (24 bytes) */
1225 struct hwrm_func_drv_qver_input {
1226         __le16 req_type;
1227         __le16 cmpl_ring;
1228         __le16 seq_id;
1229         __le16 target_id;
1230         __le64 resp_addr;
1231         __le32 reserved;
1232         __le16 fid;
1233         __le16 unused_0;
1234 };
1235
1236 /* Output (16 bytes) */
1237 struct hwrm_func_drv_qver_output {
1238         __le16 error_code;
1239         __le16 req_type;
1240         __le16 seq_id;
1241         __le16 resp_len;
1242         __le16 os_type;
1243         #define FUNC_DRV_QVER_RESP_OS_TYPE_UNKNOWN                 0x0UL
1244         #define FUNC_DRV_QVER_RESP_OS_TYPE_OTHER                   0x1UL
1245         #define FUNC_DRV_QVER_RESP_OS_TYPE_MSDOS                   0xeUL
1246         #define FUNC_DRV_QVER_RESP_OS_TYPE_WINDOWS                 0x12UL
1247         #define FUNC_DRV_QVER_RESP_OS_TYPE_SOLARIS                 0x1dUL
1248         #define FUNC_DRV_QVER_RESP_OS_TYPE_LINUX                   0x24UL
1249         #define FUNC_DRV_QVER_RESP_OS_TYPE_FREEBSD                 0x2aUL
1250         #define FUNC_DRV_QVER_RESP_OS_TYPE_ESXI            0x68UL
1251         #define FUNC_DRV_QVER_RESP_OS_TYPE_WIN864                  0x73UL
1252         #define FUNC_DRV_QVER_RESP_OS_TYPE_WIN2012R2               0x74UL
1253         #define FUNC_DRV_QVER_RESP_OS_TYPE_UEFI            0x8000UL
1254         u8 ver_maj;
1255         u8 ver_min;
1256         u8 ver_upd;
1257         u8 unused_0;
1258         u8 unused_1;
1259         u8 valid;
1260 };
1261
1262 /* hwrm_port_phy_cfg */
1263 /* Input (56 bytes) */
1264 struct hwrm_port_phy_cfg_input {
1265         __le16 req_type;
1266         __le16 cmpl_ring;
1267         __le16 seq_id;
1268         __le16 target_id;
1269         __le64 resp_addr;
1270         __le32 flags;
1271         #define PORT_PHY_CFG_REQ_FLAGS_RESET_PHY                    0x1UL
1272         #define PORT_PHY_CFG_REQ_FLAGS_DEPRECATED                   0x2UL
1273         #define PORT_PHY_CFG_REQ_FLAGS_FORCE                        0x4UL
1274         #define PORT_PHY_CFG_REQ_FLAGS_RESTART_AUTONEG              0x8UL
1275         #define PORT_PHY_CFG_REQ_FLAGS_EEE_ENABLE                   0x10UL
1276         #define PORT_PHY_CFG_REQ_FLAGS_EEE_DISABLE                  0x20UL
1277         #define PORT_PHY_CFG_REQ_FLAGS_EEE_TX_LPI_ENABLE            0x40UL
1278         #define PORT_PHY_CFG_REQ_FLAGS_EEE_TX_LPI_DISABLE           0x80UL
1279         #define PORT_PHY_CFG_REQ_FLAGS_FEC_AUTONEG_ENABLE           0x100UL
1280         #define PORT_PHY_CFG_REQ_FLAGS_FEC_AUTONEG_DISABLE          0x200UL
1281         #define PORT_PHY_CFG_REQ_FLAGS_FEC_CLAUSE74_ENABLE          0x400UL
1282         #define PORT_PHY_CFG_REQ_FLAGS_FEC_CLAUSE74_DISABLE         0x800UL
1283         #define PORT_PHY_CFG_REQ_FLAGS_FEC_CLAUSE91_ENABLE          0x1000UL
1284         #define PORT_PHY_CFG_REQ_FLAGS_FEC_CLAUSE91_DISABLE         0x2000UL
1285         #define PORT_PHY_CFG_REQ_FLAGS_FORCE_LINK_DWN               0x4000UL
1286         __le32 enables;
1287         #define PORT_PHY_CFG_REQ_ENABLES_AUTO_MODE                  0x1UL
1288         #define PORT_PHY_CFG_REQ_ENABLES_AUTO_DUPLEX                0x2UL
1289         #define PORT_PHY_CFG_REQ_ENABLES_AUTO_PAUSE                 0x4UL
1290         #define PORT_PHY_CFG_REQ_ENABLES_AUTO_LINK_SPEED            0x8UL
1291         #define PORT_PHY_CFG_REQ_ENABLES_AUTO_LINK_SPEED_MASK      0x10UL
1292         #define PORT_PHY_CFG_REQ_ENABLES_WIRESPEED                  0x20UL
1293         #define PORT_PHY_CFG_REQ_ENABLES_LPBK                       0x40UL
1294         #define PORT_PHY_CFG_REQ_ENABLES_PREEMPHASIS                0x80UL
1295         #define PORT_PHY_CFG_REQ_ENABLES_FORCE_PAUSE                0x100UL
1296         #define PORT_PHY_CFG_REQ_ENABLES_EEE_LINK_SPEED_MASK       0x200UL
1297         #define PORT_PHY_CFG_REQ_ENABLES_TX_LPI_TIMER               0x400UL
1298         __le16 port_id;
1299         __le16 force_link_speed;
1300         #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_100MB    0x1UL
1301         #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_1GB              0xaUL
1302         #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_2GB              0x14UL
1303         #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_2_5GB    0x19UL
1304         #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_10GB             0x64UL
1305         #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_20GB             0xc8UL
1306         #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_25GB             0xfaUL
1307         #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_40GB             0x190UL
1308         #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_50GB             0x1f4UL
1309         #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_100GB    0x3e8UL
1310         #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_10MB             0xffffUL
1311         u8 auto_mode;
1312         #define PORT_PHY_CFG_REQ_AUTO_MODE_NONE            0x0UL
1313         #define PORT_PHY_CFG_REQ_AUTO_MODE_ALL_SPEEDS              0x1UL
1314         #define PORT_PHY_CFG_REQ_AUTO_MODE_ONE_SPEED               0x2UL
1315         #define PORT_PHY_CFG_REQ_AUTO_MODE_ONE_OR_BELOW    0x3UL
1316         #define PORT_PHY_CFG_REQ_AUTO_MODE_SPEED_MASK              0x4UL
1317         u8 auto_duplex;
1318         #define PORT_PHY_CFG_REQ_AUTO_DUPLEX_HALF                  0x0UL
1319         #define PORT_PHY_CFG_REQ_AUTO_DUPLEX_FULL                  0x1UL
1320         #define PORT_PHY_CFG_REQ_AUTO_DUPLEX_BOTH                  0x2UL
1321         u8 auto_pause;
1322         #define PORT_PHY_CFG_REQ_AUTO_PAUSE_TX                      0x1UL
1323         #define PORT_PHY_CFG_REQ_AUTO_PAUSE_RX                      0x2UL
1324         #define PORT_PHY_CFG_REQ_AUTO_PAUSE_AUTONEG_PAUSE           0x4UL
1325         u8 unused_0;
1326         __le16 auto_link_speed;
1327         #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_100MB             0x1UL
1328         #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_1GB               0xaUL
1329         #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_2GB               0x14UL
1330         #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_2_5GB             0x19UL
1331         #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_10GB              0x64UL
1332         #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_20GB              0xc8UL
1333         #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_25GB              0xfaUL
1334         #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_40GB              0x190UL
1335         #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_50GB              0x1f4UL
1336         #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_100GB             0x3e8UL
1337         #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_10MB              0xffffUL
1338         __le16 auto_link_speed_mask;
1339         #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_100MBHD      0x1UL
1340         #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_100MB         0x2UL
1341         #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_1GBHD         0x4UL
1342         #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_1GB           0x8UL
1343         #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_2GB           0x10UL
1344         #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_2_5GB         0x20UL
1345         #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_10GB          0x40UL
1346         #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_20GB          0x80UL
1347         #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_25GB          0x100UL
1348         #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_40GB          0x200UL
1349         #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_50GB          0x400UL
1350         #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_100GB         0x800UL
1351         #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_10MBHD       0x1000UL
1352         #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_10MB          0x2000UL
1353         u8 wirespeed;
1354         #define PORT_PHY_CFG_REQ_WIRESPEED_OFF                     0x0UL
1355         #define PORT_PHY_CFG_REQ_WIRESPEED_ON                      0x1UL
1356         u8 lpbk;
1357         #define PORT_PHY_CFG_REQ_LPBK_NONE                         0x0UL
1358         #define PORT_PHY_CFG_REQ_LPBK_LOCAL                        0x1UL
1359         #define PORT_PHY_CFG_REQ_LPBK_REMOTE                       0x2UL
1360         u8 force_pause;
1361         #define PORT_PHY_CFG_REQ_FORCE_PAUSE_TX             0x1UL
1362         #define PORT_PHY_CFG_REQ_FORCE_PAUSE_RX             0x2UL
1363         u8 unused_1;
1364         __le32 preemphasis;
1365         __le16 eee_link_speed_mask;
1366         #define PORT_PHY_CFG_REQ_EEE_LINK_SPEED_MASK_RSVD1          0x1UL
1367         #define PORT_PHY_CFG_REQ_EEE_LINK_SPEED_MASK_100MB          0x2UL
1368         #define PORT_PHY_CFG_REQ_EEE_LINK_SPEED_MASK_RSVD2          0x4UL
1369         #define PORT_PHY_CFG_REQ_EEE_LINK_SPEED_MASK_1GB            0x8UL
1370         #define PORT_PHY_CFG_REQ_EEE_LINK_SPEED_MASK_RSVD3          0x10UL
1371         #define PORT_PHY_CFG_REQ_EEE_LINK_SPEED_MASK_RSVD4          0x20UL
1372         #define PORT_PHY_CFG_REQ_EEE_LINK_SPEED_MASK_10GB           0x40UL
1373         u8 unused_2;
1374         u8 unused_3;
1375         __le32 tx_lpi_timer;
1376         __le32 unused_4;
1377         #define PORT_PHY_CFG_REQ_TX_LPI_TIMER_MASK                  0xffffffUL
1378         #define PORT_PHY_CFG_REQ_TX_LPI_TIMER_SFT                   0
1379 };
1380
1381 /* Output (16 bytes) */
1382 struct hwrm_port_phy_cfg_output {
1383         __le16 error_code;
1384         __le16 req_type;
1385         __le16 seq_id;
1386         __le16 resp_len;
1387         __le32 unused_0;
1388         u8 unused_1;
1389         u8 unused_2;
1390         u8 unused_3;
1391         u8 valid;
1392 };
1393
1394 /* hwrm_port_phy_qcfg */
1395 /* Input (24 bytes) */
1396 struct hwrm_port_phy_qcfg_input {
1397         __le16 req_type;
1398         __le16 cmpl_ring;
1399         __le16 seq_id;
1400         __le16 target_id;
1401         __le64 resp_addr;
1402         __le16 port_id;
1403         __le16 unused_0[3];
1404 };
1405
1406 /* Output (96 bytes) */
1407 struct hwrm_port_phy_qcfg_output {
1408         __le16 error_code;
1409         __le16 req_type;
1410         __le16 seq_id;
1411         __le16 resp_len;
1412         u8 link;
1413         #define PORT_PHY_QCFG_RESP_LINK_NO_LINK            0x0UL
1414         #define PORT_PHY_QCFG_RESP_LINK_SIGNAL                     0x1UL
1415         #define PORT_PHY_QCFG_RESP_LINK_LINK                       0x2UL
1416         u8 unused_0;
1417         __le16 link_speed;
1418         #define PORT_PHY_QCFG_RESP_LINK_SPEED_100MB                0x1UL
1419         #define PORT_PHY_QCFG_RESP_LINK_SPEED_1GB                  0xaUL
1420         #define PORT_PHY_QCFG_RESP_LINK_SPEED_2GB                  0x14UL
1421         #define PORT_PHY_QCFG_RESP_LINK_SPEED_2_5GB                0x19UL
1422         #define PORT_PHY_QCFG_RESP_LINK_SPEED_10GB                 0x64UL
1423         #define PORT_PHY_QCFG_RESP_LINK_SPEED_20GB                 0xc8UL
1424         #define PORT_PHY_QCFG_RESP_LINK_SPEED_25GB                 0xfaUL
1425         #define PORT_PHY_QCFG_RESP_LINK_SPEED_40GB                 0x190UL
1426         #define PORT_PHY_QCFG_RESP_LINK_SPEED_50GB                 0x1f4UL
1427         #define PORT_PHY_QCFG_RESP_LINK_SPEED_100GB                0x3e8UL
1428         #define PORT_PHY_QCFG_RESP_LINK_SPEED_10MB                 0xffffUL
1429         u8 duplex;
1430         #define PORT_PHY_QCFG_RESP_DUPLEX_HALF                     0x0UL
1431         #define PORT_PHY_QCFG_RESP_DUPLEX_FULL                     0x1UL
1432         u8 pause;
1433         #define PORT_PHY_QCFG_RESP_PAUSE_TX                         0x1UL
1434         #define PORT_PHY_QCFG_RESP_PAUSE_RX                         0x2UL
1435         __le16 support_speeds;
1436         #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_100MBHD           0x1UL
1437         #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_100MB     0x2UL
1438         #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_1GBHD     0x4UL
1439         #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_1GB               0x8UL
1440         #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_2GB               0x10UL
1441         #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_2_5GB     0x20UL
1442         #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_10GB              0x40UL
1443         #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_20GB              0x80UL
1444         #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_25GB              0x100UL
1445         #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_40GB              0x200UL
1446         #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_50GB              0x400UL
1447         #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_100GB     0x800UL
1448         #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_10MBHD            0x1000UL
1449         #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_10MB              0x2000UL
1450         __le16 force_link_speed;
1451         #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_100MB          0x1UL
1452         #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_1GB    0xaUL
1453         #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_2GB    0x14UL
1454         #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_2_5GB          0x19UL
1455         #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_10GB           0x64UL
1456         #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_20GB           0xc8UL
1457         #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_25GB           0xfaUL
1458         #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_40GB           0x190UL
1459         #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_50GB           0x1f4UL
1460         #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_100GB          0x3e8UL
1461         #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_10MB           0xffffUL
1462         u8 auto_mode;
1463         #define PORT_PHY_QCFG_RESP_AUTO_MODE_NONE                  0x0UL
1464         #define PORT_PHY_QCFG_RESP_AUTO_MODE_ALL_SPEEDS    0x1UL
1465         #define PORT_PHY_QCFG_RESP_AUTO_MODE_ONE_SPEED             0x2UL
1466         #define PORT_PHY_QCFG_RESP_AUTO_MODE_ONE_OR_BELOW          0x3UL
1467         #define PORT_PHY_QCFG_RESP_AUTO_MODE_SPEED_MASK    0x4UL
1468         u8 auto_pause;
1469         #define PORT_PHY_QCFG_RESP_AUTO_PAUSE_TX                    0x1UL
1470         #define PORT_PHY_QCFG_RESP_AUTO_PAUSE_RX                    0x2UL
1471         #define PORT_PHY_QCFG_RESP_AUTO_PAUSE_AUTONEG_PAUSE         0x4UL
1472         __le16 auto_link_speed;
1473         #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_100MB           0x1UL
1474         #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_1GB             0xaUL
1475         #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_2GB             0x14UL
1476         #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_2_5GB           0x19UL
1477         #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_10GB    0x64UL
1478         #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_20GB    0xc8UL
1479         #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_25GB    0xfaUL
1480         #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_40GB    0x190UL
1481         #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_50GB    0x1f4UL
1482         #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_100GB           0x3e8UL
1483         #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_10MB    0xffffUL
1484         __le16 auto_link_speed_mask;
1485         #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_100MBHD    0x1UL
1486         #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_100MB      0x2UL
1487         #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_1GBHD      0x4UL
1488         #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_1GB         0x8UL
1489         #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_2GB         0x10UL
1490         #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_2_5GB      0x20UL
1491         #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_10GB       0x40UL
1492         #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_20GB       0x80UL
1493         #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_25GB       0x100UL
1494         #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_40GB       0x200UL
1495         #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_50GB       0x400UL
1496         #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_100GB      0x800UL
1497         #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_10MBHD     0x1000UL
1498         #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_10MB       0x2000UL
1499         u8 wirespeed;
1500         #define PORT_PHY_QCFG_RESP_WIRESPEED_OFF                   0x0UL
1501         #define PORT_PHY_QCFG_RESP_WIRESPEED_ON            0x1UL
1502         u8 lpbk;
1503         #define PORT_PHY_QCFG_RESP_LPBK_NONE                       0x0UL
1504         #define PORT_PHY_QCFG_RESP_LPBK_LOCAL                      0x1UL
1505         #define PORT_PHY_QCFG_RESP_LPBK_REMOTE                     0x2UL
1506         u8 force_pause;
1507         #define PORT_PHY_QCFG_RESP_FORCE_PAUSE_TX                   0x1UL
1508         #define PORT_PHY_QCFG_RESP_FORCE_PAUSE_RX                   0x2UL
1509         u8 module_status;
1510         #define PORT_PHY_QCFG_RESP_MODULE_STATUS_NONE              0x0UL
1511         #define PORT_PHY_QCFG_RESP_MODULE_STATUS_DISABLETX         0x1UL
1512         #define PORT_PHY_QCFG_RESP_MODULE_STATUS_WARNINGMSG       0x2UL
1513         #define PORT_PHY_QCFG_RESP_MODULE_STATUS_PWRDOWN           0x3UL
1514         #define PORT_PHY_QCFG_RESP_MODULE_STATUS_NOTINSERTED      0x4UL
1515         #define PORT_PHY_QCFG_RESP_MODULE_STATUS_NOTAPPLICABLE    0xffUL
1516         __le32 preemphasis;
1517         u8 phy_maj;
1518         u8 phy_min;
1519         u8 phy_bld;
1520         u8 phy_type;
1521         #define PORT_PHY_QCFG_RESP_PHY_TYPE_UNKNOWN                0x0UL
1522         #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASECR                 0x1UL
1523         #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASEKR4                0x2UL
1524         #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASELR                 0x3UL
1525         #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASESR                 0x4UL
1526         #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASEKR2                0x5UL
1527         #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASEKX                 0x6UL
1528         #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASEKR                 0x7UL
1529         #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASET                  0x8UL
1530         #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASETE                 0x9UL
1531         #define PORT_PHY_QCFG_RESP_PHY_TYPE_SGMIIEXTPHY    0xaUL
1532         u8 media_type;
1533         #define PORT_PHY_QCFG_RESP_MEDIA_TYPE_UNKNOWN              0x0UL
1534         #define PORT_PHY_QCFG_RESP_MEDIA_TYPE_TP                   0x1UL
1535         #define PORT_PHY_QCFG_RESP_MEDIA_TYPE_DAC                  0x2UL
1536         #define PORT_PHY_QCFG_RESP_MEDIA_TYPE_FIBRE                0x3UL
1537         u8 xcvr_pkg_type;
1538         #define PORT_PHY_QCFG_RESP_XCVR_PKG_TYPE_XCVR_INTERNAL    0x1UL
1539         #define PORT_PHY_QCFG_RESP_XCVR_PKG_TYPE_XCVR_EXTERNAL    0x2UL
1540         u8 eee_config_phy_addr;
1541         #define PORT_PHY_QCFG_RESP_PHY_ADDR_MASK                    0x1fUL
1542         #define PORT_PHY_QCFG_RESP_PHY_ADDR_SFT             0
1543         #define PORT_PHY_QCFG_RESP_EEE_CONFIG_EEE_ENABLED           0x20UL
1544         #define PORT_PHY_QCFG_RESP_EEE_CONFIG_EEE_ACTIVE            0x40UL
1545         #define PORT_PHY_QCFG_RESP_EEE_CONFIG_EEE_TX_LPI            0x80UL
1546         #define PORT_PHY_QCFG_RESP_EEE_CONFIG_MASK                  0xe0UL
1547         #define PORT_PHY_QCFG_RESP_EEE_CONFIG_SFT                   5
1548         u8 parallel_detect;
1549         #define PORT_PHY_QCFG_RESP_PARALLEL_DETECT                  0x1UL
1550         #define PORT_PHY_QCFG_RESP_RESERVED_MASK                    0xfeUL
1551         #define PORT_PHY_QCFG_RESP_RESERVED_SFT             1
1552         __le16 link_partner_adv_speeds;
1553         #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_100MBHD 0x1UL
1554         #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_100MB   0x2UL
1555         #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_1GBHD   0x4UL
1556         #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_1GB     0x8UL
1557         #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_2GB     0x10UL
1558         #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_2_5GB   0x20UL
1559         #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_10GB    0x40UL
1560         #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_20GB    0x80UL
1561         #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_25GB    0x100UL
1562         #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_40GB    0x200UL
1563         #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_50GB    0x400UL
1564         #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_100GB   0x800UL
1565         #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_10MBHD  0x1000UL
1566         #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_10MB    0x2000UL
1567         u8 link_partner_adv_auto_mode;
1568         #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_NONE 0x0UL
1569         #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_ALL_SPEEDS 0x1UL
1570         #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_ONE_SPEED 0x2UL
1571         #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_ONE_OR_BELOW 0x3UL
1572         #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_SPEED_MASK 0x4UL
1573         u8 link_partner_adv_pause;
1574         #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_PAUSE_TX       0x1UL
1575         #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_PAUSE_RX       0x2UL
1576         __le16 adv_eee_link_speed_mask;
1577         #define PORT_PHY_QCFG_RESP_ADV_EEE_LINK_SPEED_MASK_RSVD1   0x1UL
1578         #define PORT_PHY_QCFG_RESP_ADV_EEE_LINK_SPEED_MASK_100MB   0x2UL
1579         #define PORT_PHY_QCFG_RESP_ADV_EEE_LINK_SPEED_MASK_RSVD2   0x4UL
1580         #define PORT_PHY_QCFG_RESP_ADV_EEE_LINK_SPEED_MASK_1GB     0x8UL
1581         #define PORT_PHY_QCFG_RESP_ADV_EEE_LINK_SPEED_MASK_RSVD3   0x10UL
1582         #define PORT_PHY_QCFG_RESP_ADV_EEE_LINK_SPEED_MASK_RSVD4   0x20UL
1583         #define PORT_PHY_QCFG_RESP_ADV_EEE_LINK_SPEED_MASK_10GB    0x40UL
1584         __le16 link_partner_adv_eee_link_speed_mask;
1585         #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_EEE_LINK_SPEED_MASK_RSVD1 0x1UL
1586         #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_EEE_LINK_SPEED_MASK_100MB 0x2UL
1587         #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_EEE_LINK_SPEED_MASK_RSVD2 0x4UL
1588         #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_EEE_LINK_SPEED_MASK_1GB 0x8UL
1589         #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_EEE_LINK_SPEED_MASK_RSVD3 0x10UL
1590         #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_EEE_LINK_SPEED_MASK_RSVD4 0x20UL
1591         #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_EEE_LINK_SPEED_MASK_10GB 0x40UL
1592         __le32 xcvr_identifier_type_tx_lpi_timer;
1593         #define PORT_PHY_QCFG_RESP_TX_LPI_TIMER_MASK                0xffffffUL
1594         #define PORT_PHY_QCFG_RESP_TX_LPI_TIMER_SFT                 0
1595         #define PORT_PHY_QCFG_RESP_XCVR_IDENTIFIER_TYPE_MASK       0xff000000UL
1596         #define PORT_PHY_QCFG_RESP_XCVR_IDENTIFIER_TYPE_SFT         24
1597         #define PORT_PHY_QCFG_RESP_XCVR_IDENTIFIER_TYPE_UNKNOWN   (0x0UL << 24)
1598         #define PORT_PHY_QCFG_RESP_XCVR_IDENTIFIER_TYPE_SFP       (0x3UL << 24)
1599         #define PORT_PHY_QCFG_RESP_XCVR_IDENTIFIER_TYPE_QSFP      (0xcUL << 24)
1600         #define PORT_PHY_QCFG_RESP_XCVR_IDENTIFIER_TYPE_QSFPPLUS  (0xdUL << 24)
1601         #define PORT_PHY_QCFG_RESP_XCVR_IDENTIFIER_TYPE_QSFP28    (0x11UL << 24)
1602         __le16 fec_cfg;
1603         #define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_NONE_SUPPORTED      0x1UL
1604         #define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_AUTONEG_SUPPORTED   0x2UL
1605         #define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_AUTONEG_ENABLED     0x4UL
1606         #define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_CLAUSE74_SUPPORTED  0x8UL
1607         #define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_CLAUSE74_ENABLED    0x10UL
1608         #define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_CLAUSE91_SUPPORTED  0x20UL
1609         #define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_CLAUSE91_ENABLED    0x40UL
1610         u8 unused_1;
1611         u8 unused_2;
1612         char phy_vendor_name[16];
1613         char phy_vendor_partnumber[16];
1614         __le32 unused_3;
1615         u8 unused_4;
1616         u8 unused_5;
1617         u8 unused_6;
1618         u8 valid;
1619 };
1620
1621 /* hwrm_port_mac_cfg */
1622 /* Input (40 bytes) */
1623 struct hwrm_port_mac_cfg_input {
1624         __le16 req_type;
1625         __le16 cmpl_ring;
1626         __le16 seq_id;
1627         __le16 target_id;
1628         __le64 resp_addr;
1629         __le32 flags;
1630         #define PORT_MAC_CFG_REQ_FLAGS_MATCH_LINK                   0x1UL
1631         #define PORT_MAC_CFG_REQ_FLAGS_VLAN_PRI2COS_ENABLE          0x2UL
1632         #define PORT_MAC_CFG_REQ_FLAGS_TUNNEL_PRI2COS_ENABLE       0x4UL
1633         #define PORT_MAC_CFG_REQ_FLAGS_IP_DSCP2COS_ENABLE           0x8UL
1634         #define PORT_MAC_CFG_REQ_FLAGS_PTP_RX_TS_CAPTURE_ENABLE    0x10UL
1635         #define PORT_MAC_CFG_REQ_FLAGS_PTP_RX_TS_CAPTURE_DISABLE   0x20UL
1636         #define PORT_MAC_CFG_REQ_FLAGS_PTP_TX_TS_CAPTURE_ENABLE    0x40UL
1637         #define PORT_MAC_CFG_REQ_FLAGS_PTP_TX_TS_CAPTURE_DISABLE   0x80UL
1638         #define PORT_MAC_CFG_REQ_FLAGS_OOB_WOL_ENABLE               0x100UL
1639         #define PORT_MAC_CFG_REQ_FLAGS_OOB_WOL_DISABLE              0x200UL
1640         #define PORT_MAC_CFG_REQ_FLAGS_VLAN_PRI2COS_DISABLE         0x400UL
1641         #define PORT_MAC_CFG_REQ_FLAGS_TUNNEL_PRI2COS_DISABLE      0x800UL
1642         #define PORT_MAC_CFG_REQ_FLAGS_IP_DSCP2COS_DISABLE          0x1000UL
1643         __le32 enables;
1644         #define PORT_MAC_CFG_REQ_ENABLES_IPG                        0x1UL
1645         #define PORT_MAC_CFG_REQ_ENABLES_LPBK                       0x2UL
1646         #define PORT_MAC_CFG_REQ_ENABLES_VLAN_PRI2COS_MAP_PRI      0x4UL
1647         #define PORT_MAC_CFG_REQ_ENABLES_RESERVED1                  0x8UL
1648         #define PORT_MAC_CFG_REQ_ENABLES_TUNNEL_PRI2COS_MAP_PRI    0x10UL
1649         #define PORT_MAC_CFG_REQ_ENABLES_DSCP2COS_MAP_PRI           0x20UL
1650         #define PORT_MAC_CFG_REQ_ENABLES_RX_TS_CAPTURE_PTP_MSG_TYPE 0x40UL
1651         #define PORT_MAC_CFG_REQ_ENABLES_TX_TS_CAPTURE_PTP_MSG_TYPE 0x80UL
1652         #define PORT_MAC_CFG_REQ_ENABLES_COS_FIELD_CFG              0x100UL
1653         __le16 port_id;
1654         u8 ipg;
1655         u8 lpbk;
1656         #define PORT_MAC_CFG_REQ_LPBK_NONE                         0x0UL
1657         #define PORT_MAC_CFG_REQ_LPBK_LOCAL                        0x1UL
1658         #define PORT_MAC_CFG_REQ_LPBK_REMOTE                       0x2UL
1659         u8 vlan_pri2cos_map_pri;
1660         u8 reserved1;
1661         u8 tunnel_pri2cos_map_pri;
1662         u8 dscp2pri_map_pri;
1663         __le16 rx_ts_capture_ptp_msg_type;
1664         __le16 tx_ts_capture_ptp_msg_type;
1665         u8 cos_field_cfg;
1666         #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_RSVD1                0x1UL
1667         #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_VLAN_PRI_SEL_MASK   0x6UL
1668         #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_VLAN_PRI_SEL_SFT    1
1669         #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_VLAN_PRI_SEL_INNERMOST (0x0UL << 1)
1670         #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_VLAN_PRI_SEL_OUTER (0x1UL << 1)
1671         #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_VLAN_PRI_SEL_OUTERMOST (0x2UL << 1)
1672         #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_VLAN_PRI_SEL_UNSPECIFIED (0x3UL << 1)
1673         #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_VLAN_PRI_SEL_LAST    PORT_MAC_CFG_REQ_COS_FIELD_CFG_VLAN_PRI_SEL_UNSPECIFIED
1674         #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_T_VLAN_PRI_SEL_MASK 0x18UL
1675         #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_T_VLAN_PRI_SEL_SFT  3
1676         #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_T_VLAN_PRI_SEL_INNERMOST (0x0UL << 3)
1677         #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_T_VLAN_PRI_SEL_OUTER (0x1UL << 3)
1678         #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_T_VLAN_PRI_SEL_OUTERMOST (0x2UL << 3)
1679         #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_T_VLAN_PRI_SEL_UNSPECIFIED (0x3UL << 3)
1680         #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
1681         #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_DEFAULT_COS_MASK    0xe0UL
1682         #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_DEFAULT_COS_SFT     5
1683         u8 unused_0[3];
1684 };
1685
1686 /* Output (16 bytes) */
1687 struct hwrm_port_mac_cfg_output {
1688         __le16 error_code;
1689         __le16 req_type;
1690         __le16 seq_id;
1691         __le16 resp_len;
1692         __le16 mru;
1693         __le16 mtu;
1694         u8 ipg;
1695         u8 lpbk;
1696         #define PORT_MAC_CFG_RESP_LPBK_NONE                        0x0UL
1697         #define PORT_MAC_CFG_RESP_LPBK_LOCAL                       0x1UL
1698         #define PORT_MAC_CFG_RESP_LPBK_REMOTE                      0x2UL
1699         u8 unused_0;
1700         u8 valid;
1701 };
1702
1703 /* hwrm_port_qstats */
1704 /* Input (40 bytes) */
1705 struct hwrm_port_qstats_input {
1706         __le16 req_type;
1707         __le16 cmpl_ring;
1708         __le16 seq_id;
1709         __le16 target_id;
1710         __le64 resp_addr;
1711         __le16 port_id;
1712         u8 unused_0;
1713         u8 unused_1;
1714         u8 unused_2[3];
1715         u8 unused_3;
1716         __le64 tx_stat_host_addr;
1717         __le64 rx_stat_host_addr;
1718 };
1719
1720 /* Output (16 bytes) */
1721 struct hwrm_port_qstats_output {
1722         __le16 error_code;
1723         __le16 req_type;
1724         __le16 seq_id;
1725         __le16 resp_len;
1726         __le16 tx_stat_size;
1727         __le16 rx_stat_size;
1728         u8 unused_0;
1729         u8 unused_1;
1730         u8 unused_2;
1731         u8 valid;
1732 };
1733
1734 /* hwrm_port_lpbk_qstats */
1735 /* Input (16 bytes) */
1736 struct hwrm_port_lpbk_qstats_input {
1737         __le16 req_type;
1738         __le16 cmpl_ring;
1739         __le16 seq_id;
1740         __le16 target_id;
1741         __le64 resp_addr;
1742 };
1743
1744 /* Output (96 bytes) */
1745 struct hwrm_port_lpbk_qstats_output {
1746         __le16 error_code;
1747         __le16 req_type;
1748         __le16 seq_id;
1749         __le16 resp_len;
1750         __le64 lpbk_ucast_frames;
1751         __le64 lpbk_mcast_frames;
1752         __le64 lpbk_bcast_frames;
1753         __le64 lpbk_ucast_bytes;
1754         __le64 lpbk_mcast_bytes;
1755         __le64 lpbk_bcast_bytes;
1756         __le64 tx_stat_discard;
1757         __le64 tx_stat_error;
1758         __le64 rx_stat_discard;
1759         __le64 rx_stat_error;
1760         __le32 unused_0;
1761         u8 unused_1;
1762         u8 unused_2;
1763         u8 unused_3;
1764         u8 valid;
1765 };
1766
1767 /* hwrm_port_clr_stats */
1768 /* Input (24 bytes) */
1769 struct hwrm_port_clr_stats_input {
1770         __le16 req_type;
1771         __le16 cmpl_ring;
1772         __le16 seq_id;
1773         __le16 target_id;
1774         __le64 resp_addr;
1775         __le16 port_id;
1776         __le16 unused_0[3];
1777 };
1778
1779 /* Output (16 bytes) */
1780 struct hwrm_port_clr_stats_output {
1781         __le16 error_code;
1782         __le16 req_type;
1783         __le16 seq_id;
1784         __le16 resp_len;
1785         __le32 unused_0;
1786         u8 unused_1;
1787         u8 unused_2;
1788         u8 unused_3;
1789         u8 valid;
1790 };
1791
1792 /* hwrm_port_lpbk_clr_stats */
1793 /* Input (16 bytes) */
1794 struct hwrm_port_lpbk_clr_stats_input {
1795         __le16 req_type;
1796         __le16 cmpl_ring;
1797         __le16 seq_id;
1798         __le16 target_id;
1799         __le64 resp_addr;
1800 };
1801
1802 /* Output (16 bytes) */
1803 struct hwrm_port_lpbk_clr_stats_output {
1804         __le16 error_code;
1805         __le16 req_type;
1806         __le16 seq_id;
1807         __le16 resp_len;
1808         __le32 unused_0;
1809         u8 unused_1;
1810         u8 unused_2;
1811         u8 unused_3;
1812         u8 valid;
1813 };
1814
1815 /* hwrm_port_phy_qcaps */
1816 /* Input (24 bytes) */
1817 struct hwrm_port_phy_qcaps_input {
1818         __le16 req_type;
1819         __le16 cmpl_ring;
1820         __le16 seq_id;
1821         __le16 target_id;
1822         __le64 resp_addr;
1823         __le16 port_id;
1824         __le16 unused_0[3];
1825 };
1826
1827 /* Output (24 bytes) */
1828 struct hwrm_port_phy_qcaps_output {
1829         __le16 error_code;
1830         __le16 req_type;
1831         __le16 seq_id;
1832         __le16 resp_len;
1833         u8 eee_supported;
1834         #define PORT_PHY_QCAPS_RESP_EEE_SUPPORTED                   0x1UL
1835         #define PORT_PHY_QCAPS_RESP_RSVD1_MASK                      0xfeUL
1836         #define PORT_PHY_QCAPS_RESP_RSVD1_SFT                       1
1837         u8 unused_0;
1838         __le16 supported_speeds_force_mode;
1839         #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_100MBHD 0x1UL
1840         #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_100MB 0x2UL
1841         #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_1GBHD 0x4UL
1842         #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_1GB 0x8UL
1843         #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_2GB 0x10UL
1844         #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_2_5GB 0x20UL
1845         #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_10GB 0x40UL
1846         #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_20GB 0x80UL
1847         #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_25GB 0x100UL
1848         #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_40GB 0x200UL
1849         #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_50GB 0x400UL
1850         #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_100GB 0x800UL
1851         #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_10MBHD 0x1000UL
1852         #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_10MB 0x2000UL
1853         __le16 supported_speeds_auto_mode;
1854         #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_100MBHD 0x1UL
1855         #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_100MB 0x2UL
1856         #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_1GBHD 0x4UL
1857         #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_1GB 0x8UL
1858         #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_2GB 0x10UL
1859         #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_2_5GB 0x20UL
1860         #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_10GB 0x40UL
1861         #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_20GB 0x80UL
1862         #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_25GB 0x100UL
1863         #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_40GB 0x200UL
1864         #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_50GB 0x400UL
1865         #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_100GB 0x800UL
1866         #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_10MBHD 0x1000UL
1867         #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_10MB 0x2000UL
1868         __le16 supported_speeds_eee_mode;
1869         #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_EEE_MODE_RSVD1 0x1UL
1870         #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_EEE_MODE_100MB 0x2UL
1871         #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_EEE_MODE_RSVD2 0x4UL
1872         #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_EEE_MODE_1GB  0x8UL
1873         #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_EEE_MODE_RSVD3 0x10UL
1874         #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_EEE_MODE_RSVD4 0x20UL
1875         #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_EEE_MODE_10GB 0x40UL
1876         __le32 tx_lpi_timer_low;
1877         #define PORT_PHY_QCAPS_RESP_TX_LPI_TIMER_LOW_MASK           0xffffffUL
1878         #define PORT_PHY_QCAPS_RESP_TX_LPI_TIMER_LOW_SFT            0
1879         #define PORT_PHY_QCAPS_RESP_RSVD2_MASK                      0xff000000UL
1880         #define PORT_PHY_QCAPS_RESP_RSVD2_SFT                       24
1881         __le32 valid_tx_lpi_timer_high;
1882         #define PORT_PHY_QCAPS_RESP_TX_LPI_TIMER_HIGH_MASK          0xffffffUL
1883         #define PORT_PHY_QCAPS_RESP_TX_LPI_TIMER_HIGH_SFT           0
1884         #define PORT_PHY_QCAPS_RESP_VALID_MASK                      0xff000000UL
1885         #define PORT_PHY_QCAPS_RESP_VALID_SFT                       24
1886 };
1887
1888 /* hwrm_port_phy_i2c_read */
1889 /* Input (40 bytes) */
1890 struct hwrm_port_phy_i2c_read_input {
1891         __le16 req_type;
1892         __le16 cmpl_ring;
1893         __le16 seq_id;
1894         __le16 target_id;
1895         __le64 resp_addr;
1896         __le32 flags;
1897         __le32 enables;
1898         #define PORT_PHY_I2C_READ_REQ_ENABLES_PAGE_OFFSET           0x1UL
1899         __le16 port_id;
1900         u8 i2c_slave_addr;
1901         u8 unused_0;
1902         __le16 page_number;
1903         __le16 page_offset;
1904         u8 data_length;
1905         u8 unused_1[7];
1906 };
1907
1908 /* Output (80 bytes) */
1909 struct hwrm_port_phy_i2c_read_output {
1910         __le16 error_code;
1911         __le16 req_type;
1912         __le16 seq_id;
1913         __le16 resp_len;
1914         __le32 data[16];
1915         __le32 unused_0;
1916         u8 unused_1;
1917         u8 unused_2;
1918         u8 unused_3;
1919         u8 valid;
1920 };
1921
1922 /* hwrm_queue_qportcfg */
1923 /* Input (24 bytes) */
1924 struct hwrm_queue_qportcfg_input {
1925         __le16 req_type;
1926         __le16 cmpl_ring;
1927         __le16 seq_id;
1928         __le16 target_id;
1929         __le64 resp_addr;
1930         __le32 flags;
1931         #define QUEUE_QPORTCFG_REQ_FLAGS_PATH                       0x1UL
1932         #define QUEUE_QPORTCFG_REQ_FLAGS_PATH_TX                   0x0UL
1933         #define QUEUE_QPORTCFG_REQ_FLAGS_PATH_RX                   0x1UL
1934         #define QUEUE_QPORTCFG_REQ_FLAGS_PATH_LAST    QUEUE_QPORTCFG_REQ_FLAGS_PATH_RX
1935         __le16 port_id;
1936         __le16 unused_0;
1937 };
1938
1939 /* Output (32 bytes) */
1940 struct hwrm_queue_qportcfg_output {
1941         __le16 error_code;
1942         __le16 req_type;
1943         __le16 seq_id;
1944         __le16 resp_len;
1945         u8 max_configurable_queues;
1946         u8 max_configurable_lossless_queues;
1947         u8 queue_cfg_allowed;
1948         u8 queue_cfg_info;
1949         #define QUEUE_QPORTCFG_RESP_QUEUE_CFG_INFO_ASYM_CFG         0x1UL
1950         u8 queue_pfcenable_cfg_allowed;
1951         u8 queue_pri2cos_cfg_allowed;
1952         u8 queue_cos2bw_cfg_allowed;
1953         u8 queue_id0;
1954         u8 queue_id0_service_profile;
1955         #define QUEUE_QPORTCFG_RESP_QUEUE_ID0_SERVICE_PROFILE_LOSSY 0x0UL
1956         #define QUEUE_QPORTCFG_RESP_QUEUE_ID0_SERVICE_PROFILE_LOSSLESS 0x1UL
1957         #define QUEUE_QPORTCFG_RESP_QUEUE_ID0_SERVICE_PROFILE_UNKNOWN 0xffUL
1958         u8 queue_id1;
1959         u8 queue_id1_service_profile;
1960         #define QUEUE_QPORTCFG_RESP_QUEUE_ID1_SERVICE_PROFILE_LOSSY 0x0UL
1961         #define QUEUE_QPORTCFG_RESP_QUEUE_ID1_SERVICE_PROFILE_LOSSLESS 0x1UL
1962         #define QUEUE_QPORTCFG_RESP_QUEUE_ID1_SERVICE_PROFILE_UNKNOWN 0xffUL
1963         u8 queue_id2;
1964         u8 queue_id2_service_profile;
1965         #define QUEUE_QPORTCFG_RESP_QUEUE_ID2_SERVICE_PROFILE_LOSSY 0x0UL
1966         #define QUEUE_QPORTCFG_RESP_QUEUE_ID2_SERVICE_PROFILE_LOSSLESS 0x1UL
1967         #define QUEUE_QPORTCFG_RESP_QUEUE_ID2_SERVICE_PROFILE_UNKNOWN 0xffUL
1968         u8 queue_id3;
1969         u8 queue_id3_service_profile;
1970         #define QUEUE_QPORTCFG_RESP_QUEUE_ID3_SERVICE_PROFILE_LOSSY 0x0UL
1971         #define QUEUE_QPORTCFG_RESP_QUEUE_ID3_SERVICE_PROFILE_LOSSLESS 0x1UL
1972         #define QUEUE_QPORTCFG_RESP_QUEUE_ID3_SERVICE_PROFILE_UNKNOWN 0xffUL
1973         u8 queue_id4;
1974         u8 queue_id4_service_profile;
1975         #define QUEUE_QPORTCFG_RESP_QUEUE_ID4_SERVICE_PROFILE_LOSSY 0x0UL
1976         #define QUEUE_QPORTCFG_RESP_QUEUE_ID4_SERVICE_PROFILE_LOSSLESS 0x1UL
1977         #define QUEUE_QPORTCFG_RESP_QUEUE_ID4_SERVICE_PROFILE_UNKNOWN 0xffUL
1978         u8 queue_id5;
1979         u8 queue_id5_service_profile;
1980         #define QUEUE_QPORTCFG_RESP_QUEUE_ID5_SERVICE_PROFILE_LOSSY 0x0UL
1981         #define QUEUE_QPORTCFG_RESP_QUEUE_ID5_SERVICE_PROFILE_LOSSLESS 0x1UL
1982         #define QUEUE_QPORTCFG_RESP_QUEUE_ID5_SERVICE_PROFILE_UNKNOWN 0xffUL
1983         u8 queue_id6;
1984         u8 queue_id6_service_profile;
1985         #define QUEUE_QPORTCFG_RESP_QUEUE_ID6_SERVICE_PROFILE_LOSSY 0x0UL
1986         #define QUEUE_QPORTCFG_RESP_QUEUE_ID6_SERVICE_PROFILE_LOSSLESS 0x1UL
1987         #define QUEUE_QPORTCFG_RESP_QUEUE_ID6_SERVICE_PROFILE_UNKNOWN 0xffUL
1988         u8 queue_id7;
1989         u8 queue_id7_service_profile;
1990         #define QUEUE_QPORTCFG_RESP_QUEUE_ID7_SERVICE_PROFILE_LOSSY 0x0UL
1991         #define QUEUE_QPORTCFG_RESP_QUEUE_ID7_SERVICE_PROFILE_LOSSLESS 0x1UL
1992         #define QUEUE_QPORTCFG_RESP_QUEUE_ID7_SERVICE_PROFILE_UNKNOWN 0xffUL
1993         u8 valid;
1994 };
1995
1996 /* hwrm_queue_cfg */
1997 /* Input (40 bytes) */
1998 struct hwrm_queue_cfg_input {
1999         __le16 req_type;
2000         __le16 cmpl_ring;
2001         __le16 seq_id;
2002         __le16 target_id;
2003         __le64 resp_addr;
2004         __le32 flags;
2005         #define QUEUE_CFG_REQ_FLAGS_PATH_MASK                       0x3UL
2006         #define QUEUE_CFG_REQ_FLAGS_PATH_SFT                        0
2007         #define QUEUE_CFG_REQ_FLAGS_PATH_TX                        0x0UL
2008         #define QUEUE_CFG_REQ_FLAGS_PATH_RX                        0x1UL
2009         #define QUEUE_CFG_REQ_FLAGS_PATH_BIDIR                     0x2UL
2010         #define QUEUE_CFG_REQ_FLAGS_PATH_LAST    QUEUE_CFG_REQ_FLAGS_PATH_BIDIR
2011         __le32 enables;
2012         #define QUEUE_CFG_REQ_ENABLES_DFLT_LEN                      0x1UL
2013         #define QUEUE_CFG_REQ_ENABLES_SERVICE_PROFILE               0x2UL
2014         __le32 queue_id;
2015         __le32 dflt_len;
2016         u8 service_profile;
2017         #define QUEUE_CFG_REQ_SERVICE_PROFILE_LOSSY                0x0UL
2018         #define QUEUE_CFG_REQ_SERVICE_PROFILE_LOSSLESS             0x1UL
2019         #define QUEUE_CFG_REQ_SERVICE_PROFILE_UNKNOWN              0xffUL
2020         u8 unused_0[7];
2021 };
2022
2023 /* Output (16 bytes) */
2024 struct hwrm_queue_cfg_output {
2025         __le16 error_code;
2026         __le16 req_type;
2027         __le16 seq_id;
2028         __le16 resp_len;
2029         __le32 unused_0;
2030         u8 unused_1;
2031         u8 unused_2;
2032         u8 unused_3;
2033         u8 valid;
2034 };
2035
2036 /* hwrm_queue_pfcenable_qcfg */
2037 /* Input (24 bytes) */
2038 struct hwrm_queue_pfcenable_qcfg_input {
2039         __le16 req_type;
2040         __le16 cmpl_ring;
2041         __le16 seq_id;
2042         __le16 target_id;
2043         __le64 resp_addr;
2044         __le16 port_id;
2045         __le16 unused_0[3];
2046 };
2047
2048 /* Output (16 bytes) */
2049 struct hwrm_queue_pfcenable_qcfg_output {
2050         __le16 error_code;
2051         __le16 req_type;
2052         __le16 seq_id;
2053         __le16 resp_len;
2054         __le32 flags;
2055         #define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI0_PFC_ENABLED   0x1UL
2056         #define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI1_PFC_ENABLED   0x2UL
2057         #define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI2_PFC_ENABLED   0x4UL
2058         #define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI3_PFC_ENABLED   0x8UL
2059         #define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI4_PFC_ENABLED   0x10UL
2060         #define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI5_PFC_ENABLED   0x20UL
2061         #define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI6_PFC_ENABLED   0x40UL
2062         #define QUEUE_PFCENABLE_QCFG_RESP_FLAGS_PRI7_PFC_ENABLED   0x80UL
2063         u8 unused_0;
2064         u8 unused_1;
2065         u8 unused_2;
2066         u8 valid;
2067 };
2068
2069 /* hwrm_queue_pfcenable_cfg */
2070 /* Input (24 bytes) */
2071 struct hwrm_queue_pfcenable_cfg_input {
2072         __le16 req_type;
2073         __le16 cmpl_ring;
2074         __le16 seq_id;
2075         __le16 target_id;
2076         __le64 resp_addr;
2077         __le32 flags;
2078         #define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI0_PFC_ENABLED     0x1UL
2079         #define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI1_PFC_ENABLED     0x2UL
2080         #define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI2_PFC_ENABLED     0x4UL
2081         #define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI3_PFC_ENABLED     0x8UL
2082         #define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI4_PFC_ENABLED     0x10UL
2083         #define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI5_PFC_ENABLED     0x20UL
2084         #define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI6_PFC_ENABLED     0x40UL
2085         #define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI7_PFC_ENABLED     0x80UL
2086         __le16 port_id;
2087         __le16 unused_0;
2088 };
2089
2090 /* Output (16 bytes) */
2091 struct hwrm_queue_pfcenable_cfg_output {
2092         __le16 error_code;
2093         __le16 req_type;
2094         __le16 seq_id;
2095         __le16 resp_len;
2096         __le32 unused_0;
2097         u8 unused_1;
2098         u8 unused_2;
2099         u8 unused_3;
2100         u8 valid;
2101 };
2102
2103 /* hwrm_queue_pri2cos_qcfg */
2104 /* Input (24 bytes) */
2105 struct hwrm_queue_pri2cos_qcfg_input {
2106         __le16 req_type;
2107         __le16 cmpl_ring;
2108         __le16 seq_id;
2109         __le16 target_id;
2110         __le64 resp_addr;
2111         __le32 flags;
2112         #define QUEUE_PRI2COS_QCFG_REQ_FLAGS_PATH                   0x1UL
2113         #define QUEUE_PRI2COS_QCFG_REQ_FLAGS_PATH_TX               (0x0UL << 0)
2114         #define QUEUE_PRI2COS_QCFG_REQ_FLAGS_PATH_RX               (0x1UL << 0)
2115         #define QUEUE_PRI2COS_QCFG_REQ_FLAGS_PATH_LAST    QUEUE_PRI2COS_QCFG_REQ_FLAGS_PATH_RX
2116         #define QUEUE_PRI2COS_QCFG_REQ_FLAGS_IVLAN                  0x2UL
2117         u8 port_id;
2118         u8 unused_0[3];
2119 };
2120
2121 /* Output (24 bytes) */
2122 struct hwrm_queue_pri2cos_qcfg_output {
2123         __le16 error_code;
2124         __le16 req_type;
2125         __le16 seq_id;
2126         __le16 resp_len;
2127         u8 pri0_cos_queue_id;
2128         u8 pri1_cos_queue_id;
2129         u8 pri2_cos_queue_id;
2130         u8 pri3_cos_queue_id;
2131         u8 pri4_cos_queue_id;
2132         u8 pri5_cos_queue_id;
2133         u8 pri6_cos_queue_id;
2134         u8 pri7_cos_queue_id;
2135         u8 queue_cfg_info;
2136         #define QUEUE_PRI2COS_QCFG_RESP_QUEUE_CFG_INFO_ASYM_CFG    0x1UL
2137         u8 unused_0;
2138         __le16 unused_1;
2139         u8 unused_2;
2140         u8 unused_3;
2141         u8 unused_4;
2142         u8 valid;
2143 };
2144
2145 /* hwrm_queue_pri2cos_cfg */
2146 /* Input (40 bytes) */
2147 struct hwrm_queue_pri2cos_cfg_input {
2148         __le16 req_type;
2149         __le16 cmpl_ring;
2150         __le16 seq_id;
2151         __le16 target_id;
2152         __le64 resp_addr;
2153         __le32 flags;
2154         #define QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH_MASK               0x3UL
2155         #define QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH_SFT                0
2156         #define QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH_TX                (0x0UL << 0)
2157         #define QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH_RX                (0x1UL << 0)
2158         #define QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH_BIDIR             (0x2UL << 0)
2159         #define QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH_LAST    QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH_BIDIR
2160         #define QUEUE_PRI2COS_CFG_REQ_FLAGS_IVLAN                   0x4UL
2161         __le32 enables;
2162         #define QUEUE_PRI2COS_CFG_REQ_ENABLES_PRI0_COS_QUEUE_ID    0x1UL
2163         #define QUEUE_PRI2COS_CFG_REQ_ENABLES_PRI1_COS_QUEUE_ID    0x2UL
2164         #define QUEUE_PRI2COS_CFG_REQ_ENABLES_PRI2_COS_QUEUE_ID    0x4UL
2165         #define QUEUE_PRI2COS_CFG_REQ_ENABLES_PRI3_COS_QUEUE_ID    0x8UL
2166         #define QUEUE_PRI2COS_CFG_REQ_ENABLES_PRI4_COS_QUEUE_ID    0x10UL
2167         #define QUEUE_PRI2COS_CFG_REQ_ENABLES_PRI5_COS_QUEUE_ID    0x20UL
2168         #define QUEUE_PRI2COS_CFG_REQ_ENABLES_PRI6_COS_QUEUE_ID    0x40UL
2169         #define QUEUE_PRI2COS_CFG_REQ_ENABLES_PRI7_COS_QUEUE_ID    0x80UL
2170         u8 port_id;
2171         u8 pri0_cos_queue_id;
2172         u8 pri1_cos_queue_id;
2173         u8 pri2_cos_queue_id;
2174         u8 pri3_cos_queue_id;
2175         u8 pri4_cos_queue_id;
2176         u8 pri5_cos_queue_id;
2177         u8 pri6_cos_queue_id;
2178         u8 pri7_cos_queue_id;
2179         u8 unused_0[7];
2180 };
2181
2182 /* Output (16 bytes) */
2183 struct hwrm_queue_pri2cos_cfg_output {
2184         __le16 error_code;
2185         __le16 req_type;
2186         __le16 seq_id;
2187         __le16 resp_len;
2188         __le32 unused_0;
2189         u8 unused_1;
2190         u8 unused_2;
2191         u8 unused_3;
2192         u8 valid;
2193 };
2194
2195 /* hwrm_queue_cos2bw_qcfg */
2196 /* Input (24 bytes) */
2197 struct hwrm_queue_cos2bw_qcfg_input {
2198         __le16 req_type;
2199         __le16 cmpl_ring;
2200         __le16 seq_id;
2201         __le16 target_id;
2202         __le64 resp_addr;
2203         __le16 port_id;
2204         __le16 unused_0[3];
2205 };
2206
2207 /* Output (112 bytes) */
2208 struct hwrm_queue_cos2bw_qcfg_output {
2209         __le16 error_code;
2210         __le16 req_type;
2211         __le16 seq_id;
2212         __le16 resp_len;
2213         u8 queue_id0;
2214         u8 unused_0;
2215         __le16 unused_1;
2216         __le32 queue_id0_min_bw;
2217         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_MASK 0xfffffffUL
2218         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_SFT 0
2219         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_RSVD       0x10000000UL
2220         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_MASK 0xe0000000UL
2221         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_SFT 29
2222         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29)
2223         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29)
2224         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29)
2225         #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
2226         __le32 queue_id0_max_bw;
2227         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_BW_VALUE_MASK 0xfffffffUL
2228         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_BW_VALUE_SFT 0
2229         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_RSVD       0x10000000UL
2230         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_MASK 0xe0000000UL
2231         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_SFT 29
2232         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29)
2233         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29)
2234         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29)
2235         #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
2236         u8 queue_id0_tsa_assign;
2237         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_TSA_ASSIGN_SP    0x0UL
2238         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_TSA_ASSIGN_ETS   0x1UL
2239         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_TSA_ASSIGN_RESERVED_FIRST 0x2UL
2240         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID0_TSA_ASSIGN_RESERVED_LAST 0xffUL
2241         u8 queue_id0_pri_lvl;
2242         u8 queue_id0_bw_weight;
2243         u8 queue_id1;
2244         __le32 queue_id1_min_bw;
2245         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MIN_BW_BW_VALUE_MASK 0xfffffffUL
2246         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MIN_BW_BW_VALUE_SFT 0
2247         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MIN_BW_RSVD       0x10000000UL
2248         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_MASK 0xe0000000UL
2249         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_SFT 29
2250         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29)
2251         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29)
2252         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29)
2253         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_LAST    QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_INVALID
2254         __le32 queue_id1_max_bw;
2255         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MAX_BW_BW_VALUE_MASK 0xfffffffUL
2256         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MAX_BW_BW_VALUE_SFT 0
2257         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MAX_BW_RSVD       0x10000000UL
2258         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_MASK 0xe0000000UL
2259         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_SFT 29
2260         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29)
2261         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29)
2262         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29)
2263         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_LAST    QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_INVALID
2264         u8 queue_id1_tsa_assign;
2265         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_TSA_ASSIGN_SP    0x0UL
2266         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_TSA_ASSIGN_ETS   0x1UL
2267         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_TSA_ASSIGN_RESERVED_FIRST 0x2UL
2268         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID1_TSA_ASSIGN_RESERVED_LAST 0xffUL
2269         u8 queue_id1_pri_lvl;
2270         u8 queue_id1_bw_weight;
2271         u8 queue_id2;
2272         __le32 queue_id2_min_bw;
2273         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MIN_BW_BW_VALUE_MASK 0xfffffffUL
2274         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MIN_BW_BW_VALUE_SFT 0
2275         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MIN_BW_RSVD       0x10000000UL
2276         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_MASK 0xe0000000UL
2277         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_SFT 29
2278         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29)
2279         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29)
2280         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29)
2281         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_LAST    QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_INVALID
2282         __le32 queue_id2_max_bw;
2283         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MAX_BW_BW_VALUE_MASK 0xfffffffUL
2284         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MAX_BW_BW_VALUE_SFT 0
2285         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MAX_BW_RSVD       0x10000000UL
2286         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_MASK 0xe0000000UL
2287         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_SFT 29
2288         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29)
2289         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29)
2290         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29)
2291         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_LAST    QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_INVALID
2292         u8 queue_id2_tsa_assign;
2293         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_TSA_ASSIGN_SP    0x0UL
2294         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_TSA_ASSIGN_ETS   0x1UL
2295         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_TSA_ASSIGN_RESERVED_FIRST 0x2UL
2296         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID2_TSA_ASSIGN_RESERVED_LAST 0xffUL
2297         u8 queue_id2_pri_lvl;
2298         u8 queue_id2_bw_weight;
2299         u8 queue_id3;
2300         __le32 queue_id3_min_bw;
2301         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MIN_BW_BW_VALUE_MASK 0xfffffffUL
2302         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MIN_BW_BW_VALUE_SFT 0
2303         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MIN_BW_RSVD       0x10000000UL
2304         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_MASK 0xe0000000UL
2305         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_SFT 29
2306         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29)
2307         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29)
2308         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29)
2309         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_LAST    QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_INVALID
2310         __le32 queue_id3_max_bw;
2311         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MAX_BW_BW_VALUE_MASK 0xfffffffUL
2312         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MAX_BW_BW_VALUE_SFT 0
2313         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MAX_BW_RSVD       0x10000000UL
2314         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_MASK 0xe0000000UL
2315         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_SFT 29
2316         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29)
2317         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29)
2318         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29)
2319         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_LAST    QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_INVALID
2320         u8 queue_id3_tsa_assign;
2321         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_TSA_ASSIGN_SP    0x0UL
2322         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_TSA_ASSIGN_ETS   0x1UL
2323         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_TSA_ASSIGN_RESERVED_FIRST 0x2UL
2324         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID3_TSA_ASSIGN_RESERVED_LAST 0xffUL
2325         u8 queue_id3_pri_lvl;
2326         u8 queue_id3_bw_weight;
2327         u8 queue_id4;
2328         __le32 queue_id4_min_bw;
2329         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MIN_BW_BW_VALUE_MASK 0xfffffffUL
2330         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MIN_BW_BW_VALUE_SFT 0
2331         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MIN_BW_RSVD       0x10000000UL
2332         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_MASK 0xe0000000UL
2333         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_SFT 29
2334         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29)
2335         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29)
2336         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29)
2337         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_LAST    QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_INVALID
2338         __le32 queue_id4_max_bw;
2339         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MAX_BW_BW_VALUE_MASK 0xfffffffUL
2340         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MAX_BW_BW_VALUE_SFT 0
2341         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MAX_BW_RSVD       0x10000000UL
2342         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_MASK 0xe0000000UL
2343         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_SFT 29
2344         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29)
2345         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29)
2346         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29)
2347         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_LAST    QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_INVALID
2348         u8 queue_id4_tsa_assign;
2349         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_TSA_ASSIGN_SP    0x0UL
2350         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_TSA_ASSIGN_ETS   0x1UL
2351         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_TSA_ASSIGN_RESERVED_FIRST 0x2UL
2352         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID4_TSA_ASSIGN_RESERVED_LAST 0xffUL
2353         u8 queue_id4_pri_lvl;
2354         u8 queue_id4_bw_weight;
2355         u8 queue_id5;
2356         __le32 queue_id5_min_bw;
2357         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MIN_BW_BW_VALUE_MASK 0xfffffffUL
2358         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MIN_BW_BW_VALUE_SFT 0
2359         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MIN_BW_RSVD       0x10000000UL
2360         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_MASK 0xe0000000UL
2361         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_SFT 29
2362         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29)
2363         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29)
2364         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29)
2365         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_LAST    QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_INVALID
2366         __le32 queue_id5_max_bw;
2367         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MAX_BW_BW_VALUE_MASK 0xfffffffUL
2368         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MAX_BW_BW_VALUE_SFT 0
2369         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MAX_BW_RSVD       0x10000000UL
2370         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_MASK 0xe0000000UL
2371         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_SFT 29
2372         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29)
2373         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29)
2374         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29)
2375         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_LAST    QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_INVALID
2376         u8 queue_id5_tsa_assign;
2377         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_TSA_ASSIGN_SP    0x0UL
2378         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_TSA_ASSIGN_ETS   0x1UL
2379         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_TSA_ASSIGN_RESERVED_FIRST 0x2UL
2380         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID5_TSA_ASSIGN_RESERVED_LAST 0xffUL
2381         u8 queue_id5_pri_lvl;
2382         u8 queue_id5_bw_weight;
2383         u8 queue_id6;
2384         __le32 queue_id6_min_bw;
2385         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MIN_BW_BW_VALUE_MASK 0xfffffffUL
2386         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MIN_BW_BW_VALUE_SFT 0
2387         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MIN_BW_RSVD       0x10000000UL
2388         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_MASK 0xe0000000UL
2389         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_SFT 29
2390         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29)
2391         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29)
2392         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29)
2393         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_LAST    QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_INVALID
2394         __le32 queue_id6_max_bw;
2395         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MAX_BW_BW_VALUE_MASK 0xfffffffUL
2396         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MAX_BW_BW_VALUE_SFT 0
2397         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MAX_BW_RSVD       0x10000000UL
2398         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_MASK 0xe0000000UL
2399         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_SFT 29
2400         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29)
2401         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29)
2402         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29)
2403         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_LAST    QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_INVALID
2404         u8 queue_id6_tsa_assign;
2405         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_TSA_ASSIGN_SP    0x0UL
2406         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_TSA_ASSIGN_ETS   0x1UL
2407         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_TSA_ASSIGN_RESERVED_FIRST 0x2UL
2408         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID6_TSA_ASSIGN_RESERVED_LAST 0xffUL
2409         u8 queue_id6_pri_lvl;
2410         u8 queue_id6_bw_weight;
2411         u8 queue_id7;
2412         __le32 queue_id7_min_bw;
2413         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MIN_BW_BW_VALUE_MASK 0xfffffffUL
2414         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MIN_BW_BW_VALUE_SFT 0
2415         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MIN_BW_RSVD       0x10000000UL
2416         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_MASK 0xe0000000UL
2417         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_SFT 29
2418         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29)
2419         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29)
2420         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29)
2421         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_LAST    QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_INVALID
2422         __le32 queue_id7_max_bw;
2423         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MAX_BW_BW_VALUE_MASK 0xfffffffUL
2424         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MAX_BW_BW_VALUE_SFT 0
2425         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MAX_BW_RSVD       0x10000000UL
2426         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_MASK 0xe0000000UL
2427         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_SFT 29
2428         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29)
2429         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29)
2430         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29)
2431         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_LAST    QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_INVALID
2432         u8 queue_id7_tsa_assign;
2433         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_TSA_ASSIGN_SP    0x0UL
2434         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_TSA_ASSIGN_ETS   0x1UL
2435         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_TSA_ASSIGN_RESERVED_FIRST 0x2UL
2436         #define QUEUE_COS2BW_QCFG_RESP_QUEUE_ID7_TSA_ASSIGN_RESERVED_LAST 0xffUL
2437         u8 queue_id7_pri_lvl;
2438         u8 queue_id7_bw_weight;
2439         u8 unused_2;
2440         u8 unused_3;
2441         u8 unused_4;
2442         u8 unused_5;
2443         u8 valid;
2444 };
2445
2446 /* hwrm_queue_cos2bw_cfg */
2447 /* Input (128 bytes) */
2448 struct hwrm_queue_cos2bw_cfg_input {
2449         __le16 req_type;
2450         __le16 cmpl_ring;
2451         __le16 seq_id;
2452         __le16 target_id;
2453         __le64 resp_addr;
2454         __le32 flags;
2455         __le32 enables;
2456         #define QUEUE_COS2BW_CFG_REQ_ENABLES_COS_QUEUE_ID0_VALID   0x1UL
2457         #define QUEUE_COS2BW_CFG_REQ_ENABLES_COS_QUEUE_ID1_VALID   0x2UL
2458         #define QUEUE_COS2BW_CFG_REQ_ENABLES_COS_QUEUE_ID2_VALID   0x4UL
2459         #define QUEUE_COS2BW_CFG_REQ_ENABLES_COS_QUEUE_ID3_VALID   0x8UL
2460         #define QUEUE_COS2BW_CFG_REQ_ENABLES_COS_QUEUE_ID4_VALID   0x10UL
2461         #define QUEUE_COS2BW_CFG_REQ_ENABLES_COS_QUEUE_ID5_VALID   0x20UL
2462         #define QUEUE_COS2BW_CFG_REQ_ENABLES_COS_QUEUE_ID6_VALID   0x40UL
2463         #define QUEUE_COS2BW_CFG_REQ_ENABLES_COS_QUEUE_ID7_VALID   0x80UL
2464         __le16 port_id;
2465         u8 queue_id0;
2466         u8 unused_0;
2467         __le32 queue_id0_min_bw;
2468         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_MASK 0xfffffffUL
2469         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_SFT 0
2470         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_RSVD          0x10000000UL
2471         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_MASK 0xe0000000UL
2472         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_SFT 29
2473         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29)
2474         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29)
2475         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29)
2476         #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
2477         __le32 queue_id0_max_bw;
2478         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_MASK 0xfffffffUL
2479         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_SFT 0
2480         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_RSVD          0x10000000UL
2481         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_MASK 0xe0000000UL
2482         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_SFT 29
2483         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29)
2484         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29)
2485         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29)
2486         #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
2487         u8 queue_id0_tsa_assign;
2488         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_TSA_ASSIGN_SP      0x0UL
2489         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_TSA_ASSIGN_ETS     0x1UL
2490         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_TSA_ASSIGN_RESERVED_FIRST 0x2UL
2491         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_TSA_ASSIGN_RESERVED_LAST 0xffUL
2492         u8 queue_id0_pri_lvl;
2493         u8 queue_id0_bw_weight;
2494         u8 queue_id1;
2495         __le32 queue_id1_min_bw;
2496         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_BW_VALUE_MASK 0xfffffffUL
2497         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_BW_VALUE_SFT 0
2498         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_RSVD          0x10000000UL
2499         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_MASK 0xe0000000UL
2500         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_SFT 29
2501         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29)
2502         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29)
2503         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29)
2504         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_LAST    QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_INVALID
2505         __le32 queue_id1_max_bw;
2506         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_BW_VALUE_MASK 0xfffffffUL
2507         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_BW_VALUE_SFT 0
2508         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_RSVD          0x10000000UL
2509         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_MASK 0xe0000000UL
2510         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_SFT 29
2511         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29)
2512         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29)
2513         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29)
2514         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_LAST    QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_INVALID
2515         u8 queue_id1_tsa_assign;
2516         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_TSA_ASSIGN_SP      0x0UL
2517         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_TSA_ASSIGN_ETS     0x1UL
2518         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_TSA_ASSIGN_RESERVED_FIRST 0x2UL
2519         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_TSA_ASSIGN_RESERVED_LAST 0xffUL
2520         u8 queue_id1_pri_lvl;
2521         u8 queue_id1_bw_weight;
2522         u8 queue_id2;
2523         __le32 queue_id2_min_bw;
2524         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_BW_VALUE_MASK 0xfffffffUL
2525         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_BW_VALUE_SFT 0
2526         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_RSVD          0x10000000UL
2527         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_MASK 0xe0000000UL
2528         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_SFT 29
2529         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29)
2530         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29)
2531         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29)
2532         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_LAST    QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_INVALID
2533         __le32 queue_id2_max_bw;
2534         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_BW_VALUE_MASK 0xfffffffUL
2535         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_BW_VALUE_SFT 0
2536         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_RSVD          0x10000000UL
2537         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_MASK 0xe0000000UL
2538         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_SFT 29
2539         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29)
2540         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29)
2541         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29)
2542         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_LAST    QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_INVALID
2543         u8 queue_id2_tsa_assign;
2544         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_TSA_ASSIGN_SP      0x0UL
2545         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_TSA_ASSIGN_ETS     0x1UL
2546         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_TSA_ASSIGN_RESERVED_FIRST 0x2UL
2547         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_TSA_ASSIGN_RESERVED_LAST 0xffUL
2548         u8 queue_id2_pri_lvl;
2549         u8 queue_id2_bw_weight;
2550         u8 queue_id3;
2551         __le32 queue_id3_min_bw;
2552         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_BW_VALUE_MASK 0xfffffffUL
2553         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_BW_VALUE_SFT 0
2554         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_RSVD          0x10000000UL
2555         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_MASK 0xe0000000UL
2556         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_SFT 29
2557         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29)
2558         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29)
2559         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29)
2560         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_LAST    QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_INVALID
2561         __le32 queue_id3_max_bw;
2562         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_BW_VALUE_MASK 0xfffffffUL
2563         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_BW_VALUE_SFT 0
2564         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_RSVD          0x10000000UL
2565         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_MASK 0xe0000000UL
2566         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_SFT 29
2567         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29)
2568         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29)
2569         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29)
2570         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_LAST    QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_INVALID
2571         u8 queue_id3_tsa_assign;
2572         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_TSA_ASSIGN_SP      0x0UL
2573         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_TSA_ASSIGN_ETS     0x1UL
2574         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_TSA_ASSIGN_RESERVED_FIRST 0x2UL
2575         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_TSA_ASSIGN_RESERVED_LAST 0xffUL
2576         u8 queue_id3_pri_lvl;
2577         u8 queue_id3_bw_weight;
2578         u8 queue_id4;
2579         __le32 queue_id4_min_bw;
2580         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_BW_VALUE_MASK 0xfffffffUL
2581         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_BW_VALUE_SFT 0
2582         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_RSVD          0x10000000UL
2583         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_MASK 0xe0000000UL
2584         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_SFT 29
2585         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29)
2586         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29)
2587         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29)
2588         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_LAST    QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_INVALID
2589         __le32 queue_id4_max_bw;
2590         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_BW_VALUE_MASK 0xfffffffUL
2591         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_BW_VALUE_SFT 0
2592         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_RSVD          0x10000000UL
2593         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_MASK 0xe0000000UL
2594         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_SFT 29
2595         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29)
2596         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29)
2597         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29)
2598         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_LAST    QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_INVALID
2599         u8 queue_id4_tsa_assign;
2600         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_TSA_ASSIGN_SP      0x0UL
2601         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_TSA_ASSIGN_ETS     0x1UL
2602         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_TSA_ASSIGN_RESERVED_FIRST 0x2UL
2603         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_TSA_ASSIGN_RESERVED_LAST 0xffUL
2604         u8 queue_id4_pri_lvl;
2605         u8 queue_id4_bw_weight;
2606         u8 queue_id5;
2607         __le32 queue_id5_min_bw;
2608         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_BW_VALUE_MASK 0xfffffffUL
2609         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_BW_VALUE_SFT 0
2610         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_RSVD          0x10000000UL
2611         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_MASK 0xe0000000UL
2612         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_SFT 29
2613         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29)
2614         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29)
2615         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29)
2616         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_LAST    QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_INVALID
2617         __le32 queue_id5_max_bw;
2618         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_BW_VALUE_MASK 0xfffffffUL
2619         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_BW_VALUE_SFT 0
2620         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_RSVD          0x10000000UL
2621         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_MASK 0xe0000000UL
2622         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_SFT 29
2623         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29)
2624         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29)
2625         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29)
2626         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_LAST    QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_INVALID
2627         u8 queue_id5_tsa_assign;
2628         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_TSA_ASSIGN_SP      0x0UL
2629         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_TSA_ASSIGN_ETS     0x1UL
2630         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_TSA_ASSIGN_RESERVED_FIRST 0x2UL
2631         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_TSA_ASSIGN_RESERVED_LAST 0xffUL
2632         u8 queue_id5_pri_lvl;
2633         u8 queue_id5_bw_weight;
2634         u8 queue_id6;
2635         __le32 queue_id6_min_bw;
2636         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_BW_VALUE_MASK 0xfffffffUL
2637         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_BW_VALUE_SFT 0
2638         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_RSVD          0x10000000UL
2639         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_MASK 0xe0000000UL
2640         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_SFT 29
2641         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29)
2642         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29)
2643         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29)
2644         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_LAST    QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_INVALID
2645         __le32 queue_id6_max_bw;
2646         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_BW_VALUE_MASK 0xfffffffUL
2647         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_BW_VALUE_SFT 0
2648         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_RSVD          0x10000000UL
2649         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_MASK 0xe0000000UL
2650         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_SFT 29
2651         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29)
2652         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29)
2653         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29)
2654         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_LAST    QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_INVALID
2655         u8 queue_id6_tsa_assign;
2656         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_TSA_ASSIGN_SP      0x0UL
2657         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_TSA_ASSIGN_ETS     0x1UL
2658         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_TSA_ASSIGN_RESERVED_FIRST 0x2UL
2659         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_TSA_ASSIGN_RESERVED_LAST 0xffUL
2660         u8 queue_id6_pri_lvl;
2661         u8 queue_id6_bw_weight;
2662         u8 queue_id7;
2663         __le32 queue_id7_min_bw;
2664         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_BW_VALUE_MASK 0xfffffffUL
2665         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_BW_VALUE_SFT 0
2666         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_RSVD          0x10000000UL
2667         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_MASK 0xe0000000UL
2668         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_SFT 29
2669         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29)
2670         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29)
2671         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29)
2672         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_LAST    QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_INVALID
2673         __le32 queue_id7_max_bw;
2674         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_BW_VALUE_MASK 0xfffffffUL
2675         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_BW_VALUE_SFT 0
2676         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_RSVD          0x10000000UL
2677         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_MASK 0xe0000000UL
2678         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_SFT 29
2679         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29)
2680         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29)
2681         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29)
2682         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_LAST    QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_INVALID
2683         u8 queue_id7_tsa_assign;
2684         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_TSA_ASSIGN_SP      0x0UL
2685         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_TSA_ASSIGN_ETS     0x1UL
2686         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_TSA_ASSIGN_RESERVED_FIRST 0x2UL
2687         #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_TSA_ASSIGN_RESERVED_LAST 0xffUL
2688         u8 queue_id7_pri_lvl;
2689         u8 queue_id7_bw_weight;
2690         u8 unused_1[5];
2691 };
2692
2693 /* Output (16 bytes) */
2694 struct hwrm_queue_cos2bw_cfg_output {
2695         __le16 error_code;
2696         __le16 req_type;
2697         __le16 seq_id;
2698         __le16 resp_len;
2699         __le32 unused_0;
2700         u8 unused_1;
2701         u8 unused_2;
2702         u8 unused_3;
2703         u8 valid;
2704 };
2705
2706 /* hwrm_vnic_alloc */
2707 /* Input (24 bytes) */
2708 struct hwrm_vnic_alloc_input {
2709         __le16 req_type;
2710         __le16 cmpl_ring;
2711         __le16 seq_id;
2712         __le16 target_id;
2713         __le64 resp_addr;
2714         __le32 flags;
2715         #define VNIC_ALLOC_REQ_FLAGS_DEFAULT                        0x1UL
2716         __le32 unused_0;
2717 };
2718
2719 /* Output (16 bytes) */
2720 struct hwrm_vnic_alloc_output {
2721         __le16 error_code;
2722         __le16 req_type;
2723         __le16 seq_id;
2724         __le16 resp_len;
2725         __le32 vnic_id;
2726         u8 unused_0;
2727         u8 unused_1;
2728         u8 unused_2;
2729         u8 valid;
2730 };
2731
2732 /* hwrm_vnic_free */
2733 /* Input (24 bytes) */
2734 struct hwrm_vnic_free_input {
2735         __le16 req_type;
2736         __le16 cmpl_ring;
2737         __le16 seq_id;
2738         __le16 target_id;
2739         __le64 resp_addr;
2740         __le32 vnic_id;
2741         __le32 unused_0;
2742 };
2743
2744 /* Output (16 bytes) */
2745 struct hwrm_vnic_free_output {
2746         __le16 error_code;
2747         __le16 req_type;
2748         __le16 seq_id;
2749         __le16 resp_len;
2750         __le32 unused_0;
2751         u8 unused_1;
2752         u8 unused_2;
2753         u8 unused_3;
2754         u8 valid;
2755 };
2756
2757 /* hwrm_vnic_cfg */
2758 /* Input (40 bytes) */
2759 struct hwrm_vnic_cfg_input {
2760         __le16 req_type;
2761         __le16 cmpl_ring;
2762         __le16 seq_id;
2763         __le16 target_id;
2764         __le64 resp_addr;
2765         __le32 flags;
2766         #define VNIC_CFG_REQ_FLAGS_DEFAULT                          0x1UL
2767         #define VNIC_CFG_REQ_FLAGS_VLAN_STRIP_MODE                  0x2UL
2768         #define VNIC_CFG_REQ_FLAGS_BD_STALL_MODE                    0x4UL
2769         #define VNIC_CFG_REQ_FLAGS_ROCE_DUAL_VNIC_MODE              0x8UL
2770         #define VNIC_CFG_REQ_FLAGS_ROCE_ONLY_VNIC_MODE              0x10UL
2771         #define VNIC_CFG_REQ_FLAGS_RSS_DFLT_CR_MODE                 0x20UL
2772         __le32 enables;
2773         #define VNIC_CFG_REQ_ENABLES_DFLT_RING_GRP                  0x1UL
2774         #define VNIC_CFG_REQ_ENABLES_RSS_RULE                       0x2UL
2775         #define VNIC_CFG_REQ_ENABLES_COS_RULE                       0x4UL
2776         #define VNIC_CFG_REQ_ENABLES_LB_RULE                        0x8UL
2777         #define VNIC_CFG_REQ_ENABLES_MRU                            0x10UL
2778         __le16 vnic_id;
2779         __le16 dflt_ring_grp;
2780         __le16 rss_rule;
2781         __le16 cos_rule;
2782         __le16 lb_rule;
2783         __le16 mru;
2784         __le32 unused_0;
2785 };
2786
2787 /* Output (16 bytes) */
2788 struct hwrm_vnic_cfg_output {
2789         __le16 error_code;
2790         __le16 req_type;
2791         __le16 seq_id;
2792         __le16 resp_len;
2793         __le32 unused_0;
2794         u8 unused_1;
2795         u8 unused_2;
2796         u8 unused_3;
2797         u8 valid;
2798 };
2799
2800 /* hwrm_vnic_tpa_cfg */
2801 /* Input (40 bytes) */
2802 struct hwrm_vnic_tpa_cfg_input {
2803         __le16 req_type;
2804         __le16 cmpl_ring;
2805         __le16 seq_id;
2806         __le16 target_id;
2807         __le64 resp_addr;
2808         __le32 flags;
2809         #define VNIC_TPA_CFG_REQ_FLAGS_TPA                          0x1UL
2810         #define VNIC_TPA_CFG_REQ_FLAGS_ENCAP_TPA                    0x2UL
2811         #define VNIC_TPA_CFG_REQ_FLAGS_RSC_WND_UPDATE               0x4UL
2812         #define VNIC_TPA_CFG_REQ_FLAGS_GRO                          0x8UL
2813         #define VNIC_TPA_CFG_REQ_FLAGS_AGG_WITH_ECN                 0x10UL
2814         #define VNIC_TPA_CFG_REQ_FLAGS_AGG_WITH_SAME_GRE_SEQ       0x20UL
2815         #define VNIC_TPA_CFG_REQ_FLAGS_GRO_IPID_CHECK               0x40UL
2816         #define VNIC_TPA_CFG_REQ_FLAGS_GRO_TTL_CHECK                0x80UL
2817         __le32 enables;
2818         #define VNIC_TPA_CFG_REQ_ENABLES_MAX_AGG_SEGS               0x1UL
2819         #define VNIC_TPA_CFG_REQ_ENABLES_MAX_AGGS                   0x2UL
2820         #define VNIC_TPA_CFG_REQ_ENABLES_MAX_AGG_TIMER              0x4UL
2821         #define VNIC_TPA_CFG_REQ_ENABLES_MIN_AGG_LEN                0x8UL
2822         __le16 vnic_id;
2823         __le16 max_agg_segs;
2824         #define VNIC_TPA_CFG_REQ_MAX_AGG_SEGS_1            0x0UL
2825         #define VNIC_TPA_CFG_REQ_MAX_AGG_SEGS_2            0x1UL
2826         #define VNIC_TPA_CFG_REQ_MAX_AGG_SEGS_4            0x2UL
2827         #define VNIC_TPA_CFG_REQ_MAX_AGG_SEGS_8            0x3UL
2828         #define VNIC_TPA_CFG_REQ_MAX_AGG_SEGS_MAX                  0x1fUL
2829         __le16 max_aggs;
2830         #define VNIC_TPA_CFG_REQ_MAX_AGGS_1                        0x0UL
2831         #define VNIC_TPA_CFG_REQ_MAX_AGGS_2                        0x1UL
2832         #define VNIC_TPA_CFG_REQ_MAX_AGGS_4                        0x2UL
2833         #define VNIC_TPA_CFG_REQ_MAX_AGGS_8                        0x3UL
2834         #define VNIC_TPA_CFG_REQ_MAX_AGGS_16                       0x4UL
2835         #define VNIC_TPA_CFG_REQ_MAX_AGGS_MAX                      0x7UL
2836         u8 unused_0;
2837         u8 unused_1;
2838         __le32 max_agg_timer;
2839         __le32 min_agg_len;
2840 };
2841
2842 /* Output (16 bytes) */
2843 struct hwrm_vnic_tpa_cfg_output {
2844         __le16 error_code;
2845         __le16 req_type;
2846         __le16 seq_id;
2847         __le16 resp_len;
2848         __le32 unused_0;
2849         u8 unused_1;
2850         u8 unused_2;
2851         u8 unused_3;
2852         u8 valid;
2853 };
2854
2855 /* hwrm_vnic_rss_cfg */
2856 /* Input (48 bytes) */
2857 struct hwrm_vnic_rss_cfg_input {
2858         __le16 req_type;
2859         __le16 cmpl_ring;
2860         __le16 seq_id;
2861         __le16 target_id;
2862         __le64 resp_addr;
2863         __le32 hash_type;
2864         #define VNIC_RSS_CFG_REQ_HASH_TYPE_IPV4             0x1UL
2865         #define VNIC_RSS_CFG_REQ_HASH_TYPE_TCP_IPV4                 0x2UL
2866         #define VNIC_RSS_CFG_REQ_HASH_TYPE_UDP_IPV4                 0x4UL
2867         #define VNIC_RSS_CFG_REQ_HASH_TYPE_IPV6             0x8UL
2868         #define VNIC_RSS_CFG_REQ_HASH_TYPE_TCP_IPV6                 0x10UL
2869         #define VNIC_RSS_CFG_REQ_HASH_TYPE_UDP_IPV6                 0x20UL
2870         __le32 unused_0;
2871         __le64 ring_grp_tbl_addr;
2872         __le64 hash_key_tbl_addr;
2873         __le16 rss_ctx_idx;
2874         __le16 unused_1[3];
2875 };
2876
2877 /* Output (16 bytes) */
2878 struct hwrm_vnic_rss_cfg_output {
2879         __le16 error_code;
2880         __le16 req_type;
2881         __le16 seq_id;
2882         __le16 resp_len;
2883         __le32 unused_0;
2884         u8 unused_1;
2885         u8 unused_2;
2886         u8 unused_3;
2887         u8 valid;
2888 };
2889
2890 /* hwrm_vnic_plcmodes_cfg */
2891 /* Input (40 bytes) */
2892 struct hwrm_vnic_plcmodes_cfg_input {
2893         __le16 req_type;
2894         __le16 cmpl_ring;
2895         __le16 seq_id;
2896         __le16 target_id;
2897         __le64 resp_addr;
2898         __le32 flags;
2899         #define VNIC_PLCMODES_CFG_REQ_FLAGS_REGULAR_PLACEMENT      0x1UL
2900         #define VNIC_PLCMODES_CFG_REQ_FLAGS_JUMBO_PLACEMENT         0x2UL
2901         #define VNIC_PLCMODES_CFG_REQ_FLAGS_HDS_IPV4                0x4UL
2902         #define VNIC_PLCMODES_CFG_REQ_FLAGS_HDS_IPV6                0x8UL
2903         #define VNIC_PLCMODES_CFG_REQ_FLAGS_HDS_FCOE                0x10UL
2904         #define VNIC_PLCMODES_CFG_REQ_FLAGS_HDS_ROCE                0x20UL
2905         __le32 enables;
2906         #define VNIC_PLCMODES_CFG_REQ_ENABLES_JUMBO_THRESH_VALID   0x1UL
2907         #define VNIC_PLCMODES_CFG_REQ_ENABLES_HDS_OFFSET_VALID     0x2UL
2908         #define VNIC_PLCMODES_CFG_REQ_ENABLES_HDS_THRESHOLD_VALID  0x4UL
2909         __le32 vnic_id;
2910         __le16 jumbo_thresh;
2911         __le16 hds_offset;
2912         __le16 hds_threshold;
2913         __le16 unused_0[3];
2914 };
2915
2916 /* Output (16 bytes) */
2917 struct hwrm_vnic_plcmodes_cfg_output {
2918         __le16 error_code;
2919         __le16 req_type;
2920         __le16 seq_id;
2921         __le16 resp_len;
2922         __le32 unused_0;
2923         u8 unused_1;
2924         u8 unused_2;
2925         u8 unused_3;
2926         u8 valid;
2927 };
2928
2929 /* hwrm_vnic_rss_cos_lb_ctx_alloc */
2930 /* Input (16 bytes) */
2931 struct hwrm_vnic_rss_cos_lb_ctx_alloc_input {
2932         __le16 req_type;
2933         __le16 cmpl_ring;
2934         __le16 seq_id;
2935         __le16 target_id;
2936         __le64 resp_addr;
2937 };
2938
2939 /* Output (16 bytes) */
2940 struct hwrm_vnic_rss_cos_lb_ctx_alloc_output {
2941         __le16 error_code;
2942         __le16 req_type;
2943         __le16 seq_id;
2944         __le16 resp_len;
2945         __le16 rss_cos_lb_ctx_id;
2946         u8 unused_0;
2947         u8 unused_1;
2948         u8 unused_2;
2949         u8 unused_3;
2950         u8 unused_4;
2951         u8 valid;
2952 };
2953
2954 /* hwrm_vnic_rss_cos_lb_ctx_free */
2955 /* Input (24 bytes) */
2956 struct hwrm_vnic_rss_cos_lb_ctx_free_input {
2957         __le16 req_type;
2958         __le16 cmpl_ring;
2959         __le16 seq_id;
2960         __le16 target_id;
2961         __le64 resp_addr;
2962         __le16 rss_cos_lb_ctx_id;
2963         __le16 unused_0[3];
2964 };
2965
2966 /* Output (16 bytes) */
2967 struct hwrm_vnic_rss_cos_lb_ctx_free_output {
2968         __le16 error_code;
2969         __le16 req_type;
2970         __le16 seq_id;
2971         __le16 resp_len;
2972         __le32 unused_0;
2973         u8 unused_1;
2974         u8 unused_2;
2975         u8 unused_3;
2976         u8 valid;
2977 };
2978
2979 /* hwrm_ring_alloc */
2980 /* Input (80 bytes) */
2981 struct hwrm_ring_alloc_input {
2982         __le16 req_type;
2983         __le16 cmpl_ring;
2984         __le16 seq_id;
2985         __le16 target_id;
2986         __le64 resp_addr;
2987         __le32 enables;
2988         #define RING_ALLOC_REQ_ENABLES_RESERVED1                    0x1UL
2989         #define RING_ALLOC_REQ_ENABLES_RING_ARB_CFG                 0x2UL
2990         #define RING_ALLOC_REQ_ENABLES_RESERVED3                    0x4UL
2991         #define RING_ALLOC_REQ_ENABLES_STAT_CTX_ID_VALID            0x8UL
2992         #define RING_ALLOC_REQ_ENABLES_RESERVED4                    0x10UL
2993         #define RING_ALLOC_REQ_ENABLES_MAX_BW_VALID                 0x20UL
2994         u8 ring_type;
2995         #define RING_ALLOC_REQ_RING_TYPE_CMPL                      0x0UL
2996         #define RING_ALLOC_REQ_RING_TYPE_TX                        0x1UL
2997         #define RING_ALLOC_REQ_RING_TYPE_RX                        0x2UL
2998         u8 unused_0;
2999         __le16 unused_1;
3000         __le64 page_tbl_addr;
3001         __le32 fbo;
3002         u8 page_size;
3003         u8 page_tbl_depth;
3004         u8 unused_2;
3005         u8 unused_3;
3006         __le32 length;
3007         __le16 logical_id;
3008         __le16 cmpl_ring_id;
3009         __le16 queue_id;
3010         u8 unused_4;
3011         u8 unused_5;
3012         __le32 reserved1;
3013         __le16 ring_arb_cfg;
3014         #define RING_ALLOC_REQ_RING_ARB_CFG_ARB_POLICY_MASK         0xfUL
3015         #define RING_ALLOC_REQ_RING_ARB_CFG_ARB_POLICY_SFT          0
3016         #define RING_ALLOC_REQ_RING_ARB_CFG_ARB_POLICY_SP          (0x1UL << 0)
3017         #define RING_ALLOC_REQ_RING_ARB_CFG_ARB_POLICY_WFQ         (0x2UL << 0)
3018         #define RING_ALLOC_REQ_RING_ARB_CFG_ARB_POLICY_LAST    RING_ALLOC_REQ_RING_ARB_CFG_ARB_POLICY_WFQ
3019         #define RING_ALLOC_REQ_RING_ARB_CFG_RSVD_MASK               0xf0UL
3020         #define RING_ALLOC_REQ_RING_ARB_CFG_RSVD_SFT                4
3021         #define RING_ALLOC_REQ_RING_ARB_CFG_ARB_POLICY_PARAM_MASK  0xff00UL
3022         #define RING_ALLOC_REQ_RING_ARB_CFG_ARB_POLICY_PARAM_SFT   8
3023         u8 unused_6;
3024         u8 unused_7;
3025         __le32 reserved3;
3026         __le32 stat_ctx_id;
3027         __le32 reserved4;
3028         __le32 max_bw;
3029         #define RING_ALLOC_REQ_MAX_BW_BW_VALUE_MASK                 0xfffffffUL
3030         #define RING_ALLOC_REQ_MAX_BW_BW_VALUE_SFT                  0
3031         #define RING_ALLOC_REQ_MAX_BW_RSVD                          0x10000000UL
3032         #define RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_MASK            0xe0000000UL
3033         #define RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_SFT     29
3034         #define RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_MBPS           (0x0UL << 29)
3035         #define RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_PERCENT1_100  (0x1UL << 29)
3036         #define RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_INVALID       (0x7UL << 29)
3037         #define RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_LAST    RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_INVALID
3038         u8 int_mode;
3039         #define RING_ALLOC_REQ_INT_MODE_LEGACY                     0x0UL
3040         #define RING_ALLOC_REQ_INT_MODE_RSVD                       0x1UL
3041         #define RING_ALLOC_REQ_INT_MODE_MSIX                       0x2UL
3042         #define RING_ALLOC_REQ_INT_MODE_POLL                       0x3UL
3043         u8 unused_8[3];
3044 };
3045
3046 /* Output (16 bytes) */
3047 struct hwrm_ring_alloc_output {
3048         __le16 error_code;
3049         __le16 req_type;
3050         __le16 seq_id;
3051         __le16 resp_len;
3052         __le16 ring_id;
3053         __le16 logical_ring_id;
3054         u8 unused_0;
3055         u8 unused_1;
3056         u8 unused_2;
3057         u8 valid;
3058 };
3059
3060 /* hwrm_ring_free */
3061 /* Input (24 bytes) */
3062 struct hwrm_ring_free_input {
3063         __le16 req_type;
3064         __le16 cmpl_ring;
3065         __le16 seq_id;
3066         __le16 target_id;
3067         __le64 resp_addr;
3068         u8 ring_type;
3069         #define RING_FREE_REQ_RING_TYPE_CMPL                       0x0UL
3070         #define RING_FREE_REQ_RING_TYPE_TX                         0x1UL
3071         #define RING_FREE_REQ_RING_TYPE_RX                         0x2UL
3072         u8 unused_0;
3073         __le16 ring_id;
3074         __le32 unused_1;
3075 };
3076
3077 /* Output (16 bytes) */
3078 struct hwrm_ring_free_output {
3079         __le16 error_code;
3080         __le16 req_type;
3081         __le16 seq_id;
3082         __le16 resp_len;
3083         __le32 unused_0;
3084         u8 unused_1;
3085         u8 unused_2;
3086         u8 unused_3;
3087         u8 valid;
3088 };
3089
3090 /* hwrm_ring_cmpl_ring_qaggint_params */
3091 /* Input (24 bytes) */
3092 struct hwrm_ring_cmpl_ring_qaggint_params_input {
3093         __le16 req_type;
3094         __le16 cmpl_ring;
3095         __le16 seq_id;
3096         __le16 target_id;
3097         __le64 resp_addr;
3098         __le16 ring_id;
3099         __le16 unused_0[3];
3100 };
3101
3102 /* Output (32 bytes) */
3103 struct hwrm_ring_cmpl_ring_qaggint_params_output {
3104         __le16 error_code;
3105         __le16 req_type;
3106         __le16 seq_id;
3107         __le16 resp_len;
3108         __le16 flags;
3109         #define RING_CMPL_RING_QAGGINT_PARAMS_RESP_FLAGS_TIMER_RESET 0x1UL
3110         #define RING_CMPL_RING_QAGGINT_PARAMS_RESP_FLAGS_RING_IDLE 0x2UL
3111         __le16 num_cmpl_dma_aggr;
3112         __le16 num_cmpl_dma_aggr_during_int;
3113         __le16 cmpl_aggr_dma_tmr;
3114         __le16 cmpl_aggr_dma_tmr_during_int;
3115         __le16 int_lat_tmr_min;
3116         __le16 int_lat_tmr_max;
3117         __le16 num_cmpl_aggr_int;
3118         __le32 unused_0;
3119         u8 unused_1;
3120         u8 unused_2;
3121         u8 unused_3;
3122         u8 valid;
3123 };
3124
3125 /* hwrm_ring_cmpl_ring_cfg_aggint_params */
3126 /* Input (40 bytes) */
3127 struct hwrm_ring_cmpl_ring_cfg_aggint_params_input {
3128         __le16 req_type;
3129         __le16 cmpl_ring;
3130         __le16 seq_id;
3131         __le16 target_id;
3132         __le64 resp_addr;
3133         __le16 ring_id;
3134         __le16 flags;
3135         #define RING_CMPL_RING_CFG_AGGINT_PARAMS_REQ_FLAGS_TIMER_RESET 0x1UL
3136         #define RING_CMPL_RING_CFG_AGGINT_PARAMS_REQ_FLAGS_RING_IDLE 0x2UL
3137         __le16 num_cmpl_dma_aggr;
3138         __le16 num_cmpl_dma_aggr_during_int;
3139         __le16 cmpl_aggr_dma_tmr;
3140         __le16 cmpl_aggr_dma_tmr_during_int;
3141         __le16 int_lat_tmr_min;
3142         __le16 int_lat_tmr_max;
3143         __le16 num_cmpl_aggr_int;
3144         __le16 unused_0[3];
3145 };
3146
3147 /* Output (16 bytes) */
3148 struct hwrm_ring_cmpl_ring_cfg_aggint_params_output {
3149         __le16 error_code;
3150         __le16 req_type;
3151         __le16 seq_id;
3152         __le16 resp_len;
3153         __le32 unused_0;
3154         u8 unused_1;
3155         u8 unused_2;
3156         u8 unused_3;
3157         u8 valid;
3158 };
3159
3160 /* hwrm_ring_reset */
3161 /* Input (24 bytes) */
3162 struct hwrm_ring_reset_input {
3163         __le16 req_type;
3164         __le16 cmpl_ring;
3165         __le16 seq_id;
3166         __le16 target_id;
3167         __le64 resp_addr;
3168         u8 ring_type;
3169         #define RING_RESET_REQ_RING_TYPE_CMPL                      0x0UL
3170         #define RING_RESET_REQ_RING_TYPE_TX                        0x1UL
3171         #define RING_RESET_REQ_RING_TYPE_RX                        0x2UL
3172         u8 unused_0;
3173         __le16 ring_id;
3174         __le32 unused_1;
3175 };
3176
3177 /* Output (16 bytes) */
3178 struct hwrm_ring_reset_output {
3179         __le16 error_code;
3180         __le16 req_type;
3181         __le16 seq_id;
3182         __le16 resp_len;
3183         __le32 unused_0;
3184         u8 unused_1;
3185         u8 unused_2;
3186         u8 unused_3;
3187         u8 valid;
3188 };
3189
3190 /* hwrm_ring_grp_alloc */
3191 /* Input (24 bytes) */
3192 struct hwrm_ring_grp_alloc_input {
3193         __le16 req_type;
3194         __le16 cmpl_ring;
3195         __le16 seq_id;
3196         __le16 target_id;
3197         __le64 resp_addr;
3198         __le16 cr;
3199         __le16 rr;
3200         __le16 ar;
3201         __le16 sc;
3202 };
3203
3204 /* Output (16 bytes) */
3205 struct hwrm_ring_grp_alloc_output {
3206         __le16 error_code;
3207         __le16 req_type;
3208         __le16 seq_id;
3209         __le16 resp_len;
3210         __le32 ring_group_id;
3211         u8 unused_0;
3212         u8 unused_1;
3213         u8 unused_2;
3214         u8 valid;
3215 };
3216
3217 /* hwrm_ring_grp_free */
3218 /* Input (24 bytes) */
3219 struct hwrm_ring_grp_free_input {
3220         __le16 req_type;
3221         __le16 cmpl_ring;
3222         __le16 seq_id;
3223         __le16 target_id;
3224         __le64 resp_addr;
3225         __le32 ring_group_id;
3226         __le32 unused_0;
3227 };
3228
3229 /* Output (16 bytes) */
3230 struct hwrm_ring_grp_free_output {
3231         __le16 error_code;
3232         __le16 req_type;
3233         __le16 seq_id;
3234         __le16 resp_len;
3235         __le32 unused_0;
3236         u8 unused_1;
3237         u8 unused_2;
3238         u8 unused_3;
3239         u8 valid;
3240 };
3241
3242 /* hwrm_cfa_l2_filter_alloc */
3243 /* Input (96 bytes) */
3244 struct hwrm_cfa_l2_filter_alloc_input {
3245         __le16 req_type;
3246         __le16 cmpl_ring;
3247         __le16 seq_id;
3248         __le16 target_id;
3249         __le64 resp_addr;
3250         __le32 flags;
3251         #define CFA_L2_FILTER_ALLOC_REQ_FLAGS_PATH                  0x1UL
3252         #define CFA_L2_FILTER_ALLOC_REQ_FLAGS_PATH_TX              (0x0UL << 0)
3253         #define CFA_L2_FILTER_ALLOC_REQ_FLAGS_PATH_RX              (0x1UL << 0)
3254         #define CFA_L2_FILTER_ALLOC_REQ_FLAGS_PATH_LAST    CFA_L2_FILTER_ALLOC_REQ_FLAGS_PATH_RX
3255         #define CFA_L2_FILTER_ALLOC_REQ_FLAGS_LOOPBACK              0x2UL
3256         #define CFA_L2_FILTER_ALLOC_REQ_FLAGS_DROP                  0x4UL
3257         #define CFA_L2_FILTER_ALLOC_REQ_FLAGS_OUTERMOST     0x8UL
3258         __le32 enables;
3259         #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_L2_ADDR     0x1UL
3260         #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_L2_ADDR_MASK       0x2UL
3261         #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_L2_OVLAN            0x4UL
3262         #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_L2_OVLAN_MASK      0x8UL
3263         #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_L2_IVLAN            0x10UL
3264         #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_L2_IVLAN_MASK      0x20UL
3265         #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_T_L2_ADDR           0x40UL
3266         #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_T_L2_ADDR_MASK     0x80UL
3267         #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_T_L2_OVLAN          0x100UL
3268         #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_T_L2_OVLAN_MASK    0x200UL
3269         #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_T_L2_IVLAN          0x400UL
3270         #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_T_L2_IVLAN_MASK    0x800UL
3271         #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_SRC_TYPE            0x1000UL
3272         #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_SRC_ID              0x2000UL
3273         #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_TUNNEL_TYPE         0x4000UL
3274         #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_DST_ID              0x8000UL
3275         #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_MIRROR_VNIC_ID     0x10000UL
3276         u8 l2_addr[6];
3277         u8 unused_0;
3278         u8 unused_1;
3279         u8 l2_addr_mask[6];
3280         __le16 l2_ovlan;
3281         __le16 l2_ovlan_mask;
3282         __le16 l2_ivlan;
3283         __le16 l2_ivlan_mask;
3284         u8 unused_2;
3285         u8 unused_3;
3286         u8 t_l2_addr[6];
3287         u8 unused_4;
3288         u8 unused_5;
3289         u8 t_l2_addr_mask[6];
3290         __le16 t_l2_ovlan;
3291         __le16 t_l2_ovlan_mask;
3292         __le16 t_l2_ivlan;
3293         __le16 t_l2_ivlan_mask;
3294         u8 src_type;
3295         #define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_NPORT             0x0UL
3296         #define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_PF                0x1UL
3297         #define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_VF                0x2UL
3298         #define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_VNIC              0x3UL
3299         #define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_KONG              0x4UL
3300         #define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_APE               0x5UL
3301         #define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_BONO              0x6UL
3302         #define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_TANG              0x7UL
3303         u8 unused_6;
3304         __le32 src_id;
3305         u8 tunnel_type;
3306         #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_NONTUNNEL     0x0UL
3307         #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_VXLAN          0x1UL
3308         #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_NVGRE          0x2UL
3309         #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_L2GRE          0x3UL
3310         #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPIP           0x4UL
3311         #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_GENEVE         0x5UL
3312         #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_MPLS           0x6UL
3313         #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_STT    0x7UL
3314         #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPGRE          0x8UL
3315         #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_ANYTUNNEL     0xffUL
3316         u8 unused_7;
3317         __le16 dst_id;
3318         __le16 mirror_vnic_id;
3319         u8 pri_hint;
3320         #define CFA_L2_FILTER_ALLOC_REQ_PRI_HINT_NO_PREFER         0x0UL
3321         #define CFA_L2_FILTER_ALLOC_REQ_PRI_HINT_ABOVE_FILTER     0x1UL
3322         #define CFA_L2_FILTER_ALLOC_REQ_PRI_HINT_BELOW_FILTER     0x2UL
3323         #define CFA_L2_FILTER_ALLOC_REQ_PRI_HINT_MAX               0x3UL
3324         #define CFA_L2_FILTER_ALLOC_REQ_PRI_HINT_MIN               0x4UL
3325         u8 unused_8;
3326         __le32 unused_9;
3327         __le64 l2_filter_id_hint;
3328 };
3329
3330 /* Output (24 bytes) */
3331 struct hwrm_cfa_l2_filter_alloc_output {
3332         __le16 error_code;
3333         __le16 req_type;
3334         __le16 seq_id;
3335         __le16 resp_len;
3336         __le64 l2_filter_id;
3337         __le32 flow_id;
3338         u8 unused_0;
3339         u8 unused_1;
3340         u8 unused_2;
3341         u8 valid;
3342 };
3343
3344 /* hwrm_cfa_l2_filter_free */
3345 /* Input (24 bytes) */
3346 struct hwrm_cfa_l2_filter_free_input {
3347         __le16 req_type;
3348         __le16 cmpl_ring;
3349         __le16 seq_id;
3350         __le16 target_id;
3351         __le64 resp_addr;
3352         __le64 l2_filter_id;
3353 };
3354
3355 /* Output (16 bytes) */
3356 struct hwrm_cfa_l2_filter_free_output {
3357         __le16 error_code;
3358         __le16 req_type;
3359         __le16 seq_id;
3360         __le16 resp_len;
3361         __le32 unused_0;
3362         u8 unused_1;
3363         u8 unused_2;
3364         u8 unused_3;
3365         u8 valid;
3366 };
3367
3368 /* hwrm_cfa_l2_filter_cfg */
3369 /* Input (40 bytes) */
3370 struct hwrm_cfa_l2_filter_cfg_input {
3371         __le16 req_type;
3372         __le16 cmpl_ring;
3373         __le16 seq_id;
3374         __le16 target_id;
3375         __le64 resp_addr;
3376         __le32 flags;
3377         #define CFA_L2_FILTER_CFG_REQ_FLAGS_PATH                    0x1UL
3378         #define CFA_L2_FILTER_CFG_REQ_FLAGS_PATH_TX                (0x0UL << 0)
3379         #define CFA_L2_FILTER_CFG_REQ_FLAGS_PATH_RX                (0x1UL << 0)
3380         #define CFA_L2_FILTER_CFG_REQ_FLAGS_PATH_LAST    CFA_L2_FILTER_CFG_REQ_FLAGS_PATH_RX
3381         #define CFA_L2_FILTER_CFG_REQ_FLAGS_DROP                    0x2UL
3382         __le32 enables;
3383         #define CFA_L2_FILTER_CFG_REQ_ENABLES_DST_ID                0x1UL
3384         #define CFA_L2_FILTER_CFG_REQ_ENABLES_NEW_MIRROR_VNIC_ID   0x2UL
3385         __le64 l2_filter_id;
3386         __le32 dst_id;
3387         __le32 new_mirror_vnic_id;
3388 };
3389
3390 /* Output (16 bytes) */
3391 struct hwrm_cfa_l2_filter_cfg_output {
3392         __le16 error_code;
3393         __le16 req_type;
3394         __le16 seq_id;
3395         __le16 resp_len;
3396         __le32 unused_0;
3397         u8 unused_1;
3398         u8 unused_2;
3399         u8 unused_3;
3400         u8 valid;
3401 };
3402
3403 /* hwrm_cfa_l2_set_rx_mask */
3404 /* Input (56 bytes) */
3405 struct hwrm_cfa_l2_set_rx_mask_input {
3406         __le16 req_type;
3407         __le16 cmpl_ring;
3408         __le16 seq_id;
3409         __le16 target_id;
3410         __le64 resp_addr;
3411         __le32 vnic_id;
3412         __le32 mask;
3413         #define CFA_L2_SET_RX_MASK_REQ_MASK_RESERVED                0x1UL
3414         #define CFA_L2_SET_RX_MASK_REQ_MASK_MCAST                   0x2UL
3415         #define CFA_L2_SET_RX_MASK_REQ_MASK_ALL_MCAST               0x4UL
3416         #define CFA_L2_SET_RX_MASK_REQ_MASK_BCAST                   0x8UL
3417         #define CFA_L2_SET_RX_MASK_REQ_MASK_PROMISCUOUS     0x10UL
3418         #define CFA_L2_SET_RX_MASK_REQ_MASK_OUTERMOST               0x20UL
3419         #define CFA_L2_SET_RX_MASK_REQ_MASK_VLANONLY                0x40UL
3420         #define CFA_L2_SET_RX_MASK_REQ_MASK_VLAN_NONVLAN            0x80UL
3421         #define CFA_L2_SET_RX_MASK_REQ_MASK_ANYVLAN_NONVLAN         0x100UL
3422         __le64 mc_tbl_addr;
3423         __le32 num_mc_entries;
3424         __le32 unused_0;
3425         __le64 vlan_tag_tbl_addr;
3426         __le32 num_vlan_tags;
3427         __le32 unused_1;
3428 };
3429
3430 /* Output (16 bytes) */
3431 struct hwrm_cfa_l2_set_rx_mask_output {
3432         __le16 error_code;
3433         __le16 req_type;
3434         __le16 seq_id;
3435         __le16 resp_len;
3436         __le32 unused_0;
3437         u8 unused_1;
3438         u8 unused_2;
3439         u8 unused_3;
3440         u8 valid;
3441 };
3442
3443 /* hwrm_cfa_tunnel_filter_alloc */
3444 /* Input (88 bytes) */
3445 struct hwrm_cfa_tunnel_filter_alloc_input {
3446         __le16 req_type;
3447         __le16 cmpl_ring;
3448         __le16 seq_id;
3449         __le16 target_id;
3450         __le64 resp_addr;
3451         __le32 flags;
3452         #define CFA_TUNNEL_FILTER_ALLOC_REQ_FLAGS_LOOPBACK          0x1UL
3453         __le32 enables;
3454         #define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_L2_FILTER_ID   0x1UL
3455         #define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_L2_ADDR         0x2UL
3456         #define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_L2_IVLAN       0x4UL
3457         #define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_L3_ADDR         0x8UL
3458         #define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_L3_ADDR_TYPE   0x10UL
3459         #define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_T_L3_ADDR_TYPE 0x20UL
3460         #define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_T_L3_ADDR      0x40UL
3461         #define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_TUNNEL_TYPE    0x80UL
3462         #define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_VNI     0x100UL
3463         #define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_DST_VNIC_ID    0x200UL
3464         #define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_MIRROR_VNIC_ID 0x400UL
3465         __le64 l2_filter_id;
3466         u8 l2_addr[6];
3467         __le16 l2_ivlan;
3468         __le32 l3_addr[4];
3469         __le32 t_l3_addr[4];
3470         u8 l3_addr_type;
3471         u8 t_l3_addr_type;
3472         u8 tunnel_type;
3473         #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_NONTUNNEL 0x0UL
3474         #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_VXLAN     0x1UL
3475         #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_NVGRE     0x2UL
3476         #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_L2GRE     0x3UL
3477         #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPIP      0x4UL
3478         #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_GENEVE    0x5UL
3479         #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_MPLS      0x6UL
3480         #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_STT       0x7UL
3481         #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPGRE     0x8UL
3482         #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_ANYTUNNEL 0xffUL
3483         u8 unused_0;
3484         __le32 vni;
3485         __le32 dst_vnic_id;
3486         __le32 mirror_vnic_id;
3487 };
3488
3489 /* Output (24 bytes) */
3490 struct hwrm_cfa_tunnel_filter_alloc_output {
3491         __le16 error_code;
3492         __le16 req_type;
3493         __le16 seq_id;
3494         __le16 resp_len;
3495         __le64 tunnel_filter_id;
3496         __le32 flow_id;
3497         u8 unused_0;
3498         u8 unused_1;
3499         u8 unused_2;
3500         u8 valid;
3501 };
3502
3503 /* hwrm_cfa_tunnel_filter_free */
3504 /* Input (24 bytes) */
3505 struct hwrm_cfa_tunnel_filter_free_input {
3506         __le16 req_type;
3507         __le16 cmpl_ring;
3508         __le16 seq_id;
3509         __le16 target_id;
3510         __le64 resp_addr;
3511         __le64 tunnel_filter_id;
3512 };
3513
3514 /* Output (16 bytes) */
3515 struct hwrm_cfa_tunnel_filter_free_output {
3516         __le16 error_code;
3517         __le16 req_type;
3518         __le16 seq_id;
3519         __le16 resp_len;
3520         __le32 unused_0;
3521         u8 unused_1;
3522         u8 unused_2;
3523         u8 unused_3;
3524         u8 valid;
3525 };
3526
3527 /* hwrm_cfa_encap_record_alloc */
3528 /* Input (32 bytes) */
3529 struct hwrm_cfa_encap_record_alloc_input {
3530         __le16 req_type;
3531         __le16 cmpl_ring;
3532         __le16 seq_id;
3533         __le16 target_id;
3534         __le64 resp_addr;
3535         __le32 flags;
3536         #define CFA_ENCAP_RECORD_ALLOC_REQ_FLAGS_LOOPBACK           0x1UL
3537         u8 encap_type;
3538         #define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_VXLAN       0x1UL
3539         #define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_NVGRE       0x2UL
3540         #define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_L2GRE       0x3UL
3541         #define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_IPIP         0x4UL
3542         #define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_GENEVE      0x5UL
3543         #define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_MPLS         0x6UL
3544         #define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_VLAN         0x7UL
3545         #define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_IPGRE       0x8UL
3546         u8 unused_0;
3547         __le16 unused_1;
3548         __le32 encap_data[16];
3549 };
3550
3551 /* Output (16 bytes) */
3552 struct hwrm_cfa_encap_record_alloc_output {
3553         __le16 error_code;
3554         __le16 req_type;
3555         __le16 seq_id;
3556         __le16 resp_len;
3557         __le32 encap_record_id;
3558         u8 unused_0;
3559         u8 unused_1;
3560         u8 unused_2;
3561         u8 valid;
3562 };
3563
3564 /* hwrm_cfa_encap_record_free */
3565 /* Input (24 bytes) */
3566 struct hwrm_cfa_encap_record_free_input {
3567         __le16 req_type;
3568         __le16 cmpl_ring;
3569         __le16 seq_id;
3570         __le16 target_id;
3571         __le64 resp_addr;
3572         __le32 encap_record_id;
3573         __le32 unused_0;
3574 };
3575
3576 /* Output (16 bytes) */
3577 struct hwrm_cfa_encap_record_free_output {
3578         __le16 error_code;
3579         __le16 req_type;
3580         __le16 seq_id;
3581         __le16 resp_len;
3582         __le32 unused_0;
3583         u8 unused_1;
3584         u8 unused_2;
3585         u8 unused_3;
3586         u8 valid;
3587 };
3588
3589 /* hwrm_cfa_ntuple_filter_alloc */
3590 /* Input (128 bytes) */
3591 struct hwrm_cfa_ntuple_filter_alloc_input {
3592         __le16 req_type;
3593         __le16 cmpl_ring;
3594         __le16 seq_id;
3595         __le16 target_id;
3596         __le64 resp_addr;
3597         __le32 flags;
3598         #define CFA_NTUPLE_FILTER_ALLOC_REQ_FLAGS_LOOPBACK          0x1UL
3599         #define CFA_NTUPLE_FILTER_ALLOC_REQ_FLAGS_DROP              0x2UL
3600         __le32 enables;
3601         #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_L2_FILTER_ID   0x1UL
3602         #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_ETHERTYPE      0x2UL
3603         #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_TUNNEL_TYPE    0x4UL
3604         #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_SRC_MACADDR    0x8UL
3605         #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_IPADDR_TYPE    0x10UL
3606         #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_SRC_IPADDR     0x20UL
3607         #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_SRC_IPADDR_MASK 0x40UL
3608         #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_DST_IPADDR     0x80UL
3609         #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_DST_IPADDR_MASK 0x100UL
3610         #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_IP_PROTOCOL    0x200UL
3611         #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_SRC_PORT       0x400UL
3612         #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_SRC_PORT_MASK  0x800UL
3613         #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_DST_PORT       0x1000UL
3614         #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_DST_PORT_MASK  0x2000UL
3615         #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_PRI_HINT       0x4000UL
3616         #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_NTUPLE_FILTER_ID 0x8000UL
3617         #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_DST_ID          0x10000UL
3618         #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_MIRROR_VNIC_ID 0x20000UL
3619         #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_DST_MACADDR    0x40000UL
3620         __le64 l2_filter_id;
3621         u8 src_macaddr[6];
3622         __be16 ethertype;
3623         u8 ip_addr_type;
3624         #define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_ADDR_TYPE_UNKNOWN  0x0UL
3625         #define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_ADDR_TYPE_IPV4     0x4UL
3626         #define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_ADDR_TYPE_IPV6     0x6UL
3627         u8 ip_protocol;
3628         #define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_PROTOCOL_UNKNOWN   0x0UL
3629         #define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_PROTOCOL_UDP       0x6UL
3630         #define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_PROTOCOL_TCP       0x11UL
3631         __le16 dst_id;
3632         __le16 mirror_vnic_id;
3633         u8 tunnel_type;
3634         #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_NONTUNNEL 0x0UL
3635         #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_VXLAN     0x1UL
3636         #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_NVGRE     0x2UL
3637         #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_L2GRE     0x3UL
3638         #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPIP      0x4UL
3639         #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_GENEVE    0x5UL
3640         #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_MPLS      0x6UL
3641         #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_STT       0x7UL
3642         #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPGRE     0x8UL
3643         #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_ANYTUNNEL 0xffUL
3644         u8 pri_hint;
3645         #define CFA_NTUPLE_FILTER_ALLOC_REQ_PRI_HINT_NO_PREFER    0x0UL
3646         #define CFA_NTUPLE_FILTER_ALLOC_REQ_PRI_HINT_ABOVE         0x1UL
3647         #define CFA_NTUPLE_FILTER_ALLOC_REQ_PRI_HINT_BELOW         0x2UL
3648         #define CFA_NTUPLE_FILTER_ALLOC_REQ_PRI_HINT_HIGHEST      0x3UL
3649         #define CFA_NTUPLE_FILTER_ALLOC_REQ_PRI_HINT_LOWEST       0x4UL
3650         __be32 src_ipaddr[4];
3651         __be32 src_ipaddr_mask[4];
3652         __be32 dst_ipaddr[4];
3653         __be32 dst_ipaddr_mask[4];
3654         __be16 src_port;
3655         __be16 src_port_mask;
3656         __be16 dst_port;
3657         __be16 dst_port_mask;
3658         __le64 ntuple_filter_id_hint;
3659 };
3660
3661 /* Output (24 bytes) */
3662 struct hwrm_cfa_ntuple_filter_alloc_output {
3663         __le16 error_code;
3664         __le16 req_type;
3665         __le16 seq_id;
3666         __le16 resp_len;
3667         __le64 ntuple_filter_id;
3668         __le32 flow_id;
3669         u8 unused_0;
3670         u8 unused_1;
3671         u8 unused_2;
3672         u8 valid;
3673 };
3674
3675 /* hwrm_cfa_ntuple_filter_free */
3676 /* Input (24 bytes) */
3677 struct hwrm_cfa_ntuple_filter_free_input {
3678         __le16 req_type;
3679         __le16 cmpl_ring;
3680         __le16 seq_id;
3681         __le16 target_id;
3682         __le64 resp_addr;
3683         __le64 ntuple_filter_id;
3684 };
3685
3686 /* Output (16 bytes) */
3687 struct hwrm_cfa_ntuple_filter_free_output {
3688         __le16 error_code;
3689         __le16 req_type;
3690         __le16 seq_id;
3691         __le16 resp_len;
3692         __le32 unused_0;
3693         u8 unused_1;
3694         u8 unused_2;
3695         u8 unused_3;
3696         u8 valid;
3697 };
3698
3699 /* hwrm_cfa_ntuple_filter_cfg */
3700 /* Input (40 bytes) */
3701 struct hwrm_cfa_ntuple_filter_cfg_input {
3702         __le16 req_type;
3703         __le16 cmpl_ring;
3704         __le16 seq_id;
3705         __le16 target_id;
3706         __le64 resp_addr;
3707         __le32 enables;
3708         #define CFA_NTUPLE_FILTER_CFG_REQ_ENABLES_NEW_DST_ID       0x1UL
3709         #define CFA_NTUPLE_FILTER_CFG_REQ_ENABLES_NEW_MIRROR_VNIC_ID 0x2UL
3710         __le32 unused_0;
3711         __le64 ntuple_filter_id;
3712         __le32 new_dst_id;
3713         __le32 new_mirror_vnic_id;
3714 };
3715
3716 /* Output (16 bytes) */
3717 struct hwrm_cfa_ntuple_filter_cfg_output {
3718         __le16 error_code;
3719         __le16 req_type;
3720         __le16 seq_id;
3721         __le16 resp_len;
3722         __le32 unused_0;
3723         u8 unused_1;
3724         u8 unused_2;
3725         u8 unused_3;
3726         u8 valid;
3727 };
3728
3729 /* hwrm_tunnel_dst_port_query */
3730 /* Input (24 bytes) */
3731 struct hwrm_tunnel_dst_port_query_input {
3732         __le16 req_type;
3733         __le16 cmpl_ring;
3734         __le16 seq_id;
3735         __le16 target_id;
3736         __le64 resp_addr;
3737         u8 tunnel_type;
3738         #define TUNNEL_DST_PORT_QUERY_REQ_TUNNEL_TYPE_VXLAN       0x1UL
3739         #define TUNNEL_DST_PORT_QUERY_REQ_TUNNEL_TYPE_GENEVE      0x5UL
3740         u8 unused_0[7];
3741 };
3742
3743 /* Output (16 bytes) */
3744 struct hwrm_tunnel_dst_port_query_output {
3745         __le16 error_code;
3746         __le16 req_type;
3747         __le16 seq_id;
3748         __le16 resp_len;
3749         __le16 tunnel_dst_port_id;
3750         __be16 tunnel_dst_port_val;
3751         u8 unused_0;
3752         u8 unused_1;
3753         u8 unused_2;
3754         u8 valid;
3755 };
3756
3757 /* hwrm_tunnel_dst_port_alloc */
3758 /* Input (24 bytes) */
3759 struct hwrm_tunnel_dst_port_alloc_input {
3760         __le16 req_type;
3761         __le16 cmpl_ring;
3762         __le16 seq_id;
3763         __le16 target_id;
3764         __le64 resp_addr;
3765         u8 tunnel_type;
3766         #define TUNNEL_DST_PORT_ALLOC_REQ_TUNNEL_TYPE_VXLAN       0x1UL
3767         #define TUNNEL_DST_PORT_ALLOC_REQ_TUNNEL_TYPE_GENEVE      0x5UL
3768         u8 unused_0;
3769         __be16 tunnel_dst_port_val;
3770         __le32 unused_1;
3771 };
3772
3773 /* Output (16 bytes) */
3774 struct hwrm_tunnel_dst_port_alloc_output {
3775         __le16 error_code;
3776         __le16 req_type;
3777         __le16 seq_id;
3778         __le16 resp_len;
3779         __le16 tunnel_dst_port_id;
3780         u8 unused_0;
3781         u8 unused_1;
3782         u8 unused_2;
3783         u8 unused_3;
3784         u8 unused_4;
3785         u8 valid;
3786 };
3787
3788 /* hwrm_tunnel_dst_port_free */
3789 /* Input (24 bytes) */
3790 struct hwrm_tunnel_dst_port_free_input {
3791         __le16 req_type;
3792         __le16 cmpl_ring;
3793         __le16 seq_id;
3794         __le16 target_id;
3795         __le64 resp_addr;
3796         u8 tunnel_type;
3797         #define TUNNEL_DST_PORT_FREE_REQ_TUNNEL_TYPE_VXLAN         0x1UL
3798         #define TUNNEL_DST_PORT_FREE_REQ_TUNNEL_TYPE_GENEVE       0x5UL
3799         u8 unused_0;
3800         __le16 tunnel_dst_port_id;
3801         __le32 unused_1;
3802 };
3803
3804 /* Output (16 bytes) */
3805 struct hwrm_tunnel_dst_port_free_output {
3806         __le16 error_code;
3807         __le16 req_type;
3808         __le16 seq_id;
3809         __le16 resp_len;
3810         __le32 unused_0;
3811         u8 unused_1;
3812         u8 unused_2;
3813         u8 unused_3;
3814         u8 valid;
3815 };
3816
3817 /* hwrm_stat_ctx_alloc */
3818 /* Input (32 bytes) */
3819 struct hwrm_stat_ctx_alloc_input {
3820         __le16 req_type;
3821         __le16 cmpl_ring;
3822         __le16 seq_id;
3823         __le16 target_id;
3824         __le64 resp_addr;
3825         __le64 stats_dma_addr;
3826         __le32 update_period_ms;
3827         u8 stat_ctx_flags;
3828         #define STAT_CTX_ALLOC_REQ_STAT_CTX_FLAGS_ROCE              0x1UL
3829         u8 unused_0[3];
3830 };
3831
3832 /* Output (16 bytes) */
3833 struct hwrm_stat_ctx_alloc_output {
3834         __le16 error_code;
3835         __le16 req_type;
3836         __le16 seq_id;
3837         __le16 resp_len;
3838         __le32 stat_ctx_id;
3839         u8 unused_0;
3840         u8 unused_1;
3841         u8 unused_2;
3842         u8 valid;
3843 };
3844
3845 /* hwrm_stat_ctx_free */
3846 /* Input (24 bytes) */
3847 struct hwrm_stat_ctx_free_input {
3848         __le16 req_type;
3849         __le16 cmpl_ring;
3850         __le16 seq_id;
3851         __le16 target_id;
3852         __le64 resp_addr;
3853         __le32 stat_ctx_id;
3854         __le32 unused_0;
3855 };
3856
3857 /* Output (16 bytes) */
3858 struct hwrm_stat_ctx_free_output {
3859         __le16 error_code;
3860         __le16 req_type;
3861         __le16 seq_id;
3862         __le16 resp_len;
3863         __le32 stat_ctx_id;
3864         u8 unused_0;
3865         u8 unused_1;
3866         u8 unused_2;
3867         u8 valid;
3868 };
3869
3870 /* hwrm_stat_ctx_query */
3871 /* Input (24 bytes) */
3872 struct hwrm_stat_ctx_query_input {
3873         __le16 req_type;
3874         __le16 cmpl_ring;
3875         __le16 seq_id;
3876         __le16 target_id;
3877         __le64 resp_addr;
3878         __le32 stat_ctx_id;
3879         __le32 unused_0;
3880 };
3881
3882 /* Output (176 bytes) */
3883 struct hwrm_stat_ctx_query_output {
3884         __le16 error_code;
3885         __le16 req_type;
3886         __le16 seq_id;
3887         __le16 resp_len;
3888         __le64 tx_ucast_pkts;
3889         __le64 tx_mcast_pkts;
3890         __le64 tx_bcast_pkts;
3891         __le64 tx_err_pkts;
3892         __le64 tx_drop_pkts;
3893         __le64 tx_ucast_bytes;
3894         __le64 tx_mcast_bytes;
3895         __le64 tx_bcast_bytes;
3896         __le64 rx_ucast_pkts;
3897         __le64 rx_mcast_pkts;
3898         __le64 rx_bcast_pkts;
3899         __le64 rx_err_pkts;
3900         __le64 rx_drop_pkts;
3901         __le64 rx_ucast_bytes;
3902         __le64 rx_mcast_bytes;
3903         __le64 rx_bcast_bytes;
3904         __le64 rx_agg_pkts;
3905         __le64 rx_agg_bytes;
3906         __le64 rx_agg_events;
3907         __le64 rx_agg_aborts;
3908         __le32 unused_0;
3909         u8 unused_1;
3910         u8 unused_2;
3911         u8 unused_3;
3912         u8 valid;
3913 };
3914
3915 /* hwrm_stat_ctx_clr_stats */
3916 /* Input (24 bytes) */
3917 struct hwrm_stat_ctx_clr_stats_input {
3918         __le16 req_type;
3919         __le16 cmpl_ring;
3920         __le16 seq_id;
3921         __le16 target_id;
3922         __le64 resp_addr;
3923         __le32 stat_ctx_id;
3924         __le32 unused_0;
3925 };
3926
3927 /* Output (16 bytes) */
3928 struct hwrm_stat_ctx_clr_stats_output {
3929         __le16 error_code;
3930         __le16 req_type;
3931         __le16 seq_id;
3932         __le16 resp_len;
3933         __le32 unused_0;
3934         u8 unused_1;
3935         u8 unused_2;
3936         u8 unused_3;
3937         u8 valid;
3938 };
3939
3940 /* hwrm_fw_reset */
3941 /* Input (24 bytes) */
3942 struct hwrm_fw_reset_input {
3943         __le16 req_type;
3944         __le16 cmpl_ring;
3945         __le16 seq_id;
3946         __le16 target_id;
3947         __le64 resp_addr;
3948         u8 embedded_proc_type;
3949         #define FW_RESET_REQ_EMBEDDED_PROC_TYPE_BOOT               0x0UL
3950         #define FW_RESET_REQ_EMBEDDED_PROC_TYPE_MGMT               0x1UL
3951         #define FW_RESET_REQ_EMBEDDED_PROC_TYPE_NETCTRL    0x2UL
3952         #define FW_RESET_REQ_EMBEDDED_PROC_TYPE_ROCE               0x3UL
3953         #define FW_RESET_REQ_EMBEDDED_PROC_TYPE_RSVD               0x4UL
3954         u8 selfrst_status;
3955         #define FW_RESET_REQ_SELFRST_STATUS_SELFRSTNONE    0x0UL
3956         #define FW_RESET_REQ_SELFRST_STATUS_SELFRSTASAP    0x1UL
3957         #define FW_RESET_REQ_SELFRST_STATUS_SELFRSTPCIERST         0x2UL
3958         __le16 unused_0[3];
3959 };
3960
3961 /* Output (16 bytes) */
3962 struct hwrm_fw_reset_output {
3963         __le16 error_code;
3964         __le16 req_type;
3965         __le16 seq_id;
3966         __le16 resp_len;
3967         u8 selfrst_status;
3968         #define FW_RESET_RESP_SELFRST_STATUS_SELFRSTNONE           0x0UL
3969         #define FW_RESET_RESP_SELFRST_STATUS_SELFRSTASAP           0x1UL
3970         #define FW_RESET_RESP_SELFRST_STATUS_SELFRSTPCIERST       0x2UL
3971         u8 unused_0;
3972         __le16 unused_1;
3973         u8 unused_2;
3974         u8 unused_3;
3975         u8 unused_4;
3976         u8 valid;
3977 };
3978
3979 /* hwrm_fw_qstatus */
3980 /* Input (24 bytes) */
3981 struct hwrm_fw_qstatus_input {
3982         __le16 req_type;
3983         __le16 cmpl_ring;
3984         __le16 seq_id;
3985         __le16 target_id;
3986         __le64 resp_addr;
3987         u8 embedded_proc_type;
3988         #define FW_QSTATUS_REQ_EMBEDDED_PROC_TYPE_BOOT             0x0UL
3989         #define FW_QSTATUS_REQ_EMBEDDED_PROC_TYPE_MGMT             0x1UL
3990         #define FW_QSTATUS_REQ_EMBEDDED_PROC_TYPE_NETCTRL          0x2UL
3991         #define FW_QSTATUS_REQ_EMBEDDED_PROC_TYPE_ROCE             0x3UL
3992         #define FW_QSTATUS_REQ_EMBEDDED_PROC_TYPE_RSVD             0x4UL
3993         u8 unused_0[7];
3994 };
3995
3996 /* Output (16 bytes) */
3997 struct hwrm_fw_qstatus_output {
3998         __le16 error_code;
3999         __le16 req_type;
4000         __le16 seq_id;
4001         __le16 resp_len;
4002         u8 selfrst_status;
4003         #define FW_QSTATUS_RESP_SELFRST_STATUS_SELFRSTNONE         0x0UL
4004         #define FW_QSTATUS_RESP_SELFRST_STATUS_SELFRSTASAP         0x1UL
4005         #define FW_QSTATUS_RESP_SELFRST_STATUS_SELFRSTPCIERST     0x2UL
4006         u8 unused_0;
4007         __le16 unused_1;
4008         u8 unused_2;
4009         u8 unused_3;
4010         u8 unused_4;
4011         u8 valid;
4012 };
4013
4014 /* hwrm_fw_set_time */
4015 /* Input (32 bytes) */
4016 struct hwrm_fw_set_time_input {
4017         __le16 req_type;
4018         __le16 cmpl_ring;
4019         __le16 seq_id;
4020         __le16 target_id;
4021         __le64 resp_addr;
4022         __le16 year;
4023         #define FW_SET_TIME_REQ_YEAR_UNKNOWN                       0x0UL
4024         u8 month;
4025         u8 day;
4026         u8 hour;
4027         u8 minute;
4028         u8 second;
4029         u8 unused_0;
4030         __le16 millisecond;
4031         __le16 zone;
4032         #define FW_SET_TIME_REQ_ZONE_UTC                           0x0UL
4033         #define FW_SET_TIME_REQ_ZONE_UNKNOWN                       0xffffUL
4034         __le32 unused_1;
4035 };
4036
4037 /* Output (16 bytes) */
4038 struct hwrm_fw_set_time_output {
4039         __le16 error_code;
4040         __le16 req_type;
4041         __le16 seq_id;
4042         __le16 resp_len;
4043         __le32 unused_0;
4044         u8 unused_1;
4045         u8 unused_2;
4046         u8 unused_3;
4047         u8 valid;
4048 };
4049
4050 /* hwrm_fw_set_structured_data */
4051 /* Input (32 bytes) */
4052 struct hwrm_fw_set_structured_data_input {
4053         __le16 req_type;
4054         __le16 cmpl_ring;
4055         __le16 seq_id;
4056         __le16 target_id;
4057         __le64 resp_addr;
4058         __le64 src_data_addr;
4059         __le16 data_len;
4060         u8 hdr_cnt;
4061         u8 unused_0;
4062         __le16 port_id;
4063         __le16 unused_1;
4064 };
4065
4066 /* Output (16 bytes) */
4067 struct hwrm_fw_set_structured_data_output {
4068         __le16 error_code;
4069         __le16 req_type;
4070         __le16 seq_id;
4071         __le16 resp_len;
4072         __le32 unused_0;
4073         u8 unused_1;
4074         u8 unused_2;
4075         u8 unused_3;
4076         u8 valid;
4077 };
4078
4079 /* hwrm_fw_get_structured_data */
4080 /* Input (40 bytes) */
4081 struct hwrm_fw_get_structured_data_input {
4082         __le16 req_type;
4083         __le16 cmpl_ring;
4084         __le16 seq_id;
4085         __le16 target_id;
4086         __le64 resp_addr;
4087         __le64 dest_data_addr;
4088         __le16 data_len;
4089         __le16 structure_id;
4090         __le16 subtype;
4091         #define FW_GET_STRUCTURED_DATA_REQ_SUBTYPE_ALL             0xffffUL
4092         #define FW_GET_STRUCTURED_DATA_REQ_SUBTYPE_NEAR_BRIDGE_ADMIN 0x100UL
4093         #define FW_GET_STRUCTURED_DATA_REQ_SUBTYPE_NEAR_BRIDGE_PEER 0x101UL
4094         #define FW_GET_STRUCTURED_DATA_REQ_SUBTYPE_NEAR_BRIDGE_OPERATIONAL 0x102UL
4095         #define FW_GET_STRUCTURED_DATA_REQ_SUBTYPE_NON_TPMR_ADMIN 0x200UL
4096         #define FW_GET_STRUCTURED_DATA_REQ_SUBTYPE_NON_TPMR_PEER  0x201UL
4097         #define FW_GET_STRUCTURED_DATA_REQ_SUBTYPE_NON_TPMR_OPERATIONAL 0x202UL
4098         u8 count;
4099         u8 unused_0;
4100         __le16 port_id;
4101         __le16 unused_1[3];
4102 };
4103
4104 /* Output (16 bytes) */
4105 struct hwrm_fw_get_structured_data_output {
4106         __le16 error_code;
4107         __le16 req_type;
4108         __le16 seq_id;
4109         __le16 resp_len;
4110         u8 hdr_cnt;
4111         u8 unused_0;
4112         __le16 unused_1;
4113         u8 unused_2;
4114         u8 unused_3;
4115         u8 unused_4;
4116         u8 valid;
4117 };
4118
4119 /* hwrm_exec_fwd_resp */
4120 /* Input (128 bytes) */
4121 struct hwrm_exec_fwd_resp_input {
4122         __le16 req_type;
4123         __le16 cmpl_ring;
4124         __le16 seq_id;
4125         __le16 target_id;
4126         __le64 resp_addr;
4127         __le32 encap_request[26];
4128         __le16 encap_resp_target_id;
4129         __le16 unused_0[3];
4130 };
4131
4132 /* Output (16 bytes) */
4133 struct hwrm_exec_fwd_resp_output {
4134         __le16 error_code;
4135         __le16 req_type;
4136         __le16 seq_id;
4137         __le16 resp_len;
4138         __le32 unused_0;
4139         u8 unused_1;
4140         u8 unused_2;
4141         u8 unused_3;
4142         u8 valid;
4143 };
4144
4145 /* hwrm_reject_fwd_resp */
4146 /* Input (128 bytes) */
4147 struct hwrm_reject_fwd_resp_input {
4148         __le16 req_type;
4149         __le16 cmpl_ring;
4150         __le16 seq_id;
4151         __le16 target_id;
4152         __le64 resp_addr;
4153         __le32 encap_request[26];
4154         __le16 encap_resp_target_id;
4155         __le16 unused_0[3];
4156 };
4157
4158 /* Output (16 bytes) */
4159 struct hwrm_reject_fwd_resp_output {
4160         __le16 error_code;
4161         __le16 req_type;
4162         __le16 seq_id;
4163         __le16 resp_len;
4164         __le32 unused_0;
4165         u8 unused_1;
4166         u8 unused_2;
4167         u8 unused_3;
4168         u8 valid;
4169 };
4170
4171 /* hwrm_fwd_resp */
4172 /* Input (40 bytes) */
4173 struct hwrm_fwd_resp_input {
4174         __le16 req_type;
4175         __le16 cmpl_ring;
4176         __le16 seq_id;
4177         __le16 target_id;
4178         __le64 resp_addr;
4179         __le16 encap_resp_target_id;
4180         __le16 encap_resp_cmpl_ring;
4181         __le16 encap_resp_len;
4182         u8 unused_0;
4183         u8 unused_1;
4184         __le64 encap_resp_addr;
4185         __le32 encap_resp[24];
4186 };
4187
4188 /* Output (16 bytes) */
4189 struct hwrm_fwd_resp_output {
4190         __le16 error_code;
4191         __le16 req_type;
4192         __le16 seq_id;
4193         __le16 resp_len;
4194         __le32 unused_0;
4195         u8 unused_1;
4196         u8 unused_2;
4197         u8 unused_3;
4198         u8 valid;
4199 };
4200
4201 /* hwrm_fwd_async_event_cmpl */
4202 /* Input (32 bytes) */
4203 struct hwrm_fwd_async_event_cmpl_input {
4204         __le16 req_type;
4205         __le16 cmpl_ring;
4206         __le16 seq_id;
4207         __le16 target_id;
4208         __le64 resp_addr;
4209         __le16 encap_async_event_target_id;
4210         u8 unused_0;
4211         u8 unused_1;
4212         u8 unused_2[3];
4213         u8 unused_3;
4214         __le32 encap_async_event_cmpl[4];
4215 };
4216
4217 /* Output (16 bytes) */
4218 struct hwrm_fwd_async_event_cmpl_output {
4219         __le16 error_code;
4220         __le16 req_type;
4221         __le16 seq_id;
4222         __le16 resp_len;
4223         __le32 unused_0;
4224         u8 unused_1;
4225         u8 unused_2;
4226         u8 unused_3;
4227         u8 valid;
4228 };
4229
4230 /* hwrm_temp_monitor_query */
4231 /* Input (16 bytes) */
4232 struct hwrm_temp_monitor_query_input {
4233         __le16 req_type;
4234         __le16 cmpl_ring;
4235         __le16 seq_id;
4236         __le16 target_id;
4237         __le64 resp_addr;
4238 };
4239
4240 /* Output (16 bytes) */
4241 struct hwrm_temp_monitor_query_output {
4242         __le16 error_code;
4243         __le16 req_type;
4244         __le16 seq_id;
4245         __le16 resp_len;
4246         u8 temp;
4247         u8 unused_0;
4248         __le16 unused_1;
4249         u8 unused_2;
4250         u8 unused_3;
4251         u8 unused_4;
4252         u8 valid;
4253 };
4254
4255 /* hwrm_nvm_read */
4256 /* Input (40 bytes) */
4257 struct hwrm_nvm_read_input {
4258         __le16 req_type;
4259         __le16 cmpl_ring;
4260         __le16 seq_id;
4261         __le16 target_id;
4262         __le64 resp_addr;
4263         __le64 host_dest_addr;
4264         __le16 dir_idx;
4265         u8 unused_0;
4266         u8 unused_1;
4267         __le32 offset;
4268         __le32 len;
4269         __le32 unused_2;
4270 };
4271
4272 /* Output (16 bytes) */
4273 struct hwrm_nvm_read_output {
4274         __le16 error_code;
4275         __le16 req_type;
4276         __le16 seq_id;
4277         __le16 resp_len;
4278         __le32 unused_0;
4279         u8 unused_1;
4280         u8 unused_2;
4281         u8 unused_3;
4282         u8 valid;
4283 };
4284
4285 /* hwrm_nvm_raw_dump */
4286 /* Input (32 bytes) */
4287 struct hwrm_nvm_raw_dump_input {
4288         __le16 req_type;
4289         __le16 cmpl_ring;
4290         __le16 seq_id;
4291         __le16 target_id;
4292         __le64 resp_addr;
4293         __le64 host_dest_addr;
4294         __le32 offset;
4295         __le32 len;
4296 };
4297
4298 /* Output (16 bytes) */
4299 struct hwrm_nvm_raw_dump_output {
4300         __le16 error_code;
4301         __le16 req_type;
4302         __le16 seq_id;
4303         __le16 resp_len;
4304         __le32 unused_0;
4305         u8 unused_1;
4306         u8 unused_2;
4307         u8 unused_3;
4308         u8 valid;
4309 };
4310
4311 /* hwrm_nvm_get_dir_entries */
4312 /* Input (24 bytes) */
4313 struct hwrm_nvm_get_dir_entries_input {
4314         __le16 req_type;
4315         __le16 cmpl_ring;
4316         __le16 seq_id;
4317         __le16 target_id;
4318         __le64 resp_addr;
4319         __le64 host_dest_addr;
4320 };
4321
4322 /* Output (16 bytes) */
4323 struct hwrm_nvm_get_dir_entries_output {
4324         __le16 error_code;
4325         __le16 req_type;
4326         __le16 seq_id;
4327         __le16 resp_len;
4328         __le32 unused_0;
4329         u8 unused_1;
4330         u8 unused_2;
4331         u8 unused_3;
4332         u8 valid;
4333 };
4334
4335 /* hwrm_nvm_get_dir_info */
4336 /* Input (16 bytes) */
4337 struct hwrm_nvm_get_dir_info_input {
4338         __le16 req_type;
4339         __le16 cmpl_ring;
4340         __le16 seq_id;
4341         __le16 target_id;
4342         __le64 resp_addr;
4343 };
4344
4345 /* Output (24 bytes) */
4346 struct hwrm_nvm_get_dir_info_output {
4347         __le16 error_code;
4348         __le16 req_type;
4349         __le16 seq_id;
4350         __le16 resp_len;
4351         __le32 entries;
4352         __le32 entry_length;
4353         __le32 unused_0;
4354         u8 unused_1;
4355         u8 unused_2;
4356         u8 unused_3;
4357         u8 valid;
4358 };
4359
4360 /* hwrm_nvm_write */
4361 /* Input (48 bytes) */
4362 struct hwrm_nvm_write_input {
4363         __le16 req_type;
4364         __le16 cmpl_ring;
4365         __le16 seq_id;
4366         __le16 target_id;
4367         __le64 resp_addr;
4368         __le64 host_src_addr;
4369         __le16 dir_type;
4370         __le16 dir_ordinal;
4371         __le16 dir_ext;
4372         __le16 dir_attr;
4373         __le32 dir_data_length;
4374         __le16 option;
4375         __le16 flags;
4376         #define NVM_WRITE_REQ_FLAGS_KEEP_ORIG_ACTIVE_IMG            0x1UL
4377         __le32 dir_item_length;
4378         __le32 unused_0;
4379 };
4380
4381 /* Output (16 bytes) */
4382 struct hwrm_nvm_write_output {
4383         __le16 error_code;
4384         __le16 req_type;
4385         __le16 seq_id;
4386         __le16 resp_len;
4387         __le32 dir_item_length;
4388         __le16 dir_idx;
4389         u8 unused_0;
4390         u8 valid;
4391 };
4392
4393 /* hwrm_nvm_modify */
4394 /* Input (40 bytes) */
4395 struct hwrm_nvm_modify_input {
4396         __le16 req_type;
4397         __le16 cmpl_ring;
4398         __le16 seq_id;
4399         __le16 target_id;
4400         __le64 resp_addr;
4401         __le64 host_src_addr;
4402         __le16 dir_idx;
4403         u8 unused_0;
4404         u8 unused_1;
4405         __le32 offset;
4406         __le32 len;
4407         __le32 unused_2;
4408 };
4409
4410 /* Output (16 bytes) */
4411 struct hwrm_nvm_modify_output {
4412         __le16 error_code;
4413         __le16 req_type;
4414         __le16 seq_id;
4415         __le16 resp_len;
4416         __le32 unused_0;
4417         u8 unused_1;
4418         u8 unused_2;
4419         u8 unused_3;
4420         u8 valid;
4421 };
4422
4423 /* hwrm_nvm_find_dir_entry */
4424 /* Input (32 bytes) */
4425 struct hwrm_nvm_find_dir_entry_input {
4426         __le16 req_type;
4427         __le16 cmpl_ring;
4428         __le16 seq_id;
4429         __le16 target_id;
4430         __le64 resp_addr;
4431         __le32 enables;
4432         #define NVM_FIND_DIR_ENTRY_REQ_ENABLES_DIR_IDX_VALID       0x1UL
4433         __le16 dir_idx;
4434         __le16 dir_type;
4435         __le16 dir_ordinal;
4436         __le16 dir_ext;
4437         u8 opt_ordinal;
4438         #define NVM_FIND_DIR_ENTRY_REQ_OPT_ORDINAL_MASK     0x3UL
4439         #define NVM_FIND_DIR_ENTRY_REQ_OPT_ORDINAL_SFT              0
4440         #define NVM_FIND_DIR_ENTRY_REQ_OPT_ORDINAL_EQ              0x0UL
4441         #define NVM_FIND_DIR_ENTRY_REQ_OPT_ORDINAL_GE              0x1UL
4442         #define NVM_FIND_DIR_ENTRY_REQ_OPT_ORDINAL_GT              0x2UL
4443         u8 unused_1[3];
4444 };
4445
4446 /* Output (32 bytes) */
4447 struct hwrm_nvm_find_dir_entry_output {
4448         __le16 error_code;
4449         __le16 req_type;
4450         __le16 seq_id;
4451         __le16 resp_len;
4452         __le32 dir_item_length;
4453         __le32 dir_data_length;
4454         __le32 fw_ver;
4455         __le16 dir_ordinal;
4456         __le16 dir_idx;
4457         __le32 unused_0;
4458         u8 unused_1;
4459         u8 unused_2;
4460         u8 unused_3;
4461         u8 valid;
4462 };
4463
4464 /* hwrm_nvm_erase_dir_entry */
4465 /* Input (24 bytes) */
4466 struct hwrm_nvm_erase_dir_entry_input {
4467         __le16 req_type;
4468         __le16 cmpl_ring;
4469         __le16 seq_id;
4470         __le16 target_id;
4471         __le64 resp_addr;
4472         __le16 dir_idx;
4473         __le16 unused_0[3];
4474 };
4475
4476 /* Output (16 bytes) */
4477 struct hwrm_nvm_erase_dir_entry_output {
4478         __le16 error_code;
4479         __le16 req_type;
4480         __le16 seq_id;
4481         __le16 resp_len;
4482         __le32 unused_0;
4483         u8 unused_1;
4484         u8 unused_2;
4485         u8 unused_3;
4486         u8 valid;
4487 };
4488
4489 /* hwrm_nvm_get_dev_info */
4490 /* Input (16 bytes) */
4491 struct hwrm_nvm_get_dev_info_input {
4492         __le16 req_type;
4493         __le16 cmpl_ring;
4494         __le16 seq_id;
4495         __le16 target_id;
4496         __le64 resp_addr;
4497 };
4498
4499 /* Output (32 bytes) */
4500 struct hwrm_nvm_get_dev_info_output {
4501         __le16 error_code;
4502         __le16 req_type;
4503         __le16 seq_id;
4504         __le16 resp_len;
4505         __le16 manufacturer_id;
4506         __le16 device_id;
4507         __le32 sector_size;
4508         __le32 nvram_size;
4509         __le32 reserved_size;
4510         __le32 available_size;
4511         u8 unused_0;
4512         u8 unused_1;
4513         u8 unused_2;
4514         u8 valid;
4515 };
4516
4517 /* hwrm_nvm_mod_dir_entry */
4518 /* Input (32 bytes) */
4519 struct hwrm_nvm_mod_dir_entry_input {
4520         __le16 req_type;
4521         __le16 cmpl_ring;
4522         __le16 seq_id;
4523         __le16 target_id;
4524         __le64 resp_addr;
4525         __le32 enables;
4526         #define NVM_MOD_DIR_ENTRY_REQ_ENABLES_CHECKSUM              0x1UL
4527         __le16 dir_idx;
4528         __le16 dir_ordinal;
4529         __le16 dir_ext;
4530         __le16 dir_attr;
4531         __le32 checksum;
4532 };
4533
4534 /* Output (16 bytes) */
4535 struct hwrm_nvm_mod_dir_entry_output {
4536         __le16 error_code;
4537         __le16 req_type;
4538         __le16 seq_id;
4539         __le16 resp_len;
4540         __le32 unused_0;
4541         u8 unused_1;
4542         u8 unused_2;
4543         u8 unused_3;
4544         u8 valid;
4545 };
4546
4547 /* hwrm_nvm_verify_update */
4548 /* Input (24 bytes) */
4549 struct hwrm_nvm_verify_update_input {
4550         __le16 req_type;
4551         __le16 cmpl_ring;
4552         __le16 seq_id;
4553         __le16 target_id;
4554         __le64 resp_addr;
4555         __le16 dir_type;
4556         __le16 dir_ordinal;
4557         __le16 dir_ext;
4558         __le16 unused_0;
4559 };
4560
4561 /* Output (16 bytes) */
4562 struct hwrm_nvm_verify_update_output {
4563         __le16 error_code;
4564         __le16 req_type;
4565         __le16 seq_id;
4566         __le16 resp_len;
4567         __le32 unused_0;
4568         u8 unused_1;
4569         u8 unused_2;
4570         u8 unused_3;
4571         u8 valid;
4572 };
4573
4574 /* hwrm_nvm_install_update */
4575 /* Input (24 bytes) */
4576 struct hwrm_nvm_install_update_input {
4577         __le16 req_type;
4578         __le16 cmpl_ring;
4579         __le16 seq_id;
4580         __le16 target_id;
4581         __le64 resp_addr;
4582         __le32 install_type;
4583         #define NVM_INSTALL_UPDATE_REQ_INSTALL_TYPE_NORMAL         0x0UL
4584         #define NVM_INSTALL_UPDATE_REQ_INSTALL_TYPE_ALL    0xffffffffUL
4585         __le32 unused_0;
4586 };
4587
4588 /* Output (24 bytes) */
4589 struct hwrm_nvm_install_update_output {
4590         __le16 error_code;
4591         __le16 req_type;
4592         __le16 seq_id;
4593         __le16 resp_len;
4594         __le64 installed_items;
4595         u8 result;
4596         #define NVM_INSTALL_UPDATE_RESP_RESULT_SUCCESS             0x0UL
4597         u8 problem_item;
4598         #define NVM_INSTALL_UPDATE_RESP_PROBLEM_ITEM_NONE          0x0UL
4599         #define NVM_INSTALL_UPDATE_RESP_PROBLEM_ITEM_PACKAGE      0xffUL
4600         u8 reset_required;
4601         #define NVM_INSTALL_UPDATE_RESP_RESET_REQUIRED_NONE       0x0UL
4602         #define NVM_INSTALL_UPDATE_RESP_RESET_REQUIRED_PCI         0x1UL
4603         #define NVM_INSTALL_UPDATE_RESP_RESET_REQUIRED_POWER      0x2UL
4604         u8 unused_0;
4605         u8 unused_1;
4606         u8 unused_2;
4607         u8 unused_3;
4608         u8 valid;
4609 };
4610
4611 /* Hardware Resource Manager Specification */
4612 /* Input (16 bytes) */
4613 struct input {
4614         __le16 req_type;
4615         __le16 cmpl_ring;
4616         __le16 seq_id;
4617         __le16 target_id;
4618         __le64 resp_addr;
4619 };
4620
4621 /* Output (8 bytes) */
4622 struct output {
4623         __le16 error_code;
4624         __le16 req_type;
4625         __le16 seq_id;
4626         __le16 resp_len;
4627 };
4628
4629 /* Command numbering (8 bytes) */
4630 struct cmd_nums {
4631         __le16 req_type;
4632         #define HWRM_VER_GET                                       (0x0UL)
4633         #define HWRM_FUNC_BUF_UNRGTR                               (0xeUL)
4634         #define HWRM_FUNC_VF_CFG                                   (0xfUL)
4635         #define RESERVED1                                          (0x10UL)
4636         #define HWRM_FUNC_RESET                            (0x11UL)
4637         #define HWRM_FUNC_GETFID                                   (0x12UL)
4638         #define HWRM_FUNC_VF_ALLOC                                 (0x13UL)
4639         #define HWRM_FUNC_VF_FREE                                  (0x14UL)
4640         #define HWRM_FUNC_QCAPS                            (0x15UL)
4641         #define HWRM_FUNC_QCFG                                     (0x16UL)
4642         #define HWRM_FUNC_CFG                                      (0x17UL)
4643         #define HWRM_FUNC_QSTATS                                   (0x18UL)
4644         #define HWRM_FUNC_CLR_STATS                                (0x19UL)
4645         #define HWRM_FUNC_DRV_UNRGTR                               (0x1aUL)
4646         #define HWRM_FUNC_VF_RESC_FREE                             (0x1bUL)
4647         #define HWRM_FUNC_VF_VNIC_IDS_QUERY                        (0x1cUL)
4648         #define HWRM_FUNC_DRV_RGTR                                 (0x1dUL)
4649         #define HWRM_FUNC_DRV_QVER                                 (0x1eUL)
4650         #define HWRM_FUNC_BUF_RGTR                                 (0x1fUL)
4651         #define HWRM_PORT_PHY_CFG                                  (0x20UL)
4652         #define HWRM_PORT_MAC_CFG                                  (0x21UL)
4653         #define HWRM_PORT_TS_QUERY                                 (0x22UL)
4654         #define HWRM_PORT_QSTATS                                   (0x23UL)
4655         #define HWRM_PORT_LPBK_QSTATS                              (0x24UL)
4656         #define HWRM_PORT_CLR_STATS                                (0x25UL)
4657         #define HWRM_PORT_LPBK_CLR_STATS                           (0x26UL)
4658         #define HWRM_PORT_PHY_QCFG                                 (0x27UL)
4659         #define HWRM_PORT_MAC_QCFG                                 (0x28UL)
4660         #define RESERVED7                                          (0x29UL)
4661         #define HWRM_PORT_PHY_QCAPS                                (0x2aUL)
4662         #define HWRM_PORT_PHY_I2C_WRITE                    (0x2bUL)
4663         #define HWRM_PORT_PHY_I2C_READ                             (0x2cUL)
4664         #define HWRM_PORT_LED_CFG                                  (0x2dUL)
4665         #define HWRM_PORT_LED_QCFG                                 (0x2eUL)
4666         #define HWRM_PORT_LED_QCAPS                                (0x2fUL)
4667         #define HWRM_QUEUE_QPORTCFG                                (0x30UL)
4668         #define HWRM_QUEUE_QCFG                            (0x31UL)
4669         #define HWRM_QUEUE_CFG                                     (0x32UL)
4670         #define RESERVED2                                          (0x33UL)
4671         #define RESERVED3                                          (0x34UL)
4672         #define HWRM_QUEUE_PFCENABLE_QCFG                          (0x35UL)
4673         #define HWRM_QUEUE_PFCENABLE_CFG                           (0x36UL)
4674         #define HWRM_QUEUE_PRI2COS_QCFG                    (0x37UL)
4675         #define HWRM_QUEUE_PRI2COS_CFG                             (0x38UL)
4676         #define HWRM_QUEUE_COS2BW_QCFG                             (0x39UL)
4677         #define HWRM_QUEUE_COS2BW_CFG                              (0x3aUL)
4678         #define HWRM_VNIC_ALLOC                            (0x40UL)
4679         #define HWRM_VNIC_FREE                                     (0x41UL)
4680         #define HWRM_VNIC_CFG                                      (0x42UL)
4681         #define HWRM_VNIC_QCFG                                     (0x43UL)
4682         #define HWRM_VNIC_TPA_CFG                                  (0x44UL)
4683         #define HWRM_VNIC_TPA_QCFG                                 (0x45UL)
4684         #define HWRM_VNIC_RSS_CFG                                  (0x46UL)
4685         #define HWRM_VNIC_RSS_QCFG                                 (0x47UL)
4686         #define HWRM_VNIC_PLCMODES_CFG                             (0x48UL)
4687         #define HWRM_VNIC_PLCMODES_QCFG                    (0x49UL)
4688         #define HWRM_VNIC_QCAPS                            (0x4aUL)
4689         #define HWRM_RING_ALLOC                            (0x50UL)
4690         #define HWRM_RING_FREE                                     (0x51UL)
4691         #define HWRM_RING_CMPL_RING_QAGGINT_PARAMS                 (0x52UL)
4692         #define HWRM_RING_CMPL_RING_CFG_AGGINT_PARAMS              (0x53UL)
4693         #define HWRM_RING_RESET                            (0x5eUL)
4694         #define HWRM_RING_GRP_ALLOC                                (0x60UL)
4695         #define HWRM_RING_GRP_FREE                                 (0x61UL)
4696         #define RESERVED5                                          (0x64UL)
4697         #define RESERVED6                                          (0x65UL)
4698         #define HWRM_VNIC_RSS_COS_LB_CTX_ALLOC                     (0x70UL)
4699         #define HWRM_VNIC_RSS_COS_LB_CTX_FREE                      (0x71UL)
4700         #define HWRM_CFA_L2_FILTER_ALLOC                           (0x90UL)
4701         #define HWRM_CFA_L2_FILTER_FREE                    (0x91UL)
4702         #define HWRM_CFA_L2_FILTER_CFG                             (0x92UL)
4703         #define HWRM_CFA_L2_SET_RX_MASK                    (0x93UL)
4704         #define RESERVED4                                          (0x94UL)
4705         #define HWRM_CFA_TUNNEL_FILTER_ALLOC                       (0x95UL)
4706         #define HWRM_CFA_TUNNEL_FILTER_FREE                        (0x96UL)
4707         #define HWRM_CFA_ENCAP_RECORD_ALLOC                        (0x97UL)
4708         #define HWRM_CFA_ENCAP_RECORD_FREE                         (0x98UL)
4709         #define HWRM_CFA_NTUPLE_FILTER_ALLOC                       (0x99UL)
4710         #define HWRM_CFA_NTUPLE_FILTER_FREE                        (0x9aUL)
4711         #define HWRM_CFA_NTUPLE_FILTER_CFG                         (0x9bUL)
4712         #define HWRM_CFA_EM_FLOW_ALLOC                             (0x9cUL)
4713         #define HWRM_CFA_EM_FLOW_FREE                              (0x9dUL)
4714         #define HWRM_CFA_EM_FLOW_CFG                               (0x9eUL)
4715         #define HWRM_TUNNEL_DST_PORT_QUERY                         (0xa0UL)
4716         #define HWRM_TUNNEL_DST_PORT_ALLOC                         (0xa1UL)
4717         #define HWRM_TUNNEL_DST_PORT_FREE                          (0xa2UL)
4718         #define HWRM_STAT_CTX_ALLOC                                (0xb0UL)
4719         #define HWRM_STAT_CTX_FREE                                 (0xb1UL)
4720         #define HWRM_STAT_CTX_QUERY                                (0xb2UL)
4721         #define HWRM_STAT_CTX_CLR_STATS                    (0xb3UL)
4722         #define HWRM_FW_RESET                                      (0xc0UL)
4723         #define HWRM_FW_QSTATUS                            (0xc1UL)
4724         #define HWRM_FW_SET_TIME                                   (0xc8UL)
4725         #define HWRM_FW_GET_TIME                                   (0xc9UL)
4726         #define HWRM_FW_SET_STRUCTURED_DATA                        (0xcaUL)
4727         #define HWRM_FW_GET_STRUCTURED_DATA                        (0xcbUL)
4728         #define HWRM_FW_IPC_MAILBOX                                (0xccUL)
4729         #define HWRM_EXEC_FWD_RESP                                 (0xd0UL)
4730         #define HWRM_REJECT_FWD_RESP                               (0xd1UL)
4731         #define HWRM_FWD_RESP                                      (0xd2UL)
4732         #define HWRM_FWD_ASYNC_EVENT_CMPL                          (0xd3UL)
4733         #define HWRM_TEMP_MONITOR_QUERY                    (0xe0UL)
4734         #define HWRM_WOL_FILTER_ALLOC                              (0xf0UL)
4735         #define HWRM_WOL_FILTER_FREE                               (0xf1UL)
4736         #define HWRM_WOL_FILTER_QCFG                               (0xf2UL)
4737         #define HWRM_WOL_REASON_QCFG                               (0xf3UL)
4738         #define HWRM_DBG_READ_DIRECT                               (0xff10UL)
4739         #define HWRM_DBG_READ_INDIRECT                             (0xff11UL)
4740         #define HWRM_DBG_WRITE_DIRECT                              (0xff12UL)
4741         #define HWRM_DBG_WRITE_INDIRECT                    (0xff13UL)
4742         #define HWRM_DBG_DUMP                                      (0xff14UL)
4743         #define HWRM_NVM_GET_VARIABLE                              (0xfff1UL)
4744         #define HWRM_NVM_SET_VARIABLE                              (0xfff2UL)
4745         #define HWRM_NVM_INSTALL_UPDATE                    (0xfff3UL)
4746         #define HWRM_NVM_MODIFY                            (0xfff4UL)
4747         #define HWRM_NVM_VERIFY_UPDATE                             (0xfff5UL)
4748         #define HWRM_NVM_GET_DEV_INFO                              (0xfff6UL)
4749         #define HWRM_NVM_ERASE_DIR_ENTRY                           (0xfff7UL)
4750         #define HWRM_NVM_MOD_DIR_ENTRY                             (0xfff8UL)
4751         #define HWRM_NVM_FIND_DIR_ENTRY                    (0xfff9UL)
4752         #define HWRM_NVM_GET_DIR_ENTRIES                           (0xfffaUL)
4753         #define HWRM_NVM_GET_DIR_INFO                              (0xfffbUL)
4754         #define HWRM_NVM_RAW_DUMP                                  (0xfffcUL)
4755         #define HWRM_NVM_READ                                      (0xfffdUL)
4756         #define HWRM_NVM_WRITE                                     (0xfffeUL)
4757         #define HWRM_NVM_RAW_WRITE_BLK                             (0xffffUL)
4758         __le16 unused_0[3];
4759 };
4760
4761 /* Return Codes (8 bytes) */
4762 struct ret_codes {
4763         __le16 error_code;
4764         #define HWRM_ERR_CODE_SUCCESS                              (0x0UL)
4765         #define HWRM_ERR_CODE_FAIL                                 (0x1UL)
4766         #define HWRM_ERR_CODE_INVALID_PARAMS                       (0x2UL)
4767         #define HWRM_ERR_CODE_RESOURCE_ACCESS_DENIED               (0x3UL)
4768         #define HWRM_ERR_CODE_RESOURCE_ALLOC_ERROR                 (0x4UL)
4769         #define HWRM_ERR_CODE_INVALID_FLAGS                        (0x5UL)
4770         #define HWRM_ERR_CODE_INVALID_ENABLES                      (0x6UL)
4771         #define HWRM_ERR_CODE_HWRM_ERROR                           (0xfUL)
4772         #define HWRM_ERR_CODE_UNKNOWN_ERR                          (0xfffeUL)
4773         #define HWRM_ERR_CODE_CMD_NOT_SUPPORTED            (0xffffUL)
4774         __le16 unused_0[3];
4775 };
4776
4777 /* Output (16 bytes) */
4778 struct hwrm_err_output {
4779         __le16 error_code;
4780         __le16 req_type;
4781         __le16 seq_id;
4782         __le16 resp_len;
4783         __le32 opaque_0;
4784         __le16 opaque_1;
4785         u8 cmd_err;
4786         u8 valid;
4787 };
4788
4789 /* Port Tx Statistics Formats (408 bytes) */
4790 struct tx_port_stats {
4791         __le64 tx_64b_frames;
4792         __le64 tx_65b_127b_frames;
4793         __le64 tx_128b_255b_frames;
4794         __le64 tx_256b_511b_frames;
4795         __le64 tx_512b_1023b_frames;
4796         __le64 tx_1024b_1518_frames;
4797         __le64 tx_good_vlan_frames;
4798         __le64 tx_1519b_2047_frames;
4799         __le64 tx_2048b_4095b_frames;
4800         __le64 tx_4096b_9216b_frames;
4801         __le64 tx_9217b_16383b_frames;
4802         __le64 tx_good_frames;
4803         __le64 tx_total_frames;
4804         __le64 tx_ucast_frames;
4805         __le64 tx_mcast_frames;
4806         __le64 tx_bcast_frames;
4807         __le64 tx_pause_frames;
4808         __le64 tx_pfc_frames;
4809         __le64 tx_jabber_frames;
4810         __le64 tx_fcs_err_frames;
4811         __le64 tx_control_frames;
4812         __le64 tx_oversz_frames;
4813         __le64 tx_single_dfrl_frames;
4814         __le64 tx_multi_dfrl_frames;
4815         __le64 tx_single_coll_frames;
4816         __le64 tx_multi_coll_frames;
4817         __le64 tx_late_coll_frames;
4818         __le64 tx_excessive_coll_frames;
4819         __le64 tx_frag_frames;
4820         __le64 tx_err;
4821         __le64 tx_tagged_frames;
4822         __le64 tx_dbl_tagged_frames;
4823         __le64 tx_runt_frames;
4824         __le64 tx_fifo_underruns;
4825         __le64 tx_pfc_ena_frames_pri0;
4826         __le64 tx_pfc_ena_frames_pri1;
4827         __le64 tx_pfc_ena_frames_pri2;
4828         __le64 tx_pfc_ena_frames_pri3;
4829         __le64 tx_pfc_ena_frames_pri4;
4830         __le64 tx_pfc_ena_frames_pri5;
4831         __le64 tx_pfc_ena_frames_pri6;
4832         __le64 tx_pfc_ena_frames_pri7;
4833         __le64 tx_eee_lpi_events;
4834         __le64 tx_eee_lpi_duration;
4835         __le64 tx_llfc_logical_msgs;
4836         __le64 tx_hcfc_msgs;
4837         __le64 tx_total_collisions;
4838         __le64 tx_bytes;
4839         __le64 tx_xthol_frames;
4840         __le64 tx_stat_discard;
4841         __le64 tx_stat_error;
4842 };
4843
4844 /* Port Rx Statistics Formats (528 bytes) */
4845 struct rx_port_stats {
4846         __le64 rx_64b_frames;
4847         __le64 rx_65b_127b_frames;
4848         __le64 rx_128b_255b_frames;
4849         __le64 rx_256b_511b_frames;
4850         __le64 rx_512b_1023b_frames;
4851         __le64 rx_1024b_1518_frames;
4852         __le64 rx_good_vlan_frames;
4853         __le64 rx_1519b_2047b_frames;
4854         __le64 rx_2048b_4095b_frames;
4855         __le64 rx_4096b_9216b_frames;
4856         __le64 rx_9217b_16383b_frames;
4857         __le64 rx_total_frames;
4858         __le64 rx_ucast_frames;
4859         __le64 rx_mcast_frames;
4860         __le64 rx_bcast_frames;
4861         __le64 rx_fcs_err_frames;
4862         __le64 rx_ctrl_frames;
4863         __le64 rx_pause_frames;
4864         __le64 rx_pfc_frames;
4865         __le64 rx_unsupported_opcode_frames;
4866         __le64 rx_unsupported_da_pausepfc_frames;
4867         __le64 rx_wrong_sa_frames;
4868         __le64 rx_align_err_frames;
4869         __le64 rx_oor_len_frames;
4870         __le64 rx_code_err_frames;
4871         __le64 rx_false_carrier_frames;
4872         __le64 rx_ovrsz_frames;
4873         __le64 rx_jbr_frames;
4874         __le64 rx_mtu_err_frames;
4875         __le64 rx_match_crc_frames;
4876         __le64 rx_promiscuous_frames;
4877         __le64 rx_tagged_frames;
4878         __le64 rx_double_tagged_frames;
4879         __le64 rx_trunc_frames;
4880         __le64 rx_good_frames;
4881         __le64 rx_pfc_xon2xoff_frames_pri0;
4882         __le64 rx_pfc_xon2xoff_frames_pri1;
4883         __le64 rx_pfc_xon2xoff_frames_pri2;
4884         __le64 rx_pfc_xon2xoff_frames_pri3;
4885         __le64 rx_pfc_xon2xoff_frames_pri4;
4886         __le64 rx_pfc_xon2xoff_frames_pri5;
4887         __le64 rx_pfc_xon2xoff_frames_pri6;
4888         __le64 rx_pfc_xon2xoff_frames_pri7;
4889         __le64 rx_pfc_ena_frames_pri0;
4890         __le64 rx_pfc_ena_frames_pri1;
4891         __le64 rx_pfc_ena_frames_pri2;
4892         __le64 rx_pfc_ena_frames_pri3;
4893         __le64 rx_pfc_ena_frames_pri4;
4894         __le64 rx_pfc_ena_frames_pri5;
4895         __le64 rx_pfc_ena_frames_pri6;
4896         __le64 rx_pfc_ena_frames_pri7;
4897         __le64 rx_sch_crc_err_frames;
4898         __le64 rx_undrsz_frames;
4899         __le64 rx_frag_frames;
4900         __le64 rx_eee_lpi_events;
4901         __le64 rx_eee_lpi_duration;
4902         __le64 rx_llfc_physical_msgs;
4903         __le64 rx_llfc_logical_msgs;
4904         __le64 rx_llfc_msgs_with_crc_err;
4905         __le64 rx_hcfc_msgs;
4906         __le64 rx_hcfc_msgs_with_crc_err;
4907         __le64 rx_bytes;
4908         __le64 rx_runt_bytes;
4909         __le64 rx_runt_frames;
4910         __le64 rx_stat_discard;
4911         __le64 rx_stat_err;
4912 };
4913
4914 /* Periodic Statistics Context DMA to host (160 bytes) */
4915 struct ctx_hw_stats {
4916         __le64 rx_ucast_pkts;
4917         __le64 rx_mcast_pkts;
4918         __le64 rx_bcast_pkts;
4919         __le64 rx_discard_pkts;
4920         __le64 rx_drop_pkts;
4921         __le64 rx_ucast_bytes;
4922         __le64 rx_mcast_bytes;
4923         __le64 rx_bcast_bytes;
4924         __le64 tx_ucast_pkts;
4925         __le64 tx_mcast_pkts;
4926         __le64 tx_bcast_pkts;
4927         __le64 tx_discard_pkts;
4928         __le64 tx_drop_pkts;
4929         __le64 tx_ucast_bytes;
4930         __le64 tx_mcast_bytes;
4931         __le64 tx_bcast_bytes;
4932         __le64 tpa_pkts;
4933         __le64 tpa_bytes;
4934         __le64 tpa_events;
4935         __le64 tpa_aborts;
4936 };
4937
4938 /* Structure data header (16 bytes) */
4939 struct hwrm_struct_hdr {
4940         __le16 struct_id;
4941         #define STRUCT_HDR_STRUCT_ID_LLDP_CFG                      0x41bUL
4942         #define STRUCT_HDR_STRUCT_ID_DCBX_ETS_CFG                  0x41dUL
4943         #define STRUCT_HDR_STRUCT_ID_DCBX_PFC_CFG                  0x41fUL
4944         #define STRUCT_HDR_STRUCT_ID_DCBX_APP_CFG                  0x421UL
4945         #define STRUCT_HDR_STRUCT_ID_DCBX_STATE_CFG                0x422UL
4946         #define STRUCT_HDR_STRUCT_ID_LLDP_GENERIC_CFG              0x424UL
4947         #define STRUCT_HDR_STRUCT_ID_LLDP_DEVICE_CFG               0x426UL
4948         __le16 len;
4949         u8 version;
4950         u8 count;
4951         __le16 subtype;
4952         __le16 next_offset;
4953         #define STRUCT_HDR_NEXT_OFFSET_LAST                        0x0UL
4954         __le16 unused_0[3];
4955 };
4956
4957 /* DCBX Application configuration structure (8 bytes) */
4958 struct hwrm_struct_data_dcbx_app_cfg {
4959         __le16 protocol_id;
4960         u8 protocol_selector;
4961         #define STRUCT_DATA_DCBX_APP_CFG_PROTOCOL_SELECTOR_ETHER_TYPE 0x1UL
4962         #define STRUCT_DATA_DCBX_APP_CFG_PROTOCOL_SELECTOR_TCP_PORT 0x2UL
4963         #define STRUCT_DATA_DCBX_APP_CFG_PROTOCOL_SELECTOR_UDP_PORT 0x3UL
4964         #define STRUCT_DATA_DCBX_APP_CFG_PROTOCOL_SELECTOR_TCP_UDP_PORT 0x4UL
4965         u8 priority;
4966         u8 valid;
4967         u8 unused_0[3];
4968 };
4969
4970 #endif