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]

 



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.

Thanks,

  Gerd





[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