OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [orpmon/] [drivers/] [eth.c] - Diff between revs 810 and 817

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 810 Rev 817
Line 132... Line 132...
void *eth_get_tx_buf ()
void *eth_get_tx_buf ()
{
{
  eth_bd  *bd;
  eth_bd  *bd;
  unsigned long add;
  unsigned long add;
 
 
 
printf("%s - %s: %d\n", __FILE__, __FUNCTION__, __LINE__);
  if(tx_full)
  if(tx_full)
    return (void *)0;
    return (void *)0;
 
 
  bd = (eth_bd *)ETH_BD_BASE;
  bd = (eth_bd *)ETH_BD_BASE;
 
 
Line 155... Line 156...
/* Send a packet at address */
/* Send a packet at address */
void eth_send (void *buf, unsigned long len)
void eth_send (void *buf, unsigned long len)
{
{
  eth_bd  *bd;
  eth_bd  *bd;
 
 
 
printf("%s - %s: %d\n", __FILE__, __FUNCTION__, __LINE__);
  bd = (eth_bd *)ETH_BD_BASE;
  bd = (eth_bd *)ETH_BD_BASE;
 
 
  bd[tx_last].addr = (unsigned long)buf;
  bd[tx_last].addr = (unsigned long)buf;
 
 
  bd[tx_last].status &= ~ETH_TX_BD_STATS;
  bd[tx_last].status &= ~ETH_TX_BD_STATS;
Line 174... Line 176...
  eth_bd  *bd;
  eth_bd  *bd;
  unsigned long len = 0;
  unsigned long len = 0;
 
 
  bd = (eth_bd *)ETH_BD_BASE + ETH_TXBD_NUM;
  bd = (eth_bd *)ETH_BD_BASE + ETH_TXBD_NUM;
 
 
 
printf("%s - %s: %d\n", __FILE__, __FUNCTION__, __LINE__);
  while(1) {
  while(1) {
 
 
    int bad = 0;
    int bad = 0;
 
 
 
printf("%s - %s: %d\n", __FILE__, __FUNCTION__, __LINE__);
    if(bd[rx_next].status & ETH_RX_BD_EMPTY)
    if(bd[rx_next].status & ETH_RX_BD_EMPTY)
      return len;
      return len;
 
 
 
printf("%s - %s: %d\n", __FILE__, __FUNCTION__, __LINE__);
    if(bd[rx_next].status & ETH_RX_BD_OVERRUN) {
    if(bd[rx_next].status & ETH_RX_BD_OVERRUN) {
      printf("eth rx: ETH_RX_BD_OVERRUN\n");
      printf("eth rx: ETH_RX_BD_OVERRUN\n");
      bad = 1;
      bad = 1;
    }
    }
    if(bd[rx_next].status & ETH_RX_BD_INVSIMB) {
    if(bd[rx_next].status & ETH_RX_BD_INVSIMB) {
Line 210... Line 215...
    if(bd[rx_next].status & ETH_RX_BD_LATECOL) {
    if(bd[rx_next].status & ETH_RX_BD_LATECOL) {
      printf("eth rx: ETH_RX_BD_LATECOL\n");
      printf("eth rx: ETH_RX_BD_LATECOL\n");
      bad = 1;
      bad = 1;
    }
    }
 
 
 
printf("%s - %s: %d\n", __FILE__, __FUNCTION__, __LINE__);
    if(!bad) {
    if(!bad) {
 
printf("%s - %s: %d\n", __FILE__, __FUNCTION__, __LINE__);
      receive((void *)bd[rx_next].addr, bd[rx_next].len);
      receive((void *)bd[rx_next].addr, bd[rx_next].len);
      len += bd[rx_next].len;
      len += bd[rx_next].len;
    }
    }
 
 
 
printf("%s - %s: %d\n", __FILE__, __FUNCTION__, __LINE__);
    bd[rx_next].status &= ~ETH_RX_BD_STATS;
    bd[rx_next].status &= ~ETH_RX_BD_STATS;
    bd[rx_next].status |= ETH_RX_BD_EMPTY;
    bd[rx_next].status |= ETH_RX_BD_EMPTY;
 
 
    rx_next = (rx_next + 1) & ETH_RXBD_NUM_MASK;
    rx_next = (rx_next + 1) & ETH_RXBD_NUM_MASK;
  }
  }

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.