uboot/drivers
Valentin Yakovenkov bd75db3feb smc911x driver frame alignment patch
SMSC911x chips have alignment function to allow frame payload data
(which comes after 14-bytes ethernet header) to be aligned at some
boundary when reading it from fifo (usually - 4 bytes boundary).
This is done by inserting fake zeros bytes BEFORE actual frame data when
reading from SMSC's fifo.
This function controlled by RX_CFG register. There are bits that
represents amount of fake bytes to be inserted.

Linux uses alignment of 4 bytes. Ethernet frame header is 14 bytes long,
so we need to add 2 fake bytes to get payload data aligned at 4-bytes
boundary.
Linux driver does this by adding IP_ALIGNMENT constant (defined at
skb.h) when calculating fifo data length. All network subsystem of Linux
uses this constant too when calculating different offsets.

But u-boot does not use any packet data alignment, so we don't need to
add anything when calculating fifo data length.
Moreover, driver zeros the RX_CFG register just one line up, so chip
does not insert any fake data at the beginig. So calculated data length
is always bigger by 1 word.

It seems that at almost every packet read we get an underflow condition
at fifo and possible corruption of data. Especially at continuous
transfers, such as tftp.

Just after removing this magic addition, I've got tftp transfer speed as
it aught to be at 100Mbps. It was really slow before.

It seems that fifo underflow occurs only when using byte packing on
32-bit blackfin bus (may be because of very small delay between reads).

Signed-off-by: Valentin Yakovenkov <yakovenkov@niistt.ru>
Signed-off-by: Ben Warren <biggerbadderben@gmail.com>
2010-05-03 14:52:49 -07:00
..
bios_emulator ati_radeon: Support PCI virtual not eq bus mapping. 2010-04-08 15:30:47 +02:00
block fsl_sata: Move the snoop bit to another place 2010-04-26 22:37:54 -05:00
dma ColdFire: Fix compile warning messages 2009-08-26 03:44:31 -05:00
fpga add block write function to spartan3 slave serial load 2010-03-24 11:08:43 -05:00
gpio add a new AT91 GPIO driver 2010-02-12 12:31:54 -06:00
hwmon Misc ds1722 fixups 2009-09-04 21:54:52 +02:00
i2c fsl_i2c: Added a callpoint for i2c_board_late_init 2010-04-19 07:46:35 +02:00
input mpc5xxx: Remove all references to MGT5100 2010-03-21 22:44:42 +01:00
misc 85xx: Added various P1012/P1013/P1021/P1022 defines 2010-04-07 00:21:22 -05:00
mmc ppc/85xx: PIO Support for FSL eSDHC Controller Driver 2010-04-23 21:02:30 -05:00
mtd drivers/mtd/spi/eeprom_m95xxx.c: add missing error checking 2010-04-09 23:05:54 +02:00
net smc911x driver frame alignment patch 2010-05-03 14:52:49 -07:00
pci Move arch/ppc to arch/powerpc 2010-04-21 23:42:38 +02:00
pcmcia Misc ti_pci1410a fixups 2009-09-04 21:54:04 +02:00
power OMAP3 Move twl4030 mmc function 2009-07-29 09:57:43 +02:00
qe 83xx: UEC: Added support for bitBang MII driver access to PHYs 2010-05-03 14:52:48 -07:00
rtc Merge branch 'master' into next 2009-12-05 02:11:59 +01:00
serial Merge branch 'next' of git://git.denx.de/u-boot-nios 2010-04-27 22:53:04 +02:00
spi Move arch/ppc to arch/powerpc 2010-04-21 23:42:38 +02:00
twserial drivers/twserial: Add protocol driver for "three wire serial" interface. 2009-03-30 09:38:36 +02:00
usb mips: Move cpu/mips/* to arch/mips/cpu/* 2010-04-13 09:13:25 +02:00
video MX31: Added LCD support for QONG module 2010-04-27 23:13:37 +02:00
watchdog Convert at91 watchdog driver to new SoC access 2010-04-03 15:24:27 -05:00