aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/gianfar.h
diff options
context:
space:
mode:
authorAnton Vorontsov <avorontsov@mvista.com>2010-06-30 06:39:13 +0000
committerDavid S. Miller <davem@davemloft.net>2010-06-30 11:35:42 -0700
commitdeb90eacd084d9edfeda2f714d99c29a86360077 (patch)
treee0bbd8c70d6f88674d047f2c107772ef63998e9c /drivers/net/gianfar.h
parent7d3509774c2ef4ffd1c5fd2fac65dc4e071a6f21 (diff)
downloadkernel_samsung_smdk4412-deb90eacd084d9edfeda2f714d99c29a86360077.zip
kernel_samsung_smdk4412-deb90eacd084d9edfeda2f714d99c29a86360077.tar.gz
kernel_samsung_smdk4412-deb90eacd084d9edfeda2f714d99c29a86360077.tar.bz2
gianfar: Implement workaround for eTSEC76 erratum
MPC8313ECE says: "For TOE=1 huge or jumbo frames, the data required to generate the checksum may exceed the 2500-byte threshold beyond which the controller constrains itself to one memory fetch every 256 eTSEC system clocks. This throttling threshold is supposed to trigger only when the controller has sufficient data to keep transmit active for the duration of the memory fetches. The state machine handling this threshold, however, fails to take large TOE frames into account. As a result, TOE=1 frames larger than 2500 bytes often see excess delays before start of transmission." This patch implements the workaround as suggested by the errata document, i.e.: "Limit TOE=1 frames to less than 2500 bytes to avoid excess delays due to memory throttling. When using packets larger than 2700 bytes, it is recommended to turn TOE off." To be sure, we limit the TOE frames to 2500 bytes, and do software checksumming instead. Signed-off-by: Anton Vorontsov <avorontsov@mvista.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/gianfar.h')
-rw-r--r--drivers/net/gianfar.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/net/gianfar.h b/drivers/net/gianfar.h
index 0a0483c..c414374 100644
--- a/drivers/net/gianfar.h
+++ b/drivers/net/gianfar.h
@@ -1027,6 +1027,7 @@ struct gfar_priv_grp {
enum gfar_errata {
GFAR_ERRATA_74 = 0x01,
+ GFAR_ERRATA_76 = 0x02,
};
/* Struct stolen almost completely (and shamelessly) from the FCC enet source