]> err.no Git - linux-2.6/commitdiff
NetXen: Removal of redundant argument passing
authorMithlesh Thukral <mithlesh@netxen.com>
Fri, 20 Apr 2007 14:53:05 +0000 (07:53 -0700)
committerJeff Garzik <jeff@garzik.org>
Sat, 28 Apr 2007 15:01:05 +0000 (11:01 -0400)
NetXen: Removal of redundant function call parameters and bug fixes.
This patch will remove the redundant paramters which were being passed to
many functions since now adapter->portnum can be used.

Signed-off-by: Mithlesh Thukral <mithlesh@netxen.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
drivers/net/netxen/netxen_nic.h
drivers/net/netxen/netxen_nic_ethtool.c
drivers/net/netxen/netxen_nic_hdr.h
drivers/net/netxen/netxen_nic_hw.c
drivers/net/netxen/netxen_nic_hw.h
drivers/net/netxen/netxen_nic_init.c
drivers/net/netxen/netxen_nic_isr.c
drivers/net/netxen/netxen_nic_main.c
drivers/net/netxen/netxen_nic_niu.c

index b996cb38ecb5f2be6c7f6ea0f5ddfaa3016547f6..923ae6c029d62ff07739ea734413de6d6babcc49 100644 (file)
@@ -205,6 +205,7 @@ enum {
 
 #define MAX_CMD_DESCRIPTORS            1024
 #define MAX_RCV_DESCRIPTORS            16384
+#define MAX_RCV_DESCRIPTORS_1G         (MAX_RCV_DESCRIPTORS / 4)
 #define MAX_JUMBO_RCV_DESCRIPTORS      1024
 #define MAX_LRO_RCV_DESCRIPTORS                64
 #define MAX_RCVSTATUS_DESCRIPTORS      MAX_RCV_DESCRIPTORS
@@ -780,6 +781,7 @@ struct netxen_hardware_context {
        struct pci_dev *cmd_desc_pdev;
        dma_addr_t cmd_desc_phys_addr;
        struct netxen_adapter *adapter;
+       int pci_func;
 };
 
 #define RCV_RING_LRO   RCV_DESC_LRO
@@ -916,15 +918,15 @@ struct netxen_adapter {
        struct netxen_ring_ctx *ctx_desc;
        struct pci_dev *ctx_desc_pdev;
        dma_addr_t ctx_desc_phys_addr;
-       int (*enable_phy_interrupts) (struct netxen_adapter *, int);
-       int (*disable_phy_interrupts) (struct netxen_adapter *, int);
+       int (*enable_phy_interrupts) (struct netxen_adapter *);
+       int (*disable_phy_interrupts) (struct netxen_adapter *);
        void (*handle_phy_intr) (struct netxen_adapter *);
        int (*macaddr_set) (struct netxen_adapter *, netxen_ethernet_macaddr_t);
        int (*set_mtu) (struct netxen_adapter *, int);
        int (*set_promisc) (struct netxen_adapter *, netxen_niu_prom_mode_t);
        int (*unset_promisc) (struct netxen_adapter *, netxen_niu_prom_mode_t);
-       int (*phy_read) (struct netxen_adapter *, long phy, long reg, u32 *);
-       int (*phy_write) (struct netxen_adapter *, long phy, long reg, u32 val);
+       int (*phy_read) (struct netxen_adapter *, long reg, u32 *);
+       int (*phy_write) (struct netxen_adapter *, long reg, u32 val);
        int (*init_port) (struct netxen_adapter *, int);
        void (*init_niu) (struct netxen_adapter *);
        int (*stop_port) (struct netxen_adapter *);
@@ -970,27 +972,21 @@ static inline void __iomem *pci_base(struct netxen_adapter *adapter,
        return NULL;
 }
 
-int netxen_niu_xgbe_enable_phy_interrupts(struct netxen_adapter *adapter,
-                                         int port);
-int netxen_niu_gbe_enable_phy_interrupts(struct netxen_adapter *adapter,
-                                        int port);
-int netxen_niu_xgbe_disable_phy_interrupts(struct netxen_adapter *adapter,
-                                          int port);
-int netxen_niu_gbe_disable_phy_interrupts(struct netxen_adapter *adapter,
-                                         int port);
-int netxen_niu_xgbe_clear_phy_interrupts(struct netxen_adapter *adapter,
-                                        int port);
-int netxen_niu_gbe_clear_phy_interrupts(struct netxen_adapter *adapter,
-                                       int port);
+int netxen_niu_xgbe_enable_phy_interrupts(struct netxen_adapter *adapter);
+int netxen_niu_gbe_enable_phy_interrupts(struct netxen_adapter *adapter);
+int netxen_niu_xgbe_disable_phy_interrupts(struct netxen_adapter *adapter);
+int netxen_niu_gbe_disable_phy_interrupts(struct netxen_adapter *adapter);
+int netxen_niu_xgbe_clear_phy_interrupts(struct netxen_adapter *adapter);
+int netxen_niu_gbe_clear_phy_interrupts(struct netxen_adapter *adapter);
 void netxen_nic_xgbe_handle_phy_intr(struct netxen_adapter *adapter);
 void netxen_nic_gbe_handle_phy_intr(struct netxen_adapter *adapter);
 void netxen_niu_gbe_set_mii_mode(struct netxen_adapter *adapter, int port,
                                 long enable);
 void netxen_niu_gbe_set_gmii_mode(struct netxen_adapter *adapter, int port,
                                  long enable);
-int netxen_niu_gbe_phy_read(struct netxen_adapter *adapter, long phy, long reg,
+int netxen_niu_gbe_phy_read(struct netxen_adapter *adapter, long reg,
                            __u32 * readval);
-int netxen_niu_gbe_phy_write(struct netxen_adapter *adapter, long phy,
+int netxen_niu_gbe_phy_write(struct netxen_adapter *adapter,
                             long reg, __u32 val);
 
 /* Functions available from netxen_nic_hw.c */
@@ -1010,6 +1006,7 @@ int netxen_nic_hw_write_wx(struct netxen_adapter *adapter, u64 off, void *data,
                           int len);
 void netxen_crb_writelit_adapter(struct netxen_adapter *adapter,
                                 unsigned long off, int data);
+int netxen_nic_erase_pxe(struct netxen_adapter *adapter);
 
 /* Functions from netxen_nic_init.c */
 void netxen_free_adapter_offload(struct netxen_adapter *adapter);
index c400f264ea431b1f70898a6a0d392d0e6e018f00..24c68f42584d22dcf9a3fc8de206f700962303c0 100644 (file)
@@ -211,7 +211,7 @@ netxen_nic_set_settings(struct net_device *dev, struct ethtool_cmd *ecmd)
        if (adapter->ahw.board_type == NETXEN_NIC_GBE) {
                /* autonegotiation */
                if (adapter->phy_write
-                   && adapter->phy_write(adapter, adapter->portnum,
+                   && adapter->phy_write(adapter,
                                          NETXEN_NIU_GB_MII_MGMT_ADDR_AUTONEG,
                                          ecmd->autoneg) != 0)
                        return -EIO;
@@ -219,7 +219,7 @@ netxen_nic_set_settings(struct net_device *dev, struct ethtool_cmd *ecmd)
                        adapter->link_autoneg = ecmd->autoneg;
 
                if (adapter->phy_read
-                   && adapter->phy_read(adapter, adapter->portnum,
+                   && adapter->phy_read(adapter,
                                         NETXEN_NIU_GB_MII_MGMT_ADDR_PHY_STATUS,
                                         &status) != 0)
                        return -EIO;
@@ -242,7 +242,7 @@ netxen_nic_set_settings(struct net_device *dev, struct ethtool_cmd *ecmd)
                if (ecmd->duplex == DUPLEX_FULL)
                        netxen_set_phy_duplex(status);
                if (adapter->phy_write
-                   && adapter->phy_write(adapter, adapter->portnum,
+                   && adapter->phy_write(adapter,
                                          NETXEN_NIU_GB_MII_MGMT_ADDR_PHY_STATUS,
                                          *((int *)&status)) != 0)
                        return -EIO;
@@ -399,7 +399,7 @@ static u32 netxen_nic_test_link(struct net_device *dev)
        /* read which mode */
        if (adapter->ahw.board_type == NETXEN_NIC_GBE) {
                if (adapter->phy_read
-                   && adapter->phy_read(adapter, adapter->portnum,
+                   && adapter->phy_read(adapter,
                                         NETXEN_NIU_GB_MII_MGMT_ADDR_PHY_STATUS,
                                         &status) != 0)
                        return -EIO;
@@ -579,7 +579,7 @@ netxen_nic_set_pauseparam(struct net_device *dev,
                /* set autoneg */
                autoneg = pause->autoneg;
                if (adapter->phy_write
-                   && adapter->phy_write(adapter, adapter->portnum,
+                   && adapter->phy_write(adapter,
                                          NETXEN_NIU_GB_MII_MGMT_ADDR_AUTONEG,
                                          autoneg) != 0)
                        return -EIO;
index b67a5c3ca99db47ce3efefee44250eaf669f92ed..b826bca9c4e0cf570e67b9629bca5c5d9514395a 100644 (file)
@@ -484,6 +484,7 @@ enum {
        /* 10 seconds before we give up */
 #define        NETXEN_NIU_PHY_WAITMAX          50
 #define        NETXEN_NIU_MAX_GBE_PORTS        4
+#define        NETXEN_NIU_MAX_XG_PORTS         2
 
 #define        NETXEN_NIU_MODE                 (NETXEN_CRB_NIU + 0x00000)
 
index 50430911c8004888a700aeb0375cd4958228b38a..5ed8c60c906f3631345e644efd34615c435d1435 100644 (file)
@@ -587,7 +587,7 @@ void netxen_nic_pci_change_crbwindow(struct netxen_adapter *adapter, u32 wndw)
 
        if (adapter->curr_window == wndw)
                return;
-       switch(adapter->portnum) {
+       switch(adapter->ahw.pci_func) {
                case 0:
                        offset = PCI_OFFSET_SECOND_RANGE(adapter,
                                        NETXEN_PCIX_PH_REG(PCIX_CRB_WINDOW));
@@ -606,7 +606,7 @@ void netxen_nic_pci_change_crbwindow(struct netxen_adapter *adapter, u32 wndw)
                        break;
                default:
                        printk(KERN_INFO "Changing the window for PCI function"
-                                       "%d\n", adapter->portnum);
+                                       "%d\n", adapter->ahw.pci_func);
                        offset = PCI_OFFSET_SECOND_RANGE(adapter,
                                        NETXEN_PCIX_PH_REG(PCIX_CRB_WINDOW));
                        break;
@@ -881,6 +881,17 @@ netxen_nic_pci_set_window(struct netxen_adapter *adapter,
        return addr;
 }
 
+int
+netxen_nic_erase_pxe(struct netxen_adapter *adapter)
+{
+       if (netxen_rom_fast_write(adapter, PXE_START, 0) == -1) {
+               printk(KERN_ERR "%s: erase pxe failed\n", 
+                       netxen_nic_driver_name);
+               return -1;
+       }
+       return 0;
+}
+
 int netxen_nic_get_board_info(struct netxen_adapter *adapter)
 {
        int rv = 0;
@@ -991,7 +1002,7 @@ void netxen_nic_set_link_parameters(struct netxen_adapter *adapter)
        if (netxen_get_niu_enable_ge(mode)) {   /* Gb 10/100/1000 Mbps mode */
                if (adapter->phy_read
                    && adapter->
-                   phy_read(adapter, adapter->portnum,
+                   phy_read(adapter,
                             NETXEN_NIU_GB_MII_MGMT_ADDR_PHY_STATUS,
                             &status) == 0) {
                        if (netxen_get_phy_link(status)) {
@@ -1022,7 +1033,7 @@ void netxen_nic_set_link_parameters(struct netxen_adapter *adapter)
                                }
                                if (adapter->phy_read
                                    && adapter->
-                                   phy_read(adapter, adapter->portnum,
+                                   phy_read(adapter,
                                             NETXEN_NIU_GB_MII_MGMT_ADDR_AUTONEG,
                                             &autoneg) != 0)
                                        adapter->link_autoneg = autoneg;
index 841341d52dced68b53144e0ea2fdd75c9c627840..94459cf6dc1948f3a5c4cc3363f152c06ccc1c74 100644 (file)
@@ -458,13 +458,13 @@ int netxen_niu_xg_set_promiscuous_mode(struct netxen_adapter *adapter,
                                       netxen_niu_prom_mode_t mode);
 
 /* get/set the MAC address for a given MAC */
-int netxen_niu_macaddr_get(struct netxen_adapter *adapter, int port,
+int netxen_niu_macaddr_get(struct netxen_adapter *adapter,
                           netxen_ethernet_macaddr_t * addr);
 int netxen_niu_macaddr_set(struct netxen_adapter *adapter,
                           netxen_ethernet_macaddr_t addr);
 
 /* XG versons */
-int netxen_niu_xg_macaddr_get(struct netxen_adapter *adapter, int port,
+int netxen_niu_xg_macaddr_get(struct netxen_adapter *adapter,
                              netxen_ethernet_macaddr_t * addr);
 int netxen_niu_xg_macaddr_set(struct netxen_adapter *adapter,
                              netxen_ethernet_macaddr_t addr);
index 4df38c7e71aca43877373727884ca8066f2708ad..e625d3c496d1795a97242e62dce7f8bc49493d32 100644 (file)
@@ -277,8 +277,8 @@ u32 netxen_decode_crb_addr(u32 addr)
                return (pci_base + offset);
 }
 
-static long rom_max_timeout = 10000;
-static long rom_lock_timeout = 1000000;
+static long rom_max_timeout = 100;
+static long rom_lock_timeout = 10000;
 static long rom_write_timeout = 700;
 
 static inline int rom_lock(struct netxen_adapter *adapter)
@@ -953,7 +953,8 @@ void netxen_phantom_init(struct netxen_adapter *adapter, int pegtune_val)
 
        if (!pegtune_val) {
                val = readl(NETXEN_CRB_NORMALIZE(adapter, CRB_CMDPEG_STATE));
-               while (val != PHAN_INITIALIZE_COMPLETE && loops < 200000) {
+               while (val != PHAN_INITIALIZE_COMPLETE && 
+                       val != PHAN_INITIALIZE_ACK && loops < 200000) {
                        udelay(100);
                        schedule();
                        val =
index f60c9699191383252949267a73bfbc33529e8be3..8510216c6b02808a0806f5d4505dfc4e077fae1f 100644 (file)
@@ -82,7 +82,7 @@ void netxen_handle_port_int(struct netxen_adapter *adapter, u32 enable)
 
        /*  This should clear the interrupt source */
        if (adapter->phy_read)
-               adapter->phy_read(adapter, adapter->portnum,
+               adapter->phy_read(adapter, 
                                  NETXEN_NIU_GB_MII_MGMT_ADDR_INT_STATUS,
                                  &int_src);
        if (int_src == 0) {
@@ -90,7 +90,7 @@ void netxen_handle_port_int(struct netxen_adapter *adapter, u32 enable)
                return;
        }
        if (adapter->disable_phy_interrupts)
-               adapter->disable_phy_interrupts(adapter, adapter->portnum);
+               adapter->disable_phy_interrupts(adapter);
 
        if (netxen_get_phy_int_jabber(int_src))
                DPRINTK(INFO, "Jabber interrupt \n");
@@ -111,7 +111,7 @@ void netxen_handle_port_int(struct netxen_adapter *adapter, u32 enable)
                DPRINTK(INFO, "SPEED CHANGED OR LINK STATUS CHANGED \n");
 
                if (adapter->phy_read
-                   && adapter->phy_read(adapter, adapter->portnum,
+                   && adapter->phy_read(adapter, 
                                         NETXEN_NIU_GB_MII_MGMT_ADDR_PHY_STATUS,
                                         &status) == 0) {
                        if (netxen_get_phy_int_link_status_changed(int_src)) {
@@ -135,7 +135,7 @@ void netxen_handle_port_int(struct netxen_adapter *adapter, u32 enable)
                }
        }
        if (adapter->enable_phy_interrupts)
-               adapter->enable_phy_interrupts(adapter, adapter->portnum);
+               adapter->enable_phy_interrupts(adapter);
 }
 
 void netxen_nic_isr_other(struct netxen_adapter *adapter)
@@ -179,6 +179,7 @@ void netxen_nic_xgbe_handle_phy_intr(struct netxen_adapter *adapter)
 
        /* WINDOW = 1 */
        val = readl(NETXEN_CRB_NORMALIZE(adapter, CRB_XG_STATE));
+       val >>= (adapter->portnum * 8);
        val1 = val & 0xff;
 
        if (adapter->ahw.xg_linkup == 1 && val1 != XG_LINK_UP) {
index 514cb393f489d38e1913381d59c50fc774477be4..4e1a6aa91412da4e0ad07a55a663b64c9c3b6f87 100644 (file)
@@ -233,6 +233,8 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
        memset(adapter, 0 , sizeof(struct netxen_adapter));
 
        adapter->ahw.pdev = pdev;
+       adapter->ahw.pci_func  = pci_func_id;
+
        /* remap phys address */
        mem_base = pci_resource_start(pdev, 0); /* 0 is for BAR 0 */
        mem_len = pci_resource_len(pdev, 0);
@@ -275,7 +277,12 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
        DPRINTK(INFO, "doorbell ioremaped at %p\n", db_ptr);
 
        adapter->max_tx_desc_count = MAX_CMD_DESCRIPTORS;
-       adapter->max_rx_desc_count = MAX_RCV_DESCRIPTORS;
+       if ((adapter->ahw.boardcfg.board_type == NETXEN_BRDTYPE_P2_SB35_4G) ||
+                       (adapter->ahw.boardcfg.board_type == 
+                        NETXEN_BRDTYPE_P2_SB31_2G)) 
+               adapter->max_rx_desc_count = MAX_RCV_DESCRIPTORS_1G;
+       else
+               adapter->max_rx_desc_count = MAX_RCV_DESCRIPTORS;
        adapter->max_jumbo_rx_desc_count = MAX_JUMBO_RCV_DESCRIPTORS;
        adapter->max_lro_rx_desc_count = MAX_LRO_RCV_DESCRIPTORS;
 
@@ -382,8 +389,13 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
        spin_lock_init(&adapter->tx_lock);
        spin_lock_init(&adapter->lock);
        netxen_initialize_adapter_sw(adapter);  /* initialize the buffers in adapter */
+       /* Mezz cards have PCI function 0,2,3 enabled */
+       if (adapter->ahw.boardcfg.board_type == NETXEN_BRDTYPE_P2_SB31_10G_IMEZ)
+               if (pci_func_id >= 2)
+                       adapter->portnum = pci_func_id - 2;
+
 #ifdef CONFIG_IA64
-       if(netxen_probe_flag == 0) {
+       if(adapter->portnum == 0) {
                netxen_pinit_from_rom(adapter, 0);
                udelay(500);
                netxen_load_firmware(adapter);
@@ -399,11 +411,9 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
         *  Adapter in our case is quad port so initialize it before
         *  initializing the ports
         */
-       netxen_initialize_adapter_hw(adapter);  /* initialize the adapter */
 
-       if (adapter->ahw.boardcfg.board_type == NETXEN_BRDTYPE_P2_SB31_10G_IMEZ)
-               if (pci_func_id >= 2)
-                       adapter->portnum = pci_func_id - 2;
+       /* initialize the adapter */
+       netxen_initialize_adapter_hw(adapter);
 
        netxen_initialize_adapter_ops(adapter);
 
@@ -426,7 +436,7 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
                valid_mac = 0;
 
        if (valid_mac) {
-               unsigned char *p = (unsigned char *)&mac_addr[i];
+               unsigned char *p = (unsigned char *)&mac_addr[adapter->portnum];
                netdev->dev_addr[0] = *(p + 5);
                netdev->dev_addr[1] = *(p + 4);
                netdev->dev_addr[2] = *(p + 3);
@@ -461,7 +471,8 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
        writel(0, NETXEN_CRB_NORMALIZE(adapter, CRB_HOST_CMD_ADDR_LO));
 
        /* do this before waking up pegs so that we have valid dummy dma addr */
-       err = netxen_initialize_adapter_offload(adapter);
+       if (adapter->portnum == 0)
+               err = netxen_initialize_adapter_offload(adapter);
        if (err) 
                goto err_out_free_dev;
 
@@ -487,6 +498,7 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
         */
        udelay(100);
        INIT_WORK(&adapter->tx_timeout_task, netxen_tx_timeout_task);
+       netxen_nic_erase_pxe(adapter);
        netif_carrier_off(netdev);
        netif_stop_queue(netdev);
 
@@ -566,8 +578,8 @@ static void __devexit netxen_nic_remove(struct pci_dev *pdev)
        int i;
        int ctxid, ring;
 
-       netdev = pci_get_drvdata(pdev);
-       adapter = netdev_priv(netdev);
+       adapter = pci_get_drvdata(pdev);
+       netdev = adapter->netdev;
        if (adapter == NULL)
                return;
 
index f6befc32aa584367b7b61d9b1681e74314fbf790..ad2486f2f64638c9fff57ebbd24616f71e227ac2 100644 (file)
@@ -88,12 +88,13 @@ static inline int phy_unlock(struct netxen_adapter *adapter)
  *       -1 on error
  *
  */
-int netxen_niu_gbe_phy_read(struct netxen_adapter *adapter, long phy,
-                           long reg, __u32 * readval)
+int netxen_niu_gbe_phy_read(struct netxen_adapter *adapter, long reg, 
+                               __u32 * readval)
 {
        long timeout = 0;
        long result = 0;
        long restore = 0;
+       long phy = adapter->portnum;
        __u32 address;
        __u32 command;
        __u32 status;
@@ -183,12 +184,13 @@ int netxen_niu_gbe_phy_read(struct netxen_adapter *adapter, long phy,
  *       -1 on error
  *
  */
-int netxen_niu_gbe_phy_write(struct netxen_adapter *adapter,
-                            long phy, long reg, __u32 val)
+int netxen_niu_gbe_phy_write(struct netxen_adapter *adapter, long reg, 
+                               __u32 val)
 {
        long timeout = 0;
        long result = 0;
        long restore = 0;
+       long phy = adapter->portnum;
        __u32 address;
        __u32 command;
        __u32 status;
@@ -258,15 +260,13 @@ int netxen_niu_gbe_phy_write(struct netxen_adapter *adapter,
        return result;
 }
 
-int netxen_niu_xgbe_enable_phy_interrupts(struct netxen_adapter *adapter,
-                                         int port)
+int netxen_niu_xgbe_enable_phy_interrupts(struct netxen_adapter *adapter)
 {
        netxen_crb_writelit_adapter(adapter, NETXEN_NIU_INT_MASK, 0x3f);
        return 0;
 }
 
-int netxen_niu_gbe_enable_phy_interrupts(struct netxen_adapter *adapter,
-                                        int port)
+int netxen_niu_gbe_enable_phy_interrupts(struct netxen_adapter *adapter)
 {
        int result = 0;
        __u32 enable = 0;
@@ -275,7 +275,7 @@ int netxen_niu_gbe_enable_phy_interrupts(struct netxen_adapter *adapter,
        netxen_set_phy_int_speed_changed(enable);
 
        if (0 !=
-           netxen_niu_gbe_phy_write(adapter, port,
+           netxen_niu_gbe_phy_write(adapter, 
                                     NETXEN_NIU_GB_MII_MGMT_ADDR_INT_ENABLE,
                                     enable))
                result = -EIO;
@@ -283,38 +283,34 @@ int netxen_niu_gbe_enable_phy_interrupts(struct netxen_adapter *adapter,
        return result;
 }
 
-int netxen_niu_xgbe_disable_phy_interrupts(struct netxen_adapter *adapter,
-                                          int port)
+int netxen_niu_xgbe_disable_phy_interrupts(struct netxen_adapter *adapter)
 {
        netxen_crb_writelit_adapter(adapter, NETXEN_NIU_INT_MASK, 0x7f);
        return 0;
 }
 
-int netxen_niu_gbe_disable_phy_interrupts(struct netxen_adapter *adapter,
-                                         int port)
+int netxen_niu_gbe_disable_phy_interrupts(struct netxen_adapter *adapter)
 {
        int result = 0;
        if (0 !=
-           netxen_niu_gbe_phy_write(adapter, port,
+           netxen_niu_gbe_phy_write(adapter,
                                     NETXEN_NIU_GB_MII_MGMT_ADDR_INT_ENABLE, 0))
                result = -EIO;
 
        return result;
 }
 
-int netxen_niu_xgbe_clear_phy_interrupts(struct netxen_adapter *adapter,
-                                        int port)
+int netxen_niu_xgbe_clear_phy_interrupts(struct netxen_adapter *adapter)
 {
        netxen_crb_writelit_adapter(adapter, NETXEN_NIU_ACTIVE_INT, -1);
        return 0;
 }
 
-int netxen_niu_gbe_clear_phy_interrupts(struct netxen_adapter *adapter,
-                                       int port)
+int netxen_niu_gbe_clear_phy_interrupts(struct netxen_adapter *adapter)
 {
        int result = 0;
        if (0 !=
-           netxen_niu_gbe_phy_write(adapter, port,
+           netxen_niu_gbe_phy_write(adapter, 
                                     NETXEN_NIU_GB_MII_MGMT_ADDR_INT_STATUS,
                                     -EIO))
                result = -EIO;
@@ -355,9 +351,9 @@ void netxen_niu_gbe_set_mii_mode(struct netxen_adapter *adapter,
                                            0x5);
        }
 
-       if (netxen_niu_gbe_enable_phy_interrupts(adapter, port))
+       if (netxen_niu_gbe_enable_phy_interrupts(adapter))
                printk(KERN_ERR PFX "ERROR enabling PHY interrupts\n");
-       if (netxen_niu_gbe_clear_phy_interrupts(adapter, port))
+       if (netxen_niu_gbe_clear_phy_interrupts(adapter))
                printk(KERN_ERR PFX "ERROR clearing PHY interrupts\n");
 }
 
@@ -393,9 +389,9 @@ void netxen_niu_gbe_set_gmii_mode(struct netxen_adapter *adapter,
                                            0x5);
        }
 
-       if (netxen_niu_gbe_enable_phy_interrupts(adapter, port))
+       if (netxen_niu_gbe_enable_phy_interrupts(adapter))
                printk(KERN_ERR PFX "ERROR enabling PHY interrupts\n");
-       if (netxen_niu_gbe_clear_phy_interrupts(adapter, port))
+       if (netxen_niu_gbe_clear_phy_interrupts(adapter))
                printk(KERN_ERR PFX "ERROR clearing PHY interrupts\n");
 }
 
@@ -404,11 +400,11 @@ int netxen_niu_gbe_init_port(struct netxen_adapter *adapter, int port)
        int result = 0;
        __u32 status;
        if (adapter->disable_phy_interrupts)
-               adapter->disable_phy_interrupts(adapter, port);
+               adapter->disable_phy_interrupts(adapter);
        mdelay(2);
 
        if (0 ==
-           netxen_niu_gbe_phy_read(adapter, port,
+           netxen_niu_gbe_phy_read(adapter,
                                    NETXEN_NIU_GB_MII_MGMT_ADDR_PHY_STATUS,
                                    &status)) {
                if (netxen_get_phy_link(status)) {
@@ -439,13 +435,13 @@ int netxen_niu_gbe_init_port(struct netxen_adapter *adapter, int port)
                                                    | NETXEN_GB_MAC_ENABLE_TX_RX
                                                    |
                                                    NETXEN_GB_MAC_PAUSED_FRMS);
-                       if (netxen_niu_gbe_clear_phy_interrupts(adapter, port))
+                       if (netxen_niu_gbe_clear_phy_interrupts(adapter))
                                printk(KERN_ERR PFX
                                       "ERROR clearing PHY interrupts\n");
-                       if (netxen_niu_gbe_enable_phy_interrupts(adapter, port))
+                       if (netxen_niu_gbe_enable_phy_interrupts(adapter))
                                printk(KERN_ERR PFX
                                       "ERROR enabling PHY interrupts\n");
-                       if (netxen_niu_gbe_clear_phy_interrupts(adapter, port))
+                       if (netxen_niu_gbe_clear_phy_interrupts(adapter))
                                printk(KERN_ERR PFX
                                       "ERROR clearing PHY interrupts\n");
                        result = -1;
@@ -458,24 +454,14 @@ int netxen_niu_gbe_init_port(struct netxen_adapter *adapter, int port)
 
 int netxen_niu_xg_init_port(struct netxen_adapter *adapter, int port)
 {
-       u32 reg = 0, ret = 0;
-
-       if (adapter->ahw.boardcfg.board_type == NETXEN_BRDTYPE_P2_SB31_10G_IMEZ) {
-               netxen_crb_writelit_adapter(adapter,
-                                           NETXEN_NIU_XG1_CONFIG_0, 0x5);
-               /* XXX hack for Mez cards: both ports in promisc mode */
-               netxen_nic_hw_read_wx(adapter,
-                                     NETXEN_NIU_XGE_CONFIG_1, &reg, 4);
-               reg = (reg | 0x2000UL);
-               netxen_crb_writelit_adapter(adapter,
-                                           NETXEN_NIU_XGE_CONFIG_1, reg);
-               reg = 0;
-               netxen_nic_hw_read_wx(adapter,
-                                     NETXEN_NIU_XG1_CONFIG_1, &reg, 4);
-               reg = (reg | 0x2000UL);
+       u32 ret = 0;
+       int portnum = adapter->portnum;
+               netxen_crb_writelit_adapter(adapter, 
+                               NETXEN_NIU_XGE_CONFIG_1 +(0x10000 * portnum),
+                               0x1447);
                netxen_crb_writelit_adapter(adapter,
-                                           NETXEN_NIU_XG1_CONFIG_1, reg);
-       }
+                           NETXEN_NIU_XG1_CONFIG_1 + 
+                           (0x10000 * portnum), 0x5);
 
        return ret;
 }
@@ -498,7 +484,7 @@ int netxen_niu_gbe_handle_phy_interrupt(struct netxen_adapter *adapter,
         * The read of the PHY INT status will clear the pending
         * interrupt status
         */
-       if (netxen_niu_gbe_phy_read(adapter, port,
+       if (netxen_niu_gbe_phy_read(adapter,
                                    NETXEN_NIU_GB_MII_MGMT_ADDR_INT_STATUS,
                                    &int_src) != 0)
                result = -EINVAL;
@@ -535,7 +521,7 @@ int netxen_niu_gbe_handle_phy_interrupt(struct netxen_adapter *adapter,
                        printk(KERN_INFO PFX
                               "speed_changed or link status changed");
                        if (netxen_niu_gbe_phy_read
-                           (adapter, port,
+                           (adapter,
                             NETXEN_NIU_GB_MII_MGMT_ADDR_PHY_STATUS,
                             &status) == 0) {
                                if (netxen_get_phy_speed(status) == 2) {
@@ -581,10 +567,11 @@ int netxen_niu_gbe_handle_phy_interrupt(struct netxen_adapter *adapter,
  * Note that the passed-in value must already be in network byte order.
  */
 int netxen_niu_macaddr_get(struct netxen_adapter *adapter,
-                          int phy, netxen_ethernet_macaddr_t * addr)
+                          netxen_ethernet_macaddr_t * addr)
 {
        u32 stationhigh;
        u32 stationlow;
+       int phy = adapter->portnum;
        u8 val[8];
 
        if (addr == NULL)
@@ -633,7 +620,7 @@ int netxen_niu_macaddr_set(struct netxen_adapter *adapter,
                    (adapter, NETXEN_NIU_GB_STATION_ADDR_0(phy), &val, 4))
                        return -2;
 
-               netxen_niu_macaddr_get(adapter, phy,
+               netxen_niu_macaddr_get(adapter, 
                                       (netxen_ethernet_macaddr_t *) mac_addr);
                if (memcmp(mac_addr, addr, 6) == 0)
                        break;
@@ -845,9 +832,10 @@ int netxen_niu_xg_macaddr_set(struct netxen_adapter *adapter,
  * Return the current station MAC address.
  * Note that the passed-in value must already be in network byte order.
  */
-int netxen_niu_xg_macaddr_get(struct netxen_adapter *adapter, int phy,
+int netxen_niu_xg_macaddr_get(struct netxen_adapter *adapter,
                              netxen_ethernet_macaddr_t * addr)
 {
+       int phy = adapter->portnum;
        u32 stationhigh;
        u32 stationlow;
        u8 val[8];
@@ -877,17 +865,19 @@ int netxen_niu_xg_set_promiscuous_mode(struct netxen_adapter *adapter,
        __u32 reg;
        int port = adapter->portnum;
 
-       if ((port < 0) || (port > NETXEN_NIU_MAX_GBE_PORTS))
+       if ((port < 0) || (port > NETXEN_NIU_MAX_XG_PORTS))
                return -EINVAL;
 
-       if (netxen_nic_hw_read_wx(adapter, NETXEN_NIU_XGE_CONFIG_1, &reg, 4))
+       if (netxen_nic_hw_read_wx(adapter, NETXEN_NIU_XGE_CONFIG_1 + 
+                                       (0x10000 * port), &reg, 4))
                return -EIO;
        if (mode == NETXEN_NIU_PROMISC_MODE)
                reg = (reg | 0x2000UL);
        else
                reg = (reg & ~0x2000UL);
 
-       netxen_crb_writelit_adapter(adapter, NETXEN_NIU_XGE_CONFIG_1, reg);
+       netxen_crb_writelit_adapter(adapter, NETXEN_NIU_XGE_CONFIG_1 +
+                                       (0x10000 * port), reg);
 
        return 0;
 }