From nobody Fri Jun 20 13:52:28 2025 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 4bNzSF41BNz5y3yP; Fri, 20 Jun 2025 13:52:29 +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 4bNzSF0lZzz3Xlp; Fri, 20 Jun 2025 13:52:29 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1750427549; 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=9l2gpHg+o5lwPgekZTnIFS9DvzgDpv9qEbbXKTip9T8=; b=jh7vd9kfVc+fg6yNzItfD2Acii7x0NoVxLawDC3SELf3aLmI2X3rZul7nCJuIDQ+mtVO1a jbpaoeoVPQks4DGMJu7lCIAYvQW4NSniBMJPS/Iat2hiYhH56Q+pieG7vbeV5lHUo+Asbb rmZcE0tBsRt09AgJQfkMlwMuTjZwydXRZubHZScSywMGPe+1INXSfcMOiRByP7cXbbtaeT 4Eqcxms5a2Ua3S6vvfBZlYJAjiEnp0tW/GD+jIsRhkPRq1zLYt2Yn5FoyNEUdfFkJoFJWD X5YlVIj84fPgdNDbnfXW84GyFBgQk5aMpO9pF1wlBsvdrZdG+EOMRKqNdnAkLA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1750427549; 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=9l2gpHg+o5lwPgekZTnIFS9DvzgDpv9qEbbXKTip9T8=; b=FquP8XEbVFlCaazDwIRzglMdOOcheRAHJeGWWIFT/nc9MV8v0upW9sEgHp+TBQipjKOgns i8eo06gms4+m0v5L1ps0UsNitaTOZ6OLIlnkOV187rYGhmYgZVOt8P2gV+cNeIObM7N/K/ th7A4ZaaxBJII5xyZT4JtZfWXlKKQjksQdaUP0LRyl5IAZnOpFs5hIOGCg4V4vfGTlKK/v PtNhXbmSn/zND1rqxXHm+N+YvLzmXsoTXkLFfqRFLW565d9+c7HEsWqU+I9hDGA3gwo8FV t82OC9jfj3uoyQnH5Hd8AgTVoogwaPlwaebQu8cMFPbnHpbxVZ8hFTwuTHv3aw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1750427549; a=rsa-sha256; cv=none; b=xHVdCrELQw0ukGwYfQxLIA3DQaYQIyb7WUNb+ChSy4RDqI6P2yyR+ko2XVixJDOUQpOccn AOizRfCEJcH0wHDxTZGUKveGWvbYTY+GrMKSDLdWzmjkBvBV344bF4zJlRD5HsIjvli9na R9AEKPUGFZDuKPsherl9UZk8GiVb0QH/OEHVt+DEN52CbpvNdvnpyB/sSDtCRE+Ox3JoZV ZwCrVCvVhFi+X26cr0AMQY2m0q1FO6qbdGvsJyCzBjDXBDQBlOHreiIxa4QXf8Iu4JVk20 wncdAEDmzGKcQ0UZcUSGkjroEWYQCZbANvH6zY4uCGE8a3qmWRWiRYtgcZcSvw== 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 4bNzSF0Hq2znSL; Fri, 20 Jun 2025 13:52:29 +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 55KDqSOY058225; Fri, 20 Jun 2025 13:52:28 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 55KDqS1a058222; Fri, 20 Jun 2025 13:52:28 GMT (envelope-from git) Date: Fri, 20 Jun 2025 13:52:28 GMT Message-Id: <202506201352.55KDqS1a058222@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: f3ab96aeb509 - stable/14 - gve: Fix timestamp invalidation for DQO queue formats 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 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/stable/14 X-Git-Reftype: branch X-Git-Commit: f3ab96aeb509c4c645e5e3ea63ec2f1002a2c070 Auto-Submitted: auto-generated The branch stable/14 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=f3ab96aeb509c4c645e5e3ea63ec2f1002a2c070 commit f3ab96aeb509c4c645e5e3ea63ec2f1002a2c070 Author: Jasper Tran O'Leary AuthorDate: 2025-06-05 17:21:06 +0000 Commit: Mark Johnston CommitDate: 2025-06-20 12:47:27 +0000 gve: Fix timestamp invalidation for DQO queue formats We need to invalidate timestamps when a TX queue is cleared so that the TX timeout detection callout does not mistakenly fire for cleared packets. When using DQO queue formats, timestamps are set on the pending packet array whose length is not the same as the length of the descriptor ring itself. This commit fixes logic which invalidated the wrong number of pending packets. Signed-off-by: Jasper Tran O'Leary Fixes: 3d2957336c7d ("gve: Add callout to detect and handle TX timeouts") Reviewed by: markj MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D50688 (cherry picked from commit 46fce000843215ff3d574d1c24fc24771975973e) --- sys/dev/gve/gve_tx_dqo.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/sys/dev/gve/gve_tx_dqo.c b/sys/dev/gve/gve_tx_dqo.c index bbf2ee1b0324..551a7e308d19 100644 --- a/sys/dev/gve/gve_tx_dqo.c +++ b/sys/dev/gve/gve_tx_dqo.c @@ -987,11 +987,8 @@ gve_tx_clear_desc_ring_dqo(struct gve_tx_ring *tx) struct gve_ring_com *com = &tx->com; int i; - for (i = 0; i < com->priv->tx_desc_cnt; i++) { + for (i = 0; i < com->priv->tx_desc_cnt; i++) tx->dqo.desc_ring[i] = (union gve_tx_desc_dqo){}; - gve_invalidate_timestamp( - &tx->dqo.pending_pkts[i].enqueue_time_sec); - } bus_dmamap_sync(tx->desc_ring_mem.tag, tx->desc_ring_mem.map, BUS_DMASYNC_PREWRITE); @@ -1033,6 +1030,8 @@ gve_clear_tx_ring_dqo(struct gve_priv *priv, int i) for (j = 0; j < tx->dqo.num_pending_pkts; j++) { if (gve_is_qpl(tx->com.priv)) gve_clear_qpl_pending_pkt(&tx->dqo.pending_pkts[j]); + gve_invalidate_timestamp( + &tx->dqo.pending_pkts[j].enqueue_time_sec); tx->dqo.pending_pkts[j].next = (j == tx->dqo.num_pending_pkts - 1) ? -1 : j + 1; tx->dqo.pending_pkts[j].state = GVE_PACKET_STATE_FREE;