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 zhangguangm...@baicells.com
-=-=-=-=-=-=-=-=-=-=-=- 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: vpp-dev+ow...@lists.fd.io Unsubscribe: https://lists.fd.io/g/vpp-dev/leave/1480452/21656/631435203/xyzzy [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-