[libvirt] [PATCH] qemu: Introduce VIRTIO_NET_F_STANDBY feature bit to virtio_net

Samudrala, Sridhar sridhar.samudrala at intel.com
Wed Jun 6 18:17:36 UTC 2018


On 6/4/2018 7:06 PM, Jason Wang wrote:
>
>
> On 2018年06月05日 09:41, Samudrala, Sridhar wrote:
>> Ping on this patch now that the kernel patches are accepted into 
>> davem's net-next tree.
>> https://patchwork.ozlabs.org/cover/920005/
>>
>>
>> On 5/7/2018 4:09 PM, Sridhar Samudrala wrote:
>>> This feature bit can be used by hypervisor to indicate virtio_net 
>>> device to
>>> act as a standby for another device with the same MAC address.
>>>
>>> I tested this with a small change to the patch to mark the STANDBY 
>>> feature 'true'
>>> by default as i am using libvirt to start the VMs.
>>> Is there a way to pass the newly added feature bit 'standby' to qemu 
>>> via libvirt
>>> XML file?
>>>
>
> Maybe you can try qemu command line passthrough:
>
> https://libvirt.org/drvqemu.html#qemucommand

It looks like this can be used to pass command line arguments to qemu.
Is it possible to specify a virtio specific attribute via this method?

For ex: to say mrg_rxbuf is off we can add the following line to virtio
section of the domain xml file.
   <host mrg_rxbuf='off'/>

I think libvirt needs to be extended to to support the new 'standby' attribute
via this mechanism.
Adding Liane Stump and libvirt to the CC list.

Michael,
Can we start with getting this patch into Qemu and an update to libvirt to
support the 'standby' feature so that this feature can be enabled via
some scripts/orchestration layer for now.

We could improve this solution by enhancing Qemu to do automatic management of the
addition/deletion of the primary device based on feature negotiation as a later patch.


>
> The patch looks good to me. Let's see if Michael have any comment.
>
> Thanks
>
>>> Signed-off-by: Sridhar Samudrala <sridhar.samudrala at intel.com>
>>> ---
>>>   hw/net/virtio-net.c                         | 2 ++
>>>   include/standard-headers/linux/virtio_net.h | 3 +++
>>>   2 files changed, 5 insertions(+)
>>>
>>> diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c
>>> index 90502fca7c..38b3140670 100644
>>> --- a/hw/net/virtio-net.c
>>> +++ b/hw/net/virtio-net.c
>>> @@ -2198,6 +2198,8 @@ static Property virtio_net_properties[] = {
>>>                        true),
>>>       DEFINE_PROP_INT32("speed", VirtIONet, net_conf.speed, 
>>> SPEED_UNKNOWN),
>>>       DEFINE_PROP_STRING("duplex", VirtIONet, net_conf.duplex_str),
>>> +    DEFINE_PROP_BIT64("standby", VirtIONet, host_features, 
>>> VIRTIO_NET_F_STANDBY,
>>> +                      false),
>>>       DEFINE_PROP_END_OF_LIST(),
>>>   };
>>>   diff --git a/include/standard-headers/linux/virtio_net.h 
>>> b/include/standard-headers/linux/virtio_net.h
>>> index e9f255ea3f..01ec09684c 100644
>>> --- a/include/standard-headers/linux/virtio_net.h
>>> +++ b/include/standard-headers/linux/virtio_net.h
>>> @@ -57,6 +57,9 @@
>>>                        * Steering */
>>>   #define VIRTIO_NET_F_CTRL_MAC_ADDR 23    /* Set MAC address */
>>>   +#define VIRTIO_NET_F_STANDBY      62    /* Act as standby for 
>>> another device
>>> +                                         * with the same MAC.
>>> +                                         */
>>>   #define VIRTIO_NET_F_SPEED_DUPLEX 63    /* Device set linkspeed 
>>> and duplex */
>>>     #ifndef VIRTIO_NET_NO_LEGACY
>>
>




More information about the libvir-list mailing list