aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen Hutchings <bhutchings@solarflare.com>2013-08-20 15:35:50 -0400
committerBen Hutchings <bhutchings@solarflare.com>2013-08-21 15:20:37 -0400
commitf2b0befd1dd2f0b08feff8e66741d56b239af7b8 (patch)
tree2ae897bb9c543a5043d573d9f08820aa7b7cead1
parent5bc283e51327e249459caab1aff505000ae2beeb (diff)
sfc: Update MCDI protocol definitions for EF10
EF10 controllers do not have shared memory for communication with the MC; instead it reads requests and writes responses in host memory, which allows for longer messages. It is also responsible for all datapath control operations and hardware resource allocation, which requires a large number of new commands and adds more possible error cases. MCDI v2 extends the message header to support this. Update the MCDI protocol definition header to include v2 lengths, errors and messages, and a few definitions specific to the SFC9100 family (codenames Farmingdale and Huntington) which is the first generation of EF10. Some messages have been extended, so adjust the code accordingly: - The request for MC_CMD_DRV_ATTACH now includes a datapath firmware ID. This is ignored by Siena but we should fill it in anyway, initially always specifying low-latency datapath. - The response for MC_CMD_GET_LOOPBACK_MODES now includes a 40G field. Accept shorter responses that don't include it. Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
-rw-r--r--drivers/net/ethernet/sfc/mcdi.c1
-rw-r--r--drivers/net/ethernet/sfc/mcdi_pcol.h5534
-rw-r--r--drivers/net/ethernet/sfc/mcdi_port.c3
3 files changed, 5196 insertions, 342 deletions
diff --git a/drivers/net/ethernet/sfc/mcdi.c b/drivers/net/ethernet/sfc/mcdi.c
index 4f3301d84f64..c6c5830996cf 100644
--- a/drivers/net/ethernet/sfc/mcdi.c
+++ b/drivers/net/ethernet/sfc/mcdi.c
@@ -593,6 +593,7 @@ int efx_mcdi_drv_attach(struct efx_nic *efx, bool driver_operating,
593 MCDI_SET_DWORD(inbuf, DRV_ATTACH_IN_NEW_STATE, 593 MCDI_SET_DWORD(inbuf, DRV_ATTACH_IN_NEW_STATE,
594 driver_operating ? 1 : 0); 594 driver_operating ? 1 : 0);
595 MCDI_SET_DWORD(inbuf, DRV_ATTACH_IN_UPDATE, 1); 595 MCDI_SET_DWORD(inbuf, DRV_ATTACH_IN_UPDATE, 1);
596 MCDI_SET_DWORD(inbuf, DRV_ATTACH_IN_FIRMWARE_ID, MC_CMD_FW_LOW_LATENCY);
596 597
597 rc = efx_mcdi_rpc(efx, MC_CMD_DRV_ATTACH, inbuf, sizeof(inbuf), 598 rc = efx_mcdi_rpc(efx, MC_CMD_DRV_ATTACH, inbuf, sizeof(inbuf),
598 outbuf, sizeof(outbuf), &outlen); 599 outbuf, sizeof(outbuf), &outlen);
diff --git a/drivers/net/ethernet/sfc/mcdi_pcol.h b/drivers/net/ethernet/sfc/mcdi_pcol.h
index 5f2846c82f24..9e824f74e8a1 100644
--- a/drivers/net/ethernet/sfc/mcdi_pcol.h
+++ b/drivers/net/ethernet/sfc/mcdi_pcol.h
@@ -1,6 +1,6 @@
1/**************************************************************************** 1/****************************************************************************
2 * Driver for Solarflare Solarstorm network controllers and boards 2 * Driver for Solarflare network controllers and boards
3 * Copyright 2009-2011 Solarflare Communications Inc. 3 * Copyright 2009-2013 Solarflare Communications Inc.
4 * 4 *
5 * This program is free software; you can redistribute it and/or modify it 5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 as published 6 * under the terms of the GNU General Public License version 2 as published
@@ -21,6 +21,13 @@
21#define MC_FW_STATE_BOOTING (4) 21#define MC_FW_STATE_BOOTING (4)
22/* The Scheduler has started. */ 22/* The Scheduler has started. */
23#define MC_FW_STATE_SCHED (8) 23#define MC_FW_STATE_SCHED (8)
24/* If this is set in MC_RESET_STATE_REG then it should be
25 * possible to jump into IMEM without loading code from flash.
26 * Unlike a warm boot, assume DMEM has been reloaded, so that
27 * the MC persistent data must be reinitialised. */
28#define MC_FW_TEPID_BOOT_OK (16)
29/* BIST state has been initialized */
30#define MC_FW_BIST_INIT_OK (128)
24 31
25/* Siena MC shared memmory offsets */ 32/* Siena MC shared memmory offsets */
26/* The 'doorbell' addresses are hard-wired to alert the MC when written */ 33/* The 'doorbell' addresses are hard-wired to alert the MC when written */
@@ -39,18 +46,21 @@
39#define MC_STATUS_DWORD_REBOOT (0xb007b007) 46#define MC_STATUS_DWORD_REBOOT (0xb007b007)
40#define MC_STATUS_DWORD_ASSERT (0xdeaddead) 47#define MC_STATUS_DWORD_ASSERT (0xdeaddead)
41 48
49/* Check whether an mcfw version (in host order) belongs to a bootloader */
50#define MC_FW_VERSION_IS_BOOTLOADER(_v) (((_v) >> 16) == 0xb007)
51
42/* The current version of the MCDI protocol. 52/* The current version of the MCDI protocol.
43 * 53 *
44 * Note that the ROM burnt into the card only talks V0, so at the very 54 * Note that the ROM burnt into the card only talks V0, so at the very
45 * least every driver must support version 0 and MCDI_PCOL_VERSION 55 * least every driver must support version 0 and MCDI_PCOL_VERSION
46 */ 56 */
47#define MCDI_PCOL_VERSION 1 57#define MCDI_PCOL_VERSION 2
48 58
49/* Unused commands: 0x23, 0x27, 0x30, 0x31 */ 59/* Unused commands: 0x23, 0x27, 0x30, 0x31 */
50 60
51/* MCDI version 1 61/* MCDI version 1
52 * 62 *
53 * Each MCDI request starts with an MCDI_HEADER, which is a 32byte 63 * Each MCDI request starts with an MCDI_HEADER, which is a 32bit
54 * structure, filled in by the client. 64 * structure, filled in by the client.
55 * 65 *
56 * 0 7 8 16 20 22 23 24 31 66 * 0 7 8 16 20 22 23 24 31
@@ -87,9 +97,11 @@
87#define MCDI_HEADER_DATALEN_LBN 8 97#define MCDI_HEADER_DATALEN_LBN 8
88#define MCDI_HEADER_DATALEN_WIDTH 8 98#define MCDI_HEADER_DATALEN_WIDTH 8
89#define MCDI_HEADER_SEQ_LBN 16 99#define MCDI_HEADER_SEQ_LBN 16
90#define MCDI_HEADER_RSVD_LBN 20
91#define MCDI_HEADER_RSVD_WIDTH 2
92#define MCDI_HEADER_SEQ_WIDTH 4 100#define MCDI_HEADER_SEQ_WIDTH 4
101#define MCDI_HEADER_RSVD_LBN 20
102#define MCDI_HEADER_RSVD_WIDTH 1
103#define MCDI_HEADER_NOT_EPOCH_LBN 21
104#define MCDI_HEADER_NOT_EPOCH_WIDTH 1
93#define MCDI_HEADER_ERROR_LBN 22 105#define MCDI_HEADER_ERROR_LBN 22
94#define MCDI_HEADER_ERROR_WIDTH 1 106#define MCDI_HEADER_ERROR_WIDTH 1
95#define MCDI_HEADER_RESPONSE_LBN 23 107#define MCDI_HEADER_RESPONSE_LBN 23
@@ -101,8 +113,10 @@
101 113
102/* Maximum number of payload bytes */ 114/* Maximum number of payload bytes */
103#define MCDI_CTL_SDU_LEN_MAX_V1 0xfc 115#define MCDI_CTL_SDU_LEN_MAX_V1 0xfc
116#define MCDI_CTL_SDU_LEN_MAX_V2 0x400
117
118#define MCDI_CTL_SDU_LEN_MAX MCDI_CTL_SDU_LEN_MAX_V2
104 119
105#define MCDI_CTL_SDU_LEN_MAX MCDI_CTL_SDU_LEN_MAX_V1
106 120
107/* The MC can generate events for two reasons: 121/* The MC can generate events for two reasons:
108 * - To complete a shared memory request if XFLAGS_EVREQ was set 122 * - To complete a shared memory request if XFLAGS_EVREQ was set
@@ -147,22 +161,69 @@
147#define FSE_AZ_EV_CODE_MCDI_EVRESPONSE 0xc 161#define FSE_AZ_EV_CODE_MCDI_EVRESPONSE 0xc
148 162
149 163
164/* Operation not permitted. */
165#define MC_CMD_ERR_EPERM 1
150/* Non-existent command target */ 166/* Non-existent command target */
151#define MC_CMD_ERR_ENOENT 2 167#define MC_CMD_ERR_ENOENT 2
152/* assert() has killed the MC */ 168/* assert() has killed the MC */
153#define MC_CMD_ERR_EINTR 4 169#define MC_CMD_ERR_EINTR 4
170/* I/O failure */
171#define MC_CMD_ERR_EIO 5
172/* Try again */
173#define MC_CMD_ERR_EAGAIN 11
174/* Out of memory */
175#define MC_CMD_ERR_ENOMEM 12
154/* Caller does not hold required locks */ 176/* Caller does not hold required locks */
155#define MC_CMD_ERR_EACCES 13 177#define MC_CMD_ERR_EACCES 13
156/* Resource is currently unavailable (e.g. lock contention) */ 178/* Resource is currently unavailable (e.g. lock contention) */
157#define MC_CMD_ERR_EBUSY 16 179#define MC_CMD_ERR_EBUSY 16
180/* No such device */
181#define MC_CMD_ERR_ENODEV 19
158/* Invalid argument to target */ 182/* Invalid argument to target */
159#define MC_CMD_ERR_EINVAL 22 183#define MC_CMD_ERR_EINVAL 22
184/* Out of range */
185#define MC_CMD_ERR_ERANGE 34
160/* Non-recursive resource is already acquired */ 186/* Non-recursive resource is already acquired */
161#define MC_CMD_ERR_EDEADLK 35 187#define MC_CMD_ERR_EDEADLK 35
162/* Operation not implemented */ 188/* Operation not implemented */
163#define MC_CMD_ERR_ENOSYS 38 189#define MC_CMD_ERR_ENOSYS 38
164/* Operation timed out */ 190/* Operation timed out */
165#define MC_CMD_ERR_ETIME 62 191#define MC_CMD_ERR_ETIME 62
192/* Link has been severed */
193#define MC_CMD_ERR_ENOLINK 67
194/* Protocol error */
195#define MC_CMD_ERR_EPROTO 71
196/* Operation not supported */
197#define MC_CMD_ERR_ENOTSUP 95
198/* Address not available */
199#define MC_CMD_ERR_EADDRNOTAVAIL 99
200/* Not connected */
201#define MC_CMD_ERR_ENOTCONN 107
202/* Operation already in progress */
203#define MC_CMD_ERR_EALREADY 114
204
205/* Resource allocation failed. */
206#define MC_CMD_ERR_ALLOC_FAIL 0x1000
207/* V-adaptor not found. */
208#define MC_CMD_ERR_NO_VADAPTOR 0x1001
209/* EVB port not found. */
210#define MC_CMD_ERR_NO_EVB_PORT 0x1002
211/* V-switch not found. */
212#define MC_CMD_ERR_NO_VSWITCH 0x1003
213/* Too many VLAN tags. */
214#define MC_CMD_ERR_VLAN_LIMIT 0x1004
215/* Bad PCI function number. */
216#define MC_CMD_ERR_BAD_PCI_FUNC 0x1005
217/* Invalid VLAN mode. */
218#define MC_CMD_ERR_BAD_VLAN_MODE 0x1006
219/* Invalid v-switch type. */
220#define MC_CMD_ERR_BAD_VSWITCH_TYPE 0x1007
221/* Invalid v-port type. */
222#define MC_CMD_ERR_BAD_VPORT_TYPE 0x1008
223/* MAC address exists. */
224#define MC_CMD_ERR_MAC_EXIST 0x1009
225/* Slave core not present */
226#define MC_CMD_ERR_SLAVE_NOT_PRESENT 0x100a
166 227
167#define MC_CMD_ERR_CODE_OFST 0 228#define MC_CMD_ERR_CODE_OFST 0
168 229
@@ -180,9 +241,11 @@
180 241
181/* Vectors in the boot ROM */ 242/* Vectors in the boot ROM */
182/* Point to the copycode entry point. */ 243/* Point to the copycode entry point. */
183#define MC_BOOTROM_COPYCODE_VEC (0x7f4) 244#define SIENA_MC_BOOTROM_COPYCODE_VEC (0x800 - 3 * 0x4)
245#define HUNT_MC_BOOTROM_COPYCODE_VEC (0x8000 - 3 * 0x4)
184/* Points to the recovery mode entry point. */ 246/* Points to the recovery mode entry point. */
185#define MC_BOOTROM_NOFLASH_VEC (0x7f8) 247#define SIENA_MC_BOOTROM_NOFLASH_VEC (0x800 - 2 * 0x4)
248#define HUNT_MC_BOOTROM_NOFLASH_VEC (0x8000 - 2 * 0x4)
186 249
187/* The command set exported by the boot ROM (MCDI v0) */ 250/* The command set exported by the boot ROM (MCDI v0) */
188#define MC_CMD_GET_VERSION_V0_SUPPORTED_FUNCS { \ 251#define MC_CMD_GET_VERSION_V0_SUPPORTED_FUNCS { \
@@ -211,16 +274,29 @@
211 (n) * MC_CMD_DBIWROP_TYPEDEF_LEN) 274 (n) * MC_CMD_DBIWROP_TYPEDEF_LEN)
212 275
213 276
277/* Version 2 adds an optional argument to error returns: the errno value
278 * may be followed by the (0-based) number of the first argument that
279 * could not be processed.
280 */
281#define MC_CMD_ERR_ARG_OFST 4
282
283/* No space */
284#define MC_CMD_ERR_ENOSPC 28
285
214/* MCDI_EVENT structuredef */ 286/* MCDI_EVENT structuredef */
215#define MCDI_EVENT_LEN 8 287#define MCDI_EVENT_LEN 8
216#define MCDI_EVENT_CONT_LBN 32 288#define MCDI_EVENT_CONT_LBN 32
217#define MCDI_EVENT_CONT_WIDTH 1 289#define MCDI_EVENT_CONT_WIDTH 1
218#define MCDI_EVENT_LEVEL_LBN 33 290#define MCDI_EVENT_LEVEL_LBN 33
219#define MCDI_EVENT_LEVEL_WIDTH 3 291#define MCDI_EVENT_LEVEL_WIDTH 3
220#define MCDI_EVENT_LEVEL_INFO 0x0 /* enum */ 292/* enum: Info. */
221#define MCDI_EVENT_LEVEL_WARN 0x1 /* enum */ 293#define MCDI_EVENT_LEVEL_INFO 0x0
222#define MCDI_EVENT_LEVEL_ERR 0x2 /* enum */ 294/* enum: Warning. */
223#define MCDI_EVENT_LEVEL_FATAL 0x3 /* enum */ 295#define MCDI_EVENT_LEVEL_WARN 0x1
296/* enum: Error. */
297#define MCDI_EVENT_LEVEL_ERR 0x2
298/* enum: Fatal. */
299#define MCDI_EVENT_LEVEL_FATAL 0x3
224#define MCDI_EVENT_DATA_OFST 0 300#define MCDI_EVENT_DATA_OFST 0
225#define MCDI_EVENT_CMDDONE_SEQ_LBN 0 301#define MCDI_EVENT_CMDDONE_SEQ_LBN 0
226#define MCDI_EVENT_CMDDONE_SEQ_WIDTH 8 302#define MCDI_EVENT_CMDDONE_SEQ_WIDTH 8
@@ -232,9 +308,14 @@
232#define MCDI_EVENT_LINKCHANGE_LP_CAP_WIDTH 16 308#define MCDI_EVENT_LINKCHANGE_LP_CAP_WIDTH 16
233#define MCDI_EVENT_LINKCHANGE_SPEED_LBN 16 309#define MCDI_EVENT_LINKCHANGE_SPEED_LBN 16
234#define MCDI_EVENT_LINKCHANGE_SPEED_WIDTH 4 310#define MCDI_EVENT_LINKCHANGE_SPEED_WIDTH 4
235#define MCDI_EVENT_LINKCHANGE_SPEED_100M 0x1 /* enum */ 311/* enum: 100Mbs */
236#define MCDI_EVENT_LINKCHANGE_SPEED_1G 0x2 /* enum */ 312#define MCDI_EVENT_LINKCHANGE_SPEED_100M 0x1
237#define MCDI_EVENT_LINKCHANGE_SPEED_10G 0x3 /* enum */ 313/* enum: 1Gbs */
314#define MCDI_EVENT_LINKCHANGE_SPEED_1G 0x2
315/* enum: 10Gbs */
316#define MCDI_EVENT_LINKCHANGE_SPEED_10G 0x3
317/* enum: 40Gbs */
318#define MCDI_EVENT_LINKCHANGE_SPEED_40G 0x4
238#define MCDI_EVENT_LINKCHANGE_FCNTL_LBN 20 319#define MCDI_EVENT_LINKCHANGE_FCNTL_LBN 20
239#define MCDI_EVENT_LINKCHANGE_FCNTL_WIDTH 4 320#define MCDI_EVENT_LINKCHANGE_FCNTL_WIDTH 4
240#define MCDI_EVENT_LINKCHANGE_LINK_FLAGS_LBN 24 321#define MCDI_EVENT_LINKCHANGE_LINK_FLAGS_LBN 24
@@ -249,26 +330,80 @@
249#define MCDI_EVENT_FWALERT_DATA_WIDTH 24 330#define MCDI_EVENT_FWALERT_DATA_WIDTH 24
250#define MCDI_EVENT_FWALERT_REASON_LBN 0 331#define MCDI_EVENT_FWALERT_REASON_LBN 0
251#define MCDI_EVENT_FWALERT_REASON_WIDTH 8 332#define MCDI_EVENT_FWALERT_REASON_WIDTH 8
252#define MCDI_EVENT_FWALERT_REASON_SRAM_ACCESS 0x1 /* enum */ 333/* enum: SRAM Access. */
334#define MCDI_EVENT_FWALERT_REASON_SRAM_ACCESS 0x1
253#define MCDI_EVENT_FLR_VF_LBN 0 335#define MCDI_EVENT_FLR_VF_LBN 0
254#define MCDI_EVENT_FLR_VF_WIDTH 8 336#define MCDI_EVENT_FLR_VF_WIDTH 8
255#define MCDI_EVENT_TX_ERR_TXQ_LBN 0 337#define MCDI_EVENT_TX_ERR_TXQ_LBN 0
256#define MCDI_EVENT_TX_ERR_TXQ_WIDTH 12 338#define MCDI_EVENT_TX_ERR_TXQ_WIDTH 12
257#define MCDI_EVENT_TX_ERR_TYPE_LBN 12 339#define MCDI_EVENT_TX_ERR_TYPE_LBN 12
258#define MCDI_EVENT_TX_ERR_TYPE_WIDTH 4 340#define MCDI_EVENT_TX_ERR_TYPE_WIDTH 4
259#define MCDI_EVENT_TX_ERR_DL_FAIL 0x1 /* enum */ 341/* enum: Descriptor loader reported failure */
260#define MCDI_EVENT_TX_ERR_NO_EOP 0x2 /* enum */ 342#define MCDI_EVENT_TX_ERR_DL_FAIL 0x1
261#define MCDI_EVENT_TX_ERR_2BIG 0x3 /* enum */ 343/* enum: Descriptor ring empty and no EOP seen for packet */
344#define MCDI_EVENT_TX_ERR_NO_EOP 0x2
345/* enum: Overlength packet */
346#define MCDI_EVENT_TX_ERR_2BIG 0x3
347/* enum: Malformed option descriptor */
348#define MCDI_EVENT_TX_BAD_OPTDESC 0x5
349/* enum: Option descriptor part way through a packet */
350#define MCDI_EVENT_TX_OPT_IN_PKT 0x8
351/* enum: DMA or PIO data access error */
352#define MCDI_EVENT_TX_ERR_BAD_DMA_OR_PIO 0x9
262#define MCDI_EVENT_TX_ERR_INFO_LBN 16 353#define MCDI_EVENT_TX_ERR_INFO_LBN 16
263#define MCDI_EVENT_TX_ERR_INFO_WIDTH 16 354#define MCDI_EVENT_TX_ERR_INFO_WIDTH 16
355#define MCDI_EVENT_TX_FLUSH_TO_DRIVER_LBN 12
356#define MCDI_EVENT_TX_FLUSH_TO_DRIVER_WIDTH 1
264#define MCDI_EVENT_TX_FLUSH_TXQ_LBN 0 357#define MCDI_EVENT_TX_FLUSH_TXQ_LBN 0
265#define MCDI_EVENT_TX_FLUSH_TXQ_WIDTH 12 358#define MCDI_EVENT_TX_FLUSH_TXQ_WIDTH 12
266#define MCDI_EVENT_PTP_ERR_TYPE_LBN 0 359#define MCDI_EVENT_PTP_ERR_TYPE_LBN 0
267#define MCDI_EVENT_PTP_ERR_TYPE_WIDTH 8 360#define MCDI_EVENT_PTP_ERR_TYPE_WIDTH 8
268#define MCDI_EVENT_PTP_ERR_PLL_LOST 0x1 /* enum */ 361/* enum: PLL lost lock */
269#define MCDI_EVENT_PTP_ERR_FILTER 0x2 /* enum */ 362#define MCDI_EVENT_PTP_ERR_PLL_LOST 0x1
270#define MCDI_EVENT_PTP_ERR_FIFO 0x3 /* enum */ 363/* enum: Filter overflow (PDMA) */
271#define MCDI_EVENT_PTP_ERR_QUEUE 0x4 /* enum */ 364#define MCDI_EVENT_PTP_ERR_FILTER 0x2
365/* enum: FIFO overflow (FPGA) */
366#define MCDI_EVENT_PTP_ERR_FIFO 0x3
367/* enum: Merge queue overflow */
368#define MCDI_EVENT_PTP_ERR_QUEUE 0x4
369#define MCDI_EVENT_AOE_ERR_TYPE_LBN 0
370#define MCDI_EVENT_AOE_ERR_TYPE_WIDTH 8
371/* enum: AOE failed to load - no valid image? */
372#define MCDI_EVENT_AOE_NO_LOAD 0x1
373/* enum: AOE FC reported an exception */
374#define MCDI_EVENT_AOE_FC_ASSERT 0x2
375/* enum: AOE FC watchdogged */
376#define MCDI_EVENT_AOE_FC_WATCHDOG 0x3
377/* enum: AOE FC failed to start */
378#define MCDI_EVENT_AOE_FC_NO_START 0x4
379/* enum: Generic AOE fault - likely to have been reported via other means too
380 * but intended for use by aoex driver.
381 */
382#define MCDI_EVENT_AOE_FAULT 0x5
383/* enum: Results of reprogramming the CPLD (status in AOE_ERR_DATA) */
384#define MCDI_EVENT_AOE_CPLD_REPROGRAMMED 0x6
385/* enum: AOE loaded successfully */
386#define MCDI_EVENT_AOE_LOAD 0x7
387/* enum: AOE DMA operation completed (LSB of HOST_HANDLE in AOE_ERR_DATA) */
388#define MCDI_EVENT_AOE_DMA 0x8
389/* enum: AOE byteblaster connected/disconnected (Connection status in
390 * AOE_ERR_DATA)
391 */
392#define MCDI_EVENT_AOE_BYTEBLASTER 0x9
393#define MCDI_EVENT_AOE_ERR_DATA_LBN 8
394#define MCDI_EVENT_AOE_ERR_DATA_WIDTH 8
395#define MCDI_EVENT_RX_ERR_RXQ_LBN 0
396#define MCDI_EVENT_RX_ERR_RXQ_WIDTH 12
397#define MCDI_EVENT_RX_ERR_TYPE_LBN 12
398#define MCDI_EVENT_RX_ERR_TYPE_WIDTH 4
399#define MCDI_EVENT_RX_ERR_INFO_LBN 16
400#define MCDI_EVENT_RX_ERR_INFO_WIDTH 16
401#define MCDI_EVENT_RX_FLUSH_TO_DRIVER_LBN 12
402#define MCDI_EVENT_RX_FLUSH_TO_DRIVER_WIDTH 1
403#define MCDI_EVENT_RX_FLUSH_RXQ_LBN 0
404#define MCDI_EVENT_RX_FLUSH_RXQ_WIDTH 12
405#define MCDI_EVENT_MC_REBOOT_COUNT_LBN 0
406#define MCDI_EVENT_MC_REBOOT_COUNT_WIDTH 16
272#define MCDI_EVENT_DATA_LBN 0 407#define MCDI_EVENT_DATA_LBN 0
273#define MCDI_EVENT_DATA_WIDTH 32 408#define MCDI_EVENT_DATA_WIDTH 32
274#define MCDI_EVENT_SRC_LBN 36 409#define MCDI_EVENT_SRC_LBN 36
@@ -277,21 +412,60 @@
277#define MCDI_EVENT_EV_CODE_WIDTH 4 412#define MCDI_EVENT_EV_CODE_WIDTH 4
278#define MCDI_EVENT_CODE_LBN 44 413#define MCDI_EVENT_CODE_LBN 44
279#define MCDI_EVENT_CODE_WIDTH 8 414#define MCDI_EVENT_CODE_WIDTH 8
280#define MCDI_EVENT_CODE_BADSSERT 0x1 /* enum */ 415/* enum: Bad assert. */
281#define MCDI_EVENT_CODE_PMNOTICE 0x2 /* enum */ 416#define MCDI_EVENT_CODE_BADSSERT 0x1
282#define MCDI_EVENT_CODE_CMDDONE 0x3 /* enum */ 417/* enum: PM Notice. */
283#define MCDI_EVENT_CODE_LINKCHANGE 0x4 /* enum */ 418#define MCDI_EVENT_CODE_PMNOTICE 0x2
284#define MCDI_EVENT_CODE_SENSOREVT 0x5 /* enum */ 419/* enum: Command done. */
285#define MCDI_EVENT_CODE_SCHEDERR 0x6 /* enum */ 420#define MCDI_EVENT_CODE_CMDDONE 0x3
286#define MCDI_EVENT_CODE_REBOOT 0x7 /* enum */ 421/* enum: Link change. */
287#define MCDI_EVENT_CODE_MAC_STATS_DMA 0x8 /* enum */ 422#define MCDI_EVENT_CODE_LINKCHANGE 0x4
288#define MCDI_EVENT_CODE_FWALERT 0x9 /* enum */ 423/* enum: Sensor Event. */
289#define MCDI_EVENT_CODE_FLR 0xa /* enum */ 424#define MCDI_EVENT_CODE_SENSOREVT 0x5
290#define MCDI_EVENT_CODE_TX_ERR 0xb /* enum */ 425/* enum: Schedule error. */
291#define MCDI_EVENT_CODE_TX_FLUSH 0xc /* enum */ 426#define MCDI_EVENT_CODE_SCHEDERR 0x6
292#define MCDI_EVENT_CODE_PTP_RX 0xd /* enum */ 427/* enum: Reboot. */
293#define MCDI_EVENT_CODE_PTP_FAULT 0xe /* enum */ 428#define MCDI_EVENT_CODE_REBOOT 0x7
294#define MCDI_EVENT_CODE_PTP_PPS 0xf /* enum */ 429/* enum: Mac stats DMA. */
430#define MCDI_EVENT_CODE_MAC_STATS_DMA 0x8
431/* enum: Firmware alert. */
432#define MCDI_EVENT_CODE_FWALERT 0x9
433/* enum: Function level reset. */
434#define MCDI_EVENT_CODE_FLR 0xa
435/* enum: Transmit error */
436#define MCDI_EVENT_CODE_TX_ERR 0xb
437/* enum: Tx flush has completed */
438#define MCDI_EVENT_CODE_TX_FLUSH 0xc
439/* enum: PTP packet received timestamp */
440#define MCDI_EVENT_CODE_PTP_RX 0xd
441/* enum: PTP NIC failure */
442#define MCDI_EVENT_CODE_PTP_FAULT 0xe
443/* enum: PTP PPS event */
444#define MCDI_EVENT_CODE_PTP_PPS 0xf
445/* enum: Rx flush has completed */
446#define MCDI_EVENT_CODE_RX_FLUSH 0x10
447/* enum: Receive error */
448#define MCDI_EVENT_CODE_RX_ERR 0x11
449/* enum: AOE fault */
450#define MCDI_EVENT_CODE_AOE 0x12
451/* enum: Network port calibration failed (VCAL). */
452#define MCDI_EVENT_CODE_VCAL_FAIL 0x13
453/* enum: HW PPS event */
454#define MCDI_EVENT_CODE_HW_PPS 0x14
455/* enum: The MC has rebooted (huntington and later, siena uses CODE_REBOOT and
456 * a different format)
457 */
458#define MCDI_EVENT_CODE_MC_REBOOT 0x15
459/* enum: the MC has detected a parity error */
460#define MCDI_EVENT_CODE_PAR_ERR 0x16
461/* enum: the MC has detected a correctable error */
462#define MCDI_EVENT_CODE_ECC_CORR_ERR 0x17
463/* enum: the MC has detected an uncorrectable error */
464#define MCDI_EVENT_CODE_ECC_FATAL_ERR 0x18
465/* enum: Artificial event generated by host and posted via MC for test
466 * purposes.
467 */
468#define MCDI_EVENT_CODE_TESTGEN 0xfa
295#define MCDI_EVENT_CMDDONE_DATA_OFST 0 469#define MCDI_EVENT_CMDDONE_DATA_OFST 0
296#define MCDI_EVENT_CMDDONE_DATA_LBN 0 470#define MCDI_EVENT_CMDDONE_DATA_LBN 0
297#define MCDI_EVENT_CMDDONE_DATA_WIDTH 32 471#define MCDI_EVENT_CMDDONE_DATA_WIDTH 32
@@ -307,15 +481,114 @@
307#define MCDI_EVENT_TX_ERR_DATA_OFST 0 481#define MCDI_EVENT_TX_ERR_DATA_OFST 0
308#define MCDI_EVENT_TX_ERR_DATA_LBN 0 482#define MCDI_EVENT_TX_ERR_DATA_LBN 0
309#define MCDI_EVENT_TX_ERR_DATA_WIDTH 32 483#define MCDI_EVENT_TX_ERR_DATA_WIDTH 32
484/* Seconds field of timestamp */
310#define MCDI_EVENT_PTP_SECONDS_OFST 0 485#define MCDI_EVENT_PTP_SECONDS_OFST 0
311#define MCDI_EVENT_PTP_SECONDS_LBN 0 486#define MCDI_EVENT_PTP_SECONDS_LBN 0
312#define MCDI_EVENT_PTP_SECONDS_WIDTH 32 487#define MCDI_EVENT_PTP_SECONDS_WIDTH 32
488/* Nanoseconds field of timestamp */
313#define MCDI_EVENT_PTP_NANOSECONDS_OFST 0 489#define MCDI_EVENT_PTP_NANOSECONDS_OFST 0
314#define MCDI_EVENT_PTP_NANOSECONDS_LBN 0 490#define MCDI_EVENT_PTP_NANOSECONDS_LBN 0
315#define MCDI_EVENT_PTP_NANOSECONDS_WIDTH 32 491#define MCDI_EVENT_PTP_NANOSECONDS_WIDTH 32
492/* Lowest four bytes of sourceUUID from PTP packet */
316#define MCDI_EVENT_PTP_UUID_OFST 0 493#define MCDI_EVENT_PTP_UUID_OFST 0
317#define MCDI_EVENT_PTP_UUID_LBN 0 494#define MCDI_EVENT_PTP_UUID_LBN 0
318#define MCDI_EVENT_PTP_UUID_WIDTH 32 495#define MCDI_EVENT_PTP_UUID_WIDTH 32
496#define MCDI_EVENT_RX_ERR_DATA_OFST 0
497#define MCDI_EVENT_RX_ERR_DATA_LBN 0
498#define MCDI_EVENT_RX_ERR_DATA_WIDTH 32
499#define MCDI_EVENT_PAR_ERR_DATA_OFST 0
500#define MCDI_EVENT_PAR_ERR_DATA_LBN 0
501#define MCDI_EVENT_PAR_ERR_DATA_WIDTH 32
502#define MCDI_EVENT_ECC_CORR_ERR_DATA_OFST 0
503#define MCDI_EVENT_ECC_CORR_ERR_DATA_LBN 0
504#define MCDI_EVENT_ECC_CORR_ERR_DATA_WIDTH 32
505#define MCDI_EVENT_ECC_FATAL_ERR_DATA_OFST 0
506#define MCDI_EVENT_ECC_FATAL_ERR_DATA_LBN 0
507#define MCDI_EVENT_ECC_FATAL_ERR_DATA_WIDTH 32
508
509/* FCDI_EVENT structuredef */
510#define FCDI_EVENT_LEN 8
511#define FCDI_EVENT_CONT_LBN 32
512#define FCDI_EVENT_CONT_WIDTH 1
513#define FCDI_EVENT_LEVEL_LBN 33
514#define FCDI_EVENT_LEVEL_WIDTH 3
515/* enum: Info. */
516#define FCDI_EVENT_LEVEL_INFO 0x0
517/* enum: Warning. */
518#define FCDI_EVENT_LEVEL_WARN 0x1
519/* enum: Error. */
520#define FCDI_EVENT_LEVEL_ERR 0x2
521/* enum: Fatal. */
522#define FCDI_EVENT_LEVEL_FATAL 0x3
523#define FCDI_EVENT_DATA_OFST 0
524#define FCDI_EVENT_LINK_STATE_STATUS_LBN 0
525#define FCDI_EVENT_LINK_STATE_STATUS_WIDTH 1
526#define FCDI_EVENT_LINK_DOWN 0x0 /* enum */
527#define FCDI_EVENT_LINK_UP 0x1 /* enum */
528#define FCDI_EVENT_DATA_LBN 0
529#define FCDI_EVENT_DATA_WIDTH 32
530#define FCDI_EVENT_SRC_LBN 36
531#define FCDI_EVENT_SRC_WIDTH 8
532#define FCDI_EVENT_EV_CODE_LBN 60
533#define FCDI_EVENT_EV_CODE_WIDTH 4
534#define FCDI_EVENT_CODE_LBN 44
535#define FCDI_EVENT_CODE_WIDTH 8
536/* enum: The FC was rebooted. */
537#define FCDI_EVENT_CODE_REBOOT 0x1
538/* enum: Bad assert. */
539#define FCDI_EVENT_CODE_ASSERT 0x2
540/* enum: DDR3 test result. */
541#define FCDI_EVENT_CODE_DDR_TEST_RESULT 0x3
542/* enum: Link status. */
543#define FCDI_EVENT_CODE_LINK_STATE 0x4
544/* enum: A timed read is ready to be serviced. */
545#define FCDI_EVENT_CODE_TIMED_READ 0x5
546/* enum: One or more PPS IN events */
547#define FCDI_EVENT_CODE_PPS_IN 0x6
548/* enum: One or more PPS OUT events */
549#define FCDI_EVENT_CODE_PPS_OUT 0x7
550#define FCDI_EVENT_ASSERT_INSTR_ADDRESS_OFST 0
551#define FCDI_EVENT_ASSERT_INSTR_ADDRESS_LBN 0
552#define FCDI_EVENT_ASSERT_INSTR_ADDRESS_WIDTH 32
553#define FCDI_EVENT_ASSERT_TYPE_LBN 36
554#define FCDI_EVENT_ASSERT_TYPE_WIDTH 8
555#define FCDI_EVENT_DDR_TEST_RESULT_STATUS_CODE_LBN 36
556#define FCDI_EVENT_DDR_TEST_RESULT_STATUS_CODE_WIDTH 8
557#define FCDI_EVENT_DDR_TEST_RESULT_RESULT_OFST 0
558#define FCDI_EVENT_DDR_TEST_RESULT_RESULT_LBN 0
559#define FCDI_EVENT_DDR_TEST_RESULT_RESULT_WIDTH 32
560#define FCDI_EVENT_LINK_STATE_DATA_OFST 0
561#define FCDI_EVENT_LINK_STATE_DATA_LBN 0
562#define FCDI_EVENT_LINK_STATE_DATA_WIDTH 32
563#define FCDI_EVENT_PPS_COUNT_OFST 0
564#define FCDI_EVENT_PPS_COUNT_LBN 0
565#define FCDI_EVENT_PPS_COUNT_WIDTH 32
566
567/* FCDI_EXTENDED_EVENT structuredef */
568#define FCDI_EXTENDED_EVENT_LENMIN 16
569#define FCDI_EXTENDED_EVENT_LENMAX 248
570#define FCDI_EXTENDED_EVENT_LEN(num) (8+8*(num))
571/* Number of timestamps following */
572#define FCDI_EXTENDED_EVENT_PPS_COUNT_OFST 0
573#define FCDI_EXTENDED_EVENT_PPS_COUNT_LBN 0
574#define FCDI_EXTENDED_EVENT_PPS_COUNT_WIDTH 32
575/* Seconds field of a timestamp record */
576#define FCDI_EXTENDED_EVENT_PPS_SECONDS_OFST 8
577#define FCDI_EXTENDED_EVENT_PPS_SECONDS_LBN 64
578#define FCDI_EXTENDED_EVENT_PPS_SECONDS_WIDTH 32
579/* Nanoseconds field of a timestamp record */
580#define FCDI_EXTENDED_EVENT_PPS_NANOSECONDS_OFST 12
581#define FCDI_EXTENDED_EVENT_PPS_NANOSECONDS_LBN 96
582#define FCDI_EXTENDED_EVENT_PPS_NANOSECONDS_WIDTH 32
583/* Timestamp records comprising the event */
584#define FCDI_EXTENDED_EVENT_PPS_TIME_OFST 8
585#define FCDI_EXTENDED_EVENT_PPS_TIME_LEN 8
586#define FCDI_EXTENDED_EVENT_PPS_TIME_LO_OFST 8
587#define FCDI_EXTENDED_EVENT_PPS_TIME_HI_OFST 12
588#define FCDI_EXTENDED_EVENT_PPS_TIME_MINNUM 1
589#define FCDI_EXTENDED_EVENT_PPS_TIME_MAXNUM 30
590#define FCDI_EXTENDED_EVENT_PPS_TIME_LBN 64
591#define FCDI_EXTENDED_EVENT_PPS_TIME_WIDTH 64
319 592
320 593
321/***********************************/ 594/***********************************/
@@ -367,11 +640,27 @@
367 640
368/* MC_CMD_COPYCODE_IN msgrequest */ 641/* MC_CMD_COPYCODE_IN msgrequest */
369#define MC_CMD_COPYCODE_IN_LEN 16 642#define MC_CMD_COPYCODE_IN_LEN 16
643/* Source address */
370#define MC_CMD_COPYCODE_IN_SRC_ADDR_OFST 0 644#define MC_CMD_COPYCODE_IN_SRC_ADDR_OFST 0
645/* enum: Entering the main image via a copy of a single word from and to this
646 * address indicates that it should not attempt to start the datapath CPUs.
647 * This is useful for certain soft rebooting scenarios. (Huntington only)
648 */
649#define MC_CMD_COPYCODE_HUNT_NO_DATAPATH_MAGIC_ADDR 0x1d0d0
650/* enum: Entering the main image via a copy of a single word from and to this
651 * address indicates that it should not attempt to parse any configuration from
652 * flash. (In addition, the datapath CPUs will not be started, as for
653 * MC_CMD_COPYCODE_HUNT_NO_DATAPATH_MAGIC_ADDR above.) This is useful for
654 * certain soft rebooting scenarios. (Huntington only)
655 */
656#define MC_CMD_COPYCODE_HUNT_IGNORE_CONFIG_MAGIC_ADDR 0x1badc
657/* Destination address */
371#define MC_CMD_COPYCODE_IN_DEST_ADDR_OFST 4 658#define MC_CMD_COPYCODE_IN_DEST_ADDR_OFST 4
372#define MC_CMD_COPYCODE_IN_NUMWORDS_OFST 8 659#define MC_CMD_COPYCODE_IN_NUMWORDS_OFST 8
660/* Address of where to jump after copy. */
373#define MC_CMD_COPYCODE_IN_JUMP_OFST 12 661#define MC_CMD_COPYCODE_IN_JUMP_OFST 12
374#define MC_CMD_COPYCODE_JUMP_NONE 0x1 /* enum */ 662/* enum: Control should return to the caller rather than jumping */
663#define MC_CMD_COPYCODE_JUMP_NONE 0x1
375 664
376/* MC_CMD_COPYCODE_OUT msgresponse */ 665/* MC_CMD_COPYCODE_OUT msgresponse */
377#define MC_CMD_COPYCODE_OUT_LEN 0 666#define MC_CMD_COPYCODE_OUT_LEN 0
@@ -379,11 +668,13 @@
379 668
380/***********************************/ 669/***********************************/
381/* MC_CMD_SET_FUNC 670/* MC_CMD_SET_FUNC
671 * Select function for function-specific commands.
382 */ 672 */
383#define MC_CMD_SET_FUNC 0x4 673#define MC_CMD_SET_FUNC 0x4
384 674
385/* MC_CMD_SET_FUNC_IN msgrequest */ 675/* MC_CMD_SET_FUNC_IN msgrequest */
386#define MC_CMD_SET_FUNC_IN_LEN 4 676#define MC_CMD_SET_FUNC_IN_LEN 4
677/* Set function */
387#define MC_CMD_SET_FUNC_IN_FUNC_OFST 0 678#define MC_CMD_SET_FUNC_IN_FUNC_OFST 0
388 679
389/* MC_CMD_SET_FUNC_OUT msgresponse */ 680/* MC_CMD_SET_FUNC_OUT msgresponse */
@@ -392,6 +683,7 @@
392 683
393/***********************************/ 684/***********************************/
394/* MC_CMD_GET_BOOT_STATUS 685/* MC_CMD_GET_BOOT_STATUS
686 * Get the instruction address from which the MC booted.
395 */ 687 */
396#define MC_CMD_GET_BOOT_STATUS 0x5 688#define MC_CMD_GET_BOOT_STATUS 0x5
397 689
@@ -400,7 +692,10 @@
400 692
401/* MC_CMD_GET_BOOT_STATUS_OUT msgresponse */ 693/* MC_CMD_GET_BOOT_STATUS_OUT msgresponse */
402#define MC_CMD_GET_BOOT_STATUS_OUT_LEN 8 694#define MC_CMD_GET_BOOT_STATUS_OUT_LEN 8
695/* ?? */
403#define MC_CMD_GET_BOOT_STATUS_OUT_BOOT_OFFSET_OFST 0 696#define MC_CMD_GET_BOOT_STATUS_OUT_BOOT_OFFSET_OFST 0
697/* enum: indicates that the MC wasn't flash booted */
698#define MC_CMD_GET_BOOT_STATUS_OUT_BOOT_OFFSET_NULL 0xdeadbeef
404#define MC_CMD_GET_BOOT_STATUS_OUT_FLAGS_OFST 4 699#define MC_CMD_GET_BOOT_STATUS_OUT_FLAGS_OFST 4
405#define MC_CMD_GET_BOOT_STATUS_OUT_FLAGS_WATCHDOG_LBN 0 700#define MC_CMD_GET_BOOT_STATUS_OUT_FLAGS_WATCHDOG_LBN 0
406#define MC_CMD_GET_BOOT_STATUS_OUT_FLAGS_WATCHDOG_WIDTH 1 701#define MC_CMD_GET_BOOT_STATUS_OUT_FLAGS_WATCHDOG_WIDTH 1
@@ -412,25 +707,38 @@
412 707
413/***********************************/ 708/***********************************/
414/* MC_CMD_GET_ASSERTS 709/* MC_CMD_GET_ASSERTS
415 * Get and clear any assertion status. 710 * Get (and optionally clear) the current assertion status. Only
711 * OUT.GLOBAL_FLAGS is guaranteed to exist in the completion payload. The other
712 * fields will only be present if OUT.GLOBAL_FLAGS != NO_FAILS
416 */ 713 */
417#define MC_CMD_GET_ASSERTS 0x6 714#define MC_CMD_GET_ASSERTS 0x6
418 715
419/* MC_CMD_GET_ASSERTS_IN msgrequest */ 716/* MC_CMD_GET_ASSERTS_IN msgrequest */
420#define MC_CMD_GET_ASSERTS_IN_LEN 4 717#define MC_CMD_GET_ASSERTS_IN_LEN 4
718/* Set to clear assertion */
421#define MC_CMD_GET_ASSERTS_IN_CLEAR_OFST 0 719#define MC_CMD_GET_ASSERTS_IN_CLEAR_OFST 0
422 720
423/* MC_CMD_GET_ASSERTS_OUT msgresponse */ 721/* MC_CMD_GET_ASSERTS_OUT msgresponse */
424#define MC_CMD_GET_ASSERTS_OUT_LEN 140 722#define MC_CMD_GET_ASSERTS_OUT_LEN 140
723/* Assertion status flag. */
425#define MC_CMD_GET_ASSERTS_OUT_GLOBAL_FLAGS_OFST 0 724#define MC_CMD_GET_ASSERTS_OUT_GLOBAL_FLAGS_OFST 0
426#define MC_CMD_GET_ASSERTS_FLAGS_NO_FAILS 0x1 /* enum */ 725/* enum: No assertions have failed. */
427#define MC_CMD_GET_ASSERTS_FLAGS_SYS_FAIL 0x2 /* enum */ 726#define MC_CMD_GET_ASSERTS_FLAGS_NO_FAILS 0x1
428#define MC_CMD_GET_ASSERTS_FLAGS_THR_FAIL 0x3 /* enum */ 727/* enum: A system-level assertion has failed. */
429#define MC_CMD_GET_ASSERTS_FLAGS_WDOG_FIRED 0x4 /* enum */ 728#define MC_CMD_GET_ASSERTS_FLAGS_SYS_FAIL 0x2
729/* enum: A thread-level assertion has failed. */
730#define MC_CMD_GET_ASSERTS_FLAGS_THR_FAIL 0x3
731/* enum: The system was reset by the watchdog. */
732#define MC_CMD_GET_ASSERTS_FLAGS_WDOG_FIRED 0x4
733/* enum: An illegal address trap stopped the system (huntington and later) */
734#define MC_CMD_GET_ASSERTS_FLAGS_ADDR_TRAP 0x5
735/* Failing PC value */
430#define MC_CMD_GET_ASSERTS_OUT_SAVED_PC_OFFS_OFST 4 736#define MC_CMD_GET_ASSERTS_OUT_SAVED_PC_OFFS_OFST 4
737/* Saved GP regs */
431#define MC_CMD_GET_ASSERTS_OUT_GP_REGS_OFFS_OFST 8 738#define MC_CMD_GET_ASSERTS_OUT_GP_REGS_OFFS_OFST 8
432#define MC_CMD_GET_ASSERTS_OUT_GP_REGS_OFFS_LEN 4 739#define MC_CMD_GET_ASSERTS_OUT_GP_REGS_OFFS_LEN 4
433#define MC_CMD_GET_ASSERTS_OUT_GP_REGS_OFFS_NUM 31 740#define MC_CMD_GET_ASSERTS_OUT_GP_REGS_OFFS_NUM 31
741/* Failing thread address */
434#define MC_CMD_GET_ASSERTS_OUT_THREAD_OFFS_OFST 132 742#define MC_CMD_GET_ASSERTS_OUT_THREAD_OFFS_OFST 132
435#define MC_CMD_GET_ASSERTS_OUT_RESERVED_OFST 136 743#define MC_CMD_GET_ASSERTS_OUT_RESERVED_OFST 136
436 744
@@ -443,9 +751,12 @@
443 751
444/* MC_CMD_LOG_CTRL_IN msgrequest */ 752/* MC_CMD_LOG_CTRL_IN msgrequest */
445#define MC_CMD_LOG_CTRL_IN_LEN 8 753#define MC_CMD_LOG_CTRL_IN_LEN 8
754/* Log destination */
446#define MC_CMD_LOG_CTRL_IN_LOG_DEST_OFST 0 755#define MC_CMD_LOG_CTRL_IN_LOG_DEST_OFST 0
447#define MC_CMD_LOG_CTRL_IN_LOG_DEST_UART 0x1 /* enum */ 756/* enum: UART. */
448#define MC_CMD_LOG_CTRL_IN_LOG_DEST_EVQ 0x2 /* enum */ 757#define MC_CMD_LOG_CTRL_IN_LOG_DEST_UART 0x1
758/* enum: Event queue. */
759#define MC_CMD_LOG_CTRL_IN_LOG_DEST_EVQ 0x2
449#define MC_CMD_LOG_CTRL_IN_LOG_DEST_EVQ_OFST 4 760#define MC_CMD_LOG_CTRL_IN_LOG_DEST_EVQ_OFST 4
450 761
451/* MC_CMD_LOG_CTRL_OUT msgresponse */ 762/* MC_CMD_LOG_CTRL_OUT msgresponse */
@@ -461,11 +772,20 @@
461/* MC_CMD_GET_VERSION_IN msgrequest */ 772/* MC_CMD_GET_VERSION_IN msgrequest */
462#define MC_CMD_GET_VERSION_IN_LEN 0 773#define MC_CMD_GET_VERSION_IN_LEN 0
463 774
464/* MC_CMD_GET_VERSION_V0_OUT msgresponse */ 775/* MC_CMD_GET_VERSION_EXT_IN msgrequest: Asks for the extended version */
776#define MC_CMD_GET_VERSION_EXT_IN_LEN 4
777/* placeholder, set to 0 */
778#define MC_CMD_GET_VERSION_EXT_IN_EXT_FLAGS_OFST 0
779
780/* MC_CMD_GET_VERSION_V0_OUT msgresponse: deprecated version format */
465#define MC_CMD_GET_VERSION_V0_OUT_LEN 4 781#define MC_CMD_GET_VERSION_V0_OUT_LEN 4
466#define MC_CMD_GET_VERSION_OUT_FIRMWARE_OFST 0 782#define MC_CMD_GET_VERSION_OUT_FIRMWARE_OFST 0
467#define MC_CMD_GET_VERSION_OUT_FIRMWARE_ANY 0xffffffff /* enum */ 783/* enum: Reserved version number to indicate "any" version. */
468#define MC_CMD_GET_VERSION_OUT_FIRMWARE_BOOTROM 0xb0070000 /* enum */ 784#define MC_CMD_GET_VERSION_OUT_FIRMWARE_ANY 0xffffffff
785/* enum: Bootrom version value for Siena. */
786#define MC_CMD_GET_VERSION_OUT_FIRMWARE_SIENA_BOOTROM 0xb0070000
787/* enum: Bootrom version value for Huntington. */
788#define MC_CMD_GET_VERSION_OUT_FIRMWARE_HUNT_BOOTROM 0xb0070001
469 789
470/* MC_CMD_GET_VERSION_OUT msgresponse */ 790/* MC_CMD_GET_VERSION_OUT msgresponse */
471#define MC_CMD_GET_VERSION_OUT_LEN 32 791#define MC_CMD_GET_VERSION_OUT_LEN 32
@@ -473,6 +793,7 @@
473/* Enum values, see field(s): */ 793/* Enum values, see field(s): */
474/* MC_CMD_GET_VERSION_V0_OUT/MC_CMD_GET_VERSION_OUT_FIRMWARE */ 794/* MC_CMD_GET_VERSION_V0_OUT/MC_CMD_GET_VERSION_OUT_FIRMWARE */
475#define MC_CMD_GET_VERSION_OUT_PCOL_OFST 4 795#define MC_CMD_GET_VERSION_OUT_PCOL_OFST 4
796/* 128bit mask of functions supported by the current firmware */
476#define MC_CMD_GET_VERSION_OUT_SUPPORTED_FUNCS_OFST 8 797#define MC_CMD_GET_VERSION_OUT_SUPPORTED_FUNCS_OFST 8
477#define MC_CMD_GET_VERSION_OUT_SUPPORTED_FUNCS_LEN 16 798#define MC_CMD_GET_VERSION_OUT_SUPPORTED_FUNCS_LEN 16
478#define MC_CMD_GET_VERSION_OUT_VERSION_OFST 24 799#define MC_CMD_GET_VERSION_OUT_VERSION_OFST 24
@@ -480,46 +801,22 @@
480#define MC_CMD_GET_VERSION_OUT_VERSION_LO_OFST 24 801#define MC_CMD_GET_VERSION_OUT_VERSION_LO_OFST 24
481#define MC_CMD_GET_VERSION_OUT_VERSION_HI_OFST 28 802#define MC_CMD_GET_VERSION_OUT_VERSION_HI_OFST 28
482 803
483 804/* MC_CMD_GET_VERSION_EXT_OUT msgresponse */
484/***********************************/ 805#define MC_CMD_GET_VERSION_EXT_OUT_LEN 48
485/* MC_CMD_GET_FPGAREG 806/* MC_CMD_GET_VERSION_OUT_FIRMWARE_OFST 0 */
486 * Read multiple bytes from PTP FPGA. 807/* Enum values, see field(s): */
487 */ 808/* MC_CMD_GET_VERSION_V0_OUT/MC_CMD_GET_VERSION_OUT_FIRMWARE */
488#define MC_CMD_GET_FPGAREG 0x9 809#define MC_CMD_GET_VERSION_EXT_OUT_PCOL_OFST 4
489 810/* 128bit mask of functions supported by the current firmware */
490/* MC_CMD_GET_FPGAREG_IN msgrequest */ 811#define MC_CMD_GET_VERSION_EXT_OUT_SUPPORTED_FUNCS_OFST 8
491#define MC_CMD_GET_FPGAREG_IN_LEN 8 812#define MC_CMD_GET_VERSION_EXT_OUT_SUPPORTED_FUNCS_LEN 16
492#define MC_CMD_GET_FPGAREG_IN_ADDR_OFST 0 813#define MC_CMD_GET_VERSION_EXT_OUT_VERSION_OFST 24
493#define MC_CMD_GET_FPGAREG_IN_NUMBYTES_OFST 4 814#define MC_CMD_GET_VERSION_EXT_OUT_VERSION_LEN 8
494 815#define MC_CMD_GET_VERSION_EXT_OUT_VERSION_LO_OFST 24
495/* MC_CMD_GET_FPGAREG_OUT msgresponse */ 816#define MC_CMD_GET_VERSION_EXT_OUT_VERSION_HI_OFST 28
496#define MC_CMD_GET_FPGAREG_OUT_LENMIN 1 817/* extra info */
497#define MC_CMD_GET_FPGAREG_OUT_LENMAX 252 818#define MC_CMD_GET_VERSION_EXT_OUT_EXTRA_OFST 32
498#define MC_CMD_GET_FPGAREG_OUT_LEN(num) (0+1*(num)) 819#define MC_CMD_GET_VERSION_EXT_OUT_EXTRA_LEN 16
499#define MC_CMD_GET_FPGAREG_OUT_BUFFER_OFST 0
500#define MC_CMD_GET_FPGAREG_OUT_BUFFER_LEN 1
501#define MC_CMD_GET_FPGAREG_OUT_BUFFER_MINNUM 1
502#define MC_CMD_GET_FPGAREG_OUT_BUFFER_MAXNUM 252
503
504
505/***********************************/
506/* MC_CMD_PUT_FPGAREG
507 * Write multiple bytes to PTP FPGA.
508 */
509#define MC_CMD_PUT_FPGAREG 0xa
510
511/* MC_CMD_PUT_FPGAREG_IN msgrequest */
512#define MC_CMD_PUT_FPGAREG_IN_LENMIN 5
513#define MC_CMD_PUT_FPGAREG_IN_LENMAX 252
514#define MC_CMD_PUT_FPGAREG_IN_LEN(num) (4+1*(num))
515#define MC_CMD_PUT_FPGAREG_IN_ADDR_OFST 0
516#define MC_CMD_PUT_FPGAREG_IN_BUFFER_OFST 4
517#define MC_CMD_PUT_FPGAREG_IN_BUFFER_LEN 1
518#define MC_CMD_PUT_FPGAREG_IN_BUFFER_MINNUM 1
519#define MC_CMD_PUT_FPGAREG_IN_BUFFER_MAXNUM 248
520
521/* MC_CMD_PUT_FPGAREG_OUT msgresponse */
522#define MC_CMD_PUT_FPGAREG_OUT_LEN 0
523 820
524 821
525/***********************************/ 822/***********************************/
@@ -530,32 +827,74 @@
530 827
531/* MC_CMD_PTP_IN msgrequest */ 828/* MC_CMD_PTP_IN msgrequest */
532#define MC_CMD_PTP_IN_LEN 1 829#define MC_CMD_PTP_IN_LEN 1
830/* PTP operation code */
533#define MC_CMD_PTP_IN_OP_OFST 0 831#define MC_CMD_PTP_IN_OP_OFST 0
534#define MC_CMD_PTP_IN_OP_LEN 1 832#define MC_CMD_PTP_IN_OP_LEN 1
535#define MC_CMD_PTP_OP_ENABLE 0x1 /* enum */ 833/* enum: Enable PTP packet timestamping operation. */
536#define MC_CMD_PTP_OP_DISABLE 0x2 /* enum */ 834#define MC_CMD_PTP_OP_ENABLE 0x1
537#define MC_CMD_PTP_OP_TRANSMIT 0x3 /* enum */ 835/* enum: Disable PTP packet timestamping operation. */
538#define MC_CMD_PTP_OP_READ_NIC_TIME 0x4 /* enum */ 836#define MC_CMD_PTP_OP_DISABLE 0x2
539#define MC_CMD_PTP_OP_STATUS 0x5 /* enum */ 837/* enum: Send a PTP packet. */
540#define MC_CMD_PTP_OP_ADJUST 0x6 /* enum */ 838#define MC_CMD_PTP_OP_TRANSMIT 0x3
541#define MC_CMD_PTP_OP_SYNCHRONIZE 0x7 /* enum */ 839/* enum: Read the current NIC time. */
542#define MC_CMD_PTP_OP_MANFTEST_BASIC 0x8 /* enum */ 840#define MC_CMD_PTP_OP_READ_NIC_TIME 0x4
543#define MC_CMD_PTP_OP_MANFTEST_PACKET 0x9 /* enum */ 841/* enum: Get the current PTP status. */
544#define MC_CMD_PTP_OP_RESET_STATS 0xa /* enum */ 842#define MC_CMD_PTP_OP_STATUS 0x5
545#define MC_CMD_PTP_OP_DEBUG 0xb /* enum */ 843/* enum: Adjust the PTP NIC's time. */
546#define MC_CMD_PTP_OP_MAX 0xc /* enum */ 844#define MC_CMD_PTP_OP_ADJUST 0x6
845/* enum: Synchronize host and NIC time. */
846#define MC_CMD_PTP_OP_SYNCHRONIZE 0x7
847/* enum: Basic manufacturing tests. */
848#define MC_CMD_PTP_OP_MANFTEST_BASIC 0x8
849/* enum: Packet based manufacturing tests. */
850#define MC_CMD_PTP_OP_MANFTEST_PACKET 0x9
851/* enum: Reset some of the PTP related statistics */
852#define MC_CMD_PTP_OP_RESET_STATS 0xa
853/* enum: Debug operations to MC. */
854#define MC_CMD_PTP_OP_DEBUG 0xb
855/* enum: Read an FPGA register */
856#define MC_CMD_PTP_OP_FPGAREAD 0xc
857/* enum: Write an FPGA register */
858#define MC_CMD_PTP_OP_FPGAWRITE 0xd
859/* enum: Apply an offset to the NIC clock */
860#define MC_CMD_PTP_OP_CLOCK_OFFSET_ADJUST 0xe
861/* enum: Change Apply an offset to the NIC clock */
862#define MC_CMD_PTP_OP_CLOCK_FREQ_ADJUST 0xf
863/* enum: Set the MC packet filter VLAN tags for received PTP packets */
864#define MC_CMD_PTP_OP_RX_SET_VLAN_FILTER 0x10
865/* enum: Set the MC packet filter UUID for received PTP packets */
866#define MC_CMD_PTP_OP_RX_SET_UUID_FILTER 0x11
867/* enum: Set the MC packet filter Domain for received PTP packets */
868#define MC_CMD_PTP_OP_RX_SET_DOMAIN_FILTER 0x12
869/* enum: Set the clock source */
870#define MC_CMD_PTP_OP_SET_CLK_SRC 0x13
871/* enum: Reset value of Timer Reg. */
872#define MC_CMD_PTP_OP_RST_CLK 0x14
873/* enum: Enable the forwarding of PPS events to the host */
874#define MC_CMD_PTP_OP_PPS_ENABLE 0x15
875/* enum: Above this for future use. */
876#define MC_CMD_PTP_OP_MAX 0x16
547 877
548/* MC_CMD_PTP_IN_ENABLE msgrequest */ 878/* MC_CMD_PTP_IN_ENABLE msgrequest */
549#define MC_CMD_PTP_IN_ENABLE_LEN 16 879#define MC_CMD_PTP_IN_ENABLE_LEN 16
550#define MC_CMD_PTP_IN_CMD_OFST 0 880#define MC_CMD_PTP_IN_CMD_OFST 0
551#define MC_CMD_PTP_IN_PERIPH_ID_OFST 4 881#define MC_CMD_PTP_IN_PERIPH_ID_OFST 4
882/* Event queue for PTP events */
552#define MC_CMD_PTP_IN_ENABLE_QUEUE_OFST 8 883#define MC_CMD_PTP_IN_ENABLE_QUEUE_OFST 8
884/* PTP timestamping mode */
553#define MC_CMD_PTP_IN_ENABLE_MODE_OFST 12 885#define MC_CMD_PTP_IN_ENABLE_MODE_OFST 12
554#define MC_CMD_PTP_MODE_V1 0x0 /* enum */ 886/* enum: PTP, version 1 */
555#define MC_CMD_PTP_MODE_V1_VLAN 0x1 /* enum */ 887#define MC_CMD_PTP_MODE_V1 0x0
556#define MC_CMD_PTP_MODE_V2 0x2 /* enum */ 888/* enum: PTP, version 1, with VLAN headers - deprecated */
557#define MC_CMD_PTP_MODE_V2_VLAN 0x3 /* enum */ 889#define MC_CMD_PTP_MODE_V1_VLAN 0x1
558#define MC_CMD_PTP_MODE_V2_ENHANCED 0x4 /* enum */ 890/* enum: PTP, version 2 */
891#define MC_CMD_PTP_MODE_V2 0x2
892/* enum: PTP, version 2, with VLAN headers - deprecated */
893#define MC_CMD_PTP_MODE_V2_VLAN 0x3
894/* enum: PTP, version 2, with improved UUID filtering */
895#define MC_CMD_PTP_MODE_V2_ENHANCED 0x4
896/* enum: FCoE (seconds and microseconds) */
897#define MC_CMD_PTP_MODE_FCOE 0x5
559 898
560/* MC_CMD_PTP_IN_DISABLE msgrequest */ 899/* MC_CMD_PTP_IN_DISABLE msgrequest */
561#define MC_CMD_PTP_IN_DISABLE_LEN 8 900#define MC_CMD_PTP_IN_DISABLE_LEN 8
@@ -568,7 +907,9 @@
568#define MC_CMD_PTP_IN_TRANSMIT_LEN(num) (12+1*(num)) 907#define MC_CMD_PTP_IN_TRANSMIT_LEN(num) (12+1*(num))
569/* MC_CMD_PTP_IN_CMD_OFST 0 */ 908/* MC_CMD_PTP_IN_CMD_OFST 0 */
570/* MC_CMD_PTP_IN_PERIPH_ID_OFST 4 */ 909/* MC_CMD_PTP_IN_PERIPH_ID_OFST 4 */
910/* Transmit packet length */
571#define MC_CMD_PTP_IN_TRANSMIT_LENGTH_OFST 8 911#define MC_CMD_PTP_IN_TRANSMIT_LENGTH_OFST 8
912/* Transmit packet data */
572#define MC_CMD_PTP_IN_TRANSMIT_PACKET_OFST 12 913#define MC_CMD_PTP_IN_TRANSMIT_PACKET_OFST 12
573#define MC_CMD_PTP_IN_TRANSMIT_PACKET_LEN 1 914#define MC_CMD_PTP_IN_TRANSMIT_PACKET_LEN 1
574#define MC_CMD_PTP_IN_TRANSMIT_PACKET_MINNUM 1 915#define MC_CMD_PTP_IN_TRANSMIT_PACKET_MINNUM 1
@@ -588,19 +929,27 @@
588#define MC_CMD_PTP_IN_ADJUST_LEN 24 929#define MC_CMD_PTP_IN_ADJUST_LEN 24
589/* MC_CMD_PTP_IN_CMD_OFST 0 */ 930/* MC_CMD_PTP_IN_CMD_OFST 0 */
590/* MC_CMD_PTP_IN_PERIPH_ID_OFST 4 */ 931/* MC_CMD_PTP_IN_PERIPH_ID_OFST 4 */
932/* Frequency adjustment 40 bit fixed point ns */
591#define MC_CMD_PTP_IN_ADJUST_FREQ_OFST 8 933#define MC_CMD_PTP_IN_ADJUST_FREQ_OFST 8
592#define MC_CMD_PTP_IN_ADJUST_FREQ_LEN 8 934#define MC_CMD_PTP_IN_ADJUST_FREQ_LEN 8
593#define MC_CMD_PTP_IN_ADJUST_FREQ_LO_OFST 8 935#define MC_CMD_PTP_IN_ADJUST_FREQ_LO_OFST 8
594#define MC_CMD_PTP_IN_ADJUST_FREQ_HI_OFST 12 936#define MC_CMD_PTP_IN_ADJUST_FREQ_HI_OFST 12
595#define MC_CMD_PTP_IN_ADJUST_BITS 0x28 /* enum */ 937/* enum: Number of fractional bits in frequency adjustment */
938#define MC_CMD_PTP_IN_ADJUST_BITS 0x28
939/* Time adjustment in seconds */
596#define MC_CMD_PTP_IN_ADJUST_SECONDS_OFST 16 940#define MC_CMD_PTP_IN_ADJUST_SECONDS_OFST 16
941/* Time adjustment in nanoseconds */
597#define MC_CMD_PTP_IN_ADJUST_NANOSECONDS_OFST 20 942#define MC_CMD_PTP_IN_ADJUST_NANOSECONDS_OFST 20
598 943
599/* MC_CMD_PTP_IN_SYNCHRONIZE msgrequest */ 944/* MC_CMD_PTP_IN_SYNCHRONIZE msgrequest */
600#define MC_CMD_PTP_IN_SYNCHRONIZE_LEN 20 945#define MC_CMD_PTP_IN_SYNCHRONIZE_LEN 20
601/* MC_CMD_PTP_IN_CMD_OFST 0 */ 946/* MC_CMD_PTP_IN_CMD_OFST 0 */
602/* MC_CMD_PTP_IN_PERIPH_ID_OFST 4 */ 947/* MC_CMD_PTP_IN_PERIPH_ID_OFST 4 */
948/* Number of time readings to capture */
603#define MC_CMD_PTP_IN_SYNCHRONIZE_NUMTIMESETS_OFST 8 949#define MC_CMD_PTP_IN_SYNCHRONIZE_NUMTIMESETS_OFST 8
950/* Host address in which to write "synchronization started" indication (64
951 * bits)
952 */
604#define MC_CMD_PTP_IN_SYNCHRONIZE_START_ADDR_OFST 12 953#define MC_CMD_PTP_IN_SYNCHRONIZE_START_ADDR_OFST 12
605#define MC_CMD_PTP_IN_SYNCHRONIZE_START_ADDR_LEN 8 954#define MC_CMD_PTP_IN_SYNCHRONIZE_START_ADDR_LEN 8
606#define MC_CMD_PTP_IN_SYNCHRONIZE_START_ADDR_LO_OFST 12 955#define MC_CMD_PTP_IN_SYNCHRONIZE_START_ADDR_LO_OFST 12
@@ -615,86 +964,240 @@
615#define MC_CMD_PTP_IN_MANFTEST_PACKET_LEN 12 964#define MC_CMD_PTP_IN_MANFTEST_PACKET_LEN 12
616/* MC_CMD_PTP_IN_CMD_OFST 0 */ 965/* MC_CMD_PTP_IN_CMD_OFST 0 */
617/* MC_CMD_PTP_IN_PERIPH_ID_OFST 4 */ 966/* MC_CMD_PTP_IN_PERIPH_ID_OFST 4 */
967/* Enable or disable packet testing */
618#define MC_CMD_PTP_IN_MANFTEST_PACKET_TEST_ENABLE_OFST 8 968#define MC_CMD_PTP_IN_MANFTEST_PACKET_TEST_ENABLE_OFST 8
619 969
620/* MC_CMD_PTP_IN_RESET_STATS msgrequest */ 970/* MC_CMD_PTP_IN_RESET_STATS msgrequest */
621#define MC_CMD_PTP_IN_RESET_STATS_LEN 8 971#define MC_CMD_PTP_IN_RESET_STATS_LEN 8
622/* MC_CMD_PTP_IN_CMD_OFST 0 */ 972/* MC_CMD_PTP_IN_CMD_OFST 0 */
973/* Reset PTP statistics */
623/* MC_CMD_PTP_IN_PERIPH_ID_OFST 4 */ 974/* MC_CMD_PTP_IN_PERIPH_ID_OFST 4 */
624 975
625/* MC_CMD_PTP_IN_DEBUG msgrequest */ 976/* MC_CMD_PTP_IN_DEBUG msgrequest */
626#define MC_CMD_PTP_IN_DEBUG_LEN 12 977#define MC_CMD_PTP_IN_DEBUG_LEN 12
627/* MC_CMD_PTP_IN_CMD_OFST 0 */ 978/* MC_CMD_PTP_IN_CMD_OFST 0 */
628/* MC_CMD_PTP_IN_PERIPH_ID_OFST 4 */ 979/* MC_CMD_PTP_IN_PERIPH_ID_OFST 4 */
980/* Debug operations */
629#define MC_CMD_PTP_IN_DEBUG_DEBUG_PARAM_OFST 8 981#define MC_CMD_PTP_IN_DEBUG_DEBUG_PARAM_OFST 8
630 982
983/* MC_CMD_PTP_IN_FPGAREAD msgrequest */
984#define MC_CMD_PTP_IN_FPGAREAD_LEN 16
985/* MC_CMD_PTP_IN_CMD_OFST 0 */
986/* MC_CMD_PTP_IN_PERIPH_ID_OFST 4 */
987#define MC_CMD_PTP_IN_FPGAREAD_ADDR_OFST 8
988#define MC_CMD_PTP_IN_FPGAREAD_NUMBYTES_OFST 12
989
990/* MC_CMD_PTP_IN_FPGAWRITE msgrequest */
991#define MC_CMD_PTP_IN_FPGAWRITE_LENMIN 13
992#define MC_CMD_PTP_IN_FPGAWRITE_LENMAX 252
993#define MC_CMD_PTP_IN_FPGAWRITE_LEN(num) (12+1*(num))
994/* MC_CMD_PTP_IN_CMD_OFST 0 */
995/* MC_CMD_PTP_IN_PERIPH_ID_OFST 4 */
996#define MC_CMD_PTP_IN_FPGAWRITE_ADDR_OFST 8
997#define MC_CMD_PTP_IN_FPGAWRITE_BUFFER_OFST 12
998#define MC_CMD_PTP_IN_FPGAWRITE_BUFFER_LEN 1
999#define MC_CMD_PTP_IN_FPGAWRITE_BUFFER_MINNUM 1
1000#define MC_CMD_PTP_IN_FPGAWRITE_BUFFER_MAXNUM 240
1001
1002/* MC_CMD_PTP_IN_CLOCK_OFFSET_ADJUST msgrequest */
1003#define MC_CMD_PTP_IN_CLOCK_OFFSET_ADJUST_LEN 16
1004/* MC_CMD_PTP_IN_CMD_OFST 0 */
1005/* MC_CMD_PTP_IN_PERIPH_ID_OFST 4 */
1006/* Time adjustment in seconds */
1007#define MC_CMD_PTP_IN_CLOCK_OFFSET_ADJUST_SECONDS_OFST 8
1008/* Time adjustment in nanoseconds */
1009#define MC_CMD_PTP_IN_CLOCK_OFFSET_ADJUST_NANOSECONDS_OFST 12
1010
1011/* MC_CMD_PTP_IN_CLOCK_FREQ_ADJUST msgrequest */
1012#define MC_CMD_PTP_IN_CLOCK_FREQ_ADJUST_LEN 16
1013/* MC_CMD_PTP_IN_CMD_OFST 0 */
1014/* MC_CMD_PTP_IN_PERIPH_ID_OFST 4 */
1015/* Frequency adjustment 40 bit fixed point ns */
1016#define MC_CMD_PTP_IN_CLOCK_FREQ_ADJUST_FREQ_OFST 8
1017#define MC_CMD_PTP_IN_CLOCK_FREQ_ADJUST_FREQ_LEN 8
1018#define MC_CMD_PTP_IN_CLOCK_FREQ_ADJUST_FREQ_LO_OFST 8
1019#define MC_CMD_PTP_IN_CLOCK_FREQ_ADJUST_FREQ_HI_OFST 12
1020/* enum: Number of fractional bits in frequency adjustment */
1021/* MC_CMD_PTP_IN_ADJUST_BITS 0x28 */
1022
1023/* MC_CMD_PTP_IN_RX_SET_VLAN_FILTER msgrequest */
1024#define MC_CMD_PTP_IN_RX_SET_VLAN_FILTER_LEN 24
1025/* MC_CMD_PTP_IN_CMD_OFST 0 */
1026/* MC_CMD_PTP_IN_PERIPH_ID_OFST 4 */
1027/* Number of VLAN tags, 0 if not VLAN */
1028#define MC_CMD_PTP_IN_RX_SET_VLAN_FILTER_NUM_VLAN_TAGS_OFST 8
1029/* Set of VLAN tags to filter against */
1030#define MC_CMD_PTP_IN_RX_SET_VLAN_FILTER_VLAN_TAG_OFST 12
1031#define MC_CMD_PTP_IN_RX_SET_VLAN_FILTER_VLAN_TAG_LEN 4
1032#define MC_CMD_PTP_IN_RX_SET_VLAN_FILTER_VLAN_TAG_NUM 3
1033
1034/* MC_CMD_PTP_IN_RX_SET_UUID_FILTER msgrequest */
1035#define MC_CMD_PTP_IN_RX_SET_UUID_FILTER_LEN 20
1036/* MC_CMD_PTP_IN_CMD_OFST 0 */
1037/* MC_CMD_PTP_IN_PERIPH_ID_OFST 4 */
1038/* 1 to enable UUID filtering, 0 to disable */
1039#define MC_CMD_PTP_IN_RX_SET_UUID_FILTER_ENABLE_OFST 8
1040/* UUID to filter against */
1041#define MC_CMD_PTP_IN_RX_SET_UUID_FILTER_UUID_OFST 12
1042#define MC_CMD_PTP_IN_RX_SET_UUID_FILTER_UUID_LEN 8
1043#define MC_CMD_PTP_IN_RX_SET_UUID_FILTER_UUID_LO_OFST 12
1044#define MC_CMD_PTP_IN_RX_SET_UUID_FILTER_UUID_HI_OFST 16
1045
1046/* MC_CMD_PTP_IN_RX_SET_DOMAIN_FILTER msgrequest */
1047#define MC_CMD_PTP_IN_RX_SET_DOMAIN_FILTER_LEN 16
1048/* MC_CMD_PTP_IN_CMD_OFST 0 */
1049/* MC_CMD_PTP_IN_PERIPH_ID_OFST 4 */
1050/* 1 to enable Domain filtering, 0 to disable */
1051#define MC_CMD_PTP_IN_RX_SET_DOMAIN_FILTER_ENABLE_OFST 8
1052/* Domain number to filter against */
1053#define MC_CMD_PTP_IN_RX_SET_DOMAIN_FILTER_DOMAIN_OFST 12
1054
1055/* MC_CMD_PTP_IN_SET_CLK_SRC msgrequest */
1056#define MC_CMD_PTP_IN_SET_CLK_SRC_LEN 12
1057/* MC_CMD_PTP_IN_CMD_OFST 0 */
1058/* MC_CMD_PTP_IN_PERIPH_ID_OFST 4 */
1059/* Set the clock source. */
1060#define MC_CMD_PTP_IN_SET_CLK_SRC_CLK_OFST 8
1061/* enum: Internal. */
1062#define MC_CMD_PTP_CLK_SRC_INTERNAL 0x0
1063/* enum: External. */
1064#define MC_CMD_PTP_CLK_SRC_EXTERNAL 0x1
1065
1066/* MC_CMD_PTP_IN_RST_CLK msgrequest */
1067#define MC_CMD_PTP_IN_RST_CLK_LEN 8
1068/* MC_CMD_PTP_IN_CMD_OFST 0 */
1069/* Reset value of Timer Reg. */
1070/* MC_CMD_PTP_IN_PERIPH_ID_OFST 4 */
1071
1072/* MC_CMD_PTP_IN_PPS_ENABLE msgrequest */
1073#define MC_CMD_PTP_IN_PPS_ENABLE_LEN 12
1074/* MC_CMD_PTP_IN_CMD_OFST 0 */
1075/* Enable or disable */
1076#define MC_CMD_PTP_IN_PPS_ENABLE_OP_OFST 4
1077/* enum: Enable */
1078#define MC_CMD_PTP_ENABLE_PPS 0x0
1079/* enum: Disable */
1080#define MC_CMD_PTP_DISABLE_PPS 0x1
1081/* Queueid to send events back */
1082#define MC_CMD_PTP_IN_PPS_ENABLE_QUEUE_ID_OFST 8
1083
631/* MC_CMD_PTP_OUT msgresponse */ 1084/* MC_CMD_PTP_OUT msgresponse */
632#define MC_CMD_PTP_OUT_LEN 0 1085#define MC_CMD_PTP_OUT_LEN 0
633 1086
634/* MC_CMD_PTP_OUT_TRANSMIT msgresponse */ 1087/* MC_CMD_PTP_OUT_TRANSMIT msgresponse */
635#define MC_CMD_PTP_OUT_TRANSMIT_LEN 8 1088#define MC_CMD_PTP_OUT_TRANSMIT_LEN 8
1089/* Value of seconds timestamp */
636#define MC_CMD_PTP_OUT_TRANSMIT_SECONDS_OFST 0 1090#define MC_CMD_PTP_OUT_TRANSMIT_SECONDS_OFST 0
1091/* Value of nanoseconds timestamp */
637#define MC_CMD_PTP_OUT_TRANSMIT_NANOSECONDS_OFST 4 1092#define MC_CMD_PTP_OUT_TRANSMIT_NANOSECONDS_OFST 4
638 1093
639/* MC_CMD_PTP_OUT_READ_NIC_TIME msgresponse */ 1094/* MC_CMD_PTP_OUT_READ_NIC_TIME msgresponse */
640#define MC_CMD_PTP_OUT_READ_NIC_TIME_LEN 8 1095#define MC_CMD_PTP_OUT_READ_NIC_TIME_LEN 8
1096/* Value of seconds timestamp */
641#define MC_CMD_PTP_OUT_READ_NIC_TIME_SECONDS_OFST 0 1097#define MC_CMD_PTP_OUT_READ_NIC_TIME_SECONDS_OFST 0
1098/* Value of nanoseconds timestamp */
642#define MC_CMD_PTP_OUT_READ_NIC_TIME_NANOSECONDS_OFST 4 1099#define MC_CMD_PTP_OUT_READ_NIC_TIME_NANOSECONDS_OFST 4
643 1100
644/* MC_CMD_PTP_OUT_STATUS msgresponse */ 1101/* MC_CMD_PTP_OUT_STATUS msgresponse */
645#define MC_CMD_PTP_OUT_STATUS_LEN 64 1102#define MC_CMD_PTP_OUT_STATUS_LEN 64
1103/* Frequency of NIC's hardware clock */
646#define MC_CMD_PTP_OUT_STATUS_CLOCK_FREQ_OFST 0 1104#define MC_CMD_PTP_OUT_STATUS_CLOCK_FREQ_OFST 0
1105/* Number of packets transmitted and timestamped */
647#define MC_CMD_PTP_OUT_STATUS_STATS_TX_OFST 4 1106#define MC_CMD_PTP_OUT_STATUS_STATS_TX_OFST 4
1107/* Number of packets received and timestamped */
648#define MC_CMD_PTP_OUT_STATUS_STATS_RX_OFST 8 1108#define MC_CMD_PTP_OUT_STATUS_STATS_RX_OFST 8
1109/* Number of packets timestamped by the FPGA */
649#define MC_CMD_PTP_OUT_STATUS_STATS_TS_OFST 12 1110#define MC_CMD_PTP_OUT_STATUS_STATS_TS_OFST 12
1111/* Number of packets filter matched */
650#define MC_CMD_PTP_OUT_STATUS_STATS_FM_OFST 16 1112#define MC_CMD_PTP_OUT_STATUS_STATS_FM_OFST 16
1113/* Number of packets not filter matched */
651#define MC_CMD_PTP_OUT_STATUS_STATS_NFM_OFST 20 1114#define MC_CMD_PTP_OUT_STATUS_STATS_NFM_OFST 20
1115/* Number of PPS overflows (noise on input?) */
652#define MC_CMD_PTP_OUT_STATUS_STATS_PPS_OFLOW_OFST 24 1116#define MC_CMD_PTP_OUT_STATUS_STATS_PPS_OFLOW_OFST 24
1117/* Number of PPS bad periods */
653#define MC_CMD_PTP_OUT_STATUS_STATS_PPS_BAD_OFST 28 1118#define MC_CMD_PTP_OUT_STATUS_STATS_PPS_BAD_OFST 28
1119/* Minimum period of PPS pulse */
654#define MC_CMD_PTP_OUT_STATUS_STATS_PPS_PER_MIN_OFST 32 1120#define MC_CMD_PTP_OUT_STATUS_STATS_PPS_PER_MIN_OFST 32
1121/* Maximum period of PPS pulse */
655#define MC_CMD_PTP_OUT_STATUS_STATS_PPS_PER_MAX_OFST 36 1122#define MC_CMD_PTP_OUT_STATUS_STATS_PPS_PER_MAX_OFST 36
1123/* Last period of PPS pulse */
656#define MC_CMD_PTP_OUT_STATUS_STATS_PPS_PER_LAST_OFST 40 1124#define MC_CMD_PTP_OUT_STATUS_STATS_PPS_PER_LAST_OFST 40
1125/* Mean period of PPS pulse */
657#define MC_CMD_PTP_OUT_STATUS_STATS_PPS_PER_MEAN_OFST 44 1126#define MC_CMD_PTP_OUT_STATUS_STATS_PPS_PER_MEAN_OFST 44
1127/* Minimum offset of PPS pulse (signed) */
658#define MC_CMD_PTP_OUT_STATUS_STATS_PPS_OFF_MIN_OFST 48 1128#define MC_CMD_PTP_OUT_STATUS_STATS_PPS_OFF_MIN_OFST 48
1129/* Maximum offset of PPS pulse (signed) */
659#define MC_CMD_PTP_OUT_STATUS_STATS_PPS_OFF_MAX_OFST 52 1130#define MC_CMD_PTP_OUT_STATUS_STATS_PPS_OFF_MAX_OFST 52
1131/* Last offset of PPS pulse (signed) */
660#define MC_CMD_PTP_OUT_STATUS_STATS_PPS_OFF_LAST_OFST 56 1132#define MC_CMD_PTP_OUT_STATUS_STATS_PPS_OFF_LAST_OFST 56
1133/* Mean offset of PPS pulse (signed) */
661#define MC_CMD_PTP_OUT_STATUS_STATS_PPS_OFF_MEAN_OFST 60 1134#define MC_CMD_PTP_OUT_STATUS_STATS_PPS_OFF_MEAN_OFST 60
662 1135
663/* MC_CMD_PTP_OUT_SYNCHRONIZE msgresponse */ 1136/* MC_CMD_PTP_OUT_SYNCHRONIZE msgresponse */
664#define MC_CMD_PTP_OUT_SYNCHRONIZE_LENMIN 20 1137#define MC_CMD_PTP_OUT_SYNCHRONIZE_LENMIN 20
665#define MC_CMD_PTP_OUT_SYNCHRONIZE_LENMAX 240 1138#define MC_CMD_PTP_OUT_SYNCHRONIZE_LENMAX 240
666#define MC_CMD_PTP_OUT_SYNCHRONIZE_LEN(num) (0+20*(num)) 1139#define MC_CMD_PTP_OUT_SYNCHRONIZE_LEN(num) (0+20*(num))
1140/* A set of host and NIC times */
667#define MC_CMD_PTP_OUT_SYNCHRONIZE_TIMESET_OFST 0 1141#define MC_CMD_PTP_OUT_SYNCHRONIZE_TIMESET_OFST 0
668#define MC_CMD_PTP_OUT_SYNCHRONIZE_TIMESET_LEN 20 1142#define MC_CMD_PTP_OUT_SYNCHRONIZE_TIMESET_LEN 20
669#define MC_CMD_PTP_OUT_SYNCHRONIZE_TIMESET_MINNUM 1 1143#define MC_CMD_PTP_OUT_SYNCHRONIZE_TIMESET_MINNUM 1
670#define MC_CMD_PTP_OUT_SYNCHRONIZE_TIMESET_MAXNUM 12 1144#define MC_CMD_PTP_OUT_SYNCHRONIZE_TIMESET_MAXNUM 12
1145/* Host time immediately before NIC's hardware clock read */
671#define MC_CMD_PTP_OUT_SYNCHRONIZE_HOSTSTART_OFST 0 1146#define MC_CMD_PTP_OUT_SYNCHRONIZE_HOSTSTART_OFST 0
1147/* Value of seconds timestamp */
672#define MC_CMD_PTP_OUT_SYNCHRONIZE_SECONDS_OFST 4 1148#define MC_CMD_PTP_OUT_SYNCHRONIZE_SECONDS_OFST 4
1149/* Value of nanoseconds timestamp */
673#define MC_CMD_PTP_OUT_SYNCHRONIZE_NANOSECONDS_OFST 8 1150#define MC_CMD_PTP_OUT_SYNCHRONIZE_NANOSECONDS_OFST 8
1151/* Host time immediately after NIC's hardware clock read */
674#define MC_CMD_PTP_OUT_SYNCHRONIZE_HOSTEND_OFST 12 1152#define MC_CMD_PTP_OUT_SYNCHRONIZE_HOSTEND_OFST 12
1153/* Number of nanoseconds waited after reading NIC's hardware clock */
675#define MC_CMD_PTP_OUT_SYNCHRONIZE_WAITNS_OFST 16 1154#define MC_CMD_PTP_OUT_SYNCHRONIZE_WAITNS_OFST 16
676 1155
677/* MC_CMD_PTP_OUT_MANFTEST_BASIC msgresponse */ 1156/* MC_CMD_PTP_OUT_MANFTEST_BASIC msgresponse */
678#define MC_CMD_PTP_OUT_MANFTEST_BASIC_LEN 8 1157#define MC_CMD_PTP_OUT_MANFTEST_BASIC_LEN 8
1158/* Results of testing */
679#define MC_CMD_PTP_OUT_MANFTEST_BASIC_TEST_RESULT_OFST 0 1159#define MC_CMD_PTP_OUT_MANFTEST_BASIC_TEST_RESULT_OFST 0
680#define MC_CMD_PTP_MANF_SUCCESS 0x0 /* enum */ 1160/* enum: Successful test */
681#define MC_CMD_PTP_MANF_FPGA_LOAD 0x1 /* enum */ 1161#define MC_CMD_PTP_MANF_SUCCESS 0x0
682#define MC_CMD_PTP_MANF_FPGA_VERSION 0x2 /* enum */ 1162/* enum: FPGA load failed */
683#define MC_CMD_PTP_MANF_FPGA_REGISTERS 0x3 /* enum */ 1163#define MC_CMD_PTP_MANF_FPGA_LOAD 0x1
684#define MC_CMD_PTP_MANF_OSCILLATOR 0x4 /* enum */ 1164/* enum: FPGA version invalid */
685#define MC_CMD_PTP_MANF_TIMESTAMPS 0x5 /* enum */ 1165#define MC_CMD_PTP_MANF_FPGA_VERSION 0x2
686#define MC_CMD_PTP_MANF_PACKET_COUNT 0x6 /* enum */ 1166/* enum: FPGA registers incorrect */
687#define MC_CMD_PTP_MANF_FILTER_COUNT 0x7 /* enum */ 1167#define MC_CMD_PTP_MANF_FPGA_REGISTERS 0x3
688#define MC_CMD_PTP_MANF_PACKET_ENOUGH 0x8 /* enum */ 1168/* enum: Oscillator possibly not working? */
689#define MC_CMD_PTP_MANF_GPIO_TRIGGER 0x9 /* enum */ 1169#define MC_CMD_PTP_MANF_OSCILLATOR 0x4
1170/* enum: Timestamps not increasing */
1171#define MC_CMD_PTP_MANF_TIMESTAMPS 0x5
1172/* enum: Mismatched packet count */
1173#define MC_CMD_PTP_MANF_PACKET_COUNT 0x6
1174/* enum: Mismatched packet count (Siena filter and FPGA) */
1175#define MC_CMD_PTP_MANF_FILTER_COUNT 0x7
1176/* enum: Not enough packets to perform timestamp check */
1177#define MC_CMD_PTP_MANF_PACKET_ENOUGH 0x8
1178/* enum: Timestamp trigger GPIO not working */
1179#define MC_CMD_PTP_MANF_GPIO_TRIGGER 0x9
1180/* Presence of external oscillator */
690#define MC_CMD_PTP_OUT_MANFTEST_BASIC_TEST_EXTOSC_OFST 4 1181#define MC_CMD_PTP_OUT_MANFTEST_BASIC_TEST_EXTOSC_OFST 4
691 1182
692/* MC_CMD_PTP_OUT_MANFTEST_PACKET msgresponse */ 1183/* MC_CMD_PTP_OUT_MANFTEST_PACKET msgresponse */
693#define MC_CMD_PTP_OUT_MANFTEST_PACKET_LEN 12 1184#define MC_CMD_PTP_OUT_MANFTEST_PACKET_LEN 12
1185/* Results of testing */
694#define MC_CMD_PTP_OUT_MANFTEST_PACKET_TEST_RESULT_OFST 0 1186#define MC_CMD_PTP_OUT_MANFTEST_PACKET_TEST_RESULT_OFST 0
1187/* Number of packets received by FPGA */
695#define MC_CMD_PTP_OUT_MANFTEST_PACKET_TEST_FPGACOUNT_OFST 4 1188#define MC_CMD_PTP_OUT_MANFTEST_PACKET_TEST_FPGACOUNT_OFST 4
1189/* Number of packets received by Siena filters */
696#define MC_CMD_PTP_OUT_MANFTEST_PACKET_TEST_FILTERCOUNT_OFST 8 1190#define MC_CMD_PTP_OUT_MANFTEST_PACKET_TEST_FILTERCOUNT_OFST 8
697 1191
1192/* MC_CMD_PTP_OUT_FPGAREAD msgresponse */
1193#define MC_CMD_PTP_OUT_FPGAREAD_LENMIN 1
1194#define MC_CMD_PTP_OUT_FPGAREAD_LENMAX 252
1195#define MC_CMD_PTP_OUT_FPGAREAD_LEN(num) (0+1*(num))
1196#define MC_CMD_PTP_OUT_FPGAREAD_BUFFER_OFST 0
1197#define MC_CMD_PTP_OUT_FPGAREAD_BUFFER_LEN 1
1198#define MC_CMD_PTP_OUT_FPGAREAD_BUFFER_MINNUM 1
1199#define MC_CMD_PTP_OUT_FPGAREAD_BUFFER_MAXNUM 252
1200
698 1201
699/***********************************/ 1202/***********************************/
700/* MC_CMD_CSR_READ32 1203/* MC_CMD_CSR_READ32
@@ -704,6 +1207,7 @@
704 1207
705/* MC_CMD_CSR_READ32_IN msgrequest */ 1208/* MC_CMD_CSR_READ32_IN msgrequest */
706#define MC_CMD_CSR_READ32_IN_LEN 12 1209#define MC_CMD_CSR_READ32_IN_LEN 12
1210/* Address */
707#define MC_CMD_CSR_READ32_IN_ADDR_OFST 0 1211#define MC_CMD_CSR_READ32_IN_ADDR_OFST 0
708#define MC_CMD_CSR_READ32_IN_STEP_OFST 4 1212#define MC_CMD_CSR_READ32_IN_STEP_OFST 4
709#define MC_CMD_CSR_READ32_IN_NUMWORDS_OFST 8 1213#define MC_CMD_CSR_READ32_IN_NUMWORDS_OFST 8
@@ -712,6 +1216,7 @@
712#define MC_CMD_CSR_READ32_OUT_LENMIN 4 1216#define MC_CMD_CSR_READ32_OUT_LENMIN 4
713#define MC_CMD_CSR_READ32_OUT_LENMAX 252 1217#define MC_CMD_CSR_READ32_OUT_LENMAX 252
714#define MC_CMD_CSR_READ32_OUT_LEN(num) (0+4*(num)) 1218#define MC_CMD_CSR_READ32_OUT_LEN(num) (0+4*(num))
1219/* The last dword is the status, not a value read */
715#define MC_CMD_CSR_READ32_OUT_BUFFER_OFST 0 1220#define MC_CMD_CSR_READ32_OUT_BUFFER_OFST 0
716#define MC_CMD_CSR_READ32_OUT_BUFFER_LEN 4 1221#define MC_CMD_CSR_READ32_OUT_BUFFER_LEN 4
717#define MC_CMD_CSR_READ32_OUT_BUFFER_MINNUM 1 1222#define MC_CMD_CSR_READ32_OUT_BUFFER_MINNUM 1
@@ -728,6 +1233,7 @@
728#define MC_CMD_CSR_WRITE32_IN_LENMIN 12 1233#define MC_CMD_CSR_WRITE32_IN_LENMIN 12
729#define MC_CMD_CSR_WRITE32_IN_LENMAX 252 1234#define MC_CMD_CSR_WRITE32_IN_LENMAX 252
730#define MC_CMD_CSR_WRITE32_IN_LEN(num) (8+4*(num)) 1235#define MC_CMD_CSR_WRITE32_IN_LEN(num) (8+4*(num))
1236/* Address */
731#define MC_CMD_CSR_WRITE32_IN_ADDR_OFST 0 1237#define MC_CMD_CSR_WRITE32_IN_ADDR_OFST 0
732#define MC_CMD_CSR_WRITE32_IN_STEP_OFST 4 1238#define MC_CMD_CSR_WRITE32_IN_STEP_OFST 4
733#define MC_CMD_CSR_WRITE32_IN_BUFFER_OFST 8 1239#define MC_CMD_CSR_WRITE32_IN_BUFFER_OFST 8
@@ -741,6 +1247,48 @@
741 1247
742 1248
743/***********************************/ 1249/***********************************/
1250/* MC_CMD_HP
1251 * These commands are used for HP related features. They are grouped under one
1252 * MCDI command to avoid creating too many MCDI commands.
1253 */
1254#define MC_CMD_HP 0x54
1255
1256/* MC_CMD_HP_IN msgrequest */
1257#define MC_CMD_HP_IN_LEN 16
1258/* HP OCSD sub-command. When address is not NULL, request activation of OCSD at
1259 * the specified address with the specified interval.When address is NULL,
1260 * INTERVAL is interpreted as a command: 0: stop OCSD / 1: Report OCSD current
1261 * state / 2: (debug) Show temperature reported by one of the supported
1262 * sensors.
1263 */
1264#define MC_CMD_HP_IN_SUBCMD_OFST 0
1265/* enum: OCSD (Option Card Sensor Data) sub-command. */
1266#define MC_CMD_HP_IN_OCSD_SUBCMD 0x0
1267/* enum: Last known valid HP sub-command. */
1268#define MC_CMD_HP_IN_LAST_SUBCMD 0x0
1269/* The address to the array of sensor fields. (Or NULL to use a sub-command.)
1270 */
1271#define MC_CMD_HP_IN_OCSD_ADDR_OFST 4
1272#define MC_CMD_HP_IN_OCSD_ADDR_LEN 8
1273#define MC_CMD_HP_IN_OCSD_ADDR_LO_OFST 4
1274#define MC_CMD_HP_IN_OCSD_ADDR_HI_OFST 8
1275/* The requested update interval, in seconds. (Or the sub-command if ADDR is
1276 * NULL.)
1277 */
1278#define MC_CMD_HP_IN_OCSD_INTERVAL_OFST 12
1279
1280/* MC_CMD_HP_OUT msgresponse */
1281#define MC_CMD_HP_OUT_LEN 4
1282#define MC_CMD_HP_OUT_OCSD_STATUS_OFST 0
1283/* enum: OCSD stopped for this card. */
1284#define MC_CMD_HP_OUT_OCSD_STOPPED 0x1
1285/* enum: OCSD was successfully started with the address provided. */
1286#define MC_CMD_HP_OUT_OCSD_STARTED 0x2
1287/* enum: OCSD was already started for this card. */
1288#define MC_CMD_HP_OUT_OCSD_ALREADY_STARTED 0x3
1289
1290
1291/***********************************/
744/* MC_CMD_STACKINFO 1292/* MC_CMD_STACKINFO
745 * Get stack information. 1293 * Get stack information.
746 */ 1294 */
@@ -753,6 +1301,7 @@
753#define MC_CMD_STACKINFO_OUT_LENMIN 12 1301#define MC_CMD_STACKINFO_OUT_LENMIN 12
754#define MC_CMD_STACKINFO_OUT_LENMAX 252 1302#define MC_CMD_STACKINFO_OUT_LENMAX 252
755#define MC_CMD_STACKINFO_OUT_LEN(num) (0+12*(num)) 1303#define MC_CMD_STACKINFO_OUT_LEN(num) (0+12*(num))
1304/* (thread ptr, stack size, free space) for each thread in system */
756#define MC_CMD_STACKINFO_OUT_THREAD_INFO_OFST 0 1305#define MC_CMD_STACKINFO_OUT_THREAD_INFO_OFST 0
757#define MC_CMD_STACKINFO_OUT_THREAD_INFO_LEN 12 1306#define MC_CMD_STACKINFO_OUT_THREAD_INFO_LEN 12
758#define MC_CMD_STACKINFO_OUT_THREAD_INFO_MINNUM 1 1307#define MC_CMD_STACKINFO_OUT_THREAD_INFO_MINNUM 1
@@ -767,19 +1316,35 @@
767 1316
768/* MC_CMD_MDIO_READ_IN msgrequest */ 1317/* MC_CMD_MDIO_READ_IN msgrequest */
769#define MC_CMD_MDIO_READ_IN_LEN 16 1318#define MC_CMD_MDIO_READ_IN_LEN 16
1319/* Bus number; there are two MDIO buses: one for the internal PHY, and one for
1320 * external devices.
1321 */
770#define MC_CMD_MDIO_READ_IN_BUS_OFST 0 1322#define MC_CMD_MDIO_READ_IN_BUS_OFST 0
771#define MC_CMD_MDIO_BUS_INTERNAL 0x0 /* enum */ 1323/* enum: Internal. */
772#define MC_CMD_MDIO_BUS_EXTERNAL 0x1 /* enum */ 1324#define MC_CMD_MDIO_BUS_INTERNAL 0x0
1325/* enum: External. */
1326#define MC_CMD_MDIO_BUS_EXTERNAL 0x1
1327/* Port address */
773#define MC_CMD_MDIO_READ_IN_PRTAD_OFST 4 1328#define MC_CMD_MDIO_READ_IN_PRTAD_OFST 4
1329/* Device Address or clause 22. */
774#define MC_CMD_MDIO_READ_IN_DEVAD_OFST 8 1330#define MC_CMD_MDIO_READ_IN_DEVAD_OFST 8
775#define MC_CMD_MDIO_CLAUSE22 0x20 /* enum */ 1331/* enum: By default all the MCDI MDIO operations perform clause45 mode. If you
1332 * want to use clause22 then set DEVAD = MC_CMD_MDIO_CLAUSE22.
1333 */
1334#define MC_CMD_MDIO_CLAUSE22 0x20
1335/* Address */
776#define MC_CMD_MDIO_READ_IN_ADDR_OFST 12 1336#define MC_CMD_MDIO_READ_IN_ADDR_OFST 12
777 1337
778/* MC_CMD_MDIO_READ_OUT msgresponse */ 1338/* MC_CMD_MDIO_READ_OUT msgresponse */
779#define MC_CMD_MDIO_READ_OUT_LEN 8 1339#define MC_CMD_MDIO_READ_OUT_LEN 8
1340/* Value */
780#define MC_CMD_MDIO_READ_OUT_VALUE_OFST 0 1341#define MC_CMD_MDIO_READ_OUT_VALUE_OFST 0
1342/* Status the MDIO commands return the raw status bits from the MDIO block. A
1343 * "good" transaction should have the DONE bit set and all other bits clear.
1344 */
781#define MC_CMD_MDIO_READ_OUT_STATUS_OFST 4 1345#define MC_CMD_MDIO_READ_OUT_STATUS_OFST 4
782#define MC_CMD_MDIO_STATUS_GOOD 0x8 /* enum */ 1346/* enum: Good. */
1347#define MC_CMD_MDIO_STATUS_GOOD 0x8
783 1348
784 1349
785/***********************************/ 1350/***********************************/
@@ -790,18 +1355,34 @@
790 1355
791/* MC_CMD_MDIO_WRITE_IN msgrequest */ 1356/* MC_CMD_MDIO_WRITE_IN msgrequest */
792#define MC_CMD_MDIO_WRITE_IN_LEN 20 1357#define MC_CMD_MDIO_WRITE_IN_LEN 20
1358/* Bus number; there are two MDIO buses: one for the internal PHY, and one for
1359 * external devices.
1360 */
793#define MC_CMD_MDIO_WRITE_IN_BUS_OFST 0 1361#define MC_CMD_MDIO_WRITE_IN_BUS_OFST 0
1362/* enum: Internal. */
794/* MC_CMD_MDIO_BUS_INTERNAL 0x0 */ 1363/* MC_CMD_MDIO_BUS_INTERNAL 0x0 */
1364/* enum: External. */
795/* MC_CMD_MDIO_BUS_EXTERNAL 0x1 */ 1365/* MC_CMD_MDIO_BUS_EXTERNAL 0x1 */
1366/* Port address */
796#define MC_CMD_MDIO_WRITE_IN_PRTAD_OFST 4 1367#define MC_CMD_MDIO_WRITE_IN_PRTAD_OFST 4
1368/* Device Address or clause 22. */
797#define MC_CMD_MDIO_WRITE_IN_DEVAD_OFST 8 1369#define MC_CMD_MDIO_WRITE_IN_DEVAD_OFST 8
1370/* enum: By default all the MCDI MDIO operations perform clause45 mode. If you
1371 * want to use clause22 then set DEVAD = MC_CMD_MDIO_CLAUSE22.
1372 */
798/* MC_CMD_MDIO_CLAUSE22 0x20 */ 1373/* MC_CMD_MDIO_CLAUSE22 0x20 */
1374/* Address */
799#define MC_CMD_MDIO_WRITE_IN_ADDR_OFST 12 1375#define MC_CMD_MDIO_WRITE_IN_ADDR_OFST 12
1376/* Value */
800#define MC_CMD_MDIO_WRITE_IN_VALUE_OFST 16 1377#define MC_CMD_MDIO_WRITE_IN_VALUE_OFST 16
801 1378
802/* MC_CMD_MDIO_WRITE_OUT msgresponse */ 1379/* MC_CMD_MDIO_WRITE_OUT msgresponse */
803#define MC_CMD_MDIO_WRITE_OUT_LEN 4 1380#define MC_CMD_MDIO_WRITE_OUT_LEN 4
1381/* Status; the MDIO commands return the raw status bits from the MDIO block. A
1382 * "good" transaction should have the DONE bit set and all other bits clear.
1383 */
804#define MC_CMD_MDIO_WRITE_OUT_STATUS_OFST 0 1384#define MC_CMD_MDIO_WRITE_OUT_STATUS_OFST 0
1385/* enum: Good. */
805/* MC_CMD_MDIO_STATUS_GOOD 0x8 */ 1386/* MC_CMD_MDIO_STATUS_GOOD 0x8 */
806 1387
807 1388
@@ -815,6 +1396,9 @@
815#define MC_CMD_DBI_WRITE_IN_LENMIN 12 1396#define MC_CMD_DBI_WRITE_IN_LENMIN 12
816#define MC_CMD_DBI_WRITE_IN_LENMAX 252 1397#define MC_CMD_DBI_WRITE_IN_LENMAX 252
817#define MC_CMD_DBI_WRITE_IN_LEN(num) (0+12*(num)) 1398#define MC_CMD_DBI_WRITE_IN_LEN(num) (0+12*(num))
1399/* Each write op consists of an address (offset 0), byte enable/VF/CS2 (offset
1400 * 32) and value (offset 64). See MC_CMD_DBIWROP_TYPEDEF.
1401 */
818#define MC_CMD_DBI_WRITE_IN_DBIWROP_OFST 0 1402#define MC_CMD_DBI_WRITE_IN_DBIWROP_OFST 0
819#define MC_CMD_DBI_WRITE_IN_DBIWROP_LEN 12 1403#define MC_CMD_DBI_WRITE_IN_DBIWROP_LEN 12
820#define MC_CMD_DBI_WRITE_IN_DBIWROP_MINNUM 1 1404#define MC_CMD_DBI_WRITE_IN_DBIWROP_MINNUM 1
@@ -828,9 +1412,15 @@
828#define MC_CMD_DBIWROP_TYPEDEF_ADDRESS_OFST 0 1412#define MC_CMD_DBIWROP_TYPEDEF_ADDRESS_OFST 0
829#define MC_CMD_DBIWROP_TYPEDEF_ADDRESS_LBN 0 1413#define MC_CMD_DBIWROP_TYPEDEF_ADDRESS_LBN 0
830#define MC_CMD_DBIWROP_TYPEDEF_ADDRESS_WIDTH 32 1414#define MC_CMD_DBIWROP_TYPEDEF_ADDRESS_WIDTH 32
831#define MC_CMD_DBIWROP_TYPEDEF_BYTE_MASK_OFST 4 1415#define MC_CMD_DBIWROP_TYPEDEF_PARMS_OFST 4
832#define MC_CMD_DBIWROP_TYPEDEF_BYTE_MASK_LBN 32 1416#define MC_CMD_DBIWROP_TYPEDEF_VF_NUM_LBN 16
833#define MC_CMD_DBIWROP_TYPEDEF_BYTE_MASK_WIDTH 32 1417#define MC_CMD_DBIWROP_TYPEDEF_VF_NUM_WIDTH 16
1418#define MC_CMD_DBIWROP_TYPEDEF_VF_ACTIVE_LBN 15
1419#define MC_CMD_DBIWROP_TYPEDEF_VF_ACTIVE_WIDTH 1
1420#define MC_CMD_DBIWROP_TYPEDEF_CS2_LBN 14
1421#define MC_CMD_DBIWROP_TYPEDEF_CS2_WIDTH 1
1422#define MC_CMD_DBIWROP_TYPEDEF_PARMS_LBN 32
1423#define MC_CMD_DBIWROP_TYPEDEF_PARMS_WIDTH 32
834#define MC_CMD_DBIWROP_TYPEDEF_VALUE_OFST 8 1424#define MC_CMD_DBIWROP_TYPEDEF_VALUE_OFST 8
835#define MC_CMD_DBIWROP_TYPEDEF_VALUE_LBN 64 1425#define MC_CMD_DBIWROP_TYPEDEF_VALUE_LBN 64
836#define MC_CMD_DBIWROP_TYPEDEF_VALUE_WIDTH 32 1426#define MC_CMD_DBIWROP_TYPEDEF_VALUE_WIDTH 32
@@ -838,69 +1428,111 @@
838 1428
839/***********************************/ 1429/***********************************/
840/* MC_CMD_PORT_READ32 1430/* MC_CMD_PORT_READ32
841 * Read a 32-bit register from the indirect port register map. 1431 * Read a 32-bit register from the indirect port register map. The port to
1432 * access is implied by the Shared memory channel used.
842 */ 1433 */
843#define MC_CMD_PORT_READ32 0x14 1434#define MC_CMD_PORT_READ32 0x14
844 1435
845/* MC_CMD_PORT_READ32_IN msgrequest */ 1436/* MC_CMD_PORT_READ32_IN msgrequest */
846#define MC_CMD_PORT_READ32_IN_LEN 4 1437#define MC_CMD_PORT_READ32_IN_LEN 4
1438/* Address */
847#define MC_CMD_PORT_READ32_IN_ADDR_OFST 0 1439#define MC_CMD_PORT_READ32_IN_ADDR_OFST 0
848 1440
849/* MC_CMD_PORT_READ32_OUT msgresponse */ 1441/* MC_CMD_PORT_READ32_OUT msgresponse */
850#define MC_CMD_PORT_READ32_OUT_LEN 8 1442#define MC_CMD_PORT_READ32_OUT_LEN 8
1443/* Value */
851#define MC_CMD_PORT_READ32_OUT_VALUE_OFST 0 1444#define MC_CMD_PORT_READ32_OUT_VALUE_OFST 0
1445/* Status */
852#define MC_CMD_PORT_READ32_OUT_STATUS_OFST 4 1446#define MC_CMD_PORT_READ32_OUT_STATUS_OFST 4
853 1447
854 1448
855/***********************************/ 1449/***********************************/
856/* MC_CMD_PORT_WRITE32 1450/* MC_CMD_PORT_WRITE32
857 * Write a 32-bit register to the indirect port register map. 1451 * Write a 32-bit register to the indirect port register map. The port to
1452 * access is implied by the Shared memory channel used.
858 */ 1453 */
859#define MC_CMD_PORT_WRITE32 0x15 1454#define MC_CMD_PORT_WRITE32 0x15
860 1455
861/* MC_CMD_PORT_WRITE32_IN msgrequest */ 1456/* MC_CMD_PORT_WRITE32_IN msgrequest */
862#define MC_CMD_PORT_WRITE32_IN_LEN 8 1457#define MC_CMD_PORT_WRITE32_IN_LEN 8
1458/* Address */
863#define MC_CMD_PORT_WRITE32_IN_ADDR_OFST 0 1459#define MC_CMD_PORT_WRITE32_IN_ADDR_OFST 0
1460/* Value */
864#define MC_CMD_PORT_WRITE32_IN_VALUE_OFST 4 1461#define MC_CMD_PORT_WRITE32_IN_VALUE_OFST 4
865 1462
866/* MC_CMD_PORT_WRITE32_OUT msgresponse */ 1463/* MC_CMD_PORT_WRITE32_OUT msgresponse */
867#define MC_CMD_PORT_WRITE32_OUT_LEN 4 1464#define MC_CMD_PORT_WRITE32_OUT_LEN 4
1465/* Status */
868#define MC_CMD_PORT_WRITE32_OUT_STATUS_OFST 0 1466#define MC_CMD_PORT_WRITE32_OUT_STATUS_OFST 0
869 1467
870 1468
871/***********************************/ 1469/***********************************/
872/* MC_CMD_PORT_READ128 1470/* MC_CMD_PORT_READ128
873 * Read a 128-bit register from the indirect port register map. 1471 * Read a 128-bit register from the indirect port register map. The port to
1472 * access is implied by the Shared memory channel used.
874 */ 1473 */
875#define MC_CMD_PORT_READ128 0x16 1474#define MC_CMD_PORT_READ128 0x16
876 1475
877/* MC_CMD_PORT_READ128_IN msgrequest */ 1476/* MC_CMD_PORT_READ128_IN msgrequest */
878#define MC_CMD_PORT_READ128_IN_LEN 4 1477#define MC_CMD_PORT_READ128_IN_LEN 4
1478/* Address */
879#define MC_CMD_PORT_READ128_IN_ADDR_OFST 0 1479#define MC_CMD_PORT_READ128_IN_ADDR_OFST 0
880 1480
881/* MC_CMD_PORT_READ128_OUT msgresponse */ 1481/* MC_CMD_PORT_READ128_OUT msgresponse */
882#define MC_CMD_PORT_READ128_OUT_LEN 20 1482#define MC_CMD_PORT_READ128_OUT_LEN 20
1483/* Value */
883#define MC_CMD_PORT_READ128_OUT_VALUE_OFST 0 1484#define MC_CMD_PORT_READ128_OUT_VALUE_OFST 0
884#define MC_CMD_PORT_READ128_OUT_VALUE_LEN 16 1485#define MC_CMD_PORT_READ128_OUT_VALUE_LEN 16
1486/* Status */
885#define MC_CMD_PORT_READ128_OUT_STATUS_OFST 16 1487#define MC_CMD_PORT_READ128_OUT_STATUS_OFST 16
886 1488
887 1489
888/***********************************/ 1490/***********************************/
889/* MC_CMD_PORT_WRITE128 1491/* MC_CMD_PORT_WRITE128
890 * Write a 128-bit register to the indirect port register map. 1492 * Write a 128-bit register to the indirect port register map. The port to
1493 * access is implied by the Shared memory channel used.
891 */ 1494 */
892#define MC_CMD_PORT_WRITE128 0x17 1495#define MC_CMD_PORT_WRITE128 0x17
893 1496
894/* MC_CMD_PORT_WRITE128_IN msgrequest */ 1497/* MC_CMD_PORT_WRITE128_IN msgrequest */
895#define MC_CMD_PORT_WRITE128_IN_LEN 20 1498#define MC_CMD_PORT_WRITE128_IN_LEN 20
1499/* Address */
896#define MC_CMD_PORT_WRITE128_IN_ADDR_OFST 0 1500#define MC_CMD_PORT_WRITE128_IN_ADDR_OFST 0
1501/* Value */
897#define MC_CMD_PORT_WRITE128_IN_VALUE_OFST 4 1502#define MC_CMD_PORT_WRITE128_IN_VALUE_OFST 4
898#define MC_CMD_PORT_WRITE128_IN_VALUE_LEN 16 1503#define MC_CMD_PORT_WRITE128_IN_VALUE_LEN 16
899 1504
900/* MC_CMD_PORT_WRITE128_OUT msgresponse */ 1505/* MC_CMD_PORT_WRITE128_OUT msgresponse */
901#define MC_CMD_PORT_WRITE128_OUT_LEN 4 1506#define MC_CMD_PORT_WRITE128_OUT_LEN 4
1507/* Status */
902#define MC_CMD_PORT_WRITE128_OUT_STATUS_OFST 0 1508#define MC_CMD_PORT_WRITE128_OUT_STATUS_OFST 0
903 1509
1510/* MC_CMD_CAPABILITIES structuredef */
1511#define MC_CMD_CAPABILITIES_LEN 4
1512/* Small buf table. */
1513#define MC_CMD_CAPABILITIES_SMALL_BUF_TBL_LBN 0
1514#define MC_CMD_CAPABILITIES_SMALL_BUF_TBL_WIDTH 1
1515/* Turbo mode (for Maranello). */
1516#define MC_CMD_CAPABILITIES_TURBO_LBN 1
1517#define MC_CMD_CAPABILITIES_TURBO_WIDTH 1
1518/* Turbo mode active (for Maranello). */
1519#define MC_CMD_CAPABILITIES_TURBO_ACTIVE_LBN 2
1520#define MC_CMD_CAPABILITIES_TURBO_ACTIVE_WIDTH 1
1521/* PTP offload. */
1522#define MC_CMD_CAPABILITIES_PTP_LBN 3
1523#define MC_CMD_CAPABILITIES_PTP_WIDTH 1
1524/* AOE mode. */
1525#define MC_CMD_CAPABILITIES_AOE_LBN 4
1526#define MC_CMD_CAPABILITIES_AOE_WIDTH 1
1527/* AOE mode active. */
1528#define MC_CMD_CAPABILITIES_AOE_ACTIVE_LBN 5
1529#define MC_CMD_CAPABILITIES_AOE_ACTIVE_WIDTH 1
1530/* AOE mode active. */
1531#define MC_CMD_CAPABILITIES_FC_ACTIVE_LBN 6
1532#define MC_CMD_CAPABILITIES_FC_ACTIVE_WIDTH 1
1533#define MC_CMD_CAPABILITIES_RESERVED_LBN 7
1534#define MC_CMD_CAPABILITIES_RESERVED_WIDTH 25
1535
904 1536
905/***********************************/ 1537/***********************************/
906/* MC_CMD_GET_BOARD_CFG 1538/* MC_CMD_GET_BOARD_CFG
@@ -918,18 +1550,10 @@
918#define MC_CMD_GET_BOARD_CFG_OUT_BOARD_TYPE_OFST 0 1550#define MC_CMD_GET_BOARD_CFG_OUT_BOARD_TYPE_OFST 0
919#define MC_CMD_GET_BOARD_CFG_OUT_BOARD_NAME_OFST 4 1551#define MC_CMD_GET_BOARD_CFG_OUT_BOARD_NAME_OFST 4
920#define MC_CMD_GET_BOARD_CFG_OUT_BOARD_NAME_LEN 32 1552#define MC_CMD_GET_BOARD_CFG_OUT_BOARD_NAME_LEN 32
1553/* See MC_CMD_CAPABILITIES */
921#define MC_CMD_GET_BOARD_CFG_OUT_CAPABILITIES_PORT0_OFST 36 1554#define MC_CMD_GET_BOARD_CFG_OUT_CAPABILITIES_PORT0_OFST 36
922#define MC_CMD_CAPABILITIES_SMALL_BUF_TBL_LBN 0x0 /* enum */ 1555/* See MC_CMD_CAPABILITIES */
923#define MC_CMD_CAPABILITIES_SMALL_BUF_TBL_WIDTH 0x1 /* enum */
924#define MC_CMD_CAPABILITIES_TURBO_LBN 0x1 /* enum */
925#define MC_CMD_CAPABILITIES_TURBO_WIDTH 0x1 /* enum */
926#define MC_CMD_CAPABILITIES_TURBO_ACTIVE_LBN 0x2 /* enum */
927#define MC_CMD_CAPABILITIES_TURBO_ACTIVE_WIDTH 0x1 /* enum */
928#define MC_CMD_CAPABILITIES_PTP_LBN 0x3 /* enum */
929#define MC_CMD_CAPABILITIES_PTP_WIDTH 0x1 /* enum */
930#define MC_CMD_GET_BOARD_CFG_OUT_CAPABILITIES_PORT1_OFST 40 1556#define MC_CMD_GET_BOARD_CFG_OUT_CAPABILITIES_PORT1_OFST 40
931/* Enum values, see field(s): */
932/* CAPABILITIES_PORT0 */
933#define MC_CMD_GET_BOARD_CFG_OUT_MAC_ADDR_BASE_PORT0_OFST 44 1557#define MC_CMD_GET_BOARD_CFG_OUT_MAC_ADDR_BASE_PORT0_OFST 44
934#define MC_CMD_GET_BOARD_CFG_OUT_MAC_ADDR_BASE_PORT0_LEN 6 1558#define MC_CMD_GET_BOARD_CFG_OUT_MAC_ADDR_BASE_PORT0_LEN 6
935#define MC_CMD_GET_BOARD_CFG_OUT_MAC_ADDR_BASE_PORT1_OFST 50 1559#define MC_CMD_GET_BOARD_CFG_OUT_MAC_ADDR_BASE_PORT1_OFST 50
@@ -938,6 +1562,11 @@
938#define MC_CMD_GET_BOARD_CFG_OUT_MAC_COUNT_PORT1_OFST 60 1562#define MC_CMD_GET_BOARD_CFG_OUT_MAC_COUNT_PORT1_OFST 60
939#define MC_CMD_GET_BOARD_CFG_OUT_MAC_STRIDE_PORT0_OFST 64 1563#define MC_CMD_GET_BOARD_CFG_OUT_MAC_STRIDE_PORT0_OFST 64
940#define MC_CMD_GET_BOARD_CFG_OUT_MAC_STRIDE_PORT1_OFST 68 1564#define MC_CMD_GET_BOARD_CFG_OUT_MAC_STRIDE_PORT1_OFST 68
1565/* This field contains a 16-bit value for each of the types of NVRAM area. The
1566 * values are defined in the firmware/mc/platform/.c file for a specific board
1567 * type, but otherwise have no meaning to the MC; they are used by the driver
1568 * to manage selection of appropriate firmware updates.
1569 */
941#define MC_CMD_GET_BOARD_CFG_OUT_FW_SUBTYPE_LIST_OFST 72 1570#define MC_CMD_GET_BOARD_CFG_OUT_FW_SUBTYPE_LIST_OFST 72
942#define MC_CMD_GET_BOARD_CFG_OUT_FW_SUBTYPE_LIST_LEN 2 1571#define MC_CMD_GET_BOARD_CFG_OUT_FW_SUBTYPE_LIST_LEN 2
943#define MC_CMD_GET_BOARD_CFG_OUT_FW_SUBTYPE_LIST_MINNUM 12 1572#define MC_CMD_GET_BOARD_CFG_OUT_FW_SUBTYPE_LIST_MINNUM 12
@@ -946,7 +1575,7 @@
946 1575
947/***********************************/ 1576/***********************************/
948/* MC_CMD_DBI_READX 1577/* MC_CMD_DBI_READX
949 * Read DBI register(s). 1578 * Read DBI register(s) -- extended functionality
950 */ 1579 */
951#define MC_CMD_DBI_READX 0x19 1580#define MC_CMD_DBI_READX 0x19
952 1581
@@ -954,6 +1583,7 @@
954#define MC_CMD_DBI_READX_IN_LENMIN 8 1583#define MC_CMD_DBI_READX_IN_LENMIN 8
955#define MC_CMD_DBI_READX_IN_LENMAX 248 1584#define MC_CMD_DBI_READX_IN_LENMAX 248
956#define MC_CMD_DBI_READX_IN_LEN(num) (0+8*(num)) 1585#define MC_CMD_DBI_READX_IN_LEN(num) (0+8*(num))
1586/* Each Read op consists of an address (offset 0), VF/CS2) */
957#define MC_CMD_DBI_READX_IN_DBIRDOP_OFST 0 1587#define MC_CMD_DBI_READX_IN_DBIRDOP_OFST 0
958#define MC_CMD_DBI_READX_IN_DBIRDOP_LEN 8 1588#define MC_CMD_DBI_READX_IN_DBIRDOP_LEN 8
959#define MC_CMD_DBI_READX_IN_DBIRDOP_LO_OFST 0 1589#define MC_CMD_DBI_READX_IN_DBIRDOP_LO_OFST 0
@@ -965,11 +1595,27 @@
965#define MC_CMD_DBI_READX_OUT_LENMIN 4 1595#define MC_CMD_DBI_READX_OUT_LENMIN 4
966#define MC_CMD_DBI_READX_OUT_LENMAX 252 1596#define MC_CMD_DBI_READX_OUT_LENMAX 252
967#define MC_CMD_DBI_READX_OUT_LEN(num) (0+4*(num)) 1597#define MC_CMD_DBI_READX_OUT_LEN(num) (0+4*(num))
1598/* Value */
968#define MC_CMD_DBI_READX_OUT_VALUE_OFST 0 1599#define MC_CMD_DBI_READX_OUT_VALUE_OFST 0
969#define MC_CMD_DBI_READX_OUT_VALUE_LEN 4 1600#define MC_CMD_DBI_READX_OUT_VALUE_LEN 4
970#define MC_CMD_DBI_READX_OUT_VALUE_MINNUM 1 1601#define MC_CMD_DBI_READX_OUT_VALUE_MINNUM 1
971#define MC_CMD_DBI_READX_OUT_VALUE_MAXNUM 63 1602#define MC_CMD_DBI_READX_OUT_VALUE_MAXNUM 63
972 1603
1604/* MC_CMD_DBIRDOP_TYPEDEF structuredef */
1605#define MC_CMD_DBIRDOP_TYPEDEF_LEN 8
1606#define MC_CMD_DBIRDOP_TYPEDEF_ADDRESS_OFST 0
1607#define MC_CMD_DBIRDOP_TYPEDEF_ADDRESS_LBN 0
1608#define MC_CMD_DBIRDOP_TYPEDEF_ADDRESS_WIDTH 32
1609#define MC_CMD_DBIRDOP_TYPEDEF_PARMS_OFST 4
1610#define MC_CMD_DBIRDOP_TYPEDEF_VF_NUM_LBN 16
1611#define MC_CMD_DBIRDOP_TYPEDEF_VF_NUM_WIDTH 16
1612#define MC_CMD_DBIRDOP_TYPEDEF_VF_ACTIVE_LBN 15
1613#define MC_CMD_DBIRDOP_TYPEDEF_VF_ACTIVE_WIDTH 1
1614#define MC_CMD_DBIRDOP_TYPEDEF_CS2_LBN 14
1615#define MC_CMD_DBIRDOP_TYPEDEF_CS2_WIDTH 1
1616#define MC_CMD_DBIRDOP_TYPEDEF_PARMS_LBN 32
1617#define MC_CMD_DBIRDOP_TYPEDEF_PARMS_WIDTH 32
1618
973 1619
974/***********************************/ 1620/***********************************/
975/* MC_CMD_SET_RAND_SEED 1621/* MC_CMD_SET_RAND_SEED
@@ -979,6 +1625,7 @@
979 1625
980/* MC_CMD_SET_RAND_SEED_IN msgrequest */ 1626/* MC_CMD_SET_RAND_SEED_IN msgrequest */
981#define MC_CMD_SET_RAND_SEED_IN_LEN 16 1627#define MC_CMD_SET_RAND_SEED_IN_LEN 16
1628/* Seed value. */
982#define MC_CMD_SET_RAND_SEED_IN_SEED_OFST 0 1629#define MC_CMD_SET_RAND_SEED_IN_SEED_OFST 0
983#define MC_CMD_SET_RAND_SEED_IN_SEED_LEN 16 1630#define MC_CMD_SET_RAND_SEED_IN_SEED_LEN 16
984 1631
@@ -988,7 +1635,7 @@
988 1635
989/***********************************/ 1636/***********************************/
990/* MC_CMD_LTSSM_HIST 1637/* MC_CMD_LTSSM_HIST
991 * Retrieve the history of the PCIE LTSSM. 1638 * Retrieve the history of the LTSSM, if the build supports it.
992 */ 1639 */
993#define MC_CMD_LTSSM_HIST 0x1b 1640#define MC_CMD_LTSSM_HIST 0x1b
994 1641
@@ -999,6 +1646,7 @@
999#define MC_CMD_LTSSM_HIST_OUT_LENMIN 0 1646#define MC_CMD_LTSSM_HIST_OUT_LENMIN 0
1000#define MC_CMD_LTSSM_HIST_OUT_LENMAX 252 1647#define MC_CMD_LTSSM_HIST_OUT_LENMAX 252
1001#define MC_CMD_LTSSM_HIST_OUT_LEN(num) (0+4*(num)) 1648#define MC_CMD_LTSSM_HIST_OUT_LEN(num) (0+4*(num))
1649/* variable number of LTSSM values, as bytes. The history is read-to-clear. */
1002#define MC_CMD_LTSSM_HIST_OUT_DATA_OFST 0 1650#define MC_CMD_LTSSM_HIST_OUT_DATA_OFST 0
1003#define MC_CMD_LTSSM_HIST_OUT_DATA_LEN 4 1651#define MC_CMD_LTSSM_HIST_OUT_DATA_LEN 4
1004#define MC_CMD_LTSSM_HIST_OUT_DATA_MINNUM 0 1652#define MC_CMD_LTSSM_HIST_OUT_DATA_MINNUM 0
@@ -1007,41 +1655,47 @@
1007 1655
1008/***********************************/ 1656/***********************************/
1009/* MC_CMD_DRV_ATTACH 1657/* MC_CMD_DRV_ATTACH
1010 * Inform MCPU that this port is managed on the host. 1658 * Inform MCPU that this port is managed on the host (i.e. driver active). For
1659 * Huntington, also request the preferred datapath firmware to use if possible
1660 * (it may not be possible for this request to be fulfilled; the driver must
1661 * issue a subsequent MC_CMD_GET_CAPABILITIES command to determine which
1662 * features are actually available). The FIRMWARE_ID field is ignored by older
1663 * platforms.
1011 */ 1664 */
1012#define MC_CMD_DRV_ATTACH 0x1c 1665#define MC_CMD_DRV_ATTACH 0x1c
1013 1666
1014/* MC_CMD_DRV_ATTACH_IN msgrequest */ 1667/* MC_CMD_DRV_ATTACH_IN msgrequest */
1015#define MC_CMD_DRV_ATTACH_IN_LEN 8 1668#define MC_CMD_DRV_ATTACH_IN_LEN 12
1669/* new state (0=detached, 1=attached) to set if UPDATE=1 */
1016#define MC_CMD_DRV_ATTACH_IN_NEW_STATE_OFST 0 1670#define MC_CMD_DRV_ATTACH_IN_NEW_STATE_OFST 0
1671/* 1 to set new state, or 0 to just report the existing state */
1017#define MC_CMD_DRV_ATTACH_IN_UPDATE_OFST 4 1672#define MC_CMD_DRV_ATTACH_IN_UPDATE_OFST 4
1673/* preferred datapath firmware (for Huntington; ignored for Siena) */
1674#define MC_CMD_DRV_ATTACH_IN_FIRMWARE_ID_OFST 8
1675/* enum: Prefer to use full featured firmware */
1676#define MC_CMD_FW_FULL_FEATURED 0x0
1677/* enum: Prefer to use firmware with fewer features but lower latency */
1678#define MC_CMD_FW_LOW_LATENCY 0x1
1018 1679
1019/* MC_CMD_DRV_ATTACH_OUT msgresponse */ 1680/* MC_CMD_DRV_ATTACH_OUT msgresponse */
1020#define MC_CMD_DRV_ATTACH_OUT_LEN 4 1681#define MC_CMD_DRV_ATTACH_OUT_LEN 4
1682/* previous or existing state (0=detached, 1=attached) */
1021#define MC_CMD_DRV_ATTACH_OUT_OLD_STATE_OFST 0 1683#define MC_CMD_DRV_ATTACH_OUT_OLD_STATE_OFST 0
1022 1684
1023 1685/* MC_CMD_DRV_ATTACH_EXT_OUT msgresponse */
1024/***********************************/ 1686#define MC_CMD_DRV_ATTACH_EXT_OUT_LEN 8
1025/* MC_CMD_NCSI_PROD 1687/* previous or existing state (0=detached, 1=attached) */
1026 * Trigger an NC-SI event. 1688#define MC_CMD_DRV_ATTACH_EXT_OUT_OLD_STATE_OFST 0
1689/* Flags associated with this function */
1690#define MC_CMD_DRV_ATTACH_EXT_OUT_FUNC_FLAGS_OFST 4
1691/* enum: Labels the lowest-numbered function visible to the OS */
1692#define MC_CMD_DRV_ATTACH_EXT_OUT_FLAG_PRIMARY 0x0
1693/* enum: The function can control the link state of the physical port it is
1694 * bound to.
1027 */ 1695 */
1028#define MC_CMD_NCSI_PROD 0x1d 1696#define MC_CMD_DRV_ATTACH_EXT_OUT_FLAG_LINKCTRL 0x1
1029 1697/* enum: The function can perform privileged operations */
1030/* MC_CMD_NCSI_PROD_IN msgrequest */ 1698#define MC_CMD_DRV_ATTACH_EXT_OUT_FLAG_TRUSTED 0x2
1031#define MC_CMD_NCSI_PROD_IN_LEN 4
1032#define MC_CMD_NCSI_PROD_IN_EVENTS_OFST 0
1033#define MC_CMD_NCSI_PROD_LINKCHANGE 0x0 /* enum */
1034#define MC_CMD_NCSI_PROD_RESET 0x1 /* enum */
1035#define MC_CMD_NCSI_PROD_DRVATTACH 0x2 /* enum */
1036#define MC_CMD_NCSI_PROD_IN_LINKCHANGE_LBN 0
1037#define MC_CMD_NCSI_PROD_IN_LINKCHANGE_WIDTH 1
1038#define MC_CMD_NCSI_PROD_IN_RESET_LBN 1
1039#define MC_CMD_NCSI_PROD_IN_RESET_WIDTH 1
1040#define MC_CMD_NCSI_PROD_IN_DRVATTACH_LBN 2
1041#define MC_CMD_NCSI_PROD_IN_DRVATTACH_WIDTH 1
1042
1043/* MC_CMD_NCSI_PROD_OUT msgresponse */
1044#define MC_CMD_NCSI_PROD_OUT_LEN 0
1045 1699
1046 1700
1047/***********************************/ 1701/***********************************/
@@ -1052,6 +1706,7 @@
1052 1706
1053/* MC_CMD_SHMUART_IN msgrequest */ 1707/* MC_CMD_SHMUART_IN msgrequest */
1054#define MC_CMD_SHMUART_IN_LEN 4 1708#define MC_CMD_SHMUART_IN_LEN 4
1709/* ??? */
1055#define MC_CMD_SHMUART_IN_FLAG_OFST 0 1710#define MC_CMD_SHMUART_IN_FLAG_OFST 0
1056 1711
1057/* MC_CMD_SHMUART_OUT msgresponse */ 1712/* MC_CMD_SHMUART_OUT msgresponse */
@@ -1059,13 +1714,33 @@
1059 1714
1060 1715
1061/***********************************/ 1716/***********************************/
1717/* MC_CMD_PORT_RESET
1718 * Generic per-port reset. There is no equivalent for per-board reset. Locks
1719 * required: None; Return code: 0, ETIME. NOTE: This command is deprecated -
1720 * use MC_CMD_ENTITY_RESET instead.
1721 */
1722#define MC_CMD_PORT_RESET 0x20
1723
1724/* MC_CMD_PORT_RESET_IN msgrequest */
1725#define MC_CMD_PORT_RESET_IN_LEN 0
1726
1727/* MC_CMD_PORT_RESET_OUT msgresponse */
1728#define MC_CMD_PORT_RESET_OUT_LEN 0
1729
1730
1731/***********************************/
1062/* MC_CMD_ENTITY_RESET 1732/* MC_CMD_ENTITY_RESET
1063 * Generic per-port reset. 1733 * Generic per-resource reset. There is no equivalent for per-board reset.
1734 * Locks required: None; Return code: 0, ETIME. NOTE: This command is an
1735 * extended version of the deprecated MC_CMD_PORT_RESET with added fields.
1064 */ 1736 */
1065#define MC_CMD_ENTITY_RESET 0x20 1737#define MC_CMD_ENTITY_RESET 0x20
1066 1738
1067/* MC_CMD_ENTITY_RESET_IN msgrequest */ 1739/* MC_CMD_ENTITY_RESET_IN msgrequest */
1068#define MC_CMD_ENTITY_RESET_IN_LEN 4 1740#define MC_CMD_ENTITY_RESET_IN_LEN 4
1741/* Optional flags field. Omitting this will perform a "legacy" reset action
1742 * (TBD).
1743 */
1069#define MC_CMD_ENTITY_RESET_IN_FLAG_OFST 0 1744#define MC_CMD_ENTITY_RESET_IN_FLAG_OFST 0
1070#define MC_CMD_ENTITY_RESET_IN_FUNCTION_RESOURCE_RESET_LBN 0 1745#define MC_CMD_ENTITY_RESET_IN_FUNCTION_RESOURCE_RESET_LBN 0
1071#define MC_CMD_ENTITY_RESET_IN_FUNCTION_RESOURCE_RESET_WIDTH 1 1746#define MC_CMD_ENTITY_RESET_IN_FUNCTION_RESOURCE_RESET_WIDTH 1
@@ -1082,7 +1757,9 @@
1082 1757
1083/* MC_CMD_PCIE_CREDITS_IN msgrequest */ 1758/* MC_CMD_PCIE_CREDITS_IN msgrequest */
1084#define MC_CMD_PCIE_CREDITS_IN_LEN 8 1759#define MC_CMD_PCIE_CREDITS_IN_LEN 8
1760/* poll period. 0 is disabled */
1085#define MC_CMD_PCIE_CREDITS_IN_POLL_PERIOD_OFST 0 1761#define MC_CMD_PCIE_CREDITS_IN_POLL_PERIOD_OFST 0
1762/* wipe statistics */
1086#define MC_CMD_PCIE_CREDITS_IN_WIPE_OFST 4 1763#define MC_CMD_PCIE_CREDITS_IN_WIPE_OFST 4
1087 1764
1088/* MC_CMD_PCIE_CREDITS_OUT msgresponse */ 1765/* MC_CMD_PCIE_CREDITS_OUT msgresponse */
@@ -1143,7 +1820,7 @@
1143 1820
1144/***********************************/ 1821/***********************************/
1145/* MC_CMD_PUTS 1822/* MC_CMD_PUTS
1146 * puts(3) implementation over MCDI 1823 * Copy the given ASCII string out onto UART and/or out of the network port.
1147 */ 1824 */
1148#define MC_CMD_PUTS 0x23 1825#define MC_CMD_PUTS 0x23
1149 1826
@@ -1169,7 +1846,8 @@
1169 1846
1170/***********************************/ 1847/***********************************/
1171/* MC_CMD_GET_PHY_CFG 1848/* MC_CMD_GET_PHY_CFG
1172 * Report PHY configuration. 1849 * Report PHY configuration. This guarantees to succeed even if the PHY is in a
1850 * 'zombie' state. Locks required: None
1173 */ 1851 */
1174#define MC_CMD_GET_PHY_CFG 0x24 1852#define MC_CMD_GET_PHY_CFG 0x24
1175 1853
@@ -1178,6 +1856,7 @@
1178 1856
1179/* MC_CMD_GET_PHY_CFG_OUT msgresponse */ 1857/* MC_CMD_GET_PHY_CFG_OUT msgresponse */
1180#define MC_CMD_GET_PHY_CFG_OUT_LEN 72 1858#define MC_CMD_GET_PHY_CFG_OUT_LEN 72
1859/* flags */
1181#define MC_CMD_GET_PHY_CFG_OUT_FLAGS_OFST 0 1860#define MC_CMD_GET_PHY_CFG_OUT_FLAGS_OFST 0
1182#define MC_CMD_GET_PHY_CFG_OUT_PRESENT_LBN 0 1861#define MC_CMD_GET_PHY_CFG_OUT_PRESENT_LBN 0
1183#define MC_CMD_GET_PHY_CFG_OUT_PRESENT_WIDTH 1 1862#define MC_CMD_GET_PHY_CFG_OUT_PRESENT_WIDTH 1
@@ -1193,7 +1872,9 @@
1193#define MC_CMD_GET_PHY_CFG_OUT_TXDIS_WIDTH 1 1872#define MC_CMD_GET_PHY_CFG_OUT_TXDIS_WIDTH 1
1194#define MC_CMD_GET_PHY_CFG_OUT_BIST_LBN 6 1873#define MC_CMD_GET_PHY_CFG_OUT_BIST_LBN 6
1195#define MC_CMD_GET_PHY_CFG_OUT_BIST_WIDTH 1 1874#define MC_CMD_GET_PHY_CFG_OUT_BIST_WIDTH 1
1875/* ?? */
1196#define MC_CMD_GET_PHY_CFG_OUT_TYPE_OFST 4 1876#define MC_CMD_GET_PHY_CFG_OUT_TYPE_OFST 4
1877/* Bitmask of supported capabilities */
1197#define MC_CMD_GET_PHY_CFG_OUT_SUPPORTED_CAP_OFST 8 1878#define MC_CMD_GET_PHY_CFG_OUT_SUPPORTED_CAP_OFST 8
1198#define MC_CMD_PHY_CAP_10HDX_LBN 1 1879#define MC_CMD_PHY_CAP_10HDX_LBN 1
1199#define MC_CMD_PHY_CAP_10HDX_WIDTH 1 1880#define MC_CMD_PHY_CAP_10HDX_WIDTH 1
@@ -1215,20 +1896,36 @@
1215#define MC_CMD_PHY_CAP_ASYM_WIDTH 1 1896#define MC_CMD_PHY_CAP_ASYM_WIDTH 1
1216#define MC_CMD_PHY_CAP_AN_LBN 10 1897#define MC_CMD_PHY_CAP_AN_LBN 10
1217#define MC_CMD_PHY_CAP_AN_WIDTH 1 1898#define MC_CMD_PHY_CAP_AN_WIDTH 1
1899#define MC_CMD_PHY_CAP_40000FDX_LBN 11
1900#define MC_CMD_PHY_CAP_40000FDX_WIDTH 1
1901#define MC_CMD_PHY_CAP_DDM_LBN 12
1902#define MC_CMD_PHY_CAP_DDM_WIDTH 1
1903/* ?? */
1218#define MC_CMD_GET_PHY_CFG_OUT_CHANNEL_OFST 12 1904#define MC_CMD_GET_PHY_CFG_OUT_CHANNEL_OFST 12
1905/* ?? */
1219#define MC_CMD_GET_PHY_CFG_OUT_PRT_OFST 16 1906#define MC_CMD_GET_PHY_CFG_OUT_PRT_OFST 16
1907/* ?? */
1220#define MC_CMD_GET_PHY_CFG_OUT_STATS_MASK_OFST 20 1908#define MC_CMD_GET_PHY_CFG_OUT_STATS_MASK_OFST 20
1909/* ?? */
1221#define MC_CMD_GET_PHY_CFG_OUT_NAME_OFST 24 1910#define MC_CMD_GET_PHY_CFG_OUT_NAME_OFST 24
1222#define MC_CMD_GET_PHY_CFG_OUT_NAME_LEN 20 1911#define MC_CMD_GET_PHY_CFG_OUT_NAME_LEN 20
1912/* ?? */
1223#define MC_CMD_GET_PHY_CFG_OUT_MEDIA_TYPE_OFST 44 1913#define MC_CMD_GET_PHY_CFG_OUT_MEDIA_TYPE_OFST 44
1224#define MC_CMD_MEDIA_XAUI 0x1 /* enum */ 1914/* enum: Xaui. */
1225#define MC_CMD_MEDIA_CX4 0x2 /* enum */ 1915#define MC_CMD_MEDIA_XAUI 0x1
1226#define MC_CMD_MEDIA_KX4 0x3 /* enum */ 1916/* enum: CX4. */
1227#define MC_CMD_MEDIA_XFP 0x4 /* enum */ 1917#define MC_CMD_MEDIA_CX4 0x2
1228#define MC_CMD_MEDIA_SFP_PLUS 0x5 /* enum */ 1918/* enum: KX4. */
1229#define MC_CMD_MEDIA_BASE_T 0x6 /* enum */ 1919#define MC_CMD_MEDIA_KX4 0x3
1920/* enum: XFP Far. */
1921#define MC_CMD_MEDIA_XFP 0x4
1922/* enum: SFP+. */
1923#define MC_CMD_MEDIA_SFP_PLUS 0x5
1924/* enum: 10GBaseT. */
1925#define MC_CMD_MEDIA_BASE_T 0x6
1230#define MC_CMD_GET_PHY_CFG_OUT_MMD_MASK_OFST 48 1926#define MC_CMD_GET_PHY_CFG_OUT_MMD_MASK_OFST 48
1231#define MC_CMD_MMD_CLAUSE22 0x0 /* enum */ 1927/* enum: Native clause 22 */
1928#define MC_CMD_MMD_CLAUSE22 0x0
1232#define MC_CMD_MMD_CLAUSE45_PMAPMD 0x1 /* enum */ 1929#define MC_CMD_MMD_CLAUSE45_PMAPMD 0x1 /* enum */
1233#define MC_CMD_MMD_CLAUSE45_WIS 0x2 /* enum */ 1930#define MC_CMD_MMD_CLAUSE45_WIS 0x2 /* enum */
1234#define MC_CMD_MMD_CLAUSE45_PCS 0x3 /* enum */ 1931#define MC_CMD_MMD_CLAUSE45_PCS 0x3 /* enum */
@@ -1236,7 +1933,8 @@
1236#define MC_CMD_MMD_CLAUSE45_DTEXS 0x5 /* enum */ 1933#define MC_CMD_MMD_CLAUSE45_DTEXS 0x5 /* enum */
1237#define MC_CMD_MMD_CLAUSE45_TC 0x6 /* enum */ 1934#define MC_CMD_MMD_CLAUSE45_TC 0x6 /* enum */
1238#define MC_CMD_MMD_CLAUSE45_AN 0x7 /* enum */ 1935#define MC_CMD_MMD_CLAUSE45_AN 0x7 /* enum */
1239#define MC_CMD_MMD_CLAUSE45_C22EXT 0x1d /* enum */ 1936/* enum: Clause22 proxied over clause45 by PHY. */
1937#define MC_CMD_MMD_CLAUSE45_C22EXT 0x1d
1240#define MC_CMD_MMD_CLAUSE45_VEND1 0x1e /* enum */ 1938#define MC_CMD_MMD_CLAUSE45_VEND1 0x1e /* enum */
1241#define MC_CMD_MMD_CLAUSE45_VEND2 0x1f /* enum */ 1939#define MC_CMD_MMD_CLAUSE45_VEND2 0x1f /* enum */
1242#define MC_CMD_GET_PHY_CFG_OUT_REVISION_OFST 52 1940#define MC_CMD_GET_PHY_CFG_OUT_REVISION_OFST 52
@@ -1245,18 +1943,31 @@
1245 1943
1246/***********************************/ 1944/***********************************/
1247/* MC_CMD_START_BIST 1945/* MC_CMD_START_BIST
1248 * Start a BIST test on the PHY. 1946 * Start a BIST test on the PHY. Locks required: PHY_LOCK if doing a PHY BIST
1947 * Return code: 0, EINVAL, EACCES (if PHY_LOCK is not held)
1249 */ 1948 */
1250#define MC_CMD_START_BIST 0x25 1949#define MC_CMD_START_BIST 0x25
1251 1950
1252/* MC_CMD_START_BIST_IN msgrequest */ 1951/* MC_CMD_START_BIST_IN msgrequest */
1253#define MC_CMD_START_BIST_IN_LEN 4 1952#define MC_CMD_START_BIST_IN_LEN 4
1953/* Type of test. */
1254#define MC_CMD_START_BIST_IN_TYPE_OFST 0 1954#define MC_CMD_START_BIST_IN_TYPE_OFST 0
1255#define MC_CMD_PHY_BIST_CABLE_SHORT 0x1 /* enum */ 1955/* enum: Run the PHY's short cable BIST. */
1256#define MC_CMD_PHY_BIST_CABLE_LONG 0x2 /* enum */ 1956#define MC_CMD_PHY_BIST_CABLE_SHORT 0x1
1257#define MC_CMD_BPX_SERDES_BIST 0x3 /* enum */ 1957/* enum: Run the PHY's long cable BIST. */
1258#define MC_CMD_MC_LOOPBACK_BIST 0x4 /* enum */ 1958#define MC_CMD_PHY_BIST_CABLE_LONG 0x2
1259#define MC_CMD_PHY_BIST 0x5 /* enum */ 1959/* enum: Run BIST on the currently selected BPX Serdes (XAUI or XFI) . */
1960#define MC_CMD_BPX_SERDES_BIST 0x3
1961/* enum: Run the MC loopback tests. */
1962#define MC_CMD_MC_LOOPBACK_BIST 0x4
1963/* enum: Run the PHY's standard BIST. */
1964#define MC_CMD_PHY_BIST 0x5
1965/* enum: Run MC RAM test. */
1966#define MC_CMD_MC_MEM_BIST 0x6
1967/* enum: Run Port RAM test. */
1968#define MC_CMD_PORT_MEM_BIST 0x7
1969/* enum: Run register test. */
1970#define MC_CMD_REG_BIST 0x8
1260 1971
1261/* MC_CMD_START_BIST_OUT msgresponse */ 1972/* MC_CMD_START_BIST_OUT msgresponse */
1262#define MC_CMD_START_BIST_OUT_LEN 0 1973#define MC_CMD_START_BIST_OUT_LEN 0
@@ -1264,7 +1975,12 @@
1264 1975
1265/***********************************/ 1976/***********************************/
1266/* MC_CMD_POLL_BIST 1977/* MC_CMD_POLL_BIST
1267 * Poll for BIST completion. 1978 * Poll for BIST completion. Returns a single status code, and optionally some
1979 * PHY specific bist output. The driver should only consume the BIST output
1980 * after validating OUTLEN and MC_CMD_GET_PHY_CFG.TYPE. If a driver can't
1981 * successfully parse the BIST output, it should still respect the pass/Fail in
1982 * OUT.RESULT. Locks required: PHY_LOCK if doing a PHY BIST. Return code: 0,
1983 * EACCES (if PHY_LOCK is not held).
1268 */ 1984 */
1269#define MC_CMD_POLL_BIST 0x26 1985#define MC_CMD_POLL_BIST 0x26
1270 1986
@@ -1273,15 +1989,21 @@
1273 1989
1274/* MC_CMD_POLL_BIST_OUT msgresponse */ 1990/* MC_CMD_POLL_BIST_OUT msgresponse */
1275#define MC_CMD_POLL_BIST_OUT_LEN 8 1991#define MC_CMD_POLL_BIST_OUT_LEN 8
1992/* result */
1276#define MC_CMD_POLL_BIST_OUT_RESULT_OFST 0 1993#define MC_CMD_POLL_BIST_OUT_RESULT_OFST 0
1277#define MC_CMD_POLL_BIST_RUNNING 0x1 /* enum */ 1994/* enum: Running. */
1278#define MC_CMD_POLL_BIST_PASSED 0x2 /* enum */ 1995#define MC_CMD_POLL_BIST_RUNNING 0x1
1279#define MC_CMD_POLL_BIST_FAILED 0x3 /* enum */ 1996/* enum: Passed. */
1280#define MC_CMD_POLL_BIST_TIMEOUT 0x4 /* enum */ 1997#define MC_CMD_POLL_BIST_PASSED 0x2
1998/* enum: Failed. */
1999#define MC_CMD_POLL_BIST_FAILED 0x3
2000/* enum: Timed-out. */
2001#define MC_CMD_POLL_BIST_TIMEOUT 0x4
1281#define MC_CMD_POLL_BIST_OUT_PRIVATE_OFST 4 2002#define MC_CMD_POLL_BIST_OUT_PRIVATE_OFST 4
1282 2003
1283/* MC_CMD_POLL_BIST_OUT_SFT9001 msgresponse */ 2004/* MC_CMD_POLL_BIST_OUT_SFT9001 msgresponse */
1284#define MC_CMD_POLL_BIST_OUT_SFT9001_LEN 36 2005#define MC_CMD_POLL_BIST_OUT_SFT9001_LEN 36
2006/* result */
1285/* MC_CMD_POLL_BIST_OUT_RESULT_OFST 0 */ 2007/* MC_CMD_POLL_BIST_OUT_RESULT_OFST 0 */
1286/* Enum values, see field(s): */ 2008/* Enum values, see field(s): */
1287/* MC_CMD_POLL_BIST_OUT/MC_CMD_POLL_BIST_OUT_RESULT */ 2009/* MC_CMD_POLL_BIST_OUT/MC_CMD_POLL_BIST_OUT_RESULT */
@@ -1289,42 +2011,116 @@
1289#define MC_CMD_POLL_BIST_OUT_SFT9001_CABLE_LENGTH_B_OFST 8 2011#define MC_CMD_POLL_BIST_OUT_SFT9001_CABLE_LENGTH_B_OFST 8
1290#define MC_CMD_POLL_BIST_OUT_SFT9001_CABLE_LENGTH_C_OFST 12 2012#define MC_CMD_POLL_BIST_OUT_SFT9001_CABLE_LENGTH_C_OFST 12
1291#define MC_CMD_POLL_BIST_OUT_SFT9001_CABLE_LENGTH_D_OFST 16 2013#define MC_CMD_POLL_BIST_OUT_SFT9001_CABLE_LENGTH_D_OFST 16
2014/* Status of each channel A */
1292#define MC_CMD_POLL_BIST_OUT_SFT9001_CABLE_STATUS_A_OFST 20 2015#define MC_CMD_POLL_BIST_OUT_SFT9001_CABLE_STATUS_A_OFST 20
1293#define MC_CMD_POLL_BIST_SFT9001_PAIR_OK 0x1 /* enum */ 2016/* enum: Ok. */
1294#define MC_CMD_POLL_BIST_SFT9001_PAIR_OPEN 0x2 /* enum */ 2017#define MC_CMD_POLL_BIST_SFT9001_PAIR_OK 0x1
1295#define MC_CMD_POLL_BIST_SFT9001_INTRA_PAIR_SHORT 0x3 /* enum */ 2018/* enum: Open. */
1296#define MC_CMD_POLL_BIST_SFT9001_INTER_PAIR_SHORT 0x4 /* enum */ 2019#define MC_CMD_POLL_BIST_SFT9001_PAIR_OPEN 0x2
1297#define MC_CMD_POLL_BIST_SFT9001_PAIR_BUSY 0x9 /* enum */ 2020/* enum: Intra-pair short. */
2021#define MC_CMD_POLL_BIST_SFT9001_INTRA_PAIR_SHORT 0x3
2022/* enum: Inter-pair short. */
2023#define MC_CMD_POLL_BIST_SFT9001_INTER_PAIR_SHORT 0x4
2024/* enum: Busy. */
2025#define MC_CMD_POLL_BIST_SFT9001_PAIR_BUSY 0x9
2026/* Status of each channel B */
1298#define MC_CMD_POLL_BIST_OUT_SFT9001_CABLE_STATUS_B_OFST 24 2027#define MC_CMD_POLL_BIST_OUT_SFT9001_CABLE_STATUS_B_OFST 24
1299/* Enum values, see field(s): */ 2028/* Enum values, see field(s): */
1300/* CABLE_STATUS_A */ 2029/* CABLE_STATUS_A */
2030/* Status of each channel C */
1301#define MC_CMD_POLL_BIST_OUT_SFT9001_CABLE_STATUS_C_OFST 28 2031#define MC_CMD_POLL_BIST_OUT_SFT9001_CABLE_STATUS_C_OFST 28
1302/* Enum values, see field(s): */ 2032/* Enum values, see field(s): */
1303/* CABLE_STATUS_A */ 2033/* CABLE_STATUS_A */
2034/* Status of each channel D */
1304#define MC_CMD_POLL_BIST_OUT_SFT9001_CABLE_STATUS_D_OFST 32 2035#define MC_CMD_POLL_BIST_OUT_SFT9001_CABLE_STATUS_D_OFST 32
1305/* Enum values, see field(s): */ 2036/* Enum values, see field(s): */
1306/* CABLE_STATUS_A */ 2037/* CABLE_STATUS_A */
1307 2038
1308/* MC_CMD_POLL_BIST_OUT_MRSFP msgresponse */ 2039/* MC_CMD_POLL_BIST_OUT_MRSFP msgresponse */
1309#define MC_CMD_POLL_BIST_OUT_MRSFP_LEN 8 2040#define MC_CMD_POLL_BIST_OUT_MRSFP_LEN 8
2041/* result */
1310/* MC_CMD_POLL_BIST_OUT_RESULT_OFST 0 */ 2042/* MC_CMD_POLL_BIST_OUT_RESULT_OFST 0 */
1311/* Enum values, see field(s): */ 2043/* Enum values, see field(s): */
1312/* MC_CMD_POLL_BIST_OUT/MC_CMD_POLL_BIST_OUT_RESULT */ 2044/* MC_CMD_POLL_BIST_OUT/MC_CMD_POLL_BIST_OUT_RESULT */
1313#define MC_CMD_POLL_BIST_OUT_MRSFP_TEST_OFST 4 2045#define MC_CMD_POLL_BIST_OUT_MRSFP_TEST_OFST 4
1314#define MC_CMD_POLL_BIST_MRSFP_TEST_COMPLETE 0x0 /* enum */ 2046/* enum: Complete. */
1315#define MC_CMD_POLL_BIST_MRSFP_TEST_BUS_SWITCH_OFF_I2C_WRITE 0x1 /* enum */ 2047#define MC_CMD_POLL_BIST_MRSFP_TEST_COMPLETE 0x0
1316#define MC_CMD_POLL_BIST_MRSFP_TEST_BUS_SWITCH_OFF_I2C_NO_ACCESS_IO_EXP 0x2 /* enum */ 2048/* enum: Bus switch off I2C write. */
1317#define MC_CMD_POLL_BIST_MRSFP_TEST_BUS_SWITCH_OFF_I2C_NO_ACCESS_MODULE 0x3 /* enum */ 2049#define MC_CMD_POLL_BIST_MRSFP_TEST_BUS_SWITCH_OFF_I2C_WRITE 0x1
1318#define MC_CMD_POLL_BIST_MRSFP_TEST_IO_EXP_I2C_CONFIGURE 0x4 /* enum */ 2050/* enum: Bus switch off I2C no access IO exp. */
1319#define MC_CMD_POLL_BIST_MRSFP_TEST_BUS_SWITCH_I2C_NO_CROSSTALK 0x5 /* enum */ 2051#define MC_CMD_POLL_BIST_MRSFP_TEST_BUS_SWITCH_OFF_I2C_NO_ACCESS_IO_EXP 0x2
1320#define MC_CMD_POLL_BIST_MRSFP_TEST_MODULE_PRESENCE 0x6 /* enum */ 2052/* enum: Bus switch off I2C no access module. */
1321#define MC_CMD_POLL_BIST_MRSFP_TEST_MODULE_ID_I2C_ACCESS 0x7 /* enum */ 2053#define MC_CMD_POLL_BIST_MRSFP_TEST_BUS_SWITCH_OFF_I2C_NO_ACCESS_MODULE 0x3
1322#define MC_CMD_POLL_BIST_MRSFP_TEST_MODULE_ID_SANE_VALUE 0x8 /* enum */ 2054/* enum: IO exp I2C configure. */
2055#define MC_CMD_POLL_BIST_MRSFP_TEST_IO_EXP_I2C_CONFIGURE 0x4
2056/* enum: Bus switch I2C no cross talk. */
2057#define MC_CMD_POLL_BIST_MRSFP_TEST_BUS_SWITCH_I2C_NO_CROSSTALK 0x5
2058/* enum: Module presence. */
2059#define MC_CMD_POLL_BIST_MRSFP_TEST_MODULE_PRESENCE 0x6
2060/* enum: Module ID I2C access. */
2061#define MC_CMD_POLL_BIST_MRSFP_TEST_MODULE_ID_I2C_ACCESS 0x7
2062/* enum: Module ID sane value. */
2063#define MC_CMD_POLL_BIST_MRSFP_TEST_MODULE_ID_SANE_VALUE 0x8
2064
2065/* MC_CMD_POLL_BIST_OUT_MEM msgresponse */
2066#define MC_CMD_POLL_BIST_OUT_MEM_LEN 36
2067/* result */
2068/* MC_CMD_POLL_BIST_OUT_RESULT_OFST 0 */
2069/* Enum values, see field(s): */
2070/* MC_CMD_POLL_BIST_OUT/MC_CMD_POLL_BIST_OUT_RESULT */
2071#define MC_CMD_POLL_BIST_OUT_MEM_TEST_OFST 4
2072/* enum: Test has completed. */
2073#define MC_CMD_POLL_BIST_MEM_COMPLETE 0x0
2074/* enum: RAM test - walk ones. */
2075#define MC_CMD_POLL_BIST_MEM_MEM_WALK_ONES 0x1
2076/* enum: RAM test - walk zeros. */
2077#define MC_CMD_POLL_BIST_MEM_MEM_WALK_ZEROS 0x2
2078/* enum: RAM test - walking inversions zeros/ones. */
2079#define MC_CMD_POLL_BIST_MEM_MEM_INV_ZERO_ONE 0x3
2080/* enum: RAM test - walking inversions checkerboard. */
2081#define MC_CMD_POLL_BIST_MEM_MEM_INV_CHKBOARD 0x4
2082/* enum: Register test - set / clear individual bits. */
2083#define MC_CMD_POLL_BIST_MEM_REG 0x5
2084/* enum: ECC error detected. */
2085#define MC_CMD_POLL_BIST_MEM_ECC 0x6
2086/* Failure address, only valid if result is POLL_BIST_FAILED */
2087#define MC_CMD_POLL_BIST_OUT_MEM_ADDR_OFST 8
2088/* Bus or address space to which the failure address corresponds */
2089#define MC_CMD_POLL_BIST_OUT_MEM_BUS_OFST 12
2090/* enum: MC MIPS bus. */
2091#define MC_CMD_POLL_BIST_MEM_BUS_MC 0x0
2092/* enum: CSR IREG bus. */
2093#define MC_CMD_POLL_BIST_MEM_BUS_CSR 0x1
2094/* enum: RX DPCPU bus. */
2095#define MC_CMD_POLL_BIST_MEM_BUS_DPCPU_RX 0x2
2096/* enum: TX0 DPCPU bus. */
2097#define MC_CMD_POLL_BIST_MEM_BUS_DPCPU_TX0 0x3
2098/* enum: TX1 DPCPU bus. */
2099#define MC_CMD_POLL_BIST_MEM_BUS_DPCPU_TX1 0x4
2100/* enum: RX DICPU bus. */
2101#define MC_CMD_POLL_BIST_MEM_BUS_DICPU_RX 0x5
2102/* enum: TX DICPU bus. */
2103#define MC_CMD_POLL_BIST_MEM_BUS_DICPU_TX 0x6
2104/* Pattern written to RAM / register */
2105#define MC_CMD_POLL_BIST_OUT_MEM_EXPECT_OFST 16
2106/* Actual value read from RAM / register */
2107#define MC_CMD_POLL_BIST_OUT_MEM_ACTUAL_OFST 20
2108/* ECC error mask */
2109#define MC_CMD_POLL_BIST_OUT_MEM_ECC_OFST 24
2110/* ECC parity error mask */
2111#define MC_CMD_POLL_BIST_OUT_MEM_ECC_PARITY_OFST 28
2112/* ECC fatal error mask */
2113#define MC_CMD_POLL_BIST_OUT_MEM_ECC_FATAL_OFST 32
1323 2114
1324 2115
1325/***********************************/ 2116/***********************************/
1326/* MC_CMD_FLUSH_RX_QUEUES 2117/* MC_CMD_FLUSH_RX_QUEUES
1327 * Flush receive queue(s). 2118 * Flush receive queue(s). If SRIOV is enabled (via MC_CMD_SRIOV), then RXQ
2119 * flushes should be initiated via this MCDI operation, rather than via
2120 * directly writing FLUSH_CMD.
2121 *
2122 * The flush is completed (either done/fail) asynchronously (after this command
2123 * returns). The driver must still wait for flush done/failure events as usual.
1328 */ 2124 */
1329#define MC_CMD_FLUSH_RX_QUEUES 0x27 2125#define MC_CMD_FLUSH_RX_QUEUES 0x27
1330 2126
@@ -1343,7 +2139,7 @@
1343 2139
1344/***********************************/ 2140/***********************************/
1345/* MC_CMD_GET_LOOPBACK_MODES 2141/* MC_CMD_GET_LOOPBACK_MODES
1346 * Get port's loopback modes. 2142 * Returns a bitmask of loopback modes available at each speed.
1347 */ 2143 */
1348#define MC_CMD_GET_LOOPBACK_MODES 0x28 2144#define MC_CMD_GET_LOOPBACK_MODES 0x28
1349 2145
@@ -1351,61 +2147,116 @@
1351#define MC_CMD_GET_LOOPBACK_MODES_IN_LEN 0 2147#define MC_CMD_GET_LOOPBACK_MODES_IN_LEN 0
1352 2148
1353/* MC_CMD_GET_LOOPBACK_MODES_OUT msgresponse */ 2149/* MC_CMD_GET_LOOPBACK_MODES_OUT msgresponse */
1354#define MC_CMD_GET_LOOPBACK_MODES_OUT_LEN 32 2150#define MC_CMD_GET_LOOPBACK_MODES_OUT_LEN 40
2151/* Supported loopbacks. */
1355#define MC_CMD_GET_LOOPBACK_MODES_OUT_100M_OFST 0 2152#define MC_CMD_GET_LOOPBACK_MODES_OUT_100M_OFST 0
1356#define MC_CMD_GET_LOOPBACK_MODES_OUT_100M_LEN 8 2153#define MC_CMD_GET_LOOPBACK_MODES_OUT_100M_LEN 8
1357#define MC_CMD_GET_LOOPBACK_MODES_OUT_100M_LO_OFST 0 2154#define MC_CMD_GET_LOOPBACK_MODES_OUT_100M_LO_OFST 0
1358#define MC_CMD_GET_LOOPBACK_MODES_OUT_100M_HI_OFST 4 2155#define MC_CMD_GET_LOOPBACK_MODES_OUT_100M_HI_OFST 4
1359#define MC_CMD_LOOPBACK_NONE 0x0 /* enum */ 2156/* enum: None. */
1360#define MC_CMD_LOOPBACK_DATA 0x1 /* enum */ 2157#define MC_CMD_LOOPBACK_NONE 0x0
1361#define MC_CMD_LOOPBACK_GMAC 0x2 /* enum */ 2158/* enum: Data. */
1362#define MC_CMD_LOOPBACK_XGMII 0x3 /* enum */ 2159#define MC_CMD_LOOPBACK_DATA 0x1
1363#define MC_CMD_LOOPBACK_XGXS 0x4 /* enum */ 2160/* enum: GMAC. */
1364#define MC_CMD_LOOPBACK_XAUI 0x5 /* enum */ 2161#define MC_CMD_LOOPBACK_GMAC 0x2
1365#define MC_CMD_LOOPBACK_GMII 0x6 /* enum */ 2162/* enum: XGMII. */
1366#define MC_CMD_LOOPBACK_SGMII 0x7 /* enum */ 2163#define MC_CMD_LOOPBACK_XGMII 0x3
1367#define MC_CMD_LOOPBACK_XGBR 0x8 /* enum */ 2164/* enum: XGXS. */
1368#define MC_CMD_LOOPBACK_XFI 0x9 /* enum */ 2165#define MC_CMD_LOOPBACK_XGXS 0x4
1369#define MC_CMD_LOOPBACK_XAUI_FAR 0xa /* enum */ 2166/* enum: XAUI. */
1370#define MC_CMD_LOOPBACK_GMII_FAR 0xb /* enum */ 2167#define MC_CMD_LOOPBACK_XAUI 0x5
1371#define MC_CMD_LOOPBACK_SGMII_FAR 0xc /* enum */ 2168/* enum: GMII. */
1372#define MC_CMD_LOOPBACK_XFI_FAR 0xd /* enum */ 2169#define MC_CMD_LOOPBACK_GMII 0x6
1373#define MC_CMD_LOOPBACK_GPHY 0xe /* enum */ 2170/* enum: SGMII. */
1374#define MC_CMD_LOOPBACK_PHYXS 0xf /* enum */ 2171#define MC_CMD_LOOPBACK_SGMII 0x7
1375#define MC_CMD_LOOPBACK_PCS 0x10 /* enum */ 2172/* enum: XGBR. */
1376#define MC_CMD_LOOPBACK_PMAPMD 0x11 /* enum */ 2173#define MC_CMD_LOOPBACK_XGBR 0x8
1377#define MC_CMD_LOOPBACK_XPORT 0x12 /* enum */ 2174/* enum: XFI. */
1378#define MC_CMD_LOOPBACK_XGMII_WS 0x13 /* enum */ 2175#define MC_CMD_LOOPBACK_XFI 0x9
1379#define MC_CMD_LOOPBACK_XAUI_WS 0x14 /* enum */ 2176/* enum: XAUI Far. */
1380#define MC_CMD_LOOPBACK_XAUI_WS_FAR 0x15 /* enum */ 2177#define MC_CMD_LOOPBACK_XAUI_FAR 0xa
1381#define MC_CMD_LOOPBACK_XAUI_WS_NEAR 0x16 /* enum */ 2178/* enum: GMII Far. */
1382#define MC_CMD_LOOPBACK_GMII_WS 0x17 /* enum */ 2179#define MC_CMD_LOOPBACK_GMII_FAR 0xb
1383#define MC_CMD_LOOPBACK_XFI_WS 0x18 /* enum */ 2180/* enum: SGMII Far. */
1384#define MC_CMD_LOOPBACK_XFI_WS_FAR 0x19 /* enum */ 2181#define MC_CMD_LOOPBACK_SGMII_FAR 0xc
1385#define MC_CMD_LOOPBACK_PHYXS_WS 0x1a /* enum */ 2182/* enum: XFI Far. */
2183#define MC_CMD_LOOPBACK_XFI_FAR 0xd
2184/* enum: GPhy. */
2185#define MC_CMD_LOOPBACK_GPHY 0xe
2186/* enum: PhyXS. */
2187#define MC_CMD_LOOPBACK_PHYXS 0xf
2188/* enum: PCS. */
2189#define MC_CMD_LOOPBACK_PCS 0x10
2190/* enum: PMA-PMD. */
2191#define MC_CMD_LOOPBACK_PMAPMD 0x11
2192/* enum: Cross-Port. */
2193#define MC_CMD_LOOPBACK_XPORT 0x12
2194/* enum: XGMII-Wireside. */
2195#define MC_CMD_LOOPBACK_XGMII_WS 0x13
2196/* enum: XAUI Wireside. */
2197#define MC_CMD_LOOPBACK_XAUI_WS 0x14
2198/* enum: XAUI Wireside Far. */
2199#define MC_CMD_LOOPBACK_XAUI_WS_FAR 0x15
2200/* enum: XAUI Wireside near. */
2201#define MC_CMD_LOOPBACK_XAUI_WS_NEAR 0x16
2202/* enum: GMII Wireside. */
2203#define MC_CMD_LOOPBACK_GMII_WS 0x17
2204/* enum: XFI Wireside. */
2205#define MC_CMD_LOOPBACK_XFI_WS 0x18
2206/* enum: XFI Wireside Far. */
2207#define MC_CMD_LOOPBACK_XFI_WS_FAR 0x19
2208/* enum: PhyXS Wireside. */
2209#define MC_CMD_LOOPBACK_PHYXS_WS 0x1a
2210/* enum: PMA lanes MAC-Serdes. */
2211#define MC_CMD_LOOPBACK_PMA_INT 0x1b
2212/* enum: KR Serdes Parallel (Encoder). */
2213#define MC_CMD_LOOPBACK_SD_NEAR 0x1c
2214/* enum: KR Serdes Serial. */
2215#define MC_CMD_LOOPBACK_SD_FAR 0x1d
2216/* enum: PMA lanes MAC-Serdes Wireside. */
2217#define MC_CMD_LOOPBACK_PMA_INT_WS 0x1e
2218/* enum: KR Serdes Parallel Wireside (Full PCS). */
2219#define MC_CMD_LOOPBACK_SD_FEP2_WS 0x1f
2220/* enum: KR Serdes Parallel Wireside (Sym Aligner to TX). */
2221#define MC_CMD_LOOPBACK_SD_FEP1_5_WS 0x20
2222/* enum: KR Serdes Parallel Wireside (Deserializer to Serializer). */
2223#define MC_CMD_LOOPBACK_SD_FEP_WS 0x21
2224/* enum: KR Serdes Serial Wireside. */
2225#define MC_CMD_LOOPBACK_SD_FES_WS 0x22
2226/* Supported loopbacks. */
1386#define MC_CMD_GET_LOOPBACK_MODES_OUT_1G_OFST 8 2227#define MC_CMD_GET_LOOPBACK_MODES_OUT_1G_OFST 8
1387#define MC_CMD_GET_LOOPBACK_MODES_OUT_1G_LEN 8 2228#define MC_CMD_GET_LOOPBACK_MODES_OUT_1G_LEN 8
1388#define MC_CMD_GET_LOOPBACK_MODES_OUT_1G_LO_OFST 8 2229#define MC_CMD_GET_LOOPBACK_MODES_OUT_1G_LO_OFST 8
1389#define MC_CMD_GET_LOOPBACK_MODES_OUT_1G_HI_OFST 12 2230#define MC_CMD_GET_LOOPBACK_MODES_OUT_1G_HI_OFST 12
1390/* Enum values, see field(s): */ 2231/* Enum values, see field(s): */
1391/* 100M */ 2232/* 100M */
2233/* Supported loopbacks. */
1392#define MC_CMD_GET_LOOPBACK_MODES_OUT_10G_OFST 16 2234#define MC_CMD_GET_LOOPBACK_MODES_OUT_10G_OFST 16
1393#define MC_CMD_GET_LOOPBACK_MODES_OUT_10G_LEN 8 2235#define MC_CMD_GET_LOOPBACK_MODES_OUT_10G_LEN 8
1394#define MC_CMD_GET_LOOPBACK_MODES_OUT_10G_LO_OFST 16 2236#define MC_CMD_GET_LOOPBACK_MODES_OUT_10G_LO_OFST 16
1395#define MC_CMD_GET_LOOPBACK_MODES_OUT_10G_HI_OFST 20 2237#define MC_CMD_GET_LOOPBACK_MODES_OUT_10G_HI_OFST 20
1396/* Enum values, see field(s): */ 2238/* Enum values, see field(s): */
1397/* 100M */ 2239/* 100M */
2240/* Supported loopbacks. */
1398#define MC_CMD_GET_LOOPBACK_MODES_OUT_SUGGESTED_OFST 24 2241#define MC_CMD_GET_LOOPBACK_MODES_OUT_SUGGESTED_OFST 24
1399#define MC_CMD_GET_LOOPBACK_MODES_OUT_SUGGESTED_LEN 8 2242#define MC_CMD_GET_LOOPBACK_MODES_OUT_SUGGESTED_LEN 8
1400#define MC_CMD_GET_LOOPBACK_MODES_OUT_SUGGESTED_LO_OFST 24 2243#define MC_CMD_GET_LOOPBACK_MODES_OUT_SUGGESTED_LO_OFST 24
1401#define MC_CMD_GET_LOOPBACK_MODES_OUT_SUGGESTED_HI_OFST 28 2244#define MC_CMD_GET_LOOPBACK_MODES_OUT_SUGGESTED_HI_OFST 28
1402/* Enum values, see field(s): */ 2245/* Enum values, see field(s): */
1403/* 100M */ 2246/* 100M */
2247/* Supported loopbacks. */
2248#define MC_CMD_GET_LOOPBACK_MODES_OUT_40G_OFST 32
2249#define MC_CMD_GET_LOOPBACK_MODES_OUT_40G_LEN 8
2250#define MC_CMD_GET_LOOPBACK_MODES_OUT_40G_LO_OFST 32
2251#define MC_CMD_GET_LOOPBACK_MODES_OUT_40G_HI_OFST 36
2252/* Enum values, see field(s): */
2253/* 100M */
1404 2254
1405 2255
1406/***********************************/ 2256/***********************************/
1407/* MC_CMD_GET_LINK 2257/* MC_CMD_GET_LINK
1408 * Read the unified MAC/PHY link state. 2258 * Read the unified MAC/PHY link state. Locks required: None Return code: 0,
2259 * ETIME.
1409 */ 2260 */
1410#define MC_CMD_GET_LINK 0x29 2261#define MC_CMD_GET_LINK 0x29
1411 2262
@@ -1414,9 +2265,15 @@
1414 2265
1415/* MC_CMD_GET_LINK_OUT msgresponse */ 2266/* MC_CMD_GET_LINK_OUT msgresponse */
1416#define MC_CMD_GET_LINK_OUT_LEN 28 2267#define MC_CMD_GET_LINK_OUT_LEN 28
2268/* near-side advertised capabilities */
1417#define MC_CMD_GET_LINK_OUT_CAP_OFST 0 2269#define MC_CMD_GET_LINK_OUT_CAP_OFST 0
2270/* link-partner advertised capabilities */
1418#define MC_CMD_GET_LINK_OUT_LP_CAP_OFST 4 2271#define MC_CMD_GET_LINK_OUT_LP_CAP_OFST 4
2272/* Autonegotiated speed in mbit/s. The link may still be down even if this
2273 * reads non-zero.
2274 */
1419#define MC_CMD_GET_LINK_OUT_LINK_SPEED_OFST 8 2275#define MC_CMD_GET_LINK_OUT_LINK_SPEED_OFST 8
2276/* Current loopback setting. */
1420#define MC_CMD_GET_LINK_OUT_LOOPBACK_MODE_OFST 12 2277#define MC_CMD_GET_LINK_OUT_LOOPBACK_MODE_OFST 12
1421/* Enum values, see field(s): */ 2278/* Enum values, see field(s): */
1422/* MC_CMD_GET_LOOPBACK_MODES/MC_CMD_GET_LOOPBACK_MODES_OUT/100M */ 2279/* MC_CMD_GET_LOOPBACK_MODES/MC_CMD_GET_LOOPBACK_MODES_OUT/100M */
@@ -1429,10 +2286,14 @@
1429#define MC_CMD_GET_LINK_OUT_BPX_LINK_WIDTH 1 2286#define MC_CMD_GET_LINK_OUT_BPX_LINK_WIDTH 1
1430#define MC_CMD_GET_LINK_OUT_PHY_LINK_LBN 3 2287#define MC_CMD_GET_LINK_OUT_PHY_LINK_LBN 3
1431#define MC_CMD_GET_LINK_OUT_PHY_LINK_WIDTH 1 2288#define MC_CMD_GET_LINK_OUT_PHY_LINK_WIDTH 1
2289/* This returns the negotiated flow control value. */
1432#define MC_CMD_GET_LINK_OUT_FCNTL_OFST 20 2290#define MC_CMD_GET_LINK_OUT_FCNTL_OFST 20
1433#define MC_CMD_FCNTL_OFF 0x0 /* enum */ 2291/* enum: Flow control is off. */
1434#define MC_CMD_FCNTL_RESPOND 0x1 /* enum */ 2292#define MC_CMD_FCNTL_OFF 0x0
1435#define MC_CMD_FCNTL_BIDIR 0x2 /* enum */ 2293/* enum: Respond to flow control. */
2294#define MC_CMD_FCNTL_RESPOND 0x1
2295/* enum: Respond to and Issue flow control. */
2296#define MC_CMD_FCNTL_BIDIR 0x2
1436#define MC_CMD_GET_LINK_OUT_MAC_FAULT_OFST 24 2297#define MC_CMD_GET_LINK_OUT_MAC_FAULT_OFST 24
1437#define MC_CMD_MAC_FAULT_XGMII_LOCAL_LBN 0 2298#define MC_CMD_MAC_FAULT_XGMII_LOCAL_LBN 0
1438#define MC_CMD_MAC_FAULT_XGMII_LOCAL_WIDTH 1 2299#define MC_CMD_MAC_FAULT_XGMII_LOCAL_WIDTH 1
@@ -1446,13 +2307,16 @@
1446 2307
1447/***********************************/ 2308/***********************************/
1448/* MC_CMD_SET_LINK 2309/* MC_CMD_SET_LINK
1449 * Write the unified MAC/PHY link configuration. 2310 * Write the unified MAC/PHY link configuration. Locks required: None. Return
2311 * code: 0, EINVAL, ETIME
1450 */ 2312 */
1451#define MC_CMD_SET_LINK 0x2a 2313#define MC_CMD_SET_LINK 0x2a
1452 2314
1453/* MC_CMD_SET_LINK_IN msgrequest */ 2315/* MC_CMD_SET_LINK_IN msgrequest */
1454#define MC_CMD_SET_LINK_IN_LEN 16 2316#define MC_CMD_SET_LINK_IN_LEN 16
2317/* ??? */
1455#define MC_CMD_SET_LINK_IN_CAP_OFST 0 2318#define MC_CMD_SET_LINK_IN_CAP_OFST 0
2319/* Flags */
1456#define MC_CMD_SET_LINK_IN_FLAGS_OFST 4 2320#define MC_CMD_SET_LINK_IN_FLAGS_OFST 4
1457#define MC_CMD_SET_LINK_IN_LOWPOWER_LBN 0 2321#define MC_CMD_SET_LINK_IN_LOWPOWER_LBN 0
1458#define MC_CMD_SET_LINK_IN_LOWPOWER_WIDTH 1 2322#define MC_CMD_SET_LINK_IN_LOWPOWER_WIDTH 1
@@ -1460,9 +2324,13 @@
1460#define MC_CMD_SET_LINK_IN_POWEROFF_WIDTH 1 2324#define MC_CMD_SET_LINK_IN_POWEROFF_WIDTH 1
1461#define MC_CMD_SET_LINK_IN_TXDIS_LBN 2 2325#define MC_CMD_SET_LINK_IN_TXDIS_LBN 2
1462#define MC_CMD_SET_LINK_IN_TXDIS_WIDTH 1 2326#define MC_CMD_SET_LINK_IN_TXDIS_WIDTH 1
2327/* Loopback mode. */
1463#define MC_CMD_SET_LINK_IN_LOOPBACK_MODE_OFST 8 2328#define MC_CMD_SET_LINK_IN_LOOPBACK_MODE_OFST 8
1464/* Enum values, see field(s): */ 2329/* Enum values, see field(s): */
1465/* MC_CMD_GET_LOOPBACK_MODES/MC_CMD_GET_LOOPBACK_MODES_OUT/100M */ 2330/* MC_CMD_GET_LOOPBACK_MODES/MC_CMD_GET_LOOPBACK_MODES_OUT/100M */
2331/* A loopback speed of "0" is supported, and means (choose any available
2332 * speed).
2333 */
1466#define MC_CMD_SET_LINK_IN_LOOPBACK_SPEED_OFST 12 2334#define MC_CMD_SET_LINK_IN_LOOPBACK_SPEED_OFST 12
1467 2335
1468/* MC_CMD_SET_LINK_OUT msgresponse */ 2336/* MC_CMD_SET_LINK_OUT msgresponse */
@@ -1471,12 +2339,13 @@
1471 2339
1472/***********************************/ 2340/***********************************/
1473/* MC_CMD_SET_ID_LED 2341/* MC_CMD_SET_ID_LED
1474 * Set indentification LED state. 2342 * Set identification LED state. Locks required: None. Return code: 0, EINVAL
1475 */ 2343 */
1476#define MC_CMD_SET_ID_LED 0x2b 2344#define MC_CMD_SET_ID_LED 0x2b
1477 2345
1478/* MC_CMD_SET_ID_LED_IN msgrequest */ 2346/* MC_CMD_SET_ID_LED_IN msgrequest */
1479#define MC_CMD_SET_ID_LED_IN_LEN 4 2347#define MC_CMD_SET_ID_LED_IN_LEN 4
2348/* Set LED state. */
1480#define MC_CMD_SET_ID_LED_IN_STATE_OFST 0 2349#define MC_CMD_SET_ID_LED_IN_STATE_OFST 0
1481#define MC_CMD_LED_OFF 0x0 /* enum */ 2350#define MC_CMD_LED_OFF 0x0 /* enum */
1482#define MC_CMD_LED_ON 0x1 /* enum */ 2351#define MC_CMD_LED_ON 0x1 /* enum */
@@ -1488,12 +2357,15 @@
1488 2357
1489/***********************************/ 2358/***********************************/
1490/* MC_CMD_SET_MAC 2359/* MC_CMD_SET_MAC
1491 * Set MAC configuration. 2360 * Set MAC configuration. Locks required: None. Return code: 0, EINVAL
1492 */ 2361 */
1493#define MC_CMD_SET_MAC 0x2c 2362#define MC_CMD_SET_MAC 0x2c
1494 2363
1495/* MC_CMD_SET_MAC_IN msgrequest */ 2364/* MC_CMD_SET_MAC_IN msgrequest */
1496#define MC_CMD_SET_MAC_IN_LEN 24 2365#define MC_CMD_SET_MAC_IN_LEN 24
2366/* The MTU is the MTU programmed directly into the XMAC/GMAC (inclusive of
2367 * EtherII, VLAN, bug16011 padding).
2368 */
1497#define MC_CMD_SET_MAC_IN_MTU_OFST 0 2369#define MC_CMD_SET_MAC_IN_MTU_OFST 0
1498#define MC_CMD_SET_MAC_IN_DRAIN_OFST 4 2370#define MC_CMD_SET_MAC_IN_DRAIN_OFST 4
1499#define MC_CMD_SET_MAC_IN_ADDR_OFST 8 2371#define MC_CMD_SET_MAC_IN_ADDR_OFST 8
@@ -1506,10 +2378,14 @@
1506#define MC_CMD_SET_MAC_IN_REJECT_BRDCST_LBN 1 2378#define MC_CMD_SET_MAC_IN_REJECT_BRDCST_LBN 1
1507#define MC_CMD_SET_MAC_IN_REJECT_BRDCST_WIDTH 1 2379#define MC_CMD_SET_MAC_IN_REJECT_BRDCST_WIDTH 1
1508#define MC_CMD_SET_MAC_IN_FCNTL_OFST 20 2380#define MC_CMD_SET_MAC_IN_FCNTL_OFST 20
2381/* enum: Flow control is off. */
1509/* MC_CMD_FCNTL_OFF 0x0 */ 2382/* MC_CMD_FCNTL_OFF 0x0 */
2383/* enum: Respond to flow control. */
1510/* MC_CMD_FCNTL_RESPOND 0x1 */ 2384/* MC_CMD_FCNTL_RESPOND 0x1 */
2385/* enum: Respond to and Issue flow control. */
1511/* MC_CMD_FCNTL_BIDIR 0x2 */ 2386/* MC_CMD_FCNTL_BIDIR 0x2 */
1512#define MC_CMD_FCNTL_AUTO 0x3 /* enum */ 2387/* enum: Auto neg flow control. */
2388#define MC_CMD_FCNTL_AUTO 0x3
1513 2389
1514/* MC_CMD_SET_MAC_OUT msgresponse */ 2390/* MC_CMD_SET_MAC_OUT msgresponse */
1515#define MC_CMD_SET_MAC_OUT_LEN 0 2391#define MC_CMD_SET_MAC_OUT_LEN 0
@@ -1517,12 +2393,18 @@
1517 2393
1518/***********************************/ 2394/***********************************/
1519/* MC_CMD_PHY_STATS 2395/* MC_CMD_PHY_STATS
1520 * Get generic PHY statistics. 2396 * Get generic PHY statistics. This call returns the statistics for a generic
2397 * PHY in a sparse array (indexed by the enumerate). Each value is represented
2398 * by a 32bit number. If the DMA_ADDR is 0, then no DMA is performed, and the
2399 * statistics may be read from the message response. If DMA_ADDR != 0, then the
2400 * statistics are dmad to that (page-aligned location). Locks required: None.
2401 * Returns: 0, ETIME
1521 */ 2402 */
1522#define MC_CMD_PHY_STATS 0x2d 2403#define MC_CMD_PHY_STATS 0x2d
1523 2404
1524/* MC_CMD_PHY_STATS_IN msgrequest */ 2405/* MC_CMD_PHY_STATS_IN msgrequest */
1525#define MC_CMD_PHY_STATS_IN_LEN 8 2406#define MC_CMD_PHY_STATS_IN_LEN 8
2407/* ??? */
1526#define MC_CMD_PHY_STATS_IN_DMA_ADDR_OFST 0 2408#define MC_CMD_PHY_STATS_IN_DMA_ADDR_OFST 0
1527#define MC_CMD_PHY_STATS_IN_DMA_ADDR_LEN 8 2409#define MC_CMD_PHY_STATS_IN_DMA_ADDR_LEN 8
1528#define MC_CMD_PHY_STATS_IN_DMA_ADDR_LO_OFST 0 2410#define MC_CMD_PHY_STATS_IN_DMA_ADDR_LO_OFST 0
@@ -1536,40 +2418,71 @@
1536#define MC_CMD_PHY_STATS_OUT_NO_DMA_STATISTICS_OFST 0 2418#define MC_CMD_PHY_STATS_OUT_NO_DMA_STATISTICS_OFST 0
1537#define MC_CMD_PHY_STATS_OUT_NO_DMA_STATISTICS_LEN 4 2419#define MC_CMD_PHY_STATS_OUT_NO_DMA_STATISTICS_LEN 4
1538#define MC_CMD_PHY_STATS_OUT_NO_DMA_STATISTICS_NUM MC_CMD_PHY_NSTATS 2420#define MC_CMD_PHY_STATS_OUT_NO_DMA_STATISTICS_NUM MC_CMD_PHY_NSTATS
1539#define MC_CMD_OUI 0x0 /* enum */ 2421/* enum: OUI. */
1540#define MC_CMD_PMA_PMD_LINK_UP 0x1 /* enum */ 2422#define MC_CMD_OUI 0x0
1541#define MC_CMD_PMA_PMD_RX_FAULT 0x2 /* enum */ 2423/* enum: PMA-PMD Link Up. */
1542#define MC_CMD_PMA_PMD_TX_FAULT 0x3 /* enum */ 2424#define MC_CMD_PMA_PMD_LINK_UP 0x1
1543#define MC_CMD_PMA_PMD_SIGNAL 0x4 /* enum */ 2425/* enum: PMA-PMD RX Fault. */
1544#define MC_CMD_PMA_PMD_SNR_A 0x5 /* enum */ 2426#define MC_CMD_PMA_PMD_RX_FAULT 0x2
1545#define MC_CMD_PMA_PMD_SNR_B 0x6 /* enum */ 2427/* enum: PMA-PMD TX Fault. */
1546#define MC_CMD_PMA_PMD_SNR_C 0x7 /* enum */ 2428#define MC_CMD_PMA_PMD_TX_FAULT 0x3
1547#define MC_CMD_PMA_PMD_SNR_D 0x8 /* enum */ 2429/* enum: PMA-PMD Signal */
1548#define MC_CMD_PCS_LINK_UP 0x9 /* enum */ 2430#define MC_CMD_PMA_PMD_SIGNAL 0x4
1549#define MC_CMD_PCS_RX_FAULT 0xa /* enum */ 2431/* enum: PMA-PMD SNR A. */
1550#define MC_CMD_PCS_TX_FAULT 0xb /* enum */ 2432#define MC_CMD_PMA_PMD_SNR_A 0x5
1551#define MC_CMD_PCS_BER 0xc /* enum */ 2433/* enum: PMA-PMD SNR B. */
1552#define MC_CMD_PCS_BLOCK_ERRORS 0xd /* enum */ 2434#define MC_CMD_PMA_PMD_SNR_B 0x6
1553#define MC_CMD_PHYXS_LINK_UP 0xe /* enum */ 2435/* enum: PMA-PMD SNR C. */
1554#define MC_CMD_PHYXS_RX_FAULT 0xf /* enum */ 2436#define MC_CMD_PMA_PMD_SNR_C 0x7
1555#define MC_CMD_PHYXS_TX_FAULT 0x10 /* enum */ 2437/* enum: PMA-PMD SNR D. */
1556#define MC_CMD_PHYXS_ALIGN 0x11 /* enum */ 2438#define MC_CMD_PMA_PMD_SNR_D 0x8
1557#define MC_CMD_PHYXS_SYNC 0x12 /* enum */ 2439/* enum: PCS Link Up. */
1558#define MC_CMD_AN_LINK_UP 0x13 /* enum */ 2440#define MC_CMD_PCS_LINK_UP 0x9
1559#define MC_CMD_AN_COMPLETE 0x14 /* enum */ 2441/* enum: PCS RX Fault. */
1560#define MC_CMD_AN_10GBT_STATUS 0x15 /* enum */ 2442#define MC_CMD_PCS_RX_FAULT 0xa
1561#define MC_CMD_CL22_LINK_UP 0x16 /* enum */ 2443/* enum: PCS TX Fault. */
1562#define MC_CMD_PHY_NSTATS 0x17 /* enum */ 2444#define MC_CMD_PCS_TX_FAULT 0xb
2445/* enum: PCS BER. */
2446#define MC_CMD_PCS_BER 0xc
2447/* enum: PCS Block Errors. */
2448#define MC_CMD_PCS_BLOCK_ERRORS 0xd
2449/* enum: PhyXS Link Up. */
2450#define MC_CMD_PHYXS_LINK_UP 0xe
2451/* enum: PhyXS RX Fault. */
2452#define MC_CMD_PHYXS_RX_FAULT 0xf
2453/* enum: PhyXS TX Fault. */
2454#define MC_CMD_PHYXS_TX_FAULT 0x10
2455/* enum: PhyXS Align. */
2456#define MC_CMD_PHYXS_ALIGN 0x11
2457/* enum: PhyXS Sync. */
2458#define MC_CMD_PHYXS_SYNC 0x12
2459/* enum: AN link-up. */
2460#define MC_CMD_AN_LINK_UP 0x13
2461/* enum: AN Complete. */
2462#define MC_CMD_AN_COMPLETE 0x14
2463/* enum: AN 10GBaseT Status. */
2464#define MC_CMD_AN_10GBT_STATUS 0x15
2465/* enum: Clause 22 Link-Up. */
2466#define MC_CMD_CL22_LINK_UP 0x16
2467/* enum: (Last entry) */
2468#define MC_CMD_PHY_NSTATS 0x17
1563 2469
1564 2470
1565/***********************************/ 2471/***********************************/
1566/* MC_CMD_MAC_STATS 2472/* MC_CMD_MAC_STATS
1567 * Get generic MAC statistics. 2473 * Get generic MAC statistics. This call returns unified statistics maintained
2474 * by the MC as it switches between the GMAC and XMAC. The MC will write out
2475 * all supported stats. The driver should zero initialise the buffer to
2476 * guarantee consistent results. If the DMA_ADDR is 0, then no DMA is
2477 * performed, and the statistics may be read from the message response. If
2478 * DMA_ADDR != 0, then the statistics are dmad to that (page-aligned location).
2479 * Locks required: None. Returns: 0, ETIME
1568 */ 2480 */
1569#define MC_CMD_MAC_STATS 0x2e 2481#define MC_CMD_MAC_STATS 0x2e
1570 2482
1571/* MC_CMD_MAC_STATS_IN msgrequest */ 2483/* MC_CMD_MAC_STATS_IN msgrequest */
1572#define MC_CMD_MAC_STATS_IN_LEN 16 2484#define MC_CMD_MAC_STATS_IN_LEN 16
2485/* ??? */
1573#define MC_CMD_MAC_STATS_IN_DMA_ADDR_OFST 0 2486#define MC_CMD_MAC_STATS_IN_DMA_ADDR_OFST 0
1574#define MC_CMD_MAC_STATS_IN_DMA_ADDR_LEN 8 2487#define MC_CMD_MAC_STATS_IN_DMA_ADDR_LEN 8
1575#define MC_CMD_MAC_STATS_IN_DMA_ADDR_LO_OFST 0 2488#define MC_CMD_MAC_STATS_IN_DMA_ADDR_LO_OFST 0
@@ -1686,6 +2599,7 @@
1686 2599
1687/* MC_CMD_MEMCPY_RECORD_TYPEDEF structuredef */ 2600/* MC_CMD_MEMCPY_RECORD_TYPEDEF structuredef */
1688#define MC_CMD_MEMCPY_RECORD_TYPEDEF_LEN 32 2601#define MC_CMD_MEMCPY_RECORD_TYPEDEF_LEN 32
2602/* this is only used for the first record */
1689#define MC_CMD_MEMCPY_RECORD_TYPEDEF_NUM_RECORDS_OFST 0 2603#define MC_CMD_MEMCPY_RECORD_TYPEDEF_NUM_RECORDS_OFST 0
1690#define MC_CMD_MEMCPY_RECORD_TYPEDEF_NUM_RECORDS_LBN 0 2604#define MC_CMD_MEMCPY_RECORD_TYPEDEF_NUM_RECORDS_LBN 0
1691#define MC_CMD_MEMCPY_RECORD_TYPEDEF_NUM_RECORDS_WIDTH 32 2605#define MC_CMD_MEMCPY_RECORD_TYPEDEF_NUM_RECORDS_WIDTH 32
@@ -1715,7 +2629,23 @@
1715 2629
1716/***********************************/ 2630/***********************************/
1717/* MC_CMD_MEMCPY 2631/* MC_CMD_MEMCPY
1718 * Perform memory copy operation. 2632 * DMA write data into (Rid,Addr), either by dma reading (Rid,Addr), or by data
2633 * embedded directly in the command.
2634 *
2635 * A common pattern is for a client to use generation counts to signal a dma
2636 * update of a datastructure. To facilitate this, this MCDI operation can
2637 * contain multiple requests which are executed in strict order. Requests take
2638 * the form of duplicating the entire MCDI request continuously (including the
2639 * requests record, which is ignored in all but the first structure)
2640 *
2641 * The source data can either come from a DMA from the host, or it can be
2642 * embedded within the request directly, thereby eliminating a DMA read. To
2643 * indicate this, the client sets FROM_RID=%RID_INLINE, ADDR_HI=0, and
2644 * ADDR_LO=offset, and inserts the data at %offset from the start of the
2645 * payload. It's the callers responsibility to ensure that the embedded data
2646 * doesn't overlap the records.
2647 *
2648 * Returns: 0, EINVAL (invalid RID)
1719 */ 2649 */
1720#define MC_CMD_MEMCPY 0x31 2650#define MC_CMD_MEMCPY 0x31
1721 2651
@@ -1723,6 +2653,7 @@
1723#define MC_CMD_MEMCPY_IN_LENMIN 32 2653#define MC_CMD_MEMCPY_IN_LENMIN 32
1724#define MC_CMD_MEMCPY_IN_LENMAX 224 2654#define MC_CMD_MEMCPY_IN_LENMAX 224
1725#define MC_CMD_MEMCPY_IN_LEN(num) (0+32*(num)) 2655#define MC_CMD_MEMCPY_IN_LEN(num) (0+32*(num))
2656/* see MC_CMD_MEMCPY_RECORD_TYPEDEF */
1726#define MC_CMD_MEMCPY_IN_RECORD_OFST 0 2657#define MC_CMD_MEMCPY_IN_RECORD_OFST 0
1727#define MC_CMD_MEMCPY_IN_RECORD_LEN 32 2658#define MC_CMD_MEMCPY_IN_RECORD_LEN 32
1728#define MC_CMD_MEMCPY_IN_RECORD_MINNUM 1 2659#define MC_CMD_MEMCPY_IN_RECORD_MINNUM 1
@@ -1743,14 +2674,22 @@
1743#define MC_CMD_WOL_FILTER_SET_IN_FILTER_MODE_OFST 0 2674#define MC_CMD_WOL_FILTER_SET_IN_FILTER_MODE_OFST 0
1744#define MC_CMD_FILTER_MODE_SIMPLE 0x0 /* enum */ 2675#define MC_CMD_FILTER_MODE_SIMPLE 0x0 /* enum */
1745#define MC_CMD_FILTER_MODE_STRUCTURED 0xffffffff /* enum */ 2676#define MC_CMD_FILTER_MODE_STRUCTURED 0xffffffff /* enum */
2677/* A type value of 1 is unused. */
1746#define MC_CMD_WOL_FILTER_SET_IN_WOL_TYPE_OFST 4 2678#define MC_CMD_WOL_FILTER_SET_IN_WOL_TYPE_OFST 4
1747#define MC_CMD_WOL_TYPE_MAGIC 0x0 /* enum */ 2679/* enum: Magic */
1748#define MC_CMD_WOL_TYPE_WIN_MAGIC 0x2 /* enum */ 2680#define MC_CMD_WOL_TYPE_MAGIC 0x0
1749#define MC_CMD_WOL_TYPE_IPV4_SYN 0x3 /* enum */ 2681/* enum: MS Windows Magic */
1750#define MC_CMD_WOL_TYPE_IPV6_SYN 0x4 /* enum */ 2682#define MC_CMD_WOL_TYPE_WIN_MAGIC 0x2
1751#define MC_CMD_WOL_TYPE_BITMAP 0x5 /* enum */ 2683/* enum: IPv4 Syn */
1752#define MC_CMD_WOL_TYPE_LINK 0x6 /* enum */ 2684#define MC_CMD_WOL_TYPE_IPV4_SYN 0x3
1753#define MC_CMD_WOL_TYPE_MAX 0x7 /* enum */ 2685/* enum: IPv6 Syn */
2686#define MC_CMD_WOL_TYPE_IPV6_SYN 0x4
2687/* enum: Bitmap */
2688#define MC_CMD_WOL_TYPE_BITMAP 0x5
2689/* enum: Link */
2690#define MC_CMD_WOL_TYPE_LINK 0x6
2691/* enum: (Above this for future use) */
2692#define MC_CMD_WOL_TYPE_MAX 0x7
1754#define MC_CMD_WOL_FILTER_SET_IN_DATA_OFST 8 2693#define MC_CMD_WOL_FILTER_SET_IN_DATA_OFST 8
1755#define MC_CMD_WOL_FILTER_SET_IN_DATA_LEN 4 2694#define MC_CMD_WOL_FILTER_SET_IN_DATA_LEN 4
1756#define MC_CMD_WOL_FILTER_SET_IN_DATA_NUM 46 2695#define MC_CMD_WOL_FILTER_SET_IN_DATA_NUM 46
@@ -1820,7 +2759,7 @@
1820 2759
1821/***********************************/ 2760/***********************************/
1822/* MC_CMD_WOL_FILTER_REMOVE 2761/* MC_CMD_WOL_FILTER_REMOVE
1823 * Remove a WoL filter. 2762 * Remove a WoL filter. Locks required: None. Returns: 0, EINVAL, ENOSYS
1824 */ 2763 */
1825#define MC_CMD_WOL_FILTER_REMOVE 0x33 2764#define MC_CMD_WOL_FILTER_REMOVE 0x33
1826 2765
@@ -1834,7 +2773,8 @@
1834 2773
1835/***********************************/ 2774/***********************************/
1836/* MC_CMD_WOL_FILTER_RESET 2775/* MC_CMD_WOL_FILTER_RESET
1837 * Reset (i.e. remove all) WoL filters. 2776 * Reset (i.e. remove all) WoL filters. Locks required: None. Returns: 0,
2777 * ENOSYS
1838 */ 2778 */
1839#define MC_CMD_WOL_FILTER_RESET 0x34 2779#define MC_CMD_WOL_FILTER_RESET 0x34
1840 2780
@@ -1850,7 +2790,7 @@
1850 2790
1851/***********************************/ 2791/***********************************/
1852/* MC_CMD_SET_MCAST_HASH 2792/* MC_CMD_SET_MCAST_HASH
1853 * Set the MCASH hash value. 2793 * Set the MCAST hash value without otherwise reconfiguring the MAC
1854 */ 2794 */
1855#define MC_CMD_SET_MCAST_HASH 0x35 2795#define MC_CMD_SET_MCAST_HASH 0x35
1856 2796
@@ -1867,7 +2807,8 @@
1867 2807
1868/***********************************/ 2808/***********************************/
1869/* MC_CMD_NVRAM_TYPES 2809/* MC_CMD_NVRAM_TYPES
1870 * Get virtual NVRAM partitions information. 2810 * Return bitfield indicating available types of virtual NVRAM partitions.
2811 * Locks required: none. Returns: 0
1871 */ 2812 */
1872#define MC_CMD_NVRAM_TYPES 0x36 2813#define MC_CMD_NVRAM_TYPES 0x36
1873 2814
@@ -1876,26 +2817,54 @@
1876 2817
1877/* MC_CMD_NVRAM_TYPES_OUT msgresponse */ 2818/* MC_CMD_NVRAM_TYPES_OUT msgresponse */
1878#define MC_CMD_NVRAM_TYPES_OUT_LEN 4 2819#define MC_CMD_NVRAM_TYPES_OUT_LEN 4
2820/* Bit mask of supported types. */
1879#define MC_CMD_NVRAM_TYPES_OUT_TYPES_OFST 0 2821#define MC_CMD_NVRAM_TYPES_OUT_TYPES_OFST 0
1880#define MC_CMD_NVRAM_TYPE_DISABLED_CALLISTO 0x0 /* enum */ 2822/* enum: Disabled callisto. */
1881#define MC_CMD_NVRAM_TYPE_MC_FW 0x1 /* enum */ 2823#define MC_CMD_NVRAM_TYPE_DISABLED_CALLISTO 0x0
1882#define MC_CMD_NVRAM_TYPE_MC_FW_BACKUP 0x2 /* enum */ 2824/* enum: MC firmware. */
1883#define MC_CMD_NVRAM_TYPE_STATIC_CFG_PORT0 0x3 /* enum */ 2825#define MC_CMD_NVRAM_TYPE_MC_FW 0x1
1884#define MC_CMD_NVRAM_TYPE_STATIC_CFG_PORT1 0x4 /* enum */ 2826/* enum: MC backup firmware. */
1885#define MC_CMD_NVRAM_TYPE_DYNAMIC_CFG_PORT0 0x5 /* enum */ 2827#define MC_CMD_NVRAM_TYPE_MC_FW_BACKUP 0x2
1886#define MC_CMD_NVRAM_TYPE_DYNAMIC_CFG_PORT1 0x6 /* enum */ 2828/* enum: Static configuration Port0. */
1887#define MC_CMD_NVRAM_TYPE_EXP_ROM 0x7 /* enum */ 2829#define MC_CMD_NVRAM_TYPE_STATIC_CFG_PORT0 0x3
1888#define MC_CMD_NVRAM_TYPE_EXP_ROM_CFG_PORT0 0x8 /* enum */ 2830/* enum: Static configuration Port1. */
1889#define MC_CMD_NVRAM_TYPE_EXP_ROM_CFG_PORT1 0x9 /* enum */ 2831#define MC_CMD_NVRAM_TYPE_STATIC_CFG_PORT1 0x4
1890#define MC_CMD_NVRAM_TYPE_PHY_PORT0 0xa /* enum */ 2832/* enum: Dynamic configuration Port0. */
1891#define MC_CMD_NVRAM_TYPE_PHY_PORT1 0xb /* enum */ 2833#define MC_CMD_NVRAM_TYPE_DYNAMIC_CFG_PORT0 0x5
1892#define MC_CMD_NVRAM_TYPE_LOG 0xc /* enum */ 2834/* enum: Dynamic configuration Port1. */
1893#define MC_CMD_NVRAM_TYPE_FPGA 0xd /* enum */ 2835#define MC_CMD_NVRAM_TYPE_DYNAMIC_CFG_PORT1 0x6
2836/* enum: Expansion Rom. */
2837#define MC_CMD_NVRAM_TYPE_EXP_ROM 0x7
2838/* enum: Expansion Rom Configuration Port0. */
2839#define MC_CMD_NVRAM_TYPE_EXP_ROM_CFG_PORT0 0x8
2840/* enum: Expansion Rom Configuration Port1. */
2841#define MC_CMD_NVRAM_TYPE_EXP_ROM_CFG_PORT1 0x9
2842/* enum: Phy Configuration Port0. */
2843#define MC_CMD_NVRAM_TYPE_PHY_PORT0 0xa
2844/* enum: Phy Configuration Port1. */
2845#define MC_CMD_NVRAM_TYPE_PHY_PORT1 0xb
2846/* enum: Log. */
2847#define MC_CMD_NVRAM_TYPE_LOG 0xc
2848/* enum: FPGA image. */
2849#define MC_CMD_NVRAM_TYPE_FPGA 0xd
2850/* enum: FPGA backup image */
2851#define MC_CMD_NVRAM_TYPE_FPGA_BACKUP 0xe
2852/* enum: FC firmware. */
2853#define MC_CMD_NVRAM_TYPE_FC_FW 0xf
2854/* enum: FC backup firmware. */
2855#define MC_CMD_NVRAM_TYPE_FC_FW_BACKUP 0x10
2856/* enum: CPLD image. */
2857#define MC_CMD_NVRAM_TYPE_CPLD 0x11
2858/* enum: Licensing information. */
2859#define MC_CMD_NVRAM_TYPE_LICENSE 0x12
2860/* enum: FC Log. */
2861#define MC_CMD_NVRAM_TYPE_FC_LOG 0x13
1894 2862
1895 2863
1896/***********************************/ 2864/***********************************/
1897/* MC_CMD_NVRAM_INFO 2865/* MC_CMD_NVRAM_INFO
1898 * Read info about a virtual NVRAM partition. 2866 * Read info about a virtual NVRAM partition. Locks required: none. Returns: 0,
2867 * EINVAL (bad type).
1899 */ 2868 */
1900#define MC_CMD_NVRAM_INFO 0x37 2869#define MC_CMD_NVRAM_INFO 0x37
1901 2870
@@ -1915,13 +2884,19 @@
1915#define MC_CMD_NVRAM_INFO_OUT_FLAGS_OFST 12 2884#define MC_CMD_NVRAM_INFO_OUT_FLAGS_OFST 12
1916#define MC_CMD_NVRAM_INFO_OUT_PROTECTED_LBN 0 2885#define MC_CMD_NVRAM_INFO_OUT_PROTECTED_LBN 0
1917#define MC_CMD_NVRAM_INFO_OUT_PROTECTED_WIDTH 1 2886#define MC_CMD_NVRAM_INFO_OUT_PROTECTED_WIDTH 1
2887#define MC_CMD_NVRAM_INFO_OUT_TLV_LBN 1
2888#define MC_CMD_NVRAM_INFO_OUT_TLV_WIDTH 1
2889#define MC_CMD_NVRAM_INFO_OUT_A_B_LBN 7
2890#define MC_CMD_NVRAM_INFO_OUT_A_B_WIDTH 1
1918#define MC_CMD_NVRAM_INFO_OUT_PHYSDEV_OFST 16 2891#define MC_CMD_NVRAM_INFO_OUT_PHYSDEV_OFST 16
1919#define MC_CMD_NVRAM_INFO_OUT_PHYSADDR_OFST 20 2892#define MC_CMD_NVRAM_INFO_OUT_PHYSADDR_OFST 20
1920 2893
1921 2894
1922/***********************************/ 2895/***********************************/
1923/* MC_CMD_NVRAM_UPDATE_START 2896/* MC_CMD_NVRAM_UPDATE_START
1924 * Start a group of update operations on a virtual NVRAM partition. 2897 * Start a group of update operations on a virtual NVRAM partition. Locks
2898 * required: PHY_LOCK if type==*PHY*. Returns: 0, EINVAL (bad type), EACCES (if
2899 * PHY_LOCK required and not held).
1925 */ 2900 */
1926#define MC_CMD_NVRAM_UPDATE_START 0x38 2901#define MC_CMD_NVRAM_UPDATE_START 0x38
1927 2902
@@ -1937,7 +2912,9 @@
1937 2912
1938/***********************************/ 2913/***********************************/
1939/* MC_CMD_NVRAM_READ 2914/* MC_CMD_NVRAM_READ
1940 * Read data from a virtual NVRAM partition. 2915 * Read data from a virtual NVRAM partition. Locks required: PHY_LOCK if
2916 * type==*PHY*. Returns: 0, EINVAL (bad type/offset/length), EACCES (if
2917 * PHY_LOCK required and not held)
1941 */ 2918 */
1942#define MC_CMD_NVRAM_READ 0x39 2919#define MC_CMD_NVRAM_READ 0x39
1943 2920
@@ -1947,6 +2924,7 @@
1947/* Enum values, see field(s): */ 2924/* Enum values, see field(s): */
1948/* MC_CMD_NVRAM_TYPES/MC_CMD_NVRAM_TYPES_OUT/TYPES */ 2925/* MC_CMD_NVRAM_TYPES/MC_CMD_NVRAM_TYPES_OUT/TYPES */
1949#define MC_CMD_NVRAM_READ_IN_OFFSET_OFST 4 2926#define MC_CMD_NVRAM_READ_IN_OFFSET_OFST 4
2927/* amount to read in bytes */
1950#define MC_CMD_NVRAM_READ_IN_LENGTH_OFST 8 2928#define MC_CMD_NVRAM_READ_IN_LENGTH_OFST 8
1951 2929
1952/* MC_CMD_NVRAM_READ_OUT msgresponse */ 2930/* MC_CMD_NVRAM_READ_OUT msgresponse */
@@ -1961,7 +2939,9 @@
1961 2939
1962/***********************************/ 2940/***********************************/
1963/* MC_CMD_NVRAM_WRITE 2941/* MC_CMD_NVRAM_WRITE
1964 * Write data to a virtual NVRAM partition. 2942 * Write data to a virtual NVRAM partition. Locks required: PHY_LOCK if
2943 * type==*PHY*. Returns: 0, EINVAL (bad type/offset/length), EACCES (if
2944 * PHY_LOCK required and not held)
1965 */ 2945 */
1966#define MC_CMD_NVRAM_WRITE 0x3a 2946#define MC_CMD_NVRAM_WRITE 0x3a
1967 2947
@@ -1985,7 +2965,9 @@
1985 2965
1986/***********************************/ 2966/***********************************/
1987/* MC_CMD_NVRAM_ERASE 2967/* MC_CMD_NVRAM_ERASE
1988 * Erase sector(s) from a virtual NVRAM partition. 2968 * Erase sector(s) from a virtual NVRAM partition. Locks required: PHY_LOCK if
2969 * type==*PHY*. Returns: 0, EINVAL (bad type/offset/length), EACCES (if
2970 * PHY_LOCK required and not held)
1989 */ 2971 */
1990#define MC_CMD_NVRAM_ERASE 0x3b 2972#define MC_CMD_NVRAM_ERASE 0x3b
1991 2973
@@ -2003,7 +2985,9 @@
2003 2985
2004/***********************************/ 2986/***********************************/
2005/* MC_CMD_NVRAM_UPDATE_FINISH 2987/* MC_CMD_NVRAM_UPDATE_FINISH
2006 * Finish a group of update operations on a virtual NVRAM partition. 2988 * Finish a group of update operations on a virtual NVRAM partition. Locks
2989 * required: PHY_LOCK if type==*PHY*. Returns: 0, EINVAL (bad
2990 * type/offset/length), EACCES (if PHY_LOCK required and not held)
2007 */ 2991 */
2008#define MC_CMD_NVRAM_UPDATE_FINISH 0x3c 2992#define MC_CMD_NVRAM_UPDATE_FINISH 0x3c
2009 2993
@@ -2021,6 +3005,20 @@
2021/***********************************/ 3005/***********************************/
2022/* MC_CMD_REBOOT 3006/* MC_CMD_REBOOT
2023 * Reboot the MC. 3007 * Reboot the MC.
3008 *
3009 * The AFTER_ASSERTION flag is intended to be used when the driver notices an
3010 * assertion failure (at which point it is expected to perform a complete tear
3011 * down and reinitialise), to allow both ports to reset the MC once in an
3012 * atomic fashion.
3013 *
3014 * Production mc firmwares are generally compiled with REBOOT_ON_ASSERT=1,
3015 * which means that they will automatically reboot out of the assertion
3016 * handler, so this is in practise an optional operation. It is still
3017 * recommended that drivers execute this to support custom firmwares with
3018 * REBOOT_ON_ASSERT=0.
3019 *
3020 * Locks required: NONE Returns: Nothing. You get back a response with ERR=1,
3021 * DATALEN=0
2024 */ 3022 */
2025#define MC_CMD_REBOOT 0x3d 3023#define MC_CMD_REBOOT 0x3d
2026 3024
@@ -2035,7 +3033,9 @@
2035 3033
2036/***********************************/ 3034/***********************************/
2037/* MC_CMD_SCHEDINFO 3035/* MC_CMD_SCHEDINFO
2038 * Request scheduler info. 3036 * Request scheduler info. Locks required: NONE. Returns: An array of
3037 * (timeslice,maximum overrun), one for each thread, in ascending order of
3038 * thread address.
2039 */ 3039 */
2040#define MC_CMD_SCHEDINFO 0x3e 3040#define MC_CMD_SCHEDINFO 0x3e
2041 3041
@@ -2054,14 +3054,24 @@
2054 3054
2055/***********************************/ 3055/***********************************/
2056/* MC_CMD_REBOOT_MODE 3056/* MC_CMD_REBOOT_MODE
3057 * Set the mode for the next MC reboot. Locks required: NONE. Sets the reboot
3058 * mode to the specified value. Returns the old mode.
2057 */ 3059 */
2058#define MC_CMD_REBOOT_MODE 0x3f 3060#define MC_CMD_REBOOT_MODE 0x3f
2059 3061
2060/* MC_CMD_REBOOT_MODE_IN msgrequest */ 3062/* MC_CMD_REBOOT_MODE_IN msgrequest */
2061#define MC_CMD_REBOOT_MODE_IN_LEN 4 3063#define MC_CMD_REBOOT_MODE_IN_LEN 4
2062#define MC_CMD_REBOOT_MODE_IN_VALUE_OFST 0 3064#define MC_CMD_REBOOT_MODE_IN_VALUE_OFST 0
2063#define MC_CMD_REBOOT_MODE_NORMAL 0x0 /* enum */ 3065/* enum: Normal. */
2064#define MC_CMD_REBOOT_MODE_SNAPPER 0x3 /* enum */ 3066#define MC_CMD_REBOOT_MODE_NORMAL 0x0
3067/* enum: Power-on Reset. */
3068#define MC_CMD_REBOOT_MODE_POR 0x2
3069/* enum: Snapper. */
3070#define MC_CMD_REBOOT_MODE_SNAPPER 0x3
3071/* enum: snapper fake POR */
3072#define MC_CMD_REBOOT_MODE_SNAPPER_POR 0x4
3073#define MC_CMD_REBOOT_MODE_IN_FAKE_LBN 7
3074#define MC_CMD_REBOOT_MODE_IN_FAKE_WIDTH 1
2065 3075
2066/* MC_CMD_REBOOT_MODE_OUT msgresponse */ 3076/* MC_CMD_REBOOT_MODE_OUT msgresponse */
2067#define MC_CMD_REBOOT_MODE_OUT_LEN 4 3077#define MC_CMD_REBOOT_MODE_OUT_LEN 4
@@ -2071,32 +3081,145 @@
2071/***********************************/ 3081/***********************************/
2072/* MC_CMD_SENSOR_INFO 3082/* MC_CMD_SENSOR_INFO
2073 * Returns information about every available sensor. 3083 * Returns information about every available sensor.
3084 *
3085 * Each sensor has a single (16bit) value, and a corresponding state. The
3086 * mapping between value and state is nominally determined by the MC, but may
3087 * be implemented using up to 2 ranges per sensor.
3088 *
3089 * This call returns a mask (32bit) of the sensors that are supported by this
3090 * platform, then an array of sensor information structures, in order of sensor
3091 * type (but without gaps for unimplemented sensors). Each structure defines
3092 * the ranges for the corresponding sensor. An unused range is indicated by
3093 * equal limit values. If one range is used, a value outside that range results
3094 * in STATE_FATAL. If two ranges are used, a value outside the second range
3095 * results in STATE_FATAL while a value outside the first and inside the second
3096 * range results in STATE_WARNING.
3097 *
3098 * Sensor masks and sensor information arrays are organised into pages. For
3099 * backward compatibility, older host software can only use sensors in page 0.
3100 * Bit 32 in the sensor mask was previously unused, and is no reserved for use
3101 * as the next page flag.
3102 *
3103 * If the request does not contain a PAGE value then firmware will only return
3104 * page 0 of sensor information, with bit 31 in the sensor mask cleared.
3105 *
3106 * If the request contains a PAGE value then firmware responds with the sensor
3107 * mask and sensor information array for that page of sensors. In this case bit
3108 * 31 in the mask is set if another page exists.
3109 *
3110 * Locks required: None Returns: 0
2074 */ 3111 */
2075#define MC_CMD_SENSOR_INFO 0x41 3112#define MC_CMD_SENSOR_INFO 0x41
2076 3113
2077/* MC_CMD_SENSOR_INFO_IN msgrequest */ 3114/* MC_CMD_SENSOR_INFO_IN msgrequest */
2078#define MC_CMD_SENSOR_INFO_IN_LEN 0 3115#define MC_CMD_SENSOR_INFO_IN_LEN 0
2079 3116
3117/* MC_CMD_SENSOR_INFO_EXT_IN msgrequest */
3118#define MC_CMD_SENSOR_INFO_EXT_IN_LEN 4
3119/* Which page of sensors to report.
3120 *
3121 * Page 0 contains sensors 0 to 30 (sensor 31 is the next page bit).
3122 *
3123 * Page 1 contains sensors 32 to 62 (sensor 63 is the next page bit). etc.
3124 */
3125#define MC_CMD_SENSOR_INFO_EXT_IN_PAGE_OFST 0
3126
2080/* MC_CMD_SENSOR_INFO_OUT msgresponse */ 3127/* MC_CMD_SENSOR_INFO_OUT msgresponse */
2081#define MC_CMD_SENSOR_INFO_OUT_LENMIN 12 3128#define MC_CMD_SENSOR_INFO_OUT_LENMIN 12
2082#define MC_CMD_SENSOR_INFO_OUT_LENMAX 252 3129#define MC_CMD_SENSOR_INFO_OUT_LENMAX 252
2083#define MC_CMD_SENSOR_INFO_OUT_LEN(num) (4+8*(num)) 3130#define MC_CMD_SENSOR_INFO_OUT_LEN(num) (4+8*(num))
2084#define MC_CMD_SENSOR_INFO_OUT_MASK_OFST 0 3131#define MC_CMD_SENSOR_INFO_OUT_MASK_OFST 0
2085#define MC_CMD_SENSOR_CONTROLLER_TEMP 0x0 /* enum */ 3132/* enum: Controller temperature: degC */
2086#define MC_CMD_SENSOR_PHY_COMMON_TEMP 0x1 /* enum */ 3133#define MC_CMD_SENSOR_CONTROLLER_TEMP 0x0
2087#define MC_CMD_SENSOR_CONTROLLER_COOLING 0x2 /* enum */ 3134/* enum: Phy common temperature: degC */
2088#define MC_CMD_SENSOR_PHY0_TEMP 0x3 /* enum */ 3135#define MC_CMD_SENSOR_PHY_COMMON_TEMP 0x1
2089#define MC_CMD_SENSOR_PHY0_COOLING 0x4 /* enum */ 3136/* enum: Controller cooling: bool */
2090#define MC_CMD_SENSOR_PHY1_TEMP 0x5 /* enum */ 3137#define MC_CMD_SENSOR_CONTROLLER_COOLING 0x2
2091#define MC_CMD_SENSOR_PHY1_COOLING 0x6 /* enum */ 3138/* enum: Phy 0 temperature: degC */
2092#define MC_CMD_SENSOR_IN_1V0 0x7 /* enum */ 3139#define MC_CMD_SENSOR_PHY0_TEMP 0x3
2093#define MC_CMD_SENSOR_IN_1V2 0x8 /* enum */ 3140/* enum: Phy 0 cooling: bool */
2094#define MC_CMD_SENSOR_IN_1V8 0x9 /* enum */ 3141#define MC_CMD_SENSOR_PHY0_COOLING 0x4
2095#define MC_CMD_SENSOR_IN_2V5 0xa /* enum */ 3142/* enum: Phy 1 temperature: degC */
2096#define MC_CMD_SENSOR_IN_3V3 0xb /* enum */ 3143#define MC_CMD_SENSOR_PHY1_TEMP 0x5
2097#define MC_CMD_SENSOR_IN_12V0 0xc /* enum */ 3144/* enum: Phy 1 cooling: bool */
2098#define MC_CMD_SENSOR_IN_1V2A 0xd /* enum */ 3145#define MC_CMD_SENSOR_PHY1_COOLING 0x6
2099#define MC_CMD_SENSOR_IN_VREF 0xe /* enum */ 3146/* enum: 1.0v power: mV */
3147#define MC_CMD_SENSOR_IN_1V0 0x7
3148/* enum: 1.2v power: mV */
3149#define MC_CMD_SENSOR_IN_1V2 0x8
3150/* enum: 1.8v power: mV */
3151#define MC_CMD_SENSOR_IN_1V8 0x9
3152/* enum: 2.5v power: mV */
3153#define MC_CMD_SENSOR_IN_2V5 0xa
3154/* enum: 3.3v power: mV */
3155#define MC_CMD_SENSOR_IN_3V3 0xb
3156/* enum: 12v power: mV */
3157#define MC_CMD_SENSOR_IN_12V0 0xc
3158/* enum: 1.2v analogue power: mV */
3159#define MC_CMD_SENSOR_IN_1V2A 0xd
3160/* enum: reference voltage: mV */
3161#define MC_CMD_SENSOR_IN_VREF 0xe
3162/* enum: AOE FPGA power: mV */
3163#define MC_CMD_SENSOR_OUT_VAOE 0xf
3164/* enum: AOE FPGA temperature: degC */
3165#define MC_CMD_SENSOR_AOE_TEMP 0x10
3166/* enum: AOE FPGA PSU temperature: degC */
3167#define MC_CMD_SENSOR_PSU_AOE_TEMP 0x11
3168/* enum: AOE PSU temperature: degC */
3169#define MC_CMD_SENSOR_PSU_TEMP 0x12
3170/* enum: Fan 0 speed: RPM */
3171#define MC_CMD_SENSOR_FAN_0 0x13
3172/* enum: Fan 1 speed: RPM */
3173#define MC_CMD_SENSOR_FAN_1 0x14
3174/* enum: Fan 2 speed: RPM */
3175#define MC_CMD_SENSOR_FAN_2 0x15
3176/* enum: Fan 3 speed: RPM */
3177#define MC_CMD_SENSOR_FAN_3 0x16
3178/* enum: Fan 4 speed: RPM */
3179#define MC_CMD_SENSOR_FAN_4 0x17
3180/* enum: AOE FPGA input power: mV */
3181#define MC_CMD_SENSOR_IN_VAOE 0x18
3182/* enum: AOE FPGA current: mA */
3183#define MC_CMD_SENSOR_OUT_IAOE 0x19
3184/* enum: AOE FPGA input current: mA */
3185#define MC_CMD_SENSOR_IN_IAOE 0x1a
3186/* enum: NIC power consumption: W */
3187#define MC_CMD_SENSOR_NIC_POWER 0x1b
3188/* enum: 0.9v power voltage: mV */
3189#define MC_CMD_SENSOR_IN_0V9 0x1c
3190/* enum: 0.9v power current: mA */
3191#define MC_CMD_SENSOR_IN_I0V9 0x1d
3192/* enum: 1.2v power current: mA */
3193#define MC_CMD_SENSOR_IN_I1V2 0x1e
3194/* enum: Not a sensor: reserved for the next page flag */
3195#define MC_CMD_SENSOR_PAGE0_NEXT 0x1f
3196/* enum: 0.9v power voltage (at ADC): mV */
3197#define MC_CMD_SENSOR_IN_0V9_ADC 0x20
3198/* enum: Controller temperature 2: degC */
3199#define MC_CMD_SENSOR_CONTROLLER_2_TEMP 0x21
3200/* enum: Voltage regulator internal temperature: degC */
3201#define MC_CMD_SENSOR_VREG_INTERNAL_TEMP 0x22
3202/* enum: 0.9V voltage regulator temperature: degC */
3203#define MC_CMD_SENSOR_VREG_0V9_TEMP 0x23
3204/* enum: 1.2V voltage regulator temperature: degC */
3205#define MC_CMD_SENSOR_VREG_1V2_TEMP 0x24
3206/* enum: controller internal temperature sensor voltage (internal ADC): mV */
3207#define MC_CMD_SENSOR_CONTROLLER_VPTAT 0x25
3208/* enum: controller internal temperature (internal ADC): degC */
3209#define MC_CMD_SENSOR_CONTROLLER_INTERNAL_TEMP 0x26
3210/* enum: controller internal temperature sensor voltage (external ADC): mV */
3211#define MC_CMD_SENSOR_CONTROLLER_VPTAT_EXTADC 0x27
3212/* enum: controller internal temperature (external ADC): degC */
3213#define MC_CMD_SENSOR_CONTROLLER_INTERNAL_TEMP_EXTADC 0x28
3214/* enum: ambient temperature: degC */
3215#define MC_CMD_SENSOR_AMBIENT_TEMP 0x29
3216/* enum: air flow: bool */
3217#define MC_CMD_SENSOR_AIRFLOW 0x2a
3218/* enum: voltage between VSS08D and VSS08D at CSR: mV */
3219#define MC_CMD_SENSOR_VDD08D_VSS08D_CSR 0x2b
3220/* enum: voltage between VSS08D and VSS08D at CSR (external ADC): mV */
3221#define MC_CMD_SENSOR_VDD08D_VSS08D_CSR_EXTADC 0x2c
3222/* MC_CMD_SENSOR_INFO_ENTRY_TYPEDEF */
2100#define MC_CMD_SENSOR_ENTRY_OFST 4 3223#define MC_CMD_SENSOR_ENTRY_OFST 4
2101#define MC_CMD_SENSOR_ENTRY_LEN 8 3224#define MC_CMD_SENSOR_ENTRY_LEN 8
2102#define MC_CMD_SENSOR_ENTRY_LO_OFST 4 3225#define MC_CMD_SENSOR_ENTRY_LO_OFST 4
@@ -2104,6 +3227,23 @@
2104#define MC_CMD_SENSOR_ENTRY_MINNUM 1 3227#define MC_CMD_SENSOR_ENTRY_MINNUM 1
2105#define MC_CMD_SENSOR_ENTRY_MAXNUM 31 3228#define MC_CMD_SENSOR_ENTRY_MAXNUM 31
2106 3229
3230/* MC_CMD_SENSOR_INFO_EXT_OUT msgresponse */
3231#define MC_CMD_SENSOR_INFO_EXT_OUT_LENMIN 12
3232#define MC_CMD_SENSOR_INFO_EXT_OUT_LENMAX 252
3233#define MC_CMD_SENSOR_INFO_EXT_OUT_LEN(num) (4+8*(num))
3234#define MC_CMD_SENSOR_INFO_EXT_OUT_MASK_OFST 0
3235/* Enum values, see field(s): */
3236/* MC_CMD_SENSOR_INFO_OUT */
3237#define MC_CMD_SENSOR_INFO_EXT_OUT_NEXT_PAGE_LBN 31
3238#define MC_CMD_SENSOR_INFO_EXT_OUT_NEXT_PAGE_WIDTH 1
3239/* MC_CMD_SENSOR_INFO_ENTRY_TYPEDEF */
3240/* MC_CMD_SENSOR_ENTRY_OFST 4 */
3241/* MC_CMD_SENSOR_ENTRY_LEN 8 */
3242/* MC_CMD_SENSOR_ENTRY_LO_OFST 4 */
3243/* MC_CMD_SENSOR_ENTRY_HI_OFST 8 */
3244/* MC_CMD_SENSOR_ENTRY_MINNUM 1 */
3245/* MC_CMD_SENSOR_ENTRY_MAXNUM 31 */
3246
2107/* MC_CMD_SENSOR_INFO_ENTRY_TYPEDEF structuredef */ 3247/* MC_CMD_SENSOR_INFO_ENTRY_TYPEDEF structuredef */
2108#define MC_CMD_SENSOR_INFO_ENTRY_TYPEDEF_LEN 8 3248#define MC_CMD_SENSOR_INFO_ENTRY_TYPEDEF_LEN 8
2109#define MC_CMD_SENSOR_INFO_ENTRY_TYPEDEF_MIN1_OFST 0 3249#define MC_CMD_SENSOR_INFO_ENTRY_TYPEDEF_MIN1_OFST 0
@@ -2126,39 +3266,80 @@
2126 3266
2127/***********************************/ 3267/***********************************/
2128/* MC_CMD_READ_SENSORS 3268/* MC_CMD_READ_SENSORS
2129 * Returns the current reading from each sensor. 3269 * Returns the current reading from each sensor. DMAs an array of sensor
3270 * readings, in order of sensor type (but without gaps for unimplemented
3271 * sensors), into host memory. Each array element is a
3272 * MC_CMD_SENSOR_VALUE_ENTRY_TYPEDEF dword.
3273 *
3274 * If the request does not contain the LENGTH field then only sensors 0 to 30
3275 * are reported, to avoid DMA buffer overflow in older host software. If the
3276 * sensor reading require more space than the LENGTH allows, then return
3277 * EINVAL.
3278 *
3279 * The MC will send a SENSOREVT event every time any sensor changes state. The
3280 * driver is responsible for ensuring that it doesn't miss any events. The
3281 * board will function normally if all sensors are in STATE_OK or
3282 * STATE_WARNING. Otherwise the board should not be expected to function.
2130 */ 3283 */
2131#define MC_CMD_READ_SENSORS 0x42 3284#define MC_CMD_READ_SENSORS 0x42
2132 3285
2133/* MC_CMD_READ_SENSORS_IN msgrequest */ 3286/* MC_CMD_READ_SENSORS_IN msgrequest */
2134#define MC_CMD_READ_SENSORS_IN_LEN 8 3287#define MC_CMD_READ_SENSORS_IN_LEN 8
3288/* DMA address of host buffer for sensor readings (must be 4Kbyte aligned). */
2135#define MC_CMD_READ_SENSORS_IN_DMA_ADDR_OFST 0 3289#define MC_CMD_READ_SENSORS_IN_DMA_ADDR_OFST 0
2136#define MC_CMD_READ_SENSORS_IN_DMA_ADDR_LEN 8 3290#define MC_CMD_READ_SENSORS_IN_DMA_ADDR_LEN 8
2137#define MC_CMD_READ_SENSORS_IN_DMA_ADDR_LO_OFST 0 3291#define MC_CMD_READ_SENSORS_IN_DMA_ADDR_LO_OFST 0
2138#define MC_CMD_READ_SENSORS_IN_DMA_ADDR_HI_OFST 4 3292#define MC_CMD_READ_SENSORS_IN_DMA_ADDR_HI_OFST 4
2139 3293
3294/* MC_CMD_READ_SENSORS_EXT_IN msgrequest */
3295#define MC_CMD_READ_SENSORS_EXT_IN_LEN 12
3296/* DMA address of host buffer for sensor readings */
3297#define MC_CMD_READ_SENSORS_EXT_IN_DMA_ADDR_OFST 0
3298#define MC_CMD_READ_SENSORS_EXT_IN_DMA_ADDR_LEN 8
3299#define MC_CMD_READ_SENSORS_EXT_IN_DMA_ADDR_LO_OFST 0
3300#define MC_CMD_READ_SENSORS_EXT_IN_DMA_ADDR_HI_OFST 4
3301/* Size in bytes of host buffer. */
3302#define MC_CMD_READ_SENSORS_EXT_IN_LENGTH_OFST 8
3303
2140/* MC_CMD_READ_SENSORS_OUT msgresponse */ 3304/* MC_CMD_READ_SENSORS_OUT msgresponse */
2141#define MC_CMD_READ_SENSORS_OUT_LEN 0 3305#define MC_CMD_READ_SENSORS_OUT_LEN 0
2142 3306
3307/* MC_CMD_READ_SENSORS_EXT_OUT msgresponse */
3308#define MC_CMD_READ_SENSORS_EXT_OUT_LEN 0
3309
2143/* MC_CMD_SENSOR_VALUE_ENTRY_TYPEDEF structuredef */ 3310/* MC_CMD_SENSOR_VALUE_ENTRY_TYPEDEF structuredef */
2144#define MC_CMD_SENSOR_VALUE_ENTRY_TYPEDEF_LEN 3 3311#define MC_CMD_SENSOR_VALUE_ENTRY_TYPEDEF_LEN 4
2145#define MC_CMD_SENSOR_VALUE_ENTRY_TYPEDEF_VALUE_OFST 0 3312#define MC_CMD_SENSOR_VALUE_ENTRY_TYPEDEF_VALUE_OFST 0
2146#define MC_CMD_SENSOR_VALUE_ENTRY_TYPEDEF_VALUE_LEN 2 3313#define MC_CMD_SENSOR_VALUE_ENTRY_TYPEDEF_VALUE_LEN 2
2147#define MC_CMD_SENSOR_VALUE_ENTRY_TYPEDEF_VALUE_LBN 0 3314#define MC_CMD_SENSOR_VALUE_ENTRY_TYPEDEF_VALUE_LBN 0
2148#define MC_CMD_SENSOR_VALUE_ENTRY_TYPEDEF_VALUE_WIDTH 16 3315#define MC_CMD_SENSOR_VALUE_ENTRY_TYPEDEF_VALUE_WIDTH 16
2149#define MC_CMD_SENSOR_VALUE_ENTRY_TYPEDEF_STATE_OFST 2 3316#define MC_CMD_SENSOR_VALUE_ENTRY_TYPEDEF_STATE_OFST 2
2150#define MC_CMD_SENSOR_VALUE_ENTRY_TYPEDEF_STATE_LEN 1 3317#define MC_CMD_SENSOR_VALUE_ENTRY_TYPEDEF_STATE_LEN 1
2151#define MC_CMD_SENSOR_STATE_OK 0x0 /* enum */ 3318/* enum: Ok. */
2152#define MC_CMD_SENSOR_STATE_WARNING 0x1 /* enum */ 3319#define MC_CMD_SENSOR_STATE_OK 0x0
2153#define MC_CMD_SENSOR_STATE_FATAL 0x2 /* enum */ 3320/* enum: Breached warning threshold. */
2154#define MC_CMD_SENSOR_STATE_BROKEN 0x3 /* enum */ 3321#define MC_CMD_SENSOR_STATE_WARNING 0x1
3322/* enum: Breached fatal threshold. */
3323#define MC_CMD_SENSOR_STATE_FATAL 0x2
3324/* enum: Fault with sensor. */
3325#define MC_CMD_SENSOR_STATE_BROKEN 0x3
3326/* enum: Sensor is working but does not currently have a reading. */
3327#define MC_CMD_SENSOR_STATE_NO_READING 0x4
2155#define MC_CMD_SENSOR_VALUE_ENTRY_TYPEDEF_STATE_LBN 16 3328#define MC_CMD_SENSOR_VALUE_ENTRY_TYPEDEF_STATE_LBN 16
2156#define MC_CMD_SENSOR_VALUE_ENTRY_TYPEDEF_STATE_WIDTH 8 3329#define MC_CMD_SENSOR_VALUE_ENTRY_TYPEDEF_STATE_WIDTH 8
3330#define MC_CMD_SENSOR_VALUE_ENTRY_TYPEDEF_TYPE_OFST 3
3331#define MC_CMD_SENSOR_VALUE_ENTRY_TYPEDEF_TYPE_LEN 1
3332/* Enum values, see field(s): */
3333/* MC_CMD_SENSOR_INFO/MC_CMD_SENSOR_INFO_OUT/MASK */
3334#define MC_CMD_SENSOR_VALUE_ENTRY_TYPEDEF_TYPE_LBN 24
3335#define MC_CMD_SENSOR_VALUE_ENTRY_TYPEDEF_TYPE_WIDTH 8
2157 3336
2158 3337
2159/***********************************/ 3338/***********************************/
2160/* MC_CMD_GET_PHY_STATE 3339/* MC_CMD_GET_PHY_STATE
2161 * Report current state of PHY. 3340 * Report current state of PHY. A 'zombie' PHY is a PHY that has failed to boot
3341 * (e.g. due to missing or corrupted firmware). Locks required: None. Return
3342 * code: 0
2162 */ 3343 */
2163#define MC_CMD_GET_PHY_STATE 0x43 3344#define MC_CMD_GET_PHY_STATE 0x43
2164 3345
@@ -2168,13 +3349,16 @@
2168/* MC_CMD_GET_PHY_STATE_OUT msgresponse */ 3349/* MC_CMD_GET_PHY_STATE_OUT msgresponse */
2169#define MC_CMD_GET_PHY_STATE_OUT_LEN 4 3350#define MC_CMD_GET_PHY_STATE_OUT_LEN 4
2170#define MC_CMD_GET_PHY_STATE_OUT_STATE_OFST 0 3351#define MC_CMD_GET_PHY_STATE_OUT_STATE_OFST 0
2171#define MC_CMD_PHY_STATE_OK 0x1 /* enum */ 3352/* enum: Ok. */
2172#define MC_CMD_PHY_STATE_ZOMBIE 0x2 /* enum */ 3353#define MC_CMD_PHY_STATE_OK 0x1
3354/* enum: Faulty. */
3355#define MC_CMD_PHY_STATE_ZOMBIE 0x2
2173 3356
2174 3357
2175/***********************************/ 3358/***********************************/
2176/* MC_CMD_SETUP_8021QBB 3359/* MC_CMD_SETUP_8021QBB
2177 * 802.1Qbb control. 3360 * 802.1Qbb control. 8 Tx queues that map to priorities 0 - 7. Use all 1s to
3361 * disable 802.Qbb for a given priority.
2178 */ 3362 */
2179#define MC_CMD_SETUP_8021QBB 0x44 3363#define MC_CMD_SETUP_8021QBB 0x44
2180 3364
@@ -2189,7 +3373,7 @@
2189 3373
2190/***********************************/ 3374/***********************************/
2191/* MC_CMD_WOL_FILTER_GET 3375/* MC_CMD_WOL_FILTER_GET
2192 * Retrieve ID of any WoL filters. 3376 * Retrieve ID of any WoL filters. Locks required: None. Returns: 0, ENOSYS
2193 */ 3377 */
2194#define MC_CMD_WOL_FILTER_GET 0x45 3378#define MC_CMD_WOL_FILTER_GET 0x45
2195 3379
@@ -2203,7 +3387,8 @@
2203 3387
2204/***********************************/ 3388/***********************************/
2205/* MC_CMD_ADD_LIGHTSOUT_OFFLOAD 3389/* MC_CMD_ADD_LIGHTSOUT_OFFLOAD
2206 * Add a protocol offload to NIC for lights-out state. 3390 * Add a protocol offload to NIC for lights-out state. Locks required: None.
3391 * Returns: 0, ENOSYS
2207 */ 3392 */
2208#define MC_CMD_ADD_LIGHTSOUT_OFFLOAD 0x46 3393#define MC_CMD_ADD_LIGHTSOUT_OFFLOAD 0x46
2209 3394
@@ -2243,7 +3428,8 @@
2243 3428
2244/***********************************/ 3429/***********************************/
2245/* MC_CMD_REMOVE_LIGHTSOUT_OFFLOAD 3430/* MC_CMD_REMOVE_LIGHTSOUT_OFFLOAD
2246 * Remove a protocol offload from NIC for lights-out state. 3431 * Remove a protocol offload from NIC for lights-out state. Locks required:
3432 * None. Returns: 0, ENOSYS
2247 */ 3433 */
2248#define MC_CMD_REMOVE_LIGHTSOUT_OFFLOAD 0x47 3434#define MC_CMD_REMOVE_LIGHTSOUT_OFFLOAD 0x47
2249 3435
@@ -2258,7 +3444,7 @@
2258 3444
2259/***********************************/ 3445/***********************************/
2260/* MC_CMD_MAC_RESET_RESTORE 3446/* MC_CMD_MAC_RESET_RESTORE
2261 * Restore MAC after block reset. 3447 * Restore MAC after block reset. Locks required: None. Returns: 0.
2262 */ 3448 */
2263#define MC_CMD_MAC_RESET_RESTORE 0x48 3449#define MC_CMD_MAC_RESET_RESTORE 0x48
2264 3450
@@ -2271,6 +3457,9 @@
2271 3457
2272/***********************************/ 3458/***********************************/
2273/* MC_CMD_TESTASSERT 3459/* MC_CMD_TESTASSERT
3460 * Deliberately trigger an assert-detonation in the firmware for testing
3461 * purposes (i.e. to allow tests that the driver copes gracefully). Locks
3462 * required: None Returns: 0
2274 */ 3463 */
2275#define MC_CMD_TESTASSERT 0x49 3464#define MC_CMD_TESTASSERT 0x49
2276 3465
@@ -2283,14 +3472,23 @@
2283 3472
2284/***********************************/ 3473/***********************************/
2285/* MC_CMD_WORKAROUND 3474/* MC_CMD_WORKAROUND
2286 * Enable/Disable a given workaround. 3475 * Enable/Disable a given workaround. The mcfw will return EINVAL if it doesn't
3476 * understand the given workaround number - which should not be treated as a
3477 * hard error by client code. This op does not imply any semantics about each
3478 * workaround, that's between the driver and the mcfw on a per-workaround
3479 * basis. Locks required: None. Returns: 0, EINVAL .
2287 */ 3480 */
2288#define MC_CMD_WORKAROUND 0x4a 3481#define MC_CMD_WORKAROUND 0x4a
2289 3482
2290/* MC_CMD_WORKAROUND_IN msgrequest */ 3483/* MC_CMD_WORKAROUND_IN msgrequest */
2291#define MC_CMD_WORKAROUND_IN_LEN 8 3484#define MC_CMD_WORKAROUND_IN_LEN 8
2292#define MC_CMD_WORKAROUND_IN_TYPE_OFST 0 3485#define MC_CMD_WORKAROUND_IN_TYPE_OFST 0
2293#define MC_CMD_WORKAROUND_BUG17230 0x1 /* enum */ 3486/* enum: Bug 17230 work around. */
3487#define MC_CMD_WORKAROUND_BUG17230 0x1
3488/* enum: Bug 35388 work around (unsafe EVQ writes). */
3489#define MC_CMD_WORKAROUND_BUG35388 0x2
3490/* enum: Bug35017 workaround (A64 tables must be identity map) */
3491#define MC_CMD_WORKAROUND_BUG35017 0x3
2294#define MC_CMD_WORKAROUND_IN_ENABLED_OFST 4 3492#define MC_CMD_WORKAROUND_IN_ENABLED_OFST 4
2295 3493
2296/* MC_CMD_WORKAROUND_OUT msgresponse */ 3494/* MC_CMD_WORKAROUND_OUT msgresponse */
@@ -2299,7 +3497,12 @@
2299 3497
2300/***********************************/ 3498/***********************************/
2301/* MC_CMD_GET_PHY_MEDIA_INFO 3499/* MC_CMD_GET_PHY_MEDIA_INFO
2302 * Read media-specific data from PHY. 3500 * Read media-specific data from PHY (e.g. SFP/SFP+ module ID information for
3501 * SFP+ PHYs). The 'media type' can be found via GET_PHY_CFG
3502 * (GET_PHY_CFG_OUT_MEDIA_TYPE); the valid 'page number' input values, and the
3503 * output data, are interpreted on a per-type basis. For SFP+: PAGE=0 or 1
3504 * returns a 128-byte block read from module I2C address 0xA0 offset 0 or 0x80.
3505 * Anything else: currently undefined. Locks required: None. Return code: 0.
2303 */ 3506 */
2304#define MC_CMD_GET_PHY_MEDIA_INFO 0x4b 3507#define MC_CMD_GET_PHY_MEDIA_INFO 0x4b
2305 3508
@@ -2311,6 +3514,7 @@
2311#define MC_CMD_GET_PHY_MEDIA_INFO_OUT_LENMIN 5 3514#define MC_CMD_GET_PHY_MEDIA_INFO_OUT_LENMIN 5
2312#define MC_CMD_GET_PHY_MEDIA_INFO_OUT_LENMAX 252 3515#define MC_CMD_GET_PHY_MEDIA_INFO_OUT_LENMAX 252
2313#define MC_CMD_GET_PHY_MEDIA_INFO_OUT_LEN(num) (4+1*(num)) 3516#define MC_CMD_GET_PHY_MEDIA_INFO_OUT_LEN(num) (4+1*(num))
3517/* in bytes */
2314#define MC_CMD_GET_PHY_MEDIA_INFO_OUT_DATALEN_OFST 0 3518#define MC_CMD_GET_PHY_MEDIA_INFO_OUT_DATALEN_OFST 0
2315#define MC_CMD_GET_PHY_MEDIA_INFO_OUT_DATA_OFST 4 3519#define MC_CMD_GET_PHY_MEDIA_INFO_OUT_DATA_OFST 4
2316#define MC_CMD_GET_PHY_MEDIA_INFO_OUT_DATA_LEN 1 3520#define MC_CMD_GET_PHY_MEDIA_INFO_OUT_DATA_LEN 1
@@ -2320,7 +3524,8 @@
2320 3524
2321/***********************************/ 3525/***********************************/
2322/* MC_CMD_NVRAM_TEST 3526/* MC_CMD_NVRAM_TEST
2323 * Test a particular NVRAM partition. 3527 * Test a particular NVRAM partition for valid contents (where "valid" depends
3528 * on the type of partition).
2324 */ 3529 */
2325#define MC_CMD_NVRAM_TEST 0x4c 3530#define MC_CMD_NVRAM_TEST 0x4c
2326 3531
@@ -2333,22 +3538,31 @@
2333/* MC_CMD_NVRAM_TEST_OUT msgresponse */ 3538/* MC_CMD_NVRAM_TEST_OUT msgresponse */
2334#define MC_CMD_NVRAM_TEST_OUT_LEN 4 3539#define MC_CMD_NVRAM_TEST_OUT_LEN 4
2335#define MC_CMD_NVRAM_TEST_OUT_RESULT_OFST 0 3540#define MC_CMD_NVRAM_TEST_OUT_RESULT_OFST 0
2336#define MC_CMD_NVRAM_TEST_PASS 0x0 /* enum */ 3541/* enum: Passed. */
2337#define MC_CMD_NVRAM_TEST_FAIL 0x1 /* enum */ 3542#define MC_CMD_NVRAM_TEST_PASS 0x0
2338#define MC_CMD_NVRAM_TEST_NOTSUPP 0x2 /* enum */ 3543/* enum: Failed. */
3544#define MC_CMD_NVRAM_TEST_FAIL 0x1
3545/* enum: Not supported. */
3546#define MC_CMD_NVRAM_TEST_NOTSUPP 0x2
2339 3547
2340 3548
2341/***********************************/ 3549/***********************************/
2342/* MC_CMD_MRSFP_TWEAK 3550/* MC_CMD_MRSFP_TWEAK
2343 * Read status and/or set parameters for the 'mrsfp' driver. 3551 * Read status and/or set parameters for the 'mrsfp' driver in mr_rusty builds.
3552 * I2C I/O expander bits are always read; if equaliser parameters are supplied,
3553 * they are configured first. Locks required: None. Return code: 0, EINVAL.
2344 */ 3554 */
2345#define MC_CMD_MRSFP_TWEAK 0x4d 3555#define MC_CMD_MRSFP_TWEAK 0x4d
2346 3556
2347/* MC_CMD_MRSFP_TWEAK_IN_EQ_CONFIG msgrequest */ 3557/* MC_CMD_MRSFP_TWEAK_IN_EQ_CONFIG msgrequest */
2348#define MC_CMD_MRSFP_TWEAK_IN_EQ_CONFIG_LEN 16 3558#define MC_CMD_MRSFP_TWEAK_IN_EQ_CONFIG_LEN 16
3559/* 0-6 low->high de-emph. */
2349#define MC_CMD_MRSFP_TWEAK_IN_EQ_CONFIG_TXEQ_LEVEL_OFST 0 3560#define MC_CMD_MRSFP_TWEAK_IN_EQ_CONFIG_TXEQ_LEVEL_OFST 0
3561/* 0-8 low->high ref.V */
2350#define MC_CMD_MRSFP_TWEAK_IN_EQ_CONFIG_TXEQ_DT_CFG_OFST 4 3562#define MC_CMD_MRSFP_TWEAK_IN_EQ_CONFIG_TXEQ_DT_CFG_OFST 4
3563/* 0-8 0-8 low->high boost */
2351#define MC_CMD_MRSFP_TWEAK_IN_EQ_CONFIG_RXEQ_BOOST_OFST 8 3564#define MC_CMD_MRSFP_TWEAK_IN_EQ_CONFIG_RXEQ_BOOST_OFST 8
3565/* 0-8 low->high ref.V */
2352#define MC_CMD_MRSFP_TWEAK_IN_EQ_CONFIG_RXEQ_DT_CFG_OFST 12 3566#define MC_CMD_MRSFP_TWEAK_IN_EQ_CONFIG_RXEQ_DT_CFG_OFST 12
2353 3567
2354/* MC_CMD_MRSFP_TWEAK_IN_READ_ONLY msgrequest */ 3568/* MC_CMD_MRSFP_TWEAK_IN_READ_ONLY msgrequest */
@@ -2356,16 +3570,23 @@
2356 3570
2357/* MC_CMD_MRSFP_TWEAK_OUT msgresponse */ 3571/* MC_CMD_MRSFP_TWEAK_OUT msgresponse */
2358#define MC_CMD_MRSFP_TWEAK_OUT_LEN 12 3572#define MC_CMD_MRSFP_TWEAK_OUT_LEN 12
3573/* input bits */
2359#define MC_CMD_MRSFP_TWEAK_OUT_IOEXP_INPUTS_OFST 0 3574#define MC_CMD_MRSFP_TWEAK_OUT_IOEXP_INPUTS_OFST 0
3575/* output bits */
2360#define MC_CMD_MRSFP_TWEAK_OUT_IOEXP_OUTPUTS_OFST 4 3576#define MC_CMD_MRSFP_TWEAK_OUT_IOEXP_OUTPUTS_OFST 4
3577/* direction */
2361#define MC_CMD_MRSFP_TWEAK_OUT_IOEXP_DIRECTION_OFST 8 3578#define MC_CMD_MRSFP_TWEAK_OUT_IOEXP_DIRECTION_OFST 8
2362#define MC_CMD_MRSFP_TWEAK_OUT_IOEXP_DIRECTION_OUT 0x0 /* enum */ 3579/* enum: Out. */
2363#define MC_CMD_MRSFP_TWEAK_OUT_IOEXP_DIRECTION_IN 0x1 /* enum */ 3580#define MC_CMD_MRSFP_TWEAK_OUT_IOEXP_DIRECTION_OUT 0x0
3581/* enum: In. */
3582#define MC_CMD_MRSFP_TWEAK_OUT_IOEXP_DIRECTION_IN 0x1
2364 3583
2365 3584
2366/***********************************/ 3585/***********************************/
2367/* MC_CMD_SENSOR_SET_LIMS 3586/* MC_CMD_SENSOR_SET_LIMS
2368 * Adjusts the sensor limits. 3587 * Adjusts the sensor limits. This is a warranty-voiding operation. Returns:
3588 * ENOENT if the sensor specified does not exist, EINVAL if the limits are out
3589 * of range.
2369 */ 3590 */
2370#define MC_CMD_SENSOR_SET_LIMS 0x4e 3591#define MC_CMD_SENSOR_SET_LIMS 0x4e
2371 3592
@@ -2374,9 +3595,13 @@
2374#define MC_CMD_SENSOR_SET_LIMS_IN_SENSOR_OFST 0 3595#define MC_CMD_SENSOR_SET_LIMS_IN_SENSOR_OFST 0
2375/* Enum values, see field(s): */ 3596/* Enum values, see field(s): */
2376/* MC_CMD_SENSOR_INFO/MC_CMD_SENSOR_INFO_OUT/MASK */ 3597/* MC_CMD_SENSOR_INFO/MC_CMD_SENSOR_INFO_OUT/MASK */
3598/* interpretation is is sensor-specific. */
2377#define MC_CMD_SENSOR_SET_LIMS_IN_LOW0_OFST 4 3599#define MC_CMD_SENSOR_SET_LIMS_IN_LOW0_OFST 4
3600/* interpretation is is sensor-specific. */
2378#define MC_CMD_SENSOR_SET_LIMS_IN_HI0_OFST 8 3601#define MC_CMD_SENSOR_SET_LIMS_IN_HI0_OFST 8
3602/* interpretation is is sensor-specific. */
2379#define MC_CMD_SENSOR_SET_LIMS_IN_LOW1_OFST 12 3603#define MC_CMD_SENSOR_SET_LIMS_IN_LOW1_OFST 12
3604/* interpretation is is sensor-specific. */
2380#define MC_CMD_SENSOR_SET_LIMS_IN_HI1_OFST 16 3605#define MC_CMD_SENSOR_SET_LIMS_IN_HI1_OFST 16
2381 3606
2382/* MC_CMD_SENSOR_SET_LIMS_OUT msgresponse */ 3607/* MC_CMD_SENSOR_SET_LIMS_OUT msgresponse */
@@ -2398,9 +3623,3636 @@
2398#define MC_CMD_GET_RESOURCE_LIMITS_OUT_RXQ_OFST 8 3623#define MC_CMD_GET_RESOURCE_LIMITS_OUT_RXQ_OFST 8
2399#define MC_CMD_GET_RESOURCE_LIMITS_OUT_TXQ_OFST 12 3624#define MC_CMD_GET_RESOURCE_LIMITS_OUT_TXQ_OFST 12
2400 3625
3626
3627/***********************************/
3628/* MC_CMD_NVRAM_PARTITIONS
3629 * Reads the list of available virtual NVRAM partition types. Locks required:
3630 * none. Returns: 0, EINVAL (bad type).
3631 */
3632#define MC_CMD_NVRAM_PARTITIONS 0x51
3633
3634/* MC_CMD_NVRAM_PARTITIONS_IN msgrequest */
3635#define MC_CMD_NVRAM_PARTITIONS_IN_LEN 0
3636
3637/* MC_CMD_NVRAM_PARTITIONS_OUT msgresponse */
3638#define MC_CMD_NVRAM_PARTITIONS_OUT_LENMIN 4
3639#define MC_CMD_NVRAM_PARTITIONS_OUT_LENMAX 252
3640#define MC_CMD_NVRAM_PARTITIONS_OUT_LEN(num) (4+4*(num))
3641/* total number of partitions */
3642#define MC_CMD_NVRAM_PARTITIONS_OUT_NUM_PARTITIONS_OFST 0
3643/* type ID code for each of NUM_PARTITIONS partitions */
3644#define MC_CMD_NVRAM_PARTITIONS_OUT_TYPE_ID_OFST 4
3645#define MC_CMD_NVRAM_PARTITIONS_OUT_TYPE_ID_LEN 4
3646#define MC_CMD_NVRAM_PARTITIONS_OUT_TYPE_ID_MINNUM 0
3647#define MC_CMD_NVRAM_PARTITIONS_OUT_TYPE_ID_MAXNUM 62
3648
3649
3650/***********************************/
3651/* MC_CMD_NVRAM_METADATA
3652 * Reads soft metadata for a virtual NVRAM partition type. Locks required:
3653 * none. Returns: 0, EINVAL (bad type).
3654 */
3655#define MC_CMD_NVRAM_METADATA 0x52
3656
3657/* MC_CMD_NVRAM_METADATA_IN msgrequest */
3658#define MC_CMD_NVRAM_METADATA_IN_LEN 4
3659/* Partition type ID code */
3660#define MC_CMD_NVRAM_METADATA_IN_TYPE_OFST 0
3661
3662/* MC_CMD_NVRAM_METADATA_OUT msgresponse */
3663#define MC_CMD_NVRAM_METADATA_OUT_LENMIN 20
3664#define MC_CMD_NVRAM_METADATA_OUT_LENMAX 252
3665#define MC_CMD_NVRAM_METADATA_OUT_LEN(num) (20+1*(num))
3666/* Partition type ID code */
3667#define MC_CMD_NVRAM_METADATA_OUT_TYPE_OFST 0
3668#define MC_CMD_NVRAM_METADATA_OUT_FLAGS_OFST 4
3669#define MC_CMD_NVRAM_METADATA_OUT_SUBTYPE_VALID_LBN 0
3670#define MC_CMD_NVRAM_METADATA_OUT_SUBTYPE_VALID_WIDTH 1
3671#define MC_CMD_NVRAM_METADATA_OUT_VERSION_VALID_LBN 1
3672#define MC_CMD_NVRAM_METADATA_OUT_VERSION_VALID_WIDTH 1
3673#define MC_CMD_NVRAM_METADATA_OUT_DESCRIPTION_VALID_LBN 2
3674#define MC_CMD_NVRAM_METADATA_OUT_DESCRIPTION_VALID_WIDTH 1
3675/* Subtype ID code for content of this partition */
3676#define MC_CMD_NVRAM_METADATA_OUT_SUBTYPE_OFST 8
3677/* 1st component of W.X.Y.Z version number for content of this partition */
3678#define MC_CMD_NVRAM_METADATA_OUT_VERSION_W_OFST 12
3679#define MC_CMD_NVRAM_METADATA_OUT_VERSION_W_LEN 2
3680/* 2nd component of W.X.Y.Z version number for content of this partition */
3681#define MC_CMD_NVRAM_METADATA_OUT_VERSION_X_OFST 14
3682#define MC_CMD_NVRAM_METADATA_OUT_VERSION_X_LEN 2
3683/* 3rd component of W.X.Y.Z version number for content of this partition */
3684#define MC_CMD_NVRAM_METADATA_OUT_VERSION_Y_OFST 16
3685#define MC_CMD_NVRAM_METADATA_OUT_VERSION_Y_LEN 2
3686/* 4th component of W.X.Y.Z version number for content of this partition */
3687#define MC_CMD_NVRAM_METADATA_OUT_VERSION_Z_OFST 18
3688#define MC_CMD_NVRAM_METADATA_OUT_VERSION_Z_LEN 2
3689/* Zero-terminated string describing the content of this partition */
3690#define MC_CMD_NVRAM_METADATA_OUT_DESCRIPTION_OFST 20
3691#define MC_CMD_NVRAM_METADATA_OUT_DESCRIPTION_LEN 1
3692#define MC_CMD_NVRAM_METADATA_OUT_DESCRIPTION_MINNUM 0
3693#define MC_CMD_NVRAM_METADATA_OUT_DESCRIPTION_MAXNUM 232
3694
3695
3696/***********************************/
3697/* MC_CMD_GET_MAC_ADDRESSES
3698 * Returns the base MAC, count and stride for the requestiong function
3699 */
3700#define MC_CMD_GET_MAC_ADDRESSES 0x55
3701
3702/* MC_CMD_GET_MAC_ADDRESSES_IN msgrequest */
3703#define MC_CMD_GET_MAC_ADDRESSES_IN_LEN 0
3704
3705/* MC_CMD_GET_MAC_ADDRESSES_OUT msgresponse */
3706#define MC_CMD_GET_MAC_ADDRESSES_OUT_LEN 16
3707/* Base MAC address */
3708#define MC_CMD_GET_MAC_ADDRESSES_OUT_MAC_ADDR_BASE_OFST 0
3709#define MC_CMD_GET_MAC_ADDRESSES_OUT_MAC_ADDR_BASE_LEN 6
3710/* Padding */
3711#define MC_CMD_GET_MAC_ADDRESSES_OUT_RESERVED_OFST 6
3712#define MC_CMD_GET_MAC_ADDRESSES_OUT_RESERVED_LEN 2
3713/* Number of allocated MAC addresses */
3714#define MC_CMD_GET_MAC_ADDRESSES_OUT_MAC_COUNT_OFST 8
3715/* Spacing of allocated MAC addresses */
3716#define MC_CMD_GET_MAC_ADDRESSES_OUT_MAC_STRIDE_OFST 12
3717
2401/* MC_CMD_RESOURCE_SPECIFIER enum */ 3718/* MC_CMD_RESOURCE_SPECIFIER enum */
2402#define MC_CMD_RESOURCE_INSTANCE_ANY 0xffffffff /* enum */ 3719/* enum: Any */
2403#define MC_CMD_RESOURCE_INSTANCE_NONE 0xfffffffe /* enum */ 3720#define MC_CMD_RESOURCE_INSTANCE_ANY 0xffffffff
3721/* enum: None */
3722#define MC_CMD_RESOURCE_INSTANCE_NONE 0xfffffffe
3723
3724/* EVB_PORT_ID structuredef */
3725#define EVB_PORT_ID_LEN 4
3726#define EVB_PORT_ID_PORT_ID_OFST 0
3727/* enum: An invalid port handle. */
3728#define EVB_PORT_ID_NULL 0x0
3729/* enum: The port assigned to this function.. */
3730#define EVB_PORT_ID_ASSIGNED 0x1000000
3731/* enum: External network port 0 */
3732#define EVB_PORT_ID_MAC0 0x2000000
3733/* enum: External network port 1 */
3734#define EVB_PORT_ID_MAC1 0x2000001
3735/* enum: External network port 2 */
3736#define EVB_PORT_ID_MAC2 0x2000002
3737/* enum: External network port 3 */
3738#define EVB_PORT_ID_MAC3 0x2000003
3739#define EVB_PORT_ID_PORT_ID_LBN 0
3740#define EVB_PORT_ID_PORT_ID_WIDTH 32
3741
3742/* EVB_VLAN_TAG structuredef */
3743#define EVB_VLAN_TAG_LEN 2
3744/* The VLAN tag value */
3745#define EVB_VLAN_TAG_VLAN_ID_LBN 0
3746#define EVB_VLAN_TAG_VLAN_ID_WIDTH 12
3747#define EVB_VLAN_TAG_MODE_LBN 12
3748#define EVB_VLAN_TAG_MODE_WIDTH 4
3749/* enum: Insert the VLAN. */
3750#define EVB_VLAN_TAG_INSERT 0x0
3751/* enum: Replace the VLAN if already present. */
3752#define EVB_VLAN_TAG_REPLACE 0x1
3753
3754/* BUFTBL_ENTRY structuredef */
3755#define BUFTBL_ENTRY_LEN 12
3756/* the owner ID */
3757#define BUFTBL_ENTRY_OID_OFST 0
3758#define BUFTBL_ENTRY_OID_LEN 2
3759#define BUFTBL_ENTRY_OID_LBN 0
3760#define BUFTBL_ENTRY_OID_WIDTH 16
3761/* the page parameter as one of ESE_DZ_SMC_PAGE_SIZE_ */
3762#define BUFTBL_ENTRY_PGSZ_OFST 2
3763#define BUFTBL_ENTRY_PGSZ_LEN 2
3764#define BUFTBL_ENTRY_PGSZ_LBN 16
3765#define BUFTBL_ENTRY_PGSZ_WIDTH 16
3766/* the raw 64-bit address field from the SMC, not adjusted for page size */
3767#define BUFTBL_ENTRY_RAWADDR_OFST 4
3768#define BUFTBL_ENTRY_RAWADDR_LEN 8
3769#define BUFTBL_ENTRY_RAWADDR_LO_OFST 4
3770#define BUFTBL_ENTRY_RAWADDR_HI_OFST 8
3771#define BUFTBL_ENTRY_RAWADDR_LBN 32
3772#define BUFTBL_ENTRY_RAWADDR_WIDTH 64
3773
3774/* NVRAM_PARTITION_TYPE structuredef */
3775#define NVRAM_PARTITION_TYPE_LEN 2
3776#define NVRAM_PARTITION_TYPE_ID_OFST 0
3777#define NVRAM_PARTITION_TYPE_ID_LEN 2
3778/* enum: Primary MC firmware partition */
3779#define NVRAM_PARTITION_TYPE_MC_FIRMWARE 0x100
3780/* enum: Secondary MC firmware partition */
3781#define NVRAM_PARTITION_TYPE_MC_FIRMWARE_BACKUP 0x200
3782/* enum: Expansion ROM partition */
3783#define NVRAM_PARTITION_TYPE_EXPANSION_ROM 0x300
3784/* enum: Static configuration TLV partition */
3785#define NVRAM_PARTITION_TYPE_STATIC_CONFIG 0x400
3786/* enum: Dynamic configuration TLV partition */
3787#define NVRAM_PARTITION_TYPE_DYNAMIC_CONFIG 0x500
3788/* enum: Expansion ROM configuration data for port 0 */
3789#define NVRAM_PARTITION_TYPE_EXPROM_CONFIG_PORT0 0x600
3790/* enum: Expansion ROM configuration data for port 1 */
3791#define NVRAM_PARTITION_TYPE_EXPROM_CONFIG_PORT1 0x601
3792/* enum: Expansion ROM configuration data for port 2 */
3793#define NVRAM_PARTITION_TYPE_EXPROM_CONFIG_PORT2 0x602
3794/* enum: Expansion ROM configuration data for port 3 */
3795#define NVRAM_PARTITION_TYPE_EXPROM_CONFIG_PORT3 0x603
3796/* enum: Non-volatile log output partition */
3797#define NVRAM_PARTITION_TYPE_LOG 0x700
3798/* enum: Device state dump output partition */
3799#define NVRAM_PARTITION_TYPE_DUMP 0x800
3800/* enum: Application license key storage partition */
3801#define NVRAM_PARTITION_TYPE_LICENSE 0x900
3802/* enum: Start of reserved value range (firmware may use for any purpose) */
3803#define NVRAM_PARTITION_TYPE_RESERVED_VALUES_MIN 0xff00
3804/* enum: End of reserved value range (firmware may use for any purpose) */
3805#define NVRAM_PARTITION_TYPE_RESERVED_VALUES_MAX 0xfffd
3806/* enum: Recovery partition map (provided if real map is missing or corrupt) */
3807#define NVRAM_PARTITION_TYPE_RECOVERY_MAP 0xfffe
3808/* enum: Partition map (real map as stored in flash) */
3809#define NVRAM_PARTITION_TYPE_PARTITION_MAP 0xffff
3810#define NVRAM_PARTITION_TYPE_ID_LBN 0
3811#define NVRAM_PARTITION_TYPE_ID_WIDTH 16
3812
3813
3814/***********************************/
3815/* MC_CMD_READ_REGS
3816 * Get a dump of the MCPU registers
3817 */
3818#define MC_CMD_READ_REGS 0x50
3819
3820/* MC_CMD_READ_REGS_IN msgrequest */
3821#define MC_CMD_READ_REGS_IN_LEN 0
3822
3823/* MC_CMD_READ_REGS_OUT msgresponse */
3824#define MC_CMD_READ_REGS_OUT_LEN 308
3825/* Whether the corresponding register entry contains a valid value */
3826#define MC_CMD_READ_REGS_OUT_MASK_OFST 0
3827#define MC_CMD_READ_REGS_OUT_MASK_LEN 16
3828/* Same order as MIPS GDB (r0-r31, sr, lo, hi, bad, cause, 32 x float, fsr,
3829 * fir, fp)
3830 */
3831#define MC_CMD_READ_REGS_OUT_REGS_OFST 16
3832#define MC_CMD_READ_REGS_OUT_REGS_LEN 4
3833#define MC_CMD_READ_REGS_OUT_REGS_NUM 73
3834
3835
3836/***********************************/
3837/* MC_CMD_INIT_EVQ
3838 * Set up an event queue according to the supplied parameters. The IN arguments
3839 * end with an address for each 4k of host memory required to back the EVQ.
3840 */
3841#define MC_CMD_INIT_EVQ 0x80
3842
3843/* MC_CMD_INIT_EVQ_IN msgrequest */
3844#define MC_CMD_INIT_EVQ_IN_LENMIN 44
3845#define MC_CMD_INIT_EVQ_IN_LENMAX 548
3846#define MC_CMD_INIT_EVQ_IN_LEN(num) (36+8*(num))
3847/* Size, in entries */
3848#define MC_CMD_INIT_EVQ_IN_SIZE_OFST 0
3849/* Desired instance. Must be set to a specific instance, which is a function
3850 * local queue index.
3851 */
3852#define MC_CMD_INIT_EVQ_IN_INSTANCE_OFST 4
3853/* The initial timer value. The load value is ignored if the timer mode is DIS.
3854 */
3855#define MC_CMD_INIT_EVQ_IN_TMR_LOAD_OFST 8
3856/* The reload value is ignored in one-shot modes */
3857#define MC_CMD_INIT_EVQ_IN_TMR_RELOAD_OFST 12
3858/* tbd */
3859#define MC_CMD_INIT_EVQ_IN_FLAGS_OFST 16
3860#define MC_CMD_INIT_EVQ_IN_FLAG_INTERRUPTING_LBN 0
3861#define MC_CMD_INIT_EVQ_IN_FLAG_INTERRUPTING_WIDTH 1
3862#define MC_CMD_INIT_EVQ_IN_FLAG_RPTR_DOS_LBN 1
3863#define MC_CMD_INIT_EVQ_IN_FLAG_RPTR_DOS_WIDTH 1
3864#define MC_CMD_INIT_EVQ_IN_FLAG_INT_ARMD_LBN 2
3865#define MC_CMD_INIT_EVQ_IN_FLAG_INT_ARMD_WIDTH 1
3866#define MC_CMD_INIT_EVQ_IN_FLAG_CUT_THRU_LBN 3
3867#define MC_CMD_INIT_EVQ_IN_FLAG_CUT_THRU_WIDTH 1
3868#define MC_CMD_INIT_EVQ_IN_FLAG_RX_MERGE_LBN 4
3869#define MC_CMD_INIT_EVQ_IN_FLAG_RX_MERGE_WIDTH 1
3870#define MC_CMD_INIT_EVQ_IN_FLAG_TX_MERGE_LBN 5
3871#define MC_CMD_INIT_EVQ_IN_FLAG_TX_MERGE_WIDTH 1
3872#define MC_CMD_INIT_EVQ_IN_TMR_MODE_OFST 20
3873/* enum: Disabled */
3874#define MC_CMD_INIT_EVQ_IN_TMR_MODE_DIS 0x0
3875/* enum: Immediate */
3876#define MC_CMD_INIT_EVQ_IN_TMR_IMMED_START 0x1
3877/* enum: Triggered */
3878#define MC_CMD_INIT_EVQ_IN_TMR_TRIG_START 0x2
3879/* enum: Hold-off */
3880#define MC_CMD_INIT_EVQ_IN_TMR_INT_HLDOFF 0x3
3881/* Target EVQ for wakeups if in wakeup mode. */
3882#define MC_CMD_INIT_EVQ_IN_TARGET_EVQ_OFST 24
3883/* Target interrupt if in interrupting mode (note union with target EVQ). Use
3884 * MC_CMD_RESOURCE_INSTANCE_ANY unless a specific one required for test
3885 * purposes.
3886 */
3887#define MC_CMD_INIT_EVQ_IN_IRQ_NUM_OFST 24
3888/* Event Counter Mode. */
3889#define MC_CMD_INIT_EVQ_IN_COUNT_MODE_OFST 28
3890/* enum: Disabled */
3891#define MC_CMD_INIT_EVQ_IN_COUNT_MODE_DIS 0x0
3892/* enum: Disabled */
3893#define MC_CMD_INIT_EVQ_IN_COUNT_MODE_RX 0x1
3894/* enum: Disabled */
3895#define MC_CMD_INIT_EVQ_IN_COUNT_MODE_TX 0x2
3896/* enum: Disabled */
3897#define MC_CMD_INIT_EVQ_IN_COUNT_MODE_RXTX 0x3
3898/* Event queue packet count threshold. */
3899#define MC_CMD_INIT_EVQ_IN_COUNT_THRSHLD_OFST 32
3900/* 64-bit address of 4k of 4k-aligned host memory buffer */
3901#define MC_CMD_INIT_EVQ_IN_DMA_ADDR_OFST 36
3902#define MC_CMD_INIT_EVQ_IN_DMA_ADDR_LEN 8
3903#define MC_CMD_INIT_EVQ_IN_DMA_ADDR_LO_OFST 36
3904#define MC_CMD_INIT_EVQ_IN_DMA_ADDR_HI_OFST 40
3905#define MC_CMD_INIT_EVQ_IN_DMA_ADDR_MINNUM 1
3906#define MC_CMD_INIT_EVQ_IN_DMA_ADDR_MAXNUM 64
3907
3908/* MC_CMD_INIT_EVQ_OUT msgresponse */
3909#define MC_CMD_INIT_EVQ_OUT_LEN 4
3910/* Only valid if INTRFLAG was true */
3911#define MC_CMD_INIT_EVQ_OUT_IRQ_OFST 0
3912
3913/* QUEUE_CRC_MODE structuredef */
3914#define QUEUE_CRC_MODE_LEN 1
3915#define QUEUE_CRC_MODE_MODE_LBN 0
3916#define QUEUE_CRC_MODE_MODE_WIDTH 4
3917/* enum: No CRC. */
3918#define QUEUE_CRC_MODE_NONE 0x0
3919/* enum: CRC Fiber channel over ethernet. */
3920#define QUEUE_CRC_MODE_FCOE 0x1
3921/* enum: CRC (digest) iSCSI header only. */
3922#define QUEUE_CRC_MODE_ISCSI_HDR 0x2
3923/* enum: CRC (digest) iSCSI header and payload. */
3924#define QUEUE_CRC_MODE_ISCSI 0x3
3925/* enum: CRC Fiber channel over IP over ethernet. */
3926#define QUEUE_CRC_MODE_FCOIPOE 0x4
3927/* enum: CRC MPA. */
3928#define QUEUE_CRC_MODE_MPA 0x5
3929#define QUEUE_CRC_MODE_SPARE_LBN 4
3930#define QUEUE_CRC_MODE_SPARE_WIDTH 4
3931
3932
3933/***********************************/
3934/* MC_CMD_INIT_RXQ
3935 * set up a receive queue according to the supplied parameters. The IN
3936 * arguments end with an address for each 4k of host memory required to back
3937 * the RXQ.
3938 */
3939#define MC_CMD_INIT_RXQ 0x81
3940
3941/* MC_CMD_INIT_RXQ_IN msgrequest */
3942#define MC_CMD_INIT_RXQ_IN_LENMIN 36
3943#define MC_CMD_INIT_RXQ_IN_LENMAX 252
3944#define MC_CMD_INIT_RXQ_IN_LEN(num) (28+8*(num))
3945/* Size, in entries */
3946#define MC_CMD_INIT_RXQ_IN_SIZE_OFST 0
3947/* The EVQ to send events to. This is an index originally specified to INIT_EVQ
3948 */
3949#define MC_CMD_INIT_RXQ_IN_TARGET_EVQ_OFST 4
3950/* The value to put in the event data. Check hardware spec. for valid range. */
3951#define MC_CMD_INIT_RXQ_IN_LABEL_OFST 8
3952/* Desired instance. Must be set to a specific instance, which is a function
3953 * local queue index.
3954 */
3955#define MC_CMD_INIT_RXQ_IN_INSTANCE_OFST 12
3956/* There will be more flags here. */
3957#define MC_CMD_INIT_RXQ_IN_FLAGS_OFST 16
3958#define MC_CMD_INIT_RXQ_IN_FLAG_BUFF_MODE_LBN 0
3959#define MC_CMD_INIT_RXQ_IN_FLAG_BUFF_MODE_WIDTH 1
3960#define MC_CMD_INIT_RXQ_IN_FLAG_HDR_SPLIT_LBN 1
3961#define MC_CMD_INIT_RXQ_IN_FLAG_HDR_SPLIT_WIDTH 1
3962#define MC_CMD_INIT_RXQ_IN_FLAG_TIMESTAMP_LBN 2
3963#define MC_CMD_INIT_RXQ_IN_FLAG_TIMESTAMP_WIDTH 1
3964#define MC_CMD_INIT_RXQ_IN_CRC_MODE_LBN 3
3965#define MC_CMD_INIT_RXQ_IN_CRC_MODE_WIDTH 4
3966#define MC_CMD_INIT_RXQ_IN_FLAG_CHAIN_LBN 7
3967#define MC_CMD_INIT_RXQ_IN_FLAG_CHAIN_WIDTH 1
3968#define MC_CMD_INIT_RXQ_IN_FLAG_PREFIX_LBN 8
3969#define MC_CMD_INIT_RXQ_IN_FLAG_PREFIX_WIDTH 1
3970/* Owner ID to use if in buffer mode (zero if physical) */
3971#define MC_CMD_INIT_RXQ_IN_OWNER_ID_OFST 20
3972/* The port ID associated with the v-adaptor which should contain this DMAQ. */
3973#define MC_CMD_INIT_RXQ_IN_PORT_ID_OFST 24
3974/* 64-bit address of 4k of 4k-aligned host memory buffer */
3975#define MC_CMD_INIT_RXQ_IN_DMA_ADDR_OFST 28
3976#define MC_CMD_INIT_RXQ_IN_DMA_ADDR_LEN 8
3977#define MC_CMD_INIT_RXQ_IN_DMA_ADDR_LO_OFST 28
3978#define MC_CMD_INIT_RXQ_IN_DMA_ADDR_HI_OFST 32
3979#define MC_CMD_INIT_RXQ_IN_DMA_ADDR_MINNUM 1
3980#define MC_CMD_INIT_RXQ_IN_DMA_ADDR_MAXNUM 28
3981
3982/* MC_CMD_INIT_RXQ_OUT msgresponse */
3983#define MC_CMD_INIT_RXQ_OUT_LEN 0
3984
3985
3986/***********************************/
3987/* MC_CMD_INIT_TXQ
3988 */
3989#define MC_CMD_INIT_TXQ 0x82
3990
3991/* MC_CMD_INIT_TXQ_IN msgrequest */
3992#define MC_CMD_INIT_TXQ_IN_LENMIN 36
3993#define MC_CMD_INIT_TXQ_IN_LENMAX 252
3994#define MC_CMD_INIT_TXQ_IN_LEN(num) (28+8*(num))
3995/* Size, in entries */
3996#define MC_CMD_INIT_TXQ_IN_SIZE_OFST 0
3997/* The EVQ to send events to. This is an index originally specified to
3998 * INIT_EVQ.
3999 */
4000#define MC_CMD_INIT_TXQ_IN_TARGET_EVQ_OFST 4
4001/* The value to put in the event data. Check hardware spec. for valid range. */
4002#define MC_CMD_INIT_TXQ_IN_LABEL_OFST 8
4003/* Desired instance. Must be set to a specific instance, which is a function
4004 * local queue index.
4005 */
4006#define MC_CMD_INIT_TXQ_IN_INSTANCE_OFST 12
4007/* There will be more flags here. */
4008#define MC_CMD_INIT_TXQ_IN_FLAGS_OFST 16
4009#define MC_CMD_INIT_TXQ_IN_FLAG_BUFF_MODE_LBN 0
4010#define MC_CMD_INIT_TXQ_IN_FLAG_BUFF_MODE_WIDTH 1
4011#define MC_CMD_INIT_TXQ_IN_FLAG_IP_CSUM_DIS_LBN 1
4012#define MC_CMD_INIT_TXQ_IN_FLAG_IP_CSUM_DIS_WIDTH 1
4013#define MC_CMD_INIT_TXQ_IN_FLAG_TCP_CSUM_DIS_LBN 2
4014#define MC_CMD_INIT_TXQ_IN_FLAG_TCP_CSUM_DIS_WIDTH 1
4015#define MC_CMD_INIT_TXQ_IN_FLAG_TCP_UDP_ONLY_LBN 3
4016#define MC_CMD_INIT_TXQ_IN_FLAG_TCP_UDP_ONLY_WIDTH 1
4017#define MC_CMD_INIT_TXQ_IN_CRC_MODE_LBN 4
4018#define MC_CMD_INIT_TXQ_IN_CRC_MODE_WIDTH 4
4019#define MC_CMD_INIT_TXQ_IN_FLAG_TIMESTAMP_LBN 8
4020#define MC_CMD_INIT_TXQ_IN_FLAG_TIMESTAMP_WIDTH 1
4021#define MC_CMD_INIT_TXQ_IN_FLAG_PACER_BYPASS_LBN 9
4022#define MC_CMD_INIT_TXQ_IN_FLAG_PACER_BYPASS_WIDTH 1
4023/* Owner ID to use if in buffer mode (zero if physical) */
4024#define MC_CMD_INIT_TXQ_IN_OWNER_ID_OFST 20
4025/* The port ID associated with the v-adaptor which should contain this DMAQ. */
4026#define MC_CMD_INIT_TXQ_IN_PORT_ID_OFST 24
4027/* 64-bit address of 4k of 4k-aligned host memory buffer */
4028#define MC_CMD_INIT_TXQ_IN_DMA_ADDR_OFST 28
4029#define MC_CMD_INIT_TXQ_IN_DMA_ADDR_LEN 8
4030#define MC_CMD_INIT_TXQ_IN_DMA_ADDR_LO_OFST 28
4031#define MC_CMD_INIT_TXQ_IN_DMA_ADDR_HI_OFST 32
4032#define MC_CMD_INIT_TXQ_IN_DMA_ADDR_MINNUM 1
4033#define MC_CMD_INIT_TXQ_IN_DMA_ADDR_MAXNUM 28
4034
4035/* MC_CMD_INIT_TXQ_OUT msgresponse */
4036#define MC_CMD_INIT_TXQ_OUT_LEN 0
4037
4038
4039/***********************************/
4040/* MC_CMD_FINI_EVQ
4041 * Teardown an EVQ.
4042 *
4043 * All DMAQs or EVQs that point to the EVQ to tear down must be torn down first
4044 * or the operation will fail with EBUSY
4045 */
4046#define MC_CMD_FINI_EVQ 0x83
4047
4048/* MC_CMD_FINI_EVQ_IN msgrequest */
4049#define MC_CMD_FINI_EVQ_IN_LEN 4
4050/* Instance of EVQ to destroy. Should be the same instance as that previously
4051 * passed to INIT_EVQ
4052 */
4053#define MC_CMD_FINI_EVQ_IN_INSTANCE_OFST 0
4054
4055/* MC_CMD_FINI_EVQ_OUT msgresponse */
4056#define MC_CMD_FINI_EVQ_OUT_LEN 0
4057
4058
4059/***********************************/
4060/* MC_CMD_FINI_RXQ
4061 * Teardown a RXQ.
4062 */
4063#define MC_CMD_FINI_RXQ 0x84
4064
4065/* MC_CMD_FINI_RXQ_IN msgrequest */
4066#define MC_CMD_FINI_RXQ_IN_LEN 4
4067/* Instance of RXQ to destroy */
4068#define MC_CMD_FINI_RXQ_IN_INSTANCE_OFST 0
4069
4070/* MC_CMD_FINI_RXQ_OUT msgresponse */
4071#define MC_CMD_FINI_RXQ_OUT_LEN 0
4072
4073
4074/***********************************/
4075/* MC_CMD_FINI_TXQ
4076 * Teardown a TXQ.
4077 */
4078#define MC_CMD_FINI_TXQ 0x85
4079
4080/* MC_CMD_FINI_TXQ_IN msgrequest */
4081#define MC_CMD_FINI_TXQ_IN_LEN 4
4082/* Instance of TXQ to destroy */
4083#define MC_CMD_FINI_TXQ_IN_INSTANCE_OFST 0
4084
4085/* MC_CMD_FINI_TXQ_OUT msgresponse */
4086#define MC_CMD_FINI_TXQ_OUT_LEN 0
4087
4088
4089/***********************************/
4090/* MC_CMD_DRIVER_EVENT
4091 * Generate an event on an EVQ belonging to the function issuing the command.
4092 */
4093#define MC_CMD_DRIVER_EVENT 0x86
4094
4095/* MC_CMD_DRIVER_EVENT_IN msgrequest */
4096#define MC_CMD_DRIVER_EVENT_IN_LEN 12
4097/* Handle of target EVQ */
4098#define MC_CMD_DRIVER_EVENT_IN_EVQ_OFST 0
4099/* Bits 0 - 63 of event */
4100#define MC_CMD_DRIVER_EVENT_IN_DATA_OFST 4
4101#define MC_CMD_DRIVER_EVENT_IN_DATA_LEN 8
4102#define MC_CMD_DRIVER_EVENT_IN_DATA_LO_OFST 4
4103#define MC_CMD_DRIVER_EVENT_IN_DATA_HI_OFST 8
4104
4105/* MC_CMD_DRIVER_EVENT_OUT msgresponse */
4106#define MC_CMD_DRIVER_EVENT_OUT_LEN 0
4107
4108
4109/***********************************/
4110/* MC_CMD_PROXY_CMD
4111 * Execute an arbitrary MCDI command on behalf of a different function, subject
4112 * to security restrictions. The command to be proxied follows immediately
4113 * afterward in the host buffer (or on the UART). This command supercedes
4114 * MC_CMD_SET_FUNC, which remains available for Siena but now deprecated.
4115 */
4116#define MC_CMD_PROXY_CMD 0x5b
4117
4118/* MC_CMD_PROXY_CMD_IN msgrequest */
4119#define MC_CMD_PROXY_CMD_IN_LEN 4
4120/* The handle of the target function. */
4121#define MC_CMD_PROXY_CMD_IN_TARGET_OFST 0
4122#define MC_CMD_PROXY_CMD_IN_TARGET_PF_LBN 0
4123#define MC_CMD_PROXY_CMD_IN_TARGET_PF_WIDTH 16
4124#define MC_CMD_PROXY_CMD_IN_TARGET_VF_LBN 16
4125#define MC_CMD_PROXY_CMD_IN_TARGET_VF_WIDTH 16
4126#define MC_CMD_PROXY_CMD_IN_VF_NULL 0xffff /* enum */
4127
4128
4129/***********************************/
4130/* MC_CMD_ALLOC_BUFTBL_CHUNK
4131 * Allocate a set of buffer table entries using the specified owner ID. This
4132 * operation allocates the required buffer table entries (and fails if it
4133 * cannot do so). The buffer table entries will initially be zeroed.
4134 */
4135#define MC_CMD_ALLOC_BUFTBL_CHUNK 0x87
4136
4137/* MC_CMD_ALLOC_BUFTBL_CHUNK_IN msgrequest */
4138#define MC_CMD_ALLOC_BUFTBL_CHUNK_IN_LEN 8
4139/* Owner ID to use */
4140#define MC_CMD_ALLOC_BUFTBL_CHUNK_IN_OWNER_OFST 0
4141/* Size of buffer table pages to use, in bytes (note that only a few values are
4142 * legal on any specific hardware).
4143 */
4144#define MC_CMD_ALLOC_BUFTBL_CHUNK_IN_PAGE_SIZE_OFST 4
4145
4146/* MC_CMD_ALLOC_BUFTBL_CHUNK_OUT msgresponse */
4147#define MC_CMD_ALLOC_BUFTBL_CHUNK_OUT_LEN 12
4148#define MC_CMD_ALLOC_BUFTBL_CHUNK_OUT_HANDLE_OFST 0
4149#define MC_CMD_ALLOC_BUFTBL_CHUNK_OUT_NUMENTRIES_OFST 4
4150/* Buffer table IDs for use in DMA descriptors. */
4151#define MC_CMD_ALLOC_BUFTBL_CHUNK_OUT_ID_OFST 8
4152
4153
4154/***********************************/
4155/* MC_CMD_PROGRAM_BUFTBL_ENTRIES
4156 * Reprogram a set of buffer table entries in the specified chunk.
4157 */
4158#define MC_CMD_PROGRAM_BUFTBL_ENTRIES 0x88
4159
4160/* MC_CMD_PROGRAM_BUFTBL_ENTRIES_IN msgrequest */
4161#define MC_CMD_PROGRAM_BUFTBL_ENTRIES_IN_LENMIN 20
4162#define MC_CMD_PROGRAM_BUFTBL_ENTRIES_IN_LENMAX 252
4163#define MC_CMD_PROGRAM_BUFTBL_ENTRIES_IN_LEN(num) (12+8*(num))
4164#define MC_CMD_PROGRAM_BUFTBL_ENTRIES_IN_HANDLE_OFST 0
4165/* ID */
4166#define MC_CMD_PROGRAM_BUFTBL_ENTRIES_IN_FIRSTID_OFST 4
4167/* Num entries */
4168#define MC_CMD_PROGRAM_BUFTBL_ENTRIES_IN_NUMENTRIES_OFST 8
4169/* Buffer table entry address */
4170#define MC_CMD_PROGRAM_BUFTBL_ENTRIES_IN_ENTRY_OFST 12
4171#define MC_CMD_PROGRAM_BUFTBL_ENTRIES_IN_ENTRY_LEN 8
4172#define MC_CMD_PROGRAM_BUFTBL_ENTRIES_IN_ENTRY_LO_OFST 12
4173#define MC_CMD_PROGRAM_BUFTBL_ENTRIES_IN_ENTRY_HI_OFST 16
4174#define MC_CMD_PROGRAM_BUFTBL_ENTRIES_IN_ENTRY_MINNUM 1
4175#define MC_CMD_PROGRAM_BUFTBL_ENTRIES_IN_ENTRY_MAXNUM 30
4176
4177/* MC_CMD_PROGRAM_BUFTBL_ENTRIES_OUT msgresponse */
4178#define MC_CMD_PROGRAM_BUFTBL_ENTRIES_OUT_LEN 0
4179
4180
4181/***********************************/
4182/* MC_CMD_FREE_BUFTBL_CHUNK
4183 */
4184#define MC_CMD_FREE_BUFTBL_CHUNK 0x89
4185
4186/* MC_CMD_FREE_BUFTBL_CHUNK_IN msgrequest */
4187#define MC_CMD_FREE_BUFTBL_CHUNK_IN_LEN 4
4188#define MC_CMD_FREE_BUFTBL_CHUNK_IN_HANDLE_OFST 0
4189
4190/* MC_CMD_FREE_BUFTBL_CHUNK_OUT msgresponse */
4191#define MC_CMD_FREE_BUFTBL_CHUNK_OUT_LEN 0
4192
4193
4194/***********************************/
4195/* MC_CMD_FILTER_OP
4196 * Multiplexed MCDI call for filter operations
4197 */
4198#define MC_CMD_FILTER_OP 0x8a
4199
4200/* MC_CMD_FILTER_OP_IN msgrequest */
4201#define MC_CMD_FILTER_OP_IN_LEN 108
4202/* identifies the type of operation requested */
4203#define MC_CMD_FILTER_OP_IN_OP_OFST 0
4204/* enum: single-recipient filter insert */
4205#define MC_CMD_FILTER_OP_IN_OP_INSERT 0x0
4206/* enum: single-recipient filter remove */
4207#define MC_CMD_FILTER_OP_IN_OP_REMOVE 0x1
4208/* enum: multi-recipient filter subscribe */
4209#define MC_CMD_FILTER_OP_IN_OP_SUBSCRIBE 0x2
4210/* enum: multi-recipient filter unsubscribe */
4211#define MC_CMD_FILTER_OP_IN_OP_UNSUBSCRIBE 0x3
4212/* enum: replace one recipient with another (warning - the filter handle may
4213 * change)
4214 */
4215#define MC_CMD_FILTER_OP_IN_OP_REPLACE 0x4
4216/* filter handle (for remove / unsubscribe operations) */
4217#define MC_CMD_FILTER_OP_IN_HANDLE_OFST 4
4218#define MC_CMD_FILTER_OP_IN_HANDLE_LEN 8
4219#define MC_CMD_FILTER_OP_IN_HANDLE_LO_OFST 4
4220#define MC_CMD_FILTER_OP_IN_HANDLE_HI_OFST 8
4221/* The port ID associated with the v-adaptor which should contain this filter.
4222 */
4223#define MC_CMD_FILTER_OP_IN_PORT_ID_OFST 12
4224/* fields to include in match criteria */
4225#define MC_CMD_FILTER_OP_IN_MATCH_FIELDS_OFST 16
4226#define MC_CMD_FILTER_OP_IN_MATCH_SRC_IP_LBN 0
4227#define MC_CMD_FILTER_OP_IN_MATCH_SRC_IP_WIDTH 1
4228#define MC_CMD_FILTER_OP_IN_MATCH_DST_IP_LBN 1
4229#define MC_CMD_FILTER_OP_IN_MATCH_DST_IP_WIDTH 1
4230#define MC_CMD_FILTER_OP_IN_MATCH_SRC_MAC_LBN 2
4231#define MC_CMD_FILTER_OP_IN_MATCH_SRC_MAC_WIDTH 1
4232#define MC_CMD_FILTER_OP_IN_MATCH_SRC_PORT_LBN 3
4233#define MC_CMD_FILTER_OP_IN_MATCH_SRC_PORT_WIDTH 1
4234#define MC_CMD_FILTER_OP_IN_MATCH_DST_MAC_LBN 4
4235#define MC_CMD_FILTER_OP_IN_MATCH_DST_MAC_WIDTH 1
4236#define MC_CMD_FILTER_OP_IN_MATCH_DST_PORT_LBN 5
4237#define MC_CMD_FILTER_OP_IN_MATCH_DST_PORT_WIDTH 1
4238#define MC_CMD_FILTER_OP_IN_MATCH_ETHER_TYPE_LBN 6
4239#define MC_CMD_FILTER_OP_IN_MATCH_ETHER_TYPE_WIDTH 1
4240#define MC_CMD_FILTER_OP_IN_MATCH_INNER_VLAN_LBN 7
4241#define MC_CMD_FILTER_OP_IN_MATCH_INNER_VLAN_WIDTH 1
4242#define MC_CMD_FILTER_OP_IN_MATCH_OUTER_VLAN_LBN 8
4243#define MC_CMD_FILTER_OP_IN_MATCH_OUTER_VLAN_WIDTH 1
4244#define MC_CMD_FILTER_OP_IN_MATCH_IP_PROTO_LBN 9
4245#define MC_CMD_FILTER_OP_IN_MATCH_IP_PROTO_WIDTH 1
4246#define MC_CMD_FILTER_OP_IN_MATCH_FWDEF0_LBN 10
4247#define MC_CMD_FILTER_OP_IN_MATCH_FWDEF0_WIDTH 1
4248#define MC_CMD_FILTER_OP_IN_MATCH_FWDEF1_LBN 11
4249#define MC_CMD_FILTER_OP_IN_MATCH_FWDEF1_WIDTH 1
4250#define MC_CMD_FILTER_OP_IN_MATCH_UNKNOWN_MCAST_DST_LBN 30
4251#define MC_CMD_FILTER_OP_IN_MATCH_UNKNOWN_MCAST_DST_WIDTH 1
4252#define MC_CMD_FILTER_OP_IN_MATCH_UNKNOWN_UCAST_DST_LBN 31
4253#define MC_CMD_FILTER_OP_IN_MATCH_UNKNOWN_UCAST_DST_WIDTH 1
4254/* receive destination */
4255#define MC_CMD_FILTER_OP_IN_RX_DEST_OFST 20
4256/* enum: drop packets */
4257#define MC_CMD_FILTER_OP_IN_RX_DEST_DROP 0x0
4258/* enum: receive to host */
4259#define MC_CMD_FILTER_OP_IN_RX_DEST_HOST 0x1
4260/* enum: receive to MC */
4261#define MC_CMD_FILTER_OP_IN_RX_DEST_MC 0x2
4262/* enum: loop back to port 0 TX MAC */
4263#define MC_CMD_FILTER_OP_IN_RX_DEST_TX0 0x3
4264/* enum: loop back to port 1 TX MAC */
4265#define MC_CMD_FILTER_OP_IN_RX_DEST_TX1 0x4
4266/* receive queue handle (for multiple queue modes, this is the base queue) */
4267#define MC_CMD_FILTER_OP_IN_RX_QUEUE_OFST 24
4268/* receive mode */
4269#define MC_CMD_FILTER_OP_IN_RX_MODE_OFST 28
4270/* enum: receive to just the specified queue */
4271#define MC_CMD_FILTER_OP_IN_RX_MODE_SIMPLE 0x0
4272/* enum: receive to multiple queues using RSS context */
4273#define MC_CMD_FILTER_OP_IN_RX_MODE_RSS 0x1
4274/* enum: receive to multiple queues using .1p mapping */
4275#define MC_CMD_FILTER_OP_IN_RX_MODE_DOT1P_MAPPING 0x2
4276/* enum: install a filter entry that will never match; for test purposes only
4277 */
4278#define MC_CMD_FILTER_OP_IN_RX_MODE_TEST_NEVER_MATCH 0x80000000
4279/* RSS context (for RX_MODE_RSS) or .1p mapping handle (for
4280 * RX_MODE_DOT1P_MAPPING), as returned by MC_CMD_RSS_CONTEXT_ALLOC or
4281 * MC_CMD_DOT1P_MAPPING_ALLOC. Note that these handles should be considered
4282 * opaque to the host, although a value of 0xFFFFFFFF is guaranteed never to be
4283 * a valid handle.
4284 */
4285#define MC_CMD_FILTER_OP_IN_RX_CONTEXT_OFST 32
4286/* transmit domain (reserved; set to 0) */
4287#define MC_CMD_FILTER_OP_IN_TX_DOMAIN_OFST 36
4288/* transmit destination (either set the MAC and/or PM bits for explicit
4289 * control, or set this field to TX_DEST_DEFAULT for sensible default
4290 * behaviour)
4291 */
4292#define MC_CMD_FILTER_OP_IN_TX_DEST_OFST 40
4293/* enum: request default behaviour (based on filter type) */
4294#define MC_CMD_FILTER_OP_IN_TX_DEST_DEFAULT 0xffffffff
4295#define MC_CMD_FILTER_OP_IN_TX_DEST_MAC_LBN 0
4296#define MC_CMD_FILTER_OP_IN_TX_DEST_MAC_WIDTH 1
4297#define MC_CMD_FILTER_OP_IN_TX_DEST_PM_LBN 1
4298#define MC_CMD_FILTER_OP_IN_TX_DEST_PM_WIDTH 1
4299/* source MAC address to match (as bytes in network order) */
4300#define MC_CMD_FILTER_OP_IN_SRC_MAC_OFST 44
4301#define MC_CMD_FILTER_OP_IN_SRC_MAC_LEN 6
4302/* source port to match (as bytes in network order) */
4303#define MC_CMD_FILTER_OP_IN_SRC_PORT_OFST 50
4304#define MC_CMD_FILTER_OP_IN_SRC_PORT_LEN 2
4305/* destination MAC address to match (as bytes in network order) */
4306#define MC_CMD_FILTER_OP_IN_DST_MAC_OFST 52
4307#define MC_CMD_FILTER_OP_IN_DST_MAC_LEN 6
4308/* destination port to match (as bytes in network order) */
4309#define MC_CMD_FILTER_OP_IN_DST_PORT_OFST 58
4310#define MC_CMD_FILTER_OP_IN_DST_PORT_LEN 2
4311/* Ethernet type to match (as bytes in network order) */
4312#define MC_CMD_FILTER_OP_IN_ETHER_TYPE_OFST 60
4313#define MC_CMD_FILTER_OP_IN_ETHER_TYPE_LEN 2
4314/* Inner VLAN tag to match (as bytes in network order) */
4315#define MC_CMD_FILTER_OP_IN_INNER_VLAN_OFST 62
4316#define MC_CMD_FILTER_OP_IN_INNER_VLAN_LEN 2
4317/* Outer VLAN tag to match (as bytes in network order) */
4318#define MC_CMD_FILTER_OP_IN_OUTER_VLAN_OFST 64
4319#define MC_CMD_FILTER_OP_IN_OUTER_VLAN_LEN 2
4320/* IP protocol to match (in low byte; set high byte to 0) */
4321#define MC_CMD_FILTER_OP_IN_IP_PROTO_OFST 66
4322#define MC_CMD_FILTER_OP_IN_IP_PROTO_LEN 2
4323/* Firmware defined register 0 to match (reserved; set to 0) */
4324#define MC_CMD_FILTER_OP_IN_FWDEF0_OFST 68
4325/* Firmware defined register 1 to match (reserved; set to 0) */
4326#define MC_CMD_FILTER_OP_IN_FWDEF1_OFST 72
4327/* source IP address to match (as bytes in network order; set last 12 bytes to
4328 * 0 for IPv4 address)
4329 */
4330#define MC_CMD_FILTER_OP_IN_SRC_IP_OFST 76
4331#define MC_CMD_FILTER_OP_IN_SRC_IP_LEN 16
4332/* destination IP address to match (as bytes in network order; set last 12
4333 * bytes to 0 for IPv4 address)
4334 */
4335#define MC_CMD_FILTER_OP_IN_DST_IP_OFST 92
4336#define MC_CMD_FILTER_OP_IN_DST_IP_LEN 16
4337
4338/* MC_CMD_FILTER_OP_OUT msgresponse */
4339#define MC_CMD_FILTER_OP_OUT_LEN 12
4340/* identifies the type of operation requested */
4341#define MC_CMD_FILTER_OP_OUT_OP_OFST 0
4342/* Enum values, see field(s): */
4343/* MC_CMD_FILTER_OP_IN/OP */
4344/* Returned filter handle (for insert / subscribe operations). Note that these
4345 * handles should be considered opaque to the host, although a value of
4346 * 0xFFFFFFFF_FFFFFFFF is guaranteed never to be a valid handle.
4347 */
4348#define MC_CMD_FILTER_OP_OUT_HANDLE_OFST 4
4349#define MC_CMD_FILTER_OP_OUT_HANDLE_LEN 8
4350#define MC_CMD_FILTER_OP_OUT_HANDLE_LO_OFST 4
4351#define MC_CMD_FILTER_OP_OUT_HANDLE_HI_OFST 8
4352
4353
4354/***********************************/
4355/* MC_CMD_GET_PARSER_DISP_INFO
4356 * Get information related to the parser-dispatcher subsystem
4357 */
4358#define MC_CMD_GET_PARSER_DISP_INFO 0xe4
4359
4360/* MC_CMD_GET_PARSER_DISP_INFO_IN msgrequest */
4361#define MC_CMD_GET_PARSER_DISP_INFO_IN_LEN 4
4362/* identifies the type of operation requested */
4363#define MC_CMD_GET_PARSER_DISP_INFO_IN_OP_OFST 0
4364/* enum: read the list of supported RX filter matches */
4365#define MC_CMD_GET_PARSER_DISP_INFO_IN_OP_GET_SUPPORTED_RX_MATCHES 0x1
4366
4367/* MC_CMD_GET_PARSER_DISP_INFO_OUT msgresponse */
4368#define MC_CMD_GET_PARSER_DISP_INFO_OUT_LENMIN 8
4369#define MC_CMD_GET_PARSER_DISP_INFO_OUT_LENMAX 252
4370#define MC_CMD_GET_PARSER_DISP_INFO_OUT_LEN(num) (8+4*(num))
4371/* identifies the type of operation requested */
4372#define MC_CMD_GET_PARSER_DISP_INFO_OUT_OP_OFST 0
4373/* Enum values, see field(s): */
4374/* MC_CMD_GET_PARSER_DISP_INFO_IN/OP */
4375/* number of supported match types */
4376#define MC_CMD_GET_PARSER_DISP_INFO_OUT_NUM_SUPPORTED_MATCHES_OFST 4
4377/* array of supported match types (valid MATCH_FIELDS values for
4378 * MC_CMD_FILTER_OP) sorted in decreasing priority order
4379 */
4380#define MC_CMD_GET_PARSER_DISP_INFO_OUT_SUPPORTED_MATCHES_OFST 8
4381#define MC_CMD_GET_PARSER_DISP_INFO_OUT_SUPPORTED_MATCHES_LEN 4
4382#define MC_CMD_GET_PARSER_DISP_INFO_OUT_SUPPORTED_MATCHES_MINNUM 0
4383#define MC_CMD_GET_PARSER_DISP_INFO_OUT_SUPPORTED_MATCHES_MAXNUM 61
4384
4385
4386/***********************************/
4387/* MC_CMD_PARSER_DISP_RW
4388 * Direct read/write of parser-dispatcher state (DICPUs and LUE) for debugging
4389 */
4390#define MC_CMD_PARSER_DISP_RW 0xe5
4391
4392/* MC_CMD_PARSER_DISP_RW_IN msgrequest */
4393#define MC_CMD_PARSER_DISP_RW_IN_LEN 32
4394/* identifies the target of the operation */
4395#define MC_CMD_PARSER_DISP_RW_IN_TARGET_OFST 0
4396/* enum: RX dispatcher CPU */
4397#define MC_CMD_PARSER_DISP_RW_IN_RX_DICPU 0x0
4398/* enum: TX dispatcher CPU */
4399#define MC_CMD_PARSER_DISP_RW_IN_TX_DICPU 0x1
4400/* enum: Lookup engine */
4401#define MC_CMD_PARSER_DISP_RW_IN_LUE 0x2
4402/* identifies the type of operation requested */
4403#define MC_CMD_PARSER_DISP_RW_IN_OP_OFST 4
4404/* enum: read a word of DICPU DMEM or a LUE entry */
4405#define MC_CMD_PARSER_DISP_RW_IN_READ 0x0
4406/* enum: write a word of DICPU DMEM or a LUE entry */
4407#define MC_CMD_PARSER_DISP_RW_IN_WRITE 0x1
4408/* enum: read-modify-write a word of DICPU DMEM (not valid for LUE) */
4409#define MC_CMD_PARSER_DISP_RW_IN_RMW 0x2
4410/* data memory address or LUE index */
4411#define MC_CMD_PARSER_DISP_RW_IN_ADDRESS_OFST 8
4412/* value to write (for DMEM writes) */
4413#define MC_CMD_PARSER_DISP_RW_IN_DMEM_WRITE_VALUE_OFST 12
4414/* XOR value (for DMEM read-modify-writes: new = (old & mask) ^ value) */
4415#define MC_CMD_PARSER_DISP_RW_IN_DMEM_RMW_XOR_VALUE_OFST 12
4416/* AND mask (for DMEM read-modify-writes: new = (old & mask) ^ value) */
4417#define MC_CMD_PARSER_DISP_RW_IN_DMEM_RMW_AND_MASK_OFST 16
4418/* value to write (for LUE writes) */
4419#define MC_CMD_PARSER_DISP_RW_IN_LUE_WRITE_VALUE_OFST 12
4420#define MC_CMD_PARSER_DISP_RW_IN_LUE_WRITE_VALUE_LEN 20
4421
4422/* MC_CMD_PARSER_DISP_RW_OUT msgresponse */
4423#define MC_CMD_PARSER_DISP_RW_OUT_LEN 52
4424/* value read (for DMEM reads) */
4425#define MC_CMD_PARSER_DISP_RW_OUT_DMEM_READ_VALUE_OFST 0
4426/* value read (for LUE reads) */
4427#define MC_CMD_PARSER_DISP_RW_OUT_LUE_READ_VALUE_OFST 0
4428#define MC_CMD_PARSER_DISP_RW_OUT_LUE_READ_VALUE_LEN 20
4429/* up to 8 32-bit words of additional soft state from the LUE manager (the
4430 * exact content is firmware-dependent and intended only for debug use)
4431 */
4432#define MC_CMD_PARSER_DISP_RW_OUT_LUE_MGR_STATE_OFST 20
4433#define MC_CMD_PARSER_DISP_RW_OUT_LUE_MGR_STATE_LEN 32
4434
4435
4436/***********************************/
4437/* MC_CMD_GET_PF_COUNT
4438 * Get number of PFs on the device.
4439 */
4440#define MC_CMD_GET_PF_COUNT 0xb6
4441
4442/* MC_CMD_GET_PF_COUNT_IN msgrequest */
4443#define MC_CMD_GET_PF_COUNT_IN_LEN 0
4444
4445/* MC_CMD_GET_PF_COUNT_OUT msgresponse */
4446#define MC_CMD_GET_PF_COUNT_OUT_LEN 1
4447/* Identifies the number of PFs on the device. */
4448#define MC_CMD_GET_PF_COUNT_OUT_PF_COUNT_OFST 0
4449#define MC_CMD_GET_PF_COUNT_OUT_PF_COUNT_LEN 1
4450
4451
4452/***********************************/
4453/* MC_CMD_SET_PF_COUNT
4454 * Set number of PFs on the device.
4455 */
4456#define MC_CMD_SET_PF_COUNT 0xb7
4457
4458/* MC_CMD_SET_PF_COUNT_IN msgrequest */
4459#define MC_CMD_SET_PF_COUNT_IN_LEN 4
4460/* New number of PFs on the device. */
4461#define MC_CMD_SET_PF_COUNT_IN_PF_COUNT_OFST 0
4462
4463/* MC_CMD_SET_PF_COUNT_OUT msgresponse */
4464#define MC_CMD_SET_PF_COUNT_OUT_LEN 0
4465
4466
4467/***********************************/
4468/* MC_CMD_GET_PORT_ASSIGNMENT
4469 * Get port assignment for current PCI function.
4470 */
4471#define MC_CMD_GET_PORT_ASSIGNMENT 0xb8
4472
4473/* MC_CMD_GET_PORT_ASSIGNMENT_IN msgrequest */
4474#define MC_CMD_GET_PORT_ASSIGNMENT_IN_LEN 0
4475
4476/* MC_CMD_GET_PORT_ASSIGNMENT_OUT msgresponse */
4477#define MC_CMD_GET_PORT_ASSIGNMENT_OUT_LEN 4
4478/* Identifies the port assignment for this function. */
4479#define MC_CMD_GET_PORT_ASSIGNMENT_OUT_PORT_OFST 0
4480
4481
4482/***********************************/
4483/* MC_CMD_SET_PORT_ASSIGNMENT
4484 * Set port assignment for current PCI function.
4485 */
4486#define MC_CMD_SET_PORT_ASSIGNMENT 0xb9
4487
4488/* MC_CMD_SET_PORT_ASSIGNMENT_IN msgrequest */
4489#define MC_CMD_SET_PORT_ASSIGNMENT_IN_LEN 4
4490/* Identifies the port assignment for this function. */
4491#define MC_CMD_SET_PORT_ASSIGNMENT_IN_PORT_OFST 0
4492
4493/* MC_CMD_SET_PORT_ASSIGNMENT_OUT msgresponse */
4494#define MC_CMD_SET_PORT_ASSIGNMENT_OUT_LEN 0
4495
4496
4497/***********************************/
4498/* MC_CMD_ALLOC_VIS
4499 * Allocate VIs for current PCI function.
4500 */
4501#define MC_CMD_ALLOC_VIS 0x8b
4502
4503/* MC_CMD_ALLOC_VIS_IN msgrequest */
4504#define MC_CMD_ALLOC_VIS_IN_LEN 8
4505/* The minimum number of VIs that is acceptable */
4506#define MC_CMD_ALLOC_VIS_IN_MIN_VI_COUNT_OFST 0
4507/* The maximum number of VIs that would be useful */
4508#define MC_CMD_ALLOC_VIS_IN_MAX_VI_COUNT_OFST 4
4509
4510/* MC_CMD_ALLOC_VIS_OUT msgresponse */
4511#define MC_CMD_ALLOC_VIS_OUT_LEN 8
4512/* The number of VIs allocated on this function */
4513#define MC_CMD_ALLOC_VIS_OUT_VI_COUNT_OFST 0
4514/* The base absolute VI number allocated to this function. Required to
4515 * correctly interpret wakeup events.
4516 */
4517#define MC_CMD_ALLOC_VIS_OUT_VI_BASE_OFST 4
4518
4519
4520/***********************************/
4521/* MC_CMD_FREE_VIS
4522 * Free VIs for current PCI function. Any linked PIO buffers will be unlinked,
4523 * but not freed.
4524 */
4525#define MC_CMD_FREE_VIS 0x8c
4526
4527/* MC_CMD_FREE_VIS_IN msgrequest */
4528#define MC_CMD_FREE_VIS_IN_LEN 0
4529
4530/* MC_CMD_FREE_VIS_OUT msgresponse */
4531#define MC_CMD_FREE_VIS_OUT_LEN 0
4532
4533
4534/***********************************/
4535/* MC_CMD_GET_SRIOV_CFG
4536 * Get SRIOV config for this PF.
4537 */
4538#define MC_CMD_GET_SRIOV_CFG 0xba
4539
4540/* MC_CMD_GET_SRIOV_CFG_IN msgrequest */
4541#define MC_CMD_GET_SRIOV_CFG_IN_LEN 0
4542
4543/* MC_CMD_GET_SRIOV_CFG_OUT msgresponse */
4544#define MC_CMD_GET_SRIOV_CFG_OUT_LEN 20
4545/* Number of VFs currently enabled. */
4546#define MC_CMD_GET_SRIOV_CFG_OUT_VF_CURRENT_OFST 0
4547/* Max number of VFs before sriov stride and offset may need to be changed. */
4548#define MC_CMD_GET_SRIOV_CFG_OUT_VF_MAX_OFST 4
4549#define MC_CMD_GET_SRIOV_CFG_OUT_FLAGS_OFST 8
4550#define MC_CMD_GET_SRIOV_CFG_OUT_VF_ENABLED_LBN 0
4551#define MC_CMD_GET_SRIOV_CFG_OUT_VF_ENABLED_WIDTH 1
4552/* RID offset of first VF from PF. */
4553#define MC_CMD_GET_SRIOV_CFG_OUT_VF_OFFSET_OFST 12
4554/* RID offset of each subsequent VF from the previous. */
4555#define MC_CMD_GET_SRIOV_CFG_OUT_VF_STRIDE_OFST 16
4556
4557
4558/***********************************/
4559/* MC_CMD_SET_SRIOV_CFG
4560 * Set SRIOV config for this PF.
4561 */
4562#define MC_CMD_SET_SRIOV_CFG 0xbb
4563
4564/* MC_CMD_SET_SRIOV_CFG_IN msgrequest */
4565#define MC_CMD_SET_SRIOV_CFG_IN_LEN 20
4566/* Number of VFs currently enabled. */
4567#define MC_CMD_SET_SRIOV_CFG_IN_VF_CURRENT_OFST 0
4568/* Max number of VFs before sriov stride and offset may need to be changed. */
4569#define MC_CMD_SET_SRIOV_CFG_IN_VF_MAX_OFST 4
4570#define MC_CMD_SET_SRIOV_CFG_IN_FLAGS_OFST 8
4571#define MC_CMD_SET_SRIOV_CFG_IN_VF_ENABLED_LBN 0
4572#define MC_CMD_SET_SRIOV_CFG_IN_VF_ENABLED_WIDTH 1
4573/* RID offset of first VF from PF, or 0 for no change, or
4574 * MC_CMD_RESOURCE_INSTANCE_ANY to allow the system to allocate an offset.
4575 */
4576#define MC_CMD_SET_SRIOV_CFG_IN_VF_OFFSET_OFST 12
4577/* RID offset of each subsequent VF from the previous, 0 for no change, or
4578 * MC_CMD_RESOURCE_INSTANCE_ANY to allow the system to allocate a stride.
4579 */
4580#define MC_CMD_SET_SRIOV_CFG_IN_VF_STRIDE_OFST 16
4581
4582/* MC_CMD_SET_SRIOV_CFG_OUT msgresponse */
4583#define MC_CMD_SET_SRIOV_CFG_OUT_LEN 0
4584
4585
4586/***********************************/
4587/* MC_CMD_GET_VI_ALLOC_INFO
4588 * Get information about number of VI's and base VI number allocated to this
4589 * function.
4590 */
4591#define MC_CMD_GET_VI_ALLOC_INFO 0x8d
4592
4593/* MC_CMD_GET_VI_ALLOC_INFO_IN msgrequest */
4594#define MC_CMD_GET_VI_ALLOC_INFO_IN_LEN 0
4595
4596/* MC_CMD_GET_VI_ALLOC_INFO_OUT msgresponse */
4597#define MC_CMD_GET_VI_ALLOC_INFO_OUT_LEN 8
4598/* The number of VIs allocated on this function */
4599#define MC_CMD_GET_VI_ALLOC_INFO_OUT_VI_COUNT_OFST 0
4600/* The base absolute VI number allocated to this function. Required to
4601 * correctly interpret wakeup events.
4602 */
4603#define MC_CMD_GET_VI_ALLOC_INFO_OUT_VI_BASE_OFST 4
4604
4605
4606/***********************************/
4607/* MC_CMD_DUMP_VI_STATE
4608 * For CmdClient use. Dump pertinent information on a specific absolute VI.
4609 */
4610#define MC_CMD_DUMP_VI_STATE 0x8e
4611
4612/* MC_CMD_DUMP_VI_STATE_IN msgrequest */
4613#define MC_CMD_DUMP_VI_STATE_IN_LEN 4
4614/* The VI number to query. */
4615#define MC_CMD_DUMP_VI_STATE_IN_VI_NUMBER_OFST 0
4616
4617/* MC_CMD_DUMP_VI_STATE_OUT msgresponse */
4618#define MC_CMD_DUMP_VI_STATE_OUT_LEN 96
4619/* The PF part of the function owning this VI. */
4620#define MC_CMD_DUMP_VI_STATE_OUT_OWNER_PF_OFST 0
4621#define MC_CMD_DUMP_VI_STATE_OUT_OWNER_PF_LEN 2
4622/* The VF part of the function owning this VI. */
4623#define MC_CMD_DUMP_VI_STATE_OUT_OWNER_VF_OFST 2
4624#define MC_CMD_DUMP_VI_STATE_OUT_OWNER_VF_LEN 2
4625/* Base of VIs allocated to this function. */
4626#define MC_CMD_DUMP_VI_STATE_OUT_FUNC_VI_BASE_OFST 4
4627#define MC_CMD_DUMP_VI_STATE_OUT_FUNC_VI_BASE_LEN 2
4628/* Count of VIs allocated to the owner function. */
4629#define MC_CMD_DUMP_VI_STATE_OUT_FUNC_VI_COUNT_OFST 6
4630#define MC_CMD_DUMP_VI_STATE_OUT_FUNC_VI_COUNT_LEN 2
4631/* Base interrupt vector allocated to this function. */
4632#define MC_CMD_DUMP_VI_STATE_OUT_FUNC_VECTOR_BASE_OFST 8
4633#define MC_CMD_DUMP_VI_STATE_OUT_FUNC_VECTOR_BASE_LEN 2
4634/* Number of interrupt vectors allocated to this function. */
4635#define MC_CMD_DUMP_VI_STATE_OUT_FUNC_VECTOR_COUNT_OFST 10
4636#define MC_CMD_DUMP_VI_STATE_OUT_FUNC_VECTOR_COUNT_LEN 2
4637/* Raw evq ptr table data. */
4638#define MC_CMD_DUMP_VI_STATE_OUT_VI_EVQ_PTR_RAW_OFST 12
4639#define MC_CMD_DUMP_VI_STATE_OUT_VI_EVQ_PTR_RAW_LEN 8
4640#define MC_CMD_DUMP_VI_STATE_OUT_VI_EVQ_PTR_RAW_LO_OFST 12
4641#define MC_CMD_DUMP_VI_STATE_OUT_VI_EVQ_PTR_RAW_HI_OFST 16
4642/* Raw evq timer table data. */
4643#define MC_CMD_DUMP_VI_STATE_OUT_VI_EV_TIMER_RAW_OFST 20
4644#define MC_CMD_DUMP_VI_STATE_OUT_VI_EV_TIMER_RAW_LEN 8
4645#define MC_CMD_DUMP_VI_STATE_OUT_VI_EV_TIMER_RAW_LO_OFST 20
4646#define MC_CMD_DUMP_VI_STATE_OUT_VI_EV_TIMER_RAW_HI_OFST 24
4647/* Combined metadata field. */
4648#define MC_CMD_DUMP_VI_STATE_OUT_VI_EV_META_OFST 28
4649#define MC_CMD_DUMP_VI_STATE_OUT_VI_EV_META_BUFS_BASE_LBN 0
4650#define MC_CMD_DUMP_VI_STATE_OUT_VI_EV_META_BUFS_BASE_WIDTH 16
4651#define MC_CMD_DUMP_VI_STATE_OUT_VI_EV_META_BUFS_NPAGES_LBN 16
4652#define MC_CMD_DUMP_VI_STATE_OUT_VI_EV_META_BUFS_NPAGES_WIDTH 8
4653#define MC_CMD_DUMP_VI_STATE_OUT_VI_EV_META_WKUP_REF_LBN 24
4654#define MC_CMD_DUMP_VI_STATE_OUT_VI_EV_META_WKUP_REF_WIDTH 8
4655/* TXDPCPU raw table data for queue. */
4656#define MC_CMD_DUMP_VI_STATE_OUT_VI_TX_RAW_TBL_0_OFST 32
4657#define MC_CMD_DUMP_VI_STATE_OUT_VI_TX_RAW_TBL_0_LEN 8
4658#define MC_CMD_DUMP_VI_STATE_OUT_VI_TX_RAW_TBL_0_LO_OFST 32
4659#define MC_CMD_DUMP_VI_STATE_OUT_VI_TX_RAW_TBL_0_HI_OFST 36
4660/* TXDPCPU raw table data for queue. */
4661#define MC_CMD_DUMP_VI_STATE_OUT_VI_TX_RAW_TBL_1_OFST 40
4662#define MC_CMD_DUMP_VI_STATE_OUT_VI_TX_RAW_TBL_1_LEN 8
4663#define MC_CMD_DUMP_VI_STATE_OUT_VI_TX_RAW_TBL_1_LO_OFST 40
4664#define MC_CMD_DUMP_VI_STATE_OUT_VI_TX_RAW_TBL_1_HI_OFST 44
4665/* TXDPCPU raw table data for queue. */
4666#define MC_CMD_DUMP_VI_STATE_OUT_VI_TX_RAW_TBL_2_OFST 48
4667#define MC_CMD_DUMP_VI_STATE_OUT_VI_TX_RAW_TBL_2_LEN 8
4668#define MC_CMD_DUMP_VI_STATE_OUT_VI_TX_RAW_TBL_2_LO_OFST 48
4669#define MC_CMD_DUMP_VI_STATE_OUT_VI_TX_RAW_TBL_2_HI_OFST 52
4670/* Combined metadata field. */
4671#define MC_CMD_DUMP_VI_STATE_OUT_VI_TX_META_OFST 56
4672#define MC_CMD_DUMP_VI_STATE_OUT_VI_TX_META_LEN 8
4673#define MC_CMD_DUMP_VI_STATE_OUT_VI_TX_META_LO_OFST 56
4674#define MC_CMD_DUMP_VI_STATE_OUT_VI_TX_META_HI_OFST 60
4675#define MC_CMD_DUMP_VI_STATE_OUT_VI_TX_META_BUFS_BASE_LBN 0
4676#define MC_CMD_DUMP_VI_STATE_OUT_VI_TX_META_BUFS_BASE_WIDTH 16
4677#define MC_CMD_DUMP_VI_STATE_OUT_VI_TX_META_BUFS_NPAGES_LBN 16
4678#define MC_CMD_DUMP_VI_STATE_OUT_VI_TX_META_BUFS_NPAGES_WIDTH 8
4679#define MC_CMD_DUMP_VI_STATE_OUT_VI_TX_META_QSTATE_LBN 24
4680#define MC_CMD_DUMP_VI_STATE_OUT_VI_TX_META_QSTATE_WIDTH 8
4681#define MC_CMD_DUMP_VI_STATE_OUT_VI_TX_META_WAITCOUNT_LBN 32
4682#define MC_CMD_DUMP_VI_STATE_OUT_VI_TX_META_WAITCOUNT_WIDTH 8
4683#define MC_CMD_DUMP_VI_STATE_OUT_VI_PADDING_LBN 40
4684#define MC_CMD_DUMP_VI_STATE_OUT_VI_PADDING_WIDTH 24
4685/* RXDPCPU raw table data for queue. */
4686#define MC_CMD_DUMP_VI_STATE_OUT_VI_RX_RAW_TBL_0_OFST 64
4687#define MC_CMD_DUMP_VI_STATE_OUT_VI_RX_RAW_TBL_0_LEN 8
4688#define MC_CMD_DUMP_VI_STATE_OUT_VI_RX_RAW_TBL_0_LO_OFST 64
4689#define MC_CMD_DUMP_VI_STATE_OUT_VI_RX_RAW_TBL_0_HI_OFST 68
4690/* RXDPCPU raw table data for queue. */
4691#define MC_CMD_DUMP_VI_STATE_OUT_VI_RX_RAW_TBL_1_OFST 72
4692#define MC_CMD_DUMP_VI_STATE_OUT_VI_RX_RAW_TBL_1_LEN 8
4693#define MC_CMD_DUMP_VI_STATE_OUT_VI_RX_RAW_TBL_1_LO_OFST 72
4694#define MC_CMD_DUMP_VI_STATE_OUT_VI_RX_RAW_TBL_1_HI_OFST 76
4695/* Reserved, currently 0. */
4696#define MC_CMD_DUMP_VI_STATE_OUT_VI_RX_RAW_TBL_2_OFST 80
4697#define MC_CMD_DUMP_VI_STATE_OUT_VI_RX_RAW_TBL_2_LEN 8
4698#define MC_CMD_DUMP_VI_STATE_OUT_VI_RX_RAW_TBL_2_LO_OFST 80
4699#define MC_CMD_DUMP_VI_STATE_OUT_VI_RX_RAW_TBL_2_HI_OFST 84
4700/* Combined metadata field. */
4701#define MC_CMD_DUMP_VI_STATE_OUT_VI_RX_META_OFST 88
4702#define MC_CMD_DUMP_VI_STATE_OUT_VI_RX_META_LEN 8
4703#define MC_CMD_DUMP_VI_STATE_OUT_VI_RX_META_LO_OFST 88
4704#define MC_CMD_DUMP_VI_STATE_OUT_VI_RX_META_HI_OFST 92
4705#define MC_CMD_DUMP_VI_STATE_OUT_VI_RX_META_BUFS_BASE_LBN 0
4706#define MC_CMD_DUMP_VI_STATE_OUT_VI_RX_META_BUFS_BASE_WIDTH 16
4707#define MC_CMD_DUMP_VI_STATE_OUT_VI_RX_META_BUFS_NPAGES_LBN 16
4708#define MC_CMD_DUMP_VI_STATE_OUT_VI_RX_META_BUFS_NPAGES_WIDTH 8
4709#define MC_CMD_DUMP_VI_STATE_OUT_VI_RX_META_QSTATE_LBN 24
4710#define MC_CMD_DUMP_VI_STATE_OUT_VI_RX_META_QSTATE_WIDTH 8
4711#define MC_CMD_DUMP_VI_STATE_OUT_VI_RX_META_WAITCOUNT_LBN 32
4712#define MC_CMD_DUMP_VI_STATE_OUT_VI_RX_META_WAITCOUNT_WIDTH 8
4713
4714
4715/***********************************/
4716/* MC_CMD_ALLOC_PIOBUF
4717 * Allocate a push I/O buffer for later use with a tx queue.
4718 */
4719#define MC_CMD_ALLOC_PIOBUF 0x8f
4720
4721/* MC_CMD_ALLOC_PIOBUF_IN msgrequest */
4722#define MC_CMD_ALLOC_PIOBUF_IN_LEN 0
4723
4724/* MC_CMD_ALLOC_PIOBUF_OUT msgresponse */
4725#define MC_CMD_ALLOC_PIOBUF_OUT_LEN 4
4726/* Handle for allocated push I/O buffer. */
4727#define MC_CMD_ALLOC_PIOBUF_OUT_PIOBUF_HANDLE_OFST 0
4728
4729
4730/***********************************/
4731/* MC_CMD_FREE_PIOBUF
4732 * Free a push I/O buffer.
4733 */
4734#define MC_CMD_FREE_PIOBUF 0x90
4735
4736/* MC_CMD_FREE_PIOBUF_IN msgrequest */
4737#define MC_CMD_FREE_PIOBUF_IN_LEN 4
4738/* Handle for allocated push I/O buffer. */
4739#define MC_CMD_FREE_PIOBUF_IN_PIOBUF_HANDLE_OFST 0
4740
4741/* MC_CMD_FREE_PIOBUF_OUT msgresponse */
4742#define MC_CMD_FREE_PIOBUF_OUT_LEN 0
4743
4744
4745/***********************************/
4746/* MC_CMD_GET_VI_TLP_PROCESSING
4747 * Get TLP steering and ordering information for a VI.
4748 */
4749#define MC_CMD_GET_VI_TLP_PROCESSING 0xb0
4750
4751/* MC_CMD_GET_VI_TLP_PROCESSING_IN msgrequest */
4752#define MC_CMD_GET_VI_TLP_PROCESSING_IN_LEN 4
4753/* VI number to get information for. */
4754#define MC_CMD_GET_VI_TLP_PROCESSING_IN_INSTANCE_OFST 0
4755
4756/* MC_CMD_GET_VI_TLP_PROCESSING_OUT msgresponse */
4757#define MC_CMD_GET_VI_TLP_PROCESSING_OUT_LEN 4
4758/* Transaction processing steering hint 1 for use with the Rx Queue. */
4759#define MC_CMD_GET_VI_TLP_PROCESSING_OUT_TPH_TAG1_RX_OFST 0
4760#define MC_CMD_GET_VI_TLP_PROCESSING_OUT_TPH_TAG1_RX_LEN 1
4761/* Transaction processing steering hint 2 for use with the Ev Queue. */
4762#define MC_CMD_GET_VI_TLP_PROCESSING_OUT_TPH_TAG2_EV_OFST 1
4763#define MC_CMD_GET_VI_TLP_PROCESSING_OUT_TPH_TAG2_EV_LEN 1
4764/* Use Relaxed ordering model for TLPs on this VI. */
4765#define MC_CMD_GET_VI_TLP_PROCESSING_OUT_RELAXED_ORDERING_LBN 16
4766#define MC_CMD_GET_VI_TLP_PROCESSING_OUT_RELAXED_ORDERING_WIDTH 1
4767/* Use ID based ordering for TLPs on this VI. */
4768#define MC_CMD_GET_VI_TLP_PROCESSING_OUT_ID_BASED_ORDERING_LBN 17
4769#define MC_CMD_GET_VI_TLP_PROCESSING_OUT_ID_BASED_ORDERING_WIDTH 1
4770/* Set no snoop bit for TLPs on this VI. */
4771#define MC_CMD_GET_VI_TLP_PROCESSING_OUT_NO_SNOOP_LBN 18
4772#define MC_CMD_GET_VI_TLP_PROCESSING_OUT_NO_SNOOP_WIDTH 1
4773/* Enable TPH for TLPs on this VI. */
4774#define MC_CMD_GET_VI_TLP_PROCESSING_OUT_TPH_ON_LBN 19
4775#define MC_CMD_GET_VI_TLP_PROCESSING_OUT_TPH_ON_WIDTH 1
4776#define MC_CMD_GET_VI_TLP_PROCESSING_OUT_DATA_OFST 0
4777
4778
4779/***********************************/
4780/* MC_CMD_SET_VI_TLP_PROCESSING
4781 * Set TLP steering and ordering information for a VI.
4782 */
4783#define MC_CMD_SET_VI_TLP_PROCESSING 0xb1
4784
4785/* MC_CMD_SET_VI_TLP_PROCESSING_IN msgrequest */
4786#define MC_CMD_SET_VI_TLP_PROCESSING_IN_LEN 8
4787/* VI number to set information for. */
4788#define MC_CMD_SET_VI_TLP_PROCESSING_IN_INSTANCE_OFST 0
4789/* Transaction processing steering hint 1 for use with the Rx Queue. */
4790#define MC_CMD_SET_VI_TLP_PROCESSING_IN_TPH_TAG1_RX_OFST 4
4791#define MC_CMD_SET_VI_TLP_PROCESSING_IN_TPH_TAG1_RX_LEN 1
4792/* Transaction processing steering hint 2 for use with the Ev Queue. */
4793#define MC_CMD_SET_VI_TLP_PROCESSING_IN_TPH_TAG2_EV_OFST 5
4794#define MC_CMD_SET_VI_TLP_PROCESSING_IN_TPH_TAG2_EV_LEN 1
4795/* Use Relaxed ordering model for TLPs on this VI. */
4796#define MC_CMD_SET_VI_TLP_PROCESSING_IN_RELAXED_ORDERING_LBN 48
4797#define MC_CMD_SET_VI_TLP_PROCESSING_IN_RELAXED_ORDERING_WIDTH 1
4798/* Use ID based ordering for TLPs on this VI. */
4799#define MC_CMD_SET_VI_TLP_PROCESSING_IN_ID_BASED_ORDERING_LBN 49
4800#define MC_CMD_SET_VI_TLP_PROCESSING_IN_ID_BASED_ORDERING_WIDTH 1
4801/* Set the no snoop bit for TLPs on this VI. */
4802#define MC_CMD_SET_VI_TLP_PROCESSING_IN_NO_SNOOP_LBN 50
4803#define MC_CMD_SET_VI_TLP_PROCESSING_IN_NO_SNOOP_WIDTH 1
4804/* Enable TPH for TLPs on this VI. */
4805#define MC_CMD_SET_VI_TLP_PROCESSING_IN_TPH_ON_LBN 51
4806#define MC_CMD_SET_VI_TLP_PROCESSING_IN_TPH_ON_WIDTH 1
4807#define MC_CMD_SET_VI_TLP_PROCESSING_IN_DATA_OFST 4
4808
4809/* MC_CMD_SET_VI_TLP_PROCESSING_OUT msgresponse */
4810#define MC_CMD_SET_VI_TLP_PROCESSING_OUT_LEN 0
4811
4812
4813/***********************************/
4814/* MC_CMD_GET_TLP_PROCESSING_GLOBALS
4815 * Get global PCIe steering and transaction processing configuration.
4816 */
4817#define MC_CMD_GET_TLP_PROCESSING_GLOBALS 0xbc
4818
4819/* MC_CMD_GET_TLP_PROCESSING_GLOBALS_IN msgrequest */
4820#define MC_CMD_GET_TLP_PROCESSING_GLOBALS_IN_LEN 4
4821#define MC_CMD_GET_TLP_PROCESSING_GLOBALS_IN_TLP_GLOBAL_CATEGORY_OFST 0
4822/* enum: MISC. */
4823#define MC_CMD_GET_TLP_PROCESSING_GLOBALS_IN_TLP_GLOBAL_CATEGORY_MISC 0x0
4824/* enum: IDO. */
4825#define MC_CMD_GET_TLP_PROCESSING_GLOBALS_IN_TLP_GLOBAL_CATEGORY_IDO 0x1
4826/* enum: RO. */
4827#define MC_CMD_GET_TLP_PROCESSING_GLOBALS_IN_TLP_GLOBAL_CATEGORY_RO 0x2
4828/* enum: TPH Type. */
4829#define MC_CMD_GET_TLP_PROCESSING_GLOBALS_IN_TLP_GLOBAL_CATEGORY_TPH_TYPE 0x3
4830
4831/* MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT msgresponse */
4832#define MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_LEN 8
4833#define MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_GLOBAL_CATEGORY_OFST 0
4834/* Enum values, see field(s): */
4835/* MC_CMD_GET_TLP_PROCESSING_GLOBALS_IN/TLP_GLOBAL_CATEGORY */
4836/* Amalgamated TLP info word. */
4837#define MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_WORD_OFST 4
4838#define MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_MISC_WTAG_EN_LBN 0
4839#define MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_MISC_WTAG_EN_WIDTH 1
4840#define MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_MISC_SPARE_LBN 1
4841#define MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_MISC_SPARE_WIDTH 31
4842#define MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_IDO_DL_EN_LBN 0
4843#define MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_IDO_DL_EN_WIDTH 1
4844#define MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_IDO_TX_EN_LBN 1
4845#define MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_IDO_TX_EN_WIDTH 1
4846#define MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_IDO_EV_EN_LBN 2
4847#define MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_IDO_EV_EN_WIDTH 1
4848#define MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_IDO_RX_EN_LBN 3
4849#define MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_IDO_RX_EN_WIDTH 1
4850#define MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_IDO_SPARE_LBN 4
4851#define MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_IDO_SPARE_WIDTH 28
4852#define MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_RO_RXDMA_EN_LBN 0
4853#define MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_RO_RXDMA_EN_WIDTH 1
4854#define MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_RO_TXDMA_EN_LBN 1
4855#define MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_RO_TXDMA_EN_WIDTH 1
4856#define MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_RO_DL_EN_LBN 2
4857#define MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_RO_DL_EN_WIDTH 1
4858#define MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_RO_SPARE_LBN 3
4859#define MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_RO_SPARE_WIDTH 29
4860#define MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_TPH_TYPE_MSIX_LBN 0
4861#define MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_TPH_TYPE_MSIX_WIDTH 2
4862#define MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_TPH_TYPE_DL_LBN 2
4863#define MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_TPH_TYPE_DL_WIDTH 2
4864#define MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_TPH_TYPE_TX_LBN 4
4865#define MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_TPH_TYPE_TX_WIDTH 2
4866#define MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_TPH_TYPE_EV_LBN 6
4867#define MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_TPH_TYPE_EV_WIDTH 2
4868#define MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_TPH_TYPE_RX_LBN 8
4869#define MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_TPH_TYPE_RX_WIDTH 2
4870#define MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_TLP_TYPE_SPARE_LBN 9
4871#define MC_CMD_GET_TLP_PROCESSING_GLOBALS_OUT_TLP_INFO_TLP_TYPE_SPARE_WIDTH 23
4872
4873
4874/***********************************/
4875/* MC_CMD_SET_TLP_PROCESSING_GLOBALS
4876 * Set global PCIe steering and transaction processing configuration.
4877 */
4878#define MC_CMD_SET_TLP_PROCESSING_GLOBALS 0xbd
4879
4880/* MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN msgrequest */
4881#define MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_LEN 8
4882#define MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_GLOBAL_CATEGORY_OFST 0
4883/* Enum values, see field(s): */
4884/* MC_CMD_GET_TLP_PROCESSING_GLOBALS/MC_CMD_GET_TLP_PROCESSING_GLOBALS_IN/TLP_GLOBAL_CATEGORY */
4885/* Amalgamated TLP info word. */
4886#define MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_WORD_OFST 4
4887#define MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_MISC_WTAG_EN_LBN 0
4888#define MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_MISC_WTAG_EN_WIDTH 1
4889#define MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_IDO_DL_EN_LBN 0
4890#define MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_IDO_DL_EN_WIDTH 1
4891#define MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_IDO_TX_EN_LBN 1
4892#define MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_IDO_TX_EN_WIDTH 1
4893#define MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_IDO_EV_EN_LBN 2
4894#define MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_IDO_EV_EN_WIDTH 1
4895#define MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_IDO_RX_EN_LBN 3
4896#define MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_IDO_RX_EN_WIDTH 1
4897#define MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_RO_RXDMA_EN_LBN 0
4898#define MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_RO_RXDMA_EN_WIDTH 1
4899#define MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_RO_TXDMA_EN_LBN 1
4900#define MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_RO_TXDMA_EN_WIDTH 1
4901#define MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_RO_DL_EN_LBN 2
4902#define MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_RO_DL_EN_WIDTH 1
4903#define MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_TPH_TYPE_MSIX_LBN 0
4904#define MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_TPH_TYPE_MSIX_WIDTH 2
4905#define MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_TPH_TYPE_DL_LBN 2
4906#define MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_TPH_TYPE_DL_WIDTH 2
4907#define MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_TPH_TYPE_TX_LBN 4
4908#define MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_TPH_TYPE_TX_WIDTH 2
4909#define MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_TPH_TYPE_EV_LBN 6
4910#define MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_TPH_TYPE_EV_WIDTH 2
4911#define MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_TPH_TYPE_RX_LBN 8
4912#define MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_TPH_TYPE_RX_WIDTH 2
4913#define MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_SPARE_LBN 10
4914#define MC_CMD_SET_TLP_PROCESSING_GLOBALS_IN_TLP_INFO_SPARE_WIDTH 22
4915
4916/* MC_CMD_SET_TLP_PROCESSING_GLOBALS_OUT msgresponse */
4917#define MC_CMD_SET_TLP_PROCESSING_GLOBALS_OUT_LEN 0
4918
4919
4920/***********************************/
4921/* MC_CMD_SATELLITE_DOWNLOAD
4922 * Download a new set of images to the satellite CPUs from the host.
4923 */
4924#define MC_CMD_SATELLITE_DOWNLOAD 0x91
4925
4926/* MC_CMD_SATELLITE_DOWNLOAD_IN msgrequest: The reset requirements for the CPUs
4927 * are subtle, and so downloads must proceed in a number of phases.
4928 *
4929 * 1) PHASE_RESET with a target of TARGET_ALL and chunk ID/length of 0.
4930 *
4931 * 2) PHASE_IMEMS for each of the IMEM targets (target IDs 0-11). Each download
4932 * may consist of multiple chunks. The final chunk (with CHUNK_ID_LAST) should
4933 * be a checksum (a simple 32-bit sum) of the transferred data. An individual
4934 * download may be aborted using CHUNK_ID_ABORT.
4935 *
4936 * 3) PHASE_VECTORS for each of the vector table targets (target IDs 12-15),
4937 * similar to PHASE_IMEMS.
4938 *
4939 * 4) PHASE_READY with a target of TARGET_ALL and chunk ID/length of 0.
4940 *
4941 * After any error (a requested abort is not considered to be an error) the
4942 * sequence must be restarted from PHASE_RESET.
4943 */
4944#define MC_CMD_SATELLITE_DOWNLOAD_IN_LENMIN 20
4945#define MC_CMD_SATELLITE_DOWNLOAD_IN_LENMAX 252
4946#define MC_CMD_SATELLITE_DOWNLOAD_IN_LEN(num) (16+4*(num))
4947/* Download phase. (Note: the IDLE phase is used internally and is never valid
4948 * in a command from the host.)
4949 */
4950#define MC_CMD_SATELLITE_DOWNLOAD_IN_PHASE_OFST 0
4951#define MC_CMD_SATELLITE_DOWNLOAD_IN_PHASE_IDLE 0x0 /* enum */
4952#define MC_CMD_SATELLITE_DOWNLOAD_IN_PHASE_RESET 0x1 /* enum */
4953#define MC_CMD_SATELLITE_DOWNLOAD_IN_PHASE_IMEMS 0x2 /* enum */
4954#define MC_CMD_SATELLITE_DOWNLOAD_IN_PHASE_VECTORS 0x3 /* enum */
4955#define MC_CMD_SATELLITE_DOWNLOAD_IN_PHASE_READY 0x4 /* enum */
4956/* Target for download. (These match the blob numbers defined in
4957 * mc_flash_layout.h.)
4958 */
4959#define MC_CMD_SATELLITE_DOWNLOAD_IN_TARGET_OFST 4
4960/* enum: Valid in phase 2 (PHASE_IMEMS) only */
4961#define MC_CMD_SATELLITE_DOWNLOAD_IN_TARGET_TXDI_TEXT 0x0
4962/* enum: Valid in phase 2 (PHASE_IMEMS) only */
4963#define MC_CMD_SATELLITE_DOWNLOAD_IN_TARGET_RXDI_TEXT 0x1
4964/* enum: Valid in phase 2 (PHASE_IMEMS) only */
4965#define MC_CMD_SATELLITE_DOWNLOAD_IN_TARGET_TXDP_TEXT 0x2
4966/* enum: Valid in phase 2 (PHASE_IMEMS) only */
4967#define MC_CMD_SATELLITE_DOWNLOAD_IN_TARGET_RXDP_TEXT 0x3
4968/* enum: Valid in phase 2 (PHASE_IMEMS) only */
4969#define MC_CMD_SATELLITE_DOWNLOAD_IN_TARGET_RXHRSL_HR_LUT 0x4
4970/* enum: Valid in phase 2 (PHASE_IMEMS) only */
4971#define MC_CMD_SATELLITE_DOWNLOAD_IN_TARGET_RXHRSL_HR_LUT_CFG 0x5
4972/* enum: Valid in phase 2 (PHASE_IMEMS) only */
4973#define MC_CMD_SATELLITE_DOWNLOAD_IN_TARGET_TXHRSL_HR_LUT 0x6
4974/* enum: Valid in phase 2 (PHASE_IMEMS) only */
4975#define MC_CMD_SATELLITE_DOWNLOAD_IN_TARGET_TXHRSL_HR_LUT_CFG 0x7
4976/* enum: Valid in phase 2 (PHASE_IMEMS) only */
4977#define MC_CMD_SATELLITE_DOWNLOAD_IN_TARGET_RXHRSL_HR_PGM 0x8
4978/* enum: Valid in phase 2 (PHASE_IMEMS) only */
4979#define MC_CMD_SATELLITE_DOWNLOAD_IN_TARGET_RXHRSL_SL_PGM 0x9
4980/* enum: Valid in phase 2 (PHASE_IMEMS) only */
4981#define MC_CMD_SATELLITE_DOWNLOAD_IN_TARGET_TXHRSL_HR_PGM 0xa
4982/* enum: Valid in phase 2 (PHASE_IMEMS) only */
4983#define MC_CMD_SATELLITE_DOWNLOAD_IN_TARGET_TXHRSL_SL_PGM 0xb
4984/* enum: Valid in phase 3 (PHASE_VECTORS) only */
4985#define MC_CMD_SATELLITE_DOWNLOAD_IN_TARGET_RXDI_VTBL0 0xc
4986/* enum: Valid in phase 3 (PHASE_VECTORS) only */
4987#define MC_CMD_SATELLITE_DOWNLOAD_IN_TARGET_TXDI_VTBL0 0xd
4988/* enum: Valid in phase 3 (PHASE_VECTORS) only */
4989#define MC_CMD_SATELLITE_DOWNLOAD_IN_TARGET_RXDI_VTBL1 0xe
4990/* enum: Valid in phase 3 (PHASE_VECTORS) only */
4991#define MC_CMD_SATELLITE_DOWNLOAD_IN_TARGET_TXDI_VTBL1 0xf
4992/* enum: Valid in phases 1 (PHASE_RESET) and 4 (PHASE_READY) only */
4993#define MC_CMD_SATELLITE_DOWNLOAD_IN_TARGET_ALL 0xffffffff
4994/* Chunk ID, or CHUNK_ID_LAST or CHUNK_ID_ABORT */
4995#define MC_CMD_SATELLITE_DOWNLOAD_IN_CHUNK_ID_OFST 8
4996/* enum: Last chunk, containing checksum rather than data */
4997#define MC_CMD_SATELLITE_DOWNLOAD_IN_CHUNK_ID_LAST 0xffffffff
4998/* enum: Abort download of this item */
4999#define MC_CMD_SATELLITE_DOWNLOAD_IN_CHUNK_ID_ABORT 0xfffffffe
5000/* Length of this chunk in bytes */
5001#define MC_CMD_SATELLITE_DOWNLOAD_IN_CHUNK_LEN_OFST 12
5002/* Data for this chunk */
5003#define MC_CMD_SATELLITE_DOWNLOAD_IN_CHUNK_DATA_OFST 16
5004#define MC_CMD_SATELLITE_DOWNLOAD_IN_CHUNK_DATA_LEN 4
5005#define MC_CMD_SATELLITE_DOWNLOAD_IN_CHUNK_DATA_MINNUM 1
5006#define MC_CMD_SATELLITE_DOWNLOAD_IN_CHUNK_DATA_MAXNUM 59
5007
5008/* MC_CMD_SATELLITE_DOWNLOAD_OUT msgresponse */
5009#define MC_CMD_SATELLITE_DOWNLOAD_OUT_LEN 8
5010/* Same as MC_CMD_ERR field, but included as 0 in success cases */
5011#define MC_CMD_SATELLITE_DOWNLOAD_OUT_RESULT_OFST 0
5012/* Extra status information */
5013#define MC_CMD_SATELLITE_DOWNLOAD_OUT_INFO_OFST 4
5014/* enum: Code download OK, completed. */
5015#define MC_CMD_SATELLITE_DOWNLOAD_OUT_OK_COMPLETE 0x0
5016/* enum: Code download aborted as requested. */
5017#define MC_CMD_SATELLITE_DOWNLOAD_OUT_OK_ABORTED 0x1
5018/* enum: Code download OK so far, send next chunk. */
5019#define MC_CMD_SATELLITE_DOWNLOAD_OUT_OK_NEXT_CHUNK 0x2
5020/* enum: Download phases out of sequence */
5021#define MC_CMD_SATELLITE_DOWNLOAD_OUT_ERR_BAD_PHASE 0x100
5022/* enum: Bad target for this phase */
5023#define MC_CMD_SATELLITE_DOWNLOAD_OUT_ERR_BAD_TARGET 0x101
5024/* enum: Chunk ID out of sequence */
5025#define MC_CMD_SATELLITE_DOWNLOAD_OUT_ERR_BAD_CHUNK_ID 0x200
5026/* enum: Chunk length zero or too large */
5027#define MC_CMD_SATELLITE_DOWNLOAD_OUT_ERR_BAD_CHUNK_LEN 0x201
5028/* enum: Checksum was incorrect */
5029#define MC_CMD_SATELLITE_DOWNLOAD_OUT_ERR_BAD_CHECKSUM 0x300
5030
5031
5032/***********************************/
5033/* MC_CMD_GET_CAPABILITIES
5034 * Get device capabilities.
5035 *
5036 * This is supplementary to the MC_CMD_GET_BOARD_CFG command, and intended to
5037 * reference inherent device capabilities as opposed to current NVRAM config.
5038 */
5039#define MC_CMD_GET_CAPABILITIES 0xbe
5040
5041/* MC_CMD_GET_CAPABILITIES_IN msgrequest */
5042#define MC_CMD_GET_CAPABILITIES_IN_LEN 0
5043
5044/* MC_CMD_GET_CAPABILITIES_OUT msgresponse */
5045#define MC_CMD_GET_CAPABILITIES_OUT_LEN 20
5046/* First word of flags. */
5047#define MC_CMD_GET_CAPABILITIES_OUT_FLAGS1_OFST 0
5048#define MC_CMD_GET_CAPABILITIES_OUT_TX_VLAN_INSERTION_LBN 19
5049#define MC_CMD_GET_CAPABILITIES_OUT_TX_VLAN_INSERTION_WIDTH 1
5050#define MC_CMD_GET_CAPABILITIES_OUT_RX_VLAN_STRIPPING_LBN 20
5051#define MC_CMD_GET_CAPABILITIES_OUT_RX_VLAN_STRIPPING_WIDTH 1
5052#define MC_CMD_GET_CAPABILITIES_OUT_TX_TSO_LBN 21
5053#define MC_CMD_GET_CAPABILITIES_OUT_TX_TSO_WIDTH 1
5054#define MC_CMD_GET_CAPABILITIES_OUT_RX_PREFIX_LEN_0_LBN 22
5055#define MC_CMD_GET_CAPABILITIES_OUT_RX_PREFIX_LEN_0_WIDTH 1
5056#define MC_CMD_GET_CAPABILITIES_OUT_RX_PREFIX_LEN_14_LBN 23
5057#define MC_CMD_GET_CAPABILITIES_OUT_RX_PREFIX_LEN_14_WIDTH 1
5058#define MC_CMD_GET_CAPABILITIES_OUT_RX_TIMESTAMP_LBN 24
5059#define MC_CMD_GET_CAPABILITIES_OUT_RX_TIMESTAMP_WIDTH 1
5060#define MC_CMD_GET_CAPABILITIES_OUT_RX_BATCHING_LBN 25
5061#define MC_CMD_GET_CAPABILITIES_OUT_RX_BATCHING_WIDTH 1
5062#define MC_CMD_GET_CAPABILITIES_OUT_MCAST_FILTER_CHAINING_LBN 26
5063#define MC_CMD_GET_CAPABILITIES_OUT_MCAST_FILTER_CHAINING_WIDTH 1
5064/* RxDPCPU firmware id. */
5065#define MC_CMD_GET_CAPABILITIES_OUT_RX_DPCPU_FW_ID_OFST 4
5066#define MC_CMD_GET_CAPABILITIES_OUT_RX_DPCPU_FW_ID_LEN 2
5067/* enum: Standard RXDP firmware */
5068#define MC_CMD_GET_CAPABILITIES_OUT_RXDP 0x0
5069/* enum: Low latency RXDP firmware */
5070#define MC_CMD_GET_CAPABILITIES_OUT_RXDP_LOW_LATENCY 0x1
5071/* enum: RXDP Test firmware image 1 */
5072#define MC_CMD_GET_CAPABILITIES_OUT_RXDP_TEST_FW_TO_MC_CUT_THROUGH 0x101
5073/* enum: RXDP Test firmware image 2 */
5074#define MC_CMD_GET_CAPABILITIES_OUT_RXDP_TEST_FW_TO_MC_STORE_FORWARD 0x102
5075/* enum: RXDP Test firmware image 3 */
5076#define MC_CMD_GET_CAPABILITIES_OUT_RXDP_TEST_FW_TO_MC_STORE_FORWARD_FIRST 0x103
5077/* enum: RXDP Test firmware image 4 */
5078#define MC_CMD_GET_CAPABILITIES_OUT_RXDP_TEST_EVERY_EVENT_BATCHABLE 0x104
5079/* enum: RXDP Test firmware image 5 */
5080#define MC_CMD_GET_CAPABILITIES_OUT_RXDP_TEST_BACKPRESSURE 0x105
5081/* enum: RXDP Test firmware image 6 */
5082#define MC_CMD_GET_CAPABILITIES_OUT_RXDP_TEST_FW_PACKET_EDITS 0x106
5083/* enum: RXDP Test firmware image 7 */
5084#define MC_CMD_GET_CAPABILITIES_OUT_RXDP_TEST_FW_RX_HDR_SPLIT 0x107
5085/* enum: RXDP Test firmware image 8 */
5086#define MC_CMD_GET_CAPABILITIES_OUT_RXDP_TEST_FW_DISABLE_DL 0x108
5087/* TxDPCPU firmware id. */
5088#define MC_CMD_GET_CAPABILITIES_OUT_TX_DPCPU_FW_ID_OFST 6
5089#define MC_CMD_GET_CAPABILITIES_OUT_TX_DPCPU_FW_ID_LEN 2
5090/* enum: Standard TXDP firmware */
5091#define MC_CMD_GET_CAPABILITIES_OUT_TXDP 0x0
5092/* enum: Low latency TXDP firmware */
5093#define MC_CMD_GET_CAPABILITIES_OUT_TXDP_LOW_LATENCY 0x1
5094/* enum: TXDP Test firmware image 1 */
5095#define MC_CMD_GET_CAPABILITIES_OUT_TXDP_TEST_FW_TSO_EDIT 0x101
5096/* enum: TXDP Test firmware image 2 */
5097#define MC_CMD_GET_CAPABILITIES_OUT_TXDP_TEST_FW_PACKET_EDITS 0x102
5098#define MC_CMD_GET_CAPABILITIES_OUT_RXPD_FW_VERSION_OFST 8
5099#define MC_CMD_GET_CAPABILITIES_OUT_RXPD_FW_VERSION_LEN 2
5100#define MC_CMD_GET_CAPABILITIES_OUT_RXPD_FW_VERSION_REV_LBN 0
5101#define MC_CMD_GET_CAPABILITIES_OUT_RXPD_FW_VERSION_REV_WIDTH 12
5102#define MC_CMD_GET_CAPABILITIES_OUT_RXPD_FW_VERSION_TYPE_LBN 12
5103#define MC_CMD_GET_CAPABILITIES_OUT_RXPD_FW_VERSION_TYPE_WIDTH 4
5104#define MC_CMD_GET_CAPABILITIES_OUT_RXPD_FW_TYPE_FIRST_PKT 0x1 /* enum */
5105#define MC_CMD_GET_CAPABILITIES_OUT_RXPD_FW_TYPE_SIENA_COMPAT 0x2 /* enum */
5106#define MC_CMD_GET_CAPABILITIES_OUT_RXPD_FW_TYPE_VSWITCH 0x3 /* enum */
5107#define MC_CMD_GET_CAPABILITIES_OUT_RXPD_FW_TYPE_SIENA_COMPAT_PM 0x4 /* enum */
5108#define MC_CMD_GET_CAPABILITIES_OUT_RXPD_FW_TYPE_LOW_LATENCY 0x5 /* enum */
5109#define MC_CMD_GET_CAPABILITIES_OUT_TXPD_FW_VERSION_OFST 10
5110#define MC_CMD_GET_CAPABILITIES_OUT_TXPD_FW_VERSION_LEN 2
5111#define MC_CMD_GET_CAPABILITIES_OUT_TXPD_FW_VERSION_REV_LBN 0
5112#define MC_CMD_GET_CAPABILITIES_OUT_TXPD_FW_VERSION_REV_WIDTH 12
5113#define MC_CMD_GET_CAPABILITIES_OUT_TXPD_FW_VERSION_TYPE_LBN 12
5114#define MC_CMD_GET_CAPABILITIES_OUT_TXPD_FW_VERSION_TYPE_WIDTH 4
5115#define MC_CMD_GET_CAPABILITIES_OUT_TXPD_FW_TYPE_FIRST_PKT 0x1 /* enum */
5116#define MC_CMD_GET_CAPABILITIES_OUT_TXPD_FW_TYPE_SIENA_COMPAT 0x2 /* enum */
5117#define MC_CMD_GET_CAPABILITIES_OUT_TXPD_FW_TYPE_VSWITCH 0x3 /* enum */
5118#define MC_CMD_GET_CAPABILITIES_OUT_TXPD_FW_TYPE_SIENA_COMPAT_PM 0x4 /* enum */
5119#define MC_CMD_GET_CAPABILITIES_OUT_TXPD_FW_TYPE_LOW_LATENCY 0x5 /* enum */
5120/* Hardware capabilities of NIC */
5121#define MC_CMD_GET_CAPABILITIES_OUT_HW_CAPABILITIES_OFST 12
5122/* Licensed capabilities */
5123#define MC_CMD_GET_CAPABILITIES_OUT_LICENSE_CAPABILITIES_OFST 16
5124
5125
5126/***********************************/
5127/* MC_CMD_V2_EXTN
5128 * Encapsulation for a v2 extended command
5129 */
5130#define MC_CMD_V2_EXTN 0x7f
5131
5132/* MC_CMD_V2_EXTN_IN msgrequest */
5133#define MC_CMD_V2_EXTN_IN_LEN 4
5134/* the extended command number */
5135#define MC_CMD_V2_EXTN_IN_EXTENDED_CMD_LBN 0
5136#define MC_CMD_V2_EXTN_IN_EXTENDED_CMD_WIDTH 15
5137#define MC_CMD_V2_EXTN_IN_UNUSED_LBN 15
5138#define MC_CMD_V2_EXTN_IN_UNUSED_WIDTH 1
5139/* the actual length of the encapsulated command (which is not in the v1
5140 * header)
5141 */
5142#define MC_CMD_V2_EXTN_IN_ACTUAL_LEN_LBN 16
5143#define MC_CMD_V2_EXTN_IN_ACTUAL_LEN_WIDTH 10
5144#define MC_CMD_V2_EXTN_IN_UNUSED2_LBN 26
5145#define MC_CMD_V2_EXTN_IN_UNUSED2_WIDTH 6
5146
5147
5148/***********************************/
5149/* MC_CMD_TCM_BUCKET_ALLOC
5150 * Allocate a pacer bucket (for qau rp or a snapper test)
5151 */
5152#define MC_CMD_TCM_BUCKET_ALLOC 0xb2
5153
5154/* MC_CMD_TCM_BUCKET_ALLOC_IN msgrequest */
5155#define MC_CMD_TCM_BUCKET_ALLOC_IN_LEN 0
5156
5157/* MC_CMD_TCM_BUCKET_ALLOC_OUT msgresponse */
5158#define MC_CMD_TCM_BUCKET_ALLOC_OUT_LEN 4
5159/* the bucket id */
5160#define MC_CMD_TCM_BUCKET_ALLOC_OUT_BUCKET_OFST 0
5161
5162
5163/***********************************/
5164/* MC_CMD_TCM_BUCKET_FREE
5165 * Free a pacer bucket
5166 */
5167#define MC_CMD_TCM_BUCKET_FREE 0xb3
5168
5169/* MC_CMD_TCM_BUCKET_FREE_IN msgrequest */
5170#define MC_CMD_TCM_BUCKET_FREE_IN_LEN 4
5171/* the bucket id */
5172#define MC_CMD_TCM_BUCKET_FREE_IN_BUCKET_OFST 0
5173
5174/* MC_CMD_TCM_BUCKET_FREE_OUT msgresponse */
5175#define MC_CMD_TCM_BUCKET_FREE_OUT_LEN 0
5176
5177
5178/***********************************/
5179/* MC_CMD_TCM_BUCKET_INIT
5180 * Initialise pacer bucket with a given rate
5181 */
5182#define MC_CMD_TCM_BUCKET_INIT 0xb4
5183
5184/* MC_CMD_TCM_BUCKET_INIT_IN msgrequest */
5185#define MC_CMD_TCM_BUCKET_INIT_IN_LEN 8
5186/* the bucket id */
5187#define MC_CMD_TCM_BUCKET_INIT_IN_BUCKET_OFST 0
5188/* the rate in mbps */
5189#define MC_CMD_TCM_BUCKET_INIT_IN_RATE_OFST 4
5190
5191/* MC_CMD_TCM_BUCKET_INIT_OUT msgresponse */
5192#define MC_CMD_TCM_BUCKET_INIT_OUT_LEN 0
5193
5194
5195/***********************************/
5196/* MC_CMD_TCM_TXQ_INIT
5197 * Initialise txq in pacer with given options or set options
5198 */
5199#define MC_CMD_TCM_TXQ_INIT 0xb5
5200
5201/* MC_CMD_TCM_TXQ_INIT_IN msgrequest */
5202#define MC_CMD_TCM_TXQ_INIT_IN_LEN 28
5203/* the txq id */
5204#define MC_CMD_TCM_TXQ_INIT_IN_QID_OFST 0
5205/* the static priority associated with the txq */
5206#define MC_CMD_TCM_TXQ_INIT_IN_LABEL_OFST 4
5207/* bitmask of the priority queues this txq is inserted into */
5208#define MC_CMD_TCM_TXQ_INIT_IN_PQ_FLAGS_OFST 8
5209/* the reaction point (RP) bucket */
5210#define MC_CMD_TCM_TXQ_INIT_IN_RP_BKT_OFST 12
5211/* an already reserved bucket (typically set to bucket associated with outer
5212 * vswitch)
5213 */
5214#define MC_CMD_TCM_TXQ_INIT_IN_MAX_BKT1_OFST 16
5215/* an already reserved bucket (typically set to bucket associated with inner
5216 * vswitch)
5217 */
5218#define MC_CMD_TCM_TXQ_INIT_IN_MAX_BKT2_OFST 20
5219/* the min bucket (typically for ETS/minimum bandwidth) */
5220#define MC_CMD_TCM_TXQ_INIT_IN_MIN_BKT_OFST 24
5221
5222/* MC_CMD_TCM_TXQ_INIT_OUT msgresponse */
5223#define MC_CMD_TCM_TXQ_INIT_OUT_LEN 0
5224
5225
5226/***********************************/
5227/* MC_CMD_LINK_PIOBUF
5228 * Link a push I/O buffer to a TxQ
5229 */
5230#define MC_CMD_LINK_PIOBUF 0x92
5231
5232/* MC_CMD_LINK_PIOBUF_IN msgrequest */
5233#define MC_CMD_LINK_PIOBUF_IN_LEN 8
5234/* Handle for allocated push I/O buffer. */
5235#define MC_CMD_LINK_PIOBUF_IN_PIOBUF_HANDLE_OFST 0
5236/* Function Local Instance (VI) number. */
5237#define MC_CMD_LINK_PIOBUF_IN_TXQ_INSTANCE_OFST 4
5238
5239/* MC_CMD_LINK_PIOBUF_OUT msgresponse */
5240#define MC_CMD_LINK_PIOBUF_OUT_LEN 0
5241
5242
5243/***********************************/
5244/* MC_CMD_UNLINK_PIOBUF
5245 * Unlink a push I/O buffer from a TxQ
5246 */
5247#define MC_CMD_UNLINK_PIOBUF 0x93
5248
5249/* MC_CMD_UNLINK_PIOBUF_IN msgrequest */
5250#define MC_CMD_UNLINK_PIOBUF_IN_LEN 4
5251/* Function Local Instance (VI) number. */
5252#define MC_CMD_UNLINK_PIOBUF_IN_TXQ_INSTANCE_OFST 0
5253
5254/* MC_CMD_UNLINK_PIOBUF_OUT msgresponse */
5255#define MC_CMD_UNLINK_PIOBUF_OUT_LEN 0
5256
5257
5258/***********************************/
5259/* MC_CMD_VSWITCH_ALLOC
5260 * allocate and initialise a v-switch.
5261 */
5262#define MC_CMD_VSWITCH_ALLOC 0x94
5263
5264/* MC_CMD_VSWITCH_ALLOC_IN msgrequest */
5265#define MC_CMD_VSWITCH_ALLOC_IN_LEN 16
5266/* The port to connect to the v-switch's upstream port. */
5267#define MC_CMD_VSWITCH_ALLOC_IN_UPSTREAM_PORT_ID_OFST 0
5268/* The type of v-switch to create. */
5269#define MC_CMD_VSWITCH_ALLOC_IN_TYPE_OFST 4
5270/* enum: VLAN */
5271#define MC_CMD_VSWITCH_ALLOC_IN_VSWITCH_TYPE_VLAN 0x1
5272/* enum: VEB */
5273#define MC_CMD_VSWITCH_ALLOC_IN_VSWITCH_TYPE_VEB 0x2
5274/* enum: VEPA */
5275#define MC_CMD_VSWITCH_ALLOC_IN_VSWITCH_TYPE_VEPA 0x3
5276/* Flags controlling v-port creation */
5277#define MC_CMD_VSWITCH_ALLOC_IN_FLAGS_OFST 8
5278#define MC_CMD_VSWITCH_ALLOC_IN_FLAG_AUTO_PORT_LBN 0
5279#define MC_CMD_VSWITCH_ALLOC_IN_FLAG_AUTO_PORT_WIDTH 1
5280/* The number of VLAN tags to support. */
5281#define MC_CMD_VSWITCH_ALLOC_IN_NUM_VLAN_TAGS_OFST 12
5282
5283/* MC_CMD_VSWITCH_ALLOC_OUT msgresponse */
5284#define MC_CMD_VSWITCH_ALLOC_OUT_LEN 0
5285
5286
5287/***********************************/
5288/* MC_CMD_VSWITCH_FREE
5289 * de-allocate a v-switch.
5290 */
5291#define MC_CMD_VSWITCH_FREE 0x95
5292
5293/* MC_CMD_VSWITCH_FREE_IN msgrequest */
5294#define MC_CMD_VSWITCH_FREE_IN_LEN 4
5295/* The port to which the v-switch is connected. */
5296#define MC_CMD_VSWITCH_FREE_IN_UPSTREAM_PORT_ID_OFST 0
5297
5298/* MC_CMD_VSWITCH_FREE_OUT msgresponse */
5299#define MC_CMD_VSWITCH_FREE_OUT_LEN 0
5300
5301
5302/***********************************/
5303/* MC_CMD_VPORT_ALLOC
5304 * allocate a v-port.
5305 */
5306#define MC_CMD_VPORT_ALLOC 0x96
5307
5308/* MC_CMD_VPORT_ALLOC_IN msgrequest */
5309#define MC_CMD_VPORT_ALLOC_IN_LEN 20
5310/* The port to which the v-switch is connected. */
5311#define MC_CMD_VPORT_ALLOC_IN_UPSTREAM_PORT_ID_OFST 0
5312/* The type of the new v-port. */
5313#define MC_CMD_VPORT_ALLOC_IN_TYPE_OFST 4
5314/* enum: VLAN (obsolete) */
5315#define MC_CMD_VPORT_ALLOC_IN_VPORT_TYPE_VLAN 0x1
5316/* enum: VEB (obsolete) */
5317#define MC_CMD_VPORT_ALLOC_IN_VPORT_TYPE_VEB 0x2
5318/* enum: VEPA (obsolete) */
5319#define MC_CMD_VPORT_ALLOC_IN_VPORT_TYPE_VEPA 0x3
5320/* enum: A normal v-port receives packets which match a specified MAC and/or
5321 * VLAN.
5322 */
5323#define MC_CMD_VPORT_ALLOC_IN_VPORT_TYPE_NORMAL 0x4
5324/* enum: An expansion v-port packets traffic which don't match any other
5325 * v-port.
5326 */
5327#define MC_CMD_VPORT_ALLOC_IN_VPORT_TYPE_EXPANSION 0x5
5328/* enum: An test v-port receives packets which match any filters installed by
5329 * its downstream components.
5330 */
5331#define MC_CMD_VPORT_ALLOC_IN_VPORT_TYPE_TEST 0x6
5332/* Flags controlling v-port creation */
5333#define MC_CMD_VPORT_ALLOC_IN_FLAGS_OFST 8
5334#define MC_CMD_VPORT_ALLOC_IN_FLAG_AUTO_PORT_LBN 0
5335#define MC_CMD_VPORT_ALLOC_IN_FLAG_AUTO_PORT_WIDTH 1
5336/* The number of VLAN tags to insert/remove. */
5337#define MC_CMD_VPORT_ALLOC_IN_NUM_VLAN_TAGS_OFST 12
5338/* The actual VLAN tags to insert/remove */
5339#define MC_CMD_VPORT_ALLOC_IN_VLAN_TAGS_OFST 16
5340#define MC_CMD_VPORT_ALLOC_IN_VLAN_TAG_0_LBN 0
5341#define MC_CMD_VPORT_ALLOC_IN_VLAN_TAG_0_WIDTH 16
5342#define MC_CMD_VPORT_ALLOC_IN_VLAN_TAG_1_LBN 16
5343#define MC_CMD_VPORT_ALLOC_IN_VLAN_TAG_1_WIDTH 16
5344
5345/* MC_CMD_VPORT_ALLOC_OUT msgresponse */
5346#define MC_CMD_VPORT_ALLOC_OUT_LEN 4
5347/* The handle of the new v-port */
5348#define MC_CMD_VPORT_ALLOC_OUT_VPORT_ID_OFST 0
5349
5350
5351/***********************************/
5352/* MC_CMD_VPORT_FREE
5353 * de-allocate a v-port.
5354 */
5355#define MC_CMD_VPORT_FREE 0x97
5356
5357/* MC_CMD_VPORT_FREE_IN msgrequest */
5358#define MC_CMD_VPORT_FREE_IN_LEN 4
5359/* The handle of the v-port */
5360#define MC_CMD_VPORT_FREE_IN_VPORT_ID_OFST 0
5361
5362/* MC_CMD_VPORT_FREE_OUT msgresponse */
5363#define MC_CMD_VPORT_FREE_OUT_LEN 0
5364
5365
5366/***********************************/
5367/* MC_CMD_VADAPTOR_ALLOC
5368 * allocate a v-adaptor.
5369 */
5370#define MC_CMD_VADAPTOR_ALLOC 0x98
5371
5372/* MC_CMD_VADAPTOR_ALLOC_IN msgrequest */
5373#define MC_CMD_VADAPTOR_ALLOC_IN_LEN 16
5374/* The port to connect to the v-adaptor's port. */
5375#define MC_CMD_VADAPTOR_ALLOC_IN_UPSTREAM_PORT_ID_OFST 0
5376/* Flags controlling v-adaptor creation */
5377#define MC_CMD_VADAPTOR_ALLOC_IN_FLAGS_OFST 8
5378#define MC_CMD_VADAPTOR_ALLOC_IN_FLAG_AUTO_VADAPTOR_LBN 0
5379#define MC_CMD_VADAPTOR_ALLOC_IN_FLAG_AUTO_VADAPTOR_WIDTH 1
5380/* The number of VLAN tags to strip on receive */
5381#define MC_CMD_VADAPTOR_ALLOC_IN_NUM_VLANS_OFST 12
5382
5383/* MC_CMD_VADAPTOR_ALLOC_OUT msgresponse */
5384#define MC_CMD_VADAPTOR_ALLOC_OUT_LEN 0
5385
5386
5387/***********************************/
5388/* MC_CMD_VADAPTOR_FREE
5389 * de-allocate a v-adaptor.
5390 */
5391#define MC_CMD_VADAPTOR_FREE 0x99
5392
5393/* MC_CMD_VADAPTOR_FREE_IN msgrequest */
5394#define MC_CMD_VADAPTOR_FREE_IN_LEN 4
5395/* The port to which the v-adaptor is connected. */
5396#define MC_CMD_VADAPTOR_FREE_IN_UPSTREAM_PORT_ID_OFST 0
5397
5398/* MC_CMD_VADAPTOR_FREE_OUT msgresponse */
5399#define MC_CMD_VADAPTOR_FREE_OUT_LEN 0
5400
5401
5402/***********************************/
5403/* MC_CMD_EVB_PORT_ASSIGN
5404 * assign a port to a PCI function.
5405 */
5406#define MC_CMD_EVB_PORT_ASSIGN 0x9a
5407
5408/* MC_CMD_EVB_PORT_ASSIGN_IN msgrequest */
5409#define MC_CMD_EVB_PORT_ASSIGN_IN_LEN 8
5410/* The port to assign. */
5411#define MC_CMD_EVB_PORT_ASSIGN_IN_PORT_ID_OFST 0
5412/* The target function to modify. */
5413#define MC_CMD_EVB_PORT_ASSIGN_IN_FUNCTION_OFST 4
5414#define MC_CMD_EVB_PORT_ASSIGN_IN_PF_LBN 0
5415#define MC_CMD_EVB_PORT_ASSIGN_IN_PF_WIDTH 16
5416#define MC_CMD_EVB_PORT_ASSIGN_IN_VF_LBN 16
5417#define MC_CMD_EVB_PORT_ASSIGN_IN_VF_WIDTH 16
5418
5419/* MC_CMD_EVB_PORT_ASSIGN_OUT msgresponse */
5420#define MC_CMD_EVB_PORT_ASSIGN_OUT_LEN 0
5421
5422
5423/***********************************/
5424/* MC_CMD_RDWR_A64_REGIONS
5425 * Assign the 64 bit region addresses.
5426 */
5427#define MC_CMD_RDWR_A64_REGIONS 0x9b
5428
5429/* MC_CMD_RDWR_A64_REGIONS_IN msgrequest */
5430#define MC_CMD_RDWR_A64_REGIONS_IN_LEN 17
5431#define MC_CMD_RDWR_A64_REGIONS_IN_REGION0_OFST 0
5432#define MC_CMD_RDWR_A64_REGIONS_IN_REGION1_OFST 4
5433#define MC_CMD_RDWR_A64_REGIONS_IN_REGION2_OFST 8
5434#define MC_CMD_RDWR_A64_REGIONS_IN_REGION3_OFST 12
5435/* Write enable bits 0-3, set to write, clear to read. */
5436#define MC_CMD_RDWR_A64_REGIONS_IN_WRITE_MASK_LBN 128
5437#define MC_CMD_RDWR_A64_REGIONS_IN_WRITE_MASK_WIDTH 4
5438#define MC_CMD_RDWR_A64_REGIONS_IN_WRITE_MASK_BYTE_OFST 16
5439#define MC_CMD_RDWR_A64_REGIONS_IN_WRITE_MASK_BYTE_LEN 1
5440
5441/* MC_CMD_RDWR_A64_REGIONS_OUT msgresponse: This data always included
5442 * regardless of state of write bits in the request.
5443 */
5444#define MC_CMD_RDWR_A64_REGIONS_OUT_LEN 16
5445#define MC_CMD_RDWR_A64_REGIONS_OUT_REGION0_OFST 0
5446#define MC_CMD_RDWR_A64_REGIONS_OUT_REGION1_OFST 4
5447#define MC_CMD_RDWR_A64_REGIONS_OUT_REGION2_OFST 8
5448#define MC_CMD_RDWR_A64_REGIONS_OUT_REGION3_OFST 12
5449
5450
5451/***********************************/
5452/* MC_CMD_ONLOAD_STACK_ALLOC
5453 * Allocate an Onload stack ID.
5454 */
5455#define MC_CMD_ONLOAD_STACK_ALLOC 0x9c
5456
5457/* MC_CMD_ONLOAD_STACK_ALLOC_IN msgrequest */
5458#define MC_CMD_ONLOAD_STACK_ALLOC_IN_LEN 4
5459/* The handle of the owning upstream port */
5460#define MC_CMD_ONLOAD_STACK_ALLOC_IN_UPSTREAM_PORT_ID_OFST 0
5461
5462/* MC_CMD_ONLOAD_STACK_ALLOC_OUT msgresponse */
5463#define MC_CMD_ONLOAD_STACK_ALLOC_OUT_LEN 4
5464/* The handle of the new Onload stack */
5465#define MC_CMD_ONLOAD_STACK_ALLOC_OUT_ONLOAD_STACK_ID_OFST 0
5466
5467
5468/***********************************/
5469/* MC_CMD_ONLOAD_STACK_FREE
5470 * Free an Onload stack ID.
5471 */
5472#define MC_CMD_ONLOAD_STACK_FREE 0x9d
5473
5474/* MC_CMD_ONLOAD_STACK_FREE_IN msgrequest */
5475#define MC_CMD_ONLOAD_STACK_FREE_IN_LEN 4
5476/* The handle of the Onload stack */
5477#define MC_CMD_ONLOAD_STACK_FREE_IN_ONLOAD_STACK_ID_OFST 0
5478
5479/* MC_CMD_ONLOAD_STACK_FREE_OUT msgresponse */
5480#define MC_CMD_ONLOAD_STACK_FREE_OUT_LEN 0
5481
5482
5483/***********************************/
5484/* MC_CMD_RSS_CONTEXT_ALLOC
5485 * Allocate an RSS context.
5486 */
5487#define MC_CMD_RSS_CONTEXT_ALLOC 0x9e
5488
5489/* MC_CMD_RSS_CONTEXT_ALLOC_IN msgrequest */
5490#define MC_CMD_RSS_CONTEXT_ALLOC_IN_LEN 12
5491/* The handle of the owning upstream port */
5492#define MC_CMD_RSS_CONTEXT_ALLOC_IN_UPSTREAM_PORT_ID_OFST 0
5493/* The type of context to allocate */
5494#define MC_CMD_RSS_CONTEXT_ALLOC_IN_TYPE_OFST 4
5495/* enum: Allocate a context for exclusive use. The key and indirection table
5496 * must be explicitly configured.
5497 */
5498#define MC_CMD_RSS_CONTEXT_ALLOC_IN_TYPE_EXCLUSIVE 0x0
5499/* enum: Allocate a context for shared use; this will spread across a range of
5500 * queues, but the key and indirection table are pre-configured and may not be
5501 * changed. For this mode, NUM_QUEUES must 2, 4, 8, 16, 32 or 64.
5502 */
5503#define MC_CMD_RSS_CONTEXT_ALLOC_IN_TYPE_SHARED 0x1
5504/* Number of queues spanned by this context, in the range 1-64; valid offsets
5505 * in the indirection table will be in the range 0 to NUM_QUEUES-1.
5506 */
5507#define MC_CMD_RSS_CONTEXT_ALLOC_IN_NUM_QUEUES_OFST 8
5508
5509/* MC_CMD_RSS_CONTEXT_ALLOC_OUT msgresponse */
5510#define MC_CMD_RSS_CONTEXT_ALLOC_OUT_LEN 4
5511/* The handle of the new RSS context */
5512#define MC_CMD_RSS_CONTEXT_ALLOC_OUT_RSS_CONTEXT_ID_OFST 0
5513
5514
5515/***********************************/
5516/* MC_CMD_RSS_CONTEXT_FREE
5517 * Free an RSS context.
5518 */
5519#define MC_CMD_RSS_CONTEXT_FREE 0x9f
5520
5521/* MC_CMD_RSS_CONTEXT_FREE_IN msgrequest */
5522#define MC_CMD_RSS_CONTEXT_FREE_IN_LEN 4
5523/* The handle of the RSS context */
5524#define MC_CMD_RSS_CONTEXT_FREE_IN_RSS_CONTEXT_ID_OFST 0
5525
5526/* MC_CMD_RSS_CONTEXT_FREE_OUT msgresponse */
5527#define MC_CMD_RSS_CONTEXT_FREE_OUT_LEN 0
5528
5529
5530/***********************************/
5531/* MC_CMD_RSS_CONTEXT_SET_KEY
5532 * Set the Toeplitz hash key for an RSS context.
5533 */
5534#define MC_CMD_RSS_CONTEXT_SET_KEY 0xa0
5535
5536/* MC_CMD_RSS_CONTEXT_SET_KEY_IN msgrequest */
5537#define MC_CMD_RSS_CONTEXT_SET_KEY_IN_LEN 44
5538/* The handle of the RSS context */
5539#define MC_CMD_RSS_CONTEXT_SET_KEY_IN_RSS_CONTEXT_ID_OFST 0
5540/* The 40-byte Toeplitz hash key (TBD endianness issues?) */
5541#define MC_CMD_RSS_CONTEXT_SET_KEY_IN_TOEPLITZ_KEY_OFST 4
5542#define MC_CMD_RSS_CONTEXT_SET_KEY_IN_TOEPLITZ_KEY_LEN 40
5543
5544/* MC_CMD_RSS_CONTEXT_SET_KEY_OUT msgresponse */
5545#define MC_CMD_RSS_CONTEXT_SET_KEY_OUT_LEN 0
5546
5547
5548/***********************************/
5549/* MC_CMD_RSS_CONTEXT_GET_KEY
5550 * Get the Toeplitz hash key for an RSS context.
5551 */
5552#define MC_CMD_RSS_CONTEXT_GET_KEY 0xa1
5553
5554/* MC_CMD_RSS_CONTEXT_GET_KEY_IN msgrequest */
5555#define MC_CMD_RSS_CONTEXT_GET_KEY_IN_LEN 4
5556/* The handle of the RSS context */
5557#define MC_CMD_RSS_CONTEXT_GET_KEY_IN_RSS_CONTEXT_ID_OFST 0
5558
5559/* MC_CMD_RSS_CONTEXT_GET_KEY_OUT msgresponse */
5560#define MC_CMD_RSS_CONTEXT_GET_KEY_OUT_LEN 44
5561/* The 40-byte Toeplitz hash key (TBD endianness issues?) */
5562#define MC_CMD_RSS_CONTEXT_GET_KEY_OUT_TOEPLITZ_KEY_OFST 4
5563#define MC_CMD_RSS_CONTEXT_GET_KEY_OUT_TOEPLITZ_KEY_LEN 40
5564
5565
5566/***********************************/
5567/* MC_CMD_RSS_CONTEXT_SET_TABLE
5568 * Set the indirection table for an RSS context.
5569 */
5570#define MC_CMD_RSS_CONTEXT_SET_TABLE 0xa2
5571
5572/* MC_CMD_RSS_CONTEXT_SET_TABLE_IN msgrequest */
5573#define MC_CMD_RSS_CONTEXT_SET_TABLE_IN_LEN 132
5574/* The handle of the RSS context */
5575#define MC_CMD_RSS_CONTEXT_SET_TABLE_IN_RSS_CONTEXT_ID_OFST 0
5576/* The 128-byte indirection table (1 byte per entry) */
5577#define MC_CMD_RSS_CONTEXT_SET_TABLE_IN_INDIRECTION_TABLE_OFST 4
5578#define MC_CMD_RSS_CONTEXT_SET_TABLE_IN_INDIRECTION_TABLE_LEN 128
5579
5580/* MC_CMD_RSS_CONTEXT_SET_TABLE_OUT msgresponse */
5581#define MC_CMD_RSS_CONTEXT_SET_TABLE_OUT_LEN 0
5582
5583
5584/***********************************/
5585/* MC_CMD_RSS_CONTEXT_GET_TABLE
5586 * Get the indirection table for an RSS context.
5587 */
5588#define MC_CMD_RSS_CONTEXT_GET_TABLE 0xa3
5589
5590/* MC_CMD_RSS_CONTEXT_GET_TABLE_IN msgrequest */
5591#define MC_CMD_RSS_CONTEXT_GET_TABLE_IN_LEN 4
5592/* The handle of the RSS context */
5593#define MC_CMD_RSS_CONTEXT_GET_TABLE_IN_RSS_CONTEXT_ID_OFST 0
5594
5595/* MC_CMD_RSS_CONTEXT_GET_TABLE_OUT msgresponse */
5596#define MC_CMD_RSS_CONTEXT_GET_TABLE_OUT_LEN 132
5597/* The 128-byte indirection table (1 byte per entry) */
5598#define MC_CMD_RSS_CONTEXT_GET_TABLE_OUT_INDIRECTION_TABLE_OFST 4
5599#define MC_CMD_RSS_CONTEXT_GET_TABLE_OUT_INDIRECTION_TABLE_LEN 128
5600
5601
5602/***********************************/
5603/* MC_CMD_RSS_CONTEXT_SET_FLAGS
5604 * Set various control flags for an RSS context.
5605 */
5606#define MC_CMD_RSS_CONTEXT_SET_FLAGS 0xe1
5607
5608/* MC_CMD_RSS_CONTEXT_SET_FLAGS_IN msgrequest */
5609#define MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_LEN 8
5610/* The handle of the RSS context */
5611#define MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_RSS_CONTEXT_ID_OFST 0
5612/* Hash control flags */
5613#define MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_FLAGS_OFST 4
5614#define MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_TOEPLITZ_IPV4_EN_LBN 0
5615#define MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_TOEPLITZ_IPV4_EN_WIDTH 1
5616#define MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_TOEPLITZ_TCPV4_EN_LBN 1
5617#define MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_TOEPLITZ_TCPV4_EN_WIDTH 1
5618#define MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_TOEPLITZ_IPV6_EN_LBN 2
5619#define MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_TOEPLITZ_IPV6_EN_WIDTH 1
5620#define MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_TOEPLITZ_TCPV6_EN_LBN 3
5621#define MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_TOEPLITZ_TCPV6_EN_WIDTH 1
5622
5623/* MC_CMD_RSS_CONTEXT_SET_FLAGS_OUT msgresponse */
5624#define MC_CMD_RSS_CONTEXT_SET_FLAGS_OUT_LEN 0
5625
5626
5627/***********************************/
5628/* MC_CMD_RSS_CONTEXT_GET_FLAGS
5629 * Get various control flags for an RSS context.
5630 */
5631#define MC_CMD_RSS_CONTEXT_GET_FLAGS 0xe2
5632
5633/* MC_CMD_RSS_CONTEXT_GET_FLAGS_IN msgrequest */
5634#define MC_CMD_RSS_CONTEXT_GET_FLAGS_IN_LEN 4
5635/* The handle of the RSS context */
5636#define MC_CMD_RSS_CONTEXT_GET_FLAGS_IN_RSS_CONTEXT_ID_OFST 0
5637
5638/* MC_CMD_RSS_CONTEXT_GET_FLAGS_OUT msgresponse */
5639#define MC_CMD_RSS_CONTEXT_GET_FLAGS_OUT_LEN 8
5640/* Hash control flags */
5641#define MC_CMD_RSS_CONTEXT_GET_FLAGS_OUT_FLAGS_OFST 4
5642#define MC_CMD_RSS_CONTEXT_GET_FLAGS_OUT_TOEPLITZ_IPV4_EN_LBN 0
5643#define MC_CMD_RSS_CONTEXT_GET_FLAGS_OUT_TOEPLITZ_IPV4_EN_WIDTH 1
5644#define MC_CMD_RSS_CONTEXT_GET_FLAGS_OUT_TOEPLITZ_TCPV4_EN_LBN 1
5645#define MC_CMD_RSS_CONTEXT_GET_FLAGS_OUT_TOEPLITZ_TCPV4_EN_WIDTH 1
5646#define MC_CMD_RSS_CONTEXT_GET_FLAGS_OUT_TOEPLITZ_IPV6_EN_LBN 2
5647#define MC_CMD_RSS_CONTEXT_GET_FLAGS_OUT_TOEPLITZ_IPV6_EN_WIDTH 1
5648#define MC_CMD_RSS_CONTEXT_GET_FLAGS_OUT_TOEPLITZ_TCPV6_EN_LBN 3
5649#define MC_CMD_RSS_CONTEXT_GET_FLAGS_OUT_TOEPLITZ_TCPV6_EN_WIDTH 1
5650
5651
5652/***********************************/
5653/* MC_CMD_DOT1P_MAPPING_ALLOC
5654 * Allocate a .1p mapping.
5655 */
5656#define MC_CMD_DOT1P_MAPPING_ALLOC 0xa4
5657
5658/* MC_CMD_DOT1P_MAPPING_ALLOC_IN msgrequest */
5659#define MC_CMD_DOT1P_MAPPING_ALLOC_IN_LEN 8
5660/* The handle of the owning upstream port */
5661#define MC_CMD_DOT1P_MAPPING_ALLOC_IN_UPSTREAM_PORT_ID_OFST 0
5662/* Number of queues spanned by this mapping, in the range 1-64; valid fixed
5663 * offsets in the mapping table will be in the range 0 to NUM_QUEUES-1, and
5664 * referenced RSS contexts must span no more than this number.
5665 */
5666#define MC_CMD_DOT1P_MAPPING_ALLOC_IN_NUM_QUEUES_OFST 4
5667
5668/* MC_CMD_DOT1P_MAPPING_ALLOC_OUT msgresponse */
5669#define MC_CMD_DOT1P_MAPPING_ALLOC_OUT_LEN 4
5670/* The handle of the new .1p mapping */
5671#define MC_CMD_DOT1P_MAPPING_ALLOC_OUT_DOT1P_MAPPING_ID_OFST 0
5672
5673
5674/***********************************/
5675/* MC_CMD_DOT1P_MAPPING_FREE
5676 * Free a .1p mapping.
5677 */
5678#define MC_CMD_DOT1P_MAPPING_FREE 0xa5
5679
5680/* MC_CMD_DOT1P_MAPPING_FREE_IN msgrequest */
5681#define MC_CMD_DOT1P_MAPPING_FREE_IN_LEN 4
5682/* The handle of the .1p mapping */
5683#define MC_CMD_DOT1P_MAPPING_FREE_IN_DOT1P_MAPPING_ID_OFST 0
5684
5685/* MC_CMD_DOT1P_MAPPING_FREE_OUT msgresponse */
5686#define MC_CMD_DOT1P_MAPPING_FREE_OUT_LEN 0
5687
5688
5689/***********************************/
5690/* MC_CMD_DOT1P_MAPPING_SET_TABLE
5691 * Set the mapping table for a .1p mapping.
5692 */
5693#define MC_CMD_DOT1P_MAPPING_SET_TABLE 0xa6
5694
5695/* MC_CMD_DOT1P_MAPPING_SET_TABLE_IN msgrequest */
5696#define MC_CMD_DOT1P_MAPPING_SET_TABLE_IN_LEN 36
5697/* The handle of the .1p mapping */
5698#define MC_CMD_DOT1P_MAPPING_SET_TABLE_IN_DOT1P_MAPPING_ID_OFST 0
5699/* Per-priority mappings (1 32-bit word per entry - an offset or RSS context
5700 * handle)
5701 */
5702#define MC_CMD_DOT1P_MAPPING_SET_TABLE_IN_MAPPING_TABLE_OFST 4
5703#define MC_CMD_DOT1P_MAPPING_SET_TABLE_IN_MAPPING_TABLE_LEN 32
5704
5705/* MC_CMD_DOT1P_MAPPING_SET_TABLE_OUT msgresponse */
5706#define MC_CMD_DOT1P_MAPPING_SET_TABLE_OUT_LEN 0
5707
5708
5709/***********************************/
5710/* MC_CMD_DOT1P_MAPPING_GET_TABLE
5711 * Get the mapping table for a .1p mapping.
5712 */
5713#define MC_CMD_DOT1P_MAPPING_GET_TABLE 0xa7
5714
5715/* MC_CMD_DOT1P_MAPPING_GET_TABLE_IN msgrequest */
5716#define MC_CMD_DOT1P_MAPPING_GET_TABLE_IN_LEN 4
5717/* The handle of the .1p mapping */
5718#define MC_CMD_DOT1P_MAPPING_GET_TABLE_IN_DOT1P_MAPPING_ID_OFST 0
5719
5720/* MC_CMD_DOT1P_MAPPING_GET_TABLE_OUT msgresponse */
5721#define MC_CMD_DOT1P_MAPPING_GET_TABLE_OUT_LEN 36
5722/* Per-priority mappings (1 32-bit word per entry - an offset or RSS context
5723 * handle)
5724 */
5725#define MC_CMD_DOT1P_MAPPING_GET_TABLE_OUT_MAPPING_TABLE_OFST 4
5726#define MC_CMD_DOT1P_MAPPING_GET_TABLE_OUT_MAPPING_TABLE_LEN 32
5727
5728
5729/***********************************/
5730/* MC_CMD_GET_VECTOR_CFG
5731 * Get Interrupt Vector config for this PF.
5732 */
5733#define MC_CMD_GET_VECTOR_CFG 0xbf
5734
5735/* MC_CMD_GET_VECTOR_CFG_IN msgrequest */
5736#define MC_CMD_GET_VECTOR_CFG_IN_LEN 0
5737
5738/* MC_CMD_GET_VECTOR_CFG_OUT msgresponse */
5739#define MC_CMD_GET_VECTOR_CFG_OUT_LEN 12
5740/* Base absolute interrupt vector number. */
5741#define MC_CMD_GET_VECTOR_CFG_OUT_VEC_BASE_OFST 0
5742/* Number of interrupt vectors allocate to this PF. */
5743#define MC_CMD_GET_VECTOR_CFG_OUT_VECS_PER_PF_OFST 4
5744/* Number of interrupt vectors to allocate per VF. */
5745#define MC_CMD_GET_VECTOR_CFG_OUT_VECS_PER_VF_OFST 8
5746
5747
5748/***********************************/
5749/* MC_CMD_SET_VECTOR_CFG
5750 * Set Interrupt Vector config for this PF.
5751 */
5752#define MC_CMD_SET_VECTOR_CFG 0xc0
5753
5754/* MC_CMD_SET_VECTOR_CFG_IN msgrequest */
5755#define MC_CMD_SET_VECTOR_CFG_IN_LEN 12
5756/* Base absolute interrupt vector number, or MC_CMD_RESOURCE_INSTANCE_ANY to
5757 * let the system find a suitable base.
5758 */
5759#define MC_CMD_SET_VECTOR_CFG_IN_VEC_BASE_OFST 0
5760/* Number of interrupt vectors allocate to this PF. */
5761#define MC_CMD_SET_VECTOR_CFG_IN_VECS_PER_PF_OFST 4
5762/* Number of interrupt vectors to allocate per VF. */
5763#define MC_CMD_SET_VECTOR_CFG_IN_VECS_PER_VF_OFST 8
5764
5765/* MC_CMD_SET_VECTOR_CFG_OUT msgresponse */
5766#define MC_CMD_SET_VECTOR_CFG_OUT_LEN 0
5767
5768
5769/***********************************/
5770/* MC_CMD_RMON_RX_CLASS_STATS
5771 * Retrieve rmon rx class statistics
5772 */
5773#define MC_CMD_RMON_RX_CLASS_STATS 0xc3
5774
5775/* MC_CMD_RMON_RX_CLASS_STATS_IN msgrequest */
5776#define MC_CMD_RMON_RX_CLASS_STATS_IN_LEN 4
5777/* flags */
5778#define MC_CMD_RMON_RX_CLASS_STATS_IN_FLAGS_OFST 0
5779#define MC_CMD_RMON_RX_CLASS_STATS_IN_CLASS_LBN 0
5780#define MC_CMD_RMON_RX_CLASS_STATS_IN_CLASS_WIDTH 8
5781#define MC_CMD_RMON_RX_CLASS_STATS_IN_RST_LBN 8
5782#define MC_CMD_RMON_RX_CLASS_STATS_IN_RST_WIDTH 1
5783
5784/* MC_CMD_RMON_RX_CLASS_STATS_OUT msgresponse */
5785#define MC_CMD_RMON_RX_CLASS_STATS_OUT_LENMIN 4
5786#define MC_CMD_RMON_RX_CLASS_STATS_OUT_LENMAX 252
5787#define MC_CMD_RMON_RX_CLASS_STATS_OUT_LEN(num) (0+4*(num))
5788/* Array of stats */
5789#define MC_CMD_RMON_RX_CLASS_STATS_OUT_BUFFER_OFST 0
5790#define MC_CMD_RMON_RX_CLASS_STATS_OUT_BUFFER_LEN 4
5791#define MC_CMD_RMON_RX_CLASS_STATS_OUT_BUFFER_MINNUM 1
5792#define MC_CMD_RMON_RX_CLASS_STATS_OUT_BUFFER_MAXNUM 63
5793
5794
5795/***********************************/
5796/* MC_CMD_RMON_TX_CLASS_STATS
5797 * Retrieve rmon tx class statistics
5798 */
5799#define MC_CMD_RMON_TX_CLASS_STATS 0xc4
5800
5801/* MC_CMD_RMON_TX_CLASS_STATS_IN msgrequest */
5802#define MC_CMD_RMON_TX_CLASS_STATS_IN_LEN 4
5803/* flags */
5804#define MC_CMD_RMON_TX_CLASS_STATS_IN_FLAGS_OFST 0
5805#define MC_CMD_RMON_TX_CLASS_STATS_IN_CLASS_LBN 0
5806#define MC_CMD_RMON_TX_CLASS_STATS_IN_CLASS_WIDTH 8
5807#define MC_CMD_RMON_TX_CLASS_STATS_IN_RST_LBN 8
5808#define MC_CMD_RMON_TX_CLASS_STATS_IN_RST_WIDTH 1
5809
5810/* MC_CMD_RMON_TX_CLASS_STATS_OUT msgresponse */
5811#define MC_CMD_RMON_TX_CLASS_STATS_OUT_LENMIN 4
5812#define MC_CMD_RMON_TX_CLASS_STATS_OUT_LENMAX 252
5813#define MC_CMD_RMON_TX_CLASS_STATS_OUT_LEN(num) (0+4*(num))
5814/* Array of stats */
5815#define MC_CMD_RMON_TX_CLASS_STATS_OUT_BUFFER_OFST 0
5816#define MC_CMD_RMON_TX_CLASS_STATS_OUT_BUFFER_LEN 4
5817#define MC_CMD_RMON_TX_CLASS_STATS_OUT_BUFFER_MINNUM 1
5818#define MC_CMD_RMON_TX_CLASS_STATS_OUT_BUFFER_MAXNUM 63
5819
5820
5821/***********************************/
5822/* MC_CMD_RMON_RX_SUPER_CLASS_STATS
5823 * Retrieve rmon rx super_class statistics
5824 */
5825#define MC_CMD_RMON_RX_SUPER_CLASS_STATS 0xc5
5826
5827/* MC_CMD_RMON_RX_SUPER_CLASS_STATS_IN msgrequest */
5828#define MC_CMD_RMON_RX_SUPER_CLASS_STATS_IN_LEN 4
5829/* flags */
5830#define MC_CMD_RMON_RX_SUPER_CLASS_STATS_IN_FLAGS_OFST 0
5831#define MC_CMD_RMON_RX_SUPER_CLASS_STATS_IN_SUPER_CLASS_LBN 0
5832#define MC_CMD_RMON_RX_SUPER_CLASS_STATS_IN_SUPER_CLASS_WIDTH 4
5833#define MC_CMD_RMON_RX_SUPER_CLASS_STATS_IN_RST_LBN 4
5834#define MC_CMD_RMON_RX_SUPER_CLASS_STATS_IN_RST_WIDTH 1
5835
5836/* MC_CMD_RMON_RX_SUPER_CLASS_STATS_OUT msgresponse */
5837#define MC_CMD_RMON_RX_SUPER_CLASS_STATS_OUT_LENMIN 4
5838#define MC_CMD_RMON_RX_SUPER_CLASS_STATS_OUT_LENMAX 252
5839#define MC_CMD_RMON_RX_SUPER_CLASS_STATS_OUT_LEN(num) (0+4*(num))
5840/* Array of stats */
5841#define MC_CMD_RMON_RX_SUPER_CLASS_STATS_OUT_BUFFER_OFST 0
5842#define MC_CMD_RMON_RX_SUPER_CLASS_STATS_OUT_BUFFER_LEN 4
5843#define MC_CMD_RMON_RX_SUPER_CLASS_STATS_OUT_BUFFER_MINNUM 1
5844#define MC_CMD_RMON_RX_SUPER_CLASS_STATS_OUT_BUFFER_MAXNUM 63
5845
5846
5847/***********************************/
5848/* MC_CMD_RMON_TX_SUPER_CLASS_STATS
5849 * Retrieve rmon tx super_class statistics
5850 */
5851#define MC_CMD_RMON_TX_SUPER_CLASS_STATS 0xc6
5852
5853/* MC_CMD_RMON_TX_SUPER_CLASS_STATS_IN msgrequest */
5854#define MC_CMD_RMON_TX_SUPER_CLASS_STATS_IN_LEN 4
5855/* flags */
5856#define MC_CMD_RMON_TX_SUPER_CLASS_STATS_IN_FLAGS_OFST 0
5857#define MC_CMD_RMON_TX_SUPER_CLASS_STATS_IN_SUPER_CLASS_LBN 0
5858#define MC_CMD_RMON_TX_SUPER_CLASS_STATS_IN_SUPER_CLASS_WIDTH 4
5859#define MC_CMD_RMON_TX_SUPER_CLASS_STATS_IN_RST_LBN 4
5860#define MC_CMD_RMON_TX_SUPER_CLASS_STATS_IN_RST_WIDTH 1
5861
5862/* MC_CMD_RMON_TX_SUPER_CLASS_STATS_OUT msgresponse */
5863#define MC_CMD_RMON_TX_SUPER_CLASS_STATS_OUT_LENMIN 4
5864#define MC_CMD_RMON_TX_SUPER_CLASS_STATS_OUT_LENMAX 252
5865#define MC_CMD_RMON_TX_SUPER_CLASS_STATS_OUT_LEN(num) (0+4*(num))
5866/* Array of stats */
5867#define MC_CMD_RMON_TX_SUPER_CLASS_STATS_OUT_BUFFER_OFST 0
5868#define MC_CMD_RMON_TX_SUPER_CLASS_STATS_OUT_BUFFER_LEN 4
5869#define MC_CMD_RMON_TX_SUPER_CLASS_STATS_OUT_BUFFER_MINNUM 1
5870#define MC_CMD_RMON_TX_SUPER_CLASS_STATS_OUT_BUFFER_MAXNUM 63
5871
5872
5873/***********************************/
5874/* MC_CMD_RMON_RX_ADD_QID_TO_CLASS
5875 * Add qid to class for statistics collection
5876 */
5877#define MC_CMD_RMON_RX_ADD_QID_TO_CLASS 0xc7
5878
5879/* MC_CMD_RMON_RX_ADD_QID_TO_CLASS_IN msgrequest */
5880#define MC_CMD_RMON_RX_ADD_QID_TO_CLASS_IN_LEN 12
5881/* class */
5882#define MC_CMD_RMON_RX_ADD_QID_TO_CLASS_IN_CLASS_OFST 0
5883/* qid */
5884#define MC_CMD_RMON_RX_ADD_QID_TO_CLASS_IN_QID_OFST 4
5885/* flags */
5886#define MC_CMD_RMON_RX_ADD_QID_TO_CLASS_IN_FLAGS_OFST 8
5887#define MC_CMD_RMON_RX_ADD_QID_TO_CLASS_IN_SUPER_CLASS_LBN 0
5888#define MC_CMD_RMON_RX_ADD_QID_TO_CLASS_IN_SUPER_CLASS_WIDTH 4
5889#define MC_CMD_RMON_RX_ADD_QID_TO_CLASS_IN_PE_DELTA_LBN 4
5890#define MC_CMD_RMON_RX_ADD_QID_TO_CLASS_IN_PE_DELTA_WIDTH 4
5891#define MC_CMD_RMON_RX_ADD_QID_TO_CLASS_IN_MTU_LBN 8
5892#define MC_CMD_RMON_RX_ADD_QID_TO_CLASS_IN_MTU_WIDTH 14
5893
5894/* MC_CMD_RMON_RX_ADD_QID_TO_CLASS_OUT msgresponse */
5895#define MC_CMD_RMON_RX_ADD_QID_TO_CLASS_OUT_LEN 0
5896
5897
5898/***********************************/
5899/* MC_CMD_RMON_TX_ADD_QID_TO_CLASS
5900 * Add qid to class for statistics collection
5901 */
5902#define MC_CMD_RMON_TX_ADD_QID_TO_CLASS 0xc8
5903
5904/* MC_CMD_RMON_TX_ADD_QID_TO_CLASS_IN msgrequest */
5905#define MC_CMD_RMON_TX_ADD_QID_TO_CLASS_IN_LEN 12
5906/* class */
5907#define MC_CMD_RMON_TX_ADD_QID_TO_CLASS_IN_CLASS_OFST 0
5908/* qid */
5909#define MC_CMD_RMON_TX_ADD_QID_TO_CLASS_IN_QID_OFST 4
5910/* flags */
5911#define MC_CMD_RMON_TX_ADD_QID_TO_CLASS_IN_FLAGS_OFST 8
5912#define MC_CMD_RMON_TX_ADD_QID_TO_CLASS_IN_SUPER_CLASS_LBN 0
5913#define MC_CMD_RMON_TX_ADD_QID_TO_CLASS_IN_SUPER_CLASS_WIDTH 4
5914#define MC_CMD_RMON_TX_ADD_QID_TO_CLASS_IN_PE_DELTA_LBN 4
5915#define MC_CMD_RMON_TX_ADD_QID_TO_CLASS_IN_PE_DELTA_WIDTH 4
5916#define MC_CMD_RMON_TX_ADD_QID_TO_CLASS_IN_MTU_LBN 8
5917#define MC_CMD_RMON_TX_ADD_QID_TO_CLASS_IN_MTU_WIDTH 14
5918
5919/* MC_CMD_RMON_TX_ADD_QID_TO_CLASS_OUT msgresponse */
5920#define MC_CMD_RMON_TX_ADD_QID_TO_CLASS_OUT_LEN 0
5921
5922
5923/***********************************/
5924/* MC_CMD_RMON_MC_ADD_QID_TO_CLASS
5925 * Add qid to class for statistics collection
5926 */
5927#define MC_CMD_RMON_MC_ADD_QID_TO_CLASS 0xc9
5928
5929/* MC_CMD_RMON_MC_ADD_QID_TO_CLASS_IN msgrequest */
5930#define MC_CMD_RMON_MC_ADD_QID_TO_CLASS_IN_LEN 12
5931/* class */
5932#define MC_CMD_RMON_MC_ADD_QID_TO_CLASS_IN_CLASS_OFST 0
5933/* qid */
5934#define MC_CMD_RMON_MC_ADD_QID_TO_CLASS_IN_QID_OFST 4
5935/* flags */
5936#define MC_CMD_RMON_MC_ADD_QID_TO_CLASS_IN_FLAGS_OFST 8
5937#define MC_CMD_RMON_MC_ADD_QID_TO_CLASS_IN_SUPER_CLASS_LBN 0
5938#define MC_CMD_RMON_MC_ADD_QID_TO_CLASS_IN_SUPER_CLASS_WIDTH 4
5939#define MC_CMD_RMON_MC_ADD_QID_TO_CLASS_IN_PE_DELTA_LBN 4
5940#define MC_CMD_RMON_MC_ADD_QID_TO_CLASS_IN_PE_DELTA_WIDTH 4
5941#define MC_CMD_RMON_MC_ADD_QID_TO_CLASS_IN_MTU_LBN 8
5942#define MC_CMD_RMON_MC_ADD_QID_TO_CLASS_IN_MTU_WIDTH 14
5943
5944/* MC_CMD_RMON_MC_ADD_QID_TO_CLASS_OUT msgresponse */
5945#define MC_CMD_RMON_MC_ADD_QID_TO_CLASS_OUT_LEN 0
5946
5947
5948/***********************************/
5949/* MC_CMD_RMON_ALLOC_CLASS
5950 * Allocate an rmon class
5951 */
5952#define MC_CMD_RMON_ALLOC_CLASS 0xca
5953
5954/* MC_CMD_RMON_ALLOC_CLASS_IN msgrequest */
5955#define MC_CMD_RMON_ALLOC_CLASS_IN_LEN 0
5956
5957/* MC_CMD_RMON_ALLOC_CLASS_OUT msgresponse */
5958#define MC_CMD_RMON_ALLOC_CLASS_OUT_LEN 4
5959/* class */
5960#define MC_CMD_RMON_ALLOC_CLASS_OUT_CLASS_OFST 0
5961
5962
5963/***********************************/
5964/* MC_CMD_RMON_DEALLOC_CLASS
5965 * Deallocate an rmon class
5966 */
5967#define MC_CMD_RMON_DEALLOC_CLASS 0xcb
5968
5969/* MC_CMD_RMON_DEALLOC_CLASS_IN msgrequest */
5970#define MC_CMD_RMON_DEALLOC_CLASS_IN_LEN 4
5971/* class */
5972#define MC_CMD_RMON_DEALLOC_CLASS_IN_CLASS_OFST 0
5973
5974/* MC_CMD_RMON_DEALLOC_CLASS_OUT msgresponse */
5975#define MC_CMD_RMON_DEALLOC_CLASS_OUT_LEN 0
5976
5977
5978/***********************************/
5979/* MC_CMD_RMON_ALLOC_SUPER_CLASS
5980 * Allocate an rmon super_class
5981 */
5982#define MC_CMD_RMON_ALLOC_SUPER_CLASS 0xcc
5983
5984/* MC_CMD_RMON_ALLOC_SUPER_CLASS_IN msgrequest */
5985#define MC_CMD_RMON_ALLOC_SUPER_CLASS_IN_LEN 0
5986
5987/* MC_CMD_RMON_ALLOC_SUPER_CLASS_OUT msgresponse */
5988#define MC_CMD_RMON_ALLOC_SUPER_CLASS_OUT_LEN 4
5989/* super_class */
5990#define MC_CMD_RMON_ALLOC_SUPER_CLASS_OUT_SUPER_CLASS_OFST 0
5991
5992
5993/***********************************/
5994/* MC_CMD_RMON_DEALLOC_SUPER_CLASS
5995 * Deallocate an rmon tx super_class
5996 */
5997#define MC_CMD_RMON_DEALLOC_SUPER_CLASS 0xcd
5998
5999/* MC_CMD_RMON_DEALLOC_SUPER_CLASS_IN msgrequest */
6000#define MC_CMD_RMON_DEALLOC_SUPER_CLASS_IN_LEN 4
6001/* super_class */
6002#define MC_CMD_RMON_DEALLOC_SUPER_CLASS_IN_SUPER_CLASS_OFST 0
6003
6004/* MC_CMD_RMON_DEALLOC_SUPER_CLASS_OUT msgresponse */
6005#define MC_CMD_RMON_DEALLOC_SUPER_CLASS_OUT_LEN 0
6006
6007
6008/***********************************/
6009/* MC_CMD_RMON_RX_UP_CONV_STATS
6010 * Retrieve up converter statistics
6011 */
6012#define MC_CMD_RMON_RX_UP_CONV_STATS 0xce
6013
6014/* MC_CMD_RMON_RX_UP_CONV_STATS_IN msgrequest */
6015#define MC_CMD_RMON_RX_UP_CONV_STATS_IN_LEN 4
6016/* flags */
6017#define MC_CMD_RMON_RX_UP_CONV_STATS_IN_FLAGS_OFST 0
6018#define MC_CMD_RMON_RX_UP_CONV_STATS_IN_PORT_LBN 0
6019#define MC_CMD_RMON_RX_UP_CONV_STATS_IN_PORT_WIDTH 2
6020#define MC_CMD_RMON_RX_UP_CONV_STATS_IN_RST_LBN 2
6021#define MC_CMD_RMON_RX_UP_CONV_STATS_IN_RST_WIDTH 1
6022
6023/* MC_CMD_RMON_RX_UP_CONV_STATS_OUT msgresponse */
6024#define MC_CMD_RMON_RX_UP_CONV_STATS_OUT_LENMIN 4
6025#define MC_CMD_RMON_RX_UP_CONV_STATS_OUT_LENMAX 252
6026#define MC_CMD_RMON_RX_UP_CONV_STATS_OUT_LEN(num) (0+4*(num))
6027/* Array of stats */
6028#define MC_CMD_RMON_RX_UP_CONV_STATS_OUT_BUFFER_OFST 0
6029#define MC_CMD_RMON_RX_UP_CONV_STATS_OUT_BUFFER_LEN 4
6030#define MC_CMD_RMON_RX_UP_CONV_STATS_OUT_BUFFER_MINNUM 1
6031#define MC_CMD_RMON_RX_UP_CONV_STATS_OUT_BUFFER_MAXNUM 63
6032
6033
6034/***********************************/
6035/* MC_CMD_RMON_RX_IPI_STATS
6036 * Retrieve rx ipi stats
6037 */
6038#define MC_CMD_RMON_RX_IPI_STATS 0xcf
6039
6040/* MC_CMD_RMON_RX_IPI_STATS_IN msgrequest */
6041#define MC_CMD_RMON_RX_IPI_STATS_IN_LEN 4
6042/* flags */
6043#define MC_CMD_RMON_RX_IPI_STATS_IN_FLAGS_OFST 0
6044#define MC_CMD_RMON_RX_IPI_STATS_IN_VFIFO_LBN 0
6045#define MC_CMD_RMON_RX_IPI_STATS_IN_VFIFO_WIDTH 5
6046#define MC_CMD_RMON_RX_IPI_STATS_IN_RST_LBN 5
6047#define MC_CMD_RMON_RX_IPI_STATS_IN_RST_WIDTH 1
6048
6049/* MC_CMD_RMON_RX_IPI_STATS_OUT msgresponse */
6050#define MC_CMD_RMON_RX_IPI_STATS_OUT_LENMIN 4
6051#define MC_CMD_RMON_RX_IPI_STATS_OUT_LENMAX 252
6052#define MC_CMD_RMON_RX_IPI_STATS_OUT_LEN(num) (0+4*(num))
6053/* Array of stats */
6054#define MC_CMD_RMON_RX_IPI_STATS_OUT_BUFFER_OFST 0
6055#define MC_CMD_RMON_RX_IPI_STATS_OUT_BUFFER_LEN 4
6056#define MC_CMD_RMON_RX_IPI_STATS_OUT_BUFFER_MINNUM 1
6057#define MC_CMD_RMON_RX_IPI_STATS_OUT_BUFFER_MAXNUM 63
6058
6059
6060/***********************************/
6061/* MC_CMD_RMON_RX_IPSEC_CNTXT_PTR_STATS
6062 * Retrieve rx ipsec cntxt_ptr indexed stats
6063 */
6064#define MC_CMD_RMON_RX_IPSEC_CNTXT_PTR_STATS 0xd0
6065
6066/* MC_CMD_RMON_RX_IPSEC_CNTXT_PTR_STATS_IN msgrequest */
6067#define MC_CMD_RMON_RX_IPSEC_CNTXT_PTR_STATS_IN_LEN 4
6068/* flags */
6069#define MC_CMD_RMON_RX_IPSEC_CNTXT_PTR_STATS_IN_FLAGS_OFST 0
6070#define MC_CMD_RMON_RX_IPSEC_CNTXT_PTR_STATS_IN_CNTXT_PTR_LBN 0
6071#define MC_CMD_RMON_RX_IPSEC_CNTXT_PTR_STATS_IN_CNTXT_PTR_WIDTH 9
6072#define MC_CMD_RMON_RX_IPSEC_CNTXT_PTR_STATS_IN_RST_LBN 9
6073#define MC_CMD_RMON_RX_IPSEC_CNTXT_PTR_STATS_IN_RST_WIDTH 1
6074
6075/* MC_CMD_RMON_RX_IPSEC_CNTXT_PTR_STATS_OUT msgresponse */
6076#define MC_CMD_RMON_RX_IPSEC_CNTXT_PTR_STATS_OUT_LENMIN 4
6077#define MC_CMD_RMON_RX_IPSEC_CNTXT_PTR_STATS_OUT_LENMAX 252
6078#define MC_CMD_RMON_RX_IPSEC_CNTXT_PTR_STATS_OUT_LEN(num) (0+4*(num))
6079/* Array of stats */
6080#define MC_CMD_RMON_RX_IPSEC_CNTXT_PTR_STATS_OUT_BUFFER_OFST 0
6081#define MC_CMD_RMON_RX_IPSEC_CNTXT_PTR_STATS_OUT_BUFFER_LEN 4
6082#define MC_CMD_RMON_RX_IPSEC_CNTXT_PTR_STATS_OUT_BUFFER_MINNUM 1
6083#define MC_CMD_RMON_RX_IPSEC_CNTXT_PTR_STATS_OUT_BUFFER_MAXNUM 63
6084
6085
6086/***********************************/
6087/* MC_CMD_RMON_RX_IPSEC_PORT_STATS
6088 * Retrieve rx ipsec port indexed stats
6089 */
6090#define MC_CMD_RMON_RX_IPSEC_PORT_STATS 0xd1
6091
6092/* MC_CMD_RMON_RX_IPSEC_PORT_STATS_IN msgrequest */
6093#define MC_CMD_RMON_RX_IPSEC_PORT_STATS_IN_LEN 4
6094/* flags */
6095#define MC_CMD_RMON_RX_IPSEC_PORT_STATS_IN_FLAGS_OFST 0
6096#define MC_CMD_RMON_RX_IPSEC_PORT_STATS_IN_PORT_LBN 0
6097#define MC_CMD_RMON_RX_IPSEC_PORT_STATS_IN_PORT_WIDTH 2
6098#define MC_CMD_RMON_RX_IPSEC_PORT_STATS_IN_RST_LBN 2
6099#define MC_CMD_RMON_RX_IPSEC_PORT_STATS_IN_RST_WIDTH 1
6100
6101/* MC_CMD_RMON_RX_IPSEC_PORT_STATS_OUT msgresponse */
6102#define MC_CMD_RMON_RX_IPSEC_PORT_STATS_OUT_LENMIN 4
6103#define MC_CMD_RMON_RX_IPSEC_PORT_STATS_OUT_LENMAX 252
6104#define MC_CMD_RMON_RX_IPSEC_PORT_STATS_OUT_LEN(num) (0+4*(num))
6105/* Array of stats */
6106#define MC_CMD_RMON_RX_IPSEC_PORT_STATS_OUT_BUFFER_OFST 0
6107#define MC_CMD_RMON_RX_IPSEC_PORT_STATS_OUT_BUFFER_LEN 4
6108#define MC_CMD_RMON_RX_IPSEC_PORT_STATS_OUT_BUFFER_MINNUM 1
6109#define MC_CMD_RMON_RX_IPSEC_PORT_STATS_OUT_BUFFER_MAXNUM 63
6110
6111
6112/***********************************/
6113/* MC_CMD_RMON_RX_IPSEC_OFLOW_STATS
6114 * Retrieve tx ipsec overflow
6115 */
6116#define MC_CMD_RMON_RX_IPSEC_OFLOW_STATS 0xd2
6117
6118/* MC_CMD_RMON_RX_IPSEC_OFLOW_STATS_IN msgrequest */
6119#define MC_CMD_RMON_RX_IPSEC_OFLOW_STATS_IN_LEN 4
6120/* flags */
6121#define MC_CMD_RMON_RX_IPSEC_OFLOW_STATS_IN_FLAGS_OFST 0
6122#define MC_CMD_RMON_RX_IPSEC_OFLOW_STATS_IN_PORT_LBN 0
6123#define MC_CMD_RMON_RX_IPSEC_OFLOW_STATS_IN_PORT_WIDTH 2
6124#define MC_CMD_RMON_RX_IPSEC_OFLOW_STATS_IN_RST_LBN 2
6125#define MC_CMD_RMON_RX_IPSEC_OFLOW_STATS_IN_RST_WIDTH 1
6126
6127/* MC_CMD_RMON_RX_IPSEC_OFLOW_STATS_OUT msgresponse */
6128#define MC_CMD_RMON_RX_IPSEC_OFLOW_STATS_OUT_LENMIN 4
6129#define MC_CMD_RMON_RX_IPSEC_OFLOW_STATS_OUT_LENMAX 252
6130#define MC_CMD_RMON_RX_IPSEC_OFLOW_STATS_OUT_LEN(num) (0+4*(num))
6131/* Array of stats */
6132#define MC_CMD_RMON_RX_IPSEC_OFLOW_STATS_OUT_BUFFER_OFST 0
6133#define MC_CMD_RMON_RX_IPSEC_OFLOW_STATS_OUT_BUFFER_LEN 4
6134#define MC_CMD_RMON_RX_IPSEC_OFLOW_STATS_OUT_BUFFER_MINNUM 1
6135#define MC_CMD_RMON_RX_IPSEC_OFLOW_STATS_OUT_BUFFER_MAXNUM 63
6136
6137
6138/***********************************/
6139/* MC_CMD_VPORT_ADD_MAC_ADDRESS
6140 * Add a MAC address to a v-port
6141 */
6142#define MC_CMD_VPORT_ADD_MAC_ADDRESS 0xa8
6143
6144/* MC_CMD_VPORT_ADD_MAC_ADDRESS_IN msgrequest */
6145#define MC_CMD_VPORT_ADD_MAC_ADDRESS_IN_LEN 10
6146/* The handle of the v-port */
6147#define MC_CMD_VPORT_ADD_MAC_ADDRESS_IN_VPORT_ID_OFST 0
6148/* MAC address to add */
6149#define MC_CMD_VPORT_ADD_MAC_ADDRESS_IN_MACADDR_OFST 4
6150#define MC_CMD_VPORT_ADD_MAC_ADDRESS_IN_MACADDR_LEN 6
6151
6152/* MC_CMD_VPORT_ADD_MAC_ADDRESS_OUT msgresponse */
6153#define MC_CMD_VPORT_ADD_MAC_ADDRESS_OUT_LEN 0
6154
6155
6156/***********************************/
6157/* MC_CMD_VPORT_DEL_MAC_ADDRESS
6158 * Delete a MAC address from a v-port
6159 */
6160#define MC_CMD_VPORT_DEL_MAC_ADDRESS 0xa9
6161
6162/* MC_CMD_VPORT_DEL_MAC_ADDRESS_IN msgrequest */
6163#define MC_CMD_VPORT_DEL_MAC_ADDRESS_IN_LEN 10
6164/* The handle of the v-port */
6165#define MC_CMD_VPORT_DEL_MAC_ADDRESS_IN_VPORT_ID_OFST 0
6166/* MAC address to add */
6167#define MC_CMD_VPORT_DEL_MAC_ADDRESS_IN_MACADDR_OFST 4
6168#define MC_CMD_VPORT_DEL_MAC_ADDRESS_IN_MACADDR_LEN 6
6169
6170/* MC_CMD_VPORT_DEL_MAC_ADDRESS_OUT msgresponse */
6171#define MC_CMD_VPORT_DEL_MAC_ADDRESS_OUT_LEN 0
6172
6173
6174/***********************************/
6175/* MC_CMD_VPORT_GET_MAC_ADDRESSES
6176 * Delete a MAC address from a v-port
6177 */
6178#define MC_CMD_VPORT_GET_MAC_ADDRESSES 0xaa
6179
6180/* MC_CMD_VPORT_GET_MAC_ADDRESSES_IN msgrequest */
6181#define MC_CMD_VPORT_GET_MAC_ADDRESSES_IN_LEN 4
6182/* The handle of the v-port */
6183#define MC_CMD_VPORT_GET_MAC_ADDRESSES_IN_VPORT_ID_OFST 0
6184
6185/* MC_CMD_VPORT_GET_MAC_ADDRESSES_OUT msgresponse */
6186#define MC_CMD_VPORT_GET_MAC_ADDRESSES_OUT_LENMIN 4
6187#define MC_CMD_VPORT_GET_MAC_ADDRESSES_OUT_LENMAX 250
6188#define MC_CMD_VPORT_GET_MAC_ADDRESSES_OUT_LEN(num) (4+6*(num))
6189/* The number of MAC addresses returned */
6190#define MC_CMD_VPORT_GET_MAC_ADDRESSES_OUT_MACADDR_COUNT_OFST 0
6191/* Array of MAC addresses */
6192#define MC_CMD_VPORT_GET_MAC_ADDRESSES_OUT_MACADDR_OFST 4
6193#define MC_CMD_VPORT_GET_MAC_ADDRESSES_OUT_MACADDR_LEN 6
6194#define MC_CMD_VPORT_GET_MAC_ADDRESSES_OUT_MACADDR_MINNUM 0
6195#define MC_CMD_VPORT_GET_MAC_ADDRESSES_OUT_MACADDR_MAXNUM 41
6196
6197
6198/***********************************/
6199/* MC_CMD_DUMP_BUFTBL_ENTRIES
6200 * Dump buffer table entries, mainly for command client debug use. Dumps
6201 * absolute entries, and does not use chunk handles. All entries must be in
6202 * range, and used for q page mapping, Although the latter restriction may be
6203 * lifted in future.
6204 */
6205#define MC_CMD_DUMP_BUFTBL_ENTRIES 0xab
6206
6207/* MC_CMD_DUMP_BUFTBL_ENTRIES_IN msgrequest */
6208#define MC_CMD_DUMP_BUFTBL_ENTRIES_IN_LEN 8
6209/* Index of the first buffer table entry. */
6210#define MC_CMD_DUMP_BUFTBL_ENTRIES_IN_FIRSTID_OFST 0
6211/* Number of buffer table entries to dump. */
6212#define MC_CMD_DUMP_BUFTBL_ENTRIES_IN_NUMENTRIES_OFST 4
6213
6214/* MC_CMD_DUMP_BUFTBL_ENTRIES_OUT msgresponse */
6215#define MC_CMD_DUMP_BUFTBL_ENTRIES_OUT_LENMIN 12
6216#define MC_CMD_DUMP_BUFTBL_ENTRIES_OUT_LENMAX 252
6217#define MC_CMD_DUMP_BUFTBL_ENTRIES_OUT_LEN(num) (0+12*(num))
6218/* Raw buffer table entries, layed out as BUFTBL_ENTRY. */
6219#define MC_CMD_DUMP_BUFTBL_ENTRIES_OUT_ENTRY_OFST 0
6220#define MC_CMD_DUMP_BUFTBL_ENTRIES_OUT_ENTRY_LEN 12
6221#define MC_CMD_DUMP_BUFTBL_ENTRIES_OUT_ENTRY_MINNUM 1
6222#define MC_CMD_DUMP_BUFTBL_ENTRIES_OUT_ENTRY_MAXNUM 21
6223
6224
6225/***********************************/
6226/* MC_CMD_SET_RXDP_CONFIG
6227 * Set global RXDP configuration settings
6228 */
6229#define MC_CMD_SET_RXDP_CONFIG 0xc1
6230
6231/* MC_CMD_SET_RXDP_CONFIG_IN msgrequest */
6232#define MC_CMD_SET_RXDP_CONFIG_IN_LEN 4
6233#define MC_CMD_SET_RXDP_CONFIG_IN_DATA_OFST 0
6234#define MC_CMD_SET_RXDP_CONFIG_IN_PAD_HOST_DMA_LBN 0
6235#define MC_CMD_SET_RXDP_CONFIG_IN_PAD_HOST_DMA_WIDTH 1
6236
6237/* MC_CMD_SET_RXDP_CONFIG_OUT msgresponse */
6238#define MC_CMD_SET_RXDP_CONFIG_OUT_LEN 0
6239
6240
6241/***********************************/
6242/* MC_CMD_GET_RXDP_CONFIG
6243 * Get global RXDP configuration settings
6244 */
6245#define MC_CMD_GET_RXDP_CONFIG 0xc2
6246
6247/* MC_CMD_GET_RXDP_CONFIG_IN msgrequest */
6248#define MC_CMD_GET_RXDP_CONFIG_IN_LEN 0
6249
6250/* MC_CMD_GET_RXDP_CONFIG_OUT msgresponse */
6251#define MC_CMD_GET_RXDP_CONFIG_OUT_LEN 4
6252#define MC_CMD_GET_RXDP_CONFIG_OUT_DATA_OFST 0
6253#define MC_CMD_GET_RXDP_CONFIG_OUT_PAD_HOST_DMA_LBN 0
6254#define MC_CMD_GET_RXDP_CONFIG_OUT_PAD_HOST_DMA_WIDTH 1
6255
6256
6257/***********************************/
6258/* MC_CMD_RMON_RX_CLASS_DROPS_STATS
6259 * Retrieve rx class drop stats
6260 */
6261#define MC_CMD_RMON_RX_CLASS_DROPS_STATS 0xd3
6262
6263/* MC_CMD_RMON_RX_CLASS_DROPS_STATS_IN msgrequest */
6264#define MC_CMD_RMON_RX_CLASS_DROPS_STATS_IN_LEN 4
6265/* flags */
6266#define MC_CMD_RMON_RX_CLASS_DROPS_STATS_IN_FLAGS_OFST 0
6267#define MC_CMD_RMON_RX_CLASS_DROPS_STATS_IN_CLASS_LBN 0
6268#define MC_CMD_RMON_RX_CLASS_DROPS_STATS_IN_CLASS_WIDTH 8
6269#define MC_CMD_RMON_RX_CLASS_DROPS_STATS_IN_RST_LBN 8
6270#define MC_CMD_RMON_RX_CLASS_DROPS_STATS_IN_RST_WIDTH 1
6271
6272/* MC_CMD_RMON_RX_CLASS_DROPS_STATS_OUT msgresponse */
6273#define MC_CMD_RMON_RX_CLASS_DROPS_STATS_OUT_LENMIN 4
6274#define MC_CMD_RMON_RX_CLASS_DROPS_STATS_OUT_LENMAX 252
6275#define MC_CMD_RMON_RX_CLASS_DROPS_STATS_OUT_LEN(num) (0+4*(num))
6276/* Array of stats */
6277#define MC_CMD_RMON_RX_CLASS_DROPS_STATS_OUT_BUFFER_OFST 0
6278#define MC_CMD_RMON_RX_CLASS_DROPS_STATS_OUT_BUFFER_LEN 4
6279#define MC_CMD_RMON_RX_CLASS_DROPS_STATS_OUT_BUFFER_MINNUM 1
6280#define MC_CMD_RMON_RX_CLASS_DROPS_STATS_OUT_BUFFER_MAXNUM 63
6281
6282
6283/***********************************/
6284/* MC_CMD_RMON_RX_SUPER_CLASS_DROPS_STATS
6285 * Retrieve rx super class drop stats
6286 */
6287#define MC_CMD_RMON_RX_SUPER_CLASS_DROPS_STATS 0xd4
6288
6289/* MC_CMD_RMON_RX_SUPER_CLASS_DROPS_STATS_IN msgrequest */
6290#define MC_CMD_RMON_RX_SUPER_CLASS_DROPS_STATS_IN_LEN 4
6291/* flags */
6292#define MC_CMD_RMON_RX_SUPER_CLASS_DROPS_STATS_IN_FLAGS_OFST 0
6293#define MC_CMD_RMON_RX_SUPER_CLASS_DROPS_STATS_IN_SUPER_CLASS_LBN 0
6294#define MC_CMD_RMON_RX_SUPER_CLASS_DROPS_STATS_IN_SUPER_CLASS_WIDTH 4
6295#define MC_CMD_RMON_RX_SUPER_CLASS_DROPS_STATS_IN_RST_LBN 4
6296#define MC_CMD_RMON_RX_SUPER_CLASS_DROPS_STATS_IN_RST_WIDTH 1
6297
6298/* MC_CMD_RMON_RX_SUPER_CLASS_DROPS_STATS_OUT msgresponse */
6299#define MC_CMD_RMON_RX_SUPER_CLASS_DROPS_STATS_OUT_LENMIN 4
6300#define MC_CMD_RMON_RX_SUPER_CLASS_DROPS_STATS_OUT_LENMAX 252
6301#define MC_CMD_RMON_RX_SUPER_CLASS_DROPS_STATS_OUT_LEN(num) (0+4*(num))
6302/* Array of stats */
6303#define MC_CMD_RMON_RX_SUPER_CLASS_DROPS_STATS_OUT_BUFFER_OFST 0
6304#define MC_CMD_RMON_RX_SUPER_CLASS_DROPS_STATS_OUT_BUFFER_LEN 4
6305#define MC_CMD_RMON_RX_SUPER_CLASS_DROPS_STATS_OUT_BUFFER_MINNUM 1
6306#define MC_CMD_RMON_RX_SUPER_CLASS_DROPS_STATS_OUT_BUFFER_MAXNUM 63
6307
6308
6309/***********************************/
6310/* MC_CMD_RMON_RX_ERRORS_STATS
6311 * Retrieve rxdp errors
6312 */
6313#define MC_CMD_RMON_RX_ERRORS_STATS 0xd5
6314
6315/* MC_CMD_RMON_RX_ERRORS_STATS_IN msgrequest */
6316#define MC_CMD_RMON_RX_ERRORS_STATS_IN_LEN 4
6317/* flags */
6318#define MC_CMD_RMON_RX_ERRORS_STATS_IN_FLAGS_OFST 0
6319#define MC_CMD_RMON_RX_ERRORS_STATS_IN_QID_LBN 0
6320#define MC_CMD_RMON_RX_ERRORS_STATS_IN_QID_WIDTH 11
6321#define MC_CMD_RMON_RX_ERRORS_STATS_IN_RST_LBN 11
6322#define MC_CMD_RMON_RX_ERRORS_STATS_IN_RST_WIDTH 1
6323
6324/* MC_CMD_RMON_RX_ERRORS_STATS_OUT msgresponse */
6325#define MC_CMD_RMON_RX_ERRORS_STATS_OUT_LENMIN 4
6326#define MC_CMD_RMON_RX_ERRORS_STATS_OUT_LENMAX 252
6327#define MC_CMD_RMON_RX_ERRORS_STATS_OUT_LEN(num) (0+4*(num))
6328/* Array of stats */
6329#define MC_CMD_RMON_RX_ERRORS_STATS_OUT_BUFFER_OFST 0
6330#define MC_CMD_RMON_RX_ERRORS_STATS_OUT_BUFFER_LEN 4
6331#define MC_CMD_RMON_RX_ERRORS_STATS_OUT_BUFFER_MINNUM 1
6332#define MC_CMD_RMON_RX_ERRORS_STATS_OUT_BUFFER_MAXNUM 63
6333
6334
6335/***********************************/
6336/* MC_CMD_RMON_RX_OVERFLOW_STATS
6337 * Retrieve rxdp overflow
6338 */
6339#define MC_CMD_RMON_RX_OVERFLOW_STATS 0xd6
6340
6341/* MC_CMD_RMON_RX_OVERFLOW_STATS_IN msgrequest */
6342#define MC_CMD_RMON_RX_OVERFLOW_STATS_IN_LEN 4
6343/* flags */
6344#define MC_CMD_RMON_RX_OVERFLOW_STATS_IN_FLAGS_OFST 0
6345#define MC_CMD_RMON_RX_OVERFLOW_STATS_IN_CLASS_LBN 0
6346#define MC_CMD_RMON_RX_OVERFLOW_STATS_IN_CLASS_WIDTH 8
6347#define MC_CMD_RMON_RX_OVERFLOW_STATS_IN_RST_LBN 8
6348#define MC_CMD_RMON_RX_OVERFLOW_STATS_IN_RST_WIDTH 1
6349
6350/* MC_CMD_RMON_RX_OVERFLOW_STATS_OUT msgresponse */
6351#define MC_CMD_RMON_RX_OVERFLOW_STATS_OUT_LENMIN 4
6352#define MC_CMD_RMON_RX_OVERFLOW_STATS_OUT_LENMAX 252
6353#define MC_CMD_RMON_RX_OVERFLOW_STATS_OUT_LEN(num) (0+4*(num))
6354/* Array of stats */
6355#define MC_CMD_RMON_RX_OVERFLOW_STATS_OUT_BUFFER_OFST 0
6356#define MC_CMD_RMON_RX_OVERFLOW_STATS_OUT_BUFFER_LEN 4
6357#define MC_CMD_RMON_RX_OVERFLOW_STATS_OUT_BUFFER_MINNUM 1
6358#define MC_CMD_RMON_RX_OVERFLOW_STATS_OUT_BUFFER_MAXNUM 63
6359
6360
6361/***********************************/
6362/* MC_CMD_RMON_TX_IPI_STATS
6363 * Retrieve tx ipi stats
6364 */
6365#define MC_CMD_RMON_TX_IPI_STATS 0xd7
6366
6367/* MC_CMD_RMON_TX_IPI_STATS_IN msgrequest */
6368#define MC_CMD_RMON_TX_IPI_STATS_IN_LEN 4
6369/* flags */
6370#define MC_CMD_RMON_TX_IPI_STATS_IN_FLAGS_OFST 0
6371#define MC_CMD_RMON_TX_IPI_STATS_IN_VFIFO_LBN 0
6372#define MC_CMD_RMON_TX_IPI_STATS_IN_VFIFO_WIDTH 5
6373#define MC_CMD_RMON_TX_IPI_STATS_IN_RST_LBN 5
6374#define MC_CMD_RMON_TX_IPI_STATS_IN_RST_WIDTH 1
6375
6376/* MC_CMD_RMON_TX_IPI_STATS_OUT msgresponse */
6377#define MC_CMD_RMON_TX_IPI_STATS_OUT_LENMIN 4
6378#define MC_CMD_RMON_TX_IPI_STATS_OUT_LENMAX 252
6379#define MC_CMD_RMON_TX_IPI_STATS_OUT_LEN(num) (0+4*(num))
6380/* Array of stats */
6381#define MC_CMD_RMON_TX_IPI_STATS_OUT_BUFFER_OFST 0
6382#define MC_CMD_RMON_TX_IPI_STATS_OUT_BUFFER_LEN 4
6383#define MC_CMD_RMON_TX_IPI_STATS_OUT_BUFFER_MINNUM 1
6384#define MC_CMD_RMON_TX_IPI_STATS_OUT_BUFFER_MAXNUM 63
6385
6386
6387/***********************************/
6388/* MC_CMD_RMON_TX_IPSEC_CNTXT_PTR_STATS
6389 * Retrieve tx ipsec counters by cntxt_ptr
6390 */
6391#define MC_CMD_RMON_TX_IPSEC_CNTXT_PTR_STATS 0xd8
6392
6393/* MC_CMD_RMON_TX_IPSEC_CNTXT_PTR_STATS_IN msgrequest */
6394#define MC_CMD_RMON_TX_IPSEC_CNTXT_PTR_STATS_IN_LEN 4
6395/* flags */
6396#define MC_CMD_RMON_TX_IPSEC_CNTXT_PTR_STATS_IN_FLAGS_OFST 0
6397#define MC_CMD_RMON_TX_IPSEC_CNTXT_PTR_STATS_IN_CNTXT_PTR_LBN 0
6398#define MC_CMD_RMON_TX_IPSEC_CNTXT_PTR_STATS_IN_CNTXT_PTR_WIDTH 9
6399#define MC_CMD_RMON_TX_IPSEC_CNTXT_PTR_STATS_IN_RST_LBN 9
6400#define MC_CMD_RMON_TX_IPSEC_CNTXT_PTR_STATS_IN_RST_WIDTH 1
6401
6402/* MC_CMD_RMON_TX_IPSEC_CNTXT_PTR_STATS_OUT msgresponse */
6403#define MC_CMD_RMON_TX_IPSEC_CNTXT_PTR_STATS_OUT_LENMIN 4
6404#define MC_CMD_RMON_TX_IPSEC_CNTXT_PTR_STATS_OUT_LENMAX 252
6405#define MC_CMD_RMON_TX_IPSEC_CNTXT_PTR_STATS_OUT_LEN(num) (0+4*(num))
6406/* Array of stats */
6407#define MC_CMD_RMON_TX_IPSEC_CNTXT_PTR_STATS_OUT_BUFFER_OFST 0
6408#define MC_CMD_RMON_TX_IPSEC_CNTXT_PTR_STATS_OUT_BUFFER_LEN 4
6409#define MC_CMD_RMON_TX_IPSEC_CNTXT_PTR_STATS_OUT_BUFFER_MINNUM 1
6410#define MC_CMD_RMON_TX_IPSEC_CNTXT_PTR_STATS_OUT_BUFFER_MAXNUM 63
6411
6412
6413/***********************************/
6414/* MC_CMD_RMON_TX_IPSEC_PORT_STATS
6415 * Retrieve tx ipsec counters by port
6416 */
6417#define MC_CMD_RMON_TX_IPSEC_PORT_STATS 0xd9
6418
6419/* MC_CMD_RMON_TX_IPSEC_PORT_STATS_IN msgrequest */
6420#define MC_CMD_RMON_TX_IPSEC_PORT_STATS_IN_LEN 4
6421/* flags */
6422#define MC_CMD_RMON_TX_IPSEC_PORT_STATS_IN_FLAGS_OFST 0
6423#define MC_CMD_RMON_TX_IPSEC_PORT_STATS_IN_PORT_LBN 0
6424#define MC_CMD_RMON_TX_IPSEC_PORT_STATS_IN_PORT_WIDTH 2
6425#define MC_CMD_RMON_TX_IPSEC_PORT_STATS_IN_RST_LBN 2
6426#define MC_CMD_RMON_TX_IPSEC_PORT_STATS_IN_RST_WIDTH 1
6427
6428/* MC_CMD_RMON_TX_IPSEC_PORT_STATS_OUT msgresponse */
6429#define MC_CMD_RMON_TX_IPSEC_PORT_STATS_OUT_LENMIN 4
6430#define MC_CMD_RMON_TX_IPSEC_PORT_STATS_OUT_LENMAX 252
6431#define MC_CMD_RMON_TX_IPSEC_PORT_STATS_OUT_LEN(num) (0+4*(num))
6432/* Array of stats */
6433#define MC_CMD_RMON_TX_IPSEC_PORT_STATS_OUT_BUFFER_OFST 0
6434#define MC_CMD_RMON_TX_IPSEC_PORT_STATS_OUT_BUFFER_LEN 4
6435#define MC_CMD_RMON_TX_IPSEC_PORT_STATS_OUT_BUFFER_MINNUM 1
6436#define MC_CMD_RMON_TX_IPSEC_PORT_STATS_OUT_BUFFER_MAXNUM 63
6437
6438
6439/***********************************/
6440/* MC_CMD_RMON_TX_IPSEC_OFLOW_STATS
6441 * Retrieve tx ipsec overflow
6442 */
6443#define MC_CMD_RMON_TX_IPSEC_OFLOW_STATS 0xda
6444
6445/* MC_CMD_RMON_TX_IPSEC_OFLOW_STATS_IN msgrequest */
6446#define MC_CMD_RMON_TX_IPSEC_OFLOW_STATS_IN_LEN 4
6447/* flags */
6448#define MC_CMD_RMON_TX_IPSEC_OFLOW_STATS_IN_FLAGS_OFST 0
6449#define MC_CMD_RMON_TX_IPSEC_OFLOW_STATS_IN_PORT_LBN 0
6450#define MC_CMD_RMON_TX_IPSEC_OFLOW_STATS_IN_PORT_WIDTH 2
6451#define MC_CMD_RMON_TX_IPSEC_OFLOW_STATS_IN_RST_LBN 2
6452#define MC_CMD_RMON_TX_IPSEC_OFLOW_STATS_IN_RST_WIDTH 1
6453
6454/* MC_CMD_RMON_TX_IPSEC_OFLOW_STATS_OUT msgresponse */
6455#define MC_CMD_RMON_TX_IPSEC_OFLOW_STATS_OUT_LENMIN 4
6456#define MC_CMD_RMON_TX_IPSEC_OFLOW_STATS_OUT_LENMAX 252
6457#define MC_CMD_RMON_TX_IPSEC_OFLOW_STATS_OUT_LEN(num) (0+4*(num))
6458/* Array of stats */
6459#define MC_CMD_RMON_TX_IPSEC_OFLOW_STATS_OUT_BUFFER_OFST 0
6460#define MC_CMD_RMON_TX_IPSEC_OFLOW_STATS_OUT_BUFFER_LEN 4
6461#define MC_CMD_RMON_TX_IPSEC_OFLOW_STATS_OUT_BUFFER_MINNUM 1
6462#define MC_CMD_RMON_TX_IPSEC_OFLOW_STATS_OUT_BUFFER_MAXNUM 63
6463
6464
6465/***********************************/
6466/* MC_CMD_RMON_TX_NOWHERE_STATS
6467 * Retrieve tx nowhere stats
6468 */
6469#define MC_CMD_RMON_TX_NOWHERE_STATS 0xdb
6470
6471/* MC_CMD_RMON_TX_NOWHERE_STATS_IN msgrequest */
6472#define MC_CMD_RMON_TX_NOWHERE_STATS_IN_LEN 4
6473/* flags */
6474#define MC_CMD_RMON_TX_NOWHERE_STATS_IN_FLAGS_OFST 0
6475#define MC_CMD_RMON_TX_NOWHERE_STATS_IN_CLASS_LBN 0
6476#define MC_CMD_RMON_TX_NOWHERE_STATS_IN_CLASS_WIDTH 8
6477#define MC_CMD_RMON_TX_NOWHERE_STATS_IN_RST_LBN 8
6478#define MC_CMD_RMON_TX_NOWHERE_STATS_IN_RST_WIDTH 1
6479
6480/* MC_CMD_RMON_TX_NOWHERE_STATS_OUT msgresponse */
6481#define MC_CMD_RMON_TX_NOWHERE_STATS_OUT_LENMIN 4
6482#define MC_CMD_RMON_TX_NOWHERE_STATS_OUT_LENMAX 252
6483#define MC_CMD_RMON_TX_NOWHERE_STATS_OUT_LEN(num) (0+4*(num))
6484/* Array of stats */
6485#define MC_CMD_RMON_TX_NOWHERE_STATS_OUT_BUFFER_OFST 0
6486#define MC_CMD_RMON_TX_NOWHERE_STATS_OUT_BUFFER_LEN 4
6487#define MC_CMD_RMON_TX_NOWHERE_STATS_OUT_BUFFER_MINNUM 1
6488#define MC_CMD_RMON_TX_NOWHERE_STATS_OUT_BUFFER_MAXNUM 63
6489
6490
6491/***********************************/
6492/* MC_CMD_RMON_TX_NOWHERE_QBB_STATS
6493 * Retrieve tx nowhere qbb stats
6494 */
6495#define MC_CMD_RMON_TX_NOWHERE_QBB_STATS 0xdc
6496
6497/* MC_CMD_RMON_TX_NOWHERE_QBB_STATS_IN msgrequest */
6498#define MC_CMD_RMON_TX_NOWHERE_QBB_STATS_IN_LEN 4
6499/* flags */
6500#define MC_CMD_RMON_TX_NOWHERE_QBB_STATS_IN_FLAGS_OFST 0
6501#define MC_CMD_RMON_TX_NOWHERE_QBB_STATS_IN_PRIORITY_LBN 0
6502#define MC_CMD_RMON_TX_NOWHERE_QBB_STATS_IN_PRIORITY_WIDTH 3
6503#define MC_CMD_RMON_TX_NOWHERE_QBB_STATS_IN_RST_LBN 3
6504#define MC_CMD_RMON_TX_NOWHERE_QBB_STATS_IN_RST_WIDTH 1
6505
6506/* MC_CMD_RMON_TX_NOWHERE_QBB_STATS_OUT msgresponse */
6507#define MC_CMD_RMON_TX_NOWHERE_QBB_STATS_OUT_LENMIN 4
6508#define MC_CMD_RMON_TX_NOWHERE_QBB_STATS_OUT_LENMAX 252
6509#define MC_CMD_RMON_TX_NOWHERE_QBB_STATS_OUT_LEN(num) (0+4*(num))
6510/* Array of stats */
6511#define MC_CMD_RMON_TX_NOWHERE_QBB_STATS_OUT_BUFFER_OFST 0
6512#define MC_CMD_RMON_TX_NOWHERE_QBB_STATS_OUT_BUFFER_LEN 4
6513#define MC_CMD_RMON_TX_NOWHERE_QBB_STATS_OUT_BUFFER_MINNUM 1
6514#define MC_CMD_RMON_TX_NOWHERE_QBB_STATS_OUT_BUFFER_MAXNUM 63
6515
6516
6517/***********************************/
6518/* MC_CMD_RMON_TX_ERRORS_STATS
6519 * Retrieve rxdp errors
6520 */
6521#define MC_CMD_RMON_TX_ERRORS_STATS 0xdd
6522
6523/* MC_CMD_RMON_TX_ERRORS_STATS_IN msgrequest */
6524#define MC_CMD_RMON_TX_ERRORS_STATS_IN_LEN 4
6525/* flags */
6526#define MC_CMD_RMON_TX_ERRORS_STATS_IN_FLAGS_OFST 0
6527#define MC_CMD_RMON_TX_ERRORS_STATS_IN_QID_LBN 0
6528#define MC_CMD_RMON_TX_ERRORS_STATS_IN_QID_WIDTH 11
6529#define MC_CMD_RMON_TX_ERRORS_STATS_IN_RST_LBN 11
6530#define MC_CMD_RMON_TX_ERRORS_STATS_IN_RST_WIDTH 1
6531
6532/* MC_CMD_RMON_TX_ERRORS_STATS_OUT msgresponse */
6533#define MC_CMD_RMON_TX_ERRORS_STATS_OUT_LENMIN 4
6534#define MC_CMD_RMON_TX_ERRORS_STATS_OUT_LENMAX 252
6535#define MC_CMD_RMON_TX_ERRORS_STATS_OUT_LEN(num) (0+4*(num))
6536/* Array of stats */
6537#define MC_CMD_RMON_TX_ERRORS_STATS_OUT_BUFFER_OFST 0
6538#define MC_CMD_RMON_TX_ERRORS_STATS_OUT_BUFFER_LEN 4
6539#define MC_CMD_RMON_TX_ERRORS_STATS_OUT_BUFFER_MINNUM 1
6540#define MC_CMD_RMON_TX_ERRORS_STATS_OUT_BUFFER_MAXNUM 63
6541
6542
6543/***********************************/
6544/* MC_CMD_RMON_TX_OVERFLOW_STATS
6545 * Retrieve rxdp overflow
6546 */
6547#define MC_CMD_RMON_TX_OVERFLOW_STATS 0xde
6548
6549/* MC_CMD_RMON_TX_OVERFLOW_STATS_IN msgrequest */
6550#define MC_CMD_RMON_TX_OVERFLOW_STATS_IN_LEN 4
6551/* flags */
6552#define MC_CMD_RMON_TX_OVERFLOW_STATS_IN_FLAGS_OFST 0
6553#define MC_CMD_RMON_TX_OVERFLOW_STATS_IN_CLASS_LBN 0
6554#define MC_CMD_RMON_TX_OVERFLOW_STATS_IN_CLASS_WIDTH 8
6555#define MC_CMD_RMON_TX_OVERFLOW_STATS_IN_RST_LBN 8
6556#define MC_CMD_RMON_TX_OVERFLOW_STATS_IN_RST_WIDTH 1
6557
6558/* MC_CMD_RMON_TX_OVERFLOW_STATS_OUT msgresponse */
6559#define MC_CMD_RMON_TX_OVERFLOW_STATS_OUT_LENMIN 4
6560#define MC_CMD_RMON_TX_OVERFLOW_STATS_OUT_LENMAX 252
6561#define MC_CMD_RMON_TX_OVERFLOW_STATS_OUT_LEN(num) (0+4*(num))
6562/* Array of stats */
6563#define MC_CMD_RMON_TX_OVERFLOW_STATS_OUT_BUFFER_OFST 0
6564#define MC_CMD_RMON_TX_OVERFLOW_STATS_OUT_BUFFER_LEN 4
6565#define MC_CMD_RMON_TX_OVERFLOW_STATS_OUT_BUFFER_MINNUM 1
6566#define MC_CMD_RMON_TX_OVERFLOW_STATS_OUT_BUFFER_MAXNUM 63
6567
6568
6569/***********************************/
6570/* MC_CMD_RMON_COLLECT_CLASS_STATS
6571 * Explicitly collect class stats at the specified evb port
6572 */
6573#define MC_CMD_RMON_COLLECT_CLASS_STATS 0xdf
6574
6575/* MC_CMD_RMON_COLLECT_CLASS_STATS_IN msgrequest */
6576#define MC_CMD_RMON_COLLECT_CLASS_STATS_IN_LEN 4
6577/* The port id associated with the vport/pport at which to collect class stats
6578 */
6579#define MC_CMD_RMON_COLLECT_CLASS_STATS_IN_PORT_ID_OFST 0
6580
6581/* MC_CMD_RMON_COLLECT_CLASS_STATS_OUT msgresponse */
6582#define MC_CMD_RMON_COLLECT_CLASS_STATS_OUT_LEN 4
6583/* class */
6584#define MC_CMD_RMON_COLLECT_CLASS_STATS_OUT_CLASS_OFST 0
6585
6586
6587/***********************************/
6588/* MC_CMD_RMON_COLLECT_SUPER_CLASS_STATS
6589 * Explicitly collect class stats at the specified evb port
6590 */
6591#define MC_CMD_RMON_COLLECT_SUPER_CLASS_STATS 0xe0
6592
6593/* MC_CMD_RMON_COLLECT_SUPER_CLASS_STATS_IN msgrequest */
6594#define MC_CMD_RMON_COLLECT_SUPER_CLASS_STATS_IN_LEN 4
6595/* The port id associated with the vport/pport at which to collect class stats
6596 */
6597#define MC_CMD_RMON_COLLECT_SUPER_CLASS_STATS_IN_PORT_ID_OFST 0
6598
6599/* MC_CMD_RMON_COLLECT_SUPER_CLASS_STATS_OUT msgresponse */
6600#define MC_CMD_RMON_COLLECT_SUPER_CLASS_STATS_OUT_LEN 4
6601/* super_class */
6602#define MC_CMD_RMON_COLLECT_SUPER_CLASS_STATS_OUT_SUPER_CLASS_OFST 0
6603
6604
6605/***********************************/
6606/* MC_CMD_GET_CLOCK
6607 * Return the system and PDCPU clock frequencies.
6608 */
6609#define MC_CMD_GET_CLOCK 0xac
6610
6611/* MC_CMD_GET_CLOCK_IN msgrequest */
6612#define MC_CMD_GET_CLOCK_IN_LEN 0
6613
6614/* MC_CMD_GET_CLOCK_OUT msgresponse */
6615#define MC_CMD_GET_CLOCK_OUT_LEN 8
6616/* System frequency, MHz */
6617#define MC_CMD_GET_CLOCK_OUT_SYS_FREQ_OFST 0
6618/* DPCPU frequency, MHz */
6619#define MC_CMD_GET_CLOCK_OUT_DPCPU_FREQ_OFST 4
6620
6621
6622/***********************************/
6623/* MC_CMD_SET_CLOCK
6624 * Control the system and DPCPU clock frequencies. Changes are lost reboot.
6625 */
6626#define MC_CMD_SET_CLOCK 0xad
6627
6628/* MC_CMD_SET_CLOCK_IN msgrequest */
6629#define MC_CMD_SET_CLOCK_IN_LEN 12
6630/* Requested system frequency in MHz; 0 leaves unchanged. */
6631#define MC_CMD_SET_CLOCK_IN_SYS_FREQ_OFST 0
6632/* Requested inter-core frequency in MHz; 0 leaves unchanged. */
6633#define MC_CMD_SET_CLOCK_IN_ICORE_FREQ_OFST 4
6634/* Request DPCPU frequency in MHz; 0 leaves unchanged. */
6635#define MC_CMD_SET_CLOCK_IN_DPCPU_FREQ_OFST 8
6636
6637/* MC_CMD_SET_CLOCK_OUT msgresponse */
6638#define MC_CMD_SET_CLOCK_OUT_LEN 12
6639/* Resulting system frequency in MHz */
6640#define MC_CMD_SET_CLOCK_OUT_SYS_FREQ_OFST 0
6641/* Resulting inter-core frequency in MHz */
6642#define MC_CMD_SET_CLOCK_OUT_ICORE_FREQ_OFST 4
6643/* Resulting DPCPU frequency in MHz */
6644#define MC_CMD_SET_CLOCK_OUT_DPCPU_FREQ_OFST 8
6645
6646
6647/***********************************/
6648/* MC_CMD_DPCPU_RPC
6649 * Send an arbitrary DPCPU message.
6650 */
6651#define MC_CMD_DPCPU_RPC 0xae
6652
6653/* MC_CMD_DPCPU_RPC_IN msgrequest */
6654#define MC_CMD_DPCPU_RPC_IN_LEN 36
6655#define MC_CMD_DPCPU_RPC_IN_CPU_OFST 0
6656/* enum: RxDPCPU */
6657#define MC_CMD_DPCPU_RPC_IN_DPCPU_RX 0x0
6658/* enum: TxDPCPU0 */
6659#define MC_CMD_DPCPU_RPC_IN_DPCPU_TX0 0x1
6660/* enum: TxDPCPU1 */
6661#define MC_CMD_DPCPU_RPC_IN_DPCPU_TX1 0x2
6662/* First 8 bits [39:32] of DATA are consumed by MC-DPCPU protocol and must be
6663 * initialised to zero
6664 */
6665#define MC_CMD_DPCPU_RPC_IN_DATA_OFST 4
6666#define MC_CMD_DPCPU_RPC_IN_DATA_LEN 32
6667#define MC_CMD_DPCPU_RPC_IN_HDR_CMD_CMDNUM_LBN 8
6668#define MC_CMD_DPCPU_RPC_IN_HDR_CMD_CMDNUM_WIDTH 8
6669#define MC_CMD_DPCPU_RPC_IN_CMDNUM_TXDPCPU_READ 0x6 /* enum */
6670#define MC_CMD_DPCPU_RPC_IN_CMDNUM_TXDPCPU_WRITE 0x7 /* enum */
6671#define MC_CMD_DPCPU_RPC_IN_CMDNUM_TXDPCPU_SELF_TEST 0xc /* enum */
6672#define MC_CMD_DPCPU_RPC_IN_CMDNUM_TXDPCPU_CSR_ACCESS 0xe /* enum */
6673#define MC_CMD_DPCPU_RPC_IN_CMDNUM_RXDPCPU_READ 0x46 /* enum */
6674#define MC_CMD_DPCPU_RPC_IN_CMDNUM_RXDPCPU_WRITE 0x47 /* enum */
6675#define MC_CMD_DPCPU_RPC_IN_CMDNUM_RXDPCPU_SELF_TEST 0x4a /* enum */
6676#define MC_CMD_DPCPU_RPC_IN_CMDNUM_RXDPCPU_CSR_ACCESS 0x4c /* enum */
6677#define MC_CMD_DPCPU_RPC_IN_CMDNUM_RXDPCPU_SET_MC_REPLAY_CNTXT 0x4d /* enum */
6678#define MC_CMD_DPCPU_RPC_IN_HDR_CMD_REQ_OBJID_LBN 16
6679#define MC_CMD_DPCPU_RPC_IN_HDR_CMD_REQ_OBJID_WIDTH 16
6680#define MC_CMD_DPCPU_RPC_IN_HDR_CMD_REQ_ADDR_LBN 16
6681#define MC_CMD_DPCPU_RPC_IN_HDR_CMD_REQ_ADDR_WIDTH 16
6682#define MC_CMD_DPCPU_RPC_IN_HDR_CMD_REQ_COUNT_LBN 48
6683#define MC_CMD_DPCPU_RPC_IN_HDR_CMD_REQ_COUNT_WIDTH 16
6684#define MC_CMD_DPCPU_RPC_IN_CSR_ACCESS_INFO_LBN 16
6685#define MC_CMD_DPCPU_RPC_IN_CSR_ACCESS_INFO_WIDTH 240
6686#define MC_CMD_DPCPU_RPC_IN_CSR_ACCESS_CMD_LBN 16
6687#define MC_CMD_DPCPU_RPC_IN_CSR_ACCESS_CMD_WIDTH 16
6688#define MC_CMD_DPCPU_RPC_IN_CSR_ACCESS_CMD_STOP_RETURN_RESULT 0x0 /* enum */
6689#define MC_CMD_DPCPU_RPC_IN_CSR_ACCESS_CMD_START_READ 0x1 /* enum */
6690#define MC_CMD_DPCPU_RPC_IN_CSR_ACCESS_CMD_START_WRITE 0x2 /* enum */
6691#define MC_CMD_DPCPU_RPC_IN_CSR_ACCESS_CMD_START_WRITE_READ 0x3 /* enum */
6692#define MC_CMD_DPCPU_RPC_IN_CSR_ACCESS_CMD_START_PIPELINED_READ 0x4 /* enum */
6693#define MC_CMD_DPCPU_RPC_IN_CSR_ACCESS_START_DELAY_LBN 48
6694#define MC_CMD_DPCPU_RPC_IN_CSR_ACCESS_START_DELAY_WIDTH 16
6695#define MC_CMD_DPCPU_RPC_IN_CSR_ACCESS_RPT_COUNT_LBN 64
6696#define MC_CMD_DPCPU_RPC_IN_CSR_ACCESS_RPT_COUNT_WIDTH 16
6697#define MC_CMD_DPCPU_RPC_IN_CSR_ACCESS_GAP_DELAY_LBN 80
6698#define MC_CMD_DPCPU_RPC_IN_CSR_ACCESS_GAP_DELAY_WIDTH 16
6699#define MC_CMD_DPCPU_RPC_IN_MC_REPLAY_MODE_LBN 16
6700#define MC_CMD_DPCPU_RPC_IN_MC_REPLAY_MODE_WIDTH 16
6701#define MC_CMD_DPCPU_RPC_IN_MC_REPLAY_MODE_CUT_THROUGH 0x1 /* enum */
6702#define MC_CMD_DPCPU_RPC_IN_MC_REPLAY_MODE_STORE_FORWARD 0x2 /* enum */
6703#define MC_CMD_DPCPU_RPC_IN_MC_REPLAY_MODE_STORE_FORWARD_FIRST 0x3 /* enum */
6704#define MC_CMD_DPCPU_RPC_IN_MC_REPLAY_CNTXT_LBN 64
6705#define MC_CMD_DPCPU_RPC_IN_MC_REPLAY_CNTXT_WIDTH 16
6706#define MC_CMD_DPCPU_RPC_IN_WDATA_OFST 12
6707#define MC_CMD_DPCPU_RPC_IN_WDATA_LEN 24
6708/* Register data to write. Only valid in write/write-read. */
6709#define MC_CMD_DPCPU_RPC_IN_CSR_ACCESS_DATA_OFST 16
6710/* Register address. */
6711#define MC_CMD_DPCPU_RPC_IN_CSR_ACCESS_ADDRESS_OFST 20
6712
6713/* MC_CMD_DPCPU_RPC_OUT msgresponse */
6714#define MC_CMD_DPCPU_RPC_OUT_LEN 36
6715#define MC_CMD_DPCPU_RPC_OUT_RC_OFST 0
6716/* DATA */
6717#define MC_CMD_DPCPU_RPC_OUT_DATA_OFST 4
6718#define MC_CMD_DPCPU_RPC_OUT_DATA_LEN 32
6719#define MC_CMD_DPCPU_RPC_OUT_HDR_CMD_RESP_ERRCODE_LBN 32
6720#define MC_CMD_DPCPU_RPC_OUT_HDR_CMD_RESP_ERRCODE_WIDTH 16
6721#define MC_CMD_DPCPU_RPC_OUT_CSR_ACCESS_READ_COUNT_LBN 48
6722#define MC_CMD_DPCPU_RPC_OUT_CSR_ACCESS_READ_COUNT_WIDTH 16
6723#define MC_CMD_DPCPU_RPC_OUT_RDATA_OFST 12
6724#define MC_CMD_DPCPU_RPC_OUT_RDATA_LEN 24
6725#define MC_CMD_DPCPU_RPC_OUT_CSR_ACCESS_READ_VAL_1_OFST 12
6726#define MC_CMD_DPCPU_RPC_OUT_CSR_ACCESS_READ_VAL_2_OFST 16
6727#define MC_CMD_DPCPU_RPC_OUT_CSR_ACCESS_READ_VAL_3_OFST 20
6728#define MC_CMD_DPCPU_RPC_OUT_CSR_ACCESS_READ_VAL_4_OFST 24
6729
6730
6731/***********************************/
6732/* MC_CMD_TRIGGER_INTERRUPT
6733 * Trigger an interrupt by prodding the BIU.
6734 */
6735#define MC_CMD_TRIGGER_INTERRUPT 0xe3
6736
6737/* MC_CMD_TRIGGER_INTERRUPT_IN msgrequest */
6738#define MC_CMD_TRIGGER_INTERRUPT_IN_LEN 4
6739/* Interrupt level relative to base for function. */
6740#define MC_CMD_TRIGGER_INTERRUPT_IN_INTR_LEVEL_OFST 0
6741
6742/* MC_CMD_TRIGGER_INTERRUPT_OUT msgresponse */
6743#define MC_CMD_TRIGGER_INTERRUPT_OUT_LEN 0
6744
6745
6746/***********************************/
6747/* MC_CMD_DUMP_DO
6748 * Take a dump of the DUT state
6749 */
6750#define MC_CMD_DUMP_DO 0xe8
6751
6752/* MC_CMD_DUMP_DO_IN msgrequest */
6753#define MC_CMD_DUMP_DO_IN_LEN 52
6754#define MC_CMD_DUMP_DO_IN_PADDING_OFST 0
6755#define MC_CMD_DUMP_DO_IN_DUMPSPEC_SRC_OFST 4
6756#define MC_CMD_DUMP_DO_IN_DUMPSPEC_SRC_CUSTOM 0x0 /* enum */
6757#define MC_CMD_DUMP_DO_IN_DUMPSPEC_SRC_DEFAULT 0x1 /* enum */
6758#define MC_CMD_DUMP_DO_IN_DUMPSPEC_SRC_CUSTOM_TYPE_OFST 8
6759#define MC_CMD_DUMP_DO_IN_DUMP_LOCATION_NVRAM 0x1 /* enum */
6760#define MC_CMD_DUMP_DO_IN_DUMP_LOCATION_HOST_MEMORY 0x2 /* enum */
6761#define MC_CMD_DUMP_DO_IN_DUMP_LOCATION_HOST_MEMORY_MLI 0x3 /* enum */
6762#define MC_CMD_DUMP_DO_IN_DUMP_LOCATION_UART 0x4 /* enum */
6763#define MC_CMD_DUMP_DO_IN_DUMPSPEC_SRC_CUSTOM_NVRAM_PARTITION_TYPE_ID_OFST 12
6764#define MC_CMD_DUMP_DO_IN_DUMPSPEC_SRC_CUSTOM_NVRAM_OFFSET_OFST 16
6765#define MC_CMD_DUMP_DO_IN_DUMPSPEC_SRC_CUSTOM_HOST_MEMORY_ADDR_LO_OFST 12
6766#define MC_CMD_DUMP_DO_IN_DUMPSPEC_SRC_CUSTOM_HOST_MEMORY_ADDR_HI_OFST 16
6767#define MC_CMD_DUMP_DO_IN_DUMPSPEC_SRC_CUSTOM_HOST_MEMORY_MLI_ROOT_ADDR_LO_OFST 12
6768#define MC_CMD_DUMP_DO_IN_HOST_MEMORY_MLI_PAGE_SIZE 0x1000 /* enum */
6769#define MC_CMD_DUMP_DO_IN_DUMPSPEC_SRC_CUSTOM_HOST_MEMORY_MLI_ROOT_ADDR_HI_OFST 16
6770#define MC_CMD_DUMP_DO_IN_DUMPSPEC_SRC_CUSTOM_HOST_MEMORY_MLI_DEPTH_OFST 20
6771#define MC_CMD_DUMP_DO_IN_HOST_MEMORY_MLI_MAX_DEPTH 0x2 /* enum */
6772#define MC_CMD_DUMP_DO_IN_DUMPSPEC_SRC_CUSTOM_UART_PORT_OFST 12
6773#define MC_CMD_DUMP_DO_IN_DUMPSPEC_SRC_CUSTOM_SIZE_OFST 24
6774#define MC_CMD_DUMP_DO_IN_DUMPFILE_DST_OFST 28
6775#define MC_CMD_DUMP_DO_IN_DUMPFILE_DST_CUSTOM 0x0 /* enum */
6776#define MC_CMD_DUMP_DO_IN_DUMPFILE_DST_NVRAM_DUMP_PARTITION 0x1 /* enum */
6777#define MC_CMD_DUMP_DO_IN_DUMPFILE_DST_CUSTOM_TYPE_OFST 32
6778/* Enum values, see field(s): */
6779/* MC_CMD_DUMP_DO_IN/DUMPSPEC_SRC_CUSTOM_TYPE */
6780#define MC_CMD_DUMP_DO_IN_DUMPFILE_DST_CUSTOM_NVRAM_PARTITION_TYPE_ID_OFST 36
6781#define MC_CMD_DUMP_DO_IN_DUMPFILE_DST_CUSTOM_NVRAM_OFFSET_OFST 40
6782#define MC_CMD_DUMP_DO_IN_DUMPFILE_DST_CUSTOM_HOST_MEMORY_ADDR_LO_OFST 36
6783#define MC_CMD_DUMP_DO_IN_DUMPFILE_DST_CUSTOM_HOST_MEMORY_ADDR_HI_OFST 40
6784#define MC_CMD_DUMP_DO_IN_DUMPFILE_DST_CUSTOM_HOST_MEMORY_MLI_ROOT_ADDR_LO_OFST 36
6785#define MC_CMD_DUMP_DO_IN_DUMPFILE_DST_CUSTOM_HOST_MEMORY_MLI_ROOT_ADDR_HI_OFST 40
6786#define MC_CMD_DUMP_DO_IN_DUMPFILE_DST_CUSTOM_HOST_MEMORY_MLI_DEPTH_OFST 44
6787#define MC_CMD_DUMP_DO_IN_DUMPFILE_DST_CUSTOM_UART_PORT_OFST 36
6788#define MC_CMD_DUMP_DO_IN_DUMPFILE_DST_CUSTOM_SIZE_OFST 48
6789
6790/* MC_CMD_DUMP_DO_OUT msgresponse */
6791#define MC_CMD_DUMP_DO_OUT_LEN 4
6792#define MC_CMD_DUMP_DO_OUT_DUMPFILE_SIZE_OFST 0
6793
6794
6795/***********************************/
6796/* MC_CMD_DUMP_CONFIGURE_UNSOLICITED
6797 * Configure unsolicited dumps
6798 */
6799#define MC_CMD_DUMP_CONFIGURE_UNSOLICITED 0xe9
6800
6801/* MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN msgrequest */
6802#define MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_LEN 52
6803#define MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_ENABLE_OFST 0
6804#define MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPSPEC_SRC_OFST 4
6805/* Enum values, see field(s): */
6806/* MC_CMD_DUMP_DO/MC_CMD_DUMP_DO_IN/DUMPSPEC_SRC */
6807#define MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPSPEC_SRC_CUSTOM_TYPE_OFST 8
6808/* Enum values, see field(s): */
6809/* MC_CMD_DUMP_DO/MC_CMD_DUMP_DO_IN/DUMPSPEC_SRC_CUSTOM_TYPE */
6810#define MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPSPEC_SRC_CUSTOM_NVRAM_PARTITION_TYPE_ID_OFST 12
6811#define MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPSPEC_SRC_CUSTOM_NVRAM_OFFSET_OFST 16
6812#define MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPSPEC_SRC_CUSTOM_HOST_MEMORY_ADDR_LO_OFST 12
6813#define MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPSPEC_SRC_CUSTOM_HOST_MEMORY_ADDR_HI_OFST 16
6814#define MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPSPEC_SRC_CUSTOM_HOST_MEMORY_MLI_ROOT_ADDR_LO_OFST 12
6815#define MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPSPEC_SRC_CUSTOM_HOST_MEMORY_MLI_ROOT_ADDR_HI_OFST 16
6816#define MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPSPEC_SRC_CUSTOM_HOST_MEMORY_MLI_DEPTH_OFST 20
6817#define MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPSPEC_SRC_CUSTOM_UART_PORT_OFST 12
6818#define MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPSPEC_SRC_CUSTOM_SIZE_OFST 24
6819#define MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPFILE_DST_OFST 28
6820/* Enum values, see field(s): */
6821/* MC_CMD_DUMP_DO/MC_CMD_DUMP_DO_IN/DUMPFILE_DST */
6822#define MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPFILE_DST_CUSTOM_TYPE_OFST 32
6823/* Enum values, see field(s): */
6824/* MC_CMD_DUMP_DO/MC_CMD_DUMP_DO_IN/DUMPSPEC_SRC_CUSTOM_TYPE */
6825#define MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPFILE_DST_CUSTOM_NVRAM_PARTITION_TYPE_ID_OFST 36
6826#define MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPFILE_DST_CUSTOM_NVRAM_OFFSET_OFST 40
6827#define MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPFILE_DST_CUSTOM_HOST_MEMORY_ADDR_LO_OFST 36
6828#define MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPFILE_DST_CUSTOM_HOST_MEMORY_ADDR_HI_OFST 40
6829#define MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPFILE_DST_CUSTOM_HOST_MEMORY_MLI_ROOT_ADDR_LO_OFST 36
6830#define MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPFILE_DST_CUSTOM_HOST_MEMORY_MLI_ROOT_ADDR_HI_OFST 40
6831#define MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPFILE_DST_CUSTOM_HOST_MEMORY_MLI_DEPTH_OFST 44
6832#define MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPFILE_DST_CUSTOM_UART_PORT_OFST 36
6833#define MC_CMD_DUMP_CONFIGURE_UNSOLICITED_IN_DUMPFILE_DST_CUSTOM_SIZE_OFST 48
6834
6835
6836/***********************************/
6837/* MC_CMD_SET_PSU
6838 * Adjusts power supply parameters. This is a warranty-voiding operation.
6839 * Returns: ENOENT if the parameter or rail specified does not exist, EINVAL if
6840 * the parameter is out of range.
6841 */
6842#define MC_CMD_SET_PSU 0xea
6843
6844/* MC_CMD_SET_PSU_IN msgrequest */
6845#define MC_CMD_SET_PSU_IN_LEN 12
6846#define MC_CMD_SET_PSU_IN_PARAM_OFST 0
6847#define MC_CMD_SET_PSU_IN_PARAM_SUPPLY_VOLTAGE 0x0 /* enum */
6848#define MC_CMD_SET_PSU_IN_RAIL_OFST 4
6849#define MC_CMD_SET_PSU_IN_RAIL_0V9 0x0 /* enum */
6850#define MC_CMD_SET_PSU_IN_RAIL_1V2 0x1 /* enum */
6851/* desired value, eg voltage in mV */
6852#define MC_CMD_SET_PSU_IN_VALUE_OFST 8
6853
6854/* MC_CMD_SET_PSU_OUT msgresponse */
6855#define MC_CMD_SET_PSU_OUT_LEN 0
6856
6857
6858/***********************************/
6859/* MC_CMD_GET_FUNCTION_INFO
6860 * Get function information. PF and VF number.
6861 */
6862#define MC_CMD_GET_FUNCTION_INFO 0xec
6863
6864/* MC_CMD_GET_FUNCTION_INFO_IN msgrequest */
6865#define MC_CMD_GET_FUNCTION_INFO_IN_LEN 0
6866
6867/* MC_CMD_GET_FUNCTION_INFO_OUT msgresponse */
6868#define MC_CMD_GET_FUNCTION_INFO_OUT_LEN 8
6869#define MC_CMD_GET_FUNCTION_INFO_OUT_PF_OFST 0
6870#define MC_CMD_GET_FUNCTION_INFO_OUT_VF_OFST 4
6871
6872
6873/***********************************/
6874/* MC_CMD_ENABLE_OFFLINE_BIST
6875 * Enters offline BIST mode. All queues are torn down, chip enters quiescent
6876 * mode, calling function gets exclusive MCDI ownership. The only way out is
6877 * reboot.
6878 */
6879#define MC_CMD_ENABLE_OFFLINE_BIST 0xed
6880
6881/* MC_CMD_ENABLE_OFFLINE_BIST_IN msgrequest */
6882#define MC_CMD_ENABLE_OFFLINE_BIST_IN_LEN 0
6883
6884/* MC_CMD_ENABLE_OFFLINE_BIST_OUT msgresponse */
6885#define MC_CMD_ENABLE_OFFLINE_BIST_OUT_LEN 0
6886
6887
6888/***********************************/
6889/* MC_CMD_START_KR_EYE_PLOT
6890 * Start KR Serdes Eye diagram plot on a given lane. Lane must have valid
6891 * signal.
6892 */
6893#define MC_CMD_START_KR_EYE_PLOT 0xee
6894
6895/* MC_CMD_START_KR_EYE_PLOT_IN msgrequest */
6896#define MC_CMD_START_KR_EYE_PLOT_IN_LEN 4
6897#define MC_CMD_START_KR_EYE_PLOT_IN_LANE_OFST 0
6898
6899/* MC_CMD_START_KR_EYE_PLOT_OUT msgresponse */
6900#define MC_CMD_START_KR_EYE_PLOT_OUT_LEN 0
6901
6902
6903/***********************************/
6904/* MC_CMD_POLL_KR_EYE_PLOT
6905 * Poll KR Serdes Eye diagram plot. Returns one row of BER data. The caller
6906 * should call this command repeatedly after starting eye plot, until no more
6907 * data is returned.
6908 */
6909#define MC_CMD_POLL_KR_EYE_PLOT 0xef
6910
6911/* MC_CMD_POLL_KR_EYE_PLOT_IN msgrequest */
6912#define MC_CMD_POLL_KR_EYE_PLOT_IN_LEN 0
6913
6914/* MC_CMD_POLL_KR_EYE_PLOT_OUT msgresponse */
6915#define MC_CMD_POLL_KR_EYE_PLOT_OUT_LENMIN 0
6916#define MC_CMD_POLL_KR_EYE_PLOT_OUT_LENMAX 252
6917#define MC_CMD_POLL_KR_EYE_PLOT_OUT_LEN(num) (0+2*(num))
6918#define MC_CMD_POLL_KR_EYE_PLOT_OUT_SAMPLES_OFST 0
6919#define MC_CMD_POLL_KR_EYE_PLOT_OUT_SAMPLES_LEN 2
6920#define MC_CMD_POLL_KR_EYE_PLOT_OUT_SAMPLES_MINNUM 0
6921#define MC_CMD_POLL_KR_EYE_PLOT_OUT_SAMPLES_MAXNUM 126
6922
6923
6924/***********************************/
6925/* MC_CMD_READ_FUSES
6926 * Read data programmed into the device One-Time-Programmable (OTP) Fuses
6927 */
6928#define MC_CMD_READ_FUSES 0xf0
6929
6930/* MC_CMD_READ_FUSES_IN msgrequest */
6931#define MC_CMD_READ_FUSES_IN_LEN 8
6932/* Offset in OTP to read */
6933#define MC_CMD_READ_FUSES_IN_OFFSET_OFST 0
6934/* Length of data to read in bytes */
6935#define MC_CMD_READ_FUSES_IN_LENGTH_OFST 4
6936
6937/* MC_CMD_READ_FUSES_OUT msgresponse */
6938#define MC_CMD_READ_FUSES_OUT_LENMIN 4
6939#define MC_CMD_READ_FUSES_OUT_LENMAX 252
6940#define MC_CMD_READ_FUSES_OUT_LEN(num) (4+1*(num))
6941/* Length of returned OTP data in bytes */
6942#define MC_CMD_READ_FUSES_OUT_LENGTH_OFST 0
6943/* Returned data */
6944#define MC_CMD_READ_FUSES_OUT_DATA_OFST 4
6945#define MC_CMD_READ_FUSES_OUT_DATA_LEN 1
6946#define MC_CMD_READ_FUSES_OUT_DATA_MINNUM 0
6947#define MC_CMD_READ_FUSES_OUT_DATA_MAXNUM 248
6948
6949
6950/***********************************/
6951/* MC_CMD_KR_TUNE
6952 * Get or set KR Serdes RXEQ and TX Driver settings
6953 */
6954#define MC_CMD_KR_TUNE 0xf1
6955
6956/* MC_CMD_KR_TUNE_IN msgrequest */
6957#define MC_CMD_KR_TUNE_IN_LENMIN 4
6958#define MC_CMD_KR_TUNE_IN_LENMAX 252
6959#define MC_CMD_KR_TUNE_IN_LEN(num) (4+4*(num))
6960/* Requested operation */
6961#define MC_CMD_KR_TUNE_IN_KR_TUNE_OP_OFST 0
6962#define MC_CMD_KR_TUNE_IN_KR_TUNE_OP_LEN 1
6963/* enum: Get current RXEQ settings */
6964#define MC_CMD_KR_TUNE_IN_RXEQ_GET 0x0
6965/* enum: Override RXEQ settings */
6966#define MC_CMD_KR_TUNE_IN_RXEQ_SET 0x1
6967/* enum: Get current TX Driver settings */
6968#define MC_CMD_KR_TUNE_IN_TXEQ_GET 0x2
6969/* enum: Override TX Driver settings */
6970#define MC_CMD_KR_TUNE_IN_TXEQ_SET 0x3
6971/* enum: Force KR Serdes reset / recalibration */
6972#define MC_CMD_KR_TUNE_IN_RECAL 0x4
6973/* Align the arguments to 32 bits */
6974#define MC_CMD_KR_TUNE_IN_KR_TUNE_RSVD_OFST 1
6975#define MC_CMD_KR_TUNE_IN_KR_TUNE_RSVD_LEN 3
6976/* Arguments specific to the operation */
6977#define MC_CMD_KR_TUNE_IN_KR_TUNE_ARGS_OFST 4
6978#define MC_CMD_KR_TUNE_IN_KR_TUNE_ARGS_LEN 4
6979#define MC_CMD_KR_TUNE_IN_KR_TUNE_ARGS_MINNUM 0
6980#define MC_CMD_KR_TUNE_IN_KR_TUNE_ARGS_MAXNUM 62
6981
6982/* MC_CMD_KR_TUNE_OUT msgresponse */
6983#define MC_CMD_KR_TUNE_OUT_LEN 0
6984
6985/* MC_CMD_KR_TUNE_RXEQ_GET_IN msgrequest */
6986#define MC_CMD_KR_TUNE_RXEQ_GET_IN_LEN 4
6987/* Requested operation */
6988#define MC_CMD_KR_TUNE_RXEQ_GET_IN_KR_TUNE_OP_OFST 0
6989#define MC_CMD_KR_TUNE_RXEQ_GET_IN_KR_TUNE_OP_LEN 1
6990/* Align the arguments to 32 bits */
6991#define MC_CMD_KR_TUNE_RXEQ_GET_IN_KR_TUNE_RSVD_OFST 1
6992#define MC_CMD_KR_TUNE_RXEQ_GET_IN_KR_TUNE_RSVD_LEN 3
6993
6994/* MC_CMD_KR_TUNE_RXEQ_GET_OUT msgresponse */
6995#define MC_CMD_KR_TUNE_RXEQ_GET_OUT_LENMIN 4
6996#define MC_CMD_KR_TUNE_RXEQ_GET_OUT_LENMAX 252
6997#define MC_CMD_KR_TUNE_RXEQ_GET_OUT_LEN(num) (0+4*(num))
6998/* RXEQ Parameter */
6999#define MC_CMD_KR_TUNE_RXEQ_GET_OUT_PARAM_OFST 0
7000#define MC_CMD_KR_TUNE_RXEQ_GET_OUT_PARAM_LEN 4
7001#define MC_CMD_KR_TUNE_RXEQ_GET_OUT_PARAM_MINNUM 1
7002#define MC_CMD_KR_TUNE_RXEQ_GET_OUT_PARAM_MAXNUM 63
7003#define MC_CMD_KR_TUNE_RXEQ_GET_OUT_PARAM_ID_LBN 0
7004#define MC_CMD_KR_TUNE_RXEQ_GET_OUT_PARAM_ID_WIDTH 8
7005/* enum: Attenuation (0-15) */
7006#define MC_CMD_KR_TUNE_RXEQ_GET_OUT_ATT 0x0
7007/* enum: CTLE Boost (0-15) */
7008#define MC_CMD_KR_TUNE_RXEQ_GET_OUT_BOOST 0x1
7009/* enum: Edge DFE Tap1 (0 - max negative, 64 - zero, 127 - max positive) */
7010#define MC_CMD_KR_TUNE_RXEQ_GET_OUT_EDFE_TAP1 0x2
7011/* enum: Edge DFE Tap2 (0 - max negative, 32 - zero, 63 - max positive) */
7012#define MC_CMD_KR_TUNE_RXEQ_GET_OUT_EDFE_TAP2 0x3
7013/* enum: Edge DFE Tap3 (0 - max negative, 32 - zero, 63 - max positive) */
7014#define MC_CMD_KR_TUNE_RXEQ_GET_OUT_EDFE_TAP3 0x4
7015/* enum: Edge DFE Tap4 (0 - max negative, 32 - zero, 63 - max positive) */
7016#define MC_CMD_KR_TUNE_RXEQ_GET_OUT_EDFE_TAP4 0x5
7017/* enum: Edge DFE Tap5 (0 - max negative, 32 - zero, 63 - max positive) */
7018#define MC_CMD_KR_TUNE_RXEQ_GET_OUT_EDFE_TAP5 0x6
7019#define MC_CMD_KR_TUNE_RXEQ_GET_OUT_PARAM_LANE_LBN 8
7020#define MC_CMD_KR_TUNE_RXEQ_GET_OUT_PARAM_LANE_WIDTH 3
7021#define MC_CMD_KR_TUNE_RXEQ_GET_OUT_LANE_0 0x0 /* enum */
7022#define MC_CMD_KR_TUNE_RXEQ_GET_OUT_LANE_1 0x1 /* enum */
7023#define MC_CMD_KR_TUNE_RXEQ_GET_OUT_LANE_2 0x2 /* enum */
7024#define MC_CMD_KR_TUNE_RXEQ_GET_OUT_LANE_3 0x3 /* enum */
7025#define MC_CMD_KR_TUNE_RXEQ_GET_OUT_LANE_ALL 0x4 /* enum */
7026#define MC_CMD_KR_TUNE_RXEQ_GET_OUT_PARAM_AUTOCAL_LBN 11
7027#define MC_CMD_KR_TUNE_RXEQ_GET_OUT_PARAM_AUTOCAL_WIDTH 1
7028#define MC_CMD_KR_TUNE_RXEQ_GET_OUT_RESERVED_LBN 12
7029#define MC_CMD_KR_TUNE_RXEQ_GET_OUT_RESERVED_WIDTH 4
7030#define MC_CMD_KR_TUNE_RXEQ_GET_OUT_PARAM_INITIAL_LBN 16
7031#define MC_CMD_KR_TUNE_RXEQ_GET_OUT_PARAM_INITIAL_WIDTH 8
7032#define MC_CMD_KR_TUNE_RXEQ_GET_OUT_PARAM_CURRENT_LBN 24
7033#define MC_CMD_KR_TUNE_RXEQ_GET_OUT_PARAM_CURRENT_WIDTH 8
7034
7035/* MC_CMD_KR_TUNE_RXEQ_SET_IN msgrequest */
7036#define MC_CMD_KR_TUNE_RXEQ_SET_IN_LENMIN 8
7037#define MC_CMD_KR_TUNE_RXEQ_SET_IN_LENMAX 252
7038#define MC_CMD_KR_TUNE_RXEQ_SET_IN_LEN(num) (4+4*(num))
7039/* Requested operation */
7040#define MC_CMD_KR_TUNE_RXEQ_SET_IN_KR_TUNE_OP_OFST 0
7041#define MC_CMD_KR_TUNE_RXEQ_SET_IN_KR_TUNE_OP_LEN 1
7042/* Align the arguments to 32 bits */
7043#define MC_CMD_KR_TUNE_RXEQ_SET_IN_KR_TUNE_RSVD_OFST 1
7044#define MC_CMD_KR_TUNE_RXEQ_SET_IN_KR_TUNE_RSVD_LEN 3
7045/* RXEQ Parameter */
7046#define MC_CMD_KR_TUNE_RXEQ_SET_IN_PARAM_OFST 4
7047#define MC_CMD_KR_TUNE_RXEQ_SET_IN_PARAM_LEN 4
7048#define MC_CMD_KR_TUNE_RXEQ_SET_IN_PARAM_MINNUM 1
7049#define MC_CMD_KR_TUNE_RXEQ_SET_IN_PARAM_MAXNUM 62
7050#define MC_CMD_KR_TUNE_RXEQ_SET_IN_PARAM_ID_LBN 0
7051#define MC_CMD_KR_TUNE_RXEQ_SET_IN_PARAM_ID_WIDTH 8
7052/* Enum values, see field(s): */
7053/* MC_CMD_KR_TUNE_RXEQ_GET_OUT/PARAM_ID */
7054#define MC_CMD_KR_TUNE_RXEQ_SET_IN_PARAM_LANE_LBN 8
7055#define MC_CMD_KR_TUNE_RXEQ_SET_IN_PARAM_LANE_WIDTH 3
7056/* Enum values, see field(s): */
7057/* MC_CMD_KR_TUNE_RXEQ_GET_OUT/PARAM_LANE */
7058#define MC_CMD_KR_TUNE_RXEQ_SET_IN_PARAM_AUTOCAL_LBN 11
7059#define MC_CMD_KR_TUNE_RXEQ_SET_IN_PARAM_AUTOCAL_WIDTH 1
7060#define MC_CMD_KR_TUNE_RXEQ_SET_IN_RESERVED_LBN 12
7061#define MC_CMD_KR_TUNE_RXEQ_SET_IN_RESERVED_WIDTH 4
7062#define MC_CMD_KR_TUNE_RXEQ_SET_IN_PARAM_INITIAL_LBN 16
7063#define MC_CMD_KR_TUNE_RXEQ_SET_IN_PARAM_INITIAL_WIDTH 8
7064#define MC_CMD_KR_TUNE_RXEQ_SET_IN_RESERVED2_LBN 24
7065#define MC_CMD_KR_TUNE_RXEQ_SET_IN_RESERVED2_WIDTH 8
7066
7067/* MC_CMD_KR_TUNE_RXEQ_SET_OUT msgresponse */
7068#define MC_CMD_KR_TUNE_RXEQ_SET_OUT_LEN 0
7069
7070/* MC_CMD_KR_TUNE_RECAL_IN msgrequest */
7071#define MC_CMD_KR_TUNE_RECAL_IN_LEN 4
7072/* Requested operation */
7073#define MC_CMD_KR_TUNE_RECAL_IN_KR_TUNE_OP_OFST 0
7074#define MC_CMD_KR_TUNE_RECAL_IN_KR_TUNE_OP_LEN 1
7075/* Align the arguments to 32 bits */
7076#define MC_CMD_KR_TUNE_RECAL_IN_KR_TUNE_RSVD_OFST 1
7077#define MC_CMD_KR_TUNE_RECAL_IN_KR_TUNE_RSVD_LEN 3
7078
7079/* MC_CMD_KR_TUNE_RECAL_OUT msgresponse */
7080#define MC_CMD_KR_TUNE_RECAL_OUT_LEN 0
7081
7082
7083/***********************************/
7084/* MC_CMD_PCIE_TUNE
7085 * Get or set PCIE Serdes RXEQ and TX Driver settings
7086 */
7087#define MC_CMD_PCIE_TUNE 0xf2
7088
7089/* MC_CMD_PCIE_TUNE_IN msgrequest */
7090#define MC_CMD_PCIE_TUNE_IN_LENMIN 4
7091#define MC_CMD_PCIE_TUNE_IN_LENMAX 252
7092#define MC_CMD_PCIE_TUNE_IN_LEN(num) (4+4*(num))
7093/* Requested operation */
7094#define MC_CMD_PCIE_TUNE_IN_PCIE_TUNE_OP_OFST 0
7095#define MC_CMD_PCIE_TUNE_IN_PCIE_TUNE_OP_LEN 1
7096/* enum: Get current RXEQ settings */
7097#define MC_CMD_PCIE_TUNE_IN_RXEQ_GET 0x0
7098/* enum: Override RXEQ settings */
7099#define MC_CMD_PCIE_TUNE_IN_RXEQ_SET 0x1
7100/* enum: Get current TX Driver settings */
7101#define MC_CMD_PCIE_TUNE_IN_TXEQ_GET 0x2
7102/* enum: Override TX Driver settings */
7103#define MC_CMD_PCIE_TUNE_IN_TXEQ_SET 0x3
7104/* Align the arguments to 32 bits */
7105#define MC_CMD_PCIE_TUNE_IN_PCIE_TUNE_RSVD_OFST 1
7106#define MC_CMD_PCIE_TUNE_IN_PCIE_TUNE_RSVD_LEN 3
7107/* Arguments specific to the operation */
7108#define MC_CMD_PCIE_TUNE_IN_PCIE_TUNE_ARGS_OFST 4
7109#define MC_CMD_PCIE_TUNE_IN_PCIE_TUNE_ARGS_LEN 4
7110#define MC_CMD_PCIE_TUNE_IN_PCIE_TUNE_ARGS_MINNUM 0
7111#define MC_CMD_PCIE_TUNE_IN_PCIE_TUNE_ARGS_MAXNUM 62
7112
7113/* MC_CMD_PCIE_TUNE_OUT msgresponse */
7114#define MC_CMD_PCIE_TUNE_OUT_LEN 0
7115
7116/* MC_CMD_PCIE_TUNE_RXEQ_GET_IN msgrequest */
7117#define MC_CMD_PCIE_TUNE_RXEQ_GET_IN_LEN 4
7118/* Requested operation */
7119#define MC_CMD_PCIE_TUNE_RXEQ_GET_IN_PCIE_TUNE_OP_OFST 0
7120#define MC_CMD_PCIE_TUNE_RXEQ_GET_IN_PCIE_TUNE_OP_LEN 1
7121/* Align the arguments to 32 bits */
7122#define MC_CMD_PCIE_TUNE_RXEQ_GET_IN_PCIE_TUNE_RSVD_OFST 1
7123#define MC_CMD_PCIE_TUNE_RXEQ_GET_IN_PCIE_TUNE_RSVD_LEN 3
7124
7125/* MC_CMD_PCIE_TUNE_RXEQ_GET_OUT msgresponse */
7126#define MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_LENMIN 4
7127#define MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_LENMAX 252
7128#define MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_LEN(num) (0+4*(num))
7129/* RXEQ Parameter */
7130#define MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_PARAM_OFST 0
7131#define MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_PARAM_LEN 4
7132#define MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_PARAM_MINNUM 1
7133#define MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_PARAM_MAXNUM 63
7134#define MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_PARAM_ID_LBN 0
7135#define MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_PARAM_ID_WIDTH 8
7136/* enum: Attenuation (0-15) */
7137#define MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_ATT 0x0
7138/* enum: CTLE Boost (0-15) */
7139#define MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_BOOST 0x1
7140/* enum: DFE Tap1 (0 - max negative, 64 - zero, 127 - max positive) */
7141#define MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_DFE_TAP1 0x2
7142/* enum: DFE Tap2 (0 - max negative, 32 - zero, 63 - max positive) */
7143#define MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_DFE_TAP2 0x3
7144/* enum: DFE Tap3 (0 - max negative, 32 - zero, 63 - max positive) */
7145#define MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_DFE_TAP3 0x4
7146/* enum: DFE Tap4 (0 - max negative, 32 - zero, 63 - max positive) */
7147#define MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_DFE_TAP4 0x5
7148/* enum: DFE Tap5 (0 - max negative, 32 - zero, 63 - max positive) */
7149#define MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_DFE_TAP5 0x6
7150#define MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_PARAM_LANE_LBN 8
7151#define MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_PARAM_LANE_WIDTH 4
7152#define MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_LANE_0 0x0 /* enum */
7153#define MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_LANE_1 0x1 /* enum */
7154#define MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_LANE_2 0x2 /* enum */
7155#define MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_LANE_3 0x3 /* enum */
7156#define MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_LANE_4 0x4 /* enum */
7157#define MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_LANE_5 0x5 /* enum */
7158#define MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_LANE_6 0x6 /* enum */
7159#define MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_LANE_7 0x7 /* enum */
7160#define MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_LANE_ALL 0x8 /* enum */
7161#define MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_RESERVED_LBN 12
7162#define MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_RESERVED_WIDTH 12
7163#define MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_PARAM_CURRENT_LBN 24
7164#define MC_CMD_PCIE_TUNE_RXEQ_GET_OUT_PARAM_CURRENT_WIDTH 8
7165
7166/* MC_CMD_PCIE_TUNE_TXEQ_GET_IN msgrequest */
7167#define MC_CMD_PCIE_TUNE_TXEQ_GET_IN_LEN 4
7168/* Requested operation */
7169#define MC_CMD_PCIE_TUNE_TXEQ_GET_IN_PCIE_TUNE_OP_OFST 0
7170#define MC_CMD_PCIE_TUNE_TXEQ_GET_IN_PCIE_TUNE_OP_LEN 1
7171/* Align the arguments to 32 bits */
7172#define MC_CMD_PCIE_TUNE_TXEQ_GET_IN_PCIE_TUNE_RSVD_OFST 1
7173#define MC_CMD_PCIE_TUNE_TXEQ_GET_IN_PCIE_TUNE_RSVD_LEN 3
7174
7175/* MC_CMD_PCIE_TUNE_TXEQ_GET_OUT msgresponse */
7176#define MC_CMD_PCIE_TUNE_TXEQ_GET_OUT_LENMIN 4
7177#define MC_CMD_PCIE_TUNE_TXEQ_GET_OUT_LENMAX 252
7178#define MC_CMD_PCIE_TUNE_TXEQ_GET_OUT_LEN(num) (0+4*(num))
7179/* RXEQ Parameter */
7180#define MC_CMD_PCIE_TUNE_TXEQ_GET_OUT_PARAM_OFST 0
7181#define MC_CMD_PCIE_TUNE_TXEQ_GET_OUT_PARAM_LEN 4
7182#define MC_CMD_PCIE_TUNE_TXEQ_GET_OUT_PARAM_MINNUM 1
7183#define MC_CMD_PCIE_TUNE_TXEQ_GET_OUT_PARAM_MAXNUM 63
7184#define MC_CMD_PCIE_TUNE_TXEQ_GET_OUT_PARAM_ID_LBN 0
7185#define MC_CMD_PCIE_TUNE_TXEQ_GET_OUT_PARAM_ID_WIDTH 8
7186/* enum: TxMargin (PIPE) */
7187#define MC_CMD_PCIE_TUNE_TXEQ_GET_OUT_TXMARGIN 0x0
7188/* enum: TxSwing (PIPE) */
7189#define MC_CMD_PCIE_TUNE_TXEQ_GET_OUT_TXSWING 0x1
7190/* enum: De-emphasis coefficient C(-1) (PIPE) */
7191#define MC_CMD_PCIE_TUNE_TXEQ_GET_OUT_CM1 0x2
7192/* enum: De-emphasis coefficient C(0) (PIPE) */
7193#define MC_CMD_PCIE_TUNE_TXEQ_GET_OUT_C0 0x3
7194/* enum: De-emphasis coefficient C(+1) (PIPE) */
7195#define MC_CMD_PCIE_TUNE_TXEQ_GET_OUT_CP1 0x4
7196#define MC_CMD_PCIE_TUNE_TXEQ_GET_OUT_PARAM_LANE_LBN 8
7197#define MC_CMD_PCIE_TUNE_TXEQ_GET_OUT_PARAM_LANE_WIDTH 4
7198/* Enum values, see field(s): */
7199/* MC_CMD_PCIE_TUNE_RXEQ_GET_OUT/PARAM_LANE */
7200#define MC_CMD_PCIE_TUNE_TXEQ_GET_OUT_RESERVED_LBN 12
7201#define MC_CMD_PCIE_TUNE_TXEQ_GET_OUT_RESERVED_WIDTH 12
7202#define MC_CMD_PCIE_TUNE_TXEQ_GET_OUT_PARAM_CURRENT_LBN 24
7203#define MC_CMD_PCIE_TUNE_TXEQ_GET_OUT_PARAM_CURRENT_WIDTH 8
7204
7205
7206/***********************************/
7207/* MC_CMD_LICENSING
7208 * Operations on the NVRAM_PARTITION_TYPE_LICENSE application license partition
7209 */
7210#define MC_CMD_LICENSING 0xf3
7211
7212/* MC_CMD_LICENSING_IN msgrequest */
7213#define MC_CMD_LICENSING_IN_LEN 4
7214/* identifies the type of operation requested */
7215#define MC_CMD_LICENSING_IN_OP_OFST 0
7216/* enum: re-read and apply licenses after a license key partition update; note
7217 * that this operation returns a zero-length response
7218 */
7219#define MC_CMD_LICENSING_IN_OP_UPDATE_LICENSE 0x0
7220/* enum: report counts of installed licenses */
7221#define MC_CMD_LICENSING_IN_OP_GET_KEY_STATS 0x1
7222
7223/* MC_CMD_LICENSING_OUT msgresponse */
7224#define MC_CMD_LICENSING_OUT_LEN 28
7225/* count of application keys which are valid */
7226#define MC_CMD_LICENSING_OUT_VALID_APP_KEYS_OFST 0
7227/* sum of UNVERIFIABLE_APP_KEYS + WRONG_NODE_APP_KEYS (for compatibility with
7228 * MC_CMD_FC_OP_LICENSE)
7229 */
7230#define MC_CMD_LICENSING_OUT_INVALID_APP_KEYS_OFST 4
7231/* count of application keys which are invalid due to being blacklisted */
7232#define MC_CMD_LICENSING_OUT_BLACKLISTED_APP_KEYS_OFST 8
7233/* count of application keys which are invalid due to being unverifiable */
7234#define MC_CMD_LICENSING_OUT_UNVERIFIABLE_APP_KEYS_OFST 12
7235/* count of application keys which are invalid due to being for the wrong node
7236 */
7237#define MC_CMD_LICENSING_OUT_WRONG_NODE_APP_KEYS_OFST 16
7238/* licensing state (for diagnostics; the exact meaning of the bits in this
7239 * field are private to the firmware)
7240 */
7241#define MC_CMD_LICENSING_OUT_LICENSING_STATE_OFST 20
7242/* licensing subsystem self-test report (for manftest) */
7243#define MC_CMD_LICENSING_OUT_LICENSING_SELF_TEST_OFST 24
7244/* enum: licensing subsystem self-test failed */
7245#define MC_CMD_LICENSING_OUT_SELF_TEST_FAIL 0x0
7246/* enum: licensing subsystem self-test passed */
7247#define MC_CMD_LICENSING_OUT_SELF_TEST_PASS 0x1
7248
7249
7250/***********************************/
7251/* MC_CMD_MC2MC_PROXY
7252 * Execute an arbitrary MCDI command on the slave MC of a dual-core device.
7253 * This will fail on a single-core system.
7254 */
7255#define MC_CMD_MC2MC_PROXY 0xf4
2404 7256
2405 7257
2406#endif /* MCDI_PCOL_H */ 7258#endif /* MCDI_PCOL_H */
diff --git a/drivers/net/ethernet/sfc/mcdi_port.c b/drivers/net/ethernet/sfc/mcdi_port.c
index 91df43fe0cda..e359227e6b17 100644
--- a/drivers/net/ethernet/sfc/mcdi_port.c
+++ b/drivers/net/ethernet/sfc/mcdi_port.c
@@ -111,7 +111,8 @@ static int efx_mcdi_loopback_modes(struct efx_nic *efx, u64 *loopback_modes)
111 if (rc) 111 if (rc)
112 goto fail; 112 goto fail;
113 113
114 if (outlen < MC_CMD_GET_LOOPBACK_MODES_OUT_LEN) { 114 if (outlen < (MC_CMD_GET_LOOPBACK_MODES_OUT_SUGGESTED_OFST +
115 MC_CMD_GET_LOOPBACK_MODES_OUT_SUGGESTED_LEN)) {
115 rc = -EIO; 116 rc = -EIO;
116 goto fail; 117 goto fail;
117 } 118 }