aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/firewire/fwmem.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/firewire/fwmem.c')
-rw-r--r--sys/dev/firewire/fwmem.c28
1 files changed, 14 insertions, 14 deletions
diff --git a/sys/dev/firewire/fwmem.c b/sys/dev/firewire/fwmem.c
index f19b296c23cb..f5506f43d8d2 100644
--- a/sys/dev/firewire/fwmem.c
+++ b/sys/dev/firewire/fwmem.c
@@ -229,7 +229,7 @@ fwmem_write_block(
return NULL;
fp = (struct fw_pkt *)xfer->send.buf;
- fp->mode.wreqb.tcode = FWTCODE_RREQB;
+ fp->mode.wreqb.tcode = FWTCODE_WREQB;
fp->mode.wreqb.dst = htons(xfer->dst);
fp->mode.wreqb.dest_hi = htons(dst_hi);
fp->mode.wreqb.dest_lo = htonl(dst_lo);
@@ -297,9 +297,10 @@ fwmem_read (dev_t dev, struct uio *uio, int ioflag)
err = tsleep((caddr_t)xfer, FWPRI, "fwmrq", hz);
if (err !=0 || xfer->resp != 0
|| xfer->recv.buf == NULL)
- return EINVAL; /* XXX */
- err = uiomove(xfer->recv.buf + xfer->recv.off + 4*3,
- 4, uio);
+ err = EIO;
+ else
+ err = uiomove(xfer->recv.buf
+ + xfer->recv.off + 4*3, 4, uio);
} else {
if (len > MAXLEN)
len = MAXLEN;
@@ -310,9 +311,10 @@ fwmem_read (dev_t dev, struct uio *uio, int ioflag)
err = tsleep((caddr_t)xfer, FWPRI, "fwmrb", hz);
if (err != 0 || xfer->resp != 0
|| xfer->recv.buf == NULL)
- return EINVAL; /* XXX */
- err = uiomove(xfer->recv.buf + xfer->recv.off + 4*4,
- len, uio);
+ err = EIO;
+ else
+ err = uiomove(xfer->recv.buf
+ + xfer->recv.off + 4*4, len, uio);
}
fw_xfer_free(xfer);
if (err)
@@ -358,9 +360,8 @@ fwmem_write (dev_t dev, struct uio *uio, int ioflag)
if (xfer == NULL)
return EINVAL;
err = tsleep((caddr_t)xfer, FWPRI, "fwmwq", hz);
- if (err !=0 || xfer->resp != 0
- || xfer->recv.buf == NULL)
- return EINVAL; /* XXX */
+ if (err !=0 || xfer->resp != 0)
+ err = EIO;
} else {
if (len > MAXLEN)
len = MAXLEN;
@@ -372,11 +373,10 @@ fwmem_write (dev_t dev, struct uio *uio, int ioflag)
if (xfer == NULL)
return EINVAL;
err = tsleep((caddr_t)xfer, FWPRI, "fwmwb", hz);
- if (err != 0 || xfer->resp != 0
- || xfer->recv.buf == NULL)
- return EINVAL; /* XXX */
- fw_xfer_free(xfer);
+ if (err != 0 || xfer->resp != 0)
+ err = EIO;
}
+ fw_xfer_free(xfer);
}
return err;
}