[dpdk-dev] [PATCH v3 0/9] virtio/vhost: Add MTU feature support

Maxime Coquelin maxime.coquelin at redhat.com
Sun Mar 12 17:33:57 CET 2017


This series adds support to new Virtio's MTU feature[1]. The MTU
value is set via QEMU parameters.

If the feature is negotiated (i.e supported by both host and guest,
and valid MTU value is set in QEMU via its host_mtu parameter), QEMU
shares the configured MTU value throught dedicated Vhost protocol
feature.

On vhost side, the value is stored in the virtio_net structure, and
made available to the application thanks to new vhost lib's
rte_vhost_get_mtu() function.

To be able to set eth_dev's MTU value at the right time, i.e. to call
rte_vhost_get_mtu() just after Virtio features have been negotiated
and before the device is really started, a new vhost flag has been
introduced (VIRTIO_DEV_READY), because the VIRTIO_DEV_RUNNING flag is
set too late (after .new_device() ops is called).

Regarding valid MTU values, the maximum MTU value accepted on vhost
side is 65535 bytes, as defined in Virtio Spec and supported in
Virtio-net Kernel driver. But in Virtio PMD, current maximum frame
size is 9728 bytes (~9700 bytes MTU). So maximum MTU size accepted in
Virtio PMD is the minimum between ~9700 bytes and host's MTU.

Finally, this series also adds MTU value printing  in testpmd's
"show port info" command when non-zero.

This series target v17.05 release.

Cheers,
Maxime

[1]: https://lists.oasis-open.org/archives/virtio-dev/201609/msg00128.html

Changes since v1:
-----------------
* Rebased on top of v17.02
* Virtio PMD: ensure MTU value is valid before ack'ing the feature (Aaron)
* Vhost lib/PMD: Remove MTU setting API/op (Yuanhan)

Changes since v2:
-----------------
* Update release notes (Thomas)
* s/rte_vhost_mtu_get/rte_vhost_get_mtu/ (Yuanhan)
* Use %"PRIu64" instead of %lu (Yuanhan)
* Add rte_vhost_get_mtu in rte_vhost_version.map

Maxime Coquelin (9):
  vhost: Enable VIRTIO_NET_F_MTU feature
  vhost: vhost-user: Add MTU protocol feature support
  vhost: Add new ready status flag
  vhost: Add API to get MTU value
  vhost: export MTU value
  net/vhost: Fill rte_eth_dev's MTU property
  net/virtio: Add MTU feature support
  doc: announce Virtio and Vhost MTU support
  app/testpmd: print MTU value in show port info

 app/test-pmd/config.c                  |  5 ++++
 doc/guides/nics/features/virtio.ini    |  1 +
 doc/guides/rel_notes/release_17_05.rst |  8 ++++++
 drivers/net/vhost/rte_eth_vhost.c      |  2 ++
 drivers/net/virtio/virtio_ethdev.c     | 45 ++++++++++++++++++++++++++++++++--
 drivers/net/virtio/virtio_ethdev.h     |  3 ++-
 drivers/net/virtio/virtio_pci.h        |  3 +++
 lib/librte_vhost/rte_vhost_version.map |  7 ++++++
 lib/librte_vhost/rte_virtio_net.h      | 15 ++++++++++++
 lib/librte_vhost/vhost.c               | 22 ++++++++++++++++-
 lib/librte_vhost/vhost.h               |  9 ++++++-
 lib/librte_vhost/vhost_user.c          | 44 +++++++++++++++++++++++++++------
 lib/librte_vhost/vhost_user.h          |  5 +++-
 13 files changed, 156 insertions(+), 13 deletions(-)

-- 
2.9.3



More information about the dev mailing list