#include <linux/netdevice.h>
#include <linux/etherdevice.h>
#include <linux/slab.h>
#include <linux/usb.h>
#include <linux/jiffies.h>
#include <net/ieee80211_radiotap.h>
#include "chip.h"
#include "mac.h"
#include "usb.h"
static const struct ieee80211_rate plfxlc_rates[] = …;
static const struct ieee80211_channel plfxlc_channels[] = …;
int plfxlc_mac_preinit_hw(struct ieee80211_hw *hw, const u8 *hw_address)
{ … }
int plfxlc_mac_init_hw(struct ieee80211_hw *hw)
{ … }
void plfxlc_mac_release(struct plfxlc_mac *mac)
{ … }
int plfxlc_op_start(struct ieee80211_hw *hw)
{ … }
void plfxlc_op_stop(struct ieee80211_hw *hw, bool suspend)
{ … }
int plfxlc_restore_settings(struct plfxlc_mac *mac)
{ … }
static void plfxlc_mac_tx_status(struct ieee80211_hw *hw,
struct sk_buff *skb,
int ackssi,
struct tx_status *tx_status)
{ … }
void plfxlc_mac_tx_to_dev(struct sk_buff *skb, int error)
{ … }
static int plfxlc_fill_ctrlset(struct plfxlc_mac *mac, struct sk_buff *skb)
{ … }
static void plfxlc_op_tx(struct ieee80211_hw *hw,
struct ieee80211_tx_control *control,
struct sk_buff *skb)
{ … }
static int plfxlc_filter_ack(struct ieee80211_hw *hw, struct ieee80211_hdr *rx_hdr,
struct ieee80211_rx_status *stats)
{ … }
int plfxlc_mac_rx(struct ieee80211_hw *hw, const u8 *buffer,
unsigned int length)
{ … }
static int plfxlc_op_add_interface(struct ieee80211_hw *hw,
struct ieee80211_vif *vif)
{ … }
static void plfxlc_op_remove_interface(struct ieee80211_hw *hw,
struct ieee80211_vif *vif)
{ … }
static int plfxlc_op_config(struct ieee80211_hw *hw, u32 changed)
{ … }
#define SUPPORTED_FIF_FLAGS …
static void plfxlc_op_configure_filter(struct ieee80211_hw *hw,
unsigned int changed_flags,
unsigned int *new_flags,
u64 multicast)
{ … }
static void plfxlc_op_bss_info_changed(struct ieee80211_hw *hw,
struct ieee80211_vif *vif,
struct ieee80211_bss_conf *bss_conf,
u64 changes)
{ … }
static int plfxlc_get_stats(struct ieee80211_hw *hw,
struct ieee80211_low_level_stats *stats)
{ … }
static const char et_strings[][ETH_GSTRING_LEN] = …;
static int plfxlc_get_et_sset_count(struct ieee80211_hw *hw,
struct ieee80211_vif *vif, int sset)
{ … }
static void plfxlc_get_et_strings(struct ieee80211_hw *hw,
struct ieee80211_vif *vif,
u32 sset, u8 *data)
{ … }
static void plfxlc_get_et_stats(struct ieee80211_hw *hw,
struct ieee80211_vif *vif,
struct ethtool_stats *stats, u64 *data)
{ … }
static int plfxlc_set_rts_threshold(struct ieee80211_hw *hw, u32 value)
{ … }
static const struct ieee80211_ops plfxlc_ops = …;
struct ieee80211_hw *plfxlc_mac_alloc_hw(struct usb_interface *intf)
{ … }