linux-bluetooth.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Mat Martineau <mathewm@codeaurora.org>
To: Andrei Emeltchenko <Andrei.Emeltchenko.news@gmail.com>
Cc: linux-bluetooth@vger.kernel.org, marcel@holtmann.org
Subject: Re: [PATCHv1 11/12] Bluetooth: AMP: Use l2cap_physical_cfm in phylink complete evt
Date: Tue, 13 Nov 2012 09:29:38 -0800 (PST)	[thread overview]
Message-ID: <alpine.DEB.2.02.1211130911200.27104@mathewm-linux> (raw)
In-Reply-To: <20121112092641.GA10008@aemeltch-MOBL1>


Hi Andrei -

On Mon, 12 Nov 2012, Andrei Emeltchenko wrote:

> Hi Mat,
>
> On Fri, Nov 02, 2012 at 08:39:09AM -0700, Mat Martineau wrote:
> ...
>>>>> +void amp_physical_cfm(struct hci_conn *bredr_hcon, struct hci_conn *hs_hcon)
>>>>> +{
>>>>> +	struct hci_dev *bredr_hdev = hci_dev_hold(bredr_hcon->hdev);
>>>>> +	struct amp_mgr *mgr = hs_hcon->amp_mgr;
>>>>> +	struct l2cap_chan *bredr_chan;
>>>>> +
>>>>> +	BT_DBG("bredr_hcon %p hs_hcon %p mgr %p", bredr_hcon, hs_hcon, mgr);
>>>>> +
>>>>> +	if (!bredr_hdev || !mgr || !mgr->bredr_chan)
>>>>> +		return;
>>>>> +
>>>>> +	bredr_chan = mgr->bredr_chan;
>>>>> +
>>>>> +	set_bit(FLAG_EFS_ENABLE, &bredr_chan->flags);
>>>>> +	bredr_chan->ctrl_id = hs_hcon->remote_id;
>>>>> +	bredr_chan->hs_hcon = hs_hcon;
>>>>> +	bredr_chan->conn->mtu = hs_hcon->hdev->block_mtu;
>>>>> +	bredr_chan->fcs = L2CAP_FCS_NONE;
>>
>> Changing FCS requires L2CAP reconfiguration for the channel, and
>> chan->fcs shouldn't be modified until reconfiguration happens.
>> While it doesn't make much sense to do so, the remote device may
>> want to keep FCS enabled.  The move may also fail and you don't want
>> to forget the original FCS setting in that case.
>
> So we agree that FCS shall not be used for High Speed channels. I was
> thinking more about the case where we start sending data right over HS
> channel. The configuration should be just started.

No matter what the BlueZ implementation prefers, it must be able to 
handle a remote device that requests FCS during L2CAP config.  If one 
side requests FCS, then it must be used.

Do we want BlueZ to always ignore the L2CAP FCS socket option on AMP 
controllers?  (Marcel?)  This checksum is always redundant with 802.11 
AMP controllers.

> What would be the better place to init FCS? l2cap_physical_cfm after
> checking channel moving status?

I think it should be as late as possible before L2CAP configuration 
begins in order to be sure the channel is really on AMP.  For the 
"create channel" case, set_default_fcs could see if an AMP link is 
being used and turn the FCS off.

>>>> Sorry I missed this earlier: bredr_chan needs to be locked before
>>>> changing it.  I suggest passing the information to
>>>> l2cap_physical_cfm and letting that function update the structure
>>>> members while it holds the lock.
>>>
>>> what about locking here and changing l2cap_physical_cfm to unlocked
>>> __l2cap_physical_cfm ?
>>
>> My preference is to not manipulate l2cap_chan too much outside of
>> l2cap_core, and to keep the channel move or channel create state
>> machines inside l2cap_core.  l2cap_physical_cfm checks the channel
>> state before modifying it.  The move or new connection may have been
>> canceled or be in the wrong state, in which case the structure
>> should not be modified even though the physical link was completed.
>
> so maybe we shall move some code to l2cap_physical_cfm ?

Yes, I think l2cap_physical_cfm is a better place for changes to 
l2cap_chan.


Regards,
--
Mat Martineau

Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation

  reply	other threads:[~2012-11-13 17:29 UTC|newest]

Thread overview: 85+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-10-16 15:01 [RFCv0 0/8] Handling physical and logical link Andrei Emeltchenko
2012-10-16 15:01 ` [RFCv0 1/8] Bluetooth: AMP: Process Physical Link Complete evt Andrei Emeltchenko
2012-10-16 15:01 ` [RFCv0 2/8] Bluetooth: AMP: Process Logical Link complete evt Andrei Emeltchenko
2012-10-16 15:01 ` [RFCv0 3/8] Bluetooth: Add logical link create function Andrei Emeltchenko
2012-10-16 15:01 ` [RFCv0 4/8] Bluetooth: AMP: Process Disc Logical Link Andrei Emeltchenko
2012-10-16 15:01 ` [RFCv0 5/8] Bluetooth: AMP: Process Disc Physical Link complete evt Andrei Emeltchenko
2012-10-16 15:01 ` [RFCv0 6/8] Bluetooth: AMP: Remove hci_conn receiving error command status Andrei Emeltchenko
2012-10-16 15:01 ` [RFCv0 7/8] Bluetooth: Disconnect logical link when deleteing chan Andrei Emeltchenko
2012-10-16 15:01 ` [RFCv0 8/8] Bluetooth: Add put(hcon) when deleting hchan Andrei Emeltchenko
2012-10-17 17:07 ` [RFCv0 0/8] Handling physical and logical link Marcel Holtmann
2012-10-18 10:44   ` Andrei Emeltchenko
2012-10-25 12:20   ` [RFCv1 00/11] " Andrei Emeltchenko
2012-10-25 12:20     ` [RFCv1 01/11] Bluetooth: trivial: Remove unneeded assignment Andrei Emeltchenko
2012-10-25 13:06       ` Marcel Holtmann
2012-10-25 12:20     ` [RFCv1 02/11] Bluetooth: Use helper function sending EFS conf rsp Andrei Emeltchenko
2012-10-25 13:07       ` Marcel Holtmann
2012-10-25 12:20     ` [RFCv1 03/11] Bluetooth: AMP: Process Physical Link Complete evt Andrei Emeltchenko
2012-10-26 17:16       ` Mat Martineau
2012-10-29  9:22         ` Andrei Emeltchenko
2012-10-25 12:20     ` [RFCv1 04/11] Bluetooth: AMP: Process Logical Link complete evt Andrei Emeltchenko
2012-10-25 13:08       ` Marcel Holtmann
2012-10-25 12:20     ` [RFCv1 05/11] Bluetooth: AMP: Add Logical Link Create function Andrei Emeltchenko
2012-10-26 17:01       ` Mat Martineau
2012-10-29  9:24         ` Andrei Emeltchenko
2012-10-25 12:20     ` [RFCv1 06/11] Bluetooth: AMP: Process Disc Logical Link Andrei Emeltchenko
2012-10-25 12:20     ` [RFCv1 07/11] Bluetooth: AMP: Process Disc Physical Link Complete evt Andrei Emeltchenko
2012-10-25 12:20     ` [RFCv1 08/11] Bluetooth: AMP: Remove hci_conn receiving error command status Andrei Emeltchenko
2012-10-25 12:20     ` [RFCv1 09/11] Bluetooth: Disconnect logical link when deleteing chan Andrei Emeltchenko
2012-10-25 12:20     ` [RFCv1 10/11] Bluetooth: Add put(hcon) when deleting hchan Andrei Emeltchenko
2012-10-25 13:09       ` Marcel Holtmann
2012-10-25 15:22       ` Gustavo Padovan
2012-10-25 12:20     ` [RFCv1 11/11] Bluetooth: AMP: Check for hs_hcon instead of ctrl_id Andrei Emeltchenko
2012-10-25 13:09       ` Marcel Holtmann
2012-10-25 13:11     ` [RFCv1 00/11] Handling physical and logical link Marcel Holtmann
2012-10-25 13:35       ` Andrei Emeltchenko
2012-10-26 17:27         ` Mat Martineau
2012-10-30 15:52   ` [RFCv2 00/12] " Andrei Emeltchenko
2012-10-30 15:52     ` [RFCv2 01/12] Bluetooth: trivial: Fix braces style and remove empty line Andrei Emeltchenko
2012-10-30 16:45       ` Marcel Holtmann
2012-10-30 15:52     ` [RFCv2 02/12] Bluetooth: Save hs_hchan instead of hs_hcon in loglink complete Andrei Emeltchenko
2012-10-30 16:46       ` Marcel Holtmann
2012-10-30 15:52     ` [RFCv2 03/12] Bluetooth: Return correct L2CAP response type Andrei Emeltchenko
2012-10-30 16:49       ` Marcel Holtmann
2012-10-30 17:16         ` Andrei Emeltchenko
2012-10-30 17:48           ` Marcel Holtmann
2012-10-30 15:52     ` [RFCv2 04/12] Bluetooth: Derive remote and local amp id from chan struct Andrei Emeltchenko
2012-10-30 16:49       ` Marcel Holtmann
2012-10-30 15:52     ` [RFCv2 05/12] Bluetooth: AMP: Add Logical Link Create function Andrei Emeltchenko
2012-10-30 15:52     ` [RFCv2 06/12] Bluetooth: AMP: Process Disc Logical Link Andrei Emeltchenko
2012-10-30 15:52     ` [RFCv2 07/12] Bluetooth: AMP: Process Disc Physical Link Complete evt Andrei Emeltchenko
2012-10-30 15:53     ` [RFCv2 08/12] Bluetooth: AMP: Remove hci_conn receiving error command status Andrei Emeltchenko
2012-10-30 15:53     ` [RFCv2 09/12] Bluetooth: Disconnect logical link when deleteing chan Andrei Emeltchenko
2012-10-30 15:53     ` [RFCv2 10/12] Bluetooth: AMP: Check for hs_hcon instead of ctrl_id Andrei Emeltchenko
2012-10-30 16:50       ` Marcel Holtmann
2012-10-30 15:53     ` [RFCv2 11/12] Bluetooth: AMP: Use l2cap_physical_cfm in phylink complete evt Andrei Emeltchenko
2012-10-30 16:51       ` Marcel Holtmann
2012-10-30 15:53     ` [RFCv2 12/12] Bluetooth: Process Create Chan Request Andrei Emeltchenko
2012-10-30 16:53       ` Marcel Holtmann
2012-10-31 13:46   ` [PATCHv1 00/12] Handling physical and logical link fixes Andrei Emeltchenko
2012-10-31 13:46     ` [PATCHv1 01/12] Bluetooth: trivial: Fix braces style and remove empty line Andrei Emeltchenko
2012-10-31 13:46     ` [PATCHv1 02/12] Bluetooth: Save hs_hchan instead of hs_hcon in loglink complete Andrei Emeltchenko
2012-10-31 13:46     ` [PATCHv1 03/12] Bluetooth: Return correct L2CAP response type Andrei Emeltchenko
2012-10-31 13:46     ` [PATCHv1 04/12] Bluetooth: Derive remote and local amp id from chan struct Andrei Emeltchenko
2012-10-31 13:46     ` [PATCHv1 05/12] Bluetooth: AMP: Add Logical Link Create function Andrei Emeltchenko
2012-10-31 13:46     ` [PATCHv1 06/12] Bluetooth: AMP: Process Disc Logical Link Andrei Emeltchenko
2012-10-31 13:46     ` [PATCHv1 07/12] Bluetooth: AMP: Process Disc Physical Link Complete evt Andrei Emeltchenko
2012-10-31 13:46     ` [PATCHv1 08/12] Bluetooth: AMP: Remove hci_conn receiving error command status Andrei Emeltchenko
2012-10-31 13:46     ` [PATCHv1 09/12] Bluetooth: Disconnect logical link when deleteing chan Andrei Emeltchenko
2012-10-31 13:46     ` [PATCHv1 10/12] Bluetooth: AMP: Check for hs_hcon instead of ctrl_id Andrei Emeltchenko
2012-10-31 13:46     ` [PATCHv1 11/12] Bluetooth: AMP: Use l2cap_physical_cfm in phylink complete evt Andrei Emeltchenko
2012-10-31 18:51       ` Gustavo Padovan
2012-11-01 17:51       ` Mat Martineau
2012-11-02  7:48         ` Andrei Emeltchenko
2012-11-02 15:39           ` Mat Martineau
2012-11-12  9:26             ` Andrei Emeltchenko
2012-11-13 17:29               ` Mat Martineau [this message]
2012-11-13 22:49                 ` Marcel Holtmann
2012-11-14 12:19                 ` Andrei Emeltchenko
2012-10-31 13:46     ` [PATCHv1 12/12] Bluetooth: Process Create Chan Request Andrei Emeltchenko
2012-10-31 16:24       ` Marcel Holtmann
2012-11-01  8:55         ` Andrei Emeltchenko
2012-11-01 13:37         ` [PATCH 1/2] " Andrei Emeltchenko
2012-11-01 13:37           ` [PATCH 2/2] Bluetooth: Rename ctrl_id to remote_amp_id Andrei Emeltchenko
2012-11-02  0:31             ` Marcel Holtmann
2012-11-02  0:30           ` [PATCH 1/2] Bluetooth: Process Create Chan Request Marcel Holtmann

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=alpine.DEB.2.02.1211130911200.27104@mathewm-linux \
    --to=mathewm@codeaurora.org \
    --cc=Andrei.Emeltchenko.news@gmail.com \
    --cc=linux-bluetooth@vger.kernel.org \
    --cc=marcel@holtmann.org \
    /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;
as well as URLs for NNTP newsgroup(s).