Re: [PATCH net 1/3] virtio-net: make refill work a per receive queue work
From: Jason Wang <jasowang@redhat.com>
Date: 2025-12-25 07:33:46
Also in:
bpf, lkml, virtualization
From: Jason Wang <jasowang@redhat.com>
Date: 2025-12-25 07:33:46
Also in:
bpf, lkml, virtualization
On Wed, Dec 24, 2025 at 9:48 AM Michael S. Tsirkin [off-list ref] wrote:
On Wed, Dec 24, 2025 at 09:37:14AM +0800, Xuan Zhuo wrote:quoted
Hi Jason, I'm wondering why we even need this refill work. Why not simply let NAPI retry the refill on its next run if the refill fails? That would seem much simpler. This refill work complicates maintenance and often introduces a lot of concurrency issues and races. Thanks.refill work can refill from GFP_KERNEL, napi only from ATOMIC. And if GFP_ATOMIC failed, aggressively retrying might not be a great idea.
Btw, I see some drivers are doing things as Xuan said. E.g
mlx5e_napi_poll() did:
busy |= INDIRECT_CALL_2(rq->post_wqes,
mlx5e_post_rx_mpwqes,
mlx5e_post_rx_wqes,
...
if (busy) {
if (likely(mlx5e_channel_no_affinity_change(c))) {
work_done = budget;
goto out;
...
Not saying refill work is a great hack, but that is the reason for it. -- MST
Thanks