Subject: Re: kern/34070: btconfig: SIOCSBTFLAGS: Resource temporarily
To: Iain Hibbert <plunky@rya-online.net>
From: Matthias Drochner <M.Drochner@fz-juelich.de>
List: netbsd-bugs
Date: 11/24/2006 11:54:46
This is a multipart MIME message.

--==_Exmh_7070402042130
Content-Type: text/plain; charset=us-ascii


OK, another try...

[data toggle code in ehci.c]
M.Drochner@fz-juelich.de said:
> The code above looks bogus - I can't imagine how transactions which
> are not executed could contribute to the state of the data toggle
> protocol. 

Now I understand that that code (partially) rolls back a data toggle
pre-computation in ehci_alloc_sqtd_chain().
There is an obvious flaw however: It doesn't care about alignment
wrt wMaxPacketSize, so it will miss a packet under some conditions.
I'm not so eager to mess with that code right now, but I see an easy
workaround which is at least good to prove that theory: Allocate
transfer buffers in multiples of wMaxPacketSize.
With the appended patch my ubt initializes, and an "btconfig -vvv"
finishes successfully.

best regards
Matthias



--==_Exmh_7070402042130
Content-Type: text/plain ; name="ubtalign.txt"; charset=us-ascii
Content-Description: ubtalign.txt
Content-Disposition: attachment; filename="ubtalign.txt"

Index: ubt.c
===================================================================
RCS file: /cvsroot/src/sys/dev/usb/ubt.c,v
retrieving revision 1.20
diff -u -p -r1.20 ubt.c
--- ubt.c	16 Nov 2006 01:33:26 -0000	1.20
+++ ubt.c	24 Nov 2006 10:38:31 -0000
@@ -151,7 +151,7 @@ SYSCTL_SETUP(sysctl_hw_ubt_debug_setup, 
  */
 #define UBT_BUFSIZ_CMD		(HCI_CMD_PKT_SIZE - 1)
 #define UBT_BUFSIZ_ACL		(2048 - 1)
-#define UBT_BUFSIZ_EVENT	(HCI_EVENT_PKT_SIZE - 1)
+#define UBT_BUFSIZ_EVENT	272 /*(HCI_EVENT_PKT_SIZE - 1)*/
 
 /* Interrupt Interval from (Bluetooth spec) */
 #define UBT_EVENT_INTERVAL	1	/* 1ms */

--==_Exmh_7070402042130--