aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorParav Pandit <parav@mellanox.com>2019-04-10 04:23:03 -0400
committerJason Gunthorpe <jgg@mellanox.com>2019-04-24 09:08:15 -0400
commit823b23da71132b80d9f41ab667c68b112455f3b6 (patch)
treeb24020aa0670f71a597aef635d08cfc9661683a6
parent5fb58c9e2fb11edd12379b20be01ee54a7bac026 (diff)
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: Parav Pandit <parav@mellanox.com> Reviewed-by: Daniel Jurgens <danielj@mellanox.com> Signed-off-by: Leon Romanovsky <leonro@mellanox.com> Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
-rw-r--r--drivers/infiniband/core/cache.c27
1 files changed, 4 insertions, 23 deletions
diff --git a/drivers/infiniband/core/cache.c b/drivers/infiniband/core/cache.c
index 43c67e5f43c6..7499e7016e38 100644
--- a/drivers/infiniband/core/cache.c
+++ b/drivers/infiniband/core/cache.c
@@ -543,30 +543,11 @@ out_unlock:
543int ib_cache_gid_add(struct ib_device *ib_dev, u8 port, 543int ib_cache_gid_add(struct ib_device *ib_dev, u8 port,
544 union ib_gid *gid, struct ib_gid_attr *attr) 544 union ib_gid *gid, struct ib_gid_attr *attr)
545{ 545{
546 struct net_device *idev; 546 unsigned long mask = GID_ATTR_FIND_MASK_GID |
547 unsigned long mask; 547 GID_ATTR_FIND_MASK_GID_TYPE |
548 int ret; 548 GID_ATTR_FIND_MASK_NETDEV;
549
550 idev = ib_device_get_netdev(ib_dev, port);
551 if (idev && attr->ndev != idev) {
552 union ib_gid default_gid;
553
554 /* Adding default GIDs is not permitted */
555 make_default_gid(idev, &default_gid);
556 if (!memcmp(gid, &default_gid, sizeof(*gid))) {
557 dev_put(idev);
558 return -EPERM;
559 }
560 }
561 if (idev)
562 dev_put(idev);
563
564 mask = GID_ATTR_FIND_MASK_GID |
565 GID_ATTR_FIND_MASK_GID_TYPE |
566 GID_ATTR_FIND_MASK_NETDEV;
567 549
568 ret = __ib_cache_gid_add(ib_dev, port, gid, attr, mask, false); 550 return __ib_cache_gid_add(ib_dev, port, gid, attr, mask, false);
569 return ret;
570} 551}
571 552
572static int 553static int