summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorJason Brown <jason.brown@apcon.com>2017-11-28 11:12:43 -0800
committerJoe Hershberger <joe.hershberger@ni.com>2018-01-15 12:05:19 -0600
commit32ac8b0bba72684281a079a8e23832efabd97e09 (patch)
tree6f0ba7229e2faeb9a9f4cddfc3834da146564673 /drivers
parent33bab1045773dea9f1bac24569a7f4e29072fd20 (diff)
net: mvneta - Fixed recv() when multiple packets have arrived.
This patch fixes a problem in the mvneta driver where if more than one packet arrives between calls to mvneta_recv(), the additional descriptors will be marked as free even though only one descriptor has been read and processed from the receive queue. This causes the additional packet(s) to be delayed until the next packet arrives. >From this point on all packets will be delayed because the receive queue will contain unprocessed packets but the hardware shows no busy descriptors. Signed-off-by: Jason Brown <jason.brown@apcon.com> Reviewed-by: Stefan Roese <sr@denx.de> Acked-by: Joe Hershberger <joe.hershberger@ni.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/mvneta.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/net/mvneta.c b/drivers/net/mvneta.c
index f1be9521a91..83e31537688 100644
--- a/drivers/net/mvneta.c
+++ b/drivers/net/mvneta.c
@@ -1654,7 +1654,11 @@ static int mvneta_recv(struct udevice *dev, int flags, uchar **packetp)
*/
*packetp = data;
- mvneta_rxq_desc_num_update(pp, rxq, rx_done, rx_done);
+ /*
+ * Only mark one descriptor as free
+ * since only one was processed
+ */
+ mvneta_rxq_desc_num_update(pp, rxq, 1, 1);
}
return rx_bytes;