Calling rte_eth_allmulticast_enable() in the DPDK KNI sample app solved the issue. Sharing the fix so that it will be helpful for others facing similar issue.
Regards, Srini /dpdk-stable-18.08.1/examples/kni/main.c @@ -618,8 +619,10 @@ rte_exit(EXIT_FAILURE, "Could not start port%u (%d)\n", (unsigned)port, ret); - if (promiscuous_on) + if (promiscuous_on) { + rte_eth_allmulticast_enable(port); rte_eth_promiscuous_enable(port); + } Corresponding flags/settings in the dVswitch post calling rte_eth_allmulticast_enable() in KNI app. /net/portsets/DvsPortset-0/ports/50331671/> cat status port { port index:23 portCfg: dvPortId:17 clientName:Ubuntu 18 64bit.eth1 clientType:port types: 5 -> VMM Virtual NIC clientSubType:port types: 9 -> Vmxnet3 Client world leader:180572 flags:port flags: 0xc01d3 -> IN_USE ENABLED WORLD_ASSOC RX_COALESCE TX_COALESCE TX_COMP_COALESCE CONNECTED MULTICAST_ROUTER Impl customized blocked flags:0x00000000 Passthru status:: 0x20 -> DISABLED_BY_PG fixed Hw Id:00:50:56:80:b3:6e: ethFRP:frame routing { requested:filter { flags:0x0000000d unicastAddr:00:50:56:80:b3:6e: numMulticastAddresses:0 multicastAddresses: LADRF:[0]: 0x0 [1]: 0x0 } accepted:filter { flags:0x0000000d unicastAddr:00:50:56:80:b3:6e: numMulticastAddresses:0 multicastAddresses: LADRF:[0]: 0x0 [1]: 0x0 } } filter supported features:features: 0 -> NONE filter properties:properties: 0 -> NONE rx mode:properties: 0 -> INLINE tune mode:Tuning mode: 0 -> default } On Thu, Jan 23, 2020 at 9:06 PM Srinivasan J <srinid...@gmail.com> wrote: > > On further investigation, it' seen that the dvSwitch does not have any > multicast MAC registered when using DPDK vmxnet3 poll mode driver > along with the KNI sample app post configuring IPv6 address on the > vEth0 KNI interface. The same interface when used with the kernel > driver works fine. Any help or pointers are really appreciated. > > Regards, > Srini > > Non Working case: Using DPDK sample KNI interface in the same Ubuntu > ================ > /net/portsets/DvsPortset-0/ports/50331667/> cat status > port { > port index:19 > portCfg: > dvPortId:17 > clientName:Ubuntu 18 64bit.eth1 > clientType:port types: 5 -> VMM Virtual NIC > clientSubType:port types: 9 -> Vmxnet3 Client > world leader:180572 > flags:port flags: 0x401d3 -> IN_USE ENABLED WORLD_ASSOC RX_COALESCE > TX_COALESCE TX_COMP_COALESCE CONNECTED > Impl customized blocked flags:0x00000000 > Passthru status:: 0x20 -> DISABLED_BY_PG > fixed Hw Id:00:50:56:80:b3:6e: > ethFRP:frame routing { > requested:filter { > flags:0x00000019 > unicastAddr:00:50:56:80:b3:6e: > numMulticastAddresses:0 > multicastAddresses: > LADRF:[0]: 0x0 > [1]: 0x0 > } > accepted:filter { > flags:0x00000009 > unicastAddr:00:50:56:80:b3:6e: > numMulticastAddresses:0 > multicastAddresses: > LADRF:[0]: 0x0 > [1]: 0x0 > } > } > filter supported features:features: 0 -> NONE > filter properties:properties: 0 -> NONE > rx mode:properties: 0 -> INLINE > tune mode:Tuning mode: 0 -> default > } > > Working case: Using Kernel interface in Ubuntu > =========== > /net/portsets/DvsPortset-0/ports/50331667/> cat status > port { > port index:19 > portCfg: > dvPortId:17 > clientName:Ubuntu 18 64bit.eth1 > clientType:port types: 5 -> VMM Virtual NIC > clientSubType:port types: 9 -> Vmxnet3 Client > world leader:180572 > flags:port flags: 0x401d3 -> IN_USE ENABLED WORLD_ASSOC RX_COALESCE > TX_COALESCE TX_COMP_COALESCE CONNECTED > Impl customized blocked flags:0x00000000 > Passthru status:: 0x20 -> DISABLED_BY_PG > fixed Hw Id:00:50:56:80:b3:6e: > ethFRP:frame routing { > requested:filter { > flags:0x0000000b > unicastAddr:00:50:56:80:b3:6e: > numMulticastAddresses:6 > > multicastAddresses:01:00:5e:00:00:01,01:80:c2:00:00:00,01:80:c2:00:00:03,01:80:c2:00:00:0e,33:33:00:00:00:01,33:33:ff:80:b3:6e, > LADRF:[0]: 0x0 > [1]: 0x0 > } > accepted:filter { > flags:0x0000000b > unicastAddr:00:50:56:80:b3:6e: > numMulticastAddresses:6 > > multicastAddresses:01:00:5e:00:00:01,01:80:c2:00:00:00,01:80:c2:00:00:03,01:80:c2:00:00:0e,33:33:00:00:00:01,33:33:ff:80:b3:6e, > LADRF:[0]: 0x0 > [1]: 0x0 > } > } > filter supported features:features: 0x1 -> LRO > filter properties:properties: 0 -> NONE > rx mode:properties: 0 -> INLINE > tune mode:Tuning mode: 0 -> default > } > > On Fri, Jan 17, 2020 at 10:56 PM Srinivasan J <srinid...@gmail.com> wrote: > > > > Hi, > > I observed that DPDK kni interface is not able to receive solicited > > node multicast addressed (derived from the IPv6 address configured on > > vEth0 interface) when the kni sample app is being run in Ubuntu VM on > > ESXI server. The only way to have the frames reach the kni interface > > is by setting the promiscuous mode in dvSwitch. However regular kernel > > interface with IPv6 address on the same vmxnet3 port works fine > > without having to set promiscuous mode in the dvSwitch. Has anyone > > seen this issue before? Any suggestions to have kni interface working > > with ipv6 addresses in non promiscuous mode of dvSwitch. > > > > Ubuntu version used = Ubuntu 18.04.3 LTS > > DPDK version: 18.08.1 > > VMware ESXI 6.5.0 > > > > auto@auto_ubuntu18:~/source/dpdk-stable-18.08.1/usertools$ uname -a > > Linux auto_ubuntu18 4.15.0-74-generic #84-Ubuntu SMP Thu Dec 19 > > 08:06:28 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux > > > > sudo /tmp/kni -l 6-7 -- -P -p 0x1 --config="(0,6,7)" > > > > Thanks, > > Srini