Received: by 2002:a6b:500f:0:0:0:0:0 with SMTP id e15csp3361395iob; Mon, 16 May 2022 20:40:30 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwJ1QLzNHywAeaFeaLjJ6Fbh6NALtm51vVtODnQN2dZP2ai37xcqlI+oMXNH2dYSh7r+PWH X-Received: by 2002:a17:907:d06:b0:6f4:13cc:80c2 with SMTP id gn6-20020a1709070d0600b006f413cc80c2mr17796025ejc.500.1652758830687; Mon, 16 May 2022 20:40:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1652758830; cv=none; d=google.com; s=arc-20160816; b=N4BIsP7KK16YdtPg7D/kC9rf98MAR8YvsVE9iiYe8IkNGjFm5u7gOzcd8XPHs/h6hC S+31bNawnSFVGmKqYnRSt9jauJI75+XmcSfDDmqh2NSl2xIgMKbd3iL/E8GeXZK3cRDN Br12ZXHNLIKy6gq1tJlcYYcv76ZAQK19wpbvfYJoBwU290XMOp8HZ1UKSYyCXjjc85Tb kClv5NV4cgThgzmCMDK1K06gwttNuEp09DdqE1cdcvOhyhY1HaHN1sKcuOdgK3qAprev Ao9Xrh4zaXzEzsZsfEbJXhrtYTDDiiv8ejQTacQ6B4STvcDt3z6j6Uw3j0NGuIFLJJh/ 3N3A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=fiV1zyOCf+hWm8NrTWlwXDIAfuKqOZB0ufqb1Z9O7Io=; b=uB9yQ/6Ukyr2R6pQmqyYBpq7E2Gjt+oz6syR2sWgrW0V3QzehMyxsJkDpepkhNUW3z k0t60W7P0RsSF6FDclNfUxXdNa9sR0pBToY4esa/8v1LkJ9S80qZlqb+VuI92E3XExug c7GCTsv3R/RxuS8lhilMtDBRhEwPq7R7P6DQ/aOXIrsmJuJWMCv5bOFLmrfUNX8uSSzE INxmM4uHVR7DR84frSuQvsxlF7ntYld/oiU0x0hv89+voHauu1d5uR2mdE+Nhgc/vOIG vZ6MEbTbU5F6/Vixac1cb6vUpRo0wxFWDhXmuYPJJw4iCKnH3nPA8fYc1Q6Uxfm5uSP8 yQTg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=aKXp8y5U; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id do4-20020a170906c10400b006e8618a4c75si1381049ejc.97.2022.05.16.20.40.06; Mon, 16 May 2022 20:40:30 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=aKXp8y5U; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1348851AbiEPUXL (ORCPT + 99 others); Mon, 16 May 2022 16:23:11 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46628 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1348869AbiEPT7A (ORCPT ); Mon, 16 May 2022 15:59:00 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B4779A47A; Mon, 16 May 2022 12:51:41 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 66694B81612; Mon, 16 May 2022 19:51:40 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id C214AC385AA; Mon, 16 May 2022 19:51:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1652730699; bh=zAIK8Scdfpm+47u/CP5vmP3dy1T/MXT6kt+ys0EhElw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=aKXp8y5UHDCqVT+NEXyRte9AbUlcsAS6KiaFDXvbF1jVBApEFcBlXlq0Bjz8ii4uP uOzLtTtfceVxoIZApX4kCWJl04IZX+sakz3449zenCEQe+WGHvVxMt10zfaOelC9zy AjhSPzN4UlQsLNMgW2xeY7gDHKDY3YpXjEUHQ4qU= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Matthew Hagan , Andrew Lunn , Jakub Kicinski , Sasha Levin Subject: [PATCH 5.15 054/102] net: sfp: Add tx-fault workaround for Huawei MA5671A SFP ONT Date: Mon, 16 May 2022 21:36:28 +0200 Message-Id: <20220516193625.547213760@linuxfoundation.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220516193623.989270214@linuxfoundation.org> References: <20220516193623.989270214@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-7.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Matthew Hagan [ Upstream commit 2069624dac19d62c558bb6468fe03678553ab01d ] As noted elsewhere, various GPON SFP modules exhibit non-standard TX-fault behaviour. In the tested case, the Huawei MA5671A, when used in combination with a Marvell mv88e6085 switch, was found to persistently assert TX-fault, resulting in the module being disabled. This patch adds a quirk to ignore the SFP_F_TX_FAULT state, allowing the module to function. Change from v1: removal of erroneous return statment (Andrew Lunn) Signed-off-by: Matthew Hagan Reviewed-by: Andrew Lunn Link: https://lore.kernel.org/r/20220502223315.1973376-1-mnhagan88@gmail.com Signed-off-by: Jakub Kicinski Signed-off-by: Sasha Levin --- drivers/net/phy/sfp.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/drivers/net/phy/sfp.c b/drivers/net/phy/sfp.c index 4720b24ca51b..90dfefc1f5f8 100644 --- a/drivers/net/phy/sfp.c +++ b/drivers/net/phy/sfp.c @@ -250,6 +250,7 @@ struct sfp { struct sfp_eeprom_id id; unsigned int module_power_mW; unsigned int module_t_start_up; + bool tx_fault_ignore; #if IS_ENABLED(CONFIG_HWMON) struct sfp_diag diag; @@ -1945,6 +1946,12 @@ static int sfp_sm_mod_probe(struct sfp *sfp, bool report) else sfp->module_t_start_up = T_START_UP; + if (!memcmp(id.base.vendor_name, "HUAWEI ", 16) && + !memcmp(id.base.vendor_pn, "MA5671A ", 16)) + sfp->tx_fault_ignore = true; + else + sfp->tx_fault_ignore = false; + return 0; } @@ -2397,7 +2404,10 @@ static void sfp_check_state(struct sfp *sfp) mutex_lock(&sfp->st_mutex); state = sfp_get_state(sfp); changed = state ^ sfp->state; - changed &= SFP_F_PRESENT | SFP_F_LOS | SFP_F_TX_FAULT; + if (sfp->tx_fault_ignore) + changed &= SFP_F_PRESENT | SFP_F_LOS; + else + changed &= SFP_F_PRESENT | SFP_F_LOS | SFP_F_TX_FAULT; for (i = 0; i < GPIO_MAX; i++) if (changed & BIT(i)) -- 2.35.1