From fca015771bc9437c46615f901edba5e9b349f28b Mon Sep 17 00:00:00 2001 From: Xuan Zhuo Date: Sun, 24 Apr 2022 16:31:31 +0800 Subject: [PATCH] virtio-net: support reset queue A separate reset queue function introduced by Virtqueue Reset. However, it is currently not defined what to do if the destination queue is being reset when virtio-net is steering in multi-queue mode. Fixes: https://github.com/oasis-tcs/virtio-spec/issues/138 Reviewed-by: Jason Wang Signed-off-by: Xuan Zhuo Signed-off-by: Cornelia Huck --- content.tex | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/content.tex b/content.tex index 74a1eb1..fcafc6c 100644 --- a/content.tex +++ b/content.tex @@ -4337,6 +4337,10 @@ \subsubsection{Control Virtqueue}\label{sec:Device Types / Network Device / Devi \field{virtqueue_pairs} once it has placed the VIRTIO_NET_CTRL_MQ_VQ_PAIRS_SET command in a used buffer. +If the destination receive queue is being reset (See \ref{sec:Basic Facilities of a Virtio Device / Virtqueues / Virtqueue Reset}), +the device SHOULD re-select another random queue. If all receive queues are +being reset, the device MUST drop the packet. + \subparagraph{Legacy Interface: Automatic receive steering in multiqueue mode}\label{sec:Device Types / Network Device / Device Operation / Control Virtqueue / Automatic receive steering in multiqueue mode / Legacy Interface: Automatic receive steering in multiqueue mode} When using the legacy interface, transitional devices and drivers MUST format \field{virtqueue_pairs} @@ -4425,6 +4429,7 @@ \subsubsection{Control Virtqueue}\label{sec:Device Types / Network Device / Devi \item Calculate the hash of the packet as defined in \ref{sec:Device Types / Network Device / Device Operation / Processing of Incoming Packets / Hash calculation for incoming packets}. \item If the device did not calculate the hash for the specific packet, the device directs the packet to the receiveq specified by \field{unclassified_queue} of virtio_net_rss_config structure (value of 0 corresponds to receiveq1). \item Apply \field{indirection_table_mask} to the calculated hash and use the result as the index in the indirection table to get 0-based number of destination receiveq (value of 0 corresponds to receiveq1). +\item If the destination receive queue is being reset (See \ref{sec:Basic Facilities of a Virtio Device / Virtqueues / Virtqueue Reset}), the device MUST drop the packet. \end{itemize} \paragraph{Offloads State Configuration}\label{sec:Device Types / Network Device / Device Operation / Control Virtqueue / Offloads State Configuration}