On 8/21/2025 4:57 AM, Jeff Johnson wrote: > On 8/20/2025 12:11 AM, Baochen Qiang wrote: >> >> >> On 8/13/2025 1:09 AM, Kiran Venkatappa wrote: >>> Current ath drivers have separate implementations for different >>> classes of devices. For example, ath11k supports WiFi-6 devices, >>> while ath12k supports Wi-Fi 7 devices. However, there is significant >>> common functionality across these generations due to shared firmware >>> and hardware architecture. In the existing driver code, this leverage >>> is achieved through code duplication. As a result, when a new driver >>> is introduced, many features are missed, and new additions require >>> porting across different generation drivers. >>> >>> To improve reuse and maintainability, ath12k should be split into common >>> and device-specific modules. Common code can be shared across multiple >>> architectures, enabling better leverage for future hardware generations. >>> generation drivers. >>> >>> Firmware interfaces and core initialization sequences are typically common >>> across different device families. In contrast, hardware register offsets, copy >>> engine mappings, and HAL configurations are usually hardware-specific. >>> >>> Common components include: >>> - mac80211 interface: Control path operations are mostly common across >>> different ATH hardware and will be shared as much as possible. >>> - Firmware interface (WMI, HTT, HTC, QMI): Firmware messaging and >>> sequences are common and maintained with backward/forward compatibility >>> using TLVs. >>> - Datapath: Data path files are also separated similarly. More information >>> will be provided in later patches. >>> - Core initialization, reset, and recovery sequences: These will be part >>> of the shared code. >>> >>> Device-specific code includes: >>> - Hardware capabilities, configurations, HAL, and other >>> architecture-specific logic. >>> >>> The original ath12k.ko is split into these two modules as depicted below. >>> >>> +-----------------+ >>> | | >>> | ath12k.ko | >>> | (common) | >>> +---------------+ | | >>> | | +-----------------+ >>> | ath12k.ko | ===========> >>> | | +------------------+ >>> +---------------+ | | >>> | ath12k_wifi7.ko | >>> | (wifi7 family) | >>> | | >>> +------------------+ >>> >>> The ath12k.ko module will serve as the common component, while ath12k_wifi7.ko >>> will be the architecture-specific module for WiFi-7 devices. >>> >>> After this modular separation, adding support for a new device will >>> primarily involve implementing device-specific code, while reusing the >>> majority of the shared common components. >>> >>> --- >>> Kiran Venkatappa (13): >>> wifi: ath12k: Restructure PCI code to common and Wi-Fi 7 specific logic >>> wifi: ath12k: Move Copy Engine configuration to Wi-Fi 7 specific file >>> wifi: ath12k: Move Wi-Fi 7 WMI configuration to dedicated file >>> wifi: ath12k: Move Wi-Fi 7 MHI configuration to dedicated file >>> wifi: ath12k: Rename hw.c to Wi-Fi 7 specific implementation file >>> wifi: ath12k: Rename ahb_hif_ops to reflect generic usage >>> wifi: ath12k: Restructure ahb.c into common and Wi-Fi 7 specific modules >>> wifi: ath12k: Move Wi-Fi 7 specific init routines to dedicated file >>> wifi: ath12k: Move hw_init invocation to target-specific probe >>> wifi: ath12k: Modularize driver into common and Wi-Fi 7 specific components >>> wifi: ath12k: Rename ath12k_* symbols to ath12k_wifi7_* for clarity >>> wifi: ath12k: Remove HAL defines from shared PCI code >>> wifi: ath12k: Remove HAL define dependencies from shared AHB code >>> >>> drivers/net/wireless/ath/ath12k/Makefile | 4 +- >>> drivers/net/wireless/ath/ath12k/ahb.c | 139 ++-- >>> drivers/net/wireless/ath/ath12k/ahb.h | 27 +- >>> drivers/net/wireless/ath/ath12k/ce.c | 301 ------- >>> drivers/net/wireless/ath/ath12k/ce.h | 5 +- >>> drivers/net/wireless/ath/ath12k/core.c | 38 +- >>> drivers/net/wireless/ath/ath12k/core.h | 7 + >>> drivers/net/wireless/ath/ath12k/debug.c | 4 + >>> drivers/net/wireless/ath/ath12k/dp_rx.c | 3 + >>> drivers/net/wireless/ath/ath12k/hal.c | 4 + >>> drivers/net/wireless/ath/ath12k/htc.c | 2 + >>> drivers/net/wireless/ath/ath12k/hw.h | 2 - >>> drivers/net/wireless/ath/ath12k/mhi.c | 130 --- >>> drivers/net/wireless/ath/ath12k/mhi.h | 4 +- >>> drivers/net/wireless/ath/ath12k/pci.c | 215 ++--- >>> drivers/net/wireless/ath/ath12k/pci.h | 28 +- >>> drivers/net/wireless/ath/ath12k/peer.c | 2 + >>> drivers/net/wireless/ath/ath12k/wifi7/Makefile | 10 + >>> drivers/net/wireless/ath/ath12k/wifi7/ahb.c | 71 ++ >>> drivers/net/wireless/ath/ath12k/wifi7/ahb.h | 20 + >>> drivers/net/wireless/ath/ath12k/wifi7/ce.c | 973 +++++++++++++++++++++++ >>> drivers/net/wireless/ath/ath12k/wifi7/ce.h | 22 + >>> drivers/net/wireless/ath/ath12k/wifi7/core.c | 44 + >>> drivers/net/wireless/ath/ath12k/{ => wifi7}/hw.c | 798 +++---------------- >>> drivers/net/wireless/ath/ath12k/wifi7/hw.h | 13 + >>> drivers/net/wireless/ath/ath12k/wifi7/mhi.c | 138 ++++ >>> drivers/net/wireless/ath/ath12k/wifi7/mhi.h | 11 + >>> drivers/net/wireless/ath/ath12k/wifi7/pci.c | 188 +++++ >>> drivers/net/wireless/ath/ath12k/wifi7/pci.h | 12 + >>> drivers/net/wireless/ath/ath12k/wifi7/wmi.c | 105 +++ >>> drivers/net/wireless/ath/ath12k/wifi7/wmi.h | 15 + >>> drivers/net/wireless/ath/ath12k/wmi.c | 97 --- >>> drivers/net/wireless/ath/ath12k/wmi.h | 4 - >>> 33 files changed, 1956 insertions(+), 1480 deletions(-) >>> --- >>> base-commit: d9104cec3e8fe4b458b74709853231385779001f >>> change-id: 20250812-ath12k-mod-bd00156df202 >>> >> >> Reviewed-by: Baochen Qiang <baochen.qiang@xxxxxxxxxxxxxxxx>> > > I dropped the extra ">" when applying to the patches in 'pending' My bad! Didn't notice that, Thanks! > > /jeff