summaryrefslogtreecommitdiffstats
path: root/drivers/scsi/isci
diff options
context:
space:
mode:
authorDan Williams <dan.j.williams@intel.com>2011-07-30 02:17:16 +0200
committerJames Bottomley <JBottomley@Parallels.com>2011-08-24 05:05:47 +0200
commit77cd72a53f6426f81b7f56a862402849ee903bda (patch)
treeabadb6954c238f3810c073d12f55d01140a78790 /drivers/scsi/isci
parent[SCSI] isci: dynamic interrupt coalescing (diff)
downloadlinux-77cd72a53f6426f81b7f56a862402849ee903bda.tar.xz
linux-77cd72a53f6426f81b7f56a862402849ee903bda.zip
[SCSI] isci: fix event-get pointer increment
Hardware only increments the put pointer on event types >= 4. Do not increment the get pointer for event type 3. Reported-by: Kapil Karkra <kapil.karkra@intel.com> Signed-off-by: Dan Williams <dan.j.williams@intel.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/isci')
-rw-r--r--drivers/scsi/isci/host.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/scsi/isci/host.c b/drivers/scsi/isci/host.c
index 2328f98c7f1e..6981b773a88d 100644
--- a/drivers/scsi/isci/host.c
+++ b/drivers/scsi/isci/host.c
@@ -531,6 +531,9 @@ static void sci_controller_process_completions(struct isci_host *ihost)
break;
case SCU_COMPLETION_TYPE_EVENT:
+ sci_controller_event_completion(ihost, ent);
+ break;
+
case SCU_COMPLETION_TYPE_NOTIFY: {
event_cycle ^= ((event_get+1) & SCU_MAX_EVENTS) <<
(SMU_COMPLETION_QUEUE_GET_EVENT_CYCLE_BIT_SHIFT - SCU_MAX_EVENTS_SHIFT);