devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net-next 0/5] net: ipqess: introduce Qualcomm IPQESS driver
@ 2022-04-22 18:03 Maxime Chevallier
  2022-04-22 18:03 ` [PATCH net-next 1/5] net: ipqess: introduce the " Maxime Chevallier
                   ` (5 more replies)
  0 siblings, 6 replies; 17+ messages in thread
From: Maxime Chevallier @ 2022-04-22 18:03 UTC (permalink / raw)
  To: davem, Rob Herring
  Cc: Maxime Chevallier, netdev, linux-kernel, devicetree,
	thomas.petazzoni, Andrew Lunn, Florian Fainelli, Heiner Kallweit,
	Russell King, linux-arm-kernel, Vladimir Oltean, Luka Perkov,
	Robert Marko

Hello everyone,

This series introduces a new driver, for the Qualcomm IPQESS Ethernet
Controller, found on the IPQ4019.

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.

So, this series also includes a new DSA tagging protocol, that sets the
DSA port index into skb->shinfo, so that the MAC driver can use it to
build the descriptor. This is definitely unusual, so I'l very openned to
suggestions, comments and reviews on the tagging side of this series.

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  |   94 ++
 MAINTAINERS                                   |    6 +
 arch/arm/boot/dts/qcom-ipq4019.dtsi           |   42 +
 drivers/net/ethernet/qualcomm/Kconfig         |   11 +
 drivers/net/ethernet/qualcomm/Makefile        |    2 +
 drivers/net/ethernet/qualcomm/ipqess/Makefile |    8 +
 drivers/net/ethernet/qualcomm/ipqess/ipqess.c | 1258 +++++++++++++++++
 drivers/net/ethernet/qualcomm/ipqess/ipqess.h |  515 +++++++
 .../ethernet/qualcomm/ipqess/ipqess_ethtool.c |  168 +++
 include/linux/skbuff.h                        |    7 +
 include/net/dsa.h                             |    2 +
 net/dsa/Kconfig                               |    7 +
 net/dsa/Makefile                              |    1 +
 net/dsa/tag_oob.c                             |   45 +
 14 files changed, 2166 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 net/dsa/tag_oob.c

-- 
2.35.1


^ permalink raw reply	[flat|nested] 17+ messages in thread
* [PATCH net-next 0/5] net: ipqess: introduce Qualcomm IPQESS driver
@ 2023-10-23 15:50 Romain Gantois
  0 siblings, 0 replies; 17+ messages in thread
From: Romain Gantois @ 2023-10-23 15:50 UTC (permalink / raw)
  To: davem, Rob Herring, Krzysztof Kozlowski
  Cc: Romain Gantois, Jakub Kicinski, Eric Dumazet, Paolo Abeni, netdev,
	linux-kernel, devicetree, thomas.petazzoni, Andrew Lunn,
	Florian Fainelli, Heiner Kallweit, Russell King, linux-arm-kernel,
	Vladimir Oltean, Luka Perkov, Robert Marko, Andy Gross,
	Bjorn Andersson, Konrad Dybcio, Maxime Chevallier

Hello everyone,

This is a driver for the Qualcomm IPQ4019 Ethernet Switch Subsystem. The
IPQ4019 SoC integrates a modified version of the QCA8K Ethernet switch. One
major difference with the original switch IP is that port tags are passed
to the integrated Ethernet controller out-of-band.

My colleague Maxime Chevallier submitted several iterations of this driver
about a year ago, here is the latest one:
https://lore.kernel.org/netdev/20221104174151.439008-1-maxime.chevallier@bootlin.com/

These series were rejected because they required adding out-of-band tagging
support to the DSA subsystem. Therefore, we rewrote the driver as a pure
switchdev module, which shares a common backend library with the current
QCA8K driver.

The main driver components are:
 - ipqess_switch.c which registers and configures the integrated switch
 - ipqess_port.c which creates net devices for each one of the front-facing
   ports.
 - ipqess_edma.c which handles the integrated EDMA Ethernet controller
   linked to the CPU port.
 - drivers/net/dsa/qca/qca8k-common.c which defines low-level ESS access
   methods common to this driver and the original DSA QCA8K driver.

Thanks to the people from Sartura for providing us hardware and working on
the base QCA8K driver, and to Maxime for his work on the EDMA code.

Best regards,

Romain

Romain Gantois (5):
  net: dt-bindings: Introduce the Qualcomm IPQESS Ethernet switch
  net: dsa: qca: Make the QCA8K hardware library available globally
  net: ipqess: introduce the Qualcomm IPQESS driver
  net: ipqess: add a PSGMII calibration procedure to the IPQESS driver
  dts: qcom: ipq4019: Add description for the IPQ4019 ESS EDMA and
    switch

 .../bindings/net/qcom,ipq4019-ess.yaml        |  152 ++
 MAINTAINERS                                   |    7 +
 .../boot/dts/qcom/qcom-ipq4018-ap120c-ac.dtsi |   13 +
 arch/arm/boot/dts/qcom/qcom-ipq4019.dtsi      |   94 +
 drivers/net/dsa/qca/Kconfig                   |   10 +
 drivers/net/dsa/qca/Makefile                  |    5 +-
 drivers/net/dsa/qca/qca8k-8xxx.c              |    2 +-
 drivers/net/dsa/qca/qca8k-common.c            |   97 +-
 drivers/net/dsa/qca/qca8k-leds.c              |    2 +-
 drivers/net/ethernet/qualcomm/Kconfig         |   14 +
 drivers/net/ethernet/qualcomm/Makefile        |    2 +
 drivers/net/ethernet/qualcomm/ipqess/Makefile |    8 +
 .../ethernet/qualcomm/ipqess/ipqess_calib.c   |  495 ++++
 .../ethernet/qualcomm/ipqess/ipqess_edma.c    | 1162 ++++++++++
 .../ethernet/qualcomm/ipqess/ipqess_edma.h    |  484 ++++
 .../qualcomm/ipqess/ipqess_notifiers.c        |  306 +++
 .../qualcomm/ipqess/ipqess_notifiers.h        |   29 +
 .../ethernet/qualcomm/ipqess/ipqess_port.c    | 2017 +++++++++++++++++
 .../ethernet/qualcomm/ipqess/ipqess_port.h    |   99 +
 .../ethernet/qualcomm/ipqess/ipqess_switch.c  |  559 +++++
 .../ethernet/qualcomm/ipqess/ipqess_switch.h  |   40 +
 .../net/dsa/qca => include/linux/dsa}/qca8k.h |   74 +-
 22 files changed, 5648 insertions(+), 23 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/net/qcom,ipq4019-ess.yaml
 create mode 100644 drivers/net/ethernet/qualcomm/ipqess/Makefile
 create mode 100644 drivers/net/ethernet/qualcomm/ipqess/ipqess_calib.c
 create mode 100644 drivers/net/ethernet/qualcomm/ipqess/ipqess_edma.c
 create mode 100644 drivers/net/ethernet/qualcomm/ipqess/ipqess_edma.h
 create mode 100644 drivers/net/ethernet/qualcomm/ipqess/ipqess_notifiers.c
 create mode 100644 drivers/net/ethernet/qualcomm/ipqess/ipqess_notifiers.h
 create mode 100644 drivers/net/ethernet/qualcomm/ipqess/ipqess_port.c
 create mode 100644 drivers/net/ethernet/qualcomm/ipqess/ipqess_port.h
 create mode 100644 drivers/net/ethernet/qualcomm/ipqess/ipqess_switch.c
 create mode 100644 drivers/net/ethernet/qualcomm/ipqess/ipqess_switch.h
 rename {drivers/net/dsa/qca => include/linux/dsa}/qca8k.h (87%)

-- 
2.42.0


^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2023-10-23 15:50 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-04-22 18:03 [PATCH net-next 0/5] net: ipqess: introduce Qualcomm IPQESS driver Maxime Chevallier
2022-04-22 18:03 ` [PATCH net-next 1/5] net: ipqess: introduce the " Maxime Chevallier
2022-04-22 20:19   ` Andrew Lunn
2022-04-26 13:59     ` Maxime Chevallier
2022-04-22 18:03 ` [PATCH net-next 2/5] net: dsa: add out-of-band tagging protocol Maxime Chevallier
2022-04-22 18:28   ` Florian Fainelli
2022-04-26 13:57     ` Maxime Chevallier
2022-04-26 18:52       ` Vladimir Oltean
2022-04-22 18:03 ` [PATCH net-next 3/5] net: ipqess: Add out-of-band DSA tagging support Maxime Chevallier
2022-04-22 18:03 ` [PATCH net-next 4/5] net: dt-bindings: Introduce the Qualcomm IPQESS Ethernet controller Maxime Chevallier
2022-04-22 21:10   ` Rob Herring
2022-04-23 17:49   ` Krzysztof Kozlowski
2022-04-26 14:02     ` Maxime Chevallier
2022-04-22 18:03 ` [PATCH net-next 5/5] ARM: dts: qcom: ipq4019: Add description for the " Maxime Chevallier
2022-04-22 20:29 ` [PATCH net-next 0/5] net: ipqess: introduce Qualcomm IPQESS driver Andrew Lunn
2022-04-26 12:12   ` Robert Marko
  -- strict thread matches above, loose matches on Subject: below --
2023-10-23 15:50 Romain Gantois

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).