diff options
Diffstat (limited to 'net/core/neighbour.c')
| -rw-r--r-- | net/core/neighbour.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/net/core/neighbour.c b/net/core/neighbour.c index e16129019c66..8f8a96ef9f3f 100644 --- a/net/core/neighbour.c +++ b/net/core/neighbour.c | |||
| @@ -836,10 +836,10 @@ out: | |||
| 836 | static __inline__ int neigh_max_probes(struct neighbour *n) | 836 | static __inline__ int neigh_max_probes(struct neighbour *n) |
| 837 | { | 837 | { |
| 838 | struct neigh_parms *p = n->parms; | 838 | struct neigh_parms *p = n->parms; |
| 839 | return (n->nud_state & NUD_PROBE) ? | 839 | int max_probes = NEIGH_VAR(p, UCAST_PROBES) + NEIGH_VAR(p, APP_PROBES); |
| 840 | NEIGH_VAR(p, UCAST_PROBES) : | 840 | if (!(n->nud_state & NUD_PROBE)) |
| 841 | NEIGH_VAR(p, UCAST_PROBES) + NEIGH_VAR(p, APP_PROBES) + | 841 | max_probes += NEIGH_VAR(p, MCAST_PROBES); |
| 842 | NEIGH_VAR(p, MCAST_PROBES); | 842 | return max_probes; |
| 843 | } | 843 | } |
| 844 | 844 | ||
| 845 | static void neigh_invalidate(struct neighbour *neigh) | 845 | static void neigh_invalidate(struct neighbour *neigh) |
| @@ -945,6 +945,7 @@ static void neigh_timer_handler(unsigned long arg) | |||
| 945 | neigh->nud_state = NUD_FAILED; | 945 | neigh->nud_state = NUD_FAILED; |
| 946 | notify = 1; | 946 | notify = 1; |
| 947 | neigh_invalidate(neigh); | 947 | neigh_invalidate(neigh); |
| 948 | goto out; | ||
| 948 | } | 949 | } |
| 949 | 950 | ||
| 950 | if (neigh->nud_state & NUD_IN_TIMER) { | 951 | if (neigh->nud_state & NUD_IN_TIMER) { |
