Date: Wed, 28 Mar 2018 14:31:12 +0000 (UTC) From: Mark Johnston <markj@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r331675 - in user/markj/netdump/sys: dev/alc dev/bge dev/re dev/virtio/network net netinet/netdump Message-ID: <201803281431.w2SEVCbM096878@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: markj Date: Wed Mar 28 14:31:12 2018 New Revision: 331675 URL: https://svnweb.freebsd.org/changeset/base/331675 Log: Simplify the driver configuration routine, and use ifnet accessors. Modified: user/markj/netdump/sys/dev/alc/if_alc.c user/markj/netdump/sys/dev/bge/if_bge.c user/markj/netdump/sys/dev/re/if_re.c user/markj/netdump/sys/dev/virtio/network/if_vtnet.c user/markj/netdump/sys/net/iflib.c user/markj/netdump/sys/netinet/netdump/netdump.h user/markj/netdump/sys/netinet/netdump/netdump_client.c Modified: user/markj/netdump/sys/dev/alc/if_alc.c ============================================================================== --- user/markj/netdump/sys/dev/alc/if_alc.c Wed Mar 28 14:29:34 2018 (r331674) +++ user/markj/netdump/sys/dev/alc/if_alc.c Wed Mar 28 14:31:12 2018 (r331675) @@ -4658,11 +4658,10 @@ sysctl_hw_alc_int_mod(SYSCTL_HANDLER_ARGS) #ifdef NETDUMP static void -alc_netdump_init(struct ifnet *ifp, int *nmbufp, int *nclustp) +alc_netdump_init(struct ifnet *ifp __unused, int *nrxr) { - *nmbufp += ALC_RX_RING_CNT; - *nclustp += ALC_RX_RING_CNT; + *nrxr = ALC_RX_RING_CNT; } static void @@ -4670,7 +4669,7 @@ alc_netdump_event(struct ifnet *ifp, enum netdump_ev e { struct alc_softc *sc; - sc = ifp->if_softc; + sc = if_getsoftc(ifp); switch (event) { case NETDUMP_START: sc->alc_buf_size = imin(sc->alc_buf_size, MCLBYTES); @@ -4686,8 +4685,7 @@ alc_netdump_transmit(struct ifnet *ifp, struct mbuf *m struct alc_softc *sc; int error; - sc = ifp->if_softc; - + sc = if_getsoftc(ifp); if ((if_getdrvflags(ifp) & (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)) != IFF_DRV_RUNNING) return (EBUSY); @@ -4703,8 +4701,7 @@ alc_netdump_poll(struct ifnet *ifp, int count) { struct alc_softc *sc; - sc = ifp->if_softc; - + sc = if_getsoftc(ifp); if ((if_getdrvflags(ifp) & (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)) != IFF_DRV_RUNNING) return (EBUSY); Modified: user/markj/netdump/sys/dev/bge/if_bge.c ============================================================================== --- user/markj/netdump/sys/dev/bge/if_bge.c Wed Mar 28 14:29:34 2018 (r331674) +++ user/markj/netdump/sys/dev/bge/if_bge.c Wed Mar 28 14:31:12 2018 (r331675) @@ -6811,13 +6811,12 @@ bge_get_counter(if_t ifp, ift_counter cnt) #ifdef NETDUMP static void -bge_netdump_init(if_t ifp, int *nmbufp, int *nclustp) +bge_netdump_init(if_t ifp, int *nrxr) { struct bge_softc *sc; sc = if_getsoftc(ifp); - *nmbufp += sc->bge_return_ring_cnt; - *nclustp += sc->bge_return_ring_cnt; + *nrxr = sc->bge_return_ring_cnt; } static void @@ -6842,11 +6841,11 @@ bge_netdump_transmit(if_t ifp, struct mbuf *m) uint32_t prodidx; int error; + sc = if_getsoftc(ifp); if ((if_getdrvflags(ifp) & (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)) != IFF_DRV_RUNNING) return (1); - sc = if_getsoftc(ifp); prodidx = sc->bge_tx_prodidx; error = bge_encap(sc, &m, &prodidx); if (error == 0) @@ -6861,7 +6860,6 @@ bge_netdump_poll(if_t ifp, int count) uint32_t rx_prod, tx_cons; sc = if_getsoftc(ifp); - if ((if_getdrvflags(ifp) & (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)) != IFF_DRV_RUNNING) return (1); Modified: user/markj/netdump/sys/dev/re/if_re.c ============================================================================== --- user/markj/netdump/sys/dev/re/if_re.c Wed Mar 28 14:29:34 2018 (r331674) +++ user/markj/netdump/sys/dev/re/if_re.c Wed Mar 28 14:31:12 2018 (r331675) @@ -4095,14 +4095,12 @@ sysctl_hw_re_int_mod(SYSCTL_HANDLER_ARGS) #ifdef NETDUMP static void -re_netdump_init(struct ifnet *ifp, int *nmbufp, int *nclustp) +re_netdump_init(struct ifnet *ifp, int *nrxr) { struct rl_softc *sc; - sc = ifp->if_softc; - - *nmbufp += sc->rl_ldata.rl_rx_desc_cnt; - *nclustp += sc->rl_ldata.rl_rx_desc_cnt; + sc = if_getsoftc(ifp); + *nrxr = sc->rl_ldata.rl_rx_desc_cnt; } static void @@ -4110,8 +4108,7 @@ re_netdump_event(struct ifnet *ifp, enum netdump_ev ev { struct rl_softc *sc; - sc = ifp->if_softc; - + sc = if_getsoftc(ifp); switch (event) { case NETDUMP_START: sc->rl_flags &= ~RL_FLAG_JUMBOV2; @@ -4127,9 +4124,8 @@ re_netdump_transmit(struct ifnet *ifp, struct mbuf *m) struct rl_softc *sc; int error; - sc = ifp->if_softc; - - if ((ifp->if_drv_flags & (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)) != + sc = if_getsoftc(ifp); + if ((if_getdrvflags(ifp) & (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)) != IFF_DRV_RUNNING || (sc->rl_flags & RL_FLAG_LINK) == 0) return (EBUSY); @@ -4145,10 +4141,9 @@ re_netdump_poll(struct ifnet *ifp, int count) struct rl_softc *sc; int error; - sc = ifp->if_softc; - - if ((ifp->if_drv_flags & (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)) != - IFF_DRV_RUNNING || (sc->rl_flags & RL_FLAG_LINK) == 0) + sc = if_getsoftc(ifp); + if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) == 0 || + (sc->rl_flags & RL_FLAG_LINK) == 0) return (EBUSY); re_txeof(sc); Modified: user/markj/netdump/sys/dev/virtio/network/if_vtnet.c ============================================================================== --- user/markj/netdump/sys/dev/virtio/network/if_vtnet.c Wed Mar 28 14:29:34 2018 (r331674) +++ user/markj/netdump/sys/dev/virtio/network/if_vtnet.c Wed Mar 28 14:31:12 2018 (r331675) @@ -3984,20 +3984,14 @@ vtnet_tunable_int(struct vtnet_softc *sc, const char * #ifdef NETDUMP static void -vtnet_netdump_init(struct ifnet *ifp, int *nmbufp, int *nclustp) +vtnet_netdump_init(struct ifnet *ifp, int *nrxr) { struct vtnet_softc *sc; - sc = ifp->if_softc; + sc = if_getsoftc(ifp); + *nrxr = sc->vtnet_max_vq_pairs; /* - * Allocate enough packet buffers to fill an entire queue. This ought - * to be enough provided that we don't have many queues. - */ - *nmbufp += virtqueue_size(sc->vtnet_rxqs[0].vtnrx_vq); - *nclustp += virtqueue_size(sc->vtnet_rxqs[0].vtnrx_vq); - - /* * We need to allocate from this zone in the transmit path, so ensure * that we have at least one item per header available. * XXX add a separate zone like we do for mbufs? otherwise we may alloc @@ -4012,8 +4006,7 @@ vtnet_netdump_event(struct ifnet *ifp, enum netdump_ev { struct vtnet_softc *sc; - sc = ifp->if_softc; - + sc = if_getsoftc(ifp); switch (event) { case NETDUMP_START: sc->vtnet_rx_clsize = MCLBYTES; @@ -4030,8 +4023,7 @@ vtnet_netdump_transmit(struct ifnet *ifp, struct mbuf struct vtnet_txq *txq; int error; - sc = ifp->if_softc; - + sc = if_getsoftc(ifp); if ((if_getdrvflags(ifp) & (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)) != IFF_DRV_RUNNING) return (EBUSY); @@ -4049,8 +4041,7 @@ vtnet_netdump_poll(struct ifnet *ifp, int count) struct vtnet_softc *sc; int i; - sc = ifp->if_softc; - + sc = if_getsoftc(ifp); if ((if_getdrvflags(ifp) & (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)) != IFF_DRV_RUNNING) return (EBUSY); Modified: user/markj/netdump/sys/net/iflib.c ============================================================================== --- user/markj/netdump/sys/net/iflib.c Wed Mar 28 14:29:34 2018 (r331674) +++ user/markj/netdump/sys/net/iflib.c Wed Mar 28 14:31:12 2018 (r331675) @@ -5973,14 +5973,12 @@ iflib_fixup_rx(struct mbuf *m) #ifdef NETDUMP static void -iflib_netdump_init(struct ifnet *ifp, int *nmbufp, int *nclustp) +iflib_netdump_init(struct ifnet *ifp, int *nrxr) { if_ctx_t ctx; - ctx = ifp->if_softc; - - *nmbufp += ctx->ifc_rxqs[0].ifr_fl->ifl_size; - *nclustp += ctx->ifc_rxqs[0].ifr_fl->ifl_size; + ctx = if_getsoftc(ifp); + *nrxr = NRXQSETS(ctx); } static void @@ -5990,7 +5988,7 @@ iflib_netdump_event(struct ifnet *ifp, enum netdump_ev if_softc_ctx_t scctx; int i; - ctx = ifp->if_softc; + ctx = if_getsoftc(ifp); scctx = &ctx->ifc_softc_ctx; switch (event) { @@ -6011,8 +6009,7 @@ iflib_netdump_transmit(struct ifnet *ifp, struct mbuf iflib_txq_t txq; int error; - ctx = ifp->if_softc; - + ctx = if_getsoftc(ifp); if ((if_getdrvflags(ifp) & (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)) != IFF_DRV_RUNNING) return (EBUSY); @@ -6032,7 +6029,7 @@ iflib_netdump_poll(struct ifnet *ifp, int count) iflib_txq_t txq; int i; - ctx = ifp->if_softc; + ctx = if_getsoftc(ifp); scctx = &ctx->ifc_softc_ctx; if ((if_getdrvflags(ifp) & (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)) != Modified: user/markj/netdump/sys/netinet/netdump/netdump.h ============================================================================== --- user/markj/netdump/sys/netinet/netdump/netdump.h Wed Mar 28 14:29:34 2018 (r331674) +++ user/markj/netdump/sys/netinet/netdump/netdump.h Wed Mar 28 14:31:12 2018 (r331675) @@ -86,7 +86,7 @@ enum netdump_ev { struct ifnet; struct mbuf; -typedef void netdump_init_t(struct ifnet *, int *nmbufp, int *nclustp); +typedef void netdump_init_t(struct ifnet *, int *nrxr); typedef void netdump_event_t(struct ifnet *, enum netdump_ev); typedef int netdump_transmit_t(struct ifnet *, struct mbuf *); typedef int netdump_poll_t(struct ifnet *, int); Modified: user/markj/netdump/sys/netinet/netdump/netdump_client.c ============================================================================== --- user/markj/netdump/sys/netinet/netdump/netdump_client.c Wed Mar 28 14:29:34 2018 (r331674) +++ user/markj/netdump/sys/netinet/netdump/netdump_client.c Wed Mar 28 14:31:12 2018 (r331675) @@ -1048,7 +1048,7 @@ static int netdump_configure(struct netdump_conf *conf) { struct ifnet *ifp; - int nmbuf, nclust; + int nmbuf, nclust, nrxr; IFNET_RLOCK_NOSLEEP(); TAILQ_FOREACH(ifp, &V_ifnet, if_link) { @@ -1067,13 +1067,15 @@ netdump_configure(struct netdump_conf *conf) return (1); } + ifp->if_netdump_methods->nd_init(ifp, &nrxr); + KASSERT(nrxr > 0, ("invalid receive ring count %d", nrxr)); + /* - * We need two headers per message. Multiply by four to give us some - * breathing room. + * We need two headers per message on the transmit side. Multiply by + * four to give us some breathing room. */ - nmbuf = NETDUMP_MAX_IN_FLIGHT * 4; - nclust = 0; - ifp->if_netdump_methods->nd_init(ifp, &nmbuf, &nclust); + nmbuf = NETDUMP_MAX_IN_FLIGHT * (4 + nrxr); + nclust = NETDUMP_MAX_IN_FLIGHT * nrxr; netdump_mbuf_init(nmbuf, nclust); nd_ifp = ifp;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201803281431.w2SEVCbM096878>