projects
/
carl9170fw.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
carl9170 firmware: save a few bytes on the command handler
[carl9170fw.git]
/
carlfw
/
usb
/
main.c
diff --git
a/carlfw/usb/main.c
b/carlfw/usb/main.c
index f32efc2a9a0f15aaea30a1b858d21336c3c18701..1429607f891a1a7514457d797d247b3f669d6736 100644
(file)
--- 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;
{
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++;
fw.usb.int_tail_index %= CARL9170_INT_RQ_CACHES;
if (fw.usb.int_pending != CARL9170_INT_RQ_CACHES)
fw.usb.int_pending++;
@@
-152,6
+159,7
@@
static void usb_status_in(void)
goto reclaim;
}
goto reclaim;
}
+ fw.usb.int_desc->ctrl = AR9170_CTRL_FS_BIT | AR9170_CTRL_LS_BIT;
fw.usb.int_desc->totalLen = tlen;
fw.usb.int_desc->dataSize = tlen;
fw.usb.int_desc->totalLen = tlen;
fw.usb.int_desc->dataSize = tlen;