From nobody Sat Aug 8 00:44:07 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 4hH2MX1r87z6mZGr for ; Sat, 08 Aug 2026 00:44:08 +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 4hH2MW66WFz3wd1 for ; Sat, 08 Aug 2026 00:44:07 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1786149848; 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=fcPGX39JzjkChS8n/942R3fsibzqTNH7FZf5vXNDFUk=; b=IFvSLLxtxDagP9KufGH0PLevrAF0ZcX9i/CBqez8/zYiBJYaeymwEnS66K3gHNLpHv4pe3 uDQMLCMMs7isLqF8GilqvAnoa8cMVoVNkhUB3qU34twIvKGJhQKUNDkXr6y2xC+W763eYU FCwDSfs+DzgG9ACAgYrXpF4FUkNFiHSWvbTv7Wg9360HP2xRplCX81kUkFMgPgoAMzCz7d BXKZK7VjLHDhaY4s1/Nw16AR3Ns/tgdVuF9aj634sWjfet2d754gkakyG/Dau7ZztBka+O 7k7p0kMlaHfcz+bGR79/BUBgaNjSPtUVuIqzM0t4O2WI5HHvCXrQEbdVW/2Zwg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1786149848; a=rsa-sha256; cv=none; b=Nj+kj9N4UFsM1T6XcooIKLcGknNygJ+60qx38kaH642emLdEWdin40DwFO+g9LBx6vc2Ke IxG2VrywTnqYGHgnPfef3IGuigs7C3Tr8EgUBrOZsJIyeqXf3uW5G2prilK0YQWF9ebRHP +yX8lsxd8t2Fm4rix54E5jGkPVw81adX1Rqcndp2HK0J2X3b5eDe5U3UpeR9Rwslon4Ctw UEqj2NuFPrHDEakkr5qbdsqqVwrupEPOEl9DPSz1R1CovVBC4K1awhExINAS2wrAmWYxxG dMGmg+znxOap7GaGOSFKu2QeG+uvLUWs9ddERyMyB0A0P0kx+hyQ3OjIM19Ijw== 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=1786149848; 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=fcPGX39JzjkChS8n/942R3fsibzqTNH7FZf5vXNDFUk=; b=Ez/xnCq7Z5KMmHWNNyvlYDoI7x0PZJBm5U22Pu7cVr0FZkbTSWPhUY/lbcXs5eheqn4lBD b8jtzBspHdmBKiPvkt3W9xd0/Pbn0fgJbUgFaIkHSlKCO4LeNGN1aiQHBJ/AU9+sgcD29z HBM6VcAMwOzxS9DvuzHLOajIKmPbbLsgEszZOZq8+7eS0OUWPf8x0p07jAqu9XYFxccfKp 0kQpFJQXNNZTzxZa3SRQVCjB9IqvB+QHHNzgJK3KXVuh9sNfL5/l3kyQtU2AiymPmGXBHx LpsAnbCMJgE2J5mm3UhB37oyH+4AKNlKEMmkTgmRGL8ct6P5xIfCGOsFAgJD2A== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hH2MW5C3Bznk for ; Sat, 08 Aug 2026 00:44:07 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 40485 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sat, 08 Aug 2026 00:44:07 +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: 70df28a9281a - stable/14 - 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/14 X-Git-Reftype: branch X-Git-Commit: 70df28a9281a799d33f2391d4cf605341980e080 Auto-Submitted: auto-generated Date: Sat, 08 Aug 2026 00:44:07 +0000 Message-Id: <6a767bd7.40485.52bfd3b8@gitrepo.freebsd.org> The branch stable/14 has been updated by kbowling: URL: https://cgit.FreeBSD.org/src/commit/?id=70df28a9281a799d33f2391d4cf605341980e080 commit 70df28a9281a799d33f2391d4cf605341980e080 Author: Stephen Douthit AuthorDate: 2026-07-28 11:09:02 +0000 Commit: Kevin Bowling CommitDate: 2026-08-08 00:41:44 +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;