diff options
author | Felix Fietkau <nbd@openwrt.org> | 2013-03-02 18:07:02 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2013-03-02 18:07:02 +0000 |
commit | df3d2b0a3c195aa94bc98ab6f77b470b8c6ea797 (patch) | |
tree | 655b27978422fc64d0e582e40cd1576f81ef971e /package | |
parent | 4de2e16d3f1fc0a65b1e480bc3bd8e7d3dbbd3f4 (diff) | |
download | master-187ad058-df3d2b0a3c195aa94bc98ab6f77b470b8c6ea797.tar.gz master-187ad058-df3d2b0a3c195aa94bc98ab6f77b470b8c6ea797.tar.bz2 master-187ad058-df3d2b0a3c195aa94bc98ab6f77b470b8c6ea797.zip |
mac80211: another fix for monitor mode handling (fixes #13071)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@35846 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package')
-rw-r--r-- | package/mac80211/patches/300-pending_work.patch | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/package/mac80211/patches/300-pending_work.patch b/package/mac80211/patches/300-pending_work.patch index 508a674c5a..2d46059c35 100644 --- a/package/mac80211/patches/300-pending_work.patch +++ b/package/mac80211/patches/300-pending_work.patch @@ -175,7 +175,17 @@ u32 changed = 0; int res; u32 hw_reconf_flags = 0; -@@ -595,30 +594,8 @@ int ieee80211_do_open(struct wireless_de +@@ -541,6 +540,9 @@ int ieee80211_do_open(struct wireless_de + + ieee80211_adjust_monitor_flags(sdata, 1); + ieee80211_configure_filter(local); ++ mutex_lock(&local->mtx); ++ ieee80211_recalc_idle(local); ++ mutex_unlock(&local->mtx); + + netif_carrier_on(dev); + break; +@@ -595,30 +597,8 @@ int ieee80211_do_open(struct wireless_de set_bit(SDATA_STATE_RUNNING, &sdata->state); @@ -207,7 +217,17 @@ /* * set_multicast_list will be invoked by the networking core -@@ -1022,6 +999,72 @@ static void ieee80211_if_setup(struct ne +@@ -817,6 +797,9 @@ static void ieee80211_do_stop(struct iee + + ieee80211_adjust_monitor_flags(sdata, -1); + ieee80211_configure_filter(local); ++ mutex_lock(&local->mtx); ++ ieee80211_recalc_idle(local); ++ mutex_unlock(&local->mtx); + break; + case NL80211_IFTYPE_P2P_DEVICE: + /* relies on synchronize_rcu() below */ +@@ -1022,6 +1005,72 @@ static void ieee80211_if_setup(struct ne dev->destructor = free_netdev; } @@ -280,7 +300,7 @@ static void ieee80211_iface_work(struct work_struct *work) { struct ieee80211_sub_if_data *sdata = -@@ -1126,6 +1169,9 @@ static void ieee80211_iface_work(struct +@@ -1126,6 +1175,9 @@ static void ieee80211_iface_work(struct break; ieee80211_mesh_rx_queued_mgmt(sdata, skb); break; |