[dpdk-dev] [PATCH] net/bonding: propagate promiscous mode in mode 4

Radu Nicolau radu.nicolau at intel.com
Wed Aug 1 15:47:58 CEST 2018



On 8/1/2018 2:34 PM, Chas Williams wrote:
>
>
> On Wed, Aug 1, 2018 at 9:04 AM Radu Nicolau <radu.nicolau at intel.com 
> <mailto:radu.nicolau at intel.com>> wrote:
>
>     Update the bonding promiscuous mode enable/disable functions as to
>     propagate the change to all slaves instead of doing nothing; this
>     seems to be the correct behaviour according to the standard,
>     and also implemented in the linux network stack.
>
>     Signed-off-by: Radu Nicolau <radu.nicolau at intel.com
>     <mailto:radu.nicolau at intel.com>>
>     ---
>      drivers/net/bonding/rte_eth_bond_pmd.c | 8 ++------
>      1 file changed, 2 insertions(+), 6 deletions(-)
>
>     diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c
>     b/drivers/net/bonding/rte_eth_bond_pmd.c
>     index ad6e33f..16105cb 100644
>     --- a/drivers/net/bonding/rte_eth_bond_pmd.c
>     +++ b/drivers/net/bonding/rte_eth_bond_pmd.c
>     @@ -2617,12 +2617,10 @@ bond_ethdev_promiscuous_enable(struct
>     rte_eth_dev *eth_dev)
>             case BONDING_MODE_ROUND_ROBIN:
>             case BONDING_MODE_BALANCE:
>             case BONDING_MODE_BROADCAST:
>     +       case BONDING_MODE_8023AD:
>                     for (i = 0; i < internals->slave_count; i++)
>     rte_eth_promiscuous_enable(internals->slaves[i].port_id);
>                     break;
>     -       /* In mode4 promiscus mode is managed when slave is
>     added/removed */
>
>
> This comment is true (and it appears it is always on in 802.3ad mode):
>
>         /* use this port as agregator */
>         port->aggregator_port_id = slave_id;
>         rte_eth_promiscuous_enable(slave_id);
>
> If we are going to do this here, we should probably get rid of it in
> the other location so that future readers aren't confused about which
> is the one doing the work.
>
> Since some adapters don't have group multicast support, we might
> already be in promiscuous anyway.  Turning off promiscuous for
> the bonding master might turn it off in the slaves where an application
> has already enabled it.

The idea was to preserve the current behavior except for the explicit 
promiscuous disable/enable APIs; an application may disable the 
promiscuous mode on the bonding port and then enable it back, expecting 
it to propagate to the slaves.


More information about the dev mailing list