From nobody Thu Oct 29 06:02:59 2026 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4jFYYb45XBz6xr0x for ; Thu, 29 Oct 2026 06:02:59 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 4jFYYb2V2vz4rqS for ; Thu, 29 Oct 2026 06:02:59 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1793253779; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=MkThFdq0alggzHGc1lYFxDcw6vnt1gNQKcprzdsvK7A=; b=c332BIs33X1FeDA9CdMx5gPUcqhHKX8Rt+m6gkn4YkKvyGNFwrM/iVn7/pEvU59OK83642 P1LCRSrBxJsqbUMqYX26xZxEb+0PRSBVfeh1wSXRfn4TeDu6Jk6IQINTJD6JQWEc4fFFw0 8ky8vPWPKIpsWIwhmY83tw84QJrSXC59mYktfuQWL1XEzZ8lTW9taeCuLLHhCQffzVPy/l ktfoHV8rDbuL52Yp1HPKR+HLofUZ+egNI4Ty5agBK1sZRoFdASFPkH+NshH/qR6Hh1h4xS /KV6mbclzEBfzt+R+dC2ocBR7+XcLiLgfVqFmD5DoOhRZQAIdc4DO6nlRnGH6g== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1793253779; b=DcrIBPexLPnaFVeeKGPNmkR8C5uyBCeVF143JZekUBG5BGZkXYSOI/yN5n5NBgKyI+o1iG YtZXuSH7kaDrKu2GMpf/WDYXCW0atT4rBMXblD+9a+MhDLIzGLbcliTdD7j0CXV2FEAdTT 8U0L57+S36MHPRn93goUFk9Fdyv7wrY5IWIZoU0c0uWxg4iFbMAy0NhmkBklWH2Lg4sTPl E9aoqtDb1oXEUk/fuvvt6K2iuBshHfHssvyvpeP8Fj1PJ0BIYYehM12UJi/b94H2cqk58S l7bw95ukFyaMFYO4QXb0W2Np0M6d+RjhAqfSLC/B9dg0a7er1aJvcrebWo7yLA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1793253779; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=MkThFdq0alggzHGc1lYFxDcw6vnt1gNQKcprzdsvK7A=; b=SNLNiHRoLmkoJ4AYwAoabYZiQ/g6DmFQj+5sF6yc0/9cTMJza1tySSmIg+KkYH/99yV8vD BQMkK2iBXftUR0Z9jyhCiIv6X1zFKh+nq/kgLT4myoFv0B39XXPzLc5yAb48w0t7Ovco6q AfYLMJHeLpBreB1YJvNUy1BnuLQhGiPpkq2Hk3oSTHdyVhBuc5y2Z428XTsgw4PJ7DtSzY ynrVqkbpTR3uQne0Rhf+bGXIk+9ZnwXd9leaAhCM/ExTjIyFB0m65nXXB+kyUclX3wU52t MR5BcpfbSXOWazzfZa/1bpEe/fzL2RE4WCKC39dJz7/GcuNP4dp62jePiLH8xA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4jFYYb267JzR5h for ; Thu, 29 Oct 2026 06:02:59 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 393cd by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 29 Oct 2026 06:02:59 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Andrew Gallatin From: Kevin Bowling Subject: git: e308296f86a8 - stable/15 - iflib: remove transmit prefetching List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org List-Id: Commits to the stable branches of the FreeBSD src repository List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kbowling X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: e308296f86a8ca8380c51d64a4477a2765a3e331 Auto-Submitted: auto-generated Date: Thu, 29 Oct 2026 06:02:59 +0000 Message-Id: <6ae2e193.393cd.2f6c47d5@gitrepo.freebsd.org> The branch stable/15 has been updated by kbowling: URL: https://cgit.FreeBSD.org/src/commit/?id=e308296f86a8ca8380c51d64a4477a2765a3e331 commit e308296f86a8ca8380c51d64a4477a2765a3e331 Author: Andrew Gallatin AuthorDate: 2025-11-11 16:46:28 +0000 Commit: Kevin Bowling CommitDate: 2026-10-29 05:28:16 +0000 iflib: remove transmit prefetching Remove prefetching from the transmit path of iflib in the interest of increased performance and reduced complexity. Details regarding the performance penalties of prefetching can be found in the differential review. Note this prefetching was only done on link speeds of 10Gb/s and above, so the change is a no-op (or perhaps slight performance improvement simply due to the code simplification) for slower interfaces. Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D53674 Reviewed by: kbowling, markj, mjg (cherry picked from commit c9e4643da132c50f082a474c540108d7afee2d18) --- sys/net/iflib.c | 46 ++-------------------------------------------- 1 file changed, 2 insertions(+), 44 deletions(-) diff --git a/sys/net/iflib.c b/sys/net/iflib.c index 01b41ce37a7e..79a623db4e57 100644 --- a/sys/net/iflib.c +++ b/sys/net/iflib.c @@ -3539,25 +3539,6 @@ iflib_remove_mbuf(iflib_txq_t txq) return (m); } -static inline caddr_t -calc_next_txd(iflib_txq_t txq, int cidx, uint8_t qid) -{ - qidx_t size; - int ntxd; - caddr_t start, end, cur, next; - - ntxd = txq->ift_size; - size = txq->ift_txd_size[qid]; - start = txq->ift_ifdi[qid].idi_vaddr; - - if (__predict_false(size == 0)) - return (start); - cur = start + size * cidx; - end = start + size * ntxd; - next = CACHE_PTR_NEXT(cur); - return (next < end ? next : start); -} - /* * Pad an mbuf to ensure a minimum ethernet frame size. * min_frame_size is the frame size (less CRC) to pad the mbuf to @@ -3611,37 +3592,22 @@ iflib_encap(iflib_txq_t txq, struct mbuf **m_headp) bus_dma_tag_t buf_tag; bus_dma_segment_t *segs; struct mbuf *m_head, **ifsd_m; - void *next_txd; bus_dmamap_t map; struct if_pkt_info pi; int remap = 0; - int err, nsegs, ndesc, max_segs, pidx, cidx, next, ntxd; + int err, nsegs, ndesc, max_segs, pidx; ctx = txq->ift_ctx; sctx = ctx->ifc_sctx; scctx = &ctx->ifc_softc_ctx; segs = txq->ift_segs; - ntxd = txq->ift_size; m_head = *m_headp; map = NULL; /* * If we're doing TSO the next descriptor to clean may be quite far ahead */ - cidx = txq->ift_cidx; pidx = txq->ift_pidx; - if (ctx->ifc_flags & IFC_PREFETCH) { - next = (cidx + CACHE_PTR_INCREMENT) & (ntxd - 1); - if (!(ctx->ifc_flags & IFLIB_HAS_TXCQ)) { - next_txd = calc_next_txd(txq, cidx, 0); - prefetch(next_txd); - } - - /* prefetch the next cache line of mbuf pointers and flags */ - prefetch(&txq->ift_sds.ifsd_m[next]); - prefetch(&txq->ift_sds.ifsd_map[next]); - next = (cidx + CACHE_LINE_SIZE) & (ntxd - 1); - } map = txq->ift_sds.ifsd_map[pidx]; ifsd_m = txq->ift_sds.ifsd_m; @@ -3830,24 +3796,16 @@ defrag_failed: static void iflib_tx_desc_free(iflib_txq_t txq, int n) { - uint32_t qsize, cidx, mask, gen; + uint32_t qsize, cidx, gen; struct mbuf *m, **ifsd_m; - bool do_prefetch; cidx = txq->ift_cidx; gen = txq->ift_gen; qsize = txq->ift_size; - mask = qsize - 1; ifsd_m = txq->ift_sds.ifsd_m; - do_prefetch = (txq->ift_ctx->ifc_flags & IFC_PREFETCH); while (n-- > 0) { - if (do_prefetch) { - prefetch(ifsd_m[(cidx + 3) & mask]); - prefetch(ifsd_m[(cidx + 4) & mask]); - } if ((m = ifsd_m[cidx]) != NULL) { - prefetch(&ifsd_m[(cidx + CACHE_PTR_INCREMENT) & mask]); if (m->m_pkthdr.csum_flags & CSUM_TSO) { bus_dmamap_sync(txq->ift_tso_buf_tag, txq->ift_sds.ifsd_tso_map[cidx],