1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 #define MPU_MAILBOX_DB_OFFSET 0x160
25 #define MPU_MAILBOX_DB_RDY_MASK 0x1
26 #define MPU_MAILBOX_DB_HI_MASK 0x2
27
28 #define MPU_EP_CONTROL 0
29
30
31 #define SLIPORT_SOFTRESET_OFFSET 0x5c
32 #define SLIPORT_SEMAPHORE_OFFSET_BEx 0xac
33 #define SLIPORT_SEMAPHORE_OFFSET_SH 0x94
34 #define POST_STAGE_MASK 0x0000FFFF
35 #define POST_ERR_MASK 0x1
36 #define POST_ERR_SHIFT 31
37 #define POST_ERR_RECOVERY_CODE_MASK 0xFFF
38
39
40 #define SLIPORT_SOFTRESET_SR_MASK 0x00000080
41
42
43 #define POST_STAGE_AWAITING_HOST_RDY 0x1
44 #define POST_STAGE_HOST_RDY 0x2
45 #define POST_STAGE_BE_RESET 0x3
46 #define POST_STAGE_ARMFW_RDY 0xc000
47 #define POST_STAGE_RECOVERABLE_ERR 0xE000
48
49 #define POST_STAGE_FAT_LOG_START 0x0D00
50 #define POST_STAGE_ARMFW_UE 0xF000
51
52
53 #define SLIPORT_STATUS_OFFSET 0x404
54 #define SLIPORT_CONTROL_OFFSET 0x408
55 #define SLIPORT_ERROR1_OFFSET 0x40C
56 #define SLIPORT_ERROR2_OFFSET 0x410
57 #define PHYSDEV_CONTROL_OFFSET 0x414
58
59 #define SLIPORT_STATUS_ERR_MASK 0x80000000
60 #define SLIPORT_STATUS_DIP_MASK 0x02000000
61 #define SLIPORT_STATUS_RN_MASK 0x01000000
62 #define SLIPORT_STATUS_RDY_MASK 0x00800000
63 #define SLI_PORT_CONTROL_IP_MASK 0x08000000
64 #define PHYSDEV_CONTROL_FW_RESET_MASK 0x00000002
65 #define PHYSDEV_CONTROL_DD_MASK 0x00000004
66 #define PHYSDEV_CONTROL_INP_MASK 0x40000000
67
68 #define SLIPORT_ERROR_NO_RESOURCE1 0x2
69 #define SLIPORT_ERROR_NO_RESOURCE2 0x9
70
71 #define SLIPORT_ERROR_FW_RESET1 0x2
72 #define SLIPORT_ERROR_FW_RESET2 0x0
73
74
75 #define PCICFG_MEMBAR_CTRL_INT_CTRL_OFFSET 0xfc
76
77
78
79
80
81
82 #define MEMBAR_CTRL_INT_CTRL_HOSTINTR_MASK BIT(29)
83
84
85 #define BE_FUNCTION_CAPS_RSS 0x2
86 #define BE_FUNCTION_CAPS_SUPER_NIC 0x40
87
88
89 #define PCICFG_PM_CONTROL_OFFSET 0x44
90 #define PCICFG_PM_CONTROL_MASK 0x108
91
92
93 #define PCICFG_ONLINE0 0xB0
94 #define PCICFG_ONLINE1 0xB4
95
96
97 #define PCICFG_UE_STATUS_LOW 0xA0
98 #define PCICFG_UE_STATUS_HIGH 0xA4
99 #define PCICFG_UE_STATUS_LOW_MASK 0xA8
100 #define PCICFG_UE_STATUS_HI_MASK 0xAC
101
102
103 #define SLI_INTF_REG_OFFSET 0x58
104 #define SLI_INTF_VALID_MASK 0xE0000000
105 #define SLI_INTF_VALID 0xC0000000
106 #define SLI_INTF_HINT2_MASK 0x1F000000
107 #define SLI_INTF_HINT2_SHIFT 24
108 #define SLI_INTF_HINT1_MASK 0x00FF0000
109 #define SLI_INTF_HINT1_SHIFT 16
110 #define SLI_INTF_FAMILY_MASK 0x00000F00
111 #define SLI_INTF_FAMILY_SHIFT 8
112 #define SLI_INTF_IF_TYPE_MASK 0x0000F000
113 #define SLI_INTF_IF_TYPE_SHIFT 12
114 #define SLI_INTF_REV_MASK 0x000000F0
115 #define SLI_INTF_REV_SHIFT 4
116 #define SLI_INTF_FT_MASK 0x00000001
117
118 #define SLI_INTF_TYPE_2 2
119 #define SLI_INTF_TYPE_3 3
120
121
122 #define CEV_ISR0_OFFSET 0xC18
123 #define CEV_ISR_SIZE 4
124
125
126 #define DB_EQ_OFFSET DB_CQ_OFFSET
127 #define DB_EQ_RING_ID_MASK 0x1FF
128 #define DB_EQ_RING_ID_EXT_MASK 0x3e00
129 #define DB_EQ_RING_ID_EXT_MASK_SHIFT (2)
130
131
132 #define DB_EQ_CLR_SHIFT (9)
133
134 #define DB_EQ_EVNT_SHIFT (10)
135
136 #define DB_EQ_NUM_POPPED_SHIFT (16)
137
138 #define DB_EQ_REARM_SHIFT (29)
139
140 #define DB_EQ_R2I_DLY_SHIFT (30)
141
142
143
144
145
146
147 #define R2I_DLY_ENC_0 0
148 #define R2I_DLY_ENC_1 1
149 #define R2I_DLY_ENC_2 2
150 #define R2I_DLY_ENC_3 3
151
152
153 #define DB_CQ_OFFSET 0x120
154 #define DB_CQ_RING_ID_MASK 0x3FF
155 #define DB_CQ_RING_ID_EXT_MASK 0x7C00
156 #define DB_CQ_RING_ID_EXT_MASK_SHIFT (1)
157
158
159
160 #define DB_CQ_NUM_POPPED_SHIFT (16)
161
162 #define DB_CQ_REARM_SHIFT (29)
163
164
165 #define DB_TXULP1_OFFSET 0x60
166 #define DB_TXULP_RING_ID_MASK 0x7FF
167
168 #define DB_TXULP_NUM_POSTED_SHIFT (16)
169 #define DB_TXULP_NUM_POSTED_MASK 0x3FFF
170
171
172 #define DB_RQ_OFFSET 0x100
173 #define DB_RQ_RING_ID_MASK 0x3FF
174
175 #define DB_RQ_NUM_POSTED_SHIFT (24)
176
177
178 #define DB_MCCQ_OFFSET 0x140
179 #define DB_MCCQ_RING_ID_MASK 0x7FF
180
181 #define DB_MCCQ_NUM_POSTED_SHIFT (16)
182
183
184 #define SRIOV_VF_PCICFG_OFFSET (4096)
185
186
187 #define RETRIEVE_FAT 0
188 #define QUERY_FAT 1
189
190
191 #define BE_UNICAST_PACKET 0
192 #define BE_MULTICAST_PACKET 1
193 #define BE_BROADCAST_PACKET 2
194 #define BE_RSVD_PACKET 3
195
196
197
198
199
200
201 #define EQ_ENTRY_VALID_MASK 0x1
202 #define EQ_ENTRY_RES_ID_MASK 0xFFFF
203 #define EQ_ENTRY_RES_ID_SHIFT 16
204
205 struct be_eq_entry {
206 u32 evt;
207 };
208
209
210 #define ETH_WRB_FRAG_LEN_MASK 0xFFFF
211 struct be_eth_wrb {
212 __le32 frag_pa_hi;
213 __le32 frag_pa_lo;
214 u32 rsvd0;
215 __le32 frag_len;
216 } __packed;
217
218
219
220
221 struct amap_eth_hdr_wrb {
222 u8 rsvd0[32];
223 u8 rsvd1[32];
224 u8 complete;
225 u8 event;
226 u8 crc;
227 u8 forward;
228 u8 lso6;
229 u8 mgmt;
230 u8 ipcs;
231 u8 udpcs;
232 u8 tcpcs;
233 u8 lso;
234 u8 vlan;
235 u8 gso[2];
236 u8 num_wrb[5];
237 u8 lso_mss[14];
238 u8 len[16];
239 u8 vlan_tag[16];
240 } __packed;
241
242 #define TX_HDR_WRB_COMPL 1
243 #define TX_HDR_WRB_EVT BIT(1)
244 #define TX_HDR_WRB_NUM_SHIFT 13
245 #define TX_HDR_WRB_NUM_MASK 0x1F
246
247 struct be_eth_hdr_wrb {
248 __le32 dw[4];
249 };
250
251
252 #define BE_TX_COMP_HDR_PARSE_ERR 0x2
253 #define BE_TX_COMP_NDMA_ERR 0x3
254 #define BE_TX_COMP_ACL_ERR 0x5
255
256 #define LANCER_TX_COMP_LSO_ERR 0x1
257 #define LANCER_TX_COMP_HSW_DROP_MAC_ERR 0x3
258 #define LANCER_TX_COMP_HSW_DROP_VLAN_ERR 0x5
259 #define LANCER_TX_COMP_QINQ_ERR 0x7
260 #define LANCER_TX_COMP_SGE_ERR 0x9
261 #define LANCER_TX_COMP_PARITY_ERR 0xb
262 #define LANCER_TX_COMP_DMA_ERR 0xd
263
264
265
266
267
268
269 struct amap_eth_tx_compl {
270 u8 wrb_index[16];
271 u8 ct[2];
272 u8 port[2];
273 u8 rsvd0[8];
274 u8 status[4];
275 u8 user_bytes[16];
276 u8 nwh_bytes[8];
277 u8 lso;
278 u8 cast_enc[2];
279 u8 rsvd1[5];
280 u8 rsvd2[32];
281 u8 pkts[16];
282 u8 ringid[11];
283 u8 hash_val[4];
284 u8 valid;
285 } __packed;
286
287 struct be_eth_tx_compl {
288 u32 dw[4];
289 };
290
291
292 struct be_eth_rx_d {
293 u32 fragpa_hi;
294 u32 fragpa_lo;
295 };
296
297
298
299
300
301
302 struct amap_eth_rx_compl_v0 {
303 u8 vlan_tag[16];
304 u8 pktsize[14];
305 u8 port;
306 u8 ip_opt;
307 u8 err;
308 u8 rsshp;
309 u8 ipf;
310 u8 tcpf;
311 u8 udpf;
312 u8 ipcksm;
313 u8 l4_cksm;
314 u8 ip_version;
315 u8 macdst[6];
316 u8 vtp;
317 u8 ip_frag;
318 u8 fragndx[10];
319 u8 ct[2];
320 u8 sw;
321 u8 numfrags[3];
322 u8 rss_flush;
323 u8 cast_enc[2];
324 u8 qnq;
325 u8 rss_bank;
326 u8 rsvd1[23];
327 u8 lro_pkt;
328 u8 rsvd2[2];
329 u8 valid;
330 u8 rsshash[32];
331 } __packed;
332
333
334
335
336 struct amap_eth_rx_compl_v1 {
337 u8 vlan_tag[16];
338 u8 pktsize[14];
339 u8 vtp;
340 u8 ip_opt;
341 u8 err;
342 u8 rsshp;
343 u8 ipf;
344 u8 tcpf;
345 u8 udpf;
346 u8 ipcksm;
347 u8 l4_cksm;
348 u8 ip_version;
349 u8 macdst[7];
350 u8 rsvd0;
351 u8 fragndx[10];
352 u8 ct[2];
353 u8 sw;
354 u8 numfrags[3];
355 u8 rss_flush;
356 u8 cast_enc[2];
357 u8 qnq;
358 u8 rss_bank;
359 u8 port[2];
360 u8 vntagp;
361 u8 header_len[8];
362 u8 header_split[2];
363 u8 rsvd1[12];
364 u8 tunneled;
365 u8 valid;
366 u8 rsshash[32];
367 } __packed;
368
369 struct be_eth_rx_compl {
370 u32 dw[4];
371 };