Commit 13348bee authored by Brice Goglin's avatar Brice Goglin Committed by Jeff Garzik

[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: default avatarBrice Goglin <brice@myri.com>
Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
parent de3c4507
...@@ -1696,11 +1696,11 @@ static int myri10ge_open(struct net_device *dev) ...@@ -1696,11 +1696,11 @@ static int myri10ge_open(struct net_device *dev)
* tell him the buffer is larger, because we only use 1 * tell him the buffer is larger, because we only use 1
* buffer/pkt, and the mtu will prevent overruns. * buffer/pkt, and the mtu will prevent overruns.
*/ */
big_pow2 = dev->mtu + ETH_HLEN + MXGEFW_PAD; big_pow2 = dev->mtu + ETH_HLEN + VLAN_HLEN + MXGEFW_PAD;
if (big_pow2 < MYRI10GE_ALLOC_SIZE / 2) { if (big_pow2 < MYRI10GE_ALLOC_SIZE / 2) {
while ((big_pow2 & (big_pow2 - 1)) != 0) while ((big_pow2 & (big_pow2 - 1)) != 0)
big_pow2++; big_pow2++;
mgp->big_bytes = dev->mtu + ETH_HLEN + MXGEFW_PAD; mgp->big_bytes = dev->mtu + ETH_HLEN + VLAN_HLEN + MXGEFW_PAD;
} else { } else {
big_pow2 = MYRI10GE_ALLOC_SIZE; big_pow2 = MYRI10GE_ALLOC_SIZE;
mgp->big_bytes = big_pow2; mgp->big_bytes = big_pow2;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment