#include <net/mac80211.h>
#include <linux/etherdevice.h>
#include "data_tx.h"
#include "wfx.h"
#include "bh.h"
#include "sta.h"
#include "queue.h"
#include "debug.h"
#include "traces.h"
#include "hif_tx_mib.h"
static int wfx_get_hw_rate(struct wfx_dev *wdev, const struct ieee80211_tx_rate *rate)
{ … }
static void wfx_tx_policy_build(struct wfx_vif *wvif, struct wfx_tx_policy *policy,
struct ieee80211_tx_rate *rates)
{ … }
static bool wfx_tx_policy_is_equal(const struct wfx_tx_policy *a, const struct wfx_tx_policy *b)
{ … }
static int wfx_tx_policy_find(struct wfx_tx_policy_cache *cache, struct wfx_tx_policy *wanted)
{ … }
static void wfx_tx_policy_use(struct wfx_tx_policy_cache *cache, struct wfx_tx_policy *entry)
{ … }
static int wfx_tx_policy_release(struct wfx_tx_policy_cache *cache, struct wfx_tx_policy *entry)
{ … }
static int wfx_tx_policy_get(struct wfx_vif *wvif, struct ieee80211_tx_rate *rates, bool *renew)
{ … }
static void wfx_tx_policy_put(struct wfx_vif *wvif, int idx)
{ … }
static int wfx_tx_policy_upload(struct wfx_vif *wvif)
{ … }
void wfx_tx_policy_upload_work(struct work_struct *work)
{ … }
void wfx_tx_policy_init(struct wfx_vif *wvif)
{ … }
static bool wfx_is_action_back(struct ieee80211_hdr *hdr)
{ … }
struct wfx_tx_priv *wfx_skb_tx_priv(struct sk_buff *skb)
{ … }
struct wfx_hif_req_tx *wfx_skb_txreq(struct sk_buff *skb)
{ … }
struct wfx_vif *wfx_skb_wvif(struct wfx_dev *wdev, struct sk_buff *skb)
{ … }
static u8 wfx_tx_get_link_id(struct wfx_vif *wvif, struct ieee80211_sta *sta,
struct ieee80211_hdr *hdr)
{ … }
static void wfx_tx_fixup_rates(struct ieee80211_tx_rate *rates)
{ … }
static u8 wfx_tx_get_retry_policy_id(struct wfx_vif *wvif, struct ieee80211_tx_info *tx_info)
{ … }
static int wfx_tx_get_frame_format(struct ieee80211_tx_info *tx_info)
{ … }
static int wfx_tx_get_icv_len(struct ieee80211_key_conf *hw_key)
{ … }
static int wfx_tx_inner(struct wfx_vif *wvif, struct ieee80211_sta *sta, struct sk_buff *skb)
{ … }
void wfx_tx(struct ieee80211_hw *hw, struct ieee80211_tx_control *control, struct sk_buff *skb)
{ … }
static void wfx_skb_dtor(struct wfx_vif *wvif, struct sk_buff *skb)
{ … }
static void wfx_tx_fill_rates(struct wfx_dev *wdev, struct ieee80211_tx_info *tx_info,
const struct wfx_hif_cnf_tx *arg)
{ … }
void wfx_tx_confirm_cb(struct wfx_dev *wdev, const struct wfx_hif_cnf_tx *arg)
{ … }
static void wfx_flush_vif(struct wfx_vif *wvif, u32 queues, struct sk_buff_head *dropped)
{ … }
void wfx_flush(struct ieee80211_hw *hw, struct ieee80211_vif *vif, u32 queues, bool drop)
{ … }