[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20240813074233.2473876-1-danishanwar@ti.com>
Date: Tue, 13 Aug 2024 13:12:26 +0530
From: MD Danish Anwar <danishanwar@...com>
To: Dan Carpenter <dan.carpenter@...aro.org>, Andrew Lunn <andrew@...n.ch>,
Jan Kiszka <jan.kiszka@...mens.com>,
Vignesh Raghavendra <vigneshr@...com>,
Javier Carrasco <javier.carrasco.cruz@...il.com>,
Jacob Keller
<jacob.e.keller@...el.com>,
Diogo Ivo <diogo.ivo@...mens.com>, Simon Horman
<horms@...nel.org>,
Richard Cochran <richardcochran@...il.com>,
Paolo Abeni
<pabeni@...hat.com>, Jakub Kicinski <kuba@...nel.org>,
Eric Dumazet
<edumazet@...gle.com>,
"David S. Miller" <davem@...emloft.net>
CC: <linux-kernel@...r.kernel.org>, <netdev@...r.kernel.org>,
<linux-arm-kernel@...ts.infradead.org>, <srk@...com>,
Roger Quadros
<rogerq@...nel.org>, <danishanwar@...com>
Subject: [PATCH net-next v2 0/7] Introduce HSR offload support for ICSSG
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@...aro.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
--
2.34.1
Powered by blists - more mailing lists