Re: [PATCH net-next v9 3/3] net: airoha: defer GDM3/GDM4 WAN mode and GDM2 loopback to QoS offload
Lorenzo Bianconi <[email protected]>
| Newsgroups | org.infradead.lists.linux-mediatek,org.infradead.lists.linux-arm-kernel,org.kernel.vger.netdev |
|---|---|
| Message-ID | <al87oKiC1y88_Ncr@lore-desk> |
> On 7/20/2026 3:03 PM, Lorenzo Bianconi wrote: > > GDM3 and GDM4 ports require GDM2 loopback to be enabled for hardware > > QoS offload to function. Without it, HTB and ETS offload on these ports > > do not work. > > Previously, GDM3/GDM4 ports were automatically configured as WAN with > > GDM2 loopback enabled during ndo_init(). Add the capability to configure > > GDM3/GDM4 as WAN/LAN on demand when QoS offload is created or destroyed. > > Hook airoha_enable_qos_for_gdm34() into TC_HTB_CREATE so that requesting > > HTB offload on a GDM3/GDM4 LAN port switches it to WAN mode and enables > > GDM2 loopback, with proper rollback on failure. Introduce the > > AIROHA_DEV_F_QOS flag to track whether a device has an active HTB > > qdisc; clear it on TC_HTB_DESTROY. The device keeps its WAN role after > > qdisc teardown so that its configuration is preserved until another > > device explicitly needs the WAN role for QoS offload. > > If another GDM3/GDM4 device already holds the WAN role without an active > > QoS qdisc, demote it to LAN before promoting the requesting device. Skip > > the demotion when the requesting device is itself already the WAN device. > > Since airoha_dev_set_qdma() can now be called on a running device to > > migrate between QDMA blocks, make dev->qdma an RCU pointer so the TX > > path can safely dereference it without holding RTNL. > > Hold flow_offload_mutex in airoha_enable_qos_for_gdm34() and > > airoha_disable_qos_for_gdm34() around the dev->flags update, > > airoha_dev_set_qdma() and GDM2 loopback configuration, serializing > > against concurrent airoha_ppe_hw_init() in the TC_SETUP_CLSFLOWER > > offload path. > > Introduce airoha_qdma_deref() helper that wraps rcu_dereference_protected() > > with a lockdep condition accepting either rtnl_lock or flow_offload_mutex, > > and use it across all control-path dereferences of the RCU-protected > > dev->qdma pointer. > > Add airoha_disable_gdm2_loopback() to disable GDM2 hw loopback. > > > > A minor nit which may just be my personal preference/style: > I had trouble following this commit message since it goes through a lot > of detail about various problems with dereferencing and other changes > related to allowing the defered configuration of WAN mode. > > I do appreciate this detail as it helps understand the changes and > motivations. However.. It might benefit from some additional line breaks > for spacing to help readability. Sure, I can rework the commit log if I need to repost. Regards, Lorenzo
signature.asc
(application/pgp-signature, 228 B)
-----BEGIN PGP SIGNATURE----- iHUEABYKAB0WIQTquNwa3Txd3rGGn7Y6cBh0uS2trAUCal87oAAKCRA6cBh0uS2t rEVKAPwIcLrCEAa3lrXGbk+Gos4q3HQHdOKbOzp+RRDjU1q54gEAyCE+g/lit//W cCyYD5/Z/NsHLoCWZv4DilW7uBExHg4= =WQtn -----END PGP SIGNATURE-----