aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/e1000e/netdev.c
diff options
context:
space:
mode:
authorBruce Allan <bruce.w.allan@intel.com>2009-11-20 18:24:30 -0500
committerDavid S. Miller <davem@davemloft.net>2009-11-21 14:34:01 -0500
commitb16a002e3da0357771433aa58a2521da00aa792a (patch)
tree96382b6d6cbbfa8d7aa392a3cba0edce6b25be07 /drivers/net/e1000e/netdev.c
parentbb436b20fe0ea4231a233aae7f0f7de3a3f2f5c3 (diff)
e1000e: Incorrect MII Link beat reporting.
The driver was only updating MII stats when an LSC up was detected and the interface had not already been reported up to netdev. This meant MII stats returned in response to an SIOCGMIIREG ioctl would always show a link up if it had ever been up. This was misleading the networking daemon guessnet, which uses this ioctl, into making improper network port selections. This fix adds a call to e1000_phy_read_status() to actively read the mii stats before responding to the SIOCGMIIREG ioctl. Signed-off-by: Bruce Allan <bruce.w.allan@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/e1000e/netdev.c')
-rw-r--r--drivers/net/e1000e/netdev.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/net/e1000e/netdev.c b/drivers/net/e1000e/netdev.c
index e819f1997550..ff9f9f1725e3 100644
--- a/drivers/net/e1000e/netdev.c
+++ b/drivers/net/e1000e/netdev.c
@@ -4320,6 +4320,8 @@ static int e1000_mii_ioctl(struct net_device *netdev, struct ifreq *ifr,
4320 data->phy_id = adapter->hw.phy.addr; 4320 data->phy_id = adapter->hw.phy.addr;
4321 break; 4321 break;
4322 case SIOCGMIIREG: 4322 case SIOCGMIIREG:
4323 e1000_phy_read_status(adapter);
4324
4323 switch (data->reg_num & 0x1F) { 4325 switch (data->reg_num & 0x1F) {
4324 case MII_BMCR: 4326 case MII_BMCR:
4325 data->val_out = adapter->phy_regs.bmcr; 4327 data->val_out = adapter->phy_regs.bmcr;