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-...@redhat.com/
> 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?
>
> 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(-)
>
--
Adrián Moreno