diff options
author | Tommy Christensen <tommy.christensen@tpack.net> | 2005-11-07 00:58:04 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-11-07 07:53:25 -0800 |
commit | d9e46de34e4212f472684b1561ba323aac54ea25 (patch) | |
tree | bf8392ea5f243cc5ddbd32c82dec144ba82d036b /drivers/net/3c59x.c | |
parent | 106427e65d2b6f3a519ab5d14a3586007e7e0f20 (diff) | |
download | linux-3.10-d9e46de34e4212f472684b1561ba323aac54ea25.tar.gz linux-3.10-d9e46de34e4212f472684b1561ba323aac54ea25.tar.bz2 linux-3.10-d9e46de34e4212f472684b1561ba323aac54ea25.zip |
[PATCH] 3c59x: avoid blindly reading link status twice
In order to spare some I/O operations, be more intelligent about when to
read from the PHY.
Pointed out by Bogdan Costescu.
Signed-off-by: Tommy S. Christensen <tommy.christensen@tpack.net>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/net/3c59x.c')
-rw-r--r-- | drivers/net/3c59x.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/net/3c59x.c b/drivers/net/3c59x.c index 88ce4c43fd4..e1f773d07ed 100644 --- a/drivers/net/3c59x.c +++ b/drivers/net/3c59x.c @@ -1893,7 +1893,10 @@ vortex_timer(unsigned long data) { spin_lock_bh(&vp->lock); mii_status = mdio_read(dev, vp->phys[0], MII_BMSR); - mii_status = mdio_read(dev, vp->phys[0], MII_BMSR); + if (!(mii_status & BMSR_LSTATUS)) { + /* Re-read to get actual link status */ + mii_status = mdio_read(dev, vp->phys[0], MII_BMSR); + } ok = 1; if (vortex_debug > 2) printk(KERN_DEBUG "%s: MII transceiver has status %4.4x.\n", |