pull request: wireless 2013-10-03
Subsystems (6)
Dave,
Here is another batch of fixes intended for the 3.12 stream...
For the mac80211 bits, Johannes says:
"This time I have two fixes for IBSS (including one for wext, hah), a fix for extended rates IEs, an active monitor checking fix and a sysfs registration race fix."
On top of those...
Amitkumar Karwar brings an mwifiex fix for an interrupt loss issue w/ SDIO devices. The problem was due to a command timeout issue introduced by an earlier patch.
Felix Fietkau a stall in the ath9k driver. This patch fixes the regression introduced in the commit "ath9k: use software queues for un-aggregated data packets".
Stanislaw Gruszka reverts an rt2x00 patch that was found to cause connection problems with some devices.
Please let me know if there are problems!
John
---
The following changes since commit 569943d0639c85a451ea853087cbd5f738247dd9:
Merge branch 'mv643xx' (2013-10-02 17:11:50 -0400)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless.git for-davem
for you to fetch changes up to 1eea72f03a139146f341e450cf56934b2e01a4d3:
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless into for-davem (2013-10-03 16:00:03 -0400)
----------------------------------------------------------------
Amitkumar Karwar (1):
mwifiex: fix SDIO interrupt lost issue
Bruno Randolf (1):
cfg80211: fix warning when using WEXT for IBSS
Chun-Yeow Yeoh (1):
mac80211: fix the setting of extended supported rate IE
Felix Fietkau (2):
mac80211: drop spoofed packets in ad-hoc mode
ath9k: fix powersave response handling for BA session packets
Johannes Berg (1):
cfg80211: fix sysfs registration race
John W. Linville (2):
Merge branch 'for-john' of git://git.kernel.org/.../jberg/mac80211
Merge branch 'master' of git://git.kernel.org/.../linville/wireless into for-davem
Luciano Coelho (1):
cfg80211: use the correct macro to check for active monitor support
Stanislaw Gruszka (1):
Revert "rt2x00pci: Use PCI MSIs whenever possible"
drivers/net/wireless/ath/ath9k/xmit.c | 9 ++++++--- drivers/net/wireless/mwifiex/main.c | 6 ++++-- drivers/net/wireless/rt2x00/rt2x00pci.c | 9 +-------- net/mac80211/rx.c | 3 +++ net/mac80211/util.c | 5 +---- net/wireless/core.c | 21 +++++++++++++-------- net/wireless/ibss.c | 3 +++ net/wireless/nl80211.c | 4 ++-- 8 files changed, 33 insertions(+), 27 deletions(-)
drivers/net/wireless/ath/ath9k/xmit.c +6 -3
@@ -1969,15 +1969,18 @@ static void ath_tx_txqaddbuf(struct ath_softc *sc, struct ath_txq *txq,static void ath_tx_send_normal (struct ath_softc *sc,struct ath_txq *txq,struct ath_atx_tid *tid,struct sk_buff *skb) { +struct ieee80211_tx_info *tx_info =IEEE80211_SKB_CB (skb);struct ath_frame_info *fi =get_frame_info (skb);struct list_head bf_head; -struct ath_buf *bf; - - bf = fi->bf; +struct ath_buf *bf = fi->bf;INIT_LIST_HEAD (&bf_head);list_add_tail (&bf->list, &bf_head); bf->bf_state.bf_type =0 ; +if (tid && (tx_info->flags &IEEE80211_TX_CTL_AMPDU )) { + bf->bf_state.bf_type =BUF_AMPDU ; +ath_tx_addto_baw (sc, tid, bf); + } bf->bf_next =NULL ; bf->bf_lastbf = bf;
drivers/net/wireless/mwifiex/main.c +4 -2
@@ -358,10 +358,12 @@ process_start: } }while (true); -if ((adapter->int_status) ||IS_CARD_RX_RCVD (adapter)) +spin_lock_irqsave (&adapter->main_proc_lock, flags); +if ((adapter->int_status) ||IS_CARD_RX_RCVD (adapter)) { +spin_unlock_irqrestore (&adapter->main_proc_lock, flags); goto process_start; + } -spin_lock_irqsave (&adapter->main_proc_lock, flags); adapter->mwifiex_processing = false;spin_unlock_irqrestore (&adapter->main_proc_lock, flags);
drivers/net/wireless/rt2x00/rt2x00pci.c +1 -8
@@ -105,13 +105,11 @@ int rt2x00pci_probe(struct pci_dev *pci_dev, const struct rt2x00_ops *ops) goto exit_release_regions; } -pci_enable_msi (pci_dev); - hw =ieee80211_alloc_hw (sizeof (struct rt2x00_dev ), ops->hw);if (!hw) {rt2x00_probe_err ("Failed to allocate hardware\n" ); retval = -ENOMEM ; - goto exit_disable_msi; + goto exit_release_regions; }pci_set_drvdata (pci_dev, hw);
@@ -152,9 +150,6 @@ exit_free_reg: exit_free_device:ieee80211_free_hw (hw); -exit_disable_msi: -pci_disable_msi (pci_dev); - exit_release_regions:pci_release_regions (pci_dev);
@@ -179,8 +174,6 @@ void rt2x00pci_remove(struct pci_dev *pci_dev)rt2x00pci_free_reg (rt2x00dev);ieee80211_free_hw (hw); -pci_disable_msi (pci_dev); -/* * Free the PCI device data. */
net/mac80211/rx.c +3 -0
@@ -3056,6 +3056,9 @@ static int prepare_for_handlers(struct ieee80211_rx_data *rx,case NL80211_IFTYPE_ADHOC :if (!bssid)return 0 ; +if (ether_addr_equal (sdata->vif.addr, hdr->addr2) || +ether_addr_equal (sdata->u.ibss.bssid, hdr->addr2)) +return 0 ;if (ieee80211_is_beacon (hdr->frame_control)) {return 1 ; }else if (!ieee80211_bssid_match (bssid, sdata->u.ibss.bssid)) {
net/mac80211/util.c +1 -4
@@ -2103,7 +2103,7 @@ int ieee80211_add_ext_srates_ie(struct ieee80211_sub_if_data *sdata, {struct ieee80211_local *local = sdata->local;struct ieee80211_supported_band *sband; -int rate, skip, shift; +int rate, shift;u8 i, exrates, *pos;u32 basic_rates = sdata->vif.bss_conf.basic_rates;u32 rate_flags;
@@ -2131,14 +2131,11 @@ int ieee80211_add_ext_srates_ie(struct ieee80211_sub_if_data *sdata, pos =skb_put (skb, exrates +2 ); *pos++ =WLAN_EID_EXT_SUPP_RATES ; *pos++ = exrates; - skip =0 ;for (i =8 ; i < sband->n_bitrates; i++) {u8 basic =0 ;if ((rate_flags & sband->bitrates[i].flags) != rate_flags)continue ; -if (skip++ <8 ) -continue ;if (need_basic && basic_rates &BIT (i)) basic =0x80 ; rate = DIV_ROUND_UP(sband->bitrates[i].bitrate,
net/wireless/core.c +13 -8
@@ -566,18 +566,13 @@ int wiphy_register(struct wiphy *wiphy)/* check and set up bitrates */ ieee80211_set_bitrate_flags (wiphy); - +rtnl_lock (); res =device_add (&rdev->wiphy.dev); -if (res) -return res; - - res =rfkill_register (rdev->rfkill);if (res) { -device_del (&rdev->wiphy.dev); +rtnl_unlock ();return res; } -rtnl_lock ();/* set up regulatory info */ wiphy_regulatory_register (wiphy);
@@ -606,6 +601,15 @@ int wiphy_register(struct wiphy *wiphy) rdev->wiphy.registered = true;rtnl_unlock (); + + res =rfkill_register (rdev->rfkill); +if (res) { +rfkill_destroy (rdev->rfkill); + rdev->rfkill =NULL ; +wiphy_unregister (&rdev->wiphy); +return res; + } +return 0 ; }EXPORT_SYMBOL (wiphy_register);
@@ -640,7 +644,8 @@ void wiphy_unregister(struct wiphy *wiphy)rtnl_unlock (); __count == 0; })); -rfkill_unregister (rdev->rfkill); +if (rdev->rfkill) +rfkill_unregister (rdev->rfkill);rtnl_lock (); rdev->wiphy.registered = false;
net/wireless/ibss.c +3 -0
@@ -263,6 +263,8 @@ int cfg80211_ibss_wext_join(struct cfg80211_registered_device *rdev,if (chan->flags &IEEE80211_CHAN_DISABLED )continue ; wdev->wext.ibss.chandef.chan = chan; + wdev->wext.ibss.chandef.center_freq1 = + chan->center_freq;break ; }
@@ -347,6 +349,7 @@ int cfg80211_ibss_wext_siwfreq(struct net_device *dev,if (chan) { wdev->wext.ibss.chandef.chan = chan; wdev->wext.ibss.chandef.width =NL80211_CHAN_WIDTH_20_NOHT ; + wdev->wext.ibss.chandef.center_freq1 = freq; wdev->wext.ibss.channel_fixed = true; }else {/* cfg80211_ibss_wext_join will pick one if needed */
net/wireless/nl80211.c +2 -2
@@ -2421,7 +2421,7 @@ static int nl80211_set_interface(struct sk_buff *skb, struct genl_info *info) change = true; } -if (flags && (*flags &NL80211_MNTR_FLAG_ACTIVE ) && +if (flags && (*flags &MONITOR_FLAG_ACTIVE ) && !(rdev->wiphy.features &NL80211_FEATURE_ACTIVE_MONITOR ))return -EOPNOTSUPP ;
@@ -2483,7 +2483,7 @@ static int nl80211_new_interface(struct sk_buff *skb, struct genl_info *info) info->attrs[NL80211_ATTR_MNTR_FLAGS] : NULL, &flags); -if (!err && (flags &NL80211_MNTR_FLAG_ACTIVE ) && +if (!err && (flags &MONITOR_FLAG_ACTIVE ) && !(rdev->wiphy.features &NL80211_FEATURE_ACTIVE_MONITOR ))return -EOPNOTSUPP ;
Signature · 2 lines
John W. Linville Someday the world will need a hero, and you [email protected] might be all we have. Be ready.
David Miller
maintainerFrom: "John W. Linville" <[email protected]>
Date: Thu, 3 Oct 2013 16:10:24 -0400
Quoted 14 lines
Here is another batch of fixes intended for the 3.12 stream...
For the mac80211 bits, Johannes says:
"This time I have two fixes for IBSS (including one for wext, hah), a fix for extended rates IEs, an active monitor checking fix and a sysfs registration race fix."
On top of those...
Amitkumar Karwar brings an mwifiex fix for an interrupt loss issue w/ SDIO devices. The problem was due to a command timeout issue introduced by an earlier patch.
Quoted 8 lines
Felix Fietkau a stall in the ath9k driver. This patch fixes the regression introduced in the commit "ath9k: use software queues for un-aggregated data packets".
Stanislaw Gruszka reverts an rt2x00 patch that was found to cause connection problems with some devices.
Please let me know if there are problems!
Pulled, thanks John.