Thread (1 message) 1 message, 1 author, 2010-08-26

Re: [IPoIB] Identify multicast packets and fix IGMP breakage V2

From: Jason Gunthorpe <hidden>
Date: 2010-08-26 22:21:46
Also in: linux-rdma

On Thu, Aug 26, 2010 at 03:15:53PM -0700, David Miller wrote:
From: Christoph Lameter <redacted>
Date: Thu, 26 Aug 2010 16:31:14 -0500 (CDT)
quoted
@@ -271,6 +271,13 @@ static void ipoib_ib_handle_rx_wc(struct
 	ipoib_ud_dma_unmap_rx(priv, mapping);
 	ipoib_ud_skb_put_frags(priv, skb, wc->byte_len);

+	if ((wc->wc_flags & IB_WC_GRH) &&
+		IN6_IS_ADDR_MULTICAST(&((struct ipv6hdr *)skb->data)->daddr))
+
+		skb->pkt_type = PACKET_MULTICAST;
+	else
+		skb->pkt_type = PACKET_HOST;
I really don't think you can assume there is an ipv6 header here
at all.
The 40 bytes at this location are defined by the HW specification to
be an IB GRH which has an identical layout to an IPv6 header. Roland
is right, it would be clearer to use ib_grh ->dgid

Jason
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help