Commit 991b5557 authored by Jeff Garzik's avatar Jeff Garzik

[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: default avatarJeff Garzik <jeff@garzik.org>
parent 604119a4
...@@ -414,10 +414,9 @@ ewrk3_hw_init(struct net_device *dev, u_long iobase) ...@@ -414,10 +414,9 @@ ewrk3_hw_init(struct net_device *dev, u_long iobase)
icr &= 0x70; icr &= 0x70;
outb(icr, EWRK3_ICR); /* Disable all the IRQs */ outb(icr, EWRK3_ICR); /* Disable all the IRQs */
if (nicsr == (CSR_TXD | CSR_RXD)) if (nicsr != (CSR_TXD | CSR_RXD))
return -ENXIO; return -ENXIO;
/* Check that the EEPROM is alive and well and not living on Pluto... */ /* Check that the EEPROM is alive and well and not living on Pluto... */
for (chksum = 0, i = 0; i < EEPROM_MAX; i += 2) { for (chksum = 0, i = 0; i < EEPROM_MAX; i += 2) {
union { union {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment