u-boot-brain/drivers/net
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
..
phy Coding Style cleanup; update CHANGELOG, prepare -rc1 2009-10-28 00:49:47 +01:00
3c589.c drivers/net/: get mac address from environment 2009-03-20 22:39:10 +01:00
3c589.h Big white-space cleanup. 2008-05-21 00:14:08 +02:00
4xx_enet.c ppc_4xx: Apply new HW register names 2009-10-07 09:15:20 +02:00
5701rls.c drivers/net : move net drivers to drivers/net 2007-11-25 18:35:17 +01:00
5701rls.h drivers/net : move net drivers to drivers/net 2007-11-25 18:35:17 +01:00
8390.h drivers/net : move net drivers to drivers/net 2007-11-25 18:35:17 +01:00
at91_emac.c new at91_emac network driver (NET_MULTI api) 2010-01-31 22:37:12 -08:00
ax88180.c AX88180: new gigabit network driver 2008-10-13 22:33:12 -07:00
ax88180.h Coding Style cleanup, update CHANGELOG, prepare 2008.10-rc3 2008-10-15 15:50:45 +02:00
ax88796.c net: ne2000: Divided a function of NE2000 driver 2008-10-13 22:28:32 -07:00
ax88796.h NE2000: Fix regresssion introduced by e710185aae on non AX88796 2008-04-28 22:26:36 -07:00
bcm570x_autoneg.c drivers/net : move net drivers to drivers/net 2007-11-25 18:35:17 +01:00
bcm570x_autoneg.h drivers/net : move net drivers to drivers/net 2007-11-25 18:35:17 +01:00
bcm570x_bits.h drivers/net : move net drivers to drivers/net 2007-11-25 18:35:17 +01:00
bcm570x_debug.h drivers/net : move net drivers to drivers/net 2007-11-25 18:35:17 +01:00
bcm570x_lm.h bcm570x: get mac address from environment 2009-03-20 22:39:10 +01:00
bcm570x_mm.h drivers/net : move net drivers to drivers/net 2007-11-25 18:35:17 +01:00
bcm570x_queue.h drivers/net : move net drivers to drivers/net 2007-11-25 18:35:17 +01:00
bcm570x.c bcm570x: get mac address from environment 2009-03-20 22:39:10 +01:00
bfin_mac.c Add debug message for Blackfin Ethernet Rx function. 2009-08-25 13:35:54 -07:00
bfin_mac.h Blackfin: bfin_mac: force boards to setup the MAC themselves 2009-03-20 22:39:09 +01:00
cs8900.c cs8900_initialize() cleanup 2010-01-31 22:34:33 -08:00
cs8900.h Convert CS8900 Ethernet driver to CONFIG_NET_MULTI API 2009-08-25 13:35:54 -07:00
davinci_emac.c TI: DaVinci: Updating EMAC driver for DM365, DM646x and DA8XX 2010-01-31 22:37:12 -08:00
dc2114x.c drivers/net/: get mac address from environment 2009-03-20 22:39:10 +01:00
dm9000x.c net: dm9000x: use standard I/O accessors 2010-05-03 14:52:48 -07:00
dm9000x.h dm9000 remove dead external phy support, gpio fix 2008-08-26 23:08:19 -07:00
dnet.c Coding Style cleanup; update CHANGELOG 2009-02-22 01:19:52 +01:00
dnet.h dnet: driver for Dave DNET ethernet controller 2009-02-10 00:16:27 +01:00
e1000.c net: e1000: Add support for the Intel 82546GB controller 2009-12-13 21:52:30 -08:00
e1000.h Add Intel E1000 PCIE card support 2009-08-08 02:26:05 -07:00
eepro100.c rename CFG_ macros to CONFIG_SYS 2008-10-18 21:54:03 +02:00
enc28j60.c drivers/net/: get mac address from environment 2009-03-20 22:39:10 +01:00
ep93xx_eth.c Add EP93xx ethernet driver 2010-01-31 22:37:12 -08:00
ep93xx_eth.h Add EP93xx ethernet driver 2010-01-31 22:37:12 -08:00
fec_mxc.c fec_mxc.c: Fix MX27 FEC MAC validity check 2010-05-03 14:52:49 -07:00
fec_mxc.h fec_mxc: add MX25 support 2010-03-07 12:36:36 -06:00
fsl_mcdmafec.c drivers/net/: get mac address from environment 2009-03-20 22:39:10 +01:00
ftmac100.c arm: A320: driver for FTMAC100 ethernet controller 2009-08-10 14:53:52 -07:00
ftmac100.h arm: A320: driver for FTMAC100 ethernet controller 2009-08-10 14:53:52 -07:00
greth.c Introduce netdev.h header file and remove externs 2008-09-02 21:18:16 -07:00
greth.h SPARC/LEON3: Added GRETH Ethernet 10/100/1000 driver. 2008-03-30 00:33:28 -04:00
inca-ip_sw.c Moved initialization of IncaIP Ethernet controller to board_eth_init 2008-09-02 21:18:17 -07:00
kirkwood_egiga.c net: Kirkwood_egiga.c bugfixes for rx path 2010-05-03 14:52:49 -07:00
kirkwood_egiga.h net: Kirkwood_egiga.c: fixed build warnings 2010-05-03 14:52:47 -07:00
ks8695eth.c drivers/net/: get mac address from environment 2009-03-20 22:39:10 +01:00
lan91c96.c NET: LAN91C96 CONFIG_NET_MULTIify 2009-12-13 21:31:26 -08:00
lan91c96.h NET: LAN91C96 CONFIG_NET_MULTIify 2009-12-13 21:31:26 -08:00
macb.c macb: Fix mii_phy_read and mii_phy_write functions 2010-01-31 22:37:12 -08:00
macb.h AT91CAP9 support : MACB changes 2008-02-14 09:37:58 +00:00
Makefile new at91_emac network driver (NET_MULTI api) 2010-01-31 22:37:12 -08:00
mcffec.c drivers/net/: get mac address from environment 2009-03-20 22:39:10 +01:00
mcfmii.c fix lockup in mcfmii/mii_discover_phy() in case communication fails 2010-05-03 14:52:48 -07:00
mpc5xxx_fec.c Remove unused "local_crc32" function. 2010-05-03 14:52:48 -07:00
mpc5xxx_fec.h Move MPC5xxx_FEC driver to drivers/net 2008-08-29 13:58:07 -06:00
mpc512x_fec.c mpc512x_fec: Move PHY initialization from probe into init routine. 2010-05-03 14:52:48 -07:00
mpc512x_fec.h MPC512x: remove include/mpc512x.h 2009-06-12 20:47:16 +02:00
natsemi.c drivers/net/natsemi.c: fix compile warning 2009-09-15 00:11:02 +02:00
ne2000_base.c rename CFG_ macros to CONFIG_SYS 2008-10-18 21:54:03 +02:00
ne2000_base.h net: ne2000: Divided a function of NE2000 driver 2008-10-13 22:28:32 -07:00
ne2000.c net: ne2000: Divided a function of NE2000 driver 2008-10-13 22:28:32 -07:00
ne2000.h NE2000: Fix regresssion introduced by e710185aae on non AX88796 2008-04-28 22:26:36 -07:00
netarm_eth.c rename CFG_ macros to CONFIG_SYS 2008-10-18 21:54:03 +02:00
netarm_eth.h drivers/net : move net drivers to drivers/net 2007-11-25 18:35:17 +01:00
netconsole.c netconsole: mark local funcs with static 2010-01-18 00:21:49 +01:00
nicext.h Big white-space cleanup. 2008-05-21 00:14:08 +02:00
ns7520_eth.c rename CFG_ macros to CONFIG_SYS 2008-10-18 21:54:03 +02:00
ns8382x.c Cleanup: fix "MHz" spelling 2008-10-21 11:25:39 +02:00
ns9750_eth.c rename CFG_ macros to CONFIG_SYS 2008-10-18 21:54:03 +02:00
pcnet.c Moved initialization of PCNET Ethernet controller to board_eth_init() 2008-09-02 21:18:17 -07:00
plb2800_eth.c Moved initialization of plb2800 Ethernet driver to board_eth_init 2008-09-02 21:18:18 -07:00
rtl8019.c drivers/net/: get mac address from environment 2009-03-20 22:39:10 +01:00
rtl8019.h Big white-space cleanup. 2008-05-21 00:14:08 +02:00
rtl8139.c Cleanup: fix "MHz" spelling 2008-10-21 11:25:39 +02:00
rtl8169.c rtl8169: fix PCI system memory address 2009-06-08 22:57:21 -07:00
s3c4510b_eth.c drivers/net/: get mac address from environment 2009-03-20 22:39:10 +01:00
s3c4510b_eth.h drivers/net/: get mac address from environment 2009-03-20 22:39:10 +01:00
sh_eth.c sh: sh_eth: Remove garbage from printf 2009-07-22 22:53:43 -07:00
sh_eth.h Fix 100Mbs ethernet operation on sh7763 based boards 2009-02-09 22:52:11 -08:00
smc911x.c smc911x driver frame alignment patch 2010-05-03 14:52:49 -07:00
smc911x.h smc911x: add support for LAN9220 2009-10-19 10:08:44 -07:00
smc91111.c Convert SMC91111 Ethernet driver to CONFIG_NET_MULTI API 2009-10-04 22:37:03 -07:00
smc91111.h SMC91111: Clean up SMC_inx macros on xsengine and xaeniax 2009-11-09 21:55:09 -08:00
tigon3.c bcm570x: get mac address from environment 2009-03-20 22:39:10 +01:00
tigon3.h Big white-space cleanup. 2008-05-21 00:14:08 +02:00
tsec.c tsec: Wait for both RX and TX to stop 2010-05-03 14:52:48 -07:00
tsi108_eth.c rename CFG_ macros to CONFIG_SYS 2008-10-18 21:54:03 +02:00
uli526x.c Update Freescale copyrights to remove "All Rights Reserved" 2009-07-29 09:59:22 +02:00
vsc7385.c rename CFG_ macros to CONFIG_SYS 2008-10-18 21:54:03 +02:00
xilinx_emaclite.c net: emaclite: Cleanup license to be GPL compatible 2009-09-14 14:40:04 +02:00