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

Reply via email to