From: Jason Gunthorpe <jgunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
To: Christoph Lameter <cl-vYTEC60ixJUAvxtiuMwx3w@public.gmane.org>
Cc: linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
Or Gerlitz <ogerlitz-smomgflXvOZWk0Htik3J/w@public.gmane.org>,
Yossi Etigin <yosefe-smomgflXvOZWk0Htik3J/w@public.gmane.org>,
Roland Dreier <rolandd-FYB4Gu1CFyUAvxtiuMwx3w@public.gmane.org>
Subject: Re: IPoIB: Broken IGMP processing
Date: Mon, 23 Aug 2010 11:41:10 -0600 [thread overview]
Message-ID: <20100823174110.GK26549@obsidianresearch.com> (raw)
In-Reply-To: <alpine.DEB.2.00.1008231210010.9840-sBS69tsa9Uj/9pzu0YdTqQ@public.gmane.org>
On Mon, Aug 23, 2010 at 12:16:40PM -0500, Christoph Lameter wrote:
> +int ipoib_is_ipv4_multicast(u8 *p)
> +{
> + return *((u16 *)(p + 2)) == htonl(IPOIB_MGID_IPV4_SIGNATURE);
> +}
> +
> +int ipoib_is_ipv6_multicast(u8 *p)
> +{
> + return *((u16 *)(p + 2)) == htonl(IPOIB_MGID_IPV6_SIGNATURE);
> +}
static inline for functions in headers?
> +
> /* Used for all multicast joins (broadcast, IPv4 mcast and IPv6 mcast) */
> struct ipoib_mcast {
> struct ib_sa_mcmember_rec mcmember;
> Index: linux-2.6/drivers/infiniband/ulp/ipoib/ipoib_ib.c
> ===================================================================
> +++ linux-2.6/drivers/infiniband/ulp/ipoib/ipoib_ib.c 2010-08-20 19:58:34.000000000 -0500
> @@ -281,8 +281,10 @@ 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 (ipoib_is_ipv4_multicast(skb_mac_header(skb)))
> + 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;
Hmmm... What are you trying to access here? I'm guessing it is the
DGID of the GRH?
ipoib_ud_skb_put_frags(priv, skb, wc->byte_len);
skb_pull(skb, IB_GRH_BYTES); <-- These are the bytes you want
skb_reset_mac_header(skb); <-- Sets skb_mac_header to skb->head+40
skb_pull(skb, IPOIB_ENCAP_LEN);
So, I think you are accessing byte 42, which doesn't seem right? The
DGID starts in byte 24 from skb->head.
Also, you need to check for IBV_WC_GRH, the 40 bytes are garbage if it
is not set.
Maybe checking for checking wc->qp_num == multicast QPN is a better
choice?
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
next prev parent reply other threads:[~2010-08-23 17:41 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-08-23 17:16 IPoIB: Broken IGMP processing Christoph Lameter
[not found] ` <alpine.DEB.2.00.1008231210010.9840-sBS69tsa9Uj/9pzu0YdTqQ@public.gmane.org>
2010-08-23 17:41 ` Jason Gunthorpe [this message]
[not found] ` <20100823174110.GK26549-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2010-08-23 18:10 ` Christoph Lameter
[not found] ` <alpine.DEB.2.00.1008231254300.10719-sBS69tsa9Uj/9pzu0YdTqQ@public.gmane.org>
2010-08-23 18:28 ` Jason Gunthorpe
[not found] ` <20100823182859.GL26549-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2010-08-23 19:27 ` Christoph Lameter
[not found] ` <alpine.DEB.2.00.1008231427130.12815-sBS69tsa9Uj/9pzu0YdTqQ@public.gmane.org>
2010-08-23 19:34 ` Yossi Etigin
[not found] ` <7E95F01E94AB484F83061FCFA35B39F8013249-QfUkFaTmzUSUvQqKE/ONIwC/G2K4zDHf@public.gmane.org>
2010-08-23 19:45 ` Jason Gunthorpe
[not found] ` <20100823194555.GN26549-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2010-08-23 19:50 ` Yossi Etigin
[not found] ` <7E95F01E94AB484F83061FCFA35B39F801324A-QfUkFaTmzUSUvQqKE/ONIwC/G2K4zDHf@public.gmane.org>
2010-08-25 14:43 ` Christoph Lameter
2010-08-23 19:59 ` Christoph Lameter
[not found] ` <alpine.DEB.2.00.1008231454230.12815-sBS69tsa9Uj/9pzu0YdTqQ@public.gmane.org>
2010-08-24 18:49 ` Jason Gunthorpe
2010-08-23 18:19 ` Christoph Lameter
[not found] ` <alpine.DEB.2.00.1008231317150.10719-sBS69tsa9Uj/9pzu0YdTqQ@public.gmane.org>
2010-08-23 18:30 ` Jason Gunthorpe
[not found] ` <20100823183044.GM26549-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2010-08-26 19:55 ` [IPoIB] Identify Multicast packets and fix IGMP breakage Christoph Lameter
[not found] ` <alpine.DEB.2.00.1008261453510.21466-sBS69tsa9Uj/9pzu0YdTqQ@public.gmane.org>
2010-08-26 20:49 ` Roland Dreier
[not found] ` <adapqx5rtez.fsf-FYB4Gu1CFyUAvxtiuMwx3w@public.gmane.org>
2010-08-26 21:17 ` Christoph Lameter
[not found] ` <alpine.DEB.2.00.1008261613160.24174-sBS69tsa9Uj/9pzu0YdTqQ@public.gmane.org>
2010-08-26 21:29 ` Jason Gunthorpe
2010-08-26 21:31 ` [IPoIB] Identify multicast packets and fix IGMP breakage V2 Christoph Lameter
[not found] ` <alpine.DEB.2.00.1008261629440.24174-sBS69tsa9Uj/9pzu0YdTqQ@public.gmane.org>
2010-08-26 22:15 ` David Miller
[not found] ` <20100826.151553.242147157.davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org>
2010-08-26 22:21 ` Jason Gunthorpe
[not found] ` <20100826222146.GA23025-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2010-08-26 23:26 ` [IPoIB] Identify multicast packets and fix IGMP breakage V3 Christoph Lameter
[not found] ` <alpine.DEB.2.00.1008261825490.26351-sBS69tsa9Uj/9pzu0YdTqQ@public.gmane.org>
2010-08-26 23:43 ` Jason Gunthorpe
2010-08-26 23:57 ` Christoph Lameter
[not found] ` <alpine.DEB.2.00.1008261856090.29657-sBS69tsa9Uj/9pzu0YdTqQ@public.gmane.org>
2010-08-27 0:07 ` David Miller
2010-08-27 2:24 ` Christoph Lameter
[not found] ` <20100826234342.GA24333-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2010-08-27 0:02 ` Yossi Etigin
[not found] ` <7E95F01E94AB484F83061FCFA35B39F89BE276-QfUkFaTmzUSUvQqKE/ONIwC/G2K4zDHf@public.gmane.org>
2010-08-27 0:17 ` Jason Gunthorpe
2010-08-27 13:29 ` Christoph Lameter
2010-09-14 7:27 ` Or Gerlitz
[not found] ` <4C8F23DB.2040105-smomgflXvOZWk0Htik3J/w@public.gmane.org>
2010-09-14 14:02 ` Christoph Lameter
[not found] ` <alpine.DEB.2.00.1008270827280.11792-sBS69tsa9Uj/9pzu0YdTqQ@public.gmane.org>
2010-09-28 18:09 ` Roland Dreier
2010-08-26 21:32 ` [IPoIB] Identify Multicast packets and fix IGMP breakage Roland Dreier
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20100823174110.GK26549@obsidianresearch.com \
--to=jgunthorpe-epgobjl8dl3ta4ec/59zmfatqe2ktcn/@public.gmane.org \
--cc=cl-vYTEC60ixJUAvxtiuMwx3w@public.gmane.org \
--cc=linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=ogerlitz-smomgflXvOZWk0Htik3J/w@public.gmane.org \
--cc=rolandd-FYB4Gu1CFyUAvxtiuMwx3w@public.gmane.org \
--cc=yosefe-smomgflXvOZWk0Htik3J/w@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox