DPDK team, I have a use-case for multicast and wanted to know the current behavior of ixgbe pf and vf driver so my understanding is correct.
use-case: 2 VF's (vf1 and vf2 ) from ixgbe is assigned to 2 VM's (vm1 and vm2) vf1 -- registers to mcast 01:00:5e:00:00:01, 01:00:5e:00:00:0a vf2 -- registers to mcast 01:00:5e:00:00:0a Flow: ixgbe_update_mc_addr_list_vf creates a vector based on bits to be used. /* use bits [47:36] of the address */ /* use bits [46:35] of the address */ /* use bits [45:34] of the address */ /* use bits [43:32] of the address */ VFs (vf1 and vf2) sends IXGBE_VF_SET_MULTICAST to PF PF processes IXGBE_VF_SET_MULTICAST in ixgbe_vf_set_multicast Reads IXGBE_READ_REG(hw, IXGBE_VMOLR(vf)); Updates IXGBE_READ_REG(hw, IXGBE_MTA(mta_idx)); with the corresponding bit associated with mcast mac address Updates ROMPE bit which allows PF to use MTA for mcast packets. vmolr |= IXGBE_VMOLR_ROMPE; IXGBE_WRITE_REG(hw, IXGBE_VMOLR(vf), vmolr); IXGBE_READ_REG(hw, IXGBE_MTA(mta_idx)); Both vf1 and vf2 have indicated to use MTA for mcast packets. When packets with dst mac 01:00:5e:00:00:01 arrives, PF checks for MTA bit associated with the mcast mac, which will be set. Since both vf1 and vf2 have indicated to use MTA, packets will be delivered to both vm1 and vm2. vm1 never intended to receive mcast packets for that mac. Let me know if this is correct? Thanks, Ravi