From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id C4ADAA0093; Thu, 17 Mar 2022 07:56:08 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5B5124067B; Thu, 17 Mar 2022 07:56:08 +0100 (CET) Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by mails.dpdk.org (Postfix) with ESMTP id 3D22940151 for ; Thu, 17 Mar 2022 07:56:06 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1647500166; x=1679036166; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=/rNgpG8iV9PHR6e62cd7WUQmnMejY2xvgQzm/fCHY4I=; b=Pta3CFw8n6eNn3uYaEt+0U/7uei3sKK4QbRPjUSkcjpuu0uRcAdgcd3L iB66o20a9a2BIn5BDHEZESinB/8A02r2OnWLitmTxYbNAC+OBZIKlDAYH BxWXXFFnbXAl7vMlxi7nFPXeqCoeBZD2yWFPorJG0DQ9qnuendeNKF55J 57Sy8+ixUw4QhVt4Qu5uFncjnRTDmTNEXiGW70nSBhDShJW3CuTukMzaj v3hAstcRRX1CgtK0E7HK7d6awhpxl6fiBKJW8yi3nHtu/5aMU1lRztxlS wFCLfPkRbh++09Bh5wSLxGICz/LDOA5RSe9r8FcXlO+mQAUE2l7TbwraF A==; X-IronPort-AV: E=McAfee;i="6200,9189,10288"; a="237404675" X-IronPort-AV: E=Sophos;i="5.90,188,1643702400"; d="scan'208";a="237404675" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Mar 2022 23:56:05 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,188,1643702400"; d="scan'208";a="690852018" Received: from orsmsx604.amr.corp.intel.com ([10.22.229.17]) by fmsmga001.fm.intel.com with ESMTP; 16 Mar 2022 23:56:05 -0700 Received: from orsmsx603.amr.corp.intel.com (10.22.229.16) by ORSMSX604.amr.corp.intel.com (10.22.229.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.21; Wed, 16 Mar 2022 23:56:04 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.21 via Frontend Transport; Wed, 16 Mar 2022 23:56:04 -0700 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (104.47.55.177) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.21; Wed, 16 Mar 2022 23:56:02 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RXe9A9QT1JU/7d8IIbnyurOXpDPmcc3BuVmsmrUTGalYGUSoo7NINbXIETBJFrhyJiyUbJwNk3kI0p/UswRGqYqg7Nz/Kjh1t7G0+5SY9hk2n7UYRGaFY0S1aT7pKvkpgZYEbYokvvHRXgqPyA3wvzjUQX6y+A+Oaov0mdiyEiIXdqcHFsT6BijseNgZnXYomtVfaeypB9wU34XH32Imq9V7bIjbQ6gr1+pf9o4UptQ9GvhgkJvIiB8Ih4c7QE3v6lcWAIg9iqClV9cbVFVM/JlgY3pC27YVJYXk46/8JEQjnLbk4aMcwV5vqM2AXuAdjoVYO+iZYme9ugUF6fss6A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=5ZiajTUBk4lyrmMUL+pp4MeJhg7UrgVSn4fm70KhwHo=; b=njAEtf5yft8H3/AT+KXoWykJ5uHgG9XlK35QV2OruuiUkpJwlE2g2f6dKWSbddqYRudxel/argWtrUchpGkto5YQdiHVOw/XVizSyPpY/JLK5QrR0r4Y2SLl+H7jW+qMyYClgAQSPqclXecDpqU7Ql86PDFxlgsnAng9AChdHXmnHj6Rm8mBTSCjXSnoDxdByTa953IQxZnbx82qYf608rkHoATImbnK6vnY4p8LLuJlKKgE0FVhZkp18G/0xrsOuLKp4o0iYDp3srWhFlVe1XHKm/H2edWDG31PRjoChqWDxmZ4Cjjd5VkFi7dp85YkWstt4VSBPcwaBUKt20xkRQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from BYAPR11MB3495.namprd11.prod.outlook.com (2603:10b6:a03:8a::14) by DM6PR11MB3019.namprd11.prod.outlook.com (2603:10b6:5:67::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5061.26; Thu, 17 Mar 2022 06:55:31 +0000 Received: from BYAPR11MB3495.namprd11.prod.outlook.com ([fe80::cc6f:9806:bca7:2297]) by BYAPR11MB3495.namprd11.prod.outlook.com ([fe80::cc6f:9806:bca7:2297%7]) with mapi id 15.20.5061.028; Thu, 17 Mar 2022 06:55:31 +0000 From: "Wang, Haiyue" To: "Daly, Jeff" , "dev@dpdk.org" CC: Stephen Douthit , "Daly, Jeff" Subject: RE: [PATCH] net/ixgbe: Retry SFP ID read field to handle misbehaving SFPs Thread-Topic: [PATCH] net/ixgbe: Retry SFP ID read field to handle misbehaving SFPs Thread-Index: AQHYMnN2OSsY5R5Kd0S/NDxX6Uzl/qzDMZqA Date: Thu, 17 Mar 2022 06:55:31 +0000 Message-ID: References: <20220307223337.27876-1-jeffd@silicom-usa.com> In-Reply-To: <20220307223337.27876-1-jeffd@silicom-usa.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.401.20 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 90038bbf-6a20-48a7-e01f-08da07e3209d x-ms-traffictypediagnostic: DM6PR11MB3019:EE_ x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: xtycJ3A6ps0KkvzXgi6/OT79qJ3iK1lmxJOnhIz1s/aiVmxCs+wyzKq5bbmMAyvDAPJz9B04Cz+H2vzQ8L1svb9ARnozmuOBIuYTngYzfRT+ROU7tE3uTUOkhIpub3rN12Jw77hJmycAurYNmrlXaqGrKmvzgqsRwVocXtfW2lJtWBB4uoIEpHv2iDfMeZZSd8rpDqfu0g2iIKZJdKqxy53WnPG68f/joNmSoUdBc8crVSqOhswM6TSOGtBqKuOqkWV02ZacCl5v7Ve46YcVop4E/ukHA7b5FoaISeUtUSUlOfXBOC8url8ij125mAoMKQcY/W9ENSERo6YPD2OPl+qov1rYh2/7R4EogE8boU3WuOS+PLespGyVLtscamHLniTEa8sJM14dNHjj8py/ROixlozDLTLA+BuuyJz3HS2meySaJEuGwdZnth76oZf65SHglwtApt9RfCMjvF+TSx+70/5tSLNDlhsEafRr8DcBpGbXanVgV7/RbqfbJcFECNYbpu6Ac00XSh6nDUTBdPfgXj6hozckuH19XwuHhudCzM2JjZNScfnKIoNMASaCIRhD20sTeUCqS7sO5u23VRLLOTWTs/OlLXWI8A5Ux53aOCk0Rg5yVMSSqYTQX/nuMN51VIQOAJDlvw0AsA2ZdbOUBY4g87zqrEyLlSp7ef1My1DcgzjTJ0ITr0mI0YrCnEq/C5vYMij5Wwit65cmiQ== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BYAPR11MB3495.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(26005)(186003)(71200400001)(6506007)(7696005)(9686003)(2906002)(53546011)(83380400001)(8936002)(52536014)(5660300002)(55016003)(54906003)(110136005)(508600001)(66476007)(76116006)(66446008)(66946007)(66556008)(64756008)(4326008)(8676002)(316002)(38100700002)(122000001)(86362001)(33656002)(38070700005)(82960400001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?E8TSaWDhicy5GXzAKhs5JVvMHkTonBJKns8xHHM51iFwpkjAeyD0wwT6mgKf?= =?us-ascii?Q?uPCpCsr91/H7r3kJu3HBXrXKt0jU0X/gMuk07ijfDhqcX4d7kLBAekfXNPyb?= =?us-ascii?Q?hCfTFtP8yt3InHbkoikd/qx+l6xSxee6Y61bXAKww6q0nKKxLhE5DvQZMx5H?= =?us-ascii?Q?UWM/TKjezN44b/1Y4Ndtb7aLr51GBRc6YxfYc9jQI/OpxdGII9JaaygAaTBh?= =?us-ascii?Q?ODiDtYgO2LyAtpQOcTbcem7kblDNTu0e2CN5OQUDHqw8sZAN7GU0iXsgytUF?= =?us-ascii?Q?EbP4L89izDJpzOyQPEG0+OX3rXrOCgbthGTS04Lb3ymECQo+7DIlp8bdVkU1?= =?us-ascii?Q?fUFz3eF/0GGh5QEpAa4EPN/lpEEfHYmLC/XzXS1a+nxhM8tSgTyLPWXjRCQW?= =?us-ascii?Q?zUBz6AXYxQvke5a3Y/JK6q13Abnppqa9qR7cMx5k+y1klIE1/v1+O92r0FBt?= =?us-ascii?Q?EIz9SsgrHW5nSZjKnTJ/sskLbHX5GBGAL12ZlDrwe2vt9VTOvuXYI7KM5AE8?= =?us-ascii?Q?vexr+R0oYVZRrvob7qrq8S5OncEmlb2oYXVhLsngCuRZrihFz/EbYdubLqez?= =?us-ascii?Q?8+Dto+zUUjP9HDoqRgd1NdQIk923bzUcBmnIZYEs46yQtvONhMAdGjNcuhVw?= =?us-ascii?Q?jArLg4VMpnNyXf/BnlgazzPSuTViTF4shQAH6yqG8Os4BLDYZkeQIt2sgL6t?= =?us-ascii?Q?xvHkoaQIqc9qSOrLoIAH4C2MoZI+13E3yHslgvsxSz0Hgb4DmdowfBhoZuW7?= =?us-ascii?Q?p3gMkvZSglRFE84cbMM4sHsifH0pqFusIJfcg2jQfMCSYFVR6FXEnHuq2izV?= =?us-ascii?Q?20Who0F/f2E9N/bT3jd5qZY6xWt/SE1j8s5u9NW9o//MU4ePECR/KlXqvugz?= =?us-ascii?Q?KzAd05QROZz6jGqi/l+lGd7WYRZMIjX1Qn/ZoIWtAuAbN7ZAr9s1DPZIWsEO?= =?us-ascii?Q?VpPRHiNriXGxp9BkOrbLtW5+X949M+zLQal8u/tnFezsYz5HmaIAWBjuKa6I?= =?us-ascii?Q?G+gZDTuFX50IDwRhr8VoOCjxiECbTplcFyOAbhxH++StfoGzyOz3x2bmiJ8o?= =?us-ascii?Q?Bv7v7ncKUqESxiMNCqpNfF5J2g5kaLehW2Buvitji9dAqZQlw564zbxDttQr?= =?us-ascii?Q?1IbdUw79Xtd9Pe/7zVlHOKNJTPr3qz6+LfRMgmAvgmr13IvZrmeC4cT3UQwY?= =?us-ascii?Q?lSAaFOajeJsCdt7mqVQap8vcnmS2I9rqIizzpRInKSYp8OJulb8k15ww7K2r?= =?us-ascii?Q?vfDdnOL/P/Mn5LBjAEY7DHmb5rMIJrFXCFy2kXotRkeWWxjBrwyXuJdlY0Wq?= =?us-ascii?Q?7RkWhTZVxlot67ehZcigr8K+3t7jQfpxkM2igIToHTy0TOLmMqQvjqUeXhSu?= =?us-ascii?Q?TDdYy0NUdtosFAFFs0cPfsxQKkwO8SMh+NDcEDgtRHa9q0u4T3QRpjjqWaRQ?= =?us-ascii?Q?BkJZsQ2ugjrKq2FBLKJI5LDuaV9r8Ch4?= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BYAPR11MB3495.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 90038bbf-6a20-48a7-e01f-08da07e3209d X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Mar 2022 06:55:31.1284 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: l9kofFO+mCe/cQ6MphTmwQbTPOcNADtyO/16llCcuS/1o4HK0ZObmDjlJIxw2cP5QGt/ZreZ6cYxtVwh7FjcIg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR11MB3019 X-OriginatorOrg: intel.com X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org > -----Original Message----- > From: jeffd@silicom-usa.com > Sent: Tuesday, March 8, 2022 06:34 > To: dev@dpdk.org > Cc: Stephen Douthit ; Daly, Jeff ; Wang, Haiyue > > Subject: [PATCH] net/ixgbe: Retry SFP ID read field to handle misbehaving= SFPs >=20 > From: Stephen Douthit >=20 > Some XGS-PON SFPs have been observed ACKing I2C reads and returning > uninitialized garbage while their uC boots. This can lead to the SFP ID > code marking an otherwise working SFP module as unsupported if a bogus > ID value is read while its internal PHY/microcontroller is still > booting. >=20 > Retry the ID read several times looking not just for NAK, but also for a > valid ID field. >=20 > Since the device isn't NAKing the trasanction the existing longer retry > code in ixgbe_read_i2c_byte_generic_int() doesn't apply here. >=20 > Signed-off-by: Stephen Douthit > Signed-off-by: Jeff Daly > --- > drivers/net/ixgbe/base/ixgbe_phy.c | 31 ++++++++++++++++++++++++++---- > 1 file changed, 27 insertions(+), 4 deletions(-) >=20 > diff --git a/drivers/net/ixgbe/base/ixgbe_phy.c b/drivers/net/ixgbe/base/= ixgbe_phy.c > index d8d51d2c3f..27bce066a1 100644 > --- a/drivers/net/ixgbe/base/ixgbe_phy.c > +++ b/drivers/net/ixgbe/base/ixgbe_phy.c > @@ -1275,6 +1275,7 @@ s32 ixgbe_identify_sfp_module_generic(struct ixgbe_= hw *hw) > u8 cable_tech =3D 0; > u8 cable_spec =3D 0; > u16 enforce_sfp =3D 0; > + u8 id_reads; "u8 retries" is a better name, I think, to match the patch title. >=20 > DEBUGFUNC("ixgbe_identify_sfp_module_generic"); >=20 > @@ -1287,12 +1288,34 @@ s32 ixgbe_identify_sfp_module_generic(struct ixgb= e_hw *hw) > /* LAN ID is needed for I2C access */ > hw->mac.ops.set_lan_id(hw); >=20 > - status =3D hw->phy.ops.read_i2c_eeprom(hw, > - IXGBE_SFF_IDENTIFIER, > - &identifier); > + /* Need to check this a couple of times for a sane value. > + * > + * SFPs that have a uC slaved to the I2C bus (vs. a dumb EEPROM) can be > + * poorly designed such that they will ACK I2C reads and return > + * whatever bogus data is in the SRAM (or whatever is backing the targe= t > + * device) before things are truly initialized. > + * > + * In a perfect world devices would NAK I2C requests until they were > + * sane, but here we are. > + * > + * Give such devices a couple tries to get their act together before > + * marking the device as unsupported. > + */ > + for (id_reads =3D 0; id_reads < 5; id_reads++) { > + status =3D hw->phy.ops.read_i2c_eeprom(hw, > + IXGBE_SFF_IDENTIFIER, > + &identifier); >=20 > - if (status !=3D IXGBE_SUCCESS) > + DEBUGOUT("status %d, id %d\n", status, identifier); > + if (!status && > + identifier =3D=3D IXGBE_SFF_IDENTIFIER_SFP) Let's not assume the ' IXGBE_SUCCESS' is '0', so change it to: if (status =3D=3D IXGBE_SUCCESS && identifier =3D=3D IXGBE_SFF_IDENTIFIER_SFP) > + break; > + } > + > + if (status !=3D IXGBE_SUCCESS) { > + DEBUGOUT("Failed SFF ID read (%d attempts)\n", id_reads); > goto err_read_i2c_eeprom; > + } >=20 > if (identifier !=3D IXGBE_SFF_IDENTIFIER_SFP) { > hw->phy.type =3D ixgbe_phy_sfp_unsupported; > -- > 2.25.1