(eth0_rx_desc[(RDN_ETH0)].buff_size_byte_count) & 0x0000ffff;
eth_data = (char *) eth0_rx_buffer[RDN_ETH0];
- /*
+#ifdef DEBUG
+ if (eth_len) {
+ printf ("%s: Recived %d byte Packet @ 0x%p\n",
+ __FUNCTION__, eth_len, eth_data);
+ }
+#endif
+ /*
* packet is now in:
* eth0_rx_buffer[RDN_ETH0];
*/
+ /* let the upper layer handle the packet */
+ NetReceive (eth_data, eth_len);
+
eth0_rx_desc[(RDN_ETH0)].buff_size_byte_count = 1536<<16;
/* GT96100 Owner */
{
/* wait for tx to be ready */
while (eth0_tx_desc[(TDN_ETH0)].command_status & 0x80000000) ;
-
+
GT_REG_WRITE (ETHERNET0_CURRENT_TX_DESCRIPTOR_POINTER0 + REG_OFF,
(unsigned int)eth0_tx_desc);
eth0_tx_desc[(TDN_ETH0+1)%NT].command_status = 0x0003ffff;
- /*
+/*
{
unsigned long tempo;
for (tempo=0;tempo<10;tempo++) {}
}
- */
+*/
GT_REG_WRITE(ETHERNET0_SDMA_COMMAND_REGISTER + REG_OFF, 0x01000000);
GT_REG_WRITE(MAIN_ROUTING_REGISTER, 0x7ffe38);
GT_REG_WRITE(SERIAL_PORT_MULTIPLEX, 0x1102);
GT_REG_WRITE(ETHERNET0_SDMA_CONFIGURATION_REGISTER + REG_OFF,
- 0x0000303c);
+ 0x0000303c);
GT_REG_READ(ETHERNET0_PORT_CONFIGURATION_REGISTER + REG_OFF, &temp);
/* turn on autonegotiation */
TDN_ETH0=0;
RDN_ETH0=0;
- eth0_tx_desc =
- (eth0_tx_desc_single *)
+ eth0_tx_desc =
+ (eth0_tx_desc_single *)
(((unsigned int) malloc(sizeof (eth0_tx_desc_single) *
(NT+1)) & 0xfffffff0) + 0x10);
- eth0_rx_desc =
- (eth0_rx_desc_single *)
- (((unsigned int) malloc(sizeof (eth0_rx_desc_single) *
+ eth0_rx_desc =
+ (eth0_rx_desc_single *)
+ (((unsigned int) malloc(sizeof (eth0_rx_desc_single) *
(NR+1)) & 0xfffffff0) + 0x10);
- eth0_tx_buffer =
+ eth0_tx_buffer =
(char *) (((unsigned int) malloc(1536) & 0xfffffff0) + 0x10);
for (temp = 0 ; temp < NR ; temp ++) {
- eth0_rx_buffer[temp] =
+ eth0_rx_buffer[temp] =
(char *)
(((unsigned int) malloc(1536) & 0xfffffff0) + 0x10);
}
/* GT96100 Owner */
eth0_rx_desc[temp].command_status = 0x80000000;
- eth0_rx_desc[temp].next_desc =
+ eth0_rx_desc[temp].next_desc =
(struct eth0_rx_desc_struct *)
ð0_rx_desc[(temp+1)%NR].buff_size_byte_count;
}
-
+
GT_REG_WRITE(ETHERNET0_CURRENT_TX_DESCRIPTOR_POINTER0 + REG_OFF,
(unsigned int) eth0_tx_desc);
GT_REG_WRITE(ETHERNET0_FIRST_RX_DESCRIPTOR_POINTER0 + REG_OFF,
int
eth_send(volatile void *packet, int length)
{
+#ifdef DEBUG
+ printf ("%s: %d byte packet @ 0x%p\n", __FUNCTION__, length, packet);
+#endif
return evb64260_eth0_transmit(length, packet);
}
int
eth_rx(void)
{
- int len;
-
- for (;;) {
- len = evb64260_eth0_poll();
-
- if (len) {
- NetReceive(eth_data, len);
- } else {
- len = -1;
- break;
- }
- }
-
- return len;
+ return (evb64260_eth0_poll());
}
void