[dpdk-dev] [PATCH] net/bonding: allow configuring jumbo frames without slaves

Eric Kinzie ehkinzie at gmail.com
Mon Apr 10 04:22:26 CEST 2017


On Fri Apr 07 18:07:12 +0300 2017, Ilya Maximets wrote:
> Currently, 'rte_eth_dev_configure' fails on attempt to setup
> max_rx_pkt_len > 2048 if no slaves was added to bonded device.
> 
> For example:
> 
> 	rte_eth_dev_attach("eth_bond0,slave=05:00.0,mode=l34", &id)
> 	conf.rxmode.jumbo_frame = 1;
> 	conf.rxmode.max_rx_pkt_len = 9000;
> 	rte_eth_dev_configure(id, 1, 1, &conf)
> 
> Result:
> 	EAL: Initializing pmd_bond for eth_bond0
> 	EAL: Create bonded device eth_bond0 on port 4 in mode 2 on socket 0.
> 	rte_eth_dev_configure: ethdev port_id=4 \
> 		max_rx_pkt_len 9018 > max valid value 2048
> 
> It's expected that slaves will be added to bonded device inside
> 'rte_eth_dev_configure' and proper 'max_rx_pktlen' configured
> for all of them.
> 
> Failure happens because of hardcoded low value of 'max_rx_pktlen'.
> Increasing of this value to ETHER_MAX_JUMBO_FRAME_LEN will allow
> above scenario (attach + configure).
> 
> It is important because it is the way OVS wants to work with
> all DPDK devices (including virtual).
> Changing the default hardcoded value makes no harm because
> all the slaves' related code uses only 'candidate_max_rx_pktlen'
> variable.
> 
> CC: stable at dpdk.org
> Fixes: 6cfc6a4f0d61 ("net/bonding: inherit maximum Rx packet length")
> Signed-off-by: Ilya Maximets <i.maximets at samsung.com>
> ---
>  drivers/net/bonding/rte_eth_bond_pmd.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c
> index c398fdb..0c8cc40 100644
> --- a/drivers/net/bonding/rte_eth_bond_pmd.c
> +++ b/drivers/net/bonding/rte_eth_bond_pmd.c
> @@ -1689,8 +1689,9 @@ bond_ethdev_info(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
>  
>  	dev_info->max_mac_addrs = 1;
>  
> -	dev_info->max_rx_pktlen = internals->candidate_max_rx_pktlen ?
> -				  internals->candidate_max_rx_pktlen : 2048;
> +	dev_info->max_rx_pktlen = internals->candidate_max_rx_pktlen
> +				  ? internals->candidate_max_rx_pktlen
> +				  : ETHER_MAX_JUMBO_FRAME_LEN;
>  
>  	dev_info->max_rx_queues = (uint16_t)128;
>  	dev_info->max_tx_queues = (uint16_t)512;
> -- 
> 2.7.4
> 

Reviewed-by: Eric Kinzie <ehkinzie at gmail.com>



More information about the dev mailing list