Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 9 Jan 2026 15:44:47 -0700
From:      Kevin Bowling <kevin.bowling@kev009.com>
To:        Brooks Davis <brooks@freebsd.org>
Cc:        src-committers@freebsd.org, dev-commits-src-all@freebsd.org,  dev-commits-src-main@freebsd.org
Subject:   Re: git: 31e7dc6b9a00 - main - iflib: remove convoluted custom zeroing code
Message-ID:  <CAK7dMtAn5CjE=rVTVVB7Si2sQEW2-J0f-hWMNRJ2MiG_nxpVsw@mail.gmail.com>
In-Reply-To: <696113e6.f233.5c1a099f@gitrepo.freebsd.org>

index | next in thread | previous in thread | raw e-mail

Can you mark for MFC?

On Fri, Jan 9, 2026 at 7:42 AM Brooks Davis <brooks@freebsd.org> wrote:
>
> The branch main has been updated by brooks:
>
> URL: https://cgit.FreeBSD.org/src/commit/?id=31e7dc6b9a000b02353bfc41cbd897533287cda2
>
> commit 31e7dc6b9a000b02353bfc41cbd897533287cda2
> Author:     Brooks Davis <brooks@FreeBSD.org>
> AuthorDate: 2026-01-09 14:19:49 +0000
> Commit:     Brooks Davis <brooks@FreeBSD.org>
> CommitDate: 2026-01-09 14:19:49 +0000
>
>     iflib: remove convoluted custom zeroing code
>
>     Replace a collection of aliasing violations and ifdefs with memset
>     (which now expands to __builtin_memset and should be quite reliably
>     inlined.)  The old code is hard to maintain as evidenced by the most
>     recent change to if_pkt_info_t updating the defines, but not the zeroing
>     code.
>
>     Reviewed by:    gallatin, erj
>     Effort:         CHERI upstreaming
>     Sponsored by:   Innovate UK
>     Fixes:          43d7ee540efe ("iflib: support for transmit side nic KTLS offload")
>     Differential Revision:  https://reviews.freebsd.org/D54605
> ---
>  sys/net/iflib.c | 65 +++++----------------------------------------------------
>  1 file changed, 5 insertions(+), 60 deletions(-)
>
> diff --git a/sys/net/iflib.c b/sys/net/iflib.c
> index fcd847ab6f7a..5c37f199e84c 100644
> --- a/sys/net/iflib.c
> +++ b/sys/net/iflib.c
> @@ -504,61 +504,6 @@ typedef struct if_rxsd {
>         iflib_fl_t ifsd_fl;
>  } *if_rxsd_t;
>
> -/* multiple of word size */
> -#ifdef __LP64__
> -#define PKT_INFO_SIZE  7
> -#define RXD_INFO_SIZE  5
> -#define PKT_TYPE uint64_t
> -#else
> -#define PKT_INFO_SIZE  12
> -#define RXD_INFO_SIZE  8
> -#define PKT_TYPE uint32_t
> -#endif
> -#define PKT_LOOP_BOUND ((PKT_INFO_SIZE / 3) * 3)
> -#define RXD_LOOP_BOUND ((RXD_INFO_SIZE / 4) * 4)
> -
> -typedef struct if_pkt_info_pad {
> -       PKT_TYPE pkt_val[PKT_INFO_SIZE];
> -} *if_pkt_info_pad_t;
> -typedef struct if_rxd_info_pad {
> -       PKT_TYPE rxd_val[RXD_INFO_SIZE];
> -} *if_rxd_info_pad_t;
> -
> -CTASSERT(sizeof(struct if_pkt_info_pad) == sizeof(struct if_pkt_info));
> -CTASSERT(sizeof(struct if_rxd_info_pad) == sizeof(struct if_rxd_info));
> -
> -static inline void
> -pkt_info_zero(if_pkt_info_t pi)
> -{
> -       if_pkt_info_pad_t pi_pad;
> -
> -       pi_pad = (if_pkt_info_pad_t)pi;
> -       pi_pad->pkt_val[0] = 0; pi_pad->pkt_val[1] = 0; pi_pad->pkt_val[2] = 0;
> -       pi_pad->pkt_val[3] = 0; pi_pad->pkt_val[4] = 0; pi_pad->pkt_val[5] = 0;
> -#ifndef __LP64__
> -       pi_pad->pkt_val[6] = 0; pi_pad->pkt_val[7] = 0; pi_pad->pkt_val[8] = 0;
> -       pi_pad->pkt_val[9] = 0; pi_pad->pkt_val[10] = 0;
> -#endif
> -}
> -
> -static inline void
> -rxd_info_zero(if_rxd_info_t ri)
> -{
> -       if_rxd_info_pad_t ri_pad;
> -       int i;
> -
> -       ri_pad = (if_rxd_info_pad_t)ri;
> -       for (i = 0; i < RXD_LOOP_BOUND; i += 4) {
> -               ri_pad->rxd_val[i] = 0;
> -               ri_pad->rxd_val[i + 1] = 0;
> -               ri_pad->rxd_val[i + 2] = 0;
> -               ri_pad->rxd_val[i + 3] = 0;
> -       }
> -#ifdef __LP64__
> -       ri_pad->rxd_val[RXD_INFO_SIZE - 1] = 0;
> -#endif
> -}
> -
>  /*
>   * Only allow a single packet to take up most 1/nth of the tx ring
>   */
> @@ -1068,7 +1013,7 @@ iflib_netmap_txsync(struct netmap_kring *kring, int flags)
>         if (nm_i != head) {     /* we have new packets to send */
>                 uint32_t pkt_len = 0, seg_idx = 0;
>                 int nic_i_start = -1, flags = 0;
> -               pkt_info_zero(&pi);
> +               memset(&pi, 0, sizeof(pi));
>                 pi.ipi_segs = txq->ift_segs;
>                 pi.ipi_qsidx = kring->ring_id;
>                 nic_i = netmap_idx_k2n(kring, nm_i);
> @@ -1261,7 +1206,7 @@ iflib_netmap_rxsync(struct netmap_kring *kring, int flags)
>                 nm_i = netmap_idx_n2k(kring, nic_i);
>                 MPASS(nm_i == kring->nr_hwtail);
>                 for (n = 0; avail > 0 && nm_i != hwtail_lim; n++, avail--) {
> -                       rxd_info_zero(&ri);
> +                       memset(&ri, 0, sizeof(ri));
>                         ri.iri_frags = rxq->ifr_frags;
>                         ri.iri_qsidx = kring->ring_id;
>                         ri.iri_ifp = ctx->ifc_ifp;
> @@ -2998,7 +2943,7 @@ iflib_rxeof(iflib_rxq_t rxq, qidx_t budget)
>                 /*
>                  * Reset client set fields to their default values
>                  */
> -               rxd_info_zero(&ri);
> +               memset(&ri, 0, sizeof(ri));
>                 ri.iri_qsidx = rxq->ifr_id;
>                 ri.iri_cidx = *cidxp;
>                 ri.iri_ifp = ifp;
> @@ -3580,7 +3525,7 @@ iflib_encap(iflib_txq_t txq, struct mbuf **m_headp)
>         }
>         m_head = *m_headp;
>
> -       pkt_info_zero(&pi);
> +       memset(&pi, 0, sizeof(pi));
>         pi.ipi_mflags = (m_head->m_flags & (M_VLANTAG | M_BCAST | M_MCAST));
>         pi.ipi_pidx = pidx;
>         pi.ipi_qsidx = txq->ift_id;
> @@ -4256,7 +4201,7 @@ iflib_if_transmit(if_t ifp, struct mbuf *m)
>         if (ctx->isc_txq_select_v2) {
>                 struct if_pkt_info pi;
>                 uint64_t early_pullups = 0;
> -               pkt_info_zero(&pi);
> +               memset(&pi, 0, sizeof(pi));
>
>                 err = iflib_parse_header_partial(&pi, &m, &early_pullups);
>                 if (__predict_false(err != 0)) {
>


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAK7dMtAn5CjE=rVTVVB7Si2sQEW2-J0f-hWMNRJ2MiG_nxpVsw>