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

From: Hiroshi Shimamoto
Date: Mon Feb 09 2015 - 02:55:56 EST


> > Subject: Re: [E1000-devel] [PATCH 1/3] ixgbe, ixgbevf: Add new mbox API to enable MC promiscuous mode
> >
> > On Fri, 2015-01-30 at 11:37 +0000, Hiroshi Shimamoto wrote:
> > > From: Hiroshi Shimamoto <h-shimamoto@xxxxxxxxxxxxx>
> > >
> > > The limitation of the number of multicast address for VF is not enough
> > > for the large scale server with SR-IOV feature.
> > > IPv6 requires the multicast MAC address for each IP address to handle
> > > the Neighbor Solicitation message.
> > > We couldn't assign over 30 IPv6 addresses to a single VF interface.
> > >
> > > The easy way to solve this is enabling multicast promiscuous mode.
> > > It is good to have a functionality to enable multicast promiscuous
> > > mode
> > > for each VF from VF driver.
> > >
> > > This patch introduces the new mbox API, IXGBE_VF_SET_MC_PROMISC, to
> > > enable/disable multicast promiscuous mode in VF. If multicast
> > > promiscuous
> > > mode is enabled the VF can receive all multicast packets.
> > >
> > > With this patch, the ixgbevf driver automatically enable multicast
> > > promiscuous mode when the number of multicast addresses is over than
> > > 30
> > > if possible.
> > >
> > > This also bump the API version up to 1.2 to check whether the API,
> > > IXGBE_VF_SET_MC_PROMISC is available.
> > >
> > > Signed-off-by: Hiroshi Shimamoto <h-shimamoto@xxxxxxxxxxxxx>
> > > Reviewed-by: Hayato Momma <h-momma@xxxxxxxxxxxxx>
> > > CC: Choi, Sy Jong <sy.jong.choi@xxxxxxxxx>
> > > ---
> > > drivers/net/ethernet/intel/ixgbe/ixgbe.h | 1 +
> > > drivers/net/ethernet/intel/ixgbe/ixgbe_mbx.h | 4 +
> > > drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c | 89
> > > ++++++++++++++++++++++-
> > > drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c | 13 +++-
> > > drivers/net/ethernet/intel/ixgbevf/mbx.h | 4 +
> > > drivers/net/ethernet/intel/ixgbevf/vf.c | 29 +++++++-
> > > drivers/net/ethernet/intel/ixgbevf/vf.h | 1 +
> > > 7 files changed, 137 insertions(+), 4 deletions(-)
> >
> > Hiroshi, I tried to apply your patches to my queue but they do not apply
> > cleanly and they are in a DOS file format, not UNIX. I also noted
> > several checkpatch.pl issues with your patches, so please fix those up
> > as well.
>
> I'm sorry to bother you.
> Will fix.
>
> >
> > Can you please fix up your patches based on my tree:
> > git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/queue.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?

thanks,
Hiroshi