dp_rx.h 3.8 KB

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