Table of Contents

Go back –> ath10k

ath10k architecture

ath10k is a mac80211 driver, the architecture is depicted in the diagram below.

The driver is located in directory drivers/net/wireless/ath/ath10k/. The source code is available for browsing from this location:

https://github.com/kvalo/ath/tree/master/drivers/net/wireless/ath/ath10k

ath10k components

MAC

Host-Target Transport (HTT)

Wireless Module Interface (WMI)

Host-Target Communication (HTC)

Host interconnect Framework (HIF)

Debug

Tracing

PCI

Copy Engine (CE)

The firmware/ hardware has 8 rings for communication with host, defined in host_ce_config_wlan:

static const struct ce_attr host_ce_config_wlan[] = {
        /* CE0: host->target HTC control and raw streams */
        {
                .flags = CE_ATTR_FLAGS,
                .src_nentries = 16,
                .src_sz_max = 256,
                .dest_nentries = 0,
        },

        /* CE1: target->host HTT + HTC control */
        {
                .flags = CE_ATTR_FLAGS,
                .src_nentries = 0,
                .src_sz_max = 512,
                .dest_nentries = 512,
        },

        /* CE2: target->host WMI */
        {
                .flags = CE_ATTR_FLAGS,
                .src_nentries = 0,
                .src_sz_max = 2048,
                .dest_nentries = 32,
        },

        /* CE3: host->target WMI */
        {
                .flags = CE_ATTR_FLAGS,
                .src_nentries = 32,
                .src_sz_max = 2048,
                .dest_nentries = 0,
        },

        /* CE4: host->target HTT */
        {
                .flags = CE_ATTR_FLAGS | CE_ATTR_DIS_INTR,
                .src_nentries = CE_HTT_H2T_MSG_SRC_NENTRIES,
                .src_sz_max = 256,
                .dest_nentries = 0,
        },

        /* CE5: unused */
        {
                .flags = CE_ATTR_FLAGS,
                .src_nentries = 0,
                .src_sz_max = 0,
                .dest_nentries = 0,
        },

        /* CE6: target autonomous hif_memcpy */
        {
                .flags = CE_ATTR_FLAGS,
                .src_nentries = 0,
                .src_sz_max = 0,
                .dest_nentries = 0,
        },

        /* CE7: ce_diag, the Diagnostic Window */
        {
                .flags = CE_ATTR_FLAGS,
                .src_nentries = 2,
                .src_sz_max = DIAG_TRANSFER_LIMIT,
                .dest_nentries = 2,
        },
};

Copy Engine provides abstraction for these ring buffers and calls each ring a pipe.

Bootloader Messaging Interface (BMI)

Core