This is the merge of the bcm43xx driver, along with a variety of
smaller changes. I would really like to see this in 2.6.17 if at
all possible.
Thanks!
John
---
The following changes since commit 5d5d7727a8cde78f798ecf04bac8031eff536f9d:
David S. Miller:
[SPARC64]: Kill duplicate exports of string library functions.
are found in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 upstream
Adrian Bunk:
PCMCIA_SPECTRUM must select FW_LOADER
Danny van Dyk:
Sync bcm43xx_phy_initb6() with specs
David Woodhouse:
softmac: reduce scan dwell time
softmac: reduce default rate to 11Mbps.
Jean Tourrilhes:
zd1201 wireless stat update
John W. Linville:
wireless: import bcm43xx sources
bcm43xx: patch Kconfig and wireless/Makefile for import
Jouni Malinen:
hostap: Make hostap_tx_encrypt() static
hostap: Fix EAPOL frame encryption
Larry Finger:
Minor (janitorial) change to ieee80211
Michael Buesch:
bcm43xx: sync with svn.berlios.de
bcm43xx: remove linux version compatibility code.
bcm43xx: Move README file to Documentation directory.
bcm43xx: remove redundant COPYING file.
bcm43xx: add DEBUG Kconfig option. Also fix indention.
bcm43xx: Fix makefile. Remove all the "out-of-tree" stuff.
bcm43xx: Add more initvals sanity checks and error out, if one sanity
check fails.
bcm43xx: Remove function bcm43xx_channel_is_allowed()
bcm43xx: basic ethtool support
bcm43xx: Wireless Ext update
bcm43xx: fix txpower reporting in WE.
bcm43xx: enable SPROM writing.
bcm43xx: heavily increase mac_suspend timeout.
bcm43xx: fix compiletime warning (phy_xmitpower)
bcm43xx: remove WX debugging.
bcm43xx: Partially fix PIO code. Add Kconfig option for PIO or DMA mode
(or both).
bcm43xx: add a note that not all devices support PIO.
Apple Airport: Add Kconfig note that the bcm43xx driver has to be used
for Airport Extreme cards.
bcm43xx: update README
bcm43xx: fix LED code.
bcm43xx: rewrite and simplify the periodic task handling.
bcm43xx: Code cleanups. This removes various "inline" statements and
reduces codesize.
bcm43xx: Move sprom lowlevel reading/writing to its own functions.
bcm43xx: make bcm43xx_sprom_crc() static.
bcm43xx: split the channel helper functions, so that they can be used
without a valid running core.
bcm43xx: remove old unused struct.
bcm43xx: Fix Kconfig typo (transfer mode default)
bcm43xx: Workaround init_board vs IRQ race.
bcm43xx: move initialized = 1 to the end of init_board.
bcm43xx: add assert(bcm->initialized) to periodic_tasks_setup().
bcm43xx: Move TX/RX related functions to its own file. Add basic RTS/CTS
code.
bcm43xx: Add sysfs attributes for device specific tunables.
bcm43xx: Set both, the DMAmask and the coherent DMAmask.
bcm43xx: Abstract the locking mechanism.
bcm43xx: Remove the mmio access printing facility overhead.
bcm43xx: fix some stuff, add a few missing mmiowb(), remove dead code.
bcm43xx: receive TX status on MMIO or DMA unconditionally regarding the
80211 core rev.
bcm43xx: add functions bcm43xx_dma_read/write,
bcm43xx_dma_tx_suspend/resume.
bcm43xx: reduce the size of bcm43xx_private by removing unneeded members.
bcm43xx: Fix crash on ifdown, by being careful in pio/dma freeing.
bcm43xx: Remove the workaround in dummy_transmission,
bcm43xx: Do boardflags workarounds for specific boards.
bcm43xx: properly mask txctl1 before writing it to hardware.
bcm43xx: remove check for mmio length, as it differs among platforms.
(especially embedded)
bcm43xx: fix some gpio register trashing (hopefully :D)
bcm43xx: merge all iwmode code into the set_iwmode function.
bcm43xx: some IRQ handler cleanups.
bcm43xx: set default attenuation values.
bcm43xx: sync interference mitigation code to the specs.
bcm43xx: fix nrssi_threshold calculation.
bcm43xx: add useless and broken statistics stuff. People seem to want it.
well...
bcm43xx: get rid of "/* vim: ..." lines at the end of several files.
bcm43xx: fix "include" issues on some platforms.
bcm43xx: remove some compilerwarnings.
bcm43xx: fix the remaining sparse warnings.
bcm43xx: sync GPHY init with the specs.
bcm43xx: don't set the channel on a device, which is down.
Pete Zaitcev:
bcm43xx: fix DMA TX skb freeing in case of fragmented packets.
Documentation/networking/bcm43xx.txt | 36
drivers/net/wireless/Kconfig | 7
drivers/net/wireless/Makefile | 1
drivers/net/wireless/bcm43xx/Kconfig | 62
drivers/net/wireless/bcm43xx/Makefile | 12
drivers/net/wireless/bcm43xx/bcm43xx.h | 926 +++++
drivers/net/wireless/bcm43xx/bcm43xx_debugfs.c | 499 +++
drivers/net/wireless/bcm43xx/bcm43xx_debugfs.h | 117 +
drivers/net/wireless/bcm43xx/bcm43xx_dma.c | 968 ++++++
drivers/net/wireless/bcm43xx/bcm43xx_dma.h | 218 +
drivers/net/wireless/bcm43xx/bcm43xx_ethtool.c | 50
drivers/net/wireless/bcm43xx/bcm43xx_ethtool.h | 8
drivers/net/wireless/bcm43xx/bcm43xx_ilt.c | 337 ++
drivers/net/wireless/bcm43xx/bcm43xx_ilt.h | 32
drivers/net/wireless/bcm43xx/bcm43xx_leds.c | 293 ++
drivers/net/wireless/bcm43xx/bcm43xx_leds.h | 56
drivers/net/wireless/bcm43xx/bcm43xx_main.c | 3973 +++++++++++++++++++++++
drivers/net/wireless/bcm43xx/bcm43xx_main.h | 168 +
drivers/net/wireless/bcm43xx/bcm43xx_phy.c | 2345 ++++++++++++++
drivers/net/wireless/bcm43xx/bcm43xx_phy.h | 74
drivers/net/wireless/bcm43xx/bcm43xx_pio.c | 606 ++++
drivers/net/wireless/bcm43xx/bcm43xx_pio.h | 138 +
drivers/net/wireless/bcm43xx/bcm43xx_power.c | 358 ++
drivers/net/wireless/bcm43xx/bcm43xx_power.h | 47
drivers/net/wireless/bcm43xx/bcm43xx_radio.c | 2026 ++++++++++++
drivers/net/wireless/bcm43xx/bcm43xx_radio.h | 99 +
drivers/net/wireless/bcm43xx/bcm43xx_sysfs.c | 322 ++
drivers/net/wireless/bcm43xx/bcm43xx_sysfs.h | 25
drivers/net/wireless/bcm43xx/bcm43xx_wx.c | 1002 ++++++
drivers/net/wireless/bcm43xx/bcm43xx_wx.h | 36
drivers/net/wireless/bcm43xx/bcm43xx_xmit.c | 582 +++
drivers/net/wireless/bcm43xx/bcm43xx_xmit.h | 156 +
drivers/net/wireless/hostap/hostap_80211.h | 2
drivers/net/wireless/hostap/hostap_80211_tx.c | 9
drivers/usb/net/zd1201.c | 2
net/ieee80211/ieee80211_wx.c | 4
net/ieee80211/softmac/ieee80211softmac_module.c | 17
net/ieee80211/softmac/ieee80211softmac_priv.h | 2
net/ieee80211/softmac/ieee80211softmac_wx.c | 12
39 files changed, 15605 insertions(+), 22 deletions(-)
create mode 100644 Documentation/networking/bcm43xx.txt
create mode 100644 drivers/net/wireless/bcm43xx/Kconfig
create mode 100644 drivers/net/wireless/bcm43xx/Makefile
create mode 100644 drivers/net/wireless/bcm43xx/bcm43xx.h
create mode 100644 drivers/net/wireless/bcm43xx/bcm43xx_debugfs.c
create mode 100644 drivers/net/wireless/bcm43xx/bcm43xx_debugfs.h
create mode 100644 drivers/net/wireless/bcm43xx/bcm43xx_dma.c
create mode 100644 drivers/net/wireless/bcm43xx/bcm43xx_dma.h
create mode 100644 drivers/net/wireless/bcm43xx/bcm43xx_ethtool.c
create mode 100644 drivers/net/wireless/bcm43xx/bcm43xx_ethtool.h
create mode 100644 drivers/net/wireless/bcm43xx/bcm43xx_ilt.c
create mode 100644 drivers/net/wireless/bcm43xx/bcm43xx_ilt.h
create mode 100644 drivers/net/wireless/bcm43xx/bcm43xx_leds.c
create mode 100644 drivers/net/wireless/bcm43xx/bcm43xx_leds.h
create mode 100644 drivers/net/wireless/bcm43xx/bcm43xx_main.c
create mode 100644 drivers/net/wireless/bcm43xx/bcm43xx_main.h
create mode 100644 drivers/net/wireless/bcm43xx/bcm43xx_phy.c
create mode 100644 drivers/net/wireless/bcm43xx/bcm43xx_phy.h
create mode 100644 drivers/net/wireless/bcm43xx/bcm43xx_pio.c
create mode 100644 drivers/net/wireless/bcm43xx/bcm43xx_pio.h
create mode 100644 drivers/net/wireless/bcm43xx/bcm43xx_power.c
create mode 100644 drivers/net/wireless/bcm43xx/bcm43xx_power.h
create mode 100644 drivers/net/wireless/bcm43xx/bcm43xx_radio.c
create mode 100644 drivers/net/wireless/bcm43xx/bcm43xx_radio.h
create mode 100644 drivers/net/wireless/bcm43xx/bcm43xx_sysfs.c
create mode 100644 drivers/net/wireless/bcm43xx/bcm43xx_sysfs.h
create mode 100644 drivers/net/wireless/bcm43xx/bcm43xx_wx.c
create mode 100644 drivers/net/wireless/bcm43xx/bcm43xx_wx.h
create mode 100644 drivers/net/wireless/bcm43xx/bcm43xx_xmit.c
create mode 100644 drivers/net/wireless/bcm43xx/bcm43xx_xmit.h
The bcm43xx patch is omitted from here due to size constraints. It is
available here:
http://www.kernel.org/pub/linux/kernel/people/linville/bcm43xx.patch
diff -u b/drivers/net/wireless/Kconfig b/drivers/net/wireless/Kconfig
--- b/drivers/net/wireless/Kconfig
+++ b/drivers/net/wireless/Kconfig
@@ -404,6 +404,7 @@
config PCMCIA_SPECTRUM
tristate "Symbol Spectrum24 Trilogy PCMCIA card support"
depends on NET_RADIO && PCMCIA && HERMES
+ select FW_LOADER
---help---
This is a driver for 802.11b cards using RAM-loadable Symbol
only in patch2:
unchanged:
--- a/drivers/net/wireless/hostap/hostap_80211.h
+++ b/drivers/net/wireless/hostap/hostap_80211.h
@@ -92,8 +92,6 @@ void hostap_dump_rx_80211(const char *na
void hostap_dump_tx_80211(const char *name, struct sk_buff *skb);
int hostap_data_start_xmit(struct sk_buff *skb, struct net_device *dev);
int hostap_mgmt_start_xmit(struct sk_buff *skb, struct net_device *dev);
-struct sk_buff * hostap_tx_encrypt(struct sk_buff *skb,
- struct ieee80211_crypt_data *crypt);
int hostap_master_start_xmit(struct sk_buff *skb, struct net_device *dev);
#endif /* HOSTAP_80211_H */
only in patch2:
unchanged:
--- a/drivers/net/wireless/hostap/hostap_80211_tx.c
+++ b/drivers/net/wireless/hostap/hostap_80211_tx.c
@@ -299,8 +299,8 @@ int hostap_mgmt_start_xmit(struct sk_buf
/* Called only from software IRQ */
-struct sk_buff * hostap_tx_encrypt(struct sk_buff *skb,
- struct ieee80211_crypt_data *crypt)
+static struct sk_buff * hostap_tx_encrypt(struct sk_buff *skb,
+ struct ieee80211_crypt_data *crypt)
{
struct hostap_interface *iface;
local_info_t *local;
@@ -317,7 +317,7 @@ struct sk_buff * hostap_tx_encrypt(struc
}
if (local->tkip_countermeasures &&
- crypt && crypt->ops && strcmp(crypt->ops->name, "TKIP") == 0) {
+ strcmp(crypt->ops->name, "TKIP") == 0) {
hdr = (struct ieee80211_hdr_4addr *) skb->data;
if (net_ratelimit()) {
printk(KERN_DEBUG "%s: TKIP countermeasures: dropped "
@@ -469,7 +469,7 @@ int hostap_master_start_xmit(struct sk_b
}
if (local->ieee_802_1x && meta->ethertype == ETH_P_PAE && tx.crypt &&
- !(fc & IEEE80211_FCTL_VERS)) {
+ !(fc & IEEE80211_FCTL_PROTECTED)) {
no_encrypt = 1;
PDEBUG(DEBUG_EXTRA2, "%s: TX: IEEE 802.1X - passing "
"unencrypted EAPOL frame\n", dev->name);
@@ -535,5 +535,4 @@ int hostap_master_start_xmit(struct sk_b
EXPORT_SYMBOL(hostap_dump_tx_80211);
-EXPORT_SYMBOL(hostap_tx_encrypt);
EXPORT_SYMBOL(hostap_master_start_xmit);
only in patch2:
unchanged:
--- a/drivers/usb/net/zd1201.c
+++ b/drivers/usb/net/zd1201.c
@@ -1736,6 +1736,7 @@ static const struct iw_handler_def zd120
.standard = (iw_handler *)zd1201_iw_handler,
.private = (iw_handler *)zd1201_private_handler,
.private_args = (struct iw_priv_args *) zd1201_private_args,
+ .get_wireless_stats = zd1201_get_wireless_stats,
};
static int zd1201_probe(struct usb_interface *interface,
@@ -1796,7 +1797,6 @@ static int zd1201_probe(struct usb_inter
zd->dev->open = zd1201_net_open;
zd->dev->stop = zd1201_net_stop;
zd->dev->get_stats = zd1201_get_stats;
- zd->dev->get_wireless_stats = zd1201_get_wireless_stats;
zd->dev->wireless_handlers =
(struct iw_handler_def *)&zd1201_iw_handlers;
zd->dev->hard_start_xmit = zd1201_hard_start_xmit;
only in patch2:
unchanged:
--- a/net/ieee80211/ieee80211_wx.c
+++ b/net/ieee80211/ieee80211_wx.c
@@ -42,7 +42,7 @@ static const char *ieee80211_modes[] = {
};
#define MAX_CUSTOM_LEN 64
-static char *ipw2100_translate_scan(struct ieee80211_device *ieee,
+static char *ieee80211_translate_scan(struct ieee80211_device *ieee,
char *start, char *stop,
struct ieee80211_network *network)
{
@@ -274,7 +274,7 @@ int ieee80211_wx_get_scan(struct ieee802
if (ieee->scan_age == 0 ||
time_after(network->last_scanned + ieee->scan_age, jiffies))
- ev = ipw2100_translate_scan(ieee, ev, stop, network);
+ ev = ieee80211_translate_scan(ieee, ev, stop, network);
else
IEEE80211_DEBUG_SCAN("Not showing network '%s ("
MAC_FMT ")' due to age (%dms).\n",
only in patch2:
unchanged:
--- a/net/ieee80211/softmac/ieee80211softmac_module.c
+++ b/net/ieee80211/softmac/ieee80211softmac_module.c
@@ -183,16 +183,21 @@ void ieee80211softmac_start(struct net_d
*/
if (mac->txrates_change)
oldrates = mac->txrates;
- if (ieee->modulation & IEEE80211_OFDM_MODULATION) {
- mac->txrates.default_rate = IEEE80211_OFDM_RATE_54MB;
- change |= IEEE80211SOFTMAC_TXRATECHG_DEFAULT;
- mac->txrates.default_fallback = IEEE80211_OFDM_RATE_24MB;
- change |= IEEE80211SOFTMAC_TXRATECHG_DEFAULT_FBACK;
- } else if (ieee->modulation & IEEE80211_CCK_MODULATION) {
+ /* FIXME: We don't correctly handle backing down to lower
+ rates, so 801.11g devices start off at 11M for now. People
+ can manually change it if they really need to, but 11M is
+ more reliable. Note similar logic in
+ ieee80211softmac_wx_set_rate() */
+ if (ieee->modulation & IEEE80211_CCK_MODULATION) {
mac->txrates.default_rate = IEEE80211_CCK_RATE_11MB;
change |= IEEE80211SOFTMAC_TXRATECHG_DEFAULT;
mac->txrates.default_fallback = IEEE80211_CCK_RATE_5MB;
change |= IEEE80211SOFTMAC_TXRATECHG_DEFAULT_FBACK;
+ } else if (ieee->modulation & IEEE80211_OFDM_MODULATION) {
+ mac->txrates.default_rate = IEEE80211_OFDM_RATE_54MB;
+ change |= IEEE80211SOFTMAC_TXRATECHG_DEFAULT;
+ mac->txrates.default_fallback = IEEE80211_OFDM_RATE_24MB;
+ change |= IEEE80211SOFTMAC_TXRATECHG_DEFAULT_FBACK;
} else
assert(0);
if (mac->txrates_change)
only in patch2:
unchanged:
--- a/net/ieee80211/softmac/ieee80211softmac_priv.h
+++ b/net/ieee80211/softmac/ieee80211softmac_priv.h
@@ -167,7 +167,7 @@ static inline int ieee80211softmac_scan_
) || ieee80211softmac_scan_handlers_check_self(sm);
}
-#define IEEE80211SOFTMAC_PROBE_DELAY HZ/2
+#define IEEE80211SOFTMAC_PROBE_DELAY HZ/50
#define IEEE80211SOFTMAC_WORKQUEUE_NAME_LEN (17 + IFNAMSIZ)
struct ieee80211softmac_network {
only in patch2:
unchanged:
--- a/net/ieee80211/softmac/ieee80211softmac_wx.c
+++ b/net/ieee80211/softmac/ieee80211softmac_wx.c
@@ -135,11 +135,15 @@ ieee80211softmac_wx_set_rate(struct net_
int err = -EINVAL;
if (in_rate == -1) {
- /* automatic detect */
- if (ieee->modulation & IEEE80211_OFDM_MODULATION)
- in_rate = 54000000;
- else
+ /* FIXME: We don't correctly handle backing down to lower
+ rates, so 801.11g devices start off at 11M for now. People
+ can manually change it if they really need to, but 11M is
+ more reliable. Note similar logic in
+ ieee80211softmac_wx_set_rate() */
+ if (ieee->modulation & IEEE80211_CCK_MODULATION)
in_rate = 11000000;
+ else
+ in_rate = 54000000;
}
switch (in_rate) {
--
John W. Linville
[EMAIL PROTECTED]
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html