aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/net
diff options
context:
space:
mode:
authorJan Glauber <jang@linux.vnet.ibm.com>2012-05-09 10:27:34 -0400
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2012-05-16 08:42:36 -0400
commit1549d13f4c5f0ca77b66bd725287d0b3f877eb6b (patch)
tree5ba439915cc4cceb8930a18e9adf2aba34adc82f /drivers/s390/net
parent050276ab8ce9f30c1d2d74c42a349ed54701905f (diff)
s390/qdio: Cleanup error handling to drivers
Various improvements of qdio error reporting to the upper-layer drivers (qeth, zfcp): - Split QDIO_ERROR_ACTIVATE_CHECK_CONDITION into: QDIO_ERROR_ACTIVATE: qdio termination interrupt QDIO_ERROR_GET_BUF_STATE: QIOASSIST eqbs error QDIO_ERROR_SET_BUF_STATE: QIOASSIST sqbs error Add QDIO_ERROR_FATAL / QDIO_ERROR_TEMPORARY masks to ease recovery decision in upper-layer drivers. - Don't (ab-)use qdio handler errors as return codes for do_QDIO but use standard error codes: -ENOBUFS: temporary target CC=2 condition -EBUSY: unresolved SIGA-W CC=2 busy condition -EIO: I/O error (CC=1, CC=3) - Remove unneeded memory clobber from SIGA-R - Remove EX_TABLE entry on SIGA-W, we want to see these errors Reviewed-by: Ursula Braun <ursula.braun@de.ibm.com> Signed-off-by: Jan Glauber <jang@linux.vnet.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'drivers/s390/net')
-rw-r--r--drivers/s390/net/qeth_core_main.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/s390/net/qeth_core_main.c b/drivers/s390/net/qeth_core_main.c
index 8334dadc681d..c146877e8b7b 100644
--- a/drivers/s390/net/qeth_core_main.c
+++ b/drivers/s390/net/qeth_core_main.c
@@ -3339,7 +3339,7 @@ static void qeth_flush_buffers(struct qeth_qdio_out_q *queue, int index,
3339 if (rc) { 3339 if (rc) {
3340 queue->card->stats.tx_errors += count; 3340 queue->card->stats.tx_errors += count;
3341 /* ignore temporary SIGA errors without busy condition */ 3341 /* ignore temporary SIGA errors without busy condition */
3342 if (rc == QDIO_ERROR_SIGA_TARGET) 3342 if (rc == -ENOBUFS)
3343 return; 3343 return;
3344 QETH_CARD_TEXT(queue->card, 2, "flushbuf"); 3344 QETH_CARD_TEXT(queue->card, 2, "flushbuf");
3345 QETH_CARD_TEXT_(queue->card, 2, " q%d", queue->queue_no); 3345 QETH_CARD_TEXT_(queue->card, 2, " q%d", queue->queue_no);
@@ -3533,7 +3533,7 @@ void qeth_qdio_output_handler(struct ccw_device *ccwdev,
3533 int i; 3533 int i;
3534 3534
3535 QETH_CARD_TEXT(card, 6, "qdouhdl"); 3535 QETH_CARD_TEXT(card, 6, "qdouhdl");
3536 if (qdio_error & QDIO_ERROR_ACTIVATE_CHECK_CONDITION) { 3536 if (qdio_error & QDIO_ERROR_FATAL) {
3537 QETH_CARD_TEXT(card, 2, "achkcond"); 3537 QETH_CARD_TEXT(card, 2, "achkcond");
3538 netif_stop_queue(card->dev); 3538 netif_stop_queue(card->dev);
3539 qeth_schedule_recovery(card); 3539 qeth_schedule_recovery(card);