diff options
author | Felix Fietkau <nbd@openwrt.org> | 2012-09-27 11:12:13 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2012-09-27 11:12:13 +0000 |
commit | a1c5adc11642f7075f4f5ad83a967d8b424b8020 (patch) | |
tree | b05bf4a72857f4a0ab2b1ecbe75e6b8b0f9c69e6 /package/mac80211 | |
parent | e3bcbeb4277ad59a7c11f14e84aa5cb503c81543 (diff) | |
download | upstream-a1c5adc11642f7075f4f5ad83a967d8b424b8020.tar.gz upstream-a1c5adc11642f7075f4f5ad83a967d8b424b8020.tar.bz2 upstream-a1c5adc11642f7075f4f5ad83a967d8b424b8020.zip |
ath5k: add a spur mitigation fix
SVN-Revision: 33572
Diffstat (limited to 'package/mac80211')
-rw-r--r-- | package/mac80211/patches/300-pending_work.patch | 34 |
1 files changed, 25 insertions, 9 deletions
diff --git a/package/mac80211/patches/300-pending_work.patch b/package/mac80211/patches/300-pending_work.patch index 219144c0b9..e4544938f5 100644 --- a/package/mac80211/patches/300-pending_work.patch +++ b/package/mac80211/patches/300-pending_work.patch @@ -180,7 +180,7 @@ static void ieee80211_iface_work(struct work_struct *work) { struct ieee80211_sub_if_data *sdata = -@@ -1101,6 +1144,9 @@ static void ieee80211_iface_work(struct +@@ -1101,6 +1144,9 @@ static void ieee80211_iface_work(struct break; ieee80211_mesh_rx_queued_mgmt(sdata, skb); break; @@ -281,13 +281,6 @@ + list_for_each_entry_rcu(sdata, &local->interfaces, list) { + if (!sdata->dev) + continue; -+ -+ if (skb->dev != sdata->dev) -+ continue; -+ -+ found = true; -+ break; -+ } - p2p_sdata = rcu_dereference(local->p2p_sdata); - if (p2p_sdata) { @@ -296,11 +289,18 @@ - skb->len, acked, GFP_ATOMIC); - } - rcu_read_unlock(); ++ if (skb->dev != sdata->dev) ++ continue; ++ ++ found = true; ++ break; + } ++ + if (!skb->dev) { + sdata = rcu_dereference(local->p2p_sdata); + if (sdata) + found = true; - } ++ } + + if (!found) + skb->dev = NULL; @@ -406,3 +406,19 @@ ret = sta_info_hash_del(local, sta); if (ret) +--- a/drivers/net/wireless/ath/ath5k/phy.c ++++ b/drivers/net/wireless/ath/ath5k/phy.c +@@ -1977,11 +1977,13 @@ ath5k_hw_set_spur_mitigation_filter(stru + spur_delta_phase = (spur_offset << 18) / 25; + spur_freq_sigma_delta = (spur_delta_phase >> 10); + symbol_width = AR5K_SPUR_SYMBOL_WIDTH_BASE_100Hz / 2; ++ break; + case AR5K_BWMODE_5MHZ: + /* Both sample_freq and chip_freq are 10MHz (?) */ + spur_delta_phase = (spur_offset << 19) / 25; + spur_freq_sigma_delta = (spur_delta_phase >> 10); + symbol_width = AR5K_SPUR_SYMBOL_WIDTH_BASE_100Hz / 4; ++ break; + default: + if (channel->band == IEEE80211_BAND_5GHZ) { + /* Both sample_freq and chip_freq are 40MHz */ |