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",