summaryrefslogtreecommitdiffstats
path: root/package/mac80211/patches/412-mac80211-warn-ieee80211_hw_config-failure.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/mac80211/patches/412-mac80211-warn-ieee80211_hw_config-failure.patch')
-rw-r--r--package/mac80211/patches/412-mac80211-warn-ieee80211_hw_config-failure.patch113
1 files changed, 113 insertions, 0 deletions
diff --git a/package/mac80211/patches/412-mac80211-warn-ieee80211_hw_config-failure.patch b/package/mac80211/patches/412-mac80211-warn-ieee80211_hw_config-failure.patch
new file mode 100644
index 000000000..f18569b93
--- /dev/null
+++ b/package/mac80211/patches/412-mac80211-warn-ieee80211_hw_config-failure.patch
@@ -0,0 +1,113 @@
+Subject: mac80211: clean up ieee80211_hw_config errors
+
+Warn when ieee80211_hw_config returns an error, it shouldn't
+happen; remove a number of printks that would happen in such
+a case and one printk that is user-triggerable.
+
+Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
+---
+ net/mac80211/cfg.c | 3 +--
+ net/mac80211/main.c | 8 +++++++-
+ net/mac80211/scan.c | 16 +++-------------
+ net/mac80211/util.c | 5 +----
+ net/mac80211/wext.c | 6 +-----
+ 5 files changed, 13 insertions(+), 25 deletions(-)
+
+--- everything.orig/net/mac80211/cfg.c 2008-10-07 20:06:42.000000000 +0200
++++ everything/net/mac80211/cfg.c 2008-10-07 20:06:43.000000000 +0200
+@@ -396,8 +396,7 @@ static int ieee80211_config_beacon(struc
+ */
+ if (params->interval) {
+ sdata->local->hw.conf.beacon_int = params->interval;
+- if (ieee80211_hw_config(sdata->local))
+- return -EINVAL;
++ ieee80211_hw_config(sdata->local);
+ /*
+ * We updated some parameter so if below bails out
+ * it's not an error.
+--- everything.orig/net/mac80211/main.c 2008-10-07 20:06:41.000000000 +0200
++++ everything/net/mac80211/main.c 2008-10-07 20:06:43.000000000 +0200
+@@ -222,8 +222,14 @@ int ieee80211_hw_config(struct ieee80211
+ wiphy_name(local->hw.wiphy), chan->center_freq);
+ #endif
+
+- if (local->open_count)
++ if (local->open_count) {
+ ret = local->ops->config(local_to_hw(local), &local->hw.conf);
++ /*
++ * HW reconfiguration should never fail, the driver has told
++ * us what it can support so it should live up to that promise.
++ */
++ WARN_ON(ret);
++ }
+
+ return ret;
+ }
+--- everything.orig/net/mac80211/scan.c 2008-10-07 20:05:27.000000000 +0200
++++ everything/net/mac80211/scan.c 2008-10-07 20:06:43.000000000 +0200
+@@ -447,18 +447,12 @@ void ieee80211_scan_completed(struct iee
+
+ if (local->hw_scanning) {
+ local->hw_scanning = false;
+- if (ieee80211_hw_config(local))
+- printk(KERN_DEBUG "%s: failed to restore operational "
+- "channel after scan\n", wiphy_name(local->hw.wiphy));
+-
++ ieee80211_hw_config(local);
+ goto done;
+ }
+
+ local->sw_scanning = false;
+- if (ieee80211_hw_config(local))
+- printk(KERN_DEBUG "%s: failed to restore operational "
+- "channel after scan\n", wiphy_name(local->hw.wiphy));
+-
++ ieee80211_hw_config(local);
+
+ netif_tx_lock_bh(local->mdev);
+ netif_addr_lock(local->mdev);
+@@ -545,12 +539,8 @@ void ieee80211_scan_work(struct work_str
+
+ if (!skip) {
+ local->scan_channel = chan;
+- if (ieee80211_hw_config(local)) {
+- printk(KERN_DEBUG "%s: failed to set freq to "
+- "%d MHz for scan\n", wiphy_name(local->hw.wiphy),
+- chan->center_freq);
++ if (ieee80211_hw_config(local))
+ skip = 1;
+- }
+ }
+
+ /* advance state machine to next channel/band */
+--- everything.orig/net/mac80211/util.c 2008-10-07 20:05:27.000000000 +0200
++++ everything/net/mac80211/util.c 2008-10-07 20:06:43.000000000 +0200
+@@ -638,11 +638,8 @@ int ieee80211_set_freq(struct ieee80211_
+
+ if (chan && !(chan->flags & IEEE80211_CHAN_DISABLED)) {
+ if (sdata->vif.type == NL80211_IFTYPE_ADHOC &&
+- chan->flags & IEEE80211_CHAN_NO_IBSS) {
+- printk(KERN_DEBUG "%s: IBSS not allowed on frequency "
+- "%d MHz\n", sdata->dev->name, chan->center_freq);
++ chan->flags & IEEE80211_CHAN_NO_IBSS)
+ return ret;
+- }
+ local->oper_channel = chan;
+
+ if (local->sw_scanning || local->hw_scanning)
+--- everything.orig/net/mac80211/wext.c 2008-10-07 20:05:27.000000000 +0200
++++ everything/net/mac80211/wext.c 2008-10-07 20:06:43.000000000 +0200
+@@ -689,12 +689,8 @@ static int ieee80211_ioctl_siwtxpower(st
+ ieee80211_led_radio(local, local->hw.conf.radio_enabled);
+ }
+
+- if (need_reconfig) {
++ if (need_reconfig)
+ ieee80211_hw_config(local);
+- /* The return value of hw_config is not of big interest here,
+- * as it doesn't say that it failed because of _this_ config
+- * change or something else. Ignore it. */
+- }
+
+ return 0;
+ }