diff -Naru linux-2.6.16_orig/drivers/net/netxen/netxen_inc.h 
linux-2.6.16/drivers/net/netxen/netxen_inc.h
--- linux-2.6.16_orig/drivers/net/netxen/netxen_inc.h   1969-12-31 
16:00:00.000000000 -0800
+++ linux-2.6.16/drivers/net/netxen/netxen_inc.h        2006-03-24 
14:13:57.000000000 -0800
@@ -0,0 +1,1228 @@
+/*
+ * Copyright (C) 2003 - 2006 NetXen Inc.
+ * 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; either version 2
+ * of the License, or (at your option) any later version.
+ *                            
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *                                   
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA  02111-1307, USA.
+ * 
+ * The full GNU General Public License is included in this distribution
+ * in the file called LICENSE.
+ * 
+ * Contact Information:
+ *    [EMAIL PROTECTED]
+ * NetXen, 3965 Freedom Circle, Fourth Floor,
+ * Santa Clara, CA 95054
+ */
+#ifndef __NetXen_INC_H
+#define __NetXen_INC_H
+
+#include <linux/module.h>
+#include <linux/kernel.h>
+#include <linux/version.h>
+
+#include <linux/config.h>
+#include <linux/version.h>
+
+#define NetXen_CONF_X86            3
+
+#if defined(CONFIG_MODVERSIONS) && !defined(MODVERSIONS)
+#define MODVERSIONS
+#endif
+
+#if defined(MODVERSIONS) && !defined(__GENKSYMS__)
+#include <config/modversions.h>
+#endif
+
+#include <asm/semaphore.h>
+#include <linux/spinlock.h>
+#include <asm/irq.h>
+#include <linux/init.h>
+#include <linux/errno.h>
+#include <linux/pci.h>
+#include <linux/proc_fs.h>
+#include <asm/uaccess.h>
+#include <asm/string.h> /* for memset */
+
+typedef char                    __int8_t;
+typedef short                   __int16_t;
+typedef int                     __int32_t;
+
+typedef long long               __int64_t;
+typedef unsigned char           __uint8_t;
+typedef unsigned short          __uint16_t;
+typedef unsigned int            __uint32_t;
+typedef unsigned long long      __uint64_t;
+
+
+#define PRINTK_PREFIX "<1>"
+#define printf_0(A) printk(PRINTK_PREFIX A)
+#define printf_1(A,B) printk(PRINTK_PREFIX A, B)
+#define printf_2(A,B,C) printk(PRINTK_PREFIX A, B, C)
+#define printf_3(A,B,C,D) printk(PRINTK_PREFIX A, B, C, D)
+#define printf_4(A,B,C,D,E) printk(PRINTK_PREFIX A, B, C, D, E)
+#define printf_5(A,B,C,D,E,F) printk(PRINTK_PREFIX A, B, C, D, E, F)
+
+void DELAY(int A);
+
+/*
+ * We use the environmental controls to define/undefine various feature
+ * control macros depending on the circumstances.
+ * When compiling for a Linux host, we use the standard Linux configuration
+ * method to simplify things here.
+ */
+
+#define NetXen_DELAY_HW            0       /* no delay */
+
+#define NetXen_DELAY_HUMAN         0       /* humans read slow */
+
+#define UNUSED __attribute__((unused))
+#define NOINLINE __attribute__((noinline))
+
+extern long pegDynamicMemStart;
+
+/*
+ * The basic unit of access when reading/writing control registers.
+ */
+typedef long            native_t;       /* most efficient integer on h/w */
+
+typedef __uint32_t      netxen_crbword_t;  /* single word in CRB space */
+typedef __uint64_t      netxen_dataword_t; /* single word in data space */
+typedef __uint64_t      netxen64ptr_t;     /* a pointer that occupies 64 bits 
*/
+#define NetXen64PTR(P)     ((netxen64ptr_t)((native_t)(P)))   /* convert for 
us */
+
+#define MAX_REASSEMBLED_PKTS            4
+
+# include <linux/types.h>
+
+#define NetXen_HW_H0_CH_HUB_ADR    0x05
+#define NetXen_HW_H1_CH_HUB_ADR    0x0E
+#define NetXen_HW_H2_CH_HUB_ADR    0x03
+#define NetXen_HW_H3_CH_HUB_ADR    0x01
+#define NetXen_HW_H4_CH_HUB_ADR    0x06
+#define NetXen_HW_H5_CH_HUB_ADR    0x07
+#define NetXen_HW_H6_CH_HUB_ADR    0x08
+/*  */
+/*  WARNING:  pex_tgt_adr.v assumes if MSB of hub adr is set then it is an 
ILLEGAL hub!!!!!  */
+/*  */
+
+/*  Hub 0 */
+#define NetXen_HW_MN_CRB_AGT_ADR   0x15
+#define NetXen_HW_MS_CRB_AGT_ADR   0x25
+
+/*  Hub 1 */
+#define NetXen_HW_PS_CRB_AGT_ADR   0x73
+#define NetXen_HW_SS_CRB_AGT_ADR   0x20
+#define NetXen_HW_RPMX3_CRB_AGT_ADR        0x0b
+#define NetXen_HW_QMS_CRB_AGT_ADR  0x00
+#define NetXen_HW_SQGS0_CRB_AGT_ADR        0x01
+#define NetXen_HW_SQGS1_CRB_AGT_ADR        0x02
+#define NetXen_HW_SQGS2_CRB_AGT_ADR        0x03
+#define NetXen_HW_SQGS3_CRB_AGT_ADR        0x04
+#define NetXen_HW_C2C0_CRB_AGT_ADR 0x58
+#define NetXen_HW_C2C1_CRB_AGT_ADR 0x59
+#define NetXen_HW_C2C2_CRB_AGT_ADR 0x5a
+#define NetXen_HW_RPMX2_CRB_AGT_ADR        0x0a
+#define NetXen_HW_RPMX4_CRB_AGT_ADR        0x0c
+#define NetXen_HW_RPMX7_CRB_AGT_ADR        0x0f
+#define NetXen_HW_RPMX9_CRB_AGT_ADR        0x12
+#define NetXen_HW_SMB_CRB_AGT_ADR  0x18
+
+/*  Hub 2 */
+#define NetXen_HW_NIU_CRB_AGT_ADR  0x31
+#define NetXen_HW_I2C0_CRB_AGT_ADR 0x19
+#define NetXen_HW_I2C1_CRB_AGT_ADR 0x29
+
+#define NetXen_HW_SN_CRB_AGT_ADR   0x10
+#define NetXen_HW_I2Q_CRB_AGT_ADR  0x20
+#define NetXen_HW_LPC_CRB_AGT_ADR  0x22
+#define NetXen_HW_ROMUSB_CRB_AGT_ADR       0x21
+#define NetXen_HW_QM_CRB_AGT_ADR   0x66
+#define NetXen_HW_SQG0_CRB_AGT_ADR 0x60
+#define NetXen_HW_SQG1_CRB_AGT_ADR 0x61
+#define NetXen_HW_SQG2_CRB_AGT_ADR 0x62
+#define NetXen_HW_SQG3_CRB_AGT_ADR 0x63
+#define NetXen_HW_RPMX1_CRB_AGT_ADR        0x09
+#define NetXen_HW_RPMX5_CRB_AGT_ADR        0x0d
+#define NetXen_HW_RPMX6_CRB_AGT_ADR        0x0e
+#define NetXen_HW_RPMX8_CRB_AGT_ADR        0x11
+
+/*  Hub 3 */
+#define NetXen_HW_PH_CRB_AGT_ADR   0x1A
+#define NetXen_HW_SRE_CRB_AGT_ADR  0x50
+#define NetXen_HW_EG_CRB_AGT_ADR   0x51
+#define NetXen_HW_RPMX0_CRB_AGT_ADR        0x08
+
+/*  Hub 4 */
+#define NetXen_HW_PEGN0_CRB_AGT_ADR        0x40
+#define NetXen_HW_PEGN1_CRB_AGT_ADR        0x41
+#define NetXen_HW_PEGN2_CRB_AGT_ADR        0x42
+#define NetXen_HW_PEGN3_CRB_AGT_ADR        0x43
+#define NetXen_HW_PEGNI_CRB_AGT_ADR        0x44
+#define NetXen_HW_PEGND_CRB_AGT_ADR        0x45
+#define NetXen_HW_PEGNC_CRB_AGT_ADR        0x46
+#define NetXen_HW_PEGR0_CRB_AGT_ADR        0x47
+#define NetXen_HW_PEGR1_CRB_AGT_ADR        0x48
+#define NetXen_HW_PEGR2_CRB_AGT_ADR        0x49
+#define NetXen_HW_PEGR3_CRB_AGT_ADR        0x4a
+
+
+/*  Hub 5 */
+#define NetXen_HW_PEGS0_CRB_AGT_ADR        0x40
+#define NetXen_HW_PEGS1_CRB_AGT_ADR        0x41
+#define NetXen_HW_PEGS2_CRB_AGT_ADR        0x42
+#define NetXen_HW_PEGS3_CRB_AGT_ADR        0x43
+#define NetXen_HW_PEGSI_CRB_AGT_ADR        0x44
+#define NetXen_HW_PEGSD_CRB_AGT_ADR        0x45
+#define NetXen_HW_PEGSC_CRB_AGT_ADR        0x46
+
+
+/*  Hub 6 */
+#define NetXen_HW_CAS0_CRB_AGT_ADR 0x46
+#define NetXen_HW_CAS1_CRB_AGT_ADR 0x47
+#define NetXen_HW_CAS2_CRB_AGT_ADR 0x48
+#define NetXen_HW_CAS3_CRB_AGT_ADR 0x49
+#define NetXen_HW_NCM_CRB_AGT_ADR  0x16
+#define NetXen_HW_TMR_CRB_AGT_ADR  0x17
+#define NetXen_HW_XDMA_CRB_AGT_ADR 0x05
+#define NetXen_HW_OCM0_CRB_AGT_ADR 0x06
+#define NetXen_HW_OCM1_CRB_AGT_ADR 0x07
+
+/*  Floaters - non existent modules */
+#define NetXen_HW_EFC_RPMX0_CRB_AGT_ADR    0x67
+
+/*  This field defines PCI/X adr [25:20] of agents on the CRB */
+/*  */
+#define NetXen_HW_PX_MAP_CRB_PH    0
+#define NetXen_HW_PX_MAP_CRB_PS    1
+#define NetXen_HW_PX_MAP_CRB_MN    2
+#define NetXen_HW_PX_MAP_CRB_MS    3
+#define NetXen_HW_PX_MAP_CRB_SRE   5
+#define NetXen_HW_PX_MAP_CRB_NIU   6
+#define NetXen_HW_PX_MAP_CRB_QMN   7
+#define NetXen_HW_PX_MAP_CRB_SQN0  8
+#define NetXen_HW_PX_MAP_CRB_SQN1  9
+#define NetXen_HW_PX_MAP_CRB_SQN2  10
+#define NetXen_HW_PX_MAP_CRB_SQN3  11
+#define NetXen_HW_PX_MAP_CRB_QMS   12
+#define NetXen_HW_PX_MAP_CRB_SQS0  13
+#define NetXen_HW_PX_MAP_CRB_SQS1  14
+#define NetXen_HW_PX_MAP_CRB_SQS2  15
+#define NetXen_HW_PX_MAP_CRB_SQS3  16
+#define NetXen_HW_PX_MAP_CRB_PGN0  17
+#define NetXen_HW_PX_MAP_CRB_PGN1  18
+#define NetXen_HW_PX_MAP_CRB_PGN2  19
+#define NetXen_HW_PX_MAP_CRB_PGN3  20
+#define NetXen_HW_PX_MAP_CRB_PGND  21
+#define NetXen_HW_PX_MAP_CRB_PGNI  22
+#define NetXen_HW_PX_MAP_CRB_PGS0  23
+#define NetXen_HW_PX_MAP_CRB_PGS1  24
+#define NetXen_HW_PX_MAP_CRB_PGS2  25
+#define NetXen_HW_PX_MAP_CRB_PGS3  26
+#define NetXen_HW_PX_MAP_CRB_PGSD  27
+#define NetXen_HW_PX_MAP_CRB_PGSI  28
+#define NetXen_HW_PX_MAP_CRB_SN    29
+#define NetXen_HW_PX_MAP_CRB_EG    31
+#define NetXen_HW_PX_MAP_CRB_PH2   32
+#define NetXen_HW_PX_MAP_CRB_PS2   33
+#define NetXen_HW_PX_MAP_CRB_CAM   34
+#define NetXen_HW_PX_MAP_CRB_CAS0  35
+#define NetXen_HW_PX_MAP_CRB_CAS1  36
+#define NetXen_HW_PX_MAP_CRB_CAS2  37
+#define NetXen_HW_PX_MAP_CRB_C2C0  38
+#define NetXen_HW_PX_MAP_CRB_C2C1  39
+#define NetXen_HW_PX_MAP_CRB_TIMR  40
+/* #define      PX_MAP_CRB_C2C2         40   // N/A: Not use in either 
Phantom1 or Phantom2 => use for TIMR */
+/* #define      PX_MAP_CRB_SS           41 */
+#define NetXen_HW_PX_MAP_CRB_RPMX1 42
+#define NetXen_HW_PX_MAP_CRB_RPMX2 43
+#define NetXen_HW_PX_MAP_CRB_RPMX3 44
+#define NetXen_HW_PX_MAP_CRB_RPMX4 45
+#define NetXen_HW_PX_MAP_CRB_RPMX5 46
+#define NetXen_HW_PX_MAP_CRB_RPMX6 47
+#define NetXen_HW_PX_MAP_CRB_RPMX7 48
+#define NetXen_HW_PX_MAP_CRB_XDMA  49
+#define NetXen_HW_PX_MAP_CRB_I2Q   50
+#define NetXen_HW_PX_MAP_CRB_ROMUSB        51
+#define NetXen_HW_PX_MAP_CRB_CAS3  52
+#define NetXen_HW_PX_MAP_CRB_RPMX0 53
+#define NetXen_HW_PX_MAP_CRB_RPMX8 54
+#define NetXen_HW_PX_MAP_CRB_RPMX9 55
+#define NetXen_HW_PX_MAP_CRB_OCM0  56
+#define NetXen_HW_PX_MAP_CRB_OCM1  57
+#define NetXen_HW_PX_MAP_CRB_SMB   58
+#define NetXen_HW_PX_MAP_CRB_I2C0  59
+#define NetXen_HW_PX_MAP_CRB_I2C1  60
+#define NetXen_HW_PX_MAP_CRB_LPC   61
+#define NetXen_HW_PX_MAP_CRB_PGNC  62
+#define NetXen_HW_PX_MAP_CRB_PGR0  63
+#define NetXen_HW_PX_MAP_CRB_PGR1  4
+#define NetXen_HW_PX_MAP_CRB_PGR2  30
+#define NetXen_HW_PX_MAP_CRB_PGR3  41
+
+/*  This field defines CRB adr [31:20] of the agents */
+/*  */
+
+#define NetXen_HW_CRB_HUB_AGT_ADR_MN       ((NetXen_HW_H0_CH_HUB_ADR << 7) | 
NetXen_HW_MN_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_PH       ((NetXen_HW_H0_CH_HUB_ADR << 7) | 
NetXen_HW_PH_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_MS       ((NetXen_HW_H0_CH_HUB_ADR << 7) | 
NetXen_HW_MS_CRB_AGT_ADR)
+
+#define NetXen_HW_CRB_HUB_AGT_ADR_PS       ((NetXen_HW_H1_CH_HUB_ADR << 7) | 
NetXen_HW_PS_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_SS       ((NetXen_HW_H1_CH_HUB_ADR << 7) | 
NetXen_HW_SS_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_RPMX3    ((NetXen_HW_H1_CH_HUB_ADR << 7) | 
NetXen_HW_RPMX3_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_QMS      ((NetXen_HW_H1_CH_HUB_ADR << 7) | 
NetXen_HW_QMS_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_SQS0     ((NetXen_HW_H1_CH_HUB_ADR << 7) | 
NetXen_HW_SQGS0_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_SQS1     ((NetXen_HW_H1_CH_HUB_ADR << 7) | 
NetXen_HW_SQGS1_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_SQS2     ((NetXen_HW_H1_CH_HUB_ADR << 7) | 
NetXen_HW_SQGS2_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_SQS3     ((NetXen_HW_H1_CH_HUB_ADR << 7) | 
NetXen_HW_SQGS3_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_C2C0     ((NetXen_HW_H1_CH_HUB_ADR << 7) | 
NetXen_HW_C2C0_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_C2C1     ((NetXen_HW_H1_CH_HUB_ADR << 7) | 
NetXen_HW_C2C1_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_RPMX2    ((NetXen_HW_H1_CH_HUB_ADR << 7) | 
NetXen_HW_RPMX2_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_RPMX4    ((NetXen_HW_H1_CH_HUB_ADR << 7) | 
NetXen_HW_RPMX4_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_RPMX7    ((NetXen_HW_H1_CH_HUB_ADR << 7) | 
NetXen_HW_RPMX7_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_RPMX9    ((NetXen_HW_H1_CH_HUB_ADR << 7) | 
NetXen_HW_RPMX9_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_SMB      ((NetXen_HW_H1_CH_HUB_ADR << 7) | 
NetXen_HW_SMB_CRB_AGT_ADR)
+
+#define NetXen_HW_CRB_HUB_AGT_ADR_NIU      ((NetXen_HW_H2_CH_HUB_ADR << 7) | 
NetXen_HW_NIU_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_I2C0     ((NetXen_HW_H2_CH_HUB_ADR << 7) | 
NetXen_HW_I2C0_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_I2C1     ((NetXen_HW_H2_CH_HUB_ADR << 7) | 
NetXen_HW_I2C1_CRB_AGT_ADR)
+
+#define NetXen_HW_CRB_HUB_AGT_ADR_SRE      ((NetXen_HW_H3_CH_HUB_ADR << 7) | 
NetXen_HW_SRE_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_EG       ((NetXen_HW_H3_CH_HUB_ADR << 7) | 
NetXen_HW_EG_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_RPMX0    ((NetXen_HW_H3_CH_HUB_ADR << 7) | 
NetXen_HW_RPMX0_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_QMN      ((NetXen_HW_H3_CH_HUB_ADR << 7) | 
NetXen_HW_QM_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_SQN0     ((NetXen_HW_H3_CH_HUB_ADR << 7) | 
NetXen_HW_SQG0_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_SQN1     ((NetXen_HW_H3_CH_HUB_ADR << 7) | 
NetXen_HW_SQG1_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_SQN2     ((NetXen_HW_H3_CH_HUB_ADR << 7) | 
NetXen_HW_SQG2_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_SQN3     ((NetXen_HW_H3_CH_HUB_ADR << 7) | 
NetXen_HW_SQG3_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_RPMX1    ((NetXen_HW_H3_CH_HUB_ADR << 7) | 
NetXen_HW_RPMX1_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_RPMX5    ((NetXen_HW_H3_CH_HUB_ADR << 7) | 
NetXen_HW_RPMX5_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_RPMX6    ((NetXen_HW_H3_CH_HUB_ADR << 7) | 
NetXen_HW_RPMX6_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_RPMX8    ((NetXen_HW_H3_CH_HUB_ADR << 7) | 
NetXen_HW_RPMX8_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_CAS0     ((NetXen_HW_H3_CH_HUB_ADR << 7) | 
NetXen_HW_CAS0_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_CAS1     ((NetXen_HW_H3_CH_HUB_ADR << 7) | 
NetXen_HW_CAS1_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_CAS2     ((NetXen_HW_H3_CH_HUB_ADR << 7) | 
NetXen_HW_CAS2_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_CAS3     ((NetXen_HW_H3_CH_HUB_ADR << 7) | 
NetXen_HW_CAS3_CRB_AGT_ADR)
+
+#define NetXen_HW_CRB_HUB_AGT_ADR_PGNI     ((NetXen_HW_H4_CH_HUB_ADR << 7) | 
NetXen_HW_PEGNI_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_PGND     ((NetXen_HW_H4_CH_HUB_ADR << 7) | 
NetXen_HW_PEGND_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_PGN0     ((NetXen_HW_H4_CH_HUB_ADR << 7) | 
NetXen_HW_PEGN0_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_PGN1     ((NetXen_HW_H4_CH_HUB_ADR << 7) | 
NetXen_HW_PEGN1_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_PGN2     ((NetXen_HW_H4_CH_HUB_ADR << 7) | 
NetXen_HW_PEGN2_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_PGN3     ((NetXen_HW_H4_CH_HUB_ADR << 7) | 
NetXen_HW_PEGN3_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_PGNC     ((NetXen_HW_H4_CH_HUB_ADR << 7) | 
NetXen_HW_PEGNC_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_PGR0     ((NetXen_HW_H4_CH_HUB_ADR << 7) | 
NetXen_HW_PEGR0_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_PGR1     ((NetXen_HW_H4_CH_HUB_ADR << 7) | 
NetXen_HW_PEGR1_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_PGR2     ((NetXen_HW_H4_CH_HUB_ADR << 7) | 
NetXen_HW_PEGR2_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_PGR3     ((NetXen_HW_H4_CH_HUB_ADR << 7) | 
NetXen_HW_PEGR3_CRB_AGT_ADR)
+
+#define NetXen_HW_CRB_HUB_AGT_ADR_PGSI     ((NetXen_HW_H5_CH_HUB_ADR << 7) | 
NetXen_HW_PEGSI_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_PGSD     ((NetXen_HW_H5_CH_HUB_ADR << 7) | 
NetXen_HW_PEGSD_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_PGS0     ((NetXen_HW_H5_CH_HUB_ADR << 7) | 
NetXen_HW_PEGS0_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_PGS1     ((NetXen_HW_H5_CH_HUB_ADR << 7) | 
NetXen_HW_PEGS1_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_PGS2     ((NetXen_HW_H5_CH_HUB_ADR << 7) | 
NetXen_HW_PEGS2_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_PGS3     ((NetXen_HW_H5_CH_HUB_ADR << 7) | 
NetXen_HW_PEGS3_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_PGSC     ((NetXen_HW_H5_CH_HUB_ADR << 7) | 
NetXen_HW_PEGSC_CRB_AGT_ADR)
+
+#define NetXen_HW_CRB_HUB_AGT_ADR_CAM      ((NetXen_HW_H6_CH_HUB_ADR << 7) | 
NetXen_HW_NCM_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_TIMR     ((NetXen_HW_H6_CH_HUB_ADR << 7) | 
NetXen_HW_TMR_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_XDMA     ((NetXen_HW_H6_CH_HUB_ADR << 7) | 
NetXen_HW_XDMA_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_SN       ((NetXen_HW_H6_CH_HUB_ADR << 7) | 
NetXen_HW_SN_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_I2Q      ((NetXen_HW_H6_CH_HUB_ADR << 7) | 
NetXen_HW_I2Q_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_ROMUSB   ((NetXen_HW_H6_CH_HUB_ADR << 7) | 
NetXen_HW_ROMUSB_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_OCM0     ((NetXen_HW_H6_CH_HUB_ADR << 7) | 
NetXen_HW_OCM0_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_OCM1     ((NetXen_HW_H6_CH_HUB_ADR << 7) | 
NetXen_HW_OCM1_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_LPC      ((NetXen_HW_H6_CH_HUB_ADR << 7) | 
NetXen_HW_LPC_CRB_AGT_ADR)
+
+
+/* ------------------------------------------------------------------------ */
+/*  IMBus Port Tag Defines */
+/* ------------------------------------------------------------------------ */
+/* ------------------------------------------------------------------------ */
+/*  MN IMBus Port Tag Defines */
+/* ------------------------------------------------------------------------ */
+#define NetXen_HW_SRE_MN_IMBUS_PORT_TAG    0x0
+#define NetXen_HW_EG_MN_IMBUS_PORT_TAG     0x1
+#define NetXen_HW_CAS_MN_IMBUS_PORT_TAG    0x2
+#define NetXen_HW_PEG2I_MN_IMBUS_PORT_TAG  0x3
+#define NetXen_HW_PEG2D_MN_IMBUS_PORT_TAG  0x4
+#define NetXen_HW_PEG2D1_MN_IMBUS_PORT_TAG 0x5
+#define NetXen_HW_PH_MN_IMBUS_PORT_TAG     0x6
+#define NetXen_HW_SN_PTM_MN_IMBUS_PORT_TAG 0x7
+#define NetXen_HW_PS_MN_IMBUS_PORT_TAG     0xc
+#define NetXen_HW_XDMA_MN_IMBUS_PORT_TAG   0xd
+#define NetXen_HW_ROM_MN_IMBUS_PORT_TAG    0xe
+#define NetXen_HW_NCM_CAM0_MN_IMBUS_PORT_TAG       0x10
+#define NetXen_HW_NCM_CAM1_MN_IMBUS_PORT_TAG       0x10
+#define NetXen_HW_NCM_CAM2_MN_IMBUS_PORT_TAG       0x11
+#define NetXen_HW_NCM_CAM3_MN_IMBUS_PORT_TAG       0x11
+#define NetXen_HW_NCM_CAM4_MN_IMBUS_PORT_TAG       0x11
+#define NetXen_HW_TMR_MN_IMBUS_PORT_TAG    0x12
+#define NetXen_HW_QM_MN_IMBUS_PORT_TAG     0x13
+#define NetXen_HW_SQG0_FBQ_MN_IMBUS_PORT_TAG       0x14
+#define NetXen_HW_SQG1_FBQ_MN_IMBUS_PORT_TAG       0x15
+#define NetXen_HW_SQG2_FBQ_MN_IMBUS_PORT_TAG       0x16
+#define NetXen_HW_SQG3_FBQ_MN_IMBUS_PORT_TAG       0x17
+
+/* ------------------------------------------------------------------------ */
+/*  MS IMBus Port Tag Defines - not used for P2 */
+/* ------------------------------------------------------------------------ */
+#define NetXen_HW_PH_MS_IMBUS_PORT_TAG     0x0
+#define NetXen_HW_PEG2I_MS_IMBUS_PORT_TAG  0x1
+#define NetXen_HW_PEG2D_MS_IMBUS_PORT_TAG  0x2
+#define NetXen_HW_PEG2D1_MS_IMBUS_PORT_TAG 0x3
+#define NetXen_HW_XDMA_MS_IMBUS_PORT_TAG   0x4
+#define NetXen_HW_CAS_MS_IMBUS_PORT_TAG    0x5
+#define NetXen_HW_PS_MS_IMBUS_PORT_TAG     0x6
+#define NetXen_HW_SS_PTM_MS_IMBUS_PORT_TAG 0x7
+#define NetXen_HW_C2C0_MS_IMBUS_PORT_TAG   0xc
+#define NetXen_HW_C2C1_MS_IMBUS_PORT_TAG   0xd
+
+/* ------------------------------------------------------------------------ */
+/*  SN IMBus Port Tag Defines */
+/* ------------------------------------------------------------------------ */
+#define NetXen_HW_QM_SN_IMBUS_PORT_TAG     0x0
+#define NetXen_HW_PS_SN_IMBUS_PORT_TAG     0x2
+#define NetXen_HW_PH_SN_IMBUS_PORT_TAG     0x3
+
+#define NetXen_HW_SQG0_FBQ_SN_IMBUS_PORT_TAG       0x4
+#define NetXen_HW_SQG1_FBQ_SN_IMBUS_PORT_TAG       0x5
+#define NetXen_HW_SQG2_FBQ_SN_IMBUS_PORT_TAG       0x6
+#define NetXen_HW_SQG3_FBQ_SN_IMBUS_PORT_TAG       0x7
+
+#define NetXen_HW_SRE_SN_IMBUS_PORT_TAG1   0x8
+#define NetXen_HW_EG_SN_IMBUS_PORT_TAG     0x9
+#define NetXen_HW_SRE_SN_IMBUS_PORT_TAG0   0xa
+
+#define NetXen_HW_NCM_CAM0_SN_IMBUS_PORT_TAG       0xc
+#define NetXen_HW_NCM_CAM1_SN_IMBUS_PORT_TAG       0xc
+#define NetXen_HW_TMR_SN_IMBUS_PORT_TAG    0xd
+#define NetXen_HW_CAS_SN_IMBUS_PORT_TAG    0xe
+#define NetXen_HW_NCM_CAM2_SN_IMBUS_PORT_TAG       0xf
+#define NetXen_HW_NCM_CAM3_SN_IMBUS_PORT_TAG       0xf
+#define NetXen_HW_NCM_CAM4_SN_IMBUS_PORT_TAG       0xf
+
+#define NetXen_HW_PEGN_I_SN_IMBUS_PORT_TAG 0x10
+#define NetXen_HW_PEGN_D_SN_IMBUS_PORT_TAG 0x11
+#define NetXen_HW_PEGN_D1_SN_IMBUS_PORT_TAG        0x12
+#define NetXen_HW_MS_PTM_SN_IMBUS_PORT_TAG 0x14
+
+#define NetXen_HW_PEGS_I_SN_IMBUS_PORT_TAG 0x15
+
+/*  defunct */
+#define NetXen_HW_SQGS0_FBQ_SN_IMBUS_PORT_TAG      0x8
+#define NetXen_HW_SQGS1_FBQ_SN_IMBUS_PORT_TAG      0x9
+#define NetXen_HW_SQGS2_FBQ_SN_IMBUS_PORT_TAG      0xa
+#define NetXen_HW_SQGS3_FBQ_SN_IMBUS_PORT_TAG      0xb
+#define NetXen_HW_QMS_SN_IMBUS_PORT_TAG    0x2
+//#define       NetXen_HW_PS_SN_IMBUS_PORT_TAG     0xd
+
+/* ------------------------------------------------------------------------ */
+/*  SS IMBus Port Tag Defines */
+/* ------------------------------------------------------------------------ */
+#define NetXen_HW_QMS_SS_IMBUS_PORT_TAG    0x1
+
+#define NetXen_HW_SQGS0_FBQ_SS_IMBUS_PORT_TAG      0x3
+#define NetXen_HW_SQGS1_FBQ_SS_IMBUS_PORT_TAG      0x4
+#define NetXen_HW_SQGS2_FBQ_SS_IMBUS_PORT_TAG      0x5
+#define NetXen_HW_SQGS3_FBQ_SS_IMBUS_PORT_TAG      0x6
+#define NetXen_HW_PS_SS_IMBUS_PORT_TAG     0x7
+#define NetXen_HW_PH_SS_IMBUS_PORT_TAG     0x8
+#define NetXen_HW_MN_PTM_MS_IMBUS_PORT_TAG 0x7
+
+/* ------------------------------------------------------------------------ */
+/*  NCM IMBus Port Tag Defines */
+/* ------------------------------------------------------------------------ */
+#define NetXen_HW_SRE_CAM_TAG0     0x0
+#define NetXen_HW_SRE_CAM_TAG1     0x1
+#define NetXen_HW_SRE_CAM_TAG2     0x2
+#define NetXen_HW_PH_CAM_TAG       0x3
+#define NetXen_HW_CAS_CAM_TAG      0x4
+#define NetXen_HW_PS_CAM_TAG       0x5
+#define NetXen_HW_PEGN0_CAM_TAG    0x6
+#define NetXen_HW_PEGN1_CAM_TAG    0x7
+#define NetXen_HW_PEGN2_CAM_TAG    0x9
+#define NetXen_HW_PEGN3_CAM_TAG    0xa
+#define NetXen_HW_PEGS0_CAM_TAG    0xb
+#define NetXen_HW_PEGS1_CAM_TAG    0xc
+#define NetXen_HW_PEGS2_CAM_TAG    0xd
+#define NetXen_HW_PEGS3_CAM_TAG    0xe
+
+
+/* ------------------------------------------------------------------------ */
+/*  Network QM IMBus Port Tag Defines */
+/* ------------------------------------------------------------------------ */
+#define NetXen_HW_SRE_PBI_QM_REQ_TAG       0x0
+#define NetXen_HW_SRE_RE1_QM_REQ_TAG       0x1
+#define NetXen_HW_SRE_FLM_QM_REQ_TAG       0x2
+#define NetXen_HW_SRE_RE2_QM_REQ_TAG       0x3
+#define NetXen_HW_EG_QM_REQ_TAG    0x4
+#define NetXen_HW_PEGN0_QM_REQ_TAG 0x5
+#define NetXen_HW_PEGN1_QM_REQ_TAG 0x6
+#define NetXen_HW_PEGN2_QM_REQ_TAG 0x7
+#define NetXen_HW_PEGN3_QM_REQ_TAG 0xE
+#define NetXen_HW_I2Q_QM_REQ_TAG   0x8
+#define NetXen_HW_PS_DMA_QMN_REQ_TAG       0x9
+#define NetXen_HW_PS_QMN_REQ_TAG   0xA
+#define NetXen_HW_XDMA_QMN_REQ_TAG 0xB
+#define NetXen_HW_PCIX_QM_REQ_TAG  0xC
+#define NetXen_HW_CAS_QMN_REQ_TAG  0xD
+#define NetXen_HW_TMR_QMN_REQ_TAG  0xF
+#define NetXen_HW_QMS_QMN_REQ_TAG  0xB
+#define NetXen_HW_C2C0_QM_REQ_TAG  0x9
+
+/* ------------------------------------------------------------------------ */
+/*  Storage QM IMBus Port Tag Defines */
+/* ------------------------------------------------------------------------ */
+#define NetXen_HW_PEGS0_QMS_REQ_TAG        0x0
+#define NetXen_HW_PEGS1_QMS_REQ_TAG        0x1
+#define NetXen_HW_PEGS2_QMS_REQ_TAG        0x2
+#define NetXen_HW_PEGS3_QMS_REQ_TAG        0xf
+/* #define CAS_QMS_REQ_TAG       0x3  - casper uses CAS_QMN_REQ_TAG for both 
QMN & QMS */
+#define NetXen_HW_C2C1_QMS_REQ_TAG 0x4
+#define NetXen_HW_PS_QMS_REQ_TAG   0x5
+#define NetXen_HW_PH_QMS_REQ_TAG   0x6
+#define NetXen_HW_XDMA_QMS_REQ_TAG 0x9
+#define NetXen_HW_CAS_QMS_REQ_TAG  0xA  - casper uses CAS_QMN_REQ_TAG for both 
QMN & QMS
+#define NetXen_HW_QMN_QMS_REQ_TAG  0xE
+
+/* ------------------------------------------------------------------------ */
+/*  OCM0 IMBus Port Tag Defines */
+/* ------------------------------------------------------------------------ */
+#define NetXen_HW_MN_OCM0_PORT_TAG 0x00
+#define NetXen_HW_SN_OCM0_PORT_TAG 0x01
+#define NetXen_HW_P2D0_OCM0_PORT_TAG       0x02
+#define NetXen_HW_P2D1_OCM0_PORT_TAG       0x03
+#define NetXen_HW_XDMA_OCM0_PORT_TAG       0x04
+
+/* ------------------------------------------------------------------------ */
+/*  OCM0 IMBus Port Tag Defines */
+/* ------------------------------------------------------------------------ */
+#define NetXen_HW_MN_OCM1_PORT_TAG 0x00
+#define NetXen_HW_SN_OCM1_PORT_TAG 0x01
+#define NetXen_HW_P2D0_OCM1_PORT_TAG       0x02
+#define NetXen_HW_P2D1_OCM1_PORT_TAG       0x03
+#define NetXen_HW_XDMA_OCM1_PORT_TAG       0x04
+
+/* ------------------------------------------------------------------------ */
+/*  PCIE IMBus Port Tag Defines */
+/* ------------------------------------------------------------------------ */
+#define NetXen_HW_MN_PCIE_IMBUS_PORT_TAG   0x0
+#define NetXen_HW_SN_PCIE_IMBUS_PORT_TAG   0x1
+#define NetXen_HW_P2D0_PCIE_IMBUS_PORT_TAG 0x2
+#define NetXen_HW_P2D1_PCIE_IMBUS_PORT_TAG 0x3
+#define NetXen_HW_CAS_PCIE_IMBUS_PORT_TAG  0x4
+#define NetXen_HW_EPG_PCIE_IMBUS_PORT_TAG  0x4
+
+/* ------------------------------------------------------------------------ */
+/*  SubQueue Number Assignment */
+/* ------------------------------------------------------------------------ */
+
+#define NetXen_HW_SQG0_FBQ0_NUM    0x0
+#define NetXen_HW_SQG0_FBQ1_NUM    0x1
+#define NetXen_HW_SQG0_FBQ2_NUM    0x2
+#define NetXen_HW_SQG0_FBQ3_NUM    0x3
+
+#define NetXen_HW_SQG1_FBQ0_NUM    0x4
+#define NetXen_HW_SQG1_FBQ1_NUM    0x5
+#define NetXen_HW_SQG1_FBQ2_NUM    0x6
+#define NetXen_HW_SQG1_FBQ3_NUM    0x7
+
+#define NetXen_HW_SQG2_FBQ0_NUM    0x8
+#define NetXen_HW_SQG2_FBQ1_NUM    0x9
+#define NetXen_HW_SQG2_FBQ2_NUM    0xA
+#define NetXen_HW_SQG2_FBQ3_NUM    0xB
+
+#define NetXen_HW_SQG3_FBQ0_NUM    0xC
+#define NetXen_HW_SQG3_FBQ1_NUM    0xD
+#define NetXen_HW_SQG3_FBQ2_NUM    0xE
+#define NetXen_HW_SQG3_FBQ3_NUM    0xF
+
+/* ------------------------------------------------------------------------ */
+/*  C2C0 IMBus Port Tag Defines */
+/* ------------------------------------------------------------------------ */
+#define NetXen_HW_XDMA_C2C0_IMBUS_PORT_TAG 0x0
+
+/* ------------------------------------------------------------------------ */
+/*  C2C1 IMBus Port Tag Defines */
+/* ------------------------------------------------------------------------ */
+#define NetXen_HW_XDMA_C2C1_IMBUS_PORT_TAG 0x0
+
+/*  Q SubAgent Field for Locking */
+
+/*   */
+#define NetXen_HW_NPEG0_VPEG0_SUB_AGNT     0x0
+#define NetXen_HW_NPEG0_VPEG1_SUB_AGNT     0x1
+#define NetXen_HW_NPEG1_VPEG0_SUB_AGNT     0x2
+#define NetXen_HW_NPEG1_VPEG1_SUB_AGNT     0x3
+#define NetXen_HW_NPEG2_VPEG0_SUB_AGNT     0x4
+#define NetXen_HW_NPEG2_VPEG1_SUB_AGNT     0x5
+#define NetXen_HW_CAS_SUB_AGNT     0x6
+#define NetXen_HW_PCI_SUB_AGNT     0x7
+#define NetXen_HW_SPEG0_VPEG0_SUB_AGNT     0x8
+#define NetXen_HW_SPEG0_VPEG1_SUB_AGNT     0x9
+#define NetXen_HW_SPEG1_VPEG0_SUB_AGNT     0xa
+#define NetXen_HW_SPEG1_VPEG1_SUB_AGNT     0xb
+#define NetXen_HW_SPEG2_VPEG0_SUB_AGNT     0xc
+#define NetXen_HW_SPEG2_VPEG1_SUB_AGNT     0xd
+
+/*
+ * MAX_RCV_CTX : The number of receive contexts that are available on
+ * the phantom.
+ */
+#define MAX_RCV_CTX            1
+
+#define NetXen_SRE_INT_STATUS        (NetXen_CRB_SRE + 0x00034)
+#define NetXen_SRE_PBI_ACTIVE_STATUS (NetXen_CRB_SRE + 0x01014)
+#define NetXen_SRE_L1RE_CTL          (NetXen_CRB_SRE + 0x03000)
+#define NetXen_SRE_L2RE_CTL          (NetXen_CRB_SRE + 0x05000)
+#define NetXen_SRE_BUF_CTL           (NetXen_CRB_SRE + 0x01000)
+
+#ifdef PCIX
+#define    NetXen_DMA_BASE(U)    (NetXen_CRB_PCIX_HOST + 0x20000 + ((U)<<16))
+#else
+#define    NetXen_DMA_BASE(U)    (NetXen_CRB_PCIX_MD + 0x20000 + ((U)<<16))
+#endif
+#define    NetXen_DMA_COMMAND(U)    (NetXen_DMA_BASE(U) + 0x00008)
+
+#define NetXen_I2Q_CLR_PCI_HI    (NetXen_CRB_I2Q + 0x00034)
+
+#define PEG_NETWORK_BASE(N) (NetXen_CRB_PEG_NET_0 + (((N)&3) << 20))
+#define CRB_REG_EX_PC                   0x3c
+
+#define ROMUSB_GLB        (NetXen_CRB_ROMUSB + 0x00000)
+#define ROMUSB_ROM        (NetXen_CRB_ROMUSB + 0x10000)
+
+#define NetXen_ROMUSB_GLB_STATUS         (ROMUSB_GLB + 0x0004)
+#define NetXen_ROMUSB_GLB_SW_RESET       (ROMUSB_GLB + 0x0008)
+#define NetXen_ROMUSB_GLB_PAD_GPIO_I     (ROMUSB_GLB + 0x000c)
+#define NetXen_ROMUSB_GLB_CAS_RST        (ROMUSB_GLB + 0x0038)
+#define NetXen_ROMUSB_GLB_TEST_MUX_SEL   (ROMUSB_GLB + 0x0044)
+
+#define NetXen_ROMUSB_GPIO(n) (ROMUSB_GLB + 0x60 + (4 * (n)))
+
+#define NetXen_ROMUSB_ROM_INSTR_OPCODE   (ROMUSB_ROM + 0x0004)
+#define NetXen_ROMUSB_ROM_ADDRESS        (ROMUSB_ROM + 0x0008)
+#define NetXen_ROMUSB_ROM_ABYTE_CNT      (ROMUSB_ROM + 0x0010)
+#define NetXen_ROMUSB_ROM_DUMMY_BYTE_CNT (ROMUSB_ROM + 0x0014)
+#define NetXen_ROMUSB_ROM_RDATA          (ROMUSB_ROM + 0x0018)
+
+#define NetXen_PCI_CRB_WINDOWSIZE    0x00100000    /* all are 1MB windows */
+#define NetXen_PCI_CRB_WINDOW(A)    (NetXen_PCI_CRBSPACE + 
(A)*NetXen_PCI_CRB_WINDOWSIZE)
+
+#define NetXen_CRB_NIU        NetXen_PCI_CRB_WINDOW(NetXen_HW_PX_MAP_CRB_NIU)
+#define NetXen_CRB_SRE        NetXen_PCI_CRB_WINDOW(NetXen_HW_PX_MAP_CRB_SRE)
+#define NetXen_CRB_ROMUSB     
NetXen_PCI_CRB_WINDOW(NetXen_HW_PX_MAP_CRB_ROMUSB)
+#define NetXen_CRB_I2Q        NetXen_PCI_CRB_WINDOW(NetXen_HW_PX_MAP_CRB_I2Q)
+#define NetXen_CRB_MAX        NetXen_PCI_CRB_WINDOW(64)
+
+#define NetXen_CRB_PCIX_HOST  NetXen_PCI_CRB_WINDOW(NetXen_HW_PX_MAP_CRB_PH)
+#define NetXen_CRB_PCIX_HOST2 NetXen_PCI_CRB_WINDOW(NetXen_HW_PX_MAP_CRB_PH2)
+#define NetXen_CRB_PEG_NET_0  NetXen_PCI_CRB_WINDOW(NetXen_HW_PX_MAP_CRB_PGN0)
+#define NetXen_CRB_PEG_NET_1  NetXen_PCI_CRB_WINDOW(NetXen_HW_PX_MAP_CRB_PGN1)
+#define NetXen_CRB_PEG_NET_2  NetXen_PCI_CRB_WINDOW(NetXen_HW_PX_MAP_CRB_PGN2)
+#define NetXen_CRB_PEG_NET_3  NetXen_PCI_CRB_WINDOW(NetXen_HW_PX_MAP_CRB_PGN3)
+#define NetXen_CRB_PEG_NET_D  NetXen_PCI_CRB_WINDOW(NetXen_HW_PX_MAP_CRB_PGND)
+#define NetXen_CRB_PEG_NET_I  NetXen_PCI_CRB_WINDOW(NetXen_HW_PX_MAP_CRB_PGNI)
+#define NetXen_CRB_DDR_NET    NetXen_PCI_CRB_WINDOW(NetXen_HW_PX_MAP_CRB_MN)
+
+#define NetXen_CRB_PCIX_MD    NetXen_PCI_CRB_WINDOW(NetXen_HW_PX_MAP_CRB_PS)
+#define NetXen_CRB_PCIE       NetXen_CRB_PCIX_MD
+
+#define ISR_INT_VECTOR          (NetXen_PCIX_PS_REG(PCIX_INT_VECTOR))
+#define ISR_INT_MASK            (NetXen_PCIX_PS_REG(PCIX_INT_MASK))
+#define ISR_INT_MASK_SLOW       (NetXen_PCIX_PS_REG(PCIX_INT_MASK))
+#define ISR_INT_TARGET_STATUS   (NetXen_PCIX_PS_REG(PCIX_TARGET_STATUS))
+#define ISR_INT_TARGET_MASK     (NetXen_PCIX_PS_REG(PCIX_TARGET_MASK))
+
+#define NetXen_PCI_MAPSIZE    128    /* we're mapping 128MB of mem on the PCI 
bus */
+#define NetXen_PCI_DDR_NET        (unsigned long)0x00000000
+#define NetXen_PCI_DDR_NET_MAX    (unsigned long)0x01ffffff
+#define NetXen_PCI_QDR_NET        (unsigned long)0x04000000
+#define NetXen_PCI_QDR_NET_MAX    (unsigned long)0x043fffff
+#define NetXen_PCI_DIRECT_CRB     (unsigned long)0x04400000
+#define NetXen_PCI_DIRECT_CRB_MAX (unsigned long)0x047fffff
+#define NetXen_PCI_CAMQM_MAX      (unsigned long)0x04ffffff
+#define NetXen_PCI_OCM0           (unsigned long)0x05000000
+#define NetXen_PCI_OCM0_MAX       (unsigned long)0x050fffff
+#define NetXen_PCI_OCM1           (unsigned long)0x05100000
+#define NetXen_PCI_OCM1_MAX       (unsigned long)0x051fffff
+#define NetXen_PCI_CRBSPACE       (unsigned long)0x06000000
+
+#define NetXen_CRB_CAM        NetXen_PCI_CRB_WINDOW(NetXen_HW_PX_MAP_CRB_CAM)
+
+#define NetXen_ADDR_DDR_NET     (0x0000000000000000ULL)
+#define NetXen_ADDR_DDR_NET_MAX (0x000000000fffffffULL)
+#define NetXen_ADDR_OCM0        (0x0000000200000000ULL)
+#define NetXen_ADDR_OCM0_MAX    (0x00000002000fffffULL)
+#define NetXen_ADDR_OCM1        (0x0000000200400000ULL)
+#define NetXen_ADDR_OCM1_MAX    (0x00000002004fffffULL)
+#define NetXen_ADDR_QDR_NET     (0x0000000300000000ULL)
+#define NetXen_ADDR_QDR_NET_MAX (0x00000003003fffffULL)
+
+int netxen_crb_read(unsigned long off, void *data);
+native_t netxen_crb_read_val(unsigned long off);
+int netxen_crb_write(unsigned long off, void *data);
+int netxen_crb_writelit(unsigned long off, int data);
+int netxen_imb_read(unsigned long off, void *data);
+int netxen_imb_write(unsigned long off, void *data);
+int netxen_imb_writelit64(unsigned long off, __uint64_t data);
+int netxen_data_read(unsigned long long off, void *data);
+int netxen_data_write(unsigned long long off, void *data);
+int netxen_data_writelit64(unsigned long long off, __uint64_t data);
+int netxen_db_write(unsigned long long off, int size, void *data);
+unsigned long netxen_xport_lock(void);
+void netxen_xport_unlock(unsigned long);
+
+#define NetXen_CRB_READ_VAL(ADDR) netxen_crb_read_val((ADDR))
+#define NetXen_CRB_READ(ADDR,VALUE) netxen_crb_read((ADDR),(netxen_crbword_t 
*)(VALUE))
+#define NetXen_CRB_READ_CHECK(ADDR, VALUE)                                 \
+        do {                                                            \
+            if (netxen_crb_read(ADDR, VALUE))              return -1;      \
+        } while(0)
+#define NetXen_CRB_WRITE_CHECK(ADDR, VALUE)                                \
+        do {                                                            \
+            if (netxen_crb_write(ADDR, VALUE))             return -1;      \
+        } while(0)
+#define NetXen_CRB_WRITELIT(ADDR, VALUE)                           \
+        do {                                                            \
+            netxen_crb_writelit(ADDR, VALUE);      \
+        } while(0)
+#define NetXen_CRB_WRITE(ADDR, VALUE)                              \
+        do {                                                            \
+            netxen_crb_write(ADDR, VALUE); \
+        } while(0)
+#define NetXen_CRB_WRITELIT_CHECK(ADDR, VALUE)                             \
+        do {                                                            \
+            if (netxen_crb_writelit(ADDR, VALUE))          return -1;      \
+        } while(0)
+#define NetXen_CRB_READ_PANIC(ADDR, VALUE, ERRSTR)                         \
+        do {                                                            \
+            if (netxen_crb_read(ADDR, VALUE))              panic(ERRSTR);  \
+        } while(0)
+#define NetXen_CRB_WRITE_PANIC(ADDR, VALUE, ERRSTR)                        \
+        do {                                                            \
+            if (netxen_crb_write(ADDR, VALUE))             panic(ERRSTR);  \
+        } while(0)
+#define NetXen_CRB_WRITELIT_PANIC(ADDR, VALUE, ERRSTR)                     \
+        do {                                                            \
+            if (netxen_crb_writelit(ADDR, VALUE))          panic(ERRSTR);  \
+        } while(0)
+#define NetXen_IMB_READ_CHECK(ADDR, VALUE)                                 \
+        do {                                                            \
+            if (netxen_imb_read(ADDR, VALUE))              return -1;      \
+        } while(0)
+#define NetXen_IMB_WRITE_CHECK(ADDR, VALUE)                                \
+        do {                                                            \
+            if (netxen_imb_write(ADDR, VALUE))             return -1;      \
+        } while(0)
+#define NetXen_IMB_WRITELIT_CHECK(ADDR, VALUE)                             \
+        do {                                                            \
+            if (netxen_imb_writelit64(ADDR, VALUE))        return -1;      \
+        } while(0)
+#define NetXen_IMB_READ_PANIC(ADDR, VALUE, ERRSTR)                         \
+        do {                                                            \
+            if (netxen_imb_read(ADDR, VALUE))              panic(ERRSTR);  \
+        } while(0)
+#define NetXen_IMB_WRITE_PANIC(ADDR, VALUE, ERRSTR)                        \
+        do {                                                            \
+            if (netxen_imb_write(ADDR, VALUE))             panic(ERRSTR);  \
+        } while(0)
+#define NetXen_IMB_WRITELIT_PANIC(ADDR, VALUE, ERRSTR)                     \
+        do {                                                            \
+            if (netxen_imb_writelit64(ADDR, VALUE))        panic(ERRSTR);  \
+        } while(0)
+#define NetXen_DATA_READ_CHECK(ADDR, VALUE)                                \
+        do {                                                            \
+            if (netxen_data_read(ADDR, VALUE))             return -1;      \
+        } while(0)
+#define NetXen_DATA_WRITE_CHECK(ADDR, VALUE)                               \
+        do {                                                            \
+            if (netxen_data_write(ADDR, VALUE))            return -1;      \
+        } while(0)
+#define NetXen_DATA_WRITELIT_CHECK(ADDR, VALUE)                            \
+        do {                                                            \
+            if (netxen_data_writelit64(ADDR, VALUE))       return -1;      \
+        } while(0)
+#define NetXen_DATA_READ_PANIC(ADDR, VALUE, ERRSTR)                        \
+        do {                                                            \
+            if (netxen_data_read(ADDR, VALUE))             panic(ERRSTR);  \
+        } while(0)
+#define NetXen_DATA_WRITE_PANIC(ADDR, VALUE, ERRSTR)                       \
+        do {                                                            \
+            if (netxen_data_write(ADDR, VALUE))            panic(ERRSTR);  \
+        } while(0)
+#define NetXen_DATA_WRITELIT_PANIC(ADDR, VALUE, ERRSTR)                    \
+        do {                                                            \
+            if (netxen_data_writelit64(ADDR, VALUE))       panic(ERRSTR);  \
+        } while(0)
+
+typedef __uint8_t netxen_ethernet_macaddr_t[6];
+
+/* Nibble or Byte mode for phy interface (GbE mode only) */
+typedef enum {
+    NetXen_NIU_10_100_MB = 0,
+    NetXen_NIU_1000_MB
+} netxen_niu_gbe_ifmode_t;
+
+/*
+ * NIU GB MAC Config Register 0 (applies to GB0, GB1, GB2, GB3)
+ */
+typedef struct {
+    netxen_crbword_t
+        tx_enable:1,    /* 1:enable frame xmit, 0:disable */
+        tx_synched:1,    /* R/O: xmit enable synched to xmit stream */
+        rx_enable:1,    /* 1:enable frame recv, 0:disable */
+        rx_synched:1,    /* R/O: recv enable synched to recv stream */
+        tx_flowctl:1,    /* 1:enable pause frame generation, 0:disable */
+        rx_flowctl:1,    /* 1:act on recv'd pause frames, 0:ignore */
+        rsvd1:2,
+        loopback:1,    /* 1:loop MAC xmits to MAC recvs, 0:normal */
+        rsvd2:7,
+        tx_reset_pb:1,    /* 1:reset frame xmit protocol blk, 0:no-op */
+        rx_reset_pb:1,    /* 1:reset frame recv protocol blk, 0:no-op */
+        tx_reset_mac:1,    /* 1:reset data/ctl multiplexer blk, 0:no-op */
+        rx_reset_mac:1,    /* 1:reset ctl frames & timers blk, 0:no-op */
+        rsvd3:11,
+        soft_reset:1;    /* 1:reset the MAC and the SERDES, 0:no-op */
+} netxen_niu_gb_mac_config_0_t;
+
+/*
+ * NIU GB MAC Config Register 1 (applies to GB0, GB1, GB2, GB3)
+ */
+typedef struct {
+    netxen_crbword_t
+        duplex:1,    /* 1:full duplex mode, 0:half duplex */
+        crc_enable:1,    /* 1:append CRC to xmit frames, 0:dont append */
+        padshort:1,    /* 1:pad short frames and add CRC, 0:dont pad */
+        rsvd1:1,
+        checklength:1,    /* 1:check framelen with actual, 0:dont check */
+        hugeframes:1,    /* 1:allow oversize xmit frames, 0:dont allow */
+        rsvd2:2,
+        intfmode:2,    /* 01:nibble (10/100), 10:byte (1000) */
+        rsvd3:2,
+        preamblelen:4,    /* preamble field length in bytes, default 7 */
+        rsvd4:16;
+} netxen_niu_gb_mac_config_1_t;
+
+/*
+ * NIU GB GMII Mode Register (applies to GB0, GB1, GB2, GB3)
+ * To change the mode, turn off the existing mode, then turn on the new mode.
+ */
+typedef struct {
+    netxen_crbword_t
+        gmiimode:1,    /* 1:GMII mode, 0:xmit clk taken from SERDES */
+        rsvd:29;
+} netxen_niu_gb_gmii_mode_t;
+
+/*
+ * NIU GB MII Mode Register (applies to GB0, GB1, GB2, GB3)
+ * To change the mode, turn off the existing mode, then turn on the new mode.
+ */
+typedef struct {
+    netxen_crbword_t
+        miimode:1,    /* 1:MII mode, 0:xmit clk provided to SERDES */
+        rsvd:29;
+} netxen_niu_gb_mii_mode_t;
+
+/*
+ * NIU GB Station Address High Register
+ * NOTE: this value is in network byte order.
+ */
+typedef struct {
+    netxen_crbword_t
+        address:32;    /* station address [47:16] */
+} netxen_niu_gb_station_address_high_t;
+
+/*
+ * NIU GB Station Address Low Register
+ * NOTE: this value is in network byte order.
+ */
+typedef struct {
+    netxen_crbword_t
+        rsvd:16,
+        address:16;    /* station address [15:0] */
+} netxen_niu_gb_station_address_low_t;
+
+/*
+ * NIU GB MII Mgmt Config Register (applies to GB0, GB1, GB2, GB3)
+ */
+typedef struct {
+    netxen_crbword_t
+        clockselect:3,    /* 0:clk/4,  1:clk/4,  2:clk/6,  3:clk/8 */
+                /* 4:clk/10, 5:clk/14, 6:clk/20, 7:clk/28 */
+        rsvd1:1,
+        nopreamble:1,    /* 1:suppress preamble generation, 0:normal */
+        scanauto:1,    /* ???? */
+        rsvd2:25,
+        reset:1;    /* 1:reset MII mgmt, 0:no-op */
+} netxen_niu_gb_mii_mgmt_config_t;
+
+/*
+ * NIU GB MII Mgmt Command Register (applies to GB0, GB1, GB2, GB3)
+ */
+typedef struct {
+    netxen_crbword_t
+        read_cycle:1,    /* 1:perform single read cycle, 0:no-op */
+        scan_cycle:1,    /* 1:perform continuous read cycles, 0:no-op */
+        rsvd:30;
+} netxen_niu_gb_mii_mgmt_command_t;
+
+/*
+ * NIU GB MII Mgmt Address Register (applies to GB0, GB1, GB2, GB3)
+ */
+typedef struct {
+    netxen_crbword_t
+        reg_addr:5,    /* which mgmt register we want to talk to */
+        rsvd1:3,
+        phy_addr:5,    /* which PHY to talk to (0 is reserved) */
+        rsvd:19;
+} netxen_niu_gb_mii_mgmt_address_t;
+
+/*
+ * NIU GB MII Mgmt Control Register (applies to GB0, GB1, GB2, GB3)
+ * Write-only register.
+ */
+typedef struct {
+    netxen_crbword_t
+        data:16,    /* do MII mgmt write cycle with this data */
+        rsvd:16;
+} netxen_niu_gb_mii_mgmt_control_t;
+
+/*
+ * NIU GB MII Mgmt Status Register (applies to GB0, GB1, GB2, GB3)
+ * Read-only register.
+ */
+typedef struct {
+    netxen_crbword_t
+        data:16,    /* after MII mgmt read cycle, here's the data */
+        rsvd:16;
+} netxen_niu_gb_mii_mgmt_status_t;
+
+/*
+ * NIU GB MII Mgmt Indicators Register (applies to GB0, GB1, GB2, GB3)
+ * Read-only register.
+ */
+typedef struct {
+    netxen_crbword_t
+        busy:1,        /* 1:performing an MII mgmt cycle, 0:idle */
+        scanning:1,    /* 1:scan operation in progress, 0:idle */
+        notvalid:1,    /* 1:mgmt result data not yet valid, 0:idle */
+        rsvd:29;
+} netxen_niu_gb_mii_mgmt_indicators_t;
+
+/*
+ * PHY-Specific MII control/status registers.
+ */
+typedef enum {
+    NetXen_NIU_GB_MII_MGMT_ADDR_CONTROL = 0,
+    NetXen_NIU_GB_MII_MGMT_ADDR_STATUS = 1,
+    NetXen_NIU_GB_MII_MGMT_ADDR_PHY_ID_0 = 2,
+    NetXen_NIU_GB_MII_MGMT_ADDR_PHY_ID_1 = 3,
+    NetXen_NIU_GB_MII_MGMT_ADDR_AUTONEG = 4,
+    NetXen_NIU_GB_MII_MGMT_ADDR_LNKPART = 5,
+    NetXen_NIU_GB_MII_MGMT_ADDR_AUTONEG_MORE = 6,
+    NetXen_NIU_GB_MII_MGMT_ADDR_NEXTPAGE_XMIT = 7,
+    NetXen_NIU_GB_MII_MGMT_ADDR_LNKPART_NEXTPAGE = 8,
+    NetXen_NIU_GB_MII_MGMT_ADDR_1000BT_CONTROL = 9,
+    NetXen_NIU_GB_MII_MGMT_ADDR_1000BT_STATUS = 10,
+    NetXen_NIU_GB_MII_MGMT_ADDR_EXTENDED_STATUS = 15,
+    NetXen_NIU_GB_MII_MGMT_ADDR_PHY_CONTROL = 16,
+    NetXen_NIU_GB_MII_MGMT_ADDR_PHY_STATUS = 17,
+    NetXen_NIU_GB_MII_MGMT_ADDR_INT_ENABLE = 18,
+    NetXen_NIU_GB_MII_MGMT_ADDR_INT_STATUS = 19,
+    NetXen_NIU_GB_MII_MGMT_ADDR_PHY_CONTROL_MORE = 20,
+    NetXen_NIU_GB_MII_MGMT_ADDR_RECV_ERROR_COUNT = 21,
+    NetXen_NIU_GB_MII_MGMT_ADDR_LED_CONTROL = 24,
+    NetXen_NIU_GB_MII_MGMT_ADDR_LED_OVERRIDE = 25,
+    NetXen_NIU_GB_MII_MGMT_ADDR_PHY_CONTROL_MORE_YET = 26,
+    NetXen_NIU_GB_MII_MGMT_ADDR_PHY_STATUS_MORE = 27
+} netxen_niu_phy_register_t;
+
+/*
+ * PHY-Specific Status Register (reg 17).
+ */
+typedef struct {
+    netxen_crbword_t
+        jabber:1,    /* 1:jabber detected, 0:not */
+        polarity:1,    /* 1:polarity reversed, 0:normal */
+        recvpause:1,    /* 1:receive pause enabled, 0:disabled */
+        xmitpause:1,    /* 1:transmit pause enabled, 0:disabled */
+        energydetect:1,    /* 1:sleep, 0:active */
+        downshift:1,    /* 1:downshift, 0:no downshift */
+        crossover:1,    /* 1:MDIX (crossover), 0:MDI (no crossover) */
+        cablelen:3,    /* not valid in 10Mb/s mode */
+            /* 0:<50m, 1:50-80m, 2:80-110m, 3:110-140m, 4:>140m */
+        link:1,        /* 1:link up, 0:link down */
+        resolved:1,    /* 1:speed and duplex resolved, 0:not yet */
+        pagercvd:1,    /* 1:page received, 0:page not received */
+        duplex:1,    /* 1:full duplex, 0:half duplex */
+        speed:2,    /* 0:10Mb/s, 1:100Mb/s, 2:1000Mb/s, 3:rsvd */
+        rsvd:16;
+} netxen_niu_phy_status_t;
+
+/*
+ * Interrupt Register definition
+ * This definition applies to registers 18 and 19 (int enable and int status).
+ */
+typedef struct {
+    netxen_crbword_t
+        jabber:1,
+        polarity_changed:1,
+        reserved:2,
+        energy_detect:1,
+        downshift:1,
+        mdi_xover_changed:1,
+        fifo_over_underflow:1,
+        false_carrier:1,
+        symbol_error:1,
+        link_status_changed:1,
+        autoneg_completed:1,
+        page_received:1,
+        duplex_changed:1,
+        speed_changed:1,
+        autoneg_error:1,
+        rsvd:16;
+} netxen_niu_phy_interrupt_t;
+
+/*
+ * NIU Mode Register.
+ */
+typedef struct {
+    netxen_crbword_t
+        enable_fc:1,    /* enable FibreChannel */
+        enable_ge:1,    /* enable 10/100/1000 Ethernet */
+        enable_xgb:1,    /* enable 10Gb Ethernet */
+        rsvd:29;
+} netxen_niu_control_t;
+
+/* Promiscous mode options (GbE mode only) */
+typedef enum {
+    NetXen_NIU_PROMISCOUS_MODE = 0,
+    NetXen_NIU_NON_PROMISCOUS_MODE
+} netxen_niu_prom_mode_t;
+
+/*
+ * NIU GB Drop CRC Register
+ */
+typedef struct {
+    netxen_crbword_t
+        drop_gb0:1,    /* 1:drop pkts with bad CRCs, 0:pass them on */
+        drop_gb1:1,    /* 1:drop pkts with bad CRCs, 0:pass them on */
+        drop_gb2:1,    /* 1:drop pkts with bad CRCs, 0:pass them on */
+        drop_gb3:1,    /* 1:drop pkts with bad CRCs, 0:pass them on */
+        rsvd:28;
+} netxen_niu_gb_drop_crc_t;
+
+/*
+ * NIU XG MAC Config Register
+ */
+typedef struct {
+    netxen_crbword_t
+        tx_enable:1,    /* 1:enable frame xmit, 0:disable */
+        rsvd1:1,
+        rx_enable:1,    /* 1:enable frame recv, 0:disable */
+        rsvd2:1,
+        soft_reset:1,    /* 1:reset the MAC , 0:no-op */
+        rsvd3:22,
+        xaui_framer_reset:1,
+        xaui_rx_reset:1,
+        xaui_tx_reset:1,
+        xg_ingress_afifo_reset:1,
+        xg_egress_afifo_reset:1;
+} netxen_niu_xg_mac_config_0_t;
+
+/* Generic init routine (used for FPGA, superceded by port enables below) */
+void netxen_niu_init(int test);
+
+/* Set promiscuous mode for a GbE interface */
+native_t netxen_niu_set_promiscuous_mode(native_t port, netxen_niu_prom_mode_t 
mode);
+native_t netxen_niu_xg_set_promiscuous_mode(native_t port, 
netxen_niu_prom_mode_t mode);
+
+/* get/set the MAC address for a given MAC */
+int netxen_niu_macaddr_get(int port, netxen_ethernet_macaddr_t *addr);
+int netxen_niu_macaddr_set(int port, netxen_ethernet_macaddr_t addr);
+
+/* XG versons */
+int netxen_niu_xg_macaddr_get(int port, netxen_ethernet_macaddr_t *addr);
+int netxen_niu_xg_macaddr_set(int port, netxen_ethernet_macaddr_t addr);
+
+/* Generic enable for GbE ports. Will detect the speed of the link. */
+long netxen_niu_gbe_init_port(long port);
+
+/* Disable a GbE interface */
+native_t netxen_niu_disable_gbe_port(native_t port);
+
+native_t netxen_niu_disable_xg_port(native_t port);
+
+#define    NetXen_NIU_PHY_WAITLEN    200000    /* 200ms delay in each loop */
+#define    NetXen_NIU_PHY_WAITMAX    50    /* 10 seconds before we give up */
+#define    NetXen_NIU_MAX_GBE_PORTS  4
+
+#define    NetXen_NIU_MODE            (NetXen_CRB_NIU + 0x00000)
+
+#define    NetXen_NIU_XG_SINGLE_TERM     (NetXen_CRB_NIU + 0x00004)
+#define    NetXen_NIU_XG_DRIVE_HI        (NetXen_CRB_NIU + 0x00008)
+#define    NetXen_NIU_XG_DRIVE_LO        (NetXen_CRB_NIU + 0x0000c)
+#define    NetXen_NIU_XG_DTX             (NetXen_CRB_NIU + 0x00010)
+#define    NetXen_NIU_XG_DEQ             (NetXen_CRB_NIU + 0x00014)
+#define    NetXen_NIU_XG_WORD_ALIGN      (NetXen_CRB_NIU + 0x00018)
+#define    NetXen_NIU_XG_RESET           (NetXen_CRB_NIU + 0x0001c)
+#define    NetXen_NIU_XG_POWER_DOWN      (NetXen_CRB_NIU + 0x00020)
+#define    NetXen_NIU_XG_RESET_PLL       (NetXen_CRB_NIU + 0x00024)
+#define    NetXen_NIU_XG_SERDES_LOOPBACK (NetXen_CRB_NIU + 0x00028)
+#define    NetXen_NIU_XG_DO_BYTE_ALIGN   (NetXen_CRB_NIU + 0x0002c)
+#define    NetXen_NIU_XG_TX_ENABLE       (NetXen_CRB_NIU + 0x00030)
+#define    NetXen_NIU_XG_RX_ENABLE       (NetXen_CRB_NIU + 0x00034)
+#define    NetXen_NIU_XG_STATUS          (NetXen_CRB_NIU + 0x00038)
+#define    NetXen_NIU_XG_PAUSE_THRESHOLD (NetXen_CRB_NIU + 0x0003c)
+#define    NetXen_NIU_INT_MASK           (NetXen_CRB_NIU + 0x00040)
+#define    NetXen_NIU_ACTIVE_INT         (NetXen_CRB_NIU + 0x00044)
+#define    NetXen_NIU_MASKABLE_INT       (NetXen_CRB_NIU + 0x00048)
+
+#define NetXen_NIU_STRAP_VALUE_SAVE_HIGHER (NetXen_CRB_NIU + 0x0004c)
+
+#define    NetXen_NIU_GB_SERDES_RESET (NetXen_CRB_NIU + 0x00050)
+#define    NetXen_NIU_GB0_GMII_MODE   (NetXen_CRB_NIU + 0x00054)
+#define    NetXen_NIU_GB0_MII_MODE    (NetXen_CRB_NIU + 0x00058)
+#define    NetXen_NIU_GB1_GMII_MODE   (NetXen_CRB_NIU + 0x0005c)
+#define    NetXen_NIU_GB1_MII_MODE    (NetXen_CRB_NIU + 0x00060)
+#define    NetXen_NIU_GB2_GMII_MODE   (NetXen_CRB_NIU + 0x00064)
+#define    NetXen_NIU_GB2_MII_MODE    (NetXen_CRB_NIU + 0x00068)
+#define    NetXen_NIU_GB3_GMII_MODE   (NetXen_CRB_NIU + 0x0006c)
+#define    NetXen_NIU_GB3_MII_MODE    (NetXen_CRB_NIU + 0x00070)
+#define    NetXen_NIU_REMOTE_LOOPBACK (NetXen_CRB_NIU + 0x00074)
+#define    NetXen_NIU_GB0_HALF_DUPLEX (NetXen_CRB_NIU + 0x00078)
+#define    NetXen_NIU_GB1_HALF_DUPLEX (NetXen_CRB_NIU + 0x0007c)
+#define    NetXen_NIU_RESET_SYS_FIFOS (NetXen_CRB_NIU + 0x00088)
+#define    NetXen_NIU_GB_CRC_DROP     (NetXen_CRB_NIU + 0x0008c)
+#define    NetXen_NIU_GB_DROP_WRONGADDR  (NetXen_CRB_NIU + 0x00090)
+#define    NetXen_NIU_TEST_MUX_CTL    (NetXen_CRB_NIU + 0x00094)
+#define    NetXen_NIU_XG_PAUSE_CTL    (NetXen_CRB_NIU + 0x00098)
+#define    NetXen_NIU_XG_PAUSE_LEVEL  (NetXen_CRB_NIU + 0x000dc)
+#define    NetXen_NIU_XG_SEL          (NetXen_CRB_NIU + 0x00128)
+
+#define    NetXen_NIU_FC_RX_STATUS(I)         (NetXen_CRB_NIU + 0x10000 + 
(I)*0x10000)
+#define    NetXen_NIU_FC_RX_COMMA_DETECT(I)   (NetXen_CRB_NIU + 0x10004 + 
(I)*0x10000)
+#define    NetXen_NIU_FC_LASER_UNSAFE(I)      (NetXen_CRB_NIU + 0x10008 + 
(I)*0x10000)
+#define    NetXen_NIU_FC_TX_CONTROL(I)        (NetXen_CRB_NIU + 0x1000c + 
(I)*0x10000)
+#define    NetXen_NIU_FC_ON_OFFLINE_CTL(I)    (NetXen_CRB_NIU + 0x10010 + 
(I)*0x10000)
+#define    NetXen_NIU_FC_PORT_ACTIVE_STAT(I)  (NetXen_CRB_NIU + 0x10014 + 
(I)*0x10000)
+#define    NetXen_NIU_FC_PORT_INACTIVE_STAT(I)(NetXen_CRB_NIU + 0x10018 + 
(I)*0x10000)
+#define    NetXen_NIU_FC_LINK_FAILURE_CNT(I)  (NetXen_CRB_NIU + 0x1001c + 
(I)*0x10000)
+#define    NetXen_NIU_FC_LOSS_SYNC_CNT(I)     (NetXen_CRB_NIU + 0x10020 + 
(I)*0x10000)
+#define    NetXen_NIU_FC_LOSS_SIGNAL_CNT(I)   (NetXen_CRB_NIU + 0x10024 + 
(I)*0x10000)
+#define    NetXen_NIU_FC_PRIM_SEQ_ERR_CNT(I)  (NetXen_CRB_NIU + 0x10028 + 
(I)*0x10000)
+#define    NetXen_NIU_FC_INVLD_TX_WORD_CNT(I) (NetXen_CRB_NIU + 0x1002c + 
(I)*0x10000)
+#define    NetXen_NIU_FC_INVLD_CRC_CNT(I)     (NetXen_CRB_NIU + 0x10030 + 
(I)*0x10000)
+#define    NetXen_NIU_FC_RX_CELL_CNT(I)       (NetXen_CRB_NIU + 0x10034 + 
(I)*0x10000)
+#define    NetXen_NIU_FC_TX_CELL_CNT(I)       (NetXen_CRB_NIU + 0x10038 + 
(I)*0x10000)
+#define    NetXen_NIU_FC_B2B_CREDIT(I)        (NetXen_CRB_NIU + 0x1003c + 
(I)*0x10000)
+#define    NetXen_NIU_FC_LOGIN_DONE(I)        (NetXen_CRB_NIU + 0x10040 + 
(I)*0x10000)
+#define    NetXen_NIU_FC_OPERATING_SPEED(I)   (NetXen_CRB_NIU + 0x10044 + 
(I)*0x10000)
+
+#define    NetXen_NIU_GB_MAC_CONFIG_0(I)      (NetXen_CRB_NIU + 0x30000 + 
(I)*0x10000)
+#define    NetXen_NIU_GB_MAC_CONFIG_1(I)      (NetXen_CRB_NIU + 0x30004 + 
(I)*0x10000)
+#define    NetXen_NIU_GB_MAC_IPG_IFG(I)       (NetXen_CRB_NIU + 0x30008 + 
(I)*0x10000)
+#define    NetXen_NIU_GB_HALF_DUPLEX_CTRL(I)  (NetXen_CRB_NIU + 0x3000c + 
(I)*0x10000)
+#define    NetXen_NIU_GB_MAX_FRAME_SIZE(I)    (NetXen_CRB_NIU + 0x30010 + 
(I)*0x10000)
+#define    NetXen_NIU_GB_TEST_REG(I)          (NetXen_CRB_NIU + 0x3001c + 
(I)*0x10000)
+#define    NetXen_NIU_GB_MII_MGMT_CONFIG(I)   (NetXen_CRB_NIU + 0x30020 + 
(I)*0x10000)
+#define    NetXen_NIU_GB_MII_MGMT_COMMAND(I)  (NetXen_CRB_NIU + 0x30024 + 
(I)*0x10000)
+#define    NetXen_NIU_GB_MII_MGMT_ADDR(I)     (NetXen_CRB_NIU + 0x30028 + 
(I)*0x10000)
+#define    NetXen_NIU_GB_MII_MGMT_CTRL(I)     (NetXen_CRB_NIU + 0x3002c + 
(I)*0x10000)
+#define    NetXen_NIU_GB_MII_MGMT_STATUS(I)   (NetXen_CRB_NIU + 0x30030 + 
(I)*0x10000)
+#define    NetXen_NIU_GB_MII_MGMT_INDICATE(I) (NetXen_CRB_NIU + 0x30034 + 
(I)*0x10000)
+#define    NetXen_NIU_GB_INTERFACE_CTRL(I)    (NetXen_CRB_NIU + 0x30038 + 
(I)*0x10000)
+#define    NetXen_NIU_GB_INTERFACE_STATUS(I)  (NetXen_CRB_NIU + 0x3003c + 
(I)*0x10000)
+#define    NetXen_NIU_GB_STATION_ADDR_0(I)    (NetXen_CRB_NIU + 0x30040 + 
(I)*0x10000)
+#define    NetXen_NIU_GB_STATION_ADDR_1(I)    (NetXen_CRB_NIU + 0x30044 + 
(I)*0x10000)
+
+
+#define    NetXen_NIU_XGE_CONFIG_0            (NetXen_CRB_NIU + 0x70000)
+#define    NetXen_NIU_XGE_CONFIG_1            (NetXen_CRB_NIU + 0x70004)
+#define    NetXen_NIU_XGE_IPG                 (NetXen_CRB_NIU + 0x70008)
+#define    NetXen_NIU_XGE_STATION_ADDR_0_HI   (NetXen_CRB_NIU + 0x7000c)
+#define    NetXen_NIU_XGE_STATION_ADDR_0_1    (NetXen_CRB_NIU + 0x70010)
+#define    NetXen_NIU_XGE_STATION_ADDR_1_LO   (NetXen_CRB_NIU + 0x70014)
+#define    NetXen_NIU_XGE_STATUS              (NetXen_CRB_NIU + 0x70018)
+#define    NetXen_NIU_XGE_MAX_FRAME_SIZE      (NetXen_CRB_NIU + 0x7001c)
+#define    NetXen_NIU_XGE_PAUSE_FRAME_VALUE   (NetXen_CRB_NIU + 0x70020)
+#define    NetXen_NIU_XGE_TX_BYTE_CNT         (NetXen_CRB_NIU + 0x70024)
+#define    NetXen_NIU_XGE_TX_FRAME_CNT        (NetXen_CRB_NIU + 0x70028)
+#define    NetXen_NIU_XGE_RX_BYTE_CNT         (NetXen_CRB_NIU + 0x7002c)
+#define    NetXen_NIU_XGE_RX_FRAME_CNT        (NetXen_CRB_NIU + 0x70030)
+#define    NetXen_NIU_XGE_AGGR_ERROR_CNT      (NetXen_CRB_NIU + 0x70034)
+#define    NetXen_NIU_XGE_MULTICAST_FRAME_CNT (NetXen_CRB_NIU + 0x70038)
+#define    NetXen_NIU_XGE_UNICAST_FRAME_CNT   (NetXen_CRB_NIU + 0x7003c)
+#define    NetXen_NIU_XGE_CRC_ERROR_CNT       (NetXen_CRB_NIU + 0x70040)
+#define    NetXen_NIU_XGE_OVERSIZE_FRAME_ERR  (NetXen_CRB_NIU + 0x70044)
+#define    NetXen_NIU_XGE_UNDERSIZE_FRAME_ERR (NetXen_CRB_NIU + 0x70048)
+#define    NetXen_NIU_XGE_LOCAL_ERROR_CNT     (NetXen_CRB_NIU + 0x7004c)
+#define    NetXen_NIU_XGE_REMOTE_ERROR_CNT    (NetXen_CRB_NIU + 0x70050)
+#define    NetXen_NIU_XGE_CONTROL_CHAR_CNT    (NetXen_CRB_NIU + 0x70054)
+#define    NetXen_NIU_XGE_PAUSE_FRAME_CNT     (NetXen_CRB_NIU + 0x70058)
+
+/* XG Link status */
+#define XG_LINK_UP    0x10
+#define XG_LINK_DOWN  0x20
+
+#define NetXen_CAM_RAM_BASE         (NetXen_CRB_CAM + 0x02000)
+#define NetXen_CAM_RAM(reg)         (NetXen_CAM_RAM_BASE + (reg))
+#define NetXen_FW_VERSION_MAJOR (NetXen_CAM_RAM(0x150))
+#define NetXen_FW_VERSION_MINOR (NetXen_CAM_RAM(0x154))
+#define NetXen_FW_VERSION_SUB   (NetXen_CAM_RAM(0x158))
+
+/*
+ * CRB window register.
+ */
+typedef struct {
+    netxen_crbword_t  rsvd1:25,
+                   addrbit:1,    /* bit 25 of CRB address */
+                   rsvd2:6;
+} netxen_pcix_crb_window_t;
+
+#define PCIX_PS_OP_ADDR_LO    (0x10000)  /* Used for PS PCI Memory access */
+#define PCIX_PS_OP_ADDR_HI    (0x10004)  /*   via CRB  (PS side only)     */
+
+#define PCIX_INT_VECTOR       (0x10100)
+#define PCIX_INT_MASK         (0x10104)
+
+#define PCIX_MN_WINDOW        (0x10200)
+#define PCIX_MS_WINDOW        (0x10204)
+#define PCIX_SN_WINDOW        (0x10208)
+#define PCIX_CRB_WINDOW       (0x10210)
+
+#define PCIX_TARGET_STATUS    (0x10118)
+#define PCIX_TARGET_MASK      (0x10128)
+
+#define PCIX_MSI_F0           (0x13000)
+
+#define PCIX_PS_MEM_SPACE     (0x90000)
+
+#define NetXen_PCIX_PH_REG(reg) (NetXen_CRB_PCIE + (reg))
+#define NetXen_PCIX_PS_REG(reg) (NetXen_CRB_PCIX_MD + (reg))
+
+#define NetXen_PCIE_REG(reg) (NetXen_CRB_PCIE + (reg))
+
+#define PCIE_IMBUS_CONTROL       (0x101b8)
+#define PCIE_MAX_DMA_XFER_SIZE (0x1404c)
+
+#define PCIE_DCR 0x00d8
+
+#define PCIE_TGT_SPLIT_CHICKEN (0x12080)
+
+#define PCIE_MAX_MASTER_SPLIT  (0x14048)
+
+#endif /* __NetXen_INC_H */

-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to