epic100: Test __BIG_ENDIAN instead of (non-existent) CONFIG_BIG_ENDIAN
Subsystems (2)
PATCH 1/1 epic100: Test __BIG_ENDIAN instead of (non-existent) CONFIG_BIG_ENDIAN
Probably no one has used this driver on big-endian systems, since it was setting up descriptor swapping if CONFIG_BIG_ENDIAN is set, which it never is, since that symbol is not mentioned anywhere else in the kernel source. Switch this test to a check for __BIG_ENDIAN so it has a chance at working.
--- drivers/net/epic100.c | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-)
drivers/net/epic100.c +4 -3
@@ -87,6 +87,7 @@ static int rx_copybreak;#include <linux/bitops.h> #include <asm/io.h> #include <asm/uaccess.h> +#include <asm/byteorder.h> /* These identify the driver base version and may not be removed. */ static char version[] __devinitdata =
@@ -230,7 +231,7 @@ static const u16 media2miictl[16] = {* The EPIC100 Rx and Tx buffer descriptors. Note that these * really ARE host-endian; it's not a misannotation. We tell * the card to byteswap them internally on big-endian hosts - -* look for #ifdef CONFIG_BIG_ENDIAN in epic_open(). +* look for #ifdef __BIG_ENDIAN in epic_open(). */ struct epic_tx_desc {
@@ -690,7 +691,7 @@ static int epic_open(struct net_device *dev)outl ((inl (ioaddr +NVCTL ) & ~0x003C ) |0x4800 , ioaddr +NVCTL );/* Tell the chip to byteswap descriptors on big-endian hosts */ -#ifdef CONFIG_BIG_ENDIAN +#ifdef __BIG_ENDIANoutl (0x4432 | (RX_FIFO_THRESH <<8 ), ioaddr +GENCTL );inl (ioaddr +GENCTL );outl (0x0432 | (RX_FIFO_THRESH <<8 ), ioaddr +GENCTL );
@@ -806,7 +807,7 @@ static void epic_restart(struct net_device *dev)for (i =16 ; i >0 ; i--)outl (0x0008 , ioaddr +TEST1 ); -#ifdef CONFIG_BIG_ENDIAN +#ifdef __BIG_ENDIANoutl (0x0432 | (RX_FIFO_THRESH <<8 ), ioaddr +GENCTL );#else outl (0x0412 | (RX_FIFO_THRESH <<8 ), ioaddr +GENCTL );
Signature · 2 lines
Roland Dreier <[email protected]> || For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/index.html
Quoted 7 lines · Roland Dreier
Probably no one has used this driver on big-endian systems, since it was setting up descriptor swapping if
CONFIG_BIG_ENDIANis set, which it never is, since that symbol is not mentioned anywhere else in the kernel source. Switch this test to a check for__BIG_ENDIANso it has a chance at working.Signed-off-by Roland Dreier<[email protected]>
From: Jeff Garzik <[email protected]>
Date: Wed, 02 Jun 2010 20:08:27 -0400
Quoted 10 lines · Roland Dreier
Quoted 9 lines
Probably no one has used this driver on big-endian systems, since it was
setting up descriptor swapping ifCONFIG_BIG_ENDIANis set, which it never is, since that symbol is not mentioned anywhere else in the kernel
source. Switch this test to a check for__BIG_ENDIANso it has a chance
at working.
Quoted 3 lines
Quoted 1 line
Signed-off-by Roland Dreier<[email protected]>Acked-by Jeff Garzik <[email protected]>
Applied.