drivers/net/wireless/ath/ath11k/dp.h
Source file repositories/reference/linux-study-clean/drivers/net/wireless/ath/ath11k/dp.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/net/wireless/ath/ath11k/dp.h- Extension
.h- Size
- 66085 bytes
- Lines
- 1694
- 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.
- Touches IRQ or DMA behavior; this matters for the representative real-device path.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
hal_rx.h
Detected Declarations
struct ath11k_basestruct ath11k_peerstruct ath11k_dpstruct ath11k_vifstruct hal_tcl_status_ringstruct ath11k_ext_irq_grpstruct dp_rx_tidstruct dp_reo_cache_flush_elemstruct dp_reo_cmdstruct dp_srngstruct dp_rxdma_ringstruct dp_tx_ringstruct ath11k_pdev_mon_statsstruct dp_full_mon_mpdustruct dp_link_desc_bankstruct ath11k_mon_datastruct ath11k_pdev_dpstruct ath11k_hp_update_timerstruct ath11k_dpstruct htt_tx_wbm_completionstruct htt_ver_req_cmdstruct htt_srng_setup_cmdstruct htt_ppdu_stats_cfg_cmdstruct htt_rx_ring_selection_cfg_cmdstruct htt_rx_ring_tlv_filterstruct htt_rx_full_monitor_mode_cfg_cmdstruct htt_t2h_version_conf_msgstruct htt_t2h_peer_map_eventstruct htt_t2h_peer_unmap_eventstruct htt_resp_msgstruct ath11k_htt_ppdu_stats_msgstruct htt_tlvstruct htt_ppdu_stats_commonstruct htt_ppdu_stats_user_ratestruct htt_ppdu_stats_usr_cmpltn_cmnstruct htt_ppdu_stats_usr_cmpltn_ack_ba_statusstruct htt_ppdu_user_statsstruct htt_ppdu_statsstruct htt_ppdu_stats_infostruct htt_pktlog_msgstruct htt_ext_stats_cfg_hdrstruct htt_ext_stats_cfg_cmdstruct htt_ext_stats_cfg_paramsstruct ath11k_htt_extd_stats_msgstruct htt_mac_addrenum dp_mon_status_buf_stateenum ath11k_dp_ppdu_stateenum htt_h2t_msg_type
Annotated Snippet
struct dp_rx_tid {
u8 tid;
dma_addr_t paddr;
u32 size;
u32 ba_win_sz;
bool active;
/* Info related to rx fragments */
u32 cur_sn;
u16 last_frag_no;
u16 rx_frag_bitmap;
struct sk_buff_head rx_frags;
struct hal_reo_dest_ring *dst_ring_desc;
/* Timer info related to fragments */
struct timer_list frag_timer;
struct ath11k_base *ab;
u32 *vaddr_unaligned;
dma_addr_t paddr_unaligned;
u32 unaligned_size;
};
#define DP_REO_DESC_FREE_THRESHOLD 64
#define DP_REO_DESC_FREE_TIMEOUT_MS 1000
#define DP_MON_PURGE_TIMEOUT_MS 100
#define DP_MON_SERVICE_BUDGET 128
struct dp_reo_cache_flush_elem {
struct list_head list;
struct dp_rx_tid data;
unsigned long ts;
};
struct dp_reo_cmd {
struct list_head list;
struct dp_rx_tid data;
int cmd_num;
void (*handler)(struct ath11k_dp *, void *,
enum hal_reo_cmd_status status);
};
struct dp_srng {
u32 *vaddr_unaligned;
u32 *vaddr;
dma_addr_t paddr_unaligned;
dma_addr_t paddr;
int size;
u32 ring_id;
u8 cached;
};
struct dp_rxdma_ring {
struct dp_srng refill_buf_ring;
struct idr bufs_idr;
/* Protects bufs_idr */
spinlock_t idr_lock;
int bufs_max;
};
#define ATH11K_TX_COMPL_NEXT(x) (((x) + 1) % DP_TX_COMP_RING_SIZE)
struct dp_tx_ring {
u8 tcl_data_ring_id;
struct dp_srng tcl_data_ring;
struct dp_srng tcl_comp_ring;
struct idr txbuf_idr;
/* Protects txbuf_idr and num_pending */
spinlock_t tx_idr_lock;
struct hal_wbm_release_ring *tx_status;
int tx_status_head;
int tx_status_tail;
};
enum dp_mon_status_buf_state {
/* PPDU id matches in dst ring and status ring */
DP_MON_STATUS_MATCH,
/* status ring dma is not done */
DP_MON_STATUS_NO_DMA,
/* status ring is lagging, reap status ring */
DP_MON_STATUS_LAG,
/* status ring is leading, reap dst ring and drop */
DP_MON_STATUS_LEAD,
/* replinish monitor status ring */
DP_MON_STATUS_REPLINISH,
};
struct ath11k_pdev_mon_stats {
u32 status_ppdu_state;
u32 status_ppdu_start;
Annotation
- Immediate include surface: `hal_rx.h`.
- Detected declarations: `struct ath11k_base`, `struct ath11k_peer`, `struct ath11k_dp`, `struct ath11k_vif`, `struct hal_tcl_status_ring`, `struct ath11k_ext_irq_grp`, `struct dp_rx_tid`, `struct dp_reo_cache_flush_elem`, `struct dp_reo_cmd`, `struct dp_srng`.
- 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.
- IRQ or DMA behavior appears here, which is relevant to the selected PCIe/NVMe device path.
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.