xref: /dpdk/drivers/common/sfc_efx/base/efx_regs_mcdi.h (revision ecaccb2fd633f8f8475d6999100e2669fc383cb7)
1 /* SPDX-License-Identifier: BSD-3-Clause
2  *
3  * Copyright(c) 2019-2021 Xilinx, Inc.
4  * Copyright(c) 2008-2019 Solarflare Communications Inc.
5  */
6 
7 /*
8  * This file is automatically generated, but contains manual changes.
9  * - replaced the autogenerated license header with BSD-3-Clause;
10  * - used tabs for the indentation of MC_CMD_ERR_*.
11  *
12  * To make changes, edit the .yml files in smartnic_registry under doc/mcdi/ and
13  * rebuild this file with "make mcdi_headers_v5".
14  */
15 
16 #ifndef _SIENA_MC_DRIVER_PCOL_H
17 #define	_SIENA_MC_DRIVER_PCOL_H
18 
19 
20 /* Values to be written into FMCR_CZ_RESET_STATE_REG to control boot. */
21 /* Power-on reset state */
22 #define MC_FW_STATE_POR (1)
23 /* If this is set in MC_RESET_STATE_REG then it should be
24  * possible to jump into IMEM without loading code from flash. */
25 #define MC_FW_WARM_BOOT_OK (2)
26 /* The MC main image has started to boot. */
27 #define MC_FW_STATE_BOOTING (4)
28 /* The Scheduler has started. */
29 #define MC_FW_STATE_SCHED (8)
30 /* If this is set in MC_RESET_STATE_REG then it should be
31  * possible to jump into IMEM without loading code from flash.
32  * Unlike a warm boot, assume DMEM has been reloaded, so that
33  * the MC persistent data must be reinitialised. */
34 #define MC_FW_TEPID_BOOT_OK (16)
35 /* We have entered the main firmware via recovery mode.  This
36  * means that MC persistent data must be reinitialised, but that
37  * we shouldn't touch PCIe config. */
38 #define MC_FW_RECOVERY_MODE_PCIE_INIT_OK (32)
39 /* BIST state has been initialized */
40 #define MC_FW_BIST_INIT_OK (128)
41 
42 /* Siena MC shared memmory offsets */
43 /* The 'doorbell' addresses are hard-wired to alert the MC when written */
44 #define	MC_SMEM_P0_DOORBELL_OFST	0x000
45 #define	MC_SMEM_P1_DOORBELL_OFST	0x004
46 /* The rest of these are firmware-defined */
47 #define	MC_SMEM_P0_PDU_OFST		0x008
48 #define	MC_SMEM_P1_PDU_OFST		0x108
49 #define	MC_SMEM_PDU_LEN			0x100
50 #define	MC_SMEM_P0_PTP_TIME_OFST	0x7f0
51 #define	MC_SMEM_P0_STATUS_OFST		0x7f8
52 #define	MC_SMEM_P1_STATUS_OFST		0x7fc
53 
54 /* Values to be written to the per-port status dword in shared
55  * memory on reboot and assert */
56 #define MC_STATUS_DWORD_REBOOT (0xb007b007)
57 #define MC_STATUS_DWORD_ASSERT (0xdeaddead)
58 
59 /* Check whether an mcfw version (in host order) belongs to a bootloader */
60 #define MC_FW_VERSION_IS_BOOTLOADER(_v) (((_v) >> 16) == 0xb007)
61 
62 /* The current version of the MCDI protocol.
63  *
64  * Note that the ROM burnt into the card only talks V0, so at the very
65  * least every driver must support version 0 and MCDI_PCOL_VERSION
66  */
67 #ifdef WITH_MCDI_V2
68 #define MCDI_PCOL_VERSION 2
69 #else
70 #define MCDI_PCOL_VERSION 1
71 #endif
72 
73 /* Unused commands: 0x23, 0x27, 0x30, 0x31 */
74 
75 /* MCDI version 1
76  *
77  * Each MCDI request starts with an MCDI_HEADER, which is a 32bit
78  * structure, filled in by the client.
79  *
80  *       0       7  8     16    20     22  23  24    31
81  *      | CODE | R | LEN | SEQ | Rsvd | E | R | XFLAGS |
82  *               |                      |   |
83  *               |                      |   \--- Response
84  *               |                      \------- Error
85  *               \------------------------------ Resync (always set)
86  *
87  * The client writes its request into MC shared memory, and rings the
88  * doorbell. Each request is completed either by the MC writing
89  * back into shared memory, or by writing out an event.
90  *
91  * All MCDI commands support completion by shared memory response. Each
92  * request may also contain additional data (accounted for by HEADER.LEN),
93  * and some responses may also contain additional data (again, accounted
94  * for by HEADER.LEN).
95  *
96  * Some MCDI commands support completion by event, in which any associated
97  * response data is included in the event.
98  *
99  * The protocol requires one response to be delivered for every request; a
100  * request should not be sent unless the response for the previous request
101  * has been received (either by polling shared memory, or by receiving
102  * an event).
103  */
104 
105 /** Request/Response structure */
106 #define MCDI_HEADER_OFST 0
107 #define MCDI_HEADER_CODE_LBN 0
108 #define MCDI_HEADER_CODE_WIDTH 7
109 #define MCDI_HEADER_RESYNC_LBN 7
110 #define MCDI_HEADER_RESYNC_WIDTH 1
111 #define MCDI_HEADER_DATALEN_LBN 8
112 #define MCDI_HEADER_DATALEN_WIDTH 8
113 #define MCDI_HEADER_SEQ_LBN 16
114 #define MCDI_HEADER_SEQ_WIDTH 4
115 #define MCDI_HEADER_RSVD_LBN 20
116 #define MCDI_HEADER_RSVD_WIDTH 1
117 #define MCDI_HEADER_NOT_EPOCH_LBN 21
118 #define MCDI_HEADER_NOT_EPOCH_WIDTH 1
119 #define MCDI_HEADER_ERROR_LBN 22
120 #define MCDI_HEADER_ERROR_WIDTH 1
121 #define MCDI_HEADER_RESPONSE_LBN 23
122 #define MCDI_HEADER_RESPONSE_WIDTH 1
123 #define MCDI_HEADER_XFLAGS_LBN 24
124 #define MCDI_HEADER_XFLAGS_WIDTH 8
125 /* Request response using event */
126 #define MCDI_HEADER_XFLAGS_EVREQ 0x01
127 /* Request (and signal) early doorbell return */
128 #define MCDI_HEADER_XFLAGS_DBRET 0x02
129 
130 /* Maximum number of payload bytes */
131 #define MCDI_CTL_SDU_LEN_MAX_V1 0xfc
132 #define MCDI_CTL_SDU_LEN_MAX_V2 0x400
133 
134 #ifdef WITH_MCDI_V2
135 #define MCDI_CTL_SDU_LEN_MAX MCDI_CTL_SDU_LEN_MAX_V2
136 #else
137 #define MCDI_CTL_SDU_LEN_MAX MCDI_CTL_SDU_LEN_MAX_V1
138 #endif
139 
140 
141 /* The MC can generate events for two reasons:
142  *   - To advance a shared memory request if XFLAGS_EVREQ was set
143  *   - As a notification (link state, i2c event), controlled
144  *     via MC_CMD_LOG_CTRL
145  *
146  * Both events share a common structure:
147  *
148  *  0      32     33      36    44     52     60
149  * | Data | Cont | Level | Src | Code | Rsvd |
150  *           |
151  *           \ There is another event pending in this notification
152  *
153  * If Code==CMDDONE, then the fields are further interpreted as:
154  *
155  *   - LEVEL==INFO    Command succeeded
156  *   - LEVEL==ERR     Command failed
157  *
158  *    0     8         16      24     32
159  *   | Seq | Datalen | Errno | Rsvd |
160  *
161  *   These fields are taken directly out of the standard MCDI header, i.e.,
162  *   LEVEL==ERR, Datalen == 0 => Reboot
163  *
164  * Events can be squirted out of the UART (using LOG_CTRL) without a
165  * MCDI header.  An event can be distinguished from a MCDI response by
166  * examining the first byte which is 0xc0.  This corresponds to the
167  * non-existent MCDI command MC_CMD_DEBUG_LOG.
168  *
169  *      0         7        8
170  *     | command | Resync |     = 0xc0
171  *
172  * Since the event is written in big-endian byte order, this works
173  * providing bits 56-63 of the event are 0xc0.
174  *
175  *      56     60  63
176  *     | Rsvd | Code |    = 0xc0
177  *
178  * Which means for convenience the event code is 0xc for all MC
179  * generated events.
180  */
181 #define FSE_AZ_EV_CODE_MCDI_EVRESPONSE 0xc
182 
183 
184 
185 #define MC_CMD_ERR_CODE_OFST 0
186 #define MC_CMD_ERR_PROXY_PENDING_HANDLE_OFST 4
187 
188 /* We define 8 "escape" commands to allow
189    for command number space extension */
190 
191 #define MC_CMD_CMD_SPACE_ESCAPE_0	      0x78
192 #define MC_CMD_CMD_SPACE_ESCAPE_1	      0x79
193 #define MC_CMD_CMD_SPACE_ESCAPE_2	      0x7A
194 #define MC_CMD_CMD_SPACE_ESCAPE_3	      0x7B
195 #define MC_CMD_CMD_SPACE_ESCAPE_4	      0x7C
196 #define MC_CMD_CMD_SPACE_ESCAPE_5	      0x7D
197 #define MC_CMD_CMD_SPACE_ESCAPE_6	      0x7E
198 #define MC_CMD_CMD_SPACE_ESCAPE_7	      0x7F
199 
200 /* Vectors in the boot ROM */
201 /* Point to the copycode entry point. */
202 #define SIENA_MC_BOOTROM_COPYCODE_VEC (0x800 - 3 * 0x4)
203 #define HUNT_MC_BOOTROM_COPYCODE_VEC (0x8000 - 3 * 0x4)
204 #define MEDFORD_MC_BOOTROM_COPYCODE_VEC (0x10000 - 3 * 0x4)
205 /* Points to the recovery mode entry point. Misnamed but kept for compatibility. */
206 #define SIENA_MC_BOOTROM_NOFLASH_VEC (0x800 - 2 * 0x4)
207 #define HUNT_MC_BOOTROM_NOFLASH_VEC (0x8000 - 2 * 0x4)
208 #define MEDFORD_MC_BOOTROM_NOFLASH_VEC (0x10000 - 2 * 0x4)
209 /* Points to the recovery mode entry point. Same as above, but the right name. */
210 #define SIENA_MC_BOOTROM_RECOVERY_VEC (0x800 - 2 * 0x4)
211 #define HUNT_MC_BOOTROM_RECOVERY_VEC (0x8000 - 2 * 0x4)
212 #define MEDFORD_MC_BOOTROM_RECOVERY_VEC (0x10000 - 2 * 0x4)
213 
214 /* Points to noflash mode entry point. */
215 #define MEDFORD_MC_BOOTROM_REAL_NOFLASH_VEC (0x10000 - 4 * 0x4)
216 
217 /* The command set exported by the boot ROM (MCDI v0) */
218 #define MC_CMD_GET_VERSION_V0_SUPPORTED_FUNCS {		\
219 	(1 << MC_CMD_READ32)	|			\
220 	(1 << MC_CMD_WRITE32)	|			\
221 	(1 << MC_CMD_COPYCODE)	|			\
222 	(1 << MC_CMD_GET_VERSION),			\
223 	0, 0, 0 }
224 
225 #define MC_CMD_SENSOR_INFO_OUT_OFFSET_OFST(_x)		\
226 	(MC_CMD_SENSOR_ENTRY_OFST + (_x))
227 
228 #define MC_CMD_DBI_WRITE_IN_ADDRESS_OFST(n)		\
229 	(MC_CMD_DBI_WRITE_IN_DBIWROP_OFST +		\
230 	 MC_CMD_DBIWROP_TYPEDEF_ADDRESS_OFST +		\
231 	 (n) * MC_CMD_DBIWROP_TYPEDEF_LEN)
232 
233 #define MC_CMD_DBI_WRITE_IN_BYTE_MASK_OFST(n)		\
234 	(MC_CMD_DBI_WRITE_IN_DBIWROP_OFST +		\
235 	 MC_CMD_DBIWROP_TYPEDEF_BYTE_MASK_OFST +	\
236 	 (n) * MC_CMD_DBIWROP_TYPEDEF_LEN)
237 
238 #define MC_CMD_DBI_WRITE_IN_VALUE_OFST(n)		\
239 	(MC_CMD_DBI_WRITE_IN_DBIWROP_OFST +		\
240 	 MC_CMD_DBIWROP_TYPEDEF_VALUE_OFST +		\
241 	 (n) * MC_CMD_DBIWROP_TYPEDEF_LEN)
242 
243 /* This may be ORed with an EVB_PORT_ID_xxx constant to pass a non-default
244  * stack ID (which must be in the range 1-255) along with an EVB port ID.
245  */
246 #define EVB_STACK_ID(n)  (((n) & 0xff) << 16)
247 
248 
249 #ifdef WITH_MCDI_V2
250 
251 /* Version 2 adds an optional argument to error returns: the errno value
252  * may be followed by the (0-based) number of the first argument that
253  * could not be processed.
254  */
255 #define MC_CMD_ERR_ARG_OFST 4
256 
257 #endif
258 
259 /* MC_CMD_ERR enum: Public MCDI error codes. Error codes that correspond to
260  * POSIX errnos should use the same numeric values that linux does. Error codes
261  * specific to Solarflare firmware should use values in the range 0x1000 -
262  * 0x10ff. The range 0x2000 - 0x20ff is reserved for private error codes (see
263  * MC_CMD_ERR_PRIV below).
264  */
265 /* enum: Operation not permitted. */
266 #define	MC_CMD_ERR_EPERM 0x1
267 /* enum: Non-existent command target */
268 #define	MC_CMD_ERR_ENOENT 0x2
269 /* enum: assert() has killed the MC */
270 #define	MC_CMD_ERR_EINTR 0x4
271 /* enum: I/O failure */
272 #define	MC_CMD_ERR_EIO 0x5
273 /* enum: Already exists */
274 #define	MC_CMD_ERR_EEXIST 0x6
275 /* enum: Try again */
276 #define	MC_CMD_ERR_EAGAIN 0xb
277 /* enum: Out of memory */
278 #define	MC_CMD_ERR_ENOMEM 0xc
279 /* enum: Caller does not hold required locks */
280 #define	MC_CMD_ERR_EACCES 0xd
281 /* enum: Resource is currently unavailable (e.g. lock contention) */
282 #define	MC_CMD_ERR_EBUSY 0x10
283 /* enum: No such device */
284 #define	MC_CMD_ERR_ENODEV 0x13
285 /* enum: Invalid argument to target */
286 #define	MC_CMD_ERR_EINVAL 0x16
287 /* enum: No space */
288 #define	MC_CMD_ERR_ENOSPC 0x1c
289 /* enum: Read-only */
290 #define	MC_CMD_ERR_EROFS 0x1e
291 /* enum: Broken pipe */
292 #define	MC_CMD_ERR_EPIPE 0x20
293 /* enum: Out of range */
294 #define	MC_CMD_ERR_ERANGE 0x22
295 /* enum: Non-recursive resource is already acquired */
296 #define	MC_CMD_ERR_EDEADLK 0x23
297 /* enum: Operation not implemented */
298 #define	MC_CMD_ERR_ENOSYS 0x26
299 /* enum: Operation timed out */
300 #define	MC_CMD_ERR_ETIME 0x3e
301 /* enum: Link has been severed */
302 #define	MC_CMD_ERR_ENOLINK 0x43
303 /* enum: Protocol error */
304 #define	MC_CMD_ERR_EPROTO 0x47
305 /* enum: Bad message */
306 #define	MC_CMD_ERR_EBADMSG 0x4a
307 /* enum: Operation not supported */
308 #define	MC_CMD_ERR_ENOTSUP 0x5f
309 /* enum: Address not available */
310 #define	MC_CMD_ERR_EADDRNOTAVAIL 0x63
311 /* enum: Not connected */
312 #define	MC_CMD_ERR_ENOTCONN 0x6b
313 /* enum: Operation already in progress */
314 #define	MC_CMD_ERR_EALREADY 0x72
315 /* enum: Stale handle. The handle references a resource that no longer exists.
316  */
317 #define	MC_CMD_ERR_ESTALE 0x74
318 /* enum: Resource allocation failed. */
319 #define	MC_CMD_ERR_ALLOC_FAIL 0x1000
320 /* enum: V-adaptor not found. */
321 #define	MC_CMD_ERR_NO_VADAPTOR 0x1001
322 /* enum: EVB port not found. */
323 #define	MC_CMD_ERR_NO_EVB_PORT 0x1002
324 /* enum: V-switch not found. */
325 #define	MC_CMD_ERR_NO_VSWITCH 0x1003
326 /* enum: Too many VLAN tags. */
327 #define	MC_CMD_ERR_VLAN_LIMIT 0x1004
328 /* enum: Bad PCI function number. */
329 #define	MC_CMD_ERR_BAD_PCI_FUNC 0x1005
330 /* enum: Invalid VLAN mode. */
331 #define	MC_CMD_ERR_BAD_VLAN_MODE 0x1006
332 /* enum: Invalid v-switch type. */
333 #define	MC_CMD_ERR_BAD_VSWITCH_TYPE 0x1007
334 /* enum: Invalid v-port type. */
335 #define	MC_CMD_ERR_BAD_VPORT_TYPE 0x1008
336 /* enum: MAC address exists. */
337 #define	MC_CMD_ERR_MAC_EXIST 0x1009
338 /* enum: Slave core not present */
339 #define	MC_CMD_ERR_SLAVE_NOT_PRESENT 0x100a
340 /* enum: The datapath is disabled. */
341 #define	MC_CMD_ERR_DATAPATH_DISABLED 0x100b
342 /* enum: The requesting client is not a function */
343 #define	MC_CMD_ERR_CLIENT_NOT_FN 0x100c
344 /* enum: The requested operation might require the command to be passed between
345  * MCs, and the transport doesn't support that. Should only ever been seen over
346  * the UART.
347  */
348 #define	MC_CMD_ERR_TRANSPORT_NOPROXY 0x100d
349 /* enum: VLAN tag(s) exists */
350 #define	MC_CMD_ERR_VLAN_EXIST 0x100e
351 /* enum: No MAC address assigned to an EVB port */
352 #define	MC_CMD_ERR_NO_MAC_ADDR 0x100f
353 /* enum: Notifies the driver that the request has been relayed to an admin
354  * function for authorization. The driver should wait for a PROXY_RESPONSE
355  * event and then resend its request. This error code is followed by a 32-bit
356  * handle that helps matching it with the respective PROXY_RESPONSE event.
357  */
358 #define	MC_CMD_ERR_PROXY_PENDING 0x1010
359 /* enum: The request cannot be passed for authorization because another request
360  * from the same function is currently being authorized. The drvier should try
361  * again later.
362  */
363 #define	MC_CMD_ERR_PROXY_INPROGRESS 0x1011
364 /* enum: Returned by MC_CMD_PROXY_COMPLETE if the caller is not the function
365  * that has enabled proxying or BLOCK_INDEX points to a function that doesn't
366  * await an authorization.
367  */
368 #define	MC_CMD_ERR_PROXY_UNEXPECTED 0x1012
369 /* enum: This code is currently only used internally in FW. Its meaning is that
370  * an operation failed due to lack of SR-IOV privilege. Normally it is
371  * translated to EPERM by send_cmd_err(), but it may also be used to trigger
372  * some special mechanism for handling such case, e.g. to relay the failed
373  * request to a designated admin function for authorization.
374  */
375 #define	MC_CMD_ERR_NO_PRIVILEGE 0x1013
376 /* enum: Workaround 26807 could not be turned on/off because some functions
377  * have already installed filters. See the comment at
378  * MC_CMD_WORKAROUND_BUG26807. May also returned for other operations such as
379  * sub-variant switching.
380  */
381 #define	MC_CMD_ERR_FILTERS_PRESENT 0x1014
382 /* enum: The clock whose frequency you've attempted to set doesn't exist on
383  * this NIC
384  */
385 #define	MC_CMD_ERR_NO_CLOCK 0x1015
386 /* enum: Returned by MC_CMD_TESTASSERT if the action that should have caused an
387  * assertion failed to do so.
388  */
389 #define	MC_CMD_ERR_UNREACHABLE 0x1016
390 /* enum: This command needs to be processed in the background but there were no
391  * resources to do so. Send it again after a command has completed.
392  */
393 #define	MC_CMD_ERR_QUEUE_FULL 0x1017
394 /* enum: The operation could not be completed because the PCIe link has gone
395  * away. This error code is never expected to be returned over the TLP
396  * transport.
397  */
398 #define	MC_CMD_ERR_NO_PCIE 0x1018
399 /* enum: The operation could not be completed because the datapath has gone
400  * away. This is distinct from MC_CMD_ERR_DATAPATH_DISABLED in that the
401  * datapath absence may be temporary
402  */
403 #define	MC_CMD_ERR_NO_DATAPATH 0x1019
404 /* enum: The operation could not complete because some VIs are allocated */
405 #define	MC_CMD_ERR_VIS_PRESENT 0x101a
406 /* enum: The operation could not complete because some PIO buffers are
407  * allocated
408  */
409 #define	MC_CMD_ERR_PIOBUFS_PRESENT 0x101b
410 
411 /* MC_CMD_RESOURCE_SPECIFIER enum */
412 /* enum: Any */
413 #define	MC_CMD_RESOURCE_INSTANCE_ANY 0xffffffff
414 #define	MC_CMD_RESOURCE_INSTANCE_NONE 0xfffffffe /* enum */
415 
416 /* MC_CMD_FPGA_FLASH_INDEX enum */
417 #define	MC_CMD_FPGA_FLASH_PRIMARY 0x0 /* enum */
418 #define	MC_CMD_FPGA_FLASH_SECONDARY 0x1 /* enum */
419 
420 /* MC_CMD_EXTERNAL_MAE_LINK_MODE enum */
421 /* enum: Legacy mode as described in XN-200039-TC. */
422 #define	MC_CMD_EXTERNAL_MAE_LINK_MODE_LEGACY 0x0
423 /* enum: Switchdev mode as described in XN-200039-TC. */
424 #define	MC_CMD_EXTERNAL_MAE_LINK_MODE_SWITCHDEV 0x1
425 /* enum: Bootstrap mode as described in XN-200039-TC. */
426 #define	MC_CMD_EXTERNAL_MAE_LINK_MODE_BOOTSTRAP 0x2
427 /* enum: Link-mode change is in-progress as described in XN-200039-TC. */
428 #define	MC_CMD_EXTERNAL_MAE_LINK_MODE_PENDING 0xf
429 
430 /* PCIE_INTERFACE enum: From EF100 onwards, SFC products can have multiple PCIe
431  * interfaces. There is a need to refer to interfaces explicitly from drivers
432  * (for example, a management driver on one interface administering a function
433  * on another interface). This enumeration provides stable identifiers to all
434  * interfaces present on a product. Product documentation will specify which
435  * interfaces exist and their associated identifier. In general, drivers,
436  * should not assign special meanings to specific values. Instead, behaviour
437  * should be determined by NIC configuration, which will identify interfaces
438  * where appropriate.
439  */
440 /* enum: Primary host interfaces. Typically (i.e. for all known SFC products)
441  * the interface exposed on the edge connector (or form factor equivalent).
442  */
443 #define	PCIE_INTERFACE_HOST_PRIMARY 0x0
444 /* enum: Riverhead and keystone products have a second PCIe interface to which
445  * an on-NIC ARM module is expected to be connected.
446  */
447 #define	PCIE_INTERFACE_NIC_EMBEDDED 0x1
448 /* enum: For MCDI commands issued over a PCIe interface, this value is
449  * translated into the interface over which the command was issued. Not
450  * meaningful for other MCDI transports.
451  */
452 #define	PCIE_INTERFACE_CALLER 0xffffffff
453 
454 /* MC_CLIENT_ID_SPECIFIER enum */
455 /* enum: Equivalent to the caller's client ID */
456 #define	MC_CMD_CLIENT_ID_SELF 0xffffffff
457 
458 /* MAE_FIELD_SUPPORT_STATUS enum */
459 /* enum: The NIC does not support this field. The driver must ensure that any
460  * mask associated with this field in a match rule is zeroed. The NIC may
461  * either reject requests with an invalid mask for such a field, or may assume
462  * that the mask is zero. (This category only exists to describe behaviour for
463  * fields that a newer driver might know about but that older firmware does
464  * not. It is recommended that firmware report MAE_FIELD_FIELD_MATCH_NEVER for
465  * all match fields defined at the time of its compilation. If a driver see a
466  * field support status value that it does not recognise, it must treat that
467  * field as thought the field was reported as MAE_FIELD_SUPPORTED_MATCH_NEVER,
468  * and must never set a non-zero mask value for this field.
469  */
470 #define	MAE_FIELD_UNSUPPORTED 0x0
471 /* enum: The NIC supports this field, but cannot use it in a match rule. The
472  * driver must ensure that any mask for such a field in a match rule is zeroed.
473  * The NIC will reject requests with an invalid mask for such a field.
474  */
475 #define	MAE_FIELD_SUPPORTED_MATCH_NEVER 0x1
476 /* enum: The NIC supports this field, and must use it in all match rules. The
477  * driver must ensure that any mask for such a field is all ones. The NIC will
478  * reject requests with an invalid mask for such a field.
479  */
480 #define	MAE_FIELD_SUPPORTED_MATCH_ALWAYS 0x2
481 /* enum: The NIC supports this field, and may optionally use it in match rules.
482  * The driver must ensure that any mask for such a field is either all zeroes
483  * or all ones. The NIC will reject requests with an invalid mask for such a
484  * field.
485  */
486 #define	MAE_FIELD_SUPPORTED_MATCH_OPTIONAL 0x3
487 /* enum: The NIC supports this field, and may optionally use it in match rules.
488  * The driver must ensure that any mask for such a field is either all zeroes
489  * or a consecutive set of ones following by all zeroes (starting from MSB).
490  * The NIC will reject requests with an invalid mask for such a field.
491  */
492 #define	MAE_FIELD_SUPPORTED_MATCH_PREFIX 0x4
493 /* enum: The NIC supports this field, and may optionally use it in match rules.
494  * The driver may provide an arbitrary mask for such a field.
495  */
496 #define	MAE_FIELD_SUPPORTED_MATCH_MASK 0x5
497 
498 /* MAE_CT_VNI_MODE enum: Controls the layout of the VNI input to the conntrack
499  * lookup. (Values are not arbitrary - constrained by table access ABI.)
500  */
501 /* enum: The VNI input to the conntrack lookup will be zero. */
502 #define	MAE_CT_VNI_MODE_ZERO 0x0
503 /* enum: The VNI input to the conntrack lookup will be the VNI (VXLAN/Geneve)
504  * or VSID (NVGRE) field from the packet.
505  */
506 #define	MAE_CT_VNI_MODE_VNI 0x1
507 /* enum: The VNI input to the conntrack lookup will be the VLAN ID from the
508  * outermost VLAN tag (in bottom 12 bits; top 12 bits zero).
509  */
510 #define	MAE_CT_VNI_MODE_1VLAN 0x2
511 /* enum: The VNI input to the conntrack lookup will be the VLAN IDs from both
512  * VLAN tags (outermost in bottom 12 bits, innermost in top 12 bits).
513  */
514 #define	MAE_CT_VNI_MODE_2VLAN 0x3
515 
516 /* MAE_FIELD enum: NB: this enum shares namespace with the support status enum.
517  */
518 /* enum: Source mport upon entering the MAE. */
519 #define	MAE_FIELD_INGRESS_PORT 0x0
520 #define	MAE_FIELD_MARK 0x1 /* enum */
521 /* enum: Table ID used in action rule. Initially zero, can be changed in action
522  * rule response.
523  */
524 #define	MAE_FIELD_RECIRC_ID 0x2
525 #define	MAE_FIELD_IS_IP_FRAG 0x3 /* enum */
526 #define	MAE_FIELD_DO_CT 0x4 /* enum */
527 #define	MAE_FIELD_CT_HIT 0x5 /* enum */
528 /* enum: Undefined unless CT_HIT=1. */
529 #define	MAE_FIELD_CT_MARK 0x6
530 /* enum: Undefined unless DO_CT=1. */
531 #define	MAE_FIELD_CT_DOMAIN 0x7
532 /* enum: Undefined unless CT_HIT=1. */
533 #define	MAE_FIELD_CT_PRIVATE_FLAGS 0x8
534 /* enum: 1 if the packet ingressed the NIC from one of the MACs, else 0. */
535 #define	MAE_FIELD_IS_FROM_NETWORK 0x9
536 /* enum: 1 if the packet has 1 or more VLAN tags, else 0. */
537 #define	MAE_FIELD_HAS_OVLAN 0xa
538 /* enum: 1 if the packet has 2 or more VLAN tags, else 0. */
539 #define	MAE_FIELD_HAS_IVLAN 0xb
540 /* enum: 1 if the outer packet has 1 or more VLAN tags, else 0; only present
541  * when encap
542  */
543 #define	MAE_FIELD_ENC_HAS_OVLAN 0xc
544 /* enum: 1 if the outer packet has 2 or more VLAN tags, else 0; only present
545  * when encap
546  */
547 #define	MAE_FIELD_ENC_HAS_IVLAN 0xd
548 /* enum: Packet is IP fragment */
549 #define	MAE_FIELD_ENC_IP_FRAG 0xe
550 #define	MAE_FIELD_ETHER_TYPE 0x21 /* enum */
551 #define	MAE_FIELD_VLAN0_TCI 0x22 /* enum */
552 #define	MAE_FIELD_VLAN0_PROTO 0x23 /* enum */
553 #define	MAE_FIELD_VLAN1_TCI 0x24 /* enum */
554 #define	MAE_FIELD_VLAN1_PROTO 0x25 /* enum */
555 /* enum: Inner when encap */
556 #define	MAE_FIELD_ETH_SADDR 0x28
557 /* enum: Inner when encap */
558 #define	MAE_FIELD_ETH_DADDR 0x29
559 /* enum: Inner when encap. NB: IPv4 and IPv6 fields are mutually exclusive. */
560 #define	MAE_FIELD_SRC_IP4 0x2a
561 /* enum: Inner when encap */
562 #define	MAE_FIELD_SRC_IP6 0x2b
563 /* enum: Inner when encap */
564 #define	MAE_FIELD_DST_IP4 0x2c
565 /* enum: Inner when encap */
566 #define	MAE_FIELD_DST_IP6 0x2d
567 /* enum: Inner when encap */
568 #define	MAE_FIELD_IP_PROTO 0x2e
569 /* enum: Inner when encap */
570 #define	MAE_FIELD_IP_TOS 0x2f
571 /* enum: Inner when encap */
572 #define	MAE_FIELD_IP_TTL 0x30
573 /* enum: Inner when encap TODO: how this is defined? The raw flags +
574  * frag_offset from the packet, or some derived value more amenable to ternary
575  * matching? TODO: there was a proposal for driver-allocation fields. The
576  * driver would provide some instruction for how to extract given field values,
577  * and would be given a field id in return. It could then use that field id in
578  * its matches. This feels like it would be extremely hard to implement in
579  * hardware, but I mention it for completeness.
580  */
581 #define	MAE_FIELD_IP_FLAGS 0x31
582 /* enum: Ports (UDP, TCP) Inner when encap */
583 #define	MAE_FIELD_L4_SPORT 0x32
584 /* enum: Ports (UDP, TCP) Inner when encap */
585 #define	MAE_FIELD_L4_DPORT 0x33
586 /* enum: Inner when encap */
587 #define	MAE_FIELD_TCP_FLAGS 0x34
588 /* enum: TCP packet with any of SYN, FIN or RST flag set */
589 #define	MAE_FIELD_TCP_SYN_FIN_RST 0x35
590 /* enum: Packet is IP fragment with fragment offset 0 */
591 #define	MAE_FIELD_IP_FIRST_FRAG 0x36
592 /* enum: The type of encapsulated used for this packet. Value as per
593  * ENCAP_TYPE_*.
594  */
595 #define	MAE_FIELD_ENCAP_TYPE 0x3f
596 /* enum: The ID of the outer rule that marked this packet as encapsulated.
597  * Useful for implicitly matching on outer fields.
598  */
599 #define	MAE_FIELD_OUTER_RULE_ID 0x40
600 /* enum: Outer; only present when encap */
601 #define	MAE_FIELD_ENC_ETHER_TYPE 0x41
602 /* enum: Outer; only present when encap */
603 #define	MAE_FIELD_ENC_VLAN0_TCI 0x42
604 /* enum: Outer; only present when encap */
605 #define	MAE_FIELD_ENC_VLAN0_PROTO 0x43
606 /* enum: Outer; only present when encap */
607 #define	MAE_FIELD_ENC_VLAN1_TCI 0x44
608 /* enum: Outer; only present when encap */
609 #define	MAE_FIELD_ENC_VLAN1_PROTO 0x45
610 /* enum: Outer; only present when encap */
611 #define	MAE_FIELD_ENC_ETH_SADDR 0x48
612 /* enum: Outer; only present when encap */
613 #define	MAE_FIELD_ENC_ETH_DADDR 0x49
614 /* enum: Outer; only present when encap */
615 #define	MAE_FIELD_ENC_SRC_IP4 0x4a
616 /* enum: Outer; only present when encap */
617 #define	MAE_FIELD_ENC_SRC_IP6 0x4b
618 /* enum: Outer; only present when encap */
619 #define	MAE_FIELD_ENC_DST_IP4 0x4c
620 /* enum: Outer; only present when encap */
621 #define	MAE_FIELD_ENC_DST_IP6 0x4d
622 /* enum: Outer; only present when encap */
623 #define	MAE_FIELD_ENC_IP_PROTO 0x4e
624 /* enum: Outer; only present when encap */
625 #define	MAE_FIELD_ENC_IP_TOS 0x4f
626 /* enum: Outer; only present when encap */
627 #define	MAE_FIELD_ENC_IP_TTL 0x50
628 /* enum: Outer; only present when encap */
629 #define	MAE_FIELD_ENC_IP_FLAGS 0x51
630 /* enum: Outer; only present when encap */
631 #define	MAE_FIELD_ENC_L4_SPORT 0x52
632 /* enum: Outer; only present when encap */
633 #define	MAE_FIELD_ENC_L4_DPORT 0x53
634 /* enum: VNI (when VXLAN or GENEVE) VSID (when NVGRE) Bottom 24 bits of Key
635  * (when L2GRE) Outer; only present when encap
636  */
637 #define	MAE_FIELD_ENC_VNET_ID 0x54
638 
639 /* MAE_MCDI_ENCAP_TYPE enum: Encapsulation type. Defines how the payload will
640  * be parsed to an inner frame. Other values are reserved. Unknown values
641  * should be treated same as NONE. (Values are not arbitrary - constrained by
642  * table access ABI.)
643  */
644 #define	MAE_MCDI_ENCAP_TYPE_NONE 0x0 /* enum */
645 /* enum: Don't assume enum aligns with support bitmask... */
646 #define	MAE_MCDI_ENCAP_TYPE_VXLAN 0x1
647 #define	MAE_MCDI_ENCAP_TYPE_NVGRE 0x2 /* enum */
648 #define	MAE_MCDI_ENCAP_TYPE_GENEVE 0x3 /* enum */
649 #define	MAE_MCDI_ENCAP_TYPE_L2GRE 0x4 /* enum */
650 
651 /* MAE_MPORT_END enum: Selects which end of the logical link identified by an
652  * MPORT_SELECTOR is targeted by an operation.
653  */
654 /* enum: Selects the port on the MAE virtual switch */
655 #define	MAE_MPORT_END_MAE 0x1
656 /* enum: Selects the virtual NIC plugged into the MAE switch */
657 #define	MAE_MPORT_END_VNIC 0x2
658 
659 /* MAE_COUNTER_TYPE enum: The datapath maintains several sets of counters, each
660  * being associated with a different table. Note that the same counter ID may
661  * be allocated by different counter blocks, so e.g. AR counter 42 is different
662  * from CT counter 42. Generation counts are also type-specific. This value is
663  * also present in the header of streaming counter packets, in the IDENTIFIER
664  * field (see packetiser packet format definitions). Also note that LACP
665  * counter IDs are not allocated individually, instead the counter IDs are
666  * directly tied to the LACP balance table indices. These in turn are allocated
667  * in large contiguous blocks as a LAG config. Calling MAE_COUNTER_ALLOC/FREE
668  * with an LACP counter type will return EPERM.
669  */
670 /* enum: Action Rule counters - can be referenced in AR response. */
671 #define	MAE_COUNTER_TYPE_AR 0x0
672 /* enum: Conntrack counters - can be referenced in CT response. */
673 #define	MAE_COUNTER_TYPE_CT 0x1
674 /* enum: Outer Rule counters - can be referenced in OR response. */
675 #define	MAE_COUNTER_TYPE_OR 0x2
676 /* enum: LACP counters - linked to LACP balance table entries. */
677 #define	MAE_COUNTER_TYPE_LACP 0x3
678 
679 /* MAE_COUNTER_ID enum: ID of allocated counter or counter list. */
680 /* enum: A counter ID that is guaranteed never to represent a real counter or
681  * counter list.
682  */
683 #define	MAE_COUNTER_ID_NULL 0xffffffff
684 
685 /* TABLE_ID enum: Unique IDs for tables. The 32-bit ID values have been
686  * structured with bits [31:24] reserved (0), [23:16] indicating which major
687  * block the tables belongs to (0=VNIC TX, none currently; 1=MAE; 2=VNIC RX),
688  * [15:8] a unique ID within the block, and [7:0] reserved for future
689  * variations of the same table. (All of the tables currently defined within
690  * the streaming engines are listed here, but this does not imply that they are
691  * all supported - MC_CMD_TABLE_LIST returns the list of actually supported
692  * tables.) The DPU offload engines' enumerators follow a deliberate pattern:
693  * 0x01010000 + is_dpu_net * 0x10000 + is_wr_or_tx * 0x8000 + is_lite_pipe *
694  * 0x1000 + oe_engine_type * 0x100 + oe_instance_within_pipe * 0x10
695  */
696 /* enum: Outer_Rule_Table in the MAE - refer to SF-123102-TC. */
697 #define	TABLE_ID_OUTER_RULE_TABLE 0x10000
698 /* enum: Outer_Rule_No_CT_Table in the MAE - refer to SF-123102-TC. */
699 #define	TABLE_ID_OUTER_RULE_NO_CT_TABLE 0x10100
700 /* enum: Mgmt_Filter_Table in the MAE - refer to SF-123102-TC. */
701 #define	TABLE_ID_MGMT_FILTER_TABLE 0x10200
702 /* enum: Conntrack_Table in the MAE - refer to SF-123102-TC. */
703 #define	TABLE_ID_CONNTRACK_TABLE 0x10300
704 /* enum: Action_Rule_Table in the MAE - refer to SF-123102-TC. */
705 #define	TABLE_ID_ACTION_RULE_TABLE 0x10400
706 /* enum: Mgroup_Default_Action_Set_Table in the MAE - refer to SF-123102-TC. */
707 #define	TABLE_ID_MGROUP_DEFAULT_ACTION_SET_TABLE 0x10500
708 /* enum: Encap_Hdr_Part1_Table in the MAE - refer to SF-123102-TC. */
709 #define	TABLE_ID_ENCAP_HDR_PART1_TABLE 0x10600
710 /* enum: Encap_Hdr_Part2_Table in the MAE - refer to SF-123102-TC. */
711 #define	TABLE_ID_ENCAP_HDR_PART2_TABLE 0x10700
712 /* enum: Replace_Src_MAC_Table in the MAE - refer to SF-123102-TC. */
713 #define	TABLE_ID_REPLACE_SRC_MAC_TABLE 0x10800
714 /* enum: Replace_Dst_MAC_Table in the MAE - refer to SF-123102-TC. */
715 #define	TABLE_ID_REPLACE_DST_MAC_TABLE 0x10900
716 /* enum: Dst_Mport_VC_Table in the MAE - refer to SF-123102-TC. */
717 #define	TABLE_ID_DST_MPORT_VC_TABLE 0x10a00
718 /* enum: LACP_LAG_Config_Table in the MAE - refer to SF-123102-TC. */
719 #define	TABLE_ID_LACP_LAG_CONFIG_TABLE 0x10b00
720 /* enum: LACP_Balance_Table in the MAE - refer to SF-123102-TC. */
721 #define	TABLE_ID_LACP_BALANCE_TABLE 0x10c00
722 /* enum: Dst_Mport_Host_Chan_Table in the MAE - refer to SF-123102-TC. */
723 #define	TABLE_ID_DST_MPORT_HOST_CHAN_TABLE 0x10d00
724 /* enum: VNIC_Rx_Encap_Table in VNIC Rx - refer to SF-123102-TC. */
725 #define	TABLE_ID_VNIC_RX_ENCAP_TABLE 0x20000
726 /* enum: Steering_Table in VNIC Rx - refer to SF-123102-TC. */
727 #define	TABLE_ID_STEERING_TABLE 0x20100
728 /* enum: RSS_Context_Table in VNIC Rx - refer to SF-123102-TC. */
729 #define	TABLE_ID_RSS_CONTEXT_TABLE 0x20200
730 /* enum: Indirection_Table in VNIC Rx - refer to SF-123102-TC. */
731 #define	TABLE_ID_INDIRECTION_TABLE 0x20300
732 /* enum: DPU.host read pipe first CRC offload engine profiles - refer to
733  * XN-200147-AN.
734  */
735 #define	TABLE_ID_DPU_HOST_RD_CRC0_OE_PROFILE 0x1010000
736 /* enum: DPU.host read pipe second CRC offload engine profiles - refer to
737  * XN-200147-AN.
738  */
739 #define	TABLE_ID_DPU_HOST_RD_CRC1_OE_PROFILE 0x1010010
740 /* enum: DPU.host write pipe first CRC offload engine profiles - refer to
741  * XN-200147-AN.
742  */
743 #define	TABLE_ID_DPU_HOST_WR_CRC0_OE_PROFILE 0x1018000
744 /* enum: DPU.host write pipe second CRC offload engine profiles - refer to
745  * XN-200147-AN.
746  */
747 #define	TABLE_ID_DPU_HOST_WR_CRC1_OE_PROFILE 0x1018010
748 /* enum: DPU.net 'full' receive pipe CRC offload engine profiles - refer to
749  * XN-200147-AN.
750  */
751 #define	TABLE_ID_DPU_NET_RX_CRC0_OE_PROFILE 0x1020000
752 /* enum: DPU.net 'full' receive pipe first checksum offload engine profiles -
753  * refer to XN-200147-AN.
754  */
755 #define	TABLE_ID_DPU_NET_RX_CSUM0_OE_PROFILE 0x1020100
756 /* enum: DPU.net 'full' receive pipe second checksum offload engine profiles -
757  * refer to XN-200147-AN.
758  */
759 #define	TABLE_ID_DPU_NET_RX_CSUM1_OE_PROFILE 0x1020110
760 /* enum: DPU.net 'full' receive pipe AES-GCM offload engine profiles - refer to
761  * XN-200147-AN.
762  */
763 #define	TABLE_ID_DPU_NET_RX_AES_GCM0_OE_PROFILE 0x1020200
764 /* enum: DPU.net 'lite' receive pipe CRC offload engine profiles - refer to
765  * XN-200147-AN.
766  */
767 #define	TABLE_ID_DPU_NET_RXLITE_CRC0_OE_PROFILE 0x1021000
768 /* enum: DPU.net 'lite' receive pipe checksum offload engine profiles - refer
769  * to XN-200147-AN.
770  */
771 #define	TABLE_ID_DPU_NET_RXLITE_CSUM0_OE_PROFILE 0x1021100
772 /* enum: DPU.net 'full' transmit pipe CRC offload engine profiles - refer to
773  * XN-200147-AN.
774  */
775 #define	TABLE_ID_DPU_NET_TX_CRC0_OE_PROFILE 0x1028000
776 /* enum: DPU.net 'full' transmit pipe first checksum offload engine profiles -
777  * refer to XN-200147-AN.
778  */
779 #define	TABLE_ID_DPU_NET_TX_CSUM0_OE_PROFILE 0x1028100
780 /* enum: DPU.net 'full' transmit pipe second checksum offload engine profiles -
781  * refer to XN-200147-AN.
782  */
783 #define	TABLE_ID_DPU_NET_TX_CSUM1_OE_PROFILE 0x1028110
784 /* enum: DPU.net 'full' transmit pipe AES-GCM offload engine profiles - refer
785  * to XN-200147-AN.
786  */
787 #define	TABLE_ID_DPU_NET_TX_AES_GCM0_OE_PROFILE 0x1028200
788 /* enum: DPU.net 'lite' transmit pipe CRC offload engine profiles - refer to
789  * XN-200147-AN.
790  */
791 #define	TABLE_ID_DPU_NET_TXLITE_CRC0_OE_PROFILE 0x1029000
792 /* enum: DPU.net 'lite' transmit pipe checksum offload engine profiles - refer
793  * to XN-200147-AN.
794  */
795 #define	TABLE_ID_DPU_NET_TXLITE_CSUM0_OE_PROFILE 0x1029100
796 
797 /* TABLE_COMPRESSED_VLAN enum: Compressed VLAN TPID as used by some field
798  * types; can be calculated by (((ether_type_msb >> 2) & 0x4) ^ 0x4) |
799  * (ether_type_msb & 0x3);
800  */
801 #define	TABLE_COMPRESSED_VLAN_TPID_8100 0x5 /* enum */
802 #define	TABLE_COMPRESSED_VLAN_TPID_88A8 0x4 /* enum */
803 #define	TABLE_COMPRESSED_VLAN_TPID_9100 0x1 /* enum */
804 #define	TABLE_COMPRESSED_VLAN_TPID_9200 0x2 /* enum */
805 #define	TABLE_COMPRESSED_VLAN_TPID_9300 0x3 /* enum */
806 
807 /* TABLE_NAT_DIR enum: NAT direction. */
808 #define	TABLE_NAT_DIR_SOURCE 0x0 /* enum */
809 #define	TABLE_NAT_DIR_DEST 0x1 /* enum */
810 
811 /* TABLE_RSS_KEY_MODE enum: Defines how the value for Toeplitz hashing for RSS
812  * is constructed as a concatenation (indicated here by "++") of packet header
813  * fields.
814  */
815 /* enum: IP src addr ++ IP dst addr */
816 #define	TABLE_RSS_KEY_MODE_SA_DA 0x0
817 /* enum: IP src addr ++ IP dst addr ++ TCP/UDP src port ++ TCP/UDP dst port */
818 #define	TABLE_RSS_KEY_MODE_SA_DA_SP_DP 0x1
819 /* enum: IP src addr */
820 #define	TABLE_RSS_KEY_MODE_SA 0x2
821 /* enum: IP dst addr */
822 #define	TABLE_RSS_KEY_MODE_DA 0x3
823 /* enum: IP src addr ++ TCP/UDP src port */
824 #define	TABLE_RSS_KEY_MODE_SA_SP 0x4
825 /* enum: IP dest addr ++ TCP dest port */
826 #define	TABLE_RSS_KEY_MODE_DA_DP 0x5
827 /* enum: Nothing (produces input of 0, resulting in output hash of 0) */
828 #define	TABLE_RSS_KEY_MODE_NONE 0x7
829 
830 /* TABLE_RSS_SPREAD_MODE enum: RSS spreading mode. */
831 /* enum: RSS uses Indirection_Table lookup. */
832 #define	TABLE_RSS_SPREAD_MODE_INDIRECTION 0x0
833 /* enum: RSS uses even spreading calculation. */
834 #define	TABLE_RSS_SPREAD_MODE_EVEN 0x1
835 
836 /* CRC_VARIANT enum: Operation for the DPU CRC engine to perform. */
837 /* enum: Calculate a 32-bit CRC. */
838 #define	CRC_VARIANT_CRC32 0x1
839 /* enum: Calculate a 64-bit CRC. */
840 #define	CRC_VARIANT_CRC64 0x2
841 
842 /* DPU_CSUM_OP enum: Operation for the DPU checksum engine to perform. */
843 /* enum: Calculate the checksum for a TCP payload, output result on OPR bus. */
844 #define	DPU_CSUM_OP_CALC_TCP 0x0
845 /* enum: Calculate the checksum for a UDP payload, output result on OPR bus. */
846 #define	DPU_CSUM_OP_CALC_UDP 0x1
847 /* enum: Calculate the checksum for a TCP payload, output match/not match value
848  * on OPR bus.
849  */
850 #define	DPU_CSUM_OP_VALIDATE_TCP 0x2
851 /* enum: Calculate the checksum for a UDP payload, output match/not match value
852  * on OPR bus.
853  */
854 #define	DPU_CSUM_OP_VALIDATE_UDP 0x3
855 
856 /* GCM_OP_CODE enum: Operation for the DPU AES-GCM engine to perform. */
857 /* enum: Encrypt/decrypt a stream of data. */
858 #define	GCM_OP_CODE_BULK_CRYPT 0x0
859 /* enum: Calculate the authentication tag for a stream of data. */
860 #define	GCM_OP_CODE_BULK_AUTH 0x1
861 /* enum: Encrypt/decrypt an IPsec packet. */
862 #define	GCM_OP_CODE_IPSEC_CRYPT 0x2
863 /* enum: Calculate the authentication tag of an IPsec packet. */
864 #define	GCM_OP_CODE_IPSEC_AUTH 0x3
865 
866 /* AES_KEY_LEN enum: Key size for AES crypto operations */
867 /* enum: 128 bit key size. */
868 #define	AES_KEY_LEN_AES_KEY_128 0x0
869 /* enum: 256 bit key size. */
870 #define	AES_KEY_LEN_AES_KEY_256 0x1
871 
872 /* TABLE_FIELD_ID enum: Unique IDs for fields. Related concepts have been
873  * loosely grouped together into blocks with gaps for expansion, but the values
874  * are arbitrary. Field IDs are not specific to particular tables, and in some
875  * cases this sharing means that they are not used with the exact names of the
876  * corresponding table definitions in SF-123102-TC; however, the mapping should
877  * still be clear. The intent is that a list of fields, with their associated
878  * bit widths and semantics version code, unambiguously defines the semantics
879  * of the fields in a key or response. (Again, this list includes all of the
880  * fields currently defined within the streaming engines, but only a subset may
881  * actually be used by the supported list of tables.)
882  */
883 /* enum: May appear multiple times within a key or response, and indicates that
884  * the field is unused and should be set to 0 (or masked out if permitted by
885  * the MASK_VALUE for this field).
886  */
887 #define	TABLE_FIELD_ID_UNUSED 0x0
888 /* enum: Source m-port (a full m-port label). */
889 #define	TABLE_FIELD_ID_SRC_MPORT 0x1
890 /* enum: Destination m-port (a full m-port label). */
891 #define	TABLE_FIELD_ID_DST_MPORT 0x2
892 /* enum: Source m-group ID. */
893 #define	TABLE_FIELD_ID_SRC_MGROUP_ID 0x3
894 /* enum: Physical network port ID (or m-port ID; same thing, for physical
895  * network ports).
896  */
897 #define	TABLE_FIELD_ID_NETWORK_PORT_ID 0x4
898 /* enum: True if packet arrived via network port, false if it arrived via host.
899  */
900 #define	TABLE_FIELD_ID_IS_FROM_NETWORK 0x5
901 /* enum: Full virtual channel from capsule header. */
902 #define	TABLE_FIELD_ID_CH_VC 0x6
903 /* enum: Low bits of virtual channel from capsule header. */
904 #define	TABLE_FIELD_ID_CH_VC_LOW 0x7
905 /* enum: User mark value in metadata and packet prefix. */
906 #define	TABLE_FIELD_ID_USER_MARK 0x8
907 /* enum: User flag value in metadata and packet prefix. */
908 #define	TABLE_FIELD_ID_USER_FLAG 0x9
909 /* enum: Counter ID associated with a response. All-bits-1 is a null value to
910  * suppress counting.
911  */
912 #define	TABLE_FIELD_ID_COUNTER_ID 0xa
913 /* enum: Discriminator which may be set by plugins in some lookup keys; this
914  * allows plugins to make a reinterpretation of packet fields in these keys
915  * without clashing with the normal interpretation.
916  */
917 #define	TABLE_FIELD_ID_DISCRIM 0xb
918 /* enum: Destination MAC address. The mapping from bytes in a frame to the
919  * 48-bit value for this field is in network order, i.e. a MAC address of
920  * AA:BB:CC:DD:EE:FF becomes a 48-bit value of 0xAABBCCDDEEFF.
921  */
922 #define	TABLE_FIELD_ID_DST_MAC 0x14
923 /* enum: Source MAC address (see notes for DST_MAC). */
924 #define	TABLE_FIELD_ID_SRC_MAC 0x15
925 /* enum: Outer VLAN tag TPID, compressed to an enumeration. */
926 #define	TABLE_FIELD_ID_OVLAN_TPID_COMPRESSED 0x16
927 /* enum: Full outer VLAN tag TCI (16 bits). */
928 #define	TABLE_FIELD_ID_OVLAN 0x17
929 /* enum: Outer VLAN ID (least significant 12 bits of full 16-bit TCI) only. */
930 #define	TABLE_FIELD_ID_OVLAN_VID 0x18
931 /* enum: Inner VLAN tag TPID, compressed to an enumeration. */
932 #define	TABLE_FIELD_ID_IVLAN_TPID_COMPRESSED 0x19
933 /* enum: Full inner VLAN tag TCI (16 bits). */
934 #define	TABLE_FIELD_ID_IVLAN 0x1a
935 /* enum: Inner VLAN ID (least significant 12 bits of full 16-bit TCI) only. */
936 #define	TABLE_FIELD_ID_IVLAN_VID 0x1b
937 /* enum: Ethertype. */
938 #define	TABLE_FIELD_ID_ETHER_TYPE 0x1c
939 /* enum: Source IP address, either IPv4 or IPv6. The mapping from bytes in a
940  * frame to the 128-bit value for this field is in network order, with IPv4
941  * addresses assumed to have 12 bytes of trailing zeroes. i.e. the IPv6 address
942  * [2345::6789:ABCD] is 0x2345000000000000000000006789ABCD; the IPv4 address
943  * 192.168.1.2 is 0xC0A80102000000000000000000000000.
944  */
945 #define	TABLE_FIELD_ID_SRC_IP 0x1d
946 /* enum: Destination IP address (see notes for SRC_IP). */
947 #define	TABLE_FIELD_ID_DST_IP 0x1e
948 /* enum: IPv4 Type-of-Service or IPv6 Traffic Class field. */
949 #define	TABLE_FIELD_ID_IP_TOS 0x1f
950 /* enum: IP Protocol. */
951 #define	TABLE_FIELD_ID_IP_PROTO 0x20
952 /* enum: Layer 4 source port. */
953 #define	TABLE_FIELD_ID_SRC_PORT 0x21
954 /* enum: Layer 4 destination port. */
955 #define	TABLE_FIELD_ID_DST_PORT 0x22
956 /* enum: TCP flags. */
957 #define	TABLE_FIELD_ID_TCP_FLAGS 0x23
958 /* enum: Virtual Network Identifier (VXLAN) or Virtual Session ID (NVGRE). */
959 #define	TABLE_FIELD_ID_VNI 0x24
960 /* enum: True if packet has any tunnel encapsulation header. */
961 #define	TABLE_FIELD_ID_HAS_ENCAP 0x32
962 /* enum: True if encap header has an outer VLAN tag. */
963 #define	TABLE_FIELD_ID_HAS_ENC_OVLAN 0x33
964 /* enum: True if encap header has an inner VLAN tag. */
965 #define	TABLE_FIELD_ID_HAS_ENC_IVLAN 0x34
966 /* enum: True if encap header is some sort of IP. */
967 #define	TABLE_FIELD_ID_HAS_ENC_IP 0x35
968 /* enum: True if encap header is specifically IPv4. */
969 #define	TABLE_FIELD_ID_HAS_ENC_IP4 0x36
970 /* enum: True if encap header is UDP. */
971 #define	TABLE_FIELD_ID_HAS_ENC_UDP 0x37
972 /* enum: True if only/inner frame has an outer VLAN tag. */
973 #define	TABLE_FIELD_ID_HAS_OVLAN 0x38
974 /* enum: True if only/inner frame has an inner VLAN tag. */
975 #define	TABLE_FIELD_ID_HAS_IVLAN 0x39
976 /* enum: True if only/inner frame is some sort of IP. */
977 #define	TABLE_FIELD_ID_HAS_IP 0x3a
978 /* enum: True if only/inner frame has a recognised L4 IP protocol (TCP or UDP).
979  */
980 #define	TABLE_FIELD_ID_HAS_L4 0x3b
981 /* enum: True if only/inner frame is an IP fragment. */
982 #define	TABLE_FIELD_ID_IP_FRAG 0x3c
983 /* enum: True if only/inner frame is the first IP fragment (fragment offset 0).
984  */
985 #define	TABLE_FIELD_ID_IP_FIRST_FRAG 0x3d
986 /* enum: True if only/inner frame has an IP Time-To-Live of <= 1. (Note: the
987  * implementation calls this "ip_ttl_is_one" but does in fact match packets
988  * with TTL=0 - which we shouldn't be seeing! - as well.)
989  */
990 #define	TABLE_FIELD_ID_IP_TTL_LE_ONE 0x3e
991 /* enum: True if only/inner frame has any of TCP SYN, FIN or RST flags set. */
992 #define	TABLE_FIELD_ID_TCP_INTERESTING_FLAGS 0x3f
993 /* enum: Plugin channel selection. */
994 #define	TABLE_FIELD_ID_RDP_PL_CHAN 0x50
995 /* enum: Enable update of CH_ROUTE_RDP_C_PL route bit. */
996 #define	TABLE_FIELD_ID_RDP_C_PL_EN 0x51
997 /* enum: New value of CH_ROUTE_RDP_C_PL route bit. */
998 #define	TABLE_FIELD_ID_RDP_C_PL 0x52
999 /* enum: Enable update of CH_ROUTE_RDP_D_PL route bit. */
1000 #define	TABLE_FIELD_ID_RDP_D_PL_EN 0x53
1001 /* enum: New value of CH_ROUTE_RDP_D_PL route bit. */
1002 #define	TABLE_FIELD_ID_RDP_D_PL 0x54
1003 /* enum: Enable update of CH_ROUTE_RDP_OUT_HOST_CHAN route bit. */
1004 #define	TABLE_FIELD_ID_RDP_OUT_HOST_CHAN_EN 0x55
1005 /* enum: New value of CH_ROUTE_RDP_OUT_HOST_CHAN route bit. */
1006 #define	TABLE_FIELD_ID_RDP_OUT_HOST_CHAN 0x56
1007 /* enum: Recirculation ID for lookup sequences with two action rule lookups. */
1008 #define	TABLE_FIELD_ID_RECIRC_ID 0x64
1009 /* enum: Domain ID passed to conntrack and action rule lookups. */
1010 #define	TABLE_FIELD_ID_DOMAIN 0x65
1011 /* enum: Construction mode for encap_tunnel_id - see MAE_CT_VNI_MODE enum. */
1012 #define	TABLE_FIELD_ID_CT_VNI_MODE 0x66
1013 /* enum: True to inhibit conntrack lookup if TCP SYN, FIN or RST flag is set.
1014  */
1015 #define	TABLE_FIELD_ID_CT_TCP_FLAGS_INHIBIT 0x67
1016 /* enum: True to do conntrack lookups for IPv4 TCP packets. */
1017 #define	TABLE_FIELD_ID_DO_CT_IP4_TCP 0x68
1018 /* enum: True to do conntrack lookups for IPv4 UDP packets. */
1019 #define	TABLE_FIELD_ID_DO_CT_IP4_UDP 0x69
1020 /* enum: True to do conntrack lookups for IPv6 TCP packets. */
1021 #define	TABLE_FIELD_ID_DO_CT_IP6_TCP 0x6a
1022 /* enum: True to do conntrack lookups for IPv6 UDP packets. */
1023 #define	TABLE_FIELD_ID_DO_CT_IP6_UDP 0x6b
1024 /* enum: Outer rule identifier. */
1025 #define	TABLE_FIELD_ID_OUTER_RULE_ID 0x6c
1026 /* enum: Encapsulation type - see MAE_MCDI_ENCAP_TYPE enum. */
1027 #define	TABLE_FIELD_ID_ENCAP_TYPE 0x6d
1028 /* enum: Encap tunnel ID for conntrack lookups from VNI, VLAN tag(s), or 0,
1029  * depending on CT_VNI_MODE.
1030  */
1031 #define	TABLE_FIELD_ID_ENCAP_TUNNEL_ID 0x78
1032 /* enum: A conntrack entry identifier, passed to plugins. */
1033 #define	TABLE_FIELD_ID_CT_ENTRY_ID 0x79
1034 /* enum: Either source or destination NAT replacement port. */
1035 #define	TABLE_FIELD_ID_NAT_PORT 0x7a
1036 /* enum: Either source or destination NAT replacement IPv4 address. Note that
1037  * this is specifically an IPv4 address (IPv6 is not supported for NAT), with
1038  * byte mapped to a 32-bit value in network order, i.e. the IPv4 address
1039  * 192.168.1.2 is the value 0xC0A80102.
1040  */
1041 #define	TABLE_FIELD_ID_NAT_IP 0x7b
1042 /* enum: NAT direction: 0=>source, 1=>destination. */
1043 #define	TABLE_FIELD_ID_NAT_DIR 0x7c
1044 /* enum: Conntrack mark value, passed to action rule lookup. Note that this is
1045  * not related to the "user mark" in the metadata / packet prefix.
1046  */
1047 #define	TABLE_FIELD_ID_CT_MARK 0x7d
1048 /* enum: Private flags for conntrack, passed to action rule lookup. */
1049 #define	TABLE_FIELD_ID_CT_PRIV_FLAGS 0x7e
1050 /* enum: True if the conntrack lookup resulted in a hit. */
1051 #define	TABLE_FIELD_ID_CT_HIT 0x7f
1052 /* enum: True to suppress delivery when source and destination m-ports match.
1053  */
1054 #define	TABLE_FIELD_ID_SUPPRESS_SELF_DELIVERY 0x8c
1055 /* enum: True to perform tunnel decapsulation. */
1056 #define	TABLE_FIELD_ID_DO_DECAP 0x8d
1057 /* enum: True to copy outer frame DSCP to inner on decap. */
1058 #define	TABLE_FIELD_ID_DECAP_DSCP_COPY 0x8e
1059 /* enum: True to map outer frame ECN to inner on decap, by RFC 6040 rules. */
1060 #define	TABLE_FIELD_ID_DECAP_ECN_RFC6040 0x8f
1061 /* enum: True to replace DSCP field. */
1062 #define	TABLE_FIELD_ID_DO_REPLACE_DSCP 0x90
1063 /* enum: True to replace ECN field. */
1064 #define	TABLE_FIELD_ID_DO_REPLACE_ECN 0x91
1065 /* enum: True to decrement IP Time-To-Live. */
1066 #define	TABLE_FIELD_ID_DO_DECR_IP_TTL 0x92
1067 /* enum: True to replace source MAC address. */
1068 #define	TABLE_FIELD_ID_DO_SRC_MAC 0x93
1069 /* enum: True to replace destination MAC address. */
1070 #define	TABLE_FIELD_ID_DO_DST_MAC 0x94
1071 /* enum: Number of VLAN tags to pop. Valid values are 0, 1, or 2. */
1072 #define	TABLE_FIELD_ID_DO_VLAN_POP 0x95
1073 /* enum: Number of VLANs tags to push. Valid values are 0, 1, or 2. */
1074 #define	TABLE_FIELD_ID_DO_VLAN_PUSH 0x96
1075 /* enum: True to count this packet. */
1076 #define	TABLE_FIELD_ID_DO_COUNT 0x97
1077 /* enum: True to perform tunnel encapsulation. */
1078 #define	TABLE_FIELD_ID_DO_ENCAP 0x98
1079 /* enum: True to copy inner frame DSCP to outer on encap. */
1080 #define	TABLE_FIELD_ID_ENCAP_DSCP_COPY 0x99
1081 /* enum: True to copy inner frame ECN to outer on encap. */
1082 #define	TABLE_FIELD_ID_ENCAP_ECN_COPY 0x9a
1083 /* enum: True to deliver the packet (otherwise it is dropped). */
1084 #define	TABLE_FIELD_ID_DO_DELIVER 0x9b
1085 /* enum: True to set the user flag in the metadata. */
1086 #define	TABLE_FIELD_ID_DO_FLAG 0x9c
1087 /* enum: True to update the user mark in the metadata. */
1088 #define	TABLE_FIELD_ID_DO_MARK 0x9d
1089 /* enum: True to override the capsule virtual channel for network deliveries.
1090  */
1091 #define	TABLE_FIELD_ID_DO_SET_NET_CHAN 0x9e
1092 /* enum: True to override the reported source m-port for host deliveries. */
1093 #define	TABLE_FIELD_ID_DO_SET_SRC_MPORT 0x9f
1094 /* enum: Encap header ID for DO_ENCAP, indexing Encap_Hdr_Part1/2_Table. */
1095 #define	TABLE_FIELD_ID_ENCAP_HDR_ID 0xaa
1096 /* enum: New DSCP value for DO_REPLACE_DSCP. */
1097 #define	TABLE_FIELD_ID_DSCP_VALUE 0xab
1098 /* enum: If DO_REPLACE_ECN is set, the new value for the ECN field. If
1099  * DO_REPLACE_ECN is not set, ECN_CONTROL[0] and ECN_CONTROL[1] are set to
1100  * request remapping of ECT0 and ECT1 ECN codepoints respectively to CE.
1101  */
1102 #define	TABLE_FIELD_ID_ECN_CONTROL 0xac
1103 /* enum: Source MAC ID for DO_SRC_MAC, indexing Replace_Src_MAC_Table. */
1104 #define	TABLE_FIELD_ID_SRC_MAC_ID 0xad
1105 /* enum: Destination MAC ID for DO_DST_MAC, indexing Replace_Dst_MAC_Table. */
1106 #define	TABLE_FIELD_ID_DST_MAC_ID 0xae
1107 /* enum: Parameter for either DO_SET_NET_CHAN (only bottom 6 bits used in this
1108  * case) or DO_SET_SRC_MPORT.
1109  */
1110 #define	TABLE_FIELD_ID_REPORTED_SRC_MPORT_OR_NET_CHAN 0xaf
1111 /* enum: 64-byte chunk of added encapsulation header. */
1112 #define	TABLE_FIELD_ID_CHUNK64 0xb4
1113 /* enum: 32-byte chunk of added encapsulation header. */
1114 #define	TABLE_FIELD_ID_CHUNK32 0xb5
1115 /* enum: 16-byte chunk of added encapsulation header. */
1116 #define	TABLE_FIELD_ID_CHUNK16 0xb6
1117 /* enum: 8-byte chunk of added encapsulation header. */
1118 #define	TABLE_FIELD_ID_CHUNK8 0xb7
1119 /* enum: 4-byte chunk of added encapsulation header. */
1120 #define	TABLE_FIELD_ID_CHUNK4 0xb8
1121 /* enum: 2-byte chunk of added encapsulation header. */
1122 #define	TABLE_FIELD_ID_CHUNK2 0xb9
1123 /* enum: Added encapsulation header length in words. */
1124 #define	TABLE_FIELD_ID_HDR_LEN_W 0xba
1125 /* enum: Static value for layer 2/3 LACP hash of the encapsulation header. */
1126 #define	TABLE_FIELD_ID_ENC_LACP_HASH_L23 0xbb
1127 /* enum: Static value for layer 4 LACP hash of the encapsulation header. */
1128 #define	TABLE_FIELD_ID_ENC_LACP_HASH_L4 0xbc
1129 /* enum: True to use the static ENC_LACP_HASH values for the encap header
1130  * instead of the calculated values for the inner frame when delivering a newly
1131  * encapsulated packet to a LAG m-port.
1132  */
1133 #define	TABLE_FIELD_ID_USE_ENC_LACP_HASHES 0xbd
1134 /* enum: True to trigger conntrack from first action rule lookup (AR=>CT=>AR
1135  * sequence).
1136  */
1137 #define	TABLE_FIELD_ID_DO_CT 0xc8
1138 /* enum: True to perform NAT using parameters from conntrack lookup response.
1139  */
1140 #define	TABLE_FIELD_ID_DO_NAT 0xc9
1141 /* enum: True to trigger recirculated action rule lookup (AR=>AR sequence). */
1142 #define	TABLE_FIELD_ID_DO_RECIRC 0xca
1143 /* enum: Next action set payload ID for replay. The null value is all-1-bits.
1144  */
1145 #define	TABLE_FIELD_ID_NEXT_ACTION_SET_PAYLOAD 0xcb
1146 /* enum: Next action set row ID for replay. The null value is all-1-bits. */
1147 #define	TABLE_FIELD_ID_NEXT_ACTION_SET_ROW 0xcc
1148 /* enum: Action set payload ID for additional delivery to management CPU. The
1149  * null value is all-1-bits.
1150  */
1151 #define	TABLE_FIELD_ID_MC_ACTION_SET_PAYLOAD 0xcd
1152 /* enum: Action set row ID for additional delivery to management CPU. The null
1153  * value is all-1-bits.
1154  */
1155 #define	TABLE_FIELD_ID_MC_ACTION_SET_ROW 0xce
1156 /* enum: True to include layer 4 in LACP hash on delivery to a LAG m-port. */
1157 #define	TABLE_FIELD_ID_LACP_INC_L4 0xdc
1158 /* enum: True to request that LACP is performed by a plugin. */
1159 #define	TABLE_FIELD_ID_LACP_PLUGIN 0xdd
1160 /* enum: LACP_Balance_Table base address divided by 64. */
1161 #define	TABLE_FIELD_ID_BAL_TBL_BASE_DIV64 0xde
1162 /* enum: Length of balance table region: 0=>64, 1=>128, 2=>256. */
1163 #define	TABLE_FIELD_ID_BAL_TBL_LEN_ID 0xdf
1164 /* enum: LACP LAG ID (i.e. the low 3 bits of LACP LAG mport ID), indexing
1165  * LACP_LAG_Config_Table. Refer to SF-123102-TC.
1166  */
1167 #define	TABLE_FIELD_ID_LACP_LAG_ID 0xe0
1168 /* enum: Address in LACP_Balance_Table. The balance table is partitioned
1169  * between LAGs according to the settings in LACP_LAG_Config_Table and then
1170  * indexed by the LACP hash, providing the mapping to destination mports. Refer
1171  * to SF-123102-TC.
1172  */
1173 #define	TABLE_FIELD_ID_BAL_TBL_ADDR 0xe1
1174 /* enum: UDP port to match for UDP-based encapsulations; required to be 0 for
1175  * other encapsulation types.
1176  */
1177 #define	TABLE_FIELD_ID_UDP_PORT 0xe6
1178 /* enum: True to perform RSS based on outer fields rather than inner fields. */
1179 #define	TABLE_FIELD_ID_RSS_ON_OUTER 0xe7
1180 /* enum: True to perform steering table lookup on outer fields rather than
1181  * inner fields.
1182  */
1183 #define	TABLE_FIELD_ID_STEER_ON_OUTER 0xe8
1184 /* enum: Destination queue ID for host delivery. */
1185 #define	TABLE_FIELD_ID_DST_QID 0xf0
1186 /* enum: True to drop this packet. */
1187 #define	TABLE_FIELD_ID_DROP 0xf1
1188 /* enum: True to strip outer VLAN tag from this packet. */
1189 #define	TABLE_FIELD_ID_VLAN_STRIP 0xf2
1190 /* enum: True to override the user mark field with the supplied USER_MARK, or
1191  * false to bitwise-OR the USER_MARK into it.
1192  */
1193 #define	TABLE_FIELD_ID_MARK_OVERRIDE 0xf3
1194 /* enum: True to override the user flag field with the supplied USER_FLAG, or
1195  * false to bitwise-OR the USER_FLAG into it.
1196  */
1197 #define	TABLE_FIELD_ID_FLAG_OVERRIDE 0xf4
1198 /* enum: RSS context ID, indexing the RSS_Context_Table. */
1199 #define	TABLE_FIELD_ID_RSS_CTX_ID 0xfa
1200 /* enum: True to enable RSS. */
1201 #define	TABLE_FIELD_ID_RSS_EN 0xfb
1202 /* enum: Toeplitz hash key. */
1203 #define	TABLE_FIELD_ID_KEY 0xfc
1204 /* enum: Key mode for IPv4 TCP packets - see TABLE_RSS_KEY_MODE enum. */
1205 #define	TABLE_FIELD_ID_TCP_V4_KEY_MODE 0xfd
1206 /* enum: Key mode for IPv6 TCP packets - see TABLE_RSS_KEY_MODE enum. */
1207 #define	TABLE_FIELD_ID_TCP_V6_KEY_MODE 0xfe
1208 /* enum: Key mode for IPv4 UDP packets - see TABLE_RSS_KEY_MODE enum. */
1209 #define	TABLE_FIELD_ID_UDP_V4_KEY_MODE 0xff
1210 /* enum: Key mode for IPv6 UDP packets - see TABLE_RSS_KEY_MODE enum. */
1211 #define	TABLE_FIELD_ID_UDP_V6_KEY_MODE 0x100
1212 /* enum: Key mode for other IPv4 packets - see TABLE_RSS_KEY_MODE enum. */
1213 #define	TABLE_FIELD_ID_OTHER_V4_KEY_MODE 0x101
1214 /* enum: Key mode for other IPv6 packets - see TABLE_RSS_KEY_MODE enum. */
1215 #define	TABLE_FIELD_ID_OTHER_V6_KEY_MODE 0x102
1216 /* enum: Spreading mode - 0=>indirection; 1=>even. */
1217 #define	TABLE_FIELD_ID_SPREAD_MODE 0x103
1218 /* enum: For indirection spreading mode, the base address of a region within
1219  * the Indirection_Table. For even spreading mode, the number of queues to
1220  * spread across (only values 1-255 are valid for this mode).
1221  */
1222 #define	TABLE_FIELD_ID_INDIR_TBL_BASE 0x104
1223 /* enum: For indirection spreading mode, identifies the length of a region
1224  * within the Indirection_Table, where length = 32 << len_id. Must be set to 0
1225  * for even spreading mode.
1226  */
1227 #define	TABLE_FIELD_ID_INDIR_TBL_LEN_ID 0x105
1228 /* enum: An offset to be applied to the base destination queue ID. */
1229 #define	TABLE_FIELD_ID_INDIR_OFFSET 0x106
1230 /* enum: DPU offload engine profile ID to address. */
1231 #define	TABLE_FIELD_ID_OE_PROFILE 0x3e8
1232 /* enum: Width of the CRC to calculate - see CRC_VARIANT enum. */
1233 #define	TABLE_FIELD_ID_CRC_VARIANT 0x3f2
1234 /* enum: If set, reflect the bits of each input byte, bit 7 is LSB, bit 0 is
1235  * MSB. If clear, bit 7 is MSB, bit 0 is LSB.
1236  */
1237 #define	TABLE_FIELD_ID_CRC_REFIN 0x3f3
1238 /* enum: If set, reflect the bits of each output byte, bit 7 is LSB, bit 0 is
1239  * MSB. If clear, bit 7 is MSB, bit 0 is LSB.
1240  */
1241 #define	TABLE_FIELD_ID_CRC_REFOUT 0x3f4
1242 /* enum: If set, invert every bit of the output value. */
1243 #define	TABLE_FIELD_ID_CRC_INVOUT 0x3f5
1244 /* enum: The CRC polynomial to use for checksumming, in normal form. See
1245  * https://en.wikipedia.org/wiki/Cyclic_redundancy_check#Specification for a
1246  * description of normal form.
1247  */
1248 #define	TABLE_FIELD_ID_CRC_POLY 0x3f6
1249 /* enum: Operation for the checksum engine to perform - see DPU_CSUM_OP enum.
1250  */
1251 #define	TABLE_FIELD_ID_CSUM_OP 0x410
1252 /* enum: Byte offset of checksum relative to region_start (for VALIDATE_*
1253  * operations only).
1254  */
1255 #define	TABLE_FIELD_ID_CSUM_OFFSET 0x411
1256 /* enum: Indicates there is additional data on OPR bus that needs to be
1257  * incorporated into the payload checksum.
1258  */
1259 #define	TABLE_FIELD_ID_CSUM_OPR_ADDITIONAL_DATA 0x412
1260 /* enum: Log2 data size of additional data on OPR bus. */
1261 #define	TABLE_FIELD_ID_CSUM_OPR_DATA_SIZE_LOG2 0x413
1262 /* enum: 4 byte offset of where to find the additional data on the OPR bus. */
1263 #define	TABLE_FIELD_ID_CSUM_OPR_4B_OFF 0x414
1264 /* enum: Operation type for the AES-GCM core - see GCM_OP_CODE enum. */
1265 #define	TABLE_FIELD_ID_GCM_OP_CODE 0x41a
1266 /* enum: Key length - AES_KEY_LEN enum. */
1267 #define	TABLE_FIELD_ID_GCM_KEY_LEN 0x41b
1268 /* enum: OPR 4 byte offset for ICV or GHASH output (only in BULK_* mode) or
1269  * IPSEC descrypt output.
1270  */
1271 #define	TABLE_FIELD_ID_GCM_OPR_4B_OFFSET 0x41c
1272 /* enum: If OP_CODE is BULK_*, indicates Emit GHASH (Fragment mode). Else,
1273  * indicates IPSEC-ESN mode.
1274  */
1275 #define	TABLE_FIELD_ID_GCM_EMIT_GHASH_ISESN 0x41d
1276 /* enum: Replay Protection Enable. */
1277 #define	TABLE_FIELD_ID_GCM_REPLAY_PROTECT_EN 0x41e
1278 /* enum: IPSEC Encrypt ESP trailer NEXT_HEADER byte. */
1279 #define	TABLE_FIELD_ID_GCM_NEXT_HDR 0x41f
1280 /* enum: Replay Window Size. */
1281 #define	TABLE_FIELD_ID_GCM_REPLAY_WIN_SIZE 0x420
1282 
1283 /* MCDI_EVENT structuredef: The structure of an MCDI_EVENT on Siena/EF10/EF100
1284  * platforms
1285  */
1286 #define	MCDI_EVENT_LEN 8
1287 #define	MCDI_EVENT_CONT_LBN 32
1288 #define	MCDI_EVENT_CONT_WIDTH 1
1289 #define	MCDI_EVENT_LEVEL_LBN 33
1290 #define	MCDI_EVENT_LEVEL_WIDTH 3
1291 /* enum: Info. */
1292 #define	MCDI_EVENT_LEVEL_INFO 0x0
1293 /* enum: Warning. */
1294 #define	MCDI_EVENT_LEVEL_WARN 0x1
1295 /* enum: Error. */
1296 #define	MCDI_EVENT_LEVEL_ERR 0x2
1297 /* enum: Fatal. */
1298 #define	MCDI_EVENT_LEVEL_FATAL 0x3
1299 #define	MCDI_EVENT_DATA_OFST 0
1300 #define	MCDI_EVENT_DATA_LEN 4
1301 #define	MCDI_EVENT_CMDDONE_SEQ_OFST 0
1302 #define	MCDI_EVENT_CMDDONE_SEQ_LBN 0
1303 #define	MCDI_EVENT_CMDDONE_SEQ_WIDTH 8
1304 #define	MCDI_EVENT_CMDDONE_DATALEN_OFST 0
1305 #define	MCDI_EVENT_CMDDONE_DATALEN_LBN 8
1306 #define	MCDI_EVENT_CMDDONE_DATALEN_WIDTH 8
1307 #define	MCDI_EVENT_CMDDONE_ERRNO_OFST 0
1308 #define	MCDI_EVENT_CMDDONE_ERRNO_LBN 16
1309 #define	MCDI_EVENT_CMDDONE_ERRNO_WIDTH 8
1310 #define	MCDI_EVENT_LINKCHANGE_LP_CAP_OFST 0
1311 #define	MCDI_EVENT_LINKCHANGE_LP_CAP_LBN 0
1312 #define	MCDI_EVENT_LINKCHANGE_LP_CAP_WIDTH 16
1313 #define	MCDI_EVENT_LINKCHANGE_SPEED_OFST 0
1314 #define	MCDI_EVENT_LINKCHANGE_SPEED_LBN 16
1315 #define	MCDI_EVENT_LINKCHANGE_SPEED_WIDTH 4
1316 /* enum: Link is down or link speed could not be determined */
1317 #define	MCDI_EVENT_LINKCHANGE_SPEED_UNKNOWN 0x0
1318 /* enum: 100Mbs */
1319 #define	MCDI_EVENT_LINKCHANGE_SPEED_100M 0x1
1320 /* enum: 1Gbs */
1321 #define	MCDI_EVENT_LINKCHANGE_SPEED_1G 0x2
1322 /* enum: 10Gbs */
1323 #define	MCDI_EVENT_LINKCHANGE_SPEED_10G 0x3
1324 /* enum: 40Gbs */
1325 #define	MCDI_EVENT_LINKCHANGE_SPEED_40G 0x4
1326 /* enum: 25Gbs */
1327 #define	MCDI_EVENT_LINKCHANGE_SPEED_25G 0x5
1328 /* enum: 50Gbs */
1329 #define	MCDI_EVENT_LINKCHANGE_SPEED_50G 0x6
1330 /* enum: 100Gbs */
1331 #define	MCDI_EVENT_LINKCHANGE_SPEED_100G 0x7
1332 #define	MCDI_EVENT_LINKCHANGE_FCNTL_OFST 0
1333 #define	MCDI_EVENT_LINKCHANGE_FCNTL_LBN 20
1334 #define	MCDI_EVENT_LINKCHANGE_FCNTL_WIDTH 4
1335 #define	MCDI_EVENT_LINKCHANGE_LINK_FLAGS_OFST 0
1336 #define	MCDI_EVENT_LINKCHANGE_LINK_FLAGS_LBN 24
1337 #define	MCDI_EVENT_LINKCHANGE_LINK_FLAGS_WIDTH 8
1338 #define	MCDI_EVENT_SENSOREVT_MONITOR_OFST 0
1339 #define	MCDI_EVENT_SENSOREVT_MONITOR_LBN 0
1340 #define	MCDI_EVENT_SENSOREVT_MONITOR_WIDTH 8
1341 #define	MCDI_EVENT_SENSOREVT_STATE_OFST 0
1342 #define	MCDI_EVENT_SENSOREVT_STATE_LBN 8
1343 #define	MCDI_EVENT_SENSOREVT_STATE_WIDTH 8
1344 #define	MCDI_EVENT_SENSOREVT_VALUE_OFST 0
1345 #define	MCDI_EVENT_SENSOREVT_VALUE_LBN 16
1346 #define	MCDI_EVENT_SENSOREVT_VALUE_WIDTH 16
1347 #define	MCDI_EVENT_FWALERT_DATA_OFST 0
1348 #define	MCDI_EVENT_FWALERT_DATA_LBN 8
1349 #define	MCDI_EVENT_FWALERT_DATA_WIDTH 24
1350 #define	MCDI_EVENT_FWALERT_REASON_OFST 0
1351 #define	MCDI_EVENT_FWALERT_REASON_LBN 0
1352 #define	MCDI_EVENT_FWALERT_REASON_WIDTH 8
1353 /* enum: SRAM Access. */
1354 #define	MCDI_EVENT_FWALERT_REASON_SRAM_ACCESS 0x1
1355 #define	MCDI_EVENT_FLR_VF_OFST 0
1356 #define	MCDI_EVENT_FLR_VF_LBN 0
1357 #define	MCDI_EVENT_FLR_VF_WIDTH 8
1358 #define	MCDI_EVENT_TX_ERR_TXQ_OFST 0
1359 #define	MCDI_EVENT_TX_ERR_TXQ_LBN 0
1360 #define	MCDI_EVENT_TX_ERR_TXQ_WIDTH 12
1361 #define	MCDI_EVENT_TX_ERR_TYPE_OFST 0
1362 #define	MCDI_EVENT_TX_ERR_TYPE_LBN 12
1363 #define	MCDI_EVENT_TX_ERR_TYPE_WIDTH 4
1364 /* enum: Descriptor loader reported failure. Specific to EF10-family NICs. */
1365 #define	MCDI_EVENT_TX_ERR_DL_FAIL 0x1
1366 /* enum: Descriptor ring empty and no EOP seen for packet. Specific to
1367  * EF10-family NICs
1368  */
1369 #define	MCDI_EVENT_TX_ERR_NO_EOP 0x2
1370 /* enum: Overlength packet. Specific to EF10-family NICs. */
1371 #define	MCDI_EVENT_TX_ERR_2BIG 0x3
1372 /* enum: Malformed option descriptor. Specific to EF10-family NICs. */
1373 #define	MCDI_EVENT_TX_BAD_OPTDESC 0x5
1374 /* enum: Option descriptor part way through a packet. Specific to EF10-family
1375  * NICs.
1376  */
1377 #define	MCDI_EVENT_TX_OPT_IN_PKT 0x8
1378 /* enum: DMA or PIO data access error. Specific to EF10-family NICs */
1379 #define	MCDI_EVENT_TX_ERR_BAD_DMA_OR_PIO 0x9
1380 #define	MCDI_EVENT_TX_ERR_INFO_OFST 0
1381 #define	MCDI_EVENT_TX_ERR_INFO_LBN 16
1382 #define	MCDI_EVENT_TX_ERR_INFO_WIDTH 16
1383 #define	MCDI_EVENT_TX_FLUSH_TO_DRIVER_OFST 0
1384 #define	MCDI_EVENT_TX_FLUSH_TO_DRIVER_LBN 12
1385 #define	MCDI_EVENT_TX_FLUSH_TO_DRIVER_WIDTH 1
1386 #define	MCDI_EVENT_TX_FLUSH_TXQ_OFST 0
1387 #define	MCDI_EVENT_TX_FLUSH_TXQ_LBN 0
1388 #define	MCDI_EVENT_TX_FLUSH_TXQ_WIDTH 12
1389 #define	MCDI_EVENT_PTP_ERR_TYPE_OFST 0
1390 #define	MCDI_EVENT_PTP_ERR_TYPE_LBN 0
1391 #define	MCDI_EVENT_PTP_ERR_TYPE_WIDTH 8
1392 /* enum: PLL lost lock */
1393 #define	MCDI_EVENT_PTP_ERR_PLL_LOST 0x1
1394 /* enum: Filter overflow (PDMA) */
1395 #define	MCDI_EVENT_PTP_ERR_FILTER 0x2
1396 /* enum: FIFO overflow (FPGA) */
1397 #define	MCDI_EVENT_PTP_ERR_FIFO 0x3
1398 /* enum: Merge queue overflow */
1399 #define	MCDI_EVENT_PTP_ERR_QUEUE 0x4
1400 #define	MCDI_EVENT_AOE_ERR_TYPE_OFST 0
1401 #define	MCDI_EVENT_AOE_ERR_TYPE_LBN 0
1402 #define	MCDI_EVENT_AOE_ERR_TYPE_WIDTH 8
1403 /* enum: AOE failed to load - no valid image? */
1404 #define	MCDI_EVENT_AOE_NO_LOAD 0x1
1405 /* enum: AOE FC reported an exception */
1406 #define	MCDI_EVENT_AOE_FC_ASSERT 0x2
1407 /* enum: AOE FC watchdogged */
1408 #define	MCDI_EVENT_AOE_FC_WATCHDOG 0x3
1409 /* enum: AOE FC failed to start */
1410 #define	MCDI_EVENT_AOE_FC_NO_START 0x4
1411 /* enum: Generic AOE fault - likely to have been reported via other means too
1412  * but intended for use by aoex driver.
1413  */
1414 #define	MCDI_EVENT_AOE_FAULT 0x5
1415 /* enum: Results of reprogramming the CPLD (status in AOE_ERR_DATA) */
1416 #define	MCDI_EVENT_AOE_CPLD_REPROGRAMMED 0x6
1417 /* enum: AOE loaded successfully */
1418 #define	MCDI_EVENT_AOE_LOAD 0x7
1419 /* enum: AOE DMA operation completed (LSB of HOST_HANDLE in AOE_ERR_DATA) */
1420 #define	MCDI_EVENT_AOE_DMA 0x8
1421 /* enum: AOE byteblaster connected/disconnected (Connection status in
1422  * AOE_ERR_DATA)
1423  */
1424 #define	MCDI_EVENT_AOE_BYTEBLASTER 0x9
1425 /* enum: DDR ECC status update */
1426 #define	MCDI_EVENT_AOE_DDR_ECC_STATUS 0xa
1427 /* enum: PTP status update */
1428 #define	MCDI_EVENT_AOE_PTP_STATUS 0xb
1429 /* enum: FPGA header incorrect */
1430 #define	MCDI_EVENT_AOE_FPGA_LOAD_HEADER_ERR 0xc
1431 /* enum: FPGA Powered Off due to error in powering up FPGA */
1432 #define	MCDI_EVENT_AOE_FPGA_POWER_OFF 0xd
1433 /* enum: AOE FPGA load failed due to MC to MUM communication failure */
1434 #define	MCDI_EVENT_AOE_FPGA_LOAD_FAILED 0xe
1435 /* enum: Notify that invalid flash type detected */
1436 #define	MCDI_EVENT_AOE_INVALID_FPGA_FLASH_TYPE 0xf
1437 /* enum: Notify that the attempt to run FPGA Controller firmware timed out */
1438 #define	MCDI_EVENT_AOE_FC_RUN_TIMEDOUT 0x10
1439 /* enum: Failure to probe one or more FPGA boot flash chips */
1440 #define	MCDI_EVENT_AOE_FPGA_BOOT_FLASH_INVALID 0x11
1441 /* enum: FPGA boot-flash contains an invalid image header */
1442 #define	MCDI_EVENT_AOE_FPGA_BOOT_FLASH_HDR_INVALID 0x12
1443 /* enum: Failed to program clocks required by the FPGA */
1444 #define	MCDI_EVENT_AOE_FPGA_CLOCKS_PROGRAM_FAILED 0x13
1445 /* enum: Notify that FPGA Controller is alive to serve MCDI requests */
1446 #define	MCDI_EVENT_AOE_FC_RUNNING 0x14
1447 #define	MCDI_EVENT_AOE_ERR_DATA_OFST 0
1448 #define	MCDI_EVENT_AOE_ERR_DATA_LBN 8
1449 #define	MCDI_EVENT_AOE_ERR_DATA_WIDTH 8
1450 #define	MCDI_EVENT_AOE_ERR_FC_ASSERT_INFO_OFST 0
1451 #define	MCDI_EVENT_AOE_ERR_FC_ASSERT_INFO_LBN 8
1452 #define	MCDI_EVENT_AOE_ERR_FC_ASSERT_INFO_WIDTH 8
1453 /* enum: FC Assert happened, but the register information is not available */
1454 #define	MCDI_EVENT_AOE_ERR_FC_ASSERT_SEEN 0x0
1455 /* enum: The register information for FC Assert is ready for reading by driver
1456  */
1457 #define	MCDI_EVENT_AOE_ERR_FC_ASSERT_DATA_READY 0x1
1458 #define	MCDI_EVENT_AOE_ERR_CODE_FPGA_HEADER_VERIFY_FAILED_OFST 0
1459 #define	MCDI_EVENT_AOE_ERR_CODE_FPGA_HEADER_VERIFY_FAILED_LBN 8
1460 #define	MCDI_EVENT_AOE_ERR_CODE_FPGA_HEADER_VERIFY_FAILED_WIDTH 8
1461 /* enum: Reading from NV failed */
1462 #define	MCDI_EVENT_AOE_ERR_FPGA_HEADER_NV_READ_FAIL 0x0
1463 /* enum: Invalid Magic Number if FPGA header */
1464 #define	MCDI_EVENT_AOE_ERR_FPGA_HEADER_MAGIC_FAIL 0x1
1465 /* enum: Invalid Silicon type detected in header */
1466 #define	MCDI_EVENT_AOE_ERR_FPGA_HEADER_SILICON_TYPE 0x2
1467 /* enum: Unsupported VRatio */
1468 #define	MCDI_EVENT_AOE_ERR_FPGA_HEADER_VRATIO 0x3
1469 /* enum: Unsupported DDR Type */
1470 #define	MCDI_EVENT_AOE_ERR_FPGA_HEADER_DDR_TYPE 0x4
1471 /* enum: DDR Voltage out of supported range */
1472 #define	MCDI_EVENT_AOE_ERR_FPGA_HEADER_DDR_VOLTAGE 0x5
1473 /* enum: Unsupported DDR speed */
1474 #define	MCDI_EVENT_AOE_ERR_FPGA_HEADER_DDR_SPEED 0x6
1475 /* enum: Unsupported DDR size */
1476 #define	MCDI_EVENT_AOE_ERR_FPGA_HEADER_DDR_SIZE 0x7
1477 /* enum: Unsupported DDR rank */
1478 #define	MCDI_EVENT_AOE_ERR_FPGA_HEADER_DDR_RANK 0x8
1479 #define	MCDI_EVENT_AOE_ERR_CODE_INVALID_FPGA_FLASH_TYPE_INFO_OFST 0
1480 #define	MCDI_EVENT_AOE_ERR_CODE_INVALID_FPGA_FLASH_TYPE_INFO_LBN 8
1481 #define	MCDI_EVENT_AOE_ERR_CODE_INVALID_FPGA_FLASH_TYPE_INFO_WIDTH 8
1482 /* enum: Primary boot flash */
1483 #define	MCDI_EVENT_AOE_FLASH_TYPE_BOOT_PRIMARY 0x0
1484 /* enum: Secondary boot flash */
1485 #define	MCDI_EVENT_AOE_FLASH_TYPE_BOOT_SECONDARY 0x1
1486 #define	MCDI_EVENT_AOE_ERR_CODE_FPGA_POWER_OFF_OFST 0
1487 #define	MCDI_EVENT_AOE_ERR_CODE_FPGA_POWER_OFF_LBN 8
1488 #define	MCDI_EVENT_AOE_ERR_CODE_FPGA_POWER_OFF_WIDTH 8
1489 #define	MCDI_EVENT_AOE_ERR_CODE_FPGA_LOAD_FAILED_OFST 0
1490 #define	MCDI_EVENT_AOE_ERR_CODE_FPGA_LOAD_FAILED_LBN 8
1491 #define	MCDI_EVENT_AOE_ERR_CODE_FPGA_LOAD_FAILED_WIDTH 8
1492 #define	MCDI_EVENT_RX_ERR_RXQ_OFST 0
1493 #define	MCDI_EVENT_RX_ERR_RXQ_LBN 0
1494 #define	MCDI_EVENT_RX_ERR_RXQ_WIDTH 12
1495 #define	MCDI_EVENT_RX_ERR_TYPE_OFST 0
1496 #define	MCDI_EVENT_RX_ERR_TYPE_LBN 12
1497 #define	MCDI_EVENT_RX_ERR_TYPE_WIDTH 4
1498 #define	MCDI_EVENT_RX_ERR_INFO_OFST 0
1499 #define	MCDI_EVENT_RX_ERR_INFO_LBN 16
1500 #define	MCDI_EVENT_RX_ERR_INFO_WIDTH 16
1501 #define	MCDI_EVENT_RX_FLUSH_TO_DRIVER_OFST 0
1502 #define	MCDI_EVENT_RX_FLUSH_TO_DRIVER_LBN 12
1503 #define	MCDI_EVENT_RX_FLUSH_TO_DRIVER_WIDTH 1
1504 #define	MCDI_EVENT_RX_FLUSH_RXQ_OFST 0
1505 #define	MCDI_EVENT_RX_FLUSH_RXQ_LBN 0
1506 #define	MCDI_EVENT_RX_FLUSH_RXQ_WIDTH 12
1507 #define	MCDI_EVENT_MC_REBOOT_COUNT_OFST 0
1508 #define	MCDI_EVENT_MC_REBOOT_COUNT_LBN 0
1509 #define	MCDI_EVENT_MC_REBOOT_COUNT_WIDTH 16
1510 #define	MCDI_EVENT_MUM_ERR_TYPE_OFST 0
1511 #define	MCDI_EVENT_MUM_ERR_TYPE_LBN 0
1512 #define	MCDI_EVENT_MUM_ERR_TYPE_WIDTH 8
1513 /* enum: MUM failed to load - no valid image? */
1514 #define	MCDI_EVENT_MUM_NO_LOAD 0x1
1515 /* enum: MUM f/w reported an exception */
1516 #define	MCDI_EVENT_MUM_ASSERT 0x2
1517 /* enum: MUM not kicking watchdog */
1518 #define	MCDI_EVENT_MUM_WATCHDOG 0x3
1519 #define	MCDI_EVENT_MUM_ERR_DATA_OFST 0
1520 #define	MCDI_EVENT_MUM_ERR_DATA_LBN 8
1521 #define	MCDI_EVENT_MUM_ERR_DATA_WIDTH 8
1522 #define	MCDI_EVENT_DBRET_SEQ_OFST 0
1523 #define	MCDI_EVENT_DBRET_SEQ_LBN 0
1524 #define	MCDI_EVENT_DBRET_SEQ_WIDTH 8
1525 #define	MCDI_EVENT_SUC_ERR_TYPE_OFST 0
1526 #define	MCDI_EVENT_SUC_ERR_TYPE_LBN 0
1527 #define	MCDI_EVENT_SUC_ERR_TYPE_WIDTH 8
1528 /* enum: Corrupted or bad SUC application. */
1529 #define	MCDI_EVENT_SUC_BAD_APP 0x1
1530 /* enum: SUC application reported an assert. */
1531 #define	MCDI_EVENT_SUC_ASSERT 0x2
1532 /* enum: SUC application reported an exception. */
1533 #define	MCDI_EVENT_SUC_EXCEPTION 0x3
1534 /* enum: SUC watchdog timer expired. */
1535 #define	MCDI_EVENT_SUC_WATCHDOG 0x4
1536 #define	MCDI_EVENT_SUC_ERR_ADDRESS_OFST 0
1537 #define	MCDI_EVENT_SUC_ERR_ADDRESS_LBN 8
1538 #define	MCDI_EVENT_SUC_ERR_ADDRESS_WIDTH 24
1539 #define	MCDI_EVENT_SUC_ERR_DATA_OFST 0
1540 #define	MCDI_EVENT_SUC_ERR_DATA_LBN 8
1541 #define	MCDI_EVENT_SUC_ERR_DATA_WIDTH 24
1542 #define	MCDI_EVENT_LINKCHANGE_V2_LP_CAP_OFST 0
1543 #define	MCDI_EVENT_LINKCHANGE_V2_LP_CAP_LBN 0
1544 #define	MCDI_EVENT_LINKCHANGE_V2_LP_CAP_WIDTH 24
1545 #define	MCDI_EVENT_LINKCHANGE_V2_SPEED_OFST 0
1546 #define	MCDI_EVENT_LINKCHANGE_V2_SPEED_LBN 24
1547 #define	MCDI_EVENT_LINKCHANGE_V2_SPEED_WIDTH 4
1548 /*             Enum values, see field(s): */
1549 /*                MCDI_EVENT/LINKCHANGE_SPEED */
1550 #define	MCDI_EVENT_LINKCHANGE_V2_FLAGS_LINK_UP_OFST 0
1551 #define	MCDI_EVENT_LINKCHANGE_V2_FLAGS_LINK_UP_LBN 28
1552 #define	MCDI_EVENT_LINKCHANGE_V2_FLAGS_LINK_UP_WIDTH 1
1553 #define	MCDI_EVENT_LINKCHANGE_V2_FCNTL_OFST 0
1554 #define	MCDI_EVENT_LINKCHANGE_V2_FCNTL_LBN 29
1555 #define	MCDI_EVENT_LINKCHANGE_V2_FCNTL_WIDTH 3
1556 /*             Enum values, see field(s): */
1557 /*                MC_CMD_SET_MAC/MC_CMD_SET_MAC_IN/FCNTL */
1558 #define	MCDI_EVENT_MODULECHANGE_LD_CAP_OFST 0
1559 #define	MCDI_EVENT_MODULECHANGE_LD_CAP_LBN 0
1560 #define	MCDI_EVENT_MODULECHANGE_LD_CAP_WIDTH 30
1561 #define	MCDI_EVENT_MODULECHANGE_SEQ_OFST 0
1562 #define	MCDI_EVENT_MODULECHANGE_SEQ_LBN 30
1563 #define	MCDI_EVENT_MODULECHANGE_SEQ_WIDTH 2
1564 #define	MCDI_EVENT_DESC_PROXY_VIRTQ_VI_ID_OFST 0
1565 #define	MCDI_EVENT_DESC_PROXY_VIRTQ_VI_ID_LBN 0
1566 #define	MCDI_EVENT_DESC_PROXY_VIRTQ_VI_ID_WIDTH 16
1567 #define	MCDI_EVENT_DESC_PROXY_VIRTQ_ID_OFST 0
1568 #define	MCDI_EVENT_DESC_PROXY_VIRTQ_ID_LBN 16
1569 #define	MCDI_EVENT_DESC_PROXY_VIRTQ_ID_WIDTH 16
1570 #define	MCDI_EVENT_DATA_LBN 0
1571 #define	MCDI_EVENT_DATA_WIDTH 32
1572 /* Alias for PTP_DATA. */
1573 #define	MCDI_EVENT_SRC_LBN 36
1574 #define	MCDI_EVENT_SRC_WIDTH 8
1575 /* Data associated with PTP events which doesn't fit into the main DATA field
1576  */
1577 #define	MCDI_EVENT_PTP_DATA_LBN 36
1578 #define	MCDI_EVENT_PTP_DATA_WIDTH 8
1579 /* EF100 specific. Defined by QDMA. The phase bit, changes each time round the
1580  * event ring
1581  */
1582 #define	MCDI_EVENT_EV_EVQ_PHASE_LBN 59
1583 #define	MCDI_EVENT_EV_EVQ_PHASE_WIDTH 1
1584 #define	MCDI_EVENT_EV_CODE_LBN 60
1585 #define	MCDI_EVENT_EV_CODE_WIDTH 4
1586 #define	MCDI_EVENT_CODE_LBN 44
1587 #define	MCDI_EVENT_CODE_WIDTH 8
1588 /* enum: Event generated by host software */
1589 #define	MCDI_EVENT_SW_EVENT 0x0
1590 /* enum: Bad assert. */
1591 #define	MCDI_EVENT_CODE_BADSSERT 0x1
1592 /* enum: PM Notice. */
1593 #define	MCDI_EVENT_CODE_PMNOTICE 0x2
1594 /* enum: Command done. */
1595 #define	MCDI_EVENT_CODE_CMDDONE 0x3
1596 /* enum: Link change. */
1597 #define	MCDI_EVENT_CODE_LINKCHANGE 0x4
1598 /* enum: Sensor Event. */
1599 #define	MCDI_EVENT_CODE_SENSOREVT 0x5
1600 /* enum: Schedule error. */
1601 #define	MCDI_EVENT_CODE_SCHEDERR 0x6
1602 /* enum: Reboot. */
1603 #define	MCDI_EVENT_CODE_REBOOT 0x7
1604 /* enum: Mac stats DMA. */
1605 #define	MCDI_EVENT_CODE_MAC_STATS_DMA 0x8
1606 /* enum: Firmware alert. */
1607 #define	MCDI_EVENT_CODE_FWALERT 0x9
1608 /* enum: Function level reset. */
1609 #define	MCDI_EVENT_CODE_FLR 0xa
1610 /* enum: Transmit error */
1611 #define	MCDI_EVENT_CODE_TX_ERR 0xb
1612 /* enum: Tx flush has completed */
1613 #define	MCDI_EVENT_CODE_TX_FLUSH 0xc
1614 /* enum: PTP packet received timestamp */
1615 #define	MCDI_EVENT_CODE_PTP_RX 0xd
1616 /* enum: PTP NIC failure */
1617 #define	MCDI_EVENT_CODE_PTP_FAULT 0xe
1618 /* enum: PTP PPS event */
1619 #define	MCDI_EVENT_CODE_PTP_PPS 0xf
1620 /* enum: Rx flush has completed */
1621 #define	MCDI_EVENT_CODE_RX_FLUSH 0x10
1622 /* enum: Receive error */
1623 #define	MCDI_EVENT_CODE_RX_ERR 0x11
1624 /* enum: AOE fault */
1625 #define	MCDI_EVENT_CODE_AOE 0x12
1626 /* enum: Network port calibration failed (VCAL). */
1627 #define	MCDI_EVENT_CODE_VCAL_FAIL 0x13
1628 /* enum: HW PPS event */
1629 #define	MCDI_EVENT_CODE_HW_PPS 0x14
1630 /* enum: The MC has rebooted (huntington and later, siena uses CODE_REBOOT and
1631  * a different format)
1632  */
1633 #define	MCDI_EVENT_CODE_MC_REBOOT 0x15
1634 /* enum: the MC has detected a parity error */
1635 #define	MCDI_EVENT_CODE_PAR_ERR 0x16
1636 /* enum: the MC has detected a correctable error */
1637 #define	MCDI_EVENT_CODE_ECC_CORR_ERR 0x17
1638 /* enum: the MC has detected an uncorrectable error */
1639 #define	MCDI_EVENT_CODE_ECC_FATAL_ERR 0x18
1640 /* enum: The MC has entered offline BIST mode */
1641 #define	MCDI_EVENT_CODE_MC_BIST 0x19
1642 /* enum: PTP tick event providing current NIC time */
1643 #define	MCDI_EVENT_CODE_PTP_TIME 0x1a
1644 /* enum: MUM fault */
1645 #define	MCDI_EVENT_CODE_MUM 0x1b
1646 /* enum: notify the designated PF of a new authorization request */
1647 #define	MCDI_EVENT_CODE_PROXY_REQUEST 0x1c
1648 /* enum: notify a function that awaits an authorization that its request has
1649  * been processed and it may now resend the command
1650  */
1651 #define	MCDI_EVENT_CODE_PROXY_RESPONSE 0x1d
1652 /* enum: MCDI command accepted. New commands can be issued but this command is
1653  * not done yet.
1654  */
1655 #define	MCDI_EVENT_CODE_DBRET 0x1e
1656 /* enum: The MC has detected a fault on the SUC */
1657 #define	MCDI_EVENT_CODE_SUC 0x1f
1658 /* enum: Link change. This event is sent instead of LINKCHANGE if
1659  * WANT_V2_LINKCHANGES was set on driver attach.
1660  */
1661 #define	MCDI_EVENT_CODE_LINKCHANGE_V2 0x20
1662 /* enum: This event is sent if WANT_V2_LINKCHANGES was set on driver attach
1663  * when the local device capabilities changes. This will usually correspond to
1664  * a module change.
1665  */
1666 #define	MCDI_EVENT_CODE_MODULECHANGE 0x21
1667 /* enum: Notification that the sensors have been added and/or removed from the
1668  * sensor table. This event includes the new sensor table generation count, if
1669  * this does not match the driver's local copy it is expected to call
1670  * DYNAMIC_SENSORS_LIST to refresh it.
1671  */
1672 #define	MCDI_EVENT_CODE_DYNAMIC_SENSORS_CHANGE 0x22
1673 /* enum: Notification that a sensor has changed state as a result of a reading
1674  * crossing a threshold. This is sent as two events, the first event contains
1675  * the handle and the sensor's state (in the SRC field), and the second
1676  * contains the value.
1677  */
1678 #define	MCDI_EVENT_CODE_DYNAMIC_SENSORS_STATE_CHANGE 0x23
1679 /* enum: Notification that a descriptor proxy function configuration has been
1680  * pushed to "live" status (visible to host). SRC field contains the handle of
1681  * the affected descriptor proxy function. DATA field contains the generation
1682  * count of configuration set applied. See MC_CMD_DESC_PROXY_FUNC_CONFIG_SET /
1683  * MC_CMD_DESC_PROXY_FUNC_CONFIG_COMMIT and SF-122927-TC for details.
1684  */
1685 #define	MCDI_EVENT_CODE_DESC_PROXY_FUNC_CONFIG_COMMITTED 0x24
1686 /* enum: Notification that a descriptor proxy function has been reset. SRC
1687  * field contains the handle of the affected descriptor proxy function. See
1688  * SF-122927-TC for details.
1689  */
1690 #define	MCDI_EVENT_CODE_DESC_PROXY_FUNC_RESET 0x25
1691 /* enum: Notification that a driver attached to a descriptor proxy function.
1692  * SRC field contains the handle of the affected descriptor proxy function. For
1693  * Virtio proxy functions this message consists of two MCDI events, where the
1694  * first event's (CONT=1) DATA field carries negotiated virtio feature bits 0
1695  * to 31 and the second (CONT=0) carries bits 32 to 63. For EF100 proxy
1696  * functions event length and meaning of DATA field is not yet defined. See
1697  * SF-122927-TC for details.
1698  */
1699 #define	MCDI_EVENT_CODE_DESC_PROXY_FUNC_DRIVER_ATTACH 0x26
1700 /* enum: Notification that the mport journal has changed since it was last read
1701  * and updates can be read using the MC_CMD_MAE_MPORT_READ_JOURNAL command. The
1702  * firmware may moderate the events so that an event is not sent for every
1703  * change to the journal.
1704  */
1705 #define	MCDI_EVENT_CODE_MPORT_JOURNAL_CHANGE 0x27
1706 /* enum: Notification that a source queue is enabled and attached to its proxy
1707  * sink queue. SRC field contains the handle of the affected descriptor proxy
1708  * function. DATA field contains the relative source queue number and absolute
1709  * VI ID.
1710  */
1711 #define	MCDI_EVENT_CODE_DESC_PROXY_FUNC_QUEUE_START 0x28
1712 /* enum: Artificial event generated by host and posted via MC for test
1713  * purposes.
1714  */
1715 #define	MCDI_EVENT_CODE_TESTGEN 0xfa
1716 #define	MCDI_EVENT_CMDDONE_DATA_OFST 0
1717 #define	MCDI_EVENT_CMDDONE_DATA_LEN 4
1718 #define	MCDI_EVENT_CMDDONE_DATA_LBN 0
1719 #define	MCDI_EVENT_CMDDONE_DATA_WIDTH 32
1720 #define	MCDI_EVENT_LINKCHANGE_DATA_OFST 0
1721 #define	MCDI_EVENT_LINKCHANGE_DATA_LEN 4
1722 #define	MCDI_EVENT_LINKCHANGE_DATA_LBN 0
1723 #define	MCDI_EVENT_LINKCHANGE_DATA_WIDTH 32
1724 #define	MCDI_EVENT_SENSOREVT_DATA_OFST 0
1725 #define	MCDI_EVENT_SENSOREVT_DATA_LEN 4
1726 #define	MCDI_EVENT_SENSOREVT_DATA_LBN 0
1727 #define	MCDI_EVENT_SENSOREVT_DATA_WIDTH 32
1728 #define	MCDI_EVENT_MAC_STATS_DMA_GENERATION_OFST 0
1729 #define	MCDI_EVENT_MAC_STATS_DMA_GENERATION_LEN 4
1730 #define	MCDI_EVENT_MAC_STATS_DMA_GENERATION_LBN 0
1731 #define	MCDI_EVENT_MAC_STATS_DMA_GENERATION_WIDTH 32
1732 #define	MCDI_EVENT_TX_ERR_DATA_OFST 0
1733 #define	MCDI_EVENT_TX_ERR_DATA_LEN 4
1734 #define	MCDI_EVENT_TX_ERR_DATA_LBN 0
1735 #define	MCDI_EVENT_TX_ERR_DATA_WIDTH 32
1736 /* For CODE_PTP_RX, CODE_PTP_PPS and CODE_HW_PPS events the seconds field of
1737  * timestamp
1738  */
1739 #define	MCDI_EVENT_PTP_SECONDS_OFST 0
1740 #define	MCDI_EVENT_PTP_SECONDS_LEN 4
1741 #define	MCDI_EVENT_PTP_SECONDS_LBN 0
1742 #define	MCDI_EVENT_PTP_SECONDS_WIDTH 32
1743 /* For CODE_PTP_RX, CODE_PTP_PPS and CODE_HW_PPS events the major field of
1744  * timestamp
1745  */
1746 #define	MCDI_EVENT_PTP_MAJOR_OFST 0
1747 #define	MCDI_EVENT_PTP_MAJOR_LEN 4
1748 #define	MCDI_EVENT_PTP_MAJOR_LBN 0
1749 #define	MCDI_EVENT_PTP_MAJOR_WIDTH 32
1750 /* For CODE_PTP_RX, CODE_PTP_PPS and CODE_HW_PPS events the nanoseconds field
1751  * of timestamp
1752  */
1753 #define	MCDI_EVENT_PTP_NANOSECONDS_OFST 0
1754 #define	MCDI_EVENT_PTP_NANOSECONDS_LEN 4
1755 #define	MCDI_EVENT_PTP_NANOSECONDS_LBN 0
1756 #define	MCDI_EVENT_PTP_NANOSECONDS_WIDTH 32
1757 /* For CODE_PTP_RX, CODE_PTP_PPS and CODE_HW_PPS events the minor field of
1758  * timestamp
1759  */
1760 #define	MCDI_EVENT_PTP_MINOR_OFST 0
1761 #define	MCDI_EVENT_PTP_MINOR_LEN 4
1762 #define	MCDI_EVENT_PTP_MINOR_LBN 0
1763 #define	MCDI_EVENT_PTP_MINOR_WIDTH 32
1764 /* For CODE_PTP_RX events, the lowest four bytes of sourceUUID from PTP packet
1765  */
1766 #define	MCDI_EVENT_PTP_UUID_OFST 0
1767 #define	MCDI_EVENT_PTP_UUID_LEN 4
1768 #define	MCDI_EVENT_PTP_UUID_LBN 0
1769 #define	MCDI_EVENT_PTP_UUID_WIDTH 32
1770 #define	MCDI_EVENT_RX_ERR_DATA_OFST 0
1771 #define	MCDI_EVENT_RX_ERR_DATA_LEN 4
1772 #define	MCDI_EVENT_RX_ERR_DATA_LBN 0
1773 #define	MCDI_EVENT_RX_ERR_DATA_WIDTH 32
1774 #define	MCDI_EVENT_PAR_ERR_DATA_OFST 0
1775 #define	MCDI_EVENT_PAR_ERR_DATA_LEN 4
1776 #define	MCDI_EVENT_PAR_ERR_DATA_LBN 0
1777 #define	MCDI_EVENT_PAR_ERR_DATA_WIDTH 32
1778 #define	MCDI_EVENT_ECC_CORR_ERR_DATA_OFST 0
1779 #define	MCDI_EVENT_ECC_CORR_ERR_DATA_LEN 4
1780 #define	MCDI_EVENT_ECC_CORR_ERR_DATA_LBN 0
1781 #define	MCDI_EVENT_ECC_CORR_ERR_DATA_WIDTH 32
1782 #define	MCDI_EVENT_ECC_FATAL_ERR_DATA_OFST 0
1783 #define	MCDI_EVENT_ECC_FATAL_ERR_DATA_LEN 4
1784 #define	MCDI_EVENT_ECC_FATAL_ERR_DATA_LBN 0
1785 #define	MCDI_EVENT_ECC_FATAL_ERR_DATA_WIDTH 32
1786 /* For CODE_PTP_TIME events, the major value of the PTP clock */
1787 #define	MCDI_EVENT_PTP_TIME_MAJOR_OFST 0
1788 #define	MCDI_EVENT_PTP_TIME_MAJOR_LEN 4
1789 #define	MCDI_EVENT_PTP_TIME_MAJOR_LBN 0
1790 #define	MCDI_EVENT_PTP_TIME_MAJOR_WIDTH 32
1791 /* For CODE_PTP_TIME events, bits 19-26 of the minor value of the PTP clock */
1792 #define	MCDI_EVENT_PTP_TIME_MINOR_26_19_LBN 36
1793 #define	MCDI_EVENT_PTP_TIME_MINOR_26_19_WIDTH 8
1794 /* For CODE_PTP_TIME events, most significant bits of the minor value of the
1795  * PTP clock. This is a more generic equivalent of PTP_TIME_MINOR_26_19.
1796  */
1797 #define	MCDI_EVENT_PTP_TIME_MINOR_MS_8BITS_LBN 36
1798 #define	MCDI_EVENT_PTP_TIME_MINOR_MS_8BITS_WIDTH 8
1799 /* For CODE_PTP_TIME events where report sync status is enabled, indicates
1800  * whether the NIC clock has ever been set
1801  */
1802 #define	MCDI_EVENT_PTP_TIME_NIC_CLOCK_VALID_LBN 36
1803 #define	MCDI_EVENT_PTP_TIME_NIC_CLOCK_VALID_WIDTH 1
1804 /* For CODE_PTP_TIME events where report sync status is enabled, indicates
1805  * whether the NIC and System clocks are in sync
1806  */
1807 #define	MCDI_EVENT_PTP_TIME_HOST_NIC_IN_SYNC_LBN 37
1808 #define	MCDI_EVENT_PTP_TIME_HOST_NIC_IN_SYNC_WIDTH 1
1809 /* For CODE_PTP_TIME events where report sync status is enabled, bits 21-26 of
1810  * the minor value of the PTP clock
1811  */
1812 #define	MCDI_EVENT_PTP_TIME_MINOR_26_21_LBN 38
1813 #define	MCDI_EVENT_PTP_TIME_MINOR_26_21_WIDTH 6
1814 /* For CODE_PTP_TIME events, most significant bits of the minor value of the
1815  * PTP clock. This is a more generic equivalent of PTP_TIME_MINOR_26_21.
1816  */
1817 #define	MCDI_EVENT_PTP_TIME_MINOR_MS_6BITS_LBN 38
1818 #define	MCDI_EVENT_PTP_TIME_MINOR_MS_6BITS_WIDTH 6
1819 #define	MCDI_EVENT_PROXY_REQUEST_BUFF_INDEX_OFST 0
1820 #define	MCDI_EVENT_PROXY_REQUEST_BUFF_INDEX_LEN 4
1821 #define	MCDI_EVENT_PROXY_REQUEST_BUFF_INDEX_LBN 0
1822 #define	MCDI_EVENT_PROXY_REQUEST_BUFF_INDEX_WIDTH 32
1823 #define	MCDI_EVENT_PROXY_RESPONSE_HANDLE_OFST 0
1824 #define	MCDI_EVENT_PROXY_RESPONSE_HANDLE_LEN 4
1825 #define	MCDI_EVENT_PROXY_RESPONSE_HANDLE_LBN 0
1826 #define	MCDI_EVENT_PROXY_RESPONSE_HANDLE_WIDTH 32
1827 /* Zero means that the request has been completed or authorized, and the driver
1828  * should resend it. A non-zero value means that the authorization has been
1829  * denied, and gives the reason. Typically it will be EPERM.
1830  */
1831 #define	MCDI_EVENT_PROXY_RESPONSE_RC_LBN 36
1832 #define	MCDI_EVENT_PROXY_RESPONSE_RC_WIDTH 8
1833 #define	MCDI_EVENT_DBRET_DATA_OFST 0
1834 #define	MCDI_EVENT_DBRET_DATA_LEN 4
1835 #define	MCDI_EVENT_DBRET_DATA_LBN 0
1836 #define	MCDI_EVENT_DBRET_DATA_WIDTH 32
1837 #define	MCDI_EVENT_LINKCHANGE_V2_DATA_OFST 0
1838 #define	MCDI_EVENT_LINKCHANGE_V2_DATA_LEN 4
1839 #define	MCDI_EVENT_LINKCHANGE_V2_DATA_LBN 0
1840 #define	MCDI_EVENT_LINKCHANGE_V2_DATA_WIDTH 32
1841 #define	MCDI_EVENT_MODULECHANGE_DATA_OFST 0
1842 #define	MCDI_EVENT_MODULECHANGE_DATA_LEN 4
1843 #define	MCDI_EVENT_MODULECHANGE_DATA_LBN 0
1844 #define	MCDI_EVENT_MODULECHANGE_DATA_WIDTH 32
1845 /* The new generation count after a sensor has been added or deleted. */
1846 #define	MCDI_EVENT_DYNAMIC_SENSORS_GENERATION_OFST 0
1847 #define	MCDI_EVENT_DYNAMIC_SENSORS_GENERATION_LEN 4
1848 #define	MCDI_EVENT_DYNAMIC_SENSORS_GENERATION_LBN 0
1849 #define	MCDI_EVENT_DYNAMIC_SENSORS_GENERATION_WIDTH 32
1850 /* The handle of a dynamic sensor. */
1851 #define	MCDI_EVENT_DYNAMIC_SENSORS_HANDLE_OFST 0
1852 #define	MCDI_EVENT_DYNAMIC_SENSORS_HANDLE_LEN 4
1853 #define	MCDI_EVENT_DYNAMIC_SENSORS_HANDLE_LBN 0
1854 #define	MCDI_EVENT_DYNAMIC_SENSORS_HANDLE_WIDTH 32
1855 /* The current values of a sensor. */
1856 #define	MCDI_EVENT_DYNAMIC_SENSORS_VALUE_OFST 0
1857 #define	MCDI_EVENT_DYNAMIC_SENSORS_VALUE_LEN 4
1858 #define	MCDI_EVENT_DYNAMIC_SENSORS_VALUE_LBN 0
1859 #define	MCDI_EVENT_DYNAMIC_SENSORS_VALUE_WIDTH 32
1860 /* The current state of a sensor. */
1861 #define	MCDI_EVENT_DYNAMIC_SENSORS_STATE_LBN 36
1862 #define	MCDI_EVENT_DYNAMIC_SENSORS_STATE_WIDTH 8
1863 #define	MCDI_EVENT_DESC_PROXY_DATA_OFST 0
1864 #define	MCDI_EVENT_DESC_PROXY_DATA_LEN 4
1865 #define	MCDI_EVENT_DESC_PROXY_DATA_LBN 0
1866 #define	MCDI_EVENT_DESC_PROXY_DATA_WIDTH 32
1867 /* Generation count of applied configuration set */
1868 #define	MCDI_EVENT_DESC_PROXY_GENERATION_OFST 0
1869 #define	MCDI_EVENT_DESC_PROXY_GENERATION_LEN 4
1870 #define	MCDI_EVENT_DESC_PROXY_GENERATION_LBN 0
1871 #define	MCDI_EVENT_DESC_PROXY_GENERATION_WIDTH 32
1872 /* Virtio features negotiated with the host driver. First event (CONT=1)
1873  * carries bits 0 to 31. Second event (CONT=0) carries bits 32 to 63.
1874  */
1875 #define	MCDI_EVENT_DESC_PROXY_VIRTIO_FEATURES_OFST 0
1876 #define	MCDI_EVENT_DESC_PROXY_VIRTIO_FEATURES_LEN 4
1877 #define	MCDI_EVENT_DESC_PROXY_VIRTIO_FEATURES_LBN 0
1878 #define	MCDI_EVENT_DESC_PROXY_VIRTIO_FEATURES_WIDTH 32
1879 
1880 /* FCDI_EVENT structuredef */
1881 #define	FCDI_EVENT_LEN 8
1882 #define	FCDI_EVENT_CONT_LBN 32
1883 #define	FCDI_EVENT_CONT_WIDTH 1
1884 #define	FCDI_EVENT_LEVEL_LBN 33
1885 #define	FCDI_EVENT_LEVEL_WIDTH 3
1886 /* enum: Info. */
1887 #define	FCDI_EVENT_LEVEL_INFO 0x0
1888 /* enum: Warning. */
1889 #define	FCDI_EVENT_LEVEL_WARN 0x1
1890 /* enum: Error. */
1891 #define	FCDI_EVENT_LEVEL_ERR 0x2
1892 /* enum: Fatal. */
1893 #define	FCDI_EVENT_LEVEL_FATAL 0x3
1894 #define	FCDI_EVENT_DATA_OFST 0
1895 #define	FCDI_EVENT_DATA_LEN 4
1896 #define	FCDI_EVENT_LINK_STATE_STATUS_OFST 0
1897 #define	FCDI_EVENT_LINK_STATE_STATUS_LBN 0
1898 #define	FCDI_EVENT_LINK_STATE_STATUS_WIDTH 1
1899 #define	FCDI_EVENT_LINK_DOWN 0x0 /* enum */
1900 #define	FCDI_EVENT_LINK_UP 0x1 /* enum */
1901 #define	FCDI_EVENT_DATA_LBN 0
1902 #define	FCDI_EVENT_DATA_WIDTH 32
1903 #define	FCDI_EVENT_SRC_LBN 36
1904 #define	FCDI_EVENT_SRC_WIDTH 8
1905 #define	FCDI_EVENT_EV_CODE_LBN 60
1906 #define	FCDI_EVENT_EV_CODE_WIDTH 4
1907 #define	FCDI_EVENT_CODE_LBN 44
1908 #define	FCDI_EVENT_CODE_WIDTH 8
1909 /* enum: The FC was rebooted. */
1910 #define	FCDI_EVENT_CODE_REBOOT 0x1
1911 /* enum: Bad assert. */
1912 #define	FCDI_EVENT_CODE_ASSERT 0x2
1913 /* enum: DDR3 test result. */
1914 #define	FCDI_EVENT_CODE_DDR_TEST_RESULT 0x3
1915 /* enum: Link status. */
1916 #define	FCDI_EVENT_CODE_LINK_STATE 0x4
1917 /* enum: A timed read is ready to be serviced. */
1918 #define	FCDI_EVENT_CODE_TIMED_READ 0x5
1919 /* enum: One or more PPS IN events */
1920 #define	FCDI_EVENT_CODE_PPS_IN 0x6
1921 /* enum: Tick event from PTP clock */
1922 #define	FCDI_EVENT_CODE_PTP_TICK 0x7
1923 /* enum: ECC error counters */
1924 #define	FCDI_EVENT_CODE_DDR_ECC_STATUS 0x8
1925 /* enum: Current status of PTP */
1926 #define	FCDI_EVENT_CODE_PTP_STATUS 0x9
1927 /* enum: Port id config to map MC-FC port idx */
1928 #define	FCDI_EVENT_CODE_PORT_CONFIG 0xa
1929 /* enum: Boot result or error code */
1930 #define	FCDI_EVENT_CODE_BOOT_RESULT 0xb
1931 #define	FCDI_EVENT_REBOOT_SRC_LBN 36
1932 #define	FCDI_EVENT_REBOOT_SRC_WIDTH 8
1933 #define	FCDI_EVENT_REBOOT_FC_FW 0x0 /* enum */
1934 #define	FCDI_EVENT_REBOOT_FC_BOOTLOADER 0x1 /* enum */
1935 #define	FCDI_EVENT_ASSERT_INSTR_ADDRESS_OFST 0
1936 #define	FCDI_EVENT_ASSERT_INSTR_ADDRESS_LEN 4
1937 #define	FCDI_EVENT_ASSERT_INSTR_ADDRESS_LBN 0
1938 #define	FCDI_EVENT_ASSERT_INSTR_ADDRESS_WIDTH 32
1939 #define	FCDI_EVENT_ASSERT_TYPE_LBN 36
1940 #define	FCDI_EVENT_ASSERT_TYPE_WIDTH 8
1941 #define	FCDI_EVENT_DDR_TEST_RESULT_STATUS_CODE_LBN 36
1942 #define	FCDI_EVENT_DDR_TEST_RESULT_STATUS_CODE_WIDTH 8
1943 #define	FCDI_EVENT_DDR_TEST_RESULT_RESULT_OFST 0
1944 #define	FCDI_EVENT_DDR_TEST_RESULT_RESULT_LEN 4
1945 #define	FCDI_EVENT_DDR_TEST_RESULT_RESULT_LBN 0
1946 #define	FCDI_EVENT_DDR_TEST_RESULT_RESULT_WIDTH 32
1947 #define	FCDI_EVENT_LINK_STATE_DATA_OFST 0
1948 #define	FCDI_EVENT_LINK_STATE_DATA_LEN 4
1949 #define	FCDI_EVENT_LINK_STATE_DATA_LBN 0
1950 #define	FCDI_EVENT_LINK_STATE_DATA_WIDTH 32
1951 #define	FCDI_EVENT_PTP_STATE_OFST 0
1952 #define	FCDI_EVENT_PTP_STATE_LEN 4
1953 #define	FCDI_EVENT_PTP_UNDEFINED 0x0 /* enum */
1954 #define	FCDI_EVENT_PTP_SETUP_FAILED 0x1 /* enum */
1955 #define	FCDI_EVENT_PTP_OPERATIONAL 0x2 /* enum */
1956 #define	FCDI_EVENT_PTP_STATE_LBN 0
1957 #define	FCDI_EVENT_PTP_STATE_WIDTH 32
1958 #define	FCDI_EVENT_DDR_ECC_STATUS_BANK_ID_LBN 36
1959 #define	FCDI_EVENT_DDR_ECC_STATUS_BANK_ID_WIDTH 8
1960 #define	FCDI_EVENT_DDR_ECC_STATUS_STATUS_OFST 0
1961 #define	FCDI_EVENT_DDR_ECC_STATUS_STATUS_LEN 4
1962 #define	FCDI_EVENT_DDR_ECC_STATUS_STATUS_LBN 0
1963 #define	FCDI_EVENT_DDR_ECC_STATUS_STATUS_WIDTH 32
1964 /* Index of MC port being referred to */
1965 #define	FCDI_EVENT_PORT_CONFIG_SRC_LBN 36
1966 #define	FCDI_EVENT_PORT_CONFIG_SRC_WIDTH 8
1967 /* FC Port index that matches the MC port index in SRC */
1968 #define	FCDI_EVENT_PORT_CONFIG_DATA_OFST 0
1969 #define	FCDI_EVENT_PORT_CONFIG_DATA_LEN 4
1970 #define	FCDI_EVENT_PORT_CONFIG_DATA_LBN 0
1971 #define	FCDI_EVENT_PORT_CONFIG_DATA_WIDTH 32
1972 #define	FCDI_EVENT_BOOT_RESULT_OFST 0
1973 #define	FCDI_EVENT_BOOT_RESULT_LEN 4
1974 /*            Enum values, see field(s): */
1975 /*               MC_CMD_AOE/MC_CMD_AOE_OUT_INFO/FC_BOOT_RESULT */
1976 #define	FCDI_EVENT_BOOT_RESULT_LBN 0
1977 #define	FCDI_EVENT_BOOT_RESULT_WIDTH 32
1978 
1979 /* FCDI_EXTENDED_EVENT_PPS structuredef: Extended FCDI event to send PPS events
1980  * to the MC. Note that this structure | is overlayed over a normal FCDI event
1981  * such that bits 32-63 containing | event code, level, source etc remain the
1982  * same. In this case the data | field of the header is defined to be the
1983  * number of timestamps
1984  */
1985 #define	FCDI_EXTENDED_EVENT_PPS_LENMIN 16
1986 #define	FCDI_EXTENDED_EVENT_PPS_LENMAX 248
1987 #define	FCDI_EXTENDED_EVENT_PPS_LENMAX_MCDI2 1016
1988 #define	FCDI_EXTENDED_EVENT_PPS_LEN(num) (8+8*(num))
1989 #define	FCDI_EXTENDED_EVENT_PPS_TIMESTAMPS_NUM(len) (((len)-8)/8)
1990 /* Number of timestamps following */
1991 #define	FCDI_EXTENDED_EVENT_PPS_COUNT_OFST 0
1992 #define	FCDI_EXTENDED_EVENT_PPS_COUNT_LEN 4
1993 #define	FCDI_EXTENDED_EVENT_PPS_COUNT_LBN 0
1994 #define	FCDI_EXTENDED_EVENT_PPS_COUNT_WIDTH 32
1995 /* Seconds field of a timestamp record */
1996 #define	FCDI_EXTENDED_EVENT_PPS_SECONDS_OFST 8
1997 #define	FCDI_EXTENDED_EVENT_PPS_SECONDS_LEN 4
1998 #define	FCDI_EXTENDED_EVENT_PPS_SECONDS_LBN 64
1999 #define	FCDI_EXTENDED_EVENT_PPS_SECONDS_WIDTH 32
2000 /* Nanoseconds field of a timestamp record */
2001 #define	FCDI_EXTENDED_EVENT_PPS_NANOSECONDS_OFST 12
2002 #define	FCDI_EXTENDED_EVENT_PPS_NANOSECONDS_LEN 4
2003 #define	FCDI_EXTENDED_EVENT_PPS_NANOSECONDS_LBN 96
2004 #define	FCDI_EXTENDED_EVENT_PPS_NANOSECONDS_WIDTH 32
2005 /* Timestamp records comprising the event */
2006 #define	FCDI_EXTENDED_EVENT_PPS_TIMESTAMPS_OFST 8
2007 #define	FCDI_EXTENDED_EVENT_PPS_TIMESTAMPS_LEN 8
2008 #define	FCDI_EXTENDED_EVENT_PPS_TIMESTAMPS_LO_OFST 8
2009 #define	FCDI_EXTENDED_EVENT_PPS_TIMESTAMPS_LO_LEN 4
2010 #define	FCDI_EXTENDED_EVENT_PPS_TIMESTAMPS_LO_LBN 64
2011 #define	FCDI_EXTENDED_EVENT_PPS_TIMESTAMPS_LO_WIDTH 32
2012 #define	FCDI_EXTENDED_EVENT_PPS_TIMESTAMPS_HI_OFST 12
2013 #define	FCDI_EXTENDED_EVENT_PPS_TIMESTAMPS_HI_LEN 4
2014 #define	FCDI_EXTENDED_EVENT_PPS_TIMESTAMPS_HI_LBN 96
2015 #define	FCDI_EXTENDED_EVENT_PPS_TIMESTAMPS_HI_WIDTH 32
2016 #define	FCDI_EXTENDED_EVENT_PPS_TIMESTAMPS_MINNUM 1
2017 #define	FCDI_EXTENDED_EVENT_PPS_TIMESTAMPS_MAXNUM 30
2018 #define	FCDI_EXTENDED_EVENT_PPS_TIMESTAMPS_MAXNUM_MCDI2 126
2019 #define	FCDI_EXTENDED_EVENT_PPS_TIMESTAMPS_LBN 64
2020 #define	FCDI_EXTENDED_EVENT_PPS_TIMESTAMPS_WIDTH 64
2021 
2022 /* MUM_EVENT structuredef */
2023 #define	MUM_EVENT_LEN 8
2024 #define	MUM_EVENT_CONT_LBN 32
2025 #define	MUM_EVENT_CONT_WIDTH 1
2026 #define	MUM_EVENT_LEVEL_LBN 33
2027 #define	MUM_EVENT_LEVEL_WIDTH 3
2028 /* enum: Info. */
2029 #define	MUM_EVENT_LEVEL_INFO 0x0
2030 /* enum: Warning. */
2031 #define	MUM_EVENT_LEVEL_WARN 0x1
2032 /* enum: Error. */
2033 #define	MUM_EVENT_LEVEL_ERR 0x2
2034 /* enum: Fatal. */
2035 #define	MUM_EVENT_LEVEL_FATAL 0x3
2036 #define	MUM_EVENT_DATA_OFST 0
2037 #define	MUM_EVENT_DATA_LEN 4
2038 #define	MUM_EVENT_SENSOR_ID_OFST 0
2039 #define	MUM_EVENT_SENSOR_ID_LBN 0
2040 #define	MUM_EVENT_SENSOR_ID_WIDTH 8
2041 /*             Enum values, see field(s): */
2042 /*                MC_CMD_SENSOR_INFO/MC_CMD_SENSOR_INFO_OUT/MASK */
2043 #define	MUM_EVENT_SENSOR_STATE_OFST 0
2044 #define	MUM_EVENT_SENSOR_STATE_LBN 8
2045 #define	MUM_EVENT_SENSOR_STATE_WIDTH 8
2046 #define	MUM_EVENT_PORT_PHY_READY_OFST 0
2047 #define	MUM_EVENT_PORT_PHY_READY_LBN 0
2048 #define	MUM_EVENT_PORT_PHY_READY_WIDTH 1
2049 #define	MUM_EVENT_PORT_PHY_LINK_UP_OFST 0
2050 #define	MUM_EVENT_PORT_PHY_LINK_UP_LBN 1
2051 #define	MUM_EVENT_PORT_PHY_LINK_UP_WIDTH 1
2052 #define	MUM_EVENT_PORT_PHY_TX_LOL_OFST 0
2053 #define	MUM_EVENT_PORT_PHY_TX_LOL_LBN 2
2054 #define	MUM_EVENT_PORT_PHY_TX_LOL_WIDTH 1
2055 #define	MUM_EVENT_PORT_PHY_RX_LOL_OFST 0
2056 #define	MUM_EVENT_PORT_PHY_RX_LOL_LBN 3
2057 #define	MUM_EVENT_PORT_PHY_RX_LOL_WIDTH 1
2058 #define	MUM_EVENT_PORT_PHY_TX_LOS_OFST 0
2059 #define	MUM_EVENT_PORT_PHY_TX_LOS_LBN 4
2060 #define	MUM_EVENT_PORT_PHY_TX_LOS_WIDTH 1
2061 #define	MUM_EVENT_PORT_PHY_RX_LOS_OFST 0
2062 #define	MUM_EVENT_PORT_PHY_RX_LOS_LBN 5
2063 #define	MUM_EVENT_PORT_PHY_RX_LOS_WIDTH 1
2064 #define	MUM_EVENT_PORT_PHY_TX_FAULT_OFST 0
2065 #define	MUM_EVENT_PORT_PHY_TX_FAULT_LBN 6
2066 #define	MUM_EVENT_PORT_PHY_TX_FAULT_WIDTH 1
2067 #define	MUM_EVENT_DATA_LBN 0
2068 #define	MUM_EVENT_DATA_WIDTH 32
2069 #define	MUM_EVENT_SRC_LBN 36
2070 #define	MUM_EVENT_SRC_WIDTH 8
2071 #define	MUM_EVENT_EV_CODE_LBN 60
2072 #define	MUM_EVENT_EV_CODE_WIDTH 4
2073 #define	MUM_EVENT_CODE_LBN 44
2074 #define	MUM_EVENT_CODE_WIDTH 8
2075 /* enum: The MUM was rebooted. */
2076 #define	MUM_EVENT_CODE_REBOOT 0x1
2077 /* enum: Bad assert. */
2078 #define	MUM_EVENT_CODE_ASSERT 0x2
2079 /* enum: Sensor failure. */
2080 #define	MUM_EVENT_CODE_SENSOR 0x3
2081 /* enum: Link fault has been asserted, or has cleared. */
2082 #define	MUM_EVENT_CODE_QSFP_LASI_INTERRUPT 0x4
2083 #define	MUM_EVENT_SENSOR_DATA_OFST 0
2084 #define	MUM_EVENT_SENSOR_DATA_LEN 4
2085 #define	MUM_EVENT_SENSOR_DATA_LBN 0
2086 #define	MUM_EVENT_SENSOR_DATA_WIDTH 32
2087 #define	MUM_EVENT_PORT_PHY_FLAGS_OFST 0
2088 #define	MUM_EVENT_PORT_PHY_FLAGS_LEN 4
2089 #define	MUM_EVENT_PORT_PHY_FLAGS_LBN 0
2090 #define	MUM_EVENT_PORT_PHY_FLAGS_WIDTH 32
2091 #define	MUM_EVENT_PORT_PHY_COPPER_LEN_OFST 0
2092 #define	MUM_EVENT_PORT_PHY_COPPER_LEN_LEN 4
2093 #define	MUM_EVENT_PORT_PHY_COPPER_LEN_LBN 0
2094 #define	MUM_EVENT_PORT_PHY_COPPER_LEN_WIDTH 32
2095 #define	MUM_EVENT_PORT_PHY_CAPS_OFST 0
2096 #define	MUM_EVENT_PORT_PHY_CAPS_LEN 4
2097 #define	MUM_EVENT_PORT_PHY_CAPS_LBN 0
2098 #define	MUM_EVENT_PORT_PHY_CAPS_WIDTH 32
2099 #define	MUM_EVENT_PORT_PHY_TECH_OFST 0
2100 #define	MUM_EVENT_PORT_PHY_TECH_LEN 4
2101 #define	MUM_EVENT_PORT_PHY_STATE_QSFP_MODULE_TECH_UNKNOWN 0x0 /* enum */
2102 #define	MUM_EVENT_PORT_PHY_STATE_QSFP_MODULE_TECH_OPTICAL 0x1 /* enum */
2103 #define	MUM_EVENT_PORT_PHY_STATE_QSFP_MODULE_TECH_COPPER_PASSIVE 0x2 /* enum */
2104 #define	MUM_EVENT_PORT_PHY_STATE_QSFP_MODULE_TECH_COPPER_PASSIVE_EQUALIZED 0x3 /* enum */
2105 #define	MUM_EVENT_PORT_PHY_STATE_QSFP_MODULE_TECH_COPPER_ACTIVE_LIMITING 0x4 /* enum */
2106 #define	MUM_EVENT_PORT_PHY_STATE_QSFP_MODULE_TECH_COPPER_ACTIVE_LINEAR 0x5 /* enum */
2107 #define	MUM_EVENT_PORT_PHY_STATE_QSFP_MODULE_TECH_BASE_T 0x6 /* enum */
2108 #define	MUM_EVENT_PORT_PHY_STATE_QSFP_MODULE_TECH_LOOPBACK_PASSIVE 0x7 /* enum */
2109 #define	MUM_EVENT_PORT_PHY_TECH_LBN 0
2110 #define	MUM_EVENT_PORT_PHY_TECH_WIDTH 32
2111 #define	MUM_EVENT_PORT_PHY_SRC_DATA_ID_LBN 36
2112 #define	MUM_EVENT_PORT_PHY_SRC_DATA_ID_WIDTH 4
2113 #define	MUM_EVENT_PORT_PHY_SRC_DATA_ID_FLAGS 0x0 /* enum */
2114 #define	MUM_EVENT_PORT_PHY_SRC_DATA_ID_COPPER_LEN 0x1 /* enum */
2115 #define	MUM_EVENT_PORT_PHY_SRC_DATA_ID_CAPS 0x2 /* enum */
2116 #define	MUM_EVENT_PORT_PHY_SRC_DATA_ID_TECH 0x3 /* enum */
2117 #define	MUM_EVENT_PORT_PHY_SRC_DATA_ID_MAX 0x4 /* enum */
2118 #define	MUM_EVENT_PORT_PHY_SRC_PORT_NO_LBN 40
2119 #define	MUM_EVENT_PORT_PHY_SRC_PORT_NO_WIDTH 4
2120 
2121 
2122 /***********************************/
2123 /* MC_CMD_READ32
2124  * Read multiple 32byte words from MC memory. Note - this command really
2125  * belongs to INSECURE category but is required by shmboot. The command handler
2126  * has additional checks to reject insecure calls.
2127  */
2128 #define	MC_CMD_READ32 0x1
2129 #define	MC_CMD_READ32_MSGSET 0x1
2130 #undef	MC_CMD_0x1_PRIVILEGE_CTG
2131 
2132 #define	MC_CMD_0x1_PRIVILEGE_CTG SRIOV_CTG_ADMIN
2133 
2134 /* MC_CMD_READ32_IN msgrequest */
2135 #define	MC_CMD_READ32_IN_LEN 8
2136 #define	MC_CMD_READ32_IN_ADDR_OFST 0
2137 #define	MC_CMD_READ32_IN_ADDR_LEN 4
2138 #define	MC_CMD_READ32_IN_NUMWORDS_OFST 4
2139 #define	MC_CMD_READ32_IN_NUMWORDS_LEN 4
2140 
2141 /* MC_CMD_READ32_OUT msgresponse */
2142 #define	MC_CMD_READ32_OUT_LENMIN 4
2143 #define	MC_CMD_READ32_OUT_LENMAX 252
2144 #define	MC_CMD_READ32_OUT_LENMAX_MCDI2 1020
2145 #define	MC_CMD_READ32_OUT_LEN(num) (0+4*(num))
2146 #define	MC_CMD_READ32_OUT_BUFFER_NUM(len) (((len)-0)/4)
2147 #define	MC_CMD_READ32_OUT_BUFFER_OFST 0
2148 #define	MC_CMD_READ32_OUT_BUFFER_LEN 4
2149 #define	MC_CMD_READ32_OUT_BUFFER_MINNUM 1
2150 #define	MC_CMD_READ32_OUT_BUFFER_MAXNUM 63
2151 #define	MC_CMD_READ32_OUT_BUFFER_MAXNUM_MCDI2 255
2152 
2153 
2154 /***********************************/
2155 /* MC_CMD_WRITE32
2156  * Write multiple 32byte words to MC memory.
2157  */
2158 #define	MC_CMD_WRITE32 0x2
2159 #define	MC_CMD_WRITE32_MSGSET 0x2
2160 #undef	MC_CMD_0x2_PRIVILEGE_CTG
2161 
2162 #define	MC_CMD_0x2_PRIVILEGE_CTG SRIOV_CTG_INSECURE
2163 
2164 /* MC_CMD_WRITE32_IN msgrequest */
2165 #define	MC_CMD_WRITE32_IN_LENMIN 8
2166 #define	MC_CMD_WRITE32_IN_LENMAX 252
2167 #define	MC_CMD_WRITE32_IN_LENMAX_MCDI2 1020
2168 #define	MC_CMD_WRITE32_IN_LEN(num) (4+4*(num))
2169 #define	MC_CMD_WRITE32_IN_BUFFER_NUM(len) (((len)-4)/4)
2170 #define	MC_CMD_WRITE32_IN_ADDR_OFST 0
2171 #define	MC_CMD_WRITE32_IN_ADDR_LEN 4
2172 #define	MC_CMD_WRITE32_IN_BUFFER_OFST 4
2173 #define	MC_CMD_WRITE32_IN_BUFFER_LEN 4
2174 #define	MC_CMD_WRITE32_IN_BUFFER_MINNUM 1
2175 #define	MC_CMD_WRITE32_IN_BUFFER_MAXNUM 62
2176 #define	MC_CMD_WRITE32_IN_BUFFER_MAXNUM_MCDI2 254
2177 
2178 /* MC_CMD_WRITE32_OUT msgresponse */
2179 #define	MC_CMD_WRITE32_OUT_LEN 0
2180 
2181 
2182 /***********************************/
2183 /* MC_CMD_COPYCODE
2184  * Copy MC code between two locations and jump. Note - this command really
2185  * belongs to INSECURE category but is required by shmboot. The command handler
2186  * has additional checks to reject insecure calls.
2187  */
2188 #define	MC_CMD_COPYCODE 0x3
2189 #define	MC_CMD_COPYCODE_MSGSET 0x3
2190 #undef	MC_CMD_0x3_PRIVILEGE_CTG
2191 
2192 #define	MC_CMD_0x3_PRIVILEGE_CTG SRIOV_CTG_ADMIN_TSA_UNBOUND
2193 
2194 /* MC_CMD_COPYCODE_IN msgrequest */
2195 #define	MC_CMD_COPYCODE_IN_LEN 16
2196 /* Source address
2197  *
2198  * The main image should be entered via a copy of a single word from and to a
2199  * magic address, which controls various aspects of the boot. The magic address
2200  * is a bitfield, with each bit as documented below.
2201  */
2202 #define	MC_CMD_COPYCODE_IN_SRC_ADDR_OFST 0
2203 #define	MC_CMD_COPYCODE_IN_SRC_ADDR_LEN 4
2204 /* enum: Deprecated; equivalent to setting BOOT_MAGIC_PRESENT (see below) */
2205 #define	MC_CMD_COPYCODE_HUNT_NO_MAGIC_ADDR 0x10000
2206 /* enum: Deprecated; equivalent to setting BOOT_MAGIC_PRESENT and
2207  * BOOT_MAGIC_SATELLITE_CPUS_NOT_LOADED (see below)
2208  */
2209 #define	MC_CMD_COPYCODE_HUNT_NO_DATAPATH_MAGIC_ADDR 0x1d0d0
2210 /* enum: Deprecated; equivalent to setting BOOT_MAGIC_PRESENT,
2211  * BOOT_MAGIC_SATELLITE_CPUS_NOT_LOADED and BOOT_MAGIC_IGNORE_CONFIG (see
2212  * below)
2213  */
2214 #define	MC_CMD_COPYCODE_HUNT_IGNORE_CONFIG_MAGIC_ADDR 0x1badc
2215 #define	MC_CMD_COPYCODE_IN_BOOT_MAGIC_PRESENT_OFST 0
2216 #define	MC_CMD_COPYCODE_IN_BOOT_MAGIC_PRESENT_LBN 17
2217 #define	MC_CMD_COPYCODE_IN_BOOT_MAGIC_PRESENT_WIDTH 1
2218 #define	MC_CMD_COPYCODE_IN_BOOT_MAGIC_SATELLITE_CPUS_NOT_LOADED_OFST 0
2219 #define	MC_CMD_COPYCODE_IN_BOOT_MAGIC_SATELLITE_CPUS_NOT_LOADED_LBN 2
2220 #define	MC_CMD_COPYCODE_IN_BOOT_MAGIC_SATELLITE_CPUS_NOT_LOADED_WIDTH 1
2221 #define	MC_CMD_COPYCODE_IN_BOOT_MAGIC_IGNORE_CONFIG_OFST 0
2222 #define	MC_CMD_COPYCODE_IN_BOOT_MAGIC_IGNORE_CONFIG_LBN 3
2223 #define	MC_CMD_COPYCODE_IN_BOOT_MAGIC_IGNORE_CONFIG_WIDTH 1
2224 #define	MC_CMD_COPYCODE_IN_BOOT_MAGIC_SKIP_BOOT_ICORE_SYNC_OFST 0
2225 #define	MC_CMD_COPYCODE_IN_BOOT_MAGIC_SKIP_BOOT_ICORE_SYNC_LBN 4
2226 #define	MC_CMD_COPYCODE_IN_BOOT_MAGIC_SKIP_BOOT_ICORE_SYNC_WIDTH 1
2227 #define	MC_CMD_COPYCODE_IN_BOOT_MAGIC_FORCE_STANDALONE_OFST 0
2228 #define	MC_CMD_COPYCODE_IN_BOOT_MAGIC_FORCE_STANDALONE_LBN 5
2229 #define	MC_CMD_COPYCODE_IN_BOOT_MAGIC_FORCE_STANDALONE_WIDTH 1
2230 #define	MC_CMD_COPYCODE_IN_BOOT_MAGIC_DISABLE_XIP_OFST 0
2231 #define	MC_CMD_COPYCODE_IN_BOOT_MAGIC_DISABLE_XIP_LBN 6
2232 #define	MC_CMD_COPYCODE_IN_BOOT_MAGIC_DISABLE_XIP_WIDTH 1
2233 /* Destination address */
2234 #define	MC_CMD_COPYCODE_IN_DEST_ADDR_OFST 4
2235 #define	MC_CMD_COPYCODE_IN_DEST_ADDR_LEN 4
2236 #define	MC_CMD_COPYCODE_IN_NUMWORDS_OFST 8
2237 #define	MC_CMD_COPYCODE_IN_NUMWORDS_LEN 4
2238 /* Address of where to jump after copy. */
2239 #define	MC_CMD_COPYCODE_IN_JUMP_OFST 12
2240 #define	MC_CMD_COPYCODE_IN_JUMP_LEN 4
2241 /* enum: Control should return to the caller rather than jumping */
2242 #define	MC_CMD_COPYCODE_JUMP_NONE 0x1
2243 
2244 /* MC_CMD_COPYCODE_OUT msgresponse */
2245 #define	MC_CMD_COPYCODE_OUT_LEN 0
2246 
2247 
2248 /***********************************/
2249 /* MC_CMD_SET_FUNC
2250  * Select function for function-specific commands.
2251  */
2252 #define	MC_CMD_SET_FUNC 0x4
2253 #define	MC_CMD_SET_FUNC_MSGSET 0x4
2254 #undef	MC_CMD_0x4_PRIVILEGE_CTG
2255 
2256 #define	MC_CMD_0x4_PRIVILEGE_CTG SRIOV_CTG_INSECURE
2257 
2258 /* MC_CMD_SET_FUNC_IN msgrequest */
2259 #define	MC_CMD_SET_FUNC_IN_LEN 4
2260 /* Set function */
2261 #define	MC_CMD_SET_FUNC_IN_FUNC_OFST 0
2262 #define	MC_CMD_SET_FUNC_IN_FUNC_LEN 4
2263 
2264 /* MC_CMD_SET_FUNC_OUT msgresponse */
2265 #define	MC_CMD_SET_FUNC_OUT_LEN 0
2266 
2267 
2268 /***********************************/
2269 /* MC_CMD_GET_BOOT_STATUS
2270  * Get the instruction address from which the MC booted.
2271  */
2272 #define	MC_CMD_GET_BOOT_STATUS 0x5
2273 #define	MC_CMD_GET_BOOT_STATUS_MSGSET 0x5
2274 #undef	MC_CMD_0x5_PRIVILEGE_CTG
2275 
2276 #define	MC_CMD_0x5_PRIVILEGE_CTG SRIOV_CTG_GENERAL
2277 
2278 /* MC_CMD_GET_BOOT_STATUS_IN msgrequest */
2279 #define	MC_CMD_GET_BOOT_STATUS_IN_LEN 0
2280 
2281 /* MC_CMD_GET_BOOT_STATUS_OUT msgresponse */
2282 #define	MC_CMD_GET_BOOT_STATUS_OUT_LEN 8
2283 /* ?? */
2284 #define	MC_CMD_GET_BOOT_STATUS_OUT_BOOT_OFFSET_OFST 0
2285 #define	MC_CMD_GET_BOOT_STATUS_OUT_BOOT_OFFSET_LEN 4
2286 /* enum: indicates that the MC wasn't flash booted */
2287 #define	MC_CMD_GET_BOOT_STATUS_OUT_BOOT_OFFSET_NULL 0xdeadbeef
2288 #define	MC_CMD_GET_BOOT_STATUS_OUT_FLAGS_OFST 4
2289 #define	MC_CMD_GET_BOOT_STATUS_OUT_FLAGS_LEN 4
2290 #define	MC_CMD_GET_BOOT_STATUS_OUT_FLAGS_WATCHDOG_OFST 4
2291 #define	MC_CMD_GET_BOOT_STATUS_OUT_FLAGS_WATCHDOG_LBN 0
2292 #define	MC_CMD_GET_BOOT_STATUS_OUT_FLAGS_WATCHDOG_WIDTH 1
2293 #define	MC_CMD_GET_BOOT_STATUS_OUT_FLAGS_PRIMARY_OFST 4
2294 #define	MC_CMD_GET_BOOT_STATUS_OUT_FLAGS_PRIMARY_LBN 1
2295 #define	MC_CMD_GET_BOOT_STATUS_OUT_FLAGS_PRIMARY_WIDTH 1
2296 #define	MC_CMD_GET_BOOT_STATUS_OUT_FLAGS_BACKUP_OFST 4
2297 #define	MC_CMD_GET_BOOT_STATUS_OUT_FLAGS_BACKUP_LBN 2
2298 #define	MC_CMD_GET_BOOT_STATUS_OUT_FLAGS_BACKUP_WIDTH 1
2299 
2300 
2301 /***********************************/
2302 /* MC_CMD_GET_ASSERTS
2303  * Get (and optionally clear) the current assertion status. Only
2304  * OUT.GLOBAL_FLAGS is guaranteed to exist in the completion payload. The other
2305  * fields will only be present if OUT.GLOBAL_FLAGS != NO_FAILS
2306  */
2307 #define	MC_CMD_GET_ASSERTS 0x6
2308 #define	MC_CMD_GET_ASSERTS_MSGSET 0x6
2309 #undef	MC_CMD_0x6_PRIVILEGE_CTG
2310 
2311 #define	MC_CMD_0x6_PRIVILEGE_CTG SRIOV_CTG_ADMIN
2312 
2313 /* MC_CMD_GET_ASSERTS_IN msgrequest */
2314 #define	MC_CMD_GET_ASSERTS_IN_LEN 4
2315 /* Set to clear assertion */
2316 #define	MC_CMD_GET_ASSERTS_IN_CLEAR_OFST 0
2317 #define	MC_CMD_GET_ASSERTS_IN_CLEAR_LEN 4
2318 
2319 /* MC_CMD_GET_ASSERTS_OUT msgresponse */
2320 #define	MC_CMD_GET_ASSERTS_OUT_LEN 140
2321 /* Assertion status flag. */
2322 #define	MC_CMD_GET_ASSERTS_OUT_GLOBAL_FLAGS_OFST 0
2323 #define	MC_CMD_GET_ASSERTS_OUT_GLOBAL_FLAGS_LEN 4
2324 /* enum: No assertions have failed. */
2325 #define	MC_CMD_GET_ASSERTS_FLAGS_NO_FAILS 0x1
2326 /* enum: A system-level assertion has failed. */
2327 #define	MC_CMD_GET_ASSERTS_FLAGS_SYS_FAIL 0x2
2328 /* enum: A thread-level assertion has failed. */
2329 #define	MC_CMD_GET_ASSERTS_FLAGS_THR_FAIL 0x3
2330 /* enum: The system was reset by the watchdog. */
2331 #define	MC_CMD_GET_ASSERTS_FLAGS_WDOG_FIRED 0x4
2332 /* enum: An illegal address trap stopped the system (huntington and later) */
2333 #define	MC_CMD_GET_ASSERTS_FLAGS_ADDR_TRAP 0x5
2334 /* Failing PC value */
2335 #define	MC_CMD_GET_ASSERTS_OUT_SAVED_PC_OFFS_OFST 4
2336 #define	MC_CMD_GET_ASSERTS_OUT_SAVED_PC_OFFS_LEN 4
2337 /* Saved GP regs */
2338 #define	MC_CMD_GET_ASSERTS_OUT_GP_REGS_OFFS_OFST 8
2339 #define	MC_CMD_GET_ASSERTS_OUT_GP_REGS_OFFS_LEN 4
2340 #define	MC_CMD_GET_ASSERTS_OUT_GP_REGS_OFFS_NUM 31
2341 /* enum: A magic value hinting that the value in this register at the time of
2342  * the failure has likely been lost.
2343  */
2344 #define	MC_CMD_GET_ASSERTS_REG_NO_DATA 0xda7a1057
2345 /* Failing thread address */
2346 #define	MC_CMD_GET_ASSERTS_OUT_THREAD_OFFS_OFST 132
2347 #define	MC_CMD_GET_ASSERTS_OUT_THREAD_OFFS_LEN 4
2348 #define	MC_CMD_GET_ASSERTS_OUT_RESERVED_OFST 136
2349 #define	MC_CMD_GET_ASSERTS_OUT_RESERVED_LEN 4
2350 
2351 /* MC_CMD_GET_ASSERTS_OUT_V2 msgresponse: Extended response for MicroBlaze CPUs
2352  * found on Riverhead designs
2353  */
2354 #define	MC_CMD_GET_ASSERTS_OUT_V2_LEN 240
2355 /* Assertion status flag. */
2356 #define	MC_CMD_GET_ASSERTS_OUT_V2_GLOBAL_FLAGS_OFST 0
2357 #define	MC_CMD_GET_ASSERTS_OUT_V2_GLOBAL_FLAGS_LEN 4
2358 /* enum: No assertions have failed. */
2359 /*               MC_CMD_GET_ASSERTS_FLAGS_NO_FAILS 0x1 */
2360 /* enum: A system-level assertion has failed. */
2361 /*               MC_CMD_GET_ASSERTS_FLAGS_SYS_FAIL 0x2 */
2362 /* enum: A thread-level assertion has failed. */
2363 /*               MC_CMD_GET_ASSERTS_FLAGS_THR_FAIL 0x3 */
2364 /* enum: The system was reset by the watchdog. */
2365 /*               MC_CMD_GET_ASSERTS_FLAGS_WDOG_FIRED 0x4 */
2366 /* enum: An illegal address trap stopped the system (huntington and later) */
2367 /*               MC_CMD_GET_ASSERTS_FLAGS_ADDR_TRAP 0x5 */
2368 /* Failing PC value */
2369 #define	MC_CMD_GET_ASSERTS_OUT_V2_SAVED_PC_OFFS_OFST 4
2370 #define	MC_CMD_GET_ASSERTS_OUT_V2_SAVED_PC_OFFS_LEN 4
2371 /* Saved GP regs */
2372 #define	MC_CMD_GET_ASSERTS_OUT_V2_GP_REGS_OFFS_OFST 8
2373 #define	MC_CMD_GET_ASSERTS_OUT_V2_GP_REGS_OFFS_LEN 4
2374 #define	MC_CMD_GET_ASSERTS_OUT_V2_GP_REGS_OFFS_NUM 31
2375 /* enum: A magic value hinting that the value in this register at the time of
2376  * the failure has likely been lost.
2377  */
2378 /*               MC_CMD_GET_ASSERTS_REG_NO_DATA 0xda7a1057 */
2379 /* Failing thread address */
2380 #define	MC_CMD_GET_ASSERTS_OUT_V2_THREAD_OFFS_OFST 132
2381 #define	MC_CMD_GET_ASSERTS_OUT_V2_THREAD_OFFS_LEN 4
2382 #define	MC_CMD_GET_ASSERTS_OUT_V2_RESERVED_OFST 136
2383 #define	MC_CMD_GET_ASSERTS_OUT_V2_RESERVED_LEN 4
2384 /* Saved Special Function Registers */
2385 #define	MC_CMD_GET_ASSERTS_OUT_V2_SF_REGS_OFFS_OFST 136
2386 #define	MC_CMD_GET_ASSERTS_OUT_V2_SF_REGS_OFFS_LEN 4
2387 #define	MC_CMD_GET_ASSERTS_OUT_V2_SF_REGS_OFFS_NUM 26
2388 
2389 /* MC_CMD_GET_ASSERTS_OUT_V3 msgresponse: Extended response with asserted
2390  * firmware version information
2391  */
2392 #define	MC_CMD_GET_ASSERTS_OUT_V3_LEN 360
2393 /* Assertion status flag. */
2394 #define	MC_CMD_GET_ASSERTS_OUT_V3_GLOBAL_FLAGS_OFST 0
2395 #define	MC_CMD_GET_ASSERTS_OUT_V3_GLOBAL_FLAGS_LEN 4
2396 /* enum: No assertions have failed. */
2397 /*               MC_CMD_GET_ASSERTS_FLAGS_NO_FAILS 0x1 */
2398 /* enum: A system-level assertion has failed. */
2399 /*               MC_CMD_GET_ASSERTS_FLAGS_SYS_FAIL 0x2 */
2400 /* enum: A thread-level assertion has failed. */
2401 /*               MC_CMD_GET_ASSERTS_FLAGS_THR_FAIL 0x3 */
2402 /* enum: The system was reset by the watchdog. */
2403 /*               MC_CMD_GET_ASSERTS_FLAGS_WDOG_FIRED 0x4 */
2404 /* enum: An illegal address trap stopped the system (huntington and later) */
2405 /*               MC_CMD_GET_ASSERTS_FLAGS_ADDR_TRAP 0x5 */
2406 /* Failing PC value */
2407 #define	MC_CMD_GET_ASSERTS_OUT_V3_SAVED_PC_OFFS_OFST 4
2408 #define	MC_CMD_GET_ASSERTS_OUT_V3_SAVED_PC_OFFS_LEN 4
2409 /* Saved GP regs */
2410 #define	MC_CMD_GET_ASSERTS_OUT_V3_GP_REGS_OFFS_OFST 8
2411 #define	MC_CMD_GET_ASSERTS_OUT_V3_GP_REGS_OFFS_LEN 4
2412 #define	MC_CMD_GET_ASSERTS_OUT_V3_GP_REGS_OFFS_NUM 31
2413 /* enum: A magic value hinting that the value in this register at the time of
2414  * the failure has likely been lost.
2415  */
2416 /*               MC_CMD_GET_ASSERTS_REG_NO_DATA 0xda7a1057 */
2417 /* Failing thread address */
2418 #define	MC_CMD_GET_ASSERTS_OUT_V3_THREAD_OFFS_OFST 132
2419 #define	MC_CMD_GET_ASSERTS_OUT_V3_THREAD_OFFS_LEN 4
2420 #define	MC_CMD_GET_ASSERTS_OUT_V3_RESERVED_OFST 136
2421 #define	MC_CMD_GET_ASSERTS_OUT_V3_RESERVED_LEN 4
2422 /* Saved Special Function Registers */
2423 #define	MC_CMD_GET_ASSERTS_OUT_V3_SF_REGS_OFFS_OFST 136
2424 #define	MC_CMD_GET_ASSERTS_OUT_V3_SF_REGS_OFFS_LEN 4
2425 #define	MC_CMD_GET_ASSERTS_OUT_V3_SF_REGS_OFFS_NUM 26
2426 /* MC firmware unique build ID (as binary SHA-1 value) */
2427 #define	MC_CMD_GET_ASSERTS_OUT_V3_MC_FW_BUILD_ID_OFST 240
2428 #define	MC_CMD_GET_ASSERTS_OUT_V3_MC_FW_BUILD_ID_LEN 20
2429 /* MC firmware build date (as Unix timestamp) */
2430 #define	MC_CMD_GET_ASSERTS_OUT_V3_MC_FW_BUILD_TIMESTAMP_OFST 260
2431 #define	MC_CMD_GET_ASSERTS_OUT_V3_MC_FW_BUILD_TIMESTAMP_LEN 8
2432 #define	MC_CMD_GET_ASSERTS_OUT_V3_MC_FW_BUILD_TIMESTAMP_LO_OFST 260
2433 #define	MC_CMD_GET_ASSERTS_OUT_V3_MC_FW_BUILD_TIMESTAMP_LO_LEN 4
2434 #define	MC_CMD_GET_ASSERTS_OUT_V3_MC_FW_BUILD_TIMESTAMP_LO_LBN 2080
2435 #define	MC_CMD_GET_ASSERTS_OUT_V3_MC_FW_BUILD_TIMESTAMP_LO_WIDTH 32
2436 #define	MC_CMD_GET_ASSERTS_OUT_V3_MC_FW_BUILD_TIMESTAMP_HI_OFST 264
2437 #define	MC_CMD_GET_ASSERTS_OUT_V3_MC_FW_BUILD_TIMESTAMP_HI_LEN 4
2438 #define	MC_CMD_GET_ASSERTS_OUT_V3_MC_FW_BUILD_TIMESTAMP_HI_LBN 2112
2439 #define	MC_CMD_GET_ASSERTS_OUT_V3_MC_FW_BUILD_TIMESTAMP_HI_WIDTH 32
2440 /* MC firmware version number */
2441 #define	MC_CMD_GET_ASSERTS_OUT_V3_MC_FW_VERSION_OFST 268
2442 #define	MC_CMD_GET_ASSERTS_OUT_V3_MC_FW_VERSION_LEN 8
2443 #define	MC_CMD_GET_ASSERTS_OUT_V3_MC_FW_VERSION_LO_OFST 268
2444 #define	MC_CMD_GET_ASSERTS_OUT_V3_MC_FW_VERSION_LO_LEN 4
2445 #define	MC_CMD_GET_ASSERTS_OUT_V3_MC_FW_VERSION_LO_LBN 2144
2446 #define	MC_CMD_GET_ASSERTS_OUT_V3_MC_FW_VERSION_LO_WIDTH 32
2447 #define	MC_CMD_GET_ASSERTS_OUT_V3_MC_FW_VERSION_HI_OFST 272
2448 #define	MC_CMD_GET_ASSERTS_OUT_V3_MC_FW_VERSION_HI_LEN 4
2449 #define	MC_CMD_GET_ASSERTS_OUT_V3_MC_FW_VERSION_HI_LBN 2176
2450 #define	MC_CMD_GET_ASSERTS_OUT_V3_MC_FW_VERSION_HI_WIDTH 32
2451 /* MC firmware security level */
2452 #define	MC_CMD_GET_ASSERTS_OUT_V3_MC_FW_SECURITY_LEVEL_OFST 276
2453 #define	MC_CMD_GET_ASSERTS_OUT_V3_MC_FW_SECURITY_LEVEL_LEN 4
2454 /* MC firmware extra version info (as null-terminated US-ASCII string) */
2455 #define	MC_CMD_GET_ASSERTS_OUT_V3_MC_FW_EXTRA_INFO_OFST 280
2456 #define	MC_CMD_GET_ASSERTS_OUT_V3_MC_FW_EXTRA_INFO_LEN 16
2457 /* MC firmware build name (as null-terminated US-ASCII string) */
2458 #define	MC_CMD_GET_ASSERTS_OUT_V3_MC_FW_BUILD_NAME_OFST 296
2459 #define	MC_CMD_GET_ASSERTS_OUT_V3_MC_FW_BUILD_NAME_LEN 64
2460 
2461 
2462 /***********************************/
2463 /* MC_CMD_LOG_CTRL
2464  * Configure the output stream for log events such as link state changes,
2465  * sensor notifications and MCDI completions
2466  */
2467 #define	MC_CMD_LOG_CTRL 0x7
2468 #define	MC_CMD_LOG_CTRL_MSGSET 0x7
2469 #undef	MC_CMD_0x7_PRIVILEGE_CTG
2470 
2471 #define	MC_CMD_0x7_PRIVILEGE_CTG SRIOV_CTG_GENERAL
2472 
2473 /* MC_CMD_LOG_CTRL_IN msgrequest */
2474 #define	MC_CMD_LOG_CTRL_IN_LEN 8
2475 /* Log destination */
2476 #define	MC_CMD_LOG_CTRL_IN_LOG_DEST_OFST 0
2477 #define	MC_CMD_LOG_CTRL_IN_LOG_DEST_LEN 4
2478 /* enum property: bitmask */
2479 /* enum: UART. */
2480 #define	MC_CMD_LOG_CTRL_IN_LOG_DEST_UART 0x1
2481 /* enum: Event queue. */
2482 #define	MC_CMD_LOG_CTRL_IN_LOG_DEST_EVQ 0x2
2483 /* Legacy argument. Must be zero. */
2484 #define	MC_CMD_LOG_CTRL_IN_LOG_DEST_EVQ_OFST 4
2485 #define	MC_CMD_LOG_CTRL_IN_LOG_DEST_EVQ_LEN 4
2486 
2487 /* MC_CMD_LOG_CTRL_OUT msgresponse */
2488 #define	MC_CMD_LOG_CTRL_OUT_LEN 0
2489 
2490 
2491 /***********************************/
2492 /* MC_CMD_GET_VERSION
2493  * Get version information about adapter components.
2494  */
2495 #define	MC_CMD_GET_VERSION 0x8
2496 #define	MC_CMD_GET_VERSION_MSGSET 0x8
2497 #undef	MC_CMD_0x8_PRIVILEGE_CTG
2498 
2499 #define	MC_CMD_0x8_PRIVILEGE_CTG SRIOV_CTG_GENERAL
2500 
2501 /* MC_CMD_GET_VERSION_IN msgrequest */
2502 #define	MC_CMD_GET_VERSION_IN_LEN 0
2503 
2504 /* MC_CMD_GET_VERSION_EXT_IN msgrequest: Asks for the extended version */
2505 #define	MC_CMD_GET_VERSION_EXT_IN_LEN 4
2506 /* placeholder, set to 0 */
2507 #define	MC_CMD_GET_VERSION_EXT_IN_EXT_FLAGS_OFST 0
2508 #define	MC_CMD_GET_VERSION_EXT_IN_EXT_FLAGS_LEN 4
2509 
2510 /* MC_CMD_GET_VERSION_V0_OUT msgresponse: deprecated version format */
2511 #define	MC_CMD_GET_VERSION_V0_OUT_LEN 4
2512 #define	MC_CMD_GET_VERSION_OUT_FIRMWARE_OFST 0
2513 #define	MC_CMD_GET_VERSION_OUT_FIRMWARE_LEN 4
2514 /* enum: Reserved version number to indicate "any" version. */
2515 #define	MC_CMD_GET_VERSION_OUT_FIRMWARE_ANY 0xffffffff
2516 /* enum: Bootrom version value for Siena. */
2517 #define	MC_CMD_GET_VERSION_OUT_FIRMWARE_SIENA_BOOTROM 0xb0070000
2518 /* enum: Bootrom version value for Huntington. */
2519 #define	MC_CMD_GET_VERSION_OUT_FIRMWARE_HUNT_BOOTROM 0xb0070001
2520 /* enum: Bootrom version value for Medford2. */
2521 #define	MC_CMD_GET_VERSION_OUT_FIRMWARE_MEDFORD2_BOOTROM 0xb0070002
2522 
2523 /* MC_CMD_GET_VERSION_OUT msgresponse */
2524 #define	MC_CMD_GET_VERSION_OUT_LEN 32
2525 /* This is normally the UTC build time in seconds since epoch or one of the
2526  * special values listed
2527  */
2528 /*            MC_CMD_GET_VERSION_OUT_FIRMWARE_OFST 0 */
2529 /*            MC_CMD_GET_VERSION_OUT_FIRMWARE_LEN 4 */
2530 /*            Enum values, see field(s): */
2531 /*               MC_CMD_GET_VERSION_V0_OUT/MC_CMD_GET_VERSION_OUT_FIRMWARE */
2532 #define	MC_CMD_GET_VERSION_OUT_PCOL_OFST 4
2533 #define	MC_CMD_GET_VERSION_OUT_PCOL_LEN 4
2534 /* 128bit mask of functions supported by the current firmware */
2535 #define	MC_CMD_GET_VERSION_OUT_SUPPORTED_FUNCS_OFST 8
2536 #define	MC_CMD_GET_VERSION_OUT_SUPPORTED_FUNCS_LEN 16
2537 #define	MC_CMD_GET_VERSION_OUT_VERSION_OFST 24
2538 #define	MC_CMD_GET_VERSION_OUT_VERSION_LEN 8
2539 #define	MC_CMD_GET_VERSION_OUT_VERSION_LO_OFST 24
2540 #define	MC_CMD_GET_VERSION_OUT_VERSION_LO_LEN 4
2541 #define	MC_CMD_GET_VERSION_OUT_VERSION_LO_LBN 192
2542 #define	MC_CMD_GET_VERSION_OUT_VERSION_LO_WIDTH 32
2543 #define	MC_CMD_GET_VERSION_OUT_VERSION_HI_OFST 28
2544 #define	MC_CMD_GET_VERSION_OUT_VERSION_HI_LEN 4
2545 #define	MC_CMD_GET_VERSION_OUT_VERSION_HI_LBN 224
2546 #define	MC_CMD_GET_VERSION_OUT_VERSION_HI_WIDTH 32
2547 
2548 /* MC_CMD_GET_VERSION_EXT_OUT msgresponse */
2549 #define	MC_CMD_GET_VERSION_EXT_OUT_LEN 48
2550 /* This is normally the UTC build time in seconds since epoch or one of the
2551  * special values listed
2552  */
2553 /*            MC_CMD_GET_VERSION_OUT_FIRMWARE_OFST 0 */
2554 /*            MC_CMD_GET_VERSION_OUT_FIRMWARE_LEN 4 */
2555 /*            Enum values, see field(s): */
2556 /*               MC_CMD_GET_VERSION_V0_OUT/MC_CMD_GET_VERSION_OUT_FIRMWARE */
2557 #define	MC_CMD_GET_VERSION_EXT_OUT_PCOL_OFST 4
2558 #define	MC_CMD_GET_VERSION_EXT_OUT_PCOL_LEN 4
2559 /* 128bit mask of functions supported by the current firmware */
2560 #define	MC_CMD_GET_VERSION_EXT_OUT_SUPPORTED_FUNCS_OFST 8
2561 #define	MC_CMD_GET_VERSION_EXT_OUT_SUPPORTED_FUNCS_LEN 16
2562 #define	MC_CMD_GET_VERSION_EXT_OUT_VERSION_OFST 24
2563 #define	MC_CMD_GET_VERSION_EXT_OUT_VERSION_LEN 8
2564 #define	MC_CMD_GET_VERSION_EXT_OUT_VERSION_LO_OFST 24
2565 #define	MC_CMD_GET_VERSION_EXT_OUT_VERSION_LO_LEN 4
2566 #define	MC_CMD_GET_VERSION_EXT_OUT_VERSION_LO_LBN 192
2567 #define	MC_CMD_GET_VERSION_EXT_OUT_VERSION_LO_WIDTH 32
2568 #define	MC_CMD_GET_VERSION_EXT_OUT_VERSION_HI_OFST 28
2569 #define	MC_CMD_GET_VERSION_EXT_OUT_VERSION_HI_LEN 4
2570 #define	MC_CMD_GET_VERSION_EXT_OUT_VERSION_HI_LBN 224
2571 #define	MC_CMD_GET_VERSION_EXT_OUT_VERSION_HI_WIDTH 32
2572 /* extra info */
2573 #define	MC_CMD_GET_VERSION_EXT_OUT_EXTRA_OFST 32
2574 #define	MC_CMD_GET_VERSION_EXT_OUT_EXTRA_LEN 16
2575 
2576 /* MC_CMD_GET_VERSION_V2_OUT msgresponse: Extended response providing version
2577  * information for all adapter components. For Riverhead based designs, base MC
2578  * firmware version fields refer to NMC firmware, while CMC firmware data is in
2579  * dedicated CMC fields. Flags indicate which data is present in the response
2580  * (depending on which components exist on a particular adapter)
2581  */
2582 #define	MC_CMD_GET_VERSION_V2_OUT_LEN 304
2583 /* This is normally the UTC build time in seconds since epoch or one of the
2584  * special values listed
2585  */
2586 /*            MC_CMD_GET_VERSION_OUT_FIRMWARE_OFST 0 */
2587 /*            MC_CMD_GET_VERSION_OUT_FIRMWARE_LEN 4 */
2588 /*            Enum values, see field(s): */
2589 /*               MC_CMD_GET_VERSION_V0_OUT/MC_CMD_GET_VERSION_OUT_FIRMWARE */
2590 #define	MC_CMD_GET_VERSION_V2_OUT_PCOL_OFST 4
2591 #define	MC_CMD_GET_VERSION_V2_OUT_PCOL_LEN 4
2592 /* 128bit mask of functions supported by the current firmware */
2593 #define	MC_CMD_GET_VERSION_V2_OUT_SUPPORTED_FUNCS_OFST 8
2594 #define	MC_CMD_GET_VERSION_V2_OUT_SUPPORTED_FUNCS_LEN 16
2595 #define	MC_CMD_GET_VERSION_V2_OUT_VERSION_OFST 24
2596 #define	MC_CMD_GET_VERSION_V2_OUT_VERSION_LEN 8
2597 #define	MC_CMD_GET_VERSION_V2_OUT_VERSION_LO_OFST 24
2598 #define	MC_CMD_GET_VERSION_V2_OUT_VERSION_LO_LEN 4
2599 #define	MC_CMD_GET_VERSION_V2_OUT_VERSION_LO_LBN 192
2600 #define	MC_CMD_GET_VERSION_V2_OUT_VERSION_LO_WIDTH 32
2601 #define	MC_CMD_GET_VERSION_V2_OUT_VERSION_HI_OFST 28
2602 #define	MC_CMD_GET_VERSION_V2_OUT_VERSION_HI_LEN 4
2603 #define	MC_CMD_GET_VERSION_V2_OUT_VERSION_HI_LBN 224
2604 #define	MC_CMD_GET_VERSION_V2_OUT_VERSION_HI_WIDTH 32
2605 /* extra info */
2606 #define	MC_CMD_GET_VERSION_V2_OUT_EXTRA_OFST 32
2607 #define	MC_CMD_GET_VERSION_V2_OUT_EXTRA_LEN 16
2608 /* Flags indicating which extended fields are valid */
2609 #define	MC_CMD_GET_VERSION_V2_OUT_FLAGS_OFST 48
2610 #define	MC_CMD_GET_VERSION_V2_OUT_FLAGS_LEN 4
2611 #define	MC_CMD_GET_VERSION_V2_OUT_MCFW_EXT_INFO_PRESENT_OFST 48
2612 #define	MC_CMD_GET_VERSION_V2_OUT_MCFW_EXT_INFO_PRESENT_LBN 0
2613 #define	MC_CMD_GET_VERSION_V2_OUT_MCFW_EXT_INFO_PRESENT_WIDTH 1
2614 #define	MC_CMD_GET_VERSION_V2_OUT_SUCFW_EXT_INFO_PRESENT_OFST 48
2615 #define	MC_CMD_GET_VERSION_V2_OUT_SUCFW_EXT_INFO_PRESENT_LBN 1
2616 #define	MC_CMD_GET_VERSION_V2_OUT_SUCFW_EXT_INFO_PRESENT_WIDTH 1
2617 #define	MC_CMD_GET_VERSION_V2_OUT_CMC_EXT_INFO_PRESENT_OFST 48
2618 #define	MC_CMD_GET_VERSION_V2_OUT_CMC_EXT_INFO_PRESENT_LBN 2
2619 #define	MC_CMD_GET_VERSION_V2_OUT_CMC_EXT_INFO_PRESENT_WIDTH 1
2620 #define	MC_CMD_GET_VERSION_V2_OUT_FPGA_EXT_INFO_PRESENT_OFST 48
2621 #define	MC_CMD_GET_VERSION_V2_OUT_FPGA_EXT_INFO_PRESENT_LBN 3
2622 #define	MC_CMD_GET_VERSION_V2_OUT_FPGA_EXT_INFO_PRESENT_WIDTH 1
2623 #define	MC_CMD_GET_VERSION_V2_OUT_BOARD_EXT_INFO_PRESENT_OFST 48
2624 #define	MC_CMD_GET_VERSION_V2_OUT_BOARD_EXT_INFO_PRESENT_LBN 4
2625 #define	MC_CMD_GET_VERSION_V2_OUT_BOARD_EXT_INFO_PRESENT_WIDTH 1
2626 #define	MC_CMD_GET_VERSION_V2_OUT_DATAPATH_HW_VERSION_PRESENT_OFST 48
2627 #define	MC_CMD_GET_VERSION_V2_OUT_DATAPATH_HW_VERSION_PRESENT_LBN 5
2628 #define	MC_CMD_GET_VERSION_V2_OUT_DATAPATH_HW_VERSION_PRESENT_WIDTH 1
2629 #define	MC_CMD_GET_VERSION_V2_OUT_DATAPATH_FW_VERSION_PRESENT_OFST 48
2630 #define	MC_CMD_GET_VERSION_V2_OUT_DATAPATH_FW_VERSION_PRESENT_LBN 6
2631 #define	MC_CMD_GET_VERSION_V2_OUT_DATAPATH_FW_VERSION_PRESENT_WIDTH 1
2632 #define	MC_CMD_GET_VERSION_V2_OUT_SOC_BOOT_VERSION_PRESENT_OFST 48
2633 #define	MC_CMD_GET_VERSION_V2_OUT_SOC_BOOT_VERSION_PRESENT_LBN 7
2634 #define	MC_CMD_GET_VERSION_V2_OUT_SOC_BOOT_VERSION_PRESENT_WIDTH 1
2635 #define	MC_CMD_GET_VERSION_V2_OUT_SOC_UBOOT_VERSION_PRESENT_OFST 48
2636 #define	MC_CMD_GET_VERSION_V2_OUT_SOC_UBOOT_VERSION_PRESENT_LBN 8
2637 #define	MC_CMD_GET_VERSION_V2_OUT_SOC_UBOOT_VERSION_PRESENT_WIDTH 1
2638 #define	MC_CMD_GET_VERSION_V2_OUT_SOC_MAIN_ROOTFS_VERSION_PRESENT_OFST 48
2639 #define	MC_CMD_GET_VERSION_V2_OUT_SOC_MAIN_ROOTFS_VERSION_PRESENT_LBN 9
2640 #define	MC_CMD_GET_VERSION_V2_OUT_SOC_MAIN_ROOTFS_VERSION_PRESENT_WIDTH 1
2641 #define	MC_CMD_GET_VERSION_V2_OUT_SOC_RECOVERY_BUILDROOT_VERSION_PRESENT_OFST 48
2642 #define	MC_CMD_GET_VERSION_V2_OUT_SOC_RECOVERY_BUILDROOT_VERSION_PRESENT_LBN 10
2643 #define	MC_CMD_GET_VERSION_V2_OUT_SOC_RECOVERY_BUILDROOT_VERSION_PRESENT_WIDTH 1
2644 #define	MC_CMD_GET_VERSION_V2_OUT_SUCFW_VERSION_PRESENT_OFST 48
2645 #define	MC_CMD_GET_VERSION_V2_OUT_SUCFW_VERSION_PRESENT_LBN 11
2646 #define	MC_CMD_GET_VERSION_V2_OUT_SUCFW_VERSION_PRESENT_WIDTH 1
2647 #define	MC_CMD_GET_VERSION_V2_OUT_BOARD_VERSION_PRESENT_OFST 48
2648 #define	MC_CMD_GET_VERSION_V2_OUT_BOARD_VERSION_PRESENT_LBN 12
2649 #define	MC_CMD_GET_VERSION_V2_OUT_BOARD_VERSION_PRESENT_WIDTH 1
2650 #define	MC_CMD_GET_VERSION_V2_OUT_BUNDLE_VERSION_PRESENT_OFST 48
2651 #define	MC_CMD_GET_VERSION_V2_OUT_BUNDLE_VERSION_PRESENT_LBN 13
2652 #define	MC_CMD_GET_VERSION_V2_OUT_BUNDLE_VERSION_PRESENT_WIDTH 1
2653 /* MC firmware unique build ID (as binary SHA-1 value) */
2654 #define	MC_CMD_GET_VERSION_V2_OUT_MCFW_BUILD_ID_OFST 52
2655 #define	MC_CMD_GET_VERSION_V2_OUT_MCFW_BUILD_ID_LEN 20
2656 /* MC firmware security level */
2657 #define	MC_CMD_GET_VERSION_V2_OUT_MCFW_SECURITY_LEVEL_OFST 72
2658 #define	MC_CMD_GET_VERSION_V2_OUT_MCFW_SECURITY_LEVEL_LEN 4
2659 /* MC firmware build name (as null-terminated US-ASCII string) */
2660 #define	MC_CMD_GET_VERSION_V2_OUT_MCFW_BUILD_NAME_OFST 76
2661 #define	MC_CMD_GET_VERSION_V2_OUT_MCFW_BUILD_NAME_LEN 64
2662 /* The SUC firmware version as four numbers - a.b.c.d */
2663 #define	MC_CMD_GET_VERSION_V2_OUT_SUCFW_VERSION_OFST 140
2664 #define	MC_CMD_GET_VERSION_V2_OUT_SUCFW_VERSION_LEN 4
2665 #define	MC_CMD_GET_VERSION_V2_OUT_SUCFW_VERSION_NUM 4
2666 /* SUC firmware build date (as 64-bit Unix timestamp) */
2667 #define	MC_CMD_GET_VERSION_V2_OUT_SUCFW_BUILD_DATE_OFST 156
2668 #define	MC_CMD_GET_VERSION_V2_OUT_SUCFW_BUILD_DATE_LEN 8
2669 #define	MC_CMD_GET_VERSION_V2_OUT_SUCFW_BUILD_DATE_LO_OFST 156
2670 #define	MC_CMD_GET_VERSION_V2_OUT_SUCFW_BUILD_DATE_LO_LEN 4
2671 #define	MC_CMD_GET_VERSION_V2_OUT_SUCFW_BUILD_DATE_LO_LBN 1248
2672 #define	MC_CMD_GET_VERSION_V2_OUT_SUCFW_BUILD_DATE_LO_WIDTH 32
2673 #define	MC_CMD_GET_VERSION_V2_OUT_SUCFW_BUILD_DATE_HI_OFST 160
2674 #define	MC_CMD_GET_VERSION_V2_OUT_SUCFW_BUILD_DATE_HI_LEN 4
2675 #define	MC_CMD_GET_VERSION_V2_OUT_SUCFW_BUILD_DATE_HI_LBN 1280
2676 #define	MC_CMD_GET_VERSION_V2_OUT_SUCFW_BUILD_DATE_HI_WIDTH 32
2677 /* The ID of the SUC chip. This is specific to the platform but typically
2678  * indicates family, memory sizes etc. See SF-116728-SW for further details.
2679  */
2680 #define	MC_CMD_GET_VERSION_V2_OUT_SUCFW_CHIP_ID_OFST 164
2681 #define	MC_CMD_GET_VERSION_V2_OUT_SUCFW_CHIP_ID_LEN 4
2682 /* The CMC firmware version as four numbers - a.b.c.d */
2683 #define	MC_CMD_GET_VERSION_V2_OUT_CMCFW_VERSION_OFST 168
2684 #define	MC_CMD_GET_VERSION_V2_OUT_CMCFW_VERSION_LEN 4
2685 #define	MC_CMD_GET_VERSION_V2_OUT_CMCFW_VERSION_NUM 4
2686 /* CMC firmware build date (as 64-bit Unix timestamp) */
2687 #define	MC_CMD_GET_VERSION_V2_OUT_CMCFW_BUILD_DATE_OFST 184
2688 #define	MC_CMD_GET_VERSION_V2_OUT_CMCFW_BUILD_DATE_LEN 8
2689 #define	MC_CMD_GET_VERSION_V2_OUT_CMCFW_BUILD_DATE_LO_OFST 184
2690 #define	MC_CMD_GET_VERSION_V2_OUT_CMCFW_BUILD_DATE_LO_LEN 4
2691 #define	MC_CMD_GET_VERSION_V2_OUT_CMCFW_BUILD_DATE_LO_LBN 1472
2692 #define	MC_CMD_GET_VERSION_V2_OUT_CMCFW_BUILD_DATE_LO_WIDTH 32
2693 #define	MC_CMD_GET_VERSION_V2_OUT_CMCFW_BUILD_DATE_HI_OFST 188
2694 #define	MC_CMD_GET_VERSION_V2_OUT_CMCFW_BUILD_DATE_HI_LEN 4
2695 #define	MC_CMD_GET_VERSION_V2_OUT_CMCFW_BUILD_DATE_HI_LBN 1504
2696 #define	MC_CMD_GET_VERSION_V2_OUT_CMCFW_BUILD_DATE_HI_WIDTH 32
2697 /* FPGA version as three numbers. On Riverhead based systems this field uses
2698  * the same encoding as hardware version ID registers (MC_FPGA_BUILD_HWRD_REG):
2699  * FPGA_VERSION[0]: x => Image H{x} FPGA_VERSION[1]: Revision letter (0 => A, 1
2700  * => B, ...) FPGA_VERSION[2]: Sub-revision number
2701  */
2702 #define	MC_CMD_GET_VERSION_V2_OUT_FPGA_VERSION_OFST 192
2703 #define	MC_CMD_GET_VERSION_V2_OUT_FPGA_VERSION_LEN 4
2704 #define	MC_CMD_GET_VERSION_V2_OUT_FPGA_VERSION_NUM 3
2705 /* Extra FPGA revision information (as null-terminated US-ASCII string) */
2706 #define	MC_CMD_GET_VERSION_V2_OUT_FPGA_EXTRA_OFST 204
2707 #define	MC_CMD_GET_VERSION_V2_OUT_FPGA_EXTRA_LEN 16
2708 /* Board name / adapter model (as null-terminated US-ASCII string) */
2709 #define	MC_CMD_GET_VERSION_V2_OUT_BOARD_NAME_OFST 220
2710 #define	MC_CMD_GET_VERSION_V2_OUT_BOARD_NAME_LEN 16
2711 /* Board revision number */
2712 #define	MC_CMD_GET_VERSION_V2_OUT_BOARD_REVISION_OFST 236
2713 #define	MC_CMD_GET_VERSION_V2_OUT_BOARD_REVISION_LEN 4
2714 /* Board serial number (as null-terminated US-ASCII string) */
2715 #define	MC_CMD_GET_VERSION_V2_OUT_BOARD_SERIAL_OFST 240
2716 #define	MC_CMD_GET_VERSION_V2_OUT_BOARD_SERIAL_LEN 64
2717 
2718 /* MC_CMD_GET_VERSION_V3_OUT msgresponse: Extended response providing version
2719  * information for all adapter components. For Riverhead based designs, base MC
2720  * firmware version fields refer to NMC firmware, while CMC firmware data is in
2721  * dedicated CMC fields. Flags indicate which data is present in the response
2722  * (depending on which components exist on a particular adapter)
2723  */
2724 #define	MC_CMD_GET_VERSION_V3_OUT_LEN 328
2725 /* This is normally the UTC build time in seconds since epoch or one of the
2726  * special values listed
2727  */
2728 /*            MC_CMD_GET_VERSION_OUT_FIRMWARE_OFST 0 */
2729 /*            MC_CMD_GET_VERSION_OUT_FIRMWARE_LEN 4 */
2730 /*            Enum values, see field(s): */
2731 /*               MC_CMD_GET_VERSION_V0_OUT/MC_CMD_GET_VERSION_OUT_FIRMWARE */
2732 #define	MC_CMD_GET_VERSION_V3_OUT_PCOL_OFST 4
2733 #define	MC_CMD_GET_VERSION_V3_OUT_PCOL_LEN 4
2734 /* 128bit mask of functions supported by the current firmware */
2735 #define	MC_CMD_GET_VERSION_V3_OUT_SUPPORTED_FUNCS_OFST 8
2736 #define	MC_CMD_GET_VERSION_V3_OUT_SUPPORTED_FUNCS_LEN 16
2737 #define	MC_CMD_GET_VERSION_V3_OUT_VERSION_OFST 24
2738 #define	MC_CMD_GET_VERSION_V3_OUT_VERSION_LEN 8
2739 #define	MC_CMD_GET_VERSION_V3_OUT_VERSION_LO_OFST 24
2740 #define	MC_CMD_GET_VERSION_V3_OUT_VERSION_LO_LEN 4
2741 #define	MC_CMD_GET_VERSION_V3_OUT_VERSION_LO_LBN 192
2742 #define	MC_CMD_GET_VERSION_V3_OUT_VERSION_LO_WIDTH 32
2743 #define	MC_CMD_GET_VERSION_V3_OUT_VERSION_HI_OFST 28
2744 #define	MC_CMD_GET_VERSION_V3_OUT_VERSION_HI_LEN 4
2745 #define	MC_CMD_GET_VERSION_V3_OUT_VERSION_HI_LBN 224
2746 #define	MC_CMD_GET_VERSION_V3_OUT_VERSION_HI_WIDTH 32
2747 /* extra info */
2748 #define	MC_CMD_GET_VERSION_V3_OUT_EXTRA_OFST 32
2749 #define	MC_CMD_GET_VERSION_V3_OUT_EXTRA_LEN 16
2750 /* Flags indicating which extended fields are valid */
2751 #define	MC_CMD_GET_VERSION_V3_OUT_FLAGS_OFST 48
2752 #define	MC_CMD_GET_VERSION_V3_OUT_FLAGS_LEN 4
2753 #define	MC_CMD_GET_VERSION_V3_OUT_MCFW_EXT_INFO_PRESENT_OFST 48
2754 #define	MC_CMD_GET_VERSION_V3_OUT_MCFW_EXT_INFO_PRESENT_LBN 0
2755 #define	MC_CMD_GET_VERSION_V3_OUT_MCFW_EXT_INFO_PRESENT_WIDTH 1
2756 #define	MC_CMD_GET_VERSION_V3_OUT_SUCFW_EXT_INFO_PRESENT_OFST 48
2757 #define	MC_CMD_GET_VERSION_V3_OUT_SUCFW_EXT_INFO_PRESENT_LBN 1
2758 #define	MC_CMD_GET_VERSION_V3_OUT_SUCFW_EXT_INFO_PRESENT_WIDTH 1
2759 #define	MC_CMD_GET_VERSION_V3_OUT_CMC_EXT_INFO_PRESENT_OFST 48
2760 #define	MC_CMD_GET_VERSION_V3_OUT_CMC_EXT_INFO_PRESENT_LBN 2
2761 #define	MC_CMD_GET_VERSION_V3_OUT_CMC_EXT_INFO_PRESENT_WIDTH 1
2762 #define	MC_CMD_GET_VERSION_V3_OUT_FPGA_EXT_INFO_PRESENT_OFST 48
2763 #define	MC_CMD_GET_VERSION_V3_OUT_FPGA_EXT_INFO_PRESENT_LBN 3
2764 #define	MC_CMD_GET_VERSION_V3_OUT_FPGA_EXT_INFO_PRESENT_WIDTH 1
2765 #define	MC_CMD_GET_VERSION_V3_OUT_BOARD_EXT_INFO_PRESENT_OFST 48
2766 #define	MC_CMD_GET_VERSION_V3_OUT_BOARD_EXT_INFO_PRESENT_LBN 4
2767 #define	MC_CMD_GET_VERSION_V3_OUT_BOARD_EXT_INFO_PRESENT_WIDTH 1
2768 #define	MC_CMD_GET_VERSION_V3_OUT_DATAPATH_HW_VERSION_PRESENT_OFST 48
2769 #define	MC_CMD_GET_VERSION_V3_OUT_DATAPATH_HW_VERSION_PRESENT_LBN 5
2770 #define	MC_CMD_GET_VERSION_V3_OUT_DATAPATH_HW_VERSION_PRESENT_WIDTH 1
2771 #define	MC_CMD_GET_VERSION_V3_OUT_DATAPATH_FW_VERSION_PRESENT_OFST 48
2772 #define	MC_CMD_GET_VERSION_V3_OUT_DATAPATH_FW_VERSION_PRESENT_LBN 6
2773 #define	MC_CMD_GET_VERSION_V3_OUT_DATAPATH_FW_VERSION_PRESENT_WIDTH 1
2774 #define	MC_CMD_GET_VERSION_V3_OUT_SOC_BOOT_VERSION_PRESENT_OFST 48
2775 #define	MC_CMD_GET_VERSION_V3_OUT_SOC_BOOT_VERSION_PRESENT_LBN 7
2776 #define	MC_CMD_GET_VERSION_V3_OUT_SOC_BOOT_VERSION_PRESENT_WIDTH 1
2777 #define	MC_CMD_GET_VERSION_V3_OUT_SOC_UBOOT_VERSION_PRESENT_OFST 48
2778 #define	MC_CMD_GET_VERSION_V3_OUT_SOC_UBOOT_VERSION_PRESENT_LBN 8
2779 #define	MC_CMD_GET_VERSION_V3_OUT_SOC_UBOOT_VERSION_PRESENT_WIDTH 1
2780 #define	MC_CMD_GET_VERSION_V3_OUT_SOC_MAIN_ROOTFS_VERSION_PRESENT_OFST 48
2781 #define	MC_CMD_GET_VERSION_V3_OUT_SOC_MAIN_ROOTFS_VERSION_PRESENT_LBN 9
2782 #define	MC_CMD_GET_VERSION_V3_OUT_SOC_MAIN_ROOTFS_VERSION_PRESENT_WIDTH 1
2783 #define	MC_CMD_GET_VERSION_V3_OUT_SOC_RECOVERY_BUILDROOT_VERSION_PRESENT_OFST 48
2784 #define	MC_CMD_GET_VERSION_V3_OUT_SOC_RECOVERY_BUILDROOT_VERSION_PRESENT_LBN 10
2785 #define	MC_CMD_GET_VERSION_V3_OUT_SOC_RECOVERY_BUILDROOT_VERSION_PRESENT_WIDTH 1
2786 #define	MC_CMD_GET_VERSION_V3_OUT_SUCFW_VERSION_PRESENT_OFST 48
2787 #define	MC_CMD_GET_VERSION_V3_OUT_SUCFW_VERSION_PRESENT_LBN 11
2788 #define	MC_CMD_GET_VERSION_V3_OUT_SUCFW_VERSION_PRESENT_WIDTH 1
2789 #define	MC_CMD_GET_VERSION_V3_OUT_BOARD_VERSION_PRESENT_OFST 48
2790 #define	MC_CMD_GET_VERSION_V3_OUT_BOARD_VERSION_PRESENT_LBN 12
2791 #define	MC_CMD_GET_VERSION_V3_OUT_BOARD_VERSION_PRESENT_WIDTH 1
2792 #define	MC_CMD_GET_VERSION_V3_OUT_BUNDLE_VERSION_PRESENT_OFST 48
2793 #define	MC_CMD_GET_VERSION_V3_OUT_BUNDLE_VERSION_PRESENT_LBN 13
2794 #define	MC_CMD_GET_VERSION_V3_OUT_BUNDLE_VERSION_PRESENT_WIDTH 1
2795 /* MC firmware unique build ID (as binary SHA-1 value) */
2796 #define	MC_CMD_GET_VERSION_V3_OUT_MCFW_BUILD_ID_OFST 52
2797 #define	MC_CMD_GET_VERSION_V3_OUT_MCFW_BUILD_ID_LEN 20
2798 /* MC firmware security level */
2799 #define	MC_CMD_GET_VERSION_V3_OUT_MCFW_SECURITY_LEVEL_OFST 72
2800 #define	MC_CMD_GET_VERSION_V3_OUT_MCFW_SECURITY_LEVEL_LEN 4
2801 /* MC firmware build name (as null-terminated US-ASCII string) */
2802 #define	MC_CMD_GET_VERSION_V3_OUT_MCFW_BUILD_NAME_OFST 76
2803 #define	MC_CMD_GET_VERSION_V3_OUT_MCFW_BUILD_NAME_LEN 64
2804 /* The SUC firmware version as four numbers - a.b.c.d */
2805 #define	MC_CMD_GET_VERSION_V3_OUT_SUCFW_VERSION_OFST 140
2806 #define	MC_CMD_GET_VERSION_V3_OUT_SUCFW_VERSION_LEN 4
2807 #define	MC_CMD_GET_VERSION_V3_OUT_SUCFW_VERSION_NUM 4
2808 /* SUC firmware build date (as 64-bit Unix timestamp) */
2809 #define	MC_CMD_GET_VERSION_V3_OUT_SUCFW_BUILD_DATE_OFST 156
2810 #define	MC_CMD_GET_VERSION_V3_OUT_SUCFW_BUILD_DATE_LEN 8
2811 #define	MC_CMD_GET_VERSION_V3_OUT_SUCFW_BUILD_DATE_LO_OFST 156
2812 #define	MC_CMD_GET_VERSION_V3_OUT_SUCFW_BUILD_DATE_LO_LEN 4
2813 #define	MC_CMD_GET_VERSION_V3_OUT_SUCFW_BUILD_DATE_LO_LBN 1248
2814 #define	MC_CMD_GET_VERSION_V3_OUT_SUCFW_BUILD_DATE_LO_WIDTH 32
2815 #define	MC_CMD_GET_VERSION_V3_OUT_SUCFW_BUILD_DATE_HI_OFST 160
2816 #define	MC_CMD_GET_VERSION_V3_OUT_SUCFW_BUILD_DATE_HI_LEN 4
2817 #define	MC_CMD_GET_VERSION_V3_OUT_SUCFW_BUILD_DATE_HI_LBN 1280
2818 #define	MC_CMD_GET_VERSION_V3_OUT_SUCFW_BUILD_DATE_HI_WIDTH 32
2819 /* The ID of the SUC chip. This is specific to the platform but typically
2820  * indicates family, memory sizes etc. See SF-116728-SW for further details.
2821  */
2822 #define	MC_CMD_GET_VERSION_V3_OUT_SUCFW_CHIP_ID_OFST 164
2823 #define	MC_CMD_GET_VERSION_V3_OUT_SUCFW_CHIP_ID_LEN 4
2824 /* The CMC firmware version as four numbers - a.b.c.d */
2825 #define	MC_CMD_GET_VERSION_V3_OUT_CMCFW_VERSION_OFST 168
2826 #define	MC_CMD_GET_VERSION_V3_OUT_CMCFW_VERSION_LEN 4
2827 #define	MC_CMD_GET_VERSION_V3_OUT_CMCFW_VERSION_NUM 4
2828 /* CMC firmware build date (as 64-bit Unix timestamp) */
2829 #define	MC_CMD_GET_VERSION_V3_OUT_CMCFW_BUILD_DATE_OFST 184
2830 #define	MC_CMD_GET_VERSION_V3_OUT_CMCFW_BUILD_DATE_LEN 8
2831 #define	MC_CMD_GET_VERSION_V3_OUT_CMCFW_BUILD_DATE_LO_OFST 184
2832 #define	MC_CMD_GET_VERSION_V3_OUT_CMCFW_BUILD_DATE_LO_LEN 4
2833 #define	MC_CMD_GET_VERSION_V3_OUT_CMCFW_BUILD_DATE_LO_LBN 1472
2834 #define	MC_CMD_GET_VERSION_V3_OUT_CMCFW_BUILD_DATE_LO_WIDTH 32
2835 #define	MC_CMD_GET_VERSION_V3_OUT_CMCFW_BUILD_DATE_HI_OFST 188
2836 #define	MC_CMD_GET_VERSION_V3_OUT_CMCFW_BUILD_DATE_HI_LEN 4
2837 #define	MC_CMD_GET_VERSION_V3_OUT_CMCFW_BUILD_DATE_HI_LBN 1504
2838 #define	MC_CMD_GET_VERSION_V3_OUT_CMCFW_BUILD_DATE_HI_WIDTH 32
2839 /* FPGA version as three numbers. On Riverhead based systems this field uses
2840  * the same encoding as hardware version ID registers (MC_FPGA_BUILD_HWRD_REG):
2841  * FPGA_VERSION[0]: x => Image H{x} FPGA_VERSION[1]: Revision letter (0 => A, 1
2842  * => B, ...) FPGA_VERSION[2]: Sub-revision number
2843  */
2844 #define	MC_CMD_GET_VERSION_V3_OUT_FPGA_VERSION_OFST 192
2845 #define	MC_CMD_GET_VERSION_V3_OUT_FPGA_VERSION_LEN 4
2846 #define	MC_CMD_GET_VERSION_V3_OUT_FPGA_VERSION_NUM 3
2847 /* Extra FPGA revision information (as null-terminated US-ASCII string) */
2848 #define	MC_CMD_GET_VERSION_V3_OUT_FPGA_EXTRA_OFST 204
2849 #define	MC_CMD_GET_VERSION_V3_OUT_FPGA_EXTRA_LEN 16
2850 /* Board name / adapter model (as null-terminated US-ASCII string) */
2851 #define	MC_CMD_GET_VERSION_V3_OUT_BOARD_NAME_OFST 220
2852 #define	MC_CMD_GET_VERSION_V3_OUT_BOARD_NAME_LEN 16
2853 /* Board revision number */
2854 #define	MC_CMD_GET_VERSION_V3_OUT_BOARD_REVISION_OFST 236
2855 #define	MC_CMD_GET_VERSION_V3_OUT_BOARD_REVISION_LEN 4
2856 /* Board serial number (as null-terminated US-ASCII string) */
2857 #define	MC_CMD_GET_VERSION_V3_OUT_BOARD_SERIAL_OFST 240
2858 #define	MC_CMD_GET_VERSION_V3_OUT_BOARD_SERIAL_LEN 64
2859 /* The version of the datapath hardware design as three number - a.b.c */
2860 #define	MC_CMD_GET_VERSION_V3_OUT_DATAPATH_HW_VERSION_OFST 304
2861 #define	MC_CMD_GET_VERSION_V3_OUT_DATAPATH_HW_VERSION_LEN 4
2862 #define	MC_CMD_GET_VERSION_V3_OUT_DATAPATH_HW_VERSION_NUM 3
2863 /* The version of the firmware library used to control the datapath as three
2864  * number - a.b.c
2865  */
2866 #define	MC_CMD_GET_VERSION_V3_OUT_DATAPATH_FW_VERSION_OFST 316
2867 #define	MC_CMD_GET_VERSION_V3_OUT_DATAPATH_FW_VERSION_LEN 4
2868 #define	MC_CMD_GET_VERSION_V3_OUT_DATAPATH_FW_VERSION_NUM 3
2869 
2870 /* MC_CMD_GET_VERSION_V4_OUT msgresponse: Extended response providing SoC
2871  * version information
2872  */
2873 #define	MC_CMD_GET_VERSION_V4_OUT_LEN 392
2874 /* This is normally the UTC build time in seconds since epoch or one of the
2875  * special values listed
2876  */
2877 /*            MC_CMD_GET_VERSION_OUT_FIRMWARE_OFST 0 */
2878 /*            MC_CMD_GET_VERSION_OUT_FIRMWARE_LEN 4 */
2879 /*            Enum values, see field(s): */
2880 /*               MC_CMD_GET_VERSION_V0_OUT/MC_CMD_GET_VERSION_OUT_FIRMWARE */
2881 #define	MC_CMD_GET_VERSION_V4_OUT_PCOL_OFST 4
2882 #define	MC_CMD_GET_VERSION_V4_OUT_PCOL_LEN 4
2883 /* 128bit mask of functions supported by the current firmware */
2884 #define	MC_CMD_GET_VERSION_V4_OUT_SUPPORTED_FUNCS_OFST 8
2885 #define	MC_CMD_GET_VERSION_V4_OUT_SUPPORTED_FUNCS_LEN 16
2886 #define	MC_CMD_GET_VERSION_V4_OUT_VERSION_OFST 24
2887 #define	MC_CMD_GET_VERSION_V4_OUT_VERSION_LEN 8
2888 #define	MC_CMD_GET_VERSION_V4_OUT_VERSION_LO_OFST 24
2889 #define	MC_CMD_GET_VERSION_V4_OUT_VERSION_LO_LEN 4
2890 #define	MC_CMD_GET_VERSION_V4_OUT_VERSION_LO_LBN 192
2891 #define	MC_CMD_GET_VERSION_V4_OUT_VERSION_LO_WIDTH 32
2892 #define	MC_CMD_GET_VERSION_V4_OUT_VERSION_HI_OFST 28
2893 #define	MC_CMD_GET_VERSION_V4_OUT_VERSION_HI_LEN 4
2894 #define	MC_CMD_GET_VERSION_V4_OUT_VERSION_HI_LBN 224
2895 #define	MC_CMD_GET_VERSION_V4_OUT_VERSION_HI_WIDTH 32
2896 /* extra info */
2897 #define	MC_CMD_GET_VERSION_V4_OUT_EXTRA_OFST 32
2898 #define	MC_CMD_GET_VERSION_V4_OUT_EXTRA_LEN 16
2899 /* Flags indicating which extended fields are valid */
2900 #define	MC_CMD_GET_VERSION_V4_OUT_FLAGS_OFST 48
2901 #define	MC_CMD_GET_VERSION_V4_OUT_FLAGS_LEN 4
2902 #define	MC_CMD_GET_VERSION_V4_OUT_MCFW_EXT_INFO_PRESENT_OFST 48
2903 #define	MC_CMD_GET_VERSION_V4_OUT_MCFW_EXT_INFO_PRESENT_LBN 0
2904 #define	MC_CMD_GET_VERSION_V4_OUT_MCFW_EXT_INFO_PRESENT_WIDTH 1
2905 #define	MC_CMD_GET_VERSION_V4_OUT_SUCFW_EXT_INFO_PRESENT_OFST 48
2906 #define	MC_CMD_GET_VERSION_V4_OUT_SUCFW_EXT_INFO_PRESENT_LBN 1
2907 #define	MC_CMD_GET_VERSION_V4_OUT_SUCFW_EXT_INFO_PRESENT_WIDTH 1
2908 #define	MC_CMD_GET_VERSION_V4_OUT_CMC_EXT_INFO_PRESENT_OFST 48
2909 #define	MC_CMD_GET_VERSION_V4_OUT_CMC_EXT_INFO_PRESENT_LBN 2
2910 #define	MC_CMD_GET_VERSION_V4_OUT_CMC_EXT_INFO_PRESENT_WIDTH 1
2911 #define	MC_CMD_GET_VERSION_V4_OUT_FPGA_EXT_INFO_PRESENT_OFST 48
2912 #define	MC_CMD_GET_VERSION_V4_OUT_FPGA_EXT_INFO_PRESENT_LBN 3
2913 #define	MC_CMD_GET_VERSION_V4_OUT_FPGA_EXT_INFO_PRESENT_WIDTH 1
2914 #define	MC_CMD_GET_VERSION_V4_OUT_BOARD_EXT_INFO_PRESENT_OFST 48
2915 #define	MC_CMD_GET_VERSION_V4_OUT_BOARD_EXT_INFO_PRESENT_LBN 4
2916 #define	MC_CMD_GET_VERSION_V4_OUT_BOARD_EXT_INFO_PRESENT_WIDTH 1
2917 #define	MC_CMD_GET_VERSION_V4_OUT_DATAPATH_HW_VERSION_PRESENT_OFST 48
2918 #define	MC_CMD_GET_VERSION_V4_OUT_DATAPATH_HW_VERSION_PRESENT_LBN 5
2919 #define	MC_CMD_GET_VERSION_V4_OUT_DATAPATH_HW_VERSION_PRESENT_WIDTH 1
2920 #define	MC_CMD_GET_VERSION_V4_OUT_DATAPATH_FW_VERSION_PRESENT_OFST 48
2921 #define	MC_CMD_GET_VERSION_V4_OUT_DATAPATH_FW_VERSION_PRESENT_LBN 6
2922 #define	MC_CMD_GET_VERSION_V4_OUT_DATAPATH_FW_VERSION_PRESENT_WIDTH 1
2923 #define	MC_CMD_GET_VERSION_V4_OUT_SOC_BOOT_VERSION_PRESENT_OFST 48
2924 #define	MC_CMD_GET_VERSION_V4_OUT_SOC_BOOT_VERSION_PRESENT_LBN 7
2925 #define	MC_CMD_GET_VERSION_V4_OUT_SOC_BOOT_VERSION_PRESENT_WIDTH 1
2926 #define	MC_CMD_GET_VERSION_V4_OUT_SOC_UBOOT_VERSION_PRESENT_OFST 48
2927 #define	MC_CMD_GET_VERSION_V4_OUT_SOC_UBOOT_VERSION_PRESENT_LBN 8
2928 #define	MC_CMD_GET_VERSION_V4_OUT_SOC_UBOOT_VERSION_PRESENT_WIDTH 1
2929 #define	MC_CMD_GET_VERSION_V4_OUT_SOC_MAIN_ROOTFS_VERSION_PRESENT_OFST 48
2930 #define	MC_CMD_GET_VERSION_V4_OUT_SOC_MAIN_ROOTFS_VERSION_PRESENT_LBN 9
2931 #define	MC_CMD_GET_VERSION_V4_OUT_SOC_MAIN_ROOTFS_VERSION_PRESENT_WIDTH 1
2932 #define	MC_CMD_GET_VERSION_V4_OUT_SOC_RECOVERY_BUILDROOT_VERSION_PRESENT_OFST 48
2933 #define	MC_CMD_GET_VERSION_V4_OUT_SOC_RECOVERY_BUILDROOT_VERSION_PRESENT_LBN 10
2934 #define	MC_CMD_GET_VERSION_V4_OUT_SOC_RECOVERY_BUILDROOT_VERSION_PRESENT_WIDTH 1
2935 #define	MC_CMD_GET_VERSION_V4_OUT_SUCFW_VERSION_PRESENT_OFST 48
2936 #define	MC_CMD_GET_VERSION_V4_OUT_SUCFW_VERSION_PRESENT_LBN 11
2937 #define	MC_CMD_GET_VERSION_V4_OUT_SUCFW_VERSION_PRESENT_WIDTH 1
2938 #define	MC_CMD_GET_VERSION_V4_OUT_BOARD_VERSION_PRESENT_OFST 48
2939 #define	MC_CMD_GET_VERSION_V4_OUT_BOARD_VERSION_PRESENT_LBN 12
2940 #define	MC_CMD_GET_VERSION_V4_OUT_BOARD_VERSION_PRESENT_WIDTH 1
2941 #define	MC_CMD_GET_VERSION_V4_OUT_BUNDLE_VERSION_PRESENT_OFST 48
2942 #define	MC_CMD_GET_VERSION_V4_OUT_BUNDLE_VERSION_PRESENT_LBN 13
2943 #define	MC_CMD_GET_VERSION_V4_OUT_BUNDLE_VERSION_PRESENT_WIDTH 1
2944 /* MC firmware unique build ID (as binary SHA-1 value) */
2945 #define	MC_CMD_GET_VERSION_V4_OUT_MCFW_BUILD_ID_OFST 52
2946 #define	MC_CMD_GET_VERSION_V4_OUT_MCFW_BUILD_ID_LEN 20
2947 /* MC firmware security level */
2948 #define	MC_CMD_GET_VERSION_V4_OUT_MCFW_SECURITY_LEVEL_OFST 72
2949 #define	MC_CMD_GET_VERSION_V4_OUT_MCFW_SECURITY_LEVEL_LEN 4
2950 /* MC firmware build name (as null-terminated US-ASCII string) */
2951 #define	MC_CMD_GET_VERSION_V4_OUT_MCFW_BUILD_NAME_OFST 76
2952 #define	MC_CMD_GET_VERSION_V4_OUT_MCFW_BUILD_NAME_LEN 64
2953 /* The SUC firmware version as four numbers - a.b.c.d */
2954 #define	MC_CMD_GET_VERSION_V4_OUT_SUCFW_VERSION_OFST 140
2955 #define	MC_CMD_GET_VERSION_V4_OUT_SUCFW_VERSION_LEN 4
2956 #define	MC_CMD_GET_VERSION_V4_OUT_SUCFW_VERSION_NUM 4
2957 /* SUC firmware build date (as 64-bit Unix timestamp) */
2958 #define	MC_CMD_GET_VERSION_V4_OUT_SUCFW_BUILD_DATE_OFST 156
2959 #define	MC_CMD_GET_VERSION_V4_OUT_SUCFW_BUILD_DATE_LEN 8
2960 #define	MC_CMD_GET_VERSION_V4_OUT_SUCFW_BUILD_DATE_LO_OFST 156
2961 #define	MC_CMD_GET_VERSION_V4_OUT_SUCFW_BUILD_DATE_LO_LEN 4
2962 #define	MC_CMD_GET_VERSION_V4_OUT_SUCFW_BUILD_DATE_LO_LBN 1248
2963 #define	MC_CMD_GET_VERSION_V4_OUT_SUCFW_BUILD_DATE_LO_WIDTH 32
2964 #define	MC_CMD_GET_VERSION_V4_OUT_SUCFW_BUILD_DATE_HI_OFST 160
2965 #define	MC_CMD_GET_VERSION_V4_OUT_SUCFW_BUILD_DATE_HI_LEN 4
2966 #define	MC_CMD_GET_VERSION_V4_OUT_SUCFW_BUILD_DATE_HI_LBN 1280
2967 #define	MC_CMD_GET_VERSION_V4_OUT_SUCFW_BUILD_DATE_HI_WIDTH 32
2968 /* The ID of the SUC chip. This is specific to the platform but typically
2969  * indicates family, memory sizes etc. See SF-116728-SW for further details.
2970  */
2971 #define	MC_CMD_GET_VERSION_V4_OUT_SUCFW_CHIP_ID_OFST 164
2972 #define	MC_CMD_GET_VERSION_V4_OUT_SUCFW_CHIP_ID_LEN 4
2973 /* The CMC firmware version as four numbers - a.b.c.d */
2974 #define	MC_CMD_GET_VERSION_V4_OUT_CMCFW_VERSION_OFST 168
2975 #define	MC_CMD_GET_VERSION_V4_OUT_CMCFW_VERSION_LEN 4
2976 #define	MC_CMD_GET_VERSION_V4_OUT_CMCFW_VERSION_NUM 4
2977 /* CMC firmware build date (as 64-bit Unix timestamp) */
2978 #define	MC_CMD_GET_VERSION_V4_OUT_CMCFW_BUILD_DATE_OFST 184
2979 #define	MC_CMD_GET_VERSION_V4_OUT_CMCFW_BUILD_DATE_LEN 8
2980 #define	MC_CMD_GET_VERSION_V4_OUT_CMCFW_BUILD_DATE_LO_OFST 184
2981 #define	MC_CMD_GET_VERSION_V4_OUT_CMCFW_BUILD_DATE_LO_LEN 4
2982 #define	MC_CMD_GET_VERSION_V4_OUT_CMCFW_BUILD_DATE_LO_LBN 1472
2983 #define	MC_CMD_GET_VERSION_V4_OUT_CMCFW_BUILD_DATE_LO_WIDTH 32
2984 #define	MC_CMD_GET_VERSION_V4_OUT_CMCFW_BUILD_DATE_HI_OFST 188
2985 #define	MC_CMD_GET_VERSION_V4_OUT_CMCFW_BUILD_DATE_HI_LEN 4
2986 #define	MC_CMD_GET_VERSION_V4_OUT_CMCFW_BUILD_DATE_HI_LBN 1504
2987 #define	MC_CMD_GET_VERSION_V4_OUT_CMCFW_BUILD_DATE_HI_WIDTH 32
2988 /* FPGA version as three numbers. On Riverhead based systems this field uses
2989  * the same encoding as hardware version ID registers (MC_FPGA_BUILD_HWRD_REG):
2990  * FPGA_VERSION[0]: x => Image H{x} FPGA_VERSION[1]: Revision letter (0 => A, 1
2991  * => B, ...) FPGA_VERSION[2]: Sub-revision number
2992  */
2993 #define	MC_CMD_GET_VERSION_V4_OUT_FPGA_VERSION_OFST 192
2994 #define	MC_CMD_GET_VERSION_V4_OUT_FPGA_VERSION_LEN 4
2995 #define	MC_CMD_GET_VERSION_V4_OUT_FPGA_VERSION_NUM 3
2996 /* Extra FPGA revision information (as null-terminated US-ASCII string) */
2997 #define	MC_CMD_GET_VERSION_V4_OUT_FPGA_EXTRA_OFST 204
2998 #define	MC_CMD_GET_VERSION_V4_OUT_FPGA_EXTRA_LEN 16
2999 /* Board name / adapter model (as null-terminated US-ASCII string) */
3000 #define	MC_CMD_GET_VERSION_V4_OUT_BOARD_NAME_OFST 220
3001 #define	MC_CMD_GET_VERSION_V4_OUT_BOARD_NAME_LEN 16
3002 /* Board revision number */
3003 #define	MC_CMD_GET_VERSION_V4_OUT_BOARD_REVISION_OFST 236
3004 #define	MC_CMD_GET_VERSION_V4_OUT_BOARD_REVISION_LEN 4
3005 /* Board serial number (as null-terminated US-ASCII string) */
3006 #define	MC_CMD_GET_VERSION_V4_OUT_BOARD_SERIAL_OFST 240
3007 #define	MC_CMD_GET_VERSION_V4_OUT_BOARD_SERIAL_LEN 64
3008 /* The version of the datapath hardware design as three number - a.b.c */
3009 #define	MC_CMD_GET_VERSION_V4_OUT_DATAPATH_HW_VERSION_OFST 304
3010 #define	MC_CMD_GET_VERSION_V4_OUT_DATAPATH_HW_VERSION_LEN 4
3011 #define	MC_CMD_GET_VERSION_V4_OUT_DATAPATH_HW_VERSION_NUM 3
3012 /* The version of the firmware library used to control the datapath as three
3013  * number - a.b.c
3014  */
3015 #define	MC_CMD_GET_VERSION_V4_OUT_DATAPATH_FW_VERSION_OFST 316
3016 #define	MC_CMD_GET_VERSION_V4_OUT_DATAPATH_FW_VERSION_LEN 4
3017 #define	MC_CMD_GET_VERSION_V4_OUT_DATAPATH_FW_VERSION_NUM 3
3018 /* The SOC boot version as four numbers - a.b.c.d */
3019 #define	MC_CMD_GET_VERSION_V4_OUT_SOC_BOOT_VERSION_OFST 328
3020 #define	MC_CMD_GET_VERSION_V4_OUT_SOC_BOOT_VERSION_LEN 4
3021 #define	MC_CMD_GET_VERSION_V4_OUT_SOC_BOOT_VERSION_NUM 4
3022 /* The SOC uboot version as four numbers - a.b.c.d */
3023 #define	MC_CMD_GET_VERSION_V4_OUT_SOC_UBOOT_VERSION_OFST 344
3024 #define	MC_CMD_GET_VERSION_V4_OUT_SOC_UBOOT_VERSION_LEN 4
3025 #define	MC_CMD_GET_VERSION_V4_OUT_SOC_UBOOT_VERSION_NUM 4
3026 /* The SOC main rootfs version as four numbers - a.b.c.d */
3027 #define	MC_CMD_GET_VERSION_V4_OUT_SOC_MAIN_ROOTFS_VERSION_OFST 360
3028 #define	MC_CMD_GET_VERSION_V4_OUT_SOC_MAIN_ROOTFS_VERSION_LEN 4
3029 #define	MC_CMD_GET_VERSION_V4_OUT_SOC_MAIN_ROOTFS_VERSION_NUM 4
3030 /* The SOC recovery buildroot version as four numbers - a.b.c.d */
3031 #define	MC_CMD_GET_VERSION_V4_OUT_SOC_RECOVERY_BUILDROOT_VERSION_OFST 376
3032 #define	MC_CMD_GET_VERSION_V4_OUT_SOC_RECOVERY_BUILDROOT_VERSION_LEN 4
3033 #define	MC_CMD_GET_VERSION_V4_OUT_SOC_RECOVERY_BUILDROOT_VERSION_NUM 4
3034 
3035 /* MC_CMD_GET_VERSION_V5_OUT msgresponse: Extended response providing bundle
3036  * and board version information
3037  */
3038 #define	MC_CMD_GET_VERSION_V5_OUT_LEN 424
3039 /* This is normally the UTC build time in seconds since epoch or one of the
3040  * special values listed
3041  */
3042 /*            MC_CMD_GET_VERSION_OUT_FIRMWARE_OFST 0 */
3043 /*            MC_CMD_GET_VERSION_OUT_FIRMWARE_LEN 4 */
3044 /*            Enum values, see field(s): */
3045 /*               MC_CMD_GET_VERSION_V0_OUT/MC_CMD_GET_VERSION_OUT_FIRMWARE */
3046 #define	MC_CMD_GET_VERSION_V5_OUT_PCOL_OFST 4
3047 #define	MC_CMD_GET_VERSION_V5_OUT_PCOL_LEN 4
3048 /* 128bit mask of functions supported by the current firmware */
3049 #define	MC_CMD_GET_VERSION_V5_OUT_SUPPORTED_FUNCS_OFST 8
3050 #define	MC_CMD_GET_VERSION_V5_OUT_SUPPORTED_FUNCS_LEN 16
3051 #define	MC_CMD_GET_VERSION_V5_OUT_VERSION_OFST 24
3052 #define	MC_CMD_GET_VERSION_V5_OUT_VERSION_LEN 8
3053 #define	MC_CMD_GET_VERSION_V5_OUT_VERSION_LO_OFST 24
3054 #define	MC_CMD_GET_VERSION_V5_OUT_VERSION_LO_LEN 4
3055 #define	MC_CMD_GET_VERSION_V5_OUT_VERSION_LO_LBN 192
3056 #define	MC_CMD_GET_VERSION_V5_OUT_VERSION_LO_WIDTH 32
3057 #define	MC_CMD_GET_VERSION_V5_OUT_VERSION_HI_OFST 28
3058 #define	MC_CMD_GET_VERSION_V5_OUT_VERSION_HI_LEN 4
3059 #define	MC_CMD_GET_VERSION_V5_OUT_VERSION_HI_LBN 224
3060 #define	MC_CMD_GET_VERSION_V5_OUT_VERSION_HI_WIDTH 32
3061 /* extra info */
3062 #define	MC_CMD_GET_VERSION_V5_OUT_EXTRA_OFST 32
3063 #define	MC_CMD_GET_VERSION_V5_OUT_EXTRA_LEN 16
3064 /* Flags indicating which extended fields are valid */
3065 #define	MC_CMD_GET_VERSION_V5_OUT_FLAGS_OFST 48
3066 #define	MC_CMD_GET_VERSION_V5_OUT_FLAGS_LEN 4
3067 #define	MC_CMD_GET_VERSION_V5_OUT_MCFW_EXT_INFO_PRESENT_OFST 48
3068 #define	MC_CMD_GET_VERSION_V5_OUT_MCFW_EXT_INFO_PRESENT_LBN 0
3069 #define	MC_CMD_GET_VERSION_V5_OUT_MCFW_EXT_INFO_PRESENT_WIDTH 1
3070 #define	MC_CMD_GET_VERSION_V5_OUT_SUCFW_EXT_INFO_PRESENT_OFST 48
3071 #define	MC_CMD_GET_VERSION_V5_OUT_SUCFW_EXT_INFO_PRESENT_LBN 1
3072 #define	MC_CMD_GET_VERSION_V5_OUT_SUCFW_EXT_INFO_PRESENT_WIDTH 1
3073 #define	MC_CMD_GET_VERSION_V5_OUT_CMC_EXT_INFO_PRESENT_OFST 48
3074 #define	MC_CMD_GET_VERSION_V5_OUT_CMC_EXT_INFO_PRESENT_LBN 2
3075 #define	MC_CMD_GET_VERSION_V5_OUT_CMC_EXT_INFO_PRESENT_WIDTH 1
3076 #define	MC_CMD_GET_VERSION_V5_OUT_FPGA_EXT_INFO_PRESENT_OFST 48
3077 #define	MC_CMD_GET_VERSION_V5_OUT_FPGA_EXT_INFO_PRESENT_LBN 3
3078 #define	MC_CMD_GET_VERSION_V5_OUT_FPGA_EXT_INFO_PRESENT_WIDTH 1
3079 #define	MC_CMD_GET_VERSION_V5_OUT_BOARD_EXT_INFO_PRESENT_OFST 48
3080 #define	MC_CMD_GET_VERSION_V5_OUT_BOARD_EXT_INFO_PRESENT_LBN 4
3081 #define	MC_CMD_GET_VERSION_V5_OUT_BOARD_EXT_INFO_PRESENT_WIDTH 1
3082 #define	MC_CMD_GET_VERSION_V5_OUT_DATAPATH_HW_VERSION_PRESENT_OFST 48
3083 #define	MC_CMD_GET_VERSION_V5_OUT_DATAPATH_HW_VERSION_PRESENT_LBN 5
3084 #define	MC_CMD_GET_VERSION_V5_OUT_DATAPATH_HW_VERSION_PRESENT_WIDTH 1
3085 #define	MC_CMD_GET_VERSION_V5_OUT_DATAPATH_FW_VERSION_PRESENT_OFST 48
3086 #define	MC_CMD_GET_VERSION_V5_OUT_DATAPATH_FW_VERSION_PRESENT_LBN 6
3087 #define	MC_CMD_GET_VERSION_V5_OUT_DATAPATH_FW_VERSION_PRESENT_WIDTH 1
3088 #define	MC_CMD_GET_VERSION_V5_OUT_SOC_BOOT_VERSION_PRESENT_OFST 48
3089 #define	MC_CMD_GET_VERSION_V5_OUT_SOC_BOOT_VERSION_PRESENT_LBN 7
3090 #define	MC_CMD_GET_VERSION_V5_OUT_SOC_BOOT_VERSION_PRESENT_WIDTH 1
3091 #define	MC_CMD_GET_VERSION_V5_OUT_SOC_UBOOT_VERSION_PRESENT_OFST 48
3092 #define	MC_CMD_GET_VERSION_V5_OUT_SOC_UBOOT_VERSION_PRESENT_LBN 8
3093 #define	MC_CMD_GET_VERSION_V5_OUT_SOC_UBOOT_VERSION_PRESENT_WIDTH 1
3094 #define	MC_CMD_GET_VERSION_V5_OUT_SOC_MAIN_ROOTFS_VERSION_PRESENT_OFST 48
3095 #define	MC_CMD_GET_VERSION_V5_OUT_SOC_MAIN_ROOTFS_VERSION_PRESENT_LBN 9
3096 #define	MC_CMD_GET_VERSION_V5_OUT_SOC_MAIN_ROOTFS_VERSION_PRESENT_WIDTH 1
3097 #define	MC_CMD_GET_VERSION_V5_OUT_SOC_RECOVERY_BUILDROOT_VERSION_PRESENT_OFST 48
3098 #define	MC_CMD_GET_VERSION_V5_OUT_SOC_RECOVERY_BUILDROOT_VERSION_PRESENT_LBN 10
3099 #define	MC_CMD_GET_VERSION_V5_OUT_SOC_RECOVERY_BUILDROOT_VERSION_PRESENT_WIDTH 1
3100 #define	MC_CMD_GET_VERSION_V5_OUT_SUCFW_VERSION_PRESENT_OFST 48
3101 #define	MC_CMD_GET_VERSION_V5_OUT_SUCFW_VERSION_PRESENT_LBN 11
3102 #define	MC_CMD_GET_VERSION_V5_OUT_SUCFW_VERSION_PRESENT_WIDTH 1
3103 #define	MC_CMD_GET_VERSION_V5_OUT_BOARD_VERSION_PRESENT_OFST 48
3104 #define	MC_CMD_GET_VERSION_V5_OUT_BOARD_VERSION_PRESENT_LBN 12
3105 #define	MC_CMD_GET_VERSION_V5_OUT_BOARD_VERSION_PRESENT_WIDTH 1
3106 #define	MC_CMD_GET_VERSION_V5_OUT_BUNDLE_VERSION_PRESENT_OFST 48
3107 #define	MC_CMD_GET_VERSION_V5_OUT_BUNDLE_VERSION_PRESENT_LBN 13
3108 #define	MC_CMD_GET_VERSION_V5_OUT_BUNDLE_VERSION_PRESENT_WIDTH 1
3109 /* MC firmware unique build ID (as binary SHA-1 value) */
3110 #define	MC_CMD_GET_VERSION_V5_OUT_MCFW_BUILD_ID_OFST 52
3111 #define	MC_CMD_GET_VERSION_V5_OUT_MCFW_BUILD_ID_LEN 20
3112 /* MC firmware security level */
3113 #define	MC_CMD_GET_VERSION_V5_OUT_MCFW_SECURITY_LEVEL_OFST 72
3114 #define	MC_CMD_GET_VERSION_V5_OUT_MCFW_SECURITY_LEVEL_LEN 4
3115 /* MC firmware build name (as null-terminated US-ASCII string) */
3116 #define	MC_CMD_GET_VERSION_V5_OUT_MCFW_BUILD_NAME_OFST 76
3117 #define	MC_CMD_GET_VERSION_V5_OUT_MCFW_BUILD_NAME_LEN 64
3118 /* The SUC firmware version as four numbers - a.b.c.d */
3119 #define	MC_CMD_GET_VERSION_V5_OUT_SUCFW_VERSION_OFST 140
3120 #define	MC_CMD_GET_VERSION_V5_OUT_SUCFW_VERSION_LEN 4
3121 #define	MC_CMD_GET_VERSION_V5_OUT_SUCFW_VERSION_NUM 4
3122 /* SUC firmware build date (as 64-bit Unix timestamp) */
3123 #define	MC_CMD_GET_VERSION_V5_OUT_SUCFW_BUILD_DATE_OFST 156
3124 #define	MC_CMD_GET_VERSION_V5_OUT_SUCFW_BUILD_DATE_LEN 8
3125 #define	MC_CMD_GET_VERSION_V5_OUT_SUCFW_BUILD_DATE_LO_OFST 156
3126 #define	MC_CMD_GET_VERSION_V5_OUT_SUCFW_BUILD_DATE_LO_LEN 4
3127 #define	MC_CMD_GET_VERSION_V5_OUT_SUCFW_BUILD_DATE_LO_LBN 1248
3128 #define	MC_CMD_GET_VERSION_V5_OUT_SUCFW_BUILD_DATE_LO_WIDTH 32
3129 #define	MC_CMD_GET_VERSION_V5_OUT_SUCFW_BUILD_DATE_HI_OFST 160
3130 #define	MC_CMD_GET_VERSION_V5_OUT_SUCFW_BUILD_DATE_HI_LEN 4
3131 #define	MC_CMD_GET_VERSION_V5_OUT_SUCFW_BUILD_DATE_HI_LBN 1280
3132 #define	MC_CMD_GET_VERSION_V5_OUT_SUCFW_BUILD_DATE_HI_WIDTH 32
3133 /* The ID of the SUC chip. This is specific to the platform but typically
3134  * indicates family, memory sizes etc. See SF-116728-SW for further details.
3135  */
3136 #define	MC_CMD_GET_VERSION_V5_OUT_SUCFW_CHIP_ID_OFST 164
3137 #define	MC_CMD_GET_VERSION_V5_OUT_SUCFW_CHIP_ID_LEN 4
3138 /* The CMC firmware version as four numbers - a.b.c.d */
3139 #define	MC_CMD_GET_VERSION_V5_OUT_CMCFW_VERSION_OFST 168
3140 #define	MC_CMD_GET_VERSION_V5_OUT_CMCFW_VERSION_LEN 4
3141 #define	MC_CMD_GET_VERSION_V5_OUT_CMCFW_VERSION_NUM 4
3142 /* CMC firmware build date (as 64-bit Unix timestamp) */
3143 #define	MC_CMD_GET_VERSION_V5_OUT_CMCFW_BUILD_DATE_OFST 184
3144 #define	MC_CMD_GET_VERSION_V5_OUT_CMCFW_BUILD_DATE_LEN 8
3145 #define	MC_CMD_GET_VERSION_V5_OUT_CMCFW_BUILD_DATE_LO_OFST 184
3146 #define	MC_CMD_GET_VERSION_V5_OUT_CMCFW_BUILD_DATE_LO_LEN 4
3147 #define	MC_CMD_GET_VERSION_V5_OUT_CMCFW_BUILD_DATE_LO_LBN 1472
3148 #define	MC_CMD_GET_VERSION_V5_OUT_CMCFW_BUILD_DATE_LO_WIDTH 32
3149 #define	MC_CMD_GET_VERSION_V5_OUT_CMCFW_BUILD_DATE_HI_OFST 188
3150 #define	MC_CMD_GET_VERSION_V5_OUT_CMCFW_BUILD_DATE_HI_LEN 4
3151 #define	MC_CMD_GET_VERSION_V5_OUT_CMCFW_BUILD_DATE_HI_LBN 1504
3152 #define	MC_CMD_GET_VERSION_V5_OUT_CMCFW_BUILD_DATE_HI_WIDTH 32
3153 /* FPGA version as three numbers. On Riverhead based systems this field uses
3154  * the same encoding as hardware version ID registers (MC_FPGA_BUILD_HWRD_REG):
3155  * FPGA_VERSION[0]: x => Image H{x} FPGA_VERSION[1]: Revision letter (0 => A, 1
3156  * => B, ...) FPGA_VERSION[2]: Sub-revision number
3157  */
3158 #define	MC_CMD_GET_VERSION_V5_OUT_FPGA_VERSION_OFST 192
3159 #define	MC_CMD_GET_VERSION_V5_OUT_FPGA_VERSION_LEN 4
3160 #define	MC_CMD_GET_VERSION_V5_OUT_FPGA_VERSION_NUM 3
3161 /* Extra FPGA revision information (as null-terminated US-ASCII string) */
3162 #define	MC_CMD_GET_VERSION_V5_OUT_FPGA_EXTRA_OFST 204
3163 #define	MC_CMD_GET_VERSION_V5_OUT_FPGA_EXTRA_LEN 16
3164 /* Board name / adapter model (as null-terminated US-ASCII string) */
3165 #define	MC_CMD_GET_VERSION_V5_OUT_BOARD_NAME_OFST 220
3166 #define	MC_CMD_GET_VERSION_V5_OUT_BOARD_NAME_LEN 16
3167 /* Board revision number */
3168 #define	MC_CMD_GET_VERSION_V5_OUT_BOARD_REVISION_OFST 236
3169 #define	MC_CMD_GET_VERSION_V5_OUT_BOARD_REVISION_LEN 4
3170 /* Board serial number (as null-terminated US-ASCII string) */
3171 #define	MC_CMD_GET_VERSION_V5_OUT_BOARD_SERIAL_OFST 240
3172 #define	MC_CMD_GET_VERSION_V5_OUT_BOARD_SERIAL_LEN 64
3173 /* The version of the datapath hardware design as three number - a.b.c */
3174 #define	MC_CMD_GET_VERSION_V5_OUT_DATAPATH_HW_VERSION_OFST 304
3175 #define	MC_CMD_GET_VERSION_V5_OUT_DATAPATH_HW_VERSION_LEN 4
3176 #define	MC_CMD_GET_VERSION_V5_OUT_DATAPATH_HW_VERSION_NUM 3
3177 /* The version of the firmware library used to control the datapath as three
3178  * number - a.b.c
3179  */
3180 #define	MC_CMD_GET_VERSION_V5_OUT_DATAPATH_FW_VERSION_OFST 316
3181 #define	MC_CMD_GET_VERSION_V5_OUT_DATAPATH_FW_VERSION_LEN 4
3182 #define	MC_CMD_GET_VERSION_V5_OUT_DATAPATH_FW_VERSION_NUM 3
3183 /* The SOC boot version as four numbers - a.b.c.d */
3184 #define	MC_CMD_GET_VERSION_V5_OUT_SOC_BOOT_VERSION_OFST 328
3185 #define	MC_CMD_GET_VERSION_V5_OUT_SOC_BOOT_VERSION_LEN 4
3186 #define	MC_CMD_GET_VERSION_V5_OUT_SOC_BOOT_VERSION_NUM 4
3187 /* The SOC uboot version as four numbers - a.b.c.d */
3188 #define	MC_CMD_GET_VERSION_V5_OUT_SOC_UBOOT_VERSION_OFST 344
3189 #define	MC_CMD_GET_VERSION_V5_OUT_SOC_UBOOT_VERSION_LEN 4
3190 #define	MC_CMD_GET_VERSION_V5_OUT_SOC_UBOOT_VERSION_NUM 4
3191 /* The SOC main rootfs version as four numbers - a.b.c.d */
3192 #define	MC_CMD_GET_VERSION_V5_OUT_SOC_MAIN_ROOTFS_VERSION_OFST 360
3193 #define	MC_CMD_GET_VERSION_V5_OUT_SOC_MAIN_ROOTFS_VERSION_LEN 4
3194 #define	MC_CMD_GET_VERSION_V5_OUT_SOC_MAIN_ROOTFS_VERSION_NUM 4
3195 /* The SOC recovery buildroot version as four numbers - a.b.c.d */
3196 #define	MC_CMD_GET_VERSION_V5_OUT_SOC_RECOVERY_BUILDROOT_VERSION_OFST 376
3197 #define	MC_CMD_GET_VERSION_V5_OUT_SOC_RECOVERY_BUILDROOT_VERSION_LEN 4
3198 #define	MC_CMD_GET_VERSION_V5_OUT_SOC_RECOVERY_BUILDROOT_VERSION_NUM 4
3199 /* Board version as four numbers - a.b.c.d. BOARD_VERSION[0] duplicates the
3200  * BOARD_REVISION field
3201  */
3202 #define	MC_CMD_GET_VERSION_V5_OUT_BOARD_VERSION_OFST 392
3203 #define	MC_CMD_GET_VERSION_V5_OUT_BOARD_VERSION_LEN 4
3204 #define	MC_CMD_GET_VERSION_V5_OUT_BOARD_VERSION_NUM 4
3205 /* Bundle version as four numbers - a.b.c.d */
3206 #define	MC_CMD_GET_VERSION_V5_OUT_BUNDLE_VERSION_OFST 408
3207 #define	MC_CMD_GET_VERSION_V5_OUT_BUNDLE_VERSION_LEN 4
3208 #define	MC_CMD_GET_VERSION_V5_OUT_BUNDLE_VERSION_NUM 4
3209 
3210 
3211 /***********************************/
3212 /* MC_CMD_PTP
3213  * Perform PTP operation
3214  */
3215 #define	MC_CMD_PTP 0xb
3216 #define	MC_CMD_PTP_MSGSET 0xb
3217 #undef	MC_CMD_0xb_PRIVILEGE_CTG
3218 
3219 #define	MC_CMD_0xb_PRIVILEGE_CTG SRIOV_CTG_GENERAL
3220 
3221 /* MC_CMD_PTP_IN msgrequest */
3222 #define	MC_CMD_PTP_IN_LEN 1
3223 /* PTP operation code */
3224 #define	MC_CMD_PTP_IN_OP_OFST 0
3225 #define	MC_CMD_PTP_IN_OP_LEN 1
3226 /* enum: Enable PTP packet timestamping operation. */
3227 #define	MC_CMD_PTP_OP_ENABLE 0x1
3228 /* enum: Disable PTP packet timestamping operation. */
3229 #define	MC_CMD_PTP_OP_DISABLE 0x2
3230 /* enum: Send a PTP packet. This operation is used on Siena and Huntington.
3231  * From Medford onwards it is not supported: on those platforms PTP transmit
3232  * timestamping is done using the fast path.
3233  */
3234 #define	MC_CMD_PTP_OP_TRANSMIT 0x3
3235 /* enum: Read the current NIC time. */
3236 #define	MC_CMD_PTP_OP_READ_NIC_TIME 0x4
3237 /* enum: Get the current PTP status. Note that the clock frequency returned (in
3238  * Hz) is rounded to the nearest MHz (e.g. 666000000 for 666666666).
3239  */
3240 #define	MC_CMD_PTP_OP_STATUS 0x5
3241 /* enum: Adjust the PTP NIC's time. */
3242 #define	MC_CMD_PTP_OP_ADJUST 0x6
3243 /* enum: Synchronize host and NIC time. */
3244 #define	MC_CMD_PTP_OP_SYNCHRONIZE 0x7
3245 /* enum: Basic manufacturing tests. Siena PTP adapters only. */
3246 #define	MC_CMD_PTP_OP_MANFTEST_BASIC 0x8
3247 /* enum: Packet based manufacturing tests. Siena PTP adapters only. */
3248 #define	MC_CMD_PTP_OP_MANFTEST_PACKET 0x9
3249 /* enum: Reset some of the PTP related statistics */
3250 #define	MC_CMD_PTP_OP_RESET_STATS 0xa
3251 /* enum: Debug operations to MC. */
3252 #define	MC_CMD_PTP_OP_DEBUG 0xb
3253 /* enum: Read an FPGA register. Siena PTP adapters only. */
3254 #define	MC_CMD_PTP_OP_FPGAREAD 0xc
3255 /* enum: Write an FPGA register. Siena PTP adapters only. */
3256 #define	MC_CMD_PTP_OP_FPGAWRITE 0xd
3257 /* enum: Apply an offset to the NIC clock */
3258 #define	MC_CMD_PTP_OP_CLOCK_OFFSET_ADJUST 0xe
3259 /* enum: Change the frequency correction applied to the NIC clock */
3260 #define	MC_CMD_PTP_OP_CLOCK_FREQ_ADJUST 0xf
3261 /* enum: Set the MC packet filter VLAN tags for received PTP packets.
3262  * Deprecated for Huntington onwards.
3263  */
3264 #define	MC_CMD_PTP_OP_RX_SET_VLAN_FILTER 0x10
3265 /* enum: Set the MC packet filter UUID for received PTP packets. Deprecated for
3266  * Huntington onwards.
3267  */
3268 #define	MC_CMD_PTP_OP_RX_SET_UUID_FILTER 0x11
3269 /* enum: Set the MC packet filter Domain for received PTP packets. Deprecated
3270  * for Huntington onwards.
3271  */
3272 #define	MC_CMD_PTP_OP_RX_SET_DOMAIN_FILTER 0x12
3273 /* enum: Set the clock source. Required for snapper tests on Huntington and
3274  * Medford. Not implemented for Siena or Medford2.
3275  */
3276 #define	MC_CMD_PTP_OP_SET_CLK_SRC 0x13
3277 /* enum: Reset value of Timer Reg. Not implemented. */
3278 #define	MC_CMD_PTP_OP_RST_CLK 0x14
3279 /* enum: Enable the forwarding of PPS events to the host */
3280 #define	MC_CMD_PTP_OP_PPS_ENABLE 0x15
3281 /* enum: Get the time format used by this NIC for PTP operations */
3282 #define	MC_CMD_PTP_OP_GET_TIME_FORMAT 0x16
3283 /* enum: Get the clock attributes. NOTE- extended version of
3284  * MC_CMD_PTP_OP_GET_TIME_FORMAT
3285  */
3286 #define	MC_CMD_PTP_OP_GET_ATTRIBUTES 0x16
3287 /* enum: Get corrections that should be applied to the various different
3288  * timestamps
3289  */
3290 #define	MC_CMD_PTP_OP_GET_TIMESTAMP_CORRECTIONS 0x17
3291 /* enum: Subscribe to receive periodic time events indicating the current NIC
3292  * time
3293  */
3294 #define	MC_CMD_PTP_OP_TIME_EVENT_SUBSCRIBE 0x18
3295 /* enum: Unsubscribe to stop receiving time events */
3296 #define	MC_CMD_PTP_OP_TIME_EVENT_UNSUBSCRIBE 0x19
3297 /* enum: PPS based manfacturing tests. Requires PPS output to be looped to PPS
3298  * input on the same NIC. Siena PTP adapters only.
3299  */
3300 #define	MC_CMD_PTP_OP_MANFTEST_PPS 0x1a
3301 /* enum: Set the PTP sync status. Status is used by firmware to report to event
3302  * subscribers.
3303  */
3304 #define	MC_CMD_PTP_OP_SET_SYNC_STATUS 0x1b
3305 /* enum: Above this for future use. */
3306 #define	MC_CMD_PTP_OP_MAX 0x1c
3307 
3308 /* MC_CMD_PTP_IN_ENABLE msgrequest */
3309 #define	MC_CMD_PTP_IN_ENABLE_LEN 16
3310 #define	MC_CMD_PTP_IN_CMD_OFST 0
3311 #define	MC_CMD_PTP_IN_CMD_LEN 4
3312 #define	MC_CMD_PTP_IN_PERIPH_ID_OFST 4
3313 #define	MC_CMD_PTP_IN_PERIPH_ID_LEN 4
3314 /* Not used, initialize to 0. Events are always sent to function relative queue
3315  * 0.
3316  */
3317 #define	MC_CMD_PTP_IN_ENABLE_QUEUE_OFST 8
3318 #define	MC_CMD_PTP_IN_ENABLE_QUEUE_LEN 4
3319 /* PTP timestamping mode. Not used from Huntington onwards. */
3320 #define	MC_CMD_PTP_IN_ENABLE_MODE_OFST 12
3321 #define	MC_CMD_PTP_IN_ENABLE_MODE_LEN 4
3322 /* enum: PTP, version 1 */
3323 #define	MC_CMD_PTP_MODE_V1 0x0
3324 /* enum: PTP, version 1, with VLAN headers - deprecated */
3325 #define	MC_CMD_PTP_MODE_V1_VLAN 0x1
3326 /* enum: PTP, version 2 */
3327 #define	MC_CMD_PTP_MODE_V2 0x2
3328 /* enum: PTP, version 2, with VLAN headers - deprecated */
3329 #define	MC_CMD_PTP_MODE_V2_VLAN 0x3
3330 /* enum: PTP, version 2, with improved UUID filtering */
3331 #define	MC_CMD_PTP_MODE_V2_ENHANCED 0x4
3332 /* enum: FCoE (seconds and microseconds) */
3333 #define	MC_CMD_PTP_MODE_FCOE 0x5
3334 
3335 /* MC_CMD_PTP_IN_DISABLE msgrequest */
3336 #define	MC_CMD_PTP_IN_DISABLE_LEN 8
3337 /*            MC_CMD_PTP_IN_CMD_OFST 0 */
3338 /*            MC_CMD_PTP_IN_CMD_LEN 4 */
3339 /*            MC_CMD_PTP_IN_PERIPH_ID_OFST 4 */
3340 /*            MC_CMD_PTP_IN_PERIPH_ID_LEN 4 */
3341 
3342 /* MC_CMD_PTP_IN_TRANSMIT msgrequest */
3343 #define	MC_CMD_PTP_IN_TRANSMIT_LENMIN 13
3344 #define	MC_CMD_PTP_IN_TRANSMIT_LENMAX 252
3345 #define	MC_CMD_PTP_IN_TRANSMIT_LENMAX_MCDI2 1020
3346 #define	MC_CMD_PTP_IN_TRANSMIT_LEN(num) (12+1*(num))
3347 #define	MC_CMD_PTP_IN_TRANSMIT_PACKET_NUM(len) (((len)-12)/1)
3348 /*            MC_CMD_PTP_IN_CMD_OFST 0 */
3349 /*            MC_CMD_PTP_IN_CMD_LEN 4 */
3350 /*            MC_CMD_PTP_IN_PERIPH_ID_OFST 4 */
3351 /*            MC_CMD_PTP_IN_PERIPH_ID_LEN 4 */
3352 /* Transmit packet length */
3353 #define	MC_CMD_PTP_IN_TRANSMIT_LENGTH_OFST 8
3354 #define	MC_CMD_PTP_IN_TRANSMIT_LENGTH_LEN 4
3355 /* Transmit packet data */
3356 #define	MC_CMD_PTP_IN_TRANSMIT_PACKET_OFST 12
3357 #define	MC_CMD_PTP_IN_TRANSMIT_PACKET_LEN 1
3358 #define	MC_CMD_PTP_IN_TRANSMIT_PACKET_MINNUM 1
3359 #define	MC_CMD_PTP_IN_TRANSMIT_PACKET_MAXNUM 240
3360 #define	MC_CMD_PTP_IN_TRANSMIT_PACKET_MAXNUM_MCDI2 1008
3361 
3362 /* MC_CMD_PTP_IN_READ_NIC_TIME msgrequest */
3363 #define	MC_CMD_PTP_IN_READ_NIC_TIME_LEN 8
3364 /*            MC_CMD_PTP_IN_CMD_OFST 0 */
3365 /*            MC_CMD_PTP_IN_CMD_LEN 4 */
3366 /*            MC_CMD_PTP_IN_PERIPH_ID_OFST 4 */
3367 /*            MC_CMD_PTP_IN_PERIPH_ID_LEN 4 */
3368 
3369 /* MC_CMD_PTP_IN_READ_NIC_TIME_V2 msgrequest */
3370 #define	MC_CMD_PTP_IN_READ_NIC_TIME_V2_LEN 8
3371 /*            MC_CMD_PTP_IN_CMD_OFST 0 */
3372 /*            MC_CMD_PTP_IN_CMD_LEN 4 */
3373 /*            MC_CMD_PTP_IN_PERIPH_ID_OFST 4 */
3374 /*            MC_CMD_PTP_IN_PERIPH_ID_LEN 4 */
3375 
3376 /* MC_CMD_PTP_IN_STATUS msgrequest */
3377 #define	MC_CMD_PTP_IN_STATUS_LEN 8
3378 /*            MC_CMD_PTP_IN_CMD_OFST 0 */
3379 /*            MC_CMD_PTP_IN_CMD_LEN 4 */
3380 /*            MC_CMD_PTP_IN_PERIPH_ID_OFST 4 */
3381 /*            MC_CMD_PTP_IN_PERIPH_ID_LEN 4 */
3382 
3383 /* MC_CMD_PTP_IN_ADJUST msgrequest */
3384 #define	MC_CMD_PTP_IN_ADJUST_LEN 24
3385 /*            MC_CMD_PTP_IN_CMD_OFST 0 */
3386 /*            MC_CMD_PTP_IN_CMD_LEN 4 */
3387 /*            MC_CMD_PTP_IN_PERIPH_ID_OFST 4 */
3388 /*            MC_CMD_PTP_IN_PERIPH_ID_LEN 4 */
3389 /* Frequency adjustment 40 bit fixed point ns */
3390 #define	MC_CMD_PTP_IN_ADJUST_FREQ_OFST 8
3391 #define	MC_CMD_PTP_IN_ADJUST_FREQ_LEN 8
3392 #define	MC_CMD_PTP_IN_ADJUST_FREQ_LO_OFST 8
3393 #define	MC_CMD_PTP_IN_ADJUST_FREQ_LO_LEN 4
3394 #define	MC_CMD_PTP_IN_ADJUST_FREQ_LO_LBN 64
3395 #define	MC_CMD_PTP_IN_ADJUST_FREQ_LO_WIDTH 32
3396 #define	MC_CMD_PTP_IN_ADJUST_FREQ_HI_OFST 12
3397 #define	MC_CMD_PTP_IN_ADJUST_FREQ_HI_LEN 4
3398 #define	MC_CMD_PTP_IN_ADJUST_FREQ_HI_LBN 96
3399 #define	MC_CMD_PTP_IN_ADJUST_FREQ_HI_WIDTH 32
3400 /* enum: Number of fractional bits in frequency adjustment */
3401 #define	MC_CMD_PTP_IN_ADJUST_BITS 0x28
3402 /* enum: Number of fractional bits in frequency adjustment when FP44_FREQ_ADJ
3403  * is indicated in the MC_CMD_PTP_OUT_GET_ATTRIBUTES command CAPABILITIES
3404  * field.
3405  */
3406 #define	MC_CMD_PTP_IN_ADJUST_BITS_FP44 0x2c
3407 /* Time adjustment in seconds */
3408 #define	MC_CMD_PTP_IN_ADJUST_SECONDS_OFST 16
3409 #define	MC_CMD_PTP_IN_ADJUST_SECONDS_LEN 4
3410 /* Time adjustment major value */
3411 #define	MC_CMD_PTP_IN_ADJUST_MAJOR_OFST 16
3412 #define	MC_CMD_PTP_IN_ADJUST_MAJOR_LEN 4
3413 /* Time adjustment in nanoseconds */
3414 #define	MC_CMD_PTP_IN_ADJUST_NANOSECONDS_OFST 20
3415 #define	MC_CMD_PTP_IN_ADJUST_NANOSECONDS_LEN 4
3416 /* Time adjustment minor value */
3417 #define	MC_CMD_PTP_IN_ADJUST_MINOR_OFST 20
3418 #define	MC_CMD_PTP_IN_ADJUST_MINOR_LEN 4
3419 
3420 /* MC_CMD_PTP_IN_ADJUST_V2 msgrequest */
3421 #define	MC_CMD_PTP_IN_ADJUST_V2_LEN 28
3422 /*            MC_CMD_PTP_IN_CMD_OFST 0 */
3423 /*            MC_CMD_PTP_IN_CMD_LEN 4 */
3424 /*            MC_CMD_PTP_IN_PERIPH_ID_OFST 4 */
3425 /*            MC_CMD_PTP_IN_PERIPH_ID_LEN 4 */
3426 /* Frequency adjustment 40 bit fixed point ns */
3427 #define	MC_CMD_PTP_IN_ADJUST_V2_FREQ_OFST 8
3428 #define	MC_CMD_PTP_IN_ADJUST_V2_FREQ_LEN 8
3429 #define	MC_CMD_PTP_IN_ADJUST_V2_FREQ_LO_OFST 8
3430 #define	MC_CMD_PTP_IN_ADJUST_V2_FREQ_LO_LEN 4
3431 #define	MC_CMD_PTP_IN_ADJUST_V2_FREQ_LO_LBN 64
3432 #define	MC_CMD_PTP_IN_ADJUST_V2_FREQ_LO_WIDTH 32
3433 #define	MC_CMD_PTP_IN_ADJUST_V2_FREQ_HI_OFST 12
3434 #define	MC_CMD_PTP_IN_ADJUST_V2_FREQ_HI_LEN 4
3435 #define	MC_CMD_PTP_IN_ADJUST_V2_FREQ_HI_LBN 96
3436 #define	MC_CMD_PTP_IN_ADJUST_V2_FREQ_HI_WIDTH 32
3437 /* enum: Number of fractional bits in frequency adjustment */
3438 /*               MC_CMD_PTP_IN_ADJUST_BITS 0x28 */
3439 /* enum: Number of fractional bits in frequency adjustment when FP44_FREQ_ADJ
3440  * is indicated in the MC_CMD_PTP_OUT_GET_ATTRIBUTES command CAPABILITIES
3441  * field.
3442  */
3443 /*               MC_CMD_PTP_IN_ADJUST_BITS_FP44 0x2c */
3444 /* Time adjustment in seconds */
3445 #define	MC_CMD_PTP_IN_ADJUST_V2_SECONDS_OFST 16
3446 #define	MC_CMD_PTP_IN_ADJUST_V2_SECONDS_LEN 4
3447 /* Time adjustment major value */
3448 #define	MC_CMD_PTP_IN_ADJUST_V2_MAJOR_OFST 16
3449 #define	MC_CMD_PTP_IN_ADJUST_V2_MAJOR_LEN 4
3450 /* Time adjustment in nanoseconds */
3451 #define	MC_CMD_PTP_IN_ADJUST_V2_NANOSECONDS_OFST 20
3452 #define	MC_CMD_PTP_IN_ADJUST_V2_NANOSECONDS_LEN 4
3453 /* Time adjustment minor value */
3454 #define	MC_CMD_PTP_IN_ADJUST_V2_MINOR_OFST 20
3455 #define	MC_CMD_PTP_IN_ADJUST_V2_MINOR_LEN 4
3456 /* Upper 32bits of major time offset adjustment */
3457 #define	MC_CMD_PTP_IN_ADJUST_V2_MAJOR_HI_OFST 24
3458 #define	MC_CMD_PTP_IN_ADJUST_V2_MAJOR_HI_LEN 4
3459 
3460 /* MC_CMD_PTP_IN_SYNCHRONIZE msgrequest */
3461 #define	MC_CMD_PTP_IN_SYNCHRONIZE_LEN 20
3462 /*            MC_CMD_PTP_IN_CMD_OFST 0 */
3463 /*            MC_CMD_PTP_IN_CMD_LEN 4 */
3464 /*            MC_CMD_PTP_IN_PERIPH_ID_OFST 4 */
3465 /*            MC_CMD_PTP_IN_PERIPH_ID_LEN 4 */
3466 /* Number of time readings to capture */
3467 #define	MC_CMD_PTP_IN_SYNCHRONIZE_NUMTIMESETS_OFST 8
3468 #define	MC_CMD_PTP_IN_SYNCHRONIZE_NUMTIMESETS_LEN 4
3469 /* Host address in which to write "synchronization started" indication (64
3470  * bits)
3471  */
3472 #define	MC_CMD_PTP_IN_SYNCHRONIZE_START_ADDR_OFST 12
3473 #define	MC_CMD_PTP_IN_SYNCHRONIZE_START_ADDR_LEN 8
3474 #define	MC_CMD_PTP_IN_SYNCHRONIZE_START_ADDR_LO_OFST 12
3475 #define	MC_CMD_PTP_IN_SYNCHRONIZE_START_ADDR_LO_LEN 4
3476 #define	MC_CMD_PTP_IN_SYNCHRONIZE_START_ADDR_LO_LBN 96
3477 #define	MC_CMD_PTP_IN_SYNCHRONIZE_START_ADDR_LO_WIDTH 32
3478 #define	MC_CMD_PTP_IN_SYNCHRONIZE_START_ADDR_HI_OFST 16
3479 #define	MC_CMD_PTP_IN_SYNCHRONIZE_START_ADDR_HI_LEN 4
3480 #define	MC_CMD_PTP_IN_SYNCHRONIZE_START_ADDR_HI_LBN 128
3481 #define	MC_CMD_PTP_IN_SYNCHRONIZE_START_ADDR_HI_WIDTH 32
3482 
3483 /* MC_CMD_PTP_IN_MANFTEST_BASIC msgrequest */
3484 #define	MC_CMD_PTP_IN_MANFTEST_BASIC_LEN 8
3485 /*            MC_CMD_PTP_IN_CMD_OFST 0 */
3486 /*            MC_CMD_PTP_IN_CMD_LEN 4 */
3487 /*            MC_CMD_PTP_IN_PERIPH_ID_OFST 4 */
3488 /*            MC_CMD_PTP_IN_PERIPH_ID_LEN 4 */
3489 
3490 /* MC_CMD_PTP_IN_MANFTEST_PACKET msgrequest */
3491 #define	MC_CMD_PTP_IN_MANFTEST_PACKET_LEN 12
3492 /*            MC_CMD_PTP_IN_CMD_OFST 0 */
3493 /*            MC_CMD_PTP_IN_CMD_LEN 4 */
3494 /*            MC_CMD_PTP_IN_PERIPH_ID_OFST 4 */
3495 /*            MC_CMD_PTP_IN_PERIPH_ID_LEN 4 */
3496 /* Enable or disable packet testing */
3497 #define	MC_CMD_PTP_IN_MANFTEST_PACKET_TEST_ENABLE_OFST 8
3498 #define	MC_CMD_PTP_IN_MANFTEST_PACKET_TEST_ENABLE_LEN 4
3499 
3500 /* MC_CMD_PTP_IN_RESET_STATS msgrequest: Reset PTP statistics */
3501 #define	MC_CMD_PTP_IN_RESET_STATS_LEN 8
3502 /*            MC_CMD_PTP_IN_CMD_OFST 0 */
3503 /*            MC_CMD_PTP_IN_CMD_LEN 4 */
3504 /*            MC_CMD_PTP_IN_PERIPH_ID_OFST 4 */
3505 /*            MC_CMD_PTP_IN_PERIPH_ID_LEN 4 */
3506 
3507 /* MC_CMD_PTP_IN_DEBUG msgrequest */
3508 #define	MC_CMD_PTP_IN_DEBUG_LEN 12
3509 /*            MC_CMD_PTP_IN_CMD_OFST 0 */
3510 /*            MC_CMD_PTP_IN_CMD_LEN 4 */
3511 /*            MC_CMD_PTP_IN_PERIPH_ID_OFST 4 */
3512 /*            MC_CMD_PTP_IN_PERIPH_ID_LEN 4 */
3513 /* Debug operations */
3514 #define	MC_CMD_PTP_IN_DEBUG_DEBUG_PARAM_OFST 8
3515 #define	MC_CMD_PTP_IN_DEBUG_DEBUG_PARAM_LEN 4
3516 
3517 /* MC_CMD_PTP_IN_FPGAREAD msgrequest */
3518 #define	MC_CMD_PTP_IN_FPGAREAD_LEN 16
3519 /*            MC_CMD_PTP_IN_CMD_OFST 0 */
3520 /*            MC_CMD_PTP_IN_CMD_LEN 4 */
3521 /*            MC_CMD_PTP_IN_PERIPH_ID_OFST 4 */
3522 /*            MC_CMD_PTP_IN_PERIPH_ID_LEN 4 */
3523 #define	MC_CMD_PTP_IN_FPGAREAD_ADDR_OFST 8
3524 #define	MC_CMD_PTP_IN_FPGAREAD_ADDR_LEN 4
3525 #define	MC_CMD_PTP_IN_FPGAREAD_NUMBYTES_OFST 12
3526 #define	MC_CMD_PTP_IN_FPGAREAD_NUMBYTES_LEN 4
3527 
3528 /* MC_CMD_PTP_IN_FPGAWRITE msgrequest */
3529 #define	MC_CMD_PTP_IN_FPGAWRITE_LENMIN 13
3530 #define	MC_CMD_PTP_IN_FPGAWRITE_LENMAX 252
3531 #define	MC_CMD_PTP_IN_FPGAWRITE_LENMAX_MCDI2 1020
3532 #define	MC_CMD_PTP_IN_FPGAWRITE_LEN(num) (12+1*(num))
3533 #define	MC_CMD_PTP_IN_FPGAWRITE_BUFFER_NUM(len) (((len)-12)/1)
3534 /*            MC_CMD_PTP_IN_CMD_OFST 0 */
3535 /*            MC_CMD_PTP_IN_CMD_LEN 4 */
3536 /*            MC_CMD_PTP_IN_PERIPH_ID_OFST 4 */
3537 /*            MC_CMD_PTP_IN_PERIPH_ID_LEN 4 */
3538 #define	MC_CMD_PTP_IN_FPGAWRITE_ADDR_OFST 8
3539 #define	MC_CMD_PTP_IN_FPGAWRITE_ADDR_LEN 4
3540 #define	MC_CMD_PTP_IN_FPGAWRITE_BUFFER_OFST 12
3541 #define	MC_CMD_PTP_IN_FPGAWRITE_BUFFER_LEN 1
3542 #define	MC_CMD_PTP_IN_FPGAWRITE_BUFFER_MINNUM 1
3543 #define	MC_CMD_PTP_IN_FPGAWRITE_BUFFER_MAXNUM 240
3544 #define	MC_CMD_PTP_IN_FPGAWRITE_BUFFER_MAXNUM_MCDI2 1008
3545 
3546 /* MC_CMD_PTP_IN_CLOCK_OFFSET_ADJUST msgrequest */
3547 #define	MC_CMD_PTP_IN_CLOCK_OFFSET_ADJUST_LEN 16
3548 /*            MC_CMD_PTP_IN_CMD_OFST 0 */
3549 /*            MC_CMD_PTP_IN_CMD_LEN 4 */
3550 /*            MC_CMD_PTP_IN_PERIPH_ID_OFST 4 */
3551 /*            MC_CMD_PTP_IN_PERIPH_ID_LEN 4 */
3552 /* Time adjustment in seconds */
3553 #define	MC_CMD_PTP_IN_CLOCK_OFFSET_ADJUST_SECONDS_OFST 8
3554 #define	MC_CMD_PTP_IN_CLOCK_OFFSET_ADJUST_SECONDS_LEN 4
3555 /* Time adjustment major value */
3556 #define	MC_CMD_PTP_IN_CLOCK_OFFSET_ADJUST_MAJOR_OFST 8
3557 #define	MC_CMD_PTP_IN_CLOCK_OFFSET_ADJUST_MAJOR_LEN 4
3558 /* Time adjustment in nanoseconds */
3559 #define	MC_CMD_PTP_IN_CLOCK_OFFSET_ADJUST_NANOSECONDS_OFST 12
3560 #define	MC_CMD_PTP_IN_CLOCK_OFFSET_ADJUST_NANOSECONDS_LEN 4
3561 /* Time adjustment minor value */
3562 #define	MC_CMD_PTP_IN_CLOCK_OFFSET_ADJUST_MINOR_OFST 12
3563 #define	MC_CMD_PTP_IN_CLOCK_OFFSET_ADJUST_MINOR_LEN 4
3564 
3565 /* MC_CMD_PTP_IN_CLOCK_OFFSET_ADJUST_V2 msgrequest */
3566 #define	MC_CMD_PTP_IN_CLOCK_OFFSET_ADJUST_V2_LEN 20
3567 /*            MC_CMD_PTP_IN_CMD_OFST 0 */
3568 /*            MC_CMD_PTP_IN_CMD_LEN 4 */
3569 /*            MC_CMD_PTP_IN_PERIPH_ID_OFST 4 */
3570 /*            MC_CMD_PTP_IN_PERIPH_ID_LEN 4 */
3571 /* Time adjustment in seconds */
3572 #define	MC_CMD_PTP_IN_CLOCK_OFFSET_ADJUST_V2_SECONDS_OFST 8
3573 #define	MC_CMD_PTP_IN_CLOCK_OFFSET_ADJUST_V2_SECONDS_LEN 4
3574 /* Time adjustment major value */
3575 #define	MC_CMD_PTP_IN_CLOCK_OFFSET_ADJUST_V2_MAJOR_OFST 8
3576 #define	MC_CMD_PTP_IN_CLOCK_OFFSET_ADJUST_V2_MAJOR_LEN 4
3577 /* Time adjustment in nanoseconds */
3578 #define	MC_CMD_PTP_IN_CLOCK_OFFSET_ADJUST_V2_NANOSECONDS_OFST 12
3579 #define	MC_CMD_PTP_IN_CLOCK_OFFSET_ADJUST_V2_NANOSECONDS_LEN 4
3580 /* Time adjustment minor value */
3581 #define	MC_CMD_PTP_IN_CLOCK_OFFSET_ADJUST_V2_MINOR_OFST 12
3582 #define	MC_CMD_PTP_IN_CLOCK_OFFSET_ADJUST_V2_MINOR_LEN 4
3583 /* Upper 32bits of major time offset adjustment */
3584 #define	MC_CMD_PTP_IN_CLOCK_OFFSET_ADJUST_V2_MAJOR_HI_OFST 16
3585 #define	MC_CMD_PTP_IN_CLOCK_OFFSET_ADJUST_V2_MAJOR_HI_LEN 4
3586 
3587 /* MC_CMD_PTP_IN_CLOCK_FREQ_ADJUST msgrequest */
3588 #define	MC_CMD_PTP_IN_CLOCK_FREQ_ADJUST_LEN 16
3589 /*            MC_CMD_PTP_IN_CMD_OFST 0 */
3590 /*            MC_CMD_PTP_IN_CMD_LEN 4 */
3591 /*            MC_CMD_PTP_IN_PERIPH_ID_OFST 4 */
3592 /*            MC_CMD_PTP_IN_PERIPH_ID_LEN 4 */
3593 /* Frequency adjustment 40 bit fixed point ns */
3594 #define	MC_CMD_PTP_IN_CLOCK_FREQ_ADJUST_FREQ_OFST 8
3595 #define	MC_CMD_PTP_IN_CLOCK_FREQ_ADJUST_FREQ_LEN 8
3596 #define	MC_CMD_PTP_IN_CLOCK_FREQ_ADJUST_FREQ_LO_OFST 8
3597 #define	MC_CMD_PTP_IN_CLOCK_FREQ_ADJUST_FREQ_LO_LEN 4
3598 #define	MC_CMD_PTP_IN_CLOCK_FREQ_ADJUST_FREQ_LO_LBN 64
3599 #define	MC_CMD_PTP_IN_CLOCK_FREQ_ADJUST_FREQ_LO_WIDTH 32
3600 #define	MC_CMD_PTP_IN_CLOCK_FREQ_ADJUST_FREQ_HI_OFST 12
3601 #define	MC_CMD_PTP_IN_CLOCK_FREQ_ADJUST_FREQ_HI_LEN 4
3602 #define	MC_CMD_PTP_IN_CLOCK_FREQ_ADJUST_FREQ_HI_LBN 96
3603 #define	MC_CMD_PTP_IN_CLOCK_FREQ_ADJUST_FREQ_HI_WIDTH 32
3604 /*            Enum values, see field(s): */
3605 /*               MC_CMD_PTP/MC_CMD_PTP_IN_ADJUST/FREQ */
3606 
3607 /* MC_CMD_PTP_IN_RX_SET_VLAN_FILTER msgrequest */
3608 #define	MC_CMD_PTP_IN_RX_SET_VLAN_FILTER_LEN 24
3609 /*            MC_CMD_PTP_IN_CMD_OFST 0 */
3610 /*            MC_CMD_PTP_IN_CMD_LEN 4 */
3611 /*            MC_CMD_PTP_IN_PERIPH_ID_OFST 4 */
3612 /*            MC_CMD_PTP_IN_PERIPH_ID_LEN 4 */
3613 /* Number of VLAN tags, 0 if not VLAN */
3614 #define	MC_CMD_PTP_IN_RX_SET_VLAN_FILTER_NUM_VLAN_TAGS_OFST 8
3615 #define	MC_CMD_PTP_IN_RX_SET_VLAN_FILTER_NUM_VLAN_TAGS_LEN 4
3616 /* Set of VLAN tags to filter against */
3617 #define	MC_CMD_PTP_IN_RX_SET_VLAN_FILTER_VLAN_TAG_OFST 12
3618 #define	MC_CMD_PTP_IN_RX_SET_VLAN_FILTER_VLAN_TAG_LEN 4
3619 #define	MC_CMD_PTP_IN_RX_SET_VLAN_FILTER_VLAN_TAG_NUM 3
3620 
3621 /* MC_CMD_PTP_IN_RX_SET_UUID_FILTER msgrequest */
3622 #define	MC_CMD_PTP_IN_RX_SET_UUID_FILTER_LEN 20
3623 /*            MC_CMD_PTP_IN_CMD_OFST 0 */
3624 /*            MC_CMD_PTP_IN_CMD_LEN 4 */
3625 /*            MC_CMD_PTP_IN_PERIPH_ID_OFST 4 */
3626 /*            MC_CMD_PTP_IN_PERIPH_ID_LEN 4 */
3627 /* 1 to enable UUID filtering, 0 to disable */
3628 #define	MC_CMD_PTP_IN_RX_SET_UUID_FILTER_ENABLE_OFST 8
3629 #define	MC_CMD_PTP_IN_RX_SET_UUID_FILTER_ENABLE_LEN 4
3630 /* UUID to filter against */
3631 #define	MC_CMD_PTP_IN_RX_SET_UUID_FILTER_UUID_OFST 12
3632 #define	MC_CMD_PTP_IN_RX_SET_UUID_FILTER_UUID_LEN 8
3633 #define	MC_CMD_PTP_IN_RX_SET_UUID_FILTER_UUID_LO_OFST 12
3634 #define	MC_CMD_PTP_IN_RX_SET_UUID_FILTER_UUID_LO_LEN 4
3635 #define	MC_CMD_PTP_IN_RX_SET_UUID_FILTER_UUID_LO_LBN 96
3636 #define	MC_CMD_PTP_IN_RX_SET_UUID_FILTER_UUID_LO_WIDTH 32
3637 #define	MC_CMD_PTP_IN_RX_SET_UUID_FILTER_UUID_HI_OFST 16
3638 #define	MC_CMD_PTP_IN_RX_SET_UUID_FILTER_UUID_HI_LEN 4
3639 #define	MC_CMD_PTP_IN_RX_SET_UUID_FILTER_UUID_HI_LBN 128
3640 #define	MC_CMD_PTP_IN_RX_SET_UUID_FILTER_UUID_HI_WIDTH 32
3641 
3642 /* MC_CMD_PTP_IN_RX_SET_DOMAIN_FILTER msgrequest */
3643 #define	MC_CMD_PTP_IN_RX_SET_DOMAIN_FILTER_LEN 16
3644 /*            MC_CMD_PTP_IN_CMD_OFST 0 */
3645 /*            MC_CMD_PTP_IN_CMD_LEN 4 */
3646 /*            MC_CMD_PTP_IN_PERIPH_ID_OFST 4 */
3647 /*            MC_CMD_PTP_IN_PERIPH_ID_LEN 4 */
3648 /* 1 to enable Domain filtering, 0 to disable */
3649 #define	MC_CMD_PTP_IN_RX_SET_DOMAIN_FILTER_ENABLE_OFST 8
3650 #define	MC_CMD_PTP_IN_RX_SET_DOMAIN_FILTER_ENABLE_LEN 4
3651 /* Domain number to filter against */
3652 #define	MC_CMD_PTP_IN_RX_SET_DOMAIN_FILTER_DOMAIN_OFST 12
3653 #define	MC_CMD_PTP_IN_RX_SET_DOMAIN_FILTER_DOMAIN_LEN 4
3654 
3655 /* MC_CMD_PTP_IN_SET_CLK_SRC msgrequest */
3656 #define	MC_CMD_PTP_IN_SET_CLK_SRC_LEN 12
3657 /*            MC_CMD_PTP_IN_CMD_OFST 0 */
3658 /*            MC_CMD_PTP_IN_CMD_LEN 4 */
3659 /*            MC_CMD_PTP_IN_PERIPH_ID_OFST 4 */
3660 /*            MC_CMD_PTP_IN_PERIPH_ID_LEN 4 */
3661 /* Set the clock source. */
3662 #define	MC_CMD_PTP_IN_SET_CLK_SRC_CLK_OFST 8
3663 #define	MC_CMD_PTP_IN_SET_CLK_SRC_CLK_LEN 4
3664 /* enum: Internal. */
3665 #define	MC_CMD_PTP_CLK_SRC_INTERNAL 0x0
3666 /* enum: External. */
3667 #define	MC_CMD_PTP_CLK_SRC_EXTERNAL 0x1
3668 
3669 /* MC_CMD_PTP_IN_RST_CLK msgrequest: Reset value of Timer Reg. */
3670 #define	MC_CMD_PTP_IN_RST_CLK_LEN 8
3671 /*            MC_CMD_PTP_IN_CMD_OFST 0 */
3672 /*            MC_CMD_PTP_IN_CMD_LEN 4 */
3673 /*            MC_CMD_PTP_IN_PERIPH_ID_OFST 4 */
3674 /*            MC_CMD_PTP_IN_PERIPH_ID_LEN 4 */
3675 
3676 /* MC_CMD_PTP_IN_PPS_ENABLE msgrequest */
3677 #define	MC_CMD_PTP_IN_PPS_ENABLE_LEN 12
3678 /*            MC_CMD_PTP_IN_CMD_OFST 0 */
3679 /*            MC_CMD_PTP_IN_CMD_LEN 4 */
3680 /* Enable or disable */
3681 #define	MC_CMD_PTP_IN_PPS_ENABLE_OP_OFST 4
3682 #define	MC_CMD_PTP_IN_PPS_ENABLE_OP_LEN 4
3683 /* enum: Enable */
3684 #define	MC_CMD_PTP_ENABLE_PPS 0x0
3685 /* enum: Disable */
3686 #define	MC_CMD_PTP_DISABLE_PPS 0x1
3687 /* Not used, initialize to 0. Events are always sent to function relative queue
3688  * 0.
3689  */
3690 #define	MC_CMD_PTP_IN_PPS_ENABLE_QUEUE_ID_OFST 8
3691 #define	MC_CMD_PTP_IN_PPS_ENABLE_QUEUE_ID_LEN 4
3692 
3693 /* MC_CMD_PTP_IN_GET_TIME_FORMAT msgrequest */
3694 #define	MC_CMD_PTP_IN_GET_TIME_FORMAT_LEN 8
3695 /*            MC_CMD_PTP_IN_CMD_OFST 0 */
3696 /*            MC_CMD_PTP_IN_CMD_LEN 4 */
3697 /*            MC_CMD_PTP_IN_PERIPH_ID_OFST 4 */
3698 /*            MC_CMD_PTP_IN_PERIPH_ID_LEN 4 */
3699 
3700 /* MC_CMD_PTP_IN_GET_ATTRIBUTES msgrequest */
3701 #define	MC_CMD_PTP_IN_GET_ATTRIBUTES_LEN 8
3702 /*            MC_CMD_PTP_IN_CMD_OFST 0 */
3703 /*            MC_CMD_PTP_IN_CMD_LEN 4 */
3704 /*            MC_CMD_PTP_IN_PERIPH_ID_OFST 4 */
3705 /*            MC_CMD_PTP_IN_PERIPH_ID_LEN 4 */
3706 
3707 /* MC_CMD_PTP_IN_GET_TIMESTAMP_CORRECTIONS msgrequest */
3708 #define	MC_CMD_PTP_IN_GET_TIMESTAMP_CORRECTIONS_LEN 8
3709 /*            MC_CMD_PTP_IN_CMD_OFST 0 */
3710 /*            MC_CMD_PTP_IN_CMD_LEN 4 */
3711 /*            MC_CMD_PTP_IN_PERIPH_ID_OFST 4 */
3712 /*            MC_CMD_PTP_IN_PERIPH_ID_LEN 4 */
3713 
3714 /* MC_CMD_PTP_IN_TIME_EVENT_SUBSCRIBE msgrequest */
3715 #define	MC_CMD_PTP_IN_TIME_EVENT_SUBSCRIBE_LEN 12
3716 /*            MC_CMD_PTP_IN_CMD_OFST 0 */
3717 /*            MC_CMD_PTP_IN_CMD_LEN 4 */
3718 /*            MC_CMD_PTP_IN_PERIPH_ID_OFST 4 */
3719 /*            MC_CMD_PTP_IN_PERIPH_ID_LEN 4 */
3720 /* Original field containing queue ID. Now extended to include flags. */
3721 #define	MC_CMD_PTP_IN_TIME_EVENT_SUBSCRIBE_QUEUE_OFST 8
3722 #define	MC_CMD_PTP_IN_TIME_EVENT_SUBSCRIBE_QUEUE_LEN 4
3723 #define	MC_CMD_PTP_IN_TIME_EVENT_SUBSCRIBE_QUEUE_ID_OFST 8
3724 #define	MC_CMD_PTP_IN_TIME_EVENT_SUBSCRIBE_QUEUE_ID_LBN 0
3725 #define	MC_CMD_PTP_IN_TIME_EVENT_SUBSCRIBE_QUEUE_ID_WIDTH 16
3726 #define	MC_CMD_PTP_IN_TIME_EVENT_SUBSCRIBE_REPORT_SYNC_STATUS_OFST 8
3727 #define	MC_CMD_PTP_IN_TIME_EVENT_SUBSCRIBE_REPORT_SYNC_STATUS_LBN 31
3728 #define	MC_CMD_PTP_IN_TIME_EVENT_SUBSCRIBE_REPORT_SYNC_STATUS_WIDTH 1
3729 
3730 /* MC_CMD_PTP_IN_TIME_EVENT_UNSUBSCRIBE msgrequest */
3731 #define	MC_CMD_PTP_IN_TIME_EVENT_UNSUBSCRIBE_LEN 16
3732 /*            MC_CMD_PTP_IN_CMD_OFST 0 */
3733 /*            MC_CMD_PTP_IN_CMD_LEN 4 */
3734 /*            MC_CMD_PTP_IN_PERIPH_ID_OFST 4 */
3735 /*            MC_CMD_PTP_IN_PERIPH_ID_LEN 4 */
3736 /* Unsubscribe options */
3737 #define	MC_CMD_PTP_IN_TIME_EVENT_UNSUBSCRIBE_CONTROL_OFST 8
3738 #define	MC_CMD_PTP_IN_TIME_EVENT_UNSUBSCRIBE_CONTROL_LEN 4
3739 /* enum: Unsubscribe a single queue */
3740 #define	MC_CMD_PTP_IN_TIME_EVENT_UNSUBSCRIBE_SINGLE 0x0
3741 /* enum: Unsubscribe all queues */
3742 #define	MC_CMD_PTP_IN_TIME_EVENT_UNSUBSCRIBE_ALL 0x1
3743 /* Event queue ID */
3744 #define	MC_CMD_PTP_IN_TIME_EVENT_UNSUBSCRIBE_QUEUE_OFST 12
3745 #define	MC_CMD_PTP_IN_TIME_EVENT_UNSUBSCRIBE_QUEUE_LEN 4
3746 
3747 /* MC_CMD_PTP_IN_MANFTEST_PPS msgrequest */
3748 #define	MC_CMD_PTP_IN_MANFTEST_PPS_LEN 12
3749 /*            MC_CMD_PTP_IN_CMD_OFST 0 */
3750 /*            MC_CMD_PTP_IN_CMD_LEN 4 */
3751 /*            MC_CMD_PTP_IN_PERIPH_ID_OFST 4 */
3752 /*            MC_CMD_PTP_IN_PERIPH_ID_LEN 4 */
3753 /* 1 to enable PPS test mode, 0 to disable and return result. */
3754 #define	MC_CMD_PTP_IN_MANFTEST_PPS_TEST_ENABLE_OFST 8
3755 #define	MC_CMD_PTP_IN_MANFTEST_PPS_TEST_ENABLE_LEN 4
3756 
3757 /* MC_CMD_PTP_IN_SET_SYNC_STATUS msgrequest */
3758 #define	MC_CMD_PTP_IN_SET_SYNC_STATUS_LEN 24
3759 /*            MC_CMD_PTP_IN_CMD_OFST 0 */
3760 /*            MC_CMD_PTP_IN_CMD_LEN 4 */
3761 /*            MC_CMD_PTP_IN_PERIPH_ID_OFST 4 */
3762 /*            MC_CMD_PTP_IN_PERIPH_ID_LEN 4 */
3763 /* NIC - Host System Clock Synchronization status */
3764 #define	MC_CMD_PTP_IN_SET_SYNC_STATUS_STATUS_OFST 8
3765 #define	MC_CMD_PTP_IN_SET_SYNC_STATUS_STATUS_LEN 4
3766 /* enum: Host System clock and NIC clock are not in sync */
3767 #define	MC_CMD_PTP_IN_SET_SYNC_STATUS_NOT_IN_SYNC 0x0
3768 /* enum: Host System clock and NIC clock are synchronized */
3769 #define	MC_CMD_PTP_IN_SET_SYNC_STATUS_IN_SYNC 0x1
3770 /* If synchronized, number of seconds until clocks should be considered to be
3771  * no longer in sync.
3772  */
3773 #define	MC_CMD_PTP_IN_SET_SYNC_STATUS_TIMEOUT_OFST 12
3774 #define	MC_CMD_PTP_IN_SET_SYNC_STATUS_TIMEOUT_LEN 4
3775 #define	MC_CMD_PTP_IN_SET_SYNC_STATUS_RESERVED0_OFST 16
3776 #define	MC_CMD_PTP_IN_SET_SYNC_STATUS_RESERVED0_LEN 4
3777 #define	MC_CMD_PTP_IN_SET_SYNC_STATUS_RESERVED1_OFST 20
3778 #define	MC_CMD_PTP_IN_SET_SYNC_STATUS_RESERVED1_LEN 4
3779 
3780 /* MC_CMD_PTP_OUT msgresponse */
3781 #define	MC_CMD_PTP_OUT_LEN 0
3782 
3783 /* MC_CMD_PTP_OUT_TRANSMIT msgresponse */
3784 #define	MC_CMD_PTP_OUT_TRANSMIT_LEN 8
3785 /* Value of seconds timestamp */
3786 #define	MC_CMD_PTP_OUT_TRANSMIT_SECONDS_OFST 0
3787 #define	MC_CMD_PTP_OUT_TRANSMIT_SECONDS_LEN 4
3788 /* Timestamp major value */
3789 #define	MC_CMD_PTP_OUT_TRANSMIT_MAJOR_OFST 0
3790 #define	MC_CMD_PTP_OUT_TRANSMIT_MAJOR_LEN 4
3791 /* Value of nanoseconds timestamp */
3792 #define	MC_CMD_PTP_OUT_TRANSMIT_NANOSECONDS_OFST 4
3793 #define	MC_CMD_PTP_OUT_TRANSMIT_NANOSECONDS_LEN 4
3794 /* Timestamp minor value */
3795 #define	MC_CMD_PTP_OUT_TRANSMIT_MINOR_OFST 4
3796 #define	MC_CMD_PTP_OUT_TRANSMIT_MINOR_LEN 4
3797 
3798 /* MC_CMD_PTP_OUT_TIME_EVENT_SUBSCRIBE msgresponse */
3799 #define	MC_CMD_PTP_OUT_TIME_EVENT_SUBSCRIBE_LEN 0
3800 
3801 /* MC_CMD_PTP_OUT_TIME_EVENT_UNSUBSCRIBE msgresponse */
3802 #define	MC_CMD_PTP_OUT_TIME_EVENT_UNSUBSCRIBE_LEN 0
3803 
3804 /* MC_CMD_PTP_OUT_READ_NIC_TIME msgresponse */
3805 #define	MC_CMD_PTP_OUT_READ_NIC_TIME_LEN 8
3806 /* Value of seconds timestamp */
3807 #define	MC_CMD_PTP_OUT_READ_NIC_TIME_SECONDS_OFST 0
3808 #define	MC_CMD_PTP_OUT_READ_NIC_TIME_SECONDS_LEN 4
3809 /* Timestamp major value */
3810 #define	MC_CMD_PTP_OUT_READ_NIC_TIME_MAJOR_OFST 0
3811 #define	MC_CMD_PTP_OUT_READ_NIC_TIME_MAJOR_LEN 4
3812 /* Value of nanoseconds timestamp */
3813 #define	MC_CMD_PTP_OUT_READ_NIC_TIME_NANOSECONDS_OFST 4
3814 #define	MC_CMD_PTP_OUT_READ_NIC_TIME_NANOSECONDS_LEN 4
3815 /* Timestamp minor value */
3816 #define	MC_CMD_PTP_OUT_READ_NIC_TIME_MINOR_OFST 4
3817 #define	MC_CMD_PTP_OUT_READ_NIC_TIME_MINOR_LEN 4
3818 
3819 /* MC_CMD_PTP_OUT_READ_NIC_TIME_V2 msgresponse */
3820 #define	MC_CMD_PTP_OUT_READ_NIC_TIME_V2_LEN 12
3821 /* Value of seconds timestamp */
3822 #define	MC_CMD_PTP_OUT_READ_NIC_TIME_V2_SECONDS_OFST 0
3823 #define	MC_CMD_PTP_OUT_READ_NIC_TIME_V2_SECONDS_LEN 4
3824 /* Timestamp major value */
3825 #define	MC_CMD_PTP_OUT_READ_NIC_TIME_V2_MAJOR_OFST 0
3826 #define	MC_CMD_PTP_OUT_READ_NIC_TIME_V2_MAJOR_LEN 4
3827 /* Value of nanoseconds timestamp */
3828 #define	MC_CMD_PTP_OUT_READ_NIC_TIME_V2_NANOSECONDS_OFST 4
3829 #define	MC_CMD_PTP_OUT_READ_NIC_TIME_V2_NANOSECONDS_LEN 4
3830 /* Timestamp minor value */
3831 #define	MC_CMD_PTP_OUT_READ_NIC_TIME_V2_MINOR_OFST 4
3832 #define	MC_CMD_PTP_OUT_READ_NIC_TIME_V2_MINOR_LEN 4
3833 /* Upper 32bits of major timestamp value */
3834 #define	MC_CMD_PTP_OUT_READ_NIC_TIME_V2_MAJOR_HI_OFST 8
3835 #define	MC_CMD_PTP_OUT_READ_NIC_TIME_V2_MAJOR_HI_LEN 4
3836 
3837 /* MC_CMD_PTP_OUT_STATUS msgresponse */
3838 #define	MC_CMD_PTP_OUT_STATUS_LEN 64
3839 /* Frequency of NIC's hardware clock */
3840 #define	MC_CMD_PTP_OUT_STATUS_CLOCK_FREQ_OFST 0
3841 #define	MC_CMD_PTP_OUT_STATUS_CLOCK_FREQ_LEN 4
3842 /* Number of packets transmitted and timestamped */
3843 #define	MC_CMD_PTP_OUT_STATUS_STATS_TX_OFST 4
3844 #define	MC_CMD_PTP_OUT_STATUS_STATS_TX_LEN 4
3845 /* Number of packets received and timestamped */
3846 #define	MC_CMD_PTP_OUT_STATUS_STATS_RX_OFST 8
3847 #define	MC_CMD_PTP_OUT_STATUS_STATS_RX_LEN 4
3848 /* Number of packets timestamped by the FPGA */
3849 #define	MC_CMD_PTP_OUT_STATUS_STATS_TS_OFST 12
3850 #define	MC_CMD_PTP_OUT_STATUS_STATS_TS_LEN 4
3851 /* Number of packets filter matched */
3852 #define	MC_CMD_PTP_OUT_STATUS_STATS_FM_OFST 16
3853 #define	MC_CMD_PTP_OUT_STATUS_STATS_FM_LEN 4
3854 /* Number of packets not filter matched */
3855 #define	MC_CMD_PTP_OUT_STATUS_STATS_NFM_OFST 20
3856 #define	MC_CMD_PTP_OUT_STATUS_STATS_NFM_LEN 4
3857 /* Number of PPS overflows (noise on input?) */
3858 #define	MC_CMD_PTP_OUT_STATUS_STATS_PPS_OFLOW_OFST 24
3859 #define	MC_CMD_PTP_OUT_STATUS_STATS_PPS_OFLOW_LEN 4
3860 /* Number of PPS bad periods */
3861 #define	MC_CMD_PTP_OUT_STATUS_STATS_PPS_BAD_OFST 28
3862 #define	MC_CMD_PTP_OUT_STATUS_STATS_PPS_BAD_LEN 4
3863 /* Minimum period of PPS pulse in nanoseconds */
3864 #define	MC_CMD_PTP_OUT_STATUS_STATS_PPS_PER_MIN_OFST 32
3865 #define	MC_CMD_PTP_OUT_STATUS_STATS_PPS_PER_MIN_LEN 4
3866 /* Maximum period of PPS pulse in nanoseconds */
3867 #define	MC_CMD_PTP_OUT_STATUS_STATS_PPS_PER_MAX_OFST 36
3868 #define	MC_CMD_PTP_OUT_STATUS_STATS_PPS_PER_MAX_LEN 4
3869 /* Last period of PPS pulse in nanoseconds */
3870 #define	MC_CMD_PTP_OUT_STATUS_STATS_PPS_PER_LAST_OFST 40
3871 #define	MC_CMD_PTP_OUT_STATUS_STATS_PPS_PER_LAST_LEN 4
3872 /* Mean period of PPS pulse in nanoseconds */
3873 #define	MC_CMD_PTP_OUT_STATUS_STATS_PPS_PER_MEAN_OFST 44
3874 #define	MC_CMD_PTP_OUT_STATUS_STATS_PPS_PER_MEAN_LEN 4
3875 /* Minimum offset of PPS pulse in nanoseconds (signed) */
3876 #define	MC_CMD_PTP_OUT_STATUS_STATS_PPS_OFF_MIN_OFST 48
3877 #define	MC_CMD_PTP_OUT_STATUS_STATS_PPS_OFF_MIN_LEN 4
3878 /* Maximum offset of PPS pulse in nanoseconds (signed) */
3879 #define	MC_CMD_PTP_OUT_STATUS_STATS_PPS_OFF_MAX_OFST 52
3880 #define	MC_CMD_PTP_OUT_STATUS_STATS_PPS_OFF_MAX_LEN 4
3881 /* Last offset of PPS pulse in nanoseconds (signed) */
3882 #define	MC_CMD_PTP_OUT_STATUS_STATS_PPS_OFF_LAST_OFST 56
3883 #define	MC_CMD_PTP_OUT_STATUS_STATS_PPS_OFF_LAST_LEN 4
3884 /* Mean offset of PPS pulse in nanoseconds (signed) */
3885 #define	MC_CMD_PTP_OUT_STATUS_STATS_PPS_OFF_MEAN_OFST 60
3886 #define	MC_CMD_PTP_OUT_STATUS_STATS_PPS_OFF_MEAN_LEN 4
3887 
3888 /* MC_CMD_PTP_OUT_SYNCHRONIZE msgresponse */
3889 #define	MC_CMD_PTP_OUT_SYNCHRONIZE_LENMIN 20
3890 #define	MC_CMD_PTP_OUT_SYNCHRONIZE_LENMAX 240
3891 #define	MC_CMD_PTP_OUT_SYNCHRONIZE_LENMAX_MCDI2 1020
3892 #define	MC_CMD_PTP_OUT_SYNCHRONIZE_LEN(num) (0+20*(num))
3893 #define	MC_CMD_PTP_OUT_SYNCHRONIZE_TIMESET_NUM(len) (((len)-0)/20)
3894 /* A set of host and NIC times */
3895 #define	MC_CMD_PTP_OUT_SYNCHRONIZE_TIMESET_OFST 0
3896 #define	MC_CMD_PTP_OUT_SYNCHRONIZE_TIMESET_LEN 20
3897 #define	MC_CMD_PTP_OUT_SYNCHRONIZE_TIMESET_MINNUM 1
3898 #define	MC_CMD_PTP_OUT_SYNCHRONIZE_TIMESET_MAXNUM 12
3899 #define	MC_CMD_PTP_OUT_SYNCHRONIZE_TIMESET_MAXNUM_MCDI2 51
3900 /* Host time immediately before NIC's hardware clock read */
3901 #define	MC_CMD_PTP_OUT_SYNCHRONIZE_HOSTSTART_OFST 0
3902 #define	MC_CMD_PTP_OUT_SYNCHRONIZE_HOSTSTART_LEN 4
3903 /* Value of seconds timestamp */
3904 #define	MC_CMD_PTP_OUT_SYNCHRONIZE_SECONDS_OFST 4
3905 #define	MC_CMD_PTP_OUT_SYNCHRONIZE_SECONDS_LEN 4
3906 /* Timestamp major value */
3907 #define	MC_CMD_PTP_OUT_SYNCHRONIZE_MAJOR_OFST 4
3908 #define	MC_CMD_PTP_OUT_SYNCHRONIZE_MAJOR_LEN 4
3909 /* Value of nanoseconds timestamp */
3910 #define	MC_CMD_PTP_OUT_SYNCHRONIZE_NANOSECONDS_OFST 8
3911 #define	MC_CMD_PTP_OUT_SYNCHRONIZE_NANOSECONDS_LEN 4
3912 /* Timestamp minor value */
3913 #define	MC_CMD_PTP_OUT_SYNCHRONIZE_MINOR_OFST 8
3914 #define	MC_CMD_PTP_OUT_SYNCHRONIZE_MINOR_LEN 4
3915 /* Host time immediately after NIC's hardware clock read */
3916 #define	MC_CMD_PTP_OUT_SYNCHRONIZE_HOSTEND_OFST 12
3917 #define	MC_CMD_PTP_OUT_SYNCHRONIZE_HOSTEND_LEN 4
3918 /* Number of nanoseconds waited after reading NIC's hardware clock */
3919 #define	MC_CMD_PTP_OUT_SYNCHRONIZE_WAITNS_OFST 16
3920 #define	MC_CMD_PTP_OUT_SYNCHRONIZE_WAITNS_LEN 4
3921 
3922 /* MC_CMD_PTP_OUT_MANFTEST_BASIC msgresponse */
3923 #define	MC_CMD_PTP_OUT_MANFTEST_BASIC_LEN 8
3924 /* Results of testing */
3925 #define	MC_CMD_PTP_OUT_MANFTEST_BASIC_TEST_RESULT_OFST 0
3926 #define	MC_CMD_PTP_OUT_MANFTEST_BASIC_TEST_RESULT_LEN 4
3927 /* enum: Successful test */
3928 #define	MC_CMD_PTP_MANF_SUCCESS 0x0
3929 /* enum: FPGA load failed */
3930 #define	MC_CMD_PTP_MANF_FPGA_LOAD 0x1
3931 /* enum: FPGA version invalid */
3932 #define	MC_CMD_PTP_MANF_FPGA_VERSION 0x2
3933 /* enum: FPGA registers incorrect */
3934 #define	MC_CMD_PTP_MANF_FPGA_REGISTERS 0x3
3935 /* enum: Oscillator possibly not working? */
3936 #define	MC_CMD_PTP_MANF_OSCILLATOR 0x4
3937 /* enum: Timestamps not increasing */
3938 #define	MC_CMD_PTP_MANF_TIMESTAMPS 0x5
3939 /* enum: Mismatched packet count */
3940 #define	MC_CMD_PTP_MANF_PACKET_COUNT 0x6
3941 /* enum: Mismatched packet count (Siena filter and FPGA) */
3942 #define	MC_CMD_PTP_MANF_FILTER_COUNT 0x7
3943 /* enum: Not enough packets to perform timestamp check */
3944 #define	MC_CMD_PTP_MANF_PACKET_ENOUGH 0x8
3945 /* enum: Timestamp trigger GPIO not working */
3946 #define	MC_CMD_PTP_MANF_GPIO_TRIGGER 0x9
3947 /* enum: Insufficient PPS events to perform checks */
3948 #define	MC_CMD_PTP_MANF_PPS_ENOUGH 0xa
3949 /* enum: PPS time event period not sufficiently close to 1s. */
3950 #define	MC_CMD_PTP_MANF_PPS_PERIOD 0xb
3951 /* enum: PPS time event nS reading not sufficiently close to zero. */
3952 #define	MC_CMD_PTP_MANF_PPS_NS 0xc
3953 /* enum: PTP peripheral registers incorrect */
3954 #define	MC_CMD_PTP_MANF_REGISTERS 0xd
3955 /* enum: Failed to read time from PTP peripheral */
3956 #define	MC_CMD_PTP_MANF_CLOCK_READ 0xe
3957 /* Presence of external oscillator */
3958 #define	MC_CMD_PTP_OUT_MANFTEST_BASIC_TEST_EXTOSC_OFST 4
3959 #define	MC_CMD_PTP_OUT_MANFTEST_BASIC_TEST_EXTOSC_LEN 4
3960 
3961 /* MC_CMD_PTP_OUT_MANFTEST_PACKET msgresponse */
3962 #define	MC_CMD_PTP_OUT_MANFTEST_PACKET_LEN 12
3963 /* Results of testing */
3964 #define	MC_CMD_PTP_OUT_MANFTEST_PACKET_TEST_RESULT_OFST 0
3965 #define	MC_CMD_PTP_OUT_MANFTEST_PACKET_TEST_RESULT_LEN 4
3966 /* Number of packets received by FPGA */
3967 #define	MC_CMD_PTP_OUT_MANFTEST_PACKET_TEST_FPGACOUNT_OFST 4
3968 #define	MC_CMD_PTP_OUT_MANFTEST_PACKET_TEST_FPGACOUNT_LEN 4
3969 /* Number of packets received by Siena filters */
3970 #define	MC_CMD_PTP_OUT_MANFTEST_PACKET_TEST_FILTERCOUNT_OFST 8
3971 #define	MC_CMD_PTP_OUT_MANFTEST_PACKET_TEST_FILTERCOUNT_LEN 4
3972 
3973 /* MC_CMD_PTP_OUT_FPGAREAD msgresponse */
3974 #define	MC_CMD_PTP_OUT_FPGAREAD_LENMIN 1
3975 #define	MC_CMD_PTP_OUT_FPGAREAD_LENMAX 252
3976 #define	MC_CMD_PTP_OUT_FPGAREAD_LENMAX_MCDI2 1020
3977 #define	MC_CMD_PTP_OUT_FPGAREAD_LEN(num) (0+1*(num))
3978 #define	MC_CMD_PTP_OUT_FPGAREAD_BUFFER_NUM(len) (((len)-0)/1)
3979 #define	MC_CMD_PTP_OUT_FPGAREAD_BUFFER_OFST 0
3980 #define	MC_CMD_PTP_OUT_FPGAREAD_BUFFER_LEN 1
3981 #define	MC_CMD_PTP_OUT_FPGAREAD_BUFFER_MINNUM 1
3982 #define	MC_CMD_PTP_OUT_FPGAREAD_BUFFER_MAXNUM 252
3983 #define	MC_CMD_PTP_OUT_FPGAREAD_BUFFER_MAXNUM_MCDI2 1020
3984 
3985 /* MC_CMD_PTP_OUT_GET_TIME_FORMAT msgresponse */
3986 #define	MC_CMD_PTP_OUT_GET_TIME_FORMAT_LEN 4
3987 /* Time format required/used by for this NIC. Applies to all PTP MCDI
3988  * operations that pass times between the host and firmware. If this operation
3989  * is not supported (older firmware) a format of seconds and nanoseconds should
3990  * be assumed. Note this enum is deprecated. Do not add to it- use the
3991  * TIME_FORMAT field in MC_CMD_PTP_OUT_GET_ATTRIBUTES instead.
3992  */
3993 #define	MC_CMD_PTP_OUT_GET_TIME_FORMAT_FORMAT_OFST 0
3994 #define	MC_CMD_PTP_OUT_GET_TIME_FORMAT_FORMAT_LEN 4
3995 /* enum: Times are in seconds and nanoseconds */
3996 #define	MC_CMD_PTP_OUT_GET_TIME_FORMAT_SECONDS_NANOSECONDS 0x0
3997 /* enum: Major register has units of 16 second per tick, minor 8 ns per tick */
3998 #define	MC_CMD_PTP_OUT_GET_TIME_FORMAT_16SECONDS_8NANOSECONDS 0x1
3999 /* enum: Major register has units of seconds, minor 2^-27s per tick */
4000 #define	MC_CMD_PTP_OUT_GET_TIME_FORMAT_SECONDS_27FRACTION 0x2
4001 
4002 /* MC_CMD_PTP_OUT_GET_ATTRIBUTES msgresponse */
4003 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_LEN 24
4004 /* Time format required/used by for this NIC. Applies to all PTP MCDI
4005  * operations that pass times between the host and firmware. If this operation
4006  * is not supported (older firmware) a format of seconds and nanoseconds should
4007  * be assumed.
4008  */
4009 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_TIME_FORMAT_OFST 0
4010 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_TIME_FORMAT_LEN 4
4011 /* enum: Times are in seconds and nanoseconds */
4012 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_SECONDS_NANOSECONDS 0x0
4013 /* enum: Major register has units of 16 second per tick, minor 8 ns per tick */
4014 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_16SECONDS_8NANOSECONDS 0x1
4015 /* enum: Major register has units of seconds, minor 2^-27s per tick */
4016 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_SECONDS_27FRACTION 0x2
4017 /* enum: Major register units are seconds, minor units are quarter nanoseconds
4018  */
4019 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_SECONDS_QTR_NANOSECONDS 0x3
4020 /* Minimum acceptable value for a corrected synchronization timeset. When
4021  * comparing host and NIC clock times, the MC returns a set of samples that
4022  * contain the host start and end time, the MC time when the host start was
4023  * detected and the time the MC waited between reading the time and detecting
4024  * the host end. The corrected sync window is the difference between the host
4025  * end and start times minus the time that the MC waited for host end.
4026  */
4027 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_SYNC_WINDOW_MIN_OFST 4
4028 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_SYNC_WINDOW_MIN_LEN 4
4029 /* Various PTP capabilities */
4030 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_CAPABILITIES_OFST 8
4031 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_CAPABILITIES_LEN 4
4032 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_REPORT_SYNC_STATUS_OFST 8
4033 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_REPORT_SYNC_STATUS_LBN 0
4034 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_REPORT_SYNC_STATUS_WIDTH 1
4035 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_RX_TSTAMP_OOB_OFST 8
4036 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_RX_TSTAMP_OOB_LBN 1
4037 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_RX_TSTAMP_OOB_WIDTH 1
4038 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_64BIT_SECONDS_OFST 8
4039 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_64BIT_SECONDS_LBN 2
4040 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_64BIT_SECONDS_WIDTH 1
4041 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_FP44_FREQ_ADJ_OFST 8
4042 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_FP44_FREQ_ADJ_LBN 3
4043 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_FP44_FREQ_ADJ_WIDTH 1
4044 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_RESERVED0_OFST 12
4045 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_RESERVED0_LEN 4
4046 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_RESERVED1_OFST 16
4047 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_RESERVED1_LEN 4
4048 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_RESERVED2_OFST 20
4049 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_RESERVED2_LEN 4
4050 
4051 /* MC_CMD_PTP_OUT_GET_ATTRIBUTES_V2 msgresponse */
4052 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_V2_LEN 40
4053 /* Time format required/used by for this NIC. Applies to all PTP MCDI
4054  * operations that pass times between the host and firmware. If this operation
4055  * is not supported (older firmware) a format of seconds and nanoseconds should
4056  * be assumed.
4057  */
4058 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_V2_TIME_FORMAT_OFST 0
4059 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_V2_TIME_FORMAT_LEN 4
4060 /* enum: Times are in seconds and nanoseconds */
4061 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_V2_SECONDS_NANOSECONDS 0x0
4062 /* enum: Major register has units of 16 second per tick, minor 8 ns per tick */
4063 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_V2_16SECONDS_8NANOSECONDS 0x1
4064 /* enum: Major register has units of seconds, minor 2^-27s per tick */
4065 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_V2_SECONDS_27FRACTION 0x2
4066 /* enum: Major register units are seconds, minor units are quarter nanoseconds
4067  */
4068 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_V2_SECONDS_QTR_NANOSECONDS 0x3
4069 /* Minimum acceptable value for a corrected synchronization timeset. When
4070  * comparing host and NIC clock times, the MC returns a set of samples that
4071  * contain the host start and end time, the MC time when the host start was
4072  * detected and the time the MC waited between reading the time and detecting
4073  * the host end. The corrected sync window is the difference between the host
4074  * end and start times minus the time that the MC waited for host end.
4075  */
4076 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_V2_SYNC_WINDOW_MIN_OFST 4
4077 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_V2_SYNC_WINDOW_MIN_LEN 4
4078 /* Various PTP capabilities */
4079 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_V2_CAPABILITIES_OFST 8
4080 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_V2_CAPABILITIES_LEN 4
4081 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_V2_REPORT_SYNC_STATUS_OFST 8
4082 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_V2_REPORT_SYNC_STATUS_LBN 0
4083 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_V2_REPORT_SYNC_STATUS_WIDTH 1
4084 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_V2_RX_TSTAMP_OOB_OFST 8
4085 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_V2_RX_TSTAMP_OOB_LBN 1
4086 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_V2_RX_TSTAMP_OOB_WIDTH 1
4087 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_V2_64BIT_SECONDS_OFST 8
4088 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_V2_64BIT_SECONDS_LBN 2
4089 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_V2_64BIT_SECONDS_WIDTH 1
4090 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_V2_FP44_FREQ_ADJ_OFST 8
4091 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_V2_FP44_FREQ_ADJ_LBN 3
4092 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_V2_FP44_FREQ_ADJ_WIDTH 1
4093 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_V2_RESERVED0_OFST 12
4094 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_V2_RESERVED0_LEN 4
4095 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_V2_RESERVED1_OFST 16
4096 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_V2_RESERVED1_LEN 4
4097 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_V2_RESERVED2_OFST 20
4098 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_V2_RESERVED2_LEN 4
4099 /* Minimum supported value for the FREQ field in
4100  * MC_CMD_PTP/MC_CMD_PTP_IN_ADJUST and
4101  * MC_CMD_PTP/MC_CMD_PTP_IN_CLOCK_FREQ_ADJUST message requests. If this message
4102  * response is not supported a value of -0.1 ns should be assumed, which is
4103  * equivalent to a -10% adjustment.
4104  */
4105 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_V2_FREQ_ADJ_MIN_OFST 24
4106 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_V2_FREQ_ADJ_MIN_LEN 8
4107 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_V2_FREQ_ADJ_MIN_LO_OFST 24
4108 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_V2_FREQ_ADJ_MIN_LO_LEN 4
4109 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_V2_FREQ_ADJ_MIN_LO_LBN 192
4110 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_V2_FREQ_ADJ_MIN_LO_WIDTH 32
4111 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_V2_FREQ_ADJ_MIN_HI_OFST 28
4112 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_V2_FREQ_ADJ_MIN_HI_LEN 4
4113 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_V2_FREQ_ADJ_MIN_HI_LBN 224
4114 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_V2_FREQ_ADJ_MIN_HI_WIDTH 32
4115 /* Maximum supported value for the FREQ field in
4116  * MC_CMD_PTP/MC_CMD_PTP_IN_ADJUST and
4117  * MC_CMD_PTP/MC_CMD_PTP_IN_CLOCK_FREQ_ADJUST message requests. If this message
4118  * response is not supported a value of 0.1 ns should be assumed, which is
4119  * equivalent to a +10% adjustment.
4120  */
4121 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_V2_FREQ_ADJ_MAX_OFST 32
4122 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_V2_FREQ_ADJ_MAX_LEN 8
4123 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_V2_FREQ_ADJ_MAX_LO_OFST 32
4124 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_V2_FREQ_ADJ_MAX_LO_LEN 4
4125 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_V2_FREQ_ADJ_MAX_LO_LBN 256
4126 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_V2_FREQ_ADJ_MAX_LO_WIDTH 32
4127 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_V2_FREQ_ADJ_MAX_HI_OFST 36
4128 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_V2_FREQ_ADJ_MAX_HI_LEN 4
4129 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_V2_FREQ_ADJ_MAX_HI_LBN 288
4130 #define	MC_CMD_PTP_OUT_GET_ATTRIBUTES_V2_FREQ_ADJ_MAX_HI_WIDTH 32
4131 
4132 /* MC_CMD_PTP_OUT_GET_TIMESTAMP_CORRECTIONS msgresponse */
4133 #define	MC_CMD_PTP_OUT_GET_TIMESTAMP_CORRECTIONS_LEN 16
4134 /* Uncorrected error on PTP transmit timestamps in NIC clock format */
4135 #define	MC_CMD_PTP_OUT_GET_TIMESTAMP_CORRECTIONS_TRANSMIT_OFST 0
4136 #define	MC_CMD_PTP_OUT_GET_TIMESTAMP_CORRECTIONS_TRANSMIT_LEN 4
4137 /* Uncorrected error on PTP receive timestamps in NIC clock format */
4138 #define	MC_CMD_PTP_OUT_GET_TIMESTAMP_CORRECTIONS_RECEIVE_OFST 4
4139 #define	MC_CMD_PTP_OUT_GET_TIMESTAMP_CORRECTIONS_RECEIVE_LEN 4
4140 /* Uncorrected error on PPS output in NIC clock format */
4141 #define	MC_CMD_PTP_OUT_GET_TIMESTAMP_CORRECTIONS_PPS_OUT_OFST 8
4142 #define	MC_CMD_PTP_OUT_GET_TIMESTAMP_CORRECTIONS_PPS_OUT_LEN 4
4143 /* Uncorrected error on PPS input in NIC clock format */
4144 #define	MC_CMD_PTP_OUT_GET_TIMESTAMP_CORRECTIONS_PPS_IN_OFST 12
4145 #define	MC_CMD_PTP_OUT_GET_TIMESTAMP_CORRECTIONS_PPS_IN_LEN 4
4146 
4147 /* MC_CMD_PTP_OUT_GET_TIMESTAMP_CORRECTIONS_V2 msgresponse */
4148 #define	MC_CMD_PTP_OUT_GET_TIMESTAMP_CORRECTIONS_V2_LEN 24
4149 /* Uncorrected error on PTP transmit timestamps in NIC clock format */
4150 #define	MC_CMD_PTP_OUT_GET_TIMESTAMP_CORRECTIONS_V2_PTP_TX_OFST 0
4151 #define	MC_CMD_PTP_OUT_GET_TIMESTAMP_CORRECTIONS_V2_PTP_TX_LEN 4
4152 /* Uncorrected error on PTP receive timestamps in NIC clock format */
4153 #define	MC_CMD_PTP_OUT_GET_TIMESTAMP_CORRECTIONS_V2_PTP_RX_OFST 4
4154 #define	MC_CMD_PTP_OUT_GET_TIMESTAMP_CORRECTIONS_V2_PTP_RX_LEN 4
4155 /* Uncorrected error on PPS output in NIC clock format */
4156 #define	MC_CMD_PTP_OUT_GET_TIMESTAMP_CORRECTIONS_V2_PPS_OUT_OFST 8
4157 #define	MC_CMD_PTP_OUT_GET_TIMESTAMP_CORRECTIONS_V2_PPS_OUT_LEN 4
4158 /* Uncorrected error on PPS input in NIC clock format */
4159 #define	MC_CMD_PTP_OUT_GET_TIMESTAMP_CORRECTIONS_V2_PPS_IN_OFST 12
4160 #define	MC_CMD_PTP_OUT_GET_TIMESTAMP_CORRECTIONS_V2_PPS_IN_LEN 4
4161 /* Uncorrected error on non-PTP transmit timestamps in NIC clock format */
4162 #define	MC_CMD_PTP_OUT_GET_TIMESTAMP_CORRECTIONS_V2_GENERAL_TX_OFST 16
4163 #define	MC_CMD_PTP_OUT_GET_TIMESTAMP_CORRECTIONS_V2_GENERAL_TX_LEN 4
4164 /* Uncorrected error on non-PTP receive timestamps in NIC clock format */
4165 #define	MC_CMD_PTP_OUT_GET_TIMESTAMP_CORRECTIONS_V2_GENERAL_RX_OFST 20
4166 #define	MC_CMD_PTP_OUT_GET_TIMESTAMP_CORRECTIONS_V2_GENERAL_RX_LEN 4
4167 
4168 /* MC_CMD_PTP_OUT_MANFTEST_PPS msgresponse */
4169 #define	MC_CMD_PTP_OUT_MANFTEST_PPS_LEN 4
4170 /* Results of testing */
4171 #define	MC_CMD_PTP_OUT_MANFTEST_PPS_TEST_RESULT_OFST 0
4172 #define	MC_CMD_PTP_OUT_MANFTEST_PPS_TEST_RESULT_LEN 4
4173 /*            Enum values, see field(s): */
4174 /*               MC_CMD_PTP_OUT_MANFTEST_BASIC/TEST_RESULT */
4175 
4176 /* MC_CMD_PTP_OUT_SET_SYNC_STATUS msgresponse */
4177 #define	MC_CMD_PTP_OUT_SET_SYNC_STATUS_LEN 0
4178 
4179 
4180 /***********************************/
4181 /* MC_CMD_CSR_READ32
4182  * Read 32bit words from the indirect memory map.
4183  *
4184  * Note - this command originally belonged to INSECURE category. But access is
4185  * required to specific registers for customer diagnostics. The command handler
4186  * has additional checks to reject insecure calls.
4187  */
4188 #define	MC_CMD_CSR_READ32 0xc
4189 #define	MC_CMD_CSR_READ32_MSGSET 0xc
4190 #undef	MC_CMD_0xc_PRIVILEGE_CTG
4191 
4192 #define	MC_CMD_0xc_PRIVILEGE_CTG SRIOV_CTG_ADMIN
4193 
4194 /* MC_CMD_CSR_READ32_IN msgrequest */
4195 #define	MC_CMD_CSR_READ32_IN_LEN 12
4196 /* Address */
4197 #define	MC_CMD_CSR_READ32_IN_ADDR_OFST 0
4198 #define	MC_CMD_CSR_READ32_IN_ADDR_LEN 4
4199 #define	MC_CMD_CSR_READ32_IN_STEP_OFST 4
4200 #define	MC_CMD_CSR_READ32_IN_STEP_LEN 4
4201 #define	MC_CMD_CSR_READ32_IN_NUMWORDS_OFST 8
4202 #define	MC_CMD_CSR_READ32_IN_NUMWORDS_LEN 4
4203 
4204 /* MC_CMD_CSR_READ32_OUT msgresponse */
4205 #define	MC_CMD_CSR_READ32_OUT_LENMIN 4
4206 #define	MC_CMD_CSR_READ32_OUT_LENMAX 252
4207 #define	MC_CMD_CSR_READ32_OUT_LENMAX_MCDI2 1020
4208 #define	MC_CMD_CSR_READ32_OUT_LEN(num) (0+4*(num))
4209 #define	MC_CMD_CSR_READ32_OUT_BUFFER_NUM(len) (((len)-0)/4)
4210 /* The last dword is the status, not a value read */
4211 #define	MC_CMD_CSR_READ32_OUT_BUFFER_OFST 0
4212 #define	MC_CMD_CSR_READ32_OUT_BUFFER_LEN 4
4213 #define	MC_CMD_CSR_READ32_OUT_BUFFER_MINNUM 1
4214 #define	MC_CMD_CSR_READ32_OUT_BUFFER_MAXNUM 63
4215 #define	MC_CMD_CSR_READ32_OUT_BUFFER_MAXNUM_MCDI2 255
4216 
4217 
4218 /***********************************/
4219 /* MC_CMD_CSR_WRITE32
4220  * Write 32bit dwords to the indirect memory map.
4221  */
4222 #define	MC_CMD_CSR_WRITE32 0xd
4223 #define	MC_CMD_CSR_WRITE32_MSGSET 0xd
4224 #undef	MC_CMD_0xd_PRIVILEGE_CTG
4225 
4226 #define	MC_CMD_0xd_PRIVILEGE_CTG SRIOV_CTG_INSECURE
4227 
4228 /* MC_CMD_CSR_WRITE32_IN msgrequest */
4229 #define	MC_CMD_CSR_WRITE32_IN_LENMIN 12
4230 #define	MC_CMD_CSR_WRITE32_IN_LENMAX 252
4231 #define	MC_CMD_CSR_WRITE32_IN_LENMAX_MCDI2 1020
4232 #define	MC_CMD_CSR_WRITE32_IN_LEN(num) (8+4*(num))
4233 #define	MC_CMD_CSR_WRITE32_IN_BUFFER_NUM(len) (((len)-8)/4)
4234 /* Address */
4235 #define	MC_CMD_CSR_WRITE32_IN_ADDR_OFST 0
4236 #define	MC_CMD_CSR_WRITE32_IN_ADDR_LEN 4
4237 #define	MC_CMD_CSR_WRITE32_IN_STEP_OFST 4
4238 #define	MC_CMD_CSR_WRITE32_IN_STEP_LEN 4
4239 #define	MC_CMD_CSR_WRITE32_IN_BUFFER_OFST 8
4240 #define	MC_CMD_CSR_WRITE32_IN_BUFFER_LEN 4
4241 #define	MC_CMD_CSR_WRITE32_IN_BUFFER_MINNUM 1
4242 #define	MC_CMD_CSR_WRITE32_IN_BUFFER_MAXNUM 61
4243 #define	MC_CMD_CSR_WRITE32_IN_BUFFER_MAXNUM_MCDI2 253
4244 
4245 /* MC_CMD_CSR_WRITE32_OUT msgresponse */
4246 #define	MC_CMD_CSR_WRITE32_OUT_LEN 4
4247 #define	MC_CMD_CSR_WRITE32_OUT_STATUS_OFST 0
4248 #define	MC_CMD_CSR_WRITE32_OUT_STATUS_LEN 4
4249 
4250 
4251 /***********************************/
4252 /* MC_CMD_HP
4253  * These commands are used for HP related features. They are grouped under one
4254  * MCDI command to avoid creating too many MCDI commands.
4255  */
4256 #define	MC_CMD_HP 0x54
4257 #define	MC_CMD_HP_MSGSET 0x54
4258 #undef	MC_CMD_0x54_PRIVILEGE_CTG
4259 
4260 #define	MC_CMD_0x54_PRIVILEGE_CTG SRIOV_CTG_ADMIN_TSA_UNBOUND
4261 
4262 /* MC_CMD_HP_IN msgrequest */
4263 #define	MC_CMD_HP_IN_LEN 16
4264 /* HP OCSD sub-command. When address is not NULL, request activation of OCSD at
4265  * the specified address with the specified interval.When address is NULL,
4266  * INTERVAL is interpreted as a command: 0: stop OCSD / 1: Report OCSD current
4267  * state / 2: (debug) Show temperature reported by one of the supported
4268  * sensors.
4269  */
4270 #define	MC_CMD_HP_IN_SUBCMD_OFST 0
4271 #define	MC_CMD_HP_IN_SUBCMD_LEN 4
4272 /* enum: OCSD (Option Card Sensor Data) sub-command. */
4273 #define	MC_CMD_HP_IN_OCSD_SUBCMD 0x0
4274 /* enum: Last known valid HP sub-command. */
4275 #define	MC_CMD_HP_IN_LAST_SUBCMD 0x0
4276 /* The address to the array of sensor fields. (Or NULL to use a sub-command.)
4277  */
4278 #define	MC_CMD_HP_IN_OCSD_ADDR_OFST 4
4279 #define	MC_CMD_HP_IN_OCSD_ADDR_LEN 8
4280 #define	MC_CMD_HP_IN_OCSD_ADDR_LO_OFST 4
4281 #define	MC_CMD_HP_IN_OCSD_ADDR_LO_LEN 4
4282 #define	MC_CMD_HP_IN_OCSD_ADDR_LO_LBN 32
4283 #define	MC_CMD_HP_IN_OCSD_ADDR_LO_WIDTH 32
4284 #define	MC_CMD_HP_IN_OCSD_ADDR_HI_OFST 8
4285 #define	MC_CMD_HP_IN_OCSD_ADDR_HI_LEN 4
4286 #define	MC_CMD_HP_IN_OCSD_ADDR_HI_LBN 64
4287 #define	MC_CMD_HP_IN_OCSD_ADDR_HI_WIDTH 32
4288 /* The requested update interval, in seconds. (Or the sub-command if ADDR is
4289  * NULL.)
4290  */
4291 #define	MC_CMD_HP_IN_OCSD_INTERVAL_OFST 12
4292 #define	MC_CMD_HP_IN_OCSD_INTERVAL_LEN 4
4293 
4294 /* MC_CMD_HP_OUT msgresponse */
4295 #define	MC_CMD_HP_OUT_LEN 4
4296 #define	MC_CMD_HP_OUT_OCSD_STATUS_OFST 0
4297 #define	MC_CMD_HP_OUT_OCSD_STATUS_LEN 4
4298 /* enum: OCSD stopped for this card. */
4299 #define	MC_CMD_HP_OUT_OCSD_STOPPED 0x1
4300 /* enum: OCSD was successfully started with the address provided. */
4301 #define	MC_CMD_HP_OUT_OCSD_STARTED 0x2
4302 /* enum: OCSD was already started for this card. */
4303 #define	MC_CMD_HP_OUT_OCSD_ALREADY_STARTED 0x3
4304 
4305 
4306 /***********************************/
4307 /* MC_CMD_STACKINFO
4308  * Get stack information.
4309  */
4310 #define	MC_CMD_STACKINFO 0xf
4311 #define	MC_CMD_STACKINFO_MSGSET 0xf
4312 #undef	MC_CMD_0xf_PRIVILEGE_CTG
4313 
4314 #define	MC_CMD_0xf_PRIVILEGE_CTG SRIOV_CTG_ADMIN
4315 
4316 /* MC_CMD_STACKINFO_IN msgrequest */
4317 #define	MC_CMD_STACKINFO_IN_LEN 0
4318 
4319 /* MC_CMD_STACKINFO_OUT msgresponse */
4320 #define	MC_CMD_STACKINFO_OUT_LENMIN 12
4321 #define	MC_CMD_STACKINFO_OUT_LENMAX 252
4322 #define	MC_CMD_STACKINFO_OUT_LENMAX_MCDI2 1020
4323 #define	MC_CMD_STACKINFO_OUT_LEN(num) (0+12*(num))
4324 #define	MC_CMD_STACKINFO_OUT_THREAD_INFO_NUM(len) (((len)-0)/12)
4325 /* (thread ptr, stack size, free space) for each thread in system */
4326 #define	MC_CMD_STACKINFO_OUT_THREAD_INFO_OFST 0
4327 #define	MC_CMD_STACKINFO_OUT_THREAD_INFO_LEN 12
4328 #define	MC_CMD_STACKINFO_OUT_THREAD_INFO_MINNUM 1
4329 #define	MC_CMD_STACKINFO_OUT_THREAD_INFO_MAXNUM 21
4330 #define	MC_CMD_STACKINFO_OUT_THREAD_INFO_MAXNUM_MCDI2 85
4331 
4332 
4333 /***********************************/
4334 /* MC_CMD_MDIO_READ
4335  * MDIO register read.
4336  */
4337 #define	MC_CMD_MDIO_READ 0x10
4338 #define	MC_CMD_MDIO_READ_MSGSET 0x10
4339 #undef	MC_CMD_0x10_PRIVILEGE_CTG
4340 
4341 #define	MC_CMD_0x10_PRIVILEGE_CTG SRIOV_CTG_GENERAL
4342 
4343 /* MC_CMD_MDIO_READ_IN msgrequest */
4344 #define	MC_CMD_MDIO_READ_IN_LEN 16
4345 /* Bus number; there are two MDIO buses: one for the internal PHY, and one for
4346  * external devices.
4347  */
4348 #define	MC_CMD_MDIO_READ_IN_BUS_OFST 0
4349 #define	MC_CMD_MDIO_READ_IN_BUS_LEN 4
4350 /* enum: Internal. */
4351 #define	MC_CMD_MDIO_BUS_INTERNAL 0x0
4352 /* enum: External. */
4353 #define	MC_CMD_MDIO_BUS_EXTERNAL 0x1
4354 /* Port address */
4355 #define	MC_CMD_MDIO_READ_IN_PRTAD_OFST 4
4356 #define	MC_CMD_MDIO_READ_IN_PRTAD_LEN 4
4357 /* Device Address or clause 22. */
4358 #define	MC_CMD_MDIO_READ_IN_DEVAD_OFST 8
4359 #define	MC_CMD_MDIO_READ_IN_DEVAD_LEN 4
4360 /* enum: By default all the MCDI MDIO operations perform clause45 mode. If you
4361  * want to use clause22 then set DEVAD = MC_CMD_MDIO_CLAUSE22.
4362  */
4363 #define	MC_CMD_MDIO_CLAUSE22 0x20
4364 /* Address */
4365 #define	MC_CMD_MDIO_READ_IN_ADDR_OFST 12
4366 #define	MC_CMD_MDIO_READ_IN_ADDR_LEN 4
4367 
4368 /* MC_CMD_MDIO_READ_OUT msgresponse */
4369 #define	MC_CMD_MDIO_READ_OUT_LEN 8
4370 /* Value */
4371 #define	MC_CMD_MDIO_READ_OUT_VALUE_OFST 0
4372 #define	MC_CMD_MDIO_READ_OUT_VALUE_LEN 4
4373 /* Status the MDIO commands return the raw status bits from the MDIO block. A
4374  * "good" transaction should have the DONE bit set and all other bits clear.
4375  */
4376 #define	MC_CMD_MDIO_READ_OUT_STATUS_OFST 4
4377 #define	MC_CMD_MDIO_READ_OUT_STATUS_LEN 4
4378 /* enum: Good. */
4379 #define	MC_CMD_MDIO_STATUS_GOOD 0x8
4380 
4381 
4382 /***********************************/
4383 /* MC_CMD_MDIO_WRITE
4384  * MDIO register write.
4385  */
4386 #define	MC_CMD_MDIO_WRITE 0x11
4387 #define	MC_CMD_MDIO_WRITE_MSGSET 0x11
4388 #undef	MC_CMD_0x11_PRIVILEGE_CTG
4389 
4390 #define	MC_CMD_0x11_PRIVILEGE_CTG SRIOV_CTG_ADMIN
4391 
4392 /* MC_CMD_MDIO_WRITE_IN msgrequest */
4393 #define	MC_CMD_MDIO_WRITE_IN_LEN 20
4394 /* Bus number; there are two MDIO buses: one for the internal PHY, and one for
4395  * external devices.
4396  */
4397 #define	MC_CMD_MDIO_WRITE_IN_BUS_OFST 0
4398 #define	MC_CMD_MDIO_WRITE_IN_BUS_LEN 4
4399 /* enum: Internal. */
4400 /*               MC_CMD_MDIO_BUS_INTERNAL 0x0 */
4401 /* enum: External. */
4402 /*               MC_CMD_MDIO_BUS_EXTERNAL 0x1 */
4403 /* Port address */
4404 #define	MC_CMD_MDIO_WRITE_IN_PRTAD_OFST 4
4405 #define	MC_CMD_MDIO_WRITE_IN_PRTAD_LEN 4
4406 /* Device Address or clause 22. */
4407 #define	MC_CMD_MDIO_WRITE_IN_DEVAD_OFST 8
4408 #define	MC_CMD_MDIO_WRITE_IN_DEVAD_LEN 4
4409 /* enum: By default all the MCDI MDIO operations perform clause45 mode. If you
4410  * want to use clause22 then set DEVAD = MC_CMD_MDIO_CLAUSE22.
4411  */
4412 /*               MC_CMD_MDIO_CLAUSE22 0x20 */
4413 /* Address */
4414 #define	MC_CMD_MDIO_WRITE_IN_ADDR_OFST 12
4415 #define	MC_CMD_MDIO_WRITE_IN_ADDR_LEN 4
4416 /* Value */
4417 #define	MC_CMD_MDIO_WRITE_IN_VALUE_OFST 16
4418 #define	MC_CMD_MDIO_WRITE_IN_VALUE_LEN 4
4419 
4420 /* MC_CMD_MDIO_WRITE_OUT msgresponse */
4421 #define	MC_CMD_MDIO_WRITE_OUT_LEN 4
4422 /* Status; the MDIO commands return the raw status bits from the MDIO block. A
4423  * "good" transaction should have the DONE bit set and all other bits clear.
4424  */
4425 #define	MC_CMD_MDIO_WRITE_OUT_STATUS_OFST 0
4426 #define	MC_CMD_MDIO_WRITE_OUT_STATUS_LEN 4
4427 /* enum: Good. */
4428 /*               MC_CMD_MDIO_STATUS_GOOD 0x8 */
4429 
4430 
4431 /***********************************/
4432 /* MC_CMD_DBI_WRITE
4433  * Write DBI register(s).
4434  */
4435 #define	MC_CMD_DBI_WRITE 0x12
4436 #define	MC_CMD_DBI_WRITE_MSGSET 0x12
4437 #undef	MC_CMD_0x12_PRIVILEGE_CTG
4438 
4439 #define	MC_CMD_0x12_PRIVILEGE_CTG SRIOV_CTG_INSECURE
4440 
4441 /* MC_CMD_DBI_WRITE_IN msgrequest */
4442 #define	MC_CMD_DBI_WRITE_IN_LENMIN 12
4443 #define	MC_CMD_DBI_WRITE_IN_LENMAX 252
4444 #define	MC_CMD_DBI_WRITE_IN_LENMAX_MCDI2 1020
4445 #define	MC_CMD_DBI_WRITE_IN_LEN(num) (0+12*(num))
4446 #define	MC_CMD_DBI_WRITE_IN_DBIWROP_NUM(len) (((len)-0)/12)
4447 /* Each write op consists of an address (offset 0), byte enable/VF/CS2 (offset
4448  * 32) and value (offset 64). See MC_CMD_DBIWROP_TYPEDEF.
4449  */
4450 #define	MC_CMD_DBI_WRITE_IN_DBIWROP_OFST 0
4451 #define	MC_CMD_DBI_WRITE_IN_DBIWROP_LEN 12
4452 #define	MC_CMD_DBI_WRITE_IN_DBIWROP_MINNUM 1
4453 #define	MC_CMD_DBI_WRITE_IN_DBIWROP_MAXNUM 21
4454 #define	MC_CMD_DBI_WRITE_IN_DBIWROP_MAXNUM_MCDI2 85
4455 
4456 /* MC_CMD_DBI_WRITE_OUT msgresponse */
4457 #define	MC_CMD_DBI_WRITE_OUT_LEN 0
4458 
4459 /* MC_CMD_DBIWROP_TYPEDEF structuredef */
4460 #define	MC_CMD_DBIWROP_TYPEDEF_LEN 12
4461 #define	MC_CMD_DBIWROP_TYPEDEF_ADDRESS_OFST 0
4462 #define	MC_CMD_DBIWROP_TYPEDEF_ADDRESS_LEN 4
4463 #define	MC_CMD_DBIWROP_TYPEDEF_ADDRESS_LBN 0
4464 #define	MC_CMD_DBIWROP_TYPEDEF_ADDRESS_WIDTH 32
4465 #define	MC_CMD_DBIWROP_TYPEDEF_PARMS_OFST 4
4466 #define	MC_CMD_DBIWROP_TYPEDEF_PARMS_LEN 4
4467 #define	MC_CMD_DBIWROP_TYPEDEF_VF_NUM_OFST 4
4468 #define	MC_CMD_DBIWROP_TYPEDEF_VF_NUM_LBN 16
4469 #define	MC_CMD_DBIWROP_TYPEDEF_VF_NUM_WIDTH 16
4470 #define	MC_CMD_DBIWROP_TYPEDEF_VF_ACTIVE_OFST 4
4471 #define	MC_CMD_DBIWROP_TYPEDEF_VF_ACTIVE_LBN 15
4472 #define	MC_CMD_DBIWROP_TYPEDEF_VF_ACTIVE_WIDTH 1
4473 #define	MC_CMD_DBIWROP_TYPEDEF_CS2_OFST 4
4474 #define	MC_CMD_DBIWROP_TYPEDEF_CS2_LBN 14
4475 #define	MC_CMD_DBIWROP_TYPEDEF_CS2_WIDTH 1
4476 #define	MC_CMD_DBIWROP_TYPEDEF_PARMS_LBN 32
4477 #define	MC_CMD_DBIWROP_TYPEDEF_PARMS_WIDTH 32
4478 #define	MC_CMD_DBIWROP_TYPEDEF_VALUE_OFST 8
4479 #define	MC_CMD_DBIWROP_TYPEDEF_VALUE_LEN 4
4480 #define	MC_CMD_DBIWROP_TYPEDEF_VALUE_LBN 64
4481 #define	MC_CMD_DBIWROP_TYPEDEF_VALUE_WIDTH 32
4482 
4483 
4484 /***********************************/
4485 /* MC_CMD_PORT_READ32
4486  * Read a 32-bit register from the indirect port register map. The port to
4487  * access is implied by the Shared memory channel used.
4488  */
4489 #define	MC_CMD_PORT_READ32 0x14
4490 #define	MC_CMD_PORT_READ32_MSGSET 0x14
4491 
4492 /* MC_CMD_PORT_READ32_IN msgrequest */
4493 #define	MC_CMD_PORT_READ32_IN_LEN 4
4494 /* Address */
4495 #define	MC_CMD_PORT_READ32_IN_ADDR_OFST 0
4496 #define	MC_CMD_PORT_READ32_IN_ADDR_LEN 4
4497 
4498 /* MC_CMD_PORT_READ32_OUT msgresponse */
4499 #define	MC_CMD_PORT_READ32_OUT_LEN 8
4500 /* Value */
4501 #define	MC_CMD_PORT_READ32_OUT_VALUE_OFST 0
4502 #define	MC_CMD_PORT_READ32_OUT_VALUE_LEN 4
4503 /* Status */
4504 #define	MC_CMD_PORT_READ32_OUT_STATUS_OFST 4
4505 #define	MC_CMD_PORT_READ32_OUT_STATUS_LEN 4
4506 
4507 
4508 /***********************************/
4509 /* MC_CMD_PORT_WRITE32
4510  * Write a 32-bit register to the indirect port register map. The port to
4511  * access is implied by the Shared memory channel used.
4512  */
4513 #define	MC_CMD_PORT_WRITE32 0x15
4514 #define	MC_CMD_PORT_WRITE32_MSGSET 0x15
4515 
4516 /* MC_CMD_PORT_WRITE32_IN msgrequest */
4517 #define	MC_CMD_PORT_WRITE32_IN_LEN 8
4518 /* Address */
4519 #define	MC_CMD_PORT_WRITE32_IN_ADDR_OFST 0
4520 #define	MC_CMD_PORT_WRITE32_IN_ADDR_LEN 4
4521 /* Value */
4522 #define	MC_CMD_PORT_WRITE32_IN_VALUE_OFST 4
4523 #define	MC_CMD_PORT_WRITE32_IN_VALUE_LEN 4
4524 
4525 /* MC_CMD_PORT_WRITE32_OUT msgresponse */
4526 #define	MC_CMD_PORT_WRITE32_OUT_LEN 4
4527 /* Status */
4528 #define	MC_CMD_PORT_WRITE32_OUT_STATUS_OFST 0
4529 #define	MC_CMD_PORT_WRITE32_OUT_STATUS_LEN 4
4530 
4531 
4532 /***********************************/
4533 /* MC_CMD_PORT_READ128
4534  * Read a 128-bit register from the indirect port register map. The port to
4535  * access is implied by the Shared memory channel used.
4536  */
4537 #define	MC_CMD_PORT_READ128 0x16
4538 #define	MC_CMD_PORT_READ128_MSGSET 0x16
4539 
4540 /* MC_CMD_PORT_READ128_IN msgrequest */
4541 #define	MC_CMD_PORT_READ128_IN_LEN 4
4542 /* Address */
4543 #define	MC_CMD_PORT_READ128_IN_ADDR_OFST 0
4544 #define	MC_CMD_PORT_READ128_IN_ADDR_LEN 4
4545 
4546 /* MC_CMD_PORT_READ128_OUT msgresponse */
4547 #define	MC_CMD_PORT_READ128_OUT_LEN 20
4548 /* Value */
4549 #define	MC_CMD_PORT_READ128_OUT_VALUE_OFST 0
4550 #define	MC_CMD_PORT_READ128_OUT_VALUE_LEN 16
4551 /* Status */
4552 #define	MC_CMD_PORT_READ128_OUT_STATUS_OFST 16
4553 #define	MC_CMD_PORT_READ128_OUT_STATUS_LEN 4
4554 
4555 
4556 /***********************************/
4557 /* MC_CMD_PORT_WRITE128
4558  * Write a 128-bit register to the indirect port register map. The port to
4559  * access is implied by the Shared memory channel used.
4560  */
4561 #define	MC_CMD_PORT_WRITE128 0x17
4562 #define	MC_CMD_PORT_WRITE128_MSGSET 0x17
4563 
4564 /* MC_CMD_PORT_WRITE128_IN msgrequest */
4565 #define	MC_CMD_PORT_WRITE128_IN_LEN 20
4566 /* Address */
4567 #define	MC_CMD_PORT_WRITE128_IN_ADDR_OFST 0
4568 #define	MC_CMD_PORT_WRITE128_IN_ADDR_LEN 4
4569 /* Value */
4570 #define	MC_CMD_PORT_WRITE128_IN_VALUE_OFST 4
4571 #define	MC_CMD_PORT_WRITE128_IN_VALUE_LEN 16
4572 
4573 /* MC_CMD_PORT_WRITE128_OUT msgresponse */
4574 #define	MC_CMD_PORT_WRITE128_OUT_LEN 4
4575 /* Status */
4576 #define	MC_CMD_PORT_WRITE128_OUT_STATUS_OFST 0
4577 #define	MC_CMD_PORT_WRITE128_OUT_STATUS_LEN 4
4578 
4579 /* MC_CMD_CAPABILITIES structuredef */
4580 #define	MC_CMD_CAPABILITIES_LEN 4
4581 /* Small buf table. */
4582 #define	MC_CMD_CAPABILITIES_SMALL_BUF_TBL_LBN 0
4583 #define	MC_CMD_CAPABILITIES_SMALL_BUF_TBL_WIDTH 1
4584 /* Turbo mode (for Maranello). */
4585 #define	MC_CMD_CAPABILITIES_TURBO_LBN 1
4586 #define	MC_CMD_CAPABILITIES_TURBO_WIDTH 1
4587 /* Turbo mode active (for Maranello). */
4588 #define	MC_CMD_CAPABILITIES_TURBO_ACTIVE_LBN 2
4589 #define	MC_CMD_CAPABILITIES_TURBO_ACTIVE_WIDTH 1
4590 /* PTP offload. */
4591 #define	MC_CMD_CAPABILITIES_PTP_LBN 3
4592 #define	MC_CMD_CAPABILITIES_PTP_WIDTH 1
4593 /* AOE mode. */
4594 #define	MC_CMD_CAPABILITIES_AOE_LBN 4
4595 #define	MC_CMD_CAPABILITIES_AOE_WIDTH 1
4596 /* AOE mode active. */
4597 #define	MC_CMD_CAPABILITIES_AOE_ACTIVE_LBN 5
4598 #define	MC_CMD_CAPABILITIES_AOE_ACTIVE_WIDTH 1
4599 /* AOE mode active. */
4600 #define	MC_CMD_CAPABILITIES_FC_ACTIVE_LBN 6
4601 #define	MC_CMD_CAPABILITIES_FC_ACTIVE_WIDTH 1
4602 #define	MC_CMD_CAPABILITIES_RESERVED_LBN 7
4603 #define	MC_CMD_CAPABILITIES_RESERVED_WIDTH 25
4604 
4605 
4606 /***********************************/
4607 /* MC_CMD_GET_BOARD_CFG
4608  * Returns the MC firmware configuration structure.
4609  */
4610 #define	MC_CMD_GET_BOARD_CFG 0x18
4611 #define	MC_CMD_GET_BOARD_CFG_MSGSET 0x18
4612 #undef	MC_CMD_0x18_PRIVILEGE_CTG
4613 
4614 #define	MC_CMD_0x18_PRIVILEGE_CTG SRIOV_CTG_GENERAL
4615 
4616 /* MC_CMD_GET_BOARD_CFG_IN msgrequest */
4617 #define	MC_CMD_GET_BOARD_CFG_IN_LEN 0
4618 
4619 /* MC_CMD_GET_BOARD_CFG_OUT msgresponse */
4620 #define	MC_CMD_GET_BOARD_CFG_OUT_LENMIN 96
4621 #define	MC_CMD_GET_BOARD_CFG_OUT_LENMAX 136
4622 #define	MC_CMD_GET_BOARD_CFG_OUT_LENMAX_MCDI2 136
4623 #define	MC_CMD_GET_BOARD_CFG_OUT_LEN(num) (72+2*(num))
4624 #define	MC_CMD_GET_BOARD_CFG_OUT_FW_SUBTYPE_LIST_NUM(len) (((len)-72)/2)
4625 #define	MC_CMD_GET_BOARD_CFG_OUT_BOARD_TYPE_OFST 0
4626 #define	MC_CMD_GET_BOARD_CFG_OUT_BOARD_TYPE_LEN 4
4627 #define	MC_CMD_GET_BOARD_CFG_OUT_BOARD_NAME_OFST 4
4628 #define	MC_CMD_GET_BOARD_CFG_OUT_BOARD_NAME_LEN 32
4629 /* Capabilities for Siena Port0 (see struct MC_CMD_CAPABILITIES). Unused on
4630  * EF10 and later (use MC_CMD_GET_CAPABILITIES).
4631  */
4632 #define	MC_CMD_GET_BOARD_CFG_OUT_CAPABILITIES_PORT0_OFST 36
4633 #define	MC_CMD_GET_BOARD_CFG_OUT_CAPABILITIES_PORT0_LEN 4
4634 /* Capabilities for Siena Port1 (see struct MC_CMD_CAPABILITIES). Unused on
4635  * EF10 and later (use MC_CMD_GET_CAPABILITIES).
4636  */
4637 #define	MC_CMD_GET_BOARD_CFG_OUT_CAPABILITIES_PORT1_OFST 40
4638 #define	MC_CMD_GET_BOARD_CFG_OUT_CAPABILITIES_PORT1_LEN 4
4639 /* Base MAC address for Siena Port0. Unused on EF10 and later (use
4640  * MC_CMD_GET_MAC_ADDRESSES).
4641  */
4642 #define	MC_CMD_GET_BOARD_CFG_OUT_MAC_ADDR_BASE_PORT0_OFST 44
4643 #define	MC_CMD_GET_BOARD_CFG_OUT_MAC_ADDR_BASE_PORT0_LEN 6
4644 /* Base MAC address for Siena Port1. Unused on EF10 and later (use
4645  * MC_CMD_GET_MAC_ADDRESSES).
4646  */
4647 #define	MC_CMD_GET_BOARD_CFG_OUT_MAC_ADDR_BASE_PORT1_OFST 50
4648 #define	MC_CMD_GET_BOARD_CFG_OUT_MAC_ADDR_BASE_PORT1_LEN 6
4649 /* Size of MAC address pool for Siena Port0. Unused on EF10 and later (use
4650  * MC_CMD_GET_MAC_ADDRESSES).
4651  */
4652 #define	MC_CMD_GET_BOARD_CFG_OUT_MAC_COUNT_PORT0_OFST 56
4653 #define	MC_CMD_GET_BOARD_CFG_OUT_MAC_COUNT_PORT0_LEN 4
4654 /* Size of MAC address pool for Siena Port1. Unused on EF10 and later (use
4655  * MC_CMD_GET_MAC_ADDRESSES).
4656  */
4657 #define	MC_CMD_GET_BOARD_CFG_OUT_MAC_COUNT_PORT1_OFST 60
4658 #define	MC_CMD_GET_BOARD_CFG_OUT_MAC_COUNT_PORT1_LEN 4
4659 /* Increment between addresses in MAC address pool for Siena Port0. Unused on
4660  * EF10 and later (use MC_CMD_GET_MAC_ADDRESSES).
4661  */
4662 #define	MC_CMD_GET_BOARD_CFG_OUT_MAC_STRIDE_PORT0_OFST 64
4663 #define	MC_CMD_GET_BOARD_CFG_OUT_MAC_STRIDE_PORT0_LEN 4
4664 /* Increment between addresses in MAC address pool for Siena Port1. Unused on
4665  * EF10 and later (use MC_CMD_GET_MAC_ADDRESSES).
4666  */
4667 #define	MC_CMD_GET_BOARD_CFG_OUT_MAC_STRIDE_PORT1_OFST 68
4668 #define	MC_CMD_GET_BOARD_CFG_OUT_MAC_STRIDE_PORT1_LEN 4
4669 /* Siena only. This field contains a 16-bit value for each of the types of
4670  * NVRAM area. The values are defined in the firmware/mc/platform/.c file for a
4671  * specific board type, but otherwise have no meaning to the MC; they are used
4672  * by the driver to manage selection of appropriate firmware updates. Unused on
4673  * EF10 and later (use MC_CMD_NVRAM_METADATA).
4674  */
4675 #define	MC_CMD_GET_BOARD_CFG_OUT_FW_SUBTYPE_LIST_OFST 72
4676 #define	MC_CMD_GET_BOARD_CFG_OUT_FW_SUBTYPE_LIST_LEN 2
4677 #define	MC_CMD_GET_BOARD_CFG_OUT_FW_SUBTYPE_LIST_MINNUM 12
4678 #define	MC_CMD_GET_BOARD_CFG_OUT_FW_SUBTYPE_LIST_MAXNUM 32
4679 #define	MC_CMD_GET_BOARD_CFG_OUT_FW_SUBTYPE_LIST_MAXNUM_MCDI2 32
4680 
4681 
4682 /***********************************/
4683 /* MC_CMD_DBI_READX
4684  * Read DBI register(s) -- extended functionality
4685  */
4686 #define	MC_CMD_DBI_READX 0x19
4687 #define	MC_CMD_DBI_READX_MSGSET 0x19
4688 #undef	MC_CMD_0x19_PRIVILEGE_CTG
4689 
4690 #define	MC_CMD_0x19_PRIVILEGE_CTG SRIOV_CTG_INSECURE
4691 
4692 /* MC_CMD_DBI_READX_IN msgrequest */
4693 #define	MC_CMD_DBI_READX_IN_LENMIN 8
4694 #define	MC_CMD_DBI_READX_IN_LENMAX 248
4695 #define	MC_CMD_DBI_READX_IN_LENMAX_MCDI2 1016
4696 #define	MC_CMD_DBI_READX_IN_LEN(num) (0+8*(num))
4697 #define	MC_CMD_DBI_READX_IN_DBIRDOP_NUM(len) (((len)-0)/8)
4698 /* Each Read op consists of an address (offset 0), VF/CS2) */
4699 #define	MC_CMD_DBI_READX_IN_DBIRDOP_OFST 0
4700 #define	MC_CMD_DBI_READX_IN_DBIRDOP_LEN 8
4701 #define	MC_CMD_DBI_READX_IN_DBIRDOP_LO_OFST 0
4702 #define	MC_CMD_DBI_READX_IN_DBIRDOP_LO_LEN 4
4703 #define	MC_CMD_DBI_READX_IN_DBIRDOP_LO_LBN 0
4704 #define	MC_CMD_DBI_READX_IN_DBIRDOP_LO_WIDTH 32
4705 #define	MC_CMD_DBI_READX_IN_DBIRDOP_HI_OFST 4
4706 #define	MC_CMD_DBI_READX_IN_DBIRDOP_HI_LEN 4
4707 #define	MC_CMD_DBI_READX_IN_DBIRDOP_HI_LBN 32
4708 #define	MC_CMD_DBI_READX_IN_DBIRDOP_HI_WIDTH 32
4709 #define	MC_CMD_DBI_READX_IN_DBIRDOP_MINNUM 1
4710 #define	MC_CMD_DBI_READX_IN_DBIRDOP_MAXNUM 31
4711 #define	MC_CMD_DBI_READX_IN_DBIRDOP_MAXNUM_MCDI2 127
4712 
4713 /* MC_CMD_DBI_READX_OUT msgresponse */
4714 #define	MC_CMD_DBI_READX_OUT_LENMIN 4
4715 #define	MC_CMD_DBI_READX_OUT_LENMAX 252
4716 #define	MC_CMD_DBI_READX_OUT_LENMAX_MCDI2 1020
4717 #define	MC_CMD_DBI_READX_OUT_LEN(num) (0+4*(num))
4718 #define	MC_CMD_DBI_READX_OUT_VALUE_NUM(len) (((len)-0)/4)
4719 /* Value */
4720 #define	MC_CMD_DBI_READX_OUT_VALUE_OFST 0
4721 #define	MC_CMD_DBI_READX_OUT_VALUE_LEN 4
4722 #define	MC_CMD_DBI_READX_OUT_VALUE_MINNUM 1
4723 #define	MC_CMD_DBI_READX_OUT_VALUE_MAXNUM 63
4724 #define	MC_CMD_DBI_READX_OUT_VALUE_MAXNUM_MCDI2 255
4725 
4726 /* MC_CMD_DBIRDOP_TYPEDEF structuredef */
4727 #define	MC_CMD_DBIRDOP_TYPEDEF_LEN 8
4728 #define	MC_CMD_DBIRDOP_TYPEDEF_ADDRESS_OFST 0
4729 #define	MC_CMD_DBIRDOP_TYPEDEF_ADDRESS_LEN 4
4730 #define	MC_CMD_DBIRDOP_TYPEDEF_ADDRESS_LBN 0
4731 #define	MC_CMD_DBIRDOP_TYPEDEF_ADDRESS_WIDTH 32
4732 #define	MC_CMD_DBIRDOP_TYPEDEF_PARMS_OFST 4
4733 #define	MC_CMD_DBIRDOP_TYPEDEF_PARMS_LEN 4
4734 #define	MC_CMD_DBIRDOP_TYPEDEF_VF_NUM_OFST 4
4735 #define	MC_CMD_DBIRDOP_TYPEDEF_VF_NUM_LBN 16
4736 #define	MC_CMD_DBIRDOP_TYPEDEF_VF_NUM_WIDTH 16
4737 #define	MC_CMD_DBIRDOP_TYPEDEF_VF_ACTIVE_OFST 4
4738 #define	MC_CMD_DBIRDOP_TYPEDEF_VF_ACTIVE_LBN 15
4739 #define	MC_CMD_DBIRDOP_TYPEDEF_VF_ACTIVE_WIDTH 1
4740 #define	MC_CMD_DBIRDOP_TYPEDEF_CS2_OFST 4
4741 #define	MC_CMD_DBIRDOP_TYPEDEF_CS2_LBN 14
4742 #define	MC_CMD_DBIRDOP_TYPEDEF_CS2_WIDTH 1
4743 #define	MC_CMD_DBIRDOP_TYPEDEF_PARMS_LBN 32
4744 #define	MC_CMD_DBIRDOP_TYPEDEF_PARMS_WIDTH 32
4745 
4746 
4747 /***********************************/
4748 /* MC_CMD_SET_RAND_SEED
4749  * Set the 16byte seed for the MC pseudo-random generator.
4750  */
4751 #define	MC_CMD_SET_RAND_SEED 0x1a
4752 #define	MC_CMD_SET_RAND_SEED_MSGSET 0x1a
4753 #undef	MC_CMD_0x1a_PRIVILEGE_CTG
4754 
4755 #define	MC_CMD_0x1a_PRIVILEGE_CTG SRIOV_CTG_INSECURE
4756 
4757 /* MC_CMD_SET_RAND_SEED_IN msgrequest */
4758 #define	MC_CMD_SET_RAND_SEED_IN_LEN 16
4759 /* Seed value. */
4760 #define	MC_CMD_SET_RAND_SEED_IN_SEED_OFST 0
4761 #define	MC_CMD_SET_RAND_SEED_IN_SEED_LEN 16
4762 
4763 /* MC_CMD_SET_RAND_SEED_OUT msgresponse */
4764 #define	MC_CMD_SET_RAND_SEED_OUT_LEN 0
4765 
4766 
4767 /***********************************/
4768 /* MC_CMD_LTSSM_HIST
4769  * Retrieve the history of the LTSSM, if the build supports it.
4770  */
4771 #define	MC_CMD_LTSSM_HIST 0x1b
4772 #define	MC_CMD_LTSSM_HIST_MSGSET 0x1b
4773 
4774 /* MC_CMD_LTSSM_HIST_IN msgrequest */
4775 #define	MC_CMD_LTSSM_HIST_IN_LEN 0
4776 
4777 /* MC_CMD_LTSSM_HIST_OUT msgresponse */
4778 #define	MC_CMD_LTSSM_HIST_OUT_LENMIN 0
4779 #define	MC_CMD_LTSSM_HIST_OUT_LENMAX 252
4780 #define	MC_CMD_LTSSM_HIST_OUT_LENMAX_MCDI2 1020
4781 #define	MC_CMD_LTSSM_HIST_OUT_LEN(num) (0+4*(num))
4782 #define	MC_CMD_LTSSM_HIST_OUT_DATA_NUM(len) (((len)-0)/4)
4783 /* variable number of LTSSM values, as bytes. The history is read-to-clear. */
4784 #define	MC_CMD_LTSSM_HIST_OUT_DATA_OFST 0
4785 #define	MC_CMD_LTSSM_HIST_OUT_DATA_LEN 4
4786 #define	MC_CMD_LTSSM_HIST_OUT_DATA_MINNUM 0
4787 #define	MC_CMD_LTSSM_HIST_OUT_DATA_MAXNUM 63
4788 #define	MC_CMD_LTSSM_HIST_OUT_DATA_MAXNUM_MCDI2 255
4789 
4790 
4791 /***********************************/
4792 /* MC_CMD_DRV_ATTACH
4793  * Inform MCPU that this port is managed on the host (i.e. driver active). For
4794  * Huntington, also request the preferred datapath firmware to use if possible
4795  * (it may not be possible for this request to be fulfilled; the driver must
4796  * issue a subsequent MC_CMD_GET_CAPABILITIES command to determine which
4797  * features are actually available). The FIRMWARE_ID field is ignored by older
4798  * platforms.
4799  */
4800 #define	MC_CMD_DRV_ATTACH 0x1c
4801 #define	MC_CMD_DRV_ATTACH_MSGSET 0x1c
4802 #undef	MC_CMD_0x1c_PRIVILEGE_CTG
4803 
4804 #define	MC_CMD_0x1c_PRIVILEGE_CTG SRIOV_CTG_GENERAL
4805 
4806 /* MC_CMD_DRV_ATTACH_IN msgrequest */
4807 #define	MC_CMD_DRV_ATTACH_IN_LEN 12
4808 /* new state to set if UPDATE=1 */
4809 #define	MC_CMD_DRV_ATTACH_IN_NEW_STATE_OFST 0
4810 #define	MC_CMD_DRV_ATTACH_IN_NEW_STATE_LEN 4
4811 #define	MC_CMD_DRV_ATTACH_OFST 0
4812 #define	MC_CMD_DRV_ATTACH_LBN 0
4813 #define	MC_CMD_DRV_ATTACH_WIDTH 1
4814 #define	MC_CMD_DRV_ATTACH_IN_ATTACH_OFST 0
4815 #define	MC_CMD_DRV_ATTACH_IN_ATTACH_LBN 0
4816 #define	MC_CMD_DRV_ATTACH_IN_ATTACH_WIDTH 1
4817 #define	MC_CMD_DRV_PREBOOT_OFST 0
4818 #define	MC_CMD_DRV_PREBOOT_LBN 1
4819 #define	MC_CMD_DRV_PREBOOT_WIDTH 1
4820 #define	MC_CMD_DRV_ATTACH_IN_PREBOOT_OFST 0
4821 #define	MC_CMD_DRV_ATTACH_IN_PREBOOT_LBN 1
4822 #define	MC_CMD_DRV_ATTACH_IN_PREBOOT_WIDTH 1
4823 #define	MC_CMD_DRV_ATTACH_IN_SUBVARIANT_AWARE_OFST 0
4824 #define	MC_CMD_DRV_ATTACH_IN_SUBVARIANT_AWARE_LBN 2
4825 #define	MC_CMD_DRV_ATTACH_IN_SUBVARIANT_AWARE_WIDTH 1
4826 #define	MC_CMD_DRV_ATTACH_IN_WANT_VI_SPREADING_OFST 0
4827 #define	MC_CMD_DRV_ATTACH_IN_WANT_VI_SPREADING_LBN 3
4828 #define	MC_CMD_DRV_ATTACH_IN_WANT_VI_SPREADING_WIDTH 1
4829 #define	MC_CMD_DRV_ATTACH_IN_WANT_V2_LINKCHANGES_OFST 0
4830 #define	MC_CMD_DRV_ATTACH_IN_WANT_V2_LINKCHANGES_LBN 4
4831 #define	MC_CMD_DRV_ATTACH_IN_WANT_V2_LINKCHANGES_WIDTH 1
4832 #define	MC_CMD_DRV_ATTACH_IN_WANT_RX_VI_SPREADING_INHIBIT_OFST 0
4833 #define	MC_CMD_DRV_ATTACH_IN_WANT_RX_VI_SPREADING_INHIBIT_LBN 5
4834 #define	MC_CMD_DRV_ATTACH_IN_WANT_RX_VI_SPREADING_INHIBIT_WIDTH 1
4835 #define	MC_CMD_DRV_ATTACH_IN_WANT_TX_ONLY_SPREADING_OFST 0
4836 #define	MC_CMD_DRV_ATTACH_IN_WANT_TX_ONLY_SPREADING_LBN 5
4837 #define	MC_CMD_DRV_ATTACH_IN_WANT_TX_ONLY_SPREADING_WIDTH 1
4838 /* 1 to set new state, or 0 to just report the existing state */
4839 #define	MC_CMD_DRV_ATTACH_IN_UPDATE_OFST 4
4840 #define	MC_CMD_DRV_ATTACH_IN_UPDATE_LEN 4
4841 /* preferred datapath firmware (for Huntington; ignored for Siena) */
4842 #define	MC_CMD_DRV_ATTACH_IN_FIRMWARE_ID_OFST 8
4843 #define	MC_CMD_DRV_ATTACH_IN_FIRMWARE_ID_LEN 4
4844 /* enum: Prefer to use full featured firmware */
4845 #define	MC_CMD_FW_FULL_FEATURED 0x0
4846 /* enum: Prefer to use firmware with fewer features but lower latency */
4847 #define	MC_CMD_FW_LOW_LATENCY 0x1
4848 /* enum: Prefer to use firmware for SolarCapture packed stream mode */
4849 #define	MC_CMD_FW_PACKED_STREAM 0x2
4850 /* enum: Prefer to use firmware with fewer features and simpler TX event
4851  * batching but higher TX packet rate
4852  */
4853 #define	MC_CMD_FW_HIGH_TX_RATE 0x3
4854 /* enum: Reserved value */
4855 #define	MC_CMD_FW_PACKED_STREAM_HASH_MODE_1 0x4
4856 /* enum: Prefer to use firmware with additional "rules engine" filtering
4857  * support
4858  */
4859 #define	MC_CMD_FW_RULES_ENGINE 0x5
4860 /* enum: Prefer to use firmware with additional DPDK support */
4861 #define	MC_CMD_FW_DPDK 0x6
4862 /* enum: Prefer to use "l3xudp" custom datapath firmware (see SF-119495-PD and
4863  * bug69716)
4864  */
4865 #define	MC_CMD_FW_L3XUDP 0x7
4866 /* enum: Requests that the MC keep whatever datapath firmware is currently
4867  * running. It's used for test purposes, where we want to be able to shmboot
4868  * special test firmware variants. This option is only recognised in eftest
4869  * (i.e. non-production) builds.
4870  */
4871 #define	MC_CMD_FW_KEEP_CURRENT_EFTEST_ONLY 0xfffffffe
4872 /* enum: Only this option is allowed for non-admin functions */
4873 #define	MC_CMD_FW_DONT_CARE 0xffffffff
4874 
4875 /* MC_CMD_DRV_ATTACH_IN_V2 msgrequest: Updated DRV_ATTACH to include driver
4876  * version
4877  */
4878 #define	MC_CMD_DRV_ATTACH_IN_V2_LEN 32
4879 /* new state to set if UPDATE=1 */
4880 #define	MC_CMD_DRV_ATTACH_IN_V2_NEW_STATE_OFST 0
4881 #define	MC_CMD_DRV_ATTACH_IN_V2_NEW_STATE_LEN 4
4882 /*             MC_CMD_DRV_ATTACH_OFST 0 */
4883 /*             MC_CMD_DRV_ATTACH_LBN 0 */
4884 /*             MC_CMD_DRV_ATTACH_WIDTH 1 */
4885 #define	MC_CMD_DRV_ATTACH_IN_V2_ATTACH_OFST 0
4886 #define	MC_CMD_DRV_ATTACH_IN_V2_ATTACH_LBN 0
4887 #define	MC_CMD_DRV_ATTACH_IN_V2_ATTACH_WIDTH 1
4888 /*             MC_CMD_DRV_PREBOOT_OFST 0 */
4889 /*             MC_CMD_DRV_PREBOOT_LBN 1 */
4890 /*             MC_CMD_DRV_PREBOOT_WIDTH 1 */
4891 #define	MC_CMD_DRV_ATTACH_IN_V2_PREBOOT_OFST 0
4892 #define	MC_CMD_DRV_ATTACH_IN_V2_PREBOOT_LBN 1
4893 #define	MC_CMD_DRV_ATTACH_IN_V2_PREBOOT_WIDTH 1
4894 #define	MC_CMD_DRV_ATTACH_IN_V2_SUBVARIANT_AWARE_OFST 0
4895 #define	MC_CMD_DRV_ATTACH_IN_V2_SUBVARIANT_AWARE_LBN 2
4896 #define	MC_CMD_DRV_ATTACH_IN_V2_SUBVARIANT_AWARE_WIDTH 1
4897 #define	MC_CMD_DRV_ATTACH_IN_V2_WANT_VI_SPREADING_OFST 0
4898 #define	MC_CMD_DRV_ATTACH_IN_V2_WANT_VI_SPREADING_LBN 3
4899 #define	MC_CMD_DRV_ATTACH_IN_V2_WANT_VI_SPREADING_WIDTH 1
4900 #define	MC_CMD_DRV_ATTACH_IN_V2_WANT_V2_LINKCHANGES_OFST 0
4901 #define	MC_CMD_DRV_ATTACH_IN_V2_WANT_V2_LINKCHANGES_LBN 4
4902 #define	MC_CMD_DRV_ATTACH_IN_V2_WANT_V2_LINKCHANGES_WIDTH 1
4903 #define	MC_CMD_DRV_ATTACH_IN_V2_WANT_RX_VI_SPREADING_INHIBIT_OFST 0
4904 #define	MC_CMD_DRV_ATTACH_IN_V2_WANT_RX_VI_SPREADING_INHIBIT_LBN 5
4905 #define	MC_CMD_DRV_ATTACH_IN_V2_WANT_RX_VI_SPREADING_INHIBIT_WIDTH 1
4906 #define	MC_CMD_DRV_ATTACH_IN_V2_WANT_TX_ONLY_SPREADING_OFST 0
4907 #define	MC_CMD_DRV_ATTACH_IN_V2_WANT_TX_ONLY_SPREADING_LBN 5
4908 #define	MC_CMD_DRV_ATTACH_IN_V2_WANT_TX_ONLY_SPREADING_WIDTH 1
4909 /* 1 to set new state, or 0 to just report the existing state */
4910 #define	MC_CMD_DRV_ATTACH_IN_V2_UPDATE_OFST 4
4911 #define	MC_CMD_DRV_ATTACH_IN_V2_UPDATE_LEN 4
4912 /* preferred datapath firmware (for Huntington; ignored for Siena) */
4913 #define	MC_CMD_DRV_ATTACH_IN_V2_FIRMWARE_ID_OFST 8
4914 #define	MC_CMD_DRV_ATTACH_IN_V2_FIRMWARE_ID_LEN 4
4915 /* enum: Prefer to use full featured firmware */
4916 /*               MC_CMD_FW_FULL_FEATURED 0x0 */
4917 /* enum: Prefer to use firmware with fewer features but lower latency */
4918 /*               MC_CMD_FW_LOW_LATENCY 0x1 */
4919 /* enum: Prefer to use firmware for SolarCapture packed stream mode */
4920 /*               MC_CMD_FW_PACKED_STREAM 0x2 */
4921 /* enum: Prefer to use firmware with fewer features and simpler TX event
4922  * batching but higher TX packet rate
4923  */
4924 /*               MC_CMD_FW_HIGH_TX_RATE 0x3 */
4925 /* enum: Reserved value */
4926 /*               MC_CMD_FW_PACKED_STREAM_HASH_MODE_1 0x4 */
4927 /* enum: Prefer to use firmware with additional "rules engine" filtering
4928  * support
4929  */
4930 /*               MC_CMD_FW_RULES_ENGINE 0x5 */
4931 /* enum: Prefer to use firmware with additional DPDK support */
4932 /*               MC_CMD_FW_DPDK 0x6 */
4933 /* enum: Prefer to use "l3xudp" custom datapath firmware (see SF-119495-PD and
4934  * bug69716)
4935  */
4936 /*               MC_CMD_FW_L3XUDP 0x7 */
4937 /* enum: Requests that the MC keep whatever datapath firmware is currently
4938  * running. It's used for test purposes, where we want to be able to shmboot
4939  * special test firmware variants. This option is only recognised in eftest
4940  * (i.e. non-production) builds.
4941  */
4942 /*               MC_CMD_FW_KEEP_CURRENT_EFTEST_ONLY 0xfffffffe */
4943 /* enum: Only this option is allowed for non-admin functions */
4944 /*               MC_CMD_FW_DONT_CARE 0xffffffff */
4945 /* Version of the driver to be reported by management protocols (e.g. NC-SI)
4946  * handled by the NIC. This is a zero-terminated ASCII string.
4947  */
4948 #define	MC_CMD_DRV_ATTACH_IN_V2_DRIVER_VERSION_OFST 12
4949 #define	MC_CMD_DRV_ATTACH_IN_V2_DRIVER_VERSION_LEN 20
4950 
4951 /* MC_CMD_DRV_ATTACH_OUT msgresponse */
4952 #define	MC_CMD_DRV_ATTACH_OUT_LEN 4
4953 /* previous or existing state, see the bitmask at NEW_STATE */
4954 #define	MC_CMD_DRV_ATTACH_OUT_OLD_STATE_OFST 0
4955 #define	MC_CMD_DRV_ATTACH_OUT_OLD_STATE_LEN 4
4956 
4957 /* MC_CMD_DRV_ATTACH_EXT_OUT msgresponse */
4958 #define	MC_CMD_DRV_ATTACH_EXT_OUT_LEN 8
4959 /* previous or existing state, see the bitmask at NEW_STATE */
4960 #define	MC_CMD_DRV_ATTACH_EXT_OUT_OLD_STATE_OFST 0
4961 #define	MC_CMD_DRV_ATTACH_EXT_OUT_OLD_STATE_LEN 4
4962 /* Flags associated with this function */
4963 #define	MC_CMD_DRV_ATTACH_EXT_OUT_FUNC_FLAGS_OFST 4
4964 #define	MC_CMD_DRV_ATTACH_EXT_OUT_FUNC_FLAGS_LEN 4
4965 /* enum property: bitshift */
4966 /* enum: Labels the lowest-numbered function visible to the OS */
4967 #define	MC_CMD_DRV_ATTACH_EXT_OUT_FLAG_PRIMARY 0x0
4968 /* enum: The function can control the link state of the physical port it is
4969  * bound to.
4970  */
4971 #define	MC_CMD_DRV_ATTACH_EXT_OUT_FLAG_LINKCTRL 0x1
4972 /* enum: The function can perform privileged operations */
4973 #define	MC_CMD_DRV_ATTACH_EXT_OUT_FLAG_TRUSTED 0x2
4974 /* enum: The function does not have an active port associated with it. The port
4975  * refers to the Sorrento external FPGA port.
4976  */
4977 #define	MC_CMD_DRV_ATTACH_EXT_OUT_FLAG_NO_ACTIVE_PORT 0x3
4978 /* enum: If set, indicates that VI spreading is currently enabled. Will always
4979  * indicate the current state, regardless of the value in the WANT_VI_SPREADING
4980  * input.
4981  */
4982 #define	MC_CMD_DRV_ATTACH_EXT_OUT_FLAG_VI_SPREADING_ENABLED 0x4
4983 /* enum: Used during development only. Should no longer be used. */
4984 #define	MC_CMD_DRV_ATTACH_EXT_OUT_FLAG_RX_VI_SPREADING_INHIBITED 0x5
4985 /* enum: If set, indicates that TX only spreading is enabled. Even-numbered
4986  * TXQs will use one engine, and odd-numbered TXQs will use the other. This
4987  * also has the effect that only even-numbered RXQs will receive traffic.
4988  */
4989 #define	MC_CMD_DRV_ATTACH_EXT_OUT_FLAG_TX_ONLY_VI_SPREADING_ENABLED 0x5
4990 
4991 
4992 /***********************************/
4993 /* MC_CMD_SHMUART
4994  * Route UART output to circular buffer in shared memory instead.
4995  */
4996 #define	MC_CMD_SHMUART 0x1f
4997 #define	MC_CMD_SHMUART_MSGSET 0x1f
4998 
4999 /* MC_CMD_SHMUART_IN msgrequest */
5000 #define	MC_CMD_SHMUART_IN_LEN 4
5001 /* ??? */
5002 #define	MC_CMD_SHMUART_IN_FLAG_OFST 0
5003 #define	MC_CMD_SHMUART_IN_FLAG_LEN 4
5004 
5005 /* MC_CMD_SHMUART_OUT msgresponse */
5006 #define	MC_CMD_SHMUART_OUT_LEN 0
5007 
5008 
5009 /***********************************/
5010 /* MC_CMD_PORT_RESET
5011  * Generic per-port reset. There is no equivalent for per-board reset. Locks
5012  * required: None; Return code: 0, ETIME. NOTE: This command is deprecated -
5013  * use MC_CMD_ENTITY_RESET instead.
5014  */
5015 #define	MC_CMD_PORT_RESET 0x20
5016 #define	MC_CMD_PORT_RESET_MSGSET 0x20
5017 #undef	MC_CMD_0x20_PRIVILEGE_CTG
5018 
5019 #define	MC_CMD_0x20_PRIVILEGE_CTG SRIOV_CTG_GENERAL
5020 
5021 /* MC_CMD_PORT_RESET_IN msgrequest */
5022 #define	MC_CMD_PORT_RESET_IN_LEN 0
5023 
5024 /* MC_CMD_PORT_RESET_OUT msgresponse */
5025 #define	MC_CMD_PORT_RESET_OUT_LEN 0
5026 
5027 
5028 /***********************************/
5029 /* MC_CMD_ENTITY_RESET
5030  * Generic per-resource reset. There is no equivalent for per-board reset.
5031  * Locks required: None; Return code: 0, ETIME. NOTE: This command is an
5032  * extended version of the deprecated MC_CMD_PORT_RESET with added fields.
5033  */
5034 #define	MC_CMD_ENTITY_RESET 0x20
5035 #define	MC_CMD_ENTITY_RESET_MSGSET 0x20
5036 /*      MC_CMD_0x20_PRIVILEGE_CTG SRIOV_CTG_GENERAL */
5037 
5038 /* MC_CMD_ENTITY_RESET_IN msgrequest */
5039 #define	MC_CMD_ENTITY_RESET_IN_LEN 4
5040 /* Optional flags field. Omitting this will perform a "legacy" reset action
5041  * (TBD).
5042  */
5043 #define	MC_CMD_ENTITY_RESET_IN_FLAG_OFST 0
5044 #define	MC_CMD_ENTITY_RESET_IN_FLAG_LEN 4
5045 #define	MC_CMD_ENTITY_RESET_IN_FUNCTION_RESOURCE_RESET_OFST 0
5046 #define	MC_CMD_ENTITY_RESET_IN_FUNCTION_RESOURCE_RESET_LBN 0
5047 #define	MC_CMD_ENTITY_RESET_IN_FUNCTION_RESOURCE_RESET_WIDTH 1
5048 
5049 /* MC_CMD_ENTITY_RESET_OUT msgresponse */
5050 #define	MC_CMD_ENTITY_RESET_OUT_LEN 0
5051 
5052 
5053 /***********************************/
5054 /* MC_CMD_PCIE_CREDITS
5055  * Read instantaneous and minimum flow control thresholds.
5056  */
5057 #define	MC_CMD_PCIE_CREDITS 0x21
5058 #define	MC_CMD_PCIE_CREDITS_MSGSET 0x21
5059 
5060 /* MC_CMD_PCIE_CREDITS_IN msgrequest */
5061 #define	MC_CMD_PCIE_CREDITS_IN_LEN 8
5062 /* poll period. 0 is disabled */
5063 #define	MC_CMD_PCIE_CREDITS_IN_POLL_PERIOD_OFST 0
5064 #define	MC_CMD_PCIE_CREDITS_IN_POLL_PERIOD_LEN 4
5065 /* wipe statistics */
5066 #define	MC_CMD_PCIE_CREDITS_IN_WIPE_OFST 4
5067 #define	MC_CMD_PCIE_CREDITS_IN_WIPE_LEN 4
5068 
5069 /* MC_CMD_PCIE_CREDITS_OUT msgresponse */
5070 #define	MC_CMD_PCIE_CREDITS_OUT_LEN 16
5071 #define	MC_CMD_PCIE_CREDITS_OUT_CURRENT_P_HDR_OFST 0
5072 #define	MC_CMD_PCIE_CREDITS_OUT_CURRENT_P_HDR_LEN 2
5073 #define	MC_CMD_PCIE_CREDITS_OUT_CURRENT_P_DATA_OFST 2
5074 #define	MC_CMD_PCIE_CREDITS_OUT_CURRENT_P_DATA_LEN 2
5075 #define	MC_CMD_PCIE_CREDITS_OUT_CURRENT_NP_HDR_OFST 4
5076 #define	MC_CMD_PCIE_CREDITS_OUT_CURRENT_NP_HDR_LEN 2
5077 #define	MC_CMD_PCIE_CREDITS_OUT_CURRENT_NP_DATA_OFST 6
5078 #define	MC_CMD_PCIE_CREDITS_OUT_CURRENT_NP_DATA_LEN 2
5079 #define	MC_CMD_PCIE_CREDITS_OUT_MINIMUM_P_HDR_OFST 8
5080 #define	MC_CMD_PCIE_CREDITS_OUT_MINIMUM_P_HDR_LEN 2
5081 #define	MC_CMD_PCIE_CREDITS_OUT_MINIMUM_P_DATA_OFST 10
5082 #define	MC_CMD_PCIE_CREDITS_OUT_MINIMUM_P_DATA_LEN 2
5083 #define	MC_CMD_PCIE_CREDITS_OUT_MINIMUM_NP_HDR_OFST 12
5084 #define	MC_CMD_PCIE_CREDITS_OUT_MINIMUM_NP_HDR_LEN 2
5085 #define	MC_CMD_PCIE_CREDITS_OUT_MINIMUM_NP_DATA_OFST 14
5086 #define	MC_CMD_PCIE_CREDITS_OUT_MINIMUM_NP_DATA_LEN 2
5087 
5088 
5089 /***********************************/
5090 /* MC_CMD_RXD_MONITOR
5091  * Get histogram of RX queue fill level.
5092  */
5093 #define	MC_CMD_RXD_MONITOR 0x22
5094 #define	MC_CMD_RXD_MONITOR_MSGSET 0x22
5095 
5096 /* MC_CMD_RXD_MONITOR_IN msgrequest */
5097 #define	MC_CMD_RXD_MONITOR_IN_LEN 12
5098 #define	MC_CMD_RXD_MONITOR_IN_QID_OFST 0
5099 #define	MC_CMD_RXD_MONITOR_IN_QID_LEN 4
5100 #define	MC_CMD_RXD_MONITOR_IN_POLL_PERIOD_OFST 4
5101 #define	MC_CMD_RXD_MONITOR_IN_POLL_PERIOD_LEN 4
5102 #define	MC_CMD_RXD_MONITOR_IN_WIPE_OFST 8
5103 #define	MC_CMD_RXD_MONITOR_IN_WIPE_LEN 4
5104 
5105 /* MC_CMD_RXD_MONITOR_OUT msgresponse */
5106 #define	MC_CMD_RXD_MONITOR_OUT_LEN 80
5107 #define	MC_CMD_RXD_MONITOR_OUT_QID_OFST 0
5108 #define	MC_CMD_RXD_MONITOR_OUT_QID_LEN 4
5109 #define	MC_CMD_RXD_MONITOR_OUT_RING_FILL_OFST 4
5110 #define	MC_CMD_RXD_MONITOR_OUT_RING_FILL_LEN 4
5111 #define	MC_CMD_RXD_MONITOR_OUT_CACHE_FILL_OFST 8
5112 #define	MC_CMD_RXD_MONITOR_OUT_CACHE_FILL_LEN 4
5113 #define	MC_CMD_RXD_MONITOR_OUT_RING_LT_1_OFST 12
5114 #define	MC_CMD_RXD_MONITOR_OUT_RING_LT_1_LEN 4
5115 #define	MC_CMD_RXD_MONITOR_OUT_RING_LT_2_OFST 16
5116 #define	MC_CMD_RXD_MONITOR_OUT_RING_LT_2_LEN 4
5117 #define	MC_CMD_RXD_MONITOR_OUT_RING_LT_4_OFST 20
5118 #define	MC_CMD_RXD_MONITOR_OUT_RING_LT_4_LEN 4
5119 #define	MC_CMD_RXD_MONITOR_OUT_RING_LT_8_OFST 24
5120 #define	MC_CMD_RXD_MONITOR_OUT_RING_LT_8_LEN 4
5121 #define	MC_CMD_RXD_MONITOR_OUT_RING_LT_16_OFST 28
5122 #define	MC_CMD_RXD_MONITOR_OUT_RING_LT_16_LEN 4
5123 #define	MC_CMD_RXD_MONITOR_OUT_RING_LT_32_OFST 32
5124 #define	MC_CMD_RXD_MONITOR_OUT_RING_LT_32_LEN 4
5125 #define	MC_CMD_RXD_MONITOR_OUT_RING_LT_64_OFST 36
5126 #define	MC_CMD_RXD_MONITOR_OUT_RING_LT_64_LEN 4
5127 #define	MC_CMD_RXD_MONITOR_OUT_RING_LT_128_OFST 40
5128 #define	MC_CMD_RXD_MONITOR_OUT_RING_LT_128_LEN 4
5129 #define	MC_CMD_RXD_MONITOR_OUT_RING_LT_256_OFST 44
5130 #define	MC_CMD_RXD_MONITOR_OUT_RING_LT_256_LEN 4
5131 #define	MC_CMD_RXD_MONITOR_OUT_RING_GE_256_OFST 48
5132 #define	MC_CMD_RXD_MONITOR_OUT_RING_GE_256_LEN 4
5133 #define	MC_CMD_RXD_MONITOR_OUT_CACHE_LT_1_OFST 52
5134 #define	MC_CMD_RXD_MONITOR_OUT_CACHE_LT_1_LEN 4
5135 #define	MC_CMD_RXD_MONITOR_OUT_CACHE_LT_2_OFST 56
5136 #define	MC_CMD_RXD_MONITOR_OUT_CACHE_LT_2_LEN 4
5137 #define	MC_CMD_RXD_MONITOR_OUT_CACHE_LT_4_OFST 60
5138 #define	MC_CMD_RXD_MONITOR_OUT_CACHE_LT_4_LEN 4
5139 #define	MC_CMD_RXD_MONITOR_OUT_CACHE_LT_8_OFST 64
5140 #define	MC_CMD_RXD_MONITOR_OUT_CACHE_LT_8_LEN 4
5141 #define	MC_CMD_RXD_MONITOR_OUT_CACHE_LT_16_OFST 68
5142 #define	MC_CMD_RXD_MONITOR_OUT_CACHE_LT_16_LEN 4
5143 #define	MC_CMD_RXD_MONITOR_OUT_CACHE_LT_32_OFST 72
5144 #define	MC_CMD_RXD_MONITOR_OUT_CACHE_LT_32_LEN 4
5145 #define	MC_CMD_RXD_MONITOR_OUT_CACHE_GE_32_OFST 76
5146 #define	MC_CMD_RXD_MONITOR_OUT_CACHE_GE_32_LEN 4
5147 
5148 
5149 /***********************************/
5150 /* MC_CMD_PUTS
5151  * Copy the given ASCII string out onto UART and/or out of the network port.
5152  */
5153 #define	MC_CMD_PUTS 0x23
5154 #define	MC_CMD_PUTS_MSGSET 0x23
5155 #undef	MC_CMD_0x23_PRIVILEGE_CTG
5156 
5157 #define	MC_CMD_0x23_PRIVILEGE_CTG SRIOV_CTG_INSECURE
5158 
5159 /* MC_CMD_PUTS_IN msgrequest */
5160 #define	MC_CMD_PUTS_IN_LENMIN 13
5161 #define	MC_CMD_PUTS_IN_LENMAX 252
5162 #define	MC_CMD_PUTS_IN_LENMAX_MCDI2 1020
5163 #define	MC_CMD_PUTS_IN_LEN(num) (12+1*(num))
5164 #define	MC_CMD_PUTS_IN_STRING_NUM(len) (((len)-12)/1)
5165 #define	MC_CMD_PUTS_IN_DEST_OFST 0
5166 #define	MC_CMD_PUTS_IN_DEST_LEN 4
5167 #define	MC_CMD_PUTS_IN_UART_OFST 0
5168 #define	MC_CMD_PUTS_IN_UART_LBN 0
5169 #define	MC_CMD_PUTS_IN_UART_WIDTH 1
5170 #define	MC_CMD_PUTS_IN_PORT_OFST 0
5171 #define	MC_CMD_PUTS_IN_PORT_LBN 1
5172 #define	MC_CMD_PUTS_IN_PORT_WIDTH 1
5173 #define	MC_CMD_PUTS_IN_DHOST_OFST 4
5174 #define	MC_CMD_PUTS_IN_DHOST_LEN 6
5175 #define	MC_CMD_PUTS_IN_STRING_OFST 12
5176 #define	MC_CMD_PUTS_IN_STRING_LEN 1
5177 #define	MC_CMD_PUTS_IN_STRING_MINNUM 1
5178 #define	MC_CMD_PUTS_IN_STRING_MAXNUM 240
5179 #define	MC_CMD_PUTS_IN_STRING_MAXNUM_MCDI2 1008
5180 
5181 /* MC_CMD_PUTS_OUT msgresponse */
5182 #define	MC_CMD_PUTS_OUT_LEN 0
5183 
5184 
5185 /***********************************/
5186 /* MC_CMD_GET_PHY_CFG
5187  * Report PHY configuration. This guarantees to succeed even if the PHY is in a
5188  * 'zombie' state. Locks required: None
5189  */
5190 #define	MC_CMD_GET_PHY_CFG 0x24
5191 #define	MC_CMD_GET_PHY_CFG_MSGSET 0x24
5192 #undef	MC_CMD_0x24_PRIVILEGE_CTG
5193 
5194 #define	MC_CMD_0x24_PRIVILEGE_CTG SRIOV_CTG_GENERAL
5195 
5196 /* MC_CMD_GET_PHY_CFG_IN msgrequest */
5197 #define	MC_CMD_GET_PHY_CFG_IN_LEN 0
5198 
5199 /* MC_CMD_GET_PHY_CFG_IN_V2 msgrequest */
5200 #define	MC_CMD_GET_PHY_CFG_IN_V2_LEN 8
5201 /* Target port to request PHY state for. Uses MAE_LINK_ENDPOINT_SELECTOR which
5202  * identifies a real or virtual network port by MAE port and link end. See the
5203  * structure definition for more details
5204  */
5205 #define	MC_CMD_GET_PHY_CFG_IN_V2_TARGET_OFST 0
5206 #define	MC_CMD_GET_PHY_CFG_IN_V2_TARGET_LEN 8
5207 #define	MC_CMD_GET_PHY_CFG_IN_V2_TARGET_LO_OFST 0
5208 #define	MC_CMD_GET_PHY_CFG_IN_V2_TARGET_LO_LEN 4
5209 #define	MC_CMD_GET_PHY_CFG_IN_V2_TARGET_LO_LBN 0
5210 #define	MC_CMD_GET_PHY_CFG_IN_V2_TARGET_LO_WIDTH 32
5211 #define	MC_CMD_GET_PHY_CFG_IN_V2_TARGET_HI_OFST 4
5212 #define	MC_CMD_GET_PHY_CFG_IN_V2_TARGET_HI_LEN 4
5213 #define	MC_CMD_GET_PHY_CFG_IN_V2_TARGET_HI_LBN 32
5214 #define	MC_CMD_GET_PHY_CFG_IN_V2_TARGET_HI_WIDTH 32
5215 /* See structuredef: MAE_LINK_ENDPOINT_SELECTOR */
5216 #define	MC_CMD_GET_PHY_CFG_IN_V2_TARGET_MPORT_SELECTOR_OFST 0
5217 #define	MC_CMD_GET_PHY_CFG_IN_V2_TARGET_MPORT_SELECTOR_LEN 4
5218 #define	MC_CMD_GET_PHY_CFG_IN_V2_TARGET_MPORT_SELECTOR_FLAT_OFST 0
5219 #define	MC_CMD_GET_PHY_CFG_IN_V2_TARGET_MPORT_SELECTOR_FLAT_LEN 4
5220 #define	MC_CMD_GET_PHY_CFG_IN_V2_TARGET_MPORT_SELECTOR_TYPE_OFST 3
5221 #define	MC_CMD_GET_PHY_CFG_IN_V2_TARGET_MPORT_SELECTOR_TYPE_LEN 1
5222 #define	MC_CMD_GET_PHY_CFG_IN_V2_TARGET_MPORT_SELECTOR_MPORT_ID_OFST 0
5223 #define	MC_CMD_GET_PHY_CFG_IN_V2_TARGET_MPORT_SELECTOR_MPORT_ID_LEN 3
5224 #define	MC_CMD_GET_PHY_CFG_IN_V2_TARGET_MPORT_SELECTOR_PPORT_ID_LBN 0
5225 #define	MC_CMD_GET_PHY_CFG_IN_V2_TARGET_MPORT_SELECTOR_PPORT_ID_WIDTH 4
5226 #define	MC_CMD_GET_PHY_CFG_IN_V2_TARGET_MPORT_SELECTOR_FUNC_INTF_ID_LBN 20
5227 #define	MC_CMD_GET_PHY_CFG_IN_V2_TARGET_MPORT_SELECTOR_FUNC_INTF_ID_WIDTH 4
5228 #define	MC_CMD_GET_PHY_CFG_IN_V2_TARGET_MPORT_SELECTOR_FUNC_MH_PF_ID_LBN 16
5229 #define	MC_CMD_GET_PHY_CFG_IN_V2_TARGET_MPORT_SELECTOR_FUNC_MH_PF_ID_WIDTH 4
5230 #define	MC_CMD_GET_PHY_CFG_IN_V2_TARGET_MPORT_SELECTOR_FUNC_PF_ID_OFST 2
5231 #define	MC_CMD_GET_PHY_CFG_IN_V2_TARGET_MPORT_SELECTOR_FUNC_PF_ID_LEN 1
5232 #define	MC_CMD_GET_PHY_CFG_IN_V2_TARGET_MPORT_SELECTOR_FUNC_VF_ID_OFST 0
5233 #define	MC_CMD_GET_PHY_CFG_IN_V2_TARGET_MPORT_SELECTOR_FUNC_VF_ID_LEN 2
5234 #define	MC_CMD_GET_PHY_CFG_IN_V2_TARGET_LINK_END_OFST 4
5235 #define	MC_CMD_GET_PHY_CFG_IN_V2_TARGET_LINK_END_LEN 4
5236 #define	MC_CMD_GET_PHY_CFG_IN_V2_TARGET_FLAT_OFST 0
5237 #define	MC_CMD_GET_PHY_CFG_IN_V2_TARGET_FLAT_LEN 8
5238 #define	MC_CMD_GET_PHY_CFG_IN_V2_TARGET_FLAT_LO_OFST 0
5239 #define	MC_CMD_GET_PHY_CFG_IN_V2_TARGET_FLAT_LO_LEN 4
5240 #define	MC_CMD_GET_PHY_CFG_IN_V2_TARGET_FLAT_LO_LBN 0
5241 #define	MC_CMD_GET_PHY_CFG_IN_V2_TARGET_FLAT_LO_WIDTH 32
5242 #define	MC_CMD_GET_PHY_CFG_IN_V2_TARGET_FLAT_HI_OFST 4
5243 #define	MC_CMD_GET_PHY_CFG_IN_V2_TARGET_FLAT_HI_LEN 4
5244 #define	MC_CMD_GET_PHY_CFG_IN_V2_TARGET_FLAT_HI_LBN 32
5245 #define	MC_CMD_GET_PHY_CFG_IN_V2_TARGET_FLAT_HI_WIDTH 32
5246 
5247 /* MC_CMD_GET_PHY_CFG_OUT msgresponse */
5248 #define	MC_CMD_GET_PHY_CFG_OUT_LEN 72
5249 /* flags */
5250 #define	MC_CMD_GET_PHY_CFG_OUT_FLAGS_OFST 0
5251 #define	MC_CMD_GET_PHY_CFG_OUT_FLAGS_LEN 4
5252 #define	MC_CMD_GET_PHY_CFG_OUT_PRESENT_OFST 0
5253 #define	MC_CMD_GET_PHY_CFG_OUT_PRESENT_LBN 0
5254 #define	MC_CMD_GET_PHY_CFG_OUT_PRESENT_WIDTH 1
5255 #define	MC_CMD_GET_PHY_CFG_OUT_BIST_CABLE_SHORT_OFST 0
5256 #define	MC_CMD_GET_PHY_CFG_OUT_BIST_CABLE_SHORT_LBN 1
5257 #define	MC_CMD_GET_PHY_CFG_OUT_BIST_CABLE_SHORT_WIDTH 1
5258 #define	MC_CMD_GET_PHY_CFG_OUT_BIST_CABLE_LONG_OFST 0
5259 #define	MC_CMD_GET_PHY_CFG_OUT_BIST_CABLE_LONG_LBN 2
5260 #define	MC_CMD_GET_PHY_CFG_OUT_BIST_CABLE_LONG_WIDTH 1
5261 #define	MC_CMD_GET_PHY_CFG_OUT_LOWPOWER_OFST 0
5262 #define	MC_CMD_GET_PHY_CFG_OUT_LOWPOWER_LBN 3
5263 #define	MC_CMD_GET_PHY_CFG_OUT_LOWPOWER_WIDTH 1
5264 #define	MC_CMD_GET_PHY_CFG_OUT_POWEROFF_OFST 0
5265 #define	MC_CMD_GET_PHY_CFG_OUT_POWEROFF_LBN 4
5266 #define	MC_CMD_GET_PHY_CFG_OUT_POWEROFF_WIDTH 1
5267 #define	MC_CMD_GET_PHY_CFG_OUT_TXDIS_OFST 0
5268 #define	MC_CMD_GET_PHY_CFG_OUT_TXDIS_LBN 5
5269 #define	MC_CMD_GET_PHY_CFG_OUT_TXDIS_WIDTH 1
5270 #define	MC_CMD_GET_PHY_CFG_OUT_BIST_OFST 0
5271 #define	MC_CMD_GET_PHY_CFG_OUT_BIST_LBN 6
5272 #define	MC_CMD_GET_PHY_CFG_OUT_BIST_WIDTH 1
5273 /* ?? */
5274 #define	MC_CMD_GET_PHY_CFG_OUT_TYPE_OFST 4
5275 #define	MC_CMD_GET_PHY_CFG_OUT_TYPE_LEN 4
5276 /* Bitmask of supported capabilities */
5277 #define	MC_CMD_GET_PHY_CFG_OUT_SUPPORTED_CAP_OFST 8
5278 #define	MC_CMD_GET_PHY_CFG_OUT_SUPPORTED_CAP_LEN 4
5279 #define	MC_CMD_PHY_CAP_10HDX_OFST 8
5280 #define	MC_CMD_PHY_CAP_10HDX_LBN 1
5281 #define	MC_CMD_PHY_CAP_10HDX_WIDTH 1
5282 #define	MC_CMD_PHY_CAP_10FDX_OFST 8
5283 #define	MC_CMD_PHY_CAP_10FDX_LBN 2
5284 #define	MC_CMD_PHY_CAP_10FDX_WIDTH 1
5285 #define	MC_CMD_PHY_CAP_100HDX_OFST 8
5286 #define	MC_CMD_PHY_CAP_100HDX_LBN 3
5287 #define	MC_CMD_PHY_CAP_100HDX_WIDTH 1
5288 #define	MC_CMD_PHY_CAP_100FDX_OFST 8
5289 #define	MC_CMD_PHY_CAP_100FDX_LBN 4
5290 #define	MC_CMD_PHY_CAP_100FDX_WIDTH 1
5291 #define	MC_CMD_PHY_CAP_1000HDX_OFST 8
5292 #define	MC_CMD_PHY_CAP_1000HDX_LBN 5
5293 #define	MC_CMD_PHY_CAP_1000HDX_WIDTH 1
5294 #define	MC_CMD_PHY_CAP_1000FDX_OFST 8
5295 #define	MC_CMD_PHY_CAP_1000FDX_LBN 6
5296 #define	MC_CMD_PHY_CAP_1000FDX_WIDTH 1
5297 #define	MC_CMD_PHY_CAP_10000FDX_OFST 8
5298 #define	MC_CMD_PHY_CAP_10000FDX_LBN 7
5299 #define	MC_CMD_PHY_CAP_10000FDX_WIDTH 1
5300 #define	MC_CMD_PHY_CAP_PAUSE_OFST 8
5301 #define	MC_CMD_PHY_CAP_PAUSE_LBN 8
5302 #define	MC_CMD_PHY_CAP_PAUSE_WIDTH 1
5303 #define	MC_CMD_PHY_CAP_ASYM_OFST 8
5304 #define	MC_CMD_PHY_CAP_ASYM_LBN 9
5305 #define	MC_CMD_PHY_CAP_ASYM_WIDTH 1
5306 #define	MC_CMD_PHY_CAP_AN_OFST 8
5307 #define	MC_CMD_PHY_CAP_AN_LBN 10
5308 #define	MC_CMD_PHY_CAP_AN_WIDTH 1
5309 #define	MC_CMD_PHY_CAP_40000FDX_OFST 8
5310 #define	MC_CMD_PHY_CAP_40000FDX_LBN 11
5311 #define	MC_CMD_PHY_CAP_40000FDX_WIDTH 1
5312 #define	MC_CMD_PHY_CAP_DDM_OFST 8
5313 #define	MC_CMD_PHY_CAP_DDM_LBN 12
5314 #define	MC_CMD_PHY_CAP_DDM_WIDTH 1
5315 #define	MC_CMD_PHY_CAP_100000FDX_OFST 8
5316 #define	MC_CMD_PHY_CAP_100000FDX_LBN 13
5317 #define	MC_CMD_PHY_CAP_100000FDX_WIDTH 1
5318 #define	MC_CMD_PHY_CAP_25000FDX_OFST 8
5319 #define	MC_CMD_PHY_CAP_25000FDX_LBN 14
5320 #define	MC_CMD_PHY_CAP_25000FDX_WIDTH 1
5321 #define	MC_CMD_PHY_CAP_50000FDX_OFST 8
5322 #define	MC_CMD_PHY_CAP_50000FDX_LBN 15
5323 #define	MC_CMD_PHY_CAP_50000FDX_WIDTH 1
5324 #define	MC_CMD_PHY_CAP_BASER_FEC_OFST 8
5325 #define	MC_CMD_PHY_CAP_BASER_FEC_LBN 16
5326 #define	MC_CMD_PHY_CAP_BASER_FEC_WIDTH 1
5327 #define	MC_CMD_PHY_CAP_BASER_FEC_REQUESTED_OFST 8
5328 #define	MC_CMD_PHY_CAP_BASER_FEC_REQUESTED_LBN 17
5329 #define	MC_CMD_PHY_CAP_BASER_FEC_REQUESTED_WIDTH 1
5330 #define	MC_CMD_PHY_CAP_RS_FEC_OFST 8
5331 #define	MC_CMD_PHY_CAP_RS_FEC_LBN 18
5332 #define	MC_CMD_PHY_CAP_RS_FEC_WIDTH 1
5333 #define	MC_CMD_PHY_CAP_RS_FEC_REQUESTED_OFST 8
5334 #define	MC_CMD_PHY_CAP_RS_FEC_REQUESTED_LBN 19
5335 #define	MC_CMD_PHY_CAP_RS_FEC_REQUESTED_WIDTH 1
5336 #define	MC_CMD_PHY_CAP_25G_BASER_FEC_OFST 8
5337 #define	MC_CMD_PHY_CAP_25G_BASER_FEC_LBN 20
5338 #define	MC_CMD_PHY_CAP_25G_BASER_FEC_WIDTH 1
5339 #define	MC_CMD_PHY_CAP_25G_BASER_FEC_REQUESTED_OFST 8
5340 #define	MC_CMD_PHY_CAP_25G_BASER_FEC_REQUESTED_LBN 21
5341 #define	MC_CMD_PHY_CAP_25G_BASER_FEC_REQUESTED_WIDTH 1
5342 #define	MC_CMD_PHY_CAP_200000FDX_OFST 8
5343 #define	MC_CMD_PHY_CAP_200000FDX_LBN 22
5344 #define	MC_CMD_PHY_CAP_200000FDX_WIDTH 1
5345 /* ?? */
5346 #define	MC_CMD_GET_PHY_CFG_OUT_CHANNEL_OFST 12
5347 #define	MC_CMD_GET_PHY_CFG_OUT_CHANNEL_LEN 4
5348 /* ?? */
5349 #define	MC_CMD_GET_PHY_CFG_OUT_PRT_OFST 16
5350 #define	MC_CMD_GET_PHY_CFG_OUT_PRT_LEN 4
5351 /* ?? */
5352 #define	MC_CMD_GET_PHY_CFG_OUT_STATS_MASK_OFST 20
5353 #define	MC_CMD_GET_PHY_CFG_OUT_STATS_MASK_LEN 4
5354 /* ?? */
5355 #define	MC_CMD_GET_PHY_CFG_OUT_NAME_OFST 24
5356 #define	MC_CMD_GET_PHY_CFG_OUT_NAME_LEN 20
5357 /* ?? */
5358 #define	MC_CMD_GET_PHY_CFG_OUT_MEDIA_TYPE_OFST 44
5359 #define	MC_CMD_GET_PHY_CFG_OUT_MEDIA_TYPE_LEN 4
5360 /* enum: Xaui. */
5361 #define	MC_CMD_MEDIA_XAUI 0x1
5362 /* enum: CX4. */
5363 #define	MC_CMD_MEDIA_CX4 0x2
5364 /* enum: KX4. */
5365 #define	MC_CMD_MEDIA_KX4 0x3
5366 /* enum: XFP Far. */
5367 #define	MC_CMD_MEDIA_XFP 0x4
5368 /* enum: SFP+. */
5369 #define	MC_CMD_MEDIA_SFP_PLUS 0x5
5370 /* enum: 10GBaseT. */
5371 #define	MC_CMD_MEDIA_BASE_T 0x6
5372 /* enum: QSFP+. */
5373 #define	MC_CMD_MEDIA_QSFP_PLUS 0x7
5374 /* enum: DSFP. */
5375 #define	MC_CMD_MEDIA_DSFP 0x8
5376 #define	MC_CMD_GET_PHY_CFG_OUT_MMD_MASK_OFST 48
5377 #define	MC_CMD_GET_PHY_CFG_OUT_MMD_MASK_LEN 4
5378 /* enum property: bitshift */
5379 /* enum: Native clause 22 */
5380 #define	MC_CMD_MMD_CLAUSE22 0x0
5381 #define	MC_CMD_MMD_CLAUSE45_PMAPMD 0x1 /* enum */
5382 #define	MC_CMD_MMD_CLAUSE45_WIS 0x2 /* enum */
5383 #define	MC_CMD_MMD_CLAUSE45_PCS 0x3 /* enum */
5384 #define	MC_CMD_MMD_CLAUSE45_PHYXS 0x4 /* enum */
5385 #define	MC_CMD_MMD_CLAUSE45_DTEXS 0x5 /* enum */
5386 #define	MC_CMD_MMD_CLAUSE45_TC 0x6 /* enum */
5387 #define	MC_CMD_MMD_CLAUSE45_AN 0x7 /* enum */
5388 /* enum: Clause22 proxied over clause45 by PHY. */
5389 #define	MC_CMD_MMD_CLAUSE45_C22EXT 0x1d
5390 #define	MC_CMD_MMD_CLAUSE45_VEND1 0x1e /* enum */
5391 #define	MC_CMD_MMD_CLAUSE45_VEND2 0x1f /* enum */
5392 #define	MC_CMD_GET_PHY_CFG_OUT_REVISION_OFST 52
5393 #define	MC_CMD_GET_PHY_CFG_OUT_REVISION_LEN 20
5394 
5395 
5396 /***********************************/
5397 /* MC_CMD_START_BIST
5398  * Start a BIST test on the PHY. Locks required: PHY_LOCK if doing a PHY BIST
5399  * Return code: 0, EINVAL, EACCES (if PHY_LOCK is not held)
5400  */
5401 #define	MC_CMD_START_BIST 0x25
5402 #define	MC_CMD_START_BIST_MSGSET 0x25
5403 #undef	MC_CMD_0x25_PRIVILEGE_CTG
5404 
5405 #define	MC_CMD_0x25_PRIVILEGE_CTG SRIOV_CTG_ADMIN_TSA_UNBOUND
5406 
5407 /* MC_CMD_START_BIST_IN msgrequest */
5408 #define	MC_CMD_START_BIST_IN_LEN 4
5409 /* Type of test. */
5410 #define	MC_CMD_START_BIST_IN_TYPE_OFST 0
5411 #define	MC_CMD_START_BIST_IN_TYPE_LEN 4
5412 /* enum: Run the PHY's short cable BIST. */
5413 #define	MC_CMD_PHY_BIST_CABLE_SHORT 0x1
5414 /* enum: Run the PHY's long cable BIST. */
5415 #define	MC_CMD_PHY_BIST_CABLE_LONG 0x2
5416 /* enum: Run BIST on the currently selected BPX Serdes (XAUI or XFI) . */
5417 #define	MC_CMD_BPX_SERDES_BIST 0x3
5418 /* enum: Run the MC loopback tests. */
5419 #define	MC_CMD_MC_LOOPBACK_BIST 0x4
5420 /* enum: Run the PHY's standard BIST. */
5421 #define	MC_CMD_PHY_BIST 0x5
5422 /* enum: Run MC RAM test. */
5423 #define	MC_CMD_MC_MEM_BIST 0x6
5424 /* enum: Run Port RAM test. */
5425 #define	MC_CMD_PORT_MEM_BIST 0x7
5426 /* enum: Run register test. */
5427 #define	MC_CMD_REG_BIST 0x8
5428 
5429 /* MC_CMD_START_BIST_OUT msgresponse */
5430 #define	MC_CMD_START_BIST_OUT_LEN 0
5431 
5432 
5433 /***********************************/
5434 /* MC_CMD_POLL_BIST
5435  * Poll for BIST completion. Returns a single status code, and optionally some
5436  * PHY specific bist output. The driver should only consume the BIST output
5437  * after validating OUTLEN and MC_CMD_GET_PHY_CFG.TYPE. If a driver can't
5438  * successfully parse the BIST output, it should still respect the pass/Fail in
5439  * OUT.RESULT. Locks required: PHY_LOCK if doing a PHY BIST. Return code: 0,
5440  * EACCES (if PHY_LOCK is not held).
5441  */
5442 #define	MC_CMD_POLL_BIST 0x26
5443 #define	MC_CMD_POLL_BIST_MSGSET 0x26
5444 #undef	MC_CMD_0x26_PRIVILEGE_CTG
5445 
5446 #define	MC_CMD_0x26_PRIVILEGE_CTG SRIOV_CTG_ADMIN_TSA_UNBOUND
5447 
5448 /* MC_CMD_POLL_BIST_IN msgrequest */
5449 #define	MC_CMD_POLL_BIST_IN_LEN 0
5450 
5451 /* MC_CMD_POLL_BIST_OUT msgresponse */
5452 #define	MC_CMD_POLL_BIST_OUT_LEN 8
5453 /* result */
5454 #define	MC_CMD_POLL_BIST_OUT_RESULT_OFST 0
5455 #define	MC_CMD_POLL_BIST_OUT_RESULT_LEN 4
5456 /* enum: Running. */
5457 #define	MC_CMD_POLL_BIST_RUNNING 0x1
5458 /* enum: Passed. */
5459 #define	MC_CMD_POLL_BIST_PASSED 0x2
5460 /* enum: Failed. */
5461 #define	MC_CMD_POLL_BIST_FAILED 0x3
5462 /* enum: Timed-out. */
5463 #define	MC_CMD_POLL_BIST_TIMEOUT 0x4
5464 #define	MC_CMD_POLL_BIST_OUT_PRIVATE_OFST 4
5465 #define	MC_CMD_POLL_BIST_OUT_PRIVATE_LEN 4
5466 
5467 /* MC_CMD_POLL_BIST_OUT_SFT9001 msgresponse */
5468 #define	MC_CMD_POLL_BIST_OUT_SFT9001_LEN 36
5469 /* result */
5470 /*            MC_CMD_POLL_BIST_OUT_RESULT_OFST 0 */
5471 /*            MC_CMD_POLL_BIST_OUT_RESULT_LEN 4 */
5472 /*            Enum values, see field(s): */
5473 /*               MC_CMD_POLL_BIST_OUT/MC_CMD_POLL_BIST_OUT_RESULT */
5474 #define	MC_CMD_POLL_BIST_OUT_SFT9001_CABLE_LENGTH_A_OFST 4
5475 #define	MC_CMD_POLL_BIST_OUT_SFT9001_CABLE_LENGTH_A_LEN 4
5476 #define	MC_CMD_POLL_BIST_OUT_SFT9001_CABLE_LENGTH_B_OFST 8
5477 #define	MC_CMD_POLL_BIST_OUT_SFT9001_CABLE_LENGTH_B_LEN 4
5478 #define	MC_CMD_POLL_BIST_OUT_SFT9001_CABLE_LENGTH_C_OFST 12
5479 #define	MC_CMD_POLL_BIST_OUT_SFT9001_CABLE_LENGTH_C_LEN 4
5480 #define	MC_CMD_POLL_BIST_OUT_SFT9001_CABLE_LENGTH_D_OFST 16
5481 #define	MC_CMD_POLL_BIST_OUT_SFT9001_CABLE_LENGTH_D_LEN 4
5482 /* Status of each channel A */
5483 #define	MC_CMD_POLL_BIST_OUT_SFT9001_CABLE_STATUS_A_OFST 20
5484 #define	MC_CMD_POLL_BIST_OUT_SFT9001_CABLE_STATUS_A_LEN 4
5485 /* enum: Ok. */
5486 #define	MC_CMD_POLL_BIST_SFT9001_PAIR_OK 0x1
5487 /* enum: Open. */
5488 #define	MC_CMD_POLL_BIST_SFT9001_PAIR_OPEN 0x2
5489 /* enum: Intra-pair short. */
5490 #define	MC_CMD_POLL_BIST_SFT9001_INTRA_PAIR_SHORT 0x3
5491 /* enum: Inter-pair short. */
5492 #define	MC_CMD_POLL_BIST_SFT9001_INTER_PAIR_SHORT 0x4
5493 /* enum: Busy. */
5494 #define	MC_CMD_POLL_BIST_SFT9001_PAIR_BUSY 0x9
5495 /* Status of each channel B */
5496 #define	MC_CMD_POLL_BIST_OUT_SFT9001_CABLE_STATUS_B_OFST 24
5497 #define	MC_CMD_POLL_BIST_OUT_SFT9001_CABLE_STATUS_B_LEN 4
5498 /*            Enum values, see field(s): */
5499 /*               CABLE_STATUS_A */
5500 /* Status of each channel C */
5501 #define	MC_CMD_POLL_BIST_OUT_SFT9001_CABLE_STATUS_C_OFST 28
5502 #define	MC_CMD_POLL_BIST_OUT_SFT9001_CABLE_STATUS_C_LEN 4
5503 /*            Enum values, see field(s): */
5504 /*               CABLE_STATUS_A */
5505 /* Status of each channel D */
5506 #define	MC_CMD_POLL_BIST_OUT_SFT9001_CABLE_STATUS_D_OFST 32
5507 #define	MC_CMD_POLL_BIST_OUT_SFT9001_CABLE_STATUS_D_LEN 4
5508 /*            Enum values, see field(s): */
5509 /*               CABLE_STATUS_A */
5510 
5511 /* MC_CMD_POLL_BIST_OUT_MRSFP msgresponse */
5512 #define	MC_CMD_POLL_BIST_OUT_MRSFP_LEN 8
5513 /* result */
5514 /*            MC_CMD_POLL_BIST_OUT_RESULT_OFST 0 */
5515 /*            MC_CMD_POLL_BIST_OUT_RESULT_LEN 4 */
5516 /*            Enum values, see field(s): */
5517 /*               MC_CMD_POLL_BIST_OUT/MC_CMD_POLL_BIST_OUT_RESULT */
5518 #define	MC_CMD_POLL_BIST_OUT_MRSFP_TEST_OFST 4
5519 #define	MC_CMD_POLL_BIST_OUT_MRSFP_TEST_LEN 4
5520 /* enum: Complete. */
5521 #define	MC_CMD_POLL_BIST_MRSFP_TEST_COMPLETE 0x0
5522 /* enum: Bus switch off I2C write. */
5523 #define	MC_CMD_POLL_BIST_MRSFP_TEST_BUS_SWITCH_OFF_I2C_WRITE 0x1
5524 /* enum: Bus switch off I2C no access IO exp. */
5525 #define	MC_CMD_POLL_BIST_MRSFP_TEST_BUS_SWITCH_OFF_I2C_NO_ACCESS_IO_EXP 0x2
5526 /* enum: Bus switch off I2C no access module. */
5527 #define	MC_CMD_POLL_BIST_MRSFP_TEST_BUS_SWITCH_OFF_I2C_NO_ACCESS_MODULE 0x3
5528 /* enum: IO exp I2C configure. */
5529 #define	MC_CMD_POLL_BIST_MRSFP_TEST_IO_EXP_I2C_CONFIGURE 0x4
5530 /* enum: Bus switch I2C no cross talk. */
5531 #define	MC_CMD_POLL_BIST_MRSFP_TEST_BUS_SWITCH_I2C_NO_CROSSTALK 0x5
5532 /* enum: Module presence. */
5533 #define	MC_CMD_POLL_BIST_MRSFP_TEST_MODULE_PRESENCE 0x6
5534 /* enum: Module ID I2C access. */
5535 #define	MC_CMD_POLL_BIST_MRSFP_TEST_MODULE_ID_I2C_ACCESS 0x7
5536 /* enum: Module ID sane value. */
5537 #define	MC_CMD_POLL_BIST_MRSFP_TEST_MODULE_ID_SANE_VALUE 0x8
5538 
5539 /* MC_CMD_POLL_BIST_OUT_MEM msgresponse */
5540 #define	MC_CMD_POLL_BIST_OUT_MEM_LEN 36
5541 /* result */
5542 /*            MC_CMD_POLL_BIST_OUT_RESULT_OFST 0 */
5543 /*            MC_CMD_POLL_BIST_OUT_RESULT_LEN 4 */
5544 /*            Enum values, see field(s): */
5545 /*               MC_CMD_POLL_BIST_OUT/MC_CMD_POLL_BIST_OUT_RESULT */
5546 #define	MC_CMD_POLL_BIST_OUT_MEM_TEST_OFST 4
5547 #define	MC_CMD_POLL_BIST_OUT_MEM_TEST_LEN 4
5548 /* enum: Test has completed. */
5549 #define	MC_CMD_POLL_BIST_MEM_COMPLETE 0x0
5550 /* enum: RAM test - walk ones. */
5551 #define	MC_CMD_POLL_BIST_MEM_MEM_WALK_ONES 0x1
5552 /* enum: RAM test - walk zeros. */
5553 #define	MC_CMD_POLL_BIST_MEM_MEM_WALK_ZEROS 0x2
5554 /* enum: RAM test - walking inversions zeros/ones. */
5555 #define	MC_CMD_POLL_BIST_MEM_MEM_INV_ZERO_ONE 0x3
5556 /* enum: RAM test - walking inversions checkerboard. */
5557 #define	MC_CMD_POLL_BIST_MEM_MEM_INV_CHKBOARD 0x4
5558 /* enum: Register test - set / clear individual bits. */
5559 #define	MC_CMD_POLL_BIST_MEM_REG 0x5
5560 /* enum: ECC error detected. */
5561 #define	MC_CMD_POLL_BIST_MEM_ECC 0x6
5562 /* Failure address, only valid if result is POLL_BIST_FAILED */
5563 #define	MC_CMD_POLL_BIST_OUT_MEM_ADDR_OFST 8
5564 #define	MC_CMD_POLL_BIST_OUT_MEM_ADDR_LEN 4
5565 /* Bus or address space to which the failure address corresponds */
5566 #define	MC_CMD_POLL_BIST_OUT_MEM_BUS_OFST 12
5567 #define	MC_CMD_POLL_BIST_OUT_MEM_BUS_LEN 4
5568 /* enum: MC MIPS bus. */
5569 #define	MC_CMD_POLL_BIST_MEM_BUS_MC 0x0
5570 /* enum: CSR IREG bus. */
5571 #define	MC_CMD_POLL_BIST_MEM_BUS_CSR 0x1
5572 /* enum: RX0 DPCPU bus. */
5573 #define	MC_CMD_POLL_BIST_MEM_BUS_DPCPU_RX 0x2
5574 /* enum: TX0 DPCPU bus. */
5575 #define	MC_CMD_POLL_BIST_MEM_BUS_DPCPU_TX0 0x3
5576 /* enum: TX1 DPCPU bus. */
5577 #define	MC_CMD_POLL_BIST_MEM_BUS_DPCPU_TX1 0x4
5578 /* enum: RX0 DICPU bus. */
5579 #define	MC_CMD_POLL_BIST_MEM_BUS_DICPU_RX 0x5
5580 /* enum: TX DICPU bus. */
5581 #define	MC_CMD_POLL_BIST_MEM_BUS_DICPU_TX 0x6
5582 /* enum: RX1 DPCPU bus. */
5583 #define	MC_CMD_POLL_BIST_MEM_BUS_DPCPU_RX1 0x7
5584 /* enum: RX1 DICPU bus. */
5585 #define	MC_CMD_POLL_BIST_MEM_BUS_DICPU_RX1 0x8
5586 /* Pattern written to RAM / register */
5587 #define	MC_CMD_POLL_BIST_OUT_MEM_EXPECT_OFST 16
5588 #define	MC_CMD_POLL_BIST_OUT_MEM_EXPECT_LEN 4
5589 /* Actual value read from RAM / register */
5590 #define	MC_CMD_POLL_BIST_OUT_MEM_ACTUAL_OFST 20
5591 #define	MC_CMD_POLL_BIST_OUT_MEM_ACTUAL_LEN 4
5592 /* ECC error mask */
5593 #define	MC_CMD_POLL_BIST_OUT_MEM_ECC_OFST 24
5594 #define	MC_CMD_POLL_BIST_OUT_MEM_ECC_LEN 4
5595 /* ECC parity error mask */
5596 #define	MC_CMD_POLL_BIST_OUT_MEM_ECC_PARITY_OFST 28
5597 #define	MC_CMD_POLL_BIST_OUT_MEM_ECC_PARITY_LEN 4
5598 /* ECC fatal error mask */
5599 #define	MC_CMD_POLL_BIST_OUT_MEM_ECC_FATAL_OFST 32
5600 #define	MC_CMD_POLL_BIST_OUT_MEM_ECC_FATAL_LEN 4
5601 
5602 
5603 /***********************************/
5604 /* MC_CMD_FLUSH_RX_QUEUES
5605  * Flush receive queue(s). If SRIOV is enabled (via MC_CMD_SRIOV), then RXQ
5606  * flushes should be initiated via this MCDI operation, rather than via
5607  * directly writing FLUSH_CMD.
5608  *
5609  * The flush is completed (either done/fail) asynchronously (after this command
5610  * returns). The driver must still wait for flush done/failure events as usual.
5611  */
5612 #define	MC_CMD_FLUSH_RX_QUEUES 0x27
5613 #define	MC_CMD_FLUSH_RX_QUEUES_MSGSET 0x27
5614 
5615 /* MC_CMD_FLUSH_RX_QUEUES_IN msgrequest */
5616 #define	MC_CMD_FLUSH_RX_QUEUES_IN_LENMIN 4
5617 #define	MC_CMD_FLUSH_RX_QUEUES_IN_LENMAX 252
5618 #define	MC_CMD_FLUSH_RX_QUEUES_IN_LENMAX_MCDI2 1020
5619 #define	MC_CMD_FLUSH_RX_QUEUES_IN_LEN(num) (0+4*(num))
5620 #define	MC_CMD_FLUSH_RX_QUEUES_IN_QID_OFST_NUM(len) (((len)-0)/4)
5621 #define	MC_CMD_FLUSH_RX_QUEUES_IN_QID_OFST_OFST 0
5622 #define	MC_CMD_FLUSH_RX_QUEUES_IN_QID_OFST_LEN 4
5623 #define	MC_CMD_FLUSH_RX_QUEUES_IN_QID_OFST_MINNUM 1
5624 #define	MC_CMD_FLUSH_RX_QUEUES_IN_QID_OFST_MAXNUM 63
5625 #define	MC_CMD_FLUSH_RX_QUEUES_IN_QID_OFST_MAXNUM_MCDI2 255
5626 
5627 /* MC_CMD_FLUSH_RX_QUEUES_OUT msgresponse */
5628 #define	MC_CMD_FLUSH_RX_QUEUES_OUT_LEN 0
5629 
5630 
5631 /***********************************/
5632 /* MC_CMD_GET_LOOPBACK_MODES
5633  * Returns a bitmask of loopback modes available at each speed.
5634  */
5635 #define	MC_CMD_GET_LOOPBACK_MODES 0x28
5636 #define	MC_CMD_GET_LOOPBACK_MODES_MSGSET 0x28
5637 #undef	MC_CMD_0x28_PRIVILEGE_CTG
5638 
5639 #define	MC_CMD_0x28_PRIVILEGE_CTG SRIOV_CTG_GENERAL
5640 
5641 /* MC_CMD_GET_LOOPBACK_MODES_IN msgrequest */
5642 #define	MC_CMD_GET_LOOPBACK_MODES_IN_LEN 0
5643 
5644 /* MC_CMD_GET_LOOPBACK_MODES_IN_V2 msgrequest */
5645 #define	MC_CMD_GET_LOOPBACK_MODES_IN_V2_LEN 8
5646 /* Target port to request loopback modes for. Uses MAE_LINK_ENDPOINT_SELECTOR
5647  * which identifies a real or virtual network port by MAE port and link end.
5648  * See the structure definition for more details
5649  */
5650 #define	MC_CMD_GET_LOOPBACK_MODES_IN_V2_TARGET_OFST 0
5651 #define	MC_CMD_GET_LOOPBACK_MODES_IN_V2_TARGET_LEN 8
5652 #define	MC_CMD_GET_LOOPBACK_MODES_IN_V2_TARGET_LO_OFST 0
5653 #define	MC_CMD_GET_LOOPBACK_MODES_IN_V2_TARGET_LO_LEN 4
5654 #define	MC_CMD_GET_LOOPBACK_MODES_IN_V2_TARGET_LO_LBN 0
5655 #define	MC_CMD_GET_LOOPBACK_MODES_IN_V2_TARGET_LO_WIDTH 32
5656 #define	MC_CMD_GET_LOOPBACK_MODES_IN_V2_TARGET_HI_OFST 4
5657 #define	MC_CMD_GET_LOOPBACK_MODES_IN_V2_TARGET_HI_LEN 4
5658 #define	MC_CMD_GET_LOOPBACK_MODES_IN_V2_TARGET_HI_LBN 32
5659 #define	MC_CMD_GET_LOOPBACK_MODES_IN_V2_TARGET_HI_WIDTH 32
5660 /* See structuredef: MAE_LINK_ENDPOINT_SELECTOR */
5661 #define	MC_CMD_GET_LOOPBACK_MODES_IN_V2_TARGET_MPORT_SELECTOR_OFST 0
5662 #define	MC_CMD_GET_LOOPBACK_MODES_IN_V2_TARGET_MPORT_SELECTOR_LEN 4
5663 #define	MC_CMD_GET_LOOPBACK_MODES_IN_V2_TARGET_MPORT_SELECTOR_FLAT_OFST 0
5664 #define	MC_CMD_GET_LOOPBACK_MODES_IN_V2_TARGET_MPORT_SELECTOR_FLAT_LEN 4
5665 #define	MC_CMD_GET_LOOPBACK_MODES_IN_V2_TARGET_MPORT_SELECTOR_TYPE_OFST 3
5666 #define	MC_CMD_GET_LOOPBACK_MODES_IN_V2_TARGET_MPORT_SELECTOR_TYPE_LEN 1
5667 #define	MC_CMD_GET_LOOPBACK_MODES_IN_V2_TARGET_MPORT_SELECTOR_MPORT_ID_OFST 0
5668 #define	MC_CMD_GET_LOOPBACK_MODES_IN_V2_TARGET_MPORT_SELECTOR_MPORT_ID_LEN 3
5669 #define	MC_CMD_GET_LOOPBACK_MODES_IN_V2_TARGET_MPORT_SELECTOR_PPORT_ID_LBN 0
5670 #define	MC_CMD_GET_LOOPBACK_MODES_IN_V2_TARGET_MPORT_SELECTOR_PPORT_ID_WIDTH 4
5671 #define	MC_CMD_GET_LOOPBACK_MODES_IN_V2_TARGET_MPORT_SELECTOR_FUNC_INTF_ID_LBN 20
5672 #define	MC_CMD_GET_LOOPBACK_MODES_IN_V2_TARGET_MPORT_SELECTOR_FUNC_INTF_ID_WIDTH 4
5673 #define	MC_CMD_GET_LOOPBACK_MODES_IN_V2_TARGET_MPORT_SELECTOR_FUNC_MH_PF_ID_LBN 16
5674 #define	MC_CMD_GET_LOOPBACK_MODES_IN_V2_TARGET_MPORT_SELECTOR_FUNC_MH_PF_ID_WIDTH 4
5675 #define	MC_CMD_GET_LOOPBACK_MODES_IN_V2_TARGET_MPORT_SELECTOR_FUNC_PF_ID_OFST 2
5676 #define	MC_CMD_GET_LOOPBACK_MODES_IN_V2_TARGET_MPORT_SELECTOR_FUNC_PF_ID_LEN 1
5677 #define	MC_CMD_GET_LOOPBACK_MODES_IN_V2_TARGET_MPORT_SELECTOR_FUNC_VF_ID_OFST 0
5678 #define	MC_CMD_GET_LOOPBACK_MODES_IN_V2_TARGET_MPORT_SELECTOR_FUNC_VF_ID_LEN 2
5679 #define	MC_CMD_GET_LOOPBACK_MODES_IN_V2_TARGET_LINK_END_OFST 4
5680 #define	MC_CMD_GET_LOOPBACK_MODES_IN_V2_TARGET_LINK_END_LEN 4
5681 #define	MC_CMD_GET_LOOPBACK_MODES_IN_V2_TARGET_FLAT_OFST 0
5682 #define	MC_CMD_GET_LOOPBACK_MODES_IN_V2_TARGET_FLAT_LEN 8
5683 #define	MC_CMD_GET_LOOPBACK_MODES_IN_V2_TARGET_FLAT_LO_OFST 0
5684 #define	MC_CMD_GET_LOOPBACK_MODES_IN_V2_TARGET_FLAT_LO_LEN 4
5685 #define	MC_CMD_GET_LOOPBACK_MODES_IN_V2_TARGET_FLAT_LO_LBN 0
5686 #define	MC_CMD_GET_LOOPBACK_MODES_IN_V2_TARGET_FLAT_LO_WIDTH 32
5687 #define	MC_CMD_GET_LOOPBACK_MODES_IN_V2_TARGET_FLAT_HI_OFST 4
5688 #define	MC_CMD_GET_LOOPBACK_MODES_IN_V2_TARGET_FLAT_HI_LEN 4
5689 #define	MC_CMD_GET_LOOPBACK_MODES_IN_V2_TARGET_FLAT_HI_LBN 32
5690 #define	MC_CMD_GET_LOOPBACK_MODES_IN_V2_TARGET_FLAT_HI_WIDTH 32
5691 
5692 /* MC_CMD_GET_LOOPBACK_MODES_OUT msgresponse */
5693 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_LEN 40
5694 /* Supported loopbacks. */
5695 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_100M_OFST 0
5696 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_100M_LEN 8
5697 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_100M_LO_OFST 0
5698 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_100M_LO_LEN 4
5699 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_100M_LO_LBN 0
5700 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_100M_LO_WIDTH 32
5701 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_100M_HI_OFST 4
5702 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_100M_HI_LEN 4
5703 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_100M_HI_LBN 32
5704 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_100M_HI_WIDTH 32
5705 /* enum property: bitshift */
5706 /* enum: None. */
5707 #define	MC_CMD_LOOPBACK_NONE 0x0
5708 /* enum: Data. */
5709 #define	MC_CMD_LOOPBACK_DATA 0x1
5710 /* enum: GMAC. */
5711 #define	MC_CMD_LOOPBACK_GMAC 0x2
5712 /* enum: XGMII. */
5713 #define	MC_CMD_LOOPBACK_XGMII 0x3
5714 /* enum: XGXS. */
5715 #define	MC_CMD_LOOPBACK_XGXS 0x4
5716 /* enum: XAUI. */
5717 #define	MC_CMD_LOOPBACK_XAUI 0x5
5718 /* enum: GMII. */
5719 #define	MC_CMD_LOOPBACK_GMII 0x6
5720 /* enum: SGMII. */
5721 #define	MC_CMD_LOOPBACK_SGMII 0x7
5722 /* enum: XGBR. */
5723 #define	MC_CMD_LOOPBACK_XGBR 0x8
5724 /* enum: XFI. */
5725 #define	MC_CMD_LOOPBACK_XFI 0x9
5726 /* enum: XAUI Far. */
5727 #define	MC_CMD_LOOPBACK_XAUI_FAR 0xa
5728 /* enum: GMII Far. */
5729 #define	MC_CMD_LOOPBACK_GMII_FAR 0xb
5730 /* enum: SGMII Far. */
5731 #define	MC_CMD_LOOPBACK_SGMII_FAR 0xc
5732 /* enum: XFI Far. */
5733 #define	MC_CMD_LOOPBACK_XFI_FAR 0xd
5734 /* enum: GPhy. */
5735 #define	MC_CMD_LOOPBACK_GPHY 0xe
5736 /* enum: PhyXS. */
5737 #define	MC_CMD_LOOPBACK_PHYXS 0xf
5738 /* enum: PCS. */
5739 #define	MC_CMD_LOOPBACK_PCS 0x10
5740 /* enum: PMA-PMD. */
5741 #define	MC_CMD_LOOPBACK_PMAPMD 0x11
5742 /* enum: Cross-Port. */
5743 #define	MC_CMD_LOOPBACK_XPORT 0x12
5744 /* enum: XGMII-Wireside. */
5745 #define	MC_CMD_LOOPBACK_XGMII_WS 0x13
5746 /* enum: XAUI Wireside. */
5747 #define	MC_CMD_LOOPBACK_XAUI_WS 0x14
5748 /* enum: XAUI Wireside Far. */
5749 #define	MC_CMD_LOOPBACK_XAUI_WS_FAR 0x15
5750 /* enum: XAUI Wireside near. */
5751 #define	MC_CMD_LOOPBACK_XAUI_WS_NEAR 0x16
5752 /* enum: GMII Wireside. */
5753 #define	MC_CMD_LOOPBACK_GMII_WS 0x17
5754 /* enum: XFI Wireside. */
5755 #define	MC_CMD_LOOPBACK_XFI_WS 0x18
5756 /* enum: XFI Wireside Far. */
5757 #define	MC_CMD_LOOPBACK_XFI_WS_FAR 0x19
5758 /* enum: PhyXS Wireside. */
5759 #define	MC_CMD_LOOPBACK_PHYXS_WS 0x1a
5760 /* enum: PMA lanes MAC-Serdes. */
5761 #define	MC_CMD_LOOPBACK_PMA_INT 0x1b
5762 /* enum: KR Serdes Parallel (Encoder). */
5763 #define	MC_CMD_LOOPBACK_SD_NEAR 0x1c
5764 /* enum: KR Serdes Serial. */
5765 #define	MC_CMD_LOOPBACK_SD_FAR 0x1d
5766 /* enum: PMA lanes MAC-Serdes Wireside. */
5767 #define	MC_CMD_LOOPBACK_PMA_INT_WS 0x1e
5768 /* enum: KR Serdes Parallel Wireside (Full PCS). */
5769 #define	MC_CMD_LOOPBACK_SD_FEP2_WS 0x1f
5770 /* enum: KR Serdes Parallel Wireside (Sym Aligner to TX). */
5771 #define	MC_CMD_LOOPBACK_SD_FEP1_5_WS 0x20
5772 /* enum: KR Serdes Parallel Wireside (Deserializer to Serializer). */
5773 #define	MC_CMD_LOOPBACK_SD_FEP_WS 0x21
5774 /* enum: KR Serdes Serial Wireside. */
5775 #define	MC_CMD_LOOPBACK_SD_FES_WS 0x22
5776 /* enum: Near side of AOE Siena side port */
5777 #define	MC_CMD_LOOPBACK_AOE_INT_NEAR 0x23
5778 /* enum: Medford Wireside datapath loopback */
5779 #define	MC_CMD_LOOPBACK_DATA_WS 0x24
5780 /* enum: Force link up without setting up any physical loopback (snapper use
5781  * only)
5782  */
5783 #define	MC_CMD_LOOPBACK_FORCE_EXT_LINK 0x25
5784 /* Supported loopbacks. */
5785 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_1G_OFST 8
5786 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_1G_LEN 8
5787 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_1G_LO_OFST 8
5788 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_1G_LO_LEN 4
5789 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_1G_LO_LBN 64
5790 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_1G_LO_WIDTH 32
5791 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_1G_HI_OFST 12
5792 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_1G_HI_LEN 4
5793 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_1G_HI_LBN 96
5794 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_1G_HI_WIDTH 32
5795 /* enum property: bitshift */
5796 /*            Enum values, see field(s): */
5797 /*               100M */
5798 /* Supported loopbacks. */
5799 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_10G_OFST 16
5800 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_10G_LEN 8
5801 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_10G_LO_OFST 16
5802 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_10G_LO_LEN 4
5803 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_10G_LO_LBN 128
5804 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_10G_LO_WIDTH 32
5805 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_10G_HI_OFST 20
5806 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_10G_HI_LEN 4
5807 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_10G_HI_LBN 160
5808 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_10G_HI_WIDTH 32
5809 /* enum property: bitshift */
5810 /*            Enum values, see field(s): */
5811 /*               100M */
5812 /* Supported loopbacks. */
5813 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_SUGGESTED_OFST 24
5814 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_SUGGESTED_LEN 8
5815 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_SUGGESTED_LO_OFST 24
5816 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_SUGGESTED_LO_LEN 4
5817 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_SUGGESTED_LO_LBN 192
5818 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_SUGGESTED_LO_WIDTH 32
5819 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_SUGGESTED_HI_OFST 28
5820 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_SUGGESTED_HI_LEN 4
5821 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_SUGGESTED_HI_LBN 224
5822 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_SUGGESTED_HI_WIDTH 32
5823 /* enum property: bitshift */
5824 /*            Enum values, see field(s): */
5825 /*               100M */
5826 /* Supported loopbacks. */
5827 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_40G_OFST 32
5828 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_40G_LEN 8
5829 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_40G_LO_OFST 32
5830 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_40G_LO_LEN 4
5831 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_40G_LO_LBN 256
5832 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_40G_LO_WIDTH 32
5833 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_40G_HI_OFST 36
5834 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_40G_HI_LEN 4
5835 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_40G_HI_LBN 288
5836 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_40G_HI_WIDTH 32
5837 /* enum property: bitshift */
5838 /*            Enum values, see field(s): */
5839 /*               100M */
5840 
5841 /* MC_CMD_GET_LOOPBACK_MODES_OUT_V2 msgresponse: Supported loopback modes for
5842  * newer NICs with 25G/50G/100G support
5843  */
5844 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_LEN 64
5845 /* Supported loopbacks. */
5846 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_100M_OFST 0
5847 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_100M_LEN 8
5848 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_100M_LO_OFST 0
5849 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_100M_LO_LEN 4
5850 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_100M_LO_LBN 0
5851 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_100M_LO_WIDTH 32
5852 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_100M_HI_OFST 4
5853 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_100M_HI_LEN 4
5854 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_100M_HI_LBN 32
5855 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_100M_HI_WIDTH 32
5856 /* enum property: bitshift */
5857 /* enum: None. */
5858 /*               MC_CMD_LOOPBACK_NONE 0x0 */
5859 /* enum: Data. */
5860 /*               MC_CMD_LOOPBACK_DATA 0x1 */
5861 /* enum: GMAC. */
5862 /*               MC_CMD_LOOPBACK_GMAC 0x2 */
5863 /* enum: XGMII. */
5864 /*               MC_CMD_LOOPBACK_XGMII 0x3 */
5865 /* enum: XGXS. */
5866 /*               MC_CMD_LOOPBACK_XGXS 0x4 */
5867 /* enum: XAUI. */
5868 /*               MC_CMD_LOOPBACK_XAUI 0x5 */
5869 /* enum: GMII. */
5870 /*               MC_CMD_LOOPBACK_GMII 0x6 */
5871 /* enum: SGMII. */
5872 /*               MC_CMD_LOOPBACK_SGMII 0x7 */
5873 /* enum: XGBR. */
5874 /*               MC_CMD_LOOPBACK_XGBR 0x8 */
5875 /* enum: XFI. */
5876 /*               MC_CMD_LOOPBACK_XFI 0x9 */
5877 /* enum: XAUI Far. */
5878 /*               MC_CMD_LOOPBACK_XAUI_FAR 0xa */
5879 /* enum: GMII Far. */
5880 /*               MC_CMD_LOOPBACK_GMII_FAR 0xb */
5881 /* enum: SGMII Far. */
5882 /*               MC_CMD_LOOPBACK_SGMII_FAR 0xc */
5883 /* enum: XFI Far. */
5884 /*               MC_CMD_LOOPBACK_XFI_FAR 0xd */
5885 /* enum: GPhy. */
5886 /*               MC_CMD_LOOPBACK_GPHY 0xe */
5887 /* enum: PhyXS. */
5888 /*               MC_CMD_LOOPBACK_PHYXS 0xf */
5889 /* enum: PCS. */
5890 /*               MC_CMD_LOOPBACK_PCS 0x10 */
5891 /* enum: PMA-PMD. */
5892 /*               MC_CMD_LOOPBACK_PMAPMD 0x11 */
5893 /* enum: Cross-Port. */
5894 /*               MC_CMD_LOOPBACK_XPORT 0x12 */
5895 /* enum: XGMII-Wireside. */
5896 /*               MC_CMD_LOOPBACK_XGMII_WS 0x13 */
5897 /* enum: XAUI Wireside. */
5898 /*               MC_CMD_LOOPBACK_XAUI_WS 0x14 */
5899 /* enum: XAUI Wireside Far. */
5900 /*               MC_CMD_LOOPBACK_XAUI_WS_FAR 0x15 */
5901 /* enum: XAUI Wireside near. */
5902 /*               MC_CMD_LOOPBACK_XAUI_WS_NEAR 0x16 */
5903 /* enum: GMII Wireside. */
5904 /*               MC_CMD_LOOPBACK_GMII_WS 0x17 */
5905 /* enum: XFI Wireside. */
5906 /*               MC_CMD_LOOPBACK_XFI_WS 0x18 */
5907 /* enum: XFI Wireside Far. */
5908 /*               MC_CMD_LOOPBACK_XFI_WS_FAR 0x19 */
5909 /* enum: PhyXS Wireside. */
5910 /*               MC_CMD_LOOPBACK_PHYXS_WS 0x1a */
5911 /* enum: PMA lanes MAC-Serdes. */
5912 /*               MC_CMD_LOOPBACK_PMA_INT 0x1b */
5913 /* enum: KR Serdes Parallel (Encoder). */
5914 /*               MC_CMD_LOOPBACK_SD_NEAR 0x1c */
5915 /* enum: KR Serdes Serial. */
5916 /*               MC_CMD_LOOPBACK_SD_FAR 0x1d */
5917 /* enum: PMA lanes MAC-Serdes Wireside. */
5918 /*               MC_CMD_LOOPBACK_PMA_INT_WS 0x1e */
5919 /* enum: KR Serdes Parallel Wireside (Full PCS). */
5920 /*               MC_CMD_LOOPBACK_SD_FEP2_WS 0x1f */
5921 /* enum: KR Serdes Parallel Wireside (Sym Aligner to TX). */
5922 /*               MC_CMD_LOOPBACK_SD_FEP1_5_WS 0x20 */
5923 /* enum: KR Serdes Parallel Wireside (Deserializer to Serializer). */
5924 /*               MC_CMD_LOOPBACK_SD_FEP_WS 0x21 */
5925 /* enum: KR Serdes Serial Wireside. */
5926 /*               MC_CMD_LOOPBACK_SD_FES_WS 0x22 */
5927 /* enum: Near side of AOE Siena side port */
5928 /*               MC_CMD_LOOPBACK_AOE_INT_NEAR 0x23 */
5929 /* enum: Medford Wireside datapath loopback */
5930 /*               MC_CMD_LOOPBACK_DATA_WS 0x24 */
5931 /* enum: Force link up without setting up any physical loopback (snapper use
5932  * only)
5933  */
5934 /*               MC_CMD_LOOPBACK_FORCE_EXT_LINK 0x25 */
5935 /* Supported loopbacks. */
5936 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_1G_OFST 8
5937 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_1G_LEN 8
5938 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_1G_LO_OFST 8
5939 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_1G_LO_LEN 4
5940 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_1G_LO_LBN 64
5941 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_1G_LO_WIDTH 32
5942 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_1G_HI_OFST 12
5943 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_1G_HI_LEN 4
5944 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_1G_HI_LBN 96
5945 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_1G_HI_WIDTH 32
5946 /* enum property: bitshift */
5947 /*            Enum values, see field(s): */
5948 /*               100M */
5949 /* Supported loopbacks. */
5950 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_10G_OFST 16
5951 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_10G_LEN 8
5952 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_10G_LO_OFST 16
5953 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_10G_LO_LEN 4
5954 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_10G_LO_LBN 128
5955 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_10G_LO_WIDTH 32
5956 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_10G_HI_OFST 20
5957 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_10G_HI_LEN 4
5958 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_10G_HI_LBN 160
5959 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_10G_HI_WIDTH 32
5960 /* enum property: bitshift */
5961 /*            Enum values, see field(s): */
5962 /*               100M */
5963 /* Supported loopbacks. */
5964 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_SUGGESTED_OFST 24
5965 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_SUGGESTED_LEN 8
5966 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_SUGGESTED_LO_OFST 24
5967 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_SUGGESTED_LO_LEN 4
5968 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_SUGGESTED_LO_LBN 192
5969 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_SUGGESTED_LO_WIDTH 32
5970 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_SUGGESTED_HI_OFST 28
5971 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_SUGGESTED_HI_LEN 4
5972 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_SUGGESTED_HI_LBN 224
5973 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_SUGGESTED_HI_WIDTH 32
5974 /* enum property: bitshift */
5975 /*            Enum values, see field(s): */
5976 /*               100M */
5977 /* Supported loopbacks. */
5978 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_40G_OFST 32
5979 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_40G_LEN 8
5980 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_40G_LO_OFST 32
5981 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_40G_LO_LEN 4
5982 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_40G_LO_LBN 256
5983 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_40G_LO_WIDTH 32
5984 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_40G_HI_OFST 36
5985 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_40G_HI_LEN 4
5986 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_40G_HI_LBN 288
5987 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_40G_HI_WIDTH 32
5988 /* enum property: bitshift */
5989 /*            Enum values, see field(s): */
5990 /*               100M */
5991 /* Supported 25G loopbacks. */
5992 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_25G_OFST 40
5993 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_25G_LEN 8
5994 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_25G_LO_OFST 40
5995 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_25G_LO_LEN 4
5996 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_25G_LO_LBN 320
5997 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_25G_LO_WIDTH 32
5998 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_25G_HI_OFST 44
5999 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_25G_HI_LEN 4
6000 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_25G_HI_LBN 352
6001 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_25G_HI_WIDTH 32
6002 /* enum property: bitshift */
6003 /*            Enum values, see field(s): */
6004 /*               100M */
6005 /* Supported 50 loopbacks. */
6006 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_50G_OFST 48
6007 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_50G_LEN 8
6008 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_50G_LO_OFST 48
6009 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_50G_LO_LEN 4
6010 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_50G_LO_LBN 384
6011 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_50G_LO_WIDTH 32
6012 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_50G_HI_OFST 52
6013 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_50G_HI_LEN 4
6014 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_50G_HI_LBN 416
6015 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_50G_HI_WIDTH 32
6016 /* enum property: bitshift */
6017 /*            Enum values, see field(s): */
6018 /*               100M */
6019 /* Supported 100G loopbacks. */
6020 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_100G_OFST 56
6021 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_100G_LEN 8
6022 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_100G_LO_OFST 56
6023 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_100G_LO_LEN 4
6024 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_100G_LO_LBN 448
6025 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_100G_LO_WIDTH 32
6026 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_100G_HI_OFST 60
6027 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_100G_HI_LEN 4
6028 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_100G_HI_LBN 480
6029 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V2_100G_HI_WIDTH 32
6030 /* enum property: bitshift */
6031 /*            Enum values, see field(s): */
6032 /*               100M */
6033 
6034 /* MC_CMD_GET_LOOPBACK_MODES_OUT_V3 msgresponse: Supported loopback modes for
6035  * newer NICs with 200G support
6036  */
6037 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_LEN 72
6038 /* Supported loopbacks. */
6039 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_100M_OFST 0
6040 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_100M_LEN 8
6041 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_100M_LO_OFST 0
6042 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_100M_LO_LEN 4
6043 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_100M_LO_LBN 0
6044 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_100M_LO_WIDTH 32
6045 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_100M_HI_OFST 4
6046 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_100M_HI_LEN 4
6047 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_100M_HI_LBN 32
6048 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_100M_HI_WIDTH 32
6049 /* enum property: bitshift */
6050 /* enum: None. */
6051 /*               MC_CMD_LOOPBACK_NONE 0x0 */
6052 /* enum: Data. */
6053 /*               MC_CMD_LOOPBACK_DATA 0x1 */
6054 /* enum: GMAC. */
6055 /*               MC_CMD_LOOPBACK_GMAC 0x2 */
6056 /* enum: XGMII. */
6057 /*               MC_CMD_LOOPBACK_XGMII 0x3 */
6058 /* enum: XGXS. */
6059 /*               MC_CMD_LOOPBACK_XGXS 0x4 */
6060 /* enum: XAUI. */
6061 /*               MC_CMD_LOOPBACK_XAUI 0x5 */
6062 /* enum: GMII. */
6063 /*               MC_CMD_LOOPBACK_GMII 0x6 */
6064 /* enum: SGMII. */
6065 /*               MC_CMD_LOOPBACK_SGMII 0x7 */
6066 /* enum: XGBR. */
6067 /*               MC_CMD_LOOPBACK_XGBR 0x8 */
6068 /* enum: XFI. */
6069 /*               MC_CMD_LOOPBACK_XFI 0x9 */
6070 /* enum: XAUI Far. */
6071 /*               MC_CMD_LOOPBACK_XAUI_FAR 0xa */
6072 /* enum: GMII Far. */
6073 /*               MC_CMD_LOOPBACK_GMII_FAR 0xb */
6074 /* enum: SGMII Far. */
6075 /*               MC_CMD_LOOPBACK_SGMII_FAR 0xc */
6076 /* enum: XFI Far. */
6077 /*               MC_CMD_LOOPBACK_XFI_FAR 0xd */
6078 /* enum: GPhy. */
6079 /*               MC_CMD_LOOPBACK_GPHY 0xe */
6080 /* enum: PhyXS. */
6081 /*               MC_CMD_LOOPBACK_PHYXS 0xf */
6082 /* enum: PCS. */
6083 /*               MC_CMD_LOOPBACK_PCS 0x10 */
6084 /* enum: PMA-PMD. */
6085 /*               MC_CMD_LOOPBACK_PMAPMD 0x11 */
6086 /* enum: Cross-Port. */
6087 /*               MC_CMD_LOOPBACK_XPORT 0x12 */
6088 /* enum: XGMII-Wireside. */
6089 /*               MC_CMD_LOOPBACK_XGMII_WS 0x13 */
6090 /* enum: XAUI Wireside. */
6091 /*               MC_CMD_LOOPBACK_XAUI_WS 0x14 */
6092 /* enum: XAUI Wireside Far. */
6093 /*               MC_CMD_LOOPBACK_XAUI_WS_FAR 0x15 */
6094 /* enum: XAUI Wireside near. */
6095 /*               MC_CMD_LOOPBACK_XAUI_WS_NEAR 0x16 */
6096 /* enum: GMII Wireside. */
6097 /*               MC_CMD_LOOPBACK_GMII_WS 0x17 */
6098 /* enum: XFI Wireside. */
6099 /*               MC_CMD_LOOPBACK_XFI_WS 0x18 */
6100 /* enum: XFI Wireside Far. */
6101 /*               MC_CMD_LOOPBACK_XFI_WS_FAR 0x19 */
6102 /* enum: PhyXS Wireside. */
6103 /*               MC_CMD_LOOPBACK_PHYXS_WS 0x1a */
6104 /* enum: PMA lanes MAC-Serdes. */
6105 /*               MC_CMD_LOOPBACK_PMA_INT 0x1b */
6106 /* enum: KR Serdes Parallel (Encoder). */
6107 /*               MC_CMD_LOOPBACK_SD_NEAR 0x1c */
6108 /* enum: KR Serdes Serial. */
6109 /*               MC_CMD_LOOPBACK_SD_FAR 0x1d */
6110 /* enum: PMA lanes MAC-Serdes Wireside. */
6111 /*               MC_CMD_LOOPBACK_PMA_INT_WS 0x1e */
6112 /* enum: KR Serdes Parallel Wireside (Full PCS). */
6113 /*               MC_CMD_LOOPBACK_SD_FEP2_WS 0x1f */
6114 /* enum: KR Serdes Parallel Wireside (Sym Aligner to TX). */
6115 /*               MC_CMD_LOOPBACK_SD_FEP1_5_WS 0x20 */
6116 /* enum: KR Serdes Parallel Wireside (Deserializer to Serializer). */
6117 /*               MC_CMD_LOOPBACK_SD_FEP_WS 0x21 */
6118 /* enum: KR Serdes Serial Wireside. */
6119 /*               MC_CMD_LOOPBACK_SD_FES_WS 0x22 */
6120 /* enum: Near side of AOE Siena side port */
6121 /*               MC_CMD_LOOPBACK_AOE_INT_NEAR 0x23 */
6122 /* enum: Medford Wireside datapath loopback */
6123 /*               MC_CMD_LOOPBACK_DATA_WS 0x24 */
6124 /* enum: Force link up without setting up any physical loopback (snapper use
6125  * only)
6126  */
6127 /*               MC_CMD_LOOPBACK_FORCE_EXT_LINK 0x25 */
6128 /* Supported loopbacks. */
6129 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_1G_OFST 8
6130 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_1G_LEN 8
6131 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_1G_LO_OFST 8
6132 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_1G_LO_LEN 4
6133 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_1G_LO_LBN 64
6134 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_1G_LO_WIDTH 32
6135 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_1G_HI_OFST 12
6136 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_1G_HI_LEN 4
6137 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_1G_HI_LBN 96
6138 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_1G_HI_WIDTH 32
6139 /* enum property: bitshift */
6140 /*            Enum values, see field(s): */
6141 /*               100M */
6142 /* Supported loopbacks. */
6143 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_10G_OFST 16
6144 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_10G_LEN 8
6145 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_10G_LO_OFST 16
6146 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_10G_LO_LEN 4
6147 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_10G_LO_LBN 128
6148 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_10G_LO_WIDTH 32
6149 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_10G_HI_OFST 20
6150 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_10G_HI_LEN 4
6151 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_10G_HI_LBN 160
6152 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_10G_HI_WIDTH 32
6153 /* enum property: bitshift */
6154 /*            Enum values, see field(s): */
6155 /*               100M */
6156 /* Supported loopbacks. */
6157 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_SUGGESTED_OFST 24
6158 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_SUGGESTED_LEN 8
6159 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_SUGGESTED_LO_OFST 24
6160 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_SUGGESTED_LO_LEN 4
6161 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_SUGGESTED_LO_LBN 192
6162 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_SUGGESTED_LO_WIDTH 32
6163 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_SUGGESTED_HI_OFST 28
6164 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_SUGGESTED_HI_LEN 4
6165 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_SUGGESTED_HI_LBN 224
6166 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_SUGGESTED_HI_WIDTH 32
6167 /* enum property: bitshift */
6168 /*            Enum values, see field(s): */
6169 /*               100M */
6170 /* Supported loopbacks. */
6171 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_40G_OFST 32
6172 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_40G_LEN 8
6173 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_40G_LO_OFST 32
6174 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_40G_LO_LEN 4
6175 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_40G_LO_LBN 256
6176 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_40G_LO_WIDTH 32
6177 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_40G_HI_OFST 36
6178 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_40G_HI_LEN 4
6179 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_40G_HI_LBN 288
6180 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_40G_HI_WIDTH 32
6181 /* enum property: bitshift */
6182 /*            Enum values, see field(s): */
6183 /*               100M */
6184 /* Supported 25G loopbacks. */
6185 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_25G_OFST 40
6186 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_25G_LEN 8
6187 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_25G_LO_OFST 40
6188 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_25G_LO_LEN 4
6189 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_25G_LO_LBN 320
6190 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_25G_LO_WIDTH 32
6191 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_25G_HI_OFST 44
6192 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_25G_HI_LEN 4
6193 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_25G_HI_LBN 352
6194 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_25G_HI_WIDTH 32
6195 /* enum property: bitshift */
6196 /*            Enum values, see field(s): */
6197 /*               100M */
6198 /* Supported 50 loopbacks. */
6199 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_50G_OFST 48
6200 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_50G_LEN 8
6201 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_50G_LO_OFST 48
6202 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_50G_LO_LEN 4
6203 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_50G_LO_LBN 384
6204 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_50G_LO_WIDTH 32
6205 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_50G_HI_OFST 52
6206 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_50G_HI_LEN 4
6207 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_50G_HI_LBN 416
6208 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_50G_HI_WIDTH 32
6209 /* enum property: bitshift */
6210 /*            Enum values, see field(s): */
6211 /*               100M */
6212 /* Supported 100G loopbacks. */
6213 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_100G_OFST 56
6214 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_100G_LEN 8
6215 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_100G_LO_OFST 56
6216 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_100G_LO_LEN 4
6217 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_100G_LO_LBN 448
6218 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_100G_LO_WIDTH 32
6219 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_100G_HI_OFST 60
6220 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_100G_HI_LEN 4
6221 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_100G_HI_LBN 480
6222 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_100G_HI_WIDTH 32
6223 /* enum property: bitshift */
6224 /*            Enum values, see field(s): */
6225 /*               100M */
6226 /* Supported 200G loopbacks. */
6227 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_200G_OFST 64
6228 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_200G_LEN 8
6229 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_200G_LO_OFST 64
6230 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_200G_LO_LEN 4
6231 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_200G_LO_LBN 512
6232 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_200G_LO_WIDTH 32
6233 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_200G_HI_OFST 68
6234 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_200G_HI_LEN 4
6235 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_200G_HI_LBN 544
6236 #define	MC_CMD_GET_LOOPBACK_MODES_OUT_V3_200G_HI_WIDTH 32
6237 /* enum property: bitshift */
6238 /*            Enum values, see field(s): */
6239 /*               100M */
6240 
6241 /* AN_TYPE structuredef: Auto-negotiation types defined in IEEE802.3 */
6242 #define	AN_TYPE_LEN 4
6243 #define	AN_TYPE_TYPE_OFST 0
6244 #define	AN_TYPE_TYPE_LEN 4
6245 /* enum: None, AN disabled or not supported */
6246 #define	MC_CMD_AN_NONE 0x0
6247 /* enum: Clause 28 - BASE-T */
6248 #define	MC_CMD_AN_CLAUSE28 0x1
6249 /* enum: Clause 37 - BASE-X */
6250 #define	MC_CMD_AN_CLAUSE37 0x2
6251 /* enum: Clause 73 - BASE-R startup protocol for backplane and copper cable
6252  * assemblies. Includes Clause 72/Clause 92 link-training.
6253  */
6254 #define	MC_CMD_AN_CLAUSE73 0x3
6255 #define	AN_TYPE_TYPE_LBN 0
6256 #define	AN_TYPE_TYPE_WIDTH 32
6257 
6258 /* FEC_TYPE structuredef: Forward error correction types defined in IEEE802.3
6259  */
6260 #define	FEC_TYPE_LEN 4
6261 #define	FEC_TYPE_TYPE_OFST 0
6262 #define	FEC_TYPE_TYPE_LEN 4
6263 /* enum: No FEC */
6264 #define	MC_CMD_FEC_NONE 0x0
6265 /* enum: Clause 74 BASE-R FEC (a.k.a Firecode) */
6266 #define	MC_CMD_FEC_BASER 0x1
6267 /* enum: Clause 91/Clause 108 Reed-Solomon FEC */
6268 #define	MC_CMD_FEC_RS 0x2
6269 #define	FEC_TYPE_TYPE_LBN 0
6270 #define	FEC_TYPE_TYPE_WIDTH 32
6271 
6272 
6273 /***********************************/
6274 /* MC_CMD_GET_LINK
6275  * Read the unified MAC/PHY link state. Locks required: None Return code: 0,
6276  * ETIME.
6277  */
6278 #define	MC_CMD_GET_LINK 0x29
6279 #define	MC_CMD_GET_LINK_MSGSET 0x29
6280 #undef	MC_CMD_0x29_PRIVILEGE_CTG
6281 
6282 #define	MC_CMD_0x29_PRIVILEGE_CTG SRIOV_CTG_GENERAL
6283 
6284 /* MC_CMD_GET_LINK_IN msgrequest */
6285 #define	MC_CMD_GET_LINK_IN_LEN 0
6286 
6287 /* MC_CMD_GET_LINK_IN_V2 msgrequest */
6288 #define	MC_CMD_GET_LINK_IN_V2_LEN 8
6289 /* Target port to request link state for. Uses MAE_LINK_ENDPOINT_SELECTOR which
6290  * identifies a real or virtual network port by MAE port and link end. See the
6291  * structure definition for more details.
6292  */
6293 #define	MC_CMD_GET_LINK_IN_V2_TARGET_OFST 0
6294 #define	MC_CMD_GET_LINK_IN_V2_TARGET_LEN 8
6295 #define	MC_CMD_GET_LINK_IN_V2_TARGET_LO_OFST 0
6296 #define	MC_CMD_GET_LINK_IN_V2_TARGET_LO_LEN 4
6297 #define	MC_CMD_GET_LINK_IN_V2_TARGET_LO_LBN 0
6298 #define	MC_CMD_GET_LINK_IN_V2_TARGET_LO_WIDTH 32
6299 #define	MC_CMD_GET_LINK_IN_V2_TARGET_HI_OFST 4
6300 #define	MC_CMD_GET_LINK_IN_V2_TARGET_HI_LEN 4
6301 #define	MC_CMD_GET_LINK_IN_V2_TARGET_HI_LBN 32
6302 #define	MC_CMD_GET_LINK_IN_V2_TARGET_HI_WIDTH 32
6303 /* See structuredef: MAE_LINK_ENDPOINT_SELECTOR */
6304 #define	MC_CMD_GET_LINK_IN_V2_TARGET_MPORT_SELECTOR_OFST 0
6305 #define	MC_CMD_GET_LINK_IN_V2_TARGET_MPORT_SELECTOR_LEN 4
6306 #define	MC_CMD_GET_LINK_IN_V2_TARGET_MPORT_SELECTOR_FLAT_OFST 0
6307 #define	MC_CMD_GET_LINK_IN_V2_TARGET_MPORT_SELECTOR_FLAT_LEN 4
6308 #define	MC_CMD_GET_LINK_IN_V2_TARGET_MPORT_SELECTOR_TYPE_OFST 3
6309 #define	MC_CMD_GET_LINK_IN_V2_TARGET_MPORT_SELECTOR_TYPE_LEN 1
6310 #define	MC_CMD_GET_LINK_IN_V2_TARGET_MPORT_SELECTOR_MPORT_ID_OFST 0
6311 #define	MC_CMD_GET_LINK_IN_V2_TARGET_MPORT_SELECTOR_MPORT_ID_LEN 3
6312 #define	MC_CMD_GET_LINK_IN_V2_TARGET_MPORT_SELECTOR_PPORT_ID_LBN 0
6313 #define	MC_CMD_GET_LINK_IN_V2_TARGET_MPORT_SELECTOR_PPORT_ID_WIDTH 4
6314 #define	MC_CMD_GET_LINK_IN_V2_TARGET_MPORT_SELECTOR_FUNC_INTF_ID_LBN 20
6315 #define	MC_CMD_GET_LINK_IN_V2_TARGET_MPORT_SELECTOR_FUNC_INTF_ID_WIDTH 4
6316 #define	MC_CMD_GET_LINK_IN_V2_TARGET_MPORT_SELECTOR_FUNC_MH_PF_ID_LBN 16
6317 #define	MC_CMD_GET_LINK_IN_V2_TARGET_MPORT_SELECTOR_FUNC_MH_PF_ID_WIDTH 4
6318 #define	MC_CMD_GET_LINK_IN_V2_TARGET_MPORT_SELECTOR_FUNC_PF_ID_OFST 2
6319 #define	MC_CMD_GET_LINK_IN_V2_TARGET_MPORT_SELECTOR_FUNC_PF_ID_LEN 1
6320 #define	MC_CMD_GET_LINK_IN_V2_TARGET_MPORT_SELECTOR_FUNC_VF_ID_OFST 0
6321 #define	MC_CMD_GET_LINK_IN_V2_TARGET_MPORT_SELECTOR_FUNC_VF_ID_LEN 2
6322 #define	MC_CMD_GET_LINK_IN_V2_TARGET_LINK_END_OFST 4
6323 #define	MC_CMD_GET_LINK_IN_V2_TARGET_LINK_END_LEN 4
6324 #define	MC_CMD_GET_LINK_IN_V2_TARGET_FLAT_OFST 0
6325 #define	MC_CMD_GET_LINK_IN_V2_TARGET_FLAT_LEN 8
6326 #define	MC_CMD_GET_LINK_IN_V2_TARGET_FLAT_LO_OFST 0
6327 #define	MC_CMD_GET_LINK_IN_V2_TARGET_FLAT_LO_LEN 4
6328 #define	MC_CMD_GET_LINK_IN_V2_TARGET_FLAT_LO_LBN 0
6329 #define	MC_CMD_GET_LINK_IN_V2_TARGET_FLAT_LO_WIDTH 32
6330 #define	MC_CMD_GET_LINK_IN_V2_TARGET_FLAT_HI_OFST 4
6331 #define	MC_CMD_GET_LINK_IN_V2_TARGET_FLAT_HI_LEN 4
6332 #define	MC_CMD_GET_LINK_IN_V2_TARGET_FLAT_HI_LBN 32
6333 #define	MC_CMD_GET_LINK_IN_V2_TARGET_FLAT_HI_WIDTH 32
6334 
6335 /* MC_CMD_GET_LINK_OUT msgresponse */
6336 #define	MC_CMD_GET_LINK_OUT_LEN 28
6337 /* Near-side advertised capabilities. Refer to
6338  * MC_CMD_GET_PHY_CFG_OUT/SUPPORTED_CAP for bit definitions.
6339  */
6340 #define	MC_CMD_GET_LINK_OUT_CAP_OFST 0
6341 #define	MC_CMD_GET_LINK_OUT_CAP_LEN 4
6342 /* Link-partner advertised capabilities. Refer to
6343  * MC_CMD_GET_PHY_CFG_OUT/SUPPORTED_CAP for bit definitions.
6344  */
6345 #define	MC_CMD_GET_LINK_OUT_LP_CAP_OFST 4
6346 #define	MC_CMD_GET_LINK_OUT_LP_CAP_LEN 4
6347 /* Autonegotiated speed in mbit/s. The link may still be down even if this
6348  * reads non-zero.
6349  */
6350 #define	MC_CMD_GET_LINK_OUT_LINK_SPEED_OFST 8
6351 #define	MC_CMD_GET_LINK_OUT_LINK_SPEED_LEN 4
6352 /* Current loopback setting. */
6353 #define	MC_CMD_GET_LINK_OUT_LOOPBACK_MODE_OFST 12
6354 #define	MC_CMD_GET_LINK_OUT_LOOPBACK_MODE_LEN 4
6355 /*            Enum values, see field(s): */
6356 /*               MC_CMD_GET_LOOPBACK_MODES/MC_CMD_GET_LOOPBACK_MODES_OUT/100M */
6357 #define	MC_CMD_GET_LINK_OUT_FLAGS_OFST 16
6358 #define	MC_CMD_GET_LINK_OUT_FLAGS_LEN 4
6359 #define	MC_CMD_GET_LINK_OUT_LINK_UP_OFST 16
6360 #define	MC_CMD_GET_LINK_OUT_LINK_UP_LBN 0
6361 #define	MC_CMD_GET_LINK_OUT_LINK_UP_WIDTH 1
6362 #define	MC_CMD_GET_LINK_OUT_FULL_DUPLEX_OFST 16
6363 #define	MC_CMD_GET_LINK_OUT_FULL_DUPLEX_LBN 1
6364 #define	MC_CMD_GET_LINK_OUT_FULL_DUPLEX_WIDTH 1
6365 #define	MC_CMD_GET_LINK_OUT_BPX_LINK_OFST 16
6366 #define	MC_CMD_GET_LINK_OUT_BPX_LINK_LBN 2
6367 #define	MC_CMD_GET_LINK_OUT_BPX_LINK_WIDTH 1
6368 #define	MC_CMD_GET_LINK_OUT_PHY_LINK_OFST 16
6369 #define	MC_CMD_GET_LINK_OUT_PHY_LINK_LBN 3
6370 #define	MC_CMD_GET_LINK_OUT_PHY_LINK_WIDTH 1
6371 #define	MC_CMD_GET_LINK_OUT_LINK_FAULT_RX_OFST 16
6372 #define	MC_CMD_GET_LINK_OUT_LINK_FAULT_RX_LBN 6
6373 #define	MC_CMD_GET_LINK_OUT_LINK_FAULT_RX_WIDTH 1
6374 #define	MC_CMD_GET_LINK_OUT_LINK_FAULT_TX_OFST 16
6375 #define	MC_CMD_GET_LINK_OUT_LINK_FAULT_TX_LBN 7
6376 #define	MC_CMD_GET_LINK_OUT_LINK_FAULT_TX_WIDTH 1
6377 #define	MC_CMD_GET_LINK_OUT_MODULE_UP_VALID_OFST 16
6378 #define	MC_CMD_GET_LINK_OUT_MODULE_UP_VALID_LBN 8
6379 #define	MC_CMD_GET_LINK_OUT_MODULE_UP_VALID_WIDTH 1
6380 #define	MC_CMD_GET_LINK_OUT_MODULE_UP_OFST 16
6381 #define	MC_CMD_GET_LINK_OUT_MODULE_UP_LBN 9
6382 #define	MC_CMD_GET_LINK_OUT_MODULE_UP_WIDTH 1
6383 /* This returns the negotiated flow control value. */
6384 #define	MC_CMD_GET_LINK_OUT_FCNTL_OFST 20
6385 #define	MC_CMD_GET_LINK_OUT_FCNTL_LEN 4
6386 /*            Enum values, see field(s): */
6387 /*               MC_CMD_SET_MAC/MC_CMD_SET_MAC_IN/FCNTL */
6388 #define	MC_CMD_GET_LINK_OUT_MAC_FAULT_OFST 24
6389 #define	MC_CMD_GET_LINK_OUT_MAC_FAULT_LEN 4
6390 #define	MC_CMD_MAC_FAULT_XGMII_LOCAL_OFST 24
6391 #define	MC_CMD_MAC_FAULT_XGMII_LOCAL_LBN 0
6392 #define	MC_CMD_MAC_FAULT_XGMII_LOCAL_WIDTH 1
6393 #define	MC_CMD_MAC_FAULT_XGMII_REMOTE_OFST 24
6394 #define	MC_CMD_MAC_FAULT_XGMII_REMOTE_LBN 1
6395 #define	MC_CMD_MAC_FAULT_XGMII_REMOTE_WIDTH 1
6396 #define	MC_CMD_MAC_FAULT_SGMII_REMOTE_OFST 24
6397 #define	MC_CMD_MAC_FAULT_SGMII_REMOTE_LBN 2
6398 #define	MC_CMD_MAC_FAULT_SGMII_REMOTE_WIDTH 1
6399 #define	MC_CMD_MAC_FAULT_PENDING_RECONFIG_OFST 24
6400 #define	MC_CMD_MAC_FAULT_PENDING_RECONFIG_LBN 3
6401 #define	MC_CMD_MAC_FAULT_PENDING_RECONFIG_WIDTH 1
6402 
6403 /* MC_CMD_GET_LINK_OUT_V2 msgresponse: Extended link state information */
6404 #define	MC_CMD_GET_LINK_OUT_V2_LEN 44
6405 /* Near-side advertised capabilities. Refer to
6406  * MC_CMD_GET_PHY_CFG_OUT/SUPPORTED_CAP for bit definitions.
6407  */
6408 #define	MC_CMD_GET_LINK_OUT_V2_CAP_OFST 0
6409 #define	MC_CMD_GET_LINK_OUT_V2_CAP_LEN 4
6410 /* Link-partner advertised capabilities. Refer to
6411  * MC_CMD_GET_PHY_CFG_OUT/SUPPORTED_CAP for bit definitions.
6412  */
6413 #define	MC_CMD_GET_LINK_OUT_V2_LP_CAP_OFST 4
6414 #define	MC_CMD_GET_LINK_OUT_V2_LP_CAP_LEN 4
6415 /* Autonegotiated speed in mbit/s. The link may still be down even if this
6416  * reads non-zero.
6417  */
6418 #define	MC_CMD_GET_LINK_OUT_V2_LINK_SPEED_OFST 8
6419 #define	MC_CMD_GET_LINK_OUT_V2_LINK_SPEED_LEN 4
6420 /* Current loopback setting. */
6421 #define	MC_CMD_GET_LINK_OUT_V2_LOOPBACK_MODE_OFST 12
6422 #define	MC_CMD_GET_LINK_OUT_V2_LOOPBACK_MODE_LEN 4
6423 /*            Enum values, see field(s): */
6424 /*               MC_CMD_GET_LOOPBACK_MODES/MC_CMD_GET_LOOPBACK_MODES_OUT/100M */
6425 #define	MC_CMD_GET_LINK_OUT_V2_FLAGS_OFST 16
6426 #define	MC_CMD_GET_LINK_OUT_V2_FLAGS_LEN 4
6427 #define	MC_CMD_GET_LINK_OUT_V2_LINK_UP_OFST 16
6428 #define	MC_CMD_GET_LINK_OUT_V2_LINK_UP_LBN 0
6429 #define	MC_CMD_GET_LINK_OUT_V2_LINK_UP_WIDTH 1
6430 #define	MC_CMD_GET_LINK_OUT_V2_FULL_DUPLEX_OFST 16
6431 #define	MC_CMD_GET_LINK_OUT_V2_FULL_DUPLEX_LBN 1
6432 #define	MC_CMD_GET_LINK_OUT_V2_FULL_DUPLEX_WIDTH 1
6433 #define	MC_CMD_GET_LINK_OUT_V2_BPX_LINK_OFST 16
6434 #define	MC_CMD_GET_LINK_OUT_V2_BPX_LINK_LBN 2
6435 #define	MC_CMD_GET_LINK_OUT_V2_BPX_LINK_WIDTH 1
6436 #define	MC_CMD_GET_LINK_OUT_V2_PHY_LINK_OFST 16
6437 #define	MC_CMD_GET_LINK_OUT_V2_PHY_LINK_LBN 3
6438 #define	MC_CMD_GET_LINK_OUT_V2_PHY_LINK_WIDTH 1
6439 #define	MC_CMD_GET_LINK_OUT_V2_LINK_FAULT_RX_OFST 16
6440 #define	MC_CMD_GET_LINK_OUT_V2_LINK_FAULT_RX_LBN 6
6441 #define	MC_CMD_GET_LINK_OUT_V2_LINK_FAULT_RX_WIDTH 1
6442 #define	MC_CMD_GET_LINK_OUT_V2_LINK_FAULT_TX_OFST 16
6443 #define	MC_CMD_GET_LINK_OUT_V2_LINK_FAULT_TX_LBN 7
6444 #define	MC_CMD_GET_LINK_OUT_V2_LINK_FAULT_TX_WIDTH 1
6445 #define	MC_CMD_GET_LINK_OUT_V2_MODULE_UP_VALID_OFST 16
6446 #define	MC_CMD_GET_LINK_OUT_V2_MODULE_UP_VALID_LBN 8
6447 #define	MC_CMD_GET_LINK_OUT_V2_MODULE_UP_VALID_WIDTH 1
6448 #define	MC_CMD_GET_LINK_OUT_V2_MODULE_UP_OFST 16
6449 #define	MC_CMD_GET_LINK_OUT_V2_MODULE_UP_LBN 9
6450 #define	MC_CMD_GET_LINK_OUT_V2_MODULE_UP_WIDTH 1
6451 /* This returns the negotiated flow control value. */
6452 #define	MC_CMD_GET_LINK_OUT_V2_FCNTL_OFST 20
6453 #define	MC_CMD_GET_LINK_OUT_V2_FCNTL_LEN 4
6454 /*            Enum values, see field(s): */
6455 /*               MC_CMD_SET_MAC/MC_CMD_SET_MAC_IN/FCNTL */
6456 #define	MC_CMD_GET_LINK_OUT_V2_MAC_FAULT_OFST 24
6457 #define	MC_CMD_GET_LINK_OUT_V2_MAC_FAULT_LEN 4
6458 /*             MC_CMD_MAC_FAULT_XGMII_LOCAL_OFST 24 */
6459 /*             MC_CMD_MAC_FAULT_XGMII_LOCAL_LBN 0 */
6460 /*             MC_CMD_MAC_FAULT_XGMII_LOCAL_WIDTH 1 */
6461 /*             MC_CMD_MAC_FAULT_XGMII_REMOTE_OFST 24 */
6462 /*             MC_CMD_MAC_FAULT_XGMII_REMOTE_LBN 1 */
6463 /*             MC_CMD_MAC_FAULT_XGMII_REMOTE_WIDTH 1 */
6464 /*             MC_CMD_MAC_FAULT_SGMII_REMOTE_OFST 24 */
6465 /*             MC_CMD_MAC_FAULT_SGMII_REMOTE_LBN 2 */
6466 /*             MC_CMD_MAC_FAULT_SGMII_REMOTE_WIDTH 1 */
6467 /*             MC_CMD_MAC_FAULT_PENDING_RECONFIG_OFST 24 */
6468 /*             MC_CMD_MAC_FAULT_PENDING_RECONFIG_LBN 3 */
6469 /*             MC_CMD_MAC_FAULT_PENDING_RECONFIG_WIDTH 1 */
6470 /* True local device capabilities (taking into account currently used PMD/MDI,
6471  * e.g. plugged-in module). In general, subset of
6472  * MC_CMD_GET_PHY_CFG_OUT/SUPPORTED_CAP, but may include extra _FEC_REQUEST
6473  * bits, if the PMD requires FEC. 0 if unknown (e.g. module unplugged). Equal
6474  * to SUPPORTED_CAP for non-pluggable PMDs. Refer to
6475  * MC_CMD_GET_PHY_CFG_OUT/SUPPORTED_CAP for bit definitions.
6476  */
6477 #define	MC_CMD_GET_LINK_OUT_V2_LD_CAP_OFST 28
6478 #define	MC_CMD_GET_LINK_OUT_V2_LD_CAP_LEN 4
6479 /* Auto-negotiation type used on the link */
6480 #define	MC_CMD_GET_LINK_OUT_V2_AN_TYPE_OFST 32
6481 #define	MC_CMD_GET_LINK_OUT_V2_AN_TYPE_LEN 4
6482 /*            Enum values, see field(s): */
6483 /*               AN_TYPE/TYPE */
6484 /* Forward error correction used on the link */
6485 #define	MC_CMD_GET_LINK_OUT_V2_FEC_TYPE_OFST 36
6486 #define	MC_CMD_GET_LINK_OUT_V2_FEC_TYPE_LEN 4
6487 /*            Enum values, see field(s): */
6488 /*               FEC_TYPE/TYPE */
6489 #define	MC_CMD_GET_LINK_OUT_V2_EXT_FLAGS_OFST 40
6490 #define	MC_CMD_GET_LINK_OUT_V2_EXT_FLAGS_LEN 4
6491 #define	MC_CMD_GET_LINK_OUT_V2_PMD_MDI_CONNECTED_OFST 40
6492 #define	MC_CMD_GET_LINK_OUT_V2_PMD_MDI_CONNECTED_LBN 0
6493 #define	MC_CMD_GET_LINK_OUT_V2_PMD_MDI_CONNECTED_WIDTH 1
6494 #define	MC_CMD_GET_LINK_OUT_V2_PMD_READY_OFST 40
6495 #define	MC_CMD_GET_LINK_OUT_V2_PMD_READY_LBN 1
6496 #define	MC_CMD_GET_LINK_OUT_V2_PMD_READY_WIDTH 1
6497 #define	MC_CMD_GET_LINK_OUT_V2_PMD_LINK_UP_OFST 40
6498 #define	MC_CMD_GET_LINK_OUT_V2_PMD_LINK_UP_LBN 2
6499 #define	MC_CMD_GET_LINK_OUT_V2_PMD_LINK_UP_WIDTH 1
6500 #define	MC_CMD_GET_LINK_OUT_V2_PMA_LINK_UP_OFST 40
6501 #define	MC_CMD_GET_LINK_OUT_V2_PMA_LINK_UP_LBN 3
6502 #define	MC_CMD_GET_LINK_OUT_V2_PMA_LINK_UP_WIDTH 1
6503 #define	MC_CMD_GET_LINK_OUT_V2_PCS_LOCK_OFST 40
6504 #define	MC_CMD_GET_LINK_OUT_V2_PCS_LOCK_LBN 4
6505 #define	MC_CMD_GET_LINK_OUT_V2_PCS_LOCK_WIDTH 1
6506 #define	MC_CMD_GET_LINK_OUT_V2_ALIGN_LOCK_OFST 40
6507 #define	MC_CMD_GET_LINK_OUT_V2_ALIGN_LOCK_LBN 5
6508 #define	MC_CMD_GET_LINK_OUT_V2_ALIGN_LOCK_WIDTH 1
6509 #define	MC_CMD_GET_LINK_OUT_V2_HI_BER_OFST 40
6510 #define	MC_CMD_GET_LINK_OUT_V2_HI_BER_LBN 6
6511 #define	MC_CMD_GET_LINK_OUT_V2_HI_BER_WIDTH 1
6512 #define	MC_CMD_GET_LINK_OUT_V2_FEC_LOCK_OFST 40
6513 #define	MC_CMD_GET_LINK_OUT_V2_FEC_LOCK_LBN 7
6514 #define	MC_CMD_GET_LINK_OUT_V2_FEC_LOCK_WIDTH 1
6515 #define	MC_CMD_GET_LINK_OUT_V2_AN_DONE_OFST 40
6516 #define	MC_CMD_GET_LINK_OUT_V2_AN_DONE_LBN 8
6517 #define	MC_CMD_GET_LINK_OUT_V2_AN_DONE_WIDTH 1
6518 #define	MC_CMD_GET_LINK_OUT_V2_PORT_SHUTDOWN_OFST 40
6519 #define	MC_CMD_GET_LINK_OUT_V2_PORT_SHUTDOWN_LBN 9
6520 #define	MC_CMD_GET_LINK_OUT_V2_PORT_SHUTDOWN_WIDTH 1
6521 
6522 
6523 /***********************************/
6524 /* MC_CMD_SET_LINK
6525  * Write the unified MAC/PHY link configuration. Locks required: None. Return
6526  * code: 0, EINVAL, ETIME, EAGAIN
6527  */
6528 #define	MC_CMD_SET_LINK 0x2a
6529 #define	MC_CMD_SET_LINK_MSGSET 0x2a
6530 #undef	MC_CMD_0x2a_PRIVILEGE_CTG
6531 
6532 #define	MC_CMD_0x2a_PRIVILEGE_CTG SRIOV_CTG_LINK
6533 
6534 /* MC_CMD_SET_LINK_IN msgrequest */
6535 #define	MC_CMD_SET_LINK_IN_LEN 16
6536 /* Near-side advertised capabilities. Refer to
6537  * MC_CMD_GET_PHY_CFG_OUT/SUPPORTED_CAP for bit definitions.
6538  */
6539 #define	MC_CMD_SET_LINK_IN_CAP_OFST 0
6540 #define	MC_CMD_SET_LINK_IN_CAP_LEN 4
6541 /* Flags */
6542 #define	MC_CMD_SET_LINK_IN_FLAGS_OFST 4
6543 #define	MC_CMD_SET_LINK_IN_FLAGS_LEN 4
6544 #define	MC_CMD_SET_LINK_IN_LOWPOWER_OFST 4
6545 #define	MC_CMD_SET_LINK_IN_LOWPOWER_LBN 0
6546 #define	MC_CMD_SET_LINK_IN_LOWPOWER_WIDTH 1
6547 #define	MC_CMD_SET_LINK_IN_POWEROFF_OFST 4
6548 #define	MC_CMD_SET_LINK_IN_POWEROFF_LBN 1
6549 #define	MC_CMD_SET_LINK_IN_POWEROFF_WIDTH 1
6550 #define	MC_CMD_SET_LINK_IN_TXDIS_OFST 4
6551 #define	MC_CMD_SET_LINK_IN_TXDIS_LBN 2
6552 #define	MC_CMD_SET_LINK_IN_TXDIS_WIDTH 1
6553 #define	MC_CMD_SET_LINK_IN_LINKDOWN_OFST 4
6554 #define	MC_CMD_SET_LINK_IN_LINKDOWN_LBN 3
6555 #define	MC_CMD_SET_LINK_IN_LINKDOWN_WIDTH 1
6556 /* Loopback mode. */
6557 #define	MC_CMD_SET_LINK_IN_LOOPBACK_MODE_OFST 8
6558 #define	MC_CMD_SET_LINK_IN_LOOPBACK_MODE_LEN 4
6559 /*            Enum values, see field(s): */
6560 /*               MC_CMD_GET_LOOPBACK_MODES/MC_CMD_GET_LOOPBACK_MODES_OUT/100M */
6561 /* A loopback speed of "0" is supported, and means (choose any available
6562  * speed).
6563  */
6564 #define	MC_CMD_SET_LINK_IN_LOOPBACK_SPEED_OFST 12
6565 #define	MC_CMD_SET_LINK_IN_LOOPBACK_SPEED_LEN 4
6566 
6567 /* MC_CMD_SET_LINK_IN_V2 msgrequest: Updated SET_LINK to include sequence
6568  * number to ensure this SET_LINK command corresponds to the latest
6569  * MODULECHANGE event.
6570  */
6571 #define	MC_CMD_SET_LINK_IN_V2_LEN 17
6572 /* Near-side advertised capabilities. Refer to
6573  * MC_CMD_GET_PHY_CFG_OUT/SUPPORTED_CAP for bit definitions.
6574  */
6575 #define	MC_CMD_SET_LINK_IN_V2_CAP_OFST 0
6576 #define	MC_CMD_SET_LINK_IN_V2_CAP_LEN 4
6577 /* Flags */
6578 #define	MC_CMD_SET_LINK_IN_V2_FLAGS_OFST 4
6579 #define	MC_CMD_SET_LINK_IN_V2_FLAGS_LEN 4
6580 #define	MC_CMD_SET_LINK_IN_V2_LOWPOWER_OFST 4
6581 #define	MC_CMD_SET_LINK_IN_V2_LOWPOWER_LBN 0
6582 #define	MC_CMD_SET_LINK_IN_V2_LOWPOWER_WIDTH 1
6583 #define	MC_CMD_SET_LINK_IN_V2_POWEROFF_OFST 4
6584 #define	MC_CMD_SET_LINK_IN_V2_POWEROFF_LBN 1
6585 #define	MC_CMD_SET_LINK_IN_V2_POWEROFF_WIDTH 1
6586 #define	MC_CMD_SET_LINK_IN_V2_TXDIS_OFST 4
6587 #define	MC_CMD_SET_LINK_IN_V2_TXDIS_LBN 2
6588 #define	MC_CMD_SET_LINK_IN_V2_TXDIS_WIDTH 1
6589 #define	MC_CMD_SET_LINK_IN_V2_LINKDOWN_OFST 4
6590 #define	MC_CMD_SET_LINK_IN_V2_LINKDOWN_LBN 3
6591 #define	MC_CMD_SET_LINK_IN_V2_LINKDOWN_WIDTH 1
6592 /* Loopback mode. */
6593 #define	MC_CMD_SET_LINK_IN_V2_LOOPBACK_MODE_OFST 8
6594 #define	MC_CMD_SET_LINK_IN_V2_LOOPBACK_MODE_LEN 4
6595 /*            Enum values, see field(s): */
6596 /*               MC_CMD_GET_LOOPBACK_MODES/MC_CMD_GET_LOOPBACK_MODES_OUT/100M */
6597 /* A loopback speed of "0" is supported, and means (choose any available
6598  * speed).
6599  */
6600 #define	MC_CMD_SET_LINK_IN_V2_LOOPBACK_SPEED_OFST 12
6601 #define	MC_CMD_SET_LINK_IN_V2_LOOPBACK_SPEED_LEN 4
6602 #define	MC_CMD_SET_LINK_IN_V2_MODULE_SEQ_OFST 16
6603 #define	MC_CMD_SET_LINK_IN_V2_MODULE_SEQ_LEN 1
6604 #define	MC_CMD_SET_LINK_IN_V2_MODULE_SEQ_NUMBER_OFST 16
6605 #define	MC_CMD_SET_LINK_IN_V2_MODULE_SEQ_NUMBER_LBN 0
6606 #define	MC_CMD_SET_LINK_IN_V2_MODULE_SEQ_NUMBER_WIDTH 7
6607 #define	MC_CMD_SET_LINK_IN_V2_MODULE_SEQ_IGNORE_OFST 16
6608 #define	MC_CMD_SET_LINK_IN_V2_MODULE_SEQ_IGNORE_LBN 7
6609 #define	MC_CMD_SET_LINK_IN_V2_MODULE_SEQ_IGNORE_WIDTH 1
6610 
6611 /* MC_CMD_SET_LINK_IN_V3 msgrequest */
6612 #define	MC_CMD_SET_LINK_IN_V3_LEN 28
6613 /* Near-side advertised capabilities. Refer to
6614  * MC_CMD_GET_PHY_CFG_OUT/SUPPORTED_CAP for bit definitions.
6615  */
6616 #define	MC_CMD_SET_LINK_IN_V3_CAP_OFST 0
6617 #define	MC_CMD_SET_LINK_IN_V3_CAP_LEN 4
6618 /* Flags */
6619 #define	MC_CMD_SET_LINK_IN_V3_FLAGS_OFST 4
6620 #define	MC_CMD_SET_LINK_IN_V3_FLAGS_LEN 4
6621 #define	MC_CMD_SET_LINK_IN_V3_LOWPOWER_OFST 4
6622 #define	MC_CMD_SET_LINK_IN_V3_LOWPOWER_LBN 0
6623 #define	MC_CMD_SET_LINK_IN_V3_LOWPOWER_WIDTH 1
6624 #define	MC_CMD_SET_LINK_IN_V3_POWEROFF_OFST 4
6625 #define	MC_CMD_SET_LINK_IN_V3_POWEROFF_LBN 1
6626 #define	MC_CMD_SET_LINK_IN_V3_POWEROFF_WIDTH 1
6627 #define	MC_CMD_SET_LINK_IN_V3_TXDIS_OFST 4
6628 #define	MC_CMD_SET_LINK_IN_V3_TXDIS_LBN 2
6629 #define	MC_CMD_SET_LINK_IN_V3_TXDIS_WIDTH 1
6630 #define	MC_CMD_SET_LINK_IN_V3_LINKDOWN_OFST 4
6631 #define	MC_CMD_SET_LINK_IN_V3_LINKDOWN_LBN 3
6632 #define	MC_CMD_SET_LINK_IN_V3_LINKDOWN_WIDTH 1
6633 /* Loopback mode. */
6634 #define	MC_CMD_SET_LINK_IN_V3_LOOPBACK_MODE_OFST 8
6635 #define	MC_CMD_SET_LINK_IN_V3_LOOPBACK_MODE_LEN 4
6636 /*            Enum values, see field(s): */
6637 /*               MC_CMD_GET_LOOPBACK_MODES/MC_CMD_GET_LOOPBACK_MODES_OUT/100M */
6638 /* A loopback speed of "0" is supported, and means (choose any available
6639  * speed).
6640  */
6641 #define	MC_CMD_SET_LINK_IN_V3_LOOPBACK_SPEED_OFST 12
6642 #define	MC_CMD_SET_LINK_IN_V3_LOOPBACK_SPEED_LEN 4
6643 #define	MC_CMD_SET_LINK_IN_V3_MODULE_SEQ_OFST 16
6644 #define	MC_CMD_SET_LINK_IN_V3_MODULE_SEQ_LEN 1
6645 #define	MC_CMD_SET_LINK_IN_V3_MODULE_SEQ_NUMBER_OFST 16
6646 #define	MC_CMD_SET_LINK_IN_V3_MODULE_SEQ_NUMBER_LBN 0
6647 #define	MC_CMD_SET_LINK_IN_V3_MODULE_SEQ_NUMBER_WIDTH 7
6648 #define	MC_CMD_SET_LINK_IN_V3_MODULE_SEQ_IGNORE_OFST 16
6649 #define	MC_CMD_SET_LINK_IN_V3_MODULE_SEQ_IGNORE_LBN 7
6650 #define	MC_CMD_SET_LINK_IN_V3_MODULE_SEQ_IGNORE_WIDTH 1
6651 /* Padding */
6652 #define	MC_CMD_SET_LINK_IN_V3_RESERVED_OFST 17
6653 #define	MC_CMD_SET_LINK_IN_V3_RESERVED_LEN 3
6654 /* Target port to set link state for. Uses MAE_LINK_ENDPOINT_SELECTOR which
6655  * identifies a real or virtual network port by MAE port and link end. See the
6656  * structure definition for more details
6657  */
6658 #define	MC_CMD_SET_LINK_IN_V3_TARGET_OFST 20
6659 #define	MC_CMD_SET_LINK_IN_V3_TARGET_LEN 8
6660 #define	MC_CMD_SET_LINK_IN_V3_TARGET_LO_OFST 20
6661 #define	MC_CMD_SET_LINK_IN_V3_TARGET_LO_LEN 4
6662 #define	MC_CMD_SET_LINK_IN_V3_TARGET_LO_LBN 160
6663 #define	MC_CMD_SET_LINK_IN_V3_TARGET_LO_WIDTH 32
6664 #define	MC_CMD_SET_LINK_IN_V3_TARGET_HI_OFST 24
6665 #define	MC_CMD_SET_LINK_IN_V3_TARGET_HI_LEN 4
6666 #define	MC_CMD_SET_LINK_IN_V3_TARGET_HI_LBN 192
6667 #define	MC_CMD_SET_LINK_IN_V3_TARGET_HI_WIDTH 32
6668 /* See structuredef: MAE_LINK_ENDPOINT_SELECTOR */
6669 #define	MC_CMD_SET_LINK_IN_V3_TARGET_MPORT_SELECTOR_OFST 20
6670 #define	MC_CMD_SET_LINK_IN_V3_TARGET_MPORT_SELECTOR_LEN 4
6671 #define	MC_CMD_SET_LINK_IN_V3_TARGET_MPORT_SELECTOR_FLAT_OFST 20
6672 #define	MC_CMD_SET_LINK_IN_V3_TARGET_MPORT_SELECTOR_FLAT_LEN 4
6673 #define	MC_CMD_SET_LINK_IN_V3_TARGET_MPORT_SELECTOR_TYPE_OFST 23
6674 #define	MC_CMD_SET_LINK_IN_V3_TARGET_MPORT_SELECTOR_TYPE_LEN 1
6675 #define	MC_CMD_SET_LINK_IN_V3_TARGET_MPORT_SELECTOR_MPORT_ID_OFST 20
6676 #define	MC_CMD_SET_LINK_IN_V3_TARGET_MPORT_SELECTOR_MPORT_ID_LEN 3
6677 #define	MC_CMD_SET_LINK_IN_V3_TARGET_MPORT_SELECTOR_PPORT_ID_LBN 160
6678 #define	MC_CMD_SET_LINK_IN_V3_TARGET_MPORT_SELECTOR_PPORT_ID_WIDTH 4
6679 #define	MC_CMD_SET_LINK_IN_V3_TARGET_MPORT_SELECTOR_FUNC_INTF_ID_LBN 180
6680 #define	MC_CMD_SET_LINK_IN_V3_TARGET_MPORT_SELECTOR_FUNC_INTF_ID_WIDTH 4
6681 #define	MC_CMD_SET_LINK_IN_V3_TARGET_MPORT_SELECTOR_FUNC_MH_PF_ID_LBN 176
6682 #define	MC_CMD_SET_LINK_IN_V3_TARGET_MPORT_SELECTOR_FUNC_MH_PF_ID_WIDTH 4
6683 #define	MC_CMD_SET_LINK_IN_V3_TARGET_MPORT_SELECTOR_FUNC_PF_ID_OFST 22
6684 #define	MC_CMD_SET_LINK_IN_V3_TARGET_MPORT_SELECTOR_FUNC_PF_ID_LEN 1
6685 #define	MC_CMD_SET_LINK_IN_V3_TARGET_MPORT_SELECTOR_FUNC_VF_ID_OFST 20
6686 #define	MC_CMD_SET_LINK_IN_V3_TARGET_MPORT_SELECTOR_FUNC_VF_ID_LEN 2
6687 #define	MC_CMD_SET_LINK_IN_V3_TARGET_LINK_END_OFST 24
6688 #define	MC_CMD_SET_LINK_IN_V3_TARGET_LINK_END_LEN 4
6689 #define	MC_CMD_SET_LINK_IN_V3_TARGET_FLAT_OFST 20
6690 #define	MC_CMD_SET_LINK_IN_V3_TARGET_FLAT_LEN 8
6691 #define	MC_CMD_SET_LINK_IN_V3_TARGET_FLAT_LO_OFST 20
6692 #define	MC_CMD_SET_LINK_IN_V3_TARGET_FLAT_LO_LEN 4
6693 #define	MC_CMD_SET_LINK_IN_V3_TARGET_FLAT_LO_LBN 160
6694 #define	MC_CMD_SET_LINK_IN_V3_TARGET_FLAT_LO_WIDTH 32
6695 #define	MC_CMD_SET_LINK_IN_V3_TARGET_FLAT_HI_OFST 24
6696 #define	MC_CMD_SET_LINK_IN_V3_TARGET_FLAT_HI_LEN 4
6697 #define	MC_CMD_SET_LINK_IN_V3_TARGET_FLAT_HI_LBN 192
6698 #define	MC_CMD_SET_LINK_IN_V3_TARGET_FLAT_HI_WIDTH 32
6699 
6700 /* MC_CMD_SET_LINK_OUT msgresponse */
6701 #define	MC_CMD_SET_LINK_OUT_LEN 0
6702 
6703 
6704 /***********************************/
6705 /* MC_CMD_SET_ID_LED
6706  * Set identification LED state. Locks required: None. Return code: 0, EINVAL
6707  */
6708 #define	MC_CMD_SET_ID_LED 0x2b
6709 #define	MC_CMD_SET_ID_LED_MSGSET 0x2b
6710 #undef	MC_CMD_0x2b_PRIVILEGE_CTG
6711 
6712 #define	MC_CMD_0x2b_PRIVILEGE_CTG SRIOV_CTG_LINK
6713 
6714 /* MC_CMD_SET_ID_LED_IN msgrequest */
6715 #define	MC_CMD_SET_ID_LED_IN_LEN 4
6716 /* Set LED state. */
6717 #define	MC_CMD_SET_ID_LED_IN_STATE_OFST 0
6718 #define	MC_CMD_SET_ID_LED_IN_STATE_LEN 4
6719 #define	MC_CMD_LED_OFF 0x0 /* enum */
6720 #define	MC_CMD_LED_ON 0x1 /* enum */
6721 #define	MC_CMD_LED_DEFAULT 0x2 /* enum */
6722 
6723 /* MC_CMD_SET_ID_LED_OUT msgresponse */
6724 #define	MC_CMD_SET_ID_LED_OUT_LEN 0
6725 
6726 
6727 /***********************************/
6728 /* MC_CMD_SET_MAC
6729  * Set MAC configuration. Locks required: None. Return code: 0, EINVAL
6730  */
6731 #define	MC_CMD_SET_MAC 0x2c
6732 #define	MC_CMD_SET_MAC_MSGSET 0x2c
6733 #undef	MC_CMD_0x2c_PRIVILEGE_CTG
6734 
6735 #define	MC_CMD_0x2c_PRIVILEGE_CTG SRIOV_CTG_GENERAL
6736 
6737 /* MC_CMD_SET_MAC_IN msgrequest */
6738 #define	MC_CMD_SET_MAC_IN_LEN 28
6739 /* The MTU is the MTU programmed directly into the XMAC/GMAC (inclusive of
6740  * EtherII, VLAN, bug16011 padding).
6741  */
6742 #define	MC_CMD_SET_MAC_IN_MTU_OFST 0
6743 #define	MC_CMD_SET_MAC_IN_MTU_LEN 4
6744 #define	MC_CMD_SET_MAC_IN_DRAIN_OFST 4
6745 #define	MC_CMD_SET_MAC_IN_DRAIN_LEN 4
6746 #define	MC_CMD_SET_MAC_IN_ADDR_OFST 8
6747 #define	MC_CMD_SET_MAC_IN_ADDR_LEN 8
6748 #define	MC_CMD_SET_MAC_IN_ADDR_LO_OFST 8
6749 #define	MC_CMD_SET_MAC_IN_ADDR_LO_LEN 4
6750 #define	MC_CMD_SET_MAC_IN_ADDR_LO_LBN 64
6751 #define	MC_CMD_SET_MAC_IN_ADDR_LO_WIDTH 32
6752 #define	MC_CMD_SET_MAC_IN_ADDR_HI_OFST 12
6753 #define	MC_CMD_SET_MAC_IN_ADDR_HI_LEN 4
6754 #define	MC_CMD_SET_MAC_IN_ADDR_HI_LBN 96
6755 #define	MC_CMD_SET_MAC_IN_ADDR_HI_WIDTH 32
6756 #define	MC_CMD_SET_MAC_IN_REJECT_OFST 16
6757 #define	MC_CMD_SET_MAC_IN_REJECT_LEN 4
6758 #define	MC_CMD_SET_MAC_IN_REJECT_UNCST_OFST 16
6759 #define	MC_CMD_SET_MAC_IN_REJECT_UNCST_LBN 0
6760 #define	MC_CMD_SET_MAC_IN_REJECT_UNCST_WIDTH 1
6761 #define	MC_CMD_SET_MAC_IN_REJECT_BRDCST_OFST 16
6762 #define	MC_CMD_SET_MAC_IN_REJECT_BRDCST_LBN 1
6763 #define	MC_CMD_SET_MAC_IN_REJECT_BRDCST_WIDTH 1
6764 #define	MC_CMD_SET_MAC_IN_FCNTL_OFST 20
6765 #define	MC_CMD_SET_MAC_IN_FCNTL_LEN 4
6766 /* enum: Flow control is off. */
6767 #define	MC_CMD_FCNTL_OFF 0x0
6768 /* enum: Respond to flow control. */
6769 #define	MC_CMD_FCNTL_RESPOND 0x1
6770 /* enum: Respond to and Issue flow control. */
6771 #define	MC_CMD_FCNTL_BIDIR 0x2
6772 /* enum: Auto neg flow control. */
6773 #define	MC_CMD_FCNTL_AUTO 0x3
6774 /* enum: Priority flow control (eftest builds only). */
6775 #define	MC_CMD_FCNTL_QBB 0x4
6776 /* enum: Issue flow control. */
6777 #define	MC_CMD_FCNTL_GENERATE 0x5
6778 #define	MC_CMD_SET_MAC_IN_FLAGS_OFST 24
6779 #define	MC_CMD_SET_MAC_IN_FLAGS_LEN 4
6780 #define	MC_CMD_SET_MAC_IN_FLAG_INCLUDE_FCS_OFST 24
6781 #define	MC_CMD_SET_MAC_IN_FLAG_INCLUDE_FCS_LBN 0
6782 #define	MC_CMD_SET_MAC_IN_FLAG_INCLUDE_FCS_WIDTH 1
6783 
6784 /* MC_CMD_SET_MAC_EXT_IN msgrequest */
6785 #define	MC_CMD_SET_MAC_EXT_IN_LEN 32
6786 /* The MTU is the MTU programmed directly into the XMAC/GMAC (inclusive of
6787  * EtherII, VLAN, bug16011 padding).
6788  */
6789 #define	MC_CMD_SET_MAC_EXT_IN_MTU_OFST 0
6790 #define	MC_CMD_SET_MAC_EXT_IN_MTU_LEN 4
6791 #define	MC_CMD_SET_MAC_EXT_IN_DRAIN_OFST 4
6792 #define	MC_CMD_SET_MAC_EXT_IN_DRAIN_LEN 4
6793 #define	MC_CMD_SET_MAC_EXT_IN_ADDR_OFST 8
6794 #define	MC_CMD_SET_MAC_EXT_IN_ADDR_LEN 8
6795 #define	MC_CMD_SET_MAC_EXT_IN_ADDR_LO_OFST 8
6796 #define	MC_CMD_SET_MAC_EXT_IN_ADDR_LO_LEN 4
6797 #define	MC_CMD_SET_MAC_EXT_IN_ADDR_LO_LBN 64
6798 #define	MC_CMD_SET_MAC_EXT_IN_ADDR_LO_WIDTH 32
6799 #define	MC_CMD_SET_MAC_EXT_IN_ADDR_HI_OFST 12
6800 #define	MC_CMD_SET_MAC_EXT_IN_ADDR_HI_LEN 4
6801 #define	MC_CMD_SET_MAC_EXT_IN_ADDR_HI_LBN 96
6802 #define	MC_CMD_SET_MAC_EXT_IN_ADDR_HI_WIDTH 32
6803 #define	MC_CMD_SET_MAC_EXT_IN_REJECT_OFST 16
6804 #define	MC_CMD_SET_MAC_EXT_IN_REJECT_LEN 4
6805 #define	MC_CMD_SET_MAC_EXT_IN_REJECT_UNCST_OFST 16
6806 #define	MC_CMD_SET_MAC_EXT_IN_REJECT_UNCST_LBN 0
6807 #define	MC_CMD_SET_MAC_EXT_IN_REJECT_UNCST_WIDTH 1
6808 #define	MC_CMD_SET_MAC_EXT_IN_REJECT_BRDCST_OFST 16
6809 #define	MC_CMD_SET_MAC_EXT_IN_REJECT_BRDCST_LBN 1
6810 #define	MC_CMD_SET_MAC_EXT_IN_REJECT_BRDCST_WIDTH 1
6811 #define	MC_CMD_SET_MAC_EXT_IN_FCNTL_OFST 20
6812 #define	MC_CMD_SET_MAC_EXT_IN_FCNTL_LEN 4
6813 /* enum: Flow control is off. */
6814 /*               MC_CMD_FCNTL_OFF 0x0 */
6815 /* enum: Respond to flow control. */
6816 /*               MC_CMD_FCNTL_RESPOND 0x1 */
6817 /* enum: Respond to and Issue flow control. */
6818 /*               MC_CMD_FCNTL_BIDIR 0x2 */
6819 /* enum: Auto neg flow control. */
6820 /*               MC_CMD_FCNTL_AUTO 0x3 */
6821 /* enum: Priority flow control (eftest builds only). */
6822 /*               MC_CMD_FCNTL_QBB 0x4 */
6823 /* enum: Issue flow control. */
6824 /*               MC_CMD_FCNTL_GENERATE 0x5 */
6825 #define	MC_CMD_SET_MAC_EXT_IN_FLAGS_OFST 24
6826 #define	MC_CMD_SET_MAC_EXT_IN_FLAGS_LEN 4
6827 #define	MC_CMD_SET_MAC_EXT_IN_FLAG_INCLUDE_FCS_OFST 24
6828 #define	MC_CMD_SET_MAC_EXT_IN_FLAG_INCLUDE_FCS_LBN 0
6829 #define	MC_CMD_SET_MAC_EXT_IN_FLAG_INCLUDE_FCS_WIDTH 1
6830 /* Select which parameters to configure. A parameter will only be modified if
6831  * the corresponding control flag is set. If SET_MAC_ENHANCED is not set in
6832  * capabilities then this field is ignored (and all flags are assumed to be
6833  * set).
6834  */
6835 #define	MC_CMD_SET_MAC_EXT_IN_CONTROL_OFST 28
6836 #define	MC_CMD_SET_MAC_EXT_IN_CONTROL_LEN 4
6837 #define	MC_CMD_SET_MAC_EXT_IN_CFG_MTU_OFST 28
6838 #define	MC_CMD_SET_MAC_EXT_IN_CFG_MTU_LBN 0
6839 #define	MC_CMD_SET_MAC_EXT_IN_CFG_MTU_WIDTH 1
6840 #define	MC_CMD_SET_MAC_EXT_IN_CFG_DRAIN_OFST 28
6841 #define	MC_CMD_SET_MAC_EXT_IN_CFG_DRAIN_LBN 1
6842 #define	MC_CMD_SET_MAC_EXT_IN_CFG_DRAIN_WIDTH 1
6843 #define	MC_CMD_SET_MAC_EXT_IN_CFG_REJECT_OFST 28
6844 #define	MC_CMD_SET_MAC_EXT_IN_CFG_REJECT_LBN 2
6845 #define	MC_CMD_SET_MAC_EXT_IN_CFG_REJECT_WIDTH 1
6846 #define	MC_CMD_SET_MAC_EXT_IN_CFG_FCNTL_OFST 28
6847 #define	MC_CMD_SET_MAC_EXT_IN_CFG_FCNTL_LBN 3
6848 #define	MC_CMD_SET_MAC_EXT_IN_CFG_FCNTL_WIDTH 1
6849 #define	MC_CMD_SET_MAC_EXT_IN_CFG_FCS_OFST 28
6850 #define	MC_CMD_SET_MAC_EXT_IN_CFG_FCS_LBN 4
6851 #define	MC_CMD_SET_MAC_EXT_IN_CFG_FCS_WIDTH 1
6852 
6853 /* MC_CMD_SET_MAC_V3_IN msgrequest */
6854 #define	MC_CMD_SET_MAC_V3_IN_LEN 40
6855 /* The MTU is the MTU programmed directly into the XMAC/GMAC (inclusive of
6856  * EtherII, VLAN, bug16011 padding).
6857  */
6858 #define	MC_CMD_SET_MAC_V3_IN_MTU_OFST 0
6859 #define	MC_CMD_SET_MAC_V3_IN_MTU_LEN 4
6860 #define	MC_CMD_SET_MAC_V3_IN_DRAIN_OFST 4
6861 #define	MC_CMD_SET_MAC_V3_IN_DRAIN_LEN 4
6862 #define	MC_CMD_SET_MAC_V3_IN_ADDR_OFST 8
6863 #define	MC_CMD_SET_MAC_V3_IN_ADDR_LEN 8
6864 #define	MC_CMD_SET_MAC_V3_IN_ADDR_LO_OFST 8
6865 #define	MC_CMD_SET_MAC_V3_IN_ADDR_LO_LEN 4
6866 #define	MC_CMD_SET_MAC_V3_IN_ADDR_LO_LBN 64
6867 #define	MC_CMD_SET_MAC_V3_IN_ADDR_LO_WIDTH 32
6868 #define	MC_CMD_SET_MAC_V3_IN_ADDR_HI_OFST 12
6869 #define	MC_CMD_SET_MAC_V3_IN_ADDR_HI_LEN 4
6870 #define	MC_CMD_SET_MAC_V3_IN_ADDR_HI_LBN 96
6871 #define	MC_CMD_SET_MAC_V3_IN_ADDR_HI_WIDTH 32
6872 #define	MC_CMD_SET_MAC_V3_IN_REJECT_OFST 16
6873 #define	MC_CMD_SET_MAC_V3_IN_REJECT_LEN 4
6874 #define	MC_CMD_SET_MAC_V3_IN_REJECT_UNCST_OFST 16
6875 #define	MC_CMD_SET_MAC_V3_IN_REJECT_UNCST_LBN 0
6876 #define	MC_CMD_SET_MAC_V3_IN_REJECT_UNCST_WIDTH 1
6877 #define	MC_CMD_SET_MAC_V3_IN_REJECT_BRDCST_OFST 16
6878 #define	MC_CMD_SET_MAC_V3_IN_REJECT_BRDCST_LBN 1
6879 #define	MC_CMD_SET_MAC_V3_IN_REJECT_BRDCST_WIDTH 1
6880 #define	MC_CMD_SET_MAC_V3_IN_FCNTL_OFST 20
6881 #define	MC_CMD_SET_MAC_V3_IN_FCNTL_LEN 4
6882 /* enum: Flow control is off. */
6883 /*               MC_CMD_FCNTL_OFF 0x0 */
6884 /* enum: Respond to flow control. */
6885 /*               MC_CMD_FCNTL_RESPOND 0x1 */
6886 /* enum: Respond to and Issue flow control. */
6887 /*               MC_CMD_FCNTL_BIDIR 0x2 */
6888 /* enum: Auto neg flow control. */
6889 /*               MC_CMD_FCNTL_AUTO 0x3 */
6890 /* enum: Priority flow control (eftest builds only). */
6891 /*               MC_CMD_FCNTL_QBB 0x4 */
6892 /* enum: Issue flow control. */
6893 /*               MC_CMD_FCNTL_GENERATE 0x5 */
6894 #define	MC_CMD_SET_MAC_V3_IN_FLAGS_OFST 24
6895 #define	MC_CMD_SET_MAC_V3_IN_FLAGS_LEN 4
6896 #define	MC_CMD_SET_MAC_V3_IN_FLAG_INCLUDE_FCS_OFST 24
6897 #define	MC_CMD_SET_MAC_V3_IN_FLAG_INCLUDE_FCS_LBN 0
6898 #define	MC_CMD_SET_MAC_V3_IN_FLAG_INCLUDE_FCS_WIDTH 1
6899 /* Select which parameters to configure. A parameter will only be modified if
6900  * the corresponding control flag is set. If SET_MAC_ENHANCED is not set in
6901  * capabilities then this field is ignored (and all flags are assumed to be
6902  * set).
6903  */
6904 #define	MC_CMD_SET_MAC_V3_IN_CONTROL_OFST 28
6905 #define	MC_CMD_SET_MAC_V3_IN_CONTROL_LEN 4
6906 #define	MC_CMD_SET_MAC_V3_IN_CFG_MTU_OFST 28
6907 #define	MC_CMD_SET_MAC_V3_IN_CFG_MTU_LBN 0
6908 #define	MC_CMD_SET_MAC_V3_IN_CFG_MTU_WIDTH 1
6909 #define	MC_CMD_SET_MAC_V3_IN_CFG_DRAIN_OFST 28
6910 #define	MC_CMD_SET_MAC_V3_IN_CFG_DRAIN_LBN 1
6911 #define	MC_CMD_SET_MAC_V3_IN_CFG_DRAIN_WIDTH 1
6912 #define	MC_CMD_SET_MAC_V3_IN_CFG_REJECT_OFST 28
6913 #define	MC_CMD_SET_MAC_V3_IN_CFG_REJECT_LBN 2
6914 #define	MC_CMD_SET_MAC_V3_IN_CFG_REJECT_WIDTH 1
6915 #define	MC_CMD_SET_MAC_V3_IN_CFG_FCNTL_OFST 28
6916 #define	MC_CMD_SET_MAC_V3_IN_CFG_FCNTL_LBN 3
6917 #define	MC_CMD_SET_MAC_V3_IN_CFG_FCNTL_WIDTH 1
6918 #define	MC_CMD_SET_MAC_V3_IN_CFG_FCS_OFST 28
6919 #define	MC_CMD_SET_MAC_V3_IN_CFG_FCS_LBN 4
6920 #define	MC_CMD_SET_MAC_V3_IN_CFG_FCS_WIDTH 1
6921 /* Target port to set mac state for. Uses MAE_LINK_ENDPOINT_SELECTOR which
6922  * identifies a real or virtual network port by MAE port and link end. See the
6923  * structure definition for more details
6924  */
6925 #define	MC_CMD_SET_MAC_V3_IN_TARGET_OFST 32
6926 #define	MC_CMD_SET_MAC_V3_IN_TARGET_LEN 8
6927 #define	MC_CMD_SET_MAC_V3_IN_TARGET_LO_OFST 32
6928 #define	MC_CMD_SET_MAC_V3_IN_TARGET_LO_LEN 4
6929 #define	MC_CMD_SET_MAC_V3_IN_TARGET_LO_LBN 256
6930 #define	MC_CMD_SET_MAC_V3_IN_TARGET_LO_WIDTH 32
6931 #define	MC_CMD_SET_MAC_V3_IN_TARGET_HI_OFST 36
6932 #define	MC_CMD_SET_MAC_V3_IN_TARGET_HI_LEN 4
6933 #define	MC_CMD_SET_MAC_V3_IN_TARGET_HI_LBN 288
6934 #define	MC_CMD_SET_MAC_V3_IN_TARGET_HI_WIDTH 32
6935 /* See structuredef: MAE_LINK_ENDPOINT_SELECTOR */
6936 #define	MC_CMD_SET_MAC_V3_IN_TARGET_MPORT_SELECTOR_OFST 32
6937 #define	MC_CMD_SET_MAC_V3_IN_TARGET_MPORT_SELECTOR_LEN 4
6938 #define	MC_CMD_SET_MAC_V3_IN_TARGET_MPORT_SELECTOR_FLAT_OFST 32
6939 #define	MC_CMD_SET_MAC_V3_IN_TARGET_MPORT_SELECTOR_FLAT_LEN 4
6940 #define	MC_CMD_SET_MAC_V3_IN_TARGET_MPORT_SELECTOR_TYPE_OFST 35
6941 #define	MC_CMD_SET_MAC_V3_IN_TARGET_MPORT_SELECTOR_TYPE_LEN 1
6942 #define	MC_CMD_SET_MAC_V3_IN_TARGET_MPORT_SELECTOR_MPORT_ID_OFST 32
6943 #define	MC_CMD_SET_MAC_V3_IN_TARGET_MPORT_SELECTOR_MPORT_ID_LEN 3
6944 #define	MC_CMD_SET_MAC_V3_IN_TARGET_MPORT_SELECTOR_PPORT_ID_LBN 256
6945 #define	MC_CMD_SET_MAC_V3_IN_TARGET_MPORT_SELECTOR_PPORT_ID_WIDTH 4
6946 #define	MC_CMD_SET_MAC_V3_IN_TARGET_MPORT_SELECTOR_FUNC_INTF_ID_LBN 276
6947 #define	MC_CMD_SET_MAC_V3_IN_TARGET_MPORT_SELECTOR_FUNC_INTF_ID_WIDTH 4
6948 #define	MC_CMD_SET_MAC_V3_IN_TARGET_MPORT_SELECTOR_FUNC_MH_PF_ID_LBN 272
6949 #define	MC_CMD_SET_MAC_V3_IN_TARGET_MPORT_SELECTOR_FUNC_MH_PF_ID_WIDTH 4
6950 #define	MC_CMD_SET_MAC_V3_IN_TARGET_MPORT_SELECTOR_FUNC_PF_ID_OFST 34
6951 #define	MC_CMD_SET_MAC_V3_IN_TARGET_MPORT_SELECTOR_FUNC_PF_ID_LEN 1
6952 #define	MC_CMD_SET_MAC_V3_IN_TARGET_MPORT_SELECTOR_FUNC_VF_ID_OFST 32
6953 #define	MC_CMD_SET_MAC_V3_IN_TARGET_MPORT_SELECTOR_FUNC_VF_ID_LEN 2
6954 #define	MC_CMD_SET_MAC_V3_IN_TARGET_LINK_END_OFST 36
6955 #define	MC_CMD_SET_MAC_V3_IN_TARGET_LINK_END_LEN 4
6956 #define	MC_CMD_SET_MAC_V3_IN_TARGET_FLAT_OFST 32
6957 #define	MC_CMD_SET_MAC_V3_IN_TARGET_FLAT_LEN 8
6958 #define	MC_CMD_SET_MAC_V3_IN_TARGET_FLAT_LO_OFST 32
6959 #define	MC_CMD_SET_MAC_V3_IN_TARGET_FLAT_LO_LEN 4
6960 #define	MC_CMD_SET_MAC_V3_IN_TARGET_FLAT_LO_LBN 256
6961 #define	MC_CMD_SET_MAC_V3_IN_TARGET_FLAT_LO_WIDTH 32
6962 #define	MC_CMD_SET_MAC_V3_IN_TARGET_FLAT_HI_OFST 36
6963 #define	MC_CMD_SET_MAC_V3_IN_TARGET_FLAT_HI_LEN 4
6964 #define	MC_CMD_SET_MAC_V3_IN_TARGET_FLAT_HI_LBN 288
6965 #define	MC_CMD_SET_MAC_V3_IN_TARGET_FLAT_HI_WIDTH 32
6966 
6967 /* MC_CMD_SET_MAC_OUT msgresponse */
6968 #define	MC_CMD_SET_MAC_OUT_LEN 0
6969 
6970 /* MC_CMD_SET_MAC_V2_OUT msgresponse */
6971 #define	MC_CMD_SET_MAC_V2_OUT_LEN 4
6972 /* MTU as configured after processing the request. See comment at
6973  * MC_CMD_SET_MAC_IN/MTU. To query MTU without doing any changes, set CONTROL
6974  * to 0.
6975  */
6976 #define	MC_CMD_SET_MAC_V2_OUT_MTU_OFST 0
6977 #define	MC_CMD_SET_MAC_V2_OUT_MTU_LEN 4
6978 
6979 
6980 /***********************************/
6981 /* MC_CMD_PHY_STATS
6982  * Get generic PHY statistics. This call returns the statistics for a generic
6983  * PHY in a sparse array (indexed by the enumerate). Each value is represented
6984  * by a 32bit number. If the DMA_ADDR is 0, then no DMA is performed, and the
6985  * statistics may be read from the message response. If DMA_ADDR != 0, then the
6986  * statistics are dmad to that (page-aligned location). Locks required: None.
6987  * Returns: 0, ETIME
6988  */
6989 #define	MC_CMD_PHY_STATS 0x2d
6990 #define	MC_CMD_PHY_STATS_MSGSET 0x2d
6991 #undef	MC_CMD_0x2d_PRIVILEGE_CTG
6992 
6993 #define	MC_CMD_0x2d_PRIVILEGE_CTG SRIOV_CTG_LINK
6994 
6995 /* MC_CMD_PHY_STATS_IN msgrequest */
6996 #define	MC_CMD_PHY_STATS_IN_LEN 8
6997 /* ??? */
6998 #define	MC_CMD_PHY_STATS_IN_DMA_ADDR_OFST 0
6999 #define	MC_CMD_PHY_STATS_IN_DMA_ADDR_LEN 8
7000 #define	MC_CMD_PHY_STATS_IN_DMA_ADDR_LO_OFST 0
7001 #define	MC_CMD_PHY_STATS_IN_DMA_ADDR_LO_LEN 4
7002 #define	MC_CMD_PHY_STATS_IN_DMA_ADDR_LO_LBN 0
7003 #define	MC_CMD_PHY_STATS_IN_DMA_ADDR_LO_WIDTH 32
7004 #define	MC_CMD_PHY_STATS_IN_DMA_ADDR_HI_OFST 4
7005 #define	MC_CMD_PHY_STATS_IN_DMA_ADDR_HI_LEN 4
7006 #define	MC_CMD_PHY_STATS_IN_DMA_ADDR_HI_LBN 32
7007 #define	MC_CMD_PHY_STATS_IN_DMA_ADDR_HI_WIDTH 32
7008 
7009 /* MC_CMD_PHY_STATS_OUT_DMA msgresponse */
7010 #define	MC_CMD_PHY_STATS_OUT_DMA_LEN 0
7011 
7012 /* MC_CMD_PHY_STATS_OUT_NO_DMA msgresponse */
7013 #define	MC_CMD_PHY_STATS_OUT_NO_DMA_LEN (((MC_CMD_PHY_NSTATS*32))>>3)
7014 #define	MC_CMD_PHY_STATS_OUT_NO_DMA_STATISTICS_OFST 0
7015 #define	MC_CMD_PHY_STATS_OUT_NO_DMA_STATISTICS_LEN 4
7016 #define	MC_CMD_PHY_STATS_OUT_NO_DMA_STATISTICS_NUM MC_CMD_PHY_NSTATS
7017 /* enum: OUI. */
7018 #define	MC_CMD_OUI 0x0
7019 /* enum: PMA-PMD Link Up. */
7020 #define	MC_CMD_PMA_PMD_LINK_UP 0x1
7021 /* enum: PMA-PMD RX Fault. */
7022 #define	MC_CMD_PMA_PMD_RX_FAULT 0x2
7023 /* enum: PMA-PMD TX Fault. */
7024 #define	MC_CMD_PMA_PMD_TX_FAULT 0x3
7025 /* enum: PMA-PMD Signal */
7026 #define	MC_CMD_PMA_PMD_SIGNAL 0x4
7027 /* enum: PMA-PMD SNR A. */
7028 #define	MC_CMD_PMA_PMD_SNR_A 0x5
7029 /* enum: PMA-PMD SNR B. */
7030 #define	MC_CMD_PMA_PMD_SNR_B 0x6
7031 /* enum: PMA-PMD SNR C. */
7032 #define	MC_CMD_PMA_PMD_SNR_C 0x7
7033 /* enum: PMA-PMD SNR D. */
7034 #define	MC_CMD_PMA_PMD_SNR_D 0x8
7035 /* enum: PCS Link Up. */
7036 #define	MC_CMD_PCS_LINK_UP 0x9
7037 /* enum: PCS RX Fault. */
7038 #define	MC_CMD_PCS_RX_FAULT 0xa
7039 /* enum: PCS TX Fault. */
7040 #define	MC_CMD_PCS_TX_FAULT 0xb
7041 /* enum: PCS BER. */
7042 #define	MC_CMD_PCS_BER 0xc
7043 /* enum: PCS Block Errors. */
7044 #define	MC_CMD_PCS_BLOCK_ERRORS 0xd
7045 /* enum: PhyXS Link Up. */
7046 #define	MC_CMD_PHYXS_LINK_UP 0xe
7047 /* enum: PhyXS RX Fault. */
7048 #define	MC_CMD_PHYXS_RX_FAULT 0xf
7049 /* enum: PhyXS TX Fault. */
7050 #define	MC_CMD_PHYXS_TX_FAULT 0x10
7051 /* enum: PhyXS Align. */
7052 #define	MC_CMD_PHYXS_ALIGN 0x11
7053 /* enum: PhyXS Sync. */
7054 #define	MC_CMD_PHYXS_SYNC 0x12
7055 /* enum: AN link-up. */
7056 #define	MC_CMD_AN_LINK_UP 0x13
7057 /* enum: AN Complete. */
7058 #define	MC_CMD_AN_COMPLETE 0x14
7059 /* enum: AN 10GBaseT Status. */
7060 #define	MC_CMD_AN_10GBT_STATUS 0x15
7061 /* enum: Clause 22 Link-Up. */
7062 #define	MC_CMD_CL22_LINK_UP 0x16
7063 /* enum: (Last entry) */
7064 #define	MC_CMD_PHY_NSTATS 0x17
7065 
7066 
7067 /***********************************/
7068 /* MC_CMD_MAC_STATS
7069  * Get generic MAC statistics. This call returns unified statistics maintained
7070  * by the MC as it switches between the GMAC and XMAC. The MC will write out
7071  * all supported stats. The driver should zero initialise the buffer to
7072  * guarantee consistent results. If the DMA_ADDR is 0, then no DMA is
7073  * performed, and the statistics may be read from the message response. If
7074  * DMA_ADDR != 0, then the statistics are dmad to that (page-aligned location).
7075  * Locks required: None. The PERIODIC_CLEAR option is not used and now has no
7076  * effect. Returns: 0, ETIME
7077  */
7078 #define	MC_CMD_MAC_STATS 0x2e
7079 #define	MC_CMD_MAC_STATS_MSGSET 0x2e
7080 #undef	MC_CMD_0x2e_PRIVILEGE_CTG
7081 
7082 #define	MC_CMD_0x2e_PRIVILEGE_CTG SRIOV_CTG_GENERAL
7083 
7084 /* MC_CMD_MAC_STATS_IN msgrequest */
7085 #define	MC_CMD_MAC_STATS_IN_LEN 20
7086 /* ??? */
7087 #define	MC_CMD_MAC_STATS_IN_DMA_ADDR_OFST 0
7088 #define	MC_CMD_MAC_STATS_IN_DMA_ADDR_LEN 8
7089 #define	MC_CMD_MAC_STATS_IN_DMA_ADDR_LO_OFST 0
7090 #define	MC_CMD_MAC_STATS_IN_DMA_ADDR_LO_LEN 4
7091 #define	MC_CMD_MAC_STATS_IN_DMA_ADDR_LO_LBN 0
7092 #define	MC_CMD_MAC_STATS_IN_DMA_ADDR_LO_WIDTH 32
7093 #define	MC_CMD_MAC_STATS_IN_DMA_ADDR_HI_OFST 4
7094 #define	MC_CMD_MAC_STATS_IN_DMA_ADDR_HI_LEN 4
7095 #define	MC_CMD_MAC_STATS_IN_DMA_ADDR_HI_LBN 32
7096 #define	MC_CMD_MAC_STATS_IN_DMA_ADDR_HI_WIDTH 32
7097 #define	MC_CMD_MAC_STATS_IN_CMD_OFST 8
7098 #define	MC_CMD_MAC_STATS_IN_CMD_LEN 4
7099 #define	MC_CMD_MAC_STATS_IN_DMA_OFST 8
7100 #define	MC_CMD_MAC_STATS_IN_DMA_LBN 0
7101 #define	MC_CMD_MAC_STATS_IN_DMA_WIDTH 1
7102 #define	MC_CMD_MAC_STATS_IN_CLEAR_OFST 8
7103 #define	MC_CMD_MAC_STATS_IN_CLEAR_LBN 1
7104 #define	MC_CMD_MAC_STATS_IN_CLEAR_WIDTH 1
7105 #define	MC_CMD_MAC_STATS_IN_PERIODIC_CHANGE_OFST 8
7106 #define	MC_CMD_MAC_STATS_IN_PERIODIC_CHANGE_LBN 2
7107 #define	MC_CMD_MAC_STATS_IN_PERIODIC_CHANGE_WIDTH 1
7108 #define	MC_CMD_MAC_STATS_IN_PERIODIC_ENABLE_OFST 8
7109 #define	MC_CMD_MAC_STATS_IN_PERIODIC_ENABLE_LBN 3
7110 #define	MC_CMD_MAC_STATS_IN_PERIODIC_ENABLE_WIDTH 1
7111 #define	MC_CMD_MAC_STATS_IN_PERIODIC_CLEAR_OFST 8
7112 #define	MC_CMD_MAC_STATS_IN_PERIODIC_CLEAR_LBN 4
7113 #define	MC_CMD_MAC_STATS_IN_PERIODIC_CLEAR_WIDTH 1
7114 #define	MC_CMD_MAC_STATS_IN_PERIODIC_NOEVENT_OFST 8
7115 #define	MC_CMD_MAC_STATS_IN_PERIODIC_NOEVENT_LBN 5
7116 #define	MC_CMD_MAC_STATS_IN_PERIODIC_NOEVENT_WIDTH 1
7117 #define	MC_CMD_MAC_STATS_IN_PERIOD_MS_OFST 8
7118 #define	MC_CMD_MAC_STATS_IN_PERIOD_MS_LBN 16
7119 #define	MC_CMD_MAC_STATS_IN_PERIOD_MS_WIDTH 16
7120 /* DMA length. Should be set to MAC_STATS_NUM_STATS * sizeof(uint64_t), as
7121  * returned by MC_CMD_GET_CAPABILITIES_V4_OUT. For legacy firmware not
7122  * supporting MC_CMD_GET_CAPABILITIES_V4_OUT, DMA_LEN should be set to
7123  * MC_CMD_MAC_NSTATS * sizeof(uint64_t)
7124  */
7125 #define	MC_CMD_MAC_STATS_IN_DMA_LEN_OFST 12
7126 #define	MC_CMD_MAC_STATS_IN_DMA_LEN_LEN 4
7127 /* port id so vadapter stats can be provided */
7128 #define	MC_CMD_MAC_STATS_IN_PORT_ID_OFST 16
7129 #define	MC_CMD_MAC_STATS_IN_PORT_ID_LEN 4
7130 
7131 /* MC_CMD_MAC_STATS_V2_IN msgrequest */
7132 #define	MC_CMD_MAC_STATS_V2_IN_LEN 28
7133 /* ??? */
7134 #define	MC_CMD_MAC_STATS_V2_IN_DMA_ADDR_OFST 0
7135 #define	MC_CMD_MAC_STATS_V2_IN_DMA_ADDR_LEN 8
7136 #define	MC_CMD_MAC_STATS_V2_IN_DMA_ADDR_LO_OFST 0
7137 #define	MC_CMD_MAC_STATS_V2_IN_DMA_ADDR_LO_LEN 4
7138 #define	MC_CMD_MAC_STATS_V2_IN_DMA_ADDR_LO_LBN 0
7139 #define	MC_CMD_MAC_STATS_V2_IN_DMA_ADDR_LO_WIDTH 32
7140 #define	MC_CMD_MAC_STATS_V2_IN_DMA_ADDR_HI_OFST 4
7141 #define	MC_CMD_MAC_STATS_V2_IN_DMA_ADDR_HI_LEN 4
7142 #define	MC_CMD_MAC_STATS_V2_IN_DMA_ADDR_HI_LBN 32
7143 #define	MC_CMD_MAC_STATS_V2_IN_DMA_ADDR_HI_WIDTH 32
7144 #define	MC_CMD_MAC_STATS_V2_IN_CMD_OFST 8
7145 #define	MC_CMD_MAC_STATS_V2_IN_CMD_LEN 4
7146 #define	MC_CMD_MAC_STATS_V2_IN_DMA_OFST 8
7147 #define	MC_CMD_MAC_STATS_V2_IN_DMA_LBN 0
7148 #define	MC_CMD_MAC_STATS_V2_IN_DMA_WIDTH 1
7149 #define	MC_CMD_MAC_STATS_V2_IN_CLEAR_OFST 8
7150 #define	MC_CMD_MAC_STATS_V2_IN_CLEAR_LBN 1
7151 #define	MC_CMD_MAC_STATS_V2_IN_CLEAR_WIDTH 1
7152 #define	MC_CMD_MAC_STATS_V2_IN_PERIODIC_CHANGE_OFST 8
7153 #define	MC_CMD_MAC_STATS_V2_IN_PERIODIC_CHANGE_LBN 2
7154 #define	MC_CMD_MAC_STATS_V2_IN_PERIODIC_CHANGE_WIDTH 1
7155 #define	MC_CMD_MAC_STATS_V2_IN_PERIODIC_ENABLE_OFST 8
7156 #define	MC_CMD_MAC_STATS_V2_IN_PERIODIC_ENABLE_LBN 3
7157 #define	MC_CMD_MAC_STATS_V2_IN_PERIODIC_ENABLE_WIDTH 1
7158 #define	MC_CMD_MAC_STATS_V2_IN_PERIODIC_CLEAR_OFST 8
7159 #define	MC_CMD_MAC_STATS_V2_IN_PERIODIC_CLEAR_LBN 4
7160 #define	MC_CMD_MAC_STATS_V2_IN_PERIODIC_CLEAR_WIDTH 1
7161 #define	MC_CMD_MAC_STATS_V2_IN_PERIODIC_NOEVENT_OFST 8
7162 #define	MC_CMD_MAC_STATS_V2_IN_PERIODIC_NOEVENT_LBN 5
7163 #define	MC_CMD_MAC_STATS_V2_IN_PERIODIC_NOEVENT_WIDTH 1
7164 #define	MC_CMD_MAC_STATS_V2_IN_PERIOD_MS_OFST 8
7165 #define	MC_CMD_MAC_STATS_V2_IN_PERIOD_MS_LBN 16
7166 #define	MC_CMD_MAC_STATS_V2_IN_PERIOD_MS_WIDTH 16
7167 /* DMA length. Should be set to MAC_STATS_NUM_STATS * sizeof(uint64_t), as
7168  * returned by MC_CMD_GET_CAPABILITIES_V4_OUT. For legacy firmware not
7169  * supporting MC_CMD_GET_CAPABILITIES_V4_OUT, DMA_LEN should be set to
7170  * MC_CMD_MAC_NSTATS * sizeof(uint64_t)
7171  */
7172 #define	MC_CMD_MAC_STATS_V2_IN_DMA_LEN_OFST 12
7173 #define	MC_CMD_MAC_STATS_V2_IN_DMA_LEN_LEN 4
7174 /* port id so vadapter stats can be provided */
7175 #define	MC_CMD_MAC_STATS_V2_IN_PORT_ID_OFST 16
7176 #define	MC_CMD_MAC_STATS_V2_IN_PORT_ID_LEN 4
7177 /* Target port to request statistics for. Uses MAE_LINK_ENDPOINT_SELECTOR which
7178  * identifies a real or virtual network port by MAE port and link end. See the
7179  * structure definition for more details
7180  */
7181 #define	MC_CMD_MAC_STATS_V2_IN_TARGET_OFST 20
7182 #define	MC_CMD_MAC_STATS_V2_IN_TARGET_LEN 8
7183 #define	MC_CMD_MAC_STATS_V2_IN_TARGET_LO_OFST 20
7184 #define	MC_CMD_MAC_STATS_V2_IN_TARGET_LO_LEN 4
7185 #define	MC_CMD_MAC_STATS_V2_IN_TARGET_LO_LBN 160
7186 #define	MC_CMD_MAC_STATS_V2_IN_TARGET_LO_WIDTH 32
7187 #define	MC_CMD_MAC_STATS_V2_IN_TARGET_HI_OFST 24
7188 #define	MC_CMD_MAC_STATS_V2_IN_TARGET_HI_LEN 4
7189 #define	MC_CMD_MAC_STATS_V2_IN_TARGET_HI_LBN 192
7190 #define	MC_CMD_MAC_STATS_V2_IN_TARGET_HI_WIDTH 32
7191 /* See structuredef: MAE_LINK_ENDPOINT_SELECTOR */
7192 #define	MC_CMD_MAC_STATS_V2_IN_TARGET_MPORT_SELECTOR_OFST 20
7193 #define	MC_CMD_MAC_STATS_V2_IN_TARGET_MPORT_SELECTOR_LEN 4
7194 #define	MC_CMD_MAC_STATS_V2_IN_TARGET_MPORT_SELECTOR_FLAT_OFST 20
7195 #define	MC_CMD_MAC_STATS_V2_IN_TARGET_MPORT_SELECTOR_FLAT_LEN 4
7196 #define	MC_CMD_MAC_STATS_V2_IN_TARGET_MPORT_SELECTOR_TYPE_OFST 23
7197 #define	MC_CMD_MAC_STATS_V2_IN_TARGET_MPORT_SELECTOR_TYPE_LEN 1
7198 #define	MC_CMD_MAC_STATS_V2_IN_TARGET_MPORT_SELECTOR_MPORT_ID_OFST 20
7199 #define	MC_CMD_MAC_STATS_V2_IN_TARGET_MPORT_SELECTOR_MPORT_ID_LEN 3
7200 #define	MC_CMD_MAC_STATS_V2_IN_TARGET_MPORT_SELECTOR_PPORT_ID_LBN 160
7201 #define	MC_CMD_MAC_STATS_V2_IN_TARGET_MPORT_SELECTOR_PPORT_ID_WIDTH 4
7202 #define	MC_CMD_MAC_STATS_V2_IN_TARGET_MPORT_SELECTOR_FUNC_INTF_ID_LBN 180
7203 #define	MC_CMD_MAC_STATS_V2_IN_TARGET_MPORT_SELECTOR_FUNC_INTF_ID_WIDTH 4
7204 #define	MC_CMD_MAC_STATS_V2_IN_TARGET_MPORT_SELECTOR_FUNC_MH_PF_ID_LBN 176
7205 #define	MC_CMD_MAC_STATS_V2_IN_TARGET_MPORT_SELECTOR_FUNC_MH_PF_ID_WIDTH 4
7206 #define	MC_CMD_MAC_STATS_V2_IN_TARGET_MPORT_SELECTOR_FUNC_PF_ID_OFST 22
7207 #define	MC_CMD_MAC_STATS_V2_IN_TARGET_MPORT_SELECTOR_FUNC_PF_ID_LEN 1
7208 #define	MC_CMD_MAC_STATS_V2_IN_TARGET_MPORT_SELECTOR_FUNC_VF_ID_OFST 20
7209 #define	MC_CMD_MAC_STATS_V2_IN_TARGET_MPORT_SELECTOR_FUNC_VF_ID_LEN 2
7210 #define	MC_CMD_MAC_STATS_V2_IN_TARGET_LINK_END_OFST 24
7211 #define	MC_CMD_MAC_STATS_V2_IN_TARGET_LINK_END_LEN 4
7212 #define	MC_CMD_MAC_STATS_V2_IN_TARGET_FLAT_OFST 20
7213 #define	MC_CMD_MAC_STATS_V2_IN_TARGET_FLAT_LEN 8
7214 #define	MC_CMD_MAC_STATS_V2_IN_TARGET_FLAT_LO_OFST 20
7215 #define	MC_CMD_MAC_STATS_V2_IN_TARGET_FLAT_LO_LEN 4
7216 #define	MC_CMD_MAC_STATS_V2_IN_TARGET_FLAT_LO_LBN 160
7217 #define	MC_CMD_MAC_STATS_V2_IN_TARGET_FLAT_LO_WIDTH 32
7218 #define	MC_CMD_MAC_STATS_V2_IN_TARGET_FLAT_HI_OFST 24
7219 #define	MC_CMD_MAC_STATS_V2_IN_TARGET_FLAT_HI_LEN 4
7220 #define	MC_CMD_MAC_STATS_V2_IN_TARGET_FLAT_HI_LBN 192
7221 #define	MC_CMD_MAC_STATS_V2_IN_TARGET_FLAT_HI_WIDTH 32
7222 
7223 /* MC_CMD_MAC_STATS_OUT_DMA msgresponse */
7224 #define	MC_CMD_MAC_STATS_OUT_DMA_LEN 0
7225 
7226 /* MC_CMD_MAC_STATS_OUT_NO_DMA msgresponse */
7227 #define	MC_CMD_MAC_STATS_OUT_NO_DMA_LEN (((MC_CMD_MAC_NSTATS*64))>>3)
7228 #define	MC_CMD_MAC_STATS_OUT_NO_DMA_STATISTICS_OFST 0
7229 #define	MC_CMD_MAC_STATS_OUT_NO_DMA_STATISTICS_LEN 8
7230 #define	MC_CMD_MAC_STATS_OUT_NO_DMA_STATISTICS_LO_OFST 0
7231 #define	MC_CMD_MAC_STATS_OUT_NO_DMA_STATISTICS_LO_LEN 4
7232 #define	MC_CMD_MAC_STATS_OUT_NO_DMA_STATISTICS_LO_LBN 0
7233 #define	MC_CMD_MAC_STATS_OUT_NO_DMA_STATISTICS_LO_WIDTH 32
7234 #define	MC_CMD_MAC_STATS_OUT_NO_DMA_STATISTICS_HI_OFST 4
7235 #define	MC_CMD_MAC_STATS_OUT_NO_DMA_STATISTICS_HI_LEN 4
7236 #define	MC_CMD_MAC_STATS_OUT_NO_DMA_STATISTICS_HI_LBN 32
7237 #define	MC_CMD_MAC_STATS_OUT_NO_DMA_STATISTICS_HI_WIDTH 32
7238 #define	MC_CMD_MAC_STATS_OUT_NO_DMA_STATISTICS_NUM MC_CMD_MAC_NSTATS
7239 /* enum property: index */
7240 #define	MC_CMD_MAC_GENERATION_START 0x0 /* enum */
7241 #define	MC_CMD_MAC_DMABUF_START 0x1 /* enum */
7242 #define	MC_CMD_MAC_TX_PKTS 0x1 /* enum */
7243 #define	MC_CMD_MAC_TX_PAUSE_PKTS 0x2 /* enum */
7244 #define	MC_CMD_MAC_TX_CONTROL_PKTS 0x3 /* enum */
7245 #define	MC_CMD_MAC_TX_UNICAST_PKTS 0x4 /* enum */
7246 #define	MC_CMD_MAC_TX_MULTICAST_PKTS 0x5 /* enum */
7247 #define	MC_CMD_MAC_TX_BROADCAST_PKTS 0x6 /* enum */
7248 #define	MC_CMD_MAC_TX_BYTES 0x7 /* enum */
7249 #define	MC_CMD_MAC_TX_BAD_BYTES 0x8 /* enum */
7250 #define	MC_CMD_MAC_TX_LT64_PKTS 0x9 /* enum */
7251 #define	MC_CMD_MAC_TX_64_PKTS 0xa /* enum */
7252 #define	MC_CMD_MAC_TX_65_TO_127_PKTS 0xb /* enum */
7253 #define	MC_CMD_MAC_TX_128_TO_255_PKTS 0xc /* enum */
7254 #define	MC_CMD_MAC_TX_256_TO_511_PKTS 0xd /* enum */
7255 #define	MC_CMD_MAC_TX_512_TO_1023_PKTS 0xe /* enum */
7256 #define	MC_CMD_MAC_TX_1024_TO_15XX_PKTS 0xf /* enum */
7257 #define	MC_CMD_MAC_TX_15XX_TO_JUMBO_PKTS 0x10 /* enum */
7258 #define	MC_CMD_MAC_TX_GTJUMBO_PKTS 0x11 /* enum */
7259 #define	MC_CMD_MAC_TX_BAD_FCS_PKTS 0x12 /* enum */
7260 #define	MC_CMD_MAC_TX_SINGLE_COLLISION_PKTS 0x13 /* enum */
7261 #define	MC_CMD_MAC_TX_MULTIPLE_COLLISION_PKTS 0x14 /* enum */
7262 #define	MC_CMD_MAC_TX_EXCESSIVE_COLLISION_PKTS 0x15 /* enum */
7263 #define	MC_CMD_MAC_TX_LATE_COLLISION_PKTS 0x16 /* enum */
7264 #define	MC_CMD_MAC_TX_DEFERRED_PKTS 0x17 /* enum */
7265 #define	MC_CMD_MAC_TX_EXCESSIVE_DEFERRED_PKTS 0x18 /* enum */
7266 #define	MC_CMD_MAC_TX_NON_TCPUDP_PKTS 0x19 /* enum */
7267 #define	MC_CMD_MAC_TX_MAC_SRC_ERR_PKTS 0x1a /* enum */
7268 #define	MC_CMD_MAC_TX_IP_SRC_ERR_PKTS 0x1b /* enum */
7269 #define	MC_CMD_MAC_RX_PKTS 0x1c /* enum */
7270 #define	MC_CMD_MAC_RX_PAUSE_PKTS 0x1d /* enum */
7271 #define	MC_CMD_MAC_RX_GOOD_PKTS 0x1e /* enum */
7272 #define	MC_CMD_MAC_RX_CONTROL_PKTS 0x1f /* enum */
7273 #define	MC_CMD_MAC_RX_UNICAST_PKTS 0x20 /* enum */
7274 #define	MC_CMD_MAC_RX_MULTICAST_PKTS 0x21 /* enum */
7275 #define	MC_CMD_MAC_RX_BROADCAST_PKTS 0x22 /* enum */
7276 #define	MC_CMD_MAC_RX_BYTES 0x23 /* enum */
7277 #define	MC_CMD_MAC_RX_BAD_BYTES 0x24 /* enum */
7278 #define	MC_CMD_MAC_RX_64_PKTS 0x25 /* enum */
7279 #define	MC_CMD_MAC_RX_65_TO_127_PKTS 0x26 /* enum */
7280 #define	MC_CMD_MAC_RX_128_TO_255_PKTS 0x27 /* enum */
7281 #define	MC_CMD_MAC_RX_256_TO_511_PKTS 0x28 /* enum */
7282 #define	MC_CMD_MAC_RX_512_TO_1023_PKTS 0x29 /* enum */
7283 #define	MC_CMD_MAC_RX_1024_TO_15XX_PKTS 0x2a /* enum */
7284 #define	MC_CMD_MAC_RX_15XX_TO_JUMBO_PKTS 0x2b /* enum */
7285 #define	MC_CMD_MAC_RX_GTJUMBO_PKTS 0x2c /* enum */
7286 #define	MC_CMD_MAC_RX_UNDERSIZE_PKTS 0x2d /* enum */
7287 #define	MC_CMD_MAC_RX_BAD_FCS_PKTS 0x2e /* enum */
7288 #define	MC_CMD_MAC_RX_OVERFLOW_PKTS 0x2f /* enum */
7289 #define	MC_CMD_MAC_RX_FALSE_CARRIER_PKTS 0x30 /* enum */
7290 #define	MC_CMD_MAC_RX_SYMBOL_ERROR_PKTS 0x31 /* enum */
7291 #define	MC_CMD_MAC_RX_ALIGN_ERROR_PKTS 0x32 /* enum */
7292 #define	MC_CMD_MAC_RX_LENGTH_ERROR_PKTS 0x33 /* enum */
7293 #define	MC_CMD_MAC_RX_INTERNAL_ERROR_PKTS 0x34 /* enum */
7294 #define	MC_CMD_MAC_RX_JABBER_PKTS 0x35 /* enum */
7295 #define	MC_CMD_MAC_RX_NODESC_DROPS 0x36 /* enum */
7296 #define	MC_CMD_MAC_RX_LANES01_CHAR_ERR 0x37 /* enum */
7297 #define	MC_CMD_MAC_RX_LANES23_CHAR_ERR 0x38 /* enum */
7298 #define	MC_CMD_MAC_RX_LANES01_DISP_ERR 0x39 /* enum */
7299 #define	MC_CMD_MAC_RX_LANES23_DISP_ERR 0x3a /* enum */
7300 #define	MC_CMD_MAC_RX_MATCH_FAULT 0x3b /* enum */
7301 /* enum: PM trunc_bb_overflow counter. Valid for EF10 with PM_AND_RXDP_COUNTERS
7302  * capability only.
7303  */
7304 #define	MC_CMD_MAC_PM_TRUNC_BB_OVERFLOW 0x3c
7305 /* enum: PM discard_bb_overflow counter. Valid for EF10 with
7306  * PM_AND_RXDP_COUNTERS capability only.
7307  */
7308 #define	MC_CMD_MAC_PM_DISCARD_BB_OVERFLOW 0x3d
7309 /* enum: PM trunc_vfifo_full counter. Valid for EF10 with PM_AND_RXDP_COUNTERS
7310  * capability only.
7311  */
7312 #define	MC_CMD_MAC_PM_TRUNC_VFIFO_FULL 0x3e
7313 /* enum: PM discard_vfifo_full counter. Valid for EF10 with
7314  * PM_AND_RXDP_COUNTERS capability only.
7315  */
7316 #define	MC_CMD_MAC_PM_DISCARD_VFIFO_FULL 0x3f
7317 /* enum: PM trunc_qbb counter. Valid for EF10 with PM_AND_RXDP_COUNTERS
7318  * capability only.
7319  */
7320 #define	MC_CMD_MAC_PM_TRUNC_QBB 0x40
7321 /* enum: PM discard_qbb counter. Valid for EF10 with PM_AND_RXDP_COUNTERS
7322  * capability only.
7323  */
7324 #define	MC_CMD_MAC_PM_DISCARD_QBB 0x41
7325 /* enum: PM discard_mapping counter. Valid for EF10 with PM_AND_RXDP_COUNTERS
7326  * capability only.
7327  */
7328 #define	MC_CMD_MAC_PM_DISCARD_MAPPING 0x42
7329 /* enum: RXDP counter: Number of packets dropped due to the queue being
7330  * disabled. Valid for EF10 with PM_AND_RXDP_COUNTERS capability only.
7331  */
7332 #define	MC_CMD_MAC_RXDP_Q_DISABLED_PKTS 0x43
7333 /* enum: RXDP counter: Number of packets dropped by the DICPU. Valid for EF10
7334  * with PM_AND_RXDP_COUNTERS capability only.
7335  */
7336 #define	MC_CMD_MAC_RXDP_DI_DROPPED_PKTS 0x45
7337 /* enum: RXDP counter: Number of non-host packets. Valid for EF10 with
7338  * PM_AND_RXDP_COUNTERS capability only.
7339  */
7340 #define	MC_CMD_MAC_RXDP_STREAMING_PKTS 0x46
7341 /* enum: RXDP counter: Number of times an hlb descriptor fetch was performed.
7342  * Valid for EF10 with PM_AND_RXDP_COUNTERS capability only.
7343  */
7344 #define	MC_CMD_MAC_RXDP_HLB_FETCH_CONDITIONS 0x47
7345 /* enum: RXDP counter: Number of times the DPCPU waited for an existing
7346  * descriptor fetch. Valid for EF10 with PM_AND_RXDP_COUNTERS capability only.
7347  */
7348 #define	MC_CMD_MAC_RXDP_HLB_WAIT_CONDITIONS 0x48
7349 #define	MC_CMD_MAC_VADAPTER_RX_DMABUF_START 0x4c /* enum */
7350 #define	MC_CMD_MAC_VADAPTER_RX_UNICAST_PACKETS 0x4c /* enum */
7351 #define	MC_CMD_MAC_VADAPTER_RX_UNICAST_BYTES 0x4d /* enum */
7352 #define	MC_CMD_MAC_VADAPTER_RX_MULTICAST_PACKETS 0x4e /* enum */
7353 #define	MC_CMD_MAC_VADAPTER_RX_MULTICAST_BYTES 0x4f /* enum */
7354 #define	MC_CMD_MAC_VADAPTER_RX_BROADCAST_PACKETS 0x50 /* enum */
7355 #define	MC_CMD_MAC_VADAPTER_RX_BROADCAST_BYTES 0x51 /* enum */
7356 #define	MC_CMD_MAC_VADAPTER_RX_BAD_PACKETS 0x52 /* enum */
7357 #define	MC_CMD_MAC_VADAPTER_RX_BAD_BYTES 0x53 /* enum */
7358 #define	MC_CMD_MAC_VADAPTER_RX_OVERFLOW 0x54 /* enum */
7359 #define	MC_CMD_MAC_VADAPTER_TX_DMABUF_START 0x57 /* enum */
7360 #define	MC_CMD_MAC_VADAPTER_TX_UNICAST_PACKETS 0x57 /* enum */
7361 #define	MC_CMD_MAC_VADAPTER_TX_UNICAST_BYTES 0x58 /* enum */
7362 #define	MC_CMD_MAC_VADAPTER_TX_MULTICAST_PACKETS 0x59 /* enum */
7363 #define	MC_CMD_MAC_VADAPTER_TX_MULTICAST_BYTES 0x5a /* enum */
7364 #define	MC_CMD_MAC_VADAPTER_TX_BROADCAST_PACKETS 0x5b /* enum */
7365 #define	MC_CMD_MAC_VADAPTER_TX_BROADCAST_BYTES 0x5c /* enum */
7366 #define	MC_CMD_MAC_VADAPTER_TX_BAD_PACKETS 0x5d /* enum */
7367 #define	MC_CMD_MAC_VADAPTER_TX_BAD_BYTES 0x5e /* enum */
7368 #define	MC_CMD_MAC_VADAPTER_TX_OVERFLOW 0x5f /* enum */
7369 /* enum: Start of GMAC stats buffer space, for Siena only. */
7370 #define	MC_CMD_GMAC_DMABUF_START 0x40
7371 /* enum: End of GMAC stats buffer space, for Siena only. */
7372 #define	MC_CMD_GMAC_DMABUF_END 0x5f
7373 /* enum: GENERATION_END value, used together with GENERATION_START to verify
7374  * consistency of DMAd data. For legacy firmware / drivers without extended
7375  * stats (more precisely, when DMA_LEN == MC_CMD_MAC_NSTATS *
7376  * sizeof(uint64_t)), this entry holds the GENERATION_END value. Otherwise,
7377  * this value is invalid/ reserved and GENERATION_END is written as the last
7378  * 64-bit word of the DMA buffer (at DMA_LEN - sizeof(uint64_t)). Note that
7379  * this is consistent with the legacy behaviour, in the sense that entry 96 is
7380  * the last 64-bit word in the buffer when DMA_LEN == MC_CMD_MAC_NSTATS *
7381  * sizeof(uint64_t). See SF-109306-TC, Section 9.2 for details.
7382  */
7383 #define	MC_CMD_MAC_GENERATION_END 0x60
7384 #define	MC_CMD_MAC_NSTATS 0x61 /* enum */
7385 
7386 /* MC_CMD_MAC_STATS_V2_OUT_DMA msgresponse */
7387 #define	MC_CMD_MAC_STATS_V2_OUT_DMA_LEN 0
7388 
7389 /* MC_CMD_MAC_STATS_V2_OUT_NO_DMA msgresponse */
7390 #define	MC_CMD_MAC_STATS_V2_OUT_NO_DMA_LEN (((MC_CMD_MAC_NSTATS_V2*64))>>3)
7391 #define	MC_CMD_MAC_STATS_V2_OUT_NO_DMA_STATISTICS_OFST 0
7392 #define	MC_CMD_MAC_STATS_V2_OUT_NO_DMA_STATISTICS_LEN 8
7393 #define	MC_CMD_MAC_STATS_V2_OUT_NO_DMA_STATISTICS_LO_OFST 0
7394 #define	MC_CMD_MAC_STATS_V2_OUT_NO_DMA_STATISTICS_LO_LEN 4
7395 #define	MC_CMD_MAC_STATS_V2_OUT_NO_DMA_STATISTICS_LO_LBN 0
7396 #define	MC_CMD_MAC_STATS_V2_OUT_NO_DMA_STATISTICS_LO_WIDTH 32
7397 #define	MC_CMD_MAC_STATS_V2_OUT_NO_DMA_STATISTICS_HI_OFST 4
7398 #define	MC_CMD_MAC_STATS_V2_OUT_NO_DMA_STATISTICS_HI_LEN 4
7399 #define	MC_CMD_MAC_STATS_V2_OUT_NO_DMA_STATISTICS_HI_LBN 32
7400 #define	MC_CMD_MAC_STATS_V2_OUT_NO_DMA_STATISTICS_HI_WIDTH 32
7401 #define	MC_CMD_MAC_STATS_V2_OUT_NO_DMA_STATISTICS_NUM MC_CMD_MAC_NSTATS_V2
7402 /* enum property: index */
7403 /* enum: Start of FEC stats buffer space, Medford2 and up */
7404 #define	MC_CMD_MAC_FEC_DMABUF_START 0x61
7405 /* enum: Number of uncorrected FEC codewords on link (RS-FEC only for Medford2)
7406  */
7407 #define	MC_CMD_MAC_FEC_UNCORRECTED_ERRORS 0x61
7408 /* enum: Number of corrected FEC codewords on link (RS-FEC only for Medford2)
7409  */
7410 #define	MC_CMD_MAC_FEC_CORRECTED_ERRORS 0x62
7411 /* enum: Number of corrected 10-bit symbol errors, lane 0 (RS-FEC only) */
7412 #define	MC_CMD_MAC_FEC_CORRECTED_SYMBOLS_LANE0 0x63
7413 /* enum: Number of corrected 10-bit symbol errors, lane 1 (RS-FEC only) */
7414 #define	MC_CMD_MAC_FEC_CORRECTED_SYMBOLS_LANE1 0x64
7415 /* enum: Number of corrected 10-bit symbol errors, lane 2 (RS-FEC only) */
7416 #define	MC_CMD_MAC_FEC_CORRECTED_SYMBOLS_LANE2 0x65
7417 /* enum: Number of corrected 10-bit symbol errors, lane 3 (RS-FEC only) */
7418 #define	MC_CMD_MAC_FEC_CORRECTED_SYMBOLS_LANE3 0x66
7419 /* enum: This includes the space at offset 103 which is the final
7420  * GENERATION_END in a MAC_STATS_V2 response and otherwise unused.
7421  */
7422 #define	MC_CMD_MAC_NSTATS_V2 0x68
7423 /*            Other enum values, see field(s): */
7424 /*               MC_CMD_MAC_STATS_OUT_NO_DMA/STATISTICS */
7425 
7426 /* MC_CMD_MAC_STATS_V3_OUT_DMA msgresponse */
7427 #define	MC_CMD_MAC_STATS_V3_OUT_DMA_LEN 0
7428 
7429 /* MC_CMD_MAC_STATS_V3_OUT_NO_DMA msgresponse */
7430 #define	MC_CMD_MAC_STATS_V3_OUT_NO_DMA_LEN (((MC_CMD_MAC_NSTATS_V3*64))>>3)
7431 #define	MC_CMD_MAC_STATS_V3_OUT_NO_DMA_STATISTICS_OFST 0
7432 #define	MC_CMD_MAC_STATS_V3_OUT_NO_DMA_STATISTICS_LEN 8
7433 #define	MC_CMD_MAC_STATS_V3_OUT_NO_DMA_STATISTICS_LO_OFST 0
7434 #define	MC_CMD_MAC_STATS_V3_OUT_NO_DMA_STATISTICS_LO_LEN 4
7435 #define	MC_CMD_MAC_STATS_V3_OUT_NO_DMA_STATISTICS_LO_LBN 0
7436 #define	MC_CMD_MAC_STATS_V3_OUT_NO_DMA_STATISTICS_LO_WIDTH 32
7437 #define	MC_CMD_MAC_STATS_V3_OUT_NO_DMA_STATISTICS_HI_OFST 4
7438 #define	MC_CMD_MAC_STATS_V3_OUT_NO_DMA_STATISTICS_HI_LEN 4
7439 #define	MC_CMD_MAC_STATS_V3_OUT_NO_DMA_STATISTICS_HI_LBN 32
7440 #define	MC_CMD_MAC_STATS_V3_OUT_NO_DMA_STATISTICS_HI_WIDTH 32
7441 #define	MC_CMD_MAC_STATS_V3_OUT_NO_DMA_STATISTICS_NUM MC_CMD_MAC_NSTATS_V3
7442 /* enum property: index */
7443 /* enum: Start of CTPIO stats buffer space, Medford2 and up */
7444 #define	MC_CMD_MAC_CTPIO_DMABUF_START 0x68
7445 /* enum: Number of CTPIO fallbacks because a DMA packet was in progress on the
7446  * target VI
7447  */
7448 #define	MC_CMD_MAC_CTPIO_VI_BUSY_FALLBACK 0x68
7449 /* enum: Number of times a CTPIO send wrote beyond frame end (informational
7450  * only)
7451  */
7452 #define	MC_CMD_MAC_CTPIO_LONG_WRITE_SUCCESS 0x69
7453 /* enum: Number of CTPIO failures because the TX doorbell was written before
7454  * the end of the frame data
7455  */
7456 #define	MC_CMD_MAC_CTPIO_MISSING_DBELL_FAIL 0x6a
7457 /* enum: Number of CTPIO failures because the internal FIFO overflowed */
7458 #define	MC_CMD_MAC_CTPIO_OVERFLOW_FAIL 0x6b
7459 /* enum: Number of CTPIO failures because the host did not deliver data fast
7460  * enough to avoid MAC underflow
7461  */
7462 #define	MC_CMD_MAC_CTPIO_UNDERFLOW_FAIL 0x6c
7463 /* enum: Number of CTPIO failures because the host did not deliver all the
7464  * frame data within the timeout
7465  */
7466 #define	MC_CMD_MAC_CTPIO_TIMEOUT_FAIL 0x6d
7467 /* enum: Number of CTPIO failures because the frame data arrived out of order
7468  * or with gaps
7469  */
7470 #define	MC_CMD_MAC_CTPIO_NONCONTIG_WR_FAIL 0x6e
7471 /* enum: Number of CTPIO failures because the host started a new frame before
7472  * completing the previous one
7473  */
7474 #define	MC_CMD_MAC_CTPIO_FRM_CLOBBER_FAIL 0x6f
7475 /* enum: Number of CTPIO failures because a write was not a multiple of 32 bits
7476  * or not 32-bit aligned
7477  */
7478 #define	MC_CMD_MAC_CTPIO_INVALID_WR_FAIL 0x70
7479 /* enum: Number of CTPIO fallbacks because another VI on the same port was
7480  * sending a CTPIO frame
7481  */
7482 #define	MC_CMD_MAC_CTPIO_VI_CLOBBER_FALLBACK 0x71
7483 /* enum: Number of CTPIO fallbacks because target VI did not have CTPIO enabled
7484  */
7485 #define	MC_CMD_MAC_CTPIO_UNQUALIFIED_FALLBACK 0x72
7486 /* enum: Number of CTPIO fallbacks because length in header was less than 29
7487  * bytes
7488  */
7489 #define	MC_CMD_MAC_CTPIO_RUNT_FALLBACK 0x73
7490 /* enum: Total number of successful CTPIO sends on this port */
7491 #define	MC_CMD_MAC_CTPIO_SUCCESS 0x74
7492 /* enum: Total number of CTPIO fallbacks on this port */
7493 #define	MC_CMD_MAC_CTPIO_FALLBACK 0x75
7494 /* enum: Total number of CTPIO poisoned frames on this port, whether erased or
7495  * not
7496  */
7497 #define	MC_CMD_MAC_CTPIO_POISON 0x76
7498 /* enum: Total number of CTPIO erased frames on this port */
7499 #define	MC_CMD_MAC_CTPIO_ERASE 0x77
7500 /* enum: This includes the space at offset 120 which is the final
7501  * GENERATION_END in a MAC_STATS_V3 response and otherwise unused.
7502  */
7503 #define	MC_CMD_MAC_NSTATS_V3 0x79
7504 /*            Other enum values, see field(s): */
7505 /*               MC_CMD_MAC_STATS_V2_OUT_NO_DMA/STATISTICS */
7506 
7507 /* MC_CMD_MAC_STATS_V4_OUT_DMA msgresponse */
7508 #define	MC_CMD_MAC_STATS_V4_OUT_DMA_LEN 0
7509 
7510 /* MC_CMD_MAC_STATS_V4_OUT_NO_DMA msgresponse */
7511 #define	MC_CMD_MAC_STATS_V4_OUT_NO_DMA_LEN (((MC_CMD_MAC_NSTATS_V4*64))>>3)
7512 #define	MC_CMD_MAC_STATS_V4_OUT_NO_DMA_STATISTICS_OFST 0
7513 #define	MC_CMD_MAC_STATS_V4_OUT_NO_DMA_STATISTICS_LEN 8
7514 #define	MC_CMD_MAC_STATS_V4_OUT_NO_DMA_STATISTICS_LO_OFST 0
7515 #define	MC_CMD_MAC_STATS_V4_OUT_NO_DMA_STATISTICS_LO_LEN 4
7516 #define	MC_CMD_MAC_STATS_V4_OUT_NO_DMA_STATISTICS_LO_LBN 0
7517 #define	MC_CMD_MAC_STATS_V4_OUT_NO_DMA_STATISTICS_LO_WIDTH 32
7518 #define	MC_CMD_MAC_STATS_V4_OUT_NO_DMA_STATISTICS_HI_OFST 4
7519 #define	MC_CMD_MAC_STATS_V4_OUT_NO_DMA_STATISTICS_HI_LEN 4
7520 #define	MC_CMD_MAC_STATS_V4_OUT_NO_DMA_STATISTICS_HI_LBN 32
7521 #define	MC_CMD_MAC_STATS_V4_OUT_NO_DMA_STATISTICS_HI_WIDTH 32
7522 #define	MC_CMD_MAC_STATS_V4_OUT_NO_DMA_STATISTICS_NUM MC_CMD_MAC_NSTATS_V4
7523 /* enum property: index */
7524 /* enum: Start of V4 stats buffer space */
7525 #define	MC_CMD_MAC_V4_DMABUF_START 0x79
7526 /* enum: RXDP counter: Number of packets truncated because scattering was
7527  * disabled.
7528  */
7529 #define	MC_CMD_MAC_RXDP_SCATTER_DISABLED_TRUNC 0x79
7530 /* enum: RXDP counter: Number of times the RXDP head of line blocked waiting
7531  * for descriptors. Will be zero unless RXDP_HLB_IDLE capability is set.
7532  */
7533 #define	MC_CMD_MAC_RXDP_HLB_IDLE 0x7a
7534 /* enum: RXDP counter: Number of times the RXDP timed out while head of line
7535  * blocking. Will be zero unless RXDP_HLB_IDLE capability is set.
7536  */
7537 #define	MC_CMD_MAC_RXDP_HLB_TIMEOUT 0x7b
7538 /* enum: This includes the space at offset 124 which is the final
7539  * GENERATION_END in a MAC_STATS_V4 response and otherwise unused.
7540  */
7541 #define	MC_CMD_MAC_NSTATS_V4 0x7d
7542 /*            Other enum values, see field(s): */
7543 /*               MC_CMD_MAC_STATS_V3_OUT_NO_DMA/STATISTICS */
7544 
7545 
7546 /***********************************/
7547 /* MC_CMD_SRIOV
7548  * to be documented
7549  */
7550 #define	MC_CMD_SRIOV 0x30
7551 #define	MC_CMD_SRIOV_MSGSET 0x30
7552 
7553 /* MC_CMD_SRIOV_IN msgrequest */
7554 #define	MC_CMD_SRIOV_IN_LEN 12
7555 #define	MC_CMD_SRIOV_IN_ENABLE_OFST 0
7556 #define	MC_CMD_SRIOV_IN_ENABLE_LEN 4
7557 #define	MC_CMD_SRIOV_IN_VI_BASE_OFST 4
7558 #define	MC_CMD_SRIOV_IN_VI_BASE_LEN 4
7559 #define	MC_CMD_SRIOV_IN_VF_COUNT_OFST 8
7560 #define	MC_CMD_SRIOV_IN_VF_COUNT_LEN 4
7561 
7562 /* MC_CMD_SRIOV_OUT msgresponse */
7563 #define	MC_CMD_SRIOV_OUT_LEN 8
7564 #define	MC_CMD_SRIOV_OUT_VI_SCALE_OFST 0
7565 #define	MC_CMD_SRIOV_OUT_VI_SCALE_LEN 4
7566 #define	MC_CMD_SRIOV_OUT_VF_TOTAL_OFST 4
7567 #define	MC_CMD_SRIOV_OUT_VF_TOTAL_LEN 4
7568 
7569 /* MC_CMD_MEMCPY_RECORD_TYPEDEF structuredef */
7570 #define	MC_CMD_MEMCPY_RECORD_TYPEDEF_LEN 32
7571 /* this is only used for the first record */
7572 #define	MC_CMD_MEMCPY_RECORD_TYPEDEF_NUM_RECORDS_OFST 0
7573 #define	MC_CMD_MEMCPY_RECORD_TYPEDEF_NUM_RECORDS_LEN 4
7574 #define	MC_CMD_MEMCPY_RECORD_TYPEDEF_NUM_RECORDS_LBN 0
7575 #define	MC_CMD_MEMCPY_RECORD_TYPEDEF_NUM_RECORDS_WIDTH 32
7576 #define	MC_CMD_MEMCPY_RECORD_TYPEDEF_TO_RID_OFST 4
7577 #define	MC_CMD_MEMCPY_RECORD_TYPEDEF_TO_RID_LEN 4
7578 #define	MC_CMD_MEMCPY_RECORD_TYPEDEF_TO_RID_LBN 32
7579 #define	MC_CMD_MEMCPY_RECORD_TYPEDEF_TO_RID_WIDTH 32
7580 #define	MC_CMD_MEMCPY_RECORD_TYPEDEF_TO_ADDR_OFST 8
7581 #define	MC_CMD_MEMCPY_RECORD_TYPEDEF_TO_ADDR_LEN 8
7582 #define	MC_CMD_MEMCPY_RECORD_TYPEDEF_TO_ADDR_LO_OFST 8
7583 #define	MC_CMD_MEMCPY_RECORD_TYPEDEF_TO_ADDR_LO_LEN 4
7584 #define	MC_CMD_MEMCPY_RECORD_TYPEDEF_TO_ADDR_LO_LBN 64
7585 #define	MC_CMD_MEMCPY_RECORD_TYPEDEF_TO_ADDR_LO_WIDTH 32
7586 #define	MC_CMD_MEMCPY_RECORD_TYPEDEF_TO_ADDR_HI_OFST 12
7587 #define	MC_CMD_MEMCPY_RECORD_TYPEDEF_TO_ADDR_HI_LEN 4
7588 #define	MC_CMD_MEMCPY_RECORD_TYPEDEF_TO_ADDR_HI_LBN 96
7589 #define	MC_CMD_MEMCPY_RECORD_TYPEDEF_TO_ADDR_HI_WIDTH 32
7590 #define	MC_CMD_MEMCPY_RECORD_TYPEDEF_TO_ADDR_LBN 64
7591 #define	MC_CMD_MEMCPY_RECORD_TYPEDEF_TO_ADDR_WIDTH 64
7592 #define	MC_CMD_MEMCPY_RECORD_TYPEDEF_FROM_RID_OFST 16
7593 #define	MC_CMD_MEMCPY_RECORD_TYPEDEF_FROM_RID_LEN 4
7594 #define	MC_CMD_MEMCPY_RECORD_TYPEDEF_RID_INLINE 0x100 /* enum */
7595 #define	MC_CMD_MEMCPY_RECORD_TYPEDEF_FROM_RID_LBN 128
7596 #define	MC_CMD_MEMCPY_RECORD_TYPEDEF_FROM_RID_WIDTH 32
7597 #define	MC_CMD_MEMCPY_RECORD_TYPEDEF_FROM_ADDR_OFST 20
7598 #define	MC_CMD_MEMCPY_RECORD_TYPEDEF_FROM_ADDR_LEN 8
7599 #define	MC_CMD_MEMCPY_RECORD_TYPEDEF_FROM_ADDR_LO_OFST 20
7600 #define	MC_CMD_MEMCPY_RECORD_TYPEDEF_FROM_ADDR_LO_LEN 4
7601 #define	MC_CMD_MEMCPY_RECORD_TYPEDEF_FROM_ADDR_LO_LBN 160
7602 #define	MC_CMD_MEMCPY_RECORD_TYPEDEF_FROM_ADDR_LO_WIDTH 32
7603 #define	MC_CMD_MEMCPY_RECORD_TYPEDEF_FROM_ADDR_HI_OFST 24
7604 #define	MC_CMD_MEMCPY_RECORD_TYPEDEF_FROM_ADDR_HI_LEN 4
7605 #define	MC_CMD_MEMCPY_RECORD_TYPEDEF_FROM_ADDR_HI_LBN 192
7606 #define	MC_CMD_MEMCPY_RECORD_TYPEDEF_FROM_ADDR_HI_WIDTH 32
7607 #define	MC_CMD_MEMCPY_RECORD_TYPEDEF_FROM_ADDR_LBN 160
7608 #define	MC_CMD_MEMCPY_RECORD_TYPEDEF_FROM_ADDR_WIDTH 64
7609 #define	MC_CMD_MEMCPY_RECORD_TYPEDEF_LENGTH_OFST 28
7610 #define	MC_CMD_MEMCPY_RECORD_TYPEDEF_LENGTH_LEN 4
7611 #define	MC_CMD_MEMCPY_RECORD_TYPEDEF_LENGTH_LBN 224
7612 #define	MC_CMD_MEMCPY_RECORD_TYPEDEF_LENGTH_WIDTH 32
7613 
7614 
7615 /***********************************/
7616 /* MC_CMD_MEMCPY
7617  * DMA write data into (Rid,Addr), either by dma reading (Rid,Addr), or by data
7618  * embedded directly in the command.
7619  *
7620  * A common pattern is for a client to use generation counts to signal a dma
7621  * update of a datastructure. To facilitate this, this MCDI operation can
7622  * contain multiple requests which are executed in strict order. Requests take
7623  * the form of duplicating the entire MCDI request continuously (including the
7624  * requests record, which is ignored in all but the first structure)
7625  *
7626  * The source data can either come from a DMA from the host, or it can be
7627  * embedded within the request directly, thereby eliminating a DMA read. To
7628  * indicate this, the client sets FROM_RID=%RID_INLINE, ADDR_HI=0, and
7629  * ADDR_LO=offset, and inserts the data at %offset from the start of the
7630  * payload. It's the callers responsibility to ensure that the embedded data
7631  * doesn't overlap the records.
7632  *
7633  * Returns: 0, EINVAL (invalid RID)
7634  */
7635 #define	MC_CMD_MEMCPY 0x31
7636 #define	MC_CMD_MEMCPY_MSGSET 0x31
7637 
7638 /* MC_CMD_MEMCPY_IN msgrequest */
7639 #define	MC_CMD_MEMCPY_IN_LENMIN 32
7640 #define	MC_CMD_MEMCPY_IN_LENMAX 224
7641 #define	MC_CMD_MEMCPY_IN_LENMAX_MCDI2 992
7642 #define	MC_CMD_MEMCPY_IN_LEN(num) (0+32*(num))
7643 #define	MC_CMD_MEMCPY_IN_RECORD_NUM(len) (((len)-0)/32)
7644 /* see MC_CMD_MEMCPY_RECORD_TYPEDEF */
7645 #define	MC_CMD_MEMCPY_IN_RECORD_OFST 0
7646 #define	MC_CMD_MEMCPY_IN_RECORD_LEN 32
7647 #define	MC_CMD_MEMCPY_IN_RECORD_MINNUM 1
7648 #define	MC_CMD_MEMCPY_IN_RECORD_MAXNUM 7
7649 #define	MC_CMD_MEMCPY_IN_RECORD_MAXNUM_MCDI2 31
7650 
7651 /* MC_CMD_MEMCPY_OUT msgresponse */
7652 #define	MC_CMD_MEMCPY_OUT_LEN 0
7653 
7654 
7655 /***********************************/
7656 /* MC_CMD_WOL_FILTER_SET
7657  * Set a WoL filter.
7658  */
7659 #define	MC_CMD_WOL_FILTER_SET 0x32
7660 #define	MC_CMD_WOL_FILTER_SET_MSGSET 0x32
7661 #undef	MC_CMD_0x32_PRIVILEGE_CTG
7662 
7663 #define	MC_CMD_0x32_PRIVILEGE_CTG SRIOV_CTG_LINK
7664 
7665 /* MC_CMD_WOL_FILTER_SET_IN msgrequest */
7666 #define	MC_CMD_WOL_FILTER_SET_IN_LEN 192
7667 #define	MC_CMD_WOL_FILTER_SET_IN_FILTER_MODE_OFST 0
7668 #define	MC_CMD_WOL_FILTER_SET_IN_FILTER_MODE_LEN 4
7669 #define	MC_CMD_FILTER_MODE_SIMPLE 0x0 /* enum */
7670 #define	MC_CMD_FILTER_MODE_STRUCTURED 0xffffffff /* enum */
7671 /* A type value of 1 is unused. */
7672 #define	MC_CMD_WOL_FILTER_SET_IN_WOL_TYPE_OFST 4
7673 #define	MC_CMD_WOL_FILTER_SET_IN_WOL_TYPE_LEN 4
7674 /* enum: Magic */
7675 #define	MC_CMD_WOL_TYPE_MAGIC 0x0
7676 /* enum: MS Windows Magic */
7677 #define	MC_CMD_WOL_TYPE_WIN_MAGIC 0x2
7678 /* enum: IPv4 Syn */
7679 #define	MC_CMD_WOL_TYPE_IPV4_SYN 0x3
7680 /* enum: IPv6 Syn */
7681 #define	MC_CMD_WOL_TYPE_IPV6_SYN 0x4
7682 /* enum: Bitmap */
7683 #define	MC_CMD_WOL_TYPE_BITMAP 0x5
7684 /* enum: Link */
7685 #define	MC_CMD_WOL_TYPE_LINK 0x6
7686 /* enum: (Above this for future use) */
7687 #define	MC_CMD_WOL_TYPE_MAX 0x7
7688 #define	MC_CMD_WOL_FILTER_SET_IN_DATA_OFST 8
7689 #define	MC_CMD_WOL_FILTER_SET_IN_DATA_LEN 4
7690 #define	MC_CMD_WOL_FILTER_SET_IN_DATA_NUM 46
7691 
7692 /* MC_CMD_WOL_FILTER_SET_IN_MAGIC msgrequest */
7693 #define	MC_CMD_WOL_FILTER_SET_IN_MAGIC_LEN 16
7694 /*            MC_CMD_WOL_FILTER_SET_IN_FILTER_MODE_OFST 0 */
7695 /*            MC_CMD_WOL_FILTER_SET_IN_FILTER_MODE_LEN 4 */
7696 /*            MC_CMD_WOL_FILTER_SET_IN_WOL_TYPE_OFST 4 */
7697 /*            MC_CMD_WOL_FILTER_SET_IN_WOL_TYPE_LEN 4 */
7698 #define	MC_CMD_WOL_FILTER_SET_IN_MAGIC_MAC_OFST 8
7699 #define	MC_CMD_WOL_FILTER_SET_IN_MAGIC_MAC_LEN 8
7700 #define	MC_CMD_WOL_FILTER_SET_IN_MAGIC_MAC_LO_OFST 8
7701 #define	MC_CMD_WOL_FILTER_SET_IN_MAGIC_MAC_LO_LEN 4
7702 #define	MC_CMD_WOL_FILTER_SET_IN_MAGIC_MAC_LO_LBN 64
7703 #define	MC_CMD_WOL_FILTER_SET_IN_MAGIC_MAC_LO_WIDTH 32
7704 #define	MC_CMD_WOL_FILTER_SET_IN_MAGIC_MAC_HI_OFST 12
7705 #define	MC_CMD_WOL_FILTER_SET_IN_MAGIC_MAC_HI_LEN 4
7706 #define	MC_CMD_WOL_FILTER_SET_IN_MAGIC_MAC_HI_LBN 96
7707 #define	MC_CMD_WOL_FILTER_SET_IN_MAGIC_MAC_HI_WIDTH 32
7708 
7709 /* MC_CMD_WOL_FILTER_SET_IN_IPV4_SYN msgrequest */
7710 #define	MC_CMD_WOL_FILTER_SET_IN_IPV4_SYN_LEN 20
7711 /*            MC_CMD_WOL_FILTER_SET_IN_FILTER_MODE_OFST 0 */
7712 /*            MC_CMD_WOL_FILTER_SET_IN_FILTER_MODE_LEN 4 */
7713 /*            MC_CMD_WOL_FILTER_SET_IN_WOL_TYPE_OFST 4 */
7714 /*            MC_CMD_WOL_FILTER_SET_IN_WOL_TYPE_LEN 4 */
7715 #define	MC_CMD_WOL_FILTER_SET_IN_IPV4_SYN_SRC_IP_OFST 8
7716 #define	MC_CMD_WOL_FILTER_SET_IN_IPV4_SYN_SRC_IP_LEN 4
7717 #define	MC_CMD_WOL_FILTER_SET_IN_IPV4_SYN_DST_IP_OFST 12
7718 #define	MC_CMD_WOL_FILTER_SET_IN_IPV4_SYN_DST_IP_LEN 4
7719 #define	MC_CMD_WOL_FILTER_SET_IN_IPV4_SYN_SRC_PORT_OFST 16
7720 #define	MC_CMD_WOL_FILTER_SET_IN_IPV4_SYN_SRC_PORT_LEN 2
7721 #define	MC_CMD_WOL_FILTER_SET_IN_IPV4_SYN_DST_PORT_OFST 18
7722 #define	MC_CMD_WOL_FILTER_SET_IN_IPV4_SYN_DST_PORT_LEN 2
7723 
7724 /* MC_CMD_WOL_FILTER_SET_IN_IPV6_SYN msgrequest */
7725 #define	MC_CMD_WOL_FILTER_SET_IN_IPV6_SYN_LEN 44
7726 /*            MC_CMD_WOL_FILTER_SET_IN_FILTER_MODE_OFST 0 */
7727 /*            MC_CMD_WOL_FILTER_SET_IN_FILTER_MODE_LEN 4 */
7728 /*            MC_CMD_WOL_FILTER_SET_IN_WOL_TYPE_OFST 4 */
7729 /*            MC_CMD_WOL_FILTER_SET_IN_WOL_TYPE_LEN 4 */
7730 #define	MC_CMD_WOL_FILTER_SET_IN_IPV6_SYN_SRC_IP_OFST 8
7731 #define	MC_CMD_WOL_FILTER_SET_IN_IPV6_SYN_SRC_IP_LEN 16
7732 #define	MC_CMD_WOL_FILTER_SET_IN_IPV6_SYN_DST_IP_OFST 24
7733 #define	MC_CMD_WOL_FILTER_SET_IN_IPV6_SYN_DST_IP_LEN 16
7734 #define	MC_CMD_WOL_FILTER_SET_IN_IPV6_SYN_SRC_PORT_OFST 40
7735 #define	MC_CMD_WOL_FILTER_SET_IN_IPV6_SYN_SRC_PORT_LEN 2
7736 #define	MC_CMD_WOL_FILTER_SET_IN_IPV6_SYN_DST_PORT_OFST 42
7737 #define	MC_CMD_WOL_FILTER_SET_IN_IPV6_SYN_DST_PORT_LEN 2
7738 
7739 /* MC_CMD_WOL_FILTER_SET_IN_BITMAP msgrequest */
7740 #define	MC_CMD_WOL_FILTER_SET_IN_BITMAP_LEN 187
7741 /*            MC_CMD_WOL_FILTER_SET_IN_FILTER_MODE_OFST 0 */
7742 /*            MC_CMD_WOL_FILTER_SET_IN_FILTER_MODE_LEN 4 */
7743 /*            MC_CMD_WOL_FILTER_SET_IN_WOL_TYPE_OFST 4 */
7744 /*            MC_CMD_WOL_FILTER_SET_IN_WOL_TYPE_LEN 4 */
7745 #define	MC_CMD_WOL_FILTER_SET_IN_BITMAP_MASK_OFST 8
7746 #define	MC_CMD_WOL_FILTER_SET_IN_BITMAP_MASK_LEN 48
7747 #define	MC_CMD_WOL_FILTER_SET_IN_BITMAP_BITMAP_OFST 56
7748 #define	MC_CMD_WOL_FILTER_SET_IN_BITMAP_BITMAP_LEN 128
7749 #define	MC_CMD_WOL_FILTER_SET_IN_BITMAP_LEN_OFST 184
7750 #define	MC_CMD_WOL_FILTER_SET_IN_BITMAP_LEN_LEN 1
7751 #define	MC_CMD_WOL_FILTER_SET_IN_BITMAP_LAYER3_OFST 185
7752 #define	MC_CMD_WOL_FILTER_SET_IN_BITMAP_LAYER3_LEN 1
7753 #define	MC_CMD_WOL_FILTER_SET_IN_BITMAP_LAYER4_OFST 186
7754 #define	MC_CMD_WOL_FILTER_SET_IN_BITMAP_LAYER4_LEN 1
7755 
7756 /* MC_CMD_WOL_FILTER_SET_IN_LINK msgrequest */
7757 #define	MC_CMD_WOL_FILTER_SET_IN_LINK_LEN 12
7758 /*            MC_CMD_WOL_FILTER_SET_IN_FILTER_MODE_OFST 0 */
7759 /*            MC_CMD_WOL_FILTER_SET_IN_FILTER_MODE_LEN 4 */
7760 /*            MC_CMD_WOL_FILTER_SET_IN_WOL_TYPE_OFST 4 */
7761 /*            MC_CMD_WOL_FILTER_SET_IN_WOL_TYPE_LEN 4 */
7762 #define	MC_CMD_WOL_FILTER_SET_IN_LINK_MASK_OFST 8
7763 #define	MC_CMD_WOL_FILTER_SET_IN_LINK_MASK_LEN 4
7764 #define	MC_CMD_WOL_FILTER_SET_IN_LINK_UP_OFST 8
7765 #define	MC_CMD_WOL_FILTER_SET_IN_LINK_UP_LBN 0
7766 #define	MC_CMD_WOL_FILTER_SET_IN_LINK_UP_WIDTH 1
7767 #define	MC_CMD_WOL_FILTER_SET_IN_LINK_DOWN_OFST 8
7768 #define	MC_CMD_WOL_FILTER_SET_IN_LINK_DOWN_LBN 1
7769 #define	MC_CMD_WOL_FILTER_SET_IN_LINK_DOWN_WIDTH 1
7770 
7771 /* MC_CMD_WOL_FILTER_SET_OUT msgresponse */
7772 #define	MC_CMD_WOL_FILTER_SET_OUT_LEN 4
7773 #define	MC_CMD_WOL_FILTER_SET_OUT_FILTER_ID_OFST 0
7774 #define	MC_CMD_WOL_FILTER_SET_OUT_FILTER_ID_LEN 4
7775 
7776 
7777 /***********************************/
7778 /* MC_CMD_WOL_FILTER_REMOVE
7779  * Remove a WoL filter. Locks required: None. Returns: 0, EINVAL, ENOSYS
7780  */
7781 #define	MC_CMD_WOL_FILTER_REMOVE 0x33
7782 #define	MC_CMD_WOL_FILTER_REMOVE_MSGSET 0x33
7783 #undef	MC_CMD_0x33_PRIVILEGE_CTG
7784 
7785 #define	MC_CMD_0x33_PRIVILEGE_CTG SRIOV_CTG_LINK
7786 
7787 /* MC_CMD_WOL_FILTER_REMOVE_IN msgrequest */
7788 #define	MC_CMD_WOL_FILTER_REMOVE_IN_LEN 4
7789 #define	MC_CMD_WOL_FILTER_REMOVE_IN_FILTER_ID_OFST 0
7790 #define	MC_CMD_WOL_FILTER_REMOVE_IN_FILTER_ID_LEN 4
7791 
7792 /* MC_CMD_WOL_FILTER_REMOVE_OUT msgresponse */
7793 #define	MC_CMD_WOL_FILTER_REMOVE_OUT_LEN 0
7794 
7795 
7796 /***********************************/
7797 /* MC_CMD_WOL_FILTER_RESET
7798  * Reset (i.e. remove all) WoL filters. Locks required: None. Returns: 0,
7799  * ENOSYS
7800  */
7801 #define	MC_CMD_WOL_FILTER_RESET 0x34
7802 #define	MC_CMD_WOL_FILTER_RESET_MSGSET 0x34
7803 #undef	MC_CMD_0x34_PRIVILEGE_CTG
7804 
7805 #define	MC_CMD_0x34_PRIVILEGE_CTG SRIOV_CTG_LINK
7806 
7807 /* MC_CMD_WOL_FILTER_RESET_IN msgrequest */
7808 #define	MC_CMD_WOL_FILTER_RESET_IN_LEN 4
7809 #define	MC_CMD_WOL_FILTER_RESET_IN_MASK_OFST 0
7810 #define	MC_CMD_WOL_FILTER_RESET_IN_MASK_LEN 4
7811 /* enum property: bitmask */
7812 #define	MC_CMD_WOL_FILTER_RESET_IN_WAKE_FILTERS 0x1 /* enum */
7813 #define	MC_CMD_WOL_FILTER_RESET_IN_LIGHTSOUT_OFFLOADS 0x2 /* enum */
7814 
7815 /* MC_CMD_WOL_FILTER_RESET_OUT msgresponse */
7816 #define	MC_CMD_WOL_FILTER_RESET_OUT_LEN 0
7817 
7818 
7819 /***********************************/
7820 /* MC_CMD_SET_MCAST_HASH
7821  * Set the MCAST hash value without otherwise reconfiguring the MAC
7822  */
7823 #define	MC_CMD_SET_MCAST_HASH 0x35
7824 #define	MC_CMD_SET_MCAST_HASH_MSGSET 0x35
7825 
7826 /* MC_CMD_SET_MCAST_HASH_IN msgrequest */
7827 #define	MC_CMD_SET_MCAST_HASH_IN_LEN 32
7828 #define	MC_CMD_SET_MCAST_HASH_IN_HASH0_OFST 0
7829 #define	MC_CMD_SET_MCAST_HASH_IN_HASH0_LEN 16
7830 #define	MC_CMD_SET_MCAST_HASH_IN_HASH1_OFST 16
7831 #define	MC_CMD_SET_MCAST_HASH_IN_HASH1_LEN 16
7832 
7833 /* MC_CMD_SET_MCAST_HASH_OUT msgresponse */
7834 #define	MC_CMD_SET_MCAST_HASH_OUT_LEN 0
7835 
7836 
7837 /***********************************/
7838 /* MC_CMD_NVRAM_TYPES
7839  * Return bitfield indicating available types of virtual NVRAM partitions.
7840  * Locks required: none. Returns: 0
7841  */
7842 #define	MC_CMD_NVRAM_TYPES 0x36
7843 #define	MC_CMD_NVRAM_TYPES_MSGSET 0x36
7844 #undef	MC_CMD_0x36_PRIVILEGE_CTG
7845 
7846 #define	MC_CMD_0x36_PRIVILEGE_CTG SRIOV_CTG_ADMIN
7847 
7848 /* MC_CMD_NVRAM_TYPES_IN msgrequest */
7849 #define	MC_CMD_NVRAM_TYPES_IN_LEN 0
7850 
7851 /* MC_CMD_NVRAM_TYPES_OUT msgresponse */
7852 #define	MC_CMD_NVRAM_TYPES_OUT_LEN 4
7853 /* Bit mask of supported types. */
7854 #define	MC_CMD_NVRAM_TYPES_OUT_TYPES_OFST 0
7855 #define	MC_CMD_NVRAM_TYPES_OUT_TYPES_LEN 4
7856 /* enum property: bitshift */
7857 /* enum: Disabled callisto. */
7858 #define	MC_CMD_NVRAM_TYPE_DISABLED_CALLISTO 0x0
7859 /* enum: MC firmware. */
7860 #define	MC_CMD_NVRAM_TYPE_MC_FW 0x1
7861 /* enum: MC backup firmware. */
7862 #define	MC_CMD_NVRAM_TYPE_MC_FW_BACKUP 0x2
7863 /* enum: Static configuration Port0. */
7864 #define	MC_CMD_NVRAM_TYPE_STATIC_CFG_PORT0 0x3
7865 /* enum: Static configuration Port1. */
7866 #define	MC_CMD_NVRAM_TYPE_STATIC_CFG_PORT1 0x4
7867 /* enum: Dynamic configuration Port0. */
7868 #define	MC_CMD_NVRAM_TYPE_DYNAMIC_CFG_PORT0 0x5
7869 /* enum: Dynamic configuration Port1. */
7870 #define	MC_CMD_NVRAM_TYPE_DYNAMIC_CFG_PORT1 0x6
7871 /* enum: Expansion Rom. */
7872 #define	MC_CMD_NVRAM_TYPE_EXP_ROM 0x7
7873 /* enum: Expansion Rom Configuration Port0. */
7874 #define	MC_CMD_NVRAM_TYPE_EXP_ROM_CFG_PORT0 0x8
7875 /* enum: Expansion Rom Configuration Port1. */
7876 #define	MC_CMD_NVRAM_TYPE_EXP_ROM_CFG_PORT1 0x9
7877 /* enum: Phy Configuration Port0. */
7878 #define	MC_CMD_NVRAM_TYPE_PHY_PORT0 0xa
7879 /* enum: Phy Configuration Port1. */
7880 #define	MC_CMD_NVRAM_TYPE_PHY_PORT1 0xb
7881 /* enum: Log. */
7882 #define	MC_CMD_NVRAM_TYPE_LOG 0xc
7883 /* enum: FPGA image. */
7884 #define	MC_CMD_NVRAM_TYPE_FPGA 0xd
7885 /* enum: FPGA backup image */
7886 #define	MC_CMD_NVRAM_TYPE_FPGA_BACKUP 0xe
7887 /* enum: FC firmware. */
7888 #define	MC_CMD_NVRAM_TYPE_FC_FW 0xf
7889 /* enum: FC backup firmware. */
7890 #define	MC_CMD_NVRAM_TYPE_FC_FW_BACKUP 0x10
7891 /* enum: CPLD image. */
7892 #define	MC_CMD_NVRAM_TYPE_CPLD 0x11
7893 /* enum: Licensing information. */
7894 #define	MC_CMD_NVRAM_TYPE_LICENSE 0x12
7895 /* enum: FC Log. */
7896 #define	MC_CMD_NVRAM_TYPE_FC_LOG 0x13
7897 /* enum: Additional flash on FPGA. */
7898 #define	MC_CMD_NVRAM_TYPE_FC_EXTRA 0x14
7899 
7900 
7901 /***********************************/
7902 /* MC_CMD_NVRAM_INFO
7903  * Read info about a virtual NVRAM partition. Locks required: none. Returns: 0,
7904  * EINVAL (bad type).
7905  */
7906 #define	MC_CMD_NVRAM_INFO 0x37
7907 #define	MC_CMD_NVRAM_INFO_MSGSET 0x37
7908 #undef	MC_CMD_0x37_PRIVILEGE_CTG
7909 
7910 #define	MC_CMD_0x37_PRIVILEGE_CTG SRIOV_CTG_ADMIN
7911 
7912 /* MC_CMD_NVRAM_INFO_IN msgrequest */
7913 #define	MC_CMD_NVRAM_INFO_IN_LEN 4
7914 #define	MC_CMD_NVRAM_INFO_IN_TYPE_OFST 0
7915 #define	MC_CMD_NVRAM_INFO_IN_TYPE_LEN 4
7916 /*            Enum values, see field(s): */
7917 /*               MC_CMD_NVRAM_TYPES/MC_CMD_NVRAM_TYPES_OUT/TYPES */
7918 
7919 /* MC_CMD_NVRAM_INFO_OUT msgresponse */
7920 #define	MC_CMD_NVRAM_INFO_OUT_LEN 24
7921 #define	MC_CMD_NVRAM_INFO_OUT_TYPE_OFST 0
7922 #define	MC_CMD_NVRAM_INFO_OUT_TYPE_LEN 4
7923 /*            Enum values, see field(s): */
7924 /*               MC_CMD_NVRAM_TYPES/MC_CMD_NVRAM_TYPES_OUT/TYPES */
7925 #define	MC_CMD_NVRAM_INFO_OUT_SIZE_OFST 4
7926 #define	MC_CMD_NVRAM_INFO_OUT_SIZE_LEN 4
7927 #define	MC_CMD_NVRAM_INFO_OUT_ERASESIZE_OFST 8
7928 #define	MC_CMD_NVRAM_INFO_OUT_ERASESIZE_LEN 4
7929 #define	MC_CMD_NVRAM_INFO_OUT_FLAGS_OFST 12
7930 #define	MC_CMD_NVRAM_INFO_OUT_FLAGS_LEN 4
7931 #define	MC_CMD_NVRAM_INFO_OUT_PROTECTED_OFST 12
7932 #define	MC_CMD_NVRAM_INFO_OUT_PROTECTED_LBN 0
7933 #define	MC_CMD_NVRAM_INFO_OUT_PROTECTED_WIDTH 1
7934 #define	MC_CMD_NVRAM_INFO_OUT_TLV_OFST 12
7935 #define	MC_CMD_NVRAM_INFO_OUT_TLV_LBN 1
7936 #define	MC_CMD_NVRAM_INFO_OUT_TLV_WIDTH 1
7937 #define	MC_CMD_NVRAM_INFO_OUT_READ_ONLY_IF_TSA_BOUND_OFST 12
7938 #define	MC_CMD_NVRAM_INFO_OUT_READ_ONLY_IF_TSA_BOUND_LBN 2
7939 #define	MC_CMD_NVRAM_INFO_OUT_READ_ONLY_IF_TSA_BOUND_WIDTH 1
7940 #define	MC_CMD_NVRAM_INFO_OUT_CRC_OFST 12
7941 #define	MC_CMD_NVRAM_INFO_OUT_CRC_LBN 3
7942 #define	MC_CMD_NVRAM_INFO_OUT_CRC_WIDTH 1
7943 #define	MC_CMD_NVRAM_INFO_OUT_READ_ONLY_OFST 12
7944 #define	MC_CMD_NVRAM_INFO_OUT_READ_ONLY_LBN 5
7945 #define	MC_CMD_NVRAM_INFO_OUT_READ_ONLY_WIDTH 1
7946 #define	MC_CMD_NVRAM_INFO_OUT_CMAC_OFST 12
7947 #define	MC_CMD_NVRAM_INFO_OUT_CMAC_LBN 6
7948 #define	MC_CMD_NVRAM_INFO_OUT_CMAC_WIDTH 1
7949 #define	MC_CMD_NVRAM_INFO_OUT_A_B_OFST 12
7950 #define	MC_CMD_NVRAM_INFO_OUT_A_B_LBN 7
7951 #define	MC_CMD_NVRAM_INFO_OUT_A_B_WIDTH 1
7952 #define	MC_CMD_NVRAM_INFO_OUT_PHYSDEV_OFST 16
7953 #define	MC_CMD_NVRAM_INFO_OUT_PHYSDEV_LEN 4
7954 #define	MC_CMD_NVRAM_INFO_OUT_PHYSADDR_OFST 20
7955 #define	MC_CMD_NVRAM_INFO_OUT_PHYSADDR_LEN 4
7956 
7957 /* MC_CMD_NVRAM_INFO_V2_OUT msgresponse */
7958 #define	MC_CMD_NVRAM_INFO_V2_OUT_LEN 28
7959 #define	MC_CMD_NVRAM_INFO_V2_OUT_TYPE_OFST 0
7960 #define	MC_CMD_NVRAM_INFO_V2_OUT_TYPE_LEN 4
7961 /*            Enum values, see field(s): */
7962 /*               MC_CMD_NVRAM_TYPES/MC_CMD_NVRAM_TYPES_OUT/TYPES */
7963 #define	MC_CMD_NVRAM_INFO_V2_OUT_SIZE_OFST 4
7964 #define	MC_CMD_NVRAM_INFO_V2_OUT_SIZE_LEN 4
7965 #define	MC_CMD_NVRAM_INFO_V2_OUT_ERASESIZE_OFST 8
7966 #define	MC_CMD_NVRAM_INFO_V2_OUT_ERASESIZE_LEN 4
7967 #define	MC_CMD_NVRAM_INFO_V2_OUT_FLAGS_OFST 12
7968 #define	MC_CMD_NVRAM_INFO_V2_OUT_FLAGS_LEN 4
7969 #define	MC_CMD_NVRAM_INFO_V2_OUT_PROTECTED_OFST 12
7970 #define	MC_CMD_NVRAM_INFO_V2_OUT_PROTECTED_LBN 0
7971 #define	MC_CMD_NVRAM_INFO_V2_OUT_PROTECTED_WIDTH 1
7972 #define	MC_CMD_NVRAM_INFO_V2_OUT_TLV_OFST 12
7973 #define	MC_CMD_NVRAM_INFO_V2_OUT_TLV_LBN 1
7974 #define	MC_CMD_NVRAM_INFO_V2_OUT_TLV_WIDTH 1
7975 #define	MC_CMD_NVRAM_INFO_V2_OUT_READ_ONLY_IF_TSA_BOUND_OFST 12
7976 #define	MC_CMD_NVRAM_INFO_V2_OUT_READ_ONLY_IF_TSA_BOUND_LBN 2
7977 #define	MC_CMD_NVRAM_INFO_V2_OUT_READ_ONLY_IF_TSA_BOUND_WIDTH 1
7978 #define	MC_CMD_NVRAM_INFO_V2_OUT_READ_ONLY_OFST 12
7979 #define	MC_CMD_NVRAM_INFO_V2_OUT_READ_ONLY_LBN 5
7980 #define	MC_CMD_NVRAM_INFO_V2_OUT_READ_ONLY_WIDTH 1
7981 #define	MC_CMD_NVRAM_INFO_V2_OUT_A_B_OFST 12
7982 #define	MC_CMD_NVRAM_INFO_V2_OUT_A_B_LBN 7
7983 #define	MC_CMD_NVRAM_INFO_V2_OUT_A_B_WIDTH 1
7984 #define	MC_CMD_NVRAM_INFO_V2_OUT_PHYSDEV_OFST 16
7985 #define	MC_CMD_NVRAM_INFO_V2_OUT_PHYSDEV_LEN 4
7986 #define	MC_CMD_NVRAM_INFO_V2_OUT_PHYSADDR_OFST 20
7987 #define	MC_CMD_NVRAM_INFO_V2_OUT_PHYSADDR_LEN 4
7988 /* Writes must be multiples of this size. Added to support the MUM on Sorrento.
7989  */
7990 #define	MC_CMD_NVRAM_INFO_V2_OUT_WRITESIZE_OFST 24
7991 #define	MC_CMD_NVRAM_INFO_V2_OUT_WRITESIZE_LEN 4
7992 
7993 
7994 /***********************************/
7995 /* MC_CMD_NVRAM_UPDATE_START
7996  * Start a group of update operations on a virtual NVRAM partition. Locks
7997  * required: PHY_LOCK if type==*PHY*. Returns: 0, EINVAL (bad type), EACCES (if
7998  * PHY_LOCK required and not held). In an adapter bound to a TSA controller,
7999  * MC_CMD_NVRAM_UPDATE_START can only be used on a subset of partition types
8000  * i.e. static config, dynamic config and expansion ROM config. Attempting to
8001  * perform this operation on a restricted partition will return the error
8002  * EPERM.
8003  */
8004 #define	MC_CMD_NVRAM_UPDATE_START 0x38
8005 #define	MC_CMD_NVRAM_UPDATE_START_MSGSET 0x38
8006 #undef	MC_CMD_0x38_PRIVILEGE_CTG
8007 
8008 #define	MC_CMD_0x38_PRIVILEGE_CTG SRIOV_CTG_ADMIN
8009 
8010 /* MC_CMD_NVRAM_UPDATE_START_IN msgrequest: Legacy NVRAM_UPDATE_START request.
8011  * Use NVRAM_UPDATE_START_V2_IN in new code
8012  */
8013 #define	MC_CMD_NVRAM_UPDATE_START_IN_LEN 4
8014 #define	MC_CMD_NVRAM_UPDATE_START_IN_TYPE_OFST 0
8015 #define	MC_CMD_NVRAM_UPDATE_START_IN_TYPE_LEN 4
8016 /*            Enum values, see field(s): */
8017 /*               MC_CMD_NVRAM_TYPES/MC_CMD_NVRAM_TYPES_OUT/TYPES */
8018 
8019 /* MC_CMD_NVRAM_UPDATE_START_V2_IN msgrequest: Extended NVRAM_UPDATE_START
8020  * request with additional flags indicating version of command in use. See
8021  * MC_CMD_NVRAM_UPDATE_FINISH_V2_OUT for details of extended functionality. Use
8022  * paired up with NVRAM_UPDATE_FINISH_V2_IN.
8023  */
8024 #define	MC_CMD_NVRAM_UPDATE_START_V2_IN_LEN 8
8025 #define	MC_CMD_NVRAM_UPDATE_START_V2_IN_TYPE_OFST 0
8026 #define	MC_CMD_NVRAM_UPDATE_START_V2_IN_TYPE_LEN 4
8027 /*            Enum values, see field(s): */
8028 /*               MC_CMD_NVRAM_TYPES/MC_CMD_NVRAM_TYPES_OUT/TYPES */
8029 #define	MC_CMD_NVRAM_UPDATE_START_V2_IN_FLAGS_OFST 4
8030 #define	MC_CMD_NVRAM_UPDATE_START_V2_IN_FLAGS_LEN 4
8031 #define	MC_CMD_NVRAM_UPDATE_START_V2_IN_FLAG_REPORT_VERIFY_RESULT_OFST 4
8032 #define	MC_CMD_NVRAM_UPDATE_START_V2_IN_FLAG_REPORT_VERIFY_RESULT_LBN 0
8033 #define	MC_CMD_NVRAM_UPDATE_START_V2_IN_FLAG_REPORT_VERIFY_RESULT_WIDTH 1
8034 
8035 /* MC_CMD_NVRAM_UPDATE_START_OUT msgresponse */
8036 #define	MC_CMD_NVRAM_UPDATE_START_OUT_LEN 0
8037 
8038 
8039 /***********************************/
8040 /* MC_CMD_NVRAM_READ
8041  * Read data from a virtual NVRAM partition. Locks required: PHY_LOCK if
8042  * type==*PHY*. Returns: 0, EINVAL (bad type/offset/length), EACCES (if
8043  * PHY_LOCK required and not held)
8044  */
8045 #define	MC_CMD_NVRAM_READ 0x39
8046 #define	MC_CMD_NVRAM_READ_MSGSET 0x39
8047 #undef	MC_CMD_0x39_PRIVILEGE_CTG
8048 
8049 #define	MC_CMD_0x39_PRIVILEGE_CTG SRIOV_CTG_ADMIN
8050 
8051 /* MC_CMD_NVRAM_READ_IN msgrequest */
8052 #define	MC_CMD_NVRAM_READ_IN_LEN 12
8053 #define	MC_CMD_NVRAM_READ_IN_TYPE_OFST 0
8054 #define	MC_CMD_NVRAM_READ_IN_TYPE_LEN 4
8055 /*            Enum values, see field(s): */
8056 /*               MC_CMD_NVRAM_TYPES/MC_CMD_NVRAM_TYPES_OUT/TYPES */
8057 #define	MC_CMD_NVRAM_READ_IN_OFFSET_OFST 4
8058 #define	MC_CMD_NVRAM_READ_IN_OFFSET_LEN 4
8059 /* amount to read in bytes */
8060 #define	MC_CMD_NVRAM_READ_IN_LENGTH_OFST 8
8061 #define	MC_CMD_NVRAM_READ_IN_LENGTH_LEN 4
8062 
8063 /* MC_CMD_NVRAM_READ_IN_V2 msgrequest */
8064 #define	MC_CMD_NVRAM_READ_IN_V2_LEN 16
8065 #define	MC_CMD_NVRAM_READ_IN_V2_TYPE_OFST 0
8066 #define	MC_CMD_NVRAM_READ_IN_V2_TYPE_LEN 4
8067 /*            Enum values, see field(s): */
8068 /*               MC_CMD_NVRAM_TYPES/MC_CMD_NVRAM_TYPES_OUT/TYPES */
8069 #define	MC_CMD_NVRAM_READ_IN_V2_OFFSET_OFST 4
8070 #define	MC_CMD_NVRAM_READ_IN_V2_OFFSET_LEN 4
8071 /* amount to read in bytes */
8072 #define	MC_CMD_NVRAM_READ_IN_V2_LENGTH_OFST 8
8073 #define	MC_CMD_NVRAM_READ_IN_V2_LENGTH_LEN 4
8074 /* Optional control info. If a partition is stored with an A/B versioning
8075  * scheme (i.e. in more than one physical partition in NVRAM) the host can set
8076  * this to control which underlying physical partition is used to read data
8077  * from. This allows it to perform a read-modify-write-verify with the write
8078  * lock continuously held by calling NVRAM_UPDATE_START, reading the old
8079  * contents using MODE=TARGET_CURRENT, overwriting the old partition and then
8080  * verifying by reading with MODE=TARGET_BACKUP.
8081  */
8082 #define	MC_CMD_NVRAM_READ_IN_V2_MODE_OFST 12
8083 #define	MC_CMD_NVRAM_READ_IN_V2_MODE_LEN 4
8084 /* enum: Same as omitting MODE: caller sees data in current partition unless it
8085  * holds the write lock in which case it sees data in the partition it is
8086  * updating.
8087  */
8088 #define	MC_CMD_NVRAM_READ_IN_V2_DEFAULT 0x0
8089 /* enum: Read from the current partition of an A/B pair, even if holding the
8090  * write lock.
8091  */
8092 #define	MC_CMD_NVRAM_READ_IN_V2_TARGET_CURRENT 0x1
8093 /* enum: Read from the non-current (i.e. to be updated) partition of an A/B
8094  * pair
8095  */
8096 #define	MC_CMD_NVRAM_READ_IN_V2_TARGET_BACKUP 0x2
8097 
8098 /* MC_CMD_NVRAM_READ_OUT msgresponse */
8099 #define	MC_CMD_NVRAM_READ_OUT_LENMIN 1
8100 #define	MC_CMD_NVRAM_READ_OUT_LENMAX 252
8101 #define	MC_CMD_NVRAM_READ_OUT_LENMAX_MCDI2 1020
8102 #define	MC_CMD_NVRAM_READ_OUT_LEN(num) (0+1*(num))
8103 #define	MC_CMD_NVRAM_READ_OUT_READ_BUFFER_NUM(len) (((len)-0)/1)
8104 #define	MC_CMD_NVRAM_READ_OUT_READ_BUFFER_OFST 0
8105 #define	MC_CMD_NVRAM_READ_OUT_READ_BUFFER_LEN 1
8106 #define	MC_CMD_NVRAM_READ_OUT_READ_BUFFER_MINNUM 1
8107 #define	MC_CMD_NVRAM_READ_OUT_READ_BUFFER_MAXNUM 252
8108 #define	MC_CMD_NVRAM_READ_OUT_READ_BUFFER_MAXNUM_MCDI2 1020
8109 
8110 
8111 /***********************************/
8112 /* MC_CMD_NVRAM_WRITE
8113  * Write data to a virtual NVRAM partition. Locks required: PHY_LOCK if
8114  * type==*PHY*. Returns: 0, EINVAL (bad type/offset/length), EACCES (if
8115  * PHY_LOCK required and not held)
8116  */
8117 #define	MC_CMD_NVRAM_WRITE 0x3a
8118 #define	MC_CMD_NVRAM_WRITE_MSGSET 0x3a
8119 #undef	MC_CMD_0x3a_PRIVILEGE_CTG
8120 
8121 #define	MC_CMD_0x3a_PRIVILEGE_CTG SRIOV_CTG_ADMIN
8122 
8123 /* MC_CMD_NVRAM_WRITE_IN msgrequest */
8124 #define	MC_CMD_NVRAM_WRITE_IN_LENMIN 13
8125 #define	MC_CMD_NVRAM_WRITE_IN_LENMAX 252
8126 #define	MC_CMD_NVRAM_WRITE_IN_LENMAX_MCDI2 1020
8127 #define	MC_CMD_NVRAM_WRITE_IN_LEN(num) (12+1*(num))
8128 #define	MC_CMD_NVRAM_WRITE_IN_WRITE_BUFFER_NUM(len) (((len)-12)/1)
8129 #define	MC_CMD_NVRAM_WRITE_IN_TYPE_OFST 0
8130 #define	MC_CMD_NVRAM_WRITE_IN_TYPE_LEN 4
8131 /*            Enum values, see field(s): */
8132 /*               MC_CMD_NVRAM_TYPES/MC_CMD_NVRAM_TYPES_OUT/TYPES */
8133 #define	MC_CMD_NVRAM_WRITE_IN_OFFSET_OFST 4
8134 #define	MC_CMD_NVRAM_WRITE_IN_OFFSET_LEN 4
8135 #define	MC_CMD_NVRAM_WRITE_IN_LENGTH_OFST 8
8136 #define	MC_CMD_NVRAM_WRITE_IN_LENGTH_LEN 4
8137 #define	MC_CMD_NVRAM_WRITE_IN_WRITE_BUFFER_OFST 12
8138 #define	MC_CMD_NVRAM_WRITE_IN_WRITE_BUFFER_LEN 1
8139 #define	MC_CMD_NVRAM_WRITE_IN_WRITE_BUFFER_MINNUM 1
8140 #define	MC_CMD_NVRAM_WRITE_IN_WRITE_BUFFER_MAXNUM 240
8141 #define	MC_CMD_NVRAM_WRITE_IN_WRITE_BUFFER_MAXNUM_MCDI2 1008
8142 
8143 /* MC_CMD_NVRAM_WRITE_OUT msgresponse */
8144 #define	MC_CMD_NVRAM_WRITE_OUT_LEN 0
8145 
8146 
8147 /***********************************/
8148 /* MC_CMD_NVRAM_ERASE
8149  * Erase sector(s) from a virtual NVRAM partition. Locks required: PHY_LOCK if
8150  * type==*PHY*. Returns: 0, EINVAL (bad type/offset/length), EACCES (if
8151  * PHY_LOCK required and not held)
8152  */
8153 #define	MC_CMD_NVRAM_ERASE 0x3b
8154 #define	MC_CMD_NVRAM_ERASE_MSGSET 0x3b
8155 #undef	MC_CMD_0x3b_PRIVILEGE_CTG
8156 
8157 #define	MC_CMD_0x3b_PRIVILEGE_CTG SRIOV_CTG_ADMIN
8158 
8159 /* MC_CMD_NVRAM_ERASE_IN msgrequest */
8160 #define	MC_CMD_NVRAM_ERASE_IN_LEN 12
8161 #define	MC_CMD_NVRAM_ERASE_IN_TYPE_OFST 0
8162 #define	MC_CMD_NVRAM_ERASE_IN_TYPE_LEN 4
8163 /*            Enum values, see field(s): */
8164 /*               MC_CMD_NVRAM_TYPES/MC_CMD_NVRAM_TYPES_OUT/TYPES */
8165 #define	MC_CMD_NVRAM_ERASE_IN_OFFSET_OFST 4
8166 #define	MC_CMD_NVRAM_ERASE_IN_OFFSET_LEN 4
8167 #define	MC_CMD_NVRAM_ERASE_IN_LENGTH_OFST 8
8168 #define	MC_CMD_NVRAM_ERASE_IN_LENGTH_LEN 4
8169 
8170 /* MC_CMD_NVRAM_ERASE_OUT msgresponse */
8171 #define	MC_CMD_NVRAM_ERASE_OUT_LEN 0
8172 
8173 
8174 /***********************************/
8175 /* MC_CMD_NVRAM_UPDATE_FINISH
8176  * Finish a group of update operations on a virtual NVRAM partition. Locks
8177  * required: PHY_LOCK if type==*PHY*. Returns: 0, EINVAL (bad type/offset/
8178  * length), EACCES (if PHY_LOCK required and not held). In an adapter bound to
8179  * a TSA controller, MC_CMD_NVRAM_UPDATE_FINISH can only be used on a subset of
8180  * partition types i.e. static config, dynamic config and expansion ROM config.
8181  * Attempting to perform this operation on a restricted partition will return
8182  * the error EPERM.
8183  */
8184 #define	MC_CMD_NVRAM_UPDATE_FINISH 0x3c
8185 #define	MC_CMD_NVRAM_UPDATE_FINISH_MSGSET 0x3c
8186 #undef	MC_CMD_0x3c_PRIVILEGE_CTG
8187 
8188 #define	MC_CMD_0x3c_PRIVILEGE_CTG SRIOV_CTG_ADMIN
8189 
8190 /* MC_CMD_NVRAM_UPDATE_FINISH_IN msgrequest: Legacy NVRAM_UPDATE_FINISH
8191  * request. Use NVRAM_UPDATE_FINISH_V2_IN in new code
8192  */
8193 #define	MC_CMD_NVRAM_UPDATE_FINISH_IN_LEN 8
8194 #define	MC_CMD_NVRAM_UPDATE_FINISH_IN_TYPE_OFST 0
8195 #define	MC_CMD_NVRAM_UPDATE_FINISH_IN_TYPE_LEN 4
8196 /*            Enum values, see field(s): */
8197 /*               MC_CMD_NVRAM_TYPES/MC_CMD_NVRAM_TYPES_OUT/TYPES */
8198 #define	MC_CMD_NVRAM_UPDATE_FINISH_IN_REBOOT_OFST 4
8199 #define	MC_CMD_NVRAM_UPDATE_FINISH_IN_REBOOT_LEN 4
8200 
8201 /* MC_CMD_NVRAM_UPDATE_FINISH_V2_IN msgrequest: Extended NVRAM_UPDATE_FINISH
8202  * request with additional flags indicating version of NVRAM_UPDATE commands in
8203  * use. See MC_CMD_NVRAM_UPDATE_FINISH_V2_OUT for details of extended
8204  * functionality. Use paired up with NVRAM_UPDATE_START_V2_IN.
8205  */
8206 #define	MC_CMD_NVRAM_UPDATE_FINISH_V2_IN_LEN 12
8207 #define	MC_CMD_NVRAM_UPDATE_FINISH_V2_IN_TYPE_OFST 0
8208 #define	MC_CMD_NVRAM_UPDATE_FINISH_V2_IN_TYPE_LEN 4
8209 /*            Enum values, see field(s): */
8210 /*               MC_CMD_NVRAM_TYPES/MC_CMD_NVRAM_TYPES_OUT/TYPES */
8211 #define	MC_CMD_NVRAM_UPDATE_FINISH_V2_IN_REBOOT_OFST 4
8212 #define	MC_CMD_NVRAM_UPDATE_FINISH_V2_IN_REBOOT_LEN 4
8213 #define	MC_CMD_NVRAM_UPDATE_FINISH_V2_IN_FLAGS_OFST 8
8214 #define	MC_CMD_NVRAM_UPDATE_FINISH_V2_IN_FLAGS_LEN 4
8215 #define	MC_CMD_NVRAM_UPDATE_FINISH_V2_IN_FLAG_REPORT_VERIFY_RESULT_OFST 8
8216 #define	MC_CMD_NVRAM_UPDATE_FINISH_V2_IN_FLAG_REPORT_VERIFY_RESULT_LBN 0
8217 #define	MC_CMD_NVRAM_UPDATE_FINISH_V2_IN_FLAG_REPORT_VERIFY_RESULT_WIDTH 1
8218 #define	MC_CMD_NVRAM_UPDATE_FINISH_V2_IN_FLAG_RUN_IN_BACKGROUND_OFST 8
8219 #define	MC_CMD_NVRAM_UPDATE_FINISH_V2_IN_FLAG_RUN_IN_BACKGROUND_LBN 1
8220 #define	MC_CMD_NVRAM_UPDATE_FINISH_V2_IN_FLAG_RUN_IN_BACKGROUND_WIDTH 1
8221 #define	MC_CMD_NVRAM_UPDATE_FINISH_V2_IN_FLAG_POLL_VERIFY_RESULT_OFST 8
8222 #define	MC_CMD_NVRAM_UPDATE_FINISH_V2_IN_FLAG_POLL_VERIFY_RESULT_LBN 2
8223 #define	MC_CMD_NVRAM_UPDATE_FINISH_V2_IN_FLAG_POLL_VERIFY_RESULT_WIDTH 1
8224 #define	MC_CMD_NVRAM_UPDATE_FINISH_V2_IN_FLAG_ABORT_OFST 8
8225 #define	MC_CMD_NVRAM_UPDATE_FINISH_V2_IN_FLAG_ABORT_LBN 3
8226 #define	MC_CMD_NVRAM_UPDATE_FINISH_V2_IN_FLAG_ABORT_WIDTH 1
8227 
8228 /* MC_CMD_NVRAM_UPDATE_FINISH_OUT msgresponse: Legacy NVRAM_UPDATE_FINISH
8229  * response. Use NVRAM_UPDATE_FINISH_V2_OUT in new code
8230  */
8231 #define	MC_CMD_NVRAM_UPDATE_FINISH_OUT_LEN 0
8232 
8233 /* MC_CMD_NVRAM_UPDATE_FINISH_V2_OUT msgresponse:
8234  *
8235  * Extended NVRAM_UPDATE_FINISH response that communicates the result of secure
8236  * firmware validation where applicable back to the host.
8237  *
8238  * Medford only: For signed firmware images, such as those for medford, the MC
8239  * firmware verifies the signature before marking the firmware image as valid.
8240  * This process takes a few seconds to complete. So is likely to take more than
8241  * the MCDI timeout. Hence signature verification is initiated when
8242  * MC_CMD_NVRAM_UPDATE_FINISH_V2_IN is received by the firmware, however, the
8243  * MCDI command is run in a background MCDI processing thread. This response
8244  * payload includes the results of the signature verification. Note that the
8245  * per-partition nvram lock in firmware is only released after the verification
8246  * has completed.
8247  */
8248 #define	MC_CMD_NVRAM_UPDATE_FINISH_V2_OUT_LEN 4
8249 /* Result of nvram update completion processing. Result codes that indicate an
8250  * internal build failure and therefore not expected to be seen by customers in
8251  * the field are marked with a prefix 'Internal-error'.
8252  */
8253 #define	MC_CMD_NVRAM_UPDATE_FINISH_V2_OUT_RESULT_CODE_OFST 0
8254 #define	MC_CMD_NVRAM_UPDATE_FINISH_V2_OUT_RESULT_CODE_LEN 4
8255 /* enum: Invalid return code; only non-zero values are defined. Defined as
8256  * unknown for backwards compatibility with NVRAM_UPDATE_FINISH_OUT.
8257  */
8258 #define	MC_CMD_NVRAM_VERIFY_RC_UNKNOWN 0x0
8259 /* enum: Verify succeeded without any errors. */
8260 #define	MC_CMD_NVRAM_VERIFY_RC_SUCCESS 0x1
8261 /* enum: CMS format verification failed due to an internal error. */
8262 #define	MC_CMD_NVRAM_VERIFY_RC_CMS_CHECK_FAILED 0x2
8263 /* enum: Invalid CMS format in image metadata. */
8264 #define	MC_CMD_NVRAM_VERIFY_RC_INVALID_CMS_FORMAT 0x3
8265 /* enum: Message digest verification failed due to an internal error. */
8266 #define	MC_CMD_NVRAM_VERIFY_RC_MESSAGE_DIGEST_CHECK_FAILED 0x4
8267 /* enum: Error in message digest calculated over the reflash-header, payload
8268  * and reflash-trailer.
8269  */
8270 #define	MC_CMD_NVRAM_VERIFY_RC_BAD_MESSAGE_DIGEST 0x5
8271 /* enum: Signature verification failed due to an internal error. */
8272 #define	MC_CMD_NVRAM_VERIFY_RC_SIGNATURE_CHECK_FAILED 0x6
8273 /* enum: There are no valid signatures in the image. */
8274 #define	MC_CMD_NVRAM_VERIFY_RC_NO_VALID_SIGNATURES 0x7
8275 /* enum: Trusted approvers verification failed due to an internal error. */
8276 #define	MC_CMD_NVRAM_VERIFY_RC_TRUSTED_APPROVERS_CHECK_FAILED 0x8
8277 /* enum: The Trusted approver's list is empty. */
8278 #define	MC_CMD_NVRAM_VERIFY_RC_NO_TRUSTED_APPROVERS 0x9
8279 /* enum: Signature chain verification failed due to an internal error. */
8280 #define	MC_CMD_NVRAM_VERIFY_RC_SIGNATURE_CHAIN_CHECK_FAILED 0xa
8281 /* enum: The signers of the signatures in the image are not listed in the
8282  * Trusted approver's list.
8283  */
8284 #define	MC_CMD_NVRAM_VERIFY_RC_NO_SIGNATURE_MATCH 0xb
8285 /* enum: The image contains a test-signed certificate, but the adapter accepts
8286  * only production signed images.
8287  */
8288 #define	MC_CMD_NVRAM_VERIFY_RC_REJECT_TEST_SIGNED 0xc
8289 /* enum: The image has a lower security level than the current firmware. */
8290 #define	MC_CMD_NVRAM_VERIFY_RC_SECURITY_LEVEL_DOWNGRADE 0xd
8291 /* enum: Internal-error. The signed image is missing the 'contents' section,
8292  * where the 'contents' section holds the actual image payload to be applied.
8293  */
8294 #define	MC_CMD_NVRAM_VERIFY_RC_CONTENT_NOT_FOUND 0xe
8295 /* enum: Internal-error. The bundle header is invalid. */
8296 #define	MC_CMD_NVRAM_VERIFY_RC_BUNDLE_CONTENT_HEADER_INVALID 0xf
8297 /* enum: Internal-error. The bundle does not have a valid reflash image layout.
8298  */
8299 #define	MC_CMD_NVRAM_VERIFY_RC_BUNDLE_REFLASH_IMAGE_INVALID 0x10
8300 /* enum: Internal-error. The bundle has an inconsistent layout of components or
8301  * incorrect checksum.
8302  */
8303 #define	MC_CMD_NVRAM_VERIFY_RC_BUNDLE_IMAGE_LAYOUT_INVALID 0x11
8304 /* enum: Internal-error. The bundle manifest is inconsistent with components in
8305  * the bundle.
8306  */
8307 #define	MC_CMD_NVRAM_VERIFY_RC_BUNDLE_MANIFEST_INVALID 0x12
8308 /* enum: Internal-error. The number of components in a bundle do not match the
8309  * number of components advertised by the bundle manifest.
8310  */
8311 #define	MC_CMD_NVRAM_VERIFY_RC_BUNDLE_MANIFEST_NUM_COMPONENTS_MISMATCH 0x13
8312 /* enum: Internal-error. The bundle contains too many components for the MC
8313  * firmware to process
8314  */
8315 #define	MC_CMD_NVRAM_VERIFY_RC_BUNDLE_MANIFEST_TOO_MANY_COMPONENTS 0x14
8316 /* enum: Internal-error. The bundle manifest has an invalid/inconsistent
8317  * component.
8318  */
8319 #define	MC_CMD_NVRAM_VERIFY_RC_BUNDLE_MANIFEST_COMPONENT_INVALID 0x15
8320 /* enum: Internal-error. The hash of a component does not match the hash stored
8321  * in the bundle manifest.
8322  */
8323 #define	MC_CMD_NVRAM_VERIFY_RC_BUNDLE_MANIFEST_COMPONENT_HASH_MISMATCH 0x16
8324 /* enum: Internal-error. Component hash calculation failed. */
8325 #define	MC_CMD_NVRAM_VERIFY_RC_BUNDLE_MANIFEST_COMPONENT_HASH_FAILED 0x17
8326 /* enum: Internal-error. The component does not have a valid reflash image
8327  * layout.
8328  */
8329 #define	MC_CMD_NVRAM_VERIFY_RC_BUNDLE_COMPONENT_REFLASH_IMAGE_INVALID 0x18
8330 /* enum: The bundle processing code failed to copy a component to its target
8331  * partition.
8332  */
8333 #define	MC_CMD_NVRAM_VERIFY_RC_BUNDLE_COMPONENT_COPY_FAILED 0x19
8334 /* enum: The update operation is in-progress. */
8335 #define	MC_CMD_NVRAM_VERIFY_RC_PENDING 0x1a
8336 
8337 
8338 /***********************************/
8339 /* MC_CMD_REBOOT
8340  * Reboot the MC.
8341  *
8342  * The AFTER_ASSERTION flag is intended to be used when the driver notices an
8343  * assertion failure (at which point it is expected to perform a complete tear
8344  * down and reinitialise), to allow both ports to reset the MC once in an
8345  * atomic fashion.
8346  *
8347  * Production mc firmwares are generally compiled with REBOOT_ON_ASSERT=1,
8348  * which means that they will automatically reboot out of the assertion
8349  * handler, so this is in practise an optional operation. It is still
8350  * recommended that drivers execute this to support custom firmwares with
8351  * REBOOT_ON_ASSERT=0.
8352  *
8353  * Locks required: NONE Returns: Nothing. You get back a response with ERR=1,
8354  * DATALEN=0
8355  */
8356 #define	MC_CMD_REBOOT 0x3d
8357 #define	MC_CMD_REBOOT_MSGSET 0x3d
8358 #undef	MC_CMD_0x3d_PRIVILEGE_CTG
8359 
8360 #define	MC_CMD_0x3d_PRIVILEGE_CTG SRIOV_CTG_ADMIN_TSA_UNBOUND
8361 
8362 /* MC_CMD_REBOOT_IN msgrequest */
8363 #define	MC_CMD_REBOOT_IN_LEN 4
8364 #define	MC_CMD_REBOOT_IN_FLAGS_OFST 0
8365 #define	MC_CMD_REBOOT_IN_FLAGS_LEN 4
8366 #define	MC_CMD_REBOOT_FLAGS_AFTER_ASSERTION 0x1 /* enum */
8367 
8368 /* MC_CMD_REBOOT_OUT msgresponse */
8369 #define	MC_CMD_REBOOT_OUT_LEN 0
8370 
8371 
8372 /***********************************/
8373 /* MC_CMD_SCHEDINFO
8374  * Request scheduler info. Locks required: NONE. Returns: An array of
8375  * (timeslice,maximum overrun), one for each thread, in ascending order of
8376  * thread address.
8377  */
8378 #define	MC_CMD_SCHEDINFO 0x3e
8379 #define	MC_CMD_SCHEDINFO_MSGSET 0x3e
8380 #undef	MC_CMD_0x3e_PRIVILEGE_CTG
8381 
8382 #define	MC_CMD_0x3e_PRIVILEGE_CTG SRIOV_CTG_ADMIN
8383 
8384 /* MC_CMD_SCHEDINFO_IN msgrequest */
8385 #define	MC_CMD_SCHEDINFO_IN_LEN 0
8386 
8387 /* MC_CMD_SCHEDINFO_OUT msgresponse */
8388 #define	MC_CMD_SCHEDINFO_OUT_LENMIN 4
8389 #define	MC_CMD_SCHEDINFO_OUT_LENMAX 252
8390 #define	MC_CMD_SCHEDINFO_OUT_LENMAX_MCDI2 1020
8391 #define	MC_CMD_SCHEDINFO_OUT_LEN(num) (0+4*(num))
8392 #define	MC_CMD_SCHEDINFO_OUT_DATA_NUM(len) (((len)-0)/4)
8393 #define	MC_CMD_SCHEDINFO_OUT_DATA_OFST 0
8394 #define	MC_CMD_SCHEDINFO_OUT_DATA_LEN 4
8395 #define	MC_CMD_SCHEDINFO_OUT_DATA_MINNUM 1
8396 #define	MC_CMD_SCHEDINFO_OUT_DATA_MAXNUM 63
8397 #define	MC_CMD_SCHEDINFO_OUT_DATA_MAXNUM_MCDI2 255
8398 
8399 
8400 /***********************************/
8401 /* MC_CMD_REBOOT_MODE
8402  * Set the mode for the next MC reboot. Locks required: NONE. Sets the reboot
8403  * mode to the specified value. Returns the old mode.
8404  */
8405 #define	MC_CMD_REBOOT_MODE 0x3f
8406 #define	MC_CMD_REBOOT_MODE_MSGSET 0x3f
8407 #undef	MC_CMD_0x3f_PRIVILEGE_CTG
8408 
8409 #define	MC_CMD_0x3f_PRIVILEGE_CTG SRIOV_CTG_INSECURE
8410 
8411 /* MC_CMD_REBOOT_MODE_IN msgrequest */
8412 #define	MC_CMD_REBOOT_MODE_IN_LEN 4
8413 #define	MC_CMD_REBOOT_MODE_IN_VALUE_OFST 0
8414 #define	MC_CMD_REBOOT_MODE_IN_VALUE_LEN 4
8415 /* enum: Normal. */
8416 #define	MC_CMD_REBOOT_MODE_NORMAL 0x0
8417 /* enum: Power-on Reset. */
8418 #define	MC_CMD_REBOOT_MODE_POR 0x2
8419 /* enum: Snapper. */
8420 #define	MC_CMD_REBOOT_MODE_SNAPPER 0x3
8421 /* enum: snapper fake POR */
8422 #define	MC_CMD_REBOOT_MODE_SNAPPER_POR 0x4
8423 #define	MC_CMD_REBOOT_MODE_IN_FAKE_OFST 0
8424 #define	MC_CMD_REBOOT_MODE_IN_FAKE_LBN 7
8425 #define	MC_CMD_REBOOT_MODE_IN_FAKE_WIDTH 1
8426 
8427 /* MC_CMD_REBOOT_MODE_OUT msgresponse */
8428 #define	MC_CMD_REBOOT_MODE_OUT_LEN 4
8429 #define	MC_CMD_REBOOT_MODE_OUT_VALUE_OFST 0
8430 #define	MC_CMD_REBOOT_MODE_OUT_VALUE_LEN 4
8431 
8432 
8433 /***********************************/
8434 /* MC_CMD_SENSOR_INFO
8435  * Returns information about every available sensor.
8436  *
8437  * Each sensor has a single (16bit) value, and a corresponding state. The
8438  * mapping between value and state is nominally determined by the MC, but may
8439  * be implemented using up to 2 ranges per sensor.
8440  *
8441  * This call returns a mask (32bit) of the sensors that are supported by this
8442  * platform, then an array of sensor information structures, in order of sensor
8443  * type (but without gaps for unimplemented sensors). Each structure defines
8444  * the ranges for the corresponding sensor. An unused range is indicated by
8445  * equal limit values. If one range is used, a value outside that range results
8446  * in STATE_FATAL. If two ranges are used, a value outside the second range
8447  * results in STATE_FATAL while a value outside the first and inside the second
8448  * range results in STATE_WARNING.
8449  *
8450  * Sensor masks and sensor information arrays are organised into pages. For
8451  * backward compatibility, older host software can only use sensors in page 0.
8452  * Bit 32 in the sensor mask was previously unused, and is no reserved for use
8453  * as the next page flag.
8454  *
8455  * If the request does not contain a PAGE value then firmware will only return
8456  * page 0 of sensor information, with bit 31 in the sensor mask cleared.
8457  *
8458  * If the request contains a PAGE value then firmware responds with the sensor
8459  * mask and sensor information array for that page of sensors. In this case bit
8460  * 31 in the mask is set if another page exists.
8461  *
8462  * Locks required: None Returns: 0
8463  */
8464 #define	MC_CMD_SENSOR_INFO 0x41
8465 #define	MC_CMD_SENSOR_INFO_MSGSET 0x41
8466 #undef	MC_CMD_0x41_PRIVILEGE_CTG
8467 
8468 #define	MC_CMD_0x41_PRIVILEGE_CTG SRIOV_CTG_GENERAL
8469 
8470 /* MC_CMD_SENSOR_INFO_IN msgrequest */
8471 #define	MC_CMD_SENSOR_INFO_IN_LEN 0
8472 
8473 /* MC_CMD_SENSOR_INFO_EXT_IN msgrequest */
8474 #define	MC_CMD_SENSOR_INFO_EXT_IN_LEN 4
8475 /* Which page of sensors to report.
8476  *
8477  * Page 0 contains sensors 0 to 30 (sensor 31 is the next page bit).
8478  *
8479  * Page 1 contains sensors 32 to 62 (sensor 63 is the next page bit). etc.
8480  */
8481 #define	MC_CMD_SENSOR_INFO_EXT_IN_PAGE_OFST 0
8482 #define	MC_CMD_SENSOR_INFO_EXT_IN_PAGE_LEN 4
8483 
8484 /* MC_CMD_SENSOR_INFO_EXT_IN_V2 msgrequest */
8485 #define	MC_CMD_SENSOR_INFO_EXT_IN_V2_LEN 8
8486 /* Which page of sensors to report.
8487  *
8488  * Page 0 contains sensors 0 to 30 (sensor 31 is the next page bit).
8489  *
8490  * Page 1 contains sensors 32 to 62 (sensor 63 is the next page bit). etc.
8491  */
8492 #define	MC_CMD_SENSOR_INFO_EXT_IN_V2_PAGE_OFST 0
8493 #define	MC_CMD_SENSOR_INFO_EXT_IN_V2_PAGE_LEN 4
8494 /* Flags controlling information retrieved */
8495 #define	MC_CMD_SENSOR_INFO_EXT_IN_V2_FLAGS_OFST 4
8496 #define	MC_CMD_SENSOR_INFO_EXT_IN_V2_FLAGS_LEN 4
8497 #define	MC_CMD_SENSOR_INFO_EXT_IN_V2_ENGINEERING_OFST 4
8498 #define	MC_CMD_SENSOR_INFO_EXT_IN_V2_ENGINEERING_LBN 0
8499 #define	MC_CMD_SENSOR_INFO_EXT_IN_V2_ENGINEERING_WIDTH 1
8500 
8501 /* MC_CMD_SENSOR_INFO_OUT msgresponse */
8502 #define	MC_CMD_SENSOR_INFO_OUT_LENMIN 4
8503 #define	MC_CMD_SENSOR_INFO_OUT_LENMAX 252
8504 #define	MC_CMD_SENSOR_INFO_OUT_LENMAX_MCDI2 1020
8505 #define	MC_CMD_SENSOR_INFO_OUT_LEN(num) (4+8*(num))
8506 #define	MC_CMD_SENSOR_INFO_OUT_MC_CMD_SENSOR_ENTRY_NUM(len) (((len)-4)/8)
8507 #define	MC_CMD_SENSOR_INFO_OUT_MASK_OFST 0
8508 #define	MC_CMD_SENSOR_INFO_OUT_MASK_LEN 4
8509 /* enum: Controller temperature: degC */
8510 #define	MC_CMD_SENSOR_CONTROLLER_TEMP 0x0
8511 /* enum: Phy common temperature: degC */
8512 #define	MC_CMD_SENSOR_PHY_COMMON_TEMP 0x1
8513 /* enum: Controller cooling: bool */
8514 #define	MC_CMD_SENSOR_CONTROLLER_COOLING 0x2
8515 /* enum: Phy 0 temperature: degC */
8516 #define	MC_CMD_SENSOR_PHY0_TEMP 0x3
8517 /* enum: Phy 0 cooling: bool */
8518 #define	MC_CMD_SENSOR_PHY0_COOLING 0x4
8519 /* enum: Phy 1 temperature: degC */
8520 #define	MC_CMD_SENSOR_PHY1_TEMP 0x5
8521 /* enum: Phy 1 cooling: bool */
8522 #define	MC_CMD_SENSOR_PHY1_COOLING 0x6
8523 /* enum: 1.0v power: mV */
8524 #define	MC_CMD_SENSOR_IN_1V0 0x7
8525 /* enum: 1.2v power: mV */
8526 #define	MC_CMD_SENSOR_IN_1V2 0x8
8527 /* enum: 1.8v power: mV */
8528 #define	MC_CMD_SENSOR_IN_1V8 0x9
8529 /* enum: 2.5v power: mV */
8530 #define	MC_CMD_SENSOR_IN_2V5 0xa
8531 /* enum: 3.3v power: mV */
8532 #define	MC_CMD_SENSOR_IN_3V3 0xb
8533 /* enum: 12v power: mV */
8534 #define	MC_CMD_SENSOR_IN_12V0 0xc
8535 /* enum: 1.2v analogue power: mV */
8536 #define	MC_CMD_SENSOR_IN_1V2A 0xd
8537 /* enum: reference voltage: mV */
8538 #define	MC_CMD_SENSOR_IN_VREF 0xe
8539 /* enum: AOE FPGA power: mV */
8540 #define	MC_CMD_SENSOR_OUT_VAOE 0xf
8541 /* enum: AOE FPGA temperature: degC */
8542 #define	MC_CMD_SENSOR_AOE_TEMP 0x10
8543 /* enum: AOE FPGA PSU temperature: degC */
8544 #define	MC_CMD_SENSOR_PSU_AOE_TEMP 0x11
8545 /* enum: AOE PSU temperature: degC */
8546 #define	MC_CMD_SENSOR_PSU_TEMP 0x12
8547 /* enum: Fan 0 speed: RPM */
8548 #define	MC_CMD_SENSOR_FAN_0 0x13
8549 /* enum: Fan 1 speed: RPM */
8550 #define	MC_CMD_SENSOR_FAN_1 0x14
8551 /* enum: Fan 2 speed: RPM */
8552 #define	MC_CMD_SENSOR_FAN_2 0x15
8553 /* enum: Fan 3 speed: RPM */
8554 #define	MC_CMD_SENSOR_FAN_3 0x16
8555 /* enum: Fan 4 speed: RPM */
8556 #define	MC_CMD_SENSOR_FAN_4 0x17
8557 /* enum: AOE FPGA input power: mV */
8558 #define	MC_CMD_SENSOR_IN_VAOE 0x18
8559 /* enum: AOE FPGA current: mA */
8560 #define	MC_CMD_SENSOR_OUT_IAOE 0x19
8561 /* enum: AOE FPGA input current: mA */
8562 #define	MC_CMD_SENSOR_IN_IAOE 0x1a
8563 /* enum: NIC power consumption: W */
8564 #define	MC_CMD_SENSOR_NIC_POWER 0x1b
8565 /* enum: 0.9v power voltage: mV */
8566 #define	MC_CMD_SENSOR_IN_0V9 0x1c
8567 /* enum: 0.9v power current: mA */
8568 #define	MC_CMD_SENSOR_IN_I0V9 0x1d
8569 /* enum: 1.2v power current: mA */
8570 #define	MC_CMD_SENSOR_IN_I1V2 0x1e
8571 /* enum: Not a sensor: reserved for the next page flag */
8572 #define	MC_CMD_SENSOR_PAGE0_NEXT 0x1f
8573 /* enum: 0.9v power voltage (at ADC): mV */
8574 #define	MC_CMD_SENSOR_IN_0V9_ADC 0x20
8575 /* enum: Controller temperature 2: degC */
8576 #define	MC_CMD_SENSOR_CONTROLLER_2_TEMP 0x21
8577 /* enum: Voltage regulator internal temperature: degC */
8578 #define	MC_CMD_SENSOR_VREG_INTERNAL_TEMP 0x22
8579 /* enum: 0.9V voltage regulator temperature: degC */
8580 #define	MC_CMD_SENSOR_VREG_0V9_TEMP 0x23
8581 /* enum: 1.2V voltage regulator temperature: degC */
8582 #define	MC_CMD_SENSOR_VREG_1V2_TEMP 0x24
8583 /* enum: controller internal temperature sensor voltage (internal ADC): mV */
8584 #define	MC_CMD_SENSOR_CONTROLLER_VPTAT 0x25
8585 /* enum: controller internal temperature (internal ADC): degC */
8586 #define	MC_CMD_SENSOR_CONTROLLER_INTERNAL_TEMP 0x26
8587 /* enum: controller internal temperature sensor voltage (external ADC): mV */
8588 #define	MC_CMD_SENSOR_CONTROLLER_VPTAT_EXTADC 0x27
8589 /* enum: controller internal temperature (external ADC): degC */
8590 #define	MC_CMD_SENSOR_CONTROLLER_INTERNAL_TEMP_EXTADC 0x28
8591 /* enum: ambient temperature: degC */
8592 #define	MC_CMD_SENSOR_AMBIENT_TEMP 0x29
8593 /* enum: air flow: bool */
8594 #define	MC_CMD_SENSOR_AIRFLOW 0x2a
8595 /* enum: voltage between VSS08D and VSS08D at CSR: mV */
8596 #define	MC_CMD_SENSOR_VDD08D_VSS08D_CSR 0x2b
8597 /* enum: voltage between VSS08D and VSS08D at CSR (external ADC): mV */
8598 #define	MC_CMD_SENSOR_VDD08D_VSS08D_CSR_EXTADC 0x2c
8599 /* enum: Hotpoint temperature: degC */
8600 #define	MC_CMD_SENSOR_HOTPOINT_TEMP 0x2d
8601 /* enum: Port 0 PHY power switch over-current: bool */
8602 #define	MC_CMD_SENSOR_PHY_POWER_PORT0 0x2e
8603 /* enum: Port 1 PHY power switch over-current: bool */
8604 #define	MC_CMD_SENSOR_PHY_POWER_PORT1 0x2f
8605 /* enum: Mop-up microcontroller reference voltage: mV */
8606 #define	MC_CMD_SENSOR_MUM_VCC 0x30
8607 /* enum: 0.9v power phase A voltage: mV */
8608 #define	MC_CMD_SENSOR_IN_0V9_A 0x31
8609 /* enum: 0.9v power phase A current: mA */
8610 #define	MC_CMD_SENSOR_IN_I0V9_A 0x32
8611 /* enum: 0.9V voltage regulator phase A temperature: degC */
8612 #define	MC_CMD_SENSOR_VREG_0V9_A_TEMP 0x33
8613 /* enum: 0.9v power phase B voltage: mV */
8614 #define	MC_CMD_SENSOR_IN_0V9_B 0x34
8615 /* enum: 0.9v power phase B current: mA */
8616 #define	MC_CMD_SENSOR_IN_I0V9_B 0x35
8617 /* enum: 0.9V voltage regulator phase B temperature: degC */
8618 #define	MC_CMD_SENSOR_VREG_0V9_B_TEMP 0x36
8619 /* enum: CCOM AVREG 1v2 supply (interval ADC): mV */
8620 #define	MC_CMD_SENSOR_CCOM_AVREG_1V2_SUPPLY 0x37
8621 /* enum: CCOM AVREG 1v2 supply (external ADC): mV */
8622 #define	MC_CMD_SENSOR_CCOM_AVREG_1V2_SUPPLY_EXTADC 0x38
8623 /* enum: CCOM AVREG 1v8 supply (interval ADC): mV */
8624 #define	MC_CMD_SENSOR_CCOM_AVREG_1V8_SUPPLY 0x39
8625 /* enum: CCOM AVREG 1v8 supply (external ADC): mV */
8626 #define	MC_CMD_SENSOR_CCOM_AVREG_1V8_SUPPLY_EXTADC 0x3a
8627 /* enum: CCOM RTS temperature: degC */
8628 #define	MC_CMD_SENSOR_CONTROLLER_RTS 0x3b
8629 /* enum: Not a sensor: reserved for the next page flag */
8630 #define	MC_CMD_SENSOR_PAGE1_NEXT 0x3f
8631 /* enum: controller internal temperature sensor voltage on master core
8632  * (internal ADC): mV
8633  */
8634 #define	MC_CMD_SENSOR_CONTROLLER_MASTER_VPTAT 0x40
8635 /* enum: controller internal temperature on master core (internal ADC): degC */
8636 #define	MC_CMD_SENSOR_CONTROLLER_MASTER_INTERNAL_TEMP 0x41
8637 /* enum: controller internal temperature sensor voltage on master core
8638  * (external ADC): mV
8639  */
8640 #define	MC_CMD_SENSOR_CONTROLLER_MASTER_VPTAT_EXTADC 0x42
8641 /* enum: controller internal temperature on master core (external ADC): degC */
8642 #define	MC_CMD_SENSOR_CONTROLLER_MASTER_INTERNAL_TEMP_EXTADC 0x43
8643 /* enum: controller internal temperature on slave core sensor voltage (internal
8644  * ADC): mV
8645  */
8646 #define	MC_CMD_SENSOR_CONTROLLER_SLAVE_VPTAT 0x44
8647 /* enum: controller internal temperature on slave core (internal ADC): degC */
8648 #define	MC_CMD_SENSOR_CONTROLLER_SLAVE_INTERNAL_TEMP 0x45
8649 /* enum: controller internal temperature on slave core sensor voltage (external
8650  * ADC): mV
8651  */
8652 #define	MC_CMD_SENSOR_CONTROLLER_SLAVE_VPTAT_EXTADC 0x46
8653 /* enum: controller internal temperature on slave core (external ADC): degC */
8654 #define	MC_CMD_SENSOR_CONTROLLER_SLAVE_INTERNAL_TEMP_EXTADC 0x47
8655 /* enum: Voltage supplied to the SODIMMs from their power supply: mV */
8656 #define	MC_CMD_SENSOR_SODIMM_VOUT 0x49
8657 /* enum: Temperature of SODIMM 0 (if installed): degC */
8658 #define	MC_CMD_SENSOR_SODIMM_0_TEMP 0x4a
8659 /* enum: Temperature of SODIMM 1 (if installed): degC */
8660 #define	MC_CMD_SENSOR_SODIMM_1_TEMP 0x4b
8661 /* enum: Voltage supplied to the QSFP #0 from their power supply: mV */
8662 #define	MC_CMD_SENSOR_PHY0_VCC 0x4c
8663 /* enum: Voltage supplied to the QSFP #1 from their power supply: mV */
8664 #define	MC_CMD_SENSOR_PHY1_VCC 0x4d
8665 /* enum: Controller die temperature (TDIODE): degC */
8666 #define	MC_CMD_SENSOR_CONTROLLER_TDIODE_TEMP 0x4e
8667 /* enum: Board temperature (front): degC */
8668 #define	MC_CMD_SENSOR_BOARD_FRONT_TEMP 0x4f
8669 /* enum: Board temperature (back): degC */
8670 #define	MC_CMD_SENSOR_BOARD_BACK_TEMP 0x50
8671 /* enum: 1.8v power current: mA */
8672 #define	MC_CMD_SENSOR_IN_I1V8 0x51
8673 /* enum: 2.5v power current: mA */
8674 #define	MC_CMD_SENSOR_IN_I2V5 0x52
8675 /* enum: 3.3v power current: mA */
8676 #define	MC_CMD_SENSOR_IN_I3V3 0x53
8677 /* enum: 12v power current: mA */
8678 #define	MC_CMD_SENSOR_IN_I12V0 0x54
8679 /* enum: 1.3v power: mV */
8680 #define	MC_CMD_SENSOR_IN_1V3 0x55
8681 /* enum: 1.3v power current: mA */
8682 #define	MC_CMD_SENSOR_IN_I1V3 0x56
8683 /* enum: Engineering sensor 1 */
8684 #define	MC_CMD_SENSOR_ENGINEERING_1 0x57
8685 /* enum: Engineering sensor 2 */
8686 #define	MC_CMD_SENSOR_ENGINEERING_2 0x58
8687 /* enum: Engineering sensor 3 */
8688 #define	MC_CMD_SENSOR_ENGINEERING_3 0x59
8689 /* enum: Engineering sensor 4 */
8690 #define	MC_CMD_SENSOR_ENGINEERING_4 0x5a
8691 /* enum: Engineering sensor 5 */
8692 #define	MC_CMD_SENSOR_ENGINEERING_5 0x5b
8693 /* enum: Engineering sensor 6 */
8694 #define	MC_CMD_SENSOR_ENGINEERING_6 0x5c
8695 /* enum: Engineering sensor 7 */
8696 #define	MC_CMD_SENSOR_ENGINEERING_7 0x5d
8697 /* enum: Engineering sensor 8 */
8698 #define	MC_CMD_SENSOR_ENGINEERING_8 0x5e
8699 /* enum: Not a sensor: reserved for the next page flag */
8700 #define	MC_CMD_SENSOR_PAGE2_NEXT 0x5f
8701 /* MC_CMD_SENSOR_INFO_ENTRY_TYPEDEF */
8702 #define	MC_CMD_SENSOR_ENTRY_OFST 4
8703 #define	MC_CMD_SENSOR_ENTRY_LEN 8
8704 #define	MC_CMD_SENSOR_ENTRY_LO_OFST 4
8705 #define	MC_CMD_SENSOR_ENTRY_LO_LEN 4
8706 #define	MC_CMD_SENSOR_ENTRY_LO_LBN 32
8707 #define	MC_CMD_SENSOR_ENTRY_LO_WIDTH 32
8708 #define	MC_CMD_SENSOR_ENTRY_HI_OFST 8
8709 #define	MC_CMD_SENSOR_ENTRY_HI_LEN 4
8710 #define	MC_CMD_SENSOR_ENTRY_HI_LBN 64
8711 #define	MC_CMD_SENSOR_ENTRY_HI_WIDTH 32
8712 #define	MC_CMD_SENSOR_ENTRY_MINNUM 0
8713 #define	MC_CMD_SENSOR_ENTRY_MAXNUM 31
8714 #define	MC_CMD_SENSOR_ENTRY_MAXNUM_MCDI2 127
8715 
8716 /* MC_CMD_SENSOR_INFO_EXT_OUT msgresponse */
8717 #define	MC_CMD_SENSOR_INFO_EXT_OUT_LENMIN 4
8718 #define	MC_CMD_SENSOR_INFO_EXT_OUT_LENMAX 252
8719 #define	MC_CMD_SENSOR_INFO_EXT_OUT_LENMAX_MCDI2 1020
8720 #define	MC_CMD_SENSOR_INFO_EXT_OUT_LEN(num) (4+8*(num))
8721 #define	MC_CMD_SENSOR_INFO_EXT_OUT_MC_CMD_SENSOR_ENTRY_NUM(len) (((len)-4)/8)
8722 #define	MC_CMD_SENSOR_INFO_EXT_OUT_MASK_OFST 0
8723 #define	MC_CMD_SENSOR_INFO_EXT_OUT_MASK_LEN 4
8724 /*            Enum values, see field(s): */
8725 /*               MC_CMD_SENSOR_INFO_OUT */
8726 #define	MC_CMD_SENSOR_INFO_EXT_OUT_NEXT_PAGE_OFST 0
8727 #define	MC_CMD_SENSOR_INFO_EXT_OUT_NEXT_PAGE_LBN 31
8728 #define	MC_CMD_SENSOR_INFO_EXT_OUT_NEXT_PAGE_WIDTH 1
8729 /* MC_CMD_SENSOR_INFO_ENTRY_TYPEDEF */
8730 /*            MC_CMD_SENSOR_ENTRY_OFST 4 */
8731 /*            MC_CMD_SENSOR_ENTRY_LEN 8 */
8732 /*            MC_CMD_SENSOR_ENTRY_LO_OFST 4 */
8733 /*            MC_CMD_SENSOR_ENTRY_LO_LEN 4 */
8734 /*            MC_CMD_SENSOR_ENTRY_LO_LBN 32 */
8735 /*            MC_CMD_SENSOR_ENTRY_LO_WIDTH 32 */
8736 /*            MC_CMD_SENSOR_ENTRY_HI_OFST 8 */
8737 /*            MC_CMD_SENSOR_ENTRY_HI_LEN 4 */
8738 /*            MC_CMD_SENSOR_ENTRY_HI_LBN 64 */
8739 /*            MC_CMD_SENSOR_ENTRY_HI_WIDTH 32 */
8740 /*            MC_CMD_SENSOR_ENTRY_MINNUM 0 */
8741 /*            MC_CMD_SENSOR_ENTRY_MAXNUM 31 */
8742 /*            MC_CMD_SENSOR_ENTRY_MAXNUM_MCDI2 127 */
8743 
8744 /* MC_CMD_SENSOR_INFO_ENTRY_TYPEDEF structuredef */
8745 #define	MC_CMD_SENSOR_INFO_ENTRY_TYPEDEF_LEN 8
8746 #define	MC_CMD_SENSOR_INFO_ENTRY_TYPEDEF_MIN1_OFST 0
8747 #define	MC_CMD_SENSOR_INFO_ENTRY_TYPEDEF_MIN1_LEN 2
8748 #define	MC_CMD_SENSOR_INFO_ENTRY_TYPEDEF_MIN1_LBN 0
8749 #define	MC_CMD_SENSOR_INFO_ENTRY_TYPEDEF_MIN1_WIDTH 16
8750 #define	MC_CMD_SENSOR_INFO_ENTRY_TYPEDEF_MAX1_OFST 2
8751 #define	MC_CMD_SENSOR_INFO_ENTRY_TYPEDEF_MAX1_LEN 2
8752 #define	MC_CMD_SENSOR_INFO_ENTRY_TYPEDEF_MAX1_LBN 16
8753 #define	MC_CMD_SENSOR_INFO_ENTRY_TYPEDEF_MAX1_WIDTH 16
8754 #define	MC_CMD_SENSOR_INFO_ENTRY_TYPEDEF_MIN2_OFST 4
8755 #define	MC_CMD_SENSOR_INFO_ENTRY_TYPEDEF_MIN2_LEN 2
8756 #define	MC_CMD_SENSOR_INFO_ENTRY_TYPEDEF_MIN2_LBN 32
8757 #define	MC_CMD_SENSOR_INFO_ENTRY_TYPEDEF_MIN2_WIDTH 16
8758 #define	MC_CMD_SENSOR_INFO_ENTRY_TYPEDEF_MAX2_OFST 6
8759 #define	MC_CMD_SENSOR_INFO_ENTRY_TYPEDEF_MAX2_LEN 2
8760 #define	MC_CMD_SENSOR_INFO_ENTRY_TYPEDEF_MAX2_LBN 48
8761 #define	MC_CMD_SENSOR_INFO_ENTRY_TYPEDEF_MAX2_WIDTH 16
8762 
8763 
8764 /***********************************/
8765 /* MC_CMD_READ_SENSORS
8766  * Returns the current reading from each sensor. DMAs an array of sensor
8767  * readings, in order of sensor type (but without gaps for unimplemented
8768  * sensors), into host memory. Each array element is a
8769  * MC_CMD_SENSOR_VALUE_ENTRY_TYPEDEF dword.
8770  *
8771  * If the request does not contain the LENGTH field then only sensors 0 to 30
8772  * are reported, to avoid DMA buffer overflow in older host software. If the
8773  * sensor reading require more space than the LENGTH allows, then return
8774  * EINVAL.
8775  *
8776  * The MC will send a SENSOREVT event every time any sensor changes state. The
8777  * driver is responsible for ensuring that it doesn't miss any events. The
8778  * board will function normally if all sensors are in STATE_OK or
8779  * STATE_WARNING. Otherwise the board should not be expected to function.
8780  */
8781 #define	MC_CMD_READ_SENSORS 0x42
8782 #define	MC_CMD_READ_SENSORS_MSGSET 0x42
8783 #undef	MC_CMD_0x42_PRIVILEGE_CTG
8784 
8785 #define	MC_CMD_0x42_PRIVILEGE_CTG SRIOV_CTG_GENERAL
8786 
8787 /* MC_CMD_READ_SENSORS_IN msgrequest */
8788 #define	MC_CMD_READ_SENSORS_IN_LEN 8
8789 /* DMA address of host buffer for sensor readings (must be 4Kbyte aligned).
8790  *
8791  * If the address is 0xffffffffffffffff send the readings in the response (used
8792  * by cmdclient).
8793  */
8794 #define	MC_CMD_READ_SENSORS_IN_DMA_ADDR_OFST 0
8795 #define	MC_CMD_READ_SENSORS_IN_DMA_ADDR_LEN 8
8796 #define	MC_CMD_READ_SENSORS_IN_DMA_ADDR_LO_OFST 0
8797 #define	MC_CMD_READ_SENSORS_IN_DMA_ADDR_LO_LEN 4
8798 #define	MC_CMD_READ_SENSORS_IN_DMA_ADDR_LO_LBN 0
8799 #define	MC_CMD_READ_SENSORS_IN_DMA_ADDR_LO_WIDTH 32
8800 #define	MC_CMD_READ_SENSORS_IN_DMA_ADDR_HI_OFST 4
8801 #define	MC_CMD_READ_SENSORS_IN_DMA_ADDR_HI_LEN 4
8802 #define	MC_CMD_READ_SENSORS_IN_DMA_ADDR_HI_LBN 32
8803 #define	MC_CMD_READ_SENSORS_IN_DMA_ADDR_HI_WIDTH 32
8804 
8805 /* MC_CMD_READ_SENSORS_EXT_IN msgrequest */
8806 #define	MC_CMD_READ_SENSORS_EXT_IN_LEN 12
8807 /* DMA address of host buffer for sensor readings (must be 4Kbyte aligned).
8808  *
8809  * If the address is 0xffffffffffffffff send the readings in the response (used
8810  * by cmdclient).
8811  */
8812 #define	MC_CMD_READ_SENSORS_EXT_IN_DMA_ADDR_OFST 0
8813 #define	MC_CMD_READ_SENSORS_EXT_IN_DMA_ADDR_LEN 8
8814 #define	MC_CMD_READ_SENSORS_EXT_IN_DMA_ADDR_LO_OFST 0
8815 #define	MC_CMD_READ_SENSORS_EXT_IN_DMA_ADDR_LO_LEN 4
8816 #define	MC_CMD_READ_SENSORS_EXT_IN_DMA_ADDR_LO_LBN 0
8817 #define	MC_CMD_READ_SENSORS_EXT_IN_DMA_ADDR_LO_WIDTH 32
8818 #define	MC_CMD_READ_SENSORS_EXT_IN_DMA_ADDR_HI_OFST 4
8819 #define	MC_CMD_READ_SENSORS_EXT_IN_DMA_ADDR_HI_LEN 4
8820 #define	MC_CMD_READ_SENSORS_EXT_IN_DMA_ADDR_HI_LBN 32
8821 #define	MC_CMD_READ_SENSORS_EXT_IN_DMA_ADDR_HI_WIDTH 32
8822 /* Size in bytes of host buffer. */
8823 #define	MC_CMD_READ_SENSORS_EXT_IN_LENGTH_OFST 8
8824 #define	MC_CMD_READ_SENSORS_EXT_IN_LENGTH_LEN 4
8825 
8826 /* MC_CMD_READ_SENSORS_EXT_IN_V2 msgrequest */
8827 #define	MC_CMD_READ_SENSORS_EXT_IN_V2_LEN 16
8828 /* DMA address of host buffer for sensor readings (must be 4Kbyte aligned).
8829  *
8830  * If the address is 0xffffffffffffffff send the readings in the response (used
8831  * by cmdclient).
8832  */
8833 #define	MC_CMD_READ_SENSORS_EXT_IN_V2_DMA_ADDR_OFST 0
8834 #define	MC_CMD_READ_SENSORS_EXT_IN_V2_DMA_ADDR_LEN 8
8835 #define	MC_CMD_READ_SENSORS_EXT_IN_V2_DMA_ADDR_LO_OFST 0
8836 #define	MC_CMD_READ_SENSORS_EXT_IN_V2_DMA_ADDR_LO_LEN 4
8837 #define	MC_CMD_READ_SENSORS_EXT_IN_V2_DMA_ADDR_LO_LBN 0
8838 #define	MC_CMD_READ_SENSORS_EXT_IN_V2_DMA_ADDR_LO_WIDTH 32
8839 #define	MC_CMD_READ_SENSORS_EXT_IN_V2_DMA_ADDR_HI_OFST 4
8840 #define	MC_CMD_READ_SENSORS_EXT_IN_V2_DMA_ADDR_HI_LEN 4
8841 #define	MC_CMD_READ_SENSORS_EXT_IN_V2_DMA_ADDR_HI_LBN 32
8842 #define	MC_CMD_READ_SENSORS_EXT_IN_V2_DMA_ADDR_HI_WIDTH 32
8843 /* Size in bytes of host buffer. */
8844 #define	MC_CMD_READ_SENSORS_EXT_IN_V2_LENGTH_OFST 8
8845 #define	MC_CMD_READ_SENSORS_EXT_IN_V2_LENGTH_LEN 4
8846 /* Flags controlling information retrieved */
8847 #define	MC_CMD_READ_SENSORS_EXT_IN_V2_FLAGS_OFST 12
8848 #define	MC_CMD_READ_SENSORS_EXT_IN_V2_FLAGS_LEN 4
8849 #define	MC_CMD_READ_SENSORS_EXT_IN_V2_ENGINEERING_OFST 12
8850 #define	MC_CMD_READ_SENSORS_EXT_IN_V2_ENGINEERING_LBN 0
8851 #define	MC_CMD_READ_SENSORS_EXT_IN_V2_ENGINEERING_WIDTH 1
8852 
8853 /* MC_CMD_READ_SENSORS_OUT msgresponse */
8854 #define	MC_CMD_READ_SENSORS_OUT_LEN 0
8855 
8856 /* MC_CMD_READ_SENSORS_EXT_OUT msgresponse */
8857 #define	MC_CMD_READ_SENSORS_EXT_OUT_LEN 0
8858 
8859 /* MC_CMD_SENSOR_VALUE_ENTRY_TYPEDEF structuredef */
8860 #define	MC_CMD_SENSOR_VALUE_ENTRY_TYPEDEF_LEN 4
8861 #define	MC_CMD_SENSOR_VALUE_ENTRY_TYPEDEF_VALUE_OFST 0
8862 #define	MC_CMD_SENSOR_VALUE_ENTRY_TYPEDEF_VALUE_LEN 2
8863 #define	MC_CMD_SENSOR_VALUE_ENTRY_TYPEDEF_VALUE_LBN 0
8864 #define	MC_CMD_SENSOR_VALUE_ENTRY_TYPEDEF_VALUE_WIDTH 16
8865 #define	MC_CMD_SENSOR_VALUE_ENTRY_TYPEDEF_STATE_OFST 2
8866 #define	MC_CMD_SENSOR_VALUE_ENTRY_TYPEDEF_STATE_LEN 1
8867 /* enum: Ok. */
8868 #define	MC_CMD_SENSOR_STATE_OK 0x0
8869 /* enum: Breached warning threshold. */
8870 #define	MC_CMD_SENSOR_STATE_WARNING 0x1
8871 /* enum: Breached fatal threshold. */
8872 #define	MC_CMD_SENSOR_STATE_FATAL 0x2
8873 /* enum: Fault with sensor. */
8874 #define	MC_CMD_SENSOR_STATE_BROKEN 0x3
8875 /* enum: Sensor is working but does not currently have a reading. */
8876 #define	MC_CMD_SENSOR_STATE_NO_READING 0x4
8877 /* enum: Sensor initialisation failed. */
8878 #define	MC_CMD_SENSOR_STATE_INIT_FAILED 0x5
8879 #define	MC_CMD_SENSOR_VALUE_ENTRY_TYPEDEF_STATE_LBN 16
8880 #define	MC_CMD_SENSOR_VALUE_ENTRY_TYPEDEF_STATE_WIDTH 8
8881 #define	MC_CMD_SENSOR_VALUE_ENTRY_TYPEDEF_TYPE_OFST 3
8882 #define	MC_CMD_SENSOR_VALUE_ENTRY_TYPEDEF_TYPE_LEN 1
8883 /*            Enum values, see field(s): */
8884 /*               MC_CMD_SENSOR_INFO/MC_CMD_SENSOR_INFO_OUT/MASK */
8885 #define	MC_CMD_SENSOR_VALUE_ENTRY_TYPEDEF_TYPE_LBN 24
8886 #define	MC_CMD_SENSOR_VALUE_ENTRY_TYPEDEF_TYPE_WIDTH 8
8887 
8888 
8889 /***********************************/
8890 /* MC_CMD_GET_PHY_STATE
8891  * Report current state of PHY. A 'zombie' PHY is a PHY that has failed to boot
8892  * (e.g. due to missing or corrupted firmware). Locks required: None. Return
8893  * code: 0
8894  */
8895 #define	MC_CMD_GET_PHY_STATE 0x43
8896 #define	MC_CMD_GET_PHY_STATE_MSGSET 0x43
8897 #undef	MC_CMD_0x43_PRIVILEGE_CTG
8898 
8899 #define	MC_CMD_0x43_PRIVILEGE_CTG SRIOV_CTG_GENERAL
8900 
8901 /* MC_CMD_GET_PHY_STATE_IN msgrequest */
8902 #define	MC_CMD_GET_PHY_STATE_IN_LEN 0
8903 
8904 /* MC_CMD_GET_PHY_STATE_IN_V2 msgrequest */
8905 #define	MC_CMD_GET_PHY_STATE_IN_V2_LEN 8
8906 /* Target port to request PHY state for. Uses MAE_LINK_ENDPOINT_SELECTOR which
8907  * identifies a real or virtual network port by MAE port and link end. See the
8908  * structure definition for more details.
8909  */
8910 #define	MC_CMD_GET_PHY_STATE_IN_V2_TARGET_OFST 0
8911 #define	MC_CMD_GET_PHY_STATE_IN_V2_TARGET_LEN 8
8912 #define	MC_CMD_GET_PHY_STATE_IN_V2_TARGET_LO_OFST 0
8913 #define	MC_CMD_GET_PHY_STATE_IN_V2_TARGET_LO_LEN 4
8914 #define	MC_CMD_GET_PHY_STATE_IN_V2_TARGET_LO_LBN 0
8915 #define	MC_CMD_GET_PHY_STATE_IN_V2_TARGET_LO_WIDTH 32
8916 #define	MC_CMD_GET_PHY_STATE_IN_V2_TARGET_HI_OFST 4
8917 #define	MC_CMD_GET_PHY_STATE_IN_V2_TARGET_HI_LEN 4
8918 #define	MC_CMD_GET_PHY_STATE_IN_V2_TARGET_HI_LBN 32
8919 #define	MC_CMD_GET_PHY_STATE_IN_V2_TARGET_HI_WIDTH 32
8920 /* See structuredef: MAE_LINK_ENDPOINT_SELECTOR */
8921 #define	MC_CMD_GET_PHY_STATE_IN_V2_TARGET_MPORT_SELECTOR_OFST 0
8922 #define	MC_CMD_GET_PHY_STATE_IN_V2_TARGET_MPORT_SELECTOR_LEN 4
8923 #define	MC_CMD_GET_PHY_STATE_IN_V2_TARGET_MPORT_SELECTOR_FLAT_OFST 0
8924 #define	MC_CMD_GET_PHY_STATE_IN_V2_TARGET_MPORT_SELECTOR_FLAT_LEN 4
8925 #define	MC_CMD_GET_PHY_STATE_IN_V2_TARGET_MPORT_SELECTOR_TYPE_OFST 3
8926 #define	MC_CMD_GET_PHY_STATE_IN_V2_TARGET_MPORT_SELECTOR_TYPE_LEN 1
8927 #define	MC_CMD_GET_PHY_STATE_IN_V2_TARGET_MPORT_SELECTOR_MPORT_ID_OFST 0
8928 #define	MC_CMD_GET_PHY_STATE_IN_V2_TARGET_MPORT_SELECTOR_MPORT_ID_LEN 3
8929 #define	MC_CMD_GET_PHY_STATE_IN_V2_TARGET_MPORT_SELECTOR_PPORT_ID_LBN 0
8930 #define	MC_CMD_GET_PHY_STATE_IN_V2_TARGET_MPORT_SELECTOR_PPORT_ID_WIDTH 4
8931 #define	MC_CMD_GET_PHY_STATE_IN_V2_TARGET_MPORT_SELECTOR_FUNC_INTF_ID_LBN 20
8932 #define	MC_CMD_GET_PHY_STATE_IN_V2_TARGET_MPORT_SELECTOR_FUNC_INTF_ID_WIDTH 4
8933 #define	MC_CMD_GET_PHY_STATE_IN_V2_TARGET_MPORT_SELECTOR_FUNC_MH_PF_ID_LBN 16
8934 #define	MC_CMD_GET_PHY_STATE_IN_V2_TARGET_MPORT_SELECTOR_FUNC_MH_PF_ID_WIDTH 4
8935 #define	MC_CMD_GET_PHY_STATE_IN_V2_TARGET_MPORT_SELECTOR_FUNC_PF_ID_OFST 2
8936 #define	MC_CMD_GET_PHY_STATE_IN_V2_TARGET_MPORT_SELECTOR_FUNC_PF_ID_LEN 1
8937 #define	MC_CMD_GET_PHY_STATE_IN_V2_TARGET_MPORT_SELECTOR_FUNC_VF_ID_OFST 0
8938 #define	MC_CMD_GET_PHY_STATE_IN_V2_TARGET_MPORT_SELECTOR_FUNC_VF_ID_LEN 2
8939 #define	MC_CMD_GET_PHY_STATE_IN_V2_TARGET_LINK_END_OFST 4
8940 #define	MC_CMD_GET_PHY_STATE_IN_V2_TARGET_LINK_END_LEN 4
8941 #define	MC_CMD_GET_PHY_STATE_IN_V2_TARGET_FLAT_OFST 0
8942 #define	MC_CMD_GET_PHY_STATE_IN_V2_TARGET_FLAT_LEN 8
8943 #define	MC_CMD_GET_PHY_STATE_IN_V2_TARGET_FLAT_LO_OFST 0
8944 #define	MC_CMD_GET_PHY_STATE_IN_V2_TARGET_FLAT_LO_LEN 4
8945 #define	MC_CMD_GET_PHY_STATE_IN_V2_TARGET_FLAT_LO_LBN 0
8946 #define	MC_CMD_GET_PHY_STATE_IN_V2_TARGET_FLAT_LO_WIDTH 32
8947 #define	MC_CMD_GET_PHY_STATE_IN_V2_TARGET_FLAT_HI_OFST 4
8948 #define	MC_CMD_GET_PHY_STATE_IN_V2_TARGET_FLAT_HI_LEN 4
8949 #define	MC_CMD_GET_PHY_STATE_IN_V2_TARGET_FLAT_HI_LBN 32
8950 #define	MC_CMD_GET_PHY_STATE_IN_V2_TARGET_FLAT_HI_WIDTH 32
8951 
8952 /* MC_CMD_GET_PHY_STATE_OUT msgresponse */
8953 #define	MC_CMD_GET_PHY_STATE_OUT_LEN 4
8954 #define	MC_CMD_GET_PHY_STATE_OUT_STATE_OFST 0
8955 #define	MC_CMD_GET_PHY_STATE_OUT_STATE_LEN 4
8956 /* enum: Ok. */
8957 #define	MC_CMD_PHY_STATE_OK 0x1
8958 /* enum: Faulty. */
8959 #define	MC_CMD_PHY_STATE_ZOMBIE 0x2
8960 
8961 
8962 /***********************************/
8963 /* MC_CMD_SETUP_8021QBB
8964  * 802.1Qbb control. 8 Tx queues that map to priorities 0 - 7. Use all 1s to
8965  * disable 802.Qbb for a given priority.
8966  */
8967 #define	MC_CMD_SETUP_8021QBB 0x44
8968 #define	MC_CMD_SETUP_8021QBB_MSGSET 0x44
8969 
8970 /* MC_CMD_SETUP_8021QBB_IN msgrequest */
8971 #define	MC_CMD_SETUP_8021QBB_IN_LEN 32
8972 #define	MC_CMD_SETUP_8021QBB_IN_TXQS_OFST 0
8973 #define	MC_CMD_SETUP_8021QBB_IN_TXQS_LEN 32
8974 
8975 /* MC_CMD_SETUP_8021QBB_OUT msgresponse */
8976 #define	MC_CMD_SETUP_8021QBB_OUT_LEN 0
8977 
8978 
8979 /***********************************/
8980 /* MC_CMD_WOL_FILTER_GET
8981  * Retrieve ID of any WoL filters. Locks required: None. Returns: 0, ENOSYS
8982  */
8983 #define	MC_CMD_WOL_FILTER_GET 0x45
8984 #define	MC_CMD_WOL_FILTER_GET_MSGSET 0x45
8985 #undef	MC_CMD_0x45_PRIVILEGE_CTG
8986 
8987 #define	MC_CMD_0x45_PRIVILEGE_CTG SRIOV_CTG_LINK
8988 
8989 /* MC_CMD_WOL_FILTER_GET_IN msgrequest */
8990 #define	MC_CMD_WOL_FILTER_GET_IN_LEN 0
8991 
8992 /* MC_CMD_WOL_FILTER_GET_OUT msgresponse */
8993 #define	MC_CMD_WOL_FILTER_GET_OUT_LEN 4
8994 #define	MC_CMD_WOL_FILTER_GET_OUT_FILTER_ID_OFST 0
8995 #define	MC_CMD_WOL_FILTER_GET_OUT_FILTER_ID_LEN 4
8996 
8997 
8998 /***********************************/
8999 /* MC_CMD_ADD_LIGHTSOUT_OFFLOAD
9000  * Add a protocol offload to NIC for lights-out state. Locks required: None.
9001  * Returns: 0, ENOSYS
9002  */
9003 #define	MC_CMD_ADD_LIGHTSOUT_OFFLOAD 0x46
9004 #define	MC_CMD_ADD_LIGHTSOUT_OFFLOAD_MSGSET 0x46
9005 #undef	MC_CMD_0x46_PRIVILEGE_CTG
9006 
9007 #define	MC_CMD_0x46_PRIVILEGE_CTG SRIOV_CTG_LINK
9008 
9009 /* MC_CMD_ADD_LIGHTSOUT_OFFLOAD_IN msgrequest */
9010 #define	MC_CMD_ADD_LIGHTSOUT_OFFLOAD_IN_LENMIN 8
9011 #define	MC_CMD_ADD_LIGHTSOUT_OFFLOAD_IN_LENMAX 252
9012 #define	MC_CMD_ADD_LIGHTSOUT_OFFLOAD_IN_LENMAX_MCDI2 1020
9013 #define	MC_CMD_ADD_LIGHTSOUT_OFFLOAD_IN_LEN(num) (4+4*(num))
9014 #define	MC_CMD_ADD_LIGHTSOUT_OFFLOAD_IN_DATA_NUM(len) (((len)-4)/4)
9015 #define	MC_CMD_ADD_LIGHTSOUT_OFFLOAD_IN_PROTOCOL_OFST 0
9016 #define	MC_CMD_ADD_LIGHTSOUT_OFFLOAD_IN_PROTOCOL_LEN 4
9017 #define	MC_CMD_LIGHTSOUT_OFFLOAD_PROTOCOL_ARP 0x1 /* enum */
9018 #define	MC_CMD_LIGHTSOUT_OFFLOAD_PROTOCOL_NS 0x2 /* enum */
9019 #define	MC_CMD_ADD_LIGHTSOUT_OFFLOAD_IN_DATA_OFST 4
9020 #define	MC_CMD_ADD_LIGHTSOUT_OFFLOAD_IN_DATA_LEN 4
9021 #define	MC_CMD_ADD_LIGHTSOUT_OFFLOAD_IN_DATA_MINNUM 1
9022 #define	MC_CMD_ADD_LIGHTSOUT_OFFLOAD_IN_DATA_MAXNUM 62
9023 #define	MC_CMD_ADD_LIGHTSOUT_OFFLOAD_IN_DATA_MAXNUM_MCDI2 254
9024 
9025 /* MC_CMD_ADD_LIGHTSOUT_OFFLOAD_IN_ARP msgrequest */
9026 #define	MC_CMD_ADD_LIGHTSOUT_OFFLOAD_IN_ARP_LEN 14
9027 /*            MC_CMD_ADD_LIGHTSOUT_OFFLOAD_IN_PROTOCOL_OFST 0 */
9028 /*            MC_CMD_ADD_LIGHTSOUT_OFFLOAD_IN_PROTOCOL_LEN 4 */
9029 #define	MC_CMD_ADD_LIGHTSOUT_OFFLOAD_IN_ARP_MAC_OFST 4
9030 #define	MC_CMD_ADD_LIGHTSOUT_OFFLOAD_IN_ARP_MAC_LEN 6
9031 #define	MC_CMD_ADD_LIGHTSOUT_OFFLOAD_IN_ARP_IP_OFST 10
9032 #define	MC_CMD_ADD_LIGHTSOUT_OFFLOAD_IN_ARP_IP_LEN 4
9033 
9034 /* MC_CMD_ADD_LIGHTSOUT_OFFLOAD_IN_NS msgrequest */
9035 #define	MC_CMD_ADD_LIGHTSOUT_OFFLOAD_IN_NS_LEN 42
9036 /*            MC_CMD_ADD_LIGHTSOUT_OFFLOAD_IN_PROTOCOL_OFST 0 */
9037 /*            MC_CMD_ADD_LIGHTSOUT_OFFLOAD_IN_PROTOCOL_LEN 4 */
9038 #define	MC_CMD_ADD_LIGHTSOUT_OFFLOAD_IN_NS_MAC_OFST 4
9039 #define	MC_CMD_ADD_LIGHTSOUT_OFFLOAD_IN_NS_MAC_LEN 6
9040 #define	MC_CMD_ADD_LIGHTSOUT_OFFLOAD_IN_NS_SNIPV6_OFST 10
9041 #define	MC_CMD_ADD_LIGHTSOUT_OFFLOAD_IN_NS_SNIPV6_LEN 16
9042 #define	MC_CMD_ADD_LIGHTSOUT_OFFLOAD_IN_NS_IPV6_OFST 26
9043 #define	MC_CMD_ADD_LIGHTSOUT_OFFLOAD_IN_NS_IPV6_LEN 16
9044 
9045 /* MC_CMD_ADD_LIGHTSOUT_OFFLOAD_OUT msgresponse */
9046 #define	MC_CMD_ADD_LIGHTSOUT_OFFLOAD_OUT_LEN 4
9047 #define	MC_CMD_ADD_LIGHTSOUT_OFFLOAD_OUT_FILTER_ID_OFST 0
9048 #define	MC_CMD_ADD_LIGHTSOUT_OFFLOAD_OUT_FILTER_ID_LEN 4
9049 
9050 
9051 /***********************************/
9052 /* MC_CMD_REMOVE_LIGHTSOUT_OFFLOAD
9053  * Remove a protocol offload from NIC for lights-out state. Locks required:
9054  * None. Returns: 0, ENOSYS
9055  */
9056 #define	MC_CMD_REMOVE_LIGHTSOUT_OFFLOAD 0x47
9057 #define	MC_CMD_REMOVE_LIGHTSOUT_OFFLOAD_MSGSET 0x47
9058 #undef	MC_CMD_0x47_PRIVILEGE_CTG
9059 
9060 #define	MC_CMD_0x47_PRIVILEGE_CTG SRIOV_CTG_LINK
9061 
9062 /* MC_CMD_REMOVE_LIGHTSOUT_OFFLOAD_IN msgrequest */
9063 #define	MC_CMD_REMOVE_LIGHTSOUT_OFFLOAD_IN_LEN 8
9064 #define	MC_CMD_REMOVE_LIGHTSOUT_OFFLOAD_IN_PROTOCOL_OFST 0
9065 #define	MC_CMD_REMOVE_LIGHTSOUT_OFFLOAD_IN_PROTOCOL_LEN 4
9066 #define	MC_CMD_REMOVE_LIGHTSOUT_OFFLOAD_IN_FILTER_ID_OFST 4
9067 #define	MC_CMD_REMOVE_LIGHTSOUT_OFFLOAD_IN_FILTER_ID_LEN 4
9068 
9069 /* MC_CMD_REMOVE_LIGHTSOUT_OFFLOAD_OUT msgresponse */
9070 #define	MC_CMD_REMOVE_LIGHTSOUT_OFFLOAD_OUT_LEN 0
9071 
9072 
9073 /***********************************/
9074 /* MC_CMD_MAC_RESET_RESTORE
9075  * Restore MAC after block reset. Locks required: None. Returns: 0.
9076  */
9077 #define	MC_CMD_MAC_RESET_RESTORE 0x48
9078 #define	MC_CMD_MAC_RESET_RESTORE_MSGSET 0x48
9079 
9080 /* MC_CMD_MAC_RESET_RESTORE_IN msgrequest */
9081 #define	MC_CMD_MAC_RESET_RESTORE_IN_LEN 0
9082 
9083 /* MC_CMD_MAC_RESET_RESTORE_OUT msgresponse */
9084 #define	MC_CMD_MAC_RESET_RESTORE_OUT_LEN 0
9085 
9086 
9087 /***********************************/
9088 /* MC_CMD_TESTASSERT
9089  * Deliberately trigger an assert-detonation in the firmware for testing
9090  * purposes (i.e. to allow tests that the driver copes gracefully). Locks
9091  * required: None Returns: 0
9092  */
9093 #define	MC_CMD_TESTASSERT 0x49
9094 #define	MC_CMD_TESTASSERT_MSGSET 0x49
9095 #undef	MC_CMD_0x49_PRIVILEGE_CTG
9096 
9097 #define	MC_CMD_0x49_PRIVILEGE_CTG SRIOV_CTG_ADMIN_TSA_UNBOUND
9098 
9099 /* MC_CMD_TESTASSERT_IN msgrequest */
9100 #define	MC_CMD_TESTASSERT_IN_LEN 0
9101 
9102 /* MC_CMD_TESTASSERT_OUT msgresponse */
9103 #define	MC_CMD_TESTASSERT_OUT_LEN 0
9104 
9105 /* MC_CMD_TESTASSERT_V2_IN msgrequest */
9106 #define	MC_CMD_TESTASSERT_V2_IN_LEN 4
9107 /* How to provoke the assertion */
9108 #define	MC_CMD_TESTASSERT_V2_IN_TYPE_OFST 0
9109 #define	MC_CMD_TESTASSERT_V2_IN_TYPE_LEN 4
9110 /* enum: Assert using the FAIL_ASSERTION_WITH_USEFUL_VALUES macro. Unless
9111  * you're testing firmware, this is what you want.
9112  */
9113 #define	MC_CMD_TESTASSERT_V2_IN_FAIL_ASSERTION_WITH_USEFUL_VALUES 0x0
9114 /* enum: Assert using assert(0); */
9115 #define	MC_CMD_TESTASSERT_V2_IN_ASSERT_FALSE 0x1
9116 /* enum: Deliberately trigger a watchdog */
9117 #define	MC_CMD_TESTASSERT_V2_IN_WATCHDOG 0x2
9118 /* enum: Deliberately trigger a trap by loading from an invalid address */
9119 #define	MC_CMD_TESTASSERT_V2_IN_LOAD_TRAP 0x3
9120 /* enum: Deliberately trigger a trap by storing to an invalid address */
9121 #define	MC_CMD_TESTASSERT_V2_IN_STORE_TRAP 0x4
9122 /* enum: Jump to an invalid address */
9123 #define	MC_CMD_TESTASSERT_V2_IN_JUMP_TRAP 0x5
9124 
9125 /* MC_CMD_TESTASSERT_V2_OUT msgresponse */
9126 #define	MC_CMD_TESTASSERT_V2_OUT_LEN 0
9127 
9128 
9129 /***********************************/
9130 /* MC_CMD_WORKAROUND
9131  * Enable/Disable a given workaround. The mcfw will return EINVAL if it doesn't
9132  * understand the given workaround number - which should not be treated as a
9133  * hard error by client code. This op does not imply any semantics about each
9134  * workaround, that's between the driver and the mcfw on a per-workaround
9135  * basis. Locks required: None. Returns: 0, EINVAL .
9136  */
9137 #define	MC_CMD_WORKAROUND 0x4a
9138 #define	MC_CMD_WORKAROUND_MSGSET 0x4a
9139 #undef	MC_CMD_0x4a_PRIVILEGE_CTG
9140 
9141 #define	MC_CMD_0x4a_PRIVILEGE_CTG SRIOV_CTG_ADMIN
9142 
9143 /* MC_CMD_WORKAROUND_IN msgrequest */
9144 #define	MC_CMD_WORKAROUND_IN_LEN 8
9145 /* The enums here must correspond with those in MC_CMD_GET_WORKAROUND. */
9146 #define	MC_CMD_WORKAROUND_IN_TYPE_OFST 0
9147 #define	MC_CMD_WORKAROUND_IN_TYPE_LEN 4
9148 /* enum: Bug 17230 work around. */
9149 #define	MC_CMD_WORKAROUND_BUG17230 0x1
9150 /* enum: Bug 35388 work around (unsafe EVQ writes). */
9151 #define	MC_CMD_WORKAROUND_BUG35388 0x2
9152 /* enum: Bug35017 workaround (A64 tables must be identity map) */
9153 #define	MC_CMD_WORKAROUND_BUG35017 0x3
9154 /* enum: Bug 41750 present (MC_CMD_TRIGGER_INTERRUPT won't work) */
9155 #define	MC_CMD_WORKAROUND_BUG41750 0x4
9156 /* enum: Bug 42008 present (Interrupts can overtake associated events). Caution
9157  * - before adding code that queries this workaround, remember that there's
9158  * released Monza firmware that doesn't understand MC_CMD_WORKAROUND_BUG42008,
9159  * and will hence (incorrectly) report that the bug doesn't exist.
9160  */
9161 #define	MC_CMD_WORKAROUND_BUG42008 0x5
9162 /* enum: Bug 26807 features present in firmware (multicast filter chaining)
9163  * This feature cannot be turned on/off while there are any filters already
9164  * present. The behaviour in such case depends on the acting client's privilege
9165  * level. If the client has the admin privilege, then all functions that have
9166  * filters installed will be FLRed and the FLR_DONE flag will be set. Otherwise
9167  * the command will fail with MC_CMD_ERR_FILTERS_PRESENT.
9168  */
9169 #define	MC_CMD_WORKAROUND_BUG26807 0x6
9170 /* enum: Bug 61265 work around (broken EVQ TMR writes). */
9171 #define	MC_CMD_WORKAROUND_BUG61265 0x7
9172 /* 0 = disable the workaround indicated by TYPE; any non-zero value = enable
9173  * the workaround
9174  */
9175 #define	MC_CMD_WORKAROUND_IN_ENABLED_OFST 4
9176 #define	MC_CMD_WORKAROUND_IN_ENABLED_LEN 4
9177 
9178 /* MC_CMD_WORKAROUND_OUT msgresponse */
9179 #define	MC_CMD_WORKAROUND_OUT_LEN 0
9180 
9181 /* MC_CMD_WORKAROUND_EXT_OUT msgresponse: This response format will be used
9182  * when (TYPE == MC_CMD_WORKAROUND_BUG26807)
9183  */
9184 #define	MC_CMD_WORKAROUND_EXT_OUT_LEN 4
9185 #define	MC_CMD_WORKAROUND_EXT_OUT_FLAGS_OFST 0
9186 #define	MC_CMD_WORKAROUND_EXT_OUT_FLAGS_LEN 4
9187 #define	MC_CMD_WORKAROUND_EXT_OUT_FLR_DONE_OFST 0
9188 #define	MC_CMD_WORKAROUND_EXT_OUT_FLR_DONE_LBN 0
9189 #define	MC_CMD_WORKAROUND_EXT_OUT_FLR_DONE_WIDTH 1
9190 
9191 
9192 /***********************************/
9193 /* MC_CMD_GET_PHY_MEDIA_INFO
9194  * Read media-specific data from PHY (e.g. SFP/SFP+ module ID information for
9195  * SFP+ PHYs). The "media type" can be found via GET_PHY_CFG
9196  * (GET_PHY_CFG_OUT_MEDIA_TYPE); the valid "page number" input values, and the
9197  * output data, are interpreted on a per-type basis. For SFP+, PAGE=0 or 1
9198  * returns a 128-byte block read from module I2C address 0xA0 offset 0 or 0x80.
9199  * For QSFP, PAGE=-1 is the lower (unbanked) page. PAGE=2 is the EEPROM and
9200  * PAGE=3 is the module limits. For DSFP, module addressing requires a
9201  * "BANK:PAGE". Not every bank has the same number of pages. See the Common
9202  * Management Interface Specification (CMIS) for further details. A BANK:PAGE
9203  * of "0xffff:0xffff" retrieves the lower (unbanked) page. Locks required -
9204  * None. Return code - 0.
9205  */
9206 #define	MC_CMD_GET_PHY_MEDIA_INFO 0x4b
9207 #define	MC_CMD_GET_PHY_MEDIA_INFO_MSGSET 0x4b
9208 #undef	MC_CMD_0x4b_PRIVILEGE_CTG
9209 
9210 #define	MC_CMD_0x4b_PRIVILEGE_CTG SRIOV_CTG_ADMIN
9211 
9212 /* MC_CMD_GET_PHY_MEDIA_INFO_IN msgrequest */
9213 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_LEN 4
9214 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_PAGE_OFST 0
9215 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_PAGE_LEN 4
9216 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_DSFP_PAGE_OFST 0
9217 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_DSFP_PAGE_LBN 0
9218 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_DSFP_PAGE_WIDTH 16
9219 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_DSFP_BANK_OFST 0
9220 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_DSFP_BANK_LBN 16
9221 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_DSFP_BANK_WIDTH 16
9222 
9223 /* MC_CMD_GET_PHY_MEDIA_INFO_IN_V2 msgrequest */
9224 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_V2_LEN 12
9225 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_V2_PAGE_OFST 0
9226 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_V2_PAGE_LEN 4
9227 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_V2_DSFP_PAGE_OFST 0
9228 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_V2_DSFP_PAGE_LBN 0
9229 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_V2_DSFP_PAGE_WIDTH 16
9230 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_V2_DSFP_BANK_OFST 0
9231 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_V2_DSFP_BANK_LBN 16
9232 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_V2_DSFP_BANK_WIDTH 16
9233 /* Target port to request PHY state for. Uses MAE_LINK_ENDPOINT_SELECTOR which
9234  * identifies a real or virtual network port by MAE port and link end. See the
9235  * structure definition for more details
9236  */
9237 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_V2_TARGET_OFST 4
9238 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_V2_TARGET_LEN 8
9239 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_V2_TARGET_LO_OFST 4
9240 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_V2_TARGET_LO_LEN 4
9241 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_V2_TARGET_LO_LBN 32
9242 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_V2_TARGET_LO_WIDTH 32
9243 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_V2_TARGET_HI_OFST 8
9244 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_V2_TARGET_HI_LEN 4
9245 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_V2_TARGET_HI_LBN 64
9246 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_V2_TARGET_HI_WIDTH 32
9247 /* See structuredef: MAE_LINK_ENDPOINT_SELECTOR */
9248 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_V2_TARGET_MPORT_SELECTOR_OFST 4
9249 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_V2_TARGET_MPORT_SELECTOR_LEN 4
9250 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_V2_TARGET_MPORT_SELECTOR_FLAT_OFST 4
9251 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_V2_TARGET_MPORT_SELECTOR_FLAT_LEN 4
9252 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_V2_TARGET_MPORT_SELECTOR_TYPE_OFST 7
9253 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_V2_TARGET_MPORT_SELECTOR_TYPE_LEN 1
9254 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_V2_TARGET_MPORT_SELECTOR_MPORT_ID_OFST 4
9255 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_V2_TARGET_MPORT_SELECTOR_MPORT_ID_LEN 3
9256 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_V2_TARGET_MPORT_SELECTOR_PPORT_ID_LBN 32
9257 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_V2_TARGET_MPORT_SELECTOR_PPORT_ID_WIDTH 4
9258 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_V2_TARGET_MPORT_SELECTOR_FUNC_INTF_ID_LBN 52
9259 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_V2_TARGET_MPORT_SELECTOR_FUNC_INTF_ID_WIDTH 4
9260 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_V2_TARGET_MPORT_SELECTOR_FUNC_MH_PF_ID_LBN 48
9261 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_V2_TARGET_MPORT_SELECTOR_FUNC_MH_PF_ID_WIDTH 4
9262 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_V2_TARGET_MPORT_SELECTOR_FUNC_PF_ID_OFST 6
9263 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_V2_TARGET_MPORT_SELECTOR_FUNC_PF_ID_LEN 1
9264 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_V2_TARGET_MPORT_SELECTOR_FUNC_VF_ID_OFST 4
9265 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_V2_TARGET_MPORT_SELECTOR_FUNC_VF_ID_LEN 2
9266 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_V2_TARGET_LINK_END_OFST 8
9267 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_V2_TARGET_LINK_END_LEN 4
9268 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_V2_TARGET_FLAT_OFST 4
9269 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_V2_TARGET_FLAT_LEN 8
9270 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_V2_TARGET_FLAT_LO_OFST 4
9271 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_V2_TARGET_FLAT_LO_LEN 4
9272 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_V2_TARGET_FLAT_LO_LBN 32
9273 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_V2_TARGET_FLAT_LO_WIDTH 32
9274 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_V2_TARGET_FLAT_HI_OFST 8
9275 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_V2_TARGET_FLAT_HI_LEN 4
9276 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_V2_TARGET_FLAT_HI_LBN 64
9277 #define	MC_CMD_GET_PHY_MEDIA_INFO_IN_V2_TARGET_FLAT_HI_WIDTH 32
9278 
9279 /* MC_CMD_GET_PHY_MEDIA_INFO_OUT msgresponse */
9280 #define	MC_CMD_GET_PHY_MEDIA_INFO_OUT_LENMIN 5
9281 #define	MC_CMD_GET_PHY_MEDIA_INFO_OUT_LENMAX 252
9282 #define	MC_CMD_GET_PHY_MEDIA_INFO_OUT_LENMAX_MCDI2 1020
9283 #define	MC_CMD_GET_PHY_MEDIA_INFO_OUT_LEN(num) (4+1*(num))
9284 #define	MC_CMD_GET_PHY_MEDIA_INFO_OUT_DATA_NUM(len) (((len)-4)/1)
9285 /* in bytes */
9286 #define	MC_CMD_GET_PHY_MEDIA_INFO_OUT_DATALEN_OFST 0
9287 #define	MC_CMD_GET_PHY_MEDIA_INFO_OUT_DATALEN_LEN 4
9288 #define	MC_CMD_GET_PHY_MEDIA_INFO_OUT_DATA_OFST 4
9289 #define	MC_CMD_GET_PHY_MEDIA_INFO_OUT_DATA_LEN 1
9290 #define	MC_CMD_GET_PHY_MEDIA_INFO_OUT_DATA_MINNUM 1
9291 #define	MC_CMD_GET_PHY_MEDIA_INFO_OUT_DATA_MAXNUM 248
9292 #define	MC_CMD_GET_PHY_MEDIA_INFO_OUT_DATA_MAXNUM_MCDI2 1016
9293 
9294 
9295 /***********************************/
9296 /* MC_CMD_NVRAM_TEST
9297  * Test a particular NVRAM partition for valid contents (where "valid" depends
9298  * on the type of partition).
9299  */
9300 #define	MC_CMD_NVRAM_TEST 0x4c
9301 #define	MC_CMD_NVRAM_TEST_MSGSET 0x4c
9302 #undef	MC_CMD_0x4c_PRIVILEGE_CTG
9303 
9304 #define	MC_CMD_0x4c_PRIVILEGE_CTG SRIOV_CTG_ADMIN_TSA_UNBOUND
9305 
9306 /* MC_CMD_NVRAM_TEST_IN msgrequest */
9307 #define	MC_CMD_NVRAM_TEST_IN_LEN 4
9308 #define	MC_CMD_NVRAM_TEST_IN_TYPE_OFST 0
9309 #define	MC_CMD_NVRAM_TEST_IN_TYPE_LEN 4
9310 /*            Enum values, see field(s): */
9311 /*               MC_CMD_NVRAM_TYPES/MC_CMD_NVRAM_TYPES_OUT/TYPES */
9312 
9313 /* MC_CMD_NVRAM_TEST_OUT msgresponse */
9314 #define	MC_CMD_NVRAM_TEST_OUT_LEN 4
9315 #define	MC_CMD_NVRAM_TEST_OUT_RESULT_OFST 0
9316 #define	MC_CMD_NVRAM_TEST_OUT_RESULT_LEN 4
9317 /* enum: Passed. */
9318 #define	MC_CMD_NVRAM_TEST_PASS 0x0
9319 /* enum: Failed. */
9320 #define	MC_CMD_NVRAM_TEST_FAIL 0x1
9321 /* enum: Not supported. */
9322 #define	MC_CMD_NVRAM_TEST_NOTSUPP 0x2
9323 
9324 
9325 /***********************************/
9326 /* MC_CMD_MRSFP_TWEAK
9327  * Read status and/or set parameters for the 'mrsfp' driver in mr_rusty builds.
9328  * I2C I/O expander bits are always read; if equaliser parameters are supplied,
9329  * they are configured first. Locks required: None. Return code: 0, EINVAL.
9330  */
9331 #define	MC_CMD_MRSFP_TWEAK 0x4d
9332 #define	MC_CMD_MRSFP_TWEAK_MSGSET 0x4d
9333 
9334 /* MC_CMD_MRSFP_TWEAK_IN_EQ_CONFIG msgrequest */
9335 #define	MC_CMD_MRSFP_TWEAK_IN_EQ_CONFIG_LEN 16
9336 /* 0-6 low->high de-emph. */
9337 #define	MC_CMD_MRSFP_TWEAK_IN_EQ_CONFIG_TXEQ_LEVEL_OFST 0
9338 #define	MC_CMD_MRSFP_TWEAK_IN_EQ_CONFIG_TXEQ_LEVEL_LEN 4
9339 /* 0-8 low->high ref.V */
9340 #define	MC_CMD_MRSFP_TWEAK_IN_EQ_CONFIG_TXEQ_DT_CFG_OFST 4
9341 #define	MC_CMD_MRSFP_TWEAK_IN_EQ_CONFIG_TXEQ_DT_CFG_LEN 4
9342 /* 0-8 0-8 low->high boost */
9343 #define	MC_CMD_MRSFP_TWEAK_IN_EQ_CONFIG_RXEQ_BOOST_OFST 8
9344 #define	MC_CMD_MRSFP_TWEAK_IN_EQ_CONFIG_RXEQ_BOOST_LEN 4
9345 /* 0-8 low->high ref.V */
9346 #define	MC_CMD_MRSFP_TWEAK_IN_EQ_CONFIG_RXEQ_DT_CFG_OFST 12
9347 #define	MC_CMD_MRSFP_TWEAK_IN_EQ_CONFIG_RXEQ_DT_CFG_LEN 4
9348 
9349 /* MC_CMD_MRSFP_TWEAK_IN_READ_ONLY msgrequest */
9350 #define	MC_CMD_MRSFP_TWEAK_IN_READ_ONLY_LEN 0
9351 
9352 /* MC_CMD_MRSFP_TWEAK_OUT msgresponse */
9353 #define	MC_CMD_MRSFP_TWEAK_OUT_LEN 12
9354 /* input bits */
9355 #define	MC_CMD_MRSFP_TWEAK_OUT_IOEXP_INPUTS_OFST 0
9356 #define	MC_CMD_MRSFP_TWEAK_OUT_IOEXP_INPUTS_LEN 4
9357 /* output bits */
9358 #define	MC_CMD_MRSFP_TWEAK_OUT_IOEXP_OUTPUTS_OFST 4
9359 #define	MC_CMD_MRSFP_TWEAK_OUT_IOEXP_OUTPUTS_LEN 4
9360 /* direction */
9361 #define	MC_CMD_MRSFP_TWEAK_OUT_IOEXP_DIRECTION_OFST 8
9362 #define	MC_CMD_MRSFP_TWEAK_OUT_IOEXP_DIRECTION_LEN 4
9363 /* enum: Out. */
9364 #define	MC_CMD_MRSFP_TWEAK_OUT_IOEXP_DIRECTION_OUT 0x0
9365 /* enum: In. */
9366 #define	MC_CMD_MRSFP_TWEAK_OUT_IOEXP_DIRECTION_IN 0x1
9367 
9368 
9369 /***********************************/
9370 /* MC_CMD_SENSOR_SET_LIMS
9371  * Adjusts the sensor limits. This is a warranty-voiding operation. Returns:
9372  * ENOENT if the sensor specified does not exist, EINVAL if the limits are out
9373  * of range.
9374  */
9375 #define	MC_CMD_SENSOR_SET_LIMS 0x4e
9376 #define	MC_CMD_SENSOR_SET_LIMS_MSGSET 0x4e
9377 #undef	MC_CMD_0x4e_PRIVILEGE_CTG
9378 
9379 #define	MC_CMD_0x4e_PRIVILEGE_CTG SRIOV_CTG_INSECURE
9380 
9381 /* MC_CMD_SENSOR_SET_LIMS_IN msgrequest */
9382 #define	MC_CMD_SENSOR_SET_LIMS_IN_LEN 20
9383 #define	MC_CMD_SENSOR_SET_LIMS_IN_SENSOR_OFST 0
9384 #define	MC_CMD_SENSOR_SET_LIMS_IN_SENSOR_LEN 4
9385 /*            Enum values, see field(s): */
9386 /*               MC_CMD_SENSOR_INFO/MC_CMD_SENSOR_INFO_OUT/MASK */
9387 /* interpretation is is sensor-specific. */
9388 #define	MC_CMD_SENSOR_SET_LIMS_IN_LOW0_OFST 4
9389 #define	MC_CMD_SENSOR_SET_LIMS_IN_LOW0_LEN 4
9390 /* interpretation is is sensor-specific. */
9391 #define	MC_CMD_SENSOR_SET_LIMS_IN_HI0_OFST 8
9392 #define	MC_CMD_SENSOR_SET_LIMS_IN_HI0_LEN 4
9393 /* interpretation is is sensor-specific. */
9394 #define	MC_CMD_SENSOR_SET_LIMS_IN_LOW1_OFST 12
9395 #define	MC_CMD_SENSOR_SET_LIMS_IN_LOW1_LEN 4
9396 /* interpretation is is sensor-specific. */
9397 #define	MC_CMD_SENSOR_SET_LIMS_IN_HI1_OFST 16
9398 #define	MC_CMD_SENSOR_SET_LIMS_IN_HI1_LEN 4
9399 
9400 /* MC_CMD_SENSOR_SET_LIMS_OUT msgresponse */
9401 #define	MC_CMD_SENSOR_SET_LIMS_OUT_LEN 0
9402 
9403 
9404 /***********************************/
9405 /* MC_CMD_GET_RESOURCE_LIMITS
9406  */
9407 #define	MC_CMD_GET_RESOURCE_LIMITS 0x4f
9408 #define	MC_CMD_GET_RESOURCE_LIMITS_MSGSET 0x4f
9409 
9410 /* MC_CMD_GET_RESOURCE_LIMITS_IN msgrequest */
9411 #define	MC_CMD_GET_RESOURCE_LIMITS_IN_LEN 0
9412 
9413 /* MC_CMD_GET_RESOURCE_LIMITS_OUT msgresponse */
9414 #define	MC_CMD_GET_RESOURCE_LIMITS_OUT_LEN 16
9415 #define	MC_CMD_GET_RESOURCE_LIMITS_OUT_BUFTBL_OFST 0
9416 #define	MC_CMD_GET_RESOURCE_LIMITS_OUT_BUFTBL_LEN 4
9417 #define	MC_CMD_GET_RESOURCE_LIMITS_OUT_EVQ_OFST 4
9418 #define	MC_CMD_GET_RESOURCE_LIMITS_OUT_EVQ_LEN 4
9419 #define	MC_CMD_GET_RESOURCE_LIMITS_OUT_RXQ_OFST 8
9420 #define	MC_CMD_GET_RESOURCE_LIMITS_OUT_RXQ_LEN 4
9421 #define	MC_CMD_GET_RESOURCE_LIMITS_OUT_TXQ_OFST 12
9422 #define	MC_CMD_GET_RESOURCE_LIMITS_OUT_TXQ_LEN 4
9423 
9424 
9425 /***********************************/
9426 /* MC_CMD_NVRAM_PARTITIONS
9427  * Reads the list of available virtual NVRAM partition types. Locks required:
9428  * none. Returns: 0, EINVAL (bad type).
9429  */
9430 #define	MC_CMD_NVRAM_PARTITIONS 0x51
9431 #define	MC_CMD_NVRAM_PARTITIONS_MSGSET 0x51
9432 #undef	MC_CMD_0x51_PRIVILEGE_CTG
9433 
9434 #define	MC_CMD_0x51_PRIVILEGE_CTG SRIOV_CTG_ADMIN
9435 
9436 /* MC_CMD_NVRAM_PARTITIONS_IN msgrequest */
9437 #define	MC_CMD_NVRAM_PARTITIONS_IN_LEN 0
9438 
9439 /* MC_CMD_NVRAM_PARTITIONS_OUT msgresponse */
9440 #define	MC_CMD_NVRAM_PARTITIONS_OUT_LENMIN 4
9441 #define	MC_CMD_NVRAM_PARTITIONS_OUT_LENMAX 252
9442 #define	MC_CMD_NVRAM_PARTITIONS_OUT_LENMAX_MCDI2 1020
9443 #define	MC_CMD_NVRAM_PARTITIONS_OUT_LEN(num) (4+4*(num))
9444 #define	MC_CMD_NVRAM_PARTITIONS_OUT_TYPE_ID_NUM(len) (((len)-4)/4)
9445 /* total number of partitions */
9446 #define	MC_CMD_NVRAM_PARTITIONS_OUT_NUM_PARTITIONS_OFST 0
9447 #define	MC_CMD_NVRAM_PARTITIONS_OUT_NUM_PARTITIONS_LEN 4
9448 /* type ID code for each of NUM_PARTITIONS partitions */
9449 #define	MC_CMD_NVRAM_PARTITIONS_OUT_TYPE_ID_OFST 4
9450 #define	MC_CMD_NVRAM_PARTITIONS_OUT_TYPE_ID_LEN 4
9451 #define	MC_CMD_NVRAM_PARTITIONS_OUT_TYPE_ID_MINNUM 0
9452 #define	MC_CMD_NVRAM_PARTITIONS_OUT_TYPE_ID_MAXNUM 62
9453 #define	MC_CMD_NVRAM_PARTITIONS_OUT_TYPE_ID_MAXNUM_MCDI2 254
9454 
9455 
9456 /***********************************/
9457 /* MC_CMD_NVRAM_METADATA
9458  * Reads soft metadata for a virtual NVRAM partition type. Locks required:
9459  * none. Returns: 0, EINVAL (bad type).
9460  */
9461 #define	MC_CMD_NVRAM_METADATA 0x52
9462 #define	MC_CMD_NVRAM_METADATA_MSGSET 0x52
9463 #undef	MC_CMD_0x52_PRIVILEGE_CTG
9464 
9465 #define	MC_CMD_0x52_PRIVILEGE_CTG SRIOV_CTG_ADMIN
9466 
9467 /* MC_CMD_NVRAM_METADATA_IN msgrequest */
9468 #define	MC_CMD_NVRAM_METADATA_IN_LEN 4
9469 /* Partition type ID code */
9470 #define	MC_CMD_NVRAM_METADATA_IN_TYPE_OFST 0
9471 #define	MC_CMD_NVRAM_METADATA_IN_TYPE_LEN 4
9472 
9473 /* MC_CMD_NVRAM_METADATA_OUT msgresponse */
9474 #define	MC_CMD_NVRAM_METADATA_OUT_LENMIN 20
9475 #define	MC_CMD_NVRAM_METADATA_OUT_LENMAX 252
9476 #define	MC_CMD_NVRAM_METADATA_OUT_LENMAX_MCDI2 1020
9477 #define	MC_CMD_NVRAM_METADATA_OUT_LEN(num) (20+1*(num))
9478 #define	MC_CMD_NVRAM_METADATA_OUT_DESCRIPTION_NUM(len) (((len)-20)/1)
9479 /* Partition type ID code */
9480 #define	MC_CMD_NVRAM_METADATA_OUT_TYPE_OFST 0
9481 #define	MC_CMD_NVRAM_METADATA_OUT_TYPE_LEN 4
9482 #define	MC_CMD_NVRAM_METADATA_OUT_FLAGS_OFST 4
9483 #define	MC_CMD_NVRAM_METADATA_OUT_FLAGS_LEN 4
9484 #define	MC_CMD_NVRAM_METADATA_OUT_SUBTYPE_VALID_OFST 4
9485 #define	MC_CMD_NVRAM_METADATA_OUT_SUBTYPE_VALID_LBN 0
9486 #define	MC_CMD_NVRAM_METADATA_OUT_SUBTYPE_VALID_WIDTH 1
9487 #define	MC_CMD_NVRAM_METADATA_OUT_VERSION_VALID_OFST 4
9488 #define	MC_CMD_NVRAM_METADATA_OUT_VERSION_VALID_LBN 1
9489 #define	MC_CMD_NVRAM_METADATA_OUT_VERSION_VALID_WIDTH 1
9490 #define	MC_CMD_NVRAM_METADATA_OUT_DESCRIPTION_VALID_OFST 4
9491 #define	MC_CMD_NVRAM_METADATA_OUT_DESCRIPTION_VALID_LBN 2
9492 #define	MC_CMD_NVRAM_METADATA_OUT_DESCRIPTION_VALID_WIDTH 1
9493 /* Subtype ID code for content of this partition */
9494 #define	MC_CMD_NVRAM_METADATA_OUT_SUBTYPE_OFST 8
9495 #define	MC_CMD_NVRAM_METADATA_OUT_SUBTYPE_LEN 4
9496 /* 1st component of W.X.Y.Z version number for content of this partition */
9497 #define	MC_CMD_NVRAM_METADATA_OUT_VERSION_W_OFST 12
9498 #define	MC_CMD_NVRAM_METADATA_OUT_VERSION_W_LEN 2
9499 /* 2nd component of W.X.Y.Z version number for content of this partition */
9500 #define	MC_CMD_NVRAM_METADATA_OUT_VERSION_X_OFST 14
9501 #define	MC_CMD_NVRAM_METADATA_OUT_VERSION_X_LEN 2
9502 /* 3rd component of W.X.Y.Z version number for content of this partition */
9503 #define	MC_CMD_NVRAM_METADATA_OUT_VERSION_Y_OFST 16
9504 #define	MC_CMD_NVRAM_METADATA_OUT_VERSION_Y_LEN 2
9505 /* 4th component of W.X.Y.Z version number for content of this partition */
9506 #define	MC_CMD_NVRAM_METADATA_OUT_VERSION_Z_OFST 18
9507 #define	MC_CMD_NVRAM_METADATA_OUT_VERSION_Z_LEN 2
9508 /* Zero-terminated string describing the content of this partition */
9509 #define	MC_CMD_NVRAM_METADATA_OUT_DESCRIPTION_OFST 20
9510 #define	MC_CMD_NVRAM_METADATA_OUT_DESCRIPTION_LEN 1
9511 #define	MC_CMD_NVRAM_METADATA_OUT_DESCRIPTION_MINNUM 0
9512 #define	MC_CMD_NVRAM_METADATA_OUT_DESCRIPTION_MAXNUM 232
9513 #define	MC_CMD_NVRAM_METADATA_OUT_DESCRIPTION_MAXNUM_MCDI2 1000
9514 
9515 
9516 /***********************************/
9517 /* MC_CMD_GET_MAC_ADDRESSES
9518  * Returns the base MAC, count and stride for the requesting function
9519  */
9520 #define	MC_CMD_GET_MAC_ADDRESSES 0x55
9521 #define	MC_CMD_GET_MAC_ADDRESSES_MSGSET 0x55
9522 #undef	MC_CMD_0x55_PRIVILEGE_CTG
9523 
9524 #define	MC_CMD_0x55_PRIVILEGE_CTG SRIOV_CTG_GENERAL
9525 
9526 /* MC_CMD_GET_MAC_ADDRESSES_IN msgrequest */
9527 #define	MC_CMD_GET_MAC_ADDRESSES_IN_LEN 0
9528 
9529 /* MC_CMD_GET_MAC_ADDRESSES_OUT msgresponse */
9530 #define	MC_CMD_GET_MAC_ADDRESSES_OUT_LEN 16
9531 /* Base MAC address */
9532 #define	MC_CMD_GET_MAC_ADDRESSES_OUT_MAC_ADDR_BASE_OFST 0
9533 #define	MC_CMD_GET_MAC_ADDRESSES_OUT_MAC_ADDR_BASE_LEN 6
9534 /* Padding */
9535 #define	MC_CMD_GET_MAC_ADDRESSES_OUT_RESERVED_OFST 6
9536 #define	MC_CMD_GET_MAC_ADDRESSES_OUT_RESERVED_LEN 2
9537 /* Number of allocated MAC addresses */
9538 #define	MC_CMD_GET_MAC_ADDRESSES_OUT_MAC_COUNT_OFST 8
9539 #define	MC_CMD_GET_MAC_ADDRESSES_OUT_MAC_COUNT_LEN 4
9540 /* Spacing of allocated MAC addresses */
9541 #define	MC_CMD_GET_MAC_ADDRESSES_OUT_MAC_STRIDE_OFST 12
9542 #define	MC_CMD_GET_MAC_ADDRESSES_OUT_MAC_STRIDE_LEN 4
9543 
9544 
9545 /***********************************/
9546 /* MC_CMD_CLP
9547  * Perform a CLP related operation, see SF-110495-PS for details of CLP
9548  * processing. This command has been extended to accomodate the requirements of
9549  * different manufacturers which are to be found in SF-119187-TC, SF-119186-TC,
9550  * SF-120509-TC and SF-117282-PS.
9551  */
9552 #define	MC_CMD_CLP 0x56
9553 #define	MC_CMD_CLP_MSGSET 0x56
9554 #undef	MC_CMD_0x56_PRIVILEGE_CTG
9555 
9556 #define	MC_CMD_0x56_PRIVILEGE_CTG SRIOV_CTG_ADMIN_TSA_UNBOUND
9557 
9558 /* MC_CMD_CLP_IN msgrequest */
9559 #define	MC_CMD_CLP_IN_LEN 4
9560 /* Sub operation */
9561 #define	MC_CMD_CLP_IN_OP_OFST 0
9562 #define	MC_CMD_CLP_IN_OP_LEN 4
9563 /* enum: Return to factory default settings */
9564 #define	MC_CMD_CLP_OP_DEFAULT 0x1
9565 /* enum: Set MAC address */
9566 #define	MC_CMD_CLP_OP_SET_MAC 0x2
9567 /* enum: Get MAC address */
9568 #define	MC_CMD_CLP_OP_GET_MAC 0x3
9569 /* enum: Set UEFI/GPXE boot mode */
9570 #define	MC_CMD_CLP_OP_SET_BOOT 0x4
9571 /* enum: Get UEFI/GPXE boot mode */
9572 #define	MC_CMD_CLP_OP_GET_BOOT 0x5
9573 
9574 /* MC_CMD_CLP_OUT msgresponse */
9575 #define	MC_CMD_CLP_OUT_LEN 0
9576 
9577 /* MC_CMD_CLP_IN_DEFAULT msgrequest */
9578 #define	MC_CMD_CLP_IN_DEFAULT_LEN 4
9579 /*            MC_CMD_CLP_IN_OP_OFST 0 */
9580 /*            MC_CMD_CLP_IN_OP_LEN 4 */
9581 
9582 /* MC_CMD_CLP_OUT_DEFAULT msgresponse */
9583 #define	MC_CMD_CLP_OUT_DEFAULT_LEN 0
9584 
9585 /* MC_CMD_CLP_IN_SET_MAC msgrequest */
9586 #define	MC_CMD_CLP_IN_SET_MAC_LEN 12
9587 /*            MC_CMD_CLP_IN_OP_OFST 0 */
9588 /*            MC_CMD_CLP_IN_OP_LEN 4 */
9589 /* The MAC address assigned to port. A zero MAC address of 00:00:00:00:00:00
9590  * restores the permanent (factory-programmed) MAC address associated with the
9591  * port. A non-zero MAC address persists until a PCIe reset or a power cycle.
9592  */
9593 #define	MC_CMD_CLP_IN_SET_MAC_ADDR_OFST 4
9594 #define	MC_CMD_CLP_IN_SET_MAC_ADDR_LEN 6
9595 /* Padding */
9596 #define	MC_CMD_CLP_IN_SET_MAC_RESERVED_OFST 10
9597 #define	MC_CMD_CLP_IN_SET_MAC_RESERVED_LEN 2
9598 
9599 /* MC_CMD_CLP_OUT_SET_MAC msgresponse */
9600 #define	MC_CMD_CLP_OUT_SET_MAC_LEN 0
9601 
9602 /* MC_CMD_CLP_IN_SET_MAC_V2 msgrequest */
9603 #define	MC_CMD_CLP_IN_SET_MAC_V2_LEN 16
9604 /*            MC_CMD_CLP_IN_OP_OFST 0 */
9605 /*            MC_CMD_CLP_IN_OP_LEN 4 */
9606 /* The MAC address assigned to port. A zero MAC address of 00:00:00:00:00:00
9607  * restores the permanent (factory-programmed) MAC address associated with the
9608  * port. A non-zero MAC address persists until a PCIe reset or a power cycle.
9609  */
9610 #define	MC_CMD_CLP_IN_SET_MAC_V2_ADDR_OFST 4
9611 #define	MC_CMD_CLP_IN_SET_MAC_V2_ADDR_LEN 6
9612 /* Padding */
9613 #define	MC_CMD_CLP_IN_SET_MAC_V2_RESERVED_OFST 10
9614 #define	MC_CMD_CLP_IN_SET_MAC_V2_RESERVED_LEN 2
9615 #define	MC_CMD_CLP_IN_SET_MAC_V2_FLAGS_OFST 12
9616 #define	MC_CMD_CLP_IN_SET_MAC_V2_FLAGS_LEN 4
9617 #define	MC_CMD_CLP_IN_SET_MAC_V2_VIRTUAL_OFST 12
9618 #define	MC_CMD_CLP_IN_SET_MAC_V2_VIRTUAL_LBN 0
9619 #define	MC_CMD_CLP_IN_SET_MAC_V2_VIRTUAL_WIDTH 1
9620 
9621 /* MC_CMD_CLP_IN_GET_MAC msgrequest */
9622 #define	MC_CMD_CLP_IN_GET_MAC_LEN 4
9623 /*            MC_CMD_CLP_IN_OP_OFST 0 */
9624 /*            MC_CMD_CLP_IN_OP_LEN 4 */
9625 
9626 /* MC_CMD_CLP_IN_GET_MAC_V2 msgrequest */
9627 #define	MC_CMD_CLP_IN_GET_MAC_V2_LEN 8
9628 /*            MC_CMD_CLP_IN_OP_OFST 0 */
9629 /*            MC_CMD_CLP_IN_OP_LEN 4 */
9630 #define	MC_CMD_CLP_IN_GET_MAC_V2_FLAGS_OFST 4
9631 #define	MC_CMD_CLP_IN_GET_MAC_V2_FLAGS_LEN 4
9632 #define	MC_CMD_CLP_IN_GET_MAC_V2_PERMANENT_OFST 4
9633 #define	MC_CMD_CLP_IN_GET_MAC_V2_PERMANENT_LBN 0
9634 #define	MC_CMD_CLP_IN_GET_MAC_V2_PERMANENT_WIDTH 1
9635 
9636 /* MC_CMD_CLP_OUT_GET_MAC msgresponse */
9637 #define	MC_CMD_CLP_OUT_GET_MAC_LEN 8
9638 /* MAC address assigned to port */
9639 #define	MC_CMD_CLP_OUT_GET_MAC_ADDR_OFST 0
9640 #define	MC_CMD_CLP_OUT_GET_MAC_ADDR_LEN 6
9641 /* Padding */
9642 #define	MC_CMD_CLP_OUT_GET_MAC_RESERVED_OFST 6
9643 #define	MC_CMD_CLP_OUT_GET_MAC_RESERVED_LEN 2
9644 
9645 /* MC_CMD_CLP_IN_SET_BOOT msgrequest */
9646 #define	MC_CMD_CLP_IN_SET_BOOT_LEN 5
9647 /*            MC_CMD_CLP_IN_OP_OFST 0 */
9648 /*            MC_CMD_CLP_IN_OP_LEN 4 */
9649 /* Boot flag */
9650 #define	MC_CMD_CLP_IN_SET_BOOT_FLAG_OFST 4
9651 #define	MC_CMD_CLP_IN_SET_BOOT_FLAG_LEN 1
9652 
9653 /* MC_CMD_CLP_OUT_SET_BOOT msgresponse */
9654 #define	MC_CMD_CLP_OUT_SET_BOOT_LEN 0
9655 
9656 /* MC_CMD_CLP_IN_GET_BOOT msgrequest */
9657 #define	MC_CMD_CLP_IN_GET_BOOT_LEN 4
9658 /*            MC_CMD_CLP_IN_OP_OFST 0 */
9659 /*            MC_CMD_CLP_IN_OP_LEN 4 */
9660 
9661 /* MC_CMD_CLP_OUT_GET_BOOT msgresponse */
9662 #define	MC_CMD_CLP_OUT_GET_BOOT_LEN 4
9663 /* Boot flag */
9664 #define	MC_CMD_CLP_OUT_GET_BOOT_FLAG_OFST 0
9665 #define	MC_CMD_CLP_OUT_GET_BOOT_FLAG_LEN 1
9666 /* Padding */
9667 #define	MC_CMD_CLP_OUT_GET_BOOT_RESERVED_OFST 1
9668 #define	MC_CMD_CLP_OUT_GET_BOOT_RESERVED_LEN 3
9669 
9670 
9671 /***********************************/
9672 /* MC_CMD_MUM
9673  * Perform a MUM operation
9674  */
9675 #define	MC_CMD_MUM 0x57
9676 #define	MC_CMD_MUM_MSGSET 0x57
9677 #undef	MC_CMD_0x57_PRIVILEGE_CTG
9678 
9679 #define	MC_CMD_0x57_PRIVILEGE_CTG SRIOV_CTG_INSECURE
9680 
9681 /* MC_CMD_MUM_IN msgrequest */
9682 #define	MC_CMD_MUM_IN_LEN 4
9683 #define	MC_CMD_MUM_IN_OP_HDR_OFST 0
9684 #define	MC_CMD_MUM_IN_OP_HDR_LEN 4
9685 #define	MC_CMD_MUM_IN_OP_OFST 0
9686 #define	MC_CMD_MUM_IN_OP_LBN 0
9687 #define	MC_CMD_MUM_IN_OP_WIDTH 8
9688 /* enum: NULL MCDI command to MUM */
9689 #define	MC_CMD_MUM_OP_NULL 0x1
9690 /* enum: Get MUM version */
9691 #define	MC_CMD_MUM_OP_GET_VERSION 0x2
9692 /* enum: Issue raw I2C command to MUM */
9693 #define	MC_CMD_MUM_OP_RAW_CMD 0x3
9694 /* enum: Read from registers on devices connected to MUM. */
9695 #define	MC_CMD_MUM_OP_READ 0x4
9696 /* enum: Write to registers on devices connected to MUM. */
9697 #define	MC_CMD_MUM_OP_WRITE 0x5
9698 /* enum: Control UART logging. */
9699 #define	MC_CMD_MUM_OP_LOG 0x6
9700 /* enum: Operations on MUM GPIO lines */
9701 #define	MC_CMD_MUM_OP_GPIO 0x7
9702 /* enum: Get sensor readings from MUM */
9703 #define	MC_CMD_MUM_OP_READ_SENSORS 0x8
9704 /* enum: Initiate clock programming on the MUM */
9705 #define	MC_CMD_MUM_OP_PROGRAM_CLOCKS 0x9
9706 /* enum: Initiate FPGA load from flash on the MUM */
9707 #define	MC_CMD_MUM_OP_FPGA_LOAD 0xa
9708 /* enum: Request sensor reading from MUM ADC resulting from earlier request via
9709  * MUM ATB
9710  */
9711 #define	MC_CMD_MUM_OP_READ_ATB_SENSOR 0xb
9712 /* enum: Send commands relating to the QSFP ports via the MUM for PHY
9713  * operations
9714  */
9715 #define	MC_CMD_MUM_OP_QSFP 0xc
9716 /* enum: Request discrete and SODIMM DDR info (type, size, speed grade, voltage
9717  * level) from MUM
9718  */
9719 #define	MC_CMD_MUM_OP_READ_DDR_INFO 0xd
9720 
9721 /* MC_CMD_MUM_IN_NULL msgrequest */
9722 #define	MC_CMD_MUM_IN_NULL_LEN 4
9723 /* MUM cmd header */
9724 #define	MC_CMD_MUM_IN_CMD_OFST 0
9725 #define	MC_CMD_MUM_IN_CMD_LEN 4
9726 
9727 /* MC_CMD_MUM_IN_GET_VERSION msgrequest */
9728 #define	MC_CMD_MUM_IN_GET_VERSION_LEN 4
9729 /* MUM cmd header */
9730 /*            MC_CMD_MUM_IN_CMD_OFST 0 */
9731 /*            MC_CMD_MUM_IN_CMD_LEN 4 */
9732 
9733 /* MC_CMD_MUM_IN_READ msgrequest */
9734 #define	MC_CMD_MUM_IN_READ_LEN 16
9735 /* MUM cmd header */
9736 /*            MC_CMD_MUM_IN_CMD_OFST 0 */
9737 /*            MC_CMD_MUM_IN_CMD_LEN 4 */
9738 /* ID of (device connected to MUM) to read from registers of */
9739 #define	MC_CMD_MUM_IN_READ_DEVICE_OFST 4
9740 #define	MC_CMD_MUM_IN_READ_DEVICE_LEN 4
9741 /* enum: Hittite HMC1035 clock generator on Sorrento board */
9742 #define	MC_CMD_MUM_DEV_HITTITE 0x1
9743 /* enum: Hittite HMC1035 clock generator for NIC-side on Sorrento board */
9744 #define	MC_CMD_MUM_DEV_HITTITE_NIC 0x2
9745 /* 32-bit address to read from */
9746 #define	MC_CMD_MUM_IN_READ_ADDR_OFST 8
9747 #define	MC_CMD_MUM_IN_READ_ADDR_LEN 4
9748 /* Number of words to read. */
9749 #define	MC_CMD_MUM_IN_READ_NUMWORDS_OFST 12
9750 #define	MC_CMD_MUM_IN_READ_NUMWORDS_LEN 4
9751 
9752 /* MC_CMD_MUM_IN_WRITE msgrequest */
9753 #define	MC_CMD_MUM_IN_WRITE_LENMIN 16
9754 #define	MC_CMD_MUM_IN_WRITE_LENMAX 252
9755 #define	MC_CMD_MUM_IN_WRITE_LENMAX_MCDI2 1020
9756 #define	MC_CMD_MUM_IN_WRITE_LEN(num) (12+4*(num))
9757 #define	MC_CMD_MUM_IN_WRITE_BUFFER_NUM(len) (((len)-12)/4)
9758 /* MUM cmd header */
9759 /*            MC_CMD_MUM_IN_CMD_OFST 0 */
9760 /*            MC_CMD_MUM_IN_CMD_LEN 4 */
9761 /* ID of (device connected to MUM) to write to registers of */
9762 #define	MC_CMD_MUM_IN_WRITE_DEVICE_OFST 4
9763 #define	MC_CMD_MUM_IN_WRITE_DEVICE_LEN 4
9764 /* enum: Hittite HMC1035 clock generator on Sorrento board */
9765 /*               MC_CMD_MUM_DEV_HITTITE 0x1 */
9766 /* 32-bit address to write to */
9767 #define	MC_CMD_MUM_IN_WRITE_ADDR_OFST 8
9768 #define	MC_CMD_MUM_IN_WRITE_ADDR_LEN 4
9769 /* Words to write */
9770 #define	MC_CMD_MUM_IN_WRITE_BUFFER_OFST 12
9771 #define	MC_CMD_MUM_IN_WRITE_BUFFER_LEN 4
9772 #define	MC_CMD_MUM_IN_WRITE_BUFFER_MINNUM 1
9773 #define	MC_CMD_MUM_IN_WRITE_BUFFER_MAXNUM 60
9774 #define	MC_CMD_MUM_IN_WRITE_BUFFER_MAXNUM_MCDI2 252
9775 
9776 /* MC_CMD_MUM_IN_RAW_CMD msgrequest */
9777 #define	MC_CMD_MUM_IN_RAW_CMD_LENMIN 17
9778 #define	MC_CMD_MUM_IN_RAW_CMD_LENMAX 252
9779 #define	MC_CMD_MUM_IN_RAW_CMD_LENMAX_MCDI2 1020
9780 #define	MC_CMD_MUM_IN_RAW_CMD_LEN(num) (16+1*(num))
9781 #define	MC_CMD_MUM_IN_RAW_CMD_WRITE_DATA_NUM(len) (((len)-16)/1)
9782 /* MUM cmd header */
9783 /*            MC_CMD_MUM_IN_CMD_OFST 0 */
9784 /*            MC_CMD_MUM_IN_CMD_LEN 4 */
9785 /* MUM I2C cmd code */
9786 #define	MC_CMD_MUM_IN_RAW_CMD_CMD_CODE_OFST 4
9787 #define	MC_CMD_MUM_IN_RAW_CMD_CMD_CODE_LEN 4
9788 /* Number of bytes to write */
9789 #define	MC_CMD_MUM_IN_RAW_CMD_NUM_WRITE_OFST 8
9790 #define	MC_CMD_MUM_IN_RAW_CMD_NUM_WRITE_LEN 4
9791 /* Number of bytes to read */
9792 #define	MC_CMD_MUM_IN_RAW_CMD_NUM_READ_OFST 12
9793 #define	MC_CMD_MUM_IN_RAW_CMD_NUM_READ_LEN 4
9794 /* Bytes to write */
9795 #define	MC_CMD_MUM_IN_RAW_CMD_WRITE_DATA_OFST 16
9796 #define	MC_CMD_MUM_IN_RAW_CMD_WRITE_DATA_LEN 1
9797 #define	MC_CMD_MUM_IN_RAW_CMD_WRITE_DATA_MINNUM 1
9798 #define	MC_CMD_MUM_IN_RAW_CMD_WRITE_DATA_MAXNUM 236
9799 #define	MC_CMD_MUM_IN_RAW_CMD_WRITE_DATA_MAXNUM_MCDI2 1004
9800 
9801 /* MC_CMD_MUM_IN_LOG msgrequest */
9802 #define	MC_CMD_MUM_IN_LOG_LEN 8
9803 /* MUM cmd header */
9804 /*            MC_CMD_MUM_IN_CMD_OFST 0 */
9805 /*            MC_CMD_MUM_IN_CMD_LEN 4 */
9806 #define	MC_CMD_MUM_IN_LOG_OP_OFST 4
9807 #define	MC_CMD_MUM_IN_LOG_OP_LEN 4
9808 #define	MC_CMD_MUM_IN_LOG_OP_UART 0x1 /* enum */
9809 
9810 /* MC_CMD_MUM_IN_LOG_OP_UART msgrequest */
9811 #define	MC_CMD_MUM_IN_LOG_OP_UART_LEN 12
9812 /*            MC_CMD_MUM_IN_CMD_OFST 0 */
9813 /*            MC_CMD_MUM_IN_CMD_LEN 4 */
9814 /*            MC_CMD_MUM_IN_LOG_OP_OFST 4 */
9815 /*            MC_CMD_MUM_IN_LOG_OP_LEN 4 */
9816 /* Enable/disable debug output to UART */
9817 #define	MC_CMD_MUM_IN_LOG_OP_UART_ENABLE_OFST 8
9818 #define	MC_CMD_MUM_IN_LOG_OP_UART_ENABLE_LEN 4
9819 
9820 /* MC_CMD_MUM_IN_GPIO msgrequest */
9821 #define	MC_CMD_MUM_IN_GPIO_LEN 8
9822 /* MUM cmd header */
9823 /*            MC_CMD_MUM_IN_CMD_OFST 0 */
9824 /*            MC_CMD_MUM_IN_CMD_LEN 4 */
9825 #define	MC_CMD_MUM_IN_GPIO_HDR_OFST 4
9826 #define	MC_CMD_MUM_IN_GPIO_HDR_LEN 4
9827 #define	MC_CMD_MUM_IN_GPIO_OPCODE_OFST 4
9828 #define	MC_CMD_MUM_IN_GPIO_OPCODE_LBN 0
9829 #define	MC_CMD_MUM_IN_GPIO_OPCODE_WIDTH 8
9830 #define	MC_CMD_MUM_IN_GPIO_IN_READ 0x0 /* enum */
9831 #define	MC_CMD_MUM_IN_GPIO_OUT_WRITE 0x1 /* enum */
9832 #define	MC_CMD_MUM_IN_GPIO_OUT_READ 0x2 /* enum */
9833 #define	MC_CMD_MUM_IN_GPIO_OUT_ENABLE_WRITE 0x3 /* enum */
9834 #define	MC_CMD_MUM_IN_GPIO_OUT_ENABLE_READ 0x4 /* enum */
9835 #define	MC_CMD_MUM_IN_GPIO_OP 0x5 /* enum */
9836 
9837 /* MC_CMD_MUM_IN_GPIO_IN_READ msgrequest */
9838 #define	MC_CMD_MUM_IN_GPIO_IN_READ_LEN 8
9839 /*            MC_CMD_MUM_IN_CMD_OFST 0 */
9840 /*            MC_CMD_MUM_IN_CMD_LEN 4 */
9841 #define	MC_CMD_MUM_IN_GPIO_IN_READ_HDR_OFST 4
9842 #define	MC_CMD_MUM_IN_GPIO_IN_READ_HDR_LEN 4
9843 
9844 /* MC_CMD_MUM_IN_GPIO_OUT_WRITE msgrequest */
9845 #define	MC_CMD_MUM_IN_GPIO_OUT_WRITE_LEN 16
9846 /*            MC_CMD_MUM_IN_CMD_OFST 0 */
9847 /*            MC_CMD_MUM_IN_CMD_LEN 4 */
9848 #define	MC_CMD_MUM_IN_GPIO_OUT_WRITE_HDR_OFST 4
9849 #define	MC_CMD_MUM_IN_GPIO_OUT_WRITE_HDR_LEN 4
9850 /* The first 32-bit word to be written to the GPIO OUT register. */
9851 #define	MC_CMD_MUM_IN_GPIO_OUT_WRITE_GPIOMASK1_OFST 8
9852 #define	MC_CMD_MUM_IN_GPIO_OUT_WRITE_GPIOMASK1_LEN 4
9853 /* The second 32-bit word to be written to the GPIO OUT register. */
9854 #define	MC_CMD_MUM_IN_GPIO_OUT_WRITE_GPIOMASK2_OFST 12
9855 #define	MC_CMD_MUM_IN_GPIO_OUT_WRITE_GPIOMASK2_LEN 4
9856 
9857 /* MC_CMD_MUM_IN_GPIO_OUT_READ msgrequest */
9858 #define	MC_CMD_MUM_IN_GPIO_OUT_READ_LEN 8
9859 /*            MC_CMD_MUM_IN_CMD_OFST 0 */
9860 /*            MC_CMD_MUM_IN_CMD_LEN 4 */
9861 #define	MC_CMD_MUM_IN_GPIO_OUT_READ_HDR_OFST 4
9862 #define	MC_CMD_MUM_IN_GPIO_OUT_READ_HDR_LEN 4
9863 
9864 /* MC_CMD_MUM_IN_GPIO_OUT_ENABLE_WRITE msgrequest */
9865 #define	MC_CMD_MUM_IN_GPIO_OUT_ENABLE_WRITE_LEN 16
9866 /*            MC_CMD_MUM_IN_CMD_OFST 0 */
9867 /*            MC_CMD_MUM_IN_CMD_LEN 4 */
9868 #define	MC_CMD_MUM_IN_GPIO_OUT_ENABLE_WRITE_HDR_OFST 4
9869 #define	MC_CMD_MUM_IN_GPIO_OUT_ENABLE_WRITE_HDR_LEN 4
9870 /* The first 32-bit word to be written to the GPIO OUT ENABLE register. */
9871 #define	MC_CMD_MUM_IN_GPIO_OUT_ENABLE_WRITE_GPIOMASK1_OFST 8
9872 #define	MC_CMD_MUM_IN_GPIO_OUT_ENABLE_WRITE_GPIOMASK1_LEN 4
9873 /* The second 32-bit word to be written to the GPIO OUT ENABLE register. */
9874 #define	MC_CMD_MUM_IN_GPIO_OUT_ENABLE_WRITE_GPIOMASK2_OFST 12
9875 #define	MC_CMD_MUM_IN_GPIO_OUT_ENABLE_WRITE_GPIOMASK2_LEN 4
9876 
9877 /* MC_CMD_MUM_IN_GPIO_OUT_ENABLE_READ msgrequest */
9878 #define	MC_CMD_MUM_IN_GPIO_OUT_ENABLE_READ_LEN 8
9879 /*            MC_CMD_MUM_IN_CMD_OFST 0 */
9880 /*            MC_CMD_MUM_IN_CMD_LEN 4 */
9881 #define	MC_CMD_MUM_IN_GPIO_OUT_ENABLE_READ_HDR_OFST 4
9882 #define	MC_CMD_MUM_IN_GPIO_OUT_ENABLE_READ_HDR_LEN 4
9883 
9884 /* MC_CMD_MUM_IN_GPIO_OP msgrequest */
9885 #define	MC_CMD_MUM_IN_GPIO_OP_LEN 8
9886 /*            MC_CMD_MUM_IN_CMD_OFST 0 */
9887 /*            MC_CMD_MUM_IN_CMD_LEN 4 */
9888 #define	MC_CMD_MUM_IN_GPIO_OP_HDR_OFST 4
9889 #define	MC_CMD_MUM_IN_GPIO_OP_HDR_LEN 4
9890 #define	MC_CMD_MUM_IN_GPIO_OP_BITWISE_OP_OFST 4
9891 #define	MC_CMD_MUM_IN_GPIO_OP_BITWISE_OP_LBN 8
9892 #define	MC_CMD_MUM_IN_GPIO_OP_BITWISE_OP_WIDTH 8
9893 #define	MC_CMD_MUM_IN_GPIO_OP_OUT_READ 0x0 /* enum */
9894 #define	MC_CMD_MUM_IN_GPIO_OP_OUT_WRITE 0x1 /* enum */
9895 #define	MC_CMD_MUM_IN_GPIO_OP_OUT_CONFIG 0x2 /* enum */
9896 #define	MC_CMD_MUM_IN_GPIO_OP_OUT_ENABLE 0x3 /* enum */
9897 #define	MC_CMD_MUM_IN_GPIO_OP_GPIO_NUMBER_OFST 4
9898 #define	MC_CMD_MUM_IN_GPIO_OP_GPIO_NUMBER_LBN 16
9899 #define	MC_CMD_MUM_IN_GPIO_OP_GPIO_NUMBER_WIDTH 8
9900 
9901 /* MC_CMD_MUM_IN_GPIO_OP_OUT_READ msgrequest */
9902 #define	MC_CMD_MUM_IN_GPIO_OP_OUT_READ_LEN 8
9903 /*            MC_CMD_MUM_IN_CMD_OFST 0 */
9904 /*            MC_CMD_MUM_IN_CMD_LEN 4 */
9905 #define	MC_CMD_MUM_IN_GPIO_OP_OUT_READ_HDR_OFST 4
9906 #define	MC_CMD_MUM_IN_GPIO_OP_OUT_READ_HDR_LEN 4
9907 
9908 /* MC_CMD_MUM_IN_GPIO_OP_OUT_WRITE msgrequest */
9909 #define	MC_CMD_MUM_IN_GPIO_OP_OUT_WRITE_LEN 8
9910 /*            MC_CMD_MUM_IN_CMD_OFST 0 */
9911 /*            MC_CMD_MUM_IN_CMD_LEN 4 */
9912 #define	MC_CMD_MUM_IN_GPIO_OP_OUT_WRITE_HDR_OFST 4
9913 #define	MC_CMD_MUM_IN_GPIO_OP_OUT_WRITE_HDR_LEN 4
9914 #define	MC_CMD_MUM_IN_GPIO_OP_OUT_WRITE_WRITEBIT_OFST 4
9915 #define	MC_CMD_MUM_IN_GPIO_OP_OUT_WRITE_WRITEBIT_LBN 24
9916 #define	MC_CMD_MUM_IN_GPIO_OP_OUT_WRITE_WRITEBIT_WIDTH 8
9917 
9918 /* MC_CMD_MUM_IN_GPIO_OP_OUT_CONFIG msgrequest */
9919 #define	MC_CMD_MUM_IN_GPIO_OP_OUT_CONFIG_LEN 8
9920 /*            MC_CMD_MUM_IN_CMD_OFST 0 */
9921 /*            MC_CMD_MUM_IN_CMD_LEN 4 */
9922 #define	MC_CMD_MUM_IN_GPIO_OP_OUT_CONFIG_HDR_OFST 4
9923 #define	MC_CMD_MUM_IN_GPIO_OP_OUT_CONFIG_HDR_LEN 4
9924 #define	MC_CMD_MUM_IN_GPIO_OP_OUT_CONFIG_CFG_OFST 4
9925 #define	MC_CMD_MUM_IN_GPIO_OP_OUT_CONFIG_CFG_LBN 24
9926 #define	MC_CMD_MUM_IN_GPIO_OP_OUT_CONFIG_CFG_WIDTH 8
9927 
9928 /* MC_CMD_MUM_IN_GPIO_OP_OUT_ENABLE msgrequest */
9929 #define	MC_CMD_MUM_IN_GPIO_OP_OUT_ENABLE_LEN 8
9930 /*            MC_CMD_MUM_IN_CMD_OFST 0 */
9931 /*            MC_CMD_MUM_IN_CMD_LEN 4 */
9932 #define	MC_CMD_MUM_IN_GPIO_OP_OUT_ENABLE_HDR_OFST 4
9933 #define	MC_CMD_MUM_IN_GPIO_OP_OUT_ENABLE_HDR_LEN 4
9934 #define	MC_CMD_MUM_IN_GPIO_OP_OUT_ENABLE_ENABLEBIT_OFST 4
9935 #define	MC_CMD_MUM_IN_GPIO_OP_OUT_ENABLE_ENABLEBIT_LBN 24
9936 #define	MC_CMD_MUM_IN_GPIO_OP_OUT_ENABLE_ENABLEBIT_WIDTH 8
9937 
9938 /* MC_CMD_MUM_IN_READ_SENSORS msgrequest */
9939 #define	MC_CMD_MUM_IN_READ_SENSORS_LEN 8
9940 /* MUM cmd header */
9941 /*            MC_CMD_MUM_IN_CMD_OFST 0 */
9942 /*            MC_CMD_MUM_IN_CMD_LEN 4 */
9943 #define	MC_CMD_MUM_IN_READ_SENSORS_PARAMS_OFST 4
9944 #define	MC_CMD_MUM_IN_READ_SENSORS_PARAMS_LEN 4
9945 #define	MC_CMD_MUM_IN_READ_SENSORS_SENSOR_ID_OFST 4
9946 #define	MC_CMD_MUM_IN_READ_SENSORS_SENSOR_ID_LBN 0
9947 #define	MC_CMD_MUM_IN_READ_SENSORS_SENSOR_ID_WIDTH 8
9948 #define	MC_CMD_MUM_IN_READ_SENSORS_NUM_SENSORS_OFST 4
9949 #define	MC_CMD_MUM_IN_READ_SENSORS_NUM_SENSORS_LBN 8
9950 #define	MC_CMD_MUM_IN_READ_SENSORS_NUM_SENSORS_WIDTH 8
9951 
9952 /* MC_CMD_MUM_IN_PROGRAM_CLOCKS msgrequest */
9953 #define	MC_CMD_MUM_IN_PROGRAM_CLOCKS_LEN 12
9954 /* MUM cmd header */
9955 /*            MC_CMD_MUM_IN_CMD_OFST 0 */
9956 /*            MC_CMD_MUM_IN_CMD_LEN 4 */
9957 /* Bit-mask of clocks to be programmed */
9958 #define	MC_CMD_MUM_IN_PROGRAM_CLOCKS_MASK_OFST 4
9959 #define	MC_CMD_MUM_IN_PROGRAM_CLOCKS_MASK_LEN 4
9960 #define	MC_CMD_MUM_CLOCK_ID_FPGA 0x0 /* enum */
9961 #define	MC_CMD_MUM_CLOCK_ID_DDR 0x1 /* enum */
9962 #define	MC_CMD_MUM_CLOCK_ID_NIC 0x2 /* enum */
9963 /* Control flags for clock programming */
9964 #define	MC_CMD_MUM_IN_PROGRAM_CLOCKS_FLAGS_OFST 8
9965 #define	MC_CMD_MUM_IN_PROGRAM_CLOCKS_FLAGS_LEN 4
9966 #define	MC_CMD_MUM_IN_PROGRAM_CLOCKS_OVERCLOCK_110_OFST 8
9967 #define	MC_CMD_MUM_IN_PROGRAM_CLOCKS_OVERCLOCK_110_LBN 0
9968 #define	MC_CMD_MUM_IN_PROGRAM_CLOCKS_OVERCLOCK_110_WIDTH 1
9969 #define	MC_CMD_MUM_IN_PROGRAM_CLOCKS_CLOCK_NIC_FROM_FPGA_OFST 8
9970 #define	MC_CMD_MUM_IN_PROGRAM_CLOCKS_CLOCK_NIC_FROM_FPGA_LBN 1
9971 #define	MC_CMD_MUM_IN_PROGRAM_CLOCKS_CLOCK_NIC_FROM_FPGA_WIDTH 1
9972 #define	MC_CMD_MUM_IN_PROGRAM_CLOCKS_CLOCK_REF_FROM_XO_OFST 8
9973 #define	MC_CMD_MUM_IN_PROGRAM_CLOCKS_CLOCK_REF_FROM_XO_LBN 2
9974 #define	MC_CMD_MUM_IN_PROGRAM_CLOCKS_CLOCK_REF_FROM_XO_WIDTH 1
9975 
9976 /* MC_CMD_MUM_IN_FPGA_LOAD msgrequest */
9977 #define	MC_CMD_MUM_IN_FPGA_LOAD_LEN 8
9978 /* MUM cmd header */
9979 /*            MC_CMD_MUM_IN_CMD_OFST 0 */
9980 /*            MC_CMD_MUM_IN_CMD_LEN 4 */
9981 /* Enable/Disable FPGA config from flash */
9982 #define	MC_CMD_MUM_IN_FPGA_LOAD_ENABLE_OFST 4
9983 #define	MC_CMD_MUM_IN_FPGA_LOAD_ENABLE_LEN 4
9984 
9985 /* MC_CMD_MUM_IN_READ_ATB_SENSOR msgrequest */
9986 #define	MC_CMD_MUM_IN_READ_ATB_SENSOR_LEN 4
9987 /* MUM cmd header */
9988 /*            MC_CMD_MUM_IN_CMD_OFST 0 */
9989 /*            MC_CMD_MUM_IN_CMD_LEN 4 */
9990 
9991 /* MC_CMD_MUM_IN_QSFP msgrequest */
9992 #define	MC_CMD_MUM_IN_QSFP_LEN 12
9993 /* MUM cmd header */
9994 /*            MC_CMD_MUM_IN_CMD_OFST 0 */
9995 /*            MC_CMD_MUM_IN_CMD_LEN 4 */
9996 #define	MC_CMD_MUM_IN_QSFP_HDR_OFST 4
9997 #define	MC_CMD_MUM_IN_QSFP_HDR_LEN 4
9998 #define	MC_CMD_MUM_IN_QSFP_OPCODE_OFST 4
9999 #define	MC_CMD_MUM_IN_QSFP_OPCODE_LBN 0
10000 #define	MC_CMD_MUM_IN_QSFP_OPCODE_WIDTH 4
10001 #define	MC_CMD_MUM_IN_QSFP_INIT 0x0 /* enum */
10002 #define	MC_CMD_MUM_IN_QSFP_RECONFIGURE 0x1 /* enum */
10003 #define	MC_CMD_MUM_IN_QSFP_GET_SUPPORTED_CAP 0x2 /* enum */
10004 #define	MC_CMD_MUM_IN_QSFP_GET_MEDIA_INFO 0x3 /* enum */
10005 #define	MC_CMD_MUM_IN_QSFP_FILL_STATS 0x4 /* enum */
10006 #define	MC_CMD_MUM_IN_QSFP_POLL_BIST 0x5 /* enum */
10007 #define	MC_CMD_MUM_IN_QSFP_IDX_OFST 8
10008 #define	MC_CMD_MUM_IN_QSFP_IDX_LEN 4
10009 
10010 /* MC_CMD_MUM_IN_QSFP_INIT msgrequest */
10011 #define	MC_CMD_MUM_IN_QSFP_INIT_LEN 16
10012 /*            MC_CMD_MUM_IN_CMD_OFST 0 */
10013 /*            MC_CMD_MUM_IN_CMD_LEN 4 */
10014 #define	MC_CMD_MUM_IN_QSFP_INIT_HDR_OFST 4
10015 #define	MC_CMD_MUM_IN_QSFP_INIT_HDR_LEN 4
10016 #define	MC_CMD_MUM_IN_QSFP_INIT_IDX_OFST 8
10017 #define	MC_CMD_MUM_IN_QSFP_INIT_IDX_LEN 4
10018 #define	MC_CMD_MUM_IN_QSFP_INIT_CAGE_OFST 12
10019 #define	MC_CMD_MUM_IN_QSFP_INIT_CAGE_LEN 4
10020 
10021 /* MC_CMD_MUM_IN_QSFP_RECONFIGURE msgrequest */
10022 #define	MC_CMD_MUM_IN_QSFP_RECONFIGURE_LEN 24
10023 /*            MC_CMD_MUM_IN_CMD_OFST 0 */
10024 /*            MC_CMD_MUM_IN_CMD_LEN 4 */
10025 #define	MC_CMD_MUM_IN_QSFP_RECONFIGURE_HDR_OFST 4
10026 #define	MC_CMD_MUM_IN_QSFP_RECONFIGURE_HDR_LEN 4
10027 #define	MC_CMD_MUM_IN_QSFP_RECONFIGURE_IDX_OFST 8
10028 #define	MC_CMD_MUM_IN_QSFP_RECONFIGURE_IDX_LEN 4
10029 #define	MC_CMD_MUM_IN_QSFP_RECONFIGURE_TX_DISABLE_OFST 12
10030 #define	MC_CMD_MUM_IN_QSFP_RECONFIGURE_TX_DISABLE_LEN 4
10031 #define	MC_CMD_MUM_IN_QSFP_RECONFIGURE_PORT_LANES_OFST 16
10032 #define	MC_CMD_MUM_IN_QSFP_RECONFIGURE_PORT_LANES_LEN 4
10033 #define	MC_CMD_MUM_IN_QSFP_RECONFIGURE_PORT_LINK_SPEED_OFST 20
10034 #define	MC_CMD_MUM_IN_QSFP_RECONFIGURE_PORT_LINK_SPEED_LEN 4
10035 
10036 /* MC_CMD_MUM_IN_QSFP_GET_SUPPORTED_CAP msgrequest */
10037 #define	MC_CMD_MUM_IN_QSFP_GET_SUPPORTED_CAP_LEN 12
10038 /*            MC_CMD_MUM_IN_CMD_OFST 0 */
10039 /*            MC_CMD_MUM_IN_CMD_LEN 4 */
10040 #define	MC_CMD_MUM_IN_QSFP_GET_SUPPORTED_CAP_HDR_OFST 4
10041 #define	MC_CMD_MUM_IN_QSFP_GET_SUPPORTED_CAP_HDR_LEN 4
10042 #define	MC_CMD_MUM_IN_QSFP_GET_SUPPORTED_CAP_IDX_OFST 8
10043 #define	MC_CMD_MUM_IN_QSFP_GET_SUPPORTED_CAP_IDX_LEN 4
10044 
10045 /* MC_CMD_MUM_IN_QSFP_GET_MEDIA_INFO msgrequest */
10046 #define	MC_CMD_MUM_IN_QSFP_GET_MEDIA_INFO_LEN 16
10047 /*            MC_CMD_MUM_IN_CMD_OFST 0 */
10048 /*            MC_CMD_MUM_IN_CMD_LEN 4 */
10049 #define	MC_CMD_MUM_IN_QSFP_GET_MEDIA_INFO_HDR_OFST 4
10050 #define	MC_CMD_MUM_IN_QSFP_GET_MEDIA_INFO_HDR_LEN 4
10051 #define	MC_CMD_MUM_IN_QSFP_GET_MEDIA_INFO_IDX_OFST 8
10052 #define	MC_CMD_MUM_IN_QSFP_GET_MEDIA_INFO_IDX_LEN 4
10053 #define	MC_CMD_MUM_IN_QSFP_GET_MEDIA_INFO_PAGE_OFST 12
10054 #define	MC_CMD_MUM_IN_QSFP_GET_MEDIA_INFO_PAGE_LEN 4
10055 
10056 /* MC_CMD_MUM_IN_QSFP_FILL_STATS msgrequest */
10057 #define	MC_CMD_MUM_IN_QSFP_FILL_STATS_LEN 12
10058 /*            MC_CMD_MUM_IN_CMD_OFST 0 */
10059 /*            MC_CMD_MUM_IN_CMD_LEN 4 */
10060 #define	MC_CMD_MUM_IN_QSFP_FILL_STATS_HDR_OFST 4
10061 #define	MC_CMD_MUM_IN_QSFP_FILL_STATS_HDR_LEN 4
10062 #define	MC_CMD_MUM_IN_QSFP_FILL_STATS_IDX_OFST 8
10063 #define	MC_CMD_MUM_IN_QSFP_FILL_STATS_IDX_LEN 4
10064 
10065 /* MC_CMD_MUM_IN_QSFP_POLL_BIST msgrequest */
10066 #define	MC_CMD_MUM_IN_QSFP_POLL_BIST_LEN 12
10067 /*            MC_CMD_MUM_IN_CMD_OFST 0 */
10068 /*            MC_CMD_MUM_IN_CMD_LEN 4 */
10069 #define	MC_CMD_MUM_IN_QSFP_POLL_BIST_HDR_OFST 4
10070 #define	MC_CMD_MUM_IN_QSFP_POLL_BIST_HDR_LEN 4
10071 #define	MC_CMD_MUM_IN_QSFP_POLL_BIST_IDX_OFST 8
10072 #define	MC_CMD_MUM_IN_QSFP_POLL_BIST_IDX_LEN 4
10073 
10074 /* MC_CMD_MUM_IN_READ_DDR_INFO msgrequest */
10075 #define	MC_CMD_MUM_IN_READ_DDR_INFO_LEN 4
10076 /* MUM cmd header */
10077 /*            MC_CMD_MUM_IN_CMD_OFST 0 */
10078 /*            MC_CMD_MUM_IN_CMD_LEN 4 */
10079 
10080 /* MC_CMD_MUM_OUT msgresponse */
10081 #define	MC_CMD_MUM_OUT_LEN 0
10082 
10083 /* MC_CMD_MUM_OUT_NULL msgresponse */
10084 #define	MC_CMD_MUM_OUT_NULL_LEN 0
10085 
10086 /* MC_CMD_MUM_OUT_GET_VERSION msgresponse */
10087 #define	MC_CMD_MUM_OUT_GET_VERSION_LEN 12
10088 #define	MC_CMD_MUM_OUT_GET_VERSION_FIRMWARE_OFST 0
10089 #define	MC_CMD_MUM_OUT_GET_VERSION_FIRMWARE_LEN 4
10090 #define	MC_CMD_MUM_OUT_GET_VERSION_VERSION_OFST 4
10091 #define	MC_CMD_MUM_OUT_GET_VERSION_VERSION_LEN 8
10092 #define	MC_CMD_MUM_OUT_GET_VERSION_VERSION_LO_OFST 4
10093 #define	MC_CMD_MUM_OUT_GET_VERSION_VERSION_LO_LEN 4
10094 #define	MC_CMD_MUM_OUT_GET_VERSION_VERSION_LO_LBN 32
10095 #define	MC_CMD_MUM_OUT_GET_VERSION_VERSION_LO_WIDTH 32
10096 #define	MC_CMD_MUM_OUT_GET_VERSION_VERSION_HI_OFST 8
10097 #define	MC_CMD_MUM_OUT_GET_VERSION_VERSION_HI_LEN 4
10098 #define	MC_CMD_MUM_OUT_GET_VERSION_VERSION_HI_LBN 64
10099 #define	MC_CMD_MUM_OUT_GET_VERSION_VERSION_HI_WIDTH 32
10100 
10101 /* MC_CMD_MUM_OUT_RAW_CMD msgresponse */
10102 #define	MC_CMD_MUM_OUT_RAW_CMD_LENMIN 1
10103 #define	MC_CMD_MUM_OUT_RAW_CMD_LENMAX 252
10104 #define	MC_CMD_MUM_OUT_RAW_CMD_LENMAX_MCDI2 1020
10105 #define	MC_CMD_MUM_OUT_RAW_CMD_LEN(num) (0+1*(num))
10106 #define	MC_CMD_MUM_OUT_RAW_CMD_DATA_NUM(len) (((len)-0)/1)
10107 /* returned data */
10108 #define	MC_CMD_MUM_OUT_RAW_CMD_DATA_OFST 0
10109 #define	MC_CMD_MUM_OUT_RAW_CMD_DATA_LEN 1
10110 #define	MC_CMD_MUM_OUT_RAW_CMD_DATA_MINNUM 1
10111 #define	MC_CMD_MUM_OUT_RAW_CMD_DATA_MAXNUM 252
10112 #define	MC_CMD_MUM_OUT_RAW_CMD_DATA_MAXNUM_MCDI2 1020
10113 
10114 /* MC_CMD_MUM_OUT_READ msgresponse */
10115 #define	MC_CMD_MUM_OUT_READ_LENMIN 4
10116 #define	MC_CMD_MUM_OUT_READ_LENMAX 252
10117 #define	MC_CMD_MUM_OUT_READ_LENMAX_MCDI2 1020
10118 #define	MC_CMD_MUM_OUT_READ_LEN(num) (0+4*(num))
10119 #define	MC_CMD_MUM_OUT_READ_BUFFER_NUM(len) (((len)-0)/4)
10120 #define	MC_CMD_MUM_OUT_READ_BUFFER_OFST 0
10121 #define	MC_CMD_MUM_OUT_READ_BUFFER_LEN 4
10122 #define	MC_CMD_MUM_OUT_READ_BUFFER_MINNUM 1
10123 #define	MC_CMD_MUM_OUT_READ_BUFFER_MAXNUM 63
10124 #define	MC_CMD_MUM_OUT_READ_BUFFER_MAXNUM_MCDI2 255
10125 
10126 /* MC_CMD_MUM_OUT_WRITE msgresponse */
10127 #define	MC_CMD_MUM_OUT_WRITE_LEN 0
10128 
10129 /* MC_CMD_MUM_OUT_LOG msgresponse */
10130 #define	MC_CMD_MUM_OUT_LOG_LEN 0
10131 
10132 /* MC_CMD_MUM_OUT_LOG_OP_UART msgresponse */
10133 #define	MC_CMD_MUM_OUT_LOG_OP_UART_LEN 0
10134 
10135 /* MC_CMD_MUM_OUT_GPIO_IN_READ msgresponse */
10136 #define	MC_CMD_MUM_OUT_GPIO_IN_READ_LEN 8
10137 /* The first 32-bit word read from the GPIO IN register. */
10138 #define	MC_CMD_MUM_OUT_GPIO_IN_READ_GPIOMASK1_OFST 0
10139 #define	MC_CMD_MUM_OUT_GPIO_IN_READ_GPIOMASK1_LEN 4
10140 /* The second 32-bit word read from the GPIO IN register. */
10141 #define	MC_CMD_MUM_OUT_GPIO_IN_READ_GPIOMASK2_OFST 4
10142 #define	MC_CMD_MUM_OUT_GPIO_IN_READ_GPIOMASK2_LEN 4
10143 
10144 /* MC_CMD_MUM_OUT_GPIO_OUT_WRITE msgresponse */
10145 #define	MC_CMD_MUM_OUT_GPIO_OUT_WRITE_LEN 0
10146 
10147 /* MC_CMD_MUM_OUT_GPIO_OUT_READ msgresponse */
10148 #define	MC_CMD_MUM_OUT_GPIO_OUT_READ_LEN 8
10149 /* The first 32-bit word read from the GPIO OUT register. */
10150 #define	MC_CMD_MUM_OUT_GPIO_OUT_READ_GPIOMASK1_OFST 0
10151 #define	MC_CMD_MUM_OUT_GPIO_OUT_READ_GPIOMASK1_LEN 4
10152 /* The second 32-bit word read from the GPIO OUT register. */
10153 #define	MC_CMD_MUM_OUT_GPIO_OUT_READ_GPIOMASK2_OFST 4
10154 #define	MC_CMD_MUM_OUT_GPIO_OUT_READ_GPIOMASK2_LEN 4
10155 
10156 /* MC_CMD_MUM_OUT_GPIO_OUT_ENABLE_WRITE msgresponse */
10157 #define	MC_CMD_MUM_OUT_GPIO_OUT_ENABLE_WRITE_LEN 0
10158 
10159 /* MC_CMD_MUM_OUT_GPIO_OUT_ENABLE_READ msgresponse */
10160 #define	MC_CMD_MUM_OUT_GPIO_OUT_ENABLE_READ_LEN 8
10161 #define	MC_CMD_MUM_OUT_GPIO_OUT_ENABLE_READ_GPIOMASK1_OFST 0
10162 #define	MC_CMD_MUM_OUT_GPIO_OUT_ENABLE_READ_GPIOMASK1_LEN 4
10163 #define	MC_CMD_MUM_OUT_GPIO_OUT_ENABLE_READ_GPIOMASK2_OFST 4
10164 #define	MC_CMD_MUM_OUT_GPIO_OUT_ENABLE_READ_GPIOMASK2_LEN 4
10165 
10166 /* MC_CMD_MUM_OUT_GPIO_OP_OUT_READ msgresponse */
10167 #define	MC_CMD_MUM_OUT_GPIO_OP_OUT_READ_LEN 4
10168 #define	MC_CMD_MUM_OUT_GPIO_OP_OUT_READ_BIT_READ_OFST 0
10169 #define	MC_CMD_MUM_OUT_GPIO_OP_OUT_READ_BIT_READ_LEN 4
10170 
10171 /* MC_CMD_MUM_OUT_GPIO_OP_OUT_WRITE msgresponse */
10172 #define	MC_CMD_MUM_OUT_GPIO_OP_OUT_WRITE_LEN 0
10173 
10174 /* MC_CMD_MUM_OUT_GPIO_OP_OUT_CONFIG msgresponse */
10175 #define	MC_CMD_MUM_OUT_GPIO_OP_OUT_CONFIG_LEN 0
10176 
10177 /* MC_CMD_MUM_OUT_GPIO_OP_OUT_ENABLE msgresponse */
10178 #define	MC_CMD_MUM_OUT_GPIO_OP_OUT_ENABLE_LEN 0
10179 
10180 /* MC_CMD_MUM_OUT_READ_SENSORS msgresponse */
10181 #define	MC_CMD_MUM_OUT_READ_SENSORS_LENMIN 4
10182 #define	MC_CMD_MUM_OUT_READ_SENSORS_LENMAX 252
10183 #define	MC_CMD_MUM_OUT_READ_SENSORS_LENMAX_MCDI2 1020
10184 #define	MC_CMD_MUM_OUT_READ_SENSORS_LEN(num) (0+4*(num))
10185 #define	MC_CMD_MUM_OUT_READ_SENSORS_DATA_NUM(len) (((len)-0)/4)
10186 #define	MC_CMD_MUM_OUT_READ_SENSORS_DATA_OFST 0
10187 #define	MC_CMD_MUM_OUT_READ_SENSORS_DATA_LEN 4
10188 #define	MC_CMD_MUM_OUT_READ_SENSORS_DATA_MINNUM 1
10189 #define	MC_CMD_MUM_OUT_READ_SENSORS_DATA_MAXNUM 63
10190 #define	MC_CMD_MUM_OUT_READ_SENSORS_DATA_MAXNUM_MCDI2 255
10191 #define	MC_CMD_MUM_OUT_READ_SENSORS_READING_OFST 0
10192 #define	MC_CMD_MUM_OUT_READ_SENSORS_READING_LBN 0
10193 #define	MC_CMD_MUM_OUT_READ_SENSORS_READING_WIDTH 16
10194 #define	MC_CMD_MUM_OUT_READ_SENSORS_STATE_OFST 0
10195 #define	MC_CMD_MUM_OUT_READ_SENSORS_STATE_LBN 16
10196 #define	MC_CMD_MUM_OUT_READ_SENSORS_STATE_WIDTH 8
10197 #define	MC_CMD_MUM_OUT_READ_SENSORS_TYPE_OFST 0
10198 #define	MC_CMD_MUM_OUT_READ_SENSORS_TYPE_LBN 24
10199 #define	MC_CMD_MUM_OUT_READ_SENSORS_TYPE_WIDTH 8
10200 
10201 /* MC_CMD_MUM_OUT_PROGRAM_CLOCKS msgresponse */
10202 #define	MC_CMD_MUM_OUT_PROGRAM_CLOCKS_LEN 4
10203 #define	MC_CMD_MUM_OUT_PROGRAM_CLOCKS_OK_MASK_OFST 0
10204 #define	MC_CMD_MUM_OUT_PROGRAM_CLOCKS_OK_MASK_LEN 4
10205 
10206 /* MC_CMD_MUM_OUT_FPGA_LOAD msgresponse */
10207 #define	MC_CMD_MUM_OUT_FPGA_LOAD_LEN 0
10208 
10209 /* MC_CMD_MUM_OUT_READ_ATB_SENSOR msgresponse */
10210 #define	MC_CMD_MUM_OUT_READ_ATB_SENSOR_LEN 4
10211 #define	MC_CMD_MUM_OUT_READ_ATB_SENSOR_RESULT_OFST 0
10212 #define	MC_CMD_MUM_OUT_READ_ATB_SENSOR_RESULT_LEN 4
10213 
10214 /* MC_CMD_MUM_OUT_QSFP_INIT msgresponse */
10215 #define	MC_CMD_MUM_OUT_QSFP_INIT_LEN 0
10216 
10217 /* MC_CMD_MUM_OUT_QSFP_RECONFIGURE msgresponse */
10218 #define	MC_CMD_MUM_OUT_QSFP_RECONFIGURE_LEN 8
10219 #define	MC_CMD_MUM_OUT_QSFP_RECONFIGURE_PORT_PHY_LP_CAP_OFST 0
10220 #define	MC_CMD_MUM_OUT_QSFP_RECONFIGURE_PORT_PHY_LP_CAP_LEN 4
10221 #define	MC_CMD_MUM_OUT_QSFP_RECONFIGURE_PORT_PHY_FLAGS_OFST 4
10222 #define	MC_CMD_MUM_OUT_QSFP_RECONFIGURE_PORT_PHY_FLAGS_LEN 4
10223 #define	MC_CMD_MUM_OUT_QSFP_RECONFIGURE_PORT_PHY_READY_OFST 4
10224 #define	MC_CMD_MUM_OUT_QSFP_RECONFIGURE_PORT_PHY_READY_LBN 0
10225 #define	MC_CMD_MUM_OUT_QSFP_RECONFIGURE_PORT_PHY_READY_WIDTH 1
10226 #define	MC_CMD_MUM_OUT_QSFP_RECONFIGURE_PORT_PHY_LINK_UP_OFST 4
10227 #define	MC_CMD_MUM_OUT_QSFP_RECONFIGURE_PORT_PHY_LINK_UP_LBN 1
10228 #define	MC_CMD_MUM_OUT_QSFP_RECONFIGURE_PORT_PHY_LINK_UP_WIDTH 1
10229 
10230 /* MC_CMD_MUM_OUT_QSFP_GET_SUPPORTED_CAP msgresponse */
10231 #define	MC_CMD_MUM_OUT_QSFP_GET_SUPPORTED_CAP_LEN 4
10232 #define	MC_CMD_MUM_OUT_QSFP_GET_SUPPORTED_CAP_PORT_PHY_LP_CAP_OFST 0
10233 #define	MC_CMD_MUM_OUT_QSFP_GET_SUPPORTED_CAP_PORT_PHY_LP_CAP_LEN 4
10234 
10235 /* MC_CMD_MUM_OUT_QSFP_GET_MEDIA_INFO msgresponse */
10236 #define	MC_CMD_MUM_OUT_QSFP_GET_MEDIA_INFO_LENMIN 5
10237 #define	MC_CMD_MUM_OUT_QSFP_GET_MEDIA_INFO_LENMAX 252
10238 #define	MC_CMD_MUM_OUT_QSFP_GET_MEDIA_INFO_LENMAX_MCDI2 1020
10239 #define	MC_CMD_MUM_OUT_QSFP_GET_MEDIA_INFO_LEN(num) (4+1*(num))
10240 #define	MC_CMD_MUM_OUT_QSFP_GET_MEDIA_INFO_DATA_NUM(len) (((len)-4)/1)
10241 /* in bytes */
10242 #define	MC_CMD_MUM_OUT_QSFP_GET_MEDIA_INFO_DATALEN_OFST 0
10243 #define	MC_CMD_MUM_OUT_QSFP_GET_MEDIA_INFO_DATALEN_LEN 4
10244 #define	MC_CMD_MUM_OUT_QSFP_GET_MEDIA_INFO_DATA_OFST 4
10245 #define	MC_CMD_MUM_OUT_QSFP_GET_MEDIA_INFO_DATA_LEN 1
10246 #define	MC_CMD_MUM_OUT_QSFP_GET_MEDIA_INFO_DATA_MINNUM 1
10247 #define	MC_CMD_MUM_OUT_QSFP_GET_MEDIA_INFO_DATA_MAXNUM 248
10248 #define	MC_CMD_MUM_OUT_QSFP_GET_MEDIA_INFO_DATA_MAXNUM_MCDI2 1016
10249 
10250 /* MC_CMD_MUM_OUT_QSFP_FILL_STATS msgresponse */
10251 #define	MC_CMD_MUM_OUT_QSFP_FILL_STATS_LEN 8
10252 #define	MC_CMD_MUM_OUT_QSFP_FILL_STATS_PORT_PHY_STATS_PMA_PMD_LINK_UP_OFST 0
10253 #define	MC_CMD_MUM_OUT_QSFP_FILL_STATS_PORT_PHY_STATS_PMA_PMD_LINK_UP_LEN 4
10254 #define	MC_CMD_MUM_OUT_QSFP_FILL_STATS_PORT_PHY_STATS_PCS_LINK_UP_OFST 4
10255 #define	MC_CMD_MUM_OUT_QSFP_FILL_STATS_PORT_PHY_STATS_PCS_LINK_UP_LEN 4
10256 
10257 /* MC_CMD_MUM_OUT_QSFP_POLL_BIST msgresponse */
10258 #define	MC_CMD_MUM_OUT_QSFP_POLL_BIST_LEN 4
10259 #define	MC_CMD_MUM_OUT_QSFP_POLL_BIST_TEST_OFST 0
10260 #define	MC_CMD_MUM_OUT_QSFP_POLL_BIST_TEST_LEN 4
10261 
10262 /* MC_CMD_MUM_OUT_READ_DDR_INFO msgresponse */
10263 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_LENMIN 24
10264 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_LENMAX 248
10265 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_LENMAX_MCDI2 1016
10266 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_LEN(num) (8+8*(num))
10267 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_SODIMM_INFO_RECORD_NUM(len) (((len)-8)/8)
10268 /* Discrete (soldered) DDR resistor strap info */
10269 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_DISCRETE_DDR_INFO_OFST 0
10270 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_DISCRETE_DDR_INFO_LEN 4
10271 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_VRATIO_OFST 0
10272 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_VRATIO_LBN 0
10273 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_VRATIO_WIDTH 16
10274 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_RESERVED1_OFST 0
10275 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_RESERVED1_LBN 16
10276 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_RESERVED1_WIDTH 16
10277 /* Number of SODIMM info records */
10278 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_NUM_RECORDS_OFST 4
10279 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_NUM_RECORDS_LEN 4
10280 /* Array of SODIMM info records */
10281 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_SODIMM_INFO_RECORD_OFST 8
10282 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_SODIMM_INFO_RECORD_LEN 8
10283 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_SODIMM_INFO_RECORD_LO_OFST 8
10284 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_SODIMM_INFO_RECORD_LO_LEN 4
10285 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_SODIMM_INFO_RECORD_LO_LBN 64
10286 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_SODIMM_INFO_RECORD_LO_WIDTH 32
10287 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_SODIMM_INFO_RECORD_HI_OFST 12
10288 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_SODIMM_INFO_RECORD_HI_LEN 4
10289 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_SODIMM_INFO_RECORD_HI_LBN 96
10290 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_SODIMM_INFO_RECORD_HI_WIDTH 32
10291 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_SODIMM_INFO_RECORD_MINNUM 2
10292 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_SODIMM_INFO_RECORD_MAXNUM 30
10293 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_SODIMM_INFO_RECORD_MAXNUM_MCDI2 126
10294 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_BANK_ID_OFST 8
10295 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_BANK_ID_LBN 0
10296 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_BANK_ID_WIDTH 8
10297 /* enum: SODIMM bank 1 (Top SODIMM for Sorrento) */
10298 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_BANK1 0x0
10299 /* enum: SODIMM bank 2 (Bottom SODDIMM for Sorrento) */
10300 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_BANK2 0x1
10301 /* enum: Total number of SODIMM banks */
10302 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_NUM_BANKS 0x2
10303 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_TYPE_OFST 8
10304 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_TYPE_LBN 8
10305 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_TYPE_WIDTH 8
10306 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_RANK_OFST 8
10307 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_RANK_LBN 16
10308 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_RANK_WIDTH 4
10309 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_VOLTAGE_OFST 8
10310 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_VOLTAGE_LBN 20
10311 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_VOLTAGE_WIDTH 4
10312 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_NOT_POWERED 0x0 /* enum */
10313 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_1V25 0x1 /* enum */
10314 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_1V35 0x2 /* enum */
10315 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_1V5 0x3 /* enum */
10316 /* enum: Values 5-15 are reserved for future usage */
10317 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_1V8 0x4
10318 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_SIZE_OFST 8
10319 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_SIZE_LBN 24
10320 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_SIZE_WIDTH 8
10321 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_SPEED_OFST 8
10322 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_SPEED_LBN 32
10323 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_SPEED_WIDTH 16
10324 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_STATE_OFST 8
10325 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_STATE_LBN 48
10326 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_STATE_WIDTH 4
10327 /* enum: No module present */
10328 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_ABSENT 0x0
10329 /* enum: Module present supported and powered on */
10330 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_PRESENT_POWERED 0x1
10331 /* enum: Module present but bad type */
10332 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_PRESENT_BAD_TYPE 0x2
10333 /* enum: Module present but incompatible voltage */
10334 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_PRESENT_BAD_VOLTAGE 0x3
10335 /* enum: Module present but unknown SPD */
10336 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_PRESENT_BAD_SPD 0x4
10337 /* enum: Module present but slot cannot support it */
10338 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_PRESENT_BAD_SLOT 0x5
10339 /* enum: Modules may or may not be present, but cannot establish contact by I2C
10340  */
10341 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_NOT_REACHABLE 0x6
10342 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_RESERVED2_OFST 8
10343 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_RESERVED2_LBN 52
10344 #define	MC_CMD_MUM_OUT_READ_DDR_INFO_RESERVED2_WIDTH 12
10345 
10346 /* MC_CMD_DYNAMIC_SENSORS_LIMITS structuredef: Set of sensor limits. This
10347  * should match the equivalent structure in the sensor_query SPHINX service.
10348  */
10349 #define	MC_CMD_DYNAMIC_SENSORS_LIMITS_LEN 24
10350 /* A value below this will trigger a warning event. */
10351 #define	MC_CMD_DYNAMIC_SENSORS_LIMITS_LO_WARNING_OFST 0
10352 #define	MC_CMD_DYNAMIC_SENSORS_LIMITS_LO_WARNING_LEN 4
10353 #define	MC_CMD_DYNAMIC_SENSORS_LIMITS_LO_WARNING_LBN 0
10354 #define	MC_CMD_DYNAMIC_SENSORS_LIMITS_LO_WARNING_WIDTH 32
10355 /* A value below this will trigger a critical event. */
10356 #define	MC_CMD_DYNAMIC_SENSORS_LIMITS_LO_CRITICAL_OFST 4
10357 #define	MC_CMD_DYNAMIC_SENSORS_LIMITS_LO_CRITICAL_LEN 4
10358 #define	MC_CMD_DYNAMIC_SENSORS_LIMITS_LO_CRITICAL_LBN 32
10359 #define	MC_CMD_DYNAMIC_SENSORS_LIMITS_LO_CRITICAL_WIDTH 32
10360 /* A value below this will shut down the card. */
10361 #define	MC_CMD_DYNAMIC_SENSORS_LIMITS_LO_FATAL_OFST 8
10362 #define	MC_CMD_DYNAMIC_SENSORS_LIMITS_LO_FATAL_LEN 4
10363 #define	MC_CMD_DYNAMIC_SENSORS_LIMITS_LO_FATAL_LBN 64
10364 #define	MC_CMD_DYNAMIC_SENSORS_LIMITS_LO_FATAL_WIDTH 32
10365 /* A value above this will trigger a warning event. */
10366 #define	MC_CMD_DYNAMIC_SENSORS_LIMITS_HI_WARNING_OFST 12
10367 #define	MC_CMD_DYNAMIC_SENSORS_LIMITS_HI_WARNING_LEN 4
10368 #define	MC_CMD_DYNAMIC_SENSORS_LIMITS_HI_WARNING_LBN 96
10369 #define	MC_CMD_DYNAMIC_SENSORS_LIMITS_HI_WARNING_WIDTH 32
10370 /* A value above this will trigger a critical event. */
10371 #define	MC_CMD_DYNAMIC_SENSORS_LIMITS_HI_CRITICAL_OFST 16
10372 #define	MC_CMD_DYNAMIC_SENSORS_LIMITS_HI_CRITICAL_LEN 4
10373 #define	MC_CMD_DYNAMIC_SENSORS_LIMITS_HI_CRITICAL_LBN 128
10374 #define	MC_CMD_DYNAMIC_SENSORS_LIMITS_HI_CRITICAL_WIDTH 32
10375 /* A value above this will shut down the card. */
10376 #define	MC_CMD_DYNAMIC_SENSORS_LIMITS_HI_FATAL_OFST 20
10377 #define	MC_CMD_DYNAMIC_SENSORS_LIMITS_HI_FATAL_LEN 4
10378 #define	MC_CMD_DYNAMIC_SENSORS_LIMITS_HI_FATAL_LBN 160
10379 #define	MC_CMD_DYNAMIC_SENSORS_LIMITS_HI_FATAL_WIDTH 32
10380 
10381 /* MC_CMD_DYNAMIC_SENSORS_DESCRIPTION structuredef: Description of a sensor.
10382  * This should match the equivalent structure in the sensor_query SPHINX
10383  * service.
10384  */
10385 #define	MC_CMD_DYNAMIC_SENSORS_DESCRIPTION_LEN 64
10386 /* The handle used to identify the sensor in calls to
10387  * MC_CMD_DYNAMIC_SENSORS_GET_VALUES
10388  */
10389 #define	MC_CMD_DYNAMIC_SENSORS_DESCRIPTION_HANDLE_OFST 0
10390 #define	MC_CMD_DYNAMIC_SENSORS_DESCRIPTION_HANDLE_LEN 4
10391 #define	MC_CMD_DYNAMIC_SENSORS_DESCRIPTION_HANDLE_LBN 0
10392 #define	MC_CMD_DYNAMIC_SENSORS_DESCRIPTION_HANDLE_WIDTH 32
10393 /* A human-readable name for the sensor (zero terminated string, max 32 bytes)
10394  */
10395 #define	MC_CMD_DYNAMIC_SENSORS_DESCRIPTION_NAME_OFST 4
10396 #define	MC_CMD_DYNAMIC_SENSORS_DESCRIPTION_NAME_LEN 32
10397 #define	MC_CMD_DYNAMIC_SENSORS_DESCRIPTION_NAME_LBN 32
10398 #define	MC_CMD_DYNAMIC_SENSORS_DESCRIPTION_NAME_WIDTH 256
10399 /* The type of the sensor device, and by implication the unit of that the
10400  * values will be reported in
10401  */
10402 #define	MC_CMD_DYNAMIC_SENSORS_DESCRIPTION_TYPE_OFST 36
10403 #define	MC_CMD_DYNAMIC_SENSORS_DESCRIPTION_TYPE_LEN 4
10404 /* enum: A voltage sensor. Unit is mV */
10405 #define	MC_CMD_DYNAMIC_SENSORS_DESCRIPTION_VOLTAGE 0x0
10406 /* enum: A current sensor. Unit is mA */
10407 #define	MC_CMD_DYNAMIC_SENSORS_DESCRIPTION_CURRENT 0x1
10408 /* enum: A power sensor. Unit is mW */
10409 #define	MC_CMD_DYNAMIC_SENSORS_DESCRIPTION_POWER 0x2
10410 /* enum: A temperature sensor. Unit is Celsius */
10411 #define	MC_CMD_DYNAMIC_SENSORS_DESCRIPTION_TEMPERATURE 0x3
10412 /* enum: A cooling fan sensor. Unit is RPM */
10413 #define	MC_CMD_DYNAMIC_SENSORS_DESCRIPTION_FAN 0x4
10414 #define	MC_CMD_DYNAMIC_SENSORS_DESCRIPTION_TYPE_LBN 288
10415 #define	MC_CMD_DYNAMIC_SENSORS_DESCRIPTION_TYPE_WIDTH 32
10416 /* A single MC_CMD_DYNAMIC_SENSORS_LIMITS structure */
10417 #define	MC_CMD_DYNAMIC_SENSORS_DESCRIPTION_LIMITS_OFST 40
10418 #define	MC_CMD_DYNAMIC_SENSORS_DESCRIPTION_LIMITS_LEN 24
10419 #define	MC_CMD_DYNAMIC_SENSORS_DESCRIPTION_LIMITS_LBN 320
10420 #define	MC_CMD_DYNAMIC_SENSORS_DESCRIPTION_LIMITS_WIDTH 192
10421 
10422 /* MC_CMD_DYNAMIC_SENSORS_READING structuredef: State and value of a sensor.
10423  * This should match the equivalent structure in the sensor_query SPHINX
10424  * service.
10425  */
10426 #define	MC_CMD_DYNAMIC_SENSORS_READING_LEN 12
10427 /* The handle used to identify the sensor */
10428 #define	MC_CMD_DYNAMIC_SENSORS_READING_HANDLE_OFST 0
10429 #define	MC_CMD_DYNAMIC_SENSORS_READING_HANDLE_LEN 4
10430 #define	MC_CMD_DYNAMIC_SENSORS_READING_HANDLE_LBN 0
10431 #define	MC_CMD_DYNAMIC_SENSORS_READING_HANDLE_WIDTH 32
10432 /* The current value of the sensor */
10433 #define	MC_CMD_DYNAMIC_SENSORS_READING_VALUE_OFST 4
10434 #define	MC_CMD_DYNAMIC_SENSORS_READING_VALUE_LEN 4
10435 #define	MC_CMD_DYNAMIC_SENSORS_READING_VALUE_LBN 32
10436 #define	MC_CMD_DYNAMIC_SENSORS_READING_VALUE_WIDTH 32
10437 /* The sensor's condition, e.g. good, broken or removed */
10438 #define	MC_CMD_DYNAMIC_SENSORS_READING_STATE_OFST 8
10439 #define	MC_CMD_DYNAMIC_SENSORS_READING_STATE_LEN 4
10440 /* enum: Sensor working normally within limits */
10441 #define	MC_CMD_DYNAMIC_SENSORS_READING_OK 0x0
10442 /* enum: Warning threshold breached */
10443 #define	MC_CMD_DYNAMIC_SENSORS_READING_WARNING 0x1
10444 /* enum: Critical threshold breached */
10445 #define	MC_CMD_DYNAMIC_SENSORS_READING_CRITICAL 0x2
10446 /* enum: Fatal threshold breached */
10447 #define	MC_CMD_DYNAMIC_SENSORS_READING_FATAL 0x3
10448 /* enum: Sensor not working */
10449 #define	MC_CMD_DYNAMIC_SENSORS_READING_BROKEN 0x4
10450 /* enum: Sensor working but no reading available */
10451 #define	MC_CMD_DYNAMIC_SENSORS_READING_NO_READING 0x5
10452 /* enum: Sensor initialization failed */
10453 #define	MC_CMD_DYNAMIC_SENSORS_READING_INIT_FAILED 0x6
10454 #define	MC_CMD_DYNAMIC_SENSORS_READING_STATE_LBN 64
10455 #define	MC_CMD_DYNAMIC_SENSORS_READING_STATE_WIDTH 32
10456 
10457 
10458 /***********************************/
10459 /* MC_CMD_DYNAMIC_SENSORS_LIST
10460  * Return a complete list of handles for sensors currently managed by the MC,
10461  * and a generation count for this version of the sensor table. On systems
10462  * advertising the DYNAMIC_SENSORS capability bit, this replaces the
10463  * MC_CMD_READ_SENSORS command. On multi-MC systems this may include sensors
10464  * added by the NMC. Sensor handles are persistent for the lifetime of the
10465  * sensor and are used to identify sensors in
10466  * MC_CMD_DYNAMIC_SENSORS_GET_DESCRIPTIONS and
10467  * MC_CMD_DYNAMIC_SENSORS_GET_VALUES. The generation count is maintained by the
10468  * MC, is persistent across reboots and will be incremented each time the
10469  * sensor table is modified. When the table is modified, a
10470  * CODE_DYNAMIC_SENSORS_CHANGE event will be generated containing the new
10471  * generation count. The driver should compare this against the current
10472  * generation count, and if it is different, call MC_CMD_DYNAMIC_SENSORS_LIST
10473  * again to update it's copy of the sensor table. The sensor count is provided
10474  * to allow a future path to supporting more than
10475  * MC_CMD_DYNAMIC_SENSORS_GET_READINGS_IN_HANDLES_MAXNUM_MCDI2 sensors, i.e.
10476  * the maximum number that will fit in a single response. As this is a fairly
10477  * large number (253) it is not anticipated that this will be needed in the
10478  * near future, so can currently be ignored. On Riverhead this command is
10479  * implemented as a wrapper for `list` in the sensor_query SPHINX service.
10480  */
10481 #define	MC_CMD_DYNAMIC_SENSORS_LIST 0x66
10482 #define	MC_CMD_DYNAMIC_SENSORS_LIST_MSGSET 0x66
10483 #undef	MC_CMD_0x66_PRIVILEGE_CTG
10484 
10485 #define	MC_CMD_0x66_PRIVILEGE_CTG SRIOV_CTG_GENERAL
10486 
10487 /* MC_CMD_DYNAMIC_SENSORS_LIST_IN msgrequest */
10488 #define	MC_CMD_DYNAMIC_SENSORS_LIST_IN_LEN 0
10489 
10490 /* MC_CMD_DYNAMIC_SENSORS_LIST_OUT msgresponse */
10491 #define	MC_CMD_DYNAMIC_SENSORS_LIST_OUT_LENMIN 8
10492 #define	MC_CMD_DYNAMIC_SENSORS_LIST_OUT_LENMAX 252
10493 #define	MC_CMD_DYNAMIC_SENSORS_LIST_OUT_LENMAX_MCDI2 1020
10494 #define	MC_CMD_DYNAMIC_SENSORS_LIST_OUT_LEN(num) (8+4*(num))
10495 #define	MC_CMD_DYNAMIC_SENSORS_LIST_OUT_HANDLES_NUM(len) (((len)-8)/4)
10496 /* Generation count, which will be updated each time a sensor is added to or
10497  * removed from the MC sensor table.
10498  */
10499 #define	MC_CMD_DYNAMIC_SENSORS_LIST_OUT_GENERATION_OFST 0
10500 #define	MC_CMD_DYNAMIC_SENSORS_LIST_OUT_GENERATION_LEN 4
10501 /* Number of sensors managed by the MC. Note that in principle, this can be
10502  * larger than the size of the HANDLES array.
10503  */
10504 #define	MC_CMD_DYNAMIC_SENSORS_LIST_OUT_COUNT_OFST 4
10505 #define	MC_CMD_DYNAMIC_SENSORS_LIST_OUT_COUNT_LEN 4
10506 /* Array of sensor handles */
10507 #define	MC_CMD_DYNAMIC_SENSORS_LIST_OUT_HANDLES_OFST 8
10508 #define	MC_CMD_DYNAMIC_SENSORS_LIST_OUT_HANDLES_LEN 4
10509 #define	MC_CMD_DYNAMIC_SENSORS_LIST_OUT_HANDLES_MINNUM 0
10510 #define	MC_CMD_DYNAMIC_SENSORS_LIST_OUT_HANDLES_MAXNUM 61
10511 #define	MC_CMD_DYNAMIC_SENSORS_LIST_OUT_HANDLES_MAXNUM_MCDI2 253
10512 
10513 
10514 /***********************************/
10515 /* MC_CMD_DYNAMIC_SENSORS_GET_DESCRIPTIONS
10516  * Get descriptions for a set of sensors, specified as an array of sensor
10517  * handles as returned by MC_CMD_DYNAMIC_SENSORS_LIST. Any handles which do not
10518  * correspond to a sensor currently managed by the MC will be dropped from
10519  * the response. This may happen when a sensor table update is in progress, and
10520  * effectively means the set of usable sensors is the intersection between the
10521  * sets of sensors known to the driver and the MC. On Riverhead this command is
10522  * implemented as a wrapper for `get_descriptions` in the sensor_query SPHINX
10523  * service.
10524  */
10525 #define	MC_CMD_DYNAMIC_SENSORS_GET_DESCRIPTIONS 0x67
10526 #define	MC_CMD_DYNAMIC_SENSORS_GET_DESCRIPTIONS_MSGSET 0x67
10527 #undef	MC_CMD_0x67_PRIVILEGE_CTG
10528 
10529 #define	MC_CMD_0x67_PRIVILEGE_CTG SRIOV_CTG_GENERAL
10530 
10531 /* MC_CMD_DYNAMIC_SENSORS_GET_DESCRIPTIONS_IN msgrequest */
10532 #define	MC_CMD_DYNAMIC_SENSORS_GET_DESCRIPTIONS_IN_LENMIN 0
10533 #define	MC_CMD_DYNAMIC_SENSORS_GET_DESCRIPTIONS_IN_LENMAX 252
10534 #define	MC_CMD_DYNAMIC_SENSORS_GET_DESCRIPTIONS_IN_LENMAX_MCDI2 1020
10535 #define	MC_CMD_DYNAMIC_SENSORS_GET_DESCRIPTIONS_IN_LEN(num) (0+4*(num))
10536 #define	MC_CMD_DYNAMIC_SENSORS_GET_DESCRIPTIONS_IN_HANDLES_NUM(len) (((len)-0)/4)
10537 /* Array of sensor handles */
10538 #define	MC_CMD_DYNAMIC_SENSORS_GET_DESCRIPTIONS_IN_HANDLES_OFST 0
10539 #define	MC_CMD_DYNAMIC_SENSORS_GET_DESCRIPTIONS_IN_HANDLES_LEN 4
10540 #define	MC_CMD_DYNAMIC_SENSORS_GET_DESCRIPTIONS_IN_HANDLES_MINNUM 0
10541 #define	MC_CMD_DYNAMIC_SENSORS_GET_DESCRIPTIONS_IN_HANDLES_MAXNUM 63
10542 #define	MC_CMD_DYNAMIC_SENSORS_GET_DESCRIPTIONS_IN_HANDLES_MAXNUM_MCDI2 255
10543 
10544 /* MC_CMD_DYNAMIC_SENSORS_GET_DESCRIPTIONS_OUT msgresponse */
10545 #define	MC_CMD_DYNAMIC_SENSORS_GET_DESCRIPTIONS_OUT_LENMIN 0
10546 #define	MC_CMD_DYNAMIC_SENSORS_GET_DESCRIPTIONS_OUT_LENMAX 192
10547 #define	MC_CMD_DYNAMIC_SENSORS_GET_DESCRIPTIONS_OUT_LENMAX_MCDI2 960
10548 #define	MC_CMD_DYNAMIC_SENSORS_GET_DESCRIPTIONS_OUT_LEN(num) (0+64*(num))
10549 #define	MC_CMD_DYNAMIC_SENSORS_GET_DESCRIPTIONS_OUT_SENSORS_NUM(len) (((len)-0)/64)
10550 /* Array of MC_CMD_DYNAMIC_SENSORS_DESCRIPTION structures */
10551 #define	MC_CMD_DYNAMIC_SENSORS_GET_DESCRIPTIONS_OUT_SENSORS_OFST 0
10552 #define	MC_CMD_DYNAMIC_SENSORS_GET_DESCRIPTIONS_OUT_SENSORS_LEN 64
10553 #define	MC_CMD_DYNAMIC_SENSORS_GET_DESCRIPTIONS_OUT_SENSORS_MINNUM 0
10554 #define	MC_CMD_DYNAMIC_SENSORS_GET_DESCRIPTIONS_OUT_SENSORS_MAXNUM 3
10555 #define	MC_CMD_DYNAMIC_SENSORS_GET_DESCRIPTIONS_OUT_SENSORS_MAXNUM_MCDI2 15
10556 
10557 
10558 /***********************************/
10559 /* MC_CMD_DYNAMIC_SENSORS_GET_READINGS
10560  * Read the state and value for a set of sensors, specified as an array of
10561  * sensor handles as returned by MC_CMD_DYNAMIC_SENSORS_LIST. In the case of a
10562  * broken sensor, then the state of the response's MC_CMD_DYNAMIC_SENSORS_VALUE
10563  * entry will be set to BROKEN, and any value provided should be treated as
10564  * erroneous. Any handles which do not correspond to a sensor currently managed
10565  * by the MC will be dropped from the response. This may happen when a
10566  * sensor table update is in progress, and effectively means the set of usable
10567  * sensors is the intersection between the sets of sensors known to the driver
10568  * and the MC. On Riverhead this command is implemented as a wrapper for
10569  * `get_readings` in the sensor_query SPHINX service.
10570  */
10571 #define	MC_CMD_DYNAMIC_SENSORS_GET_READINGS 0x68
10572 #define	MC_CMD_DYNAMIC_SENSORS_GET_READINGS_MSGSET 0x68
10573 #undef	MC_CMD_0x68_PRIVILEGE_CTG
10574 
10575 #define	MC_CMD_0x68_PRIVILEGE_CTG SRIOV_CTG_GENERAL
10576 
10577 /* MC_CMD_DYNAMIC_SENSORS_GET_READINGS_IN msgrequest */
10578 #define	MC_CMD_DYNAMIC_SENSORS_GET_READINGS_IN_LENMIN 0
10579 #define	MC_CMD_DYNAMIC_SENSORS_GET_READINGS_IN_LENMAX 252
10580 #define	MC_CMD_DYNAMIC_SENSORS_GET_READINGS_IN_LENMAX_MCDI2 1020
10581 #define	MC_CMD_DYNAMIC_SENSORS_GET_READINGS_IN_LEN(num) (0+4*(num))
10582 #define	MC_CMD_DYNAMIC_SENSORS_GET_READINGS_IN_HANDLES_NUM(len) (((len)-0)/4)
10583 /* Array of sensor handles */
10584 #define	MC_CMD_DYNAMIC_SENSORS_GET_READINGS_IN_HANDLES_OFST 0
10585 #define	MC_CMD_DYNAMIC_SENSORS_GET_READINGS_IN_HANDLES_LEN 4
10586 #define	MC_CMD_DYNAMIC_SENSORS_GET_READINGS_IN_HANDLES_MINNUM 0
10587 #define	MC_CMD_DYNAMIC_SENSORS_GET_READINGS_IN_HANDLES_MAXNUM 63
10588 #define	MC_CMD_DYNAMIC_SENSORS_GET_READINGS_IN_HANDLES_MAXNUM_MCDI2 255
10589 
10590 /* MC_CMD_DYNAMIC_SENSORS_GET_READINGS_OUT msgresponse */
10591 #define	MC_CMD_DYNAMIC_SENSORS_GET_READINGS_OUT_LENMIN 0
10592 #define	MC_CMD_DYNAMIC_SENSORS_GET_READINGS_OUT_LENMAX 252
10593 #define	MC_CMD_DYNAMIC_SENSORS_GET_READINGS_OUT_LENMAX_MCDI2 1020
10594 #define	MC_CMD_DYNAMIC_SENSORS_GET_READINGS_OUT_LEN(num) (0+12*(num))
10595 #define	MC_CMD_DYNAMIC_SENSORS_GET_READINGS_OUT_VALUES_NUM(len) (((len)-0)/12)
10596 /* Array of MC_CMD_DYNAMIC_SENSORS_READING structures */
10597 #define	MC_CMD_DYNAMIC_SENSORS_GET_READINGS_OUT_VALUES_OFST 0
10598 #define	MC_CMD_DYNAMIC_SENSORS_GET_READINGS_OUT_VALUES_LEN 12
10599 #define	MC_CMD_DYNAMIC_SENSORS_GET_READINGS_OUT_VALUES_MINNUM 0
10600 #define	MC_CMD_DYNAMIC_SENSORS_GET_READINGS_OUT_VALUES_MAXNUM 21
10601 #define	MC_CMD_DYNAMIC_SENSORS_GET_READINGS_OUT_VALUES_MAXNUM_MCDI2 85
10602 
10603 
10604 /***********************************/
10605 /* MC_CMD_EVENT_CTRL
10606  * Configure which categories of unsolicited events the driver expects to
10607  * receive (Riverhead).
10608  */
10609 #define	MC_CMD_EVENT_CTRL 0x69
10610 #define	MC_CMD_EVENT_CTRL_MSGSET 0x69
10611 #undef	MC_CMD_0x69_PRIVILEGE_CTG
10612 
10613 #define	MC_CMD_0x69_PRIVILEGE_CTG SRIOV_CTG_GENERAL
10614 
10615 /* MC_CMD_EVENT_CTRL_IN msgrequest */
10616 #define	MC_CMD_EVENT_CTRL_IN_LENMIN 0
10617 #define	MC_CMD_EVENT_CTRL_IN_LENMAX 252
10618 #define	MC_CMD_EVENT_CTRL_IN_LENMAX_MCDI2 1020
10619 #define	MC_CMD_EVENT_CTRL_IN_LEN(num) (0+4*(num))
10620 #define	MC_CMD_EVENT_CTRL_IN_EVENT_TYPE_NUM(len) (((len)-0)/4)
10621 /* Array of event categories for which the driver wishes to receive events. */
10622 #define	MC_CMD_EVENT_CTRL_IN_EVENT_TYPE_OFST 0
10623 #define	MC_CMD_EVENT_CTRL_IN_EVENT_TYPE_LEN 4
10624 #define	MC_CMD_EVENT_CTRL_IN_EVENT_TYPE_MINNUM 0
10625 #define	MC_CMD_EVENT_CTRL_IN_EVENT_TYPE_MAXNUM 63
10626 #define	MC_CMD_EVENT_CTRL_IN_EVENT_TYPE_MAXNUM_MCDI2 255
10627 /* enum: Driver wishes to receive LINKCHANGE events. */
10628 #define	MC_CMD_EVENT_CTRL_IN_MCDI_EVENT_CODE_LINKCHANGE 0x0
10629 /* enum: Driver wishes to receive SENSOR_CHANGE and SENSOR_STATE_CHANGE events.
10630  */
10631 #define	MC_CMD_EVENT_CTRL_IN_MCDI_EVENT_CODE_SENSOREVT 0x1
10632 /* enum: Driver wishes to receive receive errors. */
10633 #define	MC_CMD_EVENT_CTRL_IN_MCDI_EVENT_CODE_RX_ERR 0x2
10634 /* enum: Driver wishes to receive transmit errors. */
10635 #define	MC_CMD_EVENT_CTRL_IN_MCDI_EVENT_CODE_TX_ERR 0x3
10636 /* enum: Driver wishes to receive firmware alerts. */
10637 #define	MC_CMD_EVENT_CTRL_IN_MCDI_EVENT_CODE_FWALERT 0x4
10638 /* enum: Driver wishes to receive reboot events. */
10639 #define	MC_CMD_EVENT_CTRL_IN_MCDI_EVENT_CODE_MC_REBOOT 0x5
10640 
10641 /* MC_CMD_EVENT_CTRL_OUT msgrequest */
10642 #define	MC_CMD_EVENT_CTRL_OUT_LEN 0
10643 
10644 /* EVB_PORT_ID structuredef */
10645 #define	EVB_PORT_ID_LEN 4
10646 #define	EVB_PORT_ID_PORT_ID_OFST 0
10647 #define	EVB_PORT_ID_PORT_ID_LEN 4
10648 /* enum: An invalid port handle. */
10649 #define	EVB_PORT_ID_NULL 0x0
10650 /* enum: The port assigned to this function.. */
10651 #define	EVB_PORT_ID_ASSIGNED 0x1000000
10652 /* enum: External network port 0 */
10653 #define	EVB_PORT_ID_MAC0 0x2000000
10654 /* enum: External network port 1 */
10655 #define	EVB_PORT_ID_MAC1 0x2000001
10656 /* enum: External network port 2 */
10657 #define	EVB_PORT_ID_MAC2 0x2000002
10658 /* enum: External network port 3 */
10659 #define	EVB_PORT_ID_MAC3 0x2000003
10660 #define	EVB_PORT_ID_PORT_ID_LBN 0
10661 #define	EVB_PORT_ID_PORT_ID_WIDTH 32
10662 
10663 /* EVB_VLAN_TAG structuredef */
10664 #define	EVB_VLAN_TAG_LEN 2
10665 /* The VLAN tag value */
10666 #define	EVB_VLAN_TAG_VLAN_ID_LBN 0
10667 #define	EVB_VLAN_TAG_VLAN_ID_WIDTH 12
10668 #define	EVB_VLAN_TAG_MODE_LBN 12
10669 #define	EVB_VLAN_TAG_MODE_WIDTH 4
10670 /* enum: Insert the VLAN. */
10671 #define	EVB_VLAN_TAG_INSERT 0x0
10672 /* enum: Replace the VLAN if already present. */
10673 #define	EVB_VLAN_TAG_REPLACE 0x1
10674 
10675 /* BUFTBL_ENTRY structuredef */
10676 #define	BUFTBL_ENTRY_LEN 12
10677 /* the owner ID */
10678 #define	BUFTBL_ENTRY_OID_OFST 0
10679 #define	BUFTBL_ENTRY_OID_LEN 2
10680 #define	BUFTBL_ENTRY_OID_LBN 0
10681 #define	BUFTBL_ENTRY_OID_WIDTH 16
10682 /* the page parameter as one of ESE_DZ_SMC_PAGE_SIZE_ */
10683 #define	BUFTBL_ENTRY_PGSZ_OFST 2
10684 #define	BUFTBL_ENTRY_PGSZ_LEN 2
10685 #define	BUFTBL_ENTRY_PGSZ_LBN 16
10686 #define	BUFTBL_ENTRY_PGSZ_WIDTH 16
10687 /* the raw 64-bit address field from the SMC, not adjusted for page size */
10688 #define	BUFTBL_ENTRY_RAWADDR_OFST 4
10689 #define	BUFTBL_ENTRY_RAWADDR_LEN 8
10690 #define	BUFTBL_ENTRY_RAWADDR_LO_OFST 4
10691 #define	BUFTBL_ENTRY_RAWADDR_LO_LEN 4
10692 #define	BUFTBL_ENTRY_RAWADDR_LO_LBN 32
10693 #define	BUFTBL_ENTRY_RAWADDR_LO_WIDTH 32
10694 #define	BUFTBL_ENTRY_RAWADDR_HI_OFST 8
10695 #define	BUFTBL_ENTRY_RAWADDR_HI_LEN 4
10696 #define	BUFTBL_ENTRY_RAWADDR_HI_LBN 64
10697 #define	BUFTBL_ENTRY_RAWADDR_HI_WIDTH 32
10698 #define	BUFTBL_ENTRY_RAWADDR_LBN 32
10699 #define	BUFTBL_ENTRY_RAWADDR_WIDTH 64
10700 
10701 /* NVRAM_PARTITION_TYPE structuredef */
10702 #define	NVRAM_PARTITION_TYPE_LEN 2
10703 #define	NVRAM_PARTITION_TYPE_ID_OFST 0
10704 #define	NVRAM_PARTITION_TYPE_ID_LEN 2
10705 /* enum: Primary MC firmware partition */
10706 #define	NVRAM_PARTITION_TYPE_MC_FIRMWARE 0x100
10707 /* enum: NMC firmware partition (this is intentionally an alias of MC_FIRMWARE)
10708  */
10709 #define	NVRAM_PARTITION_TYPE_NMC_FIRMWARE 0x100
10710 /* enum: Secondary MC firmware partition */
10711 #define	NVRAM_PARTITION_TYPE_MC_FIRMWARE_BACKUP 0x200
10712 /* enum: Expansion ROM partition */
10713 #define	NVRAM_PARTITION_TYPE_EXPANSION_ROM 0x300
10714 /* enum: Static configuration TLV partition */
10715 #define	NVRAM_PARTITION_TYPE_STATIC_CONFIG 0x400
10716 /* enum: Factory configuration TLV partition (this is intentionally an alias of
10717  * STATIC_CONFIG)
10718  */
10719 #define	NVRAM_PARTITION_TYPE_FACTORY_CONFIG 0x400
10720 /* enum: Dynamic configuration TLV partition */
10721 #define	NVRAM_PARTITION_TYPE_DYNAMIC_CONFIG 0x500
10722 /* enum: User configuration TLV partition (this is intentionally an alias of
10723  * DYNAMIC_CONFIG)
10724  */
10725 #define	NVRAM_PARTITION_TYPE_USER_CONFIG 0x500
10726 /* enum: Expansion ROM configuration data for port 0 */
10727 #define	NVRAM_PARTITION_TYPE_EXPROM_CONFIG_PORT0 0x600
10728 /* enum: Synonym for EXPROM_CONFIG_PORT0 as used in pmap files */
10729 #define	NVRAM_PARTITION_TYPE_EXPROM_CONFIG 0x600
10730 /* enum: Expansion ROM configuration data for port 1 */
10731 #define	NVRAM_PARTITION_TYPE_EXPROM_CONFIG_PORT1 0x601
10732 /* enum: Expansion ROM configuration data for port 2 */
10733 #define	NVRAM_PARTITION_TYPE_EXPROM_CONFIG_PORT2 0x602
10734 /* enum: Expansion ROM configuration data for port 3 */
10735 #define	NVRAM_PARTITION_TYPE_EXPROM_CONFIG_PORT3 0x603
10736 /* enum: Non-volatile log output partition */
10737 #define	NVRAM_PARTITION_TYPE_LOG 0x700
10738 /* enum: Non-volatile log output partition for NMC firmware (this is
10739  * intentionally an alias of LOG)
10740  */
10741 #define	NVRAM_PARTITION_TYPE_NMC_LOG 0x700
10742 /* enum: Non-volatile log output of second core on dual-core device */
10743 #define	NVRAM_PARTITION_TYPE_LOG_SLAVE 0x701
10744 /* enum: Device state dump output partition */
10745 #define	NVRAM_PARTITION_TYPE_DUMP 0x800
10746 /* enum: Crash log partition for NMC firmware */
10747 #define	NVRAM_PARTITION_TYPE_NMC_CRASH_LOG 0x801
10748 /* enum: Application license key storage partition */
10749 #define	NVRAM_PARTITION_TYPE_LICENSE 0x900
10750 /* enum: Start of range used for PHY partitions (low 8 bits are the PHY ID) */
10751 #define	NVRAM_PARTITION_TYPE_PHY_MIN 0xa00
10752 /* enum: End of range used for PHY partitions (low 8 bits are the PHY ID) */
10753 #define	NVRAM_PARTITION_TYPE_PHY_MAX 0xaff
10754 /* enum: Primary FPGA partition */
10755 #define	NVRAM_PARTITION_TYPE_FPGA 0xb00
10756 /* enum: Secondary FPGA partition */
10757 #define	NVRAM_PARTITION_TYPE_FPGA_BACKUP 0xb01
10758 /* enum: FC firmware partition */
10759 #define	NVRAM_PARTITION_TYPE_FC_FIRMWARE 0xb02
10760 /* enum: FC License partition */
10761 #define	NVRAM_PARTITION_TYPE_FC_LICENSE 0xb03
10762 /* enum: Non-volatile log output partition for FC */
10763 #define	NVRAM_PARTITION_TYPE_FC_LOG 0xb04
10764 /* enum: FPGA Stage 1 bitstream */
10765 #define	NVRAM_PARTITION_TYPE_FPGA_STAGE1 0xb05
10766 /* enum: FPGA Stage 2 bitstream */
10767 #define	NVRAM_PARTITION_TYPE_FPGA_STAGE2 0xb06
10768 /* enum: FPGA User XCLBIN / Programmable Region 0 bitstream */
10769 #define	NVRAM_PARTITION_TYPE_FPGA_REGION0 0xb07
10770 /* enum: FPGA User XCLBIN (this is intentionally an alias of FPGA_REGION0) */
10771 #define	NVRAM_PARTITION_TYPE_FPGA_XCLBIN_USER 0xb07
10772 /* enum: FPGA jump instruction (a.k.a. boot) partition to select Stage1
10773  * bitstream
10774  */
10775 #define	NVRAM_PARTITION_TYPE_FPGA_JUMP 0xb08
10776 /* enum: FPGA Validate XCLBIN */
10777 #define	NVRAM_PARTITION_TYPE_FPGA_XCLBIN_VALIDATE 0xb09
10778 /* enum: FPGA XOCL Configuration information */
10779 #define	NVRAM_PARTITION_TYPE_FPGA_XOCL_CONFIG 0xb0a
10780 /* enum: MUM firmware partition */
10781 #define	NVRAM_PARTITION_TYPE_MUM_FIRMWARE 0xc00
10782 /* enum: SUC firmware partition (this is intentionally an alias of
10783  * MUM_FIRMWARE)
10784  */
10785 #define	NVRAM_PARTITION_TYPE_SUC_FIRMWARE 0xc00
10786 /* enum: MUM Non-volatile log output partition. */
10787 #define	NVRAM_PARTITION_TYPE_MUM_LOG 0xc01
10788 /* enum: SUC Non-volatile log output partition (this is intentionally an alias
10789  * of MUM_LOG).
10790  */
10791 #define	NVRAM_PARTITION_TYPE_SUC_LOG 0xc01
10792 /* enum: MUM Application table partition. */
10793 #define	NVRAM_PARTITION_TYPE_MUM_APPTABLE 0xc02
10794 /* enum: MUM boot rom partition. */
10795 #define	NVRAM_PARTITION_TYPE_MUM_BOOT_ROM 0xc03
10796 /* enum: MUM production signatures & calibration rom partition. */
10797 #define	NVRAM_PARTITION_TYPE_MUM_PROD_ROM 0xc04
10798 /* enum: MUM user signatures & calibration rom partition. */
10799 #define	NVRAM_PARTITION_TYPE_MUM_USER_ROM 0xc05
10800 /* enum: MUM fuses and lockbits partition. */
10801 #define	NVRAM_PARTITION_TYPE_MUM_FUSELOCK 0xc06
10802 /* enum: UEFI expansion ROM if separate from PXE */
10803 #define	NVRAM_PARTITION_TYPE_EXPANSION_UEFI 0xd00
10804 /* enum: Used by the expansion ROM for logging */
10805 #define	NVRAM_PARTITION_TYPE_PXE_LOG 0x1000
10806 /* enum: Non-volatile log output partition for Expansion ROM (this is
10807  * intentionally an alias of PXE_LOG).
10808  */
10809 #define	NVRAM_PARTITION_TYPE_EXPROM_LOG 0x1000
10810 /* enum: Used for XIP code of shmbooted images */
10811 #define	NVRAM_PARTITION_TYPE_XIP_SCRATCH 0x1100
10812 /* enum: Spare partition 2 */
10813 #define	NVRAM_PARTITION_TYPE_SPARE_2 0x1200
10814 /* enum: Manufacturing partition. Used during manufacture to pass information
10815  * between XJTAG and Manftest.
10816  */
10817 #define	NVRAM_PARTITION_TYPE_MANUFACTURING 0x1300
10818 /* enum: Deployment configuration TLV partition (this is intentionally an alias
10819  * of MANUFACTURING)
10820  */
10821 #define	NVRAM_PARTITION_TYPE_DEPLOYMENT_CONFIG 0x1300
10822 /* enum: Spare partition 4 */
10823 #define	NVRAM_PARTITION_TYPE_SPARE_4 0x1400
10824 /* enum: Spare partition 5 */
10825 #define	NVRAM_PARTITION_TYPE_SPARE_5 0x1500
10826 /* enum: Partition for reporting MC status. See mc_flash_layout.h
10827  * medford_mc_status_hdr_t for layout on Medford.
10828  */
10829 #define	NVRAM_PARTITION_TYPE_STATUS 0x1600
10830 /* enum: Spare partition 13 */
10831 #define	NVRAM_PARTITION_TYPE_SPARE_13 0x1700
10832 /* enum: Spare partition 14 */
10833 #define	NVRAM_PARTITION_TYPE_SPARE_14 0x1800
10834 /* enum: Spare partition 15 */
10835 #define	NVRAM_PARTITION_TYPE_SPARE_15 0x1900
10836 /* enum: Spare partition 16 */
10837 #define	NVRAM_PARTITION_TYPE_SPARE_16 0x1a00
10838 /* enum: Factory defaults for dynamic configuration */
10839 #define	NVRAM_PARTITION_TYPE_DYNCONFIG_DEFAULTS 0x1b00
10840 /* enum: Factory defaults for expansion ROM configuration */
10841 #define	NVRAM_PARTITION_TYPE_ROMCONFIG_DEFAULTS 0x1c00
10842 /* enum: Field Replaceable Unit inventory information for use on IPMI
10843  * platforms. See SF-119124-PS. The STATIC_CONFIG partition may contain a
10844  * subset of the information stored in this partition.
10845  */
10846 #define	NVRAM_PARTITION_TYPE_FRU_INFORMATION 0x1d00
10847 /* enum: Bundle image partition */
10848 #define	NVRAM_PARTITION_TYPE_BUNDLE 0x1e00
10849 /* enum: Bundle metadata partition that holds additional information related to
10850  * a bundle update in TLV format
10851  */
10852 #define	NVRAM_PARTITION_TYPE_BUNDLE_METADATA 0x1e01
10853 /* enum: Bundle update non-volatile log output partition */
10854 #define	NVRAM_PARTITION_TYPE_BUNDLE_LOG 0x1e02
10855 /* enum: Partition for Solarflare gPXE bootrom installed via Bundle update. */
10856 #define	NVRAM_PARTITION_TYPE_EXPANSION_ROM_INTERNAL 0x1e03
10857 /* enum: Partition to store ASN.1 format Bundle Signature for checking. */
10858 #define	NVRAM_PARTITION_TYPE_BUNDLE_SIGNATURE 0x1e04
10859 /* enum: Test partition on SmartNIC system microcontroller (SUC) */
10860 #define	NVRAM_PARTITION_TYPE_SUC_TEST 0x1f00
10861 /* enum: System microcontroller access to primary FPGA flash. */
10862 #define	NVRAM_PARTITION_TYPE_SUC_FPGA_PRIMARY 0x1f01
10863 /* enum: System microcontroller access to secondary FPGA flash (if present) */
10864 #define	NVRAM_PARTITION_TYPE_SUC_FPGA_SECONDARY 0x1f02
10865 /* enum: System microcontroller access to primary System-on-Chip flash */
10866 #define	NVRAM_PARTITION_TYPE_SUC_SOC_PRIMARY 0x1f03
10867 /* enum: System microcontroller access to secondary System-on-Chip flash (if
10868  * present)
10869  */
10870 #define	NVRAM_PARTITION_TYPE_SUC_SOC_SECONDARY 0x1f04
10871 /* enum: System microcontroller critical failure logs. Contains structured
10872  * details of sensors leading up to a critical failure (where the board is shut
10873  * down).
10874  */
10875 #define	NVRAM_PARTITION_TYPE_SUC_FAILURE_LOG 0x1f05
10876 /* enum: System-on-Chip configuration information (see XN-200467-PS). */
10877 #define	NVRAM_PARTITION_TYPE_SUC_SOC_CONFIG 0x1f07
10878 /* enum: System-on-Chip update information. */
10879 #define	NVRAM_PARTITION_TYPE_SOC_UPDATE 0x2003
10880 /* enum: Start of reserved value range (firmware may use for any purpose) */
10881 #define	NVRAM_PARTITION_TYPE_RESERVED_VALUES_MIN 0xff00
10882 /* enum: End of reserved value range (firmware may use for any purpose) */
10883 #define	NVRAM_PARTITION_TYPE_RESERVED_VALUES_MAX 0xfffd
10884 /* enum: Recovery partition map (provided if real map is missing or corrupt) */
10885 #define	NVRAM_PARTITION_TYPE_RECOVERY_MAP 0xfffe
10886 /* enum: Recovery Flash Partition Table, see SF-122606-TC. (this is
10887  * intentionally an alias of RECOVERY_MAP)
10888  */
10889 #define	NVRAM_PARTITION_TYPE_RECOVERY_FPT 0xfffe
10890 /* enum: Partition map (real map as stored in flash) */
10891 #define	NVRAM_PARTITION_TYPE_PARTITION_MAP 0xffff
10892 /* enum: Flash Partition Table, see SF-122606-TC. (this is intentionally an
10893  * alias of PARTITION_MAP)
10894  */
10895 #define	NVRAM_PARTITION_TYPE_FPT 0xffff
10896 #define	NVRAM_PARTITION_TYPE_ID_LBN 0
10897 #define	NVRAM_PARTITION_TYPE_ID_WIDTH 16
10898 
10899 /* LICENSED_APP_ID structuredef */
10900 #define	LICENSED_APP_ID_LEN 4
10901 #define	LICENSED_APP_ID_ID_OFST 0
10902 #define	LICENSED_APP_ID_ID_LEN 4
10903 /* enum: OpenOnload */
10904 #define	LICENSED_APP_ID_ONLOAD 0x1
10905 /* enum: PTP timestamping */
10906 #define	LICENSED_APP_ID_PTP 0x2
10907 /* enum: SolarCapture Pro */
10908 #define	LICENSED_APP_ID_SOLARCAPTURE_PRO 0x4
10909 /* enum: SolarSecure filter engine */
10910 #define	LICENSED_APP_ID_SOLARSECURE 0x8
10911 /* enum: Performance monitor */
10912 #define	LICENSED_APP_ID_PERF_MONITOR 0x10
10913 /* enum: SolarCapture Live */
10914 #define	LICENSED_APP_ID_SOLARCAPTURE_LIVE 0x20
10915 /* enum: Capture SolarSystem */
10916 #define	LICENSED_APP_ID_CAPTURE_SOLARSYSTEM 0x40
10917 /* enum: Network Access Control */
10918 #define	LICENSED_APP_ID_NETWORK_ACCESS_CONTROL 0x80
10919 /* enum: TCP Direct */
10920 #define	LICENSED_APP_ID_TCP_DIRECT 0x100
10921 /* enum: Low Latency */
10922 #define	LICENSED_APP_ID_LOW_LATENCY 0x200
10923 /* enum: SolarCapture Tap */
10924 #define	LICENSED_APP_ID_SOLARCAPTURE_TAP 0x400
10925 /* enum: Capture SolarSystem 40G */
10926 #define	LICENSED_APP_ID_CAPTURE_SOLARSYSTEM_40G 0x800
10927 /* enum: Capture SolarSystem 1G */
10928 #define	LICENSED_APP_ID_CAPTURE_SOLARSYSTEM_1G 0x1000
10929 /* enum: ScaleOut Onload */
10930 #define	LICENSED_APP_ID_SCALEOUT_ONLOAD 0x2000
10931 /* enum: SCS Network Analytics Dashboard */
10932 #define	LICENSED_APP_ID_DSHBRD 0x4000
10933 /* enum: SolarCapture Trading Analytics */
10934 #define	LICENSED_APP_ID_SCATRD 0x8000
10935 #define	LICENSED_APP_ID_ID_LBN 0
10936 #define	LICENSED_APP_ID_ID_WIDTH 32
10937 
10938 /* LICENSED_FEATURES structuredef */
10939 #define	LICENSED_FEATURES_LEN 8
10940 /* Bitmask of licensed firmware features */
10941 #define	LICENSED_FEATURES_MASK_OFST 0
10942 #define	LICENSED_FEATURES_MASK_LEN 8
10943 #define	LICENSED_FEATURES_MASK_LO_OFST 0
10944 #define	LICENSED_FEATURES_MASK_LO_LEN 4
10945 #define	LICENSED_FEATURES_MASK_LO_LBN 0
10946 #define	LICENSED_FEATURES_MASK_LO_WIDTH 32
10947 #define	LICENSED_FEATURES_MASK_HI_OFST 4
10948 #define	LICENSED_FEATURES_MASK_HI_LEN 4
10949 #define	LICENSED_FEATURES_MASK_HI_LBN 32
10950 #define	LICENSED_FEATURES_MASK_HI_WIDTH 32
10951 #define	LICENSED_FEATURES_RX_CUT_THROUGH_OFST 0
10952 #define	LICENSED_FEATURES_RX_CUT_THROUGH_LBN 0
10953 #define	LICENSED_FEATURES_RX_CUT_THROUGH_WIDTH 1
10954 #define	LICENSED_FEATURES_PIO_OFST 0
10955 #define	LICENSED_FEATURES_PIO_LBN 1
10956 #define	LICENSED_FEATURES_PIO_WIDTH 1
10957 #define	LICENSED_FEATURES_EVQ_TIMER_OFST 0
10958 #define	LICENSED_FEATURES_EVQ_TIMER_LBN 2
10959 #define	LICENSED_FEATURES_EVQ_TIMER_WIDTH 1
10960 #define	LICENSED_FEATURES_CLOCK_OFST 0
10961 #define	LICENSED_FEATURES_CLOCK_LBN 3
10962 #define	LICENSED_FEATURES_CLOCK_WIDTH 1
10963 #define	LICENSED_FEATURES_RX_TIMESTAMPS_OFST 0
10964 #define	LICENSED_FEATURES_RX_TIMESTAMPS_LBN 4
10965 #define	LICENSED_FEATURES_RX_TIMESTAMPS_WIDTH 1
10966 #define	LICENSED_FEATURES_TX_TIMESTAMPS_OFST 0
10967 #define	LICENSED_FEATURES_TX_TIMESTAMPS_LBN 5
10968 #define	LICENSED_FEATURES_TX_TIMESTAMPS_WIDTH 1
10969 #define	LICENSED_FEATURES_RX_SNIFF_OFST 0
10970 #define	LICENSED_FEATURES_RX_SNIFF_LBN 6
10971 #define	LICENSED_FEATURES_RX_SNIFF_WIDTH 1
10972 #define	LICENSED_FEATURES_TX_SNIFF_OFST 0
10973 #define	LICENSED_FEATURES_TX_SNIFF_LBN 7
10974 #define	LICENSED_FEATURES_TX_SNIFF_WIDTH 1
10975 #define	LICENSED_FEATURES_PROXY_FILTER_OPS_OFST 0
10976 #define	LICENSED_FEATURES_PROXY_FILTER_OPS_LBN 8
10977 #define	LICENSED_FEATURES_PROXY_FILTER_OPS_WIDTH 1
10978 #define	LICENSED_FEATURES_EVENT_CUT_THROUGH_OFST 0
10979 #define	LICENSED_FEATURES_EVENT_CUT_THROUGH_LBN 9
10980 #define	LICENSED_FEATURES_EVENT_CUT_THROUGH_WIDTH 1
10981 #define	LICENSED_FEATURES_MASK_LBN 0
10982 #define	LICENSED_FEATURES_MASK_WIDTH 64
10983 
10984 /* LICENSED_V3_APPS structuredef */
10985 #define	LICENSED_V3_APPS_LEN 8
10986 /* Bitmask of licensed applications */
10987 #define	LICENSED_V3_APPS_MASK_OFST 0
10988 #define	LICENSED_V3_APPS_MASK_LEN 8
10989 #define	LICENSED_V3_APPS_MASK_LO_OFST 0
10990 #define	LICENSED_V3_APPS_MASK_LO_LEN 4
10991 #define	LICENSED_V3_APPS_MASK_LO_LBN 0
10992 #define	LICENSED_V3_APPS_MASK_LO_WIDTH 32
10993 #define	LICENSED_V3_APPS_MASK_HI_OFST 4
10994 #define	LICENSED_V3_APPS_MASK_HI_LEN 4
10995 #define	LICENSED_V3_APPS_MASK_HI_LBN 32
10996 #define	LICENSED_V3_APPS_MASK_HI_WIDTH 32
10997 #define	LICENSED_V3_APPS_ONLOAD_OFST 0
10998 #define	LICENSED_V3_APPS_ONLOAD_LBN 0
10999 #define	LICENSED_V3_APPS_ONLOAD_WIDTH 1
11000 #define	LICENSED_V3_APPS_PTP_OFST 0
11001 #define	LICENSED_V3_APPS_PTP_LBN 1
11002 #define	LICENSED_V3_APPS_PTP_WIDTH 1
11003 #define	LICENSED_V3_APPS_SOLARCAPTURE_PRO_OFST 0
11004 #define	LICENSED_V3_APPS_SOLARCAPTURE_PRO_LBN 2
11005 #define	LICENSED_V3_APPS_SOLARCAPTURE_PRO_WIDTH 1
11006 #define	LICENSED_V3_APPS_SOLARSECURE_OFST 0
11007 #define	LICENSED_V3_APPS_SOLARSECURE_LBN 3
11008 #define	LICENSED_V3_APPS_SOLARSECURE_WIDTH 1
11009 #define	LICENSED_V3_APPS_PERF_MONITOR_OFST 0
11010 #define	LICENSED_V3_APPS_PERF_MONITOR_LBN 4
11011 #define	LICENSED_V3_APPS_PERF_MONITOR_WIDTH 1
11012 #define	LICENSED_V3_APPS_SOLARCAPTURE_LIVE_OFST 0
11013 #define	LICENSED_V3_APPS_SOLARCAPTURE_LIVE_LBN 5
11014 #define	LICENSED_V3_APPS_SOLARCAPTURE_LIVE_WIDTH 1
11015 #define	LICENSED_V3_APPS_CAPTURE_SOLARSYSTEM_OFST 0
11016 #define	LICENSED_V3_APPS_CAPTURE_SOLARSYSTEM_LBN 6
11017 #define	LICENSED_V3_APPS_CAPTURE_SOLARSYSTEM_WIDTH 1
11018 #define	LICENSED_V3_APPS_NETWORK_ACCESS_CONTROL_OFST 0
11019 #define	LICENSED_V3_APPS_NETWORK_ACCESS_CONTROL_LBN 7
11020 #define	LICENSED_V3_APPS_NETWORK_ACCESS_CONTROL_WIDTH 1
11021 #define	LICENSED_V3_APPS_TCP_DIRECT_OFST 0
11022 #define	LICENSED_V3_APPS_TCP_DIRECT_LBN 8
11023 #define	LICENSED_V3_APPS_TCP_DIRECT_WIDTH 1
11024 #define	LICENSED_V3_APPS_LOW_LATENCY_OFST 0
11025 #define	LICENSED_V3_APPS_LOW_LATENCY_LBN 9
11026 #define	LICENSED_V3_APPS_LOW_LATENCY_WIDTH 1
11027 #define	LICENSED_V3_APPS_SOLARCAPTURE_TAP_OFST 0
11028 #define	LICENSED_V3_APPS_SOLARCAPTURE_TAP_LBN 10
11029 #define	LICENSED_V3_APPS_SOLARCAPTURE_TAP_WIDTH 1
11030 #define	LICENSED_V3_APPS_CAPTURE_SOLARSYSTEM_40G_OFST 0
11031 #define	LICENSED_V3_APPS_CAPTURE_SOLARSYSTEM_40G_LBN 11
11032 #define	LICENSED_V3_APPS_CAPTURE_SOLARSYSTEM_40G_WIDTH 1
11033 #define	LICENSED_V3_APPS_CAPTURE_SOLARSYSTEM_1G_OFST 0
11034 #define	LICENSED_V3_APPS_CAPTURE_SOLARSYSTEM_1G_LBN 12
11035 #define	LICENSED_V3_APPS_CAPTURE_SOLARSYSTEM_1G_WIDTH 1
11036 #define	LICENSED_V3_APPS_SCALEOUT_ONLOAD_OFST 0
11037 #define	LICENSED_V3_APPS_SCALEOUT_ONLOAD_LBN 13
11038 #define	LICENSED_V3_APPS_SCALEOUT_ONLOAD_WIDTH 1
11039 #define	LICENSED_V3_APPS_DSHBRD_OFST 0
11040 #define	LICENSED_V3_APPS_DSHBRD_LBN 14
11041 #define	LICENSED_V3_APPS_DSHBRD_WIDTH 1
11042 #define	LICENSED_V3_APPS_SCATRD_OFST 0
11043 #define	LICENSED_V3_APPS_SCATRD_LBN 15
11044 #define	LICENSED_V3_APPS_SCATRD_WIDTH 1
11045 #define	LICENSED_V3_APPS_MASK_LBN 0
11046 #define	LICENSED_V3_APPS_MASK_WIDTH 64
11047 
11048 /* LICENSED_V3_FEATURES structuredef */
11049 #define	LICENSED_V3_FEATURES_LEN 8
11050 /* Bitmask of licensed firmware features */
11051 #define	LICENSED_V3_FEATURES_MASK_OFST 0
11052 #define	LICENSED_V3_FEATURES_MASK_LEN 8
11053 #define	LICENSED_V3_FEATURES_MASK_LO_OFST 0
11054 #define	LICENSED_V3_FEATURES_MASK_LO_LEN 4
11055 #define	LICENSED_V3_FEATURES_MASK_LO_LBN 0
11056 #define	LICENSED_V3_FEATURES_MASK_LO_WIDTH 32
11057 #define	LICENSED_V3_FEATURES_MASK_HI_OFST 4
11058 #define	LICENSED_V3_FEATURES_MASK_HI_LEN 4
11059 #define	LICENSED_V3_FEATURES_MASK_HI_LBN 32
11060 #define	LICENSED_V3_FEATURES_MASK_HI_WIDTH 32
11061 #define	LICENSED_V3_FEATURES_RX_CUT_THROUGH_OFST 0
11062 #define	LICENSED_V3_FEATURES_RX_CUT_THROUGH_LBN 0
11063 #define	LICENSED_V3_FEATURES_RX_CUT_THROUGH_WIDTH 1
11064 #define	LICENSED_V3_FEATURES_PIO_OFST 0
11065 #define	LICENSED_V3_FEATURES_PIO_LBN 1
11066 #define	LICENSED_V3_FEATURES_PIO_WIDTH 1
11067 #define	LICENSED_V3_FEATURES_EVQ_TIMER_OFST 0
11068 #define	LICENSED_V3_FEATURES_EVQ_TIMER_LBN 2
11069 #define	LICENSED_V3_FEATURES_EVQ_TIMER_WIDTH 1
11070 #define	LICENSED_V3_FEATURES_CLOCK_OFST 0
11071 #define	LICENSED_V3_FEATURES_CLOCK_LBN 3
11072 #define	LICENSED_V3_FEATURES_CLOCK_WIDTH 1
11073 #define	LICENSED_V3_FEATURES_RX_TIMESTAMPS_OFST 0
11074 #define	LICENSED_V3_FEATURES_RX_TIMESTAMPS_LBN 4
11075 #define	LICENSED_V3_FEATURES_RX_TIMESTAMPS_WIDTH 1
11076 #define	LICENSED_V3_FEATURES_TX_TIMESTAMPS_OFST 0
11077 #define	LICENSED_V3_FEATURES_TX_TIMESTAMPS_LBN 5
11078 #define	LICENSED_V3_FEATURES_TX_TIMESTAMPS_WIDTH 1
11079 #define	LICENSED_V3_FEATURES_RX_SNIFF_OFST 0
11080 #define	LICENSED_V3_FEATURES_RX_SNIFF_LBN 6
11081 #define	LICENSED_V3_FEATURES_RX_SNIFF_WIDTH 1
11082 #define	LICENSED_V3_FEATURES_TX_SNIFF_OFST 0
11083 #define	LICENSED_V3_FEATURES_TX_SNIFF_LBN 7
11084 #define	LICENSED_V3_FEATURES_TX_SNIFF_WIDTH 1
11085 #define	LICENSED_V3_FEATURES_PROXY_FILTER_OPS_OFST 0
11086 #define	LICENSED_V3_FEATURES_PROXY_FILTER_OPS_LBN 8
11087 #define	LICENSED_V3_FEATURES_PROXY_FILTER_OPS_WIDTH 1
11088 #define	LICENSED_V3_FEATURES_EVENT_CUT_THROUGH_OFST 0
11089 #define	LICENSED_V3_FEATURES_EVENT_CUT_THROUGH_LBN 9
11090 #define	LICENSED_V3_FEATURES_EVENT_CUT_THROUGH_WIDTH 1
11091 #define	LICENSED_V3_FEATURES_MASK_LBN 0
11092 #define	LICENSED_V3_FEATURES_MASK_WIDTH 64
11093 
11094 /* TX_TIMESTAMP_EVENT structuredef */
11095 #define	TX_TIMESTAMP_EVENT_LEN 6
11096 /* lower 16 bits of timestamp data */
11097 #define	TX_TIMESTAMP_EVENT_TSTAMP_DATA_LO_OFST 0
11098 #define	TX_TIMESTAMP_EVENT_TSTAMP_DATA_LO_LEN 2
11099 #define	TX_TIMESTAMP_EVENT_TSTAMP_DATA_LO_LBN 0
11100 #define	TX_TIMESTAMP_EVENT_TSTAMP_DATA_LO_WIDTH 16
11101 /* Type of TX event, ordinary TX completion, low or high part of TX timestamp
11102  */
11103 #define	TX_TIMESTAMP_EVENT_TX_EV_TYPE_OFST 3
11104 #define	TX_TIMESTAMP_EVENT_TX_EV_TYPE_LEN 1
11105 /* enum: This is a TX completion event, not a timestamp */
11106 #define	TX_TIMESTAMP_EVENT_TX_EV_COMPLETION 0x0
11107 /* enum: This is a TX completion event for a CTPIO transmit. The event format
11108  * is the same as for TX_EV_COMPLETION.
11109  */
11110 #define	TX_TIMESTAMP_EVENT_TX_EV_CTPIO_COMPLETION 0x11
11111 /* enum: This is the low part of a TX timestamp for a CTPIO transmission. The
11112  * event format is the same as for TX_EV_TSTAMP_LO
11113  */
11114 #define	TX_TIMESTAMP_EVENT_TX_EV_CTPIO_TS_LO 0x12
11115 /* enum: This is the high part of a TX timestamp for a CTPIO transmission. The
11116  * event format is the same as for TX_EV_TSTAMP_HI
11117  */
11118 #define	TX_TIMESTAMP_EVENT_TX_EV_CTPIO_TS_HI 0x13
11119 /* enum: This is the low part of a TX timestamp event */
11120 #define	TX_TIMESTAMP_EVENT_TX_EV_TSTAMP_LO 0x51
11121 /* enum: This is the high part of a TX timestamp event */
11122 #define	TX_TIMESTAMP_EVENT_TX_EV_TSTAMP_HI 0x52
11123 #define	TX_TIMESTAMP_EVENT_TX_EV_TYPE_LBN 24
11124 #define	TX_TIMESTAMP_EVENT_TX_EV_TYPE_WIDTH 8
11125 /* upper 16 bits of timestamp data */
11126 #define	TX_TIMESTAMP_EVENT_TSTAMP_DATA_HI_OFST 4
11127 #define	TX_TIMESTAMP_EVENT_TSTAMP_DATA_HI_LEN 2
11128 #define	TX_TIMESTAMP_EVENT_TSTAMP_DATA_HI_LBN 32
11129 #define	TX_TIMESTAMP_EVENT_TSTAMP_DATA_HI_WIDTH 16
11130 
11131 /* RSS_MODE structuredef */
11132 #define	RSS_MODE_LEN 1
11133 /* The RSS mode for a particular packet type is a value from 0 - 15 which can
11134  * be considered as 4 bits selecting which fields are included in the hash. (A
11135  * value 0 effectively disables RSS spreading for the packet type.) The YAML
11136  * generation tools require this structure to be a whole number of bytes wide,
11137  * but only 4 bits are relevant.
11138  */
11139 #define	RSS_MODE_HASH_SELECTOR_OFST 0
11140 #define	RSS_MODE_HASH_SELECTOR_LEN 1
11141 #define	RSS_MODE_HASH_SRC_ADDR_OFST 0
11142 #define	RSS_MODE_HASH_SRC_ADDR_LBN 0
11143 #define	RSS_MODE_HASH_SRC_ADDR_WIDTH 1
11144 #define	RSS_MODE_HASH_DST_ADDR_OFST 0
11145 #define	RSS_MODE_HASH_DST_ADDR_LBN 1
11146 #define	RSS_MODE_HASH_DST_ADDR_WIDTH 1
11147 #define	RSS_MODE_HASH_SRC_PORT_OFST 0
11148 #define	RSS_MODE_HASH_SRC_PORT_LBN 2
11149 #define	RSS_MODE_HASH_SRC_PORT_WIDTH 1
11150 #define	RSS_MODE_HASH_DST_PORT_OFST 0
11151 #define	RSS_MODE_HASH_DST_PORT_LBN 3
11152 #define	RSS_MODE_HASH_DST_PORT_WIDTH 1
11153 #define	RSS_MODE_HASH_SELECTOR_LBN 0
11154 #define	RSS_MODE_HASH_SELECTOR_WIDTH 8
11155 
11156 /* CTPIO_STATS_MAP structuredef */
11157 #define	CTPIO_STATS_MAP_LEN 4
11158 /* The (function relative) VI number */
11159 #define	CTPIO_STATS_MAP_VI_OFST 0
11160 #define	CTPIO_STATS_MAP_VI_LEN 2
11161 #define	CTPIO_STATS_MAP_VI_LBN 0
11162 #define	CTPIO_STATS_MAP_VI_WIDTH 16
11163 /* The target bucket for the VI */
11164 #define	CTPIO_STATS_MAP_BUCKET_OFST 2
11165 #define	CTPIO_STATS_MAP_BUCKET_LEN 2
11166 #define	CTPIO_STATS_MAP_BUCKET_LBN 16
11167 #define	CTPIO_STATS_MAP_BUCKET_WIDTH 16
11168 
11169 /* MESSAGE_TYPE structuredef: When present this defines the meaning of a
11170  * message, and is used to protect against chosen message attacks in signed
11171  * messages, regardless their origin. The message type also defines the
11172  * signature cryptographic algorithm, encoding, and message fields included in
11173  * the signature. The values are used in different commands but must be unique
11174  * across all commands, e.g. MC_CMD_TSA_BIND_IN_SECURE_UNBIND uses different
11175  * message type than MC_CMD_SECURE_NIC_INFO_IN_STATUS.
11176  */
11177 #define	MESSAGE_TYPE_LEN 4
11178 #define	MESSAGE_TYPE_MESSAGE_TYPE_OFST 0
11179 #define	MESSAGE_TYPE_MESSAGE_TYPE_LEN 4
11180 #define	MESSAGE_TYPE_UNUSED 0x0 /* enum */
11181 /* enum: Message type value for the response to a
11182  * MC_CMD_TSA_BIND_IN_SECURE_UNBIND message. TSA_SECURE_UNBIND messages are
11183  * ECDSA SECP384R1 signed using SHA384 message digest algorithm over fields
11184  * MESSAGE_TYPE, TSANID, TSAID, and UNBINDTOKEN, and encoded as suggested by
11185  * RFC6979 (section 2.4).
11186  */
11187 #define	MESSAGE_TYPE_TSA_SECURE_UNBIND 0x1
11188 /* enum: Message type value for the response to a
11189  * MC_CMD_TSA_BIND_IN_SECURE_DECOMMISSION message. TSA_SECURE_DECOMMISSION
11190  * messages are ECDSA SECP384R1 signed using SHA384 message digest algorithm
11191  * over fields MESSAGE_TYPE, TSAID, USER, and REASON, and encoded as suggested
11192  * by RFC6979 (section 2.4).
11193  */
11194 #define	MESSAGE_TYPE_TSA_SECURE_DECOMMISSION 0x2
11195 /* enum: Message type value for the response to a
11196  * MC_CMD_SECURE_NIC_INFO_IN_STATUS message. This enum value is not sequential
11197  * to other message types for backwards compatibility as the message type for
11198  * MC_CMD_SECURE_NIC_INFO_IN_STATUS was defined before the existence of this
11199  * global enum.
11200  */
11201 #define	MESSAGE_TYPE_SECURE_NIC_INFO_STATUS 0xdb4
11202 #define	MESSAGE_TYPE_MESSAGE_TYPE_LBN 0
11203 #define	MESSAGE_TYPE_MESSAGE_TYPE_WIDTH 32
11204 
11205 
11206 /***********************************/
11207 /* MC_CMD_READ_REGS
11208  * Get a dump of the MCPU registers
11209  */
11210 #define	MC_CMD_READ_REGS 0x50
11211 #define	MC_CMD_READ_REGS_MSGSET 0x50
11212 #undef	MC_CMD_0x50_PRIVILEGE_CTG
11213 
11214 #define	MC_CMD_0x50_PRIVILEGE_CTG SRIOV_CTG_INSECURE
11215 
11216 /* MC_CMD_READ_REGS_IN msgrequest */
11217 #define	MC_CMD_READ_REGS_IN_LEN 0
11218 
11219 /* MC_CMD_READ_REGS_OUT msgresponse */
11220 #define	MC_CMD_READ_REGS_OUT_LEN 308
11221 /* Whether the corresponding register entry contains a valid value */
11222 #define	MC_CMD_READ_REGS_OUT_MASK_OFST 0
11223 #define	MC_CMD_READ_REGS_OUT_MASK_LEN 16
11224 /* Same order as MIPS GDB (r0-r31, sr, lo, hi, bad, cause, 32 x float, fsr,
11225  * fir, fp)
11226  */
11227 #define	MC_CMD_READ_REGS_OUT_REGS_OFST 16
11228 #define	MC_CMD_READ_REGS_OUT_REGS_LEN 4
11229 #define	MC_CMD_READ_REGS_OUT_REGS_NUM 73
11230 
11231 
11232 /***********************************/
11233 /* MC_CMD_INIT_EVQ
11234  * Set up an event queue according to the supplied parameters. The IN arguments
11235  * end with an address for each 4k of host memory required to back the EVQ.
11236  */
11237 #define	MC_CMD_INIT_EVQ 0x80
11238 #define	MC_CMD_INIT_EVQ_MSGSET 0x80
11239 #undef	MC_CMD_0x80_PRIVILEGE_CTG
11240 
11241 #define	MC_CMD_0x80_PRIVILEGE_CTG SRIOV_CTG_GENERAL
11242 
11243 /* MC_CMD_INIT_EVQ_IN msgrequest */
11244 #define	MC_CMD_INIT_EVQ_IN_LENMIN 44
11245 #define	MC_CMD_INIT_EVQ_IN_LENMAX 548
11246 #define	MC_CMD_INIT_EVQ_IN_LENMAX_MCDI2 548
11247 #define	MC_CMD_INIT_EVQ_IN_LEN(num) (36+8*(num))
11248 #define	MC_CMD_INIT_EVQ_IN_DMA_ADDR_NUM(len) (((len)-36)/8)
11249 /* Size, in entries */
11250 #define	MC_CMD_INIT_EVQ_IN_SIZE_OFST 0
11251 #define	MC_CMD_INIT_EVQ_IN_SIZE_LEN 4
11252 /* Desired instance. Must be set to a specific instance, which is a function
11253  * local queue index. The calling client must be the currently-assigned user of
11254  * this VI (see MC_CMD_SET_VI_USER).
11255  */
11256 #define	MC_CMD_INIT_EVQ_IN_INSTANCE_OFST 4
11257 #define	MC_CMD_INIT_EVQ_IN_INSTANCE_LEN 4
11258 /* The initial timer value. The load value is ignored if the timer mode is DIS.
11259  */
11260 #define	MC_CMD_INIT_EVQ_IN_TMR_LOAD_OFST 8
11261 #define	MC_CMD_INIT_EVQ_IN_TMR_LOAD_LEN 4
11262 /* The reload value is ignored in one-shot modes */
11263 #define	MC_CMD_INIT_EVQ_IN_TMR_RELOAD_OFST 12
11264 #define	MC_CMD_INIT_EVQ_IN_TMR_RELOAD_LEN 4
11265 /* tbd */
11266 #define	MC_CMD_INIT_EVQ_IN_FLAGS_OFST 16
11267 #define	MC_CMD_INIT_EVQ_IN_FLAGS_LEN 4
11268 #define	MC_CMD_INIT_EVQ_IN_FLAG_INTERRUPTING_OFST 16
11269 #define	MC_CMD_INIT_EVQ_IN_FLAG_INTERRUPTING_LBN 0
11270 #define	MC_CMD_INIT_EVQ_IN_FLAG_INTERRUPTING_WIDTH 1
11271 #define	MC_CMD_INIT_EVQ_IN_FLAG_RPTR_DOS_OFST 16
11272 #define	MC_CMD_INIT_EVQ_IN_FLAG_RPTR_DOS_LBN 1
11273 #define	MC_CMD_INIT_EVQ_IN_FLAG_RPTR_DOS_WIDTH 1
11274 #define	MC_CMD_INIT_EVQ_IN_FLAG_INT_ARMD_OFST 16
11275 #define	MC_CMD_INIT_EVQ_IN_FLAG_INT_ARMD_LBN 2
11276 #define	MC_CMD_INIT_EVQ_IN_FLAG_INT_ARMD_WIDTH 1
11277 #define	MC_CMD_INIT_EVQ_IN_FLAG_CUT_THRU_OFST 16
11278 #define	MC_CMD_INIT_EVQ_IN_FLAG_CUT_THRU_LBN 3
11279 #define	MC_CMD_INIT_EVQ_IN_FLAG_CUT_THRU_WIDTH 1
11280 #define	MC_CMD_INIT_EVQ_IN_FLAG_RX_MERGE_OFST 16
11281 #define	MC_CMD_INIT_EVQ_IN_FLAG_RX_MERGE_LBN 4
11282 #define	MC_CMD_INIT_EVQ_IN_FLAG_RX_MERGE_WIDTH 1
11283 #define	MC_CMD_INIT_EVQ_IN_FLAG_TX_MERGE_OFST 16
11284 #define	MC_CMD_INIT_EVQ_IN_FLAG_TX_MERGE_LBN 5
11285 #define	MC_CMD_INIT_EVQ_IN_FLAG_TX_MERGE_WIDTH 1
11286 #define	MC_CMD_INIT_EVQ_IN_FLAG_USE_TIMER_OFST 16
11287 #define	MC_CMD_INIT_EVQ_IN_FLAG_USE_TIMER_LBN 6
11288 #define	MC_CMD_INIT_EVQ_IN_FLAG_USE_TIMER_WIDTH 1
11289 #define	MC_CMD_INIT_EVQ_IN_TMR_MODE_OFST 20
11290 #define	MC_CMD_INIT_EVQ_IN_TMR_MODE_LEN 4
11291 /* enum: Disabled */
11292 #define	MC_CMD_INIT_EVQ_IN_TMR_MODE_DIS 0x0
11293 /* enum: Immediate */
11294 #define	MC_CMD_INIT_EVQ_IN_TMR_IMMED_START 0x1
11295 /* enum: Triggered */
11296 #define	MC_CMD_INIT_EVQ_IN_TMR_TRIG_START 0x2
11297 /* enum: Hold-off */
11298 #define	MC_CMD_INIT_EVQ_IN_TMR_INT_HLDOFF 0x3
11299 /* Target EVQ for wakeups if in wakeup mode. */
11300 #define	MC_CMD_INIT_EVQ_IN_TARGET_EVQ_OFST 24
11301 #define	MC_CMD_INIT_EVQ_IN_TARGET_EVQ_LEN 4
11302 /* Target interrupt if in interrupting mode (note union with target EVQ). Use
11303  * MC_CMD_RESOURCE_INSTANCE_ANY unless a specific one required for test
11304  * purposes.
11305  */
11306 #define	MC_CMD_INIT_EVQ_IN_IRQ_NUM_OFST 24
11307 #define	MC_CMD_INIT_EVQ_IN_IRQ_NUM_LEN 4
11308 /* Event Counter Mode. */
11309 #define	MC_CMD_INIT_EVQ_IN_COUNT_MODE_OFST 28
11310 #define	MC_CMD_INIT_EVQ_IN_COUNT_MODE_LEN 4
11311 /* enum: Disabled */
11312 #define	MC_CMD_INIT_EVQ_IN_COUNT_MODE_DIS 0x0
11313 /* enum: Disabled */
11314 #define	MC_CMD_INIT_EVQ_IN_COUNT_MODE_RX 0x1
11315 /* enum: Disabled */
11316 #define	MC_CMD_INIT_EVQ_IN_COUNT_MODE_TX 0x2
11317 /* enum: Disabled */
11318 #define	MC_CMD_INIT_EVQ_IN_COUNT_MODE_RXTX 0x3
11319 /* Event queue packet count threshold. */
11320 #define	MC_CMD_INIT_EVQ_IN_COUNT_THRSHLD_OFST 32
11321 #define	MC_CMD_INIT_EVQ_IN_COUNT_THRSHLD_LEN 4
11322 /* 64-bit address of 4k of 4k-aligned host memory buffer */
11323 #define	MC_CMD_INIT_EVQ_IN_DMA_ADDR_OFST 36
11324 #define	MC_CMD_INIT_EVQ_IN_DMA_ADDR_LEN 8
11325 #define	MC_CMD_INIT_EVQ_IN_DMA_ADDR_LO_OFST 36
11326 #define	MC_CMD_INIT_EVQ_IN_DMA_ADDR_LO_LEN 4
11327 #define	MC_CMD_INIT_EVQ_IN_DMA_ADDR_LO_LBN 288
11328 #define	MC_CMD_INIT_EVQ_IN_DMA_ADDR_LO_WIDTH 32
11329 #define	MC_CMD_INIT_EVQ_IN_DMA_ADDR_HI_OFST 40
11330 #define	MC_CMD_INIT_EVQ_IN_DMA_ADDR_HI_LEN 4
11331 #define	MC_CMD_INIT_EVQ_IN_DMA_ADDR_HI_LBN 320
11332 #define	MC_CMD_INIT_EVQ_IN_DMA_ADDR_HI_WIDTH 32
11333 #define	MC_CMD_INIT_EVQ_IN_DMA_ADDR_MINNUM 1
11334 #define	MC_CMD_INIT_EVQ_IN_DMA_ADDR_MAXNUM 64
11335 #define	MC_CMD_INIT_EVQ_IN_DMA_ADDR_MAXNUM_MCDI2 64
11336 
11337 /* MC_CMD_INIT_EVQ_OUT msgresponse */
11338 #define	MC_CMD_INIT_EVQ_OUT_LEN 4
11339 /* Only valid if INTRFLAG was true */
11340 #define	MC_CMD_INIT_EVQ_OUT_IRQ_OFST 0
11341 #define	MC_CMD_INIT_EVQ_OUT_IRQ_LEN 4
11342 
11343 /* MC_CMD_INIT_EVQ_V2_IN msgrequest */
11344 #define	MC_CMD_INIT_EVQ_V2_IN_LENMIN 44
11345 #define	MC_CMD_INIT_EVQ_V2_IN_LENMAX 548
11346 #define	MC_CMD_INIT_EVQ_V2_IN_LENMAX_MCDI2 548
11347 #define	MC_CMD_INIT_EVQ_V2_IN_LEN(num) (36+8*(num))
11348 #define	MC_CMD_INIT_EVQ_V2_IN_DMA_ADDR_NUM(len) (((len)-36)/8)
11349 /* Size, in entries */
11350 #define	MC_CMD_INIT_EVQ_V2_IN_SIZE_OFST 0
11351 #define	MC_CMD_INIT_EVQ_V2_IN_SIZE_LEN 4
11352 /* Desired instance. Must be set to a specific instance, which is a function
11353  * local queue index. The calling client must be the currently-assigned user of
11354  * this VI (see MC_CMD_SET_VI_USER).
11355  */
11356 #define	MC_CMD_INIT_EVQ_V2_IN_INSTANCE_OFST 4
11357 #define	MC_CMD_INIT_EVQ_V2_IN_INSTANCE_LEN 4
11358 /* The initial timer value. The load value is ignored if the timer mode is DIS.
11359  */
11360 #define	MC_CMD_INIT_EVQ_V2_IN_TMR_LOAD_OFST 8
11361 #define	MC_CMD_INIT_EVQ_V2_IN_TMR_LOAD_LEN 4
11362 /* The reload value is ignored in one-shot modes */
11363 #define	MC_CMD_INIT_EVQ_V2_IN_TMR_RELOAD_OFST 12
11364 #define	MC_CMD_INIT_EVQ_V2_IN_TMR_RELOAD_LEN 4
11365 /* tbd */
11366 #define	MC_CMD_INIT_EVQ_V2_IN_FLAGS_OFST 16
11367 #define	MC_CMD_INIT_EVQ_V2_IN_FLAGS_LEN 4
11368 #define	MC_CMD_INIT_EVQ_V2_IN_FLAG_INTERRUPTING_OFST 16
11369 #define	MC_CMD_INIT_EVQ_V2_IN_FLAG_INTERRUPTING_LBN 0
11370 #define	MC_CMD_INIT_EVQ_V2_IN_FLAG_INTERRUPTING_WIDTH 1
11371 #define	MC_CMD_INIT_EVQ_V2_IN_FLAG_RPTR_DOS_OFST 16
11372 #define	MC_CMD_INIT_EVQ_V2_IN_FLAG_RPTR_DOS_LBN 1
11373 #define	MC_CMD_INIT_EVQ_V2_IN_FLAG_RPTR_DOS_WIDTH 1
11374 #define	MC_CMD_INIT_EVQ_V2_IN_FLAG_INT_ARMD_OFST 16
11375 #define	MC_CMD_INIT_EVQ_V2_IN_FLAG_INT_ARMD_LBN 2
11376 #define	MC_CMD_INIT_EVQ_V2_IN_FLAG_INT_ARMD_WIDTH 1
11377 #define	MC_CMD_INIT_EVQ_V2_IN_FLAG_CUT_THRU_OFST 16
11378 #define	MC_CMD_INIT_EVQ_V2_IN_FLAG_CUT_THRU_LBN 3
11379 #define	MC_CMD_INIT_EVQ_V2_IN_FLAG_CUT_THRU_WIDTH 1
11380 #define	MC_CMD_INIT_EVQ_V2_IN_FLAG_RX_MERGE_OFST 16
11381 #define	MC_CMD_INIT_EVQ_V2_IN_FLAG_RX_MERGE_LBN 4
11382 #define	MC_CMD_INIT_EVQ_V2_IN_FLAG_RX_MERGE_WIDTH 1
11383 #define	MC_CMD_INIT_EVQ_V2_IN_FLAG_TX_MERGE_OFST 16
11384 #define	MC_CMD_INIT_EVQ_V2_IN_FLAG_TX_MERGE_LBN 5
11385 #define	MC_CMD_INIT_EVQ_V2_IN_FLAG_TX_MERGE_WIDTH 1
11386 #define	MC_CMD_INIT_EVQ_V2_IN_FLAG_USE_TIMER_OFST 16
11387 #define	MC_CMD_INIT_EVQ_V2_IN_FLAG_USE_TIMER_LBN 6
11388 #define	MC_CMD_INIT_EVQ_V2_IN_FLAG_USE_TIMER_WIDTH 1
11389 #define	MC_CMD_INIT_EVQ_V2_IN_FLAG_TYPE_OFST 16
11390 #define	MC_CMD_INIT_EVQ_V2_IN_FLAG_TYPE_LBN 7
11391 #define	MC_CMD_INIT_EVQ_V2_IN_FLAG_TYPE_WIDTH 4
11392 /* enum: All initialisation flags specified by host. */
11393 #define	MC_CMD_INIT_EVQ_V2_IN_FLAG_TYPE_MANUAL 0x0
11394 /* enum: MEDFORD only. Certain initialisation flags specified by host may be
11395  * over-ridden by firmware based on licenses and firmware variant in order to
11396  * provide the lowest latency achievable. See
11397  * MC_CMD_INIT_EVQ_V2/MC_CMD_INIT_EVQ_V2_OUT/FLAGS for list of affected flags.
11398  */
11399 #define	MC_CMD_INIT_EVQ_V2_IN_FLAG_TYPE_LOW_LATENCY 0x1
11400 /* enum: MEDFORD only. Certain initialisation flags specified by host may be
11401  * over-ridden by firmware based on licenses and firmware variant in order to
11402  * provide the best throughput achievable. See
11403  * MC_CMD_INIT_EVQ_V2/MC_CMD_INIT_EVQ_V2_OUT/FLAGS for list of affected flags.
11404  */
11405 #define	MC_CMD_INIT_EVQ_V2_IN_FLAG_TYPE_THROUGHPUT 0x2
11406 /* enum: MEDFORD only. Certain initialisation flags may be over-ridden by
11407  * firmware based on licenses and firmware variant. See
11408  * MC_CMD_INIT_EVQ_V2/MC_CMD_INIT_EVQ_V2_OUT/FLAGS for list of affected flags.
11409  */
11410 #define	MC_CMD_INIT_EVQ_V2_IN_FLAG_TYPE_AUTO 0x3
11411 #define	MC_CMD_INIT_EVQ_V2_IN_FLAG_EXT_WIDTH_OFST 16
11412 #define	MC_CMD_INIT_EVQ_V2_IN_FLAG_EXT_WIDTH_LBN 11
11413 #define	MC_CMD_INIT_EVQ_V2_IN_FLAG_EXT_WIDTH_WIDTH 1
11414 #define	MC_CMD_INIT_EVQ_V2_IN_TMR_MODE_OFST 20
11415 #define	MC_CMD_INIT_EVQ_V2_IN_TMR_MODE_LEN 4
11416 /* enum: Disabled */
11417 #define	MC_CMD_INIT_EVQ_V2_IN_TMR_MODE_DIS 0x0
11418 /* enum: Immediate */
11419 #define	MC_CMD_INIT_EVQ_V2_IN_TMR_IMMED_START 0x1
11420 /* enum: Triggered */
11421 #define	MC_CMD_INIT_EVQ_V2_IN_TMR_TRIG_START 0x2
11422 /* enum: Hold-off */
11423 #define	MC_CMD_INIT_EVQ_V2_IN_TMR_INT_HLDOFF 0x3
11424 /* Target EVQ for wakeups if in wakeup mode. */
11425 #define	MC_CMD_INIT_EVQ_V2_IN_TARGET_EVQ_OFST 24
11426 #define	MC_CMD_INIT_EVQ_V2_IN_TARGET_EVQ_LEN 4
11427 /* Target interrupt if in interrupting mode (note union with target EVQ). Use
11428  * MC_CMD_RESOURCE_INSTANCE_ANY unless a specific one required for test
11429  * purposes.
11430  */
11431 #define	MC_CMD_INIT_EVQ_V2_IN_IRQ_NUM_OFST 24
11432 #define	MC_CMD_INIT_EVQ_V2_IN_IRQ_NUM_LEN 4
11433 /* Event Counter Mode. */
11434 #define	MC_CMD_INIT_EVQ_V2_IN_COUNT_MODE_OFST 28
11435 #define	MC_CMD_INIT_EVQ_V2_IN_COUNT_MODE_LEN 4
11436 /* enum: Disabled */
11437 #define	MC_CMD_INIT_EVQ_V2_IN_COUNT_MODE_DIS 0x0
11438 /* enum: Disabled */
11439 #define	MC_CMD_INIT_EVQ_V2_IN_COUNT_MODE_RX 0x1
11440 /* enum: Disabled */
11441 #define	MC_CMD_INIT_EVQ_V2_IN_COUNT_MODE_TX 0x2
11442 /* enum: Disabled */
11443 #define	MC_CMD_INIT_EVQ_V2_IN_COUNT_MODE_RXTX 0x3
11444 /* Event queue packet count threshold. */
11445 #define	MC_CMD_INIT_EVQ_V2_IN_COUNT_THRSHLD_OFST 32
11446 #define	MC_CMD_INIT_EVQ_V2_IN_COUNT_THRSHLD_LEN 4
11447 /* 64-bit address of 4k of 4k-aligned host memory buffer */
11448 #define	MC_CMD_INIT_EVQ_V2_IN_DMA_ADDR_OFST 36
11449 #define	MC_CMD_INIT_EVQ_V2_IN_DMA_ADDR_LEN 8
11450 #define	MC_CMD_INIT_EVQ_V2_IN_DMA_ADDR_LO_OFST 36
11451 #define	MC_CMD_INIT_EVQ_V2_IN_DMA_ADDR_LO_LEN 4
11452 #define	MC_CMD_INIT_EVQ_V2_IN_DMA_ADDR_LO_LBN 288
11453 #define	MC_CMD_INIT_EVQ_V2_IN_DMA_ADDR_LO_WIDTH 32
11454 #define	MC_CMD_INIT_EVQ_V2_IN_DMA_ADDR_HI_OFST 40
11455 #define	MC_CMD_INIT_EVQ_V2_IN_DMA_ADDR_HI_LEN 4
11456 #define	MC_CMD_INIT_EVQ_V2_IN_DMA_ADDR_HI_LBN 320
11457 #define	MC_CMD_INIT_EVQ_V2_IN_DMA_ADDR_HI_WIDTH 32
11458 #define	MC_CMD_INIT_EVQ_V2_IN_DMA_ADDR_MINNUM 1
11459 #define	MC_CMD_INIT_EVQ_V2_IN_DMA_ADDR_MAXNUM 64
11460 #define	MC_CMD_INIT_EVQ_V2_IN_DMA_ADDR_MAXNUM_MCDI2 64
11461 
11462 /* MC_CMD_INIT_EVQ_V2_OUT msgresponse */
11463 #define	MC_CMD_INIT_EVQ_V2_OUT_LEN 8
11464 /* Only valid if INTRFLAG was true */
11465 #define	MC_CMD_INIT_EVQ_V2_OUT_IRQ_OFST 0
11466 #define	MC_CMD_INIT_EVQ_V2_OUT_IRQ_LEN 4
11467 /* Actual configuration applied on the card */
11468 #define	MC_CMD_INIT_EVQ_V2_OUT_FLAGS_OFST 4
11469 #define	MC_CMD_INIT_EVQ_V2_OUT_FLAGS_LEN 4
11470 #define	MC_CMD_INIT_EVQ_V2_OUT_FLAG_CUT_THRU_OFST 4
11471 #define	MC_CMD_INIT_EVQ_V2_OUT_FLAG_CUT_THRU_LBN 0
11472 #define	MC_CMD_INIT_EVQ_V2_OUT_FLAG_CUT_THRU_WIDTH 1
11473 #define	MC_CMD_INIT_EVQ_V2_OUT_FLAG_RX_MERGE_OFST 4
11474 #define	MC_CMD_INIT_EVQ_V2_OUT_FLAG_RX_MERGE_LBN 1
11475 #define	MC_CMD_INIT_EVQ_V2_OUT_FLAG_RX_MERGE_WIDTH 1
11476 #define	MC_CMD_INIT_EVQ_V2_OUT_FLAG_TX_MERGE_OFST 4
11477 #define	MC_CMD_INIT_EVQ_V2_OUT_FLAG_TX_MERGE_LBN 2
11478 #define	MC_CMD_INIT_EVQ_V2_OUT_FLAG_TX_MERGE_WIDTH 1
11479 #define	MC_CMD_INIT_EVQ_V2_OUT_FLAG_RXQ_FORCE_EV_MERGING_OFST 4
11480 #define	MC_CMD_INIT_EVQ_V2_OUT_FLAG_RXQ_FORCE_EV_MERGING_LBN 3
11481 #define	MC_CMD_INIT_EVQ_V2_OUT_FLAG_RXQ_FORCE_EV_MERGING_WIDTH 1
11482 
11483 /* MC_CMD_INIT_EVQ_V3_IN msgrequest: Extended request to specify per-queue
11484  * event merge timeouts.
11485  */
11486 #define	MC_CMD_INIT_EVQ_V3_IN_LEN 556
11487 /* Size, in entries */
11488 #define	MC_CMD_INIT_EVQ_V3_IN_SIZE_OFST 0
11489 #define	MC_CMD_INIT_EVQ_V3_IN_SIZE_LEN 4
11490 /* Desired instance. Must be set to a specific instance, which is a function
11491  * local queue index. The calling client must be the currently-assigned user of
11492  * this VI (see MC_CMD_SET_VI_USER).
11493  */
11494 #define	MC_CMD_INIT_EVQ_V3_IN_INSTANCE_OFST 4
11495 #define	MC_CMD_INIT_EVQ_V3_IN_INSTANCE_LEN 4
11496 /* The initial timer value. The load value is ignored if the timer mode is DIS.
11497  */
11498 #define	MC_CMD_INIT_EVQ_V3_IN_TMR_LOAD_OFST 8
11499 #define	MC_CMD_INIT_EVQ_V3_IN_TMR_LOAD_LEN 4
11500 /* The reload value is ignored in one-shot modes */
11501 #define	MC_CMD_INIT_EVQ_V3_IN_TMR_RELOAD_OFST 12
11502 #define	MC_CMD_INIT_EVQ_V3_IN_TMR_RELOAD_LEN 4
11503 /* tbd */
11504 #define	MC_CMD_INIT_EVQ_V3_IN_FLAGS_OFST 16
11505 #define	MC_CMD_INIT_EVQ_V3_IN_FLAGS_LEN 4
11506 #define	MC_CMD_INIT_EVQ_V3_IN_FLAG_INTERRUPTING_OFST 16
11507 #define	MC_CMD_INIT_EVQ_V3_IN_FLAG_INTERRUPTING_LBN 0
11508 #define	MC_CMD_INIT_EVQ_V3_IN_FLAG_INTERRUPTING_WIDTH 1
11509 #define	MC_CMD_INIT_EVQ_V3_IN_FLAG_RPTR_DOS_OFST 16
11510 #define	MC_CMD_INIT_EVQ_V3_IN_FLAG_RPTR_DOS_LBN 1
11511 #define	MC_CMD_INIT_EVQ_V3_IN_FLAG_RPTR_DOS_WIDTH 1
11512 #define	MC_CMD_INIT_EVQ_V3_IN_FLAG_INT_ARMD_OFST 16
11513 #define	MC_CMD_INIT_EVQ_V3_IN_FLAG_INT_ARMD_LBN 2
11514 #define	MC_CMD_INIT_EVQ_V3_IN_FLAG_INT_ARMD_WIDTH 1
11515 #define	MC_CMD_INIT_EVQ_V3_IN_FLAG_CUT_THRU_OFST 16
11516 #define	MC_CMD_INIT_EVQ_V3_IN_FLAG_CUT_THRU_LBN 3
11517 #define	MC_CMD_INIT_EVQ_V3_IN_FLAG_CUT_THRU_WIDTH 1
11518 #define	MC_CMD_INIT_EVQ_V3_IN_FLAG_RX_MERGE_OFST 16
11519 #define	MC_CMD_INIT_EVQ_V3_IN_FLAG_RX_MERGE_LBN 4
11520 #define	MC_CMD_INIT_EVQ_V3_IN_FLAG_RX_MERGE_WIDTH 1
11521 #define	MC_CMD_INIT_EVQ_V3_IN_FLAG_TX_MERGE_OFST 16
11522 #define	MC_CMD_INIT_EVQ_V3_IN_FLAG_TX_MERGE_LBN 5
11523 #define	MC_CMD_INIT_EVQ_V3_IN_FLAG_TX_MERGE_WIDTH 1
11524 #define	MC_CMD_INIT_EVQ_V3_IN_FLAG_USE_TIMER_OFST 16
11525 #define	MC_CMD_INIT_EVQ_V3_IN_FLAG_USE_TIMER_LBN 6
11526 #define	MC_CMD_INIT_EVQ_V3_IN_FLAG_USE_TIMER_WIDTH 1
11527 #define	MC_CMD_INIT_EVQ_V3_IN_FLAG_TYPE_OFST 16
11528 #define	MC_CMD_INIT_EVQ_V3_IN_FLAG_TYPE_LBN 7
11529 #define	MC_CMD_INIT_EVQ_V3_IN_FLAG_TYPE_WIDTH 4
11530 /* enum: All initialisation flags specified by host. */
11531 #define	MC_CMD_INIT_EVQ_V3_IN_FLAG_TYPE_MANUAL 0x0
11532 /* enum: MEDFORD only. Certain initialisation flags specified by host may be
11533  * over-ridden by firmware based on licenses and firmware variant in order to
11534  * provide the lowest latency achievable. See
11535  * MC_CMD_INIT_EVQ_V2/MC_CMD_INIT_EVQ_V2_OUT/FLAGS for list of affected flags.
11536  */
11537 #define	MC_CMD_INIT_EVQ_V3_IN_FLAG_TYPE_LOW_LATENCY 0x1
11538 /* enum: MEDFORD only. Certain initialisation flags specified by host may be
11539  * over-ridden by firmware based on licenses and firmware variant in order to
11540  * provide the best throughput achievable. See
11541  * MC_CMD_INIT_EVQ_V2/MC_CMD_INIT_EVQ_V2_OUT/FLAGS for list of affected flags.
11542  */
11543 #define	MC_CMD_INIT_EVQ_V3_IN_FLAG_TYPE_THROUGHPUT 0x2
11544 /* enum: MEDFORD only. Certain initialisation flags may be over-ridden by
11545  * firmware based on licenses and firmware variant. See
11546  * MC_CMD_INIT_EVQ_V2/MC_CMD_INIT_EVQ_V2_OUT/FLAGS for list of affected flags.
11547  */
11548 #define	MC_CMD_INIT_EVQ_V3_IN_FLAG_TYPE_AUTO 0x3
11549 #define	MC_CMD_INIT_EVQ_V3_IN_FLAG_EXT_WIDTH_OFST 16
11550 #define	MC_CMD_INIT_EVQ_V3_IN_FLAG_EXT_WIDTH_LBN 11
11551 #define	MC_CMD_INIT_EVQ_V3_IN_FLAG_EXT_WIDTH_WIDTH 1
11552 #define	MC_CMD_INIT_EVQ_V3_IN_TMR_MODE_OFST 20
11553 #define	MC_CMD_INIT_EVQ_V3_IN_TMR_MODE_LEN 4
11554 /* enum: Disabled */
11555 #define	MC_CMD_INIT_EVQ_V3_IN_TMR_MODE_DIS 0x0
11556 /* enum: Immediate */
11557 #define	MC_CMD_INIT_EVQ_V3_IN_TMR_IMMED_START 0x1
11558 /* enum: Triggered */
11559 #define	MC_CMD_INIT_EVQ_V3_IN_TMR_TRIG_START 0x2
11560 /* enum: Hold-off */
11561 #define	MC_CMD_INIT_EVQ_V3_IN_TMR_INT_HLDOFF 0x3
11562 /* Target EVQ for wakeups if in wakeup mode. */
11563 #define	MC_CMD_INIT_EVQ_V3_IN_TARGET_EVQ_OFST 24
11564 #define	MC_CMD_INIT_EVQ_V3_IN_TARGET_EVQ_LEN 4
11565 /* Target interrupt if in interrupting mode (note union with target EVQ). Use
11566  * MC_CMD_RESOURCE_INSTANCE_ANY unless a specific one required for test
11567  * purposes.
11568  */
11569 #define	MC_CMD_INIT_EVQ_V3_IN_IRQ_NUM_OFST 24
11570 #define	MC_CMD_INIT_EVQ_V3_IN_IRQ_NUM_LEN 4
11571 /* Event Counter Mode. */
11572 #define	MC_CMD_INIT_EVQ_V3_IN_COUNT_MODE_OFST 28
11573 #define	MC_CMD_INIT_EVQ_V3_IN_COUNT_MODE_LEN 4
11574 /* enum: Disabled */
11575 #define	MC_CMD_INIT_EVQ_V3_IN_COUNT_MODE_DIS 0x0
11576 /* enum: Disabled */
11577 #define	MC_CMD_INIT_EVQ_V3_IN_COUNT_MODE_RX 0x1
11578 /* enum: Disabled */
11579 #define	MC_CMD_INIT_EVQ_V3_IN_COUNT_MODE_TX 0x2
11580 /* enum: Disabled */
11581 #define	MC_CMD_INIT_EVQ_V3_IN_COUNT_MODE_RXTX 0x3
11582 /* Event queue packet count threshold. */
11583 #define	MC_CMD_INIT_EVQ_V3_IN_COUNT_THRSHLD_OFST 32
11584 #define	MC_CMD_INIT_EVQ_V3_IN_COUNT_THRSHLD_LEN 4
11585 /* 64-bit address of 4k of 4k-aligned host memory buffer */
11586 #define	MC_CMD_INIT_EVQ_V3_IN_DMA_ADDR_OFST 36
11587 #define	MC_CMD_INIT_EVQ_V3_IN_DMA_ADDR_LEN 8
11588 #define	MC_CMD_INIT_EVQ_V3_IN_DMA_ADDR_LO_OFST 36
11589 #define	MC_CMD_INIT_EVQ_V3_IN_DMA_ADDR_LO_LEN 4
11590 #define	MC_CMD_INIT_EVQ_V3_IN_DMA_ADDR_LO_LBN 288
11591 #define	MC_CMD_INIT_EVQ_V3_IN_DMA_ADDR_LO_WIDTH 32
11592 #define	MC_CMD_INIT_EVQ_V3_IN_DMA_ADDR_HI_OFST 40
11593 #define	MC_CMD_INIT_EVQ_V3_IN_DMA_ADDR_HI_LEN 4
11594 #define	MC_CMD_INIT_EVQ_V3_IN_DMA_ADDR_HI_LBN 320
11595 #define	MC_CMD_INIT_EVQ_V3_IN_DMA_ADDR_HI_WIDTH 32
11596 #define	MC_CMD_INIT_EVQ_V3_IN_DMA_ADDR_MINNUM 1
11597 #define	MC_CMD_INIT_EVQ_V3_IN_DMA_ADDR_MAXNUM 64
11598 #define	MC_CMD_INIT_EVQ_V3_IN_DMA_ADDR_MAXNUM_MCDI2 64
11599 /* Receive event merge timeout to configure, in nanoseconds. The valid range
11600  * and granularity are device specific. Specify 0 to use the firmware's default
11601  * value. This field is ignored and per-queue merging is disabled if
11602  * MC_CMD_INIT_EVQ/MC_CMD_INIT_EVQ_IN/FLAG_RX_MERGE is not set.
11603  */
11604 #define	MC_CMD_INIT_EVQ_V3_IN_RX_MERGE_TIMEOUT_NS_OFST 548
11605 #define	MC_CMD_INIT_EVQ_V3_IN_RX_MERGE_TIMEOUT_NS_LEN 4
11606 /* Transmit event merge timeout to configure, in nanoseconds. The valid range
11607  * and granularity are device specific. Specify 0 to use the firmware's default
11608  * value. This field is ignored and per-queue merging is disabled if
11609  * MC_CMD_INIT_EVQ/MC_CMD_INIT_EVQ_IN/FLAG_TX_MERGE is not set.
11610  */
11611 #define	MC_CMD_INIT_EVQ_V3_IN_TX_MERGE_TIMEOUT_NS_OFST 552
11612 #define	MC_CMD_INIT_EVQ_V3_IN_TX_MERGE_TIMEOUT_NS_LEN 4
11613 
11614 /* MC_CMD_INIT_EVQ_V3_OUT msgresponse */
11615 #define	MC_CMD_INIT_EVQ_V3_OUT_LEN 8
11616 /* Only valid if INTRFLAG was true */
11617 #define	MC_CMD_INIT_EVQ_V3_OUT_IRQ_OFST 0
11618 #define	MC_CMD_INIT_EVQ_V3_OUT_IRQ_LEN 4
11619 /* Actual configuration applied on the card */
11620 #define	MC_CMD_INIT_EVQ_V3_OUT_FLAGS_OFST 4
11621 #define	MC_CMD_INIT_EVQ_V3_OUT_FLAGS_LEN 4
11622 #define	MC_CMD_INIT_EVQ_V3_OUT_FLAG_CUT_THRU_OFST 4
11623 #define	MC_CMD_INIT_EVQ_V3_OUT_FLAG_CUT_THRU_LBN 0
11624 #define	MC_CMD_INIT_EVQ_V3_OUT_FLAG_CUT_THRU_WIDTH 1
11625 #define	MC_CMD_INIT_EVQ_V3_OUT_FLAG_RX_MERGE_OFST 4
11626 #define	MC_CMD_INIT_EVQ_V3_OUT_FLAG_RX_MERGE_LBN 1
11627 #define	MC_CMD_INIT_EVQ_V3_OUT_FLAG_RX_MERGE_WIDTH 1
11628 #define	MC_CMD_INIT_EVQ_V3_OUT_FLAG_TX_MERGE_OFST 4
11629 #define	MC_CMD_INIT_EVQ_V3_OUT_FLAG_TX_MERGE_LBN 2
11630 #define	MC_CMD_INIT_EVQ_V3_OUT_FLAG_TX_MERGE_WIDTH 1
11631 #define	MC_CMD_INIT_EVQ_V3_OUT_FLAG_RXQ_FORCE_EV_MERGING_OFST 4
11632 #define	MC_CMD_INIT_EVQ_V3_OUT_FLAG_RXQ_FORCE_EV_MERGING_LBN 3
11633 #define	MC_CMD_INIT_EVQ_V3_OUT_FLAG_RXQ_FORCE_EV_MERGING_WIDTH 1
11634 
11635 /* QUEUE_CRC_MODE structuredef */
11636 #define	QUEUE_CRC_MODE_LEN 1
11637 #define	QUEUE_CRC_MODE_MODE_LBN 0
11638 #define	QUEUE_CRC_MODE_MODE_WIDTH 4
11639 /* enum: No CRC. */
11640 #define	QUEUE_CRC_MODE_NONE 0x0
11641 /* enum: CRC Fiber channel over ethernet. */
11642 #define	QUEUE_CRC_MODE_FCOE 0x1
11643 /* enum: CRC (digest) iSCSI header only. */
11644 #define	QUEUE_CRC_MODE_ISCSI_HDR 0x2
11645 /* enum: CRC (digest) iSCSI header and payload. */
11646 #define	QUEUE_CRC_MODE_ISCSI 0x3
11647 /* enum: CRC Fiber channel over IP over ethernet. */
11648 #define	QUEUE_CRC_MODE_FCOIPOE 0x4
11649 /* enum: CRC MPA. */
11650 #define	QUEUE_CRC_MODE_MPA 0x5
11651 #define	QUEUE_CRC_MODE_SPARE_LBN 4
11652 #define	QUEUE_CRC_MODE_SPARE_WIDTH 4
11653 
11654 
11655 /***********************************/
11656 /* MC_CMD_INIT_RXQ
11657  * set up a receive queue according to the supplied parameters. The IN
11658  * arguments end with an address for each 4k of host memory required to back
11659  * the RXQ.
11660  */
11661 #define	MC_CMD_INIT_RXQ 0x81
11662 #define	MC_CMD_INIT_RXQ_MSGSET 0x81
11663 #undef	MC_CMD_0x81_PRIVILEGE_CTG
11664 
11665 #define	MC_CMD_0x81_PRIVILEGE_CTG SRIOV_CTG_GENERAL
11666 
11667 /* MC_CMD_INIT_RXQ_IN msgrequest: Legacy RXQ_INIT request. Use extended version
11668  * in new code.
11669  */
11670 #define	MC_CMD_INIT_RXQ_IN_LENMIN 36
11671 #define	MC_CMD_INIT_RXQ_IN_LENMAX 252
11672 #define	MC_CMD_INIT_RXQ_IN_LENMAX_MCDI2 1020
11673 #define	MC_CMD_INIT_RXQ_IN_LEN(num) (28+8*(num))
11674 #define	MC_CMD_INIT_RXQ_IN_DMA_ADDR_NUM(len) (((len)-28)/8)
11675 /* Size, in entries */
11676 #define	MC_CMD_INIT_RXQ_IN_SIZE_OFST 0
11677 #define	MC_CMD_INIT_RXQ_IN_SIZE_LEN 4
11678 /* The EVQ to send events to. This is an index originally specified to INIT_EVQ
11679  */
11680 #define	MC_CMD_INIT_RXQ_IN_TARGET_EVQ_OFST 4
11681 #define	MC_CMD_INIT_RXQ_IN_TARGET_EVQ_LEN 4
11682 /* The value to put in the event data. Check hardware spec. for valid range. */
11683 #define	MC_CMD_INIT_RXQ_IN_LABEL_OFST 8
11684 #define	MC_CMD_INIT_RXQ_IN_LABEL_LEN 4
11685 /* Desired instance. Must be set to a specific instance, which is a function
11686  * local queue index. The calling client must be the currently-assigned user of
11687  * this VI (see MC_CMD_SET_VI_USER).
11688  */
11689 #define	MC_CMD_INIT_RXQ_IN_INSTANCE_OFST 12
11690 #define	MC_CMD_INIT_RXQ_IN_INSTANCE_LEN 4
11691 /* There will be more flags here. */
11692 #define	MC_CMD_INIT_RXQ_IN_FLAGS_OFST 16
11693 #define	MC_CMD_INIT_RXQ_IN_FLAGS_LEN 4
11694 #define	MC_CMD_INIT_RXQ_IN_FLAG_BUFF_MODE_OFST 16
11695 #define	MC_CMD_INIT_RXQ_IN_FLAG_BUFF_MODE_LBN 0
11696 #define	MC_CMD_INIT_RXQ_IN_FLAG_BUFF_MODE_WIDTH 1
11697 #define	MC_CMD_INIT_RXQ_IN_FLAG_HDR_SPLIT_OFST 16
11698 #define	MC_CMD_INIT_RXQ_IN_FLAG_HDR_SPLIT_LBN 1
11699 #define	MC_CMD_INIT_RXQ_IN_FLAG_HDR_SPLIT_WIDTH 1
11700 #define	MC_CMD_INIT_RXQ_IN_FLAG_TIMESTAMP_OFST 16
11701 #define	MC_CMD_INIT_RXQ_IN_FLAG_TIMESTAMP_LBN 2
11702 #define	MC_CMD_INIT_RXQ_IN_FLAG_TIMESTAMP_WIDTH 1
11703 #define	MC_CMD_INIT_RXQ_IN_CRC_MODE_OFST 16
11704 #define	MC_CMD_INIT_RXQ_IN_CRC_MODE_LBN 3
11705 #define	MC_CMD_INIT_RXQ_IN_CRC_MODE_WIDTH 4
11706 #define	MC_CMD_INIT_RXQ_IN_FLAG_CHAIN_OFST 16
11707 #define	MC_CMD_INIT_RXQ_IN_FLAG_CHAIN_LBN 7
11708 #define	MC_CMD_INIT_RXQ_IN_FLAG_CHAIN_WIDTH 1
11709 #define	MC_CMD_INIT_RXQ_IN_FLAG_PREFIX_OFST 16
11710 #define	MC_CMD_INIT_RXQ_IN_FLAG_PREFIX_LBN 8
11711 #define	MC_CMD_INIT_RXQ_IN_FLAG_PREFIX_WIDTH 1
11712 #define	MC_CMD_INIT_RXQ_IN_FLAG_DISABLE_SCATTER_OFST 16
11713 #define	MC_CMD_INIT_RXQ_IN_FLAG_DISABLE_SCATTER_LBN 9
11714 #define	MC_CMD_INIT_RXQ_IN_FLAG_DISABLE_SCATTER_WIDTH 1
11715 #define	MC_CMD_INIT_RXQ_IN_UNUSED_OFST 16
11716 #define	MC_CMD_INIT_RXQ_IN_UNUSED_LBN 10
11717 #define	MC_CMD_INIT_RXQ_IN_UNUSED_WIDTH 1
11718 /* Owner ID to use if in buffer mode (zero if physical) */
11719 #define	MC_CMD_INIT_RXQ_IN_OWNER_ID_OFST 20
11720 #define	MC_CMD_INIT_RXQ_IN_OWNER_ID_LEN 4
11721 /* The port ID associated with the v-adaptor which should contain this DMAQ. */
11722 #define	MC_CMD_INIT_RXQ_IN_PORT_ID_OFST 24
11723 #define	MC_CMD_INIT_RXQ_IN_PORT_ID_LEN 4
11724 /* 64-bit address of 4k of 4k-aligned host memory buffer */
11725 #define	MC_CMD_INIT_RXQ_IN_DMA_ADDR_OFST 28
11726 #define	MC_CMD_INIT_RXQ_IN_DMA_ADDR_LEN 8
11727 #define	MC_CMD_INIT_RXQ_IN_DMA_ADDR_LO_OFST 28
11728 #define	MC_CMD_INIT_RXQ_IN_DMA_ADDR_LO_LEN 4
11729 #define	MC_CMD_INIT_RXQ_IN_DMA_ADDR_LO_LBN 224
11730 #define	MC_CMD_INIT_RXQ_IN_DMA_ADDR_LO_WIDTH 32
11731 #define	MC_CMD_INIT_RXQ_IN_DMA_ADDR_HI_OFST 32
11732 #define	MC_CMD_INIT_RXQ_IN_DMA_ADDR_HI_LEN 4
11733 #define	MC_CMD_INIT_RXQ_IN_DMA_ADDR_HI_LBN 256
11734 #define	MC_CMD_INIT_RXQ_IN_DMA_ADDR_HI_WIDTH 32
11735 #define	MC_CMD_INIT_RXQ_IN_DMA_ADDR_MINNUM 1
11736 #define	MC_CMD_INIT_RXQ_IN_DMA_ADDR_MAXNUM 28
11737 #define	MC_CMD_INIT_RXQ_IN_DMA_ADDR_MAXNUM_MCDI2 124
11738 
11739 /* MC_CMD_INIT_RXQ_EXT_IN msgrequest: Extended RXQ_INIT with additional mode
11740  * flags
11741  */
11742 #define	MC_CMD_INIT_RXQ_EXT_IN_LEN 544
11743 /* Size, in entries */
11744 #define	MC_CMD_INIT_RXQ_EXT_IN_SIZE_OFST 0
11745 #define	MC_CMD_INIT_RXQ_EXT_IN_SIZE_LEN 4
11746 /* The EVQ to send events to. This is an index originally specified to
11747  * INIT_EVQ. If DMA_MODE == PACKED_STREAM this must be equal to INSTANCE.
11748  */
11749 #define	MC_CMD_INIT_RXQ_EXT_IN_TARGET_EVQ_OFST 4
11750 #define	MC_CMD_INIT_RXQ_EXT_IN_TARGET_EVQ_LEN 4
11751 /* The value to put in the event data. Check hardware spec. for valid range.
11752  * This field is ignored if DMA_MODE == EQUAL_STRIDE_SUPER_BUFFER or DMA_MODE
11753  * == PACKED_STREAM.
11754  */
11755 #define	MC_CMD_INIT_RXQ_EXT_IN_LABEL_OFST 8
11756 #define	MC_CMD_INIT_RXQ_EXT_IN_LABEL_LEN 4
11757 /* Desired instance. Must be set to a specific instance, which is a function
11758  * local queue index. The calling client must be the currently-assigned user of
11759  * this VI (see MC_CMD_SET_VI_USER).
11760  */
11761 #define	MC_CMD_INIT_RXQ_EXT_IN_INSTANCE_OFST 12
11762 #define	MC_CMD_INIT_RXQ_EXT_IN_INSTANCE_LEN 4
11763 /* There will be more flags here. */
11764 #define	MC_CMD_INIT_RXQ_EXT_IN_FLAGS_OFST 16
11765 #define	MC_CMD_INIT_RXQ_EXT_IN_FLAGS_LEN 4
11766 #define	MC_CMD_INIT_RXQ_EXT_IN_FLAG_BUFF_MODE_OFST 16
11767 #define	MC_CMD_INIT_RXQ_EXT_IN_FLAG_BUFF_MODE_LBN 0
11768 #define	MC_CMD_INIT_RXQ_EXT_IN_FLAG_BUFF_MODE_WIDTH 1
11769 #define	MC_CMD_INIT_RXQ_EXT_IN_FLAG_HDR_SPLIT_OFST 16
11770 #define	MC_CMD_INIT_RXQ_EXT_IN_FLAG_HDR_SPLIT_LBN 1
11771 #define	MC_CMD_INIT_RXQ_EXT_IN_FLAG_HDR_SPLIT_WIDTH 1
11772 #define	MC_CMD_INIT_RXQ_EXT_IN_FLAG_TIMESTAMP_OFST 16
11773 #define	MC_CMD_INIT_RXQ_EXT_IN_FLAG_TIMESTAMP_LBN 2
11774 #define	MC_CMD_INIT_RXQ_EXT_IN_FLAG_TIMESTAMP_WIDTH 1
11775 #define	MC_CMD_INIT_RXQ_EXT_IN_CRC_MODE_OFST 16
11776 #define	MC_CMD_INIT_RXQ_EXT_IN_CRC_MODE_LBN 3
11777 #define	MC_CMD_INIT_RXQ_EXT_IN_CRC_MODE_WIDTH 4
11778 #define	MC_CMD_INIT_RXQ_EXT_IN_FLAG_CHAIN_OFST 16
11779 #define	MC_CMD_INIT_RXQ_EXT_IN_FLAG_CHAIN_LBN 7
11780 #define	MC_CMD_INIT_RXQ_EXT_IN_FLAG_CHAIN_WIDTH 1
11781 #define	MC_CMD_INIT_RXQ_EXT_IN_FLAG_PREFIX_OFST 16
11782 #define	MC_CMD_INIT_RXQ_EXT_IN_FLAG_PREFIX_LBN 8
11783 #define	MC_CMD_INIT_RXQ_EXT_IN_FLAG_PREFIX_WIDTH 1
11784 #define	MC_CMD_INIT_RXQ_EXT_IN_FLAG_DISABLE_SCATTER_OFST 16
11785 #define	MC_CMD_INIT_RXQ_EXT_IN_FLAG_DISABLE_SCATTER_LBN 9
11786 #define	MC_CMD_INIT_RXQ_EXT_IN_FLAG_DISABLE_SCATTER_WIDTH 1
11787 #define	MC_CMD_INIT_RXQ_EXT_IN_DMA_MODE_OFST 16
11788 #define	MC_CMD_INIT_RXQ_EXT_IN_DMA_MODE_LBN 10
11789 #define	MC_CMD_INIT_RXQ_EXT_IN_DMA_MODE_WIDTH 4
11790 /* enum: One packet per descriptor (for normal networking) */
11791 #define	MC_CMD_INIT_RXQ_EXT_IN_SINGLE_PACKET 0x0
11792 /* enum: Pack multiple packets into large descriptors (for SolarCapture) */
11793 #define	MC_CMD_INIT_RXQ_EXT_IN_PACKED_STREAM 0x1
11794 /* enum: Pack multiple packets into large descriptors using the format designed
11795  * to maximise packet rate. This mode uses 1 "bucket" per descriptor with
11796  * multiple fixed-size packet buffers within each bucket. For a full
11797  * description see SF-119419-TC. This mode is only supported by "dpdk" datapath
11798  * firmware.
11799  */
11800 #define	MC_CMD_INIT_RXQ_EXT_IN_EQUAL_STRIDE_SUPER_BUFFER 0x2
11801 /* enum: Deprecated name for EQUAL_STRIDE_SUPER_BUFFER. */
11802 #define	MC_CMD_INIT_RXQ_EXT_IN_EQUAL_STRIDE_PACKED_STREAM 0x2
11803 #define	MC_CMD_INIT_RXQ_EXT_IN_FLAG_SNAPSHOT_MODE_OFST 16
11804 #define	MC_CMD_INIT_RXQ_EXT_IN_FLAG_SNAPSHOT_MODE_LBN 14
11805 #define	MC_CMD_INIT_RXQ_EXT_IN_FLAG_SNAPSHOT_MODE_WIDTH 1
11806 #define	MC_CMD_INIT_RXQ_EXT_IN_PACKED_STREAM_BUFF_SIZE_OFST 16
11807 #define	MC_CMD_INIT_RXQ_EXT_IN_PACKED_STREAM_BUFF_SIZE_LBN 15
11808 #define	MC_CMD_INIT_RXQ_EXT_IN_PACKED_STREAM_BUFF_SIZE_WIDTH 3
11809 #define	MC_CMD_INIT_RXQ_EXT_IN_PS_BUFF_1M 0x0 /* enum */
11810 #define	MC_CMD_INIT_RXQ_EXT_IN_PS_BUFF_512K 0x1 /* enum */
11811 #define	MC_CMD_INIT_RXQ_EXT_IN_PS_BUFF_256K 0x2 /* enum */
11812 #define	MC_CMD_INIT_RXQ_EXT_IN_PS_BUFF_128K 0x3 /* enum */
11813 #define	MC_CMD_INIT_RXQ_EXT_IN_PS_BUFF_64K 0x4 /* enum */
11814 #define	MC_CMD_INIT_RXQ_EXT_IN_FLAG_WANT_OUTER_CLASSES_OFST 16
11815 #define	MC_CMD_INIT_RXQ_EXT_IN_FLAG_WANT_OUTER_CLASSES_LBN 18
11816 #define	MC_CMD_INIT_RXQ_EXT_IN_FLAG_WANT_OUTER_CLASSES_WIDTH 1
11817 #define	MC_CMD_INIT_RXQ_EXT_IN_FLAG_FORCE_EV_MERGING_OFST 16
11818 #define	MC_CMD_INIT_RXQ_EXT_IN_FLAG_FORCE_EV_MERGING_LBN 19
11819 #define	MC_CMD_INIT_RXQ_EXT_IN_FLAG_FORCE_EV_MERGING_WIDTH 1
11820 #define	MC_CMD_INIT_RXQ_EXT_IN_FLAG_NO_CONT_EV_OFST 16
11821 #define	MC_CMD_INIT_RXQ_EXT_IN_FLAG_NO_CONT_EV_LBN 20
11822 #define	MC_CMD_INIT_RXQ_EXT_IN_FLAG_NO_CONT_EV_WIDTH 1
11823 /* Owner ID to use if in buffer mode (zero if physical) */
11824 #define	MC_CMD_INIT_RXQ_EXT_IN_OWNER_ID_OFST 20
11825 #define	MC_CMD_INIT_RXQ_EXT_IN_OWNER_ID_LEN 4
11826 /* The port ID associated with the v-adaptor which should contain this DMAQ. */
11827 #define	MC_CMD_INIT_RXQ_EXT_IN_PORT_ID_OFST 24
11828 #define	MC_CMD_INIT_RXQ_EXT_IN_PORT_ID_LEN 4
11829 /* 64-bit address of 4k of 4k-aligned host memory buffer */
11830 #define	MC_CMD_INIT_RXQ_EXT_IN_DMA_ADDR_OFST 28
11831 #define	MC_CMD_INIT_RXQ_EXT_IN_DMA_ADDR_LEN 8
11832 #define	MC_CMD_INIT_RXQ_EXT_IN_DMA_ADDR_LO_OFST 28
11833 #define	MC_CMD_INIT_RXQ_EXT_IN_DMA_ADDR_LO_LEN 4
11834 #define	MC_CMD_INIT_RXQ_EXT_IN_DMA_ADDR_LO_LBN 224
11835 #define	MC_CMD_INIT_RXQ_EXT_IN_DMA_ADDR_LO_WIDTH 32
11836 #define	MC_CMD_INIT_RXQ_EXT_IN_DMA_ADDR_HI_OFST 32
11837 #define	MC_CMD_INIT_RXQ_EXT_IN_DMA_ADDR_HI_LEN 4
11838 #define	MC_CMD_INIT_RXQ_EXT_IN_DMA_ADDR_HI_LBN 256
11839 #define	MC_CMD_INIT_RXQ_EXT_IN_DMA_ADDR_HI_WIDTH 32
11840 #define	MC_CMD_INIT_RXQ_EXT_IN_DMA_ADDR_MINNUM 0
11841 #define	MC_CMD_INIT_RXQ_EXT_IN_DMA_ADDR_MAXNUM 64
11842 #define	MC_CMD_INIT_RXQ_EXT_IN_DMA_ADDR_MAXNUM_MCDI2 64
11843 /* Maximum length of packet to receive, if SNAPSHOT_MODE flag is set */
11844 #define	MC_CMD_INIT_RXQ_EXT_IN_SNAPSHOT_LENGTH_OFST 540
11845 #define	MC_CMD_INIT_RXQ_EXT_IN_SNAPSHOT_LENGTH_LEN 4
11846 
11847 /* MC_CMD_INIT_RXQ_V3_IN msgrequest */
11848 #define	MC_CMD_INIT_RXQ_V3_IN_LEN 560
11849 /* Size, in entries */
11850 #define	MC_CMD_INIT_RXQ_V3_IN_SIZE_OFST 0
11851 #define	MC_CMD_INIT_RXQ_V3_IN_SIZE_LEN 4
11852 /* The EVQ to send events to. This is an index originally specified to
11853  * INIT_EVQ. If DMA_MODE == PACKED_STREAM this must be equal to INSTANCE.
11854  */
11855 #define	MC_CMD_INIT_RXQ_V3_IN_TARGET_EVQ_OFST 4
11856 #define	MC_CMD_INIT_RXQ_V3_IN_TARGET_EVQ_LEN 4
11857 /* The value to put in the event data. Check hardware spec. for valid range.
11858  * This field is ignored if DMA_MODE == EQUAL_STRIDE_SUPER_BUFFER or DMA_MODE
11859  * == PACKED_STREAM.
11860  */
11861 #define	MC_CMD_INIT_RXQ_V3_IN_LABEL_OFST 8
11862 #define	MC_CMD_INIT_RXQ_V3_IN_LABEL_LEN 4
11863 /* Desired instance. Must be set to a specific instance, which is a function
11864  * local queue index. The calling client must be the currently-assigned user of
11865  * this VI (see MC_CMD_SET_VI_USER).
11866  */
11867 #define	MC_CMD_INIT_RXQ_V3_IN_INSTANCE_OFST 12
11868 #define	MC_CMD_INIT_RXQ_V3_IN_INSTANCE_LEN 4
11869 /* There will be more flags here. */
11870 #define	MC_CMD_INIT_RXQ_V3_IN_FLAGS_OFST 16
11871 #define	MC_CMD_INIT_RXQ_V3_IN_FLAGS_LEN 4
11872 #define	MC_CMD_INIT_RXQ_V3_IN_FLAG_BUFF_MODE_OFST 16
11873 #define	MC_CMD_INIT_RXQ_V3_IN_FLAG_BUFF_MODE_LBN 0
11874 #define	MC_CMD_INIT_RXQ_V3_IN_FLAG_BUFF_MODE_WIDTH 1
11875 #define	MC_CMD_INIT_RXQ_V3_IN_FLAG_HDR_SPLIT_OFST 16
11876 #define	MC_CMD_INIT_RXQ_V3_IN_FLAG_HDR_SPLIT_LBN 1
11877 #define	MC_CMD_INIT_RXQ_V3_IN_FLAG_HDR_SPLIT_WIDTH 1
11878 #define	MC_CMD_INIT_RXQ_V3_IN_FLAG_TIMESTAMP_OFST 16
11879 #define	MC_CMD_INIT_RXQ_V3_IN_FLAG_TIMESTAMP_LBN 2
11880 #define	MC_CMD_INIT_RXQ_V3_IN_FLAG_TIMESTAMP_WIDTH 1
11881 #define	MC_CMD_INIT_RXQ_V3_IN_CRC_MODE_OFST 16
11882 #define	MC_CMD_INIT_RXQ_V3_IN_CRC_MODE_LBN 3
11883 #define	MC_CMD_INIT_RXQ_V3_IN_CRC_MODE_WIDTH 4
11884 #define	MC_CMD_INIT_RXQ_V3_IN_FLAG_CHAIN_OFST 16
11885 #define	MC_CMD_INIT_RXQ_V3_IN_FLAG_CHAIN_LBN 7
11886 #define	MC_CMD_INIT_RXQ_V3_IN_FLAG_CHAIN_WIDTH 1
11887 #define	MC_CMD_INIT_RXQ_V3_IN_FLAG_PREFIX_OFST 16
11888 #define	MC_CMD_INIT_RXQ_V3_IN_FLAG_PREFIX_LBN 8
11889 #define	MC_CMD_INIT_RXQ_V3_IN_FLAG_PREFIX_WIDTH 1
11890 #define	MC_CMD_INIT_RXQ_V3_IN_FLAG_DISABLE_SCATTER_OFST 16
11891 #define	MC_CMD_INIT_RXQ_V3_IN_FLAG_DISABLE_SCATTER_LBN 9
11892 #define	MC_CMD_INIT_RXQ_V3_IN_FLAG_DISABLE_SCATTER_WIDTH 1
11893 #define	MC_CMD_INIT_RXQ_V3_IN_DMA_MODE_OFST 16
11894 #define	MC_CMD_INIT_RXQ_V3_IN_DMA_MODE_LBN 10
11895 #define	MC_CMD_INIT_RXQ_V3_IN_DMA_MODE_WIDTH 4
11896 /* enum: One packet per descriptor (for normal networking) */
11897 #define	MC_CMD_INIT_RXQ_V3_IN_SINGLE_PACKET 0x0
11898 /* enum: Pack multiple packets into large descriptors (for SolarCapture) */
11899 #define	MC_CMD_INIT_RXQ_V3_IN_PACKED_STREAM 0x1
11900 /* enum: Pack multiple packets into large descriptors using the format designed
11901  * to maximise packet rate. This mode uses 1 "bucket" per descriptor with
11902  * multiple fixed-size packet buffers within each bucket. For a full
11903  * description see SF-119419-TC. This mode is only supported by "dpdk" datapath
11904  * firmware.
11905  */
11906 #define	MC_CMD_INIT_RXQ_V3_IN_EQUAL_STRIDE_SUPER_BUFFER 0x2
11907 /* enum: Deprecated name for EQUAL_STRIDE_SUPER_BUFFER. */
11908 #define	MC_CMD_INIT_RXQ_V3_IN_EQUAL_STRIDE_PACKED_STREAM 0x2
11909 #define	MC_CMD_INIT_RXQ_V3_IN_FLAG_SNAPSHOT_MODE_OFST 16
11910 #define	MC_CMD_INIT_RXQ_V3_IN_FLAG_SNAPSHOT_MODE_LBN 14
11911 #define	MC_CMD_INIT_RXQ_V3_IN_FLAG_SNAPSHOT_MODE_WIDTH 1
11912 #define	MC_CMD_INIT_RXQ_V3_IN_PACKED_STREAM_BUFF_SIZE_OFST 16
11913 #define	MC_CMD_INIT_RXQ_V3_IN_PACKED_STREAM_BUFF_SIZE_LBN 15
11914 #define	MC_CMD_INIT_RXQ_V3_IN_PACKED_STREAM_BUFF_SIZE_WIDTH 3
11915 #define	MC_CMD_INIT_RXQ_V3_IN_PS_BUFF_1M 0x0 /* enum */
11916 #define	MC_CMD_INIT_RXQ_V3_IN_PS_BUFF_512K 0x1 /* enum */
11917 #define	MC_CMD_INIT_RXQ_V3_IN_PS_BUFF_256K 0x2 /* enum */
11918 #define	MC_CMD_INIT_RXQ_V3_IN_PS_BUFF_128K 0x3 /* enum */
11919 #define	MC_CMD_INIT_RXQ_V3_IN_PS_BUFF_64K 0x4 /* enum */
11920 #define	MC_CMD_INIT_RXQ_V3_IN_FLAG_WANT_OUTER_CLASSES_OFST 16
11921 #define	MC_CMD_INIT_RXQ_V3_IN_FLAG_WANT_OUTER_CLASSES_LBN 18
11922 #define	MC_CMD_INIT_RXQ_V3_IN_FLAG_WANT_OUTER_CLASSES_WIDTH 1
11923 #define	MC_CMD_INIT_RXQ_V3_IN_FLAG_FORCE_EV_MERGING_OFST 16
11924 #define	MC_CMD_INIT_RXQ_V3_IN_FLAG_FORCE_EV_MERGING_LBN 19
11925 #define	MC_CMD_INIT_RXQ_V3_IN_FLAG_FORCE_EV_MERGING_WIDTH 1
11926 #define	MC_CMD_INIT_RXQ_V3_IN_FLAG_NO_CONT_EV_OFST 16
11927 #define	MC_CMD_INIT_RXQ_V3_IN_FLAG_NO_CONT_EV_LBN 20
11928 #define	MC_CMD_INIT_RXQ_V3_IN_FLAG_NO_CONT_EV_WIDTH 1
11929 /* Owner ID to use if in buffer mode (zero if physical) */
11930 #define	MC_CMD_INIT_RXQ_V3_IN_OWNER_ID_OFST 20
11931 #define	MC_CMD_INIT_RXQ_V3_IN_OWNER_ID_LEN 4
11932 /* The port ID associated with the v-adaptor which should contain this DMAQ. */
11933 #define	MC_CMD_INIT_RXQ_V3_IN_PORT_ID_OFST 24
11934 #define	MC_CMD_INIT_RXQ_V3_IN_PORT_ID_LEN 4
11935 /* 64-bit address of 4k of 4k-aligned host memory buffer */
11936 #define	MC_CMD_INIT_RXQ_V3_IN_DMA_ADDR_OFST 28
11937 #define	MC_CMD_INIT_RXQ_V3_IN_DMA_ADDR_LEN 8
11938 #define	MC_CMD_INIT_RXQ_V3_IN_DMA_ADDR_LO_OFST 28
11939 #define	MC_CMD_INIT_RXQ_V3_IN_DMA_ADDR_LO_LEN 4
11940 #define	MC_CMD_INIT_RXQ_V3_IN_DMA_ADDR_LO_LBN 224
11941 #define	MC_CMD_INIT_RXQ_V3_IN_DMA_ADDR_LO_WIDTH 32
11942 #define	MC_CMD_INIT_RXQ_V3_IN_DMA_ADDR_HI_OFST 32
11943 #define	MC_CMD_INIT_RXQ_V3_IN_DMA_ADDR_HI_LEN 4
11944 #define	MC_CMD_INIT_RXQ_V3_IN_DMA_ADDR_HI_LBN 256
11945 #define	MC_CMD_INIT_RXQ_V3_IN_DMA_ADDR_HI_WIDTH 32
11946 #define	MC_CMD_INIT_RXQ_V3_IN_DMA_ADDR_MINNUM 0
11947 #define	MC_CMD_INIT_RXQ_V3_IN_DMA_ADDR_MAXNUM 64
11948 #define	MC_CMD_INIT_RXQ_V3_IN_DMA_ADDR_MAXNUM_MCDI2 64
11949 /* Maximum length of packet to receive, if SNAPSHOT_MODE flag is set */
11950 #define	MC_CMD_INIT_RXQ_V3_IN_SNAPSHOT_LENGTH_OFST 540
11951 #define	MC_CMD_INIT_RXQ_V3_IN_SNAPSHOT_LENGTH_LEN 4
11952 /* The number of packet buffers that will be contained within each
11953  * EQUAL_STRIDE_SUPER_BUFFER format bucket supplied by the driver. This field
11954  * is ignored unless DMA_MODE == EQUAL_STRIDE_SUPER_BUFFER.
11955  */
11956 #define	MC_CMD_INIT_RXQ_V3_IN_ES_PACKET_BUFFERS_PER_BUCKET_OFST 544
11957 #define	MC_CMD_INIT_RXQ_V3_IN_ES_PACKET_BUFFERS_PER_BUCKET_LEN 4
11958 /* The length in bytes of the area in each packet buffer that can be written to
11959  * by the adapter. This is used to store the packet prefix and the packet
11960  * payload. This length does not include any end padding added by the driver.
11961  * This field is ignored unless DMA_MODE == EQUAL_STRIDE_SUPER_BUFFER.
11962  */
11963 #define	MC_CMD_INIT_RXQ_V3_IN_ES_MAX_DMA_LEN_OFST 548
11964 #define	MC_CMD_INIT_RXQ_V3_IN_ES_MAX_DMA_LEN_LEN 4
11965 /* The length in bytes of a single packet buffer within a
11966  * EQUAL_STRIDE_SUPER_BUFFER format bucket. This field is ignored unless
11967  * DMA_MODE == EQUAL_STRIDE_SUPER_BUFFER.
11968  */
11969 #define	MC_CMD_INIT_RXQ_V3_IN_ES_PACKET_STRIDE_OFST 552
11970 #define	MC_CMD_INIT_RXQ_V3_IN_ES_PACKET_STRIDE_LEN 4
11971 /* The maximum time in nanoseconds that the datapath will be backpressured if
11972  * there are no RX descriptors available. If the timeout is reached and there
11973  * are still no descriptors then the packet will be dropped. A timeout of 0
11974  * means the datapath will never be blocked. This field is ignored unless
11975  * DMA_MODE == EQUAL_STRIDE_SUPER_BUFFER.
11976  */
11977 #define	MC_CMD_INIT_RXQ_V3_IN_ES_HEAD_OF_LINE_BLOCK_TIMEOUT_OFST 556
11978 #define	MC_CMD_INIT_RXQ_V3_IN_ES_HEAD_OF_LINE_BLOCK_TIMEOUT_LEN 4
11979 
11980 /* MC_CMD_INIT_RXQ_V4_IN msgrequest: INIT_RXQ request with new field required
11981  * for systems with a QDMA (currently, Riverhead)
11982  */
11983 #define	MC_CMD_INIT_RXQ_V4_IN_LEN 564
11984 /* Size, in entries */
11985 #define	MC_CMD_INIT_RXQ_V4_IN_SIZE_OFST 0
11986 #define	MC_CMD_INIT_RXQ_V4_IN_SIZE_LEN 4
11987 /* The EVQ to send events to. This is an index originally specified to
11988  * INIT_EVQ. If DMA_MODE == PACKED_STREAM this must be equal to INSTANCE.
11989  */
11990 #define	MC_CMD_INIT_RXQ_V4_IN_TARGET_EVQ_OFST 4
11991 #define	MC_CMD_INIT_RXQ_V4_IN_TARGET_EVQ_LEN 4
11992 /* The value to put in the event data. Check hardware spec. for valid range.
11993  * This field is ignored if DMA_MODE == EQUAL_STRIDE_SUPER_BUFFER or DMA_MODE
11994  * == PACKED_STREAM.
11995  */
11996 #define	MC_CMD_INIT_RXQ_V4_IN_LABEL_OFST 8
11997 #define	MC_CMD_INIT_RXQ_V4_IN_LABEL_LEN 4
11998 /* Desired instance. Must be set to a specific instance, which is a function
11999  * local queue index. The calling client must be the currently-assigned user of
12000  * this VI (see MC_CMD_SET_VI_USER).
12001  */
12002 #define	MC_CMD_INIT_RXQ_V4_IN_INSTANCE_OFST 12
12003 #define	MC_CMD_INIT_RXQ_V4_IN_INSTANCE_LEN 4
12004 /* There will be more flags here. */
12005 #define	MC_CMD_INIT_RXQ_V4_IN_FLAGS_OFST 16
12006 #define	MC_CMD_INIT_RXQ_V4_IN_FLAGS_LEN 4
12007 #define	MC_CMD_INIT_RXQ_V4_IN_FLAG_BUFF_MODE_OFST 16
12008 #define	MC_CMD_INIT_RXQ_V4_IN_FLAG_BUFF_MODE_LBN 0
12009 #define	MC_CMD_INIT_RXQ_V4_IN_FLAG_BUFF_MODE_WIDTH 1
12010 #define	MC_CMD_INIT_RXQ_V4_IN_FLAG_HDR_SPLIT_OFST 16
12011 #define	MC_CMD_INIT_RXQ_V4_IN_FLAG_HDR_SPLIT_LBN 1
12012 #define	MC_CMD_INIT_RXQ_V4_IN_FLAG_HDR_SPLIT_WIDTH 1
12013 #define	MC_CMD_INIT_RXQ_V4_IN_FLAG_TIMESTAMP_OFST 16
12014 #define	MC_CMD_INIT_RXQ_V4_IN_FLAG_TIMESTAMP_LBN 2
12015 #define	MC_CMD_INIT_RXQ_V4_IN_FLAG_TIMESTAMP_WIDTH 1
12016 #define	MC_CMD_INIT_RXQ_V4_IN_CRC_MODE_OFST 16
12017 #define	MC_CMD_INIT_RXQ_V4_IN_CRC_MODE_LBN 3
12018 #define	MC_CMD_INIT_RXQ_V4_IN_CRC_MODE_WIDTH 4
12019 #define	MC_CMD_INIT_RXQ_V4_IN_FLAG_CHAIN_OFST 16
12020 #define	MC_CMD_INIT_RXQ_V4_IN_FLAG_CHAIN_LBN 7
12021 #define	MC_CMD_INIT_RXQ_V4_IN_FLAG_CHAIN_WIDTH 1
12022 #define	MC_CMD_INIT_RXQ_V4_IN_FLAG_PREFIX_OFST 16
12023 #define	MC_CMD_INIT_RXQ_V4_IN_FLAG_PREFIX_LBN 8
12024 #define	MC_CMD_INIT_RXQ_V4_IN_FLAG_PREFIX_WIDTH 1
12025 #define	MC_CMD_INIT_RXQ_V4_IN_FLAG_DISABLE_SCATTER_OFST 16
12026 #define	MC_CMD_INIT_RXQ_V4_IN_FLAG_DISABLE_SCATTER_LBN 9
12027 #define	MC_CMD_INIT_RXQ_V4_IN_FLAG_DISABLE_SCATTER_WIDTH 1
12028 #define	MC_CMD_INIT_RXQ_V4_IN_DMA_MODE_OFST 16
12029 #define	MC_CMD_INIT_RXQ_V4_IN_DMA_MODE_LBN 10
12030 #define	MC_CMD_INIT_RXQ_V4_IN_DMA_MODE_WIDTH 4
12031 /* enum: One packet per descriptor (for normal networking) */
12032 #define	MC_CMD_INIT_RXQ_V4_IN_SINGLE_PACKET 0x0
12033 /* enum: Pack multiple packets into large descriptors (for SolarCapture) */
12034 #define	MC_CMD_INIT_RXQ_V4_IN_PACKED_STREAM 0x1
12035 /* enum: Pack multiple packets into large descriptors using the format designed
12036  * to maximise packet rate. This mode uses 1 "bucket" per descriptor with
12037  * multiple fixed-size packet buffers within each bucket. For a full
12038  * description see SF-119419-TC. This mode is only supported by "dpdk" datapath
12039  * firmware.
12040  */
12041 #define	MC_CMD_INIT_RXQ_V4_IN_EQUAL_STRIDE_SUPER_BUFFER 0x2
12042 /* enum: Deprecated name for EQUAL_STRIDE_SUPER_BUFFER. */
12043 #define	MC_CMD_INIT_RXQ_V4_IN_EQUAL_STRIDE_PACKED_STREAM 0x2
12044 #define	MC_CMD_INIT_RXQ_V4_IN_FLAG_SNAPSHOT_MODE_OFST 16
12045 #define	MC_CMD_INIT_RXQ_V4_IN_FLAG_SNAPSHOT_MODE_LBN 14
12046 #define	MC_CMD_INIT_RXQ_V4_IN_FLAG_SNAPSHOT_MODE_WIDTH 1
12047 #define	MC_CMD_INIT_RXQ_V4_IN_PACKED_STREAM_BUFF_SIZE_OFST 16
12048 #define	MC_CMD_INIT_RXQ_V4_IN_PACKED_STREAM_BUFF_SIZE_LBN 15
12049 #define	MC_CMD_INIT_RXQ_V4_IN_PACKED_STREAM_BUFF_SIZE_WIDTH 3
12050 #define	MC_CMD_INIT_RXQ_V4_IN_PS_BUFF_1M 0x0 /* enum */
12051 #define	MC_CMD_INIT_RXQ_V4_IN_PS_BUFF_512K 0x1 /* enum */
12052 #define	MC_CMD_INIT_RXQ_V4_IN_PS_BUFF_256K 0x2 /* enum */
12053 #define	MC_CMD_INIT_RXQ_V4_IN_PS_BUFF_128K 0x3 /* enum */
12054 #define	MC_CMD_INIT_RXQ_V4_IN_PS_BUFF_64K 0x4 /* enum */
12055 #define	MC_CMD_INIT_RXQ_V4_IN_FLAG_WANT_OUTER_CLASSES_OFST 16
12056 #define	MC_CMD_INIT_RXQ_V4_IN_FLAG_WANT_OUTER_CLASSES_LBN 18
12057 #define	MC_CMD_INIT_RXQ_V4_IN_FLAG_WANT_OUTER_CLASSES_WIDTH 1
12058 #define	MC_CMD_INIT_RXQ_V4_IN_FLAG_FORCE_EV_MERGING_OFST 16
12059 #define	MC_CMD_INIT_RXQ_V4_IN_FLAG_FORCE_EV_MERGING_LBN 19
12060 #define	MC_CMD_INIT_RXQ_V4_IN_FLAG_FORCE_EV_MERGING_WIDTH 1
12061 #define	MC_CMD_INIT_RXQ_V4_IN_FLAG_NO_CONT_EV_OFST 16
12062 #define	MC_CMD_INIT_RXQ_V4_IN_FLAG_NO_CONT_EV_LBN 20
12063 #define	MC_CMD_INIT_RXQ_V4_IN_FLAG_NO_CONT_EV_WIDTH 1
12064 /* Owner ID to use if in buffer mode (zero if physical) */
12065 #define	MC_CMD_INIT_RXQ_V4_IN_OWNER_ID_OFST 20
12066 #define	MC_CMD_INIT_RXQ_V4_IN_OWNER_ID_LEN 4
12067 /* The port ID associated with the v-adaptor which should contain this DMAQ. */
12068 #define	MC_CMD_INIT_RXQ_V4_IN_PORT_ID_OFST 24
12069 #define	MC_CMD_INIT_RXQ_V4_IN_PORT_ID_LEN 4
12070 /* 64-bit address of 4k of 4k-aligned host memory buffer */
12071 #define	MC_CMD_INIT_RXQ_V4_IN_DMA_ADDR_OFST 28
12072 #define	MC_CMD_INIT_RXQ_V4_IN_DMA_ADDR_LEN 8
12073 #define	MC_CMD_INIT_RXQ_V4_IN_DMA_ADDR_LO_OFST 28
12074 #define	MC_CMD_INIT_RXQ_V4_IN_DMA_ADDR_LO_LEN 4
12075 #define	MC_CMD_INIT_RXQ_V4_IN_DMA_ADDR_LO_LBN 224
12076 #define	MC_CMD_INIT_RXQ_V4_IN_DMA_ADDR_LO_WIDTH 32
12077 #define	MC_CMD_INIT_RXQ_V4_IN_DMA_ADDR_HI_OFST 32
12078 #define	MC_CMD_INIT_RXQ_V4_IN_DMA_ADDR_HI_LEN 4
12079 #define	MC_CMD_INIT_RXQ_V4_IN_DMA_ADDR_HI_LBN 256
12080 #define	MC_CMD_INIT_RXQ_V4_IN_DMA_ADDR_HI_WIDTH 32
12081 #define	MC_CMD_INIT_RXQ_V4_IN_DMA_ADDR_MINNUM 0
12082 #define	MC_CMD_INIT_RXQ_V4_IN_DMA_ADDR_MAXNUM 64
12083 #define	MC_CMD_INIT_RXQ_V4_IN_DMA_ADDR_MAXNUM_MCDI2 64
12084 /* Maximum length of packet to receive, if SNAPSHOT_MODE flag is set */
12085 #define	MC_CMD_INIT_RXQ_V4_IN_SNAPSHOT_LENGTH_OFST 540
12086 #define	MC_CMD_INIT_RXQ_V4_IN_SNAPSHOT_LENGTH_LEN 4
12087 /* The number of packet buffers that will be contained within each
12088  * EQUAL_STRIDE_SUPER_BUFFER format bucket supplied by the driver. This field
12089  * is ignored unless DMA_MODE == EQUAL_STRIDE_SUPER_BUFFER.
12090  */
12091 #define	MC_CMD_INIT_RXQ_V4_IN_ES_PACKET_BUFFERS_PER_BUCKET_OFST 544
12092 #define	MC_CMD_INIT_RXQ_V4_IN_ES_PACKET_BUFFERS_PER_BUCKET_LEN 4
12093 /* The length in bytes of the area in each packet buffer that can be written to
12094  * by the adapter. This is used to store the packet prefix and the packet
12095  * payload. This length does not include any end padding added by the driver.
12096  * This field is ignored unless DMA_MODE == EQUAL_STRIDE_SUPER_BUFFER.
12097  */
12098 #define	MC_CMD_INIT_RXQ_V4_IN_ES_MAX_DMA_LEN_OFST 548
12099 #define	MC_CMD_INIT_RXQ_V4_IN_ES_MAX_DMA_LEN_LEN 4
12100 /* The length in bytes of a single packet buffer within a
12101  * EQUAL_STRIDE_SUPER_BUFFER format bucket. This field is ignored unless
12102  * DMA_MODE == EQUAL_STRIDE_SUPER_BUFFER.
12103  */
12104 #define	MC_CMD_INIT_RXQ_V4_IN_ES_PACKET_STRIDE_OFST 552
12105 #define	MC_CMD_INIT_RXQ_V4_IN_ES_PACKET_STRIDE_LEN 4
12106 /* The maximum time in nanoseconds that the datapath will be backpressured if
12107  * there are no RX descriptors available. If the timeout is reached and there
12108  * are still no descriptors then the packet will be dropped. A timeout of 0
12109  * means the datapath will never be blocked. This field is ignored unless
12110  * DMA_MODE == EQUAL_STRIDE_SUPER_BUFFER.
12111  */
12112 #define	MC_CMD_INIT_RXQ_V4_IN_ES_HEAD_OF_LINE_BLOCK_TIMEOUT_OFST 556
12113 #define	MC_CMD_INIT_RXQ_V4_IN_ES_HEAD_OF_LINE_BLOCK_TIMEOUT_LEN 4
12114 /* V4 message data */
12115 #define	MC_CMD_INIT_RXQ_V4_IN_V4_DATA_OFST 560
12116 #define	MC_CMD_INIT_RXQ_V4_IN_V4_DATA_LEN 4
12117 /* Size in bytes of buffers attached to descriptors posted to this queue. Set
12118  * to zero if using this message on non-QDMA based platforms. Currently in
12119  * Riverhead there is a global limit of eight different buffer sizes across all
12120  * active queues. A 2KB and 4KB buffer is guaranteed to be available, but a
12121  * request for a different buffer size will fail if there are already eight
12122  * other buffer sizes in use. In future Riverhead this limit will go away and
12123  * any size will be accepted.
12124  */
12125 #define	MC_CMD_INIT_RXQ_V4_IN_BUFFER_SIZE_BYTES_OFST 560
12126 #define	MC_CMD_INIT_RXQ_V4_IN_BUFFER_SIZE_BYTES_LEN 4
12127 
12128 /* MC_CMD_INIT_RXQ_V5_IN msgrequest: INIT_RXQ request with ability to request a
12129  * different RX packet prefix
12130  */
12131 #define	MC_CMD_INIT_RXQ_V5_IN_LEN 568
12132 /* Size, in entries */
12133 #define	MC_CMD_INIT_RXQ_V5_IN_SIZE_OFST 0
12134 #define	MC_CMD_INIT_RXQ_V5_IN_SIZE_LEN 4
12135 /* The EVQ to send events to. This is an index originally specified to
12136  * INIT_EVQ. If DMA_MODE == PACKED_STREAM this must be equal to INSTANCE.
12137  */
12138 #define	MC_CMD_INIT_RXQ_V5_IN_TARGET_EVQ_OFST 4
12139 #define	MC_CMD_INIT_RXQ_V5_IN_TARGET_EVQ_LEN 4
12140 /* The value to put in the event data. Check hardware spec. for valid range.
12141  * This field is ignored if DMA_MODE == EQUAL_STRIDE_SUPER_BUFFER or DMA_MODE
12142  * == PACKED_STREAM.
12143  */
12144 #define	MC_CMD_INIT_RXQ_V5_IN_LABEL_OFST 8
12145 #define	MC_CMD_INIT_RXQ_V5_IN_LABEL_LEN 4
12146 /* Desired instance. Must be set to a specific instance, which is a function
12147  * local queue index. The calling client must be the currently-assigned user of
12148  * this VI (see MC_CMD_SET_VI_USER).
12149  */
12150 #define	MC_CMD_INIT_RXQ_V5_IN_INSTANCE_OFST 12
12151 #define	MC_CMD_INIT_RXQ_V5_IN_INSTANCE_LEN 4
12152 /* There will be more flags here. */
12153 #define	MC_CMD_INIT_RXQ_V5_IN_FLAGS_OFST 16
12154 #define	MC_CMD_INIT_RXQ_V5_IN_FLAGS_LEN 4
12155 #define	MC_CMD_INIT_RXQ_V5_IN_FLAG_BUFF_MODE_OFST 16
12156 #define	MC_CMD_INIT_RXQ_V5_IN_FLAG_BUFF_MODE_LBN 0
12157 #define	MC_CMD_INIT_RXQ_V5_IN_FLAG_BUFF_MODE_WIDTH 1
12158 #define	MC_CMD_INIT_RXQ_V5_IN_FLAG_HDR_SPLIT_OFST 16
12159 #define	MC_CMD_INIT_RXQ_V5_IN_FLAG_HDR_SPLIT_LBN 1
12160 #define	MC_CMD_INIT_RXQ_V5_IN_FLAG_HDR_SPLIT_WIDTH 1
12161 #define	MC_CMD_INIT_RXQ_V5_IN_FLAG_TIMESTAMP_OFST 16
12162 #define	MC_CMD_INIT_RXQ_V5_IN_FLAG_TIMESTAMP_LBN 2
12163 #define	MC_CMD_INIT_RXQ_V5_IN_FLAG_TIMESTAMP_WIDTH 1
12164 #define	MC_CMD_INIT_RXQ_V5_IN_CRC_MODE_OFST 16
12165 #define	MC_CMD_INIT_RXQ_V5_IN_CRC_MODE_LBN 3
12166 #define	MC_CMD_INIT_RXQ_V5_IN_CRC_MODE_WIDTH 4
12167 #define	MC_CMD_INIT_RXQ_V5_IN_FLAG_CHAIN_OFST 16
12168 #define	MC_CMD_INIT_RXQ_V5_IN_FLAG_CHAIN_LBN 7
12169 #define	MC_CMD_INIT_RXQ_V5_IN_FLAG_CHAIN_WIDTH 1
12170 #define	MC_CMD_INIT_RXQ_V5_IN_FLAG_PREFIX_OFST 16
12171 #define	MC_CMD_INIT_RXQ_V5_IN_FLAG_PREFIX_LBN 8
12172 #define	MC_CMD_INIT_RXQ_V5_IN_FLAG_PREFIX_WIDTH 1
12173 #define	MC_CMD_INIT_RXQ_V5_IN_FLAG_DISABLE_SCATTER_OFST 16
12174 #define	MC_CMD_INIT_RXQ_V5_IN_FLAG_DISABLE_SCATTER_LBN 9
12175 #define	MC_CMD_INIT_RXQ_V5_IN_FLAG_DISABLE_SCATTER_WIDTH 1
12176 #define	MC_CMD_INIT_RXQ_V5_IN_DMA_MODE_OFST 16
12177 #define	MC_CMD_INIT_RXQ_V5_IN_DMA_MODE_LBN 10
12178 #define	MC_CMD_INIT_RXQ_V5_IN_DMA_MODE_WIDTH 4
12179 /* enum: One packet per descriptor (for normal networking) */
12180 #define	MC_CMD_INIT_RXQ_V5_IN_SINGLE_PACKET 0x0
12181 /* enum: Pack multiple packets into large descriptors (for SolarCapture) */
12182 #define	MC_CMD_INIT_RXQ_V5_IN_PACKED_STREAM 0x1
12183 /* enum: Pack multiple packets into large descriptors using the format designed
12184  * to maximise packet rate. This mode uses 1 "bucket" per descriptor with
12185  * multiple fixed-size packet buffers within each bucket. For a full
12186  * description see SF-119419-TC. This mode is only supported by "dpdk" datapath
12187  * firmware.
12188  */
12189 #define	MC_CMD_INIT_RXQ_V5_IN_EQUAL_STRIDE_SUPER_BUFFER 0x2
12190 /* enum: Deprecated name for EQUAL_STRIDE_SUPER_BUFFER. */
12191 #define	MC_CMD_INIT_RXQ_V5_IN_EQUAL_STRIDE_PACKED_STREAM 0x2
12192 #define	MC_CMD_INIT_RXQ_V5_IN_FLAG_SNAPSHOT_MODE_OFST 16
12193 #define	MC_CMD_INIT_RXQ_V5_IN_FLAG_SNAPSHOT_MODE_LBN 14
12194 #define	MC_CMD_INIT_RXQ_V5_IN_FLAG_SNAPSHOT_MODE_WIDTH 1
12195 #define	MC_CMD_INIT_RXQ_V5_IN_PACKED_STREAM_BUFF_SIZE_OFST 16
12196 #define	MC_CMD_INIT_RXQ_V5_IN_PACKED_STREAM_BUFF_SIZE_LBN 15
12197 #define	MC_CMD_INIT_RXQ_V5_IN_PACKED_STREAM_BUFF_SIZE_WIDTH 3
12198 #define	MC_CMD_INIT_RXQ_V5_IN_PS_BUFF_1M 0x0 /* enum */
12199 #define	MC_CMD_INIT_RXQ_V5_IN_PS_BUFF_512K 0x1 /* enum */
12200 #define	MC_CMD_INIT_RXQ_V5_IN_PS_BUFF_256K 0x2 /* enum */
12201 #define	MC_CMD_INIT_RXQ_V5_IN_PS_BUFF_128K 0x3 /* enum */
12202 #define	MC_CMD_INIT_RXQ_V5_IN_PS_BUFF_64K 0x4 /* enum */
12203 #define	MC_CMD_INIT_RXQ_V5_IN_FLAG_WANT_OUTER_CLASSES_OFST 16
12204 #define	MC_CMD_INIT_RXQ_V5_IN_FLAG_WANT_OUTER_CLASSES_LBN 18
12205 #define	MC_CMD_INIT_RXQ_V5_IN_FLAG_WANT_OUTER_CLASSES_WIDTH 1
12206 #define	MC_CMD_INIT_RXQ_V5_IN_FLAG_FORCE_EV_MERGING_OFST 16
12207 #define	MC_CMD_INIT_RXQ_V5_IN_FLAG_FORCE_EV_MERGING_LBN 19
12208 #define	MC_CMD_INIT_RXQ_V5_IN_FLAG_FORCE_EV_MERGING_WIDTH 1
12209 #define	MC_CMD_INIT_RXQ_V5_IN_FLAG_NO_CONT_EV_OFST 16
12210 #define	MC_CMD_INIT_RXQ_V5_IN_FLAG_NO_CONT_EV_LBN 20
12211 #define	MC_CMD_INIT_RXQ_V5_IN_FLAG_NO_CONT_EV_WIDTH 1
12212 /* Owner ID to use if in buffer mode (zero if physical) */
12213 #define	MC_CMD_INIT_RXQ_V5_IN_OWNER_ID_OFST 20
12214 #define	MC_CMD_INIT_RXQ_V5_IN_OWNER_ID_LEN 4
12215 /* The port ID associated with the v-adaptor which should contain this DMAQ. */
12216 #define	MC_CMD_INIT_RXQ_V5_IN_PORT_ID_OFST 24
12217 #define	MC_CMD_INIT_RXQ_V5_IN_PORT_ID_LEN 4
12218 /* 64-bit address of 4k of 4k-aligned host memory buffer */
12219 #define	MC_CMD_INIT_RXQ_V5_IN_DMA_ADDR_OFST 28
12220 #define	MC_CMD_INIT_RXQ_V5_IN_DMA_ADDR_LEN 8
12221 #define	MC_CMD_INIT_RXQ_V5_IN_DMA_ADDR_LO_OFST 28
12222 #define	MC_CMD_INIT_RXQ_V5_IN_DMA_ADDR_LO_LEN 4
12223 #define	MC_CMD_INIT_RXQ_V5_IN_DMA_ADDR_LO_LBN 224
12224 #define	MC_CMD_INIT_RXQ_V5_IN_DMA_ADDR_LO_WIDTH 32
12225 #define	MC_CMD_INIT_RXQ_V5_IN_DMA_ADDR_HI_OFST 32
12226 #define	MC_CMD_INIT_RXQ_V5_IN_DMA_ADDR_HI_LEN 4
12227 #define	MC_CMD_INIT_RXQ_V5_IN_DMA_ADDR_HI_LBN 256
12228 #define	MC_CMD_INIT_RXQ_V5_IN_DMA_ADDR_HI_WIDTH 32
12229 #define	MC_CMD_INIT_RXQ_V5_IN_DMA_ADDR_MINNUM 0
12230 #define	MC_CMD_INIT_RXQ_V5_IN_DMA_ADDR_MAXNUM 64
12231 #define	MC_CMD_INIT_RXQ_V5_IN_DMA_ADDR_MAXNUM_MCDI2 64
12232 /* Maximum length of packet to receive, if SNAPSHOT_MODE flag is set */
12233 #define	MC_CMD_INIT_RXQ_V5_IN_SNAPSHOT_LENGTH_OFST 540
12234 #define	MC_CMD_INIT_RXQ_V5_IN_SNAPSHOT_LENGTH_LEN 4
12235 /* The number of packet buffers that will be contained within each
12236  * EQUAL_STRIDE_SUPER_BUFFER format bucket supplied by the driver. This field
12237  * is ignored unless DMA_MODE == EQUAL_STRIDE_SUPER_BUFFER.
12238  */
12239 #define	MC_CMD_INIT_RXQ_V5_IN_ES_PACKET_BUFFERS_PER_BUCKET_OFST 544
12240 #define	MC_CMD_INIT_RXQ_V5_IN_ES_PACKET_BUFFERS_PER_BUCKET_LEN 4
12241 /* The length in bytes of the area in each packet buffer that can be written to
12242  * by the adapter. This is used to store the packet prefix and the packet
12243  * payload. This length does not include any end padding added by the driver.
12244  * This field is ignored unless DMA_MODE == EQUAL_STRIDE_SUPER_BUFFER.
12245  */
12246 #define	MC_CMD_INIT_RXQ_V5_IN_ES_MAX_DMA_LEN_OFST 548
12247 #define	MC_CMD_INIT_RXQ_V5_IN_ES_MAX_DMA_LEN_LEN 4
12248 /* The length in bytes of a single packet buffer within a
12249  * EQUAL_STRIDE_SUPER_BUFFER format bucket. This field is ignored unless
12250  * DMA_MODE == EQUAL_STRIDE_SUPER_BUFFER.
12251  */
12252 #define	MC_CMD_INIT_RXQ_V5_IN_ES_PACKET_STRIDE_OFST 552
12253 #define	MC_CMD_INIT_RXQ_V5_IN_ES_PACKET_STRIDE_LEN 4
12254 /* The maximum time in nanoseconds that the datapath will be backpressured if
12255  * there are no RX descriptors available. If the timeout is reached and there
12256  * are still no descriptors then the packet will be dropped. A timeout of 0
12257  * means the datapath will never be blocked. This field is ignored unless
12258  * DMA_MODE == EQUAL_STRIDE_SUPER_BUFFER.
12259  */
12260 #define	MC_CMD_INIT_RXQ_V5_IN_ES_HEAD_OF_LINE_BLOCK_TIMEOUT_OFST 556
12261 #define	MC_CMD_INIT_RXQ_V5_IN_ES_HEAD_OF_LINE_BLOCK_TIMEOUT_LEN 4
12262 /* V4 message data */
12263 #define	MC_CMD_INIT_RXQ_V5_IN_V4_DATA_OFST 560
12264 #define	MC_CMD_INIT_RXQ_V5_IN_V4_DATA_LEN 4
12265 /* Size in bytes of buffers attached to descriptors posted to this queue. Set
12266  * to zero if using this message on non-QDMA based platforms. Currently in
12267  * Riverhead there is a global limit of eight different buffer sizes across all
12268  * active queues. A 2KB and 4KB buffer is guaranteed to be available, but a
12269  * request for a different buffer size will fail if there are already eight
12270  * other buffer sizes in use. In future Riverhead this limit will go away and
12271  * any size will be accepted.
12272  */
12273 #define	MC_CMD_INIT_RXQ_V5_IN_BUFFER_SIZE_BYTES_OFST 560
12274 #define	MC_CMD_INIT_RXQ_V5_IN_BUFFER_SIZE_BYTES_LEN 4
12275 /* Prefix id for the RX prefix format to use on packets delivered this queue.
12276  * Zero is always a valid prefix id and means the default prefix format
12277  * documented for the platform. Other prefix ids can be obtained by calling
12278  * MC_CMD_GET_RX_PREFIX_ID with a requested set of prefix fields.
12279  */
12280 #define	MC_CMD_INIT_RXQ_V5_IN_RX_PREFIX_ID_OFST 564
12281 #define	MC_CMD_INIT_RXQ_V5_IN_RX_PREFIX_ID_LEN 4
12282 
12283 /* MC_CMD_INIT_RXQ_OUT msgresponse */
12284 #define	MC_CMD_INIT_RXQ_OUT_LEN 0
12285 
12286 /* MC_CMD_INIT_RXQ_EXT_OUT msgresponse */
12287 #define	MC_CMD_INIT_RXQ_EXT_OUT_LEN 0
12288 
12289 /* MC_CMD_INIT_RXQ_V3_OUT msgresponse */
12290 #define	MC_CMD_INIT_RXQ_V3_OUT_LEN 0
12291 
12292 /* MC_CMD_INIT_RXQ_V4_OUT msgresponse */
12293 #define	MC_CMD_INIT_RXQ_V4_OUT_LEN 0
12294 
12295 /* MC_CMD_INIT_RXQ_V5_OUT msgresponse */
12296 #define	MC_CMD_INIT_RXQ_V5_OUT_LEN 0
12297 
12298 
12299 /***********************************/
12300 /* MC_CMD_INIT_TXQ
12301  */
12302 #define	MC_CMD_INIT_TXQ 0x82
12303 #define	MC_CMD_INIT_TXQ_MSGSET 0x82
12304 #undef	MC_CMD_0x82_PRIVILEGE_CTG
12305 
12306 #define	MC_CMD_0x82_PRIVILEGE_CTG SRIOV_CTG_GENERAL
12307 
12308 /* MC_CMD_INIT_TXQ_IN msgrequest: Legacy INIT_TXQ request. Use extended version
12309  * in new code.
12310  */
12311 #define	MC_CMD_INIT_TXQ_IN_LENMIN 36
12312 #define	MC_CMD_INIT_TXQ_IN_LENMAX 252
12313 #define	MC_CMD_INIT_TXQ_IN_LENMAX_MCDI2 1020
12314 #define	MC_CMD_INIT_TXQ_IN_LEN(num) (28+8*(num))
12315 #define	MC_CMD_INIT_TXQ_IN_DMA_ADDR_NUM(len) (((len)-28)/8)
12316 /* Size, in entries */
12317 #define	MC_CMD_INIT_TXQ_IN_SIZE_OFST 0
12318 #define	MC_CMD_INIT_TXQ_IN_SIZE_LEN 4
12319 /* The EVQ to send events to. This is an index originally specified to
12320  * INIT_EVQ.
12321  */
12322 #define	MC_CMD_INIT_TXQ_IN_TARGET_EVQ_OFST 4
12323 #define	MC_CMD_INIT_TXQ_IN_TARGET_EVQ_LEN 4
12324 /* The value to put in the event data. Check hardware spec. for valid range. */
12325 #define	MC_CMD_INIT_TXQ_IN_LABEL_OFST 8
12326 #define	MC_CMD_INIT_TXQ_IN_LABEL_LEN 4
12327 /* Desired instance. Must be set to a specific instance, which is a function
12328  * local queue index. The calling client must be the currently-assigned user of
12329  * this VI (see MC_CMD_SET_VI_USER).
12330  */
12331 #define	MC_CMD_INIT_TXQ_IN_INSTANCE_OFST 12
12332 #define	MC_CMD_INIT_TXQ_IN_INSTANCE_LEN 4
12333 /* There will be more flags here. */
12334 #define	MC_CMD_INIT_TXQ_IN_FLAGS_OFST 16
12335 #define	MC_CMD_INIT_TXQ_IN_FLAGS_LEN 4
12336 #define	MC_CMD_INIT_TXQ_IN_FLAG_BUFF_MODE_OFST 16
12337 #define	MC_CMD_INIT_TXQ_IN_FLAG_BUFF_MODE_LBN 0
12338 #define	MC_CMD_INIT_TXQ_IN_FLAG_BUFF_MODE_WIDTH 1
12339 #define	MC_CMD_INIT_TXQ_IN_FLAG_IP_CSUM_DIS_OFST 16
12340 #define	MC_CMD_INIT_TXQ_IN_FLAG_IP_CSUM_DIS_LBN 1
12341 #define	MC_CMD_INIT_TXQ_IN_FLAG_IP_CSUM_DIS_WIDTH 1
12342 #define	MC_CMD_INIT_TXQ_IN_FLAG_TCP_CSUM_DIS_OFST 16
12343 #define	MC_CMD_INIT_TXQ_IN_FLAG_TCP_CSUM_DIS_LBN 2
12344 #define	MC_CMD_INIT_TXQ_IN_FLAG_TCP_CSUM_DIS_WIDTH 1
12345 #define	MC_CMD_INIT_TXQ_IN_FLAG_TCP_UDP_ONLY_OFST 16
12346 #define	MC_CMD_INIT_TXQ_IN_FLAG_TCP_UDP_ONLY_LBN 3
12347 #define	MC_CMD_INIT_TXQ_IN_FLAG_TCP_UDP_ONLY_WIDTH 1
12348 #define	MC_CMD_INIT_TXQ_IN_CRC_MODE_OFST 16
12349 #define	MC_CMD_INIT_TXQ_IN_CRC_MODE_LBN 4
12350 #define	MC_CMD_INIT_TXQ_IN_CRC_MODE_WIDTH 4
12351 #define	MC_CMD_INIT_TXQ_IN_FLAG_TIMESTAMP_OFST 16
12352 #define	MC_CMD_INIT_TXQ_IN_FLAG_TIMESTAMP_LBN 8
12353 #define	MC_CMD_INIT_TXQ_IN_FLAG_TIMESTAMP_WIDTH 1
12354 #define	MC_CMD_INIT_TXQ_IN_FLAG_PACER_BYPASS_OFST 16
12355 #define	MC_CMD_INIT_TXQ_IN_FLAG_PACER_BYPASS_LBN 9
12356 #define	MC_CMD_INIT_TXQ_IN_FLAG_PACER_BYPASS_WIDTH 1
12357 #define	MC_CMD_INIT_TXQ_IN_FLAG_INNER_IP_CSUM_EN_OFST 16
12358 #define	MC_CMD_INIT_TXQ_IN_FLAG_INNER_IP_CSUM_EN_LBN 10
12359 #define	MC_CMD_INIT_TXQ_IN_FLAG_INNER_IP_CSUM_EN_WIDTH 1
12360 #define	MC_CMD_INIT_TXQ_IN_FLAG_INNER_TCP_CSUM_EN_OFST 16
12361 #define	MC_CMD_INIT_TXQ_IN_FLAG_INNER_TCP_CSUM_EN_LBN 11
12362 #define	MC_CMD_INIT_TXQ_IN_FLAG_INNER_TCP_CSUM_EN_WIDTH 1
12363 /* Owner ID to use if in buffer mode (zero if physical) */
12364 #define	MC_CMD_INIT_TXQ_IN_OWNER_ID_OFST 20
12365 #define	MC_CMD_INIT_TXQ_IN_OWNER_ID_LEN 4
12366 /* The port ID associated with the v-adaptor which should contain this DMAQ. */
12367 #define	MC_CMD_INIT_TXQ_IN_PORT_ID_OFST 24
12368 #define	MC_CMD_INIT_TXQ_IN_PORT_ID_LEN 4
12369 /* 64-bit address of 4k of 4k-aligned host memory buffer */
12370 #define	MC_CMD_INIT_TXQ_IN_DMA_ADDR_OFST 28
12371 #define	MC_CMD_INIT_TXQ_IN_DMA_ADDR_LEN 8
12372 #define	MC_CMD_INIT_TXQ_IN_DMA_ADDR_LO_OFST 28
12373 #define	MC_CMD_INIT_TXQ_IN_DMA_ADDR_LO_LEN 4
12374 #define	MC_CMD_INIT_TXQ_IN_DMA_ADDR_LO_LBN 224
12375 #define	MC_CMD_INIT_TXQ_IN_DMA_ADDR_LO_WIDTH 32
12376 #define	MC_CMD_INIT_TXQ_IN_DMA_ADDR_HI_OFST 32
12377 #define	MC_CMD_INIT_TXQ_IN_DMA_ADDR_HI_LEN 4
12378 #define	MC_CMD_INIT_TXQ_IN_DMA_ADDR_HI_LBN 256
12379 #define	MC_CMD_INIT_TXQ_IN_DMA_ADDR_HI_WIDTH 32
12380 #define	MC_CMD_INIT_TXQ_IN_DMA_ADDR_MINNUM 1
12381 #define	MC_CMD_INIT_TXQ_IN_DMA_ADDR_MAXNUM 28
12382 #define	MC_CMD_INIT_TXQ_IN_DMA_ADDR_MAXNUM_MCDI2 124
12383 
12384 /* MC_CMD_INIT_TXQ_EXT_IN msgrequest: Extended INIT_TXQ with additional mode
12385  * flags
12386  */
12387 #define	MC_CMD_INIT_TXQ_EXT_IN_LEN 544
12388 /* Size, in entries */
12389 #define	MC_CMD_INIT_TXQ_EXT_IN_SIZE_OFST 0
12390 #define	MC_CMD_INIT_TXQ_EXT_IN_SIZE_LEN 4
12391 /* The EVQ to send events to. This is an index originally specified to
12392  * INIT_EVQ.
12393  */
12394 #define	MC_CMD_INIT_TXQ_EXT_IN_TARGET_EVQ_OFST 4
12395 #define	MC_CMD_INIT_TXQ_EXT_IN_TARGET_EVQ_LEN 4
12396 /* The value to put in the event data. Check hardware spec. for valid range. */
12397 #define	MC_CMD_INIT_TXQ_EXT_IN_LABEL_OFST 8
12398 #define	MC_CMD_INIT_TXQ_EXT_IN_LABEL_LEN 4
12399 /* Desired instance. Must be set to a specific instance, which is a function
12400  * local queue index. The calling client must be the currently-assigned user of
12401  * this VI (see MC_CMD_SET_VI_USER).
12402  */
12403 #define	MC_CMD_INIT_TXQ_EXT_IN_INSTANCE_OFST 12
12404 #define	MC_CMD_INIT_TXQ_EXT_IN_INSTANCE_LEN 4
12405 /* There will be more flags here. */
12406 #define	MC_CMD_INIT_TXQ_EXT_IN_FLAGS_OFST 16
12407 #define	MC_CMD_INIT_TXQ_EXT_IN_FLAGS_LEN 4
12408 #define	MC_CMD_INIT_TXQ_EXT_IN_FLAG_BUFF_MODE_OFST 16
12409 #define	MC_CMD_INIT_TXQ_EXT_IN_FLAG_BUFF_MODE_LBN 0
12410 #define	MC_CMD_INIT_TXQ_EXT_IN_FLAG_BUFF_MODE_WIDTH 1
12411 #define	MC_CMD_INIT_TXQ_EXT_IN_FLAG_IP_CSUM_DIS_OFST 16
12412 #define	MC_CMD_INIT_TXQ_EXT_IN_FLAG_IP_CSUM_DIS_LBN 1
12413 #define	MC_CMD_INIT_TXQ_EXT_IN_FLAG_IP_CSUM_DIS_WIDTH 1
12414 #define	MC_CMD_INIT_TXQ_EXT_IN_FLAG_TCP_CSUM_DIS_OFST 16
12415 #define	MC_CMD_INIT_TXQ_EXT_IN_FLAG_TCP_CSUM_DIS_LBN 2
12416 #define	MC_CMD_INIT_TXQ_EXT_IN_FLAG_TCP_CSUM_DIS_WIDTH 1
12417 #define	MC_CMD_INIT_TXQ_EXT_IN_FLAG_TCP_UDP_ONLY_OFST 16
12418 #define	MC_CMD_INIT_TXQ_EXT_IN_FLAG_TCP_UDP_ONLY_LBN 3
12419 #define	MC_CMD_INIT_TXQ_EXT_IN_FLAG_TCP_UDP_ONLY_WIDTH 1
12420 #define	MC_CMD_INIT_TXQ_EXT_IN_CRC_MODE_OFST 16
12421 #define	MC_CMD_INIT_TXQ_EXT_IN_CRC_MODE_LBN 4
12422 #define	MC_CMD_INIT_TXQ_EXT_IN_CRC_MODE_WIDTH 4
12423 #define	MC_CMD_INIT_TXQ_EXT_IN_FLAG_TIMESTAMP_OFST 16
12424 #define	MC_CMD_INIT_TXQ_EXT_IN_FLAG_TIMESTAMP_LBN 8
12425 #define	MC_CMD_INIT_TXQ_EXT_IN_FLAG_TIMESTAMP_WIDTH 1
12426 #define	MC_CMD_INIT_TXQ_EXT_IN_FLAG_PACER_BYPASS_OFST 16
12427 #define	MC_CMD_INIT_TXQ_EXT_IN_FLAG_PACER_BYPASS_LBN 9
12428 #define	MC_CMD_INIT_TXQ_EXT_IN_FLAG_PACER_BYPASS_WIDTH 1
12429 #define	MC_CMD_INIT_TXQ_EXT_IN_FLAG_INNER_IP_CSUM_EN_OFST 16
12430 #define	MC_CMD_INIT_TXQ_EXT_IN_FLAG_INNER_IP_CSUM_EN_LBN 10
12431 #define	MC_CMD_INIT_TXQ_EXT_IN_FLAG_INNER_IP_CSUM_EN_WIDTH 1
12432 #define	MC_CMD_INIT_TXQ_EXT_IN_FLAG_INNER_TCP_CSUM_EN_OFST 16
12433 #define	MC_CMD_INIT_TXQ_EXT_IN_FLAG_INNER_TCP_CSUM_EN_LBN 11
12434 #define	MC_CMD_INIT_TXQ_EXT_IN_FLAG_INNER_TCP_CSUM_EN_WIDTH 1
12435 #define	MC_CMD_INIT_TXQ_EXT_IN_FLAG_TSOV2_EN_OFST 16
12436 #define	MC_CMD_INIT_TXQ_EXT_IN_FLAG_TSOV2_EN_LBN 12
12437 #define	MC_CMD_INIT_TXQ_EXT_IN_FLAG_TSOV2_EN_WIDTH 1
12438 #define	MC_CMD_INIT_TXQ_EXT_IN_FLAG_CTPIO_OFST 16
12439 #define	MC_CMD_INIT_TXQ_EXT_IN_FLAG_CTPIO_LBN 13
12440 #define	MC_CMD_INIT_TXQ_EXT_IN_FLAG_CTPIO_WIDTH 1
12441 #define	MC_CMD_INIT_TXQ_EXT_IN_FLAG_CTPIO_UTHRESH_OFST 16
12442 #define	MC_CMD_INIT_TXQ_EXT_IN_FLAG_CTPIO_UTHRESH_LBN 14
12443 #define	MC_CMD_INIT_TXQ_EXT_IN_FLAG_CTPIO_UTHRESH_WIDTH 1
12444 #define	MC_CMD_INIT_TXQ_EXT_IN_FLAG_M2M_D2C_OFST 16
12445 #define	MC_CMD_INIT_TXQ_EXT_IN_FLAG_M2M_D2C_LBN 15
12446 #define	MC_CMD_INIT_TXQ_EXT_IN_FLAG_M2M_D2C_WIDTH 1
12447 #define	MC_CMD_INIT_TXQ_EXT_IN_FLAG_DESC_PROXY_OFST 16
12448 #define	MC_CMD_INIT_TXQ_EXT_IN_FLAG_DESC_PROXY_LBN 16
12449 #define	MC_CMD_INIT_TXQ_EXT_IN_FLAG_DESC_PROXY_WIDTH 1
12450 #define	MC_CMD_INIT_TXQ_EXT_IN_FLAG_ABS_TARGET_EVQ_OFST 16
12451 #define	MC_CMD_INIT_TXQ_EXT_IN_FLAG_ABS_TARGET_EVQ_LBN 17
12452 #define	MC_CMD_INIT_TXQ_EXT_IN_FLAG_ABS_TARGET_EVQ_WIDTH 1
12453 /* Owner ID to use if in buffer mode (zero if physical) */
12454 #define	MC_CMD_INIT_TXQ_EXT_IN_OWNER_ID_OFST 20
12455 #define	MC_CMD_INIT_TXQ_EXT_IN_OWNER_ID_LEN 4
12456 /* The port ID associated with the v-adaptor which should contain this DMAQ. */
12457 #define	MC_CMD_INIT_TXQ_EXT_IN_PORT_ID_OFST 24
12458 #define	MC_CMD_INIT_TXQ_EXT_IN_PORT_ID_LEN 4
12459 /* 64-bit address of 4k of 4k-aligned host memory buffer */
12460 #define	MC_CMD_INIT_TXQ_EXT_IN_DMA_ADDR_OFST 28
12461 #define	MC_CMD_INIT_TXQ_EXT_IN_DMA_ADDR_LEN 8
12462 #define	MC_CMD_INIT_TXQ_EXT_IN_DMA_ADDR_LO_OFST 28
12463 #define	MC_CMD_INIT_TXQ_EXT_IN_DMA_ADDR_LO_LEN 4
12464 #define	MC_CMD_INIT_TXQ_EXT_IN_DMA_ADDR_LO_LBN 224
12465 #define	MC_CMD_INIT_TXQ_EXT_IN_DMA_ADDR_LO_WIDTH 32
12466 #define	MC_CMD_INIT_TXQ_EXT_IN_DMA_ADDR_HI_OFST 32
12467 #define	MC_CMD_INIT_TXQ_EXT_IN_DMA_ADDR_HI_LEN 4
12468 #define	MC_CMD_INIT_TXQ_EXT_IN_DMA_ADDR_HI_LBN 256
12469 #define	MC_CMD_INIT_TXQ_EXT_IN_DMA_ADDR_HI_WIDTH 32
12470 #define	MC_CMD_INIT_TXQ_EXT_IN_DMA_ADDR_MINNUM 0
12471 #define	MC_CMD_INIT_TXQ_EXT_IN_DMA_ADDR_MAXNUM 64
12472 #define	MC_CMD_INIT_TXQ_EXT_IN_DMA_ADDR_MAXNUM_MCDI2 64
12473 /* Flags related to Qbb flow control mode. */
12474 #define	MC_CMD_INIT_TXQ_EXT_IN_QBB_FLAGS_OFST 540
12475 #define	MC_CMD_INIT_TXQ_EXT_IN_QBB_FLAGS_LEN 4
12476 #define	MC_CMD_INIT_TXQ_EXT_IN_QBB_ENABLE_OFST 540
12477 #define	MC_CMD_INIT_TXQ_EXT_IN_QBB_ENABLE_LBN 0
12478 #define	MC_CMD_INIT_TXQ_EXT_IN_QBB_ENABLE_WIDTH 1
12479 #define	MC_CMD_INIT_TXQ_EXT_IN_QBB_PRIORITY_OFST 540
12480 #define	MC_CMD_INIT_TXQ_EXT_IN_QBB_PRIORITY_LBN 1
12481 #define	MC_CMD_INIT_TXQ_EXT_IN_QBB_PRIORITY_WIDTH 3
12482 
12483 /* MC_CMD_INIT_TXQ_OUT msgresponse */
12484 #define	MC_CMD_INIT_TXQ_OUT_LEN 0
12485 
12486 
12487 /***********************************/
12488 /* MC_CMD_FINI_EVQ
12489  * Teardown an EVQ.
12490  *
12491  * All DMAQs or EVQs that point to the EVQ to tear down must be torn down first
12492  * or the operation will fail with EBUSY
12493  */
12494 #define	MC_CMD_FINI_EVQ 0x83
12495 #define	MC_CMD_FINI_EVQ_MSGSET 0x83
12496 #undef	MC_CMD_0x83_PRIVILEGE_CTG
12497 
12498 #define	MC_CMD_0x83_PRIVILEGE_CTG SRIOV_CTG_GENERAL
12499 
12500 /* MC_CMD_FINI_EVQ_IN msgrequest */
12501 #define	MC_CMD_FINI_EVQ_IN_LEN 4
12502 /* Instance of EVQ to destroy. Should be the same instance as that previously
12503  * passed to INIT_EVQ
12504  */
12505 #define	MC_CMD_FINI_EVQ_IN_INSTANCE_OFST 0
12506 #define	MC_CMD_FINI_EVQ_IN_INSTANCE_LEN 4
12507 
12508 /* MC_CMD_FINI_EVQ_OUT msgresponse */
12509 #define	MC_CMD_FINI_EVQ_OUT_LEN 0
12510 
12511 
12512 /***********************************/
12513 /* MC_CMD_FINI_RXQ
12514  * Teardown a RXQ.
12515  */
12516 #define	MC_CMD_FINI_RXQ 0x84
12517 #define	MC_CMD_FINI_RXQ_MSGSET 0x84
12518 #undef	MC_CMD_0x84_PRIVILEGE_CTG
12519 
12520 #define	MC_CMD_0x84_PRIVILEGE_CTG SRIOV_CTG_GENERAL
12521 
12522 /* MC_CMD_FINI_RXQ_IN msgrequest */
12523 #define	MC_CMD_FINI_RXQ_IN_LEN 4
12524 /* Instance of RXQ to destroy */
12525 #define	MC_CMD_FINI_RXQ_IN_INSTANCE_OFST 0
12526 #define	MC_CMD_FINI_RXQ_IN_INSTANCE_LEN 4
12527 
12528 /* MC_CMD_FINI_RXQ_OUT msgresponse */
12529 #define	MC_CMD_FINI_RXQ_OUT_LEN 0
12530 
12531 
12532 /***********************************/
12533 /* MC_CMD_FINI_TXQ
12534  * Teardown a TXQ.
12535  */
12536 #define	MC_CMD_FINI_TXQ 0x85
12537 #define	MC_CMD_FINI_TXQ_MSGSET 0x85
12538 #undef	MC_CMD_0x85_PRIVILEGE_CTG
12539 
12540 #define	MC_CMD_0x85_PRIVILEGE_CTG SRIOV_CTG_GENERAL
12541 
12542 /* MC_CMD_FINI_TXQ_IN msgrequest */
12543 #define	MC_CMD_FINI_TXQ_IN_LEN 4
12544 /* Instance of TXQ to destroy */
12545 #define	MC_CMD_FINI_TXQ_IN_INSTANCE_OFST 0
12546 #define	MC_CMD_FINI_TXQ_IN_INSTANCE_LEN 4
12547 
12548 /* MC_CMD_FINI_TXQ_OUT msgresponse */
12549 #define	MC_CMD_FINI_TXQ_OUT_LEN 0
12550 
12551 
12552 /***********************************/
12553 /* MC_CMD_DRIVER_EVENT
12554  * Generate an event on an EVQ belonging to the function issuing the command.
12555  */
12556 #define	MC_CMD_DRIVER_EVENT 0x86
12557 #define	MC_CMD_DRIVER_EVENT_MSGSET 0x86
12558 #undef	MC_CMD_0x86_PRIVILEGE_CTG
12559 
12560 #define	MC_CMD_0x86_PRIVILEGE_CTG SRIOV_CTG_GENERAL
12561 
12562 /* MC_CMD_DRIVER_EVENT_IN msgrequest */
12563 #define	MC_CMD_DRIVER_EVENT_IN_LEN 12
12564 /* Handle of target EVQ */
12565 #define	MC_CMD_DRIVER_EVENT_IN_EVQ_OFST 0
12566 #define	MC_CMD_DRIVER_EVENT_IN_EVQ_LEN 4
12567 /* Bits 0 - 63 of event */
12568 #define	MC_CMD_DRIVER_EVENT_IN_DATA_OFST 4
12569 #define	MC_CMD_DRIVER_EVENT_IN_DATA_LEN 8
12570 #define	MC_CMD_DRIVER_EVENT_IN_DATA_LO_OFST 4
12571 #define	MC_CMD_DRIVER_EVENT_IN_DATA_LO_LEN 4
12572 #define	MC_CMD_DRIVER_EVENT_IN_DATA_LO_LBN 32
12573 #define	MC_CMD_DRIVER_EVENT_IN_DATA_LO_WIDTH 32
12574 #define	MC_CMD_DRIVER_EVENT_IN_DATA_HI_OFST 8
12575 #define	MC_CMD_DRIVER_EVENT_IN_DATA_HI_LEN 4
12576 #define	MC_CMD_DRIVER_EVENT_IN_DATA_HI_LBN 64
12577 #define	MC_CMD_DRIVER_EVENT_IN_DATA_HI_WIDTH 32
12578 
12579 /* MC_CMD_DRIVER_EVENT_OUT msgresponse */
12580 #define	MC_CMD_DRIVER_EVENT_OUT_LEN 0
12581 
12582 
12583 /***********************************/
12584 /* MC_CMD_PROXY_CMD
12585  * Execute an arbitrary MCDI command on behalf of a different function, subject
12586  * to security restrictions. The command to be proxied follows immediately
12587  * afterward in the host buffer (or on the UART). This command supercedes
12588  * MC_CMD_SET_FUNC, which remains available for Siena but now deprecated.
12589  */
12590 #define	MC_CMD_PROXY_CMD 0x5b
12591 #define	MC_CMD_PROXY_CMD_MSGSET 0x5b
12592 #undef	MC_CMD_0x5b_PRIVILEGE_CTG
12593 
12594 #define	MC_CMD_0x5b_PRIVILEGE_CTG SRIOV_CTG_ADMIN
12595 
12596 /* MC_CMD_PROXY_CMD_IN msgrequest */
12597 #define	MC_CMD_PROXY_CMD_IN_LEN 4
12598 /* The handle of the target function. */
12599 #define	MC_CMD_PROXY_CMD_IN_TARGET_OFST 0
12600 #define	MC_CMD_PROXY_CMD_IN_TARGET_LEN 4
12601 #define	MC_CMD_PROXY_CMD_IN_TARGET_PF_OFST 0
12602 #define	MC_CMD_PROXY_CMD_IN_TARGET_PF_LBN 0
12603 #define	MC_CMD_PROXY_CMD_IN_TARGET_PF_WIDTH 16
12604 #define	MC_CMD_PROXY_CMD_IN_TARGET_VF_OFST 0
12605 #define	MC_CMD_PROXY_CMD_IN_TARGET_VF_LBN 16
12606 #define	MC_CMD_PROXY_CMD_IN_TARGET_VF_WIDTH 16
12607 #define	MC_CMD_PROXY_CMD_IN_VF_NULL 0xffff /* enum */
12608 
12609 /* MC_CMD_PROXY_CMD_OUT msgresponse */
12610 #define	MC_CMD_PROXY_CMD_OUT_LEN 0
12611 
12612 /* MC_PROXY_STATUS_BUFFER structuredef: Host memory status buffer used to
12613  * manage proxied requests
12614  */
12615 #define	MC_PROXY_STATUS_BUFFER_LEN 16
12616 /* Handle allocated by the firmware for this proxy transaction */
12617 #define	MC_PROXY_STATUS_BUFFER_HANDLE_OFST 0
12618 #define	MC_PROXY_STATUS_BUFFER_HANDLE_LEN 4
12619 /* enum: An invalid handle. */
12620 #define	MC_PROXY_STATUS_BUFFER_HANDLE_INVALID 0x0
12621 #define	MC_PROXY_STATUS_BUFFER_HANDLE_LBN 0
12622 #define	MC_PROXY_STATUS_BUFFER_HANDLE_WIDTH 32
12623 /* The requesting physical function number */
12624 #define	MC_PROXY_STATUS_BUFFER_PF_OFST 4
12625 #define	MC_PROXY_STATUS_BUFFER_PF_LEN 2
12626 #define	MC_PROXY_STATUS_BUFFER_PF_LBN 32
12627 #define	MC_PROXY_STATUS_BUFFER_PF_WIDTH 16
12628 /* The requesting virtual function number. Set to VF_NULL if the target is a
12629  * PF.
12630  */
12631 #define	MC_PROXY_STATUS_BUFFER_VF_OFST 6
12632 #define	MC_PROXY_STATUS_BUFFER_VF_LEN 2
12633 #define	MC_PROXY_STATUS_BUFFER_VF_LBN 48
12634 #define	MC_PROXY_STATUS_BUFFER_VF_WIDTH 16
12635 /* The target function RID. */
12636 #define	MC_PROXY_STATUS_BUFFER_RID_OFST 8
12637 #define	MC_PROXY_STATUS_BUFFER_RID_LEN 2
12638 #define	MC_PROXY_STATUS_BUFFER_RID_LBN 64
12639 #define	MC_PROXY_STATUS_BUFFER_RID_WIDTH 16
12640 /* The status of the proxy as described in MC_CMD_PROXY_COMPLETE. */
12641 #define	MC_PROXY_STATUS_BUFFER_STATUS_OFST 10
12642 #define	MC_PROXY_STATUS_BUFFER_STATUS_LEN 2
12643 #define	MC_PROXY_STATUS_BUFFER_STATUS_LBN 80
12644 #define	MC_PROXY_STATUS_BUFFER_STATUS_WIDTH 16
12645 /* If a request is authorized rather than carried out by the host, this is the
12646  * elevated privilege mask granted to the requesting function.
12647  */
12648 #define	MC_PROXY_STATUS_BUFFER_GRANTED_PRIVILEGES_OFST 12
12649 #define	MC_PROXY_STATUS_BUFFER_GRANTED_PRIVILEGES_LEN 4
12650 #define	MC_PROXY_STATUS_BUFFER_GRANTED_PRIVILEGES_LBN 96
12651 #define	MC_PROXY_STATUS_BUFFER_GRANTED_PRIVILEGES_WIDTH 32
12652 
12653 
12654 /***********************************/
12655 /* MC_CMD_PROXY_CONFIGURE
12656  * Enable/disable authorization of MCDI requests from unprivileged functions by
12657  * a designated admin function
12658  */
12659 #define	MC_CMD_PROXY_CONFIGURE 0x58
12660 #define	MC_CMD_PROXY_CONFIGURE_MSGSET 0x58
12661 #undef	MC_CMD_0x58_PRIVILEGE_CTG
12662 
12663 #define	MC_CMD_0x58_PRIVILEGE_CTG SRIOV_CTG_ADMIN
12664 
12665 /* MC_CMD_PROXY_CONFIGURE_IN msgrequest */
12666 #define	MC_CMD_PROXY_CONFIGURE_IN_LEN 108
12667 #define	MC_CMD_PROXY_CONFIGURE_IN_FLAGS_OFST 0
12668 #define	MC_CMD_PROXY_CONFIGURE_IN_FLAGS_LEN 4
12669 #define	MC_CMD_PROXY_CONFIGURE_IN_ENABLE_OFST 0
12670 #define	MC_CMD_PROXY_CONFIGURE_IN_ENABLE_LBN 0
12671 #define	MC_CMD_PROXY_CONFIGURE_IN_ENABLE_WIDTH 1
12672 /* Host provides a contiguous memory buffer that contains at least NUM_BLOCKS
12673  * of blocks, each of the size REQUEST_BLOCK_SIZE.
12674  */
12675 #define	MC_CMD_PROXY_CONFIGURE_IN_STATUS_BUFF_ADDR_OFST 4
12676 #define	MC_CMD_PROXY_CONFIGURE_IN_STATUS_BUFF_ADDR_LEN 8
12677 #define	MC_CMD_PROXY_CONFIGURE_IN_STATUS_BUFF_ADDR_LO_OFST 4
12678 #define	MC_CMD_PROXY_CONFIGURE_IN_STATUS_BUFF_ADDR_LO_LEN 4
12679 #define	MC_CMD_PROXY_CONFIGURE_IN_STATUS_BUFF_ADDR_LO_LBN 32
12680 #define	MC_CMD_PROXY_CONFIGURE_IN_STATUS_BUFF_ADDR_LO_WIDTH 32
12681 #define	MC_CMD_PROXY_CONFIGURE_IN_STATUS_BUFF_ADDR_HI_OFST 8
12682 #define	MC_CMD_PROXY_CONFIGURE_IN_STATUS_BUFF_ADDR_HI_LEN 4
12683 #define	MC_CMD_PROXY_CONFIGURE_IN_STATUS_BUFF_ADDR_HI_LBN 64
12684 #define	MC_CMD_PROXY_CONFIGURE_IN_STATUS_BUFF_ADDR_HI_WIDTH 32
12685 /* Must be a power of 2 */
12686 #define	MC_CMD_PROXY_CONFIGURE_IN_STATUS_BLOCK_SIZE_OFST 12
12687 #define	MC_CMD_PROXY_CONFIGURE_IN_STATUS_BLOCK_SIZE_LEN 4
12688 /* Host provides a contiguous memory buffer that contains at least NUM_BLOCKS
12689  * of blocks, each of the size REPLY_BLOCK_SIZE.
12690  */
12691 #define	MC_CMD_PROXY_CONFIGURE_IN_REQUEST_BUFF_ADDR_OFST 16
12692 #define	MC_CMD_PROXY_CONFIGURE_IN_REQUEST_BUFF_ADDR_LEN 8
12693 #define	MC_CMD_PROXY_CONFIGURE_IN_REQUEST_BUFF_ADDR_LO_OFST 16
12694 #define	MC_CMD_PROXY_CONFIGURE_IN_REQUEST_BUFF_ADDR_LO_LEN 4
12695 #define	MC_CMD_PROXY_CONFIGURE_IN_REQUEST_BUFF_ADDR_LO_LBN 128
12696 #define	MC_CMD_PROXY_CONFIGURE_IN_REQUEST_BUFF_ADDR_LO_WIDTH 32
12697 #define	MC_CMD_PROXY_CONFIGURE_IN_REQUEST_BUFF_ADDR_HI_OFST 20
12698 #define	MC_CMD_PROXY_CONFIGURE_IN_REQUEST_BUFF_ADDR_HI_LEN 4
12699 #define	MC_CMD_PROXY_CONFIGURE_IN_REQUEST_BUFF_ADDR_HI_LBN 160
12700 #define	MC_CMD_PROXY_CONFIGURE_IN_REQUEST_BUFF_ADDR_HI_WIDTH 32
12701 /* Must be a power of 2 */
12702 #define	MC_CMD_PROXY_CONFIGURE_IN_REQUEST_BLOCK_SIZE_OFST 24
12703 #define	MC_CMD_PROXY_CONFIGURE_IN_REQUEST_BLOCK_SIZE_LEN 4
12704 /* Host provides a contiguous memory buffer that contains at least NUM_BLOCKS
12705  * of blocks, each of the size STATUS_BLOCK_SIZE. This buffer is only needed if
12706  * host intends to complete proxied operations by using MC_CMD_PROXY_CMD.
12707  */
12708 #define	MC_CMD_PROXY_CONFIGURE_IN_REPLY_BUFF_ADDR_OFST 28
12709 #define	MC_CMD_PROXY_CONFIGURE_IN_REPLY_BUFF_ADDR_LEN 8
12710 #define	MC_CMD_PROXY_CONFIGURE_IN_REPLY_BUFF_ADDR_LO_OFST 28
12711 #define	MC_CMD_PROXY_CONFIGURE_IN_REPLY_BUFF_ADDR_LO_LEN 4
12712 #define	MC_CMD_PROXY_CONFIGURE_IN_REPLY_BUFF_ADDR_LO_LBN 224
12713 #define	MC_CMD_PROXY_CONFIGURE_IN_REPLY_BUFF_ADDR_LO_WIDTH 32
12714 #define	MC_CMD_PROXY_CONFIGURE_IN_REPLY_BUFF_ADDR_HI_OFST 32
12715 #define	MC_CMD_PROXY_CONFIGURE_IN_REPLY_BUFF_ADDR_HI_LEN 4
12716 #define	MC_CMD_PROXY_CONFIGURE_IN_REPLY_BUFF_ADDR_HI_LBN 256
12717 #define	MC_CMD_PROXY_CONFIGURE_IN_REPLY_BUFF_ADDR_HI_WIDTH 32
12718 /* Must be a power of 2, or zero if this buffer is not provided */
12719 #define	MC_CMD_PROXY_CONFIGURE_IN_REPLY_BLOCK_SIZE_OFST 36
12720 #define	MC_CMD_PROXY_CONFIGURE_IN_REPLY_BLOCK_SIZE_LEN 4
12721 /* Applies to all three buffers */
12722 #define	MC_CMD_PROXY_CONFIGURE_IN_NUM_BLOCKS_OFST 40
12723 #define	MC_CMD_PROXY_CONFIGURE_IN_NUM_BLOCKS_LEN 4
12724 /* A bit mask defining which MCDI operations may be proxied */
12725 #define	MC_CMD_PROXY_CONFIGURE_IN_ALLOWED_MCDI_MASK_OFST 44
12726 #define	MC_CMD_PROXY_CONFIGURE_IN_ALLOWED_MCDI_MASK_LEN 64
12727 
12728 /* MC_CMD_PROXY_CONFIGURE_EXT_IN msgrequest */
12729 #define	MC_CMD_PROXY_CONFIGURE_EXT_IN_LEN 112
12730 #define	MC_CMD_PROXY_CONFIGURE_EXT_IN_FLAGS_OFST 0
12731 #define	MC_CMD_PROXY_CONFIGURE_EXT_IN_FLAGS_LEN 4
12732 #define	MC_CMD_PROXY_CONFIGURE_EXT_IN_ENABLE_OFST 0
12733 #define	MC_CMD_PROXY_CONFIGURE_EXT_IN_ENABLE_LBN 0
12734 #define	MC_CMD_PROXY_CONFIGURE_EXT_IN_ENABLE_WIDTH 1
12735 /* Host provides a contiguous memory buffer that contains at least NUM_BLOCKS
12736  * of blocks, each of the size REQUEST_BLOCK_SIZE.
12737  */
12738 #define	MC_CMD_PROXY_CONFIGURE_EXT_IN_STATUS_BUFF_ADDR_OFST 4
12739 #define	MC_CMD_PROXY_CONFIGURE_EXT_IN_STATUS_BUFF_ADDR_LEN 8
12740 #define	MC_CMD_PROXY_CONFIGURE_EXT_IN_STATUS_BUFF_ADDR_LO_OFST 4
12741 #define	MC_CMD_PROXY_CONFIGURE_EXT_IN_STATUS_BUFF_ADDR_LO_LEN 4
12742 #define	MC_CMD_PROXY_CONFIGURE_EXT_IN_STATUS_BUFF_ADDR_LO_LBN 32
12743 #define	MC_CMD_PROXY_CONFIGURE_EXT_IN_STATUS_BUFF_ADDR_LO_WIDTH 32
12744 #define	MC_CMD_PROXY_CONFIGURE_EXT_IN_STATUS_BUFF_ADDR_HI_OFST 8
12745 #define	MC_CMD_PROXY_CONFIGURE_EXT_IN_STATUS_BUFF_ADDR_HI_LEN 4
12746 #define	MC_CMD_PROXY_CONFIGURE_EXT_IN_STATUS_BUFF_ADDR_HI_LBN 64
12747 #define	MC_CMD_PROXY_CONFIGURE_EXT_IN_STATUS_BUFF_ADDR_HI_WIDTH 32
12748 /* Must be a power of 2 */
12749 #define	MC_CMD_PROXY_CONFIGURE_EXT_IN_STATUS_BLOCK_SIZE_OFST 12
12750 #define	MC_CMD_PROXY_CONFIGURE_EXT_IN_STATUS_BLOCK_SIZE_LEN 4
12751 /* Host provides a contiguous memory buffer that contains at least NUM_BLOCKS
12752  * of blocks, each of the size REPLY_BLOCK_SIZE.
12753  */
12754 #define	MC_CMD_PROXY_CONFIGURE_EXT_IN_REQUEST_BUFF_ADDR_OFST 16
12755 #define	MC_CMD_PROXY_CONFIGURE_EXT_IN_REQUEST_BUFF_ADDR_LEN 8
12756 #define	MC_CMD_PROXY_CONFIGURE_EXT_IN_REQUEST_BUFF_ADDR_LO_OFST 16
12757 #define	MC_CMD_PROXY_CONFIGURE_EXT_IN_REQUEST_BUFF_ADDR_LO_LEN 4
12758 #define	MC_CMD_PROXY_CONFIGURE_EXT_IN_REQUEST_BUFF_ADDR_LO_LBN 128
12759 #define	MC_CMD_PROXY_CONFIGURE_EXT_IN_REQUEST_BUFF_ADDR_LO_WIDTH 32
12760 #define	MC_CMD_PROXY_CONFIGURE_EXT_IN_REQUEST_BUFF_ADDR_HI_OFST 20
12761 #define	MC_CMD_PROXY_CONFIGURE_EXT_IN_REQUEST_BUFF_ADDR_HI_LEN 4
12762 #define	MC_CMD_PROXY_CONFIGURE_EXT_IN_REQUEST_BUFF_ADDR_HI_LBN 160
12763 #define	MC_CMD_PROXY_CONFIGURE_EXT_IN_REQUEST_BUFF_ADDR_HI_WIDTH 32
12764 /* Must be a power of 2 */
12765 #define	MC_CMD_PROXY_CONFIGURE_EXT_IN_REQUEST_BLOCK_SIZE_OFST 24
12766 #define	MC_CMD_PROXY_CONFIGURE_EXT_IN_REQUEST_BLOCK_SIZE_LEN 4
12767 /* Host provides a contiguous memory buffer that contains at least NUM_BLOCKS
12768  * of blocks, each of the size STATUS_BLOCK_SIZE. This buffer is only needed if
12769  * host intends to complete proxied operations by using MC_CMD_PROXY_CMD.
12770  */
12771 #define	MC_CMD_PROXY_CONFIGURE_EXT_IN_REPLY_BUFF_ADDR_OFST 28
12772 #define	MC_CMD_PROXY_CONFIGURE_EXT_IN_REPLY_BUFF_ADDR_LEN 8
12773 #define	MC_CMD_PROXY_CONFIGURE_EXT_IN_REPLY_BUFF_ADDR_LO_OFST 28
12774 #define	MC_CMD_PROXY_CONFIGURE_EXT_IN_REPLY_BUFF_ADDR_LO_LEN 4
12775 #define	MC_CMD_PROXY_CONFIGURE_EXT_IN_REPLY_BUFF_ADDR_LO_LBN 224
12776 #define	MC_CMD_PROXY_CONFIGURE_EXT_IN_REPLY_BUFF_ADDR_LO_WIDTH 32
12777 #define	MC_CMD_PROXY_CONFIGURE_EXT_IN_REPLY_BUFF_ADDR_HI_OFST 32
12778 #define	MC_CMD_PROXY_CONFIGURE_EXT_IN_REPLY_BUFF_ADDR_HI_LEN 4
12779 #define	MC_CMD_PROXY_CONFIGURE_EXT_IN_REPLY_BUFF_ADDR_HI_LBN 256
12780 #define	MC_CMD_PROXY_CONFIGURE_EXT_IN_REPLY_BUFF_ADDR_HI_WIDTH 32
12781 /* Must be a power of 2, or zero if this buffer is not provided */
12782 #define	MC_CMD_PROXY_CONFIGURE_EXT_IN_REPLY_BLOCK_SIZE_OFST 36
12783 #define	MC_CMD_PROXY_CONFIGURE_EXT_IN_REPLY_BLOCK_SIZE_LEN 4
12784 /* Applies to all three buffers */
12785 #define	MC_CMD_PROXY_CONFIGURE_EXT_IN_NUM_BLOCKS_OFST 40
12786 #define	MC_CMD_PROXY_CONFIGURE_EXT_IN_NUM_BLOCKS_LEN 4
12787 /* A bit mask defining which MCDI operations may be proxied */
12788 #define	MC_CMD_PROXY_CONFIGURE_EXT_IN_ALLOWED_MCDI_MASK_OFST 44
12789 #define	MC_CMD_PROXY_CONFIGURE_EXT_IN_ALLOWED_MCDI_MASK_LEN 64
12790 #define	MC_CMD_PROXY_CONFIGURE_EXT_IN_RESERVED_OFST 108
12791 #define	MC_CMD_PROXY_CONFIGURE_EXT_IN_RESERVED_LEN 4
12792 
12793 /* MC_CMD_PROXY_CONFIGURE_OUT msgresponse */
12794 #define	MC_CMD_PROXY_CONFIGURE_OUT_LEN 0
12795 
12796 
12797 /***********************************/
12798 /* MC_CMD_PROXY_COMPLETE
12799  * Tells FW that a requested proxy operation has either been completed (by
12800  * using MC_CMD_PROXY_CMD) or authorized/declined. May only be sent by the
12801  * function that enabled proxying/authorization (by using
12802  * MC_CMD_PROXY_CONFIGURE).
12803  */
12804 #define	MC_CMD_PROXY_COMPLETE 0x5f
12805 #define	MC_CMD_PROXY_COMPLETE_MSGSET 0x5f
12806 #undef	MC_CMD_0x5f_PRIVILEGE_CTG
12807 
12808 #define	MC_CMD_0x5f_PRIVILEGE_CTG SRIOV_CTG_ADMIN
12809 
12810 /* MC_CMD_PROXY_COMPLETE_IN msgrequest */
12811 #define	MC_CMD_PROXY_COMPLETE_IN_LEN 12
12812 #define	MC_CMD_PROXY_COMPLETE_IN_BLOCK_INDEX_OFST 0
12813 #define	MC_CMD_PROXY_COMPLETE_IN_BLOCK_INDEX_LEN 4
12814 #define	MC_CMD_PROXY_COMPLETE_IN_STATUS_OFST 4
12815 #define	MC_CMD_PROXY_COMPLETE_IN_STATUS_LEN 4
12816 /* enum: The operation has been completed by using MC_CMD_PROXY_CMD, the reply
12817  * is stored in the REPLY_BUFF.
12818  */
12819 #define	MC_CMD_PROXY_COMPLETE_IN_COMPLETE 0x0
12820 /* enum: The operation has been authorized. The originating function may now
12821  * try again.
12822  */
12823 #define	MC_CMD_PROXY_COMPLETE_IN_AUTHORIZED 0x1
12824 /* enum: The operation has been declined. */
12825 #define	MC_CMD_PROXY_COMPLETE_IN_DECLINED 0x2
12826 /* enum: The authorization failed because the relevant application did not
12827  * respond in time.
12828  */
12829 #define	MC_CMD_PROXY_COMPLETE_IN_TIMEDOUT 0x3
12830 #define	MC_CMD_PROXY_COMPLETE_IN_HANDLE_OFST 8
12831 #define	MC_CMD_PROXY_COMPLETE_IN_HANDLE_LEN 4
12832 
12833 /* MC_CMD_PROXY_COMPLETE_OUT msgresponse */
12834 #define	MC_CMD_PROXY_COMPLETE_OUT_LEN 0
12835 
12836 
12837 /***********************************/
12838 /* MC_CMD_ALLOC_BUFTBL_CHUNK
12839  * Allocate a set of buffer table entries using the specified owner ID. This
12840  * operation allocates the required buffer table entries (and fails if it
12841  * cannot do so). The buffer table entries will initially be zeroed.
12842  */
12843 #define	MC_CMD_ALLOC_BUFTBL_CHUNK 0x87
12844 #define	MC_CMD_ALLOC_BUFTBL_CHUNK_MSGSET 0x87
12845 #undef	MC_CMD_0x87_PRIVILEGE_CTG
12846 
12847 #define	MC_CMD_0x87_PRIVILEGE_CTG SRIOV_CTG_ONLOAD
12848 
12849 /* MC_CMD_ALLOC_BUFTBL_CHUNK_IN msgrequest */
12850 #define	MC_CMD_ALLOC_BUFTBL_CHUNK_IN_LEN 8
12851 /* Owner ID to use */
12852 #define	MC_CMD_ALLOC_BUFTBL_CHUNK_IN_OWNER_OFST 0
12853 #define	MC_CMD_ALLOC_BUFTBL_CHUNK_IN_OWNER_LEN 4
12854 /* Size of buffer table pages to use, in bytes (note that only a few values are
12855  * legal on any specific hardware).
12856  */
12857 #define	MC_CMD_ALLOC_BUFTBL_CHUNK_IN_PAGE_SIZE_OFST 4
12858 #define	MC_CMD_ALLOC_BUFTBL_CHUNK_IN_PAGE_SIZE_LEN 4
12859 
12860 /* MC_CMD_ALLOC_BUFTBL_CHUNK_OUT msgresponse */
12861 #define	MC_CMD_ALLOC_BUFTBL_CHUNK_OUT_LEN 12
12862 #define	MC_CMD_ALLOC_BUFTBL_CHUNK_OUT_HANDLE_OFST 0
12863 #define	MC_CMD_ALLOC_BUFTBL_CHUNK_OUT_HANDLE_LEN 4
12864 #define	MC_CMD_ALLOC_BUFTBL_CHUNK_OUT_NUMENTRIES_OFST 4
12865 #define	MC_CMD_ALLOC_BUFTBL_CHUNK_OUT_NUMENTRIES_LEN 4
12866 /* Buffer table IDs for use in DMA descriptors. */
12867 #define	MC_CMD_ALLOC_BUFTBL_CHUNK_OUT_ID_OFST 8
12868 #define	MC_CMD_ALLOC_BUFTBL_CHUNK_OUT_ID_LEN 4
12869 
12870 
12871 /***********************************/
12872 /* MC_CMD_PROGRAM_BUFTBL_ENTRIES
12873  * Reprogram a set of buffer table entries in the specified chunk.
12874  */
12875 #define	MC_CMD_PROGRAM_BUFTBL_ENTRIES 0x88
12876 #define	MC_CMD_PROGRAM_BUFTBL_ENTRIES_MSGSET 0x88
12877 #undef	MC_CMD_0x88_PRIVILEGE_CTG
12878 
12879 #define	MC_CMD_0x88_PRIVILEGE_CTG SRIOV_CTG_ONLOAD
12880 
12881 /* MC_CMD_PROGRAM_BUFTBL_ENTRIES_IN msgrequest */
12882 #define	MC_CMD_PROGRAM_BUFTBL_ENTRIES_IN_LENMIN 20
12883 #define	MC_CMD_PROGRAM_BUFTBL_ENTRIES_IN_LENMAX 268
12884 #define	MC_CMD_PROGRAM_BUFTBL_ENTRIES_IN_LENMAX_MCDI2 268
12885 #define	MC_CMD_PROGRAM_BUFTBL_ENTRIES_IN_LEN(num) (12+8*(num))
12886 #define	MC_CMD_PROGRAM_BUFTBL_ENTRIES_IN_ENTRY_NUM(len) (((len)-12)/8)
12887 #define	MC_CMD_PROGRAM_BUFTBL_ENTRIES_IN_HANDLE_OFST 0
12888 #define	MC_CMD_PROGRAM_BUFTBL_ENTRIES_IN_HANDLE_LEN 4
12889 /* ID */
12890 #define	MC_CMD_PROGRAM_BUFTBL_ENTRIES_IN_FIRSTID_OFST 4
12891 #define	MC_CMD_PROGRAM_BUFTBL_ENTRIES_IN_FIRSTID_LEN 4
12892 /* Num entries */
12893 #define	MC_CMD_PROGRAM_BUFTBL_ENTRIES_IN_NUMENTRIES_OFST 8
12894 #define	MC_CMD_PROGRAM_BUFTBL_ENTRIES_IN_NUMENTRIES_LEN 4
12895 /* Buffer table entry address */
12896 #define	MC_CMD_PROGRAM_BUFTBL_ENTRIES_IN_ENTRY_OFST 12
12897 #define	MC_CMD_PROGRAM_BUFTBL_ENTRIES_IN_ENTRY_LEN 8
12898 #define	MC_CMD_PROGRAM_BUFTBL_ENTRIES_IN_ENTRY_LO_OFST 12
12899 #define	MC_CMD_PROGRAM_BUFTBL_ENTRIES_IN_ENTRY_LO_LEN 4
12900 #define	MC_CMD_PROGRAM_BUFTBL_ENTRIES_IN_ENTRY_LO_LBN 96
12901 #define	MC_CMD_PROGRAM_BUFTBL_ENTRIES_IN_ENTRY_LO_WIDTH 32
12902 #define	MC_CMD_PROGRAM_BUFTBL_ENTRIES_IN_ENTRY_HI_OFST 16
12903 #define	MC_CMD_PROGRAM_BUFTBL_ENTRIES_IN_ENTRY_HI_LEN 4
12904 #define	MC_CMD_PROGRAM_BUFTBL_ENTRIES_IN_ENTRY_HI_LBN 128
12905 #define	MC_CMD_PROGRAM_BUFTBL_ENTRIES_IN_ENTRY_HI_WIDTH 32
12906 #define	MC_CMD_PROGRAM_BUFTBL_ENTRIES_IN_ENTRY_MINNUM 1
12907 #define	MC_CMD_PROGRAM_BUFTBL_ENTRIES_IN_ENTRY_MAXNUM 32
12908 #define	MC_CMD_PROGRAM_BUFTBL_ENTRIES_IN_ENTRY_MAXNUM_MCDI2 32
12909 
12910 /* MC_CMD_PROGRAM_BUFTBL_ENTRIES_OUT msgresponse */
12911 #define	MC_CMD_PROGRAM_BUFTBL_ENTRIES_OUT_LEN 0
12912 
12913 
12914 /***********************************/
12915 /* MC_CMD_FREE_BUFTBL_CHUNK
12916  */
12917 #define	MC_CMD_FREE_BUFTBL_CHUNK 0x89
12918 #define	MC_CMD_FREE_BUFTBL_CHUNK_MSGSET 0x89
12919 #undef	MC_CMD_0x89_PRIVILEGE_CTG
12920 
12921 #define	MC_CMD_0x89_PRIVILEGE_CTG SRIOV_CTG_ONLOAD
12922 
12923 /* MC_CMD_FREE_BUFTBL_CHUNK_IN msgrequest */
12924 #define	MC_CMD_FREE_BUFTBL_CHUNK_IN_LEN 4
12925 #define	MC_CMD_FREE_BUFTBL_CHUNK_IN_HANDLE_OFST 0
12926 #define	MC_CMD_FREE_BUFTBL_CHUNK_IN_HANDLE_LEN 4
12927 
12928 /* MC_CMD_FREE_BUFTBL_CHUNK_OUT msgresponse */
12929 #define	MC_CMD_FREE_BUFTBL_CHUNK_OUT_LEN 0
12930 
12931 
12932 /***********************************/
12933 /* MC_CMD_FILTER_OP
12934  * Multiplexed MCDI call for filter operations
12935  */
12936 #define	MC_CMD_FILTER_OP 0x8a
12937 #define	MC_CMD_FILTER_OP_MSGSET 0x8a
12938 #undef	MC_CMD_0x8a_PRIVILEGE_CTG
12939 
12940 #define	MC_CMD_0x8a_PRIVILEGE_CTG SRIOV_CTG_GENERAL
12941 
12942 /* MC_CMD_FILTER_OP_IN msgrequest */
12943 #define	MC_CMD_FILTER_OP_IN_LEN 108
12944 /* identifies the type of operation requested */
12945 #define	MC_CMD_FILTER_OP_IN_OP_OFST 0
12946 #define	MC_CMD_FILTER_OP_IN_OP_LEN 4
12947 /* enum: single-recipient filter insert */
12948 #define	MC_CMD_FILTER_OP_IN_OP_INSERT 0x0
12949 /* enum: single-recipient filter remove */
12950 #define	MC_CMD_FILTER_OP_IN_OP_REMOVE 0x1
12951 /* enum: multi-recipient filter subscribe */
12952 #define	MC_CMD_FILTER_OP_IN_OP_SUBSCRIBE 0x2
12953 /* enum: multi-recipient filter unsubscribe */
12954 #define	MC_CMD_FILTER_OP_IN_OP_UNSUBSCRIBE 0x3
12955 /* enum: replace one recipient with another (warning - the filter handle may
12956  * change)
12957  */
12958 #define	MC_CMD_FILTER_OP_IN_OP_REPLACE 0x4
12959 /* filter handle (for remove / unsubscribe operations) */
12960 #define	MC_CMD_FILTER_OP_IN_HANDLE_OFST 4
12961 #define	MC_CMD_FILTER_OP_IN_HANDLE_LEN 8
12962 #define	MC_CMD_FILTER_OP_IN_HANDLE_LO_OFST 4
12963 #define	MC_CMD_FILTER_OP_IN_HANDLE_LO_LEN 4
12964 #define	MC_CMD_FILTER_OP_IN_HANDLE_LO_LBN 32
12965 #define	MC_CMD_FILTER_OP_IN_HANDLE_LO_WIDTH 32
12966 #define	MC_CMD_FILTER_OP_IN_HANDLE_HI_OFST 8
12967 #define	MC_CMD_FILTER_OP_IN_HANDLE_HI_LEN 4
12968 #define	MC_CMD_FILTER_OP_IN_HANDLE_HI_LBN 64
12969 #define	MC_CMD_FILTER_OP_IN_HANDLE_HI_WIDTH 32
12970 /* The port ID associated with the v-adaptor which should contain this filter.
12971  */
12972 #define	MC_CMD_FILTER_OP_IN_PORT_ID_OFST 12
12973 #define	MC_CMD_FILTER_OP_IN_PORT_ID_LEN 4
12974 /* fields to include in match criteria */
12975 #define	MC_CMD_FILTER_OP_IN_MATCH_FIELDS_OFST 16
12976 #define	MC_CMD_FILTER_OP_IN_MATCH_FIELDS_LEN 4
12977 #define	MC_CMD_FILTER_OP_IN_MATCH_SRC_IP_OFST 16
12978 #define	MC_CMD_FILTER_OP_IN_MATCH_SRC_IP_LBN 0
12979 #define	MC_CMD_FILTER_OP_IN_MATCH_SRC_IP_WIDTH 1
12980 #define	MC_CMD_FILTER_OP_IN_MATCH_DST_IP_OFST 16
12981 #define	MC_CMD_FILTER_OP_IN_MATCH_DST_IP_LBN 1
12982 #define	MC_CMD_FILTER_OP_IN_MATCH_DST_IP_WIDTH 1
12983 #define	MC_CMD_FILTER_OP_IN_MATCH_SRC_MAC_OFST 16
12984 #define	MC_CMD_FILTER_OP_IN_MATCH_SRC_MAC_LBN 2
12985 #define	MC_CMD_FILTER_OP_IN_MATCH_SRC_MAC_WIDTH 1
12986 #define	MC_CMD_FILTER_OP_IN_MATCH_SRC_PORT_OFST 16
12987 #define	MC_CMD_FILTER_OP_IN_MATCH_SRC_PORT_LBN 3
12988 #define	MC_CMD_FILTER_OP_IN_MATCH_SRC_PORT_WIDTH 1
12989 #define	MC_CMD_FILTER_OP_IN_MATCH_DST_MAC_OFST 16
12990 #define	MC_CMD_FILTER_OP_IN_MATCH_DST_MAC_LBN 4
12991 #define	MC_CMD_FILTER_OP_IN_MATCH_DST_MAC_WIDTH 1
12992 #define	MC_CMD_FILTER_OP_IN_MATCH_DST_PORT_OFST 16
12993 #define	MC_CMD_FILTER_OP_IN_MATCH_DST_PORT_LBN 5
12994 #define	MC_CMD_FILTER_OP_IN_MATCH_DST_PORT_WIDTH 1
12995 #define	MC_CMD_FILTER_OP_IN_MATCH_ETHER_TYPE_OFST 16
12996 #define	MC_CMD_FILTER_OP_IN_MATCH_ETHER_TYPE_LBN 6
12997 #define	MC_CMD_FILTER_OP_IN_MATCH_ETHER_TYPE_WIDTH 1
12998 #define	MC_CMD_FILTER_OP_IN_MATCH_INNER_VLAN_OFST 16
12999 #define	MC_CMD_FILTER_OP_IN_MATCH_INNER_VLAN_LBN 7
13000 #define	MC_CMD_FILTER_OP_IN_MATCH_INNER_VLAN_WIDTH 1
13001 #define	MC_CMD_FILTER_OP_IN_MATCH_OUTER_VLAN_OFST 16
13002 #define	MC_CMD_FILTER_OP_IN_MATCH_OUTER_VLAN_LBN 8
13003 #define	MC_CMD_FILTER_OP_IN_MATCH_OUTER_VLAN_WIDTH 1
13004 #define	MC_CMD_FILTER_OP_IN_MATCH_IP_PROTO_OFST 16
13005 #define	MC_CMD_FILTER_OP_IN_MATCH_IP_PROTO_LBN 9
13006 #define	MC_CMD_FILTER_OP_IN_MATCH_IP_PROTO_WIDTH 1
13007 #define	MC_CMD_FILTER_OP_IN_MATCH_FWDEF0_OFST 16
13008 #define	MC_CMD_FILTER_OP_IN_MATCH_FWDEF0_LBN 10
13009 #define	MC_CMD_FILTER_OP_IN_MATCH_FWDEF0_WIDTH 1
13010 #define	MC_CMD_FILTER_OP_IN_MATCH_FWDEF1_OFST 16
13011 #define	MC_CMD_FILTER_OP_IN_MATCH_FWDEF1_LBN 11
13012 #define	MC_CMD_FILTER_OP_IN_MATCH_FWDEF1_WIDTH 1
13013 #define	MC_CMD_FILTER_OP_IN_MATCH_UNKNOWN_IPV4_MCAST_DST_OFST 16
13014 #define	MC_CMD_FILTER_OP_IN_MATCH_UNKNOWN_IPV4_MCAST_DST_LBN 29
13015 #define	MC_CMD_FILTER_OP_IN_MATCH_UNKNOWN_IPV4_MCAST_DST_WIDTH 1
13016 #define	MC_CMD_FILTER_OP_IN_MATCH_UNKNOWN_MCAST_DST_OFST 16
13017 #define	MC_CMD_FILTER_OP_IN_MATCH_UNKNOWN_MCAST_DST_LBN 30
13018 #define	MC_CMD_FILTER_OP_IN_MATCH_UNKNOWN_MCAST_DST_WIDTH 1
13019 #define	MC_CMD_FILTER_OP_IN_MATCH_UNKNOWN_UCAST_DST_OFST 16
13020 #define	MC_CMD_FILTER_OP_IN_MATCH_UNKNOWN_UCAST_DST_LBN 31
13021 #define	MC_CMD_FILTER_OP_IN_MATCH_UNKNOWN_UCAST_DST_WIDTH 1
13022 /* receive destination */
13023 #define	MC_CMD_FILTER_OP_IN_RX_DEST_OFST 20
13024 #define	MC_CMD_FILTER_OP_IN_RX_DEST_LEN 4
13025 /* enum: drop packets */
13026 #define	MC_CMD_FILTER_OP_IN_RX_DEST_DROP 0x0
13027 /* enum: receive to host */
13028 #define	MC_CMD_FILTER_OP_IN_RX_DEST_HOST 0x1
13029 /* enum: receive to MC */
13030 #define	MC_CMD_FILTER_OP_IN_RX_DEST_MC 0x2
13031 /* enum: loop back to TXDP 0 */
13032 #define	MC_CMD_FILTER_OP_IN_RX_DEST_TX0 0x3
13033 /* enum: loop back to TXDP 1 */
13034 #define	MC_CMD_FILTER_OP_IN_RX_DEST_TX1 0x4
13035 /* receive queue handle (for multiple queue modes, this is the base queue) */
13036 #define	MC_CMD_FILTER_OP_IN_RX_QUEUE_OFST 24
13037 #define	MC_CMD_FILTER_OP_IN_RX_QUEUE_LEN 4
13038 /* receive mode */
13039 #define	MC_CMD_FILTER_OP_IN_RX_MODE_OFST 28
13040 #define	MC_CMD_FILTER_OP_IN_RX_MODE_LEN 4
13041 /* enum: receive to just the specified queue */
13042 #define	MC_CMD_FILTER_OP_IN_RX_MODE_SIMPLE 0x0
13043 /* enum: receive to multiple queues using RSS context */
13044 #define	MC_CMD_FILTER_OP_IN_RX_MODE_RSS 0x1
13045 /* enum: receive to multiple queues using .1p mapping */
13046 #define	MC_CMD_FILTER_OP_IN_RX_MODE_DOT1P_MAPPING 0x2
13047 /* enum: install a filter entry that will never match; for test purposes only
13048  */
13049 #define	MC_CMD_FILTER_OP_IN_RX_MODE_TEST_NEVER_MATCH 0x80000000
13050 /* RSS context (for RX_MODE_RSS) or .1p mapping handle (for
13051  * RX_MODE_DOT1P_MAPPING), as returned by MC_CMD_RSS_CONTEXT_ALLOC or
13052  * MC_CMD_DOT1P_MAPPING_ALLOC.
13053  */
13054 #define	MC_CMD_FILTER_OP_IN_RX_CONTEXT_OFST 32
13055 #define	MC_CMD_FILTER_OP_IN_RX_CONTEXT_LEN 4
13056 /* transmit domain (reserved; set to 0) */
13057 #define	MC_CMD_FILTER_OP_IN_TX_DOMAIN_OFST 36
13058 #define	MC_CMD_FILTER_OP_IN_TX_DOMAIN_LEN 4
13059 /* transmit destination (either set the MAC and/or PM bits for explicit
13060  * control, or set this field to TX_DEST_DEFAULT for sensible default
13061  * behaviour)
13062  */
13063 #define	MC_CMD_FILTER_OP_IN_TX_DEST_OFST 40
13064 #define	MC_CMD_FILTER_OP_IN_TX_DEST_LEN 4
13065 /* enum: request default behaviour (based on filter type) */
13066 #define	MC_CMD_FILTER_OP_IN_TX_DEST_DEFAULT 0xffffffff
13067 #define	MC_CMD_FILTER_OP_IN_TX_DEST_MAC_OFST 40
13068 #define	MC_CMD_FILTER_OP_IN_TX_DEST_MAC_LBN 0
13069 #define	MC_CMD_FILTER_OP_IN_TX_DEST_MAC_WIDTH 1
13070 #define	MC_CMD_FILTER_OP_IN_TX_DEST_PM_OFST 40
13071 #define	MC_CMD_FILTER_OP_IN_TX_DEST_PM_LBN 1
13072 #define	MC_CMD_FILTER_OP_IN_TX_DEST_PM_WIDTH 1
13073 /* source MAC address to match (as bytes in network order) */
13074 #define	MC_CMD_FILTER_OP_IN_SRC_MAC_OFST 44
13075 #define	MC_CMD_FILTER_OP_IN_SRC_MAC_LEN 6
13076 /* source port to match (as bytes in network order) */
13077 #define	MC_CMD_FILTER_OP_IN_SRC_PORT_OFST 50
13078 #define	MC_CMD_FILTER_OP_IN_SRC_PORT_LEN 2
13079 /* destination MAC address to match (as bytes in network order) */
13080 #define	MC_CMD_FILTER_OP_IN_DST_MAC_OFST 52
13081 #define	MC_CMD_FILTER_OP_IN_DST_MAC_LEN 6
13082 /* destination port to match (as bytes in network order) */
13083 #define	MC_CMD_FILTER_OP_IN_DST_PORT_OFST 58
13084 #define	MC_CMD_FILTER_OP_IN_DST_PORT_LEN 2
13085 /* Ethernet type to match (as bytes in network order) */
13086 #define	MC_CMD_FILTER_OP_IN_ETHER_TYPE_OFST 60
13087 #define	MC_CMD_FILTER_OP_IN_ETHER_TYPE_LEN 2
13088 /* Inner VLAN tag to match (as bytes in network order) */
13089 #define	MC_CMD_FILTER_OP_IN_INNER_VLAN_OFST 62
13090 #define	MC_CMD_FILTER_OP_IN_INNER_VLAN_LEN 2
13091 /* Outer VLAN tag to match (as bytes in network order) */
13092 #define	MC_CMD_FILTER_OP_IN_OUTER_VLAN_OFST 64
13093 #define	MC_CMD_FILTER_OP_IN_OUTER_VLAN_LEN 2
13094 /* IP protocol to match (in low byte; set high byte to 0) */
13095 #define	MC_CMD_FILTER_OP_IN_IP_PROTO_OFST 66
13096 #define	MC_CMD_FILTER_OP_IN_IP_PROTO_LEN 2
13097 /* Firmware defined register 0 to match (reserved; set to 0) */
13098 #define	MC_CMD_FILTER_OP_IN_FWDEF0_OFST 68
13099 #define	MC_CMD_FILTER_OP_IN_FWDEF0_LEN 4
13100 /* Firmware defined register 1 to match (reserved; set to 0) */
13101 #define	MC_CMD_FILTER_OP_IN_FWDEF1_OFST 72
13102 #define	MC_CMD_FILTER_OP_IN_FWDEF1_LEN 4
13103 /* source IP address to match (as bytes in network order; set last 12 bytes to
13104  * 0 for IPv4 address)
13105  */
13106 #define	MC_CMD_FILTER_OP_IN_SRC_IP_OFST 76
13107 #define	MC_CMD_FILTER_OP_IN_SRC_IP_LEN 16
13108 /* destination IP address to match (as bytes in network order; set last 12
13109  * bytes to 0 for IPv4 address)
13110  */
13111 #define	MC_CMD_FILTER_OP_IN_DST_IP_OFST 92
13112 #define	MC_CMD_FILTER_OP_IN_DST_IP_LEN 16
13113 
13114 /* MC_CMD_FILTER_OP_EXT_IN msgrequest: Extension to MC_CMD_FILTER_OP_IN to
13115  * include handling of VXLAN/NVGRE encapsulated frame filtering (which is
13116  * supported on Medford only).
13117  */
13118 #define	MC_CMD_FILTER_OP_EXT_IN_LEN 172
13119 /* identifies the type of operation requested */
13120 #define	MC_CMD_FILTER_OP_EXT_IN_OP_OFST 0
13121 #define	MC_CMD_FILTER_OP_EXT_IN_OP_LEN 4
13122 /*            Enum values, see field(s): */
13123 /*               MC_CMD_FILTER_OP_IN/OP */
13124 /* filter handle (for remove / unsubscribe operations) */
13125 #define	MC_CMD_FILTER_OP_EXT_IN_HANDLE_OFST 4
13126 #define	MC_CMD_FILTER_OP_EXT_IN_HANDLE_LEN 8
13127 #define	MC_CMD_FILTER_OP_EXT_IN_HANDLE_LO_OFST 4
13128 #define	MC_CMD_FILTER_OP_EXT_IN_HANDLE_LO_LEN 4
13129 #define	MC_CMD_FILTER_OP_EXT_IN_HANDLE_LO_LBN 32
13130 #define	MC_CMD_FILTER_OP_EXT_IN_HANDLE_LO_WIDTH 32
13131 #define	MC_CMD_FILTER_OP_EXT_IN_HANDLE_HI_OFST 8
13132 #define	MC_CMD_FILTER_OP_EXT_IN_HANDLE_HI_LEN 4
13133 #define	MC_CMD_FILTER_OP_EXT_IN_HANDLE_HI_LBN 64
13134 #define	MC_CMD_FILTER_OP_EXT_IN_HANDLE_HI_WIDTH 32
13135 /* The port ID associated with the v-adaptor which should contain this filter.
13136  */
13137 #define	MC_CMD_FILTER_OP_EXT_IN_PORT_ID_OFST 12
13138 #define	MC_CMD_FILTER_OP_EXT_IN_PORT_ID_LEN 4
13139 /* fields to include in match criteria */
13140 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_FIELDS_OFST 16
13141 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_FIELDS_LEN 4
13142 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_SRC_IP_OFST 16
13143 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_SRC_IP_LBN 0
13144 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_SRC_IP_WIDTH 1
13145 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_DST_IP_OFST 16
13146 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_DST_IP_LBN 1
13147 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_DST_IP_WIDTH 1
13148 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_SRC_MAC_OFST 16
13149 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_SRC_MAC_LBN 2
13150 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_SRC_MAC_WIDTH 1
13151 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_SRC_PORT_OFST 16
13152 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_SRC_PORT_LBN 3
13153 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_SRC_PORT_WIDTH 1
13154 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_DST_MAC_OFST 16
13155 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_DST_MAC_LBN 4
13156 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_DST_MAC_WIDTH 1
13157 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_DST_PORT_OFST 16
13158 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_DST_PORT_LBN 5
13159 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_DST_PORT_WIDTH 1
13160 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_ETHER_TYPE_OFST 16
13161 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_ETHER_TYPE_LBN 6
13162 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_ETHER_TYPE_WIDTH 1
13163 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_INNER_VLAN_OFST 16
13164 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_INNER_VLAN_LBN 7
13165 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_INNER_VLAN_WIDTH 1
13166 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_OUTER_VLAN_OFST 16
13167 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_OUTER_VLAN_LBN 8
13168 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_OUTER_VLAN_WIDTH 1
13169 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_IP_PROTO_OFST 16
13170 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_IP_PROTO_LBN 9
13171 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_IP_PROTO_WIDTH 1
13172 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_FWDEF0_OFST 16
13173 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_FWDEF0_LBN 10
13174 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_FWDEF0_WIDTH 1
13175 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_VNI_OR_VSID_OFST 16
13176 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_VNI_OR_VSID_LBN 11
13177 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_VNI_OR_VSID_WIDTH 1
13178 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_SRC_IP_OFST 16
13179 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_SRC_IP_LBN 12
13180 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_SRC_IP_WIDTH 1
13181 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_DST_IP_OFST 16
13182 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_DST_IP_LBN 13
13183 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_DST_IP_WIDTH 1
13184 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_SRC_MAC_OFST 16
13185 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_SRC_MAC_LBN 14
13186 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_SRC_MAC_WIDTH 1
13187 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_SRC_PORT_OFST 16
13188 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_SRC_PORT_LBN 15
13189 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_SRC_PORT_WIDTH 1
13190 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_DST_MAC_OFST 16
13191 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_DST_MAC_LBN 16
13192 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_DST_MAC_WIDTH 1
13193 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_DST_PORT_OFST 16
13194 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_DST_PORT_LBN 17
13195 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_DST_PORT_WIDTH 1
13196 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_ETHER_TYPE_OFST 16
13197 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_ETHER_TYPE_LBN 18
13198 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_ETHER_TYPE_WIDTH 1
13199 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_INNER_VLAN_OFST 16
13200 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_INNER_VLAN_LBN 19
13201 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_INNER_VLAN_WIDTH 1
13202 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_OUTER_VLAN_OFST 16
13203 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_OUTER_VLAN_LBN 20
13204 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_OUTER_VLAN_WIDTH 1
13205 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_IP_PROTO_OFST 16
13206 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_IP_PROTO_LBN 21
13207 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_IP_PROTO_WIDTH 1
13208 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_FWDEF0_OFST 16
13209 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_FWDEF0_LBN 22
13210 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_FWDEF0_WIDTH 1
13211 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_FWDEF1_OFST 16
13212 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_FWDEF1_LBN 23
13213 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_FWDEF1_WIDTH 1
13214 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_UNKNOWN_MCAST_DST_OFST 16
13215 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_UNKNOWN_MCAST_DST_LBN 24
13216 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_UNKNOWN_MCAST_DST_WIDTH 1
13217 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_UNKNOWN_UCAST_DST_OFST 16
13218 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_UNKNOWN_UCAST_DST_LBN 25
13219 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_IFRM_UNKNOWN_UCAST_DST_WIDTH 1
13220 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_UNKNOWN_IPV4_MCAST_DST_OFST 16
13221 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_UNKNOWN_IPV4_MCAST_DST_LBN 29
13222 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_UNKNOWN_IPV4_MCAST_DST_WIDTH 1
13223 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_UNKNOWN_MCAST_DST_OFST 16
13224 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_UNKNOWN_MCAST_DST_LBN 30
13225 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_UNKNOWN_MCAST_DST_WIDTH 1
13226 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_UNKNOWN_UCAST_DST_OFST 16
13227 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_UNKNOWN_UCAST_DST_LBN 31
13228 #define	MC_CMD_FILTER_OP_EXT_IN_MATCH_UNKNOWN_UCAST_DST_WIDTH 1
13229 /* receive destination */
13230 #define	MC_CMD_FILTER_OP_EXT_IN_RX_DEST_OFST 20
13231 #define	MC_CMD_FILTER_OP_EXT_IN_RX_DEST_LEN 4
13232 /* enum: drop packets */
13233 #define	MC_CMD_FILTER_OP_EXT_IN_RX_DEST_DROP 0x0
13234 /* enum: receive to host */
13235 #define	MC_CMD_FILTER_OP_EXT_IN_RX_DEST_HOST 0x1
13236 /* enum: receive to MC */
13237 #define	MC_CMD_FILTER_OP_EXT_IN_RX_DEST_MC 0x2
13238 /* enum: loop back to TXDP 0 */
13239 #define	MC_CMD_FILTER_OP_EXT_IN_RX_DEST_TX0 0x3
13240 /* enum: loop back to TXDP 1 */
13241 #define	MC_CMD_FILTER_OP_EXT_IN_RX_DEST_TX1 0x4
13242 /* receive queue handle (for multiple queue modes, this is the base queue) */
13243 #define	MC_CMD_FILTER_OP_EXT_IN_RX_QUEUE_OFST 24
13244 #define	MC_CMD_FILTER_OP_EXT_IN_RX_QUEUE_LEN 4
13245 /* receive mode */
13246 #define	MC_CMD_FILTER_OP_EXT_IN_RX_MODE_OFST 28
13247 #define	MC_CMD_FILTER_OP_EXT_IN_RX_MODE_LEN 4
13248 /* enum: receive to just the specified queue */
13249 #define	MC_CMD_FILTER_OP_EXT_IN_RX_MODE_SIMPLE 0x0
13250 /* enum: receive to multiple queues using RSS context */
13251 #define	MC_CMD_FILTER_OP_EXT_IN_RX_MODE_RSS 0x1
13252 /* enum: receive to multiple queues using .1p mapping */
13253 #define	MC_CMD_FILTER_OP_EXT_IN_RX_MODE_DOT1P_MAPPING 0x2
13254 /* enum: install a filter entry that will never match; for test purposes only
13255  */
13256 #define	MC_CMD_FILTER_OP_EXT_IN_RX_MODE_TEST_NEVER_MATCH 0x80000000
13257 /* RSS context (for RX_MODE_RSS) or .1p mapping handle (for
13258  * RX_MODE_DOT1P_MAPPING), as returned by MC_CMD_RSS_CONTEXT_ALLOC or
13259  * MC_CMD_DOT1P_MAPPING_ALLOC.
13260  */
13261 #define	MC_CMD_FILTER_OP_EXT_IN_RX_CONTEXT_OFST 32
13262 #define	MC_CMD_FILTER_OP_EXT_IN_RX_CONTEXT_LEN 4
13263 /* transmit domain (reserved; set to 0) */
13264 #define	MC_CMD_FILTER_OP_EXT_IN_TX_DOMAIN_OFST 36
13265 #define	MC_CMD_FILTER_OP_EXT_IN_TX_DOMAIN_LEN 4
13266 /* transmit destination (either set the MAC and/or PM bits for explicit
13267  * control, or set this field to TX_DEST_DEFAULT for sensible default
13268  * behaviour)
13269  */
13270 #define	MC_CMD_FILTER_OP_EXT_IN_TX_DEST_OFST 40
13271 #define	MC_CMD_FILTER_OP_EXT_IN_TX_DEST_LEN 4
13272 /* enum: request default behaviour (based on filter type) */
13273 #define	MC_CMD_FILTER_OP_EXT_IN_TX_DEST_DEFAULT 0xffffffff
13274 #define	MC_CMD_FILTER_OP_EXT_IN_TX_DEST_MAC_OFST 40
13275 #define	MC_CMD_FILTER_OP_EXT_IN_TX_DEST_MAC_LBN 0
13276 #define	MC_CMD_FILTER_OP_EXT_IN_TX_DEST_MAC_WIDTH 1
13277 #define	MC_CMD_FILTER_OP_EXT_IN_TX_DEST_PM_OFST 40
13278 #define	MC_CMD_FILTER_OP_EXT_IN_TX_DEST_PM_LBN 1
13279 #define	MC_CMD_FILTER_OP_EXT_IN_TX_DEST_PM_WIDTH 1
13280 /* source MAC address to match (as bytes in network order) */
13281 #define	MC_CMD_FILTER_OP_EXT_IN_SRC_MAC_OFST 44
13282 #define	MC_CMD_FILTER_OP_EXT_IN_SRC_MAC_LEN 6
13283 /* source port to match (as bytes in network order) */
13284 #define	MC_CMD_FILTER_OP_EXT_IN_SRC_PORT_OFST 50
13285 #define	MC_CMD_FILTER_OP_EXT_IN_SRC_PORT_LEN 2
13286 /* destination MAC address to match (as bytes in network order) */
13287 #define	MC_CMD_FILTER_OP_EXT_IN_DST_MAC_OFST 52
13288 #define	MC_CMD_FILTER_OP_EXT_IN_DST_MAC_LEN 6
13289 /* destination port to match (as bytes in network order) */
13290 #define	MC_CMD_FILTER_OP_EXT_IN_DST_PORT_OFST 58
13291 #define	MC_CMD_FILTER_OP_EXT_IN_DST_PORT_LEN 2
13292 /* Ethernet type to match (as bytes in network order) */
13293 #define	MC_CMD_FILTER_OP_EXT_IN_ETHER_TYPE_OFST 60
13294 #define	MC_CMD_FILTER_OP_EXT_IN_ETHER_TYPE_LEN 2
13295 /* Inner VLAN tag to match (as bytes in network order) */
13296 #define	MC_CMD_FILTER_OP_EXT_IN_INNER_VLAN_OFST 62
13297 #define	MC_CMD_FILTER_OP_EXT_IN_INNER_VLAN_LEN 2
13298 /* Outer VLAN tag to match (as bytes in network order) */
13299 #define	MC_CMD_FILTER_OP_EXT_IN_OUTER_VLAN_OFST 64
13300 #define	MC_CMD_FILTER_OP_EXT_IN_OUTER_VLAN_LEN 2
13301 /* IP protocol to match (in low byte; set high byte to 0) */
13302 #define	MC_CMD_FILTER_OP_EXT_IN_IP_PROTO_OFST 66
13303 #define	MC_CMD_FILTER_OP_EXT_IN_IP_PROTO_LEN 2
13304 /* Firmware defined register 0 to match (reserved; set to 0) */
13305 #define	MC_CMD_FILTER_OP_EXT_IN_FWDEF0_OFST 68
13306 #define	MC_CMD_FILTER_OP_EXT_IN_FWDEF0_LEN 4
13307 /* VNI (for VXLAN/Geneve, when IP protocol is UDP) or VSID (for NVGRE, when IP
13308  * protocol is GRE) to match (as bytes in network order; set last byte to 0 for
13309  * VXLAN/NVGRE, or 1 for Geneve)
13310  */
13311 #define	MC_CMD_FILTER_OP_EXT_IN_VNI_OR_VSID_OFST 72
13312 #define	MC_CMD_FILTER_OP_EXT_IN_VNI_OR_VSID_LEN 4
13313 #define	MC_CMD_FILTER_OP_EXT_IN_VNI_VALUE_OFST 72
13314 #define	MC_CMD_FILTER_OP_EXT_IN_VNI_VALUE_LBN 0
13315 #define	MC_CMD_FILTER_OP_EXT_IN_VNI_VALUE_WIDTH 24
13316 #define	MC_CMD_FILTER_OP_EXT_IN_VNI_TYPE_OFST 72
13317 #define	MC_CMD_FILTER_OP_EXT_IN_VNI_TYPE_LBN 24
13318 #define	MC_CMD_FILTER_OP_EXT_IN_VNI_TYPE_WIDTH 8
13319 /* enum: Match VXLAN traffic with this VNI */
13320 #define	MC_CMD_FILTER_OP_EXT_IN_VNI_TYPE_VXLAN 0x0
13321 /* enum: Match Geneve traffic with this VNI */
13322 #define	MC_CMD_FILTER_OP_EXT_IN_VNI_TYPE_GENEVE 0x1
13323 /* enum: Reserved for experimental development use */
13324 #define	MC_CMD_FILTER_OP_EXT_IN_VNI_TYPE_EXPERIMENTAL 0xfe
13325 #define	MC_CMD_FILTER_OP_EXT_IN_VSID_VALUE_OFST 72
13326 #define	MC_CMD_FILTER_OP_EXT_IN_VSID_VALUE_LBN 0
13327 #define	MC_CMD_FILTER_OP_EXT_IN_VSID_VALUE_WIDTH 24
13328 #define	MC_CMD_FILTER_OP_EXT_IN_VSID_TYPE_OFST 72
13329 #define	MC_CMD_FILTER_OP_EXT_IN_VSID_TYPE_LBN 24
13330 #define	MC_CMD_FILTER_OP_EXT_IN_VSID_TYPE_WIDTH 8
13331 /* enum: Match NVGRE traffic with this VSID */
13332 #define	MC_CMD_FILTER_OP_EXT_IN_VSID_TYPE_NVGRE 0x0
13333 /* source IP address to match (as bytes in network order; set last 12 bytes to
13334  * 0 for IPv4 address)
13335  */
13336 #define	MC_CMD_FILTER_OP_EXT_IN_SRC_IP_OFST 76
13337 #define	MC_CMD_FILTER_OP_EXT_IN_SRC_IP_LEN 16
13338 /* destination IP address to match (as bytes in network order; set last 12
13339  * bytes to 0 for IPv4 address)
13340  */
13341 #define	MC_CMD_FILTER_OP_EXT_IN_DST_IP_OFST 92
13342 #define	MC_CMD_FILTER_OP_EXT_IN_DST_IP_LEN 16
13343 /* VXLAN/NVGRE inner frame source MAC address to match (as bytes in network
13344  * order)
13345  */
13346 #define	MC_CMD_FILTER_OP_EXT_IN_IFRM_SRC_MAC_OFST 108
13347 #define	MC_CMD_FILTER_OP_EXT_IN_IFRM_SRC_MAC_LEN 6
13348 /* VXLAN/NVGRE inner frame source port to match (as bytes in network order) */
13349 #define	MC_CMD_FILTER_OP_EXT_IN_IFRM_SRC_PORT_OFST 114
13350 #define	MC_CMD_FILTER_OP_EXT_IN_IFRM_SRC_PORT_LEN 2
13351 /* VXLAN/NVGRE inner frame destination MAC address to match (as bytes in
13352  * network order)
13353  */
13354 #define	MC_CMD_FILTER_OP_EXT_IN_IFRM_DST_MAC_OFST 116
13355 #define	MC_CMD_FILTER_OP_EXT_IN_IFRM_DST_MAC_LEN 6
13356 /* VXLAN/NVGRE inner frame destination port to match (as bytes in network
13357  * order)
13358  */
13359 #define	MC_CMD_FILTER_OP_EXT_IN_IFRM_DST_PORT_OFST 122
13360 #define	MC_CMD_FILTER_OP_EXT_IN_IFRM_DST_PORT_LEN 2
13361 /* VXLAN/NVGRE inner frame Ethernet type to match (as bytes in network order)
13362  */
13363 #define	MC_CMD_FILTER_OP_EXT_IN_IFRM_ETHER_TYPE_OFST 124
13364 #define	MC_CMD_FILTER_OP_EXT_IN_IFRM_ETHER_TYPE_LEN 2
13365 /* VXLAN/NVGRE inner frame Inner VLAN tag to match (as bytes in network order)
13366  */
13367 #define	MC_CMD_FILTER_OP_EXT_IN_IFRM_INNER_VLAN_OFST 126
13368 #define	MC_CMD_FILTER_OP_EXT_IN_IFRM_INNER_VLAN_LEN 2
13369 /* VXLAN/NVGRE inner frame Outer VLAN tag to match (as bytes in network order)
13370  */
13371 #define	MC_CMD_FILTER_OP_EXT_IN_IFRM_OUTER_VLAN_OFST 128
13372 #define	MC_CMD_FILTER_OP_EXT_IN_IFRM_OUTER_VLAN_LEN 2
13373 /* VXLAN/NVGRE inner frame IP protocol to match (in low byte; set high byte to
13374  * 0)
13375  */
13376 #define	MC_CMD_FILTER_OP_EXT_IN_IFRM_IP_PROTO_OFST 130
13377 #define	MC_CMD_FILTER_OP_EXT_IN_IFRM_IP_PROTO_LEN 2
13378 /* VXLAN/NVGRE inner frame Firmware defined register 0 to match (reserved; set
13379  * to 0)
13380  */
13381 #define	MC_CMD_FILTER_OP_EXT_IN_IFRM_FWDEF0_OFST 132
13382 #define	MC_CMD_FILTER_OP_EXT_IN_IFRM_FWDEF0_LEN 4
13383 /* VXLAN/NVGRE inner frame Firmware defined register 1 to match (reserved; set
13384  * to 0)
13385  */
13386 #define	MC_CMD_FILTER_OP_EXT_IN_IFRM_FWDEF1_OFST 136
13387 #define	MC_CMD_FILTER_OP_EXT_IN_IFRM_FWDEF1_LEN 4
13388 /* VXLAN/NVGRE inner frame source IP address to match (as bytes in network
13389  * order; set last 12 bytes to 0 for IPv4 address)
13390  */
13391 #define	MC_CMD_FILTER_OP_EXT_IN_IFRM_SRC_IP_OFST 140
13392 #define	MC_CMD_FILTER_OP_EXT_IN_IFRM_SRC_IP_LEN 16
13393 /* VXLAN/NVGRE inner frame destination IP address to match (as bytes in network
13394  * order; set last 12 bytes to 0 for IPv4 address)
13395  */
13396 #define	MC_CMD_FILTER_OP_EXT_IN_IFRM_DST_IP_OFST 156
13397 #define	MC_CMD_FILTER_OP_EXT_IN_IFRM_DST_IP_LEN 16
13398 
13399 /* MC_CMD_FILTER_OP_V3_IN msgrequest: FILTER_OP extension to support additional
13400  * filter actions for EF100. Some of these actions are also supported on EF10,
13401  * for Intel's DPDK (Data Plane Development Kit, dpdk.org) via its rte_flow
13402  * API. In the latter case, this extension is only useful with the sfc_efx
13403  * driver included as part of DPDK, used in conjunction with the dpdk datapath
13404  * firmware variant.
13405  */
13406 #define	MC_CMD_FILTER_OP_V3_IN_LEN 180
13407 /* identifies the type of operation requested */
13408 #define	MC_CMD_FILTER_OP_V3_IN_OP_OFST 0
13409 #define	MC_CMD_FILTER_OP_V3_IN_OP_LEN 4
13410 /*            Enum values, see field(s): */
13411 /*               MC_CMD_FILTER_OP_IN/OP */
13412 /* filter handle (for remove / unsubscribe operations) */
13413 #define	MC_CMD_FILTER_OP_V3_IN_HANDLE_OFST 4
13414 #define	MC_CMD_FILTER_OP_V3_IN_HANDLE_LEN 8
13415 #define	MC_CMD_FILTER_OP_V3_IN_HANDLE_LO_OFST 4
13416 #define	MC_CMD_FILTER_OP_V3_IN_HANDLE_LO_LEN 4
13417 #define	MC_CMD_FILTER_OP_V3_IN_HANDLE_LO_LBN 32
13418 #define	MC_CMD_FILTER_OP_V3_IN_HANDLE_LO_WIDTH 32
13419 #define	MC_CMD_FILTER_OP_V3_IN_HANDLE_HI_OFST 8
13420 #define	MC_CMD_FILTER_OP_V3_IN_HANDLE_HI_LEN 4
13421 #define	MC_CMD_FILTER_OP_V3_IN_HANDLE_HI_LBN 64
13422 #define	MC_CMD_FILTER_OP_V3_IN_HANDLE_HI_WIDTH 32
13423 /* The port ID associated with the v-adaptor which should contain this filter.
13424  */
13425 #define	MC_CMD_FILTER_OP_V3_IN_PORT_ID_OFST 12
13426 #define	MC_CMD_FILTER_OP_V3_IN_PORT_ID_LEN 4
13427 /* fields to include in match criteria */
13428 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_FIELDS_OFST 16
13429 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_FIELDS_LEN 4
13430 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_SRC_IP_OFST 16
13431 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_SRC_IP_LBN 0
13432 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_SRC_IP_WIDTH 1
13433 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_DST_IP_OFST 16
13434 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_DST_IP_LBN 1
13435 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_DST_IP_WIDTH 1
13436 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_SRC_MAC_OFST 16
13437 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_SRC_MAC_LBN 2
13438 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_SRC_MAC_WIDTH 1
13439 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_SRC_PORT_OFST 16
13440 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_SRC_PORT_LBN 3
13441 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_SRC_PORT_WIDTH 1
13442 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_DST_MAC_OFST 16
13443 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_DST_MAC_LBN 4
13444 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_DST_MAC_WIDTH 1
13445 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_DST_PORT_OFST 16
13446 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_DST_PORT_LBN 5
13447 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_DST_PORT_WIDTH 1
13448 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_ETHER_TYPE_OFST 16
13449 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_ETHER_TYPE_LBN 6
13450 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_ETHER_TYPE_WIDTH 1
13451 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_INNER_VLAN_OFST 16
13452 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_INNER_VLAN_LBN 7
13453 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_INNER_VLAN_WIDTH 1
13454 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_OUTER_VLAN_OFST 16
13455 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_OUTER_VLAN_LBN 8
13456 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_OUTER_VLAN_WIDTH 1
13457 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_IP_PROTO_OFST 16
13458 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_IP_PROTO_LBN 9
13459 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_IP_PROTO_WIDTH 1
13460 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_FWDEF0_OFST 16
13461 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_FWDEF0_LBN 10
13462 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_FWDEF0_WIDTH 1
13463 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_VNI_OR_VSID_OFST 16
13464 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_VNI_OR_VSID_LBN 11
13465 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_VNI_OR_VSID_WIDTH 1
13466 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_IFRM_SRC_IP_OFST 16
13467 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_IFRM_SRC_IP_LBN 12
13468 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_IFRM_SRC_IP_WIDTH 1
13469 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_IFRM_DST_IP_OFST 16
13470 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_IFRM_DST_IP_LBN 13
13471 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_IFRM_DST_IP_WIDTH 1
13472 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_IFRM_SRC_MAC_OFST 16
13473 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_IFRM_SRC_MAC_LBN 14
13474 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_IFRM_SRC_MAC_WIDTH 1
13475 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_IFRM_SRC_PORT_OFST 16
13476 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_IFRM_SRC_PORT_LBN 15
13477 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_IFRM_SRC_PORT_WIDTH 1
13478 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_IFRM_DST_MAC_OFST 16
13479 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_IFRM_DST_MAC_LBN 16
13480 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_IFRM_DST_MAC_WIDTH 1
13481 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_IFRM_DST_PORT_OFST 16
13482 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_IFRM_DST_PORT_LBN 17
13483 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_IFRM_DST_PORT_WIDTH 1
13484 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_IFRM_ETHER_TYPE_OFST 16
13485 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_IFRM_ETHER_TYPE_LBN 18
13486 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_IFRM_ETHER_TYPE_WIDTH 1
13487 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_IFRM_INNER_VLAN_OFST 16
13488 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_IFRM_INNER_VLAN_LBN 19
13489 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_IFRM_INNER_VLAN_WIDTH 1
13490 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_IFRM_OUTER_VLAN_OFST 16
13491 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_IFRM_OUTER_VLAN_LBN 20
13492 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_IFRM_OUTER_VLAN_WIDTH 1
13493 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_IFRM_IP_PROTO_OFST 16
13494 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_IFRM_IP_PROTO_LBN 21
13495 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_IFRM_IP_PROTO_WIDTH 1
13496 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_IFRM_FWDEF0_OFST 16
13497 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_IFRM_FWDEF0_LBN 22
13498 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_IFRM_FWDEF0_WIDTH 1
13499 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_IFRM_FWDEF1_OFST 16
13500 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_IFRM_FWDEF1_LBN 23
13501 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_IFRM_FWDEF1_WIDTH 1
13502 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_IFRM_UNKNOWN_MCAST_DST_OFST 16
13503 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_IFRM_UNKNOWN_MCAST_DST_LBN 24
13504 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_IFRM_UNKNOWN_MCAST_DST_WIDTH 1
13505 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_IFRM_UNKNOWN_UCAST_DST_OFST 16
13506 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_IFRM_UNKNOWN_UCAST_DST_LBN 25
13507 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_IFRM_UNKNOWN_UCAST_DST_WIDTH 1
13508 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_UNKNOWN_IPV4_MCAST_DST_OFST 16
13509 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_UNKNOWN_IPV4_MCAST_DST_LBN 29
13510 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_UNKNOWN_IPV4_MCAST_DST_WIDTH 1
13511 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_UNKNOWN_MCAST_DST_OFST 16
13512 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_UNKNOWN_MCAST_DST_LBN 30
13513 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_UNKNOWN_MCAST_DST_WIDTH 1
13514 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_UNKNOWN_UCAST_DST_OFST 16
13515 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_UNKNOWN_UCAST_DST_LBN 31
13516 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_UNKNOWN_UCAST_DST_WIDTH 1
13517 /* receive destination */
13518 #define	MC_CMD_FILTER_OP_V3_IN_RX_DEST_OFST 20
13519 #define	MC_CMD_FILTER_OP_V3_IN_RX_DEST_LEN 4
13520 /* enum: drop packets */
13521 #define	MC_CMD_FILTER_OP_V3_IN_RX_DEST_DROP 0x0
13522 /* enum: receive to host */
13523 #define	MC_CMD_FILTER_OP_V3_IN_RX_DEST_HOST 0x1
13524 /* enum: receive to MC */
13525 #define	MC_CMD_FILTER_OP_V3_IN_RX_DEST_MC 0x2
13526 /* enum: loop back to TXDP 0 */
13527 #define	MC_CMD_FILTER_OP_V3_IN_RX_DEST_TX0 0x3
13528 /* enum: loop back to TXDP 1 */
13529 #define	MC_CMD_FILTER_OP_V3_IN_RX_DEST_TX1 0x4
13530 /* receive queue handle (for multiple queue modes, this is the base queue) */
13531 #define	MC_CMD_FILTER_OP_V3_IN_RX_QUEUE_OFST 24
13532 #define	MC_CMD_FILTER_OP_V3_IN_RX_QUEUE_LEN 4
13533 /* receive mode */
13534 #define	MC_CMD_FILTER_OP_V3_IN_RX_MODE_OFST 28
13535 #define	MC_CMD_FILTER_OP_V3_IN_RX_MODE_LEN 4
13536 /* enum: receive to just the specified queue */
13537 #define	MC_CMD_FILTER_OP_V3_IN_RX_MODE_SIMPLE 0x0
13538 /* enum: receive to multiple queues using RSS context */
13539 #define	MC_CMD_FILTER_OP_V3_IN_RX_MODE_RSS 0x1
13540 /* enum: receive to multiple queues using .1p mapping */
13541 #define	MC_CMD_FILTER_OP_V3_IN_RX_MODE_DOT1P_MAPPING 0x2
13542 /* enum: install a filter entry that will never match; for test purposes only
13543  */
13544 #define	MC_CMD_FILTER_OP_V3_IN_RX_MODE_TEST_NEVER_MATCH 0x80000000
13545 /* RSS context (for RX_MODE_RSS) or .1p mapping handle (for
13546  * RX_MODE_DOT1P_MAPPING), as returned by MC_CMD_RSS_CONTEXT_ALLOC or
13547  * MC_CMD_DOT1P_MAPPING_ALLOC.
13548  */
13549 #define	MC_CMD_FILTER_OP_V3_IN_RX_CONTEXT_OFST 32
13550 #define	MC_CMD_FILTER_OP_V3_IN_RX_CONTEXT_LEN 4
13551 /* transmit domain (reserved; set to 0) */
13552 #define	MC_CMD_FILTER_OP_V3_IN_TX_DOMAIN_OFST 36
13553 #define	MC_CMD_FILTER_OP_V3_IN_TX_DOMAIN_LEN 4
13554 /* transmit destination (either set the MAC and/or PM bits for explicit
13555  * control, or set this field to TX_DEST_DEFAULT for sensible default
13556  * behaviour)
13557  */
13558 #define	MC_CMD_FILTER_OP_V3_IN_TX_DEST_OFST 40
13559 #define	MC_CMD_FILTER_OP_V3_IN_TX_DEST_LEN 4
13560 /* enum: request default behaviour (based on filter type) */
13561 #define	MC_CMD_FILTER_OP_V3_IN_TX_DEST_DEFAULT 0xffffffff
13562 #define	MC_CMD_FILTER_OP_V3_IN_TX_DEST_MAC_OFST 40
13563 #define	MC_CMD_FILTER_OP_V3_IN_TX_DEST_MAC_LBN 0
13564 #define	MC_CMD_FILTER_OP_V3_IN_TX_DEST_MAC_WIDTH 1
13565 #define	MC_CMD_FILTER_OP_V3_IN_TX_DEST_PM_OFST 40
13566 #define	MC_CMD_FILTER_OP_V3_IN_TX_DEST_PM_LBN 1
13567 #define	MC_CMD_FILTER_OP_V3_IN_TX_DEST_PM_WIDTH 1
13568 /* source MAC address to match (as bytes in network order) */
13569 #define	MC_CMD_FILTER_OP_V3_IN_SRC_MAC_OFST 44
13570 #define	MC_CMD_FILTER_OP_V3_IN_SRC_MAC_LEN 6
13571 /* source port to match (as bytes in network order) */
13572 #define	MC_CMD_FILTER_OP_V3_IN_SRC_PORT_OFST 50
13573 #define	MC_CMD_FILTER_OP_V3_IN_SRC_PORT_LEN 2
13574 /* destination MAC address to match (as bytes in network order) */
13575 #define	MC_CMD_FILTER_OP_V3_IN_DST_MAC_OFST 52
13576 #define	MC_CMD_FILTER_OP_V3_IN_DST_MAC_LEN 6
13577 /* destination port to match (as bytes in network order) */
13578 #define	MC_CMD_FILTER_OP_V3_IN_DST_PORT_OFST 58
13579 #define	MC_CMD_FILTER_OP_V3_IN_DST_PORT_LEN 2
13580 /* Ethernet type to match (as bytes in network order) */
13581 #define	MC_CMD_FILTER_OP_V3_IN_ETHER_TYPE_OFST 60
13582 #define	MC_CMD_FILTER_OP_V3_IN_ETHER_TYPE_LEN 2
13583 /* Inner VLAN tag to match (as bytes in network order) */
13584 #define	MC_CMD_FILTER_OP_V3_IN_INNER_VLAN_OFST 62
13585 #define	MC_CMD_FILTER_OP_V3_IN_INNER_VLAN_LEN 2
13586 /* Outer VLAN tag to match (as bytes in network order) */
13587 #define	MC_CMD_FILTER_OP_V3_IN_OUTER_VLAN_OFST 64
13588 #define	MC_CMD_FILTER_OP_V3_IN_OUTER_VLAN_LEN 2
13589 /* IP protocol to match (in low byte; set high byte to 0) */
13590 #define	MC_CMD_FILTER_OP_V3_IN_IP_PROTO_OFST 66
13591 #define	MC_CMD_FILTER_OP_V3_IN_IP_PROTO_LEN 2
13592 /* Firmware defined register 0 to match (reserved; set to 0) */
13593 #define	MC_CMD_FILTER_OP_V3_IN_FWDEF0_OFST 68
13594 #define	MC_CMD_FILTER_OP_V3_IN_FWDEF0_LEN 4
13595 /* VNI (for VXLAN/Geneve, when IP protocol is UDP) or VSID (for NVGRE, when IP
13596  * protocol is GRE) to match (as bytes in network order; set last byte to 0 for
13597  * VXLAN/NVGRE, or 1 for Geneve)
13598  */
13599 #define	MC_CMD_FILTER_OP_V3_IN_VNI_OR_VSID_OFST 72
13600 #define	MC_CMD_FILTER_OP_V3_IN_VNI_OR_VSID_LEN 4
13601 #define	MC_CMD_FILTER_OP_V3_IN_VNI_VALUE_OFST 72
13602 #define	MC_CMD_FILTER_OP_V3_IN_VNI_VALUE_LBN 0
13603 #define	MC_CMD_FILTER_OP_V3_IN_VNI_VALUE_WIDTH 24
13604 #define	MC_CMD_FILTER_OP_V3_IN_VNI_TYPE_OFST 72
13605 #define	MC_CMD_FILTER_OP_V3_IN_VNI_TYPE_LBN 24
13606 #define	MC_CMD_FILTER_OP_V3_IN_VNI_TYPE_WIDTH 8
13607 /* enum: Match VXLAN traffic with this VNI */
13608 #define	MC_CMD_FILTER_OP_V3_IN_VNI_TYPE_VXLAN 0x0
13609 /* enum: Match Geneve traffic with this VNI */
13610 #define	MC_CMD_FILTER_OP_V3_IN_VNI_TYPE_GENEVE 0x1
13611 /* enum: Reserved for experimental development use */
13612 #define	MC_CMD_FILTER_OP_V3_IN_VNI_TYPE_EXPERIMENTAL 0xfe
13613 #define	MC_CMD_FILTER_OP_V3_IN_VSID_VALUE_OFST 72
13614 #define	MC_CMD_FILTER_OP_V3_IN_VSID_VALUE_LBN 0
13615 #define	MC_CMD_FILTER_OP_V3_IN_VSID_VALUE_WIDTH 24
13616 #define	MC_CMD_FILTER_OP_V3_IN_VSID_TYPE_OFST 72
13617 #define	MC_CMD_FILTER_OP_V3_IN_VSID_TYPE_LBN 24
13618 #define	MC_CMD_FILTER_OP_V3_IN_VSID_TYPE_WIDTH 8
13619 /* enum: Match NVGRE traffic with this VSID */
13620 #define	MC_CMD_FILTER_OP_V3_IN_VSID_TYPE_NVGRE 0x0
13621 /* source IP address to match (as bytes in network order; set last 12 bytes to
13622  * 0 for IPv4 address)
13623  */
13624 #define	MC_CMD_FILTER_OP_V3_IN_SRC_IP_OFST 76
13625 #define	MC_CMD_FILTER_OP_V3_IN_SRC_IP_LEN 16
13626 /* destination IP address to match (as bytes in network order; set last 12
13627  * bytes to 0 for IPv4 address)
13628  */
13629 #define	MC_CMD_FILTER_OP_V3_IN_DST_IP_OFST 92
13630 #define	MC_CMD_FILTER_OP_V3_IN_DST_IP_LEN 16
13631 /* VXLAN/NVGRE inner frame source MAC address to match (as bytes in network
13632  * order)
13633  */
13634 #define	MC_CMD_FILTER_OP_V3_IN_IFRM_SRC_MAC_OFST 108
13635 #define	MC_CMD_FILTER_OP_V3_IN_IFRM_SRC_MAC_LEN 6
13636 /* VXLAN/NVGRE inner frame source port to match (as bytes in network order) */
13637 #define	MC_CMD_FILTER_OP_V3_IN_IFRM_SRC_PORT_OFST 114
13638 #define	MC_CMD_FILTER_OP_V3_IN_IFRM_SRC_PORT_LEN 2
13639 /* VXLAN/NVGRE inner frame destination MAC address to match (as bytes in
13640  * network order)
13641  */
13642 #define	MC_CMD_FILTER_OP_V3_IN_IFRM_DST_MAC_OFST 116
13643 #define	MC_CMD_FILTER_OP_V3_IN_IFRM_DST_MAC_LEN 6
13644 /* VXLAN/NVGRE inner frame destination port to match (as bytes in network
13645  * order)
13646  */
13647 #define	MC_CMD_FILTER_OP_V3_IN_IFRM_DST_PORT_OFST 122
13648 #define	MC_CMD_FILTER_OP_V3_IN_IFRM_DST_PORT_LEN 2
13649 /* VXLAN/NVGRE inner frame Ethernet type to match (as bytes in network order)
13650  */
13651 #define	MC_CMD_FILTER_OP_V3_IN_IFRM_ETHER_TYPE_OFST 124
13652 #define	MC_CMD_FILTER_OP_V3_IN_IFRM_ETHER_TYPE_LEN 2
13653 /* VXLAN/NVGRE inner frame Inner VLAN tag to match (as bytes in network order)
13654  */
13655 #define	MC_CMD_FILTER_OP_V3_IN_IFRM_INNER_VLAN_OFST 126
13656 #define	MC_CMD_FILTER_OP_V3_IN_IFRM_INNER_VLAN_LEN 2
13657 /* VXLAN/NVGRE inner frame Outer VLAN tag to match (as bytes in network order)
13658  */
13659 #define	MC_CMD_FILTER_OP_V3_IN_IFRM_OUTER_VLAN_OFST 128
13660 #define	MC_CMD_FILTER_OP_V3_IN_IFRM_OUTER_VLAN_LEN 2
13661 /* VXLAN/NVGRE inner frame IP protocol to match (in low byte; set high byte to
13662  * 0)
13663  */
13664 #define	MC_CMD_FILTER_OP_V3_IN_IFRM_IP_PROTO_OFST 130
13665 #define	MC_CMD_FILTER_OP_V3_IN_IFRM_IP_PROTO_LEN 2
13666 /* VXLAN/NVGRE inner frame Firmware defined register 0 to match (reserved; set
13667  * to 0)
13668  */
13669 #define	MC_CMD_FILTER_OP_V3_IN_IFRM_FWDEF0_OFST 132
13670 #define	MC_CMD_FILTER_OP_V3_IN_IFRM_FWDEF0_LEN 4
13671 /* VXLAN/NVGRE inner frame Firmware defined register 1 to match (reserved; set
13672  * to 0)
13673  */
13674 #define	MC_CMD_FILTER_OP_V3_IN_IFRM_FWDEF1_OFST 136
13675 #define	MC_CMD_FILTER_OP_V3_IN_IFRM_FWDEF1_LEN 4
13676 /* VXLAN/NVGRE inner frame source IP address to match (as bytes in network
13677  * order; set last 12 bytes to 0 for IPv4 address)
13678  */
13679 #define	MC_CMD_FILTER_OP_V3_IN_IFRM_SRC_IP_OFST 140
13680 #define	MC_CMD_FILTER_OP_V3_IN_IFRM_SRC_IP_LEN 16
13681 /* VXLAN/NVGRE inner frame destination IP address to match (as bytes in network
13682  * order; set last 12 bytes to 0 for IPv4 address)
13683  */
13684 #define	MC_CMD_FILTER_OP_V3_IN_IFRM_DST_IP_OFST 156
13685 #define	MC_CMD_FILTER_OP_V3_IN_IFRM_DST_IP_LEN 16
13686 /* Flags controlling mutations of the packet and/or metadata when the filter is
13687  * matched. The user_mark and user_flag fields' logic is as follows: if
13688  * (req.MATCH_BITOR_FLAG == 1) user_flag = req.MATCH_SET_FLAG bit_or user_flag;
13689  * else user_flag = req.MATCH_SET_FLAG; if (req.MATCH_SET_MARK == 0) user_mark
13690  * = 0; else if (req.MATCH_BITOR_MARK == 1) user_mark = req.MATCH_SET_MARK
13691  * bit_or user_mark; else user_mark = req.MATCH_SET_MARK; N.B. These flags
13692  * overlap with the MATCH_ACTION field, which is deprecated in favour of this
13693  * field. For the cases where these flags induce a valid encoding of the
13694  * MATCH_ACTION field, the semantics agree.
13695  */
13696 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_ACTION_FLAGS_OFST 172
13697 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_ACTION_FLAGS_LEN 4
13698 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_SET_FLAG_OFST 172
13699 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_SET_FLAG_LBN 0
13700 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_SET_FLAG_WIDTH 1
13701 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_SET_MARK_OFST 172
13702 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_SET_MARK_LBN 1
13703 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_SET_MARK_WIDTH 1
13704 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_BITOR_FLAG_OFST 172
13705 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_BITOR_FLAG_LBN 2
13706 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_BITOR_FLAG_WIDTH 1
13707 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_BITOR_MARK_OFST 172
13708 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_BITOR_MARK_LBN 3
13709 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_BITOR_MARK_WIDTH 1
13710 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_STRIP_VLAN_OFST 172
13711 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_STRIP_VLAN_LBN 4
13712 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_STRIP_VLAN_WIDTH 1
13713 /* Deprecated: the overlapping MATCH_ACTION_FLAGS field exposes all of the
13714  * functionality of this field in an ABI-backwards-compatible manner, and
13715  * should be used instead. Any future extensions should be made to the
13716  * MATCH_ACTION_FLAGS field, and not to this field. Set an action for all
13717  * packets matching this filter. The DPDK driver and (on EF10) dpdk f/w variant
13718  * use their own specific delivery structures, which are documented in the DPDK
13719  * Firmware Driver Interface (SF-119419-TC). Requesting anything other than
13720  * MATCH_ACTION_NONE on an EF10 NIC running another f/w variant will cause the
13721  * filter insertion to fail with ENOTSUP.
13722  */
13723 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_ACTION_OFST 172
13724 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_ACTION_LEN 4
13725 /* enum: do nothing extra */
13726 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_ACTION_NONE 0x0
13727 /* enum: Set the match flag in the packet prefix for packets matching the
13728  * filter (only with dpdk firmware, otherwise fails with ENOTSUP). Used to
13729  * support the DPDK rte_flow "FLAG" action.
13730  */
13731 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_ACTION_FLAG 0x1
13732 /* enum: Insert MATCH_MARK_VALUE into the packet prefix for packets matching
13733  * the filter (only with dpdk firmware, otherwise fails with ENOTSUP). Used to
13734  * support the DPDK rte_flow "MARK" action.
13735  */
13736 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_ACTION_MARK 0x2
13737 /* the mark value for MATCH_ACTION_MARK. Requesting a value larger than the
13738  * maximum (obtained from MC_CMD_GET_CAPABILITIES_V5/FILTER_ACTION_MARK_MAX)
13739  * will cause the filter insertion to fail with EINVAL.
13740  */
13741 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_MARK_VALUE_OFST 176
13742 #define	MC_CMD_FILTER_OP_V3_IN_MATCH_MARK_VALUE_LEN 4
13743 
13744 /* MC_CMD_FILTER_OP_OUT msgresponse */
13745 #define	MC_CMD_FILTER_OP_OUT_LEN 12
13746 /* identifies the type of operation requested */
13747 #define	MC_CMD_FILTER_OP_OUT_OP_OFST 0
13748 #define	MC_CMD_FILTER_OP_OUT_OP_LEN 4
13749 /*            Enum values, see field(s): */
13750 /*               MC_CMD_FILTER_OP_IN/OP */
13751 /* Returned filter handle (for insert / subscribe operations). Note that these
13752  * handles should be considered opaque to the host, although a value of
13753  * 0xFFFFFFFF_FFFFFFFF is guaranteed never to be a valid handle.
13754  */
13755 #define	MC_CMD_FILTER_OP_OUT_HANDLE_OFST 4
13756 #define	MC_CMD_FILTER_OP_OUT_HANDLE_LEN 8
13757 #define	MC_CMD_FILTER_OP_OUT_HANDLE_LO_OFST 4
13758 #define	MC_CMD_FILTER_OP_OUT_HANDLE_LO_LEN 4
13759 #define	MC_CMD_FILTER_OP_OUT_HANDLE_LO_LBN 32
13760 #define	MC_CMD_FILTER_OP_OUT_HANDLE_LO_WIDTH 32
13761 #define	MC_CMD_FILTER_OP_OUT_HANDLE_HI_OFST 8
13762 #define	MC_CMD_FILTER_OP_OUT_HANDLE_HI_LEN 4
13763 #define	MC_CMD_FILTER_OP_OUT_HANDLE_HI_LBN 64
13764 #define	MC_CMD_FILTER_OP_OUT_HANDLE_HI_WIDTH 32
13765 /* enum: guaranteed invalid filter handle (low 32 bits) */
13766 #define	MC_CMD_FILTER_OP_OUT_HANDLE_LO_INVALID 0xffffffff
13767 /* enum: guaranteed invalid filter handle (high 32 bits) */
13768 #define	MC_CMD_FILTER_OP_OUT_HANDLE_HI_INVALID 0xffffffff
13769 
13770 /* MC_CMD_FILTER_OP_EXT_OUT msgresponse */
13771 #define	MC_CMD_FILTER_OP_EXT_OUT_LEN 12
13772 /* identifies the type of operation requested */
13773 #define	MC_CMD_FILTER_OP_EXT_OUT_OP_OFST 0
13774 #define	MC_CMD_FILTER_OP_EXT_OUT_OP_LEN 4
13775 /*            Enum values, see field(s): */
13776 /*               MC_CMD_FILTER_OP_EXT_IN/OP */
13777 /* Returned filter handle (for insert / subscribe operations). Note that these
13778  * handles should be considered opaque to the host, although a value of
13779  * 0xFFFFFFFF_FFFFFFFF is guaranteed never to be a valid handle.
13780  */
13781 #define	MC_CMD_FILTER_OP_EXT_OUT_HANDLE_OFST 4
13782 #define	MC_CMD_FILTER_OP_EXT_OUT_HANDLE_LEN 8
13783 #define	MC_CMD_FILTER_OP_EXT_OUT_HANDLE_LO_OFST 4
13784 #define	MC_CMD_FILTER_OP_EXT_OUT_HANDLE_LO_LEN 4
13785 #define	MC_CMD_FILTER_OP_EXT_OUT_HANDLE_LO_LBN 32
13786 #define	MC_CMD_FILTER_OP_EXT_OUT_HANDLE_LO_WIDTH 32
13787 #define	MC_CMD_FILTER_OP_EXT_OUT_HANDLE_HI_OFST 8
13788 #define	MC_CMD_FILTER_OP_EXT_OUT_HANDLE_HI_LEN 4
13789 #define	MC_CMD_FILTER_OP_EXT_OUT_HANDLE_HI_LBN 64
13790 #define	MC_CMD_FILTER_OP_EXT_OUT_HANDLE_HI_WIDTH 32
13791 /*            Enum values, see field(s): */
13792 /*               MC_CMD_FILTER_OP_OUT/HANDLE */
13793 
13794 
13795 /***********************************/
13796 /* MC_CMD_GET_PARSER_DISP_INFO
13797  * Get information related to the parser-dispatcher subsystem
13798  */
13799 #define	MC_CMD_GET_PARSER_DISP_INFO 0xe4
13800 #define	MC_CMD_GET_PARSER_DISP_INFO_MSGSET 0xe4
13801 #undef	MC_CMD_0xe4_PRIVILEGE_CTG
13802 
13803 #define	MC_CMD_0xe4_PRIVILEGE_CTG SRIOV_CTG_GENERAL
13804 
13805 /* MC_CMD_GET_PARSER_DISP_INFO_IN msgrequest */
13806 #define	MC_CMD_GET_PARSER_DISP_INFO_IN_LEN 4
13807 /* identifies the type of operation requested */
13808 #define	MC_CMD_GET_PARSER_DISP_INFO_IN_OP_OFST 0
13809 #define	MC_CMD_GET_PARSER_DISP_INFO_IN_OP_LEN 4
13810 /* enum: read the list of supported RX filter matches */
13811 #define	MC_CMD_GET_PARSER_DISP_INFO_IN_OP_GET_SUPPORTED_RX_MATCHES 0x1
13812 /* enum: read flags indicating restrictions on filter insertion for the calling
13813  * client
13814  */
13815 #define	MC_CMD_GET_PARSER_DISP_INFO_IN_OP_GET_RESTRICTIONS 0x2
13816 /* enum: read properties relating to security rules (Medford-only; for use by
13817  * SolarSecure apps, not directly by drivers. See SF-114946-SW.)
13818  */
13819 #define	MC_CMD_GET_PARSER_DISP_INFO_IN_OP_GET_SECURITY_RULE_INFO 0x3
13820 /* enum: read the list of supported RX filter matches for VXLAN/NVGRE
13821  * encapsulated frames, which follow a different match sequence to normal
13822  * frames (Medford only)
13823  */
13824 #define	MC_CMD_GET_PARSER_DISP_INFO_IN_OP_GET_SUPPORTED_ENCAP_RX_MATCHES 0x4
13825 /* enum: read the list of supported matches for the encapsulation detection
13826  * rules inserted by MC_CMD_VNIC_ENCAP_RULE_ADD. (ef100 and later)
13827  */
13828 #define	MC_CMD_GET_PARSER_DISP_INFO_IN_OP_GET_SUPPORTED_VNIC_ENCAP_MATCHES 0x5
13829 /* enum: read the supported encapsulation types for the VNIC */
13830 #define	MC_CMD_GET_PARSER_DISP_INFO_IN_OP_GET_SUPPORTED_VNIC_ENCAP_TYPES 0x6
13831 
13832 /* MC_CMD_GET_PARSER_DISP_INFO_OUT msgresponse */
13833 #define	MC_CMD_GET_PARSER_DISP_INFO_OUT_LENMIN 8
13834 #define	MC_CMD_GET_PARSER_DISP_INFO_OUT_LENMAX 252
13835 #define	MC_CMD_GET_PARSER_DISP_INFO_OUT_LENMAX_MCDI2 1020
13836 #define	MC_CMD_GET_PARSER_DISP_INFO_OUT_LEN(num) (8+4*(num))
13837 #define	MC_CMD_GET_PARSER_DISP_INFO_OUT_SUPPORTED_MATCHES_NUM(len) (((len)-8)/4)
13838 /* identifies the type of operation requested */
13839 #define	MC_CMD_GET_PARSER_DISP_INFO_OUT_OP_OFST 0
13840 #define	MC_CMD_GET_PARSER_DISP_INFO_OUT_OP_LEN 4
13841 /*            Enum values, see field(s): */
13842 /*               MC_CMD_GET_PARSER_DISP_INFO_IN/OP */
13843 /* number of supported match types */
13844 #define	MC_CMD_GET_PARSER_DISP_INFO_OUT_NUM_SUPPORTED_MATCHES_OFST 4
13845 #define	MC_CMD_GET_PARSER_DISP_INFO_OUT_NUM_SUPPORTED_MATCHES_LEN 4
13846 /* array of supported match types (valid MATCH_FIELDS values for
13847  * MC_CMD_FILTER_OP) sorted in decreasing priority order
13848  */
13849 #define	MC_CMD_GET_PARSER_DISP_INFO_OUT_SUPPORTED_MATCHES_OFST 8
13850 #define	MC_CMD_GET_PARSER_DISP_INFO_OUT_SUPPORTED_MATCHES_LEN 4
13851 #define	MC_CMD_GET_PARSER_DISP_INFO_OUT_SUPPORTED_MATCHES_MINNUM 0
13852 #define	MC_CMD_GET_PARSER_DISP_INFO_OUT_SUPPORTED_MATCHES_MAXNUM 61
13853 #define	MC_CMD_GET_PARSER_DISP_INFO_OUT_SUPPORTED_MATCHES_MAXNUM_MCDI2 253
13854 
13855 /* MC_CMD_GET_PARSER_DISP_RESTRICTIONS_OUT msgresponse */
13856 #define	MC_CMD_GET_PARSER_DISP_RESTRICTIONS_OUT_LEN 8
13857 /* identifies the type of operation requested */
13858 #define	MC_CMD_GET_PARSER_DISP_RESTRICTIONS_OUT_OP_OFST 0
13859 #define	MC_CMD_GET_PARSER_DISP_RESTRICTIONS_OUT_OP_LEN 4
13860 /*            Enum values, see field(s): */
13861 /*               MC_CMD_GET_PARSER_DISP_INFO_IN/OP */
13862 /* bitfield of filter insertion restrictions */
13863 #define	MC_CMD_GET_PARSER_DISP_RESTRICTIONS_OUT_RESTRICTION_FLAGS_OFST 4
13864 #define	MC_CMD_GET_PARSER_DISP_RESTRICTIONS_OUT_RESTRICTION_FLAGS_LEN 4
13865 #define	MC_CMD_GET_PARSER_DISP_RESTRICTIONS_OUT_DST_IP_MCAST_ONLY_OFST 4
13866 #define	MC_CMD_GET_PARSER_DISP_RESTRICTIONS_OUT_DST_IP_MCAST_ONLY_LBN 0
13867 #define	MC_CMD_GET_PARSER_DISP_RESTRICTIONS_OUT_DST_IP_MCAST_ONLY_WIDTH 1
13868 
13869 /* MC_CMD_GET_PARSER_DISP_SECURITY_RULE_INFO_OUT msgresponse:
13870  * GET_PARSER_DISP_INFO response format for OP_GET_SECURITY_RULE_INFO.
13871  * (Medford-only; for use by SolarSecure apps, not directly by drivers. See
13872  * SF-114946-SW.) NOTE - this message definition is provisional. It has not yet
13873  * been used in any released code and may change during development. This note
13874  * will be removed once it is regarded as stable.
13875  */
13876 #define	MC_CMD_GET_PARSER_DISP_SECURITY_RULE_INFO_OUT_LEN 36
13877 /* identifies the type of operation requested */
13878 #define	MC_CMD_GET_PARSER_DISP_SECURITY_RULE_INFO_OUT_OP_OFST 0
13879 #define	MC_CMD_GET_PARSER_DISP_SECURITY_RULE_INFO_OUT_OP_LEN 4
13880 /*            Enum values, see field(s): */
13881 /*               MC_CMD_GET_PARSER_DISP_INFO_IN/OP */
13882 /* a version number representing the set of rule lookups that are implemented
13883  * by the currently running firmware
13884  */
13885 #define	MC_CMD_GET_PARSER_DISP_SECURITY_RULE_INFO_OUT_RULES_VERSION_OFST 4
13886 #define	MC_CMD_GET_PARSER_DISP_SECURITY_RULE_INFO_OUT_RULES_VERSION_LEN 4
13887 /* enum: implements lookup sequences described in SF-114946-SW draft C */
13888 #define	MC_CMD_GET_PARSER_DISP_SECURITY_RULE_INFO_OUT_RULES_VERSION_SF_114946_SW_C 0x0
13889 /* the number of nodes in the subnet map */
13890 #define	MC_CMD_GET_PARSER_DISP_SECURITY_RULE_INFO_OUT_SUBNET_MAP_NUM_NODES_OFST 8
13891 #define	MC_CMD_GET_PARSER_DISP_SECURITY_RULE_INFO_OUT_SUBNET_MAP_NUM_NODES_LEN 4
13892 /* the number of entries in one subnet map node */
13893 #define	MC_CMD_GET_PARSER_DISP_SECURITY_RULE_INFO_OUT_SUBNET_MAP_NUM_ENTRIES_PER_NODE_OFST 12
13894 #define	MC_CMD_GET_PARSER_DISP_SECURITY_RULE_INFO_OUT_SUBNET_MAP_NUM_ENTRIES_PER_NODE_LEN 4
13895 /* minimum valid value for a subnet ID in a subnet map leaf */
13896 #define	MC_CMD_GET_PARSER_DISP_SECURITY_RULE_INFO_OUT_SUBNET_ID_MIN_OFST 16
13897 #define	MC_CMD_GET_PARSER_DISP_SECURITY_RULE_INFO_OUT_SUBNET_ID_MIN_LEN 4
13898 /* maximum valid value for a subnet ID in a subnet map leaf */
13899 #define	MC_CMD_GET_PARSER_DISP_SECURITY_RULE_INFO_OUT_SUBNET_ID_MAX_OFST 20
13900 #define	MC_CMD_GET_PARSER_DISP_SECURITY_RULE_INFO_OUT_SUBNET_ID_MAX_LEN 4
13901 /* the number of entries in the local and remote port range maps */
13902 #define	MC_CMD_GET_PARSER_DISP_SECURITY_RULE_INFO_OUT_PORTRANGE_TREE_NUM_ENTRIES_OFST 24
13903 #define	MC_CMD_GET_PARSER_DISP_SECURITY_RULE_INFO_OUT_PORTRANGE_TREE_NUM_ENTRIES_LEN 4
13904 /* minimum valid value for a portrange ID in a port range map leaf */
13905 #define	MC_CMD_GET_PARSER_DISP_SECURITY_RULE_INFO_OUT_PORTRANGE_ID_MIN_OFST 28
13906 #define	MC_CMD_GET_PARSER_DISP_SECURITY_RULE_INFO_OUT_PORTRANGE_ID_MIN_LEN 4
13907 /* maximum valid value for a portrange ID in a port range map leaf */
13908 #define	MC_CMD_GET_PARSER_DISP_SECURITY_RULE_INFO_OUT_PORTRANGE_ID_MAX_OFST 32
13909 #define	MC_CMD_GET_PARSER_DISP_SECURITY_RULE_INFO_OUT_PORTRANGE_ID_MAX_LEN 4
13910 
13911 /* MC_CMD_GET_PARSER_DISP_VNIC_ENCAP_MATCHES_OUT msgresponse: This response is
13912  * returned if a MC_CMD_GET_PARSER_DISP_INFO_IN request is sent with OP value
13913  * OP_GET_SUPPORTED_VNIC_ENCAP_MATCHES. It contains information about the
13914  * supported match types that can be used in the encapsulation detection rules
13915  * inserted by MC_CMD_VNIC_ENCAP_RULE_ADD.
13916  */
13917 #define	MC_CMD_GET_PARSER_DISP_VNIC_ENCAP_MATCHES_OUT_LENMIN 8
13918 #define	MC_CMD_GET_PARSER_DISP_VNIC_ENCAP_MATCHES_OUT_LENMAX 252
13919 #define	MC_CMD_GET_PARSER_DISP_VNIC_ENCAP_MATCHES_OUT_LENMAX_MCDI2 1020
13920 #define	MC_CMD_GET_PARSER_DISP_VNIC_ENCAP_MATCHES_OUT_LEN(num) (8+4*(num))
13921 #define	MC_CMD_GET_PARSER_DISP_VNIC_ENCAP_MATCHES_OUT_SUPPORTED_MATCHES_NUM(len) (((len)-8)/4)
13922 /* The op code OP_GET_SUPPORTED_VNIC_ENCAP_MATCHES is returned. */
13923 #define	MC_CMD_GET_PARSER_DISP_VNIC_ENCAP_MATCHES_OUT_OP_OFST 0
13924 #define	MC_CMD_GET_PARSER_DISP_VNIC_ENCAP_MATCHES_OUT_OP_LEN 4
13925 /*            Enum values, see field(s): */
13926 /*               MC_CMD_GET_PARSER_DISP_INFO_IN/OP */
13927 /* number of supported match types */
13928 #define	MC_CMD_GET_PARSER_DISP_VNIC_ENCAP_MATCHES_OUT_NUM_SUPPORTED_MATCHES_OFST 4
13929 #define	MC_CMD_GET_PARSER_DISP_VNIC_ENCAP_MATCHES_OUT_NUM_SUPPORTED_MATCHES_LEN 4
13930 /* array of supported match types (valid MATCH_FLAGS values for
13931  * MC_CMD_VNIC_ENCAP_RULE_ADD) sorted in decreasing priority order
13932  */
13933 #define	MC_CMD_GET_PARSER_DISP_VNIC_ENCAP_MATCHES_OUT_SUPPORTED_MATCHES_OFST 8
13934 #define	MC_CMD_GET_PARSER_DISP_VNIC_ENCAP_MATCHES_OUT_SUPPORTED_MATCHES_LEN 4
13935 #define	MC_CMD_GET_PARSER_DISP_VNIC_ENCAP_MATCHES_OUT_SUPPORTED_MATCHES_MINNUM 0
13936 #define	MC_CMD_GET_PARSER_DISP_VNIC_ENCAP_MATCHES_OUT_SUPPORTED_MATCHES_MAXNUM 61
13937 #define	MC_CMD_GET_PARSER_DISP_VNIC_ENCAP_MATCHES_OUT_SUPPORTED_MATCHES_MAXNUM_MCDI2 253
13938 
13939 /* MC_CMD_GET_PARSER_DISP_SUPPORTED_VNIC_ENCAP_TYPES_OUT msgresponse: Returns
13940  * the supported encapsulation types for the VNIC
13941  */
13942 #define	MC_CMD_GET_PARSER_DISP_SUPPORTED_VNIC_ENCAP_TYPES_OUT_LEN 8
13943 /* The op code OP_GET_SUPPORTED_VNIC_ENCAP_TYPES is returned */
13944 #define	MC_CMD_GET_PARSER_DISP_SUPPORTED_VNIC_ENCAP_TYPES_OUT_OP_OFST 0
13945 #define	MC_CMD_GET_PARSER_DISP_SUPPORTED_VNIC_ENCAP_TYPES_OUT_OP_LEN 4
13946 /*            Enum values, see field(s): */
13947 /*               MC_CMD_GET_PARSER_DISP_INFO_IN/OP */
13948 #define	MC_CMD_GET_PARSER_DISP_SUPPORTED_VNIC_ENCAP_TYPES_OUT_ENCAP_TYPES_SUPPORTED_OFST 4
13949 #define	MC_CMD_GET_PARSER_DISP_SUPPORTED_VNIC_ENCAP_TYPES_OUT_ENCAP_TYPES_SUPPORTED_LEN 4
13950 #define	MC_CMD_GET_PARSER_DISP_SUPPORTED_VNIC_ENCAP_TYPES_OUT_ENCAP_TYPE_VXLAN_OFST 4
13951 #define	MC_CMD_GET_PARSER_DISP_SUPPORTED_VNIC_ENCAP_TYPES_OUT_ENCAP_TYPE_VXLAN_LBN 0
13952 #define	MC_CMD_GET_PARSER_DISP_SUPPORTED_VNIC_ENCAP_TYPES_OUT_ENCAP_TYPE_VXLAN_WIDTH 1
13953 #define	MC_CMD_GET_PARSER_DISP_SUPPORTED_VNIC_ENCAP_TYPES_OUT_ENCAP_TYPE_NVGRE_OFST 4
13954 #define	MC_CMD_GET_PARSER_DISP_SUPPORTED_VNIC_ENCAP_TYPES_OUT_ENCAP_TYPE_NVGRE_LBN 1
13955 #define	MC_CMD_GET_PARSER_DISP_SUPPORTED_VNIC_ENCAP_TYPES_OUT_ENCAP_TYPE_NVGRE_WIDTH 1
13956 #define	MC_CMD_GET_PARSER_DISP_SUPPORTED_VNIC_ENCAP_TYPES_OUT_ENCAP_TYPE_GENEVE_OFST 4
13957 #define	MC_CMD_GET_PARSER_DISP_SUPPORTED_VNIC_ENCAP_TYPES_OUT_ENCAP_TYPE_GENEVE_LBN 2
13958 #define	MC_CMD_GET_PARSER_DISP_SUPPORTED_VNIC_ENCAP_TYPES_OUT_ENCAP_TYPE_GENEVE_WIDTH 1
13959 #define	MC_CMD_GET_PARSER_DISP_SUPPORTED_VNIC_ENCAP_TYPES_OUT_ENCAP_TYPE_L2GRE_OFST 4
13960 #define	MC_CMD_GET_PARSER_DISP_SUPPORTED_VNIC_ENCAP_TYPES_OUT_ENCAP_TYPE_L2GRE_LBN 3
13961 #define	MC_CMD_GET_PARSER_DISP_SUPPORTED_VNIC_ENCAP_TYPES_OUT_ENCAP_TYPE_L2GRE_WIDTH 1
13962 
13963 
13964 /***********************************/
13965 /* MC_CMD_PARSER_DISP_RW
13966  * Direct read/write of parser-dispatcher state (DICPUs and LUE) for debugging.
13967  * Please note that this interface is only of use to debug tools which have
13968  * knowledge of firmware and hardware data structures; nothing here is intended
13969  * for use by normal driver code. Note that although this command is in the
13970  * Admin privilege group, in tamperproof adapters, only read operations are
13971  * permitted.
13972  */
13973 #define	MC_CMD_PARSER_DISP_RW 0xe5
13974 #define	MC_CMD_PARSER_DISP_RW_MSGSET 0xe5
13975 #undef	MC_CMD_0xe5_PRIVILEGE_CTG
13976 
13977 #define	MC_CMD_0xe5_PRIVILEGE_CTG SRIOV_CTG_ADMIN
13978 
13979 /* MC_CMD_PARSER_DISP_RW_IN msgrequest */
13980 #define	MC_CMD_PARSER_DISP_RW_IN_LEN 32
13981 /* identifies the target of the operation */
13982 #define	MC_CMD_PARSER_DISP_RW_IN_TARGET_OFST 0
13983 #define	MC_CMD_PARSER_DISP_RW_IN_TARGET_LEN 4
13984 /* enum: RX dispatcher CPU */
13985 #define	MC_CMD_PARSER_DISP_RW_IN_RX_DICPU 0x0
13986 /* enum: TX dispatcher CPU */
13987 #define	MC_CMD_PARSER_DISP_RW_IN_TX_DICPU 0x1
13988 /* enum: Lookup engine (with original metadata format). Deprecated; used only
13989  * by cmdclient as a fallback for very old Huntington firmware, and not
13990  * supported in firmware beyond v6.4.0.1005. Use LUE_VERSIONED_METADATA
13991  * instead.
13992  */
13993 #define	MC_CMD_PARSER_DISP_RW_IN_LUE 0x2
13994 /* enum: Lookup engine (with requested metadata format) */
13995 #define	MC_CMD_PARSER_DISP_RW_IN_LUE_VERSIONED_METADATA 0x3
13996 /* enum: RX0 dispatcher CPU (alias for RX_DICPU; Medford has 2 RX DICPUs) */
13997 #define	MC_CMD_PARSER_DISP_RW_IN_RX0_DICPU 0x0
13998 /* enum: RX1 dispatcher CPU (only valid for Medford) */
13999 #define	MC_CMD_PARSER_DISP_RW_IN_RX1_DICPU 0x4
14000 /* enum: Miscellaneous other state (only valid for Medford) */
14001 #define	MC_CMD_PARSER_DISP_RW_IN_MISC_STATE 0x5
14002 /* identifies the type of operation requested */
14003 #define	MC_CMD_PARSER_DISP_RW_IN_OP_OFST 4
14004 #define	MC_CMD_PARSER_DISP_RW_IN_OP_LEN 4
14005 /* enum: Read a word of DICPU DMEM or a LUE entry */
14006 #define	MC_CMD_PARSER_DISP_RW_IN_READ 0x0
14007 /* enum: Write a word of DICPU DMEM or a LUE entry. Not permitted on
14008  * tamperproof adapters.
14009  */
14010 #define	MC_CMD_PARSER_DISP_RW_IN_WRITE 0x1
14011 /* enum: Read-modify-write a word of DICPU DMEM (not valid for LUE). Not
14012  * permitted on tamperproof adapters.
14013  */
14014 #define	MC_CMD_PARSER_DISP_RW_IN_RMW 0x2
14015 /* data memory address (DICPU targets) or LUE index (LUE targets) */
14016 #define	MC_CMD_PARSER_DISP_RW_IN_ADDRESS_OFST 8
14017 #define	MC_CMD_PARSER_DISP_RW_IN_ADDRESS_LEN 4
14018 /* selector (for MISC_STATE target) */
14019 #define	MC_CMD_PARSER_DISP_RW_IN_SELECTOR_OFST 8
14020 #define	MC_CMD_PARSER_DISP_RW_IN_SELECTOR_LEN 4
14021 /* enum: Port to datapath mapping */
14022 #define	MC_CMD_PARSER_DISP_RW_IN_PORT_DP_MAPPING 0x1
14023 /* value to write (for DMEM writes) */
14024 #define	MC_CMD_PARSER_DISP_RW_IN_DMEM_WRITE_VALUE_OFST 12
14025 #define	MC_CMD_PARSER_DISP_RW_IN_DMEM_WRITE_VALUE_LEN 4
14026 /* XOR value (for DMEM read-modify-writes: new = (old & mask) ^ value) */
14027 #define	MC_CMD_PARSER_DISP_RW_IN_DMEM_RMW_XOR_VALUE_OFST 12
14028 #define	MC_CMD_PARSER_DISP_RW_IN_DMEM_RMW_XOR_VALUE_LEN 4
14029 /* AND mask (for DMEM read-modify-writes: new = (old & mask) ^ value) */
14030 #define	MC_CMD_PARSER_DISP_RW_IN_DMEM_RMW_AND_MASK_OFST 16
14031 #define	MC_CMD_PARSER_DISP_RW_IN_DMEM_RMW_AND_MASK_LEN 4
14032 /* metadata format (for LUE reads using LUE_VERSIONED_METADATA) */
14033 #define	MC_CMD_PARSER_DISP_RW_IN_LUE_READ_METADATA_VERSION_OFST 12
14034 #define	MC_CMD_PARSER_DISP_RW_IN_LUE_READ_METADATA_VERSION_LEN 4
14035 /* value to write (for LUE writes) */
14036 #define	MC_CMD_PARSER_DISP_RW_IN_LUE_WRITE_VALUE_OFST 12
14037 #define	MC_CMD_PARSER_DISP_RW_IN_LUE_WRITE_VALUE_LEN 20
14038 
14039 /* MC_CMD_PARSER_DISP_RW_OUT msgresponse */
14040 #define	MC_CMD_PARSER_DISP_RW_OUT_LEN 52
14041 /* value read (for DMEM reads) */
14042 #define	MC_CMD_PARSER_DISP_RW_OUT_DMEM_READ_VALUE_OFST 0
14043 #define	MC_CMD_PARSER_DISP_RW_OUT_DMEM_READ_VALUE_LEN 4
14044 /* value read (for LUE reads) */
14045 #define	MC_CMD_PARSER_DISP_RW_OUT_LUE_READ_VALUE_OFST 0
14046 #define	MC_CMD_PARSER_DISP_RW_OUT_LUE_READ_VALUE_LEN 20
14047 /* up to 8 32-bit words of additional soft state from the LUE manager (the
14048  * exact content is firmware-dependent and intended only for debug use)
14049  */
14050 #define	MC_CMD_PARSER_DISP_RW_OUT_LUE_MGR_STATE_OFST 20
14051 #define	MC_CMD_PARSER_DISP_RW_OUT_LUE_MGR_STATE_LEN 32
14052 /* datapath(s) used for each port (for MISC_STATE PORT_DP_MAPPING selector) */
14053 #define	MC_CMD_PARSER_DISP_RW_OUT_PORT_DP_MAPPING_OFST 0
14054 #define	MC_CMD_PARSER_DISP_RW_OUT_PORT_DP_MAPPING_LEN 4
14055 #define	MC_CMD_PARSER_DISP_RW_OUT_PORT_DP_MAPPING_NUM 4
14056 /* enum property: bitmask */
14057 #define	MC_CMD_PARSER_DISP_RW_OUT_DP0 0x1 /* enum */
14058 #define	MC_CMD_PARSER_DISP_RW_OUT_DP1 0x2 /* enum */
14059 
14060 
14061 /***********************************/
14062 /* MC_CMD_GET_PF_COUNT
14063  * Get number of PFs on the device.
14064  */
14065 #define	MC_CMD_GET_PF_COUNT 0xb6
14066 #define	MC_CMD_GET_PF_COUNT_MSGSET 0xb6
14067 #undef	MC_CMD_0xb6_PRIVILEGE_CTG
14068 
14069 #define	MC_CMD_0xb6_PRIVILEGE_CTG SRIOV_CTG_GENERAL
14070 
14071 /* MC_CMD_GET_PF_COUNT_IN msgrequest */
14072 #define	MC_CMD_GET_PF_COUNT_IN_LEN 0
14073 
14074 /* MC_CMD_GET_PF_COUNT_OUT msgresponse */
14075 #define	MC_CMD_GET_PF_COUNT_OUT_LEN 1
14076 /* Identifies the number of PFs on the device. */
14077 #define	MC_CMD_GET_PF_COUNT_OUT_PF_COUNT_OFST 0
14078 #define	MC_CMD_GET_PF_COUNT_OUT_PF_COUNT_LEN 1
14079 
14080 
14081 /***********************************/
14082 /* MC_CMD_SET_PF_COUNT
14083  * Set number of PFs on the device.
14084  */
14085 #define	MC_CMD_SET_PF_COUNT 0xb7
14086 #define	MC_CMD_SET_PF_COUNT_MSGSET 0xb7
14087 
14088 /* MC_CMD_SET_PF_COUNT_IN msgrequest */
14089 #define	MC_CMD_SET_PF_COUNT_IN_LEN 4
14090 /* New number of PFs on the device. */
14091 #define	MC_CMD_SET_PF_COUNT_IN_PF_COUNT_OFST 0
14092 #define	MC_CMD_SET_PF_COUNT_IN_PF_COUNT_LEN 4
14093 
14094 /* MC_CMD_SET_PF_COUNT_OUT msgresponse */
14095 #define	MC_CMD_SET_PF_COUNT_OUT_LEN 0
14096 
14097 
14098 /***********************************/
14099 /* MC_CMD_GET_PORT_ASSIGNMENT
14100  * Get port assignment for current PCI function.
14101  */
14102 #define	MC_CMD_GET_PORT_ASSIGNMENT 0xb8
14103 #define	MC_CMD_GET_PORT_ASSIGNMENT_MSGSET 0xb8
14104 #undef	MC_CMD_0xb8_PRIVILEGE_CTG
14105 
14106 #define	MC_CMD_0xb8_PRIVILEGE_CTG SRIOV_CTG_GENERAL
14107 
14108 /* MC_CMD_GET_PORT_ASSIGNMENT_IN msgrequest */
14109 #define	MC_CMD_GET_PORT_ASSIGNMENT_IN_LEN 0
14110 
14111 /* MC_CMD_GET_PORT_ASSIGNMENT_OUT msgresponse */
14112 #define	MC_CMD_GET_PORT_ASSIGNMENT_OUT_LEN 4
14113 /* Identifies the port assignment for this function. On EF100, it is possible
14114  * for the function to have no network port assigned (either because it is not
14115  * yet configured, or assigning a port to a given function personality makes no
14116  * sense - e.g. virtio-blk), in which case the return value is NULL_PORT.
14117  */
14118 #define	MC_CMD_GET_PORT_ASSIGNMENT_OUT_PORT_OFST 0
14119 #define	MC_CMD_GET_PORT_ASSIGNMENT_OUT_PORT_LEN 4
14120 /* enum: Special value to indicate no port is assigned to a function. */
14121 #define	MC_CMD_GET_PORT_ASSIGNMENT_OUT_NULL_PORT 0xffffffff
14122 
14123 
14124 /***********************************/
14125 /* MC_CMD_SET_PORT_ASSIGNMENT
14126  * Set port assignment for current PCI function.
14127  */
14128 #define	MC_CMD_SET_PORT_ASSIGNMENT 0xb9
14129 #define	MC_CMD_SET_PORT_ASSIGNMENT_MSGSET 0xb9
14130 #undef	MC_CMD_0xb9_PRIVILEGE_CTG
14131 
14132 #define	MC_CMD_0xb9_PRIVILEGE_CTG SRIOV_CTG_ADMIN
14133 
14134 /* MC_CMD_SET_PORT_ASSIGNMENT_IN msgrequest */
14135 #define	MC_CMD_SET_PORT_ASSIGNMENT_IN_LEN 4
14136 /* Identifies the port assignment for this function. */
14137 #define	MC_CMD_SET_PORT_ASSIGNMENT_IN_PORT_OFST 0
14138 #define	MC_CMD_SET_PORT_ASSIGNMENT_IN_PORT_LEN 4
14139 
14140 /* MC_CMD_SET_PORT_ASSIGNMENT_OUT msgresponse */
14141 #define	MC_CMD_SET_PORT_ASSIGNMENT_OUT_LEN 0
14142 
14143 
14144 /***********************************/
14145 /* MC_CMD_ALLOC_VIS
14146  * Allocate VIs for current PCI function.
14147  */
14148 #define	MC_CMD_ALLOC_VIS 0x8b
14149 #define	MC_CMD_ALLOC_VIS_MSGSET 0x8b
14150 #undef	MC_CMD_0x8b_PRIVILEGE_CTG
14151 
14152 #define	MC_CMD_0x8b_PRIVILEGE_CTG SRIOV_CTG_GENERAL
14153 
14154 /* MC_CMD_ALLOC_VIS_IN msgrequest */
14155 #define	MC_CMD_ALLOC_VIS_IN_LEN 8
14156 /* The minimum number of VIs that is acceptable */
14157 #define	MC_CMD_ALLOC_VIS_IN_MIN_VI_COUNT_OFST 0
14158 #define	MC_CMD_ALLOC_VIS_IN_MIN_VI_COUNT_LEN 4
14159 /* The maximum number of VIs that would be useful */
14160 #define	MC_CMD_ALLOC_VIS_IN_MAX_VI_COUNT_OFST 4
14161 #define	MC_CMD_ALLOC_VIS_IN_MAX_VI_COUNT_LEN 4
14162 
14163 /* MC_CMD_ALLOC_VIS_OUT msgresponse: Huntington-compatible VI_ALLOC request.
14164  * Use extended version in new code.
14165  */
14166 #define	MC_CMD_ALLOC_VIS_OUT_LEN 8
14167 /* The number of VIs allocated on this function */
14168 #define	MC_CMD_ALLOC_VIS_OUT_VI_COUNT_OFST 0
14169 #define	MC_CMD_ALLOC_VIS_OUT_VI_COUNT_LEN 4
14170 /* The base absolute VI number allocated to this function. Required to
14171  * correctly interpret wakeup events.
14172  */
14173 #define	MC_CMD_ALLOC_VIS_OUT_VI_BASE_OFST 4
14174 #define	MC_CMD_ALLOC_VIS_OUT_VI_BASE_LEN 4
14175 
14176 /* MC_CMD_ALLOC_VIS_EXT_OUT msgresponse */
14177 #define	MC_CMD_ALLOC_VIS_EXT_OUT_LEN 12
14178 /* The number of VIs allocated on this function */
14179 #define	MC_CMD_ALLOC_VIS_EXT_OUT_VI_COUNT_OFST 0
14180 #define	MC_CMD_ALLOC_VIS_EXT_OUT_VI_COUNT_LEN 4
14181 /* The base absolute VI number allocated to this function. Required to
14182  * correctly interpret wakeup events.
14183  */
14184 #define	MC_CMD_ALLOC_VIS_EXT_OUT_VI_BASE_OFST 4
14185 #define	MC_CMD_ALLOC_VIS_EXT_OUT_VI_BASE_LEN 4
14186 /* Function's port vi_shift value (always 0 on Huntington) */
14187 #define	MC_CMD_ALLOC_VIS_EXT_OUT_VI_SHIFT_OFST 8
14188 #define	MC_CMD_ALLOC_VIS_EXT_OUT_VI_SHIFT_LEN 4
14189 
14190 
14191 /***********************************/
14192 /* MC_CMD_FREE_VIS
14193  * Free VIs for current PCI function. Any linked PIO buffers will be unlinked,
14194  * but not freed.
14195  */
14196 #define	MC_CMD_FREE_VIS 0x8c
14197 #define	MC_CMD_FREE_VIS_MSGSET 0x8c
14198 #undef	MC_CMD_0x8c_PRIVILEGE_CTG
14199 
14200 #define	MC_CMD_0x8c_PRIVILEGE_CTG SRIOV_CTG_GENERAL
14201 
14202 /* MC_CMD_FREE_VIS_IN msgrequest */
14203 #define	MC_CMD_FREE_VIS_IN_LEN 0
14204 
14205 /* MC_CMD_FREE_VIS_OUT msgresponse */
14206 #define	MC_CMD_FREE_VIS_OUT_LEN 0
14207 
14208 
14209 /***********************************/
14210 /* MC_CMD_GET_SRIOV_CFG
14211  * Get SRIOV config for this PF.
14212  */
14213 #define	MC_CMD_GET_SRIOV_CFG 0xba
14214 #define	MC_CMD_GET_SRIOV_CFG_MSGSET 0xba
14215 #undef	MC_CMD_0xba_PRIVILEGE_CTG
14216 
14217 #define	MC_CMD_0xba_PRIVILEGE_CTG SRIOV_CTG_GENERAL
14218 
14219 /* MC_CMD_GET_SRIOV_CFG_IN msgrequest */
14220 #define	MC_CMD_GET_SRIOV_CFG_IN_LEN 0
14221 
14222 /* MC_CMD_GET_SRIOV_CFG_OUT msgresponse */
14223 #define	MC_CMD_GET_SRIOV_CFG_OUT_LEN 20
14224 /* Number of VFs currently enabled. */
14225 #define	MC_CMD_GET_SRIOV_CFG_OUT_VF_CURRENT_OFST 0
14226 #define	MC_CMD_GET_SRIOV_CFG_OUT_VF_CURRENT_LEN 4
14227 /* Max number of VFs before sriov stride and offset may need to be changed. */
14228 #define	MC_CMD_GET_SRIOV_CFG_OUT_VF_MAX_OFST 4
14229 #define	MC_CMD_GET_SRIOV_CFG_OUT_VF_MAX_LEN 4
14230 #define	MC_CMD_GET_SRIOV_CFG_OUT_FLAGS_OFST 8
14231 #define	MC_CMD_GET_SRIOV_CFG_OUT_FLAGS_LEN 4
14232 #define	MC_CMD_GET_SRIOV_CFG_OUT_VF_ENABLED_OFST 8
14233 #define	MC_CMD_GET_SRIOV_CFG_OUT_VF_ENABLED_LBN 0
14234 #define	MC_CMD_GET_SRIOV_CFG_OUT_VF_ENABLED_WIDTH 1
14235 /* RID offset of first VF from PF. */
14236 #define	MC_CMD_GET_SRIOV_CFG_OUT_VF_OFFSET_OFST 12
14237 #define	MC_CMD_GET_SRIOV_CFG_OUT_VF_OFFSET_LEN 4
14238 /* RID offset of each subsequent VF from the previous. */
14239 #define	MC_CMD_GET_SRIOV_CFG_OUT_VF_STRIDE_OFST 16
14240 #define	MC_CMD_GET_SRIOV_CFG_OUT_VF_STRIDE_LEN 4
14241 
14242 
14243 /***********************************/
14244 /* MC_CMD_SET_SRIOV_CFG
14245  * Set SRIOV config for this PF.
14246  */
14247 #define	MC_CMD_SET_SRIOV_CFG 0xbb
14248 #define	MC_CMD_SET_SRIOV_CFG_MSGSET 0xbb
14249 #undef	MC_CMD_0xbb_PRIVILEGE_CTG
14250 
14251 #define	MC_CMD_0xbb_PRIVILEGE_CTG SRIOV_CTG_ADMIN
14252 
14253 /* MC_CMD_SET_SRIOV_CFG_IN msgrequest */
14254 #define	MC_CMD_SET_SRIOV_CFG_IN_LEN 20
14255 /* Number of VFs currently enabled. */
14256 #define	MC_CMD_SET_SRIOV_CFG_IN_VF_CURRENT_OFST 0
14257 #define	MC_CMD_SET_SRIOV_CFG_IN_VF_CURRENT_LEN 4
14258 /* Max number of VFs before sriov stride and offset may need to be changed. */
14259 #define	MC_CMD_SET_SRIOV_CFG_IN_VF_MAX_OFST 4
14260 #define	MC_CMD_SET_SRIOV_CFG_IN_VF_MAX_LEN 4
14261 #define	MC_CMD_SET_SRIOV_CFG_IN_FLAGS_OFST 8
14262 #define	MC_CMD_SET_SRIOV_CFG_IN_FLAGS_LEN 4
14263 #define	MC_CMD_SET_SRIOV_CFG_IN_VF_ENABLED_OFST 8
14264 #define	MC_CMD_SET_SRIOV_CFG_IN_VF_ENABLED_LBN 0
14265 #define	MC_CMD_SET_SRIOV_CFG_IN_VF_ENABLED_WIDTH 1
14266 /* RID offset of first VF from PF, or 0 for no change, or
14267  * MC_CMD_RESOURCE_INSTANCE_ANY to allow the system to allocate an offset.
14268  */
14269 #define	MC_CMD_SET_SRIOV_CFG_IN_VF_OFFSET_OFST 12
14270 #define	MC_CMD_SET_SRIOV_CFG_IN_VF_OFFSET_LEN 4
14271 /* RID offset of each subsequent VF from the previous, 0 for no change, or
14272  * MC_CMD_RESOURCE_INSTANCE_ANY to allow the system to allocate a stride.
14273  */
14274 #define	MC_CMD_SET_SRIOV_CFG_IN_VF_STRIDE_OFST 16
14275 #define	MC_CMD_SET_SRIOV_CFG_IN_VF_STRIDE_LEN 4
14276 
14277 /* MC_CMD_SET_SRIOV_CFG_OUT msgresponse */
14278 #define	MC_CMD_SET_SRIOV_CFG_OUT_LEN 0
14279 
14280 
14281 /***********************************/
14282 /* MC_CMD_GET_VI_ALLOC_INFO
14283  * Get information about number of VI's and base VI number allocated to this
14284  * function. This message is not available to dynamic clients created by
14285  * MC_CMD_CLIENT_ALLOC.
14286  */
14287 #define	MC_CMD_GET_VI_ALLOC_INFO 0x8d
14288 #define	MC_CMD_GET_VI_ALLOC_INFO_MSGSET 0x8d
14289 #undef	MC_CMD_0x8d_PRIVILEGE_CTG
14290 
14291 #define	MC_CMD_0x8d_PRIVILEGE_CTG SRIOV_CTG_GENERAL
14292 
14293 /* MC_CMD_GET_VI_ALLOC_INFO_IN msgrequest */
14294 #define	MC_CMD_GET_VI_ALLOC_INFO_IN_LEN 0
14295 
14296 /* MC_CMD_GET_VI_ALLOC_INFO_OUT msgresponse */
14297 #define	MC_CMD_GET_VI_ALLOC_INFO_OUT_LEN 12
14298 /* The number of VIs allocated on this function */
14299 #define	MC_CMD_GET_VI_ALLOC_INFO_OUT_VI_COUNT_OFST 0
14300 #define	MC_CMD_GET_VI_ALLOC_INFO_OUT_VI_COUNT_LEN 4
14301 /* The base absolute VI number allocated to this function. Required to
14302  * correctly interpret wakeup events.
14303  */
14304 #define	MC_CMD_GET_VI_ALLOC_INFO_OUT_VI_BASE_OFST 4
14305 #define	MC_CMD_GET_VI_ALLOC_INFO_OUT_VI_BASE_LEN 4
14306 /* Function's port vi_shift value (always 0 on Huntington) */
14307 #define	MC_CMD_GET_VI_ALLOC_INFO_OUT_VI_SHIFT_OFST 8
14308 #define	MC_CMD_GET_VI_ALLOC_INFO_OUT_VI_SHIFT_LEN 4
14309 
14310 
14311 /***********************************/
14312 /* MC_CMD_DUMP_VI_STATE
14313  * For CmdClient use. Dump pertinent information on a specific absolute VI. The
14314  * VI must be owned by the calling client or one of its ancestors; usership of
14315  * the VI (as set by MC_CMD_SET_VI_USER) is not sufficient.
14316  */
14317 #define	MC_CMD_DUMP_VI_STATE 0x8e
14318 #define	MC_CMD_DUMP_VI_STATE_MSGSET 0x8e
14319 #undef	MC_CMD_0x8e_PRIVILEGE_CTG
14320 
14321 #define	MC_CMD_0x8e_PRIVILEGE_CTG SRIOV_CTG_GENERAL
14322 
14323 /* MC_CMD_DUMP_VI_STATE_IN msgrequest */
14324 #define	MC_CMD_DUMP_VI_STATE_IN_LEN 4
14325 /* The VI number to query. */
14326 #define	MC_CMD_DUMP_VI_STATE_IN_VI_NUMBER_OFST 0
14327 #define	MC_CMD_DUMP_VI_STATE_IN_VI_NUMBER_LEN 4
14328 
14329 /* MC_CMD_DUMP_VI_STATE_OUT msgresponse */
14330 #define	MC_CMD_DUMP_VI_STATE_OUT_LEN 100
14331 /* The PF part of the function owning this VI. */
14332 #define	MC_CMD_DUMP_VI_STATE_OUT_OWNER_PF_OFST 0
14333 #define	MC_CMD_DUMP_VI_STATE_OUT_OWNER_PF_LEN 2
14334 /* The VF part of the function owning this VI. */
14335 #define	MC_CMD_DUMP_VI_STATE_OUT_OWNER_VF_OFST 2
14336 #define	MC_CMD_DUMP_VI_STATE_OUT_OWNER_VF_LEN 2
14337 /* Base of VIs allocated to this function. */
14338 #define	MC_CMD_DUMP_VI_STATE_OUT_FUNC_VI_BASE_OFST 4
14339 #define	MC_CMD_DUMP_VI_STATE_OUT_FUNC_VI_BASE_LEN 2
14340 /* Count of VIs allocated to the owner function. */
14341 #define	MC_CMD_DUMP_VI_STATE_OUT_FUNC_VI_COUNT_OFST 6
14342 #define	MC_CMD_DUMP_VI_STATE_OUT_FUNC_VI_COUNT_LEN 2
14343 /* Base interrupt vector allocated to this function. */
14344 #define	MC_CMD_DUMP_VI_STATE_OUT_FUNC_VECTOR_BASE_OFST 8
14345 #define	MC_CMD_DUMP_VI_STATE_OUT_FUNC_VECTOR_BASE_LEN 2
14346 /* Number of interrupt vectors allocated to this function. */
14347 #define	MC_CMD_DUMP_VI_STATE_OUT_FUNC_VECTOR_COUNT_OFST 10
14348 #define	MC_CMD_DUMP_VI_STATE_OUT_FUNC_VECTOR_COUNT_LEN 2
14349 /* Raw evq ptr table data. */
14350 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_EVQ_PTR_RAW_OFST 12
14351 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_EVQ_PTR_RAW_LEN 8
14352 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_EVQ_PTR_RAW_LO_OFST 12
14353 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_EVQ_PTR_RAW_LO_LEN 4
14354 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_EVQ_PTR_RAW_LO_LBN 96
14355 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_EVQ_PTR_RAW_LO_WIDTH 32
14356 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_EVQ_PTR_RAW_HI_OFST 16
14357 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_EVQ_PTR_RAW_HI_LEN 4
14358 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_EVQ_PTR_RAW_HI_LBN 128
14359 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_EVQ_PTR_RAW_HI_WIDTH 32
14360 /* Raw evq timer table data. */
14361 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_EV_TIMER_RAW_OFST 20
14362 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_EV_TIMER_RAW_LEN 8
14363 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_EV_TIMER_RAW_LO_OFST 20
14364 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_EV_TIMER_RAW_LO_LEN 4
14365 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_EV_TIMER_RAW_LO_LBN 160
14366 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_EV_TIMER_RAW_LO_WIDTH 32
14367 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_EV_TIMER_RAW_HI_OFST 24
14368 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_EV_TIMER_RAW_HI_LEN 4
14369 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_EV_TIMER_RAW_HI_LBN 192
14370 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_EV_TIMER_RAW_HI_WIDTH 32
14371 /* Combined metadata field. */
14372 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_EV_META_OFST 28
14373 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_EV_META_LEN 4
14374 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_EV_META_BUFS_BASE_OFST 28
14375 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_EV_META_BUFS_BASE_LBN 0
14376 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_EV_META_BUFS_BASE_WIDTH 16
14377 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_EV_META_BUFS_NPAGES_OFST 28
14378 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_EV_META_BUFS_NPAGES_LBN 16
14379 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_EV_META_BUFS_NPAGES_WIDTH 8
14380 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_EV_META_WKUP_REF_OFST 28
14381 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_EV_META_WKUP_REF_LBN 24
14382 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_EV_META_WKUP_REF_WIDTH 8
14383 /* TXDPCPU raw table data for queue. */
14384 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_RAW_TBL_0_OFST 32
14385 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_RAW_TBL_0_LEN 8
14386 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_RAW_TBL_0_LO_OFST 32
14387 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_RAW_TBL_0_LO_LEN 4
14388 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_RAW_TBL_0_LO_LBN 256
14389 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_RAW_TBL_0_LO_WIDTH 32
14390 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_RAW_TBL_0_HI_OFST 36
14391 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_RAW_TBL_0_HI_LEN 4
14392 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_RAW_TBL_0_HI_LBN 288
14393 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_RAW_TBL_0_HI_WIDTH 32
14394 /* TXDPCPU raw table data for queue. */
14395 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_RAW_TBL_1_OFST 40
14396 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_RAW_TBL_1_LEN 8
14397 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_RAW_TBL_1_LO_OFST 40
14398 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_RAW_TBL_1_LO_LEN 4
14399 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_RAW_TBL_1_LO_LBN 320
14400 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_RAW_TBL_1_LO_WIDTH 32
14401 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_RAW_TBL_1_HI_OFST 44
14402 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_RAW_TBL_1_HI_LEN 4
14403 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_RAW_TBL_1_HI_LBN 352
14404 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_RAW_TBL_1_HI_WIDTH 32
14405 /* TXDPCPU raw table data for queue. */
14406 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_RAW_TBL_2_OFST 48
14407 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_RAW_TBL_2_LEN 8
14408 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_RAW_TBL_2_LO_OFST 48
14409 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_RAW_TBL_2_LO_LEN 4
14410 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_RAW_TBL_2_LO_LBN 384
14411 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_RAW_TBL_2_LO_WIDTH 32
14412 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_RAW_TBL_2_HI_OFST 52
14413 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_RAW_TBL_2_HI_LEN 4
14414 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_RAW_TBL_2_HI_LBN 416
14415 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_RAW_TBL_2_HI_WIDTH 32
14416 /* Combined metadata field. */
14417 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_META_OFST 56
14418 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_META_LEN 8
14419 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_META_LO_OFST 56
14420 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_META_LO_LEN 4
14421 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_META_LO_LBN 448
14422 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_META_LO_WIDTH 32
14423 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_META_HI_OFST 60
14424 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_META_HI_LEN 4
14425 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_META_HI_LBN 480
14426 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_META_HI_WIDTH 32
14427 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_META_BUFS_BASE_OFST 56
14428 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_META_BUFS_BASE_LBN 0
14429 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_META_BUFS_BASE_WIDTH 16
14430 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_META_BUFS_NPAGES_OFST 56
14431 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_META_BUFS_NPAGES_LBN 16
14432 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_META_BUFS_NPAGES_WIDTH 8
14433 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_META_QSTATE_OFST 56
14434 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_META_QSTATE_LBN 24
14435 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_META_QSTATE_WIDTH 8
14436 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_META_WAITCOUNT_OFST 56
14437 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_META_WAITCOUNT_LBN 32
14438 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_TX_META_WAITCOUNT_WIDTH 8
14439 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_PADDING_OFST 56
14440 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_PADDING_LBN 40
14441 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_PADDING_WIDTH 24
14442 /* RXDPCPU raw table data for queue. */
14443 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_RAW_TBL_0_OFST 64
14444 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_RAW_TBL_0_LEN 8
14445 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_RAW_TBL_0_LO_OFST 64
14446 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_RAW_TBL_0_LO_LEN 4
14447 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_RAW_TBL_0_LO_LBN 512
14448 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_RAW_TBL_0_LO_WIDTH 32
14449 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_RAW_TBL_0_HI_OFST 68
14450 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_RAW_TBL_0_HI_LEN 4
14451 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_RAW_TBL_0_HI_LBN 544
14452 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_RAW_TBL_0_HI_WIDTH 32
14453 /* RXDPCPU raw table data for queue. */
14454 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_RAW_TBL_1_OFST 72
14455 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_RAW_TBL_1_LEN 8
14456 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_RAW_TBL_1_LO_OFST 72
14457 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_RAW_TBL_1_LO_LEN 4
14458 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_RAW_TBL_1_LO_LBN 576
14459 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_RAW_TBL_1_LO_WIDTH 32
14460 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_RAW_TBL_1_HI_OFST 76
14461 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_RAW_TBL_1_HI_LEN 4
14462 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_RAW_TBL_1_HI_LBN 608
14463 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_RAW_TBL_1_HI_WIDTH 32
14464 /* Reserved, currently 0. */
14465 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_RAW_TBL_2_OFST 80
14466 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_RAW_TBL_2_LEN 8
14467 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_RAW_TBL_2_LO_OFST 80
14468 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_RAW_TBL_2_LO_LEN 4
14469 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_RAW_TBL_2_LO_LBN 640
14470 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_RAW_TBL_2_LO_WIDTH 32
14471 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_RAW_TBL_2_HI_OFST 84
14472 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_RAW_TBL_2_HI_LEN 4
14473 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_RAW_TBL_2_HI_LBN 672
14474 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_RAW_TBL_2_HI_WIDTH 32
14475 /* Combined metadata field. */
14476 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_META_OFST 88
14477 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_META_LEN 8
14478 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_META_LO_OFST 88
14479 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_META_LO_LEN 4
14480 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_META_LO_LBN 704
14481 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_META_LO_WIDTH 32
14482 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_META_HI_OFST 92
14483 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_META_HI_LEN 4
14484 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_META_HI_LBN 736
14485 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_META_HI_WIDTH 32
14486 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_META_BUFS_BASE_OFST 88
14487 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_META_BUFS_BASE_LBN 0
14488 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_META_BUFS_BASE_WIDTH 16
14489 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_META_BUFS_NPAGES_OFST 88
14490 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_META_BUFS_NPAGES_LBN 16
14491 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_META_BUFS_NPAGES_WIDTH 8
14492 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_META_QSTATE_OFST 88
14493 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_META_QSTATE_LBN 24
14494 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_META_QSTATE_WIDTH 8
14495 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_META_WAITCOUNT_OFST 88
14496 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_META_WAITCOUNT_LBN 32
14497 #define	MC_CMD_DUMP_VI_STATE_OUT_VI_RX_META_WAITCOUNT_WIDTH 8
14498 /* Current user, as assigned by MC_CMD_SET_VI_USER. */
14499 #define	MC_CMD_DUMP_VI_STATE_OUT_USER_CLIENT_ID_OFST 96
14500 #define	MC_CMD_DUMP_VI_STATE_OUT_USER_CLIENT_ID_LEN 4
14501 
14502 
14503 /***********************************/
14504 /* MC_CMD_ALLOC_PIOBUF
14505  * Allocate a push I/O buffer for later use with a tx queue.
14506  */
14507 #define	MC_CMD_ALLOC_PIOBUF 0x8f
14508 #define	MC_CMD_ALLOC_PIOBUF_MSGSET 0x8f
14509 #undef	MC_CMD_0x8f_PRIVILEGE_CTG
14510 
14511 #define	MC_CMD_0x8f_PRIVILEGE_CTG SRIOV_CTG_ONLOAD
14512 
14513 /* MC_CMD_ALLOC_PIOBUF_IN msgrequest */
14514 #define	MC_CMD_ALLOC_PIOBUF_IN_LEN 0
14515 
14516 /* MC_CMD_ALLOC_PIOBUF_OUT msgresponse */
14517 #define	MC_CMD_ALLOC_PIOBUF_OUT_LEN 4
14518 /* Handle for allocated push I/O buffer. */
14519 #define	MC_CMD_ALLOC_PIOBUF_OUT_PIOBUF_HANDLE_OFST 0
14520 #define	MC_CMD_ALLOC_PIOBUF_OUT_PIOBUF_HANDLE_LEN 4
14521 
14522 
14523 /***********************************/
14524 /* MC_CMD_FREE_PIOBUF
14525  * Free a push I/O buffer.
14526  */
14527 #define	MC_CMD_FREE_PIOBUF 0x90
14528 #define	MC_CMD_FREE_PIOBUF_MSGSET 0x90
14529 #undef	MC_CMD_0x90_PRIVILEGE_CTG
14530 
14531 #define	MC_CMD_0x90_PRIVILEGE_CTG SRIOV_CTG_ONLOAD
14532 
14533 /* MC_CMD_FREE_PIOBUF_IN msgrequest */
14534 #define	MC_CMD_FREE_PIOBUF_IN_LEN 4
14535 /* Handle for allocated push I/O buffer. */
14536 #define	MC_CMD_FREE_PIOBUF_IN_PIOBUF_HANDLE_OFST 0
14537 #define	MC_CMD_FREE_PIOBUF_IN_PIOBUF_HANDLE_LEN 4
14538 
14539 /* MC_CMD_FREE_PIOBUF_OUT msgresponse */
14540 #define	MC_CMD_FREE_PIOBUF_OUT_LEN 0
14541 
14542 
14543 /***********************************/
14544 /* MC_CMD_GET_VI_TLP_PROCESSING
14545  * Get TLP steering and ordering information for a VI. The caller must have the
14546  * GRP_FUNC_DMA privilege and must be the currently-assigned user of this VI or
14547  * an ancestor of the current user (see MC_CMD_SET_VI_USER).
14548  */
14549 #define	MC_CMD_GET_VI_TLP_PROCESSING 0xb0
14550 #define	MC_CMD_GET_VI_TLP_PROCESSING_MSGSET 0xb0
14551 #undef	MC_CMD_0xb0_PRIVILEGE_CTG
14552 
14553 #define	MC_CMD_0xb0_PRIVILEGE_CTG SRIOV_CTG_GENERAL
14554 
14555 /* MC_CMD_GET_VI_TLP_PROCESSING_IN msgrequest */
14556 #define	MC_CMD_GET_VI_TLP_PROCESSING_IN_LEN 4
14557 /* VI number to get information for. */
14558 #define	MC_CMD_GET_VI_TLP_PROCESSING_IN_INSTANCE_OFST 0
14559 #define	MC_CMD_GET_VI_TLP_PROCESSING_IN_INSTANCE_LEN 4
14560 
14561 /* MC_CMD_GET_VI_TLP_PROCESSING_OUT msgresponse */
14562 #define	MC_CMD_GET_VI_TLP_PROCESSING_OUT_LEN 4
14563 /* Transaction processing steering hint 1 for use with the Rx Queue. */
14564 #define	MC_CMD_GET_VI_TLP_PROCESSING_OUT_TPH_TAG1_RX_OFST 0
14565 #define	MC_CMD_GET_VI_TLP_PROCESSING_OUT_TPH_TAG1_RX_LEN 1
14566 /* Transaction processing steering hint 2 for use with the Ev Queue. */
14567 #define	MC_CMD_GET_VI_TLP_PROCESSING_OUT_TPH_TAG2_EV_OFST 1
14568 #define	MC_CMD_GET_VI_TLP_PROCESSING_OUT_TPH_TAG2_EV_LEN 1
14569 /* Use Relaxed ordering model for TLPs on this VI. */
14570 #define	MC_CMD_GET_VI_TLP_PROCESSING_OUT_RELAXED_ORDERING_LBN 16
14571 #define	MC_CMD_GET_VI_TLP_PROCESSING_OUT_RELAXED_ORDERING_WIDTH 1
14572 /* Use ID based ordering for TLPs on this VI. */
14573 #define	MC_CMD_GET_VI_TLP_PROCESSING_OUT_ID_BASED_ORDERING_LBN 17
14574 #define	MC_CMD_GET_VI_TLP_PROCESSING_OUT_ID_BASED_ORDERING_WIDTH 1
14575 /* Set no snoop bit for TLPs on this VI. */
14576 #define	MC_CMD_GET_VI_TLP_PROCESSING_OUT_NO_SNOOP_LBN 18
14577 #define	MC_CMD_GET_VI_TLP_PROCESSING_OUT_NO_SNOOP_WIDTH 1
14578 /* Enable TPH for TLPs on this VI. */
14579 #define	MC_CMD_GET_VI_TLP_PROCESSING_OUT_TPH_ON_LBN 19
14580 #define	MC_CMD_GET_VI_TLP_PROCESSING_OUT_TPH_ON_WIDTH 1
14581 #define	MC_CMD_GET_VI_TLP_PROCESSING_OUT_DATA_OFST 0
14582 #define	MC_CMD_GET_VI_TLP_PROCESSING_OUT_DATA_LEN 4
14583 
14584 
14585 /***********************************/
14586 /* MC_CMD_SET_VI_TLP_PROCESSING
14587  * Set TLP steering and ordering information for a VI. The caller must have the
14588  * GRP_FUNC_DMA privilege and must be the currently-assigned user of this VI or
14589  * an ancestor of the current user (see MC_CMD_SET_VI_USER).
14590  */
14591 #define	MC_CMD_SET_VI_TLP_PROCESSING 0xb1
14592 #define	MC_CMD_SET_VI_TLP_PROCESSING_MSGSET 0xb1
14593 #undef	MC_CMD_0xb1_PRIVILEGE_CTG
14594 
14595 #define	MC_CMD_0xb1_PRIVILEGE_CTG SRIOV_CTG_GENERAL
14596 
14597 /* MC_CMD_SET_VI_TLP_PROCESSING_IN msgrequest */
14598 #define	MC_CMD_SET_VI_TLP_PROCESSING_IN_LEN 8
14599 /* VI number to set information for. */
14600 #define	MC_CMD_SET_VI_TLP_PROCESSING_IN_INSTANCE_OFST 0
14601 #define	MC_CMD_SET_VI_TLP_PROCESSING_IN_INSTANCE_LEN 4
14602 /* Transaction processing steering hint 1 for use with the Rx Queue. */
14603 #define	MC_CMD_SET_VI_TLP_PROCESSING_IN_TPH_TAG1_RX_OFST 4
14604 #define	MC_CMD_SET_VI_TLP_PROCESSING_IN_TPH_TAG1_RX_LEN 1
14605 /* Transaction processing steering hint 2 for use with the Ev Queue. */
14606 #define	MC_CMD_SET_VI_TLP_PROCESSING_IN_TPH_TAG2_EV_OFST 5
14607 #define	MC_CMD_SET_VI_TLP_PROCESSING_IN_TPH_TAG2_EV_LEN 1
14608 /* Use Relaxed ordering model for TLPs on this VI. */
14609 #define	MC_CMD_SET_VI_TLP_PROCESSING_IN_RELAXED_ORDERING_LBN 48
14610 #define	MC_CMD_SET_VI_TLP_PROCESSING_IN_RELAXED_ORDERING_WIDTH 1
14611 /* Use ID based ordering for TLPs on this VI. */
14612 #define	MC_CMD_SET_VI_TLP_PROCESSING_IN_ID_BASED_ORDERING_LBN 49
14613 #define	MC_CMD_SET_VI_TLP_PROCESSING_IN_ID_BASED_ORDERING_WIDTH 1
14614 /* Set the no snoop bit for TLPs on this VI. */
14615 #define	MC_CMD_SET_VI_TLP_PROCESSING_IN_NO_SNOOP_LBN 50
14616 #define	MC_CMD_SET_VI_TLP_PROCESSING_IN_NO_SNOOP_WIDTH 1
14617 /* Enable TPH for TLPs on this VI. */
14618 #define	MC_CMD_SET_VI_TLP_PROCESSING_IN_TPH_ON_LBN 51
14619 #define	MC_CMD_SET_VI_TLP_PROCESSING_IN_TPH_ON_WIDTH 1
14620 #define	MC_CMD_SET_VI_TLP_PROCESSING_IN_DATA_OFST 4
14621 #define	MC_CMD_SET_VI_TLP_PROCESSING_IN_DATA_LEN 4
14622 
14623 /* MC_CMD_SET_VI_TLP_PROCESSING_OUT msgresponse */
14624 #define	MC_CMD_SET_VI_TLP_PROCESSING_OUT_LEN 0
14625 
14626 
14627 /***********************************/
14628 /* MC_CMD_GET_TLP_PROCESSING_GLOBALS
14629  * Get global PCIe steering and transaction processing configuration.
14630  */
14631 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS 0xbc
14632 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_MSGSET 0xbc
14633 #undef	MC_CMD_0xbc_PRIVILEGE_CTG
14634 
14635 #define	MC_CMD_0xbc_PRIVILEGE_CTG SRIOV_CTG_ADMIN
14636 
14637 /* MC_CMD_GET_TLP_PROCESSING_GLOBALS_IN msgrequest */
14638 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_IN_LEN 4
14639 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_IN_TLP_GLOBAL_CATEGORY_OFST 0
14640 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_IN_TLP_GLOBAL_CATEGORY_LEN 4
14641 /* enum: MISC. */
14642 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_IN_TLP_GLOBAL_CATEGORY_MISC 0x0
14643 /* enum: IDO. */
14644 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_IN_TLP_GLOBAL_CATEGORY_IDO 0x1
14645 /* enum: RO. */
14646 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_IN_TLP_GLOBAL_CATEGORY_RO 0x2
14647 /* enum: TPH Type. */
14648 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_IN_TLP_GLOBAL_CATEGORY_TPH_TYPE 0x3
14649 
14650 /* MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT msgresponse */
14651 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_LEN 8
14652 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_GLOBAL_CATEGORY_OFST 0
14653 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_GLOBAL_CATEGORY_LEN 4
14654 /*            Enum values, see field(s): */
14655 /*               MC_CMD_GET_TLP_PROCESSING_GLOBALS_IN/TLP_GLOBAL_CATEGORY */
14656 /* Amalgamated TLP info word. */
14657 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_WORD_OFST 4
14658 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_WORD_LEN 4
14659 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_MISC_WTAG_EN_OFST 4
14660 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_MISC_WTAG_EN_LBN 0
14661 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_MISC_WTAG_EN_WIDTH 1
14662 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_MISC_SPARE_OFST 4
14663 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_MISC_SPARE_LBN 1
14664 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_MISC_SPARE_WIDTH 31
14665 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_IDO_DL_EN_OFST 4
14666 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_IDO_DL_EN_LBN 0
14667 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_IDO_DL_EN_WIDTH 1
14668 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_IDO_TX_EN_OFST 4
14669 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_IDO_TX_EN_LBN 1
14670 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_IDO_TX_EN_WIDTH 1
14671 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_IDO_EV_EN_OFST 4
14672 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_IDO_EV_EN_LBN 2
14673 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_IDO_EV_EN_WIDTH 1
14674 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_IDO_RX_EN_OFST 4
14675 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_IDO_RX_EN_LBN 3
14676 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_IDO_RX_EN_WIDTH 1
14677 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_IDO_SPARE_OFST 4
14678 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_IDO_SPARE_LBN 4
14679 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_IDO_SPARE_WIDTH 28
14680 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_RO_RXDMA_EN_OFST 4
14681 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_RO_RXDMA_EN_LBN 0
14682 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_RO_RXDMA_EN_WIDTH 1
14683 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_RO_TXDMA_EN_OFST 4
14684 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_RO_TXDMA_EN_LBN 1
14685 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_RO_TXDMA_EN_WIDTH 1
14686 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_RO_DL_EN_OFST 4
14687 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_RO_DL_EN_LBN 2
14688 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_RO_DL_EN_WIDTH 1
14689 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_RO_SPARE_OFST 4
14690 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_RO_SPARE_LBN 3
14691 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_RO_SPARE_WIDTH 29
14692 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_TPH_TYPE_MSIX_OFST 4
14693 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_TPH_TYPE_MSIX_LBN 0
14694 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_TPH_TYPE_MSIX_WIDTH 2
14695 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_TPH_TYPE_DL_OFST 4
14696 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_TPH_TYPE_DL_LBN 2
14697 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_TPH_TYPE_DL_WIDTH 2
14698 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_TPH_TYPE_TX_OFST 4
14699 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_TPH_TYPE_TX_LBN 4
14700 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_TPH_TYPE_TX_WIDTH 2
14701 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_TPH_TYPE_EV_OFST 4
14702 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_TPH_TYPE_EV_LBN 6
14703 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_TPH_TYPE_EV_WIDTH 2
14704 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_TPH_TYPE_RX_OFST 4
14705 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_TPH_TYPE_RX_LBN 8
14706 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_TPH_TYPE_RX_WIDTH 2
14707 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_TLP_TYPE_SPARE_OFST 4
14708 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_TLP_TYPE_SPARE_LBN 9
14709 #define	MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_TLP_TYPE_SPARE_WIDTH 23
14710 
14711 
14712 /***********************************/
14713 /* MC_CMD_SET_TLP_PROCESSING_GLOBALS
14714  * Set global PCIe steering and transaction processing configuration.
14715  */
14716 #define	MC_CMD_SET_TLP_PROCESSING_GLOBALS 0xbd
14717 #define	MC_CMD_SET_TLP_PROCESSING_GLOBALS_MSGSET 0xbd
14718 #undef	MC_CMD_0xbd_PRIVILEGE_CTG
14719 
14720 #define	MC_CMD_0xbd_PRIVILEGE_CTG SRIOV_CTG_ADMIN
14721 
14722 /* MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN msgrequest */
14723 #define	MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_LEN 8
14724 #define	MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_GLOBAL_CATEGORY_OFST 0
14725 #define	MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_GLOBAL_CATEGORY_LEN 4
14726 /*            Enum values, see field(s): */
14727 /*               MC_CMD_GET_TLP_PROCESSING_GLOBALS/MC_CMD_GET_TLP_PROCESSING_GLOBALS_IN/TLP_GLOBAL_CATEGORY */
14728 /* Amalgamated TLP info word. */
14729 #define	MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_WORD_OFST 4
14730 #define	MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_WORD_LEN 4
14731 #define	MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_MISC_WTAG_EN_OFST 4
14732 #define	MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_MISC_WTAG_EN_LBN 0
14733 #define	MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_MISC_WTAG_EN_WIDTH 1
14734 #define	MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_IDO_DL_EN_OFST 4
14735 #define	MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_IDO_DL_EN_LBN 0
14736 #define	MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_IDO_DL_EN_WIDTH 1
14737 #define	MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_IDO_TX_EN_OFST 4
14738 #define	MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_IDO_TX_EN_LBN 1
14739 #define	MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_IDO_TX_EN_WIDTH 1
14740 #define	MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_IDO_EV_EN_OFST 4
14741 #define	MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_IDO_EV_EN_LBN 2
14742 #define	MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_IDO_EV_EN_WIDTH 1
14743 #define	MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_IDO_RX_EN_OFST 4
14744 #define	MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_IDO_RX_EN_LBN 3
14745 #define	MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_IDO_RX_EN_WIDTH 1
14746 #define	MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_RO_RXDMA_EN_OFST 4
14747 #define	MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_RO_RXDMA_EN_LBN 0
14748 #define	MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_RO_RXDMA_EN_WIDTH 1
14749 #define	MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_RO_TXDMA_EN_OFST 4
14750 #define	MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_RO_TXDMA_EN_LBN 1
14751 #define	MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_RO_TXDMA_EN_WIDTH 1
14752 #define	MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_RO_DL_EN_OFST 4
14753 #define	MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_RO_DL_EN_LBN 2
14754 #define	MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_RO_DL_EN_WIDTH 1
14755 #define	MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_TPH_TYPE_MSIX_OFST 4
14756 #define	MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_TPH_TYPE_MSIX_LBN 0
14757 #define	MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_TPH_TYPE_MSIX_WIDTH 2
14758 #define	MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_TPH_TYPE_DL_OFST 4
14759 #define	MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_TPH_TYPE_DL_LBN 2
14760 #define	MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_TPH_TYPE_DL_WIDTH 2
14761 #define	MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_TPH_TYPE_TX_OFST 4
14762 #define	MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_TPH_TYPE_TX_LBN 4
14763 #define	MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_TPH_TYPE_TX_WIDTH 2
14764 #define	MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_TPH_TYPE_EV_OFST 4
14765 #define	MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_TPH_TYPE_EV_LBN 6
14766 #define	MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_TPH_TYPE_EV_WIDTH 2
14767 #define	MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_TPH_TYPE_RX_OFST 4
14768 #define	MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_TPH_TYPE_RX_LBN 8
14769 #define	MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_TPH_TYPE_RX_WIDTH 2
14770 #define	MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_SPARE_OFST 4
14771 #define	MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_SPARE_LBN 10
14772 #define	MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_SPARE_WIDTH 22
14773 
14774 /* MC_CMD_SET_TLP_PROCESSING_GLOBALS_OUT msgresponse */
14775 #define	MC_CMD_SET_TLP_PROCESSING_GLOBALS_OUT_LEN 0
14776 
14777 
14778 /***********************************/
14779 /* MC_CMD_SATELLITE_DOWNLOAD
14780  * Download a new set of images to the satellite CPUs from the host.
14781  */
14782 #define	MC_CMD_SATELLITE_DOWNLOAD 0x91
14783 #define	MC_CMD_SATELLITE_DOWNLOAD_MSGSET 0x91
14784 #undef	MC_CMD_0x91_PRIVILEGE_CTG
14785 
14786 #define	MC_CMD_0x91_PRIVILEGE_CTG SRIOV_CTG_ADMIN_TSA_UNBOUND
14787 
14788 /* MC_CMD_SATELLITE_DOWNLOAD_IN msgrequest: The reset requirements for the CPUs
14789  * are subtle, and so downloads must proceed in a number of phases.
14790  *
14791  * 1) PHASE_RESET with a target of TARGET_ALL and chunk ID/length of 0.
14792  *
14793  * 2) PHASE_IMEMS for each of the IMEM targets (target IDs 0-11). Each download
14794  * may consist of multiple chunks. The final chunk (with CHUNK_ID_LAST) should
14795  * be a checksum (a simple 32-bit sum) of the transferred data. An individual
14796  * download may be aborted using CHUNK_ID_ABORT.
14797  *
14798  * 3) PHASE_VECTORS for each of the vector table targets (target IDs 12-15),
14799  * similar to PHASE_IMEMS.
14800  *
14801  * 4) PHASE_READY with a target of TARGET_ALL and chunk ID/length of 0.
14802  *
14803  * After any error (a requested abort is not considered to be an error) the
14804  * sequence must be restarted from PHASE_RESET.
14805  */
14806 #define	MC_CMD_SATELLITE_DOWNLOAD_IN_LENMIN 20
14807 #define	MC_CMD_SATELLITE_DOWNLOAD_IN_LENMAX 252
14808 #define	MC_CMD_SATELLITE_DOWNLOAD_IN_LENMAX_MCDI2 1020
14809 #define	MC_CMD_SATELLITE_DOWNLOAD_IN_LEN(num) (16+4*(num))
14810 #define	MC_CMD_SATELLITE_DOWNLOAD_IN_CHUNK_DATA_NUM(len) (((len)-16)/4)
14811 /* Download phase. (Note: the IDLE phase is used internally and is never valid
14812  * in a command from the host.)
14813  */
14814 #define	MC_CMD_SATELLITE_DOWNLOAD_IN_PHASE_OFST 0
14815 #define	MC_CMD_SATELLITE_DOWNLOAD_IN_PHASE_LEN 4
14816 #define	MC_CMD_SATELLITE_DOWNLOAD_IN_PHASE_IDLE 0x0 /* enum */
14817 #define	MC_CMD_SATELLITE_DOWNLOAD_IN_PHASE_RESET 0x1 /* enum */
14818 #define	MC_CMD_SATELLITE_DOWNLOAD_IN_PHASE_IMEMS 0x2 /* enum */
14819 #define	MC_CMD_SATELLITE_DOWNLOAD_IN_PHASE_VECTORS 0x3 /* enum */
14820 #define	MC_CMD_SATELLITE_DOWNLOAD_IN_PHASE_READY 0x4 /* enum */
14821 /* Target for download. (These match the blob numbers defined in
14822  * mc_flash_layout.h.)
14823  */
14824 #define	MC_CMD_SATELLITE_DOWNLOAD_IN_TARGET_OFST 4
14825 #define	MC_CMD_SATELLITE_DOWNLOAD_IN_TARGET_LEN 4
14826 /* enum: Valid in phase 2 (PHASE_IMEMS) only */
14827 #define	MC_CMD_SATELLITE_DOWNLOAD_IN_TARGET_TXDI_TEXT 0x0
14828 /* enum: Valid in phase 2 (PHASE_IMEMS) only */
14829 #define	MC_CMD_SATELLITE_DOWNLOAD_IN_TARGET_RXDI_TEXT 0x1
14830 /* enum: Valid in phase 2 (PHASE_IMEMS) only */
14831 #define	MC_CMD_SATELLITE_DOWNLOAD_IN_TARGET_TXDP_TEXT 0x2
14832 /* enum: Valid in phase 2 (PHASE_IMEMS) only */
14833 #define	MC_CMD_SATELLITE_DOWNLOAD_IN_TARGET_RXDP_TEXT 0x3
14834 /* enum: Valid in phase 2 (PHASE_IMEMS) only */
14835 #define	MC_CMD_SATELLITE_DOWNLOAD_IN_TARGET_RXHRSL_HR_LUT 0x4
14836 /* enum: Valid in phase 2 (PHASE_IMEMS) only */
14837 #define	MC_CMD_SATELLITE_DOWNLOAD_IN_TARGET_RXHRSL_HR_LUT_CFG 0x5
14838 /* enum: Valid in phase 2 (PHASE_IMEMS) only */
14839 #define	MC_CMD_SATELLITE_DOWNLOAD_IN_TARGET_TXHRSL_HR_LUT 0x6
14840 /* enum: Valid in phase 2 (PHASE_IMEMS) only */
14841 #define	MC_CMD_SATELLITE_DOWNLOAD_IN_TARGET_TXHRSL_HR_LUT_CFG 0x7
14842 /* enum: Valid in phase 2 (PHASE_IMEMS) only */
14843 #define	MC_CMD_SATELLITE_DOWNLOAD_IN_TARGET_RXHRSL_HR_PGM 0x8
14844 /* enum: Valid in phase 2 (PHASE_IMEMS) only */
14845 #define	MC_CMD_SATELLITE_DOWNLOAD_IN_TARGET_RXHRSL_SL_PGM 0x9
14846 /* enum: Valid in phase 2 (PHASE_IMEMS) only */
14847 #define	MC_CMD_SATELLITE_DOWNLOAD_IN_TARGET_TXHRSL_HR_PGM 0xa
14848 /* enum: Valid in phase 2 (PHASE_IMEMS) only */
14849 #define	MC_CMD_SATELLITE_DOWNLOAD_IN_TARGET_TXHRSL_SL_PGM 0xb
14850 /* enum: Valid in phase 3 (PHASE_VECTORS) only */
14851 #define	MC_CMD_SATELLITE_DOWNLOAD_IN_TARGET_RXDI_VTBL0 0xc
14852 /* enum: Valid in phase 3 (PHASE_VECTORS) only */
14853 #define	MC_CMD_SATELLITE_DOWNLOAD_IN_TARGET_TXDI_VTBL0 0xd
14854 /* enum: Valid in phase 3 (PHASE_VECTORS) only */
14855 #define	MC_CMD_SATELLITE_DOWNLOAD_IN_TARGET_RXDI_VTBL1 0xe
14856 /* enum: Valid in phase 3 (PHASE_VECTORS) only */
14857 #define	MC_CMD_SATELLITE_DOWNLOAD_IN_TARGET_TXDI_VTBL1 0xf
14858 /* enum: Valid in phases 1 (PHASE_RESET) and 4 (PHASE_READY) only */
14859 #define	MC_CMD_SATELLITE_DOWNLOAD_IN_TARGET_ALL 0xffffffff
14860 /* Chunk ID, or CHUNK_ID_LAST or CHUNK_ID_ABORT */
14861 #define	MC_CMD_SATELLITE_DOWNLOAD_IN_CHUNK_ID_OFST 8
14862 #define	MC_CMD_SATELLITE_DOWNLOAD_IN_CHUNK_ID_LEN 4
14863 /* enum: Last chunk, containing checksum rather than data */
14864 #define	MC_CMD_SATELLITE_DOWNLOAD_IN_CHUNK_ID_LAST 0xffffffff
14865 /* enum: Abort download of this item */
14866 #define	MC_CMD_SATELLITE_DOWNLOAD_IN_CHUNK_ID_ABORT 0xfffffffe
14867 /* Length of this chunk in bytes */
14868 #define	MC_CMD_SATELLITE_DOWNLOAD_IN_CHUNK_LEN_OFST 12
14869 #define	MC_CMD_SATELLITE_DOWNLOAD_IN_CHUNK_LEN_LEN 4
14870 /* Data for this chunk */
14871 #define	MC_CMD_SATELLITE_DOWNLOAD_IN_CHUNK_DATA_OFST 16
14872 #define	MC_CMD_SATELLITE_DOWNLOAD_IN_CHUNK_DATA_LEN 4
14873 #define	MC_CMD_SATELLITE_DOWNLOAD_IN_CHUNK_DATA_MINNUM 1
14874 #define	MC_CMD_SATELLITE_DOWNLOAD_IN_CHUNK_DATA_MAXNUM 59
14875 #define	MC_CMD_SATELLITE_DOWNLOAD_IN_CHUNK_DATA_MAXNUM_MCDI2 251
14876 
14877 /* MC_CMD_SATELLITE_DOWNLOAD_OUT msgresponse */
14878 #define	MC_CMD_SATELLITE_DOWNLOAD_OUT_LEN 8
14879 /* Same as MC_CMD_ERR field, but included as 0 in success cases */
14880 #define	MC_CMD_SATELLITE_DOWNLOAD_OUT_RESULT_OFST 0
14881 #define	MC_CMD_SATELLITE_DOWNLOAD_OUT_RESULT_LEN 4
14882 /* Extra status information */
14883 #define	MC_CMD_SATELLITE_DOWNLOAD_OUT_INFO_OFST 4
14884 #define	MC_CMD_SATELLITE_DOWNLOAD_OUT_INFO_LEN 4
14885 /* enum: Code download OK, completed. */
14886 #define	MC_CMD_SATELLITE_DOWNLOAD_OUT_OK_COMPLETE 0x0
14887 /* enum: Code download aborted as requested. */
14888 #define	MC_CMD_SATELLITE_DOWNLOAD_OUT_OK_ABORTED 0x1
14889 /* enum: Code download OK so far, send next chunk. */
14890 #define	MC_CMD_SATELLITE_DOWNLOAD_OUT_OK_NEXT_CHUNK 0x2
14891 /* enum: Download phases out of sequence */
14892 #define	MC_CMD_SATELLITE_DOWNLOAD_OUT_ERR_BAD_PHASE 0x100
14893 /* enum: Bad target for this phase */
14894 #define	MC_CMD_SATELLITE_DOWNLOAD_OUT_ERR_BAD_TARGET 0x101
14895 /* enum: Chunk ID out of sequence */
14896 #define	MC_CMD_SATELLITE_DOWNLOAD_OUT_ERR_BAD_CHUNK_ID 0x200
14897 /* enum: Chunk length zero or too large */
14898 #define	MC_CMD_SATELLITE_DOWNLOAD_OUT_ERR_BAD_CHUNK_LEN 0x201
14899 /* enum: Checksum was incorrect */
14900 #define	MC_CMD_SATELLITE_DOWNLOAD_OUT_ERR_BAD_CHECKSUM 0x300
14901 
14902 
14903 /***********************************/
14904 /* MC_CMD_GET_CAPABILITIES
14905  * Get device capabilities. This is supplementary to the MC_CMD_GET_BOARD_CFG
14906  * command, and intended to reference inherent device capabilities as opposed
14907  * to current NVRAM config.
14908  */
14909 #define	MC_CMD_GET_CAPABILITIES 0xbe
14910 #define	MC_CMD_GET_CAPABILITIES_MSGSET 0xbe
14911 #undef	MC_CMD_0xbe_PRIVILEGE_CTG
14912 
14913 #define	MC_CMD_0xbe_PRIVILEGE_CTG SRIOV_CTG_GENERAL
14914 
14915 /* MC_CMD_GET_CAPABILITIES_IN msgrequest */
14916 #define	MC_CMD_GET_CAPABILITIES_IN_LEN 0
14917 
14918 /* MC_CMD_GET_CAPABILITIES_OUT msgresponse */
14919 #define	MC_CMD_GET_CAPABILITIES_OUT_LEN 20
14920 /* First word of flags. */
14921 #define	MC_CMD_GET_CAPABILITIES_OUT_FLAGS1_OFST 0
14922 #define	MC_CMD_GET_CAPABILITIES_OUT_FLAGS1_LEN 4
14923 #define	MC_CMD_GET_CAPABILITIES_OUT_VPORT_RECONFIGURE_OFST 0
14924 #define	MC_CMD_GET_CAPABILITIES_OUT_VPORT_RECONFIGURE_LBN 3
14925 #define	MC_CMD_GET_CAPABILITIES_OUT_VPORT_RECONFIGURE_WIDTH 1
14926 #define	MC_CMD_GET_CAPABILITIES_OUT_TX_STRIPING_OFST 0
14927 #define	MC_CMD_GET_CAPABILITIES_OUT_TX_STRIPING_LBN 4
14928 #define	MC_CMD_GET_CAPABILITIES_OUT_TX_STRIPING_WIDTH 1
14929 #define	MC_CMD_GET_CAPABILITIES_OUT_VADAPTOR_QUERY_OFST 0
14930 #define	MC_CMD_GET_CAPABILITIES_OUT_VADAPTOR_QUERY_LBN 5
14931 #define	MC_CMD_GET_CAPABILITIES_OUT_VADAPTOR_QUERY_WIDTH 1
14932 #define	MC_CMD_GET_CAPABILITIES_OUT_EVB_PORT_VLAN_RESTRICT_OFST 0
14933 #define	MC_CMD_GET_CAPABILITIES_OUT_EVB_PORT_VLAN_RESTRICT_LBN 6
14934 #define	MC_CMD_GET_CAPABILITIES_OUT_EVB_PORT_VLAN_RESTRICT_WIDTH 1
14935 #define	MC_CMD_GET_CAPABILITIES_OUT_DRV_ATTACH_PREBOOT_OFST 0
14936 #define	MC_CMD_GET_CAPABILITIES_OUT_DRV_ATTACH_PREBOOT_LBN 7
14937 #define	MC_CMD_GET_CAPABILITIES_OUT_DRV_ATTACH_PREBOOT_WIDTH 1
14938 #define	MC_CMD_GET_CAPABILITIES_OUT_RX_FORCE_EVENT_MERGING_OFST 0
14939 #define	MC_CMD_GET_CAPABILITIES_OUT_RX_FORCE_EVENT_MERGING_LBN 8
14940 #define	MC_CMD_GET_CAPABILITIES_OUT_RX_FORCE_EVENT_MERGING_WIDTH 1
14941 #define	MC_CMD_GET_CAPABILITIES_OUT_SET_MAC_ENHANCED_OFST 0
14942 #define	MC_CMD_GET_CAPABILITIES_OUT_SET_MAC_ENHANCED_LBN 9
14943 #define	MC_CMD_GET_CAPABILITIES_OUT_SET_MAC_ENHANCED_WIDTH 1
14944 #define	MC_CMD_GET_CAPABILITIES_OUT_UNKNOWN_UCAST_DST_FILTER_ALWAYS_MULTI_RECIPIENT_OFST 0
14945 #define	MC_CMD_GET_CAPABILITIES_OUT_UNKNOWN_UCAST_DST_FILTER_ALWAYS_MULTI_RECIPIENT_LBN 10
14946 #define	MC_CMD_GET_CAPABILITIES_OUT_UNKNOWN_UCAST_DST_FILTER_ALWAYS_MULTI_RECIPIENT_WIDTH 1
14947 #define	MC_CMD_GET_CAPABILITIES_OUT_VADAPTOR_PERMIT_SET_MAC_WHEN_FILTERS_INSTALLED_OFST 0
14948 #define	MC_CMD_GET_CAPABILITIES_OUT_VADAPTOR_PERMIT_SET_MAC_WHEN_FILTERS_INSTALLED_LBN 11
14949 #define	MC_CMD_GET_CAPABILITIES_OUT_VADAPTOR_PERMIT_SET_MAC_WHEN_FILTERS_INSTALLED_WIDTH 1
14950 #define	MC_CMD_GET_CAPABILITIES_OUT_TX_MAC_SECURITY_FILTERING_OFST 0
14951 #define	MC_CMD_GET_CAPABILITIES_OUT_TX_MAC_SECURITY_FILTERING_LBN 12
14952 #define	MC_CMD_GET_CAPABILITIES_OUT_TX_MAC_SECURITY_FILTERING_WIDTH 1
14953 #define	MC_CMD_GET_CAPABILITIES_OUT_ADDITIONAL_RSS_MODES_OFST 0
14954 #define	MC_CMD_GET_CAPABILITIES_OUT_ADDITIONAL_RSS_MODES_LBN 13
14955 #define	MC_CMD_GET_CAPABILITIES_OUT_ADDITIONAL_RSS_MODES_WIDTH 1
14956 #define	MC_CMD_GET_CAPABILITIES_OUT_QBB_OFST 0
14957 #define	MC_CMD_GET_CAPABILITIES_OUT_QBB_LBN 14
14958 #define	MC_CMD_GET_CAPABILITIES_OUT_QBB_WIDTH 1
14959 #define	MC_CMD_GET_CAPABILITIES_OUT_RX_PACKED_STREAM_VAR_BUFFERS_OFST 0
14960 #define	MC_CMD_GET_CAPABILITIES_OUT_RX_PACKED_STREAM_VAR_BUFFERS_LBN 15
14961 #define	MC_CMD_GET_CAPABILITIES_OUT_RX_PACKED_STREAM_VAR_BUFFERS_WIDTH 1
14962 #define	MC_CMD_GET_CAPABILITIES_OUT_RX_RSS_LIMITED_OFST 0
14963 #define	MC_CMD_GET_CAPABILITIES_OUT_RX_RSS_LIMITED_LBN 16
14964 #define	MC_CMD_GET_CAPABILITIES_OUT_RX_RSS_LIMITED_WIDTH 1
14965 #define	MC_CMD_GET_CAPABILITIES_OUT_RX_PACKED_STREAM_OFST 0
14966 #define	MC_CMD_GET_CAPABILITIES_OUT_RX_PACKED_STREAM_LBN 17
14967 #define	MC_CMD_GET_CAPABILITIES_OUT_RX_PACKED_STREAM_WIDTH 1
14968 #define	MC_CMD_GET_CAPABILITIES_OUT_RX_INCLUDE_FCS_OFST 0
14969 #define	MC_CMD_GET_CAPABILITIES_OUT_RX_INCLUDE_FCS_LBN 18
14970 #define	MC_CMD_GET_CAPABILITIES_OUT_RX_INCLUDE_FCS_WIDTH 1
14971 #define	MC_CMD_GET_CAPABILITIES_OUT_TX_VLAN_INSERTION_OFST 0
14972 #define	MC_CMD_GET_CAPABILITIES_OUT_TX_VLAN_INSERTION_LBN 19
14973 #define	MC_CMD_GET_CAPABILITIES_OUT_TX_VLAN_INSERTION_WIDTH 1
14974 #define	MC_CMD_GET_CAPABILITIES_OUT_RX_VLAN_STRIPPING_OFST 0
14975 #define	MC_CMD_GET_CAPABILITIES_OUT_RX_VLAN_STRIPPING_LBN 20
14976 #define	MC_CMD_GET_CAPABILITIES_OUT_RX_VLAN_STRIPPING_WIDTH 1
14977 #define	MC_CMD_GET_CAPABILITIES_OUT_TX_TSO_OFST 0
14978 #define	MC_CMD_GET_CAPABILITIES_OUT_TX_TSO_LBN 21
14979 #define	MC_CMD_GET_CAPABILITIES_OUT_TX_TSO_WIDTH 1
14980 #define	MC_CMD_GET_CAPABILITIES_OUT_RX_PREFIX_LEN_0_OFST 0
14981 #define	MC_CMD_GET_CAPABILITIES_OUT_RX_PREFIX_LEN_0_LBN 22
14982 #define	MC_CMD_GET_CAPABILITIES_OUT_RX_PREFIX_LEN_0_WIDTH 1
14983 #define	MC_CMD_GET_CAPABILITIES_OUT_RX_PREFIX_LEN_14_OFST 0
14984 #define	MC_CMD_GET_CAPABILITIES_OUT_RX_PREFIX_LEN_14_LBN 23
14985 #define	MC_CMD_GET_CAPABILITIES_OUT_RX_PREFIX_LEN_14_WIDTH 1
14986 #define	MC_CMD_GET_CAPABILITIES_OUT_RX_TIMESTAMP_OFST 0
14987 #define	MC_CMD_GET_CAPABILITIES_OUT_RX_TIMESTAMP_LBN 24
14988 #define	MC_CMD_GET_CAPABILITIES_OUT_RX_TIMESTAMP_WIDTH 1
14989 #define	MC_CMD_GET_CAPABILITIES_OUT_RX_BATCHING_OFST 0
14990 #define	MC_CMD_GET_CAPABILITIES_OUT_RX_BATCHING_LBN 25
14991 #define	MC_CMD_GET_CAPABILITIES_OUT_RX_BATCHING_WIDTH 1
14992 #define	MC_CMD_GET_CAPABILITIES_OUT_MCAST_FILTER_CHAINING_OFST 0
14993 #define	MC_CMD_GET_CAPABILITIES_OUT_MCAST_FILTER_CHAINING_LBN 26
14994 #define	MC_CMD_GET_CAPABILITIES_OUT_MCAST_FILTER_CHAINING_WIDTH 1
14995 #define	MC_CMD_GET_CAPABILITIES_OUT_PM_AND_RXDP_COUNTERS_OFST 0
14996 #define	MC_CMD_GET_CAPABILITIES_OUT_PM_AND_RXDP_COUNTERS_LBN 27
14997 #define	MC_CMD_GET_CAPABILITIES_OUT_PM_AND_RXDP_COUNTERS_WIDTH 1
14998 #define	MC_CMD_GET_CAPABILITIES_OUT_RX_DISABLE_SCATTER_OFST 0
14999 #define	MC_CMD_GET_CAPABILITIES_OUT_RX_DISABLE_SCATTER_LBN 28
15000 #define	MC_CMD_GET_CAPABILITIES_OUT_RX_DISABLE_SCATTER_WIDTH 1
15001 #define	MC_CMD_GET_CAPABILITIES_OUT_TX_MCAST_UDP_LOOPBACK_OFST 0
15002 #define	MC_CMD_GET_CAPABILITIES_OUT_TX_MCAST_UDP_LOOPBACK_LBN 29
15003 #define	MC_CMD_GET_CAPABILITIES_OUT_TX_MCAST_UDP_LOOPBACK_WIDTH 1
15004 #define	MC_CMD_GET_CAPABILITIES_OUT_EVB_OFST 0
15005 #define	MC_CMD_GET_CAPABILITIES_OUT_EVB_LBN 30
15006 #define	MC_CMD_GET_CAPABILITIES_OUT_EVB_WIDTH 1
15007 #define	MC_CMD_GET_CAPABILITIES_OUT_VXLAN_NVGRE_OFST 0
15008 #define	MC_CMD_GET_CAPABILITIES_OUT_VXLAN_NVGRE_LBN 31
15009 #define	MC_CMD_GET_CAPABILITIES_OUT_VXLAN_NVGRE_WIDTH 1
15010 /* RxDPCPU firmware id. */
15011 #define	MC_CMD_GET_CAPABILITIES_OUT_RX_DPCPU_FW_ID_OFST 4
15012 #define	MC_CMD_GET_CAPABILITIES_OUT_RX_DPCPU_FW_ID_LEN 2
15013 /* enum: Standard RXDP firmware */
15014 #define	MC_CMD_GET_CAPABILITIES_OUT_RXDP 0x0
15015 /* enum: Low latency RXDP firmware */
15016 #define	MC_CMD_GET_CAPABILITIES_OUT_RXDP_LOW_LATENCY 0x1
15017 /* enum: Packed stream RXDP firmware */
15018 #define	MC_CMD_GET_CAPABILITIES_OUT_RXDP_PACKED_STREAM 0x2
15019 /* enum: Rules engine RXDP firmware */
15020 #define	MC_CMD_GET_CAPABILITIES_OUT_RXDP_RULES_ENGINE 0x5
15021 /* enum: DPDK RXDP firmware */
15022 #define	MC_CMD_GET_CAPABILITIES_OUT_RXDP_DPDK 0x6
15023 /* enum: BIST RXDP firmware */
15024 #define	MC_CMD_GET_CAPABILITIES_OUT_RXDP_BIST 0x10a
15025 /* enum: RXDP Test firmware image 1 */
15026 #define	MC_CMD_GET_CAPABILITIES_OUT_RXDP_TEST_FW_TO_MC_CUT_THROUGH 0x101
15027 /* enum: RXDP Test firmware image 2 */
15028 #define	MC_CMD_GET_CAPABILITIES_OUT_RXDP_TEST_FW_TO_MC_STORE_FORWARD 0x102
15029 /* enum: RXDP Test firmware image 3 */
15030 #define	MC_CMD_GET_CAPABILITIES_OUT_RXDP_TEST_FW_TO_MC_STORE_FORWARD_FIRST 0x103
15031 /* enum: RXDP Test firmware image 4 */
15032 #define	MC_CMD_GET_CAPABILITIES_OUT_RXDP_TEST_EVERY_EVENT_BATCHABLE 0x104
15033 /* enum: RXDP Test firmware image 5 */
15034 #define	MC_CMD_GET_CAPABILITIES_OUT_RXDP_TEST_BACKPRESSURE 0x105
15035 /* enum: RXDP Test firmware image 6 */
15036 #define	MC_CMD_GET_CAPABILITIES_OUT_RXDP_TEST_FW_PACKET_EDITS 0x106
15037 /* enum: RXDP Test firmware image 7 */
15038 #define	MC_CMD_GET_CAPABILITIES_OUT_RXDP_TEST_FW_RX_HDR_SPLIT 0x107
15039 /* enum: RXDP Test firmware image 8 */
15040 #define	MC_CMD_GET_CAPABILITIES_OUT_RXDP_TEST_FW_DISABLE_DL 0x108
15041 /* enum: RXDP Test firmware image 9 */
15042 #define	MC_CMD_GET_CAPABILITIES_OUT_RXDP_TEST_FW_DOORBELL_DELAY 0x10b
15043 /* enum: RXDP Test firmware image 10 */
15044 #define	MC_CMD_GET_CAPABILITIES_OUT_RXDP_TEST_FW_SLOW 0x10c
15045 /* TxDPCPU firmware id. */
15046 #define	MC_CMD_GET_CAPABILITIES_OUT_TX_DPCPU_FW_ID_OFST 6
15047 #define	MC_CMD_GET_CAPABILITIES_OUT_TX_DPCPU_FW_ID_LEN 2
15048 /* enum: Standard TXDP firmware */
15049 #define	MC_CMD_GET_CAPABILITIES_OUT_TXDP 0x0
15050 /* enum: Low latency TXDP firmware */
15051 #define	MC_CMD_GET_CAPABILITIES_OUT_TXDP_LOW_LATENCY 0x1
15052 /* enum: High packet rate TXDP firmware */
15053 #define	MC_CMD_GET_CAPABILITIES_OUT_TXDP_HIGH_PACKET_RATE 0x3
15054 /* enum: Rules engine TXDP firmware */
15055 #define	MC_CMD_GET_CAPABILITIES_OUT_TXDP_RULES_ENGINE 0x5
15056 /* enum: DPDK TXDP firmware */
15057 #define	MC_CMD_GET_CAPABILITIES_OUT_TXDP_DPDK 0x6
15058 /* enum: BIST TXDP firmware */
15059 #define	MC_CMD_GET_CAPABILITIES_OUT_TXDP_BIST 0x12d
15060 /* enum: TXDP Test firmware image 1 */
15061 #define	MC_CMD_GET_CAPABILITIES_OUT_TXDP_TEST_FW_TSO_EDIT 0x101
15062 /* enum: TXDP Test firmware image 2 */
15063 #define	MC_CMD_GET_CAPABILITIES_OUT_TXDP_TEST_FW_PACKET_EDITS 0x102
15064 /* enum: TXDP CSR bus test firmware */
15065 #define	MC_CMD_GET_CAPABILITIES_OUT_TXDP_TEST_FW_CSR 0x103
15066 #define	MC_CMD_GET_CAPABILITIES_OUT_RXPD_FW_VERSION_OFST 8
15067 #define	MC_CMD_GET_CAPABILITIES_OUT_RXPD_FW_VERSION_LEN 2
15068 #define	MC_CMD_GET_CAPABILITIES_OUT_RXPD_FW_VERSION_REV_OFST 8
15069 #define	MC_CMD_GET_CAPABILITIES_OUT_RXPD_FW_VERSION_REV_LBN 0
15070 #define	MC_CMD_GET_CAPABILITIES_OUT_RXPD_FW_VERSION_REV_WIDTH 12
15071 #define	MC_CMD_GET_CAPABILITIES_OUT_RXPD_FW_VERSION_TYPE_OFST 8
15072 #define	MC_CMD_GET_CAPABILITIES_OUT_RXPD_FW_VERSION_TYPE_LBN 12
15073 #define	MC_CMD_GET_CAPABILITIES_OUT_RXPD_FW_VERSION_TYPE_WIDTH 4
15074 /* enum: reserved value - do not use (may indicate alternative interpretation
15075  * of REV field in future)
15076  */
15077 #define	MC_CMD_GET_CAPABILITIES_OUT_RXPD_FW_TYPE_RESERVED 0x0
15078 /* enum: Trivial RX PD firmware for early Huntington development (Huntington
15079  * development only)
15080  */
15081 #define	MC_CMD_GET_CAPABILITIES_OUT_RXPD_FW_TYPE_FIRST_PKT 0x1
15082 /* enum: RX PD firmware for telemetry prototyping (Medford2 development only)
15083  */
15084 #define	MC_CMD_GET_CAPABILITIES_OUT_RXPD_FW_TYPE_TESTFW_TELEMETRY 0x1
15085 /* enum: RX PD firmware with approximately Siena-compatible behaviour
15086  * (Huntington development only)
15087  */
15088 #define	MC_CMD_GET_CAPABILITIES_OUT_RXPD_FW_TYPE_SIENA_COMPAT 0x2
15089 /* enum: Full featured RX PD production firmware */
15090 #define	MC_CMD_GET_CAPABILITIES_OUT_RXPD_FW_TYPE_FULL_FEATURED 0x3
15091 /* enum: (deprecated original name for the FULL_FEATURED variant) */
15092 #define	MC_CMD_GET_CAPABILITIES_OUT_RXPD_FW_TYPE_VSWITCH 0x3
15093 /* enum: siena_compat variant RX PD firmware using PM rather than MAC
15094  * (Huntington development only)
15095  */
15096 #define	MC_CMD_GET_CAPABILITIES_OUT_RXPD_FW_TYPE_SIENA_COMPAT_PM 0x4
15097 /* enum: Low latency RX PD production firmware */
15098 #define	MC_CMD_GET_CAPABILITIES_OUT_RXPD_FW_TYPE_LOW_LATENCY 0x5
15099 /* enum: Packed stream RX PD production firmware */
15100 #define	MC_CMD_GET_CAPABILITIES_OUT_RXPD_FW_TYPE_PACKED_STREAM 0x6
15101 /* enum: RX PD firmware handling layer 2 only for high packet rate performance
15102  * tests (Medford development only)
15103  */
15104 #define	MC_CMD_GET_CAPABILITIES_OUT_RXPD_FW_TYPE_LAYER2_PERF 0x7
15105 /* enum: Rules engine RX PD production firmware */
15106 #define	MC_CMD_GET_CAPABILITIES_OUT_RXPD_FW_TYPE_RULES_ENGINE 0x8
15107 /* enum: Custom firmware variant (see SF-119495-PD and bug69716) */
15108 #define	MC_CMD_GET_CAPABILITIES_OUT_RXPD_FW_TYPE_L3XUDP 0x9
15109 /* enum: DPDK RX PD production firmware */
15110 #define	MC_CMD_GET_CAPABILITIES_OUT_RXPD_FW_TYPE_DPDK 0xa
15111 /* enum: RX PD firmware for GUE parsing prototype (Medford development only) */
15112 #define	MC_CMD_GET_CAPABILITIES_OUT_RXPD_FW_TYPE_TESTFW_GUE_PROTOTYPE 0xe
15113 /* enum: RX PD firmware parsing but not filtering network overlay tunnel
15114  * encapsulations (Medford development only)
15115  */
15116 #define	MC_CMD_GET_CAPABILITIES_OUT_RXPD_FW_TYPE_TESTFW_ENCAP_PARSING_ONLY 0xf
15117 #define	MC_CMD_GET_CAPABILITIES_OUT_TXPD_FW_VERSION_OFST 10
15118 #define	MC_CMD_GET_CAPABILITIES_OUT_TXPD_FW_VERSION_LEN 2
15119 #define	MC_CMD_GET_CAPABILITIES_OUT_TXPD_FW_VERSION_REV_OFST 10
15120 #define	MC_CMD_GET_CAPABILITIES_OUT_TXPD_FW_VERSION_REV_LBN 0
15121 #define	MC_CMD_GET_CAPABILITIES_OUT_TXPD_FW_VERSION_REV_WIDTH 12
15122 #define	MC_CMD_GET_CAPABILITIES_OUT_TXPD_FW_VERSION_TYPE_OFST 10
15123 #define	MC_CMD_GET_CAPABILITIES_OUT_TXPD_FW_VERSION_TYPE_LBN 12
15124 #define	MC_CMD_GET_CAPABILITIES_OUT_TXPD_FW_VERSION_TYPE_WIDTH 4
15125 /* enum: reserved value - do not use (may indicate alternative interpretation
15126  * of REV field in future)
15127  */
15128 #define	MC_CMD_GET_CAPABILITIES_OUT_TXPD_FW_TYPE_RESERVED 0x0
15129 /* enum: Trivial TX PD firmware for early Huntington development (Huntington
15130  * development only)
15131  */
15132 #define	MC_CMD_GET_CAPABILITIES_OUT_TXPD_FW_TYPE_FIRST_PKT 0x1
15133 /* enum: TX PD firmware for telemetry prototyping (Medford2 development only)
15134  */
15135 #define	MC_CMD_GET_CAPABILITIES_OUT_TXPD_FW_TYPE_TESTFW_TELEMETRY 0x1
15136 /* enum: TX PD firmware with approximately Siena-compatible behaviour
15137  * (Huntington development only)
15138  */
15139 #define	MC_CMD_GET_CAPABILITIES_OUT_TXPD_FW_TYPE_SIENA_COMPAT 0x2
15140 /* enum: Full featured TX PD production firmware */
15141 #define	MC_CMD_GET_CAPABILITIES_OUT_TXPD_FW_TYPE_FULL_FEATURED 0x3
15142 /* enum: (deprecated original name for the FULL_FEATURED variant) */
15143 #define	MC_CMD_GET_CAPABILITIES_OUT_TXPD_FW_TYPE_VSWITCH 0x3
15144 /* enum: siena_compat variant TX PD firmware using PM rather than MAC
15145  * (Huntington development only)
15146  */
15147 #define	MC_CMD_GET_CAPABILITIES_OUT_TXPD_FW_TYPE_SIENA_COMPAT_PM 0x4
15148 #define	MC_CMD_GET_CAPABILITIES_OUT_TXPD_FW_TYPE_LOW_LATENCY 0x5 /* enum */
15149 /* enum: TX PD firmware handling layer 2 only for high packet rate performance
15150  * tests (Medford development only)
15151  */
15152 #define	MC_CMD_GET_CAPABILITIES_OUT_TXPD_FW_TYPE_LAYER2_PERF 0x7
15153 /* enum: Rules engine TX PD production firmware */
15154 #define	MC_CMD_GET_CAPABILITIES_OUT_TXPD_FW_TYPE_RULES_ENGINE 0x8
15155 /* enum: Custom firmware variant (see SF-119495-PD and bug69716) */
15156 #define	MC_CMD_GET_CAPABILITIES_OUT_TXPD_FW_TYPE_L3XUDP 0x9
15157 /* enum: DPDK TX PD production firmware */
15158 #define	MC_CMD_GET_CAPABILITIES_OUT_TXPD_FW_TYPE_DPDK 0xa
15159 /* enum: RX PD firmware for GUE parsing prototype (Medford development only) */
15160 #define	MC_CMD_GET_CAPABILITIES_OUT_TXPD_FW_TYPE_TESTFW_GUE_PROTOTYPE 0xe
15161 /* Hardware capabilities of NIC */
15162 #define	MC_CMD_GET_CAPABILITIES_OUT_HW_CAPABILITIES_OFST 12
15163 #define	MC_CMD_GET_CAPABILITIES_OUT_HW_CAPABILITIES_LEN 4
15164 /* Licensed capabilities */
15165 #define	MC_CMD_GET_CAPABILITIES_OUT_LICENSE_CAPABILITIES_OFST 16
15166 #define	MC_CMD_GET_CAPABILITIES_OUT_LICENSE_CAPABILITIES_LEN 4
15167 
15168 /* MC_CMD_GET_CAPABILITIES_V2_IN msgrequest */
15169 #define	MC_CMD_GET_CAPABILITIES_V2_IN_LEN 0
15170 
15171 /* MC_CMD_GET_CAPABILITIES_V2_OUT msgresponse */
15172 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_LEN 72
15173 /* First word of flags. */
15174 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_FLAGS1_OFST 0
15175 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_FLAGS1_LEN 4
15176 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_VPORT_RECONFIGURE_OFST 0
15177 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_VPORT_RECONFIGURE_LBN 3
15178 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_VPORT_RECONFIGURE_WIDTH 1
15179 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TX_STRIPING_OFST 0
15180 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TX_STRIPING_LBN 4
15181 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TX_STRIPING_WIDTH 1
15182 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_VADAPTOR_QUERY_OFST 0
15183 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_VADAPTOR_QUERY_LBN 5
15184 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_VADAPTOR_QUERY_WIDTH 1
15185 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_EVB_PORT_VLAN_RESTRICT_OFST 0
15186 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_EVB_PORT_VLAN_RESTRICT_LBN 6
15187 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_EVB_PORT_VLAN_RESTRICT_WIDTH 1
15188 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_DRV_ATTACH_PREBOOT_OFST 0
15189 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_DRV_ATTACH_PREBOOT_LBN 7
15190 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_DRV_ATTACH_PREBOOT_WIDTH 1
15191 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RX_FORCE_EVENT_MERGING_OFST 0
15192 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RX_FORCE_EVENT_MERGING_LBN 8
15193 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RX_FORCE_EVENT_MERGING_WIDTH 1
15194 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_SET_MAC_ENHANCED_OFST 0
15195 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_SET_MAC_ENHANCED_LBN 9
15196 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_SET_MAC_ENHANCED_WIDTH 1
15197 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_UNKNOWN_UCAST_DST_FILTER_ALWAYS_MULTI_RECIPIENT_OFST 0
15198 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_UNKNOWN_UCAST_DST_FILTER_ALWAYS_MULTI_RECIPIENT_LBN 10
15199 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_UNKNOWN_UCAST_DST_FILTER_ALWAYS_MULTI_RECIPIENT_WIDTH 1
15200 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_VADAPTOR_PERMIT_SET_MAC_WHEN_FILTERS_INSTALLED_OFST 0
15201 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_VADAPTOR_PERMIT_SET_MAC_WHEN_FILTERS_INSTALLED_LBN 11
15202 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_VADAPTOR_PERMIT_SET_MAC_WHEN_FILTERS_INSTALLED_WIDTH 1
15203 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TX_MAC_SECURITY_FILTERING_OFST 0
15204 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TX_MAC_SECURITY_FILTERING_LBN 12
15205 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TX_MAC_SECURITY_FILTERING_WIDTH 1
15206 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_ADDITIONAL_RSS_MODES_OFST 0
15207 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_ADDITIONAL_RSS_MODES_LBN 13
15208 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_ADDITIONAL_RSS_MODES_WIDTH 1
15209 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_QBB_OFST 0
15210 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_QBB_LBN 14
15211 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_QBB_WIDTH 1
15212 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RX_PACKED_STREAM_VAR_BUFFERS_OFST 0
15213 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RX_PACKED_STREAM_VAR_BUFFERS_LBN 15
15214 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RX_PACKED_STREAM_VAR_BUFFERS_WIDTH 1
15215 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RX_RSS_LIMITED_OFST 0
15216 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RX_RSS_LIMITED_LBN 16
15217 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RX_RSS_LIMITED_WIDTH 1
15218 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RX_PACKED_STREAM_OFST 0
15219 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RX_PACKED_STREAM_LBN 17
15220 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RX_PACKED_STREAM_WIDTH 1
15221 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RX_INCLUDE_FCS_OFST 0
15222 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RX_INCLUDE_FCS_LBN 18
15223 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RX_INCLUDE_FCS_WIDTH 1
15224 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TX_VLAN_INSERTION_OFST 0
15225 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TX_VLAN_INSERTION_LBN 19
15226 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TX_VLAN_INSERTION_WIDTH 1
15227 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RX_VLAN_STRIPPING_OFST 0
15228 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RX_VLAN_STRIPPING_LBN 20
15229 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RX_VLAN_STRIPPING_WIDTH 1
15230 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TX_TSO_OFST 0
15231 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TX_TSO_LBN 21
15232 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TX_TSO_WIDTH 1
15233 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RX_PREFIX_LEN_0_OFST 0
15234 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RX_PREFIX_LEN_0_LBN 22
15235 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RX_PREFIX_LEN_0_WIDTH 1
15236 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RX_PREFIX_LEN_14_OFST 0
15237 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RX_PREFIX_LEN_14_LBN 23
15238 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RX_PREFIX_LEN_14_WIDTH 1
15239 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RX_TIMESTAMP_OFST 0
15240 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RX_TIMESTAMP_LBN 24
15241 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RX_TIMESTAMP_WIDTH 1
15242 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RX_BATCHING_OFST 0
15243 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RX_BATCHING_LBN 25
15244 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RX_BATCHING_WIDTH 1
15245 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_MCAST_FILTER_CHAINING_OFST 0
15246 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_MCAST_FILTER_CHAINING_LBN 26
15247 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_MCAST_FILTER_CHAINING_WIDTH 1
15248 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_PM_AND_RXDP_COUNTERS_OFST 0
15249 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_PM_AND_RXDP_COUNTERS_LBN 27
15250 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_PM_AND_RXDP_COUNTERS_WIDTH 1
15251 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RX_DISABLE_SCATTER_OFST 0
15252 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RX_DISABLE_SCATTER_LBN 28
15253 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RX_DISABLE_SCATTER_WIDTH 1
15254 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TX_MCAST_UDP_LOOPBACK_OFST 0
15255 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TX_MCAST_UDP_LOOPBACK_LBN 29
15256 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TX_MCAST_UDP_LOOPBACK_WIDTH 1
15257 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_EVB_OFST 0
15258 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_EVB_LBN 30
15259 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_EVB_WIDTH 1
15260 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_VXLAN_NVGRE_OFST 0
15261 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_VXLAN_NVGRE_LBN 31
15262 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_VXLAN_NVGRE_WIDTH 1
15263 /* RxDPCPU firmware id. */
15264 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RX_DPCPU_FW_ID_OFST 4
15265 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RX_DPCPU_FW_ID_LEN 2
15266 /* enum: Standard RXDP firmware */
15267 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RXDP 0x0
15268 /* enum: Low latency RXDP firmware */
15269 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RXDP_LOW_LATENCY 0x1
15270 /* enum: Packed stream RXDP firmware */
15271 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RXDP_PACKED_STREAM 0x2
15272 /* enum: Rules engine RXDP firmware */
15273 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RXDP_RULES_ENGINE 0x5
15274 /* enum: DPDK RXDP firmware */
15275 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RXDP_DPDK 0x6
15276 /* enum: BIST RXDP firmware */
15277 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RXDP_BIST 0x10a
15278 /* enum: RXDP Test firmware image 1 */
15279 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RXDP_TEST_FW_TO_MC_CUT_THROUGH 0x101
15280 /* enum: RXDP Test firmware image 2 */
15281 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RXDP_TEST_FW_TO_MC_STORE_FORWARD 0x102
15282 /* enum: RXDP Test firmware image 3 */
15283 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RXDP_TEST_FW_TO_MC_STORE_FORWARD_FIRST 0x103
15284 /* enum: RXDP Test firmware image 4 */
15285 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RXDP_TEST_EVERY_EVENT_BATCHABLE 0x104
15286 /* enum: RXDP Test firmware image 5 */
15287 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RXDP_TEST_BACKPRESSURE 0x105
15288 /* enum: RXDP Test firmware image 6 */
15289 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RXDP_TEST_FW_PACKET_EDITS 0x106
15290 /* enum: RXDP Test firmware image 7 */
15291 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RXDP_TEST_FW_RX_HDR_SPLIT 0x107
15292 /* enum: RXDP Test firmware image 8 */
15293 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RXDP_TEST_FW_DISABLE_DL 0x108
15294 /* enum: RXDP Test firmware image 9 */
15295 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RXDP_TEST_FW_DOORBELL_DELAY 0x10b
15296 /* enum: RXDP Test firmware image 10 */
15297 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RXDP_TEST_FW_SLOW 0x10c
15298 /* TxDPCPU firmware id. */
15299 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TX_DPCPU_FW_ID_OFST 6
15300 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TX_DPCPU_FW_ID_LEN 2
15301 /* enum: Standard TXDP firmware */
15302 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TXDP 0x0
15303 /* enum: Low latency TXDP firmware */
15304 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TXDP_LOW_LATENCY 0x1
15305 /* enum: High packet rate TXDP firmware */
15306 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TXDP_HIGH_PACKET_RATE 0x3
15307 /* enum: Rules engine TXDP firmware */
15308 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TXDP_RULES_ENGINE 0x5
15309 /* enum: DPDK TXDP firmware */
15310 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TXDP_DPDK 0x6
15311 /* enum: BIST TXDP firmware */
15312 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TXDP_BIST 0x12d
15313 /* enum: TXDP Test firmware image 1 */
15314 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TXDP_TEST_FW_TSO_EDIT 0x101
15315 /* enum: TXDP Test firmware image 2 */
15316 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TXDP_TEST_FW_PACKET_EDITS 0x102
15317 /* enum: TXDP CSR bus test firmware */
15318 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TXDP_TEST_FW_CSR 0x103
15319 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RXPD_FW_VERSION_OFST 8
15320 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RXPD_FW_VERSION_LEN 2
15321 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RXPD_FW_VERSION_REV_OFST 8
15322 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RXPD_FW_VERSION_REV_LBN 0
15323 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RXPD_FW_VERSION_REV_WIDTH 12
15324 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RXPD_FW_VERSION_TYPE_OFST 8
15325 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RXPD_FW_VERSION_TYPE_LBN 12
15326 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RXPD_FW_VERSION_TYPE_WIDTH 4
15327 /* enum: reserved value - do not use (may indicate alternative interpretation
15328  * of REV field in future)
15329  */
15330 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RXPD_FW_TYPE_RESERVED 0x0
15331 /* enum: Trivial RX PD firmware for early Huntington development (Huntington
15332  * development only)
15333  */
15334 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RXPD_FW_TYPE_FIRST_PKT 0x1
15335 /* enum: RX PD firmware for telemetry prototyping (Medford2 development only)
15336  */
15337 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RXPD_FW_TYPE_TESTFW_TELEMETRY 0x1
15338 /* enum: RX PD firmware with approximately Siena-compatible behaviour
15339  * (Huntington development only)
15340  */
15341 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RXPD_FW_TYPE_SIENA_COMPAT 0x2
15342 /* enum: Full featured RX PD production firmware */
15343 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RXPD_FW_TYPE_FULL_FEATURED 0x3
15344 /* enum: (deprecated original name for the FULL_FEATURED variant) */
15345 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RXPD_FW_TYPE_VSWITCH 0x3
15346 /* enum: siena_compat variant RX PD firmware using PM rather than MAC
15347  * (Huntington development only)
15348  */
15349 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RXPD_FW_TYPE_SIENA_COMPAT_PM 0x4
15350 /* enum: Low latency RX PD production firmware */
15351 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RXPD_FW_TYPE_LOW_LATENCY 0x5
15352 /* enum: Packed stream RX PD production firmware */
15353 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RXPD_FW_TYPE_PACKED_STREAM 0x6
15354 /* enum: RX PD firmware handling layer 2 only for high packet rate performance
15355  * tests (Medford development only)
15356  */
15357 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RXPD_FW_TYPE_LAYER2_PERF 0x7
15358 /* enum: Rules engine RX PD production firmware */
15359 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RXPD_FW_TYPE_RULES_ENGINE 0x8
15360 /* enum: Custom firmware variant (see SF-119495-PD and bug69716) */
15361 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RXPD_FW_TYPE_L3XUDP 0x9
15362 /* enum: DPDK RX PD production firmware */
15363 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RXPD_FW_TYPE_DPDK 0xa
15364 /* enum: RX PD firmware for GUE parsing prototype (Medford development only) */
15365 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RXPD_FW_TYPE_TESTFW_GUE_PROTOTYPE 0xe
15366 /* enum: RX PD firmware parsing but not filtering network overlay tunnel
15367  * encapsulations (Medford development only)
15368  */
15369 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RXPD_FW_TYPE_TESTFW_ENCAP_PARSING_ONLY 0xf
15370 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TXPD_FW_VERSION_OFST 10
15371 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TXPD_FW_VERSION_LEN 2
15372 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TXPD_FW_VERSION_REV_OFST 10
15373 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TXPD_FW_VERSION_REV_LBN 0
15374 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TXPD_FW_VERSION_REV_WIDTH 12
15375 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TXPD_FW_VERSION_TYPE_OFST 10
15376 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TXPD_FW_VERSION_TYPE_LBN 12
15377 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TXPD_FW_VERSION_TYPE_WIDTH 4
15378 /* enum: reserved value - do not use (may indicate alternative interpretation
15379  * of REV field in future)
15380  */
15381 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TXPD_FW_TYPE_RESERVED 0x0
15382 /* enum: Trivial TX PD firmware for early Huntington development (Huntington
15383  * development only)
15384  */
15385 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TXPD_FW_TYPE_FIRST_PKT 0x1
15386 /* enum: TX PD firmware for telemetry prototyping (Medford2 development only)
15387  */
15388 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TXPD_FW_TYPE_TESTFW_TELEMETRY 0x1
15389 /* enum: TX PD firmware with approximately Siena-compatible behaviour
15390  * (Huntington development only)
15391  */
15392 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TXPD_FW_TYPE_SIENA_COMPAT 0x2
15393 /* enum: Full featured TX PD production firmware */
15394 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TXPD_FW_TYPE_FULL_FEATURED 0x3
15395 /* enum: (deprecated original name for the FULL_FEATURED variant) */
15396 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TXPD_FW_TYPE_VSWITCH 0x3
15397 /* enum: siena_compat variant TX PD firmware using PM rather than MAC
15398  * (Huntington development only)
15399  */
15400 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TXPD_FW_TYPE_SIENA_COMPAT_PM 0x4
15401 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TXPD_FW_TYPE_LOW_LATENCY 0x5 /* enum */
15402 /* enum: TX PD firmware handling layer 2 only for high packet rate performance
15403  * tests (Medford development only)
15404  */
15405 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TXPD_FW_TYPE_LAYER2_PERF 0x7
15406 /* enum: Rules engine TX PD production firmware */
15407 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TXPD_FW_TYPE_RULES_ENGINE 0x8
15408 /* enum: Custom firmware variant (see SF-119495-PD and bug69716) */
15409 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TXPD_FW_TYPE_L3XUDP 0x9
15410 /* enum: DPDK TX PD production firmware */
15411 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TXPD_FW_TYPE_DPDK 0xa
15412 /* enum: RX PD firmware for GUE parsing prototype (Medford development only) */
15413 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TXPD_FW_TYPE_TESTFW_GUE_PROTOTYPE 0xe
15414 /* Hardware capabilities of NIC */
15415 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_HW_CAPABILITIES_OFST 12
15416 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_HW_CAPABILITIES_LEN 4
15417 /* Licensed capabilities */
15418 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_LICENSE_CAPABILITIES_OFST 16
15419 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_LICENSE_CAPABILITIES_LEN 4
15420 /* Second word of flags. Not present on older firmware (check the length). */
15421 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_FLAGS2_OFST 20
15422 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_FLAGS2_LEN 4
15423 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TX_TSO_V2_OFST 20
15424 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TX_TSO_V2_LBN 0
15425 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TX_TSO_V2_WIDTH 1
15426 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TX_TSO_V2_ENCAP_OFST 20
15427 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TX_TSO_V2_ENCAP_LBN 1
15428 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TX_TSO_V2_ENCAP_WIDTH 1
15429 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_EVQ_TIMER_CTRL_OFST 20
15430 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_EVQ_TIMER_CTRL_LBN 2
15431 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_EVQ_TIMER_CTRL_WIDTH 1
15432 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_EVENT_CUT_THROUGH_OFST 20
15433 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_EVENT_CUT_THROUGH_LBN 3
15434 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_EVENT_CUT_THROUGH_WIDTH 1
15435 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RX_CUT_THROUGH_OFST 20
15436 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RX_CUT_THROUGH_LBN 4
15437 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RX_CUT_THROUGH_WIDTH 1
15438 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TX_VFIFO_ULL_MODE_OFST 20
15439 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TX_VFIFO_ULL_MODE_LBN 5
15440 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TX_VFIFO_ULL_MODE_WIDTH 1
15441 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_MAC_STATS_40G_TX_SIZE_BINS_OFST 20
15442 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_MAC_STATS_40G_TX_SIZE_BINS_LBN 6
15443 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_MAC_STATS_40G_TX_SIZE_BINS_WIDTH 1
15444 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_INIT_EVQ_TYPE_SUPPORTED_OFST 20
15445 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_INIT_EVQ_TYPE_SUPPORTED_LBN 7
15446 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_INIT_EVQ_TYPE_SUPPORTED_WIDTH 1
15447 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_INIT_EVQ_V2_OFST 20
15448 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_INIT_EVQ_V2_LBN 7
15449 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_INIT_EVQ_V2_WIDTH 1
15450 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TX_MAC_TIMESTAMPING_OFST 20
15451 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TX_MAC_TIMESTAMPING_LBN 8
15452 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TX_MAC_TIMESTAMPING_WIDTH 1
15453 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TX_TIMESTAMP_OFST 20
15454 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TX_TIMESTAMP_LBN 9
15455 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TX_TIMESTAMP_WIDTH 1
15456 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RX_SNIFF_OFST 20
15457 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RX_SNIFF_LBN 10
15458 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RX_SNIFF_WIDTH 1
15459 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TX_SNIFF_OFST 20
15460 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TX_SNIFF_LBN 11
15461 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TX_SNIFF_WIDTH 1
15462 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_NVRAM_UPDATE_REPORT_VERIFY_RESULT_OFST 20
15463 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_NVRAM_UPDATE_REPORT_VERIFY_RESULT_LBN 12
15464 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_NVRAM_UPDATE_REPORT_VERIFY_RESULT_WIDTH 1
15465 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_MCDI_BACKGROUND_OFST 20
15466 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_MCDI_BACKGROUND_LBN 13
15467 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_MCDI_BACKGROUND_WIDTH 1
15468 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_MCDI_DB_RETURN_OFST 20
15469 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_MCDI_DB_RETURN_LBN 14
15470 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_MCDI_DB_RETURN_WIDTH 1
15471 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_CTPIO_OFST 20
15472 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_CTPIO_LBN 15
15473 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_CTPIO_WIDTH 1
15474 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TSA_SUPPORT_OFST 20
15475 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TSA_SUPPORT_LBN 16
15476 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TSA_SUPPORT_WIDTH 1
15477 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TSA_BOUND_OFST 20
15478 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TSA_BOUND_LBN 17
15479 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TSA_BOUND_WIDTH 1
15480 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_SF_ADAPTER_AUTHENTICATION_OFST 20
15481 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_SF_ADAPTER_AUTHENTICATION_LBN 18
15482 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_SF_ADAPTER_AUTHENTICATION_WIDTH 1
15483 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_FILTER_ACTION_FLAG_OFST 20
15484 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_FILTER_ACTION_FLAG_LBN 19
15485 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_FILTER_ACTION_FLAG_WIDTH 1
15486 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_FILTER_ACTION_MARK_OFST 20
15487 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_FILTER_ACTION_MARK_LBN 20
15488 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_FILTER_ACTION_MARK_WIDTH 1
15489 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_EQUAL_STRIDE_SUPER_BUFFER_OFST 20
15490 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_EQUAL_STRIDE_SUPER_BUFFER_LBN 21
15491 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_EQUAL_STRIDE_SUPER_BUFFER_WIDTH 1
15492 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_EQUAL_STRIDE_PACKED_STREAM_OFST 20
15493 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_EQUAL_STRIDE_PACKED_STREAM_LBN 21
15494 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_EQUAL_STRIDE_PACKED_STREAM_WIDTH 1
15495 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_L3XUDP_SUPPORT_OFST 20
15496 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_L3XUDP_SUPPORT_LBN 22
15497 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_L3XUDP_SUPPORT_WIDTH 1
15498 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_FW_SUBVARIANT_NO_TX_CSUM_OFST 20
15499 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_FW_SUBVARIANT_NO_TX_CSUM_LBN 23
15500 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_FW_SUBVARIANT_NO_TX_CSUM_WIDTH 1
15501 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_VI_SPREADING_OFST 20
15502 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_VI_SPREADING_LBN 24
15503 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_VI_SPREADING_WIDTH 1
15504 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RXDP_HLB_IDLE_OFST 20
15505 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RXDP_HLB_IDLE_LBN 25
15506 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RXDP_HLB_IDLE_WIDTH 1
15507 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_INIT_RXQ_NO_CONT_EV_OFST 20
15508 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_INIT_RXQ_NO_CONT_EV_LBN 26
15509 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_INIT_RXQ_NO_CONT_EV_WIDTH 1
15510 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_INIT_RXQ_WITH_BUFFER_SIZE_OFST 20
15511 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_INIT_RXQ_WITH_BUFFER_SIZE_LBN 27
15512 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_INIT_RXQ_WITH_BUFFER_SIZE_WIDTH 1
15513 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_BUNDLE_UPDATE_OFST 20
15514 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_BUNDLE_UPDATE_LBN 28
15515 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_BUNDLE_UPDATE_WIDTH 1
15516 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TX_TSO_V3_OFST 20
15517 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TX_TSO_V3_LBN 29
15518 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TX_TSO_V3_WIDTH 1
15519 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_DYNAMIC_SENSORS_OFST 20
15520 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_DYNAMIC_SENSORS_LBN 30
15521 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_DYNAMIC_SENSORS_WIDTH 1
15522 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_NVRAM_UPDATE_POLL_VERIFY_RESULT_OFST 20
15523 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_NVRAM_UPDATE_POLL_VERIFY_RESULT_LBN 31
15524 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_NVRAM_UPDATE_POLL_VERIFY_RESULT_WIDTH 1
15525 /* Number of FATSOv2 contexts per datapath supported by this NIC (when
15526  * TX_TSO_V2 == 1). Not present on older firmware (check the length).
15527  */
15528 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TX_TSO_V2_N_CONTEXTS_OFST 24
15529 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TX_TSO_V2_N_CONTEXTS_LEN 2
15530 /* One byte per PF containing the number of the external port assigned to this
15531  * PF, indexed by PF number. Special values indicate that a PF is either not
15532  * present or not assigned.
15533  */
15534 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_PFS_TO_PORTS_ASSIGNMENT_OFST 26
15535 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_PFS_TO_PORTS_ASSIGNMENT_LEN 1
15536 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_PFS_TO_PORTS_ASSIGNMENT_NUM 16
15537 /* enum: The caller is not permitted to access information on this PF. */
15538 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_ACCESS_NOT_PERMITTED 0xff
15539 /* enum: PF does not exist. */
15540 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_PF_NOT_PRESENT 0xfe
15541 /* enum: PF does exist but is not assigned to any external port. */
15542 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_PF_NOT_ASSIGNED 0xfd
15543 /* enum: This value indicates that PF is assigned, but it cannot be expressed
15544  * in this field. It is intended for a possible future situation where a more
15545  * complex scheme of PFs to ports mapping is being used. The future driver
15546  * should look for a new field supporting the new scheme. The current/old
15547  * driver should treat this value as PF_NOT_ASSIGNED.
15548  */
15549 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_INCOMPATIBLE_ASSIGNMENT 0xfc
15550 /* One byte per PF containing the number of its VFs, indexed by PF number. A
15551  * special value indicates that a PF is not present.
15552  */
15553 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_NUM_VFS_PER_PF_OFST 42
15554 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_NUM_VFS_PER_PF_LEN 1
15555 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_NUM_VFS_PER_PF_NUM 16
15556 /* enum: The caller is not permitted to access information on this PF. */
15557 /*               MC_CMD_GET_CAPABILITIES_V2_OUT_ACCESS_NOT_PERMITTED 0xff */
15558 /* enum: PF does not exist. */
15559 /*               MC_CMD_GET_CAPABILITIES_V2_OUT_PF_NOT_PRESENT 0xfe */
15560 /* Number of VIs available for each external port */
15561 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_NUM_VIS_PER_PORT_OFST 58
15562 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_NUM_VIS_PER_PORT_LEN 2
15563 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_NUM_VIS_PER_PORT_NUM 4
15564 /* Size of RX descriptor cache expressed as binary logarithm The actual size
15565  * equals (2 ^ RX_DESC_CACHE_SIZE)
15566  */
15567 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RX_DESC_CACHE_SIZE_OFST 66
15568 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_RX_DESC_CACHE_SIZE_LEN 1
15569 /* Size of TX descriptor cache expressed as binary logarithm The actual size
15570  * equals (2 ^ TX_DESC_CACHE_SIZE)
15571  */
15572 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TX_DESC_CACHE_SIZE_OFST 67
15573 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_TX_DESC_CACHE_SIZE_LEN 1
15574 /* Total number of available PIO buffers */
15575 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_NUM_PIO_BUFFS_OFST 68
15576 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_NUM_PIO_BUFFS_LEN 2
15577 /* Size of a single PIO buffer */
15578 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_SIZE_PIO_BUFF_OFST 70
15579 #define	MC_CMD_GET_CAPABILITIES_V2_OUT_SIZE_PIO_BUFF_LEN 2
15580 
15581 /* MC_CMD_GET_CAPABILITIES_V3_OUT msgresponse */
15582 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_LEN 76
15583 /* First word of flags. */
15584 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_FLAGS1_OFST 0
15585 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_FLAGS1_LEN 4
15586 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_VPORT_RECONFIGURE_OFST 0
15587 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_VPORT_RECONFIGURE_LBN 3
15588 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_VPORT_RECONFIGURE_WIDTH 1
15589 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TX_STRIPING_OFST 0
15590 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TX_STRIPING_LBN 4
15591 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TX_STRIPING_WIDTH 1
15592 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_VADAPTOR_QUERY_OFST 0
15593 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_VADAPTOR_QUERY_LBN 5
15594 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_VADAPTOR_QUERY_WIDTH 1
15595 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_EVB_PORT_VLAN_RESTRICT_OFST 0
15596 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_EVB_PORT_VLAN_RESTRICT_LBN 6
15597 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_EVB_PORT_VLAN_RESTRICT_WIDTH 1
15598 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_DRV_ATTACH_PREBOOT_OFST 0
15599 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_DRV_ATTACH_PREBOOT_LBN 7
15600 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_DRV_ATTACH_PREBOOT_WIDTH 1
15601 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RX_FORCE_EVENT_MERGING_OFST 0
15602 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RX_FORCE_EVENT_MERGING_LBN 8
15603 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RX_FORCE_EVENT_MERGING_WIDTH 1
15604 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_SET_MAC_ENHANCED_OFST 0
15605 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_SET_MAC_ENHANCED_LBN 9
15606 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_SET_MAC_ENHANCED_WIDTH 1
15607 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_UNKNOWN_UCAST_DST_FILTER_ALWAYS_MULTI_RECIPIENT_OFST 0
15608 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_UNKNOWN_UCAST_DST_FILTER_ALWAYS_MULTI_RECIPIENT_LBN 10
15609 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_UNKNOWN_UCAST_DST_FILTER_ALWAYS_MULTI_RECIPIENT_WIDTH 1
15610 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_VADAPTOR_PERMIT_SET_MAC_WHEN_FILTERS_INSTALLED_OFST 0
15611 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_VADAPTOR_PERMIT_SET_MAC_WHEN_FILTERS_INSTALLED_LBN 11
15612 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_VADAPTOR_PERMIT_SET_MAC_WHEN_FILTERS_INSTALLED_WIDTH 1
15613 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TX_MAC_SECURITY_FILTERING_OFST 0
15614 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TX_MAC_SECURITY_FILTERING_LBN 12
15615 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TX_MAC_SECURITY_FILTERING_WIDTH 1
15616 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_ADDITIONAL_RSS_MODES_OFST 0
15617 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_ADDITIONAL_RSS_MODES_LBN 13
15618 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_ADDITIONAL_RSS_MODES_WIDTH 1
15619 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_QBB_OFST 0
15620 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_QBB_LBN 14
15621 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_QBB_WIDTH 1
15622 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RX_PACKED_STREAM_VAR_BUFFERS_OFST 0
15623 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RX_PACKED_STREAM_VAR_BUFFERS_LBN 15
15624 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RX_PACKED_STREAM_VAR_BUFFERS_WIDTH 1
15625 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RX_RSS_LIMITED_OFST 0
15626 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RX_RSS_LIMITED_LBN 16
15627 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RX_RSS_LIMITED_WIDTH 1
15628 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RX_PACKED_STREAM_OFST 0
15629 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RX_PACKED_STREAM_LBN 17
15630 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RX_PACKED_STREAM_WIDTH 1
15631 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RX_INCLUDE_FCS_OFST 0
15632 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RX_INCLUDE_FCS_LBN 18
15633 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RX_INCLUDE_FCS_WIDTH 1
15634 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TX_VLAN_INSERTION_OFST 0
15635 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TX_VLAN_INSERTION_LBN 19
15636 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TX_VLAN_INSERTION_WIDTH 1
15637 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RX_VLAN_STRIPPING_OFST 0
15638 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RX_VLAN_STRIPPING_LBN 20
15639 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RX_VLAN_STRIPPING_WIDTH 1
15640 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TX_TSO_OFST 0
15641 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TX_TSO_LBN 21
15642 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TX_TSO_WIDTH 1
15643 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RX_PREFIX_LEN_0_OFST 0
15644 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RX_PREFIX_LEN_0_LBN 22
15645 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RX_PREFIX_LEN_0_WIDTH 1
15646 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RX_PREFIX_LEN_14_OFST 0
15647 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RX_PREFIX_LEN_14_LBN 23
15648 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RX_PREFIX_LEN_14_WIDTH 1
15649 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RX_TIMESTAMP_OFST 0
15650 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RX_TIMESTAMP_LBN 24
15651 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RX_TIMESTAMP_WIDTH 1
15652 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RX_BATCHING_OFST 0
15653 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RX_BATCHING_LBN 25
15654 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RX_BATCHING_WIDTH 1
15655 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_MCAST_FILTER_CHAINING_OFST 0
15656 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_MCAST_FILTER_CHAINING_LBN 26
15657 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_MCAST_FILTER_CHAINING_WIDTH 1
15658 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_PM_AND_RXDP_COUNTERS_OFST 0
15659 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_PM_AND_RXDP_COUNTERS_LBN 27
15660 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_PM_AND_RXDP_COUNTERS_WIDTH 1
15661 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RX_DISABLE_SCATTER_OFST 0
15662 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RX_DISABLE_SCATTER_LBN 28
15663 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RX_DISABLE_SCATTER_WIDTH 1
15664 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TX_MCAST_UDP_LOOPBACK_OFST 0
15665 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TX_MCAST_UDP_LOOPBACK_LBN 29
15666 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TX_MCAST_UDP_LOOPBACK_WIDTH 1
15667 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_EVB_OFST 0
15668 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_EVB_LBN 30
15669 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_EVB_WIDTH 1
15670 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_VXLAN_NVGRE_OFST 0
15671 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_VXLAN_NVGRE_LBN 31
15672 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_VXLAN_NVGRE_WIDTH 1
15673 /* RxDPCPU firmware id. */
15674 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RX_DPCPU_FW_ID_OFST 4
15675 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RX_DPCPU_FW_ID_LEN 2
15676 /* enum: Standard RXDP firmware */
15677 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RXDP 0x0
15678 /* enum: Low latency RXDP firmware */
15679 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RXDP_LOW_LATENCY 0x1
15680 /* enum: Packed stream RXDP firmware */
15681 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RXDP_PACKED_STREAM 0x2
15682 /* enum: Rules engine RXDP firmware */
15683 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RXDP_RULES_ENGINE 0x5
15684 /* enum: DPDK RXDP firmware */
15685 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RXDP_DPDK 0x6
15686 /* enum: BIST RXDP firmware */
15687 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RXDP_BIST 0x10a
15688 /* enum: RXDP Test firmware image 1 */
15689 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RXDP_TEST_FW_TO_MC_CUT_THROUGH 0x101
15690 /* enum: RXDP Test firmware image 2 */
15691 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RXDP_TEST_FW_TO_MC_STORE_FORWARD 0x102
15692 /* enum: RXDP Test firmware image 3 */
15693 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RXDP_TEST_FW_TO_MC_STORE_FORWARD_FIRST 0x103
15694 /* enum: RXDP Test firmware image 4 */
15695 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RXDP_TEST_EVERY_EVENT_BATCHABLE 0x104
15696 /* enum: RXDP Test firmware image 5 */
15697 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RXDP_TEST_BACKPRESSURE 0x105
15698 /* enum: RXDP Test firmware image 6 */
15699 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RXDP_TEST_FW_PACKET_EDITS 0x106
15700 /* enum: RXDP Test firmware image 7 */
15701 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RXDP_TEST_FW_RX_HDR_SPLIT 0x107
15702 /* enum: RXDP Test firmware image 8 */
15703 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RXDP_TEST_FW_DISABLE_DL 0x108
15704 /* enum: RXDP Test firmware image 9 */
15705 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RXDP_TEST_FW_DOORBELL_DELAY 0x10b
15706 /* enum: RXDP Test firmware image 10 */
15707 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RXDP_TEST_FW_SLOW 0x10c
15708 /* TxDPCPU firmware id. */
15709 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TX_DPCPU_FW_ID_OFST 6
15710 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TX_DPCPU_FW_ID_LEN 2
15711 /* enum: Standard TXDP firmware */
15712 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TXDP 0x0
15713 /* enum: Low latency TXDP firmware */
15714 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TXDP_LOW_LATENCY 0x1
15715 /* enum: High packet rate TXDP firmware */
15716 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TXDP_HIGH_PACKET_RATE 0x3
15717 /* enum: Rules engine TXDP firmware */
15718 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TXDP_RULES_ENGINE 0x5
15719 /* enum: DPDK TXDP firmware */
15720 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TXDP_DPDK 0x6
15721 /* enum: BIST TXDP firmware */
15722 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TXDP_BIST 0x12d
15723 /* enum: TXDP Test firmware image 1 */
15724 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TXDP_TEST_FW_TSO_EDIT 0x101
15725 /* enum: TXDP Test firmware image 2 */
15726 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TXDP_TEST_FW_PACKET_EDITS 0x102
15727 /* enum: TXDP CSR bus test firmware */
15728 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TXDP_TEST_FW_CSR 0x103
15729 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RXPD_FW_VERSION_OFST 8
15730 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RXPD_FW_VERSION_LEN 2
15731 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RXPD_FW_VERSION_REV_OFST 8
15732 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RXPD_FW_VERSION_REV_LBN 0
15733 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RXPD_FW_VERSION_REV_WIDTH 12
15734 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RXPD_FW_VERSION_TYPE_OFST 8
15735 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RXPD_FW_VERSION_TYPE_LBN 12
15736 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RXPD_FW_VERSION_TYPE_WIDTH 4
15737 /* enum: reserved value - do not use (may indicate alternative interpretation
15738  * of REV field in future)
15739  */
15740 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RXPD_FW_TYPE_RESERVED 0x0
15741 /* enum: Trivial RX PD firmware for early Huntington development (Huntington
15742  * development only)
15743  */
15744 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RXPD_FW_TYPE_FIRST_PKT 0x1
15745 /* enum: RX PD firmware for telemetry prototyping (Medford2 development only)
15746  */
15747 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RXPD_FW_TYPE_TESTFW_TELEMETRY 0x1
15748 /* enum: RX PD firmware with approximately Siena-compatible behaviour
15749  * (Huntington development only)
15750  */
15751 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RXPD_FW_TYPE_SIENA_COMPAT 0x2
15752 /* enum: Full featured RX PD production firmware */
15753 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RXPD_FW_TYPE_FULL_FEATURED 0x3
15754 /* enum: (deprecated original name for the FULL_FEATURED variant) */
15755 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RXPD_FW_TYPE_VSWITCH 0x3
15756 /* enum: siena_compat variant RX PD firmware using PM rather than MAC
15757  * (Huntington development only)
15758  */
15759 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RXPD_FW_TYPE_SIENA_COMPAT_PM 0x4
15760 /* enum: Low latency RX PD production firmware */
15761 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RXPD_FW_TYPE_LOW_LATENCY 0x5
15762 /* enum: Packed stream RX PD production firmware */
15763 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RXPD_FW_TYPE_PACKED_STREAM 0x6
15764 /* enum: RX PD firmware handling layer 2 only for high packet rate performance
15765  * tests (Medford development only)
15766  */
15767 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RXPD_FW_TYPE_LAYER2_PERF 0x7
15768 /* enum: Rules engine RX PD production firmware */
15769 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RXPD_FW_TYPE_RULES_ENGINE 0x8
15770 /* enum: Custom firmware variant (see SF-119495-PD and bug69716) */
15771 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RXPD_FW_TYPE_L3XUDP 0x9
15772 /* enum: DPDK RX PD production firmware */
15773 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RXPD_FW_TYPE_DPDK 0xa
15774 /* enum: RX PD firmware for GUE parsing prototype (Medford development only) */
15775 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RXPD_FW_TYPE_TESTFW_GUE_PROTOTYPE 0xe
15776 /* enum: RX PD firmware parsing but not filtering network overlay tunnel
15777  * encapsulations (Medford development only)
15778  */
15779 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RXPD_FW_TYPE_TESTFW_ENCAP_PARSING_ONLY 0xf
15780 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TXPD_FW_VERSION_OFST 10
15781 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TXPD_FW_VERSION_LEN 2
15782 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TXPD_FW_VERSION_REV_OFST 10
15783 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TXPD_FW_VERSION_REV_LBN 0
15784 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TXPD_FW_VERSION_REV_WIDTH 12
15785 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TXPD_FW_VERSION_TYPE_OFST 10
15786 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TXPD_FW_VERSION_TYPE_LBN 12
15787 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TXPD_FW_VERSION_TYPE_WIDTH 4
15788 /* enum: reserved value - do not use (may indicate alternative interpretation
15789  * of REV field in future)
15790  */
15791 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TXPD_FW_TYPE_RESERVED 0x0
15792 /* enum: Trivial TX PD firmware for early Huntington development (Huntington
15793  * development only)
15794  */
15795 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TXPD_FW_TYPE_FIRST_PKT 0x1
15796 /* enum: TX PD firmware for telemetry prototyping (Medford2 development only)
15797  */
15798 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TXPD_FW_TYPE_TESTFW_TELEMETRY 0x1
15799 /* enum: TX PD firmware with approximately Siena-compatible behaviour
15800  * (Huntington development only)
15801  */
15802 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TXPD_FW_TYPE_SIENA_COMPAT 0x2
15803 /* enum: Full featured TX PD production firmware */
15804 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TXPD_FW_TYPE_FULL_FEATURED 0x3
15805 /* enum: (deprecated original name for the FULL_FEATURED variant) */
15806 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TXPD_FW_TYPE_VSWITCH 0x3
15807 /* enum: siena_compat variant TX PD firmware using PM rather than MAC
15808  * (Huntington development only)
15809  */
15810 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TXPD_FW_TYPE_SIENA_COMPAT_PM 0x4
15811 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TXPD_FW_TYPE_LOW_LATENCY 0x5 /* enum */
15812 /* enum: TX PD firmware handling layer 2 only for high packet rate performance
15813  * tests (Medford development only)
15814  */
15815 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TXPD_FW_TYPE_LAYER2_PERF 0x7
15816 /* enum: Rules engine TX PD production firmware */
15817 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TXPD_FW_TYPE_RULES_ENGINE 0x8
15818 /* enum: Custom firmware variant (see SF-119495-PD and bug69716) */
15819 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TXPD_FW_TYPE_L3XUDP 0x9
15820 /* enum: DPDK TX PD production firmware */
15821 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TXPD_FW_TYPE_DPDK 0xa
15822 /* enum: RX PD firmware for GUE parsing prototype (Medford development only) */
15823 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TXPD_FW_TYPE_TESTFW_GUE_PROTOTYPE 0xe
15824 /* Hardware capabilities of NIC */
15825 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_HW_CAPABILITIES_OFST 12
15826 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_HW_CAPABILITIES_LEN 4
15827 /* Licensed capabilities */
15828 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_LICENSE_CAPABILITIES_OFST 16
15829 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_LICENSE_CAPABILITIES_LEN 4
15830 /* Second word of flags. Not present on older firmware (check the length). */
15831 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_FLAGS2_OFST 20
15832 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_FLAGS2_LEN 4
15833 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TX_TSO_V2_OFST 20
15834 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TX_TSO_V2_LBN 0
15835 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TX_TSO_V2_WIDTH 1
15836 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TX_TSO_V2_ENCAP_OFST 20
15837 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TX_TSO_V2_ENCAP_LBN 1
15838 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TX_TSO_V2_ENCAP_WIDTH 1
15839 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_EVQ_TIMER_CTRL_OFST 20
15840 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_EVQ_TIMER_CTRL_LBN 2
15841 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_EVQ_TIMER_CTRL_WIDTH 1
15842 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_EVENT_CUT_THROUGH_OFST 20
15843 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_EVENT_CUT_THROUGH_LBN 3
15844 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_EVENT_CUT_THROUGH_WIDTH 1
15845 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RX_CUT_THROUGH_OFST 20
15846 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RX_CUT_THROUGH_LBN 4
15847 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RX_CUT_THROUGH_WIDTH 1
15848 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TX_VFIFO_ULL_MODE_OFST 20
15849 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TX_VFIFO_ULL_MODE_LBN 5
15850 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TX_VFIFO_ULL_MODE_WIDTH 1
15851 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_MAC_STATS_40G_TX_SIZE_BINS_OFST 20
15852 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_MAC_STATS_40G_TX_SIZE_BINS_LBN 6
15853 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_MAC_STATS_40G_TX_SIZE_BINS_WIDTH 1
15854 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_INIT_EVQ_TYPE_SUPPORTED_OFST 20
15855 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_INIT_EVQ_TYPE_SUPPORTED_LBN 7
15856 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_INIT_EVQ_TYPE_SUPPORTED_WIDTH 1
15857 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_INIT_EVQ_V2_OFST 20
15858 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_INIT_EVQ_V2_LBN 7
15859 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_INIT_EVQ_V2_WIDTH 1
15860 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TX_MAC_TIMESTAMPING_OFST 20
15861 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TX_MAC_TIMESTAMPING_LBN 8
15862 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TX_MAC_TIMESTAMPING_WIDTH 1
15863 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TX_TIMESTAMP_OFST 20
15864 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TX_TIMESTAMP_LBN 9
15865 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TX_TIMESTAMP_WIDTH 1
15866 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RX_SNIFF_OFST 20
15867 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RX_SNIFF_LBN 10
15868 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RX_SNIFF_WIDTH 1
15869 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TX_SNIFF_OFST 20
15870 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TX_SNIFF_LBN 11
15871 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TX_SNIFF_WIDTH 1
15872 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_NVRAM_UPDATE_REPORT_VERIFY_RESULT_OFST 20
15873 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_NVRAM_UPDATE_REPORT_VERIFY_RESULT_LBN 12
15874 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_NVRAM_UPDATE_REPORT_VERIFY_RESULT_WIDTH 1
15875 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_MCDI_BACKGROUND_OFST 20
15876 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_MCDI_BACKGROUND_LBN 13
15877 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_MCDI_BACKGROUND_WIDTH 1
15878 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_MCDI_DB_RETURN_OFST 20
15879 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_MCDI_DB_RETURN_LBN 14
15880 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_MCDI_DB_RETURN_WIDTH 1
15881 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_CTPIO_OFST 20
15882 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_CTPIO_LBN 15
15883 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_CTPIO_WIDTH 1
15884 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TSA_SUPPORT_OFST 20
15885 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TSA_SUPPORT_LBN 16
15886 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TSA_SUPPORT_WIDTH 1
15887 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TSA_BOUND_OFST 20
15888 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TSA_BOUND_LBN 17
15889 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TSA_BOUND_WIDTH 1
15890 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_SF_ADAPTER_AUTHENTICATION_OFST 20
15891 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_SF_ADAPTER_AUTHENTICATION_LBN 18
15892 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_SF_ADAPTER_AUTHENTICATION_WIDTH 1
15893 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_FILTER_ACTION_FLAG_OFST 20
15894 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_FILTER_ACTION_FLAG_LBN 19
15895 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_FILTER_ACTION_FLAG_WIDTH 1
15896 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_FILTER_ACTION_MARK_OFST 20
15897 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_FILTER_ACTION_MARK_LBN 20
15898 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_FILTER_ACTION_MARK_WIDTH 1
15899 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_EQUAL_STRIDE_SUPER_BUFFER_OFST 20
15900 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_EQUAL_STRIDE_SUPER_BUFFER_LBN 21
15901 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_EQUAL_STRIDE_SUPER_BUFFER_WIDTH 1
15902 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_EQUAL_STRIDE_PACKED_STREAM_OFST 20
15903 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_EQUAL_STRIDE_PACKED_STREAM_LBN 21
15904 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_EQUAL_STRIDE_PACKED_STREAM_WIDTH 1
15905 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_L3XUDP_SUPPORT_OFST 20
15906 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_L3XUDP_SUPPORT_LBN 22
15907 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_L3XUDP_SUPPORT_WIDTH 1
15908 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_FW_SUBVARIANT_NO_TX_CSUM_OFST 20
15909 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_FW_SUBVARIANT_NO_TX_CSUM_LBN 23
15910 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_FW_SUBVARIANT_NO_TX_CSUM_WIDTH 1
15911 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_VI_SPREADING_OFST 20
15912 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_VI_SPREADING_LBN 24
15913 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_VI_SPREADING_WIDTH 1
15914 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RXDP_HLB_IDLE_OFST 20
15915 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RXDP_HLB_IDLE_LBN 25
15916 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RXDP_HLB_IDLE_WIDTH 1
15917 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_INIT_RXQ_NO_CONT_EV_OFST 20
15918 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_INIT_RXQ_NO_CONT_EV_LBN 26
15919 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_INIT_RXQ_NO_CONT_EV_WIDTH 1
15920 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_INIT_RXQ_WITH_BUFFER_SIZE_OFST 20
15921 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_INIT_RXQ_WITH_BUFFER_SIZE_LBN 27
15922 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_INIT_RXQ_WITH_BUFFER_SIZE_WIDTH 1
15923 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_BUNDLE_UPDATE_OFST 20
15924 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_BUNDLE_UPDATE_LBN 28
15925 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_BUNDLE_UPDATE_WIDTH 1
15926 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TX_TSO_V3_OFST 20
15927 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TX_TSO_V3_LBN 29
15928 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TX_TSO_V3_WIDTH 1
15929 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_DYNAMIC_SENSORS_OFST 20
15930 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_DYNAMIC_SENSORS_LBN 30
15931 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_DYNAMIC_SENSORS_WIDTH 1
15932 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_NVRAM_UPDATE_POLL_VERIFY_RESULT_OFST 20
15933 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_NVRAM_UPDATE_POLL_VERIFY_RESULT_LBN 31
15934 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_NVRAM_UPDATE_POLL_VERIFY_RESULT_WIDTH 1
15935 /* Number of FATSOv2 contexts per datapath supported by this NIC (when
15936  * TX_TSO_V2 == 1). Not present on older firmware (check the length).
15937  */
15938 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TX_TSO_V2_N_CONTEXTS_OFST 24
15939 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TX_TSO_V2_N_CONTEXTS_LEN 2
15940 /* One byte per PF containing the number of the external port assigned to this
15941  * PF, indexed by PF number. Special values indicate that a PF is either not
15942  * present or not assigned.
15943  */
15944 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_PFS_TO_PORTS_ASSIGNMENT_OFST 26
15945 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_PFS_TO_PORTS_ASSIGNMENT_LEN 1
15946 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_PFS_TO_PORTS_ASSIGNMENT_NUM 16
15947 /* enum: The caller is not permitted to access information on this PF. */
15948 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_ACCESS_NOT_PERMITTED 0xff
15949 /* enum: PF does not exist. */
15950 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_PF_NOT_PRESENT 0xfe
15951 /* enum: PF does exist but is not assigned to any external port. */
15952 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_PF_NOT_ASSIGNED 0xfd
15953 /* enum: This value indicates that PF is assigned, but it cannot be expressed
15954  * in this field. It is intended for a possible future situation where a more
15955  * complex scheme of PFs to ports mapping is being used. The future driver
15956  * should look for a new field supporting the new scheme. The current/old
15957  * driver should treat this value as PF_NOT_ASSIGNED.
15958  */
15959 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_INCOMPATIBLE_ASSIGNMENT 0xfc
15960 /* One byte per PF containing the number of its VFs, indexed by PF number. A
15961  * special value indicates that a PF is not present.
15962  */
15963 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_NUM_VFS_PER_PF_OFST 42
15964 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_NUM_VFS_PER_PF_LEN 1
15965 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_NUM_VFS_PER_PF_NUM 16
15966 /* enum: The caller is not permitted to access information on this PF. */
15967 /*               MC_CMD_GET_CAPABILITIES_V3_OUT_ACCESS_NOT_PERMITTED 0xff */
15968 /* enum: PF does not exist. */
15969 /*               MC_CMD_GET_CAPABILITIES_V3_OUT_PF_NOT_PRESENT 0xfe */
15970 /* Number of VIs available for each external port */
15971 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_NUM_VIS_PER_PORT_OFST 58
15972 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_NUM_VIS_PER_PORT_LEN 2
15973 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_NUM_VIS_PER_PORT_NUM 4
15974 /* Size of RX descriptor cache expressed as binary logarithm The actual size
15975  * equals (2 ^ RX_DESC_CACHE_SIZE)
15976  */
15977 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RX_DESC_CACHE_SIZE_OFST 66
15978 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_RX_DESC_CACHE_SIZE_LEN 1
15979 /* Size of TX descriptor cache expressed as binary logarithm The actual size
15980  * equals (2 ^ TX_DESC_CACHE_SIZE)
15981  */
15982 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TX_DESC_CACHE_SIZE_OFST 67
15983 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_TX_DESC_CACHE_SIZE_LEN 1
15984 /* Total number of available PIO buffers */
15985 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_NUM_PIO_BUFFS_OFST 68
15986 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_NUM_PIO_BUFFS_LEN 2
15987 /* Size of a single PIO buffer */
15988 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_SIZE_PIO_BUFF_OFST 70
15989 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_SIZE_PIO_BUFF_LEN 2
15990 /* On chips later than Medford the amount of address space assigned to each VI
15991  * is configurable. This is a global setting that the driver must query to
15992  * discover the VI to address mapping. Cut-through PIO (CTPIO) is not available
15993  * with 8k VI windows.
15994  */
15995 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_VI_WINDOW_MODE_OFST 72
15996 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_VI_WINDOW_MODE_LEN 1
15997 /* enum: Each VI occupies 8k as on Huntington and Medford. PIO is at offset 4k.
15998  * CTPIO is not mapped.
15999  */
16000 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_VI_WINDOW_MODE_8K 0x0
16001 /* enum: Each VI occupies 16k. PIO is at offset 4k. CTPIO is at offset 12k. */
16002 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_VI_WINDOW_MODE_16K 0x1
16003 /* enum: Each VI occupies 64k. PIO is at offset 4k. CTPIO is at offset 12k. */
16004 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_VI_WINDOW_MODE_64K 0x2
16005 /* Number of vFIFOs per adapter that can be used for VFIFO Stuffing
16006  * (SF-115995-SW) in the present configuration of firmware and port mode.
16007  */
16008 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_VFIFO_STUFFING_NUM_VFIFOS_OFST 73
16009 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_VFIFO_STUFFING_NUM_VFIFOS_LEN 1
16010 /* Number of buffers per adapter that can be used for VFIFO Stuffing
16011  * (SF-115995-SW) in the present configuration of firmware and port mode.
16012  */
16013 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_VFIFO_STUFFING_NUM_CP_BUFFERS_OFST 74
16014 #define	MC_CMD_GET_CAPABILITIES_V3_OUT_VFIFO_STUFFING_NUM_CP_BUFFERS_LEN 2
16015 
16016 /* MC_CMD_GET_CAPABILITIES_V4_OUT msgresponse */
16017 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_LEN 78
16018 /* First word of flags. */
16019 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_FLAGS1_OFST 0
16020 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_FLAGS1_LEN 4
16021 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_VPORT_RECONFIGURE_OFST 0
16022 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_VPORT_RECONFIGURE_LBN 3
16023 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_VPORT_RECONFIGURE_WIDTH 1
16024 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TX_STRIPING_OFST 0
16025 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TX_STRIPING_LBN 4
16026 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TX_STRIPING_WIDTH 1
16027 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_VADAPTOR_QUERY_OFST 0
16028 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_VADAPTOR_QUERY_LBN 5
16029 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_VADAPTOR_QUERY_WIDTH 1
16030 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_EVB_PORT_VLAN_RESTRICT_OFST 0
16031 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_EVB_PORT_VLAN_RESTRICT_LBN 6
16032 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_EVB_PORT_VLAN_RESTRICT_WIDTH 1
16033 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_DRV_ATTACH_PREBOOT_OFST 0
16034 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_DRV_ATTACH_PREBOOT_LBN 7
16035 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_DRV_ATTACH_PREBOOT_WIDTH 1
16036 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RX_FORCE_EVENT_MERGING_OFST 0
16037 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RX_FORCE_EVENT_MERGING_LBN 8
16038 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RX_FORCE_EVENT_MERGING_WIDTH 1
16039 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_SET_MAC_ENHANCED_OFST 0
16040 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_SET_MAC_ENHANCED_LBN 9
16041 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_SET_MAC_ENHANCED_WIDTH 1
16042 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_UNKNOWN_UCAST_DST_FILTER_ALWAYS_MULTI_RECIPIENT_OFST 0
16043 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_UNKNOWN_UCAST_DST_FILTER_ALWAYS_MULTI_RECIPIENT_LBN 10
16044 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_UNKNOWN_UCAST_DST_FILTER_ALWAYS_MULTI_RECIPIENT_WIDTH 1
16045 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_VADAPTOR_PERMIT_SET_MAC_WHEN_FILTERS_INSTALLED_OFST 0
16046 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_VADAPTOR_PERMIT_SET_MAC_WHEN_FILTERS_INSTALLED_LBN 11
16047 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_VADAPTOR_PERMIT_SET_MAC_WHEN_FILTERS_INSTALLED_WIDTH 1
16048 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TX_MAC_SECURITY_FILTERING_OFST 0
16049 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TX_MAC_SECURITY_FILTERING_LBN 12
16050 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TX_MAC_SECURITY_FILTERING_WIDTH 1
16051 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_ADDITIONAL_RSS_MODES_OFST 0
16052 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_ADDITIONAL_RSS_MODES_LBN 13
16053 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_ADDITIONAL_RSS_MODES_WIDTH 1
16054 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_QBB_OFST 0
16055 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_QBB_LBN 14
16056 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_QBB_WIDTH 1
16057 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RX_PACKED_STREAM_VAR_BUFFERS_OFST 0
16058 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RX_PACKED_STREAM_VAR_BUFFERS_LBN 15
16059 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RX_PACKED_STREAM_VAR_BUFFERS_WIDTH 1
16060 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RX_RSS_LIMITED_OFST 0
16061 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RX_RSS_LIMITED_LBN 16
16062 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RX_RSS_LIMITED_WIDTH 1
16063 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RX_PACKED_STREAM_OFST 0
16064 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RX_PACKED_STREAM_LBN 17
16065 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RX_PACKED_STREAM_WIDTH 1
16066 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RX_INCLUDE_FCS_OFST 0
16067 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RX_INCLUDE_FCS_LBN 18
16068 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RX_INCLUDE_FCS_WIDTH 1
16069 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TX_VLAN_INSERTION_OFST 0
16070 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TX_VLAN_INSERTION_LBN 19
16071 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TX_VLAN_INSERTION_WIDTH 1
16072 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RX_VLAN_STRIPPING_OFST 0
16073 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RX_VLAN_STRIPPING_LBN 20
16074 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RX_VLAN_STRIPPING_WIDTH 1
16075 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TX_TSO_OFST 0
16076 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TX_TSO_LBN 21
16077 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TX_TSO_WIDTH 1
16078 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RX_PREFIX_LEN_0_OFST 0
16079 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RX_PREFIX_LEN_0_LBN 22
16080 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RX_PREFIX_LEN_0_WIDTH 1
16081 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RX_PREFIX_LEN_14_OFST 0
16082 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RX_PREFIX_LEN_14_LBN 23
16083 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RX_PREFIX_LEN_14_WIDTH 1
16084 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RX_TIMESTAMP_OFST 0
16085 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RX_TIMESTAMP_LBN 24
16086 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RX_TIMESTAMP_WIDTH 1
16087 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RX_BATCHING_OFST 0
16088 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RX_BATCHING_LBN 25
16089 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RX_BATCHING_WIDTH 1
16090 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_MCAST_FILTER_CHAINING_OFST 0
16091 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_MCAST_FILTER_CHAINING_LBN 26
16092 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_MCAST_FILTER_CHAINING_WIDTH 1
16093 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_PM_AND_RXDP_COUNTERS_OFST 0
16094 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_PM_AND_RXDP_COUNTERS_LBN 27
16095 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_PM_AND_RXDP_COUNTERS_WIDTH 1
16096 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RX_DISABLE_SCATTER_OFST 0
16097 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RX_DISABLE_SCATTER_LBN 28
16098 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RX_DISABLE_SCATTER_WIDTH 1
16099 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TX_MCAST_UDP_LOOPBACK_OFST 0
16100 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TX_MCAST_UDP_LOOPBACK_LBN 29
16101 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TX_MCAST_UDP_LOOPBACK_WIDTH 1
16102 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_EVB_OFST 0
16103 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_EVB_LBN 30
16104 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_EVB_WIDTH 1
16105 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_VXLAN_NVGRE_OFST 0
16106 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_VXLAN_NVGRE_LBN 31
16107 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_VXLAN_NVGRE_WIDTH 1
16108 /* RxDPCPU firmware id. */
16109 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RX_DPCPU_FW_ID_OFST 4
16110 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RX_DPCPU_FW_ID_LEN 2
16111 /* enum: Standard RXDP firmware */
16112 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RXDP 0x0
16113 /* enum: Low latency RXDP firmware */
16114 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RXDP_LOW_LATENCY 0x1
16115 /* enum: Packed stream RXDP firmware */
16116 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RXDP_PACKED_STREAM 0x2
16117 /* enum: Rules engine RXDP firmware */
16118 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RXDP_RULES_ENGINE 0x5
16119 /* enum: DPDK RXDP firmware */
16120 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RXDP_DPDK 0x6
16121 /* enum: BIST RXDP firmware */
16122 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RXDP_BIST 0x10a
16123 /* enum: RXDP Test firmware image 1 */
16124 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RXDP_TEST_FW_TO_MC_CUT_THROUGH 0x101
16125 /* enum: RXDP Test firmware image 2 */
16126 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RXDP_TEST_FW_TO_MC_STORE_FORWARD 0x102
16127 /* enum: RXDP Test firmware image 3 */
16128 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RXDP_TEST_FW_TO_MC_STORE_FORWARD_FIRST 0x103
16129 /* enum: RXDP Test firmware image 4 */
16130 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RXDP_TEST_EVERY_EVENT_BATCHABLE 0x104
16131 /* enum: RXDP Test firmware image 5 */
16132 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RXDP_TEST_BACKPRESSURE 0x105
16133 /* enum: RXDP Test firmware image 6 */
16134 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RXDP_TEST_FW_PACKET_EDITS 0x106
16135 /* enum: RXDP Test firmware image 7 */
16136 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RXDP_TEST_FW_RX_HDR_SPLIT 0x107
16137 /* enum: RXDP Test firmware image 8 */
16138 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RXDP_TEST_FW_DISABLE_DL 0x108
16139 /* enum: RXDP Test firmware image 9 */
16140 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RXDP_TEST_FW_DOORBELL_DELAY 0x10b
16141 /* enum: RXDP Test firmware image 10 */
16142 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RXDP_TEST_FW_SLOW 0x10c
16143 /* TxDPCPU firmware id. */
16144 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TX_DPCPU_FW_ID_OFST 6
16145 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TX_DPCPU_FW_ID_LEN 2
16146 /* enum: Standard TXDP firmware */
16147 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TXDP 0x0
16148 /* enum: Low latency TXDP firmware */
16149 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TXDP_LOW_LATENCY 0x1
16150 /* enum: High packet rate TXDP firmware */
16151 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TXDP_HIGH_PACKET_RATE 0x3
16152 /* enum: Rules engine TXDP firmware */
16153 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TXDP_RULES_ENGINE 0x5
16154 /* enum: DPDK TXDP firmware */
16155 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TXDP_DPDK 0x6
16156 /* enum: BIST TXDP firmware */
16157 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TXDP_BIST 0x12d
16158 /* enum: TXDP Test firmware image 1 */
16159 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TXDP_TEST_FW_TSO_EDIT 0x101
16160 /* enum: TXDP Test firmware image 2 */
16161 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TXDP_TEST_FW_PACKET_EDITS 0x102
16162 /* enum: TXDP CSR bus test firmware */
16163 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TXDP_TEST_FW_CSR 0x103
16164 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RXPD_FW_VERSION_OFST 8
16165 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RXPD_FW_VERSION_LEN 2
16166 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RXPD_FW_VERSION_REV_OFST 8
16167 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RXPD_FW_VERSION_REV_LBN 0
16168 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RXPD_FW_VERSION_REV_WIDTH 12
16169 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RXPD_FW_VERSION_TYPE_OFST 8
16170 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RXPD_FW_VERSION_TYPE_LBN 12
16171 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RXPD_FW_VERSION_TYPE_WIDTH 4
16172 /* enum: reserved value - do not use (may indicate alternative interpretation
16173  * of REV field in future)
16174  */
16175 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RXPD_FW_TYPE_RESERVED 0x0
16176 /* enum: Trivial RX PD firmware for early Huntington development (Huntington
16177  * development only)
16178  */
16179 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RXPD_FW_TYPE_FIRST_PKT 0x1
16180 /* enum: RX PD firmware for telemetry prototyping (Medford2 development only)
16181  */
16182 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RXPD_FW_TYPE_TESTFW_TELEMETRY 0x1
16183 /* enum: RX PD firmware with approximately Siena-compatible behaviour
16184  * (Huntington development only)
16185  */
16186 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RXPD_FW_TYPE_SIENA_COMPAT 0x2
16187 /* enum: Full featured RX PD production firmware */
16188 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RXPD_FW_TYPE_FULL_FEATURED 0x3
16189 /* enum: (deprecated original name for the FULL_FEATURED variant) */
16190 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RXPD_FW_TYPE_VSWITCH 0x3
16191 /* enum: siena_compat variant RX PD firmware using PM rather than MAC
16192  * (Huntington development only)
16193  */
16194 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RXPD_FW_TYPE_SIENA_COMPAT_PM 0x4
16195 /* enum: Low latency RX PD production firmware */
16196 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RXPD_FW_TYPE_LOW_LATENCY 0x5
16197 /* enum: Packed stream RX PD production firmware */
16198 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RXPD_FW_TYPE_PACKED_STREAM 0x6
16199 /* enum: RX PD firmware handling layer 2 only for high packet rate performance
16200  * tests (Medford development only)
16201  */
16202 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RXPD_FW_TYPE_LAYER2_PERF 0x7
16203 /* enum: Rules engine RX PD production firmware */
16204 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RXPD_FW_TYPE_RULES_ENGINE 0x8
16205 /* enum: Custom firmware variant (see SF-119495-PD and bug69716) */
16206 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RXPD_FW_TYPE_L3XUDP 0x9
16207 /* enum: DPDK RX PD production firmware */
16208 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RXPD_FW_TYPE_DPDK 0xa
16209 /* enum: RX PD firmware for GUE parsing prototype (Medford development only) */
16210 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RXPD_FW_TYPE_TESTFW_GUE_PROTOTYPE 0xe
16211 /* enum: RX PD firmware parsing but not filtering network overlay tunnel
16212  * encapsulations (Medford development only)
16213  */
16214 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RXPD_FW_TYPE_TESTFW_ENCAP_PARSING_ONLY 0xf
16215 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TXPD_FW_VERSION_OFST 10
16216 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TXPD_FW_VERSION_LEN 2
16217 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TXPD_FW_VERSION_REV_OFST 10
16218 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TXPD_FW_VERSION_REV_LBN 0
16219 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TXPD_FW_VERSION_REV_WIDTH 12
16220 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TXPD_FW_VERSION_TYPE_OFST 10
16221 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TXPD_FW_VERSION_TYPE_LBN 12
16222 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TXPD_FW_VERSION_TYPE_WIDTH 4
16223 /* enum: reserved value - do not use (may indicate alternative interpretation
16224  * of REV field in future)
16225  */
16226 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TXPD_FW_TYPE_RESERVED 0x0
16227 /* enum: Trivial TX PD firmware for early Huntington development (Huntington
16228  * development only)
16229  */
16230 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TXPD_FW_TYPE_FIRST_PKT 0x1
16231 /* enum: TX PD firmware for telemetry prototyping (Medford2 development only)
16232  */
16233 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TXPD_FW_TYPE_TESTFW_TELEMETRY 0x1
16234 /* enum: TX PD firmware with approximately Siena-compatible behaviour
16235  * (Huntington development only)
16236  */
16237 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TXPD_FW_TYPE_SIENA_COMPAT 0x2
16238 /* enum: Full featured TX PD production firmware */
16239 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TXPD_FW_TYPE_FULL_FEATURED 0x3
16240 /* enum: (deprecated original name for the FULL_FEATURED variant) */
16241 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TXPD_FW_TYPE_VSWITCH 0x3
16242 /* enum: siena_compat variant TX PD firmware using PM rather than MAC
16243  * (Huntington development only)
16244  */
16245 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TXPD_FW_TYPE_SIENA_COMPAT_PM 0x4
16246 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TXPD_FW_TYPE_LOW_LATENCY 0x5 /* enum */
16247 /* enum: TX PD firmware handling layer 2 only for high packet rate performance
16248  * tests (Medford development only)
16249  */
16250 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TXPD_FW_TYPE_LAYER2_PERF 0x7
16251 /* enum: Rules engine TX PD production firmware */
16252 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TXPD_FW_TYPE_RULES_ENGINE 0x8
16253 /* enum: Custom firmware variant (see SF-119495-PD and bug69716) */
16254 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TXPD_FW_TYPE_L3XUDP 0x9
16255 /* enum: DPDK TX PD production firmware */
16256 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TXPD_FW_TYPE_DPDK 0xa
16257 /* enum: RX PD firmware for GUE parsing prototype (Medford development only) */
16258 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TXPD_FW_TYPE_TESTFW_GUE_PROTOTYPE 0xe
16259 /* Hardware capabilities of NIC */
16260 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_HW_CAPABILITIES_OFST 12
16261 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_HW_CAPABILITIES_LEN 4
16262 /* Licensed capabilities */
16263 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_LICENSE_CAPABILITIES_OFST 16
16264 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_LICENSE_CAPABILITIES_LEN 4
16265 /* Second word of flags. Not present on older firmware (check the length). */
16266 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_FLAGS2_OFST 20
16267 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_FLAGS2_LEN 4
16268 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TX_TSO_V2_OFST 20
16269 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TX_TSO_V2_LBN 0
16270 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TX_TSO_V2_WIDTH 1
16271 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TX_TSO_V2_ENCAP_OFST 20
16272 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TX_TSO_V2_ENCAP_LBN 1
16273 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TX_TSO_V2_ENCAP_WIDTH 1
16274 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_EVQ_TIMER_CTRL_OFST 20
16275 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_EVQ_TIMER_CTRL_LBN 2
16276 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_EVQ_TIMER_CTRL_WIDTH 1
16277 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_EVENT_CUT_THROUGH_OFST 20
16278 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_EVENT_CUT_THROUGH_LBN 3
16279 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_EVENT_CUT_THROUGH_WIDTH 1
16280 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RX_CUT_THROUGH_OFST 20
16281 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RX_CUT_THROUGH_LBN 4
16282 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RX_CUT_THROUGH_WIDTH 1
16283 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TX_VFIFO_ULL_MODE_OFST 20
16284 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TX_VFIFO_ULL_MODE_LBN 5
16285 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TX_VFIFO_ULL_MODE_WIDTH 1
16286 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_MAC_STATS_40G_TX_SIZE_BINS_OFST 20
16287 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_MAC_STATS_40G_TX_SIZE_BINS_LBN 6
16288 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_MAC_STATS_40G_TX_SIZE_BINS_WIDTH 1
16289 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_INIT_EVQ_TYPE_SUPPORTED_OFST 20
16290 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_INIT_EVQ_TYPE_SUPPORTED_LBN 7
16291 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_INIT_EVQ_TYPE_SUPPORTED_WIDTH 1
16292 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_INIT_EVQ_V2_OFST 20
16293 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_INIT_EVQ_V2_LBN 7
16294 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_INIT_EVQ_V2_WIDTH 1
16295 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TX_MAC_TIMESTAMPING_OFST 20
16296 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TX_MAC_TIMESTAMPING_LBN 8
16297 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TX_MAC_TIMESTAMPING_WIDTH 1
16298 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TX_TIMESTAMP_OFST 20
16299 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TX_TIMESTAMP_LBN 9
16300 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TX_TIMESTAMP_WIDTH 1
16301 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RX_SNIFF_OFST 20
16302 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RX_SNIFF_LBN 10
16303 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RX_SNIFF_WIDTH 1
16304 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TX_SNIFF_OFST 20
16305 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TX_SNIFF_LBN 11
16306 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TX_SNIFF_WIDTH 1
16307 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_NVRAM_UPDATE_REPORT_VERIFY_RESULT_OFST 20
16308 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_NVRAM_UPDATE_REPORT_VERIFY_RESULT_LBN 12
16309 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_NVRAM_UPDATE_REPORT_VERIFY_RESULT_WIDTH 1
16310 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_MCDI_BACKGROUND_OFST 20
16311 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_MCDI_BACKGROUND_LBN 13
16312 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_MCDI_BACKGROUND_WIDTH 1
16313 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_MCDI_DB_RETURN_OFST 20
16314 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_MCDI_DB_RETURN_LBN 14
16315 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_MCDI_DB_RETURN_WIDTH 1
16316 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_CTPIO_OFST 20
16317 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_CTPIO_LBN 15
16318 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_CTPIO_WIDTH 1
16319 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TSA_SUPPORT_OFST 20
16320 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TSA_SUPPORT_LBN 16
16321 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TSA_SUPPORT_WIDTH 1
16322 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TSA_BOUND_OFST 20
16323 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TSA_BOUND_LBN 17
16324 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TSA_BOUND_WIDTH 1
16325 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_SF_ADAPTER_AUTHENTICATION_OFST 20
16326 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_SF_ADAPTER_AUTHENTICATION_LBN 18
16327 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_SF_ADAPTER_AUTHENTICATION_WIDTH 1
16328 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_FILTER_ACTION_FLAG_OFST 20
16329 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_FILTER_ACTION_FLAG_LBN 19
16330 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_FILTER_ACTION_FLAG_WIDTH 1
16331 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_FILTER_ACTION_MARK_OFST 20
16332 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_FILTER_ACTION_MARK_LBN 20
16333 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_FILTER_ACTION_MARK_WIDTH 1
16334 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_EQUAL_STRIDE_SUPER_BUFFER_OFST 20
16335 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_EQUAL_STRIDE_SUPER_BUFFER_LBN 21
16336 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_EQUAL_STRIDE_SUPER_BUFFER_WIDTH 1
16337 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_EQUAL_STRIDE_PACKED_STREAM_OFST 20
16338 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_EQUAL_STRIDE_PACKED_STREAM_LBN 21
16339 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_EQUAL_STRIDE_PACKED_STREAM_WIDTH 1
16340 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_L3XUDP_SUPPORT_OFST 20
16341 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_L3XUDP_SUPPORT_LBN 22
16342 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_L3XUDP_SUPPORT_WIDTH 1
16343 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_FW_SUBVARIANT_NO_TX_CSUM_OFST 20
16344 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_FW_SUBVARIANT_NO_TX_CSUM_LBN 23
16345 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_FW_SUBVARIANT_NO_TX_CSUM_WIDTH 1
16346 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_VI_SPREADING_OFST 20
16347 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_VI_SPREADING_LBN 24
16348 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_VI_SPREADING_WIDTH 1
16349 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RXDP_HLB_IDLE_OFST 20
16350 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RXDP_HLB_IDLE_LBN 25
16351 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RXDP_HLB_IDLE_WIDTH 1
16352 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_INIT_RXQ_NO_CONT_EV_OFST 20
16353 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_INIT_RXQ_NO_CONT_EV_LBN 26
16354 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_INIT_RXQ_NO_CONT_EV_WIDTH 1
16355 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_INIT_RXQ_WITH_BUFFER_SIZE_OFST 20
16356 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_INIT_RXQ_WITH_BUFFER_SIZE_LBN 27
16357 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_INIT_RXQ_WITH_BUFFER_SIZE_WIDTH 1
16358 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_BUNDLE_UPDATE_OFST 20
16359 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_BUNDLE_UPDATE_LBN 28
16360 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_BUNDLE_UPDATE_WIDTH 1
16361 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TX_TSO_V3_OFST 20
16362 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TX_TSO_V3_LBN 29
16363 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TX_TSO_V3_WIDTH 1
16364 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_DYNAMIC_SENSORS_OFST 20
16365 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_DYNAMIC_SENSORS_LBN 30
16366 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_DYNAMIC_SENSORS_WIDTH 1
16367 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_NVRAM_UPDATE_POLL_VERIFY_RESULT_OFST 20
16368 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_NVRAM_UPDATE_POLL_VERIFY_RESULT_LBN 31
16369 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_NVRAM_UPDATE_POLL_VERIFY_RESULT_WIDTH 1
16370 /* Number of FATSOv2 contexts per datapath supported by this NIC (when
16371  * TX_TSO_V2 == 1). Not present on older firmware (check the length).
16372  */
16373 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TX_TSO_V2_N_CONTEXTS_OFST 24
16374 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TX_TSO_V2_N_CONTEXTS_LEN 2
16375 /* One byte per PF containing the number of the external port assigned to this
16376  * PF, indexed by PF number. Special values indicate that a PF is either not
16377  * present or not assigned.
16378  */
16379 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_PFS_TO_PORTS_ASSIGNMENT_OFST 26
16380 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_PFS_TO_PORTS_ASSIGNMENT_LEN 1
16381 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_PFS_TO_PORTS_ASSIGNMENT_NUM 16
16382 /* enum: The caller is not permitted to access information on this PF. */
16383 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_ACCESS_NOT_PERMITTED 0xff
16384 /* enum: PF does not exist. */
16385 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_PF_NOT_PRESENT 0xfe
16386 /* enum: PF does exist but is not assigned to any external port. */
16387 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_PF_NOT_ASSIGNED 0xfd
16388 /* enum: This value indicates that PF is assigned, but it cannot be expressed
16389  * in this field. It is intended for a possible future situation where a more
16390  * complex scheme of PFs to ports mapping is being used. The future driver
16391  * should look for a new field supporting the new scheme. The current/old
16392  * driver should treat this value as PF_NOT_ASSIGNED.
16393  */
16394 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_INCOMPATIBLE_ASSIGNMENT 0xfc
16395 /* One byte per PF containing the number of its VFs, indexed by PF number. A
16396  * special value indicates that a PF is not present.
16397  */
16398 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_NUM_VFS_PER_PF_OFST 42
16399 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_NUM_VFS_PER_PF_LEN 1
16400 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_NUM_VFS_PER_PF_NUM 16
16401 /* enum: The caller is not permitted to access information on this PF. */
16402 /*               MC_CMD_GET_CAPABILITIES_V4_OUT_ACCESS_NOT_PERMITTED 0xff */
16403 /* enum: PF does not exist. */
16404 /*               MC_CMD_GET_CAPABILITIES_V4_OUT_PF_NOT_PRESENT 0xfe */
16405 /* Number of VIs available for each external port */
16406 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_NUM_VIS_PER_PORT_OFST 58
16407 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_NUM_VIS_PER_PORT_LEN 2
16408 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_NUM_VIS_PER_PORT_NUM 4
16409 /* Size of RX descriptor cache expressed as binary logarithm The actual size
16410  * equals (2 ^ RX_DESC_CACHE_SIZE)
16411  */
16412 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RX_DESC_CACHE_SIZE_OFST 66
16413 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_RX_DESC_CACHE_SIZE_LEN 1
16414 /* Size of TX descriptor cache expressed as binary logarithm The actual size
16415  * equals (2 ^ TX_DESC_CACHE_SIZE)
16416  */
16417 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TX_DESC_CACHE_SIZE_OFST 67
16418 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_TX_DESC_CACHE_SIZE_LEN 1
16419 /* Total number of available PIO buffers */
16420 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_NUM_PIO_BUFFS_OFST 68
16421 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_NUM_PIO_BUFFS_LEN 2
16422 /* Size of a single PIO buffer */
16423 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_SIZE_PIO_BUFF_OFST 70
16424 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_SIZE_PIO_BUFF_LEN 2
16425 /* On chips later than Medford the amount of address space assigned to each VI
16426  * is configurable. This is a global setting that the driver must query to
16427  * discover the VI to address mapping. Cut-through PIO (CTPIO) is not available
16428  * with 8k VI windows.
16429  */
16430 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_VI_WINDOW_MODE_OFST 72
16431 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_VI_WINDOW_MODE_LEN 1
16432 /* enum: Each VI occupies 8k as on Huntington and Medford. PIO is at offset 4k.
16433  * CTPIO is not mapped.
16434  */
16435 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_VI_WINDOW_MODE_8K 0x0
16436 /* enum: Each VI occupies 16k. PIO is at offset 4k. CTPIO is at offset 12k. */
16437 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_VI_WINDOW_MODE_16K 0x1
16438 /* enum: Each VI occupies 64k. PIO is at offset 4k. CTPIO is at offset 12k. */
16439 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_VI_WINDOW_MODE_64K 0x2
16440 /* Number of vFIFOs per adapter that can be used for VFIFO Stuffing
16441  * (SF-115995-SW) in the present configuration of firmware and port mode.
16442  */
16443 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_VFIFO_STUFFING_NUM_VFIFOS_OFST 73
16444 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_VFIFO_STUFFING_NUM_VFIFOS_LEN 1
16445 /* Number of buffers per adapter that can be used for VFIFO Stuffing
16446  * (SF-115995-SW) in the present configuration of firmware and port mode.
16447  */
16448 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_VFIFO_STUFFING_NUM_CP_BUFFERS_OFST 74
16449 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_VFIFO_STUFFING_NUM_CP_BUFFERS_LEN 2
16450 /* Entry count in the MAC stats array, including the final GENERATION_END
16451  * entry. For MAC stats DMA, drivers should allocate a buffer large enough to
16452  * hold at least this many 64-bit stats values, if they wish to receive all
16453  * available stats. If the buffer is shorter than MAC_STATS_NUM_STATS * 8, the
16454  * stats array returned will be truncated.
16455  */
16456 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_MAC_STATS_NUM_STATS_OFST 76
16457 #define	MC_CMD_GET_CAPABILITIES_V4_OUT_MAC_STATS_NUM_STATS_LEN 2
16458 
16459 /* MC_CMD_GET_CAPABILITIES_V5_OUT msgresponse */
16460 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_LEN 84
16461 /* First word of flags. */
16462 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_FLAGS1_OFST 0
16463 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_FLAGS1_LEN 4
16464 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_VPORT_RECONFIGURE_OFST 0
16465 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_VPORT_RECONFIGURE_LBN 3
16466 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_VPORT_RECONFIGURE_WIDTH 1
16467 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TX_STRIPING_OFST 0
16468 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TX_STRIPING_LBN 4
16469 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TX_STRIPING_WIDTH 1
16470 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_VADAPTOR_QUERY_OFST 0
16471 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_VADAPTOR_QUERY_LBN 5
16472 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_VADAPTOR_QUERY_WIDTH 1
16473 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_EVB_PORT_VLAN_RESTRICT_OFST 0
16474 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_EVB_PORT_VLAN_RESTRICT_LBN 6
16475 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_EVB_PORT_VLAN_RESTRICT_WIDTH 1
16476 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_DRV_ATTACH_PREBOOT_OFST 0
16477 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_DRV_ATTACH_PREBOOT_LBN 7
16478 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_DRV_ATTACH_PREBOOT_WIDTH 1
16479 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RX_FORCE_EVENT_MERGING_OFST 0
16480 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RX_FORCE_EVENT_MERGING_LBN 8
16481 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RX_FORCE_EVENT_MERGING_WIDTH 1
16482 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_SET_MAC_ENHANCED_OFST 0
16483 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_SET_MAC_ENHANCED_LBN 9
16484 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_SET_MAC_ENHANCED_WIDTH 1
16485 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_UNKNOWN_UCAST_DST_FILTER_ALWAYS_MULTI_RECIPIENT_OFST 0
16486 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_UNKNOWN_UCAST_DST_FILTER_ALWAYS_MULTI_RECIPIENT_LBN 10
16487 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_UNKNOWN_UCAST_DST_FILTER_ALWAYS_MULTI_RECIPIENT_WIDTH 1
16488 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_VADAPTOR_PERMIT_SET_MAC_WHEN_FILTERS_INSTALLED_OFST 0
16489 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_VADAPTOR_PERMIT_SET_MAC_WHEN_FILTERS_INSTALLED_LBN 11
16490 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_VADAPTOR_PERMIT_SET_MAC_WHEN_FILTERS_INSTALLED_WIDTH 1
16491 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TX_MAC_SECURITY_FILTERING_OFST 0
16492 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TX_MAC_SECURITY_FILTERING_LBN 12
16493 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TX_MAC_SECURITY_FILTERING_WIDTH 1
16494 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_ADDITIONAL_RSS_MODES_OFST 0
16495 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_ADDITIONAL_RSS_MODES_LBN 13
16496 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_ADDITIONAL_RSS_MODES_WIDTH 1
16497 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_QBB_OFST 0
16498 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_QBB_LBN 14
16499 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_QBB_WIDTH 1
16500 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RX_PACKED_STREAM_VAR_BUFFERS_OFST 0
16501 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RX_PACKED_STREAM_VAR_BUFFERS_LBN 15
16502 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RX_PACKED_STREAM_VAR_BUFFERS_WIDTH 1
16503 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RX_RSS_LIMITED_OFST 0
16504 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RX_RSS_LIMITED_LBN 16
16505 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RX_RSS_LIMITED_WIDTH 1
16506 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RX_PACKED_STREAM_OFST 0
16507 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RX_PACKED_STREAM_LBN 17
16508 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RX_PACKED_STREAM_WIDTH 1
16509 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RX_INCLUDE_FCS_OFST 0
16510 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RX_INCLUDE_FCS_LBN 18
16511 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RX_INCLUDE_FCS_WIDTH 1
16512 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TX_VLAN_INSERTION_OFST 0
16513 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TX_VLAN_INSERTION_LBN 19
16514 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TX_VLAN_INSERTION_WIDTH 1
16515 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RX_VLAN_STRIPPING_OFST 0
16516 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RX_VLAN_STRIPPING_LBN 20
16517 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RX_VLAN_STRIPPING_WIDTH 1
16518 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TX_TSO_OFST 0
16519 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TX_TSO_LBN 21
16520 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TX_TSO_WIDTH 1
16521 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RX_PREFIX_LEN_0_OFST 0
16522 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RX_PREFIX_LEN_0_LBN 22
16523 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RX_PREFIX_LEN_0_WIDTH 1
16524 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RX_PREFIX_LEN_14_OFST 0
16525 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RX_PREFIX_LEN_14_LBN 23
16526 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RX_PREFIX_LEN_14_WIDTH 1
16527 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RX_TIMESTAMP_OFST 0
16528 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RX_TIMESTAMP_LBN 24
16529 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RX_TIMESTAMP_WIDTH 1
16530 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RX_BATCHING_OFST 0
16531 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RX_BATCHING_LBN 25
16532 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RX_BATCHING_WIDTH 1
16533 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_MCAST_FILTER_CHAINING_OFST 0
16534 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_MCAST_FILTER_CHAINING_LBN 26
16535 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_MCAST_FILTER_CHAINING_WIDTH 1
16536 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_PM_AND_RXDP_COUNTERS_OFST 0
16537 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_PM_AND_RXDP_COUNTERS_LBN 27
16538 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_PM_AND_RXDP_COUNTERS_WIDTH 1
16539 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RX_DISABLE_SCATTER_OFST 0
16540 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RX_DISABLE_SCATTER_LBN 28
16541 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RX_DISABLE_SCATTER_WIDTH 1
16542 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TX_MCAST_UDP_LOOPBACK_OFST 0
16543 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TX_MCAST_UDP_LOOPBACK_LBN 29
16544 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TX_MCAST_UDP_LOOPBACK_WIDTH 1
16545 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_EVB_OFST 0
16546 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_EVB_LBN 30
16547 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_EVB_WIDTH 1
16548 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_VXLAN_NVGRE_OFST 0
16549 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_VXLAN_NVGRE_LBN 31
16550 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_VXLAN_NVGRE_WIDTH 1
16551 /* RxDPCPU firmware id. */
16552 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RX_DPCPU_FW_ID_OFST 4
16553 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RX_DPCPU_FW_ID_LEN 2
16554 /* enum: Standard RXDP firmware */
16555 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RXDP 0x0
16556 /* enum: Low latency RXDP firmware */
16557 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RXDP_LOW_LATENCY 0x1
16558 /* enum: Packed stream RXDP firmware */
16559 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RXDP_PACKED_STREAM 0x2
16560 /* enum: Rules engine RXDP firmware */
16561 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RXDP_RULES_ENGINE 0x5
16562 /* enum: DPDK RXDP firmware */
16563 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RXDP_DPDK 0x6
16564 /* enum: BIST RXDP firmware */
16565 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RXDP_BIST 0x10a
16566 /* enum: RXDP Test firmware image 1 */
16567 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RXDP_TEST_FW_TO_MC_CUT_THROUGH 0x101
16568 /* enum: RXDP Test firmware image 2 */
16569 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RXDP_TEST_FW_TO_MC_STORE_FORWARD 0x102
16570 /* enum: RXDP Test firmware image 3 */
16571 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RXDP_TEST_FW_TO_MC_STORE_FORWARD_FIRST 0x103
16572 /* enum: RXDP Test firmware image 4 */
16573 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RXDP_TEST_EVERY_EVENT_BATCHABLE 0x104
16574 /* enum: RXDP Test firmware image 5 */
16575 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RXDP_TEST_BACKPRESSURE 0x105
16576 /* enum: RXDP Test firmware image 6 */
16577 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RXDP_TEST_FW_PACKET_EDITS 0x106
16578 /* enum: RXDP Test firmware image 7 */
16579 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RXDP_TEST_FW_RX_HDR_SPLIT 0x107
16580 /* enum: RXDP Test firmware image 8 */
16581 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RXDP_TEST_FW_DISABLE_DL 0x108
16582 /* enum: RXDP Test firmware image 9 */
16583 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RXDP_TEST_FW_DOORBELL_DELAY 0x10b
16584 /* enum: RXDP Test firmware image 10 */
16585 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RXDP_TEST_FW_SLOW 0x10c
16586 /* TxDPCPU firmware id. */
16587 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TX_DPCPU_FW_ID_OFST 6
16588 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TX_DPCPU_FW_ID_LEN 2
16589 /* enum: Standard TXDP firmware */
16590 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TXDP 0x0
16591 /* enum: Low latency TXDP firmware */
16592 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TXDP_LOW_LATENCY 0x1
16593 /* enum: High packet rate TXDP firmware */
16594 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TXDP_HIGH_PACKET_RATE 0x3
16595 /* enum: Rules engine TXDP firmware */
16596 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TXDP_RULES_ENGINE 0x5
16597 /* enum: DPDK TXDP firmware */
16598 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TXDP_DPDK 0x6
16599 /* enum: BIST TXDP firmware */
16600 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TXDP_BIST 0x12d
16601 /* enum: TXDP Test firmware image 1 */
16602 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TXDP_TEST_FW_TSO_EDIT 0x101
16603 /* enum: TXDP Test firmware image 2 */
16604 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TXDP_TEST_FW_PACKET_EDITS 0x102
16605 /* enum: TXDP CSR bus test firmware */
16606 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TXDP_TEST_FW_CSR 0x103
16607 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RXPD_FW_VERSION_OFST 8
16608 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RXPD_FW_VERSION_LEN 2
16609 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RXPD_FW_VERSION_REV_OFST 8
16610 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RXPD_FW_VERSION_REV_LBN 0
16611 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RXPD_FW_VERSION_REV_WIDTH 12
16612 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RXPD_FW_VERSION_TYPE_OFST 8
16613 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RXPD_FW_VERSION_TYPE_LBN 12
16614 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RXPD_FW_VERSION_TYPE_WIDTH 4
16615 /* enum: reserved value - do not use (may indicate alternative interpretation
16616  * of REV field in future)
16617  */
16618 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RXPD_FW_TYPE_RESERVED 0x0
16619 /* enum: Trivial RX PD firmware for early Huntington development (Huntington
16620  * development only)
16621  */
16622 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RXPD_FW_TYPE_FIRST_PKT 0x1
16623 /* enum: RX PD firmware for telemetry prototyping (Medford2 development only)
16624  */
16625 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RXPD_FW_TYPE_TESTFW_TELEMETRY 0x1
16626 /* enum: RX PD firmware with approximately Siena-compatible behaviour
16627  * (Huntington development only)
16628  */
16629 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RXPD_FW_TYPE_SIENA_COMPAT 0x2
16630 /* enum: Full featured RX PD production firmware */
16631 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RXPD_FW_TYPE_FULL_FEATURED 0x3
16632 /* enum: (deprecated original name for the FULL_FEATURED variant) */
16633 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RXPD_FW_TYPE_VSWITCH 0x3
16634 /* enum: siena_compat variant RX PD firmware using PM rather than MAC
16635  * (Huntington development only)
16636  */
16637 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RXPD_FW_TYPE_SIENA_COMPAT_PM 0x4
16638 /* enum: Low latency RX PD production firmware */
16639 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RXPD_FW_TYPE_LOW_LATENCY 0x5
16640 /* enum: Packed stream RX PD production firmware */
16641 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RXPD_FW_TYPE_PACKED_STREAM 0x6
16642 /* enum: RX PD firmware handling layer 2 only for high packet rate performance
16643  * tests (Medford development only)
16644  */
16645 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RXPD_FW_TYPE_LAYER2_PERF 0x7
16646 /* enum: Rules engine RX PD production firmware */
16647 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RXPD_FW_TYPE_RULES_ENGINE 0x8
16648 /* enum: Custom firmware variant (see SF-119495-PD and bug69716) */
16649 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RXPD_FW_TYPE_L3XUDP 0x9
16650 /* enum: DPDK RX PD production firmware */
16651 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RXPD_FW_TYPE_DPDK 0xa
16652 /* enum: RX PD firmware for GUE parsing prototype (Medford development only) */
16653 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RXPD_FW_TYPE_TESTFW_GUE_PROTOTYPE 0xe
16654 /* enum: RX PD firmware parsing but not filtering network overlay tunnel
16655  * encapsulations (Medford development only)
16656  */
16657 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RXPD_FW_TYPE_TESTFW_ENCAP_PARSING_ONLY 0xf
16658 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TXPD_FW_VERSION_OFST 10
16659 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TXPD_FW_VERSION_LEN 2
16660 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TXPD_FW_VERSION_REV_OFST 10
16661 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TXPD_FW_VERSION_REV_LBN 0
16662 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TXPD_FW_VERSION_REV_WIDTH 12
16663 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TXPD_FW_VERSION_TYPE_OFST 10
16664 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TXPD_FW_VERSION_TYPE_LBN 12
16665 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TXPD_FW_VERSION_TYPE_WIDTH 4
16666 /* enum: reserved value - do not use (may indicate alternative interpretation
16667  * of REV field in future)
16668  */
16669 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TXPD_FW_TYPE_RESERVED 0x0
16670 /* enum: Trivial TX PD firmware for early Huntington development (Huntington
16671  * development only)
16672  */
16673 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TXPD_FW_TYPE_FIRST_PKT 0x1
16674 /* enum: TX PD firmware for telemetry prototyping (Medford2 development only)
16675  */
16676 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TXPD_FW_TYPE_TESTFW_TELEMETRY 0x1
16677 /* enum: TX PD firmware with approximately Siena-compatible behaviour
16678  * (Huntington development only)
16679  */
16680 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TXPD_FW_TYPE_SIENA_COMPAT 0x2
16681 /* enum: Full featured TX PD production firmware */
16682 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TXPD_FW_TYPE_FULL_FEATURED 0x3
16683 /* enum: (deprecated original name for the FULL_FEATURED variant) */
16684 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TXPD_FW_TYPE_VSWITCH 0x3
16685 /* enum: siena_compat variant TX PD firmware using PM rather than MAC
16686  * (Huntington development only)
16687  */
16688 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TXPD_FW_TYPE_SIENA_COMPAT_PM 0x4
16689 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TXPD_FW_TYPE_LOW_LATENCY 0x5 /* enum */
16690 /* enum: TX PD firmware handling layer 2 only for high packet rate performance
16691  * tests (Medford development only)
16692  */
16693 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TXPD_FW_TYPE_LAYER2_PERF 0x7
16694 /* enum: Rules engine TX PD production firmware */
16695 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TXPD_FW_TYPE_RULES_ENGINE 0x8
16696 /* enum: Custom firmware variant (see SF-119495-PD and bug69716) */
16697 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TXPD_FW_TYPE_L3XUDP 0x9
16698 /* enum: DPDK TX PD production firmware */
16699 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TXPD_FW_TYPE_DPDK 0xa
16700 /* enum: RX PD firmware for GUE parsing prototype (Medford development only) */
16701 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TXPD_FW_TYPE_TESTFW_GUE_PROTOTYPE 0xe
16702 /* Hardware capabilities of NIC */
16703 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_HW_CAPABILITIES_OFST 12
16704 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_HW_CAPABILITIES_LEN 4
16705 /* Licensed capabilities */
16706 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_LICENSE_CAPABILITIES_OFST 16
16707 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_LICENSE_CAPABILITIES_LEN 4
16708 /* Second word of flags. Not present on older firmware (check the length). */
16709 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_FLAGS2_OFST 20
16710 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_FLAGS2_LEN 4
16711 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TX_TSO_V2_OFST 20
16712 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TX_TSO_V2_LBN 0
16713 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TX_TSO_V2_WIDTH 1
16714 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TX_TSO_V2_ENCAP_OFST 20
16715 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TX_TSO_V2_ENCAP_LBN 1
16716 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TX_TSO_V2_ENCAP_WIDTH 1
16717 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_EVQ_TIMER_CTRL_OFST 20
16718 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_EVQ_TIMER_CTRL_LBN 2
16719 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_EVQ_TIMER_CTRL_WIDTH 1
16720 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_EVENT_CUT_THROUGH_OFST 20
16721 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_EVENT_CUT_THROUGH_LBN 3
16722 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_EVENT_CUT_THROUGH_WIDTH 1
16723 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RX_CUT_THROUGH_OFST 20
16724 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RX_CUT_THROUGH_LBN 4
16725 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RX_CUT_THROUGH_WIDTH 1
16726 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TX_VFIFO_ULL_MODE_OFST 20
16727 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TX_VFIFO_ULL_MODE_LBN 5
16728 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TX_VFIFO_ULL_MODE_WIDTH 1
16729 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_MAC_STATS_40G_TX_SIZE_BINS_OFST 20
16730 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_MAC_STATS_40G_TX_SIZE_BINS_LBN 6
16731 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_MAC_STATS_40G_TX_SIZE_BINS_WIDTH 1
16732 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_INIT_EVQ_TYPE_SUPPORTED_OFST 20
16733 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_INIT_EVQ_TYPE_SUPPORTED_LBN 7
16734 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_INIT_EVQ_TYPE_SUPPORTED_WIDTH 1
16735 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_INIT_EVQ_V2_OFST 20
16736 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_INIT_EVQ_V2_LBN 7
16737 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_INIT_EVQ_V2_WIDTH 1
16738 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TX_MAC_TIMESTAMPING_OFST 20
16739 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TX_MAC_TIMESTAMPING_LBN 8
16740 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TX_MAC_TIMESTAMPING_WIDTH 1
16741 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TX_TIMESTAMP_OFST 20
16742 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TX_TIMESTAMP_LBN 9
16743 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TX_TIMESTAMP_WIDTH 1
16744 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RX_SNIFF_OFST 20
16745 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RX_SNIFF_LBN 10
16746 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RX_SNIFF_WIDTH 1
16747 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TX_SNIFF_OFST 20
16748 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TX_SNIFF_LBN 11
16749 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TX_SNIFF_WIDTH 1
16750 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_NVRAM_UPDATE_REPORT_VERIFY_RESULT_OFST 20
16751 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_NVRAM_UPDATE_REPORT_VERIFY_RESULT_LBN 12
16752 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_NVRAM_UPDATE_REPORT_VERIFY_RESULT_WIDTH 1
16753 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_MCDI_BACKGROUND_OFST 20
16754 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_MCDI_BACKGROUND_LBN 13
16755 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_MCDI_BACKGROUND_WIDTH 1
16756 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_MCDI_DB_RETURN_OFST 20
16757 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_MCDI_DB_RETURN_LBN 14
16758 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_MCDI_DB_RETURN_WIDTH 1
16759 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_CTPIO_OFST 20
16760 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_CTPIO_LBN 15
16761 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_CTPIO_WIDTH 1
16762 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TSA_SUPPORT_OFST 20
16763 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TSA_SUPPORT_LBN 16
16764 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TSA_SUPPORT_WIDTH 1
16765 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TSA_BOUND_OFST 20
16766 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TSA_BOUND_LBN 17
16767 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TSA_BOUND_WIDTH 1
16768 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_SF_ADAPTER_AUTHENTICATION_OFST 20
16769 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_SF_ADAPTER_AUTHENTICATION_LBN 18
16770 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_SF_ADAPTER_AUTHENTICATION_WIDTH 1
16771 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_FILTER_ACTION_FLAG_OFST 20
16772 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_FILTER_ACTION_FLAG_LBN 19
16773 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_FILTER_ACTION_FLAG_WIDTH 1
16774 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_FILTER_ACTION_MARK_OFST 20
16775 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_FILTER_ACTION_MARK_LBN 20
16776 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_FILTER_ACTION_MARK_WIDTH 1
16777 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_EQUAL_STRIDE_SUPER_BUFFER_OFST 20
16778 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_EQUAL_STRIDE_SUPER_BUFFER_LBN 21
16779 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_EQUAL_STRIDE_SUPER_BUFFER_WIDTH 1
16780 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_EQUAL_STRIDE_PACKED_STREAM_OFST 20
16781 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_EQUAL_STRIDE_PACKED_STREAM_LBN 21
16782 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_EQUAL_STRIDE_PACKED_STREAM_WIDTH 1
16783 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_L3XUDP_SUPPORT_OFST 20
16784 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_L3XUDP_SUPPORT_LBN 22
16785 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_L3XUDP_SUPPORT_WIDTH 1
16786 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_FW_SUBVARIANT_NO_TX_CSUM_OFST 20
16787 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_FW_SUBVARIANT_NO_TX_CSUM_LBN 23
16788 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_FW_SUBVARIANT_NO_TX_CSUM_WIDTH 1
16789 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_VI_SPREADING_OFST 20
16790 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_VI_SPREADING_LBN 24
16791 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_VI_SPREADING_WIDTH 1
16792 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RXDP_HLB_IDLE_OFST 20
16793 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RXDP_HLB_IDLE_LBN 25
16794 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RXDP_HLB_IDLE_WIDTH 1
16795 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_INIT_RXQ_NO_CONT_EV_OFST 20
16796 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_INIT_RXQ_NO_CONT_EV_LBN 26
16797 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_INIT_RXQ_NO_CONT_EV_WIDTH 1
16798 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_INIT_RXQ_WITH_BUFFER_SIZE_OFST 20
16799 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_INIT_RXQ_WITH_BUFFER_SIZE_LBN 27
16800 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_INIT_RXQ_WITH_BUFFER_SIZE_WIDTH 1
16801 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_BUNDLE_UPDATE_OFST 20
16802 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_BUNDLE_UPDATE_LBN 28
16803 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_BUNDLE_UPDATE_WIDTH 1
16804 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TX_TSO_V3_OFST 20
16805 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TX_TSO_V3_LBN 29
16806 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TX_TSO_V3_WIDTH 1
16807 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_DYNAMIC_SENSORS_OFST 20
16808 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_DYNAMIC_SENSORS_LBN 30
16809 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_DYNAMIC_SENSORS_WIDTH 1
16810 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_NVRAM_UPDATE_POLL_VERIFY_RESULT_OFST 20
16811 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_NVRAM_UPDATE_POLL_VERIFY_RESULT_LBN 31
16812 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_NVRAM_UPDATE_POLL_VERIFY_RESULT_WIDTH 1
16813 /* Number of FATSOv2 contexts per datapath supported by this NIC (when
16814  * TX_TSO_V2 == 1). Not present on older firmware (check the length).
16815  */
16816 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TX_TSO_V2_N_CONTEXTS_OFST 24
16817 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TX_TSO_V2_N_CONTEXTS_LEN 2
16818 /* One byte per PF containing the number of the external port assigned to this
16819  * PF, indexed by PF number. Special values indicate that a PF is either not
16820  * present or not assigned.
16821  */
16822 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_PFS_TO_PORTS_ASSIGNMENT_OFST 26
16823 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_PFS_TO_PORTS_ASSIGNMENT_LEN 1
16824 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_PFS_TO_PORTS_ASSIGNMENT_NUM 16
16825 /* enum: The caller is not permitted to access information on this PF. */
16826 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_ACCESS_NOT_PERMITTED 0xff
16827 /* enum: PF does not exist. */
16828 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_PF_NOT_PRESENT 0xfe
16829 /* enum: PF does exist but is not assigned to any external port. */
16830 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_PF_NOT_ASSIGNED 0xfd
16831 /* enum: This value indicates that PF is assigned, but it cannot be expressed
16832  * in this field. It is intended for a possible future situation where a more
16833  * complex scheme of PFs to ports mapping is being used. The future driver
16834  * should look for a new field supporting the new scheme. The current/old
16835  * driver should treat this value as PF_NOT_ASSIGNED.
16836  */
16837 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_INCOMPATIBLE_ASSIGNMENT 0xfc
16838 /* One byte per PF containing the number of its VFs, indexed by PF number. A
16839  * special value indicates that a PF is not present.
16840  */
16841 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_NUM_VFS_PER_PF_OFST 42
16842 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_NUM_VFS_PER_PF_LEN 1
16843 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_NUM_VFS_PER_PF_NUM 16
16844 /* enum: The caller is not permitted to access information on this PF. */
16845 /*               MC_CMD_GET_CAPABILITIES_V5_OUT_ACCESS_NOT_PERMITTED 0xff */
16846 /* enum: PF does not exist. */
16847 /*               MC_CMD_GET_CAPABILITIES_V5_OUT_PF_NOT_PRESENT 0xfe */
16848 /* Number of VIs available for each external port */
16849 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_NUM_VIS_PER_PORT_OFST 58
16850 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_NUM_VIS_PER_PORT_LEN 2
16851 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_NUM_VIS_PER_PORT_NUM 4
16852 /* Size of RX descriptor cache expressed as binary logarithm The actual size
16853  * equals (2 ^ RX_DESC_CACHE_SIZE)
16854  */
16855 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RX_DESC_CACHE_SIZE_OFST 66
16856 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_RX_DESC_CACHE_SIZE_LEN 1
16857 /* Size of TX descriptor cache expressed as binary logarithm The actual size
16858  * equals (2 ^ TX_DESC_CACHE_SIZE)
16859  */
16860 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TX_DESC_CACHE_SIZE_OFST 67
16861 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_TX_DESC_CACHE_SIZE_LEN 1
16862 /* Total number of available PIO buffers */
16863 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_NUM_PIO_BUFFS_OFST 68
16864 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_NUM_PIO_BUFFS_LEN 2
16865 /* Size of a single PIO buffer */
16866 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_SIZE_PIO_BUFF_OFST 70
16867 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_SIZE_PIO_BUFF_LEN 2
16868 /* On chips later than Medford the amount of address space assigned to each VI
16869  * is configurable. This is a global setting that the driver must query to
16870  * discover the VI to address mapping. Cut-through PIO (CTPIO) is not available
16871  * with 8k VI windows.
16872  */
16873 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_VI_WINDOW_MODE_OFST 72
16874 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_VI_WINDOW_MODE_LEN 1
16875 /* enum: Each VI occupies 8k as on Huntington and Medford. PIO is at offset 4k.
16876  * CTPIO is not mapped.
16877  */
16878 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_VI_WINDOW_MODE_8K 0x0
16879 /* enum: Each VI occupies 16k. PIO is at offset 4k. CTPIO is at offset 12k. */
16880 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_VI_WINDOW_MODE_16K 0x1
16881 /* enum: Each VI occupies 64k. PIO is at offset 4k. CTPIO is at offset 12k. */
16882 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_VI_WINDOW_MODE_64K 0x2
16883 /* Number of vFIFOs per adapter that can be used for VFIFO Stuffing
16884  * (SF-115995-SW) in the present configuration of firmware and port mode.
16885  */
16886 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_VFIFO_STUFFING_NUM_VFIFOS_OFST 73
16887 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_VFIFO_STUFFING_NUM_VFIFOS_LEN 1
16888 /* Number of buffers per adapter that can be used for VFIFO Stuffing
16889  * (SF-115995-SW) in the present configuration of firmware and port mode.
16890  */
16891 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_VFIFO_STUFFING_NUM_CP_BUFFERS_OFST 74
16892 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_VFIFO_STUFFING_NUM_CP_BUFFERS_LEN 2
16893 /* Entry count in the MAC stats array, including the final GENERATION_END
16894  * entry. For MAC stats DMA, drivers should allocate a buffer large enough to
16895  * hold at least this many 64-bit stats values, if they wish to receive all
16896  * available stats. If the buffer is shorter than MAC_STATS_NUM_STATS * 8, the
16897  * stats array returned will be truncated.
16898  */
16899 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_MAC_STATS_NUM_STATS_OFST 76
16900 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_MAC_STATS_NUM_STATS_LEN 2
16901 /* Maximum supported value for MC_CMD_FILTER_OP_V3/MATCH_MARK_VALUE. This field
16902  * will only be non-zero if MC_CMD_GET_CAPABILITIES/FILTER_ACTION_MARK is set.
16903  */
16904 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_FILTER_ACTION_MARK_MAX_OFST 80
16905 #define	MC_CMD_GET_CAPABILITIES_V5_OUT_FILTER_ACTION_MARK_MAX_LEN 4
16906 
16907 /* MC_CMD_GET_CAPABILITIES_V6_OUT msgresponse */
16908 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_LEN 148
16909 /* First word of flags. */
16910 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_FLAGS1_OFST 0
16911 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_FLAGS1_LEN 4
16912 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_VPORT_RECONFIGURE_OFST 0
16913 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_VPORT_RECONFIGURE_LBN 3
16914 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_VPORT_RECONFIGURE_WIDTH 1
16915 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TX_STRIPING_OFST 0
16916 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TX_STRIPING_LBN 4
16917 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TX_STRIPING_WIDTH 1
16918 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_VADAPTOR_QUERY_OFST 0
16919 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_VADAPTOR_QUERY_LBN 5
16920 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_VADAPTOR_QUERY_WIDTH 1
16921 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_EVB_PORT_VLAN_RESTRICT_OFST 0
16922 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_EVB_PORT_VLAN_RESTRICT_LBN 6
16923 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_EVB_PORT_VLAN_RESTRICT_WIDTH 1
16924 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_DRV_ATTACH_PREBOOT_OFST 0
16925 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_DRV_ATTACH_PREBOOT_LBN 7
16926 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_DRV_ATTACH_PREBOOT_WIDTH 1
16927 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RX_FORCE_EVENT_MERGING_OFST 0
16928 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RX_FORCE_EVENT_MERGING_LBN 8
16929 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RX_FORCE_EVENT_MERGING_WIDTH 1
16930 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_SET_MAC_ENHANCED_OFST 0
16931 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_SET_MAC_ENHANCED_LBN 9
16932 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_SET_MAC_ENHANCED_WIDTH 1
16933 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_UNKNOWN_UCAST_DST_FILTER_ALWAYS_MULTI_RECIPIENT_OFST 0
16934 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_UNKNOWN_UCAST_DST_FILTER_ALWAYS_MULTI_RECIPIENT_LBN 10
16935 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_UNKNOWN_UCAST_DST_FILTER_ALWAYS_MULTI_RECIPIENT_WIDTH 1
16936 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_VADAPTOR_PERMIT_SET_MAC_WHEN_FILTERS_INSTALLED_OFST 0
16937 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_VADAPTOR_PERMIT_SET_MAC_WHEN_FILTERS_INSTALLED_LBN 11
16938 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_VADAPTOR_PERMIT_SET_MAC_WHEN_FILTERS_INSTALLED_WIDTH 1
16939 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TX_MAC_SECURITY_FILTERING_OFST 0
16940 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TX_MAC_SECURITY_FILTERING_LBN 12
16941 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TX_MAC_SECURITY_FILTERING_WIDTH 1
16942 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_ADDITIONAL_RSS_MODES_OFST 0
16943 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_ADDITIONAL_RSS_MODES_LBN 13
16944 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_ADDITIONAL_RSS_MODES_WIDTH 1
16945 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_QBB_OFST 0
16946 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_QBB_LBN 14
16947 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_QBB_WIDTH 1
16948 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RX_PACKED_STREAM_VAR_BUFFERS_OFST 0
16949 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RX_PACKED_STREAM_VAR_BUFFERS_LBN 15
16950 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RX_PACKED_STREAM_VAR_BUFFERS_WIDTH 1
16951 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RX_RSS_LIMITED_OFST 0
16952 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RX_RSS_LIMITED_LBN 16
16953 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RX_RSS_LIMITED_WIDTH 1
16954 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RX_PACKED_STREAM_OFST 0
16955 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RX_PACKED_STREAM_LBN 17
16956 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RX_PACKED_STREAM_WIDTH 1
16957 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RX_INCLUDE_FCS_OFST 0
16958 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RX_INCLUDE_FCS_LBN 18
16959 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RX_INCLUDE_FCS_WIDTH 1
16960 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TX_VLAN_INSERTION_OFST 0
16961 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TX_VLAN_INSERTION_LBN 19
16962 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TX_VLAN_INSERTION_WIDTH 1
16963 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RX_VLAN_STRIPPING_OFST 0
16964 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RX_VLAN_STRIPPING_LBN 20
16965 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RX_VLAN_STRIPPING_WIDTH 1
16966 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TX_TSO_OFST 0
16967 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TX_TSO_LBN 21
16968 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TX_TSO_WIDTH 1
16969 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RX_PREFIX_LEN_0_OFST 0
16970 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RX_PREFIX_LEN_0_LBN 22
16971 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RX_PREFIX_LEN_0_WIDTH 1
16972 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RX_PREFIX_LEN_14_OFST 0
16973 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RX_PREFIX_LEN_14_LBN 23
16974 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RX_PREFIX_LEN_14_WIDTH 1
16975 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RX_TIMESTAMP_OFST 0
16976 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RX_TIMESTAMP_LBN 24
16977 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RX_TIMESTAMP_WIDTH 1
16978 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RX_BATCHING_OFST 0
16979 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RX_BATCHING_LBN 25
16980 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RX_BATCHING_WIDTH 1
16981 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_MCAST_FILTER_CHAINING_OFST 0
16982 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_MCAST_FILTER_CHAINING_LBN 26
16983 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_MCAST_FILTER_CHAINING_WIDTH 1
16984 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_PM_AND_RXDP_COUNTERS_OFST 0
16985 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_PM_AND_RXDP_COUNTERS_LBN 27
16986 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_PM_AND_RXDP_COUNTERS_WIDTH 1
16987 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RX_DISABLE_SCATTER_OFST 0
16988 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RX_DISABLE_SCATTER_LBN 28
16989 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RX_DISABLE_SCATTER_WIDTH 1
16990 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TX_MCAST_UDP_LOOPBACK_OFST 0
16991 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TX_MCAST_UDP_LOOPBACK_LBN 29
16992 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TX_MCAST_UDP_LOOPBACK_WIDTH 1
16993 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_EVB_OFST 0
16994 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_EVB_LBN 30
16995 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_EVB_WIDTH 1
16996 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_VXLAN_NVGRE_OFST 0
16997 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_VXLAN_NVGRE_LBN 31
16998 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_VXLAN_NVGRE_WIDTH 1
16999 /* RxDPCPU firmware id. */
17000 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RX_DPCPU_FW_ID_OFST 4
17001 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RX_DPCPU_FW_ID_LEN 2
17002 /* enum: Standard RXDP firmware */
17003 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RXDP 0x0
17004 /* enum: Low latency RXDP firmware */
17005 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RXDP_LOW_LATENCY 0x1
17006 /* enum: Packed stream RXDP firmware */
17007 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RXDP_PACKED_STREAM 0x2
17008 /* enum: Rules engine RXDP firmware */
17009 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RXDP_RULES_ENGINE 0x5
17010 /* enum: DPDK RXDP firmware */
17011 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RXDP_DPDK 0x6
17012 /* enum: BIST RXDP firmware */
17013 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RXDP_BIST 0x10a
17014 /* enum: RXDP Test firmware image 1 */
17015 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RXDP_TEST_FW_TO_MC_CUT_THROUGH 0x101
17016 /* enum: RXDP Test firmware image 2 */
17017 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RXDP_TEST_FW_TO_MC_STORE_FORWARD 0x102
17018 /* enum: RXDP Test firmware image 3 */
17019 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RXDP_TEST_FW_TO_MC_STORE_FORWARD_FIRST 0x103
17020 /* enum: RXDP Test firmware image 4 */
17021 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RXDP_TEST_EVERY_EVENT_BATCHABLE 0x104
17022 /* enum: RXDP Test firmware image 5 */
17023 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RXDP_TEST_BACKPRESSURE 0x105
17024 /* enum: RXDP Test firmware image 6 */
17025 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RXDP_TEST_FW_PACKET_EDITS 0x106
17026 /* enum: RXDP Test firmware image 7 */
17027 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RXDP_TEST_FW_RX_HDR_SPLIT 0x107
17028 /* enum: RXDP Test firmware image 8 */
17029 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RXDP_TEST_FW_DISABLE_DL 0x108
17030 /* enum: RXDP Test firmware image 9 */
17031 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RXDP_TEST_FW_DOORBELL_DELAY 0x10b
17032 /* enum: RXDP Test firmware image 10 */
17033 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RXDP_TEST_FW_SLOW 0x10c
17034 /* TxDPCPU firmware id. */
17035 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TX_DPCPU_FW_ID_OFST 6
17036 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TX_DPCPU_FW_ID_LEN 2
17037 /* enum: Standard TXDP firmware */
17038 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TXDP 0x0
17039 /* enum: Low latency TXDP firmware */
17040 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TXDP_LOW_LATENCY 0x1
17041 /* enum: High packet rate TXDP firmware */
17042 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TXDP_HIGH_PACKET_RATE 0x3
17043 /* enum: Rules engine TXDP firmware */
17044 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TXDP_RULES_ENGINE 0x5
17045 /* enum: DPDK TXDP firmware */
17046 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TXDP_DPDK 0x6
17047 /* enum: BIST TXDP firmware */
17048 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TXDP_BIST 0x12d
17049 /* enum: TXDP Test firmware image 1 */
17050 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TXDP_TEST_FW_TSO_EDIT 0x101
17051 /* enum: TXDP Test firmware image 2 */
17052 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TXDP_TEST_FW_PACKET_EDITS 0x102
17053 /* enum: TXDP CSR bus test firmware */
17054 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TXDP_TEST_FW_CSR 0x103
17055 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RXPD_FW_VERSION_OFST 8
17056 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RXPD_FW_VERSION_LEN 2
17057 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RXPD_FW_VERSION_REV_OFST 8
17058 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RXPD_FW_VERSION_REV_LBN 0
17059 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RXPD_FW_VERSION_REV_WIDTH 12
17060 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RXPD_FW_VERSION_TYPE_OFST 8
17061 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RXPD_FW_VERSION_TYPE_LBN 12
17062 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RXPD_FW_VERSION_TYPE_WIDTH 4
17063 /* enum: reserved value - do not use (may indicate alternative interpretation
17064  * of REV field in future)
17065  */
17066 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RXPD_FW_TYPE_RESERVED 0x0
17067 /* enum: Trivial RX PD firmware for early Huntington development (Huntington
17068  * development only)
17069  */
17070 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RXPD_FW_TYPE_FIRST_PKT 0x1
17071 /* enum: RX PD firmware for telemetry prototyping (Medford2 development only)
17072  */
17073 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RXPD_FW_TYPE_TESTFW_TELEMETRY 0x1
17074 /* enum: RX PD firmware with approximately Siena-compatible behaviour
17075  * (Huntington development only)
17076  */
17077 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RXPD_FW_TYPE_SIENA_COMPAT 0x2
17078 /* enum: Full featured RX PD production firmware */
17079 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RXPD_FW_TYPE_FULL_FEATURED 0x3
17080 /* enum: (deprecated original name for the FULL_FEATURED variant) */
17081 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RXPD_FW_TYPE_VSWITCH 0x3
17082 /* enum: siena_compat variant RX PD firmware using PM rather than MAC
17083  * (Huntington development only)
17084  */
17085 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RXPD_FW_TYPE_SIENA_COMPAT_PM 0x4
17086 /* enum: Low latency RX PD production firmware */
17087 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RXPD_FW_TYPE_LOW_LATENCY 0x5
17088 /* enum: Packed stream RX PD production firmware */
17089 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RXPD_FW_TYPE_PACKED_STREAM 0x6
17090 /* enum: RX PD firmware handling layer 2 only for high packet rate performance
17091  * tests (Medford development only)
17092  */
17093 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RXPD_FW_TYPE_LAYER2_PERF 0x7
17094 /* enum: Rules engine RX PD production firmware */
17095 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RXPD_FW_TYPE_RULES_ENGINE 0x8
17096 /* enum: Custom firmware variant (see SF-119495-PD and bug69716) */
17097 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RXPD_FW_TYPE_L3XUDP 0x9
17098 /* enum: DPDK RX PD production firmware */
17099 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RXPD_FW_TYPE_DPDK 0xa
17100 /* enum: RX PD firmware for GUE parsing prototype (Medford development only) */
17101 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RXPD_FW_TYPE_TESTFW_GUE_PROTOTYPE 0xe
17102 /* enum: RX PD firmware parsing but not filtering network overlay tunnel
17103  * encapsulations (Medford development only)
17104  */
17105 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RXPD_FW_TYPE_TESTFW_ENCAP_PARSING_ONLY 0xf
17106 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TXPD_FW_VERSION_OFST 10
17107 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TXPD_FW_VERSION_LEN 2
17108 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TXPD_FW_VERSION_REV_OFST 10
17109 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TXPD_FW_VERSION_REV_LBN 0
17110 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TXPD_FW_VERSION_REV_WIDTH 12
17111 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TXPD_FW_VERSION_TYPE_OFST 10
17112 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TXPD_FW_VERSION_TYPE_LBN 12
17113 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TXPD_FW_VERSION_TYPE_WIDTH 4
17114 /* enum: reserved value - do not use (may indicate alternative interpretation
17115  * of REV field in future)
17116  */
17117 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TXPD_FW_TYPE_RESERVED 0x0
17118 /* enum: Trivial TX PD firmware for early Huntington development (Huntington
17119  * development only)
17120  */
17121 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TXPD_FW_TYPE_FIRST_PKT 0x1
17122 /* enum: TX PD firmware for telemetry prototyping (Medford2 development only)
17123  */
17124 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TXPD_FW_TYPE_TESTFW_TELEMETRY 0x1
17125 /* enum: TX PD firmware with approximately Siena-compatible behaviour
17126  * (Huntington development only)
17127  */
17128 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TXPD_FW_TYPE_SIENA_COMPAT 0x2
17129 /* enum: Full featured TX PD production firmware */
17130 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TXPD_FW_TYPE_FULL_FEATURED 0x3
17131 /* enum: (deprecated original name for the FULL_FEATURED variant) */
17132 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TXPD_FW_TYPE_VSWITCH 0x3
17133 /* enum: siena_compat variant TX PD firmware using PM rather than MAC
17134  * (Huntington development only)
17135  */
17136 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TXPD_FW_TYPE_SIENA_COMPAT_PM 0x4
17137 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TXPD_FW_TYPE_LOW_LATENCY 0x5 /* enum */
17138 /* enum: TX PD firmware handling layer 2 only for high packet rate performance
17139  * tests (Medford development only)
17140  */
17141 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TXPD_FW_TYPE_LAYER2_PERF 0x7
17142 /* enum: Rules engine TX PD production firmware */
17143 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TXPD_FW_TYPE_RULES_ENGINE 0x8
17144 /* enum: Custom firmware variant (see SF-119495-PD and bug69716) */
17145 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TXPD_FW_TYPE_L3XUDP 0x9
17146 /* enum: DPDK TX PD production firmware */
17147 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TXPD_FW_TYPE_DPDK 0xa
17148 /* enum: RX PD firmware for GUE parsing prototype (Medford development only) */
17149 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TXPD_FW_TYPE_TESTFW_GUE_PROTOTYPE 0xe
17150 /* Hardware capabilities of NIC */
17151 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_HW_CAPABILITIES_OFST 12
17152 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_HW_CAPABILITIES_LEN 4
17153 /* Licensed capabilities */
17154 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_LICENSE_CAPABILITIES_OFST 16
17155 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_LICENSE_CAPABILITIES_LEN 4
17156 /* Second word of flags. Not present on older firmware (check the length). */
17157 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_FLAGS2_OFST 20
17158 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_FLAGS2_LEN 4
17159 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TX_TSO_V2_OFST 20
17160 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TX_TSO_V2_LBN 0
17161 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TX_TSO_V2_WIDTH 1
17162 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TX_TSO_V2_ENCAP_OFST 20
17163 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TX_TSO_V2_ENCAP_LBN 1
17164 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TX_TSO_V2_ENCAP_WIDTH 1
17165 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_EVQ_TIMER_CTRL_OFST 20
17166 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_EVQ_TIMER_CTRL_LBN 2
17167 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_EVQ_TIMER_CTRL_WIDTH 1
17168 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_EVENT_CUT_THROUGH_OFST 20
17169 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_EVENT_CUT_THROUGH_LBN 3
17170 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_EVENT_CUT_THROUGH_WIDTH 1
17171 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RX_CUT_THROUGH_OFST 20
17172 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RX_CUT_THROUGH_LBN 4
17173 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RX_CUT_THROUGH_WIDTH 1
17174 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TX_VFIFO_ULL_MODE_OFST 20
17175 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TX_VFIFO_ULL_MODE_LBN 5
17176 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TX_VFIFO_ULL_MODE_WIDTH 1
17177 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_MAC_STATS_40G_TX_SIZE_BINS_OFST 20
17178 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_MAC_STATS_40G_TX_SIZE_BINS_LBN 6
17179 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_MAC_STATS_40G_TX_SIZE_BINS_WIDTH 1
17180 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_INIT_EVQ_TYPE_SUPPORTED_OFST 20
17181 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_INIT_EVQ_TYPE_SUPPORTED_LBN 7
17182 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_INIT_EVQ_TYPE_SUPPORTED_WIDTH 1
17183 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_INIT_EVQ_V2_OFST 20
17184 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_INIT_EVQ_V2_LBN 7
17185 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_INIT_EVQ_V2_WIDTH 1
17186 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TX_MAC_TIMESTAMPING_OFST 20
17187 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TX_MAC_TIMESTAMPING_LBN 8
17188 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TX_MAC_TIMESTAMPING_WIDTH 1
17189 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TX_TIMESTAMP_OFST 20
17190 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TX_TIMESTAMP_LBN 9
17191 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TX_TIMESTAMP_WIDTH 1
17192 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RX_SNIFF_OFST 20
17193 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RX_SNIFF_LBN 10
17194 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RX_SNIFF_WIDTH 1
17195 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TX_SNIFF_OFST 20
17196 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TX_SNIFF_LBN 11
17197 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TX_SNIFF_WIDTH 1
17198 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_NVRAM_UPDATE_REPORT_VERIFY_RESULT_OFST 20
17199 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_NVRAM_UPDATE_REPORT_VERIFY_RESULT_LBN 12
17200 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_NVRAM_UPDATE_REPORT_VERIFY_RESULT_WIDTH 1
17201 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_MCDI_BACKGROUND_OFST 20
17202 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_MCDI_BACKGROUND_LBN 13
17203 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_MCDI_BACKGROUND_WIDTH 1
17204 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_MCDI_DB_RETURN_OFST 20
17205 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_MCDI_DB_RETURN_LBN 14
17206 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_MCDI_DB_RETURN_WIDTH 1
17207 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_CTPIO_OFST 20
17208 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_CTPIO_LBN 15
17209 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_CTPIO_WIDTH 1
17210 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TSA_SUPPORT_OFST 20
17211 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TSA_SUPPORT_LBN 16
17212 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TSA_SUPPORT_WIDTH 1
17213 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TSA_BOUND_OFST 20
17214 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TSA_BOUND_LBN 17
17215 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TSA_BOUND_WIDTH 1
17216 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_SF_ADAPTER_AUTHENTICATION_OFST 20
17217 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_SF_ADAPTER_AUTHENTICATION_LBN 18
17218 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_SF_ADAPTER_AUTHENTICATION_WIDTH 1
17219 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_FILTER_ACTION_FLAG_OFST 20
17220 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_FILTER_ACTION_FLAG_LBN 19
17221 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_FILTER_ACTION_FLAG_WIDTH 1
17222 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_FILTER_ACTION_MARK_OFST 20
17223 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_FILTER_ACTION_MARK_LBN 20
17224 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_FILTER_ACTION_MARK_WIDTH 1
17225 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_EQUAL_STRIDE_SUPER_BUFFER_OFST 20
17226 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_EQUAL_STRIDE_SUPER_BUFFER_LBN 21
17227 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_EQUAL_STRIDE_SUPER_BUFFER_WIDTH 1
17228 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_EQUAL_STRIDE_PACKED_STREAM_OFST 20
17229 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_EQUAL_STRIDE_PACKED_STREAM_LBN 21
17230 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_EQUAL_STRIDE_PACKED_STREAM_WIDTH 1
17231 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_L3XUDP_SUPPORT_OFST 20
17232 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_L3XUDP_SUPPORT_LBN 22
17233 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_L3XUDP_SUPPORT_WIDTH 1
17234 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_FW_SUBVARIANT_NO_TX_CSUM_OFST 20
17235 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_FW_SUBVARIANT_NO_TX_CSUM_LBN 23
17236 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_FW_SUBVARIANT_NO_TX_CSUM_WIDTH 1
17237 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_VI_SPREADING_OFST 20
17238 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_VI_SPREADING_LBN 24
17239 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_VI_SPREADING_WIDTH 1
17240 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RXDP_HLB_IDLE_OFST 20
17241 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RXDP_HLB_IDLE_LBN 25
17242 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RXDP_HLB_IDLE_WIDTH 1
17243 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_INIT_RXQ_NO_CONT_EV_OFST 20
17244 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_INIT_RXQ_NO_CONT_EV_LBN 26
17245 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_INIT_RXQ_NO_CONT_EV_WIDTH 1
17246 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_INIT_RXQ_WITH_BUFFER_SIZE_OFST 20
17247 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_INIT_RXQ_WITH_BUFFER_SIZE_LBN 27
17248 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_INIT_RXQ_WITH_BUFFER_SIZE_WIDTH 1
17249 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_BUNDLE_UPDATE_OFST 20
17250 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_BUNDLE_UPDATE_LBN 28
17251 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_BUNDLE_UPDATE_WIDTH 1
17252 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TX_TSO_V3_OFST 20
17253 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TX_TSO_V3_LBN 29
17254 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TX_TSO_V3_WIDTH 1
17255 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_DYNAMIC_SENSORS_OFST 20
17256 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_DYNAMIC_SENSORS_LBN 30
17257 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_DYNAMIC_SENSORS_WIDTH 1
17258 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_NVRAM_UPDATE_POLL_VERIFY_RESULT_OFST 20
17259 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_NVRAM_UPDATE_POLL_VERIFY_RESULT_LBN 31
17260 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_NVRAM_UPDATE_POLL_VERIFY_RESULT_WIDTH 1
17261 /* Number of FATSOv2 contexts per datapath supported by this NIC (when
17262  * TX_TSO_V2 == 1). Not present on older firmware (check the length).
17263  */
17264 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TX_TSO_V2_N_CONTEXTS_OFST 24
17265 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TX_TSO_V2_N_CONTEXTS_LEN 2
17266 /* One byte per PF containing the number of the external port assigned to this
17267  * PF, indexed by PF number. Special values indicate that a PF is either not
17268  * present or not assigned.
17269  */
17270 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_PFS_TO_PORTS_ASSIGNMENT_OFST 26
17271 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_PFS_TO_PORTS_ASSIGNMENT_LEN 1
17272 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_PFS_TO_PORTS_ASSIGNMENT_NUM 16
17273 /* enum: The caller is not permitted to access information on this PF. */
17274 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_ACCESS_NOT_PERMITTED 0xff
17275 /* enum: PF does not exist. */
17276 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_PF_NOT_PRESENT 0xfe
17277 /* enum: PF does exist but is not assigned to any external port. */
17278 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_PF_NOT_ASSIGNED 0xfd
17279 /* enum: This value indicates that PF is assigned, but it cannot be expressed
17280  * in this field. It is intended for a possible future situation where a more
17281  * complex scheme of PFs to ports mapping is being used. The future driver
17282  * should look for a new field supporting the new scheme. The current/old
17283  * driver should treat this value as PF_NOT_ASSIGNED.
17284  */
17285 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_INCOMPATIBLE_ASSIGNMENT 0xfc
17286 /* One byte per PF containing the number of its VFs, indexed by PF number. A
17287  * special value indicates that a PF is not present.
17288  */
17289 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_NUM_VFS_PER_PF_OFST 42
17290 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_NUM_VFS_PER_PF_LEN 1
17291 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_NUM_VFS_PER_PF_NUM 16
17292 /* enum: The caller is not permitted to access information on this PF. */
17293 /*               MC_CMD_GET_CAPABILITIES_V6_OUT_ACCESS_NOT_PERMITTED 0xff */
17294 /* enum: PF does not exist. */
17295 /*               MC_CMD_GET_CAPABILITIES_V6_OUT_PF_NOT_PRESENT 0xfe */
17296 /* Number of VIs available for each external port */
17297 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_NUM_VIS_PER_PORT_OFST 58
17298 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_NUM_VIS_PER_PORT_LEN 2
17299 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_NUM_VIS_PER_PORT_NUM 4
17300 /* Size of RX descriptor cache expressed as binary logarithm The actual size
17301  * equals (2 ^ RX_DESC_CACHE_SIZE)
17302  */
17303 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RX_DESC_CACHE_SIZE_OFST 66
17304 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_RX_DESC_CACHE_SIZE_LEN 1
17305 /* Size of TX descriptor cache expressed as binary logarithm The actual size
17306  * equals (2 ^ TX_DESC_CACHE_SIZE)
17307  */
17308 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TX_DESC_CACHE_SIZE_OFST 67
17309 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_TX_DESC_CACHE_SIZE_LEN 1
17310 /* Total number of available PIO buffers */
17311 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_NUM_PIO_BUFFS_OFST 68
17312 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_NUM_PIO_BUFFS_LEN 2
17313 /* Size of a single PIO buffer */
17314 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_SIZE_PIO_BUFF_OFST 70
17315 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_SIZE_PIO_BUFF_LEN 2
17316 /* On chips later than Medford the amount of address space assigned to each VI
17317  * is configurable. This is a global setting that the driver must query to
17318  * discover the VI to address mapping. Cut-through PIO (CTPIO) is not available
17319  * with 8k VI windows.
17320  */
17321 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_VI_WINDOW_MODE_OFST 72
17322 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_VI_WINDOW_MODE_LEN 1
17323 /* enum: Each VI occupies 8k as on Huntington and Medford. PIO is at offset 4k.
17324  * CTPIO is not mapped.
17325  */
17326 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_VI_WINDOW_MODE_8K 0x0
17327 /* enum: Each VI occupies 16k. PIO is at offset 4k. CTPIO is at offset 12k. */
17328 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_VI_WINDOW_MODE_16K 0x1
17329 /* enum: Each VI occupies 64k. PIO is at offset 4k. CTPIO is at offset 12k. */
17330 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_VI_WINDOW_MODE_64K 0x2
17331 /* Number of vFIFOs per adapter that can be used for VFIFO Stuffing
17332  * (SF-115995-SW) in the present configuration of firmware and port mode.
17333  */
17334 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_VFIFO_STUFFING_NUM_VFIFOS_OFST 73
17335 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_VFIFO_STUFFING_NUM_VFIFOS_LEN 1
17336 /* Number of buffers per adapter that can be used for VFIFO Stuffing
17337  * (SF-115995-SW) in the present configuration of firmware and port mode.
17338  */
17339 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_VFIFO_STUFFING_NUM_CP_BUFFERS_OFST 74
17340 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_VFIFO_STUFFING_NUM_CP_BUFFERS_LEN 2
17341 /* Entry count in the MAC stats array, including the final GENERATION_END
17342  * entry. For MAC stats DMA, drivers should allocate a buffer large enough to
17343  * hold at least this many 64-bit stats values, if they wish to receive all
17344  * available stats. If the buffer is shorter than MAC_STATS_NUM_STATS * 8, the
17345  * stats array returned will be truncated.
17346  */
17347 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_MAC_STATS_NUM_STATS_OFST 76
17348 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_MAC_STATS_NUM_STATS_LEN 2
17349 /* Maximum supported value for MC_CMD_FILTER_OP_V3/MATCH_MARK_VALUE. This field
17350  * will only be non-zero if MC_CMD_GET_CAPABILITIES/FILTER_ACTION_MARK is set.
17351  */
17352 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_FILTER_ACTION_MARK_MAX_OFST 80
17353 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_FILTER_ACTION_MARK_MAX_LEN 4
17354 /* On devices where the INIT_RXQ_WITH_BUFFER_SIZE flag (in
17355  * GET_CAPABILITIES_OUT_V2) is set, drivers have to specify a buffer size when
17356  * they create an RX queue. Due to hardware limitations, only a small number of
17357  * different buffer sizes may be available concurrently. Nonzero entries in
17358  * this array are the sizes of buffers which the system guarantees will be
17359  * available for use. If the list is empty, there are no limitations on
17360  * concurrent buffer sizes.
17361  */
17362 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_GUARANTEED_RX_BUFFER_SIZES_OFST 84
17363 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_GUARANTEED_RX_BUFFER_SIZES_LEN 4
17364 #define	MC_CMD_GET_CAPABILITIES_V6_OUT_GUARANTEED_RX_BUFFER_SIZES_NUM 16
17365 
17366 /* MC_CMD_GET_CAPABILITIES_V7_OUT msgresponse */
17367 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_LEN 152
17368 /* First word of flags. */
17369 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_FLAGS1_OFST 0
17370 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_FLAGS1_LEN 4
17371 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_VPORT_RECONFIGURE_OFST 0
17372 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_VPORT_RECONFIGURE_LBN 3
17373 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_VPORT_RECONFIGURE_WIDTH 1
17374 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TX_STRIPING_OFST 0
17375 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TX_STRIPING_LBN 4
17376 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TX_STRIPING_WIDTH 1
17377 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_VADAPTOR_QUERY_OFST 0
17378 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_VADAPTOR_QUERY_LBN 5
17379 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_VADAPTOR_QUERY_WIDTH 1
17380 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_EVB_PORT_VLAN_RESTRICT_OFST 0
17381 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_EVB_PORT_VLAN_RESTRICT_LBN 6
17382 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_EVB_PORT_VLAN_RESTRICT_WIDTH 1
17383 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_DRV_ATTACH_PREBOOT_OFST 0
17384 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_DRV_ATTACH_PREBOOT_LBN 7
17385 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_DRV_ATTACH_PREBOOT_WIDTH 1
17386 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RX_FORCE_EVENT_MERGING_OFST 0
17387 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RX_FORCE_EVENT_MERGING_LBN 8
17388 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RX_FORCE_EVENT_MERGING_WIDTH 1
17389 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_SET_MAC_ENHANCED_OFST 0
17390 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_SET_MAC_ENHANCED_LBN 9
17391 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_SET_MAC_ENHANCED_WIDTH 1
17392 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_UNKNOWN_UCAST_DST_FILTER_ALWAYS_MULTI_RECIPIENT_OFST 0
17393 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_UNKNOWN_UCAST_DST_FILTER_ALWAYS_MULTI_RECIPIENT_LBN 10
17394 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_UNKNOWN_UCAST_DST_FILTER_ALWAYS_MULTI_RECIPIENT_WIDTH 1
17395 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_VADAPTOR_PERMIT_SET_MAC_WHEN_FILTERS_INSTALLED_OFST 0
17396 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_VADAPTOR_PERMIT_SET_MAC_WHEN_FILTERS_INSTALLED_LBN 11
17397 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_VADAPTOR_PERMIT_SET_MAC_WHEN_FILTERS_INSTALLED_WIDTH 1
17398 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TX_MAC_SECURITY_FILTERING_OFST 0
17399 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TX_MAC_SECURITY_FILTERING_LBN 12
17400 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TX_MAC_SECURITY_FILTERING_WIDTH 1
17401 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_ADDITIONAL_RSS_MODES_OFST 0
17402 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_ADDITIONAL_RSS_MODES_LBN 13
17403 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_ADDITIONAL_RSS_MODES_WIDTH 1
17404 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_QBB_OFST 0
17405 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_QBB_LBN 14
17406 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_QBB_WIDTH 1
17407 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RX_PACKED_STREAM_VAR_BUFFERS_OFST 0
17408 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RX_PACKED_STREAM_VAR_BUFFERS_LBN 15
17409 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RX_PACKED_STREAM_VAR_BUFFERS_WIDTH 1
17410 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RX_RSS_LIMITED_OFST 0
17411 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RX_RSS_LIMITED_LBN 16
17412 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RX_RSS_LIMITED_WIDTH 1
17413 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RX_PACKED_STREAM_OFST 0
17414 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RX_PACKED_STREAM_LBN 17
17415 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RX_PACKED_STREAM_WIDTH 1
17416 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RX_INCLUDE_FCS_OFST 0
17417 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RX_INCLUDE_FCS_LBN 18
17418 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RX_INCLUDE_FCS_WIDTH 1
17419 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TX_VLAN_INSERTION_OFST 0
17420 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TX_VLAN_INSERTION_LBN 19
17421 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TX_VLAN_INSERTION_WIDTH 1
17422 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RX_VLAN_STRIPPING_OFST 0
17423 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RX_VLAN_STRIPPING_LBN 20
17424 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RX_VLAN_STRIPPING_WIDTH 1
17425 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TX_TSO_OFST 0
17426 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TX_TSO_LBN 21
17427 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TX_TSO_WIDTH 1
17428 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RX_PREFIX_LEN_0_OFST 0
17429 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RX_PREFIX_LEN_0_LBN 22
17430 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RX_PREFIX_LEN_0_WIDTH 1
17431 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RX_PREFIX_LEN_14_OFST 0
17432 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RX_PREFIX_LEN_14_LBN 23
17433 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RX_PREFIX_LEN_14_WIDTH 1
17434 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RX_TIMESTAMP_OFST 0
17435 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RX_TIMESTAMP_LBN 24
17436 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RX_TIMESTAMP_WIDTH 1
17437 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RX_BATCHING_OFST 0
17438 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RX_BATCHING_LBN 25
17439 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RX_BATCHING_WIDTH 1
17440 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_MCAST_FILTER_CHAINING_OFST 0
17441 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_MCAST_FILTER_CHAINING_LBN 26
17442 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_MCAST_FILTER_CHAINING_WIDTH 1
17443 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_PM_AND_RXDP_COUNTERS_OFST 0
17444 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_PM_AND_RXDP_COUNTERS_LBN 27
17445 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_PM_AND_RXDP_COUNTERS_WIDTH 1
17446 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RX_DISABLE_SCATTER_OFST 0
17447 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RX_DISABLE_SCATTER_LBN 28
17448 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RX_DISABLE_SCATTER_WIDTH 1
17449 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TX_MCAST_UDP_LOOPBACK_OFST 0
17450 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TX_MCAST_UDP_LOOPBACK_LBN 29
17451 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TX_MCAST_UDP_LOOPBACK_WIDTH 1
17452 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_EVB_OFST 0
17453 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_EVB_LBN 30
17454 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_EVB_WIDTH 1
17455 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_VXLAN_NVGRE_OFST 0
17456 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_VXLAN_NVGRE_LBN 31
17457 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_VXLAN_NVGRE_WIDTH 1
17458 /* RxDPCPU firmware id. */
17459 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RX_DPCPU_FW_ID_OFST 4
17460 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RX_DPCPU_FW_ID_LEN 2
17461 /* enum: Standard RXDP firmware */
17462 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RXDP 0x0
17463 /* enum: Low latency RXDP firmware */
17464 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RXDP_LOW_LATENCY 0x1
17465 /* enum: Packed stream RXDP firmware */
17466 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RXDP_PACKED_STREAM 0x2
17467 /* enum: Rules engine RXDP firmware */
17468 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RXDP_RULES_ENGINE 0x5
17469 /* enum: DPDK RXDP firmware */
17470 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RXDP_DPDK 0x6
17471 /* enum: BIST RXDP firmware */
17472 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RXDP_BIST 0x10a
17473 /* enum: RXDP Test firmware image 1 */
17474 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RXDP_TEST_FW_TO_MC_CUT_THROUGH 0x101
17475 /* enum: RXDP Test firmware image 2 */
17476 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RXDP_TEST_FW_TO_MC_STORE_FORWARD 0x102
17477 /* enum: RXDP Test firmware image 3 */
17478 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RXDP_TEST_FW_TO_MC_STORE_FORWARD_FIRST 0x103
17479 /* enum: RXDP Test firmware image 4 */
17480 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RXDP_TEST_EVERY_EVENT_BATCHABLE 0x104
17481 /* enum: RXDP Test firmware image 5 */
17482 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RXDP_TEST_BACKPRESSURE 0x105
17483 /* enum: RXDP Test firmware image 6 */
17484 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RXDP_TEST_FW_PACKET_EDITS 0x106
17485 /* enum: RXDP Test firmware image 7 */
17486 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RXDP_TEST_FW_RX_HDR_SPLIT 0x107
17487 /* enum: RXDP Test firmware image 8 */
17488 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RXDP_TEST_FW_DISABLE_DL 0x108
17489 /* enum: RXDP Test firmware image 9 */
17490 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RXDP_TEST_FW_DOORBELL_DELAY 0x10b
17491 /* enum: RXDP Test firmware image 10 */
17492 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RXDP_TEST_FW_SLOW 0x10c
17493 /* TxDPCPU firmware id. */
17494 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TX_DPCPU_FW_ID_OFST 6
17495 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TX_DPCPU_FW_ID_LEN 2
17496 /* enum: Standard TXDP firmware */
17497 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TXDP 0x0
17498 /* enum: Low latency TXDP firmware */
17499 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TXDP_LOW_LATENCY 0x1
17500 /* enum: High packet rate TXDP firmware */
17501 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TXDP_HIGH_PACKET_RATE 0x3
17502 /* enum: Rules engine TXDP firmware */
17503 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TXDP_RULES_ENGINE 0x5
17504 /* enum: DPDK TXDP firmware */
17505 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TXDP_DPDK 0x6
17506 /* enum: BIST TXDP firmware */
17507 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TXDP_BIST 0x12d
17508 /* enum: TXDP Test firmware image 1 */
17509 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TXDP_TEST_FW_TSO_EDIT 0x101
17510 /* enum: TXDP Test firmware image 2 */
17511 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TXDP_TEST_FW_PACKET_EDITS 0x102
17512 /* enum: TXDP CSR bus test firmware */
17513 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TXDP_TEST_FW_CSR 0x103
17514 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RXPD_FW_VERSION_OFST 8
17515 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RXPD_FW_VERSION_LEN 2
17516 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RXPD_FW_VERSION_REV_OFST 8
17517 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RXPD_FW_VERSION_REV_LBN 0
17518 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RXPD_FW_VERSION_REV_WIDTH 12
17519 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RXPD_FW_VERSION_TYPE_OFST 8
17520 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RXPD_FW_VERSION_TYPE_LBN 12
17521 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RXPD_FW_VERSION_TYPE_WIDTH 4
17522 /* enum: reserved value - do not use (may indicate alternative interpretation
17523  * of REV field in future)
17524  */
17525 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RXPD_FW_TYPE_RESERVED 0x0
17526 /* enum: Trivial RX PD firmware for early Huntington development (Huntington
17527  * development only)
17528  */
17529 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RXPD_FW_TYPE_FIRST_PKT 0x1
17530 /* enum: RX PD firmware for telemetry prototyping (Medford2 development only)
17531  */
17532 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RXPD_FW_TYPE_TESTFW_TELEMETRY 0x1
17533 /* enum: RX PD firmware with approximately Siena-compatible behaviour
17534  * (Huntington development only)
17535  */
17536 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RXPD_FW_TYPE_SIENA_COMPAT 0x2
17537 /* enum: Full featured RX PD production firmware */
17538 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RXPD_FW_TYPE_FULL_FEATURED 0x3
17539 /* enum: (deprecated original name for the FULL_FEATURED variant) */
17540 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RXPD_FW_TYPE_VSWITCH 0x3
17541 /* enum: siena_compat variant RX PD firmware using PM rather than MAC
17542  * (Huntington development only)
17543  */
17544 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RXPD_FW_TYPE_SIENA_COMPAT_PM 0x4
17545 /* enum: Low latency RX PD production firmware */
17546 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RXPD_FW_TYPE_LOW_LATENCY 0x5
17547 /* enum: Packed stream RX PD production firmware */
17548 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RXPD_FW_TYPE_PACKED_STREAM 0x6
17549 /* enum: RX PD firmware handling layer 2 only for high packet rate performance
17550  * tests (Medford development only)
17551  */
17552 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RXPD_FW_TYPE_LAYER2_PERF 0x7
17553 /* enum: Rules engine RX PD production firmware */
17554 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RXPD_FW_TYPE_RULES_ENGINE 0x8
17555 /* enum: Custom firmware variant (see SF-119495-PD and bug69716) */
17556 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RXPD_FW_TYPE_L3XUDP 0x9
17557 /* enum: DPDK RX PD production firmware */
17558 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RXPD_FW_TYPE_DPDK 0xa
17559 /* enum: RX PD firmware for GUE parsing prototype (Medford development only) */
17560 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RXPD_FW_TYPE_TESTFW_GUE_PROTOTYPE 0xe
17561 /* enum: RX PD firmware parsing but not filtering network overlay tunnel
17562  * encapsulations (Medford development only)
17563  */
17564 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RXPD_FW_TYPE_TESTFW_ENCAP_PARSING_ONLY 0xf
17565 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TXPD_FW_VERSION_OFST 10
17566 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TXPD_FW_VERSION_LEN 2
17567 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TXPD_FW_VERSION_REV_OFST 10
17568 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TXPD_FW_VERSION_REV_LBN 0
17569 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TXPD_FW_VERSION_REV_WIDTH 12
17570 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TXPD_FW_VERSION_TYPE_OFST 10
17571 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TXPD_FW_VERSION_TYPE_LBN 12
17572 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TXPD_FW_VERSION_TYPE_WIDTH 4
17573 /* enum: reserved value - do not use (may indicate alternative interpretation
17574  * of REV field in future)
17575  */
17576 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TXPD_FW_TYPE_RESERVED 0x0
17577 /* enum: Trivial TX PD firmware for early Huntington development (Huntington
17578  * development only)
17579  */
17580 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TXPD_FW_TYPE_FIRST_PKT 0x1
17581 /* enum: TX PD firmware for telemetry prototyping (Medford2 development only)
17582  */
17583 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TXPD_FW_TYPE_TESTFW_TELEMETRY 0x1
17584 /* enum: TX PD firmware with approximately Siena-compatible behaviour
17585  * (Huntington development only)
17586  */
17587 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TXPD_FW_TYPE_SIENA_COMPAT 0x2
17588 /* enum: Full featured TX PD production firmware */
17589 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TXPD_FW_TYPE_FULL_FEATURED 0x3
17590 /* enum: (deprecated original name for the FULL_FEATURED variant) */
17591 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TXPD_FW_TYPE_VSWITCH 0x3
17592 /* enum: siena_compat variant TX PD firmware using PM rather than MAC
17593  * (Huntington development only)
17594  */
17595 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TXPD_FW_TYPE_SIENA_COMPAT_PM 0x4
17596 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TXPD_FW_TYPE_LOW_LATENCY 0x5 /* enum */
17597 /* enum: TX PD firmware handling layer 2 only for high packet rate performance
17598  * tests (Medford development only)
17599  */
17600 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TXPD_FW_TYPE_LAYER2_PERF 0x7
17601 /* enum: Rules engine TX PD production firmware */
17602 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TXPD_FW_TYPE_RULES_ENGINE 0x8
17603 /* enum: Custom firmware variant (see SF-119495-PD and bug69716) */
17604 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TXPD_FW_TYPE_L3XUDP 0x9
17605 /* enum: DPDK TX PD production firmware */
17606 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TXPD_FW_TYPE_DPDK 0xa
17607 /* enum: RX PD firmware for GUE parsing prototype (Medford development only) */
17608 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TXPD_FW_TYPE_TESTFW_GUE_PROTOTYPE 0xe
17609 /* Hardware capabilities of NIC */
17610 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_HW_CAPABILITIES_OFST 12
17611 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_HW_CAPABILITIES_LEN 4
17612 /* Licensed capabilities */
17613 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_LICENSE_CAPABILITIES_OFST 16
17614 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_LICENSE_CAPABILITIES_LEN 4
17615 /* Second word of flags. Not present on older firmware (check the length). */
17616 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_FLAGS2_OFST 20
17617 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_FLAGS2_LEN 4
17618 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TX_TSO_V2_OFST 20
17619 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TX_TSO_V2_LBN 0
17620 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TX_TSO_V2_WIDTH 1
17621 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TX_TSO_V2_ENCAP_OFST 20
17622 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TX_TSO_V2_ENCAP_LBN 1
17623 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TX_TSO_V2_ENCAP_WIDTH 1
17624 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_EVQ_TIMER_CTRL_OFST 20
17625 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_EVQ_TIMER_CTRL_LBN 2
17626 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_EVQ_TIMER_CTRL_WIDTH 1
17627 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_EVENT_CUT_THROUGH_OFST 20
17628 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_EVENT_CUT_THROUGH_LBN 3
17629 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_EVENT_CUT_THROUGH_WIDTH 1
17630 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RX_CUT_THROUGH_OFST 20
17631 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RX_CUT_THROUGH_LBN 4
17632 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RX_CUT_THROUGH_WIDTH 1
17633 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TX_VFIFO_ULL_MODE_OFST 20
17634 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TX_VFIFO_ULL_MODE_LBN 5
17635 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TX_VFIFO_ULL_MODE_WIDTH 1
17636 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_MAC_STATS_40G_TX_SIZE_BINS_OFST 20
17637 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_MAC_STATS_40G_TX_SIZE_BINS_LBN 6
17638 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_MAC_STATS_40G_TX_SIZE_BINS_WIDTH 1
17639 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_INIT_EVQ_TYPE_SUPPORTED_OFST 20
17640 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_INIT_EVQ_TYPE_SUPPORTED_LBN 7
17641 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_INIT_EVQ_TYPE_SUPPORTED_WIDTH 1
17642 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_INIT_EVQ_V2_OFST 20
17643 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_INIT_EVQ_V2_LBN 7
17644 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_INIT_EVQ_V2_WIDTH 1
17645 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TX_MAC_TIMESTAMPING_OFST 20
17646 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TX_MAC_TIMESTAMPING_LBN 8
17647 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TX_MAC_TIMESTAMPING_WIDTH 1
17648 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TX_TIMESTAMP_OFST 20
17649 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TX_TIMESTAMP_LBN 9
17650 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TX_TIMESTAMP_WIDTH 1
17651 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RX_SNIFF_OFST 20
17652 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RX_SNIFF_LBN 10
17653 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RX_SNIFF_WIDTH 1
17654 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TX_SNIFF_OFST 20
17655 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TX_SNIFF_LBN 11
17656 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TX_SNIFF_WIDTH 1
17657 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_NVRAM_UPDATE_REPORT_VERIFY_RESULT_OFST 20
17658 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_NVRAM_UPDATE_REPORT_VERIFY_RESULT_LBN 12
17659 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_NVRAM_UPDATE_REPORT_VERIFY_RESULT_WIDTH 1
17660 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_MCDI_BACKGROUND_OFST 20
17661 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_MCDI_BACKGROUND_LBN 13
17662 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_MCDI_BACKGROUND_WIDTH 1
17663 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_MCDI_DB_RETURN_OFST 20
17664 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_MCDI_DB_RETURN_LBN 14
17665 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_MCDI_DB_RETURN_WIDTH 1
17666 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_CTPIO_OFST 20
17667 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_CTPIO_LBN 15
17668 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_CTPIO_WIDTH 1
17669 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TSA_SUPPORT_OFST 20
17670 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TSA_SUPPORT_LBN 16
17671 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TSA_SUPPORT_WIDTH 1
17672 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TSA_BOUND_OFST 20
17673 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TSA_BOUND_LBN 17
17674 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TSA_BOUND_WIDTH 1
17675 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_SF_ADAPTER_AUTHENTICATION_OFST 20
17676 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_SF_ADAPTER_AUTHENTICATION_LBN 18
17677 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_SF_ADAPTER_AUTHENTICATION_WIDTH 1
17678 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_FILTER_ACTION_FLAG_OFST 20
17679 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_FILTER_ACTION_FLAG_LBN 19
17680 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_FILTER_ACTION_FLAG_WIDTH 1
17681 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_FILTER_ACTION_MARK_OFST 20
17682 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_FILTER_ACTION_MARK_LBN 20
17683 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_FILTER_ACTION_MARK_WIDTH 1
17684 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_EQUAL_STRIDE_SUPER_BUFFER_OFST 20
17685 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_EQUAL_STRIDE_SUPER_BUFFER_LBN 21
17686 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_EQUAL_STRIDE_SUPER_BUFFER_WIDTH 1
17687 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_EQUAL_STRIDE_PACKED_STREAM_OFST 20
17688 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_EQUAL_STRIDE_PACKED_STREAM_LBN 21
17689 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_EQUAL_STRIDE_PACKED_STREAM_WIDTH 1
17690 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_L3XUDP_SUPPORT_OFST 20
17691 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_L3XUDP_SUPPORT_LBN 22
17692 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_L3XUDP_SUPPORT_WIDTH 1
17693 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_FW_SUBVARIANT_NO_TX_CSUM_OFST 20
17694 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_FW_SUBVARIANT_NO_TX_CSUM_LBN 23
17695 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_FW_SUBVARIANT_NO_TX_CSUM_WIDTH 1
17696 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_VI_SPREADING_OFST 20
17697 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_VI_SPREADING_LBN 24
17698 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_VI_SPREADING_WIDTH 1
17699 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RXDP_HLB_IDLE_OFST 20
17700 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RXDP_HLB_IDLE_LBN 25
17701 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RXDP_HLB_IDLE_WIDTH 1
17702 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_INIT_RXQ_NO_CONT_EV_OFST 20
17703 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_INIT_RXQ_NO_CONT_EV_LBN 26
17704 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_INIT_RXQ_NO_CONT_EV_WIDTH 1
17705 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_INIT_RXQ_WITH_BUFFER_SIZE_OFST 20
17706 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_INIT_RXQ_WITH_BUFFER_SIZE_LBN 27
17707 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_INIT_RXQ_WITH_BUFFER_SIZE_WIDTH 1
17708 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_BUNDLE_UPDATE_OFST 20
17709 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_BUNDLE_UPDATE_LBN 28
17710 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_BUNDLE_UPDATE_WIDTH 1
17711 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TX_TSO_V3_OFST 20
17712 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TX_TSO_V3_LBN 29
17713 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TX_TSO_V3_WIDTH 1
17714 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_DYNAMIC_SENSORS_OFST 20
17715 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_DYNAMIC_SENSORS_LBN 30
17716 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_DYNAMIC_SENSORS_WIDTH 1
17717 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_NVRAM_UPDATE_POLL_VERIFY_RESULT_OFST 20
17718 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_NVRAM_UPDATE_POLL_VERIFY_RESULT_LBN 31
17719 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_NVRAM_UPDATE_POLL_VERIFY_RESULT_WIDTH 1
17720 /* Number of FATSOv2 contexts per datapath supported by this NIC (when
17721  * TX_TSO_V2 == 1). Not present on older firmware (check the length).
17722  */
17723 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TX_TSO_V2_N_CONTEXTS_OFST 24
17724 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TX_TSO_V2_N_CONTEXTS_LEN 2
17725 /* One byte per PF containing the number of the external port assigned to this
17726  * PF, indexed by PF number. Special values indicate that a PF is either not
17727  * present or not assigned.
17728  */
17729 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_PFS_TO_PORTS_ASSIGNMENT_OFST 26
17730 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_PFS_TO_PORTS_ASSIGNMENT_LEN 1
17731 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_PFS_TO_PORTS_ASSIGNMENT_NUM 16
17732 /* enum: The caller is not permitted to access information on this PF. */
17733 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_ACCESS_NOT_PERMITTED 0xff
17734 /* enum: PF does not exist. */
17735 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_PF_NOT_PRESENT 0xfe
17736 /* enum: PF does exist but is not assigned to any external port. */
17737 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_PF_NOT_ASSIGNED 0xfd
17738 /* enum: This value indicates that PF is assigned, but it cannot be expressed
17739  * in this field. It is intended for a possible future situation where a more
17740  * complex scheme of PFs to ports mapping is being used. The future driver
17741  * should look for a new field supporting the new scheme. The current/old
17742  * driver should treat this value as PF_NOT_ASSIGNED.
17743  */
17744 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_INCOMPATIBLE_ASSIGNMENT 0xfc
17745 /* One byte per PF containing the number of its VFs, indexed by PF number. A
17746  * special value indicates that a PF is not present.
17747  */
17748 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_NUM_VFS_PER_PF_OFST 42
17749 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_NUM_VFS_PER_PF_LEN 1
17750 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_NUM_VFS_PER_PF_NUM 16
17751 /* enum: The caller is not permitted to access information on this PF. */
17752 /*               MC_CMD_GET_CAPABILITIES_V7_OUT_ACCESS_NOT_PERMITTED 0xff */
17753 /* enum: PF does not exist. */
17754 /*               MC_CMD_GET_CAPABILITIES_V7_OUT_PF_NOT_PRESENT 0xfe */
17755 /* Number of VIs available for each external port */
17756 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_NUM_VIS_PER_PORT_OFST 58
17757 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_NUM_VIS_PER_PORT_LEN 2
17758 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_NUM_VIS_PER_PORT_NUM 4
17759 /* Size of RX descriptor cache expressed as binary logarithm The actual size
17760  * equals (2 ^ RX_DESC_CACHE_SIZE)
17761  */
17762 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RX_DESC_CACHE_SIZE_OFST 66
17763 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RX_DESC_CACHE_SIZE_LEN 1
17764 /* Size of TX descriptor cache expressed as binary logarithm The actual size
17765  * equals (2 ^ TX_DESC_CACHE_SIZE)
17766  */
17767 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TX_DESC_CACHE_SIZE_OFST 67
17768 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_TX_DESC_CACHE_SIZE_LEN 1
17769 /* Total number of available PIO buffers */
17770 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_NUM_PIO_BUFFS_OFST 68
17771 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_NUM_PIO_BUFFS_LEN 2
17772 /* Size of a single PIO buffer */
17773 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_SIZE_PIO_BUFF_OFST 70
17774 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_SIZE_PIO_BUFF_LEN 2
17775 /* On chips later than Medford the amount of address space assigned to each VI
17776  * is configurable. This is a global setting that the driver must query to
17777  * discover the VI to address mapping. Cut-through PIO (CTPIO) is not available
17778  * with 8k VI windows.
17779  */
17780 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_VI_WINDOW_MODE_OFST 72
17781 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_VI_WINDOW_MODE_LEN 1
17782 /* enum: Each VI occupies 8k as on Huntington and Medford. PIO is at offset 4k.
17783  * CTPIO is not mapped.
17784  */
17785 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_VI_WINDOW_MODE_8K 0x0
17786 /* enum: Each VI occupies 16k. PIO is at offset 4k. CTPIO is at offset 12k. */
17787 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_VI_WINDOW_MODE_16K 0x1
17788 /* enum: Each VI occupies 64k. PIO is at offset 4k. CTPIO is at offset 12k. */
17789 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_VI_WINDOW_MODE_64K 0x2
17790 /* Number of vFIFOs per adapter that can be used for VFIFO Stuffing
17791  * (SF-115995-SW) in the present configuration of firmware and port mode.
17792  */
17793 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_VFIFO_STUFFING_NUM_VFIFOS_OFST 73
17794 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_VFIFO_STUFFING_NUM_VFIFOS_LEN 1
17795 /* Number of buffers per adapter that can be used for VFIFO Stuffing
17796  * (SF-115995-SW) in the present configuration of firmware and port mode.
17797  */
17798 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_VFIFO_STUFFING_NUM_CP_BUFFERS_OFST 74
17799 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_VFIFO_STUFFING_NUM_CP_BUFFERS_LEN 2
17800 /* Entry count in the MAC stats array, including the final GENERATION_END
17801  * entry. For MAC stats DMA, drivers should allocate a buffer large enough to
17802  * hold at least this many 64-bit stats values, if they wish to receive all
17803  * available stats. If the buffer is shorter than MAC_STATS_NUM_STATS * 8, the
17804  * stats array returned will be truncated.
17805  */
17806 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_MAC_STATS_NUM_STATS_OFST 76
17807 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_MAC_STATS_NUM_STATS_LEN 2
17808 /* Maximum supported value for MC_CMD_FILTER_OP_V3/MATCH_MARK_VALUE. This field
17809  * will only be non-zero if MC_CMD_GET_CAPABILITIES/FILTER_ACTION_MARK is set.
17810  */
17811 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_FILTER_ACTION_MARK_MAX_OFST 80
17812 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_FILTER_ACTION_MARK_MAX_LEN 4
17813 /* On devices where the INIT_RXQ_WITH_BUFFER_SIZE flag (in
17814  * GET_CAPABILITIES_OUT_V2) is set, drivers have to specify a buffer size when
17815  * they create an RX queue. Due to hardware limitations, only a small number of
17816  * different buffer sizes may be available concurrently. Nonzero entries in
17817  * this array are the sizes of buffers which the system guarantees will be
17818  * available for use. If the list is empty, there are no limitations on
17819  * concurrent buffer sizes.
17820  */
17821 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_GUARANTEED_RX_BUFFER_SIZES_OFST 84
17822 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_GUARANTEED_RX_BUFFER_SIZES_LEN 4
17823 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_GUARANTEED_RX_BUFFER_SIZES_NUM 16
17824 /* Third word of flags. Not present on older firmware (check the length). */
17825 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_FLAGS3_OFST 148
17826 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_FLAGS3_LEN 4
17827 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_WOL_ETHERWAKE_OFST 148
17828 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_WOL_ETHERWAKE_LBN 0
17829 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_WOL_ETHERWAKE_WIDTH 1
17830 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RSS_EVEN_SPREADING_OFST 148
17831 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RSS_EVEN_SPREADING_LBN 1
17832 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RSS_EVEN_SPREADING_WIDTH 1
17833 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RSS_SELECTABLE_TABLE_SIZE_OFST 148
17834 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RSS_SELECTABLE_TABLE_SIZE_LBN 2
17835 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RSS_SELECTABLE_TABLE_SIZE_WIDTH 1
17836 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_MAE_SUPPORTED_OFST 148
17837 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_MAE_SUPPORTED_LBN 3
17838 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_MAE_SUPPORTED_WIDTH 1
17839 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_VDPA_SUPPORTED_OFST 148
17840 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_VDPA_SUPPORTED_LBN 4
17841 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_VDPA_SUPPORTED_WIDTH 1
17842 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RX_VLAN_STRIPPING_PER_ENCAP_RULE_OFST 148
17843 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RX_VLAN_STRIPPING_PER_ENCAP_RULE_LBN 5
17844 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RX_VLAN_STRIPPING_PER_ENCAP_RULE_WIDTH 1
17845 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_EXTENDED_WIDTH_EVQS_SUPPORTED_OFST 148
17846 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_EXTENDED_WIDTH_EVQS_SUPPORTED_LBN 6
17847 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_EXTENDED_WIDTH_EVQS_SUPPORTED_WIDTH 1
17848 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_UNSOL_EV_CREDIT_SUPPORTED_OFST 148
17849 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_UNSOL_EV_CREDIT_SUPPORTED_LBN 7
17850 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_UNSOL_EV_CREDIT_SUPPORTED_WIDTH 1
17851 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_ENCAPSULATED_MCDI_SUPPORTED_OFST 148
17852 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_ENCAPSULATED_MCDI_SUPPORTED_LBN 8
17853 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_ENCAPSULATED_MCDI_SUPPORTED_WIDTH 1
17854 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_EXTERNAL_MAE_SUPPORTED_OFST 148
17855 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_EXTERNAL_MAE_SUPPORTED_LBN 9
17856 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_EXTERNAL_MAE_SUPPORTED_WIDTH 1
17857 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_NVRAM_UPDATE_ABORT_SUPPORTED_OFST 148
17858 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_NVRAM_UPDATE_ABORT_SUPPORTED_LBN 10
17859 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_NVRAM_UPDATE_ABORT_SUPPORTED_WIDTH 1
17860 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_MAE_ACTION_SET_ALLOC_V2_SUPPORTED_OFST 148
17861 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_MAE_ACTION_SET_ALLOC_V2_SUPPORTED_LBN 11
17862 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_MAE_ACTION_SET_ALLOC_V2_SUPPORTED_WIDTH 1
17863 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RSS_STEER_ON_OUTER_SUPPORTED_OFST 148
17864 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RSS_STEER_ON_OUTER_SUPPORTED_LBN 12
17865 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_RSS_STEER_ON_OUTER_SUPPORTED_WIDTH 1
17866 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_MAE_ACTION_SET_ALLOC_V3_SUPPORTED_OFST 148
17867 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_MAE_ACTION_SET_ALLOC_V3_SUPPORTED_LBN 13
17868 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_MAE_ACTION_SET_ALLOC_V3_SUPPORTED_WIDTH 1
17869 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_DYNAMIC_MPORT_JOURNAL_OFST 148
17870 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_DYNAMIC_MPORT_JOURNAL_LBN 14
17871 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_DYNAMIC_MPORT_JOURNAL_WIDTH 1
17872 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_CLIENT_CMD_VF_PROXY_OFST 148
17873 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_CLIENT_CMD_VF_PROXY_LBN 15
17874 #define	MC_CMD_GET_CAPABILITIES_V7_OUT_CLIENT_CMD_VF_PROXY_WIDTH 1
17875 
17876 /* MC_CMD_GET_CAPABILITIES_V8_OUT msgresponse */
17877 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_LEN 160
17878 /* First word of flags. */
17879 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_FLAGS1_OFST 0
17880 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_FLAGS1_LEN 4
17881 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_VPORT_RECONFIGURE_OFST 0
17882 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_VPORT_RECONFIGURE_LBN 3
17883 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_VPORT_RECONFIGURE_WIDTH 1
17884 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TX_STRIPING_OFST 0
17885 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TX_STRIPING_LBN 4
17886 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TX_STRIPING_WIDTH 1
17887 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_VADAPTOR_QUERY_OFST 0
17888 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_VADAPTOR_QUERY_LBN 5
17889 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_VADAPTOR_QUERY_WIDTH 1
17890 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_EVB_PORT_VLAN_RESTRICT_OFST 0
17891 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_EVB_PORT_VLAN_RESTRICT_LBN 6
17892 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_EVB_PORT_VLAN_RESTRICT_WIDTH 1
17893 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_DRV_ATTACH_PREBOOT_OFST 0
17894 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_DRV_ATTACH_PREBOOT_LBN 7
17895 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_DRV_ATTACH_PREBOOT_WIDTH 1
17896 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RX_FORCE_EVENT_MERGING_OFST 0
17897 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RX_FORCE_EVENT_MERGING_LBN 8
17898 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RX_FORCE_EVENT_MERGING_WIDTH 1
17899 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_SET_MAC_ENHANCED_OFST 0
17900 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_SET_MAC_ENHANCED_LBN 9
17901 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_SET_MAC_ENHANCED_WIDTH 1
17902 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_UNKNOWN_UCAST_DST_FILTER_ALWAYS_MULTI_RECIPIENT_OFST 0
17903 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_UNKNOWN_UCAST_DST_FILTER_ALWAYS_MULTI_RECIPIENT_LBN 10
17904 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_UNKNOWN_UCAST_DST_FILTER_ALWAYS_MULTI_RECIPIENT_WIDTH 1
17905 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_VADAPTOR_PERMIT_SET_MAC_WHEN_FILTERS_INSTALLED_OFST 0
17906 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_VADAPTOR_PERMIT_SET_MAC_WHEN_FILTERS_INSTALLED_LBN 11
17907 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_VADAPTOR_PERMIT_SET_MAC_WHEN_FILTERS_INSTALLED_WIDTH 1
17908 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TX_MAC_SECURITY_FILTERING_OFST 0
17909 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TX_MAC_SECURITY_FILTERING_LBN 12
17910 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TX_MAC_SECURITY_FILTERING_WIDTH 1
17911 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_ADDITIONAL_RSS_MODES_OFST 0
17912 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_ADDITIONAL_RSS_MODES_LBN 13
17913 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_ADDITIONAL_RSS_MODES_WIDTH 1
17914 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_QBB_OFST 0
17915 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_QBB_LBN 14
17916 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_QBB_WIDTH 1
17917 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RX_PACKED_STREAM_VAR_BUFFERS_OFST 0
17918 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RX_PACKED_STREAM_VAR_BUFFERS_LBN 15
17919 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RX_PACKED_STREAM_VAR_BUFFERS_WIDTH 1
17920 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RX_RSS_LIMITED_OFST 0
17921 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RX_RSS_LIMITED_LBN 16
17922 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RX_RSS_LIMITED_WIDTH 1
17923 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RX_PACKED_STREAM_OFST 0
17924 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RX_PACKED_STREAM_LBN 17
17925 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RX_PACKED_STREAM_WIDTH 1
17926 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RX_INCLUDE_FCS_OFST 0
17927 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RX_INCLUDE_FCS_LBN 18
17928 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RX_INCLUDE_FCS_WIDTH 1
17929 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TX_VLAN_INSERTION_OFST 0
17930 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TX_VLAN_INSERTION_LBN 19
17931 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TX_VLAN_INSERTION_WIDTH 1
17932 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RX_VLAN_STRIPPING_OFST 0
17933 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RX_VLAN_STRIPPING_LBN 20
17934 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RX_VLAN_STRIPPING_WIDTH 1
17935 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TX_TSO_OFST 0
17936 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TX_TSO_LBN 21
17937 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TX_TSO_WIDTH 1
17938 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RX_PREFIX_LEN_0_OFST 0
17939 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RX_PREFIX_LEN_0_LBN 22
17940 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RX_PREFIX_LEN_0_WIDTH 1
17941 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RX_PREFIX_LEN_14_OFST 0
17942 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RX_PREFIX_LEN_14_LBN 23
17943 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RX_PREFIX_LEN_14_WIDTH 1
17944 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RX_TIMESTAMP_OFST 0
17945 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RX_TIMESTAMP_LBN 24
17946 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RX_TIMESTAMP_WIDTH 1
17947 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RX_BATCHING_OFST 0
17948 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RX_BATCHING_LBN 25
17949 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RX_BATCHING_WIDTH 1
17950 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_MCAST_FILTER_CHAINING_OFST 0
17951 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_MCAST_FILTER_CHAINING_LBN 26
17952 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_MCAST_FILTER_CHAINING_WIDTH 1
17953 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_PM_AND_RXDP_COUNTERS_OFST 0
17954 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_PM_AND_RXDP_COUNTERS_LBN 27
17955 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_PM_AND_RXDP_COUNTERS_WIDTH 1
17956 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RX_DISABLE_SCATTER_OFST 0
17957 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RX_DISABLE_SCATTER_LBN 28
17958 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RX_DISABLE_SCATTER_WIDTH 1
17959 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TX_MCAST_UDP_LOOPBACK_OFST 0
17960 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TX_MCAST_UDP_LOOPBACK_LBN 29
17961 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TX_MCAST_UDP_LOOPBACK_WIDTH 1
17962 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_EVB_OFST 0
17963 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_EVB_LBN 30
17964 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_EVB_WIDTH 1
17965 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_VXLAN_NVGRE_OFST 0
17966 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_VXLAN_NVGRE_LBN 31
17967 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_VXLAN_NVGRE_WIDTH 1
17968 /* RxDPCPU firmware id. */
17969 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RX_DPCPU_FW_ID_OFST 4
17970 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RX_DPCPU_FW_ID_LEN 2
17971 /* enum: Standard RXDP firmware */
17972 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RXDP 0x0
17973 /* enum: Low latency RXDP firmware */
17974 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RXDP_LOW_LATENCY 0x1
17975 /* enum: Packed stream RXDP firmware */
17976 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RXDP_PACKED_STREAM 0x2
17977 /* enum: Rules engine RXDP firmware */
17978 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RXDP_RULES_ENGINE 0x5
17979 /* enum: DPDK RXDP firmware */
17980 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RXDP_DPDK 0x6
17981 /* enum: BIST RXDP firmware */
17982 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RXDP_BIST 0x10a
17983 /* enum: RXDP Test firmware image 1 */
17984 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RXDP_TEST_FW_TO_MC_CUT_THROUGH 0x101
17985 /* enum: RXDP Test firmware image 2 */
17986 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RXDP_TEST_FW_TO_MC_STORE_FORWARD 0x102
17987 /* enum: RXDP Test firmware image 3 */
17988 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RXDP_TEST_FW_TO_MC_STORE_FORWARD_FIRST 0x103
17989 /* enum: RXDP Test firmware image 4 */
17990 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RXDP_TEST_EVERY_EVENT_BATCHABLE 0x104
17991 /* enum: RXDP Test firmware image 5 */
17992 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RXDP_TEST_BACKPRESSURE 0x105
17993 /* enum: RXDP Test firmware image 6 */
17994 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RXDP_TEST_FW_PACKET_EDITS 0x106
17995 /* enum: RXDP Test firmware image 7 */
17996 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RXDP_TEST_FW_RX_HDR_SPLIT 0x107
17997 /* enum: RXDP Test firmware image 8 */
17998 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RXDP_TEST_FW_DISABLE_DL 0x108
17999 /* enum: RXDP Test firmware image 9 */
18000 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RXDP_TEST_FW_DOORBELL_DELAY 0x10b
18001 /* enum: RXDP Test firmware image 10 */
18002 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RXDP_TEST_FW_SLOW 0x10c
18003 /* TxDPCPU firmware id. */
18004 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TX_DPCPU_FW_ID_OFST 6
18005 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TX_DPCPU_FW_ID_LEN 2
18006 /* enum: Standard TXDP firmware */
18007 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TXDP 0x0
18008 /* enum: Low latency TXDP firmware */
18009 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TXDP_LOW_LATENCY 0x1
18010 /* enum: High packet rate TXDP firmware */
18011 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TXDP_HIGH_PACKET_RATE 0x3
18012 /* enum: Rules engine TXDP firmware */
18013 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TXDP_RULES_ENGINE 0x5
18014 /* enum: DPDK TXDP firmware */
18015 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TXDP_DPDK 0x6
18016 /* enum: BIST TXDP firmware */
18017 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TXDP_BIST 0x12d
18018 /* enum: TXDP Test firmware image 1 */
18019 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TXDP_TEST_FW_TSO_EDIT 0x101
18020 /* enum: TXDP Test firmware image 2 */
18021 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TXDP_TEST_FW_PACKET_EDITS 0x102
18022 /* enum: TXDP CSR bus test firmware */
18023 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TXDP_TEST_FW_CSR 0x103
18024 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RXPD_FW_VERSION_OFST 8
18025 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RXPD_FW_VERSION_LEN 2
18026 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RXPD_FW_VERSION_REV_OFST 8
18027 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RXPD_FW_VERSION_REV_LBN 0
18028 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RXPD_FW_VERSION_REV_WIDTH 12
18029 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RXPD_FW_VERSION_TYPE_OFST 8
18030 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RXPD_FW_VERSION_TYPE_LBN 12
18031 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RXPD_FW_VERSION_TYPE_WIDTH 4
18032 /* enum: reserved value - do not use (may indicate alternative interpretation
18033  * of REV field in future)
18034  */
18035 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RXPD_FW_TYPE_RESERVED 0x0
18036 /* enum: Trivial RX PD firmware for early Huntington development (Huntington
18037  * development only)
18038  */
18039 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RXPD_FW_TYPE_FIRST_PKT 0x1
18040 /* enum: RX PD firmware for telemetry prototyping (Medford2 development only)
18041  */
18042 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RXPD_FW_TYPE_TESTFW_TELEMETRY 0x1
18043 /* enum: RX PD firmware with approximately Siena-compatible behaviour
18044  * (Huntington development only)
18045  */
18046 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RXPD_FW_TYPE_SIENA_COMPAT 0x2
18047 /* enum: Full featured RX PD production firmware */
18048 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RXPD_FW_TYPE_FULL_FEATURED 0x3
18049 /* enum: (deprecated original name for the FULL_FEATURED variant) */
18050 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RXPD_FW_TYPE_VSWITCH 0x3
18051 /* enum: siena_compat variant RX PD firmware using PM rather than MAC
18052  * (Huntington development only)
18053  */
18054 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RXPD_FW_TYPE_SIENA_COMPAT_PM 0x4
18055 /* enum: Low latency RX PD production firmware */
18056 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RXPD_FW_TYPE_LOW_LATENCY 0x5
18057 /* enum: Packed stream RX PD production firmware */
18058 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RXPD_FW_TYPE_PACKED_STREAM 0x6
18059 /* enum: RX PD firmware handling layer 2 only for high packet rate performance
18060  * tests (Medford development only)
18061  */
18062 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RXPD_FW_TYPE_LAYER2_PERF 0x7
18063 /* enum: Rules engine RX PD production firmware */
18064 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RXPD_FW_TYPE_RULES_ENGINE 0x8
18065 /* enum: Custom firmware variant (see SF-119495-PD and bug69716) */
18066 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RXPD_FW_TYPE_L3XUDP 0x9
18067 /* enum: DPDK RX PD production firmware */
18068 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RXPD_FW_TYPE_DPDK 0xa
18069 /* enum: RX PD firmware for GUE parsing prototype (Medford development only) */
18070 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RXPD_FW_TYPE_TESTFW_GUE_PROTOTYPE 0xe
18071 /* enum: RX PD firmware parsing but not filtering network overlay tunnel
18072  * encapsulations (Medford development only)
18073  */
18074 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RXPD_FW_TYPE_TESTFW_ENCAP_PARSING_ONLY 0xf
18075 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TXPD_FW_VERSION_OFST 10
18076 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TXPD_FW_VERSION_LEN 2
18077 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TXPD_FW_VERSION_REV_OFST 10
18078 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TXPD_FW_VERSION_REV_LBN 0
18079 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TXPD_FW_VERSION_REV_WIDTH 12
18080 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TXPD_FW_VERSION_TYPE_OFST 10
18081 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TXPD_FW_VERSION_TYPE_LBN 12
18082 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TXPD_FW_VERSION_TYPE_WIDTH 4
18083 /* enum: reserved value - do not use (may indicate alternative interpretation
18084  * of REV field in future)
18085  */
18086 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TXPD_FW_TYPE_RESERVED 0x0
18087 /* enum: Trivial TX PD firmware for early Huntington development (Huntington
18088  * development only)
18089  */
18090 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TXPD_FW_TYPE_FIRST_PKT 0x1
18091 /* enum: TX PD firmware for telemetry prototyping (Medford2 development only)
18092  */
18093 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TXPD_FW_TYPE_TESTFW_TELEMETRY 0x1
18094 /* enum: TX PD firmware with approximately Siena-compatible behaviour
18095  * (Huntington development only)
18096  */
18097 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TXPD_FW_TYPE_SIENA_COMPAT 0x2
18098 /* enum: Full featured TX PD production firmware */
18099 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TXPD_FW_TYPE_FULL_FEATURED 0x3
18100 /* enum: (deprecated original name for the FULL_FEATURED variant) */
18101 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TXPD_FW_TYPE_VSWITCH 0x3
18102 /* enum: siena_compat variant TX PD firmware using PM rather than MAC
18103  * (Huntington development only)
18104  */
18105 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TXPD_FW_TYPE_SIENA_COMPAT_PM 0x4
18106 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TXPD_FW_TYPE_LOW_LATENCY 0x5 /* enum */
18107 /* enum: TX PD firmware handling layer 2 only for high packet rate performance
18108  * tests (Medford development only)
18109  */
18110 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TXPD_FW_TYPE_LAYER2_PERF 0x7
18111 /* enum: Rules engine TX PD production firmware */
18112 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TXPD_FW_TYPE_RULES_ENGINE 0x8
18113 /* enum: Custom firmware variant (see SF-119495-PD and bug69716) */
18114 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TXPD_FW_TYPE_L3XUDP 0x9
18115 /* enum: DPDK TX PD production firmware */
18116 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TXPD_FW_TYPE_DPDK 0xa
18117 /* enum: RX PD firmware for GUE parsing prototype (Medford development only) */
18118 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TXPD_FW_TYPE_TESTFW_GUE_PROTOTYPE 0xe
18119 /* Hardware capabilities of NIC */
18120 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_HW_CAPABILITIES_OFST 12
18121 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_HW_CAPABILITIES_LEN 4
18122 /* Licensed capabilities */
18123 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_LICENSE_CAPABILITIES_OFST 16
18124 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_LICENSE_CAPABILITIES_LEN 4
18125 /* Second word of flags. Not present on older firmware (check the length). */
18126 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_FLAGS2_OFST 20
18127 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_FLAGS2_LEN 4
18128 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TX_TSO_V2_OFST 20
18129 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TX_TSO_V2_LBN 0
18130 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TX_TSO_V2_WIDTH 1
18131 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TX_TSO_V2_ENCAP_OFST 20
18132 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TX_TSO_V2_ENCAP_LBN 1
18133 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TX_TSO_V2_ENCAP_WIDTH 1
18134 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_EVQ_TIMER_CTRL_OFST 20
18135 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_EVQ_TIMER_CTRL_LBN 2
18136 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_EVQ_TIMER_CTRL_WIDTH 1
18137 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_EVENT_CUT_THROUGH_OFST 20
18138 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_EVENT_CUT_THROUGH_LBN 3
18139 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_EVENT_CUT_THROUGH_WIDTH 1
18140 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RX_CUT_THROUGH_OFST 20
18141 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RX_CUT_THROUGH_LBN 4
18142 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RX_CUT_THROUGH_WIDTH 1
18143 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TX_VFIFO_ULL_MODE_OFST 20
18144 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TX_VFIFO_ULL_MODE_LBN 5
18145 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TX_VFIFO_ULL_MODE_WIDTH 1
18146 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_MAC_STATS_40G_TX_SIZE_BINS_OFST 20
18147 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_MAC_STATS_40G_TX_SIZE_BINS_LBN 6
18148 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_MAC_STATS_40G_TX_SIZE_BINS_WIDTH 1
18149 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_INIT_EVQ_TYPE_SUPPORTED_OFST 20
18150 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_INIT_EVQ_TYPE_SUPPORTED_LBN 7
18151 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_INIT_EVQ_TYPE_SUPPORTED_WIDTH 1
18152 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_INIT_EVQ_V2_OFST 20
18153 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_INIT_EVQ_V2_LBN 7
18154 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_INIT_EVQ_V2_WIDTH 1
18155 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TX_MAC_TIMESTAMPING_OFST 20
18156 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TX_MAC_TIMESTAMPING_LBN 8
18157 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TX_MAC_TIMESTAMPING_WIDTH 1
18158 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TX_TIMESTAMP_OFST 20
18159 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TX_TIMESTAMP_LBN 9
18160 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TX_TIMESTAMP_WIDTH 1
18161 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RX_SNIFF_OFST 20
18162 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RX_SNIFF_LBN 10
18163 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RX_SNIFF_WIDTH 1
18164 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TX_SNIFF_OFST 20
18165 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TX_SNIFF_LBN 11
18166 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TX_SNIFF_WIDTH 1
18167 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_NVRAM_UPDATE_REPORT_VERIFY_RESULT_OFST 20
18168 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_NVRAM_UPDATE_REPORT_VERIFY_RESULT_LBN 12
18169 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_NVRAM_UPDATE_REPORT_VERIFY_RESULT_WIDTH 1
18170 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_MCDI_BACKGROUND_OFST 20
18171 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_MCDI_BACKGROUND_LBN 13
18172 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_MCDI_BACKGROUND_WIDTH 1
18173 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_MCDI_DB_RETURN_OFST 20
18174 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_MCDI_DB_RETURN_LBN 14
18175 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_MCDI_DB_RETURN_WIDTH 1
18176 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_CTPIO_OFST 20
18177 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_CTPIO_LBN 15
18178 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_CTPIO_WIDTH 1
18179 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TSA_SUPPORT_OFST 20
18180 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TSA_SUPPORT_LBN 16
18181 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TSA_SUPPORT_WIDTH 1
18182 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TSA_BOUND_OFST 20
18183 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TSA_BOUND_LBN 17
18184 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TSA_BOUND_WIDTH 1
18185 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_SF_ADAPTER_AUTHENTICATION_OFST 20
18186 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_SF_ADAPTER_AUTHENTICATION_LBN 18
18187 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_SF_ADAPTER_AUTHENTICATION_WIDTH 1
18188 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_FILTER_ACTION_FLAG_OFST 20
18189 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_FILTER_ACTION_FLAG_LBN 19
18190 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_FILTER_ACTION_FLAG_WIDTH 1
18191 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_FILTER_ACTION_MARK_OFST 20
18192 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_FILTER_ACTION_MARK_LBN 20
18193 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_FILTER_ACTION_MARK_WIDTH 1
18194 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_EQUAL_STRIDE_SUPER_BUFFER_OFST 20
18195 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_EQUAL_STRIDE_SUPER_BUFFER_LBN 21
18196 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_EQUAL_STRIDE_SUPER_BUFFER_WIDTH 1
18197 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_EQUAL_STRIDE_PACKED_STREAM_OFST 20
18198 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_EQUAL_STRIDE_PACKED_STREAM_LBN 21
18199 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_EQUAL_STRIDE_PACKED_STREAM_WIDTH 1
18200 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_L3XUDP_SUPPORT_OFST 20
18201 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_L3XUDP_SUPPORT_LBN 22
18202 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_L3XUDP_SUPPORT_WIDTH 1
18203 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_FW_SUBVARIANT_NO_TX_CSUM_OFST 20
18204 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_FW_SUBVARIANT_NO_TX_CSUM_LBN 23
18205 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_FW_SUBVARIANT_NO_TX_CSUM_WIDTH 1
18206 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_VI_SPREADING_OFST 20
18207 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_VI_SPREADING_LBN 24
18208 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_VI_SPREADING_WIDTH 1
18209 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RXDP_HLB_IDLE_OFST 20
18210 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RXDP_HLB_IDLE_LBN 25
18211 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RXDP_HLB_IDLE_WIDTH 1
18212 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_INIT_RXQ_NO_CONT_EV_OFST 20
18213 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_INIT_RXQ_NO_CONT_EV_LBN 26
18214 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_INIT_RXQ_NO_CONT_EV_WIDTH 1
18215 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_INIT_RXQ_WITH_BUFFER_SIZE_OFST 20
18216 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_INIT_RXQ_WITH_BUFFER_SIZE_LBN 27
18217 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_INIT_RXQ_WITH_BUFFER_SIZE_WIDTH 1
18218 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_BUNDLE_UPDATE_OFST 20
18219 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_BUNDLE_UPDATE_LBN 28
18220 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_BUNDLE_UPDATE_WIDTH 1
18221 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TX_TSO_V3_OFST 20
18222 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TX_TSO_V3_LBN 29
18223 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TX_TSO_V3_WIDTH 1
18224 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_DYNAMIC_SENSORS_OFST 20
18225 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_DYNAMIC_SENSORS_LBN 30
18226 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_DYNAMIC_SENSORS_WIDTH 1
18227 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_NVRAM_UPDATE_POLL_VERIFY_RESULT_OFST 20
18228 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_NVRAM_UPDATE_POLL_VERIFY_RESULT_LBN 31
18229 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_NVRAM_UPDATE_POLL_VERIFY_RESULT_WIDTH 1
18230 /* Number of FATSOv2 contexts per datapath supported by this NIC (when
18231  * TX_TSO_V2 == 1). Not present on older firmware (check the length).
18232  */
18233 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TX_TSO_V2_N_CONTEXTS_OFST 24
18234 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TX_TSO_V2_N_CONTEXTS_LEN 2
18235 /* One byte per PF containing the number of the external port assigned to this
18236  * PF, indexed by PF number. Special values indicate that a PF is either not
18237  * present or not assigned.
18238  */
18239 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_PFS_TO_PORTS_ASSIGNMENT_OFST 26
18240 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_PFS_TO_PORTS_ASSIGNMENT_LEN 1
18241 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_PFS_TO_PORTS_ASSIGNMENT_NUM 16
18242 /* enum: The caller is not permitted to access information on this PF. */
18243 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_ACCESS_NOT_PERMITTED 0xff
18244 /* enum: PF does not exist. */
18245 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_PF_NOT_PRESENT 0xfe
18246 /* enum: PF does exist but is not assigned to any external port. */
18247 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_PF_NOT_ASSIGNED 0xfd
18248 /* enum: This value indicates that PF is assigned, but it cannot be expressed
18249  * in this field. It is intended for a possible future situation where a more
18250  * complex scheme of PFs to ports mapping is being used. The future driver
18251  * should look for a new field supporting the new scheme. The current/old
18252  * driver should treat this value as PF_NOT_ASSIGNED.
18253  */
18254 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_INCOMPATIBLE_ASSIGNMENT 0xfc
18255 /* One byte per PF containing the number of its VFs, indexed by PF number. A
18256  * special value indicates that a PF is not present.
18257  */
18258 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_NUM_VFS_PER_PF_OFST 42
18259 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_NUM_VFS_PER_PF_LEN 1
18260 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_NUM_VFS_PER_PF_NUM 16
18261 /* enum: The caller is not permitted to access information on this PF. */
18262 /*               MC_CMD_GET_CAPABILITIES_V8_OUT_ACCESS_NOT_PERMITTED 0xff */
18263 /* enum: PF does not exist. */
18264 /*               MC_CMD_GET_CAPABILITIES_V8_OUT_PF_NOT_PRESENT 0xfe */
18265 /* Number of VIs available for each external port */
18266 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_NUM_VIS_PER_PORT_OFST 58
18267 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_NUM_VIS_PER_PORT_LEN 2
18268 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_NUM_VIS_PER_PORT_NUM 4
18269 /* Size of RX descriptor cache expressed as binary logarithm The actual size
18270  * equals (2 ^ RX_DESC_CACHE_SIZE)
18271  */
18272 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RX_DESC_CACHE_SIZE_OFST 66
18273 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RX_DESC_CACHE_SIZE_LEN 1
18274 /* Size of TX descriptor cache expressed as binary logarithm The actual size
18275  * equals (2 ^ TX_DESC_CACHE_SIZE)
18276  */
18277 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TX_DESC_CACHE_SIZE_OFST 67
18278 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TX_DESC_CACHE_SIZE_LEN 1
18279 /* Total number of available PIO buffers */
18280 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_NUM_PIO_BUFFS_OFST 68
18281 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_NUM_PIO_BUFFS_LEN 2
18282 /* Size of a single PIO buffer */
18283 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_SIZE_PIO_BUFF_OFST 70
18284 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_SIZE_PIO_BUFF_LEN 2
18285 /* On chips later than Medford the amount of address space assigned to each VI
18286  * is configurable. This is a global setting that the driver must query to
18287  * discover the VI to address mapping. Cut-through PIO (CTPIO) is not available
18288  * with 8k VI windows.
18289  */
18290 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_VI_WINDOW_MODE_OFST 72
18291 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_VI_WINDOW_MODE_LEN 1
18292 /* enum: Each VI occupies 8k as on Huntington and Medford. PIO is at offset 4k.
18293  * CTPIO is not mapped.
18294  */
18295 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_VI_WINDOW_MODE_8K 0x0
18296 /* enum: Each VI occupies 16k. PIO is at offset 4k. CTPIO is at offset 12k. */
18297 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_VI_WINDOW_MODE_16K 0x1
18298 /* enum: Each VI occupies 64k. PIO is at offset 4k. CTPIO is at offset 12k. */
18299 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_VI_WINDOW_MODE_64K 0x2
18300 /* Number of vFIFOs per adapter that can be used for VFIFO Stuffing
18301  * (SF-115995-SW) in the present configuration of firmware and port mode.
18302  */
18303 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_VFIFO_STUFFING_NUM_VFIFOS_OFST 73
18304 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_VFIFO_STUFFING_NUM_VFIFOS_LEN 1
18305 /* Number of buffers per adapter that can be used for VFIFO Stuffing
18306  * (SF-115995-SW) in the present configuration of firmware and port mode.
18307  */
18308 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_VFIFO_STUFFING_NUM_CP_BUFFERS_OFST 74
18309 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_VFIFO_STUFFING_NUM_CP_BUFFERS_LEN 2
18310 /* Entry count in the MAC stats array, including the final GENERATION_END
18311  * entry. For MAC stats DMA, drivers should allocate a buffer large enough to
18312  * hold at least this many 64-bit stats values, if they wish to receive all
18313  * available stats. If the buffer is shorter than MAC_STATS_NUM_STATS * 8, the
18314  * stats array returned will be truncated.
18315  */
18316 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_MAC_STATS_NUM_STATS_OFST 76
18317 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_MAC_STATS_NUM_STATS_LEN 2
18318 /* Maximum supported value for MC_CMD_FILTER_OP_V3/MATCH_MARK_VALUE. This field
18319  * will only be non-zero if MC_CMD_GET_CAPABILITIES/FILTER_ACTION_MARK is set.
18320  */
18321 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_FILTER_ACTION_MARK_MAX_OFST 80
18322 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_FILTER_ACTION_MARK_MAX_LEN 4
18323 /* On devices where the INIT_RXQ_WITH_BUFFER_SIZE flag (in
18324  * GET_CAPABILITIES_OUT_V2) is set, drivers have to specify a buffer size when
18325  * they create an RX queue. Due to hardware limitations, only a small number of
18326  * different buffer sizes may be available concurrently. Nonzero entries in
18327  * this array are the sizes of buffers which the system guarantees will be
18328  * available for use. If the list is empty, there are no limitations on
18329  * concurrent buffer sizes.
18330  */
18331 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_GUARANTEED_RX_BUFFER_SIZES_OFST 84
18332 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_GUARANTEED_RX_BUFFER_SIZES_LEN 4
18333 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_GUARANTEED_RX_BUFFER_SIZES_NUM 16
18334 /* Third word of flags. Not present on older firmware (check the length). */
18335 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_FLAGS3_OFST 148
18336 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_FLAGS3_LEN 4
18337 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_WOL_ETHERWAKE_OFST 148
18338 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_WOL_ETHERWAKE_LBN 0
18339 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_WOL_ETHERWAKE_WIDTH 1
18340 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RSS_EVEN_SPREADING_OFST 148
18341 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RSS_EVEN_SPREADING_LBN 1
18342 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RSS_EVEN_SPREADING_WIDTH 1
18343 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RSS_SELECTABLE_TABLE_SIZE_OFST 148
18344 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RSS_SELECTABLE_TABLE_SIZE_LBN 2
18345 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RSS_SELECTABLE_TABLE_SIZE_WIDTH 1
18346 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_MAE_SUPPORTED_OFST 148
18347 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_MAE_SUPPORTED_LBN 3
18348 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_MAE_SUPPORTED_WIDTH 1
18349 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_VDPA_SUPPORTED_OFST 148
18350 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_VDPA_SUPPORTED_LBN 4
18351 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_VDPA_SUPPORTED_WIDTH 1
18352 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RX_VLAN_STRIPPING_PER_ENCAP_RULE_OFST 148
18353 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RX_VLAN_STRIPPING_PER_ENCAP_RULE_LBN 5
18354 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RX_VLAN_STRIPPING_PER_ENCAP_RULE_WIDTH 1
18355 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_EXTENDED_WIDTH_EVQS_SUPPORTED_OFST 148
18356 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_EXTENDED_WIDTH_EVQS_SUPPORTED_LBN 6
18357 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_EXTENDED_WIDTH_EVQS_SUPPORTED_WIDTH 1
18358 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_UNSOL_EV_CREDIT_SUPPORTED_OFST 148
18359 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_UNSOL_EV_CREDIT_SUPPORTED_LBN 7
18360 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_UNSOL_EV_CREDIT_SUPPORTED_WIDTH 1
18361 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_ENCAPSULATED_MCDI_SUPPORTED_OFST 148
18362 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_ENCAPSULATED_MCDI_SUPPORTED_LBN 8
18363 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_ENCAPSULATED_MCDI_SUPPORTED_WIDTH 1
18364 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_EXTERNAL_MAE_SUPPORTED_OFST 148
18365 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_EXTERNAL_MAE_SUPPORTED_LBN 9
18366 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_EXTERNAL_MAE_SUPPORTED_WIDTH 1
18367 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_NVRAM_UPDATE_ABORT_SUPPORTED_OFST 148
18368 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_NVRAM_UPDATE_ABORT_SUPPORTED_LBN 10
18369 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_NVRAM_UPDATE_ABORT_SUPPORTED_WIDTH 1
18370 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_MAE_ACTION_SET_ALLOC_V2_SUPPORTED_OFST 148
18371 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_MAE_ACTION_SET_ALLOC_V2_SUPPORTED_LBN 11
18372 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_MAE_ACTION_SET_ALLOC_V2_SUPPORTED_WIDTH 1
18373 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RSS_STEER_ON_OUTER_SUPPORTED_OFST 148
18374 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RSS_STEER_ON_OUTER_SUPPORTED_LBN 12
18375 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_RSS_STEER_ON_OUTER_SUPPORTED_WIDTH 1
18376 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_MAE_ACTION_SET_ALLOC_V3_SUPPORTED_OFST 148
18377 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_MAE_ACTION_SET_ALLOC_V3_SUPPORTED_LBN 13
18378 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_MAE_ACTION_SET_ALLOC_V3_SUPPORTED_WIDTH 1
18379 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_DYNAMIC_MPORT_JOURNAL_OFST 148
18380 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_DYNAMIC_MPORT_JOURNAL_LBN 14
18381 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_DYNAMIC_MPORT_JOURNAL_WIDTH 1
18382 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_CLIENT_CMD_VF_PROXY_OFST 148
18383 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_CLIENT_CMD_VF_PROXY_LBN 15
18384 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_CLIENT_CMD_VF_PROXY_WIDTH 1
18385 /* These bits are reserved for communicating test-specific capabilities to
18386  * host-side test software. All production drivers should treat this field as
18387  * opaque.
18388  */
18389 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TEST_RESERVED_OFST 152
18390 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TEST_RESERVED_LEN 8
18391 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TEST_RESERVED_LO_OFST 152
18392 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TEST_RESERVED_LO_LEN 4
18393 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TEST_RESERVED_LO_LBN 1216
18394 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TEST_RESERVED_LO_WIDTH 32
18395 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TEST_RESERVED_HI_OFST 156
18396 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TEST_RESERVED_HI_LEN 4
18397 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TEST_RESERVED_HI_LBN 1248
18398 #define	MC_CMD_GET_CAPABILITIES_V8_OUT_TEST_RESERVED_HI_WIDTH 32
18399 
18400 /* MC_CMD_GET_CAPABILITIES_V9_OUT msgresponse */
18401 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_LEN 184
18402 /* First word of flags. */
18403 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_FLAGS1_OFST 0
18404 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_FLAGS1_LEN 4
18405 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_VPORT_RECONFIGURE_OFST 0
18406 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_VPORT_RECONFIGURE_LBN 3
18407 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_VPORT_RECONFIGURE_WIDTH 1
18408 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TX_STRIPING_OFST 0
18409 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TX_STRIPING_LBN 4
18410 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TX_STRIPING_WIDTH 1
18411 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_VADAPTOR_QUERY_OFST 0
18412 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_VADAPTOR_QUERY_LBN 5
18413 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_VADAPTOR_QUERY_WIDTH 1
18414 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_EVB_PORT_VLAN_RESTRICT_OFST 0
18415 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_EVB_PORT_VLAN_RESTRICT_LBN 6
18416 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_EVB_PORT_VLAN_RESTRICT_WIDTH 1
18417 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_DRV_ATTACH_PREBOOT_OFST 0
18418 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_DRV_ATTACH_PREBOOT_LBN 7
18419 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_DRV_ATTACH_PREBOOT_WIDTH 1
18420 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RX_FORCE_EVENT_MERGING_OFST 0
18421 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RX_FORCE_EVENT_MERGING_LBN 8
18422 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RX_FORCE_EVENT_MERGING_WIDTH 1
18423 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_SET_MAC_ENHANCED_OFST 0
18424 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_SET_MAC_ENHANCED_LBN 9
18425 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_SET_MAC_ENHANCED_WIDTH 1
18426 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_UNKNOWN_UCAST_DST_FILTER_ALWAYS_MULTI_RECIPIENT_OFST 0
18427 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_UNKNOWN_UCAST_DST_FILTER_ALWAYS_MULTI_RECIPIENT_LBN 10
18428 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_UNKNOWN_UCAST_DST_FILTER_ALWAYS_MULTI_RECIPIENT_WIDTH 1
18429 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_VADAPTOR_PERMIT_SET_MAC_WHEN_FILTERS_INSTALLED_OFST 0
18430 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_VADAPTOR_PERMIT_SET_MAC_WHEN_FILTERS_INSTALLED_LBN 11
18431 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_VADAPTOR_PERMIT_SET_MAC_WHEN_FILTERS_INSTALLED_WIDTH 1
18432 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TX_MAC_SECURITY_FILTERING_OFST 0
18433 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TX_MAC_SECURITY_FILTERING_LBN 12
18434 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TX_MAC_SECURITY_FILTERING_WIDTH 1
18435 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_ADDITIONAL_RSS_MODES_OFST 0
18436 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_ADDITIONAL_RSS_MODES_LBN 13
18437 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_ADDITIONAL_RSS_MODES_WIDTH 1
18438 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_QBB_OFST 0
18439 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_QBB_LBN 14
18440 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_QBB_WIDTH 1
18441 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RX_PACKED_STREAM_VAR_BUFFERS_OFST 0
18442 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RX_PACKED_STREAM_VAR_BUFFERS_LBN 15
18443 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RX_PACKED_STREAM_VAR_BUFFERS_WIDTH 1
18444 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RX_RSS_LIMITED_OFST 0
18445 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RX_RSS_LIMITED_LBN 16
18446 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RX_RSS_LIMITED_WIDTH 1
18447 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RX_PACKED_STREAM_OFST 0
18448 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RX_PACKED_STREAM_LBN 17
18449 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RX_PACKED_STREAM_WIDTH 1
18450 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RX_INCLUDE_FCS_OFST 0
18451 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RX_INCLUDE_FCS_LBN 18
18452 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RX_INCLUDE_FCS_WIDTH 1
18453 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TX_VLAN_INSERTION_OFST 0
18454 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TX_VLAN_INSERTION_LBN 19
18455 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TX_VLAN_INSERTION_WIDTH 1
18456 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RX_VLAN_STRIPPING_OFST 0
18457 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RX_VLAN_STRIPPING_LBN 20
18458 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RX_VLAN_STRIPPING_WIDTH 1
18459 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TX_TSO_OFST 0
18460 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TX_TSO_LBN 21
18461 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TX_TSO_WIDTH 1
18462 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RX_PREFIX_LEN_0_OFST 0
18463 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RX_PREFIX_LEN_0_LBN 22
18464 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RX_PREFIX_LEN_0_WIDTH 1
18465 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RX_PREFIX_LEN_14_OFST 0
18466 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RX_PREFIX_LEN_14_LBN 23
18467 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RX_PREFIX_LEN_14_WIDTH 1
18468 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RX_TIMESTAMP_OFST 0
18469 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RX_TIMESTAMP_LBN 24
18470 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RX_TIMESTAMP_WIDTH 1
18471 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RX_BATCHING_OFST 0
18472 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RX_BATCHING_LBN 25
18473 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RX_BATCHING_WIDTH 1
18474 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_MCAST_FILTER_CHAINING_OFST 0
18475 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_MCAST_FILTER_CHAINING_LBN 26
18476 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_MCAST_FILTER_CHAINING_WIDTH 1
18477 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_PM_AND_RXDP_COUNTERS_OFST 0
18478 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_PM_AND_RXDP_COUNTERS_LBN 27
18479 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_PM_AND_RXDP_COUNTERS_WIDTH 1
18480 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RX_DISABLE_SCATTER_OFST 0
18481 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RX_DISABLE_SCATTER_LBN 28
18482 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RX_DISABLE_SCATTER_WIDTH 1
18483 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TX_MCAST_UDP_LOOPBACK_OFST 0
18484 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TX_MCAST_UDP_LOOPBACK_LBN 29
18485 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TX_MCAST_UDP_LOOPBACK_WIDTH 1
18486 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_EVB_OFST 0
18487 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_EVB_LBN 30
18488 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_EVB_WIDTH 1
18489 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_VXLAN_NVGRE_OFST 0
18490 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_VXLAN_NVGRE_LBN 31
18491 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_VXLAN_NVGRE_WIDTH 1
18492 /* RxDPCPU firmware id. */
18493 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RX_DPCPU_FW_ID_OFST 4
18494 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RX_DPCPU_FW_ID_LEN 2
18495 /* enum: Standard RXDP firmware */
18496 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RXDP 0x0
18497 /* enum: Low latency RXDP firmware */
18498 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RXDP_LOW_LATENCY 0x1
18499 /* enum: Packed stream RXDP firmware */
18500 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RXDP_PACKED_STREAM 0x2
18501 /* enum: Rules engine RXDP firmware */
18502 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RXDP_RULES_ENGINE 0x5
18503 /* enum: DPDK RXDP firmware */
18504 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RXDP_DPDK 0x6
18505 /* enum: BIST RXDP firmware */
18506 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RXDP_BIST 0x10a
18507 /* enum: RXDP Test firmware image 1 */
18508 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RXDP_TEST_FW_TO_MC_CUT_THROUGH 0x101
18509 /* enum: RXDP Test firmware image 2 */
18510 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RXDP_TEST_FW_TO_MC_STORE_FORWARD 0x102
18511 /* enum: RXDP Test firmware image 3 */
18512 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RXDP_TEST_FW_TO_MC_STORE_FORWARD_FIRST 0x103
18513 /* enum: RXDP Test firmware image 4 */
18514 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RXDP_TEST_EVERY_EVENT_BATCHABLE 0x104
18515 /* enum: RXDP Test firmware image 5 */
18516 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RXDP_TEST_BACKPRESSURE 0x105
18517 /* enum: RXDP Test firmware image 6 */
18518 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RXDP_TEST_FW_PACKET_EDITS 0x106
18519 /* enum: RXDP Test firmware image 7 */
18520 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RXDP_TEST_FW_RX_HDR_SPLIT 0x107
18521 /* enum: RXDP Test firmware image 8 */
18522 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RXDP_TEST_FW_DISABLE_DL 0x108
18523 /* enum: RXDP Test firmware image 9 */
18524 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RXDP_TEST_FW_DOORBELL_DELAY 0x10b
18525 /* enum: RXDP Test firmware image 10 */
18526 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RXDP_TEST_FW_SLOW 0x10c
18527 /* TxDPCPU firmware id. */
18528 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TX_DPCPU_FW_ID_OFST 6
18529 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TX_DPCPU_FW_ID_LEN 2
18530 /* enum: Standard TXDP firmware */
18531 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TXDP 0x0
18532 /* enum: Low latency TXDP firmware */
18533 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TXDP_LOW_LATENCY 0x1
18534 /* enum: High packet rate TXDP firmware */
18535 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TXDP_HIGH_PACKET_RATE 0x3
18536 /* enum: Rules engine TXDP firmware */
18537 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TXDP_RULES_ENGINE 0x5
18538 /* enum: DPDK TXDP firmware */
18539 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TXDP_DPDK 0x6
18540 /* enum: BIST TXDP firmware */
18541 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TXDP_BIST 0x12d
18542 /* enum: TXDP Test firmware image 1 */
18543 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TXDP_TEST_FW_TSO_EDIT 0x101
18544 /* enum: TXDP Test firmware image 2 */
18545 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TXDP_TEST_FW_PACKET_EDITS 0x102
18546 /* enum: TXDP CSR bus test firmware */
18547 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TXDP_TEST_FW_CSR 0x103
18548 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RXPD_FW_VERSION_OFST 8
18549 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RXPD_FW_VERSION_LEN 2
18550 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RXPD_FW_VERSION_REV_OFST 8
18551 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RXPD_FW_VERSION_REV_LBN 0
18552 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RXPD_FW_VERSION_REV_WIDTH 12
18553 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RXPD_FW_VERSION_TYPE_OFST 8
18554 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RXPD_FW_VERSION_TYPE_LBN 12
18555 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RXPD_FW_VERSION_TYPE_WIDTH 4
18556 /* enum: reserved value - do not use (may indicate alternative interpretation
18557  * of REV field in future)
18558  */
18559 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RXPD_FW_TYPE_RESERVED 0x0
18560 /* enum: Trivial RX PD firmware for early Huntington development (Huntington
18561  * development only)
18562  */
18563 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RXPD_FW_TYPE_FIRST_PKT 0x1
18564 /* enum: RX PD firmware for telemetry prototyping (Medford2 development only)
18565  */
18566 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RXPD_FW_TYPE_TESTFW_TELEMETRY 0x1
18567 /* enum: RX PD firmware with approximately Siena-compatible behaviour
18568  * (Huntington development only)
18569  */
18570 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RXPD_FW_TYPE_SIENA_COMPAT 0x2
18571 /* enum: Full featured RX PD production firmware */
18572 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RXPD_FW_TYPE_FULL_FEATURED 0x3
18573 /* enum: (deprecated original name for the FULL_FEATURED variant) */
18574 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RXPD_FW_TYPE_VSWITCH 0x3
18575 /* enum: siena_compat variant RX PD firmware using PM rather than MAC
18576  * (Huntington development only)
18577  */
18578 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RXPD_FW_TYPE_SIENA_COMPAT_PM 0x4
18579 /* enum: Low latency RX PD production firmware */
18580 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RXPD_FW_TYPE_LOW_LATENCY 0x5
18581 /* enum: Packed stream RX PD production firmware */
18582 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RXPD_FW_TYPE_PACKED_STREAM 0x6
18583 /* enum: RX PD firmware handling layer 2 only for high packet rate performance
18584  * tests (Medford development only)
18585  */
18586 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RXPD_FW_TYPE_LAYER2_PERF 0x7
18587 /* enum: Rules engine RX PD production firmware */
18588 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RXPD_FW_TYPE_RULES_ENGINE 0x8
18589 /* enum: Custom firmware variant (see SF-119495-PD and bug69716) */
18590 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RXPD_FW_TYPE_L3XUDP 0x9
18591 /* enum: DPDK RX PD production firmware */
18592 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RXPD_FW_TYPE_DPDK 0xa
18593 /* enum: RX PD firmware for GUE parsing prototype (Medford development only) */
18594 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RXPD_FW_TYPE_TESTFW_GUE_PROTOTYPE 0xe
18595 /* enum: RX PD firmware parsing but not filtering network overlay tunnel
18596  * encapsulations (Medford development only)
18597  */
18598 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RXPD_FW_TYPE_TESTFW_ENCAP_PARSING_ONLY 0xf
18599 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TXPD_FW_VERSION_OFST 10
18600 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TXPD_FW_VERSION_LEN 2
18601 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TXPD_FW_VERSION_REV_OFST 10
18602 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TXPD_FW_VERSION_REV_LBN 0
18603 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TXPD_FW_VERSION_REV_WIDTH 12
18604 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TXPD_FW_VERSION_TYPE_OFST 10
18605 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TXPD_FW_VERSION_TYPE_LBN 12
18606 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TXPD_FW_VERSION_TYPE_WIDTH 4
18607 /* enum: reserved value - do not use (may indicate alternative interpretation
18608  * of REV field in future)
18609  */
18610 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TXPD_FW_TYPE_RESERVED 0x0
18611 /* enum: Trivial TX PD firmware for early Huntington development (Huntington
18612  * development only)
18613  */
18614 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TXPD_FW_TYPE_FIRST_PKT 0x1
18615 /* enum: TX PD firmware for telemetry prototyping (Medford2 development only)
18616  */
18617 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TXPD_FW_TYPE_TESTFW_TELEMETRY 0x1
18618 /* enum: TX PD firmware with approximately Siena-compatible behaviour
18619  * (Huntington development only)
18620  */
18621 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TXPD_FW_TYPE_SIENA_COMPAT 0x2
18622 /* enum: Full featured TX PD production firmware */
18623 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TXPD_FW_TYPE_FULL_FEATURED 0x3
18624 /* enum: (deprecated original name for the FULL_FEATURED variant) */
18625 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TXPD_FW_TYPE_VSWITCH 0x3
18626 /* enum: siena_compat variant TX PD firmware using PM rather than MAC
18627  * (Huntington development only)
18628  */
18629 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TXPD_FW_TYPE_SIENA_COMPAT_PM 0x4
18630 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TXPD_FW_TYPE_LOW_LATENCY 0x5 /* enum */
18631 /* enum: TX PD firmware handling layer 2 only for high packet rate performance
18632  * tests (Medford development only)
18633  */
18634 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TXPD_FW_TYPE_LAYER2_PERF 0x7
18635 /* enum: Rules engine TX PD production firmware */
18636 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TXPD_FW_TYPE_RULES_ENGINE 0x8
18637 /* enum: Custom firmware variant (see SF-119495-PD and bug69716) */
18638 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TXPD_FW_TYPE_L3XUDP 0x9
18639 /* enum: DPDK TX PD production firmware */
18640 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TXPD_FW_TYPE_DPDK 0xa
18641 /* enum: RX PD firmware for GUE parsing prototype (Medford development only) */
18642 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TXPD_FW_TYPE_TESTFW_GUE_PROTOTYPE 0xe
18643 /* Hardware capabilities of NIC */
18644 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_HW_CAPABILITIES_OFST 12
18645 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_HW_CAPABILITIES_LEN 4
18646 /* Licensed capabilities */
18647 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_LICENSE_CAPABILITIES_OFST 16
18648 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_LICENSE_CAPABILITIES_LEN 4
18649 /* Second word of flags. Not present on older firmware (check the length). */
18650 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_FLAGS2_OFST 20
18651 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_FLAGS2_LEN 4
18652 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TX_TSO_V2_OFST 20
18653 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TX_TSO_V2_LBN 0
18654 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TX_TSO_V2_WIDTH 1
18655 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TX_TSO_V2_ENCAP_OFST 20
18656 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TX_TSO_V2_ENCAP_LBN 1
18657 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TX_TSO_V2_ENCAP_WIDTH 1
18658 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_EVQ_TIMER_CTRL_OFST 20
18659 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_EVQ_TIMER_CTRL_LBN 2
18660 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_EVQ_TIMER_CTRL_WIDTH 1
18661 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_EVENT_CUT_THROUGH_OFST 20
18662 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_EVENT_CUT_THROUGH_LBN 3
18663 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_EVENT_CUT_THROUGH_WIDTH 1
18664 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RX_CUT_THROUGH_OFST 20
18665 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RX_CUT_THROUGH_LBN 4
18666 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RX_CUT_THROUGH_WIDTH 1
18667 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TX_VFIFO_ULL_MODE_OFST 20
18668 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TX_VFIFO_ULL_MODE_LBN 5
18669 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TX_VFIFO_ULL_MODE_WIDTH 1
18670 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_MAC_STATS_40G_TX_SIZE_BINS_OFST 20
18671 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_MAC_STATS_40G_TX_SIZE_BINS_LBN 6
18672 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_MAC_STATS_40G_TX_SIZE_BINS_WIDTH 1
18673 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_INIT_EVQ_TYPE_SUPPORTED_OFST 20
18674 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_INIT_EVQ_TYPE_SUPPORTED_LBN 7
18675 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_INIT_EVQ_TYPE_SUPPORTED_WIDTH 1
18676 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_INIT_EVQ_V2_OFST 20
18677 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_INIT_EVQ_V2_LBN 7
18678 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_INIT_EVQ_V2_WIDTH 1
18679 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TX_MAC_TIMESTAMPING_OFST 20
18680 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TX_MAC_TIMESTAMPING_LBN 8
18681 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TX_MAC_TIMESTAMPING_WIDTH 1
18682 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TX_TIMESTAMP_OFST 20
18683 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TX_TIMESTAMP_LBN 9
18684 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TX_TIMESTAMP_WIDTH 1
18685 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RX_SNIFF_OFST 20
18686 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RX_SNIFF_LBN 10
18687 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RX_SNIFF_WIDTH 1
18688 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TX_SNIFF_OFST 20
18689 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TX_SNIFF_LBN 11
18690 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TX_SNIFF_WIDTH 1
18691 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_NVRAM_UPDATE_REPORT_VERIFY_RESULT_OFST 20
18692 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_NVRAM_UPDATE_REPORT_VERIFY_RESULT_LBN 12
18693 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_NVRAM_UPDATE_REPORT_VERIFY_RESULT_WIDTH 1
18694 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_MCDI_BACKGROUND_OFST 20
18695 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_MCDI_BACKGROUND_LBN 13
18696 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_MCDI_BACKGROUND_WIDTH 1
18697 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_MCDI_DB_RETURN_OFST 20
18698 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_MCDI_DB_RETURN_LBN 14
18699 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_MCDI_DB_RETURN_WIDTH 1
18700 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_CTPIO_OFST 20
18701 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_CTPIO_LBN 15
18702 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_CTPIO_WIDTH 1
18703 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TSA_SUPPORT_OFST 20
18704 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TSA_SUPPORT_LBN 16
18705 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TSA_SUPPORT_WIDTH 1
18706 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TSA_BOUND_OFST 20
18707 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TSA_BOUND_LBN 17
18708 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TSA_BOUND_WIDTH 1
18709 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_SF_ADAPTER_AUTHENTICATION_OFST 20
18710 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_SF_ADAPTER_AUTHENTICATION_LBN 18
18711 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_SF_ADAPTER_AUTHENTICATION_WIDTH 1
18712 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_FILTER_ACTION_FLAG_OFST 20
18713 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_FILTER_ACTION_FLAG_LBN 19
18714 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_FILTER_ACTION_FLAG_WIDTH 1
18715 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_FILTER_ACTION_MARK_OFST 20
18716 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_FILTER_ACTION_MARK_LBN 20
18717 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_FILTER_ACTION_MARK_WIDTH 1
18718 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_EQUAL_STRIDE_SUPER_BUFFER_OFST 20
18719 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_EQUAL_STRIDE_SUPER_BUFFER_LBN 21
18720 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_EQUAL_STRIDE_SUPER_BUFFER_WIDTH 1
18721 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_EQUAL_STRIDE_PACKED_STREAM_OFST 20
18722 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_EQUAL_STRIDE_PACKED_STREAM_LBN 21
18723 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_EQUAL_STRIDE_PACKED_STREAM_WIDTH 1
18724 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_L3XUDP_SUPPORT_OFST 20
18725 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_L3XUDP_SUPPORT_LBN 22
18726 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_L3XUDP_SUPPORT_WIDTH 1
18727 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_FW_SUBVARIANT_NO_TX_CSUM_OFST 20
18728 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_FW_SUBVARIANT_NO_TX_CSUM_LBN 23
18729 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_FW_SUBVARIANT_NO_TX_CSUM_WIDTH 1
18730 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_VI_SPREADING_OFST 20
18731 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_VI_SPREADING_LBN 24
18732 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_VI_SPREADING_WIDTH 1
18733 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RXDP_HLB_IDLE_OFST 20
18734 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RXDP_HLB_IDLE_LBN 25
18735 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RXDP_HLB_IDLE_WIDTH 1
18736 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_INIT_RXQ_NO_CONT_EV_OFST 20
18737 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_INIT_RXQ_NO_CONT_EV_LBN 26
18738 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_INIT_RXQ_NO_CONT_EV_WIDTH 1
18739 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_INIT_RXQ_WITH_BUFFER_SIZE_OFST 20
18740 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_INIT_RXQ_WITH_BUFFER_SIZE_LBN 27
18741 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_INIT_RXQ_WITH_BUFFER_SIZE_WIDTH 1
18742 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_BUNDLE_UPDATE_OFST 20
18743 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_BUNDLE_UPDATE_LBN 28
18744 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_BUNDLE_UPDATE_WIDTH 1
18745 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TX_TSO_V3_OFST 20
18746 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TX_TSO_V3_LBN 29
18747 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TX_TSO_V3_WIDTH 1
18748 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_DYNAMIC_SENSORS_OFST 20
18749 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_DYNAMIC_SENSORS_LBN 30
18750 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_DYNAMIC_SENSORS_WIDTH 1
18751 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_NVRAM_UPDATE_POLL_VERIFY_RESULT_OFST 20
18752 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_NVRAM_UPDATE_POLL_VERIFY_RESULT_LBN 31
18753 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_NVRAM_UPDATE_POLL_VERIFY_RESULT_WIDTH 1
18754 /* Number of FATSOv2 contexts per datapath supported by this NIC (when
18755  * TX_TSO_V2 == 1). Not present on older firmware (check the length).
18756  */
18757 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TX_TSO_V2_N_CONTEXTS_OFST 24
18758 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TX_TSO_V2_N_CONTEXTS_LEN 2
18759 /* One byte per PF containing the number of the external port assigned to this
18760  * PF, indexed by PF number. Special values indicate that a PF is either not
18761  * present or not assigned.
18762  */
18763 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_PFS_TO_PORTS_ASSIGNMENT_OFST 26
18764 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_PFS_TO_PORTS_ASSIGNMENT_LEN 1
18765 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_PFS_TO_PORTS_ASSIGNMENT_NUM 16
18766 /* enum: The caller is not permitted to access information on this PF. */
18767 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_ACCESS_NOT_PERMITTED 0xff
18768 /* enum: PF does not exist. */
18769 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_PF_NOT_PRESENT 0xfe
18770 /* enum: PF does exist but is not assigned to any external port. */
18771 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_PF_NOT_ASSIGNED 0xfd
18772 /* enum: This value indicates that PF is assigned, but it cannot be expressed
18773  * in this field. It is intended for a possible future situation where a more
18774  * complex scheme of PFs to ports mapping is being used. The future driver
18775  * should look for a new field supporting the new scheme. The current/old
18776  * driver should treat this value as PF_NOT_ASSIGNED.
18777  */
18778 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_INCOMPATIBLE_ASSIGNMENT 0xfc
18779 /* One byte per PF containing the number of its VFs, indexed by PF number. A
18780  * special value indicates that a PF is not present.
18781  */
18782 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_NUM_VFS_PER_PF_OFST 42
18783 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_NUM_VFS_PER_PF_LEN 1
18784 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_NUM_VFS_PER_PF_NUM 16
18785 /* enum: The caller is not permitted to access information on this PF. */
18786 /*               MC_CMD_GET_CAPABILITIES_V9_OUT_ACCESS_NOT_PERMITTED 0xff */
18787 /* enum: PF does not exist. */
18788 /*               MC_CMD_GET_CAPABILITIES_V9_OUT_PF_NOT_PRESENT 0xfe */
18789 /* Number of VIs available for each external port */
18790 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_NUM_VIS_PER_PORT_OFST 58
18791 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_NUM_VIS_PER_PORT_LEN 2
18792 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_NUM_VIS_PER_PORT_NUM 4
18793 /* Size of RX descriptor cache expressed as binary logarithm The actual size
18794  * equals (2 ^ RX_DESC_CACHE_SIZE)
18795  */
18796 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RX_DESC_CACHE_SIZE_OFST 66
18797 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RX_DESC_CACHE_SIZE_LEN 1
18798 /* Size of TX descriptor cache expressed as binary logarithm The actual size
18799  * equals (2 ^ TX_DESC_CACHE_SIZE)
18800  */
18801 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TX_DESC_CACHE_SIZE_OFST 67
18802 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TX_DESC_CACHE_SIZE_LEN 1
18803 /* Total number of available PIO buffers */
18804 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_NUM_PIO_BUFFS_OFST 68
18805 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_NUM_PIO_BUFFS_LEN 2
18806 /* Size of a single PIO buffer */
18807 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_SIZE_PIO_BUFF_OFST 70
18808 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_SIZE_PIO_BUFF_LEN 2
18809 /* On chips later than Medford the amount of address space assigned to each VI
18810  * is configurable. This is a global setting that the driver must query to
18811  * discover the VI to address mapping. Cut-through PIO (CTPIO) is not available
18812  * with 8k VI windows.
18813  */
18814 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_VI_WINDOW_MODE_OFST 72
18815 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_VI_WINDOW_MODE_LEN 1
18816 /* enum: Each VI occupies 8k as on Huntington and Medford. PIO is at offset 4k.
18817  * CTPIO is not mapped.
18818  */
18819 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_VI_WINDOW_MODE_8K 0x0
18820 /* enum: Each VI occupies 16k. PIO is at offset 4k. CTPIO is at offset 12k. */
18821 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_VI_WINDOW_MODE_16K 0x1
18822 /* enum: Each VI occupies 64k. PIO is at offset 4k. CTPIO is at offset 12k. */
18823 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_VI_WINDOW_MODE_64K 0x2
18824 /* Number of vFIFOs per adapter that can be used for VFIFO Stuffing
18825  * (SF-115995-SW) in the present configuration of firmware and port mode.
18826  */
18827 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_VFIFO_STUFFING_NUM_VFIFOS_OFST 73
18828 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_VFIFO_STUFFING_NUM_VFIFOS_LEN 1
18829 /* Number of buffers per adapter that can be used for VFIFO Stuffing
18830  * (SF-115995-SW) in the present configuration of firmware and port mode.
18831  */
18832 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_VFIFO_STUFFING_NUM_CP_BUFFERS_OFST 74
18833 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_VFIFO_STUFFING_NUM_CP_BUFFERS_LEN 2
18834 /* Entry count in the MAC stats array, including the final GENERATION_END
18835  * entry. For MAC stats DMA, drivers should allocate a buffer large enough to
18836  * hold at least this many 64-bit stats values, if they wish to receive all
18837  * available stats. If the buffer is shorter than MAC_STATS_NUM_STATS * 8, the
18838  * stats array returned will be truncated.
18839  */
18840 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_MAC_STATS_NUM_STATS_OFST 76
18841 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_MAC_STATS_NUM_STATS_LEN 2
18842 /* Maximum supported value for MC_CMD_FILTER_OP_V3/MATCH_MARK_VALUE. This field
18843  * will only be non-zero if MC_CMD_GET_CAPABILITIES/FILTER_ACTION_MARK is set.
18844  */
18845 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_FILTER_ACTION_MARK_MAX_OFST 80
18846 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_FILTER_ACTION_MARK_MAX_LEN 4
18847 /* On devices where the INIT_RXQ_WITH_BUFFER_SIZE flag (in
18848  * GET_CAPABILITIES_OUT_V2) is set, drivers have to specify a buffer size when
18849  * they create an RX queue. Due to hardware limitations, only a small number of
18850  * different buffer sizes may be available concurrently. Nonzero entries in
18851  * this array are the sizes of buffers which the system guarantees will be
18852  * available for use. If the list is empty, there are no limitations on
18853  * concurrent buffer sizes.
18854  */
18855 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_GUARANTEED_RX_BUFFER_SIZES_OFST 84
18856 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_GUARANTEED_RX_BUFFER_SIZES_LEN 4
18857 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_GUARANTEED_RX_BUFFER_SIZES_NUM 16
18858 /* Third word of flags. Not present on older firmware (check the length). */
18859 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_FLAGS3_OFST 148
18860 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_FLAGS3_LEN 4
18861 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_WOL_ETHERWAKE_OFST 148
18862 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_WOL_ETHERWAKE_LBN 0
18863 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_WOL_ETHERWAKE_WIDTH 1
18864 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RSS_EVEN_SPREADING_OFST 148
18865 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RSS_EVEN_SPREADING_LBN 1
18866 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RSS_EVEN_SPREADING_WIDTH 1
18867 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RSS_SELECTABLE_TABLE_SIZE_OFST 148
18868 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RSS_SELECTABLE_TABLE_SIZE_LBN 2
18869 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RSS_SELECTABLE_TABLE_SIZE_WIDTH 1
18870 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_MAE_SUPPORTED_OFST 148
18871 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_MAE_SUPPORTED_LBN 3
18872 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_MAE_SUPPORTED_WIDTH 1
18873 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_VDPA_SUPPORTED_OFST 148
18874 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_VDPA_SUPPORTED_LBN 4
18875 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_VDPA_SUPPORTED_WIDTH 1
18876 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RX_VLAN_STRIPPING_PER_ENCAP_RULE_OFST 148
18877 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RX_VLAN_STRIPPING_PER_ENCAP_RULE_LBN 5
18878 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RX_VLAN_STRIPPING_PER_ENCAP_RULE_WIDTH 1
18879 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_EXTENDED_WIDTH_EVQS_SUPPORTED_OFST 148
18880 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_EXTENDED_WIDTH_EVQS_SUPPORTED_LBN 6
18881 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_EXTENDED_WIDTH_EVQS_SUPPORTED_WIDTH 1
18882 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_UNSOL_EV_CREDIT_SUPPORTED_OFST 148
18883 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_UNSOL_EV_CREDIT_SUPPORTED_LBN 7
18884 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_UNSOL_EV_CREDIT_SUPPORTED_WIDTH 1
18885 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_ENCAPSULATED_MCDI_SUPPORTED_OFST 148
18886 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_ENCAPSULATED_MCDI_SUPPORTED_LBN 8
18887 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_ENCAPSULATED_MCDI_SUPPORTED_WIDTH 1
18888 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_EXTERNAL_MAE_SUPPORTED_OFST 148
18889 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_EXTERNAL_MAE_SUPPORTED_LBN 9
18890 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_EXTERNAL_MAE_SUPPORTED_WIDTH 1
18891 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_NVRAM_UPDATE_ABORT_SUPPORTED_OFST 148
18892 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_NVRAM_UPDATE_ABORT_SUPPORTED_LBN 10
18893 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_NVRAM_UPDATE_ABORT_SUPPORTED_WIDTH 1
18894 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_MAE_ACTION_SET_ALLOC_V2_SUPPORTED_OFST 148
18895 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_MAE_ACTION_SET_ALLOC_V2_SUPPORTED_LBN 11
18896 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_MAE_ACTION_SET_ALLOC_V2_SUPPORTED_WIDTH 1
18897 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RSS_STEER_ON_OUTER_SUPPORTED_OFST 148
18898 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RSS_STEER_ON_OUTER_SUPPORTED_LBN 12
18899 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RSS_STEER_ON_OUTER_SUPPORTED_WIDTH 1
18900 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_MAE_ACTION_SET_ALLOC_V3_SUPPORTED_OFST 148
18901 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_MAE_ACTION_SET_ALLOC_V3_SUPPORTED_LBN 13
18902 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_MAE_ACTION_SET_ALLOC_V3_SUPPORTED_WIDTH 1
18903 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_DYNAMIC_MPORT_JOURNAL_OFST 148
18904 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_DYNAMIC_MPORT_JOURNAL_LBN 14
18905 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_DYNAMIC_MPORT_JOURNAL_WIDTH 1
18906 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_CLIENT_CMD_VF_PROXY_OFST 148
18907 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_CLIENT_CMD_VF_PROXY_LBN 15
18908 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_CLIENT_CMD_VF_PROXY_WIDTH 1
18909 /* These bits are reserved for communicating test-specific capabilities to
18910  * host-side test software. All production drivers should treat this field as
18911  * opaque.
18912  */
18913 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TEST_RESERVED_OFST 152
18914 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TEST_RESERVED_LEN 8
18915 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TEST_RESERVED_LO_OFST 152
18916 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TEST_RESERVED_LO_LEN 4
18917 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TEST_RESERVED_LO_LBN 1216
18918 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TEST_RESERVED_LO_WIDTH 32
18919 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TEST_RESERVED_HI_OFST 156
18920 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TEST_RESERVED_HI_LEN 4
18921 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TEST_RESERVED_HI_LBN 1248
18922 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_TEST_RESERVED_HI_WIDTH 32
18923 /* The minimum size (in table entries) of indirection table to be allocated
18924  * from the pool for an RSS context. Note that the table size used must be a
18925  * power of 2.
18926  */
18927 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RSS_MIN_INDIRECTION_TABLE_SIZE_OFST 160
18928 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RSS_MIN_INDIRECTION_TABLE_SIZE_LEN 4
18929 /* The maximum size (in table entries) of indirection table to be allocated
18930  * from the pool for an RSS context. Note that the table size used must be a
18931  * power of 2.
18932  */
18933 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RSS_MAX_INDIRECTION_TABLE_SIZE_OFST 164
18934 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RSS_MAX_INDIRECTION_TABLE_SIZE_LEN 4
18935 /* The maximum number of queues that can be used by an RSS context in exclusive
18936  * mode. In exclusive mode the context has a configurable indirection table and
18937  * a configurable RSS key.
18938  */
18939 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RSS_MAX_INDIRECTION_QUEUES_OFST 168
18940 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RSS_MAX_INDIRECTION_QUEUES_LEN 4
18941 /* The maximum number of queues that can be used by an RSS context in even-
18942  * spreading mode. In even-spreading mode the context has no indirection table
18943  * but it does have a configurable RSS key.
18944  */
18945 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RSS_MAX_EVEN_SPREADING_QUEUES_OFST 172
18946 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RSS_MAX_EVEN_SPREADING_QUEUES_LEN 4
18947 /* The total number of RSS contexts supported. Note that the number of
18948  * available contexts using indirection tables is also limited by the
18949  * availability of indirection table space allocated from a common pool.
18950  */
18951 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RSS_NUM_CONTEXTS_OFST 176
18952 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RSS_NUM_CONTEXTS_LEN 4
18953 /* The total amount of indirection table space that can be shared between RSS
18954  * contexts.
18955  */
18956 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RSS_TABLE_POOL_SIZE_OFST 180
18957 #define	MC_CMD_GET_CAPABILITIES_V9_OUT_RSS_TABLE_POOL_SIZE_LEN 4
18958 
18959 /* MC_CMD_GET_CAPABILITIES_V10_OUT msgresponse */
18960 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_LEN 192
18961 /* First word of flags. */
18962 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_FLAGS1_OFST 0
18963 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_FLAGS1_LEN 4
18964 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_VPORT_RECONFIGURE_OFST 0
18965 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_VPORT_RECONFIGURE_LBN 3
18966 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_VPORT_RECONFIGURE_WIDTH 1
18967 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TX_STRIPING_OFST 0
18968 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TX_STRIPING_LBN 4
18969 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TX_STRIPING_WIDTH 1
18970 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_VADAPTOR_QUERY_OFST 0
18971 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_VADAPTOR_QUERY_LBN 5
18972 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_VADAPTOR_QUERY_WIDTH 1
18973 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_EVB_PORT_VLAN_RESTRICT_OFST 0
18974 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_EVB_PORT_VLAN_RESTRICT_LBN 6
18975 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_EVB_PORT_VLAN_RESTRICT_WIDTH 1
18976 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_DRV_ATTACH_PREBOOT_OFST 0
18977 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_DRV_ATTACH_PREBOOT_LBN 7
18978 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_DRV_ATTACH_PREBOOT_WIDTH 1
18979 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RX_FORCE_EVENT_MERGING_OFST 0
18980 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RX_FORCE_EVENT_MERGING_LBN 8
18981 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RX_FORCE_EVENT_MERGING_WIDTH 1
18982 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_SET_MAC_ENHANCED_OFST 0
18983 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_SET_MAC_ENHANCED_LBN 9
18984 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_SET_MAC_ENHANCED_WIDTH 1
18985 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_UNKNOWN_UCAST_DST_FILTER_ALWAYS_MULTI_RECIPIENT_OFST 0
18986 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_UNKNOWN_UCAST_DST_FILTER_ALWAYS_MULTI_RECIPIENT_LBN 10
18987 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_UNKNOWN_UCAST_DST_FILTER_ALWAYS_MULTI_RECIPIENT_WIDTH 1
18988 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_VADAPTOR_PERMIT_SET_MAC_WHEN_FILTERS_INSTALLED_OFST 0
18989 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_VADAPTOR_PERMIT_SET_MAC_WHEN_FILTERS_INSTALLED_LBN 11
18990 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_VADAPTOR_PERMIT_SET_MAC_WHEN_FILTERS_INSTALLED_WIDTH 1
18991 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TX_MAC_SECURITY_FILTERING_OFST 0
18992 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TX_MAC_SECURITY_FILTERING_LBN 12
18993 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TX_MAC_SECURITY_FILTERING_WIDTH 1
18994 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_ADDITIONAL_RSS_MODES_OFST 0
18995 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_ADDITIONAL_RSS_MODES_LBN 13
18996 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_ADDITIONAL_RSS_MODES_WIDTH 1
18997 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_QBB_OFST 0
18998 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_QBB_LBN 14
18999 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_QBB_WIDTH 1
19000 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RX_PACKED_STREAM_VAR_BUFFERS_OFST 0
19001 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RX_PACKED_STREAM_VAR_BUFFERS_LBN 15
19002 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RX_PACKED_STREAM_VAR_BUFFERS_WIDTH 1
19003 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RX_RSS_LIMITED_OFST 0
19004 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RX_RSS_LIMITED_LBN 16
19005 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RX_RSS_LIMITED_WIDTH 1
19006 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RX_PACKED_STREAM_OFST 0
19007 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RX_PACKED_STREAM_LBN 17
19008 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RX_PACKED_STREAM_WIDTH 1
19009 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RX_INCLUDE_FCS_OFST 0
19010 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RX_INCLUDE_FCS_LBN 18
19011 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RX_INCLUDE_FCS_WIDTH 1
19012 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TX_VLAN_INSERTION_OFST 0
19013 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TX_VLAN_INSERTION_LBN 19
19014 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TX_VLAN_INSERTION_WIDTH 1
19015 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RX_VLAN_STRIPPING_OFST 0
19016 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RX_VLAN_STRIPPING_LBN 20
19017 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RX_VLAN_STRIPPING_WIDTH 1
19018 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TX_TSO_OFST 0
19019 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TX_TSO_LBN 21
19020 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TX_TSO_WIDTH 1
19021 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RX_PREFIX_LEN_0_OFST 0
19022 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RX_PREFIX_LEN_0_LBN 22
19023 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RX_PREFIX_LEN_0_WIDTH 1
19024 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RX_PREFIX_LEN_14_OFST 0
19025 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RX_PREFIX_LEN_14_LBN 23
19026 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RX_PREFIX_LEN_14_WIDTH 1
19027 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RX_TIMESTAMP_OFST 0
19028 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RX_TIMESTAMP_LBN 24
19029 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RX_TIMESTAMP_WIDTH 1
19030 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RX_BATCHING_OFST 0
19031 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RX_BATCHING_LBN 25
19032 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RX_BATCHING_WIDTH 1
19033 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_MCAST_FILTER_CHAINING_OFST 0
19034 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_MCAST_FILTER_CHAINING_LBN 26
19035 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_MCAST_FILTER_CHAINING_WIDTH 1
19036 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_PM_AND_RXDP_COUNTERS_OFST 0
19037 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_PM_AND_RXDP_COUNTERS_LBN 27
19038 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_PM_AND_RXDP_COUNTERS_WIDTH 1
19039 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RX_DISABLE_SCATTER_OFST 0
19040 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RX_DISABLE_SCATTER_LBN 28
19041 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RX_DISABLE_SCATTER_WIDTH 1
19042 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TX_MCAST_UDP_LOOPBACK_OFST 0
19043 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TX_MCAST_UDP_LOOPBACK_LBN 29
19044 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TX_MCAST_UDP_LOOPBACK_WIDTH 1
19045 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_EVB_OFST 0
19046 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_EVB_LBN 30
19047 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_EVB_WIDTH 1
19048 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_VXLAN_NVGRE_OFST 0
19049 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_VXLAN_NVGRE_LBN 31
19050 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_VXLAN_NVGRE_WIDTH 1
19051 /* RxDPCPU firmware id. */
19052 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RX_DPCPU_FW_ID_OFST 4
19053 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RX_DPCPU_FW_ID_LEN 2
19054 /* enum: Standard RXDP firmware */
19055 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RXDP 0x0
19056 /* enum: Low latency RXDP firmware */
19057 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RXDP_LOW_LATENCY 0x1
19058 /* enum: Packed stream RXDP firmware */
19059 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RXDP_PACKED_STREAM 0x2
19060 /* enum: Rules engine RXDP firmware */
19061 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RXDP_RULES_ENGINE 0x5
19062 /* enum: DPDK RXDP firmware */
19063 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RXDP_DPDK 0x6
19064 /* enum: BIST RXDP firmware */
19065 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RXDP_BIST 0x10a
19066 /* enum: RXDP Test firmware image 1 */
19067 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RXDP_TEST_FW_TO_MC_CUT_THROUGH 0x101
19068 /* enum: RXDP Test firmware image 2 */
19069 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RXDP_TEST_FW_TO_MC_STORE_FORWARD 0x102
19070 /* enum: RXDP Test firmware image 3 */
19071 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RXDP_TEST_FW_TO_MC_STORE_FORWARD_FIRST 0x103
19072 /* enum: RXDP Test firmware image 4 */
19073 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RXDP_TEST_EVERY_EVENT_BATCHABLE 0x104
19074 /* enum: RXDP Test firmware image 5 */
19075 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RXDP_TEST_BACKPRESSURE 0x105
19076 /* enum: RXDP Test firmware image 6 */
19077 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RXDP_TEST_FW_PACKET_EDITS 0x106
19078 /* enum: RXDP Test firmware image 7 */
19079 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RXDP_TEST_FW_RX_HDR_SPLIT 0x107
19080 /* enum: RXDP Test firmware image 8 */
19081 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RXDP_TEST_FW_DISABLE_DL 0x108
19082 /* enum: RXDP Test firmware image 9 */
19083 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RXDP_TEST_FW_DOORBELL_DELAY 0x10b
19084 /* enum: RXDP Test firmware image 10 */
19085 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RXDP_TEST_FW_SLOW 0x10c
19086 /* TxDPCPU firmware id. */
19087 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TX_DPCPU_FW_ID_OFST 6
19088 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TX_DPCPU_FW_ID_LEN 2
19089 /* enum: Standard TXDP firmware */
19090 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TXDP 0x0
19091 /* enum: Low latency TXDP firmware */
19092 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TXDP_LOW_LATENCY 0x1
19093 /* enum: High packet rate TXDP firmware */
19094 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TXDP_HIGH_PACKET_RATE 0x3
19095 /* enum: Rules engine TXDP firmware */
19096 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TXDP_RULES_ENGINE 0x5
19097 /* enum: DPDK TXDP firmware */
19098 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TXDP_DPDK 0x6
19099 /* enum: BIST TXDP firmware */
19100 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TXDP_BIST 0x12d
19101 /* enum: TXDP Test firmware image 1 */
19102 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TXDP_TEST_FW_TSO_EDIT 0x101
19103 /* enum: TXDP Test firmware image 2 */
19104 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TXDP_TEST_FW_PACKET_EDITS 0x102
19105 /* enum: TXDP CSR bus test firmware */
19106 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TXDP_TEST_FW_CSR 0x103
19107 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RXPD_FW_VERSION_OFST 8
19108 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RXPD_FW_VERSION_LEN 2
19109 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RXPD_FW_VERSION_REV_OFST 8
19110 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RXPD_FW_VERSION_REV_LBN 0
19111 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RXPD_FW_VERSION_REV_WIDTH 12
19112 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RXPD_FW_VERSION_TYPE_OFST 8
19113 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RXPD_FW_VERSION_TYPE_LBN 12
19114 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RXPD_FW_VERSION_TYPE_WIDTH 4
19115 /* enum: reserved value - do not use (may indicate alternative interpretation
19116  * of REV field in future)
19117  */
19118 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RXPD_FW_TYPE_RESERVED 0x0
19119 /* enum: Trivial RX PD firmware for early Huntington development (Huntington
19120  * development only)
19121  */
19122 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RXPD_FW_TYPE_FIRST_PKT 0x1
19123 /* enum: RX PD firmware for telemetry prototyping (Medford2 development only)
19124  */
19125 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RXPD_FW_TYPE_TESTFW_TELEMETRY 0x1
19126 /* enum: RX PD firmware with approximately Siena-compatible behaviour
19127  * (Huntington development only)
19128  */
19129 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RXPD_FW_TYPE_SIENA_COMPAT 0x2
19130 /* enum: Full featured RX PD production firmware */
19131 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RXPD_FW_TYPE_FULL_FEATURED 0x3
19132 /* enum: (deprecated original name for the FULL_FEATURED variant) */
19133 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RXPD_FW_TYPE_VSWITCH 0x3
19134 /* enum: siena_compat variant RX PD firmware using PM rather than MAC
19135  * (Huntington development only)
19136  */
19137 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RXPD_FW_TYPE_SIENA_COMPAT_PM 0x4
19138 /* enum: Low latency RX PD production firmware */
19139 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RXPD_FW_TYPE_LOW_LATENCY 0x5
19140 /* enum: Packed stream RX PD production firmware */
19141 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RXPD_FW_TYPE_PACKED_STREAM 0x6
19142 /* enum: RX PD firmware handling layer 2 only for high packet rate performance
19143  * tests (Medford development only)
19144  */
19145 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RXPD_FW_TYPE_LAYER2_PERF 0x7
19146 /* enum: Rules engine RX PD production firmware */
19147 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RXPD_FW_TYPE_RULES_ENGINE 0x8
19148 /* enum: Custom firmware variant (see SF-119495-PD and bug69716) */
19149 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RXPD_FW_TYPE_L3XUDP 0x9
19150 /* enum: DPDK RX PD production firmware */
19151 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RXPD_FW_TYPE_DPDK 0xa
19152 /* enum: RX PD firmware for GUE parsing prototype (Medford development only) */
19153 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RXPD_FW_TYPE_TESTFW_GUE_PROTOTYPE 0xe
19154 /* enum: RX PD firmware parsing but not filtering network overlay tunnel
19155  * encapsulations (Medford development only)
19156  */
19157 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RXPD_FW_TYPE_TESTFW_ENCAP_PARSING_ONLY 0xf
19158 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TXPD_FW_VERSION_OFST 10
19159 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TXPD_FW_VERSION_LEN 2
19160 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TXPD_FW_VERSION_REV_OFST 10
19161 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TXPD_FW_VERSION_REV_LBN 0
19162 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TXPD_FW_VERSION_REV_WIDTH 12
19163 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TXPD_FW_VERSION_TYPE_OFST 10
19164 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TXPD_FW_VERSION_TYPE_LBN 12
19165 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TXPD_FW_VERSION_TYPE_WIDTH 4
19166 /* enum: reserved value - do not use (may indicate alternative interpretation
19167  * of REV field in future)
19168  */
19169 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TXPD_FW_TYPE_RESERVED 0x0
19170 /* enum: Trivial TX PD firmware for early Huntington development (Huntington
19171  * development only)
19172  */
19173 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TXPD_FW_TYPE_FIRST_PKT 0x1
19174 /* enum: TX PD firmware for telemetry prototyping (Medford2 development only)
19175  */
19176 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TXPD_FW_TYPE_TESTFW_TELEMETRY 0x1
19177 /* enum: TX PD firmware with approximately Siena-compatible behaviour
19178  * (Huntington development only)
19179  */
19180 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TXPD_FW_TYPE_SIENA_COMPAT 0x2
19181 /* enum: Full featured TX PD production firmware */
19182 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TXPD_FW_TYPE_FULL_FEATURED 0x3
19183 /* enum: (deprecated original name for the FULL_FEATURED variant) */
19184 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TXPD_FW_TYPE_VSWITCH 0x3
19185 /* enum: siena_compat variant TX PD firmware using PM rather than MAC
19186  * (Huntington development only)
19187  */
19188 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TXPD_FW_TYPE_SIENA_COMPAT_PM 0x4
19189 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TXPD_FW_TYPE_LOW_LATENCY 0x5 /* enum */
19190 /* enum: TX PD firmware handling layer 2 only for high packet rate performance
19191  * tests (Medford development only)
19192  */
19193 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TXPD_FW_TYPE_LAYER2_PERF 0x7
19194 /* enum: Rules engine TX PD production firmware */
19195 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TXPD_FW_TYPE_RULES_ENGINE 0x8
19196 /* enum: Custom firmware variant (see SF-119495-PD and bug69716) */
19197 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TXPD_FW_TYPE_L3XUDP 0x9
19198 /* enum: DPDK TX PD production firmware */
19199 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TXPD_FW_TYPE_DPDK 0xa
19200 /* enum: RX PD firmware for GUE parsing prototype (Medford development only) */
19201 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TXPD_FW_TYPE_TESTFW_GUE_PROTOTYPE 0xe
19202 /* Hardware capabilities of NIC */
19203 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_HW_CAPABILITIES_OFST 12
19204 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_HW_CAPABILITIES_LEN 4
19205 /* Licensed capabilities */
19206 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_LICENSE_CAPABILITIES_OFST 16
19207 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_LICENSE_CAPABILITIES_LEN 4
19208 /* Second word of flags. Not present on older firmware (check the length). */
19209 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_FLAGS2_OFST 20
19210 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_FLAGS2_LEN 4
19211 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TX_TSO_V2_OFST 20
19212 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TX_TSO_V2_LBN 0
19213 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TX_TSO_V2_WIDTH 1
19214 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TX_TSO_V2_ENCAP_OFST 20
19215 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TX_TSO_V2_ENCAP_LBN 1
19216 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TX_TSO_V2_ENCAP_WIDTH 1
19217 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_EVQ_TIMER_CTRL_OFST 20
19218 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_EVQ_TIMER_CTRL_LBN 2
19219 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_EVQ_TIMER_CTRL_WIDTH 1
19220 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_EVENT_CUT_THROUGH_OFST 20
19221 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_EVENT_CUT_THROUGH_LBN 3
19222 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_EVENT_CUT_THROUGH_WIDTH 1
19223 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RX_CUT_THROUGH_OFST 20
19224 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RX_CUT_THROUGH_LBN 4
19225 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RX_CUT_THROUGH_WIDTH 1
19226 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TX_VFIFO_ULL_MODE_OFST 20
19227 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TX_VFIFO_ULL_MODE_LBN 5
19228 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TX_VFIFO_ULL_MODE_WIDTH 1
19229 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_MAC_STATS_40G_TX_SIZE_BINS_OFST 20
19230 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_MAC_STATS_40G_TX_SIZE_BINS_LBN 6
19231 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_MAC_STATS_40G_TX_SIZE_BINS_WIDTH 1
19232 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_INIT_EVQ_TYPE_SUPPORTED_OFST 20
19233 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_INIT_EVQ_TYPE_SUPPORTED_LBN 7
19234 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_INIT_EVQ_TYPE_SUPPORTED_WIDTH 1
19235 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_INIT_EVQ_V2_OFST 20
19236 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_INIT_EVQ_V2_LBN 7
19237 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_INIT_EVQ_V2_WIDTH 1
19238 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TX_MAC_TIMESTAMPING_OFST 20
19239 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TX_MAC_TIMESTAMPING_LBN 8
19240 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TX_MAC_TIMESTAMPING_WIDTH 1
19241 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TX_TIMESTAMP_OFST 20
19242 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TX_TIMESTAMP_LBN 9
19243 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TX_TIMESTAMP_WIDTH 1
19244 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RX_SNIFF_OFST 20
19245 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RX_SNIFF_LBN 10
19246 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RX_SNIFF_WIDTH 1
19247 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TX_SNIFF_OFST 20
19248 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TX_SNIFF_LBN 11
19249 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TX_SNIFF_WIDTH 1
19250 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_NVRAM_UPDATE_REPORT_VERIFY_RESULT_OFST 20
19251 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_NVRAM_UPDATE_REPORT_VERIFY_RESULT_LBN 12
19252 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_NVRAM_UPDATE_REPORT_VERIFY_RESULT_WIDTH 1
19253 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_MCDI_BACKGROUND_OFST 20
19254 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_MCDI_BACKGROUND_LBN 13
19255 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_MCDI_BACKGROUND_WIDTH 1
19256 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_MCDI_DB_RETURN_OFST 20
19257 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_MCDI_DB_RETURN_LBN 14
19258 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_MCDI_DB_RETURN_WIDTH 1
19259 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_CTPIO_OFST 20
19260 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_CTPIO_LBN 15
19261 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_CTPIO_WIDTH 1
19262 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TSA_SUPPORT_OFST 20
19263 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TSA_SUPPORT_LBN 16
19264 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TSA_SUPPORT_WIDTH 1
19265 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TSA_BOUND_OFST 20
19266 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TSA_BOUND_LBN 17
19267 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TSA_BOUND_WIDTH 1
19268 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_SF_ADAPTER_AUTHENTICATION_OFST 20
19269 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_SF_ADAPTER_AUTHENTICATION_LBN 18
19270 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_SF_ADAPTER_AUTHENTICATION_WIDTH 1
19271 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_FILTER_ACTION_FLAG_OFST 20
19272 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_FILTER_ACTION_FLAG_LBN 19
19273 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_FILTER_ACTION_FLAG_WIDTH 1
19274 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_FILTER_ACTION_MARK_OFST 20
19275 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_FILTER_ACTION_MARK_LBN 20
19276 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_FILTER_ACTION_MARK_WIDTH 1
19277 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_EQUAL_STRIDE_SUPER_BUFFER_OFST 20
19278 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_EQUAL_STRIDE_SUPER_BUFFER_LBN 21
19279 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_EQUAL_STRIDE_SUPER_BUFFER_WIDTH 1
19280 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_EQUAL_STRIDE_PACKED_STREAM_OFST 20
19281 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_EQUAL_STRIDE_PACKED_STREAM_LBN 21
19282 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_EQUAL_STRIDE_PACKED_STREAM_WIDTH 1
19283 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_L3XUDP_SUPPORT_OFST 20
19284 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_L3XUDP_SUPPORT_LBN 22
19285 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_L3XUDP_SUPPORT_WIDTH 1
19286 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_FW_SUBVARIANT_NO_TX_CSUM_OFST 20
19287 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_FW_SUBVARIANT_NO_TX_CSUM_LBN 23
19288 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_FW_SUBVARIANT_NO_TX_CSUM_WIDTH 1
19289 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_VI_SPREADING_OFST 20
19290 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_VI_SPREADING_LBN 24
19291 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_VI_SPREADING_WIDTH 1
19292 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RXDP_HLB_IDLE_OFST 20
19293 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RXDP_HLB_IDLE_LBN 25
19294 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RXDP_HLB_IDLE_WIDTH 1
19295 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_INIT_RXQ_NO_CONT_EV_OFST 20
19296 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_INIT_RXQ_NO_CONT_EV_LBN 26
19297 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_INIT_RXQ_NO_CONT_EV_WIDTH 1
19298 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_INIT_RXQ_WITH_BUFFER_SIZE_OFST 20
19299 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_INIT_RXQ_WITH_BUFFER_SIZE_LBN 27
19300 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_INIT_RXQ_WITH_BUFFER_SIZE_WIDTH 1
19301 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_BUNDLE_UPDATE_OFST 20
19302 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_BUNDLE_UPDATE_LBN 28
19303 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_BUNDLE_UPDATE_WIDTH 1
19304 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TX_TSO_V3_OFST 20
19305 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TX_TSO_V3_LBN 29
19306 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TX_TSO_V3_WIDTH 1
19307 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_DYNAMIC_SENSORS_OFST 20
19308 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_DYNAMIC_SENSORS_LBN 30
19309 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_DYNAMIC_SENSORS_WIDTH 1
19310 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_NVRAM_UPDATE_POLL_VERIFY_RESULT_OFST 20
19311 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_NVRAM_UPDATE_POLL_VERIFY_RESULT_LBN 31
19312 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_NVRAM_UPDATE_POLL_VERIFY_RESULT_WIDTH 1
19313 /* Number of FATSOv2 contexts per datapath supported by this NIC (when
19314  * TX_TSO_V2 == 1). Not present on older firmware (check the length).
19315  */
19316 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TX_TSO_V2_N_CONTEXTS_OFST 24
19317 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TX_TSO_V2_N_CONTEXTS_LEN 2
19318 /* One byte per PF containing the number of the external port assigned to this
19319  * PF, indexed by PF number. Special values indicate that a PF is either not
19320  * present or not assigned.
19321  */
19322 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_PFS_TO_PORTS_ASSIGNMENT_OFST 26
19323 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_PFS_TO_PORTS_ASSIGNMENT_LEN 1
19324 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_PFS_TO_PORTS_ASSIGNMENT_NUM 16
19325 /* enum: The caller is not permitted to access information on this PF. */
19326 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_ACCESS_NOT_PERMITTED 0xff
19327 /* enum: PF does not exist. */
19328 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_PF_NOT_PRESENT 0xfe
19329 /* enum: PF does exist but is not assigned to any external port. */
19330 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_PF_NOT_ASSIGNED 0xfd
19331 /* enum: This value indicates that PF is assigned, but it cannot be expressed
19332  * in this field. It is intended for a possible future situation where a more
19333  * complex scheme of PFs to ports mapping is being used. The future driver
19334  * should look for a new field supporting the new scheme. The current/old
19335  * driver should treat this value as PF_NOT_ASSIGNED.
19336  */
19337 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_INCOMPATIBLE_ASSIGNMENT 0xfc
19338 /* One byte per PF containing the number of its VFs, indexed by PF number. A
19339  * special value indicates that a PF is not present.
19340  */
19341 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_NUM_VFS_PER_PF_OFST 42
19342 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_NUM_VFS_PER_PF_LEN 1
19343 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_NUM_VFS_PER_PF_NUM 16
19344 /* enum: The caller is not permitted to access information on this PF. */
19345 /*               MC_CMD_GET_CAPABILITIES_V10_OUT_ACCESS_NOT_PERMITTED 0xff */
19346 /* enum: PF does not exist. */
19347 /*               MC_CMD_GET_CAPABILITIES_V10_OUT_PF_NOT_PRESENT 0xfe */
19348 /* Number of VIs available for each external port */
19349 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_NUM_VIS_PER_PORT_OFST 58
19350 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_NUM_VIS_PER_PORT_LEN 2
19351 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_NUM_VIS_PER_PORT_NUM 4
19352 /* Size of RX descriptor cache expressed as binary logarithm The actual size
19353  * equals (2 ^ RX_DESC_CACHE_SIZE)
19354  */
19355 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RX_DESC_CACHE_SIZE_OFST 66
19356 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RX_DESC_CACHE_SIZE_LEN 1
19357 /* Size of TX descriptor cache expressed as binary logarithm The actual size
19358  * equals (2 ^ TX_DESC_CACHE_SIZE)
19359  */
19360 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TX_DESC_CACHE_SIZE_OFST 67
19361 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TX_DESC_CACHE_SIZE_LEN 1
19362 /* Total number of available PIO buffers */
19363 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_NUM_PIO_BUFFS_OFST 68
19364 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_NUM_PIO_BUFFS_LEN 2
19365 /* Size of a single PIO buffer */
19366 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_SIZE_PIO_BUFF_OFST 70
19367 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_SIZE_PIO_BUFF_LEN 2
19368 /* On chips later than Medford the amount of address space assigned to each VI
19369  * is configurable. This is a global setting that the driver must query to
19370  * discover the VI to address mapping. Cut-through PIO (CTPIO) is not available
19371  * with 8k VI windows.
19372  */
19373 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_VI_WINDOW_MODE_OFST 72
19374 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_VI_WINDOW_MODE_LEN 1
19375 /* enum: Each VI occupies 8k as on Huntington and Medford. PIO is at offset 4k.
19376  * CTPIO is not mapped.
19377  */
19378 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_VI_WINDOW_MODE_8K 0x0
19379 /* enum: Each VI occupies 16k. PIO is at offset 4k. CTPIO is at offset 12k. */
19380 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_VI_WINDOW_MODE_16K 0x1
19381 /* enum: Each VI occupies 64k. PIO is at offset 4k. CTPIO is at offset 12k. */
19382 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_VI_WINDOW_MODE_64K 0x2
19383 /* Number of vFIFOs per adapter that can be used for VFIFO Stuffing
19384  * (SF-115995-SW) in the present configuration of firmware and port mode.
19385  */
19386 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_VFIFO_STUFFING_NUM_VFIFOS_OFST 73
19387 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_VFIFO_STUFFING_NUM_VFIFOS_LEN 1
19388 /* Number of buffers per adapter that can be used for VFIFO Stuffing
19389  * (SF-115995-SW) in the present configuration of firmware and port mode.
19390  */
19391 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_VFIFO_STUFFING_NUM_CP_BUFFERS_OFST 74
19392 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_VFIFO_STUFFING_NUM_CP_BUFFERS_LEN 2
19393 /* Entry count in the MAC stats array, including the final GENERATION_END
19394  * entry. For MAC stats DMA, drivers should allocate a buffer large enough to
19395  * hold at least this many 64-bit stats values, if they wish to receive all
19396  * available stats. If the buffer is shorter than MAC_STATS_NUM_STATS * 8, the
19397  * stats array returned will be truncated.
19398  */
19399 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_MAC_STATS_NUM_STATS_OFST 76
19400 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_MAC_STATS_NUM_STATS_LEN 2
19401 /* Maximum supported value for MC_CMD_FILTER_OP_V3/MATCH_MARK_VALUE. This field
19402  * will only be non-zero if MC_CMD_GET_CAPABILITIES/FILTER_ACTION_MARK is set.
19403  */
19404 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_FILTER_ACTION_MARK_MAX_OFST 80
19405 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_FILTER_ACTION_MARK_MAX_LEN 4
19406 /* On devices where the INIT_RXQ_WITH_BUFFER_SIZE flag (in
19407  * GET_CAPABILITIES_OUT_V2) is set, drivers have to specify a buffer size when
19408  * they create an RX queue. Due to hardware limitations, only a small number of
19409  * different buffer sizes may be available concurrently. Nonzero entries in
19410  * this array are the sizes of buffers which the system guarantees will be
19411  * available for use. If the list is empty, there are no limitations on
19412  * concurrent buffer sizes.
19413  */
19414 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_GUARANTEED_RX_BUFFER_SIZES_OFST 84
19415 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_GUARANTEED_RX_BUFFER_SIZES_LEN 4
19416 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_GUARANTEED_RX_BUFFER_SIZES_NUM 16
19417 /* Third word of flags. Not present on older firmware (check the length). */
19418 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_FLAGS3_OFST 148
19419 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_FLAGS3_LEN 4
19420 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_WOL_ETHERWAKE_OFST 148
19421 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_WOL_ETHERWAKE_LBN 0
19422 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_WOL_ETHERWAKE_WIDTH 1
19423 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RSS_EVEN_SPREADING_OFST 148
19424 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RSS_EVEN_SPREADING_LBN 1
19425 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RSS_EVEN_SPREADING_WIDTH 1
19426 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RSS_SELECTABLE_TABLE_SIZE_OFST 148
19427 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RSS_SELECTABLE_TABLE_SIZE_LBN 2
19428 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RSS_SELECTABLE_TABLE_SIZE_WIDTH 1
19429 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_MAE_SUPPORTED_OFST 148
19430 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_MAE_SUPPORTED_LBN 3
19431 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_MAE_SUPPORTED_WIDTH 1
19432 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_VDPA_SUPPORTED_OFST 148
19433 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_VDPA_SUPPORTED_LBN 4
19434 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_VDPA_SUPPORTED_WIDTH 1
19435 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RX_VLAN_STRIPPING_PER_ENCAP_RULE_OFST 148
19436 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RX_VLAN_STRIPPING_PER_ENCAP_RULE_LBN 5
19437 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RX_VLAN_STRIPPING_PER_ENCAP_RULE_WIDTH 1
19438 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_EXTENDED_WIDTH_EVQS_SUPPORTED_OFST 148
19439 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_EXTENDED_WIDTH_EVQS_SUPPORTED_LBN 6
19440 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_EXTENDED_WIDTH_EVQS_SUPPORTED_WIDTH 1
19441 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_UNSOL_EV_CREDIT_SUPPORTED_OFST 148
19442 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_UNSOL_EV_CREDIT_SUPPORTED_LBN 7
19443 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_UNSOL_EV_CREDIT_SUPPORTED_WIDTH 1
19444 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_ENCAPSULATED_MCDI_SUPPORTED_OFST 148
19445 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_ENCAPSULATED_MCDI_SUPPORTED_LBN 8
19446 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_ENCAPSULATED_MCDI_SUPPORTED_WIDTH 1
19447 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_EXTERNAL_MAE_SUPPORTED_OFST 148
19448 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_EXTERNAL_MAE_SUPPORTED_LBN 9
19449 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_EXTERNAL_MAE_SUPPORTED_WIDTH 1
19450 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_NVRAM_UPDATE_ABORT_SUPPORTED_OFST 148
19451 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_NVRAM_UPDATE_ABORT_SUPPORTED_LBN 10
19452 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_NVRAM_UPDATE_ABORT_SUPPORTED_WIDTH 1
19453 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_MAE_ACTION_SET_ALLOC_V2_SUPPORTED_OFST 148
19454 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_MAE_ACTION_SET_ALLOC_V2_SUPPORTED_LBN 11
19455 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_MAE_ACTION_SET_ALLOC_V2_SUPPORTED_WIDTH 1
19456 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RSS_STEER_ON_OUTER_SUPPORTED_OFST 148
19457 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RSS_STEER_ON_OUTER_SUPPORTED_LBN 12
19458 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RSS_STEER_ON_OUTER_SUPPORTED_WIDTH 1
19459 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_MAE_ACTION_SET_ALLOC_V3_SUPPORTED_OFST 148
19460 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_MAE_ACTION_SET_ALLOC_V3_SUPPORTED_LBN 13
19461 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_MAE_ACTION_SET_ALLOC_V3_SUPPORTED_WIDTH 1
19462 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_DYNAMIC_MPORT_JOURNAL_OFST 148
19463 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_DYNAMIC_MPORT_JOURNAL_LBN 14
19464 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_DYNAMIC_MPORT_JOURNAL_WIDTH 1
19465 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_CLIENT_CMD_VF_PROXY_OFST 148
19466 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_CLIENT_CMD_VF_PROXY_LBN 15
19467 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_CLIENT_CMD_VF_PROXY_WIDTH 1
19468 /* These bits are reserved for communicating test-specific capabilities to
19469  * host-side test software. All production drivers should treat this field as
19470  * opaque.
19471  */
19472 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TEST_RESERVED_OFST 152
19473 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TEST_RESERVED_LEN 8
19474 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TEST_RESERVED_LO_OFST 152
19475 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TEST_RESERVED_LO_LEN 4
19476 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TEST_RESERVED_LO_LBN 1216
19477 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TEST_RESERVED_LO_WIDTH 32
19478 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TEST_RESERVED_HI_OFST 156
19479 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TEST_RESERVED_HI_LEN 4
19480 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TEST_RESERVED_HI_LBN 1248
19481 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_TEST_RESERVED_HI_WIDTH 32
19482 /* The minimum size (in table entries) of indirection table to be allocated
19483  * from the pool for an RSS context. Note that the table size used must be a
19484  * power of 2.
19485  */
19486 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RSS_MIN_INDIRECTION_TABLE_SIZE_OFST 160
19487 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RSS_MIN_INDIRECTION_TABLE_SIZE_LEN 4
19488 /* The maximum size (in table entries) of indirection table to be allocated
19489  * from the pool for an RSS context. Note that the table size used must be a
19490  * power of 2.
19491  */
19492 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RSS_MAX_INDIRECTION_TABLE_SIZE_OFST 164
19493 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RSS_MAX_INDIRECTION_TABLE_SIZE_LEN 4
19494 /* The maximum number of queues that can be used by an RSS context in exclusive
19495  * mode. In exclusive mode the context has a configurable indirection table and
19496  * a configurable RSS key.
19497  */
19498 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RSS_MAX_INDIRECTION_QUEUES_OFST 168
19499 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RSS_MAX_INDIRECTION_QUEUES_LEN 4
19500 /* The maximum number of queues that can be used by an RSS context in even-
19501  * spreading mode. In even-spreading mode the context has no indirection table
19502  * but it does have a configurable RSS key.
19503  */
19504 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RSS_MAX_EVEN_SPREADING_QUEUES_OFST 172
19505 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RSS_MAX_EVEN_SPREADING_QUEUES_LEN 4
19506 /* The total number of RSS contexts supported. Note that the number of
19507  * available contexts using indirection tables is also limited by the
19508  * availability of indirection table space allocated from a common pool.
19509  */
19510 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RSS_NUM_CONTEXTS_OFST 176
19511 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RSS_NUM_CONTEXTS_LEN 4
19512 /* The total amount of indirection table space that can be shared between RSS
19513  * contexts.
19514  */
19515 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RSS_TABLE_POOL_SIZE_OFST 180
19516 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_RSS_TABLE_POOL_SIZE_LEN 4
19517 /* A bitmap of the queue sizes the device can provide, where bit N being set
19518  * indicates that 2**N is a valid size. The device may be limited in the number
19519  * of different queue sizes that can exist simultaneously, so a bit being set
19520  * here does not guarantee that an attempt to create a queue of that size will
19521  * succeed.
19522  */
19523 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_SUPPORTED_QUEUE_SIZES_OFST 184
19524 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_SUPPORTED_QUEUE_SIZES_LEN 4
19525 /* A bitmap of queue sizes that are always available, in the same format as
19526  * SUPPORTED_QUEUE_SIZES. Attempting to create a queue with one of these sizes
19527  * will never fail due to unavailability of the requested size.
19528  */
19529 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_GUARANTEED_QUEUE_SIZES_OFST 188
19530 #define	MC_CMD_GET_CAPABILITIES_V10_OUT_GUARANTEED_QUEUE_SIZES_LEN 4
19531 
19532 
19533 /***********************************/
19534 /* MC_CMD_V2_EXTN
19535  * Encapsulation for a v2 extended command
19536  */
19537 #define	MC_CMD_V2_EXTN 0x7f
19538 #define	MC_CMD_V2_EXTN_MSGSET 0x7f
19539 
19540 /* MC_CMD_V2_EXTN_IN msgrequest */
19541 #define	MC_CMD_V2_EXTN_IN_LEN 4
19542 /* the extended command number */
19543 #define	MC_CMD_V2_EXTN_IN_EXTENDED_CMD_LBN 0
19544 #define	MC_CMD_V2_EXTN_IN_EXTENDED_CMD_WIDTH 15
19545 #define	MC_CMD_V2_EXTN_IN_UNUSED_LBN 15
19546 #define	MC_CMD_V2_EXTN_IN_UNUSED_WIDTH 1
19547 /* the actual length of the encapsulated command (which is not in the v1
19548  * header)
19549  */
19550 #define	MC_CMD_V2_EXTN_IN_ACTUAL_LEN_LBN 16
19551 #define	MC_CMD_V2_EXTN_IN_ACTUAL_LEN_WIDTH 10
19552 #define	MC_CMD_V2_EXTN_IN_UNUSED2_LBN 26
19553 #define	MC_CMD_V2_EXTN_IN_UNUSED2_WIDTH 2
19554 /* Type of command/response */
19555 #define	MC_CMD_V2_EXTN_IN_MESSAGE_TYPE_LBN 28
19556 #define	MC_CMD_V2_EXTN_IN_MESSAGE_TYPE_WIDTH 4
19557 /* enum: MCDI command directed to or response originating from the MC. */
19558 #define	MC_CMD_V2_EXTN_IN_MCDI_MESSAGE_TYPE_MC 0x0
19559 /* enum: MCDI command directed to a TSA controller. MCDI responses of this type
19560  * are not defined.
19561  */
19562 #define	MC_CMD_V2_EXTN_IN_MCDI_MESSAGE_TYPE_TSA 0x1
19563 /* enum: MCDI command used for platform management. Typically, these commands
19564  * are used for low-level operations directed at the platform as a whole (e.g.
19565  * MMIO device enumeration) rather than individual functions and use a
19566  * dedicated comms channel (e.g. RPmsg/IPI). May be handled by the same or
19567  * different CPU as MCDI_MESSAGE_TYPE_MC.
19568  */
19569 #define	MC_CMD_V2_EXTN_IN_MCDI_MESSAGE_TYPE_PLATFORM 0x2
19570 
19571 
19572 /***********************************/
19573 /* MC_CMD_TCM_BUCKET_ALLOC
19574  * Allocate a pacer bucket (for qau rp or a snapper test)
19575  */
19576 #define	MC_CMD_TCM_BUCKET_ALLOC 0xb2
19577 #define	MC_CMD_TCM_BUCKET_ALLOC_MSGSET 0xb2
19578 #undef	MC_CMD_0xb2_PRIVILEGE_CTG
19579 
19580 #define	MC_CMD_0xb2_PRIVILEGE_CTG SRIOV_CTG_GENERAL
19581 
19582 /* MC_CMD_TCM_BUCKET_ALLOC_IN msgrequest */
19583 #define	MC_CMD_TCM_BUCKET_ALLOC_IN_LEN 0
19584 
19585 /* MC_CMD_TCM_BUCKET_ALLOC_OUT msgresponse */
19586 #define	MC_CMD_TCM_BUCKET_ALLOC_OUT_LEN 4
19587 /* the bucket id */
19588 #define	MC_CMD_TCM_BUCKET_ALLOC_OUT_BUCKET_OFST 0
19589 #define	MC_CMD_TCM_BUCKET_ALLOC_OUT_BUCKET_LEN 4
19590 
19591 
19592 /***********************************/
19593 /* MC_CMD_TCM_BUCKET_FREE
19594  * Free a pacer bucket
19595  */
19596 #define	MC_CMD_TCM_BUCKET_FREE 0xb3
19597 #define	MC_CMD_TCM_BUCKET_FREE_MSGSET 0xb3
19598 #undef	MC_CMD_0xb3_PRIVILEGE_CTG
19599 
19600 #define	MC_CMD_0xb3_PRIVILEGE_CTG SRIOV_CTG_GENERAL
19601 
19602 /* MC_CMD_TCM_BUCKET_FREE_IN msgrequest */
19603 #define	MC_CMD_TCM_BUCKET_FREE_IN_LEN 4
19604 /* the bucket id */
19605 #define	MC_CMD_TCM_BUCKET_FREE_IN_BUCKET_OFST 0
19606 #define	MC_CMD_TCM_BUCKET_FREE_IN_BUCKET_LEN 4
19607 
19608 /* MC_CMD_TCM_BUCKET_FREE_OUT msgresponse */
19609 #define	MC_CMD_TCM_BUCKET_FREE_OUT_LEN 0
19610 
19611 
19612 /***********************************/
19613 /* MC_CMD_TCM_BUCKET_INIT
19614  * Initialise pacer bucket with a given rate
19615  */
19616 #define	MC_CMD_TCM_BUCKET_INIT 0xb4
19617 #define	MC_CMD_TCM_BUCKET_INIT_MSGSET 0xb4
19618 #undef	MC_CMD_0xb4_PRIVILEGE_CTG
19619 
19620 #define	MC_CMD_0xb4_PRIVILEGE_CTG SRIOV_CTG_GENERAL
19621 
19622 /* MC_CMD_TCM_BUCKET_INIT_IN msgrequest */
19623 #define	MC_CMD_TCM_BUCKET_INIT_IN_LEN 8
19624 /* the bucket id */
19625 #define	MC_CMD_TCM_BUCKET_INIT_IN_BUCKET_OFST 0
19626 #define	MC_CMD_TCM_BUCKET_INIT_IN_BUCKET_LEN 4
19627 /* the rate in mbps */
19628 #define	MC_CMD_TCM_BUCKET_INIT_IN_RATE_OFST 4
19629 #define	MC_CMD_TCM_BUCKET_INIT_IN_RATE_LEN 4
19630 
19631 /* MC_CMD_TCM_BUCKET_INIT_EXT_IN msgrequest */
19632 #define	MC_CMD_TCM_BUCKET_INIT_EXT_IN_LEN 12
19633 /* the bucket id */
19634 #define	MC_CMD_TCM_BUCKET_INIT_EXT_IN_BUCKET_OFST 0
19635 #define	MC_CMD_TCM_BUCKET_INIT_EXT_IN_BUCKET_LEN 4
19636 /* the rate in mbps */
19637 #define	MC_CMD_TCM_BUCKET_INIT_EXT_IN_RATE_OFST 4
19638 #define	MC_CMD_TCM_BUCKET_INIT_EXT_IN_RATE_LEN 4
19639 /* the desired maximum fill level */
19640 #define	MC_CMD_TCM_BUCKET_INIT_EXT_IN_MAX_FILL_OFST 8
19641 #define	MC_CMD_TCM_BUCKET_INIT_EXT_IN_MAX_FILL_LEN 4
19642 
19643 /* MC_CMD_TCM_BUCKET_INIT_OUT msgresponse */
19644 #define	MC_CMD_TCM_BUCKET_INIT_OUT_LEN 0
19645 
19646 
19647 /***********************************/
19648 /* MC_CMD_TCM_TXQ_INIT
19649  * Initialise txq in pacer with given options or set options
19650  */
19651 #define	MC_CMD_TCM_TXQ_INIT 0xb5
19652 #define	MC_CMD_TCM_TXQ_INIT_MSGSET 0xb5
19653 #undef	MC_CMD_0xb5_PRIVILEGE_CTG
19654 
19655 #define	MC_CMD_0xb5_PRIVILEGE_CTG SRIOV_CTG_GENERAL
19656 
19657 /* MC_CMD_TCM_TXQ_INIT_IN msgrequest */
19658 #define	MC_CMD_TCM_TXQ_INIT_IN_LEN 28
19659 /* the txq id */
19660 #define	MC_CMD_TCM_TXQ_INIT_IN_QID_OFST 0
19661 #define	MC_CMD_TCM_TXQ_INIT_IN_QID_LEN 4
19662 /* the static priority associated with the txq */
19663 #define	MC_CMD_TCM_TXQ_INIT_IN_LABEL_OFST 4
19664 #define	MC_CMD_TCM_TXQ_INIT_IN_LABEL_LEN 4
19665 /* bitmask of the priority queues this txq is inserted into when inserted. */
19666 #define	MC_CMD_TCM_TXQ_INIT_IN_PQ_FLAGS_OFST 8
19667 #define	MC_CMD_TCM_TXQ_INIT_IN_PQ_FLAGS_LEN 4
19668 #define	MC_CMD_TCM_TXQ_INIT_IN_PQ_FLAG_GUARANTEED_OFST 8
19669 #define	MC_CMD_TCM_TXQ_INIT_IN_PQ_FLAG_GUARANTEED_LBN 0
19670 #define	MC_CMD_TCM_TXQ_INIT_IN_PQ_FLAG_GUARANTEED_WIDTH 1
19671 #define	MC_CMD_TCM_TXQ_INIT_IN_PQ_FLAG_NORMAL_OFST 8
19672 #define	MC_CMD_TCM_TXQ_INIT_IN_PQ_FLAG_NORMAL_LBN 1
19673 #define	MC_CMD_TCM_TXQ_INIT_IN_PQ_FLAG_NORMAL_WIDTH 1
19674 #define	MC_CMD_TCM_TXQ_INIT_IN_PQ_FLAG_LOW_OFST 8
19675 #define	MC_CMD_TCM_TXQ_INIT_IN_PQ_FLAG_LOW_LBN 2
19676 #define	MC_CMD_TCM_TXQ_INIT_IN_PQ_FLAG_LOW_WIDTH 1
19677 /* the reaction point (RP) bucket */
19678 #define	MC_CMD_TCM_TXQ_INIT_IN_RP_BKT_OFST 12
19679 #define	MC_CMD_TCM_TXQ_INIT_IN_RP_BKT_LEN 4
19680 /* an already reserved bucket (typically set to bucket associated with outer
19681  * vswitch)
19682  */
19683 #define	MC_CMD_TCM_TXQ_INIT_IN_MAX_BKT1_OFST 16
19684 #define	MC_CMD_TCM_TXQ_INIT_IN_MAX_BKT1_LEN 4
19685 /* an already reserved bucket (typically set to bucket associated with inner
19686  * vswitch)
19687  */
19688 #define	MC_CMD_TCM_TXQ_INIT_IN_MAX_BKT2_OFST 20
19689 #define	MC_CMD_TCM_TXQ_INIT_IN_MAX_BKT2_LEN 4
19690 /* the min bucket (typically for ETS/minimum bandwidth) */
19691 #define	MC_CMD_TCM_TXQ_INIT_IN_MIN_BKT_OFST 24
19692 #define	MC_CMD_TCM_TXQ_INIT_IN_MIN_BKT_LEN 4
19693 
19694 /* MC_CMD_TCM_TXQ_INIT_EXT_IN msgrequest */
19695 #define	MC_CMD_TCM_TXQ_INIT_EXT_IN_LEN 32
19696 /* the txq id */
19697 #define	MC_CMD_TCM_TXQ_INIT_EXT_IN_QID_OFST 0
19698 #define	MC_CMD_TCM_TXQ_INIT_EXT_IN_QID_LEN 4
19699 /* the static priority associated with the txq */
19700 #define	MC_CMD_TCM_TXQ_INIT_EXT_IN_LABEL_NORMAL_OFST 4
19701 #define	MC_CMD_TCM_TXQ_INIT_EXT_IN_LABEL_NORMAL_LEN 4
19702 /* bitmask of the priority queues this txq is inserted into when inserted. */
19703 #define	MC_CMD_TCM_TXQ_INIT_EXT_IN_PQ_FLAGS_OFST 8
19704 #define	MC_CMD_TCM_TXQ_INIT_EXT_IN_PQ_FLAGS_LEN 4
19705 #define	MC_CMD_TCM_TXQ_INIT_EXT_IN_PQ_FLAG_GUARANTEED_OFST 8
19706 #define	MC_CMD_TCM_TXQ_INIT_EXT_IN_PQ_FLAG_GUARANTEED_LBN 0
19707 #define	MC_CMD_TCM_TXQ_INIT_EXT_IN_PQ_FLAG_GUARANTEED_WIDTH 1
19708 #define	MC_CMD_TCM_TXQ_INIT_EXT_IN_PQ_FLAG_NORMAL_OFST 8
19709 #define	MC_CMD_TCM_TXQ_INIT_EXT_IN_PQ_FLAG_NORMAL_LBN 1
19710 #define	MC_CMD_TCM_TXQ_INIT_EXT_IN_PQ_FLAG_NORMAL_WIDTH 1
19711 #define	MC_CMD_TCM_TXQ_INIT_EXT_IN_PQ_FLAG_LOW_OFST 8
19712 #define	MC_CMD_TCM_TXQ_INIT_EXT_IN_PQ_FLAG_LOW_LBN 2
19713 #define	MC_CMD_TCM_TXQ_INIT_EXT_IN_PQ_FLAG_LOW_WIDTH 1
19714 /* the reaction point (RP) bucket */
19715 #define	MC_CMD_TCM_TXQ_INIT_EXT_IN_RP_BKT_OFST 12
19716 #define	MC_CMD_TCM_TXQ_INIT_EXT_IN_RP_BKT_LEN 4
19717 /* an already reserved bucket (typically set to bucket associated with outer
19718  * vswitch)
19719  */
19720 #define	MC_CMD_TCM_TXQ_INIT_EXT_IN_MAX_BKT1_OFST 16
19721 #define	MC_CMD_TCM_TXQ_INIT_EXT_IN_MAX_BKT1_LEN 4
19722 /* an already reserved bucket (typically set to bucket associated with inner
19723  * vswitch)
19724  */
19725 #define	MC_CMD_TCM_TXQ_INIT_EXT_IN_MAX_BKT2_OFST 20
19726 #define	MC_CMD_TCM_TXQ_INIT_EXT_IN_MAX_BKT2_LEN 4
19727 /* the min bucket (typically for ETS/minimum bandwidth) */
19728 #define	MC_CMD_TCM_TXQ_INIT_EXT_IN_MIN_BKT_OFST 24
19729 #define	MC_CMD_TCM_TXQ_INIT_EXT_IN_MIN_BKT_LEN 4
19730 /* the static priority associated with the txq */
19731 #define	MC_CMD_TCM_TXQ_INIT_EXT_IN_LABEL_GUARANTEED_OFST 28
19732 #define	MC_CMD_TCM_TXQ_INIT_EXT_IN_LABEL_GUARANTEED_LEN 4
19733 
19734 /* MC_CMD_TCM_TXQ_INIT_OUT msgresponse */
19735 #define	MC_CMD_TCM_TXQ_INIT_OUT_LEN 0
19736 
19737 
19738 /***********************************/
19739 /* MC_CMD_LINK_PIOBUF
19740  * Link a push I/O buffer to a TxQ
19741  */
19742 #define	MC_CMD_LINK_PIOBUF 0x92
19743 #define	MC_CMD_LINK_PIOBUF_MSGSET 0x92
19744 #undef	MC_CMD_0x92_PRIVILEGE_CTG
19745 
19746 #define	MC_CMD_0x92_PRIVILEGE_CTG SRIOV_CTG_ONLOAD
19747 
19748 /* MC_CMD_LINK_PIOBUF_IN msgrequest */
19749 #define	MC_CMD_LINK_PIOBUF_IN_LEN 8
19750 /* Handle for allocated push I/O buffer. */
19751 #define	MC_CMD_LINK_PIOBUF_IN_PIOBUF_HANDLE_OFST 0
19752 #define	MC_CMD_LINK_PIOBUF_IN_PIOBUF_HANDLE_LEN 4
19753 /* Function Local Instance (VI) number which has a TxQ allocated to it. */
19754 #define	MC_CMD_LINK_PIOBUF_IN_TXQ_INSTANCE_OFST 4
19755 #define	MC_CMD_LINK_PIOBUF_IN_TXQ_INSTANCE_LEN 4
19756 
19757 /* MC_CMD_LINK_PIOBUF_OUT msgresponse */
19758 #define	MC_CMD_LINK_PIOBUF_OUT_LEN 0
19759 
19760 
19761 /***********************************/
19762 /* MC_CMD_UNLINK_PIOBUF
19763  * Unlink a push I/O buffer from a TxQ
19764  */
19765 #define	MC_CMD_UNLINK_PIOBUF 0x93
19766 #define	MC_CMD_UNLINK_PIOBUF_MSGSET 0x93
19767 #undef	MC_CMD_0x93_PRIVILEGE_CTG
19768 
19769 #define	MC_CMD_0x93_PRIVILEGE_CTG SRIOV_CTG_ONLOAD
19770 
19771 /* MC_CMD_UNLINK_PIOBUF_IN msgrequest */
19772 #define	MC_CMD_UNLINK_PIOBUF_IN_LEN 4
19773 /* Function Local Instance (VI) number. */
19774 #define	MC_CMD_UNLINK_PIOBUF_IN_TXQ_INSTANCE_OFST 0
19775 #define	MC_CMD_UNLINK_PIOBUF_IN_TXQ_INSTANCE_LEN 4
19776 
19777 /* MC_CMD_UNLINK_PIOBUF_OUT msgresponse */
19778 #define	MC_CMD_UNLINK_PIOBUF_OUT_LEN 0
19779 
19780 
19781 /***********************************/
19782 /* MC_CMD_VSWITCH_ALLOC
19783  * allocate and initialise a v-switch.
19784  */
19785 #define	MC_CMD_VSWITCH_ALLOC 0x94
19786 #define	MC_CMD_VSWITCH_ALLOC_MSGSET 0x94
19787 #undef	MC_CMD_0x94_PRIVILEGE_CTG
19788 
19789 #define	MC_CMD_0x94_PRIVILEGE_CTG SRIOV_CTG_GENERAL
19790 
19791 /* MC_CMD_VSWITCH_ALLOC_IN msgrequest */
19792 #define	MC_CMD_VSWITCH_ALLOC_IN_LEN 16
19793 /* The port to connect to the v-switch's upstream port. */
19794 #define	MC_CMD_VSWITCH_ALLOC_IN_UPSTREAM_PORT_ID_OFST 0
19795 #define	MC_CMD_VSWITCH_ALLOC_IN_UPSTREAM_PORT_ID_LEN 4
19796 /* The type of v-switch to create. */
19797 #define	MC_CMD_VSWITCH_ALLOC_IN_TYPE_OFST 4
19798 #define	MC_CMD_VSWITCH_ALLOC_IN_TYPE_LEN 4
19799 /* enum: VLAN */
19800 #define	MC_CMD_VSWITCH_ALLOC_IN_VSWITCH_TYPE_VLAN 0x1
19801 /* enum: VEB */
19802 #define	MC_CMD_VSWITCH_ALLOC_IN_VSWITCH_TYPE_VEB 0x2
19803 /* enum: VEPA (obsolete) */
19804 #define	MC_CMD_VSWITCH_ALLOC_IN_VSWITCH_TYPE_VEPA 0x3
19805 /* enum: MUX */
19806 #define	MC_CMD_VSWITCH_ALLOC_IN_VSWITCH_TYPE_MUX 0x4
19807 /* enum: Snapper specific; semantics TBD */
19808 #define	MC_CMD_VSWITCH_ALLOC_IN_VSWITCH_TYPE_TEST 0x5
19809 /* Flags controlling v-port creation */
19810 #define	MC_CMD_VSWITCH_ALLOC_IN_FLAGS_OFST 8
19811 #define	MC_CMD_VSWITCH_ALLOC_IN_FLAGS_LEN 4
19812 #define	MC_CMD_VSWITCH_ALLOC_IN_FLAG_AUTO_PORT_OFST 8
19813 #define	MC_CMD_VSWITCH_ALLOC_IN_FLAG_AUTO_PORT_LBN 0
19814 #define	MC_CMD_VSWITCH_ALLOC_IN_FLAG_AUTO_PORT_WIDTH 1
19815 /* The number of VLAN tags to allow for attached v-ports. For VLAN aggregators,
19816  * this must be one or greated, and the attached v-ports must have exactly this
19817  * number of tags. For other v-switch types, this must be zero of greater, and
19818  * is an upper limit on the number of VLAN tags for attached v-ports. An error
19819  * will be returned if existing configuration means we can't support attached
19820  * v-ports with this number of tags.
19821  */
19822 #define	MC_CMD_VSWITCH_ALLOC_IN_NUM_VLAN_TAGS_OFST 12
19823 #define	MC_CMD_VSWITCH_ALLOC_IN_NUM_VLAN_TAGS_LEN 4
19824 
19825 /* MC_CMD_VSWITCH_ALLOC_OUT msgresponse */
19826 #define	MC_CMD_VSWITCH_ALLOC_OUT_LEN 0
19827 
19828 
19829 /***********************************/
19830 /* MC_CMD_VSWITCH_FREE
19831  * de-allocate a v-switch.
19832  */
19833 #define	MC_CMD_VSWITCH_FREE 0x95
19834 #define	MC_CMD_VSWITCH_FREE_MSGSET 0x95
19835 #undef	MC_CMD_0x95_PRIVILEGE_CTG
19836 
19837 #define	MC_CMD_0x95_PRIVILEGE_CTG SRIOV_CTG_GENERAL
19838 
19839 /* MC_CMD_VSWITCH_FREE_IN msgrequest */
19840 #define	MC_CMD_VSWITCH_FREE_IN_LEN 4
19841 /* The port to which the v-switch is connected. */
19842 #define	MC_CMD_VSWITCH_FREE_IN_UPSTREAM_PORT_ID_OFST 0
19843 #define	MC_CMD_VSWITCH_FREE_IN_UPSTREAM_PORT_ID_LEN 4
19844 
19845 /* MC_CMD_VSWITCH_FREE_OUT msgresponse */
19846 #define	MC_CMD_VSWITCH_FREE_OUT_LEN 0
19847 
19848 
19849 /***********************************/
19850 /* MC_CMD_VSWITCH_QUERY
19851  * read some config of v-switch. For now this command is an empty placeholder.
19852  * It may be used to check if a v-switch is connected to a given EVB port (if
19853  * not, then the command returns ENOENT).
19854  */
19855 #define	MC_CMD_VSWITCH_QUERY 0x63
19856 #define	MC_CMD_VSWITCH_QUERY_MSGSET 0x63
19857 #undef	MC_CMD_0x63_PRIVILEGE_CTG
19858 
19859 #define	MC_CMD_0x63_PRIVILEGE_CTG SRIOV_CTG_GENERAL
19860 
19861 /* MC_CMD_VSWITCH_QUERY_IN msgrequest */
19862 #define	MC_CMD_VSWITCH_QUERY_IN_LEN 4
19863 /* The port to which the v-switch is connected. */
19864 #define	MC_CMD_VSWITCH_QUERY_IN_UPSTREAM_PORT_ID_OFST 0
19865 #define	MC_CMD_VSWITCH_QUERY_IN_UPSTREAM_PORT_ID_LEN 4
19866 
19867 /* MC_CMD_VSWITCH_QUERY_OUT msgresponse */
19868 #define	MC_CMD_VSWITCH_QUERY_OUT_LEN 0
19869 
19870 
19871 /***********************************/
19872 /* MC_CMD_VPORT_ALLOC
19873  * allocate a v-port.
19874  */
19875 #define	MC_CMD_VPORT_ALLOC 0x96
19876 #define	MC_CMD_VPORT_ALLOC_MSGSET 0x96
19877 #undef	MC_CMD_0x96_PRIVILEGE_CTG
19878 
19879 #define	MC_CMD_0x96_PRIVILEGE_CTG SRIOV_CTG_GENERAL
19880 
19881 /* MC_CMD_VPORT_ALLOC_IN msgrequest */
19882 #define	MC_CMD_VPORT_ALLOC_IN_LEN 20
19883 /* The port to which the v-switch is connected. */
19884 #define	MC_CMD_VPORT_ALLOC_IN_UPSTREAM_PORT_ID_OFST 0
19885 #define	MC_CMD_VPORT_ALLOC_IN_UPSTREAM_PORT_ID_LEN 4
19886 /* The type of the new v-port. */
19887 #define	MC_CMD_VPORT_ALLOC_IN_TYPE_OFST 4
19888 #define	MC_CMD_VPORT_ALLOC_IN_TYPE_LEN 4
19889 /* enum: VLAN (obsolete) */
19890 #define	MC_CMD_VPORT_ALLOC_IN_VPORT_TYPE_VLAN 0x1
19891 /* enum: VEB (obsolete) */
19892 #define	MC_CMD_VPORT_ALLOC_IN_VPORT_TYPE_VEB 0x2
19893 /* enum: VEPA (obsolete) */
19894 #define	MC_CMD_VPORT_ALLOC_IN_VPORT_TYPE_VEPA 0x3
19895 /* enum: A normal v-port receives packets which match a specified MAC and/or
19896  * VLAN.
19897  */
19898 #define	MC_CMD_VPORT_ALLOC_IN_VPORT_TYPE_NORMAL 0x4
19899 /* enum: An expansion v-port packets traffic which don't match any other
19900  * v-port.
19901  */
19902 #define	MC_CMD_VPORT_ALLOC_IN_VPORT_TYPE_EXPANSION 0x5
19903 /* enum: An test v-port receives packets which match any filters installed by
19904  * its downstream components.
19905  */
19906 #define	MC_CMD_VPORT_ALLOC_IN_VPORT_TYPE_TEST 0x6
19907 /* Flags controlling v-port creation */
19908 #define	MC_CMD_VPORT_ALLOC_IN_FLAGS_OFST 8
19909 #define	MC_CMD_VPORT_ALLOC_IN_FLAGS_LEN 4
19910 #define	MC_CMD_VPORT_ALLOC_IN_FLAG_AUTO_PORT_OFST 8
19911 #define	MC_CMD_VPORT_ALLOC_IN_FLAG_AUTO_PORT_LBN 0
19912 #define	MC_CMD_VPORT_ALLOC_IN_FLAG_AUTO_PORT_WIDTH 1
19913 #define	MC_CMD_VPORT_ALLOC_IN_FLAG_VLAN_RESTRICT_OFST 8
19914 #define	MC_CMD_VPORT_ALLOC_IN_FLAG_VLAN_RESTRICT_LBN 1
19915 #define	MC_CMD_VPORT_ALLOC_IN_FLAG_VLAN_RESTRICT_WIDTH 1
19916 /* The number of VLAN tags to insert/remove. An error will be returned if
19917  * incompatible with the number of VLAN tags specified for the upstream
19918  * v-switch.
19919  */
19920 #define	MC_CMD_VPORT_ALLOC_IN_NUM_VLAN_TAGS_OFST 12
19921 #define	MC_CMD_VPORT_ALLOC_IN_NUM_VLAN_TAGS_LEN 4
19922 /* The actual VLAN tags to insert/remove */
19923 #define	MC_CMD_VPORT_ALLOC_IN_VLAN_TAGS_OFST 16
19924 #define	MC_CMD_VPORT_ALLOC_IN_VLAN_TAGS_LEN 4
19925 #define	MC_CMD_VPORT_ALLOC_IN_VLAN_TAG_0_OFST 16
19926 #define	MC_CMD_VPORT_ALLOC_IN_VLAN_TAG_0_LBN 0
19927 #define	MC_CMD_VPORT_ALLOC_IN_VLAN_TAG_0_WIDTH 16
19928 #define	MC_CMD_VPORT_ALLOC_IN_VLAN_TAG_1_OFST 16
19929 #define	MC_CMD_VPORT_ALLOC_IN_VLAN_TAG_1_LBN 16
19930 #define	MC_CMD_VPORT_ALLOC_IN_VLAN_TAG_1_WIDTH 16
19931 
19932 /* MC_CMD_VPORT_ALLOC_OUT msgresponse */
19933 #define	MC_CMD_VPORT_ALLOC_OUT_LEN 4
19934 /* The handle of the new v-port */
19935 #define	MC_CMD_VPORT_ALLOC_OUT_VPORT_ID_OFST 0
19936 #define	MC_CMD_VPORT_ALLOC_OUT_VPORT_ID_LEN 4
19937 
19938 
19939 /***********************************/
19940 /* MC_CMD_VPORT_FREE
19941  * de-allocate a v-port.
19942  */
19943 #define	MC_CMD_VPORT_FREE 0x97
19944 #define	MC_CMD_VPORT_FREE_MSGSET 0x97
19945 #undef	MC_CMD_0x97_PRIVILEGE_CTG
19946 
19947 #define	MC_CMD_0x97_PRIVILEGE_CTG SRIOV_CTG_GENERAL
19948 
19949 /* MC_CMD_VPORT_FREE_IN msgrequest */
19950 #define	MC_CMD_VPORT_FREE_IN_LEN 4
19951 /* The handle of the v-port */
19952 #define	MC_CMD_VPORT_FREE_IN_VPORT_ID_OFST 0
19953 #define	MC_CMD_VPORT_FREE_IN_VPORT_ID_LEN 4
19954 
19955 /* MC_CMD_VPORT_FREE_OUT msgresponse */
19956 #define	MC_CMD_VPORT_FREE_OUT_LEN 0
19957 
19958 
19959 /***********************************/
19960 /* MC_CMD_VADAPTOR_ALLOC
19961  * allocate a v-adaptor.
19962  */
19963 #define	MC_CMD_VADAPTOR_ALLOC 0x98
19964 #define	MC_CMD_VADAPTOR_ALLOC_MSGSET 0x98
19965 #undef	MC_CMD_0x98_PRIVILEGE_CTG
19966 
19967 #define	MC_CMD_0x98_PRIVILEGE_CTG SRIOV_CTG_GENERAL
19968 
19969 /* MC_CMD_VADAPTOR_ALLOC_IN msgrequest */
19970 #define	MC_CMD_VADAPTOR_ALLOC_IN_LEN 30
19971 /* The port to connect to the v-adaptor's port. */
19972 #define	MC_CMD_VADAPTOR_ALLOC_IN_UPSTREAM_PORT_ID_OFST 0
19973 #define	MC_CMD_VADAPTOR_ALLOC_IN_UPSTREAM_PORT_ID_LEN 4
19974 /* Flags controlling v-adaptor creation */
19975 #define	MC_CMD_VADAPTOR_ALLOC_IN_FLAGS_OFST 8
19976 #define	MC_CMD_VADAPTOR_ALLOC_IN_FLAGS_LEN 4
19977 #define	MC_CMD_VADAPTOR_ALLOC_IN_FLAG_AUTO_VADAPTOR_OFST 8
19978 #define	MC_CMD_VADAPTOR_ALLOC_IN_FLAG_AUTO_VADAPTOR_LBN 0
19979 #define	MC_CMD_VADAPTOR_ALLOC_IN_FLAG_AUTO_VADAPTOR_WIDTH 1
19980 #define	MC_CMD_VADAPTOR_ALLOC_IN_FLAG_PERMIT_SET_MAC_WHEN_FILTERS_INSTALLED_OFST 8
19981 #define	MC_CMD_VADAPTOR_ALLOC_IN_FLAG_PERMIT_SET_MAC_WHEN_FILTERS_INSTALLED_LBN 1
19982 #define	MC_CMD_VADAPTOR_ALLOC_IN_FLAG_PERMIT_SET_MAC_WHEN_FILTERS_INSTALLED_WIDTH 1
19983 /* The number of VLAN tags to strip on receive */
19984 #define	MC_CMD_VADAPTOR_ALLOC_IN_NUM_VLANS_OFST 12
19985 #define	MC_CMD_VADAPTOR_ALLOC_IN_NUM_VLANS_LEN 4
19986 /* The number of VLAN tags to transparently insert/remove. */
19987 #define	MC_CMD_VADAPTOR_ALLOC_IN_NUM_VLAN_TAGS_OFST 16
19988 #define	MC_CMD_VADAPTOR_ALLOC_IN_NUM_VLAN_TAGS_LEN 4
19989 /* The actual VLAN tags to insert/remove */
19990 #define	MC_CMD_VADAPTOR_ALLOC_IN_VLAN_TAGS_OFST 20
19991 #define	MC_CMD_VADAPTOR_ALLOC_IN_VLAN_TAGS_LEN 4
19992 #define	MC_CMD_VADAPTOR_ALLOC_IN_VLAN_TAG_0_OFST 20
19993 #define	MC_CMD_VADAPTOR_ALLOC_IN_VLAN_TAG_0_LBN 0
19994 #define	MC_CMD_VADAPTOR_ALLOC_IN_VLAN_TAG_0_WIDTH 16
19995 #define	MC_CMD_VADAPTOR_ALLOC_IN_VLAN_TAG_1_OFST 20
19996 #define	MC_CMD_VADAPTOR_ALLOC_IN_VLAN_TAG_1_LBN 16
19997 #define	MC_CMD_VADAPTOR_ALLOC_IN_VLAN_TAG_1_WIDTH 16
19998 /* The MAC address to assign to this v-adaptor */
19999 #define	MC_CMD_VADAPTOR_ALLOC_IN_MACADDR_OFST 24
20000 #define	MC_CMD_VADAPTOR_ALLOC_IN_MACADDR_LEN 6
20001 /* enum: Derive the MAC address from the upstream port */
20002 #define	MC_CMD_VADAPTOR_ALLOC_IN_AUTO_MAC 0x0
20003 
20004 /* MC_CMD_VADAPTOR_ALLOC_OUT msgresponse */
20005 #define	MC_CMD_VADAPTOR_ALLOC_OUT_LEN 0
20006 
20007 
20008 /***********************************/
20009 /* MC_CMD_VADAPTOR_FREE
20010  * de-allocate a v-adaptor.
20011  */
20012 #define	MC_CMD_VADAPTOR_FREE 0x99
20013 #define	MC_CMD_VADAPTOR_FREE_MSGSET 0x99
20014 #undef	MC_CMD_0x99_PRIVILEGE_CTG
20015 
20016 #define	MC_CMD_0x99_PRIVILEGE_CTG SRIOV_CTG_GENERAL
20017 
20018 /* MC_CMD_VADAPTOR_FREE_IN msgrequest */
20019 #define	MC_CMD_VADAPTOR_FREE_IN_LEN 4
20020 /* The port to which the v-adaptor is connected. */
20021 #define	MC_CMD_VADAPTOR_FREE_IN_UPSTREAM_PORT_ID_OFST 0
20022 #define	MC_CMD_VADAPTOR_FREE_IN_UPSTREAM_PORT_ID_LEN 4
20023 
20024 /* MC_CMD_VADAPTOR_FREE_OUT msgresponse */
20025 #define	MC_CMD_VADAPTOR_FREE_OUT_LEN 0
20026 
20027 
20028 /***********************************/
20029 /* MC_CMD_VADAPTOR_SET_MAC
20030  * assign a new MAC address to a v-adaptor.
20031  */
20032 #define	MC_CMD_VADAPTOR_SET_MAC 0x5d
20033 #define	MC_CMD_VADAPTOR_SET_MAC_MSGSET 0x5d
20034 #undef	MC_CMD_0x5d_PRIVILEGE_CTG
20035 
20036 #define	MC_CMD_0x5d_PRIVILEGE_CTG SRIOV_CTG_GENERAL
20037 
20038 /* MC_CMD_VADAPTOR_SET_MAC_IN msgrequest */
20039 #define	MC_CMD_VADAPTOR_SET_MAC_IN_LEN 10
20040 /* The port to which the v-adaptor is connected. */
20041 #define	MC_CMD_VADAPTOR_SET_MAC_IN_UPSTREAM_PORT_ID_OFST 0
20042 #define	MC_CMD_VADAPTOR_SET_MAC_IN_UPSTREAM_PORT_ID_LEN 4
20043 /* The new MAC address to assign to this v-adaptor */
20044 #define	MC_CMD_VADAPTOR_SET_MAC_IN_MACADDR_OFST 4
20045 #define	MC_CMD_VADAPTOR_SET_MAC_IN_MACADDR_LEN 6
20046 
20047 /* MC_CMD_VADAPTOR_SET_MAC_OUT msgresponse */
20048 #define	MC_CMD_VADAPTOR_SET_MAC_OUT_LEN 0
20049 
20050 
20051 /***********************************/
20052 /* MC_CMD_VADAPTOR_GET_MAC
20053  * read the MAC address assigned to a v-adaptor.
20054  */
20055 #define	MC_CMD_VADAPTOR_GET_MAC 0x5e
20056 #define	MC_CMD_VADAPTOR_GET_MAC_MSGSET 0x5e
20057 #undef	MC_CMD_0x5e_PRIVILEGE_CTG
20058 
20059 #define	MC_CMD_0x5e_PRIVILEGE_CTG SRIOV_CTG_GENERAL
20060 
20061 /* MC_CMD_VADAPTOR_GET_MAC_IN msgrequest */
20062 #define	MC_CMD_VADAPTOR_GET_MAC_IN_LEN 4
20063 /* The port to which the v-adaptor is connected. */
20064 #define	MC_CMD_VADAPTOR_GET_MAC_IN_UPSTREAM_PORT_ID_OFST 0
20065 #define	MC_CMD_VADAPTOR_GET_MAC_IN_UPSTREAM_PORT_ID_LEN 4
20066 
20067 /* MC_CMD_VADAPTOR_GET_MAC_OUT msgresponse */
20068 #define	MC_CMD_VADAPTOR_GET_MAC_OUT_LEN 6
20069 /* The MAC address assigned to this v-adaptor */
20070 #define	MC_CMD_VADAPTOR_GET_MAC_OUT_MACADDR_OFST 0
20071 #define	MC_CMD_VADAPTOR_GET_MAC_OUT_MACADDR_LEN 6
20072 
20073 
20074 /***********************************/
20075 /* MC_CMD_VADAPTOR_QUERY
20076  * read some config of v-adaptor.
20077  */
20078 #define	MC_CMD_VADAPTOR_QUERY 0x61
20079 #define	MC_CMD_VADAPTOR_QUERY_MSGSET 0x61
20080 #undef	MC_CMD_0x61_PRIVILEGE_CTG
20081 
20082 #define	MC_CMD_0x61_PRIVILEGE_CTG SRIOV_CTG_GENERAL
20083 
20084 /* MC_CMD_VADAPTOR_QUERY_IN msgrequest */
20085 #define	MC_CMD_VADAPTOR_QUERY_IN_LEN 4
20086 /* The port to which the v-adaptor is connected. */
20087 #define	MC_CMD_VADAPTOR_QUERY_IN_UPSTREAM_PORT_ID_OFST 0
20088 #define	MC_CMD_VADAPTOR_QUERY_IN_UPSTREAM_PORT_ID_LEN 4
20089 
20090 /* MC_CMD_VADAPTOR_QUERY_OUT msgresponse */
20091 #define	MC_CMD_VADAPTOR_QUERY_OUT_LEN 12
20092 /* The EVB port flags as defined at MC_CMD_VPORT_ALLOC. */
20093 #define	MC_CMD_VADAPTOR_QUERY_OUT_PORT_FLAGS_OFST 0
20094 #define	MC_CMD_VADAPTOR_QUERY_OUT_PORT_FLAGS_LEN 4
20095 /* The v-adaptor flags as defined at MC_CMD_VADAPTOR_ALLOC. */
20096 #define	MC_CMD_VADAPTOR_QUERY_OUT_VADAPTOR_FLAGS_OFST 4
20097 #define	MC_CMD_VADAPTOR_QUERY_OUT_VADAPTOR_FLAGS_LEN 4
20098 /* The number of VLAN tags that may still be added */
20099 #define	MC_CMD_VADAPTOR_QUERY_OUT_NUM_AVAILABLE_VLAN_TAGS_OFST 8
20100 #define	MC_CMD_VADAPTOR_QUERY_OUT_NUM_AVAILABLE_VLAN_TAGS_LEN 4
20101 
20102 
20103 /***********************************/
20104 /* MC_CMD_EVB_PORT_ASSIGN
20105  * assign a port to a PCI function.
20106  */
20107 #define	MC_CMD_EVB_PORT_ASSIGN 0x9a
20108 #define	MC_CMD_EVB_PORT_ASSIGN_MSGSET 0x9a
20109 #undef	MC_CMD_0x9a_PRIVILEGE_CTG
20110 
20111 #define	MC_CMD_0x9a_PRIVILEGE_CTG SRIOV_CTG_GENERAL
20112 
20113 /* MC_CMD_EVB_PORT_ASSIGN_IN msgrequest */
20114 #define	MC_CMD_EVB_PORT_ASSIGN_IN_LEN 8
20115 /* The port to assign. */
20116 #define	MC_CMD_EVB_PORT_ASSIGN_IN_PORT_ID_OFST 0
20117 #define	MC_CMD_EVB_PORT_ASSIGN_IN_PORT_ID_LEN 4
20118 /* The target function to modify. */
20119 #define	MC_CMD_EVB_PORT_ASSIGN_IN_FUNCTION_OFST 4
20120 #define	MC_CMD_EVB_PORT_ASSIGN_IN_FUNCTION_LEN 4
20121 #define	MC_CMD_EVB_PORT_ASSIGN_IN_PF_OFST 4
20122 #define	MC_CMD_EVB_PORT_ASSIGN_IN_PF_LBN 0
20123 #define	MC_CMD_EVB_PORT_ASSIGN_IN_PF_WIDTH 16
20124 #define	MC_CMD_EVB_PORT_ASSIGN_IN_VF_OFST 4
20125 #define	MC_CMD_EVB_PORT_ASSIGN_IN_VF_LBN 16
20126 #define	MC_CMD_EVB_PORT_ASSIGN_IN_VF_WIDTH 16
20127 
20128 /* MC_CMD_EVB_PORT_ASSIGN_OUT msgresponse */
20129 #define	MC_CMD_EVB_PORT_ASSIGN_OUT_LEN 0
20130 
20131 
20132 /***********************************/
20133 /* MC_CMD_RDWR_A64_REGIONS
20134  * Assign the 64 bit region addresses.
20135  */
20136 #define	MC_CMD_RDWR_A64_REGIONS 0x9b
20137 #define	MC_CMD_RDWR_A64_REGIONS_MSGSET 0x9b
20138 #undef	MC_CMD_0x9b_PRIVILEGE_CTG
20139 
20140 #define	MC_CMD_0x9b_PRIVILEGE_CTG SRIOV_CTG_ADMIN
20141 
20142 /* MC_CMD_RDWR_A64_REGIONS_IN msgrequest */
20143 #define	MC_CMD_RDWR_A64_REGIONS_IN_LEN 17
20144 #define	MC_CMD_RDWR_A64_REGIONS_IN_REGION0_OFST 0
20145 #define	MC_CMD_RDWR_A64_REGIONS_IN_REGION0_LEN 4
20146 #define	MC_CMD_RDWR_A64_REGIONS_IN_REGION1_OFST 4
20147 #define	MC_CMD_RDWR_A64_REGIONS_IN_REGION1_LEN 4
20148 #define	MC_CMD_RDWR_A64_REGIONS_IN_REGION2_OFST 8
20149 #define	MC_CMD_RDWR_A64_REGIONS_IN_REGION2_LEN 4
20150 #define	MC_CMD_RDWR_A64_REGIONS_IN_REGION3_OFST 12
20151 #define	MC_CMD_RDWR_A64_REGIONS_IN_REGION3_LEN 4
20152 /* Write enable bits 0-3, set to write, clear to read. */
20153 #define	MC_CMD_RDWR_A64_REGIONS_IN_WRITE_MASK_LBN 128
20154 #define	MC_CMD_RDWR_A64_REGIONS_IN_WRITE_MASK_WIDTH 4
20155 #define	MC_CMD_RDWR_A64_REGIONS_IN_WRITE_MASK_BYTE_OFST 16
20156 #define	MC_CMD_RDWR_A64_REGIONS_IN_WRITE_MASK_BYTE_LEN 1
20157 
20158 /* MC_CMD_RDWR_A64_REGIONS_OUT msgresponse: This data always included
20159  * regardless of state of write bits in the request.
20160  */
20161 #define	MC_CMD_RDWR_A64_REGIONS_OUT_LEN 16
20162 #define	MC_CMD_RDWR_A64_REGIONS_OUT_REGION0_OFST 0
20163 #define	MC_CMD_RDWR_A64_REGIONS_OUT_REGION0_LEN 4
20164 #define	MC_CMD_RDWR_A64_REGIONS_OUT_REGION1_OFST 4
20165 #define	MC_CMD_RDWR_A64_REGIONS_OUT_REGION1_LEN 4
20166 #define	MC_CMD_RDWR_A64_REGIONS_OUT_REGION2_OFST 8
20167 #define	MC_CMD_RDWR_A64_REGIONS_OUT_REGION2_LEN 4
20168 #define	MC_CMD_RDWR_A64_REGIONS_OUT_REGION3_OFST 12
20169 #define	MC_CMD_RDWR_A64_REGIONS_OUT_REGION3_LEN 4
20170 
20171 
20172 /***********************************/
20173 /* MC_CMD_ONLOAD_STACK_ALLOC
20174  * Allocate an Onload stack ID.
20175  */
20176 #define	MC_CMD_ONLOAD_STACK_ALLOC 0x9c
20177 #define	MC_CMD_ONLOAD_STACK_ALLOC_MSGSET 0x9c
20178 #undef	MC_CMD_0x9c_PRIVILEGE_CTG
20179 
20180 #define	MC_CMD_0x9c_PRIVILEGE_CTG SRIOV_CTG_ONLOAD
20181 
20182 /* MC_CMD_ONLOAD_STACK_ALLOC_IN msgrequest */
20183 #define	MC_CMD_ONLOAD_STACK_ALLOC_IN_LEN 4
20184 /* The handle of the owning upstream port */
20185 #define	MC_CMD_ONLOAD_STACK_ALLOC_IN_UPSTREAM_PORT_ID_OFST 0
20186 #define	MC_CMD_ONLOAD_STACK_ALLOC_IN_UPSTREAM_PORT_ID_LEN 4
20187 
20188 /* MC_CMD_ONLOAD_STACK_ALLOC_OUT msgresponse */
20189 #define	MC_CMD_ONLOAD_STACK_ALLOC_OUT_LEN 4
20190 /* The handle of the new Onload stack */
20191 #define	MC_CMD_ONLOAD_STACK_ALLOC_OUT_ONLOAD_STACK_ID_OFST 0
20192 #define	MC_CMD_ONLOAD_STACK_ALLOC_OUT_ONLOAD_STACK_ID_LEN 4
20193 
20194 
20195 /***********************************/
20196 /* MC_CMD_ONLOAD_STACK_FREE
20197  * Free an Onload stack ID.
20198  */
20199 #define	MC_CMD_ONLOAD_STACK_FREE 0x9d
20200 #define	MC_CMD_ONLOAD_STACK_FREE_MSGSET 0x9d
20201 #undef	MC_CMD_0x9d_PRIVILEGE_CTG
20202 
20203 #define	MC_CMD_0x9d_PRIVILEGE_CTG SRIOV_CTG_ONLOAD
20204 
20205 /* MC_CMD_ONLOAD_STACK_FREE_IN msgrequest */
20206 #define	MC_CMD_ONLOAD_STACK_FREE_IN_LEN 4
20207 /* The handle of the Onload stack */
20208 #define	MC_CMD_ONLOAD_STACK_FREE_IN_ONLOAD_STACK_ID_OFST 0
20209 #define	MC_CMD_ONLOAD_STACK_FREE_IN_ONLOAD_STACK_ID_LEN 4
20210 
20211 /* MC_CMD_ONLOAD_STACK_FREE_OUT msgresponse */
20212 #define	MC_CMD_ONLOAD_STACK_FREE_OUT_LEN 0
20213 
20214 
20215 /***********************************/
20216 /* MC_CMD_RSS_CONTEXT_ALLOC
20217  * Allocate an RSS context.
20218  */
20219 #define	MC_CMD_RSS_CONTEXT_ALLOC 0x9e
20220 #define	MC_CMD_RSS_CONTEXT_ALLOC_MSGSET 0x9e
20221 #undef	MC_CMD_0x9e_PRIVILEGE_CTG
20222 
20223 #define	MC_CMD_0x9e_PRIVILEGE_CTG SRIOV_CTG_GENERAL
20224 
20225 /* MC_CMD_RSS_CONTEXT_ALLOC_IN msgrequest */
20226 #define	MC_CMD_RSS_CONTEXT_ALLOC_IN_LEN 12
20227 /* The handle of the owning upstream port */
20228 #define	MC_CMD_RSS_CONTEXT_ALLOC_IN_UPSTREAM_PORT_ID_OFST 0
20229 #define	MC_CMD_RSS_CONTEXT_ALLOC_IN_UPSTREAM_PORT_ID_LEN 4
20230 /* The type of context to allocate */
20231 #define	MC_CMD_RSS_CONTEXT_ALLOC_IN_TYPE_OFST 4
20232 #define	MC_CMD_RSS_CONTEXT_ALLOC_IN_TYPE_LEN 4
20233 /* enum: Allocate a context for exclusive use. The key and indirection table
20234  * must be explicitly configured.
20235  */
20236 #define	MC_CMD_RSS_CONTEXT_ALLOC_IN_TYPE_EXCLUSIVE 0x0
20237 /* enum: Allocate a context for shared use; this will spread across a range of
20238  * queues, but the key and indirection table are pre-configured and may not be
20239  * changed. For this mode, NUM_QUEUES must 2, 4, 8, 16, 32 or 64.
20240  */
20241 #define	MC_CMD_RSS_CONTEXT_ALLOC_IN_TYPE_SHARED 0x1
20242 /* enum: Allocate a context to spread evenly across an arbitrary number of
20243  * queues. No indirection table space is allocated for this context. (EF100 and
20244  * later)
20245  */
20246 #define	MC_CMD_RSS_CONTEXT_ALLOC_IN_TYPE_EVEN_SPREADING 0x2
20247 /* Number of queues spanned by this context. For exclusive contexts this must
20248  * be in the range 1 to RSS_MAX_INDIRECTION_QUEUES, where
20249  * RSS_MAX_INDIRECTION_QUEUES is queried from MC_CMD_GET_CAPABILITIES_V9 or if
20250  * V9 is not supported then RSS_MAX_INDIRECTION_QUEUES is 64. Valid entries in
20251  * the indirection table will be in the range 0 to NUM_QUEUES-1. For even-
20252  * spreading contexts this must be in the range 1 to
20253  * RSS_MAX_EVEN_SPREADING_QUEUES as queried from MC_CMD_GET_CAPABILITIES. Note
20254  * that specifying NUM_QUEUES = 1 will not perform any spreading but may still
20255  * be useful as a way of obtaining the Toeplitz hash.
20256  */
20257 #define	MC_CMD_RSS_CONTEXT_ALLOC_IN_NUM_QUEUES_OFST 8
20258 #define	MC_CMD_RSS_CONTEXT_ALLOC_IN_NUM_QUEUES_LEN 4
20259 
20260 /* MC_CMD_RSS_CONTEXT_ALLOC_V2_IN msgrequest */
20261 #define	MC_CMD_RSS_CONTEXT_ALLOC_V2_IN_LEN 16
20262 /* The handle of the owning upstream port */
20263 #define	MC_CMD_RSS_CONTEXT_ALLOC_V2_IN_UPSTREAM_PORT_ID_OFST 0
20264 #define	MC_CMD_RSS_CONTEXT_ALLOC_V2_IN_UPSTREAM_PORT_ID_LEN 4
20265 /* The type of context to allocate */
20266 #define	MC_CMD_RSS_CONTEXT_ALLOC_V2_IN_TYPE_OFST 4
20267 #define	MC_CMD_RSS_CONTEXT_ALLOC_V2_IN_TYPE_LEN 4
20268 /* enum: Allocate a context for exclusive use. The key and indirection table
20269  * must be explicitly configured.
20270  */
20271 #define	MC_CMD_RSS_CONTEXT_ALLOC_V2_IN_TYPE_EXCLUSIVE 0x0
20272 /* enum: Allocate a context for shared use; this will spread across a range of
20273  * queues, but the key and indirection table are pre-configured and may not be
20274  * changed. For this mode, NUM_QUEUES must 2, 4, 8, 16, 32 or 64.
20275  */
20276 #define	MC_CMD_RSS_CONTEXT_ALLOC_V2_IN_TYPE_SHARED 0x1
20277 /* enum: Allocate a context to spread evenly across an arbitrary number of
20278  * queues. No indirection table space is allocated for this context. (EF100 and
20279  * later)
20280  */
20281 #define	MC_CMD_RSS_CONTEXT_ALLOC_V2_IN_TYPE_EVEN_SPREADING 0x2
20282 /* Number of queues spanned by this context. For exclusive contexts this must
20283  * be in the range 1 to RSS_MAX_INDIRECTION_QUEUES, where
20284  * RSS_MAX_INDIRECTION_QUEUES is queried from MC_CMD_GET_CAPABILITIES_V9 or if
20285  * V9 is not supported then RSS_MAX_INDIRECTION_QUEUES is 64. Valid entries in
20286  * the indirection table will be in the range 0 to NUM_QUEUES-1. For even-
20287  * spreading contexts this must be in the range 1 to
20288  * RSS_MAX_EVEN_SPREADING_QUEUES as queried from MC_CMD_GET_CAPABILITIES. Note
20289  * that specifying NUM_QUEUES = 1 will not perform any spreading but may still
20290  * be useful as a way of obtaining the Toeplitz hash.
20291  */
20292 #define	MC_CMD_RSS_CONTEXT_ALLOC_V2_IN_NUM_QUEUES_OFST 8
20293 #define	MC_CMD_RSS_CONTEXT_ALLOC_V2_IN_NUM_QUEUES_LEN 4
20294 /* Size of indirection table to be allocated to this context from the pool.
20295  * Must be a power of 2. The minimum and maximum table size can be queried
20296  * using MC_CMD_GET_CAPABILITIES_V9. If there is not enough space remaining in
20297  * the common pool to allocate the requested table size, due to allocating
20298  * table space to other RSS contexts, then the command will fail with
20299  * MC_CMD_ERR_ENOSPC.
20300  */
20301 #define	MC_CMD_RSS_CONTEXT_ALLOC_V2_IN_INDIRECTION_TABLE_SIZE_OFST 12
20302 #define	MC_CMD_RSS_CONTEXT_ALLOC_V2_IN_INDIRECTION_TABLE_SIZE_LEN 4
20303 
20304 /* MC_CMD_RSS_CONTEXT_ALLOC_OUT msgresponse */
20305 #define	MC_CMD_RSS_CONTEXT_ALLOC_OUT_LEN 4
20306 /* The handle of the new RSS context. This should be considered opaque to the
20307  * host, although a value of 0xFFFFFFFF is guaranteed never to be a valid
20308  * handle.
20309  */
20310 #define	MC_CMD_RSS_CONTEXT_ALLOC_OUT_RSS_CONTEXT_ID_OFST 0
20311 #define	MC_CMD_RSS_CONTEXT_ALLOC_OUT_RSS_CONTEXT_ID_LEN 4
20312 /* enum: guaranteed invalid RSS context handle value */
20313 #define	MC_CMD_RSS_CONTEXT_ALLOC_OUT_RSS_CONTEXT_ID_INVALID 0xffffffff
20314 
20315 
20316 /***********************************/
20317 /* MC_CMD_RSS_CONTEXT_FREE
20318  * Free an RSS context.
20319  */
20320 #define	MC_CMD_RSS_CONTEXT_FREE 0x9f
20321 #define	MC_CMD_RSS_CONTEXT_FREE_MSGSET 0x9f
20322 #undef	MC_CMD_0x9f_PRIVILEGE_CTG
20323 
20324 #define	MC_CMD_0x9f_PRIVILEGE_CTG SRIOV_CTG_GENERAL
20325 
20326 /* MC_CMD_RSS_CONTEXT_FREE_IN msgrequest */
20327 #define	MC_CMD_RSS_CONTEXT_FREE_IN_LEN 4
20328 /* The handle of the RSS context */
20329 #define	MC_CMD_RSS_CONTEXT_FREE_IN_RSS_CONTEXT_ID_OFST 0
20330 #define	MC_CMD_RSS_CONTEXT_FREE_IN_RSS_CONTEXT_ID_LEN 4
20331 
20332 /* MC_CMD_RSS_CONTEXT_FREE_OUT msgresponse */
20333 #define	MC_CMD_RSS_CONTEXT_FREE_OUT_LEN 0
20334 
20335 
20336 /***********************************/
20337 /* MC_CMD_RSS_CONTEXT_SET_KEY
20338  * Set the Toeplitz hash key for an RSS context.
20339  */
20340 #define	MC_CMD_RSS_CONTEXT_SET_KEY 0xa0
20341 #define	MC_CMD_RSS_CONTEXT_SET_KEY_MSGSET 0xa0
20342 #undef	MC_CMD_0xa0_PRIVILEGE_CTG
20343 
20344 #define	MC_CMD_0xa0_PRIVILEGE_CTG SRIOV_CTG_GENERAL
20345 
20346 /* MC_CMD_RSS_CONTEXT_SET_KEY_IN msgrequest */
20347 #define	MC_CMD_RSS_CONTEXT_SET_KEY_IN_LEN 44
20348 /* The handle of the RSS context */
20349 #define	MC_CMD_RSS_CONTEXT_SET_KEY_IN_RSS_CONTEXT_ID_OFST 0
20350 #define	MC_CMD_RSS_CONTEXT_SET_KEY_IN_RSS_CONTEXT_ID_LEN 4
20351 /* The 40-byte Toeplitz hash key (TBD endianness issues?) */
20352 #define	MC_CMD_RSS_CONTEXT_SET_KEY_IN_TOEPLITZ_KEY_OFST 4
20353 #define	MC_CMD_RSS_CONTEXT_SET_KEY_IN_TOEPLITZ_KEY_LEN 40
20354 
20355 /* MC_CMD_RSS_CONTEXT_SET_KEY_OUT msgresponse */
20356 #define	MC_CMD_RSS_CONTEXT_SET_KEY_OUT_LEN 0
20357 
20358 
20359 /***********************************/
20360 /* MC_CMD_RSS_CONTEXT_GET_KEY
20361  * Get the Toeplitz hash key for an RSS context.
20362  */
20363 #define	MC_CMD_RSS_CONTEXT_GET_KEY 0xa1
20364 #define	MC_CMD_RSS_CONTEXT_GET_KEY_MSGSET 0xa1
20365 #undef	MC_CMD_0xa1_PRIVILEGE_CTG
20366 
20367 #define	MC_CMD_0xa1_PRIVILEGE_CTG SRIOV_CTG_GENERAL
20368 
20369 /* MC_CMD_RSS_CONTEXT_GET_KEY_IN msgrequest */
20370 #define	MC_CMD_RSS_CONTEXT_GET_KEY_IN_LEN 4
20371 /* The handle of the RSS context */
20372 #define	MC_CMD_RSS_CONTEXT_GET_KEY_IN_RSS_CONTEXT_ID_OFST 0
20373 #define	MC_CMD_RSS_CONTEXT_GET_KEY_IN_RSS_CONTEXT_ID_LEN 4
20374 
20375 /* MC_CMD_RSS_CONTEXT_GET_KEY_OUT msgresponse */
20376 #define	MC_CMD_RSS_CONTEXT_GET_KEY_OUT_LEN 44
20377 /* The 40-byte Toeplitz hash key (TBD endianness issues?) */
20378 #define	MC_CMD_RSS_CONTEXT_GET_KEY_OUT_TOEPLITZ_KEY_OFST 4
20379 #define	MC_CMD_RSS_CONTEXT_GET_KEY_OUT_TOEPLITZ_KEY_LEN 40
20380 
20381 
20382 /***********************************/
20383 /* MC_CMD_RSS_CONTEXT_SET_TABLE
20384  * Set the indirection table for an RSS context. This command should only be
20385  * used with indirection tables containing 128 entries, which is the default
20386  * when the RSS context is allocated without specifying a table size.
20387  */
20388 #define	MC_CMD_RSS_CONTEXT_SET_TABLE 0xa2
20389 #define	MC_CMD_RSS_CONTEXT_SET_TABLE_MSGSET 0xa2
20390 #undef	MC_CMD_0xa2_PRIVILEGE_CTG
20391 
20392 #define	MC_CMD_0xa2_PRIVILEGE_CTG SRIOV_CTG_GENERAL
20393 
20394 /* MC_CMD_RSS_CONTEXT_SET_TABLE_IN msgrequest */
20395 #define	MC_CMD_RSS_CONTEXT_SET_TABLE_IN_LEN 132
20396 /* The handle of the RSS context */
20397 #define	MC_CMD_RSS_CONTEXT_SET_TABLE_IN_RSS_CONTEXT_ID_OFST 0
20398 #define	MC_CMD_RSS_CONTEXT_SET_TABLE_IN_RSS_CONTEXT_ID_LEN 4
20399 /* The 128-byte indirection table (1 byte per entry) */
20400 #define	MC_CMD_RSS_CONTEXT_SET_TABLE_IN_INDIRECTION_TABLE_OFST 4
20401 #define	MC_CMD_RSS_CONTEXT_SET_TABLE_IN_INDIRECTION_TABLE_LEN 128
20402 
20403 /* MC_CMD_RSS_CONTEXT_SET_TABLE_OUT msgresponse */
20404 #define	MC_CMD_RSS_CONTEXT_SET_TABLE_OUT_LEN 0
20405 
20406 
20407 /***********************************/
20408 /* MC_CMD_RSS_CONTEXT_GET_TABLE
20409  * Get the indirection table for an RSS context. This command should only be
20410  * used with indirection tables containing 128 entries, which is the default
20411  * when the RSS context is allocated without specifying a table size.
20412  */
20413 #define	MC_CMD_RSS_CONTEXT_GET_TABLE 0xa3
20414 #define	MC_CMD_RSS_CONTEXT_GET_TABLE_MSGSET 0xa3
20415 #undef	MC_CMD_0xa3_PRIVILEGE_CTG
20416 
20417 #define	MC_CMD_0xa3_PRIVILEGE_CTG SRIOV_CTG_GENERAL
20418 
20419 /* MC_CMD_RSS_CONTEXT_GET_TABLE_IN msgrequest */
20420 #define	MC_CMD_RSS_CONTEXT_GET_TABLE_IN_LEN 4
20421 /* The handle of the RSS context */
20422 #define	MC_CMD_RSS_CONTEXT_GET_TABLE_IN_RSS_CONTEXT_ID_OFST 0
20423 #define	MC_CMD_RSS_CONTEXT_GET_TABLE_IN_RSS_CONTEXT_ID_LEN 4
20424 
20425 /* MC_CMD_RSS_CONTEXT_GET_TABLE_OUT msgresponse */
20426 #define	MC_CMD_RSS_CONTEXT_GET_TABLE_OUT_LEN 132
20427 /* The 128-byte indirection table (1 byte per entry) */
20428 #define	MC_CMD_RSS_CONTEXT_GET_TABLE_OUT_INDIRECTION_TABLE_OFST 4
20429 #define	MC_CMD_RSS_CONTEXT_GET_TABLE_OUT_INDIRECTION_TABLE_LEN 128
20430 
20431 
20432 /***********************************/
20433 /* MC_CMD_RSS_CONTEXT_WRITE_TABLE
20434  * Write a portion of a selectable-size indirection table for an RSS context.
20435  * This command must be used instead of MC_CMD_RSS_CONTEXT_SET_TABLE if the
20436  * RSS_SELECTABLE_TABLE_SIZE bit is set in MC_CMD_GET_CAPABILITIES.
20437  */
20438 #define	MC_CMD_RSS_CONTEXT_WRITE_TABLE 0x13e
20439 #define	MC_CMD_RSS_CONTEXT_WRITE_TABLE_MSGSET 0x13e
20440 #undef	MC_CMD_0x13e_PRIVILEGE_CTG
20441 
20442 #define	MC_CMD_0x13e_PRIVILEGE_CTG SRIOV_CTG_GENERAL
20443 
20444 /* MC_CMD_RSS_CONTEXT_WRITE_TABLE_IN msgrequest */
20445 #define	MC_CMD_RSS_CONTEXT_WRITE_TABLE_IN_LENMIN 8
20446 #define	MC_CMD_RSS_CONTEXT_WRITE_TABLE_IN_LENMAX 252
20447 #define	MC_CMD_RSS_CONTEXT_WRITE_TABLE_IN_LENMAX_MCDI2 1020
20448 #define	MC_CMD_RSS_CONTEXT_WRITE_TABLE_IN_LEN(num) (4+4*(num))
20449 #define	MC_CMD_RSS_CONTEXT_WRITE_TABLE_IN_ENTRIES_NUM(len) (((len)-4)/4)
20450 /* The handle of the RSS context */
20451 #define	MC_CMD_RSS_CONTEXT_WRITE_TABLE_IN_RSS_CONTEXT_ID_OFST 0
20452 #define	MC_CMD_RSS_CONTEXT_WRITE_TABLE_IN_RSS_CONTEXT_ID_LEN 4
20453 /* An array of index-value pairs to be written to the table. Structure is
20454  * MC_CMD_RSS_CONTEXT_WRITE_TABLE_ENTRY.
20455  */
20456 #define	MC_CMD_RSS_CONTEXT_WRITE_TABLE_IN_ENTRIES_OFST 4
20457 #define	MC_CMD_RSS_CONTEXT_WRITE_TABLE_IN_ENTRIES_LEN 4
20458 #define	MC_CMD_RSS_CONTEXT_WRITE_TABLE_IN_ENTRIES_MINNUM 1
20459 #define	MC_CMD_RSS_CONTEXT_WRITE_TABLE_IN_ENTRIES_MAXNUM 62
20460 #define	MC_CMD_RSS_CONTEXT_WRITE_TABLE_IN_ENTRIES_MAXNUM_MCDI2 254
20461 
20462 /* MC_CMD_RSS_CONTEXT_WRITE_TABLE_OUT msgresponse */
20463 #define	MC_CMD_RSS_CONTEXT_WRITE_TABLE_OUT_LEN 0
20464 
20465 /* MC_CMD_RSS_CONTEXT_WRITE_TABLE_ENTRY structuredef */
20466 #define	MC_CMD_RSS_CONTEXT_WRITE_TABLE_ENTRY_LEN 4
20467 /* The index of the table entry to be written. */
20468 #define	MC_CMD_RSS_CONTEXT_WRITE_TABLE_ENTRY_INDEX_OFST 0
20469 #define	MC_CMD_RSS_CONTEXT_WRITE_TABLE_ENTRY_INDEX_LEN 2
20470 #define	MC_CMD_RSS_CONTEXT_WRITE_TABLE_ENTRY_INDEX_LBN 0
20471 #define	MC_CMD_RSS_CONTEXT_WRITE_TABLE_ENTRY_INDEX_WIDTH 16
20472 /* The value to write into the table entry. */
20473 #define	MC_CMD_RSS_CONTEXT_WRITE_TABLE_ENTRY_VALUE_OFST 2
20474 #define	MC_CMD_RSS_CONTEXT_WRITE_TABLE_ENTRY_VALUE_LEN 2
20475 #define	MC_CMD_RSS_CONTEXT_WRITE_TABLE_ENTRY_VALUE_LBN 16
20476 #define	MC_CMD_RSS_CONTEXT_WRITE_TABLE_ENTRY_VALUE_WIDTH 16
20477 
20478 
20479 /***********************************/
20480 /* MC_CMD_RSS_CONTEXT_READ_TABLE
20481  * Read a portion of a selectable-size indirection table for an RSS context.
20482  * This command must be used instead of MC_CMD_RSS_CONTEXT_GET_TABLE if the
20483  * RSS_SELECTABLE_TABLE_SIZE bit is set in MC_CMD_GET_CAPABILITIES.
20484  */
20485 #define	MC_CMD_RSS_CONTEXT_READ_TABLE 0x13f
20486 #define	MC_CMD_RSS_CONTEXT_READ_TABLE_MSGSET 0x13f
20487 #undef	MC_CMD_0x13f_PRIVILEGE_CTG
20488 
20489 #define	MC_CMD_0x13f_PRIVILEGE_CTG SRIOV_CTG_GENERAL
20490 
20491 /* MC_CMD_RSS_CONTEXT_READ_TABLE_IN msgrequest */
20492 #define	MC_CMD_RSS_CONTEXT_READ_TABLE_IN_LENMIN 6
20493 #define	MC_CMD_RSS_CONTEXT_READ_TABLE_IN_LENMAX 252
20494 #define	MC_CMD_RSS_CONTEXT_READ_TABLE_IN_LENMAX_MCDI2 1020
20495 #define	MC_CMD_RSS_CONTEXT_READ_TABLE_IN_LEN(num) (4+2*(num))
20496 #define	MC_CMD_RSS_CONTEXT_READ_TABLE_IN_INDICES_NUM(len) (((len)-4)/2)
20497 /* The handle of the RSS context */
20498 #define	MC_CMD_RSS_CONTEXT_READ_TABLE_IN_RSS_CONTEXT_ID_OFST 0
20499 #define	MC_CMD_RSS_CONTEXT_READ_TABLE_IN_RSS_CONTEXT_ID_LEN 4
20500 /* An array containing the indices of the entries to be read. */
20501 #define	MC_CMD_RSS_CONTEXT_READ_TABLE_IN_INDICES_OFST 4
20502 #define	MC_CMD_RSS_CONTEXT_READ_TABLE_IN_INDICES_LEN 2
20503 #define	MC_CMD_RSS_CONTEXT_READ_TABLE_IN_INDICES_MINNUM 1
20504 #define	MC_CMD_RSS_CONTEXT_READ_TABLE_IN_INDICES_MAXNUM 124
20505 #define	MC_CMD_RSS_CONTEXT_READ_TABLE_IN_INDICES_MAXNUM_MCDI2 508
20506 
20507 /* MC_CMD_RSS_CONTEXT_READ_TABLE_OUT msgresponse */
20508 #define	MC_CMD_RSS_CONTEXT_READ_TABLE_OUT_LENMIN 2
20509 #define	MC_CMD_RSS_CONTEXT_READ_TABLE_OUT_LENMAX 252
20510 #define	MC_CMD_RSS_CONTEXT_READ_TABLE_OUT_LENMAX_MCDI2 1020
20511 #define	MC_CMD_RSS_CONTEXT_READ_TABLE_OUT_LEN(num) (0+2*(num))
20512 #define	MC_CMD_RSS_CONTEXT_READ_TABLE_OUT_DATA_NUM(len) (((len)-0)/2)
20513 /* A buffer containing the requested entries read from the table. */
20514 #define	MC_CMD_RSS_CONTEXT_READ_TABLE_OUT_DATA_OFST 0
20515 #define	MC_CMD_RSS_CONTEXT_READ_TABLE_OUT_DATA_LEN 2
20516 #define	MC_CMD_RSS_CONTEXT_READ_TABLE_OUT_DATA_MINNUM 1
20517 #define	MC_CMD_RSS_CONTEXT_READ_TABLE_OUT_DATA_MAXNUM 126
20518 #define	MC_CMD_RSS_CONTEXT_READ_TABLE_OUT_DATA_MAXNUM_MCDI2 510
20519 
20520 
20521 /***********************************/
20522 /* MC_CMD_RSS_CONTEXT_SET_FLAGS
20523  * Set various control flags for an RSS context.
20524  */
20525 #define	MC_CMD_RSS_CONTEXT_SET_FLAGS 0xe1
20526 #define	MC_CMD_RSS_CONTEXT_SET_FLAGS_MSGSET 0xe1
20527 #undef	MC_CMD_0xe1_PRIVILEGE_CTG
20528 
20529 #define	MC_CMD_0xe1_PRIVILEGE_CTG SRIOV_CTG_GENERAL
20530 
20531 /* MC_CMD_RSS_CONTEXT_SET_FLAGS_IN msgrequest */
20532 #define	MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_LEN 8
20533 /* The handle of the RSS context */
20534 #define	MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_RSS_CONTEXT_ID_OFST 0
20535 #define	MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_RSS_CONTEXT_ID_LEN 4
20536 /* Hash control flags. The _EN bits are always supported, but new modes are
20537  * available when ADDITIONAL_RSS_MODES is reported by MC_CMD_GET_CAPABILITIES:
20538  * in this case, the MODE fields may be set to non-zero values, and will take
20539  * effect regardless of the settings of the _EN flags. See the RSS_MODE
20540  * structure for the meaning of the mode bits. Drivers must check the
20541  * capability before trying to set any _MODE fields, as older firmware will
20542  * reject any attempt to set the FLAGS field to a value > 0xff with EINVAL. In
20543  * the case where all the _MODE flags are zero, the _EN flags take effect,
20544  * providing backward compatibility for existing drivers. (Setting all _MODE
20545  * *and* all _EN flags to zero is valid, to disable RSS spreading for that
20546  * particular packet type.)
20547  */
20548 #define	MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_FLAGS_OFST 4
20549 #define	MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_FLAGS_LEN 4
20550 #define	MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_TOEPLITZ_IPV4_EN_OFST 4
20551 #define	MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_TOEPLITZ_IPV4_EN_LBN 0
20552 #define	MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_TOEPLITZ_IPV4_EN_WIDTH 1
20553 #define	MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_TOEPLITZ_TCPV4_EN_OFST 4
20554 #define	MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_TOEPLITZ_TCPV4_EN_LBN 1
20555 #define	MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_TOEPLITZ_TCPV4_EN_WIDTH 1
20556 #define	MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_TOEPLITZ_IPV6_EN_OFST 4
20557 #define	MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_TOEPLITZ_IPV6_EN_LBN 2
20558 #define	MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_TOEPLITZ_IPV6_EN_WIDTH 1
20559 #define	MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_TOEPLITZ_TCPV6_EN_OFST 4
20560 #define	MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_TOEPLITZ_TCPV6_EN_LBN 3
20561 #define	MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_TOEPLITZ_TCPV6_EN_WIDTH 1
20562 #define	MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_RESERVED_OFST 4
20563 #define	MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_RESERVED_LBN 4
20564 #define	MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_RESERVED_WIDTH 4
20565 #define	MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_TCP_IPV4_RSS_MODE_OFST 4
20566 #define	MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_TCP_IPV4_RSS_MODE_LBN 8
20567 #define	MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_TCP_IPV4_RSS_MODE_WIDTH 4
20568 #define	MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_UDP_IPV4_RSS_MODE_OFST 4
20569 #define	MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_UDP_IPV4_RSS_MODE_LBN 12
20570 #define	MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_UDP_IPV4_RSS_MODE_WIDTH 4
20571 #define	MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_OTHER_IPV4_RSS_MODE_OFST 4
20572 #define	MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_OTHER_IPV4_RSS_MODE_LBN 16
20573 #define	MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_OTHER_IPV4_RSS_MODE_WIDTH 4
20574 #define	MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_TCP_IPV6_RSS_MODE_OFST 4
20575 #define	MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_TCP_IPV6_RSS_MODE_LBN 20
20576 #define	MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_TCP_IPV6_RSS_MODE_WIDTH 4
20577 #define	MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_UDP_IPV6_RSS_MODE_OFST 4
20578 #define	MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_UDP_IPV6_RSS_MODE_LBN 24
20579 #define	MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_UDP_IPV6_RSS_MODE_WIDTH 4
20580 #define	MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_OTHER_IPV6_RSS_MODE_OFST 4
20581 #define	MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_OTHER_IPV6_RSS_MODE_LBN 28
20582 #define	MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_OTHER_IPV6_RSS_MODE_WIDTH 4
20583 
20584 /* MC_CMD_RSS_CONTEXT_SET_FLAGS_OUT msgresponse */
20585 #define	MC_CMD_RSS_CONTEXT_SET_FLAGS_OUT_LEN 0
20586 
20587 
20588 /***********************************/
20589 /* MC_CMD_RSS_CONTEXT_GET_FLAGS
20590  * Get various control flags for an RSS context.
20591  */
20592 #define	MC_CMD_RSS_CONTEXT_GET_FLAGS 0xe2
20593 #define	MC_CMD_RSS_CONTEXT_GET_FLAGS_MSGSET 0xe2
20594 #undef	MC_CMD_0xe2_PRIVILEGE_CTG
20595 
20596 #define	MC_CMD_0xe2_PRIVILEGE_CTG SRIOV_CTG_GENERAL
20597 
20598 /* MC_CMD_RSS_CONTEXT_GET_FLAGS_IN msgrequest */
20599 #define	MC_CMD_RSS_CONTEXT_GET_FLAGS_IN_LEN 4
20600 /* The handle of the RSS context */
20601 #define	MC_CMD_RSS_CONTEXT_GET_FLAGS_IN_RSS_CONTEXT_ID_OFST 0
20602 #define	MC_CMD_RSS_CONTEXT_GET_FLAGS_IN_RSS_CONTEXT_ID_LEN 4
20603 
20604 /* MC_CMD_RSS_CONTEXT_GET_FLAGS_OUT msgresponse */
20605 #define	MC_CMD_RSS_CONTEXT_GET_FLAGS_OUT_LEN 8
20606 /* Hash control flags. If all _MODE bits are zero (which will always be true
20607  * for older firmware which does not report the ADDITIONAL_RSS_MODES
20608  * capability), the _EN bits report the state. If any _MODE bits are non-zero
20609  * (which will only be true when the firmware reports ADDITIONAL_RSS_MODES)
20610  * then the _EN bits should be disregarded, although the _MODE flags are
20611  * guaranteed to be consistent with the _EN flags for a freshly-allocated RSS
20612  * context and in the case where the _EN flags were used in the SET. This
20613  * provides backward compatibility: old drivers will not be attempting to
20614  * derive any meaning from the _MODE bits (and can never set them to any value
20615  * not representable by the _EN bits); new drivers can always determine the
20616  * mode by looking only at the _MODE bits; the value returned by a GET can
20617  * always be used for a SET regardless of old/new driver vs. old/new firmware.
20618  */
20619 #define	MC_CMD_RSS_CONTEXT_GET_FLAGS_OUT_FLAGS_OFST 4
20620 #define	MC_CMD_RSS_CONTEXT_GET_FLAGS_OUT_FLAGS_LEN 4
20621 #define	MC_CMD_RSS_CONTEXT_GET_FLAGS_OUT_TOEPLITZ_IPV4_EN_OFST 4
20622 #define	MC_CMD_RSS_CONTEXT_GET_FLAGS_OUT_TOEPLITZ_IPV4_EN_LBN 0
20623 #define	MC_CMD_RSS_CONTEXT_GET_FLAGS_OUT_TOEPLITZ_IPV4_EN_WIDTH 1
20624 #define	MC_CMD_RSS_CONTEXT_GET_FLAGS_OUT_TOEPLITZ_TCPV4_EN_OFST 4
20625 #define	MC_CMD_RSS_CONTEXT_GET_FLAGS_OUT_TOEPLITZ_TCPV4_EN_LBN 1
20626 #define	MC_CMD_RSS_CONTEXT_GET_FLAGS_OUT_TOEPLITZ_TCPV4_EN_WIDTH 1
20627 #define	MC_CMD_RSS_CONTEXT_GET_FLAGS_OUT_TOEPLITZ_IPV6_EN_OFST 4
20628 #define	MC_CMD_RSS_CONTEXT_GET_FLAGS_OUT_TOEPLITZ_IPV6_EN_LBN 2
20629 #define	MC_CMD_RSS_CONTEXT_GET_FLAGS_OUT_TOEPLITZ_IPV6_EN_WIDTH 1
20630 #define	MC_CMD_RSS_CONTEXT_GET_FLAGS_OUT_TOEPLITZ_TCPV6_EN_OFST 4
20631 #define	MC_CMD_RSS_CONTEXT_GET_FLAGS_OUT_TOEPLITZ_TCPV6_EN_LBN 3
20632 #define	MC_CMD_RSS_CONTEXT_GET_FLAGS_OUT_TOEPLITZ_TCPV6_EN_WIDTH 1
20633 #define	MC_CMD_RSS_CONTEXT_GET_FLAGS_OUT_RESERVED_OFST 4
20634 #define	MC_CMD_RSS_CONTEXT_GET_FLAGS_OUT_RESERVED_LBN 4
20635 #define	MC_CMD_RSS_CONTEXT_GET_FLAGS_OUT_RESERVED_WIDTH 4
20636 #define	MC_CMD_RSS_CONTEXT_GET_FLAGS_OUT_TCP_IPV4_RSS_MODE_OFST 4
20637 #define	MC_CMD_RSS_CONTEXT_GET_FLAGS_OUT_TCP_IPV4_RSS_MODE_LBN 8
20638 #define	MC_CMD_RSS_CONTEXT_GET_FLAGS_OUT_TCP_IPV4_RSS_MODE_WIDTH 4
20639 #define	MC_CMD_RSS_CONTEXT_GET_FLAGS_OUT_UDP_IPV4_RSS_MODE_OFST 4
20640 #define	MC_CMD_RSS_CONTEXT_GET_FLAGS_OUT_UDP_IPV4_RSS_MODE_LBN 12
20641 #define	MC_CMD_RSS_CONTEXT_GET_FLAGS_OUT_UDP_IPV4_RSS_MODE_WIDTH 4
20642 #define	MC_CMD_RSS_CONTEXT_GET_FLAGS_OUT_OTHER_IPV4_RSS_MODE_OFST 4
20643 #define	MC_CMD_RSS_CONTEXT_GET_FLAGS_OUT_OTHER_IPV4_RSS_MODE_LBN 16
20644 #define	MC_CMD_RSS_CONTEXT_GET_FLAGS_OUT_OTHER_IPV4_RSS_MODE_WIDTH 4
20645 #define	MC_CMD_RSS_CONTEXT_GET_FLAGS_OUT_TCP_IPV6_RSS_MODE_OFST 4
20646 #define	MC_CMD_RSS_CONTEXT_GET_FLAGS_OUT_TCP_IPV6_RSS_MODE_LBN 20
20647 #define	MC_CMD_RSS_CONTEXT_GET_FLAGS_OUT_TCP_IPV6_RSS_MODE_WIDTH 4
20648 #define	MC_CMD_RSS_CONTEXT_GET_FLAGS_OUT_UDP_IPV6_RSS_MODE_OFST 4
20649 #define	MC_CMD_RSS_CONTEXT_GET_FLAGS_OUT_UDP_IPV6_RSS_MODE_LBN 24
20650 #define	MC_CMD_RSS_CONTEXT_GET_FLAGS_OUT_UDP_IPV6_RSS_MODE_WIDTH 4
20651 #define	MC_CMD_RSS_CONTEXT_GET_FLAGS_OUT_OTHER_IPV6_RSS_MODE_OFST 4
20652 #define	MC_CMD_RSS_CONTEXT_GET_FLAGS_OUT_OTHER_IPV6_RSS_MODE_LBN 28
20653 #define	MC_CMD_RSS_CONTEXT_GET_FLAGS_OUT_OTHER_IPV6_RSS_MODE_WIDTH 4
20654 
20655 
20656 /***********************************/
20657 /* MC_CMD_DOT1P_MAPPING_ALLOC
20658  * Allocate a .1p mapping.
20659  */
20660 #define	MC_CMD_DOT1P_MAPPING_ALLOC 0xa4
20661 #define	MC_CMD_DOT1P_MAPPING_ALLOC_MSGSET 0xa4
20662 #undef	MC_CMD_0xa4_PRIVILEGE_CTG
20663 
20664 #define	MC_CMD_0xa4_PRIVILEGE_CTG SRIOV_CTG_ADMIN
20665 
20666 /* MC_CMD_DOT1P_MAPPING_ALLOC_IN msgrequest */
20667 #define	MC_CMD_DOT1P_MAPPING_ALLOC_IN_LEN 8
20668 /* The handle of the owning upstream port */
20669 #define	MC_CMD_DOT1P_MAPPING_ALLOC_IN_UPSTREAM_PORT_ID_OFST 0
20670 #define	MC_CMD_DOT1P_MAPPING_ALLOC_IN_UPSTREAM_PORT_ID_LEN 4
20671 /* Number of queues spanned by this mapping, in the range 1-64; valid fixed
20672  * offsets in the mapping table will be in the range 0 to NUM_QUEUES-1, and
20673  * referenced RSS contexts must span no more than this number.
20674  */
20675 #define	MC_CMD_DOT1P_MAPPING_ALLOC_IN_NUM_QUEUES_OFST 4
20676 #define	MC_CMD_DOT1P_MAPPING_ALLOC_IN_NUM_QUEUES_LEN 4
20677 
20678 /* MC_CMD_DOT1P_MAPPING_ALLOC_OUT msgresponse */
20679 #define	MC_CMD_DOT1P_MAPPING_ALLOC_OUT_LEN 4
20680 /* The handle of the new .1p mapping. This should be considered opaque to the
20681  * host, although a value of 0xFFFFFFFF is guaranteed never to be a valid
20682  * handle.
20683  */
20684 #define	MC_CMD_DOT1P_MAPPING_ALLOC_OUT_DOT1P_MAPPING_ID_OFST 0
20685 #define	MC_CMD_DOT1P_MAPPING_ALLOC_OUT_DOT1P_MAPPING_ID_LEN 4
20686 /* enum: guaranteed invalid .1p mapping handle value */
20687 #define	MC_CMD_DOT1P_MAPPING_ALLOC_OUT_DOT1P_MAPPING_ID_INVALID 0xffffffff
20688 
20689 
20690 /***********************************/
20691 /* MC_CMD_DOT1P_MAPPING_FREE
20692  * Free a .1p mapping.
20693  */
20694 #define	MC_CMD_DOT1P_MAPPING_FREE 0xa5
20695 #define	MC_CMD_DOT1P_MAPPING_FREE_MSGSET 0xa5
20696 #undef	MC_CMD_0xa5_PRIVILEGE_CTG
20697 
20698 #define	MC_CMD_0xa5_PRIVILEGE_CTG SRIOV_CTG_ADMIN
20699 
20700 /* MC_CMD_DOT1P_MAPPING_FREE_IN msgrequest */
20701 #define	MC_CMD_DOT1P_MAPPING_FREE_IN_LEN 4
20702 /* The handle of the .1p mapping */
20703 #define	MC_CMD_DOT1P_MAPPING_FREE_IN_DOT1P_MAPPING_ID_OFST 0
20704 #define	MC_CMD_DOT1P_MAPPING_FREE_IN_DOT1P_MAPPING_ID_LEN 4
20705 
20706 /* MC_CMD_DOT1P_MAPPING_FREE_OUT msgresponse */
20707 #define	MC_CMD_DOT1P_MAPPING_FREE_OUT_LEN 0
20708 
20709 
20710 /***********************************/
20711 /* MC_CMD_DOT1P_MAPPING_SET_TABLE
20712  * Set the mapping table for a .1p mapping.
20713  */
20714 #define	MC_CMD_DOT1P_MAPPING_SET_TABLE 0xa6
20715 #define	MC_CMD_DOT1P_MAPPING_SET_TABLE_MSGSET 0xa6
20716 #undef	MC_CMD_0xa6_PRIVILEGE_CTG
20717 
20718 #define	MC_CMD_0xa6_PRIVILEGE_CTG SRIOV_CTG_ADMIN
20719 
20720 /* MC_CMD_DOT1P_MAPPING_SET_TABLE_IN msgrequest */
20721 #define	MC_CMD_DOT1P_MAPPING_SET_TABLE_IN_LEN 36
20722 /* The handle of the .1p mapping */
20723 #define	MC_CMD_DOT1P_MAPPING_SET_TABLE_IN_DOT1P_MAPPING_ID_OFST 0
20724 #define	MC_CMD_DOT1P_MAPPING_SET_TABLE_IN_DOT1P_MAPPING_ID_LEN 4
20725 /* Per-priority mappings (1 32-bit word per entry - an offset or RSS context
20726  * handle)
20727  */
20728 #define	MC_CMD_DOT1P_MAPPING_SET_TABLE_IN_MAPPING_TABLE_OFST 4
20729 #define	MC_CMD_DOT1P_MAPPING_SET_TABLE_IN_MAPPING_TABLE_LEN 32
20730 
20731 /* MC_CMD_DOT1P_MAPPING_SET_TABLE_OUT msgresponse */
20732 #define	MC_CMD_DOT1P_MAPPING_SET_TABLE_OUT_LEN 0
20733 
20734 
20735 /***********************************/
20736 /* MC_CMD_DOT1P_MAPPING_GET_TABLE
20737  * Get the mapping table for a .1p mapping.
20738  */
20739 #define	MC_CMD_DOT1P_MAPPING_GET_TABLE 0xa7
20740 #define	MC_CMD_DOT1P_MAPPING_GET_TABLE_MSGSET 0xa7
20741 #undef	MC_CMD_0xa7_PRIVILEGE_CTG
20742 
20743 #define	MC_CMD_0xa7_PRIVILEGE_CTG SRIOV_CTG_ADMIN
20744 
20745 /* MC_CMD_DOT1P_MAPPING_GET_TABLE_IN msgrequest */
20746 #define	MC_CMD_DOT1P_MAPPING_GET_TABLE_IN_LEN 4
20747 /* The handle of the .1p mapping */
20748 #define	MC_CMD_DOT1P_MAPPING_GET_TABLE_IN_DOT1P_MAPPING_ID_OFST 0
20749 #define	MC_CMD_DOT1P_MAPPING_GET_TABLE_IN_DOT1P_MAPPING_ID_LEN 4
20750 
20751 /* MC_CMD_DOT1P_MAPPING_GET_TABLE_OUT msgresponse */
20752 #define	MC_CMD_DOT1P_MAPPING_GET_TABLE_OUT_LEN 36
20753 /* Per-priority mappings (1 32-bit word per entry - an offset or RSS context
20754  * handle)
20755  */
20756 #define	MC_CMD_DOT1P_MAPPING_GET_TABLE_OUT_MAPPING_TABLE_OFST 4
20757 #define	MC_CMD_DOT1P_MAPPING_GET_TABLE_OUT_MAPPING_TABLE_LEN 32
20758 
20759 
20760 /***********************************/
20761 /* MC_CMD_GET_VECTOR_CFG
20762  * Get Interrupt Vector config for this PF.
20763  */
20764 #define	MC_CMD_GET_VECTOR_CFG 0xbf
20765 #define	MC_CMD_GET_VECTOR_CFG_MSGSET 0xbf
20766 #undef	MC_CMD_0xbf_PRIVILEGE_CTG
20767 
20768 #define	MC_CMD_0xbf_PRIVILEGE_CTG SRIOV_CTG_GENERAL
20769 
20770 /* MC_CMD_GET_VECTOR_CFG_IN msgrequest */
20771 #define	MC_CMD_GET_VECTOR_CFG_IN_LEN 0
20772 
20773 /* MC_CMD_GET_VECTOR_CFG_OUT msgresponse */
20774 #define	MC_CMD_GET_VECTOR_CFG_OUT_LEN 12
20775 /* Base absolute interrupt vector number. */
20776 #define	MC_CMD_GET_VECTOR_CFG_OUT_VEC_BASE_OFST 0
20777 #define	MC_CMD_GET_VECTOR_CFG_OUT_VEC_BASE_LEN 4
20778 /* Number of interrupt vectors allocate to this PF. */
20779 #define	MC_CMD_GET_VECTOR_CFG_OUT_VECS_PER_PF_OFST 4
20780 #define	MC_CMD_GET_VECTOR_CFG_OUT_VECS_PER_PF_LEN 4
20781 /* Number of interrupt vectors to allocate per VF. */
20782 #define	MC_CMD_GET_VECTOR_CFG_OUT_VECS_PER_VF_OFST 8
20783 #define	MC_CMD_GET_VECTOR_CFG_OUT_VECS_PER_VF_LEN 4
20784 
20785 
20786 /***********************************/
20787 /* MC_CMD_SET_VECTOR_CFG
20788  * Set Interrupt Vector config for this PF.
20789  */
20790 #define	MC_CMD_SET_VECTOR_CFG 0xc0
20791 #define	MC_CMD_SET_VECTOR_CFG_MSGSET 0xc0
20792 #undef	MC_CMD_0xc0_PRIVILEGE_CTG
20793 
20794 #define	MC_CMD_0xc0_PRIVILEGE_CTG SRIOV_CTG_GENERAL
20795 
20796 /* MC_CMD_SET_VECTOR_CFG_IN msgrequest */
20797 #define	MC_CMD_SET_VECTOR_CFG_IN_LEN 12
20798 /* Base absolute interrupt vector number, or MC_CMD_RESOURCE_INSTANCE_ANY to
20799  * let the system find a suitable base.
20800  */
20801 #define	MC_CMD_SET_VECTOR_CFG_IN_VEC_BASE_OFST 0
20802 #define	MC_CMD_SET_VECTOR_CFG_IN_VEC_BASE_LEN 4
20803 /* Number of interrupt vectors allocate to this PF. */
20804 #define	MC_CMD_SET_VECTOR_CFG_IN_VECS_PER_PF_OFST 4
20805 #define	MC_CMD_SET_VECTOR_CFG_IN_VECS_PER_PF_LEN 4
20806 /* Number of interrupt vectors to allocate per VF. */
20807 #define	MC_CMD_SET_VECTOR_CFG_IN_VECS_PER_VF_OFST 8
20808 #define	MC_CMD_SET_VECTOR_CFG_IN_VECS_PER_VF_LEN 4
20809 
20810 /* MC_CMD_SET_VECTOR_CFG_OUT msgresponse */
20811 #define	MC_CMD_SET_VECTOR_CFG_OUT_LEN 0
20812 
20813 
20814 /***********************************/
20815 /* MC_CMD_VPORT_ADD_MAC_ADDRESS
20816  * Add a MAC address to a v-port
20817  */
20818 #define	MC_CMD_VPORT_ADD_MAC_ADDRESS 0xa8
20819 #define	MC_CMD_VPORT_ADD_MAC_ADDRESS_MSGSET 0xa8
20820 #undef	MC_CMD_0xa8_PRIVILEGE_CTG
20821 
20822 #define	MC_CMD_0xa8_PRIVILEGE_CTG SRIOV_CTG_GENERAL
20823 
20824 /* MC_CMD_VPORT_ADD_MAC_ADDRESS_IN msgrequest */
20825 #define	MC_CMD_VPORT_ADD_MAC_ADDRESS_IN_LEN 10
20826 /* The handle of the v-port */
20827 #define	MC_CMD_VPORT_ADD_MAC_ADDRESS_IN_VPORT_ID_OFST 0
20828 #define	MC_CMD_VPORT_ADD_MAC_ADDRESS_IN_VPORT_ID_LEN 4
20829 /* MAC address to add */
20830 #define	MC_CMD_VPORT_ADD_MAC_ADDRESS_IN_MACADDR_OFST 4
20831 #define	MC_CMD_VPORT_ADD_MAC_ADDRESS_IN_MACADDR_LEN 6
20832 
20833 /* MC_CMD_VPORT_ADD_MAC_ADDRESS_OUT msgresponse */
20834 #define	MC_CMD_VPORT_ADD_MAC_ADDRESS_OUT_LEN 0
20835 
20836 
20837 /***********************************/
20838 /* MC_CMD_VPORT_DEL_MAC_ADDRESS
20839  * Delete a MAC address from a v-port
20840  */
20841 #define	MC_CMD_VPORT_DEL_MAC_ADDRESS 0xa9
20842 #define	MC_CMD_VPORT_DEL_MAC_ADDRESS_MSGSET 0xa9
20843 #undef	MC_CMD_0xa9_PRIVILEGE_CTG
20844 
20845 #define	MC_CMD_0xa9_PRIVILEGE_CTG SRIOV_CTG_GENERAL
20846 
20847 /* MC_CMD_VPORT_DEL_MAC_ADDRESS_IN msgrequest */
20848 #define	MC_CMD_VPORT_DEL_MAC_ADDRESS_IN_LEN 10
20849 /* The handle of the v-port */
20850 #define	MC_CMD_VPORT_DEL_MAC_ADDRESS_IN_VPORT_ID_OFST 0
20851 #define	MC_CMD_VPORT_DEL_MAC_ADDRESS_IN_VPORT_ID_LEN 4
20852 /* MAC address to add */
20853 #define	MC_CMD_VPORT_DEL_MAC_ADDRESS_IN_MACADDR_OFST 4
20854 #define	MC_CMD_VPORT_DEL_MAC_ADDRESS_IN_MACADDR_LEN 6
20855 
20856 /* MC_CMD_VPORT_DEL_MAC_ADDRESS_OUT msgresponse */
20857 #define	MC_CMD_VPORT_DEL_MAC_ADDRESS_OUT_LEN 0
20858 
20859 
20860 /***********************************/
20861 /* MC_CMD_VPORT_GET_MAC_ADDRESSES
20862  * Delete a MAC address from a v-port
20863  */
20864 #define	MC_CMD_VPORT_GET_MAC_ADDRESSES 0xaa
20865 #define	MC_CMD_VPORT_GET_MAC_ADDRESSES_MSGSET 0xaa
20866 #undef	MC_CMD_0xaa_PRIVILEGE_CTG
20867 
20868 #define	MC_CMD_0xaa_PRIVILEGE_CTG SRIOV_CTG_GENERAL
20869 
20870 /* MC_CMD_VPORT_GET_MAC_ADDRESSES_IN msgrequest */
20871 #define	MC_CMD_VPORT_GET_MAC_ADDRESSES_IN_LEN 4
20872 /* The handle of the v-port */
20873 #define	MC_CMD_VPORT_GET_MAC_ADDRESSES_IN_VPORT_ID_OFST 0
20874 #define	MC_CMD_VPORT_GET_MAC_ADDRESSES_IN_VPORT_ID_LEN 4
20875 
20876 /* MC_CMD_VPORT_GET_MAC_ADDRESSES_OUT msgresponse */
20877 #define	MC_CMD_VPORT_GET_MAC_ADDRESSES_OUT_LENMIN 4
20878 #define	MC_CMD_VPORT_GET_MAC_ADDRESSES_OUT_LENMAX 250
20879 #define	MC_CMD_VPORT_GET_MAC_ADDRESSES_OUT_LENMAX_MCDI2 1018
20880 #define	MC_CMD_VPORT_GET_MAC_ADDRESSES_OUT_LEN(num) (4+6*(num))
20881 #define	MC_CMD_VPORT_GET_MAC_ADDRESSES_OUT_MACADDR_NUM(len) (((len)-4)/6)
20882 /* The number of MAC addresses returned */
20883 #define	MC_CMD_VPORT_GET_MAC_ADDRESSES_OUT_MACADDR_COUNT_OFST 0
20884 #define	MC_CMD_VPORT_GET_MAC_ADDRESSES_OUT_MACADDR_COUNT_LEN 4
20885 /* Array of MAC addresses */
20886 #define	MC_CMD_VPORT_GET_MAC_ADDRESSES_OUT_MACADDR_OFST 4
20887 #define	MC_CMD_VPORT_GET_MAC_ADDRESSES_OUT_MACADDR_LEN 6
20888 #define	MC_CMD_VPORT_GET_MAC_ADDRESSES_OUT_MACADDR_MINNUM 0
20889 #define	MC_CMD_VPORT_GET_MAC_ADDRESSES_OUT_MACADDR_MAXNUM 41
20890 #define	MC_CMD_VPORT_GET_MAC_ADDRESSES_OUT_MACADDR_MAXNUM_MCDI2 169
20891 
20892 
20893 /***********************************/
20894 /* MC_CMD_VPORT_RECONFIGURE
20895  * Replace VLAN tags and/or MAC addresses of an existing v-port. If the v-port
20896  * has already been passed to another function (v-port's user), then that
20897  * function will be reset before applying the changes.
20898  */
20899 #define	MC_CMD_VPORT_RECONFIGURE 0xeb
20900 #define	MC_CMD_VPORT_RECONFIGURE_MSGSET 0xeb
20901 #undef	MC_CMD_0xeb_PRIVILEGE_CTG
20902 
20903 #define	MC_CMD_0xeb_PRIVILEGE_CTG SRIOV_CTG_GENERAL
20904 
20905 /* MC_CMD_VPORT_RECONFIGURE_IN msgrequest */
20906 #define	MC_CMD_VPORT_RECONFIGURE_IN_LEN 44
20907 /* The handle of the v-port */
20908 #define	MC_CMD_VPORT_RECONFIGURE_IN_VPORT_ID_OFST 0
20909 #define	MC_CMD_VPORT_RECONFIGURE_IN_VPORT_ID_LEN 4
20910 /* Flags requesting what should be changed. */
20911 #define	MC_CMD_VPORT_RECONFIGURE_IN_FLAGS_OFST 4
20912 #define	MC_CMD_VPORT_RECONFIGURE_IN_FLAGS_LEN 4
20913 #define	MC_CMD_VPORT_RECONFIGURE_IN_REPLACE_VLAN_TAGS_OFST 4
20914 #define	MC_CMD_VPORT_RECONFIGURE_IN_REPLACE_VLAN_TAGS_LBN 0
20915 #define	MC_CMD_VPORT_RECONFIGURE_IN_REPLACE_VLAN_TAGS_WIDTH 1
20916 #define	MC_CMD_VPORT_RECONFIGURE_IN_REPLACE_MACADDRS_OFST 4
20917 #define	MC_CMD_VPORT_RECONFIGURE_IN_REPLACE_MACADDRS_LBN 1
20918 #define	MC_CMD_VPORT_RECONFIGURE_IN_REPLACE_MACADDRS_WIDTH 1
20919 /* The number of VLAN tags to insert/remove. An error will be returned if
20920  * incompatible with the number of VLAN tags specified for the upstream
20921  * v-switch.
20922  */
20923 #define	MC_CMD_VPORT_RECONFIGURE_IN_NUM_VLAN_TAGS_OFST 8
20924 #define	MC_CMD_VPORT_RECONFIGURE_IN_NUM_VLAN_TAGS_LEN 4
20925 /* The actual VLAN tags to insert/remove */
20926 #define	MC_CMD_VPORT_RECONFIGURE_IN_VLAN_TAGS_OFST 12
20927 #define	MC_CMD_VPORT_RECONFIGURE_IN_VLAN_TAGS_LEN 4
20928 #define	MC_CMD_VPORT_RECONFIGURE_IN_VLAN_TAG_0_OFST 12
20929 #define	MC_CMD_VPORT_RECONFIGURE_IN_VLAN_TAG_0_LBN 0
20930 #define	MC_CMD_VPORT_RECONFIGURE_IN_VLAN_TAG_0_WIDTH 16
20931 #define	MC_CMD_VPORT_RECONFIGURE_IN_VLAN_TAG_1_OFST 12
20932 #define	MC_CMD_VPORT_RECONFIGURE_IN_VLAN_TAG_1_LBN 16
20933 #define	MC_CMD_VPORT_RECONFIGURE_IN_VLAN_TAG_1_WIDTH 16
20934 /* The number of MAC addresses to add */
20935 #define	MC_CMD_VPORT_RECONFIGURE_IN_NUM_MACADDRS_OFST 16
20936 #define	MC_CMD_VPORT_RECONFIGURE_IN_NUM_MACADDRS_LEN 4
20937 /* MAC addresses to add */
20938 #define	MC_CMD_VPORT_RECONFIGURE_IN_MACADDRS_OFST 20
20939 #define	MC_CMD_VPORT_RECONFIGURE_IN_MACADDRS_LEN 6
20940 #define	MC_CMD_VPORT_RECONFIGURE_IN_MACADDRS_NUM 4
20941 
20942 /* MC_CMD_VPORT_RECONFIGURE_OUT msgresponse */
20943 #define	MC_CMD_VPORT_RECONFIGURE_OUT_LEN 4
20944 #define	MC_CMD_VPORT_RECONFIGURE_OUT_FLAGS_OFST 0
20945 #define	MC_CMD_VPORT_RECONFIGURE_OUT_FLAGS_LEN 4
20946 #define	MC_CMD_VPORT_RECONFIGURE_OUT_RESET_DONE_OFST 0
20947 #define	MC_CMD_VPORT_RECONFIGURE_OUT_RESET_DONE_LBN 0
20948 #define	MC_CMD_VPORT_RECONFIGURE_OUT_RESET_DONE_WIDTH 1
20949 
20950 
20951 /***********************************/
20952 /* MC_CMD_EVB_PORT_QUERY
20953  * read some config of v-port.
20954  */
20955 #define	MC_CMD_EVB_PORT_QUERY 0x62
20956 #define	MC_CMD_EVB_PORT_QUERY_MSGSET 0x62
20957 #undef	MC_CMD_0x62_PRIVILEGE_CTG
20958 
20959 #define	MC_CMD_0x62_PRIVILEGE_CTG SRIOV_CTG_GENERAL
20960 
20961 /* MC_CMD_EVB_PORT_QUERY_IN msgrequest */
20962 #define	MC_CMD_EVB_PORT_QUERY_IN_LEN 4
20963 /* The handle of the v-port */
20964 #define	MC_CMD_EVB_PORT_QUERY_IN_PORT_ID_OFST 0
20965 #define	MC_CMD_EVB_PORT_QUERY_IN_PORT_ID_LEN 4
20966 
20967 /* MC_CMD_EVB_PORT_QUERY_OUT msgresponse */
20968 #define	MC_CMD_EVB_PORT_QUERY_OUT_LEN 8
20969 /* The EVB port flags as defined at MC_CMD_VPORT_ALLOC. */
20970 #define	MC_CMD_EVB_PORT_QUERY_OUT_PORT_FLAGS_OFST 0
20971 #define	MC_CMD_EVB_PORT_QUERY_OUT_PORT_FLAGS_LEN 4
20972 /* The number of VLAN tags that may be used on a v-adaptor connected to this
20973  * EVB port.
20974  */
20975 #define	MC_CMD_EVB_PORT_QUERY_OUT_NUM_AVAILABLE_VLAN_TAGS_OFST 4
20976 #define	MC_CMD_EVB_PORT_QUERY_OUT_NUM_AVAILABLE_VLAN_TAGS_LEN 4
20977 
20978 
20979 /***********************************/
20980 /* MC_CMD_DUMP_BUFTBL_ENTRIES
20981  * Dump buffer table entries, mainly for command client debug use. Dumps
20982  * absolute entries, and does not use chunk handles. All entries must be in
20983  * range, and used for q page mapping, Although the latter restriction may be
20984  * lifted in future.
20985  */
20986 #define	MC_CMD_DUMP_BUFTBL_ENTRIES 0xab
20987 #define	MC_CMD_DUMP_BUFTBL_ENTRIES_MSGSET 0xab
20988 #undef	MC_CMD_0xab_PRIVILEGE_CTG
20989 
20990 #define	MC_CMD_0xab_PRIVILEGE_CTG SRIOV_CTG_INSECURE
20991 
20992 /* MC_CMD_DUMP_BUFTBL_ENTRIES_IN msgrequest */
20993 #define	MC_CMD_DUMP_BUFTBL_ENTRIES_IN_LEN 8
20994 /* Index of the first buffer table entry. */
20995 #define	MC_CMD_DUMP_BUFTBL_ENTRIES_IN_FIRSTID_OFST 0
20996 #define	MC_CMD_DUMP_BUFTBL_ENTRIES_IN_FIRSTID_LEN 4
20997 /* Number of buffer table entries to dump. */
20998 #define	MC_CMD_DUMP_BUFTBL_ENTRIES_IN_NUMENTRIES_OFST 4
20999 #define	MC_CMD_DUMP_BUFTBL_ENTRIES_IN_NUMENTRIES_LEN 4
21000 
21001 /* MC_CMD_DUMP_BUFTBL_ENTRIES_OUT msgresponse */
21002 #define	MC_CMD_DUMP_BUFTBL_ENTRIES_OUT_LENMIN 12
21003 #define	MC_CMD_DUMP_BUFTBL_ENTRIES_OUT_LENMAX 252
21004 #define	MC_CMD_DUMP_BUFTBL_ENTRIES_OUT_LENMAX_MCDI2 1020
21005 #define	MC_CMD_DUMP_BUFTBL_ENTRIES_OUT_LEN(num) (0+12*(num))
21006 #define	MC_CMD_DUMP_BUFTBL_ENTRIES_OUT_ENTRY_NUM(len) (((len)-0)/12)
21007 /* Raw buffer table entries, layed out as BUFTBL_ENTRY. */
21008 #define	MC_CMD_DUMP_BUFTBL_ENTRIES_OUT_ENTRY_OFST 0
21009 #define	MC_CMD_DUMP_BUFTBL_ENTRIES_OUT_ENTRY_LEN 12
21010 #define	MC_CMD_DUMP_BUFTBL_ENTRIES_OUT_ENTRY_MINNUM 1
21011 #define	MC_CMD_DUMP_BUFTBL_ENTRIES_OUT_ENTRY_MAXNUM 21
21012 #define	MC_CMD_DUMP_BUFTBL_ENTRIES_OUT_ENTRY_MAXNUM_MCDI2 85
21013 
21014 
21015 /***********************************/
21016 /* MC_CMD_SET_RXDP_CONFIG
21017  * Set global RXDP configuration settings
21018  */
21019 #define	MC_CMD_SET_RXDP_CONFIG 0xc1
21020 #define	MC_CMD_SET_RXDP_CONFIG_MSGSET 0xc1
21021 #undef	MC_CMD_0xc1_PRIVILEGE_CTG
21022 
21023 #define	MC_CMD_0xc1_PRIVILEGE_CTG SRIOV_CTG_ADMIN
21024 
21025 /* MC_CMD_SET_RXDP_CONFIG_IN msgrequest */
21026 #define	MC_CMD_SET_RXDP_CONFIG_IN_LEN 4
21027 #define	MC_CMD_SET_RXDP_CONFIG_IN_DATA_OFST 0
21028 #define	MC_CMD_SET_RXDP_CONFIG_IN_DATA_LEN 4
21029 #define	MC_CMD_SET_RXDP_CONFIG_IN_PAD_HOST_DMA_OFST 0
21030 #define	MC_CMD_SET_RXDP_CONFIG_IN_PAD_HOST_DMA_LBN 0
21031 #define	MC_CMD_SET_RXDP_CONFIG_IN_PAD_HOST_DMA_WIDTH 1
21032 #define	MC_CMD_SET_RXDP_CONFIG_IN_PAD_HOST_LEN_OFST 0
21033 #define	MC_CMD_SET_RXDP_CONFIG_IN_PAD_HOST_LEN_LBN 1
21034 #define	MC_CMD_SET_RXDP_CONFIG_IN_PAD_HOST_LEN_WIDTH 2
21035 /* enum: pad to 64 bytes */
21036 #define	MC_CMD_SET_RXDP_CONFIG_IN_PAD_HOST_64 0x0
21037 /* enum: pad to 128 bytes (Medford only) */
21038 #define	MC_CMD_SET_RXDP_CONFIG_IN_PAD_HOST_128 0x1
21039 /* enum: pad to 256 bytes (Medford only) */
21040 #define	MC_CMD_SET_RXDP_CONFIG_IN_PAD_HOST_256 0x2
21041 
21042 /* MC_CMD_SET_RXDP_CONFIG_OUT msgresponse */
21043 #define	MC_CMD_SET_RXDP_CONFIG_OUT_LEN 0
21044 
21045 
21046 /***********************************/
21047 /* MC_CMD_GET_RXDP_CONFIG
21048  * Get global RXDP configuration settings
21049  */
21050 #define	MC_CMD_GET_RXDP_CONFIG 0xc2
21051 #define	MC_CMD_GET_RXDP_CONFIG_MSGSET 0xc2
21052 #undef	MC_CMD_0xc2_PRIVILEGE_CTG
21053 
21054 #define	MC_CMD_0xc2_PRIVILEGE_CTG SRIOV_CTG_GENERAL
21055 
21056 /* MC_CMD_GET_RXDP_CONFIG_IN msgrequest */
21057 #define	MC_CMD_GET_RXDP_CONFIG_IN_LEN 0
21058 
21059 /* MC_CMD_GET_RXDP_CONFIG_OUT msgresponse */
21060 #define	MC_CMD_GET_RXDP_CONFIG_OUT_LEN 4
21061 #define	MC_CMD_GET_RXDP_CONFIG_OUT_DATA_OFST 0
21062 #define	MC_CMD_GET_RXDP_CONFIG_OUT_DATA_LEN 4
21063 #define	MC_CMD_GET_RXDP_CONFIG_OUT_PAD_HOST_DMA_OFST 0
21064 #define	MC_CMD_GET_RXDP_CONFIG_OUT_PAD_HOST_DMA_LBN 0
21065 #define	MC_CMD_GET_RXDP_CONFIG_OUT_PAD_HOST_DMA_WIDTH 1
21066 #define	MC_CMD_GET_RXDP_CONFIG_OUT_PAD_HOST_LEN_OFST 0
21067 #define	MC_CMD_GET_RXDP_CONFIG_OUT_PAD_HOST_LEN_LBN 1
21068 #define	MC_CMD_GET_RXDP_CONFIG_OUT_PAD_HOST_LEN_WIDTH 2
21069 /*             Enum values, see field(s): */
21070 /*                MC_CMD_SET_RXDP_CONFIG/MC_CMD_SET_RXDP_CONFIG_IN/PAD_HOST_LEN */
21071 
21072 
21073 /***********************************/
21074 /* MC_CMD_GET_CLOCK
21075  * Return the system and PDCPU clock frequencies.
21076  */
21077 #define	MC_CMD_GET_CLOCK 0xac
21078 #define	MC_CMD_GET_CLOCK_MSGSET 0xac
21079 #undef	MC_CMD_0xac_PRIVILEGE_CTG
21080 
21081 #define	MC_CMD_0xac_PRIVILEGE_CTG SRIOV_CTG_GENERAL
21082 
21083 /* MC_CMD_GET_CLOCK_IN msgrequest */
21084 #define	MC_CMD_GET_CLOCK_IN_LEN 0
21085 
21086 /* MC_CMD_GET_CLOCK_OUT msgresponse */
21087 #define	MC_CMD_GET_CLOCK_OUT_LEN 8
21088 /* System frequency, MHz */
21089 #define	MC_CMD_GET_CLOCK_OUT_SYS_FREQ_OFST 0
21090 #define	MC_CMD_GET_CLOCK_OUT_SYS_FREQ_LEN 4
21091 /* DPCPU frequency, MHz */
21092 #define	MC_CMD_GET_CLOCK_OUT_DPCPU_FREQ_OFST 4
21093 #define	MC_CMD_GET_CLOCK_OUT_DPCPU_FREQ_LEN 4
21094 
21095 
21096 /***********************************/
21097 /* MC_CMD_SET_CLOCK
21098  * Control the system and DPCPU clock frequencies. Changes are lost reboot.
21099  */
21100 #define	MC_CMD_SET_CLOCK 0xad
21101 #define	MC_CMD_SET_CLOCK_MSGSET 0xad
21102 #undef	MC_CMD_0xad_PRIVILEGE_CTG
21103 
21104 #define	MC_CMD_0xad_PRIVILEGE_CTG SRIOV_CTG_INSECURE
21105 
21106 /* MC_CMD_SET_CLOCK_IN msgrequest */
21107 #define	MC_CMD_SET_CLOCK_IN_LEN 28
21108 /* Requested frequency in MHz for system clock domain */
21109 #define	MC_CMD_SET_CLOCK_IN_SYS_FREQ_OFST 0
21110 #define	MC_CMD_SET_CLOCK_IN_SYS_FREQ_LEN 4
21111 /* enum: Leave the system clock domain frequency unchanged */
21112 #define	MC_CMD_SET_CLOCK_IN_SYS_DOMAIN_DONT_CHANGE 0x0
21113 /* Requested frequency in MHz for inter-core clock domain */
21114 #define	MC_CMD_SET_CLOCK_IN_ICORE_FREQ_OFST 4
21115 #define	MC_CMD_SET_CLOCK_IN_ICORE_FREQ_LEN 4
21116 /* enum: Leave the inter-core clock domain frequency unchanged */
21117 #define	MC_CMD_SET_CLOCK_IN_ICORE_DOMAIN_DONT_CHANGE 0x0
21118 /* Requested frequency in MHz for DPCPU clock domain */
21119 #define	MC_CMD_SET_CLOCK_IN_DPCPU_FREQ_OFST 8
21120 #define	MC_CMD_SET_CLOCK_IN_DPCPU_FREQ_LEN 4
21121 /* enum: Leave the DPCPU clock domain frequency unchanged */
21122 #define	MC_CMD_SET_CLOCK_IN_DPCPU_DOMAIN_DONT_CHANGE 0x0
21123 /* Requested frequency in MHz for PCS clock domain */
21124 #define	MC_CMD_SET_CLOCK_IN_PCS_FREQ_OFST 12
21125 #define	MC_CMD_SET_CLOCK_IN_PCS_FREQ_LEN 4
21126 /* enum: Leave the PCS clock domain frequency unchanged */
21127 #define	MC_CMD_SET_CLOCK_IN_PCS_DOMAIN_DONT_CHANGE 0x0
21128 /* Requested frequency in MHz for MC clock domain */
21129 #define	MC_CMD_SET_CLOCK_IN_MC_FREQ_OFST 16
21130 #define	MC_CMD_SET_CLOCK_IN_MC_FREQ_LEN 4
21131 /* enum: Leave the MC clock domain frequency unchanged */
21132 #define	MC_CMD_SET_CLOCK_IN_MC_DOMAIN_DONT_CHANGE 0x0
21133 /* Requested frequency in MHz for rmon clock domain */
21134 #define	MC_CMD_SET_CLOCK_IN_RMON_FREQ_OFST 20
21135 #define	MC_CMD_SET_CLOCK_IN_RMON_FREQ_LEN 4
21136 /* enum: Leave the rmon clock domain frequency unchanged */
21137 #define	MC_CMD_SET_CLOCK_IN_RMON_DOMAIN_DONT_CHANGE 0x0
21138 /* Requested frequency in MHz for vswitch clock domain */
21139 #define	MC_CMD_SET_CLOCK_IN_VSWITCH_FREQ_OFST 24
21140 #define	MC_CMD_SET_CLOCK_IN_VSWITCH_FREQ_LEN 4
21141 /* enum: Leave the vswitch clock domain frequency unchanged */
21142 #define	MC_CMD_SET_CLOCK_IN_VSWITCH_DOMAIN_DONT_CHANGE 0x0
21143 
21144 /* MC_CMD_SET_CLOCK_OUT msgresponse */
21145 #define	MC_CMD_SET_CLOCK_OUT_LEN 28
21146 /* Resulting system frequency in MHz */
21147 #define	MC_CMD_SET_CLOCK_OUT_SYS_FREQ_OFST 0
21148 #define	MC_CMD_SET_CLOCK_OUT_SYS_FREQ_LEN 4
21149 /* enum: The system clock domain doesn't exist */
21150 #define	MC_CMD_SET_CLOCK_OUT_SYS_DOMAIN_UNSUPPORTED 0x0
21151 /* Resulting inter-core frequency in MHz */
21152 #define	MC_CMD_SET_CLOCK_OUT_ICORE_FREQ_OFST 4
21153 #define	MC_CMD_SET_CLOCK_OUT_ICORE_FREQ_LEN 4
21154 /* enum: The inter-core clock domain doesn't exist / isn't used */
21155 #define	MC_CMD_SET_CLOCK_OUT_ICORE_DOMAIN_UNSUPPORTED 0x0
21156 /* Resulting DPCPU frequency in MHz */
21157 #define	MC_CMD_SET_CLOCK_OUT_DPCPU_FREQ_OFST 8
21158 #define	MC_CMD_SET_CLOCK_OUT_DPCPU_FREQ_LEN 4
21159 /* enum: The dpcpu clock domain doesn't exist */
21160 #define	MC_CMD_SET_CLOCK_OUT_DPCPU_DOMAIN_UNSUPPORTED 0x0
21161 /* Resulting PCS frequency in MHz */
21162 #define	MC_CMD_SET_CLOCK_OUT_PCS_FREQ_OFST 12
21163 #define	MC_CMD_SET_CLOCK_OUT_PCS_FREQ_LEN 4
21164 /* enum: The PCS clock domain doesn't exist / isn't controlled */
21165 #define	MC_CMD_SET_CLOCK_OUT_PCS_DOMAIN_UNSUPPORTED 0x0
21166 /* Resulting MC frequency in MHz */
21167 #define	MC_CMD_SET_CLOCK_OUT_MC_FREQ_OFST 16
21168 #define	MC_CMD_SET_CLOCK_OUT_MC_FREQ_LEN 4
21169 /* enum: The MC clock domain doesn't exist / isn't controlled */
21170 #define	MC_CMD_SET_CLOCK_OUT_MC_DOMAIN_UNSUPPORTED 0x0
21171 /* Resulting rmon frequency in MHz */
21172 #define	MC_CMD_SET_CLOCK_OUT_RMON_FREQ_OFST 20
21173 #define	MC_CMD_SET_CLOCK_OUT_RMON_FREQ_LEN 4
21174 /* enum: The rmon clock domain doesn't exist / isn't controlled */
21175 #define	MC_CMD_SET_CLOCK_OUT_RMON_DOMAIN_UNSUPPORTED 0x0
21176 /* Resulting vswitch frequency in MHz */
21177 #define	MC_CMD_SET_CLOCK_OUT_VSWITCH_FREQ_OFST 24
21178 #define	MC_CMD_SET_CLOCK_OUT_VSWITCH_FREQ_LEN 4
21179 /* enum: The vswitch clock domain doesn't exist / isn't controlled */
21180 #define	MC_CMD_SET_CLOCK_OUT_VSWITCH_DOMAIN_UNSUPPORTED 0x0
21181 
21182 
21183 /***********************************/
21184 /* MC_CMD_DPCPU_RPC
21185  * Send an arbitrary DPCPU message.
21186  */
21187 #define	MC_CMD_DPCPU_RPC 0xae
21188 #define	MC_CMD_DPCPU_RPC_MSGSET 0xae
21189 #undef	MC_CMD_0xae_PRIVILEGE_CTG
21190 
21191 #define	MC_CMD_0xae_PRIVILEGE_CTG SRIOV_CTG_INSECURE
21192 
21193 /* MC_CMD_DPCPU_RPC_IN msgrequest */
21194 #define	MC_CMD_DPCPU_RPC_IN_LEN 36
21195 #define	MC_CMD_DPCPU_RPC_IN_CPU_OFST 0
21196 #define	MC_CMD_DPCPU_RPC_IN_CPU_LEN 4
21197 /* enum: RxDPCPU0 */
21198 #define	MC_CMD_DPCPU_RPC_IN_DPCPU_RX0 0x0
21199 /* enum: TxDPCPU0 */
21200 #define	MC_CMD_DPCPU_RPC_IN_DPCPU_TX0 0x1
21201 /* enum: TxDPCPU1 */
21202 #define	MC_CMD_DPCPU_RPC_IN_DPCPU_TX1 0x2
21203 /* enum: RxDPCPU1 (Medford only) */
21204 #define	MC_CMD_DPCPU_RPC_IN_DPCPU_RX1 0x3
21205 /* enum: RxDPCPU (will be for the calling function; for now, just an alias of
21206  * DPCPU_RX0)
21207  */
21208 #define	MC_CMD_DPCPU_RPC_IN_DPCPU_RX 0x80
21209 /* enum: TxDPCPU (will be for the calling function; for now, just an alias of
21210  * DPCPU_TX0)
21211  */
21212 #define	MC_CMD_DPCPU_RPC_IN_DPCPU_TX 0x81
21213 /* First 8 bits [39:32] of DATA are consumed by MC-DPCPU protocol and must be
21214  * initialised to zero
21215  */
21216 #define	MC_CMD_DPCPU_RPC_IN_DATA_OFST 4
21217 #define	MC_CMD_DPCPU_RPC_IN_DATA_LEN 32
21218 #define	MC_CMD_DPCPU_RPC_IN_HDR_CMD_CMDNUM_OFST 4
21219 #define	MC_CMD_DPCPU_RPC_IN_HDR_CMD_CMDNUM_LBN 8
21220 #define	MC_CMD_DPCPU_RPC_IN_HDR_CMD_CMDNUM_WIDTH 8
21221 #define	MC_CMD_DPCPU_RPC_IN_CMDNUM_TXDPCPU_READ 0x6 /* enum */
21222 #define	MC_CMD_DPCPU_RPC_IN_CMDNUM_TXDPCPU_WRITE 0x7 /* enum */
21223 #define	MC_CMD_DPCPU_RPC_IN_CMDNUM_TXDPCPU_SELF_TEST 0xc /* enum */
21224 #define	MC_CMD_DPCPU_RPC_IN_CMDNUM_TXDPCPU_CSR_ACCESS 0xe /* enum */
21225 #define	MC_CMD_DPCPU_RPC_IN_CMDNUM_RXDPCPU_READ 0x46 /* enum */
21226 #define	MC_CMD_DPCPU_RPC_IN_CMDNUM_RXDPCPU_WRITE 0x47 /* enum */
21227 #define	MC_CMD_DPCPU_RPC_IN_CMDNUM_RXDPCPU_SELF_TEST 0x4a /* enum */
21228 #define	MC_CMD_DPCPU_RPC_IN_CMDNUM_RXDPCPU_CSR_ACCESS 0x4c /* enum */
21229 #define	MC_CMD_DPCPU_RPC_IN_CMDNUM_RXDPCPU_SET_MC_REPLAY_CNTXT 0x4d /* enum */
21230 #define	MC_CMD_DPCPU_RPC_IN_HDR_CMD_REQ_OBJID_OFST 4
21231 #define	MC_CMD_DPCPU_RPC_IN_HDR_CMD_REQ_OBJID_LBN 16
21232 #define	MC_CMD_DPCPU_RPC_IN_HDR_CMD_REQ_OBJID_WIDTH 16
21233 #define	MC_CMD_DPCPU_RPC_IN_HDR_CMD_REQ_ADDR_OFST 4
21234 #define	MC_CMD_DPCPU_RPC_IN_HDR_CMD_REQ_ADDR_LBN 16
21235 #define	MC_CMD_DPCPU_RPC_IN_HDR_CMD_REQ_ADDR_WIDTH 16
21236 #define	MC_CMD_DPCPU_RPC_IN_HDR_CMD_REQ_COUNT_OFST 4
21237 #define	MC_CMD_DPCPU_RPC_IN_HDR_CMD_REQ_COUNT_LBN 48
21238 #define	MC_CMD_DPCPU_RPC_IN_HDR_CMD_REQ_COUNT_WIDTH 16
21239 #define	MC_CMD_DPCPU_RPC_IN_CSR_ACCESS_INFO_OFST 4
21240 #define	MC_CMD_DPCPU_RPC_IN_CSR_ACCESS_INFO_LBN 16
21241 #define	MC_CMD_DPCPU_RPC_IN_CSR_ACCESS_INFO_WIDTH 240
21242 #define	MC_CMD_DPCPU_RPC_IN_CSR_ACCESS_CMD_OFST 4
21243 #define	MC_CMD_DPCPU_RPC_IN_CSR_ACCESS_CMD_LBN 16
21244 #define	MC_CMD_DPCPU_RPC_IN_CSR_ACCESS_CMD_WIDTH 16
21245 #define	MC_CMD_DPCPU_RPC_IN_CSR_ACCESS_CMD_STOP_RETURN_RESULT 0x0 /* enum */
21246 #define	MC_CMD_DPCPU_RPC_IN_CSR_ACCESS_CMD_START_READ 0x1 /* enum */
21247 #define	MC_CMD_DPCPU_RPC_IN_CSR_ACCESS_CMD_START_WRITE 0x2 /* enum */
21248 #define	MC_CMD_DPCPU_RPC_IN_CSR_ACCESS_CMD_START_WRITE_READ 0x3 /* enum */
21249 #define	MC_CMD_DPCPU_RPC_IN_CSR_ACCESS_CMD_START_PIPELINED_READ 0x4 /* enum */
21250 #define	MC_CMD_DPCPU_RPC_IN_CSR_ACCESS_START_DELAY_OFST 4
21251 #define	MC_CMD_DPCPU_RPC_IN_CSR_ACCESS_START_DELAY_LBN 48
21252 #define	MC_CMD_DPCPU_RPC_IN_CSR_ACCESS_START_DELAY_WIDTH 16
21253 #define	MC_CMD_DPCPU_RPC_IN_CSR_ACCESS_RPT_COUNT_OFST 4
21254 #define	MC_CMD_DPCPU_RPC_IN_CSR_ACCESS_RPT_COUNT_LBN 64
21255 #define	MC_CMD_DPCPU_RPC_IN_CSR_ACCESS_RPT_COUNT_WIDTH 16
21256 #define	MC_CMD_DPCPU_RPC_IN_CSR_ACCESS_GAP_DELAY_OFST 4
21257 #define	MC_CMD_DPCPU_RPC_IN_CSR_ACCESS_GAP_DELAY_LBN 80
21258 #define	MC_CMD_DPCPU_RPC_IN_CSR_ACCESS_GAP_DELAY_WIDTH 16
21259 #define	MC_CMD_DPCPU_RPC_IN_MC_REPLAY_MODE_OFST 4
21260 #define	MC_CMD_DPCPU_RPC_IN_MC_REPLAY_MODE_LBN 16
21261 #define	MC_CMD_DPCPU_RPC_IN_MC_REPLAY_MODE_WIDTH 16
21262 #define	MC_CMD_DPCPU_RPC_IN_MC_REPLAY_MODE_CUT_THROUGH 0x1 /* enum */
21263 #define	MC_CMD_DPCPU_RPC_IN_MC_REPLAY_MODE_STORE_FORWARD 0x2 /* enum */
21264 #define	MC_CMD_DPCPU_RPC_IN_MC_REPLAY_MODE_STORE_FORWARD_FIRST 0x3 /* enum */
21265 #define	MC_CMD_DPCPU_RPC_IN_MC_REPLAY_CNTXT_OFST 4
21266 #define	MC_CMD_DPCPU_RPC_IN_MC_REPLAY_CNTXT_LBN 64
21267 #define	MC_CMD_DPCPU_RPC_IN_MC_REPLAY_CNTXT_WIDTH 16
21268 #define	MC_CMD_DPCPU_RPC_IN_WDATA_OFST 12
21269 #define	MC_CMD_DPCPU_RPC_IN_WDATA_LEN 24
21270 /* Register data to write. Only valid in write/write-read. */
21271 #define	MC_CMD_DPCPU_RPC_IN_CSR_ACCESS_DATA_OFST 16
21272 #define	MC_CMD_DPCPU_RPC_IN_CSR_ACCESS_DATA_LEN 4
21273 /* Register address. */
21274 #define	MC_CMD_DPCPU_RPC_IN_CSR_ACCESS_ADDRESS_OFST 20
21275 #define	MC_CMD_DPCPU_RPC_IN_CSR_ACCESS_ADDRESS_LEN 4
21276 
21277 /* MC_CMD_DPCPU_RPC_OUT msgresponse */
21278 #define	MC_CMD_DPCPU_RPC_OUT_LEN 36
21279 #define	MC_CMD_DPCPU_RPC_OUT_RC_OFST 0
21280 #define	MC_CMD_DPCPU_RPC_OUT_RC_LEN 4
21281 /* DATA */
21282 #define	MC_CMD_DPCPU_RPC_OUT_DATA_OFST 4
21283 #define	MC_CMD_DPCPU_RPC_OUT_DATA_LEN 32
21284 #define	MC_CMD_DPCPU_RPC_OUT_HDR_CMD_RESP_ERRCODE_OFST 4
21285 #define	MC_CMD_DPCPU_RPC_OUT_HDR_CMD_RESP_ERRCODE_LBN 32
21286 #define	MC_CMD_DPCPU_RPC_OUT_HDR_CMD_RESP_ERRCODE_WIDTH 16
21287 #define	MC_CMD_DPCPU_RPC_OUT_CSR_ACCESS_READ_COUNT_OFST 4
21288 #define	MC_CMD_DPCPU_RPC_OUT_CSR_ACCESS_READ_COUNT_LBN 48
21289 #define	MC_CMD_DPCPU_RPC_OUT_CSR_ACCESS_READ_COUNT_WIDTH 16
21290 #define	MC_CMD_DPCPU_RPC_OUT_RDATA_OFST 12
21291 #define	MC_CMD_DPCPU_RPC_OUT_RDATA_LEN 24
21292 #define	MC_CMD_DPCPU_RPC_OUT_CSR_ACCESS_READ_VAL_1_OFST 12
21293 #define	MC_CMD_DPCPU_RPC_OUT_CSR_ACCESS_READ_VAL_1_LEN 4
21294 #define	MC_CMD_DPCPU_RPC_OUT_CSR_ACCESS_READ_VAL_2_OFST 16
21295 #define	MC_CMD_DPCPU_RPC_OUT_CSR_ACCESS_READ_VAL_2_LEN 4
21296 #define	MC_CMD_DPCPU_RPC_OUT_CSR_ACCESS_READ_VAL_3_OFST 20
21297 #define	MC_CMD_DPCPU_RPC_OUT_CSR_ACCESS_READ_VAL_3_LEN 4
21298 #define	MC_CMD_DPCPU_RPC_OUT_CSR_ACCESS_READ_VAL_4_OFST 24
21299 #define	MC_CMD_DPCPU_RPC_OUT_CSR_ACCESS_READ_VAL_4_LEN 4
21300 
21301 
21302 /***********************************/
21303 /* MC_CMD_TRIGGER_INTERRUPT
21304  * Trigger an interrupt by prodding the BIU.
21305  */
21306 #define	MC_CMD_TRIGGER_INTERRUPT 0xe3
21307 #define	MC_CMD_TRIGGER_INTERRUPT_MSGSET 0xe3
21308 #undef	MC_CMD_0xe3_PRIVILEGE_CTG
21309 
21310 #define	MC_CMD_0xe3_PRIVILEGE_CTG SRIOV_CTG_GENERAL
21311 
21312 /* MC_CMD_TRIGGER_INTERRUPT_IN msgrequest */
21313 #define	MC_CMD_TRIGGER_INTERRUPT_IN_LEN 4
21314 /* Interrupt level relative to base for function. */
21315 #define	MC_CMD_TRIGGER_INTERRUPT_IN_INTR_LEVEL_OFST 0
21316 #define	MC_CMD_TRIGGER_INTERRUPT_IN_INTR_LEVEL_LEN 4
21317 
21318 /* MC_CMD_TRIGGER_INTERRUPT_OUT msgresponse */
21319 #define	MC_CMD_TRIGGER_INTERRUPT_OUT_LEN 0
21320 
21321 
21322 /***********************************/
21323 /* MC_CMD_SHMBOOT_OP
21324  * Special operations to support (for now) shmboot.
21325  */
21326 #define	MC_CMD_SHMBOOT_OP 0xe6
21327 #define	MC_CMD_SHMBOOT_OP_MSGSET 0xe6
21328 #undef	MC_CMD_0xe6_PRIVILEGE_CTG
21329 
21330 #define	MC_CMD_0xe6_PRIVILEGE_CTG SRIOV_CTG_ADMIN_TSA_UNBOUND
21331 
21332 /* MC_CMD_SHMBOOT_OP_IN msgrequest */
21333 #define	MC_CMD_SHMBOOT_OP_IN_LEN 4
21334 /* Identifies the operation to perform */
21335 #define	MC_CMD_SHMBOOT_OP_IN_SHMBOOT_OP_OFST 0
21336 #define	MC_CMD_SHMBOOT_OP_IN_SHMBOOT_OP_LEN 4
21337 /* enum: Copy slave_data section to the slave core. (Greenport only) */
21338 #define	MC_CMD_SHMBOOT_OP_IN_PUSH_SLAVE_DATA 0x0
21339 
21340 /* MC_CMD_SHMBOOT_OP_OUT msgresponse */
21341 #define	MC_CMD_SHMBOOT_OP_OUT_LEN 0
21342 
21343 
21344 /***********************************/
21345 /* MC_CMD_CAP_BLK_READ
21346  * Read multiple 64bit words from capture block memory
21347  */
21348 #define	MC_CMD_CAP_BLK_READ 0xe7
21349 #define	MC_CMD_CAP_BLK_READ_MSGSET 0xe7
21350 #undef	MC_CMD_0xe7_PRIVILEGE_CTG
21351 
21352 #define	MC_CMD_0xe7_PRIVILEGE_CTG SRIOV_CTG_INSECURE
21353 
21354 /* MC_CMD_CAP_BLK_READ_IN msgrequest */
21355 #define	MC_CMD_CAP_BLK_READ_IN_LEN 12
21356 #define	MC_CMD_CAP_BLK_READ_IN_CAP_REG_OFST 0
21357 #define	MC_CMD_CAP_BLK_READ_IN_CAP_REG_LEN 4
21358 #define	MC_CMD_CAP_BLK_READ_IN_ADDR_OFST 4
21359 #define	MC_CMD_CAP_BLK_READ_IN_ADDR_LEN 4
21360 #define	MC_CMD_CAP_BLK_READ_IN_COUNT_OFST 8
21361 #define	MC_CMD_CAP_BLK_READ_IN_COUNT_LEN 4
21362 
21363 /* MC_CMD_CAP_BLK_READ_OUT msgresponse */
21364 #define	MC_CMD_CAP_BLK_READ_OUT_LENMIN 8
21365 #define	MC_CMD_CAP_BLK_READ_OUT_LENMAX 248
21366 #define	MC_CMD_CAP_BLK_READ_OUT_LENMAX_MCDI2 1016
21367 #define	MC_CMD_CAP_BLK_READ_OUT_LEN(num) (0+8*(num))
21368 #define	MC_CMD_CAP_BLK_READ_OUT_BUFFER_NUM(len) (((len)-0)/8)
21369 #define	MC_CMD_CAP_BLK_READ_OUT_BUFFER_OFST 0
21370 #define	MC_CMD_CAP_BLK_READ_OUT_BUFFER_LEN 8
21371 #define	MC_CMD_CAP_BLK_READ_OUT_BUFFER_LO_OFST 0
21372 #define	MC_CMD_CAP_BLK_READ_OUT_BUFFER_LO_LEN 4
21373 #define	MC_CMD_CAP_BLK_READ_OUT_BUFFER_LO_LBN 0
21374 #define	MC_CMD_CAP_BLK_READ_OUT_BUFFER_LO_WIDTH 32
21375 #define	MC_CMD_CAP_BLK_READ_OUT_BUFFER_HI_OFST 4
21376 #define	MC_CMD_CAP_BLK_READ_OUT_BUFFER_HI_LEN 4
21377 #define	MC_CMD_CAP_BLK_READ_OUT_BUFFER_HI_LBN 32
21378 #define	MC_CMD_CAP_BLK_READ_OUT_BUFFER_HI_WIDTH 32
21379 #define	MC_CMD_CAP_BLK_READ_OUT_BUFFER_MINNUM 1
21380 #define	MC_CMD_CAP_BLK_READ_OUT_BUFFER_MAXNUM 31
21381 #define	MC_CMD_CAP_BLK_READ_OUT_BUFFER_MAXNUM_MCDI2 127
21382 
21383 
21384 /***********************************/
21385 /* MC_CMD_DUMP_DO
21386  * Take a dump of the DUT state
21387  */
21388 #define	MC_CMD_DUMP_DO 0xe8
21389 #define	MC_CMD_DUMP_DO_MSGSET 0xe8
21390 #undef	MC_CMD_0xe8_PRIVILEGE_CTG
21391 
21392 #define	MC_CMD_0xe8_PRIVILEGE_CTG SRIOV_CTG_INSECURE
21393 
21394 /* MC_CMD_DUMP_DO_IN msgrequest */
21395 #define	MC_CMD_DUMP_DO_IN_LEN 52
21396 #define	MC_CMD_DUMP_DO_IN_PADDING_OFST 0
21397 #define	MC_CMD_DUMP_DO_IN_PADDING_LEN 4
21398 #define	MC_CMD_DUMP_DO_IN_DUMPSPEC_SRC_OFST 4
21399 #define	MC_CMD_DUMP_DO_IN_DUMPSPEC_SRC_LEN 4
21400 #define	MC_CMD_DUMP_DO_IN_DUMPSPEC_SRC_CUSTOM 0x0 /* enum */
21401 #define	MC_CMD_DUMP_DO_IN_DUMPSPEC_SRC_DEFAULT 0x1 /* enum */
21402 #define	MC_CMD_DUMP_DO_IN_DUMPSPEC_SRC_CUSTOM_TYPE_OFST 8
21403 #define	MC_CMD_DUMP_DO_IN_DUMPSPEC_SRC_CUSTOM_TYPE_LEN 4
21404 #define	MC_CMD_DUMP_DO_IN_DUMP_LOCATION_NVRAM 0x1 /* enum */
21405 #define	MC_CMD_DUMP_DO_IN_DUMP_LOCATION_HOST_MEMORY 0x2 /* enum */
21406 #define	MC_CMD_DUMP_DO_IN_DUMP_LOCATION_HOST_MEMORY_MLI 0x3 /* enum */
21407 #define	MC_CMD_DUMP_DO_IN_DUMP_LOCATION_UART 0x4 /* enum */
21408 #define	MC_CMD_DUMP_DO_IN_DUMPSPEC_SRC_CUSTOM_NVRAM_PARTITION_TYPE_ID_OFST 12
21409 #define	MC_CMD_DUMP_DO_IN_DUMPSPEC_SRC_CUSTOM_NVRAM_PARTITION_TYPE_ID_LEN 4
21410 #define	MC_CMD_DUMP_DO_IN_DUMPSPEC_SRC_CUSTOM_NVRAM_OFFSET_OFST 16
21411 #define	MC_CMD_DUMP_DO_IN_DUMPSPEC_SRC_CUSTOM_NVRAM_OFFSET_LEN 4
21412 #define	MC_CMD_DUMP_DO_IN_DUMPSPEC_SRC_CUSTOM_HOST_MEMORY_ADDR_LO_OFST 12
21413 #define	MC_CMD_DUMP_DO_IN_DUMPSPEC_SRC_CUSTOM_HOST_MEMORY_ADDR_LO_LEN 4
21414 #define	MC_CMD_DUMP_DO_IN_DUMPSPEC_SRC_CUSTOM_HOST_MEMORY_ADDR_HI_OFST 16
21415 #define	MC_CMD_DUMP_DO_IN_DUMPSPEC_SRC_CUSTOM_HOST_MEMORY_ADDR_HI_LEN 4
21416 #define	MC_CMD_DUMP_DO_IN_DUMPSPEC_SRC_CUSTOM_HOST_MEMORY_MLI_ROOT_ADDR_LO_OFST 12
21417 #define	MC_CMD_DUMP_DO_IN_DUMPSPEC_SRC_CUSTOM_HOST_MEMORY_MLI_ROOT_ADDR_LO_LEN 4
21418 #define	MC_CMD_DUMP_DO_IN_HOST_MEMORY_MLI_PAGE_SIZE 0x1000 /* enum */
21419 #define	MC_CMD_DUMP_DO_IN_DUMPSPEC_SRC_CUSTOM_HOST_MEMORY_MLI_ROOT_ADDR_HI_OFST 16
21420 #define	MC_CMD_DUMP_DO_IN_DUMPSPEC_SRC_CUSTOM_HOST_MEMORY_MLI_ROOT_ADDR_HI_LEN 4
21421 #define	MC_CMD_DUMP_DO_IN_DUMPSPEC_SRC_CUSTOM_HOST_MEMORY_MLI_DEPTH_OFST 20
21422 #define	MC_CMD_DUMP_DO_IN_DUMPSPEC_SRC_CUSTOM_HOST_MEMORY_MLI_DEPTH_LEN 4
21423 #define	MC_CMD_DUMP_DO_IN_HOST_MEMORY_MLI_MAX_DEPTH 0x2 /* enum */
21424 #define	MC_CMD_DUMP_DO_IN_DUMPSPEC_SRC_CUSTOM_UART_PORT_OFST 12
21425 #define	MC_CMD_DUMP_DO_IN_DUMPSPEC_SRC_CUSTOM_UART_PORT_LEN 4
21426 /* enum: The uart port this command was received over (if using a uart
21427  * transport)
21428  */
21429 #define	MC_CMD_DUMP_DO_IN_UART_PORT_SRC 0xff
21430 #define	MC_CMD_DUMP_DO_IN_DUMPSPEC_SRC_CUSTOM_SIZE_OFST 24
21431 #define	MC_CMD_DUMP_DO_IN_DUMPSPEC_SRC_CUSTOM_SIZE_LEN 4
21432 #define	MC_CMD_DUMP_DO_IN_DUMPFILE_DST_OFST 28
21433 #define	MC_CMD_DUMP_DO_IN_DUMPFILE_DST_LEN 4
21434 #define	MC_CMD_DUMP_DO_IN_DUMPFILE_DST_CUSTOM 0x0 /* enum */
21435 #define	MC_CMD_DUMP_DO_IN_DUMPFILE_DST_NVRAM_DUMP_PARTITION 0x1 /* enum */
21436 #define	MC_CMD_DUMP_DO_IN_DUMPFILE_DST_CUSTOM_TYPE_OFST 32
21437 #define	MC_CMD_DUMP_DO_IN_DUMPFILE_DST_CUSTOM_TYPE_LEN 4
21438 /*            Enum values, see field(s): */
21439 /*               MC_CMD_DUMP_DO_IN/DUMPSPEC_SRC_CUSTOM_TYPE */
21440 #define	MC_CMD_DUMP_DO_IN_DUMPFILE_DST_CUSTOM_NVRAM_PARTITION_TYPE_ID_OFST 36
21441 #define	MC_CMD_DUMP_DO_IN_DUMPFILE_DST_CUSTOM_NVRAM_PARTITION_TYPE_ID_LEN 4
21442 #define	MC_CMD_DUMP_DO_IN_DUMPFILE_DST_CUSTOM_NVRAM_OFFSET_OFST 40
21443 #define	MC_CMD_DUMP_DO_IN_DUMPFILE_DST_CUSTOM_NVRAM_OFFSET_LEN 4
21444 #define	MC_CMD_DUMP_DO_IN_DUMPFILE_DST_CUSTOM_HOST_MEMORY_ADDR_LO_OFST 36
21445 #define	MC_CMD_DUMP_DO_IN_DUMPFILE_DST_CUSTOM_HOST_MEMORY_ADDR_LO_LEN 4
21446 #define	MC_CMD_DUMP_DO_IN_DUMPFILE_DST_CUSTOM_HOST_MEMORY_ADDR_HI_OFST 40
21447 #define	MC_CMD_DUMP_DO_IN_DUMPFILE_DST_CUSTOM_HOST_MEMORY_ADDR_HI_LEN 4
21448 #define	MC_CMD_DUMP_DO_IN_DUMPFILE_DST_CUSTOM_HOST_MEMORY_MLI_ROOT_ADDR_LO_OFST 36
21449 #define	MC_CMD_DUMP_DO_IN_DUMPFILE_DST_CUSTOM_HOST_MEMORY_MLI_ROOT_ADDR_LO_LEN 4
21450 #define	MC_CMD_DUMP_DO_IN_DUMPFILE_DST_CUSTOM_HOST_MEMORY_MLI_ROOT_ADDR_HI_OFST 40
21451 #define	MC_CMD_DUMP_DO_IN_DUMPFILE_DST_CUSTOM_HOST_MEMORY_MLI_ROOT_ADDR_HI_LEN 4
21452 #define	MC_CMD_DUMP_DO_IN_DUMPFILE_DST_CUSTOM_HOST_MEMORY_MLI_DEPTH_OFST 44
21453 #define	MC_CMD_DUMP_DO_IN_DUMPFILE_DST_CUSTOM_HOST_MEMORY_MLI_DEPTH_LEN 4
21454 #define	MC_CMD_DUMP_DO_IN_DUMPFILE_DST_CUSTOM_UART_PORT_OFST 36
21455 #define	MC_CMD_DUMP_DO_IN_DUMPFILE_DST_CUSTOM_UART_PORT_LEN 4
21456 #define	MC_CMD_DUMP_DO_IN_DUMPFILE_DST_CUSTOM_SIZE_OFST 48
21457 #define	MC_CMD_DUMP_DO_IN_DUMPFILE_DST_CUSTOM_SIZE_LEN 4
21458 
21459 /* MC_CMD_DUMP_DO_OUT msgresponse */
21460 #define	MC_CMD_DUMP_DO_OUT_LEN 4
21461 #define	MC_CMD_DUMP_DO_OUT_DUMPFILE_SIZE_OFST 0
21462 #define	MC_CMD_DUMP_DO_OUT_DUMPFILE_SIZE_LEN 4
21463 
21464 
21465 /***********************************/
21466 /* MC_CMD_DUMP_CONFIGURE_UNSOLICITED
21467  * Configure unsolicited dumps
21468  */
21469 #define	MC_CMD_DUMP_CONFIGURE_UNSOLICITED 0xe9
21470 #define	MC_CMD_DUMP_CONFIGURE_UNSOLICITED_MSGSET 0xe9
21471 #undef	MC_CMD_0xe9_PRIVILEGE_CTG
21472 
21473 #define	MC_CMD_0xe9_PRIVILEGE_CTG SRIOV_CTG_INSECURE
21474 
21475 /* MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN msgrequest */
21476 #define	MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_LEN 52
21477 #define	MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_ENABLE_OFST 0
21478 #define	MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_ENABLE_LEN 4
21479 #define	MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPSPEC_SRC_OFST 4
21480 #define	MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPSPEC_SRC_LEN 4
21481 /*            Enum values, see field(s): */
21482 /*               MC_CMD_DUMP_DO/MC_CMD_DUMP_DO_IN/DUMPSPEC_SRC */
21483 #define	MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPSPEC_SRC_CUSTOM_TYPE_OFST 8
21484 #define	MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPSPEC_SRC_CUSTOM_TYPE_LEN 4
21485 /*            Enum values, see field(s): */
21486 /*               MC_CMD_DUMP_DO/MC_CMD_DUMP_DO_IN/DUMPSPEC_SRC_CUSTOM_TYPE */
21487 #define	MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPSPEC_SRC_CUSTOM_NVRAM_PARTITION_TYPE_ID_OFST 12
21488 #define	MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPSPEC_SRC_CUSTOM_NVRAM_PARTITION_TYPE_ID_LEN 4
21489 #define	MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPSPEC_SRC_CUSTOM_NVRAM_OFFSET_OFST 16
21490 #define	MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPSPEC_SRC_CUSTOM_NVRAM_OFFSET_LEN 4
21491 #define	MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPSPEC_SRC_CUSTOM_HOST_MEMORY_ADDR_LO_OFST 12
21492 #define	MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPSPEC_SRC_CUSTOM_HOST_MEMORY_ADDR_LO_LEN 4
21493 #define	MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPSPEC_SRC_CUSTOM_HOST_MEMORY_ADDR_HI_OFST 16
21494 #define	MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPSPEC_SRC_CUSTOM_HOST_MEMORY_ADDR_HI_LEN 4
21495 #define	MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPSPEC_SRC_CUSTOM_HOST_MEMORY_MLI_ROOT_ADDR_LO_OFST 12
21496 #define	MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPSPEC_SRC_CUSTOM_HOST_MEMORY_MLI_ROOT_ADDR_LO_LEN 4
21497 #define	MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPSPEC_SRC_CUSTOM_HOST_MEMORY_MLI_ROOT_ADDR_HI_OFST 16
21498 #define	MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPSPEC_SRC_CUSTOM_HOST_MEMORY_MLI_ROOT_ADDR_HI_LEN 4
21499 #define	MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPSPEC_SRC_CUSTOM_HOST_MEMORY_MLI_DEPTH_OFST 20
21500 #define	MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPSPEC_SRC_CUSTOM_HOST_MEMORY_MLI_DEPTH_LEN 4
21501 #define	MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPSPEC_SRC_CUSTOM_UART_PORT_OFST 12
21502 #define	MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPSPEC_SRC_CUSTOM_UART_PORT_LEN 4
21503 #define	MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPSPEC_SRC_CUSTOM_SIZE_OFST 24
21504 #define	MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPSPEC_SRC_CUSTOM_SIZE_LEN 4
21505 #define	MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPFILE_DST_OFST 28
21506 #define	MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPFILE_DST_LEN 4
21507 /*            Enum values, see field(s): */
21508 /*               MC_CMD_DUMP_DO/MC_CMD_DUMP_DO_IN/DUMPFILE_DST */
21509 #define	MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPFILE_DST_CUSTOM_TYPE_OFST 32
21510 #define	MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPFILE_DST_CUSTOM_TYPE_LEN 4
21511 /*            Enum values, see field(s): */
21512 /*               MC_CMD_DUMP_DO/MC_CMD_DUMP_DO_IN/DUMPSPEC_SRC_CUSTOM_TYPE */
21513 #define	MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPFILE_DST_CUSTOM_NVRAM_PARTITION_TYPE_ID_OFST 36
21514 #define	MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPFILE_DST_CUSTOM_NVRAM_PARTITION_TYPE_ID_LEN 4
21515 #define	MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPFILE_DST_CUSTOM_NVRAM_OFFSET_OFST 40
21516 #define	MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPFILE_DST_CUSTOM_NVRAM_OFFSET_LEN 4
21517 #define	MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPFILE_DST_CUSTOM_HOST_MEMORY_ADDR_LO_OFST 36
21518 #define	MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPFILE_DST_CUSTOM_HOST_MEMORY_ADDR_LO_LEN 4
21519 #define	MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPFILE_DST_CUSTOM_HOST_MEMORY_ADDR_HI_OFST 40
21520 #define	MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPFILE_DST_CUSTOM_HOST_MEMORY_ADDR_HI_LEN 4
21521 #define	MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPFILE_DST_CUSTOM_HOST_MEMORY_MLI_ROOT_ADDR_LO_OFST 36
21522 #define	MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPFILE_DST_CUSTOM_HOST_MEMORY_MLI_ROOT_ADDR_LO_LEN 4
21523 #define	MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPFILE_DST_CUSTOM_HOST_MEMORY_MLI_ROOT_ADDR_HI_OFST 40
21524 #define	MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPFILE_DST_CUSTOM_HOST_MEMORY_MLI_ROOT_ADDR_HI_LEN 4
21525 #define	MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPFILE_DST_CUSTOM_HOST_MEMORY_MLI_DEPTH_OFST 44
21526 #define	MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPFILE_DST_CUSTOM_HOST_MEMORY_MLI_DEPTH_LEN 4
21527 #define	MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPFILE_DST_CUSTOM_UART_PORT_OFST 36
21528 #define	MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPFILE_DST_CUSTOM_UART_PORT_LEN 4
21529 #define	MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPFILE_DST_CUSTOM_SIZE_OFST 48
21530 #define	MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPFILE_DST_CUSTOM_SIZE_LEN 4
21531 
21532 
21533 /***********************************/
21534 /* MC_CMD_SET_PSU
21535  * Adjusts power supply parameters. This is a warranty-voiding operation.
21536  * Returns: ENOENT if the parameter or rail specified does not exist, EINVAL if
21537  * the parameter is out of range.
21538  */
21539 #define	MC_CMD_SET_PSU 0xea
21540 #define	MC_CMD_SET_PSU_MSGSET 0xea
21541 #undef	MC_CMD_0xea_PRIVILEGE_CTG
21542 
21543 #define	MC_CMD_0xea_PRIVILEGE_CTG SRIOV_CTG_INSECURE
21544 
21545 /* MC_CMD_SET_PSU_IN msgrequest */
21546 #define	MC_CMD_SET_PSU_IN_LEN 12
21547 #define	MC_CMD_SET_PSU_IN_PARAM_OFST 0
21548 #define	MC_CMD_SET_PSU_IN_PARAM_LEN 4
21549 #define	MC_CMD_SET_PSU_IN_PARAM_SUPPLY_VOLTAGE 0x0 /* enum */
21550 #define	MC_CMD_SET_PSU_IN_RAIL_OFST 4
21551 #define	MC_CMD_SET_PSU_IN_RAIL_LEN 4
21552 #define	MC_CMD_SET_PSU_IN_RAIL_0V9 0x0 /* enum */
21553 #define	MC_CMD_SET_PSU_IN_RAIL_1V2 0x1 /* enum */
21554 /* desired value, eg voltage in mV */
21555 #define	MC_CMD_SET_PSU_IN_VALUE_OFST 8
21556 #define	MC_CMD_SET_PSU_IN_VALUE_LEN 4
21557 
21558 /* MC_CMD_SET_PSU_OUT msgresponse */
21559 #define	MC_CMD_SET_PSU_OUT_LEN 0
21560 
21561 
21562 /***********************************/
21563 /* MC_CMD_GET_FUNCTION_INFO
21564  * Get function information. PF and VF number.
21565  */
21566 #define	MC_CMD_GET_FUNCTION_INFO 0xec
21567 #define	MC_CMD_GET_FUNCTION_INFO_MSGSET 0xec
21568 #undef	MC_CMD_0xec_PRIVILEGE_CTG
21569 
21570 #define	MC_CMD_0xec_PRIVILEGE_CTG SRIOV_CTG_GENERAL
21571 
21572 /* MC_CMD_GET_FUNCTION_INFO_IN msgrequest */
21573 #define	MC_CMD_GET_FUNCTION_INFO_IN_LEN 0
21574 
21575 /* MC_CMD_GET_FUNCTION_INFO_OUT msgresponse */
21576 #define	MC_CMD_GET_FUNCTION_INFO_OUT_LEN 8
21577 #define	MC_CMD_GET_FUNCTION_INFO_OUT_PF_OFST 0
21578 #define	MC_CMD_GET_FUNCTION_INFO_OUT_PF_LEN 4
21579 #define	MC_CMD_GET_FUNCTION_INFO_OUT_VF_OFST 4
21580 #define	MC_CMD_GET_FUNCTION_INFO_OUT_VF_LEN 4
21581 
21582 /* MC_CMD_GET_FUNCTION_INFO_OUT_V2 msgresponse */
21583 #define	MC_CMD_GET_FUNCTION_INFO_OUT_V2_LEN 12
21584 #define	MC_CMD_GET_FUNCTION_INFO_OUT_V2_PF_OFST 0
21585 #define	MC_CMD_GET_FUNCTION_INFO_OUT_V2_PF_LEN 4
21586 #define	MC_CMD_GET_FUNCTION_INFO_OUT_V2_VF_OFST 4
21587 #define	MC_CMD_GET_FUNCTION_INFO_OUT_V2_VF_LEN 4
21588 /* Values from PCIE_INTERFACE enumeration. For NICs with a single interface, or
21589  * in the case of a V1 response, this should be HOST_PRIMARY.
21590  */
21591 #define	MC_CMD_GET_FUNCTION_INFO_OUT_V2_INTF_OFST 8
21592 #define	MC_CMD_GET_FUNCTION_INFO_OUT_V2_INTF_LEN 4
21593 
21594 
21595 /***********************************/
21596 /* MC_CMD_ENABLE_OFFLINE_BIST
21597  * Enters offline BIST mode. All queues are torn down, chip enters quiescent
21598  * mode, calling function gets exclusive MCDI ownership. The only way out is
21599  * reboot.
21600  */
21601 #define	MC_CMD_ENABLE_OFFLINE_BIST 0xed
21602 #define	MC_CMD_ENABLE_OFFLINE_BIST_MSGSET 0xed
21603 #undef	MC_CMD_0xed_PRIVILEGE_CTG
21604 
21605 #define	MC_CMD_0xed_PRIVILEGE_CTG SRIOV_CTG_ADMIN_TSA_UNBOUND
21606 
21607 /* MC_CMD_ENABLE_OFFLINE_BIST_IN msgrequest */
21608 #define	MC_CMD_ENABLE_OFFLINE_BIST_IN_LEN 0
21609 
21610 /* MC_CMD_ENABLE_OFFLINE_BIST_OUT msgresponse */
21611 #define	MC_CMD_ENABLE_OFFLINE_BIST_OUT_LEN 0
21612 
21613 
21614 /***********************************/
21615 /* MC_CMD_UART_SEND_DATA
21616  * Send checksummed[sic] block of data over the uart. Response is a placeholder
21617  * should we wish to make this reliable; currently requests are fire-and-
21618  * forget.
21619  */
21620 #define	MC_CMD_UART_SEND_DATA 0xee
21621 #define	MC_CMD_UART_SEND_DATA_MSGSET 0xee
21622 #undef	MC_CMD_0xee_PRIVILEGE_CTG
21623 
21624 #define	MC_CMD_0xee_PRIVILEGE_CTG SRIOV_CTG_GENERAL
21625 
21626 /* MC_CMD_UART_SEND_DATA_OUT msgrequest */
21627 #define	MC_CMD_UART_SEND_DATA_OUT_LENMIN 16
21628 #define	MC_CMD_UART_SEND_DATA_OUT_LENMAX 252
21629 #define	MC_CMD_UART_SEND_DATA_OUT_LENMAX_MCDI2 1020
21630 #define	MC_CMD_UART_SEND_DATA_OUT_LEN(num) (16+1*(num))
21631 #define	MC_CMD_UART_SEND_DATA_OUT_DATA_NUM(len) (((len)-16)/1)
21632 /* CRC32 over OFFSET, LENGTH, RESERVED, DATA */
21633 #define	MC_CMD_UART_SEND_DATA_OUT_CHECKSUM_OFST 0
21634 #define	MC_CMD_UART_SEND_DATA_OUT_CHECKSUM_LEN 4
21635 /* Offset at which to write the data */
21636 #define	MC_CMD_UART_SEND_DATA_OUT_OFFSET_OFST 4
21637 #define	MC_CMD_UART_SEND_DATA_OUT_OFFSET_LEN 4
21638 /* Length of data */
21639 #define	MC_CMD_UART_SEND_DATA_OUT_LENGTH_OFST 8
21640 #define	MC_CMD_UART_SEND_DATA_OUT_LENGTH_LEN 4
21641 /* Reserved for future use */
21642 #define	MC_CMD_UART_SEND_DATA_OUT_RESERVED_OFST 12
21643 #define	MC_CMD_UART_SEND_DATA_OUT_RESERVED_LEN 4
21644 #define	MC_CMD_UART_SEND_DATA_OUT_DATA_OFST 16
21645 #define	MC_CMD_UART_SEND_DATA_OUT_DATA_LEN 1
21646 #define	MC_CMD_UART_SEND_DATA_OUT_DATA_MINNUM 0
21647 #define	MC_CMD_UART_SEND_DATA_OUT_DATA_MAXNUM 236
21648 #define	MC_CMD_UART_SEND_DATA_OUT_DATA_MAXNUM_MCDI2 1004
21649 
21650 /* MC_CMD_UART_SEND_DATA_IN msgresponse */
21651 #define	MC_CMD_UART_SEND_DATA_IN_LEN 0
21652 
21653 
21654 /***********************************/
21655 /* MC_CMD_UART_RECV_DATA
21656  * Request checksummed[sic] block of data over the uart. Only a placeholder,
21657  * subject to change and not currently implemented.
21658  */
21659 #define	MC_CMD_UART_RECV_DATA 0xef
21660 #define	MC_CMD_UART_RECV_DATA_MSGSET 0xef
21661 #undef	MC_CMD_0xef_PRIVILEGE_CTG
21662 
21663 #define	MC_CMD_0xef_PRIVILEGE_CTG SRIOV_CTG_GENERAL
21664 
21665 /* MC_CMD_UART_RECV_DATA_OUT msgrequest */
21666 #define	MC_CMD_UART_RECV_DATA_OUT_LEN 16
21667 /* CRC32 over OFFSET, LENGTH, RESERVED */
21668 #define	MC_CMD_UART_RECV_DATA_OUT_CHECKSUM_OFST 0
21669 #define	MC_CMD_UART_RECV_DATA_OUT_CHECKSUM_LEN 4
21670 /* Offset from which to read the data */
21671 #define	MC_CMD_UART_RECV_DATA_OUT_OFFSET_OFST 4
21672 #define	MC_CMD_UART_RECV_DATA_OUT_OFFSET_LEN 4
21673 /* Length of data */
21674 #define	MC_CMD_UART_RECV_DATA_OUT_LENGTH_OFST 8
21675 #define	MC_CMD_UART_RECV_DATA_OUT_LENGTH_LEN 4
21676 /* Reserved for future use */
21677 #define	MC_CMD_UART_RECV_DATA_OUT_RESERVED_OFST 12
21678 #define	MC_CMD_UART_RECV_DATA_OUT_RESERVED_LEN 4
21679 
21680 /* MC_CMD_UART_RECV_DATA_IN msgresponse */
21681 #define	MC_CMD_UART_RECV_DATA_IN_LENMIN 16
21682 #define	MC_CMD_UART_RECV_DATA_IN_LENMAX 252
21683 #define	MC_CMD_UART_RECV_DATA_IN_LENMAX_MCDI2 1020
21684 #define	MC_CMD_UART_RECV_DATA_IN_LEN(num) (16+1*(num))
21685 #define	MC_CMD_UART_RECV_DATA_IN_DATA_NUM(len) (((len)-16)/1)
21686 /* CRC32 over RESERVED1, RESERVED2, RESERVED3, DATA */
21687 #define	MC_CMD_UART_RECV_DATA_IN_CHECKSUM_OFST 0
21688 #define	MC_CMD_UART_RECV_DATA_IN_CHECKSUM_LEN 4
21689 /* Offset at which to write the data */
21690 #define	MC_CMD_UART_RECV_DATA_IN_RESERVED1_OFST 4
21691 #define	MC_CMD_UART_RECV_DATA_IN_RESERVED1_LEN 4
21692 /* Length of data */
21693 #define	MC_CMD_UART_RECV_DATA_IN_RESERVED2_OFST 8
21694 #define	MC_CMD_UART_RECV_DATA_IN_RESERVED2_LEN 4
21695 /* Reserved for future use */
21696 #define	MC_CMD_UART_RECV_DATA_IN_RESERVED3_OFST 12
21697 #define	MC_CMD_UART_RECV_DATA_IN_RESERVED3_LEN 4
21698 #define	MC_CMD_UART_RECV_DATA_IN_DATA_OFST 16
21699 #define	MC_CMD_UART_RECV_DATA_IN_DATA_LEN 1
21700 #define	MC_CMD_UART_RECV_DATA_IN_DATA_MINNUM 0
21701 #define	MC_CMD_UART_RECV_DATA_IN_DATA_MAXNUM 236
21702 #define	MC_CMD_UART_RECV_DATA_IN_DATA_MAXNUM_MCDI2 1004
21703 
21704 
21705 /***********************************/
21706 /* MC_CMD_READ_FUSES
21707  * Read data programmed into the device One-Time-Programmable (OTP) Fuses
21708  */
21709 #define	MC_CMD_READ_FUSES 0xf0
21710 #define	MC_CMD_READ_FUSES_MSGSET 0xf0
21711 #undef	MC_CMD_0xf0_PRIVILEGE_CTG
21712 
21713 #define	MC_CMD_0xf0_PRIVILEGE_CTG SRIOV_CTG_INSECURE
21714 
21715 /* MC_CMD_READ_FUSES_IN msgrequest */
21716 #define	MC_CMD_READ_FUSES_IN_LEN 8
21717 /* Offset in OTP to read */
21718 #define	MC_CMD_READ_FUSES_IN_OFFSET_OFST 0
21719 #define	MC_CMD_READ_FUSES_IN_OFFSET_LEN 4
21720 /* Length of data to read in bytes */
21721 #define	MC_CMD_READ_FUSES_IN_LENGTH_OFST 4
21722 #define	MC_CMD_READ_FUSES_IN_LENGTH_LEN 4
21723 
21724 /* MC_CMD_READ_FUSES_OUT msgresponse */
21725 #define	MC_CMD_READ_FUSES_OUT_LENMIN 4
21726 #define	MC_CMD_READ_FUSES_OUT_LENMAX 252
21727 #define	MC_CMD_READ_FUSES_OUT_LENMAX_MCDI2 1020
21728 #define	MC_CMD_READ_FUSES_OUT_LEN(num) (4+1*(num))
21729 #define	MC_CMD_READ_FUSES_OUT_DATA_NUM(len) (((len)-4)/1)
21730 /* Length of returned OTP data in bytes */
21731 #define	MC_CMD_READ_FUSES_OUT_LENGTH_OFST 0
21732 #define	MC_CMD_READ_FUSES_OUT_LENGTH_LEN 4
21733 /* Returned data */
21734 #define	MC_CMD_READ_FUSES_OUT_DATA_OFST 4
21735 #define	MC_CMD_READ_FUSES_OUT_DATA_LEN 1
21736 #define	MC_CMD_READ_FUSES_OUT_DATA_MINNUM 0
21737 #define	MC_CMD_READ_FUSES_OUT_DATA_MAXNUM 248
21738 #define	MC_CMD_READ_FUSES_OUT_DATA_MAXNUM_MCDI2 1016
21739 
21740 
21741 /***********************************/
21742 /* MC_CMD_KR_TUNE
21743  * Get or set KR Serdes RXEQ and TX Driver settings
21744  */
21745 #define	MC_CMD_KR_TUNE 0xf1
21746 #define	MC_CMD_KR_TUNE_MSGSET 0xf1
21747 #undef	MC_CMD_0xf1_PRIVILEGE_CTG
21748 
21749 #define	MC_CMD_0xf1_PRIVILEGE_CTG SRIOV_CTG_ADMIN_TSA_UNBOUND
21750 
21751 /* MC_CMD_KR_TUNE_IN msgrequest */
21752 #define	MC_CMD_KR_TUNE_IN_LENMIN 4
21753 #define	MC_CMD_KR_TUNE_IN_LENMAX 252
21754 #define	MC_CMD_KR_TUNE_IN_LENMAX_MCDI2 1020
21755 #define	MC_CMD_KR_TUNE_IN_LEN(num) (4+4*(num))
21756 #define	MC_CMD_KR_TUNE_IN_KR_TUNE_ARGS_NUM(len) (((len)-4)/4)
21757 /* Requested operation */
21758 #define	MC_CMD_KR_TUNE_IN_KR_TUNE_OP_OFST 0
21759 #define	MC_CMD_KR_TUNE_IN_KR_TUNE_OP_LEN 1
21760 /* enum: Get current RXEQ settings */
21761 #define	MC_CMD_KR_TUNE_IN_RXEQ_GET 0x0
21762 /* enum: Override RXEQ settings */
21763 #define	MC_CMD_KR_TUNE_IN_RXEQ_SET 0x1
21764 /* enum: Get current TX Driver settings */
21765 #define	MC_CMD_KR_TUNE_IN_TXEQ_GET 0x2
21766 /* enum: Override TX Driver settings */
21767 #define	MC_CMD_KR_TUNE_IN_TXEQ_SET 0x3
21768 /* enum: Force KR Serdes reset / recalibration */
21769 #define	MC_CMD_KR_TUNE_IN_RECAL 0x4
21770 /* enum: Start KR Serdes Eye diagram plot on a given lane. Lane must have valid
21771  * signal.
21772  */
21773 #define	MC_CMD_KR_TUNE_IN_START_EYE_PLOT 0x5
21774 /* enum: Poll KR Serdes Eye diagram plot. Returns one row of BER data. The
21775  * caller should call this command repeatedly after starting eye plot, until no
21776  * more data is returned.
21777  */
21778 #define	MC_CMD_KR_TUNE_IN_POLL_EYE_PLOT 0x6
21779 /* enum: Read Figure Of Merit (eye quality, higher is better). */
21780 #define	MC_CMD_KR_TUNE_IN_READ_FOM 0x7
21781 /* enum: Start/stop link training frames */
21782 #define	MC_CMD_KR_TUNE_IN_LINK_TRAIN_RUN 0x8
21783 /* enum: Issue KR link training command (control training coefficients) */
21784 #define	MC_CMD_KR_TUNE_IN_LINK_TRAIN_CMD 0x9
21785 /* Align the arguments to 32 bits */
21786 #define	MC_CMD_KR_TUNE_IN_KR_TUNE_RSVD_OFST 1
21787 #define	MC_CMD_KR_TUNE_IN_KR_TUNE_RSVD_LEN 3
21788 /* Arguments specific to the operation */
21789 #define	MC_CMD_KR_TUNE_IN_KR_TUNE_ARGS_OFST 4
21790 #define	MC_CMD_KR_TUNE_IN_KR_TUNE_ARGS_LEN 4
21791 #define	MC_CMD_KR_TUNE_IN_KR_TUNE_ARGS_MINNUM 0
21792 #define	MC_CMD_KR_TUNE_IN_KR_TUNE_ARGS_MAXNUM 62
21793 #define	MC_CMD_KR_TUNE_IN_KR_TUNE_ARGS_MAXNUM_MCDI2 254
21794 
21795 /* MC_CMD_KR_TUNE_OUT msgresponse */
21796 #define	MC_CMD_KR_TUNE_OUT_LEN 0
21797 
21798 /* MC_CMD_KR_TUNE_RXEQ_GET_IN msgrequest */
21799 #define	MC_CMD_KR_TUNE_RXEQ_GET_IN_LEN 4
21800 /* Requested operation */
21801 #define	MC_CMD_KR_TUNE_RXEQ_GET_IN_KR_TUNE_OP_OFST 0
21802 #define	MC_CMD_KR_TUNE_RXEQ_GET_IN_KR_TUNE_OP_LEN 1
21803 /* Align the arguments to 32 bits */
21804 #define	MC_CMD_KR_TUNE_RXEQ_GET_IN_KR_TUNE_RSVD_OFST 1
21805 #define	MC_CMD_KR_TUNE_RXEQ_GET_IN_KR_TUNE_RSVD_LEN 3
21806 
21807 /* MC_CMD_KR_TUNE_RXEQ_GET_OUT msgresponse */
21808 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_LENMIN 4
21809 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_LENMAX 252
21810 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_LENMAX_MCDI2 1020
21811 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_LEN(num) (0+4*(num))
21812 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_PARAM_NUM(len) (((len)-0)/4)
21813 /* RXEQ Parameter */
21814 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_PARAM_OFST 0
21815 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_PARAM_LEN 4
21816 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_PARAM_MINNUM 1
21817 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_PARAM_MAXNUM 63
21818 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_PARAM_MAXNUM_MCDI2 255
21819 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_PARAM_ID_OFST 0
21820 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_PARAM_ID_LBN 0
21821 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_PARAM_ID_WIDTH 8
21822 /* enum: Attenuation (0-15, Huntington) */
21823 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_ATT 0x0
21824 /* enum: CTLE Boost (0-15, Huntington) */
21825 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_BOOST 0x1
21826 /* enum: Edge DFE Tap1 (Huntington - 0 - max negative, 64 - zero, 127 - max
21827  * positive, Medford - 0-31)
21828  */
21829 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_EDFE_TAP1 0x2
21830 /* enum: Edge DFE Tap2 (Huntington - 0 - max negative, 32 - zero, 63 - max
21831  * positive, Medford - 0-31)
21832  */
21833 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_EDFE_TAP2 0x3
21834 /* enum: Edge DFE Tap3 (Huntington - 0 - max negative, 32 - zero, 63 - max
21835  * positive, Medford - 0-16)
21836  */
21837 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_EDFE_TAP3 0x4
21838 /* enum: Edge DFE Tap4 (Huntington - 0 - max negative, 32 - zero, 63 - max
21839  * positive, Medford - 0-16)
21840  */
21841 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_EDFE_TAP4 0x5
21842 /* enum: Edge DFE Tap5 (Huntington - 0 - max negative, 32 - zero, 63 - max
21843  * positive, Medford - 0-16)
21844  */
21845 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_EDFE_TAP5 0x6
21846 /* enum: Edge DFE DLEV (0-128 for Medford) */
21847 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_EDFE_DLEV 0x7
21848 /* enum: Variable Gain Amplifier (0-15, Medford) */
21849 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_VGA 0x8
21850 /* enum: CTLE EQ Capacitor (0-15, Medford) */
21851 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_CTLE_EQC 0x9
21852 /* enum: CTLE EQ Resistor (0-7, Medford) */
21853 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_CTLE_EQRES 0xa
21854 /* enum: CTLE gain (0-31, Medford2) */
21855 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_CTLE_GAIN 0xb
21856 /* enum: CTLE pole (0-31, Medford2) */
21857 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_CTLE_POLE 0xc
21858 /* enum: CTLE peaking (0-31, Medford2) */
21859 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_CTLE_PEAK 0xd
21860 /* enum: DFE Tap1 - even path (Medford2 - 6 bit signed (-29 - +29)) */
21861 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_DFE_TAP1_EVEN 0xe
21862 /* enum: DFE Tap1 - odd path (Medford2 - 6 bit signed (-29 - +29)) */
21863 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_DFE_TAP1_ODD 0xf
21864 /* enum: DFE Tap2 (Medford2 - 6 bit signed (-20 - +20)) */
21865 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_DFE_TAP2 0x10
21866 /* enum: DFE Tap3 (Medford2 - 6 bit signed (-20 - +20)) */
21867 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_DFE_TAP3 0x11
21868 /* enum: DFE Tap4 (Medford2 - 6 bit signed (-20 - +20)) */
21869 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_DFE_TAP4 0x12
21870 /* enum: DFE Tap5 (Medford2 - 6 bit signed (-24 - +24)) */
21871 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_DFE_TAP5 0x13
21872 /* enum: DFE Tap6 (Medford2 - 6 bit signed (-24 - +24)) */
21873 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_DFE_TAP6 0x14
21874 /* enum: DFE Tap7 (Medford2 - 6 bit signed (-24 - +24)) */
21875 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_DFE_TAP7 0x15
21876 /* enum: DFE Tap8 (Medford2 - 6 bit signed (-24 - +24)) */
21877 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_DFE_TAP8 0x16
21878 /* enum: DFE Tap9 (Medford2 - 6 bit signed (-24 - +24)) */
21879 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_DFE_TAP9 0x17
21880 /* enum: DFE Tap10 (Medford2 - 6 bit signed (-24 - +24)) */
21881 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_DFE_TAP10 0x18
21882 /* enum: DFE Tap11 (Medford2 - 6 bit signed (-24 - +24)) */
21883 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_DFE_TAP11 0x19
21884 /* enum: DFE Tap12 (Medford2 - 6 bit signed (-24 - +24)) */
21885 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_DFE_TAP12 0x1a
21886 /* enum: I/Q clk offset (Medford2 - 4 bit signed (-5 - +5))) */
21887 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_IQ_OFF 0x1b
21888 /* enum: Negative h1 polarity data sampler offset calibration code, even path
21889  * (Medford2 - 6 bit signed (-29 - +29)))
21890  */
21891 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_H1N_OFF_EVEN 0x1c
21892 /* enum: Negative h1 polarity data sampler offset calibration code, odd path
21893  * (Medford2 - 6 bit signed (-29 - +29)))
21894  */
21895 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_H1N_OFF_ODD 0x1d
21896 /* enum: Positive h1 polarity data sampler offset calibration code, even path
21897  * (Medford2 - 6 bit signed (-29 - +29)))
21898  */
21899 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_H1P_OFF_EVEN 0x1e
21900 /* enum: Positive h1 polarity data sampler offset calibration code, odd path
21901  * (Medford2 - 6 bit signed (-29 - +29)))
21902  */
21903 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_H1P_OFF_ODD 0x1f
21904 /* enum: CDR calibration loop code (Medford2) */
21905 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_CDR_PVT 0x20
21906 /* enum: CDR integral loop code (Medford2) */
21907 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_CDR_INTEG 0x21
21908 /* enum: CTLE Boost stages - retimer lineside (Medford2 with DS250x retimer - 4
21909  * stages, 2 bits per stage)
21910  */
21911 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_BOOST_RT_LS 0x22
21912 /* enum: DFE Tap1 - retimer lineside (Medford2 with DS250x retimer (-31 - 31))
21913  */
21914 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_DFE_TAP1_RT_LS 0x23
21915 /* enum: DFE Tap2 - retimer lineside (Medford2 with DS250x retimer (-15 - 15))
21916  */
21917 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_DFE_TAP2_RT_LS 0x24
21918 /* enum: DFE Tap3 - retimer lineside (Medford2 with DS250x retimer (-15 - 15))
21919  */
21920 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_DFE_TAP3_RT_LS 0x25
21921 /* enum: DFE Tap4 - retimer lineside (Medford2 with DS250x retimer (-15 - 15))
21922  */
21923 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_DFE_TAP4_RT_LS 0x26
21924 /* enum: DFE Tap5 - retimer lineside (Medford2 with DS250x retimer (-15 - 15))
21925  */
21926 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_DFE_TAP5_RT_LS 0x27
21927 /* enum: CTLE Boost stages - retimer hostside (Medford2 with DS250x retimer - 4
21928  * stages, 2 bits per stage)
21929  */
21930 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_BOOST_RT_HS 0x28
21931 /* enum: DFE Tap1 - retimer hostside (Medford2 with DS250x retimer (-31 - 31))
21932  */
21933 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_DFE_TAP1_RT_HS 0x29
21934 /* enum: DFE Tap2 - retimer hostside (Medford2 with DS250x retimer (-15 - 15))
21935  */
21936 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_DFE_TAP2_RT_HS 0x2a
21937 /* enum: DFE Tap3 - retimer hostside (Medford2 with DS250x retimer (-15 - 15))
21938  */
21939 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_DFE_TAP3_RT_HS 0x2b
21940 /* enum: DFE Tap4 - retimer hostside (Medford2 with DS250x retimer (-15 - 15))
21941  */
21942 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_DFE_TAP4_RT_HS 0x2c
21943 /* enum: DFE Tap5 - retimer hostside (Medford2 with DS250x retimer (-15 - 15))
21944  */
21945 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_DFE_TAP5_RT_HS 0x2d
21946 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_PARAM_LANE_OFST 0
21947 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_PARAM_LANE_LBN 8
21948 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_PARAM_LANE_WIDTH 3
21949 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_LANE_0 0x0 /* enum */
21950 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_LANE_1 0x1 /* enum */
21951 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_LANE_2 0x2 /* enum */
21952 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_LANE_3 0x3 /* enum */
21953 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_LANE_ALL 0x4 /* enum */
21954 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_PARAM_AUTOCAL_OFST 0
21955 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_PARAM_AUTOCAL_LBN 11
21956 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_PARAM_AUTOCAL_WIDTH 1
21957 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_RESERVED_OFST 0
21958 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_RESERVED_LBN 12
21959 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_RESERVED_WIDTH 4
21960 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_PARAM_INITIAL_OFST 0
21961 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_PARAM_INITIAL_LBN 16
21962 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_PARAM_INITIAL_WIDTH 8
21963 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_PARAM_CURRENT_OFST 0
21964 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_PARAM_CURRENT_LBN 24
21965 #define	MC_CMD_KR_TUNE_RXEQ_GET_OUT_PARAM_CURRENT_WIDTH 8
21966 
21967 /* MC_CMD_KR_TUNE_RXEQ_SET_IN msgrequest */
21968 #define	MC_CMD_KR_TUNE_RXEQ_SET_IN_LENMIN 8
21969 #define	MC_CMD_KR_TUNE_RXEQ_SET_IN_LENMAX 252
21970 #define	MC_CMD_KR_TUNE_RXEQ_SET_IN_LENMAX_MCDI2 1020
21971 #define	MC_CMD_KR_TUNE_RXEQ_SET_IN_LEN(num) (4+4*(num))
21972 #define	MC_CMD_KR_TUNE_RXEQ_SET_IN_PARAM_NUM(len) (((len)-4)/4)
21973 /* Requested operation */
21974 #define	MC_CMD_KR_TUNE_RXEQ_SET_IN_KR_TUNE_OP_OFST 0
21975 #define	MC_CMD_KR_TUNE_RXEQ_SET_IN_KR_TUNE_OP_LEN 1
21976 /* Align the arguments to 32 bits */
21977 #define	MC_CMD_KR_TUNE_RXEQ_SET_IN_KR_TUNE_RSVD_OFST 1
21978 #define	MC_CMD_KR_TUNE_RXEQ_SET_IN_KR_TUNE_RSVD_LEN 3
21979 /* RXEQ Parameter */
21980 #define	MC_CMD_KR_TUNE_RXEQ_SET_IN_PARAM_OFST 4
21981 #define	MC_CMD_KR_TUNE_RXEQ_SET_IN_PARAM_LEN 4
21982 #define	MC_CMD_KR_TUNE_RXEQ_SET_IN_PARAM_MINNUM 1
21983 #define	MC_CMD_KR_TUNE_RXEQ_SET_IN_PARAM_MAXNUM 62
21984 #define	MC_CMD_KR_TUNE_RXEQ_SET_IN_PARAM_MAXNUM_MCDI2 254
21985 #define	MC_CMD_KR_TUNE_RXEQ_SET_IN_PARAM_ID_OFST 4
21986 #define	MC_CMD_KR_TUNE_RXEQ_SET_IN_PARAM_ID_LBN 0
21987 #define	MC_CMD_KR_TUNE_RXEQ_SET_IN_PARAM_ID_WIDTH 8
21988 /*             Enum values, see field(s): */
21989 /*                MC_CMD_KR_TUNE_RXEQ_GET_OUT/PARAM_ID */
21990 #define	MC_CMD_KR_TUNE_RXEQ_SET_IN_PARAM_LANE_OFST 4
21991 #define	MC_CMD_KR_TUNE_RXEQ_SET_IN_PARAM_LANE_LBN 8
21992 #define	MC_CMD_KR_TUNE_RXEQ_SET_IN_PARAM_LANE_WIDTH 3
21993 /*             Enum values, see field(s): */
21994 /*                MC_CMD_KR_TUNE_RXEQ_GET_OUT/PARAM_LANE */
21995 #define	MC_CMD_KR_TUNE_RXEQ_SET_IN_PARAM_AUTOCAL_OFST 4
21996 #define	MC_CMD_KR_TUNE_RXEQ_SET_IN_PARAM_AUTOCAL_LBN 11
21997 #define	MC_CMD_KR_TUNE_RXEQ_SET_IN_PARAM_AUTOCAL_WIDTH 1
21998 #define	MC_CMD_KR_TUNE_RXEQ_SET_IN_RESERVED_OFST 4
21999 #define	MC_CMD_KR_TUNE_RXEQ_SET_IN_RESERVED_LBN 12
22000 #define	MC_CMD_KR_TUNE_RXEQ_SET_IN_RESERVED_WIDTH 4
22001 #define	MC_CMD_KR_TUNE_RXEQ_SET_IN_PARAM_INITIAL_OFST 4
22002 #define	MC_CMD_KR_TUNE_RXEQ_SET_IN_PARAM_INITIAL_LBN 16
22003 #define	MC_CMD_KR_TUNE_RXEQ_SET_IN_PARAM_INITIAL_WIDTH 8
22004 #define	MC_CMD_KR_TUNE_RXEQ_SET_IN_RESERVED2_OFST 4
22005 #define	MC_CMD_KR_TUNE_RXEQ_SET_IN_RESERVED2_LBN 24
22006 #define	MC_CMD_KR_TUNE_RXEQ_SET_IN_RESERVED2_WIDTH 8
22007 
22008 /* MC_CMD_KR_TUNE_RXEQ_SET_OUT msgresponse */
22009 #define	MC_CMD_KR_TUNE_RXEQ_SET_OUT_LEN 0
22010 
22011 /* MC_CMD_KR_TUNE_TXEQ_GET_IN msgrequest */
22012 #define	MC_CMD_KR_TUNE_TXEQ_GET_IN_LEN 4
22013 /* Requested operation */
22014 #define	MC_CMD_KR_TUNE_TXEQ_GET_IN_KR_TUNE_OP_OFST 0
22015 #define	MC_CMD_KR_TUNE_TXEQ_GET_IN_KR_TUNE_OP_LEN 1
22016 /* Align the arguments to 32 bits */
22017 #define	MC_CMD_KR_TUNE_TXEQ_GET_IN_KR_TUNE_RSVD_OFST 1
22018 #define	MC_CMD_KR_TUNE_TXEQ_GET_IN_KR_TUNE_RSVD_LEN 3
22019 
22020 /* MC_CMD_KR_TUNE_TXEQ_GET_OUT msgresponse */
22021 #define	MC_CMD_KR_TUNE_TXEQ_GET_OUT_LENMIN 4
22022 #define	MC_CMD_KR_TUNE_TXEQ_GET_OUT_LENMAX 252
22023 #define	MC_CMD_KR_TUNE_TXEQ_GET_OUT_LENMAX_MCDI2 1020
22024 #define	MC_CMD_KR_TUNE_TXEQ_GET_OUT_LEN(num) (0+4*(num))
22025 #define	MC_CMD_KR_TUNE_TXEQ_GET_OUT_PARAM_NUM(len) (((len)-0)/4)
22026 /* TXEQ Parameter */
22027 #define	MC_CMD_KR_TUNE_TXEQ_GET_OUT_PARAM_OFST 0
22028 #define	MC_CMD_KR_TUNE_TXEQ_GET_OUT_PARAM_LEN 4
22029 #define	MC_CMD_KR_TUNE_TXEQ_GET_OUT_PARAM_MINNUM 1
22030 #define	MC_CMD_KR_TUNE_TXEQ_GET_OUT_PARAM_MAXNUM 63
22031 #define	MC_CMD_KR_TUNE_TXEQ_GET_OUT_PARAM_MAXNUM_MCDI2 255
22032 #define	MC_CMD_KR_TUNE_TXEQ_GET_OUT_PARAM_ID_OFST 0
22033 #define	MC_CMD_KR_TUNE_TXEQ_GET_OUT_PARAM_ID_LBN 0
22034 #define	MC_CMD_KR_TUNE_TXEQ_GET_OUT_PARAM_ID_WIDTH 8
22035 /* enum: TX Amplitude (Huntington, Medford, Medford2) */
22036 #define	MC_CMD_KR_TUNE_TXEQ_GET_OUT_TX_LEV 0x0
22037 /* enum: De-Emphasis Tap1 Magnitude (0-7) (Huntington) */
22038 #define	MC_CMD_KR_TUNE_TXEQ_GET_OUT_TX_MODE 0x1
22039 /* enum: De-Emphasis Tap1 Fine */
22040 #define	MC_CMD_KR_TUNE_TXEQ_GET_OUT_TX_DTLEV 0x2
22041 /* enum: De-Emphasis Tap2 Magnitude (0-6) (Huntington) */
22042 #define	MC_CMD_KR_TUNE_TXEQ_GET_OUT_TX_D2 0x3
22043 /* enum: De-Emphasis Tap2 Fine (Huntington) */
22044 #define	MC_CMD_KR_TUNE_TXEQ_GET_OUT_TX_D2TLEV 0x4
22045 /* enum: Pre-Emphasis Magnitude (Huntington) */
22046 #define	MC_CMD_KR_TUNE_TXEQ_GET_OUT_TX_E 0x5
22047 /* enum: Pre-Emphasis Fine (Huntington) */
22048 #define	MC_CMD_KR_TUNE_TXEQ_GET_OUT_TX_ETLEV 0x6
22049 /* enum: TX Slew Rate Coarse control (Huntington) */
22050 #define	MC_CMD_KR_TUNE_TXEQ_GET_OUT_TX_PREDRV_DLY 0x7
22051 /* enum: TX Slew Rate Fine control (Huntington) */
22052 #define	MC_CMD_KR_TUNE_TXEQ_GET_OUT_TX_SR_SET 0x8
22053 /* enum: TX Termination Impedance control (Huntington) */
22054 #define	MC_CMD_KR_TUNE_TXEQ_GET_OUT_TX_RT_SET 0x9
22055 /* enum: TX Amplitude Fine control (Medford) */
22056 #define	MC_CMD_KR_TUNE_TXEQ_GET_OUT_TX_LEV_FINE 0xa
22057 /* enum: Pre-cursor Tap (Medford, Medford2) */
22058 #define	MC_CMD_KR_TUNE_TXEQ_GET_OUT_TAP_ADV 0xb
22059 /* enum: Post-cursor Tap (Medford, Medford2) */
22060 #define	MC_CMD_KR_TUNE_TXEQ_GET_OUT_TAP_DLY 0xc
22061 /* enum: TX Amplitude (Retimer Lineside) */
22062 #define	MC_CMD_KR_TUNE_TXEQ_GET_OUT_TX_LEV_RT_LS 0xd
22063 /* enum: Pre-cursor Tap (Retimer Lineside) */
22064 #define	MC_CMD_KR_TUNE_TXEQ_GET_OUT_TAP_ADV_RT_LS 0xe
22065 /* enum: Post-cursor Tap (Retimer Lineside) */
22066 #define	MC_CMD_KR_TUNE_TXEQ_GET_OUT_TAP_DLY_RT_LS 0xf
22067 /* enum: TX Amplitude (Retimer Hostside) */
22068 #define	MC_CMD_KR_TUNE_TXEQ_GET_OUT_TX_LEV_RT_HS 0x10
22069 /* enum: Pre-cursor Tap (Retimer Hostside) */
22070 #define	MC_CMD_KR_TUNE_TXEQ_GET_OUT_TAP_ADV_RT_HS 0x11
22071 /* enum: Post-cursor Tap (Retimer Hostside) */
22072 #define	MC_CMD_KR_TUNE_TXEQ_GET_OUT_TAP_DLY_RT_HS 0x12
22073 #define	MC_CMD_KR_TUNE_TXEQ_GET_OUT_PARAM_LANE_OFST 0
22074 #define	MC_CMD_KR_TUNE_TXEQ_GET_OUT_PARAM_LANE_LBN 8
22075 #define	MC_CMD_KR_TUNE_TXEQ_GET_OUT_PARAM_LANE_WIDTH 3
22076 #define	MC_CMD_KR_TUNE_TXEQ_GET_OUT_LANE_0 0x0 /* enum */
22077 #define	MC_CMD_KR_TUNE_TXEQ_GET_OUT_LANE_1 0x1 /* enum */
22078 #define	MC_CMD_KR_TUNE_TXEQ_GET_OUT_LANE_2 0x2 /* enum */
22079 #define	MC_CMD_KR_TUNE_TXEQ_GET_OUT_LANE_3 0x3 /* enum */
22080 #define	MC_CMD_KR_TUNE_TXEQ_GET_OUT_LANE_ALL 0x4 /* enum */
22081 #define	MC_CMD_KR_TUNE_TXEQ_GET_OUT_RESERVED_OFST 0
22082 #define	MC_CMD_KR_TUNE_TXEQ_GET_OUT_RESERVED_LBN 11
22083 #define	MC_CMD_KR_TUNE_TXEQ_GET_OUT_RESERVED_WIDTH 5
22084 #define	MC_CMD_KR_TUNE_TXEQ_GET_OUT_PARAM_INITIAL_OFST 0
22085 #define	MC_CMD_KR_TUNE_TXEQ_GET_OUT_PARAM_INITIAL_LBN 16
22086 #define	MC_CMD_KR_TUNE_TXEQ_GET_OUT_PARAM_INITIAL_WIDTH 8
22087 #define	MC_CMD_KR_TUNE_TXEQ_GET_OUT_RESERVED2_OFST 0
22088 #define	MC_CMD_KR_TUNE_TXEQ_GET_OUT_RESERVED2_LBN 24
22089 #define	MC_CMD_KR_TUNE_TXEQ_GET_OUT_RESERVED2_WIDTH 8
22090 
22091 /* MC_CMD_KR_TUNE_TXEQ_SET_IN msgrequest */
22092 #define	MC_CMD_KR_TUNE_TXEQ_SET_IN_LENMIN 8
22093 #define	MC_CMD_KR_TUNE_TXEQ_SET_IN_LENMAX 252
22094 #define	MC_CMD_KR_TUNE_TXEQ_SET_IN_LENMAX_MCDI2 1020
22095 #define	MC_CMD_KR_TUNE_TXEQ_SET_IN_LEN(num) (4+4*(num))
22096 #define	MC_CMD_KR_TUNE_TXEQ_SET_IN_PARAM_NUM(len) (((len)-4)/4)
22097 /* Requested operation */
22098 #define	MC_CMD_KR_TUNE_TXEQ_SET_IN_KR_TUNE_OP_OFST 0
22099 #define	MC_CMD_KR_TUNE_TXEQ_SET_IN_KR_TUNE_OP_LEN 1
22100 /* Align the arguments to 32 bits */
22101 #define	MC_CMD_KR_TUNE_TXEQ_SET_IN_KR_TUNE_RSVD_OFST 1
22102 #define	MC_CMD_KR_TUNE_TXEQ_SET_IN_KR_TUNE_RSVD_LEN 3
22103 /* TXEQ Parameter */
22104 #define	MC_CMD_KR_TUNE_TXEQ_SET_IN_PARAM_OFST 4
22105 #define	MC_CMD_KR_TUNE_TXEQ_SET_IN_PARAM_LEN 4
22106 #define	MC_CMD_KR_TUNE_TXEQ_SET_IN_PARAM_MINNUM 1
22107 #define	MC_CMD_KR_TUNE_TXEQ_SET_IN_PARAM_MAXNUM 62
22108 #define	MC_CMD_KR_TUNE_TXEQ_SET_IN_PARAM_MAXNUM_MCDI2 254
22109 #define	MC_CMD_KR_TUNE_TXEQ_SET_IN_PARAM_ID_OFST 4
22110 #define	MC_CMD_KR_TUNE_TXEQ_SET_IN_PARAM_ID_LBN 0
22111 #define	MC_CMD_KR_TUNE_TXEQ_SET_IN_PARAM_ID_WIDTH 8
22112 /*             Enum values, see field(s): */
22113 /*                MC_CMD_KR_TUNE_TXEQ_GET_OUT/PARAM_ID */
22114 #define	MC_CMD_KR_TUNE_TXEQ_SET_IN_PARAM_LANE_OFST 4
22115 #define	MC_CMD_KR_TUNE_TXEQ_SET_IN_PARAM_LANE_LBN 8
22116 #define	MC_CMD_KR_TUNE_TXEQ_SET_IN_PARAM_LANE_WIDTH 3
22117 /*             Enum values, see field(s): */
22118 /*                MC_CMD_KR_TUNE_TXEQ_GET_OUT/PARAM_LANE */
22119 #define	MC_CMD_KR_TUNE_TXEQ_SET_IN_RESERVED_OFST 4
22120 #define	MC_CMD_KR_TUNE_TXEQ_SET_IN_RESERVED_LBN 11
22121 #define	MC_CMD_KR_TUNE_TXEQ_SET_IN_RESERVED_WIDTH 5
22122 #define	MC_CMD_KR_TUNE_TXEQ_SET_IN_PARAM_INITIAL_OFST 4
22123 #define	MC_CMD_KR_TUNE_TXEQ_SET_IN_PARAM_INITIAL_LBN 16
22124 #define	MC_CMD_KR_TUNE_TXEQ_SET_IN_PARAM_INITIAL_WIDTH 8
22125 #define	MC_CMD_KR_TUNE_TXEQ_SET_IN_RESERVED2_OFST 4
22126 #define	MC_CMD_KR_TUNE_TXEQ_SET_IN_RESERVED2_LBN 24
22127 #define	MC_CMD_KR_TUNE_TXEQ_SET_IN_RESERVED2_WIDTH 8
22128 
22129 /* MC_CMD_KR_TUNE_TXEQ_SET_OUT msgresponse */
22130 #define	MC_CMD_KR_TUNE_TXEQ_SET_OUT_LEN 0
22131 
22132 /* MC_CMD_KR_TUNE_RECAL_IN msgrequest */
22133 #define	MC_CMD_KR_TUNE_RECAL_IN_LEN 4
22134 /* Requested operation */
22135 #define	MC_CMD_KR_TUNE_RECAL_IN_KR_TUNE_OP_OFST 0
22136 #define	MC_CMD_KR_TUNE_RECAL_IN_KR_TUNE_OP_LEN 1
22137 /* Align the arguments to 32 bits */
22138 #define	MC_CMD_KR_TUNE_RECAL_IN_KR_TUNE_RSVD_OFST 1
22139 #define	MC_CMD_KR_TUNE_RECAL_IN_KR_TUNE_RSVD_LEN 3
22140 
22141 /* MC_CMD_KR_TUNE_RECAL_OUT msgresponse */
22142 #define	MC_CMD_KR_TUNE_RECAL_OUT_LEN 0
22143 
22144 /* MC_CMD_KR_TUNE_START_EYE_PLOT_IN msgrequest */
22145 #define	MC_CMD_KR_TUNE_START_EYE_PLOT_IN_LEN 8
22146 /* Requested operation */
22147 #define	MC_CMD_KR_TUNE_START_EYE_PLOT_IN_KR_TUNE_OP_OFST 0
22148 #define	MC_CMD_KR_TUNE_START_EYE_PLOT_IN_KR_TUNE_OP_LEN 1
22149 /* Align the arguments to 32 bits */
22150 #define	MC_CMD_KR_TUNE_START_EYE_PLOT_IN_KR_TUNE_RSVD_OFST 1
22151 #define	MC_CMD_KR_TUNE_START_EYE_PLOT_IN_KR_TUNE_RSVD_LEN 3
22152 /* Port-relative lane to scan eye on */
22153 #define	MC_CMD_KR_TUNE_START_EYE_PLOT_IN_LANE_OFST 4
22154 #define	MC_CMD_KR_TUNE_START_EYE_PLOT_IN_LANE_LEN 4
22155 
22156 /* MC_CMD_KR_TUNE_START_EYE_PLOT_V2_IN msgrequest */
22157 #define	MC_CMD_KR_TUNE_START_EYE_PLOT_V2_IN_LEN 12
22158 /* Requested operation */
22159 #define	MC_CMD_KR_TUNE_START_EYE_PLOT_V2_IN_KR_TUNE_OP_OFST 0
22160 #define	MC_CMD_KR_TUNE_START_EYE_PLOT_V2_IN_KR_TUNE_OP_LEN 1
22161 /* Align the arguments to 32 bits */
22162 #define	MC_CMD_KR_TUNE_START_EYE_PLOT_V2_IN_KR_TUNE_RSVD_OFST 1
22163 #define	MC_CMD_KR_TUNE_START_EYE_PLOT_V2_IN_KR_TUNE_RSVD_LEN 3
22164 #define	MC_CMD_KR_TUNE_START_EYE_PLOT_V2_IN_LANE_OFST 4
22165 #define	MC_CMD_KR_TUNE_START_EYE_PLOT_V2_IN_LANE_LEN 4
22166 #define	MC_CMD_KR_TUNE_START_EYE_PLOT_V2_IN_LANE_NUM_OFST 4
22167 #define	MC_CMD_KR_TUNE_START_EYE_PLOT_V2_IN_LANE_NUM_LBN 0
22168 #define	MC_CMD_KR_TUNE_START_EYE_PLOT_V2_IN_LANE_NUM_WIDTH 8
22169 #define	MC_CMD_KR_TUNE_START_EYE_PLOT_V2_IN_LANE_ABS_REL_OFST 4
22170 #define	MC_CMD_KR_TUNE_START_EYE_PLOT_V2_IN_LANE_ABS_REL_LBN 31
22171 #define	MC_CMD_KR_TUNE_START_EYE_PLOT_V2_IN_LANE_ABS_REL_WIDTH 1
22172 /* Scan duration / cycle count */
22173 #define	MC_CMD_KR_TUNE_START_EYE_PLOT_V2_IN_BER_OFST 8
22174 #define	MC_CMD_KR_TUNE_START_EYE_PLOT_V2_IN_BER_LEN 4
22175 
22176 /* MC_CMD_KR_TUNE_START_EYE_PLOT_OUT msgresponse */
22177 #define	MC_CMD_KR_TUNE_START_EYE_PLOT_OUT_LEN 0
22178 
22179 /* MC_CMD_KR_TUNE_POLL_EYE_PLOT_IN msgrequest */
22180 #define	MC_CMD_KR_TUNE_POLL_EYE_PLOT_IN_LEN 4
22181 /* Requested operation */
22182 #define	MC_CMD_KR_TUNE_POLL_EYE_PLOT_IN_KR_TUNE_OP_OFST 0
22183 #define	MC_CMD_KR_TUNE_POLL_EYE_PLOT_IN_KR_TUNE_OP_LEN 1
22184 /* Align the arguments to 32 bits */
22185 #define	MC_CMD_KR_TUNE_POLL_EYE_PLOT_IN_KR_TUNE_RSVD_OFST 1
22186 #define	MC_CMD_KR_TUNE_POLL_EYE_PLOT_IN_KR_TUNE_RSVD_LEN 3
22187 
22188 /* MC_CMD_KR_TUNE_POLL_EYE_PLOT_OUT msgresponse */
22189 #define	MC_CMD_KR_TUNE_POLL_EYE_PLOT_OUT_LENMIN 0
22190 #define	MC_CMD_KR_TUNE_POLL_EYE_PLOT_OUT_LENMAX 252
22191 #define	MC_CMD_KR_TUNE_POLL_EYE_PLOT_OUT_LENMAX_MCDI2 1020
22192 #define	MC_CMD_KR_TUNE_POLL_EYE_PLOT_OUT_LEN(num) (0+2*(num))
22193 #define	MC_CMD_KR_TUNE_POLL_EYE_PLOT_OUT_SAMPLES_NUM(len) (((len)-0)/2)
22194 #define	MC_CMD_KR_TUNE_POLL_EYE_PLOT_OUT_SAMPLES_OFST 0
22195 #define	MC_CMD_KR_TUNE_POLL_EYE_PLOT_OUT_SAMPLES_LEN 2
22196 #define	MC_CMD_KR_TUNE_POLL_EYE_PLOT_OUT_SAMPLES_MINNUM 0
22197 #define	MC_CMD_KR_TUNE_POLL_EYE_PLOT_OUT_SAMPLES_MAXNUM 126
22198 #define	MC_CMD_KR_TUNE_POLL_EYE_PLOT_OUT_SAMPLES_MAXNUM_MCDI2 510
22199 
22200 /* MC_CMD_KR_TUNE_READ_FOM_IN msgrequest */
22201 #define	MC_CMD_KR_TUNE_READ_FOM_IN_LEN 8
22202 /* Requested operation */
22203 #define	MC_CMD_KR_TUNE_READ_FOM_IN_KR_TUNE_OP_OFST 0
22204 #define	MC_CMD_KR_TUNE_READ_FOM_IN_KR_TUNE_OP_LEN 1
22205 /* Align the arguments to 32 bits */
22206 #define	MC_CMD_KR_TUNE_READ_FOM_IN_KR_TUNE_RSVD_OFST 1
22207 #define	MC_CMD_KR_TUNE_READ_FOM_IN_KR_TUNE_RSVD_LEN 3
22208 #define	MC_CMD_KR_TUNE_READ_FOM_IN_LANE_OFST 4
22209 #define	MC_CMD_KR_TUNE_READ_FOM_IN_LANE_LEN 4
22210 #define	MC_CMD_KR_TUNE_READ_FOM_IN_LANE_NUM_OFST 4
22211 #define	MC_CMD_KR_TUNE_READ_FOM_IN_LANE_NUM_LBN 0
22212 #define	MC_CMD_KR_TUNE_READ_FOM_IN_LANE_NUM_WIDTH 8
22213 #define	MC_CMD_KR_TUNE_READ_FOM_IN_LANE_ABS_REL_OFST 4
22214 #define	MC_CMD_KR_TUNE_READ_FOM_IN_LANE_ABS_REL_LBN 31
22215 #define	MC_CMD_KR_TUNE_READ_FOM_IN_LANE_ABS_REL_WIDTH 1
22216 
22217 /* MC_CMD_KR_TUNE_READ_FOM_OUT msgresponse */
22218 #define	MC_CMD_KR_TUNE_READ_FOM_OUT_LEN 4
22219 #define	MC_CMD_KR_TUNE_READ_FOM_OUT_FOM_OFST 0
22220 #define	MC_CMD_KR_TUNE_READ_FOM_OUT_FOM_LEN 4
22221 
22222 /* MC_CMD_KR_TUNE_LINK_TRAIN_RUN_IN msgrequest */
22223 #define	MC_CMD_KR_TUNE_LINK_TRAIN_RUN_IN_LEN 8
22224 /* Requested operation */
22225 #define	MC_CMD_KR_TUNE_LINK_TRAIN_RUN_IN_KR_TUNE_OP_OFST 0
22226 #define	MC_CMD_KR_TUNE_LINK_TRAIN_RUN_IN_KR_TUNE_OP_LEN 1
22227 /* Align the arguments to 32 bits */
22228 #define	MC_CMD_KR_TUNE_LINK_TRAIN_RUN_IN_KR_TUNE_RSVD_OFST 1
22229 #define	MC_CMD_KR_TUNE_LINK_TRAIN_RUN_IN_KR_TUNE_RSVD_LEN 3
22230 #define	MC_CMD_KR_TUNE_LINK_TRAIN_RUN_IN_RUN_OFST 4
22231 #define	MC_CMD_KR_TUNE_LINK_TRAIN_RUN_IN_RUN_LEN 4
22232 #define	MC_CMD_KR_TUNE_LINK_TRAIN_RUN_IN_STOP 0x0 /* enum */
22233 #define	MC_CMD_KR_TUNE_LINK_TRAIN_RUN_IN_START 0x1 /* enum */
22234 
22235 /* MC_CMD_KR_TUNE_LINK_TRAIN_CMD_IN msgrequest */
22236 #define	MC_CMD_KR_TUNE_LINK_TRAIN_CMD_IN_LEN 28
22237 /* Requested operation */
22238 #define	MC_CMD_KR_TUNE_LINK_TRAIN_CMD_IN_KR_TUNE_OP_OFST 0
22239 #define	MC_CMD_KR_TUNE_LINK_TRAIN_CMD_IN_KR_TUNE_OP_LEN 1
22240 /* Align the arguments to 32 bits */
22241 #define	MC_CMD_KR_TUNE_LINK_TRAIN_CMD_IN_KR_TUNE_RSVD_OFST 1
22242 #define	MC_CMD_KR_TUNE_LINK_TRAIN_CMD_IN_KR_TUNE_RSVD_LEN 3
22243 #define	MC_CMD_KR_TUNE_LINK_TRAIN_CMD_IN_LANE_OFST 4
22244 #define	MC_CMD_KR_TUNE_LINK_TRAIN_CMD_IN_LANE_LEN 4
22245 /* Set INITIALIZE state */
22246 #define	MC_CMD_KR_TUNE_LINK_TRAIN_CMD_IN_INITIALIZE_OFST 8
22247 #define	MC_CMD_KR_TUNE_LINK_TRAIN_CMD_IN_INITIALIZE_LEN 4
22248 /* Set PRESET state */
22249 #define	MC_CMD_KR_TUNE_LINK_TRAIN_CMD_IN_PRESET_OFST 12
22250 #define	MC_CMD_KR_TUNE_LINK_TRAIN_CMD_IN_PRESET_LEN 4
22251 /* C(-1) request */
22252 #define	MC_CMD_KR_TUNE_LINK_TRAIN_CMD_IN_CM1_OFST 16
22253 #define	MC_CMD_KR_TUNE_LINK_TRAIN_CMD_IN_CM1_LEN 4
22254 #define	MC_CMD_KR_TUNE_LINK_TRAIN_CMD_IN_REQ_HOLD 0x0 /* enum */
22255 #define	MC_CMD_KR_TUNE_LINK_TRAIN_CMD_IN_REQ_INCREMENT 0x1 /* enum */
22256 #define	MC_CMD_KR_TUNE_LINK_TRAIN_CMD_IN_REQ_DECREMENT 0x2 /* enum */
22257 /* C(0) request */
22258 #define	MC_CMD_KR_TUNE_LINK_TRAIN_CMD_IN_C0_OFST 20
22259 #define	MC_CMD_KR_TUNE_LINK_TRAIN_CMD_IN_C0_LEN 4
22260 /*            Enum values, see field(s): */
22261 /*               MC_CMD_KR_TUNE_LINK_TRAIN_CMD_IN/CM1 */
22262 /* C(+1) request */
22263 #define	MC_CMD_KR_TUNE_LINK_TRAIN_CMD_IN_CP1_OFST 24
22264 #define	MC_CMD_KR_TUNE_LINK_TRAIN_CMD_IN_CP1_LEN 4
22265 /*            Enum values, see field(s): */
22266 /*               MC_CMD_KR_TUNE_LINK_TRAIN_CMD_IN/CM1 */
22267 
22268 /* MC_CMD_KR_TUNE_LINK_TRAIN_CMD_OUT msgresponse */
22269 #define	MC_CMD_KR_TUNE_LINK_TRAIN_CMD_OUT_LEN 24
22270 /* C(-1) status */
22271 #define	MC_CMD_KR_TUNE_LINK_TRAIN_CMD_OUT_CM1_STATUS_OFST 0
22272 #define	MC_CMD_KR_TUNE_LINK_TRAIN_CMD_OUT_CM1_STATUS_LEN 4
22273 #define	MC_CMD_KR_TUNE_LINK_TRAIN_CMD_OUT_STATUS_NOT_UPDATED 0x0 /* enum */
22274 #define	MC_CMD_KR_TUNE_LINK_TRAIN_CMD_OUT_STATUS_UPDATED 0x1 /* enum */
22275 #define	MC_CMD_KR_TUNE_LINK_TRAIN_CMD_OUT_STATUS_MINIMUM 0x2 /* enum */
22276 #define	MC_CMD_KR_TUNE_LINK_TRAIN_CMD_OUT_STATUS_MAXIMUM 0x3 /* enum */
22277 /* C(0) status */
22278 #define	MC_CMD_KR_TUNE_LINK_TRAIN_CMD_OUT_C0_STATUS_OFST 4
22279 #define	MC_CMD_KR_TUNE_LINK_TRAIN_CMD_OUT_C0_STATUS_LEN 4
22280 /*            Enum values, see field(s): */
22281 /*               MC_CMD_KR_TUNE_LINK_TRAIN_CMD_IN/CM1 */
22282 /* C(+1) status */
22283 #define	MC_CMD_KR_TUNE_LINK_TRAIN_CMD_OUT_CP1_STATUS_OFST 8
22284 #define	MC_CMD_KR_TUNE_LINK_TRAIN_CMD_OUT_CP1_STATUS_LEN 4
22285 /*            Enum values, see field(s): */
22286 /*               MC_CMD_KR_TUNE_LINK_TRAIN_CMD_IN/CM1 */
22287 /* C(-1) value */
22288 #define	MC_CMD_KR_TUNE_LINK_TRAIN_CMD_OUT_CM1_VALUE_OFST 12
22289 #define	MC_CMD_KR_TUNE_LINK_TRAIN_CMD_OUT_CM1_VALUE_LEN 4
22290 /* C(0) value */
22291 #define	MC_CMD_KR_TUNE_LINK_TRAIN_CMD_OUT_C0_VALUE_OFST 16
22292 #define	MC_CMD_KR_TUNE_LINK_TRAIN_CMD_OUT_C0_VALUE_LEN 4
22293 /* C(+1) status */
22294 #define	MC_CMD_KR_TUNE_LINK_TRAIN_CMD_OUT_CP1_VALUE_OFST 20
22295 #define	MC_CMD_KR_TUNE_LINK_TRAIN_CMD_OUT_CP1_VALUE_LEN 4
22296 
22297 
22298 /***********************************/
22299 /* MC_CMD_PCIE_TUNE
22300  * Get or set PCIE Serdes RXEQ and TX Driver settings
22301  */
22302 #define	MC_CMD_PCIE_TUNE 0xf2
22303 #define	MC_CMD_PCIE_TUNE_MSGSET 0xf2
22304 #undef	MC_CMD_0xf2_PRIVILEGE_CTG
22305 
22306 #define	MC_CMD_0xf2_PRIVILEGE_CTG SRIOV_CTG_ADMIN_TSA_UNBOUND
22307 
22308 /* MC_CMD_PCIE_TUNE_IN msgrequest */
22309 #define	MC_CMD_PCIE_TUNE_IN_LENMIN 4
22310 #define	MC_CMD_PCIE_TUNE_IN_LENMAX 252
22311 #define	MC_CMD_PCIE_TUNE_IN_LENMAX_MCDI2 1020
22312 #define	MC_CMD_PCIE_TUNE_IN_LEN(num) (4+4*(num))
22313 #define	MC_CMD_PCIE_TUNE_IN_PCIE_TUNE_ARGS_NUM(len) (((len)-4)/4)
22314 /* Requested operation */
22315 #define	MC_CMD_PCIE_TUNE_IN_PCIE_TUNE_OP_OFST 0
22316 #define	MC_CMD_PCIE_TUNE_IN_PCIE_TUNE_OP_LEN 1
22317 /* enum: Get current RXEQ settings */
22318 #define	MC_CMD_PCIE_TUNE_IN_RXEQ_GET 0x0
22319 /* enum: Override RXEQ settings */
22320 #define	MC_CMD_PCIE_TUNE_IN_RXEQ_SET 0x1
22321 /* enum: Get current TX Driver settings */
22322 #define	MC_CMD_PCIE_TUNE_IN_TXEQ_GET 0x2
22323 /* enum: Override TX Driver settings */
22324 #define	MC_CMD_PCIE_TUNE_IN_TXEQ_SET 0x3
22325 /* enum: Start PCIe Serdes Eye diagram plot on a given lane. */
22326 #define	MC_CMD_PCIE_TUNE_IN_START_EYE_PLOT 0x5
22327 /* enum: Poll PCIe Serdes Eye diagram plot. Returns one row of BER data. The
22328  * caller should call this command repeatedly after starting eye plot, until no
22329  * more data is returned.
22330  */
22331 #define	MC_CMD_PCIE_TUNE_IN_POLL_EYE_PLOT 0x6
22332 /* enum: Enable the SERDES BIST and set it to generate a 200MHz square wave */
22333 #define	MC_CMD_PCIE_TUNE_IN_BIST_SQUARE_WAVE 0x7
22334 /* Align the arguments to 32 bits */
22335 #define	MC_CMD_PCIE_TUNE_IN_PCIE_TUNE_RSVD_OFST 1
22336 #define	MC_CMD_PCIE_TUNE_IN_PCIE_TUNE_RSVD_LEN 3
22337 /* Arguments specific to the operation */
22338 #define	MC_CMD_PCIE_TUNE_IN_PCIE_TUNE_ARGS_OFST 4
22339 #define	MC_CMD_PCIE_TUNE_IN_PCIE_TUNE_ARGS_LEN 4
22340 #define	MC_CMD_PCIE_TUNE_IN_PCIE_TUNE_ARGS_MINNUM 0
22341 #define	MC_CMD_PCIE_TUNE_IN_PCIE_TUNE_ARGS_MAXNUM 62
22342 #define	MC_CMD_PCIE_TUNE_IN_PCIE_TUNE_ARGS_MAXNUM_MCDI2 254
22343 
22344 /* MC_CMD_PCIE_TUNE_OUT msgresponse */
22345 #define	MC_CMD_PCIE_TUNE_OUT_LEN 0
22346 
22347 /* MC_CMD_PCIE_TUNE_RXEQ_GET_IN msgrequest */
22348 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_IN_LEN 4
22349 /* Requested operation */
22350 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_IN_PCIE_TUNE_OP_OFST 0
22351 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_IN_PCIE_TUNE_OP_LEN 1
22352 /* Align the arguments to 32 bits */
22353 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_IN_PCIE_TUNE_RSVD_OFST 1
22354 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_IN_PCIE_TUNE_RSVD_LEN 3
22355 
22356 /* MC_CMD_PCIE_TUNE_RXEQ_GET_OUT msgresponse */
22357 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_LENMIN 4
22358 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_LENMAX 252
22359 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_LENMAX_MCDI2 1020
22360 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_LEN(num) (0+4*(num))
22361 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_PARAM_NUM(len) (((len)-0)/4)
22362 /* RXEQ Parameter */
22363 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_PARAM_OFST 0
22364 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_PARAM_LEN 4
22365 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_PARAM_MINNUM 1
22366 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_PARAM_MAXNUM 63
22367 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_PARAM_MAXNUM_MCDI2 255
22368 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_PARAM_ID_OFST 0
22369 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_PARAM_ID_LBN 0
22370 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_PARAM_ID_WIDTH 8
22371 /* enum: Attenuation (0-15) */
22372 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_ATT 0x0
22373 /* enum: CTLE Boost (0-15) */
22374 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_BOOST 0x1
22375 /* enum: DFE Tap1 (0 - max negative, 64 - zero, 127 - max positive) */
22376 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_DFE_TAP1 0x2
22377 /* enum: DFE Tap2 (0 - max negative, 32 - zero, 63 - max positive) */
22378 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_DFE_TAP2 0x3
22379 /* enum: DFE Tap3 (0 - max negative, 32 - zero, 63 - max positive) */
22380 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_DFE_TAP3 0x4
22381 /* enum: DFE Tap4 (0 - max negative, 32 - zero, 63 - max positive) */
22382 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_DFE_TAP4 0x5
22383 /* enum: DFE Tap5 (0 - max negative, 32 - zero, 63 - max positive) */
22384 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_DFE_TAP5 0x6
22385 /* enum: DFE DLev */
22386 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_DFE_DLEV 0x7
22387 /* enum: Figure of Merit */
22388 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_FOM 0x8
22389 /* enum: CTLE EQ Capacitor (HF Gain) */
22390 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_CTLE_EQC 0x9
22391 /* enum: CTLE EQ Resistor (DC Gain) */
22392 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_CTLE_EQRES 0xa
22393 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_PARAM_LANE_OFST 0
22394 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_PARAM_LANE_LBN 8
22395 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_PARAM_LANE_WIDTH 5
22396 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_LANE_0 0x0 /* enum */
22397 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_LANE_1 0x1 /* enum */
22398 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_LANE_2 0x2 /* enum */
22399 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_LANE_3 0x3 /* enum */
22400 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_LANE_4 0x4 /* enum */
22401 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_LANE_5 0x5 /* enum */
22402 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_LANE_6 0x6 /* enum */
22403 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_LANE_7 0x7 /* enum */
22404 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_LANE_8 0x8 /* enum */
22405 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_LANE_9 0x9 /* enum */
22406 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_LANE_10 0xa /* enum */
22407 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_LANE_11 0xb /* enum */
22408 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_LANE_12 0xc /* enum */
22409 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_LANE_13 0xd /* enum */
22410 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_LANE_14 0xe /* enum */
22411 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_LANE_15 0xf /* enum */
22412 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_LANE_ALL 0x10 /* enum */
22413 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_PARAM_AUTOCAL_OFST 0
22414 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_PARAM_AUTOCAL_LBN 13
22415 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_PARAM_AUTOCAL_WIDTH 1
22416 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_RESERVED_OFST 0
22417 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_RESERVED_LBN 14
22418 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_RESERVED_WIDTH 10
22419 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_PARAM_CURRENT_OFST 0
22420 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_PARAM_CURRENT_LBN 24
22421 #define	MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_PARAM_CURRENT_WIDTH 8
22422 
22423 /* MC_CMD_PCIE_TUNE_RXEQ_SET_IN msgrequest */
22424 #define	MC_CMD_PCIE_TUNE_RXEQ_SET_IN_LENMIN 8
22425 #define	MC_CMD_PCIE_TUNE_RXEQ_SET_IN_LENMAX 252
22426 #define	MC_CMD_PCIE_TUNE_RXEQ_SET_IN_LENMAX_MCDI2 1020
22427 #define	MC_CMD_PCIE_TUNE_RXEQ_SET_IN_LEN(num) (4+4*(num))
22428 #define	MC_CMD_PCIE_TUNE_RXEQ_SET_IN_PARAM_NUM(len) (((len)-4)/4)
22429 /* Requested operation */
22430 #define	MC_CMD_PCIE_TUNE_RXEQ_SET_IN_PCIE_TUNE_OP_OFST 0
22431 #define	MC_CMD_PCIE_TUNE_RXEQ_SET_IN_PCIE_TUNE_OP_LEN 1
22432 /* Align the arguments to 32 bits */
22433 #define	MC_CMD_PCIE_TUNE_RXEQ_SET_IN_PCIE_TUNE_RSVD_OFST 1
22434 #define	MC_CMD_PCIE_TUNE_RXEQ_SET_IN_PCIE_TUNE_RSVD_LEN 3
22435 /* RXEQ Parameter */
22436 #define	MC_CMD_PCIE_TUNE_RXEQ_SET_IN_PARAM_OFST 4
22437 #define	MC_CMD_PCIE_TUNE_RXEQ_SET_IN_PARAM_LEN 4
22438 #define	MC_CMD_PCIE_TUNE_RXEQ_SET_IN_PARAM_MINNUM 1
22439 #define	MC_CMD_PCIE_TUNE_RXEQ_SET_IN_PARAM_MAXNUM 62
22440 #define	MC_CMD_PCIE_TUNE_RXEQ_SET_IN_PARAM_MAXNUM_MCDI2 254
22441 #define	MC_CMD_PCIE_TUNE_RXEQ_SET_IN_PARAM_ID_OFST 4
22442 #define	MC_CMD_PCIE_TUNE_RXEQ_SET_IN_PARAM_ID_LBN 0
22443 #define	MC_CMD_PCIE_TUNE_RXEQ_SET_IN_PARAM_ID_WIDTH 8
22444 /*             Enum values, see field(s): */
22445 /*                MC_CMD_PCIE_TUNE_RXEQ_GET_OUT/PARAM_ID */
22446 #define	MC_CMD_PCIE_TUNE_RXEQ_SET_IN_PARAM_LANE_OFST 4
22447 #define	MC_CMD_PCIE_TUNE_RXEQ_SET_IN_PARAM_LANE_LBN 8
22448 #define	MC_CMD_PCIE_TUNE_RXEQ_SET_IN_PARAM_LANE_WIDTH 5
22449 /*             Enum values, see field(s): */
22450 /*                MC_CMD_PCIE_TUNE_RXEQ_GET_OUT/PARAM_LANE */
22451 #define	MC_CMD_PCIE_TUNE_RXEQ_SET_IN_PARAM_AUTOCAL_OFST 4
22452 #define	MC_CMD_PCIE_TUNE_RXEQ_SET_IN_PARAM_AUTOCAL_LBN 13
22453 #define	MC_CMD_PCIE_TUNE_RXEQ_SET_IN_PARAM_AUTOCAL_WIDTH 1
22454 #define	MC_CMD_PCIE_TUNE_RXEQ_SET_IN_RESERVED_OFST 4
22455 #define	MC_CMD_PCIE_TUNE_RXEQ_SET_IN_RESERVED_LBN 14
22456 #define	MC_CMD_PCIE_TUNE_RXEQ_SET_IN_RESERVED_WIDTH 2
22457 #define	MC_CMD_PCIE_TUNE_RXEQ_SET_IN_PARAM_INITIAL_OFST 4
22458 #define	MC_CMD_PCIE_TUNE_RXEQ_SET_IN_PARAM_INITIAL_LBN 16
22459 #define	MC_CMD_PCIE_TUNE_RXEQ_SET_IN_PARAM_INITIAL_WIDTH 8
22460 #define	MC_CMD_PCIE_TUNE_RXEQ_SET_IN_RESERVED2_OFST 4
22461 #define	MC_CMD_PCIE_TUNE_RXEQ_SET_IN_RESERVED2_LBN 24
22462 #define	MC_CMD_PCIE_TUNE_RXEQ_SET_IN_RESERVED2_WIDTH 8
22463 
22464 /* MC_CMD_PCIE_TUNE_RXEQ_SET_OUT msgresponse */
22465 #define	MC_CMD_PCIE_TUNE_RXEQ_SET_OUT_LEN 0
22466 
22467 /* MC_CMD_PCIE_TUNE_TXEQ_GET_IN msgrequest */
22468 #define	MC_CMD_PCIE_TUNE_TXEQ_GET_IN_LEN 4
22469 /* Requested operation */
22470 #define	MC_CMD_PCIE_TUNE_TXEQ_GET_IN_PCIE_TUNE_OP_OFST 0
22471 #define	MC_CMD_PCIE_TUNE_TXEQ_GET_IN_PCIE_TUNE_OP_LEN 1
22472 /* Align the arguments to 32 bits */
22473 #define	MC_CMD_PCIE_TUNE_TXEQ_GET_IN_PCIE_TUNE_RSVD_OFST 1
22474 #define	MC_CMD_PCIE_TUNE_TXEQ_GET_IN_PCIE_TUNE_RSVD_LEN 3
22475 
22476 /* MC_CMD_PCIE_TUNE_TXEQ_GET_OUT msgresponse */
22477 #define	MC_CMD_PCIE_TUNE_TXEQ_GET_OUT_LENMIN 4
22478 #define	MC_CMD_PCIE_TUNE_TXEQ_GET_OUT_LENMAX 252
22479 #define	MC_CMD_PCIE_TUNE_TXEQ_GET_OUT_LENMAX_MCDI2 1020
22480 #define	MC_CMD_PCIE_TUNE_TXEQ_GET_OUT_LEN(num) (0+4*(num))
22481 #define	MC_CMD_PCIE_TUNE_TXEQ_GET_OUT_PARAM_NUM(len) (((len)-0)/4)
22482 /* RXEQ Parameter */
22483 #define	MC_CMD_PCIE_TUNE_TXEQ_GET_OUT_PARAM_OFST 0
22484 #define	MC_CMD_PCIE_TUNE_TXEQ_GET_OUT_PARAM_LEN 4
22485 #define	MC_CMD_PCIE_TUNE_TXEQ_GET_OUT_PARAM_MINNUM 1
22486 #define	MC_CMD_PCIE_TUNE_TXEQ_GET_OUT_PARAM_MAXNUM 63
22487 #define	MC_CMD_PCIE_TUNE_TXEQ_GET_OUT_PARAM_MAXNUM_MCDI2 255
22488 #define	MC_CMD_PCIE_TUNE_TXEQ_GET_OUT_PARAM_ID_OFST 0
22489 #define	MC_CMD_PCIE_TUNE_TXEQ_GET_OUT_PARAM_ID_LBN 0
22490 #define	MC_CMD_PCIE_TUNE_TXEQ_GET_OUT_PARAM_ID_WIDTH 8
22491 /* enum: TxMargin (PIPE) */
22492 #define	MC_CMD_PCIE_TUNE_TXEQ_GET_OUT_TXMARGIN 0x0
22493 /* enum: TxSwing (PIPE) */
22494 #define	MC_CMD_PCIE_TUNE_TXEQ_GET_OUT_TXSWING 0x1
22495 /* enum: De-emphasis coefficient C(-1) (PIPE) */
22496 #define	MC_CMD_PCIE_TUNE_TXEQ_GET_OUT_CM1 0x2
22497 /* enum: De-emphasis coefficient C(0) (PIPE) */
22498 #define	MC_CMD_PCIE_TUNE_TXEQ_GET_OUT_C0 0x3
22499 /* enum: De-emphasis coefficient C(+1) (PIPE) */
22500 #define	MC_CMD_PCIE_TUNE_TXEQ_GET_OUT_CP1 0x4
22501 #define	MC_CMD_PCIE_TUNE_TXEQ_GET_OUT_PARAM_LANE_OFST 0
22502 #define	MC_CMD_PCIE_TUNE_TXEQ_GET_OUT_PARAM_LANE_LBN 8
22503 #define	MC_CMD_PCIE_TUNE_TXEQ_GET_OUT_PARAM_LANE_WIDTH 4
22504 /*             Enum values, see field(s): */
22505 /*                MC_CMD_PCIE_TUNE_RXEQ_GET_OUT/PARAM_LANE */
22506 #define	MC_CMD_PCIE_TUNE_TXEQ_GET_OUT_RESERVED_OFST 0
22507 #define	MC_CMD_PCIE_TUNE_TXEQ_GET_OUT_RESERVED_LBN 12
22508 #define	MC_CMD_PCIE_TUNE_TXEQ_GET_OUT_RESERVED_WIDTH 12
22509 #define	MC_CMD_PCIE_TUNE_TXEQ_GET_OUT_PARAM_CURRENT_OFST 0
22510 #define	MC_CMD_PCIE_TUNE_TXEQ_GET_OUT_PARAM_CURRENT_LBN 24
22511 #define	MC_CMD_PCIE_TUNE_TXEQ_GET_OUT_PARAM_CURRENT_WIDTH 8
22512 
22513 /* MC_CMD_PCIE_TUNE_START_EYE_PLOT_IN msgrequest */
22514 #define	MC_CMD_PCIE_TUNE_START_EYE_PLOT_IN_LEN 8
22515 /* Requested operation */
22516 #define	MC_CMD_PCIE_TUNE_START_EYE_PLOT_IN_PCIE_TUNE_OP_OFST 0
22517 #define	MC_CMD_PCIE_TUNE_START_EYE_PLOT_IN_PCIE_TUNE_OP_LEN 1
22518 /* Align the arguments to 32 bits */
22519 #define	MC_CMD_PCIE_TUNE_START_EYE_PLOT_IN_PCIE_TUNE_RSVD_OFST 1
22520 #define	MC_CMD_PCIE_TUNE_START_EYE_PLOT_IN_PCIE_TUNE_RSVD_LEN 3
22521 #define	MC_CMD_PCIE_TUNE_START_EYE_PLOT_IN_LANE_OFST 4
22522 #define	MC_CMD_PCIE_TUNE_START_EYE_PLOT_IN_LANE_LEN 4
22523 
22524 /* MC_CMD_PCIE_TUNE_START_EYE_PLOT_OUT msgresponse */
22525 #define	MC_CMD_PCIE_TUNE_START_EYE_PLOT_OUT_LEN 0
22526 
22527 /* MC_CMD_PCIE_TUNE_POLL_EYE_PLOT_IN msgrequest */
22528 #define	MC_CMD_PCIE_TUNE_POLL_EYE_PLOT_IN_LEN 4
22529 /* Requested operation */
22530 #define	MC_CMD_PCIE_TUNE_POLL_EYE_PLOT_IN_PCIE_TUNE_OP_OFST 0
22531 #define	MC_CMD_PCIE_TUNE_POLL_EYE_PLOT_IN_PCIE_TUNE_OP_LEN 1
22532 /* Align the arguments to 32 bits */
22533 #define	MC_CMD_PCIE_TUNE_POLL_EYE_PLOT_IN_PCIE_TUNE_RSVD_OFST 1
22534 #define	MC_CMD_PCIE_TUNE_POLL_EYE_PLOT_IN_PCIE_TUNE_RSVD_LEN 3
22535 
22536 /* MC_CMD_PCIE_TUNE_POLL_EYE_PLOT_OUT msgresponse */
22537 #define	MC_CMD_PCIE_TUNE_POLL_EYE_PLOT_OUT_LENMIN 0
22538 #define	MC_CMD_PCIE_TUNE_POLL_EYE_PLOT_OUT_LENMAX 252
22539 #define	MC_CMD_PCIE_TUNE_POLL_EYE_PLOT_OUT_LENMAX_MCDI2 1020
22540 #define	MC_CMD_PCIE_TUNE_POLL_EYE_PLOT_OUT_LEN(num) (0+2*(num))
22541 #define	MC_CMD_PCIE_TUNE_POLL_EYE_PLOT_OUT_SAMPLES_NUM(len) (((len)-0)/2)
22542 #define	MC_CMD_PCIE_TUNE_POLL_EYE_PLOT_OUT_SAMPLES_OFST 0
22543 #define	MC_CMD_PCIE_TUNE_POLL_EYE_PLOT_OUT_SAMPLES_LEN 2
22544 #define	MC_CMD_PCIE_TUNE_POLL_EYE_PLOT_OUT_SAMPLES_MINNUM 0
22545 #define	MC_CMD_PCIE_TUNE_POLL_EYE_PLOT_OUT_SAMPLES_MAXNUM 126
22546 #define	MC_CMD_PCIE_TUNE_POLL_EYE_PLOT_OUT_SAMPLES_MAXNUM_MCDI2 510
22547 
22548 /* MC_CMD_PCIE_TUNE_BIST_SQUARE_WAVE_IN msgrequest */
22549 #define	MC_CMD_PCIE_TUNE_BIST_SQUARE_WAVE_IN_LEN 0
22550 
22551 /* MC_CMD_PCIE_TUNE_BIST_SQUARE_WAVE_OUT msgrequest */
22552 #define	MC_CMD_PCIE_TUNE_BIST_SQUARE_WAVE_OUT_LEN 0
22553 
22554 
22555 /***********************************/
22556 /* MC_CMD_LICENSING
22557  * Operations on the NVRAM_PARTITION_TYPE_LICENSE application license partition
22558  * - not used for V3 licensing
22559  */
22560 #define	MC_CMD_LICENSING 0xf3
22561 #define	MC_CMD_LICENSING_MSGSET 0xf3
22562 #undef	MC_CMD_0xf3_PRIVILEGE_CTG
22563 
22564 #define	MC_CMD_0xf3_PRIVILEGE_CTG SRIOV_CTG_GENERAL
22565 
22566 /* MC_CMD_LICENSING_IN msgrequest */
22567 #define	MC_CMD_LICENSING_IN_LEN 4
22568 /* identifies the type of operation requested */
22569 #define	MC_CMD_LICENSING_IN_OP_OFST 0
22570 #define	MC_CMD_LICENSING_IN_OP_LEN 4
22571 /* enum: re-read and apply licenses after a license key partition update; note
22572  * that this operation returns a zero-length response
22573  */
22574 #define	MC_CMD_LICENSING_IN_OP_UPDATE_LICENSE 0x0
22575 /* enum: report counts of installed licenses */
22576 #define	MC_CMD_LICENSING_IN_OP_GET_KEY_STATS 0x1
22577 
22578 /* MC_CMD_LICENSING_OUT msgresponse */
22579 #define	MC_CMD_LICENSING_OUT_LEN 28
22580 /* count of application keys which are valid */
22581 #define	MC_CMD_LICENSING_OUT_VALID_APP_KEYS_OFST 0
22582 #define	MC_CMD_LICENSING_OUT_VALID_APP_KEYS_LEN 4
22583 /* sum of UNVERIFIABLE_APP_KEYS + WRONG_NODE_APP_KEYS (for compatibility with
22584  * MC_CMD_FC_OP_LICENSE)
22585  */
22586 #define	MC_CMD_LICENSING_OUT_INVALID_APP_KEYS_OFST 4
22587 #define	MC_CMD_LICENSING_OUT_INVALID_APP_KEYS_LEN 4
22588 /* count of application keys which are invalid due to being blacklisted */
22589 #define	MC_CMD_LICENSING_OUT_BLACKLISTED_APP_KEYS_OFST 8
22590 #define	MC_CMD_LICENSING_OUT_BLACKLISTED_APP_KEYS_LEN 4
22591 /* count of application keys which are invalid due to being unverifiable */
22592 #define	MC_CMD_LICENSING_OUT_UNVERIFIABLE_APP_KEYS_OFST 12
22593 #define	MC_CMD_LICENSING_OUT_UNVERIFIABLE_APP_KEYS_LEN 4
22594 /* count of application keys which are invalid due to being for the wrong node
22595  */
22596 #define	MC_CMD_LICENSING_OUT_WRONG_NODE_APP_KEYS_OFST 16
22597 #define	MC_CMD_LICENSING_OUT_WRONG_NODE_APP_KEYS_LEN 4
22598 /* licensing state (for diagnostics; the exact meaning of the bits in this
22599  * field are private to the firmware)
22600  */
22601 #define	MC_CMD_LICENSING_OUT_LICENSING_STATE_OFST 20
22602 #define	MC_CMD_LICENSING_OUT_LICENSING_STATE_LEN 4
22603 /* licensing subsystem self-test report (for manftest) */
22604 #define	MC_CMD_LICENSING_OUT_LICENSING_SELF_TEST_OFST 24
22605 #define	MC_CMD_LICENSING_OUT_LICENSING_SELF_TEST_LEN 4
22606 /* enum: licensing subsystem self-test failed */
22607 #define	MC_CMD_LICENSING_OUT_SELF_TEST_FAIL 0x0
22608 /* enum: licensing subsystem self-test passed */
22609 #define	MC_CMD_LICENSING_OUT_SELF_TEST_PASS 0x1
22610 
22611 
22612 /***********************************/
22613 /* MC_CMD_LICENSING_V3
22614  * Operations on the NVRAM_PARTITION_TYPE_LICENSE application license partition
22615  * - V3 licensing (Medford)
22616  */
22617 #define	MC_CMD_LICENSING_V3 0xd0
22618 #define	MC_CMD_LICENSING_V3_MSGSET 0xd0
22619 #undef	MC_CMD_0xd0_PRIVILEGE_CTG
22620 
22621 #define	MC_CMD_0xd0_PRIVILEGE_CTG SRIOV_CTG_GENERAL
22622 
22623 /* MC_CMD_LICENSING_V3_IN msgrequest */
22624 #define	MC_CMD_LICENSING_V3_IN_LEN 4
22625 /* identifies the type of operation requested */
22626 #define	MC_CMD_LICENSING_V3_IN_OP_OFST 0
22627 #define	MC_CMD_LICENSING_V3_IN_OP_LEN 4
22628 /* enum: re-read and apply licenses after a license key partition update; note
22629  * that this operation returns a zero-length response
22630  */
22631 #define	MC_CMD_LICENSING_V3_IN_OP_UPDATE_LICENSE 0x0
22632 /* enum: report counts of installed licenses Returns EAGAIN if license
22633  * processing (updating) has been started but not yet completed.
22634  */
22635 #define	MC_CMD_LICENSING_V3_IN_OP_REPORT_LICENSE 0x1
22636 
22637 /* MC_CMD_LICENSING_V3_OUT msgresponse */
22638 #define	MC_CMD_LICENSING_V3_OUT_LEN 88
22639 /* count of keys which are valid */
22640 #define	MC_CMD_LICENSING_V3_OUT_VALID_KEYS_OFST 0
22641 #define	MC_CMD_LICENSING_V3_OUT_VALID_KEYS_LEN 4
22642 /* sum of UNVERIFIABLE_KEYS + WRONG_NODE_KEYS (for compatibility with
22643  * MC_CMD_FC_OP_LICENSE)
22644  */
22645 #define	MC_CMD_LICENSING_V3_OUT_INVALID_KEYS_OFST 4
22646 #define	MC_CMD_LICENSING_V3_OUT_INVALID_KEYS_LEN 4
22647 /* count of keys which are invalid due to being unverifiable */
22648 #define	MC_CMD_LICENSING_V3_OUT_UNVERIFIABLE_KEYS_OFST 8
22649 #define	MC_CMD_LICENSING_V3_OUT_UNVERIFIABLE_KEYS_LEN 4
22650 /* count of keys which are invalid due to being for the wrong node */
22651 #define	MC_CMD_LICENSING_V3_OUT_WRONG_NODE_KEYS_OFST 12
22652 #define	MC_CMD_LICENSING_V3_OUT_WRONG_NODE_KEYS_LEN 4
22653 /* licensing state (for diagnostics; the exact meaning of the bits in this
22654  * field are private to the firmware)
22655  */
22656 #define	MC_CMD_LICENSING_V3_OUT_LICENSING_STATE_OFST 16
22657 #define	MC_CMD_LICENSING_V3_OUT_LICENSING_STATE_LEN 4
22658 /* licensing subsystem self-test report (for manftest) */
22659 #define	MC_CMD_LICENSING_V3_OUT_LICENSING_SELF_TEST_OFST 20
22660 #define	MC_CMD_LICENSING_V3_OUT_LICENSING_SELF_TEST_LEN 4
22661 /* enum: licensing subsystem self-test failed */
22662 #define	MC_CMD_LICENSING_V3_OUT_SELF_TEST_FAIL 0x0
22663 /* enum: licensing subsystem self-test passed */
22664 #define	MC_CMD_LICENSING_V3_OUT_SELF_TEST_PASS 0x1
22665 /* bitmask of licensed applications */
22666 #define	MC_CMD_LICENSING_V3_OUT_LICENSED_APPS_OFST 24
22667 #define	MC_CMD_LICENSING_V3_OUT_LICENSED_APPS_LEN 8
22668 #define	MC_CMD_LICENSING_V3_OUT_LICENSED_APPS_LO_OFST 24
22669 #define	MC_CMD_LICENSING_V3_OUT_LICENSED_APPS_LO_LEN 4
22670 #define	MC_CMD_LICENSING_V3_OUT_LICENSED_APPS_LO_LBN 192
22671 #define	MC_CMD_LICENSING_V3_OUT_LICENSED_APPS_LO_WIDTH 32
22672 #define	MC_CMD_LICENSING_V3_OUT_LICENSED_APPS_HI_OFST 28
22673 #define	MC_CMD_LICENSING_V3_OUT_LICENSED_APPS_HI_LEN 4
22674 #define	MC_CMD_LICENSING_V3_OUT_LICENSED_APPS_HI_LBN 224
22675 #define	MC_CMD_LICENSING_V3_OUT_LICENSED_APPS_HI_WIDTH 32
22676 /* reserved for future use */
22677 #define	MC_CMD_LICENSING_V3_OUT_RESERVED_0_OFST 32
22678 #define	MC_CMD_LICENSING_V3_OUT_RESERVED_0_LEN 24
22679 /* bitmask of licensed features */
22680 #define	MC_CMD_LICENSING_V3_OUT_LICENSED_FEATURES_OFST 56
22681 #define	MC_CMD_LICENSING_V3_OUT_LICENSED_FEATURES_LEN 8
22682 #define	MC_CMD_LICENSING_V3_OUT_LICENSED_FEATURES_LO_OFST 56
22683 #define	MC_CMD_LICENSING_V3_OUT_LICENSED_FEATURES_LO_LEN 4
22684 #define	MC_CMD_LICENSING_V3_OUT_LICENSED_FEATURES_LO_LBN 448
22685 #define	MC_CMD_LICENSING_V3_OUT_LICENSED_FEATURES_LO_WIDTH 32
22686 #define	MC_CMD_LICENSING_V3_OUT_LICENSED_FEATURES_HI_OFST 60
22687 #define	MC_CMD_LICENSING_V3_OUT_LICENSED_FEATURES_HI_LEN 4
22688 #define	MC_CMD_LICENSING_V3_OUT_LICENSED_FEATURES_HI_LBN 480
22689 #define	MC_CMD_LICENSING_V3_OUT_LICENSED_FEATURES_HI_WIDTH 32
22690 /* reserved for future use */
22691 #define	MC_CMD_LICENSING_V3_OUT_RESERVED_1_OFST 64
22692 #define	MC_CMD_LICENSING_V3_OUT_RESERVED_1_LEN 24
22693 
22694 
22695 /***********************************/
22696 /* MC_CMD_LICENSING_GET_ID_V3
22697  * Get ID and type from the NVRAM_PARTITION_TYPE_LICENSE application license
22698  * partition - V3 licensing (Medford)
22699  */
22700 #define	MC_CMD_LICENSING_GET_ID_V3 0xd1
22701 #define	MC_CMD_LICENSING_GET_ID_V3_MSGSET 0xd1
22702 #undef	MC_CMD_0xd1_PRIVILEGE_CTG
22703 
22704 #define	MC_CMD_0xd1_PRIVILEGE_CTG SRIOV_CTG_GENERAL
22705 
22706 /* MC_CMD_LICENSING_GET_ID_V3_IN msgrequest */
22707 #define	MC_CMD_LICENSING_GET_ID_V3_IN_LEN 0
22708 
22709 /* MC_CMD_LICENSING_GET_ID_V3_OUT msgresponse */
22710 #define	MC_CMD_LICENSING_GET_ID_V3_OUT_LENMIN 8
22711 #define	MC_CMD_LICENSING_GET_ID_V3_OUT_LENMAX 252
22712 #define	MC_CMD_LICENSING_GET_ID_V3_OUT_LENMAX_MCDI2 1020
22713 #define	MC_CMD_LICENSING_GET_ID_V3_OUT_LEN(num) (8+1*(num))
22714 #define	MC_CMD_LICENSING_GET_ID_V3_OUT_LICENSE_ID_NUM(len) (((len)-8)/1)
22715 /* type of license (eg 3) */
22716 #define	MC_CMD_LICENSING_GET_ID_V3_OUT_LICENSE_TYPE_OFST 0
22717 #define	MC_CMD_LICENSING_GET_ID_V3_OUT_LICENSE_TYPE_LEN 4
22718 /* length of the license ID (in bytes) */
22719 #define	MC_CMD_LICENSING_GET_ID_V3_OUT_LICENSE_ID_LENGTH_OFST 4
22720 #define	MC_CMD_LICENSING_GET_ID_V3_OUT_LICENSE_ID_LENGTH_LEN 4
22721 /* the unique license ID of the adapter */
22722 #define	MC_CMD_LICENSING_GET_ID_V3_OUT_LICENSE_ID_OFST 8
22723 #define	MC_CMD_LICENSING_GET_ID_V3_OUT_LICENSE_ID_LEN 1
22724 #define	MC_CMD_LICENSING_GET_ID_V3_OUT_LICENSE_ID_MINNUM 0
22725 #define	MC_CMD_LICENSING_GET_ID_V3_OUT_LICENSE_ID_MAXNUM 244
22726 #define	MC_CMD_LICENSING_GET_ID_V3_OUT_LICENSE_ID_MAXNUM_MCDI2 1012
22727 
22728 
22729 /***********************************/
22730 /* MC_CMD_MC2MC_PROXY
22731  * Execute an arbitrary MCDI command on the slave MC of a dual-core device.
22732  * This will fail on a single-core system.
22733  */
22734 #define	MC_CMD_MC2MC_PROXY 0xf4
22735 #define	MC_CMD_MC2MC_PROXY_MSGSET 0xf4
22736 #undef	MC_CMD_0xf4_PRIVILEGE_CTG
22737 
22738 #define	MC_CMD_0xf4_PRIVILEGE_CTG SRIOV_CTG_GENERAL
22739 
22740 /* MC_CMD_MC2MC_PROXY_IN msgrequest */
22741 #define	MC_CMD_MC2MC_PROXY_IN_LEN 0
22742 
22743 /* MC_CMD_MC2MC_PROXY_OUT msgresponse */
22744 #define	MC_CMD_MC2MC_PROXY_OUT_LEN 0
22745 
22746 
22747 /***********************************/
22748 /* MC_CMD_GET_LICENSED_APP_STATE
22749  * Query the state of an individual licensed application. (Note that the actual
22750  * state may be invalidated by the MC_CMD_LICENSING OP_UPDATE_LICENSE operation
22751  * or a reboot of the MC.) Not used for V3 licensing
22752  */
22753 #define	MC_CMD_GET_LICENSED_APP_STATE 0xf5
22754 #define	MC_CMD_GET_LICENSED_APP_STATE_MSGSET 0xf5
22755 #undef	MC_CMD_0xf5_PRIVILEGE_CTG
22756 
22757 #define	MC_CMD_0xf5_PRIVILEGE_CTG SRIOV_CTG_GENERAL
22758 
22759 /* MC_CMD_GET_LICENSED_APP_STATE_IN msgrequest */
22760 #define	MC_CMD_GET_LICENSED_APP_STATE_IN_LEN 4
22761 /* application ID to query (LICENSED_APP_ID_xxx) */
22762 #define	MC_CMD_GET_LICENSED_APP_STATE_IN_APP_ID_OFST 0
22763 #define	MC_CMD_GET_LICENSED_APP_STATE_IN_APP_ID_LEN 4
22764 
22765 /* MC_CMD_GET_LICENSED_APP_STATE_OUT msgresponse */
22766 #define	MC_CMD_GET_LICENSED_APP_STATE_OUT_LEN 4
22767 /* state of this application */
22768 #define	MC_CMD_GET_LICENSED_APP_STATE_OUT_STATE_OFST 0
22769 #define	MC_CMD_GET_LICENSED_APP_STATE_OUT_STATE_LEN 4
22770 /* enum: no (or invalid) license is present for the application */
22771 #define	MC_CMD_GET_LICENSED_APP_STATE_OUT_NOT_LICENSED 0x0
22772 /* enum: a valid license is present for the application */
22773 #define	MC_CMD_GET_LICENSED_APP_STATE_OUT_LICENSED 0x1
22774 
22775 
22776 /***********************************/
22777 /* MC_CMD_GET_LICENSED_V3_APP_STATE
22778  * Query the state of an individual licensed application. (Note that the actual
22779  * state may be invalidated by the MC_CMD_LICENSING_V3 OP_UPDATE_LICENSE
22780  * operation or a reboot of the MC.) Used for V3 licensing (Medford)
22781  */
22782 #define	MC_CMD_GET_LICENSED_V3_APP_STATE 0xd2
22783 #define	MC_CMD_GET_LICENSED_V3_APP_STATE_MSGSET 0xd2
22784 #undef	MC_CMD_0xd2_PRIVILEGE_CTG
22785 
22786 #define	MC_CMD_0xd2_PRIVILEGE_CTG SRIOV_CTG_GENERAL
22787 
22788 /* MC_CMD_GET_LICENSED_V3_APP_STATE_IN msgrequest */
22789 #define	MC_CMD_GET_LICENSED_V3_APP_STATE_IN_LEN 8
22790 /* application ID to query (LICENSED_V3_APPS_xxx) expressed as a single bit
22791  * mask
22792  */
22793 #define	MC_CMD_GET_LICENSED_V3_APP_STATE_IN_APP_ID_OFST 0
22794 #define	MC_CMD_GET_LICENSED_V3_APP_STATE_IN_APP_ID_LEN 8
22795 #define	MC_CMD_GET_LICENSED_V3_APP_STATE_IN_APP_ID_LO_OFST 0
22796 #define	MC_CMD_GET_LICENSED_V3_APP_STATE_IN_APP_ID_LO_LEN 4
22797 #define	MC_CMD_GET_LICENSED_V3_APP_STATE_IN_APP_ID_LO_LBN 0
22798 #define	MC_CMD_GET_LICENSED_V3_APP_STATE_IN_APP_ID_LO_WIDTH 32
22799 #define	MC_CMD_GET_LICENSED_V3_APP_STATE_IN_APP_ID_HI_OFST 4
22800 #define	MC_CMD_GET_LICENSED_V3_APP_STATE_IN_APP_ID_HI_LEN 4
22801 #define	MC_CMD_GET_LICENSED_V3_APP_STATE_IN_APP_ID_HI_LBN 32
22802 #define	MC_CMD_GET_LICENSED_V3_APP_STATE_IN_APP_ID_HI_WIDTH 32
22803 
22804 /* MC_CMD_GET_LICENSED_V3_APP_STATE_OUT msgresponse */
22805 #define	MC_CMD_GET_LICENSED_V3_APP_STATE_OUT_LEN 4
22806 /* state of this application */
22807 #define	MC_CMD_GET_LICENSED_V3_APP_STATE_OUT_STATE_OFST 0
22808 #define	MC_CMD_GET_LICENSED_V3_APP_STATE_OUT_STATE_LEN 4
22809 /* enum: no (or invalid) license is present for the application */
22810 #define	MC_CMD_GET_LICENSED_V3_APP_STATE_OUT_NOT_LICENSED 0x0
22811 /* enum: a valid license is present for the application */
22812 #define	MC_CMD_GET_LICENSED_V3_APP_STATE_OUT_LICENSED 0x1
22813 
22814 
22815 /***********************************/
22816 /* MC_CMD_GET_LICENSED_V3_FEATURE_STATES
22817  * Query the state of an one or more licensed features. (Note that the actual
22818  * state may be invalidated by the MC_CMD_LICENSING_V3 OP_UPDATE_LICENSE
22819  * operation or a reboot of the MC.) Used for V3 licensing (Medford)
22820  */
22821 #define	MC_CMD_GET_LICENSED_V3_FEATURE_STATES 0xd3
22822 #define	MC_CMD_GET_LICENSED_V3_FEATURE_STATES_MSGSET 0xd3
22823 #undef	MC_CMD_0xd3_PRIVILEGE_CTG
22824 
22825 #define	MC_CMD_0xd3_PRIVILEGE_CTG SRIOV_CTG_GENERAL
22826 
22827 /* MC_CMD_GET_LICENSED_V3_FEATURE_STATES_IN msgrequest */
22828 #define	MC_CMD_GET_LICENSED_V3_FEATURE_STATES_IN_LEN 8
22829 /* features to query (LICENSED_V3_FEATURES_xxx) expressed as a mask with one or
22830  * more bits set
22831  */
22832 #define	MC_CMD_GET_LICENSED_V3_FEATURE_STATES_IN_FEATURES_OFST 0
22833 #define	MC_CMD_GET_LICENSED_V3_FEATURE_STATES_IN_FEATURES_LEN 8
22834 #define	MC_CMD_GET_LICENSED_V3_FEATURE_STATES_IN_FEATURES_LO_OFST 0
22835 #define	MC_CMD_GET_LICENSED_V3_FEATURE_STATES_IN_FEATURES_LO_LEN 4
22836 #define	MC_CMD_GET_LICENSED_V3_FEATURE_STATES_IN_FEATURES_LO_LBN 0
22837 #define	MC_CMD_GET_LICENSED_V3_FEATURE_STATES_IN_FEATURES_LO_WIDTH 32
22838 #define	MC_CMD_GET_LICENSED_V3_FEATURE_STATES_IN_FEATURES_HI_OFST 4
22839 #define	MC_CMD_GET_LICENSED_V3_FEATURE_STATES_IN_FEATURES_HI_LEN 4
22840 #define	MC_CMD_GET_LICENSED_V3_FEATURE_STATES_IN_FEATURES_HI_LBN 32
22841 #define	MC_CMD_GET_LICENSED_V3_FEATURE_STATES_IN_FEATURES_HI_WIDTH 32
22842 
22843 /* MC_CMD_GET_LICENSED_V3_FEATURE_STATES_OUT msgresponse */
22844 #define	MC_CMD_GET_LICENSED_V3_FEATURE_STATES_OUT_LEN 8
22845 /* states of these features - bit set for licensed, clear for not licensed */
22846 #define	MC_CMD_GET_LICENSED_V3_FEATURE_STATES_OUT_STATES_OFST 0
22847 #define	MC_CMD_GET_LICENSED_V3_FEATURE_STATES_OUT_STATES_LEN 8
22848 #define	MC_CMD_GET_LICENSED_V3_FEATURE_STATES_OUT_STATES_LO_OFST 0
22849 #define	MC_CMD_GET_LICENSED_V3_FEATURE_STATES_OUT_STATES_LO_LEN 4
22850 #define	MC_CMD_GET_LICENSED_V3_FEATURE_STATES_OUT_STATES_LO_LBN 0
22851 #define	MC_CMD_GET_LICENSED_V3_FEATURE_STATES_OUT_STATES_LO_WIDTH 32
22852 #define	MC_CMD_GET_LICENSED_V3_FEATURE_STATES_OUT_STATES_HI_OFST 4
22853 #define	MC_CMD_GET_LICENSED_V3_FEATURE_STATES_OUT_STATES_HI_LEN 4
22854 #define	MC_CMD_GET_LICENSED_V3_FEATURE_STATES_OUT_STATES_HI_LBN 32
22855 #define	MC_CMD_GET_LICENSED_V3_FEATURE_STATES_OUT_STATES_HI_WIDTH 32
22856 
22857 
22858 /***********************************/
22859 /* MC_CMD_LICENSED_APP_OP
22860  * Perform an action for an individual licensed application - not used for V3
22861  * licensing.
22862  */
22863 #define	MC_CMD_LICENSED_APP_OP 0xf6
22864 #define	MC_CMD_LICENSED_APP_OP_MSGSET 0xf6
22865 #undef	MC_CMD_0xf6_PRIVILEGE_CTG
22866 
22867 #define	MC_CMD_0xf6_PRIVILEGE_CTG SRIOV_CTG_GENERAL
22868 
22869 /* MC_CMD_LICENSED_APP_OP_IN msgrequest */
22870 #define	MC_CMD_LICENSED_APP_OP_IN_LENMIN 8
22871 #define	MC_CMD_LICENSED_APP_OP_IN_LENMAX 252
22872 #define	MC_CMD_LICENSED_APP_OP_IN_LENMAX_MCDI2 1020
22873 #define	MC_CMD_LICENSED_APP_OP_IN_LEN(num) (8+4*(num))
22874 #define	MC_CMD_LICENSED_APP_OP_IN_ARGS_NUM(len) (((len)-8)/4)
22875 /* application ID */
22876 #define	MC_CMD_LICENSED_APP_OP_IN_APP_ID_OFST 0
22877 #define	MC_CMD_LICENSED_APP_OP_IN_APP_ID_LEN 4
22878 /* the type of operation requested */
22879 #define	MC_CMD_LICENSED_APP_OP_IN_OP_OFST 4
22880 #define	MC_CMD_LICENSED_APP_OP_IN_OP_LEN 4
22881 /* enum: validate application */
22882 #define	MC_CMD_LICENSED_APP_OP_IN_OP_VALIDATE 0x0
22883 /* enum: mask application */
22884 #define	MC_CMD_LICENSED_APP_OP_IN_OP_MASK 0x1
22885 /* arguments specific to this particular operation */
22886 #define	MC_CMD_LICENSED_APP_OP_IN_ARGS_OFST 8
22887 #define	MC_CMD_LICENSED_APP_OP_IN_ARGS_LEN 4
22888 #define	MC_CMD_LICENSED_APP_OP_IN_ARGS_MINNUM 0
22889 #define	MC_CMD_LICENSED_APP_OP_IN_ARGS_MAXNUM 61
22890 #define	MC_CMD_LICENSED_APP_OP_IN_ARGS_MAXNUM_MCDI2 253
22891 
22892 /* MC_CMD_LICENSED_APP_OP_OUT msgresponse */
22893 #define	MC_CMD_LICENSED_APP_OP_OUT_LENMIN 0
22894 #define	MC_CMD_LICENSED_APP_OP_OUT_LENMAX 252
22895 #define	MC_CMD_LICENSED_APP_OP_OUT_LENMAX_MCDI2 1020
22896 #define	MC_CMD_LICENSED_APP_OP_OUT_LEN(num) (0+4*(num))
22897 #define	MC_CMD_LICENSED_APP_OP_OUT_RESULT_NUM(len) (((len)-0)/4)
22898 /* result specific to this particular operation */
22899 #define	MC_CMD_LICENSED_APP_OP_OUT_RESULT_OFST 0
22900 #define	MC_CMD_LICENSED_APP_OP_OUT_RESULT_LEN 4
22901 #define	MC_CMD_LICENSED_APP_OP_OUT_RESULT_MINNUM 0
22902 #define	MC_CMD_LICENSED_APP_OP_OUT_RESULT_MAXNUM 63
22903 #define	MC_CMD_LICENSED_APP_OP_OUT_RESULT_MAXNUM_MCDI2 255
22904 
22905 /* MC_CMD_LICENSED_APP_OP_VALIDATE_IN msgrequest */
22906 #define	MC_CMD_LICENSED_APP_OP_VALIDATE_IN_LEN 72
22907 /* application ID */
22908 #define	MC_CMD_LICENSED_APP_OP_VALIDATE_IN_APP_ID_OFST 0
22909 #define	MC_CMD_LICENSED_APP_OP_VALIDATE_IN_APP_ID_LEN 4
22910 /* the type of operation requested */
22911 #define	MC_CMD_LICENSED_APP_OP_VALIDATE_IN_OP_OFST 4
22912 #define	MC_CMD_LICENSED_APP_OP_VALIDATE_IN_OP_LEN 4
22913 /* validation challenge */
22914 #define	MC_CMD_LICENSED_APP_OP_VALIDATE_IN_CHALLENGE_OFST 8
22915 #define	MC_CMD_LICENSED_APP_OP_VALIDATE_IN_CHALLENGE_LEN 64
22916 
22917 /* MC_CMD_LICENSED_APP_OP_VALIDATE_OUT msgresponse */
22918 #define	MC_CMD_LICENSED_APP_OP_VALIDATE_OUT_LEN 68
22919 /* feature expiry (time_t) */
22920 #define	MC_CMD_LICENSED_APP_OP_VALIDATE_OUT_EXPIRY_OFST 0
22921 #define	MC_CMD_LICENSED_APP_OP_VALIDATE_OUT_EXPIRY_LEN 4
22922 /* validation response */
22923 #define	MC_CMD_LICENSED_APP_OP_VALIDATE_OUT_RESPONSE_OFST 4
22924 #define	MC_CMD_LICENSED_APP_OP_VALIDATE_OUT_RESPONSE_LEN 64
22925 
22926 /* MC_CMD_LICENSED_APP_OP_MASK_IN msgrequest */
22927 #define	MC_CMD_LICENSED_APP_OP_MASK_IN_LEN 12
22928 /* application ID */
22929 #define	MC_CMD_LICENSED_APP_OP_MASK_IN_APP_ID_OFST 0
22930 #define	MC_CMD_LICENSED_APP_OP_MASK_IN_APP_ID_LEN 4
22931 /* the type of operation requested */
22932 #define	MC_CMD_LICENSED_APP_OP_MASK_IN_OP_OFST 4
22933 #define	MC_CMD_LICENSED_APP_OP_MASK_IN_OP_LEN 4
22934 /* flag */
22935 #define	MC_CMD_LICENSED_APP_OP_MASK_IN_FLAG_OFST 8
22936 #define	MC_CMD_LICENSED_APP_OP_MASK_IN_FLAG_LEN 4
22937 
22938 /* MC_CMD_LICENSED_APP_OP_MASK_OUT msgresponse */
22939 #define	MC_CMD_LICENSED_APP_OP_MASK_OUT_LEN 0
22940 
22941 
22942 /***********************************/
22943 /* MC_CMD_LICENSED_V3_VALIDATE_APP
22944  * Perform validation for an individual licensed application - V3 licensing
22945  * (Medford)
22946  */
22947 #define	MC_CMD_LICENSED_V3_VALIDATE_APP 0xd4
22948 #define	MC_CMD_LICENSED_V3_VALIDATE_APP_MSGSET 0xd4
22949 #undef	MC_CMD_0xd4_PRIVILEGE_CTG
22950 
22951 #define	MC_CMD_0xd4_PRIVILEGE_CTG SRIOV_CTG_GENERAL
22952 
22953 /* MC_CMD_LICENSED_V3_VALIDATE_APP_IN msgrequest */
22954 #define	MC_CMD_LICENSED_V3_VALIDATE_APP_IN_LEN 56
22955 /* challenge for validation (384 bits) */
22956 #define	MC_CMD_LICENSED_V3_VALIDATE_APP_IN_CHALLENGE_OFST 0
22957 #define	MC_CMD_LICENSED_V3_VALIDATE_APP_IN_CHALLENGE_LEN 48
22958 /* application ID expressed as a single bit mask */
22959 #define	MC_CMD_LICENSED_V3_VALIDATE_APP_IN_APP_ID_OFST 48
22960 #define	MC_CMD_LICENSED_V3_VALIDATE_APP_IN_APP_ID_LEN 8
22961 #define	MC_CMD_LICENSED_V3_VALIDATE_APP_IN_APP_ID_LO_OFST 48
22962 #define	MC_CMD_LICENSED_V3_VALIDATE_APP_IN_APP_ID_LO_LEN 4
22963 #define	MC_CMD_LICENSED_V3_VALIDATE_APP_IN_APP_ID_LO_LBN 384
22964 #define	MC_CMD_LICENSED_V3_VALIDATE_APP_IN_APP_ID_LO_WIDTH 32
22965 #define	MC_CMD_LICENSED_V3_VALIDATE_APP_IN_APP_ID_HI_OFST 52
22966 #define	MC_CMD_LICENSED_V3_VALIDATE_APP_IN_APP_ID_HI_LEN 4
22967 #define	MC_CMD_LICENSED_V3_VALIDATE_APP_IN_APP_ID_HI_LBN 416
22968 #define	MC_CMD_LICENSED_V3_VALIDATE_APP_IN_APP_ID_HI_WIDTH 32
22969 
22970 /* MC_CMD_LICENSED_V3_VALIDATE_APP_OUT msgresponse */
22971 #define	MC_CMD_LICENSED_V3_VALIDATE_APP_OUT_LEN 116
22972 /* validation response to challenge in the form of ECDSA signature consisting
22973  * of two 384-bit integers, r and s, in big-endian order. The signature signs a
22974  * SHA-384 digest of a message constructed from the concatenation of the input
22975  * message and the remaining fields of this output message, e.g. challenge[48
22976  * bytes] ... expiry_time[4 bytes] ...
22977  */
22978 #define	MC_CMD_LICENSED_V3_VALIDATE_APP_OUT_RESPONSE_OFST 0
22979 #define	MC_CMD_LICENSED_V3_VALIDATE_APP_OUT_RESPONSE_LEN 96
22980 /* application expiry time */
22981 #define	MC_CMD_LICENSED_V3_VALIDATE_APP_OUT_EXPIRY_TIME_OFST 96
22982 #define	MC_CMD_LICENSED_V3_VALIDATE_APP_OUT_EXPIRY_TIME_LEN 4
22983 /* application expiry units */
22984 #define	MC_CMD_LICENSED_V3_VALIDATE_APP_OUT_EXPIRY_UNITS_OFST 100
22985 #define	MC_CMD_LICENSED_V3_VALIDATE_APP_OUT_EXPIRY_UNITS_LEN 4
22986 /* enum: expiry units are accounting units */
22987 #define	MC_CMD_LICENSED_V3_VALIDATE_APP_OUT_EXPIRY_UNIT_ACC 0x0
22988 /* enum: expiry units are calendar days */
22989 #define	MC_CMD_LICENSED_V3_VALIDATE_APP_OUT_EXPIRY_UNIT_DAYS 0x1
22990 /* base MAC address of the NIC stored in NVRAM (note that this is a constant
22991  * value for a given NIC regardless which function is calling, effectively this
22992  * is PF0 base MAC address)
22993  */
22994 #define	MC_CMD_LICENSED_V3_VALIDATE_APP_OUT_BASE_MACADDR_OFST 104
22995 #define	MC_CMD_LICENSED_V3_VALIDATE_APP_OUT_BASE_MACADDR_LEN 6
22996 /* MAC address of v-adaptor associated with the client. If no such v-adapator
22997  * exists, then the field is filled with 0xFF.
22998  */
22999 #define	MC_CMD_LICENSED_V3_VALIDATE_APP_OUT_VADAPTOR_MACADDR_OFST 110
23000 #define	MC_CMD_LICENSED_V3_VALIDATE_APP_OUT_VADAPTOR_MACADDR_LEN 6
23001 
23002 
23003 /***********************************/
23004 /* MC_CMD_LICENSED_V3_MASK_FEATURES
23005  * Mask features - V3 licensing (Medford)
23006  */
23007 #define	MC_CMD_LICENSED_V3_MASK_FEATURES 0xd5
23008 #define	MC_CMD_LICENSED_V3_MASK_FEATURES_MSGSET 0xd5
23009 #undef	MC_CMD_0xd5_PRIVILEGE_CTG
23010 
23011 #define	MC_CMD_0xd5_PRIVILEGE_CTG SRIOV_CTG_ADMIN
23012 
23013 /* MC_CMD_LICENSED_V3_MASK_FEATURES_IN msgrequest */
23014 #define	MC_CMD_LICENSED_V3_MASK_FEATURES_IN_LEN 12
23015 /* mask to be applied to features to be changed */
23016 #define	MC_CMD_LICENSED_V3_MASK_FEATURES_IN_MASK_OFST 0
23017 #define	MC_CMD_LICENSED_V3_MASK_FEATURES_IN_MASK_LEN 8
23018 #define	MC_CMD_LICENSED_V3_MASK_FEATURES_IN_MASK_LO_OFST 0
23019 #define	MC_CMD_LICENSED_V3_MASK_FEATURES_IN_MASK_LO_LEN 4
23020 #define	MC_CMD_LICENSED_V3_MASK_FEATURES_IN_MASK_LO_LBN 0
23021 #define	MC_CMD_LICENSED_V3_MASK_FEATURES_IN_MASK_LO_WIDTH 32
23022 #define	MC_CMD_LICENSED_V3_MASK_FEATURES_IN_MASK_HI_OFST 4
23023 #define	MC_CMD_LICENSED_V3_MASK_FEATURES_IN_MASK_HI_LEN 4
23024 #define	MC_CMD_LICENSED_V3_MASK_FEATURES_IN_MASK_HI_LBN 32
23025 #define	MC_CMD_LICENSED_V3_MASK_FEATURES_IN_MASK_HI_WIDTH 32
23026 /* whether to turn on or turn off the masked features */
23027 #define	MC_CMD_LICENSED_V3_MASK_FEATURES_IN_FLAG_OFST 8
23028 #define	MC_CMD_LICENSED_V3_MASK_FEATURES_IN_FLAG_LEN 4
23029 /* enum: turn the features off */
23030 #define	MC_CMD_LICENSED_V3_MASK_FEATURES_IN_OFF 0x0
23031 /* enum: turn the features back on */
23032 #define	MC_CMD_LICENSED_V3_MASK_FEATURES_IN_ON 0x1
23033 
23034 /* MC_CMD_LICENSED_V3_MASK_FEATURES_OUT msgresponse */
23035 #define	MC_CMD_LICENSED_V3_MASK_FEATURES_OUT_LEN 0
23036 
23037 
23038 /***********************************/
23039 /* MC_CMD_LICENSING_V3_TEMPORARY
23040  * Perform operations to support installation of a single temporary license in
23041  * the adapter, in addition to those found in the licensing partition. See
23042  * SF-116124-SW for an overview of how this could be used. The license is
23043  * stored in MC persistent data and so will survive a MC reboot, but will be
23044  * erased when the adapter is power cycled
23045  */
23046 #define	MC_CMD_LICENSING_V3_TEMPORARY 0xd6
23047 #define	MC_CMD_LICENSING_V3_TEMPORARY_MSGSET 0xd6
23048 #undef	MC_CMD_0xd6_PRIVILEGE_CTG
23049 
23050 #define	MC_CMD_0xd6_PRIVILEGE_CTG SRIOV_CTG_ADMIN_TSA_UNBOUND
23051 
23052 /* MC_CMD_LICENSING_V3_TEMPORARY_IN msgrequest */
23053 #define	MC_CMD_LICENSING_V3_TEMPORARY_IN_LEN 4
23054 /* operation code */
23055 #define	MC_CMD_LICENSING_V3_TEMPORARY_IN_OP_OFST 0
23056 #define	MC_CMD_LICENSING_V3_TEMPORARY_IN_OP_LEN 4
23057 /* enum: install a new license, overwriting any existing temporary license.
23058  * This is an asynchronous operation owing to the time taken to validate an
23059  * ECDSA license
23060  */
23061 #define	MC_CMD_LICENSING_V3_TEMPORARY_SET 0x0
23062 /* enum: clear the license immediately rather than waiting for the next power
23063  * cycle
23064  */
23065 #define	MC_CMD_LICENSING_V3_TEMPORARY_CLEAR 0x1
23066 /* enum: get the status of the asynchronous MC_CMD_LICENSING_V3_TEMPORARY_SET
23067  * operation
23068  */
23069 #define	MC_CMD_LICENSING_V3_TEMPORARY_STATUS 0x2
23070 
23071 /* MC_CMD_LICENSING_V3_TEMPORARY_IN_SET msgrequest */
23072 #define	MC_CMD_LICENSING_V3_TEMPORARY_IN_SET_LEN 164
23073 #define	MC_CMD_LICENSING_V3_TEMPORARY_IN_SET_OP_OFST 0
23074 #define	MC_CMD_LICENSING_V3_TEMPORARY_IN_SET_OP_LEN 4
23075 /* ECDSA license and signature */
23076 #define	MC_CMD_LICENSING_V3_TEMPORARY_IN_SET_LICENSE_OFST 4
23077 #define	MC_CMD_LICENSING_V3_TEMPORARY_IN_SET_LICENSE_LEN 160
23078 
23079 /* MC_CMD_LICENSING_V3_TEMPORARY_IN_CLEAR msgrequest */
23080 #define	MC_CMD_LICENSING_V3_TEMPORARY_IN_CLEAR_LEN 4
23081 #define	MC_CMD_LICENSING_V3_TEMPORARY_IN_CLEAR_OP_OFST 0
23082 #define	MC_CMD_LICENSING_V3_TEMPORARY_IN_CLEAR_OP_LEN 4
23083 
23084 /* MC_CMD_LICENSING_V3_TEMPORARY_IN_STATUS msgrequest */
23085 #define	MC_CMD_LICENSING_V3_TEMPORARY_IN_STATUS_LEN 4
23086 #define	MC_CMD_LICENSING_V3_TEMPORARY_IN_STATUS_OP_OFST 0
23087 #define	MC_CMD_LICENSING_V3_TEMPORARY_IN_STATUS_OP_LEN 4
23088 
23089 /* MC_CMD_LICENSING_V3_TEMPORARY_OUT_STATUS msgresponse */
23090 #define	MC_CMD_LICENSING_V3_TEMPORARY_OUT_STATUS_LEN 12
23091 /* status code */
23092 #define	MC_CMD_LICENSING_V3_TEMPORARY_OUT_STATUS_STATUS_OFST 0
23093 #define	MC_CMD_LICENSING_V3_TEMPORARY_OUT_STATUS_STATUS_LEN 4
23094 /* enum: finished validating and installing license */
23095 #define	MC_CMD_LICENSING_V3_TEMPORARY_STATUS_OK 0x0
23096 /* enum: license validation and installation in progress */
23097 #define	MC_CMD_LICENSING_V3_TEMPORARY_STATUS_IN_PROGRESS 0x1
23098 /* enum: licensing error. More specific error messages are not provided to
23099  * avoid exposing details of the licensing system to the client
23100  */
23101 #define	MC_CMD_LICENSING_V3_TEMPORARY_STATUS_ERROR 0x2
23102 /* bitmask of licensed features */
23103 #define	MC_CMD_LICENSING_V3_TEMPORARY_OUT_STATUS_LICENSED_FEATURES_OFST 4
23104 #define	MC_CMD_LICENSING_V3_TEMPORARY_OUT_STATUS_LICENSED_FEATURES_LEN 8
23105 #define	MC_CMD_LICENSING_V3_TEMPORARY_OUT_STATUS_LICENSED_FEATURES_LO_OFST 4
23106 #define	MC_CMD_LICENSING_V3_TEMPORARY_OUT_STATUS_LICENSED_FEATURES_LO_LEN 4
23107 #define	MC_CMD_LICENSING_V3_TEMPORARY_OUT_STATUS_LICENSED_FEATURES_LO_LBN 32
23108 #define	MC_CMD_LICENSING_V3_TEMPORARY_OUT_STATUS_LICENSED_FEATURES_LO_WIDTH 32
23109 #define	MC_CMD_LICENSING_V3_TEMPORARY_OUT_STATUS_LICENSED_FEATURES_HI_OFST 8
23110 #define	MC_CMD_LICENSING_V3_TEMPORARY_OUT_STATUS_LICENSED_FEATURES_HI_LEN 4
23111 #define	MC_CMD_LICENSING_V3_TEMPORARY_OUT_STATUS_LICENSED_FEATURES_HI_LBN 64
23112 #define	MC_CMD_LICENSING_V3_TEMPORARY_OUT_STATUS_LICENSED_FEATURES_HI_WIDTH 32
23113 
23114 
23115 /***********************************/
23116 /* MC_CMD_SET_PORT_SNIFF_CONFIG
23117  * Configure RX port sniffing for the physical port associated with the calling
23118  * function. Only a privileged function may change the port sniffing
23119  * configuration. A copy of all traffic delivered to the host (non-promiscuous
23120  * mode) or all traffic arriving at the port (promiscuous mode) may be
23121  * delivered to a specific queue, or a set of queues with RSS.
23122  */
23123 #define	MC_CMD_SET_PORT_SNIFF_CONFIG 0xf7
23124 #define	MC_CMD_SET_PORT_SNIFF_CONFIG_MSGSET 0xf7
23125 #undef	MC_CMD_0xf7_PRIVILEGE_CTG
23126 
23127 #define	MC_CMD_0xf7_PRIVILEGE_CTG SRIOV_CTG_ADMIN
23128 
23129 /* MC_CMD_SET_PORT_SNIFF_CONFIG_IN msgrequest */
23130 #define	MC_CMD_SET_PORT_SNIFF_CONFIG_IN_LEN 16
23131 /* configuration flags */
23132 #define	MC_CMD_SET_PORT_SNIFF_CONFIG_IN_FLAGS_OFST 0
23133 #define	MC_CMD_SET_PORT_SNIFF_CONFIG_IN_FLAGS_LEN 4
23134 #define	MC_CMD_SET_PORT_SNIFF_CONFIG_IN_ENABLE_OFST 0
23135 #define	MC_CMD_SET_PORT_SNIFF_CONFIG_IN_ENABLE_LBN 0
23136 #define	MC_CMD_SET_PORT_SNIFF_CONFIG_IN_ENABLE_WIDTH 1
23137 #define	MC_CMD_SET_PORT_SNIFF_CONFIG_IN_PROMISCUOUS_OFST 0
23138 #define	MC_CMD_SET_PORT_SNIFF_CONFIG_IN_PROMISCUOUS_LBN 1
23139 #define	MC_CMD_SET_PORT_SNIFF_CONFIG_IN_PROMISCUOUS_WIDTH 1
23140 /* receive queue handle (for RSS mode, this is the base queue) */
23141 #define	MC_CMD_SET_PORT_SNIFF_CONFIG_IN_RX_QUEUE_OFST 4
23142 #define	MC_CMD_SET_PORT_SNIFF_CONFIG_IN_RX_QUEUE_LEN 4
23143 /* receive mode */
23144 #define	MC_CMD_SET_PORT_SNIFF_CONFIG_IN_RX_MODE_OFST 8
23145 #define	MC_CMD_SET_PORT_SNIFF_CONFIG_IN_RX_MODE_LEN 4
23146 /* enum: receive to just the specified queue */
23147 #define	MC_CMD_SET_PORT_SNIFF_CONFIG_IN_RX_MODE_SIMPLE 0x0
23148 /* enum: receive to multiple queues using RSS context */
23149 #define	MC_CMD_SET_PORT_SNIFF_CONFIG_IN_RX_MODE_RSS 0x1
23150 /* RSS context (for RX_MODE_RSS) as returned by MC_CMD_RSS_CONTEXT_ALLOC. Note
23151  * that these handles should be considered opaque to the host, although a value
23152  * of 0xFFFFFFFF is guaranteed never to be a valid handle.
23153  */
23154 #define	MC_CMD_SET_PORT_SNIFF_CONFIG_IN_RX_CONTEXT_OFST 12
23155 #define	MC_CMD_SET_PORT_SNIFF_CONFIG_IN_RX_CONTEXT_LEN 4
23156 
23157 /* MC_CMD_SET_PORT_SNIFF_CONFIG_OUT msgresponse */
23158 #define	MC_CMD_SET_PORT_SNIFF_CONFIG_OUT_LEN 0
23159 
23160 
23161 /***********************************/
23162 /* MC_CMD_GET_PORT_SNIFF_CONFIG
23163  * Obtain the current RX port sniffing configuration for the physical port
23164  * associated with the calling function. Only a privileged function may read
23165  * the configuration.
23166  */
23167 #define	MC_CMD_GET_PORT_SNIFF_CONFIG 0xf8
23168 #define	MC_CMD_GET_PORT_SNIFF_CONFIG_MSGSET 0xf8
23169 #undef	MC_CMD_0xf8_PRIVILEGE_CTG
23170 
23171 #define	MC_CMD_0xf8_PRIVILEGE_CTG SRIOV_CTG_GENERAL
23172 
23173 /* MC_CMD_GET_PORT_SNIFF_CONFIG_IN msgrequest */
23174 #define	MC_CMD_GET_PORT_SNIFF_CONFIG_IN_LEN 0
23175 
23176 /* MC_CMD_GET_PORT_SNIFF_CONFIG_OUT msgresponse */
23177 #define	MC_CMD_GET_PORT_SNIFF_CONFIG_OUT_LEN 16
23178 /* configuration flags */
23179 #define	MC_CMD_GET_PORT_SNIFF_CONFIG_OUT_FLAGS_OFST 0
23180 #define	MC_CMD_GET_PORT_SNIFF_CONFIG_OUT_FLAGS_LEN 4
23181 #define	MC_CMD_GET_PORT_SNIFF_CONFIG_OUT_ENABLE_OFST 0
23182 #define	MC_CMD_GET_PORT_SNIFF_CONFIG_OUT_ENABLE_LBN 0
23183 #define	MC_CMD_GET_PORT_SNIFF_CONFIG_OUT_ENABLE_WIDTH 1
23184 #define	MC_CMD_GET_PORT_SNIFF_CONFIG_OUT_PROMISCUOUS_OFST 0
23185 #define	MC_CMD_GET_PORT_SNIFF_CONFIG_OUT_PROMISCUOUS_LBN 1
23186 #define	MC_CMD_GET_PORT_SNIFF_CONFIG_OUT_PROMISCUOUS_WIDTH 1
23187 /* receiving queue handle (for RSS mode, this is the base queue) */
23188 #define	MC_CMD_GET_PORT_SNIFF_CONFIG_OUT_RX_QUEUE_OFST 4
23189 #define	MC_CMD_GET_PORT_SNIFF_CONFIG_OUT_RX_QUEUE_LEN 4
23190 /* receive mode */
23191 #define	MC_CMD_GET_PORT_SNIFF_CONFIG_OUT_RX_MODE_OFST 8
23192 #define	MC_CMD_GET_PORT_SNIFF_CONFIG_OUT_RX_MODE_LEN 4
23193 /* enum: receiving to just the specified queue */
23194 #define	MC_CMD_GET_PORT_SNIFF_CONFIG_OUT_RX_MODE_SIMPLE 0x0
23195 /* enum: receiving to multiple queues using RSS context */
23196 #define	MC_CMD_GET_PORT_SNIFF_CONFIG_OUT_RX_MODE_RSS 0x1
23197 /* RSS context (for RX_MODE_RSS) */
23198 #define	MC_CMD_GET_PORT_SNIFF_CONFIG_OUT_RX_CONTEXT_OFST 12
23199 #define	MC_CMD_GET_PORT_SNIFF_CONFIG_OUT_RX_CONTEXT_LEN 4
23200 
23201 
23202 /***********************************/
23203 /* MC_CMD_SET_PARSER_DISP_CONFIG
23204  * Change configuration related to the parser-dispatcher subsystem.
23205  */
23206 #define	MC_CMD_SET_PARSER_DISP_CONFIG 0xf9
23207 #define	MC_CMD_SET_PARSER_DISP_CONFIG_MSGSET 0xf9
23208 #undef	MC_CMD_0xf9_PRIVILEGE_CTG
23209 
23210 #define	MC_CMD_0xf9_PRIVILEGE_CTG SRIOV_CTG_GENERAL
23211 
23212 /* MC_CMD_SET_PARSER_DISP_CONFIG_IN msgrequest */
23213 #define	MC_CMD_SET_PARSER_DISP_CONFIG_IN_LENMIN 12
23214 #define	MC_CMD_SET_PARSER_DISP_CONFIG_IN_LENMAX 252
23215 #define	MC_CMD_SET_PARSER_DISP_CONFIG_IN_LENMAX_MCDI2 1020
23216 #define	MC_CMD_SET_PARSER_DISP_CONFIG_IN_LEN(num) (8+4*(num))
23217 #define	MC_CMD_SET_PARSER_DISP_CONFIG_IN_VALUE_NUM(len) (((len)-8)/4)
23218 /* the type of configuration setting to change */
23219 #define	MC_CMD_SET_PARSER_DISP_CONFIG_IN_TYPE_OFST 0
23220 #define	MC_CMD_SET_PARSER_DISP_CONFIG_IN_TYPE_LEN 4
23221 /* enum: Per-TXQ enable for multicast UDP destination lookup for possible
23222  * internal loopback. (ENTITY is a queue handle, VALUE is a single boolean.)
23223  */
23224 #define	MC_CMD_SET_PARSER_DISP_CONFIG_IN_TXQ_MCAST_UDP_DST_LOOKUP_EN 0x0
23225 /* enum: Per-v-adaptor enable for suppression of self-transmissions on the
23226  * internal loopback path. (ENTITY is an EVB_PORT_ID, VALUE is a single
23227  * boolean.)
23228  */
23229 #define	MC_CMD_SET_PARSER_DISP_CONFIG_IN_VADAPTOR_SUPPRESS_SELF_TX 0x1
23230 /* handle for the entity to update: queue handle, EVB port ID, etc. depending
23231  * on the type of configuration setting being changed
23232  */
23233 #define	MC_CMD_SET_PARSER_DISP_CONFIG_IN_ENTITY_OFST 4
23234 #define	MC_CMD_SET_PARSER_DISP_CONFIG_IN_ENTITY_LEN 4
23235 /* new value: the details depend on the type of configuration setting being
23236  * changed
23237  */
23238 #define	MC_CMD_SET_PARSER_DISP_CONFIG_IN_VALUE_OFST 8
23239 #define	MC_CMD_SET_PARSER_DISP_CONFIG_IN_VALUE_LEN 4
23240 #define	MC_CMD_SET_PARSER_DISP_CONFIG_IN_VALUE_MINNUM 1
23241 #define	MC_CMD_SET_PARSER_DISP_CONFIG_IN_VALUE_MAXNUM 61
23242 #define	MC_CMD_SET_PARSER_DISP_CONFIG_IN_VALUE_MAXNUM_MCDI2 253
23243 
23244 /* MC_CMD_SET_PARSER_DISP_CONFIG_OUT msgresponse */
23245 #define	MC_CMD_SET_PARSER_DISP_CONFIG_OUT_LEN 0
23246 
23247 
23248 /***********************************/
23249 /* MC_CMD_GET_PARSER_DISP_CONFIG
23250  * Read configuration related to the parser-dispatcher subsystem.
23251  */
23252 #define	MC_CMD_GET_PARSER_DISP_CONFIG 0xfa
23253 #define	MC_CMD_GET_PARSER_DISP_CONFIG_MSGSET 0xfa
23254 #undef	MC_CMD_0xfa_PRIVILEGE_CTG
23255 
23256 #define	MC_CMD_0xfa_PRIVILEGE_CTG SRIOV_CTG_GENERAL
23257 
23258 /* MC_CMD_GET_PARSER_DISP_CONFIG_IN msgrequest */
23259 #define	MC_CMD_GET_PARSER_DISP_CONFIG_IN_LEN 8
23260 /* the type of configuration setting to read */
23261 #define	MC_CMD_GET_PARSER_DISP_CONFIG_IN_TYPE_OFST 0
23262 #define	MC_CMD_GET_PARSER_DISP_CONFIG_IN_TYPE_LEN 4
23263 /*            Enum values, see field(s): */
23264 /*               MC_CMD_SET_PARSER_DISP_CONFIG/MC_CMD_SET_PARSER_DISP_CONFIG_IN/TYPE */
23265 /* handle for the entity to query: queue handle, EVB port ID, etc. depending on
23266  * the type of configuration setting being read
23267  */
23268 #define	MC_CMD_GET_PARSER_DISP_CONFIG_IN_ENTITY_OFST 4
23269 #define	MC_CMD_GET_PARSER_DISP_CONFIG_IN_ENTITY_LEN 4
23270 
23271 /* MC_CMD_GET_PARSER_DISP_CONFIG_OUT msgresponse */
23272 #define	MC_CMD_GET_PARSER_DISP_CONFIG_OUT_LENMIN 4
23273 #define	MC_CMD_GET_PARSER_DISP_CONFIG_OUT_LENMAX 252
23274 #define	MC_CMD_GET_PARSER_DISP_CONFIG_OUT_LENMAX_MCDI2 1020
23275 #define	MC_CMD_GET_PARSER_DISP_CONFIG_OUT_LEN(num) (0+4*(num))
23276 #define	MC_CMD_GET_PARSER_DISP_CONFIG_OUT_VALUE_NUM(len) (((len)-0)/4)
23277 /* current value: the details depend on the type of configuration setting being
23278  * read
23279  */
23280 #define	MC_CMD_GET_PARSER_DISP_CONFIG_OUT_VALUE_OFST 0
23281 #define	MC_CMD_GET_PARSER_DISP_CONFIG_OUT_VALUE_LEN 4
23282 #define	MC_CMD_GET_PARSER_DISP_CONFIG_OUT_VALUE_MINNUM 1
23283 #define	MC_CMD_GET_PARSER_DISP_CONFIG_OUT_VALUE_MAXNUM 63
23284 #define	MC_CMD_GET_PARSER_DISP_CONFIG_OUT_VALUE_MAXNUM_MCDI2 255
23285 
23286 
23287 /***********************************/
23288 /* MC_CMD_SET_TX_PORT_SNIFF_CONFIG
23289  * Configure TX port sniffing for the physical port associated with the calling
23290  * function. Only a privileged function may change the port sniffing
23291  * configuration. A copy of all traffic transmitted through the port may be
23292  * delivered to a specific queue, or a set of queues with RSS. Note that these
23293  * packets are delivered with transmit timestamps in the packet prefix, not
23294  * receive timestamps, so it is likely that the queue(s) will need to be
23295  * dedicated as TX sniff receivers.
23296  */
23297 #define	MC_CMD_SET_TX_PORT_SNIFF_CONFIG 0xfb
23298 #define	MC_CMD_SET_TX_PORT_SNIFF_CONFIG_MSGSET 0xfb
23299 #undef	MC_CMD_0xfb_PRIVILEGE_CTG
23300 
23301 #define	MC_CMD_0xfb_PRIVILEGE_CTG SRIOV_CTG_ADMIN
23302 
23303 /* MC_CMD_SET_TX_PORT_SNIFF_CONFIG_IN msgrequest */
23304 #define	MC_CMD_SET_TX_PORT_SNIFF_CONFIG_IN_LEN 16
23305 /* configuration flags */
23306 #define	MC_CMD_SET_TX_PORT_SNIFF_CONFIG_IN_FLAGS_OFST 0
23307 #define	MC_CMD_SET_TX_PORT_SNIFF_CONFIG_IN_FLAGS_LEN 4
23308 #define	MC_CMD_SET_TX_PORT_SNIFF_CONFIG_IN_ENABLE_OFST 0
23309 #define	MC_CMD_SET_TX_PORT_SNIFF_CONFIG_IN_ENABLE_LBN 0
23310 #define	MC_CMD_SET_TX_PORT_SNIFF_CONFIG_IN_ENABLE_WIDTH 1
23311 /* receive queue handle (for RSS mode, this is the base queue) */
23312 #define	MC_CMD_SET_TX_PORT_SNIFF_CONFIG_IN_RX_QUEUE_OFST 4
23313 #define	MC_CMD_SET_TX_PORT_SNIFF_CONFIG_IN_RX_QUEUE_LEN 4
23314 /* receive mode */
23315 #define	MC_CMD_SET_TX_PORT_SNIFF_CONFIG_IN_RX_MODE_OFST 8
23316 #define	MC_CMD_SET_TX_PORT_SNIFF_CONFIG_IN_RX_MODE_LEN 4
23317 /* enum: receive to just the specified queue */
23318 #define	MC_CMD_SET_TX_PORT_SNIFF_CONFIG_IN_RX_MODE_SIMPLE 0x0
23319 /* enum: receive to multiple queues using RSS context */
23320 #define	MC_CMD_SET_TX_PORT_SNIFF_CONFIG_IN_RX_MODE_RSS 0x1
23321 /* RSS context (for RX_MODE_RSS) as returned by MC_CMD_RSS_CONTEXT_ALLOC. Note
23322  * that these handles should be considered opaque to the host, although a value
23323  * of 0xFFFFFFFF is guaranteed never to be a valid handle.
23324  */
23325 #define	MC_CMD_SET_TX_PORT_SNIFF_CONFIG_IN_RX_CONTEXT_OFST 12
23326 #define	MC_CMD_SET_TX_PORT_SNIFF_CONFIG_IN_RX_CONTEXT_LEN 4
23327 
23328 /* MC_CMD_SET_TX_PORT_SNIFF_CONFIG_OUT msgresponse */
23329 #define	MC_CMD_SET_TX_PORT_SNIFF_CONFIG_OUT_LEN 0
23330 
23331 
23332 /***********************************/
23333 /* MC_CMD_GET_TX_PORT_SNIFF_CONFIG
23334  * Obtain the current TX port sniffing configuration for the physical port
23335  * associated with the calling function. Only a privileged function may read
23336  * the configuration.
23337  */
23338 #define	MC_CMD_GET_TX_PORT_SNIFF_CONFIG 0xfc
23339 #define	MC_CMD_GET_TX_PORT_SNIFF_CONFIG_MSGSET 0xfc
23340 #undef	MC_CMD_0xfc_PRIVILEGE_CTG
23341 
23342 #define	MC_CMD_0xfc_PRIVILEGE_CTG SRIOV_CTG_GENERAL
23343 
23344 /* MC_CMD_GET_TX_PORT_SNIFF_CONFIG_IN msgrequest */
23345 #define	MC_CMD_GET_TX_PORT_SNIFF_CONFIG_IN_LEN 0
23346 
23347 /* MC_CMD_GET_TX_PORT_SNIFF_CONFIG_OUT msgresponse */
23348 #define	MC_CMD_GET_TX_PORT_SNIFF_CONFIG_OUT_LEN 16
23349 /* configuration flags */
23350 #define	MC_CMD_GET_TX_PORT_SNIFF_CONFIG_OUT_FLAGS_OFST 0
23351 #define	MC_CMD_GET_TX_PORT_SNIFF_CONFIG_OUT_FLAGS_LEN 4
23352 #define	MC_CMD_GET_TX_PORT_SNIFF_CONFIG_OUT_ENABLE_OFST 0
23353 #define	MC_CMD_GET_TX_PORT_SNIFF_CONFIG_OUT_ENABLE_LBN 0
23354 #define	MC_CMD_GET_TX_PORT_SNIFF_CONFIG_OUT_ENABLE_WIDTH 1
23355 /* receiving queue handle (for RSS mode, this is the base queue) */
23356 #define	MC_CMD_GET_TX_PORT_SNIFF_CONFIG_OUT_RX_QUEUE_OFST 4
23357 #define	MC_CMD_GET_TX_PORT_SNIFF_CONFIG_OUT_RX_QUEUE_LEN 4
23358 /* receive mode */
23359 #define	MC_CMD_GET_TX_PORT_SNIFF_CONFIG_OUT_RX_MODE_OFST 8
23360 #define	MC_CMD_GET_TX_PORT_SNIFF_CONFIG_OUT_RX_MODE_LEN 4
23361 /* enum: receiving to just the specified queue */
23362 #define	MC_CMD_GET_TX_PORT_SNIFF_CONFIG_OUT_RX_MODE_SIMPLE 0x0
23363 /* enum: receiving to multiple queues using RSS context */
23364 #define	MC_CMD_GET_TX_PORT_SNIFF_CONFIG_OUT_RX_MODE_RSS 0x1
23365 /* RSS context (for RX_MODE_RSS) */
23366 #define	MC_CMD_GET_TX_PORT_SNIFF_CONFIG_OUT_RX_CONTEXT_OFST 12
23367 #define	MC_CMD_GET_TX_PORT_SNIFF_CONFIG_OUT_RX_CONTEXT_LEN 4
23368 
23369 
23370 /***********************************/
23371 /* MC_CMD_RMON_STATS_RX_ERRORS
23372  * Per queue rx error stats.
23373  */
23374 #define	MC_CMD_RMON_STATS_RX_ERRORS 0xfe
23375 #define	MC_CMD_RMON_STATS_RX_ERRORS_MSGSET 0xfe
23376 #undef	MC_CMD_0xfe_PRIVILEGE_CTG
23377 
23378 #define	MC_CMD_0xfe_PRIVILEGE_CTG SRIOV_CTG_GENERAL
23379 
23380 /* MC_CMD_RMON_STATS_RX_ERRORS_IN msgrequest */
23381 #define	MC_CMD_RMON_STATS_RX_ERRORS_IN_LEN 8
23382 /* The rx queue to get stats for. */
23383 #define	MC_CMD_RMON_STATS_RX_ERRORS_IN_RX_QUEUE_OFST 0
23384 #define	MC_CMD_RMON_STATS_RX_ERRORS_IN_RX_QUEUE_LEN 4
23385 #define	MC_CMD_RMON_STATS_RX_ERRORS_IN_FLAGS_OFST 4
23386 #define	MC_CMD_RMON_STATS_RX_ERRORS_IN_FLAGS_LEN 4
23387 #define	MC_CMD_RMON_STATS_RX_ERRORS_IN_RST_OFST 4
23388 #define	MC_CMD_RMON_STATS_RX_ERRORS_IN_RST_LBN 0
23389 #define	MC_CMD_RMON_STATS_RX_ERRORS_IN_RST_WIDTH 1
23390 
23391 /* MC_CMD_RMON_STATS_RX_ERRORS_OUT msgresponse */
23392 #define	MC_CMD_RMON_STATS_RX_ERRORS_OUT_LEN 16
23393 #define	MC_CMD_RMON_STATS_RX_ERRORS_OUT_CRC_ERRORS_OFST 0
23394 #define	MC_CMD_RMON_STATS_RX_ERRORS_OUT_CRC_ERRORS_LEN 4
23395 #define	MC_CMD_RMON_STATS_RX_ERRORS_OUT_TRUNC_ERRORS_OFST 4
23396 #define	MC_CMD_RMON_STATS_RX_ERRORS_OUT_TRUNC_ERRORS_LEN 4
23397 #define	MC_CMD_RMON_STATS_RX_ERRORS_OUT_RX_NO_DESC_DROPS_OFST 8
23398 #define	MC_CMD_RMON_STATS_RX_ERRORS_OUT_RX_NO_DESC_DROPS_LEN 4
23399 #define	MC_CMD_RMON_STATS_RX_ERRORS_OUT_RX_ABORT_OFST 12
23400 #define	MC_CMD_RMON_STATS_RX_ERRORS_OUT_RX_ABORT_LEN 4
23401 
23402 
23403 /***********************************/
23404 /* MC_CMD_GET_PCIE_RESOURCE_INFO
23405  * Find out about available PCIE resources
23406  */
23407 #define	MC_CMD_GET_PCIE_RESOURCE_INFO 0xfd
23408 #define	MC_CMD_GET_PCIE_RESOURCE_INFO_MSGSET 0xfd
23409 #undef	MC_CMD_0xfd_PRIVILEGE_CTG
23410 
23411 #define	MC_CMD_0xfd_PRIVILEGE_CTG SRIOV_CTG_GENERAL
23412 
23413 /* MC_CMD_GET_PCIE_RESOURCE_INFO_IN msgrequest */
23414 #define	MC_CMD_GET_PCIE_RESOURCE_INFO_IN_LEN 0
23415 
23416 /* MC_CMD_GET_PCIE_RESOURCE_INFO_OUT msgresponse */
23417 #define	MC_CMD_GET_PCIE_RESOURCE_INFO_OUT_LEN 28
23418 /* The maximum number of PFs the device can expose */
23419 #define	MC_CMD_GET_PCIE_RESOURCE_INFO_OUT_MAX_PFS_OFST 0
23420 #define	MC_CMD_GET_PCIE_RESOURCE_INFO_OUT_MAX_PFS_LEN 4
23421 /* The maximum number of VFs the device can expose in total */
23422 #define	MC_CMD_GET_PCIE_RESOURCE_INFO_OUT_MAX_VFS_OFST 4
23423 #define	MC_CMD_GET_PCIE_RESOURCE_INFO_OUT_MAX_VFS_LEN 4
23424 /* The maximum number of MSI-X vectors the device can provide in total */
23425 #define	MC_CMD_GET_PCIE_RESOURCE_INFO_OUT_MAX_VECTORS_OFST 8
23426 #define	MC_CMD_GET_PCIE_RESOURCE_INFO_OUT_MAX_VECTORS_LEN 4
23427 /* the number of MSI-X vectors the device will allocate by default to each PF
23428  */
23429 #define	MC_CMD_GET_PCIE_RESOURCE_INFO_OUT_DEFAULT_PF_VECTORS_OFST 12
23430 #define	MC_CMD_GET_PCIE_RESOURCE_INFO_OUT_DEFAULT_PF_VECTORS_LEN 4
23431 /* the number of MSI-X vectors the device will allocate by default to each VF
23432  */
23433 #define	MC_CMD_GET_PCIE_RESOURCE_INFO_OUT_DEFAULT_VF_VECTORS_OFST 16
23434 #define	MC_CMD_GET_PCIE_RESOURCE_INFO_OUT_DEFAULT_VF_VECTORS_LEN 4
23435 /* the maximum number of MSI-X vectors the device can allocate to any one PF */
23436 #define	MC_CMD_GET_PCIE_RESOURCE_INFO_OUT_MAX_PF_VECTORS_OFST 20
23437 #define	MC_CMD_GET_PCIE_RESOURCE_INFO_OUT_MAX_PF_VECTORS_LEN 4
23438 /* the maximum number of MSI-X vectors the device can allocate to any one VF */
23439 #define	MC_CMD_GET_PCIE_RESOURCE_INFO_OUT_MAX_VF_VECTORS_OFST 24
23440 #define	MC_CMD_GET_PCIE_RESOURCE_INFO_OUT_MAX_VF_VECTORS_LEN 4
23441 
23442 
23443 /***********************************/
23444 /* MC_CMD_GET_PORT_MODES
23445  * Find out about available port modes
23446  */
23447 #define	MC_CMD_GET_PORT_MODES 0xff
23448 #define	MC_CMD_GET_PORT_MODES_MSGSET 0xff
23449 #undef	MC_CMD_0xff_PRIVILEGE_CTG
23450 
23451 #define	MC_CMD_0xff_PRIVILEGE_CTG SRIOV_CTG_GENERAL
23452 
23453 /* MC_CMD_GET_PORT_MODES_IN msgrequest */
23454 #define	MC_CMD_GET_PORT_MODES_IN_LEN 0
23455 
23456 /* MC_CMD_GET_PORT_MODES_OUT msgresponse */
23457 #define	MC_CMD_GET_PORT_MODES_OUT_LEN 12
23458 /* Bitmask of port modes available on the board (indexed by TLV_PORT_MODE_*)
23459  * that are supported for customer use in production firmware.
23460  */
23461 #define	MC_CMD_GET_PORT_MODES_OUT_MODES_OFST 0
23462 #define	MC_CMD_GET_PORT_MODES_OUT_MODES_LEN 4
23463 /* Default (canonical) board mode */
23464 #define	MC_CMD_GET_PORT_MODES_OUT_DEFAULT_MODE_OFST 4
23465 #define	MC_CMD_GET_PORT_MODES_OUT_DEFAULT_MODE_LEN 4
23466 /* Current board mode */
23467 #define	MC_CMD_GET_PORT_MODES_OUT_CURRENT_MODE_OFST 8
23468 #define	MC_CMD_GET_PORT_MODES_OUT_CURRENT_MODE_LEN 4
23469 
23470 /* MC_CMD_GET_PORT_MODES_OUT_V2 msgresponse */
23471 #define	MC_CMD_GET_PORT_MODES_OUT_V2_LEN 16
23472 /* Bitmask of port modes available on the board (indexed by TLV_PORT_MODE_*)
23473  * that are supported for customer use in production firmware.
23474  */
23475 #define	MC_CMD_GET_PORT_MODES_OUT_V2_MODES_OFST 0
23476 #define	MC_CMD_GET_PORT_MODES_OUT_V2_MODES_LEN 4
23477 /* Default (canonical) board mode */
23478 #define	MC_CMD_GET_PORT_MODES_OUT_V2_DEFAULT_MODE_OFST 4
23479 #define	MC_CMD_GET_PORT_MODES_OUT_V2_DEFAULT_MODE_LEN 4
23480 /* Current board mode */
23481 #define	MC_CMD_GET_PORT_MODES_OUT_V2_CURRENT_MODE_OFST 8
23482 #define	MC_CMD_GET_PORT_MODES_OUT_V2_CURRENT_MODE_LEN 4
23483 /* Bitmask of engineering port modes available on the board (indexed by
23484  * TLV_PORT_MODE_*). A superset of MC_CMD_GET_PORT_MODES_OUT/MODES that
23485  * contains all modes implemented in firmware for a particular board. Modes
23486  * listed in MODES are considered production modes and should be exposed in
23487  * userland tools. Modes listed in ENGINEERING_MODES, but not in MODES should
23488  * be considered hidden (not to be exposed in userland tools) and for
23489  * engineering use only. There are no other semantic differences and any mode
23490  * listed in either MODES or ENGINEERING_MODES can be set on the board.
23491  */
23492 #define	MC_CMD_GET_PORT_MODES_OUT_V2_ENGINEERING_MODES_OFST 12
23493 #define	MC_CMD_GET_PORT_MODES_OUT_V2_ENGINEERING_MODES_LEN 4
23494 
23495 
23496 /***********************************/
23497 /* MC_CMD_OVERRIDE_PORT_MODE
23498  * Override flash config port mode for subsequent MC reboot(s). Override data
23499  * is stored in the presistent data section of DMEM and activated on next MC
23500  * warm reboot. A cold reboot resets the override. It is assumed that a
23501  * sufficient number of PFs are available and that port mapping is valid for
23502  * the new port mode, as the override does not affect PF configuration.
23503  */
23504 #define	MC_CMD_OVERRIDE_PORT_MODE 0x137
23505 #define	MC_CMD_OVERRIDE_PORT_MODE_MSGSET 0x137
23506 #undef	MC_CMD_0x137_PRIVILEGE_CTG
23507 
23508 #define	MC_CMD_0x137_PRIVILEGE_CTG SRIOV_CTG_ADMIN
23509 
23510 /* MC_CMD_OVERRIDE_PORT_MODE_IN msgrequest */
23511 #define	MC_CMD_OVERRIDE_PORT_MODE_IN_LEN 8
23512 #define	MC_CMD_OVERRIDE_PORT_MODE_IN_FLAGS_OFST 0
23513 #define	MC_CMD_OVERRIDE_PORT_MODE_IN_FLAGS_LEN 4
23514 #define	MC_CMD_OVERRIDE_PORT_MODE_IN_ENABLE_OFST 0
23515 #define	MC_CMD_OVERRIDE_PORT_MODE_IN_ENABLE_LBN 0
23516 #define	MC_CMD_OVERRIDE_PORT_MODE_IN_ENABLE_WIDTH 1
23517 /* New mode (TLV_PORT_MODE_*) to set, if override enabled */
23518 #define	MC_CMD_OVERRIDE_PORT_MODE_IN_MODE_OFST 4
23519 #define	MC_CMD_OVERRIDE_PORT_MODE_IN_MODE_LEN 4
23520 
23521 /* MC_CMD_OVERRIDE_PORT_MODE_OUT msgresponse */
23522 #define	MC_CMD_OVERRIDE_PORT_MODE_OUT_LEN 0
23523 
23524 
23525 /***********************************/
23526 /* MC_CMD_READ_ATB
23527  * Sample voltages on the ATB
23528  */
23529 #define	MC_CMD_READ_ATB 0x100
23530 #define	MC_CMD_READ_ATB_MSGSET 0x100
23531 #undef	MC_CMD_0x100_PRIVILEGE_CTG
23532 
23533 #define	MC_CMD_0x100_PRIVILEGE_CTG SRIOV_CTG_INSECURE
23534 
23535 /* MC_CMD_READ_ATB_IN msgrequest */
23536 #define	MC_CMD_READ_ATB_IN_LEN 16
23537 #define	MC_CMD_READ_ATB_IN_SIGNAL_BUS_OFST 0
23538 #define	MC_CMD_READ_ATB_IN_SIGNAL_BUS_LEN 4
23539 #define	MC_CMD_READ_ATB_IN_BUS_CCOM 0x0 /* enum */
23540 #define	MC_CMD_READ_ATB_IN_BUS_CKR 0x1 /* enum */
23541 #define	MC_CMD_READ_ATB_IN_BUS_CPCIE 0x8 /* enum */
23542 #define	MC_CMD_READ_ATB_IN_SIGNAL_EN_BITNO_OFST 4
23543 #define	MC_CMD_READ_ATB_IN_SIGNAL_EN_BITNO_LEN 4
23544 #define	MC_CMD_READ_ATB_IN_SIGNAL_SEL_OFST 8
23545 #define	MC_CMD_READ_ATB_IN_SIGNAL_SEL_LEN 4
23546 #define	MC_CMD_READ_ATB_IN_SETTLING_TIME_US_OFST 12
23547 #define	MC_CMD_READ_ATB_IN_SETTLING_TIME_US_LEN 4
23548 
23549 /* MC_CMD_READ_ATB_OUT msgresponse */
23550 #define	MC_CMD_READ_ATB_OUT_LEN 4
23551 #define	MC_CMD_READ_ATB_OUT_SAMPLE_MV_OFST 0
23552 #define	MC_CMD_READ_ATB_OUT_SAMPLE_MV_LEN 4
23553 
23554 
23555 /***********************************/
23556 /* MC_CMD_GET_WORKAROUNDS
23557  * Read the list of all implemented and all currently enabled workarounds. The
23558  * enums here must correspond with those in MC_CMD_WORKAROUND.
23559  */
23560 #define	MC_CMD_GET_WORKAROUNDS 0x59
23561 #define	MC_CMD_GET_WORKAROUNDS_MSGSET 0x59
23562 #undef	MC_CMD_0x59_PRIVILEGE_CTG
23563 
23564 #define	MC_CMD_0x59_PRIVILEGE_CTG SRIOV_CTG_GENERAL
23565 
23566 /* MC_CMD_GET_WORKAROUNDS_OUT msgresponse */
23567 #define	MC_CMD_GET_WORKAROUNDS_OUT_LEN 8
23568 /* Each workaround is represented by a single bit according to the enums below.
23569  */
23570 #define	MC_CMD_GET_WORKAROUNDS_OUT_IMPLEMENTED_OFST 0
23571 #define	MC_CMD_GET_WORKAROUNDS_OUT_IMPLEMENTED_LEN 4
23572 #define	MC_CMD_GET_WORKAROUNDS_OUT_ENABLED_OFST 4
23573 #define	MC_CMD_GET_WORKAROUNDS_OUT_ENABLED_LEN 4
23574 /* enum: Bug 17230 work around. */
23575 #define	MC_CMD_GET_WORKAROUNDS_OUT_BUG17230 0x2
23576 /* enum: Bug 35388 work around (unsafe EVQ writes). */
23577 #define	MC_CMD_GET_WORKAROUNDS_OUT_BUG35388 0x4
23578 /* enum: Bug35017 workaround (A64 tables must be identity map) */
23579 #define	MC_CMD_GET_WORKAROUNDS_OUT_BUG35017 0x8
23580 /* enum: Bug 41750 present (MC_CMD_TRIGGER_INTERRUPT won't work) */
23581 #define	MC_CMD_GET_WORKAROUNDS_OUT_BUG41750 0x10
23582 /* enum: Bug 42008 present (Interrupts can overtake associated events). Caution
23583  * - before adding code that queries this workaround, remember that there's
23584  * released Monza firmware that doesn't understand MC_CMD_WORKAROUND_BUG42008,
23585  * and will hence (incorrectly) report that the bug doesn't exist.
23586  */
23587 #define	MC_CMD_GET_WORKAROUNDS_OUT_BUG42008 0x20
23588 /* enum: Bug 26807 features present in firmware (multicast filter chaining) */
23589 #define	MC_CMD_GET_WORKAROUNDS_OUT_BUG26807 0x40
23590 /* enum: Bug 61265 work around (broken EVQ TMR writes). */
23591 #define	MC_CMD_GET_WORKAROUNDS_OUT_BUG61265 0x80
23592 
23593 
23594 /***********************************/
23595 /* MC_CMD_PRIVILEGE_MASK
23596  * Read/set privileges of an arbitrary PCIe function
23597  */
23598 #define	MC_CMD_PRIVILEGE_MASK 0x5a
23599 #define	MC_CMD_PRIVILEGE_MASK_MSGSET 0x5a
23600 #undef	MC_CMD_0x5a_PRIVILEGE_CTG
23601 
23602 #define	MC_CMD_0x5a_PRIVILEGE_CTG SRIOV_CTG_GENERAL
23603 
23604 /* MC_CMD_PRIVILEGE_MASK_IN msgrequest */
23605 #define	MC_CMD_PRIVILEGE_MASK_IN_LEN 8
23606 /* The target function to have its mask read or set e.g. PF 0 = 0xFFFF0000, VF
23607  * 1,3 = 0x00030001
23608  */
23609 #define	MC_CMD_PRIVILEGE_MASK_IN_FUNCTION_OFST 0
23610 #define	MC_CMD_PRIVILEGE_MASK_IN_FUNCTION_LEN 4
23611 #define	MC_CMD_PRIVILEGE_MASK_IN_FUNCTION_PF_OFST 0
23612 #define	MC_CMD_PRIVILEGE_MASK_IN_FUNCTION_PF_LBN 0
23613 #define	MC_CMD_PRIVILEGE_MASK_IN_FUNCTION_PF_WIDTH 16
23614 #define	MC_CMD_PRIVILEGE_MASK_IN_FUNCTION_VF_OFST 0
23615 #define	MC_CMD_PRIVILEGE_MASK_IN_FUNCTION_VF_LBN 16
23616 #define	MC_CMD_PRIVILEGE_MASK_IN_FUNCTION_VF_WIDTH 16
23617 #define	MC_CMD_PRIVILEGE_MASK_IN_VF_NULL 0xffff /* enum */
23618 /* New privilege mask to be set. The mask will only be changed if the MSB is
23619  * set to 1.
23620  */
23621 #define	MC_CMD_PRIVILEGE_MASK_IN_NEW_MASK_OFST 4
23622 #define	MC_CMD_PRIVILEGE_MASK_IN_NEW_MASK_LEN 4
23623 #define	MC_CMD_PRIVILEGE_MASK_IN_GRP_ADMIN 0x1 /* enum */
23624 #define	MC_CMD_PRIVILEGE_MASK_IN_GRP_LINK 0x2 /* enum */
23625 #define	MC_CMD_PRIVILEGE_MASK_IN_GRP_ONLOAD 0x4 /* enum */
23626 #define	MC_CMD_PRIVILEGE_MASK_IN_GRP_PTP 0x8 /* enum */
23627 #define	MC_CMD_PRIVILEGE_MASK_IN_GRP_INSECURE_FILTERS 0x10 /* enum */
23628 /* enum: Deprecated. Equivalent to MAC_SPOOFING_TX combined with CHANGE_MAC. */
23629 #define	MC_CMD_PRIVILEGE_MASK_IN_GRP_MAC_SPOOFING 0x20
23630 #define	MC_CMD_PRIVILEGE_MASK_IN_GRP_UNICAST 0x40 /* enum */
23631 #define	MC_CMD_PRIVILEGE_MASK_IN_GRP_MULTICAST 0x80 /* enum */
23632 #define	MC_CMD_PRIVILEGE_MASK_IN_GRP_BROADCAST 0x100 /* enum */
23633 #define	MC_CMD_PRIVILEGE_MASK_IN_GRP_ALL_MULTICAST 0x200 /* enum */
23634 #define	MC_CMD_PRIVILEGE_MASK_IN_GRP_PROMISCUOUS 0x400 /* enum */
23635 /* enum: Allows to set the TX packets' source MAC address to any arbitrary MAC
23636  * adress.
23637  */
23638 #define	MC_CMD_PRIVILEGE_MASK_IN_GRP_MAC_SPOOFING_TX 0x800
23639 /* enum: Privilege that allows a Function to change the MAC address configured
23640  * in its associated vAdapter/vPort.
23641  */
23642 #define	MC_CMD_PRIVILEGE_MASK_IN_GRP_CHANGE_MAC 0x1000
23643 /* enum: Privilege that allows a Function to install filters that specify VLANs
23644  * that are not in the permit list for the associated vPort. This privilege is
23645  * primarily to support ESX where vPorts are created that restrict traffic to
23646  * only a set of permitted VLANs. See the vPort flag FLAG_VLAN_RESTRICT.
23647  */
23648 #define	MC_CMD_PRIVILEGE_MASK_IN_GRP_UNRESTRICTED_VLAN 0x2000
23649 /* enum: Privilege for insecure commands. Commands that belong to this group
23650  * are not permitted on secure adapters regardless of the privilege mask.
23651  */
23652 #define	MC_CMD_PRIVILEGE_MASK_IN_GRP_INSECURE 0x4000
23653 /* enum: Trusted Server Adapter (TSA) / ServerLock. Privilege for
23654  * administrator-level operations that are not allowed from the local host once
23655  * an adapter has Bound to a remote ServerLock Controller (see doxbox
23656  * SF-117064-DG for background).
23657  */
23658 #define	MC_CMD_PRIVILEGE_MASK_IN_GRP_ADMIN_TSA_UNBOUND 0x8000
23659 /* enum: Control the Match-Action Engine if present. See mcdi_mae.yml. */
23660 #define	MC_CMD_PRIVILEGE_MASK_IN_GRP_MAE 0x10000
23661 /* enum: This Function/client may call MC_CMD_CLIENT_ALLOC to create new
23662  * dynamic client children of itself.
23663  */
23664 #define	MC_CMD_PRIVILEGE_MASK_IN_GRP_ALLOC_CLIENT 0x20000
23665 /* enum: A dynamic client with this privilege may perform all the same DMA
23666  * operations as the function client from which it is descended.
23667  */
23668 #define	MC_CMD_PRIVILEGE_MASK_IN_GRP_FUNC_DMA 0x40000
23669 /* enum: A client with this privilege may perform DMA as any PCIe function on
23670  * the device and to on-device DDR. It allows clients to use TX-DESC2CMPT-DESC
23671  * descriptors, and to use TX-SEG-DESC and TX-MEM2MEM-DESC with an address
23672  * space override (i.e. with the ADDR_SPC_EN bit set).
23673  */
23674 #define	MC_CMD_PRIVILEGE_MASK_IN_GRP_ARBITRARY_DMA 0x80000
23675 /* enum: Set this bit to indicate that a new privilege mask is to be set,
23676  * otherwise the command will only read the existing mask.
23677  */
23678 #define	MC_CMD_PRIVILEGE_MASK_IN_DO_CHANGE 0x80000000
23679 
23680 /* MC_CMD_PRIVILEGE_MASK_OUT msgresponse */
23681 #define	MC_CMD_PRIVILEGE_MASK_OUT_LEN 4
23682 /* For an admin function, always all the privileges are reported. */
23683 #define	MC_CMD_PRIVILEGE_MASK_OUT_OLD_MASK_OFST 0
23684 #define	MC_CMD_PRIVILEGE_MASK_OUT_OLD_MASK_LEN 4
23685 
23686 
23687 /***********************************/
23688 /* MC_CMD_LINK_STATE_MODE
23689  * Read/set link state mode of a VF
23690  */
23691 #define	MC_CMD_LINK_STATE_MODE 0x5c
23692 #define	MC_CMD_LINK_STATE_MODE_MSGSET 0x5c
23693 #undef	MC_CMD_0x5c_PRIVILEGE_CTG
23694 
23695 #define	MC_CMD_0x5c_PRIVILEGE_CTG SRIOV_CTG_GENERAL
23696 
23697 /* MC_CMD_LINK_STATE_MODE_IN msgrequest */
23698 #define	MC_CMD_LINK_STATE_MODE_IN_LEN 8
23699 /* The target function to have its link state mode read or set, must be a VF
23700  * e.g. VF 1,3 = 0x00030001
23701  */
23702 #define	MC_CMD_LINK_STATE_MODE_IN_FUNCTION_OFST 0
23703 #define	MC_CMD_LINK_STATE_MODE_IN_FUNCTION_LEN 4
23704 #define	MC_CMD_LINK_STATE_MODE_IN_FUNCTION_PF_OFST 0
23705 #define	MC_CMD_LINK_STATE_MODE_IN_FUNCTION_PF_LBN 0
23706 #define	MC_CMD_LINK_STATE_MODE_IN_FUNCTION_PF_WIDTH 16
23707 #define	MC_CMD_LINK_STATE_MODE_IN_FUNCTION_VF_OFST 0
23708 #define	MC_CMD_LINK_STATE_MODE_IN_FUNCTION_VF_LBN 16
23709 #define	MC_CMD_LINK_STATE_MODE_IN_FUNCTION_VF_WIDTH 16
23710 /* New link state mode to be set */
23711 #define	MC_CMD_LINK_STATE_MODE_IN_NEW_MODE_OFST 4
23712 #define	MC_CMD_LINK_STATE_MODE_IN_NEW_MODE_LEN 4
23713 #define	MC_CMD_LINK_STATE_MODE_IN_LINK_STATE_AUTO 0x0 /* enum */
23714 #define	MC_CMD_LINK_STATE_MODE_IN_LINK_STATE_UP 0x1 /* enum */
23715 #define	MC_CMD_LINK_STATE_MODE_IN_LINK_STATE_DOWN 0x2 /* enum */
23716 /* enum: Use this value to just read the existing setting without modifying it.
23717  */
23718 #define	MC_CMD_LINK_STATE_MODE_IN_DO_NOT_CHANGE 0xffffffff
23719 
23720 /* MC_CMD_LINK_STATE_MODE_OUT msgresponse */
23721 #define	MC_CMD_LINK_STATE_MODE_OUT_LEN 4
23722 #define	MC_CMD_LINK_STATE_MODE_OUT_OLD_MODE_OFST 0
23723 #define	MC_CMD_LINK_STATE_MODE_OUT_OLD_MODE_LEN 4
23724 
23725 
23726 /***********************************/
23727 /* MC_CMD_GET_SNAPSHOT_LENGTH
23728  * Obtain the current range of allowable values for the SNAPSHOT_LENGTH
23729  * parameter to MC_CMD_INIT_RXQ.
23730  */
23731 #define	MC_CMD_GET_SNAPSHOT_LENGTH 0x101
23732 #define	MC_CMD_GET_SNAPSHOT_LENGTH_MSGSET 0x101
23733 #undef	MC_CMD_0x101_PRIVILEGE_CTG
23734 
23735 #define	MC_CMD_0x101_PRIVILEGE_CTG SRIOV_CTG_GENERAL
23736 
23737 /* MC_CMD_GET_SNAPSHOT_LENGTH_IN msgrequest */
23738 #define	MC_CMD_GET_SNAPSHOT_LENGTH_IN_LEN 0
23739 
23740 /* MC_CMD_GET_SNAPSHOT_LENGTH_OUT msgresponse */
23741 #define	MC_CMD_GET_SNAPSHOT_LENGTH_OUT_LEN 8
23742 /* Minimum acceptable snapshot length. */
23743 #define	MC_CMD_GET_SNAPSHOT_LENGTH_OUT_RX_SNAPLEN_MIN_OFST 0
23744 #define	MC_CMD_GET_SNAPSHOT_LENGTH_OUT_RX_SNAPLEN_MIN_LEN 4
23745 /* Maximum acceptable snapshot length. */
23746 #define	MC_CMD_GET_SNAPSHOT_LENGTH_OUT_RX_SNAPLEN_MAX_OFST 4
23747 #define	MC_CMD_GET_SNAPSHOT_LENGTH_OUT_RX_SNAPLEN_MAX_LEN 4
23748 
23749 
23750 /***********************************/
23751 /* MC_CMD_FUSE_DIAGS
23752  * Additional fuse diagnostics
23753  */
23754 #define	MC_CMD_FUSE_DIAGS 0x102
23755 #define	MC_CMD_FUSE_DIAGS_MSGSET 0x102
23756 #undef	MC_CMD_0x102_PRIVILEGE_CTG
23757 
23758 #define	MC_CMD_0x102_PRIVILEGE_CTG SRIOV_CTG_INSECURE
23759 
23760 /* MC_CMD_FUSE_DIAGS_IN msgrequest */
23761 #define	MC_CMD_FUSE_DIAGS_IN_LEN 0
23762 
23763 /* MC_CMD_FUSE_DIAGS_OUT msgresponse */
23764 #define	MC_CMD_FUSE_DIAGS_OUT_LEN 48
23765 /* Total number of mismatched bits between pairs in area 0 */
23766 #define	MC_CMD_FUSE_DIAGS_OUT_AREA0_MISMATCH_BITS_OFST 0
23767 #define	MC_CMD_FUSE_DIAGS_OUT_AREA0_MISMATCH_BITS_LEN 4
23768 /* Total number of unexpectedly clear (set in B but not A) bits in area 0 */
23769 #define	MC_CMD_FUSE_DIAGS_OUT_AREA0_PAIR_A_BAD_BITS_OFST 4
23770 #define	MC_CMD_FUSE_DIAGS_OUT_AREA0_PAIR_A_BAD_BITS_LEN 4
23771 /* Total number of unexpectedly clear (set in A but not B) bits in area 0 */
23772 #define	MC_CMD_FUSE_DIAGS_OUT_AREA0_PAIR_B_BAD_BITS_OFST 8
23773 #define	MC_CMD_FUSE_DIAGS_OUT_AREA0_PAIR_B_BAD_BITS_LEN 4
23774 /* Checksum of data after logical OR of pairs in area 0 */
23775 #define	MC_CMD_FUSE_DIAGS_OUT_AREA0_CHECKSUM_OFST 12
23776 #define	MC_CMD_FUSE_DIAGS_OUT_AREA0_CHECKSUM_LEN 4
23777 /* Total number of mismatched bits between pairs in area 1 */
23778 #define	MC_CMD_FUSE_DIAGS_OUT_AREA1_MISMATCH_BITS_OFST 16
23779 #define	MC_CMD_FUSE_DIAGS_OUT_AREA1_MISMATCH_BITS_LEN 4
23780 /* Total number of unexpectedly clear (set in B but not A) bits in area 1 */
23781 #define	MC_CMD_FUSE_DIAGS_OUT_AREA1_PAIR_A_BAD_BITS_OFST 20
23782 #define	MC_CMD_FUSE_DIAGS_OUT_AREA1_PAIR_A_BAD_BITS_LEN 4
23783 /* Total number of unexpectedly clear (set in A but not B) bits in area 1 */
23784 #define	MC_CMD_FUSE_DIAGS_OUT_AREA1_PAIR_B_BAD_BITS_OFST 24
23785 #define	MC_CMD_FUSE_DIAGS_OUT_AREA1_PAIR_B_BAD_BITS_LEN 4
23786 /* Checksum of data after logical OR of pairs in area 1 */
23787 #define	MC_CMD_FUSE_DIAGS_OUT_AREA1_CHECKSUM_OFST 28
23788 #define	MC_CMD_FUSE_DIAGS_OUT_AREA1_CHECKSUM_LEN 4
23789 /* Total number of mismatched bits between pairs in area 2 */
23790 #define	MC_CMD_FUSE_DIAGS_OUT_AREA2_MISMATCH_BITS_OFST 32
23791 #define	MC_CMD_FUSE_DIAGS_OUT_AREA2_MISMATCH_BITS_LEN 4
23792 /* Total number of unexpectedly clear (set in B but not A) bits in area 2 */
23793 #define	MC_CMD_FUSE_DIAGS_OUT_AREA2_PAIR_A_BAD_BITS_OFST 36
23794 #define	MC_CMD_FUSE_DIAGS_OUT_AREA2_PAIR_A_BAD_BITS_LEN 4
23795 /* Total number of unexpectedly clear (set in A but not B) bits in area 2 */
23796 #define	MC_CMD_FUSE_DIAGS_OUT_AREA2_PAIR_B_BAD_BITS_OFST 40
23797 #define	MC_CMD_FUSE_DIAGS_OUT_AREA2_PAIR_B_BAD_BITS_LEN 4
23798 /* Checksum of data after logical OR of pairs in area 2 */
23799 #define	MC_CMD_FUSE_DIAGS_OUT_AREA2_CHECKSUM_OFST 44
23800 #define	MC_CMD_FUSE_DIAGS_OUT_AREA2_CHECKSUM_LEN 4
23801 
23802 
23803 /***********************************/
23804 /* MC_CMD_PRIVILEGE_MODIFY
23805  * Modify the privileges of a set of PCIe functions. Note that this operation
23806  * only effects non-admin functions unless the admin privilege itself is
23807  * included in one of the masks provided.
23808  */
23809 #define	MC_CMD_PRIVILEGE_MODIFY 0x60
23810 #define	MC_CMD_PRIVILEGE_MODIFY_MSGSET 0x60
23811 #undef	MC_CMD_0x60_PRIVILEGE_CTG
23812 
23813 #define	MC_CMD_0x60_PRIVILEGE_CTG SRIOV_CTG_ADMIN
23814 
23815 /* MC_CMD_PRIVILEGE_MODIFY_IN msgrequest */
23816 #define	MC_CMD_PRIVILEGE_MODIFY_IN_LEN 16
23817 /* The groups of functions to have their privilege masks modified. */
23818 #define	MC_CMD_PRIVILEGE_MODIFY_IN_FN_GROUP_OFST 0
23819 #define	MC_CMD_PRIVILEGE_MODIFY_IN_FN_GROUP_LEN 4
23820 #define	MC_CMD_PRIVILEGE_MODIFY_IN_NONE 0x0 /* enum */
23821 #define	MC_CMD_PRIVILEGE_MODIFY_IN_ALL 0x1 /* enum */
23822 #define	MC_CMD_PRIVILEGE_MODIFY_IN_PFS_ONLY 0x2 /* enum */
23823 #define	MC_CMD_PRIVILEGE_MODIFY_IN_VFS_ONLY 0x3 /* enum */
23824 #define	MC_CMD_PRIVILEGE_MODIFY_IN_VFS_OF_PF 0x4 /* enum */
23825 #define	MC_CMD_PRIVILEGE_MODIFY_IN_ONE 0x5 /* enum */
23826 /* For VFS_OF_PF specify the PF, for ONE specify the target function */
23827 #define	MC_CMD_PRIVILEGE_MODIFY_IN_FUNCTION_OFST 4
23828 #define	MC_CMD_PRIVILEGE_MODIFY_IN_FUNCTION_LEN 4
23829 #define	MC_CMD_PRIVILEGE_MODIFY_IN_FUNCTION_PF_OFST 4
23830 #define	MC_CMD_PRIVILEGE_MODIFY_IN_FUNCTION_PF_LBN 0
23831 #define	MC_CMD_PRIVILEGE_MODIFY_IN_FUNCTION_PF_WIDTH 16
23832 #define	MC_CMD_PRIVILEGE_MODIFY_IN_FUNCTION_VF_OFST 4
23833 #define	MC_CMD_PRIVILEGE_MODIFY_IN_FUNCTION_VF_LBN 16
23834 #define	MC_CMD_PRIVILEGE_MODIFY_IN_FUNCTION_VF_WIDTH 16
23835 /* Privileges to be added to the target functions. For privilege definitions
23836  * refer to the command MC_CMD_PRIVILEGE_MASK
23837  */
23838 #define	MC_CMD_PRIVILEGE_MODIFY_IN_ADD_MASK_OFST 8
23839 #define	MC_CMD_PRIVILEGE_MODIFY_IN_ADD_MASK_LEN 4
23840 /* Privileges to be removed from the target functions. For privilege
23841  * definitions refer to the command MC_CMD_PRIVILEGE_MASK
23842  */
23843 #define	MC_CMD_PRIVILEGE_MODIFY_IN_REMOVE_MASK_OFST 12
23844 #define	MC_CMD_PRIVILEGE_MODIFY_IN_REMOVE_MASK_LEN 4
23845 
23846 /* MC_CMD_PRIVILEGE_MODIFY_OUT msgresponse */
23847 #define	MC_CMD_PRIVILEGE_MODIFY_OUT_LEN 0
23848 
23849 
23850 /***********************************/
23851 /* MC_CMD_XPM_READ_BYTES
23852  * Read XPM memory
23853  */
23854 #define	MC_CMD_XPM_READ_BYTES 0x103
23855 #define	MC_CMD_XPM_READ_BYTES_MSGSET 0x103
23856 #undef	MC_CMD_0x103_PRIVILEGE_CTG
23857 
23858 #define	MC_CMD_0x103_PRIVILEGE_CTG SRIOV_CTG_ADMIN
23859 
23860 /* MC_CMD_XPM_READ_BYTES_IN msgrequest */
23861 #define	MC_CMD_XPM_READ_BYTES_IN_LEN 8
23862 /* Start address (byte) */
23863 #define	MC_CMD_XPM_READ_BYTES_IN_ADDR_OFST 0
23864 #define	MC_CMD_XPM_READ_BYTES_IN_ADDR_LEN 4
23865 /* Count (bytes) */
23866 #define	MC_CMD_XPM_READ_BYTES_IN_COUNT_OFST 4
23867 #define	MC_CMD_XPM_READ_BYTES_IN_COUNT_LEN 4
23868 
23869 /* MC_CMD_XPM_READ_BYTES_OUT msgresponse */
23870 #define	MC_CMD_XPM_READ_BYTES_OUT_LENMIN 0
23871 #define	MC_CMD_XPM_READ_BYTES_OUT_LENMAX 252
23872 #define	MC_CMD_XPM_READ_BYTES_OUT_LENMAX_MCDI2 1020
23873 #define	MC_CMD_XPM_READ_BYTES_OUT_LEN(num) (0+1*(num))
23874 #define	MC_CMD_XPM_READ_BYTES_OUT_DATA_NUM(len) (((len)-0)/1)
23875 /* Data */
23876 #define	MC_CMD_XPM_READ_BYTES_OUT_DATA_OFST 0
23877 #define	MC_CMD_XPM_READ_BYTES_OUT_DATA_LEN 1
23878 #define	MC_CMD_XPM_READ_BYTES_OUT_DATA_MINNUM 0
23879 #define	MC_CMD_XPM_READ_BYTES_OUT_DATA_MAXNUM 252
23880 #define	MC_CMD_XPM_READ_BYTES_OUT_DATA_MAXNUM_MCDI2 1020
23881 
23882 
23883 /***********************************/
23884 /* MC_CMD_XPM_WRITE_BYTES
23885  * Write XPM memory
23886  */
23887 #define	MC_CMD_XPM_WRITE_BYTES 0x104
23888 #define	MC_CMD_XPM_WRITE_BYTES_MSGSET 0x104
23889 #undef	MC_CMD_0x104_PRIVILEGE_CTG
23890 
23891 #define	MC_CMD_0x104_PRIVILEGE_CTG SRIOV_CTG_INSECURE
23892 
23893 /* MC_CMD_XPM_WRITE_BYTES_IN msgrequest */
23894 #define	MC_CMD_XPM_WRITE_BYTES_IN_LENMIN 8
23895 #define	MC_CMD_XPM_WRITE_BYTES_IN_LENMAX 252
23896 #define	MC_CMD_XPM_WRITE_BYTES_IN_LENMAX_MCDI2 1020
23897 #define	MC_CMD_XPM_WRITE_BYTES_IN_LEN(num) (8+1*(num))
23898 #define	MC_CMD_XPM_WRITE_BYTES_IN_DATA_NUM(len) (((len)-8)/1)
23899 /* Start address (byte) */
23900 #define	MC_CMD_XPM_WRITE_BYTES_IN_ADDR_OFST 0
23901 #define	MC_CMD_XPM_WRITE_BYTES_IN_ADDR_LEN 4
23902 /* Count (bytes) */
23903 #define	MC_CMD_XPM_WRITE_BYTES_IN_COUNT_OFST 4
23904 #define	MC_CMD_XPM_WRITE_BYTES_IN_COUNT_LEN 4
23905 /* Data */
23906 #define	MC_CMD_XPM_WRITE_BYTES_IN_DATA_OFST 8
23907 #define	MC_CMD_XPM_WRITE_BYTES_IN_DATA_LEN 1
23908 #define	MC_CMD_XPM_WRITE_BYTES_IN_DATA_MINNUM 0
23909 #define	MC_CMD_XPM_WRITE_BYTES_IN_DATA_MAXNUM 244
23910 #define	MC_CMD_XPM_WRITE_BYTES_IN_DATA_MAXNUM_MCDI2 1012
23911 
23912 /* MC_CMD_XPM_WRITE_BYTES_OUT msgresponse */
23913 #define	MC_CMD_XPM_WRITE_BYTES_OUT_LEN 0
23914 
23915 
23916 /***********************************/
23917 /* MC_CMD_XPM_READ_SECTOR
23918  * Read XPM sector
23919  */
23920 #define	MC_CMD_XPM_READ_SECTOR 0x105
23921 #define	MC_CMD_XPM_READ_SECTOR_MSGSET 0x105
23922 #undef	MC_CMD_0x105_PRIVILEGE_CTG
23923 
23924 #define	MC_CMD_0x105_PRIVILEGE_CTG SRIOV_CTG_INSECURE
23925 
23926 /* MC_CMD_XPM_READ_SECTOR_IN msgrequest */
23927 #define	MC_CMD_XPM_READ_SECTOR_IN_LEN 8
23928 /* Sector index */
23929 #define	MC_CMD_XPM_READ_SECTOR_IN_INDEX_OFST 0
23930 #define	MC_CMD_XPM_READ_SECTOR_IN_INDEX_LEN 4
23931 /* Sector size */
23932 #define	MC_CMD_XPM_READ_SECTOR_IN_SIZE_OFST 4
23933 #define	MC_CMD_XPM_READ_SECTOR_IN_SIZE_LEN 4
23934 
23935 /* MC_CMD_XPM_READ_SECTOR_OUT msgresponse */
23936 #define	MC_CMD_XPM_READ_SECTOR_OUT_LENMIN 4
23937 #define	MC_CMD_XPM_READ_SECTOR_OUT_LENMAX 36
23938 #define	MC_CMD_XPM_READ_SECTOR_OUT_LENMAX_MCDI2 36
23939 #define	MC_CMD_XPM_READ_SECTOR_OUT_LEN(num) (4+1*(num))
23940 #define	MC_CMD_XPM_READ_SECTOR_OUT_DATA_NUM(len) (((len)-4)/1)
23941 /* Sector type */
23942 #define	MC_CMD_XPM_READ_SECTOR_OUT_TYPE_OFST 0
23943 #define	MC_CMD_XPM_READ_SECTOR_OUT_TYPE_LEN 4
23944 #define	MC_CMD_XPM_READ_SECTOR_OUT_BLANK 0x0 /* enum */
23945 #define	MC_CMD_XPM_READ_SECTOR_OUT_CRYPTO_KEY_128 0x1 /* enum */
23946 #define	MC_CMD_XPM_READ_SECTOR_OUT_CRYPTO_KEY_256 0x2 /* enum */
23947 #define	MC_CMD_XPM_READ_SECTOR_OUT_CRYPTO_DATA 0x3 /* enum */
23948 #define	MC_CMD_XPM_READ_SECTOR_OUT_INVALID 0xff /* enum */
23949 /* Sector data */
23950 #define	MC_CMD_XPM_READ_SECTOR_OUT_DATA_OFST 4
23951 #define	MC_CMD_XPM_READ_SECTOR_OUT_DATA_LEN 1
23952 #define	MC_CMD_XPM_READ_SECTOR_OUT_DATA_MINNUM 0
23953 #define	MC_CMD_XPM_READ_SECTOR_OUT_DATA_MAXNUM 32
23954 #define	MC_CMD_XPM_READ_SECTOR_OUT_DATA_MAXNUM_MCDI2 32
23955 
23956 
23957 /***********************************/
23958 /* MC_CMD_XPM_WRITE_SECTOR
23959  * Write XPM sector
23960  */
23961 #define	MC_CMD_XPM_WRITE_SECTOR 0x106
23962 #define	MC_CMD_XPM_WRITE_SECTOR_MSGSET 0x106
23963 #undef	MC_CMD_0x106_PRIVILEGE_CTG
23964 
23965 #define	MC_CMD_0x106_PRIVILEGE_CTG SRIOV_CTG_INSECURE
23966 
23967 /* MC_CMD_XPM_WRITE_SECTOR_IN msgrequest */
23968 #define	MC_CMD_XPM_WRITE_SECTOR_IN_LENMIN 12
23969 #define	MC_CMD_XPM_WRITE_SECTOR_IN_LENMAX 44
23970 #define	MC_CMD_XPM_WRITE_SECTOR_IN_LENMAX_MCDI2 44
23971 #define	MC_CMD_XPM_WRITE_SECTOR_IN_LEN(num) (12+1*(num))
23972 #define	MC_CMD_XPM_WRITE_SECTOR_IN_DATA_NUM(len) (((len)-12)/1)
23973 /* If writing fails due to an uncorrectable error, try up to RETRIES following
23974  * sectors (or until no more space available). If 0, only one write attempt is
23975  * made. Note that uncorrectable errors are unlikely, thanks to XPM self-repair
23976  * mechanism.
23977  */
23978 #define	MC_CMD_XPM_WRITE_SECTOR_IN_RETRIES_OFST 0
23979 #define	MC_CMD_XPM_WRITE_SECTOR_IN_RETRIES_LEN 1
23980 #define	MC_CMD_XPM_WRITE_SECTOR_IN_RESERVED_OFST 1
23981 #define	MC_CMD_XPM_WRITE_SECTOR_IN_RESERVED_LEN 3
23982 /* Sector type */
23983 #define	MC_CMD_XPM_WRITE_SECTOR_IN_TYPE_OFST 4
23984 #define	MC_CMD_XPM_WRITE_SECTOR_IN_TYPE_LEN 4
23985 /*            Enum values, see field(s): */
23986 /*               MC_CMD_XPM_READ_SECTOR/MC_CMD_XPM_READ_SECTOR_OUT/TYPE */
23987 /* Sector size */
23988 #define	MC_CMD_XPM_WRITE_SECTOR_IN_SIZE_OFST 8
23989 #define	MC_CMD_XPM_WRITE_SECTOR_IN_SIZE_LEN 4
23990 /* Sector data */
23991 #define	MC_CMD_XPM_WRITE_SECTOR_IN_DATA_OFST 12
23992 #define	MC_CMD_XPM_WRITE_SECTOR_IN_DATA_LEN 1
23993 #define	MC_CMD_XPM_WRITE_SECTOR_IN_DATA_MINNUM 0
23994 #define	MC_CMD_XPM_WRITE_SECTOR_IN_DATA_MAXNUM 32
23995 #define	MC_CMD_XPM_WRITE_SECTOR_IN_DATA_MAXNUM_MCDI2 32
23996 
23997 /* MC_CMD_XPM_WRITE_SECTOR_OUT msgresponse */
23998 #define	MC_CMD_XPM_WRITE_SECTOR_OUT_LEN 4
23999 /* New sector index */
24000 #define	MC_CMD_XPM_WRITE_SECTOR_OUT_INDEX_OFST 0
24001 #define	MC_CMD_XPM_WRITE_SECTOR_OUT_INDEX_LEN 4
24002 
24003 
24004 /***********************************/
24005 /* MC_CMD_XPM_INVALIDATE_SECTOR
24006  * Invalidate XPM sector
24007  */
24008 #define	MC_CMD_XPM_INVALIDATE_SECTOR 0x107
24009 #define	MC_CMD_XPM_INVALIDATE_SECTOR_MSGSET 0x107
24010 #undef	MC_CMD_0x107_PRIVILEGE_CTG
24011 
24012 #define	MC_CMD_0x107_PRIVILEGE_CTG SRIOV_CTG_INSECURE
24013 
24014 /* MC_CMD_XPM_INVALIDATE_SECTOR_IN msgrequest */
24015 #define	MC_CMD_XPM_INVALIDATE_SECTOR_IN_LEN 4
24016 /* Sector index */
24017 #define	MC_CMD_XPM_INVALIDATE_SECTOR_IN_INDEX_OFST 0
24018 #define	MC_CMD_XPM_INVALIDATE_SECTOR_IN_INDEX_LEN 4
24019 
24020 /* MC_CMD_XPM_INVALIDATE_SECTOR_OUT msgresponse */
24021 #define	MC_CMD_XPM_INVALIDATE_SECTOR_OUT_LEN 0
24022 
24023 
24024 /***********************************/
24025 /* MC_CMD_XPM_BLANK_CHECK
24026  * Blank-check XPM memory and report bad locations
24027  */
24028 #define	MC_CMD_XPM_BLANK_CHECK 0x108
24029 #define	MC_CMD_XPM_BLANK_CHECK_MSGSET 0x108
24030 #undef	MC_CMD_0x108_PRIVILEGE_CTG
24031 
24032 #define	MC_CMD_0x108_PRIVILEGE_CTG SRIOV_CTG_INSECURE
24033 
24034 /* MC_CMD_XPM_BLANK_CHECK_IN msgrequest */
24035 #define	MC_CMD_XPM_BLANK_CHECK_IN_LEN 8
24036 /* Start address (byte) */
24037 #define	MC_CMD_XPM_BLANK_CHECK_IN_ADDR_OFST 0
24038 #define	MC_CMD_XPM_BLANK_CHECK_IN_ADDR_LEN 4
24039 /* Count (bytes) */
24040 #define	MC_CMD_XPM_BLANK_CHECK_IN_COUNT_OFST 4
24041 #define	MC_CMD_XPM_BLANK_CHECK_IN_COUNT_LEN 4
24042 
24043 /* MC_CMD_XPM_BLANK_CHECK_OUT msgresponse */
24044 #define	MC_CMD_XPM_BLANK_CHECK_OUT_LENMIN 4
24045 #define	MC_CMD_XPM_BLANK_CHECK_OUT_LENMAX 252
24046 #define	MC_CMD_XPM_BLANK_CHECK_OUT_LENMAX_MCDI2 1020
24047 #define	MC_CMD_XPM_BLANK_CHECK_OUT_LEN(num) (4+2*(num))
24048 #define	MC_CMD_XPM_BLANK_CHECK_OUT_BAD_ADDR_NUM(len) (((len)-4)/2)
24049 /* Total number of bad (non-blank) locations */
24050 #define	MC_CMD_XPM_BLANK_CHECK_OUT_BAD_COUNT_OFST 0
24051 #define	MC_CMD_XPM_BLANK_CHECK_OUT_BAD_COUNT_LEN 4
24052 /* Addresses of bad locations (may be less than BAD_COUNT, if all cannot fit
24053  * into MCDI response)
24054  */
24055 #define	MC_CMD_XPM_BLANK_CHECK_OUT_BAD_ADDR_OFST 4
24056 #define	MC_CMD_XPM_BLANK_CHECK_OUT_BAD_ADDR_LEN 2
24057 #define	MC_CMD_XPM_BLANK_CHECK_OUT_BAD_ADDR_MINNUM 0
24058 #define	MC_CMD_XPM_BLANK_CHECK_OUT_BAD_ADDR_MAXNUM 124
24059 #define	MC_CMD_XPM_BLANK_CHECK_OUT_BAD_ADDR_MAXNUM_MCDI2 508
24060 
24061 
24062 /***********************************/
24063 /* MC_CMD_XPM_REPAIR
24064  * Blank-check and repair XPM memory
24065  */
24066 #define	MC_CMD_XPM_REPAIR 0x109
24067 #define	MC_CMD_XPM_REPAIR_MSGSET 0x109
24068 #undef	MC_CMD_0x109_PRIVILEGE_CTG
24069 
24070 #define	MC_CMD_0x109_PRIVILEGE_CTG SRIOV_CTG_INSECURE
24071 
24072 /* MC_CMD_XPM_REPAIR_IN msgrequest */
24073 #define	MC_CMD_XPM_REPAIR_IN_LEN 8
24074 /* Start address (byte) */
24075 #define	MC_CMD_XPM_REPAIR_IN_ADDR_OFST 0
24076 #define	MC_CMD_XPM_REPAIR_IN_ADDR_LEN 4
24077 /* Count (bytes) */
24078 #define	MC_CMD_XPM_REPAIR_IN_COUNT_OFST 4
24079 #define	MC_CMD_XPM_REPAIR_IN_COUNT_LEN 4
24080 
24081 /* MC_CMD_XPM_REPAIR_OUT msgresponse */
24082 #define	MC_CMD_XPM_REPAIR_OUT_LEN 0
24083 
24084 
24085 /***********************************/
24086 /* MC_CMD_XPM_DECODER_TEST
24087  * Test XPM memory address decoders for gross manufacturing defects. Can only
24088  * be performed on an unprogrammed part.
24089  */
24090 #define	MC_CMD_XPM_DECODER_TEST 0x10a
24091 #define	MC_CMD_XPM_DECODER_TEST_MSGSET 0x10a
24092 #undef	MC_CMD_0x10a_PRIVILEGE_CTG
24093 
24094 #define	MC_CMD_0x10a_PRIVILEGE_CTG SRIOV_CTG_INSECURE
24095 
24096 /* MC_CMD_XPM_DECODER_TEST_IN msgrequest */
24097 #define	MC_CMD_XPM_DECODER_TEST_IN_LEN 0
24098 
24099 /* MC_CMD_XPM_DECODER_TEST_OUT msgresponse */
24100 #define	MC_CMD_XPM_DECODER_TEST_OUT_LEN 0
24101 
24102 
24103 /***********************************/
24104 /* MC_CMD_XPM_WRITE_TEST
24105  * XPM memory write test. Test XPM write logic for gross manufacturing defects
24106  * by writing to a dedicated test row. There are 16 locations in the test row
24107  * and the test can only be performed on locations that have not been
24108  * previously used (i.e. can be run at most 16 times). The test will pick the
24109  * first available location to use, or fail with ENOSPC if none left.
24110  */
24111 #define	MC_CMD_XPM_WRITE_TEST 0x10b
24112 #define	MC_CMD_XPM_WRITE_TEST_MSGSET 0x10b
24113 #undef	MC_CMD_0x10b_PRIVILEGE_CTG
24114 
24115 #define	MC_CMD_0x10b_PRIVILEGE_CTG SRIOV_CTG_INSECURE
24116 
24117 /* MC_CMD_XPM_WRITE_TEST_IN msgrequest */
24118 #define	MC_CMD_XPM_WRITE_TEST_IN_LEN 0
24119 
24120 /* MC_CMD_XPM_WRITE_TEST_OUT msgresponse */
24121 #define	MC_CMD_XPM_WRITE_TEST_OUT_LEN 0
24122 
24123 
24124 /***********************************/
24125 /* MC_CMD_EXEC_SIGNED
24126  * Check the CMAC of the contents of IMEM and DMEM against the value supplied
24127  * and if correct begin execution from the start of IMEM. The caller supplies a
24128  * key ID, the length of IMEM and DMEM to validate and the expected CMAC. CMAC
24129  * computation runs from the start of IMEM, and from the start of DMEM + 16k,
24130  * to match flash booting. The command will respond with EINVAL if the CMAC
24131  * does match, otherwise it will respond with success before it jumps to IMEM.
24132  */
24133 #define	MC_CMD_EXEC_SIGNED 0x10c
24134 #define	MC_CMD_EXEC_SIGNED_MSGSET 0x10c
24135 #undef	MC_CMD_0x10c_PRIVILEGE_CTG
24136 
24137 #define	MC_CMD_0x10c_PRIVILEGE_CTG SRIOV_CTG_ADMIN_TSA_UNBOUND
24138 
24139 /* MC_CMD_EXEC_SIGNED_IN msgrequest */
24140 #define	MC_CMD_EXEC_SIGNED_IN_LEN 28
24141 /* the length of code to include in the CMAC */
24142 #define	MC_CMD_EXEC_SIGNED_IN_CODELEN_OFST 0
24143 #define	MC_CMD_EXEC_SIGNED_IN_CODELEN_LEN 4
24144 /* the length of date to include in the CMAC */
24145 #define	MC_CMD_EXEC_SIGNED_IN_DATALEN_OFST 4
24146 #define	MC_CMD_EXEC_SIGNED_IN_DATALEN_LEN 4
24147 /* the XPM sector containing the key to use */
24148 #define	MC_CMD_EXEC_SIGNED_IN_KEYSECTOR_OFST 8
24149 #define	MC_CMD_EXEC_SIGNED_IN_KEYSECTOR_LEN 4
24150 /* the expected CMAC value */
24151 #define	MC_CMD_EXEC_SIGNED_IN_CMAC_OFST 12
24152 #define	MC_CMD_EXEC_SIGNED_IN_CMAC_LEN 16
24153 
24154 /* MC_CMD_EXEC_SIGNED_OUT msgresponse */
24155 #define	MC_CMD_EXEC_SIGNED_OUT_LEN 0
24156 
24157 
24158 /***********************************/
24159 /* MC_CMD_PREPARE_SIGNED
24160  * Prepare to upload a signed image. This will scrub the specified length of
24161  * the data region, which must be at least as large as the DATALEN supplied to
24162  * MC_CMD_EXEC_SIGNED.
24163  */
24164 #define	MC_CMD_PREPARE_SIGNED 0x10d
24165 #define	MC_CMD_PREPARE_SIGNED_MSGSET 0x10d
24166 #undef	MC_CMD_0x10d_PRIVILEGE_CTG
24167 
24168 #define	MC_CMD_0x10d_PRIVILEGE_CTG SRIOV_CTG_ADMIN_TSA_UNBOUND
24169 
24170 /* MC_CMD_PREPARE_SIGNED_IN msgrequest */
24171 #define	MC_CMD_PREPARE_SIGNED_IN_LEN 4
24172 /* the length of data area to clear */
24173 #define	MC_CMD_PREPARE_SIGNED_IN_DATALEN_OFST 0
24174 #define	MC_CMD_PREPARE_SIGNED_IN_DATALEN_LEN 4
24175 
24176 /* MC_CMD_PREPARE_SIGNED_OUT msgresponse */
24177 #define	MC_CMD_PREPARE_SIGNED_OUT_LEN 0
24178 
24179 
24180 /***********************************/
24181 /* MC_CMD_SET_SECURITY_RULE
24182  * Set blacklist and/or whitelist action for a particular match criteria.
24183  * (Medford-only; for use by SolarSecure apps, not directly by drivers. See
24184  * SF-114946-SW.) NOTE - this message definition is provisional. It has not yet
24185  * been used in any released code and may change during development. This note
24186  * will be removed once it is regarded as stable.
24187  */
24188 #define	MC_CMD_SET_SECURITY_RULE 0x10f
24189 #define	MC_CMD_SET_SECURITY_RULE_MSGSET 0x10f
24190 #undef	MC_CMD_0x10f_PRIVILEGE_CTG
24191 
24192 #define	MC_CMD_0x10f_PRIVILEGE_CTG SRIOV_CTG_ADMIN_TSA_UNBOUND
24193 
24194 /* MC_CMD_SET_SECURITY_RULE_IN msgrequest */
24195 #define	MC_CMD_SET_SECURITY_RULE_IN_LEN 92
24196 /* fields to include in match criteria */
24197 #define	MC_CMD_SET_SECURITY_RULE_IN_MATCH_FIELDS_OFST 0
24198 #define	MC_CMD_SET_SECURITY_RULE_IN_MATCH_FIELDS_LEN 4
24199 #define	MC_CMD_SET_SECURITY_RULE_IN_MATCH_REMOTE_IP_OFST 0
24200 #define	MC_CMD_SET_SECURITY_RULE_IN_MATCH_REMOTE_IP_LBN 0
24201 #define	MC_CMD_SET_SECURITY_RULE_IN_MATCH_REMOTE_IP_WIDTH 1
24202 #define	MC_CMD_SET_SECURITY_RULE_IN_MATCH_LOCAL_IP_OFST 0
24203 #define	MC_CMD_SET_SECURITY_RULE_IN_MATCH_LOCAL_IP_LBN 1
24204 #define	MC_CMD_SET_SECURITY_RULE_IN_MATCH_LOCAL_IP_WIDTH 1
24205 #define	MC_CMD_SET_SECURITY_RULE_IN_MATCH_REMOTE_MAC_OFST 0
24206 #define	MC_CMD_SET_SECURITY_RULE_IN_MATCH_REMOTE_MAC_LBN 2
24207 #define	MC_CMD_SET_SECURITY_RULE_IN_MATCH_REMOTE_MAC_WIDTH 1
24208 #define	MC_CMD_SET_SECURITY_RULE_IN_MATCH_REMOTE_PORT_OFST 0
24209 #define	MC_CMD_SET_SECURITY_RULE_IN_MATCH_REMOTE_PORT_LBN 3
24210 #define	MC_CMD_SET_SECURITY_RULE_IN_MATCH_REMOTE_PORT_WIDTH 1
24211 #define	MC_CMD_SET_SECURITY_RULE_IN_MATCH_LOCAL_MAC_OFST 0
24212 #define	MC_CMD_SET_SECURITY_RULE_IN_MATCH_LOCAL_MAC_LBN 4
24213 #define	MC_CMD_SET_SECURITY_RULE_IN_MATCH_LOCAL_MAC_WIDTH 1
24214 #define	MC_CMD_SET_SECURITY_RULE_IN_MATCH_LOCAL_PORT_OFST 0
24215 #define	MC_CMD_SET_SECURITY_RULE_IN_MATCH_LOCAL_PORT_LBN 5
24216 #define	MC_CMD_SET_SECURITY_RULE_IN_MATCH_LOCAL_PORT_WIDTH 1
24217 #define	MC_CMD_SET_SECURITY_RULE_IN_MATCH_ETHER_TYPE_OFST 0
24218 #define	MC_CMD_SET_SECURITY_RULE_IN_MATCH_ETHER_TYPE_LBN 6
24219 #define	MC_CMD_SET_SECURITY_RULE_IN_MATCH_ETHER_TYPE_WIDTH 1
24220 #define	MC_CMD_SET_SECURITY_RULE_IN_MATCH_INNER_VLAN_OFST 0
24221 #define	MC_CMD_SET_SECURITY_RULE_IN_MATCH_INNER_VLAN_LBN 7
24222 #define	MC_CMD_SET_SECURITY_RULE_IN_MATCH_INNER_VLAN_WIDTH 1
24223 #define	MC_CMD_SET_SECURITY_RULE_IN_MATCH_OUTER_VLAN_OFST 0
24224 #define	MC_CMD_SET_SECURITY_RULE_IN_MATCH_OUTER_VLAN_LBN 8
24225 #define	MC_CMD_SET_SECURITY_RULE_IN_MATCH_OUTER_VLAN_WIDTH 1
24226 #define	MC_CMD_SET_SECURITY_RULE_IN_MATCH_IP_PROTO_OFST 0
24227 #define	MC_CMD_SET_SECURITY_RULE_IN_MATCH_IP_PROTO_LBN 9
24228 #define	MC_CMD_SET_SECURITY_RULE_IN_MATCH_IP_PROTO_WIDTH 1
24229 #define	MC_CMD_SET_SECURITY_RULE_IN_MATCH_PHYSICAL_PORT_OFST 0
24230 #define	MC_CMD_SET_SECURITY_RULE_IN_MATCH_PHYSICAL_PORT_LBN 10
24231 #define	MC_CMD_SET_SECURITY_RULE_IN_MATCH_PHYSICAL_PORT_WIDTH 1
24232 #define	MC_CMD_SET_SECURITY_RULE_IN_MATCH_RESERVED_OFST 0
24233 #define	MC_CMD_SET_SECURITY_RULE_IN_MATCH_RESERVED_LBN 11
24234 #define	MC_CMD_SET_SECURITY_RULE_IN_MATCH_RESERVED_WIDTH 1
24235 #define	MC_CMD_SET_SECURITY_RULE_IN_MATCH_REMOTE_SUBNET_ID_OFST 0
24236 #define	MC_CMD_SET_SECURITY_RULE_IN_MATCH_REMOTE_SUBNET_ID_LBN 12
24237 #define	MC_CMD_SET_SECURITY_RULE_IN_MATCH_REMOTE_SUBNET_ID_WIDTH 1
24238 #define	MC_CMD_SET_SECURITY_RULE_IN_MATCH_REMOTE_PORTRANGE_ID_OFST 0
24239 #define	MC_CMD_SET_SECURITY_RULE_IN_MATCH_REMOTE_PORTRANGE_ID_LBN 13
24240 #define	MC_CMD_SET_SECURITY_RULE_IN_MATCH_REMOTE_PORTRANGE_ID_WIDTH 1
24241 #define	MC_CMD_SET_SECURITY_RULE_IN_MATCH_LOCAL_PORTRANGE_ID_OFST 0
24242 #define	MC_CMD_SET_SECURITY_RULE_IN_MATCH_LOCAL_PORTRANGE_ID_LBN 14
24243 #define	MC_CMD_SET_SECURITY_RULE_IN_MATCH_LOCAL_PORTRANGE_ID_WIDTH 1
24244 /* remote MAC address to match (as bytes in network order) */
24245 #define	MC_CMD_SET_SECURITY_RULE_IN_REMOTE_MAC_OFST 4
24246 #define	MC_CMD_SET_SECURITY_RULE_IN_REMOTE_MAC_LEN 6
24247 /* remote port to match (as bytes in network order) */
24248 #define	MC_CMD_SET_SECURITY_RULE_IN_REMOTE_PORT_OFST 10
24249 #define	MC_CMD_SET_SECURITY_RULE_IN_REMOTE_PORT_LEN 2
24250 /* local MAC address to match (as bytes in network order) */
24251 #define	MC_CMD_SET_SECURITY_RULE_IN_LOCAL_MAC_OFST 12
24252 #define	MC_CMD_SET_SECURITY_RULE_IN_LOCAL_MAC_LEN 6
24253 /* local port to match (as bytes in network order) */
24254 #define	MC_CMD_SET_SECURITY_RULE_IN_LOCAL_PORT_OFST 18
24255 #define	MC_CMD_SET_SECURITY_RULE_IN_LOCAL_PORT_LEN 2
24256 /* Ethernet type to match (as bytes in network order) */
24257 #define	MC_CMD_SET_SECURITY_RULE_IN_ETHER_TYPE_OFST 20
24258 #define	MC_CMD_SET_SECURITY_RULE_IN_ETHER_TYPE_LEN 2
24259 /* Inner VLAN tag to match (as bytes in network order) */
24260 #define	MC_CMD_SET_SECURITY_RULE_IN_INNER_VLAN_OFST 22
24261 #define	MC_CMD_SET_SECURITY_RULE_IN_INNER_VLAN_LEN 2
24262 /* Outer VLAN tag to match (as bytes in network order) */
24263 #define	MC_CMD_SET_SECURITY_RULE_IN_OUTER_VLAN_OFST 24
24264 #define	MC_CMD_SET_SECURITY_RULE_IN_OUTER_VLAN_LEN 2
24265 /* IP protocol to match (in low byte; set high byte to 0) */
24266 #define	MC_CMD_SET_SECURITY_RULE_IN_IP_PROTO_OFST 26
24267 #define	MC_CMD_SET_SECURITY_RULE_IN_IP_PROTO_LEN 2
24268 /* Physical port to match (as little-endian 32-bit value) */
24269 #define	MC_CMD_SET_SECURITY_RULE_IN_PHYSICAL_PORT_OFST 28
24270 #define	MC_CMD_SET_SECURITY_RULE_IN_PHYSICAL_PORT_LEN 4
24271 /* Reserved; set to 0 */
24272 #define	MC_CMD_SET_SECURITY_RULE_IN_RESERVED_OFST 32
24273 #define	MC_CMD_SET_SECURITY_RULE_IN_RESERVED_LEN 4
24274 /* remote IP address to match (as bytes in network order; set last 12 bytes to
24275  * 0 for IPv4 address)
24276  */
24277 #define	MC_CMD_SET_SECURITY_RULE_IN_REMOTE_IP_OFST 36
24278 #define	MC_CMD_SET_SECURITY_RULE_IN_REMOTE_IP_LEN 16
24279 /* local IP address to match (as bytes in network order; set last 12 bytes to 0
24280  * for IPv4 address)
24281  */
24282 #define	MC_CMD_SET_SECURITY_RULE_IN_LOCAL_IP_OFST 52
24283 #define	MC_CMD_SET_SECURITY_RULE_IN_LOCAL_IP_LEN 16
24284 /* remote subnet ID to match (as little-endian 32-bit value); note that remote
24285  * subnets are matched by mapping the remote IP address to a "subnet ID" via a
24286  * data structure which must already have been configured using
24287  * MC_CMD_SUBNET_MAP_SET_NODE appropriately
24288  */
24289 #define	MC_CMD_SET_SECURITY_RULE_IN_REMOTE_SUBNET_ID_OFST 68
24290 #define	MC_CMD_SET_SECURITY_RULE_IN_REMOTE_SUBNET_ID_LEN 4
24291 /* remote portrange ID to match (as little-endian 32-bit value); note that
24292  * remote port ranges are matched by mapping the remote port to a "portrange
24293  * ID" via a data structure which must already have been configured using
24294  * MC_CMD_REMOTE_PORTRANGE_MAP_SET_TREE
24295  */
24296 #define	MC_CMD_SET_SECURITY_RULE_IN_REMOTE_PORTRANGE_ID_OFST 72
24297 #define	MC_CMD_SET_SECURITY_RULE_IN_REMOTE_PORTRANGE_ID_LEN 4
24298 /* local portrange ID to match (as little-endian 32-bit value); note that local
24299  * port ranges are matched by mapping the local port to a "portrange ID" via a
24300  * data structure which must already have been configured using
24301  * MC_CMD_LOCAL_PORTRANGE_MAP_SET_TREE
24302  */
24303 #define	MC_CMD_SET_SECURITY_RULE_IN_LOCAL_PORTRANGE_ID_OFST 76
24304 #define	MC_CMD_SET_SECURITY_RULE_IN_LOCAL_PORTRANGE_ID_LEN 4
24305 /* set the action for transmitted packets matching this rule */
24306 #define	MC_CMD_SET_SECURITY_RULE_IN_TX_ACTION_OFST 80
24307 #define	MC_CMD_SET_SECURITY_RULE_IN_TX_ACTION_LEN 4
24308 /* enum: make no decision */
24309 #define	MC_CMD_SET_SECURITY_RULE_IN_TX_ACTION_NONE 0x0
24310 /* enum: decide to accept the packet */
24311 #define	MC_CMD_SET_SECURITY_RULE_IN_TX_ACTION_WHITELIST 0x1
24312 /* enum: decide to drop the packet */
24313 #define	MC_CMD_SET_SECURITY_RULE_IN_TX_ACTION_BLACKLIST 0x2
24314 /* enum: inform the TSA controller about some sample of packets matching this
24315  * rule (via MC_CMD_TSA_INFO_IN_PKT_SAMPLE messages); may be bitwise-ORed with
24316  * either the WHITELIST or BLACKLIST action
24317  */
24318 #define	MC_CMD_SET_SECURITY_RULE_IN_TX_ACTION_SAMPLE 0x4
24319 /* enum: do not change the current TX action */
24320 #define	MC_CMD_SET_SECURITY_RULE_IN_TX_ACTION_UNCHANGED 0xffffffff
24321 /* set the action for received packets matching this rule */
24322 #define	MC_CMD_SET_SECURITY_RULE_IN_RX_ACTION_OFST 84
24323 #define	MC_CMD_SET_SECURITY_RULE_IN_RX_ACTION_LEN 4
24324 /* enum: make no decision */
24325 #define	MC_CMD_SET_SECURITY_RULE_IN_RX_ACTION_NONE 0x0
24326 /* enum: decide to accept the packet */
24327 #define	MC_CMD_SET_SECURITY_RULE_IN_RX_ACTION_WHITELIST 0x1
24328 /* enum: decide to drop the packet */
24329 #define	MC_CMD_SET_SECURITY_RULE_IN_RX_ACTION_BLACKLIST 0x2
24330 /* enum: inform the TSA controller about some sample of packets matching this
24331  * rule (via MC_CMD_TSA_INFO_IN_PKT_SAMPLE messages); may be bitwise-ORed with
24332  * either the WHITELIST or BLACKLIST action
24333  */
24334 #define	MC_CMD_SET_SECURITY_RULE_IN_RX_ACTION_SAMPLE 0x4
24335 /* enum: do not change the current RX action */
24336 #define	MC_CMD_SET_SECURITY_RULE_IN_RX_ACTION_UNCHANGED 0xffffffff
24337 /* counter ID to associate with this rule; IDs are allocated using
24338  * MC_CMD_SECURITY_RULE_COUNTER_ALLOC
24339  */
24340 #define	MC_CMD_SET_SECURITY_RULE_IN_COUNTER_ID_OFST 88
24341 #define	MC_CMD_SET_SECURITY_RULE_IN_COUNTER_ID_LEN 4
24342 /* enum: special value for the null counter ID */
24343 #define	MC_CMD_SET_SECURITY_RULE_IN_COUNTER_ID_NONE 0x0
24344 /* enum: special value to tell the MC to allocate an available counter */
24345 #define	MC_CMD_SET_SECURITY_RULE_IN_COUNTER_ID_SW_AUTO 0xeeeeeeee
24346 /* enum: special value to request use of hardware counter (Medford2 only) */
24347 #define	MC_CMD_SET_SECURITY_RULE_IN_COUNTER_ID_HW 0xffffffff
24348 
24349 /* MC_CMD_SET_SECURITY_RULE_OUT msgresponse */
24350 #define	MC_CMD_SET_SECURITY_RULE_OUT_LEN 32
24351 /* new reference count for uses of counter ID */
24352 #define	MC_CMD_SET_SECURITY_RULE_OUT_COUNTER_REFCNT_OFST 0
24353 #define	MC_CMD_SET_SECURITY_RULE_OUT_COUNTER_REFCNT_LEN 4
24354 /* constructed match bits for this rule (as a tracing aid only) */
24355 #define	MC_CMD_SET_SECURITY_RULE_OUT_LUE_MATCH_BITS_OFST 4
24356 #define	MC_CMD_SET_SECURITY_RULE_OUT_LUE_MATCH_BITS_LEN 12
24357 /* constructed discriminator bits for this rule (as a tracing aid only) */
24358 #define	MC_CMD_SET_SECURITY_RULE_OUT_LUE_DISCRIMINATOR_OFST 16
24359 #define	MC_CMD_SET_SECURITY_RULE_OUT_LUE_DISCRIMINATOR_LEN 4
24360 /* base location for probes for this rule (as a tracing aid only) */
24361 #define	MC_CMD_SET_SECURITY_RULE_OUT_LUE_PROBE_BASE_OFST 20
24362 #define	MC_CMD_SET_SECURITY_RULE_OUT_LUE_PROBE_BASE_LEN 4
24363 /* step for probes for this rule (as a tracing aid only) */
24364 #define	MC_CMD_SET_SECURITY_RULE_OUT_LUE_PROBE_STEP_OFST 24
24365 #define	MC_CMD_SET_SECURITY_RULE_OUT_LUE_PROBE_STEP_LEN 4
24366 /* ID for reading back the counter */
24367 #define	MC_CMD_SET_SECURITY_RULE_OUT_COUNTER_ID_OFST 28
24368 #define	MC_CMD_SET_SECURITY_RULE_OUT_COUNTER_ID_LEN 4
24369 
24370 
24371 /***********************************/
24372 /* MC_CMD_RESET_SECURITY_RULES
24373  * Reset all blacklist and whitelist actions for a particular physical port, or
24374  * all ports. (Medford-only; for use by SolarSecure apps, not directly by
24375  * drivers. See SF-114946-SW.) NOTE - this message definition is provisional.
24376  * It has not yet been used in any released code and may change during
24377  * development. This note will be removed once it is regarded as stable.
24378  */
24379 #define	MC_CMD_RESET_SECURITY_RULES 0x110
24380 #define	MC_CMD_RESET_SECURITY_RULES_MSGSET 0x110
24381 #undef	MC_CMD_0x110_PRIVILEGE_CTG
24382 
24383 #define	MC_CMD_0x110_PRIVILEGE_CTG SRIOV_CTG_ADMIN_TSA_UNBOUND
24384 
24385 /* MC_CMD_RESET_SECURITY_RULES_IN msgrequest */
24386 #define	MC_CMD_RESET_SECURITY_RULES_IN_LEN 4
24387 /* index of physical port to reset (or ALL_PHYSICAL_PORTS to reset all) */
24388 #define	MC_CMD_RESET_SECURITY_RULES_IN_PHYSICAL_PORT_OFST 0
24389 #define	MC_CMD_RESET_SECURITY_RULES_IN_PHYSICAL_PORT_LEN 4
24390 /* enum: special value to reset all physical ports */
24391 #define	MC_CMD_RESET_SECURITY_RULES_IN_ALL_PHYSICAL_PORTS 0xffffffff
24392 
24393 /* MC_CMD_RESET_SECURITY_RULES_OUT msgresponse */
24394 #define	MC_CMD_RESET_SECURITY_RULES_OUT_LEN 0
24395 
24396 
24397 /***********************************/
24398 /* MC_CMD_GET_SECURITY_RULESET_VERSION
24399  * Return a large hash value representing a "version" of the complete set of
24400  * currently active blacklist / whitelist rules and associated data structures.
24401  * (Medford-only; for use by SolarSecure apps, not directly by drivers. See
24402  * SF-114946-SW.) NOTE - this message definition is provisional. It has not yet
24403  * been used in any released code and may change during development. This note
24404  * will be removed once it is regarded as stable.
24405  */
24406 #define	MC_CMD_GET_SECURITY_RULESET_VERSION 0x111
24407 #define	MC_CMD_GET_SECURITY_RULESET_VERSION_MSGSET 0x111
24408 #undef	MC_CMD_0x111_PRIVILEGE_CTG
24409 
24410 #define	MC_CMD_0x111_PRIVILEGE_CTG SRIOV_CTG_ADMIN
24411 
24412 /* MC_CMD_GET_SECURITY_RULESET_VERSION_IN msgrequest */
24413 #define	MC_CMD_GET_SECURITY_RULESET_VERSION_IN_LEN 0
24414 
24415 /* MC_CMD_GET_SECURITY_RULESET_VERSION_OUT msgresponse */
24416 #define	MC_CMD_GET_SECURITY_RULESET_VERSION_OUT_LENMIN 1
24417 #define	MC_CMD_GET_SECURITY_RULESET_VERSION_OUT_LENMAX 252
24418 #define	MC_CMD_GET_SECURITY_RULESET_VERSION_OUT_LENMAX_MCDI2 1020
24419 #define	MC_CMD_GET_SECURITY_RULESET_VERSION_OUT_LEN(num) (0+1*(num))
24420 #define	MC_CMD_GET_SECURITY_RULESET_VERSION_OUT_VERSION_NUM(len) (((len)-0)/1)
24421 /* Opaque hash value; length may vary depending on the hash scheme used */
24422 #define	MC_CMD_GET_SECURITY_RULESET_VERSION_OUT_VERSION_OFST 0
24423 #define	MC_CMD_GET_SECURITY_RULESET_VERSION_OUT_VERSION_LEN 1
24424 #define	MC_CMD_GET_SECURITY_RULESET_VERSION_OUT_VERSION_MINNUM 1
24425 #define	MC_CMD_GET_SECURITY_RULESET_VERSION_OUT_VERSION_MAXNUM 252
24426 #define	MC_CMD_GET_SECURITY_RULESET_VERSION_OUT_VERSION_MAXNUM_MCDI2 1020
24427 
24428 
24429 /***********************************/
24430 /* MC_CMD_SECURITY_RULE_COUNTER_ALLOC
24431  * Allocate counters for use with blacklist / whitelist rules. (Medford-only;
24432  * for use by SolarSecure apps, not directly by drivers. See SF-114946-SW.)
24433  * NOTE - this message definition is provisional. It has not yet been used in
24434  * any released code and may change during development. This note will be
24435  * removed once it is regarded as stable.
24436  */
24437 #define	MC_CMD_SECURITY_RULE_COUNTER_ALLOC 0x112
24438 #define	MC_CMD_SECURITY_RULE_COUNTER_ALLOC_MSGSET 0x112
24439 #undef	MC_CMD_0x112_PRIVILEGE_CTG
24440 
24441 #define	MC_CMD_0x112_PRIVILEGE_CTG SRIOV_CTG_ADMIN_TSA_UNBOUND
24442 
24443 /* MC_CMD_SECURITY_RULE_COUNTER_ALLOC_IN msgrequest */
24444 #define	MC_CMD_SECURITY_RULE_COUNTER_ALLOC_IN_LEN 4
24445 /* the number of new counter IDs to request */
24446 #define	MC_CMD_SECURITY_RULE_COUNTER_ALLOC_IN_NUM_COUNTERS_OFST 0
24447 #define	MC_CMD_SECURITY_RULE_COUNTER_ALLOC_IN_NUM_COUNTERS_LEN 4
24448 
24449 /* MC_CMD_SECURITY_RULE_COUNTER_ALLOC_OUT msgresponse */
24450 #define	MC_CMD_SECURITY_RULE_COUNTER_ALLOC_OUT_LENMIN 4
24451 #define	MC_CMD_SECURITY_RULE_COUNTER_ALLOC_OUT_LENMAX 252
24452 #define	MC_CMD_SECURITY_RULE_COUNTER_ALLOC_OUT_LENMAX_MCDI2 1020
24453 #define	MC_CMD_SECURITY_RULE_COUNTER_ALLOC_OUT_LEN(num) (4+4*(num))
24454 #define	MC_CMD_SECURITY_RULE_COUNTER_ALLOC_OUT_COUNTER_ID_NUM(len) (((len)-4)/4)
24455 /* the number of new counter IDs allocated (may be less than the number
24456  * requested if resources are unavailable)
24457  */
24458 #define	MC_CMD_SECURITY_RULE_COUNTER_ALLOC_OUT_NUM_COUNTERS_OFST 0
24459 #define	MC_CMD_SECURITY_RULE_COUNTER_ALLOC_OUT_NUM_COUNTERS_LEN 4
24460 /* new counter ID(s) */
24461 #define	MC_CMD_SECURITY_RULE_COUNTER_ALLOC_OUT_COUNTER_ID_OFST 4
24462 #define	MC_CMD_SECURITY_RULE_COUNTER_ALLOC_OUT_COUNTER_ID_LEN 4
24463 #define	MC_CMD_SECURITY_RULE_COUNTER_ALLOC_OUT_COUNTER_ID_MINNUM 0
24464 #define	MC_CMD_SECURITY_RULE_COUNTER_ALLOC_OUT_COUNTER_ID_MAXNUM 62
24465 #define	MC_CMD_SECURITY_RULE_COUNTER_ALLOC_OUT_COUNTER_ID_MAXNUM_MCDI2 254
24466 
24467 
24468 /***********************************/
24469 /* MC_CMD_SECURITY_RULE_COUNTER_FREE
24470  * Allocate counters for use with blacklist / whitelist rules. (Medford-only;
24471  * for use by SolarSecure apps, not directly by drivers. See SF-114946-SW.)
24472  * NOTE - this message definition is provisional. It has not yet been used in
24473  * any released code and may change during development. This note will be
24474  * removed once it is regarded as stable.
24475  */
24476 #define	MC_CMD_SECURITY_RULE_COUNTER_FREE 0x113
24477 #define	MC_CMD_SECURITY_RULE_COUNTER_FREE_MSGSET 0x113
24478 #undef	MC_CMD_0x113_PRIVILEGE_CTG
24479 
24480 #define	MC_CMD_0x113_PRIVILEGE_CTG SRIOV_CTG_ADMIN_TSA_UNBOUND
24481 
24482 /* MC_CMD_SECURITY_RULE_COUNTER_FREE_IN msgrequest */
24483 #define	MC_CMD_SECURITY_RULE_COUNTER_FREE_IN_LENMIN 4
24484 #define	MC_CMD_SECURITY_RULE_COUNTER_FREE_IN_LENMAX 252
24485 #define	MC_CMD_SECURITY_RULE_COUNTER_FREE_IN_LENMAX_MCDI2 1020
24486 #define	MC_CMD_SECURITY_RULE_COUNTER_FREE_IN_LEN(num) (4+4*(num))
24487 #define	MC_CMD_SECURITY_RULE_COUNTER_FREE_IN_COUNTER_ID_NUM(len) (((len)-4)/4)
24488 /* the number of counter IDs to free */
24489 #define	MC_CMD_SECURITY_RULE_COUNTER_FREE_IN_NUM_COUNTERS_OFST 0
24490 #define	MC_CMD_SECURITY_RULE_COUNTER_FREE_IN_NUM_COUNTERS_LEN 4
24491 /* the counter ID(s) to free */
24492 #define	MC_CMD_SECURITY_RULE_COUNTER_FREE_IN_COUNTER_ID_OFST 4
24493 #define	MC_CMD_SECURITY_RULE_COUNTER_FREE_IN_COUNTER_ID_LEN 4
24494 #define	MC_CMD_SECURITY_RULE_COUNTER_FREE_IN_COUNTER_ID_MINNUM 0
24495 #define	MC_CMD_SECURITY_RULE_COUNTER_FREE_IN_COUNTER_ID_MAXNUM 62
24496 #define	MC_CMD_SECURITY_RULE_COUNTER_FREE_IN_COUNTER_ID_MAXNUM_MCDI2 254
24497 
24498 /* MC_CMD_SECURITY_RULE_COUNTER_FREE_OUT msgresponse */
24499 #define	MC_CMD_SECURITY_RULE_COUNTER_FREE_OUT_LEN 0
24500 
24501 
24502 /***********************************/
24503 /* MC_CMD_SUBNET_MAP_SET_NODE
24504  * Atomically update a trie node in the map of subnets to subnet IDs. The
24505  * constants in the descriptions of the fields of this message may be retrieved
24506  * by the GET_SECURITY_RULE_INFO op of MC_CMD_GET_PARSER_DISP_INFO. (Medford-
24507  * only; for use by SolarSecure apps, not directly by drivers. See
24508  * SF-114946-SW.) NOTE - this message definition is provisional. It has not yet
24509  * been used in any released code and may change during development. This note
24510  * will be removed once it is regarded as stable.
24511  */
24512 #define	MC_CMD_SUBNET_MAP_SET_NODE 0x114
24513 #define	MC_CMD_SUBNET_MAP_SET_NODE_MSGSET 0x114
24514 #undef	MC_CMD_0x114_PRIVILEGE_CTG
24515 
24516 #define	MC_CMD_0x114_PRIVILEGE_CTG SRIOV_CTG_ADMIN_TSA_UNBOUND
24517 
24518 /* MC_CMD_SUBNET_MAP_SET_NODE_IN msgrequest */
24519 #define	MC_CMD_SUBNET_MAP_SET_NODE_IN_LENMIN 6
24520 #define	MC_CMD_SUBNET_MAP_SET_NODE_IN_LENMAX 252
24521 #define	MC_CMD_SUBNET_MAP_SET_NODE_IN_LENMAX_MCDI2 1020
24522 #define	MC_CMD_SUBNET_MAP_SET_NODE_IN_LEN(num) (4+2*(num))
24523 #define	MC_CMD_SUBNET_MAP_SET_NODE_IN_ENTRY_NUM(len) (((len)-4)/2)
24524 /* node to update in the range 0 .. SUBNET_MAP_NUM_NODES-1 */
24525 #define	MC_CMD_SUBNET_MAP_SET_NODE_IN_NODE_ID_OFST 0
24526 #define	MC_CMD_SUBNET_MAP_SET_NODE_IN_NODE_ID_LEN 4
24527 /* SUBNET_MAP_NUM_ENTRIES_PER_NODE new entries; each entry is either a pointer
24528  * to the next node, expressed as an offset in the trie memory (i.e. node ID
24529  * multiplied by SUBNET_MAP_NUM_ENTRIES_PER_NODE), or a leaf value in the range
24530  * SUBNET_ID_MIN .. SUBNET_ID_MAX
24531  */
24532 #define	MC_CMD_SUBNET_MAP_SET_NODE_IN_ENTRY_OFST 4
24533 #define	MC_CMD_SUBNET_MAP_SET_NODE_IN_ENTRY_LEN 2
24534 #define	MC_CMD_SUBNET_MAP_SET_NODE_IN_ENTRY_MINNUM 1
24535 #define	MC_CMD_SUBNET_MAP_SET_NODE_IN_ENTRY_MAXNUM 124
24536 #define	MC_CMD_SUBNET_MAP_SET_NODE_IN_ENTRY_MAXNUM_MCDI2 508
24537 
24538 /* MC_CMD_SUBNET_MAP_SET_NODE_OUT msgresponse */
24539 #define	MC_CMD_SUBNET_MAP_SET_NODE_OUT_LEN 0
24540 
24541 /* PORTRANGE_TREE_ENTRY structuredef */
24542 #define	PORTRANGE_TREE_ENTRY_LEN 4
24543 /* key for branch nodes (<= key takes left branch, > key takes right branch),
24544  * or magic value for leaf nodes
24545  */
24546 #define	PORTRANGE_TREE_ENTRY_BRANCH_KEY_OFST 0
24547 #define	PORTRANGE_TREE_ENTRY_BRANCH_KEY_LEN 2
24548 #define	PORTRANGE_TREE_ENTRY_LEAF_NODE_KEY 0xffff /* enum */
24549 #define	PORTRANGE_TREE_ENTRY_BRANCH_KEY_LBN 0
24550 #define	PORTRANGE_TREE_ENTRY_BRANCH_KEY_WIDTH 16
24551 /* final portrange ID for leaf nodes (don't care for branch nodes) */
24552 #define	PORTRANGE_TREE_ENTRY_LEAF_PORTRANGE_ID_OFST 2
24553 #define	PORTRANGE_TREE_ENTRY_LEAF_PORTRANGE_ID_LEN 2
24554 #define	PORTRANGE_TREE_ENTRY_LEAF_PORTRANGE_ID_LBN 16
24555 #define	PORTRANGE_TREE_ENTRY_LEAF_PORTRANGE_ID_WIDTH 16
24556 
24557 
24558 /***********************************/
24559 /* MC_CMD_REMOTE_PORTRANGE_MAP_SET_TREE
24560  * Atomically update the entire tree mapping remote port ranges to portrange
24561  * IDs. The constants in the descriptions of the fields of this message may be
24562  * retrieved by the GET_SECURITY_RULE_INFO op of MC_CMD_GET_PARSER_DISP_INFO.
24563  * (Medford-only; for use by SolarSecure apps, not directly by drivers. See
24564  * SF-114946-SW.) NOTE - this message definition is provisional. It has not yet
24565  * been used in any released code and may change during development. This note
24566  * will be removed once it is regarded as stable.
24567  */
24568 #define	MC_CMD_REMOTE_PORTRANGE_MAP_SET_TREE 0x115
24569 #define	MC_CMD_REMOTE_PORTRANGE_MAP_SET_TREE_MSGSET 0x115
24570 #undef	MC_CMD_0x115_PRIVILEGE_CTG
24571 
24572 #define	MC_CMD_0x115_PRIVILEGE_CTG SRIOV_CTG_ADMIN_TSA_UNBOUND
24573 
24574 /* MC_CMD_REMOTE_PORTRANGE_MAP_SET_TREE_IN msgrequest */
24575 #define	MC_CMD_REMOTE_PORTRANGE_MAP_SET_TREE_IN_LENMIN 4
24576 #define	MC_CMD_REMOTE_PORTRANGE_MAP_SET_TREE_IN_LENMAX 252
24577 #define	MC_CMD_REMOTE_PORTRANGE_MAP_SET_TREE_IN_LENMAX_MCDI2 1020
24578 #define	MC_CMD_REMOTE_PORTRANGE_MAP_SET_TREE_IN_LEN(num) (0+4*(num))
24579 #define	MC_CMD_REMOTE_PORTRANGE_MAP_SET_TREE_IN_ENTRIES_NUM(len) (((len)-0)/4)
24580 /* PORTRANGE_TREE_NUM_ENTRIES new entries, each laid out as a
24581  * PORTRANGE_TREE_ENTRY
24582  */
24583 #define	MC_CMD_REMOTE_PORTRANGE_MAP_SET_TREE_IN_ENTRIES_OFST 0
24584 #define	MC_CMD_REMOTE_PORTRANGE_MAP_SET_TREE_IN_ENTRIES_LEN 4
24585 #define	MC_CMD_REMOTE_PORTRANGE_MAP_SET_TREE_IN_ENTRIES_MINNUM 1
24586 #define	MC_CMD_REMOTE_PORTRANGE_MAP_SET_TREE_IN_ENTRIES_MAXNUM 63
24587 #define	MC_CMD_REMOTE_PORTRANGE_MAP_SET_TREE_IN_ENTRIES_MAXNUM_MCDI2 255
24588 
24589 /* MC_CMD_REMOTE_PORTRANGE_MAP_SET_TREE_OUT msgresponse */
24590 #define	MC_CMD_REMOTE_PORTRANGE_MAP_SET_TREE_OUT_LEN 0
24591 
24592 
24593 /***********************************/
24594 /* MC_CMD_LOCAL_PORTRANGE_MAP_SET_TREE
24595  * Atomically update the entire tree mapping remote port ranges to portrange
24596  * IDs. The constants in the descriptions of the fields of this message may be
24597  * retrieved by the GET_SECURITY_RULE_INFO op of MC_CMD_GET_PARSER_DISP_INFO.
24598  * (Medford-only; for use by SolarSecure apps, not directly by drivers. See
24599  * SF-114946-SW.) NOTE - this message definition is provisional. It has not yet
24600  * been used in any released code and may change during development. This note
24601  * will be removed once it is regarded as stable.
24602  */
24603 #define	MC_CMD_LOCAL_PORTRANGE_MAP_SET_TREE 0x116
24604 #define	MC_CMD_LOCAL_PORTRANGE_MAP_SET_TREE_MSGSET 0x116
24605 #undef	MC_CMD_0x116_PRIVILEGE_CTG
24606 
24607 #define	MC_CMD_0x116_PRIVILEGE_CTG SRIOV_CTG_ADMIN_TSA_UNBOUND
24608 
24609 /* MC_CMD_LOCAL_PORTRANGE_MAP_SET_TREE_IN msgrequest */
24610 #define	MC_CMD_LOCAL_PORTRANGE_MAP_SET_TREE_IN_LENMIN 4
24611 #define	MC_CMD_LOCAL_PORTRANGE_MAP_SET_TREE_IN_LENMAX 252
24612 #define	MC_CMD_LOCAL_PORTRANGE_MAP_SET_TREE_IN_LENMAX_MCDI2 1020
24613 #define	MC_CMD_LOCAL_PORTRANGE_MAP_SET_TREE_IN_LEN(num) (0+4*(num))
24614 #define	MC_CMD_LOCAL_PORTRANGE_MAP_SET_TREE_IN_ENTRIES_NUM(len) (((len)-0)/4)
24615 /* PORTRANGE_TREE_NUM_ENTRIES new entries, each laid out as a
24616  * PORTRANGE_TREE_ENTRY
24617  */
24618 #define	MC_CMD_LOCAL_PORTRANGE_MAP_SET_TREE_IN_ENTRIES_OFST 0
24619 #define	MC_CMD_LOCAL_PORTRANGE_MAP_SET_TREE_IN_ENTRIES_LEN 4
24620 #define	MC_CMD_LOCAL_PORTRANGE_MAP_SET_TREE_IN_ENTRIES_MINNUM 1
24621 #define	MC_CMD_LOCAL_PORTRANGE_MAP_SET_TREE_IN_ENTRIES_MAXNUM 63
24622 #define	MC_CMD_LOCAL_PORTRANGE_MAP_SET_TREE_IN_ENTRIES_MAXNUM_MCDI2 255
24623 
24624 /* MC_CMD_LOCAL_PORTRANGE_MAP_SET_TREE_OUT msgresponse */
24625 #define	MC_CMD_LOCAL_PORTRANGE_MAP_SET_TREE_OUT_LEN 0
24626 
24627 /* TUNNEL_ENCAP_UDP_PORT_ENTRY structuredef */
24628 #define	TUNNEL_ENCAP_UDP_PORT_ENTRY_LEN 4
24629 /* UDP port (the standard ports are named below but any port may be used) */
24630 #define	TUNNEL_ENCAP_UDP_PORT_ENTRY_UDP_PORT_OFST 0
24631 #define	TUNNEL_ENCAP_UDP_PORT_ENTRY_UDP_PORT_LEN 2
24632 /* enum: the IANA allocated UDP port for VXLAN */
24633 #define	TUNNEL_ENCAP_UDP_PORT_ENTRY_IANA_VXLAN_UDP_PORT 0x12b5
24634 /* enum: the IANA allocated UDP port for Geneve */
24635 #define	TUNNEL_ENCAP_UDP_PORT_ENTRY_IANA_GENEVE_UDP_PORT 0x17c1
24636 #define	TUNNEL_ENCAP_UDP_PORT_ENTRY_UDP_PORT_LBN 0
24637 #define	TUNNEL_ENCAP_UDP_PORT_ENTRY_UDP_PORT_WIDTH 16
24638 /* tunnel encapsulation protocol (only those named below are supported) */
24639 #define	TUNNEL_ENCAP_UDP_PORT_ENTRY_PROTOCOL_OFST 2
24640 #define	TUNNEL_ENCAP_UDP_PORT_ENTRY_PROTOCOL_LEN 2
24641 /* enum: This port will be used for VXLAN on both IPv4 and IPv6 */
24642 #define	TUNNEL_ENCAP_UDP_PORT_ENTRY_VXLAN 0x0
24643 /* enum: This port will be used for Geneve on both IPv4 and IPv6 */
24644 #define	TUNNEL_ENCAP_UDP_PORT_ENTRY_GENEVE 0x1
24645 #define	TUNNEL_ENCAP_UDP_PORT_ENTRY_PROTOCOL_LBN 16
24646 #define	TUNNEL_ENCAP_UDP_PORT_ENTRY_PROTOCOL_WIDTH 16
24647 
24648 
24649 /***********************************/
24650 /* MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS
24651  * Configure UDP ports for tunnel encapsulation hardware acceleration. The
24652  * parser-dispatcher will attempt to parse traffic on these ports as tunnel
24653  * encapsulation PDUs and filter them using the tunnel encapsulation filter
24654  * chain rather than the standard filter chain. Note that this command can
24655  * cause all functions to see a reset. (Available on Medford only.)
24656  */
24657 #define	MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS 0x117
24658 #define	MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS_MSGSET 0x117
24659 #undef	MC_CMD_0x117_PRIVILEGE_CTG
24660 
24661 #define	MC_CMD_0x117_PRIVILEGE_CTG SRIOV_CTG_ADMIN
24662 
24663 /* MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS_IN msgrequest */
24664 #define	MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS_IN_LENMIN 4
24665 #define	MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS_IN_LENMAX 68
24666 #define	MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS_IN_LENMAX_MCDI2 68
24667 #define	MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS_IN_LEN(num) (4+4*(num))
24668 #define	MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS_IN_ENTRIES_NUM(len) (((len)-4)/4)
24669 /* Flags */
24670 #define	MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS_IN_FLAGS_OFST 0
24671 #define	MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS_IN_FLAGS_LEN 2
24672 #define	MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS_IN_UNLOADING_OFST 0
24673 #define	MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS_IN_UNLOADING_LBN 0
24674 #define	MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS_IN_UNLOADING_WIDTH 1
24675 /* The number of entries in the ENTRIES array */
24676 #define	MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS_IN_NUM_ENTRIES_OFST 2
24677 #define	MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS_IN_NUM_ENTRIES_LEN 2
24678 /* Entries defining the UDP port to protocol mapping, each laid out as a
24679  * TUNNEL_ENCAP_UDP_PORT_ENTRY
24680  */
24681 #define	MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS_IN_ENTRIES_OFST 4
24682 #define	MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS_IN_ENTRIES_LEN 4
24683 #define	MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS_IN_ENTRIES_MINNUM 0
24684 #define	MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS_IN_ENTRIES_MAXNUM 16
24685 #define	MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS_IN_ENTRIES_MAXNUM_MCDI2 16
24686 
24687 /* MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS_OUT msgresponse */
24688 #define	MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS_OUT_LEN 2
24689 /* Flags */
24690 #define	MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS_OUT_FLAGS_OFST 0
24691 #define	MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS_OUT_FLAGS_LEN 2
24692 #define	MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS_OUT_RESETTING_OFST 0
24693 #define	MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS_OUT_RESETTING_LBN 0
24694 #define	MC_CMD_SET_TUNNEL_ENCAP_UDP_PORTS_OUT_RESETTING_WIDTH 1
24695 
24696 
24697 /***********************************/
24698 /* MC_CMD_RX_BALANCING
24699  * Configure a port upconverter to distribute the packets on both RX engines.
24700  * Packets are distributed based on a table with the destination vFIFO. The
24701  * index of the table is a hash of source and destination of IPV4 and VLAN
24702  * priority.
24703  */
24704 #define	MC_CMD_RX_BALANCING 0x118
24705 #define	MC_CMD_RX_BALANCING_MSGSET 0x118
24706 #undef	MC_CMD_0x118_PRIVILEGE_CTG
24707 
24708 #define	MC_CMD_0x118_PRIVILEGE_CTG SRIOV_CTG_ADMIN_TSA_UNBOUND
24709 
24710 /* MC_CMD_RX_BALANCING_IN msgrequest */
24711 #define	MC_CMD_RX_BALANCING_IN_LEN 16
24712 /* The RX port whose upconverter table will be modified */
24713 #define	MC_CMD_RX_BALANCING_IN_PORT_OFST 0
24714 #define	MC_CMD_RX_BALANCING_IN_PORT_LEN 4
24715 /* The VLAN priority associated to the table index and vFIFO */
24716 #define	MC_CMD_RX_BALANCING_IN_PRIORITY_OFST 4
24717 #define	MC_CMD_RX_BALANCING_IN_PRIORITY_LEN 4
24718 /* The resulting bit of SRC^DST for indexing the table */
24719 #define	MC_CMD_RX_BALANCING_IN_SRC_DST_OFST 8
24720 #define	MC_CMD_RX_BALANCING_IN_SRC_DST_LEN 4
24721 /* The RX engine to which the vFIFO in the table entry will point to */
24722 #define	MC_CMD_RX_BALANCING_IN_ENG_OFST 12
24723 #define	MC_CMD_RX_BALANCING_IN_ENG_LEN 4
24724 
24725 /* MC_CMD_RX_BALANCING_OUT msgresponse */
24726 #define	MC_CMD_RX_BALANCING_OUT_LEN 0
24727 
24728 
24729 /***********************************/
24730 /* MC_CMD_TSA_BIND
24731  * TSAN - TSAC binding communication protocol. Refer to SF-115479-TC for more
24732  * info in respect to the binding protocol.
24733  */
24734 #define	MC_CMD_TSA_BIND 0x119
24735 #define	MC_CMD_TSA_BIND_MSGSET 0x119
24736 #undef	MC_CMD_0x119_PRIVILEGE_CTG
24737 
24738 #define	MC_CMD_0x119_PRIVILEGE_CTG SRIOV_CTG_ADMIN
24739 
24740 /* MC_CMD_TSA_BIND_IN msgrequest: Protocol operation code */
24741 #define	MC_CMD_TSA_BIND_IN_LEN 4
24742 #define	MC_CMD_TSA_BIND_IN_OP_OFST 0
24743 #define	MC_CMD_TSA_BIND_IN_OP_LEN 4
24744 /* enum: Obsolete. Use MC_CMD_SECURE_NIC_INFO_IN_STATUS. */
24745 #define	MC_CMD_TSA_BIND_OP_GET_ID 0x1
24746 /* enum: Get a binding ticket from the TSAN. The binding ticket is used as part
24747  * of the binding procedure to authorize the binding of an adapter to a TSAID.
24748  * Refer to SF-114946-SW for more information. This sub-command is only
24749  * available over a TLS secure connection between the TSAN and TSAC.
24750  */
24751 #define	MC_CMD_TSA_BIND_OP_GET_TICKET 0x2
24752 /* enum: Opcode associated with the propagation of a private key that TSAN uses
24753  * as part of post-binding authentication procedure. More specifically, TSAN
24754  * uses this key for a signing operation. TSAC uses the counterpart public key
24755  * to verify the signature. Note - The post-binding authentication occurs when
24756  * the TSAN-TSAC connection terminates and TSAN tries to reconnect. Refer to
24757  * SF-114946-SW for more information. This sub-command is only available over a
24758  * TLS secure connection between the TSAN and TSAC.
24759  */
24760 #define	MC_CMD_TSA_BIND_OP_SET_KEY 0x3
24761 /* enum: Request an insecure unbinding operation. This sub-command is available
24762  * for any privileged client.
24763  */
24764 #define	MC_CMD_TSA_BIND_OP_UNBIND 0x4
24765 /* enum: Obsolete. Use MC_CMD_TSA_BIND_OP_SECURE_UNBIND. */
24766 #define	MC_CMD_TSA_BIND_OP_UNBIND_EXT 0x5
24767 /* enum: Opcode associated with the propagation of the unbinding secret token.
24768  * TSAN persists the unbinding secret token. Refer to SF-115479-TC for more
24769  * information. This sub-command is only available over a TLS secure connection
24770  * between the TSAN and TSAC.
24771  */
24772 #define	MC_CMD_TSA_BIND_OP_SET_UNBINDTOKEN 0x6
24773 /* enum: Obsolete. Use MC_CMD_TSA_BIND_OP_SECURE_DECOMMISSION. */
24774 #define	MC_CMD_TSA_BIND_OP_DECOMMISSION 0x7
24775 /* enum: Obsolete. Use MC_CMD_GET_CERTIFICATE. */
24776 #define	MC_CMD_TSA_BIND_OP_GET_CERTIFICATE 0x8
24777 /* enum: Request a secure unbinding operation using unbinding token. This sub-
24778  * command is available for any privileged client.
24779  */
24780 #define	MC_CMD_TSA_BIND_OP_SECURE_UNBIND 0x9
24781 /* enum: Request a secure decommissioning operation. This sub-command is
24782  * available for any privileged client.
24783  */
24784 #define	MC_CMD_TSA_BIND_OP_SECURE_DECOMMISSION 0xa
24785 /* enum: Test facility that allows an adapter to be configured to behave as if
24786  * Bound to a TSA controller with restricted MCDI administrator operations.
24787  * This operation is primarily intended to aid host driver development.
24788  */
24789 #define	MC_CMD_TSA_BIND_OP_TEST_MCDI 0xb
24790 
24791 /* MC_CMD_TSA_BIND_IN_GET_ID msgrequest: Obsolete. Use
24792  * MC_CMD_SECURE_NIC_INFO_IN_STATUS.
24793  */
24794 #define	MC_CMD_TSA_BIND_IN_GET_ID_LEN 20
24795 /* The operation requested. */
24796 #define	MC_CMD_TSA_BIND_IN_GET_ID_OP_OFST 0
24797 #define	MC_CMD_TSA_BIND_IN_GET_ID_OP_LEN 4
24798 /* Cryptographic nonce that TSAC generates and sends to TSAN. TSAC generates
24799  * the nonce every time as part of the TSAN post-binding authentication
24800  * procedure when the TSAN-TSAC connection terminates and TSAN does need to re-
24801  * connect to the TSAC. Refer to SF-114946-SW for more information.
24802  */
24803 #define	MC_CMD_TSA_BIND_IN_GET_ID_NONCE_OFST 4
24804 #define	MC_CMD_TSA_BIND_IN_GET_ID_NONCE_LEN 16
24805 
24806 /* MC_CMD_TSA_BIND_IN_GET_TICKET msgrequest */
24807 #define	MC_CMD_TSA_BIND_IN_GET_TICKET_LEN 4
24808 /* The operation requested. */
24809 #define	MC_CMD_TSA_BIND_IN_GET_TICKET_OP_OFST 0
24810 #define	MC_CMD_TSA_BIND_IN_GET_TICKET_OP_LEN 4
24811 
24812 /* MC_CMD_TSA_BIND_IN_SET_KEY msgrequest */
24813 #define	MC_CMD_TSA_BIND_IN_SET_KEY_LENMIN 5
24814 #define	MC_CMD_TSA_BIND_IN_SET_KEY_LENMAX 252
24815 #define	MC_CMD_TSA_BIND_IN_SET_KEY_LENMAX_MCDI2 1020
24816 #define	MC_CMD_TSA_BIND_IN_SET_KEY_LEN(num) (4+1*(num))
24817 #define	MC_CMD_TSA_BIND_IN_SET_KEY_DATKEY_NUM(len) (((len)-4)/1)
24818 /* The operation requested. */
24819 #define	MC_CMD_TSA_BIND_IN_SET_KEY_OP_OFST 0
24820 #define	MC_CMD_TSA_BIND_IN_SET_KEY_OP_LEN 4
24821 /* This data blob contains the private key generated by the TSAC. TSAN uses
24822  * this key for a signing operation. Note- This private key is used in
24823  * conjunction with the post-binding TSAN authentication procedure that occurs
24824  * when the TSAN-TSAC connection terminates and TSAN tries to reconnect. Refer
24825  * to SF-114946-SW for more information.
24826  */
24827 #define	MC_CMD_TSA_BIND_IN_SET_KEY_DATKEY_OFST 4
24828 #define	MC_CMD_TSA_BIND_IN_SET_KEY_DATKEY_LEN 1
24829 #define	MC_CMD_TSA_BIND_IN_SET_KEY_DATKEY_MINNUM 1
24830 #define	MC_CMD_TSA_BIND_IN_SET_KEY_DATKEY_MAXNUM 248
24831 #define	MC_CMD_TSA_BIND_IN_SET_KEY_DATKEY_MAXNUM_MCDI2 1016
24832 
24833 /* MC_CMD_TSA_BIND_IN_UNBIND msgrequest: Request an insecure unbinding
24834  * operation.
24835  */
24836 #define	MC_CMD_TSA_BIND_IN_UNBIND_LEN 10
24837 /* The operation requested. */
24838 #define	MC_CMD_TSA_BIND_IN_UNBIND_OP_OFST 0
24839 #define	MC_CMD_TSA_BIND_IN_UNBIND_OP_LEN 4
24840 /* TSAN unique identifier for the network adapter */
24841 #define	MC_CMD_TSA_BIND_IN_UNBIND_TSANID_OFST 4
24842 #define	MC_CMD_TSA_BIND_IN_UNBIND_TSANID_LEN 6
24843 
24844 /* MC_CMD_TSA_BIND_IN_UNBIND_EXT msgrequest: Obsolete. Use
24845  * MC_CMD_TSA_BIND_IN_SECURE_UNBIND.
24846  */
24847 #define	MC_CMD_TSA_BIND_IN_UNBIND_EXT_LENMIN 93
24848 #define	MC_CMD_TSA_BIND_IN_UNBIND_EXT_LENMAX 252
24849 #define	MC_CMD_TSA_BIND_IN_UNBIND_EXT_LENMAX_MCDI2 1020
24850 #define	MC_CMD_TSA_BIND_IN_UNBIND_EXT_LEN(num) (92+1*(num))
24851 #define	MC_CMD_TSA_BIND_IN_UNBIND_EXT_SIG_NUM(len) (((len)-92)/1)
24852 /* The operation requested. */
24853 #define	MC_CMD_TSA_BIND_IN_UNBIND_EXT_OP_OFST 0
24854 #define	MC_CMD_TSA_BIND_IN_UNBIND_EXT_OP_LEN 4
24855 /* TSAN unique identifier for the network adapter */
24856 #define	MC_CMD_TSA_BIND_IN_UNBIND_EXT_TSANID_OFST 4
24857 #define	MC_CMD_TSA_BIND_IN_UNBIND_EXT_TSANID_LEN 6
24858 /* Align the arguments to 32 bits */
24859 #define	MC_CMD_TSA_BIND_IN_UNBIND_EXT_TSANID_RSVD_OFST 10
24860 #define	MC_CMD_TSA_BIND_IN_UNBIND_EXT_TSANID_RSVD_LEN 2
24861 /* This attribute identifies the TSA infrastructure domain. The length of the
24862  * TSAID attribute is limited to 64 bytes. This is how TSA SDK defines the max
24863  * length. Note- The TSAID is the Organizational Unit Name filed as part of the
24864  * root and server certificates.
24865  */
24866 #define	MC_CMD_TSA_BIND_IN_UNBIND_EXT_TSAID_OFST 12
24867 #define	MC_CMD_TSA_BIND_IN_UNBIND_EXT_TSAID_LEN 1
24868 #define	MC_CMD_TSA_BIND_IN_UNBIND_EXT_TSAID_NUM 64
24869 /* Unbinding secret token. The adapter validates this unbinding token by
24870  * comparing it against the one stored on the adapter as part of the
24871  * MC_CMD_TSA_BIND_IN_SET_UNBINDTOKEN msgrequest. Refer to SF-115479-TC for
24872  * more information.
24873  */
24874 #define	MC_CMD_TSA_BIND_IN_UNBIND_EXT_UNBINDTOKEN_OFST 76
24875 #define	MC_CMD_TSA_BIND_IN_UNBIND_EXT_UNBINDTOKEN_LEN 16
24876 /* This is the signature of the above mentioned fields- TSANID, TSAID and
24877  * UNBINDTOKEN. As per current requirements, the SIG opaque data blob contains
24878  * ECDSA ECC-384 based signature. The ECC curve is secp384r1. The signature is
24879  * also ASN-1 encoded. Note- The signature is verified based on the public key
24880  * stored into the root certificate that is provisioned on the adapter side.
24881  * This key is known as the PUKtsaid. Refer to SF-115479-TC for more
24882  * information.
24883  */
24884 #define	MC_CMD_TSA_BIND_IN_UNBIND_EXT_SIG_OFST 92
24885 #define	MC_CMD_TSA_BIND_IN_UNBIND_EXT_SIG_LEN 1
24886 #define	MC_CMD_TSA_BIND_IN_UNBIND_EXT_SIG_MINNUM 1
24887 #define	MC_CMD_TSA_BIND_IN_UNBIND_EXT_SIG_MAXNUM 160
24888 #define	MC_CMD_TSA_BIND_IN_UNBIND_EXT_SIG_MAXNUM_MCDI2 928
24889 
24890 /* MC_CMD_TSA_BIND_IN_SET_UNBINDTOKEN msgrequest */
24891 #define	MC_CMD_TSA_BIND_IN_SET_UNBINDTOKEN_LEN 20
24892 /* The operation requested. */
24893 #define	MC_CMD_TSA_BIND_IN_SET_UNBINDTOKEN_OP_OFST 0
24894 #define	MC_CMD_TSA_BIND_IN_SET_UNBINDTOKEN_OP_LEN 4
24895 /* Unbinding secret token. TSAN persists the unbinding secret token. Refer to
24896  * SF-115479-TC for more information.
24897  */
24898 #define	MC_CMD_TSA_BIND_IN_SET_UNBINDTOKEN_UNBINDTOKEN_OFST 4
24899 #define	MC_CMD_TSA_BIND_IN_SET_UNBINDTOKEN_UNBINDTOKEN_LEN 16
24900 /* enum: There are situations when the binding process does not complete
24901  * successfully due to key, other attributes corruption at the database level
24902  * (Controller). Adapter can't connect to the controller anymore. To recover,
24903  * make usage of the decommission command that forces the adapter into
24904  * unbinding state.
24905  */
24906 #define	MC_CMD_TSA_BIND_IN_SET_UNBINDTOKEN_ADAPTER_BINDING_FAILURE 0x1
24907 
24908 /* MC_CMD_TSA_BIND_IN_DECOMMISSION msgrequest: Obsolete. Use
24909  * MC_CMD_TSA_BIND_IN_SECURE_DECOMMISSION.
24910  */
24911 #define	MC_CMD_TSA_BIND_IN_DECOMMISSION_LENMIN 109
24912 #define	MC_CMD_TSA_BIND_IN_DECOMMISSION_LENMAX 252
24913 #define	MC_CMD_TSA_BIND_IN_DECOMMISSION_LENMAX_MCDI2 1020
24914 #define	MC_CMD_TSA_BIND_IN_DECOMMISSION_LEN(num) (108+1*(num))
24915 #define	MC_CMD_TSA_BIND_IN_DECOMMISSION_SIG_NUM(len) (((len)-108)/1)
24916 /* This is the signature of the above mentioned fields- TSAID, USER and REASON.
24917  * As per current requirements, the SIG opaque data blob contains ECDSA ECC-384
24918  * based signature. The ECC curve is secp384r1. The signature is also ASN-1
24919  * encoded . Note- The signature is verified based on the public key stored
24920  * into the root certificate that is provisioned on the adapter side. This key
24921  * is known as the PUKtsaid. Refer to SF-115479-TC for more information.
24922  */
24923 #define	MC_CMD_TSA_BIND_IN_DECOMMISSION_SIG_OFST 108
24924 #define	MC_CMD_TSA_BIND_IN_DECOMMISSION_SIG_LEN 1
24925 #define	MC_CMD_TSA_BIND_IN_DECOMMISSION_SIG_MINNUM 1
24926 #define	MC_CMD_TSA_BIND_IN_DECOMMISSION_SIG_MAXNUM 144
24927 #define	MC_CMD_TSA_BIND_IN_DECOMMISSION_SIG_MAXNUM_MCDI2 912
24928 /* The operation requested. */
24929 #define	MC_CMD_TSA_BIND_IN_DECOMMISSION_OP_OFST 0
24930 #define	MC_CMD_TSA_BIND_IN_DECOMMISSION_OP_LEN 4
24931 /* This attribute identifies the TSA infrastructure domain. The length of the
24932  * TSAID attribute is limited to 64 bytes. This is how TSA SDK defines the max
24933  * length. Note- The TSAID is the Organizational Unit Name filed as part of the
24934  * root and server certificates.
24935  */
24936 #define	MC_CMD_TSA_BIND_IN_DECOMMISSION_TSAID_OFST 4
24937 #define	MC_CMD_TSA_BIND_IN_DECOMMISSION_TSAID_LEN 1
24938 #define	MC_CMD_TSA_BIND_IN_DECOMMISSION_TSAID_NUM 64
24939 /* User ID that comes, as an example, from the Controller. Note- The 33 byte
24940  * length of this attribute is max length of the linux user name plus null
24941  * character.
24942  */
24943 #define	MC_CMD_TSA_BIND_IN_DECOMMISSION_USER_OFST 68
24944 #define	MC_CMD_TSA_BIND_IN_DECOMMISSION_USER_LEN 1
24945 #define	MC_CMD_TSA_BIND_IN_DECOMMISSION_USER_NUM 33
24946 /* Align the arguments to 32 bits */
24947 #define	MC_CMD_TSA_BIND_IN_DECOMMISSION_USER_RSVD_OFST 101
24948 #define	MC_CMD_TSA_BIND_IN_DECOMMISSION_USER_RSVD_LEN 3
24949 /* Reason of why decommissioning happens Note- The list of reasons, defined as
24950  * part of the enumeration below, can be extended.
24951  */
24952 #define	MC_CMD_TSA_BIND_IN_DECOMMISSION_REASON_OFST 104
24953 #define	MC_CMD_TSA_BIND_IN_DECOMMISSION_REASON_LEN 4
24954 
24955 /* MC_CMD_TSA_BIND_IN_GET_CERTIFICATE msgrequest: Obsolete. Use
24956  * MC_CMD_GET_CERTIFICATE.
24957  */
24958 #define	MC_CMD_TSA_BIND_IN_GET_CERTIFICATE_LEN 8
24959 /* The operation requested, must be MC_CMD_TSA_BIND_OP_GET_CERTIFICATE. */
24960 #define	MC_CMD_TSA_BIND_IN_GET_CERTIFICATE_OP_OFST 0
24961 #define	MC_CMD_TSA_BIND_IN_GET_CERTIFICATE_OP_LEN 4
24962 /* Type of the certificate to be retrieved. */
24963 #define	MC_CMD_TSA_BIND_IN_GET_CERTIFICATE_TYPE_OFST 4
24964 #define	MC_CMD_TSA_BIND_IN_GET_CERTIFICATE_TYPE_LEN 4
24965 #define	MC_CMD_TSA_BIND_IN_GET_CERTIFICATE_UNUSED 0x0 /* enum */
24966 /* enum: Adapter Authentication Certificate (AAC). The AAC is used by the
24967  * controller to verify the authenticity of the adapter.
24968  */
24969 #define	MC_CMD_TSA_BIND_IN_GET_CERTIFICATE_AAC 0x1
24970 /* enum: Adapter Authentication Signing Certificate (AASC). The AASC is used by
24971  * the controller to verify the validity of AAC.
24972  */
24973 #define	MC_CMD_TSA_BIND_IN_GET_CERTIFICATE_AASC 0x2
24974 
24975 /* MC_CMD_TSA_BIND_IN_SECURE_UNBIND msgrequest: Request a secure unbinding
24976  * operation using unbinding token.
24977  */
24978 #define	MC_CMD_TSA_BIND_IN_SECURE_UNBIND_LENMIN 97
24979 #define	MC_CMD_TSA_BIND_IN_SECURE_UNBIND_LENMAX 200
24980 #define	MC_CMD_TSA_BIND_IN_SECURE_UNBIND_LENMAX_MCDI2 200
24981 #define	MC_CMD_TSA_BIND_IN_SECURE_UNBIND_LEN(num) (96+1*(num))
24982 #define	MC_CMD_TSA_BIND_IN_SECURE_UNBIND_SIG_NUM(len) (((len)-96)/1)
24983 /* The operation requested, must be MC_CMD_TSA_BIND_OP_SECURE_UNBIND. */
24984 #define	MC_CMD_TSA_BIND_IN_SECURE_UNBIND_OP_OFST 0
24985 #define	MC_CMD_TSA_BIND_IN_SECURE_UNBIND_OP_LEN 4
24986 /* Type of the message. (MESSAGE_TYPE_xxx) Must be
24987  * MESSAGE_TYPE_TSA_SECURE_UNBIND.
24988  */
24989 #define	MC_CMD_TSA_BIND_IN_SECURE_UNBIND_MESSAGE_TYPE_OFST 4
24990 #define	MC_CMD_TSA_BIND_IN_SECURE_UNBIND_MESSAGE_TYPE_LEN 4
24991 /* TSAN unique identifier for the network adapter */
24992 #define	MC_CMD_TSA_BIND_IN_SECURE_UNBIND_TSANID_OFST 8
24993 #define	MC_CMD_TSA_BIND_IN_SECURE_UNBIND_TSANID_LEN 6
24994 /* Align the arguments to 32 bits */
24995 #define	MC_CMD_TSA_BIND_IN_SECURE_UNBIND_TSANID_RSVD_OFST 14
24996 #define	MC_CMD_TSA_BIND_IN_SECURE_UNBIND_TSANID_RSVD_LEN 2
24997 /* A NUL padded US-ASCII string identifying the TSA infrastructure domain. This
24998  * field is for information only, and not used by the firmware. Note- The TSAID
24999  * is the Organizational Unit Name field as part of the root and server
25000  * certificates.
25001  */
25002 #define	MC_CMD_TSA_BIND_IN_SECURE_UNBIND_TSAID_OFST 16
25003 #define	MC_CMD_TSA_BIND_IN_SECURE_UNBIND_TSAID_LEN 1
25004 #define	MC_CMD_TSA_BIND_IN_SECURE_UNBIND_TSAID_NUM 64
25005 /* Unbinding secret token. The adapter validates this unbinding token by
25006  * comparing it against the one stored on the adapter as part of the
25007  * MC_CMD_TSA_BIND_IN_SET_UNBINDTOKEN msgrequest. Refer to SF-115479-TC for
25008  * more information.
25009  */
25010 #define	MC_CMD_TSA_BIND_IN_SECURE_UNBIND_UNBINDTOKEN_OFST 80
25011 #define	MC_CMD_TSA_BIND_IN_SECURE_UNBIND_UNBINDTOKEN_LEN 16
25012 /* The signature computed and encoded as specified by MESSAGE_TYPE. */
25013 #define	MC_CMD_TSA_BIND_IN_SECURE_UNBIND_SIG_OFST 96
25014 #define	MC_CMD_TSA_BIND_IN_SECURE_UNBIND_SIG_LEN 1
25015 #define	MC_CMD_TSA_BIND_IN_SECURE_UNBIND_SIG_MINNUM 1
25016 #define	MC_CMD_TSA_BIND_IN_SECURE_UNBIND_SIG_MAXNUM 104
25017 #define	MC_CMD_TSA_BIND_IN_SECURE_UNBIND_SIG_MAXNUM_MCDI2 104
25018 
25019 /* MC_CMD_TSA_BIND_IN_SECURE_DECOMMISSION msgrequest: Request a secure
25020  * decommissioning operation.
25021  */
25022 #define	MC_CMD_TSA_BIND_IN_SECURE_DECOMMISSION_LENMIN 113
25023 #define	MC_CMD_TSA_BIND_IN_SECURE_DECOMMISSION_LENMAX 216
25024 #define	MC_CMD_TSA_BIND_IN_SECURE_DECOMMISSION_LENMAX_MCDI2 216
25025 #define	MC_CMD_TSA_BIND_IN_SECURE_DECOMMISSION_LEN(num) (112+1*(num))
25026 #define	MC_CMD_TSA_BIND_IN_SECURE_DECOMMISSION_SIG_NUM(len) (((len)-112)/1)
25027 /* The operation requested, must be MC_CMD_TSA_BIND_OP_SECURE_DECOMMISSION. */
25028 #define	MC_CMD_TSA_BIND_IN_SECURE_DECOMMISSION_OP_OFST 0
25029 #define	MC_CMD_TSA_BIND_IN_SECURE_DECOMMISSION_OP_LEN 4
25030 /* Type of the message. (MESSAGE_TYPE_xxx) Must be
25031  * MESSAGE_TYPE_SECURE_DECOMMISSION.
25032  */
25033 #define	MC_CMD_TSA_BIND_IN_SECURE_DECOMMISSION_MESSAGE_TYPE_OFST 4
25034 #define	MC_CMD_TSA_BIND_IN_SECURE_DECOMMISSION_MESSAGE_TYPE_LEN 4
25035 /* A NUL padded US-ASCII string identifying the TSA infrastructure domain. This
25036  * field is for information only, and not used by the firmware. Note- The TSAID
25037  * is the Organizational Unit Name field as part of the root and server
25038  * certificates.
25039  */
25040 #define	MC_CMD_TSA_BIND_IN_SECURE_DECOMMISSION_TSAID_OFST 8
25041 #define	MC_CMD_TSA_BIND_IN_SECURE_DECOMMISSION_TSAID_LEN 1
25042 #define	MC_CMD_TSA_BIND_IN_SECURE_DECOMMISSION_TSAID_NUM 64
25043 /* A NUL padded US-ASCII string containing user name of the creator of the
25044  * decommissioning ticket. This field is for information only, and not used by
25045  * the firmware.
25046  */
25047 #define	MC_CMD_TSA_BIND_IN_SECURE_DECOMMISSION_USER_OFST 72
25048 #define	MC_CMD_TSA_BIND_IN_SECURE_DECOMMISSION_USER_LEN 1
25049 #define	MC_CMD_TSA_BIND_IN_SECURE_DECOMMISSION_USER_NUM 36
25050 /* Reason of why decommissioning happens */
25051 #define	MC_CMD_TSA_BIND_IN_SECURE_DECOMMISSION_REASON_OFST 108
25052 #define	MC_CMD_TSA_BIND_IN_SECURE_DECOMMISSION_REASON_LEN 4
25053 /* enum: There are situations when the binding process does not complete
25054  * successfully due to key, other attributes corruption at the database level
25055  * (Controller). Adapter can't connect to the controller anymore. To recover,
25056  * use the decommission command to force the adapter into unbound state.
25057  */
25058 #define	MC_CMD_TSA_BIND_IN_SECURE_DECOMMISSION_ADAPTER_BINDING_FAILURE 0x1
25059 /* The signature computed and encoded as specified by MESSAGE_TYPE. */
25060 #define	MC_CMD_TSA_BIND_IN_SECURE_DECOMMISSION_SIG_OFST 112
25061 #define	MC_CMD_TSA_BIND_IN_SECURE_DECOMMISSION_SIG_LEN 1
25062 #define	MC_CMD_TSA_BIND_IN_SECURE_DECOMMISSION_SIG_MINNUM 1
25063 #define	MC_CMD_TSA_BIND_IN_SECURE_DECOMMISSION_SIG_MAXNUM 104
25064 #define	MC_CMD_TSA_BIND_IN_SECURE_DECOMMISSION_SIG_MAXNUM_MCDI2 104
25065 
25066 /* MC_CMD_TSA_BIND_IN_TEST_MCDI msgrequest: Test mode that emulates MCDI
25067  * interface restrictions of a bound adapter. This operation is intended for
25068  * test use on adapters that are not deployed and bound to a TSA Controller.
25069  * Using it on a Bound adapter will succeed but will not alter the MCDI
25070  * privileges as MCDI operations will already be restricted.
25071  */
25072 #define	MC_CMD_TSA_BIND_IN_TEST_MCDI_LEN 8
25073 /* The operation requested must be MC_CMD_TSA_BIND_OP_TEST_MCDI. */
25074 #define	MC_CMD_TSA_BIND_IN_TEST_MCDI_OP_OFST 0
25075 #define	MC_CMD_TSA_BIND_IN_TEST_MCDI_OP_LEN 4
25076 /* Enable or disable emulation of bound adapter */
25077 #define	MC_CMD_TSA_BIND_IN_TEST_MCDI_CTRL_OFST 4
25078 #define	MC_CMD_TSA_BIND_IN_TEST_MCDI_CTRL_LEN 4
25079 #define	MC_CMD_TSA_BIND_IN_TEST_MCDI_DISABLE 0x0 /* enum */
25080 #define	MC_CMD_TSA_BIND_IN_TEST_MCDI_ENABLE 0x1 /* enum */
25081 
25082 /* MC_CMD_TSA_BIND_OUT_GET_ID msgresponse: Obsolete. Use
25083  * MC_CMD_SECURE_NIC_INFO_OUT_STATUS.
25084  */
25085 #define	MC_CMD_TSA_BIND_OUT_GET_ID_LENMIN 15
25086 #define	MC_CMD_TSA_BIND_OUT_GET_ID_LENMAX 252
25087 #define	MC_CMD_TSA_BIND_OUT_GET_ID_LENMAX_MCDI2 1020
25088 #define	MC_CMD_TSA_BIND_OUT_GET_ID_LEN(num) (14+1*(num))
25089 #define	MC_CMD_TSA_BIND_OUT_GET_ID_SIG_NUM(len) (((len)-14)/1)
25090 /* The protocol operation code MC_CMD_TSA_BIND_OP_GET_ID that is sent back to
25091  * the caller.
25092  */
25093 #define	MC_CMD_TSA_BIND_OUT_GET_ID_OP_OFST 0
25094 #define	MC_CMD_TSA_BIND_OUT_GET_ID_OP_LEN 4
25095 /* Rules engine type. Note- The rules engine type allows TSAC to further
25096  * identify the connected endpoint (e.g. TSAN, NIC Emulator) type and take the
25097  * proper action accordingly. As an example, TSAC uses the rules engine type to
25098  * select the SF key that differs in the case of TSAN vs. NIC Emulator.
25099  */
25100 #define	MC_CMD_TSA_BIND_OUT_GET_ID_RULE_ENGINE_OFST 4
25101 #define	MC_CMD_TSA_BIND_OUT_GET_ID_RULE_ENGINE_LEN 4
25102 /* enum: Hardware rules engine. */
25103 #define	MC_CMD_TSA_BIND_OUT_GET_ID_RULE_ENGINE_TSAN 0x1
25104 /* enum: Nic emulator rules engine. */
25105 #define	MC_CMD_TSA_BIND_OUT_GET_ID_RULE_ENGINE_NEMU 0x2
25106 /* enum: SSFE. */
25107 #define	MC_CMD_TSA_BIND_OUT_GET_ID_RULE_ENGINE_SSFE 0x3
25108 /* TSAN unique identifier for the network adapter */
25109 #define	MC_CMD_TSA_BIND_OUT_GET_ID_TSANID_OFST 8
25110 #define	MC_CMD_TSA_BIND_OUT_GET_ID_TSANID_LEN 6
25111 /* The signature data blob. The signature is computed against the message
25112  * formed by TSAN ID concatenated with the NONCE value. Refer to SF-115479-TC
25113  * for more information also in respect to the private keys that are used to
25114  * sign the message based on TSAN pre/post-binding authentication procedure.
25115  */
25116 #define	MC_CMD_TSA_BIND_OUT_GET_ID_SIG_OFST 14
25117 #define	MC_CMD_TSA_BIND_OUT_GET_ID_SIG_LEN 1
25118 #define	MC_CMD_TSA_BIND_OUT_GET_ID_SIG_MINNUM 1
25119 #define	MC_CMD_TSA_BIND_OUT_GET_ID_SIG_MAXNUM 238
25120 #define	MC_CMD_TSA_BIND_OUT_GET_ID_SIG_MAXNUM_MCDI2 1006
25121 
25122 /* MC_CMD_TSA_BIND_OUT_GET_TICKET msgresponse */
25123 #define	MC_CMD_TSA_BIND_OUT_GET_TICKET_LENMIN 5
25124 #define	MC_CMD_TSA_BIND_OUT_GET_TICKET_LENMAX 252
25125 #define	MC_CMD_TSA_BIND_OUT_GET_TICKET_LENMAX_MCDI2 1020
25126 #define	MC_CMD_TSA_BIND_OUT_GET_TICKET_LEN(num) (4+1*(num))
25127 #define	MC_CMD_TSA_BIND_OUT_GET_TICKET_TICKET_NUM(len) (((len)-4)/1)
25128 /* The protocol operation code MC_CMD_TSA_BIND_OP_GET_TICKET that is sent back
25129  * to the caller.
25130  */
25131 #define	MC_CMD_TSA_BIND_OUT_GET_TICKET_OP_OFST 0
25132 #define	MC_CMD_TSA_BIND_OUT_GET_TICKET_OP_LEN 4
25133 /* The ticket represents the data blob construct that TSAN sends to TSAC as
25134  * part of the binding protocol. From the TSAN perspective the ticket is an
25135  * opaque construct. For more info refer to SF-115479-TC.
25136  */
25137 #define	MC_CMD_TSA_BIND_OUT_GET_TICKET_TICKET_OFST 4
25138 #define	MC_CMD_TSA_BIND_OUT_GET_TICKET_TICKET_LEN 1
25139 #define	MC_CMD_TSA_BIND_OUT_GET_TICKET_TICKET_MINNUM 1
25140 #define	MC_CMD_TSA_BIND_OUT_GET_TICKET_TICKET_MAXNUM 248
25141 #define	MC_CMD_TSA_BIND_OUT_GET_TICKET_TICKET_MAXNUM_MCDI2 1016
25142 
25143 /* MC_CMD_TSA_BIND_OUT_SET_KEY msgresponse */
25144 #define	MC_CMD_TSA_BIND_OUT_SET_KEY_LEN 4
25145 /* The protocol operation code MC_CMD_TSA_BIND_OP_SET_KEY that is sent back to
25146  * the caller.
25147  */
25148 #define	MC_CMD_TSA_BIND_OUT_SET_KEY_OP_OFST 0
25149 #define	MC_CMD_TSA_BIND_OUT_SET_KEY_OP_LEN 4
25150 
25151 /* MC_CMD_TSA_BIND_OUT_UNBIND msgresponse: Response to insecure unbind request.
25152  */
25153 #define	MC_CMD_TSA_BIND_OUT_UNBIND_LEN 8
25154 /* Same as MC_CMD_ERR field, but included as 0 in success cases */
25155 #define	MC_CMD_TSA_BIND_OUT_UNBIND_RESULT_OFST 0
25156 #define	MC_CMD_TSA_BIND_OUT_UNBIND_RESULT_LEN 4
25157 /* Extra status information */
25158 #define	MC_CMD_TSA_BIND_OUT_UNBIND_INFO_OFST 4
25159 #define	MC_CMD_TSA_BIND_OUT_UNBIND_INFO_LEN 4
25160 /* enum: Unbind successful. */
25161 #define	MC_CMD_TSA_BIND_OUT_UNBIND_OK_UNBOUND 0x0
25162 /* enum: TSANID mismatch */
25163 #define	MC_CMD_TSA_BIND_OUT_UNBIND_ERR_BAD_TSANID 0x1
25164 /* enum: Unable to remove the binding ticket from persistent storage. */
25165 #define	MC_CMD_TSA_BIND_OUT_UNBIND_ERR_REMOVE_TICKET 0x2
25166 /* enum: TSAN is not bound to a binding ticket. */
25167 #define	MC_CMD_TSA_BIND_OUT_UNBIND_ERR_NOT_BOUND 0x3
25168 
25169 /* MC_CMD_TSA_BIND_OUT_UNBIND_EXT msgresponse: Obsolete. Use
25170  * MC_CMD_TSA_BIND_OUT_SECURE_UNBIND.
25171  */
25172 #define	MC_CMD_TSA_BIND_OUT_UNBIND_EXT_LEN 8
25173 /* Same as MC_CMD_ERR field, but included as 0 in success cases */
25174 #define	MC_CMD_TSA_BIND_OUT_UNBIND_EXT_RESULT_OFST 0
25175 #define	MC_CMD_TSA_BIND_OUT_UNBIND_EXT_RESULT_LEN 4
25176 /* Extra status information */
25177 #define	MC_CMD_TSA_BIND_OUT_UNBIND_EXT_INFO_OFST 4
25178 #define	MC_CMD_TSA_BIND_OUT_UNBIND_EXT_INFO_LEN 4
25179 /* enum: Unbind successful. */
25180 #define	MC_CMD_TSA_BIND_OUT_UNBIND_EXT_OK_UNBOUND 0x0
25181 /* enum: TSANID mismatch */
25182 #define	MC_CMD_TSA_BIND_OUT_UNBIND_EXT_ERR_BAD_TSANID 0x1
25183 /* enum: Unable to remove the binding ticket from persistent storage. */
25184 #define	MC_CMD_TSA_BIND_OUT_UNBIND_EXT_ERR_REMOVE_TICKET 0x2
25185 /* enum: TSAN is not bound to a binding ticket. */
25186 #define	MC_CMD_TSA_BIND_OUT_UNBIND_EXT_ERR_NOT_BOUND 0x3
25187 /* enum: Invalid unbind token */
25188 #define	MC_CMD_TSA_BIND_OUT_UNBIND_EXT_ERR_BAD_TOKEN 0x4
25189 /* enum: Invalid signature */
25190 #define	MC_CMD_TSA_BIND_OUT_UNBIND_EXT_ERR_BAD_SIGNATURE 0x5
25191 
25192 /* MC_CMD_TSA_BIND_OUT_SET_UNBINDTOKEN msgresponse */
25193 #define	MC_CMD_TSA_BIND_OUT_SET_UNBINDTOKEN_LEN 4
25194 /* The protocol operation code MC_CMD_TSA_BIND_OP_SET_UNBINDTOKEN that is sent
25195  * back to the caller.
25196  */
25197 #define	MC_CMD_TSA_BIND_OUT_SET_UNBINDTOKEN_OP_OFST 0
25198 #define	MC_CMD_TSA_BIND_OUT_SET_UNBINDTOKEN_OP_LEN 4
25199 
25200 /* MC_CMD_TSA_BIND_OUT_DECOMMISSION msgresponse: Obsolete. Use
25201  * MC_CMD_TSA_BIND_OUT_SECURE_DECOMMISSION.
25202  */
25203 #define	MC_CMD_TSA_BIND_OUT_DECOMMISSION_LEN 4
25204 /* The protocol operation code MC_CMD_TSA_BIND_OP_DECOMMISSION that is sent
25205  * back to the caller.
25206  */
25207 #define	MC_CMD_TSA_BIND_OUT_DECOMMISSION_OP_OFST 0
25208 #define	MC_CMD_TSA_BIND_OUT_DECOMMISSION_OP_LEN 4
25209 
25210 /* MC_CMD_TSA_BIND_OUT_GET_CERTIFICATE msgresponse */
25211 #define	MC_CMD_TSA_BIND_OUT_GET_CERTIFICATE_LENMIN 9
25212 #define	MC_CMD_TSA_BIND_OUT_GET_CERTIFICATE_LENMAX 252
25213 #define	MC_CMD_TSA_BIND_OUT_GET_CERTIFICATE_LENMAX_MCDI2 1020
25214 #define	MC_CMD_TSA_BIND_OUT_GET_CERTIFICATE_LEN(num) (8+1*(num))
25215 #define	MC_CMD_TSA_BIND_OUT_GET_CERTIFICATE_DATA_NUM(len) (((len)-8)/1)
25216 /* The protocol operation code MC_CMD_TSA_BIND_OP_GET_CERTIFICATE that is sent
25217  * back to the caller.
25218  */
25219 #define	MC_CMD_TSA_BIND_OUT_GET_CERTIFICATE_OP_OFST 0
25220 #define	MC_CMD_TSA_BIND_OUT_GET_CERTIFICATE_OP_LEN 4
25221 /* Type of the certificate. */
25222 #define	MC_CMD_TSA_BIND_OUT_GET_CERTIFICATE_TYPE_OFST 4
25223 #define	MC_CMD_TSA_BIND_OUT_GET_CERTIFICATE_TYPE_LEN 4
25224 /*            Enum values, see field(s): */
25225 /*               MC_CMD_TSA_BIND_IN_GET_CERTIFICATE/TYPE */
25226 /* The certificate data. */
25227 #define	MC_CMD_TSA_BIND_OUT_GET_CERTIFICATE_DATA_OFST 8
25228 #define	MC_CMD_TSA_BIND_OUT_GET_CERTIFICATE_DATA_LEN 1
25229 #define	MC_CMD_TSA_BIND_OUT_GET_CERTIFICATE_DATA_MINNUM 1
25230 #define	MC_CMD_TSA_BIND_OUT_GET_CERTIFICATE_DATA_MAXNUM 244
25231 #define	MC_CMD_TSA_BIND_OUT_GET_CERTIFICATE_DATA_MAXNUM_MCDI2 1012
25232 
25233 /* MC_CMD_TSA_BIND_OUT_SECURE_UNBIND msgresponse: Response to secure unbind
25234  * request.
25235  */
25236 #define	MC_CMD_TSA_BIND_OUT_SECURE_UNBIND_LEN 8
25237 /* The protocol operation code that is sent back to the caller. */
25238 #define	MC_CMD_TSA_BIND_OUT_SECURE_UNBIND_OP_OFST 0
25239 #define	MC_CMD_TSA_BIND_OUT_SECURE_UNBIND_OP_LEN 4
25240 #define	MC_CMD_TSA_BIND_OUT_SECURE_UNBIND_RESULT_OFST 4
25241 #define	MC_CMD_TSA_BIND_OUT_SECURE_UNBIND_RESULT_LEN 4
25242 /* enum: Unbind successful. */
25243 #define	MC_CMD_TSA_BIND_OUT_SECURE_UNBIND_OK_UNBOUND 0x0
25244 /* enum: TSANID mismatch */
25245 #define	MC_CMD_TSA_BIND_OUT_SECURE_UNBIND_ERR_BAD_TSANID 0x1
25246 /* enum: Unable to remove the binding ticket from persistent storage. */
25247 #define	MC_CMD_TSA_BIND_OUT_SECURE_UNBIND_ERR_REMOVE_TICKET 0x2
25248 /* enum: TSAN is not bound to a domain. */
25249 #define	MC_CMD_TSA_BIND_OUT_SECURE_UNBIND_ERR_NOT_BOUND 0x3
25250 /* enum: Invalid unbind token */
25251 #define	MC_CMD_TSA_BIND_OUT_SECURE_UNBIND_ERR_BAD_TOKEN 0x4
25252 /* enum: Invalid signature */
25253 #define	MC_CMD_TSA_BIND_OUT_SECURE_UNBIND_ERR_BAD_SIGNATURE 0x5
25254 
25255 /* MC_CMD_TSA_BIND_OUT_SECURE_DECOMMISSION msgresponse: Response to secure
25256  * decommission request.
25257  */
25258 #define	MC_CMD_TSA_BIND_OUT_SECURE_DECOMMISSION_LEN 8
25259 /* The protocol operation code that is sent back to the caller. */
25260 #define	MC_CMD_TSA_BIND_OUT_SECURE_DECOMMISSION_OP_OFST 0
25261 #define	MC_CMD_TSA_BIND_OUT_SECURE_DECOMMISSION_OP_LEN 4
25262 #define	MC_CMD_TSA_BIND_OUT_SECURE_DECOMMISSION_RESULT_OFST 4
25263 #define	MC_CMD_TSA_BIND_OUT_SECURE_DECOMMISSION_RESULT_LEN 4
25264 /* enum: Unbind successful. */
25265 #define	MC_CMD_TSA_BIND_OUT_SECURE_DECOMMISSION_OK_UNBOUND 0x0
25266 /* enum: TSANID mismatch */
25267 #define	MC_CMD_TSA_BIND_OUT_SECURE_DECOMMISSION_ERR_BAD_TSANID 0x1
25268 /* enum: Unable to remove the binding ticket from persistent storage. */
25269 #define	MC_CMD_TSA_BIND_OUT_SECURE_DECOMMISSION_ERR_REMOVE_TICKET 0x2
25270 /* enum: TSAN is not bound to a domain. */
25271 #define	MC_CMD_TSA_BIND_OUT_SECURE_DECOMMISSION_ERR_NOT_BOUND 0x3
25272 /* enum: Invalid unbind token */
25273 #define	MC_CMD_TSA_BIND_OUT_SECURE_DECOMMISSION_ERR_BAD_TOKEN 0x4
25274 /* enum: Invalid signature */
25275 #define	MC_CMD_TSA_BIND_OUT_SECURE_DECOMMISSION_ERR_BAD_SIGNATURE 0x5
25276 
25277 /* MC_CMD_TSA_BIND_OUT_TEST_MCDI msgrequest */
25278 #define	MC_CMD_TSA_BIND_OUT_TEST_MCDI_LEN 4
25279 /* The protocol operation code MC_CMD_TSA_BIND_OP_TEST_MCDI that is sent back
25280  * to the caller.
25281  */
25282 #define	MC_CMD_TSA_BIND_OUT_TEST_MCDI_OP_OFST 0
25283 #define	MC_CMD_TSA_BIND_OUT_TEST_MCDI_OP_LEN 4
25284 
25285 
25286 /***********************************/
25287 /* MC_CMD_MANAGE_SECURITY_RULESET_CACHE
25288  * Manage the persistent NVRAM cache of security rules created with
25289  * MC_CMD_SET_SECURITY_RULE. Note that the cache is not automatically updated
25290  * as rules are added or removed; the active ruleset must be explicitly
25291  * committed to the cache. The cache may also be explicitly invalidated,
25292  * without affecting the currently active ruleset. When the cache is valid, it
25293  * will be loaded at power on or MC reboot, instead of the default ruleset.
25294  * Rollback of the currently active ruleset to the cached version (when it is
25295  * valid) is also supported. (Medford-only; for use by SolarSecure apps, not
25296  * directly by drivers. See SF-114946-SW.) NOTE - The only sub-operation
25297  * allowed in an adapter bound to a TSA controller from the local host is
25298  * OP_GET_CACHED_VERSION. All other sub-operations are prohibited.
25299  */
25300 #define	MC_CMD_MANAGE_SECURITY_RULESET_CACHE 0x11a
25301 #define	MC_CMD_MANAGE_SECURITY_RULESET_CACHE_MSGSET 0x11a
25302 #undef	MC_CMD_0x11a_PRIVILEGE_CTG
25303 
25304 #define	MC_CMD_0x11a_PRIVILEGE_CTG SRIOV_CTG_ADMIN
25305 
25306 /* MC_CMD_MANAGE_SECURITY_RULESET_CACHE_IN msgrequest */
25307 #define	MC_CMD_MANAGE_SECURITY_RULESET_CACHE_IN_LEN 4
25308 /* the operation to perform */
25309 #define	MC_CMD_MANAGE_SECURITY_RULESET_CACHE_IN_OP_OFST 0
25310 #define	MC_CMD_MANAGE_SECURITY_RULESET_CACHE_IN_OP_LEN 4
25311 /* enum: reports the ruleset version that is cached in persistent storage but
25312  * performs no other action
25313  */
25314 #define	MC_CMD_MANAGE_SECURITY_RULESET_CACHE_IN_OP_GET_CACHED_VERSION 0x0
25315 /* enum: rolls back the active state to the cached version. (May fail with
25316  * ENOENT if there is no valid cached version.)
25317  */
25318 #define	MC_CMD_MANAGE_SECURITY_RULESET_CACHE_IN_OP_ROLLBACK 0x1
25319 /* enum: commits the active state to the persistent cache */
25320 #define	MC_CMD_MANAGE_SECURITY_RULESET_CACHE_IN_OP_COMMIT 0x2
25321 /* enum: invalidates the persistent cache without affecting the active state */
25322 #define	MC_CMD_MANAGE_SECURITY_RULESET_CACHE_IN_OP_INVALIDATE 0x3
25323 
25324 /* MC_CMD_MANAGE_SECURITY_RULESET_CACHE_OUT msgresponse */
25325 #define	MC_CMD_MANAGE_SECURITY_RULESET_CACHE_OUT_LENMIN 5
25326 #define	MC_CMD_MANAGE_SECURITY_RULESET_CACHE_OUT_LENMAX 252
25327 #define	MC_CMD_MANAGE_SECURITY_RULESET_CACHE_OUT_LENMAX_MCDI2 1020
25328 #define	MC_CMD_MANAGE_SECURITY_RULESET_CACHE_OUT_LEN(num) (4+1*(num))
25329 #define	MC_CMD_MANAGE_SECURITY_RULESET_CACHE_OUT_VERSION_NUM(len) (((len)-4)/1)
25330 /* indicates whether the persistent cache is valid (after completion of the
25331  * requested operation in the case of rollback, commit, or invalidate)
25332  */
25333 #define	MC_CMD_MANAGE_SECURITY_RULESET_CACHE_OUT_STATE_OFST 0
25334 #define	MC_CMD_MANAGE_SECURITY_RULESET_CACHE_OUT_STATE_LEN 4
25335 /* enum: persistent cache is invalid (the VERSION field will be empty in this
25336  * case)
25337  */
25338 #define	MC_CMD_MANAGE_SECURITY_RULESET_CACHE_OUT_STATE_INVALID 0x0
25339 /* enum: persistent cache is valid */
25340 #define	MC_CMD_MANAGE_SECURITY_RULESET_CACHE_OUT_STATE_VALID 0x1
25341 /* cached ruleset version (after completion of the requested operation, in the
25342  * case of rollback, commit, or invalidate) as an opaque hash value in the same
25343  * form as MC_CMD_GET_SECURITY_RULESET_VERSION_OUT_VERSION
25344  */
25345 #define	MC_CMD_MANAGE_SECURITY_RULESET_CACHE_OUT_VERSION_OFST 4
25346 #define	MC_CMD_MANAGE_SECURITY_RULESET_CACHE_OUT_VERSION_LEN 1
25347 #define	MC_CMD_MANAGE_SECURITY_RULESET_CACHE_OUT_VERSION_MINNUM 1
25348 #define	MC_CMD_MANAGE_SECURITY_RULESET_CACHE_OUT_VERSION_MAXNUM 248
25349 #define	MC_CMD_MANAGE_SECURITY_RULESET_CACHE_OUT_VERSION_MAXNUM_MCDI2 1016
25350 
25351 
25352 /***********************************/
25353 /* MC_CMD_NVRAM_PRIVATE_APPEND
25354  * Append a single TLV to the MC_USAGE_TLV partition. Returns MC_CMD_ERR_EEXIST
25355  * if the tag is already present.
25356  */
25357 #define	MC_CMD_NVRAM_PRIVATE_APPEND 0x11c
25358 #define	MC_CMD_NVRAM_PRIVATE_APPEND_MSGSET 0x11c
25359 #undef	MC_CMD_0x11c_PRIVILEGE_CTG
25360 
25361 #define	MC_CMD_0x11c_PRIVILEGE_CTG SRIOV_CTG_ADMIN_TSA_UNBOUND
25362 
25363 /* MC_CMD_NVRAM_PRIVATE_APPEND_IN msgrequest */
25364 #define	MC_CMD_NVRAM_PRIVATE_APPEND_IN_LENMIN 9
25365 #define	MC_CMD_NVRAM_PRIVATE_APPEND_IN_LENMAX 252
25366 #define	MC_CMD_NVRAM_PRIVATE_APPEND_IN_LENMAX_MCDI2 1020
25367 #define	MC_CMD_NVRAM_PRIVATE_APPEND_IN_LEN(num) (8+1*(num))
25368 #define	MC_CMD_NVRAM_PRIVATE_APPEND_IN_DATA_BUFFER_NUM(len) (((len)-8)/1)
25369 /* The tag to be appended */
25370 #define	MC_CMD_NVRAM_PRIVATE_APPEND_IN_TAG_OFST 0
25371 #define	MC_CMD_NVRAM_PRIVATE_APPEND_IN_TAG_LEN 4
25372 /* The length of the data */
25373 #define	MC_CMD_NVRAM_PRIVATE_APPEND_IN_LENGTH_OFST 4
25374 #define	MC_CMD_NVRAM_PRIVATE_APPEND_IN_LENGTH_LEN 4
25375 /* The data to be contained in the TLV structure */
25376 #define	MC_CMD_NVRAM_PRIVATE_APPEND_IN_DATA_BUFFER_OFST 8
25377 #define	MC_CMD_NVRAM_PRIVATE_APPEND_IN_DATA_BUFFER_LEN 1
25378 #define	MC_CMD_NVRAM_PRIVATE_APPEND_IN_DATA_BUFFER_MINNUM 1
25379 #define	MC_CMD_NVRAM_PRIVATE_APPEND_IN_DATA_BUFFER_MAXNUM 244
25380 #define	MC_CMD_NVRAM_PRIVATE_APPEND_IN_DATA_BUFFER_MAXNUM_MCDI2 1012
25381 
25382 /* MC_CMD_NVRAM_PRIVATE_APPEND_OUT msgresponse */
25383 #define	MC_CMD_NVRAM_PRIVATE_APPEND_OUT_LEN 0
25384 
25385 
25386 /***********************************/
25387 /* MC_CMD_XPM_VERIFY_CONTENTS
25388  * Verify that the contents of the XPM memory is correct (Medford only). This
25389  * is used during manufacture to check that the XPM memory has been programmed
25390  * correctly at ATE.
25391  */
25392 #define	MC_CMD_XPM_VERIFY_CONTENTS 0x11b
25393 #define	MC_CMD_XPM_VERIFY_CONTENTS_MSGSET 0x11b
25394 #undef	MC_CMD_0x11b_PRIVILEGE_CTG
25395 
25396 #define	MC_CMD_0x11b_PRIVILEGE_CTG SRIOV_CTG_ADMIN
25397 
25398 /* MC_CMD_XPM_VERIFY_CONTENTS_IN msgrequest */
25399 #define	MC_CMD_XPM_VERIFY_CONTENTS_IN_LEN 4
25400 /* Data type to be checked */
25401 #define	MC_CMD_XPM_VERIFY_CONTENTS_IN_DATA_TYPE_OFST 0
25402 #define	MC_CMD_XPM_VERIFY_CONTENTS_IN_DATA_TYPE_LEN 4
25403 
25404 /* MC_CMD_XPM_VERIFY_CONTENTS_OUT msgresponse */
25405 #define	MC_CMD_XPM_VERIFY_CONTENTS_OUT_LENMIN 12
25406 #define	MC_CMD_XPM_VERIFY_CONTENTS_OUT_LENMAX 252
25407 #define	MC_CMD_XPM_VERIFY_CONTENTS_OUT_LENMAX_MCDI2 1020
25408 #define	MC_CMD_XPM_VERIFY_CONTENTS_OUT_LEN(num) (12+1*(num))
25409 #define	MC_CMD_XPM_VERIFY_CONTENTS_OUT_SIGNATURE_NUM(len) (((len)-12)/1)
25410 /* Number of sectors found (test builds only) */
25411 #define	MC_CMD_XPM_VERIFY_CONTENTS_OUT_NUM_SECTORS_OFST 0
25412 #define	MC_CMD_XPM_VERIFY_CONTENTS_OUT_NUM_SECTORS_LEN 4
25413 /* Number of bytes found (test builds only) */
25414 #define	MC_CMD_XPM_VERIFY_CONTENTS_OUT_NUM_BYTES_OFST 4
25415 #define	MC_CMD_XPM_VERIFY_CONTENTS_OUT_NUM_BYTES_LEN 4
25416 /* Length of signature */
25417 #define	MC_CMD_XPM_VERIFY_CONTENTS_OUT_SIG_LENGTH_OFST 8
25418 #define	MC_CMD_XPM_VERIFY_CONTENTS_OUT_SIG_LENGTH_LEN 4
25419 /* Signature */
25420 #define	MC_CMD_XPM_VERIFY_CONTENTS_OUT_SIGNATURE_OFST 12
25421 #define	MC_CMD_XPM_VERIFY_CONTENTS_OUT_SIGNATURE_LEN 1
25422 #define	MC_CMD_XPM_VERIFY_CONTENTS_OUT_SIGNATURE_MINNUM 0
25423 #define	MC_CMD_XPM_VERIFY_CONTENTS_OUT_SIGNATURE_MAXNUM 240
25424 #define	MC_CMD_XPM_VERIFY_CONTENTS_OUT_SIGNATURE_MAXNUM_MCDI2 1008
25425 
25426 
25427 /***********************************/
25428 /* MC_CMD_SET_EVQ_TMR
25429  * Update the timer load, timer reload and timer mode values for a given EVQ.
25430  * The requested timer values (in TMR_LOAD_REQ_NS and TMR_RELOAD_REQ_NS) will
25431  * be rounded up to the granularity supported by the hardware, then truncated
25432  * to the range supported by the hardware. The resulting value after the
25433  * rounding and truncation will be returned to the caller (in TMR_LOAD_ACT_NS
25434  * and TMR_RELOAD_ACT_NS).
25435  */
25436 #define	MC_CMD_SET_EVQ_TMR 0x120
25437 #define	MC_CMD_SET_EVQ_TMR_MSGSET 0x120
25438 #undef	MC_CMD_0x120_PRIVILEGE_CTG
25439 
25440 #define	MC_CMD_0x120_PRIVILEGE_CTG SRIOV_CTG_GENERAL
25441 
25442 /* MC_CMD_SET_EVQ_TMR_IN msgrequest */
25443 #define	MC_CMD_SET_EVQ_TMR_IN_LEN 16
25444 /* Function-relative queue instance */
25445 #define	MC_CMD_SET_EVQ_TMR_IN_INSTANCE_OFST 0
25446 #define	MC_CMD_SET_EVQ_TMR_IN_INSTANCE_LEN 4
25447 /* Requested value for timer load (in nanoseconds) */
25448 #define	MC_CMD_SET_EVQ_TMR_IN_TMR_LOAD_REQ_NS_OFST 4
25449 #define	MC_CMD_SET_EVQ_TMR_IN_TMR_LOAD_REQ_NS_LEN 4
25450 /* Requested value for timer reload (in nanoseconds) */
25451 #define	MC_CMD_SET_EVQ_TMR_IN_TMR_RELOAD_REQ_NS_OFST 8
25452 #define	MC_CMD_SET_EVQ_TMR_IN_TMR_RELOAD_REQ_NS_LEN 4
25453 /* Timer mode. Meanings as per EVQ_TMR_REG.TC_TIMER_VAL */
25454 #define	MC_CMD_SET_EVQ_TMR_IN_TMR_MODE_OFST 12
25455 #define	MC_CMD_SET_EVQ_TMR_IN_TMR_MODE_LEN 4
25456 #define	MC_CMD_SET_EVQ_TMR_IN_TIMER_MODE_DIS 0x0 /* enum */
25457 #define	MC_CMD_SET_EVQ_TMR_IN_TIMER_MODE_IMMED_START 0x1 /* enum */
25458 #define	MC_CMD_SET_EVQ_TMR_IN_TIMER_MODE_TRIG_START 0x2 /* enum */
25459 #define	MC_CMD_SET_EVQ_TMR_IN_TIMER_MODE_INT_HLDOFF 0x3 /* enum */
25460 
25461 /* MC_CMD_SET_EVQ_TMR_OUT msgresponse */
25462 #define	MC_CMD_SET_EVQ_TMR_OUT_LEN 8
25463 /* Actual value for timer load (in nanoseconds) */
25464 #define	MC_CMD_SET_EVQ_TMR_OUT_TMR_LOAD_ACT_NS_OFST 0
25465 #define	MC_CMD_SET_EVQ_TMR_OUT_TMR_LOAD_ACT_NS_LEN 4
25466 /* Actual value for timer reload (in nanoseconds) */
25467 #define	MC_CMD_SET_EVQ_TMR_OUT_TMR_RELOAD_ACT_NS_OFST 4
25468 #define	MC_CMD_SET_EVQ_TMR_OUT_TMR_RELOAD_ACT_NS_LEN 4
25469 
25470 
25471 /***********************************/
25472 /* MC_CMD_GET_EVQ_TMR_PROPERTIES
25473  * Query properties about the event queue timers.
25474  */
25475 #define	MC_CMD_GET_EVQ_TMR_PROPERTIES 0x122
25476 #define	MC_CMD_GET_EVQ_TMR_PROPERTIES_MSGSET 0x122
25477 #undef	MC_CMD_0x122_PRIVILEGE_CTG
25478 
25479 #define	MC_CMD_0x122_PRIVILEGE_CTG SRIOV_CTG_GENERAL
25480 
25481 /* MC_CMD_GET_EVQ_TMR_PROPERTIES_IN msgrequest */
25482 #define	MC_CMD_GET_EVQ_TMR_PROPERTIES_IN_LEN 0
25483 
25484 /* MC_CMD_GET_EVQ_TMR_PROPERTIES_OUT msgresponse */
25485 #define	MC_CMD_GET_EVQ_TMR_PROPERTIES_OUT_LEN 36
25486 /* Reserved for future use. */
25487 #define	MC_CMD_GET_EVQ_TMR_PROPERTIES_OUT_FLAGS_OFST 0
25488 #define	MC_CMD_GET_EVQ_TMR_PROPERTIES_OUT_FLAGS_LEN 4
25489 /* For timers updated via writes to EVQ_TMR_REG, this is the time interval (in
25490  * nanoseconds) for each increment of the timer load/reload count. The
25491  * requested duration of a timer is this value multiplied by the timer
25492  * load/reload count.
25493  */
25494 #define	MC_CMD_GET_EVQ_TMR_PROPERTIES_OUT_TMR_REG_NS_PER_COUNT_OFST 4
25495 #define	MC_CMD_GET_EVQ_TMR_PROPERTIES_OUT_TMR_REG_NS_PER_COUNT_LEN 4
25496 /* For timers updated via writes to EVQ_TMR_REG, this is the maximum value
25497  * allowed for timer load/reload counts.
25498  */
25499 #define	MC_CMD_GET_EVQ_TMR_PROPERTIES_OUT_TMR_REG_MAX_COUNT_OFST 8
25500 #define	MC_CMD_GET_EVQ_TMR_PROPERTIES_OUT_TMR_REG_MAX_COUNT_LEN 4
25501 /* For timers updated via writes to EVQ_TMR_REG, timer load/reload counts not a
25502  * multiple of this step size will be rounded in an implementation defined
25503  * manner.
25504  */
25505 #define	MC_CMD_GET_EVQ_TMR_PROPERTIES_OUT_TMR_REG_STEP_OFST 12
25506 #define	MC_CMD_GET_EVQ_TMR_PROPERTIES_OUT_TMR_REG_STEP_LEN 4
25507 /* Maximum timer duration (in nanoseconds) for timers updated via MCDI. Only
25508  * meaningful if MC_CMD_SET_EVQ_TMR is implemented.
25509  */
25510 #define	MC_CMD_GET_EVQ_TMR_PROPERTIES_OUT_MCDI_TMR_MAX_NS_OFST 16
25511 #define	MC_CMD_GET_EVQ_TMR_PROPERTIES_OUT_MCDI_TMR_MAX_NS_LEN 4
25512 /* Timer durations requested via MCDI that are not a multiple of this step size
25513  * will be rounded up. Only meaningful if MC_CMD_SET_EVQ_TMR is implemented.
25514  */
25515 #define	MC_CMD_GET_EVQ_TMR_PROPERTIES_OUT_MCDI_TMR_STEP_NS_OFST 20
25516 #define	MC_CMD_GET_EVQ_TMR_PROPERTIES_OUT_MCDI_TMR_STEP_NS_LEN 4
25517 /* For timers updated using the bug35388 workaround, this is the time interval
25518  * (in nanoseconds) for each increment of the timer load/reload count. The
25519  * requested duration of a timer is this value multiplied by the timer
25520  * load/reload count. This field is only meaningful if the bug35388 workaround
25521  * is enabled.
25522  */
25523 #define	MC_CMD_GET_EVQ_TMR_PROPERTIES_OUT_BUG35388_TMR_NS_PER_COUNT_OFST 24
25524 #define	MC_CMD_GET_EVQ_TMR_PROPERTIES_OUT_BUG35388_TMR_NS_PER_COUNT_LEN 4
25525 /* For timers updated using the bug35388 workaround, this is the maximum value
25526  * allowed for timer load/reload counts. This field is only meaningful if the
25527  * bug35388 workaround is enabled.
25528  */
25529 #define	MC_CMD_GET_EVQ_TMR_PROPERTIES_OUT_BUG35388_TMR_MAX_COUNT_OFST 28
25530 #define	MC_CMD_GET_EVQ_TMR_PROPERTIES_OUT_BUG35388_TMR_MAX_COUNT_LEN 4
25531 /* For timers updated using the bug35388 workaround, timer load/reload counts
25532  * not a multiple of this step size will be rounded in an implementation
25533  * defined manner. This field is only meaningful if the bug35388 workaround is
25534  * enabled.
25535  */
25536 #define	MC_CMD_GET_EVQ_TMR_PROPERTIES_OUT_BUG35388_TMR_STEP_OFST 32
25537 #define	MC_CMD_GET_EVQ_TMR_PROPERTIES_OUT_BUG35388_TMR_STEP_LEN 4
25538 
25539 
25540 /***********************************/
25541 /* MC_CMD_ALLOCATE_TX_VFIFO_CP
25542  * When we use the TX_vFIFO_ULL mode, we can allocate common pools using the
25543  * non used switch buffers.
25544  */
25545 #define	MC_CMD_ALLOCATE_TX_VFIFO_CP 0x11d
25546 #define	MC_CMD_ALLOCATE_TX_VFIFO_CP_MSGSET 0x11d
25547 #undef	MC_CMD_0x11d_PRIVILEGE_CTG
25548 
25549 #define	MC_CMD_0x11d_PRIVILEGE_CTG SRIOV_CTG_GENERAL
25550 
25551 /* MC_CMD_ALLOCATE_TX_VFIFO_CP_IN msgrequest */
25552 #define	MC_CMD_ALLOCATE_TX_VFIFO_CP_IN_LEN 20
25553 /* Desired instance. Must be set to a specific instance, which is a function
25554  * local queue index. The calling client must be the currently-assigned user of
25555  * this VI (see MC_CMD_SET_VI_USER).
25556  */
25557 #define	MC_CMD_ALLOCATE_TX_VFIFO_CP_IN_INSTANCE_OFST 0
25558 #define	MC_CMD_ALLOCATE_TX_VFIFO_CP_IN_INSTANCE_LEN 4
25559 /* Will the common pool be used as TX_vFIFO_ULL (1) */
25560 #define	MC_CMD_ALLOCATE_TX_VFIFO_CP_IN_MODE_OFST 4
25561 #define	MC_CMD_ALLOCATE_TX_VFIFO_CP_IN_MODE_LEN 4
25562 #define	MC_CMD_ALLOCATE_TX_VFIFO_CP_IN_ENABLED 0x1 /* enum */
25563 /* enum: Using this interface without TX_vFIFO_ULL is not supported for now */
25564 #define	MC_CMD_ALLOCATE_TX_VFIFO_CP_IN_DISABLED 0x0
25565 /* Number of buffers to reserve for the common pool */
25566 #define	MC_CMD_ALLOCATE_TX_VFIFO_CP_IN_SIZE_OFST 8
25567 #define	MC_CMD_ALLOCATE_TX_VFIFO_CP_IN_SIZE_LEN 4
25568 /* TX datapath to which the Common Pool is connected to. */
25569 #define	MC_CMD_ALLOCATE_TX_VFIFO_CP_IN_INGRESS_OFST 12
25570 #define	MC_CMD_ALLOCATE_TX_VFIFO_CP_IN_INGRESS_LEN 4
25571 /* enum: Extracts information from function */
25572 #define	MC_CMD_ALLOCATE_TX_VFIFO_CP_IN_USE_FUNCTION_VALUE -0x1
25573 /* Network port or RX Engine to which the common pool connects. */
25574 #define	MC_CMD_ALLOCATE_TX_VFIFO_CP_IN_EGRESS_OFST 16
25575 #define	MC_CMD_ALLOCATE_TX_VFIFO_CP_IN_EGRESS_LEN 4
25576 /* enum: Extracts information from function */
25577 /*               MC_CMD_ALLOCATE_TX_VFIFO_CP_IN_USE_FUNCTION_VALUE -0x1 */
25578 #define	MC_CMD_ALLOCATE_TX_VFIFO_CP_IN_PORT0 0x0 /* enum */
25579 #define	MC_CMD_ALLOCATE_TX_VFIFO_CP_IN_PORT1 0x1 /* enum */
25580 #define	MC_CMD_ALLOCATE_TX_VFIFO_CP_IN_PORT2 0x2 /* enum */
25581 #define	MC_CMD_ALLOCATE_TX_VFIFO_CP_IN_PORT3 0x3 /* enum */
25582 /* enum: To enable Switch loopback with Rx engine 0 */
25583 #define	MC_CMD_ALLOCATE_TX_VFIFO_CP_IN_RX_ENGINE0 0x4
25584 /* enum: To enable Switch loopback with Rx engine 1 */
25585 #define	MC_CMD_ALLOCATE_TX_VFIFO_CP_IN_RX_ENGINE1 0x5
25586 
25587 /* MC_CMD_ALLOCATE_TX_VFIFO_CP_OUT msgresponse */
25588 #define	MC_CMD_ALLOCATE_TX_VFIFO_CP_OUT_LEN 4
25589 /* ID of the common pool allocated */
25590 #define	MC_CMD_ALLOCATE_TX_VFIFO_CP_OUT_CP_ID_OFST 0
25591 #define	MC_CMD_ALLOCATE_TX_VFIFO_CP_OUT_CP_ID_LEN 4
25592 
25593 
25594 /***********************************/
25595 /* MC_CMD_ALLOCATE_TX_VFIFO_VFIFO
25596  * When we use the TX_vFIFO_ULL mode, we can allocate vFIFOs using the
25597  * previously allocated common pools.
25598  */
25599 #define	MC_CMD_ALLOCATE_TX_VFIFO_VFIFO 0x11e
25600 #define	MC_CMD_ALLOCATE_TX_VFIFO_VFIFO_MSGSET 0x11e
25601 #undef	MC_CMD_0x11e_PRIVILEGE_CTG
25602 
25603 #define	MC_CMD_0x11e_PRIVILEGE_CTG SRIOV_CTG_GENERAL
25604 
25605 /* MC_CMD_ALLOCATE_TX_VFIFO_VFIFO_IN msgrequest */
25606 #define	MC_CMD_ALLOCATE_TX_VFIFO_VFIFO_IN_LEN 20
25607 /* Common pool previously allocated to which the new vFIFO will be associated
25608  */
25609 #define	MC_CMD_ALLOCATE_TX_VFIFO_VFIFO_IN_CP_OFST 0
25610 #define	MC_CMD_ALLOCATE_TX_VFIFO_VFIFO_IN_CP_LEN 4
25611 /* Port or RX engine to associate the vFIFO egress */
25612 #define	MC_CMD_ALLOCATE_TX_VFIFO_VFIFO_IN_EGRESS_OFST 4
25613 #define	MC_CMD_ALLOCATE_TX_VFIFO_VFIFO_IN_EGRESS_LEN 4
25614 /* enum: Extracts information from common pool */
25615 #define	MC_CMD_ALLOCATE_TX_VFIFO_VFIFO_IN_USE_CP_VALUE -0x1
25616 #define	MC_CMD_ALLOCATE_TX_VFIFO_VFIFO_IN_PORT0 0x0 /* enum */
25617 #define	MC_CMD_ALLOCATE_TX_VFIFO_VFIFO_IN_PORT1 0x1 /* enum */
25618 #define	MC_CMD_ALLOCATE_TX_VFIFO_VFIFO_IN_PORT2 0x2 /* enum */
25619 #define	MC_CMD_ALLOCATE_TX_VFIFO_VFIFO_IN_PORT3 0x3 /* enum */
25620 /* enum: To enable Switch loopback with Rx engine 0 */
25621 #define	MC_CMD_ALLOCATE_TX_VFIFO_VFIFO_IN_RX_ENGINE0 0x4
25622 /* enum: To enable Switch loopback with Rx engine 1 */
25623 #define	MC_CMD_ALLOCATE_TX_VFIFO_VFIFO_IN_RX_ENGINE1 0x5
25624 /* Minimum number of buffers that the pool must have */
25625 #define	MC_CMD_ALLOCATE_TX_VFIFO_VFIFO_IN_SIZE_OFST 8
25626 #define	MC_CMD_ALLOCATE_TX_VFIFO_VFIFO_IN_SIZE_LEN 4
25627 /* enum: Do not check the space available */
25628 #define	MC_CMD_ALLOCATE_TX_VFIFO_VFIFO_IN_NO_MINIMUM 0x0
25629 /* Will the vFIFO be used as TX_vFIFO_ULL */
25630 #define	MC_CMD_ALLOCATE_TX_VFIFO_VFIFO_IN_MODE_OFST 12
25631 #define	MC_CMD_ALLOCATE_TX_VFIFO_VFIFO_IN_MODE_LEN 4
25632 /* Network priority of the vFIFO,if applicable */
25633 #define	MC_CMD_ALLOCATE_TX_VFIFO_VFIFO_IN_PRIORITY_OFST 16
25634 #define	MC_CMD_ALLOCATE_TX_VFIFO_VFIFO_IN_PRIORITY_LEN 4
25635 /* enum: Search for the lowest unused priority */
25636 #define	MC_CMD_ALLOCATE_TX_VFIFO_VFIFO_IN_LOWEST_AVAILABLE -0x1
25637 
25638 /* MC_CMD_ALLOCATE_TX_VFIFO_VFIFO_OUT msgresponse */
25639 #define	MC_CMD_ALLOCATE_TX_VFIFO_VFIFO_OUT_LEN 8
25640 /* Short vFIFO ID */
25641 #define	MC_CMD_ALLOCATE_TX_VFIFO_VFIFO_OUT_VID_OFST 0
25642 #define	MC_CMD_ALLOCATE_TX_VFIFO_VFIFO_OUT_VID_LEN 4
25643 /* Network priority of the vFIFO */
25644 #define	MC_CMD_ALLOCATE_TX_VFIFO_VFIFO_OUT_PRIORITY_OFST 4
25645 #define	MC_CMD_ALLOCATE_TX_VFIFO_VFIFO_OUT_PRIORITY_LEN 4
25646 
25647 
25648 /***********************************/
25649 /* MC_CMD_TEARDOWN_TX_VFIFO_VF
25650  * This interface clears the configuration of the given vFIFO and leaves it
25651  * ready to be re-used.
25652  */
25653 #define	MC_CMD_TEARDOWN_TX_VFIFO_VF 0x11f
25654 #define	MC_CMD_TEARDOWN_TX_VFIFO_VF_MSGSET 0x11f
25655 #undef	MC_CMD_0x11f_PRIVILEGE_CTG
25656 
25657 #define	MC_CMD_0x11f_PRIVILEGE_CTG SRIOV_CTG_GENERAL
25658 
25659 /* MC_CMD_TEARDOWN_TX_VFIFO_VF_IN msgrequest */
25660 #define	MC_CMD_TEARDOWN_TX_VFIFO_VF_IN_LEN 4
25661 /* Short vFIFO ID */
25662 #define	MC_CMD_TEARDOWN_TX_VFIFO_VF_IN_VFIFO_OFST 0
25663 #define	MC_CMD_TEARDOWN_TX_VFIFO_VF_IN_VFIFO_LEN 4
25664 
25665 /* MC_CMD_TEARDOWN_TX_VFIFO_VF_OUT msgresponse */
25666 #define	MC_CMD_TEARDOWN_TX_VFIFO_VF_OUT_LEN 0
25667 
25668 
25669 /***********************************/
25670 /* MC_CMD_DEALLOCATE_TX_VFIFO_CP
25671  * This interface clears the configuration of the given common pool and leaves
25672  * it ready to be re-used.
25673  */
25674 #define	MC_CMD_DEALLOCATE_TX_VFIFO_CP 0x121
25675 #define	MC_CMD_DEALLOCATE_TX_VFIFO_CP_MSGSET 0x121
25676 #undef	MC_CMD_0x121_PRIVILEGE_CTG
25677 
25678 #define	MC_CMD_0x121_PRIVILEGE_CTG SRIOV_CTG_GENERAL
25679 
25680 /* MC_CMD_DEALLOCATE_TX_VFIFO_CP_IN msgrequest */
25681 #define	MC_CMD_DEALLOCATE_TX_VFIFO_CP_IN_LEN 4
25682 /* Common pool ID given when pool allocated */
25683 #define	MC_CMD_DEALLOCATE_TX_VFIFO_CP_IN_POOL_ID_OFST 0
25684 #define	MC_CMD_DEALLOCATE_TX_VFIFO_CP_IN_POOL_ID_LEN 4
25685 
25686 /* MC_CMD_DEALLOCATE_TX_VFIFO_CP_OUT msgresponse */
25687 #define	MC_CMD_DEALLOCATE_TX_VFIFO_CP_OUT_LEN 0
25688 
25689 
25690 /***********************************/
25691 /* MC_CMD_REKEY
25692  * This request causes the NIC to generate a new per-NIC key and program it
25693  * into the write-once memory. During the process all flash partitions that are
25694  * protected with a CMAC are verified with the old per-NIC key and then signed
25695  * with the new per-NIC key. If the NIC has already reached its rekey limit the
25696  * REKEY op will return MC_CMD_ERR_ERANGE. The REKEY op may block until
25697  * completion or it may return 0 and continue processing, therefore the caller
25698  * must poll at least once to confirm that the rekeying has completed. The POLL
25699  * operation returns MC_CMD_ERR_EBUSY if the rekey process is still running
25700  * otherwise it will return the result of the last completed rekey operation,
25701  * or 0 if there has not been a previous rekey.
25702  */
25703 #define	MC_CMD_REKEY 0x123
25704 #define	MC_CMD_REKEY_MSGSET 0x123
25705 #undef	MC_CMD_0x123_PRIVILEGE_CTG
25706 
25707 #define	MC_CMD_0x123_PRIVILEGE_CTG SRIOV_CTG_ADMIN_TSA_UNBOUND
25708 
25709 /* MC_CMD_REKEY_IN msgrequest */
25710 #define	MC_CMD_REKEY_IN_LEN 4
25711 /* the type of operation requested */
25712 #define	MC_CMD_REKEY_IN_OP_OFST 0
25713 #define	MC_CMD_REKEY_IN_OP_LEN 4
25714 /* enum: Start the rekeying operation */
25715 #define	MC_CMD_REKEY_IN_OP_REKEY 0x0
25716 /* enum: Poll for completion of the rekeying operation */
25717 #define	MC_CMD_REKEY_IN_OP_POLL 0x1
25718 
25719 /* MC_CMD_REKEY_OUT msgresponse */
25720 #define	MC_CMD_REKEY_OUT_LEN 0
25721 
25722 
25723 /***********************************/
25724 /* MC_CMD_SWITCH_GET_UNASSIGNED_BUFFERS
25725  * This interface allows the host to find out how many common pool buffers are
25726  * not yet assigned.
25727  */
25728 #define	MC_CMD_SWITCH_GET_UNASSIGNED_BUFFERS 0x124
25729 #define	MC_CMD_SWITCH_GET_UNASSIGNED_BUFFERS_MSGSET 0x124
25730 #undef	MC_CMD_0x124_PRIVILEGE_CTG
25731 
25732 #define	MC_CMD_0x124_PRIVILEGE_CTG SRIOV_CTG_GENERAL
25733 
25734 /* MC_CMD_SWITCH_GET_UNASSIGNED_BUFFERS_IN msgrequest */
25735 #define	MC_CMD_SWITCH_GET_UNASSIGNED_BUFFERS_IN_LEN 0
25736 
25737 /* MC_CMD_SWITCH_GET_UNASSIGNED_BUFFERS_OUT msgresponse */
25738 #define	MC_CMD_SWITCH_GET_UNASSIGNED_BUFFERS_OUT_LEN 8
25739 /* Available buffers for the ENG to NET vFIFOs. */
25740 #define	MC_CMD_SWITCH_GET_UNASSIGNED_BUFFERS_OUT_NET_OFST 0
25741 #define	MC_CMD_SWITCH_GET_UNASSIGNED_BUFFERS_OUT_NET_LEN 4
25742 /* Available buffers for the ENG to ENG and NET to ENG vFIFOs. */
25743 #define	MC_CMD_SWITCH_GET_UNASSIGNED_BUFFERS_OUT_ENG_OFST 4
25744 #define	MC_CMD_SWITCH_GET_UNASSIGNED_BUFFERS_OUT_ENG_LEN 4
25745 
25746 
25747 /***********************************/
25748 /* MC_CMD_SET_SECURITY_FUSES
25749  * Change the security level of the adapter by setting bits in the write-once
25750  * memory. The firmware maps each flag in the message to a set of one or more
25751  * hardware-defined or software-defined bits and sets these bits in the write-
25752  * once memory. For Medford the hardware-defined bits are defined in
25753  * SF-112079-PS 5.3, the software-defined bits are defined in xpm.h. Returns 0
25754  * if all of the required bits were set and returns MC_CMD_ERR_EIO if any of
25755  * the required bits were not set.
25756  */
25757 #define	MC_CMD_SET_SECURITY_FUSES 0x126
25758 #define	MC_CMD_SET_SECURITY_FUSES_MSGSET 0x126
25759 #undef	MC_CMD_0x126_PRIVILEGE_CTG
25760 
25761 #define	MC_CMD_0x126_PRIVILEGE_CTG SRIOV_CTG_ADMIN_TSA_UNBOUND
25762 
25763 /* MC_CMD_SET_SECURITY_FUSES_IN msgrequest */
25764 #define	MC_CMD_SET_SECURITY_FUSES_IN_LEN 4
25765 /* Flags specifying what type of security features are being set */
25766 #define	MC_CMD_SET_SECURITY_FUSES_IN_FLAGS_OFST 0
25767 #define	MC_CMD_SET_SECURITY_FUSES_IN_FLAGS_LEN 4
25768 #define	MC_CMD_SET_SECURITY_FUSES_IN_SECURE_BOOT_OFST 0
25769 #define	MC_CMD_SET_SECURITY_FUSES_IN_SECURE_BOOT_LBN 0
25770 #define	MC_CMD_SET_SECURITY_FUSES_IN_SECURE_BOOT_WIDTH 1
25771 #define	MC_CMD_SET_SECURITY_FUSES_IN_REJECT_TEST_SIGNED_OFST 0
25772 #define	MC_CMD_SET_SECURITY_FUSES_IN_REJECT_TEST_SIGNED_LBN 1
25773 #define	MC_CMD_SET_SECURITY_FUSES_IN_REJECT_TEST_SIGNED_WIDTH 1
25774 #define	MC_CMD_SET_SECURITY_FUSES_IN_SOFT_CONFIG_OFST 0
25775 #define	MC_CMD_SET_SECURITY_FUSES_IN_SOFT_CONFIG_LBN 31
25776 #define	MC_CMD_SET_SECURITY_FUSES_IN_SOFT_CONFIG_WIDTH 1
25777 
25778 /* MC_CMD_SET_SECURITY_FUSES_OUT msgresponse */
25779 #define	MC_CMD_SET_SECURITY_FUSES_OUT_LEN 0
25780 
25781 /* MC_CMD_SET_SECURITY_FUSES_V2_OUT msgresponse */
25782 #define	MC_CMD_SET_SECURITY_FUSES_V2_OUT_LEN 4
25783 /* Flags specifying which security features are enforced on the NIC after the
25784  * flags in the request have been applied. See
25785  * MC_CMD_SET_SECURITY_FUSES_IN/FLAGS for flag definitions.
25786  */
25787 #define	MC_CMD_SET_SECURITY_FUSES_V2_OUT_FLAGS_OFST 0
25788 #define	MC_CMD_SET_SECURITY_FUSES_V2_OUT_FLAGS_LEN 4
25789 
25790 
25791 /***********************************/
25792 /* MC_CMD_TSA_INFO
25793  * Messages sent from TSA adapter to TSA controller. This command is only valid
25794  * when the MCDI header has MESSAGE_TYPE set to MCDI_MESSAGE_TYPE_TSA. This
25795  * command is not sent by the driver to the MC; it is sent from the MC to a TSA
25796  * controller, being treated more like an alert message rather than a command;
25797  * hence the MC does not expect a response in return. Doxbox reference
25798  * SF-117371-SW
25799  */
25800 #define	MC_CMD_TSA_INFO 0x127
25801 #define	MC_CMD_TSA_INFO_MSGSET 0x127
25802 #undef	MC_CMD_0x127_PRIVILEGE_CTG
25803 
25804 #define	MC_CMD_0x127_PRIVILEGE_CTG SRIOV_CTG_ADMIN_TSA_UNBOUND
25805 
25806 /* MC_CMD_TSA_INFO_IN msgrequest */
25807 #define	MC_CMD_TSA_INFO_IN_LEN 4
25808 #define	MC_CMD_TSA_INFO_IN_OP_HDR_OFST 0
25809 #define	MC_CMD_TSA_INFO_IN_OP_HDR_LEN 4
25810 #define	MC_CMD_TSA_INFO_IN_OP_OFST 0
25811 #define	MC_CMD_TSA_INFO_IN_OP_LBN 0
25812 #define	MC_CMD_TSA_INFO_IN_OP_WIDTH 16
25813 /* enum: Information about recently discovered local IP address of the adapter
25814  */
25815 #define	MC_CMD_TSA_INFO_OP_LOCAL_IP 0x1
25816 /* enum: Information about a sampled packet that either - did not match any
25817  * black/white-list filters and was allowed by the default filter or - did not
25818  * match any black/white-list filters and was denied by the default filter
25819  */
25820 #define	MC_CMD_TSA_INFO_OP_PKT_SAMPLE 0x2
25821 /* enum: Information about an unbind or decommission attempt. */
25822 #define	MC_CMD_TSA_INFO_OP_UNBIND 0x3
25823 
25824 /* MC_CMD_TSA_INFO_IN_LOCAL_IP msgrequest:
25825  *
25826  * The TSA controller maintains a list of IP addresses valid for each port of a
25827  * TSA adapter. The TSA controller requires information from the adapter
25828  * inorder to learn new IP addresses assigned to a physical port and to
25829  * identify those that are no longer assigned to the physical port. For this
25830  * purpose, the TSA adapter snoops ARP replys, gratuitous ARP requests and ARP
25831  * probe packets seen on each physical port. This definition describes the
25832  * format of the notification message sent from a TSA adapter to a TSA
25833  * controller related to any information related to a change in IP address
25834  * assignment for a port. Doxbox reference SF-117371.
25835  *
25836  * There may be a possibility of combining multiple notifications in a single
25837  * message in future. When that happens, a new flag can be defined using the
25838  * reserved bits to describe the extended format of this notification.
25839  */
25840 #define	MC_CMD_TSA_INFO_IN_LOCAL_IP_LEN 18
25841 #define	MC_CMD_TSA_INFO_IN_LOCAL_IP_OP_HDR_OFST 0
25842 #define	MC_CMD_TSA_INFO_IN_LOCAL_IP_OP_HDR_LEN 4
25843 /* Additional metadata describing the IP address information such as source of
25844  * information retrieval, type of IP address, physical port number.
25845  */
25846 #define	MC_CMD_TSA_INFO_IN_LOCAL_IP_META_OFST 4
25847 #define	MC_CMD_TSA_INFO_IN_LOCAL_IP_META_LEN 4
25848 #define	MC_CMD_TSA_INFO_IN_LOCAL_IP_META_PORT_INDEX_OFST 4
25849 #define	MC_CMD_TSA_INFO_IN_LOCAL_IP_META_PORT_INDEX_LBN 0
25850 #define	MC_CMD_TSA_INFO_IN_LOCAL_IP_META_PORT_INDEX_WIDTH 8
25851 #define	MC_CMD_TSA_INFO_IN_LOCAL_IP_RESERVED_OFST 4
25852 #define	MC_CMD_TSA_INFO_IN_LOCAL_IP_RESERVED_LBN 8
25853 #define	MC_CMD_TSA_INFO_IN_LOCAL_IP_RESERVED_WIDTH 8
25854 #define	MC_CMD_TSA_INFO_IN_LOCAL_IP_META_REASON_OFST 4
25855 #define	MC_CMD_TSA_INFO_IN_LOCAL_IP_META_REASON_LBN 16
25856 #define	MC_CMD_TSA_INFO_IN_LOCAL_IP_META_REASON_WIDTH 8
25857 /* enum: ARP reply sent out of the physical port */
25858 #define	MC_CMD_TSA_INFO_IP_REASON_TX_ARP 0x0
25859 /* enum: ARP probe packet received on the physical port */
25860 #define	MC_CMD_TSA_INFO_IP_REASON_RX_ARP_PROBE 0x1
25861 /* enum: Gratuitous ARP packet received on the physical port */
25862 #define	MC_CMD_TSA_INFO_IP_REASON_RX_GRATUITOUS_ARP 0x2
25863 /* enum: DHCP ACK packet received on the physical port */
25864 #define	MC_CMD_TSA_INFO_IP_REASON_RX_DHCP_ACK 0x3
25865 #define	MC_CMD_TSA_INFO_IN_LOCAL_IP_META_IPV4_OFST 4
25866 #define	MC_CMD_TSA_INFO_IN_LOCAL_IP_META_IPV4_LBN 24
25867 #define	MC_CMD_TSA_INFO_IN_LOCAL_IP_META_IPV4_WIDTH 1
25868 #define	MC_CMD_TSA_INFO_IN_LOCAL_IP_RESERVED1_OFST 4
25869 #define	MC_CMD_TSA_INFO_IN_LOCAL_IP_RESERVED1_LBN 25
25870 #define	MC_CMD_TSA_INFO_IN_LOCAL_IP_RESERVED1_WIDTH 7
25871 /* IPV4 address retrieved from the sampled packets. This field is relevant only
25872  * when META_IPV4 is set to 1.
25873  */
25874 #define	MC_CMD_TSA_INFO_IN_LOCAL_IP_IPV4_ADDR_OFST 8
25875 #define	MC_CMD_TSA_INFO_IN_LOCAL_IP_IPV4_ADDR_LEN 4
25876 /* Target MAC address retrieved from the sampled packet. */
25877 #define	MC_CMD_TSA_INFO_IN_LOCAL_IP_MAC_ADDR_OFST 12
25878 #define	MC_CMD_TSA_INFO_IN_LOCAL_IP_MAC_ADDR_LEN 1
25879 #define	MC_CMD_TSA_INFO_IN_LOCAL_IP_MAC_ADDR_NUM 6
25880 
25881 /* MC_CMD_TSA_INFO_IN_PKT_SAMPLE msgrequest:
25882  *
25883  * It is desireable for the TSA controller to learn the traffic pattern of
25884  * packets seen at the network port being monitored. In order to learn about
25885  * the traffic pattern, the TSA controller may want to sample packets seen at
25886  * the network port. Based on the packet samples that the TSA controller
25887  * receives from the adapter, the controller may choose to configure additional
25888  * black-list or white-list rules to allow or block packets as required.
25889  *
25890  * Although the entire sampled packet as seen on the network port is available
25891  * to the MC the length of sampled packet sent to controller is restricted by
25892  * MCDI payload size. Besides, the TSA controller does not require the entire
25893  * packet to make decisions about filter updates. Hence the packet sample being
25894  * passed to the controller is truncated to 128 bytes. This length is large
25895  * enough to hold the ethernet header, IP header and maximum length of
25896  * supported L4 protocol headers (IPv4 only, but can hold IPv6 header too, if
25897  * required in future).
25898  *
25899  * The intention is that any future changes to this message format that are not
25900  * backwards compatible will be defined with a new operation code.
25901  */
25902 #define	MC_CMD_TSA_INFO_IN_PKT_SAMPLE_LEN 136
25903 #define	MC_CMD_TSA_INFO_IN_PKT_SAMPLE_OP_HDR_OFST 0
25904 #define	MC_CMD_TSA_INFO_IN_PKT_SAMPLE_OP_HDR_LEN 4
25905 /* Additional metadata describing the sampled packet */
25906 #define	MC_CMD_TSA_INFO_IN_PKT_SAMPLE_META_OFST 4
25907 #define	MC_CMD_TSA_INFO_IN_PKT_SAMPLE_META_LEN 4
25908 #define	MC_CMD_TSA_INFO_IN_PKT_SAMPLE_META_PORT_INDEX_OFST 4
25909 #define	MC_CMD_TSA_INFO_IN_PKT_SAMPLE_META_PORT_INDEX_LBN 0
25910 #define	MC_CMD_TSA_INFO_IN_PKT_SAMPLE_META_PORT_INDEX_WIDTH 8
25911 #define	MC_CMD_TSA_INFO_IN_PKT_SAMPLE_META_DIRECTION_OFST 4
25912 #define	MC_CMD_TSA_INFO_IN_PKT_SAMPLE_META_DIRECTION_LBN 8
25913 #define	MC_CMD_TSA_INFO_IN_PKT_SAMPLE_META_DIRECTION_WIDTH 1
25914 #define	MC_CMD_TSA_INFO_IN_PKT_SAMPLE_RESERVED_OFST 4
25915 #define	MC_CMD_TSA_INFO_IN_PKT_SAMPLE_RESERVED_LBN 9
25916 #define	MC_CMD_TSA_INFO_IN_PKT_SAMPLE_RESERVED_WIDTH 7
25917 #define	MC_CMD_TSA_INFO_IN_PKT_SAMPLE_META_ACTION_MASK_OFST 4
25918 #define	MC_CMD_TSA_INFO_IN_PKT_SAMPLE_META_ACTION_MASK_LBN 16
25919 #define	MC_CMD_TSA_INFO_IN_PKT_SAMPLE_META_ACTION_MASK_WIDTH 4
25920 #define	MC_CMD_TSA_INFO_IN_PKT_SAMPLE_META_ACTION_ALLOW_OFST 4
25921 #define	MC_CMD_TSA_INFO_IN_PKT_SAMPLE_META_ACTION_ALLOW_LBN 16
25922 #define	MC_CMD_TSA_INFO_IN_PKT_SAMPLE_META_ACTION_ALLOW_WIDTH 1
25923 #define	MC_CMD_TSA_INFO_IN_PKT_SAMPLE_META_ACTION_DENY_OFST 4
25924 #define	MC_CMD_TSA_INFO_IN_PKT_SAMPLE_META_ACTION_DENY_LBN 17
25925 #define	MC_CMD_TSA_INFO_IN_PKT_SAMPLE_META_ACTION_DENY_WIDTH 1
25926 #define	MC_CMD_TSA_INFO_IN_PKT_SAMPLE_META_ACTION_COUNT_OFST 4
25927 #define	MC_CMD_TSA_INFO_IN_PKT_SAMPLE_META_ACTION_COUNT_LBN 18
25928 #define	MC_CMD_TSA_INFO_IN_PKT_SAMPLE_META_ACTION_COUNT_WIDTH 1
25929 /* 128-byte raw prefix of the sampled packet which includes the ethernet
25930  * header, IP header and L4 protocol header (only IPv4 supported initially).
25931  * This provides the controller enough information about the packet sample to
25932  * report traffic patterns seen on a network port and to make decisions
25933  * concerning rule-set updates.
25934  */
25935 #define	MC_CMD_TSA_INFO_IN_PKT_SAMPLE_PACKET_DATA_OFST 8
25936 #define	MC_CMD_TSA_INFO_IN_PKT_SAMPLE_PACKET_DATA_LEN 1
25937 #define	MC_CMD_TSA_INFO_IN_PKT_SAMPLE_PACKET_DATA_NUM 128
25938 
25939 /* MC_CMD_TSA_INFO_IN_UNBIND msgrequest: Information about an unbind or
25940  * decommission attempt. The purpose of this event is to let the controller
25941  * know about unbind and decommission attempts (both successful and failed)
25942  * received from the adapter host. The event is not sent if the unbind or
25943  * decommission request was received from the controller.
25944  */
25945 #define	MC_CMD_TSA_INFO_IN_UNBIND_LEN 12
25946 #define	MC_CMD_TSA_INFO_IN_UNBIND_OP_HDR_OFST 0
25947 #define	MC_CMD_TSA_INFO_IN_UNBIND_OP_HDR_LEN 4
25948 #define	MC_CMD_TSA_INFO_IN_UNBIND_OP_OFST 0
25949 #define	MC_CMD_TSA_INFO_IN_UNBIND_OP_LBN 0
25950 #define	MC_CMD_TSA_INFO_IN_UNBIND_OP_WIDTH 16
25951 /* Type of the unbind attempt. */
25952 #define	MC_CMD_TSA_INFO_IN_UNBIND_TYPE_OFST 4
25953 #define	MC_CMD_TSA_INFO_IN_UNBIND_TYPE_LEN 4
25954 /* enum: This event is sent because MC_CMD_TSA_BIND_OP_SECURE_UNBIND was
25955  * received from the adapter local host.
25956  */
25957 #define	MC_CMD_TSA_INFO_UNBIND_TYPE_SECURE_UNBIND 0x1
25958 /* enum: This event is sent because MC_CMD_TSA_BIND_OP_SECURE_DECOMMISSION was
25959  * received from the adapter local host.
25960  */
25961 #define	MC_CMD_TSA_INFO_UNBIND_TYPE_SECURE_DECOMMISSION 0x2
25962 /* Result of the attempt. */
25963 #define	MC_CMD_TSA_INFO_IN_UNBIND_RESULT_OFST 8
25964 #define	MC_CMD_TSA_INFO_IN_UNBIND_RESULT_LEN 4
25965 /*            Enum values, see field(s): */
25966 /*               MC_CMD_TSA_BIND/MC_CMD_TSA_BIND_OUT_SECURE_UNBIND/RESULT */
25967 
25968 /* MC_CMD_TSA_INFO_OUT msgresponse */
25969 #define	MC_CMD_TSA_INFO_OUT_LEN 0
25970 
25971 
25972 /***********************************/
25973 /* MC_CMD_HOST_INFO
25974  * Commands to appply or retrieve host-related information from an adapter.
25975  * Doxbox reference SF-117371-SW
25976  */
25977 #define	MC_CMD_HOST_INFO 0x128
25978 #define	MC_CMD_HOST_INFO_MSGSET 0x128
25979 #undef	MC_CMD_0x128_PRIVILEGE_CTG
25980 
25981 #define	MC_CMD_0x128_PRIVILEGE_CTG SRIOV_CTG_ADMIN
25982 
25983 /* MC_CMD_HOST_INFO_IN msgrequest */
25984 #define	MC_CMD_HOST_INFO_IN_LEN 4
25985 /* sub-operation code info */
25986 #define	MC_CMD_HOST_INFO_IN_OP_HDR_OFST 0
25987 #define	MC_CMD_HOST_INFO_IN_OP_HDR_LEN 4
25988 #define	MC_CMD_HOST_INFO_IN_OP_OFST 0
25989 #define	MC_CMD_HOST_INFO_IN_OP_LBN 0
25990 #define	MC_CMD_HOST_INFO_IN_OP_WIDTH 16
25991 /* enum: Read a 16-byte unique host identifier from the adapter. This UUID
25992  * helps to identify the host that an adapter is plugged into. This identifier
25993  * is ideally the system UUID retrieved and set by the UEFI driver. If the UEFI
25994  * driver is unable to extract the system UUID, it would still set a random
25995  * 16-byte value into each supported SF adapter plugged into it. Host UUIDs may
25996  * change if the system is power-cycled, however, they persist across adapter
25997  * resets. If the host UUID was not set on an adapter, due to an unsupported
25998  * version of UEFI driver, then this command returns an error. Doxbox reference
25999  * - SF-117371-SW section 'Host UUID'.
26000  */
26001 #define	MC_CMD_HOST_INFO_OP_GET_UUID 0x0
26002 /* enum: Set a 16-byte unique host identifier on the adapter to identify the
26003  * host that the adapter is plugged into. See MC_CMD_HOST_INFO_OP_GET_UUID for
26004  * further details.
26005  */
26006 #define	MC_CMD_HOST_INFO_OP_SET_UUID 0x1
26007 
26008 /* MC_CMD_HOST_INFO_IN_GET_UUID msgrequest */
26009 #define	MC_CMD_HOST_INFO_IN_GET_UUID_LEN 4
26010 /* sub-operation code info */
26011 #define	MC_CMD_HOST_INFO_IN_GET_UUID_OP_HDR_OFST 0
26012 #define	MC_CMD_HOST_INFO_IN_GET_UUID_OP_HDR_LEN 4
26013 
26014 /* MC_CMD_HOST_INFO_OUT_GET_UUID msgresponse */
26015 #define	MC_CMD_HOST_INFO_OUT_GET_UUID_LEN 16
26016 /* 16-byte host UUID read out of the adapter. See MC_CMD_HOST_INFO_OP_GET_UUID
26017  * for further details.
26018  */
26019 #define	MC_CMD_HOST_INFO_OUT_GET_UUID_HOST_UUID_OFST 0
26020 #define	MC_CMD_HOST_INFO_OUT_GET_UUID_HOST_UUID_LEN 1
26021 #define	MC_CMD_HOST_INFO_OUT_GET_UUID_HOST_UUID_NUM 16
26022 
26023 /* MC_CMD_HOST_INFO_IN_SET_UUID msgrequest */
26024 #define	MC_CMD_HOST_INFO_IN_SET_UUID_LEN 20
26025 /* sub-operation code info */
26026 #define	MC_CMD_HOST_INFO_IN_SET_UUID_OP_HDR_OFST 0
26027 #define	MC_CMD_HOST_INFO_IN_SET_UUID_OP_HDR_LEN 4
26028 /* 16-byte host UUID set on the adapter. See MC_CMD_HOST_INFO_OP_GET_UUID for
26029  * further details.
26030  */
26031 #define	MC_CMD_HOST_INFO_IN_SET_UUID_HOST_UUID_OFST 4
26032 #define	MC_CMD_HOST_INFO_IN_SET_UUID_HOST_UUID_LEN 1
26033 #define	MC_CMD_HOST_INFO_IN_SET_UUID_HOST_UUID_NUM 16
26034 
26035 /* MC_CMD_HOST_INFO_OUT_SET_UUID msgresponse */
26036 #define	MC_CMD_HOST_INFO_OUT_SET_UUID_LEN 0
26037 
26038 
26039 /***********************************/
26040 /* MC_CMD_TSAN_INFO
26041  * Get TSA adapter information. TSA controllers query each TSA adapter to learn
26042  * some configuration parameters of each adapter. Doxbox reference SF-117371-SW
26043  * section 'Adapter Information'
26044  */
26045 #define	MC_CMD_TSAN_INFO 0x129
26046 #define	MC_CMD_TSAN_INFO_MSGSET 0x129
26047 #undef	MC_CMD_0x129_PRIVILEGE_CTG
26048 
26049 #define	MC_CMD_0x129_PRIVILEGE_CTG SRIOV_CTG_ADMIN
26050 
26051 /* MC_CMD_TSAN_INFO_IN msgrequest */
26052 #define	MC_CMD_TSAN_INFO_IN_LEN 4
26053 /* sub-operation code info */
26054 #define	MC_CMD_TSAN_INFO_IN_OP_HDR_OFST 0
26055 #define	MC_CMD_TSAN_INFO_IN_OP_HDR_LEN 4
26056 #define	MC_CMD_TSAN_INFO_IN_OP_OFST 0
26057 #define	MC_CMD_TSAN_INFO_IN_OP_LBN 0
26058 #define	MC_CMD_TSAN_INFO_IN_OP_WIDTH 16
26059 /* enum: Read configuration parameters and IDs that uniquely identify an
26060  * adapter. The parameters include - host identification, adapter
26061  * identification string and number of physical ports on the adapter.
26062  */
26063 #define	MC_CMD_TSAN_INFO_OP_GET_CFG 0x0
26064 
26065 /* MC_CMD_TSAN_INFO_IN_GET_CFG msgrequest */
26066 #define	MC_CMD_TSAN_INFO_IN_GET_CFG_LEN 4
26067 /* sub-operation code info */
26068 #define	MC_CMD_TSAN_INFO_IN_GET_CFG_OP_HDR_OFST 0
26069 #define	MC_CMD_TSAN_INFO_IN_GET_CFG_OP_HDR_LEN 4
26070 
26071 /* MC_CMD_TSAN_INFO_OUT_GET_CFG msgresponse */
26072 #define	MC_CMD_TSAN_INFO_OUT_GET_CFG_LEN 26
26073 /* Information about the configuration parameters returned in this response. */
26074 #define	MC_CMD_TSAN_INFO_OUT_GET_CFG_CONFIG_WORD_OFST 0
26075 #define	MC_CMD_TSAN_INFO_OUT_GET_CFG_CONFIG_WORD_LEN 4
26076 #define	MC_CMD_TSAN_INFO_OUT_GET_CFG_CAP_FLAGS_OFST 0
26077 #define	MC_CMD_TSAN_INFO_OUT_GET_CFG_CAP_FLAGS_LBN 0
26078 #define	MC_CMD_TSAN_INFO_OUT_GET_CFG_CAP_FLAGS_WIDTH 16
26079 #define	MC_CMD_TSAN_INFO_OUT_GET_CFG_FLAG_HOST_UUID_VALID_OFST 0
26080 #define	MC_CMD_TSAN_INFO_OUT_GET_CFG_FLAG_HOST_UUID_VALID_LBN 0
26081 #define	MC_CMD_TSAN_INFO_OUT_GET_CFG_FLAG_HOST_UUID_VALID_WIDTH 1
26082 #define	MC_CMD_TSAN_INFO_OUT_GET_CFG_NUM_PORTS_OFST 0
26083 #define	MC_CMD_TSAN_INFO_OUT_GET_CFG_NUM_PORTS_LBN 16
26084 #define	MC_CMD_TSAN_INFO_OUT_GET_CFG_NUM_PORTS_WIDTH 8
26085 /* 16-byte host UUID read out of the adapter. See MC_CMD_HOST_INFO_OP_GET_UUID
26086  * for further details.
26087  */
26088 #define	MC_CMD_TSAN_INFO_OUT_GET_CFG_HOST_UUID_OFST 4
26089 #define	MC_CMD_TSAN_INFO_OUT_GET_CFG_HOST_UUID_LEN 1
26090 #define	MC_CMD_TSAN_INFO_OUT_GET_CFG_HOST_UUID_NUM 16
26091 /* A unique identifier per adapter. The base MAC address of the card is used
26092  * for this purpose.
26093  */
26094 #define	MC_CMD_TSAN_INFO_OUT_GET_CFG_GUID_OFST 20
26095 #define	MC_CMD_TSAN_INFO_OUT_GET_CFG_GUID_LEN 1
26096 #define	MC_CMD_TSAN_INFO_OUT_GET_CFG_GUID_NUM 6
26097 
26098 /* MC_CMD_TSAN_INFO_OUT_GET_CFG_V2 msgresponse */
26099 #define	MC_CMD_TSAN_INFO_OUT_GET_CFG_V2_LEN 36
26100 /* Information about the configuration parameters returned in this response. */
26101 #define	MC_CMD_TSAN_INFO_OUT_GET_CFG_V2_CONFIG_WORD_OFST 0
26102 #define	MC_CMD_TSAN_INFO_OUT_GET_CFG_V2_CONFIG_WORD_LEN 4
26103 #define	MC_CMD_TSAN_INFO_OUT_GET_CFG_V2_CAP_FLAGS_OFST 0
26104 #define	MC_CMD_TSAN_INFO_OUT_GET_CFG_V2_CAP_FLAGS_LBN 0
26105 #define	MC_CMD_TSAN_INFO_OUT_GET_CFG_V2_CAP_FLAGS_WIDTH 16
26106 #define	MC_CMD_TSAN_INFO_OUT_GET_CFG_V2_FLAG_HOST_UUID_VALID_OFST 0
26107 #define	MC_CMD_TSAN_INFO_OUT_GET_CFG_V2_FLAG_HOST_UUID_VALID_LBN 0
26108 #define	MC_CMD_TSAN_INFO_OUT_GET_CFG_V2_FLAG_HOST_UUID_VALID_WIDTH 1
26109 #define	MC_CMD_TSAN_INFO_OUT_GET_CFG_V2_NUM_PORTS_OFST 0
26110 #define	MC_CMD_TSAN_INFO_OUT_GET_CFG_V2_NUM_PORTS_LBN 16
26111 #define	MC_CMD_TSAN_INFO_OUT_GET_CFG_V2_NUM_PORTS_WIDTH 8
26112 /* 16-byte host UUID read out of the adapter. See MC_CMD_HOST_INFO_OP_GET_UUID
26113  * for further details.
26114  */
26115 #define	MC_CMD_TSAN_INFO_OUT_GET_CFG_V2_HOST_UUID_OFST 4
26116 #define	MC_CMD_TSAN_INFO_OUT_GET_CFG_V2_HOST_UUID_LEN 1
26117 #define	MC_CMD_TSAN_INFO_OUT_GET_CFG_V2_HOST_UUID_NUM 16
26118 /* A unique identifier per adapter. The base MAC address of the card is used
26119  * for this purpose.
26120  */
26121 #define	MC_CMD_TSAN_INFO_OUT_GET_CFG_V2_GUID_OFST 20
26122 #define	MC_CMD_TSAN_INFO_OUT_GET_CFG_V2_GUID_LEN 1
26123 #define	MC_CMD_TSAN_INFO_OUT_GET_CFG_V2_GUID_NUM 6
26124 /* Unused bytes, defined for 32-bit alignment of new fields. */
26125 #define	MC_CMD_TSAN_INFO_OUT_GET_CFG_V2_UNUSED_OFST 26
26126 #define	MC_CMD_TSAN_INFO_OUT_GET_CFG_V2_UNUSED_LEN 2
26127 /* Maximum number of TSA statistics counters in each direction of dataflow
26128  * supported on the card. Note that the statistics counters are always
26129  * allocated in pairs, i.e. a counter ID is associated with one Tx and one Rx
26130  * counter.
26131  */
26132 #define	MC_CMD_TSAN_INFO_OUT_GET_CFG_V2_MAX_STATS_OFST 28
26133 #define	MC_CMD_TSAN_INFO_OUT_GET_CFG_V2_MAX_STATS_LEN 4
26134 /* Width of each statistics counter (represented in bits). This gives an
26135  * indication of wrap point to the user.
26136  */
26137 #define	MC_CMD_TSAN_INFO_OUT_GET_CFG_V2_STATS_WIDTH_OFST 32
26138 #define	MC_CMD_TSAN_INFO_OUT_GET_CFG_V2_STATS_WIDTH_LEN 4
26139 
26140 
26141 /***********************************/
26142 /* MC_CMD_TSA_STATISTICS
26143  * TSA adapter statistics operations.
26144  */
26145 #define	MC_CMD_TSA_STATISTICS 0x130
26146 #define	MC_CMD_TSA_STATISTICS_MSGSET 0x130
26147 #undef	MC_CMD_0x130_PRIVILEGE_CTG
26148 
26149 #define	MC_CMD_0x130_PRIVILEGE_CTG SRIOV_CTG_ADMIN_TSA_UNBOUND
26150 
26151 /* MC_CMD_TSA_STATISTICS_IN msgrequest */
26152 #define	MC_CMD_TSA_STATISTICS_IN_LEN 4
26153 /* TSA statistics sub-operation code */
26154 #define	MC_CMD_TSA_STATISTICS_IN_OP_CODE_OFST 0
26155 #define	MC_CMD_TSA_STATISTICS_IN_OP_CODE_LEN 4
26156 /* enum: Get the configuration parameters that describe the TSA statistics
26157  * layout on the adapter.
26158  */
26159 #define	MC_CMD_TSA_STATISTICS_OP_GET_CONFIG 0x0
26160 /* enum: Read and/or clear TSA statistics counters. */
26161 #define	MC_CMD_TSA_STATISTICS_OP_READ_CLEAR 0x1
26162 
26163 /* MC_CMD_TSA_STATISTICS_IN_GET_CONFIG msgrequest */
26164 #define	MC_CMD_TSA_STATISTICS_IN_GET_CONFIG_LEN 4
26165 /* TSA statistics sub-operation code */
26166 #define	MC_CMD_TSA_STATISTICS_IN_GET_CONFIG_OP_CODE_OFST 0
26167 #define	MC_CMD_TSA_STATISTICS_IN_GET_CONFIG_OP_CODE_LEN 4
26168 
26169 /* MC_CMD_TSA_STATISTICS_OUT_GET_CONFIG msgresponse */
26170 #define	MC_CMD_TSA_STATISTICS_OUT_GET_CONFIG_LEN 8
26171 /* Maximum number of TSA statistics counters in each direction of dataflow
26172  * supported on the card. Note that the statistics counters are always
26173  * allocated in pairs, i.e. a counter ID is associated with one Tx and one Rx
26174  * counter.
26175  */
26176 #define	MC_CMD_TSA_STATISTICS_OUT_GET_CONFIG_MAX_STATS_OFST 0
26177 #define	MC_CMD_TSA_STATISTICS_OUT_GET_CONFIG_MAX_STATS_LEN 4
26178 /* Width of each statistics counter (represented in bits). This gives an
26179  * indication of wrap point to the user.
26180  */
26181 #define	MC_CMD_TSA_STATISTICS_OUT_GET_CONFIG_STATS_WIDTH_OFST 4
26182 #define	MC_CMD_TSA_STATISTICS_OUT_GET_CONFIG_STATS_WIDTH_LEN 4
26183 
26184 /* MC_CMD_TSA_STATISTICS_IN_READ_CLEAR msgrequest */
26185 #define	MC_CMD_TSA_STATISTICS_IN_READ_CLEAR_LENMIN 20
26186 #define	MC_CMD_TSA_STATISTICS_IN_READ_CLEAR_LENMAX 252
26187 #define	MC_CMD_TSA_STATISTICS_IN_READ_CLEAR_LENMAX_MCDI2 1020
26188 #define	MC_CMD_TSA_STATISTICS_IN_READ_CLEAR_LEN(num) (16+4*(num))
26189 #define	MC_CMD_TSA_STATISTICS_IN_READ_CLEAR_COUNTER_ID_NUM(len) (((len)-16)/4)
26190 /* TSA statistics sub-operation code */
26191 #define	MC_CMD_TSA_STATISTICS_IN_READ_CLEAR_OP_CODE_OFST 0
26192 #define	MC_CMD_TSA_STATISTICS_IN_READ_CLEAR_OP_CODE_LEN 4
26193 /* Parameters describing the statistics operation */
26194 #define	MC_CMD_TSA_STATISTICS_IN_READ_CLEAR_FLAGS_OFST 4
26195 #define	MC_CMD_TSA_STATISTICS_IN_READ_CLEAR_FLAGS_LEN 4
26196 #define	MC_CMD_TSA_STATISTICS_IN_READ_CLEAR_READ_OFST 4
26197 #define	MC_CMD_TSA_STATISTICS_IN_READ_CLEAR_READ_LBN 0
26198 #define	MC_CMD_TSA_STATISTICS_IN_READ_CLEAR_READ_WIDTH 1
26199 #define	MC_CMD_TSA_STATISTICS_IN_READ_CLEAR_CLEAR_OFST 4
26200 #define	MC_CMD_TSA_STATISTICS_IN_READ_CLEAR_CLEAR_LBN 1
26201 #define	MC_CMD_TSA_STATISTICS_IN_READ_CLEAR_CLEAR_WIDTH 1
26202 /* Counter ID list specification type */
26203 #define	MC_CMD_TSA_STATISTICS_IN_READ_CLEAR_MODE_OFST 8
26204 #define	MC_CMD_TSA_STATISTICS_IN_READ_CLEAR_MODE_LEN 4
26205 /* enum: The statistics counters are specified as an unordered list of
26206  * individual counter ID.
26207  */
26208 #define	MC_CMD_TSA_STATISTICS_IN_READ_CLEAR_LIST 0x0
26209 /* enum: The statistics counters are specified as a range of consecutive
26210  * counter IDs.
26211  */
26212 #define	MC_CMD_TSA_STATISTICS_IN_READ_CLEAR_RANGE 0x1
26213 /* Number of statistics counters */
26214 #define	MC_CMD_TSA_STATISTICS_IN_READ_CLEAR_NUM_STATS_OFST 12
26215 #define	MC_CMD_TSA_STATISTICS_IN_READ_CLEAR_NUM_STATS_LEN 4
26216 /* Counter IDs to be read/cleared. When mode is set to LIST, this entry holds a
26217  * list of counter IDs to be operated on. When mode is set to RANGE, this entry
26218  * holds a single counter ID representing the start of the range of counter IDs
26219  * to be operated on.
26220  */
26221 #define	MC_CMD_TSA_STATISTICS_IN_READ_CLEAR_COUNTER_ID_OFST 16
26222 #define	MC_CMD_TSA_STATISTICS_IN_READ_CLEAR_COUNTER_ID_LEN 4
26223 #define	MC_CMD_TSA_STATISTICS_IN_READ_CLEAR_COUNTER_ID_MINNUM 1
26224 #define	MC_CMD_TSA_STATISTICS_IN_READ_CLEAR_COUNTER_ID_MAXNUM 59
26225 #define	MC_CMD_TSA_STATISTICS_IN_READ_CLEAR_COUNTER_ID_MAXNUM_MCDI2 251
26226 
26227 /* MC_CMD_TSA_STATISTICS_OUT_READ_CLEAR msgresponse */
26228 #define	MC_CMD_TSA_STATISTICS_OUT_READ_CLEAR_LENMIN 24
26229 #define	MC_CMD_TSA_STATISTICS_OUT_READ_CLEAR_LENMAX 248
26230 #define	MC_CMD_TSA_STATISTICS_OUT_READ_CLEAR_LENMAX_MCDI2 1016
26231 #define	MC_CMD_TSA_STATISTICS_OUT_READ_CLEAR_LEN(num) (8+16*(num))
26232 #define	MC_CMD_TSA_STATISTICS_OUT_READ_CLEAR_STATS_COUNTERS_NUM(len) (((len)-8)/16)
26233 /* Number of statistics counters returned in this response */
26234 #define	MC_CMD_TSA_STATISTICS_OUT_READ_CLEAR_NUM_STATS_OFST 0
26235 #define	MC_CMD_TSA_STATISTICS_OUT_READ_CLEAR_NUM_STATS_LEN 4
26236 /* MC_TSA_STATISTICS_ENTRY Note that this field is expected to start at a
26237  * 64-bit aligned offset
26238  */
26239 #define	MC_CMD_TSA_STATISTICS_OUT_READ_CLEAR_STATS_COUNTERS_OFST 8
26240 #define	MC_CMD_TSA_STATISTICS_OUT_READ_CLEAR_STATS_COUNTERS_LEN 16
26241 #define	MC_CMD_TSA_STATISTICS_OUT_READ_CLEAR_STATS_COUNTERS_MINNUM 1
26242 #define	MC_CMD_TSA_STATISTICS_OUT_READ_CLEAR_STATS_COUNTERS_MAXNUM 15
26243 #define	MC_CMD_TSA_STATISTICS_OUT_READ_CLEAR_STATS_COUNTERS_MAXNUM_MCDI2 63
26244 
26245 /* MC_TSA_STATISTICS_ENTRY structuredef */
26246 #define	MC_TSA_STATISTICS_ENTRY_LEN 16
26247 /* Tx statistics counter */
26248 #define	MC_TSA_STATISTICS_ENTRY_TX_STAT_OFST 0
26249 #define	MC_TSA_STATISTICS_ENTRY_TX_STAT_LEN 8
26250 #define	MC_TSA_STATISTICS_ENTRY_TX_STAT_LO_OFST 0
26251 #define	MC_TSA_STATISTICS_ENTRY_TX_STAT_LO_LEN 4
26252 #define	MC_TSA_STATISTICS_ENTRY_TX_STAT_LO_LBN 0
26253 #define	MC_TSA_STATISTICS_ENTRY_TX_STAT_LO_WIDTH 32
26254 #define	MC_TSA_STATISTICS_ENTRY_TX_STAT_HI_OFST 4
26255 #define	MC_TSA_STATISTICS_ENTRY_TX_STAT_HI_LEN 4
26256 #define	MC_TSA_STATISTICS_ENTRY_TX_STAT_HI_LBN 32
26257 #define	MC_TSA_STATISTICS_ENTRY_TX_STAT_HI_WIDTH 32
26258 #define	MC_TSA_STATISTICS_ENTRY_TX_STAT_LBN 0
26259 #define	MC_TSA_STATISTICS_ENTRY_TX_STAT_WIDTH 64
26260 /* Rx statistics counter */
26261 #define	MC_TSA_STATISTICS_ENTRY_RX_STAT_OFST 8
26262 #define	MC_TSA_STATISTICS_ENTRY_RX_STAT_LEN 8
26263 #define	MC_TSA_STATISTICS_ENTRY_RX_STAT_LO_OFST 8
26264 #define	MC_TSA_STATISTICS_ENTRY_RX_STAT_LO_LEN 4
26265 #define	MC_TSA_STATISTICS_ENTRY_RX_STAT_LO_LBN 64
26266 #define	MC_TSA_STATISTICS_ENTRY_RX_STAT_LO_WIDTH 32
26267 #define	MC_TSA_STATISTICS_ENTRY_RX_STAT_HI_OFST 12
26268 #define	MC_TSA_STATISTICS_ENTRY_RX_STAT_HI_LEN 4
26269 #define	MC_TSA_STATISTICS_ENTRY_RX_STAT_HI_LBN 96
26270 #define	MC_TSA_STATISTICS_ENTRY_RX_STAT_HI_WIDTH 32
26271 #define	MC_TSA_STATISTICS_ENTRY_RX_STAT_LBN 64
26272 #define	MC_TSA_STATISTICS_ENTRY_RX_STAT_WIDTH 64
26273 
26274 
26275 /***********************************/
26276 /* MC_CMD_ERASE_INITIAL_NIC_SECRET
26277  * This request causes the NIC to find the initial NIC secret (programmed
26278  * during ATE) in XPM memory and if and only if the NIC has already been
26279  * rekeyed with MC_CMD_REKEY, erase it. This is used by manftest after
26280  * installing TSA binding certificates. See SF-117631-TC.
26281  */
26282 #define	MC_CMD_ERASE_INITIAL_NIC_SECRET 0x131
26283 #define	MC_CMD_ERASE_INITIAL_NIC_SECRET_MSGSET 0x131
26284 #undef	MC_CMD_0x131_PRIVILEGE_CTG
26285 
26286 #define	MC_CMD_0x131_PRIVILEGE_CTG SRIOV_CTG_ADMIN_TSA_UNBOUND
26287 
26288 /* MC_CMD_ERASE_INITIAL_NIC_SECRET_IN msgrequest */
26289 #define	MC_CMD_ERASE_INITIAL_NIC_SECRET_IN_LEN 0
26290 
26291 /* MC_CMD_ERASE_INITIAL_NIC_SECRET_OUT msgresponse */
26292 #define	MC_CMD_ERASE_INITIAL_NIC_SECRET_OUT_LEN 0
26293 
26294 
26295 /***********************************/
26296 /* MC_CMD_TSA_CONFIG
26297  * TSA adapter configuration operations. This command is used to prepare the
26298  * NIC for TSA binding.
26299  */
26300 #define	MC_CMD_TSA_CONFIG 0x64
26301 #define	MC_CMD_TSA_CONFIG_MSGSET 0x64
26302 #undef	MC_CMD_0x64_PRIVILEGE_CTG
26303 
26304 #define	MC_CMD_0x64_PRIVILEGE_CTG SRIOV_CTG_ADMIN
26305 
26306 /* MC_CMD_TSA_CONFIG_IN msgrequest */
26307 #define	MC_CMD_TSA_CONFIG_IN_LEN 4
26308 /* TSA configuration sub-operation code */
26309 #define	MC_CMD_TSA_CONFIG_IN_OP_OFST 0
26310 #define	MC_CMD_TSA_CONFIG_IN_OP_LEN 4
26311 /* enum: Append a single item to the tsa_config partition. Items will be
26312  * encrypted unless they are declared as non-sensitive. Returns
26313  * MC_CMD_ERR_EEXIST if the tag is already present.
26314  */
26315 #define	MC_CMD_TSA_CONFIG_OP_APPEND 0x1
26316 /* enum: Reset the tsa_config partition to a clean state. */
26317 #define	MC_CMD_TSA_CONFIG_OP_RESET 0x2
26318 /* enum: Read back a configured item from tsa_config partition. Returns
26319  * MC_CMD_ERR_ENOENT if the item doesn't exist, or MC_CMD_ERR_EPERM if the item
26320  * is declared as sensitive (i.e. is encrypted).
26321  */
26322 #define	MC_CMD_TSA_CONFIG_OP_READ 0x3
26323 
26324 /* MC_CMD_TSA_CONFIG_IN_APPEND msgrequest */
26325 #define	MC_CMD_TSA_CONFIG_IN_APPEND_LENMIN 12
26326 #define	MC_CMD_TSA_CONFIG_IN_APPEND_LENMAX 252
26327 #define	MC_CMD_TSA_CONFIG_IN_APPEND_LENMAX_MCDI2 1020
26328 #define	MC_CMD_TSA_CONFIG_IN_APPEND_LEN(num) (12+1*(num))
26329 #define	MC_CMD_TSA_CONFIG_IN_APPEND_DATA_NUM(len) (((len)-12)/1)
26330 /* TSA configuration sub-operation code. The value shall be
26331  * MC_CMD_TSA_CONFIG_OP_APPEND.
26332  */
26333 #define	MC_CMD_TSA_CONFIG_IN_APPEND_OP_OFST 0
26334 #define	MC_CMD_TSA_CONFIG_IN_APPEND_OP_LEN 4
26335 /* The tag to be appended */
26336 #define	MC_CMD_TSA_CONFIG_IN_APPEND_TAG_OFST 4
26337 #define	MC_CMD_TSA_CONFIG_IN_APPEND_TAG_LEN 4
26338 /* The length of the data in bytes */
26339 #define	MC_CMD_TSA_CONFIG_IN_APPEND_LENGTH_OFST 8
26340 #define	MC_CMD_TSA_CONFIG_IN_APPEND_LENGTH_LEN 4
26341 /* The item data */
26342 #define	MC_CMD_TSA_CONFIG_IN_APPEND_DATA_OFST 12
26343 #define	MC_CMD_TSA_CONFIG_IN_APPEND_DATA_LEN 1
26344 #define	MC_CMD_TSA_CONFIG_IN_APPEND_DATA_MINNUM 0
26345 #define	MC_CMD_TSA_CONFIG_IN_APPEND_DATA_MAXNUM 240
26346 #define	MC_CMD_TSA_CONFIG_IN_APPEND_DATA_MAXNUM_MCDI2 1008
26347 
26348 /* MC_CMD_TSA_CONFIG_OUT_APPEND msgresponse */
26349 #define	MC_CMD_TSA_CONFIG_OUT_APPEND_LEN 0
26350 
26351 /* MC_CMD_TSA_CONFIG_IN_RESET msgrequest */
26352 #define	MC_CMD_TSA_CONFIG_IN_RESET_LEN 4
26353 /* TSA configuration sub-operation code. The value shall be
26354  * MC_CMD_TSA_CONFIG_OP_RESET.
26355  */
26356 #define	MC_CMD_TSA_CONFIG_IN_RESET_OP_OFST 0
26357 #define	MC_CMD_TSA_CONFIG_IN_RESET_OP_LEN 4
26358 
26359 /* MC_CMD_TSA_CONFIG_OUT_RESET msgresponse */
26360 #define	MC_CMD_TSA_CONFIG_OUT_RESET_LEN 0
26361 
26362 /* MC_CMD_TSA_CONFIG_IN_READ msgrequest */
26363 #define	MC_CMD_TSA_CONFIG_IN_READ_LEN 8
26364 /* TSA configuration sub-operation code. The value shall be
26365  * MC_CMD_TSA_CONFIG_OP_READ.
26366  */
26367 #define	MC_CMD_TSA_CONFIG_IN_READ_OP_OFST 0
26368 #define	MC_CMD_TSA_CONFIG_IN_READ_OP_LEN 4
26369 /* The tag to be read */
26370 #define	MC_CMD_TSA_CONFIG_IN_READ_TAG_OFST 4
26371 #define	MC_CMD_TSA_CONFIG_IN_READ_TAG_LEN 4
26372 
26373 /* MC_CMD_TSA_CONFIG_OUT_READ msgresponse */
26374 #define	MC_CMD_TSA_CONFIG_OUT_READ_LENMIN 8
26375 #define	MC_CMD_TSA_CONFIG_OUT_READ_LENMAX 252
26376 #define	MC_CMD_TSA_CONFIG_OUT_READ_LENMAX_MCDI2 1020
26377 #define	MC_CMD_TSA_CONFIG_OUT_READ_LEN(num) (8+1*(num))
26378 #define	MC_CMD_TSA_CONFIG_OUT_READ_DATA_NUM(len) (((len)-8)/1)
26379 /* The tag that was read */
26380 #define	MC_CMD_TSA_CONFIG_OUT_READ_TAG_OFST 0
26381 #define	MC_CMD_TSA_CONFIG_OUT_READ_TAG_LEN 4
26382 /* The length of the data in bytes */
26383 #define	MC_CMD_TSA_CONFIG_OUT_READ_LENGTH_OFST 4
26384 #define	MC_CMD_TSA_CONFIG_OUT_READ_LENGTH_LEN 4
26385 /* The data of the item. */
26386 #define	MC_CMD_TSA_CONFIG_OUT_READ_DATA_OFST 8
26387 #define	MC_CMD_TSA_CONFIG_OUT_READ_DATA_LEN 1
26388 #define	MC_CMD_TSA_CONFIG_OUT_READ_DATA_MINNUM 0
26389 #define	MC_CMD_TSA_CONFIG_OUT_READ_DATA_MAXNUM 244
26390 #define	MC_CMD_TSA_CONFIG_OUT_READ_DATA_MAXNUM_MCDI2 1012
26391 
26392 /* MC_TSA_IPV4_ITEM structuredef */
26393 #define	MC_TSA_IPV4_ITEM_LEN 8
26394 /* Additional metadata describing the IP address information such as the
26395  * physical port number the address is being used on. Unused space in this
26396  * field is reserved for future expansion.
26397  */
26398 #define	MC_TSA_IPV4_ITEM_IPV4_ADDR_META_OFST 0
26399 #define	MC_TSA_IPV4_ITEM_IPV4_ADDR_META_LEN 4
26400 #define	MC_TSA_IPV4_ITEM_PORT_IDX_OFST 0
26401 #define	MC_TSA_IPV4_ITEM_PORT_IDX_LBN 0
26402 #define	MC_TSA_IPV4_ITEM_PORT_IDX_WIDTH 8
26403 #define	MC_TSA_IPV4_ITEM_IPV4_ADDR_META_LBN 0
26404 #define	MC_TSA_IPV4_ITEM_IPV4_ADDR_META_WIDTH 32
26405 /* The IPv4 address in little endian byte order. */
26406 #define	MC_TSA_IPV4_ITEM_IPV4_ADDR_OFST 4
26407 #define	MC_TSA_IPV4_ITEM_IPV4_ADDR_LEN 4
26408 #define	MC_TSA_IPV4_ITEM_IPV4_ADDR_LBN 32
26409 #define	MC_TSA_IPV4_ITEM_IPV4_ADDR_WIDTH 32
26410 
26411 
26412 /***********************************/
26413 /* MC_CMD_TSA_IPADDR
26414  * TSA operations relating to the monitoring and expiry of local IP addresses
26415  * discovered by the controller. These commands are sent from a TSA controller
26416  * to a TSA adapter.
26417  */
26418 #define	MC_CMD_TSA_IPADDR 0x65
26419 #define	MC_CMD_TSA_IPADDR_MSGSET 0x65
26420 #undef	MC_CMD_0x65_PRIVILEGE_CTG
26421 
26422 #define	MC_CMD_0x65_PRIVILEGE_CTG SRIOV_CTG_ADMIN_TSA_UNBOUND
26423 
26424 /* MC_CMD_TSA_IPADDR_IN msgrequest */
26425 #define	MC_CMD_TSA_IPADDR_IN_LEN 4
26426 /* Header containing information to identify which sub-operation of this
26427  * command to perform. The header contains a 16-bit op-code. Unused space in
26428  * this field is reserved for future expansion.
26429  */
26430 #define	MC_CMD_TSA_IPADDR_IN_OP_HDR_OFST 0
26431 #define	MC_CMD_TSA_IPADDR_IN_OP_HDR_LEN 4
26432 #define	MC_CMD_TSA_IPADDR_IN_OP_OFST 0
26433 #define	MC_CMD_TSA_IPADDR_IN_OP_LBN 0
26434 #define	MC_CMD_TSA_IPADDR_IN_OP_WIDTH 16
26435 /* enum: Request that the adapter verifies that the IPv4 addresses supplied are
26436  * still in use by the host by sending ARP probes to the host. The MC does not
26437  * wait for a response to the probes and sends an MCDI response to the
26438  * controller once the probes have been sent to the host. The response to the
26439  * probes (if there are any) will be forwarded to the controller using
26440  * MC_CMD_TSA_INFO alerts.
26441  */
26442 #define	MC_CMD_TSA_IPADDR_OP_VALIDATE_IPV4 0x1
26443 /* enum: Notify the adapter that one or more IPv4 addresses are no longer valid
26444  * for the host of the adapter. The adapter should remove the IPv4 addresses
26445  * from its local cache.
26446  */
26447 #define	MC_CMD_TSA_IPADDR_OP_REMOVE_IPV4 0x2
26448 
26449 /* MC_CMD_TSA_IPADDR_IN_VALIDATE_IPV4 msgrequest */
26450 #define	MC_CMD_TSA_IPADDR_IN_VALIDATE_IPV4_LENMIN 16
26451 #define	MC_CMD_TSA_IPADDR_IN_VALIDATE_IPV4_LENMAX 248
26452 #define	MC_CMD_TSA_IPADDR_IN_VALIDATE_IPV4_LENMAX_MCDI2 1016
26453 #define	MC_CMD_TSA_IPADDR_IN_VALIDATE_IPV4_LEN(num) (8+8*(num))
26454 #define	MC_CMD_TSA_IPADDR_IN_VALIDATE_IPV4_IPV4_ITEM_NUM(len) (((len)-8)/8)
26455 /* Header containing information to identify which sub-operation of this
26456  * command to perform. The header contains a 16-bit op-code. Unused space in
26457  * this field is reserved for future expansion.
26458  */
26459 #define	MC_CMD_TSA_IPADDR_IN_VALIDATE_IPV4_OP_HDR_OFST 0
26460 #define	MC_CMD_TSA_IPADDR_IN_VALIDATE_IPV4_OP_HDR_LEN 4
26461 #define	MC_CMD_TSA_IPADDR_IN_VALIDATE_IPV4_OP_OFST 0
26462 #define	MC_CMD_TSA_IPADDR_IN_VALIDATE_IPV4_OP_LBN 0
26463 #define	MC_CMD_TSA_IPADDR_IN_VALIDATE_IPV4_OP_WIDTH 16
26464 /* Number of IPv4 addresses to validate. */
26465 #define	MC_CMD_TSA_IPADDR_IN_VALIDATE_IPV4_NUM_ITEMS_OFST 4
26466 #define	MC_CMD_TSA_IPADDR_IN_VALIDATE_IPV4_NUM_ITEMS_LEN 4
26467 /* The IPv4 addresses to validate, in struct MC_TSA_IPV4_ITEM format. */
26468 #define	MC_CMD_TSA_IPADDR_IN_VALIDATE_IPV4_IPV4_ITEM_OFST 8
26469 #define	MC_CMD_TSA_IPADDR_IN_VALIDATE_IPV4_IPV4_ITEM_LEN 8
26470 #define	MC_CMD_TSA_IPADDR_IN_VALIDATE_IPV4_IPV4_ITEM_LO_OFST 8
26471 #define	MC_CMD_TSA_IPADDR_IN_VALIDATE_IPV4_IPV4_ITEM_LO_LEN 4
26472 #define	MC_CMD_TSA_IPADDR_IN_VALIDATE_IPV4_IPV4_ITEM_LO_LBN 64
26473 #define	MC_CMD_TSA_IPADDR_IN_VALIDATE_IPV4_IPV4_ITEM_LO_WIDTH 32
26474 #define	MC_CMD_TSA_IPADDR_IN_VALIDATE_IPV4_IPV4_ITEM_HI_OFST 12
26475 #define	MC_CMD_TSA_IPADDR_IN_VALIDATE_IPV4_IPV4_ITEM_HI_LEN 4
26476 #define	MC_CMD_TSA_IPADDR_IN_VALIDATE_IPV4_IPV4_ITEM_HI_LBN 96
26477 #define	MC_CMD_TSA_IPADDR_IN_VALIDATE_IPV4_IPV4_ITEM_HI_WIDTH 32
26478 #define	MC_CMD_TSA_IPADDR_IN_VALIDATE_IPV4_IPV4_ITEM_MINNUM 1
26479 #define	MC_CMD_TSA_IPADDR_IN_VALIDATE_IPV4_IPV4_ITEM_MAXNUM 30
26480 #define	MC_CMD_TSA_IPADDR_IN_VALIDATE_IPV4_IPV4_ITEM_MAXNUM_MCDI2 126
26481 
26482 /* MC_CMD_TSA_IPADDR_OUT_VALIDATE_IPV4 msgresponse */
26483 #define	MC_CMD_TSA_IPADDR_OUT_VALIDATE_IPV4_LEN 0
26484 
26485 /* MC_CMD_TSA_IPADDR_IN_REMOVE_IPV4 msgrequest */
26486 #define	MC_CMD_TSA_IPADDR_IN_REMOVE_IPV4_LENMIN 16
26487 #define	MC_CMD_TSA_IPADDR_IN_REMOVE_IPV4_LENMAX 248
26488 #define	MC_CMD_TSA_IPADDR_IN_REMOVE_IPV4_LENMAX_MCDI2 1016
26489 #define	MC_CMD_TSA_IPADDR_IN_REMOVE_IPV4_LEN(num) (8+8*(num))
26490 #define	MC_CMD_TSA_IPADDR_IN_REMOVE_IPV4_IPV4_ITEM_NUM(len) (((len)-8)/8)
26491 /* Header containing information to identify which sub-operation of this
26492  * command to perform. The header contains a 16-bit op-code. Unused space in
26493  * this field is reserved for future expansion.
26494  */
26495 #define	MC_CMD_TSA_IPADDR_IN_REMOVE_IPV4_OP_HDR_OFST 0
26496 #define	MC_CMD_TSA_IPADDR_IN_REMOVE_IPV4_OP_HDR_LEN 4
26497 #define	MC_CMD_TSA_IPADDR_IN_REMOVE_IPV4_OP_OFST 0
26498 #define	MC_CMD_TSA_IPADDR_IN_REMOVE_IPV4_OP_LBN 0
26499 #define	MC_CMD_TSA_IPADDR_IN_REMOVE_IPV4_OP_WIDTH 16
26500 /* Number of IPv4 addresses to remove. */
26501 #define	MC_CMD_TSA_IPADDR_IN_REMOVE_IPV4_NUM_ITEMS_OFST 4
26502 #define	MC_CMD_TSA_IPADDR_IN_REMOVE_IPV4_NUM_ITEMS_LEN 4
26503 /* The IPv4 addresses that have expired, in struct MC_TSA_IPV4_ITEM format. */
26504 #define	MC_CMD_TSA_IPADDR_IN_REMOVE_IPV4_IPV4_ITEM_OFST 8
26505 #define	MC_CMD_TSA_IPADDR_IN_REMOVE_IPV4_IPV4_ITEM_LEN 8
26506 #define	MC_CMD_TSA_IPADDR_IN_REMOVE_IPV4_IPV4_ITEM_LO_OFST 8
26507 #define	MC_CMD_TSA_IPADDR_IN_REMOVE_IPV4_IPV4_ITEM_LO_LEN 4
26508 #define	MC_CMD_TSA_IPADDR_IN_REMOVE_IPV4_IPV4_ITEM_LO_LBN 64
26509 #define	MC_CMD_TSA_IPADDR_IN_REMOVE_IPV4_IPV4_ITEM_LO_WIDTH 32
26510 #define	MC_CMD_TSA_IPADDR_IN_REMOVE_IPV4_IPV4_ITEM_HI_OFST 12
26511 #define	MC_CMD_TSA_IPADDR_IN_REMOVE_IPV4_IPV4_ITEM_HI_LEN 4
26512 #define	MC_CMD_TSA_IPADDR_IN_REMOVE_IPV4_IPV4_ITEM_HI_LBN 96
26513 #define	MC_CMD_TSA_IPADDR_IN_REMOVE_IPV4_IPV4_ITEM_HI_WIDTH 32
26514 #define	MC_CMD_TSA_IPADDR_IN_REMOVE_IPV4_IPV4_ITEM_MINNUM 1
26515 #define	MC_CMD_TSA_IPADDR_IN_REMOVE_IPV4_IPV4_ITEM_MAXNUM 30
26516 #define	MC_CMD_TSA_IPADDR_IN_REMOVE_IPV4_IPV4_ITEM_MAXNUM_MCDI2 126
26517 
26518 /* MC_CMD_TSA_IPADDR_OUT_REMOVE_IPV4 msgresponse */
26519 #define	MC_CMD_TSA_IPADDR_OUT_REMOVE_IPV4_LEN 0
26520 
26521 
26522 /***********************************/
26523 /* MC_CMD_SECURE_NIC_INFO
26524  * Get secure NIC information. While many of the features reported by these
26525  * commands are related to TSA, they must be supported in firmware where TSA is
26526  * disabled.
26527  */
26528 #define	MC_CMD_SECURE_NIC_INFO 0x132
26529 #define	MC_CMD_SECURE_NIC_INFO_MSGSET 0x132
26530 #undef	MC_CMD_0x132_PRIVILEGE_CTG
26531 
26532 #define	MC_CMD_0x132_PRIVILEGE_CTG SRIOV_CTG_GENERAL
26533 
26534 /* MC_CMD_SECURE_NIC_INFO_IN msgrequest */
26535 #define	MC_CMD_SECURE_NIC_INFO_IN_LEN 4
26536 /* sub-operation code info */
26537 #define	MC_CMD_SECURE_NIC_INFO_IN_OP_HDR_OFST 0
26538 #define	MC_CMD_SECURE_NIC_INFO_IN_OP_HDR_LEN 4
26539 #define	MC_CMD_SECURE_NIC_INFO_IN_OP_OFST 0
26540 #define	MC_CMD_SECURE_NIC_INFO_IN_OP_LBN 0
26541 #define	MC_CMD_SECURE_NIC_INFO_IN_OP_WIDTH 16
26542 /* enum: Get the status of various security settings, all signed along with a
26543  * challenge chosen by the host.
26544  */
26545 #define	MC_CMD_SECURE_NIC_INFO_OP_STATUS 0x0
26546 
26547 /* MC_CMD_SECURE_NIC_INFO_IN_STATUS msgrequest */
26548 #define	MC_CMD_SECURE_NIC_INFO_IN_STATUS_LEN 24
26549 /* sub-operation code, must be MC_CMD_SECURE_NIC_INFO_OP_STATUS */
26550 #define	MC_CMD_SECURE_NIC_INFO_IN_STATUS_OP_HDR_OFST 0
26551 #define	MC_CMD_SECURE_NIC_INFO_IN_STATUS_OP_HDR_LEN 4
26552 /* Type of key to be used to sign response. */
26553 #define	MC_CMD_SECURE_NIC_INFO_IN_STATUS_KEY_TYPE_OFST 4
26554 #define	MC_CMD_SECURE_NIC_INFO_IN_STATUS_KEY_TYPE_LEN 4
26555 #define	MC_CMD_SECURE_NIC_INFO_IN_STATUS_UNUSED 0x0 /* enum */
26556 /* enum: Solarflare adapter authentication key, installed by Manftest. */
26557 #define	MC_CMD_SECURE_NIC_INFO_IN_STATUS_SF_ADAPTER_AUTH 0x1
26558 /* enum: TSA binding key, installed after adapter is bound to a TSA controller.
26559  * This is not supported in firmware which does not support TSA.
26560  */
26561 #define	MC_CMD_SECURE_NIC_INFO_IN_STATUS_TSA_BINDING 0x2
26562 /* enum: Customer adapter authentication key. Installed by the customer in the
26563  * field, but otherwise similar to the Solarflare adapter authentication key.
26564  */
26565 #define	MC_CMD_SECURE_NIC_INFO_IN_STATUS_CUSTOMER_ADAPTER_AUTH 0x3
26566 /* Random challenge generated by the host. */
26567 #define	MC_CMD_SECURE_NIC_INFO_IN_STATUS_CHALLENGE_OFST 8
26568 #define	MC_CMD_SECURE_NIC_INFO_IN_STATUS_CHALLENGE_LEN 16
26569 
26570 /* MC_CMD_SECURE_NIC_INFO_OUT_STATUS msgresponse */
26571 #define	MC_CMD_SECURE_NIC_INFO_OUT_STATUS_LEN 420
26572 /* Length of the signature in MSG_SIGNATURE. */
26573 #define	MC_CMD_SECURE_NIC_INFO_OUT_STATUS_MSG_SIGNATURE_LEN_OFST 0
26574 #define	MC_CMD_SECURE_NIC_INFO_OUT_STATUS_MSG_SIGNATURE_LEN_LEN 4
26575 /* Signature over the message, starting at MESSAGE_TYPE and continuing to the
26576  * end of the MCDI response, allowing the message format to be extended. The
26577  * signature uses ECDSA 384 encoding in ASN.1 format. It has variable length,
26578  * with a maximum of 384 bytes.
26579  */
26580 #define	MC_CMD_SECURE_NIC_INFO_OUT_STATUS_MSG_SIGNATURE_OFST 4
26581 #define	MC_CMD_SECURE_NIC_INFO_OUT_STATUS_MSG_SIGNATURE_LEN 384
26582 /* Enum value indicating the type of response. This protects against chosen
26583  * message attacks. The enum values are random rather than sequential to make
26584  * it unlikely that values will be reused should other commands in a different
26585  * namespace need to create signed messages.
26586  */
26587 #define	MC_CMD_SECURE_NIC_INFO_OUT_STATUS_MESSAGE_TYPE_OFST 388
26588 #define	MC_CMD_SECURE_NIC_INFO_OUT_STATUS_MESSAGE_TYPE_LEN 4
26589 /* enum: Message type value for the response to a
26590  * MC_CMD_SECURE_NIC_INFO_IN_STATUS message.
26591  */
26592 #define	MC_CMD_SECURE_NIC_INFO_STATUS 0xdb4
26593 /* The challenge provided by the host in the MC_CMD_SECURE_NIC_INFO_IN_STATUS
26594  * message
26595  */
26596 #define	MC_CMD_SECURE_NIC_INFO_OUT_STATUS_CHALLENGE_OFST 392
26597 #define	MC_CMD_SECURE_NIC_INFO_OUT_STATUS_CHALLENGE_LEN 16
26598 /* The first 32 bits of XPM memory, which include security and flag bits, die
26599  * ID and chip ID revision. The meaning of these bits is defined in
26600  * mc/include/mc/xpm.h in the firmwaresrc repository.
26601  */
26602 #define	MC_CMD_SECURE_NIC_INFO_OUT_STATUS_XPM_STATUS_BITS_OFST 408
26603 #define	MC_CMD_SECURE_NIC_INFO_OUT_STATUS_XPM_STATUS_BITS_LEN 4
26604 #define	MC_CMD_SECURE_NIC_INFO_OUT_STATUS_FIRMWARE_VERSION_A_OFST 412
26605 #define	MC_CMD_SECURE_NIC_INFO_OUT_STATUS_FIRMWARE_VERSION_A_LEN 2
26606 #define	MC_CMD_SECURE_NIC_INFO_OUT_STATUS_FIRMWARE_VERSION_B_OFST 414
26607 #define	MC_CMD_SECURE_NIC_INFO_OUT_STATUS_FIRMWARE_VERSION_B_LEN 2
26608 #define	MC_CMD_SECURE_NIC_INFO_OUT_STATUS_FIRMWARE_VERSION_C_OFST 416
26609 #define	MC_CMD_SECURE_NIC_INFO_OUT_STATUS_FIRMWARE_VERSION_C_LEN 2
26610 #define	MC_CMD_SECURE_NIC_INFO_OUT_STATUS_FIRMWARE_VERSION_D_OFST 418
26611 #define	MC_CMD_SECURE_NIC_INFO_OUT_STATUS_FIRMWARE_VERSION_D_LEN 2
26612 
26613 
26614 /***********************************/
26615 /* MC_CMD_TSA_TEST
26616  * A simple ping-pong command just to test the adapter<>controller MCDI
26617  * communication channel. This command makes not changes to the TSA adapter's
26618  * internal state. It is used by the controller just to verify that the MCDI
26619  * communication channel is working fine. This command takes no additonal
26620  * parameters in request or response.
26621  */
26622 #define	MC_CMD_TSA_TEST 0x125
26623 #define	MC_CMD_TSA_TEST_MSGSET 0x125
26624 #undef	MC_CMD_0x125_PRIVILEGE_CTG
26625 
26626 #define	MC_CMD_0x125_PRIVILEGE_CTG SRIOV_CTG_ADMIN_TSA_UNBOUND
26627 
26628 /* MC_CMD_TSA_TEST_IN msgrequest */
26629 #define	MC_CMD_TSA_TEST_IN_LEN 0
26630 
26631 /* MC_CMD_TSA_TEST_OUT msgresponse */
26632 #define	MC_CMD_TSA_TEST_OUT_LEN 0
26633 
26634 
26635 /***********************************/
26636 /* MC_CMD_TSA_RULESET_OVERRIDE
26637  * Override TSA ruleset that is currently active on the adapter. This operation
26638  * does not modify the ruleset itself. This operation provides a mechanism to
26639  * apply an allow-all or deny-all operation on all packets, thereby completely
26640  * ignoring the rule-set configured on the adapter. The main purpose of this
26641  * operation is to provide a deterministic state to the TSA firewall during
26642  * rule-set transitions.
26643  */
26644 #define	MC_CMD_TSA_RULESET_OVERRIDE 0x12a
26645 #define	MC_CMD_TSA_RULESET_OVERRIDE_MSGSET 0x12a
26646 #undef	MC_CMD_0x12a_PRIVILEGE_CTG
26647 
26648 #define	MC_CMD_0x12a_PRIVILEGE_CTG SRIOV_CTG_ADMIN_TSA_UNBOUND
26649 
26650 /* MC_CMD_TSA_RULESET_OVERRIDE_IN msgrequest */
26651 #define	MC_CMD_TSA_RULESET_OVERRIDE_IN_LEN 4
26652 /* The override state to apply. */
26653 #define	MC_CMD_TSA_RULESET_OVERRIDE_IN_STATE_OFST 0
26654 #define	MC_CMD_TSA_RULESET_OVERRIDE_IN_STATE_LEN 4
26655 /* enum: No override in place - the existing ruleset is in operation. */
26656 #define	MC_CMD_TSA_RULESET_OVERRIDE_NONE 0x0
26657 /* enum: Block all packets seen on all datapath channel except those packets
26658  * required for basic configuration of the TSA NIC such as ARPs and TSA-
26659  * communication traffic. Such exceptional traffic is handled differently
26660  * compared to TSA rulesets.
26661  */
26662 #define	MC_CMD_TSA_RULESET_OVERRIDE_BLOCK 0x1
26663 /* enum: Allow all packets through all datapath channel. The TSA adapter
26664  * behaves like a normal NIC without any firewalls.
26665  */
26666 #define	MC_CMD_TSA_RULESET_OVERRIDE_ALLOW 0x2
26667 
26668 /* MC_CMD_TSA_RULESET_OVERRIDE_OUT msgresponse */
26669 #define	MC_CMD_TSA_RULESET_OVERRIDE_OUT_LEN 0
26670 
26671 
26672 /***********************************/
26673 /* MC_CMD_TSAC_REQUEST
26674  * Generic command to send requests from a TSA controller to a TSA adapter.
26675  * Specific usage is determined by the TYPE field.
26676  */
26677 #define	MC_CMD_TSAC_REQUEST 0x12b
26678 #define	MC_CMD_TSAC_REQUEST_MSGSET 0x12b
26679 #undef	MC_CMD_0x12b_PRIVILEGE_CTG
26680 
26681 #define	MC_CMD_0x12b_PRIVILEGE_CTG SRIOV_CTG_ADMIN_TSA_UNBOUND
26682 
26683 /* MC_CMD_TSAC_REQUEST_IN msgrequest */
26684 #define	MC_CMD_TSAC_REQUEST_IN_LEN 4
26685 /* The type of request from the controller. */
26686 #define	MC_CMD_TSAC_REQUEST_IN_TYPE_OFST 0
26687 #define	MC_CMD_TSAC_REQUEST_IN_TYPE_LEN 4
26688 /* enum: Request the adapter to resend localIP information from it's cache. The
26689  * command does not return any IP address information; IP addresses are sent as
26690  * TSA notifications as descibed in MC_CMD_TSA_INFO_IN_LOCAL_IP.
26691  */
26692 #define	MC_CMD_TSAC_REQUEST_LOCALIP 0x0
26693 
26694 /* MC_CMD_TSAC_REQUEST_OUT msgresponse */
26695 #define	MC_CMD_TSAC_REQUEST_OUT_LEN 0
26696 
26697 
26698 /***********************************/
26699 /* MC_CMD_SUC_VERSION
26700  * Get the version of the SUC
26701  */
26702 #define	MC_CMD_SUC_VERSION 0x134
26703 #define	MC_CMD_SUC_VERSION_MSGSET 0x134
26704 #undef	MC_CMD_0x134_PRIVILEGE_CTG
26705 
26706 #define	MC_CMD_0x134_PRIVILEGE_CTG SRIOV_CTG_GENERAL
26707 
26708 /* MC_CMD_SUC_VERSION_IN msgrequest */
26709 #define	MC_CMD_SUC_VERSION_IN_LEN 0
26710 
26711 /* MC_CMD_SUC_VERSION_OUT msgresponse */
26712 #define	MC_CMD_SUC_VERSION_OUT_LEN 24
26713 /* The SUC firmware version as four numbers - a.b.c.d */
26714 #define	MC_CMD_SUC_VERSION_OUT_VERSION_OFST 0
26715 #define	MC_CMD_SUC_VERSION_OUT_VERSION_LEN 4
26716 #define	MC_CMD_SUC_VERSION_OUT_VERSION_NUM 4
26717 /* The date, in seconds since the Unix epoch, when the firmware image was
26718  * built.
26719  */
26720 #define	MC_CMD_SUC_VERSION_OUT_BUILD_DATE_OFST 16
26721 #define	MC_CMD_SUC_VERSION_OUT_BUILD_DATE_LEN 4
26722 /* The ID of the SUC chip. This is specific to the platform but typically
26723  * indicates family, memory sizes etc. See SF-116728-SW for further details.
26724  */
26725 #define	MC_CMD_SUC_VERSION_OUT_CHIP_ID_OFST 20
26726 #define	MC_CMD_SUC_VERSION_OUT_CHIP_ID_LEN 4
26727 
26728 /* MC_CMD_SUC_BOOT_VERSION_IN msgrequest: Get the version of the SUC boot
26729  * loader.
26730  */
26731 #define	MC_CMD_SUC_BOOT_VERSION_IN_LEN 4
26732 #define	MC_CMD_SUC_BOOT_VERSION_IN_MAGIC_OFST 0
26733 #define	MC_CMD_SUC_BOOT_VERSION_IN_MAGIC_LEN 4
26734 /* enum: Requests the SUC boot version. */
26735 #define	MC_CMD_SUC_VERSION_GET_BOOT_VERSION 0xb007700b
26736 
26737 /* MC_CMD_SUC_BOOT_VERSION_OUT msgresponse */
26738 #define	MC_CMD_SUC_BOOT_VERSION_OUT_LEN 4
26739 /* The SUC boot version */
26740 #define	MC_CMD_SUC_BOOT_VERSION_OUT_VERSION_OFST 0
26741 #define	MC_CMD_SUC_BOOT_VERSION_OUT_VERSION_LEN 4
26742 
26743 
26744 /***********************************/
26745 /* MC_CMD_SUC_MANFTEST
26746  * Operations to support manftest on SUC based systems.
26747  */
26748 #define	MC_CMD_SUC_MANFTEST 0x135
26749 #define	MC_CMD_SUC_MANFTEST_MSGSET 0x135
26750 #undef	MC_CMD_0x135_PRIVILEGE_CTG
26751 
26752 #define	MC_CMD_0x135_PRIVILEGE_CTG SRIOV_CTG_ADMIN_TSA_UNBOUND
26753 
26754 /* MC_CMD_SUC_MANFTEST_IN msgrequest */
26755 #define	MC_CMD_SUC_MANFTEST_IN_LEN 4
26756 /* The manftest operation to be performed. */
26757 #define	MC_CMD_SUC_MANFTEST_IN_OP_OFST 0
26758 #define	MC_CMD_SUC_MANFTEST_IN_OP_LEN 4
26759 /* enum: Read serial number and use count. */
26760 #define	MC_CMD_SUC_MANFTEST_WEAROUT_READ 0x0
26761 /* enum: Update use count on wearout adapter. */
26762 #define	MC_CMD_SUC_MANFTEST_WEAROUT_UPDATE 0x1
26763 /* enum: Start an ADC calibration. */
26764 #define	MC_CMD_SUC_MANFTEST_ADC_CALIBRATE_START 0x2
26765 /* enum: Read the status of an ADC calibration. */
26766 #define	MC_CMD_SUC_MANFTEST_ADC_CALIBRATE_STATUS 0x3
26767 /* enum: Read the results of an ADC calibration. */
26768 #define	MC_CMD_SUC_MANFTEST_ADC_CALIBRATE_RESULT 0x4
26769 /* enum: Read the PCIe configuration. */
26770 #define	MC_CMD_SUC_MANFTEST_CONFIG_PCIE_READ 0x5
26771 /* enum: Write the PCIe configuration. */
26772 #define	MC_CMD_SUC_MANFTEST_CONFIG_PCIE_WRITE 0x6
26773 /* enum: Write FRU information to SUC. The FRU information is taken from the
26774  * FRU_INFORMATION partition. Attempts to write to read-only FRUs are rejected.
26775  */
26776 #define	MC_CMD_SUC_MANFTEST_FRU_WRITE 0x7
26777 /* enum: Read UDID Vendor Specific ID from SUC persistent storage. */
26778 #define	MC_CMD_SUC_MANFTEST_SMBUS_ID_READ 0x8
26779 /* enum: Write UDID Vendor Specific ID to SUC persistent storage for use in
26780  * SMBus ARP.
26781  */
26782 #define	MC_CMD_SUC_MANFTEST_SMBUS_ID_WRITE 0x9
26783 
26784 /* MC_CMD_SUC_MANFTEST_OUT msgresponse */
26785 #define	MC_CMD_SUC_MANFTEST_OUT_LEN 0
26786 
26787 /* MC_CMD_SUC_MANFTEST_WEAROUT_READ_IN msgrequest */
26788 #define	MC_CMD_SUC_MANFTEST_WEAROUT_READ_IN_LEN 4
26789 /* The manftest operation to be performed. This must be
26790  * MC_CMD_SUC_MANFTEST_WEAROUT_READ.
26791  */
26792 #define	MC_CMD_SUC_MANFTEST_WEAROUT_READ_IN_OP_OFST 0
26793 #define	MC_CMD_SUC_MANFTEST_WEAROUT_READ_IN_OP_LEN 4
26794 
26795 /* MC_CMD_SUC_MANFTEST_WEAROUT_READ_OUT msgresponse */
26796 #define	MC_CMD_SUC_MANFTEST_WEAROUT_READ_OUT_LEN 20
26797 /* The serial number of the wearout adapter, see SF-112717-PR for format. */
26798 #define	MC_CMD_SUC_MANFTEST_WEAROUT_READ_OUT_SERIAL_NUMBER_OFST 0
26799 #define	MC_CMD_SUC_MANFTEST_WEAROUT_READ_OUT_SERIAL_NUMBER_LEN 16
26800 /* The use count of the wearout adapter. */
26801 #define	MC_CMD_SUC_MANFTEST_WEAROUT_READ_OUT_USE_COUNT_OFST 16
26802 #define	MC_CMD_SUC_MANFTEST_WEAROUT_READ_OUT_USE_COUNT_LEN 4
26803 
26804 /* MC_CMD_SUC_MANFTEST_WEAROUT_UPDATE_IN msgrequest */
26805 #define	MC_CMD_SUC_MANFTEST_WEAROUT_UPDATE_IN_LEN 4
26806 /* The manftest operation to be performed. This must be
26807  * MC_CMD_SUC_MANFTEST_WEAROUT_UPDATE.
26808  */
26809 #define	MC_CMD_SUC_MANFTEST_WEAROUT_UPDATE_IN_OP_OFST 0
26810 #define	MC_CMD_SUC_MANFTEST_WEAROUT_UPDATE_IN_OP_LEN 4
26811 
26812 /* MC_CMD_SUC_MANFTEST_WEAROUT_UPDATE_OUT msgresponse */
26813 #define	MC_CMD_SUC_MANFTEST_WEAROUT_UPDATE_OUT_LEN 0
26814 
26815 /* MC_CMD_SUC_MANFTEST_ADC_CALIBRATE_START_IN msgrequest */
26816 #define	MC_CMD_SUC_MANFTEST_ADC_CALIBRATE_START_IN_LEN 4
26817 /* The manftest operation to be performed. This must be
26818  * MC_CMD_SUC_MANFTEST_ADC_CALIBRATE_START.
26819  */
26820 #define	MC_CMD_SUC_MANFTEST_ADC_CALIBRATE_START_IN_OP_OFST 0
26821 #define	MC_CMD_SUC_MANFTEST_ADC_CALIBRATE_START_IN_OP_LEN 4
26822 
26823 /* MC_CMD_SUC_MANFTEST_ADC_CALIBRATE_START_OUT msgresponse */
26824 #define	MC_CMD_SUC_MANFTEST_ADC_CALIBRATE_START_OUT_LEN 0
26825 
26826 /* MC_CMD_SUC_MANFTEST_ADC_CALIBRATE_STATUS_IN msgrequest */
26827 #define	MC_CMD_SUC_MANFTEST_ADC_CALIBRATE_STATUS_IN_LEN 4
26828 /* The manftest operation to be performed. This must be
26829  * MC_CMD_SUC_MANFTEST_ADC_CALIBRATE_STATUS.
26830  */
26831 #define	MC_CMD_SUC_MANFTEST_ADC_CALIBRATE_STATUS_IN_OP_OFST 0
26832 #define	MC_CMD_SUC_MANFTEST_ADC_CALIBRATE_STATUS_IN_OP_LEN 4
26833 
26834 /* MC_CMD_SUC_MANFTEST_ADC_CALIBRATE_STATUS_OUT msgresponse */
26835 #define	MC_CMD_SUC_MANFTEST_ADC_CALIBRATE_STATUS_OUT_LEN 4
26836 /* The combined status of the calibration operation. */
26837 #define	MC_CMD_SUC_MANFTEST_ADC_CALIBRATE_STATUS_OUT_FLAGS_OFST 0
26838 #define	MC_CMD_SUC_MANFTEST_ADC_CALIBRATE_STATUS_OUT_FLAGS_LEN 4
26839 #define	MC_CMD_SUC_MANFTEST_ADC_CALIBRATE_STATUS_OUT_CALIBRATING_OFST 0
26840 #define	MC_CMD_SUC_MANFTEST_ADC_CALIBRATE_STATUS_OUT_CALIBRATING_LBN 0
26841 #define	MC_CMD_SUC_MANFTEST_ADC_CALIBRATE_STATUS_OUT_CALIBRATING_WIDTH 1
26842 #define	MC_CMD_SUC_MANFTEST_ADC_CALIBRATE_STATUS_OUT_FAILED_OFST 0
26843 #define	MC_CMD_SUC_MANFTEST_ADC_CALIBRATE_STATUS_OUT_FAILED_LBN 1
26844 #define	MC_CMD_SUC_MANFTEST_ADC_CALIBRATE_STATUS_OUT_FAILED_WIDTH 1
26845 #define	MC_CMD_SUC_MANFTEST_ADC_CALIBRATE_STATUS_OUT_RESULT_OFST 0
26846 #define	MC_CMD_SUC_MANFTEST_ADC_CALIBRATE_STATUS_OUT_RESULT_LBN 2
26847 #define	MC_CMD_SUC_MANFTEST_ADC_CALIBRATE_STATUS_OUT_RESULT_WIDTH 4
26848 #define	MC_CMD_SUC_MANFTEST_ADC_CALIBRATE_STATUS_OUT_INDEX_OFST 0
26849 #define	MC_CMD_SUC_MANFTEST_ADC_CALIBRATE_STATUS_OUT_INDEX_LBN 6
26850 #define	MC_CMD_SUC_MANFTEST_ADC_CALIBRATE_STATUS_OUT_INDEX_WIDTH 2
26851 
26852 /* MC_CMD_SUC_MANFTEST_ADC_CALIBRATE_RESULT_IN msgrequest */
26853 #define	MC_CMD_SUC_MANFTEST_ADC_CALIBRATE_RESULT_IN_LEN 4
26854 /* The manftest operation to be performed. This must be
26855  * MC_CMD_SUC_MANFTEST_ADC_CALIBRATE_RESULT.
26856  */
26857 #define	MC_CMD_SUC_MANFTEST_ADC_CALIBRATE_RESULT_IN_OP_OFST 0
26858 #define	MC_CMD_SUC_MANFTEST_ADC_CALIBRATE_RESULT_IN_OP_LEN 4
26859 
26860 /* MC_CMD_SUC_MANFTEST_ADC_CALIBRATE_RESULT_OUT msgresponse */
26861 #define	MC_CMD_SUC_MANFTEST_ADC_CALIBRATE_RESULT_OUT_LEN 12
26862 /* The set of calibration results. */
26863 #define	MC_CMD_SUC_MANFTEST_ADC_CALIBRATE_RESULT_OUT_VALUE_OFST 0
26864 #define	MC_CMD_SUC_MANFTEST_ADC_CALIBRATE_RESULT_OUT_VALUE_LEN 4
26865 #define	MC_CMD_SUC_MANFTEST_ADC_CALIBRATE_RESULT_OUT_VALUE_NUM 3
26866 
26867 /* MC_CMD_SUC_MANFTEST_CONFIG_PCIE_READ_IN msgrequest */
26868 #define	MC_CMD_SUC_MANFTEST_CONFIG_PCIE_READ_IN_LEN 4
26869 /* The manftest operation to be performed. This must be
26870  * MC_CMD_SUC_MANFTEST_CONFIG_PCIE_READ.
26871  */
26872 #define	MC_CMD_SUC_MANFTEST_CONFIG_PCIE_READ_IN_OP_OFST 0
26873 #define	MC_CMD_SUC_MANFTEST_CONFIG_PCIE_READ_IN_OP_LEN 4
26874 
26875 /* MC_CMD_SUC_MANFTEST_CONFIG_PCIE_READ_OUT msgresponse */
26876 #define	MC_CMD_SUC_MANFTEST_CONFIG_PCIE_READ_OUT_LEN 4
26877 /* The PCIe vendor ID. */
26878 #define	MC_CMD_SUC_MANFTEST_CONFIG_PCIE_READ_OUT_VENDOR_ID_OFST 0
26879 #define	MC_CMD_SUC_MANFTEST_CONFIG_PCIE_READ_OUT_VENDOR_ID_LEN 2
26880 /* The PCIe device ID. */
26881 #define	MC_CMD_SUC_MANFTEST_CONFIG_PCIE_READ_OUT_DEVICE_ID_OFST 2
26882 #define	MC_CMD_SUC_MANFTEST_CONFIG_PCIE_READ_OUT_DEVICE_ID_LEN 2
26883 
26884 /* MC_CMD_SUC_MANFTEST_CONFIG_PCIE_WRITE_IN msgrequest */
26885 #define	MC_CMD_SUC_MANFTEST_CONFIG_PCIE_WRITE_IN_LEN 8
26886 /* The manftest operation to be performed. This must be
26887  * MC_CMD_SUC_MANFTEST_CONFIG_PCIE_WRITE.
26888  */
26889 #define	MC_CMD_SUC_MANFTEST_CONFIG_PCIE_WRITE_IN_OP_OFST 0
26890 #define	MC_CMD_SUC_MANFTEST_CONFIG_PCIE_WRITE_IN_OP_LEN 4
26891 /* The PCIe vendor ID. */
26892 #define	MC_CMD_SUC_MANFTEST_CONFIG_PCIE_WRITE_IN_VENDOR_ID_OFST 4
26893 #define	MC_CMD_SUC_MANFTEST_CONFIG_PCIE_WRITE_IN_VENDOR_ID_LEN 2
26894 /* The PCIe device ID. */
26895 #define	MC_CMD_SUC_MANFTEST_CONFIG_PCIE_WRITE_IN_DEVICE_ID_OFST 6
26896 #define	MC_CMD_SUC_MANFTEST_CONFIG_PCIE_WRITE_IN_DEVICE_ID_LEN 2
26897 
26898 /* MC_CMD_SUC_MANFTEST_CONFIG_PCIE_WRITE_OUT msgresponse */
26899 #define	MC_CMD_SUC_MANFTEST_CONFIG_PCIE_WRITE_OUT_LEN 0
26900 
26901 /* MC_CMD_SUC_MANFTEST_FRU_WRITE_IN msgrequest */
26902 #define	MC_CMD_SUC_MANFTEST_FRU_WRITE_IN_LEN 4
26903 /* The manftest operation to be performed. This must be
26904  * MC_CMD_SUC_MANFTEST_FRU_WRITE
26905  */
26906 #define	MC_CMD_SUC_MANFTEST_FRU_WRITE_IN_OP_OFST 0
26907 #define	MC_CMD_SUC_MANFTEST_FRU_WRITE_IN_OP_LEN 4
26908 
26909 /* MC_CMD_SUC_MANFTEST_FRU_WRITE_OUT msgresponse */
26910 #define	MC_CMD_SUC_MANFTEST_FRU_WRITE_OUT_LEN 0
26911 
26912 /* MC_CMD_SUC_MANFTEST_SMBUS_ID_READ_IN msgrequest */
26913 #define	MC_CMD_SUC_MANFTEST_SMBUS_ID_READ_IN_LEN 4
26914 /* The manftest operation to be performed. This must be
26915  * MC_CMD_SUC_MANFTEST_SMBUS_ID_READ.
26916  */
26917 #define	MC_CMD_SUC_MANFTEST_SMBUS_ID_READ_IN_OP_OFST 0
26918 #define	MC_CMD_SUC_MANFTEST_SMBUS_ID_READ_IN_OP_LEN 4
26919 
26920 /* MC_CMD_SUC_MANFTEST_SMBUS_ID_READ_OUT msgresponse */
26921 #define	MC_CMD_SUC_MANFTEST_SMBUS_ID_READ_OUT_LEN 4
26922 /* The SMBus ID. */
26923 #define	MC_CMD_SUC_MANFTEST_SMBUS_ID_READ_OUT_SMBUS_ID_OFST 0
26924 #define	MC_CMD_SUC_MANFTEST_SMBUS_ID_READ_OUT_SMBUS_ID_LEN 4
26925 
26926 /* MC_CMD_SUC_MANFTEST_SMBUS_ID_WRITE_IN msgrequest */
26927 #define	MC_CMD_SUC_MANFTEST_SMBUS_ID_WRITE_IN_LEN 8
26928 /* The manftest operation to be performed. This must be
26929  * MC_CMD_SUC_MANFTEST_SMBUS_ID_WRITE.
26930  */
26931 #define	MC_CMD_SUC_MANFTEST_SMBUS_ID_WRITE_IN_OP_OFST 0
26932 #define	MC_CMD_SUC_MANFTEST_SMBUS_ID_WRITE_IN_OP_LEN 4
26933 /* The SMBus ID. */
26934 #define	MC_CMD_SUC_MANFTEST_SMBUS_ID_WRITE_IN_SMBUS_ID_OFST 4
26935 #define	MC_CMD_SUC_MANFTEST_SMBUS_ID_WRITE_IN_SMBUS_ID_LEN 4
26936 
26937 /* MC_CMD_SUC_MANFTEST_SMBUS_ID_WRITE_OUT msgresponse */
26938 #define	MC_CMD_SUC_MANFTEST_SMBUS_ID_WRITE_OUT_LEN 0
26939 
26940 
26941 /***********************************/
26942 /* MC_CMD_GET_CERTIFICATE
26943  * Request a certificate.
26944  */
26945 #define	MC_CMD_GET_CERTIFICATE 0x12c
26946 #define	MC_CMD_GET_CERTIFICATE_MSGSET 0x12c
26947 #undef	MC_CMD_0x12c_PRIVILEGE_CTG
26948 
26949 #define	MC_CMD_0x12c_PRIVILEGE_CTG SRIOV_CTG_GENERAL
26950 
26951 /* MC_CMD_GET_CERTIFICATE_IN msgrequest */
26952 #define	MC_CMD_GET_CERTIFICATE_IN_LEN 8
26953 /* Type of the certificate to be retrieved. */
26954 #define	MC_CMD_GET_CERTIFICATE_IN_TYPE_OFST 0
26955 #define	MC_CMD_GET_CERTIFICATE_IN_TYPE_LEN 4
26956 #define	MC_CMD_GET_CERTIFICATE_IN_UNUSED 0x0 /* enum */
26957 #define	MC_CMD_GET_CERTIFICATE_IN_AAC 0x1 /* enum */
26958 /* enum: Adapter Authentication Certificate (AAC). The AAC is unique to each
26959  * adapter and is used to verify its authenticity. It is installed by Manftest.
26960  */
26961 #define	MC_CMD_GET_CERTIFICATE_IN_ADAPTER_AUTH 0x1
26962 #define	MC_CMD_GET_CERTIFICATE_IN_AASC 0x2 /* enum */
26963 /* enum: Adapter Authentication Signing Certificate (AASC). The AASC is shared
26964  * by a group of adapters (typically a purchase order) and is used to verify
26965  * the validity of AAC along with the SF root certificate. It is installed by
26966  * Manftest.
26967  */
26968 #define	MC_CMD_GET_CERTIFICATE_IN_ADAPTER_AUTH_SIGNING 0x2
26969 #define	MC_CMD_GET_CERTIFICATE_IN_CUSTOMER_AAC 0x3 /* enum */
26970 /* enum: Customer Adapter Authentication Certificate. The Customer AAC is
26971  * unique to each adapter and is used to verify its authenticity in cases where
26972  * either the AAC is not installed or a customer desires to use their own
26973  * certificate chain. It is installed by the customer.
26974  */
26975 #define	MC_CMD_GET_CERTIFICATE_IN_CUSTOMER_ADAPTER_AUTH 0x3
26976 #define	MC_CMD_GET_CERTIFICATE_IN_CUSTOMER_AASC 0x4 /* enum */
26977 /* enum: Customer Adapter Authentication Certificate. The Customer AASC is
26978  * shared by a group of adapters and is used to verify the validity of the
26979  * Customer AAC along with the customers root certificate. It is installed by
26980  * the customer.
26981  */
26982 #define	MC_CMD_GET_CERTIFICATE_IN_CUSTOMER_ADAPTER_AUTH_SIGNING 0x4
26983 /* Offset, measured in bytes, relative to the start of the certificate data
26984  * from which the certificate is to be retrieved.
26985  */
26986 #define	MC_CMD_GET_CERTIFICATE_IN_OFFSET_OFST 4
26987 #define	MC_CMD_GET_CERTIFICATE_IN_OFFSET_LEN 4
26988 
26989 /* MC_CMD_GET_CERTIFICATE_OUT msgresponse */
26990 #define	MC_CMD_GET_CERTIFICATE_OUT_LENMIN 13
26991 #define	MC_CMD_GET_CERTIFICATE_OUT_LENMAX 252
26992 #define	MC_CMD_GET_CERTIFICATE_OUT_LENMAX_MCDI2 1020
26993 #define	MC_CMD_GET_CERTIFICATE_OUT_LEN(num) (12+1*(num))
26994 #define	MC_CMD_GET_CERTIFICATE_OUT_DATA_NUM(len) (((len)-12)/1)
26995 /* Type of the certificate. */
26996 #define	MC_CMD_GET_CERTIFICATE_OUT_TYPE_OFST 0
26997 #define	MC_CMD_GET_CERTIFICATE_OUT_TYPE_LEN 4
26998 /*            Enum values, see field(s): */
26999 /*               MC_CMD_GET_CERTIFICATE_IN/TYPE */
27000 /* Offset, measured in bytes, relative to the start of the certificate data
27001  * from which data in this message starts.
27002  */
27003 #define	MC_CMD_GET_CERTIFICATE_OUT_OFFSET_OFST 4
27004 #define	MC_CMD_GET_CERTIFICATE_OUT_OFFSET_LEN 4
27005 /* Total length of the certificate data. */
27006 #define	MC_CMD_GET_CERTIFICATE_OUT_TOTAL_LENGTH_OFST 8
27007 #define	MC_CMD_GET_CERTIFICATE_OUT_TOTAL_LENGTH_LEN 4
27008 /* The certificate data. */
27009 #define	MC_CMD_GET_CERTIFICATE_OUT_DATA_OFST 12
27010 #define	MC_CMD_GET_CERTIFICATE_OUT_DATA_LEN 1
27011 #define	MC_CMD_GET_CERTIFICATE_OUT_DATA_MINNUM 1
27012 #define	MC_CMD_GET_CERTIFICATE_OUT_DATA_MAXNUM 240
27013 #define	MC_CMD_GET_CERTIFICATE_OUT_DATA_MAXNUM_MCDI2 1008
27014 
27015 
27016 /***********************************/
27017 /* MC_CMD_GET_NIC_GLOBAL
27018  * Get a global value which applies to all PCI functions
27019  */
27020 #define	MC_CMD_GET_NIC_GLOBAL 0x12d
27021 #define	MC_CMD_GET_NIC_GLOBAL_MSGSET 0x12d
27022 #undef	MC_CMD_0x12d_PRIVILEGE_CTG
27023 
27024 #define	MC_CMD_0x12d_PRIVILEGE_CTG SRIOV_CTG_GENERAL
27025 
27026 /* MC_CMD_GET_NIC_GLOBAL_IN msgrequest */
27027 #define	MC_CMD_GET_NIC_GLOBAL_IN_LEN 4
27028 /* Key to request value for, see enum values in MC_CMD_SET_NIC_GLOBAL. If the
27029  * given key is unknown to the current firmware, the call will fail with
27030  * ENOENT.
27031  */
27032 #define	MC_CMD_GET_NIC_GLOBAL_IN_KEY_OFST 0
27033 #define	MC_CMD_GET_NIC_GLOBAL_IN_KEY_LEN 4
27034 
27035 /* MC_CMD_GET_NIC_GLOBAL_OUT msgresponse */
27036 #define	MC_CMD_GET_NIC_GLOBAL_OUT_LEN 4
27037 /* Value of requested key, see key descriptions below. */
27038 #define	MC_CMD_GET_NIC_GLOBAL_OUT_VALUE_OFST 0
27039 #define	MC_CMD_GET_NIC_GLOBAL_OUT_VALUE_LEN 4
27040 
27041 
27042 /***********************************/
27043 /* MC_CMD_SET_NIC_GLOBAL
27044  * Set a global value which applies to all PCI functions. Most global values
27045  * can only be changed under specific conditions, and this call will return an
27046  * appropriate error otherwise (see key descriptions).
27047  */
27048 #define	MC_CMD_SET_NIC_GLOBAL 0x12e
27049 #define	MC_CMD_SET_NIC_GLOBAL_MSGSET 0x12e
27050 #undef	MC_CMD_0x12e_PRIVILEGE_CTG
27051 
27052 #define	MC_CMD_0x12e_PRIVILEGE_CTG SRIOV_CTG_ADMIN
27053 
27054 /* MC_CMD_SET_NIC_GLOBAL_IN msgrequest */
27055 #define	MC_CMD_SET_NIC_GLOBAL_IN_LEN 8
27056 /* Key to change value of. Firmware will return ENOENT for keys it doesn't know
27057  * about.
27058  */
27059 #define	MC_CMD_SET_NIC_GLOBAL_IN_KEY_OFST 0
27060 #define	MC_CMD_SET_NIC_GLOBAL_IN_KEY_LEN 4
27061 /* enum: Request switching the datapath firmware sub-variant. Currently only
27062  * useful when running the DPDK f/w variant. See key values below, and the DPDK
27063  * section of the EF10 Driver Writers Guide. Note that any driver attaching
27064  * with the SUBVARIANT_AWARE flag cleared is implicitly considered as a request
27065  * to switch back to the default sub-variant, and will thus reset this value.
27066  * If a sub-variant switch happens, all other PCI functions will get their
27067  * resources reset (they will see an MC reboot).
27068  */
27069 #define	MC_CMD_SET_NIC_GLOBAL_IN_FIRMWARE_SUBVARIANT 0x1
27070 /* New value to set, see key descriptions above. */
27071 #define	MC_CMD_SET_NIC_GLOBAL_IN_VALUE_OFST 4
27072 #define	MC_CMD_SET_NIC_GLOBAL_IN_VALUE_LEN 4
27073 /* enum: Only if KEY = FIRMWARE_SUBVARIANT. Default sub-variant with support
27074  * for maximum features for the current f/w variant. A request from a
27075  * privileged function to set this particular value will always succeed.
27076  */
27077 #define	MC_CMD_SET_NIC_GLOBAL_IN_FW_SUBVARIANT_DEFAULT 0x0
27078 /* enum: Only if KEY = FIRMWARE_SUBVARIANT. Increases packet rate at the cost
27079  * of not supporting any TX checksum offloads. Only supported when running some
27080  * f/w variants, others will return ENOTSUP (as reported by the homonymous bit
27081  * in MC_CMD_GET_CAPABILITIES_V2). Can only be set when no other drivers are
27082  * attached, and the calling driver must have no resources allocated. See the
27083  * DPDK section of the EF10 Driver Writers Guide for a more detailed
27084  * description with possible error codes.
27085  */
27086 #define	MC_CMD_SET_NIC_GLOBAL_IN_FW_SUBVARIANT_NO_TX_CSUM 0x1
27087 
27088 
27089 /***********************************/
27090 /* MC_CMD_LTSSM_TRACE_POLL
27091  * Medford2 hardware has support for logging all LTSSM state transitions to a
27092  * hardware buffer. When built with WITH_LTSSM_TRACE=1, the firmware will
27093  * periodially dump the contents of this hardware buffer to an internal
27094  * firmware buffer for later extraction.
27095  */
27096 #define	MC_CMD_LTSSM_TRACE_POLL 0x12f
27097 #define	MC_CMD_LTSSM_TRACE_POLL_MSGSET 0x12f
27098 #undef	MC_CMD_0x12f_PRIVILEGE_CTG
27099 
27100 #define	MC_CMD_0x12f_PRIVILEGE_CTG SRIOV_CTG_ADMIN
27101 
27102 /* MC_CMD_LTSSM_TRACE_POLL_IN msgrequest: Read transitions from the firmware
27103  * internal buffer.
27104  */
27105 #define	MC_CMD_LTSSM_TRACE_POLL_IN_LEN 4
27106 /* The maximum number of row that the caller can accept. The format of each row
27107  * is defined in MC_CMD_LTSSM_TRACE_POLL_OUT.
27108  */
27109 #define	MC_CMD_LTSSM_TRACE_POLL_IN_MAX_ROW_COUNT_OFST 0
27110 #define	MC_CMD_LTSSM_TRACE_POLL_IN_MAX_ROW_COUNT_LEN 4
27111 
27112 /* MC_CMD_LTSSM_TRACE_POLL_OUT msgresponse */
27113 #define	MC_CMD_LTSSM_TRACE_POLL_OUT_LENMIN 16
27114 #define	MC_CMD_LTSSM_TRACE_POLL_OUT_LENMAX 248
27115 #define	MC_CMD_LTSSM_TRACE_POLL_OUT_LENMAX_MCDI2 1016
27116 #define	MC_CMD_LTSSM_TRACE_POLL_OUT_LEN(num) (8+8*(num))
27117 #define	MC_CMD_LTSSM_TRACE_POLL_OUT_ROWS_NUM(len) (((len)-8)/8)
27118 #define	MC_CMD_LTSSM_TRACE_POLL_OUT_FLAGS_OFST 0
27119 #define	MC_CMD_LTSSM_TRACE_POLL_OUT_FLAGS_LEN 4
27120 #define	MC_CMD_LTSSM_TRACE_POLL_OUT_HW_BUFFER_OVERFLOW_OFST 0
27121 #define	MC_CMD_LTSSM_TRACE_POLL_OUT_HW_BUFFER_OVERFLOW_LBN 0
27122 #define	MC_CMD_LTSSM_TRACE_POLL_OUT_HW_BUFFER_OVERFLOW_WIDTH 1
27123 #define	MC_CMD_LTSSM_TRACE_POLL_OUT_FW_BUFFER_OVERFLOW_OFST 0
27124 #define	MC_CMD_LTSSM_TRACE_POLL_OUT_FW_BUFFER_OVERFLOW_LBN 1
27125 #define	MC_CMD_LTSSM_TRACE_POLL_OUT_FW_BUFFER_OVERFLOW_WIDTH 1
27126 #define	MC_CMD_LTSSM_TRACE_POLL_OUT_CONTINUES_OFST 0
27127 #define	MC_CMD_LTSSM_TRACE_POLL_OUT_CONTINUES_LBN 31
27128 #define	MC_CMD_LTSSM_TRACE_POLL_OUT_CONTINUES_WIDTH 1
27129 /* The number of rows present in this response. */
27130 #define	MC_CMD_LTSSM_TRACE_POLL_OUT_ROW_COUNT_OFST 4
27131 #define	MC_CMD_LTSSM_TRACE_POLL_OUT_ROW_COUNT_LEN 4
27132 #define	MC_CMD_LTSSM_TRACE_POLL_OUT_ROWS_OFST 8
27133 #define	MC_CMD_LTSSM_TRACE_POLL_OUT_ROWS_LEN 8
27134 #define	MC_CMD_LTSSM_TRACE_POLL_OUT_ROWS_LO_OFST 8
27135 #define	MC_CMD_LTSSM_TRACE_POLL_OUT_ROWS_LO_LEN 4
27136 #define	MC_CMD_LTSSM_TRACE_POLL_OUT_ROWS_LO_LBN 64
27137 #define	MC_CMD_LTSSM_TRACE_POLL_OUT_ROWS_LO_WIDTH 32
27138 #define	MC_CMD_LTSSM_TRACE_POLL_OUT_ROWS_HI_OFST 12
27139 #define	MC_CMD_LTSSM_TRACE_POLL_OUT_ROWS_HI_LEN 4
27140 #define	MC_CMD_LTSSM_TRACE_POLL_OUT_ROWS_HI_LBN 96
27141 #define	MC_CMD_LTSSM_TRACE_POLL_OUT_ROWS_HI_WIDTH 32
27142 #define	MC_CMD_LTSSM_TRACE_POLL_OUT_ROWS_MINNUM 0
27143 #define	MC_CMD_LTSSM_TRACE_POLL_OUT_ROWS_MAXNUM 30
27144 #define	MC_CMD_LTSSM_TRACE_POLL_OUT_ROWS_MAXNUM_MCDI2 126
27145 #define	MC_CMD_LTSSM_TRACE_POLL_OUT_LTSSM_STATE_OFST 8
27146 #define	MC_CMD_LTSSM_TRACE_POLL_OUT_LTSSM_STATE_LBN 0
27147 #define	MC_CMD_LTSSM_TRACE_POLL_OUT_LTSSM_STATE_WIDTH 6
27148 #define	MC_CMD_LTSSM_TRACE_POLL_OUT_RDLH_LINK_UP_OFST 8
27149 #define	MC_CMD_LTSSM_TRACE_POLL_OUT_RDLH_LINK_UP_LBN 6
27150 #define	MC_CMD_LTSSM_TRACE_POLL_OUT_RDLH_LINK_UP_WIDTH 1
27151 #define	MC_CMD_LTSSM_TRACE_POLL_OUT_WAKE_N_OFST 8
27152 #define	MC_CMD_LTSSM_TRACE_POLL_OUT_WAKE_N_LBN 7
27153 #define	MC_CMD_LTSSM_TRACE_POLL_OUT_WAKE_N_WIDTH 1
27154 #define	MC_CMD_LTSSM_TRACE_POLL_OUT_TIMESTAMP_PS_OFST 8
27155 #define	MC_CMD_LTSSM_TRACE_POLL_OUT_TIMESTAMP_PS_LBN 8
27156 #define	MC_CMD_LTSSM_TRACE_POLL_OUT_TIMESTAMP_PS_WIDTH 24
27157 /* The time of the LTSSM transition. Times are reported as fractional
27158  * microseconds since MC boot (wrapping at 2^32us). The fractional part is
27159  * reported in picoseconds. 0 <= TIMESTAMP_PS < 1000000 timestamp in seconds =
27160  * ((TIMESTAMP_US + TIMESTAMP_PS / 1000000) / 1000000)
27161  */
27162 #define	MC_CMD_LTSSM_TRACE_POLL_OUT_TIMESTAMP_US_OFST 12
27163 #define	MC_CMD_LTSSM_TRACE_POLL_OUT_TIMESTAMP_US_LEN 4
27164 
27165 
27166 /***********************************/
27167 /* MC_CMD_TELEMETRY_ENABLE
27168  * This command enables telemetry processing of packets, allowing a remote host
27169  * to gather information and analytics passing on the card. Enabling telemetry
27170  * will have a performance cost. Not supported on all hardware and datapath
27171  * variants. As of writing, only supported on Medford2 running full-featured
27172  * firmware variant.
27173  */
27174 #define	MC_CMD_TELEMETRY_ENABLE 0x138
27175 #define	MC_CMD_TELEMETRY_ENABLE_MSGSET 0x138
27176 #undef	MC_CMD_0x138_PRIVILEGE_CTG
27177 
27178 #define	MC_CMD_0x138_PRIVILEGE_CTG SRIOV_CTG_ADMIN
27179 
27180 /* MC_CMD_TELEMETRY_ENABLE_IN msgrequest */
27181 #define	MC_CMD_TELEMETRY_ENABLE_IN_LEN 4
27182 #define	MC_CMD_TELEMETRY_ENABLE_IN_STATE_OFST 0
27183 #define	MC_CMD_TELEMETRY_ENABLE_IN_STATE_LEN 4
27184 /* enum: Disables telemetry functionality, returns the card to default
27185  * behaviour of the configured datapath variant.
27186  */
27187 #define	MC_CMD_TELEMETRY_ENABLE_IN_DISABLE 0x0
27188 /* enum: Enables telemetry functionality on the currently configured datapath
27189  * variant if supported.
27190  */
27191 #define	MC_CMD_TELEMETRY_ENABLE_IN_ENABLE 0x1
27192 
27193 /* MC_CMD_TELEMETRY_ENABLE_OUT msgresponse */
27194 #define	MC_CMD_TELEMETRY_ENABLE_OUT_LEN 0
27195 
27196 /* TELEMETRY_CONFIG structuredef */
27197 #define	TELEMETRY_CONFIG_LEN 36
27198 /* Bitfields to identify the list of config parameters included in the command.
27199  * A bit-value of 1 indicates that the relevant config parameter field is
27200  * valid; 0 indicates invalid and the config parameter field must be ignored by
27201  * firmware. Firmware may however apply some default values for certain
27202  * parameters.
27203  */
27204 #define	TELEMETRY_CONFIG_FLAGS_OFST 0
27205 #define	TELEMETRY_CONFIG_FLAGS_LEN 4
27206 #define	TELEMETRY_CONFIG_METRICS_COLLECTOR_IP_VALID_OFST 0
27207 #define	TELEMETRY_CONFIG_METRICS_COLLECTOR_IP_VALID_LBN 0
27208 #define	TELEMETRY_CONFIG_METRICS_COLLECTOR_IP_VALID_WIDTH 1
27209 #define	TELEMETRY_CONFIG_METRICS_COLLECTOR_PORT_VALID_OFST 0
27210 #define	TELEMETRY_CONFIG_METRICS_COLLECTOR_PORT_VALID_LBN 1
27211 #define	TELEMETRY_CONFIG_METRICS_COLLECTOR_PORT_VALID_WIDTH 1
27212 #define	TELEMETRY_CONFIG_MONITOR_TIMEOUT_MS_VALID_OFST 0
27213 #define	TELEMETRY_CONFIG_MONITOR_TIMEOUT_MS_VALID_LBN 2
27214 #define	TELEMETRY_CONFIG_MONITOR_TIMEOUT_MS_VALID_WIDTH 1
27215 #define	TELEMETRY_CONFIG_MAX_METRICS_COUNT_VALID_OFST 0
27216 #define	TELEMETRY_CONFIG_MAX_METRICS_COUNT_VALID_LBN 3
27217 #define	TELEMETRY_CONFIG_MAX_METRICS_COUNT_VALID_WIDTH 1
27218 #define	TELEMETRY_CONFIG_RESERVED1_OFST 0
27219 #define	TELEMETRY_CONFIG_RESERVED1_LBN 4
27220 #define	TELEMETRY_CONFIG_RESERVED1_WIDTH 28
27221 #define	TELEMETRY_CONFIG_FLAGS_LBN 0
27222 #define	TELEMETRY_CONFIG_FLAGS_WIDTH 32
27223 /* Collector IPv4/IPv6 address to which latency measurements are forwarded from
27224  * the adapter (as bytes in network order; set last 12 bytes to 0 for IPv4
27225  * address).
27226  */
27227 #define	TELEMETRY_CONFIG_METRICS_COLLECTOR_IP_OFST 4
27228 #define	TELEMETRY_CONFIG_METRICS_COLLECTOR_IP_LEN 16
27229 #define	TELEMETRY_CONFIG_METRICS_COLLECTOR_IP_LBN 32
27230 #define	TELEMETRY_CONFIG_METRICS_COLLECTOR_IP_WIDTH 128
27231 /* Collector Port number to which latency measurements are forwarded from the
27232  * adapter (as bytes in network order).
27233  */
27234 #define	TELEMETRY_CONFIG_METRICS_COLLECTOR_PORT_OFST 20
27235 #define	TELEMETRY_CONFIG_METRICS_COLLECTOR_PORT_LEN 2
27236 #define	TELEMETRY_CONFIG_METRICS_COLLECTOR_PORT_LBN 160
27237 #define	TELEMETRY_CONFIG_METRICS_COLLECTOR_PORT_WIDTH 16
27238 /* Unused - set to 0. */
27239 #define	TELEMETRY_CONFIG_RESERVED2_OFST 22
27240 #define	TELEMETRY_CONFIG_RESERVED2_LEN 2
27241 #define	TELEMETRY_CONFIG_RESERVED2_LBN 176
27242 #define	TELEMETRY_CONFIG_RESERVED2_WIDTH 16
27243 /* MAC address of the collector (as bytes in network order). */
27244 #define	TELEMETRY_CONFIG_METRICS_COLLECTOR_MAC_ADDR_OFST 24
27245 #define	TELEMETRY_CONFIG_METRICS_COLLECTOR_MAC_ADDR_LEN 6
27246 #define	TELEMETRY_CONFIG_METRICS_COLLECTOR_MAC_ADDR_LBN 192
27247 #define	TELEMETRY_CONFIG_METRICS_COLLECTOR_MAC_ADDR_WIDTH 48
27248 /* Maximum number of latency measurements to be made on a telemetry flow. */
27249 #define	TELEMETRY_CONFIG_MAX_METRICS_COUNT_OFST 30
27250 #define	TELEMETRY_CONFIG_MAX_METRICS_COUNT_LEN 2
27251 #define	TELEMETRY_CONFIG_MAX_METRICS_COUNT_LBN 240
27252 #define	TELEMETRY_CONFIG_MAX_METRICS_COUNT_WIDTH 16
27253 /* Maximum duration for which a telemetry flow is monitored (in millisecs). */
27254 #define	TELEMETRY_CONFIG_MONITOR_TIMEOUT_MS_OFST 32
27255 #define	TELEMETRY_CONFIG_MONITOR_TIMEOUT_MS_LEN 4
27256 #define	TELEMETRY_CONFIG_MONITOR_TIMEOUT_MS_LBN 256
27257 #define	TELEMETRY_CONFIG_MONITOR_TIMEOUT_MS_WIDTH 32
27258 
27259 
27260 /***********************************/
27261 /* MC_CMD_TELEMETRY_CONFIG
27262  * This top-level command includes various sub-opcodes that are used to apply
27263  * (and read-back) telemetry related configuration parameters on the NIC.
27264  * Reference - SF-120569-SW Telemetry Firmware Design.
27265  */
27266 #define	MC_CMD_TELEMETRY_CONFIG 0x139
27267 #define	MC_CMD_TELEMETRY_CONFIG_MSGSET 0x139
27268 #undef	MC_CMD_0x139_PRIVILEGE_CTG
27269 
27270 #define	MC_CMD_0x139_PRIVILEGE_CTG SRIOV_CTG_ADMIN
27271 
27272 /* MC_CMD_TELEMETRY_CONFIG_IN msgrequest */
27273 #define	MC_CMD_TELEMETRY_CONFIG_IN_LEN 4
27274 /* Telemetry configuration sub-operation code */
27275 #define	MC_CMD_TELEMETRY_CONFIG_IN_OP_OFST 0
27276 #define	MC_CMD_TELEMETRY_CONFIG_IN_OP_LEN 4
27277 /* enum: Configure parameters for telemetry measurements. */
27278 #define	MC_CMD_TELEMETRY_CONFIG_OP_SET 0x1
27279 /* enum: Read current values of parameters for telemetry measurements. */
27280 #define	MC_CMD_TELEMETRY_CONFIG_OP_GET 0x2
27281 
27282 /* MC_CMD_TELEMETRY_CONFIG_IN_SET msgrequest: This command configures the
27283  * parameters necessary for tcp-latency measurements. The adapter adds a filter
27284  * for every new tcp flow seen in both tx and rx directions and tracks the
27285  * telemetry measurements related to the flow in a tracking table. Entries in
27286  * the tracking table live as long as N measurements are made on the flow or
27287  * the flow has been in the tracking table for the maximum configured duration.
27288  * Telemetry measurements in this command refer to tcp-latency measurements for
27289  * data-to-ack latency as well as data-to-data latency. All telemetry
27290  * measurements are bundled into a UDP packet and forwarded to a collector
27291  * whose IP address is configured using this command.
27292  */
27293 #define	MC_CMD_TELEMETRY_CONFIG_IN_SET_LEN 40
27294 /* Telemetry configuration sub-operation code. Must be set to
27295  * MC_CMD_TELEMETRY_CONFIG_OP_SET.
27296  */
27297 #define	MC_CMD_TELEMETRY_CONFIG_IN_SET_OP_OFST 0
27298 #define	MC_CMD_TELEMETRY_CONFIG_IN_SET_OP_LEN 4
27299 /* struct of type TELEMETRY_CONFIG. */
27300 #define	MC_CMD_TELEMETRY_CONFIG_IN_SET_PARAMETERS_OFST 4
27301 #define	MC_CMD_TELEMETRY_CONFIG_IN_SET_PARAMETERS_LEN 36
27302 
27303 /* MC_CMD_TELEMETRY_CONFIG_OUT_SET msgresponse */
27304 #define	MC_CMD_TELEMETRY_CONFIG_OUT_SET_LEN 0
27305 
27306 /* MC_CMD_TELEMETRY_CONFIG_IN_GET msgrequest: This command reads out the
27307  * current values of config parameters necessary for tcp-latency measurements.
27308  * See MC_CMD_TELEMETRY_SET_CONFIG for more information about the configuration
27309  * parameters.
27310  */
27311 #define	MC_CMD_TELEMETRY_CONFIG_IN_GET_LEN 4
27312 /* Telemetry configuration sub-operation code. Must be set to
27313  * MC_CMD_TELEMETRY_CONFIG_OP_GET.
27314  */
27315 #define	MC_CMD_TELEMETRY_CONFIG_IN_GET_OP_OFST 0
27316 #define	MC_CMD_TELEMETRY_CONFIG_IN_GET_OP_LEN 4
27317 
27318 /* MC_CMD_TELEMETRY_CONFIG_OUT_GET msgresponse */
27319 #define	MC_CMD_TELEMETRY_CONFIG_OUT_GET_LEN 36
27320 /* struct of type TELEMETRY_CONFIG. */
27321 #define	MC_CMD_TELEMETRY_CONFIG_OUT_GET_PARAMETERS_OFST 0
27322 #define	MC_CMD_TELEMETRY_CONFIG_OUT_GET_PARAMETERS_LEN 36
27323 
27324 
27325 /***********************************/
27326 /* MC_CMD_GET_RX_PREFIX_ID
27327  * This command is part of the mechanism for configuring the format of the RX
27328  * packet prefix. It takes as input a bitmask of the fields the host would like
27329  * to be in the prefix. If the hardware supports RX prefixes with that
27330  * combination of fields, then this command returns a list of prefix-ids,
27331  * opaque identifiers suitable for use in the RX_PREFIX_ID field of a
27332  * MC_CMD_INIT_RXQ_V5_IN message. If the combination of fields is not
27333  * supported, returns ENOTSUP. If the firmware can't create any new prefix-ids
27334  * due to resource constraints, returns ENOSPC.
27335  */
27336 #define	MC_CMD_GET_RX_PREFIX_ID 0x13b
27337 #define	MC_CMD_GET_RX_PREFIX_ID_MSGSET 0x13b
27338 #undef	MC_CMD_0x13b_PRIVILEGE_CTG
27339 
27340 #define	MC_CMD_0x13b_PRIVILEGE_CTG SRIOV_CTG_GENERAL
27341 
27342 /* MC_CMD_GET_RX_PREFIX_ID_IN msgrequest */
27343 #define	MC_CMD_GET_RX_PREFIX_ID_IN_LEN 8
27344 /* Field bitmask. */
27345 #define	MC_CMD_GET_RX_PREFIX_ID_IN_FIELDS_OFST 0
27346 #define	MC_CMD_GET_RX_PREFIX_ID_IN_FIELDS_LEN 8
27347 #define	MC_CMD_GET_RX_PREFIX_ID_IN_FIELDS_LO_OFST 0
27348 #define	MC_CMD_GET_RX_PREFIX_ID_IN_FIELDS_LO_LEN 4
27349 #define	MC_CMD_GET_RX_PREFIX_ID_IN_FIELDS_LO_LBN 0
27350 #define	MC_CMD_GET_RX_PREFIX_ID_IN_FIELDS_LO_WIDTH 32
27351 #define	MC_CMD_GET_RX_PREFIX_ID_IN_FIELDS_HI_OFST 4
27352 #define	MC_CMD_GET_RX_PREFIX_ID_IN_FIELDS_HI_LEN 4
27353 #define	MC_CMD_GET_RX_PREFIX_ID_IN_FIELDS_HI_LBN 32
27354 #define	MC_CMD_GET_RX_PREFIX_ID_IN_FIELDS_HI_WIDTH 32
27355 #define	MC_CMD_GET_RX_PREFIX_ID_IN_LENGTH_OFST 0
27356 #define	MC_CMD_GET_RX_PREFIX_ID_IN_LENGTH_LBN 0
27357 #define	MC_CMD_GET_RX_PREFIX_ID_IN_LENGTH_WIDTH 1
27358 #define	MC_CMD_GET_RX_PREFIX_ID_IN_RSS_HASH_VALID_OFST 0
27359 #define	MC_CMD_GET_RX_PREFIX_ID_IN_RSS_HASH_VALID_LBN 1
27360 #define	MC_CMD_GET_RX_PREFIX_ID_IN_RSS_HASH_VALID_WIDTH 1
27361 #define	MC_CMD_GET_RX_PREFIX_ID_IN_USER_FLAG_OFST 0
27362 #define	MC_CMD_GET_RX_PREFIX_ID_IN_USER_FLAG_LBN 2
27363 #define	MC_CMD_GET_RX_PREFIX_ID_IN_USER_FLAG_WIDTH 1
27364 #define	MC_CMD_GET_RX_PREFIX_ID_IN_CLASS_OFST 0
27365 #define	MC_CMD_GET_RX_PREFIX_ID_IN_CLASS_LBN 3
27366 #define	MC_CMD_GET_RX_PREFIX_ID_IN_CLASS_WIDTH 1
27367 #define	MC_CMD_GET_RX_PREFIX_ID_IN_PARTIAL_TSTAMP_OFST 0
27368 #define	MC_CMD_GET_RX_PREFIX_ID_IN_PARTIAL_TSTAMP_LBN 4
27369 #define	MC_CMD_GET_RX_PREFIX_ID_IN_PARTIAL_TSTAMP_WIDTH 1
27370 #define	MC_CMD_GET_RX_PREFIX_ID_IN_RSS_HASH_OFST 0
27371 #define	MC_CMD_GET_RX_PREFIX_ID_IN_RSS_HASH_LBN 5
27372 #define	MC_CMD_GET_RX_PREFIX_ID_IN_RSS_HASH_WIDTH 1
27373 #define	MC_CMD_GET_RX_PREFIX_ID_IN_USER_MARK_OFST 0
27374 #define	MC_CMD_GET_RX_PREFIX_ID_IN_USER_MARK_LBN 6
27375 #define	MC_CMD_GET_RX_PREFIX_ID_IN_USER_MARK_WIDTH 1
27376 #define	MC_CMD_GET_RX_PREFIX_ID_IN_INGRESS_MPORT_OFST 0
27377 #define	MC_CMD_GET_RX_PREFIX_ID_IN_INGRESS_MPORT_LBN 7
27378 #define	MC_CMD_GET_RX_PREFIX_ID_IN_INGRESS_MPORT_WIDTH 1
27379 #define	MC_CMD_GET_RX_PREFIX_ID_IN_INGRESS_VPORT_OFST 0
27380 #define	MC_CMD_GET_RX_PREFIX_ID_IN_INGRESS_VPORT_LBN 7
27381 #define	MC_CMD_GET_RX_PREFIX_ID_IN_INGRESS_VPORT_WIDTH 1
27382 #define	MC_CMD_GET_RX_PREFIX_ID_IN_CSUM_FRAME_OFST 0
27383 #define	MC_CMD_GET_RX_PREFIX_ID_IN_CSUM_FRAME_LBN 8
27384 #define	MC_CMD_GET_RX_PREFIX_ID_IN_CSUM_FRAME_WIDTH 1
27385 #define	MC_CMD_GET_RX_PREFIX_ID_IN_VLAN_STRIP_TCI_OFST 0
27386 #define	MC_CMD_GET_RX_PREFIX_ID_IN_VLAN_STRIP_TCI_LBN 9
27387 #define	MC_CMD_GET_RX_PREFIX_ID_IN_VLAN_STRIP_TCI_WIDTH 1
27388 #define	MC_CMD_GET_RX_PREFIX_ID_IN_VLAN_STRIPPED_OFST 0
27389 #define	MC_CMD_GET_RX_PREFIX_ID_IN_VLAN_STRIPPED_LBN 10
27390 #define	MC_CMD_GET_RX_PREFIX_ID_IN_VLAN_STRIPPED_WIDTH 1
27391 #define	MC_CMD_GET_RX_PREFIX_ID_IN_VSWITCH_STATUS_OFST 0
27392 #define	MC_CMD_GET_RX_PREFIX_ID_IN_VSWITCH_STATUS_LBN 11
27393 #define	MC_CMD_GET_RX_PREFIX_ID_IN_VSWITCH_STATUS_WIDTH 1
27394 
27395 /* MC_CMD_GET_RX_PREFIX_ID_OUT msgresponse */
27396 #define	MC_CMD_GET_RX_PREFIX_ID_OUT_LENMIN 8
27397 #define	MC_CMD_GET_RX_PREFIX_ID_OUT_LENMAX 252
27398 #define	MC_CMD_GET_RX_PREFIX_ID_OUT_LENMAX_MCDI2 1020
27399 #define	MC_CMD_GET_RX_PREFIX_ID_OUT_LEN(num) (4+4*(num))
27400 #define	MC_CMD_GET_RX_PREFIX_ID_OUT_RX_PREFIX_ID_NUM(len) (((len)-4)/4)
27401 /* Number of prefix-ids returned */
27402 #define	MC_CMD_GET_RX_PREFIX_ID_OUT_NUM_RX_PREFIX_IDS_OFST 0
27403 #define	MC_CMD_GET_RX_PREFIX_ID_OUT_NUM_RX_PREFIX_IDS_LEN 4
27404 /* Opaque prefix identifiers which can be passed into MC_CMD_INIT_RXQ_V5 or
27405  * MC_CMD_QUERY_PREFIX_ID
27406  */
27407 #define	MC_CMD_GET_RX_PREFIX_ID_OUT_RX_PREFIX_ID_OFST 4
27408 #define	MC_CMD_GET_RX_PREFIX_ID_OUT_RX_PREFIX_ID_LEN 4
27409 #define	MC_CMD_GET_RX_PREFIX_ID_OUT_RX_PREFIX_ID_MINNUM 1
27410 #define	MC_CMD_GET_RX_PREFIX_ID_OUT_RX_PREFIX_ID_MAXNUM 62
27411 #define	MC_CMD_GET_RX_PREFIX_ID_OUT_RX_PREFIX_ID_MAXNUM_MCDI2 254
27412 
27413 /* RX_PREFIX_FIELD_INFO structuredef: Information about a single RX prefix
27414  * field
27415  */
27416 #define	RX_PREFIX_FIELD_INFO_LEN 4
27417 /* The offset of the field from the start of the prefix, in bits */
27418 #define	RX_PREFIX_FIELD_INFO_OFFSET_BITS_OFST 0
27419 #define	RX_PREFIX_FIELD_INFO_OFFSET_BITS_LEN 2
27420 #define	RX_PREFIX_FIELD_INFO_OFFSET_BITS_LBN 0
27421 #define	RX_PREFIX_FIELD_INFO_OFFSET_BITS_WIDTH 16
27422 /* The width of the field, in bits */
27423 #define	RX_PREFIX_FIELD_INFO_WIDTH_BITS_OFST 2
27424 #define	RX_PREFIX_FIELD_INFO_WIDTH_BITS_LEN 1
27425 #define	RX_PREFIX_FIELD_INFO_WIDTH_BITS_LBN 16
27426 #define	RX_PREFIX_FIELD_INFO_WIDTH_BITS_WIDTH 8
27427 /* The type of the field. These enum values are in the same order as the fields
27428  * in the MC_CMD_GET_RX_PREFIX_ID_IN bitmask
27429  */
27430 #define	RX_PREFIX_FIELD_INFO_TYPE_OFST 3
27431 #define	RX_PREFIX_FIELD_INFO_TYPE_LEN 1
27432 #define	RX_PREFIX_FIELD_INFO_LENGTH 0x0 /* enum */
27433 #define	RX_PREFIX_FIELD_INFO_RSS_HASH_VALID 0x1 /* enum */
27434 #define	RX_PREFIX_FIELD_INFO_USER_FLAG 0x2 /* enum */
27435 #define	RX_PREFIX_FIELD_INFO_CLASS 0x3 /* enum */
27436 #define	RX_PREFIX_FIELD_INFO_PARTIAL_TSTAMP 0x4 /* enum */
27437 #define	RX_PREFIX_FIELD_INFO_RSS_HASH 0x5 /* enum */
27438 #define	RX_PREFIX_FIELD_INFO_USER_MARK 0x6 /* enum */
27439 #define	RX_PREFIX_FIELD_INFO_INGRESS_MPORT 0x7 /* enum */
27440 #define	RX_PREFIX_FIELD_INFO_INGRESS_VPORT 0x7 /* enum */
27441 #define	RX_PREFIX_FIELD_INFO_CSUM_FRAME 0x8 /* enum */
27442 #define	RX_PREFIX_FIELD_INFO_VLAN_STRIP_TCI 0x9 /* enum */
27443 #define	RX_PREFIX_FIELD_INFO_VLAN_STRIPPED 0xa /* enum */
27444 #define	RX_PREFIX_FIELD_INFO_VSWITCH_STATUS 0xb /* enum */
27445 #define	RX_PREFIX_FIELD_INFO_TYPE_LBN 24
27446 #define	RX_PREFIX_FIELD_INFO_TYPE_WIDTH 8
27447 
27448 /* RX_PREFIX_FIXED_RESPONSE structuredef: Information about an RX prefix in
27449  * which every field has a fixed offset and width
27450  */
27451 #define	RX_PREFIX_FIXED_RESPONSE_LENMIN 4
27452 #define	RX_PREFIX_FIXED_RESPONSE_LENMAX 252
27453 #define	RX_PREFIX_FIXED_RESPONSE_LENMAX_MCDI2 1020
27454 #define	RX_PREFIX_FIXED_RESPONSE_LEN(num) (4+4*(num))
27455 #define	RX_PREFIX_FIXED_RESPONSE_FIELDS_NUM(len) (((len)-4)/4)
27456 /* Length of the RX prefix in bytes */
27457 #define	RX_PREFIX_FIXED_RESPONSE_PREFIX_LENGTH_BYTES_OFST 0
27458 #define	RX_PREFIX_FIXED_RESPONSE_PREFIX_LENGTH_BYTES_LEN 1
27459 #define	RX_PREFIX_FIXED_RESPONSE_PREFIX_LENGTH_BYTES_LBN 0
27460 #define	RX_PREFIX_FIXED_RESPONSE_PREFIX_LENGTH_BYTES_WIDTH 8
27461 /* Number of fields present in the prefix */
27462 #define	RX_PREFIX_FIXED_RESPONSE_FIELD_COUNT_OFST 1
27463 #define	RX_PREFIX_FIXED_RESPONSE_FIELD_COUNT_LEN 1
27464 #define	RX_PREFIX_FIXED_RESPONSE_FIELD_COUNT_LBN 8
27465 #define	RX_PREFIX_FIXED_RESPONSE_FIELD_COUNT_WIDTH 8
27466 #define	RX_PREFIX_FIXED_RESPONSE_RESERVED_OFST 2
27467 #define	RX_PREFIX_FIXED_RESPONSE_RESERVED_LEN 2
27468 #define	RX_PREFIX_FIXED_RESPONSE_RESERVED_LBN 16
27469 #define	RX_PREFIX_FIXED_RESPONSE_RESERVED_WIDTH 16
27470 /* Array of RX_PREFIX_FIELD_INFO structures, of length FIELD_COUNT */
27471 #define	RX_PREFIX_FIXED_RESPONSE_FIELDS_OFST 4
27472 #define	RX_PREFIX_FIXED_RESPONSE_FIELDS_LEN 4
27473 #define	RX_PREFIX_FIXED_RESPONSE_FIELDS_MINNUM 0
27474 #define	RX_PREFIX_FIXED_RESPONSE_FIELDS_MAXNUM 62
27475 #define	RX_PREFIX_FIXED_RESPONSE_FIELDS_MAXNUM_MCDI2 254
27476 #define	RX_PREFIX_FIXED_RESPONSE_FIELDS_LBN 32
27477 #define	RX_PREFIX_FIXED_RESPONSE_FIELDS_WIDTH 32
27478 
27479 
27480 /***********************************/
27481 /* MC_CMD_QUERY_RX_PREFIX_ID
27482  * This command takes an RX prefix id (obtained from MC_CMD_GET_RX_PREFIX_ID)
27483  * and returns a description of the RX prefix of packets delievered to an RXQ
27484  * created with that prefix id
27485  */
27486 #define	MC_CMD_QUERY_RX_PREFIX_ID 0x13c
27487 #define	MC_CMD_QUERY_RX_PREFIX_ID_MSGSET 0x13c
27488 #undef	MC_CMD_0x13c_PRIVILEGE_CTG
27489 
27490 #define	MC_CMD_0x13c_PRIVILEGE_CTG SRIOV_CTG_GENERAL
27491 
27492 /* MC_CMD_QUERY_RX_PREFIX_ID_IN msgrequest */
27493 #define	MC_CMD_QUERY_RX_PREFIX_ID_IN_LEN 4
27494 /* Prefix id to query */
27495 #define	MC_CMD_QUERY_RX_PREFIX_ID_IN_RX_PREFIX_ID_OFST 0
27496 #define	MC_CMD_QUERY_RX_PREFIX_ID_IN_RX_PREFIX_ID_LEN 4
27497 
27498 /* MC_CMD_QUERY_RX_PREFIX_ID_OUT msgresponse */
27499 #define	MC_CMD_QUERY_RX_PREFIX_ID_OUT_LENMIN 4
27500 #define	MC_CMD_QUERY_RX_PREFIX_ID_OUT_LENMAX 252
27501 #define	MC_CMD_QUERY_RX_PREFIX_ID_OUT_LENMAX_MCDI2 1020
27502 #define	MC_CMD_QUERY_RX_PREFIX_ID_OUT_LEN(num) (4+1*(num))
27503 #define	MC_CMD_QUERY_RX_PREFIX_ID_OUT_RESPONSE_NUM(len) (((len)-4)/1)
27504 /* An enum describing the structure of this response. */
27505 #define	MC_CMD_QUERY_RX_PREFIX_ID_OUT_RESPONSE_TYPE_OFST 0
27506 #define	MC_CMD_QUERY_RX_PREFIX_ID_OUT_RESPONSE_TYPE_LEN 1
27507 /* enum: The response is of format RX_PREFIX_FIXED_RESPONSE */
27508 #define	MC_CMD_QUERY_RX_PREFIX_ID_OUT_RESPONSE_TYPE_FIXED 0x0
27509 #define	MC_CMD_QUERY_RX_PREFIX_ID_OUT_RESERVED_OFST 1
27510 #define	MC_CMD_QUERY_RX_PREFIX_ID_OUT_RESERVED_LEN 3
27511 /* The response. Its format is as defined by the RESPONSE_TYPE value */
27512 #define	MC_CMD_QUERY_RX_PREFIX_ID_OUT_RESPONSE_OFST 4
27513 #define	MC_CMD_QUERY_RX_PREFIX_ID_OUT_RESPONSE_LEN 1
27514 #define	MC_CMD_QUERY_RX_PREFIX_ID_OUT_RESPONSE_MINNUM 0
27515 #define	MC_CMD_QUERY_RX_PREFIX_ID_OUT_RESPONSE_MAXNUM 248
27516 #define	MC_CMD_QUERY_RX_PREFIX_ID_OUT_RESPONSE_MAXNUM_MCDI2 1016
27517 
27518 
27519 /***********************************/
27520 /* MC_CMD_BUNDLE
27521  * A command to perform various bundle-related operations on insecure cards.
27522  */
27523 #define	MC_CMD_BUNDLE 0x13d
27524 #define	MC_CMD_BUNDLE_MSGSET 0x13d
27525 #undef	MC_CMD_0x13d_PRIVILEGE_CTG
27526 
27527 #define	MC_CMD_0x13d_PRIVILEGE_CTG SRIOV_CTG_INSECURE
27528 
27529 /* MC_CMD_BUNDLE_IN msgrequest */
27530 #define	MC_CMD_BUNDLE_IN_LEN 4
27531 /* Sub-command code */
27532 #define	MC_CMD_BUNDLE_IN_OP_OFST 0
27533 #define	MC_CMD_BUNDLE_IN_OP_LEN 4
27534 /* enum: Get the current host access mode set on component partitions. */
27535 #define	MC_CMD_BUNDLE_IN_OP_COMPONENT_ACCESS_GET 0x0
27536 /* enum: Set the host access mode set on component partitions. */
27537 #define	MC_CMD_BUNDLE_IN_OP_COMPONENT_ACCESS_SET 0x1
27538 
27539 /* MC_CMD_BUNDLE_OP_COMPONENT_ACCESS_GET_IN msgrequest: Retrieve the current
27540  * access mode on component partitions such as MC_FIRMWARE, SUC_FIRMWARE and
27541  * EXPANSION_UEFI. This command only works on engineering (insecure) cards. On
27542  * secure adapters, this command returns MC_CMD_ERR_EPERM.
27543  */
27544 #define	MC_CMD_BUNDLE_OP_COMPONENT_ACCESS_GET_IN_LEN 4
27545 /* Sub-command code. Must be OP_COMPONENT_ACCESS_GET. */
27546 #define	MC_CMD_BUNDLE_OP_COMPONENT_ACCESS_GET_IN_OP_OFST 0
27547 #define	MC_CMD_BUNDLE_OP_COMPONENT_ACCESS_GET_IN_OP_LEN 4
27548 
27549 /* MC_CMD_BUNDLE_OP_COMPONENT_ACCESS_GET_OUT msgresponse: Returns the access
27550  * control mode.
27551  */
27552 #define	MC_CMD_BUNDLE_OP_COMPONENT_ACCESS_GET_OUT_LEN 4
27553 /* Access mode of component partitions. */
27554 #define	MC_CMD_BUNDLE_OP_COMPONENT_ACCESS_GET_OUT_ACCESS_MODE_OFST 0
27555 #define	MC_CMD_BUNDLE_OP_COMPONENT_ACCESS_GET_OUT_ACCESS_MODE_LEN 4
27556 /* enum: Component partitions are read-only from the host. */
27557 #define	MC_CMD_BUNDLE_COMPONENTS_READ_ONLY 0x0
27558 /* enum: Component partitions can read read-from written-to by the host. */
27559 #define	MC_CMD_BUNDLE_COMPONENTS_READ_WRITE 0x1
27560 
27561 /* MC_CMD_BUNDLE_OP_COMPONENT_ACCESS_SET_IN msgrequest: The component
27562  * partitions such as MC_FIRMWARE, SUC_FIRMWARE, EXPANSION_UEFI are set as
27563  * read-only on firmware built with bundle support. This command marks these
27564  * partitions as read/writeable. The access status set by this command does not
27565  * persist across MC reboots. This command only works on engineering (insecure)
27566  * cards. On secure adapters, this command returns MC_CMD_ERR_EPERM.
27567  */
27568 #define	MC_CMD_BUNDLE_OP_COMPONENT_ACCESS_SET_IN_LEN 8
27569 /* Sub-command code. Must be OP_COMPONENT_ACCESS_SET. */
27570 #define	MC_CMD_BUNDLE_OP_COMPONENT_ACCESS_SET_IN_OP_OFST 0
27571 #define	MC_CMD_BUNDLE_OP_COMPONENT_ACCESS_SET_IN_OP_LEN 4
27572 /* Access mode of component partitions. */
27573 #define	MC_CMD_BUNDLE_OP_COMPONENT_ACCESS_SET_IN_ACCESS_MODE_OFST 4
27574 #define	MC_CMD_BUNDLE_OP_COMPONENT_ACCESS_SET_IN_ACCESS_MODE_LEN 4
27575 /*            Enum values, see field(s): */
27576 /*               MC_CMD_BUNDLE_OP_COMPONENT_ACCESS_GET_OUT/ACCESS_MODE */
27577 
27578 /* MC_CMD_BUNDLE_OP_COMPONENT_ACCESS_SET_OUT msgresponse */
27579 #define	MC_CMD_BUNDLE_OP_COMPONENT_ACCESS_SET_OUT_LEN 0
27580 
27581 
27582 /***********************************/
27583 /* MC_CMD_GET_VPD
27584  * Read all VPD starting from a given address
27585  */
27586 #define	MC_CMD_GET_VPD 0x165
27587 #define	MC_CMD_GET_VPD_MSGSET 0x165
27588 #undef	MC_CMD_0x165_PRIVILEGE_CTG
27589 
27590 #define	MC_CMD_0x165_PRIVILEGE_CTG SRIOV_CTG_GENERAL
27591 
27592 /* MC_CMD_GET_VPD_IN msgresponse */
27593 #define	MC_CMD_GET_VPD_IN_LEN 4
27594 /* VPD address to start from. In case VPD is longer than MCDI buffer
27595  * (unlikely), user can make multiple calls with different starting addresses.
27596  */
27597 #define	MC_CMD_GET_VPD_IN_ADDR_OFST 0
27598 #define	MC_CMD_GET_VPD_IN_ADDR_LEN 4
27599 
27600 /* MC_CMD_GET_VPD_OUT msgresponse */
27601 #define	MC_CMD_GET_VPD_OUT_LENMIN 0
27602 #define	MC_CMD_GET_VPD_OUT_LENMAX 252
27603 #define	MC_CMD_GET_VPD_OUT_LENMAX_MCDI2 1020
27604 #define	MC_CMD_GET_VPD_OUT_LEN(num) (0+1*(num))
27605 #define	MC_CMD_GET_VPD_OUT_DATA_NUM(len) (((len)-0)/1)
27606 /* VPD data returned. */
27607 #define	MC_CMD_GET_VPD_OUT_DATA_OFST 0
27608 #define	MC_CMD_GET_VPD_OUT_DATA_LEN 1
27609 #define	MC_CMD_GET_VPD_OUT_DATA_MINNUM 0
27610 #define	MC_CMD_GET_VPD_OUT_DATA_MAXNUM 252
27611 #define	MC_CMD_GET_VPD_OUT_DATA_MAXNUM_MCDI2 1020
27612 
27613 
27614 /***********************************/
27615 /* MC_CMD_GET_NCSI_INFO
27616  * Provide information about the NC-SI stack
27617  */
27618 #define	MC_CMD_GET_NCSI_INFO 0x167
27619 #define	MC_CMD_GET_NCSI_INFO_MSGSET 0x167
27620 #undef	MC_CMD_0x167_PRIVILEGE_CTG
27621 
27622 #define	MC_CMD_0x167_PRIVILEGE_CTG SRIOV_CTG_GENERAL
27623 
27624 /* MC_CMD_GET_NCSI_INFO_IN msgrequest */
27625 #define	MC_CMD_GET_NCSI_INFO_IN_LEN 8
27626 /* Operation to be performed */
27627 #define	MC_CMD_GET_NCSI_INFO_IN_OP_OFST 0
27628 #define	MC_CMD_GET_NCSI_INFO_IN_OP_LEN 4
27629 /* enum: Information on the link settings. */
27630 #define	MC_CMD_GET_NCSI_INFO_IN_OP_LINK 0x0
27631 /* enum: Statistics associated with the channel */
27632 #define	MC_CMD_GET_NCSI_INFO_IN_OP_STATISTICS 0x1
27633 /* The NC-SI channel on which the operation is to be performed */
27634 #define	MC_CMD_GET_NCSI_INFO_IN_CHANNEL_OFST 4
27635 #define	MC_CMD_GET_NCSI_INFO_IN_CHANNEL_LEN 4
27636 
27637 /* MC_CMD_GET_NCSI_INFO_LINK_OUT msgresponse */
27638 #define	MC_CMD_GET_NCSI_INFO_LINK_OUT_LEN 12
27639 /* Settings as received from BMC. */
27640 #define	MC_CMD_GET_NCSI_INFO_LINK_OUT_SETTINGS_OFST 0
27641 #define	MC_CMD_GET_NCSI_INFO_LINK_OUT_SETTINGS_LEN 4
27642 /* Advertised capabilities applied to channel. */
27643 #define	MC_CMD_GET_NCSI_INFO_LINK_OUT_ADV_CAP_OFST 4
27644 #define	MC_CMD_GET_NCSI_INFO_LINK_OUT_ADV_CAP_LEN 4
27645 /* General status */
27646 #define	MC_CMD_GET_NCSI_INFO_LINK_OUT_STATUS_OFST 8
27647 #define	MC_CMD_GET_NCSI_INFO_LINK_OUT_STATUS_LEN 4
27648 #define	MC_CMD_GET_NCSI_INFO_LINK_OUT_STATE_OFST 8
27649 #define	MC_CMD_GET_NCSI_INFO_LINK_OUT_STATE_LBN 0
27650 #define	MC_CMD_GET_NCSI_INFO_LINK_OUT_STATE_WIDTH 2
27651 #define	MC_CMD_GET_NCSI_INFO_LINK_OUT_ENABLE_OFST 8
27652 #define	MC_CMD_GET_NCSI_INFO_LINK_OUT_ENABLE_LBN 2
27653 #define	MC_CMD_GET_NCSI_INFO_LINK_OUT_ENABLE_WIDTH 1
27654 #define	MC_CMD_GET_NCSI_INFO_LINK_OUT_NETWORK_TX_OFST 8
27655 #define	MC_CMD_GET_NCSI_INFO_LINK_OUT_NETWORK_TX_LBN 3
27656 #define	MC_CMD_GET_NCSI_INFO_LINK_OUT_NETWORK_TX_WIDTH 1
27657 #define	MC_CMD_GET_NCSI_INFO_LINK_OUT_ATTACHED_OFST 8
27658 #define	MC_CMD_GET_NCSI_INFO_LINK_OUT_ATTACHED_LBN 4
27659 #define	MC_CMD_GET_NCSI_INFO_LINK_OUT_ATTACHED_WIDTH 1
27660 
27661 /* MC_CMD_GET_NCSI_INFO_STATISTICS_OUT msgresponse */
27662 #define	MC_CMD_GET_NCSI_INFO_STATISTICS_OUT_LEN 28
27663 /* The number of NC-SI commands received. */
27664 #define	MC_CMD_GET_NCSI_INFO_STATISTICS_OUT_NCSI_CMDS_RX_OFST 0
27665 #define	MC_CMD_GET_NCSI_INFO_STATISTICS_OUT_NCSI_CMDS_RX_LEN 4
27666 /* The number of NC-SI commands dropped. */
27667 #define	MC_CMD_GET_NCSI_INFO_STATISTICS_OUT_NCSI_PKTS_DROPPED_OFST 4
27668 #define	MC_CMD_GET_NCSI_INFO_STATISTICS_OUT_NCSI_PKTS_DROPPED_LEN 4
27669 /* The number of invalid NC-SI commands received. */
27670 #define	MC_CMD_GET_NCSI_INFO_STATISTICS_OUT_NCSI_CMD_TYPE_ERRS_OFST 8
27671 #define	MC_CMD_GET_NCSI_INFO_STATISTICS_OUT_NCSI_CMD_TYPE_ERRS_LEN 4
27672 /* The number of checksum errors seen. */
27673 #define	MC_CMD_GET_NCSI_INFO_STATISTICS_OUT_NCSI_CMD_CSUM_ERRS_OFST 12
27674 #define	MC_CMD_GET_NCSI_INFO_STATISTICS_OUT_NCSI_CMD_CSUM_ERRS_LEN 4
27675 /* The number of NC-SI requests received. */
27676 #define	MC_CMD_GET_NCSI_INFO_STATISTICS_OUT_NCSI_RX_PKTS_OFST 16
27677 #define	MC_CMD_GET_NCSI_INFO_STATISTICS_OUT_NCSI_RX_PKTS_LEN 4
27678 /* The number of NC-SI responses sent (includes AENs) */
27679 #define	MC_CMD_GET_NCSI_INFO_STATISTICS_OUT_NCSI_TX_PKTS_OFST 20
27680 #define	MC_CMD_GET_NCSI_INFO_STATISTICS_OUT_NCSI_TX_PKTS_LEN 4
27681 /* The number of NC-SI AENs sent */
27682 #define	MC_CMD_GET_NCSI_INFO_STATISTICS_OUT_AENS_SENT_OFST 24
27683 #define	MC_CMD_GET_NCSI_INFO_STATISTICS_OUT_AENS_SENT_LEN 4
27684 
27685 
27686 /***********************************/
27687 /* MC_CMD_FIRMWARE_SET_LOCKDOWN
27688  * System lockdown, when enabled firmware updates are blocked.
27689  */
27690 #define	MC_CMD_FIRMWARE_SET_LOCKDOWN 0x16f
27691 #define	MC_CMD_FIRMWARE_SET_LOCKDOWN_MSGSET 0x16f
27692 #undef	MC_CMD_0x16f_PRIVILEGE_CTG
27693 
27694 #define	MC_CMD_0x16f_PRIVILEGE_CTG SRIOV_CTG_ADMIN
27695 
27696 /* MC_CMD_FIRMWARE_SET_LOCKDOWN_IN msgrequest: This MCDI command is to enable
27697  * only because lockdown can only be disabled by a PMCI command or a cold reset
27698  * of the system.
27699  */
27700 #define	MC_CMD_FIRMWARE_SET_LOCKDOWN_IN_LEN 0
27701 
27702 /* MC_CMD_FIRMWARE_SET_LOCKDOWN_OUT msgresponse */
27703 #define	MC_CMD_FIRMWARE_SET_LOCKDOWN_OUT_LEN 0
27704 
27705 
27706 /***********************************/
27707 /* MC_CMD_GET_TEST_FEATURES
27708  * This command returns device details knowledge of which may be required by
27709  * test infrastructure. Although safe, it is not intended to be used by
27710  * production drivers, and the structure returned intentionally has no public
27711  * documentation.
27712  */
27713 #define	MC_CMD_GET_TEST_FEATURES 0x1ac
27714 #define	MC_CMD_GET_TEST_FEATURES_MSGSET 0x1ac
27715 #undef	MC_CMD_0x1ac_PRIVILEGE_CTG
27716 
27717 #define	MC_CMD_0x1ac_PRIVILEGE_CTG SRIOV_CTG_GENERAL
27718 
27719 /* MC_CMD_GET_TEST_FEATURES_IN msgrequest: Request test features. */
27720 #define	MC_CMD_GET_TEST_FEATURES_IN_LEN 0
27721 
27722 /* MC_CMD_GET_TEST_FEATURE_OUT msgresponse */
27723 #define	MC_CMD_GET_TEST_FEATURE_OUT_LENMIN 4
27724 #define	MC_CMD_GET_TEST_FEATURE_OUT_LENMAX 252
27725 #define	MC_CMD_GET_TEST_FEATURE_OUT_LENMAX_MCDI2 1020
27726 #define	MC_CMD_GET_TEST_FEATURE_OUT_LEN(num) (0+4*(num))
27727 #define	MC_CMD_GET_TEST_FEATURE_OUT_TEST_FEATURES_NUM(len) (((len)-0)/4)
27728 /* Test-specific NIC information. Production drivers must treat this as opaque.
27729  * The layout is defined in the private TEST_FEATURES_LAYOUT structure.
27730  */
27731 #define	MC_CMD_GET_TEST_FEATURE_OUT_TEST_FEATURES_OFST 0
27732 #define	MC_CMD_GET_TEST_FEATURE_OUT_TEST_FEATURES_LEN 4
27733 #define	MC_CMD_GET_TEST_FEATURE_OUT_TEST_FEATURES_MINNUM 1
27734 #define	MC_CMD_GET_TEST_FEATURE_OUT_TEST_FEATURES_MAXNUM 63
27735 #define	MC_CMD_GET_TEST_FEATURE_OUT_TEST_FEATURES_MAXNUM_MCDI2 255
27736 
27737 
27738 /***********************************/
27739 /* MC_CMD_FPGA
27740  * A command to perform various fpga-related operations on platforms that
27741  * include FPGAs. Note that some platforms may only support a subset of these
27742  * operations.
27743  */
27744 #define	MC_CMD_FPGA 0x1bf
27745 #define	MC_CMD_FPGA_MSGSET 0x1bf
27746 #undef	MC_CMD_0x1bf_PRIVILEGE_CTG
27747 
27748 #define	MC_CMD_0x1bf_PRIVILEGE_CTG SRIOV_CTG_GENERAL
27749 
27750 /* MC_CMD_FPGA_IN msgrequest */
27751 #define	MC_CMD_FPGA_IN_LEN 4
27752 /* Sub-command code */
27753 #define	MC_CMD_FPGA_IN_OP_OFST 0
27754 #define	MC_CMD_FPGA_IN_OP_LEN 4
27755 /* enum: Get the FPGA version string. */
27756 #define	MC_CMD_FPGA_IN_OP_GET_VERSION 0x0
27757 /* enum: Read bitmask of features supported in the FPGA image. */
27758 #define	MC_CMD_FPGA_IN_OP_GET_CAPABILITIES 0x1
27759 /* enum: Perform a FPGA reset. */
27760 #define	MC_CMD_FPGA_IN_OP_RESET 0x2
27761 /* enum: Set active flash device. */
27762 #define	MC_CMD_FPGA_IN_OP_SELECT_FLASH 0x3
27763 /* enum: Get active flash device. */
27764 #define	MC_CMD_FPGA_IN_OP_GET_ACTIVE_FLASH 0x4
27765 /* enum: Configure internal link i.e. the FPGA port facing the ASIC. */
27766 #define	MC_CMD_FPGA_IN_OP_SET_INTERNAL_LINK 0x5
27767 /* enum: Read internal link configuration. */
27768 #define	MC_CMD_FPGA_IN_OP_GET_INTERNAL_LINK 0x6
27769 /* enum: Get MAC statistics of FPGA external port. */
27770 #define	MC_CMD_FPGA_IN_OP_GET_MAC_STATS 0x7
27771 /* enum: Set configuration on internal FPGA MAC. */
27772 #define	MC_CMD_FPGA_IN_OP_SET_INTERNAL_MAC 0x8
27773 
27774 /* MC_CMD_FPGA_OP_GET_VERSION_IN msgrequest: Get the FPGA version string. A
27775  * free-format string is returned in response to this command. Any checks on
27776  * supported FPGA operations are based on the response to
27777  * MC_CMD_FPGA_OP_GET_CAPABILITIES.
27778  */
27779 #define	MC_CMD_FPGA_OP_GET_VERSION_IN_LEN 4
27780 /* Sub-command code. Must be OP_GET_VERSION */
27781 #define	MC_CMD_FPGA_OP_GET_VERSION_IN_OP_OFST 0
27782 #define	MC_CMD_FPGA_OP_GET_VERSION_IN_OP_LEN 4
27783 
27784 /* MC_CMD_FPGA_OP_GET_VERSION_OUT msgresponse: Returns the version string. */
27785 #define	MC_CMD_FPGA_OP_GET_VERSION_OUT_LENMIN 0
27786 #define	MC_CMD_FPGA_OP_GET_VERSION_OUT_LENMAX 252
27787 #define	MC_CMD_FPGA_OP_GET_VERSION_OUT_LENMAX_MCDI2 1020
27788 #define	MC_CMD_FPGA_OP_GET_VERSION_OUT_LEN(num) (0+1*(num))
27789 #define	MC_CMD_FPGA_OP_GET_VERSION_OUT_VERSION_NUM(len) (((len)-0)/1)
27790 /* Null-terminated string containing version information. */
27791 #define	MC_CMD_FPGA_OP_GET_VERSION_OUT_VERSION_OFST 0
27792 #define	MC_CMD_FPGA_OP_GET_VERSION_OUT_VERSION_LEN 1
27793 #define	MC_CMD_FPGA_OP_GET_VERSION_OUT_VERSION_MINNUM 0
27794 #define	MC_CMD_FPGA_OP_GET_VERSION_OUT_VERSION_MAXNUM 252
27795 #define	MC_CMD_FPGA_OP_GET_VERSION_OUT_VERSION_MAXNUM_MCDI2 1020
27796 
27797 /* MC_CMD_FPGA_OP_GET_CAPABILITIES_IN msgrequest: Read bitmask of features
27798  * supported in the FPGA image.
27799  */
27800 #define	MC_CMD_FPGA_OP_GET_CAPABILITIES_IN_LEN 4
27801 /* Sub-command code. Must be OP_GET_CAPABILITIES */
27802 #define	MC_CMD_FPGA_OP_GET_CAPABILITIES_IN_OP_OFST 0
27803 #define	MC_CMD_FPGA_OP_GET_CAPABILITIES_IN_OP_LEN 4
27804 
27805 /* MC_CMD_FPGA_OP_GET_CAPABILITIES_OUT msgresponse: Returns the version string.
27806  */
27807 #define	MC_CMD_FPGA_OP_GET_CAPABILITIES_OUT_LEN 4
27808 /* Bit-mask of supported features. */
27809 #define	MC_CMD_FPGA_OP_GET_CAPABILITIES_OUT_CAPABILITIES_OFST 0
27810 #define	MC_CMD_FPGA_OP_GET_CAPABILITIES_OUT_CAPABILITIES_LEN 4
27811 #define	MC_CMD_FPGA_OP_GET_CAPABILITIES_OUT_MAC_OFST 0
27812 #define	MC_CMD_FPGA_OP_GET_CAPABILITIES_OUT_MAC_LBN 0
27813 #define	MC_CMD_FPGA_OP_GET_CAPABILITIES_OUT_MAC_WIDTH 1
27814 #define	MC_CMD_FPGA_OP_GET_CAPABILITIES_OUT_MAE_OFST 0
27815 #define	MC_CMD_FPGA_OP_GET_CAPABILITIES_OUT_MAE_LBN 1
27816 #define	MC_CMD_FPGA_OP_GET_CAPABILITIES_OUT_MAE_WIDTH 1
27817 
27818 /* MC_CMD_FPGA_OP_RESET_IN msgrequest: Perform a FPGA reset operation where
27819  * supported.
27820  */
27821 #define	MC_CMD_FPGA_OP_RESET_IN_LEN 4
27822 /* Sub-command code. Must be OP_RESET */
27823 #define	MC_CMD_FPGA_OP_RESET_IN_OP_OFST 0
27824 #define	MC_CMD_FPGA_OP_RESET_IN_OP_LEN 4
27825 
27826 /* MC_CMD_FPGA_OP_RESET_OUT msgresponse */
27827 #define	MC_CMD_FPGA_OP_RESET_OUT_LEN 0
27828 
27829 /* MC_CMD_FPGA_OP_SELECT_FLASH_IN msgrequest: Set active FPGA flash device.
27830  * Returns EINVAL if selected flash index does not exist on the platform under
27831  * test.
27832  */
27833 #define	MC_CMD_FPGA_OP_SELECT_FLASH_IN_LEN 8
27834 /* Sub-command code. Must be OP_SELECT_FLASH */
27835 #define	MC_CMD_FPGA_OP_SELECT_FLASH_IN_OP_OFST 0
27836 #define	MC_CMD_FPGA_OP_SELECT_FLASH_IN_OP_LEN 4
27837 /* Flash device identifier. */
27838 #define	MC_CMD_FPGA_OP_SELECT_FLASH_IN_FLASH_ID_OFST 4
27839 #define	MC_CMD_FPGA_OP_SELECT_FLASH_IN_FLASH_ID_LEN 4
27840 /*            Enum values, see field(s): */
27841 /*               MC_CMD_FPGA_FLASH_INDEX */
27842 
27843 /* MC_CMD_FPGA_OP_SELECT_FLASH_OUT msgresponse */
27844 #define	MC_CMD_FPGA_OP_SELECT_FLASH_OUT_LEN 0
27845 
27846 /* MC_CMD_FPGA_OP_GET_ACTIVE_FLASH_IN msgrequest: Get active FPGA flash device.
27847  */
27848 #define	MC_CMD_FPGA_OP_GET_ACTIVE_FLASH_IN_LEN 4
27849 /* Sub-command code. Must be OP_GET_ACTIVE_FLASH */
27850 #define	MC_CMD_FPGA_OP_GET_ACTIVE_FLASH_IN_OP_OFST 0
27851 #define	MC_CMD_FPGA_OP_GET_ACTIVE_FLASH_IN_OP_LEN 4
27852 
27853 /* MC_CMD_FPGA_OP_GET_ACTIVE_FLASH_OUT msgresponse: Returns flash identifier
27854  * for current active flash.
27855  */
27856 #define	MC_CMD_FPGA_OP_GET_ACTIVE_FLASH_OUT_LEN 4
27857 /* Flash device identifier. */
27858 #define	MC_CMD_FPGA_OP_GET_ACTIVE_FLASH_OUT_FLASH_ID_OFST 0
27859 #define	MC_CMD_FPGA_OP_GET_ACTIVE_FLASH_OUT_FLASH_ID_LEN 4
27860 /*            Enum values, see field(s): */
27861 /*               MC_CMD_FPGA_FLASH_INDEX */
27862 
27863 /* MC_CMD_FPGA_OP_SET_INTERNAL_LINK_IN msgrequest: Configure FPGA internal
27864  * port, facing the ASIC
27865  */
27866 #define	MC_CMD_FPGA_OP_SET_INTERNAL_LINK_IN_LEN 12
27867 /* Sub-command code. Must be OP_SET_INTERNAL_LINK */
27868 #define	MC_CMD_FPGA_OP_SET_INTERNAL_LINK_IN_OP_OFST 0
27869 #define	MC_CMD_FPGA_OP_SET_INTERNAL_LINK_IN_OP_LEN 4
27870 /* Flags */
27871 #define	MC_CMD_FPGA_OP_SET_INTERNAL_LINK_IN_FLAGS_OFST 4
27872 #define	MC_CMD_FPGA_OP_SET_INTERNAL_LINK_IN_FLAGS_LEN 4
27873 #define	MC_CMD_FPGA_OP_SET_INTERNAL_LINK_IN_LINK_STATE_OFST 4
27874 #define	MC_CMD_FPGA_OP_SET_INTERNAL_LINK_IN_LINK_STATE_LBN 0
27875 #define	MC_CMD_FPGA_OP_SET_INTERNAL_LINK_IN_LINK_STATE_WIDTH 2
27876 /* enum: Unmodified, same as last state set by firmware */
27877 #define	MC_CMD_FPGA_OP_SET_INTERNAL_LINK_IN_AUTO 0x0
27878 /* enum: Configure link-up */
27879 #define	MC_CMD_FPGA_OP_SET_INTERNAL_LINK_IN_UP 0x1
27880 /* enum: Configure link-down */
27881 #define	MC_CMD_FPGA_OP_SET_INTERNAL_LINK_IN_DOWN 0x2
27882 #define	MC_CMD_FPGA_OP_SET_INTERNAL_LINK_IN_FLUSH_OFST 4
27883 #define	MC_CMD_FPGA_OP_SET_INTERNAL_LINK_IN_FLUSH_LBN 2
27884 #define	MC_CMD_FPGA_OP_SET_INTERNAL_LINK_IN_FLUSH_WIDTH 1
27885 /* Link speed to be applied on FPGA internal port MAC. */
27886 #define	MC_CMD_FPGA_OP_SET_INTERNAL_LINK_IN_SPEED_OFST 8
27887 #define	MC_CMD_FPGA_OP_SET_INTERNAL_LINK_IN_SPEED_LEN 4
27888 
27889 /* MC_CMD_FPGA_OP_SET_INTERNAL_LINK_OUT msgresponse */
27890 #define	MC_CMD_FPGA_OP_SET_INTERNAL_LINK_OUT_LEN 0
27891 
27892 /* MC_CMD_FPGA_OP_GET_INTERNAL_LINK_IN msgrequest: Read FPGA internal port
27893  * configuration and status
27894  */
27895 #define	MC_CMD_FPGA_OP_GET_INTERNAL_LINK_IN_LEN 4
27896 /* Sub-command code. Must be OP_GET_INTERNAL_LINK */
27897 #define	MC_CMD_FPGA_OP_GET_INTERNAL_LINK_IN_OP_OFST 0
27898 #define	MC_CMD_FPGA_OP_GET_INTERNAL_LINK_IN_OP_LEN 4
27899 
27900 /* MC_CMD_FPGA_OP_GET_INTERNAL_LINK_OUT msgresponse: Response format for read
27901  * FPGA internal port configuration and status
27902  */
27903 #define	MC_CMD_FPGA_OP_GET_INTERNAL_LINK_OUT_LEN 8
27904 /* Flags */
27905 #define	MC_CMD_FPGA_OP_GET_INTERNAL_LINK_OUT_FLAGS_OFST 0
27906 #define	MC_CMD_FPGA_OP_GET_INTERNAL_LINK_OUT_FLAGS_LEN 4
27907 #define	MC_CMD_FPGA_OP_GET_INTERNAL_LINK_OUT_LINK_STATE_OFST 0
27908 #define	MC_CMD_FPGA_OP_GET_INTERNAL_LINK_OUT_LINK_STATE_LBN 0
27909 #define	MC_CMD_FPGA_OP_GET_INTERNAL_LINK_OUT_LINK_STATE_WIDTH 2
27910 /*             Enum values, see field(s): */
27911 /*                MC_CMD_FPGA_OP_SET_INTERNAL_LINK_IN/FLAGS */
27912 /* Link speed set on FPGA internal port MAC. */
27913 #define	MC_CMD_FPGA_OP_GET_INTERNAL_LINK_OUT_SPEED_OFST 4
27914 #define	MC_CMD_FPGA_OP_GET_INTERNAL_LINK_OUT_SPEED_LEN 4
27915 
27916 /* MC_CMD_FPGA_OP_GET_MAC_STATS_IN msgrequest: Get FPGA external port MAC
27917  * statistics.
27918  */
27919 #define	MC_CMD_FPGA_OP_GET_MAC_STATS_IN_LEN 4
27920 /* Sub-command code. Must be OP_GET_MAC_STATS. */
27921 #define	MC_CMD_FPGA_OP_GET_MAC_STATS_IN_OP_OFST 0
27922 #define	MC_CMD_FPGA_OP_GET_MAC_STATS_IN_OP_LEN 4
27923 
27924 /* MC_CMD_FPGA_OP_GET_MAC_STATS_OUT msgresponse */
27925 #define	MC_CMD_FPGA_OP_GET_MAC_STATS_OUT_LENMIN 4
27926 #define	MC_CMD_FPGA_OP_GET_MAC_STATS_OUT_LENMAX 252
27927 #define	MC_CMD_FPGA_OP_GET_MAC_STATS_OUT_LENMAX_MCDI2 1020
27928 #define	MC_CMD_FPGA_OP_GET_MAC_STATS_OUT_LEN(num) (4+8*(num))
27929 #define	MC_CMD_FPGA_OP_GET_MAC_STATS_OUT_STATISTICS_NUM(len) (((len)-4)/8)
27930 #define	MC_CMD_FPGA_OP_GET_MAC_STATS_OUT_NUM_STATS_OFST 0
27931 #define	MC_CMD_FPGA_OP_GET_MAC_STATS_OUT_NUM_STATS_LEN 4
27932 #define	MC_CMD_FPGA_OP_GET_MAC_STATS_OUT_STATISTICS_OFST 4
27933 #define	MC_CMD_FPGA_OP_GET_MAC_STATS_OUT_STATISTICS_LEN 8
27934 #define	MC_CMD_FPGA_OP_GET_MAC_STATS_OUT_STATISTICS_LO_OFST 4
27935 #define	MC_CMD_FPGA_OP_GET_MAC_STATS_OUT_STATISTICS_LO_LEN 4
27936 #define	MC_CMD_FPGA_OP_GET_MAC_STATS_OUT_STATISTICS_LO_LBN 32
27937 #define	MC_CMD_FPGA_OP_GET_MAC_STATS_OUT_STATISTICS_LO_WIDTH 32
27938 #define	MC_CMD_FPGA_OP_GET_MAC_STATS_OUT_STATISTICS_HI_OFST 8
27939 #define	MC_CMD_FPGA_OP_GET_MAC_STATS_OUT_STATISTICS_HI_LEN 4
27940 #define	MC_CMD_FPGA_OP_GET_MAC_STATS_OUT_STATISTICS_HI_LBN 64
27941 #define	MC_CMD_FPGA_OP_GET_MAC_STATS_OUT_STATISTICS_HI_WIDTH 32
27942 #define	MC_CMD_FPGA_OP_GET_MAC_STATS_OUT_STATISTICS_MINNUM 0
27943 #define	MC_CMD_FPGA_OP_GET_MAC_STATS_OUT_STATISTICS_MAXNUM 31
27944 #define	MC_CMD_FPGA_OP_GET_MAC_STATS_OUT_STATISTICS_MAXNUM_MCDI2 127
27945 /* enum property: index */
27946 #define	MC_CMD_FPGA_MAC_TX_TOTAL_PACKETS 0x0 /* enum */
27947 #define	MC_CMD_FPGA_MAC_TX_TOTAL_BYTES 0x1 /* enum */
27948 #define	MC_CMD_FPGA_MAC_TX_TOTAL_GOOD_PACKETS 0x2 /* enum */
27949 #define	MC_CMD_FPGA_MAC_TX_TOTAL_GOOD_BYTES 0x3 /* enum */
27950 #define	MC_CMD_FPGA_MAC_TX_BAD_FCS 0x4 /* enum */
27951 #define	MC_CMD_FPGA_MAC_TX_PAUSE 0x5 /* enum */
27952 #define	MC_CMD_FPGA_MAC_TX_USER_PAUSE 0x6 /* enum */
27953 #define	MC_CMD_FPGA_MAC_RX_TOTAL_PACKETS 0x7 /* enum */
27954 #define	MC_CMD_FPGA_MAC_RX_TOTAL_BYTES 0x8 /* enum */
27955 #define	MC_CMD_FPGA_MAC_RX_TOTAL_GOOD_PACKETS 0x9 /* enum */
27956 #define	MC_CMD_FPGA_MAC_RX_TOTAL_GOOD_BYTES 0xa /* enum */
27957 #define	MC_CMD_FPGA_MAC_RX_BAD_FCS 0xb /* enum */
27958 #define	MC_CMD_FPGA_MAC_RX_PAUSE 0xc /* enum */
27959 #define	MC_CMD_FPGA_MAC_RX_USER_PAUSE 0xd /* enum */
27960 #define	MC_CMD_FPGA_MAC_RX_UNDERSIZE 0xe /* enum */
27961 #define	MC_CMD_FPGA_MAC_RX_OVERSIZE 0xf /* enum */
27962 #define	MC_CMD_FPGA_MAC_RX_FRAMING_ERR 0x10 /* enum */
27963 #define	MC_CMD_FPGA_MAC_FEC_UNCORRECTED_ERRORS 0x11 /* enum */
27964 #define	MC_CMD_FPGA_MAC_FEC_CORRECTED_ERRORS 0x12 /* enum */
27965 
27966 /* MC_CMD_FPGA_OP_SET_INTERNAL_MAC_IN msgrequest: Configures the internal port
27967  * MAC on the FPGA.
27968  */
27969 #define	MC_CMD_FPGA_OP_SET_INTERNAL_MAC_IN_LEN 20
27970 /* Sub-command code. Must be OP_SET_INTERNAL_MAC. */
27971 #define	MC_CMD_FPGA_OP_SET_INTERNAL_MAC_IN_OP_OFST 0
27972 #define	MC_CMD_FPGA_OP_SET_INTERNAL_MAC_IN_OP_LEN 4
27973 /* Select which parameters to configure. */
27974 #define	MC_CMD_FPGA_OP_SET_INTERNAL_MAC_IN_CONTROL_OFST 4
27975 #define	MC_CMD_FPGA_OP_SET_INTERNAL_MAC_IN_CONTROL_LEN 4
27976 #define	MC_CMD_FPGA_OP_SET_INTERNAL_MAC_IN_CFG_MTU_OFST 4
27977 #define	MC_CMD_FPGA_OP_SET_INTERNAL_MAC_IN_CFG_MTU_LBN 0
27978 #define	MC_CMD_FPGA_OP_SET_INTERNAL_MAC_IN_CFG_MTU_WIDTH 1
27979 #define	MC_CMD_FPGA_OP_SET_INTERNAL_MAC_IN_CFG_DRAIN_OFST 4
27980 #define	MC_CMD_FPGA_OP_SET_INTERNAL_MAC_IN_CFG_DRAIN_LBN 1
27981 #define	MC_CMD_FPGA_OP_SET_INTERNAL_MAC_IN_CFG_DRAIN_WIDTH 1
27982 #define	MC_CMD_FPGA_OP_SET_INTERNAL_MAC_IN_CFG_FCNTL_OFST 4
27983 #define	MC_CMD_FPGA_OP_SET_INTERNAL_MAC_IN_CFG_FCNTL_LBN 2
27984 #define	MC_CMD_FPGA_OP_SET_INTERNAL_MAC_IN_CFG_FCNTL_WIDTH 1
27985 /* The MTU to be programmed into the MAC. */
27986 #define	MC_CMD_FPGA_OP_SET_INTERNAL_MAC_IN_MTU_OFST 8
27987 #define	MC_CMD_FPGA_OP_SET_INTERNAL_MAC_IN_MTU_LEN 4
27988 /* Drain Tx FIFO */
27989 #define	MC_CMD_FPGA_OP_SET_INTERNAL_MAC_IN_DRAIN_OFST 12
27990 #define	MC_CMD_FPGA_OP_SET_INTERNAL_MAC_IN_DRAIN_LEN 4
27991 /* flow control configuration. See MC_CMD_SET_MAC/MC_CMD_SET_MAC_IN/FCNTL. */
27992 #define	MC_CMD_FPGA_OP_SET_INTERNAL_MAC_IN_FCNTL_OFST 16
27993 #define	MC_CMD_FPGA_OP_SET_INTERNAL_MAC_IN_FCNTL_LEN 4
27994 
27995 /* MC_CMD_FPGA_OP_SET_INTERNAL_MAC_OUT msgresponse */
27996 #define	MC_CMD_FPGA_OP_SET_INTERNAL_MAC_OUT_LEN 0
27997 
27998 
27999 /***********************************/
28000 /* MC_CMD_EXTERNAL_MAE_GET_LINK_MODE
28001  * This command is expected to be used on a U25 board with an MAE in the FPGA.
28002  * It does not modify the operational state of the NIC. The modes are described
28003  * in XN-200039-TC - U25 OVS packet formats.
28004  */
28005 #define	MC_CMD_EXTERNAL_MAE_GET_LINK_MODE 0x1c0
28006 #define	MC_CMD_EXTERNAL_MAE_GET_LINK_MODE_MSGSET 0x1c0
28007 #undef	MC_CMD_0x1c0_PRIVILEGE_CTG
28008 
28009 #define	MC_CMD_0x1c0_PRIVILEGE_CTG SRIOV_CTG_GENERAL
28010 
28011 /* MC_CMD_EXTERNAL_MAE_GET_LINK_MODE_IN msgrequest */
28012 #define	MC_CMD_EXTERNAL_MAE_GET_LINK_MODE_IN_LEN 0
28013 
28014 /* MC_CMD_EXTERNAL_MAE_GET_LINK_MODE_OUT msgresponse */
28015 #define	MC_CMD_EXTERNAL_MAE_GET_LINK_MODE_OUT_LEN 4
28016 /* The current link mode */
28017 #define	MC_CMD_EXTERNAL_MAE_GET_LINK_MODE_OUT_MODE_OFST 0
28018 #define	MC_CMD_EXTERNAL_MAE_GET_LINK_MODE_OUT_MODE_LEN 4
28019 /*            Enum values, see field(s): */
28020 /*               MC_CMD_EXTERNAL_MAE_LINK_MODE */
28021 
28022 
28023 /***********************************/
28024 /* MC_CMD_EXTERNAL_MAE_SET_LINK_MODE
28025  * This command is expected to be used on a U25 board with an MAE in the FPGA.
28026  * The modes are described in XN-200039-TC - U25 OVS packet formats. This
28027  * command will set the link between the FPGA and the X2 to the specified new
28028  * mode. It will first enter bootstrap mode, make sure there are no packets in
28029  * flight and then enter the requested mode. In order to make sure there are no
28030  * packets in flight, it will flush the X2 TX path, the FPGA RX path from the
28031  * X2, the FPGA TX path to the X2 and the X2 RX path. The driver is responsible
28032  * for making sure there are no TX or RX descriptors posted on any TXQ or RXQ
28033  * associated with the affected port before invoking this command. This command
28034  * is run implicitly with MODE set to LEGACY when MC_CMD_DRV_ATTACH is
28035  * executed.
28036  */
28037 #define	MC_CMD_EXTERNAL_MAE_SET_LINK_MODE 0x1c1
28038 #define	MC_CMD_EXTERNAL_MAE_SET_LINK_MODE_MSGSET 0x1c1
28039 #undef	MC_CMD_0x1c1_PRIVILEGE_CTG
28040 
28041 #define	MC_CMD_0x1c1_PRIVILEGE_CTG SRIOV_CTG_GENERAL
28042 
28043 /* MC_CMD_EXTERNAL_MAE_SET_LINK_MODE_IN msgrequest */
28044 #define	MC_CMD_EXTERNAL_MAE_SET_LINK_MODE_IN_LEN 4
28045 /* The new link mode. */
28046 #define	MC_CMD_EXTERNAL_MAE_SET_LINK_MODE_IN_MODE_OFST 0
28047 #define	MC_CMD_EXTERNAL_MAE_SET_LINK_MODE_IN_MODE_LEN 4
28048 /*            Enum values, see field(s): */
28049 /*               MC_CMD_EXTERNAL_MAE_LINK_MODE */
28050 
28051 /* MC_CMD_EXTERNAL_MAE_SET_LINK_MODE_OUT msgresponse */
28052 #define	MC_CMD_EXTERNAL_MAE_SET_LINK_MODE_OUT_LEN 0
28053 
28054 
28055 /***********************************/
28056 /* MC_CMD_GET_BUFTBL_STATS
28057  * Currently EF10 only. Read usage and limits for Buffer Table
28058  */
28059 #define	MC_CMD_GET_BUFTBL_STATS 0x6a
28060 #define	MC_CMD_GET_BUFTBL_STATS_MSGSET 0x6a
28061 #undef	MC_CMD_0x6a_PRIVILEGE_CTG
28062 
28063 #define	MC_CMD_0x6a_PRIVILEGE_CTG SRIOV_CTG_GENERAL
28064 
28065 /* MC_CMD_GET_BUFTBL_STATS_IN msgrequest */
28066 #define	MC_CMD_GET_BUFTBL_STATS_IN_LEN 0
28067 
28068 /* MC_CMD_GET_BUFTBL_STATS_OUT msgresponse */
28069 #define	MC_CMD_GET_BUFTBL_STATS_OUT_LEN 40
28070 /* number of buffer table entries per set */
28071 #define	MC_CMD_GET_BUFTBL_STATS_OUT_BUFTBL_ENTRIES_PER_SET_OFST 0
28072 #define	MC_CMD_GET_BUFTBL_STATS_OUT_BUFTBL_ENTRIES_PER_SET_LEN 4
28073 /* number of buffer table entries per cluster */
28074 #define	MC_CMD_GET_BUFTBL_STATS_OUT_BUFTBL_ENTRIES_PER_CLUSTER_OFST 4
28075 #define	MC_CMD_GET_BUFTBL_STATS_OUT_BUFTBL_ENTRIES_PER_CLUSTER_LEN 4
28076 /* Maximum size buffer table can grow to, in clusters. On EF10, this can
28077  * potentially vary depending on the size of the Descriptor Cache.
28078  */
28079 #define	MC_CMD_GET_BUFTBL_STATS_OUT_BUFTBL_MAX_CLUSTERS_OFST 8
28080 #define	MC_CMD_GET_BUFTBL_STATS_OUT_BUFTBL_MAX_CLUSTERS_LEN 4
28081 /* High water mark for number of buffer table clusters which have been
28082  * allocated.
28083  */
28084 #define	MC_CMD_GET_BUFTBL_STATS_OUT_BUFTBL_HIGH_WATER_CLUSTERS_OFST 12
28085 #define	MC_CMD_GET_BUFTBL_STATS_OUT_BUFTBL_HIGH_WATER_CLUSTERS_LEN 4
28086 /* Number of free buffer table clusters on the free cluster list. */
28087 #define	MC_CMD_GET_BUFTBL_STATS_OUT_BUFTBL_FREE_CLUSTERS_OFST 16
28088 #define	MC_CMD_GET_BUFTBL_STATS_OUT_BUFTBL_FREE_CLUSTERS_LEN 4
28089 /* Number of free buffer table sets on the free set list. */
28090 #define	MC_CMD_GET_BUFTBL_STATS_OUT_BUFTBL_FREE_SETS_OFST 20
28091 #define	MC_CMD_GET_BUFTBL_STATS_OUT_BUFTBL_FREE_SETS_LEN 4
28092 /* Number of chunks of fully-used clusters allocated to the MC for EVQ, RXQ and
28093  * TXQs.
28094  */
28095 #define	MC_CMD_GET_BUFTBL_STATS_OUT_BUFTBL_MC_FULL_CLUSTERS_OFST 24
28096 #define	MC_CMD_GET_BUFTBL_STATS_OUT_BUFTBL_MC_FULL_CLUSTERS_LEN 4
28097 /* Number of chunks in partially-used clusters allocated to the MC for EVQ, RXQ
28098  * and TXQs.
28099  */
28100 #define	MC_CMD_GET_BUFTBL_STATS_OUT_BUFTBL_MC_PART_CLUSTERS_OFST 28
28101 #define	MC_CMD_GET_BUFTBL_STATS_OUT_BUFTBL_MC_PART_CLUSTERS_LEN 4
28102 /* Number of buffer table sets (chunks) allocated to the host via
28103  * MC_CMD_ALLOC_BUFTBL_CHUNK.
28104  */
28105 #define	MC_CMD_GET_BUFTBL_STATS_OUT_BUFTBL_HOST_SETS_OFST 32
28106 #define	MC_CMD_GET_BUFTBL_STATS_OUT_BUFTBL_HOST_SETS_LEN 4
28107 /* Maximum number of VIs per NIC. On EF10 this is the current value as used to
28108  * size the Descriptor Cache in hardware.
28109  */
28110 #define	MC_CMD_GET_BUFTBL_STATS_OUT_VI_MAX_OFST 36
28111 #define	MC_CMD_GET_BUFTBL_STATS_OUT_VI_MAX_LEN 4
28112 
28113 /* CLIENT_HANDLE structuredef: A client is an abstract entity that can make
28114  * requests of the device and that can own resources managed by the device.
28115  * Examples of clients include PCIe functions and dynamic clients. A client
28116  * handle is a 32b opaque value used to refer to a client. Further details can
28117  * be found within XN-200418-TC.
28118  */
28119 #define	CLIENT_HANDLE_LEN 4
28120 #define	CLIENT_HANDLE_OPAQUE_OFST 0
28121 #define	CLIENT_HANDLE_OPAQUE_LEN 4
28122 /* enum: A client handle guaranteed never to refer to a real client. */
28123 #define	CLIENT_HANDLE_NULL 0xffffffff
28124 /* enum: Used to refer to the calling client. */
28125 #define	CLIENT_HANDLE_SELF 0xfffffffe
28126 #define	CLIENT_HANDLE_OPAQUE_LBN 0
28127 #define	CLIENT_HANDLE_OPAQUE_WIDTH 32
28128 
28129 /* CLOCK_INFO structuredef: Information about a single hardware clock */
28130 #define	CLOCK_INFO_LEN 28
28131 /* Enumeration that uniquely identifies the clock */
28132 #define	CLOCK_INFO_CLOCK_ID_OFST 0
28133 #define	CLOCK_INFO_CLOCK_ID_LEN 2
28134 /* enum: The Riverhead CMC (card MC) */
28135 #define	CLOCK_INFO_CLOCK_CMC 0x0
28136 /* enum: The Riverhead NMC (network MC) */
28137 #define	CLOCK_INFO_CLOCK_NMC 0x1
28138 /* enum: The Riverhead SDNET slice main logic */
28139 #define	CLOCK_INFO_CLOCK_SDNET 0x2
28140 /* enum: The Riverhead SDNET LUT */
28141 #define	CLOCK_INFO_CLOCK_SDNET_LUT 0x3
28142 /* enum: The Riverhead SDNET control logic */
28143 #define	CLOCK_INFO_CLOCK_SDNET_CTRL 0x4
28144 /* enum: The Riverhead Streaming SubSystem */
28145 #define	CLOCK_INFO_CLOCK_SSS 0x5
28146 /* enum: The Riverhead network MAC and associated CSR registers */
28147 #define	CLOCK_INFO_CLOCK_MAC 0x6
28148 #define	CLOCK_INFO_CLOCK_ID_LBN 0
28149 #define	CLOCK_INFO_CLOCK_ID_WIDTH 16
28150 /* Assorted flags */
28151 #define	CLOCK_INFO_FLAGS_OFST 2
28152 #define	CLOCK_INFO_FLAGS_LEN 2
28153 #define	CLOCK_INFO_SETTABLE_OFST 2
28154 #define	CLOCK_INFO_SETTABLE_LBN 0
28155 #define	CLOCK_INFO_SETTABLE_WIDTH 1
28156 #define	CLOCK_INFO_FLAGS_LBN 16
28157 #define	CLOCK_INFO_FLAGS_WIDTH 16
28158 /* The frequency in HZ */
28159 #define	CLOCK_INFO_FREQUENCY_OFST 4
28160 #define	CLOCK_INFO_FREQUENCY_LEN 8
28161 #define	CLOCK_INFO_FREQUENCY_LO_OFST 4
28162 #define	CLOCK_INFO_FREQUENCY_LO_LEN 4
28163 #define	CLOCK_INFO_FREQUENCY_LO_LBN 32
28164 #define	CLOCK_INFO_FREQUENCY_LO_WIDTH 32
28165 #define	CLOCK_INFO_FREQUENCY_HI_OFST 8
28166 #define	CLOCK_INFO_FREQUENCY_HI_LEN 4
28167 #define	CLOCK_INFO_FREQUENCY_HI_LBN 64
28168 #define	CLOCK_INFO_FREQUENCY_HI_WIDTH 32
28169 #define	CLOCK_INFO_FREQUENCY_LBN 32
28170 #define	CLOCK_INFO_FREQUENCY_WIDTH 64
28171 /* Human-readable ASCII name for clock, with NUL termination */
28172 #define	CLOCK_INFO_NAME_OFST 12
28173 #define	CLOCK_INFO_NAME_LEN 1
28174 #define	CLOCK_INFO_NAME_NUM 16
28175 #define	CLOCK_INFO_NAME_LBN 96
28176 #define	CLOCK_INFO_NAME_WIDTH 8
28177 
28178 /* SCHED_CREDIT_CHECK_RESULT structuredef */
28179 #define	SCHED_CREDIT_CHECK_RESULT_LEN 16
28180 /* The instance of the scheduler. Refer to XN-200389-AW (snic/hnic) and
28181  * XN-200425-TC (cdx) for the location of these schedulers in the hardware.
28182  */
28183 #define	SCHED_CREDIT_CHECK_RESULT_SCHED_INSTANCE_OFST 0
28184 #define	SCHED_CREDIT_CHECK_RESULT_SCHED_INSTANCE_LEN 1
28185 #define	SCHED_CREDIT_CHECK_RESULT_HUB_HOST_A 0x0 /* enum */
28186 #define	SCHED_CREDIT_CHECK_RESULT_HUB_NET_A 0x1 /* enum */
28187 #define	SCHED_CREDIT_CHECK_RESULT_HUB_B 0x2 /* enum */
28188 #define	SCHED_CREDIT_CHECK_RESULT_HUB_HOST_C 0x3 /* enum */
28189 #define	SCHED_CREDIT_CHECK_RESULT_HUB_NET_TX 0x4 /* enum */
28190 #define	SCHED_CREDIT_CHECK_RESULT_HUB_HOST_D 0x5 /* enum */
28191 #define	SCHED_CREDIT_CHECK_RESULT_HUB_REPLAY 0x6 /* enum */
28192 #define	SCHED_CREDIT_CHECK_RESULT_DMAC_H2C 0x7 /* enum */
28193 #define	SCHED_CREDIT_CHECK_RESULT_HUB_NET_B 0x8 /* enum */
28194 #define	SCHED_CREDIT_CHECK_RESULT_HUB_NET_REPLAY 0x9 /* enum */
28195 #define	SCHED_CREDIT_CHECK_RESULT_ADAPTER_C2H_C 0xa /* enum */
28196 #define	SCHED_CREDIT_CHECK_RESULT_A2_H2C_C 0xb /* enum */
28197 #define	SCHED_CREDIT_CHECK_RESULT_A3_SOFT_ADAPTOR_C 0xc /* enum */
28198 #define	SCHED_CREDIT_CHECK_RESULT_A4_DPU_WRITE_C 0xd /* enum */
28199 #define	SCHED_CREDIT_CHECK_RESULT_JRC_RRU 0xe /* enum */
28200 #define	SCHED_CREDIT_CHECK_RESULT_CDM_SINK 0xf /* enum */
28201 #define	SCHED_CREDIT_CHECK_RESULT_PCIE_SINK 0x10 /* enum */
28202 #define	SCHED_CREDIT_CHECK_RESULT_UPORT_SINK 0x11 /* enum */
28203 #define	SCHED_CREDIT_CHECK_RESULT_PSX_SINK 0x12 /* enum */
28204 #define	SCHED_CREDIT_CHECK_RESULT_A5_DPU_READ_C 0x13 /* enum */
28205 #define	SCHED_CREDIT_CHECK_RESULT_SCHED_INSTANCE_LBN 0
28206 #define	SCHED_CREDIT_CHECK_RESULT_SCHED_INSTANCE_WIDTH 8
28207 /* The type of node that this result refers to. */
28208 #define	SCHED_CREDIT_CHECK_RESULT_NODE_TYPE_OFST 1
28209 #define	SCHED_CREDIT_CHECK_RESULT_NODE_TYPE_LEN 1
28210 /* enum: Destination node */
28211 #define	SCHED_CREDIT_CHECK_RESULT_DEST 0x0
28212 /* enum: Source node */
28213 #define	SCHED_CREDIT_CHECK_RESULT_SOURCE 0x1
28214 /* enum: Destination node credit type 1 (new to the Keystone schedulers, see
28215  * SF-120268-TC)
28216  */
28217 #define	SCHED_CREDIT_CHECK_RESULT_DEST_CREDIT1 0x2
28218 #define	SCHED_CREDIT_CHECK_RESULT_NODE_TYPE_LBN 8
28219 #define	SCHED_CREDIT_CHECK_RESULT_NODE_TYPE_WIDTH 8
28220 /* Level of node in scheduler hierarchy (level 0 is the bottom of the
28221  * hierarchy, increasing towards the root node).
28222  */
28223 #define	SCHED_CREDIT_CHECK_RESULT_NODE_LEVEL_OFST 2
28224 #define	SCHED_CREDIT_CHECK_RESULT_NODE_LEVEL_LEN 2
28225 #define	SCHED_CREDIT_CHECK_RESULT_NODE_LEVEL_LBN 16
28226 #define	SCHED_CREDIT_CHECK_RESULT_NODE_LEVEL_WIDTH 16
28227 /* Node index */
28228 #define	SCHED_CREDIT_CHECK_RESULT_NODE_INDEX_OFST 4
28229 #define	SCHED_CREDIT_CHECK_RESULT_NODE_INDEX_LEN 4
28230 #define	SCHED_CREDIT_CHECK_RESULT_NODE_INDEX_LBN 32
28231 #define	SCHED_CREDIT_CHECK_RESULT_NODE_INDEX_WIDTH 32
28232 /* The number of credits the node is expected to have. */
28233 #define	SCHED_CREDIT_CHECK_RESULT_EXPECTED_CREDITS_OFST 8
28234 #define	SCHED_CREDIT_CHECK_RESULT_EXPECTED_CREDITS_LEN 4
28235 #define	SCHED_CREDIT_CHECK_RESULT_EXPECTED_CREDITS_LBN 64
28236 #define	SCHED_CREDIT_CHECK_RESULT_EXPECTED_CREDITS_WIDTH 32
28237 /* The number of credits the node actually had. */
28238 #define	SCHED_CREDIT_CHECK_RESULT_ACTUAL_CREDITS_OFST 12
28239 #define	SCHED_CREDIT_CHECK_RESULT_ACTUAL_CREDITS_LEN 4
28240 #define	SCHED_CREDIT_CHECK_RESULT_ACTUAL_CREDITS_LBN 96
28241 #define	SCHED_CREDIT_CHECK_RESULT_ACTUAL_CREDITS_WIDTH 32
28242 
28243 
28244 /***********************************/
28245 /* MC_CMD_GET_CLOCKS_INFO
28246  * Get information about the device clocks
28247  */
28248 #define	MC_CMD_GET_CLOCKS_INFO 0x166
28249 #define	MC_CMD_GET_CLOCKS_INFO_MSGSET 0x166
28250 #undef	MC_CMD_0x166_PRIVILEGE_CTG
28251 
28252 #define	MC_CMD_0x166_PRIVILEGE_CTG SRIOV_CTG_GENERAL
28253 
28254 /* MC_CMD_GET_CLOCKS_INFO_IN msgrequest */
28255 #define	MC_CMD_GET_CLOCKS_INFO_IN_LEN 0
28256 
28257 /* MC_CMD_GET_CLOCKS_INFO_OUT msgresponse */
28258 #define	MC_CMD_GET_CLOCKS_INFO_OUT_LENMIN 0
28259 #define	MC_CMD_GET_CLOCKS_INFO_OUT_LENMAX 252
28260 #define	MC_CMD_GET_CLOCKS_INFO_OUT_LENMAX_MCDI2 1008
28261 #define	MC_CMD_GET_CLOCKS_INFO_OUT_LEN(num) (0+28*(num))
28262 #define	MC_CMD_GET_CLOCKS_INFO_OUT_INFOS_NUM(len) (((len)-0)/28)
28263 /* An array of CLOCK_INFO structures. */
28264 #define	MC_CMD_GET_CLOCKS_INFO_OUT_INFOS_OFST 0
28265 #define	MC_CMD_GET_CLOCKS_INFO_OUT_INFOS_LEN 28
28266 #define	MC_CMD_GET_CLOCKS_INFO_OUT_INFOS_MINNUM 0
28267 #define	MC_CMD_GET_CLOCKS_INFO_OUT_INFOS_MAXNUM 9
28268 #define	MC_CMD_GET_CLOCKS_INFO_OUT_INFOS_MAXNUM_MCDI2 36
28269 
28270 
28271 /***********************************/
28272 /* MC_CMD_VNIC_ENCAP_RULE_ADD
28273  * Add a rule for detecting encapsulations in the VNIC stage. Currently this
28274  * only affects checksum validation in VNIC RX - on TX the send descriptor
28275  * explicitly specifies encapsulation. These rules are per-VNIC, i.e. only
28276  * apply to the current driver. If a rule matches, then the packet is
28277  * considered to have the corresponding encapsulation type, and the inner
28278  * packet is parsed. It is up to the driver to ensure that overlapping rules
28279  * are not inserted. (If a packet would match multiple rules, a random one of
28280  * them will be used.) A rule with the exact same match criteria may not be
28281  * inserted twice (EALREADY). Only a limited number MATCH_FLAGS values are
28282  * supported, use MC_CMD_GET_PARSER_DISP_INFO with OP
28283  * OP_GET_SUPPORTED_VNIC_ENCAP_RULE_MATCHES to get a list of supported
28284  * combinations. Each driver may only have a limited set of active rules -
28285  * returns ENOSPC if the caller's table is full.
28286  */
28287 #define	MC_CMD_VNIC_ENCAP_RULE_ADD 0x16d
28288 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_MSGSET 0x16d
28289 #undef	MC_CMD_0x16d_PRIVILEGE_CTG
28290 
28291 #define	MC_CMD_0x16d_PRIVILEGE_CTG SRIOV_CTG_GENERAL
28292 
28293 /* MC_CMD_VNIC_ENCAP_RULE_ADD_IN msgrequest */
28294 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_IN_LEN 36
28295 /* Set to MAE_MPORT_SELECTOR_ASSIGNED. In the future this may be relaxed. */
28296 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_IN_MPORT_SELECTOR_OFST 0
28297 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_IN_MPORT_SELECTOR_LEN 4
28298 /* Any non-zero bits other than the ones named below or an unsupported
28299  * combination will cause the NIC to return EOPNOTSUPP. In the future more
28300  * flags may be added.
28301  */
28302 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_IN_MATCH_FLAGS_OFST 4
28303 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_IN_MATCH_FLAGS_LEN 4
28304 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_IN_MATCH_ETHER_TYPE_OFST 4
28305 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_IN_MATCH_ETHER_TYPE_LBN 0
28306 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_IN_MATCH_ETHER_TYPE_WIDTH 1
28307 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_IN_MATCH_OUTER_VLAN_OFST 4
28308 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_IN_MATCH_OUTER_VLAN_LBN 1
28309 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_IN_MATCH_OUTER_VLAN_WIDTH 1
28310 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_IN_MATCH_DST_IP_OFST 4
28311 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_IN_MATCH_DST_IP_LBN 2
28312 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_IN_MATCH_DST_IP_WIDTH 1
28313 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_IN_MATCH_IP_PROTO_OFST 4
28314 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_IN_MATCH_IP_PROTO_LBN 3
28315 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_IN_MATCH_IP_PROTO_WIDTH 1
28316 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_IN_MATCH_DST_PORT_OFST 4
28317 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_IN_MATCH_DST_PORT_LBN 4
28318 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_IN_MATCH_DST_PORT_WIDTH 1
28319 /* Only if MATCH_ETHER_TYPE is set. Ethertype value as bytes in network order.
28320  * Currently only IPv4 (0x0800) and IPv6 (0x86DD) ethertypes may be used.
28321  */
28322 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_IN_ETHER_TYPE_OFST 8
28323 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_IN_ETHER_TYPE_LEN 2
28324 /* Only if MATCH_OUTER_VLAN is set. VID value as bytes in network order.
28325  * (Deprecated)
28326  */
28327 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_IN_OUTER_VLAN_LBN 80
28328 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_IN_OUTER_VLAN_WIDTH 12
28329 /* Only if MATCH_OUTER_VLAN is set. Aligned wrapper for OUTER_VLAN_VID. */
28330 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_IN_OUTER_VLAN_WORD_OFST 10
28331 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_IN_OUTER_VLAN_WORD_LEN 2
28332 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_IN_OUTER_VLAN_VID_OFST 10
28333 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_IN_OUTER_VLAN_VID_LBN 0
28334 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_IN_OUTER_VLAN_VID_WIDTH 12
28335 /* Only if MATCH_DST_IP is set. IP address as bytes in network order. In the
28336  * case of IPv4, the IP should be in the first 4 bytes and all other bytes
28337  * should be zero.
28338  */
28339 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_IN_DST_IP_OFST 12
28340 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_IN_DST_IP_LEN 16
28341 /* Only if MATCH_IP_PROTO is set. Currently only UDP proto (17) may be used. */
28342 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_IN_IP_PROTO_OFST 28
28343 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_IN_IP_PROTO_LEN 1
28344 /* Actions that should be applied to packets match the rule. */
28345 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_IN_ACTION_FLAGS_OFST 29
28346 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_IN_ACTION_FLAGS_LEN 1
28347 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_IN_STRIP_OUTER_VLAN_OFST 29
28348 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_IN_STRIP_OUTER_VLAN_LBN 0
28349 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_IN_STRIP_OUTER_VLAN_WIDTH 1
28350 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_IN_RSS_ON_OUTER_OFST 29
28351 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_IN_RSS_ON_OUTER_LBN 1
28352 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_IN_RSS_ON_OUTER_WIDTH 1
28353 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_IN_STEER_ON_OUTER_OFST 29
28354 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_IN_STEER_ON_OUTER_LBN 2
28355 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_IN_STEER_ON_OUTER_WIDTH 1
28356 /* Only if MATCH_DST_PORT is set. Port number as bytes in network order. */
28357 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_IN_DST_PORT_OFST 30
28358 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_IN_DST_PORT_LEN 2
28359 /* Resulting encapsulation type, as per MAE_MCDI_ENCAP_TYPE enumeration. */
28360 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_IN_ENCAP_TYPE_OFST 32
28361 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_IN_ENCAP_TYPE_LEN 4
28362 
28363 /* MC_CMD_VNIC_ENCAP_RULE_ADD_OUT msgresponse */
28364 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_OUT_LEN 4
28365 /* Handle to inserted rule. Used for removing the rule. */
28366 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_OUT_HANDLE_OFST 0
28367 #define	MC_CMD_VNIC_ENCAP_RULE_ADD_OUT_HANDLE_LEN 4
28368 
28369 
28370 /***********************************/
28371 /* MC_CMD_VNIC_ENCAP_RULE_REMOVE
28372  * Remove a VNIC encapsulation rule. Packets which would have previously
28373  * matched the rule will then be considered as unencapsulated. Returns EALREADY
28374  * if the input HANDLE doesn't correspond to an existing rule.
28375  */
28376 #define	MC_CMD_VNIC_ENCAP_RULE_REMOVE 0x16e
28377 #define	MC_CMD_VNIC_ENCAP_RULE_REMOVE_MSGSET 0x16e
28378 #undef	MC_CMD_0x16e_PRIVILEGE_CTG
28379 
28380 #define	MC_CMD_0x16e_PRIVILEGE_CTG SRIOV_CTG_GENERAL
28381 
28382 /* MC_CMD_VNIC_ENCAP_RULE_REMOVE_IN msgrequest */
28383 #define	MC_CMD_VNIC_ENCAP_RULE_REMOVE_IN_LEN 4
28384 /* Handle which was returned by MC_CMD_VNIC_ENCAP_RULE_ADD. */
28385 #define	MC_CMD_VNIC_ENCAP_RULE_REMOVE_IN_HANDLE_OFST 0
28386 #define	MC_CMD_VNIC_ENCAP_RULE_REMOVE_IN_HANDLE_LEN 4
28387 
28388 /* MC_CMD_VNIC_ENCAP_RULE_REMOVE_OUT msgresponse */
28389 #define	MC_CMD_VNIC_ENCAP_RULE_REMOVE_OUT_LEN 0
28390 
28391 /* UUID structuredef: An RFC4122 standard UUID. The values here are stored in
28392  * the endianness specified by the RFC; users should ignore the broken-out
28393  * fields and instead do straight memory copies to ensure correct ordering.
28394  */
28395 #define	UUID_LEN 16
28396 #define	UUID_TIME_LOW_OFST 0
28397 #define	UUID_TIME_LOW_LEN 4
28398 #define	UUID_TIME_LOW_LBN 0
28399 #define	UUID_TIME_LOW_WIDTH 32
28400 #define	UUID_TIME_MID_OFST 4
28401 #define	UUID_TIME_MID_LEN 2
28402 #define	UUID_TIME_MID_LBN 32
28403 #define	UUID_TIME_MID_WIDTH 16
28404 #define	UUID_TIME_HI_LBN 52
28405 #define	UUID_TIME_HI_WIDTH 12
28406 #define	UUID_VERSION_LBN 48
28407 #define	UUID_VERSION_WIDTH 4
28408 #define	UUID_RESERVED_LBN 64
28409 #define	UUID_RESERVED_WIDTH 2
28410 #define	UUID_CLK_SEQ_LBN 66
28411 #define	UUID_CLK_SEQ_WIDTH 14
28412 #define	UUID_NODE_OFST 10
28413 #define	UUID_NODE_LEN 6
28414 #define	UUID_NODE_LBN 80
28415 #define	UUID_NODE_WIDTH 48
28416 
28417 
28418 /***********************************/
28419 /* MC_CMD_PLUGIN_ALLOC
28420  * Create a handle to a datapath plugin's extension. This involves finding a
28421  * currently-loaded plugin offering the given functionality (as identified by
28422  * the UUID) and allocating a handle to track the usage of it. Plugin
28423  * functionality is identified by 'extension' rather than any other identifier
28424  * so that a single plugin bitfile may offer more than one piece of independent
28425  * functionality. If two bitfiles are loaded which both offer the same
28426  * extension, then the metadata is interrogated further to determine which is
28427  * the newest and that is the one opened. See SF-123625-SW for architectural
28428  * detail on datapath plugins.
28429  */
28430 #define	MC_CMD_PLUGIN_ALLOC 0x1ad
28431 #define	MC_CMD_PLUGIN_ALLOC_MSGSET 0x1ad
28432 #undef	MC_CMD_0x1ad_PRIVILEGE_CTG
28433 
28434 #define	MC_CMD_0x1ad_PRIVILEGE_CTG SRIOV_CTG_GENERAL
28435 
28436 /* MC_CMD_PLUGIN_ALLOC_IN msgrequest */
28437 #define	MC_CMD_PLUGIN_ALLOC_IN_LEN 24
28438 /* The functionality requested of the plugin, as a UUID structure */
28439 #define	MC_CMD_PLUGIN_ALLOC_IN_UUID_OFST 0
28440 #define	MC_CMD_PLUGIN_ALLOC_IN_UUID_LEN 16
28441 /* Additional options for opening the handle */
28442 #define	MC_CMD_PLUGIN_ALLOC_IN_FLAGS_OFST 16
28443 #define	MC_CMD_PLUGIN_ALLOC_IN_FLAGS_LEN 4
28444 #define	MC_CMD_PLUGIN_ALLOC_IN_FLAG_INFO_ONLY_OFST 16
28445 #define	MC_CMD_PLUGIN_ALLOC_IN_FLAG_INFO_ONLY_LBN 0
28446 #define	MC_CMD_PLUGIN_ALLOC_IN_FLAG_INFO_ONLY_WIDTH 1
28447 #define	MC_CMD_PLUGIN_ALLOC_IN_FLAG_ALLOW_DISABLED_OFST 16
28448 #define	MC_CMD_PLUGIN_ALLOC_IN_FLAG_ALLOW_DISABLED_LBN 1
28449 #define	MC_CMD_PLUGIN_ALLOC_IN_FLAG_ALLOW_DISABLED_WIDTH 1
28450 /* Load the extension only if it is in the specified administrative group.
28451  * Specify ANY to load the extension wherever it is found (if there are
28452  * multiple choices then the extension with the highest MINOR_VER/PATCH_VER
28453  * will be loaded). See MC_CMD_PLUGIN_GET_META_GLOBAL for a description of
28454  * administrative groups.
28455  */
28456 #define	MC_CMD_PLUGIN_ALLOC_IN_ADMIN_GROUP_OFST 20
28457 #define	MC_CMD_PLUGIN_ALLOC_IN_ADMIN_GROUP_LEN 2
28458 /* enum: Load the extension from any ADMIN_GROUP. */
28459 #define	MC_CMD_PLUGIN_ALLOC_IN_ANY 0xffff
28460 /* Reserved */
28461 #define	MC_CMD_PLUGIN_ALLOC_IN_RESERVED_OFST 22
28462 #define	MC_CMD_PLUGIN_ALLOC_IN_RESERVED_LEN 2
28463 
28464 /* MC_CMD_PLUGIN_ALLOC_OUT msgresponse */
28465 #define	MC_CMD_PLUGIN_ALLOC_OUT_LEN 4
28466 /* Unique identifier of this usage */
28467 #define	MC_CMD_PLUGIN_ALLOC_OUT_HANDLE_OFST 0
28468 #define	MC_CMD_PLUGIN_ALLOC_OUT_HANDLE_LEN 4
28469 
28470 
28471 /***********************************/
28472 /* MC_CMD_PLUGIN_FREE
28473  * Delete a handle to a plugin's extension.
28474  */
28475 #define	MC_CMD_PLUGIN_FREE 0x1ae
28476 #define	MC_CMD_PLUGIN_FREE_MSGSET 0x1ae
28477 #undef	MC_CMD_0x1ae_PRIVILEGE_CTG
28478 
28479 #define	MC_CMD_0x1ae_PRIVILEGE_CTG SRIOV_CTG_GENERAL
28480 
28481 /* MC_CMD_PLUGIN_FREE_IN msgrequest */
28482 #define	MC_CMD_PLUGIN_FREE_IN_LEN 4
28483 /* Handle returned by MC_CMD_PLUGIN_ALLOC_OUT */
28484 #define	MC_CMD_PLUGIN_FREE_IN_HANDLE_OFST 0
28485 #define	MC_CMD_PLUGIN_FREE_IN_HANDLE_LEN 4
28486 
28487 /* MC_CMD_PLUGIN_FREE_OUT msgresponse */
28488 #define	MC_CMD_PLUGIN_FREE_OUT_LEN 0
28489 
28490 
28491 /***********************************/
28492 /* MC_CMD_PLUGIN_GET_META_GLOBAL
28493  * Returns the global metadata applying to the whole plugin extension. See the
28494  * other metadata calls for subtypes of data.
28495  */
28496 #define	MC_CMD_PLUGIN_GET_META_GLOBAL 0x1af
28497 #define	MC_CMD_PLUGIN_GET_META_GLOBAL_MSGSET 0x1af
28498 #undef	MC_CMD_0x1af_PRIVILEGE_CTG
28499 
28500 #define	MC_CMD_0x1af_PRIVILEGE_CTG SRIOV_CTG_GENERAL
28501 
28502 /* MC_CMD_PLUGIN_GET_META_GLOBAL_IN msgrequest */
28503 #define	MC_CMD_PLUGIN_GET_META_GLOBAL_IN_LEN 4
28504 /* Handle returned by MC_CMD_PLUGIN_ALLOC_OUT */
28505 #define	MC_CMD_PLUGIN_GET_META_GLOBAL_IN_HANDLE_OFST 0
28506 #define	MC_CMD_PLUGIN_GET_META_GLOBAL_IN_HANDLE_LEN 4
28507 
28508 /* MC_CMD_PLUGIN_GET_META_GLOBAL_OUT msgresponse */
28509 #define	MC_CMD_PLUGIN_GET_META_GLOBAL_OUT_LEN 36
28510 /* Unique identifier of this plugin extension. This is identical to the value
28511  * which was requested when the handle was allocated.
28512  */
28513 #define	MC_CMD_PLUGIN_GET_META_GLOBAL_OUT_UUID_OFST 0
28514 #define	MC_CMD_PLUGIN_GET_META_GLOBAL_OUT_UUID_LEN 16
28515 /* semver sub-version of this plugin extension */
28516 #define	MC_CMD_PLUGIN_GET_META_GLOBAL_OUT_MINOR_VER_OFST 16
28517 #define	MC_CMD_PLUGIN_GET_META_GLOBAL_OUT_MINOR_VER_LEN 2
28518 /* semver micro-version of this plugin extension */
28519 #define	MC_CMD_PLUGIN_GET_META_GLOBAL_OUT_PATCH_VER_OFST 18
28520 #define	MC_CMD_PLUGIN_GET_META_GLOBAL_OUT_PATCH_VER_LEN 2
28521 /* Number of different messages which can be sent to this extension */
28522 #define	MC_CMD_PLUGIN_GET_META_GLOBAL_OUT_NUM_MSGS_OFST 20
28523 #define	MC_CMD_PLUGIN_GET_META_GLOBAL_OUT_NUM_MSGS_LEN 4
28524 /* Byte offset within the VI window of the plugin's mapped CSR window. */
28525 #define	MC_CMD_PLUGIN_GET_META_GLOBAL_OUT_MAPPED_CSR_OFFSET_OFST 24
28526 #define	MC_CMD_PLUGIN_GET_META_GLOBAL_OUT_MAPPED_CSR_OFFSET_LEN 2
28527 /* Number of bytes mapped through to the plugin's CSRs. 0 if that feature was
28528  * not requested by the plugin (in which case MAPPED_CSR_OFFSET and
28529  * MAPPED_CSR_FLAGS are ignored).
28530  */
28531 #define	MC_CMD_PLUGIN_GET_META_GLOBAL_OUT_MAPPED_CSR_SIZE_OFST 26
28532 #define	MC_CMD_PLUGIN_GET_META_GLOBAL_OUT_MAPPED_CSR_SIZE_LEN 2
28533 /* Flags indicating how to perform the CSR window mapping. */
28534 #define	MC_CMD_PLUGIN_GET_META_GLOBAL_OUT_MAPPED_CSR_FLAGS_OFST 28
28535 #define	MC_CMD_PLUGIN_GET_META_GLOBAL_OUT_MAPPED_CSR_FLAGS_LEN 4
28536 #define	MC_CMD_PLUGIN_GET_META_GLOBAL_OUT_MAPPED_CSR_FLAG_READ_OFST 28
28537 #define	MC_CMD_PLUGIN_GET_META_GLOBAL_OUT_MAPPED_CSR_FLAG_READ_LBN 0
28538 #define	MC_CMD_PLUGIN_GET_META_GLOBAL_OUT_MAPPED_CSR_FLAG_READ_WIDTH 1
28539 #define	MC_CMD_PLUGIN_GET_META_GLOBAL_OUT_MAPPED_CSR_FLAG_WRITE_OFST 28
28540 #define	MC_CMD_PLUGIN_GET_META_GLOBAL_OUT_MAPPED_CSR_FLAG_WRITE_LBN 1
28541 #define	MC_CMD_PLUGIN_GET_META_GLOBAL_OUT_MAPPED_CSR_FLAG_WRITE_WIDTH 1
28542 /* Identifier of the set of extensions which all change state together.
28543  * Extensions having the same ADMIN_GROUP will always load and unload at the
28544  * same time. ADMIN_GROUP values themselves are arbitrary (but they contain a
28545  * generation number as an implementation detail to ensure that they're not
28546  * reused rapidly).
28547  */
28548 #define	MC_CMD_PLUGIN_GET_META_GLOBAL_OUT_ADMIN_GROUP_OFST 32
28549 #define	MC_CMD_PLUGIN_GET_META_GLOBAL_OUT_ADMIN_GROUP_LEN 1
28550 /* Bitshift in MC_CMD_DEVEL_CLIENT_PRIVILEGE_MODIFY's MASK parameters
28551  * corresponding to this extension, i.e. set the bit 1<<PRIVILEGE_BIT to permit
28552  * access to this extension.
28553  */
28554 #define	MC_CMD_PLUGIN_GET_META_GLOBAL_OUT_PRIVILEGE_BIT_OFST 33
28555 #define	MC_CMD_PLUGIN_GET_META_GLOBAL_OUT_PRIVILEGE_BIT_LEN 1
28556 /* Reserved */
28557 #define	MC_CMD_PLUGIN_GET_META_GLOBAL_OUT_RESERVED_OFST 34
28558 #define	MC_CMD_PLUGIN_GET_META_GLOBAL_OUT_RESERVED_LEN 2
28559 
28560 
28561 /***********************************/
28562 /* MC_CMD_PLUGIN_GET_META_PUBLISHER
28563  * Returns metadata supplied by the plugin author which describes this
28564  * extension in a human-readable way. Contrast with
28565  * MC_CMD_PLUGIN_GET_META_GLOBAL, which returns information needed for software
28566  * to operate.
28567  */
28568 #define	MC_CMD_PLUGIN_GET_META_PUBLISHER 0x1b0
28569 #define	MC_CMD_PLUGIN_GET_META_PUBLISHER_MSGSET 0x1b0
28570 #undef	MC_CMD_0x1b0_PRIVILEGE_CTG
28571 
28572 #define	MC_CMD_0x1b0_PRIVILEGE_CTG SRIOV_CTG_GENERAL
28573 
28574 /* MC_CMD_PLUGIN_GET_META_PUBLISHER_IN msgrequest */
28575 #define	MC_CMD_PLUGIN_GET_META_PUBLISHER_IN_LEN 12
28576 /* Handle returned by MC_CMD_PLUGIN_ALLOC_OUT */
28577 #define	MC_CMD_PLUGIN_GET_META_PUBLISHER_IN_HANDLE_OFST 0
28578 #define	MC_CMD_PLUGIN_GET_META_PUBLISHER_IN_HANDLE_LEN 4
28579 /* Category of data to return */
28580 #define	MC_CMD_PLUGIN_GET_META_PUBLISHER_IN_SUBTYPE_OFST 4
28581 #define	MC_CMD_PLUGIN_GET_META_PUBLISHER_IN_SUBTYPE_LEN 4
28582 /* enum: Top-level information about the extension. The returned data is an
28583  * array of key/value pairs using the keys in RFC5013 (Dublin Core) to describe
28584  * the extension. The data is a back-to-back list of zero-terminated strings;
28585  * the even-numbered fields (0,2,4,...) are keys and their following odd-
28586  * numbered fields are the corresponding values. Both keys and values are
28587  * nominally UTF-8. Per RFC5013, the same key may be repeated any number of
28588  * times. Note that all information (including the key/value structure itself
28589  * and the UTF-8 encoding) may have been provided by the plugin author, so
28590  * callers must be cautious about parsing it. Callers should parse only the
28591  * top-level structure to separate out the keys and values; the contents of the
28592  * values is not expected to be machine-readable.
28593  */
28594 #define	MC_CMD_PLUGIN_GET_META_PUBLISHER_IN_EXTENSION_KVS 0x0
28595 /* Byte position of the data to be returned within the full data block of the
28596  * given SUBTYPE.
28597  */
28598 #define	MC_CMD_PLUGIN_GET_META_PUBLISHER_IN_OFFSET_OFST 8
28599 #define	MC_CMD_PLUGIN_GET_META_PUBLISHER_IN_OFFSET_LEN 4
28600 
28601 /* MC_CMD_PLUGIN_GET_META_PUBLISHER_OUT msgresponse */
28602 #define	MC_CMD_PLUGIN_GET_META_PUBLISHER_OUT_LENMIN 4
28603 #define	MC_CMD_PLUGIN_GET_META_PUBLISHER_OUT_LENMAX 252
28604 #define	MC_CMD_PLUGIN_GET_META_PUBLISHER_OUT_LENMAX_MCDI2 1020
28605 #define	MC_CMD_PLUGIN_GET_META_PUBLISHER_OUT_LEN(num) (4+1*(num))
28606 #define	MC_CMD_PLUGIN_GET_META_PUBLISHER_OUT_DATA_NUM(len) (((len)-4)/1)
28607 /* Full length of the data block of the requested SUBTYPE, in bytes. */
28608 #define	MC_CMD_PLUGIN_GET_META_PUBLISHER_OUT_TOTAL_SIZE_OFST 0
28609 #define	MC_CMD_PLUGIN_GET_META_PUBLISHER_OUT_TOTAL_SIZE_LEN 4
28610 /* The information requested by SUBTYPE. */
28611 #define	MC_CMD_PLUGIN_GET_META_PUBLISHER_OUT_DATA_OFST 4
28612 #define	MC_CMD_PLUGIN_GET_META_PUBLISHER_OUT_DATA_LEN 1
28613 #define	MC_CMD_PLUGIN_GET_META_PUBLISHER_OUT_DATA_MINNUM 0
28614 #define	MC_CMD_PLUGIN_GET_META_PUBLISHER_OUT_DATA_MAXNUM 248
28615 #define	MC_CMD_PLUGIN_GET_META_PUBLISHER_OUT_DATA_MAXNUM_MCDI2 1016
28616 
28617 
28618 /***********************************/
28619 /* MC_CMD_PLUGIN_GET_META_MSG
28620  * Returns the simple metadata for a specific plugin request message. This
28621  * supplies information necessary for the host to know how to build an
28622  * MC_CMD_PLUGIN_REQ request.
28623  */
28624 #define	MC_CMD_PLUGIN_GET_META_MSG 0x1b1
28625 #define	MC_CMD_PLUGIN_GET_META_MSG_MSGSET 0x1b1
28626 #undef	MC_CMD_0x1b1_PRIVILEGE_CTG
28627 
28628 #define	MC_CMD_0x1b1_PRIVILEGE_CTG SRIOV_CTG_GENERAL
28629 
28630 /* MC_CMD_PLUGIN_GET_META_MSG_IN msgrequest */
28631 #define	MC_CMD_PLUGIN_GET_META_MSG_IN_LEN 8
28632 /* Handle returned by MC_CMD_PLUGIN_ALLOC_OUT */
28633 #define	MC_CMD_PLUGIN_GET_META_MSG_IN_HANDLE_OFST 0
28634 #define	MC_CMD_PLUGIN_GET_META_MSG_IN_HANDLE_LEN 4
28635 /* Unique message ID to obtain */
28636 #define	MC_CMD_PLUGIN_GET_META_MSG_IN_ID_OFST 4
28637 #define	MC_CMD_PLUGIN_GET_META_MSG_IN_ID_LEN 4
28638 
28639 /* MC_CMD_PLUGIN_GET_META_MSG_OUT msgresponse */
28640 #define	MC_CMD_PLUGIN_GET_META_MSG_OUT_LEN 44
28641 /* Unique message ID. This is the same value as the input parameter; it exists
28642  * to allow future MCDI extensions which enumerate all messages.
28643  */
28644 #define	MC_CMD_PLUGIN_GET_META_MSG_OUT_ID_OFST 0
28645 #define	MC_CMD_PLUGIN_GET_META_MSG_OUT_ID_LEN 4
28646 /* Packed index number of this message, assigned by the MC to give each message
28647  * a unique ID in an array to allow for more efficient storage/management.
28648  */
28649 #define	MC_CMD_PLUGIN_GET_META_MSG_OUT_INDEX_OFST 4
28650 #define	MC_CMD_PLUGIN_GET_META_MSG_OUT_INDEX_LEN 4
28651 /* Short human-readable codename for this message. This is conventionally
28652  * formatted as a C identifier in the basic ASCII character set with any spare
28653  * bytes at the end set to 0, however this convention is not enforced by the MC
28654  * so consumers must check for all potential malformations before using it for
28655  * a trusted purpose.
28656  */
28657 #define	MC_CMD_PLUGIN_GET_META_MSG_OUT_NAME_OFST 8
28658 #define	MC_CMD_PLUGIN_GET_META_MSG_OUT_NAME_LEN 32
28659 /* Number of bytes of data which must be passed from the host kernel to the MC
28660  * for this message's payload, and which are passed back again in the response.
28661  * The MC's plugin metadata loader will have validated that the number of bytes
28662  * specified here will fit in to MC_CMD_PLUGIN_REQ_IN_DATA in a single MCDI
28663  * message.
28664  */
28665 #define	MC_CMD_PLUGIN_GET_META_MSG_OUT_DATA_SIZE_OFST 40
28666 #define	MC_CMD_PLUGIN_GET_META_MSG_OUT_DATA_SIZE_LEN 4
28667 
28668 /* PLUGIN_EXTENSION structuredef: Used within MC_CMD_PLUGIN_GET_ALL to describe
28669  * an individual extension.
28670  */
28671 #define	PLUGIN_EXTENSION_LEN 20
28672 #define	PLUGIN_EXTENSION_UUID_OFST 0
28673 #define	PLUGIN_EXTENSION_UUID_LEN 16
28674 #define	PLUGIN_EXTENSION_UUID_LBN 0
28675 #define	PLUGIN_EXTENSION_UUID_WIDTH 128
28676 #define	PLUGIN_EXTENSION_ADMIN_GROUP_OFST 16
28677 #define	PLUGIN_EXTENSION_ADMIN_GROUP_LEN 1
28678 #define	PLUGIN_EXTENSION_ADMIN_GROUP_LBN 128
28679 #define	PLUGIN_EXTENSION_ADMIN_GROUP_WIDTH 8
28680 #define	PLUGIN_EXTENSION_FLAG_ENABLED_LBN 136
28681 #define	PLUGIN_EXTENSION_FLAG_ENABLED_WIDTH 1
28682 #define	PLUGIN_EXTENSION_RESERVED_LBN 137
28683 #define	PLUGIN_EXTENSION_RESERVED_WIDTH 23
28684 
28685 
28686 /***********************************/
28687 /* MC_CMD_PLUGIN_GET_ALL
28688  * Returns a list of all plugin extensions currently loaded and available. The
28689  * UUIDs returned can be passed to MC_CMD_PLUGIN_ALLOC in order to obtain more
28690  * detailed metadata via the MC_CMD_PLUGIN_GET_META_* family of requests. The
28691  * ADMIN_GROUP field collects how extensions are grouped in to units which are
28692  * loaded/unloaded together; extensions with the same value are in the same
28693  * group.
28694  */
28695 #define	MC_CMD_PLUGIN_GET_ALL 0x1b2
28696 #define	MC_CMD_PLUGIN_GET_ALL_MSGSET 0x1b2
28697 #undef	MC_CMD_0x1b2_PRIVILEGE_CTG
28698 
28699 #define	MC_CMD_0x1b2_PRIVILEGE_CTG SRIOV_CTG_GENERAL
28700 
28701 /* MC_CMD_PLUGIN_GET_ALL_IN msgrequest */
28702 #define	MC_CMD_PLUGIN_GET_ALL_IN_LEN 4
28703 /* Additional options for querying. Note that if neither FLAG_INCLUDE_ENABLED
28704  * nor FLAG_INCLUDE_DISABLED are specified then the result set will be empty.
28705  */
28706 #define	MC_CMD_PLUGIN_GET_ALL_IN_FLAGS_OFST 0
28707 #define	MC_CMD_PLUGIN_GET_ALL_IN_FLAGS_LEN 4
28708 #define	MC_CMD_PLUGIN_GET_ALL_IN_FLAG_INCLUDE_ENABLED_OFST 0
28709 #define	MC_CMD_PLUGIN_GET_ALL_IN_FLAG_INCLUDE_ENABLED_LBN 0
28710 #define	MC_CMD_PLUGIN_GET_ALL_IN_FLAG_INCLUDE_ENABLED_WIDTH 1
28711 #define	MC_CMD_PLUGIN_GET_ALL_IN_FLAG_INCLUDE_DISABLED_OFST 0
28712 #define	MC_CMD_PLUGIN_GET_ALL_IN_FLAG_INCLUDE_DISABLED_LBN 1
28713 #define	MC_CMD_PLUGIN_GET_ALL_IN_FLAG_INCLUDE_DISABLED_WIDTH 1
28714 
28715 /* MC_CMD_PLUGIN_GET_ALL_OUT msgresponse */
28716 #define	MC_CMD_PLUGIN_GET_ALL_OUT_LENMIN 0
28717 #define	MC_CMD_PLUGIN_GET_ALL_OUT_LENMAX 240
28718 #define	MC_CMD_PLUGIN_GET_ALL_OUT_LENMAX_MCDI2 1020
28719 #define	MC_CMD_PLUGIN_GET_ALL_OUT_LEN(num) (0+20*(num))
28720 #define	MC_CMD_PLUGIN_GET_ALL_OUT_EXTENSIONS_NUM(len) (((len)-0)/20)
28721 /* The list of available plugin extensions, as an array of PLUGIN_EXTENSION
28722  * structs.
28723  */
28724 #define	MC_CMD_PLUGIN_GET_ALL_OUT_EXTENSIONS_OFST 0
28725 #define	MC_CMD_PLUGIN_GET_ALL_OUT_EXTENSIONS_LEN 20
28726 #define	MC_CMD_PLUGIN_GET_ALL_OUT_EXTENSIONS_MINNUM 0
28727 #define	MC_CMD_PLUGIN_GET_ALL_OUT_EXTENSIONS_MAXNUM 12
28728 #define	MC_CMD_PLUGIN_GET_ALL_OUT_EXTENSIONS_MAXNUM_MCDI2 51
28729 
28730 
28731 /***********************************/
28732 /* MC_CMD_PLUGIN_REQ
28733  * Send a command to a plugin. A plugin may define an arbitrary number of
28734  * 'messages' which it allows applications on the host system to send, each
28735  * identified by a 32-bit ID.
28736  */
28737 #define	MC_CMD_PLUGIN_REQ 0x1b3
28738 #define	MC_CMD_PLUGIN_REQ_MSGSET 0x1b3
28739 #undef	MC_CMD_0x1b3_PRIVILEGE_CTG
28740 
28741 #define	MC_CMD_0x1b3_PRIVILEGE_CTG SRIOV_CTG_GENERAL
28742 
28743 /* MC_CMD_PLUGIN_REQ_IN msgrequest */
28744 #define	MC_CMD_PLUGIN_REQ_IN_LENMIN 8
28745 #define	MC_CMD_PLUGIN_REQ_IN_LENMAX 252
28746 #define	MC_CMD_PLUGIN_REQ_IN_LENMAX_MCDI2 1020
28747 #define	MC_CMD_PLUGIN_REQ_IN_LEN(num) (8+1*(num))
28748 #define	MC_CMD_PLUGIN_REQ_IN_DATA_NUM(len) (((len)-8)/1)
28749 /* Handle returned by MC_CMD_PLUGIN_ALLOC_OUT */
28750 #define	MC_CMD_PLUGIN_REQ_IN_HANDLE_OFST 0
28751 #define	MC_CMD_PLUGIN_REQ_IN_HANDLE_LEN 4
28752 /* Message ID defined by the plugin author */
28753 #define	MC_CMD_PLUGIN_REQ_IN_ID_OFST 4
28754 #define	MC_CMD_PLUGIN_REQ_IN_ID_LEN 4
28755 /* Data blob being the parameter to the message. This must be of the length
28756  * specified by MC_CMD_PLUGIN_GET_META_MSG_IN_MCDI_PARAM_SIZE.
28757  */
28758 #define	MC_CMD_PLUGIN_REQ_IN_DATA_OFST 8
28759 #define	MC_CMD_PLUGIN_REQ_IN_DATA_LEN 1
28760 #define	MC_CMD_PLUGIN_REQ_IN_DATA_MINNUM 0
28761 #define	MC_CMD_PLUGIN_REQ_IN_DATA_MAXNUM 244
28762 #define	MC_CMD_PLUGIN_REQ_IN_DATA_MAXNUM_MCDI2 1012
28763 
28764 /* MC_CMD_PLUGIN_REQ_OUT msgresponse */
28765 #define	MC_CMD_PLUGIN_REQ_OUT_LENMIN 0
28766 #define	MC_CMD_PLUGIN_REQ_OUT_LENMAX 252
28767 #define	MC_CMD_PLUGIN_REQ_OUT_LENMAX_MCDI2 1020
28768 #define	MC_CMD_PLUGIN_REQ_OUT_LEN(num) (0+1*(num))
28769 #define	MC_CMD_PLUGIN_REQ_OUT_DATA_NUM(len) (((len)-0)/1)
28770 /* The input data, as transformed and/or updated by the plugin's eBPF. Will be
28771  * the same size as the input DATA parameter.
28772  */
28773 #define	MC_CMD_PLUGIN_REQ_OUT_DATA_OFST 0
28774 #define	MC_CMD_PLUGIN_REQ_OUT_DATA_LEN 1
28775 #define	MC_CMD_PLUGIN_REQ_OUT_DATA_MINNUM 0
28776 #define	MC_CMD_PLUGIN_REQ_OUT_DATA_MAXNUM 252
28777 #define	MC_CMD_PLUGIN_REQ_OUT_DATA_MAXNUM_MCDI2 1020
28778 
28779 /* DESC_ADDR_REGION structuredef: Describes a contiguous region of DESC_ADDR
28780  * space that maps to a contiguous region of TRGT_ADDR space. Addresses
28781  * DESC_ADDR in the range [DESC_ADDR_BASE:DESC_ADDR_BASE + 1 <<
28782  * WINDOW_SIZE_LOG2) map to TRGT_ADDR = DESC_ADDR - DESC_ADDR_BASE +
28783  * TRGT_ADDR_BASE.
28784  */
28785 #define	DESC_ADDR_REGION_LEN 32
28786 /* The start of the region in DESC_ADDR space. */
28787 #define	DESC_ADDR_REGION_DESC_ADDR_BASE_OFST 0
28788 #define	DESC_ADDR_REGION_DESC_ADDR_BASE_LEN 8
28789 #define	DESC_ADDR_REGION_DESC_ADDR_BASE_LO_OFST 0
28790 #define	DESC_ADDR_REGION_DESC_ADDR_BASE_LO_LEN 4
28791 #define	DESC_ADDR_REGION_DESC_ADDR_BASE_LO_LBN 0
28792 #define	DESC_ADDR_REGION_DESC_ADDR_BASE_LO_WIDTH 32
28793 #define	DESC_ADDR_REGION_DESC_ADDR_BASE_HI_OFST 4
28794 #define	DESC_ADDR_REGION_DESC_ADDR_BASE_HI_LEN 4
28795 #define	DESC_ADDR_REGION_DESC_ADDR_BASE_HI_LBN 32
28796 #define	DESC_ADDR_REGION_DESC_ADDR_BASE_HI_WIDTH 32
28797 #define	DESC_ADDR_REGION_DESC_ADDR_BASE_LBN 0
28798 #define	DESC_ADDR_REGION_DESC_ADDR_BASE_WIDTH 64
28799 /* The start of the region in TRGT_ADDR space. Drivers can set this via
28800  * MC_CMD_SET_DESC_ADDR_REGIONS.
28801  */
28802 #define	DESC_ADDR_REGION_TRGT_ADDR_BASE_OFST 8
28803 #define	DESC_ADDR_REGION_TRGT_ADDR_BASE_LEN 8
28804 #define	DESC_ADDR_REGION_TRGT_ADDR_BASE_LO_OFST 8
28805 #define	DESC_ADDR_REGION_TRGT_ADDR_BASE_LO_LEN 4
28806 #define	DESC_ADDR_REGION_TRGT_ADDR_BASE_LO_LBN 64
28807 #define	DESC_ADDR_REGION_TRGT_ADDR_BASE_LO_WIDTH 32
28808 #define	DESC_ADDR_REGION_TRGT_ADDR_BASE_HI_OFST 12
28809 #define	DESC_ADDR_REGION_TRGT_ADDR_BASE_HI_LEN 4
28810 #define	DESC_ADDR_REGION_TRGT_ADDR_BASE_HI_LBN 96
28811 #define	DESC_ADDR_REGION_TRGT_ADDR_BASE_HI_WIDTH 32
28812 #define	DESC_ADDR_REGION_TRGT_ADDR_BASE_LBN 64
28813 #define	DESC_ADDR_REGION_TRGT_ADDR_BASE_WIDTH 64
28814 /* The size of the region. */
28815 #define	DESC_ADDR_REGION_WINDOW_SIZE_LOG2_OFST 16
28816 #define	DESC_ADDR_REGION_WINDOW_SIZE_LOG2_LEN 4
28817 #define	DESC_ADDR_REGION_WINDOW_SIZE_LOG2_LBN 128
28818 #define	DESC_ADDR_REGION_WINDOW_SIZE_LOG2_WIDTH 32
28819 /* The alignment restriction on TRGT_ADDR. TRGT_ADDR values set by the driver
28820  * must be a multiple of 1 << TRGT_ADDR_ALIGN_LOG2.
28821  */
28822 #define	DESC_ADDR_REGION_TRGT_ADDR_ALIGN_LOG2_OFST 20
28823 #define	DESC_ADDR_REGION_TRGT_ADDR_ALIGN_LOG2_LEN 4
28824 #define	DESC_ADDR_REGION_TRGT_ADDR_ALIGN_LOG2_LBN 160
28825 #define	DESC_ADDR_REGION_TRGT_ADDR_ALIGN_LOG2_WIDTH 32
28826 #define	DESC_ADDR_REGION_RSVD_OFST 24
28827 #define	DESC_ADDR_REGION_RSVD_LEN 8
28828 #define	DESC_ADDR_REGION_RSVD_LO_OFST 24
28829 #define	DESC_ADDR_REGION_RSVD_LO_LEN 4
28830 #define	DESC_ADDR_REGION_RSVD_LO_LBN 192
28831 #define	DESC_ADDR_REGION_RSVD_LO_WIDTH 32
28832 #define	DESC_ADDR_REGION_RSVD_HI_OFST 28
28833 #define	DESC_ADDR_REGION_RSVD_HI_LEN 4
28834 #define	DESC_ADDR_REGION_RSVD_HI_LBN 224
28835 #define	DESC_ADDR_REGION_RSVD_HI_WIDTH 32
28836 #define	DESC_ADDR_REGION_RSVD_LBN 192
28837 #define	DESC_ADDR_REGION_RSVD_WIDTH 64
28838 
28839 
28840 /***********************************/
28841 /* MC_CMD_GET_DESC_ADDR_INFO
28842  * Returns a description of the mapping from DESC_ADDR to TRGT_ADDR for the calling function's address space.
28843  */
28844 #define	MC_CMD_GET_DESC_ADDR_INFO 0x1b7
28845 #define	MC_CMD_GET_DESC_ADDR_INFO_MSGSET 0x1b7
28846 #undef	MC_CMD_0x1b7_PRIVILEGE_CTG
28847 
28848 #define	MC_CMD_0x1b7_PRIVILEGE_CTG SRIOV_CTG_GENERAL
28849 
28850 /* MC_CMD_GET_DESC_ADDR_INFO_IN msgrequest */
28851 #define	MC_CMD_GET_DESC_ADDR_INFO_IN_LEN 0
28852 
28853 /* MC_CMD_GET_DESC_ADDR_INFO_OUT msgresponse */
28854 #define	MC_CMD_GET_DESC_ADDR_INFO_OUT_LEN 4
28855 /* The type of mapping; see SF-nnnnnn-xx (EF100 driver writer's guide, once
28856  * written) for details of each type.
28857  */
28858 #define	MC_CMD_GET_DESC_ADDR_INFO_OUT_MAPPING_TYPE_OFST 0
28859 #define	MC_CMD_GET_DESC_ADDR_INFO_OUT_MAPPING_TYPE_LEN 4
28860 /* enum: TRGT_ADDR = DESC_ADDR */
28861 #define	MC_CMD_GET_DESC_ADDR_INFO_OUT_MAPPING_FLAT 0x0
28862 /* enum: DESC_ADDR has one or more regions that map into TRGT_ADDR. The base
28863  * TRGT_ADDR for each region is programmable via MCDI.
28864  */
28865 #define	MC_CMD_GET_DESC_ADDR_INFO_OUT_MAPPING_REGIONED 0x1
28866 
28867 
28868 /***********************************/
28869 /* MC_CMD_GET_DESC_ADDR_REGIONS
28870  * Returns a list of the DESC_ADDR regions for the calling function's address space.  Only valid if that function's address space has the REGIONED mapping from DESC_ADDR to TRGT_ADDR.
28871  */
28872 #define	MC_CMD_GET_DESC_ADDR_REGIONS 0x1b8
28873 #define	MC_CMD_GET_DESC_ADDR_REGIONS_MSGSET 0x1b8
28874 #undef	MC_CMD_0x1b8_PRIVILEGE_CTG
28875 
28876 #define	MC_CMD_0x1b8_PRIVILEGE_CTG SRIOV_CTG_GENERAL
28877 
28878 /* MC_CMD_GET_DESC_ADDR_REGIONS_IN msgrequest */
28879 #define	MC_CMD_GET_DESC_ADDR_REGIONS_IN_LEN 0
28880 
28881 /* MC_CMD_GET_DESC_ADDR_REGIONS_OUT msgresponse */
28882 #define	MC_CMD_GET_DESC_ADDR_REGIONS_OUT_LENMIN 32
28883 #define	MC_CMD_GET_DESC_ADDR_REGIONS_OUT_LENMAX 224
28884 #define	MC_CMD_GET_DESC_ADDR_REGIONS_OUT_LENMAX_MCDI2 992
28885 #define	MC_CMD_GET_DESC_ADDR_REGIONS_OUT_LEN(num) (0+32*(num))
28886 #define	MC_CMD_GET_DESC_ADDR_REGIONS_OUT_REGIONS_NUM(len) (((len)-0)/32)
28887 /* An array of DESC_ADDR_REGION strutures. The number of entries in the array
28888  * indicates the number of available regions.
28889  */
28890 #define	MC_CMD_GET_DESC_ADDR_REGIONS_OUT_REGIONS_OFST 0
28891 #define	MC_CMD_GET_DESC_ADDR_REGIONS_OUT_REGIONS_LEN 32
28892 #define	MC_CMD_GET_DESC_ADDR_REGIONS_OUT_REGIONS_MINNUM 1
28893 #define	MC_CMD_GET_DESC_ADDR_REGIONS_OUT_REGIONS_MAXNUM 7
28894 #define	MC_CMD_GET_DESC_ADDR_REGIONS_OUT_REGIONS_MAXNUM_MCDI2 31
28895 
28896 
28897 /***********************************/
28898 /* MC_CMD_SET_DESC_ADDR_REGIONS
28899  * Set the base TRGT_ADDR for a set of DESC_ADDR regions for the calling function's address space.  Only valid if that function's address space had the REGIONED mapping from DESC_ADDR to TRGT_ADDR.
28900  */
28901 #define	MC_CMD_SET_DESC_ADDR_REGIONS 0x1b9
28902 #define	MC_CMD_SET_DESC_ADDR_REGIONS_MSGSET 0x1b9
28903 #undef	MC_CMD_0x1b9_PRIVILEGE_CTG
28904 
28905 #define	MC_CMD_0x1b9_PRIVILEGE_CTG SRIOV_CTG_GENERAL
28906 
28907 /* MC_CMD_SET_DESC_ADDR_REGIONS_IN msgrequest */
28908 #define	MC_CMD_SET_DESC_ADDR_REGIONS_IN_LENMIN 16
28909 #define	MC_CMD_SET_DESC_ADDR_REGIONS_IN_LENMAX 248
28910 #define	MC_CMD_SET_DESC_ADDR_REGIONS_IN_LENMAX_MCDI2 1016
28911 #define	MC_CMD_SET_DESC_ADDR_REGIONS_IN_LEN(num) (8+8*(num))
28912 #define	MC_CMD_SET_DESC_ADDR_REGIONS_IN_TRGT_ADDR_BASE_NUM(len) (((len)-8)/8)
28913 /* A bitmask indicating which regions should have their base TRGT_ADDR updated.
28914  * To update the base TRGR_ADDR for a DESC_ADDR region, the corresponding bit
28915  * should be set to 1.
28916  */
28917 #define	MC_CMD_SET_DESC_ADDR_REGIONS_IN_SET_REGION_MASK_OFST 0
28918 #define	MC_CMD_SET_DESC_ADDR_REGIONS_IN_SET_REGION_MASK_LEN 4
28919 /* Reserved field; must be set to zero. */
28920 #define	MC_CMD_SET_DESC_ADDR_REGIONS_IN_RSVD_OFST 4
28921 #define	MC_CMD_SET_DESC_ADDR_REGIONS_IN_RSVD_LEN 4
28922 /* An array of values used to updated the base TRGT_ADDR for DESC_ADDR regions.
28923  * Array indices corresponding to region numbers (i.e. the array is sparse, and
28924  * included entries for regions even if the corresponding SET_REGION_MASK bit
28925  * is zero).
28926  */
28927 #define	MC_CMD_SET_DESC_ADDR_REGIONS_IN_TRGT_ADDR_BASE_OFST 8
28928 #define	MC_CMD_SET_DESC_ADDR_REGIONS_IN_TRGT_ADDR_BASE_LEN 8
28929 #define	MC_CMD_SET_DESC_ADDR_REGIONS_IN_TRGT_ADDR_BASE_LO_OFST 8
28930 #define	MC_CMD_SET_DESC_ADDR_REGIONS_IN_TRGT_ADDR_BASE_LO_LEN 4
28931 #define	MC_CMD_SET_DESC_ADDR_REGIONS_IN_TRGT_ADDR_BASE_LO_LBN 64
28932 #define	MC_CMD_SET_DESC_ADDR_REGIONS_IN_TRGT_ADDR_BASE_LO_WIDTH 32
28933 #define	MC_CMD_SET_DESC_ADDR_REGIONS_IN_TRGT_ADDR_BASE_HI_OFST 12
28934 #define	MC_CMD_SET_DESC_ADDR_REGIONS_IN_TRGT_ADDR_BASE_HI_LEN 4
28935 #define	MC_CMD_SET_DESC_ADDR_REGIONS_IN_TRGT_ADDR_BASE_HI_LBN 96
28936 #define	MC_CMD_SET_DESC_ADDR_REGIONS_IN_TRGT_ADDR_BASE_HI_WIDTH 32
28937 #define	MC_CMD_SET_DESC_ADDR_REGIONS_IN_TRGT_ADDR_BASE_MINNUM 1
28938 #define	MC_CMD_SET_DESC_ADDR_REGIONS_IN_TRGT_ADDR_BASE_MAXNUM 30
28939 #define	MC_CMD_SET_DESC_ADDR_REGIONS_IN_TRGT_ADDR_BASE_MAXNUM_MCDI2 126
28940 
28941 /* MC_CMD_SET_DESC_ADDR_REGIONS_OUT msgresponse */
28942 #define	MC_CMD_SET_DESC_ADDR_REGIONS_OUT_LEN 0
28943 
28944 
28945 /***********************************/
28946 /* MC_CMD_CLIENT_CMD
28947  * Execute an arbitrary MCDI command on behalf of a different client. The
28948  * consequences of the command (e.g. ownership of any resources created) apply
28949  * to the indicated client rather than the function client which actually sent
28950  * this command. All inherent permission checks are also performed on the
28951  * indicated client. The given client must be a descendant of the requestor.
28952  * The command to be proxied follows immediately afterward in the host buffer
28953  * (or on the UART). Chaining multiple MC_CMD_CLIENT_CMD is unnecessary and not
28954  * supported. New dynamic clients may be created with MC_CMD_CLIENT_ALLOC.
28955  */
28956 #define	MC_CMD_CLIENT_CMD 0x1ba
28957 #define	MC_CMD_CLIENT_CMD_MSGSET 0x1ba
28958 #undef	MC_CMD_0x1ba_PRIVILEGE_CTG
28959 
28960 #define	MC_CMD_0x1ba_PRIVILEGE_CTG SRIOV_CTG_GENERAL
28961 
28962 /* MC_CMD_CLIENT_CMD_IN msgrequest */
28963 #define	MC_CMD_CLIENT_CMD_IN_LEN 4
28964 /* The client as which to execute the following command. */
28965 #define	MC_CMD_CLIENT_CMD_IN_CLIENT_ID_OFST 0
28966 #define	MC_CMD_CLIENT_CMD_IN_CLIENT_ID_LEN 4
28967 
28968 /* MC_CMD_CLIENT_CMD_OUT msgresponse */
28969 #define	MC_CMD_CLIENT_CMD_OUT_LEN 0
28970 
28971 
28972 /***********************************/
28973 /* MC_CMD_CLIENT_ALLOC
28974  * Create a new client object. Clients are a system for delineating NIC
28975  * resource ownership, such that groups of resources may be torn down as a
28976  * unit. See also MC_CMD_CLIENT_CMD. See XN-200265-TC for background, concepts
28977  * and a glossary. Clients created by this command are known as "dynamic
28978  * clients". The newly-created client is a child of the client which sent this
28979  * command. The caller must have the GRP_ALLOC_CLIENT privilege. The new client
28980  * initially has no permission to do anything; see
28981  * MC_CMD_DEVEL_CLIENT_PRIVILEGE_MODIFY.
28982  */
28983 #define	MC_CMD_CLIENT_ALLOC 0x1bb
28984 #define	MC_CMD_CLIENT_ALLOC_MSGSET 0x1bb
28985 #undef	MC_CMD_0x1bb_PRIVILEGE_CTG
28986 
28987 #define	MC_CMD_0x1bb_PRIVILEGE_CTG SRIOV_CTG_ALLOC_CLIENT
28988 
28989 /* MC_CMD_CLIENT_ALLOC_IN msgrequest */
28990 #define	MC_CMD_CLIENT_ALLOC_IN_LEN 0
28991 
28992 /* MC_CMD_CLIENT_ALLOC_OUT msgresponse */
28993 #define	MC_CMD_CLIENT_ALLOC_OUT_LEN 4
28994 /* The ID of the new client object which has been created. */
28995 #define	MC_CMD_CLIENT_ALLOC_OUT_CLIENT_ID_OFST 0
28996 #define	MC_CMD_CLIENT_ALLOC_OUT_CLIENT_ID_LEN 4
28997 
28998 
28999 /***********************************/
29000 /* MC_CMD_CLIENT_FREE
29001  * Destroy and release an existing client object. All resources owned by that
29002  * client (including its child clients, and thus all resources owned by the
29003  * entire family tree) are freed.
29004  */
29005 #define	MC_CMD_CLIENT_FREE 0x1bc
29006 #define	MC_CMD_CLIENT_FREE_MSGSET 0x1bc
29007 #undef	MC_CMD_0x1bc_PRIVILEGE_CTG
29008 
29009 #define	MC_CMD_0x1bc_PRIVILEGE_CTG SRIOV_CTG_GENERAL
29010 
29011 /* MC_CMD_CLIENT_FREE_IN msgrequest */
29012 #define	MC_CMD_CLIENT_FREE_IN_LEN 4
29013 /* The ID of the client to be freed. This client must be a descendant of the
29014  * requestor. A client cannot free itself.
29015  */
29016 #define	MC_CMD_CLIENT_FREE_IN_CLIENT_ID_OFST 0
29017 #define	MC_CMD_CLIENT_FREE_IN_CLIENT_ID_LEN 4
29018 
29019 /* MC_CMD_CLIENT_FREE_OUT msgresponse */
29020 #define	MC_CMD_CLIENT_FREE_OUT_LEN 0
29021 
29022 
29023 /***********************************/
29024 /* MC_CMD_SET_VI_USER
29025  * Assign partial rights over this VI to another client. VIs have an 'owner'
29026  * and a 'user'. The owner is the client which allocated the VI
29027  * (MC_CMD_ALLOC_VIS) and cannot be changed. The user is the client which has
29028  * permission to create queues and other resources on that VI. Initially
29029  * user==owner, but the user can be changed by this command; the resources thus
29030  * created are then owned by the user-client. Only the VI owner can call this
29031  * command, and the request will fail if there are any outstanding child
29032  * resources (e.g. queues) currently allocated from this VI.
29033  */
29034 #define	MC_CMD_SET_VI_USER 0x1be
29035 #define	MC_CMD_SET_VI_USER_MSGSET 0x1be
29036 #undef	MC_CMD_0x1be_PRIVILEGE_CTG
29037 
29038 #define	MC_CMD_0x1be_PRIVILEGE_CTG SRIOV_CTG_GENERAL
29039 
29040 /* MC_CMD_SET_VI_USER_IN msgrequest */
29041 #define	MC_CMD_SET_VI_USER_IN_LEN 8
29042 /* Function-relative VI number to modify. */
29043 #define	MC_CMD_SET_VI_USER_IN_INSTANCE_OFST 0
29044 #define	MC_CMD_SET_VI_USER_IN_INSTANCE_LEN 4
29045 /* Client ID to become the new user. This must be a descendant of the owning
29046  * client, the owning client itself, or the special value MC_CMD_CLIENT_ID_SELF
29047  * which is synonymous with the owning client.
29048  */
29049 #define	MC_CMD_SET_VI_USER_IN_CLIENT_ID_OFST 4
29050 #define	MC_CMD_SET_VI_USER_IN_CLIENT_ID_LEN 4
29051 
29052 /* MC_CMD_SET_VI_USER_OUT msgresponse */
29053 #define	MC_CMD_SET_VI_USER_OUT_LEN 0
29054 
29055 
29056 /***********************************/
29057 /* MC_CMD_GET_CLIENT_MAC_ADDRESSES
29058  * A device reports a set of MAC addresses for each client to use, known as the
29059  * "permanent MAC addresses". Those MAC addresses are provided by the client's
29060  * administrator, e.g. via MC_CMD_SET_CLIENT_MAC_ADDRESSES, and are intended as
29061  * a hint to that client which MAC address its administrator would like to use
29062  * to identity itself. This API exists solely to allow communication of MAC
29063  * address from administrator to adminstree, and has no inherent interaction
29064  * with switching within the device. There is no guarantee that a client will
29065  * be able to send traffic with a source MAC address taken from the list of MAC
29066  * address reported, nor is there a guarantee that a client will be able to
29067  * resource traffic with a destination MAC taken from the list of MAC
29068  * addresses. Likewise, there is no guarantee that a client will not be able to
29069  * use a MAC address not present in the list. Restrictions on switching are
29070  * controlled either through the EVB API if operating in EVB mode, or via MAE
29071  * rules if host software is directly managing the MAE. In order to allow
29072  * tenants to use this API whilst a provider is using the EVB API, the MAC
29073  * addresses reported by MC_CMD_GET_CLIENT_MAC_ADDRESSES will be augmented with
29074  * any MAC addresses associated with the vPort assigned to the caller. In order
29075  * to allow tenants to use the EVB API whilst a provider is using this API, if
29076  * a client queries the MAC addresses for a vPort using the host_evb_port_id
29077  * EVB_PORT_ASSIGNED, that list of MAC addresses will be augmented with the MAC
29078  * addresses assigned to the calling client. This query can either be explicit
29079  * (i.e. MC_CMD_VPORT_GET_MAC_ADDRESSES) or implicit (e.g. creation of a
29080  * vAdaptor with a NULL/automatic MAC address). Changing the MAC address on a
29081  * vAdaptor only affects VNIC steering filters; it has no effect on the MAC
29082  * addresses assigned to the vAdaptor's owner. VirtIO clients behave as EVB
29083  * clients. On VirtIO device reset, a vAdaptor is created with an automatic MAC
29084  * address. Querying the VirtIO device's MAC address queries the underlying
29085  * vAdaptor's MAC address. Setting the VirtIO device's MAC address sets the
29086  * underlying vAdaptor's MAC addresses.
29087  */
29088 #define	MC_CMD_GET_CLIENT_MAC_ADDRESSES 0x1c4
29089 #define	MC_CMD_GET_CLIENT_MAC_ADDRESSES_MSGSET 0x1c4
29090 #undef	MC_CMD_0x1c4_PRIVILEGE_CTG
29091 
29092 #define	MC_CMD_0x1c4_PRIVILEGE_CTG SRIOV_CTG_GENERAL
29093 
29094 /* MC_CMD_GET_CLIENT_MAC_ADDRESSES_IN msgrequest */
29095 #define	MC_CMD_GET_CLIENT_MAC_ADDRESSES_IN_LEN 4
29096 /* A handle for the client for whom MAC address should be obtained. Use
29097  * CLIENT_HANDLE_SELF to obtain the MAC addresses assigned to the calling
29098  * client.
29099  */
29100 #define	MC_CMD_GET_CLIENT_MAC_ADDRESSES_IN_CLIENT_HANDLE_OFST 0
29101 #define	MC_CMD_GET_CLIENT_MAC_ADDRESSES_IN_CLIENT_HANDLE_LEN 4
29102 
29103 /* MC_CMD_GET_CLIENT_MAC_ADDRESSES_OUT msgresponse */
29104 #define	MC_CMD_GET_CLIENT_MAC_ADDRESSES_OUT_LENMIN 0
29105 #define	MC_CMD_GET_CLIENT_MAC_ADDRESSES_OUT_LENMAX 252
29106 #define	MC_CMD_GET_CLIENT_MAC_ADDRESSES_OUT_LENMAX_MCDI2 1020
29107 #define	MC_CMD_GET_CLIENT_MAC_ADDRESSES_OUT_LEN(num) (0+6*(num))
29108 #define	MC_CMD_GET_CLIENT_MAC_ADDRESSES_OUT_MAC_ADDRS_NUM(len) (((len)-0)/6)
29109 /* An array of MAC addresses assigned to the client. */
29110 #define	MC_CMD_GET_CLIENT_MAC_ADDRESSES_OUT_MAC_ADDRS_OFST 0
29111 #define	MC_CMD_GET_CLIENT_MAC_ADDRESSES_OUT_MAC_ADDRS_LEN 6
29112 #define	MC_CMD_GET_CLIENT_MAC_ADDRESSES_OUT_MAC_ADDRS_MINNUM 0
29113 #define	MC_CMD_GET_CLIENT_MAC_ADDRESSES_OUT_MAC_ADDRS_MAXNUM 42
29114 #define	MC_CMD_GET_CLIENT_MAC_ADDRESSES_OUT_MAC_ADDRS_MAXNUM_MCDI2 170
29115 
29116 
29117 /***********************************/
29118 /* MC_CMD_SET_CLIENT_MAC_ADDRESSES
29119  * Set the permanent MAC addresses for a client. The caller must by an
29120  * administrator of the target client. See MC_CMD_GET_CLIENT_MAC_ADDRESSES for
29121  * additional detail.
29122  */
29123 #define	MC_CMD_SET_CLIENT_MAC_ADDRESSES 0x1c5
29124 #define	MC_CMD_SET_CLIENT_MAC_ADDRESSES_MSGSET 0x1c5
29125 #undef	MC_CMD_0x1c5_PRIVILEGE_CTG
29126 
29127 #define	MC_CMD_0x1c5_PRIVILEGE_CTG SRIOV_CTG_GENERAL
29128 
29129 /* MC_CMD_SET_CLIENT_MAC_ADDRESSES_IN msgrequest */
29130 #define	MC_CMD_SET_CLIENT_MAC_ADDRESSES_IN_LENMIN 4
29131 #define	MC_CMD_SET_CLIENT_MAC_ADDRESSES_IN_LENMAX 250
29132 #define	MC_CMD_SET_CLIENT_MAC_ADDRESSES_IN_LENMAX_MCDI2 1018
29133 #define	MC_CMD_SET_CLIENT_MAC_ADDRESSES_IN_LEN(num) (4+6*(num))
29134 #define	MC_CMD_SET_CLIENT_MAC_ADDRESSES_IN_MAC_ADDRS_NUM(len) (((len)-4)/6)
29135 /* A handle for the client for whom MAC addresses should be set */
29136 #define	MC_CMD_SET_CLIENT_MAC_ADDRESSES_IN_CLIENT_HANDLE_OFST 0
29137 #define	MC_CMD_SET_CLIENT_MAC_ADDRESSES_IN_CLIENT_HANDLE_LEN 4
29138 /* An array of MAC addresses to assign to the client. */
29139 #define	MC_CMD_SET_CLIENT_MAC_ADDRESSES_IN_MAC_ADDRS_OFST 4
29140 #define	MC_CMD_SET_CLIENT_MAC_ADDRESSES_IN_MAC_ADDRS_LEN 6
29141 #define	MC_CMD_SET_CLIENT_MAC_ADDRESSES_IN_MAC_ADDRS_MINNUM 0
29142 #define	MC_CMD_SET_CLIENT_MAC_ADDRESSES_IN_MAC_ADDRS_MAXNUM 41
29143 #define	MC_CMD_SET_CLIENT_MAC_ADDRESSES_IN_MAC_ADDRS_MAXNUM_MCDI2 169
29144 
29145 /* MC_CMD_SET_CLIENT_MAC_ADDRESSES_OUT msgresponse */
29146 #define	MC_CMD_SET_CLIENT_MAC_ADDRESSES_OUT_LEN 0
29147 
29148 
29149 /***********************************/
29150 /* MC_CMD_GET_BOARD_ATTR
29151  * Retrieve physical build-level board attributes as configured at
29152  * manufacturing stage. Fields originate from EEPROM and per-platform constants
29153  * in firmware. Fields are used in development to identify/ differentiate
29154  * boards based on build levels/parameters, and also in manufacturing to cross
29155  * check "what was programmed in manufacturing" is same as "what firmware
29156  * thinks has been programmed" as there are two layers to translation within
29157  * firmware before the attributes reach this MCDI handler. Some parameters are
29158  * retrieved as part of other commands and therefore not replicated here. See
29159  * GET_VERSION_OUT.
29160  */
29161 #define	MC_CMD_GET_BOARD_ATTR 0x1c6
29162 #define	MC_CMD_GET_BOARD_ATTR_MSGSET 0x1c6
29163 #undef	MC_CMD_0x1c6_PRIVILEGE_CTG
29164 
29165 #define	MC_CMD_0x1c6_PRIVILEGE_CTG SRIOV_CTG_GENERAL
29166 
29167 /* MC_CMD_GET_BOARD_ATTR_IN msgrequest */
29168 #define	MC_CMD_GET_BOARD_ATTR_IN_LEN 0
29169 
29170 /* MC_CMD_GET_BOARD_ATTR_OUT msgresponse */
29171 #define	MC_CMD_GET_BOARD_ATTR_OUT_LEN 16
29172 /* Defines board capabilities and validity of attributes returned in this
29173  * response-message.
29174  */
29175 #define	MC_CMD_GET_BOARD_ATTR_OUT_FLAGS_OFST 0
29176 #define	MC_CMD_GET_BOARD_ATTR_OUT_FLAGS_LEN 4
29177 #define	MC_CMD_GET_BOARD_ATTR_OUT_HAS_FAN_OFST 0
29178 #define	MC_CMD_GET_BOARD_ATTR_OUT_HAS_FAN_LBN 0
29179 #define	MC_CMD_GET_BOARD_ATTR_OUT_HAS_FAN_WIDTH 1
29180 #define	MC_CMD_GET_BOARD_ATTR_OUT_HAS_SOC_OFST 0
29181 #define	MC_CMD_GET_BOARD_ATTR_OUT_HAS_SOC_LBN 1
29182 #define	MC_CMD_GET_BOARD_ATTR_OUT_HAS_SOC_WIDTH 1
29183 #define	MC_CMD_GET_BOARD_ATTR_OUT_HAS_AUX_POWER_OFST 0
29184 #define	MC_CMD_GET_BOARD_ATTR_OUT_HAS_AUX_POWER_LBN 2
29185 #define	MC_CMD_GET_BOARD_ATTR_OUT_HAS_AUX_POWER_WIDTH 1
29186 #define	MC_CMD_GET_BOARD_ATTR_OUT_ATTRIBUTES_OFST 4
29187 #define	MC_CMD_GET_BOARD_ATTR_OUT_ATTRIBUTES_LEN 4
29188 #define	MC_CMD_GET_BOARD_ATTR_OUT_SOC_EE_OFST 4
29189 #define	MC_CMD_GET_BOARD_ATTR_OUT_SOC_EE_LBN 0
29190 #define	MC_CMD_GET_BOARD_ATTR_OUT_SOC_EE_WIDTH 1
29191 #define	MC_CMD_GET_BOARD_ATTR_OUT_SUC_EE_OFST 4
29192 #define	MC_CMD_GET_BOARD_ATTR_OUT_SUC_EE_LBN 1
29193 #define	MC_CMD_GET_BOARD_ATTR_OUT_SUC_EE_WIDTH 1
29194 #define	MC_CMD_GET_BOARD_ATTR_OUT_FPGA_VOLTAGES_SUPPORTED_OFST 4
29195 #define	MC_CMD_GET_BOARD_ATTR_OUT_FPGA_VOLTAGES_SUPPORTED_LBN 16
29196 #define	MC_CMD_GET_BOARD_ATTR_OUT_FPGA_VOLTAGES_SUPPORTED_WIDTH 8
29197 /* enum: The FPGA voltage on the adapter can be set to low */
29198 #define	MC_CMD_FPGA_VOLTAGE_LOW 0x0
29199 /* enum: The FPGA voltage on the adapter can be set to regular */
29200 #define	MC_CMD_FPGA_VOLTAGE_REG 0x1
29201 /* enum: The FPGA voltage on the adapter can be set to high */
29202 #define	MC_CMD_FPGA_VOLTAGE_HIGH 0x2
29203 #define	MC_CMD_GET_BOARD_ATTR_OUT_CAGE_COUNT_OFST 4
29204 #define	MC_CMD_GET_BOARD_ATTR_OUT_CAGE_COUNT_LBN 24
29205 #define	MC_CMD_GET_BOARD_ATTR_OUT_CAGE_COUNT_WIDTH 8
29206 /* An array of cage types on the board */
29207 #define	MC_CMD_GET_BOARD_ATTR_OUT_CAGE_TYPE_OFST 8
29208 #define	MC_CMD_GET_BOARD_ATTR_OUT_CAGE_TYPE_LEN 1
29209 #define	MC_CMD_GET_BOARD_ATTR_OUT_CAGE_TYPE_NUM 8
29210 /* enum: The cages are not known */
29211 #define	MC_CMD_GET_BOARD_ATTR_OUT_CAGE_TYPE_UNKNOWN 0x0
29212 /* enum: The cages are SFP/SFP+ */
29213 #define	MC_CMD_GET_BOARD_ATTR_OUT_CAGE_TYPE_SFP 0x1
29214 /* enum: The cages are QSFP/QSFP+ */
29215 #define	MC_CMD_GET_BOARD_ATTR_OUT_CAGE_TYPE_QSFP 0x2
29216 
29217 
29218 /***********************************/
29219 /* MC_CMD_GET_SOC_STATE
29220  * Retrieve current state of the System-on-Chip. This command is valid when
29221  * MC_CMD_GET_BOARD_ATTR:HAS_SOC is set.
29222  */
29223 #define	MC_CMD_GET_SOC_STATE 0x1c7
29224 #define	MC_CMD_GET_SOC_STATE_MSGSET 0x1c7
29225 #undef	MC_CMD_0x1c7_PRIVILEGE_CTG
29226 
29227 #define	MC_CMD_0x1c7_PRIVILEGE_CTG SRIOV_CTG_GENERAL
29228 
29229 /* MC_CMD_GET_SOC_STATE_IN msgrequest */
29230 #define	MC_CMD_GET_SOC_STATE_IN_LEN 0
29231 
29232 /* MC_CMD_GET_SOC_STATE_OUT msgresponse */
29233 #define	MC_CMD_GET_SOC_STATE_OUT_LEN 12
29234 /* Status flags for the SoC */
29235 #define	MC_CMD_GET_SOC_STATE_OUT_FLAGS_OFST 0
29236 #define	MC_CMD_GET_SOC_STATE_OUT_FLAGS_LEN 4
29237 #define	MC_CMD_GET_SOC_STATE_OUT_SHOULD_THROTTLE_OFST 0
29238 #define	MC_CMD_GET_SOC_STATE_OUT_SHOULD_THROTTLE_LBN 0
29239 #define	MC_CMD_GET_SOC_STATE_OUT_SHOULD_THROTTLE_WIDTH 1
29240 #define	MC_CMD_GET_SOC_STATE_OUT_OS_RECOVERY_REQUIRED_OFST 0
29241 #define	MC_CMD_GET_SOC_STATE_OUT_OS_RECOVERY_REQUIRED_LBN 1
29242 #define	MC_CMD_GET_SOC_STATE_OUT_OS_RECOVERY_REQUIRED_WIDTH 1
29243 #define	MC_CMD_GET_SOC_STATE_OUT_WDT_FIRED_OFST 0
29244 #define	MC_CMD_GET_SOC_STATE_OUT_WDT_FIRED_LBN 2
29245 #define	MC_CMD_GET_SOC_STATE_OUT_WDT_FIRED_WIDTH 1
29246 /* Status fields for the SoC */
29247 #define	MC_CMD_GET_SOC_STATE_OUT_ATTRIBUTES_OFST 4
29248 #define	MC_CMD_GET_SOC_STATE_OUT_ATTRIBUTES_LEN 4
29249 #define	MC_CMD_GET_SOC_STATE_OUT_RUN_STATE_OFST 4
29250 #define	MC_CMD_GET_SOC_STATE_OUT_RUN_STATE_LBN 0
29251 #define	MC_CMD_GET_SOC_STATE_OUT_RUN_STATE_WIDTH 8
29252 /* enum: Power on (set by SUC on power up) */
29253 #define	MC_CMD_GET_SOC_STATE_OUT_SOC_BOOT 0x0
29254 /* enum: Running bootloader */
29255 #define	MC_CMD_GET_SOC_STATE_OUT_SOC_BOOTLOADER 0x1
29256 /* enum: Bootloader has started OS. OS is booting */
29257 #define	MC_CMD_GET_SOC_STATE_OUT_SOC_OS_START 0x2
29258 /* enum: OS is running */
29259 #define	MC_CMD_GET_SOC_STATE_OUT_SOC_OS_RUNNING 0x3
29260 /* enum: Maintenance OS is running */
29261 #define	MC_CMD_GET_SOC_STATE_OUT_SOC_OS_MAINTENANCE 0x4
29262 /* Number of SoC resets since power on */
29263 #define	MC_CMD_GET_SOC_STATE_OUT_RESET_COUNT_OFST 8
29264 #define	MC_CMD_GET_SOC_STATE_OUT_RESET_COUNT_LEN 4
29265 
29266 
29267 /***********************************/
29268 /* MC_CMD_CHECK_SCHEDULER_CREDITS
29269  * For debugging purposes. For each source and destination node in the hardware
29270  * schedulers, check whether the number of credits is as it should be. This
29271  * should only be used when the NIC is idle, because collection is not atomic
29272  * and because the expected credit counts are only meaningful when no traffic
29273  * is flowing.
29274  */
29275 #define	MC_CMD_CHECK_SCHEDULER_CREDITS 0x1c8
29276 #define	MC_CMD_CHECK_SCHEDULER_CREDITS_MSGSET 0x1c8
29277 #undef	MC_CMD_0x1c8_PRIVILEGE_CTG
29278 
29279 #define	MC_CMD_0x1c8_PRIVILEGE_CTG SRIOV_CTG_ADMIN
29280 
29281 /* MC_CMD_CHECK_SCHEDULER_CREDITS_IN msgrequest */
29282 #define	MC_CMD_CHECK_SCHEDULER_CREDITS_IN_LEN 8
29283 /* Flags for the request */
29284 #define	MC_CMD_CHECK_SCHEDULER_CREDITS_IN_FLAGS_OFST 0
29285 #define	MC_CMD_CHECK_SCHEDULER_CREDITS_IN_FLAGS_LEN 4
29286 #define	MC_CMD_CHECK_SCHEDULER_CREDITS_IN_REPORT_ALL_OFST 0
29287 #define	MC_CMD_CHECK_SCHEDULER_CREDITS_IN_REPORT_ALL_LBN 0
29288 #define	MC_CMD_CHECK_SCHEDULER_CREDITS_IN_REPORT_ALL_WIDTH 1
29289 /* If there are too many results to fit into an MCDI response, they're split
29290  * into pages. This field specifies which (0-indexed) page to request. A
29291  * request with PAGE=0 will snapshot the results, and subsequent requests with
29292  * PAGE>0 will return data from the most recent snapshot. The GENERATION field
29293  * in the response allows callers to verify that all responses correspond to
29294  * the same snapshot.
29295  */
29296 #define	MC_CMD_CHECK_SCHEDULER_CREDITS_IN_PAGE_OFST 4
29297 #define	MC_CMD_CHECK_SCHEDULER_CREDITS_IN_PAGE_LEN 4
29298 
29299 /* MC_CMD_CHECK_SCHEDULER_CREDITS_OUT msgresponse */
29300 #define	MC_CMD_CHECK_SCHEDULER_CREDITS_OUT_LENMIN 16
29301 #define	MC_CMD_CHECK_SCHEDULER_CREDITS_OUT_LENMAX 240
29302 #define	MC_CMD_CHECK_SCHEDULER_CREDITS_OUT_LENMAX_MCDI2 1008
29303 #define	MC_CMD_CHECK_SCHEDULER_CREDITS_OUT_LEN(num) (16+16*(num))
29304 #define	MC_CMD_CHECK_SCHEDULER_CREDITS_OUT_RESULTS_NUM(len) (((len)-16)/16)
29305 /* The total number of results (across all pages). */
29306 #define	MC_CMD_CHECK_SCHEDULER_CREDITS_OUT_TOTAL_RESULTS_OFST 0
29307 #define	MC_CMD_CHECK_SCHEDULER_CREDITS_OUT_TOTAL_RESULTS_LEN 4
29308 /* The number of pages that the response is split across. */
29309 #define	MC_CMD_CHECK_SCHEDULER_CREDITS_OUT_NUM_PAGES_OFST 4
29310 #define	MC_CMD_CHECK_SCHEDULER_CREDITS_OUT_NUM_PAGES_LEN 4
29311 /* The number of results in this response. */
29312 #define	MC_CMD_CHECK_SCHEDULER_CREDITS_OUT_RESULTS_THIS_PAGE_OFST 8
29313 #define	MC_CMD_CHECK_SCHEDULER_CREDITS_OUT_RESULTS_THIS_PAGE_LEN 4
29314 /* Result generation count. Incremented any time a request is made with PAGE=0.
29315  */
29316 #define	MC_CMD_CHECK_SCHEDULER_CREDITS_OUT_GENERATION_OFST 12
29317 #define	MC_CMD_CHECK_SCHEDULER_CREDITS_OUT_GENERATION_LEN 4
29318 /* The results, as an array of SCHED_CREDIT_CHECK_RESULT structures. */
29319 #define	MC_CMD_CHECK_SCHEDULER_CREDITS_OUT_RESULTS_OFST 16
29320 #define	MC_CMD_CHECK_SCHEDULER_CREDITS_OUT_RESULTS_LEN 16
29321 #define	MC_CMD_CHECK_SCHEDULER_CREDITS_OUT_RESULTS_MINNUM 0
29322 #define	MC_CMD_CHECK_SCHEDULER_CREDITS_OUT_RESULTS_MAXNUM 14
29323 #define	MC_CMD_CHECK_SCHEDULER_CREDITS_OUT_RESULTS_MAXNUM_MCDI2 62
29324 
29325 
29326 /***********************************/
29327 /* MC_CMD_TXQ_STATS
29328  * Query per-TXQ statistics.
29329  */
29330 #define	MC_CMD_TXQ_STATS 0x1d5
29331 #define	MC_CMD_TXQ_STATS_MSGSET 0x1d5
29332 #undef	MC_CMD_0x1d5_PRIVILEGE_CTG
29333 
29334 #define	MC_CMD_0x1d5_PRIVILEGE_CTG SRIOV_CTG_GENERAL
29335 
29336 /* MC_CMD_TXQ_STATS_IN msgrequest */
29337 #define	MC_CMD_TXQ_STATS_IN_LEN 8
29338 /* Instance of TXQ to retrieve statistics for */
29339 #define	MC_CMD_TXQ_STATS_IN_INSTANCE_OFST 0
29340 #define	MC_CMD_TXQ_STATS_IN_INSTANCE_LEN 4
29341 /* Flags for the request */
29342 #define	MC_CMD_TXQ_STATS_IN_FLAGS_OFST 4
29343 #define	MC_CMD_TXQ_STATS_IN_FLAGS_LEN 4
29344 #define	MC_CMD_TXQ_STATS_IN_CLEAR_OFST 4
29345 #define	MC_CMD_TXQ_STATS_IN_CLEAR_LBN 0
29346 #define	MC_CMD_TXQ_STATS_IN_CLEAR_WIDTH 1
29347 
29348 /* MC_CMD_TXQ_STATS_OUT msgresponse */
29349 #define	MC_CMD_TXQ_STATS_OUT_LENMIN 0
29350 #define	MC_CMD_TXQ_STATS_OUT_LENMAX 248
29351 #define	MC_CMD_TXQ_STATS_OUT_LENMAX_MCDI2 1016
29352 #define	MC_CMD_TXQ_STATS_OUT_LEN(num) (0+8*(num))
29353 #define	MC_CMD_TXQ_STATS_OUT_STATISTICS_NUM(len) (((len)-0)/8)
29354 #define	MC_CMD_TXQ_STATS_OUT_STATISTICS_OFST 0
29355 #define	MC_CMD_TXQ_STATS_OUT_STATISTICS_LEN 8
29356 #define	MC_CMD_TXQ_STATS_OUT_STATISTICS_LO_OFST 0
29357 #define	MC_CMD_TXQ_STATS_OUT_STATISTICS_LO_LEN 4
29358 #define	MC_CMD_TXQ_STATS_OUT_STATISTICS_LO_LBN 0
29359 #define	MC_CMD_TXQ_STATS_OUT_STATISTICS_LO_WIDTH 32
29360 #define	MC_CMD_TXQ_STATS_OUT_STATISTICS_HI_OFST 4
29361 #define	MC_CMD_TXQ_STATS_OUT_STATISTICS_HI_LEN 4
29362 #define	MC_CMD_TXQ_STATS_OUT_STATISTICS_HI_LBN 32
29363 #define	MC_CMD_TXQ_STATS_OUT_STATISTICS_HI_WIDTH 32
29364 #define	MC_CMD_TXQ_STATS_OUT_STATISTICS_MINNUM 0
29365 #define	MC_CMD_TXQ_STATS_OUT_STATISTICS_MAXNUM 31
29366 #define	MC_CMD_TXQ_STATS_OUT_STATISTICS_MAXNUM_MCDI2 127
29367 /* enum property: index */
29368 #define	MC_CMD_TXQ_STATS_CTPIO_MAX_FILL 0x0 /* enum */
29369 
29370 /* FUNCTION_PERSONALITY structuredef: The meanings of the personalities are
29371  * defined in SF-120734-TC with more information in SF-122717-TC.
29372  */
29373 #define	FUNCTION_PERSONALITY_LEN 4
29374 #define	FUNCTION_PERSONALITY_ID_OFST 0
29375 #define	FUNCTION_PERSONALITY_ID_LEN 4
29376 /* enum: Function has no assigned personality */
29377 #define	FUNCTION_PERSONALITY_NULL 0x0
29378 /* enum: Function has an EF100-style function control window and VI windows
29379  * with both EF100 and vDPA doorbells.
29380  */
29381 #define	FUNCTION_PERSONALITY_EF100 0x1
29382 /* enum: Function has virtio net device configuration registers and doorbells
29383  * for virtio queue pairs.
29384  */
29385 #define	FUNCTION_PERSONALITY_VIRTIO_NET 0x2
29386 /* enum: Function has virtio block device configuration registers and a
29387  * doorbell for a single virtqueue.
29388  */
29389 #define	FUNCTION_PERSONALITY_VIRTIO_BLK 0x3
29390 /* enum: Function is a Xilinx acceleration device - management function */
29391 #define	FUNCTION_PERSONALITY_ACCEL_MGMT 0x4
29392 /* enum: Function is a Xilinx acceleration device - user function */
29393 #define	FUNCTION_PERSONALITY_ACCEL_USR 0x5
29394 #define	FUNCTION_PERSONALITY_ID_LBN 0
29395 #define	FUNCTION_PERSONALITY_ID_WIDTH 32
29396 
29397 
29398 /***********************************/
29399 /* MC_CMD_VIRTIO_GET_FEATURES
29400  * Get a list of the virtio features supported by the device.
29401  */
29402 #define	MC_CMD_VIRTIO_GET_FEATURES 0x168
29403 #define	MC_CMD_VIRTIO_GET_FEATURES_MSGSET 0x168
29404 #undef	MC_CMD_0x168_PRIVILEGE_CTG
29405 
29406 #define	MC_CMD_0x168_PRIVILEGE_CTG SRIOV_CTG_GENERAL
29407 
29408 /* MC_CMD_VIRTIO_GET_FEATURES_IN msgrequest */
29409 #define	MC_CMD_VIRTIO_GET_FEATURES_IN_LEN 4
29410 /* Type of device to get features for. Matches the device id as defined by the
29411  * virtio spec.
29412  */
29413 #define	MC_CMD_VIRTIO_GET_FEATURES_IN_DEVICE_ID_OFST 0
29414 #define	MC_CMD_VIRTIO_GET_FEATURES_IN_DEVICE_ID_LEN 4
29415 /* enum: Reserved. Do not use. */
29416 #define	MC_CMD_VIRTIO_GET_FEATURES_IN_RESERVED 0x0
29417 /* enum: Net device. */
29418 #define	MC_CMD_VIRTIO_GET_FEATURES_IN_NET 0x1
29419 /* enum: Block device. */
29420 #define	MC_CMD_VIRTIO_GET_FEATURES_IN_BLOCK 0x2
29421 
29422 /* MC_CMD_VIRTIO_GET_FEATURES_OUT msgresponse */
29423 #define	MC_CMD_VIRTIO_GET_FEATURES_OUT_LEN 8
29424 /* Features supported by the device. The result is a bitfield in the format of
29425  * the feature bits of the specified device type as defined in the virtIO 1.1
29426  * specification ( https://docs.oasis-
29427  * open.org/virtio/virtio/v1.1/csprd01/virtio-v1.1-csprd01.pdf )
29428  */
29429 #define	MC_CMD_VIRTIO_GET_FEATURES_OUT_FEATURES_OFST 0
29430 #define	MC_CMD_VIRTIO_GET_FEATURES_OUT_FEATURES_LEN 8
29431 #define	MC_CMD_VIRTIO_GET_FEATURES_OUT_FEATURES_LO_OFST 0
29432 #define	MC_CMD_VIRTIO_GET_FEATURES_OUT_FEATURES_LO_LEN 4
29433 #define	MC_CMD_VIRTIO_GET_FEATURES_OUT_FEATURES_LO_LBN 0
29434 #define	MC_CMD_VIRTIO_GET_FEATURES_OUT_FEATURES_LO_WIDTH 32
29435 #define	MC_CMD_VIRTIO_GET_FEATURES_OUT_FEATURES_HI_OFST 4
29436 #define	MC_CMD_VIRTIO_GET_FEATURES_OUT_FEATURES_HI_LEN 4
29437 #define	MC_CMD_VIRTIO_GET_FEATURES_OUT_FEATURES_HI_LBN 32
29438 #define	MC_CMD_VIRTIO_GET_FEATURES_OUT_FEATURES_HI_WIDTH 32
29439 
29440 
29441 /***********************************/
29442 /* MC_CMD_VIRTIO_TEST_FEATURES
29443  * Query whether a given set of features is supported. Fails with ENOSUP if the
29444  * driver requests a feature the device doesn't support. Fails with EINVAL if
29445  * the driver fails to request a feature which the device requires.
29446  */
29447 #define	MC_CMD_VIRTIO_TEST_FEATURES 0x169
29448 #define	MC_CMD_VIRTIO_TEST_FEATURES_MSGSET 0x169
29449 #undef	MC_CMD_0x169_PRIVILEGE_CTG
29450 
29451 #define	MC_CMD_0x169_PRIVILEGE_CTG SRIOV_CTG_GENERAL
29452 
29453 /* MC_CMD_VIRTIO_TEST_FEATURES_IN msgrequest */
29454 #define	MC_CMD_VIRTIO_TEST_FEATURES_IN_LEN 16
29455 /* Type of device to test features for. Matches the device id as defined by the
29456  * virtio spec.
29457  */
29458 #define	MC_CMD_VIRTIO_TEST_FEATURES_IN_DEVICE_ID_OFST 0
29459 #define	MC_CMD_VIRTIO_TEST_FEATURES_IN_DEVICE_ID_LEN 4
29460 /*            Enum values, see field(s): */
29461 /*               MC_CMD_VIRTIO_GET_FEATURES/MC_CMD_VIRTIO_GET_FEATURES_IN/DEVICE_ID */
29462 #define	MC_CMD_VIRTIO_TEST_FEATURES_IN_RESERVED_OFST 4
29463 #define	MC_CMD_VIRTIO_TEST_FEATURES_IN_RESERVED_LEN 4
29464 /* Features requested. Same format as the returned value from
29465  * MC_CMD_VIRTIO_GET_FEATURES.
29466  */
29467 #define	MC_CMD_VIRTIO_TEST_FEATURES_IN_FEATURES_OFST 8
29468 #define	MC_CMD_VIRTIO_TEST_FEATURES_IN_FEATURES_LEN 8
29469 #define	MC_CMD_VIRTIO_TEST_FEATURES_IN_FEATURES_LO_OFST 8
29470 #define	MC_CMD_VIRTIO_TEST_FEATURES_IN_FEATURES_LO_LEN 4
29471 #define	MC_CMD_VIRTIO_TEST_FEATURES_IN_FEATURES_LO_LBN 64
29472 #define	MC_CMD_VIRTIO_TEST_FEATURES_IN_FEATURES_LO_WIDTH 32
29473 #define	MC_CMD_VIRTIO_TEST_FEATURES_IN_FEATURES_HI_OFST 12
29474 #define	MC_CMD_VIRTIO_TEST_FEATURES_IN_FEATURES_HI_LEN 4
29475 #define	MC_CMD_VIRTIO_TEST_FEATURES_IN_FEATURES_HI_LBN 96
29476 #define	MC_CMD_VIRTIO_TEST_FEATURES_IN_FEATURES_HI_WIDTH 32
29477 
29478 /* MC_CMD_VIRTIO_TEST_FEATURES_OUT msgresponse */
29479 #define	MC_CMD_VIRTIO_TEST_FEATURES_OUT_LEN 0
29480 
29481 
29482 /***********************************/
29483 /* MC_CMD_VIRTIO_GET_CAPABILITIES
29484  * Get virtio capabilities supported by the device. Returns general virtio
29485  * capabilities and limitations of the hardware / firmware implementation
29486  * (hardware device as a whole), rather than that of individual configured
29487  * virtio devices. At present, only the absolute maximum number of queues
29488  * allowed on multi-queue devices is returned. Response is expected to be
29489  * extended as necessary in the future.
29490  */
29491 #define	MC_CMD_VIRTIO_GET_CAPABILITIES 0x1d3
29492 #define	MC_CMD_VIRTIO_GET_CAPABILITIES_MSGSET 0x1d3
29493 #undef	MC_CMD_0x1d3_PRIVILEGE_CTG
29494 
29495 #define	MC_CMD_0x1d3_PRIVILEGE_CTG SRIOV_CTG_GENERAL
29496 
29497 /* MC_CMD_VIRTIO_GET_CAPABILITIES_IN msgrequest */
29498 #define	MC_CMD_VIRTIO_GET_CAPABILITIES_IN_LEN 4
29499 /* Type of device to get capabilities for. Matches the device id as defined by
29500  * the virtio spec.
29501  */
29502 #define	MC_CMD_VIRTIO_GET_CAPABILITIES_IN_DEVICE_ID_OFST 0
29503 #define	MC_CMD_VIRTIO_GET_CAPABILITIES_IN_DEVICE_ID_LEN 4
29504 /*            Enum values, see field(s): */
29505 /*               MC_CMD_VIRTIO_GET_FEATURES/MC_CMD_VIRTIO_GET_FEATURES_IN/DEVICE_ID */
29506 
29507 /* MC_CMD_VIRTIO_GET_CAPABILITIES_OUT msgresponse */
29508 #define	MC_CMD_VIRTIO_GET_CAPABILITIES_OUT_LEN 4
29509 /* Maximum number of queues supported for a single device instance */
29510 #define	MC_CMD_VIRTIO_GET_CAPABILITIES_OUT_MAX_QUEUES_OFST 0
29511 #define	MC_CMD_VIRTIO_GET_CAPABILITIES_OUT_MAX_QUEUES_LEN 4
29512 
29513 
29514 /***********************************/
29515 /* MC_CMD_VIRTIO_INIT_QUEUE
29516  * Create a virtio virtqueue. Fails with EALREADY if the queue already exists.
29517  * Fails with ENOSUP if a feature is requested that isn't supported. Fails with
29518  * EINVAL if a required feature isn't requested, or any other parameter is
29519  * invalid.
29520  */
29521 #define	MC_CMD_VIRTIO_INIT_QUEUE 0x16a
29522 #define	MC_CMD_VIRTIO_INIT_QUEUE_MSGSET 0x16a
29523 #undef	MC_CMD_0x16a_PRIVILEGE_CTG
29524 
29525 #define	MC_CMD_0x16a_PRIVILEGE_CTG SRIOV_CTG_GENERAL
29526 
29527 /* MC_CMD_VIRTIO_INIT_QUEUE_REQ msgrequest */
29528 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_LEN 68
29529 /* Type of virtqueue to create. A network rxq and a txq can exist at the same
29530  * time on a single VI.
29531  */
29532 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_QUEUE_TYPE_OFST 0
29533 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_QUEUE_TYPE_LEN 1
29534 /* enum: A network device receive queue */
29535 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_NET_RXQ 0x0
29536 /* enum: A network device transmit queue */
29537 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_NET_TXQ 0x1
29538 /* enum: A block device request queue */
29539 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_BLOCK 0x2
29540 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_RESERVED_OFST 1
29541 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_RESERVED_LEN 1
29542 /* If the calling function is a PF and this field is not VF_NULL, create the
29543  * queue on the specified child VF instead of on the PF.
29544  */
29545 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_TARGET_VF_OFST 2
29546 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_TARGET_VF_LEN 2
29547 /* enum: No VF, create queue on the PF. */
29548 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_VF_NULL 0xffff
29549 /* Desired instance. This is the function-local index of the associated VI, not
29550  * the virtqueue number as counted by the virtqueue spec.
29551  */
29552 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_INSTANCE_OFST 4
29553 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_INSTANCE_LEN 4
29554 /* Queue size, in entries. Must be a power of two. */
29555 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_SIZE_OFST 8
29556 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_SIZE_LEN 4
29557 /* Flags */
29558 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_FLAGS_OFST 12
29559 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_FLAGS_LEN 4
29560 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_USE_PASID_OFST 12
29561 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_USE_PASID_LBN 0
29562 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_USE_PASID_WIDTH 1
29563 /* Address of the descriptor table in the virtqueue. */
29564 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_DESC_TBL_ADDR_OFST 16
29565 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_DESC_TBL_ADDR_LEN 8
29566 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_DESC_TBL_ADDR_LO_OFST 16
29567 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_DESC_TBL_ADDR_LO_LEN 4
29568 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_DESC_TBL_ADDR_LO_LBN 128
29569 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_DESC_TBL_ADDR_LO_WIDTH 32
29570 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_DESC_TBL_ADDR_HI_OFST 20
29571 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_DESC_TBL_ADDR_HI_LEN 4
29572 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_DESC_TBL_ADDR_HI_LBN 160
29573 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_DESC_TBL_ADDR_HI_WIDTH 32
29574 /* Address of the available ring in the virtqueue. */
29575 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_AVAIL_RING_ADDR_OFST 24
29576 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_AVAIL_RING_ADDR_LEN 8
29577 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_AVAIL_RING_ADDR_LO_OFST 24
29578 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_AVAIL_RING_ADDR_LO_LEN 4
29579 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_AVAIL_RING_ADDR_LO_LBN 192
29580 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_AVAIL_RING_ADDR_LO_WIDTH 32
29581 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_AVAIL_RING_ADDR_HI_OFST 28
29582 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_AVAIL_RING_ADDR_HI_LEN 4
29583 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_AVAIL_RING_ADDR_HI_LBN 224
29584 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_AVAIL_RING_ADDR_HI_WIDTH 32
29585 /* Address of the used ring in the virtqueue. */
29586 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_USED_RING_ADDR_OFST 32
29587 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_USED_RING_ADDR_LEN 8
29588 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_USED_RING_ADDR_LO_OFST 32
29589 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_USED_RING_ADDR_LO_LEN 4
29590 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_USED_RING_ADDR_LO_LBN 256
29591 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_USED_RING_ADDR_LO_WIDTH 32
29592 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_USED_RING_ADDR_HI_OFST 36
29593 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_USED_RING_ADDR_HI_LEN 4
29594 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_USED_RING_ADDR_HI_LBN 288
29595 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_USED_RING_ADDR_HI_WIDTH 32
29596 /* PASID to use on PCIe transactions involving this queue. Ignored if the
29597  * USE_PASID flag is not set.
29598  */
29599 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_PASID_OFST 40
29600 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_PASID_LEN 4
29601 /* Which MSIX vector to use for this virtqueue, or NO_VECTOR if MSIX should not
29602  * be used.
29603  */
29604 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_MSIX_VECTOR_OFST 44
29605 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_MSIX_VECTOR_LEN 2
29606 /* enum: Do not enable interrupts for this virtqueue */
29607 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_NO_VECTOR 0xffff
29608 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_RESERVED2_OFST 46
29609 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_RESERVED2_LEN 2
29610 /* Virtio features to apply to this queue. Same format as the in the virtio
29611  * spec and in the return from MC_CMD_VIRTIO_GET_FEATURES. Must be a subset of
29612  * the features returned from MC_CMD_VIRTIO_GET_FEATURES. Features are per-
29613  * queue because with vDPA multiple queues on the same function can be passed
29614  * through to different virtual hosts as independent devices.
29615  */
29616 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_FEATURES_OFST 48
29617 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_FEATURES_LEN 8
29618 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_FEATURES_LO_OFST 48
29619 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_FEATURES_LO_LEN 4
29620 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_FEATURES_LO_LBN 384
29621 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_FEATURES_LO_WIDTH 32
29622 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_FEATURES_HI_OFST 52
29623 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_FEATURES_HI_LEN 4
29624 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_FEATURES_HI_LBN 416
29625 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_FEATURES_HI_WIDTH 32
29626 /*            Enum values, see field(s): */
29627 /*               MC_CMD_VIRTIO_GET_FEATURES/MC_CMD_VIRTIO_GET_FEATURES_OUT/FEATURES */
29628 /* The initial available index for this virtqueue. If this queue is being
29629  * created to be migrated into, this should be the FINAL_AVAIL_IDX value
29630  * returned by MC_CMD_VIRTIO_FINI_QUEUE of the queue being migrated from (or
29631  * equivalent if the original queue was on a thirdparty device). Otherwise, it
29632  * should be zero.
29633  */
29634 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_INITIAL_AVAIL_IDX_OFST 56
29635 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_INITIAL_AVAIL_IDX_LEN 4
29636 /* Alias of INITIAL_AVAIL_IDX, kept for compatibility. */
29637 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_INITIAL_PIDX_OFST 56
29638 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_INITIAL_PIDX_LEN 4
29639 /* The initial used index for this virtqueue. If this queue is being created to
29640  * be migrated into, this should be the FINAL_USED_IDX value returned by
29641  * MC_CMD_VIRTIO_FINI_QUEUE of the queue being migrated from (or equivalent if
29642  * the original queue was on a thirdparty device). Otherwise, it should be
29643  * zero.
29644  */
29645 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_INITIAL_USED_IDX_OFST 60
29646 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_INITIAL_USED_IDX_LEN 4
29647 /* Alias of INITIAL_USED_IDX, kept for compatibility. */
29648 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_INITIAL_CIDX_OFST 60
29649 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_INITIAL_CIDX_LEN 4
29650 /* A MAE_MPORT_SELECTOR defining which mport this queue should be associated
29651  * with. Use MAE_MPORT_SELECTOR_ASSIGNED to request the default mport for the
29652  * function this queue is being created on.
29653  */
29654 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_MPORT_SELECTOR_OFST 64
29655 #define	MC_CMD_VIRTIO_INIT_QUEUE_REQ_MPORT_SELECTOR_LEN 4
29656 
29657 /* MC_CMD_VIRTIO_INIT_QUEUE_RESP msgresponse */
29658 #define	MC_CMD_VIRTIO_INIT_QUEUE_RESP_LEN 0
29659 
29660 
29661 /***********************************/
29662 /* MC_CMD_VIRTIO_FINI_QUEUE
29663  * Destroy a virtio virtqueue
29664  */
29665 #define	MC_CMD_VIRTIO_FINI_QUEUE 0x16b
29666 #define	MC_CMD_VIRTIO_FINI_QUEUE_MSGSET 0x16b
29667 #undef	MC_CMD_0x16b_PRIVILEGE_CTG
29668 
29669 #define	MC_CMD_0x16b_PRIVILEGE_CTG SRIOV_CTG_GENERAL
29670 
29671 /* MC_CMD_VIRTIO_FINI_QUEUE_REQ msgrequest */
29672 #define	MC_CMD_VIRTIO_FINI_QUEUE_REQ_LEN 8
29673 /* Type of virtqueue to destroy. */
29674 #define	MC_CMD_VIRTIO_FINI_QUEUE_REQ_QUEUE_TYPE_OFST 0
29675 #define	MC_CMD_VIRTIO_FINI_QUEUE_REQ_QUEUE_TYPE_LEN 1
29676 /*            Enum values, see field(s): */
29677 /*               MC_CMD_VIRTIO_INIT_QUEUE/MC_CMD_VIRTIO_INIT_QUEUE_REQ/QUEUE_TYPE */
29678 #define	MC_CMD_VIRTIO_FINI_QUEUE_REQ_RESERVED_OFST 1
29679 #define	MC_CMD_VIRTIO_FINI_QUEUE_REQ_RESERVED_LEN 1
29680 /* If the calling function is a PF and this field is not VF_NULL, destroy the
29681  * queue on the specified child VF instead of on the PF.
29682  */
29683 #define	MC_CMD_VIRTIO_FINI_QUEUE_REQ_TARGET_VF_OFST 2
29684 #define	MC_CMD_VIRTIO_FINI_QUEUE_REQ_TARGET_VF_LEN 2
29685 /* enum: No VF, destroy the queue on the PF. */
29686 #define	MC_CMD_VIRTIO_FINI_QUEUE_REQ_VF_NULL 0xffff
29687 /* Instance to destroy */
29688 #define	MC_CMD_VIRTIO_FINI_QUEUE_REQ_INSTANCE_OFST 4
29689 #define	MC_CMD_VIRTIO_FINI_QUEUE_REQ_INSTANCE_LEN 4
29690 
29691 /* MC_CMD_VIRTIO_FINI_QUEUE_RESP msgresponse */
29692 #define	MC_CMD_VIRTIO_FINI_QUEUE_RESP_LEN 8
29693 /* The available index of the virtqueue when the queue was stopped. */
29694 #define	MC_CMD_VIRTIO_FINI_QUEUE_RESP_FINAL_AVAIL_IDX_OFST 0
29695 #define	MC_CMD_VIRTIO_FINI_QUEUE_RESP_FINAL_AVAIL_IDX_LEN 4
29696 /* Alias of FINAL_AVAIL_IDX, kept for compatibility. */
29697 #define	MC_CMD_VIRTIO_FINI_QUEUE_RESP_FINAL_PIDX_OFST 0
29698 #define	MC_CMD_VIRTIO_FINI_QUEUE_RESP_FINAL_PIDX_LEN 4
29699 /* The used index of the virtqueue when the queue was stopped. */
29700 #define	MC_CMD_VIRTIO_FINI_QUEUE_RESP_FINAL_USED_IDX_OFST 4
29701 #define	MC_CMD_VIRTIO_FINI_QUEUE_RESP_FINAL_USED_IDX_LEN 4
29702 /* Alias of FINAL_USED_IDX, kept for compatibility. */
29703 #define	MC_CMD_VIRTIO_FINI_QUEUE_RESP_FINAL_CIDX_OFST 4
29704 #define	MC_CMD_VIRTIO_FINI_QUEUE_RESP_FINAL_CIDX_LEN 4
29705 
29706 
29707 /***********************************/
29708 /* MC_CMD_VIRTIO_GET_DOORBELL_OFFSET
29709  * Get the offset in the BAR of the doorbells for a VI. Doesn't require the
29710  * queue(s) to be allocated.
29711  */
29712 #define	MC_CMD_VIRTIO_GET_DOORBELL_OFFSET 0x16c
29713 #define	MC_CMD_VIRTIO_GET_DOORBELL_OFFSET_MSGSET 0x16c
29714 #undef	MC_CMD_0x16c_PRIVILEGE_CTG
29715 
29716 #define	MC_CMD_0x16c_PRIVILEGE_CTG SRIOV_CTG_GENERAL
29717 
29718 /* MC_CMD_VIRTIO_GET_DOORBELL_OFFSET_REQ msgrequest */
29719 #define	MC_CMD_VIRTIO_GET_DOORBELL_OFFSET_REQ_LEN 8
29720 /* Type of device to get information for. Matches the device id as defined by
29721  * the virtio spec.
29722  */
29723 #define	MC_CMD_VIRTIO_GET_DOORBELL_OFFSET_REQ_DEVICE_ID_OFST 0
29724 #define	MC_CMD_VIRTIO_GET_DOORBELL_OFFSET_REQ_DEVICE_ID_LEN 1
29725 /*            Enum values, see field(s): */
29726 /*               MC_CMD_VIRTIO_GET_FEATURES/MC_CMD_VIRTIO_GET_FEATURES_IN/DEVICE_ID */
29727 #define	MC_CMD_VIRTIO_GET_DOORBELL_OFFSET_REQ_RESERVED_OFST 1
29728 #define	MC_CMD_VIRTIO_GET_DOORBELL_OFFSET_REQ_RESERVED_LEN 1
29729 /* If the calling function is a PF and this field is not VF_NULL, query the VI
29730  * on the specified child VF instead of on the PF.
29731  */
29732 #define	MC_CMD_VIRTIO_GET_DOORBELL_OFFSET_REQ_TARGET_VF_OFST 2
29733 #define	MC_CMD_VIRTIO_GET_DOORBELL_OFFSET_REQ_TARGET_VF_LEN 2
29734 /* enum: No VF, query the PF. */
29735 #define	MC_CMD_VIRTIO_GET_DOORBELL_OFFSET_REQ_VF_NULL 0xffff
29736 /* VI instance to query */
29737 #define	MC_CMD_VIRTIO_GET_DOORBELL_OFFSET_REQ_INSTANCE_OFST 4
29738 #define	MC_CMD_VIRTIO_GET_DOORBELL_OFFSET_REQ_INSTANCE_LEN 4
29739 
29740 /* MC_CMD_VIRTIO_GET_NET_DOORBELL_OFFSET_RESP msgresponse */
29741 #define	MC_CMD_VIRTIO_GET_NET_DOORBELL_OFFSET_RESP_LEN 8
29742 /* Offset of RX doorbell in BAR */
29743 #define	MC_CMD_VIRTIO_GET_NET_DOORBELL_OFFSET_RESP_RX_DBL_OFFSET_OFST 0
29744 #define	MC_CMD_VIRTIO_GET_NET_DOORBELL_OFFSET_RESP_RX_DBL_OFFSET_LEN 4
29745 /* Offset of TX doorbell in BAR */
29746 #define	MC_CMD_VIRTIO_GET_NET_DOORBELL_OFFSET_RESP_TX_DBL_OFFSET_OFST 4
29747 #define	MC_CMD_VIRTIO_GET_NET_DOORBELL_OFFSET_RESP_TX_DBL_OFFSET_LEN 4
29748 
29749 /* MC_CMD_VIRTIO_GET_BLOCK_DOORBELL_OFFSET_RESP msgresponse */
29750 #define	MC_CMD_VIRTIO_GET_BLOCK_DOORBELL_OFFSET_RESP_LEN 4
29751 /* Offset of request doorbell in BAR */
29752 #define	MC_CMD_VIRTIO_GET_BLOCK_DOORBELL_OFFSET_RESP_DBL_OFFSET_OFST 0
29753 #define	MC_CMD_VIRTIO_GET_BLOCK_DOORBELL_OFFSET_RESP_DBL_OFFSET_LEN 4
29754 
29755 /* PCIE_FUNCTION structuredef: Structure representing a PCIe function ID
29756  * (interface/PF/VF tuple)
29757  */
29758 #define	PCIE_FUNCTION_LEN 8
29759 /* PCIe PF function number */
29760 #define	PCIE_FUNCTION_PF_OFST 0
29761 #define	PCIE_FUNCTION_PF_LEN 2
29762 /* enum: Wildcard value representing any available function (e.g in resource
29763  * allocation requests)
29764  */
29765 #define	PCIE_FUNCTION_PF_ANY 0xfffe
29766 /* enum: Value representing invalid (null) function */
29767 #define	PCIE_FUNCTION_PF_NULL 0xffff
29768 #define	PCIE_FUNCTION_PF_LBN 0
29769 #define	PCIE_FUNCTION_PF_WIDTH 16
29770 /* PCIe VF Function number (PF relative) */
29771 #define	PCIE_FUNCTION_VF_OFST 2
29772 #define	PCIE_FUNCTION_VF_LEN 2
29773 /* enum: Wildcard value representing any available function (e.g in resource
29774  * allocation requests)
29775  */
29776 #define	PCIE_FUNCTION_VF_ANY 0xfffe
29777 /* enum: Function is a PF (when PF != PF_NULL) or invalid function (when PF ==
29778  * PF_NULL)
29779  */
29780 #define	PCIE_FUNCTION_VF_NULL 0xffff
29781 #define	PCIE_FUNCTION_VF_LBN 16
29782 #define	PCIE_FUNCTION_VF_WIDTH 16
29783 /* PCIe interface of the function. Values should be taken from the
29784  * PCIE_INTERFACE enum
29785  */
29786 #define	PCIE_FUNCTION_INTF_OFST 4
29787 #define	PCIE_FUNCTION_INTF_LEN 4
29788 /* enum: Host PCIe interface. (Alias for HOST_PRIMARY, provided for backwards
29789  * compatibility)
29790  */
29791 #define	PCIE_FUNCTION_INTF_HOST 0x0
29792 /* enum: Application Processor interface (alias for NIC_EMBEDDED, provided for
29793  * backwards compatibility)
29794  */
29795 #define	PCIE_FUNCTION_INTF_AP 0x1
29796 #define	PCIE_FUNCTION_INTF_LBN 32
29797 #define	PCIE_FUNCTION_INTF_WIDTH 32
29798 
29799 /* QUEUE_ID structuredef: Structure representing an absolute queue identifier
29800  * (absolute VI number + VI relative queue number). On Keystone, a VI can
29801  * contain multiple queues (at present, up to 2), each with separate controls
29802  * for direction. This structure is required to uniquely identify the absolute
29803  * source queue for descriptor proxy functions.
29804  */
29805 #define	QUEUE_ID_LEN 4
29806 /* Absolute VI number */
29807 #define	QUEUE_ID_ABS_VI_OFST 0
29808 #define	QUEUE_ID_ABS_VI_LEN 2
29809 #define	QUEUE_ID_ABS_VI_LBN 0
29810 #define	QUEUE_ID_ABS_VI_WIDTH 16
29811 /* Relative queue number within the VI */
29812 #define	QUEUE_ID_REL_QUEUE_LBN 16
29813 #define	QUEUE_ID_REL_QUEUE_WIDTH 1
29814 #define	QUEUE_ID_RESERVED_LBN 17
29815 #define	QUEUE_ID_RESERVED_WIDTH 15
29816 
29817 
29818 /***********************************/
29819 /* MC_CMD_DESC_PROXY_FUNC_CREATE
29820  * Descriptor proxy functions are abstract devices that forward all request
29821  * submitted to the host PCIe function (descriptors submitted to Virtio or
29822  * EF100 queues) to be handled on another function (most commonly on the
29823  * embedded Application Processor), via EF100 descriptor proxy, memory-to-
29824  * memory and descriptor-to-completion mechanisms. Primary user is Virtio-blk
29825  * subsystem, see SF-122927-TC. This function allocates a new descriptor proxy
29826  * function on the host and assigns a user-defined label. The actual function
29827  * configuration is not persisted until the caller configures it with
29828  * MC_CMD_DESC_PROXY_FUNC_CONFIG_SET_IN and commits with
29829  * MC_CMD_DESC_PROXY_FUNC_COMMIT_IN.
29830  */
29831 #define	MC_CMD_DESC_PROXY_FUNC_CREATE 0x172
29832 #define	MC_CMD_DESC_PROXY_FUNC_CREATE_MSGSET 0x172
29833 #undef	MC_CMD_0x172_PRIVILEGE_CTG
29834 
29835 #define	MC_CMD_0x172_PRIVILEGE_CTG SRIOV_CTG_ADMIN
29836 
29837 /* MC_CMD_DESC_PROXY_FUNC_CREATE_IN msgrequest */
29838 #define	MC_CMD_DESC_PROXY_FUNC_CREATE_IN_LEN 52
29839 /* PCIe Function ID to allocate (as struct PCIE_FUNCTION). Set to
29840  * {PF_ANY,VF_ANY,interface} for "any available function" Set to
29841  * {PF_ANY,VF_NULL,interface} for "any available PF"
29842  */
29843 #define	MC_CMD_DESC_PROXY_FUNC_CREATE_IN_FUNC_OFST 0
29844 #define	MC_CMD_DESC_PROXY_FUNC_CREATE_IN_FUNC_LEN 8
29845 #define	MC_CMD_DESC_PROXY_FUNC_CREATE_IN_FUNC_LO_OFST 0
29846 #define	MC_CMD_DESC_PROXY_FUNC_CREATE_IN_FUNC_LO_LEN 4
29847 #define	MC_CMD_DESC_PROXY_FUNC_CREATE_IN_FUNC_LO_LBN 0
29848 #define	MC_CMD_DESC_PROXY_FUNC_CREATE_IN_FUNC_LO_WIDTH 32
29849 #define	MC_CMD_DESC_PROXY_FUNC_CREATE_IN_FUNC_HI_OFST 4
29850 #define	MC_CMD_DESC_PROXY_FUNC_CREATE_IN_FUNC_HI_LEN 4
29851 #define	MC_CMD_DESC_PROXY_FUNC_CREATE_IN_FUNC_HI_LBN 32
29852 #define	MC_CMD_DESC_PROXY_FUNC_CREATE_IN_FUNC_HI_WIDTH 32
29853 /* See structuredef: PCIE_FUNCTION */
29854 #define	MC_CMD_DESC_PROXY_FUNC_CREATE_IN_FUNC_PF_OFST 0
29855 #define	MC_CMD_DESC_PROXY_FUNC_CREATE_IN_FUNC_PF_LEN 2
29856 #define	MC_CMD_DESC_PROXY_FUNC_CREATE_IN_FUNC_VF_OFST 2
29857 #define	MC_CMD_DESC_PROXY_FUNC_CREATE_IN_FUNC_VF_LEN 2
29858 #define	MC_CMD_DESC_PROXY_FUNC_CREATE_IN_FUNC_INTF_OFST 4
29859 #define	MC_CMD_DESC_PROXY_FUNC_CREATE_IN_FUNC_INTF_LEN 4
29860 /* The personality to set. The meanings of the personalities are defined in
29861  * SF-120734-TC with more information in SF-122717-TC. At present, we only
29862  * support proxying for VIRTIO_BLK
29863  */
29864 #define	MC_CMD_DESC_PROXY_FUNC_CREATE_IN_PERSONALITY_OFST 8
29865 #define	MC_CMD_DESC_PROXY_FUNC_CREATE_IN_PERSONALITY_LEN 4
29866 /*            Enum values, see field(s): */
29867 /*               FUNCTION_PERSONALITY/ID */
29868 /* User-defined label (zero-terminated ASCII string) to uniquely identify the
29869  * function
29870  */
29871 #define	MC_CMD_DESC_PROXY_FUNC_CREATE_IN_LABEL_OFST 12
29872 #define	MC_CMD_DESC_PROXY_FUNC_CREATE_IN_LABEL_LEN 40
29873 
29874 /* MC_CMD_DESC_PROXY_FUNC_CREATE_OUT msgresponse */
29875 #define	MC_CMD_DESC_PROXY_FUNC_CREATE_OUT_LEN 12
29876 /* Handle to the descriptor proxy function */
29877 #define	MC_CMD_DESC_PROXY_FUNC_CREATE_OUT_HANDLE_OFST 0
29878 #define	MC_CMD_DESC_PROXY_FUNC_CREATE_OUT_HANDLE_LEN 4
29879 /* Allocated function ID (as struct PCIE_FUNCTION) */
29880 #define	MC_CMD_DESC_PROXY_FUNC_CREATE_OUT_FUNC_OFST 4
29881 #define	MC_CMD_DESC_PROXY_FUNC_CREATE_OUT_FUNC_LEN 8
29882 #define	MC_CMD_DESC_PROXY_FUNC_CREATE_OUT_FUNC_LO_OFST 4
29883 #define	MC_CMD_DESC_PROXY_FUNC_CREATE_OUT_FUNC_LO_LEN 4
29884 #define	MC_CMD_DESC_PROXY_FUNC_CREATE_OUT_FUNC_LO_LBN 32
29885 #define	MC_CMD_DESC_PROXY_FUNC_CREATE_OUT_FUNC_LO_WIDTH 32
29886 #define	MC_CMD_DESC_PROXY_FUNC_CREATE_OUT_FUNC_HI_OFST 8
29887 #define	MC_CMD_DESC_PROXY_FUNC_CREATE_OUT_FUNC_HI_LEN 4
29888 #define	MC_CMD_DESC_PROXY_FUNC_CREATE_OUT_FUNC_HI_LBN 64
29889 #define	MC_CMD_DESC_PROXY_FUNC_CREATE_OUT_FUNC_HI_WIDTH 32
29890 /* See structuredef: PCIE_FUNCTION */
29891 #define	MC_CMD_DESC_PROXY_FUNC_CREATE_OUT_FUNC_PF_OFST 4
29892 #define	MC_CMD_DESC_PROXY_FUNC_CREATE_OUT_FUNC_PF_LEN 2
29893 #define	MC_CMD_DESC_PROXY_FUNC_CREATE_OUT_FUNC_VF_OFST 6
29894 #define	MC_CMD_DESC_PROXY_FUNC_CREATE_OUT_FUNC_VF_LEN 2
29895 #define	MC_CMD_DESC_PROXY_FUNC_CREATE_OUT_FUNC_INTF_OFST 8
29896 #define	MC_CMD_DESC_PROXY_FUNC_CREATE_OUT_FUNC_INTF_LEN 4
29897 
29898 
29899 /***********************************/
29900 /* MC_CMD_DESC_PROXY_FUNC_DESTROY
29901  * Remove an existing descriptor proxy function. Underlying function
29902  * personality and configuration reverts back to factory default. Function
29903  * configuration is committed immediately to specified store and any function
29904  * ownership is released.
29905  */
29906 #define	MC_CMD_DESC_PROXY_FUNC_DESTROY 0x173
29907 #define	MC_CMD_DESC_PROXY_FUNC_DESTROY_MSGSET 0x173
29908 #undef	MC_CMD_0x173_PRIVILEGE_CTG
29909 
29910 #define	MC_CMD_0x173_PRIVILEGE_CTG SRIOV_CTG_ADMIN
29911 
29912 /* MC_CMD_DESC_PROXY_FUNC_DESTROY_IN msgrequest */
29913 #define	MC_CMD_DESC_PROXY_FUNC_DESTROY_IN_LEN 44
29914 /* User-defined label (zero-terminated ASCII string) to uniquely identify the
29915  * function
29916  */
29917 #define	MC_CMD_DESC_PROXY_FUNC_DESTROY_IN_LABEL_OFST 0
29918 #define	MC_CMD_DESC_PROXY_FUNC_DESTROY_IN_LABEL_LEN 40
29919 /* Store from which to remove function configuration */
29920 #define	MC_CMD_DESC_PROXY_FUNC_DESTROY_IN_STORE_OFST 40
29921 #define	MC_CMD_DESC_PROXY_FUNC_DESTROY_IN_STORE_LEN 4
29922 /*            Enum values, see field(s): */
29923 /*               MC_CMD_DESC_PROXY_FUNC_COMMIT/MC_CMD_DESC_PROXY_FUNC_COMMIT_IN/STORE */
29924 
29925 /* MC_CMD_DESC_PROXY_FUNC_DESTROY_OUT msgresponse */
29926 #define	MC_CMD_DESC_PROXY_FUNC_DESTROY_OUT_LEN 0
29927 
29928 /* VIRTIO_BLK_CONFIG structuredef: Virtio block device configuration. See
29929  * Virtio specification v1.1, Sections 5.2.3 and 6 for definition of feature
29930  * bits. See Virtio specification v1.1, Section 5.2.4 (struct
29931  * virtio_blk_config) for definition of remaining configuration fields
29932  */
29933 #define	VIRTIO_BLK_CONFIG_LEN 68
29934 /* Virtio block device features to advertise, per Virtio 1.1, 5.2.3 and 6 */
29935 #define	VIRTIO_BLK_CONFIG_FEATURES_OFST 0
29936 #define	VIRTIO_BLK_CONFIG_FEATURES_LEN 8
29937 #define	VIRTIO_BLK_CONFIG_FEATURES_LO_OFST 0
29938 #define	VIRTIO_BLK_CONFIG_FEATURES_LO_LEN 4
29939 #define	VIRTIO_BLK_CONFIG_FEATURES_LO_LBN 0
29940 #define	VIRTIO_BLK_CONFIG_FEATURES_LO_WIDTH 32
29941 #define	VIRTIO_BLK_CONFIG_FEATURES_HI_OFST 4
29942 #define	VIRTIO_BLK_CONFIG_FEATURES_HI_LEN 4
29943 #define	VIRTIO_BLK_CONFIG_FEATURES_HI_LBN 32
29944 #define	VIRTIO_BLK_CONFIG_FEATURES_HI_WIDTH 32
29945 #define	VIRTIO_BLK_CONFIG_VIRTIO_BLK_F_BARRIER_OFST 0
29946 #define	VIRTIO_BLK_CONFIG_VIRTIO_BLK_F_BARRIER_LBN 0
29947 #define	VIRTIO_BLK_CONFIG_VIRTIO_BLK_F_BARRIER_WIDTH 1
29948 #define	VIRTIO_BLK_CONFIG_VIRTIO_BLK_F_SIZE_MAX_OFST 0
29949 #define	VIRTIO_BLK_CONFIG_VIRTIO_BLK_F_SIZE_MAX_LBN 1
29950 #define	VIRTIO_BLK_CONFIG_VIRTIO_BLK_F_SIZE_MAX_WIDTH 1
29951 #define	VIRTIO_BLK_CONFIG_VIRTIO_BLK_F_SEG_MAX_OFST 0
29952 #define	VIRTIO_BLK_CONFIG_VIRTIO_BLK_F_SEG_MAX_LBN 2
29953 #define	VIRTIO_BLK_CONFIG_VIRTIO_BLK_F_SEG_MAX_WIDTH 1
29954 #define	VIRTIO_BLK_CONFIG_VIRTIO_BLK_F_GEOMETRY_OFST 0
29955 #define	VIRTIO_BLK_CONFIG_VIRTIO_BLK_F_GEOMETRY_LBN 4
29956 #define	VIRTIO_BLK_CONFIG_VIRTIO_BLK_F_GEOMETRY_WIDTH 1
29957 #define	VIRTIO_BLK_CONFIG_VIRTIO_BLK_F_RO_OFST 0
29958 #define	VIRTIO_BLK_CONFIG_VIRTIO_BLK_F_RO_LBN 5
29959 #define	VIRTIO_BLK_CONFIG_VIRTIO_BLK_F_RO_WIDTH 1
29960 #define	VIRTIO_BLK_CONFIG_VIRTIO_BLK_F_BLK_SIZE_OFST 0
29961 #define	VIRTIO_BLK_CONFIG_VIRTIO_BLK_F_BLK_SIZE_LBN 6
29962 #define	VIRTIO_BLK_CONFIG_VIRTIO_BLK_F_BLK_SIZE_WIDTH 1
29963 #define	VIRTIO_BLK_CONFIG_VIRTIO_BLK_F_SCSI_OFST 0
29964 #define	VIRTIO_BLK_CONFIG_VIRTIO_BLK_F_SCSI_LBN 7
29965 #define	VIRTIO_BLK_CONFIG_VIRTIO_BLK_F_SCSI_WIDTH 1
29966 #define	VIRTIO_BLK_CONFIG_VIRTIO_BLK_F_FLUSH_OFST 0
29967 #define	VIRTIO_BLK_CONFIG_VIRTIO_BLK_F_FLUSH_LBN 9
29968 #define	VIRTIO_BLK_CONFIG_VIRTIO_BLK_F_FLUSH_WIDTH 1
29969 #define	VIRTIO_BLK_CONFIG_VIRTIO_BLK_F_TOPOLOGY_OFST 0
29970 #define	VIRTIO_BLK_CONFIG_VIRTIO_BLK_F_TOPOLOGY_LBN 10
29971 #define	VIRTIO_BLK_CONFIG_VIRTIO_BLK_F_TOPOLOGY_WIDTH 1
29972 #define	VIRTIO_BLK_CONFIG_VIRTIO_BLK_F_CONFIG_WCE_OFST 0
29973 #define	VIRTIO_BLK_CONFIG_VIRTIO_BLK_F_CONFIG_WCE_LBN 11
29974 #define	VIRTIO_BLK_CONFIG_VIRTIO_BLK_F_CONFIG_WCE_WIDTH 1
29975 #define	VIRTIO_BLK_CONFIG_VIRTIO_BLK_F_MQ_OFST 0
29976 #define	VIRTIO_BLK_CONFIG_VIRTIO_BLK_F_MQ_LBN 12
29977 #define	VIRTIO_BLK_CONFIG_VIRTIO_BLK_F_MQ_WIDTH 1
29978 #define	VIRTIO_BLK_CONFIG_VIRTIO_BLK_F_DISCARD_OFST 0
29979 #define	VIRTIO_BLK_CONFIG_VIRTIO_BLK_F_DISCARD_LBN 13
29980 #define	VIRTIO_BLK_CONFIG_VIRTIO_BLK_F_DISCARD_WIDTH 1
29981 #define	VIRTIO_BLK_CONFIG_VIRTIO_BLK_F_WRITE_ZEROES_OFST 0
29982 #define	VIRTIO_BLK_CONFIG_VIRTIO_BLK_F_WRITE_ZEROES_LBN 14
29983 #define	VIRTIO_BLK_CONFIG_VIRTIO_BLK_F_WRITE_ZEROES_WIDTH 1
29984 #define	VIRTIO_BLK_CONFIG_VIRTIO_F_RING_INDIRECT_DESC_OFST 0
29985 #define	VIRTIO_BLK_CONFIG_VIRTIO_F_RING_INDIRECT_DESC_LBN 28
29986 #define	VIRTIO_BLK_CONFIG_VIRTIO_F_RING_INDIRECT_DESC_WIDTH 1
29987 #define	VIRTIO_BLK_CONFIG_VIRTIO_F_RING_EVENT_IDX_OFST 0
29988 #define	VIRTIO_BLK_CONFIG_VIRTIO_F_RING_EVENT_IDX_LBN 29
29989 #define	VIRTIO_BLK_CONFIG_VIRTIO_F_RING_EVENT_IDX_WIDTH 1
29990 #define	VIRTIO_BLK_CONFIG_VIRTIO_F_VERSION_1_OFST 0
29991 #define	VIRTIO_BLK_CONFIG_VIRTIO_F_VERSION_1_LBN 32
29992 #define	VIRTIO_BLK_CONFIG_VIRTIO_F_VERSION_1_WIDTH 1
29993 #define	VIRTIO_BLK_CONFIG_VIRTIO_F_ACCESS_PLATFORM_OFST 0
29994 #define	VIRTIO_BLK_CONFIG_VIRTIO_F_ACCESS_PLATFORM_LBN 33
29995 #define	VIRTIO_BLK_CONFIG_VIRTIO_F_ACCESS_PLATFORM_WIDTH 1
29996 #define	VIRTIO_BLK_CONFIG_VIRTIO_F_RING_PACKED_OFST 0
29997 #define	VIRTIO_BLK_CONFIG_VIRTIO_F_RING_PACKED_LBN 34
29998 #define	VIRTIO_BLK_CONFIG_VIRTIO_F_RING_PACKED_WIDTH 1
29999 #define	VIRTIO_BLK_CONFIG_VIRTIO_F_IN_ORDER_OFST 0
30000 #define	VIRTIO_BLK_CONFIG_VIRTIO_F_IN_ORDER_LBN 35
30001 #define	VIRTIO_BLK_CONFIG_VIRTIO_F_IN_ORDER_WIDTH 1
30002 #define	VIRTIO_BLK_CONFIG_VIRTIO_F_ORDER_PLATFORM_OFST 0
30003 #define	VIRTIO_BLK_CONFIG_VIRTIO_F_ORDER_PLATFORM_LBN 36
30004 #define	VIRTIO_BLK_CONFIG_VIRTIO_F_ORDER_PLATFORM_WIDTH 1
30005 #define	VIRTIO_BLK_CONFIG_VIRTIO_F_SR_IOV_OFST 0
30006 #define	VIRTIO_BLK_CONFIG_VIRTIO_F_SR_IOV_LBN 37
30007 #define	VIRTIO_BLK_CONFIG_VIRTIO_F_SR_IOV_WIDTH 1
30008 #define	VIRTIO_BLK_CONFIG_VIRTIO_F_NOTIFICATION_DATA_OFST 0
30009 #define	VIRTIO_BLK_CONFIG_VIRTIO_F_NOTIFICATION_DATA_LBN 38
30010 #define	VIRTIO_BLK_CONFIG_VIRTIO_F_NOTIFICATION_DATA_WIDTH 1
30011 #define	VIRTIO_BLK_CONFIG_FEATURES_LBN 0
30012 #define	VIRTIO_BLK_CONFIG_FEATURES_WIDTH 64
30013 /* The capacity of the device (expressed in 512-byte sectors) */
30014 #define	VIRTIO_BLK_CONFIG_CAPACITY_OFST 8
30015 #define	VIRTIO_BLK_CONFIG_CAPACITY_LEN 8
30016 #define	VIRTIO_BLK_CONFIG_CAPACITY_LO_OFST 8
30017 #define	VIRTIO_BLK_CONFIG_CAPACITY_LO_LEN 4
30018 #define	VIRTIO_BLK_CONFIG_CAPACITY_LO_LBN 64
30019 #define	VIRTIO_BLK_CONFIG_CAPACITY_LO_WIDTH 32
30020 #define	VIRTIO_BLK_CONFIG_CAPACITY_HI_OFST 12
30021 #define	VIRTIO_BLK_CONFIG_CAPACITY_HI_LEN 4
30022 #define	VIRTIO_BLK_CONFIG_CAPACITY_HI_LBN 96
30023 #define	VIRTIO_BLK_CONFIG_CAPACITY_HI_WIDTH 32
30024 #define	VIRTIO_BLK_CONFIG_CAPACITY_LBN 64
30025 #define	VIRTIO_BLK_CONFIG_CAPACITY_WIDTH 64
30026 /* Maximum size of any single segment. Only valid when VIRTIO_BLK_F_SIZE_MAX is
30027  * set.
30028  */
30029 #define	VIRTIO_BLK_CONFIG_SIZE_MAX_OFST 16
30030 #define	VIRTIO_BLK_CONFIG_SIZE_MAX_LEN 4
30031 #define	VIRTIO_BLK_CONFIG_SIZE_MAX_LBN 128
30032 #define	VIRTIO_BLK_CONFIG_SIZE_MAX_WIDTH 32
30033 /* Maximum number of segments in a request. Only valid when
30034  * VIRTIO_BLK_F_SEG_MAX is set.
30035  */
30036 #define	VIRTIO_BLK_CONFIG_SEG_MAX_OFST 20
30037 #define	VIRTIO_BLK_CONFIG_SEG_MAX_LEN 4
30038 #define	VIRTIO_BLK_CONFIG_SEG_MAX_LBN 160
30039 #define	VIRTIO_BLK_CONFIG_SEG_MAX_WIDTH 32
30040 /* Disk-style geometry - cylinders. Only valid when VIRTIO_BLK_F_GEOMETRY is
30041  * set.
30042  */
30043 #define	VIRTIO_BLK_CONFIG_CYLINDERS_OFST 24
30044 #define	VIRTIO_BLK_CONFIG_CYLINDERS_LEN 2
30045 #define	VIRTIO_BLK_CONFIG_CYLINDERS_LBN 192
30046 #define	VIRTIO_BLK_CONFIG_CYLINDERS_WIDTH 16
30047 /* Disk-style geometry - heads. Only valid when VIRTIO_BLK_F_GEOMETRY is set.
30048  */
30049 #define	VIRTIO_BLK_CONFIG_HEADS_OFST 26
30050 #define	VIRTIO_BLK_CONFIG_HEADS_LEN 1
30051 #define	VIRTIO_BLK_CONFIG_HEADS_LBN 208
30052 #define	VIRTIO_BLK_CONFIG_HEADS_WIDTH 8
30053 /* Disk-style geometry - sectors. Only valid when VIRTIO_BLK_F_GEOMETRY is set.
30054  */
30055 #define	VIRTIO_BLK_CONFIG_SECTORS_OFST 27
30056 #define	VIRTIO_BLK_CONFIG_SECTORS_LEN 1
30057 #define	VIRTIO_BLK_CONFIG_SECTORS_LBN 216
30058 #define	VIRTIO_BLK_CONFIG_SECTORS_WIDTH 8
30059 /* Block size of disk. Only valid when VIRTIO_BLK_F_BLK_SIZE is set. */
30060 #define	VIRTIO_BLK_CONFIG_BLK_SIZE_OFST 28
30061 #define	VIRTIO_BLK_CONFIG_BLK_SIZE_LEN 4
30062 #define	VIRTIO_BLK_CONFIG_BLK_SIZE_LBN 224
30063 #define	VIRTIO_BLK_CONFIG_BLK_SIZE_WIDTH 32
30064 /* Block topology - number of logical blocks per physical block (log2). Only
30065  * valid when VIRTIO_BLK_F_TOPOLOGY is set.
30066  */
30067 #define	VIRTIO_BLK_CONFIG_PHYSICAL_BLOCK_EXP_OFST 32
30068 #define	VIRTIO_BLK_CONFIG_PHYSICAL_BLOCK_EXP_LEN 1
30069 #define	VIRTIO_BLK_CONFIG_PHYSICAL_BLOCK_EXP_LBN 256
30070 #define	VIRTIO_BLK_CONFIG_PHYSICAL_BLOCK_EXP_WIDTH 8
30071 /* Block topology - offset of first aligned logical block. Only valid when
30072  * VIRTIO_BLK_F_TOPOLOGY is set.
30073  */
30074 #define	VIRTIO_BLK_CONFIG_ALIGNMENT_OFFSET_OFST 33
30075 #define	VIRTIO_BLK_CONFIG_ALIGNMENT_OFFSET_LEN 1
30076 #define	VIRTIO_BLK_CONFIG_ALIGNMENT_OFFSET_LBN 264
30077 #define	VIRTIO_BLK_CONFIG_ALIGNMENT_OFFSET_WIDTH 8
30078 /* Block topology - suggested minimum I/O size in blocks. Only valid when
30079  * VIRTIO_BLK_F_TOPOLOGY is set.
30080  */
30081 #define	VIRTIO_BLK_CONFIG_MIN_IO_SIZE_OFST 34
30082 #define	VIRTIO_BLK_CONFIG_MIN_IO_SIZE_LEN 2
30083 #define	VIRTIO_BLK_CONFIG_MIN_IO_SIZE_LBN 272
30084 #define	VIRTIO_BLK_CONFIG_MIN_IO_SIZE_WIDTH 16
30085 /* Block topology - optimal (suggested maximum) I/O size in blocks. Only valid
30086  * when VIRTIO_BLK_F_TOPOLOGY is set.
30087  */
30088 #define	VIRTIO_BLK_CONFIG_OPT_IO_SIZE_OFST 36
30089 #define	VIRTIO_BLK_CONFIG_OPT_IO_SIZE_LEN 4
30090 #define	VIRTIO_BLK_CONFIG_OPT_IO_SIZE_LBN 288
30091 #define	VIRTIO_BLK_CONFIG_OPT_IO_SIZE_WIDTH 32
30092 /* Unused, set to zero. Note that virtio_blk_config.writeback is volatile and
30093  * not carried in config data.
30094  */
30095 #define	VIRTIO_BLK_CONFIG_UNUSED0_OFST 40
30096 #define	VIRTIO_BLK_CONFIG_UNUSED0_LEN 2
30097 #define	VIRTIO_BLK_CONFIG_UNUSED0_LBN 320
30098 #define	VIRTIO_BLK_CONFIG_UNUSED0_WIDTH 16
30099 /* Number of queues. Only valid if the VIRTIO_BLK_F_MQ feature is negotiated.
30100  */
30101 #define	VIRTIO_BLK_CONFIG_NUM_QUEUES_OFST 42
30102 #define	VIRTIO_BLK_CONFIG_NUM_QUEUES_LEN 2
30103 #define	VIRTIO_BLK_CONFIG_NUM_QUEUES_LBN 336
30104 #define	VIRTIO_BLK_CONFIG_NUM_QUEUES_WIDTH 16
30105 /* Maximum discard sectors size, in 512-byte units. Only valid if
30106  * VIRTIO_BLK_F_DISCARD is set.
30107  */
30108 #define	VIRTIO_BLK_CONFIG_MAX_DISCARD_SECTORS_OFST 44
30109 #define	VIRTIO_BLK_CONFIG_MAX_DISCARD_SECTORS_LEN 4
30110 #define	VIRTIO_BLK_CONFIG_MAX_DISCARD_SECTORS_LBN 352
30111 #define	VIRTIO_BLK_CONFIG_MAX_DISCARD_SECTORS_WIDTH 32
30112 /* Maximum discard segment number. Only valid if VIRTIO_BLK_F_DISCARD is set.
30113  */
30114 #define	VIRTIO_BLK_CONFIG_MAX_DISCARD_SEG_OFST 48
30115 #define	VIRTIO_BLK_CONFIG_MAX_DISCARD_SEG_LEN 4
30116 #define	VIRTIO_BLK_CONFIG_MAX_DISCARD_SEG_LBN 384
30117 #define	VIRTIO_BLK_CONFIG_MAX_DISCARD_SEG_WIDTH 32
30118 /* Discard sector alignment, in 512-byte units. Only valid if
30119  * VIRTIO_BLK_F_DISCARD is set.
30120  */
30121 #define	VIRTIO_BLK_CONFIG_DISCARD_SECTOR_ALIGNMENT_OFST 52
30122 #define	VIRTIO_BLK_CONFIG_DISCARD_SECTOR_ALIGNMENT_LEN 4
30123 #define	VIRTIO_BLK_CONFIG_DISCARD_SECTOR_ALIGNMENT_LBN 416
30124 #define	VIRTIO_BLK_CONFIG_DISCARD_SECTOR_ALIGNMENT_WIDTH 32
30125 /* Maximum write zeroes sectors size, in 512-byte units. Only valid if
30126  * VIRTIO_BLK_F_WRITE_ZEROES is set.
30127  */
30128 #define	VIRTIO_BLK_CONFIG_MAX_WRITE_ZEROES_SECTORS_OFST 56
30129 #define	VIRTIO_BLK_CONFIG_MAX_WRITE_ZEROES_SECTORS_LEN 4
30130 #define	VIRTIO_BLK_CONFIG_MAX_WRITE_ZEROES_SECTORS_LBN 448
30131 #define	VIRTIO_BLK_CONFIG_MAX_WRITE_ZEROES_SECTORS_WIDTH 32
30132 /* Maximum write zeroes segment number. Only valid if VIRTIO_BLK_F_WRITE_ZEROES
30133  * is set.
30134  */
30135 #define	VIRTIO_BLK_CONFIG_MAX_WRITE_ZEROES_SEG_OFST 60
30136 #define	VIRTIO_BLK_CONFIG_MAX_WRITE_ZEROES_SEG_LEN 4
30137 #define	VIRTIO_BLK_CONFIG_MAX_WRITE_ZEROES_SEG_LBN 480
30138 #define	VIRTIO_BLK_CONFIG_MAX_WRITE_ZEROES_SEG_WIDTH 32
30139 /* Write zeroes request can result in deallocating one or more sectors. Only
30140  * valid if VIRTIO_BLK_F_WRITE_ZEROES is set.
30141  */
30142 #define	VIRTIO_BLK_CONFIG_WRITE_ZEROES_MAY_UNMAP_OFST 64
30143 #define	VIRTIO_BLK_CONFIG_WRITE_ZEROES_MAY_UNMAP_LEN 1
30144 #define	VIRTIO_BLK_CONFIG_WRITE_ZEROES_MAY_UNMAP_LBN 512
30145 #define	VIRTIO_BLK_CONFIG_WRITE_ZEROES_MAY_UNMAP_WIDTH 8
30146 /* Unused, set to zero. */
30147 #define	VIRTIO_BLK_CONFIG_UNUSED1_OFST 65
30148 #define	VIRTIO_BLK_CONFIG_UNUSED1_LEN 3
30149 #define	VIRTIO_BLK_CONFIG_UNUSED1_LBN 520
30150 #define	VIRTIO_BLK_CONFIG_UNUSED1_WIDTH 24
30151 
30152 
30153 /***********************************/
30154 /* MC_CMD_DESC_PROXY_FUNC_CONFIG_SET
30155  * Set configuration for an existing descriptor proxy function. Configuration
30156  * data must match function personality. The actual function configuration is
30157  * not persisted until the caller commits with MC_CMD_DESC_PROXY_FUNC_COMMIT_IN
30158  */
30159 #define	MC_CMD_DESC_PROXY_FUNC_CONFIG_SET 0x174
30160 #define	MC_CMD_DESC_PROXY_FUNC_CONFIG_SET_MSGSET 0x174
30161 #undef	MC_CMD_0x174_PRIVILEGE_CTG
30162 
30163 #define	MC_CMD_0x174_PRIVILEGE_CTG SRIOV_CTG_ADMIN
30164 
30165 /* MC_CMD_DESC_PROXY_FUNC_CONFIG_SET_IN msgrequest */
30166 #define	MC_CMD_DESC_PROXY_FUNC_CONFIG_SET_IN_LENMIN 20
30167 #define	MC_CMD_DESC_PROXY_FUNC_CONFIG_SET_IN_LENMAX 252
30168 #define	MC_CMD_DESC_PROXY_FUNC_CONFIG_SET_IN_LENMAX_MCDI2 1020
30169 #define	MC_CMD_DESC_PROXY_FUNC_CONFIG_SET_IN_LEN(num) (20+1*(num))
30170 #define	MC_CMD_DESC_PROXY_FUNC_CONFIG_SET_IN_CONFIG_NUM(len) (((len)-20)/1)
30171 /* Handle to descriptor proxy function (as returned by
30172  * MC_CMD_DESC_PROXY_FUNC_OPEN)
30173  */
30174 #define	MC_CMD_DESC_PROXY_FUNC_CONFIG_SET_IN_HANDLE_OFST 0
30175 #define	MC_CMD_DESC_PROXY_FUNC_CONFIG_SET_IN_HANDLE_LEN 4
30176 /* Reserved for future extension, set to zero. */
30177 #define	MC_CMD_DESC_PROXY_FUNC_CONFIG_SET_IN_RESERVED_OFST 4
30178 #define	MC_CMD_DESC_PROXY_FUNC_CONFIG_SET_IN_RESERVED_LEN 16
30179 /* Configuration data. Format of configuration data is determined implicitly
30180  * from function personality referred to by HANDLE. Currently, only supported
30181  * format is VIRTIO_BLK_CONFIG.
30182  */
30183 #define	MC_CMD_DESC_PROXY_FUNC_CONFIG_SET_IN_CONFIG_OFST 20
30184 #define	MC_CMD_DESC_PROXY_FUNC_CONFIG_SET_IN_CONFIG_LEN 1
30185 #define	MC_CMD_DESC_PROXY_FUNC_CONFIG_SET_IN_CONFIG_MINNUM 0
30186 #define	MC_CMD_DESC_PROXY_FUNC_CONFIG_SET_IN_CONFIG_MAXNUM 232
30187 #define	MC_CMD_DESC_PROXY_FUNC_CONFIG_SET_IN_CONFIG_MAXNUM_MCDI2 1000
30188 
30189 /* MC_CMD_DESC_PROXY_FUNC_CONFIG_SET_OUT msgresponse */
30190 #define	MC_CMD_DESC_PROXY_FUNC_CONFIG_SET_OUT_LEN 0
30191 
30192 
30193 /***********************************/
30194 /* MC_CMD_DESC_PROXY_FUNC_COMMIT
30195  * Commit function configuration to non-volatile or volatile store. Once
30196  * configuration is applied to hardware (which may happen immediately or on
30197  * next function/device reset) a DESC_PROXY_FUNC_CONFIG_SET MCDI event will be
30198  * delivered to callers MCDI event queue.
30199  */
30200 #define	MC_CMD_DESC_PROXY_FUNC_COMMIT 0x175
30201 #define	MC_CMD_DESC_PROXY_FUNC_COMMIT_MSGSET 0x175
30202 #undef	MC_CMD_0x175_PRIVILEGE_CTG
30203 
30204 #define	MC_CMD_0x175_PRIVILEGE_CTG SRIOV_CTG_ADMIN
30205 
30206 /* MC_CMD_DESC_PROXY_FUNC_COMMIT_IN msgrequest */
30207 #define	MC_CMD_DESC_PROXY_FUNC_COMMIT_IN_LEN 8
30208 /* Handle to descriptor proxy function (as returned by
30209  * MC_CMD_DESC_PROXY_FUNC_OPEN)
30210  */
30211 #define	MC_CMD_DESC_PROXY_FUNC_COMMIT_IN_HANDLE_OFST 0
30212 #define	MC_CMD_DESC_PROXY_FUNC_COMMIT_IN_HANDLE_LEN 4
30213 #define	MC_CMD_DESC_PROXY_FUNC_COMMIT_IN_STORE_OFST 4
30214 #define	MC_CMD_DESC_PROXY_FUNC_COMMIT_IN_STORE_LEN 4
30215 /* enum: Store into non-volatile (dynamic) config */
30216 #define	MC_CMD_DESC_PROXY_FUNC_COMMIT_IN_NON_VOLATILE 0x0
30217 /* enum: Store into volatile (ephemeral) config */
30218 #define	MC_CMD_DESC_PROXY_FUNC_COMMIT_IN_VOLATILE 0x1
30219 
30220 /* MC_CMD_DESC_PROXY_FUNC_COMMIT_OUT msgresponse */
30221 #define	MC_CMD_DESC_PROXY_FUNC_COMMIT_OUT_LEN 4
30222 /* Generation count to be delivered in an event once configuration becomes live
30223  */
30224 #define	MC_CMD_DESC_PROXY_FUNC_COMMIT_OUT_CONFIG_GENERATION_OFST 0
30225 #define	MC_CMD_DESC_PROXY_FUNC_COMMIT_OUT_CONFIG_GENERATION_LEN 4
30226 
30227 
30228 /***********************************/
30229 /* MC_CMD_DESC_PROXY_FUNC_OPEN
30230  * Retrieve a handle for an existing descriptor proxy function. Returns an
30231  * integer handle, valid until function is deallocated, MC rebooted or power-
30232  * cycle. Returns ENODEV if no function with given label exists.
30233  */
30234 #define	MC_CMD_DESC_PROXY_FUNC_OPEN 0x176
30235 #define	MC_CMD_DESC_PROXY_FUNC_OPEN_MSGSET 0x176
30236 #undef	MC_CMD_0x176_PRIVILEGE_CTG
30237 
30238 #define	MC_CMD_0x176_PRIVILEGE_CTG SRIOV_CTG_ADMIN
30239 
30240 /* MC_CMD_DESC_PROXY_FUNC_OPEN_IN msgrequest */
30241 #define	MC_CMD_DESC_PROXY_FUNC_OPEN_IN_LEN 40
30242 /* User-defined label (zero-terminated ASCII string) to uniquely identify the
30243  * function
30244  */
30245 #define	MC_CMD_DESC_PROXY_FUNC_OPEN_IN_LABEL_OFST 0
30246 #define	MC_CMD_DESC_PROXY_FUNC_OPEN_IN_LABEL_LEN 40
30247 
30248 /* MC_CMD_DESC_PROXY_FUNC_OPEN_OUT msgresponse */
30249 #define	MC_CMD_DESC_PROXY_FUNC_OPEN_OUT_LENMIN 40
30250 #define	MC_CMD_DESC_PROXY_FUNC_OPEN_OUT_LENMAX 252
30251 #define	MC_CMD_DESC_PROXY_FUNC_OPEN_OUT_LENMAX_MCDI2 1020
30252 #define	MC_CMD_DESC_PROXY_FUNC_OPEN_OUT_LEN(num) (40+1*(num))
30253 #define	MC_CMD_DESC_PROXY_FUNC_OPEN_OUT_CONFIG_NUM(len) (((len)-40)/1)
30254 /* Handle to the descriptor proxy function */
30255 #define	MC_CMD_DESC_PROXY_FUNC_OPEN_OUT_HANDLE_OFST 0
30256 #define	MC_CMD_DESC_PROXY_FUNC_OPEN_OUT_HANDLE_LEN 4
30257 /* PCIe Function ID (as struct PCIE_FUNCTION) */
30258 #define	MC_CMD_DESC_PROXY_FUNC_OPEN_OUT_FUNC_OFST 4
30259 #define	MC_CMD_DESC_PROXY_FUNC_OPEN_OUT_FUNC_LEN 8
30260 #define	MC_CMD_DESC_PROXY_FUNC_OPEN_OUT_FUNC_LO_OFST 4
30261 #define	MC_CMD_DESC_PROXY_FUNC_OPEN_OUT_FUNC_LO_LEN 4
30262 #define	MC_CMD_DESC_PROXY_FUNC_OPEN_OUT_FUNC_LO_LBN 32
30263 #define	MC_CMD_DESC_PROXY_FUNC_OPEN_OUT_FUNC_LO_WIDTH 32
30264 #define	MC_CMD_DESC_PROXY_FUNC_OPEN_OUT_FUNC_HI_OFST 8
30265 #define	MC_CMD_DESC_PROXY_FUNC_OPEN_OUT_FUNC_HI_LEN 4
30266 #define	MC_CMD_DESC_PROXY_FUNC_OPEN_OUT_FUNC_HI_LBN 64
30267 #define	MC_CMD_DESC_PROXY_FUNC_OPEN_OUT_FUNC_HI_WIDTH 32
30268 /* See structuredef: PCIE_FUNCTION */
30269 #define	MC_CMD_DESC_PROXY_FUNC_OPEN_OUT_FUNC_PF_OFST 4
30270 #define	MC_CMD_DESC_PROXY_FUNC_OPEN_OUT_FUNC_PF_LEN 2
30271 #define	MC_CMD_DESC_PROXY_FUNC_OPEN_OUT_FUNC_VF_OFST 6
30272 #define	MC_CMD_DESC_PROXY_FUNC_OPEN_OUT_FUNC_VF_LEN 2
30273 #define	MC_CMD_DESC_PROXY_FUNC_OPEN_OUT_FUNC_INTF_OFST 8
30274 #define	MC_CMD_DESC_PROXY_FUNC_OPEN_OUT_FUNC_INTF_LEN 4
30275 /* Function personality */
30276 #define	MC_CMD_DESC_PROXY_FUNC_OPEN_OUT_PERSONALITY_OFST 12
30277 #define	MC_CMD_DESC_PROXY_FUNC_OPEN_OUT_PERSONALITY_LEN 4
30278 /*            Enum values, see field(s): */
30279 /*               FUNCTION_PERSONALITY/ID */
30280 /* Function configuration state */
30281 #define	MC_CMD_DESC_PROXY_FUNC_OPEN_OUT_CONFIG_STATUS_OFST 16
30282 #define	MC_CMD_DESC_PROXY_FUNC_OPEN_OUT_CONFIG_STATUS_LEN 4
30283 /* enum: Function configuration is visible to the host (live) */
30284 #define	MC_CMD_DESC_PROXY_FUNC_OPEN_OUT_LIVE 0x0
30285 /* enum: Function configuration is pending reset */
30286 #define	MC_CMD_DESC_PROXY_FUNC_OPEN_OUT_PENDING 0x1
30287 /* enum: Function configuration is missing (created, but no configuration
30288  * committed)
30289  */
30290 #define	MC_CMD_DESC_PROXY_FUNC_OPEN_OUT_UNCONFIGURED 0x2
30291 /* Generation count to be delivered in an event once the configuration becomes
30292  * live (if status is "pending")
30293  */
30294 #define	MC_CMD_DESC_PROXY_FUNC_OPEN_OUT_CONFIG_GENERATION_OFST 20
30295 #define	MC_CMD_DESC_PROXY_FUNC_OPEN_OUT_CONFIG_GENERATION_LEN 4
30296 /* Reserved for future extension, set to zero. */
30297 #define	MC_CMD_DESC_PROXY_FUNC_OPEN_OUT_RESERVED_OFST 24
30298 #define	MC_CMD_DESC_PROXY_FUNC_OPEN_OUT_RESERVED_LEN 16
30299 /* Configuration data corresponding to function personality. Currently, only
30300  * supported format is VIRTIO_BLK_CONFIG. Not valid if status is UNCONFIGURED.
30301  */
30302 #define	MC_CMD_DESC_PROXY_FUNC_OPEN_OUT_CONFIG_OFST 40
30303 #define	MC_CMD_DESC_PROXY_FUNC_OPEN_OUT_CONFIG_LEN 1
30304 #define	MC_CMD_DESC_PROXY_FUNC_OPEN_OUT_CONFIG_MINNUM 0
30305 #define	MC_CMD_DESC_PROXY_FUNC_OPEN_OUT_CONFIG_MAXNUM 212
30306 #define	MC_CMD_DESC_PROXY_FUNC_OPEN_OUT_CONFIG_MAXNUM_MCDI2 980
30307 
30308 
30309 /***********************************/
30310 /* MC_CMD_DESC_PROXY_FUNC_CLOSE
30311  * Releases a handle for an open descriptor proxy function. If proxying was
30312  * enabled on the device, the caller is expected to gracefully stop it using
30313  * MC_CMD_DESC_PROXY_FUNC_DISABLE prior to calling this function. Closing an
30314  * active device without disabling proxying will result in forced close, which
30315  * will put the device into a failed state and signal the host driver of the
30316  * error (for virtio, DEVICE_NEEDS_RESET flag would be set on the host side)
30317  */
30318 #define	MC_CMD_DESC_PROXY_FUNC_CLOSE 0x1a1
30319 #define	MC_CMD_DESC_PROXY_FUNC_CLOSE_MSGSET 0x1a1
30320 #undef	MC_CMD_0x1a1_PRIVILEGE_CTG
30321 
30322 #define	MC_CMD_0x1a1_PRIVILEGE_CTG SRIOV_CTG_ADMIN
30323 
30324 /* MC_CMD_DESC_PROXY_FUNC_CLOSE_IN msgrequest */
30325 #define	MC_CMD_DESC_PROXY_FUNC_CLOSE_IN_LEN 4
30326 /* Handle to the descriptor proxy function */
30327 #define	MC_CMD_DESC_PROXY_FUNC_CLOSE_IN_HANDLE_OFST 0
30328 #define	MC_CMD_DESC_PROXY_FUNC_CLOSE_IN_HANDLE_LEN 4
30329 
30330 /* MC_CMD_DESC_PROXY_FUNC_CLOSE_OUT msgresponse */
30331 #define	MC_CMD_DESC_PROXY_FUNC_CLOSE_OUT_LEN 0
30332 
30333 /* DESC_PROXY_FUNC_MAP structuredef */
30334 #define	DESC_PROXY_FUNC_MAP_LEN 52
30335 /* PCIe function ID (as struct PCIE_FUNCTION) */
30336 #define	DESC_PROXY_FUNC_MAP_FUNC_OFST 0
30337 #define	DESC_PROXY_FUNC_MAP_FUNC_LEN 8
30338 #define	DESC_PROXY_FUNC_MAP_FUNC_LO_OFST 0
30339 #define	DESC_PROXY_FUNC_MAP_FUNC_LO_LEN 4
30340 #define	DESC_PROXY_FUNC_MAP_FUNC_LO_LBN 0
30341 #define	DESC_PROXY_FUNC_MAP_FUNC_LO_WIDTH 32
30342 #define	DESC_PROXY_FUNC_MAP_FUNC_HI_OFST 4
30343 #define	DESC_PROXY_FUNC_MAP_FUNC_HI_LEN 4
30344 #define	DESC_PROXY_FUNC_MAP_FUNC_HI_LBN 32
30345 #define	DESC_PROXY_FUNC_MAP_FUNC_HI_WIDTH 32
30346 #define	DESC_PROXY_FUNC_MAP_FUNC_LBN 0
30347 #define	DESC_PROXY_FUNC_MAP_FUNC_WIDTH 64
30348 /* See structuredef: PCIE_FUNCTION */
30349 #define	DESC_PROXY_FUNC_MAP_FUNC_PF_OFST 0
30350 #define	DESC_PROXY_FUNC_MAP_FUNC_PF_LEN 2
30351 #define	DESC_PROXY_FUNC_MAP_FUNC_PF_LBN 0
30352 #define	DESC_PROXY_FUNC_MAP_FUNC_PF_WIDTH 16
30353 #define	DESC_PROXY_FUNC_MAP_FUNC_VF_OFST 2
30354 #define	DESC_PROXY_FUNC_MAP_FUNC_VF_LEN 2
30355 #define	DESC_PROXY_FUNC_MAP_FUNC_VF_LBN 16
30356 #define	DESC_PROXY_FUNC_MAP_FUNC_VF_WIDTH 16
30357 #define	DESC_PROXY_FUNC_MAP_FUNC_INTF_OFST 4
30358 #define	DESC_PROXY_FUNC_MAP_FUNC_INTF_LEN 4
30359 #define	DESC_PROXY_FUNC_MAP_FUNC_INTF_LBN 32
30360 #define	DESC_PROXY_FUNC_MAP_FUNC_INTF_WIDTH 32
30361 /* Function personality */
30362 #define	DESC_PROXY_FUNC_MAP_PERSONALITY_OFST 8
30363 #define	DESC_PROXY_FUNC_MAP_PERSONALITY_LEN 4
30364 /*            Enum values, see field(s): */
30365 /*               FUNCTION_PERSONALITY/ID */
30366 #define	DESC_PROXY_FUNC_MAP_PERSONALITY_LBN 64
30367 #define	DESC_PROXY_FUNC_MAP_PERSONALITY_WIDTH 32
30368 /* User-defined label (zero-terminated ASCII string) to uniquely identify the
30369  * function
30370  */
30371 #define	DESC_PROXY_FUNC_MAP_LABEL_OFST 12
30372 #define	DESC_PROXY_FUNC_MAP_LABEL_LEN 40
30373 #define	DESC_PROXY_FUNC_MAP_LABEL_LBN 96
30374 #define	DESC_PROXY_FUNC_MAP_LABEL_WIDTH 320
30375 
30376 
30377 /***********************************/
30378 /* MC_CMD_DESC_PROXY_FUNC_ENUM
30379  * Enumerate existing descriptor proxy functions
30380  */
30381 #define	MC_CMD_DESC_PROXY_FUNC_ENUM 0x177
30382 #define	MC_CMD_DESC_PROXY_FUNC_ENUM_MSGSET 0x177
30383 #undef	MC_CMD_0x177_PRIVILEGE_CTG
30384 
30385 #define	MC_CMD_0x177_PRIVILEGE_CTG SRIOV_CTG_ADMIN
30386 
30387 /* MC_CMD_DESC_PROXY_FUNC_ENUM_IN msgrequest */
30388 #define	MC_CMD_DESC_PROXY_FUNC_ENUM_IN_LEN 4
30389 /* Starting index, set to 0 on first request. See
30390  * MC_CMD_DESC_PROXY_FUNC_ENUM_OUT/FLAGS.
30391  */
30392 #define	MC_CMD_DESC_PROXY_FUNC_ENUM_IN_START_IDX_OFST 0
30393 #define	MC_CMD_DESC_PROXY_FUNC_ENUM_IN_START_IDX_LEN 4
30394 
30395 /* MC_CMD_DESC_PROXY_FUNC_ENUM_OUT msgresponse */
30396 #define	MC_CMD_DESC_PROXY_FUNC_ENUM_OUT_LENMIN 4
30397 #define	MC_CMD_DESC_PROXY_FUNC_ENUM_OUT_LENMAX 212
30398 #define	MC_CMD_DESC_PROXY_FUNC_ENUM_OUT_LENMAX_MCDI2 992
30399 #define	MC_CMD_DESC_PROXY_FUNC_ENUM_OUT_LEN(num) (4+52*(num))
30400 #define	MC_CMD_DESC_PROXY_FUNC_ENUM_OUT_FUNC_MAP_NUM(len) (((len)-4)/52)
30401 #define	MC_CMD_DESC_PROXY_FUNC_ENUM_OUT_FLAGS_OFST 0
30402 #define	MC_CMD_DESC_PROXY_FUNC_ENUM_OUT_FLAGS_LEN 4
30403 #define	MC_CMD_DESC_PROXY_FUNC_ENUM_OUT_MORE_DATA_OFST 0
30404 #define	MC_CMD_DESC_PROXY_FUNC_ENUM_OUT_MORE_DATA_LBN 0
30405 #define	MC_CMD_DESC_PROXY_FUNC_ENUM_OUT_MORE_DATA_WIDTH 1
30406 /* Function map, as array of DESC_PROXY_FUNC_MAP */
30407 #define	MC_CMD_DESC_PROXY_FUNC_ENUM_OUT_FUNC_MAP_OFST 4
30408 #define	MC_CMD_DESC_PROXY_FUNC_ENUM_OUT_FUNC_MAP_LEN 52
30409 #define	MC_CMD_DESC_PROXY_FUNC_ENUM_OUT_FUNC_MAP_MINNUM 0
30410 #define	MC_CMD_DESC_PROXY_FUNC_ENUM_OUT_FUNC_MAP_MAXNUM 4
30411 #define	MC_CMD_DESC_PROXY_FUNC_ENUM_OUT_FUNC_MAP_MAXNUM_MCDI2 19
30412 /* See structuredef: DESC_PROXY_FUNC_MAP */
30413 #define	MC_CMD_DESC_PROXY_FUNC_ENUM_OUT_FUNC_MAP_FUNC_OFST 4
30414 #define	MC_CMD_DESC_PROXY_FUNC_ENUM_OUT_FUNC_MAP_FUNC_LEN 8
30415 #define	MC_CMD_DESC_PROXY_FUNC_ENUM_OUT_FUNC_MAP_FUNC_LO_OFST 4
30416 #define	MC_CMD_DESC_PROXY_FUNC_ENUM_OUT_FUNC_MAP_FUNC_LO_LEN 4
30417 #define	MC_CMD_DESC_PROXY_FUNC_ENUM_OUT_FUNC_MAP_FUNC_LO_LBN 32
30418 #define	MC_CMD_DESC_PROXY_FUNC_ENUM_OUT_FUNC_MAP_FUNC_LO_WIDTH 32
30419 #define	MC_CMD_DESC_PROXY_FUNC_ENUM_OUT_FUNC_MAP_FUNC_HI_OFST 8
30420 #define	MC_CMD_DESC_PROXY_FUNC_ENUM_OUT_FUNC_MAP_FUNC_HI_LEN 4
30421 #define	MC_CMD_DESC_PROXY_FUNC_ENUM_OUT_FUNC_MAP_FUNC_HI_LBN 64
30422 #define	MC_CMD_DESC_PROXY_FUNC_ENUM_OUT_FUNC_MAP_FUNC_HI_WIDTH 32
30423 #define	MC_CMD_DESC_PROXY_FUNC_ENUM_OUT_FUNC_MAP_FUNC_PF_OFST 4
30424 #define	MC_CMD_DESC_PROXY_FUNC_ENUM_OUT_FUNC_MAP_FUNC_PF_LEN 2
30425 #define	MC_CMD_DESC_PROXY_FUNC_ENUM_OUT_FUNC_MAP_FUNC_VF_OFST 6
30426 #define	MC_CMD_DESC_PROXY_FUNC_ENUM_OUT_FUNC_MAP_FUNC_VF_LEN 2
30427 #define	MC_CMD_DESC_PROXY_FUNC_ENUM_OUT_FUNC_MAP_FUNC_INTF_OFST 8
30428 #define	MC_CMD_DESC_PROXY_FUNC_ENUM_OUT_FUNC_MAP_FUNC_INTF_LEN 4
30429 #define	MC_CMD_DESC_PROXY_FUNC_ENUM_OUT_FUNC_MAP_PERSONALITY_OFST 12
30430 #define	MC_CMD_DESC_PROXY_FUNC_ENUM_OUT_FUNC_MAP_PERSONALITY_LEN 4
30431 #define	MC_CMD_DESC_PROXY_FUNC_ENUM_OUT_FUNC_MAP_LABEL_OFST 16
30432 #define	MC_CMD_DESC_PROXY_FUNC_ENUM_OUT_FUNC_MAP_LABEL_LEN 40
30433 
30434 
30435 /***********************************/
30436 /* MC_CMD_DESC_PROXY_FUNC_ENABLE
30437  * Enable descriptor proxying for function into target event queue. Returns VI
30438  * allocation info for the proxy source function, so that the caller can map
30439  * absolute VI IDs from descriptor proxy events back to the originating
30440  * function. This is a legacy function that only supports single queue proxy
30441  * devices. It is also limited in that it can only be called after host driver
30442  * attach (once VI allocation is known) and will return MC_CMD_ERR_ENOTCONN
30443  * otherwise. For new code, see MC_CMD_DESC_PROXY_FUNC_ENABLE_QUEUE which
30444  * supports multi-queue devices and has no dependency on host driver attach.
30445  */
30446 #define	MC_CMD_DESC_PROXY_FUNC_ENABLE 0x178
30447 #define	MC_CMD_DESC_PROXY_FUNC_ENABLE_MSGSET 0x178
30448 #undef	MC_CMD_0x178_PRIVILEGE_CTG
30449 
30450 #define	MC_CMD_0x178_PRIVILEGE_CTG SRIOV_CTG_ADMIN
30451 
30452 /* MC_CMD_DESC_PROXY_FUNC_ENABLE_IN msgrequest */
30453 #define	MC_CMD_DESC_PROXY_FUNC_ENABLE_IN_LEN 8
30454 /* Handle to descriptor proxy function (as returned by
30455  * MC_CMD_DESC_PROXY_FUNC_OPEN)
30456  */
30457 #define	MC_CMD_DESC_PROXY_FUNC_ENABLE_IN_HANDLE_OFST 0
30458 #define	MC_CMD_DESC_PROXY_FUNC_ENABLE_IN_HANDLE_LEN 4
30459 /* Descriptor proxy sink queue (caller function relative). Must be extended
30460  * width event queue
30461  */
30462 #define	MC_CMD_DESC_PROXY_FUNC_ENABLE_IN_TARGET_EVQ_OFST 4
30463 #define	MC_CMD_DESC_PROXY_FUNC_ENABLE_IN_TARGET_EVQ_LEN 4
30464 
30465 /* MC_CMD_DESC_PROXY_FUNC_ENABLE_OUT msgresponse */
30466 #define	MC_CMD_DESC_PROXY_FUNC_ENABLE_OUT_LEN 8
30467 /* The number of VIs allocated on the function */
30468 #define	MC_CMD_DESC_PROXY_FUNC_ENABLE_OUT_VI_COUNT_OFST 0
30469 #define	MC_CMD_DESC_PROXY_FUNC_ENABLE_OUT_VI_COUNT_LEN 4
30470 /* The base absolute VI number allocated to the function. */
30471 #define	MC_CMD_DESC_PROXY_FUNC_ENABLE_OUT_VI_BASE_OFST 4
30472 #define	MC_CMD_DESC_PROXY_FUNC_ENABLE_OUT_VI_BASE_LEN 4
30473 
30474 
30475 /***********************************/
30476 /* MC_CMD_DESC_PROXY_FUNC_ENABLE_QUEUE
30477  * Enable descriptor proxying for a source queue on a host function into target
30478  * event queue. Source queue number is a relative virtqueue number on the
30479  * source function (0 to max_virtqueues-1). For a multi-queue device, the
30480  * caller must enable all source queues individually. To retrieve absolute VI
30481  * information for the source function (so that VI IDs from descriptor proxy
30482  * events can be mapped back to source function / queue) see
30483  * MC_CMD_DESC_PROXY_FUNC_GET_VI_INFO
30484  */
30485 #define	MC_CMD_DESC_PROXY_FUNC_ENABLE_QUEUE 0x1d0
30486 #define	MC_CMD_DESC_PROXY_FUNC_ENABLE_QUEUE_MSGSET 0x1d0
30487 #undef	MC_CMD_0x1d0_PRIVILEGE_CTG
30488 
30489 #define	MC_CMD_0x1d0_PRIVILEGE_CTG SRIOV_CTG_ADMIN
30490 
30491 /* MC_CMD_DESC_PROXY_FUNC_ENABLE_QUEUE_IN msgrequest */
30492 #define	MC_CMD_DESC_PROXY_FUNC_ENABLE_QUEUE_IN_LEN 12
30493 /* Handle to descriptor proxy function (as returned by
30494  * MC_CMD_DESC_PROXY_FUNC_OPEN)
30495  */
30496 #define	MC_CMD_DESC_PROXY_FUNC_ENABLE_QUEUE_IN_HANDLE_OFST 0
30497 #define	MC_CMD_DESC_PROXY_FUNC_ENABLE_QUEUE_IN_HANDLE_LEN 4
30498 /* Source relative queue number to enable proxying on */
30499 #define	MC_CMD_DESC_PROXY_FUNC_ENABLE_QUEUE_IN_SOURCE_QUEUE_OFST 4
30500 #define	MC_CMD_DESC_PROXY_FUNC_ENABLE_QUEUE_IN_SOURCE_QUEUE_LEN 4
30501 /* Descriptor proxy sink queue (caller function relative). Must be extended
30502  * width event queue
30503  */
30504 #define	MC_CMD_DESC_PROXY_FUNC_ENABLE_QUEUE_IN_TARGET_EVQ_OFST 8
30505 #define	MC_CMD_DESC_PROXY_FUNC_ENABLE_QUEUE_IN_TARGET_EVQ_LEN 4
30506 
30507 /* MC_CMD_DESC_PROXY_FUNC_ENABLE_QUEUE_OUT msgresponse */
30508 #define	MC_CMD_DESC_PROXY_FUNC_ENABLE_QUEUE_OUT_LEN 0
30509 
30510 
30511 /***********************************/
30512 /* MC_CMD_DESC_PROXY_FUNC_DISABLE
30513  * Disable descriptor proxying for function. For multi-queue functions,
30514  * disables all queues.
30515  */
30516 #define	MC_CMD_DESC_PROXY_FUNC_DISABLE 0x179
30517 #define	MC_CMD_DESC_PROXY_FUNC_DISABLE_MSGSET 0x179
30518 #undef	MC_CMD_0x179_PRIVILEGE_CTG
30519 
30520 #define	MC_CMD_0x179_PRIVILEGE_CTG SRIOV_CTG_ADMIN
30521 
30522 /* MC_CMD_DESC_PROXY_FUNC_DISABLE_IN msgrequest */
30523 #define	MC_CMD_DESC_PROXY_FUNC_DISABLE_IN_LEN 4
30524 /* Handle to descriptor proxy function (as returned by
30525  * MC_CMD_DESC_PROXY_FUNC_OPEN)
30526  */
30527 #define	MC_CMD_DESC_PROXY_FUNC_DISABLE_IN_HANDLE_OFST 0
30528 #define	MC_CMD_DESC_PROXY_FUNC_DISABLE_IN_HANDLE_LEN 4
30529 
30530 /* MC_CMD_DESC_PROXY_FUNC_DISABLE_OUT msgresponse */
30531 #define	MC_CMD_DESC_PROXY_FUNC_DISABLE_OUT_LEN 0
30532 
30533 
30534 /***********************************/
30535 /* MC_CMD_DESC_PROXY_FUNC_DISABLE_QUEUE
30536  * Disable descriptor proxying for a specific source queue on a function.
30537  */
30538 #define	MC_CMD_DESC_PROXY_FUNC_DISABLE_QUEUE 0x1d1
30539 #define	MC_CMD_DESC_PROXY_FUNC_DISABLE_QUEUE_MSGSET 0x1d1
30540 #undef	MC_CMD_0x1d1_PRIVILEGE_CTG
30541 
30542 #define	MC_CMD_0x1d1_PRIVILEGE_CTG SRIOV_CTG_ADMIN
30543 
30544 /* MC_CMD_DESC_PROXY_FUNC_DISABLE_QUEUE_IN msgrequest */
30545 #define	MC_CMD_DESC_PROXY_FUNC_DISABLE_QUEUE_IN_LEN 8
30546 /* Handle to descriptor proxy function (as returned by
30547  * MC_CMD_DESC_PROXY_FUNC_OPEN)
30548  */
30549 #define	MC_CMD_DESC_PROXY_FUNC_DISABLE_QUEUE_IN_HANDLE_OFST 0
30550 #define	MC_CMD_DESC_PROXY_FUNC_DISABLE_QUEUE_IN_HANDLE_LEN 4
30551 /* Source relative queue number to disable proxying on */
30552 #define	MC_CMD_DESC_PROXY_FUNC_DISABLE_QUEUE_IN_SOURCE_QUEUE_OFST 4
30553 #define	MC_CMD_DESC_PROXY_FUNC_DISABLE_QUEUE_IN_SOURCE_QUEUE_LEN 4
30554 
30555 /* MC_CMD_DESC_PROXY_FUNC_DISABLE_QUEUE_OUT msgresponse */
30556 #define	MC_CMD_DESC_PROXY_FUNC_DISABLE_QUEUE_OUT_LEN 0
30557 
30558 
30559 /***********************************/
30560 /* MC_CMD_DESC_PROXY_GET_VI_INFO
30561  * Returns absolute VI allocation information for the descriptor proxy source
30562  * function referenced by HANDLE, so that the caller can map absolute VI IDs
30563  * from descriptor proxy events back to the originating function and queue. The
30564  * call is only valid after the host driver for the source function has
30565  * attached (after receiving a driver attach event for the descriptor proxy
30566  * function) and will fail with ENOTCONN otherwise.
30567  */
30568 #define	MC_CMD_DESC_PROXY_GET_VI_INFO 0x1d2
30569 #define	MC_CMD_DESC_PROXY_GET_VI_INFO_MSGSET 0x1d2
30570 #undef	MC_CMD_0x1d2_PRIVILEGE_CTG
30571 
30572 #define	MC_CMD_0x1d2_PRIVILEGE_CTG SRIOV_CTG_ADMIN
30573 
30574 /* MC_CMD_DESC_PROXY_GET_VI_INFO_IN msgrequest */
30575 #define	MC_CMD_DESC_PROXY_GET_VI_INFO_IN_LEN 4
30576 /* Handle to descriptor proxy function (as returned by
30577  * MC_CMD_DESC_PROXY_FUNC_OPEN)
30578  */
30579 #define	MC_CMD_DESC_PROXY_GET_VI_INFO_IN_HANDLE_OFST 0
30580 #define	MC_CMD_DESC_PROXY_GET_VI_INFO_IN_HANDLE_LEN 4
30581 
30582 /* MC_CMD_DESC_PROXY_FUNC_GET_VI_INFO_OUT msgresponse */
30583 #define	MC_CMD_DESC_PROXY_FUNC_GET_VI_INFO_OUT_LENMIN 0
30584 #define	MC_CMD_DESC_PROXY_FUNC_GET_VI_INFO_OUT_LENMAX 252
30585 #define	MC_CMD_DESC_PROXY_FUNC_GET_VI_INFO_OUT_LENMAX_MCDI2 1020
30586 #define	MC_CMD_DESC_PROXY_FUNC_GET_VI_INFO_OUT_LEN(num) (0+4*(num))
30587 #define	MC_CMD_DESC_PROXY_FUNC_GET_VI_INFO_OUT_VI_MAP_NUM(len) (((len)-0)/4)
30588 /* VI information (VI ID + VI relative queue number) for each of the source
30589  * queues (in order from 0 to max_virtqueues-1), as array of QUEUE_ID
30590  * structures.
30591  */
30592 #define	MC_CMD_DESC_PROXY_FUNC_GET_VI_INFO_OUT_VI_MAP_OFST 0
30593 #define	MC_CMD_DESC_PROXY_FUNC_GET_VI_INFO_OUT_VI_MAP_LEN 4
30594 #define	MC_CMD_DESC_PROXY_FUNC_GET_VI_INFO_OUT_VI_MAP_MINNUM 0
30595 #define	MC_CMD_DESC_PROXY_FUNC_GET_VI_INFO_OUT_VI_MAP_MAXNUM 63
30596 #define	MC_CMD_DESC_PROXY_FUNC_GET_VI_INFO_OUT_VI_MAP_MAXNUM_MCDI2 255
30597 /* See structuredef: QUEUE_ID */
30598 #define	MC_CMD_DESC_PROXY_FUNC_GET_VI_INFO_OUT_VI_MAP_ABS_VI_OFST 0
30599 #define	MC_CMD_DESC_PROXY_FUNC_GET_VI_INFO_OUT_VI_MAP_ABS_VI_LEN 2
30600 #define	MC_CMD_DESC_PROXY_FUNC_GET_VI_INFO_OUT_VI_MAP_REL_QUEUE_LBN 16
30601 #define	MC_CMD_DESC_PROXY_FUNC_GET_VI_INFO_OUT_VI_MAP_REL_QUEUE_WIDTH 1
30602 #define	MC_CMD_DESC_PROXY_FUNC_GET_VI_INFO_OUT_VI_MAP_RESERVED_LBN 17
30603 #define	MC_CMD_DESC_PROXY_FUNC_GET_VI_INFO_OUT_VI_MAP_RESERVED_WIDTH 15
30604 
30605 
30606 /***********************************/
30607 /* MC_CMD_GET_ADDR_SPC_ID
30608  * Get Address space identifier for use in mem2mem descriptors for a given
30609  * target. See SF-120734-TC for details on ADDR_SPC_IDs and mem2mem
30610  * descriptors.
30611  */
30612 #define	MC_CMD_GET_ADDR_SPC_ID 0x1a0
30613 #define	MC_CMD_GET_ADDR_SPC_ID_MSGSET 0x1a0
30614 #undef	MC_CMD_0x1a0_PRIVILEGE_CTG
30615 
30616 #define	MC_CMD_0x1a0_PRIVILEGE_CTG SRIOV_CTG_ADMIN
30617 
30618 /* MC_CMD_GET_ADDR_SPC_ID_IN msgrequest */
30619 #define	MC_CMD_GET_ADDR_SPC_ID_IN_LEN 16
30620 /* Resource type to get ADDR_SPC_ID for */
30621 #define	MC_CMD_GET_ADDR_SPC_ID_IN_TYPE_OFST 0
30622 #define	MC_CMD_GET_ADDR_SPC_ID_IN_TYPE_LEN 4
30623 /* enum: Address space ID for host/AP memory DMA over the same interface this
30624  * MCDI was called on
30625  */
30626 #define	MC_CMD_GET_ADDR_SPC_ID_IN_SELF 0x0
30627 /* enum: Address space ID for host/AP memory DMA via PCI interface and function
30628  * specified by FUNC
30629  */
30630 #define	MC_CMD_GET_ADDR_SPC_ID_IN_PCI_FUNC 0x1
30631 /* enum: Address space ID for host/AP memory DMA via PCI interface and function
30632  * specified by FUNC with PASID value specified by PASID
30633  */
30634 #define	MC_CMD_GET_ADDR_SPC_ID_IN_PCI_FUNC_PASID 0x2
30635 /* enum: Address space ID for host/AP memory DMA via PCI interface and function
30636  * specified by FUNC with PASID value of relative VI specified by VI
30637  */
30638 #define	MC_CMD_GET_ADDR_SPC_ID_IN_REL_VI 0x3
30639 /* enum: Address space ID for host/AP memory DMA via PCI interface, function
30640  * and PASID value of absolute VI specified by VI
30641  */
30642 #define	MC_CMD_GET_ADDR_SPC_ID_IN_ABS_VI 0x4
30643 /* enum: Address space ID for host memory DMA via PCI interface and function of
30644  * descriptor proxy function specified by HANDLE
30645  */
30646 #define	MC_CMD_GET_ADDR_SPC_ID_IN_DESC_PROXY_HANDLE 0x5
30647 /* enum: Address space ID for DMA to/from MC memory */
30648 #define	MC_CMD_GET_ADDR_SPC_ID_IN_MC_MEM 0x6
30649 /* enum: Address space ID for DMA to/from other SmartNIC memory (on-chip, DDR)
30650  */
30651 #define	MC_CMD_GET_ADDR_SPC_ID_IN_NIC_MEM 0x7
30652 /* PCIe Function ID (as struct PCIE_FUNCTION). Only valid if TYPE is PCI_FUNC,
30653  * PCI_FUNC_PASID or REL_VI.
30654  */
30655 #define	MC_CMD_GET_ADDR_SPC_ID_IN_FUNC_OFST 4
30656 #define	MC_CMD_GET_ADDR_SPC_ID_IN_FUNC_LEN 8
30657 #define	MC_CMD_GET_ADDR_SPC_ID_IN_FUNC_LO_OFST 4
30658 #define	MC_CMD_GET_ADDR_SPC_ID_IN_FUNC_LO_LEN 4
30659 #define	MC_CMD_GET_ADDR_SPC_ID_IN_FUNC_LO_LBN 32
30660 #define	MC_CMD_GET_ADDR_SPC_ID_IN_FUNC_LO_WIDTH 32
30661 #define	MC_CMD_GET_ADDR_SPC_ID_IN_FUNC_HI_OFST 8
30662 #define	MC_CMD_GET_ADDR_SPC_ID_IN_FUNC_HI_LEN 4
30663 #define	MC_CMD_GET_ADDR_SPC_ID_IN_FUNC_HI_LBN 64
30664 #define	MC_CMD_GET_ADDR_SPC_ID_IN_FUNC_HI_WIDTH 32
30665 /* See structuredef: PCIE_FUNCTION */
30666 #define	MC_CMD_GET_ADDR_SPC_ID_IN_FUNC_PF_OFST 4
30667 #define	MC_CMD_GET_ADDR_SPC_ID_IN_FUNC_PF_LEN 2
30668 #define	MC_CMD_GET_ADDR_SPC_ID_IN_FUNC_VF_OFST 6
30669 #define	MC_CMD_GET_ADDR_SPC_ID_IN_FUNC_VF_LEN 2
30670 #define	MC_CMD_GET_ADDR_SPC_ID_IN_FUNC_INTF_OFST 8
30671 #define	MC_CMD_GET_ADDR_SPC_ID_IN_FUNC_INTF_LEN 4
30672 /* PASID value. Only valid if TYPE is PCI_FUNC_PASID. */
30673 #define	MC_CMD_GET_ADDR_SPC_ID_IN_PASID_OFST 12
30674 #define	MC_CMD_GET_ADDR_SPC_ID_IN_PASID_LEN 4
30675 /* Relative or absolute VI number. Only valid if TYPE is REL_VI or ABS_VI */
30676 #define	MC_CMD_GET_ADDR_SPC_ID_IN_VI_OFST 12
30677 #define	MC_CMD_GET_ADDR_SPC_ID_IN_VI_LEN 4
30678 /* Descriptor proxy function handle. Only valid if TYPE is DESC_PROXY_HANDLE.
30679  */
30680 #define	MC_CMD_GET_ADDR_SPC_ID_IN_HANDLE_OFST 4
30681 #define	MC_CMD_GET_ADDR_SPC_ID_IN_HANDLE_LEN 4
30682 
30683 /* MC_CMD_GET_ADDR_SPC_ID_OUT msgresponse */
30684 #define	MC_CMD_GET_ADDR_SPC_ID_OUT_LEN 8
30685 /* Address Space ID for the requested target. Only the lower 36 bits are valid
30686  * in the current SmartNIC implementation.
30687  */
30688 #define	MC_CMD_GET_ADDR_SPC_ID_OUT_ADDR_SPC_ID_OFST 0
30689 #define	MC_CMD_GET_ADDR_SPC_ID_OUT_ADDR_SPC_ID_LEN 8
30690 #define	MC_CMD_GET_ADDR_SPC_ID_OUT_ADDR_SPC_ID_LO_OFST 0
30691 #define	MC_CMD_GET_ADDR_SPC_ID_OUT_ADDR_SPC_ID_LO_LEN 4
30692 #define	MC_CMD_GET_ADDR_SPC_ID_OUT_ADDR_SPC_ID_LO_LBN 0
30693 #define	MC_CMD_GET_ADDR_SPC_ID_OUT_ADDR_SPC_ID_LO_WIDTH 32
30694 #define	MC_CMD_GET_ADDR_SPC_ID_OUT_ADDR_SPC_ID_HI_OFST 4
30695 #define	MC_CMD_GET_ADDR_SPC_ID_OUT_ADDR_SPC_ID_HI_LEN 4
30696 #define	MC_CMD_GET_ADDR_SPC_ID_OUT_ADDR_SPC_ID_HI_LBN 32
30697 #define	MC_CMD_GET_ADDR_SPC_ID_OUT_ADDR_SPC_ID_HI_WIDTH 32
30698 
30699 
30700 /***********************************/
30701 /* MC_CMD_GET_CLIENT_HANDLE
30702  * Obtain a handle for a client given a description of that client. N.B. this
30703  * command is subject to change given the open discussion about how PCIe
30704  * functions should be referenced on an iEP (integrated endpoint: functions
30705  * span multiple buses) and multihost (multiple PCIe interfaces) system.
30706  */
30707 #define	MC_CMD_GET_CLIENT_HANDLE 0x1c3
30708 #define	MC_CMD_GET_CLIENT_HANDLE_MSGSET 0x1c3
30709 #undef	MC_CMD_0x1c3_PRIVILEGE_CTG
30710 
30711 #define	MC_CMD_0x1c3_PRIVILEGE_CTG SRIOV_CTG_GENERAL
30712 
30713 /* MC_CMD_GET_CLIENT_HANDLE_IN msgrequest */
30714 #define	MC_CMD_GET_CLIENT_HANDLE_IN_LEN 12
30715 /* Type of client to get a client handle for */
30716 #define	MC_CMD_GET_CLIENT_HANDLE_IN_TYPE_OFST 0
30717 #define	MC_CMD_GET_CLIENT_HANDLE_IN_TYPE_LEN 4
30718 /* enum: Obtain a client handle for a PCIe function-type client. */
30719 #define	MC_CMD_GET_CLIENT_HANDLE_IN_TYPE_FUNC 0x0
30720 /* PCIe Function ID (as struct PCIE_FUNCTION). Valid when TYPE==FUNC. Use: -
30721  * INTF=CALLER, PF=PF_NULL, VF=VF_NULL to refer to the calling function -
30722  * INTF=CALLER, PF=PF_NULL, VF=... to refer to a VF child of the calling PF or
30723  * a sibling VF of the calling VF. - INTF=CALLER, PF=..., VF=VF_NULL to refer
30724  * to a PF on the calling interface - INTF=CALLER, PF=..., VF=... to refer to a
30725  * VF on the calling interface - INTF=..., PF=..., VF=VF_NULL to refer to a PF
30726  * on a named interface - INTF=..., PF=..., VF=... to refer to a VF on a named
30727  * interface where ... refers to a small integer for the VF/PF fields, and to
30728  * values from the PCIE_INTERFACE enum for for the INTF field. It's only
30729  * meaningful to use INTF=CALLER within a structure that's an argument to
30730  * MC_CMD_DEVEL_GET_CLIENT_HANDLE.
30731  */
30732 #define	MC_CMD_GET_CLIENT_HANDLE_IN_FUNC_OFST 4
30733 #define	MC_CMD_GET_CLIENT_HANDLE_IN_FUNC_LEN 8
30734 #define	MC_CMD_GET_CLIENT_HANDLE_IN_FUNC_LO_OFST 4
30735 #define	MC_CMD_GET_CLIENT_HANDLE_IN_FUNC_LO_LEN 4
30736 #define	MC_CMD_GET_CLIENT_HANDLE_IN_FUNC_LO_LBN 32
30737 #define	MC_CMD_GET_CLIENT_HANDLE_IN_FUNC_LO_WIDTH 32
30738 #define	MC_CMD_GET_CLIENT_HANDLE_IN_FUNC_HI_OFST 8
30739 #define	MC_CMD_GET_CLIENT_HANDLE_IN_FUNC_HI_LEN 4
30740 #define	MC_CMD_GET_CLIENT_HANDLE_IN_FUNC_HI_LBN 64
30741 #define	MC_CMD_GET_CLIENT_HANDLE_IN_FUNC_HI_WIDTH 32
30742 /* enum: NULL value for the INTF field of struct PCIE_FUNCTION. Provided for
30743  * backwards compatibility only, callers should use PCIE_INTERFACE_CALLER.
30744  */
30745 #define	MC_CMD_GET_CLIENT_HANDLE_IN_PCIE_FUNCTION_INTF_NULL 0xffffffff
30746 /* See structuredef: PCIE_FUNCTION */
30747 #define	MC_CMD_GET_CLIENT_HANDLE_IN_FUNC_PF_OFST 4
30748 #define	MC_CMD_GET_CLIENT_HANDLE_IN_FUNC_PF_LEN 2
30749 #define	MC_CMD_GET_CLIENT_HANDLE_IN_FUNC_VF_OFST 6
30750 #define	MC_CMD_GET_CLIENT_HANDLE_IN_FUNC_VF_LEN 2
30751 #define	MC_CMD_GET_CLIENT_HANDLE_IN_FUNC_INTF_OFST 8
30752 #define	MC_CMD_GET_CLIENT_HANDLE_IN_FUNC_INTF_LEN 4
30753 
30754 /* MC_CMD_GET_CLIENT_HANDLE_OUT msgresponse */
30755 #define	MC_CMD_GET_CLIENT_HANDLE_OUT_LEN 4
30756 #define	MC_CMD_GET_CLIENT_HANDLE_OUT_HANDLE_OFST 0
30757 #define	MC_CMD_GET_CLIENT_HANDLE_OUT_HANDLE_LEN 4
30758 
30759 /* MAE_FIELD_FLAGS structuredef */
30760 #define	MAE_FIELD_FLAGS_LEN 4
30761 #define	MAE_FIELD_FLAGS_FLAT_OFST 0
30762 #define	MAE_FIELD_FLAGS_FLAT_LEN 4
30763 #define	MAE_FIELD_FLAGS_SUPPORT_STATUS_OFST 0
30764 #define	MAE_FIELD_FLAGS_SUPPORT_STATUS_LBN 0
30765 #define	MAE_FIELD_FLAGS_SUPPORT_STATUS_WIDTH 6
30766 #define	MAE_FIELD_FLAGS_MASK_AFFECTS_CLASS_OFST 0
30767 #define	MAE_FIELD_FLAGS_MASK_AFFECTS_CLASS_LBN 6
30768 #define	MAE_FIELD_FLAGS_MASK_AFFECTS_CLASS_WIDTH 1
30769 #define	MAE_FIELD_FLAGS_MATCH_AFFECTS_CLASS_OFST 0
30770 #define	MAE_FIELD_FLAGS_MATCH_AFFECTS_CLASS_LBN 7
30771 #define	MAE_FIELD_FLAGS_MATCH_AFFECTS_CLASS_WIDTH 1
30772 #define	MAE_FIELD_FLAGS_FLAT_LBN 0
30773 #define	MAE_FIELD_FLAGS_FLAT_WIDTH 32
30774 
30775 /* MAE_ENC_FIELD_PAIRS structuredef: Mask and value pairs for all fields that
30776  * it makes sense to use to determine the encapsulation type of a packet. Its
30777  * intended use is to keep a common packing of fields across multiple MCDI
30778  * commands, keeping things inherently sychronised and allowing code shared. To
30779  * use in an MCDI command, the command should end with a variable length byte
30780  * array populated with this structure. Do not extend this structure. Instead,
30781  * create _Vx versions with the necessary fields appended. That way, the
30782  * existing semantics for extending MCDI commands are preserved.
30783  */
30784 #define	MAE_ENC_FIELD_PAIRS_LEN 156
30785 #define	MAE_ENC_FIELD_PAIRS_INGRESS_MPORT_SELECTOR_OFST 0
30786 #define	MAE_ENC_FIELD_PAIRS_INGRESS_MPORT_SELECTOR_LEN 4
30787 #define	MAE_ENC_FIELD_PAIRS_INGRESS_MPORT_SELECTOR_LBN 0
30788 #define	MAE_ENC_FIELD_PAIRS_INGRESS_MPORT_SELECTOR_WIDTH 32
30789 #define	MAE_ENC_FIELD_PAIRS_INGRESS_MPORT_SELECTOR_MASK_OFST 4
30790 #define	MAE_ENC_FIELD_PAIRS_INGRESS_MPORT_SELECTOR_MASK_LEN 4
30791 #define	MAE_ENC_FIELD_PAIRS_INGRESS_MPORT_SELECTOR_MASK_LBN 32
30792 #define	MAE_ENC_FIELD_PAIRS_INGRESS_MPORT_SELECTOR_MASK_WIDTH 32
30793 #define	MAE_ENC_FIELD_PAIRS_ENC_ETHER_TYPE_BE_OFST 8
30794 #define	MAE_ENC_FIELD_PAIRS_ENC_ETHER_TYPE_BE_LEN 2
30795 #define	MAE_ENC_FIELD_PAIRS_ENC_ETHER_TYPE_BE_LBN 64
30796 #define	MAE_ENC_FIELD_PAIRS_ENC_ETHER_TYPE_BE_WIDTH 16
30797 #define	MAE_ENC_FIELD_PAIRS_ENC_ETHER_TYPE_BE_MASK_OFST 10
30798 #define	MAE_ENC_FIELD_PAIRS_ENC_ETHER_TYPE_BE_MASK_LEN 2
30799 #define	MAE_ENC_FIELD_PAIRS_ENC_ETHER_TYPE_BE_MASK_LBN 80
30800 #define	MAE_ENC_FIELD_PAIRS_ENC_ETHER_TYPE_BE_MASK_WIDTH 16
30801 #define	MAE_ENC_FIELD_PAIRS_ENC_VLAN0_TCI_BE_OFST 12
30802 #define	MAE_ENC_FIELD_PAIRS_ENC_VLAN0_TCI_BE_LEN 2
30803 #define	MAE_ENC_FIELD_PAIRS_ENC_VLAN0_TCI_BE_LBN 96
30804 #define	MAE_ENC_FIELD_PAIRS_ENC_VLAN0_TCI_BE_WIDTH 16
30805 #define	MAE_ENC_FIELD_PAIRS_ENC_VLAN0_TCI_BE_MASK_OFST 14
30806 #define	MAE_ENC_FIELD_PAIRS_ENC_VLAN0_TCI_BE_MASK_LEN 2
30807 #define	MAE_ENC_FIELD_PAIRS_ENC_VLAN0_TCI_BE_MASK_LBN 112
30808 #define	MAE_ENC_FIELD_PAIRS_ENC_VLAN0_TCI_BE_MASK_WIDTH 16
30809 #define	MAE_ENC_FIELD_PAIRS_ENC_VLAN0_PROTO_BE_OFST 16
30810 #define	MAE_ENC_FIELD_PAIRS_ENC_VLAN0_PROTO_BE_LEN 2
30811 #define	MAE_ENC_FIELD_PAIRS_ENC_VLAN0_PROTO_BE_LBN 128
30812 #define	MAE_ENC_FIELD_PAIRS_ENC_VLAN0_PROTO_BE_WIDTH 16
30813 #define	MAE_ENC_FIELD_PAIRS_ENC_VLAN0_PROTO_BE_MASK_OFST 18
30814 #define	MAE_ENC_FIELD_PAIRS_ENC_VLAN0_PROTO_BE_MASK_LEN 2
30815 #define	MAE_ENC_FIELD_PAIRS_ENC_VLAN0_PROTO_BE_MASK_LBN 144
30816 #define	MAE_ENC_FIELD_PAIRS_ENC_VLAN0_PROTO_BE_MASK_WIDTH 16
30817 #define	MAE_ENC_FIELD_PAIRS_ENC_VLAN1_TCI_BE_OFST 20
30818 #define	MAE_ENC_FIELD_PAIRS_ENC_VLAN1_TCI_BE_LEN 2
30819 #define	MAE_ENC_FIELD_PAIRS_ENC_VLAN1_TCI_BE_LBN 160
30820 #define	MAE_ENC_FIELD_PAIRS_ENC_VLAN1_TCI_BE_WIDTH 16
30821 #define	MAE_ENC_FIELD_PAIRS_ENC_VLAN1_TCI_BE_MASK_OFST 22
30822 #define	MAE_ENC_FIELD_PAIRS_ENC_VLAN1_TCI_BE_MASK_LEN 2
30823 #define	MAE_ENC_FIELD_PAIRS_ENC_VLAN1_TCI_BE_MASK_LBN 176
30824 #define	MAE_ENC_FIELD_PAIRS_ENC_VLAN1_TCI_BE_MASK_WIDTH 16
30825 #define	MAE_ENC_FIELD_PAIRS_ENC_VLAN1_PROTO_BE_OFST 24
30826 #define	MAE_ENC_FIELD_PAIRS_ENC_VLAN1_PROTO_BE_LEN 2
30827 #define	MAE_ENC_FIELD_PAIRS_ENC_VLAN1_PROTO_BE_LBN 192
30828 #define	MAE_ENC_FIELD_PAIRS_ENC_VLAN1_PROTO_BE_WIDTH 16
30829 #define	MAE_ENC_FIELD_PAIRS_ENC_VLAN1_PROTO_BE_MASK_OFST 26
30830 #define	MAE_ENC_FIELD_PAIRS_ENC_VLAN1_PROTO_BE_MASK_LEN 2
30831 #define	MAE_ENC_FIELD_PAIRS_ENC_VLAN1_PROTO_BE_MASK_LBN 208
30832 #define	MAE_ENC_FIELD_PAIRS_ENC_VLAN1_PROTO_BE_MASK_WIDTH 16
30833 #define	MAE_ENC_FIELD_PAIRS_ENC_ETH_SADDR_BE_OFST 28
30834 #define	MAE_ENC_FIELD_PAIRS_ENC_ETH_SADDR_BE_LEN 6
30835 #define	MAE_ENC_FIELD_PAIRS_ENC_ETH_SADDR_BE_LBN 224
30836 #define	MAE_ENC_FIELD_PAIRS_ENC_ETH_SADDR_BE_WIDTH 48
30837 #define	MAE_ENC_FIELD_PAIRS_ENC_ETH_SADDR_BE_MASK_OFST 34
30838 #define	MAE_ENC_FIELD_PAIRS_ENC_ETH_SADDR_BE_MASK_LEN 6
30839 #define	MAE_ENC_FIELD_PAIRS_ENC_ETH_SADDR_BE_MASK_LBN 272
30840 #define	MAE_ENC_FIELD_PAIRS_ENC_ETH_SADDR_BE_MASK_WIDTH 48
30841 #define	MAE_ENC_FIELD_PAIRS_ENC_ETH_DADDR_BE_OFST 40
30842 #define	MAE_ENC_FIELD_PAIRS_ENC_ETH_DADDR_BE_LEN 6
30843 #define	MAE_ENC_FIELD_PAIRS_ENC_ETH_DADDR_BE_LBN 320
30844 #define	MAE_ENC_FIELD_PAIRS_ENC_ETH_DADDR_BE_WIDTH 48
30845 #define	MAE_ENC_FIELD_PAIRS_ENC_ETH_DADDR_BE_MASK_OFST 46
30846 #define	MAE_ENC_FIELD_PAIRS_ENC_ETH_DADDR_BE_MASK_LEN 6
30847 #define	MAE_ENC_FIELD_PAIRS_ENC_ETH_DADDR_BE_MASK_LBN 368
30848 #define	MAE_ENC_FIELD_PAIRS_ENC_ETH_DADDR_BE_MASK_WIDTH 48
30849 #define	MAE_ENC_FIELD_PAIRS_ENC_SRC_IP4_BE_OFST 52
30850 #define	MAE_ENC_FIELD_PAIRS_ENC_SRC_IP4_BE_LEN 4
30851 #define	MAE_ENC_FIELD_PAIRS_ENC_SRC_IP4_BE_LBN 416
30852 #define	MAE_ENC_FIELD_PAIRS_ENC_SRC_IP4_BE_WIDTH 32
30853 #define	MAE_ENC_FIELD_PAIRS_ENC_SRC_IP4_BE_MASK_OFST 56
30854 #define	MAE_ENC_FIELD_PAIRS_ENC_SRC_IP4_BE_MASK_LEN 4
30855 #define	MAE_ENC_FIELD_PAIRS_ENC_SRC_IP4_BE_MASK_LBN 448
30856 #define	MAE_ENC_FIELD_PAIRS_ENC_SRC_IP4_BE_MASK_WIDTH 32
30857 #define	MAE_ENC_FIELD_PAIRS_ENC_SRC_IP6_BE_OFST 60
30858 #define	MAE_ENC_FIELD_PAIRS_ENC_SRC_IP6_BE_LEN 16
30859 #define	MAE_ENC_FIELD_PAIRS_ENC_SRC_IP6_BE_LBN 480
30860 #define	MAE_ENC_FIELD_PAIRS_ENC_SRC_IP6_BE_WIDTH 128
30861 #define	MAE_ENC_FIELD_PAIRS_ENC_SRC_IP6_BE_MASK_OFST 76
30862 #define	MAE_ENC_FIELD_PAIRS_ENC_SRC_IP6_BE_MASK_LEN 16
30863 #define	MAE_ENC_FIELD_PAIRS_ENC_SRC_IP6_BE_MASK_LBN 608
30864 #define	MAE_ENC_FIELD_PAIRS_ENC_SRC_IP6_BE_MASK_WIDTH 128
30865 #define	MAE_ENC_FIELD_PAIRS_ENC_DST_IP4_BE_OFST 92
30866 #define	MAE_ENC_FIELD_PAIRS_ENC_DST_IP4_BE_LEN 4
30867 #define	MAE_ENC_FIELD_PAIRS_ENC_DST_IP4_BE_LBN 736
30868 #define	MAE_ENC_FIELD_PAIRS_ENC_DST_IP4_BE_WIDTH 32
30869 #define	MAE_ENC_FIELD_PAIRS_ENC_DST_IP4_BE_MASK_OFST 96
30870 #define	MAE_ENC_FIELD_PAIRS_ENC_DST_IP4_BE_MASK_LEN 4
30871 #define	MAE_ENC_FIELD_PAIRS_ENC_DST_IP4_BE_MASK_LBN 768
30872 #define	MAE_ENC_FIELD_PAIRS_ENC_DST_IP4_BE_MASK_WIDTH 32
30873 #define	MAE_ENC_FIELD_PAIRS_ENC_DST_IP6_BE_OFST 100
30874 #define	MAE_ENC_FIELD_PAIRS_ENC_DST_IP6_BE_LEN 16
30875 #define	MAE_ENC_FIELD_PAIRS_ENC_DST_IP6_BE_LBN 800
30876 #define	MAE_ENC_FIELD_PAIRS_ENC_DST_IP6_BE_WIDTH 128
30877 #define	MAE_ENC_FIELD_PAIRS_ENC_DST_IP6_BE_MASK_OFST 116
30878 #define	MAE_ENC_FIELD_PAIRS_ENC_DST_IP6_BE_MASK_LEN 16
30879 #define	MAE_ENC_FIELD_PAIRS_ENC_DST_IP6_BE_MASK_LBN 928
30880 #define	MAE_ENC_FIELD_PAIRS_ENC_DST_IP6_BE_MASK_WIDTH 128
30881 #define	MAE_ENC_FIELD_PAIRS_ENC_IP_PROTO_OFST 132
30882 #define	MAE_ENC_FIELD_PAIRS_ENC_IP_PROTO_LEN 1
30883 #define	MAE_ENC_FIELD_PAIRS_ENC_IP_PROTO_LBN 1056
30884 #define	MAE_ENC_FIELD_PAIRS_ENC_IP_PROTO_WIDTH 8
30885 #define	MAE_ENC_FIELD_PAIRS_ENC_IP_PROTO_MASK_OFST 133
30886 #define	MAE_ENC_FIELD_PAIRS_ENC_IP_PROTO_MASK_LEN 1
30887 #define	MAE_ENC_FIELD_PAIRS_ENC_IP_PROTO_MASK_LBN 1064
30888 #define	MAE_ENC_FIELD_PAIRS_ENC_IP_PROTO_MASK_WIDTH 8
30889 #define	MAE_ENC_FIELD_PAIRS_ENC_IP_TOS_OFST 134
30890 #define	MAE_ENC_FIELD_PAIRS_ENC_IP_TOS_LEN 1
30891 #define	MAE_ENC_FIELD_PAIRS_ENC_IP_TOS_LBN 1072
30892 #define	MAE_ENC_FIELD_PAIRS_ENC_IP_TOS_WIDTH 8
30893 #define	MAE_ENC_FIELD_PAIRS_ENC_IP_TOS_MASK_OFST 135
30894 #define	MAE_ENC_FIELD_PAIRS_ENC_IP_TOS_MASK_LEN 1
30895 #define	MAE_ENC_FIELD_PAIRS_ENC_IP_TOS_MASK_LBN 1080
30896 #define	MAE_ENC_FIELD_PAIRS_ENC_IP_TOS_MASK_WIDTH 8
30897 #define	MAE_ENC_FIELD_PAIRS_ENC_IP_TTL_OFST 136
30898 #define	MAE_ENC_FIELD_PAIRS_ENC_IP_TTL_LEN 1
30899 #define	MAE_ENC_FIELD_PAIRS_ENC_IP_TTL_LBN 1088
30900 #define	MAE_ENC_FIELD_PAIRS_ENC_IP_TTL_WIDTH 8
30901 #define	MAE_ENC_FIELD_PAIRS_ENC_IP_TTL_MASK_OFST 137
30902 #define	MAE_ENC_FIELD_PAIRS_ENC_IP_TTL_MASK_LEN 1
30903 #define	MAE_ENC_FIELD_PAIRS_ENC_IP_TTL_MASK_LBN 1096
30904 #define	MAE_ENC_FIELD_PAIRS_ENC_IP_TTL_MASK_WIDTH 8
30905 /* Deprecated in favour of ENC_FLAGS alias. */
30906 #define	MAE_ENC_FIELD_PAIRS_ENC_VLAN_FLAGS_OFST 138
30907 #define	MAE_ENC_FIELD_PAIRS_ENC_VLAN_FLAGS_LEN 1
30908 #define	MAE_ENC_FIELD_PAIRS_ENC_HAS_OVLAN_OFST 138
30909 #define	MAE_ENC_FIELD_PAIRS_ENC_HAS_OVLAN_LBN 0
30910 #define	MAE_ENC_FIELD_PAIRS_ENC_HAS_OVLAN_WIDTH 1
30911 #define	MAE_ENC_FIELD_PAIRS_ENC_HAS_IVLAN_OFST 138
30912 #define	MAE_ENC_FIELD_PAIRS_ENC_HAS_IVLAN_LBN 1
30913 #define	MAE_ENC_FIELD_PAIRS_ENC_HAS_IVLAN_WIDTH 1
30914 #define	MAE_ENC_FIELD_PAIRS_ENC_IP_FRAG_OFST 138
30915 #define	MAE_ENC_FIELD_PAIRS_ENC_IP_FRAG_LBN 2
30916 #define	MAE_ENC_FIELD_PAIRS_ENC_IP_FRAG_WIDTH 1
30917 #define	MAE_ENC_FIELD_PAIRS_ENC_VLAN_FLAGS_LBN 1104
30918 #define	MAE_ENC_FIELD_PAIRS_ENC_VLAN_FLAGS_WIDTH 8
30919 /* More generic alias for ENC_VLAN_FLAGS. */
30920 #define	MAE_ENC_FIELD_PAIRS_ENC_FLAGS_OFST 138
30921 #define	MAE_ENC_FIELD_PAIRS_ENC_FLAGS_LEN 1
30922 #define	MAE_ENC_FIELD_PAIRS_ENC_FLAGS_LBN 1104
30923 #define	MAE_ENC_FIELD_PAIRS_ENC_FLAGS_WIDTH 8
30924 /* Deprecated in favour of ENC_FLAGS_MASK alias. */
30925 #define	MAE_ENC_FIELD_PAIRS_ENC_VLAN_FLAGS_MASK_OFST 139
30926 #define	MAE_ENC_FIELD_PAIRS_ENC_VLAN_FLAGS_MASK_LEN 1
30927 #define	MAE_ENC_FIELD_PAIRS_ENC_HAS_OVLAN_MASK_OFST 139
30928 #define	MAE_ENC_FIELD_PAIRS_ENC_HAS_OVLAN_MASK_LBN 0
30929 #define	MAE_ENC_FIELD_PAIRS_ENC_HAS_OVLAN_MASK_WIDTH 1
30930 #define	MAE_ENC_FIELD_PAIRS_ENC_HAS_IVLAN_MASK_OFST 139
30931 #define	MAE_ENC_FIELD_PAIRS_ENC_HAS_IVLAN_MASK_LBN 1
30932 #define	MAE_ENC_FIELD_PAIRS_ENC_HAS_IVLAN_MASK_WIDTH 1
30933 #define	MAE_ENC_FIELD_PAIRS_ENC_IP_FRAG_MASK_OFST 139
30934 #define	MAE_ENC_FIELD_PAIRS_ENC_IP_FRAG_MASK_LBN 2
30935 #define	MAE_ENC_FIELD_PAIRS_ENC_IP_FRAG_MASK_WIDTH 1
30936 #define	MAE_ENC_FIELD_PAIRS_ENC_VLAN_FLAGS_MASK_LBN 1112
30937 #define	MAE_ENC_FIELD_PAIRS_ENC_VLAN_FLAGS_MASK_WIDTH 8
30938 /* More generic alias for ENC_FLAGS_MASK. */
30939 #define	MAE_ENC_FIELD_PAIRS_ENC_FLAGS_MASK_OFST 139
30940 #define	MAE_ENC_FIELD_PAIRS_ENC_FLAGS_MASK_LEN 1
30941 #define	MAE_ENC_FIELD_PAIRS_ENC_FLAGS_MASK_LBN 1112
30942 #define	MAE_ENC_FIELD_PAIRS_ENC_FLAGS_MASK_WIDTH 8
30943 #define	MAE_ENC_FIELD_PAIRS_ENC_IP_FLAGS_BE_OFST 140
30944 #define	MAE_ENC_FIELD_PAIRS_ENC_IP_FLAGS_BE_LEN 4
30945 #define	MAE_ENC_FIELD_PAIRS_ENC_IP_FLAGS_BE_LBN 1120
30946 #define	MAE_ENC_FIELD_PAIRS_ENC_IP_FLAGS_BE_WIDTH 32
30947 #define	MAE_ENC_FIELD_PAIRS_ENC_IP_FLAGS_BE_MASK_OFST 144
30948 #define	MAE_ENC_FIELD_PAIRS_ENC_IP_FLAGS_BE_MASK_LEN 4
30949 #define	MAE_ENC_FIELD_PAIRS_ENC_IP_FLAGS_BE_MASK_LBN 1152
30950 #define	MAE_ENC_FIELD_PAIRS_ENC_IP_FLAGS_BE_MASK_WIDTH 32
30951 #define	MAE_ENC_FIELD_PAIRS_ENC_L4_SPORT_BE_OFST 148
30952 #define	MAE_ENC_FIELD_PAIRS_ENC_L4_SPORT_BE_LEN 2
30953 #define	MAE_ENC_FIELD_PAIRS_ENC_L4_SPORT_BE_LBN 1184
30954 #define	MAE_ENC_FIELD_PAIRS_ENC_L4_SPORT_BE_WIDTH 16
30955 #define	MAE_ENC_FIELD_PAIRS_ENC_L4_SPORT_BE_MASK_OFST 150
30956 #define	MAE_ENC_FIELD_PAIRS_ENC_L4_SPORT_BE_MASK_LEN 2
30957 #define	MAE_ENC_FIELD_PAIRS_ENC_L4_SPORT_BE_MASK_LBN 1200
30958 #define	MAE_ENC_FIELD_PAIRS_ENC_L4_SPORT_BE_MASK_WIDTH 16
30959 #define	MAE_ENC_FIELD_PAIRS_ENC_L4_DPORT_BE_OFST 152
30960 #define	MAE_ENC_FIELD_PAIRS_ENC_L4_DPORT_BE_LEN 2
30961 #define	MAE_ENC_FIELD_PAIRS_ENC_L4_DPORT_BE_LBN 1216
30962 #define	MAE_ENC_FIELD_PAIRS_ENC_L4_DPORT_BE_WIDTH 16
30963 #define	MAE_ENC_FIELD_PAIRS_ENC_L4_DPORT_BE_MASK_OFST 154
30964 #define	MAE_ENC_FIELD_PAIRS_ENC_L4_DPORT_BE_MASK_LEN 2
30965 #define	MAE_ENC_FIELD_PAIRS_ENC_L4_DPORT_BE_MASK_LBN 1232
30966 #define	MAE_ENC_FIELD_PAIRS_ENC_L4_DPORT_BE_MASK_WIDTH 16
30967 
30968 /* MAE_FIELD_MASK_VALUE_PAIRS structuredef: Mask and value pairs for all fields
30969  * currently defined. Same semantics as MAE_ENC_FIELD_PAIRS.
30970  */
30971 #define	MAE_FIELD_MASK_VALUE_PAIRS_LEN 344
30972 #define	MAE_FIELD_MASK_VALUE_PAIRS_INGRESS_MPORT_SELECTOR_OFST 0
30973 #define	MAE_FIELD_MASK_VALUE_PAIRS_INGRESS_MPORT_SELECTOR_LEN 4
30974 #define	MAE_FIELD_MASK_VALUE_PAIRS_INGRESS_MPORT_SELECTOR_LBN 0
30975 #define	MAE_FIELD_MASK_VALUE_PAIRS_INGRESS_MPORT_SELECTOR_WIDTH 32
30976 #define	MAE_FIELD_MASK_VALUE_PAIRS_INGRESS_MPORT_SELECTOR_MASK_OFST 4
30977 #define	MAE_FIELD_MASK_VALUE_PAIRS_INGRESS_MPORT_SELECTOR_MASK_LEN 4
30978 #define	MAE_FIELD_MASK_VALUE_PAIRS_INGRESS_MPORT_SELECTOR_MASK_LBN 32
30979 #define	MAE_FIELD_MASK_VALUE_PAIRS_INGRESS_MPORT_SELECTOR_MASK_WIDTH 32
30980 #define	MAE_FIELD_MASK_VALUE_PAIRS_MARK_OFST 8
30981 #define	MAE_FIELD_MASK_VALUE_PAIRS_MARK_LEN 4
30982 #define	MAE_FIELD_MASK_VALUE_PAIRS_MARK_LBN 64
30983 #define	MAE_FIELD_MASK_VALUE_PAIRS_MARK_WIDTH 32
30984 #define	MAE_FIELD_MASK_VALUE_PAIRS_MARK_MASK_OFST 12
30985 #define	MAE_FIELD_MASK_VALUE_PAIRS_MARK_MASK_LEN 4
30986 #define	MAE_FIELD_MASK_VALUE_PAIRS_MARK_MASK_LBN 96
30987 #define	MAE_FIELD_MASK_VALUE_PAIRS_MARK_MASK_WIDTH 32
30988 #define	MAE_FIELD_MASK_VALUE_PAIRS_ETHER_TYPE_BE_OFST 16
30989 #define	MAE_FIELD_MASK_VALUE_PAIRS_ETHER_TYPE_BE_LEN 2
30990 #define	MAE_FIELD_MASK_VALUE_PAIRS_ETHER_TYPE_BE_LBN 128
30991 #define	MAE_FIELD_MASK_VALUE_PAIRS_ETHER_TYPE_BE_WIDTH 16
30992 #define	MAE_FIELD_MASK_VALUE_PAIRS_ETHER_TYPE_BE_MASK_OFST 18
30993 #define	MAE_FIELD_MASK_VALUE_PAIRS_ETHER_TYPE_BE_MASK_LEN 2
30994 #define	MAE_FIELD_MASK_VALUE_PAIRS_ETHER_TYPE_BE_MASK_LBN 144
30995 #define	MAE_FIELD_MASK_VALUE_PAIRS_ETHER_TYPE_BE_MASK_WIDTH 16
30996 #define	MAE_FIELD_MASK_VALUE_PAIRS_VLAN0_TCI_BE_OFST 20
30997 #define	MAE_FIELD_MASK_VALUE_PAIRS_VLAN0_TCI_BE_LEN 2
30998 #define	MAE_FIELD_MASK_VALUE_PAIRS_VLAN0_TCI_BE_LBN 160
30999 #define	MAE_FIELD_MASK_VALUE_PAIRS_VLAN0_TCI_BE_WIDTH 16
31000 #define	MAE_FIELD_MASK_VALUE_PAIRS_VLAN0_TCI_BE_MASK_OFST 22
31001 #define	MAE_FIELD_MASK_VALUE_PAIRS_VLAN0_TCI_BE_MASK_LEN 2
31002 #define	MAE_FIELD_MASK_VALUE_PAIRS_VLAN0_TCI_BE_MASK_LBN 176
31003 #define	MAE_FIELD_MASK_VALUE_PAIRS_VLAN0_TCI_BE_MASK_WIDTH 16
31004 #define	MAE_FIELD_MASK_VALUE_PAIRS_VLAN0_PROTO_BE_OFST 24
31005 #define	MAE_FIELD_MASK_VALUE_PAIRS_VLAN0_PROTO_BE_LEN 2
31006 #define	MAE_FIELD_MASK_VALUE_PAIRS_VLAN0_PROTO_BE_LBN 192
31007 #define	MAE_FIELD_MASK_VALUE_PAIRS_VLAN0_PROTO_BE_WIDTH 16
31008 #define	MAE_FIELD_MASK_VALUE_PAIRS_VLAN0_PROTO_BE_MASK_OFST 26
31009 #define	MAE_FIELD_MASK_VALUE_PAIRS_VLAN0_PROTO_BE_MASK_LEN 2
31010 #define	MAE_FIELD_MASK_VALUE_PAIRS_VLAN0_PROTO_BE_MASK_LBN 208
31011 #define	MAE_FIELD_MASK_VALUE_PAIRS_VLAN0_PROTO_BE_MASK_WIDTH 16
31012 #define	MAE_FIELD_MASK_VALUE_PAIRS_VLAN1_TCI_BE_OFST 28
31013 #define	MAE_FIELD_MASK_VALUE_PAIRS_VLAN1_TCI_BE_LEN 2
31014 #define	MAE_FIELD_MASK_VALUE_PAIRS_VLAN1_TCI_BE_LBN 224
31015 #define	MAE_FIELD_MASK_VALUE_PAIRS_VLAN1_TCI_BE_WIDTH 16
31016 #define	MAE_FIELD_MASK_VALUE_PAIRS_VLAN1_TCI_BE_MASK_OFST 30
31017 #define	MAE_FIELD_MASK_VALUE_PAIRS_VLAN1_TCI_BE_MASK_LEN 2
31018 #define	MAE_FIELD_MASK_VALUE_PAIRS_VLAN1_TCI_BE_MASK_LBN 240
31019 #define	MAE_FIELD_MASK_VALUE_PAIRS_VLAN1_TCI_BE_MASK_WIDTH 16
31020 #define	MAE_FIELD_MASK_VALUE_PAIRS_VLAN1_PROTO_BE_OFST 32
31021 #define	MAE_FIELD_MASK_VALUE_PAIRS_VLAN1_PROTO_BE_LEN 2
31022 #define	MAE_FIELD_MASK_VALUE_PAIRS_VLAN1_PROTO_BE_LBN 256
31023 #define	MAE_FIELD_MASK_VALUE_PAIRS_VLAN1_PROTO_BE_WIDTH 16
31024 #define	MAE_FIELD_MASK_VALUE_PAIRS_VLAN1_PROTO_BE_MASK_OFST 34
31025 #define	MAE_FIELD_MASK_VALUE_PAIRS_VLAN1_PROTO_BE_MASK_LEN 2
31026 #define	MAE_FIELD_MASK_VALUE_PAIRS_VLAN1_PROTO_BE_MASK_LBN 272
31027 #define	MAE_FIELD_MASK_VALUE_PAIRS_VLAN1_PROTO_BE_MASK_WIDTH 16
31028 #define	MAE_FIELD_MASK_VALUE_PAIRS_ETH_SADDR_BE_OFST 36
31029 #define	MAE_FIELD_MASK_VALUE_PAIRS_ETH_SADDR_BE_LEN 6
31030 #define	MAE_FIELD_MASK_VALUE_PAIRS_ETH_SADDR_BE_LBN 288
31031 #define	MAE_FIELD_MASK_VALUE_PAIRS_ETH_SADDR_BE_WIDTH 48
31032 #define	MAE_FIELD_MASK_VALUE_PAIRS_ETH_SADDR_BE_MASK_OFST 42
31033 #define	MAE_FIELD_MASK_VALUE_PAIRS_ETH_SADDR_BE_MASK_LEN 6
31034 #define	MAE_FIELD_MASK_VALUE_PAIRS_ETH_SADDR_BE_MASK_LBN 336
31035 #define	MAE_FIELD_MASK_VALUE_PAIRS_ETH_SADDR_BE_MASK_WIDTH 48
31036 #define	MAE_FIELD_MASK_VALUE_PAIRS_ETH_DADDR_BE_OFST 48
31037 #define	MAE_FIELD_MASK_VALUE_PAIRS_ETH_DADDR_BE_LEN 6
31038 #define	MAE_FIELD_MASK_VALUE_PAIRS_ETH_DADDR_BE_LBN 384
31039 #define	MAE_FIELD_MASK_VALUE_PAIRS_ETH_DADDR_BE_WIDTH 48
31040 #define	MAE_FIELD_MASK_VALUE_PAIRS_ETH_DADDR_BE_MASK_OFST 54
31041 #define	MAE_FIELD_MASK_VALUE_PAIRS_ETH_DADDR_BE_MASK_LEN 6
31042 #define	MAE_FIELD_MASK_VALUE_PAIRS_ETH_DADDR_BE_MASK_LBN 432
31043 #define	MAE_FIELD_MASK_VALUE_PAIRS_ETH_DADDR_BE_MASK_WIDTH 48
31044 #define	MAE_FIELD_MASK_VALUE_PAIRS_SRC_IP4_BE_OFST 60
31045 #define	MAE_FIELD_MASK_VALUE_PAIRS_SRC_IP4_BE_LEN 4
31046 #define	MAE_FIELD_MASK_VALUE_PAIRS_SRC_IP4_BE_LBN 480
31047 #define	MAE_FIELD_MASK_VALUE_PAIRS_SRC_IP4_BE_WIDTH 32
31048 #define	MAE_FIELD_MASK_VALUE_PAIRS_SRC_IP4_BE_MASK_OFST 64
31049 #define	MAE_FIELD_MASK_VALUE_PAIRS_SRC_IP4_BE_MASK_LEN 4
31050 #define	MAE_FIELD_MASK_VALUE_PAIRS_SRC_IP4_BE_MASK_LBN 512
31051 #define	MAE_FIELD_MASK_VALUE_PAIRS_SRC_IP4_BE_MASK_WIDTH 32
31052 #define	MAE_FIELD_MASK_VALUE_PAIRS_SRC_IP6_BE_OFST 68
31053 #define	MAE_FIELD_MASK_VALUE_PAIRS_SRC_IP6_BE_LEN 16
31054 #define	MAE_FIELD_MASK_VALUE_PAIRS_SRC_IP6_BE_LBN 544
31055 #define	MAE_FIELD_MASK_VALUE_PAIRS_SRC_IP6_BE_WIDTH 128
31056 #define	MAE_FIELD_MASK_VALUE_PAIRS_SRC_IP6_BE_MASK_OFST 84
31057 #define	MAE_FIELD_MASK_VALUE_PAIRS_SRC_IP6_BE_MASK_LEN 16
31058 #define	MAE_FIELD_MASK_VALUE_PAIRS_SRC_IP6_BE_MASK_LBN 672
31059 #define	MAE_FIELD_MASK_VALUE_PAIRS_SRC_IP6_BE_MASK_WIDTH 128
31060 #define	MAE_FIELD_MASK_VALUE_PAIRS_DST_IP4_BE_OFST 100
31061 #define	MAE_FIELD_MASK_VALUE_PAIRS_DST_IP4_BE_LEN 4
31062 #define	MAE_FIELD_MASK_VALUE_PAIRS_DST_IP4_BE_LBN 800
31063 #define	MAE_FIELD_MASK_VALUE_PAIRS_DST_IP4_BE_WIDTH 32
31064 #define	MAE_FIELD_MASK_VALUE_PAIRS_DST_IP4_BE_MASK_OFST 104
31065 #define	MAE_FIELD_MASK_VALUE_PAIRS_DST_IP4_BE_MASK_LEN 4
31066 #define	MAE_FIELD_MASK_VALUE_PAIRS_DST_IP4_BE_MASK_LBN 832
31067 #define	MAE_FIELD_MASK_VALUE_PAIRS_DST_IP4_BE_MASK_WIDTH 32
31068 #define	MAE_FIELD_MASK_VALUE_PAIRS_DST_IP6_BE_OFST 108
31069 #define	MAE_FIELD_MASK_VALUE_PAIRS_DST_IP6_BE_LEN 16
31070 #define	MAE_FIELD_MASK_VALUE_PAIRS_DST_IP6_BE_LBN 864
31071 #define	MAE_FIELD_MASK_VALUE_PAIRS_DST_IP6_BE_WIDTH 128
31072 #define	MAE_FIELD_MASK_VALUE_PAIRS_DST_IP6_BE_MASK_OFST 124
31073 #define	MAE_FIELD_MASK_VALUE_PAIRS_DST_IP6_BE_MASK_LEN 16
31074 #define	MAE_FIELD_MASK_VALUE_PAIRS_DST_IP6_BE_MASK_LBN 992
31075 #define	MAE_FIELD_MASK_VALUE_PAIRS_DST_IP6_BE_MASK_WIDTH 128
31076 #define	MAE_FIELD_MASK_VALUE_PAIRS_IP_PROTO_OFST 140
31077 #define	MAE_FIELD_MASK_VALUE_PAIRS_IP_PROTO_LEN 1
31078 #define	MAE_FIELD_MASK_VALUE_PAIRS_IP_PROTO_LBN 1120
31079 #define	MAE_FIELD_MASK_VALUE_PAIRS_IP_PROTO_WIDTH 8
31080 #define	MAE_FIELD_MASK_VALUE_PAIRS_IP_PROTO_MASK_OFST 141
31081 #define	MAE_FIELD_MASK_VALUE_PAIRS_IP_PROTO_MASK_LEN 1
31082 #define	MAE_FIELD_MASK_VALUE_PAIRS_IP_PROTO_MASK_LBN 1128
31083 #define	MAE_FIELD_MASK_VALUE_PAIRS_IP_PROTO_MASK_WIDTH 8
31084 #define	MAE_FIELD_MASK_VALUE_PAIRS_IP_TOS_OFST 142
31085 #define	MAE_FIELD_MASK_VALUE_PAIRS_IP_TOS_LEN 1
31086 #define	MAE_FIELD_MASK_VALUE_PAIRS_IP_TOS_LBN 1136
31087 #define	MAE_FIELD_MASK_VALUE_PAIRS_IP_TOS_WIDTH 8
31088 #define	MAE_FIELD_MASK_VALUE_PAIRS_IP_TOS_MASK_OFST 143
31089 #define	MAE_FIELD_MASK_VALUE_PAIRS_IP_TOS_MASK_LEN 1
31090 #define	MAE_FIELD_MASK_VALUE_PAIRS_IP_TOS_MASK_LBN 1144
31091 #define	MAE_FIELD_MASK_VALUE_PAIRS_IP_TOS_MASK_WIDTH 8
31092 /* Due to hardware limitations, firmware may return
31093  * MC_CMD_ERR_EINVAL(BAD_IP_TTL) when attempting to match on an IP_TTL value
31094  * other than 1.
31095  */
31096 #define	MAE_FIELD_MASK_VALUE_PAIRS_IP_TTL_OFST 144
31097 #define	MAE_FIELD_MASK_VALUE_PAIRS_IP_TTL_LEN 1
31098 #define	MAE_FIELD_MASK_VALUE_PAIRS_IP_TTL_LBN 1152
31099 #define	MAE_FIELD_MASK_VALUE_PAIRS_IP_TTL_WIDTH 8
31100 #define	MAE_FIELD_MASK_VALUE_PAIRS_IP_TTL_MASK_OFST 145
31101 #define	MAE_FIELD_MASK_VALUE_PAIRS_IP_TTL_MASK_LEN 1
31102 #define	MAE_FIELD_MASK_VALUE_PAIRS_IP_TTL_MASK_LBN 1160
31103 #define	MAE_FIELD_MASK_VALUE_PAIRS_IP_TTL_MASK_WIDTH 8
31104 #define	MAE_FIELD_MASK_VALUE_PAIRS_IP_FLAGS_BE_OFST 148
31105 #define	MAE_FIELD_MASK_VALUE_PAIRS_IP_FLAGS_BE_LEN 4
31106 #define	MAE_FIELD_MASK_VALUE_PAIRS_IP_FLAGS_BE_LBN 1184
31107 #define	MAE_FIELD_MASK_VALUE_PAIRS_IP_FLAGS_BE_WIDTH 32
31108 #define	MAE_FIELD_MASK_VALUE_PAIRS_IP_FLAGS_BE_MASK_OFST 152
31109 #define	MAE_FIELD_MASK_VALUE_PAIRS_IP_FLAGS_BE_MASK_LEN 4
31110 #define	MAE_FIELD_MASK_VALUE_PAIRS_IP_FLAGS_BE_MASK_LBN 1216
31111 #define	MAE_FIELD_MASK_VALUE_PAIRS_IP_FLAGS_BE_MASK_WIDTH 32
31112 #define	MAE_FIELD_MASK_VALUE_PAIRS_L4_SPORT_BE_OFST 156
31113 #define	MAE_FIELD_MASK_VALUE_PAIRS_L4_SPORT_BE_LEN 2
31114 #define	MAE_FIELD_MASK_VALUE_PAIRS_L4_SPORT_BE_LBN 1248
31115 #define	MAE_FIELD_MASK_VALUE_PAIRS_L4_SPORT_BE_WIDTH 16
31116 #define	MAE_FIELD_MASK_VALUE_PAIRS_L4_SPORT_BE_MASK_OFST 158
31117 #define	MAE_FIELD_MASK_VALUE_PAIRS_L4_SPORT_BE_MASK_LEN 2
31118 #define	MAE_FIELD_MASK_VALUE_PAIRS_L4_SPORT_BE_MASK_LBN 1264
31119 #define	MAE_FIELD_MASK_VALUE_PAIRS_L4_SPORT_BE_MASK_WIDTH 16
31120 #define	MAE_FIELD_MASK_VALUE_PAIRS_L4_DPORT_BE_OFST 160
31121 #define	MAE_FIELD_MASK_VALUE_PAIRS_L4_DPORT_BE_LEN 2
31122 #define	MAE_FIELD_MASK_VALUE_PAIRS_L4_DPORT_BE_LBN 1280
31123 #define	MAE_FIELD_MASK_VALUE_PAIRS_L4_DPORT_BE_WIDTH 16
31124 #define	MAE_FIELD_MASK_VALUE_PAIRS_L4_DPORT_BE_MASK_OFST 162
31125 #define	MAE_FIELD_MASK_VALUE_PAIRS_L4_DPORT_BE_MASK_LEN 2
31126 #define	MAE_FIELD_MASK_VALUE_PAIRS_L4_DPORT_BE_MASK_LBN 1296
31127 #define	MAE_FIELD_MASK_VALUE_PAIRS_L4_DPORT_BE_MASK_WIDTH 16
31128 #define	MAE_FIELD_MASK_VALUE_PAIRS_TCP_FLAGS_BE_OFST 164
31129 #define	MAE_FIELD_MASK_VALUE_PAIRS_TCP_FLAGS_BE_LEN 2
31130 #define	MAE_FIELD_MASK_VALUE_PAIRS_TCP_FLAGS_BE_LBN 1312
31131 #define	MAE_FIELD_MASK_VALUE_PAIRS_TCP_FLAGS_BE_WIDTH 16
31132 #define	MAE_FIELD_MASK_VALUE_PAIRS_TCP_FLAGS_BE_MASK_OFST 166
31133 #define	MAE_FIELD_MASK_VALUE_PAIRS_TCP_FLAGS_BE_MASK_LEN 2
31134 #define	MAE_FIELD_MASK_VALUE_PAIRS_TCP_FLAGS_BE_MASK_LBN 1328
31135 #define	MAE_FIELD_MASK_VALUE_PAIRS_TCP_FLAGS_BE_MASK_WIDTH 16
31136 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENCAP_TYPE_OFST 168
31137 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENCAP_TYPE_LEN 4
31138 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENCAP_TYPE_LBN 1344
31139 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENCAP_TYPE_WIDTH 32
31140 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENCAP_TYPE_MASK_OFST 172
31141 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENCAP_TYPE_MASK_LEN 4
31142 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENCAP_TYPE_MASK_LBN 1376
31143 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENCAP_TYPE_MASK_WIDTH 32
31144 #define	MAE_FIELD_MASK_VALUE_PAIRS_OUTER_RULE_ID_OFST 176
31145 #define	MAE_FIELD_MASK_VALUE_PAIRS_OUTER_RULE_ID_LEN 4
31146 #define	MAE_FIELD_MASK_VALUE_PAIRS_OUTER_RULE_ID_LBN 1408
31147 #define	MAE_FIELD_MASK_VALUE_PAIRS_OUTER_RULE_ID_WIDTH 32
31148 #define	MAE_FIELD_MASK_VALUE_PAIRS_OUTER_RULE_ID_MASK_OFST 180
31149 #define	MAE_FIELD_MASK_VALUE_PAIRS_OUTER_RULE_ID_MASK_LEN 4
31150 #define	MAE_FIELD_MASK_VALUE_PAIRS_OUTER_RULE_ID_MASK_LBN 1440
31151 #define	MAE_FIELD_MASK_VALUE_PAIRS_OUTER_RULE_ID_MASK_WIDTH 32
31152 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_ETHER_TYPE_BE_OFST 184
31153 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_ETHER_TYPE_BE_LEN 2
31154 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_ETHER_TYPE_BE_LBN 1472
31155 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_ETHER_TYPE_BE_WIDTH 16
31156 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_ETHER_TYPE_BE_MASK_OFST 188
31157 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_ETHER_TYPE_BE_MASK_LEN 2
31158 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_ETHER_TYPE_BE_MASK_LBN 1504
31159 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_ETHER_TYPE_BE_MASK_WIDTH 16
31160 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_VLAN0_TCI_BE_OFST 192
31161 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_VLAN0_TCI_BE_LEN 2
31162 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_VLAN0_TCI_BE_LBN 1536
31163 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_VLAN0_TCI_BE_WIDTH 16
31164 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_VLAN0_TCI_BE_MASK_OFST 194
31165 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_VLAN0_TCI_BE_MASK_LEN 2
31166 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_VLAN0_TCI_BE_MASK_LBN 1552
31167 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_VLAN0_TCI_BE_MASK_WIDTH 16
31168 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_VLAN0_PROTO_BE_OFST 196
31169 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_VLAN0_PROTO_BE_LEN 2
31170 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_VLAN0_PROTO_BE_LBN 1568
31171 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_VLAN0_PROTO_BE_WIDTH 16
31172 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_VLAN0_PROTO_BE_MASK_OFST 198
31173 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_VLAN0_PROTO_BE_MASK_LEN 2
31174 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_VLAN0_PROTO_BE_MASK_LBN 1584
31175 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_VLAN0_PROTO_BE_MASK_WIDTH 16
31176 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_VLAN1_TCI_BE_OFST 200
31177 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_VLAN1_TCI_BE_LEN 2
31178 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_VLAN1_TCI_BE_LBN 1600
31179 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_VLAN1_TCI_BE_WIDTH 16
31180 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_VLAN1_TCI_BE_MASK_OFST 202
31181 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_VLAN1_TCI_BE_MASK_LEN 2
31182 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_VLAN1_TCI_BE_MASK_LBN 1616
31183 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_VLAN1_TCI_BE_MASK_WIDTH 16
31184 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_VLAN1_PROTO_BE_OFST 204
31185 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_VLAN1_PROTO_BE_LEN 2
31186 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_VLAN1_PROTO_BE_LBN 1632
31187 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_VLAN1_PROTO_BE_WIDTH 16
31188 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_VLAN1_PROTO_BE_MASK_OFST 206
31189 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_VLAN1_PROTO_BE_MASK_LEN 2
31190 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_VLAN1_PROTO_BE_MASK_LBN 1648
31191 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_VLAN1_PROTO_BE_MASK_WIDTH 16
31192 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_ETH_SADDR_BE_OFST 208
31193 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_ETH_SADDR_BE_LEN 6
31194 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_ETH_SADDR_BE_LBN 1664
31195 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_ETH_SADDR_BE_WIDTH 48
31196 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_ETH_SADDR_BE_MASK_OFST 214
31197 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_ETH_SADDR_BE_MASK_LEN 6
31198 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_ETH_SADDR_BE_MASK_LBN 1712
31199 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_ETH_SADDR_BE_MASK_WIDTH 48
31200 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_ETH_DADDR_BE_OFST 220
31201 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_ETH_DADDR_BE_LEN 6
31202 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_ETH_DADDR_BE_LBN 1760
31203 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_ETH_DADDR_BE_WIDTH 48
31204 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_ETH_DADDR_BE_MASK_OFST 226
31205 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_ETH_DADDR_BE_MASK_LEN 6
31206 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_ETH_DADDR_BE_MASK_LBN 1808
31207 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_ETH_DADDR_BE_MASK_WIDTH 48
31208 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_SRC_IP4_BE_OFST 232
31209 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_SRC_IP4_BE_LEN 4
31210 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_SRC_IP4_BE_LBN 1856
31211 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_SRC_IP4_BE_WIDTH 32
31212 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_SRC_IP4_BE_MASK_OFST 236
31213 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_SRC_IP4_BE_MASK_LEN 4
31214 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_SRC_IP4_BE_MASK_LBN 1888
31215 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_SRC_IP4_BE_MASK_WIDTH 32
31216 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_SRC_IP6_BE_OFST 240
31217 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_SRC_IP6_BE_LEN 16
31218 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_SRC_IP6_BE_LBN 1920
31219 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_SRC_IP6_BE_WIDTH 128
31220 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_SRC_IP6_BE_MASK_OFST 256
31221 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_SRC_IP6_BE_MASK_LEN 16
31222 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_SRC_IP6_BE_MASK_LBN 2048
31223 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_SRC_IP6_BE_MASK_WIDTH 128
31224 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_DST_IP4_BE_OFST 272
31225 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_DST_IP4_BE_LEN 4
31226 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_DST_IP4_BE_LBN 2176
31227 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_DST_IP4_BE_WIDTH 32
31228 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_DST_IP4_BE_MASK_OFST 276
31229 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_DST_IP4_BE_MASK_LEN 4
31230 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_DST_IP4_BE_MASK_LBN 2208
31231 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_DST_IP4_BE_MASK_WIDTH 32
31232 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_DST_IP6_BE_OFST 280
31233 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_DST_IP6_BE_LEN 16
31234 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_DST_IP6_BE_LBN 2240
31235 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_DST_IP6_BE_WIDTH 128
31236 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_DST_IP6_BE_MASK_OFST 296
31237 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_DST_IP6_BE_MASK_LEN 16
31238 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_DST_IP6_BE_MASK_LBN 2368
31239 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_DST_IP6_BE_MASK_WIDTH 128
31240 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_IP_PROTO_OFST 312
31241 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_IP_PROTO_LEN 1
31242 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_IP_PROTO_LBN 2496
31243 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_IP_PROTO_WIDTH 8
31244 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_IP_PROTO_MASK_OFST 313
31245 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_IP_PROTO_MASK_LEN 1
31246 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_IP_PROTO_MASK_LBN 2504
31247 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_IP_PROTO_MASK_WIDTH 8
31248 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_IP_TOS_OFST 314
31249 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_IP_TOS_LEN 1
31250 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_IP_TOS_LBN 2512
31251 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_IP_TOS_WIDTH 8
31252 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_IP_TOS_MASK_OFST 315
31253 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_IP_TOS_MASK_LEN 1
31254 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_IP_TOS_MASK_LBN 2520
31255 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_IP_TOS_MASK_WIDTH 8
31256 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_IP_TTL_OFST 316
31257 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_IP_TTL_LEN 1
31258 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_IP_TTL_LBN 2528
31259 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_IP_TTL_WIDTH 8
31260 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_IP_TTL_MASK_OFST 317
31261 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_IP_TTL_MASK_LEN 1
31262 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_IP_TTL_MASK_LBN 2536
31263 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_IP_TTL_MASK_WIDTH 8
31264 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_IP_FLAGS_BE_OFST 320
31265 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_IP_FLAGS_BE_LEN 4
31266 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_IP_FLAGS_BE_LBN 2560
31267 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_IP_FLAGS_BE_WIDTH 32
31268 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_IP_FLAGS_BE_MASK_OFST 324
31269 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_IP_FLAGS_BE_MASK_LEN 4
31270 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_IP_FLAGS_BE_MASK_LBN 2592
31271 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_IP_FLAGS_BE_MASK_WIDTH 32
31272 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_L4_SPORT_BE_OFST 328
31273 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_L4_SPORT_BE_LEN 2
31274 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_L4_SPORT_BE_LBN 2624
31275 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_L4_SPORT_BE_WIDTH 16
31276 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_L4_SPORT_BE_MASK_OFST 330
31277 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_L4_SPORT_BE_MASK_LEN 2
31278 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_L4_SPORT_BE_MASK_LBN 2640
31279 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_L4_SPORT_BE_MASK_WIDTH 16
31280 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_L4_DPORT_BE_OFST 332
31281 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_L4_DPORT_BE_LEN 2
31282 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_L4_DPORT_BE_LBN 2656
31283 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_L4_DPORT_BE_WIDTH 16
31284 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_L4_DPORT_BE_MASK_OFST 334
31285 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_L4_DPORT_BE_MASK_LEN 2
31286 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_L4_DPORT_BE_MASK_LBN 2672
31287 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_L4_DPORT_BE_MASK_WIDTH 16
31288 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_VNET_ID_BE_OFST 336
31289 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_VNET_ID_BE_LEN 4
31290 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_VNET_ID_BE_LBN 2688
31291 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_VNET_ID_BE_WIDTH 32
31292 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_VNET_ID_BE_MASK_OFST 340
31293 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_VNET_ID_BE_MASK_LEN 4
31294 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_VNET_ID_BE_MASK_LBN 2720
31295 #define	MAE_FIELD_MASK_VALUE_PAIRS_ENC_VNET_ID_BE_MASK_WIDTH 32
31296 
31297 /* MAE_FIELD_MASK_VALUE_PAIRS_V2 structuredef */
31298 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_LEN 372
31299 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_INGRESS_MPORT_SELECTOR_OFST 0
31300 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_INGRESS_MPORT_SELECTOR_LEN 4
31301 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_INGRESS_MPORT_SELECTOR_LBN 0
31302 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_INGRESS_MPORT_SELECTOR_WIDTH 32
31303 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_INGRESS_MPORT_SELECTOR_MASK_OFST 4
31304 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_INGRESS_MPORT_SELECTOR_MASK_LEN 4
31305 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_INGRESS_MPORT_SELECTOR_MASK_LBN 32
31306 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_INGRESS_MPORT_SELECTOR_MASK_WIDTH 32
31307 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_MARK_OFST 8
31308 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_MARK_LEN 4
31309 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_MARK_LBN 64
31310 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_MARK_WIDTH 32
31311 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_MARK_MASK_OFST 12
31312 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_MARK_MASK_LEN 4
31313 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_MARK_MASK_LBN 96
31314 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_MARK_MASK_WIDTH 32
31315 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ETHER_TYPE_BE_OFST 16
31316 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ETHER_TYPE_BE_LEN 2
31317 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ETHER_TYPE_BE_LBN 128
31318 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ETHER_TYPE_BE_WIDTH 16
31319 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ETHER_TYPE_BE_MASK_OFST 18
31320 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ETHER_TYPE_BE_MASK_LEN 2
31321 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ETHER_TYPE_BE_MASK_LBN 144
31322 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ETHER_TYPE_BE_MASK_WIDTH 16
31323 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_VLAN0_TCI_BE_OFST 20
31324 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_VLAN0_TCI_BE_LEN 2
31325 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_VLAN0_TCI_BE_LBN 160
31326 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_VLAN0_TCI_BE_WIDTH 16
31327 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_VLAN0_TCI_BE_MASK_OFST 22
31328 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_VLAN0_TCI_BE_MASK_LEN 2
31329 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_VLAN0_TCI_BE_MASK_LBN 176
31330 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_VLAN0_TCI_BE_MASK_WIDTH 16
31331 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_VLAN0_PROTO_BE_OFST 24
31332 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_VLAN0_PROTO_BE_LEN 2
31333 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_VLAN0_PROTO_BE_LBN 192
31334 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_VLAN0_PROTO_BE_WIDTH 16
31335 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_VLAN0_PROTO_BE_MASK_OFST 26
31336 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_VLAN0_PROTO_BE_MASK_LEN 2
31337 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_VLAN0_PROTO_BE_MASK_LBN 208
31338 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_VLAN0_PROTO_BE_MASK_WIDTH 16
31339 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_VLAN1_TCI_BE_OFST 28
31340 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_VLAN1_TCI_BE_LEN 2
31341 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_VLAN1_TCI_BE_LBN 224
31342 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_VLAN1_TCI_BE_WIDTH 16
31343 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_VLAN1_TCI_BE_MASK_OFST 30
31344 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_VLAN1_TCI_BE_MASK_LEN 2
31345 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_VLAN1_TCI_BE_MASK_LBN 240
31346 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_VLAN1_TCI_BE_MASK_WIDTH 16
31347 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_VLAN1_PROTO_BE_OFST 32
31348 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_VLAN1_PROTO_BE_LEN 2
31349 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_VLAN1_PROTO_BE_LBN 256
31350 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_VLAN1_PROTO_BE_WIDTH 16
31351 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_VLAN1_PROTO_BE_MASK_OFST 34
31352 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_VLAN1_PROTO_BE_MASK_LEN 2
31353 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_VLAN1_PROTO_BE_MASK_LBN 272
31354 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_VLAN1_PROTO_BE_MASK_WIDTH 16
31355 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ETH_SADDR_BE_OFST 36
31356 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ETH_SADDR_BE_LEN 6
31357 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ETH_SADDR_BE_LBN 288
31358 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ETH_SADDR_BE_WIDTH 48
31359 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ETH_SADDR_BE_MASK_OFST 42
31360 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ETH_SADDR_BE_MASK_LEN 6
31361 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ETH_SADDR_BE_MASK_LBN 336
31362 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ETH_SADDR_BE_MASK_WIDTH 48
31363 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ETH_DADDR_BE_OFST 48
31364 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ETH_DADDR_BE_LEN 6
31365 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ETH_DADDR_BE_LBN 384
31366 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ETH_DADDR_BE_WIDTH 48
31367 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ETH_DADDR_BE_MASK_OFST 54
31368 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ETH_DADDR_BE_MASK_LEN 6
31369 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ETH_DADDR_BE_MASK_LBN 432
31370 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ETH_DADDR_BE_MASK_WIDTH 48
31371 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_SRC_IP4_BE_OFST 60
31372 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_SRC_IP4_BE_LEN 4
31373 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_SRC_IP4_BE_LBN 480
31374 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_SRC_IP4_BE_WIDTH 32
31375 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_SRC_IP4_BE_MASK_OFST 64
31376 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_SRC_IP4_BE_MASK_LEN 4
31377 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_SRC_IP4_BE_MASK_LBN 512
31378 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_SRC_IP4_BE_MASK_WIDTH 32
31379 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_SRC_IP6_BE_OFST 68
31380 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_SRC_IP6_BE_LEN 16
31381 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_SRC_IP6_BE_LBN 544
31382 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_SRC_IP6_BE_WIDTH 128
31383 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_SRC_IP6_BE_MASK_OFST 84
31384 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_SRC_IP6_BE_MASK_LEN 16
31385 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_SRC_IP6_BE_MASK_LBN 672
31386 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_SRC_IP6_BE_MASK_WIDTH 128
31387 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_DST_IP4_BE_OFST 100
31388 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_DST_IP4_BE_LEN 4
31389 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_DST_IP4_BE_LBN 800
31390 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_DST_IP4_BE_WIDTH 32
31391 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_DST_IP4_BE_MASK_OFST 104
31392 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_DST_IP4_BE_MASK_LEN 4
31393 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_DST_IP4_BE_MASK_LBN 832
31394 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_DST_IP4_BE_MASK_WIDTH 32
31395 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_DST_IP6_BE_OFST 108
31396 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_DST_IP6_BE_LEN 16
31397 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_DST_IP6_BE_LBN 864
31398 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_DST_IP6_BE_WIDTH 128
31399 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_DST_IP6_BE_MASK_OFST 124
31400 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_DST_IP6_BE_MASK_LEN 16
31401 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_DST_IP6_BE_MASK_LBN 992
31402 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_DST_IP6_BE_MASK_WIDTH 128
31403 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_IP_PROTO_OFST 140
31404 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_IP_PROTO_LEN 1
31405 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_IP_PROTO_LBN 1120
31406 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_IP_PROTO_WIDTH 8
31407 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_IP_PROTO_MASK_OFST 141
31408 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_IP_PROTO_MASK_LEN 1
31409 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_IP_PROTO_MASK_LBN 1128
31410 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_IP_PROTO_MASK_WIDTH 8
31411 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_IP_TOS_OFST 142
31412 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_IP_TOS_LEN 1
31413 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_IP_TOS_LBN 1136
31414 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_IP_TOS_WIDTH 8
31415 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_IP_TOS_MASK_OFST 143
31416 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_IP_TOS_MASK_LEN 1
31417 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_IP_TOS_MASK_LBN 1144
31418 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_IP_TOS_MASK_WIDTH 8
31419 /* Due to hardware limitations, firmware may return
31420  * MC_CMD_ERR_EINVAL(BAD_IP_TTL) when attempting to match on an IP_TTL value
31421  * other than 1.
31422  */
31423 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_IP_TTL_OFST 144
31424 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_IP_TTL_LEN 1
31425 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_IP_TTL_LBN 1152
31426 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_IP_TTL_WIDTH 8
31427 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_IP_TTL_MASK_OFST 145
31428 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_IP_TTL_MASK_LEN 1
31429 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_IP_TTL_MASK_LBN 1160
31430 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_IP_TTL_MASK_WIDTH 8
31431 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_IP_FLAGS_BE_OFST 148
31432 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_IP_FLAGS_BE_LEN 4
31433 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_IP_FLAGS_BE_LBN 1184
31434 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_IP_FLAGS_BE_WIDTH 32
31435 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_IP_FLAGS_BE_MASK_OFST 152
31436 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_IP_FLAGS_BE_MASK_LEN 4
31437 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_IP_FLAGS_BE_MASK_LBN 1216
31438 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_IP_FLAGS_BE_MASK_WIDTH 32
31439 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_L4_SPORT_BE_OFST 156
31440 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_L4_SPORT_BE_LEN 2
31441 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_L4_SPORT_BE_LBN 1248
31442 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_L4_SPORT_BE_WIDTH 16
31443 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_L4_SPORT_BE_MASK_OFST 158
31444 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_L4_SPORT_BE_MASK_LEN 2
31445 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_L4_SPORT_BE_MASK_LBN 1264
31446 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_L4_SPORT_BE_MASK_WIDTH 16
31447 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_L4_DPORT_BE_OFST 160
31448 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_L4_DPORT_BE_LEN 2
31449 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_L4_DPORT_BE_LBN 1280
31450 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_L4_DPORT_BE_WIDTH 16
31451 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_L4_DPORT_BE_MASK_OFST 162
31452 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_L4_DPORT_BE_MASK_LEN 2
31453 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_L4_DPORT_BE_MASK_LBN 1296
31454 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_L4_DPORT_BE_MASK_WIDTH 16
31455 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_TCP_FLAGS_BE_OFST 164
31456 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_TCP_FLAGS_BE_LEN 2
31457 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_TCP_FLAGS_BE_LBN 1312
31458 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_TCP_FLAGS_BE_WIDTH 16
31459 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_TCP_FLAGS_BE_MASK_OFST 166
31460 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_TCP_FLAGS_BE_MASK_LEN 2
31461 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_TCP_FLAGS_BE_MASK_LBN 1328
31462 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_TCP_FLAGS_BE_MASK_WIDTH 16
31463 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENCAP_TYPE_OFST 168
31464 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENCAP_TYPE_LEN 4
31465 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENCAP_TYPE_LBN 1344
31466 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENCAP_TYPE_WIDTH 32
31467 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENCAP_TYPE_MASK_OFST 172
31468 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENCAP_TYPE_MASK_LEN 4
31469 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENCAP_TYPE_MASK_LBN 1376
31470 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENCAP_TYPE_MASK_WIDTH 32
31471 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_OUTER_RULE_ID_OFST 176
31472 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_OUTER_RULE_ID_LEN 4
31473 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_OUTER_RULE_ID_LBN 1408
31474 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_OUTER_RULE_ID_WIDTH 32
31475 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_OUTER_RULE_ID_MASK_OFST 180
31476 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_OUTER_RULE_ID_MASK_LEN 4
31477 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_OUTER_RULE_ID_MASK_LBN 1440
31478 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_OUTER_RULE_ID_MASK_WIDTH 32
31479 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_ETHER_TYPE_BE_OFST 184
31480 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_ETHER_TYPE_BE_LEN 2
31481 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_ETHER_TYPE_BE_LBN 1472
31482 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_ETHER_TYPE_BE_WIDTH 16
31483 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_ETHER_TYPE_BE_MASK_OFST 188
31484 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_ETHER_TYPE_BE_MASK_LEN 2
31485 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_ETHER_TYPE_BE_MASK_LBN 1504
31486 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_ETHER_TYPE_BE_MASK_WIDTH 16
31487 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_VLAN0_TCI_BE_OFST 192
31488 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_VLAN0_TCI_BE_LEN 2
31489 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_VLAN0_TCI_BE_LBN 1536
31490 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_VLAN0_TCI_BE_WIDTH 16
31491 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_VLAN0_TCI_BE_MASK_OFST 194
31492 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_VLAN0_TCI_BE_MASK_LEN 2
31493 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_VLAN0_TCI_BE_MASK_LBN 1552
31494 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_VLAN0_TCI_BE_MASK_WIDTH 16
31495 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_VLAN0_PROTO_BE_OFST 196
31496 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_VLAN0_PROTO_BE_LEN 2
31497 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_VLAN0_PROTO_BE_LBN 1568
31498 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_VLAN0_PROTO_BE_WIDTH 16
31499 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_VLAN0_PROTO_BE_MASK_OFST 198
31500 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_VLAN0_PROTO_BE_MASK_LEN 2
31501 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_VLAN0_PROTO_BE_MASK_LBN 1584
31502 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_VLAN0_PROTO_BE_MASK_WIDTH 16
31503 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_VLAN1_TCI_BE_OFST 200
31504 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_VLAN1_TCI_BE_LEN 2
31505 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_VLAN1_TCI_BE_LBN 1600
31506 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_VLAN1_TCI_BE_WIDTH 16
31507 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_VLAN1_TCI_BE_MASK_OFST 202
31508 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_VLAN1_TCI_BE_MASK_LEN 2
31509 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_VLAN1_TCI_BE_MASK_LBN 1616
31510 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_VLAN1_TCI_BE_MASK_WIDTH 16
31511 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_VLAN1_PROTO_BE_OFST 204
31512 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_VLAN1_PROTO_BE_LEN 2
31513 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_VLAN1_PROTO_BE_LBN 1632
31514 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_VLAN1_PROTO_BE_WIDTH 16
31515 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_VLAN1_PROTO_BE_MASK_OFST 206
31516 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_VLAN1_PROTO_BE_MASK_LEN 2
31517 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_VLAN1_PROTO_BE_MASK_LBN 1648
31518 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_VLAN1_PROTO_BE_MASK_WIDTH 16
31519 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_ETH_SADDR_BE_OFST 208
31520 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_ETH_SADDR_BE_LEN 6
31521 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_ETH_SADDR_BE_LBN 1664
31522 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_ETH_SADDR_BE_WIDTH 48
31523 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_ETH_SADDR_BE_MASK_OFST 214
31524 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_ETH_SADDR_BE_MASK_LEN 6
31525 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_ETH_SADDR_BE_MASK_LBN 1712
31526 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_ETH_SADDR_BE_MASK_WIDTH 48
31527 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_ETH_DADDR_BE_OFST 220
31528 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_ETH_DADDR_BE_LEN 6
31529 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_ETH_DADDR_BE_LBN 1760
31530 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_ETH_DADDR_BE_WIDTH 48
31531 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_ETH_DADDR_BE_MASK_OFST 226
31532 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_ETH_DADDR_BE_MASK_LEN 6
31533 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_ETH_DADDR_BE_MASK_LBN 1808
31534 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_ETH_DADDR_BE_MASK_WIDTH 48
31535 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_SRC_IP4_BE_OFST 232
31536 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_SRC_IP4_BE_LEN 4
31537 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_SRC_IP4_BE_LBN 1856
31538 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_SRC_IP4_BE_WIDTH 32
31539 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_SRC_IP4_BE_MASK_OFST 236
31540 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_SRC_IP4_BE_MASK_LEN 4
31541 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_SRC_IP4_BE_MASK_LBN 1888
31542 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_SRC_IP4_BE_MASK_WIDTH 32
31543 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_SRC_IP6_BE_OFST 240
31544 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_SRC_IP6_BE_LEN 16
31545 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_SRC_IP6_BE_LBN 1920
31546 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_SRC_IP6_BE_WIDTH 128
31547 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_SRC_IP6_BE_MASK_OFST 256
31548 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_SRC_IP6_BE_MASK_LEN 16
31549 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_SRC_IP6_BE_MASK_LBN 2048
31550 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_SRC_IP6_BE_MASK_WIDTH 128
31551 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_DST_IP4_BE_OFST 272
31552 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_DST_IP4_BE_LEN 4
31553 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_DST_IP4_BE_LBN 2176
31554 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_DST_IP4_BE_WIDTH 32
31555 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_DST_IP4_BE_MASK_OFST 276
31556 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_DST_IP4_BE_MASK_LEN 4
31557 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_DST_IP4_BE_MASK_LBN 2208
31558 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_DST_IP4_BE_MASK_WIDTH 32
31559 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_DST_IP6_BE_OFST 280
31560 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_DST_IP6_BE_LEN 16
31561 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_DST_IP6_BE_LBN 2240
31562 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_DST_IP6_BE_WIDTH 128
31563 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_DST_IP6_BE_MASK_OFST 296
31564 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_DST_IP6_BE_MASK_LEN 16
31565 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_DST_IP6_BE_MASK_LBN 2368
31566 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_DST_IP6_BE_MASK_WIDTH 128
31567 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_IP_PROTO_OFST 312
31568 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_IP_PROTO_LEN 1
31569 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_IP_PROTO_LBN 2496
31570 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_IP_PROTO_WIDTH 8
31571 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_IP_PROTO_MASK_OFST 313
31572 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_IP_PROTO_MASK_LEN 1
31573 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_IP_PROTO_MASK_LBN 2504
31574 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_IP_PROTO_MASK_WIDTH 8
31575 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_IP_TOS_OFST 314
31576 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_IP_TOS_LEN 1
31577 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_IP_TOS_LBN 2512
31578 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_IP_TOS_WIDTH 8
31579 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_IP_TOS_MASK_OFST 315
31580 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_IP_TOS_MASK_LEN 1
31581 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_IP_TOS_MASK_LBN 2520
31582 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_IP_TOS_MASK_WIDTH 8
31583 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_IP_TTL_OFST 316
31584 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_IP_TTL_LEN 1
31585 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_IP_TTL_LBN 2528
31586 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_IP_TTL_WIDTH 8
31587 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_IP_TTL_MASK_OFST 317
31588 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_IP_TTL_MASK_LEN 1
31589 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_IP_TTL_MASK_LBN 2536
31590 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_IP_TTL_MASK_WIDTH 8
31591 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_IP_FLAGS_BE_OFST 320
31592 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_IP_FLAGS_BE_LEN 4
31593 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_IP_FLAGS_BE_LBN 2560
31594 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_IP_FLAGS_BE_WIDTH 32
31595 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_IP_FLAGS_BE_MASK_OFST 324
31596 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_IP_FLAGS_BE_MASK_LEN 4
31597 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_IP_FLAGS_BE_MASK_LBN 2592
31598 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_IP_FLAGS_BE_MASK_WIDTH 32
31599 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_L4_SPORT_BE_OFST 328
31600 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_L4_SPORT_BE_LEN 2
31601 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_L4_SPORT_BE_LBN 2624
31602 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_L4_SPORT_BE_WIDTH 16
31603 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_L4_SPORT_BE_MASK_OFST 330
31604 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_L4_SPORT_BE_MASK_LEN 2
31605 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_L4_SPORT_BE_MASK_LBN 2640
31606 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_L4_SPORT_BE_MASK_WIDTH 16
31607 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_L4_DPORT_BE_OFST 332
31608 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_L4_DPORT_BE_LEN 2
31609 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_L4_DPORT_BE_LBN 2656
31610 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_L4_DPORT_BE_WIDTH 16
31611 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_L4_DPORT_BE_MASK_OFST 334
31612 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_L4_DPORT_BE_MASK_LEN 2
31613 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_L4_DPORT_BE_MASK_LBN 2672
31614 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_L4_DPORT_BE_MASK_WIDTH 16
31615 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_VNET_ID_BE_OFST 336
31616 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_VNET_ID_BE_LEN 4
31617 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_VNET_ID_BE_LBN 2688
31618 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_VNET_ID_BE_WIDTH 32
31619 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_VNET_ID_BE_MASK_OFST 340
31620 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_VNET_ID_BE_MASK_LEN 4
31621 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_VNET_ID_BE_MASK_LBN 2720
31622 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_VNET_ID_BE_MASK_WIDTH 32
31623 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_FLAGS_OFST 344
31624 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_FLAGS_LEN 4
31625 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_IS_IP_FRAG_OFST 344
31626 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_IS_IP_FRAG_LBN 0
31627 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_IS_IP_FRAG_WIDTH 1
31628 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_DO_CT_OFST 344
31629 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_DO_CT_LBN 1
31630 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_DO_CT_WIDTH 1
31631 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_CT_HIT_OFST 344
31632 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_CT_HIT_LBN 2
31633 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_CT_HIT_WIDTH 1
31634 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_IS_FROM_NETWORK_OFST 344
31635 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_IS_FROM_NETWORK_LBN 3
31636 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_IS_FROM_NETWORK_WIDTH 1
31637 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_HAS_OVLAN_OFST 344
31638 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_HAS_OVLAN_LBN 4
31639 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_HAS_OVLAN_WIDTH 1
31640 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_HAS_IVLAN_OFST 344
31641 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_HAS_IVLAN_LBN 5
31642 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_HAS_IVLAN_WIDTH 1
31643 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_HAS_OVLAN_OFST 344
31644 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_HAS_OVLAN_LBN 6
31645 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_HAS_OVLAN_WIDTH 1
31646 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_HAS_IVLAN_OFST 344
31647 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_HAS_IVLAN_LBN 7
31648 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_ENC_HAS_IVLAN_WIDTH 1
31649 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_TCP_SYN_FIN_RST_OFST 344
31650 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_TCP_SYN_FIN_RST_LBN 8
31651 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_TCP_SYN_FIN_RST_WIDTH 1
31652 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_IP_FIRST_FRAG_OFST 344
31653 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_IP_FIRST_FRAG_LBN 9
31654 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_IP_FIRST_FRAG_WIDTH 1
31655 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_FLAGS_LBN 2752
31656 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_FLAGS_WIDTH 32
31657 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_FLAGS_MASK_OFST 348
31658 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_FLAGS_MASK_LEN 4
31659 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_FLAGS_MASK_LBN 2784
31660 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_FLAGS_MASK_WIDTH 32
31661 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_CT_DOMAIN_OFST 352
31662 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_CT_DOMAIN_LEN 2
31663 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_CT_DOMAIN_LBN 2816
31664 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_CT_DOMAIN_WIDTH 16
31665 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_CT_DOMAIN_MASK_OFST 354
31666 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_CT_DOMAIN_MASK_LEN 2
31667 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_CT_DOMAIN_MASK_LBN 2832
31668 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_CT_DOMAIN_MASK_WIDTH 16
31669 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_CT_MARK_OFST 356
31670 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_CT_MARK_LEN 4
31671 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_CT_MARK_LBN 2848
31672 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_CT_MARK_WIDTH 32
31673 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_CT_MARK_MASK_OFST 360
31674 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_CT_MARK_MASK_LEN 4
31675 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_CT_MARK_MASK_LBN 2880
31676 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_CT_MARK_MASK_WIDTH 32
31677 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_CT_PRIVATE_FLAGS_OFST 364
31678 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_CT_PRIVATE_FLAGS_LEN 1
31679 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_CT_PRIVATE_FLAGS_LBN 2912
31680 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_CT_PRIVATE_FLAGS_WIDTH 8
31681 /* Set to zero. */
31682 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_RSVD2_OFST 365
31683 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_RSVD2_LEN 1
31684 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_RSVD2_LBN 2920
31685 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_RSVD2_WIDTH 8
31686 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_CT_PRIVATE_FLAGS_MASK_OFST 366
31687 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_CT_PRIVATE_FLAGS_MASK_LEN 1
31688 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_CT_PRIVATE_FLAGS_MASK_LBN 2928
31689 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_CT_PRIVATE_FLAGS_MASK_WIDTH 8
31690 /* Set to zero. */
31691 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_RSVD3_OFST 367
31692 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_RSVD3_LEN 1
31693 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_RSVD3_LBN 2936
31694 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_RSVD3_WIDTH 8
31695 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_RECIRC_ID_OFST 368
31696 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_RECIRC_ID_LEN 1
31697 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_RECIRC_ID_LBN 2944
31698 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_RECIRC_ID_WIDTH 8
31699 /* Set to zero */
31700 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_RSVD4_OFST 369
31701 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_RSVD4_LEN 1
31702 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_RSVD4_LBN 2952
31703 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_RSVD4_WIDTH 8
31704 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_RECIRC_ID_MASK_OFST 370
31705 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_RECIRC_ID_MASK_LEN 1
31706 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_RECIRC_ID_MASK_LBN 2960
31707 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_RECIRC_ID_MASK_WIDTH 8
31708 /* Set to zero */
31709 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_RSVD5_OFST 371
31710 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_RSVD5_LEN 1
31711 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_RSVD5_LBN 2968
31712 #define	MAE_FIELD_MASK_VALUE_PAIRS_V2_RSVD5_WIDTH 8
31713 
31714 /* MAE_MPORT_SELECTOR structuredef: MPORTS are identified by an opaque unsigned
31715  * integer value (mport_id) that is guaranteed to be representable within
31716  * 32-bits or within any NIC interface field that needs store the value
31717  * (whichever is narrower). This selector structure provides a stable way to
31718  * refer to m-ports.
31719  */
31720 #define	MAE_MPORT_SELECTOR_LEN 4
31721 /* Used to force the tools to output bitfield-style defines for this structure.
31722  */
31723 #define	MAE_MPORT_SELECTOR_FLAT_OFST 0
31724 #define	MAE_MPORT_SELECTOR_FLAT_LEN 4
31725 /* enum: An m-port selector value that is guaranteed never to represent a real
31726  * mport
31727  */
31728 #define	MAE_MPORT_SELECTOR_NULL 0x0
31729 /* enum: The m-port assigned to the calling client. */
31730 #define	MAE_MPORT_SELECTOR_ASSIGNED 0x1000000
31731 #define	MAE_MPORT_SELECTOR_TYPE_OFST 0
31732 #define	MAE_MPORT_SELECTOR_TYPE_LBN 24
31733 #define	MAE_MPORT_SELECTOR_TYPE_WIDTH 8
31734 /* enum: The MPORT connected to a given physical port */
31735 #define	MAE_MPORT_SELECTOR_TYPE_PPORT 0x2
31736 /* enum: The MPORT assigned to a given PCIe function. Deprecated in favour of
31737  * MH_FUNC.
31738  */
31739 #define	MAE_MPORT_SELECTOR_TYPE_FUNC 0x3
31740 /* enum: An mport_id */
31741 #define	MAE_MPORT_SELECTOR_TYPE_MPORT_ID 0x4
31742 /* enum: The MPORT assigned to a given PCIe function (see also FWRIVERHD-1108)
31743  */
31744 #define	MAE_MPORT_SELECTOR_TYPE_MH_FUNC 0x5
31745 /* enum: This is guaranteed never to be a valid selector type */
31746 #define	MAE_MPORT_SELECTOR_TYPE_INVALID 0xff
31747 #define	MAE_MPORT_SELECTOR_MPORT_ID_OFST 0
31748 #define	MAE_MPORT_SELECTOR_MPORT_ID_LBN 0
31749 #define	MAE_MPORT_SELECTOR_MPORT_ID_WIDTH 24
31750 #define	MAE_MPORT_SELECTOR_PPORT_ID_OFST 0
31751 #define	MAE_MPORT_SELECTOR_PPORT_ID_LBN 0
31752 #define	MAE_MPORT_SELECTOR_PPORT_ID_WIDTH 4
31753 #define	MAE_MPORT_SELECTOR_FUNC_INTF_ID_OFST 0
31754 #define	MAE_MPORT_SELECTOR_FUNC_INTF_ID_LBN 20
31755 #define	MAE_MPORT_SELECTOR_FUNC_INTF_ID_WIDTH 4
31756 #define	MAE_MPORT_SELECTOR_HOST_PRIMARY 0x1 /* enum */
31757 #define	MAE_MPORT_SELECTOR_NIC_EMBEDDED 0x2 /* enum */
31758 /* enum: Deprecated, use CALLER_INTF instead. */
31759 #define	MAE_MPORT_SELECTOR_CALLER 0xf
31760 #define	MAE_MPORT_SELECTOR_CALLER_INTF 0xf /* enum */
31761 #define	MAE_MPORT_SELECTOR_FUNC_MH_PF_ID_OFST 0
31762 #define	MAE_MPORT_SELECTOR_FUNC_MH_PF_ID_LBN 16
31763 #define	MAE_MPORT_SELECTOR_FUNC_MH_PF_ID_WIDTH 4
31764 #define	MAE_MPORT_SELECTOR_FUNC_PF_ID_OFST 0
31765 #define	MAE_MPORT_SELECTOR_FUNC_PF_ID_LBN 16
31766 #define	MAE_MPORT_SELECTOR_FUNC_PF_ID_WIDTH 8
31767 #define	MAE_MPORT_SELECTOR_FUNC_VF_ID_OFST 0
31768 #define	MAE_MPORT_SELECTOR_FUNC_VF_ID_LBN 0
31769 #define	MAE_MPORT_SELECTOR_FUNC_VF_ID_WIDTH 16
31770 /* enum: Used for VF_ID to indicate a physical function. */
31771 #define	MAE_MPORT_SELECTOR_FUNC_VF_ID_NULL 0xffff
31772 /* enum: Used for PF_ID to indicate the physical function of the calling
31773  * client. - When used by a PF with VF_ID == VF_ID_NULL, the mport selector
31774  * relates to the calling function. (For clarity, it is recommended that
31775  * clients use ASSIGNED to achieve this behaviour). - When used by a PF with
31776  * VF_ID != VF_ID_NULL, the mport selector relates to a VF child of the calling
31777  * function. - When used by a VF with VF_ID == VF_ID_NULL, the mport selector
31778  * relates to the PF owning the calling function. - When used by a VF with
31779  * VF_ID != VF_ID_NULL, the mport selector relates to a sibling VF of the
31780  * calling function. - Not meaningful used by a client that is not a PCIe
31781  * function.
31782  */
31783 #define	MAE_MPORT_SELECTOR_FUNC_PF_ID_CALLER 0xff
31784 /* enum: Same as PF_ID_CALLER, but for use in the smaller MH_PF_ID field. Only
31785  * valid if FUNC_INTF_ID is CALLER.
31786  */
31787 #define	MAE_MPORT_SELECTOR_FUNC_MH_PF_ID_CALLER 0xf
31788 #define	MAE_MPORT_SELECTOR_FLAT_LBN 0
31789 #define	MAE_MPORT_SELECTOR_FLAT_WIDTH 32
31790 
31791 /* MAE_LINK_ENDPOINT_SELECTOR structuredef: Structure that identifies a real or
31792  * virtual network port by MAE port and link end. Intended to be used by
31793  * network port MCDI commands. Setting FLAT to MAE_LINK_ENDPOINT_COMPAT is
31794  * equivalent to using the previous version of the command. Not all possible
31795  * combinations of MPORT_END and MPORT_SELECTOR in MAE_LINK_ENDPOINT_SELECTOR
31796  * will work in all circumstances. 1. Some will always work (e.g. a VF can
31797  * always address its logical MAC using MPORT_SELECTOR=ASSIGNED,LINK_END=VNIC),
31798  * 2. Some are not meaningful and will always fail with EINVAL (e.g. attempting
31799  * to address the VNIC end of a link to a physical port), 3. Some are
31800  * meaningful but require the MCDI client to have the required permission and
31801  * fail with EPERM otherwise (e.g. trying to set the MAC on a VF the caller
31802  * cannot administer), and 4. Some could be implementation-specific and fail
31803  * with ENOTSUP if not available (no examples exist right now). See
31804  * SF-123581-TC section 4.3 for more details.
31805  */
31806 #define	MAE_LINK_ENDPOINT_SELECTOR_LEN 8
31807 /* Identifier for the MAE MPORT of interest */
31808 #define	MAE_LINK_ENDPOINT_SELECTOR_MPORT_SELECTOR_OFST 0
31809 #define	MAE_LINK_ENDPOINT_SELECTOR_MPORT_SELECTOR_LEN 4
31810 #define	MAE_LINK_ENDPOINT_SELECTOR_MPORT_SELECTOR_LBN 0
31811 #define	MAE_LINK_ENDPOINT_SELECTOR_MPORT_SELECTOR_WIDTH 32
31812 /* Which end of the link identified by MPORT to consider */
31813 #define	MAE_LINK_ENDPOINT_SELECTOR_LINK_END_OFST 4
31814 #define	MAE_LINK_ENDPOINT_SELECTOR_LINK_END_LEN 4
31815 /*            Enum values, see field(s): */
31816 /*               MAE_MPORT_END */
31817 #define	MAE_LINK_ENDPOINT_SELECTOR_LINK_END_LBN 32
31818 #define	MAE_LINK_ENDPOINT_SELECTOR_LINK_END_WIDTH 32
31819 /* A field for accessing the endpoint selector as a collection of bits */
31820 #define	MAE_LINK_ENDPOINT_SELECTOR_FLAT_OFST 0
31821 #define	MAE_LINK_ENDPOINT_SELECTOR_FLAT_LEN 8
31822 #define	MAE_LINK_ENDPOINT_SELECTOR_FLAT_LO_OFST 0
31823 #define	MAE_LINK_ENDPOINT_SELECTOR_FLAT_LO_LEN 4
31824 #define	MAE_LINK_ENDPOINT_SELECTOR_FLAT_LO_LBN 0
31825 #define	MAE_LINK_ENDPOINT_SELECTOR_FLAT_LO_WIDTH 32
31826 #define	MAE_LINK_ENDPOINT_SELECTOR_FLAT_HI_OFST 4
31827 #define	MAE_LINK_ENDPOINT_SELECTOR_FLAT_HI_LEN 4
31828 #define	MAE_LINK_ENDPOINT_SELECTOR_FLAT_HI_LBN 32
31829 #define	MAE_LINK_ENDPOINT_SELECTOR_FLAT_HI_WIDTH 32
31830 /* enum: Set FLAT to this value to obtain backward-compatible behaviour in
31831  * commands that have been extended to take a MAE_LINK_ENDPOINT_SELECTOR
31832  * argument. New commands that are designed to take such an argument from the
31833  * start will not support this.
31834  */
31835 #define	MAE_LINK_ENDPOINT_SELECTOR_MAE_LINK_ENDPOINT_COMPAT 0x0
31836 #define	MAE_LINK_ENDPOINT_SELECTOR_FLAT_LBN 0
31837 #define	MAE_LINK_ENDPOINT_SELECTOR_FLAT_WIDTH 64
31838 
31839 
31840 /***********************************/
31841 /* MC_CMD_MAE_GET_CAPS
31842  * Describes capabilities of the MAE (Match-Action Engine)
31843  */
31844 #define	MC_CMD_MAE_GET_CAPS 0x140
31845 #define	MC_CMD_MAE_GET_CAPS_MSGSET 0x140
31846 #undef	MC_CMD_0x140_PRIVILEGE_CTG
31847 
31848 #define	MC_CMD_0x140_PRIVILEGE_CTG SRIOV_CTG_GENERAL
31849 
31850 /* MC_CMD_MAE_GET_CAPS_IN msgrequest */
31851 #define	MC_CMD_MAE_GET_CAPS_IN_LEN 0
31852 
31853 /* MC_CMD_MAE_GET_CAPS_OUT msgresponse */
31854 #define	MC_CMD_MAE_GET_CAPS_OUT_LEN 52
31855 /* The number of field IDs that the NIC supports. Any field with a ID greater
31856  * than or equal to the value returned in this field must be treated as having
31857  * a support level of MAE_FIELD_UNSUPPORTED in all requests.
31858  */
31859 #define	MC_CMD_MAE_GET_CAPS_OUT_MATCH_FIELD_COUNT_OFST 0
31860 #define	MC_CMD_MAE_GET_CAPS_OUT_MATCH_FIELD_COUNT_LEN 4
31861 #define	MC_CMD_MAE_GET_CAPS_OUT_ENCAP_TYPES_SUPPORTED_OFST 4
31862 #define	MC_CMD_MAE_GET_CAPS_OUT_ENCAP_TYPES_SUPPORTED_LEN 4
31863 #define	MC_CMD_MAE_GET_CAPS_OUT_ENCAP_TYPE_VXLAN_OFST 4
31864 #define	MC_CMD_MAE_GET_CAPS_OUT_ENCAP_TYPE_VXLAN_LBN 0
31865 #define	MC_CMD_MAE_GET_CAPS_OUT_ENCAP_TYPE_VXLAN_WIDTH 1
31866 #define	MC_CMD_MAE_GET_CAPS_OUT_ENCAP_TYPE_NVGRE_OFST 4
31867 #define	MC_CMD_MAE_GET_CAPS_OUT_ENCAP_TYPE_NVGRE_LBN 1
31868 #define	MC_CMD_MAE_GET_CAPS_OUT_ENCAP_TYPE_NVGRE_WIDTH 1
31869 #define	MC_CMD_MAE_GET_CAPS_OUT_ENCAP_TYPE_GENEVE_OFST 4
31870 #define	MC_CMD_MAE_GET_CAPS_OUT_ENCAP_TYPE_GENEVE_LBN 2
31871 #define	MC_CMD_MAE_GET_CAPS_OUT_ENCAP_TYPE_GENEVE_WIDTH 1
31872 #define	MC_CMD_MAE_GET_CAPS_OUT_ENCAP_TYPE_L2GRE_OFST 4
31873 #define	MC_CMD_MAE_GET_CAPS_OUT_ENCAP_TYPE_L2GRE_LBN 3
31874 #define	MC_CMD_MAE_GET_CAPS_OUT_ENCAP_TYPE_L2GRE_WIDTH 1
31875 /* Deprecated alias for AR_COUNTERS. */
31876 #define	MC_CMD_MAE_GET_CAPS_OUT_COUNTERS_OFST 8
31877 #define	MC_CMD_MAE_GET_CAPS_OUT_COUNTERS_LEN 4
31878 /* The total number of AR counters available to allocate. */
31879 #define	MC_CMD_MAE_GET_CAPS_OUT_AR_COUNTERS_OFST 8
31880 #define	MC_CMD_MAE_GET_CAPS_OUT_AR_COUNTERS_LEN 4
31881 /* The total number of counters lists available to allocate. A value of zero
31882  * indicates that counter lists are not supported by the NIC. (But single
31883  * counters may still be.)
31884  */
31885 #define	MC_CMD_MAE_GET_CAPS_OUT_COUNTER_LISTS_OFST 12
31886 #define	MC_CMD_MAE_GET_CAPS_OUT_COUNTER_LISTS_LEN 4
31887 /* The total number of encap header structures available to allocate. */
31888 #define	MC_CMD_MAE_GET_CAPS_OUT_ENCAP_HEADER_LIMIT_OFST 16
31889 #define	MC_CMD_MAE_GET_CAPS_OUT_ENCAP_HEADER_LIMIT_LEN 4
31890 /* Reserved. Should be zero. */
31891 #define	MC_CMD_MAE_GET_CAPS_OUT_RSVD_OFST 20
31892 #define	MC_CMD_MAE_GET_CAPS_OUT_RSVD_LEN 4
31893 /* The total number of action sets available to allocate. */
31894 #define	MC_CMD_MAE_GET_CAPS_OUT_ACTION_SETS_OFST 24
31895 #define	MC_CMD_MAE_GET_CAPS_OUT_ACTION_SETS_LEN 4
31896 /* The total number of action set lists available to allocate. */
31897 #define	MC_CMD_MAE_GET_CAPS_OUT_ACTION_SET_LISTS_OFST 28
31898 #define	MC_CMD_MAE_GET_CAPS_OUT_ACTION_SET_LISTS_LEN 4
31899 /* The total number of outer rules available to allocate. */
31900 #define	MC_CMD_MAE_GET_CAPS_OUT_OUTER_RULES_OFST 32
31901 #define	MC_CMD_MAE_GET_CAPS_OUT_OUTER_RULES_LEN 4
31902 /* The total number of action rules available to allocate. */
31903 #define	MC_CMD_MAE_GET_CAPS_OUT_ACTION_RULES_OFST 36
31904 #define	MC_CMD_MAE_GET_CAPS_OUT_ACTION_RULES_LEN 4
31905 /* The number of priorities available for ACTION_RULE filters. It is invalid to
31906  * install a MATCH_ACTION filter with a priority number >= ACTION_PRIOS.
31907  */
31908 #define	MC_CMD_MAE_GET_CAPS_OUT_ACTION_PRIOS_OFST 40
31909 #define	MC_CMD_MAE_GET_CAPS_OUT_ACTION_PRIOS_LEN 4
31910 /* The number of priorities available for OUTER_RULE filters. It is invalid to
31911  * install an OUTER_RULE filter with a priority number >= OUTER_PRIOS.
31912  */
31913 #define	MC_CMD_MAE_GET_CAPS_OUT_OUTER_PRIOS_OFST 44
31914 #define	MC_CMD_MAE_GET_CAPS_OUT_OUTER_PRIOS_LEN 4
31915 /* MAE API major version. Currently 1. If this field is not present in the
31916  * response (i.e. response shorter than 384 bits), then its value is zero. If
31917  * the value does not match the client's expectations, the client should raise
31918  * a fatal error.
31919  */
31920 #define	MC_CMD_MAE_GET_CAPS_OUT_API_VER_OFST 48
31921 #define	MC_CMD_MAE_GET_CAPS_OUT_API_VER_LEN 4
31922 
31923 /* MC_CMD_MAE_GET_CAPS_V2_OUT msgresponse */
31924 #define	MC_CMD_MAE_GET_CAPS_V2_OUT_LEN 60
31925 /* The number of field IDs that the NIC supports. Any field with a ID greater
31926  * than or equal to the value returned in this field must be treated as having
31927  * a support level of MAE_FIELD_UNSUPPORTED in all requests.
31928  */
31929 #define	MC_CMD_MAE_GET_CAPS_V2_OUT_MATCH_FIELD_COUNT_OFST 0
31930 #define	MC_CMD_MAE_GET_CAPS_V2_OUT_MATCH_FIELD_COUNT_LEN 4
31931 #define	MC_CMD_MAE_GET_CAPS_V2_OUT_ENCAP_TYPES_SUPPORTED_OFST 4
31932 #define	MC_CMD_MAE_GET_CAPS_V2_OUT_ENCAP_TYPES_SUPPORTED_LEN 4
31933 #define	MC_CMD_MAE_GET_CAPS_V2_OUT_ENCAP_TYPE_VXLAN_OFST 4
31934 #define	MC_CMD_MAE_GET_CAPS_V2_OUT_ENCAP_TYPE_VXLAN_LBN 0
31935 #define	MC_CMD_MAE_GET_CAPS_V2_OUT_ENCAP_TYPE_VXLAN_WIDTH 1
31936 #define	MC_CMD_MAE_GET_CAPS_V2_OUT_ENCAP_TYPE_NVGRE_OFST 4
31937 #define	MC_CMD_MAE_GET_CAPS_V2_OUT_ENCAP_TYPE_NVGRE_LBN 1
31938 #define	MC_CMD_MAE_GET_CAPS_V2_OUT_ENCAP_TYPE_NVGRE_WIDTH 1
31939 #define	MC_CMD_MAE_GET_CAPS_V2_OUT_ENCAP_TYPE_GENEVE_OFST 4
31940 #define	MC_CMD_MAE_GET_CAPS_V2_OUT_ENCAP_TYPE_GENEVE_LBN 2
31941 #define	MC_CMD_MAE_GET_CAPS_V2_OUT_ENCAP_TYPE_GENEVE_WIDTH 1
31942 #define	MC_CMD_MAE_GET_CAPS_V2_OUT_ENCAP_TYPE_L2GRE_OFST 4
31943 #define	MC_CMD_MAE_GET_CAPS_V2_OUT_ENCAP_TYPE_L2GRE_LBN 3
31944 #define	MC_CMD_MAE_GET_CAPS_V2_OUT_ENCAP_TYPE_L2GRE_WIDTH 1
31945 /* Deprecated alias for AR_COUNTERS. */
31946 #define	MC_CMD_MAE_GET_CAPS_V2_OUT_COUNTERS_OFST 8
31947 #define	MC_CMD_MAE_GET_CAPS_V2_OUT_COUNTERS_LEN 4
31948 /* The total number of AR counters available to allocate. */
31949 #define	MC_CMD_MAE_GET_CAPS_V2_OUT_AR_COUNTERS_OFST 8
31950 #define	MC_CMD_MAE_GET_CAPS_V2_OUT_AR_COUNTERS_LEN 4
31951 /* The total number of counters lists available to allocate. A value of zero
31952  * indicates that counter lists are not supported by the NIC. (But single
31953  * counters may still be.)
31954  */
31955 #define	MC_CMD_MAE_GET_CAPS_V2_OUT_COUNTER_LISTS_OFST 12
31956 #define	MC_CMD_MAE_GET_CAPS_V2_OUT_COUNTER_LISTS_LEN 4
31957 /* The total number of encap header structures available to allocate. */
31958 #define	MC_CMD_MAE_GET_CAPS_V2_OUT_ENCAP_HEADER_LIMIT_OFST 16
31959 #define	MC_CMD_MAE_GET_CAPS_V2_OUT_ENCAP_HEADER_LIMIT_LEN 4
31960 /* Reserved. Should be zero. */
31961 #define	MC_CMD_MAE_GET_CAPS_V2_OUT_RSVD_OFST 20
31962 #define	MC_CMD_MAE_GET_CAPS_V2_OUT_RSVD_LEN 4
31963 /* The total number of action sets available to allocate. */
31964 #define	MC_CMD_MAE_GET_CAPS_V2_OUT_ACTION_SETS_OFST 24
31965 #define	MC_CMD_MAE_GET_CAPS_V2_OUT_ACTION_SETS_LEN 4
31966 /* The total number of action set lists available to allocate. */
31967 #define	MC_CMD_MAE_GET_CAPS_V2_OUT_ACTION_SET_LISTS_OFST 28
31968 #define	MC_CMD_MAE_GET_CAPS_V2_OUT_ACTION_SET_LISTS_LEN 4
31969 /* The total number of outer rules available to allocate. */
31970 #define	MC_CMD_MAE_GET_CAPS_V2_OUT_OUTER_RULES_OFST 32
31971 #define	MC_CMD_MAE_GET_CAPS_V2_OUT_OUTER_RULES_LEN 4
31972 /* The total number of action rules available to allocate. */
31973 #define	MC_CMD_MAE_GET_CAPS_V2_OUT_ACTION_RULES_OFST 36
31974 #define	MC_CMD_MAE_GET_CAPS_V2_OUT_ACTION_RULES_LEN 4
31975 /* The number of priorities available for ACTION_RULE filters. It is invalid to
31976  * install a MATCH_ACTION filter with a priority number >= ACTION_PRIOS.
31977  */
31978 #define	MC_CMD_MAE_GET_CAPS_V2_OUT_ACTION_PRIOS_OFST 40
31979 #define	MC_CMD_MAE_GET_CAPS_V2_OUT_ACTION_PRIOS_LEN 4
31980 /* The number of priorities available for OUTER_RULE filters. It is invalid to
31981  * install an OUTER_RULE filter with a priority number >= OUTER_PRIOS.
31982  */
31983 #define	MC_CMD_MAE_GET_CAPS_V2_OUT_OUTER_PRIOS_OFST 44
31984 #define	MC_CMD_MAE_GET_CAPS_V2_OUT_OUTER_PRIOS_LEN 4
31985 /* MAE API major version. Currently 1. If this field is not present in the
31986  * response (i.e. response shorter than 384 bits), then its value is zero. If
31987  * the value does not match the client's expectations, the client should raise
31988  * a fatal error.
31989  */
31990 #define	MC_CMD_MAE_GET_CAPS_V2_OUT_API_VER_OFST 48
31991 #define	MC_CMD_MAE_GET_CAPS_V2_OUT_API_VER_LEN 4
31992 /* Mask of supported counter types. Each bit position corresponds to a value of
31993  * the MAE_COUNTER_TYPE enum. If this field is missing (i.e. V1 response),
31994  * clients must assume that only AR counters are supported (i.e.
31995  * COUNTER_TYPES_SUPPORTED==0x1). See also
31996  * MC_CMD_MAE_COUNTERS_STREAM_START/COUNTER_TYPES_MASK.
31997  */
31998 #define	MC_CMD_MAE_GET_CAPS_V2_OUT_COUNTER_TYPES_SUPPORTED_OFST 52
31999 #define	MC_CMD_MAE_GET_CAPS_V2_OUT_COUNTER_TYPES_SUPPORTED_LEN 4
32000 /* The total number of conntrack counters available to allocate. */
32001 #define	MC_CMD_MAE_GET_CAPS_V2_OUT_CT_COUNTERS_OFST 56
32002 #define	MC_CMD_MAE_GET_CAPS_V2_OUT_CT_COUNTERS_LEN 4
32003 
32004 /* MC_CMD_MAE_GET_CAPS_V3_OUT msgresponse */
32005 #define	MC_CMD_MAE_GET_CAPS_V3_OUT_LEN 64
32006 /* The number of field IDs that the NIC supports. Any field with a ID greater
32007  * than or equal to the value returned in this field must be treated as having
32008  * a support level of MAE_FIELD_UNSUPPORTED in all requests.
32009  */
32010 #define	MC_CMD_MAE_GET_CAPS_V3_OUT_MATCH_FIELD_COUNT_OFST 0
32011 #define	MC_CMD_MAE_GET_CAPS_V3_OUT_MATCH_FIELD_COUNT_LEN 4
32012 #define	MC_CMD_MAE_GET_CAPS_V3_OUT_ENCAP_TYPES_SUPPORTED_OFST 4
32013 #define	MC_CMD_MAE_GET_CAPS_V3_OUT_ENCAP_TYPES_SUPPORTED_LEN 4
32014 #define	MC_CMD_MAE_GET_CAPS_V3_OUT_ENCAP_TYPE_VXLAN_OFST 4
32015 #define	MC_CMD_MAE_GET_CAPS_V3_OUT_ENCAP_TYPE_VXLAN_LBN 0
32016 #define	MC_CMD_MAE_GET_CAPS_V3_OUT_ENCAP_TYPE_VXLAN_WIDTH 1
32017 #define	MC_CMD_MAE_GET_CAPS_V3_OUT_ENCAP_TYPE_NVGRE_OFST 4
32018 #define	MC_CMD_MAE_GET_CAPS_V3_OUT_ENCAP_TYPE_NVGRE_LBN 1
32019 #define	MC_CMD_MAE_GET_CAPS_V3_OUT_ENCAP_TYPE_NVGRE_WIDTH 1
32020 #define	MC_CMD_MAE_GET_CAPS_V3_OUT_ENCAP_TYPE_GENEVE_OFST 4
32021 #define	MC_CMD_MAE_GET_CAPS_V3_OUT_ENCAP_TYPE_GENEVE_LBN 2
32022 #define	MC_CMD_MAE_GET_CAPS_V3_OUT_ENCAP_TYPE_GENEVE_WIDTH 1
32023 #define	MC_CMD_MAE_GET_CAPS_V3_OUT_ENCAP_TYPE_L2GRE_OFST 4
32024 #define	MC_CMD_MAE_GET_CAPS_V3_OUT_ENCAP_TYPE_L2GRE_LBN 3
32025 #define	MC_CMD_MAE_GET_CAPS_V3_OUT_ENCAP_TYPE_L2GRE_WIDTH 1
32026 /* Deprecated alias for AR_COUNTERS. */
32027 #define	MC_CMD_MAE_GET_CAPS_V3_OUT_COUNTERS_OFST 8
32028 #define	MC_CMD_MAE_GET_CAPS_V3_OUT_COUNTERS_LEN 4
32029 /* The total number of AR counters available to allocate. */
32030 #define	MC_CMD_MAE_GET_CAPS_V3_OUT_AR_COUNTERS_OFST 8
32031 #define	MC_CMD_MAE_GET_CAPS_V3_OUT_AR_COUNTERS_LEN 4
32032 /* The total number of counters lists available to allocate. A value of zero
32033  * indicates that counter lists are not supported by the NIC. (But single
32034  * counters may still be.)
32035  */
32036 #define	MC_CMD_MAE_GET_CAPS_V3_OUT_COUNTER_LISTS_OFST 12
32037 #define	MC_CMD_MAE_GET_CAPS_V3_OUT_COUNTER_LISTS_LEN 4
32038 /* The total number of encap header structures available to allocate. */
32039 #define	MC_CMD_MAE_GET_CAPS_V3_OUT_ENCAP_HEADER_LIMIT_OFST 16
32040 #define	MC_CMD_MAE_GET_CAPS_V3_OUT_ENCAP_HEADER_LIMIT_LEN 4
32041 /* Reserved. Should be zero. */
32042 #define	MC_CMD_MAE_GET_CAPS_V3_OUT_RSVD_OFST 20
32043 #define	MC_CMD_MAE_GET_CAPS_V3_OUT_RSVD_LEN 4
32044 /* The total number of action sets available to allocate. */
32045 #define	MC_CMD_MAE_GET_CAPS_V3_OUT_ACTION_SETS_OFST 24
32046 #define	MC_CMD_MAE_GET_CAPS_V3_OUT_ACTION_SETS_LEN 4
32047 /* The total number of action set lists available to allocate. */
32048 #define	MC_CMD_MAE_GET_CAPS_V3_OUT_ACTION_SET_LISTS_OFST 28
32049 #define	MC_CMD_MAE_GET_CAPS_V3_OUT_ACTION_SET_LISTS_LEN 4
32050 /* The total number of outer rules available to allocate. */
32051 #define	MC_CMD_MAE_GET_CAPS_V3_OUT_OUTER_RULES_OFST 32
32052 #define	MC_CMD_MAE_GET_CAPS_V3_OUT_OUTER_RULES_LEN 4
32053 /* The total number of action rules available to allocate. */
32054 #define	MC_CMD_MAE_GET_CAPS_V3_OUT_ACTION_RULES_OFST 36
32055 #define	MC_CMD_MAE_GET_CAPS_V3_OUT_ACTION_RULES_LEN 4
32056 /* The number of priorities available for ACTION_RULE filters. It is invalid to
32057  * install a MATCH_ACTION filter with a priority number >= ACTION_PRIOS.
32058  */
32059 #define	MC_CMD_MAE_GET_CAPS_V3_OUT_ACTION_PRIOS_OFST 40
32060 #define	MC_CMD_MAE_GET_CAPS_V3_OUT_ACTION_PRIOS_LEN 4
32061 /* The number of priorities available for OUTER_RULE filters. It is invalid to
32062  * install an OUTER_RULE filter with a priority number >= OUTER_PRIOS.
32063  */
32064 #define	MC_CMD_MAE_GET_CAPS_V3_OUT_OUTER_PRIOS_OFST 44
32065 #define	MC_CMD_MAE_GET_CAPS_V3_OUT_OUTER_PRIOS_LEN 4
32066 /* MAE API major version. Currently 1. If this field is not present in the
32067  * response (i.e. response shorter than 384 bits), then its value is zero. If
32068  * the value does not match the client's expectations, the client should raise
32069  * a fatal error.
32070  */
32071 #define	MC_CMD_MAE_GET_CAPS_V3_OUT_API_VER_OFST 48
32072 #define	MC_CMD_MAE_GET_CAPS_V3_OUT_API_VER_LEN 4
32073 /* Mask of supported counter types. Each bit position corresponds to a value of
32074  * the MAE_COUNTER_TYPE enum. If this field is missing (i.e. V1 response),
32075  * clients must assume that only AR counters are supported (i.e.
32076  * COUNTER_TYPES_SUPPORTED==0x1). See also
32077  * MC_CMD_MAE_COUNTERS_STREAM_START/COUNTER_TYPES_MASK.
32078  */
32079 #define	MC_CMD_MAE_GET_CAPS_V3_OUT_COUNTER_TYPES_SUPPORTED_OFST 52
32080 #define	MC_CMD_MAE_GET_CAPS_V3_OUT_COUNTER_TYPES_SUPPORTED_LEN 4
32081 /* The total number of conntrack counters available to allocate. */
32082 #define	MC_CMD_MAE_GET_CAPS_V3_OUT_CT_COUNTERS_OFST 56
32083 #define	MC_CMD_MAE_GET_CAPS_V3_OUT_CT_COUNTERS_LEN 4
32084 /* The total number of Outer Rule counters available to allocate. */
32085 #define	MC_CMD_MAE_GET_CAPS_V3_OUT_OR_COUNTERS_OFST 60
32086 #define	MC_CMD_MAE_GET_CAPS_V3_OUT_OR_COUNTERS_LEN 4
32087 
32088 
32089 /***********************************/
32090 /* MC_CMD_MAE_GET_AR_CAPS
32091  * Get a level of support for match fields when used in match-action rules
32092  */
32093 #define	MC_CMD_MAE_GET_AR_CAPS 0x141
32094 #define	MC_CMD_MAE_GET_AR_CAPS_MSGSET 0x141
32095 #undef	MC_CMD_0x141_PRIVILEGE_CTG
32096 
32097 #define	MC_CMD_0x141_PRIVILEGE_CTG SRIOV_CTG_MAE
32098 
32099 /* MC_CMD_MAE_GET_AR_CAPS_IN msgrequest */
32100 #define	MC_CMD_MAE_GET_AR_CAPS_IN_LEN 0
32101 
32102 /* MC_CMD_MAE_GET_AR_CAPS_OUT msgresponse */
32103 #define	MC_CMD_MAE_GET_AR_CAPS_OUT_LENMIN 4
32104 #define	MC_CMD_MAE_GET_AR_CAPS_OUT_LENMAX 252
32105 #define	MC_CMD_MAE_GET_AR_CAPS_OUT_LENMAX_MCDI2 1020
32106 #define	MC_CMD_MAE_GET_AR_CAPS_OUT_LEN(num) (4+4*(num))
32107 #define	MC_CMD_MAE_GET_AR_CAPS_OUT_FIELD_FLAGS_NUM(len) (((len)-4)/4)
32108 /* Number of fields actually returned in FIELD_FLAGS. */
32109 #define	MC_CMD_MAE_GET_AR_CAPS_OUT_COUNT_OFST 0
32110 #define	MC_CMD_MAE_GET_AR_CAPS_OUT_COUNT_LEN 4
32111 /* Array of values indicating the NIC's support for a given field, indexed by
32112  * field id. The driver must ensure space for
32113  * MC_CMD_MAE_GET_CAPS.MATCH_FIELD_COUNT entries in the array..
32114  */
32115 #define	MC_CMD_MAE_GET_AR_CAPS_OUT_FIELD_FLAGS_OFST 4
32116 #define	MC_CMD_MAE_GET_AR_CAPS_OUT_FIELD_FLAGS_LEN 4
32117 #define	MC_CMD_MAE_GET_AR_CAPS_OUT_FIELD_FLAGS_MINNUM 0
32118 #define	MC_CMD_MAE_GET_AR_CAPS_OUT_FIELD_FLAGS_MAXNUM 62
32119 #define	MC_CMD_MAE_GET_AR_CAPS_OUT_FIELD_FLAGS_MAXNUM_MCDI2 254
32120 
32121 
32122 /***********************************/
32123 /* MC_CMD_MAE_GET_OR_CAPS
32124  * Get a level of support for fields used in outer rule keys.
32125  */
32126 #define	MC_CMD_MAE_GET_OR_CAPS 0x142
32127 #define	MC_CMD_MAE_GET_OR_CAPS_MSGSET 0x142
32128 #undef	MC_CMD_0x142_PRIVILEGE_CTG
32129 
32130 #define	MC_CMD_0x142_PRIVILEGE_CTG SRIOV_CTG_MAE
32131 
32132 /* MC_CMD_MAE_GET_OR_CAPS_IN msgrequest */
32133 #define	MC_CMD_MAE_GET_OR_CAPS_IN_LEN 0
32134 
32135 /* MC_CMD_MAE_GET_OR_CAPS_OUT msgresponse */
32136 #define	MC_CMD_MAE_GET_OR_CAPS_OUT_LENMIN 4
32137 #define	MC_CMD_MAE_GET_OR_CAPS_OUT_LENMAX 252
32138 #define	MC_CMD_MAE_GET_OR_CAPS_OUT_LENMAX_MCDI2 1020
32139 #define	MC_CMD_MAE_GET_OR_CAPS_OUT_LEN(num) (4+4*(num))
32140 #define	MC_CMD_MAE_GET_OR_CAPS_OUT_FIELD_FLAGS_NUM(len) (((len)-4)/4)
32141 /* Number of fields actually returned in FIELD_FLAGS. */
32142 #define	MC_CMD_MAE_GET_OR_CAPS_OUT_COUNT_OFST 0
32143 #define	MC_CMD_MAE_GET_OR_CAPS_OUT_COUNT_LEN 4
32144 /* Same semantics as MC_CMD_MAE_GET_AR_CAPS.MAE_FIELD_FLAGS */
32145 #define	MC_CMD_MAE_GET_OR_CAPS_OUT_FIELD_FLAGS_OFST 4
32146 #define	MC_CMD_MAE_GET_OR_CAPS_OUT_FIELD_FLAGS_LEN 4
32147 #define	MC_CMD_MAE_GET_OR_CAPS_OUT_FIELD_FLAGS_MINNUM 0
32148 #define	MC_CMD_MAE_GET_OR_CAPS_OUT_FIELD_FLAGS_MAXNUM 62
32149 #define	MC_CMD_MAE_GET_OR_CAPS_OUT_FIELD_FLAGS_MAXNUM_MCDI2 254
32150 
32151 
32152 /***********************************/
32153 /* MC_CMD_MAE_COUNTER_ALLOC
32154  * Allocate match-action-engine counters, which can be referenced in various
32155  * tables.
32156  */
32157 #define	MC_CMD_MAE_COUNTER_ALLOC 0x143
32158 #define	MC_CMD_MAE_COUNTER_ALLOC_MSGSET 0x143
32159 #undef	MC_CMD_0x143_PRIVILEGE_CTG
32160 
32161 #define	MC_CMD_0x143_PRIVILEGE_CTG SRIOV_CTG_MAE
32162 
32163 /* MC_CMD_MAE_COUNTER_ALLOC_IN msgrequest: Using this is equivalent to using V2
32164  * with COUNTER_TYPE=AR.
32165  */
32166 #define	MC_CMD_MAE_COUNTER_ALLOC_IN_LEN 4
32167 /* The number of counters that the driver would like allocated */
32168 #define	MC_CMD_MAE_COUNTER_ALLOC_IN_REQUESTED_COUNT_OFST 0
32169 #define	MC_CMD_MAE_COUNTER_ALLOC_IN_REQUESTED_COUNT_LEN 4
32170 
32171 /* MC_CMD_MAE_COUNTER_ALLOC_V2_IN msgrequest */
32172 #define	MC_CMD_MAE_COUNTER_ALLOC_V2_IN_LEN 8
32173 /* The number of counters that the driver would like allocated */
32174 #define	MC_CMD_MAE_COUNTER_ALLOC_V2_IN_REQUESTED_COUNT_OFST 0
32175 #define	MC_CMD_MAE_COUNTER_ALLOC_V2_IN_REQUESTED_COUNT_LEN 4
32176 /* Which type of counter to allocate. */
32177 #define	MC_CMD_MAE_COUNTER_ALLOC_V2_IN_COUNTER_TYPE_OFST 4
32178 #define	MC_CMD_MAE_COUNTER_ALLOC_V2_IN_COUNTER_TYPE_LEN 4
32179 /*            Enum values, see field(s): */
32180 /*               MAE_COUNTER_TYPE */
32181 
32182 /* MC_CMD_MAE_COUNTER_ALLOC_OUT msgresponse */
32183 #define	MC_CMD_MAE_COUNTER_ALLOC_OUT_LENMIN 12
32184 #define	MC_CMD_MAE_COUNTER_ALLOC_OUT_LENMAX 252
32185 #define	MC_CMD_MAE_COUNTER_ALLOC_OUT_LENMAX_MCDI2 1020
32186 #define	MC_CMD_MAE_COUNTER_ALLOC_OUT_LEN(num) (8+4*(num))
32187 #define	MC_CMD_MAE_COUNTER_ALLOC_OUT_COUNTER_ID_NUM(len) (((len)-8)/4)
32188 /* Generation count. Packets with generation count >= GENERATION_COUNT will
32189  * contain valid counter values for counter IDs allocated in this call, unless
32190  * the counter values are zero and zero squash is enabled. Note that there is
32191  * an independent GENERATION_COUNT object per counter type, and that generation
32192  * counts wrap from 0xffffffff to 1.
32193  */
32194 #define	MC_CMD_MAE_COUNTER_ALLOC_OUT_GENERATION_COUNT_OFST 0
32195 #define	MC_CMD_MAE_COUNTER_ALLOC_OUT_GENERATION_COUNT_LEN 4
32196 /* enum: Generation counter 0 is reserved and unused. */
32197 #define	MC_CMD_MAE_COUNTER_ALLOC_OUT_GENERATION_COUNT_INVALID 0x0
32198 /* The number of counter IDs that the NIC allocated. It is never less than 1;
32199  * failure to allocate a single counter will cause an error to be returned. It
32200  * is never greater than REQUESTED_COUNT, but may be less.
32201  */
32202 #define	MC_CMD_MAE_COUNTER_ALLOC_OUT_COUNTER_ID_COUNT_OFST 4
32203 #define	MC_CMD_MAE_COUNTER_ALLOC_OUT_COUNTER_ID_COUNT_LEN 4
32204 /* An array containing the IDs for the counters allocated. */
32205 #define	MC_CMD_MAE_COUNTER_ALLOC_OUT_COUNTER_ID_OFST 8
32206 #define	MC_CMD_MAE_COUNTER_ALLOC_OUT_COUNTER_ID_LEN 4
32207 #define	MC_CMD_MAE_COUNTER_ALLOC_OUT_COUNTER_ID_MINNUM 1
32208 #define	MC_CMD_MAE_COUNTER_ALLOC_OUT_COUNTER_ID_MAXNUM 61
32209 #define	MC_CMD_MAE_COUNTER_ALLOC_OUT_COUNTER_ID_MAXNUM_MCDI2 253
32210 /* enum: A counter ID that is guaranteed never to represent a real counter */
32211 #define	MC_CMD_MAE_COUNTER_ALLOC_OUT_COUNTER_ID_NULL 0xffffffff
32212 /*            Other enum values, see field(s): */
32213 /*               MAE_COUNTER_ID */
32214 
32215 
32216 /***********************************/
32217 /* MC_CMD_MAE_COUNTER_FREE
32218  * Free match-action-engine counters
32219  */
32220 #define	MC_CMD_MAE_COUNTER_FREE 0x144
32221 #define	MC_CMD_MAE_COUNTER_FREE_MSGSET 0x144
32222 #undef	MC_CMD_0x144_PRIVILEGE_CTG
32223 
32224 #define	MC_CMD_0x144_PRIVILEGE_CTG SRIOV_CTG_MAE
32225 
32226 /* MC_CMD_MAE_COUNTER_FREE_IN msgrequest: Using this is equivalent to using V2
32227  * with COUNTER_TYPE=AR.
32228  */
32229 #define	MC_CMD_MAE_COUNTER_FREE_IN_LENMIN 8
32230 #define	MC_CMD_MAE_COUNTER_FREE_IN_LENMAX 132
32231 #define	MC_CMD_MAE_COUNTER_FREE_IN_LENMAX_MCDI2 132
32232 #define	MC_CMD_MAE_COUNTER_FREE_IN_LEN(num) (4+4*(num))
32233 #define	MC_CMD_MAE_COUNTER_FREE_IN_FREE_COUNTER_ID_NUM(len) (((len)-4)/4)
32234 /* The number of counter IDs to be freed. */
32235 #define	MC_CMD_MAE_COUNTER_FREE_IN_COUNTER_ID_COUNT_OFST 0
32236 #define	MC_CMD_MAE_COUNTER_FREE_IN_COUNTER_ID_COUNT_LEN 4
32237 /* An array containing the counter IDs to be freed. */
32238 #define	MC_CMD_MAE_COUNTER_FREE_IN_FREE_COUNTER_ID_OFST 4
32239 #define	MC_CMD_MAE_COUNTER_FREE_IN_FREE_COUNTER_ID_LEN 4
32240 #define	MC_CMD_MAE_COUNTER_FREE_IN_FREE_COUNTER_ID_MINNUM 1
32241 #define	MC_CMD_MAE_COUNTER_FREE_IN_FREE_COUNTER_ID_MAXNUM 32
32242 #define	MC_CMD_MAE_COUNTER_FREE_IN_FREE_COUNTER_ID_MAXNUM_MCDI2 32
32243 
32244 /* MC_CMD_MAE_COUNTER_FREE_V2_IN msgrequest */
32245 #define	MC_CMD_MAE_COUNTER_FREE_V2_IN_LEN 136
32246 /* The number of counter IDs to be freed. */
32247 #define	MC_CMD_MAE_COUNTER_FREE_V2_IN_COUNTER_ID_COUNT_OFST 0
32248 #define	MC_CMD_MAE_COUNTER_FREE_V2_IN_COUNTER_ID_COUNT_LEN 4
32249 /* An array containing the counter IDs to be freed. */
32250 #define	MC_CMD_MAE_COUNTER_FREE_V2_IN_FREE_COUNTER_ID_OFST 4
32251 #define	MC_CMD_MAE_COUNTER_FREE_V2_IN_FREE_COUNTER_ID_LEN 4
32252 #define	MC_CMD_MAE_COUNTER_FREE_V2_IN_FREE_COUNTER_ID_MINNUM 1
32253 #define	MC_CMD_MAE_COUNTER_FREE_V2_IN_FREE_COUNTER_ID_MAXNUM 32
32254 #define	MC_CMD_MAE_COUNTER_FREE_V2_IN_FREE_COUNTER_ID_MAXNUM_MCDI2 32
32255 /* Which type of counter to free. */
32256 #define	MC_CMD_MAE_COUNTER_FREE_V2_IN_COUNTER_TYPE_OFST 132
32257 #define	MC_CMD_MAE_COUNTER_FREE_V2_IN_COUNTER_TYPE_LEN 4
32258 /*            Enum values, see field(s): */
32259 /*               MAE_COUNTER_TYPE */
32260 
32261 /* MC_CMD_MAE_COUNTER_FREE_OUT msgresponse */
32262 #define	MC_CMD_MAE_COUNTER_FREE_OUT_LENMIN 12
32263 #define	MC_CMD_MAE_COUNTER_FREE_OUT_LENMAX 136
32264 #define	MC_CMD_MAE_COUNTER_FREE_OUT_LENMAX_MCDI2 136
32265 #define	MC_CMD_MAE_COUNTER_FREE_OUT_LEN(num) (8+4*(num))
32266 #define	MC_CMD_MAE_COUNTER_FREE_OUT_FREED_COUNTER_ID_NUM(len) (((len)-8)/4)
32267 /* Generation count. A packet with generation count == GENERATION_COUNT will
32268  * contain the final values for these counter IDs, unless the counter values
32269  * are zero and zero squash is enabled. Note that the GENERATION_COUNT value is
32270  * specific to the COUNTER_TYPE (IDENTIFIER field in packet header). Receiving
32271  * a packet with generation count > GENERATION_COUNT guarantees that no more
32272  * values will be written for these counters. If values for these counter IDs
32273  * are present, the counter ID has been reallocated. A counter ID will not be
32274  * reallocated within a single read cycle as this would merge increments from
32275  * the 'old' and 'new' counters. GENERATION_COUNT_INVALID is reserved and
32276  * unused.
32277  */
32278 #define	MC_CMD_MAE_COUNTER_FREE_OUT_GENERATION_COUNT_OFST 0
32279 #define	MC_CMD_MAE_COUNTER_FREE_OUT_GENERATION_COUNT_LEN 4
32280 /* The number of counter IDs actually freed. It is never less than 1; failure
32281  * to free a single counter will cause an error to be returned. It is never
32282  * greater than the number that were requested to be freed, but may be less if
32283  * counters could not be freed.
32284  */
32285 #define	MC_CMD_MAE_COUNTER_FREE_OUT_COUNTER_ID_COUNT_OFST 4
32286 #define	MC_CMD_MAE_COUNTER_FREE_OUT_COUNTER_ID_COUNT_LEN 4
32287 /* An array containing the IDs for the counters to that were freed. Note,
32288  * failure to free a counter can only occur on incorrect driver behaviour, so
32289  * asserting that the expected counters were freed is reasonable. When
32290  * debugging, attempting to free a single counter at a time will provide a
32291  * reason for the failure to free said counter.
32292  */
32293 #define	MC_CMD_MAE_COUNTER_FREE_OUT_FREED_COUNTER_ID_OFST 8
32294 #define	MC_CMD_MAE_COUNTER_FREE_OUT_FREED_COUNTER_ID_LEN 4
32295 #define	MC_CMD_MAE_COUNTER_FREE_OUT_FREED_COUNTER_ID_MINNUM 1
32296 #define	MC_CMD_MAE_COUNTER_FREE_OUT_FREED_COUNTER_ID_MAXNUM 32
32297 #define	MC_CMD_MAE_COUNTER_FREE_OUT_FREED_COUNTER_ID_MAXNUM_MCDI2 32
32298 
32299 
32300 /***********************************/
32301 /* MC_CMD_MAE_COUNTERS_STREAM_START
32302  * Start streaming counter values, specifying an RxQ to deliver packets to.
32303  * Counters allocated to the calling function will be written in a round robin
32304  * at a fixed cycle rate, assuming sufficient credits are available. The driver
32305  * may cause the counter values to be written at a slower rate by constraining
32306  * the availability of credits. Note that if the driver wishes to deliver
32307  * packets to a different queue, it must call MAE_COUNTERS_STREAM_STOP to stop
32308  * delivering packets to the current queue first.
32309  */
32310 #define	MC_CMD_MAE_COUNTERS_STREAM_START 0x151
32311 #define	MC_CMD_MAE_COUNTERS_STREAM_START_MSGSET 0x151
32312 #undef	MC_CMD_0x151_PRIVILEGE_CTG
32313 
32314 #define	MC_CMD_0x151_PRIVILEGE_CTG SRIOV_CTG_MAE
32315 
32316 /* MC_CMD_MAE_COUNTERS_STREAM_START_IN msgrequest: Using V1 is equivalent to V2
32317  * with COUNTER_TYPES_MASK=0x1 (i.e. AR counters only).
32318  */
32319 #define	MC_CMD_MAE_COUNTERS_STREAM_START_IN_LEN 8
32320 /* The RxQ to write packets to. */
32321 #define	MC_CMD_MAE_COUNTERS_STREAM_START_IN_QID_OFST 0
32322 #define	MC_CMD_MAE_COUNTERS_STREAM_START_IN_QID_LEN 2
32323 /* Maximum size in bytes of packets that may be written to the RxQ. */
32324 #define	MC_CMD_MAE_COUNTERS_STREAM_START_IN_PACKET_SIZE_OFST 2
32325 #define	MC_CMD_MAE_COUNTERS_STREAM_START_IN_PACKET_SIZE_LEN 2
32326 /* Optional flags. */
32327 #define	MC_CMD_MAE_COUNTERS_STREAM_START_IN_FLAGS_OFST 4
32328 #define	MC_CMD_MAE_COUNTERS_STREAM_START_IN_FLAGS_LEN 4
32329 #define	MC_CMD_MAE_COUNTERS_STREAM_START_IN_ZERO_SQUASH_DISABLE_OFST 4
32330 #define	MC_CMD_MAE_COUNTERS_STREAM_START_IN_ZERO_SQUASH_DISABLE_LBN 0
32331 #define	MC_CMD_MAE_COUNTERS_STREAM_START_IN_ZERO_SQUASH_DISABLE_WIDTH 1
32332 #define	MC_CMD_MAE_COUNTERS_STREAM_START_IN_COUNTER_STALL_EN_OFST 4
32333 #define	MC_CMD_MAE_COUNTERS_STREAM_START_IN_COUNTER_STALL_EN_LBN 1
32334 #define	MC_CMD_MAE_COUNTERS_STREAM_START_IN_COUNTER_STALL_EN_WIDTH 1
32335 
32336 /* MC_CMD_MAE_COUNTERS_STREAM_START_V2_IN msgrequest */
32337 #define	MC_CMD_MAE_COUNTERS_STREAM_START_V2_IN_LEN 12
32338 /* The RxQ to write packets to. */
32339 #define	MC_CMD_MAE_COUNTERS_STREAM_START_V2_IN_QID_OFST 0
32340 #define	MC_CMD_MAE_COUNTERS_STREAM_START_V2_IN_QID_LEN 2
32341 /* Maximum size in bytes of packets that may be written to the RxQ. */
32342 #define	MC_CMD_MAE_COUNTERS_STREAM_START_V2_IN_PACKET_SIZE_OFST 2
32343 #define	MC_CMD_MAE_COUNTERS_STREAM_START_V2_IN_PACKET_SIZE_LEN 2
32344 /* Optional flags. */
32345 #define	MC_CMD_MAE_COUNTERS_STREAM_START_V2_IN_FLAGS_OFST 4
32346 #define	MC_CMD_MAE_COUNTERS_STREAM_START_V2_IN_FLAGS_LEN 4
32347 #define	MC_CMD_MAE_COUNTERS_STREAM_START_V2_IN_ZERO_SQUASH_DISABLE_OFST 4
32348 #define	MC_CMD_MAE_COUNTERS_STREAM_START_V2_IN_ZERO_SQUASH_DISABLE_LBN 0
32349 #define	MC_CMD_MAE_COUNTERS_STREAM_START_V2_IN_ZERO_SQUASH_DISABLE_WIDTH 1
32350 #define	MC_CMD_MAE_COUNTERS_STREAM_START_V2_IN_COUNTER_STALL_EN_OFST 4
32351 #define	MC_CMD_MAE_COUNTERS_STREAM_START_V2_IN_COUNTER_STALL_EN_LBN 1
32352 #define	MC_CMD_MAE_COUNTERS_STREAM_START_V2_IN_COUNTER_STALL_EN_WIDTH 1
32353 /* Mask of which counter types should be reported. Each bit position
32354  * corresponds to a value of the MAE_COUNTER_TYPE enum. For example a value of
32355  * 0x3 requests both AR and CT counters. A value of zero is invalid. Counter
32356  * types not selected by the mask value won't be included in the stream. If a
32357  * client wishes to change which counter types are reported, it must first call
32358  * MAE_COUNTERS_STREAM_STOP, then restart it with the new mask value.
32359  * Requesting a counter type which isn't supported by firmware (reported in
32360  * MC_CMD_MAE_GET_CAPS/COUNTER_TYPES_SUPPORTED) will result in ENOTSUP.
32361  */
32362 #define	MC_CMD_MAE_COUNTERS_STREAM_START_V2_IN_COUNTER_TYPES_MASK_OFST 8
32363 #define	MC_CMD_MAE_COUNTERS_STREAM_START_V2_IN_COUNTER_TYPES_MASK_LEN 4
32364 
32365 /* MC_CMD_MAE_COUNTERS_STREAM_START_OUT msgresponse */
32366 #define	MC_CMD_MAE_COUNTERS_STREAM_START_OUT_LEN 4
32367 #define	MC_CMD_MAE_COUNTERS_STREAM_START_OUT_FLAGS_OFST 0
32368 #define	MC_CMD_MAE_COUNTERS_STREAM_START_OUT_FLAGS_LEN 4
32369 #define	MC_CMD_MAE_COUNTERS_STREAM_START_OUT_USES_CREDITS_OFST 0
32370 #define	MC_CMD_MAE_COUNTERS_STREAM_START_OUT_USES_CREDITS_LBN 0
32371 #define	MC_CMD_MAE_COUNTERS_STREAM_START_OUT_USES_CREDITS_WIDTH 1
32372 
32373 
32374 /***********************************/
32375 /* MC_CMD_MAE_COUNTERS_STREAM_STOP
32376  * Stop streaming counter values to the specified RxQ.
32377  */
32378 #define	MC_CMD_MAE_COUNTERS_STREAM_STOP 0x152
32379 #define	MC_CMD_MAE_COUNTERS_STREAM_STOP_MSGSET 0x152
32380 #undef	MC_CMD_0x152_PRIVILEGE_CTG
32381 
32382 #define	MC_CMD_0x152_PRIVILEGE_CTG SRIOV_CTG_MAE
32383 
32384 /* MC_CMD_MAE_COUNTERS_STREAM_STOP_IN msgrequest */
32385 #define	MC_CMD_MAE_COUNTERS_STREAM_STOP_IN_LEN 2
32386 /* The RxQ to stop writing packets to. */
32387 #define	MC_CMD_MAE_COUNTERS_STREAM_STOP_IN_QID_OFST 0
32388 #define	MC_CMD_MAE_COUNTERS_STREAM_STOP_IN_QID_LEN 2
32389 
32390 /* MC_CMD_MAE_COUNTERS_STREAM_STOP_OUT msgresponse */
32391 #define	MC_CMD_MAE_COUNTERS_STREAM_STOP_OUT_LEN 4
32392 /* Generation count for AR counters. The final set of AR counter values will be
32393  * written out in packets with count == GENERATION_COUNT. An empty packet with
32394  * count > GENERATION_COUNT indicates that no more counter values of this type
32395  * will be written to this stream. GENERATION_COUNT_INVALID is reserved and
32396  * unused.
32397  */
32398 #define	MC_CMD_MAE_COUNTERS_STREAM_STOP_OUT_GENERATION_COUNT_OFST 0
32399 #define	MC_CMD_MAE_COUNTERS_STREAM_STOP_OUT_GENERATION_COUNT_LEN 4
32400 
32401 /* MC_CMD_MAE_COUNTERS_STREAM_STOP_V2_OUT msgresponse */
32402 #define	MC_CMD_MAE_COUNTERS_STREAM_STOP_V2_OUT_LENMIN 4
32403 #define	MC_CMD_MAE_COUNTERS_STREAM_STOP_V2_OUT_LENMAX 32
32404 #define	MC_CMD_MAE_COUNTERS_STREAM_STOP_V2_OUT_LENMAX_MCDI2 32
32405 #define	MC_CMD_MAE_COUNTERS_STREAM_STOP_V2_OUT_LEN(num) (0+4*(num))
32406 #define	MC_CMD_MAE_COUNTERS_STREAM_STOP_V2_OUT_GENERATION_COUNT_NUM(len) (((len)-0)/4)
32407 /* Array of generation counts, indexed by MAE_COUNTER_TYPE. Note that since
32408  * MAE_COUNTER_TYPE_AR==0, this response is backwards-compatible with V1. The
32409  * final set of counter values will be written out in packets with count ==
32410  * GENERATION_COUNT. An empty packet with count > GENERATION_COUNT indicates
32411  * that no more counter values of this type will be written to this stream.
32412  * GENERATION_COUNT_INVALID is reserved and unused.
32413  */
32414 #define	MC_CMD_MAE_COUNTERS_STREAM_STOP_V2_OUT_GENERATION_COUNT_OFST 0
32415 #define	MC_CMD_MAE_COUNTERS_STREAM_STOP_V2_OUT_GENERATION_COUNT_LEN 4
32416 #define	MC_CMD_MAE_COUNTERS_STREAM_STOP_V2_OUT_GENERATION_COUNT_MINNUM 1
32417 #define	MC_CMD_MAE_COUNTERS_STREAM_STOP_V2_OUT_GENERATION_COUNT_MAXNUM 8
32418 #define	MC_CMD_MAE_COUNTERS_STREAM_STOP_V2_OUT_GENERATION_COUNT_MAXNUM_MCDI2 8
32419 
32420 
32421 /***********************************/
32422 /* MC_CMD_MAE_COUNTERS_STREAM_GIVE_CREDITS
32423  * Give a number of credits to the packetiser. Each credit received allows the
32424  * MC to write one packet to the RxQ, therefore for each credit the driver must
32425  * have written sufficient descriptors for a packet of length
32426  * MAE_COUNTERS_PACKETISER_STREAM_START/PACKET_SIZE and rung the doorbell.
32427  */
32428 #define	MC_CMD_MAE_COUNTERS_STREAM_GIVE_CREDITS 0x153
32429 #define	MC_CMD_MAE_COUNTERS_STREAM_GIVE_CREDITS_MSGSET 0x153
32430 #undef	MC_CMD_0x153_PRIVILEGE_CTG
32431 
32432 #define	MC_CMD_0x153_PRIVILEGE_CTG SRIOV_CTG_MAE
32433 
32434 /* MC_CMD_MAE_COUNTERS_STREAM_GIVE_CREDITS_IN msgrequest */
32435 #define	MC_CMD_MAE_COUNTERS_STREAM_GIVE_CREDITS_IN_LEN 4
32436 /* Number of credits to give to the packetiser. */
32437 #define	MC_CMD_MAE_COUNTERS_STREAM_GIVE_CREDITS_IN_NUM_CREDITS_OFST 0
32438 #define	MC_CMD_MAE_COUNTERS_STREAM_GIVE_CREDITS_IN_NUM_CREDITS_LEN 4
32439 
32440 /* MC_CMD_MAE_COUNTERS_STREAM_GIVE_CREDITS_OUT msgresponse */
32441 #define	MC_CMD_MAE_COUNTERS_STREAM_GIVE_CREDITS_OUT_LEN 0
32442 
32443 
32444 /***********************************/
32445 /* MC_CMD_MAE_ENCAP_HEADER_ALLOC
32446  * Allocate an encapsulation header to be used in an Action Rule response. The
32447  * header must be constructed as a valid packet with 0-length payload.
32448  * Specifically, the L3/L4 lengths & checksums will only be incrementally fixed
32449  * by the NIC, rather than recomputed entirely. Currently only IPv4, IPv6 and
32450  * UDP are supported. If the maximum number of headers have already been
32451  * allocated then the command will fail with MC_CMD_ERR_ENOSPC.
32452  */
32453 #define	MC_CMD_MAE_ENCAP_HEADER_ALLOC 0x148
32454 #define	MC_CMD_MAE_ENCAP_HEADER_ALLOC_MSGSET 0x148
32455 #undef	MC_CMD_0x148_PRIVILEGE_CTG
32456 
32457 #define	MC_CMD_0x148_PRIVILEGE_CTG SRIOV_CTG_MAE
32458 
32459 /* MC_CMD_MAE_ENCAP_HEADER_ALLOC_IN msgrequest */
32460 #define	MC_CMD_MAE_ENCAP_HEADER_ALLOC_IN_LENMIN 4
32461 #define	MC_CMD_MAE_ENCAP_HEADER_ALLOC_IN_LENMAX 252
32462 #define	MC_CMD_MAE_ENCAP_HEADER_ALLOC_IN_LENMAX_MCDI2 1020
32463 #define	MC_CMD_MAE_ENCAP_HEADER_ALLOC_IN_LEN(num) (4+1*(num))
32464 #define	MC_CMD_MAE_ENCAP_HEADER_ALLOC_IN_HDR_DATA_NUM(len) (((len)-4)/1)
32465 #define	MC_CMD_MAE_ENCAP_HEADER_ALLOC_IN_ENCAP_TYPE_OFST 0
32466 #define	MC_CMD_MAE_ENCAP_HEADER_ALLOC_IN_ENCAP_TYPE_LEN 4
32467 #define	MC_CMD_MAE_ENCAP_HEADER_ALLOC_IN_HDR_DATA_OFST 4
32468 #define	MC_CMD_MAE_ENCAP_HEADER_ALLOC_IN_HDR_DATA_LEN 1
32469 #define	MC_CMD_MAE_ENCAP_HEADER_ALLOC_IN_HDR_DATA_MINNUM 0
32470 #define	MC_CMD_MAE_ENCAP_HEADER_ALLOC_IN_HDR_DATA_MAXNUM 248
32471 #define	MC_CMD_MAE_ENCAP_HEADER_ALLOC_IN_HDR_DATA_MAXNUM_MCDI2 1016
32472 
32473 /* MC_CMD_MAE_ENCAP_HEADER_ALLOC_OUT msgresponse */
32474 #define	MC_CMD_MAE_ENCAP_HEADER_ALLOC_OUT_LEN 4
32475 #define	MC_CMD_MAE_ENCAP_HEADER_ALLOC_OUT_ENCAP_HEADER_ID_OFST 0
32476 #define	MC_CMD_MAE_ENCAP_HEADER_ALLOC_OUT_ENCAP_HEADER_ID_LEN 4
32477 /* enum: An encap metadata ID that is guaranteed never to represent real encap
32478  * metadata
32479  */
32480 #define	MC_CMD_MAE_ENCAP_HEADER_ALLOC_OUT_ENCAP_HEADER_ID_NULL 0xffffffff
32481 
32482 
32483 /***********************************/
32484 /* MC_CMD_MAE_ENCAP_HEADER_UPDATE
32485  * Update encap action metadata. See comments for MAE_ENCAP_HEADER_ALLOC.
32486  */
32487 #define	MC_CMD_MAE_ENCAP_HEADER_UPDATE 0x149
32488 #define	MC_CMD_MAE_ENCAP_HEADER_UPDATE_MSGSET 0x149
32489 #undef	MC_CMD_0x149_PRIVILEGE_CTG
32490 
32491 #define	MC_CMD_0x149_PRIVILEGE_CTG SRIOV_CTG_MAE
32492 
32493 /* MC_CMD_MAE_ENCAP_HEADER_UPDATE_IN msgrequest */
32494 #define	MC_CMD_MAE_ENCAP_HEADER_UPDATE_IN_LENMIN 8
32495 #define	MC_CMD_MAE_ENCAP_HEADER_UPDATE_IN_LENMAX 252
32496 #define	MC_CMD_MAE_ENCAP_HEADER_UPDATE_IN_LENMAX_MCDI2 1020
32497 #define	MC_CMD_MAE_ENCAP_HEADER_UPDATE_IN_LEN(num) (8+1*(num))
32498 #define	MC_CMD_MAE_ENCAP_HEADER_UPDATE_IN_HDR_DATA_NUM(len) (((len)-8)/1)
32499 #define	MC_CMD_MAE_ENCAP_HEADER_UPDATE_IN_EH_ID_OFST 0
32500 #define	MC_CMD_MAE_ENCAP_HEADER_UPDATE_IN_EH_ID_LEN 4
32501 #define	MC_CMD_MAE_ENCAP_HEADER_UPDATE_IN_ENCAP_TYPE_OFST 4
32502 #define	MC_CMD_MAE_ENCAP_HEADER_UPDATE_IN_ENCAP_TYPE_LEN 4
32503 #define	MC_CMD_MAE_ENCAP_HEADER_UPDATE_IN_HDR_DATA_OFST 8
32504 #define	MC_CMD_MAE_ENCAP_HEADER_UPDATE_IN_HDR_DATA_LEN 1
32505 #define	MC_CMD_MAE_ENCAP_HEADER_UPDATE_IN_HDR_DATA_MINNUM 0
32506 #define	MC_CMD_MAE_ENCAP_HEADER_UPDATE_IN_HDR_DATA_MAXNUM 244
32507 #define	MC_CMD_MAE_ENCAP_HEADER_UPDATE_IN_HDR_DATA_MAXNUM_MCDI2 1012
32508 
32509 /* MC_CMD_MAE_ENCAP_HEADER_UPDATE_OUT msgresponse */
32510 #define	MC_CMD_MAE_ENCAP_HEADER_UPDATE_OUT_LEN 0
32511 
32512 
32513 /***********************************/
32514 /* MC_CMD_MAE_ENCAP_HEADER_FREE
32515  * Free encap action metadata
32516  */
32517 #define	MC_CMD_MAE_ENCAP_HEADER_FREE 0x14a
32518 #define	MC_CMD_MAE_ENCAP_HEADER_FREE_MSGSET 0x14a
32519 #undef	MC_CMD_0x14a_PRIVILEGE_CTG
32520 
32521 #define	MC_CMD_0x14a_PRIVILEGE_CTG SRIOV_CTG_MAE
32522 
32523 /* MC_CMD_MAE_ENCAP_HEADER_FREE_IN msgrequest */
32524 #define	MC_CMD_MAE_ENCAP_HEADER_FREE_IN_LENMIN 4
32525 #define	MC_CMD_MAE_ENCAP_HEADER_FREE_IN_LENMAX 128
32526 #define	MC_CMD_MAE_ENCAP_HEADER_FREE_IN_LENMAX_MCDI2 128
32527 #define	MC_CMD_MAE_ENCAP_HEADER_FREE_IN_LEN(num) (0+4*(num))
32528 #define	MC_CMD_MAE_ENCAP_HEADER_FREE_IN_EH_ID_NUM(len) (((len)-0)/4)
32529 /* Same semantics as MC_CMD_MAE_COUNTER_FREE */
32530 #define	MC_CMD_MAE_ENCAP_HEADER_FREE_IN_EH_ID_OFST 0
32531 #define	MC_CMD_MAE_ENCAP_HEADER_FREE_IN_EH_ID_LEN 4
32532 #define	MC_CMD_MAE_ENCAP_HEADER_FREE_IN_EH_ID_MINNUM 1
32533 #define	MC_CMD_MAE_ENCAP_HEADER_FREE_IN_EH_ID_MAXNUM 32
32534 #define	MC_CMD_MAE_ENCAP_HEADER_FREE_IN_EH_ID_MAXNUM_MCDI2 32
32535 
32536 /* MC_CMD_MAE_ENCAP_HEADER_FREE_OUT msgresponse */
32537 #define	MC_CMD_MAE_ENCAP_HEADER_FREE_OUT_LENMIN 4
32538 #define	MC_CMD_MAE_ENCAP_HEADER_FREE_OUT_LENMAX 128
32539 #define	MC_CMD_MAE_ENCAP_HEADER_FREE_OUT_LENMAX_MCDI2 128
32540 #define	MC_CMD_MAE_ENCAP_HEADER_FREE_OUT_LEN(num) (0+4*(num))
32541 #define	MC_CMD_MAE_ENCAP_HEADER_FREE_OUT_FREED_EH_ID_NUM(len) (((len)-0)/4)
32542 /* Same semantics as MC_CMD_MAE_COUNTER_FREE */
32543 #define	MC_CMD_MAE_ENCAP_HEADER_FREE_OUT_FREED_EH_ID_OFST 0
32544 #define	MC_CMD_MAE_ENCAP_HEADER_FREE_OUT_FREED_EH_ID_LEN 4
32545 #define	MC_CMD_MAE_ENCAP_HEADER_FREE_OUT_FREED_EH_ID_MINNUM 1
32546 #define	MC_CMD_MAE_ENCAP_HEADER_FREE_OUT_FREED_EH_ID_MAXNUM 32
32547 #define	MC_CMD_MAE_ENCAP_HEADER_FREE_OUT_FREED_EH_ID_MAXNUM_MCDI2 32
32548 
32549 
32550 /***********************************/
32551 /* MC_CMD_MAE_MAC_ADDR_ALLOC
32552  * Allocate MAC address. Hardware implementations have MAC addresses programmed
32553  * into an indirection table, and clients should take care not to allocate the
32554  * same MAC address twice (but instead reuse its ID). If the maximum number of
32555  * MAC addresses have already been allocated then the command will fail with
32556  * MC_CMD_ERR_ENOSPC.
32557  */
32558 #define	MC_CMD_MAE_MAC_ADDR_ALLOC 0x15e
32559 #define	MC_CMD_MAE_MAC_ADDR_ALLOC_MSGSET 0x15e
32560 #undef	MC_CMD_0x15e_PRIVILEGE_CTG
32561 
32562 #define	MC_CMD_0x15e_PRIVILEGE_CTG SRIOV_CTG_MAE
32563 
32564 /* MC_CMD_MAE_MAC_ADDR_ALLOC_IN msgrequest */
32565 #define	MC_CMD_MAE_MAC_ADDR_ALLOC_IN_LEN 6
32566 /* MAC address as bytes in network order. */
32567 #define	MC_CMD_MAE_MAC_ADDR_ALLOC_IN_MAC_ADDR_OFST 0
32568 #define	MC_CMD_MAE_MAC_ADDR_ALLOC_IN_MAC_ADDR_LEN 6
32569 
32570 /* MC_CMD_MAE_MAC_ADDR_ALLOC_OUT msgresponse */
32571 #define	MC_CMD_MAE_MAC_ADDR_ALLOC_OUT_LEN 4
32572 #define	MC_CMD_MAE_MAC_ADDR_ALLOC_OUT_MAC_ID_OFST 0
32573 #define	MC_CMD_MAE_MAC_ADDR_ALLOC_OUT_MAC_ID_LEN 4
32574 /* enum: An MAC address ID that is guaranteed never to represent a real MAC
32575  * address.
32576  */
32577 #define	MC_CMD_MAE_MAC_ADDR_ALLOC_OUT_MAC_ID_NULL 0xffffffff
32578 
32579 
32580 /***********************************/
32581 /* MC_CMD_MAE_MAC_ADDR_FREE
32582  * Free MAC address.
32583  */
32584 #define	MC_CMD_MAE_MAC_ADDR_FREE 0x15f
32585 #define	MC_CMD_MAE_MAC_ADDR_FREE_MSGSET 0x15f
32586 #undef	MC_CMD_0x15f_PRIVILEGE_CTG
32587 
32588 #define	MC_CMD_0x15f_PRIVILEGE_CTG SRIOV_CTG_MAE
32589 
32590 /* MC_CMD_MAE_MAC_ADDR_FREE_IN msgrequest */
32591 #define	MC_CMD_MAE_MAC_ADDR_FREE_IN_LENMIN 4
32592 #define	MC_CMD_MAE_MAC_ADDR_FREE_IN_LENMAX 128
32593 #define	MC_CMD_MAE_MAC_ADDR_FREE_IN_LENMAX_MCDI2 128
32594 #define	MC_CMD_MAE_MAC_ADDR_FREE_IN_LEN(num) (0+4*(num))
32595 #define	MC_CMD_MAE_MAC_ADDR_FREE_IN_MAC_ID_NUM(len) (((len)-0)/4)
32596 /* Same semantics as MC_CMD_MAE_COUNTER_FREE */
32597 #define	MC_CMD_MAE_MAC_ADDR_FREE_IN_MAC_ID_OFST 0
32598 #define	MC_CMD_MAE_MAC_ADDR_FREE_IN_MAC_ID_LEN 4
32599 #define	MC_CMD_MAE_MAC_ADDR_FREE_IN_MAC_ID_MINNUM 1
32600 #define	MC_CMD_MAE_MAC_ADDR_FREE_IN_MAC_ID_MAXNUM 32
32601 #define	MC_CMD_MAE_MAC_ADDR_FREE_IN_MAC_ID_MAXNUM_MCDI2 32
32602 
32603 /* MC_CMD_MAE_MAC_ADDR_FREE_OUT msgresponse */
32604 #define	MC_CMD_MAE_MAC_ADDR_FREE_OUT_LENMIN 4
32605 #define	MC_CMD_MAE_MAC_ADDR_FREE_OUT_LENMAX 128
32606 #define	MC_CMD_MAE_MAC_ADDR_FREE_OUT_LENMAX_MCDI2 128
32607 #define	MC_CMD_MAE_MAC_ADDR_FREE_OUT_LEN(num) (0+4*(num))
32608 #define	MC_CMD_MAE_MAC_ADDR_FREE_OUT_FREED_MAC_ID_NUM(len) (((len)-0)/4)
32609 /* Same semantics as MC_CMD_MAE_COUNTER_FREE */
32610 #define	MC_CMD_MAE_MAC_ADDR_FREE_OUT_FREED_MAC_ID_OFST 0
32611 #define	MC_CMD_MAE_MAC_ADDR_FREE_OUT_FREED_MAC_ID_LEN 4
32612 #define	MC_CMD_MAE_MAC_ADDR_FREE_OUT_FREED_MAC_ID_MINNUM 1
32613 #define	MC_CMD_MAE_MAC_ADDR_FREE_OUT_FREED_MAC_ID_MAXNUM 32
32614 #define	MC_CMD_MAE_MAC_ADDR_FREE_OUT_FREED_MAC_ID_MAXNUM_MCDI2 32
32615 
32616 
32617 /***********************************/
32618 /* MC_CMD_MAE_ACTION_SET_ALLOC
32619  * Allocate an action set, which can be referenced either in response to an
32620  * Action Rule, or as part of an Action Set List. If the maxmimum number of
32621  * action sets have already been allocated then the command will fail with
32622  * MC_CMD_ERR_ENOSPC.
32623  */
32624 #define	MC_CMD_MAE_ACTION_SET_ALLOC 0x14d
32625 #define	MC_CMD_MAE_ACTION_SET_ALLOC_MSGSET 0x14d
32626 #undef	MC_CMD_0x14d_PRIVILEGE_CTG
32627 
32628 #define	MC_CMD_0x14d_PRIVILEGE_CTG SRIOV_CTG_MAE
32629 
32630 /* MC_CMD_MAE_ACTION_SET_ALLOC_IN msgrequest */
32631 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_LEN 44
32632 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_FLAGS_OFST 0
32633 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_FLAGS_LEN 4
32634 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_VLAN_PUSH_OFST 0
32635 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_VLAN_PUSH_LBN 0
32636 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_VLAN_PUSH_WIDTH 2
32637 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_VLAN_POP_OFST 0
32638 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_VLAN_POP_LBN 4
32639 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_VLAN_POP_WIDTH 2
32640 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_DECAP_OFST 0
32641 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_DECAP_LBN 8
32642 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_DECAP_WIDTH 1
32643 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_MARK_OFST 0
32644 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_MARK_LBN 9
32645 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_MARK_WIDTH 1
32646 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_FLAG_OFST 0
32647 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_FLAG_LBN 10
32648 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_FLAG_WIDTH 1
32649 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_DO_NAT_OFST 0
32650 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_DO_NAT_LBN 11
32651 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_DO_NAT_WIDTH 1
32652 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_DO_DECR_IP_TTL_OFST 0
32653 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_DO_DECR_IP_TTL_LBN 12
32654 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_DO_DECR_IP_TTL_WIDTH 1
32655 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_DO_SET_SRC_MPORT_OFST 0
32656 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_DO_SET_SRC_MPORT_LBN 13
32657 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_DO_SET_SRC_MPORT_WIDTH 1
32658 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_SUPPRESS_SELF_DELIVERY_OFST 0
32659 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_SUPPRESS_SELF_DELIVERY_LBN 14
32660 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_SUPPRESS_SELF_DELIVERY_WIDTH 1
32661 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_DO_REPLACE_RDP_C_PL_OFST 0
32662 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_DO_REPLACE_RDP_C_PL_LBN 15
32663 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_DO_REPLACE_RDP_C_PL_WIDTH 1
32664 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_DO_REPLACE_RDP_D_PL_OFST 0
32665 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_DO_REPLACE_RDP_D_PL_LBN 16
32666 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_DO_REPLACE_RDP_D_PL_WIDTH 1
32667 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_DO_REPLACE_RDP_OUT_HOST_CHAN_OFST 0
32668 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_DO_REPLACE_RDP_OUT_HOST_CHAN_LBN 17
32669 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_DO_REPLACE_RDP_OUT_HOST_CHAN_WIDTH 1
32670 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_DO_SET_NET_CHAN_OFST 0
32671 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_DO_SET_NET_CHAN_LBN 18
32672 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_DO_SET_NET_CHAN_WIDTH 1
32673 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_LACP_PLUGIN_OFST 0
32674 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_LACP_PLUGIN_LBN 19
32675 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_LACP_PLUGIN_WIDTH 1
32676 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_LACP_INC_L4_OFST 0
32677 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_LACP_INC_L4_LBN 20
32678 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_LACP_INC_L4_WIDTH 1
32679 /* If VLAN_PUSH >= 1, TCI value to be inserted as outermost VLAN. */
32680 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_VLAN0_TCI_BE_OFST 4
32681 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_VLAN0_TCI_BE_LEN 2
32682 /* If VLAN_PUSH >= 1, TPID value to be inserted as outermost VLAN. */
32683 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_VLAN0_PROTO_BE_OFST 6
32684 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_VLAN0_PROTO_BE_LEN 2
32685 /* If VLAN_PUSH == 2, inner TCI value to be inserted. */
32686 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_VLAN1_TCI_BE_OFST 8
32687 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_VLAN1_TCI_BE_LEN 2
32688 /* If VLAN_PUSH == 2, inner TPID value to be inserted. */
32689 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_VLAN1_PROTO_BE_OFST 10
32690 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_VLAN1_PROTO_BE_LEN 2
32691 /* Reserved. Ignored by firmware. Should be set to zero or 0xffffffff. */
32692 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_RSVD_OFST 12
32693 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_RSVD_LEN 4
32694 /* Set to ENCAP_HEADER_ID_NULL to request no encap action */
32695 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_ENCAP_HEADER_ID_OFST 16
32696 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_ENCAP_HEADER_ID_LEN 4
32697 /* An m-port selector identifying the m-port that the modified packet should be
32698  * delivered to. Set to MPORT_SELECTOR_NULL to request no delivery of the
32699  * packet.
32700  */
32701 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_DELIVER_OFST 20
32702 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_DELIVER_LEN 4
32703 /* Allows an action set to trigger several counter updates. Set to
32704  * MAE_COUNTER_ID_NULL to request no counter action.
32705  */
32706 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_COUNTER_LIST_ID_OFST 24
32707 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_COUNTER_LIST_ID_LEN 4
32708 /*            Enum values, see field(s): */
32709 /*               MAE_COUNTER_ID */
32710 /* If a driver only wished to update one counter within this action set, then
32711  * it can supply a COUNTER_ID instead of allocating a single-element counter
32712  * list. The ID must have been allocated with COUNTER_TYPE=AR. This field
32713  * should be set to MAE_COUNTER_ID_NULL if this behaviour is not required. It
32714  * is not valid to supply a non-NULL value for both COUNTER_LIST_ID and
32715  * COUNTER_ID.
32716  */
32717 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_COUNTER_ID_OFST 28
32718 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_COUNTER_ID_LEN 4
32719 /*            Enum values, see field(s): */
32720 /*               MAE_COUNTER_ID */
32721 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_MARK_VALUE_OFST 32
32722 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_MARK_VALUE_LEN 4
32723 /* Set to MAC_ID_NULL to request no source MAC replacement. */
32724 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_SRC_MAC_ID_OFST 36
32725 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_SRC_MAC_ID_LEN 4
32726 /* Set to MAC_ID_NULL to request no destination MAC replacement. */
32727 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_DST_MAC_ID_OFST 40
32728 #define	MC_CMD_MAE_ACTION_SET_ALLOC_IN_DST_MAC_ID_LEN 4
32729 
32730 /* MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN msgrequest: Only supported if
32731  * MAE_ACTION_SET_ALLOC_V2_SUPPORTED is advertised in
32732  * MC_CMD_GET_CAPABILITIES_V7_OUT.
32733  */
32734 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_LEN 51
32735 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_FLAGS_OFST 0
32736 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_FLAGS_LEN 4
32737 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_VLAN_PUSH_OFST 0
32738 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_VLAN_PUSH_LBN 0
32739 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_VLAN_PUSH_WIDTH 2
32740 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_VLAN_POP_OFST 0
32741 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_VLAN_POP_LBN 4
32742 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_VLAN_POP_WIDTH 2
32743 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DECAP_OFST 0
32744 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DECAP_LBN 8
32745 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DECAP_WIDTH 1
32746 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_MARK_OFST 0
32747 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_MARK_LBN 9
32748 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_MARK_WIDTH 1
32749 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_FLAG_OFST 0
32750 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_FLAG_LBN 10
32751 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_FLAG_WIDTH 1
32752 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DO_NAT_OFST 0
32753 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DO_NAT_LBN 11
32754 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DO_NAT_WIDTH 1
32755 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DO_DECR_IP_TTL_OFST 0
32756 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DO_DECR_IP_TTL_LBN 12
32757 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DO_DECR_IP_TTL_WIDTH 1
32758 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DO_SET_SRC_MPORT_OFST 0
32759 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DO_SET_SRC_MPORT_LBN 13
32760 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DO_SET_SRC_MPORT_WIDTH 1
32761 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_SUPPRESS_SELF_DELIVERY_OFST 0
32762 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_SUPPRESS_SELF_DELIVERY_LBN 14
32763 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_SUPPRESS_SELF_DELIVERY_WIDTH 1
32764 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DO_REPLACE_RDP_C_PL_OFST 0
32765 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DO_REPLACE_RDP_C_PL_LBN 15
32766 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DO_REPLACE_RDP_C_PL_WIDTH 1
32767 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DO_REPLACE_RDP_D_PL_OFST 0
32768 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DO_REPLACE_RDP_D_PL_LBN 16
32769 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DO_REPLACE_RDP_D_PL_WIDTH 1
32770 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DO_REPLACE_RDP_OUT_HOST_CHAN_OFST 0
32771 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DO_REPLACE_RDP_OUT_HOST_CHAN_LBN 17
32772 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DO_REPLACE_RDP_OUT_HOST_CHAN_WIDTH 1
32773 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DO_SET_NET_CHAN_OFST 0
32774 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DO_SET_NET_CHAN_LBN 18
32775 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DO_SET_NET_CHAN_WIDTH 1
32776 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_LACP_PLUGIN_OFST 0
32777 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_LACP_PLUGIN_LBN 19
32778 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_LACP_PLUGIN_WIDTH 1
32779 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_LACP_INC_L4_OFST 0
32780 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_LACP_INC_L4_LBN 20
32781 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_LACP_INC_L4_WIDTH 1
32782 /* If VLAN_PUSH >= 1, TCI value to be inserted as outermost VLAN. */
32783 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_VLAN0_TCI_BE_OFST 4
32784 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_VLAN0_TCI_BE_LEN 2
32785 /* If VLAN_PUSH >= 1, TPID value to be inserted as outermost VLAN. */
32786 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_VLAN0_PROTO_BE_OFST 6
32787 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_VLAN0_PROTO_BE_LEN 2
32788 /* If VLAN_PUSH == 2, inner TCI value to be inserted. */
32789 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_VLAN1_TCI_BE_OFST 8
32790 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_VLAN1_TCI_BE_LEN 2
32791 /* If VLAN_PUSH == 2, inner TPID value to be inserted. */
32792 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_VLAN1_PROTO_BE_OFST 10
32793 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_VLAN1_PROTO_BE_LEN 2
32794 /* Reserved. Ignored by firmware. Should be set to zero or 0xffffffff. */
32795 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_RSVD_OFST 12
32796 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_RSVD_LEN 4
32797 /* Set to ENCAP_HEADER_ID_NULL to request no encap action */
32798 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_ENCAP_HEADER_ID_OFST 16
32799 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_ENCAP_HEADER_ID_LEN 4
32800 /* An m-port selector identifying the m-port that the modified packet should be
32801  * delivered to. Set to MPORT_SELECTOR_NULL to request no delivery of the
32802  * packet.
32803  */
32804 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DELIVER_OFST 20
32805 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DELIVER_LEN 4
32806 /* Allows an action set to trigger several counter updates. Set to
32807  * MAE_COUNTER_ID_NULL to request no counter action.
32808  */
32809 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_COUNTER_LIST_ID_OFST 24
32810 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_COUNTER_LIST_ID_LEN 4
32811 /*            Enum values, see field(s): */
32812 /*               MAE_COUNTER_ID */
32813 /* If a driver only wished to update one counter within this action set, then
32814  * it can supply a COUNTER_ID instead of allocating a single-element counter
32815  * list. The ID must have been allocated with COUNTER_TYPE=AR. This field
32816  * should be set to MAE_COUNTER_ID_NULL if this behaviour is not required. It
32817  * is not valid to supply a non-NULL value for both COUNTER_LIST_ID and
32818  * COUNTER_ID.
32819  */
32820 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_COUNTER_ID_OFST 28
32821 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_COUNTER_ID_LEN 4
32822 /*            Enum values, see field(s): */
32823 /*               MAE_COUNTER_ID */
32824 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_MARK_VALUE_OFST 32
32825 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_MARK_VALUE_LEN 4
32826 /* Set to MAC_ID_NULL to request no source MAC replacement. */
32827 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_SRC_MAC_ID_OFST 36
32828 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_SRC_MAC_ID_LEN 4
32829 /* Set to MAC_ID_NULL to request no destination MAC replacement. */
32830 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DST_MAC_ID_OFST 40
32831 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DST_MAC_ID_LEN 4
32832 /* Source m-port ID to be reported for DO_SET_SRC_MPORT action. */
32833 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_REPORTED_SRC_MPORT_OFST 44
32834 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_REPORTED_SRC_MPORT_LEN 4
32835 /* Actions for modifying the Differentiated Services Code-Point (DSCP) bits
32836  * within IPv4 and IPv6 headers.
32837  */
32838 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DSCP_CONTROL_OFST 48
32839 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DSCP_CONTROL_LEN 2
32840 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DO_DSCP_ENCAP_COPY_OFST 48
32841 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DO_DSCP_ENCAP_COPY_LBN 0
32842 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DO_DSCP_ENCAP_COPY_WIDTH 1
32843 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DO_DSCP_DECAP_COPY_OFST 48
32844 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DO_DSCP_DECAP_COPY_LBN 1
32845 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DO_DSCP_DECAP_COPY_WIDTH 1
32846 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DO_REPLACE_DSCP_OFST 48
32847 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DO_REPLACE_DSCP_LBN 2
32848 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DO_REPLACE_DSCP_WIDTH 1
32849 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DSCP_VALUE_OFST 48
32850 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DSCP_VALUE_LBN 3
32851 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DSCP_VALUE_WIDTH 6
32852 /* Actions for modifying the Explicit Congestion Notification (ECN) bits within
32853  * IPv4 and IPv6 headers.
32854  */
32855 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_ECN_CONTROL_OFST 50
32856 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_ECN_CONTROL_LEN 1
32857 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DO_ECN_ENCAP_COPY_OFST 50
32858 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DO_ECN_ENCAP_COPY_LBN 0
32859 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DO_ECN_ENCAP_COPY_WIDTH 1
32860 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DO_ECN_DECAP_COPY_OFST 50
32861 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DO_ECN_DECAP_COPY_LBN 1
32862 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DO_ECN_DECAP_COPY_WIDTH 1
32863 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DO_REPLACE_ECN_OFST 50
32864 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DO_REPLACE_ECN_LBN 2
32865 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_DO_REPLACE_ECN_WIDTH 1
32866 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_ECN_VALUE_OFST 50
32867 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_ECN_VALUE_LBN 3
32868 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_ECN_VALUE_WIDTH 2
32869 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_ECN_ECT_0_TO_CE_OFST 50
32870 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_ECN_ECT_0_TO_CE_LBN 5
32871 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_ECN_ECT_0_TO_CE_WIDTH 1
32872 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_ECN_ECT_1_TO_CE_OFST 50
32873 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_ECN_ECT_1_TO_CE_LBN 6
32874 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V2_IN_ECN_ECT_1_TO_CE_WIDTH 1
32875 
32876 /* MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN msgrequest: Only supported if
32877  * MAE_ACTION_SET_ALLOC_V3_SUPPORTED is advertised in
32878  * MC_CMD_GET_CAPABILITIES_V10_OUT.
32879  */
32880 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_LEN 53
32881 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_FLAGS_OFST 0
32882 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_FLAGS_LEN 4
32883 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_VLAN_PUSH_OFST 0
32884 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_VLAN_PUSH_LBN 0
32885 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_VLAN_PUSH_WIDTH 2
32886 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_VLAN_POP_OFST 0
32887 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_VLAN_POP_LBN 4
32888 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_VLAN_POP_WIDTH 2
32889 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DECAP_OFST 0
32890 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DECAP_LBN 8
32891 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DECAP_WIDTH 1
32892 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_MARK_OFST 0
32893 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_MARK_LBN 9
32894 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_MARK_WIDTH 1
32895 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_FLAG_OFST 0
32896 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_FLAG_LBN 10
32897 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_FLAG_WIDTH 1
32898 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DO_NAT_OFST 0
32899 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DO_NAT_LBN 11
32900 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DO_NAT_WIDTH 1
32901 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DO_DECR_IP_TTL_OFST 0
32902 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DO_DECR_IP_TTL_LBN 12
32903 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DO_DECR_IP_TTL_WIDTH 1
32904 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DO_SET_SRC_MPORT_OFST 0
32905 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DO_SET_SRC_MPORT_LBN 13
32906 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DO_SET_SRC_MPORT_WIDTH 1
32907 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_SUPPRESS_SELF_DELIVERY_OFST 0
32908 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_SUPPRESS_SELF_DELIVERY_LBN 14
32909 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_SUPPRESS_SELF_DELIVERY_WIDTH 1
32910 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DO_REPLACE_RDP_C_PL_OFST 0
32911 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DO_REPLACE_RDP_C_PL_LBN 15
32912 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DO_REPLACE_RDP_C_PL_WIDTH 1
32913 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DO_REPLACE_RDP_D_PL_OFST 0
32914 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DO_REPLACE_RDP_D_PL_LBN 16
32915 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DO_REPLACE_RDP_D_PL_WIDTH 1
32916 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DO_REPLACE_RDP_OUT_HOST_CHAN_OFST 0
32917 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DO_REPLACE_RDP_OUT_HOST_CHAN_LBN 17
32918 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DO_REPLACE_RDP_OUT_HOST_CHAN_WIDTH 1
32919 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DO_SET_NET_CHAN_OFST 0
32920 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DO_SET_NET_CHAN_LBN 18
32921 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DO_SET_NET_CHAN_WIDTH 1
32922 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_LACP_PLUGIN_OFST 0
32923 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_LACP_PLUGIN_LBN 19
32924 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_LACP_PLUGIN_WIDTH 1
32925 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_LACP_INC_L4_OFST 0
32926 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_LACP_INC_L4_LBN 20
32927 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_LACP_INC_L4_WIDTH 1
32928 /* If VLAN_PUSH >= 1, TCI value to be inserted as outermost VLAN. */
32929 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_VLAN0_TCI_BE_OFST 4
32930 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_VLAN0_TCI_BE_LEN 2
32931 /* If VLAN_PUSH >= 1, TPID value to be inserted as outermost VLAN. */
32932 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_VLAN0_PROTO_BE_OFST 6
32933 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_VLAN0_PROTO_BE_LEN 2
32934 /* If VLAN_PUSH == 2, inner TCI value to be inserted. */
32935 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_VLAN1_TCI_BE_OFST 8
32936 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_VLAN1_TCI_BE_LEN 2
32937 /* If VLAN_PUSH == 2, inner TPID value to be inserted. */
32938 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_VLAN1_PROTO_BE_OFST 10
32939 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_VLAN1_PROTO_BE_LEN 2
32940 /* Reserved. Ignored by firmware. Should be set to zero or 0xffffffff. */
32941 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_RSVD_OFST 12
32942 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_RSVD_LEN 4
32943 /* Set to ENCAP_HEADER_ID_NULL to request no encap action */
32944 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_ENCAP_HEADER_ID_OFST 16
32945 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_ENCAP_HEADER_ID_LEN 4
32946 /* An m-port selector identifying the m-port that the modified packet should be
32947  * delivered to. Set to MPORT_SELECTOR_NULL to request no delivery of the
32948  * packet.
32949  */
32950 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DELIVER_OFST 20
32951 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DELIVER_LEN 4
32952 /* Allows an action set to trigger several counter updates. Set to
32953  * MAE_COUNTER_ID_NULL to request no counter action.
32954  */
32955 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_COUNTER_LIST_ID_OFST 24
32956 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_COUNTER_LIST_ID_LEN 4
32957 /*            Enum values, see field(s): */
32958 /*               MAE_COUNTER_ID */
32959 /* If a driver only wished to update one counter within this action set, then
32960  * it can supply a COUNTER_ID instead of allocating a single-element counter
32961  * list. The ID must have been allocated with COUNTER_TYPE=AR. This field
32962  * should be set to MAE_COUNTER_ID_NULL if this behaviour is not required. It
32963  * is not valid to supply a non-NULL value for both COUNTER_LIST_ID and
32964  * COUNTER_ID.
32965  */
32966 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_COUNTER_ID_OFST 28
32967 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_COUNTER_ID_LEN 4
32968 /*            Enum values, see field(s): */
32969 /*               MAE_COUNTER_ID */
32970 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_MARK_VALUE_OFST 32
32971 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_MARK_VALUE_LEN 4
32972 /* Set to MAC_ID_NULL to request no source MAC replacement. */
32973 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_SRC_MAC_ID_OFST 36
32974 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_SRC_MAC_ID_LEN 4
32975 /* Set to MAC_ID_NULL to request no destination MAC replacement. */
32976 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DST_MAC_ID_OFST 40
32977 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DST_MAC_ID_LEN 4
32978 /* Source m-port ID to be reported for DO_SET_SRC_MPORT action. */
32979 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_REPORTED_SRC_MPORT_OFST 44
32980 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_REPORTED_SRC_MPORT_LEN 4
32981 /* Actions for modifying the Differentiated Services Code-Point (DSCP) bits
32982  * within IPv4 and IPv6 headers.
32983  */
32984 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DSCP_CONTROL_OFST 48
32985 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DSCP_CONTROL_LEN 2
32986 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DO_DSCP_ENCAP_COPY_OFST 48
32987 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DO_DSCP_ENCAP_COPY_LBN 0
32988 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DO_DSCP_ENCAP_COPY_WIDTH 1
32989 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DO_DSCP_DECAP_COPY_OFST 48
32990 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DO_DSCP_DECAP_COPY_LBN 1
32991 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DO_DSCP_DECAP_COPY_WIDTH 1
32992 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DO_REPLACE_DSCP_OFST 48
32993 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DO_REPLACE_DSCP_LBN 2
32994 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DO_REPLACE_DSCP_WIDTH 1
32995 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DSCP_VALUE_OFST 48
32996 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DSCP_VALUE_LBN 3
32997 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DSCP_VALUE_WIDTH 6
32998 /* Actions for modifying the Explicit Congestion Notification (ECN) bits within
32999  * IPv4 and IPv6 headers.
33000  */
33001 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_ECN_CONTROL_OFST 50
33002 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_ECN_CONTROL_LEN 1
33003 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DO_ECN_ENCAP_COPY_OFST 50
33004 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DO_ECN_ENCAP_COPY_LBN 0
33005 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DO_ECN_ENCAP_COPY_WIDTH 1
33006 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DO_ECN_DECAP_COPY_OFST 50
33007 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DO_ECN_DECAP_COPY_LBN 1
33008 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DO_ECN_DECAP_COPY_WIDTH 1
33009 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DO_REPLACE_ECN_OFST 50
33010 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DO_REPLACE_ECN_LBN 2
33011 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_DO_REPLACE_ECN_WIDTH 1
33012 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_ECN_VALUE_OFST 50
33013 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_ECN_VALUE_LBN 3
33014 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_ECN_VALUE_WIDTH 2
33015 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_ECN_ECT_0_TO_CE_OFST 50
33016 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_ECN_ECT_0_TO_CE_LBN 5
33017 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_ECN_ECT_0_TO_CE_WIDTH 1
33018 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_ECN_ECT_1_TO_CE_OFST 50
33019 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_ECN_ECT_1_TO_CE_LBN 6
33020 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_ECN_ECT_1_TO_CE_WIDTH 1
33021 /* Actions for overwriting CH_ROUTE subfields. */
33022 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_RDP_OVERWRITE_OFST 51
33023 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_RDP_OVERWRITE_LEN 1
33024 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_RDP_C_PL_OFST 51
33025 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_RDP_C_PL_LBN 0
33026 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_RDP_C_PL_WIDTH 1
33027 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_RDP_D_PL_OFST 51
33028 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_RDP_D_PL_LBN 1
33029 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_RDP_D_PL_WIDTH 1
33030 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_RDP_PL_CHAN_OFST 51
33031 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_RDP_PL_CHAN_LBN 2
33032 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_RDP_PL_CHAN_WIDTH 1
33033 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_RDP_OUT_HOST_CHAN_OFST 51
33034 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_RDP_OUT_HOST_CHAN_LBN 3
33035 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_RDP_OUT_HOST_CHAN_WIDTH 1
33036 /* Override outgoing CH_VC to network port for DO_SET_NET_CHAN action. Cannot
33037  * be used in conjunction with DO_SET_SRC_MPORT action.
33038  */
33039 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_NET_CHAN_OFST 52
33040 #define	MC_CMD_MAE_ACTION_SET_ALLOC_V3_IN_NET_CHAN_LEN 1
33041 
33042 /* MC_CMD_MAE_ACTION_SET_ALLOC_OUT msgresponse */
33043 #define	MC_CMD_MAE_ACTION_SET_ALLOC_OUT_LEN 4
33044 /* The MSB of the AS_ID is guaranteed to be clear if the ID is not
33045  * ACTION_SET_ID_NULL. This allows an AS_ID to be distinguished from an ASL_ID
33046  * returned from MC_CMD_MAE_ACTION_SET_LIST_ALLOC.
33047  */
33048 #define	MC_CMD_MAE_ACTION_SET_ALLOC_OUT_AS_ID_OFST 0
33049 #define	MC_CMD_MAE_ACTION_SET_ALLOC_OUT_AS_ID_LEN 4
33050 /* enum: An action set ID that is guaranteed never to represent an action set
33051  */
33052 #define	MC_CMD_MAE_ACTION_SET_ALLOC_OUT_ACTION_SET_ID_NULL 0xffffffff
33053 
33054 
33055 /***********************************/
33056 /* MC_CMD_MAE_ACTION_SET_FREE
33057  */
33058 #define	MC_CMD_MAE_ACTION_SET_FREE 0x14e
33059 #define	MC_CMD_MAE_ACTION_SET_FREE_MSGSET 0x14e
33060 #undef	MC_CMD_0x14e_PRIVILEGE_CTG
33061 
33062 #define	MC_CMD_0x14e_PRIVILEGE_CTG SRIOV_CTG_MAE
33063 
33064 /* MC_CMD_MAE_ACTION_SET_FREE_IN msgrequest */
33065 #define	MC_CMD_MAE_ACTION_SET_FREE_IN_LENMIN 4
33066 #define	MC_CMD_MAE_ACTION_SET_FREE_IN_LENMAX 128
33067 #define	MC_CMD_MAE_ACTION_SET_FREE_IN_LENMAX_MCDI2 128
33068 #define	MC_CMD_MAE_ACTION_SET_FREE_IN_LEN(num) (0+4*(num))
33069 #define	MC_CMD_MAE_ACTION_SET_FREE_IN_AS_ID_NUM(len) (((len)-0)/4)
33070 /* Same semantics as MC_CMD_MAE_COUNTER_FREE */
33071 #define	MC_CMD_MAE_ACTION_SET_FREE_IN_AS_ID_OFST 0
33072 #define	MC_CMD_MAE_ACTION_SET_FREE_IN_AS_ID_LEN 4
33073 #define	MC_CMD_MAE_ACTION_SET_FREE_IN_AS_ID_MINNUM 1
33074 #define	MC_CMD_MAE_ACTION_SET_FREE_IN_AS_ID_MAXNUM 32
33075 #define	MC_CMD_MAE_ACTION_SET_FREE_IN_AS_ID_MAXNUM_MCDI2 32
33076 
33077 /* MC_CMD_MAE_ACTION_SET_FREE_OUT msgresponse */
33078 #define	MC_CMD_MAE_ACTION_SET_FREE_OUT_LENMIN 4
33079 #define	MC_CMD_MAE_ACTION_SET_FREE_OUT_LENMAX 128
33080 #define	MC_CMD_MAE_ACTION_SET_FREE_OUT_LENMAX_MCDI2 128
33081 #define	MC_CMD_MAE_ACTION_SET_FREE_OUT_LEN(num) (0+4*(num))
33082 #define	MC_CMD_MAE_ACTION_SET_FREE_OUT_FREED_AS_ID_NUM(len) (((len)-0)/4)
33083 /* Same semantics as MC_CMD_MAE_COUNTER_FREE */
33084 #define	MC_CMD_MAE_ACTION_SET_FREE_OUT_FREED_AS_ID_OFST 0
33085 #define	MC_CMD_MAE_ACTION_SET_FREE_OUT_FREED_AS_ID_LEN 4
33086 #define	MC_CMD_MAE_ACTION_SET_FREE_OUT_FREED_AS_ID_MINNUM 1
33087 #define	MC_CMD_MAE_ACTION_SET_FREE_OUT_FREED_AS_ID_MAXNUM 32
33088 #define	MC_CMD_MAE_ACTION_SET_FREE_OUT_FREED_AS_ID_MAXNUM_MCDI2 32
33089 
33090 
33091 /***********************************/
33092 /* MC_CMD_MAE_ACTION_SET_LIST_ALLOC
33093  * Allocate an action set list (ASL) that can be referenced by an ID. The ASL
33094  * ID can be used when inserting an action rule, so that for each packet
33095  * matching the rule every action set in the list is applied. If the maximum
33096  * number of ASLs have already been allocated then the command will fail with
33097  * MC_CMD_ERR_ENOSPC.
33098  */
33099 #define	MC_CMD_MAE_ACTION_SET_LIST_ALLOC 0x14f
33100 #define	MC_CMD_MAE_ACTION_SET_LIST_ALLOC_MSGSET 0x14f
33101 #undef	MC_CMD_0x14f_PRIVILEGE_CTG
33102 
33103 #define	MC_CMD_0x14f_PRIVILEGE_CTG SRIOV_CTG_MAE
33104 
33105 /* MC_CMD_MAE_ACTION_SET_LIST_ALLOC_IN msgrequest */
33106 #define	MC_CMD_MAE_ACTION_SET_LIST_ALLOC_IN_LENMIN 8
33107 #define	MC_CMD_MAE_ACTION_SET_LIST_ALLOC_IN_LENMAX 252
33108 #define	MC_CMD_MAE_ACTION_SET_LIST_ALLOC_IN_LENMAX_MCDI2 1020
33109 #define	MC_CMD_MAE_ACTION_SET_LIST_ALLOC_IN_LEN(num) (4+4*(num))
33110 #define	MC_CMD_MAE_ACTION_SET_LIST_ALLOC_IN_AS_IDS_NUM(len) (((len)-4)/4)
33111 /* Number of elements in the AS_IDS field. */
33112 #define	MC_CMD_MAE_ACTION_SET_LIST_ALLOC_IN_COUNT_OFST 0
33113 #define	MC_CMD_MAE_ACTION_SET_LIST_ALLOC_IN_COUNT_LEN 4
33114 /* The IDs of the action sets in this list. The last element of this list may
33115  * be the ID of an already allocated ASL. In this case the action sets from the
33116  * already allocated ASL will be applied after the action sets supplied by this
33117  * request. This mechanism can be used to reduce resource usage in the case
33118  * where one ASL is a sublist of another ASL. The sublist should be allocated
33119  * first, then the superlist should be allocated by supplying all required
33120  * action set IDs that are not in the sublist followed by the ID of the
33121  * sublist. One sublist can be referenced by multiple superlists.
33122  */
33123 #define	MC_CMD_MAE_ACTION_SET_LIST_ALLOC_IN_AS_IDS_OFST 4
33124 #define	MC_CMD_MAE_ACTION_SET_LIST_ALLOC_IN_AS_IDS_LEN 4
33125 #define	MC_CMD_MAE_ACTION_SET_LIST_ALLOC_IN_AS_IDS_MINNUM 1
33126 #define	MC_CMD_MAE_ACTION_SET_LIST_ALLOC_IN_AS_IDS_MAXNUM 62
33127 #define	MC_CMD_MAE_ACTION_SET_LIST_ALLOC_IN_AS_IDS_MAXNUM_MCDI2 254
33128 
33129 /* MC_CMD_MAE_ACTION_SET_LIST_ALLOC_OUT msgresponse */
33130 #define	MC_CMD_MAE_ACTION_SET_LIST_ALLOC_OUT_LEN 4
33131 /* The MSB of the ASL_ID is guaranteed to be set. This allows an ASL_ID to be
33132  * distinguished from an AS_ID returned from MC_CMD_MAE_ACTION_SET_ALLOC.
33133  */
33134 #define	MC_CMD_MAE_ACTION_SET_LIST_ALLOC_OUT_ASL_ID_OFST 0
33135 #define	MC_CMD_MAE_ACTION_SET_LIST_ALLOC_OUT_ASL_ID_LEN 4
33136 /* enum: An action set list ID that is guaranteed never to represent an action
33137  * set list
33138  */
33139 #define	MC_CMD_MAE_ACTION_SET_LIST_ALLOC_OUT_ACTION_SET_LIST_ID_NULL 0xffffffff
33140 
33141 
33142 /***********************************/
33143 /* MC_CMD_MAE_ACTION_SET_LIST_FREE
33144  * Free match-action-engine redirect_lists
33145  */
33146 #define	MC_CMD_MAE_ACTION_SET_LIST_FREE 0x150
33147 #define	MC_CMD_MAE_ACTION_SET_LIST_FREE_MSGSET 0x150
33148 #undef	MC_CMD_0x150_PRIVILEGE_CTG
33149 
33150 #define	MC_CMD_0x150_PRIVILEGE_CTG SRIOV_CTG_MAE
33151 
33152 /* MC_CMD_MAE_ACTION_SET_LIST_FREE_IN msgrequest */
33153 #define	MC_CMD_MAE_ACTION_SET_LIST_FREE_IN_LENMIN 4
33154 #define	MC_CMD_MAE_ACTION_SET_LIST_FREE_IN_LENMAX 128
33155 #define	MC_CMD_MAE_ACTION_SET_LIST_FREE_IN_LENMAX_MCDI2 128
33156 #define	MC_CMD_MAE_ACTION_SET_LIST_FREE_IN_LEN(num) (0+4*(num))
33157 #define	MC_CMD_MAE_ACTION_SET_LIST_FREE_IN_ASL_ID_NUM(len) (((len)-0)/4)
33158 /* Same semantics as MC_CMD_MAE_COUNTER_FREE */
33159 #define	MC_CMD_MAE_ACTION_SET_LIST_FREE_IN_ASL_ID_OFST 0
33160 #define	MC_CMD_MAE_ACTION_SET_LIST_FREE_IN_ASL_ID_LEN 4
33161 #define	MC_CMD_MAE_ACTION_SET_LIST_FREE_IN_ASL_ID_MINNUM 1
33162 #define	MC_CMD_MAE_ACTION_SET_LIST_FREE_IN_ASL_ID_MAXNUM 32
33163 #define	MC_CMD_MAE_ACTION_SET_LIST_FREE_IN_ASL_ID_MAXNUM_MCDI2 32
33164 
33165 /* MC_CMD_MAE_ACTION_SET_LIST_FREE_OUT msgresponse */
33166 #define	MC_CMD_MAE_ACTION_SET_LIST_FREE_OUT_LENMIN 4
33167 #define	MC_CMD_MAE_ACTION_SET_LIST_FREE_OUT_LENMAX 128
33168 #define	MC_CMD_MAE_ACTION_SET_LIST_FREE_OUT_LENMAX_MCDI2 128
33169 #define	MC_CMD_MAE_ACTION_SET_LIST_FREE_OUT_LEN(num) (0+4*(num))
33170 #define	MC_CMD_MAE_ACTION_SET_LIST_FREE_OUT_FREED_ASL_ID_NUM(len) (((len)-0)/4)
33171 /* Same semantics as MC_CMD_MAE_COUNTER_FREE */
33172 #define	MC_CMD_MAE_ACTION_SET_LIST_FREE_OUT_FREED_ASL_ID_OFST 0
33173 #define	MC_CMD_MAE_ACTION_SET_LIST_FREE_OUT_FREED_ASL_ID_LEN 4
33174 #define	MC_CMD_MAE_ACTION_SET_LIST_FREE_OUT_FREED_ASL_ID_MINNUM 1
33175 #define	MC_CMD_MAE_ACTION_SET_LIST_FREE_OUT_FREED_ASL_ID_MAXNUM 32
33176 #define	MC_CMD_MAE_ACTION_SET_LIST_FREE_OUT_FREED_ASL_ID_MAXNUM_MCDI2 32
33177 
33178 
33179 /***********************************/
33180 /* MC_CMD_MAE_OUTER_RULE_INSERT
33181  * Inserts an Outer Rule, which controls encapsulation parsing, and may
33182  * influence the Lookup Sequence. If the maximum number of rules have already
33183  * been inserted then the command will fail with MC_CMD_ERR_ENOSPC.
33184  */
33185 #define	MC_CMD_MAE_OUTER_RULE_INSERT 0x15a
33186 #define	MC_CMD_MAE_OUTER_RULE_INSERT_MSGSET 0x15a
33187 #undef	MC_CMD_0x15a_PRIVILEGE_CTG
33188 
33189 #define	MC_CMD_0x15a_PRIVILEGE_CTG SRIOV_CTG_MAE
33190 
33191 /* MC_CMD_MAE_OUTER_RULE_INSERT_IN msgrequest */
33192 #define	MC_CMD_MAE_OUTER_RULE_INSERT_IN_LENMIN 16
33193 #define	MC_CMD_MAE_OUTER_RULE_INSERT_IN_LENMAX 252
33194 #define	MC_CMD_MAE_OUTER_RULE_INSERT_IN_LENMAX_MCDI2 1020
33195 #define	MC_CMD_MAE_OUTER_RULE_INSERT_IN_LEN(num) (16+1*(num))
33196 #define	MC_CMD_MAE_OUTER_RULE_INSERT_IN_FIELD_MATCH_CRITERIA_NUM(len) (((len)-16)/1)
33197 /* Packets matching the rule will be parsed with this encapsulation. */
33198 #define	MC_CMD_MAE_OUTER_RULE_INSERT_IN_ENCAP_TYPE_OFST 0
33199 #define	MC_CMD_MAE_OUTER_RULE_INSERT_IN_ENCAP_TYPE_LEN 4
33200 /*            Enum values, see field(s): */
33201 /*               MAE_MCDI_ENCAP_TYPE */
33202 /* Match priority. Lower values have higher priority. Must be less than
33203  * MC_CMD_MAE_GET_CAPS_OUT.ENCAP_PRIOS If a packet matches two filters with
33204  * equal priority then it is unspecified which takes priority.
33205  */
33206 #define	MC_CMD_MAE_OUTER_RULE_INSERT_IN_PRIO_OFST 4
33207 #define	MC_CMD_MAE_OUTER_RULE_INSERT_IN_PRIO_LEN 4
33208 /* Deprecated alias for ACTION_CONTROL. */
33209 #define	MC_CMD_MAE_OUTER_RULE_INSERT_IN_LOOKUP_CONTROL_OFST 8
33210 #define	MC_CMD_MAE_OUTER_RULE_INSERT_IN_LOOKUP_CONTROL_LEN 4
33211 #define	MC_CMD_MAE_OUTER_RULE_INSERT_IN_DO_CT_OFST 8
33212 #define	MC_CMD_MAE_OUTER_RULE_INSERT_IN_DO_CT_LBN 0
33213 #define	MC_CMD_MAE_OUTER_RULE_INSERT_IN_DO_CT_WIDTH 1
33214 #define	MC_CMD_MAE_OUTER_RULE_INSERT_IN_CT_VNI_MODE_OFST 8
33215 #define	MC_CMD_MAE_OUTER_RULE_INSERT_IN_CT_VNI_MODE_LBN 1
33216 #define	MC_CMD_MAE_OUTER_RULE_INSERT_IN_CT_VNI_MODE_WIDTH 2
33217 /*             Enum values, see field(s): */
33218 /*                MAE_CT_VNI_MODE */
33219 #define	MC_CMD_MAE_OUTER_RULE_INSERT_IN_DO_COUNT_OFST 8
33220 #define	MC_CMD_MAE_OUTER_RULE_INSERT_IN_DO_COUNT_LBN 3
33221 #define	MC_CMD_MAE_OUTER_RULE_INSERT_IN_DO_COUNT_WIDTH 1
33222 #define	MC_CMD_MAE_OUTER_RULE_INSERT_IN_CT_TCP_FLAGS_INHIBIT_OFST 8
33223 #define	MC_CMD_MAE_OUTER_RULE_INSERT_IN_CT_TCP_FLAGS_INHIBIT_LBN 4
33224 #define	MC_CMD_MAE_OUTER_RULE_INSERT_IN_CT_TCP_FLAGS_INHIBIT_WIDTH 1
33225 #define	MC_CMD_MAE_OUTER_RULE_INSERT_IN_RECIRC_ID_OFST 8
33226 #define	MC_CMD_MAE_OUTER_RULE_INSERT_IN_RECIRC_ID_LBN 8
33227 #define	MC_CMD_MAE_OUTER_RULE_INSERT_IN_RECIRC_ID_WIDTH 8
33228 #define	MC_CMD_MAE_OUTER_RULE_INSERT_IN_CT_DOMAIN_OFST 8
33229 #define	MC_CMD_MAE_OUTER_RULE_INSERT_IN_CT_DOMAIN_LBN 16
33230 #define	MC_CMD_MAE_OUTER_RULE_INSERT_IN_CT_DOMAIN_WIDTH 16
33231 /* This field controls the actions that are performed when a rule is hit. */
33232 #define	MC_CMD_MAE_OUTER_RULE_INSERT_IN_ACTION_CONTROL_OFST 8
33233 #define	MC_CMD_MAE_OUTER_RULE_INSERT_IN_ACTION_CONTROL_LEN 4
33234 /* ID of counter to increment when the rule is hit. Only used if the DO_COUNT
33235  * flag is set. The ID must have been allocated with COUNTER_TYPE=OR.
33236  */
33237 #define	MC_CMD_MAE_OUTER_RULE_INSERT_IN_COUNTER_ID_OFST 12
33238 #define	MC_CMD_MAE_OUTER_RULE_INSERT_IN_COUNTER_ID_LEN 4
33239 /* Structure of the format MAE_ENC_FIELD_PAIRS. */
33240 #define	MC_CMD_MAE_OUTER_RULE_INSERT_IN_FIELD_MATCH_CRITERIA_OFST 16
33241 #define	MC_CMD_MAE_OUTER_RULE_INSERT_IN_FIELD_MATCH_CRITERIA_LEN 1
33242 #define	MC_CMD_MAE_OUTER_RULE_INSERT_IN_FIELD_MATCH_CRITERIA_MINNUM 0
33243 #define	MC_CMD_MAE_OUTER_RULE_INSERT_IN_FIELD_MATCH_CRITERIA_MAXNUM 236
33244 #define	MC_CMD_MAE_OUTER_RULE_INSERT_IN_FIELD_MATCH_CRITERIA_MAXNUM_MCDI2 1004
33245 
33246 /* MC_CMD_MAE_OUTER_RULE_INSERT_OUT msgresponse */
33247 #define	MC_CMD_MAE_OUTER_RULE_INSERT_OUT_LEN 4
33248 #define	MC_CMD_MAE_OUTER_RULE_INSERT_OUT_OR_ID_OFST 0
33249 #define	MC_CMD_MAE_OUTER_RULE_INSERT_OUT_OR_ID_LEN 4
33250 /* enum: An outer match ID that is guaranteed never to represent an outer match
33251  */
33252 #define	MC_CMD_MAE_OUTER_RULE_INSERT_OUT_OUTER_RULE_ID_NULL 0xffffffff
33253 
33254 
33255 /***********************************/
33256 /* MC_CMD_MAE_OUTER_RULE_REMOVE
33257  */
33258 #define	MC_CMD_MAE_OUTER_RULE_REMOVE 0x15b
33259 #define	MC_CMD_MAE_OUTER_RULE_REMOVE_MSGSET 0x15b
33260 #undef	MC_CMD_0x15b_PRIVILEGE_CTG
33261 
33262 #define	MC_CMD_0x15b_PRIVILEGE_CTG SRIOV_CTG_MAE
33263 
33264 /* MC_CMD_MAE_OUTER_RULE_REMOVE_IN msgrequest */
33265 #define	MC_CMD_MAE_OUTER_RULE_REMOVE_IN_LENMIN 4
33266 #define	MC_CMD_MAE_OUTER_RULE_REMOVE_IN_LENMAX 128
33267 #define	MC_CMD_MAE_OUTER_RULE_REMOVE_IN_LENMAX_MCDI2 128
33268 #define	MC_CMD_MAE_OUTER_RULE_REMOVE_IN_LEN(num) (0+4*(num))
33269 #define	MC_CMD_MAE_OUTER_RULE_REMOVE_IN_OR_ID_NUM(len) (((len)-0)/4)
33270 /* Same semantics as MC_CMD_MAE_COUNTER_FREE */
33271 #define	MC_CMD_MAE_OUTER_RULE_REMOVE_IN_OR_ID_OFST 0
33272 #define	MC_CMD_MAE_OUTER_RULE_REMOVE_IN_OR_ID_LEN 4
33273 #define	MC_CMD_MAE_OUTER_RULE_REMOVE_IN_OR_ID_MINNUM 1
33274 #define	MC_CMD_MAE_OUTER_RULE_REMOVE_IN_OR_ID_MAXNUM 32
33275 #define	MC_CMD_MAE_OUTER_RULE_REMOVE_IN_OR_ID_MAXNUM_MCDI2 32
33276 
33277 /* MC_CMD_MAE_OUTER_RULE_REMOVE_OUT msgresponse */
33278 #define	MC_CMD_MAE_OUTER_RULE_REMOVE_OUT_LENMIN 4
33279 #define	MC_CMD_MAE_OUTER_RULE_REMOVE_OUT_LENMAX 128
33280 #define	MC_CMD_MAE_OUTER_RULE_REMOVE_OUT_LENMAX_MCDI2 128
33281 #define	MC_CMD_MAE_OUTER_RULE_REMOVE_OUT_LEN(num) (0+4*(num))
33282 #define	MC_CMD_MAE_OUTER_RULE_REMOVE_OUT_REMOVED_OR_ID_NUM(len) (((len)-0)/4)
33283 /* Same semantics as MC_CMD_MAE_COUNTER_FREE */
33284 #define	MC_CMD_MAE_OUTER_RULE_REMOVE_OUT_REMOVED_OR_ID_OFST 0
33285 #define	MC_CMD_MAE_OUTER_RULE_REMOVE_OUT_REMOVED_OR_ID_LEN 4
33286 #define	MC_CMD_MAE_OUTER_RULE_REMOVE_OUT_REMOVED_OR_ID_MINNUM 1
33287 #define	MC_CMD_MAE_OUTER_RULE_REMOVE_OUT_REMOVED_OR_ID_MAXNUM 32
33288 #define	MC_CMD_MAE_OUTER_RULE_REMOVE_OUT_REMOVED_OR_ID_MAXNUM_MCDI2 32
33289 
33290 
33291 /***********************************/
33292 /* MC_CMD_MAE_OUTER_RULE_UPDATE
33293  * Atomically change the response of an Outer Rule.
33294  */
33295 #define	MC_CMD_MAE_OUTER_RULE_UPDATE 0x17d
33296 #define	MC_CMD_MAE_OUTER_RULE_UPDATE_MSGSET 0x17d
33297 #undef	MC_CMD_0x17d_PRIVILEGE_CTG
33298 
33299 #define	MC_CMD_0x17d_PRIVILEGE_CTG SRIOV_CTG_MAE
33300 
33301 /* MC_CMD_MAE_OUTER_RULE_UPDATE_IN msgrequest */
33302 #define	MC_CMD_MAE_OUTER_RULE_UPDATE_IN_LEN 16
33303 /* ID of outer rule to update */
33304 #define	MC_CMD_MAE_OUTER_RULE_UPDATE_IN_OR_ID_OFST 0
33305 #define	MC_CMD_MAE_OUTER_RULE_UPDATE_IN_OR_ID_LEN 4
33306 /* Packets matching the rule will be parsed with this encapsulation. */
33307 #define	MC_CMD_MAE_OUTER_RULE_UPDATE_IN_ENCAP_TYPE_OFST 4
33308 #define	MC_CMD_MAE_OUTER_RULE_UPDATE_IN_ENCAP_TYPE_LEN 4
33309 /*            Enum values, see field(s): */
33310 /*               MAE_MCDI_ENCAP_TYPE */
33311 /* This field controls the actions that are performed when a rule is hit. */
33312 #define	MC_CMD_MAE_OUTER_RULE_UPDATE_IN_ACTION_CONTROL_OFST 8
33313 #define	MC_CMD_MAE_OUTER_RULE_UPDATE_IN_ACTION_CONTROL_LEN 4
33314 #define	MC_CMD_MAE_OUTER_RULE_UPDATE_IN_DO_CT_OFST 8
33315 #define	MC_CMD_MAE_OUTER_RULE_UPDATE_IN_DO_CT_LBN 0
33316 #define	MC_CMD_MAE_OUTER_RULE_UPDATE_IN_DO_CT_WIDTH 1
33317 #define	MC_CMD_MAE_OUTER_RULE_UPDATE_IN_CT_VNI_MODE_OFST 8
33318 #define	MC_CMD_MAE_OUTER_RULE_UPDATE_IN_CT_VNI_MODE_LBN 1
33319 #define	MC_CMD_MAE_OUTER_RULE_UPDATE_IN_CT_VNI_MODE_WIDTH 2
33320 /*             Enum values, see field(s): */
33321 /*                MAE_CT_VNI_MODE */
33322 #define	MC_CMD_MAE_OUTER_RULE_UPDATE_IN_DO_COUNT_OFST 8
33323 #define	MC_CMD_MAE_OUTER_RULE_UPDATE_IN_DO_COUNT_LBN 3
33324 #define	MC_CMD_MAE_OUTER_RULE_UPDATE_IN_DO_COUNT_WIDTH 1
33325 #define	MC_CMD_MAE_OUTER_RULE_UPDATE_IN_CT_TCP_FLAGS_INHIBIT_OFST 8
33326 #define	MC_CMD_MAE_OUTER_RULE_UPDATE_IN_CT_TCP_FLAGS_INHIBIT_LBN 4
33327 #define	MC_CMD_MAE_OUTER_RULE_UPDATE_IN_CT_TCP_FLAGS_INHIBIT_WIDTH 1
33328 #define	MC_CMD_MAE_OUTER_RULE_UPDATE_IN_RECIRC_ID_OFST 8
33329 #define	MC_CMD_MAE_OUTER_RULE_UPDATE_IN_RECIRC_ID_LBN 8
33330 #define	MC_CMD_MAE_OUTER_RULE_UPDATE_IN_RECIRC_ID_WIDTH 8
33331 #define	MC_CMD_MAE_OUTER_RULE_UPDATE_IN_CT_DOMAIN_OFST 8
33332 #define	MC_CMD_MAE_OUTER_RULE_UPDATE_IN_CT_DOMAIN_LBN 16
33333 #define	MC_CMD_MAE_OUTER_RULE_UPDATE_IN_CT_DOMAIN_WIDTH 16
33334 /* ID of counter to increment when the rule is hit. Only used if the DO_COUNT
33335  * flag is set. The ID must have been allocated with COUNTER_TYPE=OR.
33336  */
33337 #define	MC_CMD_MAE_OUTER_RULE_UPDATE_IN_COUNTER_ID_OFST 12
33338 #define	MC_CMD_MAE_OUTER_RULE_UPDATE_IN_COUNTER_ID_LEN 4
33339 
33340 /* MC_CMD_MAE_OUTER_RULE_UPDATE_OUT msgresponse */
33341 #define	MC_CMD_MAE_OUTER_RULE_UPDATE_OUT_LEN 0
33342 
33343 /* MAE_ACTION_RULE_RESPONSE structuredef */
33344 #define	MAE_ACTION_RULE_RESPONSE_LEN 16
33345 #define	MAE_ACTION_RULE_RESPONSE_ASL_ID_OFST 0
33346 #define	MAE_ACTION_RULE_RESPONSE_ASL_ID_LEN 4
33347 #define	MAE_ACTION_RULE_RESPONSE_ASL_ID_LBN 0
33348 #define	MAE_ACTION_RULE_RESPONSE_ASL_ID_WIDTH 32
33349 /* Only one of ASL_ID or AS_ID may have a non-NULL value. */
33350 #define	MAE_ACTION_RULE_RESPONSE_AS_ID_OFST 4
33351 #define	MAE_ACTION_RULE_RESPONSE_AS_ID_LEN 4
33352 #define	MAE_ACTION_RULE_RESPONSE_AS_ID_LBN 32
33353 #define	MAE_ACTION_RULE_RESPONSE_AS_ID_WIDTH 32
33354 /* Controls lookup flow when this rule is hit. See sub-fields for details. More
33355  * info on the lookup sequence can be found in SF-122976-TC. It is an error to
33356  * set both DO_CT and DO_RECIRC.
33357  */
33358 #define	MAE_ACTION_RULE_RESPONSE_LOOKUP_CONTROL_OFST 8
33359 #define	MAE_ACTION_RULE_RESPONSE_LOOKUP_CONTROL_LEN 4
33360 #define	MAE_ACTION_RULE_RESPONSE_DO_CT_OFST 8
33361 #define	MAE_ACTION_RULE_RESPONSE_DO_CT_LBN 0
33362 #define	MAE_ACTION_RULE_RESPONSE_DO_CT_WIDTH 1
33363 #define	MAE_ACTION_RULE_RESPONSE_DO_RECIRC_OFST 8
33364 #define	MAE_ACTION_RULE_RESPONSE_DO_RECIRC_LBN 1
33365 #define	MAE_ACTION_RULE_RESPONSE_DO_RECIRC_WIDTH 1
33366 #define	MAE_ACTION_RULE_RESPONSE_CT_VNI_MODE_OFST 8
33367 #define	MAE_ACTION_RULE_RESPONSE_CT_VNI_MODE_LBN 2
33368 #define	MAE_ACTION_RULE_RESPONSE_CT_VNI_MODE_WIDTH 2
33369 /*             Enum values, see field(s): */
33370 /*                MAE_CT_VNI_MODE */
33371 #define	MAE_ACTION_RULE_RESPONSE_RECIRC_ID_OFST 8
33372 #define	MAE_ACTION_RULE_RESPONSE_RECIRC_ID_LBN 8
33373 #define	MAE_ACTION_RULE_RESPONSE_RECIRC_ID_WIDTH 8
33374 #define	MAE_ACTION_RULE_RESPONSE_CT_DOMAIN_OFST 8
33375 #define	MAE_ACTION_RULE_RESPONSE_CT_DOMAIN_LBN 16
33376 #define	MAE_ACTION_RULE_RESPONSE_CT_DOMAIN_WIDTH 16
33377 #define	MAE_ACTION_RULE_RESPONSE_LOOKUP_CONTROL_LBN 64
33378 #define	MAE_ACTION_RULE_RESPONSE_LOOKUP_CONTROL_WIDTH 32
33379 /* Counter ID to increment if DO_CT or DO_RECIRC is set. Must be set to
33380  * COUNTER_ID_NULL otherwise. Counter ID must have been allocated with
33381  * COUNTER_TYPE=AR.
33382  */
33383 #define	MAE_ACTION_RULE_RESPONSE_COUNTER_ID_OFST 12
33384 #define	MAE_ACTION_RULE_RESPONSE_COUNTER_ID_LEN 4
33385 #define	MAE_ACTION_RULE_RESPONSE_COUNTER_ID_LBN 96
33386 #define	MAE_ACTION_RULE_RESPONSE_COUNTER_ID_WIDTH 32
33387 
33388 
33389 /***********************************/
33390 /* MC_CMD_MAE_ACTION_RULE_INSERT
33391  * Insert a rule specify that packets matching a filter be processed according
33392  * to a previous allocated action. Masks can be set as indicated by
33393  * MC_CMD_MAE_GET_MATCH_FIELD_CAPABILITIES. If the maximum number of rules have
33394  * already been inserted then the command will fail with MC_CMD_ERR_ENOSPC.
33395  */
33396 #define	MC_CMD_MAE_ACTION_RULE_INSERT 0x15c
33397 #define	MC_CMD_MAE_ACTION_RULE_INSERT_MSGSET 0x15c
33398 #undef	MC_CMD_0x15c_PRIVILEGE_CTG
33399 
33400 #define	MC_CMD_0x15c_PRIVILEGE_CTG SRIOV_CTG_MAE
33401 
33402 /* MC_CMD_MAE_ACTION_RULE_INSERT_IN msgrequest */
33403 #define	MC_CMD_MAE_ACTION_RULE_INSERT_IN_LENMIN 28
33404 #define	MC_CMD_MAE_ACTION_RULE_INSERT_IN_LENMAX 252
33405 #define	MC_CMD_MAE_ACTION_RULE_INSERT_IN_LENMAX_MCDI2 1020
33406 #define	MC_CMD_MAE_ACTION_RULE_INSERT_IN_LEN(num) (28+1*(num))
33407 #define	MC_CMD_MAE_ACTION_RULE_INSERT_IN_MATCH_CRITERIA_NUM(len) (((len)-28)/1)
33408 /* See MC_CMD_MAE_OUTER_RULE_REGISTER_IN/PRIO. */
33409 #define	MC_CMD_MAE_ACTION_RULE_INSERT_IN_PRIO_OFST 0
33410 #define	MC_CMD_MAE_ACTION_RULE_INSERT_IN_PRIO_LEN 4
33411 /* Structure of the format MAE_ACTION_RULE_RESPONSE */
33412 #define	MC_CMD_MAE_ACTION_RULE_INSERT_IN_RESPONSE_OFST 4
33413 #define	MC_CMD_MAE_ACTION_RULE_INSERT_IN_RESPONSE_LEN 20
33414 /* Reserved for future use. Must be set to zero. */
33415 #define	MC_CMD_MAE_ACTION_RULE_INSERT_IN_RSVD_OFST 24
33416 #define	MC_CMD_MAE_ACTION_RULE_INSERT_IN_RSVD_LEN 4
33417 /* Structure of the format MAE_FIELD_MASK_VALUE_PAIRS */
33418 #define	MC_CMD_MAE_ACTION_RULE_INSERT_IN_MATCH_CRITERIA_OFST 28
33419 #define	MC_CMD_MAE_ACTION_RULE_INSERT_IN_MATCH_CRITERIA_LEN 1
33420 #define	MC_CMD_MAE_ACTION_RULE_INSERT_IN_MATCH_CRITERIA_MINNUM 0
33421 #define	MC_CMD_MAE_ACTION_RULE_INSERT_IN_MATCH_CRITERIA_MAXNUM 224
33422 #define	MC_CMD_MAE_ACTION_RULE_INSERT_IN_MATCH_CRITERIA_MAXNUM_MCDI2 992
33423 
33424 /* MC_CMD_MAE_ACTION_RULE_INSERT_OUT msgresponse */
33425 #define	MC_CMD_MAE_ACTION_RULE_INSERT_OUT_LEN 4
33426 #define	MC_CMD_MAE_ACTION_RULE_INSERT_OUT_AR_ID_OFST 0
33427 #define	MC_CMD_MAE_ACTION_RULE_INSERT_OUT_AR_ID_LEN 4
33428 /* enum: An action rule ID that is guaranteed never to represent an action rule
33429  */
33430 #define	MC_CMD_MAE_ACTION_RULE_INSERT_OUT_ACTION_RULE_ID_NULL 0xffffffff
33431 
33432 
33433 /***********************************/
33434 /* MC_CMD_MAE_ACTION_RULE_UPDATE
33435  * Atomically change the response of an action rule. Firmware may return
33436  * ENOTSUP, in which case the driver should DELETE/INSERT.
33437  */
33438 #define	MC_CMD_MAE_ACTION_RULE_UPDATE 0x15d
33439 #define	MC_CMD_MAE_ACTION_RULE_UPDATE_MSGSET 0x15d
33440 #undef	MC_CMD_0x15d_PRIVILEGE_CTG
33441 
33442 #define	MC_CMD_0x15d_PRIVILEGE_CTG SRIOV_CTG_MAE
33443 
33444 /* MC_CMD_MAE_ACTION_RULE_UPDATE_IN msgrequest */
33445 #define	MC_CMD_MAE_ACTION_RULE_UPDATE_IN_LEN 24
33446 /* ID of action rule to update */
33447 #define	MC_CMD_MAE_ACTION_RULE_UPDATE_IN_AR_ID_OFST 0
33448 #define	MC_CMD_MAE_ACTION_RULE_UPDATE_IN_AR_ID_LEN 4
33449 /* Structure of the format MAE_ACTION_RULE_RESPONSE */
33450 #define	MC_CMD_MAE_ACTION_RULE_UPDATE_IN_RESPONSE_OFST 4
33451 #define	MC_CMD_MAE_ACTION_RULE_UPDATE_IN_RESPONSE_LEN 20
33452 
33453 /* MC_CMD_MAE_ACTION_RULE_UPDATE_OUT msgresponse */
33454 #define	MC_CMD_MAE_ACTION_RULE_UPDATE_OUT_LEN 0
33455 
33456 
33457 /***********************************/
33458 /* MC_CMD_MAE_ACTION_RULE_DELETE
33459  */
33460 #define	MC_CMD_MAE_ACTION_RULE_DELETE 0x155
33461 #define	MC_CMD_MAE_ACTION_RULE_DELETE_MSGSET 0x155
33462 #undef	MC_CMD_0x155_PRIVILEGE_CTG
33463 
33464 #define	MC_CMD_0x155_PRIVILEGE_CTG SRIOV_CTG_MAE
33465 
33466 /* MC_CMD_MAE_ACTION_RULE_DELETE_IN msgrequest */
33467 #define	MC_CMD_MAE_ACTION_RULE_DELETE_IN_LENMIN 4
33468 #define	MC_CMD_MAE_ACTION_RULE_DELETE_IN_LENMAX 128
33469 #define	MC_CMD_MAE_ACTION_RULE_DELETE_IN_LENMAX_MCDI2 128
33470 #define	MC_CMD_MAE_ACTION_RULE_DELETE_IN_LEN(num) (0+4*(num))
33471 #define	MC_CMD_MAE_ACTION_RULE_DELETE_IN_AR_ID_NUM(len) (((len)-0)/4)
33472 /* Same semantics as MC_CMD_MAE_COUNTER_FREE */
33473 #define	MC_CMD_MAE_ACTION_RULE_DELETE_IN_AR_ID_OFST 0
33474 #define	MC_CMD_MAE_ACTION_RULE_DELETE_IN_AR_ID_LEN 4
33475 #define	MC_CMD_MAE_ACTION_RULE_DELETE_IN_AR_ID_MINNUM 1
33476 #define	MC_CMD_MAE_ACTION_RULE_DELETE_IN_AR_ID_MAXNUM 32
33477 #define	MC_CMD_MAE_ACTION_RULE_DELETE_IN_AR_ID_MAXNUM_MCDI2 32
33478 
33479 /* MC_CMD_MAE_ACTION_RULE_DELETE_OUT msgresponse */
33480 #define	MC_CMD_MAE_ACTION_RULE_DELETE_OUT_LENMIN 4
33481 #define	MC_CMD_MAE_ACTION_RULE_DELETE_OUT_LENMAX 128
33482 #define	MC_CMD_MAE_ACTION_RULE_DELETE_OUT_LENMAX_MCDI2 128
33483 #define	MC_CMD_MAE_ACTION_RULE_DELETE_OUT_LEN(num) (0+4*(num))
33484 #define	MC_CMD_MAE_ACTION_RULE_DELETE_OUT_DELETED_AR_ID_NUM(len) (((len)-0)/4)
33485 /* Same semantics as MC_CMD_MAE_COUNTER_FREE */
33486 #define	MC_CMD_MAE_ACTION_RULE_DELETE_OUT_DELETED_AR_ID_OFST 0
33487 #define	MC_CMD_MAE_ACTION_RULE_DELETE_OUT_DELETED_AR_ID_LEN 4
33488 #define	MC_CMD_MAE_ACTION_RULE_DELETE_OUT_DELETED_AR_ID_MINNUM 1
33489 #define	MC_CMD_MAE_ACTION_RULE_DELETE_OUT_DELETED_AR_ID_MAXNUM 32
33490 #define	MC_CMD_MAE_ACTION_RULE_DELETE_OUT_DELETED_AR_ID_MAXNUM_MCDI2 32
33491 
33492 
33493 /***********************************/
33494 /* MC_CMD_MAE_MPORT_LOOKUP
33495  * Return the m-port corresponding to a selector.
33496  */
33497 #define	MC_CMD_MAE_MPORT_LOOKUP 0x160
33498 #define	MC_CMD_MAE_MPORT_LOOKUP_MSGSET 0x160
33499 #undef	MC_CMD_0x160_PRIVILEGE_CTG
33500 
33501 #define	MC_CMD_0x160_PRIVILEGE_CTG SRIOV_CTG_GENERAL
33502 
33503 /* MC_CMD_MAE_MPORT_LOOKUP_IN msgrequest */
33504 #define	MC_CMD_MAE_MPORT_LOOKUP_IN_LEN 4
33505 #define	MC_CMD_MAE_MPORT_LOOKUP_IN_MPORT_SELECTOR_OFST 0
33506 #define	MC_CMD_MAE_MPORT_LOOKUP_IN_MPORT_SELECTOR_LEN 4
33507 
33508 /* MC_CMD_MAE_MPORT_LOOKUP_OUT msgresponse */
33509 #define	MC_CMD_MAE_MPORT_LOOKUP_OUT_LEN 4
33510 #define	MC_CMD_MAE_MPORT_LOOKUP_OUT_MPORT_ID_OFST 0
33511 #define	MC_CMD_MAE_MPORT_LOOKUP_OUT_MPORT_ID_LEN 4
33512 
33513 
33514 /***********************************/
33515 /* MC_CMD_MAE_MPORT_ALLOC
33516  * Allocates a m-port, which can subsequently be used in action rules as a
33517  * match or delivery argument.
33518  */
33519 #define	MC_CMD_MAE_MPORT_ALLOC 0x163
33520 #define	MC_CMD_MAE_MPORT_ALLOC_MSGSET 0x163
33521 #undef	MC_CMD_0x163_PRIVILEGE_CTG
33522 
33523 #define	MC_CMD_0x163_PRIVILEGE_CTG SRIOV_CTG_MAE
33524 
33525 /* MC_CMD_MAE_MPORT_ALLOC_IN msgrequest */
33526 #define	MC_CMD_MAE_MPORT_ALLOC_IN_LEN 20
33527 /* The type of m-port to allocate. Firmware may return ENOTSUP for certain
33528  * types.
33529  */
33530 #define	MC_CMD_MAE_MPORT_ALLOC_IN_TYPE_OFST 0
33531 #define	MC_CMD_MAE_MPORT_ALLOC_IN_TYPE_LEN 4
33532 /* enum: Traffic can be sent to this type of m-port using an override
33533  * descriptor. Traffic received on this type of m-port will go to the VNIC on a
33534  * nominated m-port, and will be delivered with metadata identifying the alias
33535  * m-port.
33536  */
33537 #define	MC_CMD_MAE_MPORT_ALLOC_IN_MPORT_TYPE_ALIAS 0x1
33538 /* enum: This type of m-port has a VNIC attached. Queues can be created on this
33539  * VNIC by specifying the created m-port as an m-port selector at queue
33540  * creation time.
33541  */
33542 #define	MC_CMD_MAE_MPORT_ALLOC_IN_MPORT_TYPE_VNIC 0x2
33543 /* 128-bit value for use by the driver. */
33544 #define	MC_CMD_MAE_MPORT_ALLOC_IN_UUID_OFST 4
33545 #define	MC_CMD_MAE_MPORT_ALLOC_IN_UUID_LEN 16
33546 
33547 /* MC_CMD_MAE_MPORT_ALLOC_ALIAS_IN msgrequest */
33548 #define	MC_CMD_MAE_MPORT_ALLOC_ALIAS_IN_LEN 24
33549 /* The type of m-port to allocate. Firmware may return ENOTSUP for certain
33550  * types.
33551  */
33552 #define	MC_CMD_MAE_MPORT_ALLOC_ALIAS_IN_TYPE_OFST 0
33553 #define	MC_CMD_MAE_MPORT_ALLOC_ALIAS_IN_TYPE_LEN 4
33554 /* enum: Traffic can be sent to this type of m-port using an override
33555  * descriptor. Traffic received on this type of m-port will go to the VNIC on a
33556  * nominated m-port, and will be delivered with metadata identifying the alias
33557  * m-port.
33558  */
33559 #define	MC_CMD_MAE_MPORT_ALLOC_ALIAS_IN_MPORT_TYPE_ALIAS 0x1
33560 /* enum: This type of m-port has a VNIC attached. Queues can be created on this
33561  * VNIC by specifying the created m-port as an m-port selector at queue
33562  * creation time.
33563  */
33564 #define	MC_CMD_MAE_MPORT_ALLOC_ALIAS_IN_MPORT_TYPE_VNIC 0x2
33565 /* 128-bit value for use by the driver. */
33566 #define	MC_CMD_MAE_MPORT_ALLOC_ALIAS_IN_UUID_OFST 4
33567 #define	MC_CMD_MAE_MPORT_ALLOC_ALIAS_IN_UUID_LEN 16
33568 /* An m-port selector identifying the VNIC to which traffic should be
33569  * delivered. This must currently be set to MAE_MPORT_SELECTOR_ASSIGNED (i.e.
33570  * the m-port assigned to the calling client).
33571  */
33572 #define	MC_CMD_MAE_MPORT_ALLOC_ALIAS_IN_DELIVER_MPORT_OFST 20
33573 #define	MC_CMD_MAE_MPORT_ALLOC_ALIAS_IN_DELIVER_MPORT_LEN 4
33574 
33575 /* MC_CMD_MAE_MPORT_ALLOC_VNIC_IN msgrequest */
33576 #define	MC_CMD_MAE_MPORT_ALLOC_VNIC_IN_LEN 20
33577 /* The type of m-port to allocate. Firmware may return ENOTSUP for certain
33578  * types.
33579  */
33580 #define	MC_CMD_MAE_MPORT_ALLOC_VNIC_IN_TYPE_OFST 0
33581 #define	MC_CMD_MAE_MPORT_ALLOC_VNIC_IN_TYPE_LEN 4
33582 /* enum: Traffic can be sent to this type of m-port using an override
33583  * descriptor. Traffic received on this type of m-port will go to the VNIC on a
33584  * nominated m-port, and will be delivered with metadata identifying the alias
33585  * m-port.
33586  */
33587 #define	MC_CMD_MAE_MPORT_ALLOC_VNIC_IN_MPORT_TYPE_ALIAS 0x1
33588 /* enum: This type of m-port has a VNIC attached. Queues can be created on this
33589  * VNIC by specifying the created m-port as an m-port selector at queue
33590  * creation time.
33591  */
33592 #define	MC_CMD_MAE_MPORT_ALLOC_VNIC_IN_MPORT_TYPE_VNIC 0x2
33593 /* 128-bit value for use by the driver. */
33594 #define	MC_CMD_MAE_MPORT_ALLOC_VNIC_IN_UUID_OFST 4
33595 #define	MC_CMD_MAE_MPORT_ALLOC_VNIC_IN_UUID_LEN 16
33596 
33597 /* MC_CMD_MAE_MPORT_ALLOC_OUT msgresponse */
33598 #define	MC_CMD_MAE_MPORT_ALLOC_OUT_LEN 4
33599 /* ID of newly-allocated m-port. */
33600 #define	MC_CMD_MAE_MPORT_ALLOC_OUT_MPORT_ID_OFST 0
33601 #define	MC_CMD_MAE_MPORT_ALLOC_OUT_MPORT_ID_LEN 4
33602 
33603 /* MC_CMD_MAE_MPORT_ALLOC_ALIAS_OUT msgrequest */
33604 #define	MC_CMD_MAE_MPORT_ALLOC_ALIAS_OUT_LEN 24
33605 /* ID of newly-allocated m-port. */
33606 #define	MC_CMD_MAE_MPORT_ALLOC_ALIAS_OUT_MPORT_ID_OFST 0
33607 #define	MC_CMD_MAE_MPORT_ALLOC_ALIAS_OUT_MPORT_ID_LEN 4
33608 /* A value that will appear in the packet metadata for any packets delivered
33609  * using an alias type m-port. This value is guaranteed unique on the VNIC
33610  * being delivered to, and is guaranteed not to exceed the range of values
33611  * representable in the relevant metadata field.
33612  */
33613 #define	MC_CMD_MAE_MPORT_ALLOC_ALIAS_OUT_LABEL_OFST 20
33614 #define	MC_CMD_MAE_MPORT_ALLOC_ALIAS_OUT_LABEL_LEN 4
33615 
33616 /* MC_CMD_MAE_MPORT_ALLOC_VNIC_OUT msgrequest */
33617 #define	MC_CMD_MAE_MPORT_ALLOC_VNIC_OUT_LEN 4
33618 /* ID of newly-allocated m-port. */
33619 #define	MC_CMD_MAE_MPORT_ALLOC_VNIC_OUT_MPORT_ID_OFST 0
33620 #define	MC_CMD_MAE_MPORT_ALLOC_VNIC_OUT_MPORT_ID_LEN 4
33621 
33622 
33623 /***********************************/
33624 /* MC_CMD_MAE_MPORT_FREE
33625  * Free a m-port which was previously allocated by the driver.
33626  */
33627 #define	MC_CMD_MAE_MPORT_FREE 0x164
33628 #define	MC_CMD_MAE_MPORT_FREE_MSGSET 0x164
33629 #undef	MC_CMD_0x164_PRIVILEGE_CTG
33630 
33631 #define	MC_CMD_0x164_PRIVILEGE_CTG SRIOV_CTG_MAE
33632 
33633 /* MC_CMD_MAE_MPORT_FREE_IN msgrequest */
33634 #define	MC_CMD_MAE_MPORT_FREE_IN_LEN 4
33635 /* MPORT_ID as returned by MC_CMD_MAE_MPORT_ALLOC. */
33636 #define	MC_CMD_MAE_MPORT_FREE_IN_MPORT_ID_OFST 0
33637 #define	MC_CMD_MAE_MPORT_FREE_IN_MPORT_ID_LEN 4
33638 
33639 /* MC_CMD_MAE_MPORT_FREE_OUT msgresponse */
33640 #define	MC_CMD_MAE_MPORT_FREE_OUT_LEN 0
33641 
33642 /* MAE_MPORT_DESC structuredef */
33643 #define	MAE_MPORT_DESC_LEN 52
33644 #define	MAE_MPORT_DESC_MPORT_ID_OFST 0
33645 #define	MAE_MPORT_DESC_MPORT_ID_LEN 4
33646 #define	MAE_MPORT_DESC_MPORT_ID_LBN 0
33647 #define	MAE_MPORT_DESC_MPORT_ID_WIDTH 32
33648 /* Reserved for future purposes, contains information independent of caller */
33649 #define	MAE_MPORT_DESC_FLAGS_OFST 4
33650 #define	MAE_MPORT_DESC_FLAGS_LEN 4
33651 #define	MAE_MPORT_DESC_FLAGS_LBN 32
33652 #define	MAE_MPORT_DESC_FLAGS_WIDTH 32
33653 #define	MAE_MPORT_DESC_CALLER_FLAGS_OFST 8
33654 #define	MAE_MPORT_DESC_CALLER_FLAGS_LEN 4
33655 #define	MAE_MPORT_DESC_CAN_RECEIVE_ON_OFST 8
33656 #define	MAE_MPORT_DESC_CAN_RECEIVE_ON_LBN 0
33657 #define	MAE_MPORT_DESC_CAN_RECEIVE_ON_WIDTH 1
33658 #define	MAE_MPORT_DESC_CAN_DELIVER_TO_OFST 8
33659 #define	MAE_MPORT_DESC_CAN_DELIVER_TO_LBN 1
33660 #define	MAE_MPORT_DESC_CAN_DELIVER_TO_WIDTH 1
33661 #define	MAE_MPORT_DESC_CAN_DELETE_OFST 8
33662 #define	MAE_MPORT_DESC_CAN_DELETE_LBN 2
33663 #define	MAE_MPORT_DESC_CAN_DELETE_WIDTH 1
33664 #define	MAE_MPORT_DESC_IS_ZOMBIE_OFST 8
33665 #define	MAE_MPORT_DESC_IS_ZOMBIE_LBN 3
33666 #define	MAE_MPORT_DESC_IS_ZOMBIE_WIDTH 1
33667 #define	MAE_MPORT_DESC_CALLER_FLAGS_LBN 64
33668 #define	MAE_MPORT_DESC_CALLER_FLAGS_WIDTH 32
33669 /* Not the ideal name; it's really the type of thing connected to the m-port */
33670 #define	MAE_MPORT_DESC_MPORT_TYPE_OFST 12
33671 #define	MAE_MPORT_DESC_MPORT_TYPE_LEN 4
33672 /* enum: Connected to a MAC... */
33673 #define	MAE_MPORT_DESC_MPORT_TYPE_NET_PORT 0x0
33674 /* enum: Adds metadata and delivers to another m-port */
33675 #define	MAE_MPORT_DESC_MPORT_TYPE_ALIAS 0x1
33676 /* enum: Connected to a VNIC. */
33677 #define	MAE_MPORT_DESC_MPORT_TYPE_VNIC 0x2
33678 #define	MAE_MPORT_DESC_MPORT_TYPE_LBN 96
33679 #define	MAE_MPORT_DESC_MPORT_TYPE_WIDTH 32
33680 /* 128-bit value available to drivers for m-port identification. */
33681 #define	MAE_MPORT_DESC_UUID_OFST 16
33682 #define	MAE_MPORT_DESC_UUID_LEN 16
33683 #define	MAE_MPORT_DESC_UUID_LBN 128
33684 #define	MAE_MPORT_DESC_UUID_WIDTH 128
33685 /* Big wadge of space reserved for other common properties */
33686 #define	MAE_MPORT_DESC_RESERVED_OFST 32
33687 #define	MAE_MPORT_DESC_RESERVED_LEN 8
33688 #define	MAE_MPORT_DESC_RESERVED_LO_OFST 32
33689 #define	MAE_MPORT_DESC_RESERVED_LO_LEN 4
33690 #define	MAE_MPORT_DESC_RESERVED_LO_LBN 256
33691 #define	MAE_MPORT_DESC_RESERVED_LO_WIDTH 32
33692 #define	MAE_MPORT_DESC_RESERVED_HI_OFST 36
33693 #define	MAE_MPORT_DESC_RESERVED_HI_LEN 4
33694 #define	MAE_MPORT_DESC_RESERVED_HI_LBN 288
33695 #define	MAE_MPORT_DESC_RESERVED_HI_WIDTH 32
33696 #define	MAE_MPORT_DESC_RESERVED_LBN 256
33697 #define	MAE_MPORT_DESC_RESERVED_WIDTH 64
33698 /* Logical port index. Only valid when type NET Port. */
33699 #define	MAE_MPORT_DESC_NET_PORT_IDX_OFST 40
33700 #define	MAE_MPORT_DESC_NET_PORT_IDX_LEN 4
33701 #define	MAE_MPORT_DESC_NET_PORT_IDX_LBN 320
33702 #define	MAE_MPORT_DESC_NET_PORT_IDX_WIDTH 32
33703 /* The m-port delivered to */
33704 #define	MAE_MPORT_DESC_ALIAS_DELIVER_MPORT_ID_OFST 40
33705 #define	MAE_MPORT_DESC_ALIAS_DELIVER_MPORT_ID_LEN 4
33706 #define	MAE_MPORT_DESC_ALIAS_DELIVER_MPORT_ID_LBN 320
33707 #define	MAE_MPORT_DESC_ALIAS_DELIVER_MPORT_ID_WIDTH 32
33708 /* The type of thing that owns the VNIC */
33709 #define	MAE_MPORT_DESC_VNIC_CLIENT_TYPE_OFST 40
33710 #define	MAE_MPORT_DESC_VNIC_CLIENT_TYPE_LEN 4
33711 #define	MAE_MPORT_DESC_VNIC_CLIENT_TYPE_FUNCTION 0x1 /* enum */
33712 #define	MAE_MPORT_DESC_VNIC_CLIENT_TYPE_PLUGIN 0x2 /* enum */
33713 #define	MAE_MPORT_DESC_VNIC_CLIENT_TYPE_LBN 320
33714 #define	MAE_MPORT_DESC_VNIC_CLIENT_TYPE_WIDTH 32
33715 /* The PCIe interface on which the function lives. CJK: We need an enumeration
33716  * of interfaces that we extend as new interface (types) appear. This belongs
33717  * elsewhere and should be referenced from here
33718  */
33719 #define	MAE_MPORT_DESC_VNIC_FUNCTION_INTERFACE_OFST 44
33720 #define	MAE_MPORT_DESC_VNIC_FUNCTION_INTERFACE_LEN 4
33721 #define	MAE_MPORT_DESC_VNIC_FUNCTION_INTERFACE_LBN 352
33722 #define	MAE_MPORT_DESC_VNIC_FUNCTION_INTERFACE_WIDTH 32
33723 #define	MAE_MPORT_DESC_VNIC_FUNCTION_PF_IDX_OFST 48
33724 #define	MAE_MPORT_DESC_VNIC_FUNCTION_PF_IDX_LEN 2
33725 #define	MAE_MPORT_DESC_VNIC_FUNCTION_PF_IDX_LBN 384
33726 #define	MAE_MPORT_DESC_VNIC_FUNCTION_PF_IDX_WIDTH 16
33727 #define	MAE_MPORT_DESC_VNIC_FUNCTION_VF_IDX_OFST 50
33728 #define	MAE_MPORT_DESC_VNIC_FUNCTION_VF_IDX_LEN 2
33729 /* enum: Indicates that the function is a PF */
33730 #define	MAE_MPORT_DESC_VF_IDX_NULL 0xffff
33731 #define	MAE_MPORT_DESC_VNIC_FUNCTION_VF_IDX_LBN 400
33732 #define	MAE_MPORT_DESC_VNIC_FUNCTION_VF_IDX_WIDTH 16
33733 /* Reserved. Should be ignored for now. */
33734 #define	MAE_MPORT_DESC_VNIC_PLUGIN_TBD_OFST 44
33735 #define	MAE_MPORT_DESC_VNIC_PLUGIN_TBD_LEN 4
33736 #define	MAE_MPORT_DESC_VNIC_PLUGIN_TBD_LBN 352
33737 #define	MAE_MPORT_DESC_VNIC_PLUGIN_TBD_WIDTH 32
33738 
33739 /* MAE_MPORT_DESC_V2 structuredef */
33740 #define	MAE_MPORT_DESC_V2_LEN 56
33741 #define	MAE_MPORT_DESC_V2_MPORT_ID_OFST 0
33742 #define	MAE_MPORT_DESC_V2_MPORT_ID_LEN 4
33743 #define	MAE_MPORT_DESC_V2_MPORT_ID_LBN 0
33744 #define	MAE_MPORT_DESC_V2_MPORT_ID_WIDTH 32
33745 /* Reserved for future purposes, contains information independent of caller */
33746 #define	MAE_MPORT_DESC_V2_FLAGS_OFST 4
33747 #define	MAE_MPORT_DESC_V2_FLAGS_LEN 4
33748 #define	MAE_MPORT_DESC_V2_FLAGS_LBN 32
33749 #define	MAE_MPORT_DESC_V2_FLAGS_WIDTH 32
33750 #define	MAE_MPORT_DESC_V2_CALLER_FLAGS_OFST 8
33751 #define	MAE_MPORT_DESC_V2_CALLER_FLAGS_LEN 4
33752 #define	MAE_MPORT_DESC_V2_CAN_RECEIVE_ON_OFST 8
33753 #define	MAE_MPORT_DESC_V2_CAN_RECEIVE_ON_LBN 0
33754 #define	MAE_MPORT_DESC_V2_CAN_RECEIVE_ON_WIDTH 1
33755 #define	MAE_MPORT_DESC_V2_CAN_DELIVER_TO_OFST 8
33756 #define	MAE_MPORT_DESC_V2_CAN_DELIVER_TO_LBN 1
33757 #define	MAE_MPORT_DESC_V2_CAN_DELIVER_TO_WIDTH 1
33758 #define	MAE_MPORT_DESC_V2_CAN_DELETE_OFST 8
33759 #define	MAE_MPORT_DESC_V2_CAN_DELETE_LBN 2
33760 #define	MAE_MPORT_DESC_V2_CAN_DELETE_WIDTH 1
33761 #define	MAE_MPORT_DESC_V2_IS_ZOMBIE_OFST 8
33762 #define	MAE_MPORT_DESC_V2_IS_ZOMBIE_LBN 3
33763 #define	MAE_MPORT_DESC_V2_IS_ZOMBIE_WIDTH 1
33764 #define	MAE_MPORT_DESC_V2_CALLER_FLAGS_LBN 64
33765 #define	MAE_MPORT_DESC_V2_CALLER_FLAGS_WIDTH 32
33766 /* Not the ideal name; it's really the type of thing connected to the m-port */
33767 #define	MAE_MPORT_DESC_V2_MPORT_TYPE_OFST 12
33768 #define	MAE_MPORT_DESC_V2_MPORT_TYPE_LEN 4
33769 /* enum: Connected to a MAC... */
33770 #define	MAE_MPORT_DESC_V2_MPORT_TYPE_NET_PORT 0x0
33771 /* enum: Adds metadata and delivers to another m-port */
33772 #define	MAE_MPORT_DESC_V2_MPORT_TYPE_ALIAS 0x1
33773 /* enum: Connected to a VNIC. */
33774 #define	MAE_MPORT_DESC_V2_MPORT_TYPE_VNIC 0x2
33775 #define	MAE_MPORT_DESC_V2_MPORT_TYPE_LBN 96
33776 #define	MAE_MPORT_DESC_V2_MPORT_TYPE_WIDTH 32
33777 /* 128-bit value available to drivers for m-port identification. */
33778 #define	MAE_MPORT_DESC_V2_UUID_OFST 16
33779 #define	MAE_MPORT_DESC_V2_UUID_LEN 16
33780 #define	MAE_MPORT_DESC_V2_UUID_LBN 128
33781 #define	MAE_MPORT_DESC_V2_UUID_WIDTH 128
33782 /* Big wadge of space reserved for other common properties */
33783 #define	MAE_MPORT_DESC_V2_RESERVED_OFST 32
33784 #define	MAE_MPORT_DESC_V2_RESERVED_LEN 8
33785 #define	MAE_MPORT_DESC_V2_RESERVED_LO_OFST 32
33786 #define	MAE_MPORT_DESC_V2_RESERVED_LO_LEN 4
33787 #define	MAE_MPORT_DESC_V2_RESERVED_LO_LBN 256
33788 #define	MAE_MPORT_DESC_V2_RESERVED_LO_WIDTH 32
33789 #define	MAE_MPORT_DESC_V2_RESERVED_HI_OFST 36
33790 #define	MAE_MPORT_DESC_V2_RESERVED_HI_LEN 4
33791 #define	MAE_MPORT_DESC_V2_RESERVED_HI_LBN 288
33792 #define	MAE_MPORT_DESC_V2_RESERVED_HI_WIDTH 32
33793 #define	MAE_MPORT_DESC_V2_RESERVED_LBN 256
33794 #define	MAE_MPORT_DESC_V2_RESERVED_WIDTH 64
33795 /* Logical port index. Only valid when type NET Port. */
33796 #define	MAE_MPORT_DESC_V2_NET_PORT_IDX_OFST 40
33797 #define	MAE_MPORT_DESC_V2_NET_PORT_IDX_LEN 4
33798 #define	MAE_MPORT_DESC_V2_NET_PORT_IDX_LBN 320
33799 #define	MAE_MPORT_DESC_V2_NET_PORT_IDX_WIDTH 32
33800 /* The m-port delivered to */
33801 #define	MAE_MPORT_DESC_V2_ALIAS_DELIVER_MPORT_ID_OFST 40
33802 #define	MAE_MPORT_DESC_V2_ALIAS_DELIVER_MPORT_ID_LEN 4
33803 #define	MAE_MPORT_DESC_V2_ALIAS_DELIVER_MPORT_ID_LBN 320
33804 #define	MAE_MPORT_DESC_V2_ALIAS_DELIVER_MPORT_ID_WIDTH 32
33805 /* The type of thing that owns the VNIC */
33806 #define	MAE_MPORT_DESC_V2_VNIC_CLIENT_TYPE_OFST 40
33807 #define	MAE_MPORT_DESC_V2_VNIC_CLIENT_TYPE_LEN 4
33808 #define	MAE_MPORT_DESC_V2_VNIC_CLIENT_TYPE_FUNCTION 0x1 /* enum */
33809 #define	MAE_MPORT_DESC_V2_VNIC_CLIENT_TYPE_PLUGIN 0x2 /* enum */
33810 #define	MAE_MPORT_DESC_V2_VNIC_CLIENT_TYPE_LBN 320
33811 #define	MAE_MPORT_DESC_V2_VNIC_CLIENT_TYPE_WIDTH 32
33812 /* The PCIe interface on which the function lives. CJK: We need an enumeration
33813  * of interfaces that we extend as new interface (types) appear. This belongs
33814  * elsewhere and should be referenced from here
33815  */
33816 #define	MAE_MPORT_DESC_V2_VNIC_FUNCTION_INTERFACE_OFST 44
33817 #define	MAE_MPORT_DESC_V2_VNIC_FUNCTION_INTERFACE_LEN 4
33818 #define	MAE_MPORT_DESC_V2_VNIC_FUNCTION_INTERFACE_LBN 352
33819 #define	MAE_MPORT_DESC_V2_VNIC_FUNCTION_INTERFACE_WIDTH 32
33820 #define	MAE_MPORT_DESC_V2_VNIC_FUNCTION_PF_IDX_OFST 48
33821 #define	MAE_MPORT_DESC_V2_VNIC_FUNCTION_PF_IDX_LEN 2
33822 #define	MAE_MPORT_DESC_V2_VNIC_FUNCTION_PF_IDX_LBN 384
33823 #define	MAE_MPORT_DESC_V2_VNIC_FUNCTION_PF_IDX_WIDTH 16
33824 #define	MAE_MPORT_DESC_V2_VNIC_FUNCTION_VF_IDX_OFST 50
33825 #define	MAE_MPORT_DESC_V2_VNIC_FUNCTION_VF_IDX_LEN 2
33826 /* enum: Indicates that the function is a PF */
33827 #define	MAE_MPORT_DESC_V2_VF_IDX_NULL 0xffff
33828 #define	MAE_MPORT_DESC_V2_VNIC_FUNCTION_VF_IDX_LBN 400
33829 #define	MAE_MPORT_DESC_V2_VNIC_FUNCTION_VF_IDX_WIDTH 16
33830 /* Reserved. Should be ignored for now. */
33831 #define	MAE_MPORT_DESC_V2_VNIC_PLUGIN_TBD_OFST 44
33832 #define	MAE_MPORT_DESC_V2_VNIC_PLUGIN_TBD_LEN 4
33833 #define	MAE_MPORT_DESC_V2_VNIC_PLUGIN_TBD_LBN 352
33834 #define	MAE_MPORT_DESC_V2_VNIC_PLUGIN_TBD_WIDTH 32
33835 /* A client handle for the VNIC's owner. Only valid for type VNIC. */
33836 #define	MAE_MPORT_DESC_V2_VNIC_CLIENT_HANDLE_OFST 52
33837 #define	MAE_MPORT_DESC_V2_VNIC_CLIENT_HANDLE_LEN 4
33838 #define	MAE_MPORT_DESC_V2_VNIC_CLIENT_HANDLE_LBN 416
33839 #define	MAE_MPORT_DESC_V2_VNIC_CLIENT_HANDLE_WIDTH 32
33840 
33841 
33842 /***********************************/
33843 /* MC_CMD_MAE_MPORT_ENUMERATE
33844  * Deprecated in favour of MAE_MPORT_READ_JOURNAL. Support for this command
33845  * will be removed at some future point.
33846  */
33847 #define	MC_CMD_MAE_MPORT_ENUMERATE 0x17c
33848 #define	MC_CMD_MAE_MPORT_ENUMERATE_MSGSET 0x17c
33849 #undef	MC_CMD_0x17c_PRIVILEGE_CTG
33850 
33851 #define	MC_CMD_0x17c_PRIVILEGE_CTG SRIOV_CTG_GENERAL
33852 
33853 /* MC_CMD_MAE_MPORT_ENUMERATE_IN msgrequest */
33854 #define	MC_CMD_MAE_MPORT_ENUMERATE_IN_LEN 0
33855 
33856 /* MC_CMD_MAE_MPORT_ENUMERATE_OUT msgresponse */
33857 #define	MC_CMD_MAE_MPORT_ENUMERATE_OUT_LENMIN 8
33858 #define	MC_CMD_MAE_MPORT_ENUMERATE_OUT_LENMAX 252
33859 #define	MC_CMD_MAE_MPORT_ENUMERATE_OUT_LENMAX_MCDI2 1020
33860 #define	MC_CMD_MAE_MPORT_ENUMERATE_OUT_LEN(num) (8+1*(num))
33861 #define	MC_CMD_MAE_MPORT_ENUMERATE_OUT_MPORT_DESC_DATA_NUM(len) (((len)-8)/1)
33862 #define	MC_CMD_MAE_MPORT_ENUMERATE_OUT_MPORT_DESC_COUNT_OFST 0
33863 #define	MC_CMD_MAE_MPORT_ENUMERATE_OUT_MPORT_DESC_COUNT_LEN 4
33864 #define	MC_CMD_MAE_MPORT_ENUMERATE_OUT_SIZEOF_MPORT_DESC_OFST 4
33865 #define	MC_CMD_MAE_MPORT_ENUMERATE_OUT_SIZEOF_MPORT_DESC_LEN 4
33866 /* Any array of MAE_MPORT_DESC structures. The MAE_MPORT_DESC structure may
33867  * grow in future version of this command. Drivers should use a stride of
33868  * SIZEOF_MPORT_DESC. Fields beyond SIZEOF_MPORT_DESC are not present.
33869  */
33870 #define	MC_CMD_MAE_MPORT_ENUMERATE_OUT_MPORT_DESC_DATA_OFST 8
33871 #define	MC_CMD_MAE_MPORT_ENUMERATE_OUT_MPORT_DESC_DATA_LEN 1
33872 #define	MC_CMD_MAE_MPORT_ENUMERATE_OUT_MPORT_DESC_DATA_MINNUM 0
33873 #define	MC_CMD_MAE_MPORT_ENUMERATE_OUT_MPORT_DESC_DATA_MAXNUM 244
33874 #define	MC_CMD_MAE_MPORT_ENUMERATE_OUT_MPORT_DESC_DATA_MAXNUM_MCDI2 1012
33875 
33876 
33877 /***********************************/
33878 /* MC_CMD_MAE_MPORT_READ_JOURNAL
33879  * Firmware maintains a per-client journal of mport creations and deletions.
33880  * This journal is clear-on-read, i.e. repeated calls of this command will
33881  * drain the buffer. Whenever the caller resets its function via FLR or
33882  * MC_CMD_ENTITY_RESET, the journal is regenerated from a blank start.
33883  */
33884 #define	MC_CMD_MAE_MPORT_READ_JOURNAL 0x147
33885 #define	MC_CMD_MAE_MPORT_READ_JOURNAL_MSGSET 0x147
33886 #undef	MC_CMD_0x147_PRIVILEGE_CTG
33887 
33888 #define	MC_CMD_0x147_PRIVILEGE_CTG SRIOV_CTG_MAE
33889 
33890 /* MC_CMD_MAE_MPORT_READ_JOURNAL_IN msgrequest */
33891 #define	MC_CMD_MAE_MPORT_READ_JOURNAL_IN_LEN 4
33892 /* Any unused flags are reserved and must be set to zero. */
33893 #define	MC_CMD_MAE_MPORT_READ_JOURNAL_IN_FLAGS_OFST 0
33894 #define	MC_CMD_MAE_MPORT_READ_JOURNAL_IN_FLAGS_LEN 4
33895 
33896 /* MC_CMD_MAE_MPORT_READ_JOURNAL_OUT msgresponse */
33897 #define	MC_CMD_MAE_MPORT_READ_JOURNAL_OUT_LENMIN 12
33898 #define	MC_CMD_MAE_MPORT_READ_JOURNAL_OUT_LENMAX 252
33899 #define	MC_CMD_MAE_MPORT_READ_JOURNAL_OUT_LENMAX_MCDI2 1020
33900 #define	MC_CMD_MAE_MPORT_READ_JOURNAL_OUT_LEN(num) (12+1*(num))
33901 #define	MC_CMD_MAE_MPORT_READ_JOURNAL_OUT_MPORT_DESC_DATA_NUM(len) (((len)-12)/1)
33902 /* Any unused flags are reserved and must be ignored. */
33903 #define	MC_CMD_MAE_MPORT_READ_JOURNAL_OUT_FLAGS_OFST 0
33904 #define	MC_CMD_MAE_MPORT_READ_JOURNAL_OUT_FLAGS_LEN 4
33905 #define	MC_CMD_MAE_MPORT_READ_JOURNAL_OUT_MORE_OFST 0
33906 #define	MC_CMD_MAE_MPORT_READ_JOURNAL_OUT_MORE_LBN 0
33907 #define	MC_CMD_MAE_MPORT_READ_JOURNAL_OUT_MORE_WIDTH 1
33908 /* The number of MAE_MPORT_DESC structures in MPORT_DESC_DATA. May be zero. */
33909 #define	MC_CMD_MAE_MPORT_READ_JOURNAL_OUT_MPORT_DESC_COUNT_OFST 4
33910 #define	MC_CMD_MAE_MPORT_READ_JOURNAL_OUT_MPORT_DESC_COUNT_LEN 4
33911 #define	MC_CMD_MAE_MPORT_READ_JOURNAL_OUT_SIZEOF_MPORT_DESC_OFST 8
33912 #define	MC_CMD_MAE_MPORT_READ_JOURNAL_OUT_SIZEOF_MPORT_DESC_LEN 4
33913 /* Any array of MAE_MPORT_DESC structures. The MAE_MPORT_DESC structure may
33914  * grow in future version of this command. Drivers should use a stride of
33915  * SIZEOF_MPORT_DESC. Fields beyond SIZEOF_MPORT_DESC are not present.
33916  */
33917 #define	MC_CMD_MAE_MPORT_READ_JOURNAL_OUT_MPORT_DESC_DATA_OFST 12
33918 #define	MC_CMD_MAE_MPORT_READ_JOURNAL_OUT_MPORT_DESC_DATA_LEN 1
33919 #define	MC_CMD_MAE_MPORT_READ_JOURNAL_OUT_MPORT_DESC_DATA_MINNUM 0
33920 #define	MC_CMD_MAE_MPORT_READ_JOURNAL_OUT_MPORT_DESC_DATA_MAXNUM 240
33921 #define	MC_CMD_MAE_MPORT_READ_JOURNAL_OUT_MPORT_DESC_DATA_MAXNUM_MCDI2 1008
33922 
33923 /* TABLE_FIELD_DESCR structuredef: An individual table field descriptor. This
33924  * describes the location and properties of one N-bit field within a wider
33925  * M-bit key/mask/response value.
33926  */
33927 #define	TABLE_FIELD_DESCR_LEN 8
33928 /* Identifier for this field. */
33929 #define	TABLE_FIELD_DESCR_FIELD_ID_OFST 0
33930 #define	TABLE_FIELD_DESCR_FIELD_ID_LEN 2
33931 /*            Enum values, see field(s): */
33932 /*               TABLE_FIELD_ID */
33933 #define	TABLE_FIELD_DESCR_FIELD_ID_LBN 0
33934 #define	TABLE_FIELD_DESCR_FIELD_ID_WIDTH 16
33935 /* Lowest (least significant) bit number of the bits of this field. */
33936 #define	TABLE_FIELD_DESCR_LBN_OFST 2
33937 #define	TABLE_FIELD_DESCR_LBN_LEN 2
33938 #define	TABLE_FIELD_DESCR_LBN_LBN 16
33939 #define	TABLE_FIELD_DESCR_LBN_WIDTH 16
33940 /* Width of this field in bits. */
33941 #define	TABLE_FIELD_DESCR_WIDTH_OFST 4
33942 #define	TABLE_FIELD_DESCR_WIDTH_LEN 2
33943 #define	TABLE_FIELD_DESCR_WIDTH_LBN 32
33944 #define	TABLE_FIELD_DESCR_WIDTH_WIDTH 16
33945 /* The mask type for this field. (Note that masking is relevant to keys; fields
33946  * of responses are always reported with the EXACT type.)
33947  */
33948 #define	TABLE_FIELD_DESCR_MASK_TYPE_OFST 6
33949 #define	TABLE_FIELD_DESCR_MASK_TYPE_LEN 1
33950 /* enum: Field must never be selected in the mask. */
33951 #define	TABLE_FIELD_DESCR_MASK_NEVER 0x0
33952 /* enum: Exact match: field must always be selected in the mask. */
33953 #define	TABLE_FIELD_DESCR_MASK_EXACT 0x1
33954 /* enum: Ternary match: arbitrary mask bits are allowed. */
33955 #define	TABLE_FIELD_DESCR_MASK_TERNARY 0x2
33956 /* enum: Whole field match: mask must be all 1 bits, or all 0 bits. */
33957 #define	TABLE_FIELD_DESCR_MASK_WHOLE_FIELD 0x3
33958 /* enum: Longest prefix match: mask must be 1 bit(s) followed by 0 bit(s). */
33959 #define	TABLE_FIELD_DESCR_MASK_LPM 0x4
33960 #define	TABLE_FIELD_DESCR_MASK_TYPE_LBN 48
33961 #define	TABLE_FIELD_DESCR_MASK_TYPE_WIDTH 8
33962 /* A version code that allows field semantics to be extended. All fields
33963  * currently use version 0.
33964  */
33965 #define	TABLE_FIELD_DESCR_SCHEME_OFST 7
33966 #define	TABLE_FIELD_DESCR_SCHEME_LEN 1
33967 #define	TABLE_FIELD_DESCR_SCHEME_LBN 56
33968 #define	TABLE_FIELD_DESCR_SCHEME_WIDTH 8
33969 
33970 
33971 /***********************************/
33972 /* MC_CMD_TABLE_LIST
33973  * Return the list of tables which may be accessed via this table API.
33974  */
33975 #define	MC_CMD_TABLE_LIST 0x1c9
33976 #define	MC_CMD_TABLE_LIST_MSGSET 0x1c9
33977 #undef	MC_CMD_0x1c9_PRIVILEGE_CTG
33978 
33979 #define	MC_CMD_0x1c9_PRIVILEGE_CTG SRIOV_CTG_GENERAL
33980 
33981 /* MC_CMD_TABLE_LIST_IN msgrequest */
33982 #define	MC_CMD_TABLE_LIST_IN_LEN 4
33983 /* Index of the first item to be returned in the TABLE_ID sequence. (Set to 0
33984  * for the first call; further calls are only required if the whole sequence
33985  * does not fit within the maximum MCDI message size.)
33986  */
33987 #define	MC_CMD_TABLE_LIST_IN_FIRST_TABLE_ID_INDEX_OFST 0
33988 #define	MC_CMD_TABLE_LIST_IN_FIRST_TABLE_ID_INDEX_LEN 4
33989 
33990 /* MC_CMD_TABLE_LIST_OUT msgresponse */
33991 #define	MC_CMD_TABLE_LIST_OUT_LENMIN 4
33992 #define	MC_CMD_TABLE_LIST_OUT_LENMAX 252
33993 #define	MC_CMD_TABLE_LIST_OUT_LENMAX_MCDI2 1020
33994 #define	MC_CMD_TABLE_LIST_OUT_LEN(num) (4+4*(num))
33995 #define	MC_CMD_TABLE_LIST_OUT_TABLE_ID_NUM(len) (((len)-4)/4)
33996 /* The total number of tables. */
33997 #define	MC_CMD_TABLE_LIST_OUT_N_TABLES_OFST 0
33998 #define	MC_CMD_TABLE_LIST_OUT_N_TABLES_LEN 4
33999 /* A sequence of table identifiers. If all N_TABLES items do not fit, further
34000  * items can be obtained by repeating the call with a non-zero
34001  * FIRST_TABLE_ID_INDEX.
34002  */
34003 #define	MC_CMD_TABLE_LIST_OUT_TABLE_ID_OFST 4
34004 #define	MC_CMD_TABLE_LIST_OUT_TABLE_ID_LEN 4
34005 #define	MC_CMD_TABLE_LIST_OUT_TABLE_ID_MINNUM 0
34006 #define	MC_CMD_TABLE_LIST_OUT_TABLE_ID_MAXNUM 62
34007 #define	MC_CMD_TABLE_LIST_OUT_TABLE_ID_MAXNUM_MCDI2 254
34008 /*            Enum values, see field(s): */
34009 /*               TABLE_ID */
34010 
34011 
34012 /***********************************/
34013 /* MC_CMD_TABLE_DESCRIPTOR
34014  * Request the table descriptor for a particular table. This describes
34015  * properties of the table and the format of the key and response. May return
34016  * EINVAL for unknown table ID.
34017  */
34018 #define	MC_CMD_TABLE_DESCRIPTOR 0x1ca
34019 #define	MC_CMD_TABLE_DESCRIPTOR_MSGSET 0x1ca
34020 #undef	MC_CMD_0x1ca_PRIVILEGE_CTG
34021 
34022 #define	MC_CMD_0x1ca_PRIVILEGE_CTG SRIOV_CTG_GENERAL
34023 
34024 /* MC_CMD_TABLE_DESCRIPTOR_IN msgrequest */
34025 #define	MC_CMD_TABLE_DESCRIPTOR_IN_LEN 8
34026 /* Identifier for this field. */
34027 #define	MC_CMD_TABLE_DESCRIPTOR_IN_TABLE_ID_OFST 0
34028 #define	MC_CMD_TABLE_DESCRIPTOR_IN_TABLE_ID_LEN 4
34029 /*            Enum values, see field(s): */
34030 /*               TABLE_ID */
34031 /* Index of the first item to be returned in the FIELDS sequence. (Set to 0 for
34032  * the first call; further calls are only required if the whole sequence does
34033  * not fit within the maximum MCDI message size.)
34034  */
34035 #define	MC_CMD_TABLE_DESCRIPTOR_IN_FIRST_FIELDS_INDEX_OFST 4
34036 #define	MC_CMD_TABLE_DESCRIPTOR_IN_FIRST_FIELDS_INDEX_LEN 4
34037 
34038 /* MC_CMD_TABLE_DESCRIPTOR_OUT msgresponse */
34039 #define	MC_CMD_TABLE_DESCRIPTOR_OUT_LENMIN 28
34040 #define	MC_CMD_TABLE_DESCRIPTOR_OUT_LENMAX 252
34041 #define	MC_CMD_TABLE_DESCRIPTOR_OUT_LENMAX_MCDI2 1020
34042 #define	MC_CMD_TABLE_DESCRIPTOR_OUT_LEN(num) (20+8*(num))
34043 #define	MC_CMD_TABLE_DESCRIPTOR_OUT_FIELDS_NUM(len) (((len)-20)/8)
34044 /* Maximum number of entries in this table. */
34045 #define	MC_CMD_TABLE_DESCRIPTOR_OUT_MAX_ENTRIES_OFST 0
34046 #define	MC_CMD_TABLE_DESCRIPTOR_OUT_MAX_ENTRIES_LEN 4
34047 /* The type of table. (This is really just informational; the important
34048  * properties of a table that affect programming can be deduced from other
34049  * items in the table or field descriptor.)
34050  */
34051 #define	MC_CMD_TABLE_DESCRIPTOR_OUT_TYPE_OFST 4
34052 #define	MC_CMD_TABLE_DESCRIPTOR_OUT_TYPE_LEN 2
34053 /* enum: Direct table (essentially just an array). Behaves like a BCAM for
34054  * programming purposes, where the fact that the key is actually used as an
34055  * array index is really just an implementation detail.
34056  */
34057 #define	MC_CMD_TABLE_DESCRIPTOR_OUT_TYPE_DIRECT 0x1
34058 /* enum: BCAM (binary CAM) table: exact match on all key fields." */
34059 #define	MC_CMD_TABLE_DESCRIPTOR_OUT_TYPE_BCAM 0x2
34060 /* enum: TCAM (ternary CAM) table: matches fields with a mask. Each entry may
34061  * have its own different mask.
34062  */
34063 #define	MC_CMD_TABLE_DESCRIPTOR_OUT_TYPE_TCAM 0x3
34064 /* enum: STCAM (semi-TCAM) table: like a TCAM but entries shared a limited
34065  * number of unique masks.
34066  */
34067 #define	MC_CMD_TABLE_DESCRIPTOR_OUT_TYPE_STCAM 0x4
34068 /* Width of key (and corresponding mask, for TCAM or STCAM) in bits. */
34069 #define	MC_CMD_TABLE_DESCRIPTOR_OUT_KEY_WIDTH_OFST 6
34070 #define	MC_CMD_TABLE_DESCRIPTOR_OUT_KEY_WIDTH_LEN 2
34071 /* Width of response in bits. */
34072 #define	MC_CMD_TABLE_DESCRIPTOR_OUT_RESP_WIDTH_OFST 8
34073 #define	MC_CMD_TABLE_DESCRIPTOR_OUT_RESP_WIDTH_LEN 2
34074 /* The total number of fields in the key. */
34075 #define	MC_CMD_TABLE_DESCRIPTOR_OUT_N_KEY_FIELDS_OFST 10
34076 #define	MC_CMD_TABLE_DESCRIPTOR_OUT_N_KEY_FIELDS_LEN 2
34077 /* The total number of fields in the response. */
34078 #define	MC_CMD_TABLE_DESCRIPTOR_OUT_N_RESP_FIELDS_OFST 12
34079 #define	MC_CMD_TABLE_DESCRIPTOR_OUT_N_RESP_FIELDS_LEN 2
34080 /* Number of priorities for STCAM or TCAM; otherwise 0. The priority of a table
34081  * entry (relevant when more than one masked entry matches) ranges from
34082  * 0=highest to N_PRIORITIES-1=lowest.
34083  */
34084 #define	MC_CMD_TABLE_DESCRIPTOR_OUT_N_PRIORITIES_OFST 14
34085 #define	MC_CMD_TABLE_DESCRIPTOR_OUT_N_PRIORITIES_LEN 2
34086 /* Maximum number of masks for STCAM; otherwise 0. */
34087 #define	MC_CMD_TABLE_DESCRIPTOR_OUT_MAX_MASKS_OFST 16
34088 #define	MC_CMD_TABLE_DESCRIPTOR_OUT_MAX_MASKS_LEN 2
34089 /* Flags. */
34090 #define	MC_CMD_TABLE_DESCRIPTOR_OUT_FLAGS_OFST 18
34091 #define	MC_CMD_TABLE_DESCRIPTOR_OUT_FLAGS_LEN 1
34092 #define	MC_CMD_TABLE_DESCRIPTOR_OUT_ALLOC_MASKS_OFST 18
34093 #define	MC_CMD_TABLE_DESCRIPTOR_OUT_ALLOC_MASKS_LBN 0
34094 #define	MC_CMD_TABLE_DESCRIPTOR_OUT_ALLOC_MASKS_WIDTH 1
34095 /* Access scheme version code, allowing the method of accessing table entries
34096  * to change semantics in future. A client which does not understand the value
34097  * of this field should assume that it cannot program this table. Currently
34098  * always set to 0 indicating the original MC_CMD_TABLE_INSERT/UPDATE/DELETE
34099  * semantics.
34100  */
34101 #define	MC_CMD_TABLE_DESCRIPTOR_OUT_SCHEME_OFST 19
34102 #define	MC_CMD_TABLE_DESCRIPTOR_OUT_SCHEME_LEN 1
34103 /* A sequence of TABLE_FIELD_DESCR structures: N_KEY_FIELDS items describing
34104  * the key, followed by N_RESP_FIELDS items describing the response. If all
34105  * N_KEY_FIELDS+N_RESP_FIELDS items do not fit, further items can be obtained
34106  * by repeating the call with a non-zero FIRST_FIELDS_INDEX.
34107  */
34108 #define	MC_CMD_TABLE_DESCRIPTOR_OUT_FIELDS_OFST 20
34109 #define	MC_CMD_TABLE_DESCRIPTOR_OUT_FIELDS_LEN 8
34110 #define	MC_CMD_TABLE_DESCRIPTOR_OUT_FIELDS_LO_OFST 20
34111 #define	MC_CMD_TABLE_DESCRIPTOR_OUT_FIELDS_LO_LEN 4
34112 #define	MC_CMD_TABLE_DESCRIPTOR_OUT_FIELDS_LO_LBN 160
34113 #define	MC_CMD_TABLE_DESCRIPTOR_OUT_FIELDS_LO_WIDTH 32
34114 #define	MC_CMD_TABLE_DESCRIPTOR_OUT_FIELDS_HI_OFST 24
34115 #define	MC_CMD_TABLE_DESCRIPTOR_OUT_FIELDS_HI_LEN 4
34116 #define	MC_CMD_TABLE_DESCRIPTOR_OUT_FIELDS_HI_LBN 192
34117 #define	MC_CMD_TABLE_DESCRIPTOR_OUT_FIELDS_HI_WIDTH 32
34118 #define	MC_CMD_TABLE_DESCRIPTOR_OUT_FIELDS_MINNUM 1
34119 #define	MC_CMD_TABLE_DESCRIPTOR_OUT_FIELDS_MAXNUM 29
34120 #define	MC_CMD_TABLE_DESCRIPTOR_OUT_FIELDS_MAXNUM_MCDI2 125
34121 
34122 
34123 /***********************************/
34124 /* MC_CMD_TABLE_INSERT
34125  * Insert a new entry into a table. The entry must not currently exist. May
34126  * return EINVAL for unknown table ID or other bad request parameters, EEXIST
34127  * if the entry already exists, ENOSPC if there is no space or EPERM if the
34128  * operation is not permitted. In case of an error, the additional MCDI error
34129  * argument field returns the raw error code from the underlying CAM driver.
34130  */
34131 #define	MC_CMD_TABLE_INSERT 0x1cd
34132 #define	MC_CMD_TABLE_INSERT_MSGSET 0x1cd
34133 #undef	MC_CMD_0x1cd_PRIVILEGE_CTG
34134 
34135 #define	MC_CMD_0x1cd_PRIVILEGE_CTG SRIOV_CTG_GENERAL
34136 
34137 /* MC_CMD_TABLE_INSERT_IN msgrequest */
34138 #define	MC_CMD_TABLE_INSERT_IN_LENMIN 16
34139 #define	MC_CMD_TABLE_INSERT_IN_LENMAX 252
34140 #define	MC_CMD_TABLE_INSERT_IN_LENMAX_MCDI2 1020
34141 #define	MC_CMD_TABLE_INSERT_IN_LEN(num) (12+4*(num))
34142 #define	MC_CMD_TABLE_INSERT_IN_DATA_NUM(len) (((len)-12)/4)
34143 /* Table identifier. */
34144 #define	MC_CMD_TABLE_INSERT_IN_TABLE_ID_OFST 0
34145 #define	MC_CMD_TABLE_INSERT_IN_TABLE_ID_LEN 4
34146 /*            Enum values, see field(s): */
34147 /*               TABLE_ID */
34148 /* Width in bits of supplied key data (must match table properties). */
34149 #define	MC_CMD_TABLE_INSERT_IN_KEY_WIDTH_OFST 4
34150 #define	MC_CMD_TABLE_INSERT_IN_KEY_WIDTH_LEN 2
34151 /* Width in bits of supplied mask data (0 for direct/BCAM tables, or for STCAM
34152  * when allocated MASK_ID is used instead).
34153  */
34154 #define	MC_CMD_TABLE_INSERT_IN_MASK_WIDTH_OFST 6
34155 #define	MC_CMD_TABLE_INSERT_IN_MASK_WIDTH_LEN 2
34156 /* Width in bits of supplied response data (for INSERT and UPDATE operations
34157  * this must match the table properties; for DELETE operations, no response
34158  * data is required and this must be 0).
34159  */
34160 #define	MC_CMD_TABLE_INSERT_IN_RESP_WIDTH_OFST 8
34161 #define	MC_CMD_TABLE_INSERT_IN_RESP_WIDTH_LEN 2
34162 /* Mask ID for STCAM table - used instead of mask data if the table descriptor
34163  * reports ALLOC_MASKS==1. Otherwise set to 0.
34164  */
34165 #define	MC_CMD_TABLE_INSERT_IN_MASK_ID_OFST 6
34166 #define	MC_CMD_TABLE_INSERT_IN_MASK_ID_LEN 2
34167 /* Priority for TCAM or STCAM, in range 0..N_PRIORITIES-1, otherwise 0. */
34168 #define	MC_CMD_TABLE_INSERT_IN_PRIORITY_OFST 8
34169 #define	MC_CMD_TABLE_INSERT_IN_PRIORITY_LEN 2
34170 /* (32-bit alignment padding - set to 0) */
34171 #define	MC_CMD_TABLE_INSERT_IN_RESERVED_OFST 10
34172 #define	MC_CMD_TABLE_INSERT_IN_RESERVED_LEN 2
34173 /* Sequence of key, mask (if MASK_WIDTH > 0), and response (if RESP_WIDTH > 0)
34174  * data values. Each of these items is logically treated as a single wide N-bit
34175  * value, in which the individual fields have been placed within that value per
34176  * the LBN and WIDTH information from the table field descriptors. The wide
34177  * N-bit value is padded with 0 bits at the MSB end if necessary to make a
34178  * multiple of 32 bits. The value is then packed into this command as a
34179  * sequence of 32-bit words, bits [31:0] first, then bits [63:32], etc.
34180  */
34181 #define	MC_CMD_TABLE_INSERT_IN_DATA_OFST 12
34182 #define	MC_CMD_TABLE_INSERT_IN_DATA_LEN 4
34183 #define	MC_CMD_TABLE_INSERT_IN_DATA_MINNUM 1
34184 #define	MC_CMD_TABLE_INSERT_IN_DATA_MAXNUM 60
34185 #define	MC_CMD_TABLE_INSERT_IN_DATA_MAXNUM_MCDI2 252
34186 
34187 /* MC_CMD_TABLE_INSERT_OUT msgresponse */
34188 #define	MC_CMD_TABLE_INSERT_OUT_LEN 0
34189 
34190 
34191 /***********************************/
34192 /* MC_CMD_TABLE_UPDATE
34193  * Update an existing entry in a table with a new response value. May return
34194  * EINVAL for unknown table ID or other bad request parameters, ENOENT if the
34195  * entry does not already exist, or EPERM if the operation is not permitted. In
34196  * case of an error, the additional MCDI error argument field returns the raw
34197  * error code from the underlying CAM driver.
34198  */
34199 #define	MC_CMD_TABLE_UPDATE 0x1ce
34200 #define	MC_CMD_TABLE_UPDATE_MSGSET 0x1ce
34201 #undef	MC_CMD_0x1ce_PRIVILEGE_CTG
34202 
34203 #define	MC_CMD_0x1ce_PRIVILEGE_CTG SRIOV_CTG_GENERAL
34204 
34205 /* MC_CMD_TABLE_UPDATE_IN msgrequest */
34206 #define	MC_CMD_TABLE_UPDATE_IN_LENMIN 16
34207 #define	MC_CMD_TABLE_UPDATE_IN_LENMAX 252
34208 #define	MC_CMD_TABLE_UPDATE_IN_LENMAX_MCDI2 1020
34209 #define	MC_CMD_TABLE_UPDATE_IN_LEN(num) (12+4*(num))
34210 #define	MC_CMD_TABLE_UPDATE_IN_DATA_NUM(len) (((len)-12)/4)
34211 /* Table identifier. */
34212 #define	MC_CMD_TABLE_UPDATE_IN_TABLE_ID_OFST 0
34213 #define	MC_CMD_TABLE_UPDATE_IN_TABLE_ID_LEN 4
34214 /*            Enum values, see field(s): */
34215 /*               TABLE_ID */
34216 /* Width in bits of supplied key data (must match table properties). */
34217 #define	MC_CMD_TABLE_UPDATE_IN_KEY_WIDTH_OFST 4
34218 #define	MC_CMD_TABLE_UPDATE_IN_KEY_WIDTH_LEN 2
34219 /* Width in bits of supplied mask data (0 for direct/BCAM tables, or for STCAM
34220  * when allocated MASK_ID is used instead).
34221  */
34222 #define	MC_CMD_TABLE_UPDATE_IN_MASK_WIDTH_OFST 6
34223 #define	MC_CMD_TABLE_UPDATE_IN_MASK_WIDTH_LEN 2
34224 /* Width in bits of supplied response data (for INSERT and UPDATE operations
34225  * this must match the table properties; for DELETE operations, no response
34226  * data is required and this must be 0).
34227  */
34228 #define	MC_CMD_TABLE_UPDATE_IN_RESP_WIDTH_OFST 8
34229 #define	MC_CMD_TABLE_UPDATE_IN_RESP_WIDTH_LEN 2
34230 /* Mask ID for STCAM table - used instead of mask data if the table descriptor
34231  * reports ALLOC_MASKS==1. Otherwise set to 0.
34232  */
34233 #define	MC_CMD_TABLE_UPDATE_IN_MASK_ID_OFST 6
34234 #define	MC_CMD_TABLE_UPDATE_IN_MASK_ID_LEN 2
34235 /* Priority for TCAM or STCAM, in range 0..N_PRIORITIES-1, otherwise 0. */
34236 #define	MC_CMD_TABLE_UPDATE_IN_PRIORITY_OFST 8
34237 #define	MC_CMD_TABLE_UPDATE_IN_PRIORITY_LEN 2
34238 /* (32-bit alignment padding - set to 0) */
34239 #define	MC_CMD_TABLE_UPDATE_IN_RESERVED_OFST 10
34240 #define	MC_CMD_TABLE_UPDATE_IN_RESERVED_LEN 2
34241 /* Sequence of key, mask (if MASK_WIDTH > 0), and response (if RESP_WIDTH > 0)
34242  * data values. Each of these items is logically treated as a single wide N-bit
34243  * value, in which the individual fields have been placed within that value per
34244  * the LBN and WIDTH information from the table field descriptors. The wide
34245  * N-bit value is padded with 0 bits at the MSB end if necessary to make a
34246  * multiple of 32 bits. The value is then packed into this command as a
34247  * sequence of 32-bit words, bits [31:0] first, then bits [63:32], etc.
34248  */
34249 #define	MC_CMD_TABLE_UPDATE_IN_DATA_OFST 12
34250 #define	MC_CMD_TABLE_UPDATE_IN_DATA_LEN 4
34251 #define	MC_CMD_TABLE_UPDATE_IN_DATA_MINNUM 1
34252 #define	MC_CMD_TABLE_UPDATE_IN_DATA_MAXNUM 60
34253 #define	MC_CMD_TABLE_UPDATE_IN_DATA_MAXNUM_MCDI2 252
34254 
34255 /* MC_CMD_TABLE_UPDATE_OUT msgresponse */
34256 #define	MC_CMD_TABLE_UPDATE_OUT_LEN 0
34257 
34258 
34259 /***********************************/
34260 /* MC_CMD_TABLE_DELETE
34261  * Delete an existing entry in a table. May return EINVAL for unknown table ID
34262  * or other bad request parameters, ENOENT if the entry does not exist, or
34263  * EPERM if the operation is not permitted. In case of an error, the additional
34264  * MCDI error argument field returns the raw error code from the underlying CAM
34265  * driver.
34266  */
34267 #define	MC_CMD_TABLE_DELETE 0x1cf
34268 #define	MC_CMD_TABLE_DELETE_MSGSET 0x1cf
34269 #undef	MC_CMD_0x1cf_PRIVILEGE_CTG
34270 
34271 #define	MC_CMD_0x1cf_PRIVILEGE_CTG SRIOV_CTG_GENERAL
34272 
34273 /* MC_CMD_TABLE_DELETE_IN msgrequest */
34274 #define	MC_CMD_TABLE_DELETE_IN_LENMIN 16
34275 #define	MC_CMD_TABLE_DELETE_IN_LENMAX 252
34276 #define	MC_CMD_TABLE_DELETE_IN_LENMAX_MCDI2 1020
34277 #define	MC_CMD_TABLE_DELETE_IN_LEN(num) (12+4*(num))
34278 #define	MC_CMD_TABLE_DELETE_IN_DATA_NUM(len) (((len)-12)/4)
34279 /* Table identifier. */
34280 #define	MC_CMD_TABLE_DELETE_IN_TABLE_ID_OFST 0
34281 #define	MC_CMD_TABLE_DELETE_IN_TABLE_ID_LEN 4
34282 /*            Enum values, see field(s): */
34283 /*               TABLE_ID */
34284 /* Width in bits of supplied key data (must match table properties). */
34285 #define	MC_CMD_TABLE_DELETE_IN_KEY_WIDTH_OFST 4
34286 #define	MC_CMD_TABLE_DELETE_IN_KEY_WIDTH_LEN 2
34287 /* Width in bits of supplied mask data (0 for direct/BCAM tables, or for STCAM
34288  * when allocated MASK_ID is used instead).
34289  */
34290 #define	MC_CMD_TABLE_DELETE_IN_MASK_WIDTH_OFST 6
34291 #define	MC_CMD_TABLE_DELETE_IN_MASK_WIDTH_LEN 2
34292 /* Width in bits of supplied response data (for INSERT and UPDATE operations
34293  * this must match the table properties; for DELETE operations, no response
34294  * data is required and this must be 0).
34295  */
34296 #define	MC_CMD_TABLE_DELETE_IN_RESP_WIDTH_OFST 8
34297 #define	MC_CMD_TABLE_DELETE_IN_RESP_WIDTH_LEN 2
34298 /* Mask ID for STCAM table - used instead of mask data if the table descriptor
34299  * reports ALLOC_MASKS==1. Otherwise set to 0.
34300  */
34301 #define	MC_CMD_TABLE_DELETE_IN_MASK_ID_OFST 6
34302 #define	MC_CMD_TABLE_DELETE_IN_MASK_ID_LEN 2
34303 /* Priority for TCAM or STCAM, in range 0..N_PRIORITIES-1, otherwise 0. */
34304 #define	MC_CMD_TABLE_DELETE_IN_PRIORITY_OFST 8
34305 #define	MC_CMD_TABLE_DELETE_IN_PRIORITY_LEN 2
34306 /* (32-bit alignment padding - set to 0) */
34307 #define	MC_CMD_TABLE_DELETE_IN_RESERVED_OFST 10
34308 #define	MC_CMD_TABLE_DELETE_IN_RESERVED_LEN 2
34309 /* Sequence of key, mask (if MASK_WIDTH > 0), and response (if RESP_WIDTH > 0)
34310  * data values. Each of these items is logically treated as a single wide N-bit
34311  * value, in which the individual fields have been placed within that value per
34312  * the LBN and WIDTH information from the table field descriptors. The wide
34313  * N-bit value is padded with 0 bits at the MSB end if necessary to make a
34314  * multiple of 32 bits. The value is then packed into this command as a
34315  * sequence of 32-bit words, bits [31:0] first, then bits [63:32], etc.
34316  */
34317 #define	MC_CMD_TABLE_DELETE_IN_DATA_OFST 12
34318 #define	MC_CMD_TABLE_DELETE_IN_DATA_LEN 4
34319 #define	MC_CMD_TABLE_DELETE_IN_DATA_MINNUM 1
34320 #define	MC_CMD_TABLE_DELETE_IN_DATA_MAXNUM 60
34321 #define	MC_CMD_TABLE_DELETE_IN_DATA_MAXNUM_MCDI2 252
34322 
34323 /* MC_CMD_TABLE_DELETE_OUT msgresponse */
34324 #define	MC_CMD_TABLE_DELETE_OUT_LEN 0
34325 
34326 #endif /* _SIENA_MC_DRIVER_PCOL_H */
34327