On Wed, 2018-03-14 at 19:57 -0700, Matthew Wilcox wrote: > From: Matthew Wilcox <mawilcox@xxxxxxxxxxxxx> > > The mlx5 driver calls ida_pre_get() in a loop for no readily apparent > reason. The driver uses ida_simple_get() which will call > ida_pre_get() > by itself and there's no need to use ida_pre_get() unless using > ida_get_new(). > Hi Matthew, Is this is causing any issues ? or just a simple cleanup ? Adding Maor, the author of this change, I believe the idea is to speed up insert_fte (which calls ida_simple_get) since insert_fte runs under the FTE write semaphore, in this case if ida_pre_get was successful before taking the semaphore for all the FTE nodes in the loop, this will be a huge win for ida_simple_get which will immediately return success without even trying to allocate. so it is a best effort to speed up critical path. Maor, if this is really the case and this is not causing any issues, then we need to consider adding a comment. > Signed-off-by: Matthew Wilcox <mawilcox@xxxxxxxxxxxxx> > > diff --git a/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c > b/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c > index 10e16381f20a..3ba07c7096ef 100644 > --- a/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c > +++ b/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c > @@ -1647,7 +1647,6 @@ try_add_to_existing_fg(struct mlx5_flow_table > *ft, > > list_for_each_entry(iter, match_head, list) { > nested_down_read_ref_node(&iter->g->node, > FS_LOCK_PARENT); > - ida_pre_get(&iter->g->fte_allocator, GFP_KERNEL); > } > > search_again_locked: > ��.n��������+%������w��{.n�����{���fk��ܨ}���Ơz�j:+v�����w����ޙ��&�)ߡ�a����z�ޗ���ݢj��w�f