software/libnet/microudp: simplify rxbuffer managment
This commit is contained in:
parent
fdeff7f64f
commit
92a79c6dc1
|
@ -114,12 +114,8 @@ typedef union {
|
||||||
unsigned char raw[ETHMAC_SLOT_SIZE];
|
unsigned char raw[ETHMAC_SLOT_SIZE];
|
||||||
} ethernet_buffer;
|
} ethernet_buffer;
|
||||||
|
|
||||||
|
|
||||||
static unsigned int rxslot;
|
|
||||||
static unsigned int rxlen;
|
static unsigned int rxlen;
|
||||||
static ethernet_buffer *rxbuffer;
|
static ethernet_buffer *rxbuffer;
|
||||||
static ethernet_buffer *rxbuffer0;
|
|
||||||
static ethernet_buffer *rxbuffer1;
|
|
||||||
static unsigned int txslot;
|
static unsigned int txslot;
|
||||||
static unsigned int txlen;
|
static unsigned int txlen;
|
||||||
static ethernet_buffer *txbuffer;
|
static ethernet_buffer *txbuffer;
|
||||||
|
@ -416,15 +412,11 @@ void microudp_start(const unsigned char *macaddr, unsigned int ip)
|
||||||
ethmac_sram_reader_ev_pending_write(ETHMAC_EV_SRAM_READER);
|
ethmac_sram_reader_ev_pending_write(ETHMAC_EV_SRAM_READER);
|
||||||
ethmac_sram_writer_ev_pending_write(ETHMAC_EV_SRAM_WRITER);
|
ethmac_sram_writer_ev_pending_write(ETHMAC_EV_SRAM_WRITER);
|
||||||
|
|
||||||
rxbuffer0 = (ethernet_buffer *)(ETHMAC_BASE + 0*ETHMAC_SLOT_SIZE);
|
|
||||||
rxbuffer1 = (ethernet_buffer *)(ETHMAC_BASE + 1*ETHMAC_SLOT_SIZE);
|
|
||||||
txbuffer0 = (ethernet_buffer *)(ETHMAC_BASE + 2*ETHMAC_SLOT_SIZE);
|
txbuffer0 = (ethernet_buffer *)(ETHMAC_BASE + 2*ETHMAC_SLOT_SIZE);
|
||||||
txbuffer1 = (ethernet_buffer *)(ETHMAC_BASE + 3*ETHMAC_SLOT_SIZE);
|
txbuffer1 = (ethernet_buffer *)(ETHMAC_BASE + 3*ETHMAC_SLOT_SIZE);
|
||||||
|
|
||||||
rxslot = 0;
|
|
||||||
txslot = 0;
|
txslot = 0;
|
||||||
|
|
||||||
rxbuffer = rxbuffer0;
|
|
||||||
txbuffer = txbuffer0;
|
txbuffer = txbuffer0;
|
||||||
|
|
||||||
for(i=0;i<6;i++)
|
for(i=0;i<6;i++)
|
||||||
|
@ -435,18 +427,17 @@ void microudp_start(const unsigned char *macaddr, unsigned int ip)
|
||||||
for(i=0;i<6;i++)
|
for(i=0;i<6;i++)
|
||||||
cached_mac[i] = 0;
|
cached_mac[i] = 0;
|
||||||
|
|
||||||
|
rxbuffer = (ethernet_buffer *)ETHMAC_BASE;
|
||||||
rx_callback = (udp_callback)0;
|
rx_callback = (udp_callback)0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void microudp_service(void)
|
void microudp_service(void)
|
||||||
{
|
{
|
||||||
|
unsigned int rxslot;
|
||||||
if(ethmac_sram_writer_ev_pending_read() & ETHMAC_EV_SRAM_WRITER) {
|
if(ethmac_sram_writer_ev_pending_read() & ETHMAC_EV_SRAM_WRITER) {
|
||||||
rxslot = ethmac_sram_writer_slot_read();
|
rxslot = ethmac_sram_writer_slot_read();
|
||||||
|
rxbuffer = (ethernet_buffer *)(ETHMAC_BASE + ETHMAC_SLOT_SIZE * rxslot);
|
||||||
rxlen = ethmac_sram_writer_length_read();
|
rxlen = ethmac_sram_writer_length_read();
|
||||||
if (rxslot)
|
|
||||||
rxbuffer = rxbuffer1;
|
|
||||||
else
|
|
||||||
rxbuffer = rxbuffer0;
|
|
||||||
process_frame();
|
process_frame();
|
||||||
ethmac_sram_writer_ev_pending_write(ETHMAC_EV_SRAM_WRITER);
|
ethmac_sram_writer_ev_pending_write(ETHMAC_EV_SRAM_WRITER);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue