summaryrefslogtreecommitdiffstats
path: root/src/drivers/net
diff options
context:
space:
mode:
authorUdayan Kumar2007-07-02 00:05:58 +0200
committerUdayan Kumar2007-07-15 03:08:05 +0200
commit6d4dafdc6e4973ab74e3f41e439decaf1b7eb722 (patch)
treefd4379b17a0df7ce32147f59129580d5941290c8 /src/drivers/net
parentadded endianness to natsemi. (diff)
downloadipxe-6d4dafdc6e4973ab74e3f41e439decaf1b7eb722.tar.gz
ipxe-6d4dafdc6e4973ab74e3f41e439decaf1b7eb722.tar.xz
ipxe-6d4dafdc6e4973ab74e3f41e439decaf1b7eb722.zip
added netdev_tx_complete to natsemi.c
Diffstat (limited to 'src/drivers/net')
-rw-r--r--src/drivers/net/natsemi.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/drivers/net/natsemi.c b/src/drivers/net/natsemi.c
index f1a22605..5d3a0287 100644
--- a/src/drivers/net/natsemi.c
+++ b/src/drivers/net/natsemi.c
@@ -45,6 +45,9 @@ struct natsemi_nic {
* alternatively substracting sizeof(head) and sizeof(list_head) can also
* give the same.*/
struct io_buffer *iobuf[NUM_RX_DESC];
+ /*netdev_tx_complete needs pointer to the iobuf of the data so as to free
+ it form the memory.*/
+ struct io_buffer *tx_iobuf[TX_RING_SIZE];
struct spi_bit_basher spibit;
struct spi_device eeprom;
struct nvo_block nvo;
@@ -415,6 +418,8 @@ static int nat_transmit ( struct net_device *netdev, struct io_buffer *iobuf ) {
}
//DBG_HD(iobuf->data,iob_len(iobuf));
+ /* to be used in netdev_tx_complete*/
+ nat->tx_iobuf[nat->tx_cur]=iobuf;
/* Pad and align packet */
iob_pad ( iobuf, ETH_ZLEN );
@@ -473,6 +478,7 @@ static void nat_poll ( struct net_device *netdev, unsigned int rx_quota ) {
DBG("Success in transmitting Packet with data\n");
// DBG_HD(&nat->tx[nat->tx_dirty].bufptr,130);
}
+ netdev_tx_complete(netdev,nat->tx_iobuf[nat->tx_dirty]);
/* setting cmdsts zero, indicating that it can be reused */
nat->tx[nat->tx_dirty].cmdsts=0;
nat->tx_dirty=(nat->tx_dirty +1) % TX_RING_SIZE;