Module Name: src Committed By: thorpej Date: Thu Nov 16 05:13:14 UTC 2023
Modified Files: src/sys/dev/usb [thorpej-ifq]: if_umb.c if_upl.c src/sys/net [thorpej-ifq]: if.c if.h if_bridge.c if_gif.c if_ieee1394subr.c if_loop.c if_spppsubr.c if_vlan.c src/sys/net/lagg [thorpej-ifq]: if_laggproto.h Log Message: if_transmit_lock() and if_enqueue() are equivalent. if_enqueue() is a better name, so collapse everything down to that and garbage-collect if_transmit_lock(). To generate a diff of this commit: cvs rdiff -u -r1.25.8.1 -r1.25.8.2 src/sys/dev/usb/if_umb.c cvs rdiff -u -r1.77.8.1 -r1.77.8.2 src/sys/dev/usb/if_upl.c cvs rdiff -u -r1.529.2.1.2.3 -r1.529.2.1.2.4 src/sys/net/if.c cvs rdiff -u -r1.305.2.1.2.4 -r1.305.2.1.2.5 src/sys/net/if.h cvs rdiff -u -r1.189.6.1.2.1 -r1.189.6.1.2.2 src/sys/net/if_bridge.c cvs rdiff -u -r1.157.8.1 -r1.157.8.2 src/sys/net/if_gif.c cvs rdiff -u -r1.69.8.1 -r1.69.8.2 src/sys/net/if_ieee1394subr.c cvs rdiff -u -r1.118.8.1 -r1.118.8.2 src/sys/net/if_loop.c cvs rdiff -u -r1.267.4.2 -r1.267.4.3 src/sys/net/if_spppsubr.c cvs rdiff -u -r1.171.2.1.2.1 -r1.171.2.1.2.2 src/sys/net/if_vlan.c cvs rdiff -u -r1.18 -r1.18.8.1 src/sys/net/lagg/if_laggproto.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/usb/if_umb.c diff -u src/sys/dev/usb/if_umb.c:1.25.8.1 src/sys/dev/usb/if_umb.c:1.25.8.2 --- src/sys/dev/usb/if_umb.c:1.25.8.1 Thu Nov 16 04:30:21 2023 +++ src/sys/dev/usb/if_umb.c Thu Nov 16 05:13:13 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: if_umb.c,v 1.25.8.1 2023/11/16 04:30:21 thorpej Exp $ */ +/* $NetBSD: if_umb.c,v 1.25.8.2 2023/11/16 05:13:13 thorpej Exp $ */ /* $OpenBSD: if_umb.c,v 1.20 2018/09/10 17:00:45 gerhard Exp $ */ /* @@ -26,7 +26,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_umb.c,v 1.25.8.1 2023/11/16 04:30:21 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_umb.c,v 1.25.8.2 2023/11/16 05:13:13 thorpej Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -879,7 +879,7 @@ umb_output(struct ifnet *ifp, struct mbu * Queue message on interface, and start output if interface * not yet active. */ - error = if_transmit_lock(ifp, m); + error = if_enqueue(ifp, m); return error; } Index: src/sys/dev/usb/if_upl.c diff -u src/sys/dev/usb/if_upl.c:1.77.8.1 src/sys/dev/usb/if_upl.c:1.77.8.2 --- src/sys/dev/usb/if_upl.c:1.77.8.1 Thu Nov 16 04:30:21 2023 +++ src/sys/dev/usb/if_upl.c Thu Nov 16 05:13:13 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: if_upl.c,v 1.77.8.1 2023/11/16 04:30:21 thorpej Exp $ */ +/* $NetBSD: if_upl.c,v 1.77.8.2 2023/11/16 05:13:13 thorpej Exp $ */ /* * Copyright (c) 2000 The NetBSD Foundation, Inc. @@ -35,7 +35,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_upl.c,v 1.77.8.1 2023/11/16 04:30:21 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_upl.c,v 1.77.8.2 2023/11/16 05:13:13 thorpej Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -276,7 +276,7 @@ upl_output(struct ifnet *ifp, struct mbu * Queue message on interface, and start output if interface * not yet active. */ - return if_transmit_lock(ifp, m); + return if_enqueue(ifp, m); } static void Index: src/sys/net/if.c diff -u src/sys/net/if.c:1.529.2.1.2.3 src/sys/net/if.c:1.529.2.1.2.4 --- src/sys/net/if.c:1.529.2.1.2.3 Wed Nov 15 02:19:00 2023 +++ src/sys/net/if.c Thu Nov 16 05:13:13 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: if.c,v 1.529.2.1.2.3 2023/11/15 02:19:00 thorpej Exp $ */ +/* $NetBSD: if.c,v 1.529.2.1.2.4 2023/11/16 05:13:13 thorpej Exp $ */ /*- * Copyright (c) 1999, 2000, 2001, 2008, 2023 The NetBSD Foundation, Inc. @@ -90,7 +90,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if.c,v 1.529.2.1.2.3 2023/11/15 02:19:00 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if.c,v 1.529.2.1.2.4 2023/11/16 05:13:13 thorpej Exp $"); #if defined(_KERNEL_OPT) #include "opt_inet.h" @@ -3796,31 +3796,6 @@ out: return error; } -int -if_transmit_lock(struct ifnet *ifp, struct mbuf *m) -{ - int error; - - kmsan_check_mbuf(m); - -#ifdef ALTQ - KERNEL_LOCK(1, NULL); - if (ALTQ_IS_ENABLED(&ifp->if_snd)) { - error = if_transmit(ifp, m); - KERNEL_UNLOCK_ONE(NULL); - } else { - KERNEL_UNLOCK_ONE(NULL); - error = (*ifp->if_transmit)(ifp, m); - /* mbuf is already freed */ - } -#else /* !ALTQ */ - error = (*ifp->if_transmit)(ifp, m); - /* mbuf is already freed */ -#endif /* !ALTQ */ - - return error; -} - /* * ifq_init -- * @@ -4426,17 +4401,6 @@ ifq_classify_packet(struct ifqueue * con #endif /* ALTQ */ } -/* - * Queue message on interface, and start output if interface - * not yet active. - */ -int -if_enqueue(struct ifnet *ifp, struct mbuf *m) -{ - - return if_transmit_lock(ifp, m); -} - #ifdef ALTQ static void ifq_lock2(struct ifqueue * const ifq0, struct ifqueue * const ifq1) @@ -4453,6 +4417,35 @@ ifq_lock2(struct ifqueue * const ifq0, s #endif /* ALTQ */ /* + * Queue message on interface, and start output if interface + * not yet active. + */ +int +if_enqueue(struct ifnet *ifp, struct mbuf *m) +{ + int error; + + kmsan_check_mbuf(m); + +#ifdef ALTQ + KERNEL_LOCK(1, NULL); + if (ALTQ_IS_ENABLED(&ifp->if_snd)) { + error = if_transmit(ifp, m); + KERNEL_UNLOCK_ONE(NULL); + } else { + KERNEL_UNLOCK_ONE(NULL); + error = (*ifp->if_transmit)(ifp, m); + /* mbuf is already freed */ + } +#else /* !ALTQ */ + error = (*ifp->if_transmit)(ifp, m); + /* mbuf is already freed */ +#endif /* !ALTQ */ + + return error; +} + +/* * Queue message on interface, possibly using a second fast queue * * N.B. Unlike ifq_enqueue(), this does *not* start transmission on Index: src/sys/net/if.h diff -u src/sys/net/if.h:1.305.2.1.2.4 src/sys/net/if.h:1.305.2.1.2.5 --- src/sys/net/if.h:1.305.2.1.2.4 Thu Nov 16 04:30:22 2023 +++ src/sys/net/if.h Thu Nov 16 05:13:13 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: if.h,v 1.305.2.1.2.4 2023/11/16 04:30:22 thorpej Exp $ */ +/* $NetBSD: if.h,v 1.305.2.1.2.5 2023/11/16 05:13:13 thorpej Exp $ */ /*- * Copyright (c) 1999, 2000, 2001, 2023 The NetBSD Foundation, Inc. @@ -1338,8 +1338,6 @@ void p2p_rtrequest(int, struct rtentry * void if_clone_attach(struct if_clone *); void if_clone_detach(struct if_clone *); -int if_transmit_lock(struct ifnet *, struct mbuf *); - int if_enqueue(struct ifnet *, struct mbuf *); int if_enqueue2(struct ifnet *, struct ifqueue *, struct mbuf *); Index: src/sys/net/if_bridge.c diff -u src/sys/net/if_bridge.c:1.189.6.1.2.1 src/sys/net/if_bridge.c:1.189.6.1.2.2 --- src/sys/net/if_bridge.c:1.189.6.1.2.1 Thu Nov 16 05:02:23 2023 +++ src/sys/net/if_bridge.c Thu Nov 16 05:13:13 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: if_bridge.c,v 1.189.6.1.2.1 2023/11/16 05:02:23 thorpej Exp $ */ +/* $NetBSD: if_bridge.c,v 1.189.6.1.2.2 2023/11/16 05:13:13 thorpej Exp $ */ /* * Copyright 2001 Wasabi Systems, Inc. @@ -80,7 +80,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_bridge.c,v 1.189.6.1.2.1 2023/11/16 05:02:23 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_bridge.c,v 1.189.6.1.2.2 2023/11/16 05:13:13 thorpej Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -1515,7 +1515,7 @@ bridge_enqueue(struct bridge_softc *sc, len = m->m_pkthdr.len; mflags = m->m_flags; - error = if_transmit_lock(dst_ifp, m); + error = if_enqueue(dst_ifp, m); if (error) { /* mbuf is already freed */ if_statinc(&sc->sc_if, if_oerrors); Index: src/sys/net/if_gif.c diff -u src/sys/net/if_gif.c:1.157.8.1 src/sys/net/if_gif.c:1.157.8.2 --- src/sys/net/if_gif.c:1.157.8.1 Thu Nov 16 04:30:22 2023 +++ src/sys/net/if_gif.c Thu Nov 16 05:13:13 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: if_gif.c,v 1.157.8.1 2023/11/16 04:30:22 thorpej Exp $ */ +/* $NetBSD: if_gif.c,v 1.157.8.2 2023/11/16 05:13:13 thorpej Exp $ */ /* $KAME: if_gif.c,v 1.76 2001/08/20 02:01:02 kjc Exp $ */ /* @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_gif.c,v 1.157.8.1 2023/11/16 04:30:22 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_gif.c,v 1.157.8.2 2023/11/16 05:13:13 thorpej Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -572,7 +572,7 @@ gif_output(struct ifnet *ifp, struct mbu m->m_pkthdr.csum_flags = 0; m->m_pkthdr.csum_data = 0; - error = if_transmit_lock(ifp, m); + error = if_enqueue(ifp, m); end: if (var != NULL) Index: src/sys/net/if_ieee1394subr.c diff -u src/sys/net/if_ieee1394subr.c:1.69.8.1 src/sys/net/if_ieee1394subr.c:1.69.8.2 --- src/sys/net/if_ieee1394subr.c:1.69.8.1 Thu Nov 16 04:30:22 2023 +++ src/sys/net/if_ieee1394subr.c Thu Nov 16 05:13:13 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: if_ieee1394subr.c,v 1.69.8.1 2023/11/16 04:30:22 thorpej Exp $ */ +/* $NetBSD: if_ieee1394subr.c,v 1.69.8.2 2023/11/16 05:13:13 thorpej Exp $ */ /* * Copyright (c) 2000 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_ieee1394subr.c,v 1.69.8.1 2023/11/16 04:30:22 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_ieee1394subr.c,v 1.69.8.2 2023/11/16 05:13:13 thorpej Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -230,7 +230,7 @@ ieee1394_output(struct ifnet *ifp, struc while ((m = m0) != NULL) { m0 = m->m_nextpkt; - error = if_transmit_lock(ifp, m); + error = if_enqueue(ifp, m); if (error) { /* mbuf is already freed */ goto bad; Index: src/sys/net/if_loop.c diff -u src/sys/net/if_loop.c:1.118.8.1 src/sys/net/if_loop.c:1.118.8.2 --- src/sys/net/if_loop.c:1.118.8.1 Thu Nov 16 04:30:22 2023 +++ src/sys/net/if_loop.c Thu Nov 16 05:13:13 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: if_loop.c,v 1.118.8.1 2023/11/16 04:30:22 thorpej Exp $ */ +/* $NetBSD: if_loop.c,v 1.118.8.2 2023/11/16 05:13:13 thorpej Exp $ */ /* * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. @@ -65,7 +65,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_loop.c,v 1.118.8.1 2023/11/16 04:30:22 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_loop.c,v 1.118.8.2 2023/11/16 05:13:13 thorpej Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -289,7 +289,7 @@ looutput(struct ifnet *ifp, struct mbuf } *(mtod(m, uint32_t *)) = dst->sa_family; - error = if_transmit_lock(ifp, m); + error = if_enqueue(ifp, m); goto out; } #endif /* ALTQ */ Index: src/sys/net/if_spppsubr.c diff -u src/sys/net/if_spppsubr.c:1.267.4.2 src/sys/net/if_spppsubr.c:1.267.4.3 --- src/sys/net/if_spppsubr.c:1.267.4.2 Thu Nov 16 04:30:22 2023 +++ src/sys/net/if_spppsubr.c Thu Nov 16 05:13:13 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: if_spppsubr.c,v 1.267.4.2 2023/11/16 04:30:22 thorpej Exp $ */ +/* $NetBSD: if_spppsubr.c,v 1.267.4.3 2023/11/16 05:13:13 thorpej Exp $ */ /* * Synchronous PPP/Cisco link level subroutines. @@ -41,7 +41,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_spppsubr.c,v 1.267.4.2 2023/11/16 04:30:22 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_spppsubr.c,v 1.267.4.3 2023/11/16 05:13:13 thorpej Exp $"); #if defined(_KERNEL_OPT) #include "opt_inet.h" @@ -1018,7 +1018,7 @@ sppp_output(struct ifnet *ifp, struct mb pktlen = m->m_pkthdr.len; #ifdef SPPPSUBR_MPSAFE SPPP_UNLOCK(sp); - error = if_transmit_lock(ifp, m); + error = if_enqueue(ifp, m); SPPP_LOCK(sp, RW_READER); if (error == 0) if_statadd(ifp, if_obytes, pktlen + sp->pp_framebytes); Index: src/sys/net/if_vlan.c diff -u src/sys/net/if_vlan.c:1.171.2.1.2.1 src/sys/net/if_vlan.c:1.171.2.1.2.2 --- src/sys/net/if_vlan.c:1.171.2.1.2.1 Thu Nov 16 05:02:23 2023 +++ src/sys/net/if_vlan.c Thu Nov 16 05:13:13 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: if_vlan.c,v 1.171.2.1.2.1 2023/11/16 05:02:23 thorpej Exp $ */ +/* $NetBSD: if_vlan.c,v 1.171.2.1.2.2 2023/11/16 05:13:13 thorpej Exp $ */ /* * Copyright (c) 2000, 2001 The NetBSD Foundation, Inc. @@ -78,7 +78,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_vlan.c,v 1.171.2.1.2.1 2023/11/16 05:02:23 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_vlan.c,v 1.171.2.1.2.2 2023/11/16 05:13:13 thorpej Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -1318,7 +1318,7 @@ vlan_start(struct ifnet *ifp) continue; } - error = if_transmit_lock(p, m); + error = if_enqueue(p, m); if (error) { /* mbuf is already freed */ if_statinc(ifp, if_oerrors); @@ -1416,7 +1416,7 @@ vlan_transmit(struct ifnet *ifp, struct goto out; } - error = if_transmit_lock(p, m); + error = if_enqueue(p, m); net_stat_ref_t nsr = IF_STAT_GETREF(ifp); if (error) { /* mbuf is already freed */ Index: src/sys/net/lagg/if_laggproto.h diff -u src/sys/net/lagg/if_laggproto.h:1.18 src/sys/net/lagg/if_laggproto.h:1.18.8.1 --- src/sys/net/lagg/if_laggproto.h:1.18 Sun Jun 26 17:55:24 2022 +++ src/sys/net/lagg/if_laggproto.h Thu Nov 16 05:13:14 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: if_laggproto.h,v 1.18 2022/06/26 17:55:24 riastradh Exp $ */ +/* $NetBSD: if_laggproto.h,v 1.18.8.1 2023/11/16 05:13:14 thorpej Exp $ */ /* * Copyright (c) 2021 Internet Initiative Japan Inc. @@ -245,7 +245,7 @@ static inline int lagg_port_xmit(struct lagg_port *lp, struct mbuf *m) { - return if_transmit_lock(lp->lp_ifp, m); + return if_enqueue(lp->lp_ifp, m); } static inline bool