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]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to