From nobody Fri Oct 09 10:12:43 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 4j1N300pKlz6vRLr for ; Fri, 09 Oct 2026 10:12:44 +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 4j1N2z5sckz4Y1r for ; Fri, 09 Oct 2026 10:12:43 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1791540763; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=9mZoWdYnLR4BjYDLT948L22+mN3sCHKXjHx+Tx3iRRU=; b=MFf9yq3LsUaJcr0N2C6vCtUy0W5nut1B6PKpieE/mMNYB5/C676dNdzoETBSjNrs5dP0Sa teZGUGgnWEk8X9gL7zlJfoPJChexdY3dp1XpmtLGeGx1r7bTc3qKPBMdBiA+2bsvzkru5I eY1U3gN1BI1Zg0AyicX5qSQdnDIvrDUkSQCmWZkP1Rw00kjSROq5DkTA8a28Zy5O6ZCAbL U44jlTdtcpSTtwr1czeeP7wcZi3VArvZcCD0twXatxtPfZ4UuDTG52axTg4Hxt0kil22gh ++x9fjhhAu8Bd+n46L0dHVHWqvHVZqw0NXBXBBZium75edAuqvnLfmPkad7j6w== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791540763; b=ruVI6qwr7AarxufkU0cpOeESdzEfM7CF6jvC0LGElWUhLaTAiMaE9sOm2H9fssv/dRzQsl cjHFonzcscs7+XAzPs4fXQXp/c+XSQJHgQn7RCRyxXkg/Q5uwo122ZfUhpUgf3vt3VyFtn ZIAgeSE1cn4lZIzbaXUtnr9Cqiz7bru6+K24UwAgnzDYO9vnvhk+501AGjmCGQCkHyj2mG q+hXtAnaZiNJWPDlLJAKyCwh77ABtewIKe1RTHgljVXuWN/J0PKZQPldosfPvCKx3uNnnS DCfjbIUCtESTSUZYdUMq4qg+dTmhik6qXXZO57HXM4tpeejD5Mcmi/HcysdWQA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1791540763; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=9mZoWdYnLR4BjYDLT948L22+mN3sCHKXjHx+Tx3iRRU=; b=uBTvDZiVl1x2+c4o4o1WBAizhMEDzp7gbr+5gT20AJPIQ+eiiwdJOp0e1NaXFmQ2fdwh5/ It5LLcPM/JYb411j7T+krFnN9HJHawVPTqwv8PmzGyUEkeK4+E6t4fsI1CKZ8Bnjra6gtA YS1U1ct3WtoawKSpKMpdImjmhncLOIF0JX1eBulbwHBL62ey7Ur6l5foi5VNdepG4jMlZZ OMlogcN98uHegRkwpbLDz0yVrfGhvgiQNo/TTdgyeQThm9MUtp2GfroUrpuHZfpqWab3Lx vNA9+1JQWqliecuHZzXD5ZVV5fygBVwB3E26baPBoenMkNp0pDkiL9R1fQXFBA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4j1N2z44cgz1L40 for ; Fri, 09 Oct 2026 10:12:43 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 43a0c by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 09 Oct 2026 10:12:43 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Cc: Sumit Saxena From: Sumit Saxena Subject: git: e009e1fd8083 - main - if_bnxt: honor firmware min wait before VER_GET on reset 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: ssaxena X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: e009e1fd80839a4a570a73dae9011a04ed4579ca Auto-Submitted: auto-generated Date: Fri, 09 Oct 2026 10:12:43 +0000 Message-Id: <6ac8be1b.43a0c.5d165032@gitrepo.freebsd.org> The branch main has been updated by ssaxena: URL: https://cgit.FreeBSD.org/src/commit/?id=e009e1fd80839a4a570a73dae9011a04ed4579ca commit e009e1fd80839a4a570a73dae9011a04ed4579ca Author: Sumit Saxena AuthorDate: 2026-07-31 15:46:25 +0000 Commit: Sumit Saxena CommitDate: 2026-10-09 08:24:43 +0000 if_bnxt: honor firmware min wait before VER_GET on reset The firmware advertises a minimum wait time it needs before it is ready. The driver was not honoring it and sent VER_GET too early during firmware error-recovery, which could return an incomplete VER_GET buffer. Enforce that minimum wait, measured from when the RESET_NOTIFY async event arrived, before sending VER_GET. Reviewed by: gallatin MFC after: 2 weeks Sponsored by: Broadcom Inc. Differential Revision: https://reviews.freebsd.org/D58608 --- sys/dev/bnxt/bnxt_en/bnxt.h | 2 ++ sys/dev/bnxt/bnxt_en/if_bnxt.c | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/sys/dev/bnxt/bnxt_en/bnxt.h b/sys/dev/bnxt/bnxt_en/bnxt.h index e50c4157ac0b..09092cf7d59e 100644 --- a/sys/dev/bnxt/bnxt_en/bnxt.h +++ b/sys/dev/bnxt/bnxt_en/bnxt.h @@ -1509,6 +1509,8 @@ struct bnxt_softc { u16 fw_reset_max_dsecs; #define BNXT_DFLT_FW_RST_MAX_DSECS 60 unsigned long fw_reset_timestamp; + unsigned long fw_reset_notify_timestamp; + u16 fw_reset_req_min_dsecs; struct bnxt_fw_health *fw_health; char board_partno[64]; diff --git a/sys/dev/bnxt/bnxt_en/if_bnxt.c b/sys/dev/bnxt/bnxt_en/if_bnxt.c index 2ea1fc97fd92..f6aeab9095d6 100644 --- a/sys/dev/bnxt/bnxt_en/if_bnxt.c +++ b/sys/dev/bnxt/bnxt_en/if_bnxt.c @@ -1932,6 +1932,21 @@ static u32 bnxt_fw_health_readl(struct bnxt_softc *bp, int reg_idx) return val; } +/* + * Sleep until at least min_ms milliseconds have passed since start_jiffies. + */ +static void bnxt_sleep_until_min_elapsed(unsigned long start_jiffies, + unsigned int min_ms) +{ + unsigned long elapsed_time; + unsigned int elapsed_time_ms; + + elapsed_time = jiffies - start_jiffies; + elapsed_time_ms = (unsigned int)(elapsed_time * 1000 / HZ); + if (elapsed_time_ms < min_ms) + msleep(min_ms - elapsed_time_ms); +} + static void bnxt_fw_reset_close(struct bnxt_softc *bp) { int i; @@ -2443,6 +2458,8 @@ static void bnxt_fw_reset_task(struct work_struct *work) fallthrough; case BNXT_FW_RESET_STATE_POLL_FW: bp->hwrm_cmd_timeo = SHORT_HWRM_CMD_TIMEOUT; + bnxt_sleep_until_min_elapsed(bp->fw_reset_notify_timestamp, + bp->fw_reset_req_min_dsecs * 100); rc = bnxt_hwrm_poll(bp); if (rc) { if (bnxt_fw_reset_timeout(bp)) { @@ -5667,9 +5684,11 @@ bnxt_handle_async_event(struct bnxt_softc *softc, struct cmpl_base *cmpl) goto async_event_process_exit; softc->fw_reset_timestamp = jiffies; + softc->fw_reset_notify_timestamp = jiffies; softc->fw_reset_min_dsecs = ae->timestamp_lo; if (!softc->fw_reset_min_dsecs) softc->fw_reset_min_dsecs = BNXT_DFLT_FW_RST_MIN_DSECS; + softc->fw_reset_req_min_dsecs = softc->fw_reset_min_dsecs; softc->fw_reset_max_dsecs = le16toh(ae->timestamp_hi); if (!softc->fw_reset_max_dsecs) softc->fw_reset_max_dsecs = BNXT_DFLT_FW_RST_MAX_DSECS;