diff --git a/sys/ofed/drivers/infiniband/core/agent.c b/sys/ofed/drivers/infiniband/core/ib_agent.c similarity index 100% rename from sys/ofed/drivers/infiniband/core/agent.c rename to sys/ofed/drivers/infiniband/core/ib_agent.c diff --git a/sys/ofed/drivers/infiniband/core/cm.c b/sys/ofed/drivers/infiniband/core/ib_cm.c similarity index 100% rename from sys/ofed/drivers/infiniband/core/cm.c rename to sys/ofed/drivers/infiniband/core/ib_cm.c diff --git a/sys/ofed/drivers/infiniband/core/cma.c b/sys/ofed/drivers/infiniband/core/ib_cma.c similarity index 100% rename from sys/ofed/drivers/infiniband/core/cma.c rename to sys/ofed/drivers/infiniband/core/ib_cma.c diff --git a/sys/ofed/drivers/infiniband/core/device.c b/sys/ofed/drivers/infiniband/core/ib_device.c similarity index 98% rename from sys/ofed/drivers/infiniband/core/device.c rename to sys/ofed/drivers/infiniband/core/ib_device.c index d0aea0fe425e..9a7c8a07ade7 100644 --- a/sys/ofed/drivers/infiniband/core/device.c +++ b/sys/ofed/drivers/infiniband/core/ib_device.c @@ -755,6 +755,29 @@ void ib_enum_all_roce_netdevs(roce_netdev_filter filter, up_read(&lists_rwsem); } +/** + * ib_cache_gid_del_all_by_netdev - delete GIDs belonging a netdevice + * + * @ndev: Pointer to netdevice + */ +void ib_cache_gid_del_all_by_netdev(struct net_device *ndev) +{ + struct ib_device *ib_dev; + u8 port; + + down_read(&lists_rwsem); + list_for_each_entry(ib_dev, &device_list, core_list) { + for (port = rdma_start_port(ib_dev); + port <= rdma_end_port(ib_dev); + port++) { + if (rdma_protocol_roce(ib_dev, port) == 0) + continue; + (void) ib_cache_gid_del_all_netdev_gids(ib_dev, port, ndev); + } + } + up_read(&lists_rwsem); +} + /** * ib_query_pkey - Get P_Key table entry * @device:Device to query diff --git a/sys/ofed/drivers/infiniband/core/fmr_pool.c b/sys/ofed/drivers/infiniband/core/ib_fmr_pool.c similarity index 100% rename from sys/ofed/drivers/infiniband/core/fmr_pool.c rename to sys/ofed/drivers/infiniband/core/ib_fmr_pool.c diff --git a/sys/ofed/drivers/infiniband/core/iwcm.c b/sys/ofed/drivers/infiniband/core/ib_iwcm.c similarity index 100% rename from sys/ofed/drivers/infiniband/core/iwcm.c rename to sys/ofed/drivers/infiniband/core/ib_iwcm.c diff --git a/sys/ofed/drivers/infiniband/core/mad.c b/sys/ofed/drivers/infiniband/core/ib_mad.c similarity index 100% rename from sys/ofed/drivers/infiniband/core/mad.c rename to sys/ofed/drivers/infiniband/core/ib_mad.c diff --git a/sys/ofed/drivers/infiniband/core/mad_rmpp.c b/sys/ofed/drivers/infiniband/core/ib_mad_rmpp.c similarity index 100% rename from sys/ofed/drivers/infiniband/core/mad_rmpp.c rename to sys/ofed/drivers/infiniband/core/ib_mad_rmpp.c diff --git a/sys/ofed/drivers/infiniband/core/multicast.c b/sys/ofed/drivers/infiniband/core/ib_multicast.c similarity index 100% rename from sys/ofed/drivers/infiniband/core/multicast.c rename to sys/ofed/drivers/infiniband/core/ib_multicast.c diff --git a/sys/ofed/drivers/infiniband/core/packer.c b/sys/ofed/drivers/infiniband/core/ib_packer.c similarity index 100% rename from sys/ofed/drivers/infiniband/core/packer.c rename to sys/ofed/drivers/infiniband/core/ib_packer.c diff --git a/sys/ofed/drivers/infiniband/core/sa_query.c b/sys/ofed/drivers/infiniband/core/ib_sa_query.c similarity index 100% rename from sys/ofed/drivers/infiniband/core/sa_query.c rename to sys/ofed/drivers/infiniband/core/ib_sa_query.c diff --git a/sys/ofed/drivers/infiniband/core/ucm.c b/sys/ofed/drivers/infiniband/core/ib_ucm.c similarity index 100% rename from sys/ofed/drivers/infiniband/core/ucm.c rename to sys/ofed/drivers/infiniband/core/ib_ucm.c diff --git a/sys/ofed/drivers/infiniband/core/ucma.c b/sys/ofed/drivers/infiniband/core/ib_ucma.c similarity index 100% rename from sys/ofed/drivers/infiniband/core/ucma.c rename to sys/ofed/drivers/infiniband/core/ib_ucma.c diff --git a/sys/ofed/drivers/infiniband/core/ud_header.c b/sys/ofed/drivers/infiniband/core/ib_ud_header.c similarity index 100% rename from sys/ofed/drivers/infiniband/core/ud_header.c rename to sys/ofed/drivers/infiniband/core/ib_ud_header.c diff --git a/sys/ofed/drivers/infiniband/core/user_mad.c b/sys/ofed/drivers/infiniband/core/ib_user_mad.c similarity index 100% rename from sys/ofed/drivers/infiniband/core/user_mad.c rename to sys/ofed/drivers/infiniband/core/ib_user_mad.c diff --git a/sys/ofed/drivers/infiniband/core/uverbs_cmd.c b/sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c similarity index 100% rename from sys/ofed/drivers/infiniband/core/uverbs_cmd.c rename to sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c diff --git a/sys/ofed/drivers/infiniband/core/uverbs_main.c b/sys/ofed/drivers/infiniband/core/ib_uverbs_main.c similarity index 97% rename from sys/ofed/drivers/infiniband/core/uverbs_main.c rename to sys/ofed/drivers/infiniband/core/ib_uverbs_main.c index d1c38a25d8c6..49221ba15c7b 100644 --- a/sys/ofed/drivers/infiniband/core/uverbs_main.c +++ b/sys/ofed/drivers/infiniband/core/ib_uverbs_main.c @@ -43,6 +43,7 @@ #include #include #include +#include #include @@ -1117,6 +1118,44 @@ static int find_overflow_devnum(void) return ret; } +static ssize_t +show_dev_device(struct device *device, struct device_attribute *attr, char *buf) +{ + struct ib_uverbs_device *dev = dev_get_drvdata(device); + + if (!dev || !dev->ib_dev->dma_device) + return -ENODEV; + + return sprintf(buf, "0x%04x\n", + ((struct pci_dev *)dev->ib_dev->dma_device)->device); +} +static DEVICE_ATTR(device, S_IRUGO, show_dev_device, NULL); + +static ssize_t +show_dev_vendor(struct device *device, struct device_attribute *attr, char *buf) +{ + struct ib_uverbs_device *dev = dev_get_drvdata(device); + + if (!dev || !dev->ib_dev->dma_device) + return -ENODEV; + + return sprintf(buf, "0x%04x\n", + ((struct pci_dev *)dev->ib_dev->dma_device)->vendor); +} +static DEVICE_ATTR(vendor, S_IRUGO, show_dev_vendor, NULL); + +struct attribute *device_attrs[] = +{ + &dev_attr_device.attr, + &dev_attr_vendor.attr, + NULL +}; + +static struct attribute_group device_group = { + .name = "device", + .attrs = device_attrs +}; + static void ib_uverbs_add_one(struct ib_device *device) { int devnum; @@ -1186,6 +1225,8 @@ static void ib_uverbs_add_one(struct ib_device *device) goto err_class; if (device_create_file(uverbs_dev->dev, &dev_attr_abi_version)) goto err_class; + if (sysfs_create_group(&uverbs_dev->dev->kobj, &device_group)) + goto err_class; ib_set_client_data(device, &uverbs_client, uverbs_dev); @@ -1288,6 +1329,7 @@ static void ib_uverbs_remove_one(struct ib_device *device, void *client_data) if (!uverbs_dev) return; + sysfs_remove_group(&uverbs_dev->dev->kobj, &device_group); dev_set_drvdata(uverbs_dev->dev, NULL); device_destroy(uverbs_class, uverbs_dev->cdev.dev); cdev_del(&uverbs_dev->cdev); diff --git a/sys/ofed/drivers/infiniband/core/uverbs_marshall.c b/sys/ofed/drivers/infiniband/core/ib_uverbs_marshall.c similarity index 100% rename from sys/ofed/drivers/infiniband/core/uverbs_marshall.c rename to sys/ofed/drivers/infiniband/core/ib_uverbs_marshall.c diff --git a/sys/ofed/include/rdma/ib_user_cm.h b/sys/ofed/include/uapi/rdma/ib_user_cm.h similarity index 99% rename from sys/ofed/include/rdma/ib_user_cm.h rename to sys/ofed/include/uapi/rdma/ib_user_cm.h index f79014aa28f9..36ac42897104 100644 --- a/sys/ofed/include/rdma/ib_user_cm.h +++ b/sys/ofed/include/uapi/rdma/ib_user_cm.h @@ -34,7 +34,11 @@ #ifndef IB_USER_CM_H #define IB_USER_CM_H +#ifdef _KERNEL #include +#else +#include +#endif #include #define IB_USER_CM_ABI_VERSION 5 diff --git a/sys/ofed/include/rdma/ib_user_mad.h b/sys/ofed/include/uapi/rdma/ib_user_mad.h similarity index 99% rename from sys/ofed/include/rdma/ib_user_mad.h rename to sys/ofed/include/uapi/rdma/ib_user_mad.h index 09f809f323ea..51afda9cf2f3 100644 --- a/sys/ofed/include/rdma/ib_user_mad.h +++ b/sys/ofed/include/uapi/rdma/ib_user_mad.h @@ -34,8 +34,13 @@ #ifndef IB_USER_MAD_H #define IB_USER_MAD_H +#ifdef _KERNEL #include #include +#else +#include +#include +#endif /* * Increment this value if any changes that break userspace ABI diff --git a/sys/ofed/include/rdma/ib_user_sa.h b/sys/ofed/include/uapi/rdma/ib_user_sa.h similarity index 97% rename from sys/ofed/include/rdma/ib_user_sa.h rename to sys/ofed/include/uapi/rdma/ib_user_sa.h index cfc7c9ba781e..3edc509de008 100644 --- a/sys/ofed/include/rdma/ib_user_sa.h +++ b/sys/ofed/include/uapi/rdma/ib_user_sa.h @@ -33,7 +33,11 @@ #ifndef IB_USER_SA_H #define IB_USER_SA_H +#ifdef _KERNEL #include +#else +#include +#endif enum { IB_PATH_GMP = 1, diff --git a/sys/ofed/include/rdma/ib_user_verbs.h b/sys/ofed/include/uapi/rdma/ib_user_verbs.h similarity index 99% rename from sys/ofed/include/rdma/ib_user_verbs.h rename to sys/ofed/include/uapi/rdma/ib_user_verbs.h index 25225ebbc7d5..61e5213a9785 100644 --- a/sys/ofed/include/rdma/ib_user_verbs.h +++ b/sys/ofed/include/uapi/rdma/ib_user_verbs.h @@ -36,7 +36,11 @@ #ifndef IB_USER_VERBS_H #define IB_USER_VERBS_H +#ifdef _KERNEL #include +#else +#include +#endif /* * Increment this value if any changes that break userspace ABI diff --git a/sys/ofed/include/rdma/rdma_user_cm.h b/sys/ofed/include/uapi/rdma/rdma_user_cm.h similarity index 98% rename from sys/ofed/include/rdma/rdma_user_cm.h rename to sys/ofed/include/uapi/rdma/rdma_user_cm.h index 01923d463673..4331c8b49c8a 100644 --- a/sys/ofed/include/rdma/rdma_user_cm.h +++ b/sys/ofed/include/uapi/rdma/rdma_user_cm.h @@ -33,9 +33,15 @@ #ifndef RDMA_USER_CM_H #define RDMA_USER_CM_H +#ifdef _KERNEL #include #include #include +#else +#include +#include +#endif + #include #include