RE: [E1000-devel] [PATCH 1/3] ixgbe, ixgbevf: Add new mbox API to enable MC promiscuous mode

From: Skidmore, Donald C
Date: Fri Feb 13 2015 - 12:26:16 EST




> -----Original Message-----
> From: Hiroshi Shimamoto [mailto:h-shimamoto@xxxxxxxxxxxxx]
> Sent: Thursday, February 12, 2015 8:45 PM
> To: Skidmore, Donald C; Kirsher, Jeffrey T
> Cc: Alexander Duyck; BjÃrn Mork; e1000-devel@xxxxxxxxxxxxxxxxxxxxx;
> netdev@xxxxxxxxxxxxxxx; Choi, Sy Jong; linux-kernel@xxxxxxxxxxxxxxx; David
> Laight; Hayato Momma
> Subject: RE: [E1000-devel] [PATCH 1/3] ixgbe, ixgbevf: Add new mbox API to
> enable MC promiscuous mode
>
> > > > -----Original Message-----
> > > > From: Hiroshi Shimamoto [mailto:h-shimamoto@xxxxxxxxxxxxx]
> > > > Sent: Monday, February 09, 2015 6:29 PM
> > > > To: Kirsher, Jeffrey T
> > > > Cc: Alexander Duyck; Skidmore, Donald C; BjÃrn Mork; e1000-
> > > > devel@xxxxxxxxxxxxxxxxxxxxx; netdev@xxxxxxxxxxxxxxx; Choi, Sy
> > > > Jong; linux- kernel@xxxxxxxxxxxxxxx; David Laight; Hayato Momma
> > > > Subject: RE: [E1000-devel] [PATCH 1/3] ixgbe, ixgbevf: Add new
> > > > mbox API to enable MC promiscuous mode
> > > >
> > > > > > > > Can you please fix up your patches based on my tree:
> > > > > > > > git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/que
> > > > > > > > ue.git
> > > > > > >
> > > > > > > Yes. I haven't noticed your tree.
> > > > > > > Will resend patches against it.
> > > > > > >
> > > > > >
> > > > > > I encountered an issue with your tree, the commit id is below.
> > > > > >
> > > > > > $ git log | head
> > > > > > commit e6f1649780f8f5a87299bf6af04453f93d1e3d5e
> > > > > > Author: Rasmus Villemoes <linux@xxxxxxxxxxxxxxxxxx>
> > > > > > Date: Fri Jan 23 20:43:14 2015 -0800
> > > > > >
> > > > > > ethernet: fm10k: Actually drop 4 bits
> > > > > >
> > > > > > The comment explains the intention, but vid has type u16. Before
> the
> > > > > > inner shift, it is promoted to int, which has plenty of space for all
> > > > > > vid's bits, so nothing is dropped. Use a simple mask instead.
> > > > > >
> > > > > >
> > > > > > I use the kernel from your tree in both host and guest.
> > > > > >
> > > > > > Assign an IPv6 for VF in guest.
> > > > > > # ip -6 addr add 2001:db8::18:1/64 dev ens0
> > > > > >
> > > > > > Send ping packet from other server to the VM.
> > > > > > # ping6 2001:db8::18:1 -I eth0
> > > > > >
> > > > > > The following message was shown.
> > > > > > ixgbevf 0000:00:08.0: partial checksum but l4 proto=3a!
> > > > > >
> > > > > > If I did the same operation in the host, I saw the same error
> > > > > > message in
> > > > host too.
> > > > > > ixgbe 0000:2d:00.0: partial checksum but l4 proto=3a!
> > > > > >
> > > > > > Do you have any idea about that?
> > > > >
> > > > > Ah, sorry about that, try this tree again:
> > > > > git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/queue.git
> > > > >
> > > > > That patch was dropped for favor of a patch that Matthew Vick
> > > > > put together (and recently got pushed upstream). So my queue no
> > > > > longer has that patch in the queue, since it got dropped.
> > > >
> > > > I still see the same error, the head id is the below
> > > >
> > > > $ git log | head
> > > > commit a072afb0b45904022b76deef3b770ee9a93cb13a
> > > > Author: Nicholas Krause <xerofoify@xxxxxxxxx>
> > > > Date: Mon Feb 9 00:27:00 2015 -0800
> > > >
> > > > igb: Remove outdated fix me comment in the
> > > > function,gb_acquire_swfw_sync_i210
> > > >
> > > >
> > > > thanks,
> > > > Hiroshi
> > >
> > > I'm having our validation see if they can recreate the same issue
> > > internally. When they get back to me I'll let you
> > know
> > > what we found.
> >
> > We did bisect, and the below looks the culprit;
> >
> > 32dce968dd987adfb0c00946d78dad9154f64759 is the first bad commit
> > commit 32dce968dd987adfb0c00946d78dad9154f64759
> > Author: Vlad Yasevich <vyasevich@xxxxxxxxx>
> > Date: Sat Jan 31 10:40:18 2015 -0500
> >
> > ipv6: Allow for partial checksums on non-ufo packets
> >
> > Currntly, if we are not doing UFO on the packet, all UDP
> > packets will start with CHECKSUM_NONE and thus perform full
> > checksum computations in software even if device support
> > IPv6 checksum offloading.
> >
> > Let's start start with CHECKSUM_PARTIAL if the device
> > supports it and we are sending only a single packet at
> > or below mtu size.
> >
> > Signed-off-by: Vladislav Yasevich <vyasevic@xxxxxxxxxx>
> > Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx>
> >
> > :040000 040000 4437eaf7e944f5a6136ebf668a256fee688fda3d
> fade8da998d35c8da97a15f0556949ad371e5347 M net
>
> When I reverted the commit, the issue was solved.
>
> thanks,
> Hiroshi

I believe the issue is that this patch (32dce968dd98 - ipv6: Allow for partial checksums on non-ufo packets) is that it now sets CHECKSUM_PARTIAL on all IPv6 packets including ICMPv6 ones. Our HW (82599) only supports checksum offload on TCP/UDP (NETIF_F_IPV6_CSUM) so we get hung up on the skb's protocol and the fact that it is CHECKSUM_PARTIAL.

Another thing that confuses me is the feature test in this patch. It checks (rt->dst.dev->features & NETIF_F_V6_CSUM) but NETIF_F_V6_CSUM is a two bit field?

#define NETIF_F_V6_CSUM (NETIF_F_GEN_CSUM | NETIF_F_IPV6_CSUM)

So the test would succeed if either bit was high, that doesn't seem right. I cc'd the author so maybe he could clue us in.

Thanks,
-Don Skidmore <donald.c.skidmore@xxxxxxxxx>


N‹§²æ¸›yú²X¬¶ÇvØ–)Þ{.nlj·¥Š{±‘êX§¶›¡Ü}©ž²ÆzÚj:+v‰¨¾«‘êZ+€Êzf£¢·hšˆ§~†­†Ûÿû®w¥¢¸?™¨è&¢)ßf”ùy§m…á«a¶Úÿ 0¶ìå