[PATCH] BNX2: Block MII access when ifdown.
authorMichael Chan <mchan@broadcom.com>
Tue, 8 May 2007 02:04:28 +0000 (19:04 -0700)
committerChris Wright <chrisw@sous-sol.org>
Wed, 23 May 2007 21:32:45 +0000 (14:32 -0700)
The device may be in D3hot state and should not allow MII register
access.

Signed-off-by: Michael Chan <mchan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
drivers/net/bnx2.c

index d6d57a17f3fdbd82b32ca79f9da425b311ff112c..81443ae6ea154df3f7d8b8c83e04fa7b77b74b0d 100644 (file)
@@ -5564,6 +5564,9 @@ bnx2_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
        case SIOCGMIIREG: {
                u32 mii_regval;
 
+               if (!netif_running(dev))
+                       return -EAGAIN;
+
                spin_lock_bh(&bp->phy_lock);
                err = bnx2_read_phy(bp, data->reg_num & 0x1f, &mii_regval);
                spin_unlock_bh(&bp->phy_lock);
@@ -5577,6 +5580,9 @@ bnx2_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
                if (!capable(CAP_NET_ADMIN))
                        return -EPERM;
 
+               if (!netif_running(dev))
+                       return -EAGAIN;
+
                spin_lock_bh(&bp->phy_lock);
                err = bnx2_write_phy(bp, data->reg_num & 0x1f, data->val_in);
                spin_unlock_bh(&bp->phy_lock);