aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/firewire/sbp_targ.c
diff options
context:
space:
mode:
authorHidetoshi Shimokawa <simokawa@FreeBSD.org>2007-04-30 13:41:40 +0000
committerHidetoshi Shimokawa <simokawa@FreeBSD.org>2007-04-30 13:41:40 +0000
commit0892f4c5ec159e81b209b545144e3d81ef3fdc70 (patch)
tree66cf756d50969a480d3656b8104bce32926424ba /sys/dev/firewire/sbp_targ.c
parent3cb8dc7cd5dea66fdef86df639ac68f2bd69c239 (diff)
downloadsrc-0892f4c5ec159e81b209b545144e3d81ef3fdc70.tar.gz
src-0892f4c5ec159e81b209b545144e3d81ef3fdc70.zip
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
Notes
Notes: svn path=/head/; revision=169130
Diffstat (limited to 'sys/dev/firewire/sbp_targ.c')
-rw-r--r--sys/dev/firewire/sbp_targ.c23
1 files changed, 4 insertions, 19 deletions
diff --git a/sys/dev/firewire/sbp_targ.c b/sys/dev/firewire/sbp_targ.c
index f94377271275..35d8e3ed2aca 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;
}