diff options
author | Jan Glauber <jang@linux.vnet.ibm.com> | 2011-01-05 06:47:54 -0500 |
---|---|---|
committer | Martin Schwidefsky <sky@mschwide.boeblingen.de.ibm.com> | 2011-01-05 06:47:28 -0500 |
commit | 90adac58d1a4daf3560739ff5b76497d5ece16c4 (patch) | |
tree | 6304b54c5b8200de91f3c151051a412a3536d0f4 /drivers/s390/cio/qdio.h | |
parent | 110da31709023de61735f2d8a3e52c20c23bb570 (diff) |
[S390] qdio: cleanup SIGA sync
Simplify the SIGA sync code and add unlikely annotations. In polling mode
SBALs may be accessed without interrupt, so call SIGA sync before every scan.
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.h | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/drivers/s390/cio/qdio.h b/drivers/s390/cio/qdio.h index 1b40a92fec14..7bc643f3f5ab 100644 --- a/drivers/s390/cio/qdio.h +++ b/drivers/s390/cio/qdio.h | |||
@@ -148,10 +148,9 @@ struct siga_flag { | |||
148 | u8 input:1; | 148 | u8 input:1; |
149 | u8 output:1; | 149 | u8 output:1; |
150 | u8 sync:1; | 150 | u8 sync:1; |
151 | u8 no_sync_ti:1; | 151 | u8 sync_after_ai:1; |
152 | u8 no_sync_out_ti:1; | 152 | u8 sync_out_after_pci:1; |
153 | u8 no_sync_out_pci:1; | 153 | u8:3; |
154 | u8:2; | ||
155 | } __attribute__ ((packed)); | 154 | } __attribute__ ((packed)); |
156 | 155 | ||
157 | struct chsc_ssqd_area { | 156 | struct chsc_ssqd_area { |
@@ -390,12 +389,13 @@ static inline int multicast_outbound(struct qdio_q *q) | |||
390 | (q->irq_ptr->qib.ac & QIB_AC_OUTBOUND_PCI_SUPPORTED) | 389 | (q->irq_ptr->qib.ac & QIB_AC_OUTBOUND_PCI_SUPPORTED) |
391 | #define is_qebsm(q) (q->irq_ptr->sch_token != 0) | 390 | #define is_qebsm(q) (q->irq_ptr->sch_token != 0) |
392 | 391 | ||
393 | #define need_siga_sync_thinint(q) (!q->irq_ptr->siga_flag.no_sync_ti) | ||
394 | #define need_siga_sync_out_thinint(q) (!q->irq_ptr->siga_flag.no_sync_out_ti) | ||
395 | #define need_siga_in(q) (q->irq_ptr->siga_flag.input) | 392 | #define need_siga_in(q) (q->irq_ptr->siga_flag.input) |
396 | #define need_siga_out(q) (q->irq_ptr->siga_flag.output) | 393 | #define need_siga_out(q) (q->irq_ptr->siga_flag.output) |
397 | #define need_siga_sync(q) (q->irq_ptr->siga_flag.sync) | 394 | #define need_siga_sync(q) (unlikely(q->irq_ptr->siga_flag.sync)) |
398 | #define siga_syncs_out_pci(q) (q->irq_ptr->siga_flag.no_sync_out_pci) | 395 | #define need_siga_sync_after_ai(q) \ |
396 | (unlikely(q->irq_ptr->siga_flag.sync_after_ai)) | ||
397 | #define need_siga_sync_out_after_pci(q) \ | ||
398 | (unlikely(q->irq_ptr->siga_flag.sync_out_after_pci)) | ||
399 | 399 | ||
400 | #define for_each_input_queue(irq_ptr, q, i) \ | 400 | #define for_each_input_queue(irq_ptr, q, i) \ |
401 | for (i = 0, q = irq_ptr->input_qs[0]; \ | 401 | for (i = 0, q = irq_ptr->input_qs[0]; \ |