Loading drivers/net/wireless/Kconfig +17 −27 Original line number Diff line number Diff line Loading @@ -147,10 +147,13 @@ config IPW2100 <http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html>. If you want to compile the driver as a module ( = code which can be inserted in and removed from the running kernel whenever you want), say M here and read <file:Documentation/kbuild/modules.txt>. The module will be called ipw2100.ko. It is recommended that you compile this driver as a module (M) rather than built-in (Y). This driver requires firmware at device initialization time, and when built-in this typically happens before the filesystem is accessible (hence firmware will be unavailable and initialization will fail). If you do choose to build this driver into your kernel image, you can avoid this problem by including the firmware and a firmware loader in an initramfs. config IPW2100_MONITOR bool "Enable promiscuous mode" Loading Loading @@ -202,10 +205,13 @@ config IPW2200 <http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html>. If you want to compile the driver as a module ( = code which can be inserted in and removed from the running kernel whenever you want), say M here and read <file:Documentation/kbuild/modules.txt>. The module will be called ipw2200.ko. It is recommended that you compile this driver as a module (M) rather than built-in (Y). This driver requires firmware at device initialization time, and when built-in this typically happens before the filesystem is accessible (hence firmware will be unavailable and initialization will fail). If you do choose to build this driver into your kernel image, you can avoid this problem by including the firmware and a firmware loader in an initramfs. config IPW2200_MONITOR bool "Enable promiscuous mode" Loading Loading @@ -732,23 +738,7 @@ config P54_PCI If you choose to build a module, it'll be called p54pci. config ATH5K tristate "Atheros 5xxx wireless cards support" depends on PCI && MAC80211 && WLAN_80211 && EXPERIMENTAL ---help--- This module adds support for wireless adapters based on Atheros 5xxx chipset. Currently the following chip versions are supported: MAC: AR5211 AR5212 PHY: RF5111/2111 RF5112/2112 RF5413/2413 This driver uses the kernel's mac80211 subsystem. If you choose to build a module, it'll be called ath5k. Say M if unsure. source "drivers/net/wireless/ath5k/Kconfig" source "drivers/net/wireless/iwlwifi/Kconfig" source "drivers/net/wireless/hostap/Kconfig" source "drivers/net/wireless/bcm43xx/Kconfig" Loading drivers/net/wireless/adm8211.c +48 −40 Original line number Diff line number Diff line Loading @@ -48,6 +48,32 @@ static struct pci_device_id adm8211_pci_id_table[] __devinitdata = { { 0 } }; static struct ieee80211_rate adm8211_rates[] = { { .bitrate = 10, .flags = IEEE80211_RATE_SHORT_PREAMBLE }, { .bitrate = 20, .flags = IEEE80211_RATE_SHORT_PREAMBLE }, { .bitrate = 55, .flags = IEEE80211_RATE_SHORT_PREAMBLE }, { .bitrate = 110, .flags = IEEE80211_RATE_SHORT_PREAMBLE }, { .bitrate = 220, .flags = IEEE80211_RATE_SHORT_PREAMBLE }, /* XX ?? */ }; static const struct ieee80211_channel adm8211_channels[] = { { .center_freq = 2412}, { .center_freq = 2417}, { .center_freq = 2422}, { .center_freq = 2427}, { .center_freq = 2432}, { .center_freq = 2437}, { .center_freq = 2442}, { .center_freq = 2447}, { .center_freq = 2452}, { .center_freq = 2457}, { .center_freq = 2462}, { .center_freq = 2467}, { .center_freq = 2472}, { .center_freq = 2484}, }; static void adm8211_eeprom_register_read(struct eeprom_93cx6 *eeprom) { struct adm8211_priv *priv = eeprom->data; Loading Loading @@ -155,17 +181,17 @@ static int adm8211_read_eeprom(struct ieee80211_hw *dev) printk(KERN_DEBUG "%s (adm8211): Channel range: %d - %d\n", pci_name(priv->pdev), (int)chan_range.min, (int)chan_range.max); priv->modes[0].num_channels = chan_range.max - chan_range.min + 1; priv->modes[0].channels = priv->channels; BUILD_BUG_ON(sizeof(priv->channels) != sizeof(adm8211_channels)); memcpy(priv->channels, adm8211_channels, sizeof(adm8211_channels)); memcpy(priv->channels, adm8211_channels, sizeof(priv->channels)); priv->band.channels = priv->channels; priv->band.n_channels = ARRAY_SIZE(adm8211_channels); priv->band.bitrates = adm8211_rates; priv->band.n_bitrates = ARRAY_SIZE(adm8211_rates); for (i = 1; i <= ARRAY_SIZE(adm8211_channels); i++) if (i >= chan_range.min && i <= chan_range.max) priv->channels[i - 1].flag = IEEE80211_CHAN_W_SCAN | IEEE80211_CHAN_W_ACTIVE_SCAN | IEEE80211_CHAN_W_IBSS; if (i < chan_range.min || i > chan_range.max) priv->channels[i - 1].flags |= IEEE80211_CHAN_DISABLED; switch (priv->eeprom->specific_bbptype) { case ADM8211_BBP_RFMD3000: Loading Loading @@ -347,7 +373,6 @@ static void adm8211_interrupt_rci(struct ieee80211_hw *dev) unsigned int pktlen; struct sk_buff *skb, *newskb; unsigned int limit = priv->rx_ring_size; static const u8 rate_tbl[] = {10, 20, 55, 110, 220}; u8 rssi, rate; while (!(priv->rx_ring[entry].status & cpu_to_le32(RDES0_STATUS_OWN))) { Loading Loading @@ -425,12 +450,10 @@ static void adm8211_interrupt_rci(struct ieee80211_hw *dev) else rx_status.ssi = 100 - rssi; if (rate <= 4) rx_status.rate = rate_tbl[rate]; rx_status.rate_idx = rate; rx_status.channel = priv->channel; rx_status.freq = adm8211_channels[priv->channel - 1].freq; rx_status.phymode = MODE_IEEE80211B; rx_status.freq = adm8211_channels[priv->channel - 1].center_freq; rx_status.band = IEEE80211_BAND_2GHZ; ieee80211_rx_irqsafe(dev, skb, &rx_status); } Loading Loading @@ -1054,7 +1077,7 @@ static int adm8211_set_rate(struct ieee80211_hw *dev) if (priv->pdev->revision != ADM8211_REV_BA) { rate_buf[0] = ARRAY_SIZE(adm8211_rates); for (i = 0; i < ARRAY_SIZE(adm8211_rates); i++) rate_buf[i + 1] = (adm8211_rates[i].rate / 5) | 0x80; rate_buf[i + 1] = (adm8211_rates[i].bitrate / 5) | 0x80; } else { /* workaround for rev BA specific bug */ rate_buf[0] = 0x04; Loading Loading @@ -1086,7 +1109,7 @@ static void adm8211_hw_init(struct ieee80211_hw *dev) u32 reg; u8 cline; reg = le32_to_cpu(ADM8211_CSR_READ(PAR)); reg = ADM8211_CSR_READ(PAR); reg |= ADM8211_PAR_MRLE | ADM8211_PAR_MRME; reg &= ~(ADM8211_PAR_BAR | ADM8211_PAR_CAL); Loading Loading @@ -1303,9 +1326,10 @@ static int adm8211_set_ssid(struct ieee80211_hw *dev, u8 *ssid, size_t ssid_len) static int adm8211_config(struct ieee80211_hw *dev, struct ieee80211_conf *conf) { struct adm8211_priv *priv = dev->priv; int channel = ieee80211_frequency_to_channel(conf->channel->center_freq); if (conf->channel != priv->channel) { priv->channel = conf->channel; if (channel != priv->channel) { priv->channel = channel; adm8211_rf_set_channel(dev, priv->channel); } Loading Loading @@ -1678,13 +1702,9 @@ static int adm8211_tx(struct ieee80211_hw *dev, struct sk_buff *skb, int plcp, dur, len, plcp_signal, short_preamble; struct ieee80211_hdr *hdr; if (control->tx_rate < 0) { short_preamble = 1; plcp_signal = -control->tx_rate; } else { short_preamble = 0; plcp_signal = control->tx_rate; } short_preamble = !!(control->tx_rate->flags & IEEE80211_TXCTL_SHORT_PREAMBLE); plcp_signal = control->tx_rate->bitrate; hdr = (struct ieee80211_hdr *)skb->data; fc = le16_to_cpu(hdr->frame_control) & ~IEEE80211_FCTL_PROTECTED; Loading Loading @@ -1880,18 +1900,11 @@ static int __devinit adm8211_probe(struct pci_dev *pdev, SET_IEEE80211_PERM_ADDR(dev, perm_addr); dev->extra_tx_headroom = sizeof(struct adm8211_tx_hdr); dev->flags = IEEE80211_HW_DEFAULT_REG_DOMAIN_CONFIGURED; /* IEEE80211_HW_RX_INCLUDES_FCS in promisc mode */ /* dev->flags = IEEE80211_HW_RX_INCLUDES_FCS in promisc mode */ dev->channel_change_time = 1000; dev->max_rssi = 100; /* FIXME: find better value */ priv->modes[0].mode = MODE_IEEE80211B; /* channel info filled in by adm8211_read_eeprom */ memcpy(priv->rates, adm8211_rates, sizeof(adm8211_rates)); priv->modes[0].num_rates = ARRAY_SIZE(adm8211_rates); priv->modes[0].rates = priv->rates; dev->queues = 1; /* ADM8211C supports more, maybe ADM8211B too */ priv->retry_limit = 3; Loading @@ -1917,14 +1930,9 @@ static int __devinit adm8211_probe(struct pci_dev *pdev, goto err_free_desc; } priv->channel = priv->modes[0].channels[0].chan; priv->channel = 1; err = ieee80211_register_hwmode(dev, &priv->modes[0]); if (err) { printk(KERN_ERR "%s (adm8211): Can't register hwmode\n", pci_name(pdev)); goto err_free_desc; } dev->wiphy->bands[IEEE80211_BAND_2GHZ] = &priv->band; err = ieee80211_register_hw(dev); if (err) { Loading drivers/net/wireless/adm8211.h +7 −58 Original line number Diff line number Diff line Loading @@ -534,61 +534,6 @@ struct adm8211_eeprom { u8 cis_data[0]; /* 0x80, 384 bytes */ } __attribute__ ((packed)); static const struct ieee80211_rate adm8211_rates[] = { { .rate = 10, .val = 10, .val2 = -10, .flags = IEEE80211_RATE_CCK_2 }, { .rate = 20, .val = 20, .val2 = -20, .flags = IEEE80211_RATE_CCK_2 }, { .rate = 55, .val = 55, .val2 = -55, .flags = IEEE80211_RATE_CCK_2 }, { .rate = 110, .val = 110, .val2 = -110, .flags = IEEE80211_RATE_CCK_2 } }; struct ieee80211_chan_range { u8 min; u8 max; }; static const struct ieee80211_channel adm8211_channels[] = { { .chan = 1, .freq = 2412}, { .chan = 2, .freq = 2417}, { .chan = 3, .freq = 2422}, { .chan = 4, .freq = 2427}, { .chan = 5, .freq = 2432}, { .chan = 6, .freq = 2437}, { .chan = 7, .freq = 2442}, { .chan = 8, .freq = 2447}, { .chan = 9, .freq = 2452}, { .chan = 10, .freq = 2457}, { .chan = 11, .freq = 2462}, { .chan = 12, .freq = 2467}, { .chan = 13, .freq = 2472}, { .chan = 14, .freq = 2484}, }; struct adm8211_priv { struct pci_dev *pdev; spinlock_t lock; Loading @@ -603,9 +548,8 @@ struct adm8211_priv { unsigned int cur_tx, dirty_tx, cur_rx; struct ieee80211_low_level_stats stats; struct ieee80211_hw_mode modes[1]; struct ieee80211_channel channels[ARRAY_SIZE(adm8211_channels)]; struct ieee80211_rate rates[ARRAY_SIZE(adm8211_rates)]; struct ieee80211_supported_band band; struct ieee80211_channel channels[14]; int mode; int channel; Loading Loading @@ -643,6 +587,11 @@ struct adm8211_priv { } transceiver_type; }; struct ieee80211_chan_range { u8 min; u8 max; }; static const struct ieee80211_chan_range cranges[] = { {1, 11}, /* FCC */ {1, 11}, /* IC */ Loading drivers/net/wireless/ath5k/Kconfig 0 → 100644 +37 −0 Original line number Diff line number Diff line config ATH5K tristate "Atheros 5xxx wireless cards support" depends on PCI && MAC80211 && WLAN_80211 && EXPERIMENTAL ---help--- This module adds support for wireless adapters based on Atheros 5xxx chipset. Currently the following chip versions are supported: MAC: AR5211 AR5212 PHY: RF5111/2111 RF5112/2112 RF5413/2413 This driver uses the kernel's mac80211 subsystem. If you choose to build a module, it'll be called ath5k. Say M if unsure. config ATH5K_DEBUG bool "Atheros 5xxx debugging" depends on ATH5K ---help--- Atheros 5xxx debugging messages. Say Y, if and you will get debug options for ath5k. To use this, you need to mount debugfs: mkdir /debug/ mount -t debugfs debug /debug/ You will get access to files under: /debug/ath5k/phy0/ To enable debug, pass the debug level to the debug module parameter. For example: modprobe ath5k debug=0x00000400 drivers/net/wireless/ath5k/Makefile +6 −2 Original line number Diff line number Diff line ath5k-objs = base.o hw.o regdom.o initvals.o phy.o debug.o ath5k-y += base.o ath5k-y += hw.o ath5k-y += initvals.o ath5k-y += phy.o ath5k-$(CONFIG_ATH5K_DEBUG) += debug.o obj-$(CONFIG_ATH5K) += ath5k.o Loading
drivers/net/wireless/Kconfig +17 −27 Original line number Diff line number Diff line Loading @@ -147,10 +147,13 @@ config IPW2100 <http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html>. If you want to compile the driver as a module ( = code which can be inserted in and removed from the running kernel whenever you want), say M here and read <file:Documentation/kbuild/modules.txt>. The module will be called ipw2100.ko. It is recommended that you compile this driver as a module (M) rather than built-in (Y). This driver requires firmware at device initialization time, and when built-in this typically happens before the filesystem is accessible (hence firmware will be unavailable and initialization will fail). If you do choose to build this driver into your kernel image, you can avoid this problem by including the firmware and a firmware loader in an initramfs. config IPW2100_MONITOR bool "Enable promiscuous mode" Loading Loading @@ -202,10 +205,13 @@ config IPW2200 <http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html>. If you want to compile the driver as a module ( = code which can be inserted in and removed from the running kernel whenever you want), say M here and read <file:Documentation/kbuild/modules.txt>. The module will be called ipw2200.ko. It is recommended that you compile this driver as a module (M) rather than built-in (Y). This driver requires firmware at device initialization time, and when built-in this typically happens before the filesystem is accessible (hence firmware will be unavailable and initialization will fail). If you do choose to build this driver into your kernel image, you can avoid this problem by including the firmware and a firmware loader in an initramfs. config IPW2200_MONITOR bool "Enable promiscuous mode" Loading Loading @@ -732,23 +738,7 @@ config P54_PCI If you choose to build a module, it'll be called p54pci. config ATH5K tristate "Atheros 5xxx wireless cards support" depends on PCI && MAC80211 && WLAN_80211 && EXPERIMENTAL ---help--- This module adds support for wireless adapters based on Atheros 5xxx chipset. Currently the following chip versions are supported: MAC: AR5211 AR5212 PHY: RF5111/2111 RF5112/2112 RF5413/2413 This driver uses the kernel's mac80211 subsystem. If you choose to build a module, it'll be called ath5k. Say M if unsure. source "drivers/net/wireless/ath5k/Kconfig" source "drivers/net/wireless/iwlwifi/Kconfig" source "drivers/net/wireless/hostap/Kconfig" source "drivers/net/wireless/bcm43xx/Kconfig" Loading
drivers/net/wireless/adm8211.c +48 −40 Original line number Diff line number Diff line Loading @@ -48,6 +48,32 @@ static struct pci_device_id adm8211_pci_id_table[] __devinitdata = { { 0 } }; static struct ieee80211_rate adm8211_rates[] = { { .bitrate = 10, .flags = IEEE80211_RATE_SHORT_PREAMBLE }, { .bitrate = 20, .flags = IEEE80211_RATE_SHORT_PREAMBLE }, { .bitrate = 55, .flags = IEEE80211_RATE_SHORT_PREAMBLE }, { .bitrate = 110, .flags = IEEE80211_RATE_SHORT_PREAMBLE }, { .bitrate = 220, .flags = IEEE80211_RATE_SHORT_PREAMBLE }, /* XX ?? */ }; static const struct ieee80211_channel adm8211_channels[] = { { .center_freq = 2412}, { .center_freq = 2417}, { .center_freq = 2422}, { .center_freq = 2427}, { .center_freq = 2432}, { .center_freq = 2437}, { .center_freq = 2442}, { .center_freq = 2447}, { .center_freq = 2452}, { .center_freq = 2457}, { .center_freq = 2462}, { .center_freq = 2467}, { .center_freq = 2472}, { .center_freq = 2484}, }; static void adm8211_eeprom_register_read(struct eeprom_93cx6 *eeprom) { struct adm8211_priv *priv = eeprom->data; Loading Loading @@ -155,17 +181,17 @@ static int adm8211_read_eeprom(struct ieee80211_hw *dev) printk(KERN_DEBUG "%s (adm8211): Channel range: %d - %d\n", pci_name(priv->pdev), (int)chan_range.min, (int)chan_range.max); priv->modes[0].num_channels = chan_range.max - chan_range.min + 1; priv->modes[0].channels = priv->channels; BUILD_BUG_ON(sizeof(priv->channels) != sizeof(adm8211_channels)); memcpy(priv->channels, adm8211_channels, sizeof(adm8211_channels)); memcpy(priv->channels, adm8211_channels, sizeof(priv->channels)); priv->band.channels = priv->channels; priv->band.n_channels = ARRAY_SIZE(adm8211_channels); priv->band.bitrates = adm8211_rates; priv->band.n_bitrates = ARRAY_SIZE(adm8211_rates); for (i = 1; i <= ARRAY_SIZE(adm8211_channels); i++) if (i >= chan_range.min && i <= chan_range.max) priv->channels[i - 1].flag = IEEE80211_CHAN_W_SCAN | IEEE80211_CHAN_W_ACTIVE_SCAN | IEEE80211_CHAN_W_IBSS; if (i < chan_range.min || i > chan_range.max) priv->channels[i - 1].flags |= IEEE80211_CHAN_DISABLED; switch (priv->eeprom->specific_bbptype) { case ADM8211_BBP_RFMD3000: Loading Loading @@ -347,7 +373,6 @@ static void adm8211_interrupt_rci(struct ieee80211_hw *dev) unsigned int pktlen; struct sk_buff *skb, *newskb; unsigned int limit = priv->rx_ring_size; static const u8 rate_tbl[] = {10, 20, 55, 110, 220}; u8 rssi, rate; while (!(priv->rx_ring[entry].status & cpu_to_le32(RDES0_STATUS_OWN))) { Loading Loading @@ -425,12 +450,10 @@ static void adm8211_interrupt_rci(struct ieee80211_hw *dev) else rx_status.ssi = 100 - rssi; if (rate <= 4) rx_status.rate = rate_tbl[rate]; rx_status.rate_idx = rate; rx_status.channel = priv->channel; rx_status.freq = adm8211_channels[priv->channel - 1].freq; rx_status.phymode = MODE_IEEE80211B; rx_status.freq = adm8211_channels[priv->channel - 1].center_freq; rx_status.band = IEEE80211_BAND_2GHZ; ieee80211_rx_irqsafe(dev, skb, &rx_status); } Loading Loading @@ -1054,7 +1077,7 @@ static int adm8211_set_rate(struct ieee80211_hw *dev) if (priv->pdev->revision != ADM8211_REV_BA) { rate_buf[0] = ARRAY_SIZE(adm8211_rates); for (i = 0; i < ARRAY_SIZE(adm8211_rates); i++) rate_buf[i + 1] = (adm8211_rates[i].rate / 5) | 0x80; rate_buf[i + 1] = (adm8211_rates[i].bitrate / 5) | 0x80; } else { /* workaround for rev BA specific bug */ rate_buf[0] = 0x04; Loading Loading @@ -1086,7 +1109,7 @@ static void adm8211_hw_init(struct ieee80211_hw *dev) u32 reg; u8 cline; reg = le32_to_cpu(ADM8211_CSR_READ(PAR)); reg = ADM8211_CSR_READ(PAR); reg |= ADM8211_PAR_MRLE | ADM8211_PAR_MRME; reg &= ~(ADM8211_PAR_BAR | ADM8211_PAR_CAL); Loading Loading @@ -1303,9 +1326,10 @@ static int adm8211_set_ssid(struct ieee80211_hw *dev, u8 *ssid, size_t ssid_len) static int adm8211_config(struct ieee80211_hw *dev, struct ieee80211_conf *conf) { struct adm8211_priv *priv = dev->priv; int channel = ieee80211_frequency_to_channel(conf->channel->center_freq); if (conf->channel != priv->channel) { priv->channel = conf->channel; if (channel != priv->channel) { priv->channel = channel; adm8211_rf_set_channel(dev, priv->channel); } Loading Loading @@ -1678,13 +1702,9 @@ static int adm8211_tx(struct ieee80211_hw *dev, struct sk_buff *skb, int plcp, dur, len, plcp_signal, short_preamble; struct ieee80211_hdr *hdr; if (control->tx_rate < 0) { short_preamble = 1; plcp_signal = -control->tx_rate; } else { short_preamble = 0; plcp_signal = control->tx_rate; } short_preamble = !!(control->tx_rate->flags & IEEE80211_TXCTL_SHORT_PREAMBLE); plcp_signal = control->tx_rate->bitrate; hdr = (struct ieee80211_hdr *)skb->data; fc = le16_to_cpu(hdr->frame_control) & ~IEEE80211_FCTL_PROTECTED; Loading Loading @@ -1880,18 +1900,11 @@ static int __devinit adm8211_probe(struct pci_dev *pdev, SET_IEEE80211_PERM_ADDR(dev, perm_addr); dev->extra_tx_headroom = sizeof(struct adm8211_tx_hdr); dev->flags = IEEE80211_HW_DEFAULT_REG_DOMAIN_CONFIGURED; /* IEEE80211_HW_RX_INCLUDES_FCS in promisc mode */ /* dev->flags = IEEE80211_HW_RX_INCLUDES_FCS in promisc mode */ dev->channel_change_time = 1000; dev->max_rssi = 100; /* FIXME: find better value */ priv->modes[0].mode = MODE_IEEE80211B; /* channel info filled in by adm8211_read_eeprom */ memcpy(priv->rates, adm8211_rates, sizeof(adm8211_rates)); priv->modes[0].num_rates = ARRAY_SIZE(adm8211_rates); priv->modes[0].rates = priv->rates; dev->queues = 1; /* ADM8211C supports more, maybe ADM8211B too */ priv->retry_limit = 3; Loading @@ -1917,14 +1930,9 @@ static int __devinit adm8211_probe(struct pci_dev *pdev, goto err_free_desc; } priv->channel = priv->modes[0].channels[0].chan; priv->channel = 1; err = ieee80211_register_hwmode(dev, &priv->modes[0]); if (err) { printk(KERN_ERR "%s (adm8211): Can't register hwmode\n", pci_name(pdev)); goto err_free_desc; } dev->wiphy->bands[IEEE80211_BAND_2GHZ] = &priv->band; err = ieee80211_register_hw(dev); if (err) { Loading
drivers/net/wireless/adm8211.h +7 −58 Original line number Diff line number Diff line Loading @@ -534,61 +534,6 @@ struct adm8211_eeprom { u8 cis_data[0]; /* 0x80, 384 bytes */ } __attribute__ ((packed)); static const struct ieee80211_rate adm8211_rates[] = { { .rate = 10, .val = 10, .val2 = -10, .flags = IEEE80211_RATE_CCK_2 }, { .rate = 20, .val = 20, .val2 = -20, .flags = IEEE80211_RATE_CCK_2 }, { .rate = 55, .val = 55, .val2 = -55, .flags = IEEE80211_RATE_CCK_2 }, { .rate = 110, .val = 110, .val2 = -110, .flags = IEEE80211_RATE_CCK_2 } }; struct ieee80211_chan_range { u8 min; u8 max; }; static const struct ieee80211_channel adm8211_channels[] = { { .chan = 1, .freq = 2412}, { .chan = 2, .freq = 2417}, { .chan = 3, .freq = 2422}, { .chan = 4, .freq = 2427}, { .chan = 5, .freq = 2432}, { .chan = 6, .freq = 2437}, { .chan = 7, .freq = 2442}, { .chan = 8, .freq = 2447}, { .chan = 9, .freq = 2452}, { .chan = 10, .freq = 2457}, { .chan = 11, .freq = 2462}, { .chan = 12, .freq = 2467}, { .chan = 13, .freq = 2472}, { .chan = 14, .freq = 2484}, }; struct adm8211_priv { struct pci_dev *pdev; spinlock_t lock; Loading @@ -603,9 +548,8 @@ struct adm8211_priv { unsigned int cur_tx, dirty_tx, cur_rx; struct ieee80211_low_level_stats stats; struct ieee80211_hw_mode modes[1]; struct ieee80211_channel channels[ARRAY_SIZE(adm8211_channels)]; struct ieee80211_rate rates[ARRAY_SIZE(adm8211_rates)]; struct ieee80211_supported_band band; struct ieee80211_channel channels[14]; int mode; int channel; Loading Loading @@ -643,6 +587,11 @@ struct adm8211_priv { } transceiver_type; }; struct ieee80211_chan_range { u8 min; u8 max; }; static const struct ieee80211_chan_range cranges[] = { {1, 11}, /* FCC */ {1, 11}, /* IC */ Loading
drivers/net/wireless/ath5k/Kconfig 0 → 100644 +37 −0 Original line number Diff line number Diff line config ATH5K tristate "Atheros 5xxx wireless cards support" depends on PCI && MAC80211 && WLAN_80211 && EXPERIMENTAL ---help--- This module adds support for wireless adapters based on Atheros 5xxx chipset. Currently the following chip versions are supported: MAC: AR5211 AR5212 PHY: RF5111/2111 RF5112/2112 RF5413/2413 This driver uses the kernel's mac80211 subsystem. If you choose to build a module, it'll be called ath5k. Say M if unsure. config ATH5K_DEBUG bool "Atheros 5xxx debugging" depends on ATH5K ---help--- Atheros 5xxx debugging messages. Say Y, if and you will get debug options for ath5k. To use this, you need to mount debugfs: mkdir /debug/ mount -t debugfs debug /debug/ You will get access to files under: /debug/ath5k/phy0/ To enable debug, pass the debug level to the debug module parameter. For example: modprobe ath5k debug=0x00000400
drivers/net/wireless/ath5k/Makefile +6 −2 Original line number Diff line number Diff line ath5k-objs = base.o hw.o regdom.o initvals.o phy.o debug.o ath5k-y += base.o ath5k-y += hw.o ath5k-y += initvals.o ath5k-y += phy.o ath5k-$(CONFIG_ATH5K_DEBUG) += debug.o obj-$(CONFIG_ATH5K) += ath5k.o