X-Git-Url: https://jxself.org/git/?p=carl9170fw.git;a=blobdiff_plain;f=carlfw%2Fusb%2Fmain.c;h=1429607f891a1a7514457d797d247b3f669d6736;hp=d07eb25272c7ee3fc1dc54a9be4e5300ce74928a;hb=acca5dfdf46f522105f8181c8aff4392eecce8de;hpb=37e0334fc3746804825771fe87afaa5dca3d1e81 diff --git a/carlfw/usb/main.c b/carlfw/usb/main.c index d07eb25..1429607 100644 --- a/carlfw/usb/main.c +++ b/carlfw/usb/main.c @@ -65,7 +65,14 @@ static struct carl9170_rsp *get_int_buf(void) { struct carl9170_rsp *tmp; - tmp = &fw.usb.int_buf[fw.usb.int_tail_index++]; + /* fetch the _oldest_ buffer from the ring */ + tmp = &fw.usb.int_buf[fw.usb.int_tail_index]; + + /* assign a unique sequence for every response/trap */ + tmp->hdr.seq = fw.usb.int_tail_index; + + fw.usb.int_tail_index++; + fw.usb.int_tail_index %= CARL9170_INT_RQ_CACHES; if (fw.usb.int_pending != CARL9170_INT_RQ_CACHES) fw.usb.int_pending++;