Re: Fw: [PATCH] Remove powerpc specific parts of 3c509 driver
From: Linas Vepstas <hidden>
Date: 2006-09-19 18:42:47
Also in:
netdev
On Tue, Sep 19, 2006 at 02:54:33PM +1000, Stephen Rothwell wrote:
On powerpc and ppc, insl_ns and insl are identical as are outsl_ns and outsl, so remove the conditional use of insl_ns and outsl_ns.
The rest of this patch might indeed be correct, but the above comment bothers me. The "ns" versions of routines are supposed to be non-byte-swapped versions of the insl/outsl routines (which would byte-swap on big-endian archs such as powerpc.)
quoted hunk ↗ jump to hunk
diff --git a/drivers/net/3c509.c b/drivers/net/3c509.c index cbdae54..add6381 100644 --- a/drivers/net/3c509.c +++ b/drivers/net/3c509.c@@ -879,11 +879,7 @@ #endif outw(skb->len, ioaddr + TX_FIFO); outw(0x00, ioaddr + TX_FIFO); /* ... and the packet rounded to a doubleword. */ -#ifdef __powerpc__ - outsl_ns(ioaddr + TX_FIFO, skb->data, (skb->len + 3) >> 2); -#else outsl(ioaddr + TX_FIFO, skb->data, (skb->len + 3) >> 2); -#endif
Dohh, a hack like this to work around some possbile byte-swapping bug should never have been done in the first place :-( However, I presume someone added the __powerpc__ define here because they picked up a 3c509 at a garage sale, stuck it in a powerpc, found out it didn't work due to a byte-swapping bug, and then patched it as above. I'm disturbed that somehow outsl_ns() became identical to outsl() at some point, presumably breaking this patch. --linas