LOGIN   :::   RECOVER PASS   :::   GET ACCOUNT    
Browse
  • Projects
  • Code (CVS)
  • Forums
  • News
  • Articles
  • Polls
  •  
    OpenCores
  • FAQ
  • CVS HowTo
  • Mission
  • Media
  • Tools
  • Advertise
  • Mirrors
  • Logos
  • Contact us
  • Find Resources
  • Job Opportunity
  •  
    Tools
  • Search
      
  • Download Cores (CVSGet)
  •  
    More
  • Wishbone
  • Perlilog
  • EDA tools
  • OpenTech CD
  •  
    Navigation: All forums > Openrisc > Message List > Message Post

    Message

    Reply | Reply all
    Date Prev | Date Next | Thread Prev | Thread Next Date Index | Thread Index

    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
    Top
    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; }

     
    Copyright (c) 1999 OPENCORES.ORG. All rights reserved.