#include <net/mac80211.h>
#include <linux/etherdevice.h>
#include <linux/skbuff.h>
#include "cw1200.h"
#include "wsm.h"
#include "bh.h"
#include "sta.h"
#include "debug.h"
#define CW1200_INVALID_RATE_ID …
static int cw1200_handle_action_rx(struct cw1200_common *priv,
struct sk_buff *skb);
static const struct ieee80211_rate *
cw1200_get_tx_rate(const struct cw1200_common *priv,
const struct ieee80211_tx_rate *rate);
static inline void cw1200_tx_queues_lock(struct cw1200_common *priv)
{ … }
static inline void cw1200_tx_queues_unlock(struct cw1200_common *priv)
{ … }
static void tx_policy_dump(struct tx_policy *policy)
{ … }
static void tx_policy_build(const struct cw1200_common *priv,
struct tx_policy *policy,
struct ieee80211_tx_rate *rates, size_t count)
{ … }
static inline bool tx_policy_is_equal(const struct tx_policy *wanted,
const struct tx_policy *cached)
{ … }
static int tx_policy_find(struct tx_policy_cache *cache,
const struct tx_policy *wanted)
{ … }
static inline void tx_policy_use(struct tx_policy_cache *cache,
struct tx_policy_cache_entry *entry)
{ … }
static inline int tx_policy_release(struct tx_policy_cache *cache,
struct tx_policy_cache_entry *entry)
{ … }
void tx_policy_clean(struct cw1200_common *priv)
{ … }
void tx_policy_init(struct cw1200_common *priv)
{ … }
static int tx_policy_get(struct cw1200_common *priv,
struct ieee80211_tx_rate *rates,
size_t count, bool *renew)
{ … }
static void tx_policy_put(struct cw1200_common *priv, int idx)
{ … }
static int tx_policy_upload(struct cw1200_common *priv)
{ … }
void tx_policy_upload_work(struct work_struct *work)
{ … }
struct cw1200_txinfo { … };
u32 cw1200_rate_mask_to_wsm(struct cw1200_common *priv, u32 rates)
{ … }
static const struct ieee80211_rate *
cw1200_get_tx_rate(const struct cw1200_common *priv,
const struct ieee80211_tx_rate *rate)
{ … }
static int
cw1200_tx_h_calc_link_ids(struct cw1200_common *priv,
struct cw1200_txinfo *t)
{ … }
static void
cw1200_tx_h_pm(struct cw1200_common *priv,
struct cw1200_txinfo *t)
{ … }
static void
cw1200_tx_h_calc_tid(struct cw1200_common *priv,
struct cw1200_txinfo *t)
{ … }
static int
cw1200_tx_h_crypt(struct cw1200_common *priv,
struct cw1200_txinfo *t)
{ … }
static int
cw1200_tx_h_align(struct cw1200_common *priv,
struct cw1200_txinfo *t,
u8 *flags)
{ … }
static int
cw1200_tx_h_action(struct cw1200_common *priv,
struct cw1200_txinfo *t)
{ … }
static struct wsm_tx *
cw1200_tx_h_wsm(struct cw1200_common *priv,
struct cw1200_txinfo *t)
{ … }
static void
cw1200_tx_h_bt(struct cw1200_common *priv,
struct cw1200_txinfo *t,
struct wsm_tx *wsm)
{ … }
static int
cw1200_tx_h_rate_policy(struct cw1200_common *priv,
struct cw1200_txinfo *t,
struct wsm_tx *wsm)
{ … }
static bool
cw1200_tx_h_pm_state(struct cw1200_common *priv,
struct cw1200_txinfo *t)
{ … }
void cw1200_tx(struct ieee80211_hw *dev,
struct ieee80211_tx_control *control,
struct sk_buff *skb)
{ … }
static int cw1200_handle_action_rx(struct cw1200_common *priv,
struct sk_buff *skb)
{ … }
static int cw1200_handle_pspoll(struct cw1200_common *priv,
struct sk_buff *skb)
{ … }
void cw1200_tx_confirm_cb(struct cw1200_common *priv,
int link_id,
struct wsm_tx_confirm *arg)
{ … }
static void cw1200_notify_buffered_tx(struct cw1200_common *priv,
struct sk_buff *skb, int link_id, int tid)
{ … }
void cw1200_skb_dtor(struct cw1200_common *priv,
struct sk_buff *skb,
const struct cw1200_txpriv *txpriv)
{ … }
void cw1200_rx_cb(struct cw1200_common *priv,
struct wsm_rx *arg,
int link_id,
struct sk_buff **skb_p)
{ … }
int cw1200_alloc_key(struct cw1200_common *priv)
{ … }
void cw1200_free_key(struct cw1200_common *priv, int idx)
{ … }
void cw1200_free_keys(struct cw1200_common *priv)
{ … }
int cw1200_upload_keys(struct cw1200_common *priv)
{ … }
void cw1200_link_id_reset(struct work_struct *work)
{ … }
int cw1200_find_link_id(struct cw1200_common *priv, const u8 *mac)
{ … }
int cw1200_alloc_link_id(struct cw1200_common *priv, const u8 *mac)
{ … }
void cw1200_link_id_work(struct work_struct *work)
{ … }
void cw1200_link_id_gc_work(struct work_struct *work)
{ … }