URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Go to most recent revision |
Show entire file |
Details |
Blame |
View Log
Rev 405 |
Rev 406 |
Line 385... |
Line 385... |
|
|
bd[tx_last].addr = (unsigned long)buf;
|
bd[tx_last].addr = (unsigned long)buf;
|
|
|
retry_eth_send:
|
retry_eth_send:
|
bd[tx_last].len_status &= 0x0000ffff & ~ETH_TX_BD_STATS;
|
bd[tx_last].len_status &= 0x0000ffff & ~ETH_TX_BD_STATS;
|
|
|
if (eth_monitor_enabled) // enable IRQ when sending
|
if (eth_monitor_enabled) // enable IRQ when sending
|
bd[tx_last].len_status |= ETH_TX_BD_IRQ;
|
bd[tx_last].len_status |= ETH_TX_BD_IRQ;
|
|
|
bd[tx_last].len_status |= len << 16 | ETH_TX_BD_READY;
|
bd[tx_last].len_status |= len << 16 | ETH_TX_BD_READY;
|
|
|
|
if (!eth_monitor_enabled) // If we're not running the network sniffer...
|
|
{
|
|
while (bd[tx_last].len_status & ETH_TX_BD_READY);
|
|
|
|
//printf("packet tx\n");
|
|
// Check it was sent OK
|
/*
|
/*
|
while (bd[tx_last].len_status & ETH_TX_BD_READY);
|
BUG with current implementation - constantly getting carrier sense
|
printf("packet tx\n");
|
lost, and deferred indication, so ignore it for now.
|
// Check it was sent OK
|
if ( bd[tx_last].len_status & 0xf)
|
if ( bd[tx_last].len_status & 0x2)
|
|
{
|
{
|
printf("eth_send: carrier sense lost (txbd: 0x%x), deferred, retrying\n",
|
printf("eth_send: carrier sense lost (txbd: 0x%x), deferred, retrying\n",
|
bd[tx_last].len_status);
|
bd[tx_last].len_status);
|
sleep(1000);
|
sleep(1);
|
goto retry_eth_send;
|
goto retry_eth_send;
|
}
|
}
|
*/
|
*/
|
|
}
|
|
|
tx_last++;
|
tx_last++;
|
|
|
if (tx_last == ETH_TXBD_NUM)
|
if (tx_last == ETH_TXBD_NUM)
|
tx_last = 0;
|
tx_last = 0;
|
|
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.