On Thu, Aug 22, 2019 at 07:58:56PM +0200, Marcin Mielniczuk wrote: > On 22.08.2019 19:21, Leon Romanovsky wrote: > > On Thu, Aug 22, 2019 at 07:05:12PM +0200, Marcin Mielniczuk wrote: > >> Thanks a lot, this did the trick. I think this is worth documenting > >> somewhere that this step is needed. > >> I'll make a PR, would README.md in the rdma-core repo be a good place? > > I'm not so sure, but it is better to have in some place instead of not having at all. > I think it's the first place one would look for some information. I'll > make a PR today or tomorrow. > >> Does <NAME> have any significance? I did: > >> > >> sudo rdma link add siw0 type siw netdev enpXsYYfZ > >> > >> but the resulting device is called iwpXsYYfZ. I couldn't find a trace of > >> `siw0` anywhere. > > I would say that it is a bug in kernel part of SIW, because kernel rename > > (the thing which change your siw0 to be iw* name) is looking for absence > > of mentioning PCI inside of /sys/class/infiniband/siw0/* > > https://github.com/linux-rdma/rdma-core/blob/master/kernel-boot/rdma_rename.c#L378 > I don't have /sys/class/infiniband/siw0 on my system, only > /sys/class/infiniband/iwpXsYYfZ. > iwp probably comes from iWARP. Your iwpXsYYfZ was siw0 before rdma_rename was executed. I can't test the patch now, but hope that this change below will fix your problem. diff --git a/drivers/infiniband/sw/siw/siw_main.c b/drivers/infiniband/sw/siw/siw_main.c index 05a92f997f60..38c25a26dfb2 100644 --- a/drivers/infiniband/sw/siw/siw_main.c +++ b/drivers/infiniband/sw/siw/siw_main.c @@ -326,21 +326,6 @@ static struct siw_device *siw_device_create(struct net_device *netdev) struct device *parent = netdev->dev.parent; int rv; - if (!parent) { - /* - * The loopback device has no parent device, - * so it appears as a top-level device. To support - * loopback device connectivity, take this device - * as the parent device. Skip all other devices - * w/o parent device. - */ - if (netdev->type != ARPHRD_LOOPBACK) { - pr_warn("siw: device %s error: no parent device\n", - netdev->name); - return NULL; - } - parent = &netdev->dev; - } sdev = ib_alloc_device(siw_device, base_dev); if (!sdev) return NULL;