s390/qdio: remove 'merge_pending' mechanism
authorJulian Wiedmann <jwi@linux.ibm.com>
Sat, 30 Jan 2021 12:22:56 +0000 (13:22 +0100)
committerVasily Gorbik <gor@linux.ibm.com>
Sat, 13 Feb 2021 16:17:55 +0000 (17:17 +0100)
commit2223318c2862edc7f5b282939b850b19fc934ec4
tree108313403728d793c2de3223f6082d11d0ea006b
parent7940eaf2e956ce3d67ac9efb5b621adbb823e049
s390/qdio: remove 'merge_pending' mechanism

For non-QEBSM devices, get_buf_states() merges PENDING and EMPTY buffers
into a single group of finished buffers. To allow the upper-layer driver
to differentiate between the two states, qdio_check_pending() looks at
each buffer's state again and sets the sbal_state flag to
QDIO_OUTBUF_STATE_FLAG_PENDING accordingly.

So effectively we're spending overhead on _every_ Output Queue
inspection, just to avoid some additional TX completion calls in case
a group of buffers has completed with mixed EMPTY / PENDING state.
Given that PENDING buffers should rarely occur, this is a bad trade-off.
In particular so as the additional checks in get_buf_states() affect
_all_ device types (even those that don't use the PENDING state).

Rip it all out, and just report the PENDING completions separately as
we already do for QEBSM devices.

Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
Reviewed-by: Benjamin Block <bblock@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
arch/s390/include/asm/qdio.h
drivers/s390/cio/qdio_main.c
drivers/s390/net/qeth_core_main.c