drivers/net/wireless/ath/ath10k/htt.h
Source file repositories/reference/linux-study-clean/drivers/net/wireless/ath/ath10k/htt.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/net/wireless/ath/ath10k/htt.h- Extension
.h- Size
- 75356 bytes
- Lines
- 2466
- Domain
- Driver Families
- Bucket
- drivers/net
- Inferred role
- Driver Families: implementation source
- Status
- source implementation candidate
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Uses kernel synchronization; read lock ordering, sleepability, and interrupt context assumptions before translating.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/bug.hlinux/interrupt.hlinux/dmapool.hlinux/hashtable.hlinux/kfifo.hnet/mac80211.hhtc.hhw.hrx_desc.h
Detected Declarations
struct htt_cmd_hdrstruct htt_ver_reqstruct htt_data_tx_desc_fragstruct double_word_addrstruct triple_word_addrstruct htt_msdu_ext_descstruct htt_msdu_ext_desc_64struct htt_data_tx_descstruct htt_data_tx_desc_64struct htt_rx_ring_rx_desc_offsetsstruct htt_rx_ring_setup_ring32struct htt_rx_ring_setup_ring64struct htt_rx_ring_setup_hdrstruct htt_rx_ring_setup_32struct htt_rx_ring_setup_64struct htt_stats_reqstruct htt_oob_sync_reqstruct htt_aggr_confstruct htt_aggr_conf_v2struct htt_mgmt_tx_desc_qca99x0struct htt_mgmt_tx_descstruct htt_resp_hdrstruct htt_ver_respstruct htt_mgmt_tx_completionstruct htt_rx_indication_hdrstruct htt_rx_indication_ppdustruct htt_rx_indication_mpdu_rangestruct htt_rx_indication_prefixstruct htt_rx_indicationstruct htt_rx_indication_hlstruct htt_hl_rx_descstruct htt_rx_flushstruct htt_rx_peer_mapstruct htt_rx_peer_unmapstruct htt_security_indicationstruct htt_rx_addbastruct htt_rx_delbastruct htt_append_retriesstruct htt_data_tx_completion_extstruct htt_data_tx_completionstruct htt_data_tx_ppdu_durstruct htt_data_tx_compl_ppdu_durstruct htt_tx_compl_ind_basestruct htt_rc_tx_done_paramsstruct htt_rc_updatestruct htt_rx_fragment_indicationstruct htt_rx_pn_indstruct htt_rx_offload_msdu
Annotated Snippet
struct htt_cmd_hdr {
u8 msg_type;
} __packed;
struct htt_ver_req {
u8 pad[sizeof(u32) - sizeof(struct htt_cmd_hdr)];
} __packed;
/*
* HTT tx MSDU descriptor
*
* The HTT tx MSDU descriptor is created by the host HTT SW for each
* tx MSDU. The HTT tx MSDU descriptor contains the information that
* the target firmware needs for the FW's tx processing, particularly
* for creating the HW msdu descriptor.
* The same HTT tx descriptor is used for HL and LL systems, though
* a few fields within the tx descriptor are used only by LL or
* only by HL.
* The HTT tx descriptor is defined in two manners: by a struct with
* bitfields, and by a series of [dword offset, bit mask, bit shift]
* definitions.
* The target should use the struct def, for simplicity and clarity,
* but the host shall use the bit-mast + bit-shift defs, to be endian-
* neutral. Specifically, the host shall use the get/set macros built
* around the mask + shift defs.
*/
struct htt_data_tx_desc_frag {
union {
struct double_word_addr {
__le32 paddr;
__le32 len;
} __packed dword_addr;
struct triple_word_addr {
__le32 paddr_lo;
__le16 paddr_hi;
__le16 len_16;
} __packed tword_addr;
} __packed;
} __packed;
struct htt_msdu_ext_desc {
__le32 tso_flag[3];
__le16 ip_identification;
u8 flags;
u8 reserved;
struct htt_data_tx_desc_frag frags[6];
};
struct htt_msdu_ext_desc_64 {
__le32 tso_flag[5];
__le16 ip_identification;
u8 flags;
u8 reserved;
struct htt_data_tx_desc_frag frags[6];
};
#define HTT_MSDU_EXT_DESC_FLAG_IPV4_CSUM_ENABLE BIT(0)
#define HTT_MSDU_EXT_DESC_FLAG_UDP_IPV4_CSUM_ENABLE BIT(1)
#define HTT_MSDU_EXT_DESC_FLAG_UDP_IPV6_CSUM_ENABLE BIT(2)
#define HTT_MSDU_EXT_DESC_FLAG_TCP_IPV4_CSUM_ENABLE BIT(3)
#define HTT_MSDU_EXT_DESC_FLAG_TCP_IPV6_CSUM_ENABLE BIT(4)
#define HTT_MSDU_CHECKSUM_ENABLE (HTT_MSDU_EXT_DESC_FLAG_IPV4_CSUM_ENABLE \
| HTT_MSDU_EXT_DESC_FLAG_UDP_IPV4_CSUM_ENABLE \
| HTT_MSDU_EXT_DESC_FLAG_UDP_IPV6_CSUM_ENABLE \
| HTT_MSDU_EXT_DESC_FLAG_TCP_IPV4_CSUM_ENABLE \
| HTT_MSDU_EXT_DESC_FLAG_TCP_IPV6_CSUM_ENABLE)
#define HTT_MSDU_EXT_DESC_FLAG_IPV4_CSUM_ENABLE_64 BIT(16)
#define HTT_MSDU_EXT_DESC_FLAG_UDP_IPV4_CSUM_ENABLE_64 BIT(17)
#define HTT_MSDU_EXT_DESC_FLAG_UDP_IPV6_CSUM_ENABLE_64 BIT(18)
#define HTT_MSDU_EXT_DESC_FLAG_TCP_IPV4_CSUM_ENABLE_64 BIT(19)
#define HTT_MSDU_EXT_DESC_FLAG_TCP_IPV6_CSUM_ENABLE_64 BIT(20)
#define HTT_MSDU_EXT_DESC_FLAG_PARTIAL_CSUM_ENABLE_64 BIT(21)
#define HTT_MSDU_CHECKSUM_ENABLE_64 (HTT_MSDU_EXT_DESC_FLAG_IPV4_CSUM_ENABLE_64 \
| HTT_MSDU_EXT_DESC_FLAG_UDP_IPV4_CSUM_ENABLE_64 \
| HTT_MSDU_EXT_DESC_FLAG_UDP_IPV6_CSUM_ENABLE_64 \
| HTT_MSDU_EXT_DESC_FLAG_TCP_IPV4_CSUM_ENABLE_64 \
| HTT_MSDU_EXT_DESC_FLAG_TCP_IPV6_CSUM_ENABLE_64)
enum htt_data_tx_desc_flags0 {
HTT_DATA_TX_DESC_FLAGS0_MAC_HDR_PRESENT = 1 << 0,
HTT_DATA_TX_DESC_FLAGS0_NO_AGGR = 1 << 1,
HTT_DATA_TX_DESC_FLAGS0_NO_ENCRYPT = 1 << 2,
HTT_DATA_TX_DESC_FLAGS0_NO_CLASSIFY = 1 << 3,
HTT_DATA_TX_DESC_FLAGS0_RSVD0 = 1 << 4
#define HTT_DATA_TX_DESC_FLAGS0_PKT_TYPE_MASK 0xE0
#define HTT_DATA_TX_DESC_FLAGS0_PKT_TYPE_LSB 5
};
Annotation
- Immediate include surface: `linux/bug.h`, `linux/interrupt.h`, `linux/dmapool.h`, `linux/hashtable.h`, `linux/kfifo.h`, `net/mac80211.h`, `htc.h`, `hw.h`.
- Detected declarations: `struct htt_cmd_hdr`, `struct htt_ver_req`, `struct htt_data_tx_desc_frag`, `struct double_word_addr`, `struct triple_word_addr`, `struct htt_msdu_ext_desc`, `struct htt_msdu_ext_desc_64`, `struct htt_data_tx_desc`, `struct htt_data_tx_desc_64`, `struct htt_rx_ring_rx_desc_offsets`.
- Atlas domain: Driver Families / drivers/net.
- Implementation status: source implementation candidate.
- Synchronization appears in or near this file; preserve lock ordering, sleepability, and interrupt-context constraints.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.