Linux wireless drivers development
 help / color / mirror / Atom feed
From: Marcel Holtmann <marcel@holtmann.org>
To: "Sumangala, Suraj" <surajs@qca.qualcomm.com>
Cc: Johannes Berg <johannes@sipsolutions.net>,
	"linville@tuxdriver.com" <linville@tuxdriver.com>,
	ath6kl-devel <ath6kl-devel@qualcomm.com>,
	"Balasubramanian, senthilkumar" <senthilb@qca.qualcomm.com>,
	"Mehta, Vipin" <vipimeht@qca.qualcomm.com>,
	"Valo, Kalle" <kvalo@qca.qualcomm.com>,
	"linux-wireless@vger.kernel.org" <linux-wireless@vger.kernel.org>
Subject: RE: [RFC] nl80211: Added NL80211 commands for Bluetooth-WiFi coex
Date: Wed, 31 Aug 2011 15:51:54 -0700	[thread overview]
Message-ID: <1314831118.3373.266.camel@aeonflux> (raw)
In-Reply-To: <480687D4EEFE7447A2E09AADFF6673621AF7DF82@nasanexd02a.na.qualcomm.com>

Hi Suraj,

> > this looks like the total wrong approach to me. This needs to be done between mac80211 and Bluetooth subsystems in the kernel directly. Going through userspace for this is a pretty bad idea.
> 
> > Especially if you wanna listen on D-Bus events from bluetoothd and then run another process to then execute nl80211 commands looks like total overhead at no gain. Not to talk about potential latency > effects that might be counterproductive.
> 
> > What you really want is a way to mark A2DP channels for streaming from userspace as streaming/realtime/priority so the Bluetooth subsystem knows on what to do with it and that way can also tell > > mac80211 correctly about coex settings.
> 
> > We are already settings flushable flags for A2DP streaming channels and there is work ongoing for SO_PRIORITY support with L2CAP sockets.
> 
> More than the A2DP connection, it would be more useful to find out when A2DP start/stop streaming so that we can know when to reallocate resource to Bluetooth. Is it possible to tap this information out of the Bluetooth core?
> Also, can you suggest a way to get A2DP streaming status, inquiry status, and SCO and ACL role without a hack in the Bluetooth subsystem?

the inquiry status is tracked by the Linux kernel since ever. Same goes
for ACL and SCO status. The kernel keeps track over almost everything on
the HCI level and will do proper cleanup afterwards. Doing this in
userspace will not work out. And it is also racy.

Especially in the future bluetoothd will be tracking less and less
information. The new management interface will hide almost every single
state from bluetoothd where the kernel is doing the job anyway and can
do a way better job in the first place. This is also leads to power
consumption advantages since bluetoothd does not need to be woken up
that often anyway. And in addition the kernel has not deal with the
extra HCI filter handling.

The only thing that you mentioned here is A2DP streaming. And by the
nature of the A2DP protocol, you do establish a second L2CAP channel
that is just used for streaming. That channel is also only present if
you are streaming right now. If not streaming is going on, it will be
disconnected. So it is pretty easy to have bluetoothd tag such a channel
with proper SO_PRIORITY (once we have that code merged upstream) and
then the Bluetooth subsystem knows when A2DP streaming or any high
priority/realtime data is transferred over Bluetooth.

Regards

Marcel



  reply	other threads:[~2011-08-31 22:52 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-08-31  6:25 [RFC] nl80211: Added NL80211 commands for Bluetooth-WiFi coex Suraj Sumangala
2011-08-31  6:30 ` Johannes Berg
2011-08-31  6:36   ` Sumangala, Suraj
2011-08-31  6:40     ` Johannes Berg
2011-08-31  6:48       ` Sumangala, Suraj
2011-08-31 14:40         ` Marcel Holtmann
2011-08-31 14:56           ` Sumangala, Suraj
2011-08-31 22:51             ` Marcel Holtmann [this message]
2011-09-01  6:09               ` Sumangala, Suraj
2011-09-01 11:43                 ` Marcel Holtmann
2011-09-01 12:20                   ` Johannes Berg
2011-09-01 12:22                   ` Kalle Valo
2011-09-02  7:54                   ` Sumangala, Suraj
2011-09-02 12:04                     ` Johannes Berg
2011-08-31  7:14 ` Johannes Berg
2011-08-31 14:30   ` Sumangala, Suraj

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=1314831118.3373.266.camel@aeonflux \
    --to=marcel@holtmann.org \
    --cc=ath6kl-devel@qualcomm.com \
    --cc=johannes@sipsolutions.net \
    --cc=kvalo@qca.qualcomm.com \
    --cc=linux-wireless@vger.kernel.org \
    --cc=linville@tuxdriver.com \
    --cc=senthilb@qca.qualcomm.com \
    --cc=surajs@qca.qualcomm.com \
    --cc=vipimeht@qca.qualcomm.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox