iPXE
mc_driver_pcol.h
Go to the documentation of this file.
1/****************************************************************************
2 * Driver for Solarflare network controllers and boards
3 * Copyright 2012-2017 Solarflare Communications Inc.
4 *
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU General Public License as
7 * published by the Free Software Foundation; either version 2 of the
8 * License, or any later version.
9 *
10 * You can also choose to distribute this program under the terms of
11 * the Unmodified Binary Distribution Licence (as given in the file
12 * COPYING.UBDL), provided that you have satisfied its requirements.
13 */
14#ifndef SFC_MCDI_PCOL_H
15#define SFC_MCDI_PCOL_H
16
17FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
18
19/** \file mc_driver_pcol.h
20 * This file is a subset of the MCDI headers generated from the yml files.
21 */
22
23/* The current version of the MCDI protocol.
24 *
25 * Note that the ROM burnt into the card only talks V0, so at the very
26 * least every driver must support version 0 and MCDI_PCOL_VERSION
27 */
28#ifdef WITH_MCDI_V2
29#define MCDI_PCOL_VERSION 2
30#else
31#define MCDI_PCOL_VERSION 1
32#endif
33
34/* Unused commands: 0x23, 0x27, 0x30, 0x31 */
35
36/* MCDI version 1
37 *
38 * Each MCDI request starts with an MCDI_HEADER, which is a 32bit
39 * structure, filled in by the client.
40 *
41 * 0 7 8 16 20 22 23 24 31
42 * | CODE | R | LEN | SEQ | Rsvd | E | R | XFLAGS |
43 * | | |
44 * | | \--- Response
45 * | \------- Error
46 * \------------------------------ Resync (always set)
47 *
48 * The client writes it's request into MC shared memory, and rings the
49 * doorbell. Each request is completed by either by the MC writing
50 * back into shared memory, or by writing out an event.
51 *
52 * All MCDI commands support completion by shared memory response. Each
53 * request may also contain additional data (accounted for by HEADER.LEN),
54 * and some response's may also contain additional data (again, accounted
55 * for by HEADER.LEN).
56 *
57 * Some MCDI commands support completion by event, in which any associated
58 * response data is included in the event.
59 *
60 * The protocol requires one response to be delivered for every request, a
61 * request should not be sent unless the response for the previous request
62 * has been received (either by polling shared memory, or by receiving
63 * an event).
64 */
65
66/** Request/Response structure */
67#define MCDI_HEADER_OFST 0
68#define MCDI_HEADER_CODE_LBN 0
69#define MCDI_HEADER_CODE_WIDTH 7
70#define MCDI_HEADER_RESYNC_LBN 7
71#define MCDI_HEADER_RESYNC_WIDTH 1
72#define MCDI_HEADER_DATALEN_LBN 8
73#define MCDI_HEADER_DATALEN_WIDTH 8
74#define MCDI_HEADER_SEQ_LBN 16
75#define MCDI_HEADER_SEQ_WIDTH 4
76#define MCDI_HEADER_RSVD_LBN 20
77#define MCDI_HEADER_RSVD_WIDTH 1
78#define MCDI_HEADER_NOT_EPOCH_LBN 21
79#define MCDI_HEADER_NOT_EPOCH_WIDTH 1
80#define MCDI_HEADER_ERROR_LBN 22
81#define MCDI_HEADER_ERROR_WIDTH 1
82#define MCDI_HEADER_RESPONSE_LBN 23
83#define MCDI_HEADER_RESPONSE_WIDTH 1
84#define MCDI_HEADER_XFLAGS_LBN 24
85#define MCDI_HEADER_XFLAGS_WIDTH 8
86/* Request response using event */
87#define MCDI_HEADER_XFLAGS_EVREQ 0x01
88/* Request (and signal) early doorbell return */
89#define MCDI_HEADER_XFLAGS_DBRET 0x02
90
91/* Maximum number of payload bytes */
92#define MCDI_CTL_SDU_LEN_MAX_V1 0xfc
93#define MCDI_CTL_SDU_LEN_MAX_V2 0x400
94
95#ifdef WITH_MCDI_V2
96#define MCDI_CTL_SDU_LEN_MAX MCDI_CTL_SDU_LEN_MAX_V2
97#else
98#define MCDI_CTL_SDU_LEN_MAX MCDI_CTL_SDU_LEN_MAX_V1
99#endif
100
101
102/* The MC can generate events for two reasons:
103 * - To advance a shared memory request if XFLAGS_EVREQ was set
104 * - As a notification (link state, i2c event), controlled
105 * via MC_CMD_LOG_CTRL
106 *
107 * Both events share a common structure:
108 *
109 * 0 32 33 36 44 52 60
110 * | Data | Cont | Level | Src | Code | Rsvd |
111 * |
112 * \ There is another event pending in this notification
113 *
114 * If Code==CMDDONE, then the fields are further interpreted as:
115 *
116 * - LEVEL==INFO Command succeeded
117 * - LEVEL==ERR Command failed
118 *
119 * 0 8 16 24 32
120 * | Seq | Datalen | Errno | Rsvd |
121 *
122 * These fields are taken directly out of the standard MCDI header, i.e.,
123 * LEVEL==ERR, Datalen == 0 => Reboot
124 *
125 * Events can be squirted out of the UART (using LOG_CTRL) without a
126 * MCDI header. An event can be distinguished from a MCDI response by
127 * examining the first byte which is 0xc0. This corresponds to the
128 * non-existent MCDI command MC_CMD_DEBUG_LOG.
129 *
130 * 0 7 8
131 * | command | Resync | = 0xc0
132 *
133 * Since the event is written in big-endian byte order, this works
134 * providing bits 56-63 of the event are 0xc0.
135 *
136 * 56 60 63
137 * | Rsvd | Code | = 0xc0
138 *
139 * Which means for convenience the event code is 0xc for all MC
140 * generated events.
141 */
142#define FSE_AZ_EV_CODE_MCDI_EVRESPONSE 0xc
143
144
145/* Operation not permitted. */
146#define MC_CMD_ERR_EPERM 1
147/* Non-existent command target */
148#define MC_CMD_ERR_ENOENT 2
149/* assert() has killed the MC */
150#define MC_CMD_ERR_EINTR 4
151/* I/O failure */
152#define MC_CMD_ERR_EIO 5
153/* Already exists */
154#define MC_CMD_ERR_EEXIST 6
155/* Try again */
156#define MC_CMD_ERR_EAGAIN 11
157/* Out of memory */
158#define MC_CMD_ERR_ENOMEM 12
159/* Caller does not hold required locks */
160#define MC_CMD_ERR_EACCES 13
161/* Resource is currently unavailable (e.g. lock contention) */
162#define MC_CMD_ERR_EBUSY 16
163/* No such device */
164#define MC_CMD_ERR_ENODEV 19
165/* Invalid argument to target */
166#define MC_CMD_ERR_EINVAL 22
167/* Broken pipe */
168#define MC_CMD_ERR_EPIPE 32
169/* Read-only */
170#define MC_CMD_ERR_EROFS 30
171/* Out of range */
172#define MC_CMD_ERR_ERANGE 34
173/* Non-recursive resource is already acquired */
174#define MC_CMD_ERR_EDEADLK 35
175/* Operation not implemented */
176#define MC_CMD_ERR_ENOSYS 38
177/* Operation timed out */
178#define MC_CMD_ERR_ETIME 62
179/* Link has been severed */
180#define MC_CMD_ERR_ENOLINK 67
181/* Protocol error */
182#define MC_CMD_ERR_EPROTO 71
183/* Operation not supported */
184#define MC_CMD_ERR_ENOTSUP 95
185/* Address not available */
186#define MC_CMD_ERR_EADDRNOTAVAIL 99
187/* Not connected */
188#define MC_CMD_ERR_ENOTCONN 107
189/* Operation already in progress */
190#define MC_CMD_ERR_EALREADY 114
191
192/* Resource allocation failed. */
193#define MC_CMD_ERR_ALLOC_FAIL 0x1000
194/* V-adaptor not found. */
195#define MC_CMD_ERR_NO_VADAPTOR 0x1001
196/* EVB port not found. */
197#define MC_CMD_ERR_NO_EVB_PORT 0x1002
198/* V-switch not found. */
199#define MC_CMD_ERR_NO_VSWITCH 0x1003
200/* Too many VLAN tags. */
201#define MC_CMD_ERR_VLAN_LIMIT 0x1004
202/* Bad PCI function number. */
203#define MC_CMD_ERR_BAD_PCI_FUNC 0x1005
204/* Invalid VLAN mode. */
205#define MC_CMD_ERR_BAD_VLAN_MODE 0x1006
206/* Invalid v-switch type. */
207#define MC_CMD_ERR_BAD_VSWITCH_TYPE 0x1007
208/* Invalid v-port type. */
209#define MC_CMD_ERR_BAD_VPORT_TYPE 0x1008
210/* MAC address exists. */
211#define MC_CMD_ERR_MAC_EXIST 0x1009
212/* Slave core not present */
213#define MC_CMD_ERR_SLAVE_NOT_PRESENT 0x100a
214/* The datapath is disabled. */
215#define MC_CMD_ERR_DATAPATH_DISABLED 0x100b
216/* The requesting client is not a function */
217#define MC_CMD_ERR_CLIENT_NOT_FN 0x100c
218/* The requested operation might require the
219 * command to be passed between MCs, and the
220 * transport doesn't support that. Should
221 * only ever been seen over the UART.
222 */
223#define MC_CMD_ERR_TRANSPORT_NOPROXY 0x100d
224/* VLAN tag(s) exists */
225#define MC_CMD_ERR_VLAN_EXIST 0x100e
226/* No MAC address assigned to an EVB port */
227#define MC_CMD_ERR_NO_MAC_ADDR 0x100f
228/* Notifies the driver that the request has been relayed
229 * to an admin function for authorization. The driver should
230 * wait for a PROXY_RESPONSE event and then resend its request.
231 * This error code is followed by a 32-bit handle that
232 * helps matching it with the respective PROXY_RESPONSE event.
233 */
234#define MC_CMD_ERR_PROXY_PENDING 0x1010
235#define MC_CMD_ERR_PROXY_PENDING_HANDLE_OFST 4
236/* The request cannot be passed for authorization because
237 * another request from the same function is currently being
238 * authorized. The drvier should try again later.
239 */
240#define MC_CMD_ERR_PROXY_INPROGRESS 0x1011
241/* Returned by MC_CMD_PROXY_COMPLETE if the caller is not the function
242 * that has enabled proxying or BLOCK_INDEX points to a function that
243 * doesn't await an authorization.
244 */
245#define MC_CMD_ERR_PROXY_UNEXPECTED 0x1012
246/* This code is currently only used internally in FW. Its meaning is that
247 * an operation failed due to lack of SR-IOV privilege.
248 * Normally it is translated to EPERM by send_cmd_err(),
249 * but it may also be used to trigger some special mechanism
250 * for handling such case, e.g. to relay the failed request
251 * to a designated admin function for authorization.
252 */
253#define MC_CMD_ERR_NO_PRIVILEGE 0x1013
254/* Workaround 26807 could not be turned on/off because some functions
255 * have already installed filters. See the comment at
256 * MC_CMD_WORKAROUND_BUG26807.
257 */
258#define MC_CMD_ERR_FILTERS_PRESENT 0x1014
259/* The clock whose frequency you've attempted to set set
260 * doesn't exist on this NIC
261 */
262#define MC_CMD_ERR_NO_CLOCK 0x1015
263/* Returned by MC_CMD_TESTASSERT if the action that should
264 * have caused an assertion failed to do so.
265 */
266#define MC_CMD_ERR_UNREACHABLE 0x1016
267/* This command needs to be processed in the background but there were no
268 * resources to do so. Send it again after a command has completed.
269 */
270#define MC_CMD_ERR_QUEUE_FULL 0x1017
271
272#define MC_CMD_ERR_CODE_OFST 0
273
274
275#ifdef WITH_MCDI_V2
276
277/* Version 2 adds an optional argument to error returns: the errno value
278 * may be followed by the (0-based) number of the first argument that
279 * could not be processed.
280 */
281#define MC_CMD_ERR_ARG_OFST 4
282
283/* No space */
284#define MC_CMD_ERR_ENOSPC 28
285
286#endif
287
288/* MCDI_EVENT structuredef */
289#define MCDI_EVENT_LEN 8
290#define MCDI_EVENT_CONT_LBN 32
291#define MCDI_EVENT_CONT_WIDTH 1
292#define MCDI_EVENT_LEVEL_LBN 33
293#define MCDI_EVENT_LEVEL_WIDTH 3
294/* enum: Info. */
295#define MCDI_EVENT_LEVEL_INFO 0x0
296/* enum: Warning. */
297#define MCDI_EVENT_LEVEL_WARN 0x1
298/* enum: Error. */
299#define MCDI_EVENT_LEVEL_ERR 0x2
300/* enum: Fatal. */
301#define MCDI_EVENT_LEVEL_FATAL 0x3
302#define MCDI_EVENT_DATA_OFST 0
303#define MCDI_EVENT_CMDDONE_SEQ_LBN 0
304#define MCDI_EVENT_CMDDONE_SEQ_WIDTH 8
305#define MCDI_EVENT_CMDDONE_DATALEN_LBN 8
306#define MCDI_EVENT_CMDDONE_DATALEN_WIDTH 8
307#define MCDI_EVENT_CMDDONE_ERRNO_LBN 16
308#define MCDI_EVENT_CMDDONE_ERRNO_WIDTH 8
309#define MCDI_EVENT_LINKCHANGE_LP_CAP_LBN 0
310#define MCDI_EVENT_LINKCHANGE_LP_CAP_WIDTH 16
311#define MCDI_EVENT_LINKCHANGE_SPEED_LBN 16
312#define MCDI_EVENT_LINKCHANGE_SPEED_WIDTH 4
313/* enum: 100Mbs */
314#define MCDI_EVENT_LINKCHANGE_SPEED_100M 0x1
315/* enum: 1Gbs */
316#define MCDI_EVENT_LINKCHANGE_SPEED_1G 0x2
317/* enum: 10Gbs */
318#define MCDI_EVENT_LINKCHANGE_SPEED_10G 0x3
319/* enum: 40Gbs */
320#define MCDI_EVENT_LINKCHANGE_SPEED_40G 0x4
321#define MCDI_EVENT_LINKCHANGE_FCNTL_LBN 20
322#define MCDI_EVENT_LINKCHANGE_FCNTL_WIDTH 4
323#define MCDI_EVENT_LINKCHANGE_LINK_FLAGS_LBN 24
324#define MCDI_EVENT_LINKCHANGE_LINK_FLAGS_WIDTH 8
325#define MCDI_EVENT_SENSOREVT_MONITOR_LBN 0
326#define MCDI_EVENT_SENSOREVT_MONITOR_WIDTH 8
327#define MCDI_EVENT_SENSOREVT_STATE_LBN 8
328#define MCDI_EVENT_SENSOREVT_STATE_WIDTH 8
329#define MCDI_EVENT_SENSOREVT_VALUE_LBN 16
330#define MCDI_EVENT_SENSOREVT_VALUE_WIDTH 16
331#define MCDI_EVENT_FWALERT_DATA_LBN 8
332#define MCDI_EVENT_FWALERT_DATA_WIDTH 24
333#define MCDI_EVENT_FWALERT_REASON_LBN 0
334#define MCDI_EVENT_FWALERT_REASON_WIDTH 8
335/* enum: SRAM Access. */
336#define MCDI_EVENT_FWALERT_REASON_SRAM_ACCESS 0x1
337#define MCDI_EVENT_FLR_VF_LBN 0
338#define MCDI_EVENT_FLR_VF_WIDTH 8
339#define MCDI_EVENT_TX_ERR_TXQ_LBN 0
340#define MCDI_EVENT_TX_ERR_TXQ_WIDTH 12
341#define MCDI_EVENT_TX_ERR_TYPE_LBN 12
342#define MCDI_EVENT_TX_ERR_TYPE_WIDTH 4
343/* enum: Descriptor loader reported failure */
344#define MCDI_EVENT_TX_ERR_DL_FAIL 0x1
345/* enum: Descriptor ring empty and no EOP seen for packet */
346#define MCDI_EVENT_TX_ERR_NO_EOP 0x2
347/* enum: Overlength packet */
348#define MCDI_EVENT_TX_ERR_2BIG 0x3
349/* enum: Malformed option descriptor */
350#define MCDI_EVENT_TX_BAD_OPTDESC 0x5
351/* enum: Option descriptor part way through a packet */
352#define MCDI_EVENT_TX_OPT_IN_PKT 0x8
353/* enum: DMA or PIO data access error */
354#define MCDI_EVENT_TX_ERR_BAD_DMA_OR_PIO 0x9
355#define MCDI_EVENT_TX_ERR_INFO_LBN 16
356#define MCDI_EVENT_TX_ERR_INFO_WIDTH 16
357#define MCDI_EVENT_TX_FLUSH_TO_DRIVER_LBN 12
358#define MCDI_EVENT_TX_FLUSH_TO_DRIVER_WIDTH 1
359#define MCDI_EVENT_TX_FLUSH_TXQ_LBN 0
360#define MCDI_EVENT_TX_FLUSH_TXQ_WIDTH 12
361#define MCDI_EVENT_PTP_ERR_TYPE_LBN 0
362#define MCDI_EVENT_PTP_ERR_TYPE_WIDTH 8
363/* enum: PLL lost lock */
364#define MCDI_EVENT_PTP_ERR_PLL_LOST 0x1
365/* enum: Filter overflow (PDMA) */
366#define MCDI_EVENT_PTP_ERR_FILTER 0x2
367/* enum: FIFO overflow (FPGA) */
368#define MCDI_EVENT_PTP_ERR_FIFO 0x3
369/* enum: Merge queue overflow */
370#define MCDI_EVENT_PTP_ERR_QUEUE 0x4
371#define MCDI_EVENT_AOE_ERR_TYPE_LBN 0
372#define MCDI_EVENT_AOE_ERR_TYPE_WIDTH 8
373/* enum: AOE failed to load - no valid image? */
374#define MCDI_EVENT_AOE_NO_LOAD 0x1
375/* enum: AOE FC reported an exception */
376#define MCDI_EVENT_AOE_FC_ASSERT 0x2
377/* enum: AOE FC watchdogged */
378#define MCDI_EVENT_AOE_FC_WATCHDOG 0x3
379/* enum: AOE FC failed to start */
380#define MCDI_EVENT_AOE_FC_NO_START 0x4
381/* enum: Generic AOE fault - likely to have been reported via other means too
382 * but intended for use by aoex driver.
383 */
384#define MCDI_EVENT_AOE_FAULT 0x5
385/* enum: Results of reprogramming the CPLD (status in AOE_ERR_DATA) */
386#define MCDI_EVENT_AOE_CPLD_REPROGRAMMED 0x6
387/* enum: AOE loaded successfully */
388#define MCDI_EVENT_AOE_LOAD 0x7
389/* enum: AOE DMA operation completed (LSB of HOST_HANDLE in AOE_ERR_DATA) */
390#define MCDI_EVENT_AOE_DMA 0x8
391/* enum: AOE byteblaster connected/disconnected (Connection status in
392 * AOE_ERR_DATA)
393 */
394#define MCDI_EVENT_AOE_BYTEBLASTER 0x9
395/* enum: DDR ECC status update */
396#define MCDI_EVENT_AOE_DDR_ECC_STATUS 0xa
397/* enum: PTP status update */
398#define MCDI_EVENT_AOE_PTP_STATUS 0xb
399/* enum: FPGA header incorrect */
400#define MCDI_EVENT_AOE_FPGA_LOAD_HEADER_ERR 0xc
401/* enum: FPGA Powered Off due to error in powering up FPGA */
402#define MCDI_EVENT_AOE_FPGA_POWER_OFF 0xd
403/* enum: AOE FPGA load failed due to MC to MUM communication failure */
404#define MCDI_EVENT_AOE_FPGA_LOAD_FAILED 0xe
405/* enum: Notify that invalid flash type detected */
406#define MCDI_EVENT_AOE_INVALID_FPGA_FLASH_TYPE 0xf
407/* enum: Notify that the attempt to run FPGA Controller firmware timedout */
408#define MCDI_EVENT_AOE_FC_RUN_TIMEDOUT 0x10
409/* enum: Failure to probe one or more FPGA boot flash chips */
410#define MCDI_EVENT_AOE_FPGA_BOOT_FLASH_INVALID 0x11
411/* enum: FPGA boot-flash contains an invalid image header */
412#define MCDI_EVENT_AOE_FPGA_BOOT_FLASH_HDR_INVALID 0x12
413/* enum: Failed to program clocks required by the FPGA */
414#define MCDI_EVENT_AOE_FPGA_CLOCKS_PROGRAM_FAILED 0x13
415/* enum: Notify that FPGA Controller is alive to serve MCDI requests */
416#define MCDI_EVENT_AOE_FC_RUNNING 0x14
417#define MCDI_EVENT_AOE_ERR_DATA_LBN 8
418#define MCDI_EVENT_AOE_ERR_DATA_WIDTH 8
419#define MCDI_EVENT_AOE_ERR_FC_ASSERT_INFO_LBN 8
420#define MCDI_EVENT_AOE_ERR_FC_ASSERT_INFO_WIDTH 8
421/* enum: FC Assert happened, but the register information is not available */
422#define MCDI_EVENT_AOE_ERR_FC_ASSERT_SEEN 0x0
423/* enum: The register information for FC Assert is ready for readinng by driver
424 */
425#define MCDI_EVENT_AOE_ERR_FC_ASSERT_DATA_READY 0x1
426#define MCDI_EVENT_AOE_ERR_CODE_FPGA_HEADER_VERIFY_FAILED_LBN 8
427#define MCDI_EVENT_AOE_ERR_CODE_FPGA_HEADER_VERIFY_FAILED_WIDTH 8
428/* enum: Reading from NV failed */
429#define MCDI_EVENT_AOE_ERR_FPGA_HEADER_NV_READ_FAIL 0x0
430/* enum: Invalid Magic Number if FPGA header */
431#define MCDI_EVENT_AOE_ERR_FPGA_HEADER_MAGIC_FAIL 0x1
432/* enum: Invalid Silicon type detected in header */
433#define MCDI_EVENT_AOE_ERR_FPGA_HEADER_SILICON_TYPE 0x2
434/* enum: Unsupported VRatio */
435#define MCDI_EVENT_AOE_ERR_FPGA_HEADER_VRATIO 0x3
436/* enum: Unsupported DDR Type */
437#define MCDI_EVENT_AOE_ERR_FPGA_HEADER_DDR_TYPE 0x4
438/* enum: DDR Voltage out of supported range */
439#define MCDI_EVENT_AOE_ERR_FPGA_HEADER_DDR_VOLTAGE 0x5
440/* enum: Unsupported DDR speed */
441#define MCDI_EVENT_AOE_ERR_FPGA_HEADER_DDR_SPEED 0x6
442/* enum: Unsupported DDR size */
443#define MCDI_EVENT_AOE_ERR_FPGA_HEADER_DDR_SIZE 0x7
444/* enum: Unsupported DDR rank */
445#define MCDI_EVENT_AOE_ERR_FPGA_HEADER_DDR_RANK 0x8
446#define MCDI_EVENT_AOE_ERR_CODE_INVALID_FPGA_FLASH_TYPE_INFO_LBN 8
447#define MCDI_EVENT_AOE_ERR_CODE_INVALID_FPGA_FLASH_TYPE_INFO_WIDTH 8
448/* enum: Primary boot flash */
449#define MCDI_EVENT_AOE_FLASH_TYPE_BOOT_PRIMARY 0x0
450/* enum: Secondary boot flash */
451#define MCDI_EVENT_AOE_FLASH_TYPE_BOOT_SECONDARY 0x1
452#define MCDI_EVENT_AOE_ERR_CODE_FPGA_POWER_OFF_LBN 8
453#define MCDI_EVENT_AOE_ERR_CODE_FPGA_POWER_OFF_WIDTH 8
454#define MCDI_EVENT_AOE_ERR_CODE_FPGA_LOAD_FAILED_LBN 8
455#define MCDI_EVENT_AOE_ERR_CODE_FPGA_LOAD_FAILED_WIDTH 8
456#define MCDI_EVENT_RX_ERR_RXQ_LBN 0
457#define MCDI_EVENT_RX_ERR_RXQ_WIDTH 12
458#define MCDI_EVENT_RX_ERR_TYPE_LBN 12
459#define MCDI_EVENT_RX_ERR_TYPE_WIDTH 4
460#define MCDI_EVENT_RX_ERR_INFO_LBN 16
461#define MCDI_EVENT_RX_ERR_INFO_WIDTH 16
462#define MCDI_EVENT_RX_FLUSH_TO_DRIVER_LBN 12
463#define MCDI_EVENT_RX_FLUSH_TO_DRIVER_WIDTH 1
464#define MCDI_EVENT_RX_FLUSH_RXQ_LBN 0
465#define MCDI_EVENT_RX_FLUSH_RXQ_WIDTH 12
466#define MCDI_EVENT_MC_REBOOT_COUNT_LBN 0
467#define MCDI_EVENT_MC_REBOOT_COUNT_WIDTH 16
468#define MCDI_EVENT_MUM_ERR_TYPE_LBN 0
469#define MCDI_EVENT_MUM_ERR_TYPE_WIDTH 8
470/* enum: MUM failed to load - no valid image? */
471#define MCDI_EVENT_MUM_NO_LOAD 0x1
472/* enum: MUM f/w reported an exception */
473#define MCDI_EVENT_MUM_ASSERT 0x2
474/* enum: MUM not kicking watchdog */
475#define MCDI_EVENT_MUM_WATCHDOG 0x3
476#define MCDI_EVENT_MUM_ERR_DATA_LBN 8
477#define MCDI_EVENT_MUM_ERR_DATA_WIDTH 8
478#define MCDI_EVENT_DATA_LBN 0
479#define MCDI_EVENT_DATA_WIDTH 32
480#define MCDI_EVENT_SRC_LBN 36
481#define MCDI_EVENT_SRC_WIDTH 8
482#define MCDI_EVENT_EV_CODE_LBN 60
483#define MCDI_EVENT_EV_CODE_WIDTH 4
484#define MCDI_EVENT_CODE_LBN 44
485#define MCDI_EVENT_CODE_WIDTH 8
486/* enum: Event generated by host software */
487#define MCDI_EVENT_SW_EVENT 0x0
488/* enum: Bad assert. */
489#define MCDI_EVENT_CODE_BADSSERT 0x1
490/* enum: PM Notice. */
491#define MCDI_EVENT_CODE_PMNOTICE 0x2
492/* enum: Command done. */
493#define MCDI_EVENT_CODE_CMDDONE 0x3
494/* enum: Link change. */
495#define MCDI_EVENT_CODE_LINKCHANGE 0x4
496/* enum: Sensor Event. */
497#define MCDI_EVENT_CODE_SENSOREVT 0x5
498/* enum: Schedule error. */
499#define MCDI_EVENT_CODE_SCHEDERR 0x6
500/* enum: Reboot. */
501#define MCDI_EVENT_CODE_REBOOT 0x7
502/* enum: Mac stats DMA. */
503#define MCDI_EVENT_CODE_MAC_STATS_DMA 0x8
504/* enum: Firmware alert. */
505#define MCDI_EVENT_CODE_FWALERT 0x9
506/* enum: Function level reset. */
507#define MCDI_EVENT_CODE_FLR 0xa
508/* enum: Transmit error */
509#define MCDI_EVENT_CODE_TX_ERR 0xb
510/* enum: Tx flush has completed */
511#define MCDI_EVENT_CODE_TX_FLUSH 0xc
512/* enum: PTP packet received timestamp */
513#define MCDI_EVENT_CODE_PTP_RX 0xd
514/* enum: PTP NIC failure */
515#define MCDI_EVENT_CODE_PTP_FAULT 0xe
516/* enum: PTP PPS event */
517#define MCDI_EVENT_CODE_PTP_PPS 0xf
518/* enum: Rx flush has completed */
519#define MCDI_EVENT_CODE_RX_FLUSH 0x10
520/* enum: Receive error */
521#define MCDI_EVENT_CODE_RX_ERR 0x11
522/* enum: AOE fault */
523#define MCDI_EVENT_CODE_AOE 0x12
524/* enum: Network port calibration failed (VCAL). */
525#define MCDI_EVENT_CODE_VCAL_FAIL 0x13
526/* enum: HW PPS event */
527#define MCDI_EVENT_CODE_HW_PPS 0x14
528/* enum: The MC has rebooted (huntington and later, siena uses CODE_REBOOT and
529 * a different format)
530 */
531#define MCDI_EVENT_CODE_MC_REBOOT 0x15
532/* enum: the MC has detected a parity error */
533#define MCDI_EVENT_CODE_PAR_ERR 0x16
534/* enum: the MC has detected a correctable error */
535#define MCDI_EVENT_CODE_ECC_CORR_ERR 0x17
536/* enum: the MC has detected an uncorrectable error */
537#define MCDI_EVENT_CODE_ECC_FATAL_ERR 0x18
538/* enum: The MC has entered offline BIST mode */
539#define MCDI_EVENT_CODE_MC_BIST 0x19
540/* enum: PTP tick event providing current NIC time */
541#define MCDI_EVENT_CODE_PTP_TIME 0x1a
542/* enum: MUM fault */
543#define MCDI_EVENT_CODE_MUM 0x1b
544/* enum: notify the designated PF of a new authorization request */
545#define MCDI_EVENT_CODE_PROXY_REQUEST 0x1c
546/* enum: notify a function that awaits an authorization that its request has
547 * been processed and it may now resend the command
548 */
549#define MCDI_EVENT_CODE_PROXY_RESPONSE 0x1d
550/* enum: Artificial event generated by host and posted via MC for test
551 * purposes.
552 */
553#define MCDI_EVENT_CODE_TESTGEN 0xfa
554#define MCDI_EVENT_CMDDONE_DATA_OFST 0
555#define MCDI_EVENT_CMDDONE_DATA_LBN 0
556#define MCDI_EVENT_CMDDONE_DATA_WIDTH 32
557#define MCDI_EVENT_LINKCHANGE_DATA_OFST 0
558#define MCDI_EVENT_LINKCHANGE_DATA_LBN 0
559#define MCDI_EVENT_LINKCHANGE_DATA_WIDTH 32
560#define MCDI_EVENT_SENSOREVT_DATA_OFST 0
561#define MCDI_EVENT_SENSOREVT_DATA_LBN 0
562#define MCDI_EVENT_SENSOREVT_DATA_WIDTH 32
563#define MCDI_EVENT_MAC_STATS_DMA_GENERATION_OFST 0
564#define MCDI_EVENT_MAC_STATS_DMA_GENERATION_LBN 0
565#define MCDI_EVENT_MAC_STATS_DMA_GENERATION_WIDTH 32
566#define MCDI_EVENT_TX_ERR_DATA_OFST 0
567#define MCDI_EVENT_TX_ERR_DATA_LBN 0
568#define MCDI_EVENT_TX_ERR_DATA_WIDTH 32
569/* For CODE_PTP_RX, CODE_PTP_PPS and CODE_HW_PPS events the seconds field of
570 * timestamp
571 */
572#define MCDI_EVENT_PTP_SECONDS_OFST 0
573#define MCDI_EVENT_PTP_SECONDS_LBN 0
574#define MCDI_EVENT_PTP_SECONDS_WIDTH 32
575/* For CODE_PTP_RX, CODE_PTP_PPS and CODE_HW_PPS events the major field of
576 * timestamp
577 */
578#define MCDI_EVENT_PTP_MAJOR_OFST 0
579#define MCDI_EVENT_PTP_MAJOR_LBN 0
580#define MCDI_EVENT_PTP_MAJOR_WIDTH 32
581/* For CODE_PTP_RX, CODE_PTP_PPS and CODE_HW_PPS events the nanoseconds field
582 * of timestamp
583 */
584#define MCDI_EVENT_PTP_NANOSECONDS_OFST 0
585#define MCDI_EVENT_PTP_NANOSECONDS_LBN 0
586#define MCDI_EVENT_PTP_NANOSECONDS_WIDTH 32
587/* For CODE_PTP_RX, CODE_PTP_PPS and CODE_HW_PPS events the minor field of
588 * timestamp
589 */
590#define MCDI_EVENT_PTP_MINOR_OFST 0
591#define MCDI_EVENT_PTP_MINOR_LBN 0
592#define MCDI_EVENT_PTP_MINOR_WIDTH 32
593/* For CODE_PTP_RX events, the lowest four bytes of sourceUUID from PTP packet
594 */
595#define MCDI_EVENT_PTP_UUID_OFST 0
596#define MCDI_EVENT_PTP_UUID_LBN 0
597#define MCDI_EVENT_PTP_UUID_WIDTH 32
598#define MCDI_EVENT_RX_ERR_DATA_OFST 0
599#define MCDI_EVENT_RX_ERR_DATA_LBN 0
600#define MCDI_EVENT_RX_ERR_DATA_WIDTH 32
601#define MCDI_EVENT_PAR_ERR_DATA_OFST 0
602#define MCDI_EVENT_PAR_ERR_DATA_LBN 0
603#define MCDI_EVENT_PAR_ERR_DATA_WIDTH 32
604#define MCDI_EVENT_ECC_CORR_ERR_DATA_OFST 0
605#define MCDI_EVENT_ECC_CORR_ERR_DATA_LBN 0
606#define MCDI_EVENT_ECC_CORR_ERR_DATA_WIDTH 32
607#define MCDI_EVENT_ECC_FATAL_ERR_DATA_OFST 0
608#define MCDI_EVENT_ECC_FATAL_ERR_DATA_LBN 0
609#define MCDI_EVENT_ECC_FATAL_ERR_DATA_WIDTH 32
610/* For CODE_PTP_TIME events, the major value of the PTP clock */
611#define MCDI_EVENT_PTP_TIME_MAJOR_OFST 0
612#define MCDI_EVENT_PTP_TIME_MAJOR_LBN 0
613#define MCDI_EVENT_PTP_TIME_MAJOR_WIDTH 32
614/* For CODE_PTP_TIME events, bits 19-26 of the minor value of the PTP clock */
615#define MCDI_EVENT_PTP_TIME_MINOR_26_19_LBN 36
616#define MCDI_EVENT_PTP_TIME_MINOR_26_19_WIDTH 8
617/* For CODE_PTP_TIME events where report sync status is enabled, indicates
618 * whether the NIC clock has ever been set
619 */
620#define MCDI_EVENT_PTP_TIME_NIC_CLOCK_VALID_LBN 36
621#define MCDI_EVENT_PTP_TIME_NIC_CLOCK_VALID_WIDTH 1
622/* For CODE_PTP_TIME events where report sync status is enabled, indicates
623 * whether the NIC and System clocks are in sync
624 */
625#define MCDI_EVENT_PTP_TIME_HOST_NIC_IN_SYNC_LBN 37
626#define MCDI_EVENT_PTP_TIME_HOST_NIC_IN_SYNC_WIDTH 1
627/* For CODE_PTP_TIME events where report sync status is enabled, bits 21-26 of
628 * the minor value of the PTP clock
629 */
630#define MCDI_EVENT_PTP_TIME_MINOR_26_21_LBN 38
631#define MCDI_EVENT_PTP_TIME_MINOR_26_21_WIDTH 6
632#define MCDI_EVENT_PROXY_REQUEST_BUFF_INDEX_OFST 0
633#define MCDI_EVENT_PROXY_REQUEST_BUFF_INDEX_LBN 0
634#define MCDI_EVENT_PROXY_REQUEST_BUFF_INDEX_WIDTH 32
635#define MCDI_EVENT_PROXY_RESPONSE_HANDLE_OFST 0
636#define MCDI_EVENT_PROXY_RESPONSE_HANDLE_LBN 0
637#define MCDI_EVENT_PROXY_RESPONSE_HANDLE_WIDTH 32
638/* Zero means that the request has been completed or authorized, and the driver
639 * should resend it. A non-zero value means that the authorization has been
640 * denied, and gives the reason. Typically it will be EPERM.
641 */
642#define MCDI_EVENT_PROXY_RESPONSE_RC_LBN 36
643#define MCDI_EVENT_PROXY_RESPONSE_RC_WIDTH 8
644
645/* EVB_PORT_ID structuredef */
646#define EVB_PORT_ID_LEN 4
647#define EVB_PORT_ID_PORT_ID_OFST 0
648/* enum: An invalid port handle. */
649#define EVB_PORT_ID_NULL 0x0
650/* enum: The port assigned to this function.. */
651#define EVB_PORT_ID_ASSIGNED 0x1000000
652/* enum: External network port 0 */
653#define EVB_PORT_ID_MAC0 0x2000000
654/* enum: External network port 1 */
655#define EVB_PORT_ID_MAC1 0x2000001
656/* enum: External network port 2 */
657#define EVB_PORT_ID_MAC2 0x2000002
658/* enum: External network port 3 */
659#define EVB_PORT_ID_MAC3 0x2000003
660#define EVB_PORT_ID_PORT_ID_LBN 0
661#define EVB_PORT_ID_PORT_ID_WIDTH 32
662
663
664/***********************************/
665/* MC_CMD_DRV_ATTACH
666 * Inform MCPU that this port is managed on the host (i.e. driver active). For
667 * Huntington, also request the preferred datapath firmware to use if possible
668 * (it may not be possible for this request to be fulfilled; the driver must
669 * issue a subsequent MC_CMD_GET_CAPABILITIES command to determine which
670 * features are actually available). The FIRMWARE_ID field is ignored by older
671 * platforms.
672 */
673#define MC_CMD_DRV_ATTACH 0x1c
674#undef MC_CMD_0x1c_PRIVILEGE_CTG
675
676#define MC_CMD_0x1c_PRIVILEGE_CTG SRIOV_CTG_GENERAL
677
678/* MC_CMD_DRV_ATTACH_IN msgrequest */
679#define MC_CMD_DRV_ATTACH_IN_LEN 12
680/* new state to set if UPDATE=1 */
681#define MC_CMD_DRV_ATTACH_IN_NEW_STATE_OFST 0
682#define MC_CMD_DRV_ATTACH_LBN 0
683#define MC_CMD_DRV_ATTACH_WIDTH 1
684#define MC_CMD_DRV_PREBOOT_LBN 1
685#define MC_CMD_DRV_PREBOOT_WIDTH 1
686/* 1 to set new state, or 0 to just report the existing state */
687#define MC_CMD_DRV_ATTACH_IN_UPDATE_OFST 4
688/* preferred datapath firmware (for Huntington; ignored for Siena) */
689#define MC_CMD_DRV_ATTACH_IN_FIRMWARE_ID_OFST 8
690/* enum: Prefer to use full featured firmware */
691#define MC_CMD_FW_FULL_FEATURED 0x0
692/* enum: Prefer to use firmware with fewer features but lower latency */
693#define MC_CMD_FW_LOW_LATENCY 0x1
694/* enum: Prefer to use firmware for SolarCapture packed stream mode */
695#define MC_CMD_FW_PACKED_STREAM 0x2
696/* enum: Prefer to use firmware with fewer features and simpler TX event
697 * batching but higher TX packet rate
698 */
699#define MC_CMD_FW_HIGH_TX_RATE 0x3
700/* enum: Reserved value */
701#define MC_CMD_FW_PACKED_STREAM_HASH_MODE_1 0x4
702/* enum: Prefer to use firmware with additional "rules engine" filtering
703 * support
704 */
705#define MC_CMD_FW_RULES_ENGINE 0x5
706/* enum: Only this option is allowed for non-admin functions */
707#define MC_CMD_FW_DONT_CARE 0xffffffff
708
709/* MC_CMD_DRV_ATTACH_OUT msgresponse */
710#define MC_CMD_DRV_ATTACH_OUT_LEN 4
711/* previous or existing state, see the bitmask at NEW_STATE */
712#define MC_CMD_DRV_ATTACH_OUT_OLD_STATE_OFST 0
713
714/* MC_CMD_DRV_ATTACH_EXT_OUT msgresponse */
715#define MC_CMD_DRV_ATTACH_EXT_OUT_LEN 8
716/* previous or existing state, see the bitmask at NEW_STATE */
717#define MC_CMD_DRV_ATTACH_EXT_OUT_OLD_STATE_OFST 0
718/* Flags associated with this function */
719#define MC_CMD_DRV_ATTACH_EXT_OUT_FUNC_FLAGS_OFST 4
720/* enum: Labels the lowest-numbered function visible to the OS */
721#define MC_CMD_DRV_ATTACH_EXT_OUT_FLAG_PRIMARY 0x0
722/* enum: The function can control the link state of the physical port it is
723 * bound to.
724 */
725#define MC_CMD_DRV_ATTACH_EXT_OUT_FLAG_LINKCTRL 0x1
726/* enum: The function can perform privileged operations */
727#define MC_CMD_DRV_ATTACH_EXT_OUT_FLAG_TRUSTED 0x2
728/* enum: The function does not have an active port associated with it. The port
729 * refers to the Sorrento external FPGA port.
730 */
731#define MC_CMD_DRV_ATTACH_EXT_OUT_FLAG_NO_ACTIVE_PORT 0x3
732
733
734/***********************************/
735/* MC_CMD_ENTITY_RESET
736 * Generic per-resource reset. There is no equivalent for per-board reset.
737 * Locks required: None; Return code: 0, ETIME. NOTE: This command is an
738 * extended version of the deprecated MC_CMD_PORT_RESET with added fields.
739 */
740#define MC_CMD_ENTITY_RESET 0x20
741/* MC_CMD_0x20_PRIVILEGE_CTG SRIOV_CTG_GENERAL */
742
743/* MC_CMD_ENTITY_RESET_IN msgrequest */
744#define MC_CMD_ENTITY_RESET_IN_LEN 4
745/* Optional flags field. Omitting this will perform a "legacy" reset action
746 * (TBD).
747 */
748#define MC_CMD_ENTITY_RESET_IN_FLAG_OFST 0
749#define MC_CMD_ENTITY_RESET_IN_FUNCTION_RESOURCE_RESET_LBN 0
750#define MC_CMD_ENTITY_RESET_IN_FUNCTION_RESOURCE_RESET_WIDTH 1
751
752/* MC_CMD_ENTITY_RESET_OUT msgresponse */
753#define MC_CMD_ENTITY_RESET_OUT_LEN 0
754
755
756/***********************************/
757/* MC_CMD_GET_PHY_CFG
758 * Report PHY configuration. This guarantees to succeed even if the PHY is in a
759 * 'zombie' state. Locks required: None
760 */
761#define MC_CMD_GET_PHY_CFG 0x24
762#undef MC_CMD_0x24_PRIVILEGE_CTG
763
764#define MC_CMD_0x24_PRIVILEGE_CTG SRIOV_CTG_GENERAL
765
766/* MC_CMD_GET_PHY_CFG_IN msgrequest */
767#define MC_CMD_GET_PHY_CFG_IN_LEN 0
768
769/* MC_CMD_GET_PHY_CFG_OUT msgresponse */
770#define MC_CMD_GET_PHY_CFG_OUT_LEN 72
771/* flags */
772#define MC_CMD_GET_PHY_CFG_OUT_FLAGS_OFST 0
773#define MC_CMD_GET_PHY_CFG_OUT_PRESENT_LBN 0
774#define MC_CMD_GET_PHY_CFG_OUT_PRESENT_WIDTH 1
775#define MC_CMD_GET_PHY_CFG_OUT_BIST_CABLE_SHORT_LBN 1
776#define MC_CMD_GET_PHY_CFG_OUT_BIST_CABLE_SHORT_WIDTH 1
777#define MC_CMD_GET_PHY_CFG_OUT_BIST_CABLE_LONG_LBN 2
778#define MC_CMD_GET_PHY_CFG_OUT_BIST_CABLE_LONG_WIDTH 1
779#define MC_CMD_GET_PHY_CFG_OUT_LOWPOWER_LBN 3
780#define MC_CMD_GET_PHY_CFG_OUT_LOWPOWER_WIDTH 1
781#define MC_CMD_GET_PHY_CFG_OUT_POWEROFF_LBN 4
782#define MC_CMD_GET_PHY_CFG_OUT_POWEROFF_WIDTH 1
783#define MC_CMD_GET_PHY_CFG_OUT_TXDIS_LBN 5
784#define MC_CMD_GET_PHY_CFG_OUT_TXDIS_WIDTH 1
785#define MC_CMD_GET_PHY_CFG_OUT_BIST_LBN 6
786#define MC_CMD_GET_PHY_CFG_OUT_BIST_WIDTH 1
787/* ?? */
788#define MC_CMD_GET_PHY_CFG_OUT_TYPE_OFST 4
789/* Bitmask of supported capabilities */
790#define MC_CMD_GET_PHY_CFG_OUT_SUPPORTED_CAP_OFST 8
791#define MC_CMD_PHY_CAP_10HDX_LBN 1
792#define MC_CMD_PHY_CAP_10HDX_WIDTH 1
793#define MC_CMD_PHY_CAP_10FDX_LBN 2
794#define MC_CMD_PHY_CAP_10FDX_WIDTH 1
795#define MC_CMD_PHY_CAP_100HDX_LBN 3
796#define MC_CMD_PHY_CAP_100HDX_WIDTH 1
797#define MC_CMD_PHY_CAP_100FDX_LBN 4
798#define MC_CMD_PHY_CAP_100FDX_WIDTH 1
799#define MC_CMD_PHY_CAP_1000HDX_LBN 5
800#define MC_CMD_PHY_CAP_1000HDX_WIDTH 1
801#define MC_CMD_PHY_CAP_1000FDX_LBN 6
802#define MC_CMD_PHY_CAP_1000FDX_WIDTH 1
803#define MC_CMD_PHY_CAP_10000FDX_LBN 7
804#define MC_CMD_PHY_CAP_10000FDX_WIDTH 1
805#define MC_CMD_PHY_CAP_PAUSE_LBN 8
806#define MC_CMD_PHY_CAP_PAUSE_WIDTH 1
807#define MC_CMD_PHY_CAP_ASYM_LBN 9
808#define MC_CMD_PHY_CAP_ASYM_WIDTH 1
809#define MC_CMD_PHY_CAP_AN_LBN 10
810#define MC_CMD_PHY_CAP_AN_WIDTH 1
811#define MC_CMD_PHY_CAP_40000FDX_LBN 11
812#define MC_CMD_PHY_CAP_40000FDX_WIDTH 1
813#define MC_CMD_PHY_CAP_DDM_LBN 12
814#define MC_CMD_PHY_CAP_DDM_WIDTH 1
815#define MC_CMD_PHY_CAP_100000FDX_LBN 13
816#define MC_CMD_PHY_CAP_100000FDX_WIDTH 1
817#define MC_CMD_PHY_CAP_25000FDX_LBN 14
818#define MC_CMD_PHY_CAP_25000FDX_WIDTH 1
819#define MC_CMD_PHY_CAP_50000FDX_LBN 15
820#define MC_CMD_PHY_CAP_50000FDX_WIDTH 1
821#define MC_CMD_PHY_CAP_BASER_FEC_LBN 16
822#define MC_CMD_PHY_CAP_BASER_FEC_WIDTH 1
823#define MC_CMD_PHY_CAP_BASER_FEC_REQ_LBN 17
824#define MC_CMD_PHY_CAP_BASER_FEC_REQ_WIDTH 1
825#define MC_CMD_PHY_CAP_RS_FEC_LBN 17
826#define MC_CMD_PHY_CAP_RS_FEC_WIDTH 1
827#define MC_CMD_PHY_CAP_RS_FEC_REQ_LBN 18
828#define MC_CMD_PHY_CAP_RS_FEC_REQ_WIDTH 1
829/* ?? */
830#define MC_CMD_GET_PHY_CFG_OUT_CHANNEL_OFST 12
831/* ?? */
832#define MC_CMD_GET_PHY_CFG_OUT_PRT_OFST 16
833/* ?? */
834#define MC_CMD_GET_PHY_CFG_OUT_STATS_MASK_OFST 20
835/* ?? */
836#define MC_CMD_GET_PHY_CFG_OUT_NAME_OFST 24
837#define MC_CMD_GET_PHY_CFG_OUT_NAME_LEN 20
838/* ?? */
839#define MC_CMD_GET_PHY_CFG_OUT_MEDIA_TYPE_OFST 44
840/* enum: Xaui. */
841#define MC_CMD_MEDIA_XAUI 0x1
842/* enum: CX4. */
843#define MC_CMD_MEDIA_CX4 0x2
844/* enum: KX4. */
845#define MC_CMD_MEDIA_KX4 0x3
846/* enum: XFP Far. */
847#define MC_CMD_MEDIA_XFP 0x4
848/* enum: SFP+. */
849#define MC_CMD_MEDIA_SFP_PLUS 0x5
850/* enum: 10GBaseT. */
851#define MC_CMD_MEDIA_BASE_T 0x6
852/* enum: QSFP+. */
853#define MC_CMD_MEDIA_QSFP_PLUS 0x7
854#define MC_CMD_GET_PHY_CFG_OUT_MMD_MASK_OFST 48
855/* enum: Native clause 22 */
856#define MC_CMD_MMD_CLAUSE22 0x0
857#define MC_CMD_MMD_CLAUSE45_PMAPMD 0x1 /* enum */
858#define MC_CMD_MMD_CLAUSE45_WIS 0x2 /* enum */
859#define MC_CMD_MMD_CLAUSE45_PCS 0x3 /* enum */
860#define MC_CMD_MMD_CLAUSE45_PHYXS 0x4 /* enum */
861#define MC_CMD_MMD_CLAUSE45_DTEXS 0x5 /* enum */
862#define MC_CMD_MMD_CLAUSE45_TC 0x6 /* enum */
863#define MC_CMD_MMD_CLAUSE45_AN 0x7 /* enum */
864/* enum: Clause22 proxied over clause45 by PHY. */
865#define MC_CMD_MMD_CLAUSE45_C22EXT 0x1d
866#define MC_CMD_MMD_CLAUSE45_VEND1 0x1e /* enum */
867#define MC_CMD_MMD_CLAUSE45_VEND2 0x1f /* enum */
868#define MC_CMD_GET_PHY_CFG_OUT_REVISION_OFST 52
869#define MC_CMD_GET_PHY_CFG_OUT_REVISION_LEN 20
870
871
872/***********************************/
873/* MC_CMD_GET_LINK
874 * Read the unified MAC/PHY link state. Locks required: None Return code: 0,
875 * ETIME.
876 */
877#define MC_CMD_GET_LINK 0x29
878#undef MC_CMD_0x29_PRIVILEGE_CTG
879
880#define MC_CMD_0x29_PRIVILEGE_CTG SRIOV_CTG_GENERAL
881
882/* MC_CMD_GET_LINK_IN msgrequest */
883#define MC_CMD_GET_LINK_IN_LEN 0
884
885/* MC_CMD_GET_LINK_OUT msgresponse */
886#define MC_CMD_GET_LINK_OUT_LEN 28
887/* near-side advertised capabilities */
888#define MC_CMD_GET_LINK_OUT_CAP_OFST 0
889/* link-partner advertised capabilities */
890#define MC_CMD_GET_LINK_OUT_LP_CAP_OFST 4
891/* Autonegotiated speed in mbit/s. The link may still be down even if this
892 * reads non-zero.
893 */
894#define MC_CMD_GET_LINK_OUT_LINK_SPEED_OFST 8
895/* Current loopback setting. */
896#define MC_CMD_GET_LINK_OUT_LOOPBACK_MODE_OFST 12
897/* Enum values, see field(s): */
898/* MC_CMD_GET_LOOPBACK_MODES/MC_CMD_GET_LOOPBACK_MODES_OUT/100M */
899#define MC_CMD_GET_LINK_OUT_FLAGS_OFST 16
900#define MC_CMD_GET_LINK_OUT_LINK_UP_LBN 0
901#define MC_CMD_GET_LINK_OUT_LINK_UP_WIDTH 1
902#define MC_CMD_GET_LINK_OUT_FULL_DUPLEX_LBN 1
903#define MC_CMD_GET_LINK_OUT_FULL_DUPLEX_WIDTH 1
904#define MC_CMD_GET_LINK_OUT_BPX_LINK_LBN 2
905#define MC_CMD_GET_LINK_OUT_BPX_LINK_WIDTH 1
906#define MC_CMD_GET_LINK_OUT_PHY_LINK_LBN 3
907#define MC_CMD_GET_LINK_OUT_PHY_LINK_WIDTH 1
908#define MC_CMD_GET_LINK_OUT_LINK_FAULT_RX_LBN 6
909#define MC_CMD_GET_LINK_OUT_LINK_FAULT_RX_WIDTH 1
910#define MC_CMD_GET_LINK_OUT_LINK_FAULT_TX_LBN 7
911#define MC_CMD_GET_LINK_OUT_LINK_FAULT_TX_WIDTH 1
912/* This returns the negotiated flow control value. */
913#define MC_CMD_GET_LINK_OUT_FCNTL_OFST 20
914/* Enum values, see field(s): */
915/* MC_CMD_SET_MAC/MC_CMD_SET_MAC_IN/FCNTL */
916#define MC_CMD_GET_LINK_OUT_MAC_FAULT_OFST 24
917#define MC_CMD_MAC_FAULT_XGMII_LOCAL_LBN 0
918#define MC_CMD_MAC_FAULT_XGMII_LOCAL_WIDTH 1
919#define MC_CMD_MAC_FAULT_XGMII_REMOTE_LBN 1
920#define MC_CMD_MAC_FAULT_XGMII_REMOTE_WIDTH 1
921#define MC_CMD_MAC_FAULT_SGMII_REMOTE_LBN 2
922#define MC_CMD_MAC_FAULT_SGMII_REMOTE_WIDTH 1
923#define MC_CMD_MAC_FAULT_PENDING_RECONFIG_LBN 3
924#define MC_CMD_MAC_FAULT_PENDING_RECONFIG_WIDTH 1
925
926
927/***********************************/
928/* MC_CMD_SET_MAC
929 * Set MAC configuration. Locks required: None. Return code: 0, EINVAL
930 */
931#define MC_CMD_SET_MAC 0x2c
932#undef MC_CMD_0x2c_PRIVILEGE_CTG
933
934#define MC_CMD_0x2c_PRIVILEGE_CTG SRIOV_CTG_GENERAL
935
936/* MC_CMD_SET_MAC_IN msgrequest */
937#define MC_CMD_SET_MAC_IN_LEN 28
938/* The MTU is the MTU programmed directly into the XMAC/GMAC (inclusive of
939 * EtherII, VLAN, bug16011 padding).
940 */
941#define MC_CMD_SET_MAC_IN_MTU_OFST 0
942#define MC_CMD_SET_MAC_IN_DRAIN_OFST 4
943#define MC_CMD_SET_MAC_IN_ADDR_OFST 8
944#define MC_CMD_SET_MAC_IN_ADDR_LEN 8
945#define MC_CMD_SET_MAC_IN_ADDR_LO_OFST 8
946#define MC_CMD_SET_MAC_IN_ADDR_HI_OFST 12
947#define MC_CMD_SET_MAC_IN_REJECT_OFST 16
948#define MC_CMD_SET_MAC_IN_REJECT_UNCST_LBN 0
949#define MC_CMD_SET_MAC_IN_REJECT_UNCST_WIDTH 1
950#define MC_CMD_SET_MAC_IN_REJECT_BRDCST_LBN 1
951#define MC_CMD_SET_MAC_IN_REJECT_BRDCST_WIDTH 1
952#define MC_CMD_SET_MAC_IN_FCNTL_OFST 20
953/* enum: Flow control is off. */
954#define MC_CMD_FCNTL_OFF 0x0
955/* enum: Respond to flow control. */
956#define MC_CMD_FCNTL_RESPOND 0x1
957/* enum: Respond to and Issue flow control. */
958#define MC_CMD_FCNTL_BIDIR 0x2
959/* enum: Auto neg flow control. */
960#define MC_CMD_FCNTL_AUTO 0x3
961/* enum: Priority flow control (eftest builds only). */
962#define MC_CMD_FCNTL_QBB 0x4
963/* enum: Issue flow control. */
964#define MC_CMD_FCNTL_GENERATE 0x5
965#define MC_CMD_SET_MAC_IN_FLAGS_OFST 24
966#define MC_CMD_SET_MAC_IN_FLAG_INCLUDE_FCS_LBN 0
967#define MC_CMD_SET_MAC_IN_FLAG_INCLUDE_FCS_WIDTH 1
968
969/* MC_CMD_SET_MAC_EXT_IN msgrequest */
970#define MC_CMD_SET_MAC_EXT_IN_LEN 32
971/* The MTU is the MTU programmed directly into the XMAC/GMAC (inclusive of
972 * EtherII, VLAN, bug16011 padding).
973 */
974#define MC_CMD_SET_MAC_EXT_IN_MTU_OFST 0
975#define MC_CMD_SET_MAC_EXT_IN_DRAIN_OFST 4
976#define MC_CMD_SET_MAC_EXT_IN_ADDR_OFST 8
977#define MC_CMD_SET_MAC_EXT_IN_ADDR_LEN 8
978#define MC_CMD_SET_MAC_EXT_IN_ADDR_LO_OFST 8
979#define MC_CMD_SET_MAC_EXT_IN_ADDR_HI_OFST 12
980#define MC_CMD_SET_MAC_EXT_IN_REJECT_OFST 16
981#define MC_CMD_SET_MAC_EXT_IN_REJECT_UNCST_LBN 0
982#define MC_CMD_SET_MAC_EXT_IN_REJECT_UNCST_WIDTH 1
983#define MC_CMD_SET_MAC_EXT_IN_REJECT_BRDCST_LBN 1
984#define MC_CMD_SET_MAC_EXT_IN_REJECT_BRDCST_WIDTH 1
985#define MC_CMD_SET_MAC_EXT_IN_FCNTL_OFST 20
986/* enum: Flow control is off. */
987/* MC_CMD_FCNTL_OFF 0x0 */
988/* enum: Respond to flow control. */
989/* MC_CMD_FCNTL_RESPOND 0x1 */
990/* enum: Respond to and Issue flow control. */
991/* MC_CMD_FCNTL_BIDIR 0x2 */
992/* enum: Auto neg flow control. */
993/* MC_CMD_FCNTL_AUTO 0x3 */
994/* enum: Priority flow control (eftest builds only). */
995/* MC_CMD_FCNTL_QBB 0x4 */
996/* enum: Issue flow control. */
997/* MC_CMD_FCNTL_GENERATE 0x5 */
998#define MC_CMD_SET_MAC_EXT_IN_FLAGS_OFST 24
999#define MC_CMD_SET_MAC_EXT_IN_FLAG_INCLUDE_FCS_LBN 0
1000#define MC_CMD_SET_MAC_EXT_IN_FLAG_INCLUDE_FCS_WIDTH 1
1001/* Select which parameters to configure. A parameter will only be modified if
1002 * the corresponding control flag is set. If SET_MAC_ENHANCED is not set in
1003 * capabilities then this field is ignored (and all flags are assumed to be
1004 * set).
1005 */
1006#define MC_CMD_SET_MAC_EXT_IN_CONTROL_OFST 28
1007#define MC_CMD_SET_MAC_EXT_IN_CFG_MTU_LBN 0
1008#define MC_CMD_SET_MAC_EXT_IN_CFG_MTU_WIDTH 1
1009#define MC_CMD_SET_MAC_EXT_IN_CFG_DRAIN_LBN 1
1010#define MC_CMD_SET_MAC_EXT_IN_CFG_DRAIN_WIDTH 1
1011#define MC_CMD_SET_MAC_EXT_IN_CFG_REJECT_LBN 2
1012#define MC_CMD_SET_MAC_EXT_IN_CFG_REJECT_WIDTH 1
1013#define MC_CMD_SET_MAC_EXT_IN_CFG_FCNTL_LBN 3
1014#define MC_CMD_SET_MAC_EXT_IN_CFG_FCNTL_WIDTH 1
1015#define MC_CMD_SET_MAC_EXT_IN_CFG_FCS_LBN 4
1016#define MC_CMD_SET_MAC_EXT_IN_CFG_FCS_WIDTH 1
1017
1018/* MC_CMD_SET_MAC_OUT msgresponse */
1019#define MC_CMD_SET_MAC_OUT_LEN 0
1020
1021/* MC_CMD_SET_MAC_V2_OUT msgresponse */
1022#define MC_CMD_SET_MAC_V2_OUT_LEN 4
1023/* MTU as configured after processing the request. See comment at
1024 * MC_CMD_SET_MAC_IN/MTU. To query MTU without doing any changes, set CONTROL
1025 * to 0.
1026 */
1027#define MC_CMD_SET_MAC_V2_OUT_MTU_OFST 0
1028
1029
1030/***********************************/
1031/* MC_CMD_REBOOT
1032 * Reboot the MC.
1033 *
1034 * The AFTER_ASSERTION flag is intended to be used when the driver notices an
1035 * assertion failure (at which point it is expected to perform a complete tear
1036 * down and reinitialise), to allow both ports to reset the MC once in an
1037 * atomic fashion.
1038 *
1039 * Production mc firmwares are generally compiled with REBOOT_ON_ASSERT=1,
1040 * which means that they will automatically reboot out of the assertion
1041 * handler, so this is in practise an optional operation. It is still
1042 * recommended that drivers execute this to support custom firmwares with
1043 * REBOOT_ON_ASSERT=0.
1044 *
1045 * Locks required: NONE Returns: Nothing. You get back a response with ERR=1,
1046 * DATALEN=0
1047 */
1048#define MC_CMD_REBOOT 0x3d
1049#undef MC_CMD_0x3d_PRIVILEGE_CTG
1050
1051#define MC_CMD_0x3d_PRIVILEGE_CTG SRIOV_CTG_ADMIN
1052
1053/* MC_CMD_REBOOT_IN msgrequest */
1054#define MC_CMD_REBOOT_IN_LEN 4
1055#define MC_CMD_REBOOT_IN_FLAGS_OFST 0
1056#define MC_CMD_REBOOT_FLAGS_AFTER_ASSERTION 0x1 /* enum */
1057
1058/* MC_CMD_REBOOT_OUT msgresponse */
1059#define MC_CMD_REBOOT_OUT_LEN 0
1060
1061
1062/***********************************/
1063/* MC_CMD_REBOOT_MODE
1064 * Set the mode for the next MC reboot. Locks required: NONE. Sets the reboot
1065 * mode to the specified value. Returns the old mode.
1066 */
1067#define MC_CMD_REBOOT_MODE 0x3f
1068#undef MC_CMD_0x3f_PRIVILEGE_CTG
1069
1070#define MC_CMD_0x3f_PRIVILEGE_CTG SRIOV_CTG_ADMIN
1071
1072/* MC_CMD_REBOOT_MODE_IN msgrequest */
1073#define MC_CMD_REBOOT_MODE_IN_LEN 4
1074#define MC_CMD_REBOOT_MODE_IN_VALUE_OFST 0
1075/* enum: Normal. */
1076#define MC_CMD_REBOOT_MODE_NORMAL 0x0
1077/* enum: Power-on Reset. */
1078#define MC_CMD_REBOOT_MODE_POR 0x2
1079/* enum: Snapper. */
1080#define MC_CMD_REBOOT_MODE_SNAPPER 0x3
1081/* enum: snapper fake POR */
1082#define MC_CMD_REBOOT_MODE_SNAPPER_POR 0x4
1083#define MC_CMD_REBOOT_MODE_IN_FAKE_LBN 7
1084#define MC_CMD_REBOOT_MODE_IN_FAKE_WIDTH 1
1085
1086/* MC_CMD_REBOOT_MODE_OUT msgresponse */
1087#define MC_CMD_REBOOT_MODE_OUT_LEN 4
1088#define MC_CMD_REBOOT_MODE_OUT_VALUE_OFST 0
1089
1090
1091/***********************************/
1092/* MC_CMD_WORKAROUND
1093 * Enable/Disable a given workaround. The mcfw will return EINVAL if it doesn't
1094 * understand the given workaround number - which should not be treated as a
1095 * hard error by client code. This op does not imply any semantics about each
1096 * workaround, that's between the driver and the mcfw on a per-workaround
1097 * basis. Locks required: None. Returns: 0, EINVAL .
1098 */
1099#define MC_CMD_WORKAROUND 0x4a
1100#undef MC_CMD_0x4a_PRIVILEGE_CTG
1101
1102#define MC_CMD_0x4a_PRIVILEGE_CTG SRIOV_CTG_ADMIN
1103
1104/* MC_CMD_WORKAROUND_IN msgrequest */
1105#define MC_CMD_WORKAROUND_IN_LEN 8
1106/* The enums here must correspond with those in MC_CMD_GET_WORKAROUND. */
1107#define MC_CMD_WORKAROUND_IN_TYPE_OFST 0
1108/* enum: Bug 17230 work around. */
1109#define MC_CMD_WORKAROUND_BUG17230 0x1
1110/* enum: Bug 35388 work around (unsafe EVQ writes). */
1111#define MC_CMD_WORKAROUND_BUG35388 0x2
1112/* enum: Bug35017 workaround (A64 tables must be identity map) */
1113#define MC_CMD_WORKAROUND_BUG35017 0x3
1114/* enum: Bug 41750 present (MC_CMD_TRIGGER_INTERRUPT won't work) */
1115#define MC_CMD_WORKAROUND_BUG41750 0x4
1116/* enum: Bug 42008 present (Interrupts can overtake associated events). Caution
1117 * - before adding code that queries this workaround, remember that there's
1118 * released Monza firmware that doesn't understand MC_CMD_WORKAROUND_BUG42008,
1119 * and will hence (incorrectly) report that the bug doesn't exist.
1120 */
1121#define MC_CMD_WORKAROUND_BUG42008 0x5
1122/* enum: Bug 26807 features present in firmware (multicast filter chaining)
1123 * This feature cannot be turned on/off while there are any filters already
1124 * present. The behaviour in such case depends on the acting client's privilege
1125 * level. If the client has the admin privilege, then all functions that have
1126 * filters installed will be FLRed and the FLR_DONE flag will be set. Otherwise
1127 * the command will fail with MC_CMD_ERR_FILTERS_PRESENT.
1128 */
1129#define MC_CMD_WORKAROUND_BUG26807 0x6
1130/* enum: Bug 61265 work around (broken EVQ TMR writes). */
1131#define MC_CMD_WORKAROUND_BUG61265 0x7
1132/* 0 = disable the workaround indicated by TYPE; any non-zero value = enable
1133 * the workaround
1134 */
1135#define MC_CMD_WORKAROUND_IN_ENABLED_OFST 4
1136
1137/* MC_CMD_WORKAROUND_OUT msgresponse */
1138#define MC_CMD_WORKAROUND_OUT_LEN 0
1139
1140/* MC_CMD_WORKAROUND_EXT_OUT msgresponse: This response format will be used
1141 * when (TYPE == MC_CMD_WORKAROUND_BUG26807)
1142 */
1143#define MC_CMD_WORKAROUND_EXT_OUT_LEN 4
1144#define MC_CMD_WORKAROUND_EXT_OUT_FLAGS_OFST 0
1145#define MC_CMD_WORKAROUND_EXT_OUT_FLR_DONE_LBN 0
1146#define MC_CMD_WORKAROUND_EXT_OUT_FLR_DONE_WIDTH 1
1147
1148
1149/***********************************/
1150/* MC_CMD_GET_MAC_ADDRESSES
1151 * Returns the base MAC, count and stride for the requesting function
1152 */
1153#define MC_CMD_GET_MAC_ADDRESSES 0x55
1154#undef MC_CMD_0x55_PRIVILEGE_CTG
1155
1156#define MC_CMD_0x55_PRIVILEGE_CTG SRIOV_CTG_GENERAL
1157
1158/* MC_CMD_GET_MAC_ADDRESSES_IN msgrequest */
1159#define MC_CMD_GET_MAC_ADDRESSES_IN_LEN 0
1160
1161/* MC_CMD_GET_MAC_ADDRESSES_OUT msgresponse */
1162#define MC_CMD_GET_MAC_ADDRESSES_OUT_LEN 16
1163/* Base MAC address */
1164#define MC_CMD_GET_MAC_ADDRESSES_OUT_MAC_ADDR_BASE_OFST 0
1165#define MC_CMD_GET_MAC_ADDRESSES_OUT_MAC_ADDR_BASE_LEN 6
1166/* Padding */
1167#define MC_CMD_GET_MAC_ADDRESSES_OUT_RESERVED_OFST 6
1168#define MC_CMD_GET_MAC_ADDRESSES_OUT_RESERVED_LEN 2
1169/* Number of allocated MAC addresses */
1170#define MC_CMD_GET_MAC_ADDRESSES_OUT_MAC_COUNT_OFST 8
1171/* Spacing of allocated MAC addresses */
1172#define MC_CMD_GET_MAC_ADDRESSES_OUT_MAC_STRIDE_OFST 12
1173
1174
1175/***********************************/
1176/* MC_CMD_GET_WORKAROUNDS
1177 * Read the list of all implemented and all currently enabled workarounds. The
1178 * enums here must correspond with those in MC_CMD_WORKAROUND.
1179 */
1180#define MC_CMD_GET_WORKAROUNDS 0x59
1181#undef MC_CMD_0x59_PRIVILEGE_CTG
1182
1183#define MC_CMD_0x59_PRIVILEGE_CTG SRIOV_CTG_GENERAL
1184
1185/* MC_CMD_GET_WORKAROUNDS_OUT msgresponse */
1186#define MC_CMD_GET_WORKAROUNDS_OUT_LEN 8
1187/* Each workaround is represented by a single bit according to the enums below.
1188 */
1189#define MC_CMD_GET_WORKAROUNDS_OUT_IMPLEMENTED_OFST 0
1190#define MC_CMD_GET_WORKAROUNDS_OUT_ENABLED_OFST 4
1191/* enum: Bug 17230 work around. */
1192#define MC_CMD_GET_WORKAROUNDS_OUT_BUG17230 0x2
1193/* enum: Bug 35388 work around (unsafe EVQ writes). */
1194#define MC_CMD_GET_WORKAROUNDS_OUT_BUG35388 0x4
1195/* enum: Bug35017 workaround (A64 tables must be identity map) */
1196#define MC_CMD_GET_WORKAROUNDS_OUT_BUG35017 0x8
1197/* enum: Bug 41750 present (MC_CMD_TRIGGER_INTERRUPT won't work) */
1198#define MC_CMD_GET_WORKAROUNDS_OUT_BUG41750 0x10
1199/* enum: Bug 42008 present (Interrupts can overtake associated events). Caution
1200 * - before adding code that queries this workaround, remember that there's
1201 * released Monza firmware that doesn't understand MC_CMD_WORKAROUND_BUG42008,
1202 * and will hence (incorrectly) report that the bug doesn't exist.
1203 */
1204#define MC_CMD_GET_WORKAROUNDS_OUT_BUG42008 0x20
1205/* enum: Bug 26807 features present in firmware (multicast filter chaining) */
1206#define MC_CMD_GET_WORKAROUNDS_OUT_BUG26807 0x40
1207/* enum: Bug 61265 work around (broken EVQ TMR writes). */
1208#define MC_CMD_GET_WORKAROUNDS_OUT_BUG61265 0x80
1209
1210
1211/***********************************/
1212/* MC_CMD_V2_EXTN
1213 * Encapsulation for a v2 extended command
1214 */
1215#define MC_CMD_V2_EXTN 0x7f
1216
1217/* MC_CMD_V2_EXTN_IN msgrequest */
1218#define MC_CMD_V2_EXTN_IN_LEN 4
1219/* the extended command number */
1220#define MC_CMD_V2_EXTN_IN_EXTENDED_CMD_LBN 0
1221#define MC_CMD_V2_EXTN_IN_EXTENDED_CMD_WIDTH 15
1222#define MC_CMD_V2_EXTN_IN_UNUSED_LBN 15
1223#define MC_CMD_V2_EXTN_IN_UNUSED_WIDTH 1
1224/* the actual length of the encapsulated command (which is not in the v1
1225 * header)
1226 */
1227#define MC_CMD_V2_EXTN_IN_ACTUAL_LEN_LBN 16
1228#define MC_CMD_V2_EXTN_IN_ACTUAL_LEN_WIDTH 10
1229#define MC_CMD_V2_EXTN_IN_UNUSED2_LBN 26
1230#define MC_CMD_V2_EXTN_IN_UNUSED2_WIDTH 2
1231/* Type of command/response */
1232#define MC_CMD_V2_EXTN_IN_MESSAGE_TYPE_LBN 28
1233#define MC_CMD_V2_EXTN_IN_MESSAGE_TYPE_WIDTH 4
1234/* enum: MCDI command directed to or response originating from the MC. */
1235#define MC_CMD_V2_EXTN_IN_MCDI_MESSAGE_TYPE_MC 0x0
1236/* enum: MCDI command directed to a TSA controller. MCDI responses of this type
1237 * are not defined.
1238 */
1239#define MC_CMD_V2_EXTN_IN_MCDI_MESSAGE_TYPE_TSA 0x1
1240
1241
1242/***********************************/
1243/* MC_CMD_INIT_EVQ
1244 * Set up an event queue according to the supplied parameters. The IN arguments
1245 * end with an address for each 4k of host memory required to back the EVQ.
1246 */
1247#define MC_CMD_INIT_EVQ 0x80
1248#undef MC_CMD_0x80_PRIVILEGE_CTG
1249
1250#define MC_CMD_0x80_PRIVILEGE_CTG SRIOV_CTG_GENERAL
1251
1252/* MC_CMD_INIT_EVQ_IN msgrequest */
1253#define MC_CMD_INIT_EVQ_IN_LENMIN 44
1254#define MC_CMD_INIT_EVQ_IN_LENMAX 548
1255#define MC_CMD_INIT_EVQ_IN_LEN(num) (36+8*(num))
1256/* Size, in entries */
1257#define MC_CMD_INIT_EVQ_IN_SIZE_OFST 0
1258/* Desired instance. Must be set to a specific instance, which is a function
1259 * local queue index.
1260 */
1261#define MC_CMD_INIT_EVQ_IN_INSTANCE_OFST 4
1262/* The initial timer value. The load value is ignored if the timer mode is DIS.
1263 */
1264#define MC_CMD_INIT_EVQ_IN_TMR_LOAD_OFST 8
1265/* The reload value is ignored in one-shot modes */
1266#define MC_CMD_INIT_EVQ_IN_TMR_RELOAD_OFST 12
1267/* tbd */
1268#define MC_CMD_INIT_EVQ_IN_FLAGS_OFST 16
1269#define MC_CMD_INIT_EVQ_IN_FLAG_INTERRUPTING_LBN 0
1270#define MC_CMD_INIT_EVQ_IN_FLAG_INTERRUPTING_WIDTH 1
1271#define MC_CMD_INIT_EVQ_IN_FLAG_RPTR_DOS_LBN 1
1272#define MC_CMD_INIT_EVQ_IN_FLAG_RPTR_DOS_WIDTH 1
1273#define MC_CMD_INIT_EVQ_IN_FLAG_INT_ARMD_LBN 2
1274#define MC_CMD_INIT_EVQ_IN_FLAG_INT_ARMD_WIDTH 1
1275#define MC_CMD_INIT_EVQ_IN_FLAG_CUT_THRU_LBN 3
1276#define MC_CMD_INIT_EVQ_IN_FLAG_CUT_THRU_WIDTH 1
1277#define MC_CMD_INIT_EVQ_IN_FLAG_RX_MERGE_LBN 4
1278#define MC_CMD_INIT_EVQ_IN_FLAG_RX_MERGE_WIDTH 1
1279#define MC_CMD_INIT_EVQ_IN_FLAG_TX_MERGE_LBN 5
1280#define MC_CMD_INIT_EVQ_IN_FLAG_TX_MERGE_WIDTH 1
1281#define MC_CMD_INIT_EVQ_IN_FLAG_USE_TIMER_LBN 6
1282#define MC_CMD_INIT_EVQ_IN_FLAG_USE_TIMER_WIDTH 1
1283#define MC_CMD_INIT_EVQ_IN_TMR_MODE_OFST 20
1284/* enum: Disabled */
1285#define MC_CMD_INIT_EVQ_IN_TMR_MODE_DIS 0x0
1286/* enum: Immediate */
1287#define MC_CMD_INIT_EVQ_IN_TMR_IMMED_START 0x1
1288/* enum: Triggered */
1289#define MC_CMD_INIT_EVQ_IN_TMR_TRIG_START 0x2
1290/* enum: Hold-off */
1291#define MC_CMD_INIT_EVQ_IN_TMR_INT_HLDOFF 0x3
1292/* Target EVQ for wakeups if in wakeup mode. */
1293#define MC_CMD_INIT_EVQ_IN_TARGET_EVQ_OFST 24
1294/* Target interrupt if in interrupting mode (note union with target EVQ). Use
1295 * MC_CMD_RESOURCE_INSTANCE_ANY unless a specific one required for test
1296 * purposes.
1297 */
1298#define MC_CMD_INIT_EVQ_IN_IRQ_NUM_OFST 24
1299/* Event Counter Mode. */
1300#define MC_CMD_INIT_EVQ_IN_COUNT_MODE_OFST 28
1301/* enum: Disabled */
1302#define MC_CMD_INIT_EVQ_IN_COUNT_MODE_DIS 0x0
1303/* enum: Disabled */
1304#define MC_CMD_INIT_EVQ_IN_COUNT_MODE_RX 0x1
1305/* enum: Disabled */
1306#define MC_CMD_INIT_EVQ_IN_COUNT_MODE_TX 0x2
1307/* enum: Disabled */
1308#define MC_CMD_INIT_EVQ_IN_COUNT_MODE_RXTX 0x3
1309/* Event queue packet count threshold. */
1310#define MC_CMD_INIT_EVQ_IN_COUNT_THRSHLD_OFST 32
1311/* 64-bit address of 4k of 4k-aligned host memory buffer */
1312#define MC_CMD_INIT_EVQ_IN_DMA_ADDR_OFST 36
1313#define MC_CMD_INIT_EVQ_IN_DMA_ADDR_LEN 8
1314#define MC_CMD_INIT_EVQ_IN_DMA_ADDR_LO_OFST 36
1315#define MC_CMD_INIT_EVQ_IN_DMA_ADDR_HI_OFST 40
1316#define MC_CMD_INIT_EVQ_IN_DMA_ADDR_MINNUM 1
1317#define MC_CMD_INIT_EVQ_IN_DMA_ADDR_MAXNUM 64
1318
1319/* MC_CMD_INIT_EVQ_OUT msgresponse */
1320#define MC_CMD_INIT_EVQ_OUT_LEN 4
1321/* Only valid if INTRFLAG was true */
1322#define MC_CMD_INIT_EVQ_OUT_IRQ_OFST 0
1323
1324/* MC_CMD_INIT_EVQ_V2_IN msgrequest */
1325#define MC_CMD_INIT_EVQ_V2_IN_LENMIN 44
1326#define MC_CMD_INIT_EVQ_V2_IN_LENMAX 548
1327#define MC_CMD_INIT_EVQ_V2_IN_LEN(num) (36+8*(num))
1328/* Size, in entries */
1329#define MC_CMD_INIT_EVQ_V2_IN_SIZE_OFST 0
1330/* Desired instance. Must be set to a specific instance, which is a function
1331 * local queue index.
1332 */
1333#define MC_CMD_INIT_EVQ_V2_IN_INSTANCE_OFST 4
1334/* The initial timer value. The load value is ignored if the timer mode is DIS.
1335 */
1336#define MC_CMD_INIT_EVQ_V2_IN_TMR_LOAD_OFST 8
1337/* The reload value is ignored in one-shot modes */
1338#define MC_CMD_INIT_EVQ_V2_IN_TMR_RELOAD_OFST 12
1339/* tbd */
1340#define MC_CMD_INIT_EVQ_V2_IN_FLAGS_OFST 16
1341#define MC_CMD_INIT_EVQ_V2_IN_FLAG_INTERRUPTING_LBN 0
1342#define MC_CMD_INIT_EVQ_V2_IN_FLAG_INTERRUPTING_WIDTH 1
1343#define MC_CMD_INIT_EVQ_V2_IN_FLAG_RPTR_DOS_LBN 1
1344#define MC_CMD_INIT_EVQ_V2_IN_FLAG_RPTR_DOS_WIDTH 1
1345#define MC_CMD_INIT_EVQ_V2_IN_FLAG_INT_ARMD_LBN 2
1346#define MC_CMD_INIT_EVQ_V2_IN_FLAG_INT_ARMD_WIDTH 1
1347#define MC_CMD_INIT_EVQ_V2_IN_FLAG_CUT_THRU_LBN 3
1348#define MC_CMD_INIT_EVQ_V2_IN_FLAG_CUT_THRU_WIDTH 1
1349#define MC_CMD_INIT_EVQ_V2_IN_FLAG_RX_MERGE_LBN 4
1350#define MC_CMD_INIT_EVQ_V2_IN_FLAG_RX_MERGE_WIDTH 1
1351#define MC_CMD_INIT_EVQ_V2_IN_FLAG_TX_MERGE_LBN 5
1352#define MC_CMD_INIT_EVQ_V2_IN_FLAG_TX_MERGE_WIDTH 1
1353#define MC_CMD_INIT_EVQ_V2_IN_FLAG_USE_TIMER_LBN 6
1354#define MC_CMD_INIT_EVQ_V2_IN_FLAG_USE_TIMER_WIDTH 1
1355#define MC_CMD_INIT_EVQ_V2_IN_FLAG_TYPE_LBN 7
1356#define MC_CMD_INIT_EVQ_V2_IN_FLAG_TYPE_WIDTH 4
1357/* enum: All initialisation flags specified by host. */
1358#define MC_CMD_INIT_EVQ_V2_IN_FLAG_TYPE_MANUAL 0x0
1359/* enum: MEDFORD only. Certain initialisation flags specified by host may be
1360 * over-ridden by firmware based on licenses and firmware variant in order to
1361 * provide the lowest latency achievable. See
1362 * MC_CMD_INIT_EVQ_V2/MC_CMD_INIT_EVQ_V2_OUT/FLAGS for list of affected flags.
1363 */
1364#define MC_CMD_INIT_EVQ_V2_IN_FLAG_TYPE_LOW_LATENCY 0x1
1365/* enum: MEDFORD only. Certain initialisation flags specified by host may be
1366 * over-ridden by firmware based on licenses and firmware variant in order to
1367 * provide the best throughput achievable. See
1368 * MC_CMD_INIT_EVQ_V2/MC_CMD_INIT_EVQ_V2_OUT/FLAGS for list of affected flags.
1369 */
1370#define MC_CMD_INIT_EVQ_V2_IN_FLAG_TYPE_THROUGHPUT 0x2
1371/* enum: MEDFORD only. Certain initialisation flags may be over-ridden by
1372 * firmware based on licenses and firmware variant. See
1373 * MC_CMD_INIT_EVQ_V2/MC_CMD_INIT_EVQ_V2_OUT/FLAGS for list of affected flags.
1374 */
1375#define MC_CMD_INIT_EVQ_V2_IN_FLAG_TYPE_AUTO 0x3
1376#define MC_CMD_INIT_EVQ_V2_IN_TMR_MODE_OFST 20
1377/* enum: Disabled */
1378#define MC_CMD_INIT_EVQ_V2_IN_TMR_MODE_DIS 0x0
1379/* enum: Immediate */
1380#define MC_CMD_INIT_EVQ_V2_IN_TMR_IMMED_START 0x1
1381/* enum: Triggered */
1382#define MC_CMD_INIT_EVQ_V2_IN_TMR_TRIG_START 0x2
1383/* enum: Hold-off */
1384#define MC_CMD_INIT_EVQ_V2_IN_TMR_INT_HLDOFF 0x3
1385/* Target EVQ for wakeups if in wakeup mode. */
1386#define MC_CMD_INIT_EVQ_V2_IN_TARGET_EVQ_OFST 24
1387/* Target interrupt if in interrupting mode (note union with target EVQ). Use
1388 * MC_CMD_RESOURCE_INSTANCE_ANY unless a specific one required for test
1389 * purposes.
1390 */
1391#define MC_CMD_INIT_EVQ_V2_IN_IRQ_NUM_OFST 24
1392/* Event Counter Mode. */
1393#define MC_CMD_INIT_EVQ_V2_IN_COUNT_MODE_OFST 28
1394/* enum: Disabled */
1395#define MC_CMD_INIT_EVQ_V2_IN_COUNT_MODE_DIS 0x0
1396/* enum: Disabled */
1397#define MC_CMD_INIT_EVQ_V2_IN_COUNT_MODE_RX 0x1
1398/* enum: Disabled */
1399#define MC_CMD_INIT_EVQ_V2_IN_COUNT_MODE_TX 0x2
1400/* enum: Disabled */
1401#define MC_CMD_INIT_EVQ_V2_IN_COUNT_MODE_RXTX 0x3
1402/* Event queue packet count threshold. */
1403#define MC_CMD_INIT_EVQ_V2_IN_COUNT_THRSHLD_OFST 32
1404/* 64-bit address of 4k of 4k-aligned host memory buffer */
1405#define MC_CMD_INIT_EVQ_V2_IN_DMA_ADDR_OFST 36
1406#define MC_CMD_INIT_EVQ_V2_IN_DMA_ADDR_LEN 8
1407#define MC_CMD_INIT_EVQ_V2_IN_DMA_ADDR_LO_OFST 36
1408#define MC_CMD_INIT_EVQ_V2_IN_DMA_ADDR_HI_OFST 40
1409#define MC_CMD_INIT_EVQ_V2_IN_DMA_ADDR_MINNUM 1
1410#define MC_CMD_INIT_EVQ_V2_IN_DMA_ADDR_MAXNUM 64
1411
1412/* MC_CMD_INIT_EVQ_V2_OUT msgresponse */
1413#define MC_CMD_INIT_EVQ_V2_OUT_LEN 8
1414/* Only valid if INTRFLAG was true */
1415#define MC_CMD_INIT_EVQ_V2_OUT_IRQ_OFST 0
1416/* Actual configuration applied on the card */
1417#define MC_CMD_INIT_EVQ_V2_OUT_FLAGS_OFST 4
1418#define MC_CMD_INIT_EVQ_V2_OUT_FLAG_CUT_THRU_LBN 0
1419#define MC_CMD_INIT_EVQ_V2_OUT_FLAG_CUT_THRU_WIDTH 1
1420#define MC_CMD_INIT_EVQ_V2_OUT_FLAG_RX_MERGE_LBN 1
1421#define MC_CMD_INIT_EVQ_V2_OUT_FLAG_RX_MERGE_WIDTH 1
1422#define MC_CMD_INIT_EVQ_V2_OUT_FLAG_TX_MERGE_LBN 2
1423#define MC_CMD_INIT_EVQ_V2_OUT_FLAG_TX_MERGE_WIDTH 1
1424#define MC_CMD_INIT_EVQ_V2_OUT_FLAG_RXQ_FORCE_EV_MERGING_LBN 3
1425#define MC_CMD_INIT_EVQ_V2_OUT_FLAG_RXQ_FORCE_EV_MERGING_WIDTH 1
1426
1427/* QUEUE_CRC_MODE structuredef */
1428#define QUEUE_CRC_MODE_LEN 1
1429#define QUEUE_CRC_MODE_MODE_LBN 0
1430#define QUEUE_CRC_MODE_MODE_WIDTH 4
1431/* enum: No CRC. */
1432#define QUEUE_CRC_MODE_NONE 0x0
1433/* enum: CRC Fiber channel over ethernet. */
1434#define QUEUE_CRC_MODE_FCOE 0x1
1435/* enum: CRC (digest) iSCSI header only. */
1436#define QUEUE_CRC_MODE_ISCSI_HDR 0x2
1437/* enum: CRC (digest) iSCSI header and payload. */
1438#define QUEUE_CRC_MODE_ISCSI 0x3
1439/* enum: CRC Fiber channel over IP over ethernet. */
1440#define QUEUE_CRC_MODE_FCOIPOE 0x4
1441/* enum: CRC MPA. */
1442#define QUEUE_CRC_MODE_MPA 0x5
1443#define QUEUE_CRC_MODE_SPARE_LBN 4
1444#define QUEUE_CRC_MODE_SPARE_WIDTH 4
1445
1446
1447/***********************************/
1448/* MC_CMD_INIT_RXQ
1449 * set up a receive queue according to the supplied parameters. The IN
1450 * arguments end with an address for each 4k of host memory required to back
1451 * the RXQ.
1452 */
1453#define MC_CMD_INIT_RXQ 0x81
1454#undef MC_CMD_0x81_PRIVILEGE_CTG
1455
1456#define MC_CMD_0x81_PRIVILEGE_CTG SRIOV_CTG_GENERAL
1457
1458/* MC_CMD_INIT_RXQ_IN msgrequest: Legacy RXQ_INIT request. Use extended version
1459 * in new code.
1460 */
1461#define MC_CMD_INIT_RXQ_IN_LENMIN 36
1462#define MC_CMD_INIT_RXQ_IN_LENMAX 252
1463#define MC_CMD_INIT_RXQ_IN_LEN(num) (28+8*(num))
1464/* Size, in entries */
1465#define MC_CMD_INIT_RXQ_IN_SIZE_OFST 0
1466/* The EVQ to send events to. This is an index originally specified to INIT_EVQ
1467 */
1468#define MC_CMD_INIT_RXQ_IN_TARGET_EVQ_OFST 4
1469/* The value to put in the event data. Check hardware spec. for valid range. */
1470#define MC_CMD_INIT_RXQ_IN_LABEL_OFST 8
1471/* Desired instance. Must be set to a specific instance, which is a function
1472 * local queue index.
1473 */
1474#define MC_CMD_INIT_RXQ_IN_INSTANCE_OFST 12
1475/* There will be more flags here. */
1476#define MC_CMD_INIT_RXQ_IN_FLAGS_OFST 16
1477#define MC_CMD_INIT_RXQ_IN_FLAG_BUFF_MODE_LBN 0
1478#define MC_CMD_INIT_RXQ_IN_FLAG_BUFF_MODE_WIDTH 1
1479#define MC_CMD_INIT_RXQ_IN_FLAG_HDR_SPLIT_LBN 1
1480#define MC_CMD_INIT_RXQ_IN_FLAG_HDR_SPLIT_WIDTH 1
1481#define MC_CMD_INIT_RXQ_IN_FLAG_TIMESTAMP_LBN 2
1482#define MC_CMD_INIT_RXQ_IN_FLAG_TIMESTAMP_WIDTH 1
1483#define MC_CMD_INIT_RXQ_IN_CRC_MODE_LBN 3
1484#define MC_CMD_INIT_RXQ_IN_CRC_MODE_WIDTH 4
1485#define MC_CMD_INIT_RXQ_IN_FLAG_CHAIN_LBN 7
1486#define MC_CMD_INIT_RXQ_IN_FLAG_CHAIN_WIDTH 1
1487#define MC_CMD_INIT_RXQ_IN_FLAG_PREFIX_LBN 8
1488#define MC_CMD_INIT_RXQ_IN_FLAG_PREFIX_WIDTH 1
1489#define MC_CMD_INIT_RXQ_IN_FLAG_DISABLE_SCATTER_LBN 9
1490#define MC_CMD_INIT_RXQ_IN_FLAG_DISABLE_SCATTER_WIDTH 1
1491#define MC_CMD_INIT_RXQ_IN_UNUSED_LBN 10
1492#define MC_CMD_INIT_RXQ_IN_UNUSED_WIDTH 1
1493/* Owner ID to use if in buffer mode (zero if physical) */
1494#define MC_CMD_INIT_RXQ_IN_OWNER_ID_OFST 20
1495/* The port ID associated with the v-adaptor which should contain this DMAQ. */
1496#define MC_CMD_INIT_RXQ_IN_PORT_ID_OFST 24
1497/* 64-bit address of 4k of 4k-aligned host memory buffer */
1498#define MC_CMD_INIT_RXQ_IN_DMA_ADDR_OFST 28
1499#define MC_CMD_INIT_RXQ_IN_DMA_ADDR_LEN 8
1500#define MC_CMD_INIT_RXQ_IN_DMA_ADDR_LO_OFST 28
1501#define MC_CMD_INIT_RXQ_IN_DMA_ADDR_HI_OFST 32
1502#define MC_CMD_INIT_RXQ_IN_DMA_ADDR_MINNUM 1
1503#define MC_CMD_INIT_RXQ_IN_DMA_ADDR_MAXNUM 28
1504
1505/* MC_CMD_INIT_RXQ_EXT_IN msgrequest: Extended RXQ_INIT with additional mode
1506 * flags
1507 */
1508#define MC_CMD_INIT_RXQ_EXT_IN_LEN 544
1509/* Size, in entries */
1510#define MC_CMD_INIT_RXQ_EXT_IN_SIZE_OFST 0
1511/* The EVQ to send events to. This is an index originally specified to INIT_EVQ
1512 */
1513#define MC_CMD_INIT_RXQ_EXT_IN_TARGET_EVQ_OFST 4
1514/* The value to put in the event data. Check hardware spec. for valid range. */
1515#define MC_CMD_INIT_RXQ_EXT_IN_LABEL_OFST 8
1516/* Desired instance. Must be set to a specific instance, which is a function
1517 * local queue index.
1518 */
1519#define MC_CMD_INIT_RXQ_EXT_IN_INSTANCE_OFST 12
1520/* There will be more flags here. */
1521#define MC_CMD_INIT_RXQ_EXT_IN_FLAGS_OFST 16
1522#define MC_CMD_INIT_RXQ_EXT_IN_FLAG_BUFF_MODE_LBN 0
1523#define MC_CMD_INIT_RXQ_EXT_IN_FLAG_BUFF_MODE_WIDTH 1
1524#define MC_CMD_INIT_RXQ_EXT_IN_FLAG_HDR_SPLIT_LBN 1
1525#define MC_CMD_INIT_RXQ_EXT_IN_FLAG_HDR_SPLIT_WIDTH 1
1526#define MC_CMD_INIT_RXQ_EXT_IN_FLAG_TIMESTAMP_LBN 2
1527#define MC_CMD_INIT_RXQ_EXT_IN_FLAG_TIMESTAMP_WIDTH 1
1528#define MC_CMD_INIT_RXQ_EXT_IN_CRC_MODE_LBN 3
1529#define MC_CMD_INIT_RXQ_EXT_IN_CRC_MODE_WIDTH 4
1530#define MC_CMD_INIT_RXQ_EXT_IN_FLAG_CHAIN_LBN 7
1531#define MC_CMD_INIT_RXQ_EXT_IN_FLAG_CHAIN_WIDTH 1
1532#define MC_CMD_INIT_RXQ_EXT_IN_FLAG_PREFIX_LBN 8
1533#define MC_CMD_INIT_RXQ_EXT_IN_FLAG_PREFIX_WIDTH 1
1534#define MC_CMD_INIT_RXQ_EXT_IN_FLAG_DISABLE_SCATTER_LBN 9
1535#define MC_CMD_INIT_RXQ_EXT_IN_FLAG_DISABLE_SCATTER_WIDTH 1
1536#define MC_CMD_INIT_RXQ_EXT_IN_DMA_MODE_LBN 10
1537#define MC_CMD_INIT_RXQ_EXT_IN_DMA_MODE_WIDTH 4
1538/* enum: One packet per descriptor (for normal networking) */
1539#define MC_CMD_INIT_RXQ_EXT_IN_SINGLE_PACKET 0x0
1540/* enum: Pack multiple packets into large descriptors (for SolarCapture) */
1541#define MC_CMD_INIT_RXQ_EXT_IN_PACKED_STREAM 0x1
1542#define MC_CMD_INIT_RXQ_EXT_IN_FLAG_SNAPSHOT_MODE_LBN 14
1543#define MC_CMD_INIT_RXQ_EXT_IN_FLAG_SNAPSHOT_MODE_WIDTH 1
1544#define MC_CMD_INIT_RXQ_EXT_IN_PACKED_STREAM_BUFF_SIZE_LBN 15
1545#define MC_CMD_INIT_RXQ_EXT_IN_PACKED_STREAM_BUFF_SIZE_WIDTH 3
1546#define MC_CMD_INIT_RXQ_EXT_IN_PS_BUFF_1M 0x0 /* enum */
1547#define MC_CMD_INIT_RXQ_EXT_IN_PS_BUFF_512K 0x1 /* enum */
1548#define MC_CMD_INIT_RXQ_EXT_IN_PS_BUFF_256K 0x2 /* enum */
1549#define MC_CMD_INIT_RXQ_EXT_IN_PS_BUFF_128K 0x3 /* enum */
1550#define MC_CMD_INIT_RXQ_EXT_IN_PS_BUFF_64K 0x4 /* enum */
1551#define MC_CMD_INIT_RXQ_EXT_IN_FLAG_WANT_OUTER_CLASSES_LBN 18
1552#define MC_CMD_INIT_RXQ_EXT_IN_FLAG_WANT_OUTER_CLASSES_WIDTH 1
1553#define MC_CMD_INIT_RXQ_EXT_IN_FLAG_FORCE_EV_MERGING_LBN 19
1554#define MC_CMD_INIT_RXQ_EXT_IN_FLAG_FORCE_EV_MERGING_WIDTH 1
1555/* Owner ID to use if in buffer mode (zero if physical) */
1556#define MC_CMD_INIT_RXQ_EXT_IN_OWNER_ID_OFST 20
1557/* The port ID associated with the v-adaptor which should contain this DMAQ. */
1558#define MC_CMD_INIT_RXQ_EXT_IN_PORT_ID_OFST 24
1559/* 64-bit address of 4k of 4k-aligned host memory buffer */
1560#define MC_CMD_INIT_RXQ_EXT_IN_DMA_ADDR_OFST 28
1561#define MC_CMD_INIT_RXQ_EXT_IN_DMA_ADDR_LEN 8
1562#define MC_CMD_INIT_RXQ_EXT_IN_DMA_ADDR_LO_OFST 28
1563#define MC_CMD_INIT_RXQ_EXT_IN_DMA_ADDR_HI_OFST 32
1564#define MC_CMD_INIT_RXQ_EXT_IN_DMA_ADDR_NUM 64
1565/* Maximum length of packet to receive, if SNAPSHOT_MODE flag is set */
1566#define MC_CMD_INIT_RXQ_EXT_IN_SNAPSHOT_LENGTH_OFST 540
1567
1568/* MC_CMD_INIT_RXQ_OUT msgresponse */
1569#define MC_CMD_INIT_RXQ_OUT_LEN 0
1570
1571/* MC_CMD_INIT_RXQ_EXT_OUT msgresponse */
1572#define MC_CMD_INIT_RXQ_EXT_OUT_LEN 0
1573
1574
1575/***********************************/
1576/* MC_CMD_INIT_TXQ
1577 */
1578#define MC_CMD_INIT_TXQ 0x82
1579#undef MC_CMD_0x82_PRIVILEGE_CTG
1580
1581#define MC_CMD_0x82_PRIVILEGE_CTG SRIOV_CTG_GENERAL
1582
1583/* MC_CMD_INIT_TXQ_IN msgrequest: Legacy INIT_TXQ request. Use extended version
1584 * in new code.
1585 */
1586#define MC_CMD_INIT_TXQ_IN_LENMIN 36
1587#define MC_CMD_INIT_TXQ_IN_LENMAX 252
1588#define MC_CMD_INIT_TXQ_IN_LEN(num) (28+8*(num))
1589/* Size, in entries */
1590#define MC_CMD_INIT_TXQ_IN_SIZE_OFST 0
1591/* The EVQ to send events to. This is an index originally specified to
1592 * INIT_EVQ.
1593 */
1594#define MC_CMD_INIT_TXQ_IN_TARGET_EVQ_OFST 4
1595/* The value to put in the event data. Check hardware spec. for valid range. */
1596#define MC_CMD_INIT_TXQ_IN_LABEL_OFST 8
1597/* Desired instance. Must be set to a specific instance, which is a function
1598 * local queue index.
1599 */
1600#define MC_CMD_INIT_TXQ_IN_INSTANCE_OFST 12
1601/* There will be more flags here. */
1602#define MC_CMD_INIT_TXQ_IN_FLAGS_OFST 16
1603#define MC_CMD_INIT_TXQ_IN_FLAG_BUFF_MODE_LBN 0
1604#define MC_CMD_INIT_TXQ_IN_FLAG_BUFF_MODE_WIDTH 1
1605#define MC_CMD_INIT_TXQ_IN_FLAG_IP_CSUM_DIS_LBN 1
1606#define MC_CMD_INIT_TXQ_IN_FLAG_IP_CSUM_DIS_WIDTH 1
1607#define MC_CMD_INIT_TXQ_IN_FLAG_TCP_CSUM_DIS_LBN 2
1608#define MC_CMD_INIT_TXQ_IN_FLAG_TCP_CSUM_DIS_WIDTH 1
1609#define MC_CMD_INIT_TXQ_IN_FLAG_TCP_UDP_ONLY_LBN 3
1610#define MC_CMD_INIT_TXQ_IN_FLAG_TCP_UDP_ONLY_WIDTH 1
1611#define MC_CMD_INIT_TXQ_IN_CRC_MODE_LBN 4
1612#define MC_CMD_INIT_TXQ_IN_CRC_MODE_WIDTH 4
1613#define MC_CMD_INIT_TXQ_IN_FLAG_TIMESTAMP_LBN 8
1614#define MC_CMD_INIT_TXQ_IN_FLAG_TIMESTAMP_WIDTH 1
1615#define MC_CMD_INIT_TXQ_IN_FLAG_PACER_BYPASS_LBN 9
1616#define MC_CMD_INIT_TXQ_IN_FLAG_PACER_BYPASS_WIDTH 1
1617#define MC_CMD_INIT_TXQ_IN_FLAG_INNER_IP_CSUM_EN_LBN 10
1618#define MC_CMD_INIT_TXQ_IN_FLAG_INNER_IP_CSUM_EN_WIDTH 1
1619#define MC_CMD_INIT_TXQ_IN_FLAG_INNER_TCP_CSUM_EN_LBN 11
1620#define MC_CMD_INIT_TXQ_IN_FLAG_INNER_TCP_CSUM_EN_WIDTH 1
1621/* Owner ID to use if in buffer mode (zero if physical) */
1622#define MC_CMD_INIT_TXQ_IN_OWNER_ID_OFST 20
1623/* The port ID associated with the v-adaptor which should contain this DMAQ. */
1624#define MC_CMD_INIT_TXQ_IN_PORT_ID_OFST 24
1625/* 64-bit address of 4k of 4k-aligned host memory buffer */
1626#define MC_CMD_INIT_TXQ_IN_DMA_ADDR_OFST 28
1627#define MC_CMD_INIT_TXQ_IN_DMA_ADDR_LEN 8
1628#define MC_CMD_INIT_TXQ_IN_DMA_ADDR_LO_OFST 28
1629#define MC_CMD_INIT_TXQ_IN_DMA_ADDR_HI_OFST 32
1630#define MC_CMD_INIT_TXQ_IN_DMA_ADDR_MINNUM 1
1631#define MC_CMD_INIT_TXQ_IN_DMA_ADDR_MAXNUM 28
1632
1633/* MC_CMD_INIT_TXQ_EXT_IN msgrequest: Extended INIT_TXQ with additional mode
1634 * flags
1635 */
1636#define MC_CMD_INIT_TXQ_EXT_IN_LEN 544
1637/* Size, in entries */
1638#define MC_CMD_INIT_TXQ_EXT_IN_SIZE_OFST 0
1639/* The EVQ to send events to. This is an index originally specified to
1640 * INIT_EVQ.
1641 */
1642#define MC_CMD_INIT_TXQ_EXT_IN_TARGET_EVQ_OFST 4
1643/* The value to put in the event data. Check hardware spec. for valid range. */
1644#define MC_CMD_INIT_TXQ_EXT_IN_LABEL_OFST 8
1645/* Desired instance. Must be set to a specific instance, which is a function
1646 * local queue index.
1647 */
1648#define MC_CMD_INIT_TXQ_EXT_IN_INSTANCE_OFST 12
1649/* There will be more flags here. */
1650#define MC_CMD_INIT_TXQ_EXT_IN_FLAGS_OFST 16
1651#define MC_CMD_INIT_TXQ_EXT_IN_FLAG_BUFF_MODE_LBN 0
1652#define MC_CMD_INIT_TXQ_EXT_IN_FLAG_BUFF_MODE_WIDTH 1
1653#define MC_CMD_INIT_TXQ_EXT_IN_FLAG_IP_CSUM_DIS_LBN 1
1654#define MC_CMD_INIT_TXQ_EXT_IN_FLAG_IP_CSUM_DIS_WIDTH 1
1655#define MC_CMD_INIT_TXQ_EXT_IN_FLAG_TCP_CSUM_DIS_LBN 2
1656#define MC_CMD_INIT_TXQ_EXT_IN_FLAG_TCP_CSUM_DIS_WIDTH 1
1657#define MC_CMD_INIT_TXQ_EXT_IN_FLAG_TCP_UDP_ONLY_LBN 3
1658#define MC_CMD_INIT_TXQ_EXT_IN_FLAG_TCP_UDP_ONLY_WIDTH 1
1659#define MC_CMD_INIT_TXQ_EXT_IN_CRC_MODE_LBN 4
1660#define MC_CMD_INIT_TXQ_EXT_IN_CRC_MODE_WIDTH 4
1661#define MC_CMD_INIT_TXQ_EXT_IN_FLAG_TIMESTAMP_LBN 8
1662#define MC_CMD_INIT_TXQ_EXT_IN_FLAG_TIMESTAMP_WIDTH 1
1663#define MC_CMD_INIT_TXQ_EXT_IN_FLAG_PACER_BYPASS_LBN 9
1664#define MC_CMD_INIT_TXQ_EXT_IN_FLAG_PACER_BYPASS_WIDTH 1
1665#define MC_CMD_INIT_TXQ_EXT_IN_FLAG_INNER_IP_CSUM_EN_LBN 10
1666#define MC_CMD_INIT_TXQ_EXT_IN_FLAG_INNER_IP_CSUM_EN_WIDTH 1
1667#define MC_CMD_INIT_TXQ_EXT_IN_FLAG_INNER_TCP_CSUM_EN_LBN 11
1668#define MC_CMD_INIT_TXQ_EXT_IN_FLAG_INNER_TCP_CSUM_EN_WIDTH 1
1669#define MC_CMD_INIT_TXQ_EXT_IN_FLAG_TSOV2_EN_LBN 12
1670#define MC_CMD_INIT_TXQ_EXT_IN_FLAG_TSOV2_EN_WIDTH 1
1671#define MC_CMD_INIT_TXQ_EXT_IN_FLAG_CTPIO_LBN 13
1672#define MC_CMD_INIT_TXQ_EXT_IN_FLAG_CTPIO_WIDTH 1
1673/* Owner ID to use if in buffer mode (zero if physical) */
1674#define MC_CMD_INIT_TXQ_EXT_IN_OWNER_ID_OFST 20
1675/* The port ID associated with the v-adaptor which should contain this DMAQ. */
1676#define MC_CMD_INIT_TXQ_EXT_IN_PORT_ID_OFST 24
1677/* 64-bit address of 4k of 4k-aligned host memory buffer */
1678#define MC_CMD_INIT_TXQ_EXT_IN_DMA_ADDR_OFST 28
1679#define MC_CMD_INIT_TXQ_EXT_IN_DMA_ADDR_LEN 8
1680#define MC_CMD_INIT_TXQ_EXT_IN_DMA_ADDR_LO_OFST 28
1681#define MC_CMD_INIT_TXQ_EXT_IN_DMA_ADDR_HI_OFST 32
1682#define MC_CMD_INIT_TXQ_EXT_IN_DMA_ADDR_MINNUM 1
1683#define MC_CMD_INIT_TXQ_EXT_IN_DMA_ADDR_MAXNUM 64
1684/* Flags related to Qbb flow control mode. */
1685#define MC_CMD_INIT_TXQ_EXT_IN_QBB_FLAGS_OFST 540
1686#define MC_CMD_INIT_TXQ_EXT_IN_QBB_ENABLE_LBN 0
1687#define MC_CMD_INIT_TXQ_EXT_IN_QBB_ENABLE_WIDTH 1
1688#define MC_CMD_INIT_TXQ_EXT_IN_QBB_PRIORITY_LBN 1
1689#define MC_CMD_INIT_TXQ_EXT_IN_QBB_PRIORITY_WIDTH 3
1690
1691/* MC_CMD_INIT_TXQ_OUT msgresponse */
1692#define MC_CMD_INIT_TXQ_OUT_LEN 0
1693
1694
1695/***********************************/
1696/* MC_CMD_FINI_EVQ
1697 * Teardown an EVQ.
1698 *
1699 * All DMAQs or EVQs that point to the EVQ to tear down must be torn down first
1700 * or the operation will fail with EBUSY
1701 */
1702#define MC_CMD_FINI_EVQ 0x83
1703#undef MC_CMD_0x83_PRIVILEGE_CTG
1704
1705#define MC_CMD_0x83_PRIVILEGE_CTG SRIOV_CTG_GENERAL
1706
1707/* MC_CMD_FINI_EVQ_IN msgrequest */
1708#define MC_CMD_FINI_EVQ_IN_LEN 4
1709/* Instance of EVQ to destroy. Should be the same instance as that previously
1710 * passed to INIT_EVQ
1711 */
1712#define MC_CMD_FINI_EVQ_IN_INSTANCE_OFST 0
1713
1714/* MC_CMD_FINI_EVQ_OUT msgresponse */
1715#define MC_CMD_FINI_EVQ_OUT_LEN 0
1716
1717
1718/***********************************/
1719/* MC_CMD_FINI_RXQ
1720 * Teardown a RXQ.
1721 */
1722#define MC_CMD_FINI_RXQ 0x84
1723#undef MC_CMD_0x84_PRIVILEGE_CTG
1724
1725#define MC_CMD_0x84_PRIVILEGE_CTG SRIOV_CTG_GENERAL
1726
1727/* MC_CMD_FINI_RXQ_IN msgrequest */
1728#define MC_CMD_FINI_RXQ_IN_LEN 4
1729/* Instance of RXQ to destroy */
1730#define MC_CMD_FINI_RXQ_IN_INSTANCE_OFST 0
1731
1732/* MC_CMD_FINI_RXQ_OUT msgresponse */
1733#define MC_CMD_FINI_RXQ_OUT_LEN 0
1734
1735
1736/***********************************/
1737/* MC_CMD_FINI_TXQ
1738 * Teardown a TXQ.
1739 */
1740#define MC_CMD_FINI_TXQ 0x85
1741#undef MC_CMD_0x85_PRIVILEGE_CTG
1742
1743#define MC_CMD_0x85_PRIVILEGE_CTG SRIOV_CTG_GENERAL
1744
1745/* MC_CMD_FINI_TXQ_IN msgrequest */
1746#define MC_CMD_FINI_TXQ_IN_LEN 4
1747/* Instance of TXQ to destroy */
1748#define MC_CMD_FINI_TXQ_IN_INSTANCE_OFST 0
1749
1750/* MC_CMD_FINI_TXQ_OUT msgresponse */
1751#define MC_CMD_FINI_TXQ_OUT_LEN 0
1752
1753
1754/***********************************/
1755/* MC_CMD_FILTER_OP
1756 * Multiplexed MCDI call for filter operations
1757 */
1758#define MC_CMD_FILTER_OP 0x8a
1759#undef MC_CMD_0x8a_PRIVILEGE_CTG
1760
1761#define MC_CMD_0x8a_PRIVILEGE_CTG SRIOV_CTG_GENERAL
1762
1763/* MC_CMD_FILTER_OP_IN msgrequest */
1764#define MC_CMD_FILTER_OP_IN_LEN 108
1765/* identifies the type of operation requested */
1766#define MC_CMD_FILTER_OP_IN_OP_OFST 0
1767/* enum: single-recipient filter insert */
1768#define MC_CMD_FILTER_OP_IN_OP_INSERT 0x0
1769/* enum: single-recipient filter remove */
1770#define MC_CMD_FILTER_OP_IN_OP_REMOVE 0x1
1771/* enum: multi-recipient filter subscribe */
1772#define MC_CMD_FILTER_OP_IN_OP_SUBSCRIBE 0x2
1773/* enum: multi-recipient filter unsubscribe */
1774#define MC_CMD_FILTER_OP_IN_OP_UNSUBSCRIBE 0x3
1775/* enum: replace one recipient with another (warning - the filter handle may
1776 * change)
1777 */
1778#define MC_CMD_FILTER_OP_IN_OP_REPLACE 0x4
1779/* filter handle (for remove / unsubscribe operations) */
1780#define MC_CMD_FILTER_OP_IN_HANDLE_OFST 4
1781#define MC_CMD_FILTER_OP_IN_HANDLE_LEN 8
1782#define MC_CMD_FILTER_OP_IN_HANDLE_LO_OFST 4
1783#define MC_CMD_FILTER_OP_IN_HANDLE_HI_OFST 8
1784/* The port ID associated with the v-adaptor which should contain this filter.
1785 */
1786#define MC_CMD_FILTER_OP_IN_PORT_ID_OFST 12
1787/* fields to include in match criteria */
1788#define MC_CMD_FILTER_OP_IN_MATCH_FIELDS_OFST 16
1789#define MC_CMD_FILTER_OP_IN_MATCH_SRC_IP_LBN 0
1790#define MC_CMD_FILTER_OP_IN_MATCH_SRC_IP_WIDTH 1
1791#define MC_CMD_FILTER_OP_IN_MATCH_DST_IP_LBN 1
1792#define MC_CMD_FILTER_OP_IN_MATCH_DST_IP_WIDTH 1
1793#define MC_CMD_FILTER_OP_IN_MATCH_SRC_MAC_LBN 2
1794#define MC_CMD_FILTER_OP_IN_MATCH_SRC_MAC_WIDTH 1
1795#define MC_CMD_FILTER_OP_IN_MATCH_SRC_PORT_LBN 3
1796#define MC_CMD_FILTER_OP_IN_MATCH_SRC_PORT_WIDTH 1
1797#define MC_CMD_FILTER_OP_IN_MATCH_DST_MAC_LBN 4
1798#define MC_CMD_FILTER_OP_IN_MATCH_DST_MAC_WIDTH 1
1799#define MC_CMD_FILTER_OP_IN_MATCH_DST_PORT_LBN 5
1800#define MC_CMD_FILTER_OP_IN_MATCH_DST_PORT_WIDTH 1
1801#define MC_CMD_FILTER_OP_IN_MATCH_ETHER_TYPE_LBN 6
1802#define MC_CMD_FILTER_OP_IN_MATCH_ETHER_TYPE_WIDTH 1
1803#define MC_CMD_FILTER_OP_IN_MATCH_INNER_VLAN_LBN 7
1804#define MC_CMD_FILTER_OP_IN_MATCH_INNER_VLAN_WIDTH 1
1805#define MC_CMD_FILTER_OP_IN_MATCH_OUTER_VLAN_LBN 8
1806#define MC_CMD_FILTER_OP_IN_MATCH_OUTER_VLAN_WIDTH 1
1807#define MC_CMD_FILTER_OP_IN_MATCH_IP_PROTO_LBN 9
1808#define MC_CMD_FILTER_OP_IN_MATCH_IP_PROTO_WIDTH 1
1809#define MC_CMD_FILTER_OP_IN_MATCH_FWDEF0_LBN 10
1810#define MC_CMD_FILTER_OP_IN_MATCH_FWDEF0_WIDTH 1
1811#define MC_CMD_FILTER_OP_IN_MATCH_FWDEF1_LBN 11
1812#define MC_CMD_FILTER_OP_IN_MATCH_FWDEF1_WIDTH 1
1813#define MC_CMD_FILTER_OP_IN_MATCH_UNKNOWN_MCAST_DST_LBN 30
1814#define MC_CMD_FILTER_OP_IN_MATCH_UNKNOWN_MCAST_DST_WIDTH 1
1815#define MC_CMD_FILTER_OP_IN_MATCH_UNKNOWN_UCAST_DST_LBN 31
1816#define MC_CMD_FILTER_OP_IN_MATCH_UNKNOWN_UCAST_DST_WIDTH 1
1817/* receive destination */
1818#define MC_CMD_FILTER_OP_IN_RX_DEST_OFST 20
1819/* enum: drop packets */
1820#define MC_CMD_FILTER_OP_IN_RX_DEST_DROP 0x0
1821/* enum: receive to host */
1822#define MC_CMD_FILTER_OP_IN_RX_DEST_HOST 0x1
1823/* enum: receive to MC */
1824#define MC_CMD_FILTER_OP_IN_RX_DEST_MC 0x2
1825/* enum: loop back to TXDP 0 */
1826#define MC_CMD_FILTER_OP_IN_RX_DEST_TX0 0x3
1827/* enum: loop back to TXDP 1 */
1828#define MC_CMD_FILTER_OP_IN_RX_DEST_TX1 0x4
1829/* receive queue handle (for multiple queue modes, this is the base queue) */
1830#define MC_CMD_FILTER_OP_IN_RX_QUEUE_OFST 24
1831/* receive mode */
1832#define MC_CMD_FILTER_OP_IN_RX_MODE_OFST 28
1833/* enum: receive to just the specified queue */
1834#define MC_CMD_FILTER_OP_IN_RX_MODE_SIMPLE 0x0
1835/* enum: receive to multiple queues using RSS context */
1836#define MC_CMD_FILTER_OP_IN_RX_MODE_RSS 0x1
1837/* enum: receive to multiple queues using .1p mapping */
1838#define MC_CMD_FILTER_OP_IN_RX_MODE_DOT1P_MAPPING 0x2
1839/* enum: install a filter entry that will never match; for test purposes only
1840 */
1841#define MC_CMD_FILTER_OP_IN_RX_MODE_TEST_NEVER_MATCH 0x80000000
1842/* RSS context (for RX_MODE_RSS) or .1p mapping handle (for
1843 * RX_MODE_DOT1P_MAPPING), as returned by MC_CMD_RSS_CONTEXT_ALLOC or
1844 * MC_CMD_DOT1P_MAPPING_ALLOC.
1845 */
1846#define MC_CMD_FILTER_OP_IN_RX_CONTEXT_OFST 32
1847/* transmit domain (reserved; set to 0) */
1848#define MC_CMD_FILTER_OP_IN_TX_DOMAIN_OFST 36
1849/* transmit destination (either set the MAC and/or PM bits for explicit
1850 * control, or set this field to TX_DEST_DEFAULT for sensible default
1851 * behaviour)
1852 */
1853#define MC_CMD_FILTER_OP_IN_TX_DEST_OFST 40
1854/* enum: request default behaviour (based on filter type) */
1855#define MC_CMD_FILTER_OP_IN_TX_DEST_DEFAULT 0xffffffff
1856#define MC_CMD_FILTER_OP_IN_TX_DEST_MAC_LBN 0
1857#define MC_CMD_FILTER_OP_IN_TX_DEST_MAC_WIDTH 1
1858#define MC_CMD_FILTER_OP_IN_TX_DEST_PM_LBN 1
1859#define MC_CMD_FILTER_OP_IN_TX_DEST_PM_WIDTH 1
1860/* source MAC address to match (as bytes in network order) */
1861#define MC_CMD_FILTER_OP_IN_SRC_MAC_OFST 44
1862#define MC_CMD_FILTER_OP_IN_SRC_MAC_LEN 6
1863/* source port to match (as bytes in network order) */
1864#define MC_CMD_FILTER_OP_IN_SRC_PORT_OFST 50
1865#define MC_CMD_FILTER_OP_IN_SRC_PORT_LEN 2
1866/* destination MAC address to match (as bytes in network order) */
1867#define MC_CMD_FILTER_OP_IN_DST_MAC_OFST 52
1868#define MC_CMD_FILTER_OP_IN_DST_MAC_LEN 6
1869/* destination port to match (as bytes in network order) */
1870#define MC_CMD_FILTER_OP_IN_DST_PORT_OFST 58
1871#define MC_CMD_FILTER_OP_IN_DST_PORT_LEN 2
1872/* Ethernet type to match (as bytes in network order) */
1873#define MC_CMD_FILTER_OP_IN_ETHER_TYPE_OFST 60
1874#define MC_CMD_FILTER_OP_IN_ETHER_TYPE_LEN 2
1875/* Inner VLAN tag to match (as bytes in network order) */
1876#define MC_CMD_FILTER_OP_IN_INNER_VLAN_OFST 62
1877#define MC_CMD_FILTER_OP_IN_INNER_VLAN_LEN 2
1878/* Outer VLAN tag to match (as bytes in network order) */
1879#define MC_CMD_FILTER_OP_IN_OUTER_VLAN_OFST 64
1880#define MC_CMD_FILTER_OP_IN_OUTER_VLAN_LEN 2
1881/* IP protocol to match (in low byte; set high byte to 0) */
1882#define MC_CMD_FILTER_OP_IN_IP_PROTO_OFST 66
1883#define MC_CMD_FILTER_OP_IN_IP_PROTO_LEN 2
1884/* Firmware defined register 0 to match (reserved; set to 0) */
1885#define MC_CMD_FILTER_OP_IN_FWDEF0_OFST 68
1886/* Firmware defined register 1 to match (reserved; set to 0) */
1887#define MC_CMD_FILTER_OP_IN_FWDEF1_OFST 72
1888/* source IP address to match (as bytes in network order; set last 12 bytes to
1889 * 0 for IPv4 address)
1890 */
1891#define MC_CMD_FILTER_OP_IN_SRC_IP_OFST 76
1892#define MC_CMD_FILTER_OP_IN_SRC_IP_LEN 16
1893/* destination IP address to match (as bytes in network order; set last 12
1894 * bytes to 0 for IPv4 address)
1895 */
1896#define MC_CMD_FILTER_OP_IN_DST_IP_OFST 92
1897#define MC_CMD_FILTER_OP_IN_DST_IP_LEN 16
1898
1899/* MC_CMD_FILTER_OP_EXT_IN msgrequest: Extension to MC_CMD_FILTER_OP_IN to
1900 * include handling of VXLAN/NVGRE encapsulated frame filtering (which is
1901 * supported on Medford only).
1902 */
1903#define MC_CMD_FILTER_OP_EXT_IN_LEN 172
1904/* identifies the type of operation requested */
1905#define MC_CMD_FILTER_OP_EXT_IN_OP_OFST 0
1906/* Enum values, see field(s): */
1907/* MC_CMD_FILTER_OP_IN/OP */
1908/* filter handle (for remove / unsubscribe operations) */
1909#define MC_CMD_FILTER_OP_EXT_IN_HANDLE_OFST 4
1910#define MC_CMD_FILTER_OP_EXT_IN_HANDLE_LEN 8
1911#define MC_CMD_FILTER_OP_EXT_IN_HANDLE_LO_OFST 4
1912#define MC_CMD_FILTER_OP_EXT_IN_HANDLE_HI_OFST 8
1913/* The port ID associated with the v-adaptor which should contain this filter.
1914 */
1915#define MC_CMD_FILTER_OP_EXT_IN_PORT_ID_OFST 12
1916/* fields to include in match criteria */
1917#define MC_CMD_FILTER_OP_EXT_IN_MATCH_FIELDS_OFST 16
1918#define MC_CMD_FILTER_OP_EXT_IN_MATCH_SRC_IP_LBN 0
1919#define MC_CMD_FILTER_OP_EXT_IN_MATCH_SRC_IP_WIDTH 1
1920#define MC_CMD_FILTER_OP_EXT_IN_MATCH_DST_IP_LBN 1
1921#define MC_CMD_FILTER_OP_EXT_IN_MATCH_DST_IP_WIDTH 1
1922#define MC_CMD_FILTER_OP_EXT_IN_MATCH_SRC_MAC_LBN 2
1923#define MC_CMD_FILTER_OP_EXT_IN_MATCH_SRC_MAC_WIDTH 1
1924#define MC_CMD_FILTER_OP_EXT_IN_MATCH_SRC_PORT_LBN 3
1925#define MC_CMD_FILTER_OP_EXT_IN_MATCH_SRC_PORT_WIDTH 1
1926#define MC_CMD_FILTER_OP_EXT_IN_MATCH_DST_MAC_LBN 4
1927#define MC_CMD_FILTER_OP_EXT_IN_MATCH_DST_MAC_WIDTH 1
1928#define MC_CMD_FILTER_OP_EXT_IN_MATCH_DST_PORT_LBN 5
1929#define MC_CMD_FILTER_OP_EXT_IN_MATCH_DST_PORT_WIDTH 1
1930#define MC_CMD_FILTER_OP_EXT_IN_MATCH_ETHER_TYPE_LBN 6
1931#define MC_CMD_FILTER_OP_EXT_IN_MATCH_ETHER_TYPE_WIDTH 1
1932#define MC_CMD_FILTER_OP_EXT_IN_MATCH_INNER_VLAN_LBN 7
1933#define MC_CMD_FILTER_OP_EXT_IN_MATCH_INNER_VLAN_WIDTH 1
1934#define MC_CMD_FILTER_OP_EXT_IN_MATCH_OUTER_VLAN_LBN 8
1935#define MC_CMD_FILTER_OP_EXT_IN_MATCH_OUTER_VLAN_WIDTH 1
1936#define MC_CMD_FILTER_OP_EXT_IN_MATCH_IP_PROTO_LBN 9
1937#define MC_CMD_FILTER_OP_EXT_IN_MATCH_IP_PROTO_WIDTH 1
1938#define MC_CMD_FILTER_OP_EXT_IN_MATCH_FWDEF0_LBN 10
1939#define MC_CMD_FILTER_OP_EXT_IN_MATCH_FWDEF0_WIDTH 1
1940#define MC_CMD_FILTER_OP_EXT_IN_MATCH_VNI_OR_VSID_LBN 11
1941#define MC_CMD_FILTER_OP_EXT_IN_MATCH_VNI_OR_VSID_WIDTH 1
1942#define MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_SRC_IP_LBN 12
1943#define MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_SRC_IP_WIDTH 1
1944#define MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_DST_IP_LBN 13
1945#define MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_DST_IP_WIDTH 1
1946#define MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_SRC_MAC_LBN 14
1947#define MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_SRC_MAC_WIDTH 1
1948#define MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_SRC_PORT_LBN 15
1949#define MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_SRC_PORT_WIDTH 1
1950#define MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_DST_MAC_LBN 16
1951#define MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_DST_MAC_WIDTH 1
1952#define MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_DST_PORT_LBN 17
1953#define MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_DST_PORT_WIDTH 1
1954#define MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_ETHER_TYPE_LBN 18
1955#define MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_ETHER_TYPE_WIDTH 1
1956#define MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_INNER_VLAN_LBN 19
1957#define MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_INNER_VLAN_WIDTH 1
1958#define MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_OUTER_VLAN_LBN 20
1959#define MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_OUTER_VLAN_WIDTH 1
1960#define MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_IP_PROTO_LBN 21
1961#define MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_IP_PROTO_WIDTH 1
1962#define MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_FWDEF0_LBN 22
1963#define MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_FWDEF0_WIDTH 1
1964#define MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_FWDEF1_LBN 23
1965#define MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_FWDEF1_WIDTH 1
1966#define MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_UNKNOWN_MCAST_DST_LBN 24
1967#define MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_UNKNOWN_MCAST_DST_WIDTH 1
1968#define MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_UNKNOWN_UCAST_DST_LBN 25
1969#define MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_UNKNOWN_UCAST_DST_WIDTH 1
1970#define MC_CMD_FILTER_OP_EXT_IN_MATCH_UNKNOWN_MCAST_DST_LBN 30
1971#define MC_CMD_FILTER_OP_EXT_IN_MATCH_UNKNOWN_MCAST_DST_WIDTH 1
1972#define MC_CMD_FILTER_OP_EXT_IN_MATCH_UNKNOWN_UCAST_DST_LBN 31
1973#define MC_CMD_FILTER_OP_EXT_IN_MATCH_UNKNOWN_UCAST_DST_WIDTH 1
1974/* receive destination */
1975#define MC_CMD_FILTER_OP_EXT_IN_RX_DEST_OFST 20
1976/* enum: drop packets */
1977#define MC_CMD_FILTER_OP_EXT_IN_RX_DEST_DROP 0x0
1978/* enum: receive to host */
1979#define MC_CMD_FILTER_OP_EXT_IN_RX_DEST_HOST 0x1
1980/* enum: receive to MC */
1981#define MC_CMD_FILTER_OP_EXT_IN_RX_DEST_MC 0x2
1982/* enum: loop back to TXDP 0 */
1983#define MC_CMD_FILTER_OP_EXT_IN_RX_DEST_TX0 0x3
1984/* enum: loop back to TXDP 1 */
1985#define MC_CMD_FILTER_OP_EXT_IN_RX_DEST_TX1 0x4
1986/* receive queue handle (for multiple queue modes, this is the base queue) */
1987#define MC_CMD_FILTER_OP_EXT_IN_RX_QUEUE_OFST 24
1988/* receive mode */
1989#define MC_CMD_FILTER_OP_EXT_IN_RX_MODE_OFST 28
1990/* enum: receive to just the specified queue */
1991#define MC_CMD_FILTER_OP_EXT_IN_RX_MODE_SIMPLE 0x0
1992/* enum: receive to multiple queues using RSS context */
1993#define MC_CMD_FILTER_OP_EXT_IN_RX_MODE_RSS 0x1
1994/* enum: receive to multiple queues using .1p mapping */
1995#define MC_CMD_FILTER_OP_EXT_IN_RX_MODE_DOT1P_MAPPING 0x2
1996/* enum: install a filter entry that will never match; for test purposes only
1997 */
1998#define MC_CMD_FILTER_OP_EXT_IN_RX_MODE_TEST_NEVER_MATCH 0x80000000
1999/* RSS context (for RX_MODE_RSS) or .1p mapping handle (for
2000 * RX_MODE_DOT1P_MAPPING), as returned by MC_CMD_RSS_CONTEXT_ALLOC or
2001 * MC_CMD_DOT1P_MAPPING_ALLOC.
2002 */
2003#define MC_CMD_FILTER_OP_EXT_IN_RX_CONTEXT_OFST 32
2004/* transmit domain (reserved; set to 0) */
2005#define MC_CMD_FILTER_OP_EXT_IN_TX_DOMAIN_OFST 36
2006/* transmit destination (either set the MAC and/or PM bits for explicit
2007 * control, or set this field to TX_DEST_DEFAULT for sensible default
2008 * behaviour)
2009 */
2010#define MC_CMD_FILTER_OP_EXT_IN_TX_DEST_OFST 40
2011/* enum: request default behaviour (based on filter type) */
2012#define MC_CMD_FILTER_OP_EXT_IN_TX_DEST_DEFAULT 0xffffffff
2013#define MC_CMD_FILTER_OP_EXT_IN_TX_DEST_MAC_LBN 0
2014#define MC_CMD_FILTER_OP_EXT_IN_TX_DEST_MAC_WIDTH 1
2015#define MC_CMD_FILTER_OP_EXT_IN_TX_DEST_PM_LBN 1
2016#define MC_CMD_FILTER_OP_EXT_IN_TX_DEST_PM_WIDTH 1
2017/* source MAC address to match (as bytes in network order) */
2018#define MC_CMD_FILTER_OP_EXT_IN_SRC_MAC_OFST 44
2019#define MC_CMD_FILTER_OP_EXT_IN_SRC_MAC_LEN 6
2020/* source port to match (as bytes in network order) */
2021#define MC_CMD_FILTER_OP_EXT_IN_SRC_PORT_OFST 50
2022#define MC_CMD_FILTER_OP_EXT_IN_SRC_PORT_LEN 2
2023/* destination MAC address to match (as bytes in network order) */
2024#define MC_CMD_FILTER_OP_EXT_IN_DST_MAC_OFST 52
2025#define MC_CMD_FILTER_OP_EXT_IN_DST_MAC_LEN 6
2026/* destination port to match (as bytes in network order) */
2027#define MC_CMD_FILTER_OP_EXT_IN_DST_PORT_OFST 58
2028#define MC_CMD_FILTER_OP_EXT_IN_DST_PORT_LEN 2
2029/* Ethernet type to match (as bytes in network order) */
2030#define MC_CMD_FILTER_OP_EXT_IN_ETHER_TYPE_OFST 60
2031#define MC_CMD_FILTER_OP_EXT_IN_ETHER_TYPE_LEN 2
2032/* Inner VLAN tag to match (as bytes in network order) */
2033#define MC_CMD_FILTER_OP_EXT_IN_INNER_VLAN_OFST 62
2034#define MC_CMD_FILTER_OP_EXT_IN_INNER_VLAN_LEN 2
2035/* Outer VLAN tag to match (as bytes in network order) */
2036#define MC_CMD_FILTER_OP_EXT_IN_OUTER_VLAN_OFST 64
2037#define MC_CMD_FILTER_OP_EXT_IN_OUTER_VLAN_LEN 2
2038/* IP protocol to match (in low byte; set high byte to 0) */
2039#define MC_CMD_FILTER_OP_EXT_IN_IP_PROTO_OFST 66
2040#define MC_CMD_FILTER_OP_EXT_IN_IP_PROTO_LEN 2
2041/* Firmware defined register 0 to match (reserved; set to 0) */
2042#define MC_CMD_FILTER_OP_EXT_IN_FWDEF0_OFST 68
2043/* VNI (for VXLAN/Geneve, when IP protocol is UDP) or VSID (for NVGRE, when IP
2044 * protocol is GRE) to match (as bytes in network order; set last byte to 0 for
2045 * VXLAN/NVGRE, or 1 for Geneve)
2046 */
2047#define MC_CMD_FILTER_OP_EXT_IN_VNI_OR_VSID_OFST 72
2048#define MC_CMD_FILTER_OP_EXT_IN_VNI_VALUE_LBN 0
2049#define MC_CMD_FILTER_OP_EXT_IN_VNI_VALUE_WIDTH 24
2050#define MC_CMD_FILTER_OP_EXT_IN_VNI_TYPE_LBN 24
2051#define MC_CMD_FILTER_OP_EXT_IN_VNI_TYPE_WIDTH 8
2052/* enum: Match VXLAN traffic with this VNI */
2053#define MC_CMD_FILTER_OP_EXT_IN_VNI_TYPE_VXLAN 0x0
2054/* enum: Match Geneve traffic with this VNI */
2055#define MC_CMD_FILTER_OP_EXT_IN_VNI_TYPE_GENEVE 0x1
2056/* enum: Reserved for experimental development use */
2057#define MC_CMD_FILTER_OP_EXT_IN_VNI_TYPE_EXPERIMENTAL 0xfe
2058#define MC_CMD_FILTER_OP_EXT_IN_VSID_VALUE_LBN 0
2059#define MC_CMD_FILTER_OP_EXT_IN_VSID_VALUE_WIDTH 24
2060#define MC_CMD_FILTER_OP_EXT_IN_VSID_TYPE_LBN 24
2061#define MC_CMD_FILTER_OP_EXT_IN_VSID_TYPE_WIDTH 8
2062/* enum: Match NVGRE traffic with this VSID */
2063#define MC_CMD_FILTER_OP_EXT_IN_VSID_TYPE_NVGRE 0x0
2064/* source IP address to match (as bytes in network order; set last 12 bytes to
2065 * 0 for IPv4 address)
2066 */
2067#define MC_CMD_FILTER_OP_EXT_IN_SRC_IP_OFST 76
2068#define MC_CMD_FILTER_OP_EXT_IN_SRC_IP_LEN 16
2069/* destination IP address to match (as bytes in network order; set last 12
2070 * bytes to 0 for IPv4 address)
2071 */
2072#define MC_CMD_FILTER_OP_EXT_IN_DST_IP_OFST 92
2073#define MC_CMD_FILTER_OP_EXT_IN_DST_IP_LEN 16
2074/* VXLAN/NVGRE inner frame source MAC address to match (as bytes in network
2075 * order)
2076 */
2077#define MC_CMD_FILTER_OP_EXT_IN_IFRM_SRC_MAC_OFST 108
2078#define MC_CMD_FILTER_OP_EXT_IN_IFRM_SRC_MAC_LEN 6
2079/* VXLAN/NVGRE inner frame source port to match (as bytes in network order) */
2080#define MC_CMD_FILTER_OP_EXT_IN_IFRM_SRC_PORT_OFST 114
2081#define MC_CMD_FILTER_OP_EXT_IN_IFRM_SRC_PORT_LEN 2
2082/* VXLAN/NVGRE inner frame destination MAC address to match (as bytes in
2083 * network order)
2084 */
2085#define MC_CMD_FILTER_OP_EXT_IN_IFRM_DST_MAC_OFST 116
2086#define MC_CMD_FILTER_OP_EXT_IN_IFRM_DST_MAC_LEN 6
2087/* VXLAN/NVGRE inner frame destination port to match (as bytes in network
2088 * order)
2089 */
2090#define MC_CMD_FILTER_OP_EXT_IN_IFRM_DST_PORT_OFST 122
2091#define MC_CMD_FILTER_OP_EXT_IN_IFRM_DST_PORT_LEN 2
2092/* VXLAN/NVGRE inner frame Ethernet type to match (as bytes in network order)
2093 */
2094#define MC_CMD_FILTER_OP_EXT_IN_IFRM_ETHER_TYPE_OFST 124
2095#define MC_CMD_FILTER_OP_EXT_IN_IFRM_ETHER_TYPE_LEN 2
2096/* VXLAN/NVGRE inner frame Inner VLAN tag to match (as bytes in network order)
2097 */
2098#define MC_CMD_FILTER_OP_EXT_IN_IFRM_INNER_VLAN_OFST 126
2099#define MC_CMD_FILTER_OP_EXT_IN_IFRM_INNER_VLAN_LEN 2
2100/* VXLAN/NVGRE inner frame Outer VLAN tag to match (as bytes in network order)
2101 */
2102#define MC_CMD_FILTER_OP_EXT_IN_IFRM_OUTER_VLAN_OFST 128
2103#define MC_CMD_FILTER_OP_EXT_IN_IFRM_OUTER_VLAN_LEN 2
2104/* VXLAN/NVGRE inner frame IP protocol to match (in low byte; set high byte to
2105 * 0)
2106 */
2107#define MC_CMD_FILTER_OP_EXT_IN_IFRM_IP_PROTO_OFST 130
2108#define MC_CMD_FILTER_OP_EXT_IN_IFRM_IP_PROTO_LEN 2
2109/* VXLAN/NVGRE inner frame Firmware defined register 0 to match (reserved; set
2110 * to 0)
2111 */
2112#define MC_CMD_FILTER_OP_EXT_IN_IFRM_FWDEF0_OFST 132
2113/* VXLAN/NVGRE inner frame Firmware defined register 1 to match (reserved; set
2114 * to 0)
2115 */
2116#define MC_CMD_FILTER_OP_EXT_IN_IFRM_FWDEF1_OFST 136
2117/* VXLAN/NVGRE inner frame source IP address to match (as bytes in network
2118 * order; set last 12 bytes to 0 for IPv4 address)
2119 */
2120#define MC_CMD_FILTER_OP_EXT_IN_IFRM_SRC_IP_OFST 140
2121#define MC_CMD_FILTER_OP_EXT_IN_IFRM_SRC_IP_LEN 16
2122/* VXLAN/NVGRE inner frame destination IP address to match (as bytes in network
2123 * order; set last 12 bytes to 0 for IPv4 address)
2124 */
2125#define MC_CMD_FILTER_OP_EXT_IN_IFRM_DST_IP_OFST 156
2126#define MC_CMD_FILTER_OP_EXT_IN_IFRM_DST_IP_LEN 16
2127
2128/* MC_CMD_FILTER_OP_OUT msgresponse */
2129#define MC_CMD_FILTER_OP_OUT_LEN 12
2130/* identifies the type of operation requested */
2131#define MC_CMD_FILTER_OP_OUT_OP_OFST 0
2132/* Enum values, see field(s): */
2133/* MC_CMD_FILTER_OP_IN/OP */
2134/* Returned filter handle (for insert / subscribe operations). Note that these
2135 * handles should be considered opaque to the host, although a value of
2136 * 0xFFFFFFFF_FFFFFFFF is guaranteed never to be a valid handle.
2137 */
2138#define MC_CMD_FILTER_OP_OUT_HANDLE_OFST 4
2139#define MC_CMD_FILTER_OP_OUT_HANDLE_LEN 8
2140#define MC_CMD_FILTER_OP_OUT_HANDLE_LO_OFST 4
2141#define MC_CMD_FILTER_OP_OUT_HANDLE_HI_OFST 8
2142/* enum: guaranteed invalid filter handle (low 32 bits) */
2143#define MC_CMD_FILTER_OP_OUT_HANDLE_LO_INVALID 0xffffffff
2144/* enum: guaranteed invalid filter handle (high 32 bits) */
2145#define MC_CMD_FILTER_OP_OUT_HANDLE_HI_INVALID 0xffffffff
2146
2147/* MC_CMD_FILTER_OP_EXT_OUT msgresponse */
2148#define MC_CMD_FILTER_OP_EXT_OUT_LEN 12
2149/* identifies the type of operation requested */
2150#define MC_CMD_FILTER_OP_EXT_OUT_OP_OFST 0
2151/* Enum values, see field(s): */
2152/* MC_CMD_FILTER_OP_EXT_IN/OP */
2153/* Returned filter handle (for insert / subscribe operations). Note that these
2154 * handles should be considered opaque to the host, although a value of
2155 * 0xFFFFFFFF_FFFFFFFF is guaranteed never to be a valid handle.
2156 */
2157#define MC_CMD_FILTER_OP_EXT_OUT_HANDLE_OFST 4
2158#define MC_CMD_FILTER_OP_EXT_OUT_HANDLE_LEN 8
2159#define MC_CMD_FILTER_OP_EXT_OUT_HANDLE_LO_OFST 4
2160#define MC_CMD_FILTER_OP_EXT_OUT_HANDLE_HI_OFST 8
2161/* Enum values, see field(s): */
2162/* MC_CMD_FILTER_OP_OUT/HANDLE */
2163
2164
2165/***********************************/
2166/* MC_CMD_ALLOC_VIS
2167 * Allocate VIs for current PCI function.
2168 */
2169#define MC_CMD_ALLOC_VIS 0x8b
2170#undef MC_CMD_0x8b_PRIVILEGE_CTG
2171
2172#define MC_CMD_0x8b_PRIVILEGE_CTG SRIOV_CTG_GENERAL
2173
2174/* MC_CMD_ALLOC_VIS_IN msgrequest */
2175#define MC_CMD_ALLOC_VIS_IN_LEN 8
2176/* The minimum number of VIs that is acceptable */
2177#define MC_CMD_ALLOC_VIS_IN_MIN_VI_COUNT_OFST 0
2178/* The maximum number of VIs that would be useful */
2179#define MC_CMD_ALLOC_VIS_IN_MAX_VI_COUNT_OFST 4
2180
2181/* MC_CMD_ALLOC_VIS_OUT msgresponse: Huntington-compatible VI_ALLOC request.
2182 * Use extended version in new code.
2183 */
2184#define MC_CMD_ALLOC_VIS_OUT_LEN 8
2185/* The number of VIs allocated on this function */
2186#define MC_CMD_ALLOC_VIS_OUT_VI_COUNT_OFST 0
2187/* The base absolute VI number allocated to this function. Required to
2188 * correctly interpret wakeup events.
2189 */
2190#define MC_CMD_ALLOC_VIS_OUT_VI_BASE_OFST 4
2191
2192/* MC_CMD_ALLOC_VIS_EXT_OUT msgresponse */
2193#define MC_CMD_ALLOC_VIS_EXT_OUT_LEN 12
2194/* The number of VIs allocated on this function */
2195#define MC_CMD_ALLOC_VIS_EXT_OUT_VI_COUNT_OFST 0
2196/* The base absolute VI number allocated to this function. Required to
2197 * correctly interpret wakeup events.
2198 */
2199#define MC_CMD_ALLOC_VIS_EXT_OUT_VI_BASE_OFST 4
2200/* Function's port vi_shift value (always 0 on Huntington) */
2201#define MC_CMD_ALLOC_VIS_EXT_OUT_VI_SHIFT_OFST 8
2202
2203
2204/***********************************/
2205/* MC_CMD_FREE_VIS
2206 * Free VIs for current PCI function. Any linked PIO buffers will be unlinked,
2207 * but not freed.
2208 */
2209#define MC_CMD_FREE_VIS 0x8c
2210#undef MC_CMD_0x8c_PRIVILEGE_CTG
2211
2212#define MC_CMD_0x8c_PRIVILEGE_CTG SRIOV_CTG_GENERAL
2213
2214/* MC_CMD_FREE_VIS_IN msgrequest */
2215#define MC_CMD_FREE_VIS_IN_LEN 0
2216
2217/* MC_CMD_FREE_VIS_OUT msgresponse */
2218#define MC_CMD_FREE_VIS_OUT_LEN 0
2219
2220
2221/***********************************/
2222/* MC_CMD_GET_PORT_ASSIGNMENT
2223 * Get port assignment for current PCI function.
2224 */
2225#define MC_CMD_GET_PORT_ASSIGNMENT 0xb8
2226#undef MC_CMD_0xb8_PRIVILEGE_CTG
2227
2228#define MC_CMD_0xb8_PRIVILEGE_CTG SRIOV_CTG_GENERAL
2229
2230/* MC_CMD_GET_PORT_ASSIGNMENT_IN msgrequest */
2231#define MC_CMD_GET_PORT_ASSIGNMENT_IN_LEN 0
2232
2233/* MC_CMD_GET_PORT_ASSIGNMENT_OUT msgresponse */
2234#define MC_CMD_GET_PORT_ASSIGNMENT_OUT_LEN 4
2235/* Identifies the port assignment for this function. */
2236#define MC_CMD_GET_PORT_ASSIGNMENT_OUT_PORT_OFST 0
2237
2238
2239/***********************************/
2240/* MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS
2241 * Configure UDP ports for tunnel encapsulation hardware acceleration. The
2242 * parser-dispatcher will attempt to parse traffic on these ports as tunnel
2243 * encapsulation PDUs and filter them using the tunnel encapsulation filter
2244 * chain rather than the standard filter chain. Note that this command can
2245 * cause all functions to see a reset. (Available on Medford only.)
2246 */
2247#define MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS 0x117
2248#undef MC_CMD_0x117_PRIVILEGE_CTG
2249
2250#define MC_CMD_0x117_PRIVILEGE_CTG SRIOV_CTG_ADMIN
2251
2252/* MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS_IN msgrequest */
2253#define MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS_IN_LENMIN 4
2254#define MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS_IN_LENMAX 68
2255#define MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS_IN_LEN(num) (4+4*(num))
2256/* Flags */
2257#define MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS_IN_FLAGS_OFST 0
2258#define MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS_IN_FLAGS_LEN 2
2259#define MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS_IN_UNLOADING_LBN 0
2260#define MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS_IN_UNLOADING_WIDTH 1
2261/* The number of entries in the ENTRIES array */
2262#define MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS_IN_NUM_ENTRIES_OFST 2
2263#define MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS_IN_NUM_ENTRIES_LEN 2
2264/* Entries defining the UDP port to protocol mapping, each laid out as a
2265 * TUNNEL_ENCAP_UDP_PORT_ENTRY
2266 */
2267#define MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS_IN_ENTRIES_OFST 4
2268#define MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS_IN_ENTRIES_LEN 4
2269#define MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS_IN_ENTRIES_MINNUM 0
2270#define MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS_IN_ENTRIES_MAXNUM 16
2271
2272/* MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS_OUT msgresponse */
2273#define MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS_OUT_LEN 2
2274/* Flags */
2275#define MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS_OUT_FLAGS_OFST 0
2276#define MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS_OUT_FLAGS_LEN 2
2277#define MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS_OUT_RESETTING_LBN 0
2278#define MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS_OUT_RESETTING_WIDTH 1
2279
2280
2281#endif /* SFC_MCDI_PCOL_H */
#define FILE_LICENCE(_licence)
Declare a particular licence as applying to a file.
Definition compiler.h:896