Re: [PATCH] Bluetooth: Process HCI events in a workqueue instead of a tasklet

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi David,

> >>>> Signed-off-by: Marcel Holtmann <marcel@xxxxxxxxxxxx>
> >>>> ---
> >>>>  include/net/bluetooth/hci_core.h |    2 +
> >>>>  net/bluetooth/hci_core.c         |   58 ++++++++++++++++++++++++++++++++-----
> >>>>  2 files changed, 52 insertions(+), 8 deletions(-)
> >>> so I stuffed this now into bluetooth-testing tree and would like to see
> >>> some extra testing exposure. So far this has only been tested by myself.
> >>>
> >>> If there are no regression then this should make a lot of HCI and L2CAP
> >>> handling a lot simple.
> >> This may result in packets being processed in a different order to that 
> >> which they were received in.
> >>
> >> e.g., what happens to an ACL packet processed before the connection 
> >> complete event for that connection?
> > 
> > good point. So we would either a) need to disable the RX tasklet when we
> > receive an event and schedule it for processing or b) process the ACL
> > data also in a workqueue.
> 
> I think my preferred solution would be for the rx function called by the 
> HCI transport drivers to be called in a thread context.  There should be 
> a helper function that is callable in atomic context that queues the 
> packets to be processed in a workqueue.
> 
> Our UWB drivers already process packets in a thread so would prefer to 
> avoid another thread context switch.
> 
> Shall I prepare a patch?

yes please. I need something to make the event handling simpler.
Otherwise every single subcomponent creates "hundreds" of workqueues to
solve exactly the same problem.

Regards

Marcel


--
To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux