Linux Audio

Check our new training course

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