Path: blob/main/sys/contrib/dev/athk/ath12k/dp_mon.h
48378 views
/* SPDX-License-Identifier: BSD-3-Clause-Clear */1/*2* Copyright (c) 2019-2021 The Linux Foundation. All rights reserved.3* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.4*/56#ifndef ATH12K_DP_MON_H7#define ATH12K_DP_MON_H89#include "core.h"1011enum dp_monitor_mode {12ATH12K_DP_TX_MONITOR_MODE,13ATH12K_DP_RX_MONITOR_MODE14};1516enum dp_mon_tx_ppdu_info_type {17DP_MON_TX_PROT_PPDU_INFO,18DP_MON_TX_DATA_PPDU_INFO19};2021enum dp_mon_tx_tlv_status {22DP_MON_TX_FES_SETUP,23DP_MON_TX_FES_STATUS_END,24DP_MON_RX_RESPONSE_REQUIRED_INFO,25DP_MON_RESPONSE_END_STATUS_INFO,26DP_MON_TX_MPDU_START,27DP_MON_TX_MSDU_START,28DP_MON_TX_BUFFER_ADDR,29DP_MON_TX_DATA,30DP_MON_TX_STATUS_PPDU_NOT_DONE,31};3233enum dp_mon_tx_medium_protection_type {34DP_MON_TX_MEDIUM_NO_PROTECTION,35DP_MON_TX_MEDIUM_RTS_LEGACY,36DP_MON_TX_MEDIUM_RTS_11AC_STATIC_BW,37DP_MON_TX_MEDIUM_RTS_11AC_DYNAMIC_BW,38DP_MON_TX_MEDIUM_CTS2SELF,39DP_MON_TX_MEDIUM_QOS_NULL_NO_ACK_3ADDR,40DP_MON_TX_MEDIUM_QOS_NULL_NO_ACK_4ADDR41};4243struct dp_mon_qosframe_addr4 {44__le16 frame_control;45__le16 duration;46u8 addr1[ETH_ALEN];47u8 addr2[ETH_ALEN];48u8 addr3[ETH_ALEN];49__le16 seq_ctrl;50u8 addr4[ETH_ALEN];51__le16 qos_ctrl;52} __packed;5354struct dp_mon_frame_min_one {55__le16 frame_control;56__le16 duration;57u8 addr1[ETH_ALEN];58} __packed;5960struct dp_mon_packet_info {61u64 cookie;62u16 dma_length;63bool msdu_continuation;64bool truncated;65};6667struct dp_mon_tx_ppdu_info {68u32 ppdu_id;69u8 num_users;70bool is_used;71struct hal_rx_mon_ppdu_info rx_status;72struct list_head dp_tx_mon_mpdu_list;73struct dp_mon_mpdu *tx_mon_mpdu;74};7576enum hal_rx_mon_status77ath12k_dp_mon_rx_parse_mon_status(struct ath12k *ar,78struct ath12k_mon_data *pmon,79int mac_id, struct sk_buff *skb,80struct napi_struct *napi);81int ath12k_dp_mon_buf_replenish(struct ath12k_base *ab,82struct dp_rxdma_ring *buf_ring,83int req_entries);84int ath12k_dp_mon_srng_process(struct ath12k *ar, int mac_id,85int *budget, enum dp_monitor_mode monitor_mode,86struct napi_struct *napi);87int ath12k_dp_mon_process_ring(struct ath12k_base *ab, int mac_id,88struct napi_struct *napi, int budget,89enum dp_monitor_mode monitor_mode);90struct sk_buff *ath12k_dp_mon_tx_alloc_skb(void);91enum dp_mon_tx_tlv_status92ath12k_dp_mon_tx_status_get_num_user(u16 tlv_tag,93struct hal_tlv_hdr *tx_tlv,94u8 *num_users);95enum hal_rx_mon_status96ath12k_dp_mon_tx_parse_mon_status(struct ath12k *ar,97struct ath12k_mon_data *pmon,98int mac_id,99struct sk_buff *skb,100struct napi_struct *napi,101u32 ppdu_id);102void ath12k_dp_mon_rx_process_ulofdma(struct hal_rx_mon_ppdu_info *ppdu_info);103int ath12k_dp_mon_rx_process_stats(struct ath12k *ar, int mac_id,104struct napi_struct *napi, int *budget);105#endif106107108