diff options
Diffstat (limited to 'drivers/infiniband/core/verbs.c')
| -rw-r--r-- | drivers/infiniband/core/verbs.c | 9 | 
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/infiniband/core/verbs.c b/drivers/infiniband/core/verbs.c index f974b6854224..35c2841a569e 100644 --- a/drivers/infiniband/core/verbs.c +++ b/drivers/infiniband/core/verbs.c @@ -662,16 +662,17 @@ static bool find_gid_index(const union ib_gid *gid,  			   void *context)  {  	struct find_gid_index_context *ctx = context; +	u16 vlan_id = 0xffff; +	int ret;  	if (ctx->gid_type != gid_attr->gid_type)  		return false; -	if ((!!(ctx->vlan_id != 0xffff) == !is_vlan_dev(gid_attr->ndev)) || -	    (is_vlan_dev(gid_attr->ndev) && -	     vlan_dev_vlan_id(gid_attr->ndev) != ctx->vlan_id)) +	ret = rdma_read_gid_l2_fields(gid_attr, &vlan_id, NULL); +	if (ret)  		return false; -	return true; +	return ctx->vlan_id == vlan_id;  }  static const struct ib_gid_attr *  |