[PATCH net-next v12 0/3] airoha: add the capability to configure GDM3/GDM4 as WAN/LAN on demand
Lorenzo Bianconi <[email protected]>
| Newsgroups | org.infradead.lists.linux-mediatek,org.infradead.lists.linux-arm-kernel,org.kernel.vger.netdev |
|---|---|
| Message-ID | <[email protected]> |
Add the capability to configure GDM3/GDM4 as WAN/LAN on demand when QoS offload is created or destroyed. Make dev->qdma an RCU pointer so the TX path can safely dereference it without holding RTNL. Introduce airoha_qdma_start() and airoha_qdma_stop() helpers. --- Changes in v12: - Introduce txq_lock array in order to serialize the access to netdev_tx_completed_queue() in airoha_qdma_tx_napi_poll(). - Set AIROHA_DEV_F_TX_QOS flags in airoha_tc_setup_qdisc_htb() and not in airoha_enable_qos_for_gdm34(). - Link to v11: https://lore.kernel.org/r/[email protected] Changes in v11: - Fix possible bql races moving the net_device between different QDMA. - Use atomic APIs for airoha_gdm_flags. - Link to v10: https://lore.kernel.org/r/[email protected] Changes in v10: - Fix a theoretical race condition between tx completion NAPIs moving the net_device between different QDMA. - Rebase on top of next-next main branch - Link to v9: https://lore.kernel.org/r/[email protected] Changes in v9: - Rebase on top of next-next main branch - Link to v8: https://lore.kernel.org/r/[email protected] Changes in v8: - Rebase on top of next-next to fix conflicts. - Link to v7: https://lore.kernel.org/r/[email protected] Changes in v7: - Fix ETS stats accounting in patch 2/3 - Reset ETS stats accounting in airoha_dev_set_qdma(). - Link to v6: https://lore.kernel.org/r/[email protected] Changes in v6: - Rebase on top of next-next - Add patch 1/3: "rename airoha_priv_flags to airoha_dev_flags" - Drop patch 2/3: "refactor QDMA start/stop into reusable helpers" - Link to v5: https://lore.kernel.org/r/[email protected] Changes in v5: - Add patch 1/3: use int instead of atomic_t for qdma users counter - Protect dev->flags with flow_offload_mutex mutex. - Introduce AIROHA_PRIV_F_QOS in order to handle better WAN/LAN switching. - Link to v4: https://lore.kernel.org/r/[email protected] Changes in v4: - Move back QDMA TX/RX DMA enable to airoha_dev_open()/airoha_dev_stop(). - Configure GDM3/4 as WAN if GDM2 is not available in ndo_init() callback. - Protect qdma pointer in airoha_gdm_dev struct using RCU. - Rely on rtnl_dereference() to access qdma pointer in the control path. - Add airoha_qdma_start() and airoha_qdma_stop() utility routines in patch 1/2 - Link to v3: https://lore.kernel.org/r/[email protected] Changes in v3: - Do not introduce ethtool private flags support to configure LAN/WAN for GDM3/4 and rely on tc qdisc offload for it instead. - Set GDM3/4 ports as LAN by default. - Move QDMA TX/RX DMA enable from airoha_dev_open() to airoha_probe() and the corresponding disable from airoha_dev_stop() to airoha_qdma_cleanup(). - Link to v2: https://lore.kernel.org/r/[email protected] Changes in v2: - Rework airoha_dev_set_wan_flag routine - Enable GDM_STRIP_CRC_MASK in airoha_disable_gdm2_loopback() - Do not always reset REG_SRC_PORT_FC_MAP6 in airoha_disable_gdm2_loopback() but use the same condition used in airoha_enable_gdm2_loopback(). - Link to v1: https://lore.kernel.org/r/[email protected] --- Lorenzo Bianconi (3): net: airoha: rename airoha_priv_flags to airoha_dev_flags net: airoha: fix ETS QoS stats counter underflow and cross-channel corruption net: airoha: defer GDM3/GDM4 WAN mode and GDM2 loopback to QoS offload drivers/net/ethernet/airoha/airoha_eth.c | 265 ++++++++++++++++++++++++++---- drivers/net/ethernet/airoha/airoha_eth.h | 33 +++- drivers/net/ethernet/airoha/airoha_ppe.c | 9 +- drivers/net/ethernet/airoha/airoha_regs.h | 1 + 4 files changed, 263 insertions(+), 45 deletions(-) --- base-commit: 04026c998c24ac47eb76886b9790c5710b603eb4 change-id: 20260606-airoha-ethtool-priv_flags-b6aa70caa780 Best regards, -- Lorenzo Bianconi <[email protected]>