提交 577662f0 编写于 作者: T Thomas Chou

net: altera_tse: wait sgdma in altera_tse_recv

Move the sgdma wait from free_pkt to recv. This is the proper
place to wait recv sgdma done.
Signed-off-by: NThomas Chou <thomas@wytron.com.tw>
Reviewed-by: NMarek Vasut <marex@denx.de>
上级 acd71c32
...@@ -186,6 +186,7 @@ static int altera_tse_recv(struct udevice *dev, int flags, uchar **packetp) ...@@ -186,6 +186,7 @@ static int altera_tse_recv(struct udevice *dev, int flags, uchar **packetp)
if (rx_desc->descriptor_status & if (rx_desc->descriptor_status &
ALT_SGDMA_DESCRIPTOR_STATUS_TERMINATED_BY_EOP_MSK) { ALT_SGDMA_DESCRIPTOR_STATUS_TERMINATED_BY_EOP_MSK) {
alt_sgdma_wait_transfer(priv->sgdma_rx);
packet_length = rx_desc->actual_bytes_transferred; packet_length = rx_desc->actual_bytes_transferred;
debug("recv %d bytes\n", packet_length); debug("recv %d bytes\n", packet_length);
*packetp = priv->rx_buf; *packetp = priv->rx_buf;
...@@ -203,7 +204,6 @@ static int altera_tse_free_pkt(struct udevice *dev, uchar *packet, ...@@ -203,7 +204,6 @@ static int altera_tse_free_pkt(struct udevice *dev, uchar *packet,
struct alt_sgdma_descriptor *rx_desc = priv->rx_desc; struct alt_sgdma_descriptor *rx_desc = priv->rx_desc;
unsigned long rx_buf = (unsigned long)priv->rx_buf; unsigned long rx_buf = (unsigned long)priv->rx_buf;
alt_sgdma_wait_transfer(priv->sgdma_rx);
invalidate_dcache_range(rx_buf, rx_buf + PKTSIZE_ALIGN); invalidate_dcache_range(rx_buf, rx_buf + PKTSIZE_ALIGN);
alt_sgdma_construct_descriptor( alt_sgdma_construct_descriptor(
rx_desc, rx_desc,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册