diff options
| author | Alexander Motin <mav@FreeBSD.org> | 2010-11-08 15:36:15 +0000 |
|---|---|---|
| committer | Alexander Motin <mav@FreeBSD.org> | 2010-11-08 15:36:15 +0000 |
| commit | ba3a999598be0a14b7cef75893bde97278e9d1f4 (patch) | |
| tree | 6f37967994205ba1942c971cc4e6ced2627d1bbc /sys/dev/siis | |
| parent | c70410e6f58985a0a267cf51a6ab90754c13761b (diff) | |
Notes
Diffstat (limited to 'sys/dev/siis')
| -rw-r--r-- | sys/dev/siis/siis.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/sys/dev/siis/siis.c b/sys/dev/siis/siis.c index ba10c92c4696..e75fd38b3596 100644 --- a/sys/dev/siis/siis.c +++ b/sys/dev/siis/siis.c @@ -1208,6 +1208,17 @@ siis_end_transaction(struct siis_slot *slot, enum siis_err_type et) res->sector_count_exp = ATA_INB(ch->r_mem, offs + 13); } else bzero(res, sizeof(*res)); + if ((ccb->ccb_h.flags & CAM_DIR_MASK) == CAM_DIR_IN && + ch->numrslots == 1) { + ccb->ataio.resid = ccb->ataio.dxfer_len - + ATA_INL(ch->r_mem, SIIS_P_LRAM_SLOT(slot->slot) + 4); + } + } else { + if ((ccb->ccb_h.flags & CAM_DIR_MASK) == CAM_DIR_IN && + ch->numrslots == 1) { + ccb->csio.resid = ccb->csio.dxfer_len - + ATA_INL(ch->r_mem, SIIS_P_LRAM_SLOT(slot->slot) + 4); + } } if ((ccb->ccb_h.flags & CAM_DIR_MASK) != CAM_DIR_NONE) { bus_dmamap_sync(ch->dma.data_tag, slot->dma.data_map, |
