akong at redhat.com
2013-Jan-16 07:33 UTC
[PATCH] virtio-spec: set mac address by a new vq command
From: Amos Kong <akong at redhat.com> Virtio-net driver currently programs MAC address byte by byte, this means that we have an intermediate step where mac is wrong. This patch introduced a new control command to set MAC address in one time, and added a new feature flag VIRTIO_NET_F_MAC_ADDR for this feature. Signed-off-by: Amos Kong <akong at redhat.com> --- virtio-spec.lyx | 45 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/virtio-spec.lyx b/virtio-spec.lyx index 1ba9992..03f5a49 100644 --- a/virtio-spec.lyx +++ b/virtio-spec.lyx @@ -56,6 +56,7 @@ \html_math_output 0 \html_css_as_file 0 \html_be_strict false +\author -1930653948 "Amos Kong" akong at redhat.com \author -608949062 "Rusty Russell,,," \author -385801441 "Cornelia Huck" cornelia.huck at de.ibm.com \author 1112500848 "Rusty Russell" rusty at rustcorp.com.au @@ -4391,6 +4392,14 @@ VIRTIO_NET_F_GUEST_ANNOUNCE(21) Guest can send gratuitous packets. \change_inserted 1986246365 1352742808 VIRTIO_NET_F_MQ(22) Device supports multiqueue with automatic receive steering. +\change_inserted -1930653948 1358319033 + +\end_layout + +\begin_layout Description + +\change_inserted -1930653948 1358319080 +VIRTIO_NET_F_CTRL_MAC_ADDR(23) Set MAC address. \change_unchanged \end_layout @@ -5284,7 +5293,11 @@ The class VIRTIO_NET_CTRL_RX has two commands: VIRTIO_NET_CTRL_RX_PROMISC \end_layout \begin_layout Subsubsection* -Setting MAC Address Filtering +Setting MAC Address +\change_deleted -1930653948 1358318470 + Filtering +\change_unchanged + \end_layout \begin_layout Standard @@ -5324,6 +5337,17 @@ struct virtio_net_ctrl_mac { \begin_layout Plain Layout #define VIRTIO_NET_CTRL_MAC_TABLE_SET 0 +\change_inserted -1930653948 1358318313 + +\end_layout + +\begin_layout Plain Layout + +\change_inserted -1930653948 1358318331 + + #define VIRTIO_NET_CTRL_MAC_ADDR_SET 1 +\change_unchanged + \end_layout \end_inset @@ -5349,6 +5373,25 @@ T_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 contains multicast addresses. +\change_inserted -1930653948 1358318545 + +\end_layout + +\begin_layout Standard + +\change_inserted -1930653948 1358320004 +The command VIRTIO_NET_CTRL_MAC_ADDR_SET is used to set +\begin_inset Quotes eld +\end_inset + +physical +\begin_inset Quotes erd +\end_inset + + address of the network card. + The command-specific-data is a 6-byte MAC address. +\change_unchanged + \end_layout \begin_layout Subsection* -- 1.7.11.7
Stefan Hajnoczi
2013-Jan-16 09:13 UTC
[PATCH] virtio-spec: set mac address by a new vq command
On Wed, Jan 16, 2013 at 03:33:24PM +0800, akong at redhat.com wrote:> +\change_inserted -1930653948 1358320004 > +The command VIRTIO_NET_CTRL_MAC_ADDR_SET is used to set > +\begin_inset Quotes eld > +\end_inset > + > +physical > +\begin_inset Quotes erd > +\end_inset > + > + address of the network card.The "physical" address of the network card? That term is not defined anywhere in the specification. Perhaps it's best to explain that the config space "mac" field and VIRTIO_NET_CTRL_MAC_ADDR_SET both set the default MAC address which rx filtering accepts. (The MAC table is an additional set of MAC addresses which rx filtering accepts.) It would also be worth explaining that VIRTIO_NET_CTRL_MAC_ADDR_SET is atomic whereas the config space "mac" field is not. Therefore, VIRTIO_NET_CTRL_MAC_ADDR_SET is preferred, especially while the NIC is up. Stefan
Apparently Analagous Threads
- [PATCH] virtio-spec: set mac address by a new vq command
- [RFC virt-spec PATCH] only writing out the last byte of MAC makes it have effect
- [RFC virt-spec PATCH] only writing out the last byte of MAC makes it have effect
- [PATCH] virtio-spec: document virtio-9p
- [PATCH] virtio-spec: document virtio-9p