[PATCH] examples/vhost: fix port init failure in mergeable mode

Maxime Coquelin maxime.coquelin at redhat.com
Tue Nov 16 10:14:45 CET 2021



On 11/4/21 06:11, Chenbo Xia wrote:
> When the example starts in mergeable mode with an i40e port,
> it fails to launch because the examples use default mtu MAX_MTU
> to configure ethdev. The root cause is some devices have Ethernet
> frame overhead and then MAX_MTU will be larger than device's max
> mtu, so the ethdev configure will fail.
> 
> This patch checks the device's max mtu before setting the ethdev
> configuration. If the device has a max mtu, use that value to
> configure.
> 
> Fixes: 1bb4a528c41f ("ethdev: fix max Rx packet length")
> 
> Signed-off-by: Chenbo Xia <chenbo.xia at intel.com>
> Reported-by: Xingguang He <xingguang.he at intel.com>
> ---
>   examples/vhost/main.c | 9 +++++++--
>   1 file changed, 7 insertions(+), 2 deletions(-)
> 
> diff --git a/examples/vhost/main.c b/examples/vhost/main.c
> index 58e12aa710..09fb2382bf 100644
> --- a/examples/vhost/main.c
> +++ b/examples/vhost/main.c
> @@ -273,6 +273,13 @@ port_init(uint16_t port)
>   
>   	tx_rings = (uint16_t)rte_lcore_count();
>   
> +	if (mergeable) {
> +		if (dev_info.max_mtu != UINT16_MAX && dev_info.max_rx_pktlen > dev_info.max_mtu)
> +			vmdq_conf_default.rxmode.mtu = dev_info.max_mtu;
> +		else
> +			vmdq_conf_default.rxmode.mtu = MAX_MTU;
> +	}
> +
>   	/* Get port configuration. */
>   	retval = get_eth_conf(&port_conf, num_devices);
>   	if (retval < 0)
> @@ -631,8 +638,6 @@ us_vhost_parse_args(int argc, char **argv)
>   				return -1;
>   			}
>   			mergeable = !!ret;
> -			if (ret)
> -				vmdq_conf_default.rxmode.mtu = MAX_MTU;
>   			break;
>   
>   		case OPT_STATS_NUM:
> 

Reviewed-by: Maxime Coquelin <maxime.coquelin at redhat.com>

Thanks,
Maxime



More information about the dev mailing list