summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrusty <rusty@0c8fb4dd-22a2-4bb5-bc14-6c75a5f43652>2014-05-12 01:58:09 +0000
committerrusty <rusty@0c8fb4dd-22a2-4bb5-bc14-6c75a5f43652>2014-05-12 01:58:09 +0000
commit5fb5a9581e4c8e20f4fc6113422edbbdea8e9bf0 (patch)
tree08abdd16c71beb7b8a92500bb674d753e955764a
parent59cd205cea89716f742205e091a9ca9d6111ddd8 (diff)
VIRTIO-107: Clarify net mac commands.
As passed at meeting 2014-05-06: https://lists.oasis-open.org/archives/virtio/201405/msg00016.html Signed-off-by: Rusty Russell <rusty@au1.ibm.com> git-svn-id: https://tools.oasis-open.org/version-control/svn/virtio@368 0c8fb4dd-22a2-4bb5-bc14-6c75a5f43652
-rw-r--r--conformance.tex1
-rw-r--r--content.tex22
2 files changed, 22 insertions, 1 deletions
diff --git a/conformance.tex b/conformance.tex
index 7f6315a..033481f 100644
--- a/conformance.tex
+++ b/conformance.tex
@@ -195,6 +195,7 @@ A network device MUST conform to the following normative statements:
\item \ref{devicenormative:Device Types / Network Device / Device configuration layout}
\item \ref{devicenormative:Device Types / Network Device / Device Operation / Setting Up Receive Buffers}
\item \ref{devicenormative:Device Types / Network Device / Device Operation / Processing of Packets}
+\item \ref{devicenormative:Device Types / Network Device / Device Operation / Control Virtqueue / Setting MAC Address Filtering}
\item \ref{devicenormative:Device Types / Network Device / Device Operation / Control Virtqueue / Gratuitous Packet Sending}
\item \ref{devicenormative:Device Types / Network Device / Device Operation / Control Virtqueue / Automatic receive steering in multiqueue mode}
\end{itemize}
diff --git a/content.tex b/content.tex
index aff2d5b..8868f66 100644
--- a/content.tex
+++ b/content.tex
@@ -3362,7 +3362,7 @@ many addresses.
} This table is set using the class
VIRTIO_NET_CTRL_MAC and the command VIRTIO_NET_CTRL_MAC_TABLE_SET. The
command-specific-data is two variable length tables of 6-byte MAC
-addresses. The first table contains unicast addresses, and the second
+addresses (as described in struct virtio_net_ctrl_mac). The first table contains unicast addresses, and the second
contains multicast addresses.
The VIRTIO_NET_CTRL_MAC_ADDR_SET command is used to set the
@@ -3376,6 +3376,21 @@ accepts.
The command-specific-data for VIRTIO_NET_CTRL_MAC_ADDR_SET is
the 6-byte MAC address.
+\devicenormative{\subparagraph}{Setting MAC Address Filtering}{Device Types / Network Device / Device Operation / Control Virtqueue / Setting MAC Address Filtering}
+
+The device MUST have an empty MAC filtering table on reset.
+
+The device MUST update the MAC filtering table before it consumes
+the VIRTIO_NET_CTRL_MAC_TABLE_SET command.
+
+The device MUST update \field{mac} in config space before it consumes
+the VIRTIO_NET_CTRL_MAC_ADDR_SET command, if VIRTIO_NET_F_MAC_ADDR has
+been negotiated.
+
+The device SHOULD drop incoming packets which have a destination MAC which
+matches neither the \field{mac} (or that set with VIRTIO_NET_CTRL_MAC_ADDR_SET)
+nor the MAC filtering table.
+
\drivernormative{\subparagraph}{Setting MAC Address Filtering}{Device Types / Network Device / Device Operation / Control Virtqueue / Setting MAC Address Filtering}
A driver MUST NOT write to the \field{mac} if VIRTIO_NET_F_MAC_ADDR is
@@ -3387,6 +3402,11 @@ VIRTIO_NET_CTRL_MAC_ADDR_SET command is atomic whereas
MUST negotiate VIRTIO_NET_F_MAC_ADDR if they change
mac address when device is accepting incoming packets.
+The driver MUST follow the VIRTIO_NET_CTRL_MAC_TABLE_SET command
+by a le32 number, followed by that number of non-multicast
+MAC addresses, followed by another le32 number, followed by
+that number of multicast addresses. Either number MAY be 0.
+
\subparagraph{Legacy Interface: Setting MAC Address Filtering}\label{sec:Device Types / Network Device / Device Operation / Control Virtqueue / Setting MAC Address Filtering / Legacy Interface: Setting MAC Address Filtering}
When using the legacy interface, transitional devices and drivers
MUST format \field{entries} in struct virtio_net_ctrl_mac