Thread (21 messages) 21 messages, 3 authors, 2023-09-25

Re: [PATCH net 5/6] virtio-net: fix the vq coalescing setting for vq resize

From: Heng Qi <hidden>
Date: 2023-09-25 02:45:46


在 2023/9/25 上午10:29, Jason Wang 写道:
On Fri, Sep 22, 2023 at 5:56 PM Xuan Zhuo [off-list ref] wrote:
quoted
On Fri, 22 Sep 2023 15:32:39 +0800, Jason Wang [off-list ref] wrote:
quoted
On Fri, Sep 22, 2023 at 1:02 PM Heng Qi [off-list ref] wrote:
quoted

在 2023/9/22 下午12:29, Jason Wang 写道:
quoted
On Tue, Sep 19, 2023 at 3:49 PM Heng Qi [off-list ref] wrote:
quoted
According to the definition of virtqueue coalescing spec[1]:

    Upon disabling and re-enabling a transmit virtqueue, the device MUST set
    the coalescing parameters of the virtqueue to those configured through the
    VIRTIO_NET_CTRL_NOTF_COAL_TX_SET command, or, if the driver did not set
    any TX coalescing parameters, to 0.

    Upon disabling and re-enabling a receive virtqueue, the device MUST set
    the coalescing parameters of the virtqueue to those configured through the
    VIRTIO_NET_CTRL_NOTF_COAL_RX_SET command, or, if the driver did not set
    any RX coalescing parameters, to 0.

We need to add this setting for vq resize (ethtool -G) where vq_reset happens.

[1] https://lists.oasis-open.org/archives/virtio-dev/202303/msg00415.html

Fixes: 394bd87764b6 ("virtio_net: support per queue interrupt coalesce command")
I'm not sure this is a real fix as spec allows it to go zero?
The spec says that if the user has configured interrupt coalescing
parameters,
parameters need to be restored after vq_reset, otherwise set to 0.
vi->intr_coal_tx and vi->intr_coal_rx always save the newest global
parameters,
regardless of whether the command is sent or not. So I think we need
this patch
it complies with the specification requirements.
How can we make sure the old coalescing parameters still make sense
for the new ring size?
For the user, I don't think we should drop the config for the coalescing.
Maybe the config does not make sense for the new ring size, but when the user
just change the ring size, the config for the coalesing is missing, I think
that is not good.
How did other drivers deal with this?
Test on mlx5, the behavior is the same as what this patch does:

#1 ethtool -g eth0
...
Current hardware settings:
RX: 8192
RX Mini: n/a
RX Jumbo: n/a
Tx: 1024
...

#2 ethtool -c eth0
Coalesce parameters for eth0:
Adaptive RX: off  TX: off
...
rx-usecs:    11
rx-frames:    32
rx-usecs-irq:    n/a
rx-frames-irq:    n/a
...

#3 sudo ethtool -G eth0 rx 4096
#4 ethtool -g eth0
Ring parameters for eth0:
...
Current hardware settings:
RX:        4096
RX Mini:    n/a
RX Jumbo:    n/a
TX:        1024
...

#4 ethtool -c eth0
Coalesce parameters for eth0:
Adaptive RX: off  TX: off
...
rx-usecs:    11
rx-frames:    32
rx-usecs-irq:    n/a
rx-frames-irq:    n/a
...

And I check the code, except for the parameters related to ring size, 
which are changed,
other parameters in structure mlx5e_params are retained.

Thanks
Thanks
quoted
Thanks.



quoted
Thanks
quoted
Thanks!
quoted
Thanks
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help