/*
*/
/*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
*
* 3. Neither the name of the copyright holder nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef _PSIF_FW_ADDR_H
#define _PSIF_FW_ADDR_H
#ifdef __cplusplus
extern "C" {
#endif
#include "psif_api.h"
/*
* TSU VL mapping table for requests. Inputs/addressing to this table are
*/
/* Per TVL register.Maximum global credits a particular TVL can get. */
/*
* Per TVL register.Maximum private credits a particular TVL can get. The
* amount of credits dedicated to this TVL.
*/
/* Total number of global credits assign to TVLs. */
/* weight given for round robin arbitration for xiu commands. */
/* weight given for round robin arbitration for eps commands. */
/* Data Latency skew from all clients to tsu_host. */
/*
* Per TVL register. The amount of private and global credits used to this
* TVL.
*/
/* Amount of global credits used shared among all TVLs. */
/* when set puts the tsu_host in hca mode for Atomics. */
/*
* when set flips the compare and swap field in xiu meta_data bus in PCIe
* mode.
*/
/* Handling Endianness of host Processor. */
/* allocating global credits to llq in XIU */
/* MRS credit debug counter. */
/* ERR credit debug counter. */
/* LLQ debug counter. */
/* Interrupt status register. 1b per source (1 = int triggered). */
/* Interrupt mask register. 1b per source (1 = masked). */
/* Interrupt priority register. 1b per source (1 = high 0 = low). */
/*
* Interrupt status clear register. 1b per source (1=source will be cleared
* from int_status register when kick is called).
*/
/* Trigger the int_status clear operation. */
/*
* Set when an MMU translation error occur for a write. This feeds into the
* interrupt status register.
*/
/* Used to clear bits in the mmu_translation_error register. */
/* . This feeds into the interrupt status register. */
/* Used to clear bits in the atomic_error register. */
/*
* EPS address which caused the int_status.eps_address_invalid to get set.
*/
/* ECC and Parity Errors status register. */
/* Setting tsu_host in memory Dynamic Reconfiguration. */
/* UF where memory Dynamic Reconfiguration is being performed. */
/* Base address[51:12] where current data is being stored. */
/*
* relocation bound pointer[51:12] to enable translation for addresses
* between reloc_base and reloc_bound1.Stalls commands between reloc_bound1
* and reloc_bound2.
*/
/*
* relocation bound pointer[51:12] to stall commands between reloc_bound1 and
* reloc_bound2.
*/
/* Base address[51:12] where data is being relocated to when dr_mode is set. */
/*
* Page size enable bits[31:12].This is to set the corresponding bits in the
* address starting at address[12]. If all bits are zero the page size is
* 4KBytes. If all bits set page size is 4GBytes.
*/
/* Provides information when a region is being stalled when dr_mode is set. */
/*
* This is the data sent when send_message is sent in the send_message
* completion command.
*/
/* This is the address where the send_message needs to go. */
/*
* This is to use the same llq index in XIU for commands being sent to the
* relocation region.
*/
/* This is to set the value for tph ns ro st. */
/* Configuration bits when putting the chip in sonoma mode. */
/*
* Fatal Interrupt and Stop Mask register1b per source. stop-masks: 1=error
* does not cause host to stop processing) ECC, or CAM Parity error if
* enabled, will cause a fatal interrupt. Decide whether or not to stop all
* host processing when this error occurs.
*/
/* Received count per UF for completions and events. */
/* Interrupt Total Moderation */
/* Interrupt Channel Control 0 */
/* Interrupt Channel Control 1 */
/* Interrupt Channel Control 2 */
/* MMU context per UF - containing the failing MMU context */
/* Address per UF - containing the failing address. */
/* MMU Static-Configuration and Status */
/* MMU Credit Configuration */
/* PA Address Size Configuration */
/* Flush MMU and-or PTW Caches. */
/* Statistic Counters. */
/* ECC and Parity Errors. */
/*
* This register must be set and the kick register is written in order to
* start the operation.
*/
/* Starts operation defined in uf_control. */
/* Interrupt status register. 1b per source (1 = int triggered). */
/* Interrupt mask register. 1b per source (1 = masked). */
/* Interrupt priority register. 1b per source (1 = high 0 = low). */
/*
* Interrupt status clear register. 1b per source (1=source will be cleared
* from int_status register when kick is called).
*/
/* Trigger the int_status clear operation. */
/* Uncorrectable-Fatal Error Mask */
/* MMU Cache VA Address Mask */
/* tsu_mmu_llq Debug Signals */
/* tsu_mmu_cache Debug Signals */
/* tsu_mmu_ptw Debug Signals */
/* Page Table Walk Error Debug State Reg0 */
/* Page Table Walk Error Debug State Reg1 */
/* Page Table Walk Error Debug State Reg2 */
/* Clear the PTW debug error registers. */
/*
* TSU VL mapping table for requests. Inputs/addressing to this table are
*/
/*
* Below dcb_bar address is a write to the VCB, else write to the DCB.
* dcb_bar = 0 applies no VCB. Below this qosl_bar address is low BAR, else
* is high BAR. Inputs/addressing to this table is UF.
*/
/*
* Virtual collect buffer start offset. VCB#=vcb_start_offset + pio
* address[25:12]. Inputs/addressing to this table is UF.
*/
/*
* How many physical collect buffers are allocated to the high BAR.
* Inputs/addressing to this table is UF.
*/
/*
* How many physical collect buffers are allocated to the low BAR.
* Inputs/addressing to this table is UF.
*/
/*
* How many physical collect buffers are available. Inputs/addressing to this
* table is UF.
*/
/*
* How many physical collect buffers are used in high BAR. Inputs/addressing
* to this table is UF.
*/
/*
* How many physical collect buffers are used in low BAR. Inputs/addressing
* to this table is UF.
*/
/* scoreboard init. */
/* scoreboard init done status. */
/* Start offset of dedicated collect buffers number for the host driver. */
/* Start offset of dedicated collect buffers number for the eps. */
/*
* Start offset of dedicated collect buffers number for the send queue
* scheduler.
*/
/* Collect length round up to 64B for scoreboard. */
/* ECC error control */
/* ECC status */
/* ECC status */
/* Number of VCB checksum Error */
/* Number of VCB checksum Error */
/* Number of VCB checksum Error */
/* Number of VCB checksum Error */
/* Interrupt status register. 1b per source (1 = int triggered). */
/* Interrupt mask register. 1b per source (1 = masked). */
/* Interrupt priority register. 1b per source (1 = high 0 = low). */
/*
* Interrupt status clear register. 1b per source (1=source will be cleared
* from int_status register when kick is called).
*/
/* Trigger the int_status clear operation. */
/* kick counter and dcb list ready for 64 to 69 */
/* dcb list ready for 0 to 63. */
/* Per UF to drop PIO. Inputs/addressing to this table is UF. */
/* UF choke status. Inputs/addressing to this table is UF. */
/* PIO DCB start_offset. Inputs/addressing to this table is UF. */
/*
* to this table before it writes to the DCB. Inputs/addressing to this table
* is DCB#
*/
/*
* claim a DCB. Inputs/addressing to this table is DCB#
*/
/* Status state of each DCB. Inputs/addressing to this table is DCB# */
/* dcb clear. Inputs/addressing to this table is scoreboard table. */
/*
* and Address[5:0] = 8 bytes offset into the DCB.
*/
/*
* vcb clear. Inputs/addressing to this table is scoreboard table. Write to
* clear VCB, Read to get the scoreboard status
*/
/*
* Initial completion credit per TVL. This is private credit for the
* particular TVL and can only be used by this TVL. The private completion
* credit indicates how many entries in tsu_cmpl are reserved for requests on
* this TVL.
*/
/*
* Current completion credits used per TVL. This is credit currently used by
* a particular TVL. This register is updated by hardware and can be read by
* software.
*/
/*
* Initial completion credit for the free pool. The free pool can be used by
* anyone being set up to use common credits. This is additional credits
* which can be used in addition to the private TVL completion credit. The
* common completion credit indicates how many entries in tsu_cmpl can be
* used by any TVL. It is a restriction that the TVL is set up to use common
* credit.
*/
/*
* This is register contain the number of currently consumed common
* completion credits. This register is updated by hardware and can be read
* from software.
*/
/*
* Initial execution credit per TVL. This is private credit for the
* particular TVL and can only be used by this TVL. The credit indicates how
* many DMA contexts are reserved for this particular TVL
*/
/*
* Current execution credit used per TVL. This is credit used by a particular
* TVL. This register is updated by hardware and can be read by software.
*/
/*
* Initial execution credit for the free pool. The free pool can be used by
* anyone being set up to use common credits. This is additional credits
* which can be used in addition to the private TVL execution credit. The
* common execution credit indicates how many DMA contexts can be used by any
* TVL. It is a restriction that the TVL is set up to use common credit.
*/
/*
* This register contain the number of currently consumed common execution
* credits. The register is updated by hardware and can be read from
* software.
*/
/*
* Port1 SL to VL mapping tables. One entry in this table is the SL to VL
* mapping table for one UF.
*/
/*
* Port2 SL to VL mapping tables. There is one table per UF. The table is
* implemented as one register.
*/
/*
* Jumbo frame enabled CSR. One register for the device indicating if jumbo
* frames are allowed or not.
*/
/*
* Own LIDs base and LMC. Potentially all own LID bits come from the QP state
* entry. The number of bits to use is based on the LMC. Per UF register.
*/
/*
* Own LIDs base and LMC. Potentially all own LID bits come from the QP state
* entry. The number of bits to use is based on the LMC. Per UF register.
*/
/*
* Port1 enable bits per UF. If bit is set, the corresponding GID and LID
* table entries are valid.
*/
/*
* Port2 enable bits per UF. If bit is set, the corresponding GID and LID
* table entries are valid.
*/
/*
* send SMPs.
*/
/*
* send SMPs.
*/
/* Kick FIFO entries in use per UF */
/* Base Q-Key for EoIB range of Q-Keys. */
/* Mask Q-Key for EoIB range of Q-Keys. */
/* Q-Key used for IPoIB. */
/* Range select register - defining the start bit for Q-Key (N+3:N). */
/* Per UF EoIB enforcement definitions. */
/*
* 16 entries per UF. The table is addressed with {UF, index}. There are four
* entries per table entry. Because of a bug, each vNIC table entry could not
* be defined as a struct, but it could be cast to
* psif_verbs_pk::vnic_table_entry_t.
*/
/*
* GID forwarding table. The forwarding table is used to figure out if a
* packet should be sent in loopback or not. There are (2 * NUM_VHCA + 1) 67
* GIDs per physical IB port.
*/
/*
* GID forwarding table. The forwarding table is used to figure out if a
* packet should be sent in loopback or not. There are (2 * NUM_VHCA + 1) 67
* GIDs per physical IB port.
*/
/*
* Per VL register (0-7: Port 0 VL0-7, 8: Port 0 VL15, 9: Port0 loopback.
* 10-19: Port 1). Maximum global buffer a particular VL can get.
*/
/*
* Per VL register (0-7: Port0 VL0-7, 8: Port0 VL15, 9: Port0 loopback.
* 10-19: Port 1). The amount of buffer dedicated to this VL.
*/
/*
* Per VL register (0-7: Port0 VL0-7, 8: Port0 VL15, 9: Port0 loopback.
* 10-19: Port 1). The amount of dedicated and global buffer used to this VL.
*/
/* Amount of global buffer used shared among all VLs. */
/* Num of 256B block DMA buffer check-out */
/* Num of 256B block DMA buffer check-in */
/* Number of RQS command to DMA */
/* Number of Context LLQ pop */
/* Number of Context LLQ ready to go set */
/* Number of IBPB command from DMA */
/* Number of CMPL command from DMA */
/* Number of QPS RD command from DMA */
/* Number of QPS RD response from QPS */
/* Number of QPS WR command from DMA */
/* Number of QPS WR response from QPS */
/* Number of packet in the packet LLQ */
/* Number of Packet LLQ pop */
/* Number of Packet LLQ ready to go set */
/* Num of payload DMA command */
/* Num of payload DMA response */
/* Num of sge DMA command */
/* Num of sge DMA response */
/* Num of LSO buffer used */
/* ECC error control */
/* ECC status */
/* ECC status */
/* Num of 32B IB header size to be calculated in SR */
/*
* Timer scale for congestion control and static rate: 12 bits interval
* counter 8.192us, 18 bits wrap counter
*/
/*
* IB link speed per port. 0=EDR, 1=QDR, 2=DDR, 3=SDR. 4=FDR Address to the
* Register Table: {uf, port}
*/
/*
* IB link width per port. 0=X4 and 1=X1. Address to the Register Table: {uf,
* port}
*/
/*
* Maximum number of payload read 256B buffer per UF. Address to the Register
* Table:uf
*/
/* Number of payload read transaction per UF. Address to the Register Table:uf */
/* MAC control per port per UF 0-33. Address to the Register Table: {uf port} */
/* Size of the EoIB and IPoIB header */
/* Mask bit to the TCP flags for the LSO segments */
/* Control for ip checksum tcp checksum udp checksum and ethernet padding */
/* This register is defined as JUMBO MTU allowed to transmit when MTU_10240B */
/*
* VLAN membership table per UF 0-33. Inputs/addressing to this table is {UF,
* vid[11:6}}.
*/
/* Outer VLAN Ethernet type */
/* Outer VLAN Ethernet type */
/*
* Q key enforcement VNIC VID table for uf 0-33. Inputs/addressing to this
* table are {UF, index}.
*/
/*
* Q key enforcement MAC address for uf 0-33. Inputs/addressing to this table
* are {UF, index}.
*/
/*
* Q key table - Inputs/addressing to this table are {UF, index}. There are
* 16 entries per UF.
*/
/*
* Congestion control DLID CAM table. Inputs/addressing to this table are
* {port, CAM entry number}.
*/
/*
* Shared P-Key table for all UFs on this port. Number of entries valid per
* UF is defined by the p1_pkey_uf_stride register.
*/
/*
* Upper 64 bits of GID for port1. There are (2 * NUM_VHCA + 1) 67 GIDs per
* physical IB port.
*/
/*
* Lower 64 bits of GID for port1. There are (2 * NUM_VHCA + 1) 67 GIDs per
* physical IB port.
*/
/*
* Own LIDs base and LMC. Potentially all own LID bits come from the QP state
* entry. The number of bits to use is based on the LMC. Per UF register.
*/
/*
* Size of individual P-Key tables per UF. All UFs have the same size or if
* set to 0, it means one common table.
*/
/*
* Shared P-Key table for all UFs on this port. Number of entries valid per
* UF is defined by the p2_pkey_uf_stride register.
*/
/*
* Upper 64 bits of GID for port2. There are (2 * NUM_VHCA + 1) 67 GIDs per
* physical IB port.
*/
/* Lower 64 bits of GID for port2. The table is per UF. */
/*
* Own LIDs base and LMC. Potentially all own LID bits come from the QP state
* entry. The number of bits to use is based on the LMC. Per UF register.
*/
/*
* Size of individual P-Key tables per UF. All UFs have the same size or if
* set to 0, it means one common table.
*/
/* Mask of fatal error stall input */
/* Misc IBPB debug signals */
/*
* This register must be set and the kick register is written in order to
* start the UF invalidate operation.
*/
/*
* Starts operation defined in uf_control. Now only UF invalidate is
* supported.
*/
/*
* Bitvector indicating (one bit per UF) if a UF has entries in tsu_qps or
* not. This could be used to verify that a UF flush/invalidate has happened.
*/
/* Interrupt status register. 1b per source (1 = int triggered). */
/* Interrupt mask register. 1b per source (1 = masked). */
/* Interrupt priority register. 1b per source (1 = high 0 = low). */
/*
* Interrupt status clear register. 1b per source (1=source will be cleared
* from int_status register when kick is called).
*/
/* Trigger the int_status clear operation. */
/*
* Stops timeout checking for UF in the uf_control register. This register
* must be kicked in order to make sure refcounts are not incremented for the
* UF to be flushed/invalidated.
*/
/*
* implemented in hardware - one at a time. EPS implements one register per
* UF. When one is written, the modify data is written to modify_qp_data
* register before this register is written. The Modify or Query QP command
* is autmatically kicked when this register is written. Is one outstanding
*/
/*
* Kick register to start a new modify or query command. This register is
* written by EPS.
*/
/*
* Status register indicating status of modify QP and query QP commands. This
* register is read by the EPS only.
*/
/*
* Data register containing data for the query QP command. This is read by
* the EPS only. The register is laid out to contain QP, primary_path and
* alternate path - same as it is in host memory. This is only a data bus,
* not using the structure psif_verbs_pkg::query_qp_t. When data is queried,
* and written to this register the psif_verbs_pkg::query_qp_t is cast to
* this structure. Please look at psif_verbs_pkg::query_qp_t for details.
*/
/*
* QP data register - see psif_verbs_pkg::qp_t for details on layout. This
* register contain the QP data information to write to QP index (HW cache
* index) given by the wr_qp_index CSR. This register is used to initialize
* QP 0/1, and is not accessible from user space. It could also be used for
* diagnostics.
*/
/*
* QP data register - see psif_verbs_pkg::path_info_t for details on layout.
* This register contain the path data to write to QP index (HW cache index)
* given by the wr_qp_index CSR. This register is used to initialize QP 0/1,
* and is not accessible from user space.
*/
/*
* QP index register. This register contain the QP index where the QP
* information is written to. This register is used to initialize QP 0/1, and
* is not accessible from user space. Set this to 0 for QP0 and 1 for QP1.
*/
/*
* Kick register to start a new writing the QP information in wr_qp_data and
* wr_qp_path to QP index given in wr_qp_index CSR. This register is .
*/
/*
* DO NOT USE!! This register gives the option to change fields which can be
* changed in a QP modify command. It is not to be accessed by users, and is
* only here for flexibility. The register contain legal attribute masks for
* QP modification for state transition INIT to RTR.
*/
/*
* DO NOT USE!! This register gives the option to change fields which can be
* changed in a QP modify command. It is not to be accessed by users, and is
* only here for flexibility. The register contain legal attribute masks for
* QP modification for state transition RTR to RTS.
*/
/*
* DO NOT USE!! This register gives the option to change fields which can be
* changed in a QP modify command. It is not to be accessed by users, and is
* only here for flexibility. The register contain legal attribute masks for
* QP modification for state transition RTS to RTS.
*/
/*
* DO NOT USE!! This register gives the option to change fields which can be
* changed in a QP modify command. It is not to be accessed by users, and is
* only here for flexibility. The register contain legal attribute masks for
* QP modification for state transition from any state to RESET or ERROR.
*/
/*
* DO NOT USE!! This register gives the option to change fields which can be
* changed in a QP modify command. It is not to be accessed by users, and is
* only here for flexibility. Legal attribute masks for QP modification for
* state transition from SQERR to RTS.
*/
/*
* Status register indicating that the refcount hit zero after the qp_index
* was armed. There is one bit per QP index. This register is read by the EPS
* only.
*/
/* Mask CAM parity errors such that they do not cause FATAL errors. */
/* Per UF refcount register. This is used for UF flushing. */
/* Debug register for the modify block. */
/*
* Status register indicating that the refcount hit zero after the qp_index
* was armed. There is one bit per QP index. This register is read by the EPS
* only.
*/
/*
* This register must be set and the kick register is written in order to
* start the operation.
*/
/* Starts operation defined in uf_control. */
/* Interrupt status register. 1b per source (1 = int triggered). */
/* Interrupt mask register. 1b per source (1 = masked). */
/* Interrupt priority register. 1b per source (1 = high 0 = low). */
/*
* Interrupt status clear register. 1b per source (1=source will be cleared
* from int_status register when kick is called).
*/
/* Trigger the int_status clear operation. */
/* CAM PERR detected status register. */
/* Mask PERR interrupt. */
/* Mask packet stall on PERR interrupt. */
/* Spin set size used when handling max spin set response. */
/* UF QPN and MSN of max spin set response. */
/* Spin set mode (safe = 1 fast = 0). Default is fast mode. */
/* Base address. */
/* MMU context. */
/* Num entries and extent. */
/*
* This register must be set and the kick register is written in order to
* start the operation.
*/
/* Starts operation defined in uf_control. */
/* Interrupt status register. 1b per source (1 = int triggered). */
/* Interrupt mask register. 1b per source (1 = masked). */
/* Interrupt priority register. 1b per source (1 = high 0 = low). */
/*
* Interrupt status clear register. 1b per source (1=source will be cleared
* from int_status register when kick is called).
*/
/* Trigger the int_status clear operation. */
/*
* This register must be set and the kick register is written in order to
* start the operation.
*/
/* Starts operation defined in uf_control. */
/* Interrupt status register. 1b per source (1 = int triggered). */
/* Interrupt mask register. 1b per source (1 = masked). */
/* Interrupt priority register. 1b per source (1 = high 0 = low). */
/*
* Interrupt status clear register. 1b per source (1=source will be cleared
* from int_status register when kick is called).
*/
/* Trigger the int_status clear operation. */
/*
* Base address registers per UF for software owned descriptor portion of
* receive queue descriptors.
*/
/*
* Base address registers per UF for hardware owned descriptor portion of
* receive queue descriptors.
*/
/*
* This register must be set and the kick register is written in order to
* start the operation.
*/
/* Starts operation defined in uf_control. */
/* Interrupt status register. 1b per source (1 = int triggered). */
/* Interrupt mask register. 1b per source (1 = masked). */
/* Interrupt priority register. 1b per source (1 = high 0 = low). */
/*
* Interrupt status clear register. 1b per source (1=source will be cleared
* from int_status register when kick is called).
*/
/* Trigger the int_status clear operation. */
/* Various diagnostic control bits */
/* Fatal interrupt bits */
/* RSS table containing CQ and RQ. This table is used for EoIB RSS. */
/*
* Control register for RSS per vHCA (UF0-UF32). Containing the bit masks to
* use when masking hashes.
*/
/* RSS table containing CQ and RQ. This table is used for IPoIB RSS. */
/*
* Control register for RSS per vHCA (UF0-UF32). Containing the bit masks to
* use when masking hashes.
*/
/*
* Control register for EPS-A offloading per vHCA (UF0-UF32). It is
* containing the size which is the limit for sending packets to EPS-A.
*/
/* Maximum MAD packet size supported. */
/*
* One bit per vHCA indicating if the vHCA is allowed to use proxy mode.
*/
/*
* Error counter for multicast rejects. There is one register per vHCA port.
*/
/*
* Error counter for broadcast rejects. There is one register per vHCA port.
*/
/*
* Error counter for unicast rejects. There is one register per vHCA port.
*/
/*
* Error counter for rejects. There is one register per vHCA port.
*/
/*
* Error counter for runt rejects. There is one register per vHCA port.
*/
/*
* Error counter for outer VLAN rejects. There is one register per vHCA port.
*/
/*
* Error counter for VLAN tag rejects. There is one register per vHCA port.
*/
/*
* Error counter for VID rejects. There is one register per vHCA port.
*/
/*
* Error counter for TCP port filtering violation rejects. There is one
* register per vHCA port.
*/
/*
* Control if multicast packets should be forwarded to yourself or not when
* the QP is a IPoIB or EoIB QP.
*/
/* Trap register for P-Key and Q-Key traps. */
/* Trap register for P-Key and Q-Key traps. */
/* Trap register for P-Key and Q-Key traps. */
/* Trap register for P-Key and Q-Key traps. */
/* Trap register for P-Key and Q-Key traps. */
/* Trap register for P-Key and Q-Key traps. */
/* Pop register for P-Key and Q-Key trap FIFO. */
/* Register indicating what to do if the trap FIFO is full. */
/* Interrupt status register. 1b per source (1 = int triggered). */
/* Interrupt mask register. 1b per source (1 = masked). */
/* Interrupt priority register. 1b per source (1 = high 0 = low). */
/*
* Interrupt status clear register. 1b per source (1=source will be cleared
* from int_status register when kick is called).
*/
/* Trigger the int_status clear operation. */
/*
* int_status. Clearing the interrupt status will pop the FIFO.
*/
/*
* TCP destination port and SLID. This register is fed by a FIFO feeding into
* int_status. Clearing the interrupt status will pop the FIFO.
*/
/* Decide if the debug FIFO should be used or not. */
/* Pop register for port filter debug FIFO. */
/*
* Shared P-Key table for all UFs on this port. Number of entries valid per
* UF is defined by the p1_pkey_uf_stride register.
*/
/*
* Size of individual P-Key tables per UF. All UFs have the same size or if
* set to 0, it means one common table.
*/
/* Permission and entry table for TCP port filtering. */
/* Range table for the TCP Port filtering. */
/*
* Own LIDs base and LMC. Potentially all own LID bits come from the QP state
* entry. The number of bits to use is based on the LMC. Per UF register.
*/
/*
* Upper 64 bits of GID for port1. There are (2 * NUM_VHCA + 1) 67 GIDs per
* physical IB port.
*/
/*
* Lower 64 bits of GID for port1. There are (2 * NUM_VHCA + 1) 67 GIDs per
* physical IB port.
*/
/*
* GID forwarding table. The forwarding table is used to figure out if a
* packet should be sent in loopback or not. There are (2 * NUM_VHCA + 1) 67
* GIDs per physical IB port.
*/
/*
* One bit ber UF. If set for the UF, the upper 64bits are ignored in the
* DGID check.
*/
/* Default vSwitch port for vSwitch1. */
/* Default SM HCA. Indicating which vHCA to send SM packets to. */
/*
* When a bit is set, the TSU will forward the particular management class to
* EPS-C. Per UF0-UF32.
*/
/*
* send SMPs.
*/
/*
* allowed packet drop status is cleared.
*/
/*
* allowed packet is dropped.
*/
/* Rx choke register */
/*
* Get vlink state for the vHCA and the vSwitch. It is up to the firmware to
* report correct physical link states when one side is set to disabled and
* the other side is down.
*/
/*
* When data is present, this register should be read for processing.
* Hardware multicast FIFO is popped when p1_mcast_pop is written.
*/
/*
* When data is present, this register should be read for processing.
* Hardware multicast FIFO is popped when p1_mcast_pop is written.
*/
/*
* When data is present, this register should be read for processing.
* Hardware multicast FIFO is popped when p1_mcast_pop is written.
*/
/*
* This pop register is written after data in p1_mcast_gid_upper,
* p1_mcast_gid_lower and p1_mcast_lid is read. Writing this register will
* pop the FIFO.
*/
/*
* This registers indicate how many multicast packets this port can hold
* before starting drop packets.
*/
/*
* This register contain the credit for writing to the CSR FIFO for multicast
* packets.
*/
/* Write to multicast FIFO. */
/* Kick multicast FIFO - data is valid in the multicast FIFO. */
/* Congestion DLID cam */
/* Congestion Control Table Index */
/* Congestion Control Table */
/* Congestion Control Table Index data */
/*
* This pop register is written after data in p1 congestion log is read.
* Writing this register will pop the FIFO.
*/
/* When this bit is set congestion log update from HW is enabled */
/*
* When data is present, this register contains congestion log. Hardware
* multicast FIFO is popped when p1_congestion_log_pop is written.
*/
/* Sample interval register. */
/* Sample start delay register. */
/* Sample count register. This register contain the counted values. */
/*
* Sample UF register. Indicating which port this entry is counting for and
* what type it is counting.
*/
/* Start port Sampling. */
/* Sample status register. */
/* Sample interval register. */
/* Sample start delay register. */
/* Sample count register. This register contain the counted values. */
/*
* Sample UF register. Indicating which port this entry is counting for and
* what type it is counting.
*/
/* Start port Sampling. */
/* Sample status register. */
/* Port counter PortXmitDiscards. This is per vSwitch port [32:0]. */
/* Port counter PortRcvSwitchRelayErrors. This is per Switch */
/* Vendor Port counter receive packets drop. This is per vSwitch. */
/* Clear portcounter port receive drop */
/* Clear portcounter Port Receive Switch Relay Error */
/* Port counter PortXmitDiscards. This is per vSwitch port. */
/*
* Port counter Port Receive data. This is per vSwitch port - not the
* external port.
*/
/*
* Port counter Port Receive Packets. This is per vSwitch port - not the
* external port.
*/
/*
* Port counter Port Xmit data. This is per vSwitch port - not the external
* port.
*/
/*
* Port counter Port Xmit Packets. This is per vSwitch port - not the
* external port.
*/
/*
* Port counter counting packets dropped (marked p_error) in Xmit path.
*/
/* Clear portcounter Port Xmit Drop. */
/*
* Shared P-Key table for all UFs on this port. Number of entries valid per
* UF is defined by the p2_pkey_uf_stride register.
*/
/*
* Size of individual P-Key tables per UF. All UFs have the same size or if
* set to 0, it means one common table.
*/
/* Permission and entry table for TCP port filtering. */
/* Range table for the TCP Port filtering. */
/*
* Own LIDs base and LMC. Potentially all own LID bits come from the QP state
* entry. The number of bits to use is based on the LMC. Per UF register.
*/
/*
* Upper 64 bits of GID for port2. There are (2 * NUM_VHCA + 1) 67 GIDs per
* physical IB port.
*/
/*
* Lower 64 bits of GID for port2. There are (2 * NUM_VHCA + 1) 67 GIDs per
* physical IB port.
*/
/*
* GID forwarding table. The forwarding table is used to figure out if a
* packet should be sent in loopback or not. There are (2 * NUM_VHCA + 1) 67
* GIDs per physical IB port.
*/
/*
* One bit ber UF. If set for the UF, the upper 64bits are ignored in the
* DGID check.
*/
/* Default vSwitch port for vSwitch2. */
/* Default SM HCA. Indicating which vHCA to send SM packets to. */
/*
* When a bit is set, the TSU will forward the particular management class to
* EPS-C. Per UF0-UF32.
*/
/*
* send SMPs.
*/
/*
* allowed packet drop status is cleared.
*/
/*
* allowed packet is dropped.
*/
/* Rx choke register */
/*
* Get vlink state for the vHCA and the vSwitch. It is up to the firmware to
* report correct physical link states when one side is set to disabled and
* the other side is down.
*/
/*
* When data is present, this register should be read for processing.
* Hardware multicast FIFO is popped when p2_mcast_pop is written.
*/
/*
* When data is present, this register should be read for processing.
* Hardware multicast FIFO is popped when p2_mcast_pop is written.
*/
/*
* When data is present, this register should be read for processing.
* Hardware multicast FIFO is popped when p2_mcast_pop is written.
*/
/*
* This pop register is written after data in p2_mcast_gid_upper,
* p2_mcast_gid_lower and p2_mcast_lid is read. Writing this register will
* pop the FIFO.
*/
/*
* This registers indicate how many multicast packets this port can hold
* before starting drop packets.
*/
/*
* This register contain the credit for writing to the CSR FIFO for multicast
* packets.
*/
/* Write to multicast FIFO. */
/* Kick multicast FIFO - data is valid in the multicast FIFO. */
/* Congestion DLID cam */
/* Congestion Control Table Index */
/* Congestion Control Table */
/* Congestion Control Table Index data */
/*
* This pop register is written after data in p2 congestion log is read.
* Writing this register will pop the FIFO.
*/
/* When this bit is set congestion log update from HW is enabled */
/*
* When data is present, this register contains congestion log. Hardware
* multicast FIFO is popped when p2_congestion_log_pop is written.
*/
/* Sample interval register. */
/* Sample start delay register. */
/* Sample count register. This register contain the counted values. */
/*
* Sample UF register. Indicating which UF this entry is counting for and
* what type it is counting.
*/
/* Start port Sampling. */
/* Sample status register. */
/* Sample interval register. */
/* Sample start delay register. */
/* Sample count register. This register contain the counted values. */
/*
* Sample UF register. Indicating which port this entry is counting for and
* what type it is counting.
*/
/* Start port Sampling. */
/* Sample status register. */
/* Port counter PortXmitDiscards. This is per vSwitch port [32:0]. */
/* Port counter PortRcvSwitchRelayErrors. This is per Switch */
/* Vendor Port counter receive packets drop. This is per vSwitch. */
/* Clear portcounter port receive drop */
/* Clear portcounter Port Receive Switch Relay Error */
/* Port counter PortXmitDiscards. This is per vSwitch port. */
/*
* Port counter Port Receive data. This is per vSwitch port - not the
* external port.
*/
/*
* Port counter Port Receive Packets. This is per vSwitch port - not the
* external port.
*/
/*
* Port counter Port Xmit data. This is per vSwitch port - not the external
* port.
*/
/*
* Port counter Port Xmit Packets. This is per vSwitch port - not the
* external port.
*/
/*
* Port counter counting packets dropped (marked p_error) in Xmit path.
*/
/* Clear portcounter Port Xmit Drop. */
/* Set link state for the vHCA or the vSwitch. */
/* link state for the vHCA or the vSwitch. */
/* Interrupt status register. 1b per source (1 = int triggered). */
/* Interrupt mask register. 1b per source (1 = masked). */
/* Interrupt priority register. 1b per source (1 = high 0 = low). */
/*
* Interrupt status clear register. 1b per source (1=source will be cleared
* from int_status register when kick is called).
*/
/* Trigger the int_status clear operation. */
/* Trace buffer setup */
/* Trace buffer Store qualifier1 */
/* Trace buffer Store qualifier2 */
/* Trace buffer Store qualifier1 mask */
/* Trace buffer Store qualifier2 mask */
/* Trace buffer trigger1 */
/* Trace buffer trigger2 */
/* Trace buffer trigger1 mask */
/* Trace buffer trigger2 mask */
/* Start trace buffer */
/* Stop trace buffer */
/* Trace buffer status */
/* Trace buffer */
/* Trace buffer assoc info */
/* Debug */
/*
* Per vHCA (UF0-32) register. This table contain valid RSS combinations to
* calculate for this UF.
*/
/* 16B Secret key for RSS generation for IPv4. */
/* 40B Secret key for RSS generation for IPv6. */
/* Per vHCA + EPS-C ethernet MAC address register. */
/* Per vHCA + EPS-C ethernet MAC address register. */
/* Per vHCA + EPS-C ethernet MAC address register. */
/* Per vHCA + EPS-C ethernet MAC address register. */
/* Per vHCA + EPS-C ethernet control register. */
/* Per vHCA + EPS-C DMAC seed register. */
/* Per vHCA + EPS-C VLAN EtherTypes register. */
/* Per vHCA + EPS-C VLAN EtherTypes register. */
/* Per vHCA PF control register. */
/* Common unicast overflow table for all vHCAs. */
/* Common multicast table for all VHCAs. */
/*
* Per vHCA + EPS-C VID table. There are 64 entries per UF. 4096b * 34 (64x34
* entries).
*/
/*
* Header split register indicating what EoIB headers to try splitting at.
*/
/*
* Header split register indicating what IPoIB headers to try splitting at
* for UD transport.
*/
/* Legal ether type. */
/*
* Legal extensions for IPv6. 256 bits per UF. Table size is then 4*NUM_UF
* (should be 34)
*/
/* Max ethernet frame size typically 1500 or 1535 */
/* bypass offload */
/* debug signals */
/*
* Base address registers per UF for software owned descriptor portion of
* send queue descriptors.
*/
/*
* Base address registers per UF for software owned descriptor portion of
* send queue descriptors.
*/
/*
* Base address registers per UF for software owned descriptor portion of
* send queue descriptors.
*/
/*
* Base address registers per UF for hardware owned descriptor portion of
* send queue descriptors.
*/
/*
* Base address registers per UF for hardware owned descriptor portion of
* send queue descriptors.
*/
/*
* Base address registers per UF for hardware owned descriptor portion of
* send queue descriptors.
*/
/*
* SQS list table is used to program the list number to associate with UF.
* Address is list number and data is UF. A single UF can allocate multiple
* lists.
*/
/*
* This register must be set and the kick register is written in order to
* start the operation.
*/
/* Starts operation defined in uf_control. */
/* Interrupt status register. 1b per source (1 = int triggered). */
/* Interrupt mask register. 1b per source (1 = masked). */
/* Interrupt priority register. 1b per source (1 = high 0 = low). */
/*
* Interrupt status clear register. 1b per source (1=source will be cleared
* from int_status register when kick is called).
*/
/* Trigger the int_status clear operation. */
/* Address: SQS list number. Flush status. */
/*
* Address: SQS list number. Set when the PCIe response has error on the
* descriptor read.
*/
/*
* Hash mask and shift control. XOR width is based on the log 2 of number of
* list for that UF.
*/
/*
* Disble Atomic cmp and swap for the QP next pointer null check. If set,
* hardware generates read-then-write to update the QP next pointer.
*/
/* Number of burst read for the send queue element per QP. */
/* Number of DB count from CBU. */
/* Number of DB count from ERR. */
/* Number of LLQ push. */
/* Number of LLQ pop. */
/* Number of LLQ peek. */
/* Number of Send Queue read. */
/* Number of Descriptor read. */
/* Number of Descriptor read response. */
/* Number of Atomic request. */
/* Number of Atomic response. */
/* Number of QP insert to the SQS list. */
/* Number of clock to wait before writting to the ring. */
/* Set to write 64B for the send queue hardware descriptor. */
/* Set to write 64B for the PIO ring buffer. */
/* ECC error control */
/* ECC status */
/* ECC status */
/* SQ MMU context to use EPSC memory permission */
/* Timer scale: 12 bits interval counter 8.192us 32 bits wrap counter */
/* LLQ credit for Doorbell Retry Transport Timer and Response */
/* software mode for qps_if */
/* software mode for qps_if kick */
/* software mode for host_if response scheduling */
/* software mode for host_if response scheduling */
/* software mode for host_if response scheduling */
/* software mode for host_if response scheduling */
/* software mode for host_if response scheduling kick */
/* Base address registers per UF for hardware to FIFO PIO doorbell. */
/* Base address registers per UF for hardware to FIFO PIO doorbell. */
/* Base address registers per UF for hardware to FIFO PIO doorbell. */
/*
* Address: SQS list number. Set when the PCIe response has error on the
* descriptor read.
*/
/* Base address registers per UF for response queue. */
/* Base address registers per UF for response queue. */
/* Base address registers per UF for response queue. */
/* Credit a particular TVL can get. */
/* Head pointer for MMU contexts policies check failed. */
/*
* Base address registers per UF for response queue tvl pointer. Each tvl has
* 16 bytes pointers
*/
/* Base address registers per UF for response queue tvl pointer. */
/*
* Base address registers per UF for response queue tvl pointer. Warning!
* This register is unused by hardware and it is always read as 0.
*/
/* Address: uf number tvl list number. Flush and Error status. */
/*
* Base address registers per UF for software owned descriptor portion of
* completion queue descriptors.
*/
/*
* Base address registers per UF for hardware owned descriptor portion of
* completion queue descriptors.
*/
/* Error type the programmable counter is counting. */
/*
* Counts how many times error type defined in prog_error_type register is
* received by tsu_cbld. Sticky at max value and then needs to be cleared.
*/
/* Clears prog_counter. */
/* Interrupt status register. 1b per source (1 = int triggered). */
/* Interrupt mask register. 1b per source (1 = masked). */
/* Interrupt priority register. 1b per source (1 = high 0 = low). */
/*
* Interrupt status clear register. 1b per source (1=source will be cleared
* from int_status register when kick is called).
*/
/* Trigger the int_status clear operation. */
/*
* This register must be set and the kick register is written in order to
* start the operation.
*/
/* Starts operation defined in uf_control. */
/*
* One bit per vHCA indicating if the vHCA is allowed to use proxy mode.
*/
/* Various diagnostic control bits */
/*
* Debug register0. There are no definitions of the fields generated, but
* they can be found from the HW definitions.
*/
/*
* Debug register. There are no definitions of the fields generated, but they
* can be found from the HW definitions.
*/
/*
* Debug register. There are no definitions of the fields generated, but they
* can be found from the HW definitions.
*/
/* Clears the diag RAM for the UF specified. */
/* Clears the diag RAM - per UF. */
/* Read the address for the UF. */
/* Set up which RAM entry to read. */
/*
* Kick - reads the data from the RAM entry specified in diag_ram_read_addr
* and adds it to registers which can be read.
*/
/* Time to wait before starting send queue mode. */
/*
* QP state transitions for different error classes. This register should not
* be used unless there is a bug.
*/
/*
* When this register is written to, the content of indirect_eq_sw_index_wr,
* indirect_eq_hw_index_wr, indirect_eq_ctrl_wr, indirect_eq_base_addr_wr,
* indirect_eq_size_wr is written to event queue entry number defined by the
* value in the indirect_addr.
*/
/*
* Head index register. Indirect register to write in order to get a
* consistent view of the complete descriptor. This is used along with the
* address and write register.
*/
/*
* Tail index register. Indirect register to write in order to get a
* consistent view of the complete descriptor. This is used along with the
* address and write register.
*/
/*
* MMU context and descriptor control register. Indirect register to write in
* order to get a consistent view of the complete descriptor. This is used
* along with the address and write register.
*/
/*
* Base address register. Indirect register to write in order to get a
* consistent view of the complete descriptor. This is used along with the
* address and write register.
*/
/*
* Max number of entries and sequence number register. Indirect register to
* write in order to get a consistent view of the complete descriptor. This
* is used along with the address and write register.
*/
/*
* When this register is written to, the content of event queue entry in
* indirect_addr is written to indirect_eq_sw_index_rd,
* indirect_eq_hw_index_rd, indirect_eq_ctrl_rd, indirect_eq_base_addr_rd,
* indirect_eq_size_rd. These registers can now be read as one consistent
* register.
*/
/*
* Head index register. Indirect register to read in order to get a
* consistent view of the complete descriptor. This is used along with the
* address and read register.
*/
/*
* Tail index register. Indirect register to read in order to get a
* consistent view of the complete descriptor. This is used along with the
* address and read register.
*/
/*
* MMU context and descriptor control register. Indirect register to read in
* order to get a consistent view of the complete descriptor. This is used
* along with the address and write register.
*/
/*
* Base address register. Indirect register to read in order to get a
* consistent view of the complete descriptor. This is used along with the
* address and read register.
*/
/*
* Max number of entries and sequence number register. Indirect register to
* read in order to get a consistent view of the complete descriptor. This is
* used along with the address and read register.
*/
/*
* Directly accessible software index. Software can update this directly
*/
/*
* Directly accessible software index. Software can update this directly
*/
/*
* Used for translating each vHCA's EQ number to the physical EQ number.
*/
/* EQ Overflow Status 0 EQs 0-63 */
/* EQ Overflow Status 1 EQs 64-127 */
/* EQ Invalid Status 0 EQs 0-63 */
/* EQ Invalid Status 1 EQs 64-127 */
/* EQ out of range status */
/* Clear EQ Status 0 EQs 0-63 */
/* Clear EQ Status 1 EQs 64-127 */
/* Initiates clear of EQ status bits as indicated in Clear EQ Status 0/1. */
/* Clear per UF EQ out of range Status */
/* Initiates clear of per UF out of range EQ status bits */
/* Clear all counters having the bit set in the mask. */
/* Clear all counters having the bit set in the mask. */
/* Data from the diagnostic RAM. */
/* Error counters. */
/* Error counters. */
/* Error counters. */
/* Error counters. */
/* Error counters. */
/* Error counters. */
/* Error counters. */
/* Error counters. */
/* Error counters. */
/* Error counters. */
/* Error counters. */
/* Error counters. */
/*
* Clear TX offload error counters. This register has one bit per UF, and
* will clear the corresponding counter.
*/
/*
* Clear TX offload error counters. This register has one bit per UF, and
* will clear the corresponding counter.
*/
/* TX offload error counters - there is one register per UF. */
/* Sent count per UF for completions and events. */
/* CETUS register */
/* CETUS register */
/* CETUS register */
/* CETUS register */
/* CETUS register */
/* CETUS register */
/* CETUS register */
/* CETUS register */
/* CETUS register */
/* CETUS register */
/* CETUS register */
/* CETUS register */
/* CETUS register */
/* CETUS register */
/* CETUS register */
/* CETUS register */
/* CETUS register */
/* CETUS register */
/* CETUS register */
/* CETUS register */
/* CETUS register */
/* CETUS register */
/* CETUS register */
/* CETUS register */
/* CETUS register */
/* CETUS register */
/* CETUS register */
/* CETUS register */
/* CETUS register */
/* CETUS register */
#ifdef __cplusplus
}
#endif
#endif /* _PSIF_FW_ADDR_H */