[dpdk-dev] [PATCH] net/bonding: switch to new offloading flags

Matan Azrad matan at mellanox.com
Wed Mar 14 13:50:26 CET 2018


Hi Ferruh

From: Ferruh Yigit, Sent: Tuesday, March 13, 2018 2:25 PM
> Switch from using deprecated bitfields in rxmode to offloads variable.
> 
> Signed-off-by: Ferruh Yigit <ferruh.yigit at intel.com>
> ---
>  drivers/net/bonding/rte_eth_bond_api.c | 3 ++-
> drivers/net/bonding/rte_eth_bond_pmd.c | 9 +++++++--
>  2 files changed, 9 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/net/bonding/rte_eth_bond_api.c
> b/drivers/net/bonding/rte_eth_bond_api.c
> index f854b7375..669004fec 100644
> --- a/drivers/net/bonding/rte_eth_bond_api.c
> +++ b/drivers/net/bonding/rte_eth_bond_api.c
> @@ -194,7 +194,8 @@ slave_vlan_filter_set(uint16_t bonded_port_id,
> uint16_t slave_port_id)
>  	uint16_t first;
> 
>  	bonded_eth_dev = &rte_eth_devices[bonded_port_id];
> -	if (bonded_eth_dev->data->dev_conf.rxmode.hw_vlan_filter == 0)
> +	if ((bonded_eth_dev->data->dev_conf.rxmode.offloads &
> +			DEV_RX_OFFLOAD_VLAN_FILTER) == 0)
>  		return 0;
> 
>  	internals = bonded_eth_dev->data->dev_private;
> diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c
> b/drivers/net/bonding/rte_eth_bond_pmd.c
> index c34c3251f..c18aca222 100644
> --- a/drivers/net/bonding/rte_eth_bond_pmd.c
> +++ b/drivers/net/bonding/rte_eth_bond_pmd.c
> @@ -1818,8 +1818,13 @@ slave_configure(struct rte_eth_dev
> *bonded_eth_dev,
>  				bonded_eth_dev->data-
> >dev_conf.rxmode.mq_mode;
>  	}
> 
> -	slave_eth_dev->data->dev_conf.rxmode.hw_vlan_filter =
> -			bonded_eth_dev->data-
> >dev_conf.rxmode.hw_vlan_filter;
> +	if (bonded_eth_dev->data->dev_conf.rxmode.offloads &
> +			DEV_RX_OFFLOAD_VLAN_FILTER)
> +		slave_eth_dev->data->dev_conf.rxmode.offloads |=
> +				DEV_RX_OFFLOAD_VLAN_FILTER;
> +	else
> +		slave_eth_dev->data->dev_conf.rxmode.offloads &=
> +				~DEV_RX_OFFLOAD_VLAN_FILTER;
> 
>  	nb_rx_queues = bonded_eth_dev->data->nb_rx_queues;
>  	nb_tx_queues = bonded_eth_dev->data->nb_tx_queues;
> --
> 2.13.6

The bonding PMD is using internal variables to save the offload capabilities (Actually holds the offloads intersection set of all the bond slaves).
I think you are missing next:
	You should change the next variable types to uint64_t to support the new offload flags:
		internals->rx_offload_capa
		internals->tx_offload_capa

	You should add the new per queue offload variables to save the intersection set of it too:
		rx_queue_offload_capa
		tx_queue_offload_capa

Questions:
Have you an idea why bonding PMD doesn't adjust the slaves port configurations to the bonding port configuration like he does for slave queue configuration?
Is the responsibility to fill the slave port configuration structure for the application?

What do you think about next configuration checks (both per port and per queue)?
	Validate the actual bonding offloads with the bonding capability.
	Validate that the queue offloads includes all the port configured offloads.

Matan.


More information about the dev mailing list