]> git.baikalelectronics.ru Git - kernel.git/commit
[TG3]: Add tagged status support.
authorDavid S. Miller <davem@davemloft.net>
Thu, 19 May 2005 05:46:34 +0000 (22:46 -0700)
committerDavid S. Miller <davem@davemloft.net>
Thu, 19 May 2005 05:46:34 +0000 (22:46 -0700)
commit49ab4f568174f10987295ba20ab2a025345f657d
tree14749e6e5e0abdfb707b41dad714e36246e6cff8
parenta4d0823db4ae5f777dde5475f8cf3d40a04522d0
[TG3]: Add tagged status support.

When supported, use the TAGGED interrupt processing support
the chip provides.  In this mode, instead of a "on/off" binary
semaphore, an incrementing tag scheme is used to ACK interrupts.

All MSI supporting chips support TAGGED mode, so the tg3_msi()
interrupt handler uses it unconditionally.  This invariant is
verified when MSI support is tested.

Since we can invoke tg3_poll() multiple times per interrupt under
high packet load, we fetch a new copy of the tag value in the
status block right before we actually do the work.

Also, because the tagged status tells the chip exactly which
work we have processed, we can make two optimizations:

1) tg3_restart_ints() need not check tg3_has_work()
2) the tg3_timer() need not poke the chip 10 times per
   second to keep from losing interrupt events

Based upon valuable feedback from Michael Chan <mchan@broadcom.com>

Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/tg3.c
drivers/net/tg3.h