|
@@ -711,26 +711,26 @@ static int ipoib_start_xmit(struct sk_buff *skb, struct net_device *dev)
|
|
|
|
|
|
neigh = *to_ipoib_neigh(skb->dst->neighbour);
|
|
|
|
|
|
- if (neigh->ah)
|
|
|
- if (unlikely((memcmp(&neigh->dgid.raw,
|
|
|
- skb->dst->neighbour->ha + 4,
|
|
|
- sizeof(union ib_gid))) ||
|
|
|
- (neigh->dev != dev))) {
|
|
|
- spin_lock_irqsave(&priv->lock, flags);
|
|
|
- /*
|
|
|
- * It's safe to call ipoib_put_ah() inside
|
|
|
- * priv->lock here, because we know that
|
|
|
- * path->ah will always hold one more reference,
|
|
|
- * so ipoib_put_ah() will never do more than
|
|
|
- * decrement the ref count.
|
|
|
- */
|
|
|
+ if (unlikely((memcmp(&neigh->dgid.raw,
|
|
|
+ skb->dst->neighbour->ha + 4,
|
|
|
+ sizeof(union ib_gid))) ||
|
|
|
+ (neigh->dev != dev))) {
|
|
|
+ spin_lock_irqsave(&priv->lock, flags);
|
|
|
+ /*
|
|
|
+ * It's safe to call ipoib_put_ah() inside
|
|
|
+ * priv->lock here, because we know that
|
|
|
+ * path->ah will always hold one more reference,
|
|
|
+ * so ipoib_put_ah() will never do more than
|
|
|
+ * decrement the ref count.
|
|
|
+ */
|
|
|
+ if (neigh->ah)
|
|
|
ipoib_put_ah(neigh->ah);
|
|
|
- list_del(&neigh->list);
|
|
|
- ipoib_neigh_free(dev, neigh);
|
|
|
- spin_unlock_irqrestore(&priv->lock, flags);
|
|
|
- ipoib_path_lookup(skb, dev);
|
|
|
- return NETDEV_TX_OK;
|
|
|
- }
|
|
|
+ list_del(&neigh->list);
|
|
|
+ ipoib_neigh_free(dev, neigh);
|
|
|
+ spin_unlock_irqrestore(&priv->lock, flags);
|
|
|
+ ipoib_path_lookup(skb, dev);
|
|
|
+ return NETDEV_TX_OK;
|
|
|
+ }
|
|
|
|
|
|
if (ipoib_cm_get(neigh)) {
|
|
|
if (ipoib_cm_up(neigh)) {
|