diff options
-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 219144c..e454493 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 */ |