RDMA/siw: Enable siw on tunnel devices
authorBernard Metzler <bmt@zurich.ibm.com>
Tue, 10 May 2022 14:39:17 +0000 (16:39 +0200)
committerJason Gunthorpe <jgg@nvidia.com>
Wed, 11 May 2022 16:52:38 +0000 (13:52 -0300)
Enable siw to attach to tunnel devices, there is no reason not to, siw
properly generates all packets already.

Link: https://lore.kernel.org/r/20220510143917.23735-1-bmt@zurich.ibm.com
Tested-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Bernard Metzler <bmt@zurich.ibm.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
drivers/infiniband/sw/siw/siw_main.c

index e5c5869..dacc174 100644 (file)
@@ -119,6 +119,7 @@ static int siw_dev_qualified(struct net_device *netdev)
         * <linux/if_arp.h> for type identifiers.
         */
        if (netdev->type == ARPHRD_ETHER || netdev->type == ARPHRD_IEEE802 ||
         * <linux/if_arp.h> for type identifiers.
         */
        if (netdev->type == ARPHRD_ETHER || netdev->type == ARPHRD_IEEE802 ||
+           netdev->type == ARPHRD_NONE ||
            (netdev->type == ARPHRD_LOOPBACK && loopback_enabled))
                return 1;
 
            (netdev->type == ARPHRD_LOOPBACK && loopback_enabled))
                return 1;
 
@@ -315,12 +316,12 @@ static struct siw_device *siw_device_create(struct net_device *netdev)
 
        sdev->netdev = netdev;
 
 
        sdev->netdev = netdev;
 
-       if (netdev->type != ARPHRD_LOOPBACK) {
+       if (netdev->type != ARPHRD_LOOPBACK && netdev->type != ARPHRD_NONE) {
                addrconf_addr_eui48((unsigned char *)&base_dev->node_guid,
                                    netdev->dev_addr);
        } else {
                /*
                addrconf_addr_eui48((unsigned char *)&base_dev->node_guid,
                                    netdev->dev_addr);
        } else {
                /*
-                * The loopback device does not have a HW address,
+                * This device does not have a HW address,
                 * but connection mangagement lib expects gid != 0
                 */
                size_t len = min_t(size_t, strlen(base_dev->name), 6);
                 * but connection mangagement lib expects gid != 0
                 */
                size_t len = min_t(size_t, strlen(base_dev->name), 6);