diff options
Diffstat (limited to 'drivers/infiniband/ulp/ipoib/ipoib_multicast.c')
| -rw-r--r-- | drivers/infiniband/ulp/ipoib/ipoib_multicast.c | 10 |
1 files changed, 1 insertions, 9 deletions
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c index f7ff9dd66cda..20ebc6fd1bb9 100644 --- a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c +++ b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c | |||
| @@ -262,21 +262,13 @@ static int ipoib_mcast_join_finish(struct ipoib_mcast *mcast, | |||
| 262 | netif_tx_lock_bh(dev); | 262 | netif_tx_lock_bh(dev); |
| 263 | while (!skb_queue_empty(&mcast->pkt_queue)) { | 263 | while (!skb_queue_empty(&mcast->pkt_queue)) { |
| 264 | struct sk_buff *skb = skb_dequeue(&mcast->pkt_queue); | 264 | struct sk_buff *skb = skb_dequeue(&mcast->pkt_queue); |
| 265 | struct dst_entry *dst = skb_dst(skb); | ||
| 266 | struct neighbour *n = NULL; | ||
| 267 | 265 | ||
| 268 | netif_tx_unlock_bh(dev); | 266 | netif_tx_unlock_bh(dev); |
| 269 | 267 | ||
| 270 | skb->dev = dev; | 268 | skb->dev = dev; |
| 271 | if (dst) | ||
| 272 | n = dst_get_neighbour_noref_raw(dst); | ||
| 273 | if (!dst || !n) { | ||
| 274 | /* put pseudoheader back on for next time */ | ||
| 275 | skb_push(skb, sizeof (struct ipoib_pseudoheader)); | ||
| 276 | } | ||
| 277 | |||
| 278 | if (dev_queue_xmit(skb)) | 269 | if (dev_queue_xmit(skb)) |
| 279 | ipoib_warn(priv, "dev_queue_xmit failed to requeue packet\n"); | 270 | ipoib_warn(priv, "dev_queue_xmit failed to requeue packet\n"); |
| 271 | |||
| 280 | netif_tx_lock_bh(dev); | 272 | netif_tx_lock_bh(dev); |
| 281 | } | 273 | } |
| 282 | netif_tx_unlock_bh(dev); | 274 | netif_tx_unlock_bh(dev); |
