diff options
| author | Hidetoshi Shimokawa <simokawa@FreeBSD.org> | 2002-10-21 15:36:59 +0000 |
|---|---|---|
| committer | Hidetoshi Shimokawa <simokawa@FreeBSD.org> | 2002-10-21 15:36:59 +0000 |
| commit | 8e484a62c8968250fd3f98d2a615a6ce2cc2121f (patch) | |
| tree | 67a1b3ccf73c05965c02da5acf00b1264778143d /sys/dev | |
| parent | db394c7a5432b5a07a8221514add1da48e011d97 (diff) | |
Notes
Diffstat (limited to 'sys/dev')
| -rw-r--r-- | sys/dev/firewire/sbp.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/sys/dev/firewire/sbp.c b/sys/dev/firewire/sbp.c index 0f1f57342c5b..45cbce831d42 100644 --- a/sys/dev/firewire/sbp.c +++ b/sys/dev/firewire/sbp.c @@ -1664,7 +1664,11 @@ sbp_timeout(void *arg) /* XXX need reset? */ s = splfw(); +#if 1 + sbp_abort_all_ocbs(sdev, CAM_CMD_TIMEOUT); +#else sbp_abort_ocb(ocb, CAM_CMD_TIMEOUT); +#endif splx(s); return; } @@ -1974,6 +1978,7 @@ sbp_execute_ocb(void *arg, bus_dma_segment_t *segments, int seg, int error) struct sbp_ocb *ocb; struct sbp_ocb *prev; union ccb *ccb; + bus_dma_segment_t *s; if (error) printf("sbp_execute_ocb: error=%d\n", error); @@ -1993,11 +1998,15 @@ SBP_DEBUG(1) printf("\n"); END_DEBUG for (i = 0; i < seg; i++) { - if (segments[i].ds_len < 16) - printf("sbp_execute_ocb: segment length is " - "less than 16.\n"); - ocb->ind_ptr[i].hi = htonl(segments[i].ds_len << 16); - ocb->ind_ptr[i].lo = htonl(segments[i].ds_addr); + s = &segments[i]; +#if 1 /* XXX LSI Logic "< 16 byte" bug might be hit */ + if (s->ds_len < 16) + printf("sbp_execute_ocb: warning, " + "segment length(%d) is less than 16." + "(seg=%d/%d)\n", s->ds_len, i+1, seg); +#endif + ocb->ind_ptr[i].hi = htonl(s->ds_len << 16); + ocb->ind_ptr[i].lo = htonl(s->ds_addr); } ocb->orb[4] |= htonl(ORB_CMD_PTBL | seg); } |
