aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuodong Xu <guodong.xu@linaro.org>2014-12-29 10:46:21 +0800
committerGuodong Xu <guodong.xu@linaro.org>2015-02-15 19:00:23 +0800
commit0db9336ae10c335bafec56e44f06923379506ac5 (patch)
tree9fbd93922357da45bcd0f25051b04c511ec861ac
parentf0df3ce78ca4c74ac4181b2b396b40b8e1499dd6 (diff)
wlcore: adding a u32 in struct wl1271 to make fields 64bit aligned
Add a u32 in struct wl1271 to make fields reg_ch_conf_last and reg_ch_conf_pending 64bit aligned. Without this, on 64bit ARM, wlcore_set_pending_regdomain_ch() will fail at the point it calls set_bit(ch_bit_idx, (long*)wl->reg_ch_conf_pending); Here is the error message while doing iw wlan0 scan or connect: [ 760.644782] wlcore: WL1271_ACX_INTR_DATA [ 760.648734] Unhandled fault: alignment fault (0x96000021) at 0xffffffc01bdc1b54 [ 760.656048] Internal error: : 96000021 [#1] PREEMPT SMP [ 760.661267] Modules linked in: arc4 wl18xx wlcore mac80211 cfg80211 wlcore_sdio ti_conf_wl18xx btwilink st_drv bluetooth rfkill [ 760.672824] CPU: 0 PID: 1514 Comm: irq/198-wl18xx Tainted: G W 3.10.52-wl-00204-gf704232-dirty #8 [ 760.682558] task: ffffffc01d956040 ti: ffffffc01bea4000 task.ti: ffffffc01bea4000 [ 760.690043] PC is at set_bit+0x14/0x30 [ 760.693806] LR is at wlcore_set_pending_regdomain_ch+0x38/0x44 [wlcore] Signed-off-by: Guodong Xu <guodong.xu@linaro.org>
-rw-r--r--drivers/net/wireless/ti/wlcore/wlcore.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/net/wireless/ti/wlcore/wlcore.h b/drivers/net/wireless/ti/wlcore/wlcore.h
index df78cf12ef15..4c343113aea9 100644
--- a/drivers/net/wireless/ti/wlcore/wlcore.h
+++ b/drivers/net/wireless/ti/wlcore/wlcore.h
@@ -310,6 +310,10 @@ struct wl1271 {
struct work_struct recovery_work;
bool watchdog_recovery;
+ /* FIXME: adding u32 to make the next field 64bit alignment
+ * see commit message to learn more
+ */
+ u32 reserved;
/* Reg domain last configuration */
u32 reg_ch_conf_last[2];
/* Reg domain pending configuration */