Subject: Re: [Kgdb-bugreport] [PATCH 2.6.20-rc7] 8139too KGDBoE fix

From: Sergei Shtylyov <[email-masked]>
Date: Fri, 23 Feb 2007 22:16:59 +0300

Hello.

Stephen Hemminger wrote:

>>>>>This thread came up on kgdb-bugreport mailing list. Could you please suggest 
>>>>>us what's the correct way of fixing this problem?

>>>>>1. When running a kgdb on RTL8139 ethernet interface: 8139too driver prints 
>>>>>too many "Out-of-sync dirty pointer" messages on console and gdb can't 
>>>>>connect to kgdb stub. These messages can be suppressed, though it still 
>>>>>results in connection failures frequently. 

>>>>We think this comes from calling the driver while the queue is stopped.  
>>>>Drivers should not do horrible things when hard start is called with the 
>>>>queue stopped, but unfortunately, at this time, at least some drivers 
>>>>do  explode or complain under that condition.

>>>The kernel is built on a set of assumptions about calling context. Your
>>>out of tree code is violating one of them. Why not check for stopped queue
>>>and do some action to try and clear it, that is what netconsole does.

>>    The queue can't be stopped when the netpoll traffic trapping is enabled 
>>(cause this effectively bypasses queue control), So, the stopped queue 
>>indoication doesn't work also -- *that* is the problem. It's not at all 
>>specific to KGBoE -- only to traffic trapping.

> You can't ask a device to send a packet when it has no resources.

    When traffic trapping is enabled, and driver stops the queue, the 
__LINK_STATE_XOFF flag does *not* get set, so netif_queue_stopped() resturns 
*zero*.  What may be done in this situation?

WBR, Sergei