===================================================================
@@ -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;