mac80211: update brcmfmac backporting brcmf_err cleanups
authorRafał Miłecki <rafal@milecki.pl>
Thu, 9 Feb 2017 23:17:08 +0000 (00:17 +0100)
committerRafał Miłecki <rafal@milecki.pl>
Thu, 9 Feb 2017 23:40:49 +0000 (00:40 +0100)
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
package/kernel/mac80211/patches/318-0001-brcmfmac-check-brcmf_bus_get_memdump-result-for-erro.patch [new file with mode: 0644]
package/kernel/mac80211/patches/318-brcmfmac-check-brcmf_bus_get_memdump-result-for-erro.patch [deleted file]
package/kernel/mac80211/patches/319-0002-brcmfmac-be-more-verbose-when-PSM-s-watchdog-fires.patch [new file with mode: 0644]
package/kernel/mac80211/patches/319-0003-brcmfmac-use-wiphy_read_of_freq_limits-to-respect-li.patch [new file with mode: 0644]
package/kernel/mac80211/patches/319-0004-brcmfmac-merge-two-brcmf_err-macros-into-one.patch [new file with mode: 0644]
package/kernel/mac80211/patches/319-0005-brcmfmac-switch-to-C-function-__brcmf_err-for-printi.patch [new file with mode: 0644]
package/kernel/mac80211/patches/319-0006-brcmfmac-merge-two-remaining-brcmf_err-macros.patch [new file with mode: 0644]
package/kernel/mac80211/patches/319-brcmfmac-be-more-verbose-when-PSM-s-watchdog-fires.patch [deleted file]
package/kernel/mac80211/patches/840-brcmfmac-use-wiphy_read_of_freq_limits.patch [deleted file]

diff --git a/package/kernel/mac80211/patches/318-0001-brcmfmac-check-brcmf_bus_get_memdump-result-for-erro.patch b/package/kernel/mac80211/patches/318-0001-brcmfmac-check-brcmf_bus_get_memdump-result-for-erro.patch
new file mode 100644 (file)
index 0000000..4ae4c60
--- /dev/null
@@ -0,0 +1,52 @@
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
+Date: Mon, 30 Jan 2017 16:09:51 +0100
+Subject: [PATCH] brcmfmac: check brcmf_bus_get_memdump result for error
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+This method may be unsupported (see: USB bus) or may just fail (see:
+SDIO bus).
+While at it rework logic in brcmf_sdio_bus_get_memdump function to avoid
+too many conditional code nesting levels.
+
+Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
+Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
+Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
+---
+
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.c
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.c
+@@ -32,16 +32,25 @@ static int brcmf_debug_create_memdump(st
+ {
+       void *dump;
+       size_t ramsize;
++      int err;
+       ramsize = brcmf_bus_get_ramsize(bus);
+-      if (ramsize) {
+-              dump = vzalloc(len + ramsize);
+-              if (!dump)
+-                      return -ENOMEM;
+-              memcpy(dump, data, len);
+-              brcmf_bus_get_memdump(bus, dump + len, ramsize);
+-              dev_coredumpv(bus->dev, dump, len + ramsize, GFP_KERNEL);
++      if (!ramsize)
++              return -ENOTSUPP;
++
++      dump = vzalloc(len + ramsize);
++      if (!dump)
++              return -ENOMEM;
++
++      memcpy(dump, data, len);
++      err = brcmf_bus_get_memdump(bus, dump + len, ramsize);
++      if (err) {
++              vfree(dump);
++              return err;
+       }
++
++      dev_coredumpv(bus->dev, dump, len + ramsize, GFP_KERNEL);
++
+       return 0;
+ }
diff --git a/package/kernel/mac80211/patches/318-brcmfmac-check-brcmf_bus_get_memdump-result-for-erro.patch b/package/kernel/mac80211/patches/318-brcmfmac-check-brcmf_bus_get_memdump-result-for-erro.patch
deleted file mode 100644 (file)
index 4ae4c60..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
-Date: Mon, 30 Jan 2017 16:09:51 +0100
-Subject: [PATCH] brcmfmac: check brcmf_bus_get_memdump result for error
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-This method may be unsupported (see: USB bus) or may just fail (see:
-SDIO bus).
-While at it rework logic in brcmf_sdio_bus_get_memdump function to avoid
-too many conditional code nesting levels.
-
-Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
-Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
-Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
----
-
---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.c
-+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.c
-@@ -32,16 +32,25 @@ static int brcmf_debug_create_memdump(st
- {
-       void *dump;
-       size_t ramsize;
-+      int err;
-       ramsize = brcmf_bus_get_ramsize(bus);
--      if (ramsize) {
--              dump = vzalloc(len + ramsize);
--              if (!dump)
--                      return -ENOMEM;
--              memcpy(dump, data, len);
--              brcmf_bus_get_memdump(bus, dump + len, ramsize);
--              dev_coredumpv(bus->dev, dump, len + ramsize, GFP_KERNEL);
-+      if (!ramsize)
-+              return -ENOTSUPP;
-+
-+      dump = vzalloc(len + ramsize);
-+      if (!dump)
-+              return -ENOMEM;
-+
-+      memcpy(dump, data, len);
-+      err = brcmf_bus_get_memdump(bus, dump + len, ramsize);
-+      if (err) {
-+              vfree(dump);
-+              return err;
-       }
-+
-+      dev_coredumpv(bus->dev, dump, len + ramsize, GFP_KERNEL);
-+
-       return 0;
- }
diff --git a/package/kernel/mac80211/patches/319-0002-brcmfmac-be-more-verbose-when-PSM-s-watchdog-fires.patch b/package/kernel/mac80211/patches/319-0002-brcmfmac-be-more-verbose-when-PSM-s-watchdog-fires.patch
new file mode 100644 (file)
index 0000000..2a3b838
--- /dev/null
@@ -0,0 +1,38 @@
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
+Date: Mon, 30 Jan 2017 16:09:52 +0100
+Subject: [PATCH] brcmfmac: be more verbose when PSM's watchdog fires
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+It's important to inform user so he knows things went wrong. He may also
+want to get memory dump for further debugging purposes.
+
+Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
+Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
+Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
+---
+
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.c
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.c
+@@ -58,10 +58,18 @@ static int brcmf_debug_psm_watchdog_noti
+                                          const struct brcmf_event_msg *evtmsg,
+                                          void *data)
+ {
++      int err;
++
+       brcmf_dbg(TRACE, "enter: bsscfgidx=%d\n", ifp->bsscfgidx);
+-      return brcmf_debug_create_memdump(ifp->drvr->bus_if, data,
+-                                        evtmsg->datalen);
++      brcmf_err("PSM's watchdog has fired!\n");
++
++      err = brcmf_debug_create_memdump(ifp->drvr->bus_if, data,
++                                       evtmsg->datalen);
++      if (err)
++              brcmf_err("Failed to get memory dump, %d\n", err);
++
++      return err;
+ }
+ void brcmf_debugfs_init(void)
diff --git a/package/kernel/mac80211/patches/319-0003-brcmfmac-use-wiphy_read_of_freq_limits-to-respect-li.patch b/package/kernel/mac80211/patches/319-0003-brcmfmac-use-wiphy_read_of_freq_limits-to-respect-li.patch
new file mode 100644 (file)
index 0000000..6448bad
--- /dev/null
@@ -0,0 +1,44 @@
+From 0f83ff69735651cc7a3d150466a5257ff829b62b Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
+Date: Tue, 17 Jan 2017 23:35:50 +0100
+Subject: [PATCH] brcmfmac: use wiphy_read_of_freq_limits to respect limits
+ from DT
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+This new helper reads extra frequency limits specified in DT and
+disables unavailable chanels. This is useful for devices (like home
+routers) with chipsets limited e.g. by board design.
+
+In order to respect info read from DT we simply need to check for
+IEEE80211_CHAN_DISABLED bit when constructing channel info.
+
+Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
+Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
+---
+ drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
+@@ -5908,6 +5908,9 @@ static int brcmf_construct_chaninfo(stru
+                       continue;
+               }
++              if (channel->orig_flags & IEEE80211_CHAN_DISABLED)
++                      continue;
++
+               /* assuming the chanspecs order is HT20,
+                * HT40 upper, HT40 lower, and VHT80.
+                */
+@@ -6509,6 +6512,9 @@ static int brcmf_setup_wiphy(struct wiph
+                       wiphy->bands[NL80211_BAND_5GHZ] = band;
+               }
+       }
++
++      wiphy_read_of_freq_limits(wiphy);
++
+       return 0;
+ }
diff --git a/package/kernel/mac80211/patches/319-0004-brcmfmac-merge-two-brcmf_err-macros-into-one.patch b/package/kernel/mac80211/patches/319-0004-brcmfmac-merge-two-brcmf_err-macros-into-one.patch
new file mode 100644 (file)
index 0000000..defd579
--- /dev/null
@@ -0,0 +1,43 @@
+From 9587a01a7ead9efc5032c16e0d9668de58be1186 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
+Date: Thu, 2 Feb 2017 22:33:13 +0100
+Subject: [PATCH] brcmfmac: merge two brcmf_err macros into one
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+This allows simplifying the code by adding a simple IS_ENABLED check for
+CONFIG_BRCMDB symbol.
+
+Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
+Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
+Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
+---
+ drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.h | 8 ++------
+ 1 file changed, 2 insertions(+), 6 deletions(-)
+
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.h
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.h
+@@ -45,20 +45,16 @@
+ #undef pr_fmt
+ #define pr_fmt(fmt)           KBUILD_MODNAME ": " fmt
++#ifndef CPTCFG_BRCM_TRACING
+ /* Macro for error messages. net_ratelimit() is used when driver
+  * debugging is not selected. When debugging the driver error
+  * messages are as important as other tracing or even more so.
+  */
+-#ifndef CPTCFG_BRCM_TRACING
+-#ifdef CPTCFG_BRCMDBG
+-#define brcmf_err(fmt, ...)   pr_err("%s: " fmt, __func__, ##__VA_ARGS__)
+-#else
+ #define brcmf_err(fmt, ...)                                           \
+       do {                                                            \
+-              if (net_ratelimit())                                    \
++              if (IS_ENABLED(CPTCFG_BRCMDBG) || net_ratelimit())      \
+                       pr_err("%s: " fmt, __func__, ##__VA_ARGS__);    \
+       } while (0)
+-#endif
+ #else
+ __printf(2, 3)
+ void __brcmf_err(const char *func, const char *fmt, ...);
diff --git a/package/kernel/mac80211/patches/319-0005-brcmfmac-switch-to-C-function-__brcmf_err-for-printi.patch b/package/kernel/mac80211/patches/319-0005-brcmfmac-switch-to-C-function-__brcmf_err-for-printi.patch
new file mode 100644 (file)
index 0000000..5baf696
--- /dev/null
@@ -0,0 +1,69 @@
+From 087fa712a00685dac4bcc64b7c3dc8ae6bee8026 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
+Date: Thu, 2 Feb 2017 22:33:14 +0100
+Subject: [PATCH] brcmfmac: switch to C function (__brcmf_err) for printing
+ errors
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+This will allow extending code and using more detailed messages e.g.
+with the help of dev_err.
+
+Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
+Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
+Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
+---
+ .../net/wireless/broadcom/brcm80211/brcmfmac/common.c    | 16 ++++++++++++++++
+ drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.h |  6 +++---
+ 2 files changed, 19 insertions(+), 3 deletions(-)
+
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
+@@ -218,6 +218,22 @@ done:
+       return err;
+ }
++#ifndef CPTCFG_BRCM_TRACING
++void __brcmf_err(const char *func, const char *fmt, ...)
++{
++      struct va_format vaf;
++      va_list args;
++
++      va_start(args, fmt);
++
++      vaf.fmt = fmt;
++      vaf.va = &args;
++      pr_err("%s: %pV", func, &vaf);
++
++      va_end(args);
++}
++#endif
++
+ #if defined(CPTCFG_BRCM_TRACING) || defined(CPTCFG_BRCMDBG)
+ void __brcmf_dbg(u32 level, const char *func, const char *fmt, ...)
+ {
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.h
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.h
+@@ -45,6 +45,8 @@
+ #undef pr_fmt
+ #define pr_fmt(fmt)           KBUILD_MODNAME ": " fmt
++__printf(2, 3)
++void __brcmf_err(const char *func, const char *fmt, ...);
+ #ifndef CPTCFG_BRCM_TRACING
+ /* Macro for error messages. net_ratelimit() is used when driver
+  * debugging is not selected. When debugging the driver error
+@@ -53,11 +55,9 @@
+ #define brcmf_err(fmt, ...)                                           \
+       do {                                                            \
+               if (IS_ENABLED(CPTCFG_BRCMDBG) || net_ratelimit())      \
+-                      pr_err("%s: " fmt, __func__, ##__VA_ARGS__);    \
++                      __brcmf_err(__func__, fmt, ##__VA_ARGS__);      \
+       } while (0)
+ #else
+-__printf(2, 3)
+-void __brcmf_err(const char *func, const char *fmt, ...);
+ #define brcmf_err(fmt, ...) \
+       __brcmf_err(__func__, fmt, ##__VA_ARGS__)
+ #endif
diff --git a/package/kernel/mac80211/patches/319-0006-brcmfmac-merge-two-remaining-brcmf_err-macros.patch b/package/kernel/mac80211/patches/319-0006-brcmfmac-merge-two-remaining-brcmf_err-macros.patch
new file mode 100644 (file)
index 0000000..3aaddb8
--- /dev/null
@@ -0,0 +1,46 @@
+From d0630555650a394cf5743268820511f527a561a5 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
+Date: Thu, 2 Feb 2017 22:33:15 +0100
+Subject: [PATCH] brcmfmac: merge two remaining brcmf_err macros
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Now we always have __brcmf_err function we can do perfectly fine with
+just one macro.
+
+Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
+Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
+Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
+---
+ drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.h | 14 +++++---------
+ 1 file changed, 5 insertions(+), 9 deletions(-)
+
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.h
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.h
+@@ -47,20 +47,16 @@
+ __printf(2, 3)
+ void __brcmf_err(const char *func, const char *fmt, ...);
+-#ifndef CPTCFG_BRCM_TRACING
+-/* Macro for error messages. net_ratelimit() is used when driver
+- * debugging is not selected. When debugging the driver error
+- * messages are as important as other tracing or even more so.
++/* Macro for error messages. When debugging / tracing the driver all error
++ * messages are important to us.
+  */
+ #define brcmf_err(fmt, ...)                                           \
+       do {                                                            \
+-              if (IS_ENABLED(CPTCFG_BRCMDBG) || net_ratelimit())      \
++              if (IS_ENABLED(CPTCFG_BRCMDBG) ||                       \
++                  IS_ENABLED(CPTCFG_BRCM_TRACING) ||                  \
++                  net_ratelimit())                                    \
+                       __brcmf_err(__func__, fmt, ##__VA_ARGS__);      \
+       } while (0)
+-#else
+-#define brcmf_err(fmt, ...) \
+-      __brcmf_err(__func__, fmt, ##__VA_ARGS__)
+-#endif
+ #if defined(DEBUG) || defined(CPTCFG_BRCM_TRACING)
+ __printf(3, 4)
diff --git a/package/kernel/mac80211/patches/319-brcmfmac-be-more-verbose-when-PSM-s-watchdog-fires.patch b/package/kernel/mac80211/patches/319-brcmfmac-be-more-verbose-when-PSM-s-watchdog-fires.patch
deleted file mode 100644 (file)
index 2a3b838..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
-Date: Mon, 30 Jan 2017 16:09:52 +0100
-Subject: [PATCH] brcmfmac: be more verbose when PSM's watchdog fires
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-It's important to inform user so he knows things went wrong. He may also
-want to get memory dump for further debugging purposes.
-
-Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
-Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
-Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
----
-
---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.c
-+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.c
-@@ -58,10 +58,18 @@ static int brcmf_debug_psm_watchdog_noti
-                                          const struct brcmf_event_msg *evtmsg,
-                                          void *data)
- {
-+      int err;
-+
-       brcmf_dbg(TRACE, "enter: bsscfgidx=%d\n", ifp->bsscfgidx);
--      return brcmf_debug_create_memdump(ifp->drvr->bus_if, data,
--                                        evtmsg->datalen);
-+      brcmf_err("PSM's watchdog has fired!\n");
-+
-+      err = brcmf_debug_create_memdump(ifp->drvr->bus_if, data,
-+                                       evtmsg->datalen);
-+      if (err)
-+              brcmf_err("Failed to get memory dump, %d\n", err);
-+
-+      return err;
- }
- void brcmf_debugfs_init(void)
diff --git a/package/kernel/mac80211/patches/840-brcmfmac-use-wiphy_read_of_freq_limits.patch b/package/kernel/mac80211/patches/840-brcmfmac-use-wiphy_read_of_freq_limits.patch
deleted file mode 100644 (file)
index a9d77ca..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
-Subject: [PATCH] brcmfmac: use wiphy_read_of_freq_limits
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
----
-
---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
-+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
-@@ -5908,6 +5908,9 @@ static int brcmf_construct_chaninfo(stru
-                       continue;
-               }
-+              if (channel->orig_flags & IEEE80211_CHAN_DISABLED)
-+                      continue;
-+
-               /* assuming the chanspecs order is HT20,
-                * HT40 upper, HT40 lower, and VHT80.
-                */
-@@ -6509,6 +6512,9 @@ static int brcmf_setup_wiphy(struct wiph
-                       wiphy->bands[NL80211_BAND_5GHZ] = band;
-               }
-       }
-+
-+      wiphy_read_of_freq_limits(wiphy);
-+
-       return 0;
- }