1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20#ifndef _VNIC_DEVCMD_H_
21#define _VNIC_DEVCMD_H_
22
23#define _CMD_NBITS 14
24#define _CMD_VTYPEBITS 10
25#define _CMD_FLAGSBITS 6
26#define _CMD_DIRBITS 2
27
28#define _CMD_NMASK ((1 << _CMD_NBITS)-1)
29#define _CMD_VTYPEMASK ((1 << _CMD_VTYPEBITS)-1)
30#define _CMD_FLAGSMASK ((1 << _CMD_FLAGSBITS)-1)
31#define _CMD_DIRMASK ((1 << _CMD_DIRBITS)-1)
32
33#define _CMD_NSHIFT 0
34#define _CMD_VTYPESHIFT (_CMD_NSHIFT+_CMD_NBITS)
35#define _CMD_FLAGSSHIFT (_CMD_VTYPESHIFT+_CMD_VTYPEBITS)
36#define _CMD_DIRSHIFT (_CMD_FLAGSSHIFT+_CMD_FLAGSBITS)
37
38
39
40
41#define _CMD_DIR_NONE 0U
42#define _CMD_DIR_WRITE 1U
43#define _CMD_DIR_READ 2U
44#define _CMD_DIR_RW (_CMD_DIR_WRITE | _CMD_DIR_READ)
45
46
47
48
49#define _CMD_FLAGS_NONE 0U
50#define _CMD_FLAGS_NOWAIT 1U
51
52
53
54
55#define _CMD_VTYPE_NONE 0U
56#define _CMD_VTYPE_ENET 1U
57#define _CMD_VTYPE_FC 2U
58#define _CMD_VTYPE_SCSI 4U
59#define _CMD_VTYPE_ALL (_CMD_VTYPE_ENET | _CMD_VTYPE_FC | _CMD_VTYPE_SCSI)
60
61
62
63
64#define _CMDCF(dir, flags, vtype, nr) \
65 (((dir) << _CMD_DIRSHIFT) | \
66 ((flags) << _CMD_FLAGSSHIFT) | \
67 ((vtype) << _CMD_VTYPESHIFT) | \
68 ((nr) << _CMD_NSHIFT))
69#define _CMDC(dir, vtype, nr) _CMDCF(dir, 0, vtype, nr)
70#define _CMDCNW(dir, vtype, nr) _CMDCF(dir, _CMD_FLAGS_NOWAIT, vtype, nr)
71
72
73
74
75#define _CMD_DIR(cmd) (((cmd) >> _CMD_DIRSHIFT) & _CMD_DIRMASK)
76#define _CMD_FLAGS(cmd) (((cmd) >> _CMD_FLAGSSHIFT) & _CMD_FLAGSMASK)
77#define _CMD_VTYPE(cmd) (((cmd) >> _CMD_VTYPESHIFT) & _CMD_VTYPEMASK)
78#define _CMD_N(cmd) (((cmd) >> _CMD_NSHIFT) & _CMD_NMASK)
79
80enum vnic_devcmd_cmd {
81 CMD_NONE = _CMDC(_CMD_DIR_NONE, _CMD_VTYPE_NONE, 0),
82
83
84
85
86
87
88
89
90
91
92 CMD_MCPU_FW_INFO_OLD = _CMDC(_CMD_DIR_WRITE, _CMD_VTYPE_ALL, 1),
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110 CMD_MCPU_FW_INFO = _CMDC(_CMD_DIR_RW, _CMD_VTYPE_ALL, 1),
111
112
113
114
115 CMD_DEV_SPEC = _CMDC(_CMD_DIR_RW, _CMD_VTYPE_ALL, 2),
116
117
118 CMD_STATS_CLEAR = _CMDCNW(_CMD_DIR_NONE, _CMD_VTYPE_ALL, 3),
119
120
121
122 CMD_STATS_DUMP = _CMDC(_CMD_DIR_WRITE, _CMD_VTYPE_ALL, 4),
123
124
125 CMD_PACKET_FILTER = _CMDCNW(_CMD_DIR_WRITE, _CMD_VTYPE_ENET, 7),
126
127
128 CMD_PACKET_FILTER_ALL = _CMDCNW(_CMD_DIR_WRITE, _CMD_VTYPE_ALL, 7),
129
130
131 CMD_HANG_NOTIFY = _CMDC(_CMD_DIR_NONE, _CMD_VTYPE_ALL, 8),
132
133
134 CMD_GET_MAC_ADDR = _CMDC(_CMD_DIR_READ,
135 _CMD_VTYPE_ENET | _CMD_VTYPE_FC, 9),
136
137
138 CMD_ADDR_ADD = _CMDCNW(_CMD_DIR_WRITE,
139 _CMD_VTYPE_ENET | _CMD_VTYPE_FC, 12),
140
141
142 CMD_ADDR_DEL = _CMDCNW(_CMD_DIR_WRITE,
143 _CMD_VTYPE_ENET | _CMD_VTYPE_FC, 13),
144
145
146 CMD_VLAN_ADD = _CMDCNW(_CMD_DIR_WRITE, _CMD_VTYPE_ENET, 14),
147
148
149 CMD_VLAN_DEL = _CMDCNW(_CMD_DIR_WRITE, _CMD_VTYPE_ENET, 15),
150
151
152 CMD_NIC_CFG = _CMDCNW(_CMD_DIR_WRITE, _CMD_VTYPE_ALL, 16),
153
154
155 CMD_RSS_KEY = _CMDC(_CMD_DIR_WRITE, _CMD_VTYPE_ENET, 17),
156
157
158 CMD_RSS_CPU = _CMDC(_CMD_DIR_WRITE, _CMD_VTYPE_ENET, 18),
159
160
161 CMD_SOFT_RESET = _CMDCNW(_CMD_DIR_NONE, _CMD_VTYPE_ALL, 19),
162
163
164
165 CMD_SOFT_RESET_STATUS = _CMDC(_CMD_DIR_READ, _CMD_VTYPE_ALL, 20),
166
167
168
169
170
171
172
173
174
175 CMD_NOTIFY = _CMDC(_CMD_DIR_RW, _CMD_VTYPE_ALL, 21),
176
177
178
179 CMD_UNDI = _CMDC(_CMD_DIR_WRITE, _CMD_VTYPE_ENET, 22),
180
181
182 CMD_OPEN = _CMDCNW(_CMD_DIR_WRITE, _CMD_VTYPE_ALL, 23),
183
184
185
186 CMD_OPEN_STATUS = _CMDC(_CMD_DIR_READ, _CMD_VTYPE_ALL, 24),
187
188
189 CMD_CLOSE = _CMDC(_CMD_DIR_NONE, _CMD_VTYPE_ALL, 25),
190
191
192
193 CMD_INIT_v1 = _CMDCNW(_CMD_DIR_READ, _CMD_VTYPE_ALL, 26),
194
195
196
197
198 CMD_INIT_PROV_INFO = _CMDC(_CMD_DIR_WRITE, _CMD_VTYPE_ENET, 27),
199
200
201 CMD_ENABLE = _CMDCNW(_CMD_DIR_WRITE, _CMD_VTYPE_ALL, 28),
202
203
204 CMD_ENABLE_WAIT = _CMDC(_CMD_DIR_WRITE, _CMD_VTYPE_ALL, 28),
205
206
207 CMD_DISABLE = _CMDC(_CMD_DIR_NONE, _CMD_VTYPE_ALL, 29),
208
209
210
211
212 CMD_STATS_DUMP_ALL = _CMDC(_CMD_DIR_WRITE, _CMD_VTYPE_ALL, 30),
213
214
215
216
217 CMD_INIT_STATUS = _CMDC(_CMD_DIR_READ, _CMD_VTYPE_ALL, 31),
218
219
220
221 CMD_INT13 = _CMDC(_CMD_DIR_WRITE, _CMD_VTYPE_FC, 32),
222
223
224 CMD_LOGICAL_UPLINK = _CMDCNW(_CMD_DIR_WRITE, _CMD_VTYPE_ENET, 33),
225
226
227 CMD_DEINIT = _CMDCNW(_CMD_DIR_NONE, _CMD_VTYPE_ALL, 34),
228
229
230 CMD_INIT = _CMDCNW(_CMD_DIR_WRITE, _CMD_VTYPE_ALL, 35),
231
232
233
234
235 CMD_CAPABILITY = _CMDC(_CMD_DIR_RW, _CMD_VTYPE_ALL, 36),
236
237
238
239
240 CMD_PERBI = _CMDC(_CMD_DIR_RW, _CMD_VTYPE_FC, 37),
241
242
243
244
245 CMD_IAR = _CMDCNW(_CMD_DIR_WRITE, _CMD_VTYPE_ALL, 38),
246
247
248 CMD_HANG_RESET = _CMDC(_CMD_DIR_NONE, _CMD_VTYPE_ALL, 39),
249
250
251
252 CMD_HANG_RESET_STATUS = _CMDC(_CMD_DIR_READ, _CMD_VTYPE_ALL, 40),
253
254
255
256
257
258 CMD_IG_VLAN_REWRITE_MODE = _CMDC(_CMD_DIR_RW, _CMD_VTYPE_ENET, 41),
259
260
261
262
263
264
265
266 CMD_PROXY_BY_BDF = _CMDC(_CMD_DIR_RW, _CMD_VTYPE_ALL, 42),
267
268
269
270
271
272 CMD_PROXY_BY_INDEX = _CMDC(_CMD_DIR_RW, _CMD_VTYPE_ALL, 43),
273
274
275
276
277
278
279
280
281
282 CMD_CONFIG_INFO_GET = _CMDC(_CMD_DIR_RW, _CMD_VTYPE_ALL, 44),
283
284
285
286
287
288
289 CMD_INIT_PROV_INFO2 = _CMDC(_CMD_DIR_WRITE, _CMD_VTYPE_ENET, 47),
290
291
292
293
294
295 CMD_ENABLE2 = _CMDC(_CMD_DIR_WRITE, _CMD_VTYPE_ENET, 48),
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320 CMD_STATUS = _CMDC(_CMD_DIR_RW, _CMD_VTYPE_ALL, 49),
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339 CMD_INTR_COAL_CONVERT = _CMDC(_CMD_DIR_READ, _CMD_VTYPE_ALL, 50),
340
341
342
343
344
345
346
347
348 CMD_SET_MAC_ADDR = _CMDC(_CMD_DIR_WRITE, _CMD_VTYPE_ENET, 55),
349};
350
351
352#define CMD_ENABLE2_ACTIVE 0x1
353
354
355#define CMD_OPENF_OPROM 0x1
356
357
358#define CMD_INITF_DEFAULT_MAC 0x1
359
360
361#define CMD_PFILTER_DIRECTED 0x01
362#define CMD_PFILTER_MULTICAST 0x02
363#define CMD_PFILTER_BROADCAST 0x04
364#define CMD_PFILTER_PROMISCUOUS 0x08
365#define CMD_PFILTER_ALL_MULTICAST 0x10
366
367
368#define IG_VLAN_REWRITE_MODE_DEFAULT_TRUNK 0
369#define IG_VLAN_REWRITE_MODE_UNTAG_DEFAULT_VLAN 1
370#define IG_VLAN_REWRITE_MODE_PRIORITY_TAG_DEFAULT_VLAN 2
371#define IG_VLAN_REWRITE_MODE_PASS_THRU 3
372
373enum vnic_devcmd_status {
374 STAT_NONE = 0,
375 STAT_BUSY = 1 << 0,
376 STAT_ERROR = 1 << 1,
377};
378
379enum vnic_devcmd_error {
380 ERR_SUCCESS = 0,
381 ERR_EINVAL = 1,
382 ERR_EFAULT = 2,
383 ERR_EPERM = 3,
384 ERR_EBUSY = 4,
385 ERR_ECMDUNKNOWN = 5,
386 ERR_EBADSTATE = 6,
387 ERR_ENOMEM = 7,
388 ERR_ETIMEDOUT = 8,
389 ERR_ELINKDOWN = 9,
390 ERR_EMAXRES = 10,
391 ERR_ENOTSUPPORTED = 11,
392 ERR_EINPROGRESS = 12,
393};
394
395
396
397
398
399
400
401struct vnic_devcmd_fw_info {
402 char fw_version[32];
403 char fw_build[32];
404 char hw_version[32];
405 char hw_serial_number[32];
406 u16 asic_type;
407 u16 asic_rev;
408};
409
410struct vnic_devcmd_notify {
411 u32 csum;
412
413 u32 link_state;
414 u32 port_speed;
415 u32 mtu;
416 u32 msglvl;
417 u32 uif;
418 u32 status;
419 u32 error;
420 u32 link_down_cnt;
421 u32 perbi_rebuild_cnt;
422};
423#define VNIC_STF_FATAL_ERR 0x0001
424#define VNIC_STF_STD_PAUSE 0x0002
425#define VNIC_STF_PFC_PAUSE 0x0004
426
427#define VNIC_STF_ALL (VNIC_STF_FATAL_ERR |\
428 VNIC_STF_STD_PAUSE |\
429 VNIC_STF_PFC_PAUSE |\
430 0)
431
432struct vnic_devcmd_provinfo {
433 u8 oui[3];
434 u8 type;
435 u8 data[0];
436};
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452#define VNIC_DEVCMD_NARGS 15
453struct vnic_devcmd {
454 u32 status;
455 u32 cmd;
456 u64 args[VNIC_DEVCMD_NARGS];
457};
458
459#endif
460