Lines Matching refs:xfer
223 struct fw_xfer *xfer; in fw_free() local
251 for (xfer = STAILQ_FIRST(&ir->q); in fw_free()
252 xfer != NULL; xfer = STAILQ_FIRST(&ir->q)) { in fw_free()
256 xfer->resp = 0; in fw_free()
257 gFirewire->fw_xfer_done(xfer); in fw_free()
289 struct fw_xfer *xfer; in fw_read_async() local
299 while ((xfer = STAILQ_FIRST(&d->rq)) == NULL && err == B_OK) { in fw_read_async()
316 FW_GUNLOCK(xfer->fc); in fw_read_async()
318 fp = &xfer->recv.hdr; in fw_read_async()
323 tinfo = &xfer->fc->tcode[fp->mode.hdr.tcode]; in fw_read_async()
338 len = xfer->recv.pay_len; in fw_read_async()
340 err = user_memcpy(buf, (void *)xfer->recv.payload, len); in fw_read_async()
347 fwb = (struct fw_bind *)xfer->sc; in fw_read_async()
348 gFirewire->fw_xfer_unload(xfer); in fw_read_async()
349 xfer->recv.pay_len = B_PAGE_SIZE; in fw_read_async()
350 FW_GLOCK(xfer->fc); in fw_read_async()
351 STAILQ_INSERT_TAIL(&fwb->xferlist, xfer, link); in fw_read_async()
352 FW_GUNLOCK(xfer->fc); in fw_read_async()
454 struct fw_xfer *xfer; in fw_write_async() local
487 if ((xfer = gFirewire->fw_xfer_alloc_buf(pbytes, in fw_write_async()
491 bcopy(&pkt, &xfer->send.hdr, sizeof(struct fw_pkt)); in fw_write_async()
493 xfer->send.pay_len = pbytes; in fw_write_async()
502 err = user_memcpy((void*)&xfer->send.payload[0], in fw_write_async()
511 xfer->fc = d->fc; in fw_write_async()
512 xfer->sc = NULL; in fw_write_async()
513 xfer->hand = gFirewire->fw_xferwake; in fw_write_async()
514 xfer->send.spd = 2 /* XXX */; in fw_write_async()
516 if ((err = gFirewire->fw_asyreq(xfer->fc, -1, xfer))) in fw_write_async()
519 if ((err = gFirewire->fw_xferwait(xfer))) in fw_write_async()
522 if (xfer->resp != 0) { in fw_write_async()
523 err = xfer->resp; in fw_write_async()
527 if (xfer->flag & FWXF_RCVD) { in fw_write_async()
528 FW_GLOCK(xfer->fc); in fw_write_async()
529 STAILQ_INSERT_TAIL(&d->rq, xfer, link); in fw_write_async()
530 FW_GUNLOCK(xfer->fc); in fw_write_async()
535 gFirewire->fw_xfer_free(xfer); in fw_write_async()
637 fw_hand(struct fw_xfer *xfer) in fw_hand() argument
642 fwb = (struct fw_bind *)xfer->sc; in fw_hand()
644 FW_GLOCK(xfer->fc); in fw_hand()
645 STAILQ_INSERT_TAIL(&d->rq, xfer, link); in fw_hand()
646 FW_GUNLOCK(xfer->fc); in fw_hand()
664 struct fw_xfer *xfer; in fw_ioctl() local
766 xfer = gFirewire->fw_xfer_alloc_buf(pay_len, B_PAGE_SIZE/*XXX*/); in fw_ioctl()
767 if (xfer == NULL) in fw_ioctl()
791 bcopy(fp, (void *)&xfer->send.hdr, tinfo->hdr_len); in fw_ioctl()
794 (void *)xfer->send.payload, pay_len); in fw_ioctl()
795 xfer->send.spd = asyreq->req.sped; in fw_ioctl()
796 xfer->hand = gFirewire->fw_xferwake; in fw_ioctl()
798 if ((err = gFirewire->fw_asyreq(fc, -1, xfer)) != 0) in fw_ioctl()
800 if ((err = gFirewire->fw_xferwait(xfer)) != 0) in fw_ioctl()
802 if (xfer->resp != 0) { in fw_ioctl()
810 tinfo = &fc->tcode[xfer->recv.hdr.mode.hdr.tcode]; in fw_ioctl()
811 if (xfer->recv.hdr.mode.hdr.tcode == FWTCODE_RRESB || in fw_ioctl()
812 xfer->recv.hdr.mode.hdr.tcode == FWTCODE_LRES) { in fw_ioctl()
813 pay_len = xfer->recv.pay_len; in fw_ioctl()
814 if (asyreq->req.len >= xfer->recv.pay_len + tinfo->hdr_len) { in fw_ioctl()
815 asyreq->req.len = xfer->recv.pay_len + in fw_ioctl()
824 bcopy(&xfer->recv.hdr, fp, tinfo->hdr_len); in fw_ioctl()
825 bcopy(xfer->recv.payload, (char *)fp + tinfo->hdr_len, pay_len); in fw_ioctl()
827 gFirewire->fw_xfer_free_buf(xfer); in fw_ioctl()