diff options
author | Javier Cardona <javier@cozybit.com> | 2009-08-10 15:15:52 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-08-14 09:14:01 -0400 |
commit | 18889231e4527dfe23145efe318e74744794a95d (patch) | |
tree | bcb509dab37d80f6dbbfb6671a530aa882c9975e /net/mac80211/mesh.h | |
parent | 5b365834255d7c90fc724b032c814dfa297aacf9 (diff) |
mac80211: Move mpath and mpp growth to mesh workqueue.
This prevents calling rcu_synchronize from within the tx path by moving the
table growth code to the mesh workqueue.
Move mesh_table_free and mesh_table_grow from mesh.c to mesh_pathtbl.c and
declare them static.
Also, re-enable mesh in Kconfig and update the configuration description.
Signed-off-by: Javier Cardona <javier@cozybit.com>
Tested-by: Andrey Yurovsky <andrey@cozybit.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/mesh.h')
-rw-r--r-- | net/mac80211/mesh.h | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/net/mac80211/mesh.h b/net/mac80211/mesh.h index 4241925095c7..eb23fc639b2b 100644 --- a/net/mac80211/mesh.h +++ b/net/mac80211/mesh.h | |||
@@ -44,6 +44,23 @@ enum mesh_path_flags { | |||
44 | }; | 44 | }; |
45 | 45 | ||
46 | /** | 46 | /** |
47 | * enum mesh_deferred_task_flags - mac80211 mesh deferred tasks | ||
48 | * | ||
49 | * | ||
50 | * | ||
51 | * @MESH_WORK_HOUSEKEEPING: run the periodic mesh housekeeping tasks | ||
52 | * @MESH_WORK_GROW_MPATH_TABLE: the mesh path table is full and needs | ||
53 | * to grow. | ||
54 | * @MESH_WORK_GROW_MPP_TABLE: the mesh portals table is full and needs to | ||
55 | * grow | ||
56 | */ | ||
57 | enum mesh_deferred_task_flags { | ||
58 | MESH_WORK_HOUSEKEEPING, | ||
59 | MESH_WORK_GROW_MPATH_TABLE, | ||
60 | MESH_WORK_GROW_MPP_TABLE, | ||
61 | }; | ||
62 | |||
63 | /** | ||
47 | * struct mesh_path - mac80211 mesh path structure | 64 | * struct mesh_path - mac80211 mesh path structure |
48 | * | 65 | * |
49 | * @dst: mesh path destination mac address | 66 | * @dst: mesh path destination mac address |
@@ -250,7 +267,8 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, | |||
250 | /* Mesh tables */ | 267 | /* Mesh tables */ |
251 | struct mesh_table *mesh_table_alloc(int size_order); | 268 | struct mesh_table *mesh_table_alloc(int size_order); |
252 | void mesh_table_free(struct mesh_table *tbl, bool free_leafs); | 269 | void mesh_table_free(struct mesh_table *tbl, bool free_leafs); |
253 | struct mesh_table *mesh_table_grow(struct mesh_table *tbl); | 270 | void mesh_mpath_table_grow(void); |
271 | void mesh_mpp_table_grow(void); | ||
254 | u32 mesh_table_hash(u8 *addr, struct ieee80211_sub_if_data *sdata, | 272 | u32 mesh_table_hash(u8 *addr, struct ieee80211_sub_if_data *sdata, |
255 | struct mesh_table *tbl); | 273 | struct mesh_table *tbl); |
256 | /* Mesh paths */ | 274 | /* Mesh paths */ |