
/******************************************************************************/
/*                                                                            */
/* 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 */
