Changes devether's Max Trans Unit to 1500 From 1514. Linux drivers track it as 1500, and add on the header as needed. Plan 9 uses 1514, and includes the header. I don't particularly care one way or another. This way is a little easier for porting, but have no problem with changing it back (given a port to bnx2x's MTU code).
diff --git a/kern/drivers/dev/ether.c b/kern/drivers/dev/ether.c index 9da3f38..b774889 100644 --- a/kern/drivers/dev/ether.c +++ b/kern/drivers/dev/ether.c
@@ -447,7 +447,7 @@ error(Ebadctl); } - if (n > ether->maxmtu) + if (n > ether->maxmtu + ETHERHDRSIZE) error(Etoobig); bp = allocb(n); if (waserror()) { @@ -489,7 +489,7 @@ runlock(ðer->rwlock); nexterror(); } - if (n > ether->maxmtu && (bp->flag & Btso) == 0) { + if (n > ether->maxmtu + ETHERHDRSIZE && (bp->flag & Btso) == 0) { freeb(bp); error(Etoobig); }
diff --git a/kern/drivers/net/bnx2x/bnx2x_dev.c b/kern/drivers/net/bnx2x/bnx2x_dev.c index 8a3c8f9..9c9303a 100644 --- a/kern/drivers/net/bnx2x/bnx2x_dev.c +++ b/kern/drivers/net/bnx2x/bnx2x_dev.c
@@ -480,15 +480,6 @@ 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;
diff --git a/kern/drivers/net/ether82563.c b/kern/drivers/net/ether82563.c index 93a65e2..8ce14da 100644 --- a/kern/drivers/net/ether82563.c +++ b/kern/drivers/net/ether82563.c
@@ -1924,7 +1924,7 @@ edev->irq = ctlr->pcidev->irqline; edev->tbdf = pci_to_tbdf(ctlr->pcidev); edev->mbps = 1000; - edev->maxmtu = ctlr->rbsz; + edev->maxmtu = ctlr->rbsz - ETHERHDRSIZE; /* MTU doesn't include header */ memmove(edev->ea, ctlr->ra, Eaddrlen); /*
diff --git a/kern/include/ip.h b/kern/include/ip.h index ea40e01..b779371 100644 --- a/kern/include/ip.h +++ b/kern/include/ip.h
@@ -1006,7 +1006,7 @@ enum { Eaddrlen = 6, ETHERMINTU = 60, /* minimum transmit size */ - ETHERMAXTU = 1514, /* maximum transmit size */ + ETHERMAXTU = 1500, /* maximum transmit size */ ETHERHDRSIZE = 14, /* size of an ethernet header */ };