On Tue, Aug 26, 2014 at 09:11:14PM -0400, Brad Smith wrote: > On 20/08/14 8:03 PM, David Gwynne wrote: > >sthen@ says this is likely a bit optimistic. while most of our drivers > >unconditionally configure their max mru, there's some stupid ones that still > >interpret the configured mtu as a what the mru should be. > > > >dlg > > oce(4) and ix(4) need to be fixed.
this might fix oce. can anyone test? Index: if_oce.c =================================================================== RCS file: /cvs/src/sys/dev/pci/if_oce.c,v retrieving revision 1.78 diff -u -p -r1.78 if_oce.c --- if_oce.c 14 Aug 2014 09:52:03 -0000 1.78 +++ if_oce.c 27 Aug 2014 11:21:53 -0000 @@ -879,14 +879,6 @@ oce_ioctl(struct ifnet *ifp, u_long comm oce_stop(sc); } break; - case SIOCSIFMTU: - if (ifr->ifr_mtu < OCE_MIN_MTU || ifr->ifr_mtu > OCE_MAX_MTU) - error = EINVAL; - else if (ifp->if_mtu != ifr->ifr_mtu) { - ifp->if_mtu = ifr->ifr_mtu; - oce_init(sc); - } - break; case SIOCGIFMEDIA: case SIOCSIFMEDIA: error = ifmedia_ioctl(ifp, ifr, &sc->sc_media, command); @@ -1084,7 +1076,7 @@ oce_init(void *arg) goto error; OCE_RQ_FOREACH(sc, rq, i) { - rq->mtu = ifp->if_mtu + ETHER_HDR_LEN + ETHER_CRC_LEN + + rq->mtu = ifp->if_hardmtu + ETHER_HDR_LEN + ETHER_CRC_LEN + ETHER_VLAN_ENCAP_LEN; if (oce_new_rq(sc, rq)) { printf("%s: failed to create rq\n",