diff options
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/libcommon/source/sniffer.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/firmware/libcommon/source/sniffer.c b/firmware/libcommon/source/sniffer.c index 1c691af..0ca71a5 100644 --- a/firmware/libcommon/source/sniffer.c +++ b/firmware/libcommon/source/sniffer.c @@ -226,6 +226,14 @@ static void update_wt(uint8_t wi, uint8_t d) */ static struct msgb *usb_msg_alloc_hdr(uint8_t ep, uint8_t msg_class, uint8_t msg_type) { + /* Only allocate message if not too many are already in the queue */ + struct llist_head *head = usb_get_queue(SIMTRACE_USB_EP_CARD_DATAIN); + if (!head) { + return NULL; + } + if (llist_count(head) > 5) { + return NULL; + } struct msgb *usb_msg = usb_buf_alloc(SIMTRACE_USB_EP_CARD_DATAIN); if (!usb_msg) { return NULL; |