Received: by 2002:a05:6a10:af89:0:0:0:0 with SMTP id iu9csp2540756pxb; Sun, 23 Jan 2022 07:57:03 -0800 (PST) X-Google-Smtp-Source: ABdhPJxPV6X5440qhKMbP5Z6cTcZpPjEdpxUOXNpieUCda3CiUh7mu8vjZ44BxDXFnCtYob4CKZr X-Received: by 2002:a17:90a:194e:: with SMTP id 14mr9407747pjh.106.1642953423327; Sun, 23 Jan 2022 07:57:03 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1642953423; cv=none; d=google.com; s=arc-20160816; b=SJnO+ij8JfA+hIU1016ogCn3pvRasKnJ7xrmGJ1lHYoi8GM10XXajcDSidd/JGxqkF LAn0eOwNR/UvMlJLNFEgdXgtA/Eic7/bN5YLPXs3FB5lXam3PM4h8g5IQQbNmj2OLr11 VPxBUICOeAkjgMWoN+ZcydKWMvrPsuBqYzSMfyitmxQMRYAlv4pf1R7yvBaBm+2XyeVQ Uj2KN+rew8CgcCaRTJyHgv4d1DMLSnIlru+IfsDPjw1A9WGutPjOD/kTffc8ThgPJ3EE j+9TUtE9aoA87f9zjhlUvaPSZmKxlLIejvJaL60kFlAtwbkUIWPUASR1Q1yiAABsS01m kyEg== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=NVeC3B2Yit618jzzQLJaDTN+I7pHw/ZBk6dm6ruYyvo=; b=GCPcQlnK5pZOF9Zyh9Wg6R+LPWILFzmks9UwfL6o47+84W/ZbtMpt8XtY4MohHeykK pxgcagToO1PVrnqcc+cOyT+Y+RKMl1FDzj4sGSKJ6zUA4XS855ziSHXMaOEAg3JgVVgH bB/fPmAJ3gTDG7vUv6PYFUPoKCVz/ZhwVVj5n1V8aTFhnnVzXiAay6YsuqHxP9JG+Zt4 3uCvDylfB/jMWHJLBJ8eq/ywtOhPdM57LK1aWBzqKULVxOg7wOnSfs1YQPcio9fgPGZR bpAJjdU5via0WgZpDlBWChtXolLLdBbmPQV8BnvmRWGXSC2IliLTNGlQClqLhzQGBAoQ EMdA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=eYygCN20; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id d8si5354782plh.148.2022.01.23.07.56.51; Sun, 23 Jan 2022 07:57:03 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=eYygCN20; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235850AbiAWBed (ORCPT + 99 others); Sat, 22 Jan 2022 20:34:33 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54624 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235262AbiAWBdw (ORCPT ); Sat, 22 Jan 2022 20:33:52 -0500 Received: from mail-ed1-x534.google.com (mail-ed1-x534.google.com [IPv6:2a00:1450:4864:20::534]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B2BDDC061401; Sat, 22 Jan 2022 17:33:51 -0800 (PST) Received: by mail-ed1-x534.google.com with SMTP id z22so49510181edd.12; Sat, 22 Jan 2022 17:33:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=NVeC3B2Yit618jzzQLJaDTN+I7pHw/ZBk6dm6ruYyvo=; b=eYygCN20TJe1WXBqXMPIhCErvz3siyHiMJ1GhIsYx/NzcFFP554HDIAwttBp7D7iGt tTpu6T1TKYPAN3YCoXr5o23TQ07qUsa+G9ycA3kUQwkZEzKO8BIz8QsH0Y9tgucOC17v Omhz7BcES+6WzjUAv7SwLJX1l5X9aNoXDzKyWmHv/LIQFNYIc+0+Ws4mhS7VXMXlHZRh mKYRRveeajUHZRl/namXADxKQituStEF8KvjDpInUAMMO/55AZJ14zZ6aoMqJWhWEEt7 sefd2Jpi57PrxjJqCIJ9oE9KLc634SJ36INcc1kJ0Dq+wFXwbUOENluj6y6Vf0CaYuPb 24pw== 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=NVeC3B2Yit618jzzQLJaDTN+I7pHw/ZBk6dm6ruYyvo=; b=UFltOK9HLVJYYxExaolq974RHoqLkqtQZ/KzyxhpHSYa3t+9mFXYEMnD1Tc8xL622e 0By/p534y63pzuxrqAm4vAfHxYmZy8L6I7WBYHp8+SBfqzGQkCbI6ucj2ltzN7TlX/dK it1gB8k1rSarEeHahExYebXcEG0aHavOgd8uGWwEoJJddtcNUh45lGRo4ejDDE9nDaii lYjKUaTvWzdIzI9KzuSnLt0EwKtfwGCLyZ1xrF079aYPowJdXbGUeb7KCnFqHbUPU2FF zapZWTkiSMrwj4/mYHwBfgf7SeLM/A3ZYy60DN4Lybgn2gOo+53Nrw+2kOJUocIhKJ1z /wEA== X-Gm-Message-State: AOAM5325KO9ysB2hXLQbi5X5WtIYckEEPjapEYYiQMg0t9fgtDUdmTHG a32SRiHzRkpQWO/YZIXIcGw= X-Received: by 2002:a05:6402:5203:: with SMTP id s3mr10130309edd.27.1642901630266; Sat, 22 Jan 2022 17:33:50 -0800 (PST) Received: from localhost.localdomain (93-42-71-246.ip85.fastwebnet.it. [93.42.71.246]) by smtp.googlemail.com with ESMTPSA id fy40sm3259866ejc.36.2022.01.22.17.33.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 22 Jan 2022 17:33:49 -0800 (PST) From: Ansuel Smith To: Andrew Lunn , Vivien Didelot , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Jakub Kicinski , linux-kernel@vger.kernel.org, netdev@vger.kernel.org Cc: Ansuel Smith Subject: [RFC PATCH v7 09/16] net: dsa: qca8k: add tracking state of master port Date: Sun, 23 Jan 2022 02:33:30 +0100 Message-Id: <20220123013337.20945-10-ansuelsmth@gmail.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20220123013337.20945-1-ansuelsmth@gmail.com> References: <20220123013337.20945-1-ansuelsmth@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org MDIO/MIB Ethernet require the master port and the tagger availabale to correctly work. Use the new api master_state_change to track when master is operational or not and set a bool in qca8k_priv. We cache the first cached master available and we check if other cpu port are operational when the cached one goes down. This cached master will later be used by mdio read/write and mib request to correctly use the working function. qca8k implementation for MDIO/MIB Ethernet is bad. CPU port0 is the only one that answers with the ack packet or sends MIB Ethernet packets. For this reason the master_state_change ignore CPU port6 and checkes only CPU port0 if it's operational and enables this mode. Signed-off-by: Ansuel Smith --- drivers/net/dsa/qca8k.c | 18 ++++++++++++++++++ drivers/net/dsa/qca8k.h | 1 + 2 files changed, 19 insertions(+) diff --git a/drivers/net/dsa/qca8k.c b/drivers/net/dsa/qca8k.c index 039694518788..4bc5064414b5 100644 --- a/drivers/net/dsa/qca8k.c +++ b/drivers/net/dsa/qca8k.c @@ -2383,6 +2383,23 @@ qca8k_port_lag_leave(struct dsa_switch *ds, int port, return qca8k_lag_refresh_portmap(ds, port, lag, true); } +static void +qca8k_master_change(struct dsa_switch *ds, const struct net_device *master, + bool operational) +{ + struct dsa_port *dp = master->dsa_ptr; + struct qca8k_priv *priv = ds->priv; + + /* Ethernet MIB/MDIO is only supported for CPU port 0 */ + if (dp->index != 0) + return; + + if (operational) + priv->mgmt_master = master; + else + priv->mgmt_master = NULL; +} + static const struct dsa_switch_ops qca8k_switch_ops = { .get_tag_protocol = qca8k_get_tag_protocol, .setup = qca8k_setup, @@ -2418,6 +2435,7 @@ static const struct dsa_switch_ops qca8k_switch_ops = { .get_phy_flags = qca8k_get_phy_flags, .port_lag_join = qca8k_port_lag_join, .port_lag_leave = qca8k_port_lag_leave, + .master_state_change = qca8k_master_change, }; static int qca8k_read_switch_id(struct qca8k_priv *priv) diff --git a/drivers/net/dsa/qca8k.h b/drivers/net/dsa/qca8k.h index ab4a417b25a9..9437369c60ca 100644 --- a/drivers/net/dsa/qca8k.h +++ b/drivers/net/dsa/qca8k.h @@ -353,6 +353,7 @@ struct qca8k_priv { struct dsa_switch_ops ops; struct gpio_desc *reset_gpio; unsigned int port_mtu[QCA8K_NUM_PORTS]; + const struct net_device *mgmt_master; /* Track if mdio/mib Ethernet is available */ }; struct qca8k_mib_desc { -- 2.33.1