Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 30 Oct 2007 08:59:34 +0100
From:      Dieter <freebsd@sopwith.solgatos.com>
To:        simokawa@FreeBSD.org
Cc:        freebsd-firewire@FreeBSD.org
Subject:   Re: kern/113785: [firewire] dropouts when playing DV on firewire 
Message-ID:  <200710301559.PAA11721@sopwith.solgatos.com>
In-Reply-To: Your message of "Tue, 30 Oct 2007 01:19:54 GMT." <200710300119.l9U1Jsv8040070@freefall.freebsd.org> 

next in thread | previous in thread | raw e-mail | index | archive | help

In message <200710300119.l9U1Jsv8040070@freefall.freebsd.org>, simokawa@FreeBSD.org writes:
> Synopsis: [firewire] dropouts when playing DV on firewire
> 
> State-Changed-From-To: open->feedback
> State-Changed-By: simokawa
> State-Changed-When: Tue Oct 30 01:17:44 UTC 2007
> State-Changed-Why: 
> I increased tx/rx buffer size in rev. 1.7 and 1.5.12.2 of
> src/usr.sbin/fwcontrol/fwdv.c. I hope this fixes your problem.
> 
> http://www.freebsd.org/cgi/query-pr.cgi?pr=113785


-#define NCHUNK 8
+#define NCHUNK 64

I tried this, it didn't help.  I also tried cranking it up to 256,
which still didn't help.  :-(

Given that the NEC controller has the problem only when "hot powered-up",
I wonder if it is an initialization problem.  Is there a way to log
what FreeBSD sends to the camcorder, similar to tcpdump(1) ?  Comparing
what FreeBSD sends if it detects the camcorder at boot time with what
it sends when the camcorder is powered up later might allow fixing the
having-to-reboot problem.  Perhaps the VIA controller always sends
the bad initialization?



The compiler whined:

fwcontrol.c:611: warning: control reaches end of non-void function
fwdv.c:93: warning: no previous prototype for 'dvrecv'
fwdv.c:248: warning: no previous prototype for 'dvsend'

At least the compiler warnings are easily fixed:


diff -u -r1.1 fwcontrol.c
--- fwcontrol.c 2007/10/30 15:32:15     1.1
+++ fwcontrol.c 2007/10/30 15:33:10
@@ -58,7 +58,7 @@
 extern int dvrecv(int, char *, char, int);
 extern int dvsend(int, char *, char, int);
 
-int sysctl_set_int(const char *, int);
+void sysctl_set_int(const char *, int);
 
 static void
 usage(void)
@@ -603,7 +603,7 @@
        }
 }
 
-int
+void
 sysctl_set_int(const char *name, int val)
 {
        if (sysctlbyname(name, NULL, NULL, &val, sizeof(int)) < 0)



diff -u -r1.1 fwdv.c
--- fwdv.c      2007/10/30 02:50:42     1.1
+++ fwdv.c      2007/10/30 15:45:42
@@ -88,6 +88,10 @@
 #define MAXBLOCKS (300)
 #define CYCLE_FRAC 0xc00
 
+/* prototypes */
+int dvrecv(int, char *, char, int);
+int dvsend(int, char *, char, int);
+
 int
 dvrecv(int d, char *filename, char ich, int count)
 {



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200710301559.PAA11721>