Hi
I used interface tap v2 as chanel between vpp and linux kernel. On some
unkown conditions, I found one tx ring dose not work.
The cause is the tx vring buff is full, desc_in_use is equal to qsz . I do
not know the trigger, maybe the kick message was missed or the other
errror .
But from linux kernel code, there are some comment for VRING_USED_F_NO_NOTIFY.
For system robust, is the method that kick off unconditionally when buffer
is full reasonable?
/* The Host uses this in used->flags to advise the Guest: don't kick me when
* you add a buffer. It's unreliable, so it's simply an optimization. Guest
* will still kick if it's out of buffers. */
#define VRING_USED_F_NO_NOTIFY 1
The current code , check VRING_USED_F_NO_NOTIFY
if ((clib_atomic_load_seq_cst (&vring->used->flags) &
VRING_USED_F_NO_NOTIFY) == 0)
virtio_kick (vm, vring, vif);
The error output :
Virtqueue (TX) 7
qsz 4096, last_used_idx 13961, desc_next 1674, desc_in_use 1
avail.flags 0x1 avail.idx 13962 used.flags 0x0 used.idx 13962
kickfd 96, callfd -1
Virtqueue (TX) 9
qsz 4096, last_used_idx 57889, desc_next 545, desc_in_use 4096
avail.flags 0x1 avail.idx 61985 used.flags 0x1 used.idx 57889
kickfd 99, callfd -1
Virtqueue (TX) 11
qsz 4096, last_used_idx 39776, desc_next 2913, desc_in_use 1
avail.flags 0x1 avail.idx 39777 used.flags 0x0 used.idx 39777
kickfd 102, callfd -1
[email protected]
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#22486): https://lists.fd.io/g/vpp-dev/message/22486
Mute This Topic: https://lists.fd.io/mt/96396067/21656
Group Owner: [email protected]
Unsubscribe: https://lists.fd.io/g/vpp-dev/leave/1480452/21656/631435203/xyzzy
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-