diff mbox

IPoIB: Broken IGMP processing

Message ID alpine.DEB.2.00.1008231254300.10719@router.home (mailing list archive)
State Superseded, archived
Headers show

Commit Message

Christoph Lameter (Ampere) Aug. 23, 2010, 6:10 p.m. UTC
None
diff mbox

Patch

Index: linux-2.6/drivers/infiniband/ulp/ipoib/ipoib_ib.c
===================================================================
--- linux-2.6.orig/drivers/infiniband/ulp/ipoib/ipoib_ib.c	2010-08-23 13:07:32.000000000 -0500
+++ linux-2.6/drivers/infiniband/ulp/ipoib/ipoib_ib.c	2010-08-23 13:09:06.000000000 -0500
@@ -223,6 +223,7 @@  static void ipoib_ib_handle_rx_wc(struct
 	unsigned int wr_id = wc->wr_id & ~IPOIB_OP_RECV;
 	struct sk_buff *skb;
 	u64 mapping[IPOIB_UD_RX_SG];
+	struct ipoib_dev_priv *multicast_priv = netdev_priv(priv->broadcast->dev);

 	ipoib_dbg_data(priv, "recv completion: id %d, status: %d\n",
 		       wr_id, wc->status);
@@ -281,8 +282,11 @@  static void ipoib_ib_handle_rx_wc(struct
 	dev->stats.rx_bytes += skb->len;

 	skb->dev = dev;
-	/* XXX get correct PACKET_ type here */
-	skb->pkt_type = PACKET_HOST;
+	if (wc->src_qp == multicast_priv->qp->qp_num)
+
+		skb->pkt_type = PACKET_MULTICAST;
+	else
+		skb->pkt_type = PACKET_HOST;

 	if (test_bit(IPOIB_FLAG_CSUM, &priv->flags) && likely(wc->csum_ok))
 		skb->ip_summed = CHECKSUM_UNNECESSARY;