3.2.2.10.3.2.3.2. CPSWng Native Ethernet

3.2.2.10.3.2.3.2.1. Introduction

The CPSWng ethernet subsystem can be controlled by the am65-cpsw-nuss driver in Linux to provide standard ethernet features such as MAC mode, Switch mode, VLAN and TSN features.

Note

By default, the native ethernet is configured to start in MAC mode. Switch mode can be enabled on demand. Refer to the “Switch Mode” section of this page for further details on switch mode configuration.

3.2.2.10.3.2.3.2.2. Driver Configuration

Enable the following configs for Native Ethernet with CPSWng:

CONFIG_TI_K3_AM65_CPSW_NUSS
CONFIG_TI_K3_AM65_CPSW_SWITCHDEV
CONFIG_TI_K3_AM65_CPTS
CONFIG_TI_DAVINCI_MDIO
CONFIG_TI_AM65_CPSW_TAS
CONFIG_PHY_TI_GMII_SEL
CONFIG_PHY_J721E_WIZ
CONFIG_PHY_TI_GMII_SEL
CONFIG_PHY_CADENCE_TORRENT
CONFIG_PHY_CADENCE_SIERRA

3.2.2.10.3.2.3.2.3. Supported Modes

Currently, the following modes are supported in the SDK with the native ethernet driver:

SoC Supported Modes Overlay file to use
J7200 QSGMII k3-j7200-quad-port-eth-exp.dtbo
J7200 SGMII Overlay not part of SDK
J721e RGMII k3-j721e-gesi-exp-board.dtbo
J721e QSGMII k3-j721e-quad-port-eth-exp.dtbo
J721e SGMII Overlay not part of SDK
J721S2 RGMII k3-j721s2-gesi-exp-board.dtbo
J784S4 QSGMII k3-j784s4-quad-port-eth1-exp.dtbo

Note

For enabling native ethernet, the am65-cpsw-nuss driver has to be included in the kernel build. The native ethernet features are enabled by applying device-tree overlays at U-Boot.

For RGMII mode, the GESI expansion card’s overlay may be used. For QSGMII mode, the Quad Port Ethernet Expander daughter card’s overlay may be used. While SGMII mode has been verified in the SoC’s which mention SGMII mode, no overlay is provided with the SDK.

3.2.2.10.3.2.3.2.4. MAC Mode

All the features documented within the “MAC mode” section of CPSW2g Ethernet are applicable to CPSWng Native Ethernet as well. The steps documented in that section can be followed for utilizing the MAC mode features.

3.2.2.10.3.2.3.2.5. Switch Mode

All the SoCs listed above support Switch Mode when configured in QSGMII mode.

The Switch mode can be enabled by configuring devlink driver parameter “switch_mode” to 1/true:

devlink dev param set platform/c000000.ethernet \
name switch_mode value true cmode runtime

Above setting can be done regardless of the state of Port’s netdev devices - UP/DOWN, but Port’s netdev devices have to be in UP state before joining the bridge. This is to avoid overwriting of bridge configuration as CPSW switch driver completely reloads its configuration when first port changes its state to UP.

When all the interfaces have joined the bridge - CPSW switch driver will enable marking packets with offload_fwd_mark flag.

All configuration is implemented via switchdev API.

3.2.2.10.3.2.3.2.5.1. Bridge setup

devlink dev param set platform/c000000.ethernet \
name switch_mode value true cmode runtime

ip link add name br0 type bridge
ip link set dev br0 type bridge ageing_time 1000
ip link set dev eth1 up
ip link set dev eth2 up
ip link set dev eth3 up
ip link set dev eth4 up
ip link set dev eth1 master br0
ip link set dev eth2 master br0
ip link set dev eth3 master br0
ip link set dev eth4 master br0

[*] ip link set dev br0 type bridge vlan_filtering 1

[*] bridge vlan add dev br0 vid 1 pvid untagged self

Note: Steps [*] are mandatory.

Caution

Multicast flooding is on by default when Switch Mode is enabled.

3.2.2.10.3.2.3.2.5.2. Turn On/Off Spanning Tree Protocol (STP)

ip link set dev br0 type bridge stp_state 1/0

3.2.2.10.3.2.3.2.5.3. VLAN configuration

bridge vlan add dev br0 vid 1 pvid untagged self <---- add cpu port to VLAN 1

This step is mandatory for bridge/default_pvid.

3.2.2.10.3.2.3.2.5.4. Adding extra VLANs

  1. Untagged
bridge vlan add dev eth1 vid 100 pvid untagged master
bridge vlan add dev sw0p2 vid 100 pvid untagged master
bridge vlan add dev br0 vid 100 pvid untagged self <---- Add cpu port to VLAN100
  1. Tagged
bridge vlan add dev eth1 vid 100 master
bridge vlan add dev sw0p2 vid 100 master
bridge vlan add dev br0 vid 100 pvid tagged self <---- Add cpu port to VLAN100

3.2.2.10.3.2.3.2.5.5. Forwarding Data Bases (FDBs)

Forwarding entries for MAC addresses are automatically added on the appropriate switch port upon detection as default operation as an unmanaged bridge. For managed bridge operation manually add FDB entries as required.

Manually adding FDBs:

bridge fdb add aa:bb:cc:dd:ee:ff dev eth1 master vlan 100
bridge fdb add aa:bb:cc:dd:ee:fe dev sw0p2 master <---- Add on all VLANs

3.2.2.10.3.2.3.2.5.6. Multicast Data Bases (MDBs)

Multicast entries are automatically added on the appropriate switch port upon detection as default operation as an unmanaged bridge. For managed bridge operation manually add MDB entries as required.

Manually adding MDBs:

bridge mdb add dev br0 port eth1 grp 239.1.1.1 permanent vid 100
bridge mdb add dev br0 port eth1 grp 239.1.1.1 permanent <---- Add on all VLANs

3.2.2.10.3.2.3.2.5.7. Multicast flooding

CPU port mcast_flooding is always on

Turning flooding on/off on switch ports:

bridge link set dev eth1 mcast_flood on/off

3.2.2.10.3.2.3.2.6. TSN Features

The TSN features supported by CPSWng Native Ethernet along with the testing details are documented at TSN with CPSW. The steps documented in that page can be followed with appropriate modifications.