From: Marcel Holtmann <marcel@holtmann.org>
To: "Aj, SanthoshX" <santhoshx.aj@intel.com>
Cc: Amir Hadar <amir.hadar.ti@gmail.com>,
"Hedberg, Johan" <johan.hedberg@intel.com>,
"linux-bluetooth@vger.kernel.org"
<linux-bluetooth@vger.kernel.org>,
"Holtmann, Marcel" <marcel.holtmann@intel.com>,
"Nair, Rashmi G" <rashmi.g.nair@intel.com>
Subject: RE: [PATCH] Breaks in A2DP playback during device search
Date: Fri, 06 Jan 2012 13:57:10 -0800 [thread overview]
Message-ID: <1325887030.6454.104.camel@aeonflux> (raw)
In-Reply-To: <001F63875E1AF5428162B5A2D3ED1BDD8FAF@IRSMSX101.ger.corp.intel.com>
Hi Santhosh,
> > > > Subject: [PATCH] To change the latency of controller This change
> > is
> > > > done to fix the a2dp breaks as the IMC controller expects the
> > > > latency to be set explicitly by calling HCI QoS setup
> > > >
> > > > ---
> > > > audio/device.c | 7 +++
> > > > common/Android.mk | 3 +-
> > > > common/android_bluez.c | 111
> > > > ++++++++++++++++++++++++++++++++++++++-
> > > --------
> > > > 3 files changed, 98 insertions(+), 23 deletions(-)
> > >
> > > As was previously mentioned by others patches to this list are
> > > expected to be against the upstream git tree. This looks like
> > > something else. One thing I'd like to add though:
> > >
> > > > +static int vendor_high_priority(int fd, uint16_t handle) {
> > > > + unsigned char hci_sleep_cmd[] = {
> > > > + 0x01, // HCI command packet
> > > > + 0x57, 0xfc, // HCI_Write_High_Priority_Connection
> > > > + 0x02, // Length
> > > > + 0x00, 0x00 // Handle
> > > > + };
> > > > +
> > > > + hci_sleep_cmd[4] = (uint8_t)handle;
> > > > + hci_sleep_cmd[5] = (uint8_t)(handle >> 8);
> > > > +
> > > > + int ret = write(fd, hci_sleep_cmd, sizeof(hci_sleep_cmd));
> > > > + if (ret < 0) {
> > > > + error("write(): %s (%d)]", strerror(errno), errno);
> > > > + return -1;
> > > > + } else if (ret != sizeof(hci_sleep_cmd)) {
> > > > + error("write(): unexpected length %d", ret);
> > > > + return -1;
> > > > + }
> > > > + return 0;
> > > > +}
> > >
> > > When you need to need to create a mechanism which controls some
> > aspect
> > > of an RFCOMM, L2CAP or ACL link your first option should be to
> > > consider implementing it as a socket option. If that's not possible
> > > (though in this case I think it is) then the only other alternative
> > is
> > > to abstract it behind the adapter_ops interface since the core daemon
> > > shouldn't any longer do direct HCI access. So you'd implement sending
> > > this command in hciops and then add the appropriate mgmt command and
> > > add support for it into mgmtops.c and the kernel.
> >
> > I work in TI (with Chen Ganir and Ilia Kolominsky),
> >
> > We encountered the same dilemma and suggested a solution using Flow
> > specification.
> >
> > The Flow Specification HCI relates to an ACL handle and not a specific
> > L2CAP channel. If we intend to configure the Flow Spec using socket
> > option then different profiles might overrun each other settings.
> >
> > The other option of using the mgmt is not too good either. Since this
> > command is "Link" related and not "Adapter/Device" related, the daemon
> > dbus API would have to receive the ACL handle as parameter or introduce
> > a new property on Device node which might not exist. Note that one can
> > create an L2CAP socket without interfacing the daemon.
> >
> > My humble opinion is to set the Flow Spec per socket (l2cap/rfcomm)
> > using socket options. Store it per channel and send accumulated flow
> > spec on every change per ACL.
> >
> > - channel changed its flow sepc
> > - channel with flow spec was closed
> >
> > All done in the kernel, no changes to the daemon.
> >
> > Kind Regards,
> > Amir Hadar
> >
> >
>
> Thanks for your valuable inputs; as mentioned earlier please note we are
> currently using Android Froyo (2.2.2) which has bluez version 4.47 &
> kernel version 2.6.32.
>
> Using Flow specification is seems to be good. I will change it to flow spec
> instead of qos setup command.
>
> I want to know one thing if we want to use setsockopt to send flow spec
> (add new socket option SO_L2CAP_OQOS) just handle it l2cap.c to send hci flow spec command,
> that's what you are suggesting?
for the first attempt, I rather go a bit simpler and just trigger this
via SO_PRIORITY and HCI_PRIO_MAX.
We can however also add a general BT_FLOW_SPECIFICATION socket option. I
am looking forward for patches.
Also we have to fallback gracefully to HCI_Setup_QoS for older
controllers.
Regards
Marcel
prev parent reply other threads:[~2012-01-06 21:57 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-05 4:39 [PATCH] Breaks in A2DP playback during device search Aj, SanthoshX
2012-01-05 12:07 ` Ilia, Kolominsky
2012-01-05 13:34 ` Luiz Augusto von Dentz
2012-01-05 14:19 ` Johan Hedberg
2012-01-05 15:30 ` Amir Hadar
2012-01-06 6:58 ` Aj, SanthoshX
2012-01-06 14:19 ` Amir Hadar
2012-01-06 23:29 ` Marcel Holtmann
2012-01-06 21:57 ` Marcel Holtmann [this message]
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=1325887030.6454.104.camel@aeonflux \
--to=marcel@holtmann.org \
--cc=amir.hadar.ti@gmail.com \
--cc=johan.hedberg@intel.com \
--cc=linux-bluetooth@vger.kernel.org \
--cc=marcel.holtmann@intel.com \
--cc=rashmi.g.nair@intel.com \
--cc=santhoshx.aj@intel.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