| From: |
| Lorenzo Bianconi <lorenzo-AT-kernel.org> |
| To: |
| Andrew Lunn <andrew+netdev-AT-lunn.ch>, "David S. Miller" <davem-AT-davemloft.net>, Eric Dumazet <edumazet-AT-google.com>, Jakub Kicinski <kuba-AT-kernel.org>, Paolo Abeni <pabeni-AT-redhat.com>, Felix Fietkau <nbd-AT-nbd.name>, Sean Wang <sean.wang-AT-mediatek.com>, Matthias Brugger <matthias.bgg-AT-gmail.com>, AngeloGioacchino Del Regno <angelogioacchino.delregno-AT-collabora.com>, Philipp Zabel <p.zabel-AT-pengutronix.de>, Rob Herring <robh-AT-kernel.org>, Krzysztof Kozlowski <krzk+dt-AT-kernel.org>, Conor Dooley <conor+dt-AT-kernel.org>, Lorenzo Bianconi <lorenzo-AT-kernel.org>, "Chester A. Unal" <chester.a.unal-AT-arinc9.com>, Daniel Golle <daniel-AT-makrotopia.org>, DENG Qingfang <dqfext-AT-gmail.com>, Andrew Lunn <andrew-AT-lunn.ch>, Vladimir Oltean <olteanv-AT-gmail.com> |
| Subject: |
| [PATCH net-next v8 00/15] Introduce flowtable hw offloading in airoha_eth driver |
| Date: |
| Fri, 28 Feb 2025 11:54:08 +0100 |
| Message-ID: |
| <20250228-airoha-en7581-flowtable-offload-v8-0-01dc1653f46e@kernel.org> |
| Cc: |
| netdev-AT-vger.kernel.org, linux-arm-kernel-AT-lists.infradead.org, linux-mediatek-AT-lists.infradead.org, devicetree-AT-vger.kernel.org, upstream-AT-airoha.com, Sayantan Nandy <sayantan.nandy-AT-airoha.com>, Christian Marangi <ansuelsmth-AT-gmail.com>, Krzysztof Kozlowski <krzysztof.kozlowski-AT-linaro.org> |
| Archive-link: |
| Article |
Introduce netfilter flowtable integration in airoha_eth driver to
offload 5-tuple flower rules learned by the PPE module if the user
accelerates them using a nft configuration similar to the one reported
below:
table inet filter {
flowtable ft {
hook ingress priority filter
devices = { lan1, lan2, lan3, lan4, eth1 }
flags offload;
}
chain forward {
type filter hook forward priority filter; policy accept;
meta l4proto { tcp, udp } flow add @ft
}
}
Packet Processor Engine (PPE) module available on EN7581 SoC populates
the PPE table with 5-tuples flower rules learned from traffic forwarded
between the GDM ports connected to the Packet Switch Engine (PSE) module.
airoha_eth driver configures and collects data from the PPE module via a
Network Processor Unit (NPU) RISC-V module available on the EN7581 SoC.
Move airoha_eth driver in a dedicated folder
(drivers/net/ethernet/airoha).
---
Changes in v8:
- Remove unnecessary GFP_ZERO flag in dmam_alloc_coherent()
- Fix 802.1q offloading support
- Link to v7: https://lore.kernel.org/r/20250224-airoha-en7581-flowtabl...
Changes in v7:
- Fix Coccicheck warnings
- Add missing request_module
- Introduce ops in airoha_npu struct
- Add missing wlan interrupt to airoha_npu binding
- Link to v6: https://lore.kernel.org/r/20250221-airoha-en7581-flowtabl...
Changes in v6:
- Fix Smatch errors.
- Remove unnecessary GFP_DMA allocating NPU buffers
- Remove wrong dma coherent mask
- Rely on skb_cow_head() instead of skb_ensure_writable() in
airoha_get_dsa_tag()
- Unregister net_device before deallocating metadata_dst
- Link to v5: https://lore.kernel.org/r/20250217-airoha-en7581-flowtabl...
Changes in v5:
- Fix uninitialized variable in airoha_ppe_setup_tc_block_cb()
- Rebase on top of net-next
- Link to v4: https://lore.kernel.org/r/20250213-airoha-en7581-flowtabl...
Changes in v4:
- Add dedicated driver for the Airoha NPU module
- Move airoha npu binding in net
- Link to v3: https://lore.kernel.org/r/20250209-airoha-en7581-flowtabl...
Changes in v3:
- Fix TSO support for header cloned skbs
- Do not use skb_pull_rcsum() in airoha_get_dsa_tag()
- Fix head lean computation after running airoha_get_dsa_tag() in
airoha_dev_xmit()
- Link to v2: https://lore.kernel.org/r/20250207-airoha-en7581-flowtabl...
Changes in v2:
- Add airoha-npu document binding
- Enable Rx SPTAG on MT7530 dsa switch for EN7581 SoC.
- Fix warnings in airoha_npu_run_firmware()
- Fix sparse warnings
- Link to v1: https://lore.kernel.org/r/20250205-airoha-en7581-flowtabl...
---
Lorenzo Bianconi (15):
net: airoha: Move airoha_eth driver in a dedicated folder
net: airoha: Move definitions in airoha_eth.h
net: airoha: Move reg/write utility routines in airoha_eth.h
net: airoha: Move register definitions in airoha_regs.h
net: airoha: Move DSA tag in DMA descriptor
net: dsa: mt7530: Enable Rx sptag for EN7581 SoC
net: airoha: Enable support for multiple net_devices
net: airoha: Move REG_GDM_FWD_CFG() initialization in airoha_dev_init()
net: airoha: Rename airoha_set_gdm_port_fwd_cfg() in airoha_set_vip_for_gdm_port()
dt-bindings: net: airoha: Add the NPU node for EN7581 SoC
dt-bindings: net: airoha: Add airoha,npu phandle property
net: airoha: Introduce Airoha NPU support
net: airoha: Introduce flowtable offload support
net: airoha: Add loopback support for GDM2
net: airoha: Introduce PPE debugfs support
.../devicetree/bindings/net/airoha,en7581-eth.yaml | 10 +
.../devicetree/bindings/net/airoha,en7581-npu.yaml | 84 ++
drivers/net/dsa/mt7530.c | 5 +
drivers/net/dsa/mt7530.h | 4 +
drivers/net/ethernet/Kconfig | 2 +
drivers/net/ethernet/Makefile | 1 +
drivers/net/ethernet/airoha/Kconfig | 27 +
drivers/net/ethernet/airoha/Makefile | 9 +
.../net/ethernet/{mediatek => airoha}/airoha_eth.c | 1277 +++++---------------
drivers/net/ethernet/airoha/airoha_eth.h | 551 +++++++++
drivers/net/ethernet/airoha/airoha_npu.c | 520 ++++++++
drivers/net/ethernet/airoha/airoha_npu.h | 34 +
drivers/net/ethernet/airoha/airoha_ppe.c | 910 ++++++++++++++
drivers/net/ethernet/airoha/airoha_ppe_debugfs.c | 181 +++
drivers/net/ethernet/airoha/airoha_regs.h | 798 ++++++++++++
drivers/net/ethernet/mediatek/Kconfig | 8 -
drivers/net/ethernet/mediatek/Makefile | 1 -
17 files changed, 3422 insertions(+), 1000 deletions(-)
---
base-commit: 56794b5862c5a9aefcf2b703257c6fb93f76573e
change-id: 20250205-airoha-en7581-flowtable-offload-e3a11b3b34ad
Best regards,
--
Lorenzo Bianconi <lorenzo@kernel.org>