Messages in this thread | | | Date | Wed, 16 Dec 2015 11:16:44 -0700 | From | Jason Gunthorpe <> | Subject | Re: [PATCH RESEND] infiniband:core:Add needed error path in cm_init_av_by_path |
| |
On Wed, Dec 16, 2015 at 11:26:39AM +0100, Michael Wang wrote: > > On 12/15/2015 06:30 PM, Jason Gunthorpe wrote: > > On Tue, Dec 15, 2015 at 05:38:34PM +0100, Michael Wang wrote: > >> The hop_limit is only suggest that the package allowed to be > >> routed, not have to, correct? > > > > If the hop limit is >= 2 (?) then the GRH is mandatory. The > > SM will return this information in the PathRecord if it determines a > > GRH is required. The whole stack follows this protocol. > > > > The GRH is optional for in-subnet communications. > > Thanks for the explain :-) > > I've rechecked the ib_init_ah_from_path() again, and found it > still set IB_AH_GRH when the GID cache missing, but with:
How do you mean?
ah_attr->ah_flags = IB_AH_GRH; ah_attr->grh.dgid = rec->dgid;
ret = ib_find_cached_gid(device, &rec->sgid, ndev, &port_num, &gid_index); if (ret) { if (ndev) dev_put(ndev); return ret; }
If find_cached_gid fails then ib_init_ah_from_path also fails.
Is there a case where ib_find_cached_gid can succeed but not return good data?
I agree it would read nicer if the ah_flags and gr.dgid was moved after the ib_find_cached_gid
> BTW, cma_sidr_rep_handler() also call ib_init_ah_from_path() with out > a check on return.
That sounds like a problem.
Jason
| |