public inbox for linux-bluetooth@vger.kernel.org
 help / color / mirror / Atom feed
* [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