From: Marcel Holtmann <marcel@holtmann.org>
To: BlueZ Mailing List <bluez-devel@lists.sourceforge.net>
Subject: Re: [Bluez-devel] Re: Handling a Hardware Error event on iPAQ h5550
Date: Thu, 24 Mar 2005 13:35:00 +0100 [thread overview]
Message-ID: <1111667700.1916.70.camel@pegasus> (raw)
In-Reply-To: <loom.20050324T130536-748@post.gmane.org>
Hi Catalin,
> > > Could you give a few more details on this one, please? What I want to do is
> > > what Pieter suggested: have the Hardware Error event trigger an unexpected
> > > link loss on all active connections.
> >
> > if you wanna do this, then this should be done directly in the Bluetooth
> > core module in the kernel. Look at hci_event.c and add the handling for
> > the hardware error event to trigger the appropriate actions.
>
> I know that it has to be done in hci_event.c; what I was trying to figure out
> was what the necessary actions are. As far as I've been able to tell the
> function hci_conn_hash_flush in hci_conn.c seems to do most of the work. Is that
> it or is there something else to do? Should we tasklet_kill the RX and TX tasks?
I am not 100% sure, but the right actions seem to me:
disable RX task
disable TX task
lock device
flush connection hash
unlock device
call flush() function of the driver
disable cmd task
drop rx queue
drop cmd queue
drop raw queue
drop last sent command
enable RX task
enable TX task
enable cmd task
It is somekind of tricky to get this fully correct and I don't have any
device to really test it. However send in a patch when you got it done.
> A somewhat unrelated question, but I could not help noticing this: in
> hci_conn.c, in function hci_conn_del there is this:
>
> if (conn->type == SCO_LINK) {
> struct hci_conn *acl = conn->link;
> if (acl) {
> acl->link = NULL;
> hci_conn_put(acl);
> }
> } else {
> struct hci_conn *sco = conn->link;
> if (sco)
> sco->link = NULL;
>
> /* Unacked frames */
> hdev->acl_cnt += conn->sent;
> }
>
> I don't claim to have a good understanding of this code, but it seems that on
> the true branch ACL is handled and on the false branch, SCO is handled. So
> shouldn't that be:
>
> if (conn->type != SCO_LINK)
You are wrong here. We check for conn->link and that is the associated
SCO or ACL link.
Regards
Marcel
-------------------------------------------------------
This SF.net email is sponsored by Microsoft Mobile & Embedded DevCon 2005
Attend MEDC 2005 May 9-12 in Vegas. Learn more about the latest Windows
Embedded(r) & Windows Mobile(tm) platforms, applications & content. Register
by 3/29 & save $300 http://ads.osdn.com/?ad_id=6883&alloc_id=15149&op=click
_______________________________________________
Bluez-devel mailing list
Bluez-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bluez-devel
next prev parent reply other threads:[~2005-03-24 12:35 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-03-17 10:23 [Bluez-devel] Handling a Hardware Error event on iPAQ h5550 Catalin Drula
2005-03-17 10:56 ` Peter Wippich
2005-03-17 11:06 ` Marcel Holtmann
2005-03-24 11:39 ` [Bluez-devel] " Catalin Drula
2005-03-24 11:46 ` Marcel Holtmann
2005-03-24 12:17 ` Catalin Drula
2005-03-24 12:35 ` Marcel Holtmann [this message]
2005-03-17 15:59 ` Catalin Drula
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1111667700.1916.70.camel@pegasus \
--to=marcel@holtmann.org \
--cc=bluez-devel@lists.sourceforge.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.