OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

virtio-comment message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Re: [PATCH v4] Introduction of Virtio Network device notifications coalescing feature.


On Thu, Jun 9, 2022 at 3:17 PM Alvaro Karsz <alvaro.karsz@solid-run.com> wrote:
>
> > Considering RX may use multiple buffers per packet, I wonder if it's
> > better to stick to "packet" here.
>
> Noted.
>
> > Does this work like: if we set rx_max_buffers to 10, it means after 1
> > buffers is used, we still need another 10 buffers?
>
> No, if  rx_max_buffers=10, we should send a notification on the #10
> packet. I will clarify that.
>
> > I think we should explicitly say mergeable rx buffers here. And that's
> > why I think mentioning "packet is sent/received" is probably better
> > than the buffer used here.
>
> I meant when the host writes a packet in several buffers, and the NEXT
> flag is set on the descriptor.
> But you're right, I should mention the mergeable rx buffers as well.
>
> > It's better to clarify it in the part of coalescing parameters, or we
> > can just borrow the comments of kernel's ethtool_coalesce, then it
> > should explain itself like:
> >
> >
> > @rx_usecs: How many usecs to delay an RX notification after a packet arrives
> > @rx_max_buffers: Maximum number of packets to receive before an RX notification
> >
> >
> > Not a native speaker but then rx_usecs=0 it means the notification is
> > sent immediately and by saying "maximum number" it means best effort.
>
> Noted. I will move the coalescing parameters explanation to this subparagraph.
>
> > Let's clarify what happens if notification is suppressed.
>
> I will add that in this case, the device should not send a notification.

Yes, and when the notification needs to be sent.

>
> > I think there's probably no need to mention the implementation details
> > like counters here. The definition of rx_usecs and rx_max_buffers
> > should be sufficient.
>
> Noted.
>
> > What's the reason for this?
>
> Because if (tx/rx)_buffers_max is bigger than the virtqueue size, this
> condition will never be met.

I don't understand here, the driver can poll for the used buffer actually.

> Do you think that we should allow this to happen?

Not sure but I just have a try with mlx4, it gives me:

# ethtool -g ens3d1
Ring parameters for ens3d1:
Pre-set maximums:
RX: 8192
RX Mini: n/a
RX Jumbo: n/a
TX: 8192
Current hardware settings:
RX: 1024
RX Mini: n/a
RX Jumbo: n/a
TX: 1024

# ethtool -c ens3d1
Coalesce parameters for ens3d1:
Adaptive RX: on  TX: n/a
stats-block-usecs: n/a
sample-interval: 0
pkt-rate-low: 400000
pkt-rate-high: 450000

rx-usecs: 16
rx-frames: 2048
rx-usecs-irq: n/a
rx-frames-irq: n/a

tx-usecs: 16
tx-frames: 16
tx-usecs-irq: n/a
tx-frames-irq: 256

rx-usecs-low: 0
rx-frame-low: n/a
tx-usecs-low: n/a
tx-frame-low: n/a

rx-usecs-high: 128
rx-frame-high: n/a
tx-usecs-high: n/a
tx-frame-high: n/a

It means rx-frames could be bigger than RX.

Thanks

>
> > I think we need use MUST here, something like:
> >
> >
> > Upon reset, the device must present all zero values ...
>
> Noted.
>



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]