* [Bluez-devel] Small bugfix for hstest
@ 2004-08-30 15:53 Till Harbaum
2004-08-30 16:07 ` Marcel Holtmann
0 siblings, 1 reply; 2+ messages in thread
From: Till Harbaum @ 2004-08-30 15:53 UTC (permalink / raw)
To: bluez-devel
[-- Attachment #1: Type: text/plain, Size: 1072 bytes --]
Hi,
i have played around with hstest and some uart based hardware and found a
problem, that only seems to happen with uart based devices:
A client may receive sco data packets that are bigger than the sco mtu. hstest
returns packets of exactly the same size of the packets it received. If the
packet received is bigger then the sco mtu, then packets bigger than sco mtu
are being sent and being dropped in the kernel. As a result, no data is being
sent at all. Instead multiple smaller sco packets should be sent.
The attached patch has to be applied to bluez-utils/test/hstest.c and fixes
the problem inside hstest. It would as well be possible to make the kernel
sco code detect this and fragment the payload accordingly. But imho this
should be done in the application.
Regards,
Till
--
Dr.-Ing. Till Harbaum Tel.: +49 721 4998963
BeeCon GmbH Fax: +49 721 4998962
Haid-und-Neu Strasse 7, 76131 Karlsruhe Mobil: +49 179 9087904
harbaum@beecon.de http://www.beecon.de
[-- Attachment #2: hstest-uart.patch --]
[-- Type: text/x-diff, Size: 691 bytes --]
--- hstest.c.old 2004-08-28 13:11:11.000000000 +0200
+++ hstest.c 2004-08-28 13:14:45.000000000 +0200
@@ -148,7 +148,7 @@
fd_set rfds;
struct timeval timeout;
- unsigned char buf[2048];
+ unsigned char buf[2048], *p;
int maxfd, sel, rlen, wlen;
bdaddr_t local;
@@ -274,7 +274,15 @@
switch (mode) {
case PLAY:
rlen = read(fd, buf, rlen);
- wlen = write(sd, buf, rlen);
+
+ wlen = 0;
+ p = buf;
+ while(rlen > sco_mtu) {
+ wlen += write(sd, p, sco_mtu);
+ rlen -= sco_mtu;
+ p += sco_mtu;
+ }
+ wlen += write(sd, p, rlen);
break;
case RECORD:
wlen = write(fd, buf, rlen);
^ permalink raw reply [flat|nested] 2+ messages in thread* Re: [Bluez-devel] Small bugfix for hstest
2004-08-30 15:53 [Bluez-devel] Small bugfix for hstest Till Harbaum
@ 2004-08-30 16:07 ` Marcel Holtmann
0 siblings, 0 replies; 2+ messages in thread
From: Marcel Holtmann @ 2004-08-30 16:07 UTC (permalink / raw)
To: Till Harbaum; +Cc: bluez-devel
Hi Till,
> i have played around with hstest and some uart based hardware and found a
> problem, that only seems to happen with uart based devices:
>
> A client may receive sco data packets that are bigger than the sco mtu. hstest
> returns packets of exactly the same size of the packets it received. If the
> packet received is bigger then the sco mtu, then packets bigger than sco mtu
> are being sent and being dropped in the kernel. As a result, no data is being
> sent at all. Instead multiple smaller sco packets should be sent.
>
> The attached patch has to be applied to bluez-utils/test/hstest.c and fixes
> the problem inside hstest. It would as well be possible to make the kernel
> sco code detect this and fragment the payload accordingly. But imho this
> should be done in the application.
I applied the patch, but there must be space between "while" and "(" to
keep me and the coding style happy ;)
Regards
Marcel
-------------------------------------------------------
This SF.Net email is sponsored by BEA Weblogic Workshop
FREE Java Enterprise J2EE developer tools!
Get your free copy of BEA WebLogic Workshop 8.1 today.
http://ads.osdn.com/?ad_id=5047&alloc_id=10808&op=click
_______________________________________________
Bluez-devel mailing list
Bluez-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bluez-devel
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2004-08-30 16:07 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-08-30 15:53 [Bluez-devel] Small bugfix for hstest Till Harbaum
2004-08-30 16:07 ` Marcel Holtmann
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox