[netdrvr] ewrk3: correct card detection bug
Arwin Vosselman pointed out: > The ewrk3-driver doesn't function with 2.6.16-kernels (used 2.6.16.41 for > my tests). Cards will never be detected due to this bug. > > drivers/net/ewrks3.c: > Line 417 reads: > > if (nicsr == (CSR_TXD | CSR_RXD)) > > that should be: > > if (nicsr != (CSR_TXD | CSR_RXD)) > > Comparison with the same line in v2.4 shows why: > > 2.4: > if (nicsr == (CSR_TXD | CSR_RXD)){ > > blah, blah > ========== > 2.6: > if (nicsr == (CSR_TXD | CSR_RXD)) > return -ENXIO; > > blah, blah > ========== > > blah,blah will not, but should, be executed in 2.6 with a card being present. > > The fix mentioned above solves this bug. Signed-off-by: Jeff Garzik <jeff@garzik.org>
This commit is contained in:
parent
604119a4b2
commit
991b5557f7
|
@ -414,10 +414,9 @@ ewrk3_hw_init(struct net_device *dev, u_long iobase)
|
|||
icr &= 0x70;
|
||||
outb(icr, EWRK3_ICR); /* Disable all the IRQs */
|
||||
|
||||
if (nicsr == (CSR_TXD | CSR_RXD))
|
||||
if (nicsr != (CSR_TXD | CSR_RXD))
|
||||
return -ENXIO;
|
||||
|
||||
|
||||
/* Check that the EEPROM is alive and well and not living on Pluto... */
|
||||
for (chksum = 0, i = 0; i < EEPROM_MAX; i += 2) {
|
||||
union {
|
||||
|
|
Loading…
Reference in New Issue