Thread (2 messages) 2 messages, 2 authors, 2009-09-27

Re: 2.6.31 regression: e1000e jumbo frames no longer work: 'Unsupported MTU setting'

From: Alexander Duyck <hidden>
Date: 2009-09-27 02:14:53
Also in: lkml
Subsystem: networking drivers, the rest · Maintainers: Andrew Lunn, "David S. Miller", Eric Dumazet, Jakub Kicinski, Paolo Abeni, Linus Torvalds

On Sat, Sep 26, 2009 at 4:16 AM, Nix [off-list ref] wrote:
[Bruce, you have changes in net-next in this area, so you might have a clue
 what's going on here.]

In 2.6.30.x, I was happily bringing up the 82574L cards in one server like
this:

ip link set fastnet up mtu 7200

As of 2.6.31.x, what I see is this:

spindle:/root# ip link set mtu 7200 dev fastnet
RTNETLINK answers: Invalid argument
[ 3380.261796] 0000:02:00.0: fastnet: Unsupported MTU setting

As far as I can tell, all MTUs above 1500 now fail.

'Unsupported' or not, this used to work, and I'd certainly expect jumbo
frames to be supported on a gigabit card!

I can't see any terribly relevant changes to e1000e between 2.6.30 and
2.6.31, so I'm Cc:ing netdev on the offchance that this is something
more generic (unlikely, as 7200-byte MTUs still work fine in 2.6.31 with
the r8169 I'm typing this on, but that doesn't help if half the subnet
is forced to use MTUs of 1500).
It looks like the problem is that the 82574 and 82583 seem to have
their max_hw_frame_size values swapped.  You might try applying the
patch below.  I am not sure if it will apply since I hand generated it
using the git patch that seems to have introduced the problem, and I
am sending the patch through an untested account that may mangle the
patch.  I will see about submitting an official patch for this
sometime next few days.

Thanks,

Alex
diff --git a/drivers/net/e1000e/82571.c b/drivers/net/e1000e/82571.c
--- a/drivers/net/e1000e/82571.c
+++ b/drivers/net/e1000e/82571.c
@@ -1803,7 +1803,7 @@ struct e1000_info e1000_82574_info = {
 				  | FLAG_HAS_AMT
 				  | FLAG_HAS_CTRLEXT_ON_LOAD,
 	.pba			= 20,
-	.max_hw_frame_size	= ETH_FRAME_LEN + ETH_FCS_LEN,
+	.max_hw_frame_size	= DEFAULT_JUMBO,
 	.get_variants		= e1000_get_variants_82571,
 	.mac_ops		= &e82571_mac_ops,
 	.phy_ops		= &e82_phy_ops_bm,
@@ -1820,7 +1820,7 @@ struct e1000_info e1000_82583_info = {
 				  | FLAG_HAS_AMT
 				  | FLAG_HAS_CTRLEXT_ON_LOAD,
 	.pba			= 20,
-	.max_hw_frame_size	= DEFAULT_JUMBO,
+	.max_hw_frame_size	= ETH_FRAME_LEN + ETH_FCS_LEN,
 	.get_variants		= e1000_get_variants_82571,
 	.mac_ops		= &e82571_mac_ops,
 	.phy_ops		= &e82_phy_ops_bm,

------------------------------------------------------------------------------
Come build with us! The BlackBerry&reg; Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9&#45;12, 2009. Register now&#33;
http://p.sf.net/sfu/devconf
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help