68218b87c1
Rather than the global promiscuous mode on all slaves, let's try to use allmulti. To do this, we apply the same mechanism than for promiscuous and drop in rx_burst. When adding a slave, we first try to use allmulti, else we try promiscuous. Because of this, we must be able to handle allmulti on the bonding interface, so the associated dev_ops is added with checks on which mode has been applied on each slave. Rather than add a new flag in the bond private structure, we can remove promiscuous_en since ethdev already maintains this information. When starting the bond device, there is no promisc/allmulti re-apply as, again, ethdev does this itself. On reception, we must inspect if the packets are multicast or unicast and take a decision to drop based on which mode has been enabled on the bonding interface. Note: in the future, if we define an API so that we can add/remove mc addresses to a port (rather than the current global set_mc_addr_list API), we can refine this to only register the LACP multicast mac address. Signed-off-by: David Marchand <david.marchand@redhat.com> Acked-by: Chas Williams <chas3@att.com>