Re: [PATCH] r8169: Reduce looping in the interrupt handler.

From: Eric W. Biederman
Date: Wed Aug 26 2009 - 16:03:15 EST


David Dillow <dave@xxxxxxxxxxxxxx> writes:

> On Wed, 2009-08-26 at 09:56 -0400, David Dillow wrote:
>> On Wed, 2009-08-26 at 00:58 -0700, Eric W. Biederman wrote:
>> > diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c
>> > index 3b19e0c..2214945 100644
>> > --- a/drivers/net/r8169.c
>> > +++ b/drivers/net/r8169.c
>>
>> > +
>> > + /* Ignore the parts of status that reflect more than
>> > + * the enabled interrupts.
>> > + */
>> > + smp_rmb();
>> > + if (!(status & tp->intr_mask & tp->intr_event))
>> > + break;
>> > }
>>
>> This looks like an odd construct, since we're just about to go back the
>> while condition up top -- why not just mask it here and let the loop
>> handle it naturally?
>
> Never mind, I see what you are doing -- avoiding a false loop if we get
> status == 0xffff. I still don't like the aesthetics of it, but it makes
> sense, and I'll blame it on the card. :)
>
> I should really get some caffeine before posting...

It is a bit weird but it also means we aren't playing silly games
with status inside the loop. So if we go through the loop we ack
everything in status.

Eric

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/