From nobody Mon Aug 10 08:27:44 2026 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 4hJSYY19cgz6nMfF for ; Mon, 10 Aug 2026 08:27:45 +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 "YR1" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4hJSYY0QNyz3h7j for ; Mon, 10 Aug 2026 08:27:45 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1786350465; 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=wDAPAxhvtb1nyt/8sgv1FL5mzvQ4VB1ldYnoz0mpc9A=; b=ryzS7XVLdooHI29VXYOrlM0GfzVsxvB9E0ob2yWXXvR2uOCXQH22ykiRBnmoogFTb8p1go HO1NwUP++VRlFt0BkmiMnDmRgSk29OtUxlOP9pIfolmZoNlh6uxiPJIgMYOIeG5Mpe3mmg gxosd5aYgbXASpZxLaXK211KtgfMO/hna8G0tfV/aNrQjhc6G4kl2iPAcD6kmnDT2LCNuL d6pj+XxWnbliGG8y1bY+swbWh9xYkBjJyg5rGwbbMm9jvQHsunsR994KZjfR9FhQRjn4yC V40vzuozl+kfgUbDHI2TOkKeMlQ7rkMxXWIDsxyIT1XCrKa0QEqN9yvDbkp4zQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1786350465; a=rsa-sha256; cv=none; b=FjBPpaWYZQKmhhwTbnZkWecPnyROwaHUF8oYUeJivnR71j1bpRiay+X3mSW5BokEe62TYI /XCZv7zjPtoDEFZecBy3GwqFt50znrtE7fNkgG508voZy7fc5ic23ahByMFOIXy9IwY4np VHRBj0TxhArh/kVGoY7BkY0b4PYyAzzbK9aC3uqObCgPpUUMztWpKyhkOW78Kgs+W7hi0X dFeuJ9TuPYbXbwcS98sECiuez/0LOKrV/LgngvOKoqHXXNEC0msFzNCymTK9gLDX5Vh08q ixOcLjGq9KRN2Yey4AXHLbZfeeD3DeNnZs8O6UX136nLd/WxP9hYqrL3V28mDg== 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=1786350465; 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=wDAPAxhvtb1nyt/8sgv1FL5mzvQ4VB1ldYnoz0mpc9A=; b=DkPvcsIGFw8sZXqLaY6P+sBbd2fA1AhauxPA2YRRs6m4eCJTEFnYO5ynue581ma3FYk8bN gwmnvJV731+R71bxfbLt08nTemM+7UKNrr9ZdHbxtdlPyhqmFNw3q00tuQ3J2T4qbIKRMF YpeivyJ+wdF1hQ31UC/Jci0lfhoUuPkuogije7e50NCeMmZ0owNcqG9oEG7PPJcx9gKGUJ LITJjOhMCsSLFbLfOrGS8YgKgN82ftmpJW9H0R+vxTEzO09Cr8uEeAv9f8ujaalureyufj 22GeeM6DZfqyuuQdvh3N7YztEo3N11b5ZpDF7pMQM6YvKl2idid5aGgmMCJSRw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hJSYX4rJXz11Hj for ; Mon, 10 Aug 2026 08:27:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 251a1 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 10 Aug 2026 08:27:44 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kevin Bowling Subject: git: dd32931271c7 - main - ixl: Honor iflib transmit completion batching 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 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/main X-Git-Reftype: branch X-Git-Commit: dd32931271c784caf2c51e27f24514093b81429c Auto-Submitted: auto-generated Date: Mon, 10 Aug 2026 08:27:44 +0000 Message-Id: <6a798b80.251a1.10a53050@gitrepo.freebsd.org> The branch main has been updated by kbowling: URL: https://cgit.FreeBSD.org/src/commit/?id=dd32931271c784caf2c51e27f24514093b81429c commit dd32931271c784caf2c51e27f24514093b81429c Author: Kevin Bowling AuthorDate: 2026-08-10 07:31:48 +0000 Commit: Kevin Bowling CommitDate: 2026-08-10 08:26:31 +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. MFC after: 2 weeks --- 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 bca5abd370f5..d047733ecbbb 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;