mac80211: another fix for monitor mode handling (fixes #13071)
SVN-Revision: 35846
This commit is contained in:
		@@ -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;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user