OSDN Git Service

IB/{core, ipoib}: Simplify ib_find_gid to search only for IB link layer
authorParav Pandit <parav@mellanox.com>
Tue, 14 Nov 2017 12:52:12 +0000 (14:52 +0200)
committerJason Gunthorpe <jgg@mellanox.com>
Mon, 18 Dec 2017 22:37:10 +0000 (15:37 -0700)
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>
drivers/infiniband/core/device.c
drivers/infiniband/ulp/ipoib/ipoib_ib.c
include/rdma/ib_verbs.h

index 84fc32a..bb2686d 100644 (file)
@@ -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) {
index 3b96cda..b9fa217 100644 (file)
@@ -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);
 
index fd84cda..cfd8370 100644 (file)
@@ -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);