Skip to content

Commit

Permalink
IB/core: Refactor to avoid unnecessary check on GID lookup miss
Browse files Browse the repository at this point in the history
Currently on every gid entry comparison miss found variable is checked;
which is not needed as those two comparison fail already indicate that
GID is not found yet.
So refactor to avoid such check and copy the GID index when found.

Signed-off-by: Parav Pandit <parav@mellanox.com>
Reviewed-by: Daniel Jurgens <danielj@mellanox.com>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
  • Loading branch information
Parav Pandit authored and Jason Gunthorpe committed Dec 18, 2017
1 parent b0dd0d3 commit 151ed9d
Showing 1 changed file with 6 additions and 9 deletions.
15 changes: 6 additions & 9 deletions drivers/infiniband/core/cache.c
Original file line number Diff line number Diff line change
Expand Up @@ -573,27 +573,24 @@ static int ib_cache_gid_find_by_filter(struct ib_device *ib_dev,
struct ib_gid_attr attr;

if (table->data_vec[i].props & GID_TABLE_ENTRY_INVALID)
goto next;
continue;

if (memcmp(gid, &table->data_vec[i].gid, sizeof(*gid)))
goto next;
continue;

memcpy(&attr, &table->data_vec[i].attr, sizeof(attr));

if (filter(gid, &attr, context))
if (filter(gid, &attr, context)) {
found = true;

next:
if (found)
if (index)
*index = i;
break;
}
}
read_unlock_irqrestore(&table->rwlock, flags);

if (!found)
return -ENOENT;

if (index)
*index = i;
return 0;
}

Expand Down

0 comments on commit 151ed9d

Please sign in to comment.