#ifndef _HTT_H_
#define _HTT_H_
#include <linux/bug.h>
#include <linux/interrupt.h>
#include <linux/dmapool.h>
#include <linux/hashtable.h>
#include <linux/kfifo.h>
#include <net/mac80211.h>
#include "htc.h"
#include "hw.h"
#include "rx_desc.h"
enum htt_dbg_stats_type { … };
enum htt_h2t_msg_type { … };
struct htt_cmd_hdr { … } __packed;
struct htt_ver_req { … } __packed;
struct htt_data_tx_desc_frag { … } __packed;
struct htt_msdu_ext_desc { … };
struct htt_msdu_ext_desc_64 { … };
#define HTT_MSDU_EXT_DESC_FLAG_IPV4_CSUM_ENABLE …
#define HTT_MSDU_EXT_DESC_FLAG_UDP_IPV4_CSUM_ENABLE …
#define HTT_MSDU_EXT_DESC_FLAG_UDP_IPV6_CSUM_ENABLE …
#define HTT_MSDU_EXT_DESC_FLAG_TCP_IPV4_CSUM_ENABLE …
#define HTT_MSDU_EXT_DESC_FLAG_TCP_IPV6_CSUM_ENABLE …
#define HTT_MSDU_CHECKSUM_ENABLE …
#define HTT_MSDU_EXT_DESC_FLAG_IPV4_CSUM_ENABLE_64 …
#define HTT_MSDU_EXT_DESC_FLAG_UDP_IPV4_CSUM_ENABLE_64 …
#define HTT_MSDU_EXT_DESC_FLAG_UDP_IPV6_CSUM_ENABLE_64 …
#define HTT_MSDU_EXT_DESC_FLAG_TCP_IPV4_CSUM_ENABLE_64 …
#define HTT_MSDU_EXT_DESC_FLAG_TCP_IPV6_CSUM_ENABLE_64 …
#define HTT_MSDU_EXT_DESC_FLAG_PARTIAL_CSUM_ENABLE_64 …
#define HTT_MSDU_CHECKSUM_ENABLE_64 …
enum htt_data_tx_desc_flags0 { … };
enum htt_data_tx_desc_flags1 { … };
#define HTT_TX_CREDIT_DELTA_ABS_M …
#define HTT_TX_CREDIT_DELTA_ABS_S …
#define HTT_TX_CREDIT_DELTA_ABS_GET(word) …
#define HTT_TX_CREDIT_SIGN_BIT_M …
#define HTT_TX_CREDIT_SIGN_BIT_S …
#define HTT_TX_CREDIT_SIGN_BIT_GET(word) …
enum htt_data_tx_ext_tid { … };
#define HTT_INVALID_PEERID …
struct htt_data_tx_desc { … } __packed;
struct htt_data_tx_desc_64 { … } __packed;
enum htt_rx_ring_flags { … };
#define HTT_RX_RING_SIZE_MIN …
#define HTT_RX_RING_SIZE_MAX …
#define HTT_RX_RING_SIZE …
#define HTT_RX_RING_FILL_LEVEL …
#define HTT_RX_RING_FILL_LEVEL_DUAL_MAC …
struct htt_rx_ring_rx_desc_offsets { … } __packed;
struct htt_rx_ring_setup_ring32 { … } __packed;
struct htt_rx_ring_setup_ring64 { … } __packed;
struct htt_rx_ring_setup_hdr { … } __packed;
struct htt_rx_ring_setup_32 { … } __packed;
struct htt_rx_ring_setup_64 { … } __packed;
struct htt_stats_req { … } __packed;
#define HTT_STATS_REQ_CFG_STAT_TYPE_INVALID …
#define HTT_STATS_BIT_MASK …
struct htt_oob_sync_req { … } __packed;
struct htt_aggr_conf { … } __packed;
struct htt_aggr_conf_v2 { … } __packed;
#define HTT_MGMT_FRM_HDR_DOWNLOAD_LEN …
struct htt_mgmt_tx_desc_qca99x0 { … } __packed;
struct htt_mgmt_tx_desc { … } __packed;
enum htt_mgmt_tx_status { … };
enum htt_main_t2h_msg_type { … };
enum htt_10x_t2h_msg_type { … };
enum htt_tlv_t2h_msg_type { … };
enum htt_10_4_t2h_msg_type { … };
enum htt_t2h_msg_type { … };
struct htt_resp_hdr { … } __packed;
#define HTT_RESP_HDR_MSG_TYPE_OFFSET …
#define HTT_RESP_HDR_MSG_TYPE_MASK …
#define HTT_RESP_HDR_MSG_TYPE_LSB …
struct htt_ver_resp { … } __packed;
#define HTT_MGMT_TX_CMPL_FLAG_ACK_RSSI …
#define HTT_MGMT_TX_CMPL_INFO_ACK_RSSI_MASK …
struct htt_mgmt_tx_completion { … } __packed;
#define HTT_RX_INDICATION_INFO0_EXT_TID_MASK …
#define HTT_RX_INDICATION_INFO0_EXT_TID_LSB …
#define HTT_RX_INDICATION_INFO0_FLUSH_VALID …
#define HTT_RX_INDICATION_INFO0_RELEASE_VALID …
#define HTT_RX_INDICATION_INFO0_PPDU_DURATION …
#define HTT_RX_INDICATION_INFO1_FLUSH_START_SEQNO_MASK …
#define HTT_RX_INDICATION_INFO1_FLUSH_START_SEQNO_LSB …
#define HTT_RX_INDICATION_INFO1_FLUSH_END_SEQNO_MASK …
#define HTT_RX_INDICATION_INFO1_FLUSH_END_SEQNO_LSB …
#define HTT_RX_INDICATION_INFO1_RELEASE_START_SEQNO_MASK …
#define HTT_RX_INDICATION_INFO1_RELEASE_START_SEQNO_LSB …
#define HTT_RX_INDICATION_INFO1_RELEASE_END_SEQNO_MASK …
#define HTT_RX_INDICATION_INFO1_RELEASE_END_SEQNO_LSB …
#define HTT_RX_INDICATION_INFO1_NUM_MPDU_RANGES_MASK …
#define HTT_RX_INDICATION_INFO1_NUM_MPDU_RANGES_LSB …
#define HTT_TX_CMPL_FLAG_DATA_RSSI …
#define HTT_TX_CMPL_FLAG_PPID_PRESENT …
#define HTT_TX_CMPL_FLAG_PA_PRESENT …
#define HTT_TX_CMPL_FLAG_PPDU_DURATION_PRESENT …
#define HTT_TX_DATA_RSSI_ENABLE_WCN3990 …
#define HTT_TX_DATA_APPEND_RETRIES …
#define HTT_TX_DATA_APPEND_TIMESTAMP …
struct htt_rx_indication_hdr { … } __packed;
#define HTT_RX_INDICATION_INFO0_PHY_ERR_VALID …
#define HTT_RX_INDICATION_INFO0_LEGACY_RATE_MASK …
#define HTT_RX_INDICATION_INFO0_LEGACY_RATE_LSB …
#define HTT_RX_INDICATION_INFO0_LEGACY_RATE_CCK …
#define HTT_RX_INDICATION_INFO0_END_VALID …
#define HTT_RX_INDICATION_INFO0_START_VALID …
#define HTT_RX_INDICATION_INFO1_VHT_SIG_A1_MASK …
#define HTT_RX_INDICATION_INFO1_VHT_SIG_A1_LSB …
#define HTT_RX_INDICATION_INFO1_PREAMBLE_TYPE_MASK …
#define HTT_RX_INDICATION_INFO1_PREAMBLE_TYPE_LSB …
#define HTT_RX_INDICATION_INFO2_VHT_SIG_A1_MASK …
#define HTT_RX_INDICATION_INFO2_VHT_SIG_A1_LSB …
#define HTT_RX_INDICATION_INFO2_SERVICE_MASK …
#define HTT_RX_INDICATION_INFO2_SERVICE_LSB …
enum htt_rx_legacy_rate { … };
enum htt_rx_legacy_rate_type { … };
enum htt_rx_preamble_type { … };
struct htt_rx_indication_ppdu { … } __packed;
enum htt_rx_mpdu_status { … };
struct htt_rx_indication_mpdu_range { … } __packed;
struct htt_rx_indication_prefix { … } __packed;
struct htt_rx_indication { … } __packed;
struct htt_rx_indication_hl { … } __packed;
struct htt_hl_rx_desc { … } __packed;
static inline struct htt_rx_indication_mpdu_range *
htt_rx_ind_get_mpdu_ranges(struct htt_rx_indication *rx_ind)
{ … }
static inline struct htt_rx_indication_mpdu_range *
htt_rx_ind_get_mpdu_ranges_hl(struct htt_rx_indication_hl *rx_ind)
{ … }
enum htt_rx_flush_mpdu_status { … };
struct htt_rx_flush { … };
struct htt_rx_peer_map { … } __packed;
struct htt_rx_peer_unmap { … } __packed;
enum htt_txrx_sec_cast_type { … };
enum htt_rx_pn_check_type { … };
enum htt_rx_tkip_demic_type { … };
enum htt_security_types { … };
#define ATH10K_HTT_TXRX_PEER_SECURITY_MAX …
#define ATH10K_TXRX_NUM_EXT_TIDS …
#define ATH10K_TXRX_NON_QOS_TID …
enum htt_security_flags { … };
struct htt_security_indication { … } __packed;
#define HTT_RX_BA_INFO0_TID_MASK …
#define HTT_RX_BA_INFO0_TID_LSB …
#define HTT_RX_BA_INFO0_PEER_ID_MASK …
#define HTT_RX_BA_INFO0_PEER_ID_LSB …
struct htt_rx_addba { … } __packed;
struct htt_rx_delba { … } __packed;
enum htt_data_tx_status { … };
enum htt_data_tx_flags { … };
#define HTT_TX_COMPL_INV_MSDU_ID …
struct htt_append_retries { … } __packed;
struct htt_data_tx_completion_ext { … } __packed;
struct htt_data_tx_completion { … } __packed;
#define HTT_TX_PPDU_DUR_INFO0_PEER_ID_MASK …
#define HTT_TX_PPDU_DUR_INFO0_TID_MASK …
struct htt_data_tx_ppdu_dur { … } __packed;
#define HTT_TX_COMPL_PPDU_DUR_INFO0_NUM_ENTRIES_MASK …
struct htt_data_tx_compl_ppdu_dur { … } __packed;
struct htt_tx_compl_ind_base { … } __packed;
struct htt_rc_tx_done_params { … };
struct htt_rc_update { … } __packed;
struct htt_rx_fragment_indication { … } __packed;
#define ATH10K_IEEE80211_EXTIV …
#define ATH10K_IEEE80211_TKIP_MICLEN …
#define HTT_RX_FRAG_IND_INFO0_HEADER_LEN …
#define HTT_RX_FRAG_IND_INFO0_EXT_TID_MASK …
#define HTT_RX_FRAG_IND_INFO0_EXT_TID_LSB …
#define HTT_RX_FRAG_IND_INFO0_FLUSH_VALID_MASK …
#define HTT_RX_FRAG_IND_INFO0_FLUSH_VALID_LSB …
#define HTT_RX_FRAG_IND_INFO1_FLUSH_SEQ_NUM_START_MASK …
#define HTT_RX_FRAG_IND_INFO1_FLUSH_SEQ_NUM_START_LSB …
#define HTT_RX_FRAG_IND_INFO1_FLUSH_SEQ_NUM_END_MASK …
#define HTT_RX_FRAG_IND_INFO1_FLUSH_SEQ_NUM_END_LSB …
struct htt_rx_pn_ind { … } __packed;
struct htt_rx_offload_msdu { … } __packed;
struct htt_rx_offload_ind { … } __packed;
struct htt_rx_in_ord_msdu_desc { … } __packed;
struct htt_rx_in_ord_msdu_desc_ext { … } __packed;
struct htt_rx_in_ord_ind { … } __packed;
#define HTT_RX_IN_ORD_IND_INFO_TID_MASK …
#define HTT_RX_IN_ORD_IND_INFO_TID_LSB …
#define HTT_RX_IN_ORD_IND_INFO_OFFLOAD_MASK …
#define HTT_RX_IN_ORD_IND_INFO_OFFLOAD_LSB …
#define HTT_RX_IN_ORD_IND_INFO_FRAG_MASK …
#define HTT_RX_IN_ORD_IND_INFO_FRAG_LSB …
struct htt_rx_test { … } __packed;
static inline __le32 *htt_rx_test_get_ints(struct htt_rx_test *rx_test)
{ … }
static inline u8 *htt_rx_test_get_chars(struct htt_rx_test *rx_test)
{ … }
struct htt_pktlog_msg { … } __packed;
struct htt_dbg_stats_rx_reorder_stats { … };
struct htt_dbg_stats_wal_tx_stats { … } __packed;
struct htt_dbg_stats_wal_rx_stats { … } __packed;
struct htt_dbg_stats_wal_peer_stats { … } __packed;
struct htt_dbg_stats_wal_pdev_txrx { … } __packed;
struct htt_dbg_stats_rx_rate_info { … };
enum htt_dbg_stats_status { … };
struct htt_frag_desc_bank_id { … } __packed;
#define HTT_FRAG_DESC_BANK_MAX …
#define HTT_FRAG_DESC_BANK_CFG_INFO_PDEV_ID_MASK …
#define HTT_FRAG_DESC_BANK_CFG_INFO_PDEV_ID_LSB …
#define HTT_FRAG_DESC_BANK_CFG_INFO_SWAP …
#define HTT_FRAG_DESC_BANK_CFG_INFO_Q_STATE_VALID …
#define HTT_FRAG_DESC_BANK_CFG_INFO_Q_STATE_DEPTH_TYPE_MASK …
#define HTT_FRAG_DESC_BANK_CFG_INFO_Q_STATE_DEPTH_TYPE_LSB …
enum htt_q_depth_type { … };
#define HTT_TX_Q_STATE_NUM_PEERS …
#define HTT_TX_Q_STATE_NUM_TIDS …
#define HTT_TX_Q_STATE_ENTRY_SIZE …
#define HTT_TX_Q_STATE_ENTRY_MULTIPLIER …
struct htt_q_state_conf { … } __packed;
struct htt_frag_desc_bank_cfg32 { … } __packed;
struct htt_frag_desc_bank_cfg64 { … } __packed;
#define HTT_TX_Q_STATE_ENTRY_COEFFICIENT …
#define HTT_TX_Q_STATE_ENTRY_FACTOR_MASK …
#define HTT_TX_Q_STATE_ENTRY_FACTOR_LSB …
#define HTT_TX_Q_STATE_ENTRY_EXP_MASK …
#define HTT_TX_Q_STATE_ENTRY_EXP_LSB …
struct htt_q_state { … } __packed;
#define HTT_TX_FETCH_RECORD_INFO_PEER_ID_MASK …
#define HTT_TX_FETCH_RECORD_INFO_PEER_ID_LSB …
#define HTT_TX_FETCH_RECORD_INFO_TID_MASK …
#define HTT_TX_FETCH_RECORD_INFO_TID_LSB …
struct htt_tx_fetch_record { … } __packed;
struct htt_tx_fetch_ind { … } __packed;
static inline void *
ath10k_htt_get_tx_fetch_ind_resp_ids(struct htt_tx_fetch_ind *ind)
{ … }
struct htt_tx_fetch_resp { … } __packed;
struct htt_tx_fetch_confirm { … } __packed;
enum htt_tx_mode_switch_mode { … };
#define HTT_TX_MODE_SWITCH_IND_INFO0_ENABLE …
#define HTT_TX_MODE_SWITCH_IND_INFO0_NUM_RECORDS_MASK …
#define HTT_TX_MODE_SWITCH_IND_INFO0_NUM_RECORDS_LSB …
#define HTT_TX_MODE_SWITCH_IND_INFO1_MODE_MASK …
#define HTT_TX_MODE_SWITCH_IND_INFO1_MODE_LSB …
#define HTT_TX_MODE_SWITCH_IND_INFO1_THRESHOLD_MASK …
#define HTT_TX_MODE_SWITCH_IND_INFO1_THRESHOLD_LSB …
#define HTT_TX_MODE_SWITCH_RECORD_INFO0_PEER_ID_MASK …
#define HTT_TX_MODE_SWITCH_RECORD_INFO0_PEER_ID_LSB …
#define HTT_TX_MODE_SWITCH_RECORD_INFO0_TID_MASK …
#define HTT_TX_MODE_SWITCH_RECORD_INFO0_TID_LSB …
struct htt_tx_mode_switch_record { … } __packed;
struct htt_tx_mode_switch_ind { … } __packed;
struct htt_channel_change { … } __packed;
struct htt_per_peer_tx_stats_ind { … } __packed;
struct htt_peer_tx_stats { … } __packed;
#define ATH10K_10_2_TX_STATS_OFFSET …
#define PEER_STATS_FOR_NO_OF_PPDUS …
struct ath10k_10_2_peer_tx_stats { … } __packed;
htt_rx_pn_t;
struct htt_cmd { … } __packed;
struct htt_resp { … } __packed;
struct htt_tx_done { … };
enum htt_tx_compl_state { … };
struct htt_peer_map_event { … };
struct htt_peer_unmap_event { … };
struct ath10k_htt_txbuf_32 { … } __packed __aligned(…);
struct ath10k_htt_txbuf_64 { … } __packed __aligned(…);
struct ath10k_htt { … };
struct ath10k_htt_tx_ops { … };
static inline int ath10k_htt_send_rx_ring_cfg(struct ath10k_htt *htt)
{ … }
static inline int ath10k_htt_send_frag_desc_bank_cfg(struct ath10k_htt *htt)
{ … }
static inline int ath10k_htt_alloc_frag_desc(struct ath10k_htt *htt)
{ … }
static inline void ath10k_htt_free_frag_desc(struct ath10k_htt *htt)
{ … }
static inline int ath10k_htt_tx(struct ath10k_htt *htt,
enum ath10k_hw_txrx_mode txmode,
struct sk_buff *msdu)
{ … }
static inline void ath10k_htt_flush_tx(struct ath10k_htt *htt)
{ … }
static inline int ath10k_htt_alloc_txbuff(struct ath10k_htt *htt)
{ … }
static inline void ath10k_htt_free_txbuff(struct ath10k_htt *htt)
{ … }
static inline int ath10k_htt_h2t_aggr_cfg_msg(struct ath10k_htt *htt,
u8 max_subfrms_ampdu,
u8 max_subfrms_amsdu)
{ … }
struct ath10k_htt_rx_ops { … };
static inline size_t ath10k_htt_get_rx_ring_size(struct ath10k_htt *htt)
{ … }
static inline void ath10k_htt_config_paddrs_ring(struct ath10k_htt *htt,
void *vaddr)
{ … }
static inline void ath10k_htt_set_paddrs_ring(struct ath10k_htt *htt,
dma_addr_t paddr,
int idx)
{ … }
static inline void *ath10k_htt_get_vaddr_ring(struct ath10k_htt *htt)
{ … }
static inline void ath10k_htt_reset_paddrs_ring(struct ath10k_htt *htt, int idx)
{ … }
static inline bool ath10k_htt_rx_proc_rx_frag_ind(struct ath10k_htt *htt,
struct htt_rx_fragment_indication *rx,
struct sk_buff *skb)
{ … }
#define RX_HTT_HDR_STATUS_LEN …
struct htt_rx_desc { … } __packed;
struct htt_rx_desc_v2 { … };
struct htt_rx_desc_v1 { … };
struct ath10k_htt_rx_desc_ops { … };
extern const struct ath10k_htt_rx_desc_ops qca988x_rx_desc_ops;
extern const struct ath10k_htt_rx_desc_ops qca99x0_rx_desc_ops;
extern const struct ath10k_htt_rx_desc_ops wcn3990_rx_desc_ops;
static inline int
ath10k_htt_rx_desc_get_l3_pad_bytes(struct ath10k_hw_params *hw, struct htt_rx_desc *rxd)
{ … }
static inline bool
ath10k_htt_rx_desc_msdu_limit_error(struct ath10k_hw_params *hw, struct htt_rx_desc *rxd)
{ … }
static inline struct htt_rx_desc *
ath10k_htt_rx_desc_from_raw_buffer(struct ath10k_hw_params *hw, void *buff)
{ … }
static inline void
ath10k_htt_rx_desc_get_offsets(struct ath10k_hw_params *hw,
struct htt_rx_ring_rx_desc_offsets *off)
{ … }
static inline struct rx_attention *
ath10k_htt_rx_desc_get_attention(struct ath10k_hw_params *hw, struct htt_rx_desc *rxd)
{ … }
static inline struct rx_frag_info_common *
ath10k_htt_rx_desc_get_frag_info(struct ath10k_hw_params *hw, struct htt_rx_desc *rxd)
{ … }
static inline struct rx_mpdu_start *
ath10k_htt_rx_desc_get_mpdu_start(struct ath10k_hw_params *hw, struct htt_rx_desc *rxd)
{ … }
static inline struct rx_mpdu_end *
ath10k_htt_rx_desc_get_mpdu_end(struct ath10k_hw_params *hw, struct htt_rx_desc *rxd)
{ … }
static inline struct rx_msdu_start_common *
ath10k_htt_rx_desc_get_msdu_start(struct ath10k_hw_params *hw, struct htt_rx_desc *rxd)
{ … }
static inline struct rx_msdu_end_common *
ath10k_htt_rx_desc_get_msdu_end(struct ath10k_hw_params *hw, struct htt_rx_desc *rxd)
{ … }
static inline struct rx_ppdu_start *
ath10k_htt_rx_desc_get_ppdu_start(struct ath10k_hw_params *hw, struct htt_rx_desc *rxd)
{ … }
static inline struct rx_ppdu_end_common *
ath10k_htt_rx_desc_get_ppdu_end(struct ath10k_hw_params *hw, struct htt_rx_desc *rxd)
{ … }
static inline u8 *
ath10k_htt_rx_desc_get_rx_hdr_status(struct ath10k_hw_params *hw, struct htt_rx_desc *rxd)
{ … }
static inline u8 *
ath10k_htt_rx_desc_get_msdu_payload(struct ath10k_hw_params *hw, struct htt_rx_desc *rxd)
{ … }
#define HTT_RX_DESC_HL_INFO_SEQ_NUM_MASK …
#define HTT_RX_DESC_HL_INFO_SEQ_NUM_LSB …
#define HTT_RX_DESC_HL_INFO_ENCRYPTED_MASK …
#define HTT_RX_DESC_HL_INFO_ENCRYPTED_LSB …
#define HTT_RX_DESC_HL_INFO_CHAN_INFO_PRESENT_MASK …
#define HTT_RX_DESC_HL_INFO_CHAN_INFO_PRESENT_LSB …
#define HTT_RX_DESC_HL_INFO_MCAST_BCAST_MASK …
#define HTT_RX_DESC_HL_INFO_MCAST_BCAST_LSB …
#define HTT_RX_DESC_HL_INFO_KEY_ID_OCT_MASK …
#define HTT_RX_DESC_HL_INFO_KEY_ID_OCT_LSB …
struct htt_rx_desc_base_hl { … };
struct htt_rx_chan_info { … } __packed;
#define HTT_RX_DESC_ALIGN …
#define HTT_MAC_ADDR_LEN …
#define HTT_RX_BUF_SIZE …
static inline int ath10k_htt_rx_msdu_size(struct ath10k_hw_params *hw)
{ … }
#define ATH10K_HTT_MAX_NUM_REFILL …
#define HTT_LOG2_MAX_CACHE_LINE_SIZE …
#define HTT_MAX_CACHE_LINE_SIZE_MASK …
#define ATH10K_HTT_MAX_NUM_AMSDU_DEFAULT …
#define ATH10K_HTT_MAX_NUM_AMPDU_DEFAULT …
int ath10k_htt_connect(struct ath10k_htt *htt);
int ath10k_htt_init(struct ath10k *ar);
int ath10k_htt_setup(struct ath10k_htt *htt);
int ath10k_htt_tx_start(struct ath10k_htt *htt);
void ath10k_htt_tx_stop(struct ath10k_htt *htt);
void ath10k_htt_tx_destroy(struct ath10k_htt *htt);
void ath10k_htt_tx_free(struct ath10k_htt *htt);
int ath10k_htt_rx_alloc(struct ath10k_htt *htt);
int ath10k_htt_rx_ring_refill(struct ath10k *ar);
void ath10k_htt_rx_free(struct ath10k_htt *htt);
void ath10k_htt_htc_tx_complete(struct ath10k *ar, struct sk_buff *skb);
void ath10k_htt_htc_t2h_msg_handler(struct ath10k *ar, struct sk_buff *skb);
bool ath10k_htt_t2h_msg_handler(struct ath10k *ar, struct sk_buff *skb);
int ath10k_htt_h2t_ver_req_msg(struct ath10k_htt *htt);
int ath10k_htt_h2t_stats_req(struct ath10k_htt *htt, u32 mask, u32 reset_mask,
u64 cookie);
void ath10k_htt_hif_tx_complete(struct ath10k *ar, struct sk_buff *skb);
int ath10k_htt_tx_fetch_resp(struct ath10k *ar,
__le32 token,
__le16 fetch_seq_num,
struct htt_tx_fetch_record *records,
size_t num_records);
void ath10k_htt_op_ep_tx_credits(struct ath10k *ar);
void ath10k_htt_tx_txq_update(struct ieee80211_hw *hw,
struct ieee80211_txq *txq);
void ath10k_htt_tx_txq_recalc(struct ieee80211_hw *hw,
struct ieee80211_txq *txq);
void ath10k_htt_tx_txq_sync(struct ath10k *ar);
void ath10k_htt_tx_dec_pending(struct ath10k_htt *htt);
int ath10k_htt_tx_inc_pending(struct ath10k_htt *htt);
void ath10k_htt_tx_mgmt_dec_pending(struct ath10k_htt *htt);
int ath10k_htt_tx_mgmt_inc_pending(struct ath10k_htt *htt, bool is_mgmt,
bool is_presp);
int ath10k_htt_tx_alloc_msdu_id(struct ath10k_htt *htt, struct sk_buff *skb);
void ath10k_htt_tx_free_msdu_id(struct ath10k_htt *htt, u16 msdu_id);
int ath10k_htt_mgmt_tx(struct ath10k_htt *htt, struct sk_buff *msdu);
void ath10k_htt_rx_pktlog_completion_handler(struct ath10k *ar,
struct sk_buff *skb);
int ath10k_htt_txrx_compl_task(struct ath10k *ar, int budget);
int ath10k_htt_rx_hl_indication(struct ath10k *ar, int budget);
void ath10k_htt_set_tx_ops(struct ath10k_htt *htt);
void ath10k_htt_set_rx_ops(struct ath10k_htt *htt);
#endif