aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390
diff options
context:
space:
mode:
authorChristof Schmitt <christof.schmitt@de.ibm.com>2009-03-02 07:09:05 -0500
committerJames Bottomley <James.Bottomley@HansenPartnership.com>2009-03-12 13:58:21 -0400
commit21ddaa53f92dba820a3778978e617f20ecb6ab6f (patch)
tree5ea11c90c4a8d76b4a2875146e56549783611add /drivers/s390
parent5ffd51a5e495a2a002efd523aef0001912b080bd (diff)
[SCSI] zfcp: Remove PCI flag
The usage of the PCI flag to trigger interrupts is optional. Even without setting the flag, qdio still receives interrupts to continue working on the queue. Remove the PCI flag from zfcp, it is not necessary. Acked-by: Swen Schillig <swen@vnet.ibm.com> Signed-off-by: Christof Schmitt <christof.schmitt@de.ibm.com> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'drivers/s390')
-rw-r--r--drivers/s390/scsi/zfcp_def.h2
-rw-r--r--drivers/s390/scsi/zfcp_qdio.c23
2 files changed, 3 insertions, 22 deletions
diff --git a/drivers/s390/scsi/zfcp_def.h b/drivers/s390/scsi/zfcp_def.h
index 8412bb992ea..22e418db451 100644
--- a/drivers/s390/scsi/zfcp_def.h
+++ b/drivers/s390/scsi/zfcp_def.h
@@ -443,8 +443,6 @@ struct zfcp_adapter {
443 spinlock_t req_list_lock; /* request list lock */ 443 spinlock_t req_list_lock; /* request list lock */
444 struct zfcp_qdio_queue req_q; /* request queue */ 444 struct zfcp_qdio_queue req_q; /* request queue */
445 spinlock_t req_q_lock; /* for operations on queue */ 445 spinlock_t req_q_lock; /* for operations on queue */
446 int req_q_pci_batch; /* SBALs since PCI indication
447 was last set */
448 ktime_t req_q_time; /* time of last fill level change */ 446 ktime_t req_q_time; /* time of last fill level change */
449 u64 req_q_util; /* for accounting */ 447 u64 req_q_util; /* for accounting */
450 spinlock_t qdio_stat_lock; 448 spinlock_t qdio_stat_lock;
diff --git a/drivers/s390/scsi/zfcp_qdio.c b/drivers/s390/scsi/zfcp_qdio.c
index c2eb94f6370..e0a215309df 100644
--- a/drivers/s390/scsi/zfcp_qdio.c
+++ b/drivers/s390/scsi/zfcp_qdio.c
@@ -11,9 +11,6 @@
11 11
12#include "zfcp_ext.h" 12#include "zfcp_ext.h"
13 13
14/* FIXME(tune): free space should be one max. SBAL chain plus what? */
15#define ZFCP_QDIO_PCI_INTERVAL (QDIO_MAX_BUFFERS_PER_Q \
16 - (FSF_MAX_SBALS_PER_REQ + 4))
17#define QBUFF_PER_PAGE (PAGE_SIZE / sizeof(struct qdio_buffer)) 14#define QBUFF_PER_PAGE (PAGE_SIZE / sizeof(struct qdio_buffer))
18 15
19static int zfcp_qdio_buffers_enqueue(struct qdio_buffer **sbal) 16static int zfcp_qdio_buffers_enqueue(struct qdio_buffer **sbal)
@@ -364,23 +361,12 @@ int zfcp_qdio_send(struct zfcp_fsf_req *fsf_req)
364 struct zfcp_qdio_queue *req_q = &adapter->req_q; 361 struct zfcp_qdio_queue *req_q = &adapter->req_q;
365 int first = fsf_req->sbal_first; 362 int first = fsf_req->sbal_first;
366 int count = fsf_req->sbal_number; 363 int count = fsf_req->sbal_number;
367 int retval, pci, pci_batch; 364 int retval;
368 struct qdio_buffer_element *sbale; 365 unsigned int qdio_flags = QDIO_FLAG_SYNC_OUTPUT;
369
370 /* acknowledgements for transferred buffers */
371 pci_batch = adapter->req_q_pci_batch + count;
372 if (unlikely(pci_batch >= ZFCP_QDIO_PCI_INTERVAL)) {
373 pci_batch %= ZFCP_QDIO_PCI_INTERVAL;
374 pci = first + count - (pci_batch + 1);
375 pci %= QDIO_MAX_BUFFERS_PER_Q;
376 sbale = zfcp_qdio_sbale(req_q, pci, 0);
377 sbale->flags |= SBAL_FLAGS0_PCI;
378 }
379 366
380 zfcp_qdio_account(adapter); 367 zfcp_qdio_account(adapter);
381 368
382 retval = do_QDIO(adapter->ccw_device, QDIO_FLAG_SYNC_OUTPUT, 0, first, 369 retval = do_QDIO(adapter->ccw_device, qdio_flags, 0, first, count);
383 count);
384 if (unlikely(retval)) { 370 if (unlikely(retval)) {
385 zfcp_qdio_zero_sbals(req_q->sbal, first, count); 371 zfcp_qdio_zero_sbals(req_q->sbal, first, count);
386 return retval; 372 return retval;
@@ -390,7 +376,6 @@ int zfcp_qdio_send(struct zfcp_fsf_req *fsf_req)
390 atomic_sub(count, &req_q->count); 376 atomic_sub(count, &req_q->count);
391 req_q->first += count; 377 req_q->first += count;
392 req_q->first %= QDIO_MAX_BUFFERS_PER_Q; 378 req_q->first %= QDIO_MAX_BUFFERS_PER_Q;
393 adapter->req_q_pci_batch = pci_batch;
394 return 0; 379 return 0;
395} 380}
396 381
@@ -461,7 +446,6 @@ void zfcp_qdio_close(struct zfcp_adapter *adapter)
461 } 446 }
462 req_q->first = 0; 447 req_q->first = 0;
463 atomic_set(&req_q->count, 0); 448 atomic_set(&req_q->count, 0);
464 adapter->req_q_pci_batch = 0;
465 adapter->resp_q.first = 0; 449 adapter->resp_q.first = 0;
466 atomic_set(&adapter->resp_q.count, 0); 450 atomic_set(&adapter->resp_q.count, 0);
467} 451}
@@ -499,7 +483,6 @@ int zfcp_qdio_open(struct zfcp_adapter *adapter)
499 /* set index of first avalable SBALS / number of available SBALS */ 483 /* set index of first avalable SBALS / number of available SBALS */
500 adapter->req_q.first = 0; 484 adapter->req_q.first = 0;
501 atomic_set(&adapter->req_q.count, QDIO_MAX_BUFFERS_PER_Q); 485 atomic_set(&adapter->req_q.count, QDIO_MAX_BUFFERS_PER_Q);
502 adapter->req_q_pci_batch = 0;
503 486
504 return 0; 487 return 0;
505 488