From nobody Sat Aug 8 00:38:21 2026 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 4hH2Ds5mzXz6mYbr for ; Sat, 08 Aug 2026 00:38:21 +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 4hH2Ds49YZz3mKC for ; Sat, 08 Aug 2026 00:38:21 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1786149501; 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=icqJxoHfrZLbGAL6PvgnqB40aLCL+X64m0XewKHKXFE=; b=yiiJvWQVNDqXxVPPFZ177QP69iSIaeuGuEg+C+gZ8Lu/WpQab/XJwDWQp1nRIHFpkwEgUm fK3SrDIrq6k9Ue8BO/lETwDzpfU5he4ukFOtMuMnw80lkINpPpKh7jCtiUjATjt+512ig6 3HxyuX2MMzw3VrvUopEIRdaYWM8awTzF45XQwsuDRUsKePFFfs+geFETJFhenPKYzTMIv5 PArAHVE6tlDMiL8GRo3qM94bOvzPzl/X/gpKc4gC1Q08ynfkcoGDdKMUXgVyL4JtSW9Vul L7k2TB+oEDEFtY4CC72yuyKJ/X9nLSbkcisxhG3u9esUSTomFUnmV1aW6VTtDg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1786149501; a=rsa-sha256; cv=none; b=aMAtmsFPSSEL/R9aDavGY133rPTab6/VmY0JeEooKTUXvsDn2i8/DM7KwvaS0eSsJBlTsu rpP4fDSYQAkbc4MUn/WjFmU7Rt0d+D1tHqhbIG+qcTgCwwgXe6EyQVDhEQE6oMTxzayEX8 NhcrM45CaXcWt7lEVdzGHBbnYbkDnOcLfZohmDiv1jiT/Do0nwkdSsDNT+tGkQ1zcPJMRD I0RmaEYAy1WkDQY1KFCp+DgWmCCwcoy5C4lkIeOQ+LQ2+8UkJHJq1cW9SRLN8PuqtS2EQt xR/zErhaVMWbLP/zqm/TE0DVJfbJA9flTtAR0E7D8kcnlbJKW/Wd4CJ1XPc4UA== 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=1786149501; 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=icqJxoHfrZLbGAL6PvgnqB40aLCL+X64m0XewKHKXFE=; b=EWaXJANTSsIoUPBpa0MXBldWE8YReXfCFjdzCGvilqTBrcar9aeD6pUF9PJr3WtrCAmbQ2 ga577eQvVvzSjyBzC5p1gZJpyeDvFhN7Ve8bW67x1IC5dLKPNS4uBdR/hLexKquoFl1DrX TO0lI4TeppK5OSV0dVW/+aOti/jrHslxvuLXkHFw+NUlKOBkm/AwPG6l/QZS2SS5lm//5o MVW+EtDUAQtqA92rlf/Vj+azXxYEyTIYkzR08OTuphjopPL2SGhiuGaTi0CBwAXkgFypkt QAzn1Epca6UJVkVL9mQjHZDKtfpscD/8pa7DQTcbMV/73Lhrw12Uh7gsvWirkg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hH2Ds2bFyz4m for ; Sat, 08 Aug 2026 00:38:21 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3eb9d by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sat, 08 Aug 2026 00:38:21 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Stephen Douthit From: Kevin Bowling Subject: git: a6c653e32642 - stable/15 - ixgbe: retry incoherent SFP identifier reads List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@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/stable/15 X-Git-Reftype: branch X-Git-Commit: a6c653e32642d4729b5f3200c4c09e002b08799e Auto-Submitted: auto-generated Date: Sat, 08 Aug 2026 00:38:21 +0000 Message-Id: <6a767a7d.3eb9d.3107cf8a@gitrepo.freebsd.org> The branch stable/15 has been updated by kbowling: URL: https://cgit.FreeBSD.org/src/commit/?id=a6c653e32642d4729b5f3200c4c09e002b08799e commit a6c653e32642d4729b5f3200c4c09e002b08799e Author: Stephen Douthit AuthorDate: 2026-07-28 11:09:02 +0000 Commit: Kevin Bowling CommitDate: 2026-08-08 00:35:42 +0000 ixgbe: retry incoherent SFP identifier reads FreeBSD's I2C helper already retries failed transactions. Limit this new outer loop to successful reads with an invalid identifier so that retry budget is not multiplied. DPDK commit message net/ixgbe: retry misbehaving SFP read Some XGS-PON SFPs ACK I2C reads and return uninitialized data while their microcontroller boots. A bogus identifier can cause an otherwise working module to be marked unsupported. Retry the identifier read several times, checking for both successful I2C completion and a valid SFP identifier. Signed-off-by: Stephen Douthit Signed-off-by: Jeff Daly Reviewed-by: Haiyue Wang Obtained from: DPDK (774263bb4e) (cherry picked from commit 985bef0c4474abe8ebc3b0def601db8ceff2a690) --- sys/dev/ixgbe/ixgbe_phy.c | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/sys/dev/ixgbe/ixgbe_phy.c b/sys/dev/ixgbe/ixgbe_phy.c index 2a735ead9a12..a614ffe50c0d 100644 --- a/sys/dev/ixgbe/ixgbe_phy.c +++ b/sys/dev/ixgbe/ixgbe_phy.c @@ -1299,6 +1299,7 @@ s32 ixgbe_identify_sfp_module_generic(struct ixgbe_hw *hw) u8 oui_bytes[3] = {0, 0, 0}; u8 cable_tech = 0; u8 cable_spec = 0; + u8 retries; u16 enforce_sfp = 0; static bool warned_once = false; @@ -1313,9 +1314,22 @@ s32 ixgbe_identify_sfp_module_generic(struct ixgbe_hw *hw) /* LAN ID is needed for I2C access */ hw->mac.ops.set_lan_id(hw); - status = hw->phy.ops.read_i2c_eeprom(hw, - IXGBE_SFF_IDENTIFIER, - &identifier); + /* + * Some SFPs with a microcontroller ACK I2C reads before the data + * backing them is initialized. Retry successfully completed reads + * with invalid identifier values before declaring the module + * unsupported. Failed transactions are retried by the I2C helper. + */ + for (retries = 0; retries < 5; retries++) { + status = hw->phy.ops.read_i2c_eeprom(hw, + IXGBE_SFF_IDENTIFIER, &identifier); + + DEBUGOUT2("status %d, SFF identifier 0x%x\n", status, + identifier); + if (status != IXGBE_SUCCESS || + identifier == IXGBE_SFF_IDENTIFIER_SFP) + break; + } if (status != IXGBE_SUCCESS) goto err_read_i2c_eeprom;