Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/drivers/net/ethernet/sfc/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 1 MB image not shown  

Quelle  mcdi_pcol.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0-only */
/****************************************************************************
 * Driver for Solarflare network controllers and boards
 * Copyright 2009-2018 Solarflare Communications Inc.
 * Copyright 2019-2020 Xilinx Inc.
 */



#ifndef MCDI_PCOL_H
#define MCDI_PCOL_H

/* Values to be written into FMCR_CZ_RESET_STATE_REG to control boot. */
/* Power-on reset state */
#define MC_FW_STATE_POR (1)
/* If this is set in MC_RESET_STATE_REG then it should be
 * possible to jump into IMEM without loading code from flash. */

#define MC_FW_WARM_BOOT_OK (2)
/* The MC main image has started to boot. */
#define MC_FW_STATE_BOOTING (4)
/* The Scheduler has started. */
#define MC_FW_STATE_SCHED (8)
/* If this is set in MC_RESET_STATE_REG then it should be
 * possible to jump into IMEM without loading code from flash.
 * Unlike a warm boot, assume DMEM has been reloaded, so that
 * the MC persistent data must be reinitialised. */

#define MC_FW_TEPID_BOOT_OK (16)
/* We have entered the main firmware via recovery mode.  This
 * means that MC persistent data must be reinitialised, but that
 * we shouldn't touch PCIe config. */

#define MC_FW_RECOVERY_MODE_PCIE_INIT_OK (32)
/* BIST state has been initialized */
#define MC_FW_BIST_INIT_OK (128)

/* Siena MC shared memmory offsets */
/* The 'doorbell' addresses are hard-wired to alert the MC when written */
#define MC_SMEM_P0_DOORBELL_OFST 0x000
#define MC_SMEM_P1_DOORBELL_OFST 0x004
/* The rest of these are firmware-defined */
#define MC_SMEM_P0_PDU_OFST  0x008
#define MC_SMEM_P1_PDU_OFST  0x108
#define MC_SMEM_PDU_LEN   0x100
#define MC_SMEM_P0_PTP_TIME_OFST 0x7f0
#define MC_SMEM_P0_STATUS_OFST  0x7f8
#define MC_SMEM_P1_STATUS_OFST  0x7fc

/* Values to be written to the per-port status dword in shared
 * memory on reboot and assert */

#define MC_STATUS_DWORD_REBOOT (0xb007b007)
#define MC_STATUS_DWORD_ASSERT (0xdeaddead)

/* Check whether an mcfw version (in host order) belongs to a bootloader */
#define MC_FW_VERSION_IS_BOOTLOADER(_v) (((_v) >> 16) == 0xb007)

/* The current version of the MCDI protocol.
 *
 * Note that the ROM burnt into the card only talks V0, so at the very
 * least every driver must support version 0 and MCDI_PCOL_VERSION
 */

#define MCDI_PCOL_VERSION 2

/* Unused commands: 0x23, 0x27, 0x30, 0x31 */

/* MCDI version 1
 *
 * Each MCDI request starts with an MCDI_HEADER, which is a 32bit
 * structure, filled in by the client.
 *
 *       0       7  8     16    20     22  23  24    31
 *      | CODE | R | LEN | SEQ | Rsvd | E | R | XFLAGS |
 *               |                      |   |
 *               |                      |   \--- Response
 *               |                      \------- Error
 *               \------------------------------ Resync (always set)
 *
 * The client writes its request into MC shared memory, and rings the
 * doorbell. Each request is completed either by the MC writing
 * back into shared memory, or by writing out an event.
 *
 * All MCDI commands support completion by shared memory response. Each
 * request may also contain additional data (accounted for by HEADER.LEN),
 * and some responses may also contain additional data (again, accounted
 * for by HEADER.LEN).
 *
 * Some MCDI commands support completion by event, in which any associated
 * response data is included in the event.
 *
 * The protocol requires one response to be delivered for every request; a
 * request should not be sent unless the response for the previous request
 * has been received (either by polling shared memory, or by receiving
 * an event).
 */


/** Request/Response structure */
#define MCDI_HEADER_OFST 0
#define MCDI_HEADER_CODE_LBN 0
#define MCDI_HEADER_CODE_WIDTH 7
#define MCDI_HEADER_RESYNC_LBN 7
#define MCDI_HEADER_RESYNC_WIDTH 1
#define MCDI_HEADER_DATALEN_LBN 8
#define MCDI_HEADER_DATALEN_WIDTH 8
#define MCDI_HEADER_SEQ_LBN 16
#define MCDI_HEADER_SEQ_WIDTH 4
#define MCDI_HEADER_RSVD_LBN 20
#define MCDI_HEADER_RSVD_WIDTH 1
#define MCDI_HEADER_NOT_EPOCH_LBN 21
#define MCDI_HEADER_NOT_EPOCH_WIDTH 1
#define MCDI_HEADER_ERROR_LBN 22
#define MCDI_HEADER_ERROR_WIDTH 1
#define MCDI_HEADER_RESPONSE_LBN 23
#define MCDI_HEADER_RESPONSE_WIDTH 1
#define MCDI_HEADER_XFLAGS_LBN 24
#define MCDI_HEADER_XFLAGS_WIDTH 8
/* Request response using event */
#define MCDI_HEADER_XFLAGS_EVREQ 0x01
/* Request (and signal) early doorbell return */
#define MCDI_HEADER_XFLAGS_DBRET 0x02

/* Maximum number of payload bytes */
#define MCDI_CTL_SDU_LEN_MAX_V1 0xfc
#define MCDI_CTL_SDU_LEN_MAX_V2 0x400

#define MCDI_CTL_SDU_LEN_MAX MCDI_CTL_SDU_LEN_MAX_V2


/* The MC can generate events for two reasons:
 *   - To advance a shared memory request if XFLAGS_EVREQ was set
 *   - As a notification (link state, i2c event), controlled
 *     via MC_CMD_LOG_CTRL
 *
 * Both events share a common structure:
 *
 *  0      32     33      36    44     52     60
 * | Data | Cont | Level | Src | Code | Rsvd |
 *           |
 *           \ There is another event pending in this notification
 *
 * If Code==CMDDONE, then the fields are further interpreted as:
 *
 *   - LEVEL==INFO    Command succeeded
 *   - LEVEL==ERR     Command failed
 *
 *    0     8         16      24     32
 *   | Seq | Datalen | Errno | Rsvd |
 *
 *   These fields are taken directly out of the standard MCDI header, i.e.,
 *   LEVEL==ERR, Datalen == 0 => Reboot
 *
 * Events can be squirted out of the UART (using LOG_CTRL) without a
 * MCDI header.  An event can be distinguished from a MCDI response by
 * examining the first byte which is 0xc0.  This corresponds to the
 * non-existent MCDI command MC_CMD_DEBUG_LOG.
 *
 *      0         7        8
 *     | command | Resync |     = 0xc0
 *
 * Since the event is written in big-endian byte order, this works
 * providing bits 56-63 of the event are 0xc0.
 *
 *      56     60  63
 *     | Rsvd | Code |    = 0xc0
 *
 * Which means for convenience the event code is 0xc for all MC
 * generated events.
 */

#define FSE_AZ_EV_CODE_MCDI_EVRESPONSE 0xc



#define MC_CMD_ERR_CODE_OFST 0
#define MC_CMD_ERR_PROXY_PENDING_HANDLE_OFST 4

/* We define 8 "escape" commands to allow
   for command number space extension */


#define MC_CMD_CMD_SPACE_ESCAPE_0       0x78
#define MC_CMD_CMD_SPACE_ESCAPE_1       0x79
#define MC_CMD_CMD_SPACE_ESCAPE_2       0x7A
#define MC_CMD_CMD_SPACE_ESCAPE_3       0x7B
#define MC_CMD_CMD_SPACE_ESCAPE_4       0x7C
#define MC_CMD_CMD_SPACE_ESCAPE_5       0x7D
#define MC_CMD_CMD_SPACE_ESCAPE_6       0x7E
#define MC_CMD_CMD_SPACE_ESCAPE_7       0x7F

/* Vectors in the boot ROM */
/* Point to the copycode entry point. */
#define SIENA_MC_BOOTROM_COPYCODE_VEC (0x800 - 3 * 0x4)
#define HUNT_MC_BOOTROM_COPYCODE_VEC (0x8000 - 3 * 0x4)
#define MEDFORD_MC_BOOTROM_COPYCODE_VEC (0x10000 - 3 * 0x4)
/* Points to the recovery mode entry point. Misnamed but kept for compatibility. */
#define SIENA_MC_BOOTROM_NOFLASH_VEC (0x800 - 2 * 0x4)
#define HUNT_MC_BOOTROM_NOFLASH_VEC (0x8000 - 2 * 0x4)
#define MEDFORD_MC_BOOTROM_NOFLASH_VEC (0x10000 - 2 * 0x4)
/* Points to the recovery mode entry point. Same as above, but the right name. */
#define SIENA_MC_BOOTROM_RECOVERY_VEC (0x800 - 2 * 0x4)
#define HUNT_MC_BOOTROM_RECOVERY_VEC (0x8000 - 2 * 0x4)
#define MEDFORD_MC_BOOTROM_RECOVERY_VEC (0x10000 - 2 * 0x4)

/* Points to noflash mode entry point. */
#define MEDFORD_MC_BOOTROM_REAL_NOFLASH_VEC (0x10000 - 4 * 0x4)

/* The command set exported by the boot ROM (MCDI v0) */
#define MC_CMD_GET_VERSION_V0_SUPPORTED_FUNCS {  \
 (1 << MC_CMD_READ32) |   \
 (1 << MC_CMD_WRITE32) |   \
 (1 << MC_CMD_COPYCODE) |   \
 (1 << MC_CMD_GET_VERSION),   \
 0, 0, 0 }

#define MC_CMD_SENSOR_INFO_OUT_OFFSET_OFST(_x)  \
 (MC_CMD_SENSOR_ENTRY_OFST + (_x))

#define MC_CMD_DBI_WRITE_IN_ADDRESS_OFST(n)  \
 (MC_CMD_DBI_WRITE_IN_DBIWROP_OFST +  \
  MC_CMD_DBIWROP_TYPEDEF_ADDRESS_OFST +  \
  (n) * MC_CMD_DBIWROP_TYPEDEF_LEN)

#define MC_CMD_DBI_WRITE_IN_BYTE_MASK_OFST(n)  \
 (MC_CMD_DBI_WRITE_IN_DBIWROP_OFST +  \
  MC_CMD_DBIWROP_TYPEDEF_BYTE_MASK_OFST + \
  (n) * MC_CMD_DBIWROP_TYPEDEF_LEN)

#define MC_CMD_DBI_WRITE_IN_VALUE_OFST(n)  \
 (MC_CMD_DBI_WRITE_IN_DBIWROP_OFST +  \
  MC_CMD_DBIWROP_TYPEDEF_VALUE_OFST +  \
  (n) * MC_CMD_DBIWROP_TYPEDEF_LEN)

/* This may be ORed with an EVB_PORT_ID_xxx constant to pass a non-default
 * stack ID (which must be in the range 1-255) along with an EVB port ID.
 */

#define EVB_STACK_ID(n)  (((n) & 0xff) << 16)


/* Version 2 adds an optional argument to error returns: the errno value
 * may be followed by the (0-based) number of the first argument that
 * could not be processed.
 */

#define MC_CMD_ERR_ARG_OFST 4

/* MC_CMD_ERR enum: Public MCDI error codes. Error codes that correspond to
 * POSIX errnos should use the same numeric values that linux does. Error codes
 * specific to Solarflare firmware should use values in the range 0x1000 -
 * 0x10ff. The range 0x2000 - 0x20ff is reserved for private error codes (see
 * MC_CMD_ERR_PRIV below).
 */

/* enum: Operation not permitted. */
#define          MC_CMD_ERR_EPERM 0x1
/* enum: Non-existent command target */
#define          MC_CMD_ERR_ENOENT 0x2
/* enum: assert() has killed the MC */
#define          MC_CMD_ERR_EINTR 0x4
/* enum: I/O failure */
#define          MC_CMD_ERR_EIO 0x5
/* enum: Already exists */
#define          MC_CMD_ERR_EEXIST 0x6
/* enum: Try again */
#define          MC_CMD_ERR_EAGAIN 0xb
/* enum: Out of memory */
#define          MC_CMD_ERR_ENOMEM 0xc
/* enum: Caller does not hold required locks */
#define          MC_CMD_ERR_EACCES 0xd
/* enum: Resource is currently unavailable (e.g. lock contention) */
#define          MC_CMD_ERR_EBUSY 0x10
/* enum: No such device */
#define          MC_CMD_ERR_ENODEV 0x13
/* enum: Invalid argument to target */
#define          MC_CMD_ERR_EINVAL 0x16
/* enum: No space */
#define          MC_CMD_ERR_ENOSPC 0x1c
/* enum: Read-only */
#define          MC_CMD_ERR_EROFS 0x1e
/* enum: Broken pipe */
#define          MC_CMD_ERR_EPIPE 0x20
/* enum: Out of range */
#define          MC_CMD_ERR_ERANGE 0x22
/* enum: Non-recursive resource is already acquired */
#define          MC_CMD_ERR_EDEADLK 0x23
/* enum: Operation not implemented */
#define          MC_CMD_ERR_ENOSYS 0x26
/* enum: Operation timed out */
#define          MC_CMD_ERR_ETIME 0x3e
/* enum: Link has been severed */
#define          MC_CMD_ERR_ENOLINK 0x43
/* enum: Protocol error */
#define          MC_CMD_ERR_EPROTO 0x47
/* enum: Bad message */
#define          MC_CMD_ERR_EBADMSG 0x4a
/* enum: Operation not supported */
#define          MC_CMD_ERR_ENOTSUP 0x5f
/* enum: Address not available */
#define          MC_CMD_ERR_EADDRNOTAVAIL 0x63
/* enum: Not connected */
#define          MC_CMD_ERR_ENOTCONN 0x6b
/* enum: Operation already in progress */
#define          MC_CMD_ERR_EALREADY 0x72
/* enum: Stale handle. The handle references a resource that no longer exists.
 */

#define          MC_CMD_ERR_ESTALE 0x74
/* enum: Resource allocation failed. */
#define          MC_CMD_ERR_ALLOC_FAIL 0x1000
/* enum: V-adaptor not found. */
#define          MC_CMD_ERR_NO_VADAPTOR 0x1001
/* enum: EVB port not found. */
#define          MC_CMD_ERR_NO_EVB_PORT 0x1002
/* enum: V-switch not found. */
#define          MC_CMD_ERR_NO_VSWITCH 0x1003
/* enum: Too many VLAN tags. */
#define          MC_CMD_ERR_VLAN_LIMIT 0x1004
/* enum: Bad PCI function number. */
#define          MC_CMD_ERR_BAD_PCI_FUNC 0x1005
/* enum: Invalid VLAN mode. */
#define          MC_CMD_ERR_BAD_VLAN_MODE 0x1006
/* enum: Invalid v-switch type. */
#define          MC_CMD_ERR_BAD_VSWITCH_TYPE 0x1007
/* enum: Invalid v-port type. */
#define          MC_CMD_ERR_BAD_VPORT_TYPE 0x1008
/* enum: MAC address exists. */
#define          MC_CMD_ERR_MAC_EXIST 0x1009
/* enum: Slave core not present */
#define          MC_CMD_ERR_SLAVE_NOT_PRESENT 0x100a
/* enum: The datapath is disabled. */
#define          MC_CMD_ERR_DATAPATH_DISABLED 0x100b
/* enum: The requesting client is not a function */
#define          MC_CMD_ERR_CLIENT_NOT_FN 0x100c
/* enum: The requested operation might require the command to be passed between
 * MCs, and the transport doesn't support that. Should only ever been seen over
 * the UART.
 */

#define          MC_CMD_ERR_TRANSPORT_NOPROXY 0x100d
/* enum: VLAN tag(s) exists */
#define          MC_CMD_ERR_VLAN_EXIST 0x100e
/* enum: No MAC address assigned to an EVB port */
#define          MC_CMD_ERR_NO_MAC_ADDR 0x100f
/* enum: Notifies the driver that the request has been relayed to an admin
 * function for authorization. The driver should wait for a PROXY_RESPONSE
 * event and then resend its request. This error code is followed by a 32-bit
 * handle that helps matching it with the respective PROXY_RESPONSE event.
 */

#define          MC_CMD_ERR_PROXY_PENDING 0x1010
/* enum: The request cannot be passed for authorization because another request
 * from the same function is currently being authorized. The drvier should try
 * again later.
 */

#define          MC_CMD_ERR_PROXY_INPROGRESS 0x1011
/* enum: Returned by MC_CMD_PROXY_COMPLETE if the caller is not the function
 * that has enabled proxying or BLOCK_INDEX points to a function that doesn't
 * await an authorization.
 */

#define          MC_CMD_ERR_PROXY_UNEXPECTED 0x1012
/* enum: This code is currently only used internally in FW. Its meaning is that
 * an operation failed due to lack of SR-IOV privilege. Normally it is
 * translated to EPERM by send_cmd_err(), but it may also be used to trigger
 * some special mechanism for handling such case, e.g. to relay the failed
 * request to a designated admin function for authorization.
 */

#define          MC_CMD_ERR_NO_PRIVILEGE 0x1013
/* enum: Workaround 26807 could not be turned on/off because some functions
 * have already installed filters. See the comment at
 * MC_CMD_WORKAROUND_BUG26807. May also returned for other operations such as
 * sub-variant switching.
 */

#define          MC_CMD_ERR_FILTERS_PRESENT 0x1014
/* enum: The clock whose frequency you've attempted to set doesn't exist on
 * this NIC
 */

#define          MC_CMD_ERR_NO_CLOCK 0x1015
/* enum: Returned by MC_CMD_TESTASSERT if the action that should have caused an
 * assertion failed to do so.
 */

#define          MC_CMD_ERR_UNREACHABLE 0x1016
/* enum: This command needs to be processed in the background but there were no
 * resources to do so. Send it again after a command has completed.
 */

#define          MC_CMD_ERR_QUEUE_FULL 0x1017
/* enum: The operation could not be completed because the PCIe link has gone
 * away. This error code is never expected to be returned over the TLP
 * transport.
 */

#define          MC_CMD_ERR_NO_PCIE 0x1018
/* enum: The operation could not be completed because the datapath has gone
 * away. This is distinct from MC_CMD_ERR_DATAPATH_DISABLED in that the
 * datapath absence may be temporary
 */

#define          MC_CMD_ERR_NO_DATAPATH 0x1019
/* enum: The operation could not complete because some VIs are allocated */
#define          MC_CMD_ERR_VIS_PRESENT 0x101a
/* enum: The operation could not complete because some PIO buffers are
 * allocated
 */

#define          MC_CMD_ERR_PIOBUFS_PRESENT 0x101b

/* PCIE_INTERFACE enum: From EF100 onwards, SFC products can have multiple PCIe
 * interfaces. There is a need to refer to interfaces explicitly from drivers
 * (for example, a management driver on one interface administering a function
 * on another interface). This enumeration provides stable identifiers to all
 * interfaces present on a product. Product documentation will specify which
 * interfaces exist and their associated identifier. In general, drivers,
 * should not assign special meanings to specific values. Instead, behaviour
 * should be determined by NIC configuration, which will identify interfaces
 * where appropriate.
 */

/* enum: Primary host interfaces. Typically (i.e. for all known SFC products)
 * the interface exposed on the edge connector (or form factor equivalent).
 */

#define          PCIE_INTERFACE_HOST_PRIMARY 0x0
/* enum: Riverhead and keystone products have a second PCIe interface to which
 * an on-NIC ARM module is expected to be connected.
 */

#define          PCIE_INTERFACE_NIC_EMBEDDED 0x1
/* enum: The PCIe logical interface 0. It is an alias for HOST_PRIMARY. */
#define          PCIE_INTERFACE_PCIE_HOST_INTF_0 0x0
/* enum: The PCIe logical interface 1. */
#define          PCIE_INTERFACE_PCIE_HOST_INTF_1 0x2
/* enum: The PCIe logical interface 2. */
#define          PCIE_INTERFACE_PCIE_HOST_INTF_2 0x3
/* enum: The PCIe logical interface 3. */
#define          PCIE_INTERFACE_PCIE_HOST_INTF_3 0x4
/* enum: For MCDI commands issued over a PCIe interface, this value is
 * translated into the interface over which the command was issued. Not
 * meaningful for other MCDI transports.
 */

#define          PCIE_INTERFACE_CALLER 0xffffffff

/* MC_CLIENT_ID_SPECIFIER enum */
/* enum: Equivalent to the caller's client ID */
#define          MC_CMD_CLIENT_ID_SELF 0xffffffff

/* MAE_FIELD_SUPPORT_STATUS enum */
/* enum: The NIC does not support this field. The driver must ensure that any
 * mask associated with this field in a match rule is zeroed. The NIC may
 * either reject requests with an invalid mask for such a field, or may assume
 * that the mask is zero. (This category only exists to describe behaviour for
 * fields that a newer driver might know about but that older firmware does
 * not. It is recommended that firmware report MAE_FIELD_FIELD_MATCH_NEVER for
 * all match fields defined at the time of its compilation. If a driver see a
 * field support status value that it does not recognise, it must treat that
 * field as thought the field was reported as MAE_FIELD_SUPPORTED_MATCH_NEVER,
 * and must never set a non-zero mask value for this field.
 */

#define          MAE_FIELD_UNSUPPORTED 0x0
/* enum: The NIC supports this field, but cannot use it in a match rule. The
 * driver must ensure that any mask for such a field in a match rule is zeroed.
 * The NIC will reject requests with an invalid mask for such a field.
 */

#define          MAE_FIELD_SUPPORTED_MATCH_NEVER 0x1
/* enum: The NIC supports this field, and must use it in all match rules. The
 * driver must ensure that any mask for such a field is all ones. The NIC will
 * reject requests with an invalid mask for such a field.
 */

#define          MAE_FIELD_SUPPORTED_MATCH_ALWAYS 0x2
/* enum: The NIC supports this field, and may optionally use it in match rules.
 * The driver must ensure that any mask for such a field is either all zeroes
 * or all ones. The NIC will reject requests with an invalid mask for such a
 * field.
 */

#define          MAE_FIELD_SUPPORTED_MATCH_OPTIONAL 0x3
/* enum: The NIC supports this field, and may optionally use it in match rules.
 * The driver must ensure that any mask for such a field is either all zeroes
 * or a consecutive set of ones following by all zeroes (starting from MSB).
 * The NIC will reject requests with an invalid mask for such a field.
 */

#define          MAE_FIELD_SUPPORTED_MATCH_PREFIX 0x4
/* enum: The NIC supports this field, and may optionally use it in match rules.
 * The driver may provide an arbitrary mask for such a field.
 */

#define          MAE_FIELD_SUPPORTED_MATCH_MASK 0x5

/* MAE_CT_VNI_MODE enum: Controls the layout of the VNI input to the conntrack
 * lookup. (Values are not arbitrary - constrained by table access ABI.)
 */

/* enum: The VNI input to the conntrack lookup will be zero. */
#define          MAE_CT_VNI_MODE_ZERO 0x0
/* enum: The VNI input to the conntrack lookup will be the VNI (VXLAN/Geneve)
 * or VSID (NVGRE) field from the packet.
 */

#define          MAE_CT_VNI_MODE_VNI 0x1
/* enum: The VNI input to the conntrack lookup will be the VLAN ID from the
 * outermost VLAN tag (in bottom 12 bits; top 12 bits zero).
 */

#define          MAE_CT_VNI_MODE_1VLAN 0x2
/* enum: The VNI input to the conntrack lookup will be the VLAN IDs from both
 * VLAN tags (outermost in bottom 12 bits, innermost in top 12 bits).
 */

#define          MAE_CT_VNI_MODE_2VLAN 0x3

/* MAE_FIELD enum: NB: this enum shares namespace with the support status enum.
 */

/* enum: Source mport upon entering the MAE. */
#define          MAE_FIELD_INGRESS_PORT 0x0
#define          MAE_FIELD_MARK 0x1 /* enum */
/* enum: Table ID used in action rule. Initially zero, can be changed in action
 * rule response.
 */

#define          MAE_FIELD_RECIRC_ID 0x2
#define          MAE_FIELD_IS_IP_FRAG 0x3 /* enum */
#define          MAE_FIELD_DO_CT 0x4 /* enum */
#define          MAE_FIELD_CT_HIT 0x5 /* enum */
/* enum: Undefined unless CT_HIT=1. */
#define          MAE_FIELD_CT_MARK 0x6
/* enum: Undefined unless DO_CT=1. */
#define          MAE_FIELD_CT_DOMAIN 0x7
/* enum: Undefined unless CT_HIT=1. */
#define          MAE_FIELD_CT_PRIVATE_FLAGS 0x8
/* enum: 1 if the packet ingressed the NIC from one of the MACs, else 0. */
#define          MAE_FIELD_IS_FROM_NETWORK 0x9
/* enum: 1 if the packet has 1 or more VLAN tags, else 0. */
#define          MAE_FIELD_HAS_OVLAN 0xa
/* enum: 1 if the packet has 2 or more VLAN tags, else 0. */
#define          MAE_FIELD_HAS_IVLAN 0xb
/* enum: 1 if the outer packet has 1 or more VLAN tags, else 0; only present
 * when encap
 */

#define          MAE_FIELD_ENC_HAS_OVLAN 0xc
/* enum: 1 if the outer packet has 2 or more VLAN tags, else 0; only present
 * when encap
 */

#define          MAE_FIELD_ENC_HAS_IVLAN 0xd
/* enum: Packet is IP fragment */
#define          MAE_FIELD_ENC_IP_FRAG 0xe
#define          MAE_FIELD_ETHER_TYPE 0x21 /* enum */
#define          MAE_FIELD_VLAN0_TCI 0x22 /* enum */
#define          MAE_FIELD_VLAN0_PROTO 0x23 /* enum */
#define          MAE_FIELD_VLAN1_TCI 0x24 /* enum */
#define          MAE_FIELD_VLAN1_PROTO 0x25 /* enum */
/* enum: Inner when encap */
#define          MAE_FIELD_ETH_SADDR 0x28
/* enum: Inner when encap */
#define          MAE_FIELD_ETH_DADDR 0x29
/* enum: Inner when encap. NB: IPv4 and IPv6 fields are mutually exclusive. */
#define          MAE_FIELD_SRC_IP4 0x2a
/* enum: Inner when encap */
#define          MAE_FIELD_SRC_IP6 0x2b
/* enum: Inner when encap */
#define          MAE_FIELD_DST_IP4 0x2c
/* enum: Inner when encap */
#define          MAE_FIELD_DST_IP6 0x2d
/* enum: Inner when encap */
#define          MAE_FIELD_IP_PROTO 0x2e
/* enum: Inner when encap */
#define          MAE_FIELD_IP_TOS 0x2f
/* enum: Inner when encap */
#define          MAE_FIELD_IP_TTL 0x30
/* enum: Inner when encap TODO: how this is defined? The raw flags +
 * frag_offset from the packet, or some derived value more amenable to ternary
 * matching? TODO: there was a proposal for driver-allocation fields. The
 * driver would provide some instruction for how to extract given field values,
 * and would be given a field id in return. It could then use that field id in
 * its matches. This feels like it would be extremely hard to implement in
 * hardware, but I mention it for completeness.
 */

#define          MAE_FIELD_IP_FLAGS 0x31
/* enum: Ports (UDP, TCP) Inner when encap */
#define          MAE_FIELD_L4_SPORT 0x32
/* enum: Ports (UDP, TCP) Inner when encap */
#define          MAE_FIELD_L4_DPORT 0x33
/* enum: Inner when encap */
#define          MAE_FIELD_TCP_FLAGS 0x34
/* enum: TCP packet with any of SYN, FIN or RST flag set */
#define          MAE_FIELD_TCP_SYN_FIN_RST 0x35
/* enum: Packet is IP fragment with fragment offset 0 */
#define          MAE_FIELD_IP_FIRST_FRAG 0x36
/* enum: The type of encapsulated used for this packet. Value as per
 * ENCAP_TYPE_*.
 */

#define          MAE_FIELD_ENCAP_TYPE 0x3f
/* enum: The ID of the outer rule that marked this packet as encapsulated.
 * Useful for implicitly matching on outer fields.
 */

#define          MAE_FIELD_OUTER_RULE_ID 0x40
/* enum: Outer; only present when encap */
#define          MAE_FIELD_ENC_ETHER_TYPE 0x41
/* enum: Outer; only present when encap */
#define          MAE_FIELD_ENC_VLAN0_TCI 0x42
/* enum: Outer; only present when encap */
#define          MAE_FIELD_ENC_VLAN0_PROTO 0x43
/* enum: Outer; only present when encap */
#define          MAE_FIELD_ENC_VLAN1_TCI 0x44
/* enum: Outer; only present when encap */
#define          MAE_FIELD_ENC_VLAN1_PROTO 0x45
/* enum: Outer; only present when encap */
#define          MAE_FIELD_ENC_ETH_SADDR 0x48
/* enum: Outer; only present when encap */
#define          MAE_FIELD_ENC_ETH_DADDR 0x49
/* enum: Outer; only present when encap */
#define          MAE_FIELD_ENC_SRC_IP4 0x4a
/* enum: Outer; only present when encap */
#define          MAE_FIELD_ENC_SRC_IP6 0x4b
/* enum: Outer; only present when encap */
#define          MAE_FIELD_ENC_DST_IP4 0x4c
/* enum: Outer; only present when encap */
#define          MAE_FIELD_ENC_DST_IP6 0x4d
/* enum: Outer; only present when encap */
#define          MAE_FIELD_ENC_IP_PROTO 0x4e
/* enum: Outer; only present when encap */
#define          MAE_FIELD_ENC_IP_TOS 0x4f
/* enum: Outer; only present when encap */
#define          MAE_FIELD_ENC_IP_TTL 0x50
/* enum: Outer; only present when encap */
#define          MAE_FIELD_ENC_IP_FLAGS 0x51
/* enum: Outer; only present when encap */
#define          MAE_FIELD_ENC_L4_SPORT 0x52
/* enum: Outer; only present when encap */
#define          MAE_FIELD_ENC_L4_DPORT 0x53
/* enum: VNI (when VXLAN or GENEVE) VSID (when NVGRE) Bottom 24 bits of Key
 * (when L2GRE) Outer; only present when encap
 */

#define          MAE_FIELD_ENC_VNET_ID 0x54

/* MAE_MCDI_ENCAP_TYPE enum: Encapsulation type. Defines how the payload will
 * be parsed to an inner frame. Other values are reserved. Unknown values
 * should be treated same as NONE. (Values are not arbitrary - constrained by
 * table access ABI.)
 */

#define          MAE_MCDI_ENCAP_TYPE_NONE 0x0 /* enum */
/* enum: Don't assume enum aligns with support bitmask... */
#define          MAE_MCDI_ENCAP_TYPE_VXLAN 0x1
#define          MAE_MCDI_ENCAP_TYPE_NVGRE 0x2 /* enum */
#define          MAE_MCDI_ENCAP_TYPE_GENEVE 0x3 /* enum */
#define          MAE_MCDI_ENCAP_TYPE_L2GRE 0x4 /* enum */

/* MAE_MPORT_END enum: Selects which end of the logical link identified by an
 * MPORT_SELECTOR is targeted by an operation.
 */

/* enum: Selects the port on the MAE virtual switch */
#define          MAE_MPORT_END_MAE 0x1
/* enum: Selects the virtual NIC plugged into the MAE switch */
#define          MAE_MPORT_END_VNIC 0x2

/* MAE_COUNTER_TYPE enum: The datapath maintains several sets of counters, each
 * being associated with a different table. Note that the same counter ID may
 * be allocated by different counter blocks, so e.g. AR counter 42 is different
 * from CT counter 42. Generation counts are also type-specific. This value is
 * also present in the header of streaming counter packets, in the IDENTIFIER
 * field (see packetiser packet format definitions). Also note that LACP
 * counter IDs are not allocated individually, instead the counter IDs are
 * directly tied to the LACP balance table indices. These in turn are allocated
 * in large contiguous blocks as a LAG config. Calling MAE_COUNTER_ALLOC/FREE
 * with an LACP counter type will return EPERM.
 */

/* enum: Action Rule counters - can be referenced in AR response. */
#define          MAE_COUNTER_TYPE_AR 0x0
/* enum: Conntrack counters - can be referenced in CT response. */
#define          MAE_COUNTER_TYPE_CT 0x1
/* enum: Outer Rule counters - can be referenced in OR response. */
#define          MAE_COUNTER_TYPE_OR 0x2
/* enum: LACP counters - linked to LACP balance table entries. */
#define          MAE_COUNTER_TYPE_LACP 0x3

/* MAE_COUNTER_ID enum: ID of allocated counter or counter list. */
/* enum: A counter ID that is guaranteed never to represent a real counter or
 * counter list.
 */

#define          MAE_COUNTER_ID_NULL 0xffffffff

/* TABLE_ID enum: Unique IDs for tables. The 32-bit ID values have been
 * structured with bits [31:24] reserved (0), [23:16] indicating which major
 * block the tables belongs to (0=VNIC TX, none currently; 1=MAE; 2=VNIC RX),
 * [15:8] a unique ID within the block, and [7:0] reserved for future
 * variations of the same table. (All of the tables currently defined within
 * the streaming engines are listed here, but this does not imply that they are
 * all supported - MC_CMD_TABLE_LIST returns the list of actually supported
 * tables.) The DPU offload engines' enumerators follow a deliberate pattern:
 * 0x01010000 + is_dpu_net * 0x10000 + is_wr_or_tx * 0x8000 + is_lite_pipe *
 * 0x1000 + oe_engine_type * 0x100 + oe_instance_within_pipe * 0x10
 */

/* enum: Outer_Rule_Table in the MAE - refer to SF-123102-TC. */
#define          TABLE_ID_OUTER_RULE_TABLE 0x10000
/* enum: Outer_Rule_No_CT_Table in the MAE - refer to SF-123102-TC. */
#define          TABLE_ID_OUTER_RULE_NO_CT_TABLE 0x10100
/* enum: Mgmt_Filter_Table in the MAE - refer to SF-123102-TC. */
#define          TABLE_ID_MGMT_FILTER_TABLE 0x10200
/* enum: Conntrack_Table in the MAE - refer to SF-123102-TC. */
#define          TABLE_ID_CONNTRACK_TABLE 0x10300
/* enum: Action_Rule_Table in the MAE - refer to SF-123102-TC. */
#define          TABLE_ID_ACTION_RULE_TABLE 0x10400
/* enum: Mgroup_Default_Action_Set_Table in the MAE - refer to SF-123102-TC. */
#define          TABLE_ID_MGROUP_DEFAULT_ACTION_SET_TABLE 0x10500
/* enum: Encap_Hdr_Part1_Table in the MAE - refer to SF-123102-TC. */
#define          TABLE_ID_ENCAP_HDR_PART1_TABLE 0x10600
/* enum: Encap_Hdr_Part2_Table in the MAE - refer to SF-123102-TC. */
#define          TABLE_ID_ENCAP_HDR_PART2_TABLE 0x10700
/* enum: Replace_Src_MAC_Table in the MAE - refer to SF-123102-TC. */
#define          TABLE_ID_REPLACE_SRC_MAC_TABLE 0x10800
/* enum: Replace_Dst_MAC_Table in the MAE - refer to SF-123102-TC. */
#define          TABLE_ID_REPLACE_DST_MAC_TABLE 0x10900
/* enum: Dst_Mport_VC_Table in the MAE - refer to SF-123102-TC. */
#define          TABLE_ID_DST_MPORT_VC_TABLE 0x10a00
/* enum: LACP_LAG_Config_Table in the MAE - refer to SF-123102-TC. */
#define          TABLE_ID_LACP_LAG_CONFIG_TABLE 0x10b00
/* enum: LACP_Balance_Table in the MAE - refer to SF-123102-TC. */
#define          TABLE_ID_LACP_BALANCE_TABLE 0x10c00
/* enum: Dst_Mport_Host_Chan_Table in the MAE - refer to SF-123102-TC. */
#define          TABLE_ID_DST_MPORT_HOST_CHAN_TABLE 0x10d00
/* enum: VNIC_Rx_Encap_Table in VNIC Rx - refer to SF-123102-TC. */
#define          TABLE_ID_VNIC_RX_ENCAP_TABLE 0x20000
/* enum: Steering_Table in VNIC Rx - refer to SF-123102-TC. */
#define          TABLE_ID_STEERING_TABLE 0x20100
/* enum: RSS_Context_Table in VNIC Rx - refer to SF-123102-TC. */
#define          TABLE_ID_RSS_CONTEXT_TABLE 0x20200
/* enum: Indirection_Table in VNIC Rx - refer to SF-123102-TC. */
#define          TABLE_ID_INDIRECTION_TABLE 0x20300
/* enum: DPU.host read pipe first CRC offload engine profiles - refer to
 * XN-200147-AN.
 */

#define          TABLE_ID_DPU_HOST_RD_CRC0_OE_PROFILE 0x1010000
/* enum: DPU.host read pipe second CRC offload engine profiles - refer to
 * XN-200147-AN.
 */

#define          TABLE_ID_DPU_HOST_RD_CRC1_OE_PROFILE 0x1010010
/* enum: DPU.host write pipe first CRC offload engine profiles - refer to
 * XN-200147-AN.
 */

#define          TABLE_ID_DPU_HOST_WR_CRC0_OE_PROFILE 0x1018000
/* enum: DPU.host write pipe second CRC offload engine profiles - refer to
 * XN-200147-AN.
 */

#define          TABLE_ID_DPU_HOST_WR_CRC1_OE_PROFILE 0x1018010
/* enum: DPU.net 'full' receive pipe CRC offload engine profiles - refer to
 * XN-200147-AN.
 */

#define          TABLE_ID_DPU_NET_RX_CRC0_OE_PROFILE 0x1020000
/* enum: DPU.net 'full' receive pipe first checksum offload engine profiles -
 * refer to XN-200147-AN.
 */

#define          TABLE_ID_DPU_NET_RX_CSUM0_OE_PROFILE 0x1020100
/* enum: DPU.net 'full' receive pipe second checksum offload engine profiles -
 * refer to XN-200147-AN.
 */

#define          TABLE_ID_DPU_NET_RX_CSUM1_OE_PROFILE 0x1020110
/* enum: DPU.net 'full' receive pipe AES-GCM offload engine profiles - refer to
 * XN-200147-AN.
 */

#define          TABLE_ID_DPU_NET_RX_AES_GCM0_OE_PROFILE 0x1020200
/* enum: DPU.net 'lite' receive pipe CRC offload engine profiles - refer to
 * XN-200147-AN.
 */

#define          TABLE_ID_DPU_NET_RXLITE_CRC0_OE_PROFILE 0x1021000
/* enum: DPU.net 'lite' receive pipe checksum offload engine profiles - refer
 * to XN-200147-AN.
 */

#define          TABLE_ID_DPU_NET_RXLITE_CSUM0_OE_PROFILE 0x1021100
/* enum: DPU.net 'full' transmit pipe CRC offload engine profiles - refer to
 * XN-200147-AN.
 */

#define          TABLE_ID_DPU_NET_TX_CRC0_OE_PROFILE 0x1028000
/* enum: DPU.net 'full' transmit pipe first checksum offload engine profiles -
 * refer to XN-200147-AN.
 */

#define          TABLE_ID_DPU_NET_TX_CSUM0_OE_PROFILE 0x1028100
/* enum: DPU.net 'full' transmit pipe second checksum offload engine profiles -
 * refer to XN-200147-AN.
 */

#define          TABLE_ID_DPU_NET_TX_CSUM1_OE_PROFILE 0x1028110
/* enum: DPU.net 'full' transmit pipe AES-GCM offload engine profiles - refer
 * to XN-200147-AN.
 */

#define          TABLE_ID_DPU_NET_TX_AES_GCM0_OE_PROFILE 0x1028200
/* enum: DPU.net 'lite' transmit pipe CRC offload engine profiles - refer to
 * XN-200147-AN.
 */

#define          TABLE_ID_DPU_NET_TXLITE_CRC0_OE_PROFILE 0x1029000
/* enum: DPU.net 'lite' transmit pipe checksum offload engine profiles - refer
 * to XN-200147-AN.
 */

#define          TABLE_ID_DPU_NET_TXLITE_CSUM0_OE_PROFILE 0x1029100

/* TABLE_FIELD_ID enum: Unique IDs for fields. Related concepts have been
 * loosely grouped together into blocks with gaps for expansion, but the values
 * are arbitrary. Field IDs are not specific to particular tables, and in some
 * cases this sharing means that they are not used with the exact names of the
 * corresponding table definitions in SF-123102-TC; however, the mapping should
 * still be clear. The intent is that a list of fields, with their associated
 * bit widths and semantics version code, unambiguously defines the semantics
 * of the fields in a key or response. (Again, this list includes all of the
 * fields currently defined within the streaming engines, but only a subset may
 * actually be used by the supported list of tables.)
 */

/* enum: May appear multiple times within a key or response, and indicates that
 * the field is unused and should be set to 0 (or masked out if permitted by
 * the MASK_VALUE for this field).
 */

#define          TABLE_FIELD_ID_UNUSED 0x0
/* enum: Source m-port (a full m-port label). */
#define          TABLE_FIELD_ID_SRC_MPORT 0x1
/* enum: Destination m-port (a full m-port label). */
#define          TABLE_FIELD_ID_DST_MPORT 0x2
/* enum: Source m-group ID. */
#define          TABLE_FIELD_ID_SRC_MGROUP_ID 0x3
/* enum: Physical network port ID (or m-port ID; same thing, for physical
 * network ports).
 */

#define          TABLE_FIELD_ID_NETWORK_PORT_ID 0x4
/* enum: True if packet arrived via network port, false if it arrived via host.
 */

#define          TABLE_FIELD_ID_IS_FROM_NETWORK 0x5
/* enum: Full virtual channel from capsule header. */
#define          TABLE_FIELD_ID_CH_VC 0x6
/* enum: Low bits of virtual channel from capsule header. */
#define          TABLE_FIELD_ID_CH_VC_LOW 0x7
/* enum: User mark value in metadata and packet prefix. */
#define          TABLE_FIELD_ID_USER_MARK 0x8
/* enum: User flag value in metadata and packet prefix. */
#define          TABLE_FIELD_ID_USER_FLAG 0x9
/* enum: Counter ID associated with a response. All-bits-1 is a null value to
 * suppress counting.
 */

#define          TABLE_FIELD_ID_COUNTER_ID 0xa
/* enum: Discriminator which may be set by plugins in some lookup keys; this
 * allows plugins to make a reinterpretation of packet fields in these keys
 * without clashing with the normal interpretation.
 */

#define          TABLE_FIELD_ID_DISCRIM 0xb
/* enum: Destination MAC address. The mapping from bytes in a frame to the
 * 48-bit value for this field is in network order, i.e. a MAC address of
 * AA:BB:CC:DD:EE:FF becomes a 48-bit value of 0xAABBCCDDEEFF.
 */

#define          TABLE_FIELD_ID_DST_MAC 0x14
/* enum: Source MAC address (see notes for DST_MAC). */
#define          TABLE_FIELD_ID_SRC_MAC 0x15
/* enum: Outer VLAN tag TPID, compressed to an enumeration. */
#define          TABLE_FIELD_ID_OVLAN_TPID_COMPRESSED 0x16
/* enum: Full outer VLAN tag TCI (16 bits). */
#define          TABLE_FIELD_ID_OVLAN 0x17
/* enum: Outer VLAN ID (least significant 12 bits of full 16-bit TCI) only. */
#define          TABLE_FIELD_ID_OVLAN_VID 0x18
/* enum: Inner VLAN tag TPID, compressed to an enumeration. */
#define          TABLE_FIELD_ID_IVLAN_TPID_COMPRESSED 0x19
/* enum: Full inner VLAN tag TCI (16 bits). */
#define          TABLE_FIELD_ID_IVLAN 0x1a
/* enum: Inner VLAN ID (least significant 12 bits of full 16-bit TCI) only. */
#define          TABLE_FIELD_ID_IVLAN_VID 0x1b
/* enum: Ethertype. */
#define          TABLE_FIELD_ID_ETHER_TYPE 0x1c
/* enum: Source IP address, either IPv4 or IPv6. The mapping from bytes in a
 * frame to the 128-bit value for this field is in network order, with IPv4
 * addresses assumed to have 12 bytes of trailing zeroes. i.e. the IPv6 address
 * [2345::6789:ABCD] is 0x2345000000000000000000006789ABCD; the IPv4 address
 * 192.168.1.2 is 0xC0A80102000000000000000000000000.
 */

#define          TABLE_FIELD_ID_SRC_IP 0x1d
/* enum: Destination IP address (see notes for SRC_IP). */
#define          TABLE_FIELD_ID_DST_IP 0x1e
/* enum: IPv4 Type-of-Service or IPv6 Traffic Class field. */
#define          TABLE_FIELD_ID_IP_TOS 0x1f
/* enum: IP Protocol. */
#define          TABLE_FIELD_ID_IP_PROTO 0x20
/* enum: Layer 4 source port. */
#define          TABLE_FIELD_ID_SRC_PORT 0x21
/* enum: Layer 4 destination port. */
#define          TABLE_FIELD_ID_DST_PORT 0x22
/* enum: TCP flags. */
#define          TABLE_FIELD_ID_TCP_FLAGS 0x23
/* enum: Virtual Network Identifier (VXLAN) or Virtual Session ID (NVGRE). */
#define          TABLE_FIELD_ID_VNI 0x24
/* enum: True if packet has any tunnel encapsulation header. */
#define          TABLE_FIELD_ID_HAS_ENCAP 0x32
/* enum: True if encap header has an outer VLAN tag. */
#define          TABLE_FIELD_ID_HAS_ENC_OVLAN 0x33
/* enum: True if encap header has an inner VLAN tag. */
#define          TABLE_FIELD_ID_HAS_ENC_IVLAN 0x34
/* enum: True if encap header is some sort of IP. */
#define          TABLE_FIELD_ID_HAS_ENC_IP 0x35
/* enum: True if encap header is specifically IPv4. */
#define          TABLE_FIELD_ID_HAS_ENC_IP4 0x36
/* enum: True if encap header is UDP. */
#define          TABLE_FIELD_ID_HAS_ENC_UDP 0x37
/* enum: True if only/inner frame has an outer VLAN tag. */
#define          TABLE_FIELD_ID_HAS_OVLAN 0x38
/* enum: True if only/inner frame has an inner VLAN tag. */
#define          TABLE_FIELD_ID_HAS_IVLAN 0x39
/* enum: True if only/inner frame is some sort of IP. */
#define          TABLE_FIELD_ID_HAS_IP 0x3a
/* enum: True if only/inner frame has a recognised L4 IP protocol (TCP or UDP).
 */

#define          TABLE_FIELD_ID_HAS_L4 0x3b
/* enum: True if only/inner frame is an IP fragment. */
#define          TABLE_FIELD_ID_IP_FRAG 0x3c
/* enum: True if only/inner frame is the first IP fragment (fragment offset 0).
 */

#define          TABLE_FIELD_ID_IP_FIRST_FRAG 0x3d
/* enum: True if only/inner frame has an IP Time-To-Live of <= 1. (Note: the
 * implementation calls this "ip_ttl_is_one" but does in fact match packets
 * with TTL=0 - which we shouldn't be seeing! - as well.)
 */

#define          TABLE_FIELD_ID_IP_TTL_LE_ONE 0x3e
/* enum: True if only/inner frame has any of TCP SYN, FIN or RST flags set. */
#define          TABLE_FIELD_ID_TCP_INTERESTING_FLAGS 0x3f
/* enum: Plugin channel selection. */
#define          TABLE_FIELD_ID_RDP_PL_CHAN 0x50
/* enum: Enable update of CH_ROUTE_RDP_C_PL route bit. */
#define          TABLE_FIELD_ID_RDP_C_PL_EN 0x51
/* enum: New value of CH_ROUTE_RDP_C_PL route bit. */
#define          TABLE_FIELD_ID_RDP_C_PL 0x52
/* enum: Enable update of CH_ROUTE_RDP_D_PL route bit. */
#define          TABLE_FIELD_ID_RDP_D_PL_EN 0x53
/* enum: New value of CH_ROUTE_RDP_D_PL route bit. */
#define          TABLE_FIELD_ID_RDP_D_PL 0x54
/* enum: Enable update of CH_ROUTE_RDP_OUT_HOST_CHAN route bit. */
#define          TABLE_FIELD_ID_RDP_OUT_HOST_CHAN_EN 0x55
/* enum: New value of CH_ROUTE_RDP_OUT_HOST_CHAN route bit. */
#define          TABLE_FIELD_ID_RDP_OUT_HOST_CHAN 0x56
/* enum: Recirculation ID for lookup sequences with two action rule lookups. */
#define          TABLE_FIELD_ID_RECIRC_ID 0x64
/* enum: Domain ID passed to conntrack and action rule lookups. */
#define          TABLE_FIELD_ID_DOMAIN 0x65
/* enum: Construction mode for encap_tunnel_id - see MAE_CT_VNI_MODE enum. */
#define          TABLE_FIELD_ID_CT_VNI_MODE 0x66
/* enum: True to inhibit conntrack lookup if TCP SYN, FIN or RST flag is set.
 */

#define          TABLE_FIELD_ID_CT_TCP_FLAGS_INHIBIT 0x67
/* enum: True to do conntrack lookups for IPv4 TCP packets. */
#define          TABLE_FIELD_ID_DO_CT_IP4_TCP 0x68
/* enum: True to do conntrack lookups for IPv4 UDP packets. */
#define          TABLE_FIELD_ID_DO_CT_IP4_UDP 0x69
/* enum: True to do conntrack lookups for IPv6 TCP packets. */
#define          TABLE_FIELD_ID_DO_CT_IP6_TCP 0x6a
/* enum: True to do conntrack lookups for IPv6 UDP packets. */
#define          TABLE_FIELD_ID_DO_CT_IP6_UDP 0x6b
/* enum: Outer rule identifier. */
#define          TABLE_FIELD_ID_OUTER_RULE_ID 0x6c
/* enum: Encapsulation type - see MAE_MCDI_ENCAP_TYPE enum. */
#define          TABLE_FIELD_ID_ENCAP_TYPE 0x6d
/* enum: Encap tunnel ID for conntrack lookups from VNI, VLAN tag(s), or 0,
 * depending on CT_VNI_MODE.
 */

#define          TABLE_FIELD_ID_ENCAP_TUNNEL_ID 0x78
/* enum: A conntrack entry identifier, passed to plugins. */
#define          TABLE_FIELD_ID_CT_ENTRY_ID 0x79
/* enum: Either source or destination NAT replacement port. */
#define          TABLE_FIELD_ID_NAT_PORT 0x7a
/* enum: Either source or destination NAT replacement IPv4 address. Note that
 * this is specifically an IPv4 address (IPv6 is not supported for NAT), with
 * byte mapped to a 32-bit value in network order, i.e. the IPv4 address
 * 192.168.1.2 is the value 0xC0A80102.
 */

#define          TABLE_FIELD_ID_NAT_IP 0x7b
/* enum: NAT direction: 0=>source, 1=>destination. */
#define          TABLE_FIELD_ID_NAT_DIR 0x7c
/* enum: Conntrack mark value, passed to action rule lookup. Note that this is
 * not related to the "user mark" in the metadata / packet prefix.
 */

#define          TABLE_FIELD_ID_CT_MARK 0x7d
/* enum: Private flags for conntrack, passed to action rule lookup. */
#define          TABLE_FIELD_ID_CT_PRIV_FLAGS 0x7e
/* enum: True if the conntrack lookup resulted in a hit. */
#define          TABLE_FIELD_ID_CT_HIT 0x7f
/* enum: True to suppress delivery when source and destination m-ports match.
 */

#define          TABLE_FIELD_ID_SUPPRESS_SELF_DELIVERY 0x8c
/* enum: True to perform tunnel decapsulation. */
#define          TABLE_FIELD_ID_DO_DECAP 0x8d
/* enum: True to copy outer frame DSCP to inner on decap. */
#define          TABLE_FIELD_ID_DECAP_DSCP_COPY 0x8e
/* enum: True to map outer frame ECN to inner on decap, by RFC 6040 rules. */
#define          TABLE_FIELD_ID_DECAP_ECN_RFC6040 0x8f
/* enum: True to replace DSCP field. */
#define          TABLE_FIELD_ID_DO_REPLACE_DSCP 0x90
/* enum: True to replace ECN field. */
#define          TABLE_FIELD_ID_DO_REPLACE_ECN 0x91
/* enum: True to decrement IP Time-To-Live. */
#define          TABLE_FIELD_ID_DO_DECR_IP_TTL 0x92
/* enum: True to replace source MAC address. */
#define          TABLE_FIELD_ID_DO_SRC_MAC 0x93
/* enum: True to replace destination MAC address. */
#define          TABLE_FIELD_ID_DO_DST_MAC 0x94
/* enum: Number of VLAN tags to pop. Valid values are 0, 1, or 2. */
#define          TABLE_FIELD_ID_DO_VLAN_POP 0x95
/* enum: Number of VLANs tags to push. Valid values are 0, 1, or 2. */
#define          TABLE_FIELD_ID_DO_VLAN_PUSH 0x96
/* enum: True to count this packet. */
#define          TABLE_FIELD_ID_DO_COUNT 0x97
/* enum: True to perform tunnel encapsulation. */
#define          TABLE_FIELD_ID_DO_ENCAP 0x98
/* enum: True to copy inner frame DSCP to outer on encap. */
#define          TABLE_FIELD_ID_ENCAP_DSCP_COPY 0x99
/* enum: True to copy inner frame ECN to outer on encap. */
#define          TABLE_FIELD_ID_ENCAP_ECN_COPY 0x9a
/* enum: True to deliver the packet (otherwise it is dropped). */
#define          TABLE_FIELD_ID_DO_DELIVER 0x9b
/* enum: True to set the user flag in the metadata. */
#define          TABLE_FIELD_ID_DO_FLAG 0x9c
/* enum: True to update the user mark in the metadata. */
#define          TABLE_FIELD_ID_DO_MARK 0x9d
/* enum: True to override the capsule virtual channel for network deliveries.
 */

#define          TABLE_FIELD_ID_DO_SET_NET_CHAN 0x9e
/* enum: True to override the reported source m-port for host deliveries. */
#define          TABLE_FIELD_ID_DO_SET_SRC_MPORT 0x9f
/* enum: Encap header ID for DO_ENCAP, indexing Encap_Hdr_Part1/2_Table. */
#define          TABLE_FIELD_ID_ENCAP_HDR_ID 0xaa
/* enum: New DSCP value for DO_REPLACE_DSCP. */
#define          TABLE_FIELD_ID_DSCP_VALUE 0xab
/* enum: If DO_REPLACE_ECN is set, the new value for the ECN field. If
 * DO_REPLACE_ECN is not set, ECN_CONTROL[0] and ECN_CONTROL[1] are set to
 * request remapping of ECT0 and ECT1 ECN codepoints respectively to CE.
 */

#define          TABLE_FIELD_ID_ECN_CONTROL 0xac
/* enum: Source MAC ID for DO_SRC_MAC, indexing Replace_Src_MAC_Table. */
#define          TABLE_FIELD_ID_SRC_MAC_ID 0xad
/* enum: Destination MAC ID for DO_DST_MAC, indexing Replace_Dst_MAC_Table. */
#define          TABLE_FIELD_ID_DST_MAC_ID 0xae
/* enum: Parameter for either DO_SET_NET_CHAN (only bottom 6 bits used in this
 * case) or DO_SET_SRC_MPORT.
 */

#define          TABLE_FIELD_ID_REPORTED_SRC_MPORT_OR_NET_CHAN 0xaf
/* enum: 64-byte chunk of added encapsulation header. */
#define          TABLE_FIELD_ID_CHUNK64 0xb4
/* enum: 32-byte chunk of added encapsulation header. */
#define          TABLE_FIELD_ID_CHUNK32 0xb5
/* enum: 16-byte chunk of added encapsulation header. */
#define          TABLE_FIELD_ID_CHUNK16 0xb6
/* enum: 8-byte chunk of added encapsulation header. */
#define          TABLE_FIELD_ID_CHUNK8 0xb7
/* enum: 4-byte chunk of added encapsulation header. */
#define          TABLE_FIELD_ID_CHUNK4 0xb8
/* enum: 2-byte chunk of added encapsulation header. */
#define          TABLE_FIELD_ID_CHUNK2 0xb9
/* enum: Added encapsulation header length in words. */
#define          TABLE_FIELD_ID_HDR_LEN_W 0xba
/* enum: Static value for layer 2/3 LACP hash of the encapsulation header. */
#define          TABLE_FIELD_ID_ENC_LACP_HASH_L23 0xbb
/* enum: Static value for layer 4 LACP hash of the encapsulation header. */
#define          TABLE_FIELD_ID_ENC_LACP_HASH_L4 0xbc
/* enum: True to use the static ENC_LACP_HASH values for the encap header
 * instead of the calculated values for the inner frame when delivering a newly
 * encapsulated packet to a LAG m-port.
 */

#define          TABLE_FIELD_ID_USE_ENC_LACP_HASHES 0xbd
/* enum: True to trigger conntrack from first action rule lookup (AR=>CT=>AR
 * sequence).
 */

#define          TABLE_FIELD_ID_DO_CT 0xc8
/* enum: True to perform NAT using parameters from conntrack lookup response.
 */

#define          TABLE_FIELD_ID_DO_NAT 0xc9
/* enum: True to trigger recirculated action rule lookup (AR=>AR sequence). */
#define          TABLE_FIELD_ID_DO_RECIRC 0xca
/* enum: Next action set payload ID for replay. The null value is all-1-bits.
 */

#define          TABLE_FIELD_ID_NEXT_ACTION_SET_PAYLOAD 0xcb
/* enum: Next action set row ID for replay. The null value is all-1-bits. */
#define          TABLE_FIELD_ID_NEXT_ACTION_SET_ROW 0xcc
/* enum: Action set payload ID for additional delivery to management CPU. The
 * null value is all-1-bits.
 */

#define          TABLE_FIELD_ID_MC_ACTION_SET_PAYLOAD 0xcd
/* enum: Action set row ID for additional delivery to management CPU. The null
 * value is all-1-bits.
 */

#define          TABLE_FIELD_ID_MC_ACTION_SET_ROW 0xce
/* enum: True to include layer 4 in LACP hash on delivery to a LAG m-port. */
#define          TABLE_FIELD_ID_LACP_INC_L4 0xdc
/* enum: True to request that LACP is performed by a plugin. */
#define          TABLE_FIELD_ID_LACP_PLUGIN 0xdd
/* enum: LACP_Balance_Table base address divided by 64. */
#define          TABLE_FIELD_ID_BAL_TBL_BASE_DIV64 0xde
/* enum: Length of balance table region: 0=>64, 1=>128, 2=>256. */
#define          TABLE_FIELD_ID_BAL_TBL_LEN_ID 0xdf
/* enum: LACP LAG ID (i.e. the low 3 bits of LACP LAG mport ID), indexing
 * LACP_LAG_Config_Table. Refer to SF-123102-TC.
 */

#define          TABLE_FIELD_ID_LACP_LAG_ID 0xe0
/* enum: Address in LACP_Balance_Table. The balance table is partitioned
 * between LAGs according to the settings in LACP_LAG_Config_Table and then
 * indexed by the LACP hash, providing the mapping to destination mports. Refer
 * to SF-123102-TC.
 */

#define          TABLE_FIELD_ID_BAL_TBL_ADDR 0xe1
/* enum: UDP port to match for UDP-based encapsulations; required to be 0 for
 * other encapsulation types.
 */

#define          TABLE_FIELD_ID_UDP_PORT 0xe6
/* enum: True to perform RSS based on outer fields rather than inner fields. */
#define          TABLE_FIELD_ID_RSS_ON_OUTER 0xe7
/* enum: True to perform steering table lookup on outer fields rather than
 * inner fields.
 */

#define          TABLE_FIELD_ID_STEER_ON_OUTER 0xe8
/* enum: Destination queue ID for host delivery. */
#define          TABLE_FIELD_ID_DST_QID 0xf0
/* enum: True to drop this packet. */
#define          TABLE_FIELD_ID_DROP 0xf1
/* enum: True to strip outer VLAN tag from this packet. */
#define          TABLE_FIELD_ID_VLAN_STRIP 0xf2
/* enum: True to override the user mark field with the supplied USER_MARK, or
 * false to bitwise-OR the USER_MARK into it.
 */

#define          TABLE_FIELD_ID_MARK_OVERRIDE 0xf3
/* enum: True to override the user flag field with the supplied USER_FLAG, or
 * false to bitwise-OR the USER_FLAG into it.
 */

#define          TABLE_FIELD_ID_FLAG_OVERRIDE 0xf4
/* enum: RSS context ID, indexing the RSS_Context_Table. */
#define          TABLE_FIELD_ID_RSS_CTX_ID 0xfa
/* enum: True to enable RSS. */
#define          TABLE_FIELD_ID_RSS_EN 0xfb
/* enum: Toeplitz hash key. */
#define          TABLE_FIELD_ID_KEY 0xfc
/* enum: Key mode for IPv4 TCP packets - see TABLE_RSS_KEY_MODE enum. */
#define          TABLE_FIELD_ID_TCP_V4_KEY_MODE 0xfd
/* enum: Key mode for IPv6 TCP packets - see TABLE_RSS_KEY_MODE enum. */
#define          TABLE_FIELD_ID_TCP_V6_KEY_MODE 0xfe
/* enum: Key mode for IPv4 UDP packets - see TABLE_RSS_KEY_MODE enum. */
#define          TABLE_FIELD_ID_UDP_V4_KEY_MODE 0xff
/* enum: Key mode for IPv6 UDP packets - see TABLE_RSS_KEY_MODE enum. */
#define          TABLE_FIELD_ID_UDP_V6_KEY_MODE 0x100
/* enum: Key mode for other IPv4 packets - see TABLE_RSS_KEY_MODE enum. */
#define          TABLE_FIELD_ID_OTHER_V4_KEY_MODE 0x101
/* enum: Key mode for other IPv6 packets - see TABLE_RSS_KEY_MODE enum. */
#define          TABLE_FIELD_ID_OTHER_V6_KEY_MODE 0x102
/* enum: Spreading mode - 0=>indirection; 1=>even. */
#define          TABLE_FIELD_ID_SPREAD_MODE 0x103
/* enum: For indirection spreading mode, the base address of a region within
 * the Indirection_Table. For even spreading mode, the number of queues to
 * spread across (only values 1-255 are valid for this mode).
 */

#define          TABLE_FIELD_ID_INDIR_TBL_BASE 0x104
/* enum: For indirection spreading mode, identifies the length of a region
 * within the Indirection_Table, where length = 32 << len_id. Must be set to 0
 * for even spreading mode.
 */

#define          TABLE_FIELD_ID_INDIR_TBL_LEN_ID 0x105
/* enum: An offset to be applied to the base destination queue ID. */
#define          TABLE_FIELD_ID_INDIR_OFFSET 0x106
/* enum: DPU offload engine profile ID to address. */
#define          TABLE_FIELD_ID_OE_PROFILE 0x3e8
/* enum: Width of the CRC to calculate - see CRC_VARIANT enum. */
#define          TABLE_FIELD_ID_CRC_VARIANT 0x3f2
/* enum: If set, reflect the bits of each input byte, bit 7 is LSB, bit 0 is
 * MSB. If clear, bit 7 is MSB, bit 0 is LSB.
 */

#define          TABLE_FIELD_ID_CRC_REFIN 0x3f3
/* enum: If set, reflect the bits of each output byte, bit 7 is LSB, bit 0 is
 * MSB. If clear, bit 7 is MSB, bit 0 is LSB.
 */

#define          TABLE_FIELD_ID_CRC_REFOUT 0x3f4
/* enum: If set, invert every bit of the output value. */
#define          TABLE_FIELD_ID_CRC_INVOUT 0x3f5
/* enum: The CRC polynomial to use for checksumming, in normal form. */
#define          TABLE_FIELD_ID_CRC_POLY 0x3f6
/* enum: Operation for the checksum engine to perform - see DPU_CSUM_OP enum.
 */

#define          TABLE_FIELD_ID_CSUM_OP 0x410
/* enum: Byte offset of checksum relative to region_start (for VALIDATE_*
 * operations only).
 */

#define          TABLE_FIELD_ID_CSUM_OFFSET 0x411
/* enum: Indicates there is additional data on OPR bus that needs to be
 * incorporated into the payload checksum.
 */

#define          TABLE_FIELD_ID_CSUM_OPR_ADDITIONAL_DATA 0x412
/* enum: Log2 data size of additional data on OPR bus. */
#define          TABLE_FIELD_ID_CSUM_OPR_DATA_SIZE_LOG2 0x413
/* enum: 4 byte offset of where to find the additional data on the OPR bus. */
#define          TABLE_FIELD_ID_CSUM_OPR_4B_OFF 0x414
/* enum: Operation type for the AES-GCM core - see GCM_OP_CODE enum. */
#define          TABLE_FIELD_ID_GCM_OP_CODE 0x41a
/* enum: Key length - AES_KEY_LEN enum. */
#define          TABLE_FIELD_ID_GCM_KEY_LEN 0x41b
/* enum: OPR 4 byte offset for ICV or GHASH output (only in BULK_* mode) or
 * IPSEC descrypt output.
 */

#define          TABLE_FIELD_ID_GCM_OPR_4B_OFFSET 0x41c
/* enum: If OP_CODE is BULK_*, indicates Emit GHASH (Fragment mode). Else,
 * indicates IPSEC-ESN mode.
 */

#define          TABLE_FIELD_ID_GCM_EMIT_GHASH_ISESN 0x41d
/* enum: Replay Protection Enable. */
#define          TABLE_FIELD_ID_GCM_REPLAY_PROTECT_EN 0x41e
/* enum: IPSEC Encrypt ESP trailer NEXT_HEADER byte. */
#define          TABLE_FIELD_ID_GCM_NEXT_HDR 0x41f
/* enum: Replay Window Size. */
#define          TABLE_FIELD_ID_GCM_REPLAY_WIN_SIZE 0x420

/* MCDI_EVENT structuredef: The structure of an MCDI_EVENT on Siena/EF10/EF100
 * platforms
 */

#define    MCDI_EVENT_LEN 8
#define       MCDI_EVENT_CONT_LBN 32
#define       MCDI_EVENT_CONT_WIDTH 1
#define       MCDI_EVENT_LEVEL_LBN 33
#define       MCDI_EVENT_LEVEL_WIDTH 3
/* enum: Info. */
#define          MCDI_EVENT_LEVEL_INFO 0x0
/* enum: Warning. */
#define          MCDI_EVENT_LEVEL_WARN 0x1
/* enum: Error. */
#define          MCDI_EVENT_LEVEL_ERR 0x2
/* enum: Fatal. */
#define          MCDI_EVENT_LEVEL_FATAL 0x3
#define       MCDI_EVENT_DATA_OFST 0
#define       MCDI_EVENT_DATA_LEN 4
#define        MCDI_EVENT_CMDDONE_SEQ_OFST 0
#define        MCDI_EVENT_CMDDONE_SEQ_LBN 0
#define        MCDI_EVENT_CMDDONE_SEQ_WIDTH 8
#define        MCDI_EVENT_CMDDONE_DATALEN_OFST 0
#define        MCDI_EVENT_CMDDONE_DATALEN_LBN 8
#define        MCDI_EVENT_CMDDONE_DATALEN_WIDTH 8
#define        MCDI_EVENT_CMDDONE_ERRNO_OFST 0
#define        MCDI_EVENT_CMDDONE_ERRNO_LBN 16
#define        MCDI_EVENT_CMDDONE_ERRNO_WIDTH 8
#define        MCDI_EVENT_LINKCHANGE_LP_CAP_OFST 0
#define        MCDI_EVENT_LINKCHANGE_LP_CAP_LBN 0
#define        MCDI_EVENT_LINKCHANGE_LP_CAP_WIDTH 16
#define        MCDI_EVENT_LINKCHANGE_SPEED_OFST 0
#define        MCDI_EVENT_LINKCHANGE_SPEED_LBN 16
#define        MCDI_EVENT_LINKCHANGE_SPEED_WIDTH 4
/* enum: Link is down or link speed could not be determined */
#define          MCDI_EVENT_LINKCHANGE_SPEED_UNKNOWN 0x0
/* enum: 100Mbs */
#define          MCDI_EVENT_LINKCHANGE_SPEED_100M 0x1
/* enum: 1Gbs */
#define          MCDI_EVENT_LINKCHANGE_SPEED_1G 0x2
/* enum: 10Gbs */
#define          MCDI_EVENT_LINKCHANGE_SPEED_10G 0x3
/* enum: 40Gbs */
#define          MCDI_EVENT_LINKCHANGE_SPEED_40G 0x4
/* enum: 25Gbs */
#define          MCDI_EVENT_LINKCHANGE_SPEED_25G 0x5
/* enum: 50Gbs */
#define          MCDI_EVENT_LINKCHANGE_SPEED_50G 0x6
/* enum: 100Gbs */
#define          MCDI_EVENT_LINKCHANGE_SPEED_100G 0x7
#define        MCDI_EVENT_LINKCHANGE_FCNTL_OFST 0
#define        MCDI_EVENT_LINKCHANGE_FCNTL_LBN 20
#define        MCDI_EVENT_LINKCHANGE_FCNTL_WIDTH 4
#define        MCDI_EVENT_LINKCHANGE_LINK_FLAGS_OFST 0
#define        MCDI_EVENT_LINKCHANGE_LINK_FLAGS_LBN 24
#define        MCDI_EVENT_LINKCHANGE_LINK_FLAGS_WIDTH 8
#define        MCDI_EVENT_PORT_LINKCHANGE_PORT_HANDLE_OFST 0
#define        MCDI_EVENT_PORT_LINKCHANGE_PORT_HANDLE_LBN 0
#define        MCDI_EVENT_PORT_LINKCHANGE_PORT_HANDLE_WIDTH 24
#define        MCDI_EVENT_PORT_LINKCHANGE_SEQ_NUM_OFST 0
#define        MCDI_EVENT_PORT_LINKCHANGE_SEQ_NUM_LBN 24
#define        MCDI_EVENT_PORT_LINKCHANGE_SEQ_NUM_WIDTH 7
#define        MCDI_EVENT_PORT_LINKCHANGE_LINK_UP_OFST 0
#define        MCDI_EVENT_PORT_LINKCHANGE_LINK_UP_LBN 31
#define        MCDI_EVENT_PORT_LINKCHANGE_LINK_UP_WIDTH 1
#define        MCDI_EVENT_PORT_MODULECHANGE_PORT_HANDLE_OFST 0
#define        MCDI_EVENT_PORT_MODULECHANGE_PORT_HANDLE_LBN 0
#define        MCDI_EVENT_PORT_MODULECHANGE_PORT_HANDLE_WIDTH 24
#define        MCDI_EVENT_PORT_MODULECHANGE_SEQ_NUM_OFST 0
#define        MCDI_EVENT_PORT_MODULECHANGE_SEQ_NUM_LBN 24
#define        MCDI_EVENT_PORT_MODULECHANGE_SEQ_NUM_WIDTH 7
#define        MCDI_EVENT_PORT_MODULECHANGE_MDI_CONNECTED_OFST 0
#define        MCDI_EVENT_PORT_MODULECHANGE_MDI_CONNECTED_LBN 31
#define        MCDI_EVENT_PORT_MODULECHANGE_MDI_CONNECTED_WIDTH 1
#define        MCDI_EVENT_SENSOREVT_MONITOR_OFST 0
#define        MCDI_EVENT_SENSOREVT_MONITOR_LBN 0
#define        MCDI_EVENT_SENSOREVT_MONITOR_WIDTH 8
#define        MCDI_EVENT_SENSOREVT_STATE_OFST 0
#define        MCDI_EVENT_SENSOREVT_STATE_LBN 8
#define        MCDI_EVENT_SENSOREVT_STATE_WIDTH 8
#define        MCDI_EVENT_SENSOREVT_VALUE_OFST 0
#define        MCDI_EVENT_SENSOREVT_VALUE_LBN 16
#define        MCDI_EVENT_SENSOREVT_VALUE_WIDTH 16
#define        MCDI_EVENT_FWALERT_DATA_OFST 0
#define        MCDI_EVENT_FWALERT_DATA_LBN 8
#define        MCDI_EVENT_FWALERT_DATA_WIDTH 24
#define        MCDI_EVENT_FWALERT_REASON_OFST 0
#define        MCDI_EVENT_FWALERT_REASON_LBN 0
#define        MCDI_EVENT_FWALERT_REASON_WIDTH 8
/* enum: SRAM Access. */
#define          MCDI_EVENT_FWALERT_REASON_SRAM_ACCESS 0x1
#define        MCDI_EVENT_FLR_VF_OFST 0
#define        MCDI_EVENT_FLR_VF_LBN 0
#define        MCDI_EVENT_FLR_VF_WIDTH 8
#define        MCDI_EVENT_TX_ERR_TXQ_OFST 0
#define        MCDI_EVENT_TX_ERR_TXQ_LBN 0
#define        MCDI_EVENT_TX_ERR_TXQ_WIDTH 12
#define        MCDI_EVENT_TX_ERR_TYPE_OFST 0
#define        MCDI_EVENT_TX_ERR_TYPE_LBN 12
#define        MCDI_EVENT_TX_ERR_TYPE_WIDTH 4
/* enum: Descriptor loader reported failure. Specific to EF10-family NICs. */
#define          MCDI_EVENT_TX_ERR_DL_FAIL 0x1
/* enum: Descriptor ring empty and no EOP seen for packet. Specific to
 * EF10-family NICs
 */

#define          MCDI_EVENT_TX_ERR_NO_EOP 0x2
/* enum: Overlength packet. Specific to EF10-family NICs. */
#define          MCDI_EVENT_TX_ERR_2BIG 0x3
/* enum: Malformed option descriptor. Specific to EF10-family NICs. */
#define          MCDI_EVENT_TX_BAD_OPTDESC 0x5
/* enum: Option descriptor part way through a packet. Specific to EF10-family
 * NICs.
 */

#define          MCDI_EVENT_TX_OPT_IN_PKT 0x8
/* enum: DMA or PIO data access error. Specific to EF10-family NICs */
#define          MCDI_EVENT_TX_ERR_BAD_DMA_OR_PIO 0x9
#define        MCDI_EVENT_TX_ERR_INFO_OFST 0
#define        MCDI_EVENT_TX_ERR_INFO_LBN 16
#define        MCDI_EVENT_TX_ERR_INFO_WIDTH 16
#define        MCDI_EVENT_TX_FLUSH_TO_DRIVER_OFST 0
#define        MCDI_EVENT_TX_FLUSH_TO_DRIVER_LBN 12
#define        MCDI_EVENT_TX_FLUSH_TO_DRIVER_WIDTH 1
#define        MCDI_EVENT_TX_FLUSH_TXQ_OFST 0
#define        MCDI_EVENT_TX_FLUSH_TXQ_LBN 0
#define        MCDI_EVENT_TX_FLUSH_TXQ_WIDTH 12
#define        MCDI_EVENT_PTP_ERR_TYPE_OFST 0
#define        MCDI_EVENT_PTP_ERR_TYPE_LBN 0
#define        MCDI_EVENT_PTP_ERR_TYPE_WIDTH 8
/* enum: PLL lost lock */
#define          MCDI_EVENT_PTP_ERR_PLL_LOST 0x1
/* enum: Filter overflow (PDMA) */
#define          MCDI_EVENT_PTP_ERR_FILTER 0x2
/* enum: FIFO overflow (FPGA) */
#define          MCDI_EVENT_PTP_ERR_FIFO 0x3
/* enum: Merge queue overflow */
#define          MCDI_EVENT_PTP_ERR_QUEUE 0x4
#define        MCDI_EVENT_AOE_ERR_TYPE_OFST 0
#define        MCDI_EVENT_AOE_ERR_TYPE_LBN 0
#define        MCDI_EVENT_AOE_ERR_TYPE_WIDTH 8
/* enum: AOE failed to load - no valid image? */
#define          MCDI_EVENT_AOE_NO_LOAD 0x1
/* enum: AOE FC reported an exception */
#define          MCDI_EVENT_AOE_FC_ASSERT 0x2
/* enum: AOE FC watchdogged */
#define          MCDI_EVENT_AOE_FC_WATCHDOG 0x3
/* enum: AOE FC failed to start */
#define          MCDI_EVENT_AOE_FC_NO_START 0x4
/* enum: Generic AOE fault - likely to have been reported via other means too
 * but intended for use by aoex driver.
 */

#define          MCDI_EVENT_AOE_FAULT 0x5
/* enum: Results of reprogramming the CPLD (status in AOE_ERR_DATA) */
#define          MCDI_EVENT_AOE_CPLD_REPROGRAMMED 0x6
/* enum: AOE loaded successfully */
#define          MCDI_EVENT_AOE_LOAD 0x7
/* enum: AOE DMA operation completed (LSB of HOST_HANDLE in AOE_ERR_DATA) */
#define          MCDI_EVENT_AOE_DMA 0x8
/* enum: AOE byteblaster connected/disconnected (Connection status in
 * AOE_ERR_DATA)
 */

#define          MCDI_EVENT_AOE_BYTEBLASTER 0x9
/* enum: DDR ECC status update */
#define          MCDI_EVENT_AOE_DDR_ECC_STATUS 0xa
/* enum: PTP status update */
#define          MCDI_EVENT_AOE_PTP_STATUS 0xb
/* enum: FPGA header incorrect */
#define          MCDI_EVENT_AOE_FPGA_LOAD_HEADER_ERR 0xc
/* enum: FPGA Powered Off due to error in powering up FPGA */
#define          MCDI_EVENT_AOE_FPGA_POWER_OFF 0xd
/* enum: AOE FPGA load failed due to MC to MUM communication failure */
#define          MCDI_EVENT_AOE_FPGA_LOAD_FAILED 0xe
/* enum: Notify that invalid flash type detected */
#define          MCDI_EVENT_AOE_INVALID_FPGA_FLASH_TYPE 0xf
/* enum: Notify that the attempt to run FPGA Controller firmware timed out */
#define          MCDI_EVENT_AOE_FC_RUN_TIMEDOUT 0x10
/* enum: Failure to probe one or more FPGA boot flash chips */
#define          MCDI_EVENT_AOE_FPGA_BOOT_FLASH_INVALID 0x11
/* enum: FPGA boot-flash contains an invalid image header */
#define          MCDI_EVENT_AOE_FPGA_BOOT_FLASH_HDR_INVALID 0x12
/* enum: Failed to program clocks required by the FPGA */
#define          MCDI_EVENT_AOE_FPGA_CLOCKS_PROGRAM_FAILED 0x13
/* enum: Notify that FPGA Controller is alive to serve MCDI requests */
#define          MCDI_EVENT_AOE_FC_RUNNING 0x14
#define        MCDI_EVENT_AOE_ERR_DATA_OFST 0
#define        MCDI_EVENT_AOE_ERR_DATA_LBN 8
#define        MCDI_EVENT_AOE_ERR_DATA_WIDTH 8
#define        MCDI_EVENT_AOE_ERR_FC_ASSERT_INFO_OFST 0
#define        MCDI_EVENT_AOE_ERR_FC_ASSERT_INFO_LBN 8
#define        MCDI_EVENT_AOE_ERR_FC_ASSERT_INFO_WIDTH 8
/* enum: FC Assert happened, but the register information is not available */
#define          MCDI_EVENT_AOE_ERR_FC_ASSERT_SEEN 0x0
/* enum: The register information for FC Assert is ready for reading by driver
 */

#define          MCDI_EVENT_AOE_ERR_FC_ASSERT_DATA_READY 0x1
#define        MCDI_EVENT_AOE_ERR_CODE_FPGA_HEADER_VERIFY_FAILED_OFST 0
#define        MCDI_EVENT_AOE_ERR_CODE_FPGA_HEADER_VERIFY_FAILED_LBN 8
#define        MCDI_EVENT_AOE_ERR_CODE_FPGA_HEADER_VERIFY_FAILED_WIDTH 8
/* enum: Reading from NV failed */
#define          MCDI_EVENT_AOE_ERR_FPGA_HEADER_NV_READ_FAIL 0x0
/* enum: Invalid Magic Number if FPGA header */
#define          MCDI_EVENT_AOE_ERR_FPGA_HEADER_MAGIC_FAIL 0x1
/* enum: Invalid Silicon type detected in header */
#define          MCDI_EVENT_AOE_ERR_FPGA_HEADER_SILICON_TYPE 0x2
/* enum: Unsupported VRatio */
#define          MCDI_EVENT_AOE_ERR_FPGA_HEADER_VRATIO 0x3
/* enum: Unsupported DDR Type */
#define          MCDI_EVENT_AOE_ERR_FPGA_HEADER_DDR_TYPE 0x4
/* enum: DDR Voltage out of supported range */
#define          MCDI_EVENT_AOE_ERR_FPGA_HEADER_DDR_VOLTAGE 0x5
/* enum: Unsupported DDR speed */
#define          MCDI_EVENT_AOE_ERR_FPGA_HEADER_DDR_SPEED 0x6
/* enum: Unsupported DDR size */
#define          MCDI_EVENT_AOE_ERR_FPGA_HEADER_DDR_SIZE 0x7
/* enum: Unsupported DDR rank */
#define          MCDI_EVENT_AOE_ERR_FPGA_HEADER_DDR_RANK 0x8
#define        MCDI_EVENT_AOE_ERR_CODE_INVALID_FPGA_FLASH_TYPE_INFO_OFST 0
#define        MCDI_EVENT_AOE_ERR_CODE_INVALID_FPGA_FLASH_TYPE_INFO_LBN 8
#define        MCDI_EVENT_AOE_ERR_CODE_INVALID_FPGA_FLASH_TYPE_INFO_WIDTH 8
/* enum: Primary boot flash */
#define          MCDI_EVENT_AOE_FLASH_TYPE_BOOT_PRIMARY 0x0
/* enum: Secondary boot flash */
#define          MCDI_EVENT_AOE_FLASH_TYPE_BOOT_SECONDARY 0x1
#define        MCDI_EVENT_AOE_ERR_CODE_FPGA_POWER_OFF_OFST 0
#define        MCDI_EVENT_AOE_ERR_CODE_FPGA_POWER_OFF_LBN 8
#define        MCDI_EVENT_AOE_ERR_CODE_FPGA_POWER_OFF_WIDTH 8
#define        MCDI_EVENT_AOE_ERR_CODE_FPGA_LOAD_FAILED_OFST 0
#define        MCDI_EVENT_AOE_ERR_CODE_FPGA_LOAD_FAILED_LBN 8
#define        MCDI_EVENT_AOE_ERR_CODE_FPGA_LOAD_FAILED_WIDTH 8
#define        MCDI_EVENT_RX_ERR_RXQ_OFST 0
#define        MCDI_EVENT_RX_ERR_RXQ_LBN 0
#define        MCDI_EVENT_RX_ERR_RXQ_WIDTH 12
#define        MCDI_EVENT_RX_ERR_TYPE_OFST 0
#define        MCDI_EVENT_RX_ERR_TYPE_LBN 12
#define        MCDI_EVENT_RX_ERR_TYPE_WIDTH 4
--> --------------------

--> maximum size reached

--> --------------------

Messung V0.5
C=89 H=93 G=90

¤ Dauer der Verarbeitung: 0.26 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.