Fw: [PATCH] Remove powerpc specific parts of 3c509 driver
Linas Vepstas
linas at austin.ibm.com
Wed Sep 20 04:42:43 EST 2006
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.)
> 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
More information about the Linuxppc-dev
mailing list