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>
This commit is contained in:
committed by
John W. Linville
parent
5b36583425
commit
18889231e4
@@ -43,6 +43,23 @@ enum mesh_path_flags {
|
||||
MESH_PATH_RESOLVED = BIT(4),
|
||||
};
|
||||
|
||||
/**
|
||||
* enum mesh_deferred_task_flags - mac80211 mesh deferred tasks
|
||||
*
|
||||
*
|
||||
*
|
||||
* @MESH_WORK_HOUSEKEEPING: run the periodic mesh housekeeping tasks
|
||||
* @MESH_WORK_GROW_MPATH_TABLE: the mesh path table is full and needs
|
||||
* to grow.
|
||||
* @MESH_WORK_GROW_MPP_TABLE: the mesh portals table is full and needs to
|
||||
* grow
|
||||
*/
|
||||
enum mesh_deferred_task_flags {
|
||||
MESH_WORK_HOUSEKEEPING,
|
||||
MESH_WORK_GROW_MPATH_TABLE,
|
||||
MESH_WORK_GROW_MPP_TABLE,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct mesh_path - mac80211 mesh path structure
|
||||
*
|
||||
@@ -250,7 +267,8 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata,
|
||||
/* Mesh tables */
|
||||
struct mesh_table *mesh_table_alloc(int size_order);
|
||||
void mesh_table_free(struct mesh_table *tbl, bool free_leafs);
|
||||
struct mesh_table *mesh_table_grow(struct mesh_table *tbl);
|
||||
void mesh_mpath_table_grow(void);
|
||||
void mesh_mpp_table_grow(void);
|
||||
u32 mesh_table_hash(u8 *addr, struct ieee80211_sub_if_data *sdata,
|
||||
struct mesh_table *tbl);
|
||||
/* Mesh paths */
|
||||
|
Reference in New Issue
Block a user