diff options
author | simokawa <simokawa@FreeBSD.org> | 2003-02-17 14:24:06 +0000 |
---|---|---|
committer | simokawa <simokawa@FreeBSD.org> | 2003-02-17 14:24:06 +0000 |
commit | 4461b7347a5ac842d81acb7d173b529b01f08cfc (patch) | |
tree | eaa6fe6446b45079f313865ba5ea4cec9d860edc /sys/dev/firewire/firewire.c | |
parent | 9feeb8da9afd631cc085b959d4018b50564eb781 (diff) | |
download | FreeBSD-src-4461b7347a5ac842d81acb7d173b529b01f08cfc.zip FreeBSD-src-4461b7347a5ac842d81acb7d173b529b01f08cfc.tar.gz |
* firewire.c
- Don't initiate bus reset even if probe failed for some nodes to prevent
infinite bus reset loop.
Problem Reported by: Pierre Beyssac <pb@fasterix.frmug.org>
- Protect timeout routine with splfw() for 4-stable.
* sbp.c
- Make sure to release devq when start request.
Diffstat (limited to 'sys/dev/firewire/firewire.c')
-rw-r--r-- | sys/dev/firewire/firewire.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/sys/dev/firewire/firewire.c b/sys/dev/firewire/firewire.c index 79e0e3a..a7af161 100644 --- a/sys/dev/firewire/firewire.c +++ b/sys/dev/firewire/firewire.c @@ -335,7 +335,7 @@ firewire_xfer_timeout(struct firewire_comm *fc) struct tlabel *tl; struct timeval tv; struct timeval split_timeout; - int i; + int i, s; split_timeout.tv_sec = 6; split_timeout.tv_usec = 0; @@ -343,6 +343,7 @@ firewire_xfer_timeout(struct firewire_comm *fc) microtime(&tv); timevalsub(&tv, &split_timeout); + s = splfw(); for (i = 0; i < 0x40; i ++) { while ((tl = STAILQ_FIRST(&fc->tlabels[i])) != NULL) { xfer = tl->xfer; @@ -365,6 +366,7 @@ firewire_xfer_timeout(struct firewire_comm *fc) } } } + splx(s); } static void @@ -1641,9 +1643,11 @@ fw_attach_dev(struct firewire_comm *fc) if (i > 0) printf("fw_attach_dev: %d pending handlers called\n", i); if (fc->retry_count > 0) { - printf("retry_count = %d\n", fc->retry_count); + printf("probe failed for %d node\n", fc->retry_count); +#if 0 callout_reset(&fc->retry_probe_callout, hz*2, (void *)fc->ibr, (void *)fc); +#endif } return; } |