On 20/02/2015 00:02, Somnath Kotur wrote: > --- a/drivers/infiniband/core/addr.c > +++ b/drivers/infiniband/core/addr.c > @@ -458,7 +458,7 @@ static void resolve_cb(int status, struct sockaddr > *src_addr, > } > > int rdma_addr_find_dmac_by_grh(union ib_gid *sgid, union ib_gid *dgid, u8 > *dmac, > - u16 *vlan_id) > + u16 *vlan_id, int if_index) > { > int ret = 0; > struct rdma_dev_addr dev_addr; > @@ -481,6 +481,7 @@ int rdma_addr_find_dmac_by_grh(union ib_gid *sgid, union > ib_gid *dgid, u8 *dmac, > return ret; > > memset(&dev_addr, 0, sizeof(dev_addr)); > + dev_addr.bound_dev_if = if_index;
There's a call to rdma_resolve_ip later in this function. I think it overrides the if_index you store here. I would expect this function to somehow limit the address resolution done by rdma_resolve_ip so that the result has to use if_index as a source interface. > > ctx.addr = &dev_addr; > init_completion(&ctx.comp); -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html