From patchwork Fri Aug 26 15:46:45 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxime Chevallier X-Patchwork-Id: 12956237 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 1DB4BECAAA3 for ; Fri, 26 Aug 2022 15:48:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:Cc :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=bLG5yoKbViXx7gF7OUuY0hXL1Kkqmw0pBK4fZ7MVQ+U=; b=3loAO2l5S4vwlx UcQhuAuTWQe6sLTQVaCJ/2lDZd5vXwYdtaLQZGNHMKzhU4Fs3WcLsp/RiKMQtKzWGpKr1JKiOz2W7 AEFnLTCA32SQHuJ0inIYCtKHW3o8dYxmHK2I9Wwi7Dze4sNmJKOyEH9nRVuhaWikHsSvsC28yT+ut MDLPYF1gNU+SkpUCH++voMSu5xc8R7ltpGM72UJWOcdQeVWXZStcSX7FnU3nLhqiHI4XQWP/oys9W 53hnM/RvDGb7CjgKajbKDFns/Q990XGtHtNtQG3VLxxYXS28nu6fCUSD2Bd8yjK7YCxDSE37j/tUH qy8Rk5db3068c/g7splQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oRbY0-007CEH-ON; Fri, 26 Aug 2022 15:47:04 +0000 Received: from relay8-d.mail.gandi.net ([217.70.183.201]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1oRbXw-007C6W-RO for linux-arm-kernel@lists.infradead.org; Fri, 26 Aug 2022 15:47:02 +0000 Received: (Authenticated sender: maxime.chevallier@bootlin.com) by mail.gandi.net (Postfix) with ESMTPSA id 186341BF204; Fri, 26 Aug 2022 15:46:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1661528815; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=bJS3wVqhI7PyKA6CizQMt74/WL+BYCPbB8yEif7UhJk=; b=SLzdnTZe9u11oxbDRcDChoO5aLgsC36Ax0vBr4+qn1jBw7kN7hZvgct1mox3STH9T4+KAW ndsvB+TKQvrgzBUzNw0uWtKCsdWJKQ4k8fz33ZWoFxNTC74zbBVyiXpX87l/IBFLZGjNxV mIQCXt4eANG3PpMV2sOGUtkcg8IJ9kRSlNpbLsT07PjV1UNQvf9a5NRkh+df5rFojdrE58 kBGkr6IrjunpP8aq+xj4WWyl0W512M1Hb3/VIyR+kHz6n7U5TLGZetztzQtXGR7i2mSzUg 6w1VRB3eN4QOvckAKctW3sHAqLprrZyF77/jAtJoNd76I3uQVRsp/PWdkqwTxw== From: Maxime Chevallier To: davem@davemloft.net, Rob Herring Cc: Maxime Chevallier , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, thomas.petazzoni@bootlin.com, Andrew Lunn , Florian Fainelli , Heiner Kallweit , Russell King , linux-arm-kernel@lists.infradead.org, Vladimir Oltean , Luka Perkov , Robert Marko Subject: [PATCH net-next v3 0/5] net: ipqess: introduce Qualcomm IPQESS driver Date: Fri, 26 Aug 2022 17:46:45 +0200 Message-Id: <20220826154650.615582-1-maxime.chevallier@bootlin.com> X-Mailer: git-send-email 2.37.2 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220826_084701_256254_28629125 X-CRM114-Status: GOOD ( 17.66 ) 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 Hello everyone, This is the 3rd iteration of a series that introduces a new driver, for the Qualcomm IPQESS Ethernet Controller, found on the IPQ4019. Notables changes on V3 : - Took into account Russell's review on the ioctl handler and the mac capabilities that were missing - Took Andrew's reviews into account by reworking the napi rx loop, some stray "inline" keywords, and useless warnings - Took Vlad's reviews into account by reworking a few macros - Took Christophe's review into account by removing extra GFP_ZERO - Took Rob's review into account by simplifying the binding Note that this V3 didn't focus on the tagging protocol, as I understand the issue is still open. I'm willing to keep on testing some ideas, and continue Florian's discussion. Notables changes on V2 : - Put the DSA tag in the skb itself instead of using skb->shinfo - Fixed the initialisation sequence based on Andrew's comments - Reworked the error paths in the init sequence - Add support for the clock and reset lines on that controller - Fixed and updated the binding The driver itself is pretty straightforward, but has lived out-of-tree for a while. I've done my best to clean-up some outdated API calls, but some might remain. This controller is somewhat special, since it's part of the IPQ4019 SoC which also includes an QCA8K switch, and uses the IPQESS controller for the CPU port. The switch is so tightly intergrated with the MAC that it is connected to the MAC using an internal link (hence the fact that we only support PHY_INTERFACE_MODE_INTERNAL), and this has some consequences on the DSA side. The tagging for the switch isn't done inband as most switch do, but out-of-band, the DSA tag being included in the DMA descriptor. This series includes a new out-of-band tagger that uses the skb headroom to convey the tag between the tagger and the MAC driver. Thanks to the Sartura folks who worked on a base version of this driver, and provided test hardware. Best regards, Maxime Chevallier Maxime Chevallier (5): net: ipqess: introduce the Qualcomm IPQESS driver net: dsa: add out-of-band tagging protocol net: ipqess: Add out-of-band DSA tagging support net: dt-bindings: Introduce the Qualcomm IPQESS Ethernet controller ARM: dts: qcom: ipq4019: Add description for the IPQESS Ethernet controller .../devicetree/bindings/net/qcom,ipqess.yaml | 95 ++ MAINTAINERS | 6 + arch/arm/boot/dts/qcom-ipq4019.dtsi | 46 + drivers/net/ethernet/qualcomm/Kconfig | 12 + drivers/net/ethernet/qualcomm/Makefile | 2 + drivers/net/ethernet/qualcomm/ipqess/Makefile | 8 + drivers/net/ethernet/qualcomm/ipqess/ipqess.c | 1284 +++++++++++++++++ drivers/net/ethernet/qualcomm/ipqess/ipqess.h | 518 +++++++ .../ethernet/qualcomm/ipqess/ipqess_ethtool.c | 168 +++ include/linux/dsa/oob.h | 17 + include/net/dsa.h | 2 + net/dsa/Kconfig | 7 + net/dsa/Makefile | 1 + net/dsa/tag_oob.c | 84 ++ 14 files changed, 2250 insertions(+) create mode 100644 Documentation/devicetree/bindings/net/qcom,ipqess.yaml create mode 100644 drivers/net/ethernet/qualcomm/ipqess/Makefile create mode 100644 drivers/net/ethernet/qualcomm/ipqess/ipqess.c create mode 100644 drivers/net/ethernet/qualcomm/ipqess/ipqess.h create mode 100644 drivers/net/ethernet/qualcomm/ipqess/ipqess_ethtool.c create mode 100644 include/linux/dsa/oob.h create mode 100644 net/dsa/tag_oob.c