diff options
author | Thomas Pedersen <thomas@cozybit.com> | 2013-06-13 15:54:41 -0700 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2013-06-18 15:57:27 +0200 |
commit | f81a9dedaff434604c7fc3d9c299d277b76db0a8 (patch) | |
tree | 0e11854521a0f93738bd451455046cbc0b986381 /net/mac80211/mesh.h | |
parent | a1193be83b4bb173228f04870afd6a4174b19130 (diff) | |
download | blackbird-op-linux-f81a9dedaff434604c7fc3d9c299d277b76db0a8.tar.gz blackbird-op-linux-f81a9dedaff434604c7fc3d9c299d277b76db0a8.zip |
mac80211: update mesh beacon on workqueue
Instead of updating the mesh beacon immediately when
requested (which would require the sdata_lock()), defer it
to the mac80211 workqueue.
Fixes yet another deadlock on calling sta_info_flush()
with the sdata_lock() held from ieee80211_stop_mesh(). We
could just drop the sdata_lock() around the
mesh_sta_cleanup() call, but this path is also taken from
several non-locked error paths.
Signed-off-by: Thomas Pedersen <thomas@cozybit.com>
[fix comment position]
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211/mesh.h')
-rw-r--r-- | net/mac80211/mesh.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/net/mac80211/mesh.h b/net/mac80211/mesh.h index 01a28bca6e9b..2bc7fd2f787d 100644 --- a/net/mac80211/mesh.h +++ b/net/mac80211/mesh.h @@ -58,6 +58,7 @@ enum mesh_path_flags { * @MESH_WORK_ROOT: the mesh root station needs to send a frame * @MESH_WORK_DRIFT_ADJUST: time to compensate for clock drift relative to other * mesh nodes + * @MESH_WORK_MBSS_CHANGED: rebuild beacon and notify driver of BSS changes */ enum mesh_deferred_task_flags { MESH_WORK_HOUSEKEEPING, @@ -65,6 +66,7 @@ enum mesh_deferred_task_flags { MESH_WORK_GROW_MPP_TABLE, MESH_WORK_ROOT, MESH_WORK_DRIFT_ADJUST, + MESH_WORK_MBSS_CHANGED, }; /** |