[dpdk-dev] [RFC 0/3] net/virtio: add vdpa device config support
Maxime Coquelin
maxime.coquelin at redhat.com
Fri Apr 16 10:10:17 CEST 2021
Hi Adrian,
Thanks for your feedback.
On 4/16/21 9:28 AM, Adrian Moreno wrote:
>
>
> On 3/18/21 11:35 PM, Maxime Coquelin wrote:
>> This patch adds vDPA device config space requests support.
>> For now, it only adds MAC address get and set. It may be
>> extended in next revision to support other configs like
>> link state.
>>
>> Regarding the MAC selection strategy, if devargs MAC address
>> is set by the user and valid, the driver tries to store it
>> in the device config space, then it reads the MAC address
>> back from the device config, which will be used. If not set
>> in devargs or invalid, it tries to read it from the device.
>> If it fails, a random MAC will be used.
>>
>> I'm interrested to know your feedback on this strategy.
>
> In general, I think it's a reasonable strategy. Once we have cq support, things
> will be a bit easier.
>
> Some questions:
> How should we interpret failure to configure the mac (i.e: after set and get,
> they still don't match)? Should we fail virtio_user_dev_init if the
> configuration provided by devargs is not successfully applied?
>
> Should a zero mac be treated differntly as qemu does? [1]
>
> [1]
> https://patchwork.ozlabs.org/project/qemu-devel/patch/20210302142014.141135-3-mst@redhat.com/
Testing with ConnectX-6 Dx, I can see that the device does not advertise
VIRTIO_NET_F_MAC, so with this is series, it just doesn't try to read it
from the device.
My understanding is that in Qemu, the feature is forced[0], which
explains why it reads zeroes.
>
>> It has been tested with vDPA simulator, which only supports
>> getting the MAC address, and witch CX6 which supports neither
>> getting or setting MAC address (and so devarg or random MAC is
>> used). IFCVF driver seems to support both getting and setting
>> the MAC, I have a try with it before next revision.
>
> Does cx6 negotiate VIRTIO_NET_F_MAC?
Nope.
I haven't tested yet with IFCVF.
Maxime
>>
>> Maxime Coquelin (3):
>> net/virtio: keep device and frontend features separated
>> net/virtio: add device config support to vDPA
>> net/virtio: add MAC device config getter and setter
>>
>> drivers/net/virtio/virtio_user/vhost.h | 3 +
>> drivers/net/virtio/virtio_user/vhost_vdpa.c | 69 +++++++++++++++
>> .../net/virtio/virtio_user/virtio_user_dev.c | 88 +++++++++++++++----
>> .../net/virtio/virtio_user/virtio_user_dev.h | 2 +
>> drivers/net/virtio/virtio_user_ethdev.c | 12 ++-
>> 5 files changed, 151 insertions(+), 23 deletions(-)
>>
>
[0]: https://elixir.bootlin.com/qemu/latest/source/hw/net/virtio-net.c#L3078
More information about the dev
mailing list