Thread (16 messages) flat view 16 messages, 3 authors, 2020-03-19

Re: [PATCH net-next v4 06/11] net: ethernet: ti: introduce am65x/j721e gigabit eth subsystem driver

From: Peter Ujfalusi <hidden>
Date: 2020-03-19 13:12:08
Also in: linux-devicetree, lkml, netdev

Hi Grygorii,

On 19/03/2020 15.09, Grygorii Strashko wrote:

On 19/03/2020 13:46, Peter Ujfalusi wrote:
quoted
Hi Grygorii,

On 17/03/2020 9.27, Grygorii Strashko wrote:
quoted
The TI AM65x/J721E SoCs Gigabit Ethernet Switch subsystem (CPSW2G
NUSS) has
two ports - One Ethernet port (port 1) with selectable RGMII and RMII
interfaces and an internal Communications Port Programming Interface
(CPPI)
port (Host port 0) and with ALE in between. It also contains
  - Management Data Input/Output (MDIO) interface for physical layer
device
(PHY) management;
  - Updated Address Lookup Engine (ALE) module;
  - (TBD) New version of Common platform time sync (CPTS) module.

On the TI am65x/J721E SoCs CPSW NUSS Ethernet subsystem into device MCU
domain named MCU_CPSW0.

Host Port 0 CPPI Packet Streaming Interface interface supports 8 TX
channels and one RX channels operating by TI am654 NAVSS Unified DMA
Peripheral Root Complex (UDMA-P) controller.

Introduced driver provides standard Linux net_device to user space
and supports:
  - ifconfig up/down
  - MAC address configuration
  - ethtool operation:
    --driver
    --change
    --register-dump
    --negotiate phy
    --statistics
    --set-eee phy
    --show-ring
    --show-channels
    --set-channels
  - net_device ioctl mii-control
  - promisc mode

  - rx checksum offload for non-fragmented IPv4/IPv6 TCP/UDP packets.
    The CPSW NUSS can verify IPv4/IPv6 TCP/UDP packets checksum and
fills
    csum information for each packet in psdata[2] word:
    - BIT(16) CHECKSUM_ERROR - indicates csum error
    - BIT(17) FRAGMENT -  indicates fragmented packet
    - BIT(18) TCP_UDP_N -  Indicates TCP packet was detected
    - BIT(19) IPV6_VALID,  BIT(20) IPV4_VALID - indicates IPv6/IPv4
packet
    - BIT(15, 0) CHECKSUM_ADD - This is the value that was summed
    during the checksum computation. This value is FFFFh for non
fragmented
    IPV4/6 UDP/TCP packets with no checksum error.

    RX csum offload can be disabled:
     ethtool -K <dev> rx-checksum on|off

  - tx checksum offload support for IPv4/IPv6 TCP/UDP packets (J721E
only).
    TX csum HW offload  can be enabled/disabled:
     ethtool -K <dev> tx-checksum-ip-generic on|off

  - multiq and switch between round robin/prio modes for cppi tx
queues by
    using Netdev private flag "p0-rx-ptype-rrobin" to switch between
    Round Robin and Fixed priority modes:
     # ethtool --show-priv-flags eth0
     Private flags for eth0:
     p0-rx-ptype-rrobin: on
     # ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off

    Number of TX DMA channels can be changed using "ethtool -L eth0
tx <N>".

  - GRO support: the napi_gro_receive() and napi_complete_done() are
used.

Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
---
  drivers/net/ethernet/ti/Kconfig             |   19 +-
  drivers/net/ethernet/ti/Makefile            |    3 +
  drivers/net/ethernet/ti/am65-cpsw-ethtool.c |  747 +++++++
  drivers/net/ethernet/ti/am65-cpsw-nuss.c    | 1965 +++++++++++++++++++
  drivers/net/ethernet/ti/am65-cpsw-nuss.h    |  143 ++
  drivers/net/ethernet/ti/k3-udma-desc-pool.c |  126 ++
  drivers/net/ethernet/ti/k3-udma-desc-pool.h |   30 +
I would rather loose the 'udma' from the name and API. It is more like
CPPI5 descriptor pool than UDMA. UDMA is just happen to use CPPI5.
Probably ti-cppi5-desc-pool?
ok. I'll update and re-send
Thank you!
Probably drop the ti- prefix as well from the filename as it is under a
ti directory?
quoted
quoted
  7 files changed, 3031 insertions(+), 2 deletions(-)
  create mode 100644 drivers/net/ethernet/ti/am65-cpsw-ethtool.c
  create mode 100644 drivers/net/ethernet/ti/am65-cpsw-nuss.c
  create mode 100644 drivers/net/ethernet/ti/am65-cpsw-nuss.h
  create mode 100644 drivers/net/ethernet/ti/k3-udma-desc-pool.c
  create mode 100644 drivers/net/ethernet/ti/k3-udma-desc-pool.h
quoted
diff --git a/drivers/net/ethernet/ti/Kconfig
b/drivers/net/ethernet/ti/Kconfig
index 8a6ca16eee3b..89cec778cf2d 100644
--- a/drivers/net/ethernet/ti/Kconfig
+++ b/drivers/net/ethernet/ti/Kconfig
@@ -6,7 +6,7 @@
  config NET_VENDOR_TI
      bool "Texas Instruments (TI) devices"
      default y
-    depends on PCI || EISA || AR7 || ARCH_DAVINCI || ARCH_OMAP2PLUS
|| ARCH_KEYSTONE
+    depends on PCI || EISA || AR7 || ARCH_DAVINCI || ARCH_OMAP2PLUS
|| ARCH_KEYSTONE || ARCH_K3
      ---help---
        If you have a network (Ethernet) card belonging to this
class, say Y.
  @@ -31,7 +31,7 @@ config TI_DAVINCI_EMAC
    config TI_DAVINCI_MDIO
      tristate "TI DaVinci MDIO Support"
-    depends on ARCH_DAVINCI || ARCH_OMAP2PLUS || ARCH_KEYSTONE ||
COMPILE_TEST
+    depends on ARCH_DAVINCI || ARCH_OMAP2PLUS || ARCH_KEYSTONE ||
ARCH_K3 || COMPILE_TEST
      select PHYLIB
      ---help---
        This driver supports TI's DaVinci MDIO module.
@@ -95,6 +95,21 @@ config TI_CPTS_MOD
      imply PTP_1588_CLOCK
      default m
  +config TI_K3_AM65_CPSW_NUSS
+    tristate "TI K3 AM654x/J721E CPSW Ethernet driver"
+    depends on ARCH_K3 && OF && TI_K3_UDMA_GLUE_LAYER
+    select TI_DAVINCI_MDIO
+    imply PHY_TI_GMII_SEL
+    help
+      This driver supports TI K3 AM654/J721E CPSW2G Ethernet SubSystem.
+      The two-port Gigabit Ethernet MAC (MCU_CPSW0) subsystem provides
+      Ethernet packet communication for the device: One Ethernet port
+      (port 1) with selectable RGMII and RMII interfaces and an
internal
+      Communications Port Programming Interface (CPPI) port (port 0).
+
+      To compile this driver as a module, choose M here: the module
+      will be called ti-am65-cpsw-nuss.
+
  config TI_KEYSTONE_NETCP
      tristate "TI Keystone NETCP Core Support"
      select TI_DAVINCI_MDIO
diff --git a/drivers/net/ethernet/ti/Makefile
b/drivers/net/ethernet/ti/Makefile
index ecf776ad8689..6362a9b0bb8a 100644
--- a/drivers/net/ethernet/ti/Makefile
+++ b/drivers/net/ethernet/ti/Makefile
@@ -23,3 +23,6 @@ obj-$(CONFIG_TI_KEYSTONE_NETCP) += keystone_netcp.o
  keystone_netcp-y := netcp_core.o cpsw_ale.o
  obj-$(CONFIG_TI_KEYSTONE_NETCP_ETHSS) += keystone_netcp_ethss.o
  keystone_netcp_ethss-y := netcp_ethss.o netcp_sgmii.o
netcp_xgbepcsr.o cpsw_ale.o
+
+obj-$(CONFIG_TI_K3_AM65_CPSW_NUSS) += ti-am65-cpsw-nuss.o
+ti-am65-cpsw-nuss-y := am65-cpsw-nuss.o cpsw_sl.o
am65-cpsw-ethtool.o cpsw_ale.o k3-udma-desc-pool.o
Would not be better to have the desc-pool (silent) Kconfig selectable?
The not yet upstream icssg-prueth also needs the same desc-pool library
as cpsw.
I'd prefer not to add new Kconfig options unless required.
This driver simply not work without it, so no Kconfig option for now.
OK, fair enough.

- Péter

Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.
Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help