From nobody Tue Nov 11 17:00:53 2025 X-Original-To: dev-commits-src-main@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 4d5Xq93ClJz6GjcV; Tue, 11 Nov 2025 17:00:53 +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 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4d5Xq92XjLz3m0W; Tue, 11 Nov 2025 17:00:53 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1762880453; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=vR5i8bsSyN0eB0i1hxzx71o2YgQhsj0vKwPHeUroRg4=; b=hS1d5/MDs/Xfd2+eF69TQ74QysBdbMjAaXQXbvMPWYufgJ3rBjmKBC7nHg7W3io+i+XzdR sdxD1zILlBbYzpFA+vKBsXWB8g56NS8uYwAiAqGZw0k4dyOqWE3LubdrwuG+UxBa2qRP1B b5FsiGIcrn+gnmxud2PrGnOrBos7+gZT7GwUNiYM+JCuONTDQ64zJJUM9J2t07FTOnz0gt dZux2HR9sJycOTRvfT2s8r1SGfZeG7/9X1sy7bmQIPa/3kWR5I/Bk4OIZHfxK/HNpmF8Xo b+HITke80pIzNkR2qh4d+cMB8cZOkWLtaUP5XyUV4mbKFLndhezDtKahTmxlyA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1762880453; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=vR5i8bsSyN0eB0i1hxzx71o2YgQhsj0vKwPHeUroRg4=; b=kKTxXPuPk01Ziml0cO+Li/TOnmGOXaTqRsc7eIJKSQI9QCLJMeZycrepC/InVWak8QmZWd tTrjH2OMK+Ma5pTZYeb5X7YWc9IIEL5l08/tzIpsHVDIle21Atzwzn2lx29f/U4fPL5rTw 5tmj9adFdCB34pxqRQg04PTpB/4IWba0HZ0qIdWZGD+uTVoURxuzPHBHiItapnQADgtpma udQPv3P7fD1zWjt96ePgFIqZMIImeKMcveuDq9lr6XTTH6HBPo6j2TSbOpDcnI8Fq/KqKO MzP9L6XKyn3PEbvsmJD31TWzdQKdjxCi1AlnTF9L8ZJRlllyMjaDTl2t7V21zQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1762880453; a=rsa-sha256; cv=none; b=mrXEfB9tC2U/PhLKXdI5e8Z/8kTJcUwTvTEBHDduolcwDzeS+0M2WsdFQNrFPBnFqZiysy TJSUs+eMBxKYJL7VnFYtolU4a3y4oNal0/HF320Vit62IzHSpiwPlYiKyOEs5gW7k/4FyH x1HLZuu7H4hpfTv3XqH6jstWoxTrXdVkOUhTc8y5wY7A68NRrUFmdiDWLoKxaU9/XCfpnQ Rii67A2YRhcVR3H8XD6m8TdYyKoaazPRF0HKmWdTB/bwztCHxwcUSkfIhZaUrUnY4LQs1J SfdXmbP7tBr4ueJFeP7zzD3pT94FX0rds5kIhXP8xjeMTNkfO8fo+XEX8LDnMQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4d5Xq925mGz1Bmh; Tue, 11 Nov 2025 17:00:53 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5ABH0rDB092201; Tue, 11 Nov 2025 17:00:53 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5ABH0rR0092198; Tue, 11 Nov 2025 17:00:53 GMT (envelope-from git) Date: Tue, 11 Nov 2025 17:00:53 GMT Message-Id: <202511111700.5ABH0rR0092198@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Andrew Gallatin Subject: git: c9e4643da132 - main - iflib: remove transmit prefetching List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: gallatin X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: c9e4643da132c50f082a474c540108d7afee2d18 Auto-Submitted: auto-generated The branch main has been updated by gallatin: URL: https://cgit.FreeBSD.org/src/commit/?id=c9e4643da132c50f082a474c540108d7afee2d18 commit c9e4643da132c50f082a474c540108d7afee2d18 Author: Andrew Gallatin AuthorDate: 2025-11-11 16:46:28 +0000 Commit: Andrew Gallatin CommitDate: 2025-11-11 16:56:54 +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 --- 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 d2625da19cd2..ad2be119da7c 100644 --- a/sys/net/iflib.c +++ b/sys/net/iflib.c @@ -3449,25 +3449,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 @@ -3521,37 +3502,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; @@ -3737,24 +3703,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],