cxgb3: Handle ARP completions that mark neighbors stale.
authorSteve Wise <swise@opengridcomputing.com>
Wed, 6 Feb 2008 18:05:19 +0000 (12:05 -0600)
committerJeff Garzik <jeff@garzik.org>
Mon, 11 Feb 2008 16:09:17 +0000 (11:09 -0500)
When ARP completes due to a request rather than a reply the neighbor is
marked NUD_STALE instead of reachable (see arp_process()).  The handler
for the resulting netevent needs to check also for NUD_STALE.

Failure to use the arp entry can cause RDMA connection failures.

Signed-off-by: Steve Wise <swise@opengridcomputing.com>
Acked-by: Divy Le Ray <divy@chelsio.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
drivers/net/cxgb3/l2t.c

index 17ed4c3527b7727bc033ae4d843490f0bf3b0ea0..865faee53e1720e42241aad509bbc1956e323205 100644 (file)
@@ -404,7 +404,7 @@ found:
                        if (neigh->nud_state & NUD_FAILED) {
                                arpq = e->arpq_head;
                                e->arpq_head = e->arpq_tail = NULL;
-                       } else if (neigh_is_connected(neigh))
+                       } else if (neigh->nud_state & (NUD_CONNECTED|NUD_STALE))
                                setup_l2e_send_pending(dev, NULL, e);
                } else {
                        e->state = neigh_is_connected(neigh) ?