[PATCH ath12k-ng 00/13] wifi: ath12k: Ath12k modularization changes
Jeff Johnson
jeff.johnson at oss.qualcomm.com
Wed Aug 20 13:57:16 PDT 2025
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 at oss.qualcomm.com>>
I dropped the extra ">" when applying to the patches in 'pending'
/jeff
More information about the ath12k
mailing list