On 27.08.24 04:03, Jason Wang wrote: > On Tue, Aug 27, 2024 at 12:11 AM Dragos Tatulea <dtatulea@xxxxxxxxxx> wrote: >> >> >> On 26.08.24 16:24, Andrew Lunn wrote: >>> On Mon, Aug 26, 2024 at 11:06:09AM +0200, Dragos Tatulea wrote: >>>> >>>> >>>> On 23.08.24 18:54, Carlos Bilbao wrote: >>>>> Hello, >>>>> >>>>> I'm debugging my vDPA setup, and when using ioctl to retrieve the >>>>> configuration, I noticed that it's running in half duplex mode: >>>>> >>>>> Configuration data (24 bytes): >>>>> MAC address: (Mac address) >>>>> Status: 0x0001 >>>>> Max virtqueue pairs: 8 >>>>> MTU: 1500 >>>>> Speed: 0 Mb >>>>> Duplex: Half Duplex >>>>> RSS max key size: 0 >>>>> RSS max indirection table length: 0 >>>>> Supported hash types: 0x00000000 >>>>> >>>>> I believe this might be contributing to the underperformance of vDPA. >>>> mlx5_vdpa vDPA devicess currently do not support the VIRTIO_NET_F_SPEED_DUPLEX >>>> feature which reports speed and duplex. You can check the state on the >>>> PF. >>> >>> Then it should probably report DUPLEX_UNKNOWN. >>> >>> The speed of 0 also suggests SPEED_UNKNOWN is not being returned. So >>> this just looks buggy in general. >>> >> The virtio spec doesn't mention what those values should be when >> VIRTIO_NET_F_SPEED_DUPLEX is not supported. >> >> Jason, should vdpa_dev_net_config_fill() initialize the speed/duplex >> fields to SPEED/DUPLEX_UNKNOWN instead of 0? > > Spec said > > """ > The following two fields, speed and duplex, only exist if > VIRTIO_NET_F_SPEED_DUPLEX is set. > """ > > So my understanding is that it is undefined behaviour, and those > fields seems useless before feature negotiation. For safety, it might > be better to initialize them as UNKOWN. > After a closer look my statement doesn't make sense: the device will copy the virtio_net_config bytes on top. The solution is to initialize these fields to UNKNOWN in the driver. Will send a patch to fix this. Thanks, Dragos