All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 01/10] mac80211: don't reconfigure sched scan in case of wowlan
@ 2015-10-25  8:59 Emmanuel Grumbach
  2015-10-25  8:59 ` [PATCH 02/10] mac80211: TDLS: add proper HT-oper IE Emmanuel Grumbach
                   ` (9 more replies)
  0 siblings, 10 replies; 19+ messages in thread
From: Emmanuel Grumbach @ 2015-10-25  8:59 UTC (permalink / raw)
  To: johannes; +Cc: linux-wireless, Eliad Peller, Eliad Peller, Emmanuel Grumbach

From: Eliad Peller <eliad@wizery.com>

Scheduled scan has to be reconfigured only if wowlan wasn't
configured, since otherwise it should continue to run (with
the 'any' trigger) or be aborted.

The current code will end up asking the driver to start a new
scheduled scan without stopping the previous one, and leaking
some memory (from the previous request.)

Fix this by doing the abort/restart under the proper conditions.

Signed-off-by: Eliad Peller <eliadx.peller@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
---
 net/mac80211/cfg.c         |  6 +++---
 net/mac80211/ieee80211_i.h |  2 +-
 net/mac80211/pm.c          | 11 +++++++++++
 net/mac80211/scan.c        | 12 +++++++-----
 net/mac80211/util.c        | 49 ++++++++++++++++++++++------------------------
 5 files changed, 45 insertions(+), 35 deletions(-)

diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c
index 713cdbf..c2bd1b6 100644
--- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c
@@ -2010,12 +2010,12 @@ ieee80211_sched_scan_start(struct wiphy *wiphy,
 static int
 ieee80211_sched_scan_stop(struct wiphy *wiphy, struct net_device *dev)
 {
-	struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
+	struct ieee80211_local *local = wiphy_priv(wiphy);
 
-	if (!sdata->local->ops->sched_scan_stop)
+	if (!local->ops->sched_scan_stop)
 		return -EOPNOTSUPP;
 
-	return ieee80211_request_sched_scan_stop(sdata);
+	return ieee80211_request_sched_scan_stop(local);
 }
 
 static int ieee80211_auth(struct wiphy *wiphy, struct net_device *dev,
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
index 62f2a97..68680ad 100644
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
@@ -1573,7 +1573,7 @@ __ieee80211_request_sched_scan_start(struct ieee80211_sub_if_data *sdata,
 				     struct cfg80211_sched_scan_request *req);
 int ieee80211_request_sched_scan_start(struct ieee80211_sub_if_data *sdata,
 				       struct cfg80211_sched_scan_request *req);
-int ieee80211_request_sched_scan_stop(struct ieee80211_sub_if_data *sdata);
+int ieee80211_request_sched_scan_stop(struct ieee80211_local *local);
 void ieee80211_sched_scan_end(struct ieee80211_local *local);
 void ieee80211_sched_scan_stopped_work(struct work_struct *work);
 
diff --git a/net/mac80211/pm.c b/net/mac80211/pm.c
index ad88ad4..00a43a7 100644
--- a/net/mac80211/pm.c
+++ b/net/mac80211/pm.c
@@ -6,6 +6,13 @@
 #include "driver-ops.h"
 #include "led.h"
 
+static void ieee80211_sched_scan_cancel(struct ieee80211_local *local)
+{
+	if (ieee80211_request_sched_scan_stop(local))
+		return;
+	cfg80211_sched_scan_stopped_rtnl(local->hw.wiphy);
+}
+
 int __ieee80211_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan)
 {
 	struct ieee80211_local *local = hw_to_local(hw);
@@ -34,6 +41,10 @@ int __ieee80211_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan)
 		mutex_unlock(&local->sta_mtx);
 	}
 
+	/* keep sched_scan only in case of 'any' trigger */
+	if (!(wowlan && wowlan->any))
+		ieee80211_sched_scan_cancel(local);
+
 	ieee80211_stop_queues_by_reason(hw,
 					IEEE80211_MAX_QUEUE_MAP,
 					IEEE80211_QUEUE_STOP_REASON_SUSPEND,
diff --git a/net/mac80211/scan.c b/net/mac80211/scan.c
index b64fd2b..4aeca4b 100644
--- a/net/mac80211/scan.c
+++ b/net/mac80211/scan.c
@@ -1140,10 +1140,10 @@ int ieee80211_request_sched_scan_start(struct ieee80211_sub_if_data *sdata,
 	return ret;
 }
 
-int ieee80211_request_sched_scan_stop(struct ieee80211_sub_if_data *sdata)
+int ieee80211_request_sched_scan_stop(struct ieee80211_local *local)
 {
-	struct ieee80211_local *local = sdata->local;
-	int ret = 0;
+	struct ieee80211_sub_if_data *sched_scan_sdata;
+	int ret = -ENOENT;
 
 	mutex_lock(&local->mtx);
 
@@ -1155,8 +1155,10 @@ int ieee80211_request_sched_scan_stop(struct ieee80211_sub_if_data *sdata)
 	/* We don't want to restart sched scan anymore. */
 	RCU_INIT_POINTER(local->sched_scan_req, NULL);
 
-	if (rcu_access_pointer(local->sched_scan_sdata)) {
-		ret = drv_sched_scan_stop(local, sdata);
+	sched_scan_sdata = rcu_dereference_protected(local->sched_scan_sdata,
+						lockdep_is_held(&local->mtx));
+	if (sched_scan_sdata) {
+		ret = drv_sched_scan_stop(local, sched_scan_sdata);
 		if (!ret)
 			RCU_INIT_POINTER(local->sched_scan_sdata, NULL);
 	}
diff --git a/net/mac80211/util.c b/net/mac80211/util.c
index 8274c86..13b07ed 100644
--- a/net/mac80211/util.c
+++ b/net/mac80211/util.c
@@ -1996,6 +1996,29 @@ int ieee80211_reconfig(struct ieee80211_local *local)
 		if (ieee80211_sdata_running(sdata))
 			ieee80211_enable_keys(sdata);
 
+	/* Reconfigure sched scan if it was interrupted by FW restart */
+	mutex_lock(&local->mtx);
+	sched_scan_sdata = rcu_dereference_protected(local->sched_scan_sdata,
+						lockdep_is_held(&local->mtx));
+	sched_scan_req = rcu_dereference_protected(local->sched_scan_req,
+						lockdep_is_held(&local->mtx));
+	if (sched_scan_sdata && sched_scan_req)
+		/*
+		 * Sched scan stopped, but we don't want to report it. Instead,
+		 * we're trying to reschedule. However, if more than one scan
+		 * plan was set, we cannot reschedule since we don't know which
+		 * scan plan was currently running (and some scan plans may have
+		 * already finished).
+		 */
+		if (sched_scan_req->n_scan_plans > 1 ||
+		    __ieee80211_request_sched_scan_start(sched_scan_sdata,
+							 sched_scan_req))
+			sched_scan_stopped = true;
+	mutex_unlock(&local->mtx);
+
+	if (sched_scan_stopped)
+		cfg80211_sched_scan_stopped_rtnl(local->hw.wiphy);
+
  wake_up:
 	local->in_reconfig = false;
 	barrier();
@@ -2031,32 +2054,6 @@ int ieee80211_reconfig(struct ieee80211_local *local)
 					false);
 
 	/*
-	 * Reconfigure sched scan if it was interrupted by FW restart or
-	 * suspend.
-	 */
-	mutex_lock(&local->mtx);
-	sched_scan_sdata = rcu_dereference_protected(local->sched_scan_sdata,
-						lockdep_is_held(&local->mtx));
-	sched_scan_req = rcu_dereference_protected(local->sched_scan_req,
-						lockdep_is_held(&local->mtx));
-	if (sched_scan_sdata && sched_scan_req)
-		/*
-		 * Sched scan stopped, but we don't want to report it. Instead,
-		 * we're trying to reschedule. However, if more than one scan
-		 * plan was set, we cannot reschedule since we don't know which
-		 * scan plan was currently running (and some scan plans may have
-		 * already finished).
-		 */
-		if (sched_scan_req->n_scan_plans > 1 ||
-		    __ieee80211_request_sched_scan_start(sched_scan_sdata,
-							 sched_scan_req))
-			sched_scan_stopped = true;
-	mutex_unlock(&local->mtx);
-
-	if (sched_scan_stopped)
-		cfg80211_sched_scan_stopped_rtnl(local->hw.wiphy);
-
-	/*
 	 * If this is for hw restart things are still running.
 	 * We may want to change that later, however.
 	 */
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH 02/10] mac80211: TDLS: add proper HT-oper IE
  2015-10-25  8:59 [PATCH 01/10] mac80211: don't reconfigure sched scan in case of wowlan Emmanuel Grumbach
@ 2015-10-25  8:59 ` Emmanuel Grumbach
  2015-11-03  9:43   ` Johannes Berg
  2015-10-25  8:59 ` [PATCH 03/10] mac80211: use freezable workqueue for restart work Emmanuel Grumbach
                   ` (8 subsequent siblings)
  9 siblings, 1 reply; 19+ messages in thread
From: Emmanuel Grumbach @ 2015-10-25  8:59 UTC (permalink / raw)
  To: johannes; +Cc: linux-wireless, Arik Nemtsov, Arik Nemtsov, Emmanuel Grumbach

From: Arik Nemtsov <arik@wizery.com>

When 11n peers performs a TDLS connection on a legacy BSS, the HT
operation IE must be specified according to IEEE802.11-2012 section
9.23.3.2. Otherwise HT-protection is compromised and the medium becomes
noisy for both the TDLS and the BSS links.

Signed-off-by: Arik Nemtsov <arikx.nemtsov@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
---
RESEND - already to the ML in August
---
---
 net/mac80211/ibss.c        |  2 +-
 net/mac80211/ieee80211_i.h |  2 +-
 net/mac80211/mesh.c        |  3 ++-
 net/mac80211/tdls.c        | 13 ++++++++++---
 net/mac80211/util.c        |  5 ++++-
 5 files changed, 18 insertions(+), 7 deletions(-)

diff --git a/net/mac80211/ibss.c b/net/mac80211/ibss.c
index 2001555..3b5874e 100644
--- a/net/mac80211/ibss.c
+++ b/net/mac80211/ibss.c
@@ -188,7 +188,7 @@ ieee80211_ibss_build_presp(struct ieee80211_sub_if_data *sdata,
 		 * keep them at 0
 		 */
 		pos = ieee80211_ie_build_ht_oper(pos, &sband->ht_cap,
-						 chandef, 0);
+						 chandef, 0, false);
 
 		/* add VHT capability and information IEs */
 		if (chandef->width != NL80211_CHAN_WIDTH_20 &&
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
index 68680ad..5c76ba7 100644
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
@@ -1962,7 +1962,7 @@ u8 *ieee80211_ie_build_ht_cap(u8 *pos, struct ieee80211_sta_ht_cap *ht_cap,
 			      u16 cap);
 u8 *ieee80211_ie_build_ht_oper(u8 *pos, struct ieee80211_sta_ht_cap *ht_cap,
 			       const struct cfg80211_chan_def *chandef,
-			       u16 prot_mode);
+			       u16 prot_mode, bool rifs_mode);
 u8 *ieee80211_ie_build_vht_cap(u8 *pos, struct ieee80211_sta_vht_cap *vht_cap,
 			       u32 cap);
 u8 *ieee80211_ie_build_vht_oper(u8 *pos, struct ieee80211_sta_vht_cap *vht_cap,
diff --git a/net/mac80211/mesh.c b/net/mac80211/mesh.c
index 626e8de..fa28500 100644
--- a/net/mac80211/mesh.c
+++ b/net/mac80211/mesh.c
@@ -466,7 +466,8 @@ int mesh_add_ht_oper_ie(struct ieee80211_sub_if_data *sdata,
 
 	pos = skb_put(skb, 2 + sizeof(struct ieee80211_ht_operation));
 	ieee80211_ie_build_ht_oper(pos, ht_cap, &sdata->vif.bss_conf.chandef,
-				   sdata->vif.bss_conf.ht_operation_mode);
+				   sdata->vif.bss_conf.ht_operation_mode,
+				   false);
 
 	return 0;
 }
diff --git a/net/mac80211/tdls.c b/net/mac80211/tdls.c
index ecc5e2a..c9eeb3f 100644
--- a/net/mac80211/tdls.c
+++ b/net/mac80211/tdls.c
@@ -591,12 +591,19 @@ ieee80211_tdls_add_setup_cfm_ies(struct ieee80211_sub_if_data *sdata,
 		offset = noffset;
 	}
 
-	/* if HT support is only added in TDLS, we need an HT-operation IE */
+	/*
+	 * if HT support is only added in TDLS, we need an HT-operation IE.
+	 * add the IE as required by IEEE802.11-2012 9.23.3.2.
+	 */
 	if (!ap_sta->sta.ht_cap.ht_supported && sta->sta.ht_cap.ht_supported) {
+		u16 prot = IEEE80211_HT_OP_MODE_PROTECTION_NONHT_MIXED |
+			   IEEE80211_HT_OP_MODE_NON_GF_STA_PRSNT |
+			   IEEE80211_HT_OP_MODE_NON_HT_STA_PRSNT;
+
 		pos = skb_put(skb, 2 + sizeof(struct ieee80211_ht_operation));
-		/* send an empty HT operation IE */
 		ieee80211_ie_build_ht_oper(pos, &sta->sta.ht_cap,
-					   &sdata->vif.bss_conf.chandef, 0);
+					   &sdata->vif.bss_conf.chandef, prot,
+					   true);
 	}
 
 	ieee80211_tdls_add_link_ie(sdata, skb, peer, initiator);
diff --git a/net/mac80211/util.c b/net/mac80211/util.c
index 13b07ed..7150ae2 100644
--- a/net/mac80211/util.c
+++ b/net/mac80211/util.c
@@ -2274,7 +2274,7 @@ u8 *ieee80211_ie_build_vht_cap(u8 *pos, struct ieee80211_sta_vht_cap *vht_cap,
 
 u8 *ieee80211_ie_build_ht_oper(u8 *pos, struct ieee80211_sta_ht_cap *ht_cap,
 			       const struct cfg80211_chan_def *chandef,
-			       u16 prot_mode)
+			       u16 prot_mode, bool rifs_mode)
 {
 	struct ieee80211_ht_operation *ht_oper;
 	/* Build HT Information */
@@ -2302,6 +2302,9 @@ u8 *ieee80211_ie_build_ht_oper(u8 *pos, struct ieee80211_sta_ht_cap *ht_cap,
 	    chandef->width != NL80211_CHAN_WIDTH_20)
 		ht_oper->ht_param |= IEEE80211_HT_PARAM_CHAN_WIDTH_ANY;
 
+	if (rifs_mode)
+		ht_oper->ht_param |= IEEE80211_HT_PARAM_RIFS_MODE;
+
 	ht_oper->operation_mode = cpu_to_le16(prot_mode);
 	ht_oper->stbc_param = 0x0000;
 
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH 03/10] mac80211: use freezable workqueue for restart work
  2015-10-25  8:59 [PATCH 01/10] mac80211: don't reconfigure sched scan in case of wowlan Emmanuel Grumbach
  2015-10-25  8:59 ` [PATCH 02/10] mac80211: TDLS: add proper HT-oper IE Emmanuel Grumbach
@ 2015-10-25  8:59 ` Emmanuel Grumbach
  2015-11-03  9:37   ` Johannes Berg
  2015-10-25  8:59 ` [PATCH 04/10] mac80211: call drv_stop only if driver is started Emmanuel Grumbach
                   ` (7 subsequent siblings)
  9 siblings, 1 reply; 19+ messages in thread
From: Emmanuel Grumbach @ 2015-10-25  8:59 UTC (permalink / raw)
  To: johannes; +Cc: linux-wireless, Eliad Peller, Eliad Peller, Emmanuel Grumbach

From: Eliad Peller <eliad@wizery.com>

Requesting hw restart during suspend might result
in the restart work being executed after mac80211
and the hw are suspended.

Solve the race by simply scheduling the restart
work on a freezable workqueue.

Note that there can be some cases of reconfiguration
on resume (besides the hardware restart):

* wowlan is not configured -
    All the interfaces removed were removed on suspend,
    and drv_stop() was called. At this point the driver
    shouldn't expect for hw_restart anyway, so we can
    simply cancel it (on resume).

* wowlan is configured, drv_resume() == 1
    There is no definitive expected behavior in this case,
    as each driver might have different expectations (e.g.
    setting some flags on suspend/restart vs. not handling
    spurious recovery).
    For now, simply let the hw_restart work run again after
    resume, and hope the driver will handle it well (or at
    least initiate another hw restart).

Signed-off-by: Eliad Peller <eliadx.peller@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
---
 net/mac80211/main.c |  2 +-
 net/mac80211/util.c | 11 +++++++++++
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/net/mac80211/main.c b/net/mac80211/main.c
index 273c96d..858f6b1 100644
--- a/net/mac80211/main.c
+++ b/net/mac80211/main.c
@@ -281,7 +281,7 @@ void ieee80211_restart_hw(struct ieee80211_hw *hw)
 	local->in_reconfig = true;
 	barrier();
 
-	schedule_work(&local->restart_work);
+	queue_work(system_freezable_wq, &local->restart_work);
 }
 EXPORT_SYMBOL(ieee80211_restart_hw);
 
diff --git a/net/mac80211/util.c b/net/mac80211/util.c
index 7150ae2..e936acd 100644
--- a/net/mac80211/util.c
+++ b/net/mac80211/util.c
@@ -4,6 +4,7 @@
  * Copyright 2006-2007	Jiri Benc <jbenc@suse.cz>
  * Copyright 2007	Johannes Berg <johannes@sipsolutions.net>
  * Copyright 2013-2014  Intel Mobile Communications GmbH
+ * Copyright (C) 2015	Intel Deutschland GmbH
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
@@ -1754,6 +1755,16 @@ int ieee80211_reconfig(struct ieee80211_local *local)
 #endif
 
 	/*
+	 * In case of hw_restart during suspend (without wowlan),
+	 * cancel restart work, as we are reconfiguring the device
+	 * anyway.
+	 * Note that restart_work is scheduled on a frozen workqueue,
+	 * so we can't deadlock in this case.
+	 */
+	if (suspended && local->in_reconfig && !reconfig_due_to_wowlan)
+		cancel_work_sync(&local->restart_work);
+
+	/*
 	 * Upon resume hardware can sometimes be goofy due to
 	 * various platform / driver / bus issues, so restarting
 	 * the device may at times not work immediately. Propagate
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH 04/10] mac80211: call drv_stop only if driver is started
  2015-10-25  8:59 [PATCH 01/10] mac80211: don't reconfigure sched scan in case of wowlan Emmanuel Grumbach
  2015-10-25  8:59 ` [PATCH 02/10] mac80211: TDLS: add proper HT-oper IE Emmanuel Grumbach
  2015-10-25  8:59 ` [PATCH 03/10] mac80211: use freezable workqueue for restart work Emmanuel Grumbach
@ 2015-10-25  8:59 ` Emmanuel Grumbach
  2015-11-03  9:41   ` Johannes Berg
  2015-10-25  8:59 ` [PATCH 05/10] mac80211: make enable_qos parameter to ieee80211_set_wmm_default() Emmanuel Grumbach
                   ` (6 subsequent siblings)
  9 siblings, 1 reply; 19+ messages in thread
From: Emmanuel Grumbach @ 2015-10-25  8:59 UTC (permalink / raw)
  To: johannes; +Cc: linux-wireless, Eliad Peller, Eliad Peller, Emmanuel Grumbach

From: Eliad Peller <eliad@wizery.com>

If drv_start() fails during hw_restart, all the running
interfaces are being closed/stopped, which results in
drv_stop() being called, although the driver was never
started successfully.

This might cause drivers to perform operations on uninitialized
memory (as they assume it was initialized on drv_start)

Consider the local->started flag, and call the driver's stop()
op only if drv_start() succeeded before.

Move drv_start() and drv_stop() to driver-ops.c, as they are no
longer simple wrappers.

Signed-off-by: Eliad Peller <eliadx.peller@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
---
 net/mac80211/driver-ops.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
 net/mac80211/driver-ops.h | 32 ++------------------------------
 net/mac80211/util.c       |  3 ++-
 3 files changed, 48 insertions(+), 31 deletions(-)

diff --git a/net/mac80211/driver-ops.c b/net/mac80211/driver-ops.c
index a1d5431..9f97343 100644
--- a/net/mac80211/driver-ops.c
+++ b/net/mac80211/driver-ops.c
@@ -1,4 +1,6 @@
 /*
+ * Copyright 2015 Intel Deutschland GmbH
+ *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
@@ -8,6 +10,48 @@
 #include "trace.h"
 #include "driver-ops.h"
 
+int drv_start(struct ieee80211_local *local)
+{
+	int ret;
+
+	might_sleep();
+
+	if (WARN_ON(local->started))
+		return -EALREADY;
+
+	trace_drv_start(local);
+	local->started = true;
+	/* allow rx frames */
+	smp_mb();
+	ret = local->ops->start(&local->hw);
+	trace_drv_return_int(local, ret);
+
+	if (ret)
+		local->started = false;
+
+	return ret;
+}
+
+void drv_stop(struct ieee80211_local *local)
+{
+	might_sleep();
+
+	if (WARN_ON(!local->started))
+		return;
+
+	trace_drv_stop(local);
+	local->ops->stop(&local->hw);
+	trace_drv_return_void(local);
+
+	/* sync away all work on the tasklet before clearing started */
+	tasklet_disable(&local->tasklet);
+	tasklet_enable(&local->tasklet);
+
+	barrier();
+
+	local->started = false;
+}
+
 int drv_add_interface(struct ieee80211_local *local,
 		      struct ieee80211_sub_if_data *sdata)
 {
diff --git a/net/mac80211/driver-ops.h b/net/mac80211/driver-ops.h
index 3098709..f82cfab 100644
--- a/net/mac80211/driver-ops.h
+++ b/net/mac80211/driver-ops.h
@@ -66,36 +66,8 @@ static inline int drv_get_et_sset_count(struct ieee80211_sub_if_data *sdata,
 	return rv;
 }
 
-static inline int drv_start(struct ieee80211_local *local)
-{
-	int ret;
-
-	might_sleep();
-
-	trace_drv_start(local);
-	local->started = true;
-	smp_mb();
-	ret = local->ops->start(&local->hw);
-	trace_drv_return_int(local, ret);
-	return ret;
-}
-
-static inline void drv_stop(struct ieee80211_local *local)
-{
-	might_sleep();
-
-	trace_drv_stop(local);
-	local->ops->stop(&local->hw);
-	trace_drv_return_void(local);
-
-	/* sync away all work on the tasklet before clearing started */
-	tasklet_disable(&local->tasklet);
-	tasklet_enable(&local->tasklet);
-
-	barrier();
-
-	local->started = false;
-}
+int drv_start(struct ieee80211_local *local);
+void drv_stop(struct ieee80211_local *local);
 
 #ifdef CONFIG_PM
 static inline int drv_suspend(struct ieee80211_local *local,
diff --git a/net/mac80211/util.c b/net/mac80211/util.c
index e936acd..c51ff91 100644
--- a/net/mac80211/util.c
+++ b/net/mac80211/util.c
@@ -1665,7 +1665,6 @@ static void ieee80211_handle_reconfig_failure(struct ieee80211_local *local)
 
 	local->resuming = false;
 	local->suspended = false;
-	local->started = false;
 	local->in_reconfig = false;
 
 	/* scheduled scan clearly can't be running any more, but tell
@@ -1764,6 +1763,8 @@ int ieee80211_reconfig(struct ieee80211_local *local)
 	if (suspended && local->in_reconfig && !reconfig_due_to_wowlan)
 		cancel_work_sync(&local->restart_work);
 
+	local->started = false;
+
 	/*
 	 * Upon resume hardware can sometimes be goofy due to
 	 * various platform / driver / bus issues, so restarting
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH 05/10] mac80211: make enable_qos parameter to ieee80211_set_wmm_default()
  2015-10-25  8:59 [PATCH 01/10] mac80211: don't reconfigure sched scan in case of wowlan Emmanuel Grumbach
                   ` (2 preceding siblings ...)
  2015-10-25  8:59 ` [PATCH 04/10] mac80211: call drv_stop only if driver is started Emmanuel Grumbach
@ 2015-10-25  8:59 ` Emmanuel Grumbach
  2015-10-25  9:14   ` Emmanuel Grumbach
  2015-10-25  8:59 ` [PATCH 06/10] mac80211: Fix local deauth while associating Emmanuel Grumbach
                   ` (5 subsequent siblings)
  9 siblings, 1 reply; 19+ messages in thread
From: Emmanuel Grumbach @ 2015-10-25  8:59 UTC (permalink / raw)
  To: johannes; +Cc: linux-wireless, Johannes Berg

From: Johannes Berg <johannes.berg@intel.com>

The function currently determines this value, for use in bss_info.qos,
based on the interface type itself. Make it a parameter instead and
set it with the same logic for now.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
---
 net/mac80211/ibss.c        |  2 +-
 net/mac80211/ieee80211_i.h |  2 +-
 net/mac80211/iface.c       |  8 +++++---
 net/mac80211/mlme.c        |  4 ++--
 net/mac80211/util.c        | 11 ++---------
 5 files changed, 11 insertions(+), 16 deletions(-)

diff --git a/net/mac80211/ibss.c b/net/mac80211/ibss.c
index 3b5874e..337bb5d 100644
--- a/net/mac80211/ibss.c
+++ b/net/mac80211/ibss.c
@@ -356,7 +356,7 @@ static void __ieee80211_sta_join_ibss(struct ieee80211_sub_if_data *sdata,
 	else
 		sdata->flags &= ~IEEE80211_SDATA_OPERATING_GMODE;
 
-	ieee80211_set_wmm_default(sdata, true);
+	ieee80211_set_wmm_default(sdata, true, false);
 
 	sdata->vif.bss_conf.ibss_joined = true;
 	sdata->vif.bss_conf.ibss_creator = creator;
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
index 5c76ba7..d832bd5 100644
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
@@ -1769,7 +1769,7 @@ int ieee80211_frame_duration(enum ieee80211_band band, size_t len,
 			     int rate, int erp, int short_preamble,
 			     int shift);
 void ieee80211_set_wmm_default(struct ieee80211_sub_if_data *sdata,
-			       bool bss_notify);
+			       bool bss_notify, bool enable_qos);
 void ieee80211_xmit(struct ieee80211_sub_if_data *sdata,
 		    struct sta_info *sta, struct sk_buff *skb);
 
diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c
index f848c75..d0dc1bf 100644
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
@@ -661,11 +661,13 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up)
 		}
 
 		/*
-		 * set default queue parameters so drivers don't
+		 * Set default queue parameters so drivers don't
 		 * need to initialise the hardware if the hardware
-		 * doesn't start up with sane defaults
+		 * doesn't start up with sane defaults.
+		 * Enable QoS for anything but station interfaces.
 		 */
-		ieee80211_set_wmm_default(sdata, true);
+		ieee80211_set_wmm_default(sdata, true,
+			sdata->vif.type != NL80211_IFTYPE_STATION);
 	}
 
 	set_bit(SDATA_STATE_RUNNING, &sdata->state);
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index ded4b97..0d0ce5c 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -2077,7 +2077,7 @@ static void ieee80211_set_disassoc(struct ieee80211_sub_if_data *sdata,
 	ieee80211_bss_info_change_notify(sdata, changed);
 
 	/* disassociated - set to defaults now */
-	ieee80211_set_wmm_default(sdata, false);
+	ieee80211_set_wmm_default(sdata, false, false);
 
 	del_timer_sync(&sdata->u.mgd.conn_mon_timer);
 	del_timer_sync(&sdata->u.mgd.bcn_mon_timer);
@@ -3048,7 +3048,7 @@ static bool ieee80211_assoc_success(struct ieee80211_sub_if_data *sdata,
 		ieee80211_sta_wmm_params(local, sdata, elems.wmm_param,
 					 elems.wmm_param_len);
 	else
-		ieee80211_set_wmm_default(sdata, false);
+		ieee80211_set_wmm_default(sdata, false, false);
 	changed |= BSS_CHANGED_QOS;
 
 	/* set AID and assoc capability,
diff --git a/net/mac80211/util.c b/net/mac80211/util.c
index c51ff91..29c55ce 100644
--- a/net/mac80211/util.c
+++ b/net/mac80211/util.c
@@ -1105,13 +1105,13 @@ u32 ieee802_11_parse_elems_crc(const u8 *start, size_t len, bool action,
 }
 
 void ieee80211_set_wmm_default(struct ieee80211_sub_if_data *sdata,
-			       bool bss_notify)
+			       bool bss_notify, bool enable_qos)
 {
 	struct ieee80211_local *local = sdata->local;
 	struct ieee80211_tx_queue_params qparam;
 	struct ieee80211_chanctx_conf *chanctx_conf;
 	int ac;
-	bool use_11b, enable_qos;
+	bool use_11b;
 	bool is_ocb; /* Use another EDCA parameters if dot11OCBActivated=true */
 	int aCWmin, aCWmax;
 
@@ -1130,13 +1130,6 @@ void ieee80211_set_wmm_default(struct ieee80211_sub_if_data *sdata,
 		 !(sdata->flags & IEEE80211_SDATA_OPERATING_GMODE);
 	rcu_read_unlock();
 
-	/*
-	 * By default disable QoS in STA mode for old access points, which do
-	 * not support 802.11e. New APs will provide proper queue parameters,
-	 * that we will configure later.
-	 */
-	enable_qos = (sdata->vif.type != NL80211_IFTYPE_STATION);
-
 	is_ocb = (sdata->vif.type == NL80211_IFTYPE_OCB);
 
 	/* Set defaults according to 802.11-2007 Table 7-37 */
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH 06/10] mac80211: Fix local deauth while associating
  2015-10-25  8:59 [PATCH 01/10] mac80211: don't reconfigure sched scan in case of wowlan Emmanuel Grumbach
                   ` (3 preceding siblings ...)
  2015-10-25  8:59 ` [PATCH 05/10] mac80211: make enable_qos parameter to ieee80211_set_wmm_default() Emmanuel Grumbach
@ 2015-10-25  8:59 ` Emmanuel Grumbach
  2015-11-03  9:36   ` Johannes Berg
  2015-10-25  8:59 ` [PATCH 07/10] mac80211: allow driver to prevent two stations w/ same address Emmanuel Grumbach
                   ` (4 subsequent siblings)
  9 siblings, 1 reply; 19+ messages in thread
From: Emmanuel Grumbach @ 2015-10-25  8:59 UTC (permalink / raw)
  To: johannes; +Cc: linux-wireless, Andrei Otcheretianski, Emmanuel Grumbach

From: Andrei Otcheretianski <andrei.otcheretianski@intel.com>

Local request to deauthenticate wasn't handled while associating, thus
the association could continue even when the user space required to
disconnect.

Signed-off-by: Andrei Otcheretianski <andrei.otcheretianski@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
---
 net/mac80211/mlme.c | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index 0d0ce5c..67f0387 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -4936,6 +4936,25 @@ int ieee80211_mgd_deauth(struct ieee80211_sub_if_data *sdata,
 		return 0;
 	}
 
+	if (ifmgd->assoc_data &&
+	    ether_addr_equal(ifmgd->assoc_data->bss->bssid, req->bssid)) {
+		sdata_info(sdata,
+			   "aborting association with %pM by local choice (Reason: %u=%s)\n",
+			   req->bssid, req->reason_code,
+			   ieee80211_get_reason_code_string(req->reason_code));
+
+		drv_mgd_prepare_tx(sdata->local, sdata);
+		ieee80211_send_deauth_disassoc(sdata, req->bssid,
+					       IEEE80211_STYPE_DEAUTH,
+					       req->reason_code, tx,
+					       frame_buf);
+		ieee80211_destroy_assoc_data(sdata, false);
+		ieee80211_report_disconnect(sdata, frame_buf,
+					    sizeof(frame_buf), true,
+					    req->reason_code);
+		return 0;
+	}
+
 	if (ifmgd->associated &&
 	    ether_addr_equal(ifmgd->associated->bssid, req->bssid)) {
 		sdata_info(sdata,
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH 07/10] mac80211: allow driver to prevent two stations w/ same address
  2015-10-25  8:59 [PATCH 01/10] mac80211: don't reconfigure sched scan in case of wowlan Emmanuel Grumbach
                   ` (4 preceding siblings ...)
  2015-10-25  8:59 ` [PATCH 06/10] mac80211: Fix local deauth while associating Emmanuel Grumbach
@ 2015-10-25  8:59 ` Emmanuel Grumbach
  2015-10-25  9:14   ` Emmanuel Grumbach
  2015-10-25  8:59 ` [PATCH 08/10] mac80211: Remove WARN_ON_ONCE in ieee80211_recalc_smps Emmanuel Grumbach
                   ` (3 subsequent siblings)
  9 siblings, 1 reply; 19+ messages in thread
From: Emmanuel Grumbach @ 2015-10-25  8:59 UTC (permalink / raw)
  To: johannes; +Cc: linux-wireless, Johannes Berg, Emmanuel Grumbach

From: Johannes Berg <johannes.berg@intel.com>

Some devices or drivers cannot deal with having the same station
address for different virtual interfaces, say as a client to two
virtual AP interfaces. Rather than requiring each driver with a
limitation like that to enforce it, add a hardware flag for it.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
---
 include/net/mac80211.h  |  6 ++++++
 net/mac80211/debugfs.c  |  1 +
 net/mac80211/sta_info.c | 18 ++++++++++++++++--
 3 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index 4b9dd07..e2dafad 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -1899,6 +1899,11 @@ struct ieee80211_txq {
  * @IEEE80211_HW_BEACON_TX_STATUS: The device/driver provides TX status
  *	for sent beacons.
  *
+ * @IEEE80211_HW_NEEDS_UNIQUE_STA_ADDR: Hardware (or driver) requires that each
+ *	station has a unique address, i.e. each station entry can be identified
+ *	by just its MAC address; this prevents, for example, the same station
+ *	from connecting to two virtual AP interfaces at the same time.
+ *
  * @NUM_IEEE80211_HW_FLAGS: number of hardware flags, used for sizing arrays
  */
 enum ieee80211_hw_flags {
@@ -1934,6 +1939,7 @@ enum ieee80211_hw_flags {
 	IEEE80211_HW_TDLS_WIDER_BW,
 	IEEE80211_HW_SUPPORTS_AMSDU_IN_AMPDU,
 	IEEE80211_HW_BEACON_TX_STATUS,
+	IEEE80211_HW_NEEDS_UNIQUE_STA_ADDR,
 
 	/* keep last, obviously */
 	NUM_IEEE80211_HW_FLAGS
diff --git a/net/mac80211/debugfs.c b/net/mac80211/debugfs.c
index 4d2aaeb..abbdff0 100644
--- a/net/mac80211/debugfs.c
+++ b/net/mac80211/debugfs.c
@@ -125,6 +125,7 @@ static const char *hw_flag_names[NUM_IEEE80211_HW_FLAGS + 1] = {
 	FLAG(TDLS_WIDER_BW),
 	FLAG(SUPPORTS_AMSDU_IN_AMPDU),
 	FLAG(BEACON_TX_STATUS),
+	FLAG(NEEDS_UNIQUE_STA_ADDR),
 
 	/* keep last for the build bug below */
 	(void *)0x1
diff --git a/net/mac80211/sta_info.c b/net/mac80211/sta_info.c
index f91d187..8f630f5 100644
--- a/net/mac80211/sta_info.c
+++ b/net/mac80211/sta_info.c
@@ -435,6 +435,19 @@ static int sta_info_insert_check(struct sta_info *sta)
 		    is_multicast_ether_addr(sta->sta.addr)))
 		return -EINVAL;
 
+	/* Strictly speaking this isn't necessary as we hold the mutex, but
+	 * the rhashtable code can't really deal with that distinction. We
+	 * do require the mutex for correctness though.
+	 */
+	rcu_read_lock();
+	lockdep_assert_held(&sdata->local->sta_mtx);
+	if (ieee80211_hw_check(&sdata->local->hw, NEEDS_UNIQUE_STA_ADDR) &&
+	    ieee80211_find_sta_by_ifaddr(&sdata->local->hw, sta->addr, NULL)) {
+		rcu_read_unlock();
+		return -ENOTUNIQ;
+	}
+	rcu_read_unlock();
+
 	return 0;
 }
 
@@ -554,14 +567,15 @@ int sta_info_insert_rcu(struct sta_info *sta) __acquires(RCU)
 
 	might_sleep();
 
+	mutex_lock(&local->sta_mtx);
+
 	err = sta_info_insert_check(sta);
 	if (err) {
+		mutex_unlock(&local->sta_mtx);
 		rcu_read_lock();
 		goto out_free;
 	}
 
-	mutex_lock(&local->sta_mtx);
-
 	err = sta_info_insert_finish(sta);
 	if (err)
 		goto out_free;
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH 08/10] mac80211: Remove WARN_ON_ONCE in ieee80211_recalc_smps
  2015-10-25  8:59 [PATCH 01/10] mac80211: don't reconfigure sched scan in case of wowlan Emmanuel Grumbach
                   ` (5 preceding siblings ...)
  2015-10-25  8:59 ` [PATCH 07/10] mac80211: allow driver to prevent two stations w/ same address Emmanuel Grumbach
@ 2015-10-25  8:59 ` Emmanuel Grumbach
  2015-11-03  9:38   ` Johannes Berg
  2015-10-25  8:59 ` [PATCH 09/10] mac80211: allow null chandef in tracing Emmanuel Grumbach
                   ` (2 subsequent siblings)
  9 siblings, 1 reply; 19+ messages in thread
From: Emmanuel Grumbach @ 2015-10-25  8:59 UTC (permalink / raw)
  To: johannes; +Cc: linux-wireless, Andrei Otcheretianski, Emmanuel Grumbach

From: Andrei Otcheretianski <andrei.otcheretianski@intel.com>

The recalc_smps work can run after the station disassociates.
At this stage we already released the channel, but the work
will be cancelled only when the interface stops.
In this scenario we can hit the warning in ieee80211_recalc_smps, so
just remove it.

Signed-off-by: Andrei Otcheretianski <andrei.otcheretianski@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
---
 net/mac80211/util.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/net/mac80211/util.c b/net/mac80211/util.c
index 29c55ce..4ec576b 100644
--- a/net/mac80211/util.c
+++ b/net/mac80211/util.c
@@ -2142,7 +2142,13 @@ void ieee80211_recalc_smps(struct ieee80211_sub_if_data *sdata)
 	chanctx_conf = rcu_dereference_protected(sdata->vif.chanctx_conf,
 					lockdep_is_held(&local->chanctx_mtx));
 
-	if (WARN_ON_ONCE(!chanctx_conf))
+	/*
+	 * This function can be called from a work, thus it may be possible
+	 * that the chanctx_conf is removed (due to a disconnection, for
+	 * example).
+	 * So nothing should be done in such case.
+	 */
+	if (!chanctx_conf)
 		goto unlock;
 
 	chanctx = container_of(chanctx_conf, struct ieee80211_chanctx, conf);
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH 09/10] mac80211: allow null chandef in tracing
  2015-10-25  8:59 [PATCH 01/10] mac80211: don't reconfigure sched scan in case of wowlan Emmanuel Grumbach
                   ` (6 preceding siblings ...)
  2015-10-25  8:59 ` [PATCH 08/10] mac80211: Remove WARN_ON_ONCE in ieee80211_recalc_smps Emmanuel Grumbach
@ 2015-10-25  8:59 ` Emmanuel Grumbach
  2015-11-03  9:30   ` Johannes Berg
  2015-10-25  8:59 ` [PATCH 10/10] mac80211: further improve "no supported rates" warning Emmanuel Grumbach
  2015-11-03  9:42 ` [PATCH 01/10] mac80211: don't reconfigure sched scan in case of wowlan Johannes Berg
  9 siblings, 1 reply; 19+ messages in thread
From: Emmanuel Grumbach @ 2015-10-25  8:59 UTC (permalink / raw)
  To: johannes; +Cc: linux-wireless, Arik Nemtsov, Arik Nemtsov, Emmanuel Grumbach

From: Arik Nemtsov <arik@wizery.com>

In TDLS channel-switch operations the chandef can sometimes be NULL.
Avoid an oops in the trace code for these cases and just print a
chandef full of zeros.

Signed-off-by: Arik Nemtsov <arikx.nemtsov@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
---
 net/mac80211/trace.h | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/net/mac80211/trace.h b/net/mac80211/trace.h
index 5cf8f4e..56c6d6c 100644
--- a/net/mac80211/trace.h
+++ b/net/mac80211/trace.h
@@ -33,11 +33,11 @@
 			__field(u32, chan_width)					\
 			__field(u32, center_freq1)					\
 			__field(u32, center_freq2)
-#define CHANDEF_ASSIGN(c)								\
-			__entry->control_freq = (c)->chan ? (c)->chan->center_freq : 0;	\
-			__entry->chan_width = (c)->width;				\
-			__entry->center_freq1 = (c)->center_freq1;			\
-			__entry->center_freq2 = (c)->center_freq2;
+#define CHANDEF_ASSIGN(c)							\
+			__entry->control_freq = (c) ? ((c)->chan ? (c)->chan->center_freq : 0) : 0;	\
+			__entry->chan_width = (c) ? (c)->width : 0;			\
+			__entry->center_freq1 = (c) ? (c)->center_freq1 : 0;		\
+			__entry->center_freq2 = (c) ? (c)->center_freq2 : 0;
 #define CHANDEF_PR_FMT	" control:%d MHz width:%d center: %d/%d MHz"
 #define CHANDEF_PR_ARG	__entry->control_freq, __entry->chan_width,			\
 			__entry->center_freq1, __entry->center_freq2
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH 10/10] mac80211: further improve "no supported rates" warning
  2015-10-25  8:59 [PATCH 01/10] mac80211: don't reconfigure sched scan in case of wowlan Emmanuel Grumbach
                   ` (7 preceding siblings ...)
  2015-10-25  8:59 ` [PATCH 09/10] mac80211: allow null chandef in tracing Emmanuel Grumbach
@ 2015-10-25  8:59 ` Emmanuel Grumbach
  2015-11-03  9:42 ` [PATCH 01/10] mac80211: don't reconfigure sched scan in case of wowlan Johannes Berg
  9 siblings, 0 replies; 19+ messages in thread
From: Emmanuel Grumbach @ 2015-10-25  8:59 UTC (permalink / raw)
  To: johannes; +Cc: linux-wireless, Johannes Berg, Emmanuel Grumbach

From: Johannes Berg <johannes.berg@intel.com>

Allow distinguishing the non-station case from the case of a
station without rates, by using -1 for the non-station case.
This value cannot be reached with a station since that many
legacy rates don't exist.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
---
 net/mac80211/rate.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/net/mac80211/rate.c b/net/mac80211/rate.c
index b07e2f7..a4e2f4e 100644
--- a/net/mac80211/rate.c
+++ b/net/mac80211/rate.c
@@ -307,7 +307,7 @@ static void __rate_control_send_low(struct ieee80211_hw *hw,
 	}
 	WARN_ONCE(i == sband->n_bitrates,
 		  "no supported rates (0x%x) in rate_mask 0x%x with flags 0x%x\n",
-		  sta ? sta->supp_rates[sband->band] : 0,
+		  sta ? sta->supp_rates[sband->band] : -1,
 		  rate_mask, rate_flags);
 
 	info->control.rates[0].count =
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 19+ messages in thread

* Re: [PATCH 07/10] mac80211: allow driver to prevent two stations w/ same address
  2015-10-25  8:59 ` [PATCH 07/10] mac80211: allow driver to prevent two stations w/ same address Emmanuel Grumbach
@ 2015-10-25  9:14   ` Emmanuel Grumbach
  0 siblings, 0 replies; 19+ messages in thread
From: Emmanuel Grumbach @ 2015-10-25  9:14 UTC (permalink / raw)
  To: Emmanuel Grumbach; +Cc: Johannes Berg, linux-wireless, Johannes Berg

On Sun, Oct 25, 2015 at 10:59 AM, Emmanuel Grumbach
<emmanuel.grumbach@intel.com> wrote:
> From: Johannes Berg <johannes.berg@intel.com>
>
> Some devices or drivers cannot deal with having the same station
> address for different virtual interfaces, say as a client to two
> virtual AP interfaces. Rather than requiring each driver with a
> limitation like that to enforce it, add a hardware flag for it.
>
> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
> ---
>  include/net/mac80211.h  |  6 ++++++
>  net/mac80211/debugfs.c  |  1 +
>  net/mac80211/sta_info.c | 18 ++++++++++++++++--
>  3 files changed, 23 insertions(+), 2 deletions(-)
>

Got confused. You already sent this one.

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 05/10] mac80211: make enable_qos parameter to ieee80211_set_wmm_default()
  2015-10-25  8:59 ` [PATCH 05/10] mac80211: make enable_qos parameter to ieee80211_set_wmm_default() Emmanuel Grumbach
@ 2015-10-25  9:14   ` Emmanuel Grumbach
  0 siblings, 0 replies; 19+ messages in thread
From: Emmanuel Grumbach @ 2015-10-25  9:14 UTC (permalink / raw)
  To: Emmanuel Grumbach; +Cc: Johannes Berg, linux-wireless, Johannes Berg

On Sun, Oct 25, 2015 at 10:59 AM, Emmanuel Grumbach
<emmanuel.grumbach@intel.com> wrote:
> From: Johannes Berg <johannes.berg@intel.com>
>
> The function currently determines this value, for use in bss_info.qos,
> based on the interface type itself. Make it a parameter instead and
> set it with the same logic for now.
>
> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
> ---

Got confused. You already sent this one.

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 09/10] mac80211: allow null chandef in tracing
  2015-10-25  8:59 ` [PATCH 09/10] mac80211: allow null chandef in tracing Emmanuel Grumbach
@ 2015-11-03  9:30   ` Johannes Berg
  0 siblings, 0 replies; 19+ messages in thread
From: Johannes Berg @ 2015-11-03  9:30 UTC (permalink / raw)
  To: Emmanuel Grumbach; +Cc: linux-wireless, Arik Nemtsov, Arik Nemtsov

On Sun, 2015-10-25 at 10:59 +0200, Emmanuel Grumbach wrote:
> From: Arik Nemtsov <arik@wizery.com>
> 
> In TDLS channel-switch operations the chandef can sometimes be NULL.
> Avoid an oops in the trace code for these cases and just print a
> chandef full of zeros.
> 
Applied, thanks.

johannes

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 06/10] mac80211: Fix local deauth while associating
  2015-10-25  8:59 ` [PATCH 06/10] mac80211: Fix local deauth while associating Emmanuel Grumbach
@ 2015-11-03  9:36   ` Johannes Berg
  0 siblings, 0 replies; 19+ messages in thread
From: Johannes Berg @ 2015-11-03  9:36 UTC (permalink / raw)
  To: Emmanuel Grumbach; +Cc: linux-wireless, Andrei Otcheretianski

On Sun, 2015-10-25 at 10:59 +0200, Emmanuel Grumbach wrote:
> From: Andrei Otcheretianski <andrei.otcheretianski@intel.com>
> 
> Local request to deauthenticate wasn't handled while associating, 
> thus
> the association could continue even when the user space required to
> disconnect.
> 
Applied.

johannes

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 03/10] mac80211: use freezable workqueue for restart work
  2015-10-25  8:59 ` [PATCH 03/10] mac80211: use freezable workqueue for restart work Emmanuel Grumbach
@ 2015-11-03  9:37   ` Johannes Berg
  0 siblings, 0 replies; 19+ messages in thread
From: Johannes Berg @ 2015-11-03  9:37 UTC (permalink / raw)
  To: Emmanuel Grumbach; +Cc: linux-wireless, Eliad Peller, Eliad Peller

On Sun, 2015-10-25 at 10:59 +0200, Emmanuel Grumbach wrote:
> From: Eliad Peller <eliad@wizery.com>
> 
> Requesting hw restart during suspend might result
> in the restart work being executed after mac80211
> and the hw are suspended.
> 
Applied.

johannes

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 08/10] mac80211: Remove WARN_ON_ONCE in ieee80211_recalc_smps
  2015-10-25  8:59 ` [PATCH 08/10] mac80211: Remove WARN_ON_ONCE in ieee80211_recalc_smps Emmanuel Grumbach
@ 2015-11-03  9:38   ` Johannes Berg
  0 siblings, 0 replies; 19+ messages in thread
From: Johannes Berg @ 2015-11-03  9:38 UTC (permalink / raw)
  To: Emmanuel Grumbach; +Cc: linux-wireless, Andrei Otcheretianski

On Sun, 2015-10-25 at 10:59 +0200, Emmanuel Grumbach wrote:
> From: Andrei Otcheretianski <andrei.otcheretianski@intel.com>
> 
> The recalc_smps work can run after the station disassociates.
> At this stage we already released the channel, but the work
> will be cancelled only when the interface stops.
> In this scenario we can hit the warning in ieee80211_recalc_smps, so
> just remove it.
> 
Applied.

johannes

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 04/10] mac80211: call drv_stop only if driver is started
  2015-10-25  8:59 ` [PATCH 04/10] mac80211: call drv_stop only if driver is started Emmanuel Grumbach
@ 2015-11-03  9:41   ` Johannes Berg
  0 siblings, 0 replies; 19+ messages in thread
From: Johannes Berg @ 2015-11-03  9:41 UTC (permalink / raw)
  To: Emmanuel Grumbach; +Cc: linux-wireless, Eliad Peller, Eliad Peller

On Sun, 2015-10-25 at 10:59 +0200, Emmanuel Grumbach wrote:
> From: Eliad Peller <eliad@wizery.com>
> 
> If drv_start() fails during hw_restart, all the running
> interfaces are being closed/stopped, which results in
> drv_stop() being called, although the driver was never
> started successfully.
> 
Applied.

johannes

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 01/10] mac80211: don't reconfigure sched scan in case of wowlan
  2015-10-25  8:59 [PATCH 01/10] mac80211: don't reconfigure sched scan in case of wowlan Emmanuel Grumbach
                   ` (8 preceding siblings ...)
  2015-10-25  8:59 ` [PATCH 10/10] mac80211: further improve "no supported rates" warning Emmanuel Grumbach
@ 2015-11-03  9:42 ` Johannes Berg
  9 siblings, 0 replies; 19+ messages in thread
From: Johannes Berg @ 2015-11-03  9:42 UTC (permalink / raw)
  To: Emmanuel Grumbach; +Cc: linux-wireless, Eliad Peller, Eliad Peller

On Sun, 2015-10-25 at 10:59 +0200, Emmanuel Grumbach wrote:
> From: Eliad Peller <eliad@wizery.com>
> 
> Scheduled scan has to be reconfigured only if wowlan wasn't
> configured, since otherwise it should continue to run (with
> the 'any' trigger) or be aborted.
> 
> The current code will end up asking the driver to start a new
> scheduled scan without stopping the previous one, and leaking
> some memory (from the previous request.)
> 
> Fix this by doing the abort/restart under the proper conditions.
> 
Applied.

johannes

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 02/10] mac80211: TDLS: add proper HT-oper IE
  2015-10-25  8:59 ` [PATCH 02/10] mac80211: TDLS: add proper HT-oper IE Emmanuel Grumbach
@ 2015-11-03  9:43   ` Johannes Berg
  0 siblings, 0 replies; 19+ messages in thread
From: Johannes Berg @ 2015-11-03  9:43 UTC (permalink / raw)
  To: Emmanuel Grumbach; +Cc: linux-wireless, Arik Nemtsov, Arik Nemtsov

On Sun, 2015-10-25 at 10:59 +0200, Emmanuel Grumbach wrote:
> From: Arik Nemtsov <arik@wizery.com>
> 
> When 11n peers performs a TDLS connection on a legacy BSS, the HT
> operation IE must be specified according to IEEE802.11-2012 section
> 9.23.3.2. Otherwise HT-protection is compromised and the medium 
> becomes
> noisy for both the TDLS and the BSS links.
> 
Applied.

johannes

^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2015-11-03  9:43 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-10-25  8:59 [PATCH 01/10] mac80211: don't reconfigure sched scan in case of wowlan Emmanuel Grumbach
2015-10-25  8:59 ` [PATCH 02/10] mac80211: TDLS: add proper HT-oper IE Emmanuel Grumbach
2015-11-03  9:43   ` Johannes Berg
2015-10-25  8:59 ` [PATCH 03/10] mac80211: use freezable workqueue for restart work Emmanuel Grumbach
2015-11-03  9:37   ` Johannes Berg
2015-10-25  8:59 ` [PATCH 04/10] mac80211: call drv_stop only if driver is started Emmanuel Grumbach
2015-11-03  9:41   ` Johannes Berg
2015-10-25  8:59 ` [PATCH 05/10] mac80211: make enable_qos parameter to ieee80211_set_wmm_default() Emmanuel Grumbach
2015-10-25  9:14   ` Emmanuel Grumbach
2015-10-25  8:59 ` [PATCH 06/10] mac80211: Fix local deauth while associating Emmanuel Grumbach
2015-11-03  9:36   ` Johannes Berg
2015-10-25  8:59 ` [PATCH 07/10] mac80211: allow driver to prevent two stations w/ same address Emmanuel Grumbach
2015-10-25  9:14   ` Emmanuel Grumbach
2015-10-25  8:59 ` [PATCH 08/10] mac80211: Remove WARN_ON_ONCE in ieee80211_recalc_smps Emmanuel Grumbach
2015-11-03  9:38   ` Johannes Berg
2015-10-25  8:59 ` [PATCH 09/10] mac80211: allow null chandef in tracing Emmanuel Grumbach
2015-11-03  9:30   ` Johannes Berg
2015-10-25  8:59 ` [PATCH 10/10] mac80211: further improve "no supported rates" warning Emmanuel Grumbach
2015-11-03  9:42 ` [PATCH 01/10] mac80211: don't reconfigure sched scan in case of wowlan Johannes Berg

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.