Loading drivers/infiniband/ulp/ipoib/ipoib_main.c +3 −1 Original line number Diff line number Diff line Loading @@ -715,7 +715,7 @@ static int ipoib_start_xmit(struct sk_buff *skb, struct net_device *dev) rcu_read_lock(); if (likely(skb_dst(skb))) { n = dst_get_neighbour_noref(skb_dst(skb)); n = dst_neigh_lookup_skb(skb_dst(skb), skb); if (!n) { ++dev->stats.tx_dropped; dev_kfree_skb_any(skb); Loading Loading @@ -797,6 +797,8 @@ static int ipoib_start_xmit(struct sk_buff *skb, struct net_device *dev) } } unlock: if (n) neigh_release(n); rcu_read_unlock(); return NETDEV_TX_OK; } Loading drivers/infiniband/ulp/ipoib/ipoib_multicast.c +13 −9 Original line number Diff line number Diff line Loading @@ -720,17 +720,21 @@ void ipoib_mcast_send(struct net_device *dev, void *mgid, struct sk_buff *skb) rcu_read_lock(); if (dst) n = dst_get_neighbour_noref(dst); if (n && !*to_ipoib_neigh(n)) { struct ipoib_neigh *neigh = ipoib_neigh_alloc(n, skb->dev); n = dst_neigh_lookup_skb(dst, skb); if (n) { if (!*to_ipoib_neigh(n)) { struct ipoib_neigh *neigh; neigh = ipoib_neigh_alloc(n, skb->dev); if (neigh) { kref_get(&mcast->ah->ref); neigh->ah = mcast->ah; list_add_tail(&neigh->list, &mcast->neigh_list); list_add_tail(&neigh->list, &mcast->neigh_list); } } neigh_release(n); } rcu_read_unlock(); spin_unlock_irqrestore(&priv->lock, flags); ipoib_send(dev, skb, mcast->ah, IB_MULTICAST_QPN); Loading Loading
drivers/infiniband/ulp/ipoib/ipoib_main.c +3 −1 Original line number Diff line number Diff line Loading @@ -715,7 +715,7 @@ static int ipoib_start_xmit(struct sk_buff *skb, struct net_device *dev) rcu_read_lock(); if (likely(skb_dst(skb))) { n = dst_get_neighbour_noref(skb_dst(skb)); n = dst_neigh_lookup_skb(skb_dst(skb), skb); if (!n) { ++dev->stats.tx_dropped; dev_kfree_skb_any(skb); Loading Loading @@ -797,6 +797,8 @@ static int ipoib_start_xmit(struct sk_buff *skb, struct net_device *dev) } } unlock: if (n) neigh_release(n); rcu_read_unlock(); return NETDEV_TX_OK; } Loading
drivers/infiniband/ulp/ipoib/ipoib_multicast.c +13 −9 Original line number Diff line number Diff line Loading @@ -720,17 +720,21 @@ void ipoib_mcast_send(struct net_device *dev, void *mgid, struct sk_buff *skb) rcu_read_lock(); if (dst) n = dst_get_neighbour_noref(dst); if (n && !*to_ipoib_neigh(n)) { struct ipoib_neigh *neigh = ipoib_neigh_alloc(n, skb->dev); n = dst_neigh_lookup_skb(dst, skb); if (n) { if (!*to_ipoib_neigh(n)) { struct ipoib_neigh *neigh; neigh = ipoib_neigh_alloc(n, skb->dev); if (neigh) { kref_get(&mcast->ah->ref); neigh->ah = mcast->ah; list_add_tail(&neigh->list, &mcast->neigh_list); list_add_tail(&neigh->list, &mcast->neigh_list); } } neigh_release(n); } rcu_read_unlock(); spin_unlock_irqrestore(&priv->lock, flags); ipoib_send(dev, skb, mcast->ah, IB_MULTICAST_QPN); Loading