|
@@ -692,9 +692,10 @@ static int ipoib_start_xmit(struct sk_buff *skb, struct net_device *dev)
|
|
|
goto out;
|
|
|
}
|
|
|
} else if (neigh->ah) {
|
|
|
- if (unlikely(memcmp(&neigh->dgid.raw,
|
|
|
+ if (unlikely((memcmp(&neigh->dgid.raw,
|
|
|
skb->dst->neighbour->ha + 4,
|
|
|
- sizeof(union ib_gid)))) {
|
|
|
+ sizeof(union ib_gid))) ||
|
|
|
+ (neigh->dev != dev))) {
|
|
|
spin_lock(&priv->lock);
|
|
|
/*
|
|
|
* It's safe to call ipoib_put_ah() inside
|