From 1020e1a1dbb32413ddccff9ccc921b2bb610e239 Mon Sep 17 00:00:00 2001 From: patacongo Date: Sun, 18 Dec 2011 13:53:58 +0000 Subject: [PATCH] Fix STM32 USB overrun problem (again, still) git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@4199 42af7a65-404d-4744-a932-0658087f49c3 --- arch/arm/src/stm32/stm32_usbdev.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/arch/arm/src/stm32/stm32_usbdev.c b/arch/arm/src/stm32/stm32_usbdev.c index c10ac104b34..54148b230a2 100644 --- a/arch/arm/src/stm32/stm32_usbdev.c +++ b/arch/arm/src/stm32/stm32_usbdev.c @@ -1085,8 +1085,7 @@ static struct stm32_req_s *stm32_rqdequeue(struct stm32_ep_s *privep) * Name: stm32_rqenqueue ****************************************************************************/ -static void stm32_rqenqueue(struct stm32_ep_s *privep, - struct stm32_req_s *req) +static void stm32_rqenqueue(struct stm32_ep_s *privep, struct stm32_req_s *req) { req->flink = NULL; if (!privep->head) @@ -1446,7 +1445,10 @@ static void stm32_epdone(struct stm32_usbdev_s *priv, uint8_t epno) priv->rxstatus = USB_EPR_STATRX_VALID; } - else + + /* NAK further OUT packets if there there no more read requests */ + + if (stm32_rqempty(privep)) { usbtrace(TRACE_INTDECODE(STM32_TRACEINTID_EPOUTPENDING), (uint16_t)epno);