mbox series

[net-next,v2,0/7] Introduce HSR offload support for ICSSG

Message ID 20240813074233.2473876-1-danishanwar@ti.com (mailing list archive)
Headers show
Series Introduce HSR offload support for ICSSG | expand

Message

MD Danish Anwar Aug. 13, 2024, 7:42 a.m. UTC
Hi All,
This series introduces HSR offload support for ICSSG driver. To support HSR
offload to hardware, ICSSG HSR firmware is used.

This series introduces,
1. HSR frame offload support for ICSSG driver.
2. HSR Tx Packet duplication offload
3. HSR Tx Tag and Rx Tag offload
4. Multicast filtering support in HSR offload mode.
5. Dependencies related to IEP.

HSR Test Setup:
--------------

     ___________           ___________           ___________
    |           | Link AB |           | Link BC |           |
  __|   AM64*   |_________|   AM64    |_________|   AM64*   |___
 |  | Station A |         | Station B |         | Station C |   |
 |  |___________|         |___________|         |___________|   |
 |                                                              |
 |______________________________________________________________|
                            Link CA
 *Could be any device that supports two ethernet interfaces.

Steps to switch to HSR frame forward offload mode:
-------------------------------------------------
Example assuming eth1, eth2 ports of ICSSG1 on AM64-EVM

  1) Enable HSR offload for both interfaces
      ethtool -K eth1 hsr-fwd-offload on
      ethtool -K eth1 hsr-dup-offload on
      ethtool -K eth1 hsr-tag-ins-offload on
      ethtool -K eth1 hsr-tag-rm-offload on

      ethtool -K eth2 hsr-fwd-offload on
      ethtool -K eth2 hsr-dup-offload on
      ethtool -K eth2 hsr-tag-ins-offload on
      ethtool -K eth2 hsr-tag-rm-offload on

  2) Create HSR interface and add slave interfaces to it
      ip link add name hsr0 type hsr slave1 eth1 slave2 eth2 \
    supervision 45 version 1

  3) Add IP address to the HSR interface
      ip addr add <IP_ADDR>/24 dev hsr0

  4) Bring up the HSR interface
      ip link set hsr0 up

Switching back to Dual EMAC mode:
--------------------------------
  1) Delete HSR interface
      ip link delete hsr0

  2) Disable HSR port-to-port offloading mode, packet duplication
      ethtool -K eth1 hsr-fwd-offload off
      ethtool -K eth1 hsr-dup-offload off
      ethtool -K eth1 hsr-tag-ins-offload off
      ethtool -K eth1 hsr-tag-rm-offload off

      ethtool -K eth2 hsr-fwd-offload off
      ethtool -K eth2 hsr-dup-offload off
      ethtool -K eth2 hsr-tag-ins-offload off
      ethtool -K eth2 hsr-tag-rm-offload off

Testing the port-to-port frame forward offload feature:
-----------------------------------------------------
  1) Connect the LAN cables as shown in the test setup.
  2) Configure Station A and Station C in HSR non-offload mode.
  3) Configure Station B is HSR offload mode.
  4) Since HSR is a redundancy protocol, disconnect cable "Link CA",
     to ensure frames from Station A reach Station C only through
     Station B.
  5) Run iperf3 Server on Station C and client on station A.
  7) Check the CPU usage on Station B.

CPU usage report on Station B using mpstat when running UDP iperf3:
-------------------------------------------------------------------

  1) Non-Offload case
  -------------------
  CPU  %usr  %nice  %sys %iowait  %irq  %soft  %steal  %guest   %idle
  all  0.00   0.00  0.50    0.00  3.52  29.15    0.00    0.00   66.83
    0  0.00   0.00  0.00    0.00  7.00  58.00    0.00    0.00   35.00
    1  0.00   0.00  0.99    0.00  0.99   0.00    0.00    0.00   98.02

  2) Offload case
  ---------------
  CPU  %usr  %nice  %sys %iowait  %irq  %soft  %steal  %guest   %idle
  all  0.00   0.00  0.00    0.00  0.50   0.00    0.00    0.00   99.50
    0  0.00   0.00  0.99    0.00  0.00   0.00    0.00    0.00   99.01
    1  0.00   0.00  0.00    0.00  0.00   0.00    0.00    0.00  100.00

Note:
1) At the very least, hsr-fwd-offload must be enabled.
   Without offloading the port-to-port offload, other
   HSR offloads cannot be enabled.

2) Inorder to enable hsr-tag-ins-offload, hsr-dup-offload
   must also be enabled as these are tightly coupled in
   the firmware implementation.

Changes from v1 to v2:
*) Modified patch 2/7 to only contain code movement as suggested by
   Dan Carpenter <dan.carpenter@linaro.org>
*) Added patch 3/7 by splitting it from 2/6 as the patch is not part of
   code movement done in patch 2/7.
*) Rebased on latest net-next/main.

MD Danish Anwar (5):
  net: ti: icssg-prueth: Enable IEP1
  net: ti: icss-iep: Move icss_iep structure
  net: ti: icssg-prueth: Stop hardcoding def_inc
  net: ti: icssg-prueth: Add support for HSR frame forward offload
  net: ti: icssg-prueth: Add multicast filtering support in HSR mode

Ravi Gunasekaran (2):
  net: ti: icssg-prueth: Enable HSR Tx Packet duplication offload
  net: ti: icssg-prueth: Enable HSR Tx Tag and Rx Tag offload

 drivers/net/ethernet/ti/icssg/icss_iep.c      |  72 -------
 drivers/net/ethernet/ti/icssg/icss_iep.h      |  73 ++++++-
 .../net/ethernet/ti/icssg/icssg_classifier.c  |   1 +
 drivers/net/ethernet/ti/icssg/icssg_common.c  |  16 +-
 drivers/net/ethernet/ti/icssg/icssg_config.c  |  10 +-
 drivers/net/ethernet/ti/icssg/icssg_config.h  |   2 +
 drivers/net/ethernet/ti/icssg/icssg_prueth.c  | 187 ++++++++++++++++--
 drivers/net/ethernet/ti/icssg/icssg_prueth.h  |   7 +
 8 files changed, 273 insertions(+), 95 deletions(-)


base-commit: 0a3e6939d4b33d68bce89477b9db01d68b744749

Comments

Andrew Lunn Aug. 13, 2024, 2:49 p.m. UTC | #1
On Tue, Aug 13, 2024 at 01:12:26PM +0530, MD Danish Anwar wrote:
> Hi All,
> This series introduces HSR offload support for ICSSG driver. To support HSR
> offload to hardware, ICSSG HSR firmware is used.

Oh, no, not another firmware. How does this interact with using the
switch firmware and switchdev? I see in your examples you talk about
HSR to Dual EMAC, but what about HSR and Switchdev?

How many more different firmwares do you have?

	Andrew
MD Danish Anwar Aug. 14, 2024, 6:25 a.m. UTC | #2
Hi Andrew,

On 13/08/24 8:19 pm, Andrew Lunn wrote:
> On Tue, Aug 13, 2024 at 01:12:26PM +0530, MD Danish Anwar wrote:
>> Hi All,
>> This series introduces HSR offload support for ICSSG driver. To support HSR
>> offload to hardware, ICSSG HSR firmware is used.
> 
> Oh, no, not another firmware. How does this interact with using the
> switch firmware and switchdev? I see in your examples you talk about
> HSR to Dual EMAC, but what about HSR and Switchdev?
> 

HSR to Switch mode or switch mode to HSR is not supported by the firmware.

Only dual EMAC to Switch , dual EMAC to HSR, switch to dual EMAC and HSR
to dual EMAC is supported.

Software HSR, software Switch / bridging can be done only with dual EMAC
firmware.

To summarize,
Dual EMAC firmware - Supports normal Ethernet operations, Can do
software bridging, software HSR
Switch Firmware - Can do bridging in hardware. For software bridging
this firmware is not needed, DUAL EMAC firmware will be used.
HSR firmware - Can do HSR offloading in hardware. For software offload
this firmware is not needed, dual EMAC firmware will be used for that.

By default the firmware is Dual EMAC firmware. Firmware will only be
changed when offloading in hardware is needed.

> How many more different firmwares do you have?
> 

We have these 3 firmwares only for ICSSG.

> 	Andrew
Andrew Lunn Aug. 14, 2024, 2:04 p.m. UTC | #3
> We have these 3 firmwares only for ICSSG.

O.K. But i also hope you have learned from this and the next
generation of the hardware with have more RAM for firmware, so you
only need one firmware image for everything.

     Andrew
Anwar, Md Danish Aug. 14, 2024, 2:56 p.m. UTC | #4
On 8/14/2024 7:34 PM, Andrew Lunn wrote:
>> We have these 3 firmwares only for ICSSG.
> 
> O.K. But i also hope you have learned from this and the next
> generation of the hardware with have more RAM for firmware, so you
> only need one firmware image for everything.
> 

Yes Andrew, The goal will always be to have a firmware which can do all
these instead of multiple firmwares in future. Thanks for all the
reviews and sugestions.

>      Andrew