[dpdk-dev] ixgbevf: support multicast packets from PF to VF

Lu, Wenzhuo wenzhuo.lu at intel.com
Tue Dec 6 00:34:48 CET 2016


Hi Dey,
I'm confused.
rte_eth_allmulticast_enable means the port can receive all the multicast packets. In another word, it's multicast promiscuous mode.
rte_eth_dev_set_mc_addr_list means adding a series of multicast addresses to the filter, so the port can receive these specific multicast packets. It's not promiscuous.
During your test, I think only rte_eth_dev_set_mc_addr_list is working. rte_eth_allmulticast_enable has no effect.
As you mentioned the PF driver version, I'm afraid the problem is the PF.  When you call rte_eth_allmulticast_enable on VF, VF only sends a message to PF. PF need to take action. So you must have a PF which can support this feature.

From: Dey, Souvik [mailto:sodey at sonusnet.com]
Sent: Tuesday, December 6, 2016 3:01 AM
To: Lu, Wenzhuo <wenzhuo.lu at intel.com>; dev at dpdk.org
Subject: RE: ixgbevf: support multicast packets from PF to VF

Hi Wenzhuo,

There is nothing set with the rte_eth_dev_set_mc_addr_list and we are trying to receive the NS packet which has the destination MAC set as 33 33 ff 00 00 14. Also what I saw is that the handling of allmulticast_enable message in the kernel has happened after 4.0 version and the PF drivers which earlier kernel version will not support this. How should handle those scenarios ?

In my case too I tried 2 experiments :

1.      Only set the rte_eth_allmulticast_enable from the DPDK app and I patched the ixgbevf_pmd with our patch. The function was returning SUCCESS but the NS packets were received in the application.

2.      Then along with rte_eth_allmulticast_enable, I used the rte_eth_dev_set_mc_addr_list to set the MAC 33 33 ff 00 00 14 from my app to the pmd. After this I was successfully receiving the NS packets. But then the bigger question is how to automate the addition of mc_addr in rte_eth_dev_set_mc_addr_list as in the kni we are currently not using the kni_net_set_rx_mode() function which is called by the net_device whenever the new mc_addr is assigned to the net_device.


--
Regards,
Souvik

From: Lu, Wenzhuo [mailto:wenzhuo.lu at intel.com]
Sent: Sunday, December 4, 2016 9:02 PM
To: Dey, Souvik <sodey at sonusnet.com<mailto:sodey at sonusnet.com>>; dev at dpdk.org<mailto:dev at dpdk.org>
Subject: RE: ixgbevf: support multicast packets from PF to VF

Hi Souvik,
To my opinion, rte_eth_dev_set_mc_addr_list has nothing to do with rte_eth_allmulticast_enable. rte_eth_allmulticast_enable is enough for the multicast packets.
I'm curious about the 1, what MAC addresses are set by rte_eth_dev_set_mc_addr_list? 2, What multicast packets are sent?
Thanks.



Best regards
Wenzhuo Lu

From: Dey, Souvik [mailto:sodey at sonusnet.com]
Sent: Saturday, December 3, 2016 1:28 AM
To: dev at dpdk.org<mailto:dev at dpdk.org>; Lu, Wenzhuo
Subject: RE: ixgbevf: support multicast packets from PF to VF

Adding wenzhuo.lu at intel.com<mailto:wenzhuo.lu at intel.com>

From: Dey, Souvik
Sent: Friday, December 2, 2016 12:27 PM
To: 'dev at dpdk.org' <dev at dpdk.org<mailto:dev at dpdk.org>>
Subject: ixgbevf: support multicast packets from PF to VF

Hi All,
                I am trying to support multicast packet over SRIOV using kernel PF + DPDK VF(ixgbevf) drivers for ipv6. I am currently using 2.1 DPDK and found that there was a patch in 16.04 for "ixgbe: support multicast promiscuous mode on VF". So I have backported the patch to the 2.1 DPDK but still multicast packets were not coming up to the DPDK app. Then I tried to enable the rte_eth_dev_set_mc_addr_list and with the the packets were coming up properly. Now I have some doubts :


1.      Do we have to use both rte_eth_dev_set_mc_addr_list and rte_eth_allmulticast_enable to get the multicast packets.

2.      How do we get the mc_addr_list dynamically as I don't see we are using the kni_net_set_rx_mode in rte_kni. Without this the DPDK app will not have any idea to update the mc_addr_list in the PF.

3.      Is there any other patches which I should be using to get this functionality working.

I am using : DPDK -2.1
Host kernel - 4.4 ( ubuntu)
Guest kernel - 3.2 (Debian)
Drivers - ixgbe ( for both pf and vf).


Thanks in advance for the help and support.

--
Regards,
Souvik


More information about the dev mailing list