netxen: fix ethtool link test
authorSucheta Chakraborty <sucheta.chakraborty@qlogic.com>
Sat, 2 Jan 2010 03:25:19 +0000 (03:25 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 4 Jan 2010 06:06:16 +0000 (22:06 -0800)
o Fix ethtool link test for NX3031 chip.
o Remove unused code from phy interrupt callback

Signed-off-by: Sucheta Chakraborty <sucheta.chakraborty@qlogic.com>
Signed-off-by: Amit Kumar Salecha <amit.salecha@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/netxen/netxen_nic_ethtool.c
drivers/net/netxen/netxen_nic_main.c

index 72ced00..542f408 100644 (file)
@@ -385,25 +385,18 @@ netxen_nic_get_regs(struct net_device *dev, struct ethtool_regs *regs, void *p)
 static u32 netxen_nic_test_link(struct net_device *dev)
 {
        struct netxen_adapter *adapter = netdev_priv(dev);
-       __u32 status;
-       int val;
+       u32 val, port;
 
-       /* read which mode */
-       if (adapter->ahw.port_type == NETXEN_NIC_GBE) {
-               if (adapter->phy_read &&
-                   adapter->phy_read(adapter,
-                                     NETXEN_NIU_GB_MII_MGMT_ADDR_PHY_STATUS,
-                                     &status) != 0)
-                       return -EIO;
-               else {
-                       val = netxen_get_phy_link(status);
-                       return !val;
-               }
-       } else if (adapter->ahw.port_type == NETXEN_NIC_XGBE) {
+       port = adapter->physical_port;
+       if (NX_IS_REVISION_P3(adapter->ahw.revision_id)) {
+               val = NXRD32(adapter, CRB_XG_STATE_P3);
+               val = XG_LINK_STATE_P3(adapter->ahw.pci_func, val);
+               return (val == XG_LINK_UP_P3) ? 0 : 1;
+       } else {
                val = NXRD32(adapter, CRB_XG_STATE);
+               val = (val >> port*8) & 0xff;
                return (val == XG_LINK_UP) ? 0 : 1;
        }
-       return -EIO;
 }
 
 static int
index 6cae26a..880fcd0 100644 (file)
@@ -1898,12 +1898,8 @@ static void netxen_nic_handle_phy_intr(struct netxen_adapter *adapter)
                linkup = (val == XG_LINK_UP_P3);
        } else {
                val = NXRD32(adapter, CRB_XG_STATE);
-               if (adapter->ahw.port_type == NETXEN_NIC_GBE)
-                       linkup = (val >> port) & 1;
-               else {
-                       val = (val >> port*8) & 0xff;
-                       linkup = (val == XG_LINK_UP);
-               }
+               val = (val >> port*8) & 0xff;
+               linkup = (val == XG_LINK_UP);
        }
 
        netxen_advert_link_change(adapter, linkup);