Commit 823b23da authored by Parav Pandit's avatar Parav Pandit Committed by Jason Gunthorpe
Browse files

IB/core: Allow vlan link local address based RoCE GIDs



IPv6 link local address for a VLAN netdevice has nothing to do with its
resemblance with the default GID, because VLAN link local GID is in
different layer 2 domain.

Now that RoCE MAD packet processing and route resolution consider the
right GID index, there is no need for an unnecessary check which prevents
the addition of vlan based IPv6 link local GIDs.

Signed-off-by: default avatarParav Pandit <parav@mellanox.com>
Reviewed-by: default avatarDaniel Jurgens <danielj@mellanox.com>
Signed-off-by: default avatarLeon Romanovsky <leonro@mellanox.com>
Signed-off-by: default avatarJason Gunthorpe <jgg@mellanox.com>
parent 5fb58c9e
Loading
Loading
Loading
Loading
+4 −23
Original line number Diff line number Diff line
@@ -543,30 +543,11 @@ out_unlock:
int ib_cache_gid_add(struct ib_device *ib_dev, u8 port,
		     union ib_gid *gid, struct ib_gid_attr *attr)
{
	struct net_device *idev;
	unsigned long mask;
	int ret;

	idev = ib_device_get_netdev(ib_dev, port);
	if (idev && attr->ndev != idev) {
		union ib_gid default_gid;

		/* Adding default GIDs is not permitted */
		make_default_gid(idev, &default_gid);
		if (!memcmp(gid, &default_gid, sizeof(*gid))) {
			dev_put(idev);
			return -EPERM;
		}
	}
	if (idev)
		dev_put(idev);

	mask = GID_ATTR_FIND_MASK_GID |
	unsigned long mask = GID_ATTR_FIND_MASK_GID |
			     GID_ATTR_FIND_MASK_GID_TYPE |
			     GID_ATTR_FIND_MASK_NETDEV;

	ret = __ib_cache_gid_add(ib_dev, port, gid, attr, mask, false);
	return ret;
	return __ib_cache_gid_add(ib_dev, port, gid, attr, mask, false);
}

static int