|
@@ -45,6 +45,9 @@ struct natsemi_nic {
|
45
|
45
|
* alternatively substracting sizeof(head) and sizeof(list_head) can also
|
46
|
46
|
* give the same.*/
|
47
|
47
|
struct io_buffer *iobuf[NUM_RX_DESC];
|
|
48
|
+ /*netdev_tx_complete needs pointer to the iobuf of the data so as to free
|
|
49
|
+ it form the memory.*/
|
|
50
|
+ struct io_buffer *tx_iobuf[TX_RING_SIZE];
|
48
|
51
|
struct spi_bit_basher spibit;
|
49
|
52
|
struct spi_device eeprom;
|
50
|
53
|
struct nvo_block nvo;
|
|
@@ -415,6 +418,8 @@ static int nat_transmit ( struct net_device *netdev, struct io_buffer *iobuf ) {
|
415
|
418
|
}
|
416
|
419
|
|
417
|
420
|
//DBG_HD(iobuf->data,iob_len(iobuf));
|
|
421
|
+ /* to be used in netdev_tx_complete*/
|
|
422
|
+ nat->tx_iobuf[nat->tx_cur]=iobuf;
|
418
|
423
|
|
419
|
424
|
/* Pad and align packet */
|
420
|
425
|
iob_pad ( iobuf, ETH_ZLEN );
|
|
@@ -473,6 +478,7 @@ static void nat_poll ( struct net_device *netdev, unsigned int rx_quota ) {
|
473
|
478
|
DBG("Success in transmitting Packet with data\n");
|
474
|
479
|
// DBG_HD(&nat->tx[nat->tx_dirty].bufptr,130);
|
475
|
480
|
}
|
|
481
|
+ netdev_tx_complete(netdev,nat->tx_iobuf[nat->tx_dirty]);
|
476
|
482
|
/* setting cmdsts zero, indicating that it can be reused */
|
477
|
483
|
nat->tx[nat->tx_dirty].cmdsts=0;
|
478
|
484
|
nat->tx_dirty=(nat->tx_dirty +1) % TX_RING_SIZE;
|