Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: BSD-3-Clause-Clear */
0002 /*
0003  * Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.
0004  */
0005 #ifndef ATH11K_DP_RX_H
0006 #define ATH11K_DP_RX_H
0007 
0008 #include "core.h"
0009 #include "rx_desc.h"
0010 #include "debug.h"
0011 
0012 #define DP_MAX_NWIFI_HDR_LEN    30
0013 
0014 #define DP_RX_MPDU_ERR_FCS          BIT(0)
0015 #define DP_RX_MPDU_ERR_DECRYPT          BIT(1)
0016 #define DP_RX_MPDU_ERR_TKIP_MIC         BIT(2)
0017 #define DP_RX_MPDU_ERR_AMSDU_ERR        BIT(3)
0018 #define DP_RX_MPDU_ERR_OVERFLOW         BIT(4)
0019 #define DP_RX_MPDU_ERR_MSDU_LEN         BIT(5)
0020 #define DP_RX_MPDU_ERR_MPDU_LEN         BIT(6)
0021 #define DP_RX_MPDU_ERR_UNENCRYPTED_FRAME    BIT(7)
0022 
0023 enum dp_rx_decap_type {
0024     DP_RX_DECAP_TYPE_RAW,
0025     DP_RX_DECAP_TYPE_NATIVE_WIFI,
0026     DP_RX_DECAP_TYPE_ETHERNET2_DIX,
0027     DP_RX_DECAP_TYPE_8023,
0028 };
0029 
0030 struct ath11k_dp_amsdu_subframe_hdr {
0031     u8 dst[ETH_ALEN];
0032     u8 src[ETH_ALEN];
0033     __be16 len;
0034 } __packed;
0035 
0036 struct ath11k_dp_rfc1042_hdr {
0037     u8 llc_dsap;
0038     u8 llc_ssap;
0039     u8 llc_ctrl;
0040     u8 snap_oui[3];
0041     __be16 snap_type;
0042 } __packed;
0043 
0044 int ath11k_dp_rx_ampdu_start(struct ath11k *ar,
0045                  struct ieee80211_ampdu_params *params);
0046 int ath11k_dp_rx_ampdu_stop(struct ath11k *ar,
0047                 struct ieee80211_ampdu_params *params);
0048 int ath11k_dp_peer_rx_pn_replay_config(struct ath11k_vif *arvif,
0049                        const u8 *peer_addr,
0050                        enum set_key_cmd key_cmd,
0051                        struct ieee80211_key_conf *key);
0052 void ath11k_peer_frags_flush(struct ath11k *ar, struct ath11k_peer *peer);
0053 void ath11k_peer_rx_tid_cleanup(struct ath11k *ar, struct ath11k_peer *peer);
0054 void ath11k_peer_rx_tid_delete(struct ath11k *ar,
0055                    struct ath11k_peer *peer, u8 tid);
0056 int ath11k_peer_rx_tid_setup(struct ath11k *ar, const u8 *peer_mac, int vdev_id,
0057                  u8 tid, u32 ba_win_sz, u16 ssn,
0058                  enum hal_pn_type pn_type);
0059 void ath11k_dp_htt_htc_t2h_msg_handler(struct ath11k_base *ab,
0060                        struct sk_buff *skb);
0061 int ath11k_dp_pdev_reo_setup(struct ath11k_base *ab);
0062 void ath11k_dp_pdev_reo_cleanup(struct ath11k_base *ab);
0063 int ath11k_dp_rx_pdev_alloc(struct ath11k_base *ab, int pdev_idx);
0064 void ath11k_dp_rx_pdev_free(struct ath11k_base *ab, int pdev_idx);
0065 void ath11k_dp_reo_cmd_list_cleanup(struct ath11k_base *ab);
0066 void ath11k_dp_process_reo_status(struct ath11k_base *ab);
0067 int ath11k_dp_process_rxdma_err(struct ath11k_base *ab, int mac_id, int budget);
0068 int ath11k_dp_rx_process_wbm_err(struct ath11k_base *ab,
0069                  struct napi_struct *napi, int budget);
0070 int ath11k_dp_process_rx_err(struct ath11k_base *ab, struct napi_struct *napi,
0071                  int budget);
0072 int ath11k_dp_process_rx(struct ath11k_base *ab, int mac_id,
0073              struct napi_struct *napi,
0074              int budget);
0075 int ath11k_dp_rxbufs_replenish(struct ath11k_base *ab, int mac_id,
0076                    struct dp_rxdma_ring *rx_ring,
0077                    int req_entries,
0078                    enum hal_rx_buf_return_buf_manager mgr);
0079 int ath11k_dp_htt_tlv_iter(struct ath11k_base *ab, const void *ptr, size_t len,
0080                int (*iter)(struct ath11k_base *ar, u16 tag, u16 len,
0081                        const void *ptr, void *data),
0082                void *data);
0083 int ath11k_dp_rx_process_mon_rings(struct ath11k_base *ab, int mac_id,
0084                    struct napi_struct *napi, int budget);
0085 int ath11k_dp_rx_process_mon_status(struct ath11k_base *ab, int mac_id,
0086                     struct napi_struct *napi, int budget);
0087 int ath11k_dp_rx_mon_status_bufs_replenish(struct ath11k_base *ab, int mac_id,
0088                        struct dp_rxdma_ring *rx_ring,
0089                        int req_entries,
0090                        enum hal_rx_buf_return_buf_manager mgr);
0091 int ath11k_dp_rx_pdev_mon_detach(struct ath11k *ar);
0092 int ath11k_dp_rx_pdev_mon_attach(struct ath11k *ar);
0093 int ath11k_peer_rx_frag_setup(struct ath11k *ar, const u8 *peer_mac, int vdev_id);
0094 
0095 int ath11k_dp_rx_pktlog_start(struct ath11k_base *ab);
0096 int ath11k_dp_rx_pktlog_stop(struct ath11k_base *ab, bool stop_timer);
0097 
0098 #endif /* ATH11K_DP_RX_H */