forked from Minki/linux
IB/{core, ipoib}: Simplify ib_find_gid to search only for IB link layer
Currently there are no users of ib_find_gid for RoCE transport. It is only used by IPoIB. Therefore its simplified to ignore RoCE ports and GID type check which was previously done for every port. Signed-off-by: Parav Pandit <parav@mellanox.com> Reviewed-by: Eli Cohen <eli@mellanox.com> Signed-off-by: Leon Romanovsky <leon@kernel.org> Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
This commit is contained in:
parent
5092d17a39
commit
dbb12562f7
@ -1017,32 +1017,22 @@ EXPORT_SYMBOL(ib_modify_port);
|
||||
|
||||
/**
|
||||
* ib_find_gid - Returns the port number and GID table index where
|
||||
* a specified GID value occurs.
|
||||
* a specified GID value occurs. Its searches only for IB link layer.
|
||||
* @device: The device to query.
|
||||
* @gid: The GID value to search for.
|
||||
* @gid_type: Type of GID.
|
||||
* @ndev: The ndev related to the GID to search for.
|
||||
* @port_num: The port number of the device where the GID value was found.
|
||||
* @index: The index into the GID table where the GID was found. This
|
||||
* parameter may be NULL.
|
||||
*/
|
||||
int ib_find_gid(struct ib_device *device, union ib_gid *gid,
|
||||
enum ib_gid_type gid_type, struct net_device *ndev,
|
||||
u8 *port_num, u16 *index)
|
||||
struct net_device *ndev, u8 *port_num, u16 *index)
|
||||
{
|
||||
union ib_gid tmp_gid;
|
||||
int ret, port, i;
|
||||
|
||||
for (port = rdma_start_port(device); port <= rdma_end_port(device); ++port) {
|
||||
if (rdma_cap_roce_gid_table(device, port)) {
|
||||
if (!ib_find_cached_gid_by_port(device, gid, gid_type, port,
|
||||
ndev, index)) {
|
||||
*port_num = port;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (gid_type != IB_GID_TYPE_IB)
|
||||
if (rdma_cap_roce_gid_table(device, port))
|
||||
continue;
|
||||
|
||||
for (i = 0; i < device->port_immutable[port].gid_tbl_len; ++i) {
|
||||
|
@ -1085,8 +1085,7 @@ static bool ipoib_dev_addr_changed_valid(struct ipoib_dev_priv *priv)
|
||||
|
||||
netif_addr_unlock_bh(priv->dev);
|
||||
|
||||
err = ib_find_gid(priv->ca, &search_gid, IB_GID_TYPE_IB,
|
||||
priv->dev, &port, &index);
|
||||
err = ib_find_gid(priv->ca, &search_gid, priv->dev, &port, &index);
|
||||
|
||||
netif_addr_lock_bh(priv->dev);
|
||||
|
||||
|
@ -2836,8 +2836,7 @@ int ib_modify_port(struct ib_device *device,
|
||||
struct ib_port_modify *port_modify);
|
||||
|
||||
int ib_find_gid(struct ib_device *device, union ib_gid *gid,
|
||||
enum ib_gid_type gid_type, struct net_device *ndev,
|
||||
u8 *port_num, u16 *index);
|
||||
struct net_device *ndev, u8 *port_num, u16 *index);
|
||||
|
||||
int ib_find_pkey(struct ib_device *device,
|
||||
u8 port_num, u16 pkey, u16 *index);
|
||||
|
Loading…
Reference in New Issue
Block a user