Re: [PATCH v2 1/1] RDMA/addr: Refresh neighbour entries upon "rdma_resolve_addr"

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Jul 28, 2022 at 10:55:39AM -0700, Gerd Rausch wrote:
> Hi Jason,
> 
> On Fri, 2022-06-24 at 17:55 -0700, Gerd Rausch wrote:
> > In other words, I don't see how the STALE case was covered, and I'd have
> > to guess wether the -ENODATA coupling was intentional or accidental.
> > 
> > Now it may be perfectly possible to just make the "neigh_event_send"
> > call above unconditional and call it a day.
> > 
> > I mean, simpler fixes always win over more complex ones.
> > 
> > But, I personally don't know the twists & turns of this code well enough
> > to be able to assert that this won't leave any non-covered conditional
> > corner cases. I certainly hadn't tested that.
> > 
> 
> I finally got around to trying the much simpler fix, and it appears to
> work just as well:
> 
> --------%<--------%<--------%<--------%<--------%<--------%<--------
> --- drivers/infiniband/core/addr.c-
> +++ drivers/infiniband/core/addr.c
> @@ -336,11 +336,11 @@ static int dst_fetch_ha(const struct dst
>  		return -ENODATA;
>  
>  	if (!(n->nud_state & NUD_VALID)) {
> -		neigh_event_send(n, NULL);
>  		ret = -ENODATA;
>  	} else {
>  		neigh_ha_snapshot(dev_addr->dst_dev_addr, n, dst->dev);
>  	}
> +	neigh_event_send(n, NULL);
>  
>  	neigh_release(n);
>  
> --------%<--------%<--------%<--------%<--------%<--------%<--------
> 
> Tested with IPv4 only, but this should work just as well with IPv6:
> 
> STALE neighbor entries transition to DELAY -> REACHABLE with this
> change, i.e. the entries get updated.

It seems OK, but I would still like to see an attempt to explain how
nud_state and neigh_event_send is supposed to be used.. Maybe futile,
but lets try at least.

Jason



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux