File Index
Files and directories
Sign in
FILE

dp_mon.h

File preview with syntax highlighting.

linux-6.19.14/drivers/net/wireless/ath/ath12k/dp_mon.h C
  1/* SPDX-License-Identifier: BSD-3-Clause-Clear */
  2/*
  3 * Copyright (c) 2019-2021 The Linux Foundation. All rights reserved.
  4 * Copyright (c) 2021-2025 Qualcomm Innovation Center, Inc. All rights reserved.
  5 */
  6
  7#ifndef ATH12K_DP_MON_H
  8#define ATH12K_DP_MON_H
  9
 10#include "core.h"
 11
 12#define ATH12K_MON_RX_DOT11_OFFSET	5
 13#define ATH12K_MON_RX_PKT_OFFSET	8
 14
 15enum dp_monitor_mode {
 16	ATH12K_DP_TX_MONITOR_MODE,
 17	ATH12K_DP_RX_MONITOR_MODE
 18};
 19
 20enum dp_mon_tx_ppdu_info_type {
 21	DP_MON_TX_PROT_PPDU_INFO,
 22	DP_MON_TX_DATA_PPDU_INFO
 23};
 24
 25enum dp_mon_tx_tlv_status {
 26	DP_MON_TX_FES_SETUP,
 27	DP_MON_TX_FES_STATUS_END,
 28	DP_MON_RX_RESPONSE_REQUIRED_INFO,
 29	DP_MON_RESPONSE_END_STATUS_INFO,
 30	DP_MON_TX_MPDU_START,
 31	DP_MON_TX_MSDU_START,
 32	DP_MON_TX_BUFFER_ADDR,
 33	DP_MON_TX_DATA,
 34	DP_MON_TX_STATUS_PPDU_NOT_DONE,
 35};
 36
 37enum dp_mon_tx_medium_protection_type {
 38	DP_MON_TX_MEDIUM_NO_PROTECTION,
 39	DP_MON_TX_MEDIUM_RTS_LEGACY,
 40	DP_MON_TX_MEDIUM_RTS_11AC_STATIC_BW,
 41	DP_MON_TX_MEDIUM_RTS_11AC_DYNAMIC_BW,
 42	DP_MON_TX_MEDIUM_CTS2SELF,
 43	DP_MON_TX_MEDIUM_QOS_NULL_NO_ACK_3ADDR,
 44	DP_MON_TX_MEDIUM_QOS_NULL_NO_ACK_4ADDR
 45};
 46
 47struct dp_mon_qosframe_addr4 {
 48	__le16 frame_control;
 49	__le16 duration;
 50	u8 addr1[ETH_ALEN];
 51	u8 addr2[ETH_ALEN];
 52	u8 addr3[ETH_ALEN];
 53	__le16 seq_ctrl;
 54	u8 addr4[ETH_ALEN];
 55	__le16 qos_ctrl;
 56} __packed;
 57
 58struct dp_mon_frame_min_one {
 59	__le16 frame_control;
 60	__le16 duration;
 61	u8 addr1[ETH_ALEN];
 62} __packed;
 63
 64struct dp_mon_packet_info {
 65	u64 cookie;
 66	u16 dma_length;
 67	bool msdu_continuation;
 68	bool truncated;
 69};
 70
 71struct dp_mon_tx_ppdu_info {
 72	u32 ppdu_id;
 73	u8  num_users;
 74	bool is_used;
 75	struct hal_rx_mon_ppdu_info rx_status;
 76	struct list_head dp_tx_mon_mpdu_list;
 77	struct dp_mon_mpdu *tx_mon_mpdu;
 78};
 79
 80enum hal_rx_mon_status
 81ath12k_dp_mon_rx_parse_mon_status(struct ath12k *ar,
 82				  struct ath12k_mon_data *pmon,
 83				  struct sk_buff *skb,
 84				  struct napi_struct *napi);
 85int ath12k_dp_mon_buf_replenish(struct ath12k_base *ab,
 86				struct dp_rxdma_mon_ring *buf_ring,
 87				int req_entries);
 88int ath12k_dp_mon_status_bufs_replenish(struct ath12k_base *ab,
 89					struct dp_rxdma_mon_ring *rx_ring,
 90					int req_entries);
 91int ath12k_dp_mon_process_ring(struct ath12k_base *ab, int mac_id,
 92			       struct napi_struct *napi, int budget,
 93			       enum dp_monitor_mode monitor_mode);
 94struct sk_buff *ath12k_dp_mon_tx_alloc_skb(void);
 95enum dp_mon_tx_tlv_status
 96ath12k_dp_mon_tx_status_get_num_user(u16 tlv_tag,
 97				     struct hal_tlv_hdr *tx_tlv,
 98				     u8 *num_users);
 99enum hal_rx_mon_status
100ath12k_dp_mon_tx_parse_mon_status(struct ath12k *ar,
101				  struct ath12k_mon_data *pmon,
102				  struct sk_buff *skb,
103				  struct napi_struct *napi,
104				  u32 ppdu_id);
105void ath12k_dp_mon_rx_process_ulofdma(struct hal_rx_mon_ppdu_info *ppdu_info);
106int ath12k_dp_mon_srng_process(struct ath12k *ar, int *budget, struct napi_struct *napi);
107#endif
~/ Read-only file preview.