From: Jakub Kicinski Date: Sat, 9 May 2026 02:10:13 +0000 (-0700) Subject: Merge branch 'net-dsa-microchip-remove-one-indirection-layer' X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8b2feced65cd3aa0597d596ed5733a1abd4c4d78;p=thirdparty%2Flinux.git Merge branch 'net-dsa-microchip-remove-one-indirection-layer' Bastien Curutchet says: ==================== net: dsa: microchip: Remove one indirection layer This series follows the discussions we had on a previous series that aimed to add PTP support for the KSZ8463 (cf [1]). The KSZ driver got way too convoluted over time because it uses a common framework to handle more than 20 switches split in 5 families (see below table) +----------+---------+---------+---------+---------+---------+ | Family | KSZ8463 | KSZ87xx | KSZ88xx | KSZ9477 | LAN937X | +----------+---------+---------+---------+---------+---------+ | Switches | KSZ8463 | KSZ8795 | KSZ88X3 | KSZ8563 | LAN9370 | | | | KSZ8794 | KSZ8864 | KSZ9477 | LAN9371 | | | | KSZ8765 | KSZ8895 | KSZ9896 | LAN9372 | | | | | | KSZ9897 | LAN9373 | | | | | | KSZ9893 | LAN9374 | | | | | | KSZ9563 | | | | | | | KSZ8567 | | | | | | | KSZ9567 | | | | | | | LAN9646 | | +----------+---------+---------+---------+---------+---------+ A unique struct dsa_switch_ops is used by all the switches. Next to it, each switch family has its own struct ksz_dev_ops with family-specific callbacks. So the dsa_switch_ops operations handle the specificities of each family through these ksz_dev_ops callbacks and/or conditional branches based on the chip ID. Vladimir initiated a rework of the driver ([2]) which I carried on. On top of the rework I added PTP and periodic output support for the KSZ8463 (which was my first goal). There are more than 60 patches for all this so this series will be followed by several others and if you want to see the full picture we can check my github ([3]). This first series aims to split the unique struct dsa_switch_ops into 5 so each switch family will be able to implement its own set of DSA operations. I haven't finished yet to group all the patches into meaningful series but here is more or less what I plan to do next: - A series will remove from the struct ksz_dev_ops the callbacks that have an equivalent in dsa_switch_ops to remove one level of indirection. - A series will split again some operations to get rid of the if (is_kszXYZ) branches. - Maybe a fourth one will be needed to completely move out of ksz_common.c everything that isn't truly common to all the switches - A series will add PTP support for the KSZ8463 - A final series will add periodic output support for the KSZ8463 [1]: https://lore.kernel.org/r/20260304-ksz8463-ptp-v6-0-3f4c47954c71@bootlin.com) [2]: https://github.com/vladimiroltean/linux/tree/ksz_separate_dsa_switch_ops [3]: https://github.com/bastien-curutchet/linux/tree/ksz_rework ==================== Link: https://patch.msgid.link/20260505-clean-ksz-driver-v1-0-05d70fa42461@bootlin.com Signed-off-by: Jakub Kicinski --- 8b2feced65cd3aa0597d596ed5733a1abd4c4d78