fix bugs in rtl8139.c
PATCH 1/1 fix bugs in rtl8139.c
Signed-off-by Lucas Jin <[email protected]>
bug 1: "rx_ring" and "tx_buffer" are in local memory space, so they shouldn't be translated by "phys_to_bus".
bug 2: macro KSEG1ADDR is just for MIPS, so we can use "le32_to_cpu" as a common way.
------------------------------
drivers/rtl8139.c renamed from drivers/rtl8139.c.orig +4 -3
@@ -76,6 +76,7 @@#include <net.h> #include <asm/io.h> #include <pci.h> +#include <linux/byteorder/generic.h> #if (CONFIG_COMMANDS &CFG_CMD_NET ) && defined(CONFIG_NET_MULTI ) && \ defined(CONFIG_RTL8139 )
@@ -383,7 +384,7 @@#ifdef DEBUG_RX printf ("rx ring address is %X\n" ,(unsigned long )rx_ring);#endif -outl (phys_to_bus ((int )rx_ring), ioaddr + RxBuf); +outl ((int )rx_ring, ioaddr + RxBuf);/* If we add multicast support, the MAR0 register would have to be * initialized to 0xffffffffffffffff (two 32 bit accesses). Etherboot
@@ -423,7 +424,7 @@ tx_buffer[len++] ='\0' ; } -outl (phys_to_bus ((int )tx_buffer), ioaddr + TxAddr0 + cur_tx*4 ); +outl ((int )tx_buffer, ioaddr + TxAddr0 + cur_tx*4 );outl (((TX_FIFO_THRESH <<11 ) &0x003f0000 ) | len, ioaddr + TxStatus0 + cur_tx*4 );
@@ -480,7 +481,7 @@#endif ring_offs = cur_rx %RX_BUF_LEN ; - rx_status = *(unsigned int *)KSEG1ADDR ((rx_ring + ring_offs)); + rx_status =le32_to_cpu (*(unsigned int *)(rx_ring + ring_offs)); rx_size = rx_status >>16 ; rx_status &=0xffff ;
--------------
Lucas Jin