[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