Received: by 2002:a6b:500f:0:0:0:0:0 with SMTP id e15csp3589049iob; Sun, 1 May 2022 23:46:39 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxwNlMU0d+Vrq2f1KXX4M+PmvWw/2fA6m325J8rtmo7JiCBhmFHMXD2jMactkLNdNegFEhm X-Received: by 2002:a05:6512:baa:b0:472:5ec9:f625 with SMTP id b42-20020a0565120baa00b004725ec9f625mr5006812lfv.560.1651473999140; Sun, 01 May 2022 23:46:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1651473999; cv=none; d=google.com; s=arc-20160816; b=GjJHFw7pXSBTFYlpkujKroqaL8wTk5/HGhkhQ8ZWPSfOzaK9w3BMKInTfCI4TMD7n3 Q+vyTAuAWWhrPSf+wlh+yVElJnMPsvlNiICrI1XAETGbf2Ewk2nJLjkxc6Eh5n9pJATW 89ncHmKMZAkaBEqyAiOf3VUlNXT2f7+PltyqNobNvYVCi/pfbxUcZntGmDomGL59QCPs FWOiiJ4E5opRKHRwtkzxJU7k4bZ9ik4EOLyC9w8tlpfSirLnLrJAlMS7z/G5tnty/leo inxkBVXZiCsEyyP2OXBGqRMeWiqzkzCJmzJSwaLw54SWyzeUkkinlvKS+nGBudZeEdSw pu8A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:to:content-transfer-encoding:mime-version :message-id:date:subject:cc:from:dkim-signature; bh=O/FsveIK5tQmhrYWr1untBSs0r3sGQT4hudw1u1onus=; b=GrHE9OT16vHfW8lBf9ayjvIQbAAdXXmDa6XyQZn8CPrVx2rI+fxXqNJq/cDljD0ol6 5JQuuneQXW3y5dpvws6/bIjh7H3/tXZvFmMsPOwSB5D1pUv+VKcgrCZ+vGD5BZrUfPEd O5YxsH8X7sHxw76HwWDRVCHoeIlCM6l2XKOaUM6MK7Mf+T3iaoWpx0x7Ig60A9C6VDbY n8c6t9bvfCpFU3arjneMugVkS6qXS8kpu4EDPFqTcEQ54UAj79C4PRB3DWczltvZVono qBbB6TE2rgFhD4wVyCNp5BW92PYBY0hN9BgYe+HMhQFgF3y5PbghNXT6+sTR+R0U0lIA 2gOw== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@gmail.com header.s=20210112 header.b=Ykrp+gWb; 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=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id h9-20020a2e9009000000b0024f116b8282si14038578ljg.538.2022.05.01.23.46.12; Sun, 01 May 2022 23:46:39 -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=fail header.i=@gmail.com header.s=20210112 header.b=Ykrp+gWb; 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=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S241833AbiD3MwV (ORCPT + 99 others); Sat, 30 Apr 2022 08:52:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49828 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232320AbiD3MwT (ORCPT ); Sat, 30 Apr 2022 08:52:19 -0400 Received: from mail-wr1-x42b.google.com (mail-wr1-x42b.google.com [IPv6:2a00:1450:4864:20::42b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 41ECB2A71A; Sat, 30 Apr 2022 05:48:58 -0700 (PDT) Received: by mail-wr1-x42b.google.com with SMTP id w4so13971978wrg.12; Sat, 30 Apr 2022 05:48:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=O/FsveIK5tQmhrYWr1untBSs0r3sGQT4hudw1u1onus=; b=Ykrp+gWbIAq9sg9ItQWonAtSkkoJHjwOhZ4C5E5259X59O769Kdld6QrRelzl5zITG HjredN5f5Tp7IyAvWJvVJIFG1ToQK5u2x+cnCcgwP9ebepXkCOCmzq5Y7YXopHDyE4gH GpBy8GzKWzPxogUpF4l/UhEXbHfSt0jnC3SuoBqWuD+eUIu5dSaD2fPtxRdFyjTa9Gd1 a6eFa+MGC12uDd/kmQF1272foUb0K6xyWt4E8lmMUpqpkhWyR7a+eLooa6Oz8+qvsSIk XdJG2ea/RfvhqRcIWs2LBg/Xkfa9R3xdjXfiBqfMndF3UQomB4QyYPNwBTegWG/Zl+j1 Irng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=O/FsveIK5tQmhrYWr1untBSs0r3sGQT4hudw1u1onus=; b=Bj5BbTZOU0wR1cLcW45rJG+bPlrQSpSmeR7B05NZ5JmEJ+Z+I9qe8YvrgqP4uhIvFG QDJZzbZSKVCd/VpNxPhcBEvEem4sEK9kBfvFNhU6/5yxrCu82CaacKUyG3FtibiseBWt RNHWfBBDUKeB+BjdfpOHSLTEn7SxuiYC358x4srX8NCePnksOCX85yRt6Ww6I4TWuCsl Cf+vLkl85y6feFcL0fr00DTBCb2XxgcuUU4kRRGdwAKpig0eBCnzRFDXrAizWUshey3p 75/NtBQKweDneS6huW9s/KvjUU0cAbUUhsDEfZET1CmTqHHh8y/M0GlRS4B1XNOL57pW IQ3g== X-Gm-Message-State: AOAM533Es991OaMKSrjZ5gdJvUFKucnITsfC4v0YjfUoJdJ3zMVeP4XS NZrT7cKpjPZc6C0b+veev3k= X-Received: by 2002:a05:6000:1e05:b0:20a:ecc7:41cf with SMTP id bj5-20020a0560001e0500b0020aecc741cfmr2999825wrb.102.1651322936716; Sat, 30 Apr 2022 05:48:56 -0700 (PDT) Received: from localhost.localdomain ([2603:c020:c001:7eff:ffff:ffff:ffff:ff00]) by smtp.googlemail.com with ESMTPSA id f25-20020a7bc8d9000000b003942a244f49sm1717403wml.34.2022.04.30.05.48.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 Apr 2022 05:48:56 -0700 (PDT) From: Matthew Hagan Cc: Matthew Hagan , Russell King , Andrew Lunn , Heiner Kallweit , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] net: sfp: Add tx-fault quirk for Huawei MA5671A SFP ONT Date: Sat, 30 Apr 2022 13:48:02 +0100 Message-Id: <20220430124803.1165005-1-mnhagan88@gmail.com> X-Mailer: git-send-email 2.27.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net To: unlisted-recipients:; (no To-header on input) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org As noted elsewhere [1], various GPON SFP modules exhibit non-standard TX-fault behaviour. In the tested case, the Huawei MA5671A, when used in combination with a Marvell 88E6393X switch, was found to persistently assert TX-fault, resulting in the module being disabled. This patch adds a quirk to ignore changes to the the SFP_F_TX_FAULT state, thus allowing the module to function. [1] https://lore.kernel.org/all/20200110114433.GZ25745@shell.armlinux.org.uk/ Signed-off-by: Matthew Hagan --- drivers/net/phy/sfp.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/drivers/net/phy/sfp.c b/drivers/net/phy/sfp.c index 4dfb79807823..11a20687b273 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; @@ -1956,6 +1957,14 @@ 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; + return 0; } @@ -2409,7 +2418,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.27.0