From patchwork Sat Mar 15 15:43:40 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christian Marangi X-Patchwork-Id: 14018112 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 8B33CC28B2F for ; Sat, 15 Mar 2025 15:46:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:Message-ID:Date:Subject:To:From:Reply-To:Cc:Content-Type: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:List-Owner; bh=Pgu6pFKZpaFCkMfG+fJ5U0Ejdmx6Z7co2Eumfl2szkk=; b=EKikSGdqTdXFf/WKwnj6+TD3wc 5whJa7CIxIu1k6ez04HuxZW/7KpIsY25q4655kqhYEHA2/QeU679frIdYWKnqUOWsSs5JheLHwJ4V jMIJVylkApqXxiRshGn7rqYX9I9y+aBqfpCPd7U93WLuYlOKhoZMRoruj62UvlWAF9TG7RupWgFS5 k397CSeNd90db1qoRbSrtC1D9OgJWqLrtA7enm1M8LgSG8G85WNtHGy7ng6FgAV++sDMYF1vikuND 2jUmvFZ+6NHyLta9W0CLKm2NNZqXcUz/PHnj5j988+xbRtU7GihhnXHNSksyLCrMMgnjDde888UlS XnRRmF9w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1ttTiV-0000000GXOO-0mMU; Sat, 15 Mar 2025 15:46:27 +0000 Received: from mail-wm1-x32f.google.com ([2a00:1450:4864:20::32f]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1ttTgo-0000000GWzq-17HH; Sat, 15 Mar 2025 15:44:43 +0000 Received: by mail-wm1-x32f.google.com with SMTP id 5b1f17b1804b1-43cebe06e9eso4804275e9.3; Sat, 15 Mar 2025 08:44:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1742053480; x=1742658280; darn=lists.infradead.org; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to; bh=Pgu6pFKZpaFCkMfG+fJ5U0Ejdmx6Z7co2Eumfl2szkk=; b=faOI9nvRGx+woBjFoUUVGyxrEU67+5fMT397mEwTv5ObRiFPs7KY8ixwqUmgf3KkeZ 6OyxX3awcEQ9MIXD9FJd7EHHauTtPBe+BF1L2ZASDsi9o/skkBp/ZbwCBshHqUHDVJlE 8QIMhOWCBvVe5Fz7iwuR6pEiRisKYtvNd+25kppxXIRxU0h4B3MvqBv3sj7AIvv8gyvU 32sC0d8/9YZum0UA52psDDhkhTMDxMSxstVDhd9AMKYP9YaTNyyy27kIfCL7H7qOT1+Q xQRenjUNjJoblYNz5anOmiWtsA+cenF/r8FZYVYS220OApsdWPQ04bAwkRsnbYgO4TAm ereA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742053480; x=1742658280; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Pgu6pFKZpaFCkMfG+fJ5U0Ejdmx6Z7co2Eumfl2szkk=; b=lj0Zoo0E2UzGEpKCGyok9a9gbeYWxVXd0Cj6FWURUd85XXTc5QAdWvTo0q6rpLRVcY kL2ucjorRWm6Z6sGJvSwIBmbWaExhURi1zJfkkcjxsfgV6rEMZLayz0QN6Tb9mVn22CQ mgLd+Mpdx/sxGl50NlZc0yn8ys6erMTQ2CrZTNt0HJeDUo3jFmph8ckt8zKxP6Fgulcx uOzX4sP0BsWFCDMZZ7e2/zSctW9cYaVxI+dmKEaOnrBEqvhgUAGMiNVrlH9SL18Vpzj6 vBlp3Kbh7eH1VyPj0zORI5TXLar1xPrjsWzFnrrDPIAQOvf8pXFf0rt+IN3T533EidcD C7og== X-Forwarded-Encrypted: i=1; AJvYcCU3hoGlyblMKyOP9ezb+3vr9mzvNZxp691spV+lXq9RMGma1DE7uqwXuuprozRngARvcmChr3gwe0XRyBtdX344@lists.infradead.org, AJvYcCWJiYOL75wJteNwO0RM1YqNGMMZ+mlDrFQ+z1t0a4yJjm29q9MtM2Tnw+0KdSjuvknSj3SmsZ0/72EQQjSuc1U=@lists.infradead.org X-Gm-Message-State: AOJu0YwYcadETt1TJago09xDWDCupZ1QhiP05n8fNfBL8RZYo4iKLG61 CIrYy1xgWp42MrxaZnN1S1uabZHgenZqtJPqjAjd0bwXF+VGdVaS X-Gm-Gg: ASbGncsvbESnXwH/uatDBQrKLBNlublt7ZiR/LOwNY6j8P142w/MUhp+YHk9/RaHxdE VVV83L0ShMhOLINbgvIseqhKU6jmJE3RP9uhFC0AYUcxvhG4UzgyqjUAc7F8iK7y/iOP0himaRv hk7WJQ2i+A1gK+59CWapyg5DvwhMHq6QtNixwhXxSg9lKx0CuxN5XZcgU9AV3RmYoDjMerhWAl+ uxo8x2nKpVKg5oS5so59dNPtwSFJjaa5KS2h9whXHlPwXRFILqq/kb+2dVkTJK6XU/uEps8RY6j uFqvyxr7pAXbnvYFoDtJok0BVHMf1ZEo4fuhFdA+y9xncsi7OWYi1plkRUwbCUD6H49qo93IifC eHm3fp9u4AdCIQw== X-Google-Smtp-Source: AGHT+IF6EKxcWExRbMDzS7nE4MMWti2DGOaPEZs/WmuogffOVzvIzwZ4mmV6lHUAA2erEQdv58iVSw== X-Received: by 2002:a05:600c:3c8b:b0:43c:f332:703a with SMTP id 5b1f17b1804b1-43d1ed22601mr82055325e9.31.1742053479897; Sat, 15 Mar 2025 08:44:39 -0700 (PDT) Received: from localhost.localdomain (93-34-90-129.ip49.fastwebnet.it. [93.34.90.129]) by smtp.googlemail.com with ESMTPSA id 5b1f17b1804b1-43d1fe0636dsm53464195e9.11.2025.03.15.08.44.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 15 Mar 2025 08:44:38 -0700 (PDT) From: Christian Marangi To: Christian Marangi , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Vladimir Oltean , Srinivas Kandagatla , Heiner Kallweit , Russell King , Maxime Chevallier , Matthias Brugger , AngeloGioacchino Del Regno , linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, upstream@airoha.com Subject: [net-next PATCH v13 00/14] net: dsa: Add Airoha AN8855 support Date: Sat, 15 Mar 2025 16:43:40 +0100 Message-ID: <20250315154407.26304-1-ansuelsmth@gmail.com> X-Mailer: git-send-email 2.48.1 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250315_084442_310531_C0053FC1 X-CRM114-Status: GOOD ( 12.13 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org This small series add the initial support for the Airoha AN8855 Switch. It's a 5 port Gigabit Switch with SGMII/HSGMII upstream port. This is starting to get in the wild and there are already some router having this switch chip. It's conceptually similar to mediatek switch but register and bits are different. And there is that massive Hell that is the PCS configuration. Saddly for that part we have absolutely NO documentation currently. There is this special thing where PHY needs to be calibrated with values from the switch efuse. (the thing have a whole cpu timer and MCU) From v8 Driver is now evaluated with Kernel selftest scripts for DSA: Additional info about the test bridge_vlan_aware.sh. It was discovered that the Airoha Switch (and probably the Mediatek one that produce the same test results) hardcode checking for 802.1ad when the port is configured in VLAN-Aware mode (aka Security mode). In such mode, both 802.1q and 802.1ad TPID are checked, hence the bridge_vlan_aware.sh test fails as packets with 802.1ad TPID are rejected (in the case where a wrong VLAN ID is forwarded) This was confirmed by Airoha and multiple try were done to try to workaround this problem. No solution were found to this as ACL mechanism can't work on receiving packets and the Switch doesn't support turning off this. The current driver is in use from 2 month on OpenWrt with all kind of scenario confirming working in VLAN bridge. By tweaking the bridge_vlan_aware.sh test with setting the TPID to 0x9100, the test correctly pass as packets gets classified as untagged and the default PVID applied. It's also confirmed that switch correctly parse the 802.1ad tag and make the packet pass only when allowed by VLAN table rules. Output local_termination.sh TEST: lan2: Unicast IPv4 to primary MAC address [ OK ] TEST: lan2: Unicast IPv4 to macvlan MAC address [ OK ] TEST: lan2: Unicast IPv4 to unknown MAC address [ OK ] TEST: lan2: Unicast IPv4 to unknown MAC address, promisc [ OK ] TEST: lan2: Unicast IPv4 to unknown MAC address, allmulti [ OK ] TEST: lan2: Multicast IPv4 to joined group [ OK ] TEST: lan2: Multicast IPv4 to unknown group [XFAIL] reception succeeded, but should have failed TEST: lan2: Multicast IPv4 to unknown group, promisc [ OK ] TEST: lan2: Multicast IPv4 to unknown group, allmulti [ OK ] TEST: lan2: Multicast IPv6 to joined group [ OK ] TEST: lan2: Multicast IPv6 to unknown group [XFAIL] reception succeeded, but should have failed TEST: lan2: Multicast IPv6 to unknown group, promisc [ OK ] TEST: lan2: Multicast IPv6 to unknown group, allmulti [ OK ] TEST: lan2: 1588v2 over L2 transport, Sync [ OK ] TEST: lan2: 1588v2 over L2 transport, Follow-Up [ OK ] TEST: lan2: 1588v2 over L2 transport, Peer Delay Request [ OK ] TEST: lan2: 1588v2 over IPv4, Sync [FAIL] reception failed TEST: lan2: 1588v2 over IPv4, Follow-Up [FAIL] reception failed TEST: lan2: 1588v2 over IPv4, Peer Delay Request [FAIL] reception failed TEST: lan2: 1588v2 over IPv6, Sync [FAIL] reception failed TEST: lan2: 1588v2 over IPv6, Follow-Up [FAIL] reception failed TEST: lan2: 1588v2 over IPv6, Peer Delay Request [FAIL] reception failed TEST: vlan_filtering=0 bridge: Unicast IPv4 to primary MAC address [ OK ] TEST: vlan_filtering=0 bridge: Unicast IPv4 to macvlan MAC address [ OK ] TEST: vlan_filtering=0 bridge: Unicast IPv4 to unknown MAC address [ OK ] TEST: vlan_filtering=0 bridge: Unicast IPv4 to unknown MAC address, promisc [ OK ] TEST: vlan_filtering=0 bridge: Unicast IPv4 to unknown MAC address, allmulti [ OK ] TEST: vlan_filtering=0 bridge: Multicast IPv4 to joined group [ OK ] TEST: vlan_filtering=0 bridge: Multicast IPv4 to unknown group [XFAIL] reception succeeded, but should have failed TEST: vlan_filtering=0 bridge: Multicast IPv4 to unknown group, promisc [ OK ] TEST: vlan_filtering=0 bridge: Multicast IPv4 to unknown group, allmulti [ OK ] TEST: vlan_filtering=0 bridge: Multicast IPv6 to joined group [ OK ] TEST: vlan_filtering=0 bridge: Multicast IPv6 to unknown group [XFAIL] reception succeeded, but should have failed TEST: vlan_filtering=0 bridge: Multicast IPv6 to unknown group, promisc [ OK ] TEST: vlan_filtering=0 bridge: Multicast IPv6 to unknown group, allmulti [ OK ] TEST: vlan_filtering=1 bridge: Unicast IPv4 to primary MAC address [ OK ] TEST: vlan_filtering=1 bridge: Unicast IPv4 to macvlan MAC address [ OK ] TEST: vlan_filtering=1 bridge: Unicast IPv4 to unknown MAC address [ OK ] TEST: vlan_filtering=1 bridge: Unicast IPv4 to unknown MAC address, promisc [ OK ] TEST: vlan_filtering=1 bridge: Unicast IPv4 to unknown MAC address, allmulti [ OK ] TEST: vlan_filtering=1 bridge: Multicast IPv4 to joined group [ OK ] TEST: vlan_filtering=1 bridge: Multicast IPv4 to unknown group [XFAIL] reception succeeded, but should have failed TEST: vlan_filtering=1 bridge: Multicast IPv4 to unknown group, promisc [ OK ] TEST: vlan_filtering=1 bridge: Multicast IPv4 to unknown group, allmulti [ OK ] TEST: vlan_filtering=1 bridge: Multicast IPv6 to joined group [ OK ] TEST: vlan_filtering=1 bridge: Multicast IPv6 to unknown group [XFAIL] reception succeeded, but should have failed TEST: vlan_filtering=1 bridge: Multicast IPv6 to unknown group, promisc [ OK ] TEST: vlan_filtering=1 bridge: Multicast IPv6 to unknown group, allmulti [ OK ] TEST: VLAN upper: Unicast IPv4 to primary MAC address [ OK ] TEST: VLAN upper: Unicast IPv4 to macvlan MAC address [ OK ] TEST: VLAN upper: Unicast IPv4 to unknown MAC address [ OK ] TEST: VLAN upper: Unicast IPv4 to unknown MAC address, promisc [ OK ] TEST: VLAN upper: Unicast IPv4 to unknown MAC address, allmulti [ OK ] TEST: VLAN upper: Multicast IPv4 to joined group [ OK ] TEST: VLAN upper: Multicast IPv4 to unknown group [XFAIL] reception succeeded, but should have failed TEST: VLAN upper: Multicast IPv4 to unknown group, promisc [ OK ] TEST: VLAN upper: Multicast IPv4 to unknown group, allmulti [ OK ] TEST: VLAN upper: Multicast IPv6 to joined group [ OK ] TEST: VLAN upper: Multicast IPv6 to unknown group [XFAIL] reception succeeded, but should have failed TEST: VLAN upper: Multicast IPv6 to unknown group, promisc [ OK ] TEST: VLAN upper: Multicast IPv6 to unknown group, allmulti [ OK ] TEST: VLAN upper: 1588v2 over L2 transport, Sync [ OK ] TEST: VLAN upper: 1588v2 over L2 transport, Follow-Up [FAIL] reception failed TEST: VLAN upper: 1588v2 over L2 transport, Peer Delay Request [ OK ] TEST: VLAN upper: 1588v2 over IPv4, Sync [FAIL] reception failed ;TEST: VLAN upper: 1588v2 over IPv4, Follow-Up [FAIL] reception failed TEST: VLAN upper: 1588v2 over IPv4, Peer Delay Request [FAIL] reception failed TEST: VLAN upper: 1588v2 over IPv6, Sync [FAIL] reception failed TEST: VLAN upper: 1588v2 over IPv6, Follow-Up [FAIL] reception failed TEST: VLAN upper: 1588v2 over IPv6, Peer Delay Request [FAIL] reception failed TEST: VLAN over vlan_filtering=0 bridged port: Unicast IPv4 to primary MAC address [ OK ] TEST: VLAN over vlan_filtering=0 bridged port: Unicast IPv4 to macvlan MAC address [ OK ] TEST: VLAN over vlan_filtering=0 bridged port: Unicast IPv4 to unknown MAC address [ OK ] TEST: VLAN over vlan_filtering=0 bridged port: Unicast IPv4 to unknown MAC address, promisc [ OK ] TEST: VLAN over vlan_filtering=0 bridged port: Unicast IPv4 to unknown MAC address, allmulti [ OK ] TEST: VLAN over vlan_filtering=0 bridged port: Multicast IPv4 to joined group [ OK ] TEST: VLAN over vlan_filtering=0 bridged port: Multicast IPv4 to unknown group [XFAIL] reception succeeded, but should have failed TEST: VLAN over vlan_filtering=0 bridged port: Multicast IPv4 to unknown group, promisc [ OK ] TEST: VLAN over vlan_filtering=0 bridged port: Multicast IPv4 to unknown group, allmulti [ OK ] TEST: VLAN over vlan_filtering=0 bridged port: Multicast IPv6 to joined group [ OK ] TEST: VLAN over vlan_filtering=0 bridged port: Multicast IPv6 to unknown group [XFAIL] reception succeeded, but should have failed TEST: VLAN over vlan_filtering=0 bridged port: Multicast IPv6 to unknown group, promisc [ OK ] TEST: VLAN over vlan_filtering=0 bridged port: Multicast IPv6 to unknown group, allmulti [ OK ] TEST: VLAN over vlan_filtering=0 bridged port: 1588v2 over L2 transport, Sync [ OK ] TEST: VLAN over vlan_filtering=0 bridged port: 1588v2 over L2 transport, Follow-Up [ OK ] TEST: VLAN over vlan_filtering=0 bridged port: 1588v2 over L2 transport, Peer Delay Request [ OK ] TEST: VLAN over vlan_filtering=0 bridged port: 1588v2 over IPv4, Sync [FAIL] reception failed TEST: VLAN over vlan_filtering=0 bridged port: 1588v2 over IPv4, Follow-Up [FAIL] reception failed TEST: VLAN over vlan_filtering=0 bridged port: 1588v2 over IPv4, Peer Delay Request [FAIL] reception failed TEST: VLAN over vlan_filtering=0 bridged port: 1588v2 over IPv6, Sync [FAIL] reception failed TEST: VLAN over vlan_filtering=0 bridged port: 1588v2 over IPv6, Follow-Up [FAIL] reception failed TEST: VLAN over vlan_filtering=0 bridged port: 1588v2 over IPv6, Peer Delay Request [FAIL] reception failed TEST: VLAN over vlan_filtering=1 bridged port: Unicast IPv4 to primary MAC address [ OK ] TEST: VLAN over vlan_filtering=1 bridged port: Unicast IPv4 to macvlan MAC address [ OK ] TEST: VLAN over vlan_filtering=1 bridged port: Unicast IPv4 to unknown MAC address [FAIL] reception succeeded, but should have failed TEST: VLAN over vlan_filtering=1 bridged port: Unicast IPv4 to unknown MAC address, promisc [ OK ] TEST: VLAN over vlan_filtering=1 bridged port: Unicast IPv4 to unknown MAC address, allmulti [FAIL] reception succeeded, but should have failed TEST: VLAN over vlan_filtering=1 bridged port: Multicast IPv4 to joined group [ OK ] TEST: VLAN over vlan_filtering=1 bridged port: Multicast IPv4 to unknown group [XFAIL] reception succeeded, but should have failed TEST: VLAN over vlan_filtering=1 bridged port: Multicast IPv4 to unknown group, promisc [ OK ] TEST: VLAN over vlan_filtering=1 bridged port: Multicast IPv4 to unknown group, allmulti [ OK ] TEST: VLAN over vlan_filtering=1 bridged port: Multicast IPv6 to joined group [ OK ] TEST: VLAN over vlan_filtering=1 bridged port: Multicast IPv6 to unknown group [XFAIL] reception succeeded, but should have failed TEST: VLAN over vlan_filtering=1 bridged port: Multicast IPv6 to unknown group, promisc [ OK ] TEST: VLAN over vlan_filtering=1 bridged port: Multicast IPv6 to unknown group, allmulti [ OK ] TEST: VLAN over vlan_filtering=1 bridged port: 1588v2 over L2 transport, Sync [ OK ] TEST: VLAN over vlan_filtering=1 bridged port: 1588v2 over L2 transport, Follow-Up [ OK ] TEST: VLAN over vlan_filtering=1 bridged port: 1588v2 over L2 transport, Peer Delay Request [ OK ] TEST: VLAN over vlan_filtering=1 bridged port: 1588v2 over IPv4, Sync [FAIL] reception failed TEST: VLAN over vlan_filtering=1 bridged port: 1588v2 over IPv4, Follow-Up [FAIL] reception failed TEST: VLAN over vlan_filtering=1 bridged port: 1588v2 over IPv4, Peer Delay Request [FAIL] reception failed TEST: VLAN over vlan_filtering=1 bridged port: 1588v2 over IPv6, Sync [FAIL] reception failed TEST: VLAN over vlan_filtering=1 bridged port: 1588v2 over IPv6, Follow-Up [FAIL] reception failed TEST: VLAN over vlan_filtering=1 bridged port: 1588v2 over IPv6, Peer Delay Request [FAIL] reception failed TEST: VLAN over vlan_filtering=0 bridge: Unicast IPv4 to primary MAC address [ OK ] TEST: VLAN over vlan_filtering=0 bridge: Unicast IPv4 to macvlan MAC address [ OK ] TEST: VLAN over vlan_filtering=0 bridge: Unicast IPv4 to unknown MAC address [ OK ] TEST: VLAN over vlan_filtering=0 bridge: Unicast IPv4 to unknown MAC address, promisc [ OK ] TEST: VLAN over vlan_filtering=0 bridge: Unicast IPv4 to unknown MAC address, allmulti [ OK ] TEST: VLAN over vlan_filtering=0 bridge: Multicast IPv4 to joined group [ OK ] TEST: VLAN over vlan_filtering=0 bridge: Multicast IPv4 to unknown group [XFAIL] reception succeeded, but should have failed TEST: VLAN over vlan_filtering=0 bridge: Multicast IPv4 to unknown group, promisc [ OK ] TEST: VLAN over vlan_filtering=0 bridge: Multicast IPv4 to unknown group, allmulti [ OK ] TEST: VLAN over vlan_filtering=0 bridge: Multicast IPv6 to joined group [ OK ] TEST: VLAN over vlan_filtering=0 bridge: Multicast IPv6 to unknown group [XFAIL] reception succeeded, but should have failed TEST: VLAN over vlan_filtering=0 bridge: Multicast IPv6 to unknown group, promisc [ OK ] TEST: VLAN over vlan_filtering=0 bridge: Multicast IPv6 to unknown group, allmulti [ OK ] TEST: VLAN over vlan_filtering=1 bridge: Unicast IPv4 to primary MAC address [ OK ] TEST: VLAN over vlan_filtering=1 bridge: Unicast IPv4 to macvlan MAC address [ OK ] TEST: VLAN over vlan_filtering=1 bridge: Unicast IPv4 to unknown MAC address [ OK ] TEST: VLAN over vlan_filtering=1 bridge: Unicast IPv4 to unknown MAC address, promisc [ OK ] TEST: VLAN over vlan_filtering=1 bridge: Unicast IPv4 to unknown MAC address, allmulti [ OK ] TEST: VLAN over vlan_filtering=1 bridge: Multicast IPv4 to joined group [ OK ] TEST: VLAN over vlan_filtering=1 bridge: Multicast IPv4 to unknown group [XFAIL] reception succeeded, but should have failed TEST: VLAN over vlan_filtering=1 bridge: Multicast IPv4 to unknown group, promisc [ OK ] TEST: VLAN over vlan_filtering=1 bridge: Multicast IPv4 to unknown group, allmulti [ OK ] TEST: VLAN over vlan_filtering=1 bridge: Multicast IPv6 to joined group [ OK ] TEST: VLAN over vlan_filtering=1 bridge: Multicast IPv6 to unknown group [XFAIL] reception succeeded, but should have failed TEST: VLAN over vlan_filtering=1 bridge: Multicast IPv6 to unknown group, promisc [ OK ] TEST: VLAN over vlan_filtering=1 bridge: Multicast IPv6 to unknown group, allmulti [ OK ] Output bridge_vlan_unaware.sh TEST: ping [ OK ] TEST: ping6 [ OK ] TEST: FDB learning [ OK ] TEST: Unknown unicast flood [ OK ] TEST: Unregistered multicast flood [ OK ] Output bridge_vlan_aware.sh TEST: ping [ OK ] TEST: ping6 [ OK ] TEST: FDB learning [ OK ] TEST: Unknown unicast flood [ OK ] TEST: Unregistered multicast flood [ OK ] INFO: Add and delete a VLAN on bridge port lan2 TEST: ping [ OK ] TEST: ping6 [ OK ] TEST: Externally learned FDB entry - ageing & roaming [ OK ] TEST: FDB entry in PVID for VLAN-tagged with other TPID [FAIL] FDB entry was not learned when it should TEST: Reception of VLAN with other TPID as untagged [FAIL] Packet was not forwarded when it should TEST: Reception of VLAN with other TPID as untagged (no PVID) [FAIL] Packet was forwarded when should not [ For Vladimir, I still have to implement fdb_isolation but posting to start the ball rolling for the multiple subsystem this patch affect and for the dubious DT schema ] Changes v13: - Reimplement tx_lpi OPs - Rework mdio-regmap to internally encode/decode address - Fix error in Documentation - Drop ext-surge property (assume calibration with declared nvmem cell) - Fix comments from Lee on MFD driver - Improve print error and drop extra space in DSA driver Changes v12: - Update on top of net-next - Add additional info on conver-letter about slefttests and HW limitation - Introduce mdio-regmap generalization for multiple address - Drop dev flags and define PHY calibration in PHY node directly Changes v11: - Address reviews from Christophe (spell mistake + dev_err_probe) - Fix kconfig dependency for MFD driver (depends on MDIO_DEVICE instead of MDIO) (indirectly fix link error for mdio APIs) - Fix copy-paste error for MFD driver of_table - Fix compilation error for PHY (move NVMEM to .config) - Drop unneeded NVMEM node from MDIO example schema (from Andrew) - Adapt MFD example schema to MDIO reg property restrictions Changes v10: - Entire rework to MFD + split to MDIO, EFUSE, SWITCH separate drivers - Drop EEE OPs (while Russell finish RFC for EEE changes) - Use new pcs_inpand OPs - Drop AN restart function and move to pcs_config - Enable assisted_learning and disable CPU learn (preparation for fdb_isolation) - Move EFUSE read in Internal PHY driver to .config to handle EPROBE_DEFER (needed now that NVMEM driver is register externally instead of internally to switch node) Changes v9: - Error out on using 5G speed as currently not supported - Add missing MAC_2500FD in phylink mac_capabilities - Add comment and improve if condition for an8855_phylink_mac_config Changes v8: - Add port Fast Age support - Add support for Port Isolation - Use correct register for Learning Disable - Add support for Ageing Time OP - Set default PVID to 0 by default - Add mdb OPs - Add port change MTU - Fix support for Upper VLAN Changes v7: - Fix devm_dsa_register_switch wrong export symbol Changes v6: - Drop standard MIB and handle with ethtool OPs (as requested by Jakub) - Cosmetic: use bool instead of 0 or 1 Changes v5: - Add devm_dsa_register_switch() patch - Add Reviewed-by tag for DT patch Changes v4: - Set regmap readable_table static (mute compilation warning) - Add support for port_bridge flags (LEARNING, FLOOD) - Reset fdb struct in fdb_dump - Drop support_asym_pause in port_enable - Add define for get_phy_flags - Fix bug for port not inititially part of a bridge (in an8855_setup the port matrix was always cleared but the CPU port was never initially added) - Disable learning and flood for user port by default - Set CPU port to flood and learning by default - Correctly AND force duplex and flow control in an8855_phylink_mac_link_up - Drop RGMII from pcs_config - Check ret in "Disable AN if not in autoneg" - Use devm_mutex_init - Fix typo for AN8855_PORT_CHECK_MODE - Better define AN8855_STP_LISTENING = AN8855_STP_BLOCKING - Fix typo in AN8855_PHY_EN_DOWN_SHIFT - Use paged helper for PHY - Skip calibration in config_init if priv not defined Changes v3: - Out of RFC - Switch PHY code to select_page API - Better describe masks and bits in PHY driver for ADC register - Drop raw values and use define for mii read/write - Switch to absolute PHY address - Replace raw values with mask and bits for pcs_config - Fix typo for ext-surge property name - Drop support for relocating Switch base PHY address on the bus Changes v2: - Drop mutex guard patch - Drop guard usage in DSA driver - Use __mdiobus_write/read - Check return condition and return errors for mii read/write - Fix wrong logic for EEE - Fix link_down (don't force link down with autoneg) - Fix forcing speed on sgmii autoneg - Better document link speed for sgmii reg - Use standard define for sgmii reg - Imlement nvmem support to expose switch EFUSE - Rework PHY calibration with the use of NVMEM producer/consumer - Update DT with new NVMEM property - Move aneg validation for 2500-basex in pcs_config - Move r50Ohm table and function to PHY driver Christian Marangi (14): dt-bindings: nvmem: Document support for Airoha AN8855 Switch EFUSE dt-bindings: net: Document support for Airoha AN8855 Switch Virtual MDIO dt-bindings: net: dsa: Document support for Airoha AN8855 DSA Switch dt-bindings: net: Document support for AN8855 Switch Internal PHY dt-bindings: mfd: Document support for Airoha AN8855 Switch SoC net: mdio: regmap: prepare support for multiple valid addr net: mdio: regmap: add support for C45 read/write net: mdio: regmap: add support for multiple valid addr net: mdio: regmap: add OF support mfd: an8855: Add support for Airoha AN8855 Switch MFD net: mdio: Add Airoha AN8855 Switch MDIO Passtrough nvmem: an8855: Add support for Airoha AN8855 Switch EFUSE net: dsa: Add Airoha AN8855 5-Port Gigabit DSA Switch driver net: phy: Add Airoha AN8855 Internal Switch Gigabit PHY .../bindings/mfd/airoha,an8855.yaml | 182 ++ .../bindings/net/airoha,an8855-mdio.yaml | 56 + .../bindings/net/airoha,an8855-phy.yaml | 83 + .../net/dsa/airoha,an8855-switch.yaml | 86 + .../bindings/nvmem/airoha,an8855-efuse.yaml | 123 + MAINTAINERS | 18 + drivers/mfd/Kconfig | 12 + drivers/mfd/Makefile | 1 + drivers/mfd/airoha-an8855.c | 429 +++ drivers/net/dsa/Kconfig | 9 + drivers/net/dsa/Makefile | 1 + drivers/net/dsa/an8855.c | 2395 +++++++++++++++++ drivers/net/dsa/an8855.h | 773 ++++++ drivers/net/mdio/Kconfig | 10 + drivers/net/mdio/Makefile | 1 + drivers/net/mdio/mdio-an8855.c | 49 + drivers/net/mdio/mdio-regmap.c | 188 +- drivers/net/phy/Kconfig | 5 + drivers/net/phy/Makefile | 1 + drivers/net/phy/air_an8855.c | 261 ++ drivers/nvmem/Kconfig | 11 + drivers/nvmem/Makefile | 2 + drivers/nvmem/an8855-efuse.c | 63 + include/linux/mdio/mdio-regmap.h | 16 + 24 files changed, 4761 insertions(+), 14 deletions(-) create mode 100644 Documentation/devicetree/bindings/mfd/airoha,an8855.yaml create mode 100644 Documentation/devicetree/bindings/net/airoha,an8855-mdio.yaml create mode 100644 Documentation/devicetree/bindings/net/airoha,an8855-phy.yaml create mode 100644 Documentation/devicetree/bindings/net/dsa/airoha,an8855-switch.yaml create mode 100644 Documentation/devicetree/bindings/nvmem/airoha,an8855-efuse.yaml create mode 100644 drivers/mfd/airoha-an8855.c create mode 100644 drivers/net/dsa/an8855.c create mode 100644 drivers/net/dsa/an8855.h create mode 100644 drivers/net/mdio/mdio-an8855.c create mode 100644 drivers/net/phy/air_an8855.c create mode 100644 drivers/nvmem/an8855-efuse.c