[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: [PATCH v2] virtio-net: add mtu configuration field
Sometimes it is essential for libvirt to be able to configure MTU on guest's NICs to a value different from 1500. The change adds a new field to configuration area of network devices. It will be used to pass initial MTU from the device to the driver, and to pass modified MTU from driver to the device or from device to driver for both host-guest and guest-host interaction. In addition, in order to support backward and forward compatibility, we introduce a new feature bit called VIRTIO_NET_F_DEFAULT_MTU. Signed-off-by: Aaron Conole <aconole@redhat.com> Cc: Victor Kaplansky <victork@redhat.com> --- v1: This is an attempt at continuing the work done by Victor Kaplansky on mtu negiotiation for virtio-net devices. It attempts to pick up from https://lists.oasis-open.org/archives/virtio-dev/201508/msg00007.html and is just a minor blurb from the first patch along with the 2nd patch from the series, and some of the feedback integrated. v2: Rephrase and provide a mechanism for guest->host and host->guest communication through a driver read-only and driver write-only field. content.tex | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/content.tex b/content.tex index d989d98..b855691 100644 --- a/content.tex +++ b/content.tex @@ -3078,6 +3078,11 @@ features. \item[VIRTIO_NET_F_CTRL_MAC_ADDR(23)] Set MAC address through control channel. + +\item[VIRTIO_NET_F_MTU(24)] Negotiated MTU is supported. If + offered by the device, device advises driver about initial + MTU to be used. If negotiated, the driver uses \field{mtu} as + an initial value. \end{description} \subsubsection{Feature bit requirements}\label{sec:Device Types / Network Device / Feature bits / Feature bit requirements} @@ -3132,11 +3137,21 @@ of each of transmit and receive virtqueues (receiveq1\ldots receiveqN and transmitq1\ldots transmitqN respectively) that can be configured once VIRTIO_NET_F_MQ is negotiated. +The following driver-read-only field, \field{mtu} only exists if +VIRTIO_NET_F_MTU is set. This field specifies the MTU that the device expects +the driver to honor. + +The following driver-write-only field, \field{mtu_requested} only exists if +VIRTIO_NET_F_MTU is set. This field will be written by the driver when it wants +to request an MTU change from the device. + \begin{lstlisting} struct virtio_net_config { u8 mac[6]; le16 status; le16 max_virtqueue_pairs; + le16 mtu; + le16 mtu_requested; }; \end{lstlisting} @@ -3145,6 +3160,18 @@ struct virtio_net_config { The device MUST set \field{max_virtqueue_pairs} to between 1 and 0x8000 inclusive, if it offers VIRTIO_NET_F_MQ. +\devicenormative{\subsubsection}{Device configuration layout}{Device Types / Network Device / Device configuration layout} + +The device MUST set \field{mtu} to between 68 and 65535 inclusive, +if it offers VIRTIO_NET_F_MTU. + +Any time the device modifies \field{mtu}, it MUST send a configuration change +notification. + +The driver MAY set \field{mtu_requested} to between 68 and 65535 inclusive, +if the device offers VIRTIO_NET_F_MTU. Any time the driver modifies +\field{mtu_requested}, it MUST also send a configuration change notification. + \drivernormative{\subsubsection}{Device configuration layout}{Device Types / Network Device / Device configuration layout} A driver SHOULD negotiate VIRTIO_NET_F_MAC if the device offers it. @@ -3157,6 +3184,10 @@ If the driver does not negotiate the VIRTIO_NET_F_STATUS feature, it SHOULD assume the link is active, otherwise it SHOULD read the link status from the bottom bit of \field{status}. +A driver SHOULD negotiate VIRTIO_NET_F_MTU if the device offers it. If the +driver negotiates the VIRTIO_NET_F_MTU feature, the driver MUST use \field{mtu} +as the value for MTU. + \subsubsection{Legacy Interface: Device configuration layout}\label{sec:Device Types / Network Device / Device configuration layout / Legacy Interface: Device configuration layout} \label{sec:Device Types / Block Device / Feature bits / Device configuration layout / Legacy Interface: Device configuration layout} When using the legacy interface, transitional devices and drivers -- 2.5.0
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]