Subject: Re: query: tcpdump versus atomic?

From: William Allen Simpson <[email-masked]>
Date: Wed, 14 Oct 2009 16:36:36 -0400

Stephen Hemminger wrote:
> On Wed, 14 Oct 2009 11:20:12 -0400
> William Allen Simpson <[email-masked]> wrote:
> 
>> William Allen Simpson wrote:
>>> Anybody know what code path tcpdump changes to running atomic?
>>>
>>> Is there a function to test whether you're running atomic?
>>>
>> To partially answer my own question, after laboriously #if'ing compiling
>> section by section, it affects the tcp_minisockets.c code at
>> tcp_create_openreq_child().
>>
>> I've not found a function to test.  I've found sk->sk_allocation, but
>> that doesn't seem to be dynamically updated to reflect the current state.
>>
> did you look at your ethernet's drivers code to turn on promiscuous mode.
> It could be leaving irq's or bottom half disabled.
> 
[    2.876485] eth0: RealTek RTL8139 at 0x2000, 00:40:2b:6b:61:36, IRQ 17
[    2.876490] eth0:  Identified 8139 chip type 'RTL-8101'

No idea on the driver file name, but that's a fairly popular chipset, so
the code should be fairly well reviewed.

Still, tcp shouldn't be processed with interrupts disabled.  That's *way*
too much code....

And we need a function that tells us whether we're atomic already....  And
better function header descriptions that mention the assumptions.