summaryrefslogtreecommitdiff
path: root/sys/dev/firewire/firewire.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/firewire/firewire.c')
-rw-r--r--sys/dev/firewire/firewire.c43
1 files changed, 26 insertions, 17 deletions
diff --git a/sys/dev/firewire/firewire.c b/sys/dev/firewire/firewire.c
index 3f687e028902..f3f7b16e7a5f 100644
--- a/sys/dev/firewire/firewire.c
+++ b/sys/dev/firewire/firewire.c
@@ -118,7 +118,17 @@ static device_method_t firewire_methods[] = {
{ 0, 0 }
};
-char linkspeed[7][0x10]={"S100","S200","S400","S800","S1600","S3200","Unknown"};
+char *linkspeed[] = {
+ "S100", "S200", "S400", "S800",
+ "S1600", "S3200", "undef", "undef"
+};
+
+static char *tcode_str[] = {
+ "WREQQ", "WREQB", "WRES", "undef",
+ "RREQQ", "RREQB", "RRESQ", "RRESB",
+ "CYCS", "LREQ", "STREAM", "LRES",
+ "undef", "undef", "PHY", "undef"
+};
/* IEEE-1394a Table C-2 Gap count as a function of hops*/
#define MAX_GAPHOP 15
@@ -192,7 +202,7 @@ fw_asyreq(struct firewire_comm *fc, int sub, struct fw_xfer *xfer)
tcode = fp->mode.common.tcode & 0xf;
info = &fc->tcode[tcode];
if (info->flag == 0) {
- printf("invalid tcode=%d\n", tcode);
+ printf("invalid tcode=%x\n", tcode);
return EINVAL;
}
if (info->flag & FWTI_REQ)
@@ -211,8 +221,8 @@ fw_asyreq(struct firewire_comm *fc, int sub, struct fw_xfer *xfer)
else
len = 0;
if (len != xfer->send.pay_len){
- printf("len(%d) != send.pay_len(%d) (tcode=%d)\n",
- len, xfer->send.pay_len, tcode);
+ printf("len(%d) != send.pay_len(%d) %s(%x)\n",
+ len, xfer->send.pay_len, tcode_str[tcode], tcode);
return EINVAL;
}
@@ -1770,12 +1780,12 @@ fw_rcv(struct fw_rcv_buf *rb)
fp->mode.hdr.tlrt >> 2);
if(rb->xfer == NULL) {
printf("fw_rcv: unknown response "
- "tcode=%d src=0x%x tl=0x%x rt=%d data=0x%x\n",
- tcode,
- fp->mode.hdr.src,
- fp->mode.hdr.tlrt >> 2,
- fp->mode.hdr.tlrt & 3,
- fp->mode.rresq.data);
+ "%s(%x) src=0x%x tl=0x%x rt=%d data=0x%x\n",
+ tcode_str[tcode], tcode,
+ fp->mode.hdr.src,
+ fp->mode.hdr.tlrt >> 2,
+ fp->mode.hdr.tlrt & 3,
+ fp->mode.rresq.data);
#if 1
printf("try ad-hoc work around!!\n");
rb->xfer = fw_tl2xfer(rb->fc, fp->mode.hdr.src,
@@ -1818,16 +1828,15 @@ fw_rcv(struct fw_rcv_buf *rb)
bind = fw_bindlookup(rb->fc, fp->mode.rreqq.dest_hi,
fp->mode.rreqq.dest_lo);
if(bind == NULL){
+ printf("Unknown service addr 0x%04x:0x%08x %s(%x)"
#if __FreeBSD_version >= 500000
- printf("Unknown service addr 0x%04x:0x%08x tcode=%x src=0x%x data=%x\n",
+ " src=0x%x data=%x\n",
#else
- printf("Unknown service addr 0x%04x:0x%08x tcode=%x src=0x%x data=%lx\n",
+ " src=0x%x data=%lx\n",
#endif
- fp->mode.wreqq.dest_hi,
- fp->mode.wreqq.dest_lo,
- tcode,
- fp->mode.hdr.src,
- ntohl(fp->mode.wreqq.data));
+ fp->mode.wreqq.dest_hi, fp->mode.wreqq.dest_lo,
+ tcode_str[tcode], tcode,
+ fp->mode.hdr.src, ntohl(fp->mode.wreqq.data));
if (rb->fc->status == FWBUSRESET) {
printf("fw_rcv: cannot respond(bus reset)!\n");
goto err;