From nobody Thu Aug  8 17:28:20 2024
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 4WfvC832TPz5THqK;
	Thu, 08 Aug 2024 17:28:20 +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 "R11" (verified OK))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4WfvC82WjCz4TC1;
	Thu,  8 Aug 2024 17:28:20 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1723138100;
	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=SRWxQbd38XDH7vyO4DbcToc9jotrH5DCFAM8QtMTJlQ=;
	b=iDbHJIzXFFsMVM2llEYI186EwgY5wNkgiHEINrOPwX7tZ9BGJbG44rbzfX3o8tfs6/C6dn
	+UewOVDLjLMpu9RI1e1wnY0wdqHjTemL5DQYLIQuWKExq6Lho6j20dexl7OUM8EVzV9upZ
	PkgQXH1Qxa/9TYod3spMSSZQ/yngLY2FvMgc6aC1dowHSlj32LHVSGMH3x9rFv7rXDsd6d
	iPxqMteNmDvrDAMXeiZ3Ls+puEO7T2oBQppBbsn04w93+jxVv7wknaxfwKwWneZY9/b8Ja
	9iMobXmtfkljXaQVHJSGNosQwkC9opOaCCUTt4FJGPjtvq40ydbo8NmxgscCAw==
ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1723138100; a=rsa-sha256; cv=none;
	b=ge3sSWTPWfpqhMCOz50udm+Axzza6utRL7gZ8rmg0lNJwR5g6nImSSXJ0s3eKa6huPqLhv
	82ttuAoBE73uPkGOyzgjoRTmpUrGL4MLm0sDPSXX8u916n+aTVppqqR4f79KOXBCWLxUHB
	Gs+oQsPuBp60/cR4b6RZuOspBSlNkDOjbCrAoIXfWV796p1Fd0byN+PVIyJB+aS1rfB6W1
	LKec+lwRbfYv2a1xc12PSM0rsw8a51QjbXTHrvZ3odZo42oUBjWrprq7dQ+akAEtMIJYtI
	0Ebs1HNH0IebD8U68G5l9fFZp7OS2tKH6oi95N4+5hfd3CjoAKTJfq3WldvKNg==
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=1723138100;
	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=SRWxQbd38XDH7vyO4DbcToc9jotrH5DCFAM8QtMTJlQ=;
	b=lELp5lkqvgBUy3aSkAy5NjKvHEhC30/4uO5rGfPG0sHX7cAZWgUeOamRAao18knIKC1wwd
	7DwDGq8MHuj8SMUSi6WZajBbQGp0X6Z5jCFiAnDnvKYQQTCPGX9Dbwm4GDm1+xNtd4Dxjw
	tXwgWUVW6gD1N+JaSaiD8JAbp3EgsrNqg6C2pL5/C0oyGRMwxlocFtrKkcgnAKOESxexF8
	nnbNh8LsdwsWzbZR9BE9iID08fOomR0LSnvV7H+tEZRaGxRBMO9ooMPEd9G7VD1BotGWns
	LW6hbLY76qmAvh9bx/kbfePqiAgs5Vkq4qdQapdqpRLgvmQHeZ7PUipNaEn5HQ==
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 4WfvC8267rzjFw;
	Thu,  8 Aug 2024 17:28:20 +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 478HSK5N046397;
	Thu, 8 Aug 2024 17:28:20 GMT
	(envelope-from git@gitrepo.freebsd.org)
Received: (from git@localhost)
	by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 478HSKUJ046395;
	Thu, 8 Aug 2024 17:28:20 GMT
	(envelope-from git)
Date: Thu, 8 Aug 2024 17:28:20 GMT
Message-Id: <202408081728.478HSKUJ046395@gitrepo.freebsd.org>
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org,
        dev-commits-src-branches@FreeBSD.org
From: Mark Johnston <markj@FreeBSD.org>
Subject: git: 4bf6ca0e71e2 - releng/13.4 - cxgbe: Flush transmitted
  packets more regularly in netmap mode
List-Id: Commits to the stable branches of the FreeBSD src repository <dev-commits-src-branches.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches
List-Help: <mailto:dev-commits-src-branches+help@freebsd.org>
List-Post: <mailto:dev-commits-src-branches@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-branches+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-branches+unsubscribe@freebsd.org>
X-BeenThere: dev-commits-src-branches@freebsd.org
Sender: owner-dev-commits-src-branches@FreeBSD.org
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: markj
X-Git-Repository: src
X-Git-Refname: refs/heads/releng/13.4
X-Git-Reftype: branch
X-Git-Commit: 4bf6ca0e71e2c726f6e662ea95b5c37d1fabf071
Auto-Submitted: auto-generated

The branch releng/13.4 has been updated by markj:

URL: https://cgit.FreeBSD.org/src/commit/?id=4bf6ca0e71e2c726f6e662ea95b5c37d1fabf071

commit 4bf6ca0e71e2c726f6e662ea95b5c37d1fabf071
Author:     Mark Johnston <markj@FreeBSD.org>
AuthorDate: 2024-05-21 19:18:32 +0000
Commit:     Mark Johnston <markj@FreeBSD.org>
CommitDate: 2024-08-08 17:13:56 +0000

    cxgbe: Flush transmitted packets more regularly in netmap mode
    
    Previously, when transmitting short runs of packets via cxgbe_nm_tx(),
    we would wait until a large number of packets were buffered before
    scheduling a task to clean transmit buffers.
    
    Approved by:    re (cperciva)
    Obtained from:  np
    
    (cherry picked from commit 6af3d59962449c66688361598163dd174cc5fb2a)
    (cherry picked from commit 59a9c20d7736d41be22791ec9a797cc535734ace)
---
 sys/dev/cxgbe/t4_netmap.c | 25 ++++++++++++-------------
 1 file changed, 12 insertions(+), 13 deletions(-)

diff --git a/sys/dev/cxgbe/t4_netmap.c b/sys/dev/cxgbe/t4_netmap.c
index 581094735c36..b60c1a88168c 100644
--- a/sys/dev/cxgbe/t4_netmap.c
+++ b/sys/dev/cxgbe/t4_netmap.c
@@ -1025,29 +1025,28 @@ cxgbe_nm_tx(struct adapter *sc, struct sge_nm_txq *nm_txq,
 			nm_txq->pidx = 0;
 		}
 
-		if (npkt == 0 && npkt_remaining == 0) {
+		if (npkt + npkt_remaining == 0) {
 			/* All done. */
-			if (lazy_tx_credit_flush == 0) {
+			if (lazy_tx_credit_flush == 0 ||
+			    NMIDXDIFF(nm_txq, equiqidx) >= nm_txq->sidx / 2) {
 				wr->equiq_to_len16 |= htobe32(F_FW_WR_EQUEQ |
 				    F_FW_WR_EQUIQ);
 				nm_txq->equeqidx = nm_txq->pidx;
 				nm_txq->equiqidx = nm_txq->pidx;
+			} else if (NMIDXDIFF(nm_txq, equeqidx) >= 64) {
+				wr->equiq_to_len16 |= htobe32(F_FW_WR_EQUEQ);
+				nm_txq->equeqidx = nm_txq->pidx;
 			}
 			ring_nm_txq_db(sc, nm_txq);
 			return;
 		}
-
-		if (NMIDXDIFF(nm_txq, equiqidx) >= nm_txq->sidx / 2) {
-			wr->equiq_to_len16 |= htobe32(F_FW_WR_EQUEQ |
-			    F_FW_WR_EQUIQ);
-			nm_txq->equeqidx = nm_txq->pidx;
-			nm_txq->equiqidx = nm_txq->pidx;
-		} else if (NMIDXDIFF(nm_txq, equeqidx) >= 64) {
-			wr->equiq_to_len16 |= htobe32(F_FW_WR_EQUEQ);
-			nm_txq->equeqidx = nm_txq->pidx;
-		}
-		if (NMIDXDIFF(nm_txq, dbidx) >= 2 * SGE_MAX_WR_NDESC)
+		if (NMIDXDIFF(nm_txq, dbidx) >= 2 * SGE_MAX_WR_NDESC) {
+			if (NMIDXDIFF(nm_txq, equeqidx) >= 64) {
+				wr->equiq_to_len16 |= htobe32(F_FW_WR_EQUEQ);
+				nm_txq->equeqidx = nm_txq->pidx;
+			}
 			ring_nm_txq_db(sc, nm_txq);
+		}
 	}
 
 	/* Will get called again. */