OSDN Git Service

IB/core: Add interfaces to get VF node and port GUIDs
authorDanit Goldberg <danitg@mellanox.com>
Wed, 6 Nov 2019 13:08:32 +0000 (15:08 +0200)
committerLeon Romanovsky <leonro@mellanox.com>
Fri, 22 Nov 2019 16:17:24 +0000 (18:17 +0200)
Provide ability to get node and port GUIDs of VFs to be symmetrical
to already existing set option.

Signed-off-by: Danit Goldberg <danitg@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
drivers/infiniband/core/device.c
drivers/infiniband/core/verbs.c
include/rdma/ib_verbs.h

index 99c4a55..38fadbe 100644 (file)
@@ -2614,6 +2614,7 @@ void ib_set_device_ops(struct ib_device *dev, const struct ib_device_ops *ops)
        SET_DEVICE_OP(dev_ops, get_port_immutable);
        SET_DEVICE_OP(dev_ops, get_vector_affinity);
        SET_DEVICE_OP(dev_ops, get_vf_config);
+       SET_DEVICE_OP(dev_ops, get_vf_guid);
        SET_DEVICE_OP(dev_ops, get_vf_stats);
        SET_DEVICE_OP(dev_ops, init_port);
        SET_DEVICE_OP(dev_ops, invalidate_range);
index f974b68..7d96351 100644 (file)
@@ -2458,6 +2458,16 @@ int ib_set_vf_guid(struct ib_device *device, int vf, u8 port, u64 guid,
 }
 EXPORT_SYMBOL(ib_set_vf_guid);
 
+int ib_get_vf_guid(struct ib_device *device, int vf, u8 port,
+                  struct ifla_vf_guid *node_guid,
+                  struct ifla_vf_guid *port_guid)
+{
+       if (!device->ops.get_vf_guid)
+               return -EOPNOTSUPP;
+
+       return device->ops.get_vf_guid(device, vf, port, node_guid, port_guid);
+}
+EXPORT_SYMBOL(ib_get_vf_guid);
 /**
  * ib_map_mr_sg_pi() - Map the dma mapped SG lists for PI (protection
  *     information) and set an appropriate memory region for registration.
index 6a47ba8..ec7d1a1 100644 (file)
@@ -2448,6 +2448,9 @@ struct ib_device_ops {
                             struct ifla_vf_info *ivf);
        int (*get_vf_stats)(struct ib_device *device, int vf, u8 port,
                            struct ifla_vf_stats *stats);
+       int (*get_vf_guid)(struct ib_device *device, int vf, u8 port,
+                           struct ifla_vf_guid *node_guid,
+                           struct ifla_vf_guid *port_guid);
        int (*set_vf_guid)(struct ib_device *device, int vf, u8 port, u64 guid,
                           int type);
        struct ib_wq *(*create_wq)(struct ib_pd *pd,
@@ -3303,6 +3306,9 @@ int ib_get_vf_config(struct ib_device *device, int vf, u8 port,
                     struct ifla_vf_info *info);
 int ib_get_vf_stats(struct ib_device *device, int vf, u8 port,
                    struct ifla_vf_stats *stats);
+int ib_get_vf_guid(struct ib_device *device, int vf, u8 port,
+                   struct ifla_vf_guid *node_guid,
+                   struct ifla_vf_guid *port_guid);
 int ib_set_vf_guid(struct ib_device *device, int vf, u8 port, u64 guid,
                   int type);