> EN7581 or AN7583 SoCs support connecting multiple external SerDes (e.g. > Ethernet or USB SerDes) to GDM3 or GDM4 ports via a hw arbiter that > manages the traffic in a TDM manner. As a result multiple net_devices can > connect to the same GDM{3,4} port and there is a theoretical "1:n" > relation between GDM ports and net_devices. > > ┌─────────────────────────────────┐ > │ │ ┌──────┐ > │ P1 GDM1 ├────►MT7530│ > │ │ └──────┘ > │ │ ETH0 (DSA conduit) > │ │ > │ PSE/FE │ > │ │ > │ │ > │ │ ┌─────┐ > │ P0 CDM1 ├────►QDMA0│ > │ P4 P9 GDM4 │ └─────┘ > └──┬─────────────────────────┬────┘ > │ │ > ┌──▼──┐ ┌────▼────┐ > │ PPE │ │ ARB │ > └─────┘ └─┬─────┬─┘ > │ │ > ┌──▼──┐┌─▼───┐ > │ ETH ││ USB │ > └─────┘└─────┘ > ETH1 ETH2 > > This series introduces support for multiple net_devices connected to the > same Frame Engine (FE) GDM port (GDM3 or GDM4) via an external hw > arbiter. Please note GDM1 or GDM2 does not support the connection with > the external arbiter. In order to make easier the inclusion of this series I am splitting it in two smaller ones: - a preliminary rework series (just code adjustments) - a smaller series where we introduce the real support for multiple net_devices connected to the same FE GDM port. This way we can unlock even other patches in my queue. Regards, Lorenzo > > --- > Changes in v8: > - Fix dts schema issues reported by sashiko. > - Fix possible NULL-pointer dereference in patch 2/10. > - Fix max mtu computation in airoha_dev_change_mtu(). > - Link to v7: https://lore.kernel.org/r/20260516-airoha-eth-multi-serdes-v7-0-99e0093303e2@kernel.org > > Changes in v7: > - Fix dma_sync_single_for_cpu() size in airoha_qdma_rx_process(). > - Fix hw stats reset. > - Fix typos. > - Add fix for airoha_tc_remove_htb_queue queue index. > - Fix dts schema issues. > - Remove hw stats patch from the series. > - Link to v6: https://lore.kernel.org/r/20260511-airoha-eth-multi-serdes-v6-0-c899462c4f75@kernel.org > > Changes in v6: > - Reconfigure REG_GDM_LEN_CFG() whit max 'running' MTU in > airoha_dev_stop(). > - Fix port staring MIB counters in airoha_update_hw_stats(). > - Fix regression in TC_HTB_NODE_MODIFY command. > - Fix length check in airoha_qdma_rx_process(). > - Fix dts schema. > - Link to v5: https://lore.kernel.org/r/20260509-airoha-eth-multi-serdes-v5-0-805e38edc2aa@kernel.org > > Changes in v5: > - Move qos_sq_bmap bitmap in airoha_gdm_dev struct. > - Unregister netdevice before running of_node_put(). > - Move stat MIB counters in airoha_gdm_dev struct. > - Fix airoha_ppe_init_upd_mem() mac address configuration. > - Do not return -EBUSY if we try to decrease configured MTU of a shared > GDM port, just skip hw configuration. > - use int instead of atomic_t for GDM port users. > - Add patch "net: airoha: Reserve RX headroom to avoid skb reallocation" > - Fix typos. > - Link to v4: https://lore.kernel.org/r/20260507-airoha-eth-multi-serdes-v4-0-af613b61ae02@kernel.org > > Changes in v4: > - Make ethernet-port property available just for GDM3 and GDM4 in DTS > specification > - Move cpu_tx_packets, fwd_tx_packets qos_sq_bmap fields in airoha_qdma > struct > - Fix of_node leak removing the net_device in airoha_remove() or > airoha_probe() error path > - Fix nbq backward compatibility > - Link to v3: https://lore.kernel.org/r/20260406-airoha-eth-multi-serdes-v3-0-ab6ea49d59ff@kernel.org > > Changes in v3: > - Fix MTU and VIP configuration when the GDM port is shared between > multiple net_devices. > - Add sanity check for nbq parameter. > - Add missing of_node_get() for net_device np node. > - Check if GDM port is shared before decresing device MTU. > - Move port forward configuration in airoha_dev_stop() before > configuring DMA tx/rx engine. > - Introduce PRIV_FLAG_WAN parameter. > - Link to v2: https://lore.kernel.org/r/20260401-airoha-eth-multi-serdes-v2-0-ac427ae4beeb@kernel.org > > Changes in v2: > - Rename multiplexer in arbiter in the commit logs. > - Rebase on top of net-next main branch. > - Add missing PPE cpu port configuration for GDM2 when loopback is > enabled. > - Link to v1: https://lore.kernel.org/r/20260329-airoha-eth-multi-serdes-v1-0-00f52dc360ca@kernel.org > > --- > Lorenzo Bianconi (10): > dt-bindings: net: airoha: Add GDM port ethernet child node > net: airoha: Introduce airoha_gdm_dev struct > net: airoha: Move airoha_qdma pointer in airoha_gdm_dev struct > net: airoha: Rely on airoha_gdm_dev pointer in airoha_is_lan_gdm_port() > net: airoha: Move qos_sq_bmap in airoha_gdm_dev struct > net: airoha: Move {cpu,fwd}_tx_packets in airoha_gdm_dev struct > net: airoha: Support multiple net_devices for a single FE GDM port > net: airoha: Do not stop GDM port if it is shared > net: airoha: Introduce WAN device flag > net: airoha: Support multiple LAN/WAN interfaces for hw MAC address configuration > > .../devicetree/bindings/net/airoha,en7581-eth.yaml | 56 +- > drivers/net/ethernet/airoha/airoha_eth.c | 833 +++++++++++++++------ > drivers/net/ethernet/airoha/airoha_eth.h | 47 +- > drivers/net/ethernet/airoha/airoha_ppe.c | 43 +- > 4 files changed, 702 insertions(+), 277 deletions(-) > --- > base-commit: 7a348a95f696d20f15c776de4df8b4415bcf3d77 > change-id: 20260324-airoha-eth-multi-serdes-fb4b556ee756 > > Best regards, > -- > Lorenzo Bianconi >