|
Message
From: =?unknown-8bit?Q?Gy=F6rgy?= 'nog' Jeney<nog@s...>
Date: Tue Mar 29 18:12:53 CEST 2005
Subject: [openrisc] [or1ksim #69] Make the ethernet peripheral use the new
debug functions
Hi,This makes the ethernet peripheral use the new debugging functions. ChangeLog: * Make the ethernet peripheral use the new debug channels.
nog. -------------- next part -------------- diff -urp --unidirectional-new-file /home/nog/or1ksim-split/support/dbchs.h support/dbchs.h --- /home/nog/or1ksim-split/support/dbchs.h 2005-03-26 11:41:54.000000000 +0100 +++ support/dbchs.h 2005-03-25 17:53:39.000000000 +0100 @@ -25,4 +25,5 @@ Foundation, Inc., 675 Mass Ave, Cambridg DECLARE_DEBUG_CHANNEL(pic) DECLARE_DEBUG_CHANNEL(tick) DECLARE_DEBUG_CHANNEL(uart) +DECLARE_DEBUG_CHANNEL(eth) DECLARE_DEBUG_CHANNEL(config) diff -urp --unidirectional-new-file /home/nog/or1ksim-split/peripheral/eth.c peripheral/eth.c --- /home/nog/or1ksim-split/peripheral/eth.c 2005-03-29 17:03:37.000000000 +0200 +++ peripheral/eth.c 2005-03-29 16:52:01.000000000 +0200 @@ -51,6 +51,8 @@ #include "sched.h" #include "debug.h" +DEFAULT_DEBUG_CHANNEL(eth); + /* simulator interface */ static void eth_vapi_read( unsigned long id, unsigned long data, void *dat); /* register interface */ @@ -81,12 +83,12 @@ void eth_controller_tx_clock( void *dat #if HAVE_ETH_PHY struct sockaddr_ll sll; #endif /* HAVE_ETH_PHY */ - long nwritten; + long nwritten = 0; unsigned long read_word; switch (eth->tx.state) { case ETH_TXSTATE_IDLE: - debug (3, "TX - entering state WAIT4BD (%ld)\n", eth->tx.bd_index); + TRACE ("TX - entering state WAIT4BD (%ld)\n", eth->tx.bd_index); eth->tx.state = ETH_TXSTATE_WAIT4BD; break; case ETH_TXSTATE_WAIT4BD: @@ -135,7 +137,7 @@ void eth_controller_tx_clock( void *dat eth->tx.crc_dly = 0; /* XXX - For now we skip CRC calculation */ - debug( 3, "Ethernet: Starting TX of %lu bytes (min. %u, max. %u)\n", + TRACE( "Ethernet: Starting TX of %lu bytes (min. %u, max. %u)\n", eth->tx.packet_length, eth->tx.minimum_length, eth->tx.maximum_length ); @@ -146,7 +148,7 @@ void eth_controller_tx_clock( void *dat /************************************************/ /* start transmit with reading packet into FIFO */ - debug (3, "TX - entering state READFIFO\n"); + TRACE ("TX - entering state READFIFO\n"); eth->tx.state = ETH_TXSTATE_READFIFO; } @@ -169,7 +171,7 @@ void eth_controller_tx_clock( void *dat } #endif else { - debug (3, "TX - entering state TRANSMIT\n"); + TRACE ("TX - entering state TRANSMIT\n"); eth->tx.state = ETH_TXSTATE_TRANSMIT; } break; @@ -191,22 +193,22 @@ void eth_controller_tx_clock( void *dat if (nwritten == eth->tx.packet_length) { CLEAR_FLAG (eth->tx.bd, ETH_TX_BD, READY); SET_FLAG (eth->regs.int_source, ETH_INT_SOURCE, TXB); - debug (4, "ETH_INT_SOURCE = %0lx\n", eth->regs.int_source); + TRACE ("ETH_INT_SOURCE = %0lx\n", eth->regs.int_source); - debug (3, "TX - entering state WAIT4BD\n"); + TRACE ("TX - entering state WAIT4BD\n"); eth->tx.state = ETH_TXSTATE_WAIT4BD; - debug (3, "send (%ld)bytes OK\n", nwritten); + TRACE ("send (%ld)bytes OK\n", nwritten); } else { /* XXX - implement retry mechanism here! */ CLEAR_FLAG (eth->tx.bd, ETH_TX_BD, READY); CLEAR_FLAG (eth->tx.bd, ETH_TX_BD, COLLISION); SET_FLAG (eth->regs.int_source, ETH_INT_SOURCE, TXE); - debug (4, "ETH_INT_SOURCE = %0lx\n", eth->regs.int_source); + TRACE ("ETH_INT_SOURCE = %0lx\n", eth->regs.int_source); - debug (3, "TX - entering state WAIT4BD\n"); + TRACE ("TX - entering state WAIT4BD\n"); eth->tx.state = ETH_TXSTATE_WAIT4BD; - debug (3, "send FAILED!\n"); + TRACE ("send FAILED!\n"); } eth->regs.bd_ram[eth->tx.bd_index] = eth->tx.bd; @@ -255,7 +257,7 @@ void eth_controller_rx_clock( void *dat switch (eth->rx.state) { case ETH_RXSTATE_IDLE:
- debug (3, "RX - entering state WAIT4BD (%ld)\n", eth->rx.bd_index);
+ TRACE ("RX - entering state WAIT4BD (%ld)\n", eth->rx.bd_index);
eth->rx.state = ETH_RXSTATE_WAIT4BD;
break;
@@ -274,7 +276,7 @@ void eth_controller_rx_clock( void *dat
CLEAR_FLAG( eth->rx.bd, ETH_RX_BD, TOOBIG );
CLEAR_FLAG( eth->rx.bd, ETH_RX_BD, TOOSHORT );
- debug( 3, "Ethernet: Starting RX\n" );
+ TRACE( "Ethernet: Starting RX\n" );
/* Setup file to read from */
if ( TEST_FLAG( eth->regs.moder, ETH_MODER, LOOPBCK ) ) {
@@ -284,11 +286,11 @@ void eth_controller_rx_clock( void *dat
eth->rx.fd = eth->rxfd;
eth->rx.offset = 0;
}
- debug (3, "RX - entering state RECV\n");
+ TRACE ("RX - entering state RECV\n");
eth->rx.state = ETH_RXSTATE_RECV;
}
else if (!TEST_FLAG( eth->regs.moder, ETH_MODER, RXEN)) {
- debug (3, "RX - entering state IDLE\n");
+ TRACE ("RX - entering state IDLE\n");
eth->rx.state = ETH_RXSTATE_IDLE;
}
else {
@@ -308,17 +310,17 @@ void eth_controller_rx_clock( void *dat
if ( eth_read_rx_file( eth, &(eth->rx.packet_length), sizeof(eth->rx.packet_length) )
< sizeof(eth->rx.packet_length) ) {
/* TODO: just do what real ethernet would do (some kind of error state) */
- debug (4, "eth_start_rx(): File does not have a packet ready for RX (len = %ld)\n", eth->rx.packet_length );
- runtime.sim.cont_run = 0;
+ TRACE ("eth_start_rx(): File does not have a packet ready for RX (len = %ld)\n", eth->rx.packet_length );
+ sim_done();
break;
}
/* Packet must be big enough to hold a header */
if ( eth->rx.packet_length < ETHER_HDR_LEN ){
- debug( 3, "eth_start_rx(): Packet too small\n" );
+ TRACE( "eth_start_rx(): Packet too small\n" );
eth_rx_next_packet( eth );
- debug (3, "RX - entering state WAIT4BD\n");
+ TRACE ("RX - entering state WAIT4BD\n");
eth->rx.state = ETH_RXSTATE_WAIT4BD;
break;
}
@@ -329,7 +331,7 @@ void eth_controller_rx_clock( void *dat
/* for now Read entire packet into memory */
nread = eth_read_rx_file( eth, eth->rx_buff, eth->rx.bytes_left );
if ( nread < eth->rx.bytes_left ) {
- debug (3, "Read %ld from %ld. Error!\n", nread, eth->rx.bytes_left);
+ TRACE ("Read %ld from %ld. Error!\n", nread, eth->rx.bytes_left);
eth->rx.error = 1;
break;
}
@@ -338,7 +340,7 @@ void eth_controller_rx_clock( void *dat
eth->rx.bytes_left = nread;
eth->rx.bytes_read = 0;
- debug (3, "RX - entering state WRITEFIFO\n");
+ TRACE ("RX - entering state WRITEFIFO\n");
eth->rx.state = ETH_RXSTATE_WRITEFIFO;
break;
@@ -346,14 +348,16 @@ void eth_controller_rx_clock( void *dat
case ETH_RTX_SOCK:
nread = recv(eth->rtx_sock, eth->rx_buff, ETH_MAXPL, MSG_DONTWAIT);
- if (nread == 0)
+ if (nread == 0) {
+ TRACE("No data read\n");
break;
- else if (nread < 0) {
+ } else if (nread < 0) {
if ( errno != EAGAIN ) {
- debug (3, "recv() FAILED!\n");
+ TRACE ("recv() FAILED!\n");
break;
}
- else break;
+ else
+ break;
}
/* If not promiscouos mode, check the destination address */
if (!TEST_FLAG(eth->regs.moder, ETH_MODER, PRO)) {
@@ -374,7 +378,7 @@ void eth_controller_rx_clock( void *dat
eth->rx.bytes_left = nread;
eth->rx.bytes_read = 0;
- debug (3, "RX - entering state WRITEFIFO\n");
+ TRACE ("RX - entering state WRITEFIFO\n");
eth->rx.state = ETH_RXSTATE_WRITEFIFO;
break;
@@ -391,7 +395,7 @@ void eth_controller_rx_clock( void *dat
((unsigned long)eth->rx_buff[eth->rx.bytes_read+3] );
set_direct32( eth->rx.bd_addr + eth->rx.bytes_read, send_word, &breakpoint, 0, 0);
/* update counters */
- debug (3, "Write %ld, left %ld - %08lXd\n", eth->rx.bytes_read,
+ TRACE ("Write %ld, left %ld - %08lXd\n", eth->rx.bytes_read,
eth->rx.bytes_left, send_word);
eth->rx.bytes_left -= 4;
eth->rx.bytes_read += 4;
@@ -406,7 +410,7 @@ void eth_controller_rx_clock( void *dat
SET_FIELD( eth->rx.bd, ETH_RX_BD, LENGTH, eth->rx.packet_length );
CLEAR_FLAG( eth->rx.bd, ETH_RX_BD, READY);
SET_FLAG( eth->regs.int_source, ETH_INT_SOURCE, RXB);
- debug (4, "ETH_INT_SOURCE = %0lx\n", eth->regs.int_source);
+ TRACE ("ETH_INT_SOURCE = %0lx\n", eth->regs.int_source);
if ( eth->rx.packet_length < (GET_FIELD( eth->regs.packetlen, ETH_PACKETLEN, MINFL ) - 4) )
SET_FLAG( eth->rx.bd, ETH_RX_BD, TOOSHORT);
@@ -427,7 +431,7 @@ void eth_controller_rx_clock( void *dat
}
/* ready to receive next packet */
- debug (3, "RX - entering state IDLE\n");
+ TRACE ("RX - entering state IDLE\n");
eth->rx.state = ETH_RXSTATE_IDLE;
}
break;
@@ -465,18 +469,18 @@ ssize_t eth_read_rx_file( struct eth_dev
ssize_t result;
if ( eth->rx.fd <= 0 ) {
- debug( 3, "Ethernet: No RX file\n" );
+ TRACE( "Ethernet: No RX file\n" );
return 0;
}
if ( eth->rx.offset )
if ( lseek( eth->rx.fd, *(eth->rx.offset), SEEK_SET ) == (off_t)-1 ) {
- debug( 3, "Ethernet: Error seeking RX file\n" );
+ TRACE( "Ethernet: Error seeking RX file\n" );
return 0;
}
result = read( eth->rx.fd, buf, count );
- debug (4, "Ethernet: read result = %d \n", result);
+ TRACE ("Ethernet: read result = %d \n", result);
if ( eth->rx.offset && result >= 0 )
*(eth->rx.offset) += result;
@@ -527,7 +531,7 @@ void eth_reset(void *dat)
if (eth->rtx_sock != 0)
break;
- debug (3, "RTX oppening socket...\n");
+ TRACE ("RTX opening socket...\n");
eth->rtx_sock = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
if (eth->rtx_sock == -1) {
fprintf( stderr, "Cannot open rtx_sock.\n");
@@ -535,17 +539,17 @@ void eth_reset(void *dat)
}
/* get interface index number */
- debug (3, "RTX getting interface...\n");
+ TRACE ("RTX getting interface...\n");
memset(&(eth->ifr), 0, sizeof(eth->ifr));
strncpy(eth->ifr.ifr_name, eth->sockif, IFNAMSIZ);
if (ioctl(eth->rtx_sock, SIOCGIFINDEX, &(eth->ifr)) == -1) {
fprintf( stderr, "SIOCGIFINDEX failed!\n");
return;
}
- debug (3, "RTX Socket Interface : %d\n", eth->ifr.ifr_ifindex);
+ TRACE ("RTX Socket Interface : %d\n", eth->ifr.ifr_ifindex);
/* Bind to interface... */
- debug (3, "Binding to the interface ifindex=%d\n", eth->ifr.ifr_ifindex);
+ TRACE ("Binding to the interface ifindex=%d\n", eth->ifr.ifr_ifindex);
memset(&sll, 0xff, sizeof(sll));
sll.sll_family = AF_PACKET; /* allways AF_PACKET */
sll.sll_protocol = htons(ETH_P_ALL);
@@ -556,12 +560,12 @@ void eth_reset(void *dat)
}
/* first, flush all received packets. */
- debug (3, "Flush");
+ TRACE ("Flush");
do {
fd_set fds;
struct timeval t;
- debug( 3, ".");
+ TRACE( ".");
FD_ZERO(&fds);
FD_SET(eth->rtx_sock, &fds);
memset(&t, 0, sizeof(t));
@@ -569,7 +573,7 @@ void eth_reset(void *dat)
if (j > 0)
recv(eth->rtx_sock, eth->rx_buff, j, 0);
} while (j);
- debug (3, "\n");
+ TRACE ("\n");
break;
#else /* HAVE_ETH_PHY */
@@ -768,10 +770,10 @@ static void eth_vapi_read (unsigned long
which = id - eth->base_vapi_id;
- debug( 5, "ETH: id %08lx, data %08lx\n", id, data );
+ TRACE( "ETH: id %08lx, data %08lx\n", id, data );
if ( !eth ) {
- debug( 1, "ETH: VAPI ID %08lx is not ours!\n", id );
+ TRACE( "ETH: VAPI ID %08lx is not ours!\n", id );
return;
}
|
 |