aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrice Goglin <brice@myri.com>2006-12-11 05:27:19 -0500
committerJeff Garzik <jeff@garzik.org>2006-12-11 09:54:06 -0500
commit13348beee529cd1200deeac161e1b2de0705b495 (patch)
treea68281b8d47b665199481a30431883ed8fed9dd9
parentde3c4507047f2457359551c49b093669acb4f190 (diff)
[PATCH] myri10ge: fix big_bytes in case of vlan frames
Fix sizing of big_bytes in the case of vlan frames. The 4 VLAN_HLEN bytes were omitted, leading to sizing the big buffer 4 bytes smaller than it should be. Due to how rx buffers are carved from pages, this was harmless for the common (9000, 1500) byte MTUs, but could lead to data corruption for some MTUs. Signed-off-by: Brice Goglin <brice@myri.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
-rw-r--r--drivers/net/myri10ge/myri10ge.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/net/myri10ge/myri10ge.c b/drivers/net/myri10ge/myri10ge.c
index d38217a7eb1..a0d1dae39fd 100644
--- a/drivers/net/myri10ge/myri10ge.c
+++ b/drivers/net/myri10ge/myri10ge.c
@@ -1696,11 +1696,11 @@ static int myri10ge_open(struct net_device *dev)
1696 * tell him the buffer is larger, because we only use 1 1696 * tell him the buffer is larger, because we only use 1
1697 * buffer/pkt, and the mtu will prevent overruns. 1697 * buffer/pkt, and the mtu will prevent overruns.
1698 */ 1698 */
1699 big_pow2 = dev->mtu + ETH_HLEN + MXGEFW_PAD; 1699 big_pow2 = dev->mtu + ETH_HLEN + VLAN_HLEN + MXGEFW_PAD;
1700 if (big_pow2 < MYRI10GE_ALLOC_SIZE / 2) { 1700 if (big_pow2 < MYRI10GE_ALLOC_SIZE / 2) {
1701 while ((big_pow2 & (big_pow2 - 1)) != 0) 1701 while ((big_pow2 & (big_pow2 - 1)) != 0)
1702 big_pow2++; 1702 big_pow2++;
1703 mgp->big_bytes = dev->mtu + ETH_HLEN + MXGEFW_PAD; 1703 mgp->big_bytes = dev->mtu + ETH_HLEN + VLAN_HLEN + MXGEFW_PAD;
1704 } else { 1704 } else {
1705 big_pow2 = MYRI10GE_ALLOC_SIZE; 1705 big_pow2 = MYRI10GE_ALLOC_SIZE;
1706 mgp->big_bytes = big_pow2; 1706 mgp->big_bytes = big_pow2;