Path: blob/main/sys/contrib/dev/athk/ath11k/dp_rx.h
107613 views
/* SPDX-License-Identifier: BSD-3-Clause-Clear */1/*2* Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.3* Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved.4*/5#ifndef ATH11K_DP_RX_H6#define ATH11K_DP_RX_H78#include "core.h"9#include "rx_desc.h"10#include "debug.h"1112#define DP_MAX_NWIFI_HDR_LEN 301314#define DP_RX_MPDU_ERR_FCS BIT(0)15#define DP_RX_MPDU_ERR_DECRYPT BIT(1)16#define DP_RX_MPDU_ERR_TKIP_MIC BIT(2)17#define DP_RX_MPDU_ERR_AMSDU_ERR BIT(3)18#define DP_RX_MPDU_ERR_OVERFLOW BIT(4)19#define DP_RX_MPDU_ERR_MSDU_LEN BIT(5)20#define DP_RX_MPDU_ERR_MPDU_LEN BIT(6)21#define DP_RX_MPDU_ERR_UNENCRYPTED_FRAME BIT(7)2223enum dp_rx_decap_type {24DP_RX_DECAP_TYPE_RAW,25DP_RX_DECAP_TYPE_NATIVE_WIFI,26DP_RX_DECAP_TYPE_ETHERNET2_DIX,27DP_RX_DECAP_TYPE_8023,28};2930struct ath11k_dp_amsdu_subframe_hdr {31u8 dst[ETH_ALEN];32u8 src[ETH_ALEN];33__be16 len;34} __packed;3536struct ath11k_dp_rfc1042_hdr {37u8 llc_dsap;38u8 llc_ssap;39u8 llc_ctrl;40u8 snap_oui[3];41__be16 snap_type;42} __packed;4344int ath11k_dp_rx_ampdu_start(struct ath11k *ar,45struct ieee80211_ampdu_params *params);46int ath11k_dp_rx_ampdu_stop(struct ath11k *ar,47struct ieee80211_ampdu_params *params);48int ath11k_dp_peer_rx_pn_replay_config(struct ath11k_vif *arvif,49const u8 *peer_addr,50enum set_key_cmd key_cmd,51struct ieee80211_key_conf *key);52void ath11k_peer_frags_flush(struct ath11k *ar, struct ath11k_peer *peer);53void ath11k_peer_rx_tid_cleanup(struct ath11k *ar, struct ath11k_peer *peer);54void ath11k_peer_rx_tid_delete(struct ath11k *ar,55struct ath11k_peer *peer, u8 tid);56int ath11k_peer_rx_tid_setup(struct ath11k *ar, const u8 *peer_mac, int vdev_id,57u8 tid, u32 ba_win_sz, u16 ssn,58enum hal_pn_type pn_type);59void ath11k_dp_htt_htc_t2h_msg_handler(struct ath11k_base *ab,60struct sk_buff *skb);61int ath11k_dp_pdev_reo_setup(struct ath11k_base *ab);62void ath11k_dp_pdev_reo_cleanup(struct ath11k_base *ab);63int ath11k_dp_rx_pdev_alloc(struct ath11k_base *ab, int pdev_idx);64void ath11k_dp_rx_pdev_free(struct ath11k_base *ab, int pdev_idx);65void ath11k_dp_reo_cmd_list_cleanup(struct ath11k_base *ab);66void ath11k_dp_process_reo_status(struct ath11k_base *ab);67int ath11k_dp_process_rxdma_err(struct ath11k_base *ab, int mac_id, int budget);68int ath11k_dp_rx_process_wbm_err(struct ath11k_base *ab,69struct napi_struct *napi, int budget);70int ath11k_dp_process_rx_err(struct ath11k_base *ab, struct napi_struct *napi,71int budget);72int ath11k_dp_process_rx(struct ath11k_base *ab, int mac_id,73struct napi_struct *napi,74int budget);75int ath11k_dp_rxbufs_replenish(struct ath11k_base *ab, int mac_id,76struct dp_rxdma_ring *rx_ring,77int req_entries,78enum hal_rx_buf_return_buf_manager mgr);79#if defined(__linux__)80int ath11k_dp_htt_tlv_iter(struct ath11k_base *ab, const void *ptr, size_t len,81#elif defined(__FreeBSD__)82int ath11k_dp_htt_tlv_iter(struct ath11k_base *ab, const u8 *ptr, size_t len,83#endif84int (*iter)(struct ath11k_base *ar, u16 tag, u16 len,85const void *ptr, void *data),86void *data);87int ath11k_dp_rx_process_mon_rings(struct ath11k_base *ab, int mac_id,88struct napi_struct *napi, int budget);89int ath11k_dp_rx_process_mon_status(struct ath11k_base *ab, int mac_id,90struct napi_struct *napi, int budget);91int ath11k_dp_rx_mon_status_bufs_replenish(struct ath11k_base *ab, int mac_id,92struct dp_rxdma_ring *rx_ring,93int req_entries,94enum hal_rx_buf_return_buf_manager mgr);95int ath11k_dp_rx_pdev_mon_detach(struct ath11k *ar);96int ath11k_dp_rx_pdev_mon_attach(struct ath11k *ar);97int ath11k_peer_rx_frag_setup(struct ath11k *ar, const u8 *peer_mac, int vdev_id);9899int ath11k_dp_rx_pktlog_start(struct ath11k_base *ab);100int ath11k_dp_rx_pktlog_stop(struct ath11k_base *ab, bool stop_timer);101102int ath11k_dp_rx_crypto_mic_len(struct ath11k *ar, enum hal_encrypt_type enctype);103104#endif /* ATH11K_DP_RX_H */105106107