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

Reply via email to