bridge_ifenqueue() does not need any spl protection, if_output()
already raises it.

ok?

Index: net/if_bridge.c
===================================================================
RCS file: /cvs/src/sys/net/if_bridge.c,v
retrieving revision 1.241
diff -u -p -r1.241 if_bridge.c
--- net/if_bridge.c     8 Jun 2015 13:44:08 -0000       1.241
+++ net/if_bridge.c     8 Jun 2015 13:48:29 -0000
@@ -967,7 +967,7 @@ bridge_output(struct ifnet *ifp, struct 
        struct bridge_rtnode *dst_p = NULL;
        struct ether_addr *dst;
        struct bridge_softc *sc;
-       int s, error, len;
+       int error, len;
 
        /* ifp must be a member interface of the bridge. */ 
        if (ifp->if_bridgeport == NULL) {
@@ -1072,9 +1072,7 @@ bridge_output(struct ifnet *ifp, struct 
                                mc = m1;
                        }
 
-                       s = splnet();
                        error = bridge_ifenqueue(sc, dst_if, mc);
-                       splx(s);
                        if (error)
                                continue;
                }
@@ -1093,9 +1091,7 @@ sendunicast:
                m_freem(m);
                return (ENETDOWN);
        }
-       s = splnet();
        bridge_ifenqueue(sc, dst_if, m);
-       splx(s);
        return (0);
 }
 
@@ -1135,12 +1131,12 @@ bridgeintr(void)
 void
 bridgeintr_frame(struct bridge_softc *sc, struct mbuf *m)
 {
-       int s, len;
        struct ifnet *src_if, *dst_if;
        struct bridge_iflist *ifl;
        struct bridge_rtnode *dst_p;
        struct ether_addr *dst, *src;
        struct ether_header eh;
+       int len;
 
        if ((sc->sc_if.if_flags & IFF_RUNNING) == 0) {
                m_freem(m);
@@ -1293,9 +1289,7 @@ bridgeintr_frame(struct bridge_softc *sc
        if ((len - ETHER_HDR_LEN) > dst_if->if_mtu)
                bridge_fragment(sc, dst_if, &eh, m);
        else {
-               s = splnet();
                bridge_ifenqueue(sc, dst_if, m);
-               splx(s);
        }
 }
 
@@ -1499,7 +1493,7 @@ bridge_broadcast(struct bridge_softc *sc
        struct bridge_iflist *p;
        struct mbuf *mc;
        struct ifnet *dst_if;
-       int len, s, used = 0;
+       int len, used = 0;
 
        TAILQ_FOREACH(p, &sc->sc_iflist, next) {
                /*
@@ -1585,9 +1579,7 @@ bridge_broadcast(struct bridge_softc *sc
                if ((len - ETHER_HDR_LEN) > dst_if->if_mtu)
                        bridge_fragment(sc, dst_if, eh, mc);
                else {
-                       s = splnet();
                        bridge_ifenqueue(sc, dst_if, mc);
-                       splx(s);
                }
        }
 
@@ -1638,7 +1630,7 @@ bridge_span(struct bridge_softc *sc, str
        struct bridge_iflist *p;
        struct ifnet *ifp;
        struct mbuf *mc, *m;
-       int s, error;
+       int error;
 
        if (TAILQ_EMPTY(&sc->sc_spanlist))
                return;
@@ -1665,9 +1657,7 @@ bridge_span(struct bridge_softc *sc, str
                        continue;
                }
 
-               s = splnet();
                error = bridge_ifenqueue(sc, ifp, mc);
-               splx(s);
                if (error)
                        continue;
        }
@@ -2555,7 +2545,7 @@ bridge_fragment(struct bridge_softc *sc,
 {
        struct llc llc;
        struct mbuf *m0;
-       int s, error = 0;
+       int error = 0;
        int hassnap = 0;
        u_int16_t etype;
        struct ip *ip;
@@ -2570,9 +2560,7 @@ bridge_fragment(struct bridge_softc *sc,
                        len += ETHER_VLAN_ENCAP_LEN;
                if ((ifp->if_capabilities & IFCAP_VLAN_MTU) &&
                    (len - sizeof(struct ether_vlan_header) <= ifp->if_mtu)) {
-                       s = splnet();
                        bridge_ifenqueue(sc, ifp, m);
-                       splx(s);
                        return;
                }
                goto dropit;
@@ -2640,13 +2628,10 @@ bridge_fragment(struct bridge_softc *sc,
                                continue;
                        }
                        bcopy(eh, mtod(m, caddr_t), sizeof(*eh));
-                       s = splnet();
                        error = bridge_ifenqueue(sc, ifp, m);
                        if (error) {
-                               splx(s);
                                continue;
                        }
-                       splx(s);
                } else
                        m_freem(m);
        }

Reply via email to