diff options
author | Guodong Xu <guodong.xu@linaro.org> | 2014-12-29 10:46:21 +0800 |
---|---|---|
committer | Guodong Xu <guodong.xu@linaro.org> | 2015-11-10 20:59:57 +0800 |
commit | 93b06a6d4bc77a3d01b47b023498e6fbdf031b7d (patch) | |
tree | cb5f3318581e45763ea4fd2c718edae7442433c1 | |
parent | 89de2b2d23e5f0c470e187aecce8340a53d84b41 (diff) |
wlcore: make reg_ch_conf_last and _pending 64bit aligned
In struct wl1271, 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.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/net/wireless/ti/wlcore/wlcore.h b/drivers/net/wireless/ti/wlcore/wlcore.h index 7f363fa566a3..0614397e3b5a 100644 --- a/drivers/net/wireless/ti/wlcore/wlcore.h +++ b/drivers/net/wireless/ti/wlcore/wlcore.h @@ -318,9 +318,9 @@ struct wl1271 { bool watchdog_recovery; /* Reg domain last configuration */ - u32 reg_ch_conf_last[2]; + u32 reg_ch_conf_last[2] __aligned(8); /* Reg domain pending configuration */ - u32 reg_ch_conf_pending[2]; + u32 reg_ch_conf_pending[2] __aligned(8); /* Pointer that holds DMA-friendly block for the mailbox */ void *mbox; |