From nobody Fri Sep 25 00:41:18 2026 Received: from mail-pj2-f43.google.com (mail-pj2-f43.google.com [74.125.227.171]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 51D244B0E36 for ; Thu, 17 Sep 2026 23:32:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.227.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789687959; cv=none; b=AM2BEG38lkv36e7XyUy/3WT88nzDsNiCWCIGUR7Z5WfBNswbArAhSsuL0AZSKf2OUwt0h9tyk5zD6l7uLYR5a1vMreQB5AlLa7ZZmsK1agEuP29Jm4cHxnAwI5DHtskDOC2P6/CRzQfUNv9ToJu7hitss/wh0U6+Wu975Coedno= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789687959; c=relaxed/simple; bh=i5EAoq1Xc8k5Nb96NUryR385FSoC/JKqS1uOw/t3FNk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=cTxhqzAxnwVq5wfIpZrLUiQM9O3uT9tCk4vd4akBVotzHynUVaLZtUC6ONcZKfBVSOPvl8+tqwLj8dxyVK38Wq+zGRoC6hCUxILTDK9Y4qHThYPJLR+4rOGKI8TUSnnHVV33PSi0zXGSmkOVpROxOoqa/Ln7SoMQrBz5zaX3o1w= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=dama.to; spf=none smtp.mailfrom=dama.to; dkim=pass (2048-bit key) header.d=dama-to.20251104.gappssmtp.com header.i=@dama-to.20251104.gappssmtp.com header.b=g7sHcvFL; arc=none smtp.client-ip=74.125.227.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=dama.to Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=dama.to Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=dama-to.20251104.gappssmtp.com header.i=@dama-to.20251104.gappssmtp.com header.b="g7sHcvFL" Received: by mail-pj2-f43.google.com with SMTP id 98e67ed59e1d1-396ccd4f99dso181786a91.2 for ; Thu, 17 Sep 2026 16:32:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dama-to.20251104.gappssmtp.com; s=20251104; t=1789687955; x=1790292755; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=CLY3UmOqZzZ3us+Px/eqBPnv/fx2lVKt8ROnyv5E4d8=; b=g7sHcvFLN0JS/LhPhg5kNsY64AISQkLDazaArtEVQyvOnkdwjLtuquk2u3vzHLzdG5 cIyL1MdVQAfh9j84LgLJcxsVk3zEMZr8T7/Yka73oCHu7XH9w9W5edSV5CdffHZCFWUv M4RWgYqh0TdmIRb5CPCIJpwDqq/8+7TPHJBwnJ+dfj+rpgkY/jbvFW452kWSxKG+zJkS jh/45NDRMX4rh8jPsBFsTho6LS7JW34zZA/ZD801rTjdfpB83mQz6UyNTivS3YX+oK5l H/TjLQjbkC271Y3XI6acIXrYZBMG346r4joIcwrCjCeMt3/OqwE5yiyvKoulN1omTLFf 9B3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789687955; x=1790292755; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=CLY3UmOqZzZ3us+Px/eqBPnv/fx2lVKt8ROnyv5E4d8=; b=bL7ibfQ/zRL6r5bpfpS330BQ/RSoS8aYL+oLYaIQr2RUaD+TPjFzYK43Ck0NwACBVq 0a8V7nW2slPuqaFpfDhuY5El/oqfLJZhi7Y4/TpkgRyCusw9GmW70tVMRaR07XkV4hXF ultTJAwEWhx+QSNlDc2v1XAbWxiSCWblniRGfFJbPYv6ruzrdsfnrMi1yV2ZcBJ2xM+5 35NqIcgik4pkw3ZTvXhpiSZuCcYIr8R65hc0avm6z24uU4gSSMa8HmfViLnRY+CG4DrU LwWHR9IZvWCJiMLxW8+GIgKD0YGSg/ZAemiYWkn4V3y8ffDYI6awzjB9HBqutOKyeuWt ezQQ== X-Forwarded-Encrypted: i=1; AKwUvBxjLnrnu9FWyvYtRPIcHXwQTiqGEocZJMBCEaUVgYUu2kHFpyxnf/Ihh7IhxzM/LsJWjzn63auhJwG7pAU=@vger.kernel.org X-Gm-Message-State: AFuF++kn8JkkDweaoS7V8219vgTgV27Osz7DlWf2IqLAO+91S5/w5rrE 8Xd34TxnDY+p7Q5cltzI64V0rp6sJgZMiN7FvZMpdGXUZSs0DrafccJacqEpFKbelAU= X-Gm-Gg: AYBFou3IuhgVoO9/lZ00K5q8sW8+6x5ad5MvpYU+8Z52ZT8mfo0uDvNPWR7XvSlUDUV lugJLKvkSXswfhVbaXVpxMmATuwhyUeS39ThqZQoSdn6EWe9h8JKKLcoyQUb0kzYv244Fo2fADJ x4jkujlHjgoxG3ca+Ws//skIe7DB5PNyaY6rQ1GTyLCwZoXOSwOmYaMfFWsNLrkAujxv39c+si1 mGir+AB7N/wTRR1PnXVDX5GOzoBy5h+fjU+kGMP+QyPacpcQ5pUWDkIEFkFcXHC9Wq90I5nIggv 6S5eR8/36YPY6I6+g6YprAt1i157zJglaOC8dBMvQjwfM9YwKTdLvN5UnCEQKa2WBUzfvb2aoBT iZnp0G228gvh77QcwGh8FpwfgyZXmlv8SQ6wWF8S8I4OkrAHs7rTCE/KJGhYIx05iuqjUgQ3tbx iPBTd8zjLT6PIaCIvjOCs32wHakIeM9YSB+HEt7tmLP4fXab9TH5zN X-Received: by 2002:a17:90b:4e85:b0:398:b1eb:136c with SMTP id 98e67ed59e1d1-39e54d185a6mr1369298a91.9.1789687955043; Thu, 17 Sep 2026 16:32:35 -0700 (PDT) Received: from localhost ([2a03:2880:2ff:47::]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-39e35d9869csm7412912a91.4.2026.09.17.16.32.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Sep 2026 16:32:34 -0700 (PDT) From: Joe Damato To: netdev@vger.kernel.org, Michael Chan , Pavan Chebbi , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: horms@kernel.org, linux-kernel@vger.kernel.org, Joe Damato Subject: [RFC net-next 1/2] bnxt_en: return status from bnxt_hwrm_tx_ring_free Date: Thu, 17 Sep 2026 16:32:14 -0700 Message-ID: <20260917233218.1160001-2-joe@dama.to> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260917233218.1160001-1-joe@dama.to> References: <20260917233218.1160001-1-joe@dama.to> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" hwrm_ring_free_send_msg() already reports failure to its caller, returning -EIO when the firmware rejects HWRM_RING_FREE or never answers it. bnxt_hwrm_tx_ring_free() discards that value. Return it instead. No caller acts on it yet, so there is no functional change; this only makes the failure observable so that the next patches can recover from it. Signed-off-by: Joe Damato --- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethern= et/broadcom/bnxt/bnxt.c index ca99f4b1a63c..ac7716dbf88d 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -7660,21 +7660,23 @@ static int hwrm_ring_free_send_msg(struct bnxt *bp, return 0; } =20 -static void bnxt_hwrm_tx_ring_free(struct bnxt *bp, - struct bnxt_tx_ring_info *txr, - bool close_path) +static int bnxt_hwrm_tx_ring_free(struct bnxt *bp, + struct bnxt_tx_ring_info *txr, + bool close_path) { struct bnxt_ring_struct *ring =3D &txr->tx_ring_struct; u32 cmpl_ring_id; + int rc; =20 if (ring->fw_ring_id =3D=3D INVALID_HW_RING_ID) - return; + return 0; =20 cmpl_ring_id =3D close_path ? bnxt_cp_ring_for_tx(bp, txr) : INVALID_HW_RING_ID; - hwrm_ring_free_send_msg(bp, ring, RING_FREE_REQ_RING_TYPE_TX, - cmpl_ring_id); + rc =3D hwrm_ring_free_send_msg(bp, ring, RING_FREE_REQ_RING_TYPE_TX, + cmpl_ring_id); ring->fw_ring_id =3D INVALID_HW_RING_ID; + return rc; } =20 static void bnxt_hwrm_rx_ring_free(struct bnxt *bp, --=20 2.53.0-Meta From nobody Fri Sep 25 00:41:18 2026 Received: from mail-pj2-f13.google.com (mail-pj2-f13.google.com [74.125.227.141]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2F16C4B2CC1 for ; Thu, 17 Sep 2026 23:32:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.227.141 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789687959; cv=none; b=AvDqSxZxtVwWgc/uSUoDfpLV3La/9U38Veu2PGRr+yrAA1n4et02gmu7o7ThbZ8xXMY6IDnbdq9O656m5eSVqOWWDa3ZiqLDb5ykEPHhXKp9ahVNPPgjeOkAqGf8qYuYmQfjhDyKOfUfAcqbND4+z1rBDutXNGeOgZq1PAB5xIk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789687959; c=relaxed/simple; bh=sdHiZSQcwDmTnX6Et7HXspjldNqHhSXb7LofLpr5s+U=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=WecOQG/Yo9YklL51oqwEpM7cEIGXwOSUk74fi5rqFxB2u4JEXrhJ0LYsLW1flMTyQzn4YE/qh+cZ1cXk2e5vAoH/Hhy45APsNIHHe4aSA3lTuYy8yGeX27yvRbvH2wZ0p5xfPBqQMRcWh5knPjwIXdkPTAQlG8Bw9Dan5iy99aU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=dama.to; spf=none smtp.mailfrom=dama.to; dkim=pass (2048-bit key) header.d=dama-to.20251104.gappssmtp.com header.i=@dama-to.20251104.gappssmtp.com header.b=DzeINSAw; arc=none smtp.client-ip=74.125.227.141 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=dama.to Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=dama.to Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=dama-to.20251104.gappssmtp.com header.i=@dama-to.20251104.gappssmtp.com header.b="DzeINSAw" Received: by mail-pj2-f13.google.com with SMTP id 98e67ed59e1d1-398cb5615deso192420a91.3 for ; Thu, 17 Sep 2026 16:32:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dama-to.20251104.gappssmtp.com; s=20251104; t=1789687957; x=1790292757; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=q6EHC7KNKJFHX8CkGrJ910HitU0NKfeJ5n6UhbOzNZ4=; b=DzeINSAwd9u6fDOKsMqhO8TtcSaAKGv/70PvhCrYsxZYTTWz/WHzIcB3LOcLXSTb3p B4ie9SMo1E7mIdvFs/eJmW2bpEz2gTJ7Wmv0ozggA6fLnz2ikoLlFpPTxShkVZG94IfI 4AvTpN5KSJ6K+5Vcbx+9nv6X2n7fOFYKS6M8nAGZGOfJalNapFkAP+baYrAPVAs5te7F bhqxzbS+ThI4QcwOdqmiXYFHE+ISlqVJAh2Vm/bwLxle+9DM0nH/r7FEAa8AdohmeUhi dBUKh9spxRHvcVwjmjzrvwM8J+DP1/Pev1Kso5IQLXvOw14KfzBiBjVYmJ3cdgJcD01X K9hg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789687957; x=1790292757; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=q6EHC7KNKJFHX8CkGrJ910HitU0NKfeJ5n6UhbOzNZ4=; b=W1HjbgwKaUi9cokM67kVGAwKVp3aqTja/D5L8jU4LZrv2p2SVh5UnhAmnLYOCuzSR8 w4/MbC+nCnZuNbVvB6XeDR6dfkTvWP3qi6pnoVhFnZN4ufHmnmKLJidgnx+j/wVZ2Db4 HonXC9y4fHGcAXEaIxgBhUdZv05Q2b/Yr6BJ7QTf55AD2ixghE5yuZ+N35YRiyUpPLyp FEKBfA3lbCxsQUgsuc8yNO79v47C4roIjkCpcxGygFljRxEkMyHZgSZGrLj/nSbBgqxI nNFxnVtZMrdaSBioV9FNbSkS5XIILmLDAqrMlFtfLrFAze6YyQk0mczMOjqEiuVxHG2m XoGA== X-Forwarded-Encrypted: i=1; AKwUvBz3otvHOUDDbY5K33rKJJdO5iww1SoeCW7F2kLXrI7PTdtNYflKZlARxNoTWdSNlhf278aPgn0qLTl+BQc=@vger.kernel.org X-Gm-Message-State: AFuF++nw/08HdPil8mbqV783s8tpDlJBnF5PXDXvwb5w+qwArohBMlF4 xwsm5ZXgM85EoHxAu8jWmZhsc0Wqi7GdoXsvDDc+bU7EfmB4KN7MwOrYCW+Xee4St9E= X-Gm-Gg: AYBFou13ZpX0qRnM7krGsd/BJIOdtwroIWSGmUMG29z4FUDx5R3feiRc4LpG9Zx4/k0 TkQ5/ZoyuXM9dDNoPP5Y2URkzefrrfKMTR+BaP/koizMF8kiZHd96BqTDyvbAETToDdrpoB5L/s JcI2hBHz6W3myCxMqlTrFs7KOJ4Wl8kXc39cMlaz2L//8SlhdbI/x52xCFN/0hEaIJZm2eEe09Y 8kzHLAW/1iX81kXNs8GxzV2z6zmCfEeLG513iPoKwO89KH4zzrbygRIKD7SRnYI9+N7MyzZ6qCd +oE4UHWviqElbPkTK9OmhVwMtneY5uQotdodhIFf1kegZRVc8XFCt6SppQ9UM/PH09wE5TVEzB7 xwdYMBKVWyG45NhxikkttaZh3U9C8lRNkcty+dYfPkCGPXWopiPDq4vl1L1rzOMAGgH5IvHjgfG NetzRBjdxXsFdoY+UW7S5pDWtC20VzzlGiiQt0jBv+135OuK7Wx9pC X-Received: by 2002:a17:90b:2f50:b0:39e:14db:437c with SMTP id 98e67ed59e1d1-39e54cc2a95mr1546398a91.4.1789687957166; Thu, 17 Sep 2026 16:32:37 -0700 (PDT) Received: from localhost ([2a03:2880:2ff:4c::]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-39e50a4bc22sm1713050a91.17.2026.09.17.16.32.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Sep 2026 16:32:36 -0700 (PDT) From: Joe Damato To: netdev@vger.kernel.org, Michael Chan , Pavan Chebbi , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: horms@kernel.org, linux-kernel@vger.kernel.org, Joe Damato Subject: [RFC net-next 2/2] bnxt_en: recover a failed TX RING_FREE with a ring reset Date: Thu, 17 Sep 2026 16:32:15 -0700 Message-ID: <20260917233218.1160001-3-joe@dama.to> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260917233218.1160001-1-joe@dama.to> References: <20260917233218.1160001-1-joe@dama.to> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" When HWRM_RING_FREE is sent with a completion ring set and the completion never arrives, hwrm_ring_free_send_msg() logs hwrm_ring_free type 1 failed. rc:fffffff0 err:0 Resp cmpl intr err msg: 0x51 and returns -EIO. bnxt_hwrm_tx_ring_free() clears fw_ring_id anyway and __bnxt_close_nic() calls bnxt_free_mem(), unmapping ring memory the firmware has not been told to stop using. On a host with an IOMMU the result is an IO_PAGE_FAULT or a DMAR fault against the freed pages seconds later. A TX ring whose completions have stopped will trigger the netdev watchdog, the reset closes the device, and every RING_FREE routed through that dead completion ring times out. Try to recover from this by adding bnxt_tx_ring_reset_and_free and bnxt_hwrm_tx_ring_reset. The intent here is that bnxt_tx_ring_reset_and_free will try a TX ring reset in polled mode (assuming the completion ring is dead) and, if that succeeds, retry the RING_FREE in polled mode as well. Bump tx_resets in this path. A non-zero ethtool tx_resets value on a device that never tripped the netdev watchdog would identify a firmware that stopped answering RING_FREE on a completion ring. Signed-off-by: Joe Damato --- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 41 +++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethern= et/broadcom/bnxt/bnxt.c index ac7716dbf88d..c47f6f24dfa4 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -7660,6 +7660,44 @@ static int hwrm_ring_free_send_msg(struct bnxt *bp, return 0; } =20 +static int bnxt_hwrm_tx_ring_reset(struct bnxt *bp, + struct bnxt_tx_ring_info *txr) +{ + struct bnxt_ring_struct *ring =3D &txr->tx_ring_struct; + struct hwrm_ring_reset_input *req; + int rc; + + rc =3D hwrm_req_init(bp, req, HWRM_RING_RESET); + if (rc) + return rc; + + req->ring_type =3D RING_RESET_REQ_RING_TYPE_TX; + req->ring_id =3D cpu_to_le16(ring->fw_ring_id); + return hwrm_req_send_silent(bp, req); +} + +static int bnxt_tx_ring_reset_and_free(struct bnxt *bp, + struct bnxt_tx_ring_info *txr) +{ + struct bnxt_ring_struct *ring =3D &txr->tx_ring_struct; + struct bnxt_cp_ring_info *cpr; + int rc; + + rc =3D bnxt_hwrm_tx_ring_reset(bp, txr); + if (rc) { + netdev_err(bp->dev, + "TX ring %d reset failed after RING_FREE failed, rc: %d\n", + txr->txq_index, rc); + return rc; + } + + cpr =3D &txr->bnapi->cp_ring; + cpr->sw_stats->tx.tx_resets++; + + return hwrm_ring_free_send_msg(bp, ring, RING_FREE_REQ_RING_TYPE_TX, + INVALID_HW_RING_ID); +} + static int bnxt_hwrm_tx_ring_free(struct bnxt *bp, struct bnxt_tx_ring_info *txr, bool close_path) @@ -7675,6 +7713,9 @@ static int bnxt_hwrm_tx_ring_free(struct bnxt *bp, INVALID_HW_RING_ID; rc =3D hwrm_ring_free_send_msg(bp, ring, RING_FREE_REQ_RING_TYPE_TX, cmpl_ring_id); + if (rc && cmpl_ring_id !=3D INVALID_HW_RING_ID) + rc =3D bnxt_tx_ring_reset_and_free(bp, txr); + ring->fw_ring_id =3D INVALID_HW_RING_ID; return rc; } --=20 2.53.0-Meta