return ret;
 }
 
-int ib_cache_gid_del(struct ib_device *ib_dev, u8 port,
-                    union ib_gid *gid, struct ib_gid_attr *attr)
+static int
+_ib_cache_gid_del(struct ib_device *ib_dev, u8 port,
+                 union ib_gid *gid, struct ib_gid_attr *attr,
+                 bool default_gid)
 {
        struct ib_gid_table *table;
        int ret = 0;
 
        mutex_lock(&table->lock);
 
-       ix = find_gid(table, gid, attr, false,
+       ix = find_gid(table, gid, attr, default_gid,
                      GID_ATTR_FIND_MASK_GID      |
                      GID_ATTR_FIND_MASK_GID_TYPE |
+                     GID_ATTR_FIND_MASK_DEFAULT  |
                      GID_ATTR_FIND_MASK_NETDEV,
                      NULL);
        if (ix < 0) {
        return ret;
 }
 
+int ib_cache_gid_del(struct ib_device *ib_dev, u8 port,
+                    union ib_gid *gid, struct ib_gid_attr *attr)
+{
+       return _ib_cache_gid_del(ib_dev, port, gid, attr, false);
+}
+
 int ib_cache_gid_del_all_netdev_gids(struct ib_device *ib_dev, u8 port,
                                     struct net_device *ndev)
 {
                        __ib_cache_gid_add(ib_dev, port, &gid,
                                           &gid_attr, mask, true);
                } else if (mode == IB_CACHE_GID_DEFAULT_MODE_DELETE) {
-                       ib_cache_gid_del(ib_dev, port, &gid, &gid_attr);
+                       _ib_cache_gid_del(ib_dev, port, &gid, &gid_attr, true);
                }
        }
 }