#include <linux/export.h>
#include <linux/etherdevice.h>
#include <net/mac80211.h>
#include <asm/unaligned.h>
#include "ieee80211_i.h"
#include "rate.h"
#include "mesh.h"
#include "led.h"
#include "wme.h"
void ieee80211_tx_status_irqsafe(struct ieee80211_hw *hw,
struct sk_buff *skb)
{ … }
EXPORT_SYMBOL(…);
static void ieee80211_handle_filtered_frame(struct ieee80211_local *local,
struct sta_info *sta,
struct sk_buff *skb)
{ … }
static void ieee80211_check_pending_bar(struct sta_info *sta, u8 *addr, u8 tid)
{ … }
static void ieee80211_frame_acked(struct sta_info *sta, struct sk_buff *skb)
{ … }
static void ieee80211_set_bar_pending(struct sta_info *sta, u8 tid, u16 ssn)
{ … }
static int ieee80211_tx_radiotap_len(struct ieee80211_tx_info *info,
struct ieee80211_tx_status *status)
{ … }
static void
ieee80211_add_tx_radiotap_header(struct ieee80211_local *local,
struct sk_buff *skb, int retry_count,
int rtap_len,
struct ieee80211_tx_status *status)
{ … }
static void ieee80211_tdls_td_tx_handle(struct ieee80211_local *local,
struct ieee80211_sub_if_data *sdata,
struct sk_buff *skb, u32 flags)
{ … }
static struct ieee80211_sub_if_data *
ieee80211_sdata_from_skb(struct ieee80211_local *local, struct sk_buff *skb)
{ … }
static void ieee80211_report_ack_skb(struct ieee80211_local *local,
struct sk_buff *orig_skb,
bool acked, bool dropped,
ktime_t ack_hwtstamp)
{ … }
static void ieee80211_handle_smps_status(struct ieee80211_sub_if_data *sdata,
bool acked, u16 status_data)
{ … }
static void
ieee80211_handle_teardown_ttlm_status(struct ieee80211_sub_if_data *sdata,
bool acked)
{ … }
static void ieee80211_report_used_skb(struct ieee80211_local *local,
struct sk_buff *skb, bool dropped,
ktime_t ack_hwtstamp)
{ … }
#define STA_LOST_PKT_THRESHOLD …
#define STA_LOST_PKT_TIME …
#define STA_LOST_TDLS_PKT_TIME …
static void ieee80211_lost_packet(struct sta_info *sta,
struct ieee80211_tx_info *info)
{ … }
static int ieee80211_tx_get_rates(struct ieee80211_hw *hw,
struct ieee80211_tx_info *info,
int *retry_count)
{ … }
void ieee80211_tx_monitor(struct ieee80211_local *local, struct sk_buff *skb,
int retry_count, bool send_to_cooked,
struct ieee80211_tx_status *status)
{ … }
static void __ieee80211_tx_status(struct ieee80211_hw *hw,
struct ieee80211_tx_status *status,
int rates_idx, int retry_count)
{ … }
void ieee80211_tx_status_skb(struct ieee80211_hw *hw, struct sk_buff *skb)
{ … }
EXPORT_SYMBOL(…);
void ieee80211_tx_status_ext(struct ieee80211_hw *hw,
struct ieee80211_tx_status *status)
{ … }
EXPORT_SYMBOL(…);
void ieee80211_tx_rate_update(struct ieee80211_hw *hw,
struct ieee80211_sta *pubsta,
struct ieee80211_tx_info *info)
{ … }
EXPORT_SYMBOL(…);
void ieee80211_report_low_ack(struct ieee80211_sta *pubsta, u32 num_packets)
{ … }
EXPORT_SYMBOL(…);
void ieee80211_free_txskb(struct ieee80211_hw *hw, struct sk_buff *skb)
{ … }
EXPORT_SYMBOL(…);
void ieee80211_purge_tx_queue(struct ieee80211_hw *hw,
struct sk_buff_head *skbs)
{ … }