Skip to content

Commit

Permalink
IPoIB: Free ipoib neigh on path record failure so path rec queries ar…
Browse files Browse the repository at this point in the history
…e retried

If IPoIB fails to look up a path record (eg if it tries during an SM
failover when one SM is dead but the new one hasn't taken over yet), the
driver ends up with a neighbour structure but no address handle (AH).
There's no mechanism to recover from this: any further packets sent to
this destination will be silently dumped in ipoib_start_xmit().

Fix this by freeing the neighbour structures when a path rec query
fails, so that the next packet queued to be sent will trigger a new path
record query.

Signed-off-by: Roland Dreier <roland@purestorage.com>
  • Loading branch information
Roland Dreier committed Feb 25, 2013
1 parent 5a2815f commit f72dd56
Showing 1 changed file with 3 additions and 0 deletions.
3 changes: 3 additions & 0 deletions drivers/infiniband/ulp/ipoib/ipoib_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -510,6 +510,9 @@ static void path_rec_completion(int status,

spin_unlock_irqrestore(&priv->lock, flags);

if (IS_ERR_OR_NULL(ah))
ipoib_del_neighs_by_gid(dev, path->pathrec.dgid.raw);

if (old_ah)
ipoib_put_ah(old_ah);

Expand Down

0 comments on commit f72dd56

Please sign in to comment.