107 lines · 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-2023 Qualcomm Innovation Center, Inc. All rights reserved.5 */6 7#ifndef ATH12K_DP_MON_H8#define ATH12K_DP_MON_H9 10#include "core.h"11 12enum dp_monitor_mode {13 ATH12K_DP_TX_MONITOR_MODE,14 ATH12K_DP_RX_MONITOR_MODE15};16 17enum dp_mon_tx_ppdu_info_type {18 DP_MON_TX_PROT_PPDU_INFO,19 DP_MON_TX_DATA_PPDU_INFO20};21 22enum dp_mon_tx_tlv_status {23 DP_MON_TX_FES_SETUP,24 DP_MON_TX_FES_STATUS_END,25 DP_MON_RX_RESPONSE_REQUIRED_INFO,26 DP_MON_RESPONSE_END_STATUS_INFO,27 DP_MON_TX_MPDU_START,28 DP_MON_TX_MSDU_START,29 DP_MON_TX_BUFFER_ADDR,30 DP_MON_TX_DATA,31 DP_MON_TX_STATUS_PPDU_NOT_DONE,32};33 34enum dp_mon_tx_medium_protection_type {35 DP_MON_TX_MEDIUM_NO_PROTECTION,36 DP_MON_TX_MEDIUM_RTS_LEGACY,37 DP_MON_TX_MEDIUM_RTS_11AC_STATIC_BW,38 DP_MON_TX_MEDIUM_RTS_11AC_DYNAMIC_BW,39 DP_MON_TX_MEDIUM_CTS2SELF,40 DP_MON_TX_MEDIUM_QOS_NULL_NO_ACK_3ADDR,41 DP_MON_TX_MEDIUM_QOS_NULL_NO_ACK_4ADDR42};43 44struct dp_mon_qosframe_addr4 {45 __le16 frame_control;46 __le16 duration;47 u8 addr1[ETH_ALEN];48 u8 addr2[ETH_ALEN];49 u8 addr3[ETH_ALEN];50 __le16 seq_ctrl;51 u8 addr4[ETH_ALEN];52 __le16 qos_ctrl;53} __packed;54 55struct dp_mon_frame_min_one {56 __le16 frame_control;57 __le16 duration;58 u8 addr1[ETH_ALEN];59} __packed;60 61struct dp_mon_packet_info {62 u64 cookie;63 u16 dma_length;64 bool msdu_continuation;65 bool truncated;66};67 68struct dp_mon_tx_ppdu_info {69 u32 ppdu_id;70 u8 num_users;71 bool is_used;72 struct hal_rx_mon_ppdu_info rx_status;73 struct list_head dp_tx_mon_mpdu_list;74 struct dp_mon_mpdu *tx_mon_mpdu;75};76 77enum hal_rx_mon_status78ath12k_dp_mon_rx_parse_mon_status(struct ath12k *ar,79 struct ath12k_mon_data *pmon,80 int mac_id, struct sk_buff *skb,81 struct napi_struct *napi);82int ath12k_dp_mon_buf_replenish(struct ath12k_base *ab,83 struct dp_rxdma_mon_ring *buf_ring,84 int req_entries);85int ath12k_dp_mon_srng_process(struct ath12k *ar, int mac_id,86 int *budget, enum dp_monitor_mode monitor_mode,87 struct napi_struct *napi);88int ath12k_dp_mon_process_ring(struct ath12k_base *ab, int mac_id,89 struct napi_struct *napi, int budget,90 enum dp_monitor_mode monitor_mode);91struct sk_buff *ath12k_dp_mon_tx_alloc_skb(void);92enum dp_mon_tx_tlv_status93ath12k_dp_mon_tx_status_get_num_user(u16 tlv_tag,94 struct hal_tlv_hdr *tx_tlv,95 u8 *num_users);96enum hal_rx_mon_status97ath12k_dp_mon_tx_parse_mon_status(struct ath12k *ar,98 struct ath12k_mon_data *pmon,99 int mac_id,100 struct sk_buff *skb,101 struct napi_struct *napi,102 u32 ppdu_id);103void ath12k_dp_mon_rx_process_ulofdma(struct hal_rx_mon_ppdu_info *ppdu_info);104int ath12k_dp_mon_rx_process_stats(struct ath12k *ar, int mac_id,105 struct napi_struct *napi, int *budget);106#endif107