summaryrefslogtreecommitdiffstats
path: root/sys/dev/firewire/sbp.c
diff options
context:
space:
mode:
authorsimokawa <simokawa@FreeBSD.org>2007-04-30 13:41:40 +0000
committersimokawa <simokawa@FreeBSD.org>2007-04-30 13:41:40 +0000
commit21d4d06eead25f9b28b2940969466efa55ac9170 (patch)
tree66cf756d50969a480d3656b8104bce32926424ba /sys/dev/firewire/sbp.c
parent99faf91c588fedeb9916bb485fab297f0fd3d5d8 (diff)
downloadFreeBSD-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.c')
-rw-r--r--sys/dev/firewire/sbp.c24
1 files changed, 4 insertions, 20 deletions
diff --git a/sys/dev/firewire/sbp.c b/sys/dev/firewire/sbp.c
index fb88553..1971e38 100644
--- a/sys/dev/firewire/sbp.c
+++ b/sys/dev/firewire/sbp.c
@@ -1910,7 +1910,6 @@ sbp_attach(device_t dev)
{
struct sbp_softc *sbp;
struct cam_devq *devq;
- struct fw_xfer *xfer;
int i, s, error;
if (DFLTPHYS > SBP_MAXPHYS)
@@ -1987,20 +1986,11 @@ END_DEBUG
/* We reserve 16 bit space (4 bytes X 64 targets X 256 luns) */
sbp->fwb.start = ((u_int64_t)SBP_BIND_HI << 32) | SBP_DEV2ADDR(0, 0);
sbp->fwb.end = sbp->fwb.start + 0xffff;
- sbp->fwb.act_type = FWACT_XFER;
/* pre-allocate xfer */
STAILQ_INIT(&sbp->fwb.xferlist);
- for (i = 0; i < SBP_NUM_OCB/2; i ++) {
- xfer = fw_xfer_alloc_buf(M_SBP,
- /* send */0,
- /* recv */SBP_RECV_LEN);
- xfer->hand = sbp_recv;
-#if NEED_RESPONSE
- xfer->fc = sbp->fd.fc;
-#endif
- xfer->sc = (caddr_t)sbp;
- STAILQ_INSERT_TAIL(&sbp->fwb.xferlist, xfer, link);
- }
+ fw_xferlist_add(&sbp->fwb.xferlist, M_SBP,
+ /*send*/ 0, /*recv*/ SBP_RECV_LEN, SBP_NUM_OCB/2,
+ sbp->fd.fc, (void *)sbp, sbp_recv);
fw_bindadd(sbp->fd.fc, &sbp->fwb);
sbp->fd.post_busreset = sbp_post_busreset;
@@ -2102,7 +2092,6 @@ sbp_detach(device_t dev)
{
struct sbp_softc *sbp = ((struct sbp_softc *)device_get_softc(dev));
struct firewire_comm *fc = sbp->fd.fc;
- struct fw_xfer *xfer, *next;
int i;
SBP_DEBUG(0)
@@ -2124,13 +2113,8 @@ END_DEBUG
for (i = 0 ; i < SBP_NUM_TARGETS ; i ++)
sbp_free_target(&sbp->targets[i]);
- for (xfer = STAILQ_FIRST(&sbp->fwb.xferlist);
- xfer != NULL; xfer = next) {
- next = STAILQ_NEXT(xfer, link);
- fw_xfer_free_buf(xfer);
- }
- STAILQ_INIT(&sbp->fwb.xferlist);
fw_bindremove(fc, &sbp->fwb);
+ fw_xferlist_remove(&sbp->fwb.xferlist);
bus_dma_tag_destroy(sbp->dmat);
OpenPOWER on IntegriCloud