From nobody Mon Aug 24 00:58:41 2026 X-Original-To: dev-commits-src-all@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 4hSswx51q2z6q2N8 for ; Mon, 24 Aug 2026 00:58:41 +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 "YR2" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4hSswx2sGsz4608 for ; Mon, 24 Aug 2026 00:58:41 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1787533121; 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=ZSolRCmuMlEPTAzy+IjPa6uqMFFoqKwF6OKwatLwrHE=; b=U2S1YZ5s44yv704vELox/xspWP0HZlksv65j4TtA2jzzrotIuYUVbIfwcnIOEoU2qT8MBB 1lNK7sHSulCm2BSzBMNdX9ewURTmgwl05s23PkkrbFt1r4leMuCFLqst0hXp3UdS8IZfa1 Mzj11NzGJL5jBj8mc7v5qgrlrefz4+70/Ot1tTbuQQSqHH/TfKAO82SvIAs8yDRsVkkoZ5 uPdvHzbDi9V+rGiSd8ekySxwUGf8XKlQtN4H/52WR3M8mvfL611ZBZevNnQm1caDVS0d/+ j3P4Wr/Hg4JcF1GfQrs6WMLgubw1bQny5Z3IxBrxc81cNpLGiGX71ihCb+QkLQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1787533121; a=rsa-sha256; cv=none; b=Dikoe8x5Vtpd2xXvka8xQzJgq0V5/wBgQTQoFr/W14KNijnWhG4JnxRpKaxlgu9Vu5avdb RVaRS9XIdG7BUS+ef5rkbJTikkVgmITdFlD1n8vqeteQHhDImTjmjfNsUrMlag7Nut3ZWr rDnEQv3cPi8au2FgempRskMlSlNe1UEcqW+xA50yoxbRE5oy59OQR8UstRLZmAHA1uOqnI WDonakejwHyJxobJanpCMTd1fJz3mCCkBpdzDSeB8XyknF6sE9Amt0EDe2o4Sb/BnM7SxC YexaWDqlRHcTM2qSFB8bcDlPVioq5KpL3T3emuH5yDtD5zKhvIi6Mb6U4vLCtw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1787533121; 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=ZSolRCmuMlEPTAzy+IjPa6uqMFFoqKwF6OKwatLwrHE=; b=kQP2tuVHpD+GchrlTObQ5/E0Cvl3HsxN0cYnq/5461uxW2aLKKOLeWOHb8lyg8SPhgEFKl z6lftwW5Uj99GEp36PVd9ddLzaHuxkgSkxj5JaO8tGKq+hxtdBd9UKm7Hc8flTs3skH3JI QldNemmYapIEsUWZSY4Lnj2azeWfPGhJ5GMz7GinCz62RyZWgXfVieLiMqjZvlRB5OIU2z LRXXc2bOBQhOx+aWYLdITjBVO5GEddlb//p2UhHR0Uh/3YUq+BLuqnTLMJ4xBJGAViewv0 POMcZmOtH3kmXIV9htQ7o6qoYl4GdLJ+9h0Ob4HtT9djEkVcb5KI28asYyTsIg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hSswx1phkzhwq for ; Mon, 24 Aug 2026 00:58:41 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3337f by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 24 Aug 2026 00:58:41 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kevin Bowling Subject: git: a721f72dea13 - stable/14 - ixl: Honor iflib transmit completion batching List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org List-Id: 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/14 X-Git-Reftype: branch X-Git-Commit: a721f72dea13e716fb702b36358116dbc0f1679b Auto-Submitted: auto-generated Date: Mon, 24 Aug 2026 00:58:41 +0000 Message-Id: <6a8b9741.3337f.da4bb8a@gitrepo.freebsd.org> The branch stable/14 has been updated by kbowling: URL: https://cgit.FreeBSD.org/src/commit/?id=a721f72dea13e716fb702b36358116dbc0f1679b commit a721f72dea13e716fb702b36358116dbc0f1679b Author: Kevin Bowling AuthorDate: 2026-08-10 07:31:48 +0000 Commit: Kevin Bowling CommitDate: 2026-08-24 00:56:24 +0000 ixl: Honor iflib transmit completion batching ixl uses head writeback by default. Hardware publishes the transmit ring head through DMA only after completing a descriptor marked RS. Marking every packet requested much more frequent head updates than iflib needs to reclaim descriptors. iflib marks selected packets with IPI_TX_INTR as completion checkpoints. It forces a checkpoint as deferred work or ring pressure grows. Retain EOP on every packet, but set RS only at those checkpoints. This batches head writebacks while preserving bounded descriptor reclamation. The optional descriptor writeback mode benefits as well. ixl already recorded only IPI_TX_INTR descriptors in its report-status queue, so status written for every other packet was not inspected. DPDK uses the same sparse RS design. Let iflib choose the adaptive interval for FreeBSD. This is a PCIe/memory bandwidth savings. (cherry picked from commit dd32931271c784caf2c51e27f24514093b81429c) --- sys/dev/ixl/ixl_txrx.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/sys/dev/ixl/ixl_txrx.c b/sys/dev/ixl/ixl_txrx.c index d5ec81499308..6acf1dfaf009 100644 --- a/sys/dev/ixl/ixl_txrx.c +++ b/sys/dev/ixl/ixl_txrx.c @@ -332,8 +332,6 @@ ixl_tso_setup(struct tx_ring *txr, if_pkt_info_t pi) * - return 0 on success, positive on failure * **********************************************************************/ -#define IXL_TXD_CMD (I40E_TX_DESC_CMD_EOP | I40E_TX_DESC_CMD_RS) - static int ixl_isc_txd_encap(void *arg, if_pkt_info_t pi) { @@ -345,12 +343,15 @@ ixl_isc_txd_encap(void *arg, if_pkt_info_t pi) bus_dma_segment_t *segs = pi->ipi_segs; struct i40e_tx_desc *txd = NULL; int i, j, mask, pidx_last; - u32 cmd, off, tx_intr; + u32 cmd, off, tx_intr, txd_cmd; cmd = off = 0; i = pi->ipi_pidx; tx_intr = (pi->ipi_flags & IPI_TX_INTR); + txd_cmd = I40E_TX_DESC_CMD_EOP; + if (tx_intr) + txd_cmd |= I40E_TX_DESC_CMD_RS; /* Set up the TSO/CSUM offload */ if (pi->ipi_csum_flags & CSUM_OFFLOAD) { @@ -397,7 +398,7 @@ ixl_isc_txd_encap(void *arg, if_pkt_info_t pi) } /* Set the last descriptor for report */ txd->cmd_type_offset_bsz |= - htole64(((u64)IXL_TXD_CMD << I40E_TXD_QW1_CMD_SHIFT)); + htole64((u64)txd_cmd << I40E_TXD_QW1_CMD_SHIFT); /* Add to report status array (if using TX interrupts) */ if (!vsi->enable_head_writeback && tx_intr) { txr->tx_rsq[txr->tx_rs_pidx] = pidx_last;