summaryrefslogtreecommitdiff
path: root/bsp/ls1cdev/drivers/net
diff options
context:
space:
mode:
authorliufeilong <[email protected]>2019-08-21 13:43:37 +0800
committerliufeilong <[email protected]>2019-08-21 13:43:37 +0800
commit9e2dedeff52b3f55ed35a544251a43e535368c92 (patch)
tree1a99063ddc47785aa9a428c039f137a2d5a18d58 /bsp/ls1cdev/drivers/net
parent1b01546ca00c6843ab401f28d0b95dc68e9ff41d (diff)
实现网络稳定传输以及ADB正常传输文件
Diffstat (limited to 'bsp/ls1cdev/drivers/net')
-rw-r--r--bsp/ls1cdev/drivers/net/synopGMAC.c28
1 files changed, 9 insertions, 19 deletions
diff --git a/bsp/ls1cdev/drivers/net/synopGMAC.c b/bsp/ls1cdev/drivers/net/synopGMAC.c
index 8273b06c1c..da8c3c89fb 100644
--- a/bsp/ls1cdev/drivers/net/synopGMAC.c
+++ b/bsp/ls1cdev/drivers/net/synopGMAC.c
@@ -572,22 +572,16 @@ struct pbuf *rt_eth_rx(rt_device_t device)
}
/*Handle the Receive Descriptors*/
- do
- {
- desc_index = synopGMAC_get_rx_qptr(gmacdev, &status, &dma_addr1, NULL, &data1, &dma_addr2, NULL, &data2);
-
- if (desc_index >= 0 && data1 != 0)
+ desc_index = synopGMAC_get_rx_qptr(gmacdev, &status, &dma_addr1, NULL, &data1, &dma_addr2, NULL, &data2);
+ if (desc_index >= 0 && data1 != 0)
{
- DEBUG_MES("Received Data at Rx Descriptor %d for skb 0x%08x whose status is %08x\n", desc_index, dma_addr1, status);
-
- if (synopGMAC_is_rx_desc_valid(status) || SYNOP_PHY_LOOPBACK)
+ DEBUG_MES("Received Data at Rx Descriptor %d for skb 0x%08x whose status is %08x\n", desc_index, dma_addr1, status);
+ if (synopGMAC_is_rx_desc_valid(status) || SYNOP_PHY_LOOPBACK)
{
- pbuf = pbuf_alloc(PBUF_LINK, MAX_ETHERNET_PAYLOAD, PBUF_RAM);
- if (pbuf == 0) rt_kprintf("===error in pbuf_alloc\n");
-
-
dma_addr1 = plat_dma_map_single(gmacdev, (void *)data1, RX_BUF_SIZE);
- len = synopGMAC_get_rx_desc_frame_length(status); //Not interested in Ethernet CRC bytes
+ len = synopGMAC_get_rx_desc_frame_length(status)-4; //Not interested in Ethernet CRC bytes
+ pbuf = pbuf_alloc(PBUF_LINK, len, PBUF_RAM);
+ if (pbuf == 0) rt_kprintf("===error in pbuf_alloc\n");
rt_memcpy(pbuf->payload, (char *)data1, len);
DEBUG_MES("==get pkg len: %d\n", len);
}
@@ -600,19 +594,15 @@ struct pbuf *rt_eth_rx(rt_device_t device)
adapter->synopGMACNetStats.rx_frame_errors += synopGMAC_is_frame_dribbling_errors(status);
adapter->synopGMACNetStats.rx_length_errors += synopGMAC_is_rx_frame_length_errors(status);
}
-
desc_index = synopGMAC_set_rx_qptr(gmacdev, dma_addr1, RX_BUF_SIZE, (u32)data1, 0, 0, 0);
-
if (desc_index < 0)
{
- #if SYNOP_RX_DEBUG
+#if SYNOP_RX_DEBUG
rt_kprintf("Cannot set Rx Descriptor for data1 %08x\n", (u32)data1);
- #endif
+#endif
plat_free_memory((void *)data1);
}
-
}
- }while(desc_index >= 0);
rt_sem_release(&sem_lock);
DEBUG_MES("%s : before return \n", __FUNCTION__);
return pbuf;