diff options
author | simokawa <simokawa@FreeBSD.org> | 2007-04-30 13:41:40 +0000 |
---|---|---|
committer | simokawa <simokawa@FreeBSD.org> | 2007-04-30 13:41:40 +0000 |
commit | 21d4d06eead25f9b28b2940969466efa55ac9170 (patch) | |
tree | 66cf756d50969a480d3656b8104bce32926424ba /sys/dev/firewire/sbp_targ.c | |
parent | 99faf91c588fedeb9916bb485fab297f0fd3d5d8 (diff) | |
download | FreeBSD-src-21d4d06eead25f9b28b2940969466efa55ac9170.zip FreeBSD-src-21d4d06eead25f9b28b2940969466efa55ac9170.tar.gz |
MFp4: Fix broken userland API for async packets.
- Introduce fw_xferlist_add/remove().
- Introduce fw_read/write_async().
- Remove unused FWACT_CH.
MFC after: 1 week
Diffstat (limited to 'sys/dev/firewire/sbp_targ.c')
-rw-r--r-- | sys/dev/firewire/sbp_targ.c | 23 |
1 files changed, 4 insertions, 19 deletions
diff --git a/sys/dev/firewire/sbp_targ.c b/sys/dev/firewire/sbp_targ.c index f943772..35d8e3e 100644 --- a/sys/dev/firewire/sbp_targ.c +++ b/sys/dev/firewire/sbp_targ.c @@ -1610,8 +1610,6 @@ sbp_targ_attach(device_t dev) { struct sbp_targ_softc *sc; struct cam_devq *devq; - struct fw_xfer *xfer; - int i; sc = (struct sbp_targ_softc *) device_get_softc(dev); bzero((void *)sc, sizeof(struct sbp_targ_softc)); @@ -1644,19 +1642,12 @@ sbp_targ_attach(device_t dev) sc->fwb.start = SBP_TARG_BIND_START; sc->fwb.end = SBP_TARG_BIND_END; - sc->fwb.act_type = FWACT_XFER; /* pre-allocate xfer */ STAILQ_INIT(&sc->fwb.xferlist); - for (i = 0; i < MAX_LUN /* XXX */; i ++) { - xfer = fw_xfer_alloc_buf(M_SBP_TARG, - /* send */ 0, - /* recv */ SBP_TARG_RECV_LEN); - xfer->hand = sbp_targ_recv; - xfer->fc = sc->fd.fc; - xfer->sc = (caddr_t)sc; - STAILQ_INSERT_TAIL(&sc->fwb.xferlist, xfer, link); - } + fw_xferlist_add(&sc->fwb.xferlist, M_SBP_TARG, + /*send*/ 0, /*recv*/ SBP_TARG_RECV_LEN, MAX_LUN /* XXX */, + sc->fd.fc, (void *)sc, sbp_targ_recv); fw_bindadd(sc->fd.fc, &sc->fwb); return 0; @@ -1670,7 +1661,6 @@ sbp_targ_detach(device_t dev) { struct sbp_targ_softc *sc; struct sbp_targ_lstate *lstate; - struct fw_xfer *xfer, *next; int i; sc = (struct sbp_targ_softc *)device_get_softc(dev); @@ -1692,13 +1682,8 @@ sbp_targ_detach(device_t dev) free(sc->black_hole, M_SBP_TARG); } - for (xfer = STAILQ_FIRST(&sc->fwb.xferlist); - xfer != NULL; xfer = next) { - next = STAILQ_NEXT(xfer, link); - fw_xfer_free_buf(xfer); - } - STAILQ_INIT(&sc->fwb.xferlist); fw_bindremove(sc->fd.fc, &sc->fwb); + fw_xferlist_remove(&sc->fwb.xferlist); return 0; } |