Linux MIPS Architecture development
 help / color / mirror / Atom feed
* Error on TX descriptor free
@ 2004-10-22 13:14 Thomas Petazzoni
  2004-10-22 16:58 ` Manish Lachwani
  0 siblings, 1 reply; 2+ messages in thread
From: Thomas Petazzoni @ 2004-10-22 13:14 UTC (permalink / raw)
  To: linux-mips

Hello,

I'm currently using the MV643xx Ethernet driver on my board. When I run 
the command :

# ifconfig eth0 down

I see the following message :

eth0: Error on Tx descriptor free - could not free 1 descriptors

I went through the code, and saw that this message is displayed in 
mv64340_eth_free_tx_rings(). This function frees all remaining skbs 
(registered in the mp->tx_skb array), and decrement mp->tx_ring_skbs. 
Then, it checks if it reached 0. In my case, it is still 1.

In fact, mp->tx_ring_skbs is initialized to 0 and then incremented in 
mv64340_eth_start_xmit() (when a transmission starts), and is 
decremented in mv64340_eth_free_tx_queue (when the transmission is 
done). But the decrementation only occurs if mp->tx_ring_skbs is 
different from one. I don't understand why.

At the end of mv64340_eth_free_tx_queue(), the following code makes sure 
that the number of skbs did not reach 0 :

     if (mp->tx_ring_skbs == 0)
       panic("ERROR - TX outstanding SKBs counter is corrupted");

Well, my question is simply : why can't we decrement the 
mp->tx_ring_skbs counter to 0 ?

What needs to be fixed ? The decrementation of the counter, or the 
function that frees the TX queue when the interface is stopped ?

I've seen similar code in the Titan GE driver.

Do not hesitate to ask for further details,

Thanks,

Thomas
-- 
PETAZZONI Thomas - thomas.petazzoni@enix.org
http://thomas.enix.org - Jabber: kos_tom@sourcecode.de
KOS: http://kos.enix.org/ - Lolut: http://lolut.utbm.info
Fingerprint : 0BE1 4CF3 CEA4 AC9D CC6E  1624 F653 CB30 98D3 F7A7

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: Error on TX descriptor free
  2004-10-22 13:14 Error on TX descriptor free Thomas Petazzoni
@ 2004-10-22 16:58 ` Manish Lachwani
  0 siblings, 0 replies; 2+ messages in thread
From: Manish Lachwani @ 2004-10-22 16:58 UTC (permalink / raw)
  To: Thomas Petazzoni; +Cc: linux-mips

Hello Thomas

Thats a bug. I dont have a board to try this on. But, can you?

Thomas Petazzoni wrote:
> Hello,
> 
> I'm currently using the MV643xx Ethernet driver on my board. When I run 
> the command :
> 
> # ifconfig eth0 down
> 
> I see the following message :
> 
> eth0: Error on Tx descriptor free - could not free 1 descriptors
> 
> I went through the code, and saw that this message is displayed in 
> mv64340_eth_free_tx_rings(). This function frees all remaining skbs 
> (registered in the mp->tx_skb array), and decrement mp->tx_ring_skbs. 
> Then, it checks if it reached 0. In my case, it is still 1.
> 
> In fact, mp->tx_ring_skbs is initialized to 0 and then incremented in 
> mv64340_eth_start_xmit() (when a transmission starts), and is 
> decremented in mv64340_eth_free_tx_queue (when the transmission is 
> done). But the decrementation only occurs if mp->tx_ring_skbs is 
> different from one. I don't understand why.
> 
> At the end of mv64340_eth_free_tx_queue(), the following code makes sure 
> that the number of skbs did not reach 0 :
> 
>     if (mp->tx_ring_skbs == 0)
>       panic("ERROR - TX outstanding SKBs counter is corrupted");
> 
> Well, my question is simply : why can't we decrement the 
> mp->tx_ring_skbs counter to 0 ?
> 
> What needs to be fixed ? The decrementation of the counter, or the 
> function that frees the TX queue when the interface is stopped ?

Decrement the counter to zero as you suggested. And remove the 
panic("..") in mv64340_eth_free_tx_queue(). Let me know if it works fine

Thanks
Manish Lachwani



> 
> I've seen similar code in the Titan GE driver.
> 
> Do not hesitate to ask for further details,
> 
> Thanks,
> 
> Thomas

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2004-10-22 16:59 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-10-22 13:14 Error on TX descriptor free Thomas Petazzoni
2004-10-22 16:58 ` Manish Lachwani

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox