19#define ERRFILE ERRFILE_tg3
30#define DRV_MODULE_NAME "bnxt"
31#define IPXE_VERSION_MAJOR 1
32#define IPXE_VERSION_MINOR 0
33#define IPXE_VERSION_UPDATE 0
38#define FLAG_SET(f, b) ((f) |= (b))
39#define FLAG_TEST(f, b) ((f) & (b))
40#define FLAG_RESET(f, b) ((f) &= ~(b))
41#define BNXT_FLAG_HWRM_SHORT_CMD_SUPP 0x0001
42#define BNXT_FLAG_HWRM_SHORT_CMD_REQ 0x0002
43#define BNXT_FLAG_RESOURCE_QCAPS_SUPPORT 0x0004
44#define BNXT_FLAG_MULTI_HOST 0x0008
45#define BNXT_FLAG_NPAR_MODE 0x0010
46#define BNXT_FLAG_ATOMICS_ENABLE 0x0020
47#define BNXT_FLAG_PCI_VF 0x0040
48#define BNXT_FLAG_LINK_SPEEDS2 0x0080
49#define BNXT_FLAG_IS_CHIP_P5 0x0100
50#define BNXT_FLAG_IS_CHIP_P5_PLUS 0x0200
51#define BNXT_FLAG_IS_CHIP_P7 0x0400
55#define STATUS_SUCCESS 0
56#define STATUS_FAILURE 1
57#define STATUS_NO_RESOURCE 2
58#define STATUS_INVALID_PARAMETER 3
59#define STATUS_LINK_ACTIVE 4
60#define STATUS_LINK_DOWN 5
61#define STATUS_LINK_SETTING_MISMATCH 6
62#define STATUS_TOO_MANY_FRAGMENTS 7
63#define STATUS_TRANSMIT_ABORTED 8
64#define STATUS_TRANSMIT_ERROR 9
65#define STATUS_RECEIVE_ABORTED 10
66#define STATUS_RECEIVE_ERROR 11
67#define STATUS_INVALID_PACKET_SIZE 12
68#define STATUS_NO_MAP_REGISTER 13
69#define STATUS_UNKNOWN_ADAPTER 14
70#define STATUS_NO_COALESCE_BUFFER 15
71#define STATUS_UNKNOWN_PHY 16
72#define STATUS_PENDING 17
73#define STATUS_NO_TX_DESC 18
74#define STATUS_NO_TX_BD 19
75#define STATUS_UNKNOWN_MEDIUM 20
76#define STATUS_RESOURCE 21
77#define STATUS_ABORT_REASON_DISCONNECT 22
78#define STATUS_ABORT_REASON_UPLOAD 23
79#define STATUS_TIMEOUT 0xffff
83#define RX_MASK_ACCEPT_NONE 0x0000
84#define RX_MASK_ACCEPT_UNICAST 0x0001
85#define RX_MASK_ACCEPT_MULTICAST 0x0002
86#define RX_MASK_ACCEPT_ALL_MULTICAST 0x0004
87#define RX_MASK_ACCEPT_BROADCAST 0x0008
88#define RX_MASK_ACCEPT_ERROR_PACKET 0x0010
89#define RX_MASK_PROMISCUOUS_MODE 0x10000
93#define MEDIUM_SPEED_AUTONEG 0x0000L
94#define MEDIUM_SPEED_UNKNOWN 0x0000L
95#define MEDIUM_SPEED_10MBPS 0x0100L
96#define MEDIUM_SPEED_100MBPS 0x0200L
97#define MEDIUM_SPEED_1000MBPS 0x0300L
98#define MEDIUM_SPEED_2500MBPS 0x0400L
99#define MEDIUM_SPEED_10GBPS 0x0600L
100#define MEDIUM_SPEED_20GBPS 0x0700L
101#define MEDIUM_SPEED_25GBPS 0x0800L
102#define MEDIUM_SPEED_40GBPS 0x0900L
103#define MEDIUM_SPEED_50GBPS 0x0a00L
104#define MEDIUM_SPEED_100GBPS 0x0b00L
105#define MEDIUM_SPEED_200GBPS 0x0c00L
106#define MEDIUM_SPEED_50PAM4GBPS 0x0d00L
107#define MEDIUM_SPEED_100PAM4GBPS 0x0e00L
108#define MEDIUM_SPEED_100PAM4_112GBPS 0x0f00L
109#define MEDIUM_SPEED_200PAM4_112GBPS 0x1000L
110#define MEDIUM_SPEED_400PAM4GBPS 0x2000L
111#define MEDIUM_SPEED_400PAM4_112GBPS 0x3000L
112#define MEDIUM_SPEED_AUTONEG_1G_FALLBACK 0x8000L
113#define MEDIUM_SPEED_AUTONEG_2_5G_FALLBACK 0x8100L
114#define MEDIUM_SPEED_HARDWARE_DEFAULT 0xff00L
115#define MEDIUM_SPEED_MASK 0xff00L
116#define GET_MEDIUM_SPEED(m) ((m) & MEDIUM_SPEED_MASK)
117#define SET_MEDIUM_SPEED(bp, s) ((bp->medium & ~MEDIUM_SPEED_MASK) | s)
118#define MEDIUM_UNKNOWN_DUPLEX 0x00000L
119#define MEDIUM_FULL_DUPLEX 0x00000L
120#define MEDIUM_HALF_DUPLEX 0x10000L
121#define GET_MEDIUM_DUPLEX(m) ((m) & MEDIUM_HALF_DUPLEX)
122#define SET_MEDIUM_DUPLEX(bp, d) ((bp->medium & ~MEDIUM_HALF_DUPLEX) | d)
123#define MEDIUM_SELECTIVE_AUTONEG 0x01000000L
124#define GET_MEDIUM_AUTONEG_MODE(m) ((m) & 0xff000000L)
125#define PCICFG_ME_REGISTER 0x98
126#define GRC_COM_CHAN_BASE 0
127#define GRC_COM_CHAN_TRIG 0x100
128#define GRC_IND_BAR_0_ADDR 0x78
129#define GRC_IND_BAR_1_ADDR 0x7C
130#define GRC_IND_BAR_0_DATA 0x80
131#define GRC_IND_BAR_1_DATA 0x84
132#define GRC_BASE_WIN_0 0x400
133#define GRC_DATA_WIN_0 0x1000
134#define HWRM_CMD_DEFAULT_TIMEOUT 500
135#define HWRM_CMD_POLL_WAIT_TIME 100
136#define HWRM_CMD_DEFAULT_MULTIPLAYER(a) ((a) * 10)
137#define HWRM_CMD_FLASH_MULTIPLAYER(a) ((a) * 100)
138#define HWRM_CMD_FLASH_ERASE_MULTIPLAYER(a) ((a) * 1000)
139#define HWRM_CMD_WAIT(b) ((bp->hwrm_cmd_timeout) * (b))
140#define MAX_ETHERNET_PACKET_BUFFER_SIZE 1536
141#define DEFAULT_NUMBER_OF_CMPL_RINGS 0x01
142#define DEFAULT_NUMBER_OF_TX_RINGS 0x01
143#define DEFAULT_NUMBER_OF_RX_RINGS 0x01
144#define DEFAULT_NUMBER_OF_RING_GRPS 0x01
145#define DEFAULT_NUMBER_OF_STAT_CTXS 0x01
146#define NUM_RX_BUFFERS 8
147#define MAX_RX_DESC_CNT 16
148#define MAX_TX_DESC_CNT 64
149#define MAX_CQ_DESC_CNT 128
150#define TX_RING_BUFFER_SIZE (MAX_TX_DESC_CNT * sizeof(struct tx_bd_short))
151#define RX_RING_BUFFER_SIZE \
152 (MAX_RX_DESC_CNT * sizeof(struct rx_prod_pkt_bd))
153#define CQ_RING_BUFFER_SIZE (MAX_CQ_DESC_CNT * sizeof(struct cmpl_base))
154#define BNXT_DMA_ALIGNMENT 256
155#define DMA_ALIGN_4K 4096
156#define REQ_BUFFER_SIZE 1024
157#define RESP_BUFFER_SIZE 1024
158#define DMA_BUFFER_SIZE 1024
159#define LM_PAGE_BITS(a) (a)
160#define BNXT_RX_STD_DMA_SZ (1536 + 64 + 2)
161#define NEXT_IDX(N, S) (((N) + 1) & ((S) - 1))
162#define BD_NOW(bd, entry, len) (&((u8 *)(bd))[(entry) * (len)])
163#define BNXT_CQ_INTR_MODE(vf) (\
164 ((vf) ? RING_ALLOC_REQ_INT_MODE_MSIX : RING_ALLOC_REQ_INT_MODE_POLL))
166#define LINK_DEFAULT_TIMEOUT 1000
167#define LINK_POLL_WAIT_TIME 100
169 RX_MASK_ACCEPT_BROADCAST | \
170 RX_MASK_ACCEPT_ALL_MULTICAST | \
171 RX_MASK_ACCEPT_MULTICAST)
172#define MAX_NQ_DESC_CNT 64
173#define NQ_RING_BUFFER_SIZE (MAX_NQ_DESC_CNT * sizeof(struct cmpl_base))
174#define RX_RING_QID (FLAG_TEST(bp->flags, BNXT_FLAG_IS_CHIP_P5_PLUS) ? bp->queue_id : 0)
175#define STAT_CTX_ID ((bp->vf || FLAG_TEST(bp->flags, BNXT_FLAG_IS_CHIP_P5_PLUS)) ? bp->stat_ctx_id : 0)
176#define TX_AVAIL(r) (r - 1)
177#define TX_IN_USE(a, b, c) ((a - b) & (c - 1))
178#define NQ_DMA_ADDR(bp) ( dma ( &bp->nq_mapping, bp->nq.bd_virt ) )
179#define CQ_DMA_ADDR(bp) ( dma ( &bp->cq_mapping, bp->cq.bd_virt ) )
180#define TX_DMA_ADDR(bp) ( dma ( &bp->tx_mapping, bp->tx.bd_virt ) )
181#define RX_DMA_ADDR(bp) ( dma ( &bp->rx_mapping, bp->rx.bd_virt ) )
182#define REQ_DMA_ADDR(bp) ( dma ( &bp->req_mapping, bp->hwrm_addr_req ) )
183#define RESP_DMA_ADDR(bp) ( dma ( &bp->resp_mapping, bp->hwrm_addr_resp ) )
184#define DMA_DMA_ADDR(bp) ( dma ( &bp->dma_mapped, bp->hwrm_addr_dma ) )
185#define NO_MORE_NQ_BD_TO_SERVICE 1
186#define SERVICE_NEXT_NQ_BD 0
187#define NO_MORE_CQ_BD_TO_SERVICE 1
188#define SERVICE_NEXT_CQ_BD 0
189#define MAC_HDR_SIZE 12
190#define VLAN_HDR_SIZE 4
191#define ETHERTYPE_VLAN 0x8100
192#define BYTE_SWAP_S(w) (\
193 (((w) & 0xff00) >> 8) | \
194 (((w) & 0x00ff) << 8))
195#define DB_OFFSET_PF 0x10000
196#define DB_OFFSET_VF 0x4000
197#define DBC_MSG_IDX(idx) (\
198 ((idx) << DBC_DBC_INDEX_SFT) & DBC_DBC_INDEX_MASK)
199#define DBC_MSG_XID(xid, flg) (\
200 (((xid) << DBC_DBC_XID_SFT) & DBC_DBC_XID_MASK) | \
201 DBC_DBC_PATH_L2 | (FLAG_TEST ( bp->flags, BNXT_FLAG_IS_CHIP_P7 ) ? DBC_DBC_VALID : 0) | (flg))
202#define DBC_MSG_EPCH(idx) (\
203 ((idx) << DBC_DBC_EPOCH_SFT))
204#define DBC_MSG_TOGGLE(idx) (\
205 ((idx) << DBC_DBC_TOGGLE_SFT) & DBC_DBC_TOGGLE_MASK)
206#define PHY_STATUS 0x0001
207#define PHY_SPEED 0x0002
208#define DETECT_MEDIA 0x0004
209#define SUPPORT_SPEEDS 0x0008
210#define SUPPORT_SPEEDS2 0x0010
211#define QCFG_PHY_ALL (\
212 SUPPORT_SPEEDS | SUPPORT_SPEEDS2 | \
213 DETECT_MEDIA | PHY_SPEED | PHY_STATUS)
214#define str_mbps "Mbps"
215#define str_gbps "Gbps"
220#define LINK_SPEED_DRV_NUM 203
221#define LINK_SPEED_DRV_MASK 0x0000000F
222#define LINK_SPEED_DRV_SHIFT 0
223#define LINK_SPEED_DRV_AUTONEG 0x0
224#define NS_LINK_SPEED_DRV_AUTONEG 0x0
225#define LINK_SPEED_DRV_1G 0x1
226#define NS_LINK_SPEED_DRV_1G 0x1
227#define LINK_SPEED_DRV_10G 0x2
228#define NS_LINK_SPEED_DRV_10G 0x2
229#define LINK_SPEED_DRV_25G 0x3
230#define NS_LINK_SPEED_DRV_25G 0x3
231#define LINK_SPEED_DRV_40G 0x4
232#define NS_LINK_SPEED_DRV_40G 0x4
233#define LINK_SPEED_DRV_50G 0x5
234#define NS_LINK_SPEED_DRV_50G 0x5
235#define LINK_SPEED_DRV_100G 0x6
236#define NS_LINK_SPEED_DRV_100G 0x6
237#define LINK_SPEED_DRV_200G 0x7
238#define NS_LINK_SPEED_DRV_200G 0x7
239#define LINK_SPEED_DRV_2_5G 0xE
240#define NS_LINK_SPEED_DRV_2_5G 0xE
241#define LINK_SPEED_DRV_100M 0xF
242#define NS_LINK_SPEED_DRV_100M 0xF
244#define SPEED_CAPABILITY_DRV_MASK 0x0000FFFF
245#define SPEED_CAPABILITY_DRV_SHIFT 0
246#define SPEED_CAPABILITY_DRV_1G 0x1
247#define NS_SPEED_CAPABILITY_DRV_1G 0x1
248#define SPEED_CAPABILITY_DRV_10G 0x2
249#define NS_SPEED_CAPABILITY_DRV_10G 0x2
250#define SPEED_CAPABILITY_DRV_25G 0x4
251#define NS_SPEED_CAPABILITY_DRV_25G 0x4
252#define SPEED_CAPABILITY_DRV_40G 0x8
253#define NS_SPEED_CAPABILITY_DRV_40G 0x8
254#define SPEED_CAPABILITY_DRV_50G 0x10
255#define NS_SPEED_CAPABILITY_DRV_50G 0x10
256#define SPEED_CAPABILITY_DRV_100G 0x20
257#define NS_SPEED_CAPABILITY_DRV_100G 0x20
258#define SPEED_CAPABILITY_DRV_200G 0x40
259#define NS_SPEED_CAPABILITY_DRV_200G 0x40
260#define SPEED_CAPABILITY_DRV_2_5G 0x4000
261#define NS_SPEED_CAPABILITY_DRV_2_5G 0x4000
262#define SPEED_CAPABILITY_DRV_100M 0x8000
263#define NS_SPEED_CAPABILITY_DRV_100M 0x8000
265#define SPEED_CAPABILITY_FW_MASK 0xFFFF0000
266#define SPEED_CAPABILITY_FW_SHIFT 16
267#define SPEED_CAPABILITY_FW_1G (0x1L << 16)
268#define NS_SPEED_CAPABILITY_FW_1G (0x1)
269#define SPEED_CAPABILITY_FW_10G (0x2L << 16)
270#define NS_SPEED_CAPABILITY_FW_10G (0x2)
271#define SPEED_CAPABILITY_FW_25G (0x4L << 16)
272#define NS_SPEED_CAPABILITY_FW_25G (0x4)
273#define SPEED_CAPABILITY_FW_40G (0x8L << 16)
274#define NS_SPEED_CAPABILITY_FW_40G (0x8)
275#define SPEED_CAPABILITY_FW_50G (0x10L << 16)
276#define NS_SPEED_CAPABILITY_FW_50G (0x10)
277#define SPEED_CAPABILITY_FW_100G (0x20L << 16)
278#define NS_SPEED_CAPABILITY_FW_100G (0x20)
279#define SPEED_CAPABILITY_FW_200G (0x40L << 16)
280#define NS_SPEED_CAPABILITY_FW_200G (0x40)
281#define SPEED_CAPABILITY_FW_2_5G (0x4000L << 16)
282#define NS_SPEED_CAPABILITY_FW_2_5G (0x4000)
283#define SPEED_CAPABILITY_FW_100M (0x8000UL << 16)
284#define NS_SPEED_CAPABILITY_FW_100M (0x8000)
286#define LINK_SPEED_FW_NUM 205
287#define LINK_SPEED_FW_MASK 0x00000780
288#define LINK_SPEED_FW_SHIFT 7
289#define LINK_SPEED_FW_AUTONEG (0x0L << 7)
290#define NS_LINK_SPEED_FW_AUTONEG (0x0)
291#define LINK_SPEED_FW_1G (0x1L << 7)
292#define NS_LINK_SPEED_FW_1G (0x1)
293#define LINK_SPEED_FW_10G (0x2L << 7)
294#define NS_LINK_SPEED_FW_10G (0x2)
295#define LINK_SPEED_FW_25G (0x3L << 7)
296#define NS_LINK_SPEED_FW_25G (0x3)
297#define LINK_SPEED_FW_40G (0x4L << 7)
298#define NS_LINK_SPEED_FW_40G (0x4)
299#define LINK_SPEED_FW_50G (0x5L << 7)
300#define NS_LINK_SPEED_FW_50G (0x5)
301#define LINK_SPEED_FW_100G (0x6L << 7)
302#define NS_LINK_SPEED_FW_100G (0x6)
303#define LINK_SPEED_FW_200G (0x7L << 7)
304#define NS_LINK_SPEED_FW_200G (0x7)
305#define LINK_SPEED_FW_50G_PAM4 (0x8L << 7)
306#define NS_LINK_SPEED_FW_50G_PAM4 (0x8)
307#define LINK_SPEED_FW_100G_PAM4 (0x9L << 7)
308#define NS_LINK_SPEED_FW_100G_PAM4 (0x9)
309#define LINK_SPEED_FW_100G_PAM4_112 (0xAL << 7)
310#define NS_LINK_SPEED_FW_100G_PAM4_112 (0xA)
311#define LINK_SPEED_FW_200G_PAM4_112 (0xBL << 7)
312#define NS_LINK_SPEED_FW_200G_PAM4_112 (0xB)
313#define LINK_SPEED_FW_400G_PAM4 (0xCL << 7)
314#define NS_LINK_SPEED_FW_400G_PAM4 (0xC)
315#define LINK_SPEED_FW_400G_PAM4_112 (0xDL << 7)
316#define NS_LINK_SPEED_FW_400G_PAM4_112 (0xD)
317#define LINK_SPEED_FW_2_5G (0xEL << 7)
318#define NS_LINK_SPEED_FW_2_5G (0xE)
319#define LINK_SPEED_FW_100M (0xFL << 7)
320#define NS_LINK_SPEED_FW_100M (0xF)
322#define D3_LINK_SPEED_FW_NUM 210
323#define D3_LINK_SPEED_FW_MASK 0x000F0000
324#define D3_LINK_SPEED_FW_SHIFT 16
325#define D3_LINK_SPEED_FW_AUTONEG (0x0L << 16)
326#define NS_D3_LINK_SPEED_FW_AUTONEG (0x0)
327#define D3_LINK_SPEED_FW_1G (0x1L << 16)
328#define NS_D3_LINK_SPEED_FW_1G (0x1)
329#define D3_LINK_SPEED_FW_10G (0x2L << 16)
330#define NS_D3_LINK_SPEED_FW_10G (0x2)
331#define D3_LINK_SPEED_FW_25G (0x3L << 16)
332#define NS_D3_LINK_SPEED_FW_25G (0x3)
333#define D3_LINK_SPEED_FW_40G (0x4L << 16)
334#define NS_D3_LINK_SPEED_FW_40G (0x4)
335#define D3_LINK_SPEED_FW_50G (0x5L << 16)
336#define NS_D3_LINK_SPEED_FW_50G (0x5)
337#define D3_LINK_SPEED_FW_100G (0x6L << 16)
338#define NS_D3_LINK_SPEED_FW_100G (0x6)
339#define D3_LINK_SPEED_FW_200G (0x7L << 16)
340#define NS_D3_LINK_SPEED_FW_200G (0x7)
341#define D3_LINK_SPEED_FW_2_5G (0xEL << 16)
342#define NS_D3_LINK_SPEED_FW_2_5G (0xE)
343#define D3_LINK_SPEED_FW_100M (0xFL << 16)
344#define NS_D3_LINK_SPEED_FW_100M (0xF)
346#define D3_FLOW_CONTROL_FW_NUM 211
347#define D3_FLOW_CONTROL_FW_MASK 0x00700000
348#define D3_FLOW_CONTROL_FW_SHIFT 20
349#define D3_FLOW_CONTROL_FW_AUTO (0x0L << 20)
350#define NS_D3_FLOW_CONTROL_FW_AUTO (0x0)
351#define D3_FLOW_CONTROL_FW_TX (0x1L << 20)
352#define NS_D3_FLOW_CONTROL_FW_TX (0x1)
353#define D3_FLOW_CONTROL_FW_RX (0x2L << 20)
354#define NS_D3_FLOW_CONTROL_FW_RX (0x2)
355#define D3_FLOW_CONTROL_FW_BOTH (0x3L << 20)
356#define NS_D3_FLOW_CONTROL_FW_BOTH (0x3)
357#define D3_FLOW_CONTROL_FW_NONE (0x4L << 20)
358#define NS_D3_FLOW_CONTROL_FW_NONE (0x4)
360#define PORT_CFG_LINK_SETTINGS_MEDIA_AUTO_DETECT_NUM 213
361#define PORT_CFG_LINK_SETTINGS_MEDIA_AUTO_DETECT_MASK 0x02000000
362#define PORT_CFG_LINK_SETTINGS_MEDIA_AUTO_DETECT_SHIFT 25
363#define PORT_CFG_LINK_SETTINGS_MEDIA_AUTO_DETECT_DISABLED (0x0L << 25)
364#define NS_PORT_CFG_LINK_SETTINGS_MEDIA_AUTO_DETECT_DISABLED (0x0)
365#define PORT_CFG_LINK_SETTINGS_MEDIA_AUTO_DETECT_ENABLED (0x1L << 25)
366#define NS_PORT_CFG_LINK_SETTINGS_MEDIA_AUTO_DETECT_ENABLED (0x1)
368#define FUNC_CFG_PRE_BOOT_MBA_VLAN_VALUE_NUM 357
369#define FUNC_CFG_PRE_BOOT_MBA_VLAN_VALUE_MASK 0x0000FFFF
370#define FUNC_CFG_PRE_BOOT_MBA_VLAN_VALUE_SHIFT 0
372#define FUNC_CFG_PRE_BOOT_MBA_VLAN_NUM 358
373#define FUNC_CFG_PRE_BOOT_MBA_VLAN_MASK 0x00010000
374#define FUNC_CFG_PRE_BOOT_MBA_VLAN_SHIFT 16
375#define FUNC_CFG_PRE_BOOT_MBA_VLAN_DISABLED (0x0L << 16)
376#define NS_FUNC_CFG_PRE_BOOT_MBA_VLAN_DISABLED (0x0)
377#define FUNC_CFG_PRE_BOOT_MBA_VLAN_ENABLED (0x1L << 16)
378#define NS_FUNC_CFG_PRE_BOOT_MBA_VLAN_ENABLED (0x1)
382#define TX_DOORBELL_IDX_MASK 0xffffffUL
383#define TX_DOORBELL_IDX_SFT 0
384#define TX_DOORBELL_KEY_MASK 0xf0000000UL
385#define TX_DOORBELL_KEY_SFT 28
386 #define TX_DOORBELL_KEY_TX (0x0UL << 28)
387 #define TX_DOORBELL_KEY_LAST TX_DOORBELL_KEY_TX
392#define RX_DOORBELL_IDX_MASK 0xffffffUL
393#define RX_DOORBELL_IDX_SFT 0
394#define RX_DOORBELL_KEY_MASK 0xf0000000UL
395#define RX_DOORBELL_KEY_SFT 28
396 #define RX_DOORBELL_KEY_RX (0x1UL << 28)
397 #define RX_DOORBELL_KEY_LAST RX_DOORBELL_KEY_RX
402#define CMPL_DOORBELL_IDX_MASK 0xffffffUL
403#define CMPL_DOORBELL_IDX_SFT 0
404#define CMPL_DOORBELL_IDX_VALID 0x4000000UL
405#define CMPL_DOORBELL_MASK 0x8000000UL
406#define CMPL_DOORBELL_KEY_MASK 0xf0000000UL
407#define CMPL_DOORBELL_KEY_SFT 28
408 #define CMPL_DOORBELL_KEY_CMPL (0x2UL << 28)
409 #define CMPL_DOORBELL_KEY_LAST CMPL_DOORBELL_KEY_CMPL
415 #define DBC_DBC_INDEX_MASK 0xffffffUL
416 #define DBC_DBC_INDEX_SFT 0
417 #define DBC_DBC_EPOCH 0x1000000UL
418 #define DBC_DBC_EPOCH_SFT 24
419 #define DBC_DBC_TOGGLE_MASK 0x6000000UL
420 #define DBC_DBC_TOGGLE_SFT 25
422 #define DBC_DBC_XID_MASK 0xfffffUL
423 #define DBC_DBC_XID_SFT 0
424 #define DBC_DBC_PATH_MASK 0x3000000UL
425 #define DBC_DBC_PATH_SFT 24
426 #define DBC_DBC_PATH_ROCE (0x0UL << 24)
427 #define DBC_DBC_PATH_L2 (0x1UL << 24)
428 #define DBC_DBC_PATH_ENGINE (0x2UL << 24)
429 #define DBC_DBC_PATH_LAST DBC_DBC_PATH_ENGINE
430 #define DBC_DBC_VALID 0x4000000UL
431 #define DBC_DBC_DEBUG_TRACE 0x8000000UL
432 #define DBC_DBC_TYPE_MASK 0xf0000000UL
433 #define DBC_DBC_TYPE_SFT 28
434 #define DBC_DBC_TYPE_SQ (0x0UL << 28)
435 #define DBC_DBC_TYPE_RQ (0x1UL << 28)
436 #define DBC_DBC_TYPE_SRQ (0x2UL << 28)
437 #define DBC_DBC_TYPE_SRQ_ARM (0x3UL << 28)
438 #define DBC_DBC_TYPE_CQ (0x4UL << 28)
439 #define DBC_DBC_TYPE_CQ_ARMSE (0x5UL << 28)
440 #define DBC_DBC_TYPE_CQ_ARMALL (0x6UL << 28)
441 #define DBC_DBC_TYPE_CQ_ARMENA (0x7UL << 28)
442 #define DBC_DBC_TYPE_SRQ_ARMENA (0x8UL << 28)
443 #define DBC_DBC_TYPE_CQ_CUTOFF_ACK (0x9UL << 28)
444 #define DBC_DBC_TYPE_NQ (0xaUL << 28)
445 #define DBC_DBC_TYPE_NQ_ARM (0xbUL << 28)
446 #define DBC_DBC_TYPE_NULL (0xfUL << 28)
447 #define DBC_DBC_TYPE_LAST DBC_DBC_TYPE_NULL
455#define TX_BD_SHORT_TYPE_MASK 0x3fUL
456#define TX_BD_SHORT_TYPE_SFT 0
457#define TX_BD_SHORT_TYPE_TX_BD_SHORT 0x0UL
458#define TX_BD_SHORT_TYPE_LAST TX_BD_SHORT_TYPE_TX_BD_SHORT
459#define TX_BD_SHORT_FLAGS_MASK 0xffc0UL
460#define TX_BD_SHORT_FLAGS_SFT 6
461#define TX_BD_SHORT_FLAGS_PACKET_END 0x40UL
462#define TX_BD_SHORT_FLAGS_NO_CMPL 0x80UL
463#define TX_BD_SHORT_FLAGS_BD_CNT_MASK 0x1f00UL
464#define TX_BD_SHORT_FLAGS_BD_CNT_SFT 8
465#define TX_BD_SHORT_FLAGS_LHINT_MASK 0x6000UL
466#define TX_BD_SHORT_FLAGS_LHINT_SFT 13
467#define TX_BD_SHORT_FLAGS_LHINT_LT512 (0x0UL << 13)
468#define TX_BD_SHORT_FLAGS_LHINT_LT1K (0x1UL << 13)
469#define TX_BD_SHORT_FLAGS_LHINT_LT2K (0x2UL << 13)
470#define TX_BD_SHORT_FLAGS_LHINT_GTE2K (0x3UL << 13)
471#define TX_BD_SHORT_FLAGS_LHINT_LAST TX_BD_SHORT_FLAGS_LHINT_GTE2K
472#define TX_BD_SHORT_FLAGS_COAL_NOW 0x8000UL
480#define TX_CMPL_TYPE_MASK 0x3fUL
481#define TX_CMPL_TYPE_SFT 0
482#define TX_CMPL_TYPE_TX_L2 0x0UL
483#define TX_CMPL_TYPE_LAST TX_CMPL_TYPE_TX_L2
484#define TX_CMPL_FLAGS_MASK 0xffc0UL
485#define TX_CMPL_FLAGS_SFT 6
486#define TX_CMPL_FLAGS_ERROR 0x40UL
487#define TX_CMPL_FLAGS_PUSH 0x80UL
491#define TX_CMPL_V 0x1UL
492#define TX_CMPL_ERRORS_MASK 0xfffeUL
493#define TX_CMPL_ERRORS_SFT 1
494#define TX_CMPL_ERRORS_BUFFER_ERROR_MASK 0xeUL
495#define TX_CMPL_ERRORS_BUFFER_ERROR_SFT 1
496#define TX_CMPL_ERRORS_BUFFER_ERROR_NO_ERROR (0x0UL << 1)
497#define TX_CMPL_ERRORS_BUFFER_ERROR_BAD_FMT (0x2UL << 1)
498#define TX_CMPL_ERRORS_BUFFER_ERROR_LAST TX_CMPL_ERRORS_BUFFER_ERROR_BAD_FMT
499#define TX_CMPL_ERRORS_ZERO_LENGTH_PKT 0x10UL
500#define TX_CMPL_ERRORS_EXCESSIVE_BD_LENGTH 0x20UL
501#define TX_CMPL_ERRORS_DMA_ERROR 0x40UL
502#define TX_CMPL_ERRORS_HINT_TOO_SHORT 0x80UL
503#define TX_CMPL_ERRORS_POISON_TLP_ERROR 0x100UL
522#define CMPL_BASE_TYPE_MASK 0x3fUL
523#define CMPL_BASE_TYPE_SFT 0
524#define CMPL_BASE_TYPE_TX_L2 0x0UL
525#define CMPL_BASE_TYPE_RX_L2 0x11UL
526#define CMPL_BASE_TYPE_RX_AGG 0x12UL
527#define CMPL_BASE_TYPE_RX_TPA_START 0x13UL
528#define CMPL_BASE_TYPE_RX_TPA_END 0x15UL
529#define CMPL_BASE_TYPE_RX_L2_V3 0x17UL
530#define CMPL_BASE_TYPE_STAT_EJECT 0x1aUL
531#define CMPL_BASE_TYPE_HWRM_DONE 0x20UL
532#define CMPL_BASE_TYPE_HWRM_FWD_REQ 0x22UL
533#define CMPL_BASE_TYPE_HWRM_FWD_RESP 0x24UL
534#define CMPL_BASE_TYPE_HWRM_ASYNC_EVENT 0x2eUL
535#define CMPL_BASE_TYPE_CQ_NOTIFICATION 0x30UL
536#define CMPL_BASE_TYPE_SRQ_EVENT 0x32UL
537#define CMPL_BASE_TYPE_DBQ_EVENT 0x34UL
538#define CMPL_BASE_TYPE_QP_EVENT 0x38UL
539#define CMPL_BASE_TYPE_FUNC_EVENT 0x3aUL
540#define CMPL_BASE_TYPE_LAST CMPL_BASE_TYPE_FUNC_EVENT
544#define CMPL_BASE_V 0x1UL
545#define CMPL_BASE_INFO3_MASK 0xfffffffeUL
546#define CMPL_BASE_INFO3_SFT 1
570#define NQ_CN_TYPE_MASK 0x3fUL
571#define NQ_CN_TYPE_SFT 0
572#define NQ_CN_TOGGLE_MASK 0xc0UL
573#define NQ_CN_TOGGLE_SFT 6
575 #define NQ_CN_TYPE_CQ_NOTIFICATION 0x30UL
576 #define NQ_CN_TYPE_LAST NQ_CN_TYPE_CQ_NOTIFICATION
609#define RX_PKT_CMPL_TYPE_MASK 0x3fUL
610#define RX_PKT_CMPL_TYPE_SFT 0
611#define RX_PKT_CMPL_TYPE_RX_L2 0x11UL
612#define RX_PKT_CMPL_TYPE_LAST RX_PKT_CMPL_TYPE_RX_L2
613#define RX_PKT_CMPL_FLAGS_MASK 0xffc0UL
614#define RX_PKT_CMPL_FLAGS_SFT 6
615#define RX_PKT_CMPL_FLAGS_ERROR 0x40UL
616#define RX_PKT_CMPL_FLAGS_PLACEMENT_MASK 0x380UL
617#define RX_PKT_CMPL_FLAGS_PLACEMENT_SFT 7
618#define RX_PKT_CMPL_FLAGS_PLACEMENT_NORMAL (0x0UL << 7)
619#define RX_PKT_CMPL_FLAGS_PLACEMENT_JUMBO (0x1UL << 7)
620#define RX_PKT_CMPL_FLAGS_PLACEMENT_HDS (0x2UL << 7)
621#define RX_PKT_CMPL_FLAGS_PLACEMENT_LAST RX_PKT_CMPL_FLAGS_PLACEMENT_HDS
622#define RX_PKT_CMPL_FLAGS_RSS_VALID 0x400UL
623#define RX_PKT_CMPL_FLAGS_UNUSED 0x800UL
624#define RX_PKT_CMPL_FLAGS_ITYPE_MASK 0xf000UL
625#define RX_PKT_CMPL_FLAGS_ITYPE_SFT 12
626#define RX_PKT_CMPL_FLAGS_ITYPE_NOT_KNOWN (0x0UL << 12)
627#define RX_PKT_CMPL_FLAGS_ITYPE_IP (0x1UL << 12)
628#define RX_PKT_CMPL_FLAGS_ITYPE_TCP (0x2UL << 12)
629#define RX_PKT_CMPL_FLAGS_ITYPE_UDP (0x3UL << 12)
630#define RX_PKT_CMPL_FLAGS_ITYPE_FCOE (0x4UL << 12)
631#define RX_PKT_CMPL_FLAGS_ITYPE_ROCE (0x5UL << 12)
632#define RX_PKT_CMPL_FLAGS_ITYPE_ICMP (0x7UL << 12)
633#define RX_PKT_CMPL_FLAGS_ITYPE_PTP_WO_TIMESTAMP (0x8UL << 12)
634#define RX_PKT_CMPL_FLAGS_ITYPE_PTP_W_TIMESTAMP (0x9UL << 12)
635#define RX_PKT_CMPL_FLAGS_ITYPE_LAST RX_PKT_CMPL_FLAGS_ITYPE_PTP_W_TIMESTAMP
639#define RX_PKT_CMPL_V1 0x1UL
640#define RX_PKT_CMPL_AGG_BUFS_MASK 0x3eUL
641#define RX_PKT_CMPL_AGG_BUFS_SFT 1
642#define RX_PKT_CMPL_UNUSED1_MASK 0xc0UL
643#define RX_PKT_CMPL_UNUSED1_SFT 6
652#define RX_PKT_CMPL_FLAGS2_IP_CS_CALC 0x1UL
653#define RX_PKT_CMPL_FLAGS2_L4_CS_CALC 0x2UL
654#define RX_PKT_CMPL_FLAGS2_T_IP_CS_CALC 0x4UL
655#define RX_PKT_CMPL_FLAGS2_T_L4_CS_CALC 0x8UL
656#define RX_PKT_CMPL_FLAGS2_META_FORMAT_MASK 0xf0UL
657#define RX_PKT_CMPL_FLAGS2_META_FORMAT_SFT 4
658#define RX_PKT_CMPL_FLAGS2_META_FORMAT_NONE (0x0UL << 4)
659#define RX_PKT_CMPL_FLAGS2_META_FORMAT_VLAN (0x1UL << 4)
660#define RX_PKT_CMPL_FLAGS2_META_FORMAT_LAST \
661 RX_PKT_CMPL_FLAGS2_META_FORMAT_VLAN
662#define RX_PKT_CMPL_FLAGS2_IP_TYPE 0x100UL
664#define RX_PKT_CMPL_METADATA_VID_MASK 0xfffUL
665#define RX_PKT_CMPL_METADATA_VID_SFT 0
666#define RX_PKT_CMPL_METADATA_DE 0x1000UL
667#define RX_PKT_CMPL_METADATA_PRI_MASK 0xe000UL
668#define RX_PKT_CMPL_METADATA_PRI_SFT 13
669#define RX_PKT_CMPL_METADATA_TPID_MASK 0xffff0000UL
670#define RX_PKT_CMPL_METADATA_TPID_SFT 16
672#define RX_PKT_CMPL_V2 0x1UL
673#define RX_PKT_CMPL_ERRORS_MASK 0xfffeUL
674#define RX_PKT_CMPL_ERRORS_SFT 1
675#define RX_PKT_CMPL_ERRORS_BUFFER_ERROR_MASK 0xeUL
676#define RX_PKT_CMPL_ERRORS_BUFFER_ERROR_SFT 1
677#define RX_PKT_CMPL_ERRORS_BUFFER_ERROR_NO_BUFFER (0x0UL << 1)
678#define RX_PKT_CMPL_ERRORS_BUFFER_ERROR_DID_NOT_FIT (0x1UL << 1)
679#define RX_PKT_CMPL_ERRORS_BUFFER_ERROR_NOT_ON_CHIP (0x2UL << 1)
680#define RX_PKT_CMPL_ERRORS_BUFFER_ERROR_BAD_FORMAT (0x3UL << 1)
681#define RX_PKT_CMPL_ERRORS_BUFFER_ERROR_LAST \
682 RX_PKT_CMPL_ERRORS_BUFFER_ERROR_BAD_FORMAT
683#define RX_PKT_CMPL_ERRORS_IP_CS_ERROR 0x10UL
684#define RX_PKT_CMPL_ERRORS_L4_CS_ERROR 0x20UL
685#define RX_PKT_CMPL_ERRORS_T_IP_CS_ERROR 0x40UL
686#define RX_PKT_CMPL_ERRORS_T_L4_CS_ERROR 0x80UL
687#define RX_PKT_CMPL_ERRORS_CRC_ERROR 0x100UL
688#define RX_PKT_CMPL_ERRORS_T_PKT_ERROR_MASK 0xe00UL
689#define RX_PKT_CMPL_ERRORS_T_PKT_ERROR_SFT 9
690#define RX_PKT_CMPL_ERRORS_T_PKT_ERROR_NO_ERROR (0x0UL << 9)
691#define RX_PKT_CMPL_ERRORS_T_PKT_ERROR_T_L3_BAD_VERSION (0x1UL << 9)
692#define RX_PKT_CMPL_ERRORS_T_PKT_ERROR_T_L3_BAD_HDR_LEN (0x2UL << 9)
693#define RX_PKT_CMPL_ERRORS_T_PKT_ERROR_TUNNEL_TOTAL_ERROR (0x3UL << 9)
694#define RX_PKT_CMPL_ERRORS_T_PKT_ERROR_T_IP_TOTAL_ERROR (0x4UL << 9)
695#define RX_PKT_CMPL_ERRORS_T_PKT_ERROR_T_UDP_TOTAL_ERROR (0x5UL << 9)
696#define RX_PKT_CMPL_ERRORS_T_PKT_ERROR_T_L3_BAD_TTL (0x6UL << 9)
697#define RX_PKT_CMPL_ERRORS_T_PKT_ERROR_LAST \
698 RX_PKT_CMPL_ERRORS_T_PKT_ERROR_T_L3_BAD_TTL
699#define RX_PKT_CMPL_ERRORS_PKT_ERROR_MASK 0xf000UL
700#define RX_PKT_CMPL_ERRORS_PKT_ERROR_SFT 12
701#define RX_PKT_CMPL_ERRORS_PKT_ERROR_NO_ERROR (0x0UL << 12)
702#define RX_PKT_CMPL_ERRORS_PKT_ERROR_L3_BAD_VERSION (0x1UL << 12)
703#define RX_PKT_CMPL_ERRORS_PKT_ERROR_L3_BAD_HDR_LEN (0x2UL << 12)
704#define RX_PKT_CMPL_ERRORS_PKT_ERROR_L3_BAD_TTL (0x3UL << 12)
705#define RX_PKT_CMPL_ERRORS_PKT_ERROR_IP_TOTAL_ERROR (0x4UL << 12)
706#define RX_PKT_CMPL_ERRORS_PKT_ERROR_UDP_TOTAL_ERROR (0x5UL << 12)
707#define RX_PKT_CMPL_ERRORS_PKT_ERROR_L4_BAD_HDR_LEN (0x6UL << 12)
708#define RX_PKT_CMPL_ERRORS_PKT_ERROR_L4_BAD_HDR_LEN_TOO_SMALL (0x7UL << 12)
709#define RX_PKT_CMPL_ERRORS_PKT_ERROR_L4_BAD_OPT_LEN (0x8UL << 12)
710#define RX_PKT_CMPL_ERRORS_PKT_ERROR_LAST \
711 RX_PKT_CMPL_ERRORS_PKT_ERROR_L4_BAD_OPT_LEN
714#define RX_PKT_CMPL_REORDER_MASK 0xffffffUL
715#define RX_PKT_CMPL_REORDER_SFT 0
720 #define RX_PKT_V3_CMPL_TYPE_MASK 0x3fUL
721 #define RX_PKT_V3_CMPL_TYPE_SFT 0
728 #define RX_PKT_V3_CMPL_TYPE_RX_L2_V3 0x17UL
729 #define RX_PKT_V3_CMPL_TYPE_LAST RX_PKT_V3_CMPL_TYPE_RX_L2_V3
730 #define RX_PKT_V3_CMPL_FLAGS_MASK 0xffc0UL
731 #define RX_PKT_V3_CMPL_FLAGS_SFT 6
732 #define RX_PKT_V3_CMPL_FLAGS_ERROR 0x40UL
733 #define RX_PKT_V3_CMPL_FLAGS_PLACEMENT_MASK 0x380UL
734 #define RX_PKT_V3_CMPL_FLAGS_PLACEMENT_SFT 7
735 #define RX_PKT_V3_CMPL_FLAGS_PLACEMENT_NORMAL (0x0UL << 7)
736 #define RX_PKT_V3_CMPL_FLAGS_PLACEMENT_JUMBO (0x1UL << 7)
737 #define RX_PKT_V3_CMPL_FLAGS_PLACEMENT_HDS (0x2UL << 7)
738 #define RX_PKT_V3_CMPL_FLAGS_PLACEMENT_TRUNCATION (0x3UL << 7)
739 #define RX_PKT_V3_CMPL_FLAGS_PLACEMENT_LAST RX_PKT_V3_CMPL_FLAGS_PLACEMENT_TRUNCATION
740 #define RX_PKT_V3_CMPL_FLAGS_RSS_VALID 0x400UL
741 #define RX_PKT_V3_CMPL_FLAGS_PKT_METADATA_PRESENT 0x800UL
742 #define RX_PKT_V3_CMPL_FLAGS_ITYPE_MASK 0xf000UL
743 #define RX_PKT_V3_CMPL_FLAGS_ITYPE_SFT 12
744 #define RX_PKT_V3_CMPL_FLAGS_ITYPE_NOT_KNOWN (0x0UL << 12)
745 #define RX_PKT_V3_CMPL_FLAGS_ITYPE_IP (0x1UL << 12)
746 #define RX_PKT_V3_CMPL_FLAGS_ITYPE_TCP (0x2UL << 12)
747 #define RX_PKT_V3_CMPL_FLAGS_ITYPE_UDP (0x3UL << 12)
748 #define RX_PKT_V3_CMPL_FLAGS_ITYPE_FCOE (0x4UL << 12)
749 #define RX_PKT_V3_CMPL_FLAGS_ITYPE_ROCE (0x5UL << 12)
750 #define RX_PKT_V3_CMPL_FLAGS_ITYPE_ICMP (0x7UL << 12)
751 #define RX_PKT_V3_CMPL_FLAGS_ITYPE_PTP_WO_TIMESTAMP (0x8UL << 12)
752 #define RX_PKT_V3_CMPL_FLAGS_ITYPE_PTP_W_TIMESTAMP (0x9UL << 12)
753 #define RX_PKT_V3_CMPL_FLAGS_ITYPE_LAST RX_PKT_V3_CMPL_FLAGS_ITYPE_PTP_W_TIMESTAMP
757 #define RX_PKT_V3_CMPL_V1 0x1UL
758 #define RX_PKT_V3_CMPL_AGG_BUFS_MASK 0x3eUL
759 #define RX_PKT_V3_CMPL_AGG_BUFS_SFT 1
760 #define RX_PKT_V3_CMPL_UNUSED1 0x40UL
761 #define RX_PKT_V3_CMPL_RSS_HASH_TYPE_MASK 0xff80UL
762 #define RX_PKT_V3_CMPL_RSS_HASH_TYPE_SFT 7
763 #define RX_PKT_V3_CMPL_RSS_HASH_TYPE_ENUM_0 (0x0UL << 7)
764 #define RX_PKT_V3_CMPL_RSS_HASH_TYPE_ENUM_1 (0x1UL << 7)
765 #define RX_PKT_V3_CMPL_RSS_HASH_TYPE_ENUM_3 (0x3UL << 7)
766 #define RX_PKT_V3_CMPL_RSS_HASH_TYPE_ENUM_4 (0x4UL << 7)
767 #define RX_PKT_V3_CMPL_RSS_HASH_TYPE_ENUM_5 (0x5UL << 7)
768 #define RX_PKT_V3_CMPL_RSS_HASH_TYPE_ENUM_6 (0x6UL << 7)
769 #define RX_PKT_V3_CMPL_RSS_HASH_TYPE_ENUM_7 (0x7UL << 7)
770 #define RX_PKT_V3_CMPL_RSS_HASH_TYPE_ENUM_8 (0x8UL << 7)
771 #define RX_PKT_V3_CMPL_RSS_HASH_TYPE_ENUM_9 (0x9UL << 7)
772 #define RX_PKT_V3_CMPL_RSS_HASH_TYPE_ENUM_10 (0xaUL << 7)
773 #define RX_PKT_V3_CMPL_RSS_HASH_TYPE_ENUM_11 (0xbUL << 7)
774 #define RX_PKT_V3_CMPL_RSS_HASH_TYPE_ENUM_12 (0xcUL << 7)
775 #define RX_PKT_V3_CMPL_RSS_HASH_TYPE_ENUM_13 (0xdUL << 7)
776 #define RX_PKT_V3_CMPL_RSS_HASH_TYPE_ENUM_14 (0xeUL << 7)
777 #define RX_PKT_V3_CMPL_RSS_HASH_TYPE_LAST RX_PKT_V3_CMPL_RSS_HASH_TYPE_ENUM_14
779 #define RX_PKT_V3_CMPL_PAYLOAD_OFFSET_MASK 0x1ffUL
780 #define RX_PKT_V3_CMPL_PAYLOAD_OFFSET_SFT 0
781 #define RX_PKT_V3_CMPL_METADATA1_MASK 0xf000UL
782 #define RX_PKT_V3_CMPL_METADATA1_SFT 12
783 #define RX_PKT_V3_CMPL_METADATA1_TPID_SEL_MASK 0x7000UL
784 #define RX_PKT_V3_CMPL_METADATA1_TPID_SEL_SFT 12
785 #define RX_PKT_V3_CMPL_METADATA1_TPID_SEL_TPID88A8 (0x0UL << 12)
786 #define RX_PKT_V3_CMPL_METADATA1_TPID_SEL_TPID8100 (0x1UL << 12)
787 #define RX_PKT_V3_CMPL_METADATA1_TPID_SEL_TPID9100 (0x2UL << 12)
788 #define RX_PKT_V3_CMPL_METADATA1_TPID_SEL_TPID9200 (0x3UL << 12)
789 #define RX_PKT_V3_CMPL_METADATA1_TPID_SEL_TPID9300 (0x4UL << 12)
790 #define RX_PKT_V3_CMPL_METADATA1_TPID_SEL_TPIDCFG (0x5UL << 12)
791 #define RX_PKT_V3_CMPL_METADATA1_TPID_SEL_LAST RX_PKT_V3_CMPL_METADATA1_TPID_SEL_TPIDCFG
792 #define RX_PKT_V3_CMPL_METADATA1_VALID 0x8000UL
798 #define RX_PKT_V3_CMPL_HI_FLAGS2_IP_CS_CALC 0x1UL
799 #define RX_PKT_V3_CMPL_HI_FLAGS2_L4_CS_CALC 0x2UL
800 #define RX_PKT_V3_CMPL_HI_FLAGS2_T_IP_CS_CALC 0x4UL
801 #define RX_PKT_V3_CMPL_HI_FLAGS2_T_L4_CS_CALC 0x8UL
802 #define RX_PKT_V3_CMPL_HI_FLAGS2_META_FORMAT_MASK 0xf0UL
803 #define RX_PKT_V3_CMPL_HI_FLAGS2_META_FORMAT_SFT 4
804 #define RX_PKT_V3_CMPL_HI_FLAGS2_META_FORMAT_NONE (0x0UL << 4)
805 #define RX_PKT_V3_CMPL_HI_FLAGS2_META_FORMAT_ACT_REC_PTR (0x1UL << 4)
806 #define RX_PKT_V3_CMPL_HI_FLAGS2_META_FORMAT_TUNNEL_ID (0x2UL << 4)
807 #define RX_PKT_V3_CMPL_HI_FLAGS2_META_FORMAT_CHDR_DATA (0x3UL << 4)
808 #define RX_PKT_V3_CMPL_HI_FLAGS2_META_FORMAT_HDR_OFFSET (0x4UL << 4)
809 #define RX_PKT_V3_CMPL_HI_FLAGS2_META_FORMAT_LAST RX_PKT_V3_CMPL_HI_FLAGS2_META_FORMAT_HDR_OFFSET
810 #define RX_PKT_V3_CMPL_HI_FLAGS2_IP_TYPE 0x100UL
811 #define RX_PKT_V3_CMPL_HI_FLAGS2_COMPLETE_CHECKSUM_CALC 0x200UL
812 #define RX_PKT_V3_CMPL_HI_FLAGS2_T_IP_TYPE 0x400UL
813 #define RX_PKT_V3_CMPL_HI_FLAGS2_T_IP_TYPE_IPV4 (0x0UL << 10)
814 #define RX_PKT_V3_CMPL_HI_FLAGS2_T_IP_TYPE_IPV6 (0x1UL << 10)
815 #define RX_PKT_V3_CMPL_HI_FLAGS2_T_IP_TYPE_LAST RX_PKT_V3_CMPL_HI_FLAGS2_T_IP_TYPE_IPV6
816 #define RX_PKT_V3_CMPL_HI_FLAGS2_COMPLETE_CHECKSUM_MASK 0xffff0000UL
817 #define RX_PKT_V3_CMPL_HI_FLAGS2_COMPLETE_CHECKSUM_SFT 16
820 #define RX_PKT_V3_CMPL_HI_V2 0x1UL
821 #define RX_PKT_V3_CMPL_HI_ERRORS_MASK 0xfffeUL
822 #define RX_PKT_V3_CMPL_HI_ERRORS_SFT 1
823 #define RX_PKT_V3_CMPL_HI_ERRORS_BUFFER_ERROR_MASK 0xeUL
824 #define RX_PKT_V3_CMPL_HI_ERRORS_BUFFER_ERROR_SFT 1
825 #define RX_PKT_V3_CMPL_HI_ERRORS_BUFFER_ERROR_NO_BUFFER (0x0UL << 1)
826 #define RX_PKT_V3_CMPL_HI_ERRORS_BUFFER_ERROR_DID_NOT_FIT (0x1UL << 1)
827 #define RX_PKT_V3_CMPL_HI_ERRORS_BUFFER_ERROR_NOT_ON_CHIP (0x2UL << 1)
828 #define RX_PKT_V3_CMPL_HI_ERRORS_BUFFER_ERROR_BAD_FORMAT (0x3UL << 1)
829 #define RX_PKT_V3_CMPL_HI_ERRORS_BUFFER_ERROR_FLUSH (0x5UL << 1)
830 #define RX_PKT_V3_CMPL_HI_ERRORS_BUFFER_ERROR_LAST RX_PKT_V3_CMPL_HI_ERRORS_BUFFER_ERROR_FLUSH
831 #define RX_PKT_V3_CMPL_HI_ERRORS_IP_CS_ERROR 0x10UL
832 #define RX_PKT_V3_CMPL_HI_ERRORS_L4_CS_ERROR 0x20UL
833 #define RX_PKT_V3_CMPL_HI_ERRORS_T_IP_CS_ERROR 0x40UL
834 #define RX_PKT_V3_CMPL_HI_ERRORS_T_L4_CS_ERROR 0x80UL
835 #define RX_PKT_V3_CMPL_HI_ERRORS_CRC_ERROR 0x100UL
836 #define RX_PKT_V3_CMPL_HI_ERRORS_T_PKT_ERROR_MASK 0xe00UL
837 #define RX_PKT_V3_CMPL_HI_ERRORS_T_PKT_ERROR_SFT 9
838 #define RX_PKT_V3_CMPL_HI_ERRORS_T_PKT_ERROR_NO_ERROR (0x0UL << 9)
839 #define RX_PKT_V3_CMPL_HI_ERRORS_T_PKT_ERROR_T_L3_BAD_VERSION (0x1UL << 9)
840 #define RX_PKT_V3_CMPL_HI_ERRORS_T_PKT_ERROR_T_L3_BAD_HDR_LEN (0x2UL << 9)
841 #define RX_PKT_V3_CMPL_HI_ERRORS_T_PKT_ERROR_T_IP_TOTAL_ERROR (0x3UL << 9)
842 #define RX_PKT_V3_CMPL_HI_ERRORS_T_PKT_ERROR_T_UDP_TOTAL_ERROR (0x4UL << 9)
843 #define RX_PKT_V3_CMPL_HI_ERRORS_T_PKT_ERROR_T_L3_BAD_TTL (0x5UL << 9)
844 #define RX_PKT_V3_CMPL_HI_ERRORS_T_PKT_ERROR_T_TOTAL_ERROR (0x6UL << 9)
845 #define RX_PKT_V3_CMPL_HI_ERRORS_T_PKT_ERROR_LAST RX_PKT_V3_CMPL_HI_ERRORS_T_PKT_ERROR_T_TOTAL_ERROR
846 #define RX_PKT_V3_CMPL_HI_ERRORS_PKT_ERROR_MASK 0xf000UL
847 #define RX_PKT_V3_CMPL_HI_ERRORS_PKT_ERROR_SFT 12
848 #define RX_PKT_V3_CMPL_HI_ERRORS_PKT_ERROR_NO_ERROR (0x0UL << 12)
849 #define RX_PKT_V3_CMPL_HI_ERRORS_PKT_ERROR_L3_BAD_VERSION (0x1UL << 12)
850 #define RX_PKT_V3_CMPL_HI_ERRORS_PKT_ERROR_L3_BAD_HDR_LEN (0x2UL << 12)
851 #define RX_PKT_V3_CMPL_HI_ERRORS_PKT_ERROR_L3_BAD_TTL (0x3UL << 12)
852 #define RX_PKT_V3_CMPL_HI_ERRORS_PKT_ERROR_IP_TOTAL_ERROR (0x4UL << 12)
853 #define RX_PKT_V3_CMPL_HI_ERRORS_PKT_ERROR_UDP_TOTAL_ERROR (0x5UL << 12)
854 #define RX_PKT_V3_CMPL_HI_ERRORS_PKT_ERROR_L4_BAD_HDR_LEN (0x6UL << 12)
855 #define RX_PKT_V3_CMPL_HI_ERRORS_PKT_ERROR_L4_BAD_HDR_LEN_TOO_SMALL (0x7UL << 12)
856 #define RX_PKT_V3_CMPL_HI_ERRORS_PKT_ERROR_L4_BAD_OPT_LEN (0x8UL << 12)
857 #define RX_PKT_V3_CMPL_HI_ERRORS_PKT_ERROR_LAST RX_PKT_V3_CMPL_HI_ERRORS_PKT_ERROR_L4_BAD_OPT_LEN
859 #define RX_PKT_V3_CMPL_HI_METADATA0_VID_MASK 0xfffUL
860 #define RX_PKT_V3_CMPL_HI_METADATA0_VID_SFT 0
861 #define RX_PKT_V3_CMPL_HI_METADATA0_DE 0x1000UL
863 #define RX_PKT_V3_CMPL_HI_METADATA0_PRI_MASK 0xe000UL
864 #define RX_PKT_V3_CMPL_HI_METADATA0_PRI_SFT 13
870#define RX_PROD_PKT_BD_TYPE_MASK 0x3fUL
871#define RX_PROD_PKT_BD_TYPE_SFT 0
872#define RX_PROD_PKT_BD_TYPE_RX_PROD_PKT 0x4UL
873#define RX_PROD_PKT_BD_TYPE_LAST RX_PROD_PKT_BD_TYPE_RX_PROD_PKT
874#define RX_PROD_PKT_BD_FLAGS_MASK 0xffc0UL
875#define RX_PROD_PKT_BD_FLAGS_SFT 6
876#define RX_PROD_PKT_BD_FLAGS_SOP_PAD 0x40UL
877#define RX_PROD_PKT_BD_FLAGS_EOP_PAD 0x80UL
878#define RX_PROD_PKT_BD_FLAGS_BUFFERS_MASK 0x300UL
879#define RX_PROD_PKT_BD_FLAGS_BUFFERS_SFT 8
901#define VALID_DRIVER_REG 0x0001
902#define VALID_STAT_CTX 0x0002
903#define VALID_RING_CQ 0x0004
904#define VALID_RING_TX 0x0008
905#define VALID_RING_RX 0x0010
906#define VALID_RING_GRP 0x0020
907#define VALID_VNIC_ID 0x0040
908#define VALID_RX_IOB 0x0080
909#define VALID_L2_FILTER 0x0100
910#define VALID_RING_NQ 0x0200
942#define ER_DFLT_FW_RST_MIN_DSECS 20
943#define ER_DFLT_FW_RST_MAX_DSECS 60
944#define FW_STATUS_REG_CODE_READY 0x8000UL
1064#define SHORT_CMD_SUPPORTED VER_GET_RESP_DEV_CAPS_CFG_SHORT_CMD_SUPPORTED
1065#define SHORT_CMD_REQUIRED VER_GET_RESP_DEV_CAPS_CFG_SHORT_CMD_REQUIRED
1066#define CQ_DOORBELL_KEY_MASK(a) (\
1067 CMPL_DOORBELL_KEY_CMPL | \
1068 CMPL_DOORBELL_IDX_VALID | \
1069 CMPL_DOORBELL_MASK | \
1071#define CQ_DOORBELL_KEY_IDX(a) (\
1072 CMPL_DOORBELL_KEY_CMPL | \
1073 CMPL_DOORBELL_IDX_VALID | \
1075#define TX_BD_FLAGS (\
1076 TX_BD_SHORT_TYPE_TX_BD_SHORT |\
1077 TX_BD_SHORT_FLAGS_COAL_NOW |\
1078 TX_BD_SHORT_FLAGS_PACKET_END |\
1079 (1 << TX_BD_SHORT_FLAGS_BD_CNT_SFT))
1080#define PORT_PHY_FLAGS (\
1081 BNXT_FLAG_NPAR_MODE | \
1082 BNXT_FLAG_MULTI_HOST)
1083#define RING_FREE(bp, rid, flag) bnxt_hwrm_ring_free(bp, rid, flag)
1084#define SET_LINK(p, m, s) ((p & (m >> s)) << s)
1085#define SET_MBA(p, m, s) ((p & (m >> s)) << s)
1086#define SPEED_DRV_MASK LINK_SPEED_DRV_MASK
1087#define SPEED_DRV_SHIFT LINK_SPEED_DRV_SHIFT
1088#define SPEED_FW_MASK LINK_SPEED_FW_MASK
1089#define SPEED_FW_SHIFT LINK_SPEED_FW_SHIFT
1090#define D3_SPEED_FW_MASK D3_LINK_SPEED_FW_MASK
1091#define D3_SPEED_FW_SHIFT D3_LINK_SPEED_FW_SHIFT
1092#define MEDIA_AUTO_DETECT_MASK PORT_CFG_LINK_SETTINGS_MEDIA_AUTO_DETECT_MASK
1093#define MEDIA_AUTO_DETECT_SHIFT PORT_CFG_LINK_SETTINGS_MEDIA_AUTO_DETECT_SHIFT
1094#define VLAN_MASK FUNC_CFG_PRE_BOOT_MBA_VLAN_MASK
1095#define VLAN_SHIFT FUNC_CFG_PRE_BOOT_MBA_VLAN_SHIFT
1096#define VLAN_VALUE_MASK FUNC_CFG_PRE_BOOT_MBA_VLAN_VALUE_MASK
1097#define VLAN_VALUE_SHIFT FUNC_CFG_PRE_BOOT_MBA_VLAN_VALUE_SHIFT
1098#define VF_CFG_ENABLE_FLAGS (\
1099 FUNC_VF_CFG_REQ_ENABLES_MTU | \
1100 FUNC_VF_CFG_REQ_ENABLES_GUEST_VLAN | \
1101 FUNC_VF_CFG_REQ_ENABLES_ASYNC_EVENT_CR | \
1102 FUNC_VF_CFG_REQ_ENABLES_DFLT_MAC_ADDR)
1104#define CHIP_NUM_57508 0x1750
1105#define CHIP_NUM_57504 0x1751
1106#define CHIP_NUM_57502 0x1752
1108#define CHIP_NUM_57608 0x1760
1109#define BNXT_ER_TIMER_INTERVAL(x) ( TICKS_PER_SEC * ( (x)->er.drv_poll_freq ) )
1110#define BNXT_ER_WAIT_TIMER_INTERVAL(x) ( TICKS_PER_SEC * ( ( (x)->er.normal_wait_period / 10 ) ) )
struct lm_error_recovery er
struct retry_timer wait_timer
u16 auto_link_speeds2_mask
struct dma_mapping rx_mapping
struct dma_mapping nq_mapping
struct dma_mapping resp_mapping
struct dma_mapping tx_mapping
struct dma_mapping cq_mapping
struct dma_mapping req_mapping
struct retry_timer task_timer
struct dma_mapping dma_mapped
__le32 rst_inprg_reg_mask
__le32 max_bailout_post_rst
__le32 master_wait_post_rst
__le32 normal_wait_period
u8 error_recvry_supported
__le32 master_wait_period
u8 driver_initiated_recovery
struct io_buffer * iob[NUM_RX_BUFFERS]
u16 rss_hash_type_agg_bufs_v1
u16 metadata1_payload_offset
struct io_buffer * iob[MAX_TX_DESC_CNT]