2007/5/29, Marcel Holtmann <marcel@holtmann.org>:
Hi Emanuele,
> I wrote a little application to simulate an heavy traffic.
> Simply discovers devices using hci0 and for each device discovered
> starts a thread to search service using hci1.
> Rinse and repeat forever.
> Usually I have 5-6 bluetooth devices in the area.
> I'm not using d-bus messaging (yet) but i guess i'll try that too to
> check
>
> Anyway I noticed a large number of timeouts during search services on
> devices who previously returned correct service record.
I have no idea how often I have to say that, but you can't page devices
at the same time. The chips simply don't support that. The same reason
why you can run an inquiry and page at the same time. It is not
possible. Period. And this means you have to serialize the SDP service
requests.
New kernel versions try to handling pending page attempts for piconet
creation, but that is also limited. And simultaneous name resolve
request can also cause troubles.
Regards
Marcel
Maybe I was not clear sorry, the sdp search I do on hci1 is serialized. It's a thread started each one a new device is discovered. He does 1 sdp search and quit. Then another one is started on next device on the list of the discovered ones.
I know I cant do inquiry and page at same time but I read elsewhere on this forum that using 2 separate hci at once you can actually achieve that. But maybe I was wrong if so sorry for the silly question.
Simply I do inquiry with hci0 (never stops) and each time it finds a group devices I start an sdp search on hci1 (1 device at time serialized) but as I wrote sometimes this request return page timeout while other time it works well as per the hcidump I attached on previous message.
At this time the inquiry is always running (not periodic inquiry simply a looped inquiry request)
That's only to check what's happening on heavy traffic.
Is possible that an inquiry and an sdp on 2 separate threads even if on 2 differents hci can cause problems someway during threads context switch?