#include <linux/interrupt.h>
#include <linux/if.h>
#include <linux/skbuff.h>
#include <linux/slab.h>
#include <linux/etherdevice.h>
#include <linux/pci.h>
#include <linux/delay.h>
#include <linux/crc32.h>
#include <linux/eeprom_93cx6.h>
#include <linux/module.h>
#include <net/mac80211.h>
#include "adm8211.h"
MODULE_AUTHOR(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
static unsigned int tx_ring_size __read_mostly = …;
static unsigned int rx_ring_size __read_mostly = …;
module_param(tx_ring_size, uint, 0);
module_param(rx_ring_size, uint, 0);
static const struct pci_device_id adm8211_pci_id_table[] = …;
static struct ieee80211_rate adm8211_rates[] = …;
static const struct ieee80211_channel adm8211_channels[] = …;
static void adm8211_eeprom_register_read(struct eeprom_93cx6 *eeprom)
{ … }
static void adm8211_eeprom_register_write(struct eeprom_93cx6 *eeprom)
{ … }
static int adm8211_read_eeprom(struct ieee80211_hw *dev)
{ … }
static inline void adm8211_write_sram(struct ieee80211_hw *dev,
u32 addr, u32 data)
{ … }
static void adm8211_write_sram_bytes(struct ieee80211_hw *dev,
unsigned int addr, u8 *buf,
unsigned int len)
{ … }
static void adm8211_clear_sram(struct ieee80211_hw *dev)
{ … }
static int adm8211_get_stats(struct ieee80211_hw *dev,
struct ieee80211_low_level_stats *stats)
{ … }
static void adm8211_interrupt_tci(struct ieee80211_hw *dev)
{ … }
static void adm8211_interrupt_rci(struct ieee80211_hw *dev)
{ … }
static irqreturn_t adm8211_interrupt(int irq, void *dev_id)
{ … }
#define WRITE_SYN …
WRITE_SYN(max2820, 0x00FFF, 0, 0x0F, 12, 15, 1, 1)
WRITE_SYN(al2210l, 0xFFFFF, 4, 0x0F, 0, 23, 1, 1)
WRITE_SYN(rfmd2958, 0x3FFFF, 0, 0x1F, 18, 23, 0, 1)
WRITE_SYN(rfmd2948, 0x0FFFF, 4, 0x0F, 0, 21, 0, 2)
#undef WRITE_SYN
static int adm8211_write_bbp(struct ieee80211_hw *dev, u8 addr, u8 data)
{ … }
static int adm8211_rf_set_channel(struct ieee80211_hw *dev, unsigned int chan)
{ … }
static void adm8211_update_mode(struct ieee80211_hw *dev)
{ … }
static void adm8211_hw_init_syn(struct ieee80211_hw *dev)
{ … }
static int adm8211_hw_init_bbp(struct ieee80211_hw *dev)
{ … }
static int adm8211_set_rate(struct ieee80211_hw *dev)
{ … }
static void adm8211_hw_init(struct ieee80211_hw *dev)
{ … }
static int adm8211_hw_reset(struct ieee80211_hw *dev)
{ … }
static u64 adm8211_get_tsft(struct ieee80211_hw *dev,
struct ieee80211_vif *vif)
{ … }
static void adm8211_set_interval(struct ieee80211_hw *dev,
unsigned short bi, unsigned short li)
{ … }
static void adm8211_set_bssid(struct ieee80211_hw *dev, const u8 *bssid)
{ … }
static int adm8211_config(struct ieee80211_hw *dev, u32 changed)
{ … }
static void adm8211_bss_info_changed(struct ieee80211_hw *dev,
struct ieee80211_vif *vif,
struct ieee80211_bss_conf *conf,
u64 changes)
{ … }
static u64 adm8211_prepare_multicast(struct ieee80211_hw *hw,
struct netdev_hw_addr_list *mc_list)
{ … }
static void adm8211_configure_filter(struct ieee80211_hw *dev,
unsigned int changed_flags,
unsigned int *total_flags,
u64 multicast)
{ … }
static int adm8211_add_interface(struct ieee80211_hw *dev,
struct ieee80211_vif *vif)
{ … }
static void adm8211_remove_interface(struct ieee80211_hw *dev,
struct ieee80211_vif *vif)
{ … }
static int adm8211_init_rings(struct ieee80211_hw *dev)
{ … }
static void adm8211_free_rings(struct ieee80211_hw *dev)
{ … }
static int adm8211_start(struct ieee80211_hw *dev)
{ … }
static void adm8211_stop(struct ieee80211_hw *dev, bool suspend)
{ … }
static void adm8211_calc_durations(int *dur, int *plcp, size_t payload_len, int len,
int plcp_signal, int short_preamble)
{ … }
static int adm8211_tx_raw(struct ieee80211_hw *dev, struct sk_buff *skb,
u16 plcp_signal,
size_t hdrlen)
{ … }
static void adm8211_tx(struct ieee80211_hw *dev,
struct ieee80211_tx_control *control,
struct sk_buff *skb)
{ … }
static int adm8211_alloc_rings(struct ieee80211_hw *dev)
{ … }
static const struct ieee80211_ops adm8211_ops = …;
static int adm8211_probe(struct pci_dev *pdev,
const struct pci_device_id *id)
{ … }
static void adm8211_remove(struct pci_dev *pdev)
{ … }
#define adm8211_suspend …
#define adm8211_resume …
MODULE_DEVICE_TABLE(pci, adm8211_pci_id_table);
static SIMPLE_DEV_PM_OPS(adm8211_pm_ops, adm8211_suspend, adm8211_resume);
static struct pci_driver adm8211_driver = …;
module_pci_driver(…) …;