revert vlan(4) inherits TSO flags
authordlg <dlg@openbsd.org>
Sat, 22 Apr 2023 04:39:46 +0000 (04:39 +0000)
committerdlg <dlg@openbsd.org>
Sat, 22 Apr 2023 04:39:46 +0000 (04:39 +0000)
tb reports amd64 RAMDISK doesn't build with it.

also, vlan_flags_from_parent doesn't look right right. it iterates
over ifnetlist, which is all interfaces in the system, but appears
to assume they're all vlan interfaces and so uses a vlan_softc *
to inspect their if_softc pointers.

sys/net/if.c
sys/net/if_vlan.c
sys/net/if_vlan_var.h

index b534166..e06e8e8 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: if.c,v 1.691 2023/04/21 14:31:41 jan Exp $    */
+/*     $OpenBSD: if.c,v 1.692 2023/04/22 04:39:46 dlg Exp $    */
 /*     $NetBSD: if.c,v 1.35 1996/05/07 05:26:04 thorpej Exp $  */
 
 /*
@@ -92,7 +92,6 @@
 #include <net/if.h>
 #include <net/if_dl.h>
 #include <net/if_types.h>
-#include <net/if_vlan_var.h>
 #include <net/route.h>
 #include <net/netisr.h>
 
@@ -3150,10 +3149,6 @@ ifsettso(struct ifnet *ifp, int on)
        else
                goto out;
 
-       /* Change TSO flag also on attached vlan(4)/svlan(4) interfaces. */
-       vlan_flags_from_parent(ifp, IFXF_TSO);
-
-       /* restart interface */
        if (ISSET(ifp->if_flags, IFF_UP)) {
                /* go down for a moment... */
                CLR(ifp->if_flags, IFF_UP);
index 7d3bef9..8958233 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: if_vlan.c,v 1.212 2023/04/21 14:31:41 jan Exp $       */
+/*     $OpenBSD: if_vlan.c,v 1.213 2023/04/22 04:39:46 dlg Exp $       */
 
 /*
  * Copyright 1998 Massachusetts Institute of Technology
@@ -941,9 +941,6 @@ vlan_set_parent(struct vlan_softc *sc, const char *parent)
        if (!ISSET(sc->sc_flags, IFVF_LLADDR))
                if_setlladdr(ifp, LLADDR(ifp0->if_sadl));
 
-       /* Inherit flags from parent interface. */
-       vlan_flags_from_parent(ifp0, IFXF_TSO);
-
 put:
        if_put(ifp0);
        return (error);
@@ -965,33 +962,6 @@ vlan_del_parent(struct vlan_softc *sc)
        return (0);
 }
 
-void
-vlan_flags_from_parent(struct ifnet *ifp0, int flags)
-{
-       struct ifnet *ifp;
-       struct vlan_softc *sc;
-
-       TAILQ_FOREACH(ifp, &ifnetlist, if_list) {
-               if ((sc = ifp->if_softc) == NULL)
-                       continue;
-
-               if (sc->sc_type != ETHERTYPE_VLAN &&
-                   sc->sc_type != ETHERTYPE_QINQ)
-                       continue;
-
-               /* vlan and tso only works with hw tagging */
-               if (!ISSET(ifp0->if_capabilities, IFCAP_VLAN_HWTAGGING))
-                       CLR(flags, IFXF_TSO);
-
-               if (sc->sc_ifidx0 == ifp0->if_index) {
-                       if (ISSET(ifp0->if_xflags, flags))
-                               SET(ifp->if_xflags, flags);
-                       else
-                               CLR(ifp->if_xflags, flags);
-               }
-       }
-}
-
 int
 vlan_set_compat(struct ifnet *ifp, struct ifreq *ifr)
 {
index 1e4e57b..9e408cd 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: if_vlan_var.h,v 1.44 2023/04/21 14:31:41 jan Exp $    */
+/*     $OpenBSD: if_vlan_var.h,v 1.45 2023/04/22 04:39:46 dlg Exp $    */
 
 /*
  * Copyright 1998 Massachusetts Institute of Technology
@@ -49,7 +49,6 @@ struct        vlanreq {
 #ifdef _KERNEL
 struct mbuf    *vlan_input(struct ifnet *, struct mbuf *, unsigned int *);
 struct mbuf    *vlan_inject(struct mbuf *, uint16_t, uint16_t);
-void            vlan_flags_from_parent(struct ifnet *, int);
 #endif /* _KERNEL */
 
 #endif /* _NET_IF_VLAN_VAR_H_ */