qdio: extend API to allow polling
authorJan Glauber <jang@linux.vnet.ibm.com>
Tue, 7 Sep 2010 21:14:39 +0000 (21:14 +0000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 8 Sep 2010 21:31:00 +0000 (14:31 -0700)
commitd36deae75011a7890f0e730dd0f867c64081cb50
treed24672cf5cc40c637186362187450362cabefd24
parente508be174ad36b0cf9b324cd04978c2b13c21502
qdio: extend API to allow polling

Extend the qdio API to allow polling in the upper-layer driver. This
is needed by qeth to use NAPI.

To use the new interface the upper-layer driver must specify the
queue_start_poll(). This callback is used to signal the upper-layer
driver that is has initiative and must process the inbound queue by
calling qdio_get_next_buffers(). If the upper-layer driver wants to
stop polling it calls qdio_start_irq().

Since adapter interrupts are not completely stoppable qdio implements
a software bit QDIO_QUEUE_IRQS_DISABLED to safely disable interrupts for an
input queue.

The old interface is preserved and will be used as is by zfcp.

Signed-off-by: Jan Glauber <jang@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
arch/s390/include/asm/qdio.h
drivers/s390/cio/qdio.h
drivers/s390/cio/qdio_debug.c
drivers/s390/cio/qdio_main.c
drivers/s390/cio/qdio_setup.c
drivers/s390/cio/qdio_thinint.c
drivers/s390/scsi/zfcp_qdio.c