#include "dp_mon.h"
#include "debug.h"
#include "dp_rx.h"
#include "dp_tx.h"
#include "peer.h"
static void ath12k_dp_mon_rx_handle_ofdma_info(void *rx_tlv,
struct hal_rx_user_status *rx_user_status)
{ … }
static void
ath12k_dp_mon_rx_populate_byte_count(const struct hal_rx_ppdu_end_user_stats *stats,
void *ppduinfo,
struct hal_rx_user_status *rx_user_status)
{ … }
static void
ath12k_dp_mon_rx_populate_mu_user_info(void *rx_tlv,
struct hal_rx_mon_ppdu_info *ppdu_info,
struct hal_rx_user_status *rx_user_status)
{ … }
static void ath12k_dp_mon_parse_vht_sig_a(u8 *tlv_data,
struct hal_rx_mon_ppdu_info *ppdu_info)
{ … }
static void ath12k_dp_mon_parse_ht_sig(u8 *tlv_data,
struct hal_rx_mon_ppdu_info *ppdu_info)
{ … }
static void ath12k_dp_mon_parse_l_sig_b(u8 *tlv_data,
struct hal_rx_mon_ppdu_info *ppdu_info)
{ … }
static void ath12k_dp_mon_parse_l_sig_a(u8 *tlv_data,
struct hal_rx_mon_ppdu_info *ppdu_info)
{ … }
static void ath12k_dp_mon_parse_he_sig_b2_ofdma(u8 *tlv_data,
struct hal_rx_mon_ppdu_info *ppdu_info)
{ … }
static void ath12k_dp_mon_parse_he_sig_b2_mu(u8 *tlv_data,
struct hal_rx_mon_ppdu_info *ppdu_info)
{ … }
static void ath12k_dp_mon_parse_he_sig_b1_mu(u8 *tlv_data,
struct hal_rx_mon_ppdu_info *ppdu_info)
{ … }
static void ath12k_dp_mon_parse_he_sig_mu(u8 *tlv_data,
struct hal_rx_mon_ppdu_info *ppdu_info)
{ … }
static void ath12k_dp_mon_parse_he_sig_su(u8 *tlv_data,
struct hal_rx_mon_ppdu_info *ppdu_info)
{ … }
static enum hal_rx_mon_status
ath12k_dp_mon_rx_parse_status_tlv(struct ath12k_base *ab,
struct ath12k_mon_data *pmon,
u32 tlv_tag, u8 *tlv_data, u32 userid)
{ … }
static void ath12k_dp_mon_rx_msdus_set_payload(struct ath12k *ar, struct sk_buff *msdu)
{ … }
static struct sk_buff *
ath12k_dp_mon_rx_merg_msdus(struct ath12k *ar,
u32 mac_id, struct sk_buff *head_msdu,
struct ieee80211_rx_status *rxs, bool *fcs_err)
{ … }
static void
ath12k_dp_mon_rx_update_radiotap_he(struct hal_rx_mon_ppdu_info *rx_status,
u8 *rtap_buf)
{ … }
static void
ath12k_dp_mon_rx_update_radiotap_he_mu(struct hal_rx_mon_ppdu_info *rx_status,
u8 *rtap_buf)
{ … }
static void ath12k_dp_mon_update_radiotap(struct ath12k *ar,
struct hal_rx_mon_ppdu_info *ppduinfo,
struct sk_buff *mon_skb,
struct ieee80211_rx_status *rxs)
{ … }
static void ath12k_dp_mon_rx_deliver_msdu(struct ath12k *ar, struct napi_struct *napi,
struct sk_buff *msdu,
struct ieee80211_rx_status *status)
{ … }
static int ath12k_dp_mon_rx_deliver(struct ath12k *ar, u32 mac_id,
struct sk_buff *head_msdu,
struct hal_rx_mon_ppdu_info *ppduinfo,
struct napi_struct *napi)
{ … }
static enum hal_rx_mon_status
ath12k_dp_mon_parse_rx_dest(struct ath12k_base *ab, struct ath12k_mon_data *pmon,
struct sk_buff *skb)
{ … }
enum hal_rx_mon_status
ath12k_dp_mon_rx_parse_mon_status(struct ath12k *ar,
struct ath12k_mon_data *pmon,
int mac_id,
struct sk_buff *skb,
struct napi_struct *napi)
{ … }
int ath12k_dp_mon_buf_replenish(struct ath12k_base *ab,
struct dp_rxdma_mon_ring *buf_ring,
int req_entries)
{ … }
static struct dp_mon_tx_ppdu_info *
ath12k_dp_mon_tx_get_ppdu_info(struct ath12k_mon_data *pmon,
unsigned int ppdu_id,
enum dp_mon_tx_ppdu_info_type type)
{ … }
static struct dp_mon_tx_ppdu_info *
ath12k_dp_mon_hal_tx_ppdu_info(struct ath12k_mon_data *pmon,
u16 tlv_tag)
{ … }
#define MAX_MONITOR_HEADER …
#define MAX_DUMMY_FRM_BODY …
struct sk_buff *ath12k_dp_mon_tx_alloc_skb(void)
{ … }
static int
ath12k_dp_mon_tx_gen_cts2self_frame(struct dp_mon_tx_ppdu_info *tx_ppdu_info)
{ … }
static int
ath12k_dp_mon_tx_gen_rts_frame(struct dp_mon_tx_ppdu_info *tx_ppdu_info)
{ … }
static int
ath12k_dp_mon_tx_gen_3addr_qos_null_frame(struct dp_mon_tx_ppdu_info *tx_ppdu_info)
{ … }
static int
ath12k_dp_mon_tx_gen_4addr_qos_null_frame(struct dp_mon_tx_ppdu_info *tx_ppdu_info)
{ … }
static int
ath12k_dp_mon_tx_gen_ack_frame(struct dp_mon_tx_ppdu_info *tx_ppdu_info)
{ … }
static int
ath12k_dp_mon_tx_gen_prot_frame(struct dp_mon_tx_ppdu_info *tx_ppdu_info)
{ … }
static enum dp_mon_tx_tlv_status
ath12k_dp_mon_tx_parse_status_tlv(struct ath12k_base *ab,
struct ath12k_mon_data *pmon,
u16 tlv_tag, u8 *tlv_data, u32 userid)
{ … }
enum dp_mon_tx_tlv_status
ath12k_dp_mon_tx_status_get_num_user(u16 tlv_tag,
struct hal_tlv_hdr *tx_tlv,
u8 *num_users)
{ … }
static void
ath12k_dp_mon_tx_process_ppdu_info(struct ath12k *ar, int mac_id,
struct napi_struct *napi,
struct dp_mon_tx_ppdu_info *tx_ppdu_info)
{ … }
enum hal_rx_mon_status
ath12k_dp_mon_tx_parse_mon_status(struct ath12k *ar,
struct ath12k_mon_data *pmon,
int mac_id,
struct sk_buff *skb,
struct napi_struct *napi,
u32 ppdu_id)
{ … }
int ath12k_dp_mon_srng_process(struct ath12k *ar, int mac_id, int *budget,
enum dp_monitor_mode monitor_mode,
struct napi_struct *napi)
{ … }
static void
ath12k_dp_mon_rx_update_peer_rate_table_stats(struct ath12k_rx_peer_stats *rx_stats,
struct hal_rx_mon_ppdu_info *ppdu_info,
struct hal_rx_user_status *user_stats,
u32 num_msdu)
{ … }
static void ath12k_dp_mon_rx_update_peer_su_stats(struct ath12k *ar,
struct ath12k_sta *arsta,
struct hal_rx_mon_ppdu_info *ppdu_info)
{ … }
void ath12k_dp_mon_rx_process_ulofdma(struct hal_rx_mon_ppdu_info *ppdu_info)
{ … }
static void
ath12k_dp_mon_rx_update_user_stats(struct ath12k *ar,
struct hal_rx_mon_ppdu_info *ppdu_info,
u32 uid)
{ … }
static void
ath12k_dp_mon_rx_update_peer_mu_stats(struct ath12k *ar,
struct hal_rx_mon_ppdu_info *ppdu_info)
{ … }
int ath12k_dp_mon_rx_process_stats(struct ath12k *ar, int mac_id,
struct napi_struct *napi, int *budget)
{ … }
int ath12k_dp_mon_process_ring(struct ath12k_base *ab, int mac_id,
struct napi_struct *napi, int budget,
enum dp_monitor_mode monitor_mode)
{ … }