
/******************************************************************************/
/*                                                                            */
/* Broadcom BCM5700 Linux Network Driver, Copyright (c) 2000 Broadcom         */
/* Corporation.                                                               */
/* All rights reserved.                                                       */
/*                                                                            */
/* This program is free software; you can redistribute it and/or modify       */
/* it under the terms of the GNU General Public License as published by       */
/* the Free Software Foundation, located in the file LICENSE.                 */
/*                                                                            */
/* History:                                                                   */
/*                                                                            */
/******************************************************************************/

#ifndef TIGON3_H
#define TIGON3_H

#include "bcm570x_lm.h"
#if INCLUDE_TBI_SUPPORT
#include "bcm570x_autoneg.h"
#endif


/* io defines */
#if !defined(BIG_ENDIAN_HOST)
#define readl(addr) \
              (LONGSWAP((*(volatile unsigned int *)(addr))))
#define writel(b,addr) \
              ((*(volatile unsigned int *)(addr)) = (LONGSWAP(b)))
#else
#if 0 /* !defined(PPC603) */
#define readl(addr) (*(volatile unsigned int*)(0xa0000000 + (unsigned long)(addr)))
#define writel(b,addr) ((*(volatile unsigned int *) ((unsigned long)(addr) + 0xa0000000)) = (b))
#else
#if 1
#define readl(addr) (*(volatile unsigned int*)(addr))
#define writel(b,addr) ((*(volatile unsigned int *) (addr)) = (b))
#else
extern int sprintf(char* buf, const char* f, ...);
static __inline unsigned int readl(void* addr){
    char buf[128];
    unsigned int tmp = (*(volatile unsigned int*)(addr));
    sprintf(buf,"%s:%s: read 0x%x from 0x%x\n",__FILE__,__LINE__,tmp,addr,0,0);
    sysSerialPrintString(buf);
    return tmp;
}
static __inline void writel(unsigned int b, unsigned int addr){
    char buf[128];
    ((*(volatile unsigned int *) (addr)) = (b));
    sprintf(buf,"%s:%s: write 0x%x to 0x%x\n",__FILE__,__LINE__,b,addr,0,0);
    sysSerialPrintString(buf);
}
#endif
#endif /* PPC603 */
#endif




/******************************************************************************/
/* Constants. */
/******************************************************************************/

/* Maxim number of packet descriptors used for sending packets. */
#define MAX_TX_PACKET_DESC_COUNT            600
#define DEFAULT_TX_PACKET_DESC_COUNT        2

/* Maximum number of packet descriptors used for receiving packets. */
#if T3_JUMBO_RCB_ENTRY_COUNT
#define MAX_RX_PACKET_DESC_COUNT                                            \
    (T3_STD_RCV_RCB_ENTRY_COUNT + T3_JUMBO_RCV_RCB_ENTRY_COUNT)
#else
#define MAX_RX_PACKET_DESC_COUNT            800
#endif
#define DEFAULT_RX_PACKET_DESC_COUNT        2

/* Threshhold for double copying small tx packets.  0 will disable double */
/* copying of small Tx packets. */
#define DEFAULT_TX_COPY_BUFFER_SIZE         0
#define MIN_TX_COPY_BUFFER_SIZE             64
#define MAX_TX_COPY_BUFFER_SIZE             512

/* Cache line. */
#define COMMON_CACHE_LINE_SIZE              0x20
#define COMMON_CACHE_LINE_MASK              (COMMON_CACHE_LINE_SIZE-1)

/* Maximum number of fragment we can handle. */
#ifndef MAX_FRAGMENT_COUNT
#define MAX_FRAGMENT_COUNT                  32
#endif

/* B0 bug. */
#define BCM5700_BX_MIN_FRAG_SIZE            10
#define BCM5700_BX_MIN_FRAG_BUF_SIZE        16  /* nice aligned size. */
#define BCM5700_BX_MIN_FRAG_BUF_SIZE_MASK   (BCM5700_BX_MIN_FRAG_BUF_SIZE-1)
#define BCM5700_BX_TX_COPY_BUF_SIZE         (BCM5700_BX_MIN_FRAG_BUF_SIZE * \
                                            MAX_FRAGMENT_COUNT)

/* MAGIC number. */
/* #define T3_MAGIC_NUM                        'KevT' */
#define T3_FIRMWARE_MAILBOX                0x0b50
#define T3_MAGIC_NUM                       0x4B657654
#define T3_MAGIC_NUM_DISABLE_DMAW_ON_LINK_CHANGE 0x4861764b

#define T3_NIC_DATA_SIG_ADDR               0x0b54
#define T3_NIC_DATA_SIG                    0x4b657654

#define T3_NIC_DATA_NIC_CFG_ADDR           0x0b58
#define T3_NIC_CFG_LED_MODE_UNKNOWN        BIT_NONE
#define T3_NIC_CFG_LED_MODE_TRIPLE_SPEED   BIT_2
#define T3_NIC_CFG_LED_MODE_LINK_SPEED     BIT_3
#define T3_NIC_CFG_LED_MODE_OPEN_DRAIN     BIT_2
#define T3_NIC_CFG_LED_MODE_OUTPUT         BIT_3
#define T3_NIC_CFG_LED_MODE_MASK           (BIT_2 | BIT_3)
#define T3_NIC_CFG_PHY_TYPE_UNKNOWN         BIT_NONE
#define T3_NIC_CFG_PHY_TYPE_COPPER          BIT_4
#define T3_NIC_CFG_PHY_TYPE_FIBER           BIT_5
#define T3_NIC_CFG_PHY_TYPE_MASK            (BIT_4 | BIT_5)
#define T3_NIC_CFG_ENABLE_WOL               BIT_6
#define T3_NIC_CFG_ENABLE_ASF               BIT_7
#define T3_NIC_EEPROM_WP                    BIT_8

#define T3_NIC_DATA_PHY_ID_ADDR            0x0b74
#define T3_NIC_PHY_ID1_MASK                0xffff0000
#define T3_NIC_PHY_ID2_MASK                0x0000ffff

#define T3_CMD_MAILBOX                      0x0b78
#define T3_CMD_NICDRV_ALIVE                 0x01
#define T3_CMD_NICDRV_PAUSE_FW              0x02
#define T3_CMD_NICDRV_IPV4ADDR_CHANGE       0x03
#define T3_CMD_NICDRV_IPV6ADDR_CHANGE       0x04
#define T3_CMD_5703A0_FIX_DMAFW_DMAR        0x05
#define T3_CMD_5703A0_FIX_DMAFW_DMAW        0x06

#define T3_CMD_LENGTH_MAILBOX               0x0b7c
#define T3_CMD_DATA_MAILBOX                 0x0b80

#define T3_ASF_FW_STATUS_MAILBOX            0x0c00

#define T3_DRV_STATE_MAILBOX                0x0c04
#define T3_DRV_STATE_START                  0x01
#define T3_DRV_STATE_UNLOAD                 0x02
#define T3_DRV_STATE_WOL                    0x03
#define T3_DRV_STATE_SUSPEND                0x04

#define T3_FW_RESET_TYPE_MAILBOX            0x0c08

#define T3_MAC_ADDR_HIGH_MAILBOX            0x0c14
#define T3_MAC_ADDR_LOW_MAILBOX             0x0c18

/******************************************************************************/
/* Hardware constants. */
/******************************************************************************/

/* Number of entries in the send ring:  must be 512. */
#define T3_SEND_RCB_ENTRY_COUNT             512
#define T3_SEND_RCB_ENTRY_COUNT_MASK        (T3_SEND_RCB_ENTRY_COUNT-1)

/* Number of send RCBs.  May be 1-16 but for now, only support one. */
#define T3_MAX_SEND_RCB_COUNT               16

/* Number of entries in the Standard Receive RCB.  Must be 512 entries. */
#define T3_STD_RCV_RCB_ENTRY_COUNT          512
#define T3_STD_RCV_RCB_ENTRY_COUNT_MASK     (T3_STD_RCV_RCB_ENTRY_COUNT-1)
#define DEFAULT_STD_RCV_DESC_COUNT          200    /* Must be < 512. */
#define MAX_STD_RCV_BUFFER_SIZE             0x600

/* Number of entries in the Mini Receive RCB.  This value can either be */
/* 0, 1024.  Currently Mini Receive RCB is disabled. */
#ifndef T3_MINI_RCV_RCB_ENTRY_COUNT
#define T3_MINI_RCV_RCB_ENTRY_COUNT         0
#endif /* T3_MINI_RCV_RCB_ENTRY_COUNT */
#define T3_MINI_RCV_RCB_ENTRY_COUNT_MASK    (T3_MINI_RCV_RCB_ENTRY_COUNT-1)
#define MAX_MINI_RCV_BUFFER_SIZE            512
#define DEFAULT_MINI_RCV_BUFFER_SIZE        64
#define DEFAULT_MINI_RCV_DESC_COUNT         100    /* Must be < 1024. */

/* Number of entries in the Jumbo Receive RCB.  This value must 256 or 0. */
/* Currently, Jumbo Receive RCB is disabled. */
#ifndef T3_JUMBO_RCV_RCB_ENTRY_COUNT
#define T3_JUMBO_RCV_RCB_ENTRY_COUNT        0
#endif /* T3_JUMBO_RCV_RCB_ENTRY_COUNT */
#define T3_JUMBO_RCV_RCB_ENTRY_COUNT_MASK   (T3_JUMBO_RCV_RCB_ENTRY_COUNT-1)

#define MAX_JUMBO_RCV_BUFFER_SIZE           (10 * 1024) /* > 1514 */
#define DEFAULT_JUMBO_RCV_BUFFER_SIZE       (4 * 1024) /* > 1514 */
#define DEFAULT_JUMBO_RCV_DESC_COUNT        128     /* Must be < 256. */

#define MAX_JUMBO_TX_BUFFER_SIZE            (8 * 1024) /* > 1514 */
#define DEFAULT_JUMBO_TX_BUFFER_SIZE        (4 * 1024) /* > 1514 */

/* Number of receive return RCBs.  Maybe 1-16 but for now, only support one. */
#define T3_MAX_RCV_RETURN_RCB_COUNT         16

/* Number of entries in a Receive Return ring.  This value is either 1024 */
/* or 2048. */
#ifndef T3_RCV_RETURN_RCB_ENTRY_COUNT
#define T3_RCV_RETURN_RCB_ENTRY_COUNT       1024
#endif /* T3_RCV_RETURN_RCB_ENTRY_COUNT */
#define T3_RCV_RETURN_RCB_ENTRY_COUNT_MASK  (T3_RCV_RETURN_RCB_ENTRY_COUNT-1)


/* Default coalescing parameters. */
#define DEFAULT_RX_COALESCING_TICKS         100
#define MAX_RX_COALESCING_TICKS             500
#define DEFAULT_TX_COALESCING_TICKS         400
#define MAX_TX_COALESCING_TICKS             500
#define DEFAULT_RX_MAX_COALESCED_FRAMES     10
#define MAX_RX_MAX_COALESCED_FRAMES         100
#define ADAPTIVE_LO_RX_MAX_COALESCED_FRAMES    5
#define ADAPTIVE_HI_RX_MAX_COALESCED_FRAMES    42
#define ADAPTIVE_LO_RX_COALESCING_TICKS         50
#define ADAPTIVE_HI_RX_COALESCING_TICKS         300
#define ADAPTIVE_LO_PKT_THRESH              30000
#define ADAPTIVE_HI_PKT_THRESH              74000
#define DEFAULT_TX_MAX_COALESCED_FRAMES     40
#define ADAPTIVE_LO_TX_MAX_COALESCED_FRAMES    25
#define ADAPTIVE_HI_TX_MAX_COALESCED_FRAMES    75
#define MAX_TX_MAX_COALESCED_FRAMES         100

#define DEFAULT_RX_COALESCING_TICKS_DURING_INT          25
#define DEFAULT_TX_COALESCING_TICKS_DURING_INT          25
#define DEFAULT_RX_MAX_COALESCED_FRAMES_DURING_INT      5
#define DEFAULT_TX_MAX_COALESCED_FRAMES_DURING_INT      5

#define BAD_DEFAULT_VALUE                               0xffffffff

#define DEFAULT_STATS_COALESCING_TICKS      1000000
#define MAX_STATS_COALESCING_TICKS          3600000000U


/* Receive BD Replenish thresholds. */
#define DEFAULT_RCV_STD_BD_REPLENISH_THRESHOLD      4
#define DEFAULT_RCV_JUMBO_BD_REPLENISH_THRESHOLD    4

#define SPLIT_MODE_DISABLE                          0
#define SPLIT_MODE_ENABLE                           1

#define SPLIT_MODE_5704_MAX_REQ                     3

/* Maximum physical fragment size. */
#define MAX_FRAGMENT_SIZE                   (64 * 1024)


/* Standard view. */
#define T3_STD_VIEW_SIZE                    (64 * 1024)
#define T3_FLAT_VIEW_SIZE                   (32 * 1024 * 1024)


/* Buffer descriptor base address on the NIC's memory. */

#define T3_NIC_SND_BUFFER_DESC_ADDR         0x4000
#define T3_NIC_STD_RCV_BUFFER_DESC_ADDR     0x6000
#define T3_NIC_JUMBO_RCV_BUFFER_DESC_ADDR   0x7000

#define T3_NIC_STD_RCV_BUFFER_DESC_ADDR_EXT_MEM     0xc000
#define T3_NIC_JUMBO_RCV_BUFFER_DESC_ADDR_EXT_MEM   0xd000
#define T3_NIC_MINI_RCV_BUFFER_DESC_ADDR_EXT_MEM    0xe000

#define T3_NIC_SND_BUFFER_DESC_SIZE         (T3_SEND_RCB_ENTRY_COUNT * \
                                            sizeof(T3_SND_BD) / 4)

#define T3_NIC_STD_RCV_BUFFER_DESC_SIZE     (T3_STD_RCV_RCB_ENTRY_COUNT * \
                                            sizeof(T3_RCV_BD) / 4)

#define T3_NIC_JUMBO_RCV_BUFFER_DESC_SIZE   (T3_JUMBO_RCV_RCB_ENTRY_COUNT * \
                                            sizeof(T3_EXT_RCV_BD) / 4)


/* MBUF pool. */
#define T3_NIC_MBUF_POOL_ADDR               0x8000
/* #define T3_NIC_MBUF_POOL_SIZE               0x18000 */
#define T3_NIC_MBUF_POOL_SIZE96             0x18000
#define T3_NIC_MBUF_POOL_SIZE64             0x10000


#define T3_NIC_MBUF_POOL_ADDR_EXT_MEM       0x20000

/* DMA descriptor pool */
#define T3_NIC_DMA_DESC_POOL_ADDR           0x2000
#define T3_NIC_DMA_DESC_POOL_SIZE           0x2000      /* 8KB. */

#define T3_DEF_DMA_MBUF_LOW_WMARK           0x40
#define T3_DEF_RX_MAC_MBUF_LOW_WMARK        0x20
#define T3_DEF_MBUF_HIGH_WMARK              0x60

#define T3_DEF_DMA_MBUF_LOW_WMARK_JUMBO     304
#define T3_DEF_RX_MAC_MBUF_LOW_WMARK_JUMBO  152
#define T3_DEF_MBUF_HIGH_WMARK_JUMBO        380

#define T3_DEF_DMA_DESC_LOW_WMARK           5
#define T3_DEF_DMA_DESC_HIGH_WMARK          10

/* Maximum size of giant TCP packet can be sent */
#define T3_TCP_SEG_MAX_OFFLOAD_SIZE         64*1000
#define T3_TCP_SEG_MIN_NUM_SEG              20

#define T3_RX_CPU_ID    0x1
#define T3_TX_CPU_ID    0x2
#define T3_RX_CPU_SPAD_ADDR  0x30000
#define T3_RX_CPU_SPAD_SIZE  0x4000
#define T3_TX_CPU_SPAD_ADDR  0x34000
#define T3_TX_CPU_SPAD_SIZE  0x4000

typedef struct T3_DIR_ENTRY
{
  PLM_UINT8 Buffer;
  LM_UINT32 Offset;
  LM_UINT32 Length;
} T3_DIR_ENTRY,*PT3_DIR_ENTRY;

typedef struct T3_FWIMG_INFO
{
  LM_UINT32 StartAddress;
  T3_DIR_ENTRY Text;
  T3_DIR_ENTRY ROnlyData;
  T3_DIR_ENTRY Data;
  T3_DIR_ENTRY Sbss;
  T3_DIR_ENTRY Bss;
} T3_FWIMG_INFO, *PT3_FWIMG_INFO;



/******************************************************************************/
/* Tigon3 PCI Registers. */
/******************************************************************************/
#define T3_PCI_ID_BCM5700                   0x164414e4
#define T3_PCI_ID_BCM5701                   0x164514e4
#define T3_PCI_ID_BCM5702                   0x164614e4
#define T3_PCI_ID_BCM5702x                  0x16A614e4
#define T3_PCI_ID_BCM5703                   0x164714e4
#define T3_PCI_ID_BCM5703x                  0x16A714e4
#define T3_PCI_ID_BCM5702FE                 0x164D14e4
#define T3_PCI_ID_BCM5704                   0x164814e4

#define T3_PCI_VENDOR_ID                    (T3_PCI_ID & 0xffff)
#define T3_PCI_DEVICE_ID                    (T3_PCI_ID >> 16)

#define T3_PCI_MISC_HOST_CTRL_REG           0x68

/* The most significant 16bit of register 0x68. */
/* ChipId:4, ChipRev:4, MetalRev:8 */
#define T3_CHIP_ID_5700_A0                  0x7000
#define T3_CHIP_ID_5700_A1                  0x7001
#define T3_CHIP_ID_5700_B0                  0x7100
#define T3_CHIP_ID_5700_B1                  0x7101
#define T3_CHIP_ID_5700_C0                  0x7200

#define T3_CHIP_ID_5701_A0                  0x0000
#define T3_CHIP_ID_5701_B0                  0x0100
#define T3_CHIP_ID_5701_B2                  0x0102
#define T3_CHIP_ID_5701_B5                  0x0105

#define T3_CHIP_ID_5703_A0                  0x1000
#define T3_CHIP_ID_5703_A1                  0x1001
#define T3_CHIP_ID_5703_A2                  0x1002

#define T3_CHIP_ID_5704_A0                  0x2000

/* Chip Id. */
#define T3_ASIC_REV(_ChipRevId)             ((_ChipRevId) >> 12)
#define T3_ASIC_REV_5700                    0x07
#define T3_ASIC_REV_5701                    0x00
#define T3_ASIC_REV_5703                    0x01
#define T3_ASIC_REV_5704                    0x02


/* Chip id and revision. */
#define T3_CHIP_REV(_ChipRevId)             ((_ChipRevId) >> 8)
#define T3_CHIP_REV_5700_AX                 0x70
#define T3_CHIP_REV_5700_BX                 0x71
#define T3_CHIP_REV_5700_CX                 0x72
#define T3_CHIP_REV_5701_AX                 0x00

/* Metal revision. */
#define T3_METAL_REV(_ChipRevId)            ((_ChipRevId) & 0xff)
#define T3_METAL_REV_A0                     0x00
#define T3_METAL_REV_A1                     0x01
#define T3_METAL_REV_B0                     0x00
#define T3_METAL_REV_B1                     0x01
#define T3_METAL_REV_B2                     0x02

#define T3_PCI_REG_CLOCK_CTRL               0x74

#define T3_PCI_DISABLE_RX_CLOCK             BIT_10
#define T3_PCI_DISABLE_TX_CLOCK             BIT_11
#define T3_PCI_SELECT_ALTERNATE_CLOCK       BIT_12
#define T3_PCI_POWER_DOWN_PCI_PLL133        BIT_15
#define T3_PCI_44MHZ_CORE_CLOCK             BIT_18


#define T3_PCI_REG_ADDR_REG                 0x78
#define T3_PCI_REG_DATA_REG                 0x80

#define T3_PCI_MEM_WIN_ADDR_REG             0x7c
#define T3_PCI_MEM_WIN_DATA_REG             0x84

#define T3_PCI_PM_CAP_REG                   0x48

#define T3_PCI_PM_CAP_PME_D3COLD            BIT_31
#define T3_PCI_PM_CAP_PME_D3HOT             BIT_30

#define T3_PCI_PM_STATUS_CTRL_REG           0x4c

#define T3_PM_POWER_STATE_MASK              (BIT_0 | BIT_1)
#define T3_PM_POWER_STATE_D0                BIT_NONE
#define T3_PM_POWER_STATE_D1                BIT_0
#define T3_PM_POWER_STATE_D2                BIT_1
#define T3_PM_POWER_STATE_D3                (BIT_0 | BIT_1)

#define T3_PM_PME_ENABLE                    BIT_8
#define T3_PM_PME_ASSERTED                  BIT_15


/* PCI state register. */
#define T3_PCI_STATE_REG                    0x70

#define T3_PCI_STATE_FORCE_RESET            BIT_0
#define T3_PCI_STATE_INT_NOT_ACTIVE         BIT_1
#define T3_PCI_STATE_CONVENTIONAL_PCI_MODE  BIT_2
#define T3_PCI_STATE_BUS_SPEED_HIGH         BIT_3
#define T3_PCI_STATE_32BIT_PCI_BUS          BIT_4


/* Broadcom subsystem/subvendor IDs. */
#define T3_SVID_BROADCOM                            0x14e4

#define T3_SSID_BROADCOM_BCM95700A6                 0x1644
#define T3_SSID_BROADCOM_BCM95701A5                 0x0001
#define T3_SSID_BROADCOM_BCM95700T6                 0x0002  /* BCM8002 */
#define T3_SSID_BROADCOM_BCM95700A9                 0x0003  /* Agilent */
#define T3_SSID_BROADCOM_BCM95701T1                 0x0005
#define T3_SSID_BROADCOM_BCM95701T8                 0x0006
#define T3_SSID_BROADCOM_BCM95701A7                 0x0007  /* Agilent */
#define T3_SSID_BROADCOM_BCM95701A10                0x0008
#define T3_SSID_BROADCOM_BCM95701A12                0x8008
#define T3_SSID_BROADCOM_BCM95703Ax1                0x0009
#define T3_SSID_BROADCOM_BCM95703Ax2                0x8009

/* 3COM subsystem/subvendor IDs. */
#define T3_SVID_3COM                                0x10b7

#define T3_SSID_3COM_3C996T                         0x1000
#define T3_SSID_3COM_3C996BT                        0x1006
#define T3_SSID_3COM_3C996CT                        0x1002
#define T3_SSID_3COM_3C997T                         0x1003
#define T3_SSID_3COM_3C1000T                        0x1007
#define T3_SSID_3COM_3C940BR01                      0x1008

/* Fiber boards. */
#define T3_SSID_3COM_3C996SX                        0x1004
#define T3_SSID_3COM_3C997SX                        0x1005


/* Dell subsystem/subvendor IDs. */

#define T3_SVID_DELL                                0x1028

#define T3_SSID_DELL_VIPER                          0x00d1
#define T3_SSID_DELL_JAGUAR                         0x0106
#define T3_SSID_DELL_MERLOT                         0x0109
#define T3_SSID_DELL_SLIM_MERLOT                    0x010a

/* Compaq subsystem/subvendor IDs */

#define T3_SVID_COMPAQ                              0x0e11

#define T3_SSID_COMPAQ_BANSHEE                      0x007c
#define T3_SSID_COMPAQ_BANSHEE_2                    0x009a
#define T3_SSID_COMPAQ_CHANGELING                   0x007d
#define T3_SSID_COMPAQ_NC7780                       0x0085
#define T3_SSID_COMPAQ_NC7780_2                     0x0099


/******************************************************************************/
/* MII registers. */
/******************************************************************************/

/* Control register. */
#define PHY_CTRL_REG                                0x00

#define PHY_CTRL_SPEED_MASK                         (BIT_6 | BIT_13)
#define PHY_CTRL_SPEED_SELECT_10MBPS                BIT_NONE
#define PHY_CTRL_SPEED_SELECT_100MBPS               BIT_13
#define PHY_CTRL_SPEED_SELECT_1000MBPS              BIT_6
#define PHY_CTRL_COLLISION_TEST_ENABLE              BIT_7
#define PHY_CTRL_FULL_DUPLEX_MODE                   BIT_8
#define PHY_CTRL_RESTART_AUTO_NEG                   BIT_9
#define PHY_CTRL_ISOLATE_PHY                        BIT_10
#define PHY_CTRL_LOWER_POWER_MODE                   BIT_11
#define PHY_CTRL_AUTO_NEG_ENABLE                    BIT_12
#define PHY_CTRL_LOOPBACK_MODE                      BIT_14
#define PHY_CTRL_PHY_RESET                          BIT_15


/* Status register. */
#define PHY_STATUS_REG                              0x01

#define PHY_STATUS_LINK_PASS                        BIT_2
#define PHY_STATUS_AUTO_NEG_COMPLETE                BIT_5


/* Phy Id registers. */
#define PHY_ID1_REG                                 0x02
#define PHY_ID1_OUI_MASK                            0xffff

#define PHY_ID2_REG                                 0x03
#define PHY_ID2_REV_MASK                            0x000f
#define PHY_ID2_MODEL_MASK                          0x03f0
#define PHY_ID2_OUI_MASK                            0xfc00


/* Auto-negotiation advertisement register. */
#define PHY_AN_AD_REG                               0x04

#define PHY_AN_AD_ASYM_PAUSE                        BIT_11
#define PHY_AN_AD_PAUSE_CAPABLE                     BIT_10
#define PHY_AN_AD_10BASET_HALF                      BIT_5
#define PHY_AN_AD_10BASET_FULL                      BIT_6
#define PHY_AN_AD_100BASETX_HALF                    BIT_7
#define PHY_AN_AD_100BASETX_FULL                    BIT_8
#define PHY_AN_AD_PROTOCOL_802_3_CSMA_CD            0x01


/* Auto-negotiation Link Partner Ability register. */
#define PHY_LINK_PARTNER_ABILITY_REG                0x05

#define PHY_LINK_PARTNER_ASYM_PAUSE                 BIT_11
#define PHY_LINK_PARTNER_PAUSE_CAPABLE              BIT_10


/* Auto-negotiation expansion register. */
#define PHY_AN_EXPANSION_REG                        0x06



/******************************************************************************/
/* BCM5400 and BCM5401 phy info. */
/******************************************************************************/

#define PHY_DEVICE_ID           1

/* OUI: bit 31-10;   Model#: bit 9-4;   Rev# bit 3-0. */
#define PHY_UNKNOWN_PHY                             0x00000000
#define PHY_BCM5400_PHY_ID                          0x60008040
#define PHY_BCM5401_PHY_ID                          0x60008050
#define PHY_BCM5411_PHY_ID                          0x60008070
#define PHY_BCM5701_PHY_ID                          0x60008110
#define PHY_BCM5703_PHY_ID                          0x60008160
#define PHY_BCM5704_PHY_ID                          0x60008190
#define PHY_BCM8002_PHY_ID                          0x60010140

#define PHY_BCM5401_B0_REV                          0x1
#define PHY_BCM5401_B2_REV                          0x3
#define PHY_BCM5401_C0_REV                          0x6

#define PHY_ID_OUI_MASK                             0xfffffc00
#define PHY_ID_MODEL_MASK                           0x000003f0
#define PHY_ID_REV_MASK                             0x0000000f
#define PHY_ID_MASK                                 (PHY_ID_OUI_MASK |      \
                                                    PHY_ID_MODEL_MASK)


#define UNKNOWN_PHY_ID(x)   ((((x) & PHY_ID_MASK) != PHY_BCM5400_PHY_ID) && \
                            (((x) & PHY_ID_MASK) != PHY_BCM5401_PHY_ID) && \
                            (((x) & PHY_ID_MASK) != PHY_BCM5411_PHY_ID) && \
                            (((x) & PHY_ID_MASK) != PHY_BCM5701_PHY_ID) && \
                            (((x) & PHY_ID_MASK) != PHY_BCM5703_PHY_ID) && \
                            (((x) & PHY_ID_MASK) != PHY_BCM5704_PHY_ID) && \
                            (((x) & PHY_ID_MASK) != PHY_BCM8002_PHY_ID))



/* 1000Base-T control register. */
#define BCM540X_1000BASET_CTRL_REG                  0x09

#define BCM540X_AN_AD_1000BASET_HALF                BIT_8
#define BCM540X_AN_AD_1000BASET_FULL                BIT_9
#define BCM540X_CONFIG_AS_MASTER                    BIT_11
#define BCM540X_ENABLE_CONFIG_AS_MASTER             BIT_12


/* Extended control register. */
#define BCM540X_EXT_CTRL_REG                        0x10

#define BCM540X_EXT_CTRL_LINK3_LED_MODE             BIT_1
#define BCM540X_EXT_CTRL_TBI                        BIT_15

/* PHY extended status register. */
#define BCM540X_EXT_STATUS_REG                      0x11

#define BCM540X_EXT_STATUS_LINK_PASS                BIT_8


/* DSP Coefficient Read/Write Port. */
#define BCM540X_DSP_RW_PORT                         0x15


/* DSP Coeficient Address Register. */
#define BCM540X_DSP_ADDRESS_REG                     0x17

#define BCM540X_DSP_TAP_NUMBER_MASK                 0x00
#define BCM540X_DSP_AGC_A                           0x00
#define BCM540X_DSP_AGC_B                           0x01
#define BCM540X_DSP_MSE_PAIR_STATUS                 0x02
#define BCM540X_DSP_SOFT_DECISION                   0x03
#define BCM540X_DSP_PHASE_REG                       0x04
#define BCM540X_DSP_SKEW                            0x05
#define BCM540X_DSP_POWER_SAVER_UPPER_BOUND         0x06
#define BCM540X_DSP_POWER_SAVER_LOWER_BOUND         0x07
#define BCM540X_DSP_LAST_ECHO                       0x08
#define BCM540X_DSP_FREQUENCY                       0x09
#define BCM540X_DSP_PLL_BANDWIDTH                   0x0a
#define BCM540X_DSP_PLL_PHASE_OFFSET                0x0b

#define BCM540X_DSP_FILTER_DCOFFSET                 (BIT_10 | BIT_11)
#define BCM540X_DSP_FILTER_FEXT3                    (BIT_8 | BIT_9 | BIT_11)
#define BCM540X_DSP_FILTER_FEXT2                    (BIT_9 | BIT_11)
#define BCM540X_DSP_FILTER_FEXT1                    (BIT_8 | BIT_11)
#define BCM540X_DSP_FILTER_FEXT0                    BIT_11
#define BCM540X_DSP_FILTER_NEXT3                    (BIT_8 | BIT_9 | BIT_10)
#define BCM540X_DSP_FILTER_NEXT2                    (BIT_9 | BIT_10)
#define BCM540X_DSP_FILTER_NEXT1                    (BIT_8 | BIT_10)
#define BCM540X_DSP_FILTER_NEXT0                    BIT_10
#define BCM540X_DSP_FILTER_ECHO                     (BIT_8 | BIT_9)
#define BCM540X_DSP_FILTER_DFE                      BIT_9
#define BCM540X_DSP_FILTER_FFE                      BIT_8

#define BCM540X_DSP_CONTROL_ALL_FILTERS             BIT_12

#define BCM540X_DSP_SEL_CH_0                        BIT_NONE
#define BCM540X_DSP_SEL_CH_1                        BIT_13
#define BCM540X_DSP_SEL_CH_2                        BIT_14
#define BCM540X_DSP_SEL_CH_3                        (BIT_13 | BIT_14)

#define BCM540X_CONTROL_ALL_CHANNELS                BIT_15


/* Auxilliary Control Register (Shadow Register) */
#define BCM5401_AUX_CTRL                            0x18

#define BCM5401_SHADOW_SEL_MASK                     0x7
#define BCM5401_SHADOW_SEL_NORMAL                   0x00
#define BCM5401_SHADOW_SEL_10BASET                  0x01
#define BCM5401_SHADOW_SEL_POWER_CONTROL            0x02
#define BCM5401_SHADOW_SEL_IP_PHONE                 0x03
#define BCM5401_SHADOW_SEL_MISC_TEST1               0x04
#define BCM5401_SHADOW_SEL_MISC_TEST2               0x05
#define BCM5401_SHADOW_SEL_IP_PHONE_SEED            0x06


/* Shadow register selector == '000' */
#define BCM5401_SHDW_NORMAL_DIAG_MODE               BIT_3
#define BCM5401_SHDW_NORMAL_DISABLE_MBP             BIT_4
#define BCM5401_SHDW_NORMAL_DISABLE_LOW_PWR         BIT_5
#define BCM5401_SHDW_NORMAL_DISABLE_INV_PRF         BIT_6
#define BCM5401_SHDW_NORMAL_DISABLE_PRF             BIT_7
#define BCM5401_SHDW_NORMAL_RX_SLICING_NORMAL       BIT_NONE
#define BCM5401_SHDW_NORMAL_RX_SLICING_4D           BIT_8
#define BCM5401_SHDW_NORMAL_RX_SLICING_3LVL_1D      BIT_9
#define BCM5401_SHDW_NORMAL_RX_SLICING_5LVL_1D      (BIT_8 | BIT_9)
#define BCM5401_SHDW_NORMAL_TX_6DB_CODING           BIT_10
#define BCM5401_SHDW_NORMAL_ENABLE_SM_DSP_CLOCK     BIT_11
#define BCM5401_SHDW_NORMAL_EDGERATE_CTRL_4NS       BIT_NONE
#define BCM5401_SHDW_NORMAL_EDGERATE_CTRL_5NS       BIT_12
#define BCM5401_SHDW_NORMAL_EDGERATE_CTRL_3NS       BIT_13
#define BCM5401_SHDW_NORMAL_EDGERATE_CTRL_0NS       (BIT_12 | BIT_13)
#define BCM5401_SHDW_NORMAL_EXT_PACKET_LENGTH       BIT_14
#define BCM5401_SHDW_NORMAL_EXTERNAL_LOOPBACK       BIT_15


/* Auxilliary status summary. */
#define BCM540X_AUX_STATUS_REG                      0x19

#define BCM540X_AUX_LINK_PASS                       BIT_2
#define BCM540X_AUX_SPEED_MASK                      (BIT_8 | BIT_9 | BIT_10)
#define BCM540X_AUX_10BASET_HD                      BIT_8
#define BCM540X_AUX_10BASET_FD                      BIT_9
#define BCM540X_AUX_100BASETX_HD                    (BIT_8 | BIT_9)
#define BCM540X_AUX_100BASET4                       BIT_10
#define BCM540X_AUX_100BASETX_FD                    (BIT_8 | BIT_10)
#define BCM540X_AUX_100BASET_HD                     (BIT_9 | BIT_10)
#define BCM540X_AUX_100BASET_FD                     (BIT_8 | BIT_9 | BIT_10)


/* Interrupt status. */
#define BCM540X_INT_STATUS_REG                      0x1a

#define BCM540X_INT_LINK_CHANGE                     BIT_1
#define BCM540X_INT_SPEED_CHANGE                    BIT_2
#define BCM540X_INT_DUPLEX_CHANGE                   BIT_3
#define BCM540X_INT_AUTO_NEG_PAGE_RX                BIT_10


/* Interrupt mask register. */
#define BCM540X_INT_MASK_REG                        0x1b



/******************************************************************************/
/* Register definitions. */
/******************************************************************************/

typedef volatile LM_UINT8 T3_8BIT_REGISTER, *PT3_8BIT_REGISTER;
typedef volatile LM_UINT16 T3_16BIT_REGISTER, *PT3_16BIT_REGISTER;
typedef volatile LM_UINT32 T3_32BIT_REGISTER, *PT3_32BIT_REGISTER;

typedef struct {
    /* Big endian format. */
    T3_32BIT_REGISTER High;
    T3_32BIT_REGISTER Low;
} T3_64BIT_REGISTER, *PT3_64BIT_REGISTER;

typedef T3_64BIT_REGISTER T3_64BIT_HOST_ADDR, *PT3_64BIT_HOST_ADDR;

#define T3_NUM_OF_DMA_DESC    256
#define T3_NUM_OF_MBUF        768

typedef struct
{
  T3_64BIT_REGISTER host_addr;
  T3_32BIT_REGISTER nic_mbuf;
  T3_16BIT_REGISTER len;
  T3_16BIT_REGISTER cqid_sqid;
  T3_32BIT_REGISTER flags;
  T3_32BIT_REGISTER opaque1;
  T3_32BIT_REGISTER opaque2;
  T3_32BIT_REGISTER opaque3;
}T3_DMA_DESC, *PT3_DMA_DESC;



/******************************************************************************/
/* Ring control block. */
/******************************************************************************/

typedef struct {
    T3_64BIT_REGISTER HostRingAddr;

    union {
        struct {
#ifdef BIG_ENDIAN_HOST
            T3_16BIT_REGISTER MaxLen;
            T3_16BIT_REGISTER Flags;
#else /* BIG_ENDIAN_HOST */
            T3_16BIT_REGISTER Flags;
            T3_16BIT_REGISTER MaxLen;
#endif
        } s;

        T3_32BIT_REGISTER MaxLen_Flags;
    } u;

    T3_32BIT_REGISTER NicRingAddr;
} T3_RCB, *PT3_RCB;

#define T3_RCB_FLAG_USE_EXT_RECV_BD                     BIT_0
#define T3_RCB_FLAG_RING_DISABLED                       BIT_1



/******************************************************************************/
/* Status block. */
/******************************************************************************/

/*
 * Size of status block is actually 0x50 bytes.  Use 0x80 bytes for
 * cache line alignment.
 */
#define T3_STATUS_BLOCK_SIZE                                    0x80

typedef struct {
    volatile LM_UINT32 Status;
    #define STATUS_BLOCK_UPDATED                                BIT_0
    #define STATUS_BLOCK_LINK_CHANGED_STATUS                    BIT_1
    #define STATUS_BLOCK_ERROR                                  BIT_2

    volatile LM_UINT32 StatusTag;

#ifdef BIG_ENDIAN_HOST
    volatile LM_UINT16 RcvStdConIdx;
    volatile LM_UINT16 RcvJumboConIdx;

    volatile LM_UINT16 Reserved2;
    volatile LM_UINT16 RcvMiniConIdx;

    struct {
        volatile LM_UINT16 SendConIdx;   /* Send consumer index. */
        volatile LM_UINT16 RcvProdIdx;   /* Receive producer index. */
    } Idx[16];
#else /* BIG_ENDIAN_HOST */
    volatile LM_UINT16 RcvJumboConIdx;
    volatile LM_UINT16 RcvStdConIdx;

    volatile LM_UINT16 RcvMiniConIdx;
    volatile LM_UINT16 Reserved2;

    struct {
        volatile LM_UINT16 RcvProdIdx;   /* Receive producer index. */
        volatile LM_UINT16 SendConIdx;   /* Send consumer index. */
    } Idx[16];
#endif
} T3_STATUS_BLOCK, *PT3_STATUS_BLOCK;



/******************************************************************************/
/* Receive buffer descriptors. */
/******************************************************************************/

typedef struct {
    T3_64BIT_HOST_ADDR HostAddr;

#ifdef BIG_ENDIAN_HOST
    volatile LM_UINT16 Index;
    volatile LM_UINT16 Len;

    volatile LM_UINT16 Type;
    volatile LM_UINT16 Flags;

    volatile LM_UINT16 IpCksum;
    volatile LM_UINT16 TcpUdpCksum;

    volatile LM_UINT16 ErrorFlag;
    volatile LM_UINT16 VlanTag;
#else /* BIG_ENDIAN_HOST */
    volatile LM_UINT16 Len;
    volatile LM_UINT16 Index;

    volatile LM_UINT16 Flags;
    volatile LM_UINT16 Type;

    volatile LM_UINT16 TcpUdpCksum;
    volatile LM_UINT16 IpCksum;

    volatile LM_UINT16 VlanTag;
    volatile LM_UINT16 ErrorFlag;
#endif

    volatile LM_UINT32 Reserved;
    volatile LM_UINT32 Opaque;
} T3_RCV_BD, *PT3_RCV_BD;


typedef struct {
    T3_64BIT_HOST_ADDR HostAddr[3];

#ifdef BIG_ENDIAN_HOST
    LM_UINT16 Len1;
    LM_UINT16 Len2;

    LM_UINT16 Len3;
    LM_UINT16 Reserved1;
#else /* BIG_ENDIAN_HOST */
    LM_UINT16 Len2;
    LM_UINT16 Len1;

    LM_UINT16 Reserved1;
    LM_UINT16 Len3;
#endif

    T3_RCV_BD StdRcvBd;
} T3_EXT_RCV_BD, *PT3_EXT_RCV_BD;


/* Error flags. */
#define RCV_BD_ERR_BAD_CRC                          0x0001
#define RCV_BD_ERR_COLL_DETECT                      0x0002
#define RCV_BD_ERR_LINK_LOST_DURING_PKT             0x0004
#define RCV_BD_ERR_PHY_DECODE_ERR                   0x0008
#define RCV_BD_ERR_ODD_NIBBLED_RCVD_MII             0x0010
#define RCV_BD_ERR_MAC_ABORT                        0x0020
#define RCV_BD_ERR_LEN_LT_64                        0x0040
#define RCV_BD_ERR_TRUNC_NO_RESOURCES               0x0080
#define RCV_BD_ERR_GIANT_FRAME_RCVD                 0x0100


/* Buffer descriptor flags. */
#define RCV_BD_FLAG_END                             0x0004
#define RCV_BD_FLAG_JUMBO_RING                      0x0020
#define RCV_BD_FLAG_VLAN_TAG                        0x0040
#define RCV_BD_FLAG_FRAME_HAS_ERROR                 0x0400
#define RCV_BD_FLAG_MINI_RING                       0x0800
#define RCV_BD_FLAG_IP_CHKSUM_FIELD                 0x1000
#define RCV_BD_FLAG_TCP_UDP_CHKSUM_FIELD            0x2000
#define RCV_BD_FLAG_TCP_PACKET                      0x4000



/******************************************************************************/
/* Send buffer descriptor. */
/******************************************************************************/

typedef struct {
    T3_64BIT_HOST_ADDR HostAddr;

    union {
        struct {
#ifdef BIG_ENDIAN_HOST
            LM_UINT16 Len;
            LM_UINT16 Flags;
#else /* BIG_ENDIAN_HOST */
            LM_UINT16 Flags;
            LM_UINT16 Len;
#endif
        } s1;

        LM_UINT32 Len_Flags;
    } u1;

    union {
        struct {
#ifdef BIG_ENDIAN_HOST
            LM_UINT16 Reserved;
            LM_UINT16 VlanTag;
#else /* BIG_ENDIAN_HOST */
            LM_UINT16 VlanTag;
            LM_UINT16 Reserved;
#endif
        } s2;

        LM_UINT32 VlanTag;
    } u2;
} T3_SND_BD, *PT3_SND_BD;


/* Send buffer descriptor flags. */
#define SND_BD_FLAG_TCP_UDP_CKSUM                   0x0001
#define SND_BD_FLAG_IP_CKSUM                        0x0002
#define SND_BD_FLAG_END                             0x0004
#define SND_BD_FLAG_IP_FRAG                         0x0008
#define SND_BD_FLAG_IP_FRAG_END                     0x0010
#define SND_BD_FLAG_VLAN_TAG                        0x0040
#define SND_BD_FLAG_COAL_NOW                        0x0080
#define SND_BD_FLAG_CPU_PRE_DMA                     0x0100
#define SND_BD_FLAG_CPU_POST_DMA                    0x0200
#define SND_BD_FLAG_INSERT_SRC_ADDR                 0x1000
#define SND_BD_FLAG_CHOOSE_SRC_ADDR                 0x6000
#define SND_BD_FLAG_DONT_GEN_CRC                    0x8000

/* MBUFs */
typedef struct T3_MBUF_FRAME_DESC {
#ifdef BIG_ENDIAN_HOST
  LM_UINT32 status_control;
  union {
    struct {
      LM_UINT8 cqid;
      LM_UINT8 reserved1;
      LM_UINT16 length;
    }s1;
    LM_UINT32 word;
  }u1;
  union {
    struct
    {
      LM_UINT16 ip_hdr_start;
      LM_UINT16 tcp_udp_hdr_start;
    }s2;

    LM_UINT32 word;
  }u2;

  union {
    struct {
      LM_UINT16 data_start;
      LM_UINT16 vlan_id;
    }s3;

    LM_UINT32 word;
  }u3;

  union {
    struct {
      LM_UINT16 ip_checksum;
      LM_UINT16 tcp_udp_checksum;
    }s4;

    LM_UINT32 word;
  }u4;

  union {
    struct {
      LM_UINT16 pseudo_checksum;
      LM_UINT16 checksum_status;
    }s5;

    LM_UINT32 word;
  }u5;

  union {
    struct {
      LM_UINT16 rule_match;
      LM_UINT8 class;
      LM_UINT8 rupt;
    }s6;

    LM_UINT32 word;
  }u6;

  union {
    struct {
      LM_UINT16 reserved2;
      LM_UINT16 mbuf_num;
    }s7;

    LM_UINT32 word;
  }u7;

  LM_UINT32 reserved3;
  LM_UINT32 reserved4;
#else
  LM_UINT32 status_control;
  union {
    struct {
      LM_UINT16 length;
      LM_UINT8  reserved1;
      LM_UINT8  cqid;
    }s1;
    LM_UINT32 word;
  }u1;
  union {
    struct
    {
      LM_UINT16 tcp_udp_hdr_start;
      LM_UINT16 ip_hdr_start;
    }s2;

    LM_UINT32 word;
  }u2;

  union {
    struct {
      LM_UINT16 vlan_id;
      LM_UINT16 data_start;
    }s3;

    LM_UINT32 word;
  }u3;

  union {
    struct {
      LM_UINT16 tcp_udp_checksum;
      LM_UINT16 ip_checksum;
    }s4;

    LM_UINT32 word;
  }u4;

  union {
    struct {
      LM_UINT16 checksum_status;
      LM_UINT16 pseudo_checksum;
    }s5;

    LM_UINT32 word;
  }u5;

  union {
    struct {
      LM_UINT8 rupt;
      LM_UINT8 class;
      LM_UINT16 rule_match;
    }s6;

    LM_UINT32 word;
  }u6;

  union {
    struct {
      LM_UINT16 mbuf_num;
      LM_UINT16 reserved2;
    }s7;

    LM_UINT32 word;
  }u7;

  LM_UINT32 reserved3;
  LM_UINT32 reserved4;
#endif
}T3_MBUF_FRAME_DESC,*PT3_MBUF_FRAME_DESC;

typedef struct T3_MBUF_HDR {
  union {
    struct {
      unsigned int C:1;
      unsigned int F:1;
      unsigned int reserved1:7;
      unsigned int next_mbuf:16;
      unsigned int length:7;
    }s1;

    LM_UINT32 word;
  }u1;

  LM_UINT32 next_frame_ptr;
}T3_MBUF_HDR, *PT3_MBUF_HDR;

typedef struct T3_MBUF
{
  T3_MBUF_HDR hdr;
  union
  {
    struct {
      T3_MBUF_FRAME_DESC frame_hdr;
      LM_UINT32 data[20];
    }s1;

    struct {
      LM_UINT32 data[30];
    }s2;
  }body;
}T3_MBUF, *PT3_MBUF;

#define T3_MBUF_BASE   (T3_NIC_MBUF_POOL_ADDR >> 7)
#define T3_MBUF_END    ((T3_NIC_MBUF_POOL_ADDR + T3_NIC_MBUF_POOL_SIZE) >> 7)



/******************************************************************************/
/* Statistics block. */
/******************************************************************************/

typedef struct {
    LM_UINT8 Reserved0[0x400-0x300];

    /* Statistics maintained by Receive MAC. */
    T3_64BIT_REGISTER ifHCInOctets;
    T3_64BIT_REGISTER Reserved1;
    T3_64BIT_REGISTER etherStatsFragments;
    T3_64BIT_REGISTER ifHCInUcastPkts;
    T3_64BIT_REGISTER ifHCInMulticastPkts;
    T3_64BIT_REGISTER ifHCInBroadcastPkts;
    T3_64BIT_REGISTER dot3StatsFCSErrors;
    T3_64BIT_REGISTER dot3StatsAlignmentErrors;
    T3_64BIT_REGISTER xonPauseFramesReceived;
    T3_64BIT_REGISTER xoffPauseFramesReceived;
    T3_64BIT_REGISTER macControlFramesReceived;
    T3_64BIT_REGISTER xoffStateEntered;
    T3_64BIT_REGISTER dot3StatsFramesTooLong;
    T3_64BIT_REGISTER etherStatsJabbers;
    T3_64BIT_REGISTER etherStatsUndersizePkts;
    T3_64BIT_REGISTER inRangeLengthError;
    T3_64BIT_REGISTER outRangeLengthError;
    T3_64BIT_REGISTER etherStatsPkts64Octets;
    T3_64BIT_REGISTER etherStatsPkts65Octetsto127Octets;
    T3_64BIT_REGISTER etherStatsPkts128Octetsto255Octets;
    T3_64BIT_REGISTER etherStatsPkts256Octetsto511Octets;
    T3_64BIT_REGISTER etherStatsPkts512Octetsto1023Octets;
    T3_64BIT_REGISTER etherStatsPkts1024Octetsto1522Octets;
    T3_64BIT_REGISTER etherStatsPkts1523Octetsto2047Octets;
    T3_64BIT_REGISTER etherStatsPkts2048Octetsto4095Octets;
    T3_64BIT_REGISTER etherStatsPkts4096Octetsto8191Octets;
    T3_64BIT_REGISTER etherStatsPkts8192Octetsto9022Octets;

    T3_64BIT_REGISTER Unused1[37];

    /* Statistics maintained by Transmit MAC. */
    T3_64BIT_REGISTER ifHCOutOctets;
    T3_64BIT_REGISTER Reserved2;
    T3_64BIT_REGISTER etherStatsCollisions;
    T3_64BIT_REGISTER outXonSent;
    T3_64BIT_REGISTER outXoffSent;
    T3_64BIT_REGISTER flowControlDone;
    T3_64BIT_REGISTER dot3StatsInternalMacTransmitErrors;
    T3_64BIT_REGISTER dot3StatsSingleCollisionFrames;
    T3_64BIT_REGISTER dot3StatsMultipleCollisionFrames;
    T3_64BIT_REGISTER dot3StatsDeferredTransmissions;
    T3_64BIT_REGISTER Reserved3;
    T3_64BIT_REGISTER dot3StatsExcessiveCollisions;
    T3_64BIT_REGISTER dot3StatsLateCollisions;
    T3_64BIT_REGISTER dot3Collided2Times;
    T3_64BIT_REGISTER dot3Collided3Times;
    T3_64BIT_REGISTER dot3Collided4Times;
    T3_64BIT_REGISTER dot3Collided5Times;
    T3_64BIT_REGISTER dot3Collided6Times;
    T3_64BIT_REGISTER dot3Collided7Times;
    T3_64BIT_REGISTER dot3Collided8Times;
    T3_64BIT_REGISTER dot3Collided9Times;
    T3_64BIT_REGISTER dot3Collided10Times;
    T3_64BIT_REGISTER dot3Collided11Times;
    T3_64BIT_REGISTER dot3Collided12Times;
    T3_64BIT_REGISTER dot3Collided13Times;
    T3_64BIT_REGISTER dot3Collided14Times;
    T3_64BIT_REGISTER dot3Collided15Times;
    T3_64BIT_REGISTER ifHCOutUcastPkts;
    T3_64BIT_REGISTER ifHCOutMulticastPkts;
    T3_64BIT_REGISTER ifHCOutBroadcastPkts;
    T3_64BIT_REGISTER dot3StatsCarrierSenseErrors;
    T3_64BIT_REGISTER ifOutDiscards;
    T3_64BIT_REGISTER ifOutErrors;

    T3_64BIT_REGISTER Unused2[31];

    /* Statistics maintained by Receive List Placement. */
    T3_64BIT_REGISTER COSIfHCInPkts[16];
    T3_64BIT_REGISTER COSFramesDroppedDueToFilters;
    T3_64BIT_REGISTER nicDmaWriteQueueFull;
    T3_64BIT_REGISTER nicDmaWriteHighPriQueueFull;
    T3_64BIT_REGISTER nicNoMoreRxBDs;
    T3_64BIT_REGISTER ifInDiscards;
    T3_64BIT_REGISTER ifInErrors;
    T3_64BIT_REGISTER nicRecvThresholdHit;

    T3_64BIT_REGISTER Unused3[9];

    /* Statistics maintained by Send Data Initiator. */
    T3_64BIT_REGISTER COSIfHCOutPkts[16];
    T3_64BIT_REGISTER nicDmaReadQueueFull;
    T3_64BIT_REGISTER nicDmaReadHighPriQueueFull;
    T3_64BIT_REGISTER nicSendDataCompQueueFull;

    /* Statistics maintained by Host Coalescing. */
    T3_64BIT_REGISTER nicRingSetSendProdIndex;
    T3_64BIT_REGISTER nicRingStatusUpdate;
    T3_64BIT_REGISTER nicInterrupts;
    T3_64BIT_REGISTER nicAvoidedInterrupts;
    T3_64BIT_REGISTER nicSendThresholdHit;

    LM_UINT8 Reserved4[0xb00-0x9c0];
} T3_STATS_BLOCK, *PT3_STATS_BLOCK;



/******************************************************************************/
/* PCI configuration registers. */
/******************************************************************************/

typedef struct {
    T3_16BIT_REGISTER VendorId;
    T3_16BIT_REGISTER DeviceId;

    T3_16BIT_REGISTER Command;
    T3_16BIT_REGISTER Status;

    T3_32BIT_REGISTER ClassCodeRevId;

    T3_8BIT_REGISTER CacheLineSize;
    T3_8BIT_REGISTER LatencyTimer;
    T3_8BIT_REGISTER HeaderType;
    T3_8BIT_REGISTER Bist;

    T3_32BIT_REGISTER MemBaseAddrLow;
    T3_32BIT_REGISTER MemBaseAddrHigh;

    LM_UINT8 Unused1[20];

    T3_16BIT_REGISTER SubsystemVendorId;
    T3_16BIT_REGISTER SubsystemId;

    T3_32BIT_REGISTER RomBaseAddr;

    T3_8BIT_REGISTER PciXCapiblityPtr;
    LM_UINT8 Unused2[7];

    T3_8BIT_REGISTER IntLine;
    T3_8BIT_REGISTER IntPin;
    T3_8BIT_REGISTER MinGnt;
    T3_8BIT_REGISTER MaxLat;

    T3_8BIT_REGISTER PciXCapabilities;
    T3_8BIT_REGISTER PmCapabilityPtr;
    T3_16BIT_REGISTER PciXCommand;

    T3_32BIT_REGISTER PciXStatus;

    T3_8BIT_REGISTER PmCapabilityId;
    T3_8BIT_REGISTER VpdCapabilityPtr;
    T3_16BIT_REGISTER PmCapabilities;

    T3_16BIT_REGISTER PmCtrlStatus;
    #define PM_CTRL_PME_STATUS            BIT_15
    #define PM_CTRL_PME_ENABLE            BIT_8
    #define PM_CTRL_PME_POWER_STATE_D0    0
    #define PM_CTRL_PME_POWER_STATE_D1    1
    #define PM_CTRL_PME_POWER_STATE_D2    2
    #define PM_CTRL_PME_POWER_STATE_D3H   3

    T3_8BIT_REGISTER BridgeSupportExt;
    T3_8BIT_REGISTER PmData;

    T3_8BIT_REGISTER VpdCapabilityId;
    T3_8BIT_REGISTER MsiCapabilityPtr;
    T3_16BIT_REGISTER VpdAddrFlag;
    #define VPD_FLAG_WRITE      (1 << 15)
    #define VPD_FLAG_RW_MASK    (1 << 15)
    #define VPD_FLAG_READ       0


    T3_32BIT_REGISTER VpdData;

    T3_8BIT_REGISTER MsiCapabilityId;
    T3_8BIT_REGISTER NextCapabilityPtr;
    T3_16BIT_REGISTER MsiCtrl;
    #define MSI_CTRL_64BIT_CAP     (1 << 7)
    #define MSI_CTRL_MSG_ENABLE(x) (x << 4)
    #define MSI_CTRL_MSG_CAP(x)    (x << 1)
    #define MSI_CTRL_ENABLE        (1 << 0)


    T3_32BIT_REGISTER MsiAddrLow;
    T3_32BIT_REGISTER MsiAddrHigh;

    T3_16BIT_REGISTER MsiData;
    T3_16BIT_REGISTER Unused3;

    T3_32BIT_REGISTER MiscHostCtrl;
    #define MISC_HOST_CTRL_CLEAR_INT                        BIT_0
    #define MISC_HOST_CTRL_MASK_PCI_INT                     BIT_1
    #define MISC_HOST_CTRL_ENABLE_ENDIAN_BYTE_SWAP          BIT_2
    #define MISC_HOST_CTRL_ENABLE_ENDIAN_WORD_SWAP          BIT_3
    #define MISC_HOST_CTRL_ENABLE_PCI_STATE_REG_RW          BIT_4
    #define MISC_HOST_CTRL_ENABLE_CLK_REG_RW                BIT_5
    #define MISC_HOST_CTRL_ENABLE_REG_WORD_SWAP             BIT_6
    #define MISC_HOST_CTRL_ENABLE_INDIRECT_ACCESS           BIT_7
    #define MISC_HOST_CTRL_ENABLE_INT_MASK_MODE             BIT_8
    #define MISC_HOST_CTRL_ENABLE_TAGGED_STATUS_MODE        BIT_9

    T3_32BIT_REGISTER DmaReadWriteCtrl;
    #define DMA_CTRL_WRITE_BOUNDARY_MASK            (BIT_11 | BIT_12 | BIT_13)
    #define DMA_CTRL_WRITE_BOUNDARY_DISABLE         0
    #define DMA_CTRL_WRITE_BOUNDARY_16              BIT_11
    #define DMA_CTRL_WRITE_BOUNDARY_32              BIT_12
    #define DMA_CTRL_WRITE_BOUNDARY_64              (BIT_12 | BIT_11)
    #define DMA_CTRL_WRITE_BOUNDARY_128             BIT_13
    #define DMA_CTRL_WRITE_BOUNDARY_256             (BIT_13 | BIT_11)
    #define DMA_CTRL_WRITE_BOUNDARY_512             (BIT_13 | BIT_12)
    #define DMA_CTRL_WRITE_BOUNDARY_1024            (BIT_13 | BIT_12 | BIT_11)
    #define DMA_CTRL_WRITE_ONE_DMA_AT_ONCE          BIT_14


    T3_32BIT_REGISTER PciState;
    #define T3_PCI_STATE_FORCE_PCI_RESET                    BIT_0
    #define T3_PCI_STATE_INTERRUPT_NOT_ACTIVE               BIT_1
    #define T3_PCI_STATE_NOT_PCI_X_BUS                      BIT_2
    #define T3_PCI_STATE_HIGH_BUS_SPEED                     BIT_3
    #define T3_PCI_STATE_32BIT_PCI_BUS                      BIT_4
    #define T3_PCI_STATE_PCI_ROM_ENABLE                     BIT_5
    #define T3_PCI_STATE_PCI_ROM_RETRY_ENABLE               BIT_6
    #define T3_PCI_STATE_FLAT_VIEW                          BIT_8
    #define T3_PCI_STATE_RETRY_SAME_DMA                     BIT_13

    T3_32BIT_REGISTER ClockCtrl;
    #define T3_PCI_CLKCTRL_TXCPU_CLK_DISABLE                BIT_11
    #define T3_PCI_CLKCTRL_RXCPU_CLK_DISABLE                BIT_10
    #define T3_PCI_CLKCTRL_CORE_CLK_DISABLE                 BIT_9

    T3_32BIT_REGISTER RegBaseAddr;

    T3_32BIT_REGISTER MemWindowBaseAddr;

#ifdef NIC_CPU_VIEW
  /* These registers are ONLY visible to NIC CPU */
    T3_32BIT_REGISTER PowerConsumed;
    T3_32BIT_REGISTER PowerDissipated;
#else /* NIC_CPU_VIEW */
    T3_32BIT_REGISTER RegData;
    T3_32BIT_REGISTER MemWindowData;
#endif /* !NIC_CPU_VIEW */

    T3_32BIT_REGISTER ModeCtrl;

    T3_32BIT_REGISTER MiscCfg;

    T3_32BIT_REGISTER MiscLocalCtrl;

    T3_32BIT_REGISTER Unused4;

    /* NOTE: Big/Little-endian clarification needed.  Are these register */
    /* in big or little endian formate. */
    T3_64BIT_REGISTER StdRingProdIdx;
    T3_64BIT_REGISTER RcvRetRingConIdx;
    T3_64BIT_REGISTER SndProdIdx;

    LM_UINT8 Unused5[80];
} T3_PCI_CONFIGURATION, *PT3_PCI_CONFIGURATION;

#define PCIX_CMD_MAX_SPLIT_MASK                         0x0070
#define PCIX_CMD_MAX_SPLIT_SHL                          4
#define PCIX_CMD_MAX_BURST_MASK                         0x000c
#define PCIX_CMD_MAX_BURST_SHL                          2
#define PCIX_CMD_MAX_BURST_CPIOB                        2

/******************************************************************************/
/* Mac control registers. */
/******************************************************************************/

typedef struct {
    /* MAC mode control. */
    T3_32BIT_REGISTER Mode;
    #define MAC_MODE_GLOBAL_RESET                       BIT_0
    #define MAC_MODE_HALF_DUPLEX                        BIT_1
    #define MAC_MODE_PORT_MODE_MASK                     (BIT_2 | BIT_3)
    #define MAC_MODE_PORT_MODE_TBI                      (BIT_2 | BIT_3)
    #define MAC_MODE_PORT_MODE_GMII                     BIT_3
    #define MAC_MODE_PORT_MODE_MII                      BIT_2
    #define MAC_MODE_PORT_MODE_NONE                     BIT_NONE
    #define MAC_MODE_PORT_INTERNAL_LOOPBACK             BIT_4
    #define MAC_MODE_TAGGED_MAC_CONTROL                 BIT_7
    #define MAC_MODE_TX_BURSTING                        BIT_8
    #define MAC_MODE_MAX_DEFER                          BIT_9
    #define MAC_MODE_LINK_POLARITY                      BIT_10
    #define MAC_MODE_ENABLE_RX_STATISTICS               BIT_11
    #define MAC_MODE_CLEAR_RX_STATISTICS                BIT_12
    #define MAC_MODE_FLUSH_RX_STATISTICS                BIT_13
    #define MAC_MODE_ENABLE_TX_STATISTICS               BIT_14
    #define MAC_MODE_CLEAR_TX_STATISTICS                BIT_15
    #define MAC_MODE_FLUSH_TX_STATISTICS                BIT_16
    #define MAC_MODE_SEND_CONFIGS                       BIT_17
    #define MAC_MODE_DETECT_MAGIC_PACKET_ENABLE         BIT_18
    #define MAC_MODE_ACPI_POWER_ON_ENABLE               BIT_19
    #define MAC_MODE_ENABLE_MIP                         BIT_20
    #define MAC_MODE_ENABLE_TDE                         BIT_21
    #define MAC_MODE_ENABLE_RDE                         BIT_22
    #define MAC_MODE_ENABLE_FHDE                        BIT_23

    /* MAC status */
    T3_32BIT_REGISTER Status;
    #define MAC_STATUS_PCS_SYNCED                       BIT_0
    #define MAC_STATUS_SIGNAL_DETECTED                  BIT_1
    #define MAC_STATUS_RECEIVING_CFG                    BIT_2
    #define MAC_STATUS_CFG_CHANGED                      BIT_3
    #define MAC_STATUS_SYNC_CHANGED                     BIT_4
    #define MAC_STATUS_PORT_DECODE_ERROR                BIT_10
    #define MAC_STATUS_LINK_STATE_CHANGED               BIT_12
    #define MAC_STATUS_MI_COMPLETION                    BIT_22
    #define MAC_STATUS_MI_INTERRUPT                     BIT_23
    #define MAC_STATUS_AP_ERROR                         BIT_24
    #define MAC_STATUS_ODI_ERROR                        BIT_25
    #define MAC_STATUS_RX_STATS_OVERRUN                 BIT_26
    #define MAC_STATUS_TX_STATS_OVERRUN                 BIT_27

    /* Event Enable */
    T3_32BIT_REGISTER MacEvent;
    #define MAC_EVENT_ENABLE_PORT_DECODE_ERR            BIT_10
    #define MAC_EVENT_ENABLE_LINK_STATE_CHANGED_ATTN    BIT_12
    #define MAC_EVENT_ENABLE_MI_COMPLETION              BIT_22
    #define MAC_EVENT_ENABLE_MI_INTERRUPT               BIT_23
    #define MAC_EVENT_ENABLE_AP_ERROR                   BIT_24
    #define MAC_EVENT_ENABLE_ODI_ERROR                  BIT_25
    #define MAC_EVENT_ENABLE_RX_STATS_OVERRUN           BIT_26
    #define MAC_EVENT_ENABLE_TX_STATS_OVERRUN           BIT_27

    /* Led control. */
    T3_32BIT_REGISTER LedCtrl;
    #define LED_CTRL_OVERRIDE_LINK_LED                  BIT_0
    #define LED_CTRL_1000MBPS_LED_ON                    BIT_1
    #define LED_CTRL_100MBPS_LED_ON                     BIT_2
    #define LED_CTRL_10MBPS_LED_ON                      BIT_3
    #define LED_CTRL_OVERRIDE_TRAFFIC_LED               BIT_4
    #define LED_CTRL_BLINK_TRAFFIC_LED                  BIT_5
    #define LED_CTRL_TRAFFIC_LED                        BIT_6
    #define LED_CTRL_1000MBPS_LED_STATUS                BIT_7
    #define LED_CTRL_100MBPS_LED_STATUS                 BIT_8
    #define LED_CTRL_10MBPS_LED_STATUS                  BIT_9
    #define LED_CTRL_TRAFFIC_LED_STATUS                 BIT_10
    #define LED_CTRL_MAC_MODE                           BIT_NONE
    #define LED_CTRL_PHY_MODE_1                         BIT_11
    #define LED_CTRL_PHY_MODE_2                         BIT_12
    #define LED_CTRL_BLINK_RATE_MASK                    0x7ff80000
    #define LED_CTRL_OVERRIDE_BLINK_PERIOD              BIT_19
    #define LED_CTRL_OVERRIDE_BLINK_RATE                BIT_31

    /* MAC addresses. */
    struct {
        T3_32BIT_REGISTER High;             /* Upper 2 bytes. */
        T3_32BIT_REGISTER Low;              /* Lower 4 bytes. */
    } MacAddr[4];

    /* ACPI Mbuf pointer. */
    T3_32BIT_REGISTER AcpiMbufPtr;

    /* ACPI Length and Offset. */
    T3_32BIT_REGISTER AcpiLengthOffset;
    #define ACPI_LENGTH_MASK                            0xffff
    #define ACPI_OFFSET_MASK                            0x0fff0000
    #define ACPI_LENGTH(x)                              x
    #define ACPI_OFFSET(x)                              ((x) << 16)

    /* Transmit random backoff. */
    T3_32BIT_REGISTER TxBackoffSeed;
    #define MAC_TX_BACKOFF_SEED_MASK                    0x3ff

    /* Receive MTU */
    T3_32BIT_REGISTER MtuSize;
    #define MAC_RX_MTU_MASK                             0xffff

    /* Gigabit PCS Test. */
    T3_32BIT_REGISTER PcsTest;
    #define MAC_PCS_TEST_DATA_PATTERN_MASK              0x0fffff
    #define MAC_PCS_TEST_ENABLE                         BIT_20

    /* Transmit Gigabit Auto-Negotiation. */
    T3_32BIT_REGISTER TxAutoNeg;
    #define MAC_AN_TX_AN_DATA_MASK                      0xffff

    /* Receive Gigabit Auto-Negotiation. */
    T3_32BIT_REGISTER RxAutoNeg;
    #define MAC_AN_RX_AN_DATA_MASK                      0xffff

    /* MI Communication. */
    T3_32BIT_REGISTER MiCom;
    #define MI_COM_CMD_MASK                             (BIT_26 | BIT_27)
    #define MI_COM_CMD_WRITE                            BIT_26
    #define MI_COM_CMD_READ                             BIT_27
    #define MI_COM_READ_FAILED                          BIT_28
    #define MI_COM_START                                BIT_29
    #define MI_COM_BUSY                                 BIT_29

    #define MI_COM_PHY_ADDR_MASK                        0x1f
    #define MI_COM_FIRST_PHY_ADDR_BIT                   21

    #define MI_COM_PHY_REG_ADDR_MASK                    0x1f
    #define MI_COM_FIRST_PHY_REG_ADDR_BIT               16

    #define MI_COM_PHY_DATA_MASK                        0xffff

    /* MI Status. */
    T3_32BIT_REGISTER MiStatus;
    #define MI_STATUS_ENABLE_LINK_STATUS_ATTN           BIT_0

    /* MI Mode. */
    T3_32BIT_REGISTER MiMode;
    #define MI_MODE_CLOCK_SPEED_10MHZ                   BIT_0
    #define MI_MODE_USE_SHORT_PREAMBLE                  BIT_1
    #define MI_MODE_AUTO_POLLING_ENABLE                 BIT_4
    #define MI_MODE_CORE_CLOCK_SPEED_62MHZ              BIT_15

    /* Auto-polling status. */
    T3_32BIT_REGISTER AutoPollStatus;
    #define AUTO_POLL_ERROR                             BIT_0

    /* Transmit MAC mode. */
    T3_32BIT_REGISTER TxMode;
    #define TX_MODE_RESET                               BIT_0
    #define TX_MODE_ENABLE                              BIT_1
    #define TX_MODE_ENABLE_FLOW_CONTROL                 BIT_4
    #define TX_MODE_ENABLE_BIG_BACKOFF                  BIT_5
    #define TX_MODE_ENABLE_LONG_PAUSE                   BIT_6

    /* Transmit MAC status. */
    T3_32BIT_REGISTER TxStatus;
    #define TX_STATUS_RX_CURRENTLY_XOFFED               BIT_0
    #define TX_STATUS_SENT_XOFF                         BIT_1
    #define TX_STATUS_SENT_XON                          BIT_2
    #define TX_STATUS_LINK_UP                           BIT_3
    #define TX_STATUS_ODI_UNDERRUN                      BIT_4
    #define TX_STATUS_ODI_OVERRUN                       BIT_5

    /* Transmit MAC length. */
    T3_32BIT_REGISTER TxLengths;
    #define TX_LEN_SLOT_TIME_MASK                       0xff
    #define TX_LEN_IPG_MASK                             0x0f00
    #define TX_LEN_IPG_CRS_MASK                         (BIT_12 | BIT_13)

    /* Receive MAC mode. */
    T3_32BIT_REGISTER RxMode;
    #define RX_MODE_RESET                               BIT_0
    #define RX_MODE_ENABLE                              BIT_1
    #define RX_MODE_ENABLE_FLOW_CONTROL                 BIT_2
    #define RX_MODE_KEEP_MAC_CONTROL                    BIT_3
    #define RX_MODE_KEEP_PAUSE                          BIT_4
    #define RX_MODE_ACCEPT_OVERSIZED                    BIT_5
    #define RX_MODE_ACCEPT_RUNTS                        BIT_6
    #define RX_MODE_LENGTH_CHECK                        BIT_7
    #define RX_MODE_PROMISCUOUS_MODE                    BIT_8
    #define RX_MODE_NO_CRC_CHECK                        BIT_9
    #define RX_MODE_KEEP_VLAN_TAG                       BIT_10

    /* Receive MAC status. */
    T3_32BIT_REGISTER RxStatus;
    #define RX_STATUS_REMOTE_TRANSMITTER_XOFFED         BIT_0
    #define RX_STATUS_XOFF_RECEIVED                     BIT_1
    #define RX_STATUS_XON_RECEIVED                      BIT_2

    /* Hash registers. */
    T3_32BIT_REGISTER HashReg[4];

    /* Receive placement rules registers. */
    struct {
        T3_32BIT_REGISTER Rule;
        T3_32BIT_REGISTER Value;
    } RcvRules[16];

    #define RCV_DISABLE_RULE_MASK                       0x7fffffff

    #define RCV_RULE1_REJECT_BROADCAST_IDX              0x00
    #define REJECT_BROADCAST_RULE1_RULE                 0xc2000000
    #define REJECT_BROADCAST_RULE1_VALUE                0xffffffff

    #define RCV_RULE2_REJECT_BROADCAST_IDX              0x01
    #define REJECT_BROADCAST_RULE2_RULE                 0x86000004
    #define REJECT_BROADCAST_RULE2_VALUE                0xffffffff

#if INCLUDE_5701_AX_FIX
    #define RCV_LAST_RULE_IDX                           0x04
#else
    #define RCV_LAST_RULE_IDX                           0x02
#endif

    T3_32BIT_REGISTER RcvRuleCfg;
    #define RX_RULE_DEFAULT_CLASS                       (1 << 3)

    LM_UINT8 Reserved1[140];

    T3_32BIT_REGISTER SerdesCfg;
    T3_32BIT_REGISTER SerdesStatus;

    LM_UINT8 Reserved2[104];

    volatile LM_UINT8 TxMacState[16];
    volatile LM_UINT8 RxMacState[20];

    LM_UINT8 Reserved3[476];

    T3_32BIT_REGISTER RxStats[26];

    LM_UINT8 Reserved4[24];

    T3_32BIT_REGISTER TxStats[28];

    LM_UINT8 Reserved5[784];
} T3_MAC_CONTROL, *PT3_MAC_CONTROL;



/******************************************************************************/
/* Send data initiator control registers. */
/******************************************************************************/

typedef struct {
    T3_32BIT_REGISTER Mode;
    #define T3_SND_DATA_IN_MODE_RESET                       BIT_0
    #define T3_SND_DATA_IN_MODE_ENABLE                      BIT_1
    #define T3_SND_DATA_IN_MODE_STATS_OFLW_ATTN_ENABLE      BIT_2

    T3_32BIT_REGISTER Status;
    #define T3_SND_DATA_IN_STATUS_STATS_OFLW_ATTN           BIT_2

    T3_32BIT_REGISTER StatsCtrl;
    #define T3_SND_DATA_IN_STATS_CTRL_ENABLE                BIT_0
    #define T3_SND_DATA_IN_STATS_CTRL_FASTER_UPDATE         BIT_1
    #define T3_SND_DATA_IN_STATS_CTRL_CLEAR                 BIT_2
    #define T3_SND_DATA_IN_STATS_CTRL_FLUSH                 BIT_3
    #define T3_SND_DATA_IN_STATS_CTRL_FORCE_ZERO            BIT_4

    T3_32BIT_REGISTER StatsEnableMask;
    T3_32BIT_REGISTER StatsIncMask;

    LM_UINT8 Reserved[108];

    T3_32BIT_REGISTER ClassOfServCnt[16];
    T3_32BIT_REGISTER DmaReadQFullCnt;
    T3_32BIT_REGISTER DmaPriorityReadQFullCnt;
    T3_32BIT_REGISTER SdcQFullCnt;

    T3_32BIT_REGISTER NicRingSetSendProdIdxCnt;
    T3_32BIT_REGISTER StatusUpdatedCnt;
    T3_32BIT_REGISTER InterruptsCnt;
    T3_32BIT_REGISTER AvoidInterruptsCnt;
    T3_32BIT_REGISTER SendThresholdHitCnt;

    /* Unused space. */
    LM_UINT8 Unused[800];
} T3_SEND_DATA_INITIATOR, *PT3_SEND_DATA_INITIATOR;



/******************************************************************************/
/* Send data completion control registers. */
/******************************************************************************/

typedef struct {
    T3_32BIT_REGISTER Mode;
    #define SND_DATA_COMP_MODE_RESET                        BIT_0
    #define SND_DATA_COMP_MODE_ENABLE                       BIT_1

    /* Unused space. */
    LM_UINT8 Unused[1020];
} T3_SEND_DATA_COMPLETION, *PT3_SEND_DATA_COMPLETION;



/******************************************************************************/
/* Send BD Ring Selector Control Registers. */
/******************************************************************************/

typedef struct {
    T3_32BIT_REGISTER Mode;
    #define SND_BD_SEL_MODE_RESET                           BIT_0
    #define SND_BD_SEL_MODE_ENABLE                          BIT_1
    #define SND_BD_SEL_MODE_ATTN_ENABLE                     BIT_2

    T3_32BIT_REGISTER Status;
    #define SND_BD_SEL_STATUS_ERROR_ATTN                    BIT_2

    T3_32BIT_REGISTER HwDiag;

    /* Unused space. */
    LM_UINT8 Unused1[52];

    /* Send BD Ring Selector Local NIC Send BD Consumer Index. */
    T3_32BIT_REGISTER NicSendBdSelConIdx[16];

    /* Unused space. */
    LM_UINT8 Unused2[896];
} T3_SEND_BD_SELECTOR, *PT3_SEND_BD_SELECTOR;



/******************************************************************************/
/* Send BD initiator control registers. */
/******************************************************************************/

typedef struct {
    T3_32BIT_REGISTER Mode;
    #define SND_BD_IN_MODE_RESET                            BIT_0
    #define SND_BD_IN_MODE_ENABLE                           BIT_1
    #define SND_BD_IN_MODE_ATTN_ENABLE                      BIT_2

    T3_32BIT_REGISTER Status;
    #define SND_BD_IN_STATUS_ERROR_ATTN                     BIT_2

    /* Send BD initiator local NIC send BD producer index. */
    T3_32BIT_REGISTER NicSendBdInProdIdx[16];

    /* Unused space. */
    LM_UINT8 Unused2[952];
} T3_SEND_BD_INITIATOR, *PT3_SEND_BD_INITIATOR;



/******************************************************************************/
/* Send BD Completion Control. */
/******************************************************************************/

typedef struct {
    T3_32BIT_REGISTER Mode;
    #define SND_BD_COMP_MODE_RESET                          BIT_0
    #define SND_BD_COMP_MODE_ENABLE                         BIT_1
    #define SND_BD_COMP_MODE_ATTN_ENABLE                    BIT_2

    /* Unused space. */
    LM_UINT8 Unused2[1020];
} T3_SEND_BD_COMPLETION, *PT3_SEND_BD_COMPLETION;



/******************************************************************************/
/* Receive list placement control registers. */
/******************************************************************************/

typedef struct {
    /* Mode. */
    T3_32BIT_REGISTER Mode;
    #define RCV_LIST_PLMT_MODE_RESET                        BIT_0
    #define RCV_LIST_PLMT_MODE_ENABLE                       BIT_1
    #define RCV_LIST_PLMT_MODE_CLASS0_ATTN_ENABLE           BIT_2
    #define RCV_LIST_PLMT_MODE_MAPPING_OOR_ATTN_ENABLE      BIT_3
    #define RCV_LIST_PLMT_MODE_STATS_OFLOW_ATTN_ENABLE      BIT_4

    /* Status. */
    T3_32BIT_REGISTER Status;
    #define RCV_LIST_PLMT_STATUS_CLASS0_ATTN                BIT_2
    #define RCV_LIST_PLMT_STATUS_MAPPING_ATTN               BIT_3
    #define RCV_LIST_PLMT_STATUS_STATS_OFLOW_ATTN           BIT_4

    /* Receive selector list lock register. */
    T3_32BIT_REGISTER Lock;
    #define RCV_LIST_SEL_LOCK_REQUEST_MASK                  0xffff
    #define RCV_LIST_SEL_LOCK_GRANT_MASK                    0xffff0000

    /* Selector non-empty bits. */
    T3_32BIT_REGISTER NonEmptyBits;
    #define RCV_LIST_SEL_NON_EMPTY_MASK                     0xffff

    /* Receive list placement configuration register. */
    T3_32BIT_REGISTER Config;

    /* Receive List Placement statistics Control. */
    T3_32BIT_REGISTER StatsCtrl;
#define RCV_LIST_STATS_ENABLE                               BIT_0
#define RCV_LIST_STATS_FAST_UPDATE                          BIT_1

    /* Receive List Placement statistics Enable Mask. */
    T3_32BIT_REGISTER StatsEnableMask;

    /* Receive List Placement statistics Increment Mask. */
    T3_32BIT_REGISTER StatsIncMask;

    /* Unused space. */
    LM_UINT8 Unused1[224];

    struct {
        T3_32BIT_REGISTER Head;
        T3_32BIT_REGISTER Tail;
        T3_32BIT_REGISTER Count;

        /* Unused space. */
        LM_UINT8 Unused[4];
    } RcvSelectorList[16];

    /* Local statistics counter. */
    T3_32BIT_REGISTER ClassOfServCnt[16];

    T3_32BIT_REGISTER DropDueToFilterCnt;
    T3_32BIT_REGISTER DmaWriteQFullCnt;
    T3_32BIT_REGISTER DmaHighPriorityWriteQFullCnt;
    T3_32BIT_REGISTER NoMoreReceiveBdCnt;
    T3_32BIT_REGISTER IfInDiscardsCnt;
    T3_32BIT_REGISTER IfInErrorsCnt;
    T3_32BIT_REGISTER RcvThresholdHitCnt;

    /* Another unused space. */
    LM_UINT8 Unused2[420];
} T3_RCV_LIST_PLACEMENT, *PT3_RCV_LIST_PLACEMENT;



/******************************************************************************/
/* Receive Data and Receive BD Initiator Control. */
/******************************************************************************/

typedef struct {
    /* Mode. */
    T3_32BIT_REGISTER Mode;
    #define RCV_DATA_BD_IN_MODE_RESET                   BIT_0
    #define RCV_DATA_BD_IN_MODE_ENABLE                  BIT_1
    #define RCV_DATA_BD_IN_MODE_JUMBO_BD_NEEDED         BIT_2
    #define RCV_DATA_BD_IN_MODE_FRAME_TOO_BIG           BIT_3
    #define RCV_DATA_BD_IN_MODE_INVALID_RING_SIZE       BIT_4

    /* Status. */
    T3_32BIT_REGISTER Status;
    #define RCV_DATA_BD_IN_STATUS_JUMBO_BD_NEEDED       BIT_2
    #define RCV_DATA_BD_IN_STATUS_FRAME_TOO_BIG         BIT_3
    #define RCV_DATA_BD_IN_STATUS_INVALID_RING_SIZE     BIT_4

    /* Split frame minium size. */
    T3_32BIT_REGISTER SplitFrameMinSize;

    /* Unused space. */
    LM_UINT8 Unused1[0x2440-0x240c];

    /* Receive RCBs. */
    T3_RCB JumboRcvRcb;
    T3_RCB StdRcvRcb;
    T3_RCB MiniRcvRcb;

    /* Receive Data and Receive BD Ring Initiator Local NIC Receive */
    /* BD Consumber Index. */
    T3_32BIT_REGISTER NicJumboConIdx;
    T3_32BIT_REGISTER NicStdConIdx;
    T3_32BIT_REGISTER NicMiniConIdx;

    /* Unused space. */
    LM_UINT8 Unused2[4];

    /* Receive Data and Receive BD Initiator Local Receive Return ProdIdx. */
    T3_32BIT_REGISTER RcvDataBdProdIdx[16];

    /* Receive Data and Receive BD Initiator Hardware Diagnostic. */
    T3_32BIT_REGISTER HwDiag;

    /* Unused space. */
    LM_UINT8 Unused3[828];
} T3_RCV_DATA_BD_INITIATOR, *PT3_RCV_DATA_BD_INITIATOR;



/******************************************************************************/
/* Receive Data Completion Control Registes. */
/******************************************************************************/

typedef struct {
    T3_32BIT_REGISTER Mode;
    #define RCV_DATA_COMP_MODE_RESET                        BIT_0
    #define RCV_DATA_COMP_MODE_ENABLE                       BIT_1
    #define RCV_DATA_COMP_MODE_ATTN_ENABLE                  BIT_2

    /* Unused spaced. */
    LM_UINT8 Unused[1020];
} T3_RCV_DATA_COMPLETION, *PT3_RCV_DATA_COMPLETION;



/******************************************************************************/
/* Receive BD Initiator Control. */
/******************************************************************************/

typedef struct {
    T3_32BIT_REGISTER Mode;
    #define RCV_BD_IN_MODE_RESET                            BIT_0
    #define RCV_BD_IN_MODE_ENABLE                           BIT_1
    #define RCV_BD_IN_MODE_BD_IN_DIABLED_RCB_ATTN_ENABLE    BIT_2

    T3_32BIT_REGISTER Status;
    #define RCV_BD_IN_STATUS_BD_IN_DIABLED_RCB_ATTN         BIT_2

    T3_32BIT_REGISTER NicJumboRcvProdIdx;
    T3_32BIT_REGISTER NicStdRcvProdIdx;
    T3_32BIT_REGISTER NicMiniRcvProdIdx;

    T3_32BIT_REGISTER MiniRcvThreshold;
    T3_32BIT_REGISTER StdRcvThreshold;
    T3_32BIT_REGISTER JumboRcvThreshold;

    /* Unused space. */
    LM_UINT8 Unused[992];
} T3_RCV_BD_INITIATOR, *PT3_RCV_BD_INITIATOR;



/******************************************************************************/
/* Receive BD Completion Control Registers. */
/******************************************************************************/

typedef struct {
    T3_32BIT_REGISTER Mode;
    #define RCV_BD_COMP_MODE_RESET                          BIT_0
    #define RCV_BD_COMP_MODE_ENABLE                         BIT_1
    #define RCV_BD_COMP_MODE_ATTN_ENABLE                    BIT_2

    T3_32BIT_REGISTER Status;
    #define RCV_BD_COMP_STATUS_ERROR_ATTN                   BIT_2

    T3_32BIT_REGISTER  NicJumboRcvBdProdIdx;
    T3_32BIT_REGISTER  NicStdRcvBdProdIdx;
    T3_32BIT_REGISTER  NicMiniRcvBdProdIdx;

    /* Unused space. */
    LM_UINT8 Unused[1004];
} T3_RCV_BD_COMPLETION, *PT3_RCV_BD_COMPLETION;



/******************************************************************************/
/* Receive list selector control register. */
/******************************************************************************/

typedef struct {
    T3_32BIT_REGISTER Mode;
    #define RCV_LIST_SEL_MODE_RESET                         BIT_0
    #define RCV_LIST_SEL_MODE_ENABLE                        BIT_1
    #define RCV_LIST_SEL_MODE_ATTN_ENABLE                   BIT_2

    T3_32BIT_REGISTER Status;
    #define RCV_LIST_SEL_STATUS_ERROR_ATTN                  BIT_2

    /* Unused space. */
    LM_UINT8 Unused[1016];
} T3_RCV_LIST_SELECTOR, *PT3_RCV_LIST_SELECTOR;



/******************************************************************************/
/* Mbuf cluster free registers. */
/******************************************************************************/

typedef struct {
    T3_32BIT_REGISTER Mode;
#define MBUF_CLUSTER_FREE_MODE_RESET    BIT_0
#define MBUF_CLUSTER_FREE_MODE_ENABLE   BIT_1

    T3_32BIT_REGISTER Status;

    /* Unused space. */
    LM_UINT8 Unused[1016];
} T3_MBUF_CLUSTER_FREE, *PT3_MBUF_CLUSTER_FREE;



/******************************************************************************/
/* Host coalescing control registers. */
/******************************************************************************/

typedef struct {
    /* Mode. */
    T3_32BIT_REGISTER Mode;
    #define HOST_COALESCE_RESET                         BIT_0
    #define HOST_COALESCE_ENABLE                        BIT_1
    #define HOST_COALESCE_ATTN                          BIT_2
    #define HOST_COALESCE_NOW                           BIT_3
    #define HOST_COALESCE_FULL_STATUS_MODE              BIT_NONE
    #define HOST_COALESCE_64_BYTE_STATUS_MODE           BIT_7
    #define HOST_COALESCE_32_BYTE_STATUS_MODE           BIT_8
    #define HOST_COALESCE_CLEAR_TICKS_ON_RX_BD_EVENT    BIT_9
    #define HOST_COALESCE_CLEAR_TICKS_ON_TX_BD_EVENT    BIT_10
    #define HOST_COALESCE_NO_INT_ON_COALESCE_NOW_MODE   BIT_11
    #define HOST_COALESCE_NO_INT_ON_FORCE_DMAD_MODE     BIT_12

    /* Status. */
    T3_32BIT_REGISTER Status;
    #define HOST_COALESCE_ERROR_ATTN                    BIT_2

    /* Receive coalescing ticks. */
    T3_32BIT_REGISTER RxCoalescingTicks;

    /* Send coalescing ticks. */
    T3_32BIT_REGISTER TxCoalescingTicks;

    /* Receive max coalesced frames. */
    T3_32BIT_REGISTER RxMaxCoalescedFrames;

    /* Send max coalesced frames. */
    T3_32BIT_REGISTER TxMaxCoalescedFrames;

    /* Receive coalescing ticks during interrupt. */
    T3_32BIT_REGISTER RxCoalescedTickDuringInt;

    /* Send coalescing ticks during interrupt. */
    T3_32BIT_REGISTER TxCoalescedTickDuringInt;

    /* Receive max coalesced frames during interrupt. */
    T3_32BIT_REGISTER RxMaxCoalescedFramesDuringInt;

    /* Send max coalesced frames during interrupt. */
    T3_32BIT_REGISTER TxMaxCoalescedFramesDuringInt;

    /* Statistics tick. */
    T3_32BIT_REGISTER StatsCoalescingTicks;

    /* Unused space. */
    LM_UINT8 Unused2[4];

    /* Statistics host address. */
    T3_64BIT_REGISTER StatsBlkHostAddr;

    /* Status block host address.*/
    T3_64BIT_REGISTER StatusBlkHostAddr;

    /* Statistics NIC address. */
    T3_32BIT_REGISTER StatsBlkNicAddr;

    /* Statust block NIC address. */
    T3_32BIT_REGISTER StatusBlkNicAddr;

    /* Flow attention registers. */
    T3_32BIT_REGISTER FlowAttn;

    /* Unused space. */
    LM_UINT8 Unused3[4];

    T3_32BIT_REGISTER NicJumboRcvBdConIdx;
    T3_32BIT_REGISTER NicStdRcvBdConIdx;
    T3_32BIT_REGISTER NicMiniRcvBdConIdx;

    /* Unused space. */
    LM_UINT8 Unused4[36];

    T3_32BIT_REGISTER NicRetProdIdx[16];
    T3_32BIT_REGISTER NicSndBdConIdx[16];

    /* Unused space. */
    LM_UINT8 Unused5[768];
} T3_HOST_COALESCING, *PT3_HOST_COALESCING;



/******************************************************************************/
/* Memory arbiter registers. */
/******************************************************************************/

typedef struct {
    T3_32BIT_REGISTER Mode;
#define T3_MEM_ARBITER_MODE_RESET       BIT_0
#define T3_MEM_ARBITER_MODE_ENABLE      BIT_1

    T3_32BIT_REGISTER Status;

    T3_32BIT_REGISTER ArbTrapAddrLow;
    T3_32BIT_REGISTER ArbTrapAddrHigh;

    /* Unused space. */
    LM_UINT8 Unused[1008];
} T3_MEM_ARBITER, *PT3_MEM_ARBITER;



/******************************************************************************/
/* Buffer manager control register. */
/******************************************************************************/

typedef struct {
    T3_32BIT_REGISTER Mode;
    #define BUFMGR_MODE_RESET                           BIT_0
    #define BUFMGR_MODE_ENABLE                          BIT_1
    #define BUFMGR_MODE_ATTN_ENABLE                     BIT_2
    #define BUFMGR_MODE_BM_TEST                         BIT_3
    #define BUFMGR_MODE_MBUF_LOW_ATTN_ENABLE            BIT_4

    T3_32BIT_REGISTER Status;
    #define BUFMGR_STATUS_ERROR                         BIT_2
    #define BUFMGR_STATUS_MBUF_LOW                      BIT_4

    T3_32BIT_REGISTER MbufPoolAddr;
    T3_32BIT_REGISTER MbufPoolSize;
    T3_32BIT_REGISTER MbufReadDmaLowWaterMark;
    T3_32BIT_REGISTER MbufMacRxLowWaterMark;
    T3_32BIT_REGISTER MbufHighWaterMark;

    T3_32BIT_REGISTER RxCpuMbufAllocReq;
    #define BUFMGR_MBUF_ALLOC_BIT                     BIT_31
    T3_32BIT_REGISTER RxCpuMbufAllocResp;
    T3_32BIT_REGISTER TxCpuMbufAllocReq;
    T3_32BIT_REGISTER TxCpuMbufAllocResp;

    T3_32BIT_REGISTER DmaDescPoolAddr;
    T3_32BIT_REGISTER DmaDescPoolSize;
    T3_32BIT_REGISTER DmaLowWaterMark;
    T3_32BIT_REGISTER DmaHighWaterMark;

    T3_32BIT_REGISTER RxCpuDmaAllocReq;
    T3_32BIT_REGISTER RxCpuDmaAllocResp;
    T3_32BIT_REGISTER TxCpuDmaAllocReq;
    T3_32BIT_REGISTER TxCpuDmaAllocResp;

    T3_32BIT_REGISTER Hwdiag[3];

    /* Unused space. */
    LM_UINT8 Unused[936];
} T3_BUFFER_MANAGER, *PT3_BUFFER_MANAGER;



/******************************************************************************/
/* Read DMA control registers. */
/******************************************************************************/

typedef struct {
    T3_32BIT_REGISTER Mode;
    #define DMA_READ_MODE_RESET                         BIT_0
    #define DMA_READ_MODE_ENABLE                        BIT_1
    #define DMA_READ_MODE_TARGET_ABORT_ATTN_ENABLE      BIT_2
    #define DMA_READ_MODE_MASTER_ABORT_ATTN_ENABLE      BIT_3
    #define DMA_READ_MODE_PARITY_ERROR_ATTN_ENABLE      BIT_4
    #define DMA_READ_MODE_ADDR_OVERFLOW_ATTN_ENABLE     BIT_5
    #define DMA_READ_MODE_FIFO_OVERRUN_ATTN_ENABLE      BIT_6
    #define DMA_READ_MODE_FIFO_UNDERRUN_ATTN_ENABLE     BIT_7
    #define DMA_READ_MODE_FIFO_OVERREAD_ATTN_ENABLE     BIT_8
    #define DMA_READ_MODE_LONG_READ_ATTN_ENABLE         BIT_9
    #define DMA_READ_MODE_SPLIT_ENABLE                  BIT_11
    #define DMA_READ_MODE_SPLIT_RESET                   BIT_12

    T3_32BIT_REGISTER Status;
    #define DMA_READ_STATUS_TARGET_ABORT_ATTN           BIT_2
    #define DMA_READ_STATUS_MASTER_ABORT_ATTN           BIT_3
    #define DMA_READ_STATUS_PARITY_ERROR_ATTN           BIT_4
    #define DMA_READ_STATUS_ADDR_OVERFLOW_ATTN          BIT_5
    #define DMA_READ_STATUS_FIFO_OVERRUN_ATTN           BIT_6
    #define DMA_READ_STATUS_FIFO_UNDERRUN_ATTN          BIT_7
    #define DMA_READ_STATUS_FIFO_OVERREAD_ATTN          BIT_8
    #define DMA_READ_STATUS_LONG_READ_ATTN              BIT_9

    /* Unused space. */
    LM_UINT8 Unused[1016];
} T3_DMA_READ, *PT3_DMA_READ;

typedef union T3_CPU
{
  struct
  {
    T3_32BIT_REGISTER mode;
    #define CPU_MODE_HALT   BIT_10
    #define CPU_MODE_RESET  BIT_0
    T3_32BIT_REGISTER state;
    T3_32BIT_REGISTER EventMask;
    T3_32BIT_REGISTER reserved1[4];
    T3_32BIT_REGISTER PC;
    T3_32BIT_REGISTER Instruction;
    T3_32BIT_REGISTER SpadUnderflow;
    T3_32BIT_REGISTER WatchdogClear;
    T3_32BIT_REGISTER WatchdogVector;
    T3_32BIT_REGISTER WatchdogSavedPC;
    T3_32BIT_REGISTER HardwareBp;
    T3_32BIT_REGISTER reserved2[3];
    T3_32BIT_REGISTER WatchdogSavedState;
    T3_32BIT_REGISTER LastBrchAddr;
    T3_32BIT_REGISTER SpadUnderflowSet;
    T3_32BIT_REGISTER reserved3[(0x200-0x50)/4];
    T3_32BIT_REGISTER Regs[32];
    T3_32BIT_REGISTER reserved4[(0x400-0x280)/4];
  }reg;
}T3_CPU, *PT3_CPU;

/******************************************************************************/
/* Write DMA control registers. */
/******************************************************************************/

typedef struct {
    T3_32BIT_REGISTER Mode;
    #define DMA_WRITE_MODE_RESET                        BIT_0
    #define DMA_WRITE_MODE_ENABLE                       BIT_1
    #define DMA_WRITE_MODE_TARGET_ABORT_ATTN_ENABLE     BIT_2
    #define DMA_WRITE_MODE_MASTER_ABORT_ATTN_ENABLE     BIT_3
    #define DMA_WRITE_MODE_PARITY_ERROR_ATTN_ENABLE     BIT_4
    #define DMA_WRITE_MODE_ADDR_OVERFLOW_ATTN_ENABLE    BIT_5
    #define DMA_WRITE_MODE_FIFO_OVERRUN_ATTN_ENABLE     BIT_6
    #define DMA_WRITE_MODE_FIFO_UNDERRUN_ATTN_ENABLE    BIT_7
    #define DMA_WRITE_MODE_FIFO_OVERREAD_ATTN_ENABLE    BIT_8
    #define DMA_WRITE_MODE_LONG_READ_ATTN_ENABLE        BIT_9

    T3_32BIT_REGISTER Status;
    #define DMA_WRITE_STATUS_TARGET_ABORT_ATTN          BIT_2
    #define DMA_WRITE_STATUS_MASTER_ABORT_ATTN          BIT_3
    #define DMA_WRITE_STATUS_PARITY_ERROR_ATTN          BIT_4
    #define DMA_WRITE_STATUS_ADDR_OVERFLOW_ATTN         BIT_5
    #define DMA_WRITE_STATUS_FIFO_OVERRUN_ATTN          BIT_6
    #define DMA_WRITE_STATUS_FIFO_UNDERRUN_ATTN         BIT_7
    #define DMA_WRITE_STATUS_FIFO_OVERREAD_ATTN         BIT_8
    #define DMA_WRITE_STATUS_LONG_READ_ATTN             BIT_9

    /* Unused space. */
    LM_UINT8 Unused[1016];
} T3_DMA_WRITE, *PT3_DMA_WRITE;



/******************************************************************************/
/* Mailbox registers. */
/******************************************************************************/

typedef struct {
    /* Interrupt mailbox registers. */
    T3_64BIT_REGISTER Interrupt[4];

    /* General mailbox registers. */
    T3_64BIT_REGISTER General[8];

    /* Reload statistics mailbox. */
    T3_64BIT_REGISTER ReloadStat;

    /* Receive BD ring producer index registers. */
    T3_64BIT_REGISTER RcvStdProdIdx;
    T3_64BIT_REGISTER RcvJumboProdIdx;
    T3_64BIT_REGISTER RcvMiniProdIdx;

    /* Receive return ring consumer index registers. */
    T3_64BIT_REGISTER RcvRetConIdx[16];

    /* Send BD ring host producer index registers. */
    T3_64BIT_REGISTER SendHostProdIdx[16];

    /* Send BD ring nic producer index registers. */
    T3_64BIT_REGISTER SendNicProdIdx[16];
}T3_MAILBOX, *PT3_MAILBOX;

typedef struct {
    T3_MAILBOX Mailbox;

    /* Priority mailbox registers. */
    T3_32BIT_REGISTER HighPriorityEventVector;
    T3_32BIT_REGISTER HighPriorityEventMask;
    T3_32BIT_REGISTER LowPriorityEventVector;
    T3_32BIT_REGISTER LowPriorityEventMask;

    /* Unused space. */
    LM_UINT8 Unused[496];
} T3_GRC_MAILBOX, *PT3_GRC_MAILBOX;


/******************************************************************************/
/* Flow through queues. */
/******************************************************************************/

typedef struct {
    T3_32BIT_REGISTER Reset;

    LM_UINT8 Unused[12];

    T3_32BIT_REGISTER DmaNormalReadFtqCtrl;
    T3_32BIT_REGISTER DmaNormalReadFtqFullCnt;
    T3_32BIT_REGISTER DmaNormalReadFtqFifoEnqueueDequeue;
    T3_32BIT_REGISTER DmaNormalReadFtqFifoWritePeek;

    T3_32BIT_REGISTER DmaHighReadFtqCtrl;
    T3_32BIT_REGISTER DmaHighReadFtqFullCnt;
    T3_32BIT_REGISTER DmaHighReadFtqFifoEnqueueDequeue;
    T3_32BIT_REGISTER DmaHighReadFtqFifoWritePeek;

    T3_32BIT_REGISTER DmaCompDiscardFtqCtrl;
    T3_32BIT_REGISTER DmaCompDiscardFtqFullCnt;
    T3_32BIT_REGISTER DmaCompDiscardFtqFifoEnqueueDequeue;
    T3_32BIT_REGISTER DmaCompDiscardFtqFifoWritePeek;

    T3_32BIT_REGISTER SendBdCompFtqCtrl;
    T3_32BIT_REGISTER SendBdCompFtqFullCnt;
    T3_32BIT_REGISTER SendBdCompFtqFifoEnqueueDequeue;
    T3_32BIT_REGISTER SendBdCompFtqFifoWritePeek;

    T3_32BIT_REGISTER SendDataInitiatorFtqCtrl;
    T3_32BIT_REGISTER SendDataInitiatorFtqFullCnt;
    T3_32BIT_REGISTER SendDataInitiatorFtqFifoEnqueueDequeue;
    T3_32BIT_REGISTER SendDataInitiatorFtqFifoWritePeek;

    T3_32BIT_REGISTER DmaNormalWriteFtqCtrl;
    T3_32BIT_REGISTER DmaNormalWriteFtqFullCnt;
    T3_32BIT_REGISTER DmaNormalWriteFtqFifoEnqueueDequeue;
    T3_32BIT_REGISTER DmaNormalWriteFtqFifoWritePeek;

    T3_32BIT_REGISTER DmaHighWriteFtqCtrl;
    T3_32BIT_REGISTER DmaHighWriteFtqFullCnt;
    T3_32BIT_REGISTER DmaHighWriteFtqFifoEnqueueDequeue;
    T3_32BIT_REGISTER DmaHighWriteFtqFifoWritePeek;

    T3_32BIT_REGISTER SwType1FtqCtrl;
    T3_32BIT_REGISTER SwType1FtqFullCnt;
    T3_32BIT_REGISTER SwType1FtqFifoEnqueueDequeue;
    T3_32BIT_REGISTER SwType1FtqFifoWritePeek;

    T3_32BIT_REGISTER SendDataCompFtqCtrl;
    T3_32BIT_REGISTER SendDataCompFtqFullCnt;
    T3_32BIT_REGISTER SendDataCompFtqFifoEnqueueDequeue;
    T3_32BIT_REGISTER SendDataCompFtqFifoWritePeek;

    T3_32BIT_REGISTER HostCoalesceFtqCtrl;
    T3_32BIT_REGISTER HostCoalesceFtqFullCnt;
    T3_32BIT_REGISTER HostCoalesceFtqFifoEnqueueDequeue;
    T3_32BIT_REGISTER HostCoalesceFtqFifoWritePeek;

    T3_32BIT_REGISTER MacTxFtqCtrl;
    T3_32BIT_REGISTER MacTxFtqFullCnt;
    T3_32BIT_REGISTER MacTxFtqFifoEnqueueDequeue;
    T3_32BIT_REGISTER MacTxFtqFifoWritePeek;

    T3_32BIT_REGISTER MbufClustFreeFtqCtrl;
    T3_32BIT_REGISTER MbufClustFreeFtqFullCnt;
    T3_32BIT_REGISTER MbufClustFreeFtqFifoEnqueueDequeue;
    T3_32BIT_REGISTER MbufClustFreeFtqFifoWritePeek;

    T3_32BIT_REGISTER RcvBdCompFtqCtrl;
    T3_32BIT_REGISTER RcvBdCompFtqFullCnt;
    T3_32BIT_REGISTER RcvBdCompFtqFifoEnqueueDequeue;
    T3_32BIT_REGISTER RcvBdCompFtqFifoWritePeek;

    T3_32BIT_REGISTER RcvListPlmtFtqCtrl;
    T3_32BIT_REGISTER RcvListPlmtFtqFullCnt;
    T3_32BIT_REGISTER RcvListPlmtFtqFifoEnqueueDequeue;
    T3_32BIT_REGISTER RcvListPlmtFtqFifoWritePeek;

    T3_32BIT_REGISTER RcvDataBdInitiatorFtqCtrl;
    T3_32BIT_REGISTER RcvDataBdInitiatorFtqFullCnt;
    T3_32BIT_REGISTER RcvDataBdInitiatorFtqFifoEnqueueDequeue;
    T3_32BIT_REGISTER RcvDataBdInitiatorFtqFifoWritePeek;

    T3_32BIT_REGISTER RcvDataCompFtqCtrl;
    T3_32BIT_REGISTER RcvDataCompFtqFullCnt;
    T3_32BIT_REGISTER RcvDataCompFtqFifoEnqueueDequeue;
    T3_32BIT_REGISTER RcvDataCompFtqFifoWritePeek;

    T3_32BIT_REGISTER SwType2FtqCtrl;
    T3_32BIT_REGISTER SwType2FtqFullCnt;
    T3_32BIT_REGISTER SwType2FtqFifoEnqueueDequeue;
    T3_32BIT_REGISTER SwType2FtqFifoWritePeek;

    /* Unused space. */
    LM_UINT8 Unused2[736];
} T3_FTQ, *PT3_FTQ;



/******************************************************************************/
/* Message signaled interrupt registers. */
/******************************************************************************/

typedef struct {
    T3_32BIT_REGISTER Mode;
#define MSI_MODE_RESET       BIT_0
#define MSI_MODE_ENABLE      BIT_1
    T3_32BIT_REGISTER Status;

    T3_32BIT_REGISTER MsiFifoAccess;

    /* Unused space. */
    LM_UINT8 Unused[1012];
} T3_MSG_SIGNALED_INT, *PT3_MSG_SIGNALED_INT;



/******************************************************************************/
/* DMA Completion registes. */
/******************************************************************************/

typedef struct {
    T3_32BIT_REGISTER Mode;
    #define DMA_COMP_MODE_RESET                         BIT_0
    #define DMA_COMP_MODE_ENABLE                        BIT_1

    /* Unused space. */
    LM_UINT8 Unused[1020];
} T3_DMA_COMPLETION, *PT3_DMA_COMPLETION;



/******************************************************************************/
/* GRC registers. */
/******************************************************************************/

typedef struct {
    /* Mode control register. */
    T3_32BIT_REGISTER Mode;
    #define GRC_MODE_UPDATE_ON_COALESCING               BIT_0
    #define GRC_MODE_BYTE_SWAP_NON_FRAME_DATA           BIT_1
    #define GRC_MODE_WORD_SWAP_NON_FRAME_DATA           BIT_2
    #define GRC_MODE_BYTE_SWAP_DATA                     BIT_4
    #define GRC_MODE_WORD_SWAP_DATA                     BIT_5
    #define GRC_MODE_SPLIT_HEADER_MODE                  BIT_8
    #define GRC_MODE_NO_FRAME_CRACKING                  BIT_9
    #define GRC_MODE_INCLUDE_CRC                        BIT_10
    #define GRC_MODE_ALLOW_BAD_FRAMES                   BIT_11
    #define GRC_MODE_NO_INTERRUPT_ON_SENDS              BIT_13
    #define GRC_MODE_NO_INTERRUPT_ON_RECEIVE            BIT_14
    #define GRC_MODE_FORCE_32BIT_PCI_BUS_MODE           BIT_15
    #define GRC_MODE_HOST_STACK_UP                      BIT_16
    #define GRC_MODE_HOST_SEND_BDS                      BIT_17
    #define GRC_MODE_TX_NO_PSEUDO_HEADER_CHKSUM         BIT_20
    #define GRC_MODE_RX_NO_PSEUDO_HEADER_CHKSUM         BIT_23
    #define GRC_MODE_INT_ON_TX_CPU_ATTN                 BIT_24
    #define GRC_MODE_INT_ON_RX_CPU_ATTN                 BIT_25
    #define GRC_MODE_INT_ON_MAC_ATTN                    BIT_26
    #define GRC_MODE_INT_ON_DMA_ATTN                    BIT_27
    #define GRC_MODE_INT_ON_FLOW_ATTN                   BIT_28
    #define GRC_MODE_4X_NIC_BASED_SEND_RINGS            BIT_29
    #define GRC_MODE_MULTICAST_FRAME_ENABLE             BIT_30

    /* Misc configuration register. */
    T3_32BIT_REGISTER MiscCfg;
    #define GRC_MISC_CFG_CORE_CLOCK_RESET               BIT_0
    #define GRC_MISC_PRESCALAR_TIMER_MASK               0xfe
    #define GRC_MISC_BD_ID_MASK                         0x0001e000
    #define GRC_MISC_BD_ID_5700                         0x0001e000
    #define GRC_MISC_BD_ID_5701                         0x00000000
    #define GRC_MISC_BD_ID_5703                         0x00000000
    #define GRC_MISC_BD_ID_5703S                        0x00002000
    #define GRC_MISC_BD_ID_5702FE                       0x00004000
    #define GRC_MISC_BD_ID_5704                         0x00000000
    #define GRC_MISC_BD_ID_5704CIOBE                    0x00004000

    /* Miscellaneous local control register. */
    T3_32BIT_REGISTER LocalCtrl;
    #define GRC_MISC_LOCAL_CTRL_INT_ACTIVE              BIT_0
    #define GRC_MISC_LOCAL_CTRL_CLEAR_INT               BIT_1
    #define GRC_MISC_LOCAL_CTRL_SET_INT                 BIT_2
    #define GRC_MISC_LOCAL_CTRL_INT_ON_ATTN             BIT_3
    #define GRC_MISC_LOCAL_CTRL_GPIO_INPUT0             BIT_8
    #define GRC_MISC_LOCAL_CTRL_GPIO_INPUT1             BIT_9
    #define GRC_MISC_LOCAL_CTRL_GPIO_INPUT2             BIT_10
    #define GRC_MISC_LOCAL_CTRL_GPIO_OE0                BIT_11
    #define GRC_MISC_LOCAL_CTRL_GPIO_OE1                BIT_12
    #define GRC_MISC_LOCAL_CTRL_GPIO_OE2                BIT_13
    #define GRC_MISC_LOCAL_CTRL_GPIO_OUTPUT0            BIT_14
    #define GRC_MISC_LOCAL_CTRL_GPIO_OUTPUT1            BIT_15
    #define GRC_MISC_LOCAL_CTRL_GPIO_OUTPUT2            BIT_16
    #define GRC_MISC_LOCAL_CTRL_ENABLE_EXT_MEMORY       BIT_17
    #define GRC_MISC_LOCAL_CTRL_BANK_SELECT             BIT_21
    #define GRC_MISC_LOCAL_CTRL_SSRAM_TYPE              BIT_22

    #define GRC_MISC_MEMSIZE_256K     0
    #define GRC_MISC_MEMSIZE_512K     (1 << 18)
    #define GRC_MISC_MEMSIZE_1024K    (2 << 18)
    #define GRC_MISC_MEMSIZE_2048K    (3 << 18)
    #define GRC_MISC_MEMSIZE_4096K    (4 << 18)
    #define GRC_MISC_MEMSIZE_8192K    (5 << 18)
    #define GRC_MISC_MEMSIZE_16M      (6 << 18)
    #define GRC_MISC_LOCAL_CTRL_AUTO_SEEPROM            BIT_24


    T3_32BIT_REGISTER Timer;

    T3_32BIT_REGISTER RxCpuEvent;
    T3_32BIT_REGISTER RxTimerRef;
    T3_32BIT_REGISTER RxCpuSemaphore;
    T3_32BIT_REGISTER RemoteRxCpuAttn;

    T3_32BIT_REGISTER TxCpuEvent;
    T3_32BIT_REGISTER TxTimerRef;
    T3_32BIT_REGISTER TxCpuSemaphore;
    T3_32BIT_REGISTER RemoteTxCpuAttn;

    T3_64BIT_REGISTER MemoryPowerUp;

    T3_32BIT_REGISTER EepromAddr;
    #define SEEPROM_ADDR_WRITE       0
    #define SEEPROM_ADDR_READ        (1 << 31)
    #define SEEPROM_ADDR_RW_MASK     0x80000000
    #define SEEPROM_ADDR_COMPLETE    (1 << 30)
    #define SEEPROM_ADDR_FSM_RESET   (1 << 29)
    #define SEEPROM_ADDR_DEV_ID(x)   (x << 26)
    #define SEEPROM_ADDR_DEV_ID_MASK 0x1c000000
    #define SEEPROM_ADDR_START       (1 << 25)
    #define SEEPROM_ADDR_CLK_PERD(x) (x << 16)
    #define SEEPROM_ADDR_ADDRESS(x)  (x & 0xfffc)
    #define SEEPROM_ADDR_ADDRESS_MASK 0x0000ffff

    #define SEEPROM_CLOCK_PERIOD        60
    #define SEEPROM_CHIP_SIZE           (64 * 1024)

    T3_32BIT_REGISTER EepromData;
    T3_32BIT_REGISTER EepromCtrl;

    T3_32BIT_REGISTER MdiCtrl;
    T3_32BIT_REGISTER SepromDelay;

    /* Unused space. */
    LM_UINT8 Unused[948];
} T3_GRC, *PT3_GRC;


/******************************************************************************/
/* NVRAM control registers. */
/******************************************************************************/

typedef struct
{
    T3_32BIT_REGISTER Cmd;
    #define NVRAM_CMD_RESET                             BIT_0
    #define NVRAM_CMD_DONE                              BIT_3
    #define NVRAM_CMD_DO_IT                             BIT_4
    #define NVRAM_CMD_WR                                BIT_5
    #define NVRAM_CMD_RD                                BIT_NONE
    #define NVRAM_CMD_ERASE                             BIT_6
    #define NVRAM_CMD_FIRST                             BIT_7
    #define NVRAM_CMD_LAST                              BIT_8

    T3_32BIT_REGISTER Status;
    T3_32BIT_REGISTER WriteData;

    T3_32BIT_REGISTER Addr;
    #define NVRAM_ADDRESS_MASK                          0xffffff

    T3_32BIT_REGISTER ReadData;

    /* Flash config 1 register. */
    T3_32BIT_REGISTER Config1;
    #define FLASH_INTERFACE_ENABLE                      BIT_0
    #define FLASH_SSRAM_BUFFERRED_MODE                  BIT_1
    #define FLASH_PASS_THRU_MODE                        BIT_2
    #define FLASH_BIT_BANG_MODE                         BIT_3
    #define FLASH_COMPAT_BYPASS                         BIT_31

    /* Buffered flash (Atmel: AT45DB011B) specific information */
    #define BUFFERED_FLASH_PAGE_POS         9
    #define BUFFERED_FLASH_BYTE_ADDR_MASK   ((1<<BUFFERED_FLASH_PAGE_POS) - 1)
    #define BUFFERED_FLASH_PAGE_SIZE        264
    #define BUFFERED_FLASH_PHY_PAGE_SIZE    512

    T3_32BIT_REGISTER Config2;
    T3_32BIT_REGISTER Config3;
    T3_32BIT_REGISTER SwArb;
    #define SW_ARB_REQ_SET0                             BIT_0
    #define SW_ARB_REQ_SET1                             BIT_1
    #define SW_ARB_REQ_SET2                             BIT_2
    #define SW_ARB_REQ_SET3                             BIT_3
    #define SW_ARB_REQ_CLR0                             BIT_4
    #define SW_ARB_REQ_CLR1                             BIT_5
    #define SW_ARB_REQ_CLR2                             BIT_6
    #define SW_ARB_REQ_CLR3                             BIT_7
    #define SW_ARB_GNT0                                 BIT_8
    #define SW_ARB_GNT1                                 BIT_9
    #define SW_ARB_GNT2                                 BIT_10
    #define SW_ARB_GNT3                                 BIT_11
    #define SW_ARB_REQ0                                 BIT_12
    #define SW_ARB_REQ1                                 BIT_13
    #define SW_ARB_REQ2                                 BIT_14
    #define SW_ARB_REQ3                                 BIT_15

    /* Unused space. */
    LM_UINT8 Unused[988];
} T3_NVRAM, *PT3_NVRAM;


/******************************************************************************/
/* NIC's internal memory. */
/******************************************************************************/

typedef struct {
    /* Page zero for the internal CPUs. */
    LM_UINT8 PageZero[0x100];               /* 0x0000 */

    /* Send RCBs. */
    T3_RCB SendRcb[16];                     /* 0x0100 */

    /* Receive Return RCBs. */
    T3_RCB RcvRetRcb[16];                   /* 0x0200 */

    /* Statistics block. */
    T3_STATS_BLOCK StatsBlk;                /* 0x0300 */

    /* Status block. */
    T3_STATUS_BLOCK StatusBlk;              /* 0x0b00 */

    /* Reserved for software. */
    LM_UINT8 Reserved[1200];                /* 0x0b50 */

    /* Unmapped region. */
    LM_UINT8 Unmapped[4096];                /* 0x1000 */

    /* DMA descriptors. */
    LM_UINT8 DmaDesc[8192];                 /* 0x2000 */

    /* Buffer descriptors. */
    LM_UINT8 BufferDesc[16384];             /* 0x4000 */
} T3_FIRST_32K_SRAM, *PT3_FIRST_32K_SRAM;



/******************************************************************************/
/* Memory layout. */
/******************************************************************************/

typedef struct {
    /* PCI configuration registers. */
    T3_PCI_CONFIGURATION PciCfg;

    /* Unused. */
    LM_UINT8 Unused1[0x100];                            /* 0x0100 */

    /* Mailbox . */
    T3_MAILBOX Mailbox;                                 /* 0x0200 */

    /* MAC control registers. */
    T3_MAC_CONTROL MacCtrl;                             /* 0x0400 */

    /* Send data initiator control registers. */
    T3_SEND_DATA_INITIATOR SndDataIn;                   /* 0x0c00 */

    /* Send data completion Control registers. */
    T3_SEND_DATA_COMPLETION SndDataComp;                /* 0x1000 */

    /* Send BD ring selector. */
    T3_SEND_BD_SELECTOR SndBdSel;                       /* 0x1400 */

    /* Send BD initiator control registers. */
    T3_SEND_BD_INITIATOR SndBdIn;                       /* 0x1800 */

    /* Send BD completion control registers. */
    T3_SEND_BD_COMPLETION SndBdComp;                    /* 0x1c00 */

    /* Receive list placement control registers. */
    T3_RCV_LIST_PLACEMENT RcvListPlmt;                  /* 0x2000 */

    /* Receive Data and Receive BD Initiator Control. */
    T3_RCV_DATA_BD_INITIATOR RcvDataBdIn;               /* 0x2400 */

    /* Receive Data Completion Control */
    T3_RCV_DATA_COMPLETION RcvDataComp;                 /* 0x2800 */

    /* Receive BD Initiator Control Registers. */
    T3_RCV_BD_INITIATOR RcvBdIn;                        /* 0x2c00 */

    /* Receive BD Completion Control Registers. */
    T3_RCV_BD_COMPLETION RcvBdComp;                     /* 0x3000 */

    /* Receive list selector control registers. */
    T3_RCV_LIST_SELECTOR RcvListSel;                    /* 0x3400 */

    /* Mbuf cluster free registers. */
    T3_MBUF_CLUSTER_FREE MbufClusterFree;               /* 0x3800 */

    /* Host coalescing control registers. */
    T3_HOST_COALESCING HostCoalesce;                    /* 0x3c00 */

    /* Memory arbiter control registers. */
    T3_MEM_ARBITER MemArbiter;                          /* 0x4000 */

    /* Buffer manger control registers. */
    T3_BUFFER_MANAGER BufMgr;                           /* 0x4400 */

    /* Read DMA control registers. */
    T3_DMA_READ DmaRead;                                /* 0x4800 */

    /* Write DMA control registers. */
    T3_DMA_WRITE DmaWrite;                              /* 0x4c00 */

    T3_CPU rxCpu;                                       /* 0x5000 */
    T3_CPU txCpu;                                       /* 0x5400 */

    /* Mailboxes. */
    T3_GRC_MAILBOX GrcMailbox;                          /* 0x5800 */

    /* Flow Through queues. */
    T3_FTQ Ftq;                                         /* 0x5c00 */

    /* Message signaled interrupt registes. */
    T3_MSG_SIGNALED_INT Msi;                            /* 0x6000 */

    /* DMA completion registers. */
    T3_DMA_COMPLETION DmaComp;                          /* 0x6400 */

    /* GRC registers. */
    T3_GRC Grc;                                         /* 0x6800 */

    /* Unused space. */
    LM_UINT8 Unused2[1024];                             /* 0x6c00 */

    /* NVRAM registers. */
    T3_NVRAM Nvram;                                     /* 0x7000 */

    /* Unused space. */
    LM_UINT8 Unused3[3072];                             /* 0x7400 */

    /* The 32k memory window into the NIC's */
    /* internal memory.  The memory window is */
    /* controlled by the Memory Window Base */
    /* Address register.  This register is located */
    /* in the PCI configuration space. */
    union {                                             /* 0x8000 */
        T3_FIRST_32K_SRAM First32k;

        /* Use the memory window base address register to determine the */
        /* MBUF segment. */
        LM_UINT32 Mbuf[32768/4];
        LM_UINT32 MemBlock32K[32768/4];
    } uIntMem;
} T3_STD_MEM_MAP, *PT3_STD_MEM_MAP;


/******************************************************************************/
/* Adapter info. */
/******************************************************************************/

typedef struct
{
    LM_UINT16 Svid;
    LM_UINT16 Ssid;
    LM_UINT32 PhyId;
    LM_UINT32 Serdes;   /* 0 = copper PHY, 1 = Serdes */
} LM_ADAPTER_INFO, *PLM_ADAPTER_INFO;


/******************************************************************************/
/* Packet queues. */
/******************************************************************************/

DECLARE_QUEUE_TYPE(LM_RX_PACKET_Q, MAX_RX_PACKET_DESC_COUNT);
DECLARE_QUEUE_TYPE(LM_TX_PACKET_Q, MAX_TX_PACKET_DESC_COUNT);



/******************************************************************************/
/* Tx counters. */
/******************************************************************************/

typedef struct {
    LM_COUNTER TxPacketGoodCnt;
    LM_COUNTER TxBytesGoodCnt;
    LM_COUNTER TxPacketAbortedCnt;
    LM_COUNTER NoSendBdLeftCnt;
    LM_COUNTER NoMapRegisterLeftCnt;
    LM_COUNTER TooManyFragmentsCnt;
    LM_COUNTER NoTxPacketDescCnt;
} LM_TX_COUNTERS, *PLM_TX_COUNTERS;



/******************************************************************************/
/* Rx counters. */
/******************************************************************************/

typedef struct {
    LM_COUNTER RxPacketGoodCnt;
    LM_COUNTER RxBytesGoodCnt;
    LM_COUNTER RxPacketErrCnt;
    LM_COUNTER RxErrCrcCnt;
    LM_COUNTER RxErrCollCnt;
    LM_COUNTER RxErrLinkLostCnt;
    LM_COUNTER RxErrPhyDecodeCnt;
    LM_COUNTER RxErrOddNibbleCnt;
    LM_COUNTER RxErrMacAbortCnt;
    LM_COUNTER RxErrShortPacketCnt;
    LM_COUNTER RxErrNoResourceCnt;
    LM_COUNTER RxErrLargePacketCnt;
} LM_RX_COUNTERS, *PLM_RX_COUNTERS;



/******************************************************************************/
/* Receive producer rings. */
/******************************************************************************/

typedef enum {
    T3_UNKNOWN_RCV_PROD_RING    = 0,
    T3_STD_RCV_PROD_RING        = 1,
    T3_MINI_RCV_PROD_RING       = 2,
    T3_JUMBO_RCV_PROD_RING      = 3
} T3_RCV_PROD_RING, *PT3_RCV_PROD_RING;



/******************************************************************************/
/* Packet descriptor. */
/******************************************************************************/

#define LM_PACKET_SIGNATURE_TX              0x6861766b
#define LM_PACKET_SIGNATURE_RX              0x6b766168

typedef struct _LM_PACKET {
    /* Set in LM. */
    LM_STATUS PacketStatus;

    /* Set in LM for Rx, in UM for Tx. */
    LM_UINT32 PacketSize;

    LM_UINT16 Flags;

    LM_UINT16 VlanTag;

    union {
        /* Send info. */
        struct {
            /* Set up by UM. */
            LM_UINT32 FragCount;

        } Tx;

        /* Receive info. */
        struct {
            /* This descriptor belongs to either Std, Mini, or Jumbo ring. */
            T3_RCV_PROD_RING RcvProdRing;

            /* Receive buffer size */
            LM_UINT32 RxBufferSize;

            /* Checksum information. */
            LM_UINT16 IpChecksum;
            LM_UINT16 TcpUdpChecksum;

        } Rx;
    } u;
} LM_PACKET;



/******************************************************************************/
/* Tigon3 device block. */
/******************************************************************************/

typedef struct _LM_DEVICE_BLOCK {
    int index; /* Device ID */
    /* Memory view. */
    PT3_STD_MEM_MAP pMemView;

    /* Base address of the block of memory in which the LM_PACKET descriptors */
    /* are allocated from. */
    PLM_VOID pPacketDescBase;

    LM_UINT32 MiscHostCtrl;
    LM_UINT32 GrcLocalCtrl;
    LM_UINT32 DmaReadWriteCtrl;
    LM_UINT32 PciState;

    /* Rx info */
    LM_UINT32 RxStdDescCnt;
    LM_UINT32 RxStdQueuedCnt;
    LM_UINT32 RxStdProdIdx;

    PT3_RCV_BD pRxStdBdVirt;
    LM_PHYSICAL_ADDRESS RxStdBdPhy;

    LM_UINT32 RxPacketDescCnt;
    LM_RX_PACKET_Q RxPacketFreeQ;
    LM_RX_PACKET_Q RxPacketReceivedQ;

    /* Receive info. */
    PT3_RCV_BD pRcvRetBdVirt;
    LM_PHYSICAL_ADDRESS RcvRetBdPhy;
    LM_UINT32 RcvRetConIdx;

#if T3_JUMBO_RCV_RCB_ENTRY_COUNT
    LM_UINT32 RxJumboDescCnt;
    LM_UINT32 RxJumboBufferSize;
    LM_UINT32 RxJumboQueuedCnt;

    LM_UINT32 RxJumboProdIdx;

    PT3_RCV_BD pRxJumboBdVirt;
    LM_PHYSICAL_ADDRESS RxJumboBdPhy;
#endif /* T3_JUMBO_RCV_RCB_ENTRY_COUNT */

    /* These values are used by the upper module to inform the protocol */
    /* of the maximum transmit/receive packet size. */
    LM_UINT32 TxMtu;    /* Does not include CRC. */
    LM_UINT32 RxMtu;    /* Does not include CRC. */

    /* We need to shadow the EMAC, Rx, Tx mode registers.  With B0 silicon, */
    /* we may have problems reading any MAC registers in 10mb mode. */
    LM_UINT32 MacMode;
    LM_UINT32 RxMode;
    LM_UINT32 TxMode;

    /* MiMode register. */
    LM_UINT32 MiMode;

    /* Host coalesce mode register. */
    LM_UINT32 CoalesceMode;

    /* Send info. */
    LM_UINT32 TxPacketDescCnt;

    /* Tx info. */
    LM_TX_PACKET_Q TxPacketFreeQ;
    LM_TX_PACKET_Q TxPacketActiveQ;
    LM_TX_PACKET_Q TxPacketXmittedQ;

    /* Pointers to SendBd. */
    PT3_SND_BD pSendBdVirt;
    LM_PHYSICAL_ADDRESS SendBdPhy;  /* Only valid for Host based Send BD. */

    /* Send producer and consumer indices. */
    LM_UINT32 SendProdIdx;
    LM_UINT32 SendConIdx;

    /* Number of BD left. */
    atomic_t SendBdLeft;

    T3_SND_BD ShadowSendBd[T3_SEND_RCB_ENTRY_COUNT];

    /* Counters. */
    LM_RX_COUNTERS RxCounters;
    LM_TX_COUNTERS TxCounters;

    /* Host coalescing parameters. */
    LM_UINT32 RxCoalescingTicks;
    LM_UINT32 TxCoalescingTicks;
    LM_UINT32 RxMaxCoalescedFrames;
    LM_UINT32 TxMaxCoalescedFrames;
    LM_UINT32 StatsCoalescingTicks;
    LM_UINT32 RxCoalescingTicksDuringInt;
    LM_UINT32 TxCoalescingTicksDuringInt;
    LM_UINT32 RxMaxCoalescedFramesDuringInt;
    LM_UINT32 TxMaxCoalescedFramesDuringInt;

    /* DMA water marks. */
    LM_UINT32 DmaMbufLowMark;
    LM_UINT32 RxMacMbufLowMark;
    LM_UINT32 MbufHighMark;

    /* Status block. */
    PT3_STATUS_BLOCK pStatusBlkVirt;
    LM_PHYSICAL_ADDRESS StatusBlkPhy;

    /* Statistics block. */
    PT3_STATS_BLOCK pStatsBlkVirt;
    LM_PHYSICAL_ADDRESS StatsBlkPhy;

    /* Current receive mask. */
    LM_UINT32 ReceiveMask;

    /* Task offload capabilities. */
    LM_TASK_OFFLOAD TaskOffloadCap;

    /* Task offload selected. */
    LM_TASK_OFFLOAD TaskToOffload;

    /* Wake up capability. */
    LM_WAKE_UP_MODE WakeUpModeCap;

    /* Wake up capability. */
    LM_WAKE_UP_MODE WakeUpMode;

    /* Flow control. */
    LM_FLOW_CONTROL FlowControlCap;
    LM_FLOW_CONTROL FlowControl;

    /* Enable or disable PCI MWI. */
    LM_UINT32 EnableMWI;

    /* Enable 5701 tagged status mode. */
    LM_UINT32 UseTaggedStatus;

    /* NIC will not compute the pseudo header checksum.  The driver or OS */
    /* must seed the checksum field with the pseudo checksum. */
    LM_UINT32 NoTxPseudoHdrChksum;

    /* The receive checksum in the BD does not include the pseudo checksum. */
    /* The OS or the driver must calculate the pseudo checksum and add it to */
    /* the checksum in the BD. */
    LM_UINT32 NoRxPseudoHdrChksum;

    /* Current node address. */
    LM_UINT8 NodeAddress[8];

    /* The adapter's node address. */
    LM_UINT8 PermanentNodeAddress[8];

    /* Adapter info. */
    LM_UINT16 BusNum;
    LM_UINT8 DevNum;
    LM_UINT8 FunctNum;
    LM_UINT16 PciVendorId;
    LM_UINT16 PciDeviceId;
    LM_UINT32 BondId;
    LM_UINT8 Irq;
    LM_UINT8 IntPin;
    LM_UINT8 CacheLineSize;
    LM_UINT8 PciRevId;
#if PCIX_TARGET_WORKAROUND
	LM_UINT32 EnablePciXFix;
#endif
    LM_UINT32 UndiFix;   /* new, jimmy */
    LM_UINT32 PciCommandStatusWords;
    LM_UINT32 ChipRevId;
    LM_UINT16 SubsystemVendorId;
    LM_UINT16 SubsystemId;
#if 0  /* Jimmy, deleted in new driver */
    LM_UINT32 MemBaseLow;
    LM_UINT32 MemBaseHigh;
    LM_UINT32 MemBaseSize;
#endif
    PLM_UINT8 pMappedMemBase;

    /* Saved PCI configuration registers for restoring after a reset. */
    LM_UINT32 SavedCacheLineReg;

    /* Phy info. */
    LM_UINT32 PhyAddr;
    LM_UINT32 PhyId;

    /* Requested phy settings. */
    LM_REQUESTED_MEDIA_TYPE RequestedMediaType;

    /* Disable auto-negotiation. */
    LM_UINT32 DisableAutoNeg;

    /* Ways for the MAC to get link change interrupt. */
    LM_UINT32 PhyIntMode;
    #define T3_PHY_INT_MODE_AUTO                        0
    #define T3_PHY_INT_MODE_MI_INTERRUPT                1
    #define T3_PHY_INT_MODE_LINK_READY                  2
    #define T3_PHY_INT_MODE_AUTO_POLLING                3

    /* Ways to determine link change status. */
    LM_UINT32 LinkChngMode;
    #define T3_LINK_CHNG_MODE_AUTO                      0
    #define T3_LINK_CHNG_MODE_USE_STATUS_REG            1
    #define T3_LINK_CHNG_MODE_USE_STATUS_BLOCK          2


    /* LED mode. */
    LM_UINT32 LedMode;

    #define LED_MODE_AUTO                               0

    /* 5700/01 LED mode. */
    #define LED_MODE_THREE_LINK                         1
    #define LED_MODE_LINK10                             2

    /* 5703/02/04 LED mode. */
    #define LED_MODE_OPEN_DRAIN                         1
    #define LED_MODE_OUTPUT                             2

    /* WOL Speed */
    LM_UINT32 WolSpeed;
    #define WOL_SPEED_10MB                              1
    #define WOL_SPEED_100MB                             2

    /* Reset the PHY on initialization. */
    LM_UINT32 ResetPhyOnInit;

    LM_UINT32 RestoreOnWakeUp;
    LM_REQUESTED_MEDIA_TYPE WakeUpRequestedMediaType;
    LM_UINT32 WakeUpDisableAutoNeg;

    /* Current phy settings. */
    LM_MEDIA_TYPE MediaType;
    LM_LINE_SPEED LineSpeed;
    LM_LINE_SPEED OldLineSpeed;
    LM_DUPLEX_MODE DuplexMode;
    LM_STATUS LinkStatus;
    LM_UINT32 advertising;     /* Jimmy, new! */
    LM_UINT32 advertising1000; /* Jimmy, new! */

    /* Multicast address list. */
    LM_UINT32 McEntryCount;
    LM_UINT8 McTable[LM_MAX_MC_TABLE_SIZE][LM_MC_ENTRY_SIZE];

    /* Use NIC or Host based send BD. */
    LM_UINT32 NicSendBd;

    /* Athlon fix. */
    LM_UINT32 DelayPciGrant;

    /* Enable OneDmaAtOnce */
    LM_UINT32 OneDmaAtOnce;

    /* Split Mode flags, Jimmy new */
    LM_UINT32 SplitModeEnable;
    LM_UINT32 SplitModeMaxReq;

    /* Init flag. */
    LM_BOOL InitDone;

    /* Shutdown flag.  Set by the upper module. */
    LM_BOOL ShuttingDown;

    /* Flag to determine whether to call LM_QueueRxPackets or not in */
    /* LM_ResetAdapter routine. */
    LM_BOOL QueueRxPackets;

    LM_UINT32 MbufBase;
    LM_UINT32 MbufSize;

    /* TRUE if we have a SERDES PHY. */
    LM_UINT32 EnableTbi;

    /* Ethernet@WireSpeed. */
    LM_UINT32 EnableWireSpeed;

    LM_UINT32 EepromWp;

#if INCLUDE_TBI_SUPPORT
    /* Autoneg state info. */
    AN_STATE_INFO AnInfo;
    LM_UINT32 PollTbiLink;
    LM_UINT32 IgnoreTbiLinkChange;
#endif
    char PartNo[24];
    char BootCodeVer[16];
    char BusSpeedStr[24]; /* Jimmy, new! */
    LM_UINT32 PhyCrcCount;
} LM_DEVICE_BLOCK;


#define T3_REG_CPU_VIEW               0xc0000000

#define T3_BLOCK_DMA_RD               (1 << 0)
#define T3_BLOCK_DMA_COMP             (1 << 1)
#define T3_BLOCK_RX_BD_INITIATOR      (1 << 2)
#define T3_BLOCK_RX_BD_COMP           (1 << 3)
#define T3_BLOCK_DMA_WR               (1 << 4)
#define T3_BLOCK_MSI_HANDLER          (1 << 5)
#define T3_BLOCK_RX_LIST_PLMT         (1 << 6)
#define T3_BLOCK_RX_LIST_SELECTOR     (1 << 7)
#define T3_BLOCK_RX_DATA_INITIATOR    (1 << 8)
#define T3_BLOCK_RX_DATA_COMP         (1 << 9)
#define T3_BLOCK_HOST_COALESING       (1 << 10)
#define T3_BLOCK_MAC_RX_ENGINE        (1 << 11)
#define T3_BLOCK_MBUF_CLUSTER_FREE    (1 << 12)
#define T3_BLOCK_SEND_BD_INITIATOR    (1 << 13)
#define T3_BLOCK_SEND_BD_COMP         (1 << 14)
#define T3_BLOCK_SEND_BD_SELECTOR     (1 << 15)
#define T3_BLOCK_SEND_DATA_INITIATOR  (1 << 16)
#define T3_BLOCK_SEND_DATA_COMP       (1 << 17)
#define T3_BLOCK_MAC_TX_ENGINE        (1 << 18)
#define T3_BLOCK_MEM_ARBITOR          (1 << 19)
#define T3_BLOCK_MBUF_MANAGER         (1 << 20)
#define T3_BLOCK_MAC_GLOBAL           (1 << 21)

#define LM_ENABLE               1
#define LM_DISABLE              2

#define RX_CPU_EVT_SW0              0
#define RX_CPU_EVT_SW1              1
#define RX_CPU_EVT_RLP              2
#define RX_CPU_EVT_SW3              3
#define RX_CPU_EVT_RLS              4
#define RX_CPU_EVT_SW4              5
#define RX_CPU_EVT_RX_BD_COMP       6
#define RX_CPU_EVT_SW5              7
#define RX_CPU_EVT_RDI              8
#define RX_CPU_EVT_DMA_WR           9
#define RX_CPU_EVT_DMA_RD           10
#define RX_CPU_EVT_SWQ              11
#define RX_CPU_EVT_SW6              12
#define RX_CPU_EVT_RDC              13
#define RX_CPU_EVT_SW7              14
#define RX_CPU_EVT_HOST_COALES      15
#define RX_CPU_EVT_SW8              16
#define RX_CPU_EVT_HIGH_DMA_WR      17
#define RX_CPU_EVT_HIGH_DMA_RD      18
#define RX_CPU_EVT_SW9              19
#define RX_CPU_EVT_DMA_ATTN         20
#define RX_CPU_EVT_LOW_P_MBOX       21
#define RX_CPU_EVT_HIGH_P_MBOX      22
#define RX_CPU_EVT_SW10             23
#define RX_CPU_EVT_TX_CPU_ATTN      24
#define RX_CPU_EVT_MAC_ATTN         25
#define RX_CPU_EVT_RX_CPU_ATTN      26
#define RX_CPU_EVT_FLOW_ATTN        27
#define RX_CPU_EVT_SW11             28
#define RX_CPU_EVT_TIMER            29
#define RX_CPU_EVT_SW12             30
#define RX_CPU_EVT_SW13             31

/* RX-CPU event */
#define RX_CPU_EVENT_SW_EVENT0      (1 << RX_CPU_EVT_SW0)
#define RX_CPU_EVENT_SW_EVENT1      (1 << RX_CPU_EVT_SW1)
#define RX_CPU_EVENT_RLP            (1 << RX_CPU_EVT_RLP)
#define RX_CPU_EVENT_SW_EVENT3      (1 << RX_CPU_EVT_SW3)
#define RX_CPU_EVENT_RLS            (1 << RX_CPU_EVT_RLS)
#define RX_CPU_EVENT_SW_EVENT4      (1 << RX_CPU_EVT_SW4)
#define RX_CPU_EVENT_RX_BD_COMP     (1 << RX_CPU_EVT_RX_BD_COMP)
#define RX_CPU_EVENT_SW_EVENT5      (1 << RX_CPU_EVT_SW5)
#define RX_CPU_EVENT_RDI            (1 << RX_CPU_EVT_RDI)
#define RX_CPU_EVENT_DMA_WR         (1 << RX_CPU_EVT_DMA_WR)
#define RX_CPU_EVENT_DMA_RD         (1 << RX_CPU_EVT_DMA_RD)
#define RX_CPU_EVENT_SWQ            (1 << RX_CPU_EVT_SWQ)
#define RX_CPU_EVENT_SW_EVENT6      (1 << RX_CPU_EVT_SW6)
#define RX_CPU_EVENT_RDC            (1 << RX_CPU_EVT_RDC)
#define RX_CPU_EVENT_SW_EVENT7      (1 << RX_CPU_EVT_SW7)
#define RX_CPU_EVENT_HOST_COALES    (1 << RX_CPU_EVT_HOST_COALES)
#define RX_CPU_EVENT_SW_EVENT8      (1 << RX_CPU_EVT_SW8)
#define RX_CPU_EVENT_HIGH_DMA_WR    (1 << RX_CPU_EVT_HIGH_DMA_WR)
#define RX_CPU_EVENT_HIGH_DMA_RD    (1 << RX_CPU_EVT_HIGH_DMA_RD)
#define RX_CPU_EVENT_SW_EVENT9      (1 << RX_CPU_EVT_SW9)
#define RX_CPU_EVENT_DMA_ATTN       (1 << RX_CPU_EVT_DMA_ATTN)
#define RX_CPU_EVENT_LOW_P_MBOX     (1 << RX_CPU_EVT_LOW_P_MBOX)
#define RX_CPU_EVENT_HIGH_P_MBOX    (1 << RX_CPU_EVT_HIGH_P_MBOX)
#define RX_CPU_EVENT_SW_EVENT10     (1 << RX_CPU_EVT_SW10)
#define RX_CPU_EVENT_TX_CPU_ATTN    (1 << RX_CPU_EVT_TX_CPU_ATTN)
#define RX_CPU_EVENT_MAC_ATTN       (1 << RX_CPU_EVT_MAC_ATTN)
#define RX_CPU_EVENT_RX_CPU_ATTN    (1 << RX_CPU_EVT_RX_CPU_ATTN)
#define RX_CPU_EVENT_FLOW_ATTN      (1 << RX_CPU_EVT_FLOW_ATTN)
#define RX_CPU_EVENT_SW_EVENT11     (1 << RX_CPU_EVT_SW11)
#define RX_CPU_EVENT_TIMER          (1 << RX_CPU_EVT_TIMER)
#define RX_CPU_EVENT_SW_EVENT12     (1 << RX_CPU_EVT_SW12)
#define RX_CPU_EVENT_SW_EVENT13     (1 << RX_CPU_EVT_SW13)

#define RX_CPU_MASK (RX_CPU_EVENT_SW_EVENT0 | \
		     RX_CPU_EVENT_RLP | \
		     RX_CPU_EVENT_RDI | \
		     RX_CPU_EVENT_RDC)

#define TX_CPU_EVT_SW0              0
#define TX_CPU_EVT_SW1              1
#define TX_CPU_EVT_SW2              2
#define TX_CPU_EVT_SW3              3
#define TX_CPU_EVT_TX_MAC           4
#define TX_CPU_EVT_SW4              5
#define TX_CPU_EVT_SBDC             6
#define TX_CPU_EVT_SW5              7
#define TX_CPU_EVT_SDI              8
#define TX_CPU_EVT_DMA_WR           9
#define TX_CPU_EVT_DMA_RD           10
#define TX_CPU_EVT_SWQ              11
#define TX_CPU_EVT_SW6              12
#define TX_CPU_EVT_SDC              13
#define TX_CPU_EVT_SW7              14
#define TX_CPU_EVT_HOST_COALES      15
#define TX_CPU_EVT_SW8              16
#define TX_CPU_EVT_HIGH_DMA_WR      17
#define TX_CPU_EVT_HIGH_DMA_RD      18
#define TX_CPU_EVT_SW9              19
#define TX_CPU_EVT_DMA_ATTN         20
#define TX_CPU_EVT_LOW_P_MBOX       21
#define TX_CPU_EVT_HIGH_P_MBOX      22
#define TX_CPU_EVT_SW10             23
#define TX_CPU_EVT_RX_CPU_ATTN      24
#define TX_CPU_EVT_MAC_ATTN         25
#define TX_CPU_EVT_TX_CPU_ATTN      26
#define TX_CPU_EVT_FLOW_ATTN        27
#define TX_CPU_EVT_SW11             28
#define TX_CPU_EVT_TIMER            29
#define TX_CPU_EVT_SW12             30
#define TX_CPU_EVT_SW13             31


/* TX-CPU event */
#define TX_CPU_EVENT_SW_EVENT0      (1 << TX_CPU_EVT_SW0)
#define TX_CPU_EVENT_SW_EVENT1      (1 << TX_CPU_EVT_SW1)
#define TX_CPU_EVENT_SW_EVENT2      (1 << TX_CPU_EVT_SW2)
#define TX_CPU_EVENT_SW_EVENT3      (1 << TX_CPU_EVT_SW3)
#define TX_CPU_EVENT_TX_MAC         (1 << TX_CPU_EVT_TX_MAC)
#define TX_CPU_EVENT_SW_EVENT4      (1 << TX_CPU_EVT_SW4)
#define TX_CPU_EVENT_SBDC           (1 << TX_CPU_EVT_SBDC)
#define TX_CPU_EVENT_SW_EVENT5      (1 << TX_CPU_EVT_SW5)
#define TX_CPU_EVENT_SDI            (1 << TX_CPU_EVT_SDI)
#define TX_CPU_EVENT_DMA_WR         (1 << TX_CPU_EVT_DMA_WR)
#define TX_CPU_EVENT_DMA_RD         (1 << TX_CPU_EVT_DMA_RD)
#define TX_CPU_EVENT_SWQ            (1 << TX_CPU_EVT_SWQ)
#define TX_CPU_EVENT_SW_EVENT6      (1 << TX_CPU_EVT_SW6)
#define TX_CPU_EVENT_SDC            (1 << TX_CPU_EVT_SDC)
#define TX_CPU_EVENT_SW_EVENT7      (1 << TX_CPU_EVT_SW7)
#define TX_CPU_EVENT_HOST_COALES    (1 << TX_CPU_EVT_HOST_COALES)
#define TX_CPU_EVENT_SW_EVENT8      (1 << TX_CPU_EVT_SW8)
#define TX_CPU_EVENT_HIGH_DMA_WR    (1 << TX_CPU_EVT_HIGH_DMA_WR)
#define TX_CPU_EVENT_HIGH_DMA_RD    (1 << TX_CPU_EVT_HIGH_DMA_RD)
#define TX_CPU_EVENT_SW_EVENT9      (1 << TX_CPU_EVT_SW9)
#define TX_CPU_EVENT_DMA_ATTN       (1 << TX_CPU_EVT_DMA_ATTN)
#define TX_CPU_EVENT_LOW_P_MBOX     (1 << TX_CPU_EVT_LOW_P_MBOX)
#define TX_CPU_EVENT_HIGH_P_MBOX    (1 << TX_CPU_EVT_HIGH_P_MBOX)
#define TX_CPU_EVENT_SW_EVENT10     (1 << TX_CPU_EVT_SW10)
#define TX_CPU_EVENT_RX_CPU_ATTN    (1 << TX_CPU_EVT_RX_CPU_ATTN)
#define TX_CPU_EVENT_MAC_ATTN       (1 << TX_CPU_EVT_MAC_ATTN)
#define TX_CPU_EVENT_TX_CPU_ATTN    (1 << TX_CPU_EVT_TX_CPU_ATTN)
#define TX_CPU_EVENT_FLOW_ATTN      (1 << TX_CPU_EVT_FLOW_ATTN)
#define TX_CPU_EVENT_SW_EVENT11     (1 << TX_CPU_EVT_SW11)
#define TX_CPU_EVENT_TIMER          (1 << TX_CPU_EVT_TIMER)
#define TX_CPU_EVENT_SW_EVENT12     (1 << TX_CPU_EVT_SW12)
#define TX_CPU_EVENT_SW_EVENT13     (1 << TX_CPU_EVT_SW13)


#define TX_CPU_MASK (TX_CPU_EVENT_SW_EVENT0 | \
		     TX_CPU_EVENT_SDI  | \
		     TX_CPU_EVENT_SDC)


#define T3_FTQ_TYPE1_UNDERFLOW_BIT   (1 << 29)
#define T3_FTQ_TYPE1_PASS_BIT        (1 << 30)
#define T3_FTQ_TYPE1_SKIP_BIT        (1 << 31)

#define T3_FTQ_TYPE2_UNDERFLOW_BIT   (1 << 13)
#define T3_FTQ_TYPE2_PASS_BIT        (1 << 14)
#define T3_FTQ_TYPE2_SKIP_BIT        (1 << 15)

#define T3_QID_DMA_READ               1
#define T3_QID_DMA_HIGH_PRI_READ      2
#define T3_QID_DMA_COMP_DX            3
#define T3_QID_SEND_BD_COMP           4
#define T3_QID_SEND_DATA_INITIATOR    5
#define T3_QID_DMA_WRITE              6
#define T3_QID_DMA_HIGH_PRI_WRITE     7
#define T3_QID_SW_TYPE_1              8
#define T3_QID_SEND_DATA_COMP         9
#define T3_QID_HOST_COALESCING        10
#define T3_QID_MAC_TX                 11
#define T3_QID_MBUF_CLUSTER_FREE      12
#define T3_QID_RX_BD_COMP             13
#define T3_QID_RX_LIST_PLM            14
#define T3_QID_RX_DATA_BD_INITIATOR   15
#define T3_QID_RX_DATA_COMP           16
#define T3_QID_SW_TYPE2               17

LM_STATUS LM_LoadFirmware(PLM_DEVICE_BLOCK pDevice,
                          PT3_FWIMG_INFO pFwImg,
                          LM_UINT32 LoadCpu,
                          LM_UINT32 StartCpu);

/******************************************************************************/
/* NIC register read/write macros. */
/******************************************************************************/

#if 0  /* Jimmy */
/* MAC register access. */
LM_UINT32 LM_RegRdInd(PLM_DEVICE_BLOCK pDevice, LM_UINT32 Register);
LM_VOID LM_RegWrInd(PLM_DEVICE_BLOCK pDevice, LM_UINT32 Register,
    LM_UINT32 Value32);

/* MAC memory access. */
LM_UINT32 LM_MemRdInd(PLM_DEVICE_BLOCK pDevice, LM_UINT32 MemAddr);
LM_VOID LM_MemWrInd(PLM_DEVICE_BLOCK pDevice, LM_UINT32 MemAddr,
    LM_UINT32 Value32);

#if PCIX_TARGET_WORKAROUND

/* use memory-mapped accesses for mailboxes and reads, UNDI accesses
   for writes to all other registers */
#define REG_RD(pDevice, OffsetName)                              \
    readl(&((pDevice)->pMemView->OffsetName))

#define REG_WR(pDevice, OffsetName, Value32)                     \
    (((OFFSETOF(T3_STD_MEM_MAP, OffsetName) >=0x200 ) &&         \
      (OFFSETOF(T3_STD_MEM_MAP, OffsetName) <0x400)) ||	         \
	 ((pDevice)->EnablePciXFix == FALSE)) ?                  \
    (void) writel(Value32, &((pDevice)->pMemView->OffsetName)) : \
    LM_RegWrInd(pDevice, OFFSETOF(T3_STD_MEM_MAP, OffsetName), Value32)

#define MB_REG_RD(pDevice, OffsetName)                           \
    readl(&((pDevice)->pMemView->OffsetName))

#define MB_REG_WR(pDevice, OffsetName, Value32)                  \
    writel(Value32, &((pDevice)->pMemView->OffsetName))

#define REG_RD_OFFSET(pDevice, Offset)                           \
    readl(&((LM_UINT8 *) (pDevice)->pMemView + Offset))

#define REG_WR_OFFSET(pDevice, Offset, Value32)                  \
	(((Offset >=0x200 ) && (Offset < 0x400)) ||		 \
	 ((pDevice)->EnablePciXFix == FALSE)) ?	   		 \
    (void) writel(Value32, ((LM_UINT8 *) (pDevice)->pMemView + Offset)) : \
    LM_RegWrInd(pDevice, Offset, Value32)

#define MEM_RD(pDevice, AddrName)                                \
    LM_MemRdInd(pDevice, OFFSETOF(T3_FIRST_32K_SRAM, AddrName))
#define MEM_WR(pDevice, AddrName, Value32)                       \
    LM_MemWrInd(pDevice, OFFSETOF(T3_FIRST_32K_SRAM, AddrName), Value32)

#define MEM_RD_OFFSET(pDevice, Offset)                           \
    LM_MemRdInd(pDevice, Offset)
#define MEM_WR_OFFSET(pDevice, Offset, Value32)                  \
    LM_MemWrInd(pDevice, Offset, Value32)

#else /* normal target access path below */

/* Register access. */
#define REG_RD(pDevice, OffsetName)                                         \
    readl(&((pDevice)->pMemView->OffsetName))
#define REG_WR(pDevice, OffsetName, Value32)                                \
    writel(Value32, &((pDevice)->pMemView->OffsetName))

#define REG_RD_OFFSET(pDevice, Offset)                                      \
    readl(((LM_UINT8 *) (pDevice)->pMemView + Offset))
#define REG_WR_OFFSET(pDevice, Offset, Value32)                             \
    writel(Value32, ((LM_UINT8 *) (pDevice)->pMemView + Offset))


/* There could be problem access the memory window directly.  For now, */
/* we have to go through the PCI configuration register. */
#define MEM_RD(pDevice, AddrName)                                           \
    LM_MemRdInd(pDevice, OFFSETOF(T3_FIRST_32K_SRAM, AddrName))
#define MEM_WR(pDevice, AddrName, Value32)                                  \
    LM_MemWrInd(pDevice, OFFSETOF(T3_FIRST_32K_SRAM, AddrName), Value32)

#define MEM_RD_OFFSET(pDevice, Offset)                                      \
    LM_MemRdInd(pDevice, Offset)
#define MEM_WR_OFFSET(pDevice, Offset, Value32)                             \
    LM_MemWrInd(pDevice, Offset, Value32)

#endif  /* PCIX_TARGET_WORKAROUND */

#endif  /* Jimmy, merging */

  /* Jimmy...rest of file is new stuff! */
/******************************************************************************/
/* NIC register read/write macros. */
/******************************************************************************/

/* MAC register access. */
LM_UINT32 LM_RegRdInd(PLM_DEVICE_BLOCK pDevice, LM_UINT32 Register);
LM_VOID LM_RegWrInd(PLM_DEVICE_BLOCK pDevice, LM_UINT32 Register,
    LM_UINT32 Value32);

/* MAC memory access. */
LM_UINT32 LM_MemRdInd(PLM_DEVICE_BLOCK pDevice, LM_UINT32 MemAddr);
LM_VOID LM_MemWrInd(PLM_DEVICE_BLOCK pDevice, LM_UINT32 MemAddr,
    LM_UINT32 Value32);

#define MB_REG_WR(pDevice, OffsetName, Value32)                               \
    ((pDevice)->UndiFix) ?                                                    \
        LM_RegWrInd(pDevice, OFFSETOF(T3_STD_MEM_MAP, OffsetName)+0x5600,     \
            Value32) :                                                        \
        (void) __raw_writel(Value32, &((pDevice)->pMemView->OffsetName))

#define MB_REG_RD(pDevice, OffsetName)                                        \
    (((pDevice)->UndiFix) ?                                                   \
        LM_RegRdInd(pDevice, OFFSETOF(T3_STD_MEM_MAP, OffsetName)+0x5600) :   \
        __raw_readl(&((pDevice)->pMemView->OffsetName)))

#define REG_RD(pDevice, OffsetName)                                           \
    (((pDevice)->UndiFix) ?                                                   \
        LM_RegRdInd(pDevice, OFFSETOF(T3_STD_MEM_MAP, OffsetName)) :          \
        __raw_readl(&((pDevice)->pMemView->OffsetName)))

#if PCIX_TARGET_WORKAROUND

#define REG_WR(pDevice, OffsetName, Value32)                                \
	 ((pDevice)->EnablePciXFix == FALSE) ?                              \
    (void) __raw_writel(Value32, &((pDevice)->pMemView->OffsetName)) :      \
    LM_RegWrInd(pDevice, OFFSETOF(T3_STD_MEM_MAP, OffsetName), Value32)

#else

#define REG_WR(pDevice, OffsetName, Value32)                                \
    __raw_writel(Value32, &((pDevice)->pMemView->OffsetName))

#endif

#define MEM_RD(pDevice, AddrName)                                           \
    LM_MemRdInd(pDevice, OFFSETOF(T3_FIRST_32K_SRAM, AddrName))
#define MEM_WR(pDevice, AddrName, Value32)                                  \
    LM_MemWrInd(pDevice, OFFSETOF(T3_FIRST_32K_SRAM, AddrName), Value32)

#define MEM_RD_OFFSET(pDevice, Offset)                                      \
    LM_MemRdInd(pDevice, Offset)
#define MEM_WR_OFFSET(pDevice, Offset, Value32)                             \
    LM_MemWrInd(pDevice, Offset, Value32)

#endif /* TIGON3_H */

