aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/iir/iir.c
diff options
context:
space:
mode:
authorScott Long <scottl@FreeBSD.org>2013-09-24 16:50:53 +0000
committerScott Long <scottl@FreeBSD.org>2013-09-24 16:50:53 +0000
commit185884259b58c3ef8203268c1c201095c7170d63 (patch)
treeccab290b4cfbac27db6123e5df329c2ca4e9a641 /sys/dev/iir/iir.c
parentfebdb468801f35e51c6c5c22221cfce9197c6f3b (diff)
Update the CAM API for FreeBSD 10:
- Remove the timeout_ch field. It's been deprecated since FreeBSD 7.0; MPSAFE drivers should be managing their own timeout storage. The remaining non-MPSAFE drivers have been modified to also manage their own storage, and should be considered for updating to MPSAFE (or removal) during the FreeBSD 10.x lifecycle. - Add fields related to soft timeouts and quality of service, to be used in upcoming work. - Add room for more flags in the CCB header and path_inq structures. - Begin support for extended 64-bit LUNs. - Bump the CAM version number to 0x18, but add compat shims. Tested with camcontrol and smartctl. Reviewed by: nathanw, ken, kib Approved by: re Obtained from: Netflix
Notes
Notes: svn path=/head/; revision=255853
Diffstat (limited to 'sys/dev/iir/iir.c')
-rw-r--r--sys/dev/iir/iir.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/dev/iir/iir.c b/sys/dev/iir/iir.c
index 684fce3298e1..1090042ff511 100644
--- a/sys/dev/iir/iir.c
+++ b/sys/dev/iir/iir.c
@@ -270,6 +270,7 @@ iir_init(struct gdt_softc *gdt)
gccb->gc_map_flag = TRUE;
gccb->gc_scratch = &gdt->sc_gcscratch[GDT_SCRATCH_SZ * i];
gccb->gc_scratch_busbase = gdt->sc_gcscratch_busbase + GDT_SCRATCH_SZ * i;
+ callout_handle_init(&gccb->gc_timeout_ch);
SLIST_INSERT_HEAD(&gdt->sc_free_gccb, gccb, sle);
}
gdt->sc_init_level++;
@@ -1239,7 +1240,7 @@ gdtexecuteccb(void *arg, bus_dma_segment_t *dm_segs, int nseg, int error)
ccb->ccb_h.status |= CAM_SIM_QUEUED;
/* timeout handling */
- ccb->ccb_h.timeout_ch =
+ gccb->gc_timeout_ch =
timeout(iir_timeout, (caddr_t)gccb,
(ccb->ccb_h.timeout * hz) / 1000);
@@ -1747,7 +1748,7 @@ gdt_sync_event(struct gdt_softc *gdt, int service,
printf("\n");
return (0);
} else {
- untimeout(iir_timeout, gccb, ccb->ccb_h.timeout_ch);
+ untimeout(iir_timeout, gccb, gccb->gc_timeout_ch);
if (gdt->sc_status == GDT_S_BSY) {
GDT_DPRINTF(GDT_D_DEBUG, ("gdt_sync_event(%p) gccb %p busy\n",
gdt, gccb));