aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorJavier Cardona <javier@cozybit.com>2010-12-07 16:35:55 -0500
committerJohn W. Linville <linville@tuxdriver.com>2010-12-08 15:23:44 -0500
commitd82b577b8cf89a17cab932db272769dfc69a98df (patch)
tree929ffe65c04ff4e18a1fc6c4d685e96001c08617 /drivers
parent229bd792be0bad245b78ed8f119952733a4752e5 (diff)
ath5k: Fix beaconing in mesh mode
This patch fixes the oops below when attempting to bring up a mesh interface on ath5k hardware. [ 128.933099] kernel BUG at drivers/net/wireless/ath/ath5k/base.c:197! [ 128.933099] invalid opcode: 0000 [#1] (...) [ 128.933099] Call Trace: [ 128.933099] [<c83b77fa>] ? ath5k_beacon_update+0x57/0x1f8 [ath5k] [ 128.933099] [<c02d9a40>] ? __sysfs_add_one+0x28/0x76 [ 128.933099] [<c83b830e>] ? ath5k_bss_info_changed+0x13f/0x173 [ath5k] [ 128.933099] [<c82ff629>] ? ieee80211_config_beacon+0xc0/0x17e [mac80211] [ 128.933099] [<c82f073e>] ? ieee80211_bss_info_change_notify+0x182/0x18b [mac80211] [ 128.933099] [<c83b81cf>] ? ath5k_bss_info_changed+0x0/0x173 [ath5k] [ 128.933099] [<c82ff6d6>] ? ieee80211_config_beacon+0x16d/0x17e [mac80211] [ 128.933099] [<c82ff753>] ? ieee80211_add_beacon+0x34/0x39 [mac80211] [ 128.933099] [<c830a4ed>] ? ieee80211s_init+0xf8/0x10f [mac80211] [ 128.933099] [<c830a5df>] ? ieee80211_mesh_init_sdata+0xdb/0x154 [mac80211] Signed-off-by: Javier Cardona <javier@cozybit.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/ath/ath5k/base.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/net/wireless/ath/ath5k/base.c b/drivers/net/wireless/ath/ath5k/base.c
index 8251946842e6..29b855c426bb 100644
--- a/drivers/net/wireless/ath/ath5k/base.c
+++ b/drivers/net/wireless/ath/ath5k/base.c
@@ -1949,8 +1949,9 @@ ath5k_beacon_send(struct ath5k_softc *sc)
1949 /* NB: hw still stops DMA, so proceed */ 1949 /* NB: hw still stops DMA, so proceed */
1950 } 1950 }
1951 1951
1952 /* refresh the beacon for AP mode */ 1952 /* refresh the beacon for AP or MESH mode */
1953 if (sc->opmode == NL80211_IFTYPE_AP) 1953 if (sc->opmode == NL80211_IFTYPE_AP ||
1954 sc->opmode == NL80211_IFTYPE_MESH_POINT)
1954 ath5k_beacon_update(sc->hw, vif); 1955 ath5k_beacon_update(sc->hw, vif);
1955 1956
1956 ath5k_hw_set_txdp(ah, sc->bhalq, bf->daddr); 1957 ath5k_hw_set_txdp(ah, sc->bhalq, bf->daddr);
@@ -2851,7 +2852,8 @@ static int ath5k_add_interface(struct ieee80211_hw *hw,
2851 2852
2852 /* Assign the vap/adhoc to a beacon xmit slot. */ 2853 /* Assign the vap/adhoc to a beacon xmit slot. */
2853 if ((avf->opmode == NL80211_IFTYPE_AP) || 2854 if ((avf->opmode == NL80211_IFTYPE_AP) ||
2854 (avf->opmode == NL80211_IFTYPE_ADHOC)) { 2855 (avf->opmode == NL80211_IFTYPE_ADHOC) ||
2856 (avf->opmode == NL80211_IFTYPE_MESH_POINT)) {
2855 int slot; 2857 int slot;
2856 2858
2857 WARN_ON(list_empty(&sc->bcbuf)); 2859 WARN_ON(list_empty(&sc->bcbuf));