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' /jeff