aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/cio/qdio.h
diff options
context:
space:
mode:
authorJan Glauber <jang@linux.vnet.ibm.com>2008-12-25 07:38:48 -0500
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2008-12-25 07:39:00 -0500
commit7a0b4cbc7d7d99763511b488b08bbc2607ddd1e3 (patch)
tree96344f73eb9d802b0f488b7d086c8094b93635f8 /drivers/s390/cio/qdio.h
parent50f769df1c4bea766c4eb927eae35728fb93e305 (diff)
[S390] qdio: fix error reporting for hipersockets
Hipersocket connections can encounter temporary busy conditions. In case of the busy bit set we retry the SIGA operation immediatelly. If the busy condition still persists after 100 ms we fail and report the error to the upper layer. The second stage retry logic is removed. In case of ongoing busy conditions the upper layer needs to reset the connection. The reporting of a SIGA error is now done synchronously to allow the network driver to requeue the buffers. Also no error trace is created for the temporary SIGA errors so the error message view is not flooded. Signed-off-by: Jan Glauber <jang@linux.vnet.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'drivers/s390/cio/qdio.h')
-rw-r--r--drivers/s390/cio/qdio.h8
1 files changed, 1 insertions, 7 deletions
diff --git a/drivers/s390/cio/qdio.h b/drivers/s390/cio/qdio.h
index c60f2566d28c..42f2b09631b6 100644
--- a/drivers/s390/cio/qdio.h
+++ b/drivers/s390/cio/qdio.h
@@ -14,7 +14,6 @@
14#include "chsc.h" 14#include "chsc.h"
15 15
16#define QDIO_BUSY_BIT_PATIENCE 100 /* 100 microseconds */ 16#define QDIO_BUSY_BIT_PATIENCE 100 /* 100 microseconds */
17#define QDIO_BUSY_BIT_GIVE_UP 2000000 /* 2 seconds = eternity */
18#define QDIO_INPUT_THRESHOLD 500 /* 500 microseconds */ 17#define QDIO_INPUT_THRESHOLD 500 /* 500 microseconds */
19 18
20/* 19/*
@@ -195,12 +194,6 @@ struct qdio_input_q {
195}; 194};
196 195
197struct qdio_output_q { 196struct qdio_output_q {
198 /* failed siga-w attempts*/
199 atomic_t busy_siga_counter;
200
201 /* start time of busy condition */
202 u64 timestamp;
203
204 /* PCIs are enabled for the queue */ 197 /* PCIs are enabled for the queue */
205 int pci_out_enabled; 198 int pci_out_enabled;
206 199
@@ -251,6 +244,7 @@ struct qdio_q {
251 244
252 struct qdio_irq *irq_ptr; 245 struct qdio_irq *irq_ptr;
253 struct tasklet_struct tasklet; 246 struct tasklet_struct tasklet;
247 spinlock_t lock;
254 248
255 /* error condition during a data transfer */ 249 /* error condition during a data transfer */
256 unsigned int qdio_error; 250 unsigned int qdio_error;