[PATCH] via-rhine: Fix force media

From: Roger Luethi
Date: Thu May 20 2004 - 12:10:09 EST



Lucas Nussbaum and Dirk Koeppen each found independently that the code
for forcing media options in via-rhine is borked and suggested the fix
below. I've been sitting on this way too long because there is more
badness in the immediate vicinity which needs a bigger surgery.

The second hunk fixes a braino I managed to introduce myself.

The patch is for both 2.4 and 2.6. Please apply.

Roger
--- linux-2.6.6/drivers/net/via-rhine.c 2004-05-20 16:17:38.228468522 +0200
+++ linux-2.6.6-patch/drivers/net/via-rhine.c 2004-05-20 17:46:34.466916644 +0200
@@ -860,7 +860,7 @@
if (option & 0x220)
np->mii_if.full_duplex = 1;
np->default_port = option & 0x3ff;
- if (np->default_port & 0x330) {
+ if (option & 0x330) {
/* FIXME: shouldn't someone check this variable? */
/* np->medialock = 1; */
printk(KERN_INFO " Forcing %dMbs %s-duplex operation.\n",
@@ -1683,8 +1683,9 @@
printk(KERN_INFO "%s: Tx descriptor write-back race.\n",
dev->name);
}
- if ((intr_status & IntrTxError) && ~( IntrTxAborted | IntrTxUnderrun |
- IntrTxDescRace )) {
+ if ((intr_status & IntrTxError) &&
+ (intr_status & ( IntrTxAborted |
+ IntrTxUnderrun | IntrTxDescRace )) == 0) {
if (np->tx_thresh < 0xE0) {
writeb(np->tx_thresh += 0x20, ioaddr + TxConfig);
}