Skip to content
Snippets Groups Projects
Commit 977d4d87 authored by patacongo's avatar patacongo
Browse files

C5471 ethernet driver functional (but sensitive)

git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@432 42af7a65-404d-4744-a932-0658087f49c3
parent 47b3a226
No related branches found
No related tags found
No related merge requests found
......@@ -44,7 +44,9 @@ o Network
- IPv6 support is incomplete
- Incoming UDP broadcast should only be accepted if listening on INADDR_ANY(?)
- Should add some driver call to support throttling... when there is no listener
for new data, the driver should be throttled.
for new data, the driver should be throttled. Perhaps the driver should disable
RX interrupts when throttled and re-anable on each poll time. recvfrom would,
of course, have to un-throttle.
o USB
- Implement USB device support
......@@ -78,10 +80,6 @@ o ARM
user stack allocation larger than needed.
o ARM/C5471
- Ethernet driver has problems on receive side. The cause of the problem seems
to be that the hardware waits for about 3 seconds before interrupting the driver.
By then, the sender has already retransmitted and things are out of sync.
Probable cause: TX configuration problem.
o ARM/DM320
- It seems that when a lot of debug statements are added, the system no
......
......@@ -238,8 +238,8 @@
#define ENET_ADR_PROMISCUOUS 0x00000008 /* Bit 3: Enable snoop address comparison */
#define ENET_ADR_BROADCAST 0x00000004 /* Bit 2: Enable broadcast address comparison */
#define ENET_ADDR_LCOMPARE 0x00000001 /* Bit 1: Enable logical address comparison */
#define ENET_ADDR_PCOMPARE 0x00000001 /* Bit 0: Enable physical address comparison */
#define ENET_ADDR_LCOMPARE 0x00000002 /* Bit 1: Enable logical address comparison */
#define ENET_ADDR_PCOMPARE 0x00000001 /* Bit 0: Enable physical address comparison */
/* ENET0_MODE bit settings */
/* Bits 16-31: reserved */
......@@ -1206,7 +1206,7 @@ static void c5471_receive(struct c5471_driver_s *c5471)
{
/* Get the packet memory from words #2 and #3 of descriptor */
packetmem = (uint16*)getreg32(c5471->c_txcpudesc + sizeof(uint32));
packetmem = (uint16*)getreg32(c5471->c_txcpudesc + sizeof(uint32));
/* Divide by 2 with round up to get the number of 16-bit words. */
......@@ -1321,8 +1321,6 @@ static void c5471_receive(struct c5471_driver_s *c5471)
c5471->c_rxdropped++;
}
#endif
}
/****************************************************************************
......@@ -1849,7 +1847,7 @@ static void c5471_eimconfig(struct c5471_driver_s *c5471)
putreg32(pbuf, desc);
desc += sizeof(uint32);
putreg32(0, pbuf);;
putreg32(0, pbuf);
pbuf += EIM_PACKET_BYTES;
putreg32(0, pbuf);
......@@ -1875,10 +1873,10 @@ static void c5471_eimconfig(struct c5471_driver_s *c5471)
putreg32(pbuf, desc);
desc += sizeof(uint32);
putreg32(0, pbuf);;
putreg32(0, pbuf);
pbuf += EIM_PACKET_BYTES;
putreg32(0, pbuf);;
putreg32(0, pbuf);
pbuf += sizeof(uint32); /* Ether Module's "Buffer Usage Word" */
}
......@@ -1933,10 +1931,10 @@ static void c5471_eimconfig(struct c5471_driver_s *c5471)
putreg32(pbuf, desc);
desc += sizeof(uint32);
putreg32(0, pbuf);;
putreg32(0, pbuf);
pbuf += EIM_PACKET_BYTES;
putreg32(0, pbuf);;
putreg32(0, pbuf);
pbuf += sizeof(uint32); /* Ether Module's "Buffer Usage Word" */
}
ndbg("END desc: %08x pbuf: %08x\n", desc, pbuf);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment