Add support for IPv6 link local GIDs equal to the default GID for

VLANs in ibcore.

IPv6 link local addresses are usually derived from the netdev MAC
address. This is applicable to VLAN devices and its lower netdevice as
well. In such cases the IPv6 link local address is a duplicate of the
default GID.

Now that link local IPv6 addresses based GIDs are supported, allow
adding such GID entries in the GID table.

MFC after:	1 week
Sponsored by:	Mellanox Technologies
This commit is contained in:
Hans Petter Selasky 2018-03-05 11:55:29 +00:00
parent be5c019762
commit 42fa341d9c
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=330492

View File

@ -336,7 +336,6 @@ int ib_cache_gid_add(struct ib_device *ib_dev, u8 port,
struct ib_gid_table *table;
int ix;
int ret = 0;
struct net_device *idev;
int empty;
table = ports_table[port - rdma_start_port(ib_dev)];
@ -344,22 +343,6 @@ int ib_cache_gid_add(struct ib_device *ib_dev, u8 port,
if (!memcmp(gid, &zgid, sizeof(*gid)))
return -EINVAL;
if (ib_dev->get_netdev) {
idev = ib_dev->get_netdev(ib_dev, port);
if (idev && attr->ndev != idev) {
union ib_gid default_gid;
/* Adding default GIDs in 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);
}
mutex_lock(&table->lock);
write_lock_irq(&table->rwlock);