Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 53702
b: refs/heads/master
c: 7297824
h: refs/heads/master
v: v3
  • Loading branch information
Eric Moore authored and James Bottomley committed Apr 30, 2007
1 parent cfee185 commit 799a5c2
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 3 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 4e08df3f91837656c36712f559d5ce8d80852760
refs/heads/master: 7297824581755593535fc97d2c8b6c47e2dc2db6
1 change: 1 addition & 0 deletions trunk/drivers/message/fusion/mptbase.h
Original file line number Diff line number Diff line change
Expand Up @@ -994,6 +994,7 @@ typedef struct _MPT_SCSI_HOST {
int scandv_wait_done;
long last_queue_full;
u16 tm_iocstatus;
u16 spi_pending;
struct list_head target_reset_list;
} MPT_SCSI_HOST;

Expand Down
23 changes: 21 additions & 2 deletions trunk/drivers/message/fusion/mptspi.c
Original file line number Diff line number Diff line change
Expand Up @@ -676,7 +676,9 @@ static void mptspi_dv_device(struct _MPT_SCSI_HOST *hd,
return;
}

hd->spi_pending |= (1 << sdev->id);
spi_dv_device(sdev);
hd->spi_pending &= ~(1 << sdev->id);

if (sdev->channel == 1 &&
mptscsih_quiesce_raid(hd, 0, vtarget->channel, vtarget->id) < 0)
Expand Down Expand Up @@ -1202,11 +1204,27 @@ mptspi_dv_renegotiate_work(struct work_struct *work)
container_of(work, struct work_queue_wrapper, work);
struct _MPT_SCSI_HOST *hd = wqw->hd;
struct scsi_device *sdev;
struct scsi_target *starget;
struct _CONFIG_PAGE_SCSI_DEVICE_1 pg1;
u32 nego;

kfree(wqw);

shost_for_each_device(sdev, hd->ioc->sh)
mptspi_dv_device(hd, sdev);
if (hd->spi_pending) {
shost_for_each_device(sdev, hd->ioc->sh) {
if (hd->spi_pending & (1 << sdev->id))
continue;
starget = scsi_target(sdev);
nego = mptspi_getRP(starget);
pg1.RequestedParameters = cpu_to_le32(nego);
pg1.Reserved = 0;
pg1.Configuration = 0;
mptspi_write_spi_device_pg1(starget, &pg1);
}
} else {
shost_for_each_device(sdev, hd->ioc->sh)
mptspi_dv_device(hd, sdev);
}
}

static void
Expand Down Expand Up @@ -1452,6 +1470,7 @@ mptspi_probe(struct pci_dev *pdev, const struct pci_device_id *id)
init_waitqueue_head(&hd->scandv_waitq);
hd->scandv_wait_done = 0;
hd->last_queue_full = 0;
hd->spi_pending = 0;

/* Some versions of the firmware don't support page 0; without
* that we can't get the parameters */
Expand Down

0 comments on commit 799a5c2

Please sign in to comment.