summaryrefslogtreecommitdiffstats
path: root/brcmfmac-gcc47.patch
diff options
context:
space:
mode:
authorJohn W. Linville <linville@tuxdriver.com>2012-01-16 13:51:57 -0500
committerJohn W. Linville <linville@tuxdriver.com>2012-01-16 13:51:57 -0500
commit912fdfca681d38f1ec1eca0051a9a9c16cb4c9a0 (patch)
treec299f257f40504664075a2d9ba0237346978d4ad /brcmfmac-gcc47.patch
parent6c1c9987c61dc3c67ad8ffbd9ea2ec3fe4eba73f (diff)
downloadkernel-912fdfca681d38f1ec1eca0051a9a9c16cb4c9a0.tar.gz
kernel-912fdfca681d38f1ec1eca0051a9a9c16cb4c9a0.tar.xz
kernel-912fdfca681d38f1ec1eca0051a9a9c16cb4c9a0.zip
Re-enable CONFIG_BRCMFMAC builds (found work-around for GCC 4.7 builds)
Diffstat (limited to 'brcmfmac-gcc47.patch')
-rw-r--r--brcmfmac-gcc47.patch27
1 files changed, 27 insertions, 0 deletions
diff --git a/brcmfmac-gcc47.patch b/brcmfmac-gcc47.patch
new file mode 100644
index 000000000..751876c36
--- /dev/null
+++ b/brcmfmac-gcc47.patch
@@ -0,0 +1,27 @@
+Alexandre Oliva <oliva@lsd.ic.unicamp.br> sent me a patch:
+
+"I see you ran into the same problem I did in brcmfmac. I wasn't sure a
+build with compat-wireless would run into the same problem I did without
+it and with Linux-libre.
+
+It's an issue brought about by GCC 4.7's partial-inlining, that ends up
+splitting the udelay function just at the wrong spot, in such a way that
+some sanity checks for constants fails, and we end up calling
+bad_udelay.
+
+This patch fixes the problem. Feel free to push it upstream if it makes
+sense to you."
+
+diff --git a/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c b/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c
+index 5eddabe..eda1d4e 100644
+--- a/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c
++++ b/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c
+@@ -2463,7 +2463,7 @@ static s32 brcmf_init_iscan(struct brcmf_cfg80211_priv *cfg_priv)
+ return err;
+ }
+
+-static void brcmf_delay(u32 ms)
++static __always_inline void brcmf_delay(u32 ms)
+ {
+ if (ms < 1000 / HZ) {
+ cond_resched();