Please pull 'upstream-davem' branch of wireless-2.6
Subsystems (5)
Dave/Herbert,
Here are a few intended for 2.6.25. The bulk of them are the beginnings of support for 802.11n in mac80211. There is also a rework of the support for devices which can run scans in hardware, and a couple of additions to feature-removal-schedule.txt heralding the end of softmac.
Let me know if there are problems!
Thanks,
John
---
Individual patches are available here:
http://www.kernel.org/pub/linux/kernel/people/linville/wireless-2.6/upstream-davem/
---
The following changes since commit 3b0c5b8640d12a566cb77f24162dce9bf5988263:
Arnaldo Carvalho de Melo (1):
[TFRC]: Hide tx history details from the CCIDs
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6.git upstream-davem
Johannes Berg (2):
mac80211: make ieee80211_iterate_active_interfaces not need rtnl
mac80211: allow setting drop_unencrypted with wext
John W. Linville (3):
mac80211: remove "bcn_int" and "capab" scan results info
bcm43xx: mark as obsolete and schedule for removal
softmac: mark as obsolete and schedule for removal
Ron Rindjunsky (8):
mac80211: restructuring data Rx handlers
mac80211: adding MAC80211_HT_DEBUG config variable
mac80211: adding 802.11n HT framework definitions
mac80211: adding 802.11n IEs handling
mac80211: adding 802.11n essential A-MPDU addBA capability
mac80211: adding 802.11n essential A-MSDU Rx capability
mac80211: adding 802.11n configuration flows
mac80211: move A-MSDU identifier to flags
Zhu Yi (1):
mac80211: hardware scan rework
Documentation/feature-removal-schedule.txt | 17 ++ MAINTAINERS | 2 +- drivers/net/wireless/bcm43xx/Kconfig | 9 +- include/net/mac80211.h | 62 +++++- net/ieee80211/Kconfig | 5 +- net/mac80211/Kconfig | 10 + net/mac80211/ieee80211.c | 64 +++++- net/mac80211/ieee80211_i.h | 20 ++- net/mac80211/ieee80211_ioctl.c | 9 +- net/mac80211/ieee80211_sta.c | 336 ++++++++++++++++++++++++---- net/mac80211/rx.c | 260 +++++++++++++++++---- net/mac80211/sta_info.h | 3 + net/mac80211/tx.c | 14 +- net/mac80211/util.c | 21 +-- 14 files changed, 686 insertions(+), 146 deletions(-)
Documentation/feature-removal-schedule.txt +17 -0
@@ -333,3 +333,20 @@ Why: This driver has been marked obsolete for many years. Who: Stephen Hemminger <shemminger-de/[email protected]> --------------------------- + +What: bcm43xx wireless network driver +When: 2.6.26 +Files: drivers/net/wireless/bcm43xx +Why: This driver's functionality has been replaced by the + mac80211-based b43 and b43legacy drivers. +Who: John W. Linville <[email protected]> + +--------------------------- + +What: iee80211 softmac wireless networking component +When: 2.6.26 (or after removal of bcm43xx and port of zd1211rw to mac80211) +Files: net/ieee80211/softmac +Why: No in-kernel drivers will depend on it any longer. +Who: John W. Linville <[email protected]> + +---------------------------
MAINTAINERS +1 -1
@@ -808,7 +808,7 @@ P: Stefano Brivio M: stefano.brivio-hl5o88x/[email protected] L: [email protected] W: http://bcm43xx.berlios.de/ -S: Maintained +S: Obsolete BEFS FILE SYSTEM P: Sergey S. Kostyliov
drivers/net/wireless/bcm43xx/Kconfig +6 -3
@@ -1,12 +1,15 @@ config BCM43XX - tristate "Broadcom BCM43xx wireless support" + tristate "Broadcom BCM43xx wireless support (DEPRECATED)" depends on PCI && IEEE80211 && IEEE80211_SOFTMAC && WLAN_80211 && EXPERIMENTAL select WIRELESS_EXT select FW_LOADER select HW_RANDOM ---help--- - This is an experimental driver for the Broadcom 43xx wireless chip, - found in the Apple Airport Extreme and various other devices. + This is an experimental driver for the Broadcom 43xx wireless + chip, found in the Apple Airport Extreme and various other + devices. This driver is deprecated and will be removed + from the kernel in the near future. It has been replaced + by the b43 and b43legacy drivers. config BCM43XX_DEBUG bool "Broadcom BCM43xx debugging (RECOMMENDED)"
include/net/mac80211.h +54 -8
122 lines not on this page · raw message
net/ieee80211/Kconfig +3 -2
@@ -1,8 +1,9 @@ config IEEE80211 - tristate "Generic IEEE 802.11 Networking Stack" + tristate "Generic IEEE 802.11 Networking Stack (DEPRECATED)" ---help--- This option enables the hardware independent IEEE 802.11 - networking stack. + networking stack. This component is deprecated in favor of the + mac80211 component. config IEEE80211_DEBUG bool "Enable full debugging output"
net/mac80211/Kconfig +10 -0
@@ -51,6 +51,16 @@ config MAC80211_DEBUG If you are not trying to debug or develop the ieee80211 subsystem, you most likely want to say N here. +config MAC80211_HT_DEBUG + bool "Enable HT debugging output" + depends on MAC80211_DEBUG + ---help--- + This option enables 802.11n High Throughput features + debug tracing output. + + If you are not trying to debug of develop the ieee80211 + subsystem, you most likely want to say N here. + config MAC80211_VERBOSE_DEBUG bool "Verbose debugging output" depends on MAC80211_DEBUG
net/mac80211/ieee80211.c +59 -5
89 lines not on this page · raw message
net/mac80211/ieee80211_i.h +16 -4
@@ -89,6 +89,8 @@ struct ieee80211_sta_bss {size_t rsn_ie_len;u8 *wmm_ie;size_t wmm_ie_len; +u8 *ht_ie; +size_t ht_ie_len;#define IEEE80211_MAX_SUPP_RATES 32u8 supp_rates[IEEE80211_MAX_SUPP_RATES ];size_t supp_rates_len;
@@ -121,6 +123,7 @@ typedef enum {/* frame is destined to interface currently processed (incl. multicast frames) */ #define IEEE80211_TXRXD_RXRA_MATCH BIT(5)#define IEEE80211_TXRXD_TX_INJECTED BIT(6) +#define IEEE80211_TXRXD_RX_AMSDU BIT(7)struct ieee80211_txrx_data {struct sk_buff *skb;struct net_device *dev;
@@ -470,7 +473,8 @@ struct ieee80211_local {struct list_head interfaces; -int sta_scanning; +bool sta_sw_scanning; +bool sta_hw_scanning;int scan_channel_idx;enum {SCAN_SET_CHANNEL ,SCAN_SEND_PROBE } scan_state;unsigned long last_scan_completed;
@@ -704,6 +708,9 @@ int ieee80211_if_update_wds(struct net_device *dev, u8 *remote_addr);void ieee80211_if_setup (struct net_device *dev);struct ieee80211_rate *ieee80211_get_rate (struct ieee80211_local *local,int phymode,int hwrate); +int ieee80211_hw_config_ht (struct ieee80211_local *local,int enable_ht, +struct ieee80211_ht_info *req_ht_cap, +struct ieee80211_ht_bss_info *req_bss_cap);/* ieee80211_ioctl.c */ extern const struct iw_handler_def ieee80211_iw_handler_def;
@@ -745,7 +752,8 @@ int ieee80211_sta_req_scan(struct net_device *dev, u8 *ssid, size_t ssid_len);void ieee80211_sta_req_auth (struct net_device *dev,struct ieee80211_if_sta *ifsta);int ieee80211_sta_scan_results (struct net_device *dev,char *buf,size_t len); -void ieee80211_sta_rx_scan (struct net_device *dev,struct sk_buff *skb, +ieee80211_txrx_result ieee80211_sta_rx_scan (struct net_device *dev, +struct sk_buff *skb,struct ieee80211_rx_status *rx_status);void ieee80211_rx_bss_list_init (struct net_device *dev);void ieee80211_rx_bss_list_deinit (struct net_device *dev);
@@ -757,7 +765,11 @@ int ieee80211_sta_deauthenticate(struct net_device *dev, u16 reason);int ieee80211_sta_disassociate (struct net_device *dev,u16 reason);void ieee80211_erp_info_change_notify (struct net_device *dev,u8 changes);void ieee80211_reset_erp_info (struct net_device *dev); - +int ieee80211_ht_cap_ie_to_ht_info (struct ieee80211_ht_cap *ht_cap_ie, +struct ieee80211_ht_info *ht_info); +int ieee80211_ht_addt_info_ie_to_ht_bss_info ( +struct ieee80211_ht_addt_info *ht_add_info_ie, +struct ieee80211_ht_bss_info *bss_info);/* ieee80211_iface.c */ int ieee80211_if_add (struct net_device *dev,const char *name,struct net_device **new_dev,int type);
@@ -790,7 +802,7 @@ extern void *mac80211_wiphy_privid; /* for wiphy privid */extern const unsigned char rfc1042_header[6 ];extern const unsigned char bridge_tunnel_header[6 ];u8 *ieee80211_get_bssid (struct ieee80211_hdr *hdr,size_t len); -int ieee80211_is_eapol (const struct sk_buff *skb); +int ieee80211_is_eapol (const struct sk_buff *skb,int hdrlen);int ieee80211_frame_duration (struct ieee80211_local *local,size_t len,int rate,int erp,int short_preamble); void mac80211_ev_michael_mic_failure(struct net_device *dev, int keyidx,
net/mac80211/ieee80211_ioctl.c +7 -2
@@ -315,7 +315,7 @@ int ieee80211_set_channel(struct ieee80211_local *local, int channel, int freq) }if (set) { -if (local->sta_scanning) +if (local->sta_sw_scanning) ret =0 ;else ret =ieee80211_hw_config (local);
@@ -545,8 +545,10 @@ static int ieee80211_ioctl_giwscan(struct net_device *dev, {int res;struct ieee80211_local *local =wdev_priv (dev->ieee80211_ptr); -if (local->sta_scanning) + +if (local->sta_sw_scanning || local->sta_hw_scanning)return -EAGAIN ; + res =ieee80211_sta_scan_results (dev, extra, data->length);if (res >=0 ) { data->length = res;
@@ -928,6 +930,9 @@ static int ieee80211_ioctl_siwauth(struct net_device *dev,case IW_AUTH_RX_UNENCRYPTED_EAPOL :case IW_AUTH_KEY_MGMT :break ; +case IW_AUTH_DROP_UNENCRYPTED : + sdata->drop_unencrypted = !!data->value; +break ;case IW_AUTH_PRIVACY_INVOKED :if (sdata->type !=IEEE80211_IF_TYPE_STA ) ret = -EINVAL ;
net/mac80211/ieee80211_sta.c +287 -49
523 lines not on this page · raw message
net/mac80211/rx.c +210 -50
400 lines not on this page · raw message
net/mac80211/sta_info.h +3 -0
@@ -99,6 +99,9 @@ struct sta_info {u16 listen_interval; +struct ieee80211_ht_info ht_info;/* 802.11n HT capabilities +of this STA */ + #ifdef CONFIG_MAC80211_DEBUGFS struct sta_info_debugfsdentries { struct dentry *dir;
net/mac80211/tx.c +8 -6
@@ -225,7 +225,7 @@ ieee80211_tx_h_check_assoc(struct ieee80211_txrx_data *tx)if (unlikely (tx->flags &IEEE80211_TXRXD_TX_INJECTED ))return TXRX_CONTINUE ; -if (unlikely (tx->local->sta_scanning !=0 ) && +if (unlikely (tx->local->sta_sw_scanning) && ((tx->fc &IEEE80211_FCTL_FTYPE ) !=IEEE80211_FTYPE_MGMT || (tx->fc &IEEE80211_FCTL_STYPE ) !=IEEE80211_STYPE_PROBE_REQ ))return TXRX_DROP ;
@@ -420,7 +420,6 @@ ieee80211_tx_h_unicast_ps_buf(struct ieee80211_txrx_data *tx)return TXRX_CONTINUE ; } -static ieee80211_txrx_result ieee80211_tx_h_ps_buf (struct ieee80211_txrx_data *tx) {
@@ -433,13 +432,15 @@ ieee80211_tx_h_ps_buf(struct ieee80211_txrx_data *tx)return ieee80211_tx_h_multicast_ps_buf (tx); } - - -static ieee80211_txrx_result ieee80211_tx_h_select_key (struct ieee80211_txrx_data *tx) {struct ieee80211_key *key; +const struct ieee80211_hdr *hdr; +u16 fc; + + hdr = (const struct ieee80211_hdr *) tx->skb->data; + fc =le16_to_cpu (hdr->frame_control);if (unlikely (tx->u.tx.control->flags &IEEE80211_TXCTL_DO_NOT_ENCRYPT )) tx->key =NULL ;
@@ -448,7 +449,8 @@ ieee80211_tx_h_select_key(struct ieee80211_txrx_data *tx)else if ((key =rcu_dereference (tx->sdata->default_key))) tx->key = key;else if (tx->sdata->drop_unencrypted && - !(tx->sdata->eapol &&ieee80211_is_eapol (tx->skb))) { + !(tx->sdata->eapol && +ieee80211_is_eapol (tx->skb,ieee80211_get_hdrlen (fc)))) {I802_DEBUG_INC (tx->local->tx_handlers_drop_unencrypted);return TXRX_DROP ; }else {
net/mac80211/util.c +5 -16
@@ -218,23 +218,11 @@ int ieee80211_get_hdrlen_from_skb(const struct sk_buff *skb) }EXPORT_SYMBOL (ieee80211_get_hdrlen_from_skb); -int ieee80211_is_eapol (const struct sk_buff *skb) +int ieee80211_is_eapol (const struct sk_buff *skb,int hdrlen) { -const struct ieee80211_hdr *hdr; -u16 fc; -int hdrlen; -if (unlikely (skb->len <10 ))return 0 ; - hdr = (const struct ieee80211_hdr *) skb->data; - fc =le16_to_cpu (hdr->frame_control); - -if (unlikely (!WLAN_FC_DATA_PRESENT (fc))) -return 0 ; - - hdrlen =ieee80211_get_hdrlen (fc); -if (unlikely (skb->len >= hdrlen +sizeof (eapol_header) &&memcmp (skb->data + hdrlen, eapol_header,sizeof (eapol_header)) ==0 ))
@@ -494,10 +482,9 @@ void ieee80211_iterate_active_interfaces(struct ieee80211_hw *hw,struct ieee80211_local *local =hw_to_local (hw);struct ieee80211_sub_if_data *sdata; -ASSERT_RTNL (); +rcu_read_lock (); -/* we hold the RTNL here so can safely walk the list */ -list_for_each_entry (sdata, &local->interfaces, list) { +list_for_each_entry_rcu (sdata, &local->interfaces, list) {switch (sdata->type) {case IEEE80211_IF_TYPE_INVALID :case IEEE80211_IF_TYPE_MNTR :
@@ -515,5 +502,7 @@ void ieee80211_iterate_active_interfaces(struct ieee80211_hw *hw,iterator (data, sdata->dev->dev_addr, sdata->dev->ifindex); } + +rcu_read_unlock (); }EXPORT_SYMBOL_GPL (ieee80211_iterate_active_interfaces);
Signature · 2 lines
John W. Linville [email protected]
A message that is not in the archive (sent off-list or not yet received): [email protected]
Quoted 6 lines · John W. Linville
Dave/Herbert,
Here are a few intended for 2.6.25. The bulk of them are the beginnings of support for 802.11n in mac80211. There is also a rework of the support for devices which can run scans in hardware, and a couple of additions to feature-removal-schedule.txt heralding the end of softmac.
All applied to net-2.6.25. Thanks John!
Signature · 4 lines
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} <[email protected]>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt