#ifndef _SYS_NXGE_NXGE_TXDMA_HW_H
#define _SYS_NXGE_NXGE_TXDMA_HW_H
#ifdef __cplusplus
extern "C" {
#endif
#include <nxge_defs.h>
#include <nxge_hw.h>
#if !defined(_BIG_ENDIAN)
#define SWAP(X) (X)
#else
#define SWAP(X) \
(((X >> 32) & 0x00000000ffffffff) | \
((X << 32) & 0xffffffff00000000))
#endif
#define TX_LOG_REG_SIZE 512
#define TX_LOG_DMA_OFFSET(channel) (channel * TX_LOG_REG_SIZE)
#define TX_LOG_PAGE_VLD_REG (FZC_DMC + 0x40000)
#define TX_LOG_PAGE_MASK1_REG (FZC_DMC + 0x40008)
#define TX_LOG_PAGE_VAL1_REG (FZC_DMC + 0x40010)
#define TX_LOG_PAGE_MASK2_REG (FZC_DMC + 0x40018)
#define TX_LOG_PAGE_VAL2_REG (FZC_DMC + 0x40020)
#define TX_LOG_PAGE_RELO1_REG (FZC_DMC + 0x40028)
#define TX_LOG_PAGE_RELO2_REG (FZC_DMC + 0x40030)
#define TX_LOG_PAGE_HDL_REG (FZC_DMC + 0x40038)
#define TX_ADDR_MD_REG (FZC_DMC + 0x45000)
#define TX_ADDR_MD_SHIFT 0
#define TX_ADDR_MD_SET_32 0x0000000000000001ULL
#define TX_ADDR_MD_MASK 0x0000000000000001ULL
typedef union _tx_addr_md_t {
uint64_t value;
struct {
#if defined(_BIG_ENDIAN)
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t res1_1:31;
uint32_t mode32:1;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t mode32:1;
uint32_t res1_1:31;
#endif
} ldw;
#if !defined(_BIG_ENDIAN)
uint32_t hdw;
#endif
} bits;
} tx_addr_md_t, *p_tx_addr_md_t;
#define TX_PKT_DESC_SAD_SHIFT 0
#define TX_PKT_DESC_SAD_MASK 0x00000FFFFFFFFFFFULL
#define TX_PKT_DESC_TR_LEN_SHIFT 44
#define TX_PKT_DESC_TR_LEN_MASK 0x01FFF00000000000ULL
#define TX_PKT_DESC_NUM_PTR_SHIFT 58
#define TX_PKT_DESC_NUM_PTR_MASK 0x3C00000000000000ULL
#define TX_PKT_DESC_MARK_SHIFT 62
#define TX_PKT_DESC_MARK 0x4000000000000000ULL
#define TX_PKT_DESC_MARK_MASK 0x4000000000000000ULL
#define TX_PKT_DESC_SOP_SHIFT 63
#define TX_PKT_DESC_SOP 0x8000000000000000ULL
#define TX_PKT_DESC_SOP_MASK 0x8000000000000000ULL
typedef union _tx_desc_t {
uint64_t value;
struct {
#if defined(_BIG_ENDIAN)
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t sop:1;
uint32_t mark:1;
uint32_t num_ptr:4;
uint32_t res1:1;
uint32_t tr_len:13;
uint32_t sad:12;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t sad:12;
uint32_t tr_len:13;
uint32_t res1:1;
uint32_t num_ptr:4;
uint32_t mark:1;
uint32_t sop:1;
#endif
} hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t sad:32;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t sad:32;
#endif
} ldw;
#if !defined(_BIG_ENDIAN)
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t sop:1;
uint32_t mark:1;
uint32_t num_ptr:4;
uint32_t res1:1;
uint32_t tr_len:13;
uint32_t sad:12;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t sad:12;
uint32_t tr_len:13;
uint32_t res1:1;
uint32_t num_ptr:4;
uint32_t mark:1;
uint32_t sop:1;
#endif
} hdw;
#endif
} bits;
} tx_desc_t, *p_tx_desc_t;
#define TX_RNG_CFIG_REG (DMC + 0x40000)
#if OLD
#define TX_RING_HDH_REG (DMC + 0x40008)
#endif
#define TX_RING_HDL_REG (DMC + 0x40010)
#define TX_RING_KICK_REG (DMC + 0x40018)
#define TX_ENT_MSK_REG (DMC + 0x40020)
#define TX_CS_REG (DMC + 0x40028)
#define TXDMA_MBH_REG (DMC + 0x40030)
#define TXDMA_MBL_REG (DMC + 0x40038)
#define TX_DMA_PRE_ST_REG (DMC + 0x40040)
#define TX_RNG_ERR_LOGH_REG (DMC + 0x40048)
#define TX_RNG_ERR_LOGL_REG (DMC + 0x40050)
#define TDMC_INTR_DBG_REG (DMC + 0x40060)
#define TX_CS_DBG_REG (DMC + 0x40068)
#define TX_RNG_CFIG_STADDR_SHIFT 6
#define TX_RNG_CFIG_STADDR_MASK 0x000000000007FFC0ULL
#define TX_RNG_CFIG_ADDR_MASK 0x00000FFFFFFFFFC0ULL
#define TX_RNG_CFIG_STADDR_BASE_SHIFT 19
#define TX_RNG_CFIG_STADDR_BASE_MASK 0x00000FFFFFF80000ULL
#define TX_RNG_CFIG_LEN_SHIFT 48
#define TX_RNG_CFIG_LEN_MASK 0xFFF8000000000000ULL
#define TX_RNG_HEAD_TAIL_SHIFT 3
#define TX_RNG_HEAD_TAIL_WRAP_SHIFT 19
typedef union _tx_rng_cfig_t {
uint64_t value;
struct {
#if defined(_BIG_ENDIAN)
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t res2:3;
uint32_t len:13;
uint32_t res1:4;
uint32_t staddr_base:12;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t staddr_base:12;
uint32_t res1:4;
uint32_t len:13;
uint32_t res2:3;
#endif
} hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t staddr_base:13;
uint32_t staddr:13;
uint32_t res2:6;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t res2:6;
uint32_t staddr:13;
uint32_t staddr_base:13;
#endif
} ldw;
#ifndef _BIG_ENDIAN
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t res2:3;
uint32_t len:13;
uint32_t res1:4;
uint32_t staddr_base:12;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t staddr_base:12;
uint32_t res1:4;
uint32_t len:13;
uint32_t res2:3;
#endif
} hdw;
#endif
} bits;
} tx_rng_cfig_t, *p_tx_rng_cfig_t;
#define TX_RING_HDL_SHIFT 3
#define TX_RING_HDL_MASK 0x00000000FFFFFFF8ULL
typedef union _tx_ring_hdl_t {
uint64_t value;
struct {
#if defined(_BIG_ENDIAN)
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t res0:12;
uint32_t wrap:1;
uint32_t head:16;
uint32_t res2:3;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t res2:3;
uint32_t head:16;
uint32_t wrap:1;
uint32_t res0:12;
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} tx_ring_hdl_t, *p_tx_ring_hdl_t;
#define TX_RING_KICK_TAIL_SHIFT 3
#define TX_RING_KICK_TAIL_MASK 0x000000FFFFFFFFFF8ULL
typedef union _tx_ring_kick_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t res0:12;
uint32_t wrap:1;
uint32_t tail:16;
uint32_t res2:3;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t res2:3;
uint32_t tail:16;
uint32_t wrap:1;
uint32_t res0:12;
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} tx_ring_kick_t, *p_tx_ring_kick_t;
#define TX_ENT_MSK_PKT_PRT_ERR_SHIFT 0
#define TX_ENT_MSK_PKT_PRT_ERR_MASK 0x0000000000000001ULL
#define TX_ENT_MSK_CONF_PART_ERR_SHIFT 1
#define TX_ENT_MSK_CONF_PART_ERR_MASK 0x0000000000000002ULL
#define TX_ENT_MSK_NACK_PKT_RD_SHIFT 2
#define TX_ENT_MSK_NACK_PKT_RD_MASK 0x0000000000000004ULL
#define TX_ENT_MSK_NACK_PREF_SHIFT 3
#define TX_ENT_MSK_NACK_PREF_MASK 0x0000000000000008ULL
#define TX_ENT_MSK_PREF_BUF_ECC_ERR_SHIFT 4
#define TX_ENT_MSK_PREF_BUF_ECC_ERR_MASK 0x0000000000000010ULL
#define TX_ENT_MSK_TX_RING_OFLOW_SHIFT 5
#define TX_ENT_MSK_TX_RING_OFLOW_MASK 0x0000000000000020ULL
#define TX_ENT_MSK_PKT_SIZE_ERR_SHIFT 6
#define TX_ENT_MSK_PKT_SIZE_ERR_MASK 0x0000000000000040ULL
#define TX_ENT_MSK_MBOX_ERR_SHIFT 7
#define TX_ENT_MSK_MBOX_ERR_MASK 0x0000000000000080ULL
#define TX_ENT_MSK_MK_SHIFT 15
#define TX_ENT_MSK_MK_MASK 0x0000000000008000ULL
#define TX_ENT_MSK_MK_ALL (TX_ENT_MSK_PKT_PRT_ERR_MASK | \
TX_ENT_MSK_CONF_PART_ERR_MASK | \
TX_ENT_MSK_NACK_PKT_RD_MASK | \
TX_ENT_MSK_NACK_PREF_MASK | \
TX_ENT_MSK_PREF_BUF_ECC_ERR_MASK | \
TX_ENT_MSK_TX_RING_OFLOW_MASK | \
TX_ENT_MSK_PKT_SIZE_ERR_MASK | \
TX_ENT_MSK_MBOX_ERR_MASK | \
TX_ENT_MSK_MK_MASK)
typedef union _tx_dma_ent_msk_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t res1_1:16;
uint32_t mk:1;
uint32_t res2:7;
uint32_t mbox_err:1;
uint32_t pkt_size_err:1;
uint32_t tx_ring_oflow:1;
uint32_t pref_buf_ecc_err:1;
uint32_t nack_pref:1;
uint32_t nack_pkt_rd:1;
uint32_t conf_part_err:1;
uint32_t pkt_prt_err:1;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t pkt_prt_err:1;
uint32_t conf_part_err:1;
uint32_t nack_pkt_rd:1;
uint32_t nack_pref:1;
uint32_t pref_buf_ecc_err:1;
uint32_t tx_ring_oflow:1;
uint32_t pkt_size_err:1;
uint32_t mbox_err:1;
uint32_t res2:7;
uint32_t mk:1;
uint32_t res1_1:16;
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} tx_dma_ent_msk_t, *p_tx_dma_ent_msk_t;
#define TX_CS_PKT_PRT_ERR_SHIFT 0
#define TX_CS_PKT_PRT_ERR_MASK 0x0000000000000001ULL
#define TX_CS_CONF_PART_ERR_SHIF 1
#define TX_CS_CONF_PART_ERR_MASK 0x0000000000000002ULL
#define TX_CS_NACK_PKT_RD_SHIFT 2
#define TX_CS_NACK_PKT_RD_MASK 0x0000000000000004ULL
#define TX_CS_PREF_SHIFT 3
#define TX_CS_PREF_MASK 0x0000000000000008ULL
#define TX_CS_PREF_BUF_PAR_ERR_SHIFT 4
#define TX_CS_PREF_BUF_PAR_ERR_MASK 0x0000000000000010ULL
#define TX_CS_RING_OFLOW_SHIFT 5
#define TX_CS_RING_OFLOW_MASK 0x0000000000000020ULL
#define TX_CS_PKT_SIZE_ERR_SHIFT 6
#define TX_CS_PKT_SIZE_ERR_MASK 0x0000000000000040ULL
#define TX_CS_MMK_SHIFT 14
#define TX_CS_MMK_MASK 0x0000000000004000ULL
#define TX_CS_MK_SHIFT 15
#define TX_CS_MK_MASK 0x0000000000008000ULL
#define TX_CS_SNG_SHIFT 27
#define TX_CS_SNG_MASK 0x0000000008000000ULL
#define TX_CS_STOP_N_GO_SHIFT 28
#define TX_CS_STOP_N_GO_MASK 0x0000000010000000ULL
#define TX_CS_MB_SHIFT 29
#define TX_CS_MB_MASK 0x0000000020000000ULL
#define TX_CS_RST_STATE_SHIFT 30
#define TX_CS_RST_STATE_MASK 0x0000000040000000ULL
#define TX_CS_RST_SHIFT 31
#define TX_CS_RST_MASK 0x0000000080000000ULL
#define TX_CS_LASTMASK_SHIFT 32
#define TX_CS_LASTMARK_MASK 0x00000FFF00000000ULL
#define TX_CS_PKT_CNT_SHIFT 48
#define TX_CS_PKT_CNT_MASK 0x0FFF000000000000ULL
typedef union _tx_cs_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t res1:4;
uint32_t pkt_cnt:12;
uint32_t res2:4;
uint32_t lastmark:12;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t lastmark:12;
uint32_t res2:4;
uint32_t pkt_cnt:12;
uint32_t res1:4;
#endif
} hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t rst:1;
uint32_t rst_state:1;
uint32_t mb:1;
uint32_t stop_n_go:1;
uint32_t sng_state:1;
uint32_t res1:11;
uint32_t mk:1;
uint32_t mmk:1;
uint32_t res2:6;
uint32_t mbox_err:1;
uint32_t pkt_size_err:1;
uint32_t tx_ring_oflow:1;
uint32_t pref_buf_par_err:1;
uint32_t nack_pref:1;
uint32_t nack_pkt_rd:1;
uint32_t conf_part_err:1;
uint32_t pkt_prt_err:1;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t pkt_prt_err:1;
uint32_t conf_part_err:1;
uint32_t nack_pkt_rd:1;
uint32_t nack_pref:1;
uint32_t pref_buf_par_err:1;
uint32_t tx_ring_oflow:1;
uint32_t pkt_size_err:1;
uint32_t mbox_err:1;
uint32_t res2:6;
uint32_t mmk:1;
uint32_t mk:1;
uint32_t res1:11;
uint32_t sng_state:1;
uint32_t stop_n_go:1;
uint32_t mb:1;
uint32_t rst_state:1;
uint32_t rst:1;
#endif
} ldw;
#ifndef _BIG_ENDIAN
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t res1:4;
uint32_t pkt_cnt:12;
uint32_t res2:4;
uint32_t lastmark:12;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t lastmark:12;
uint32_t res2:4;
uint32_t pkt_cnt:12;
uint32_t res1:4;
#endif
} hdw;
#endif
} bits;
} tx_cs_t, *p_tx_cs_t;
#define TXDMA_MBH_SHIFT 0
#define TXDMA_MBH_ADDR_SHIFT 32
#define TXDMA_MBH_MASK 0x0000000000000FFFULL
typedef union _txdma_mbh_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t res1_1:20;
uint32_t mbaddr:12;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t mbaddr:12;
uint32_t res1_1:20;
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} txdma_mbh_t, *p_txdma_mbh_t;
#define TXDMA_MBL_SHIFT 6
#define TXDMA_MBL_MASK 0x00000000FFFFFFC0ULL
typedef union _txdma_mbl_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t mbaddr:26;
uint32_t res2:6;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t res2:6;
uint32_t mbaddr:26;
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} txdma_mbl_t, *p_txdma_mbl_t;
#define TX_DMA_PREF_ST_SHIFT 0
#define TX_DMA_PREF_ST_MASK 0x000000000000003FULL
typedef union _tx_dma_pre_st_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t res1_1:13;
uint32_t shadow_hd:19;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t shadow_hd:19;
uint32_t res1_1:13;
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} tx_dma_pre_st_t, *p_tx_dma_pre_st_t;
#define TX_RNG_ERR_LOGH_ERR_ADDR_SHIFT 0
#define TX_RNG_ERR_LOGH_ERR_ADDR_MASK 0x0000000000000FFFULL
#define TX_RNG_ERR_LOGH_ADDR_SHIFT 32
#define TX_RNG_ERR_LOGH_ERRCODE_SHIFT 26
#define TX_RNG_ERR_LOGH_ERRCODE_MASK 0x000000003C000000ULL
#define TX_RNG_ERR_LOGH_MERR_SHIFT 30
#define TX_RNG_ERR_LOGH_MERR_MASK 0x0000000040000000ULL
#define TX_RNG_ERR_LOGH_ERR_SHIFT 31
#define TX_RNG_ERR_LOGH_ERR_MASK 0x0000000080000000ULL
#define TXDMA_RING_PKT_PRT_ERR 0
#define TXDMA_RING_CONF_PART_ERR 0x01
#define TXDMA_RING_NACK_PKT_ERR 0x02
#define TXDMA_RING_NACK_PREF_ERR 0x03
#define TXDMA_RING_PREF_BUF_PAR_ERR 0x04
#define TXDMA_RING_TX_RING_OFLOW_ERR 0x05
#define TXDMA_RING_PKT_SIZE_ERR 0x06
typedef union _tx_rng_err_logh_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t err:1;
uint32_t merr:1;
uint32_t errcode:4;
uint32_t res2:14;
uint32_t err_addr:12;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t err_addr:12;
uint32_t res2:14;
uint32_t errcode:4;
uint32_t merr:1;
uint32_t err:1;
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} tx_rng_err_logh_t, *p_tx_rng_err_logh_t;
#define TX_RNG_ERR_LOGL_ERR_ADDR_SHIFT 0
#define TX_RNG_ERR_LOGL_ERR_ADDR_MASK 0x00000000FFFFFFFFULL
typedef union _tx_rng_err_logl_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t err_addr:32;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t err_addr:32;
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} tx_rng_err_logl_t, *p_tx_rng_err_logl_t;
typedef union _tdmc_intr_dbg_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t res:16;
uint32_t mk:1;
uint32_t rsvd:7;
uint32_t mbox_err:1;
uint32_t pkt_size_err:1;
uint32_t tx_ring_oflow:1;
uint32_t pref_buf_par_err:1;
uint32_t nack_pref:1;
uint32_t nack_pkt_rd:1;
uint32_t conf_part_err:1;
uint32_t pkt_part_err:1;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t pkt_part_err:1;
uint32_t conf_part_err:1;
uint32_t nack_pkt_rd:1;
uint32_t nack_pref:1;
uint32_t pref_buf_par_err:1;
uint32_t tx_ring_oflow:1;
uint32_t pkt_size_err:1;
uint32_t mbox_err:1;
uint32_t rsvd:7;
uint32_t mk:1;
uint32_t res:16;
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} tdmc_intr_dbg_t, *p_tdmc_intr_dbg_t;
typedef union _tx_cs_dbg_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t res1:4;
uint32_t pkt_cnt:12;
uint32_t res2:16;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t res2:16;
uint32_t pkt_cnt:12;
uint32_t res1:4;
#endif
} hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t rsvd:32;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t rsvd:32;
#endif
} ldw;
#ifndef _BIG_ENDIAN
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t res1:4;
uint32_t pkt_cnt:12;
uint32_t res2:16;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t res2:16;
uint32_t pkt_cnt:12;
uint32_t res1:4;
#endif
} hdw;
#endif
} bits;
} tx_cs_dbg_t, *p_tx_cs_dbg_t;
#define TXDMA_MAILBOX_BYTE_LENGTH 64
#define TXDMA_MAILBOX_UNUSED 24
typedef struct _txdma_mailbox_t {
tx_cs_t tx_cs;
tx_dma_pre_st_t tx_dma_pre_st;
tx_ring_hdl_t tx_ring_hdl;
tx_ring_kick_t tx_ring_kick;
uint32_t tx_rng_err_logh;
uint32_t tx_rng_err_logl;
uint32_t resv[TXDMA_MAILBOX_UNUSED];
} txdma_mailbox_t, *p_txdma_mailbox_t;
#if OLD
#define TX_DMA_MAP_OFFSET(port) (port * 8 + TX_DMA_MAP_REG)
#define TX_DMA_MAP_PORT_OFFSET(port) (port * 8)
#define TX_DMA_MAP_REG (FZC_DMC + 0x50000)
#define TX_DMA_MAP0_REG (FZC_DMC + 0x50000)
#define TX_DMA_MAP1_REG (FZC_DMC + 0x50008)
#define TX_DMA_MAP2_REG (FZC_DMC + 0x50010)
#define TX_DMA_MAP3_REG (FZC_DMC + 0x50018)
#define TX_DMA_MAP_SHIFT 0
#define TX_DMA_MAPMASK 0x00000000FFFFFFFFULL
typedef union _tx_dma_map_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t bind:32;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t bind:32;
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} tx_dma_map_t, *p_tx_dma_map_t;
#endif
#if OLD
#define DRR_WT_REG (FZC_DMC + 0x51000)
#define DRR_WT_SHIFT 0
#define DRR_WT_MASK 0x00000000000FFFFFULL
#define TXDMA_DRR_RNG_USE_OFFSET(channel) (channel * 16)
typedef union _drr_wt_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t res1_1:12;
uint32_t wt:20;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t wt:20;
uint32_t res1_1:12;
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} drr_wt_t, *p_drr_wt_t;
#endif
#if OLD
#define TXRNG_USE_REG (FZC_DMC + 0x51008)
#define TXRNG_USE_CNT_SHIFT 0
#define TXRNG_USE_CNT_MASK 0x0000000007FFFFFFULL
#define TXRNG_USE_OFLOW_SHIFT 0
#define TXRNG_USE_OFLOW_MASK 0x0000000008000000ULL
typedef union _txrng_use_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t res1_1:4;
uint32_t oflow:1;
uint32_t cnt:27;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t cnt:27;
uint32_t oflow:1;
uint32_t res1_1:4;
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} txrng_use_t, *p_txrng_use_t;
#endif
#define TX_PKT_HEADER_SIZE 16
#define TX_MAX_GATHER_POINTERS 15
#define TX_GATHER_POINTERS_THRESHOLD 8
#define TX_MAX_TRANSFER_LENGTH 4076
#define TX_JUMBO_MTU 9216
#define TX_PKT_HEADER_PAD_SHIFT 0
#define TX_PKT_HEADER_PAD_MASK 0x0000000000000007ULL
#define TX_PKT_HEADER_TOT_XFER_LEN_SHIFT 16
#define TX_PKT_HEADER_TOT_XFER_LEN_MASK 0x000000000000FFF8ULL
#define TX_PKT_HEADER_L4STUFF_SHIFT 32
#define TX_PKT_HEADER_L4STUFF_MASK 0x0000003F00000000ULL
#define TX_PKT_HEADER_L4START_SHIFT 40
#define TX_PKT_HEADER_L4START_MASK 0x00003F0000000000ULL
#define TX_PKT_HEADER_L3START_SHIFT 48
#define TX_PKT_HEADER_IHL_SHIFT 52
#define TX_PKT_HEADER_VLAN__SHIFT 56
#define TX_PKT_HEADER_TCP_UDP_CRC32C_SHIFT 57
#define TX_PKT_HEADER_LLC_SHIFT 57
#define TX_PKT_HEADER_TCP_UDP_CRC32C_SET 0x0200000000000000ULL
#define TX_PKT_HEADER_TCP_UDP_CRC32C_MASK 0x0200000000000000ULL
#define TX_PKT_HEADER_L4_PROTO_OP_SHIFT 2
#define TX_PKT_HEADER_L4_PROTO_OP_MASK 0x0C00000000000000ULL
#define TX_PKT_HEADER_V4_HDR_CS_SHIFT 60
#define TX_PKT_HEADER_V4_HDR_CS_SET 0x1000000000000000ULL
#define TX_PKT_HEADER_V4_HDR_CS_MASK 0x1000000000000000ULL
#define TX_PKT_HEADER_IP_VER_SHIFT 61
#define TX_PKT_HEADER_IP_VER_MASK 0x2000000000000000ULL
#define TX_PKT_HEADER_PKT_TYPE_SHIFT 62
#define TX_PKT_HEADER_PKT_TYPE_MASK 0x4000000000000000ULL
#define TX_PKT_L4_PROTO_OP_NOP 0x00
#define TX_PKT_L4_PROTO_OP_FULL_L4_CSUM 0x01
#define TX_PKT_L4_PROTO_OP_L4_PAYLOAD_CSUM 0x02
#define TX_PKT_L4_PROTO_OP_SCTP_CRC32 0x04
#define TX_PKT_PKT_TYPE_NOP 0x00
#define TX_PKT_PKT_TYPE_TCP 0x01
#define TX_PKT_PKT_TYPE_UDP 0x02
#define TX_PKT_PKT_TYPE_SCTP 0x03
#define TX_CKSUM_EN_PKT_TYPE_TCP (1ull << TX_PKT_HEADER_PKT_TYPE_SHIFT)
#define TX_CKSUM_EN_PKT_TYPE_UDP (2ull << TX_PKT_HEADER_PKT_TYPE_SHIFT)
#define TX_CKSUM_EN_PKT_TYPE_NOOP (0ull << TX_PKT_HEADER_PKT_TYPE_SHIFT)
typedef union _tx_pkt_header_t {
uint64_t value;
struct {
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t pad:3;
uint32_t resv2:13;
uint32_t tot_xfer_len:14;
uint32_t resv1:2;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t pad:3;
uint32_t resv2:13;
uint32_t tot_xfer_len:14;
uint32_t resv1:2;
#endif
} ldw;
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t l4stuff:6;
uint32_t resv3:2;
uint32_t l4start:6;
uint32_t resv2:2;
uint32_t l3start:4;
uint32_t ihl:4;
uint32_t vlan:1;
uint32_t llc:1;
uint32_t res1:3;
uint32_t ip_ver:1;
uint32_t cksum_en_pkt_type:2;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t l4stuff:6;
uint32_t resv3:2;
uint32_t l4start:6;
uint32_t resv2:2;
uint32_t l3start:4;
uint32_t ihl:4;
uint32_t vlan:1;
uint32_t llc:1;
uint32_t res1:3;
uint32_t ip_ver:1;
uint32_t cksum_en_pkt_type:2;
#endif
} hdw;
} bits;
} tx_pkt_header_t, *p_tx_pkt_header_t;
typedef struct _tx_pkt_hdr_all_t {
tx_pkt_header_t pkthdr;
uint64_t reserved;
} tx_pkt_hdr_all_t, *p_tx_pkt_hdr_all_t;
#define TDMC_INJ_PAR_ERR_REG (FZC_DMC + 0x45040)
#define TDMC_INJ_PAR_ERR_MASK 0x0000000000FFFFFFULL
#define TDMC_INJ_PAR_ERR_MASK_N2 0x000000000000FFFFULL
typedef union _tdmc_inj_par_err_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t rsvc:8;
uint32_t inject_parity_error:24;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t inject_parity_error:24;
uint32_t rsvc:8;
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} tdmc_inj_par_err_t, *p_tdmc_inj_par_err_t;
typedef union _tdmc_inj_par_err_n2_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t rsvc:16;
uint32_t inject_parity_error:16;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t inject_parity_error:16;
uint32_t rsvc:16;
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} tdmc_inj_par_err_n2_t, *p_tdmc_inj_par_err_n2_t;
#define TDMC_DBG_SEL_REG (FZC_DMC + 0x45080)
#define TDMC_DBG_SEL_MASK 0x000000000000003FULL
typedef union _tdmc_dbg_sel_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t rsvc:26;
uint32_t dbg_sel:6;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t dbg_sel:6;
uint32_t rsvc:26;
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} tdmc_dbg_sel_t, *p_tdmc_dbg_sel_t;
#define TDMC_TRAINING_REG (FZC_DMC + 0x45088)
#define TDMC_TRAINING_MASK 0x00000000FFFFFFFFULL
typedef union _tdmc_training_t {
uint64_t value;
struct {
#ifdef _BIG_ENDIAN
uint32_t hdw;
#endif
struct {
#if defined(_BIT_FIELDS_HTOL)
uint32_t vec:32;
#elif defined(_BIT_FIELDS_LTOH)
uint32_t vec:6;
#endif
} ldw;
#ifndef _BIG_ENDIAN
uint32_t hdw;
#endif
} bits;
} tdmc_training_t, *p_tdmc_training_t;
#ifdef __cplusplus
}
#endif
#endif