[Ethernet]
- optimize packet transfer to EMAC [Test_GPIO] - only create packet once too speed up burst TX git-svn-id: http://moon:8086/svn/mips@64 a8ebac50-d88d-4704-bea3-6648445a41b3
This commit is contained in:
+16
-2
@@ -75,7 +75,8 @@ uint32_t Eth_pkt_send(packet_t *pPacket)
|
||||
volatile uint32_t *pEmac_ctrl = (uint32_t*)SYS_EMAC_TX_CTRL;
|
||||
volatile uint32_t *pEmac_size = (uint32_t*)SYS_EMAC_TX_SIZE;
|
||||
volatile uint32_t *pEmac_data = (uint32_t*)SYS_EMAC_DATA;
|
||||
|
||||
uint32_t *pData = (uint32_t*)pPacket->pkt_buf;
|
||||
|
||||
uint32_t i, num_words, num_bytes;
|
||||
|
||||
num_bytes = pPacket->size;
|
||||
@@ -90,9 +91,22 @@ uint32_t Eth_pkt_send(packet_t *pPacket)
|
||||
if (num_bytes & 3)
|
||||
num_words++;
|
||||
|
||||
while(num_words >= 8)
|
||||
{
|
||||
*pEmac_data = pData[i+0];
|
||||
*pEmac_data = pData[i+1];
|
||||
*pEmac_data = pData[i+2];
|
||||
*pEmac_data = pData[i+3];
|
||||
*pEmac_data = pData[i+4];
|
||||
*pEmac_data = pData[i+5];
|
||||
*pEmac_data = pData[i+6];
|
||||
*pEmac_data = pData[i+7];
|
||||
i += 8;
|
||||
num_words -= 8;
|
||||
}
|
||||
for (i=0; i < num_words; i++)
|
||||
{
|
||||
*pEmac_data = ((uint32_t*)pPacket->pkt_buf)[i];
|
||||
*pEmac_data = pData[i];
|
||||
}
|
||||
|
||||
EMAC_TX_commit();
|
||||
|
||||
Reference in New Issue
Block a user