BNX2X: MTU conversion
authorBarret Rhoden <brho@cs.berkeley.edu>
Mon, 23 Feb 2015 15:19:02 +0000 (10:19 -0500)
committerBarret Rhoden <brho@cs.berkeley.edu>
Mon, 2 Mar 2015 16:59:10 +0000 (11:59 -0500)
Plan 9's MTU includes the header (e.g. 1514, instead of 1500).  Linux
drivers expect just the payload and not the header, and will add in the
14 whenever it is needed.

There might be issues when plan 9 code accesses maxmtu, now that it's
1500 instead of 1514.  Keep a lookout for Etoobig in etherwrite.  What a
mess.

kern/drivers/net/bnx2x/bnx2x_dev.c

index bb47583..495c233 100644 (file)
@@ -439,6 +439,15 @@ static int bnx2x_pnp(struct ether *edev)
        edev->promiscuous = bnx2x_promiscuous;
        edev->multicast = bnx2x_multicast;
 
+       /* Plan 9's MTU includes the header (e.g. 1514, instead of 1500).  Linux
+        * drivers expect just the payload and not the header, and will add in the
+        * 14 whenever it is needed.
+        *
+        * There might be issues when plan 9 code accesses maxmtu, now that it's
+        * 1500 instead of 1514.  Keep a lookout for Etoobig in etherwrite.  What a
+        * mess. */
+       edev->maxmtu -= ETHERHDRSIZE;
+
        bnx2x_reset(ctlr);
 
        return 0;