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

Reply via email to