> Subject: Re: [PATCH 1/2] if_link: Add VF multicast promiscuous mode control > > Hiroshi Shimamoto <h-shimam...@ct.jp.nec.com> writes: > > > From: Hiroshi Shimamoto <h-shimam...@ct.jp.nec.com> > > > > Add netlink directives and ndo entry to control VF multicast promiscuous > > mode. > > > > Intel ixgbe and ixgbevf driver can handle only 30 multicast MAC addresses > > per VF. It means that we cannot assign over 30 IPv6 addresses to a single > > VF interface on VM. We want thousands IPv6 addresses in VM. > > > > There is capability of multicast promiscuous mode in Intel 82599 chip. > > It enables all multicast packets are delivered to the target VF. > > > > This patch prepares to control that VF multicast promiscuous functionality. > > Adding a new hook for this seems over-complicated to me. And it still > doesn't solve the real problems that > a) the user has to know about this limit, and > b) manually configure the feature > > Most of us, lacking the ability to imagine such arbitrary hardware > limitations, will go through a few hours of frustrating debugging before > we figure this one out... > > Why can't the ixgbevf driver just automatically signal the ixgbe driver > to enable multicast promiscuous mode whenever the list grows past the > limit?
I had submitted a patch to change ixgbe and ixgbevf driver for this issue. https://lkml.org/lkml/2014/11/27/269 The previous patch introduces API between ixgbe and ixgbevf driver to enable multicast promiscuous mode, and ixgbevf enables it automatically if the number of addresses is over than 30. I got some comment and I would like to clarify the point, but there was no answer. That's the reason I submitted this patch. Do you think a patch for the ixgbe/ixgbevf driver is preferred? thanks, Hiroshi > > I'd also like to note that this comment in > drivers/net/ethernet/intel/ixgbevf/vf.c > indicates that the author had some ideas about how more than 30 > addresses could/should be handled: > > static s32 ixgbevf_update_mc_addr_list_vf(struct ixgbe_hw *hw, > struct net_device *netdev) > { > struct netdev_hw_addr *ha; > u32 msgbuf[IXGBE_VFMAILBOX_SIZE]; > u16 *vector_list = (u16 *)&msgbuf[1]; > u32 cnt, i; > > /* Each entry in the list uses 1 16 bit word. We have 30 > * 16 bit words available in our HW msg buffer (minus 1 for the > * msg type). That's 30 hash values if we pack 'em right. If > * there are more than 30 MC addresses to add then punt the > * extras for now and then add code to handle more than 30 later. > * It would be unusual for a server to request that many multi-cast > * addresses except for in large enterprise network environments. > */ > > > > The last 2 lines of that comment are of course totally bogus and > pointless and should be deleted in any case... It's obvious that 30 > multicast addresses is ridiculously low for lots of normal use cases. > > > Bjørn