Changeset View
Changeset View
Standalone View
Standalone View
sys/net/if_lagg.c
Show First 20 Lines • Show All 2,201 Lines • ▼ Show 20 Lines | #endif /* DEV_NETMAP */ | ||||
NET_EPOCH_EXIT(et); | NET_EPOCH_EXIT(et); | ||||
return (m); | return (m); | ||||
} | } | ||||
static struct mbuf * | static struct mbuf * | ||||
lagg_input_infiniband(struct ifnet *ifp, struct mbuf *m) | lagg_input_infiniband(struct ifnet *ifp, struct mbuf *m) | ||||
{ | { | ||||
struct epoch_tracker et; | |||||
struct lagg_port *lp = ifp->if_lagg; | struct lagg_port *lp = ifp->if_lagg; | ||||
struct lagg_softc *sc = lp->lp_softc; | struct lagg_softc *sc = lp->lp_softc; | ||||
struct ifnet *scifp = sc->sc_ifp; | struct ifnet *scifp = sc->sc_ifp; | ||||
NET_EPOCH_ENTER(et); | NET_EPOCH_ASSERT(); | ||||
if ((scifp->if_drv_flags & IFF_DRV_RUNNING) == 0 || | if ((scifp->if_drv_flags & IFF_DRV_RUNNING) == 0 || | ||||
lp->lp_detaching != 0 || | lp->lp_detaching != 0 || | ||||
sc->sc_proto == LAGG_PROTO_NONE) { | sc->sc_proto == LAGG_PROTO_NONE) { | ||||
NET_EPOCH_EXIT(et); | |||||
m_freem(m); | m_freem(m); | ||||
return (NULL); | return (NULL); | ||||
} | } | ||||
infiniband_bpf_mtap(scifp, m); | infiniband_bpf_mtap(scifp, m); | ||||
m = lagg_proto_input(sc, lp, m); | m = lagg_proto_input(sc, lp, m); | ||||
if (m != NULL && (scifp->if_flags & IFF_MONITOR) != 0) { | if (m != NULL && (scifp->if_flags & IFF_MONITOR) != 0) { | ||||
m_freem(m); | m_freem(m); | ||||
m = NULL; | m = NULL; | ||||
} | } | ||||
NET_EPOCH_EXIT(et); | |||||
return (m); | return (m); | ||||
} | } | ||||
static int | static int | ||||
lagg_media_change(struct ifnet *ifp) | lagg_media_change(struct ifnet *ifp) | ||||
{ | { | ||||
struct lagg_softc *sc = (struct lagg_softc *)ifp->if_softc; | struct lagg_softc *sc = (struct lagg_softc *)ifp->if_softc; | ||||
▲ Show 20 Lines • Show All 502 Lines • Show Last 20 Lines |