From: Mat Martineau <mathewm@codeaurora.org>
To: Andrei Emeltchenko <Andrei.Emeltchenko.news@gmail.com>
Cc: linux-bluetooth@vger.kernel.org, gustavo@padovan.org,
pkrystad@codeaurora.org
Subject: Re: [RFCv0 06/21] Bluetooth: Channel move request handling
Date: Fri, 27 Jul 2012 09:54:03 -0700 (PDT) [thread overview]
Message-ID: <alpine.DEB.2.02.1207270758080.6052@mathewm-linux> (raw)
In-Reply-To: <20120726135924.GC2686@aemeltch-MOBL1>
Hi Andrei -
On Thu, 26 Jul 2012, Andrei Emeltchenko wrote:
> Hi Mat,
>
> On Wed, Jul 25, 2012 at 04:50:58PM -0700, Mat Martineau wrote:
>
> ...
>
>> static void l2cap_chan_ready(struct l2cap_chan *chan)
>> {
>> @@ -4117,7 +4148,67 @@ static inline int l2cap_move_channel_req(struct l2cap_conn *conn,
>>
>> chan = l2cap_get_chan_by_dcid(conn, icid);
>>
>> - /* Placeholder: Always refuse */
>> + if (!chan)
>> + goto send_move_response;
>> +
>> + if (chan->scid < L2CAP_CID_DYN_START || (chan->mode != L2CAP_MODE_ERTM
>> + && chan->mode != L2CAP_MODE_STREAMING))
>
> I think if we add here line below the code would be more understandable
> and following the same style.
> "result = L2CAP_MR_NOT_ALLOWED;"
>
Ok.
>> + goto send_move_response;
>> +
>> + if (chan->chan_id == req->dest_amp_id) {
>> + result = L2CAP_MR_SAME_ID;
>> + goto send_move_response;
>> + }
>> +
>> + if (req->dest_amp_id) {
>> + struct hci_dev *hdev;
>> + hdev = hci_dev_get(req->dest_amp_id);
>> + if (!hdev || !test_bit(HCI_UP, &hdev->flags)) {
>
> Again here we shall check dev_type.
>
Right.
>> + if (hdev)
>> + hci_dev_put(hdev);
>> +
>> + result = L2CAP_MR_BAD_ID;
>> + goto send_move_response;
>> + }
>> + hci_dev_put(hdev);
>> + }
>> +
>> + if (((chan->move_state != L2CAP_MOVE_STABLE &&
>> + chan->move_state != L2CAP_MOVE_WAIT_PREPARE) ||
>> + chan->move_role != L2CAP_MOVE_ROLE_NONE) &&
>> + bacmp(conn->src, conn->dst) > 0) {
>> + result = L2CAP_MR_COLLISION;
>> + goto send_move_response;
>> + }
>> +
>> + if (chan->chan_policy == BT_CHANNEL_POLICY_BREDR_ONLY) {
>> + result = L2CAP_MR_NOT_ALLOWED;
>> + goto send_move_response;
>> + }
>> +
>> + chan->move_cmd_ident = cmd->ident;
>
> BTW: Why do we handle ident in a special way for channel move?
At the time I wrote the code, I thought that chan->ident was only used
to store idents of sent requests, not received requests. But it does
look like it is also used for storing received idents for use in
sending responses. chan->ident could be used as long as move
collisions are handled correctly (where a move request is received
when a move response is expected).
--
Mat Martineau
Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum
next prev parent reply other threads:[~2012-07-27 16:54 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-25 23:50 [RFCv0 00/21] L2CAP signaling for AMP channel create/move Mat Martineau
2012-07-25 23:50 ` [RFCv0 01/21] Bluetooth: Add new l2cap_chan struct members for high speed channels Mat Martineau
2012-07-25 23:50 ` [RFCv0 02/21] Bluetooth: Factor out common L2CAP connection code Mat Martineau
2012-07-25 23:50 ` [RFCv0 03/21] Bluetooth: Add L2CAP create channel request handling Mat Martineau
2012-07-26 13:13 ` Andrei Emeltchenko
2012-07-26 15:04 ` Mat Martineau
2012-07-26 19:43 ` Andrei Emeltchenko
2012-07-25 23:50 ` [RFCv0 04/21] Bluetooth: Process create response and connect response identically Mat Martineau
2012-08-14 10:12 ` Andrei Emeltchenko
2012-08-14 17:25 ` Mat Martineau
2012-07-25 23:50 ` [RFCv0 05/21] Bluetooth: Lookup channel id for channel move Mat Martineau
2012-07-26 13:30 ` Andrei Emeltchenko
2012-07-26 15:07 ` Mat Martineau
2012-07-25 23:50 ` [RFCv0 06/21] Bluetooth: Channel move request handling Mat Martineau
2012-07-26 13:59 ` Andrei Emeltchenko
2012-07-27 16:54 ` Mat Martineau [this message]
2012-08-06 8:44 ` Andrei Emeltchenko
2012-08-06 16:33 ` Mat Martineau
2012-08-07 8:31 ` Andrei Emeltchenko
2012-07-25 23:50 ` [RFCv0 07/21] Bluetooth: Add new ERTM receive states for channel move Mat Martineau
2012-07-25 23:51 ` [RFCv0 08/21] Bluetooth: Add move channel confirm handling Mat Martineau
2012-07-26 14:28 ` Andrei Emeltchenko
2012-07-26 15:16 ` Mat Martineau
2012-07-25 23:51 ` [RFCv0 09/21] Bluetooth: Move channel response Mat Martineau
2012-07-25 23:51 ` [RFCv0 10/21] Bluetooth: Add logical link confirm Mat Martineau
2012-07-26 14:41 ` Andrei Emeltchenko
2012-07-26 15:24 ` Mat Martineau
2012-07-25 23:51 ` [RFCv0 11/21] Bluetooth: Add move confirm response handling Mat Martineau
2012-07-26 14:45 ` Andrei Emeltchenko
2012-07-26 15:33 ` Mat Martineau
2012-07-25 23:51 ` [RFCv0 12/21] Bluetooth: Add state to hci_chan Mat Martineau
2012-07-26 19:54 ` Andrei Emeltchenko
2012-07-25 23:51 ` [RFCv0 13/21] Bluetooth: Indentation fixes Mat Martineau
2012-07-25 23:51 ` [RFCv0 14/21] Bluetooth: Handle physical link completion Mat Martineau
2012-08-15 13:51 ` Andrei Emeltchenko
2012-08-15 16:56 ` Mat Martineau
2012-08-16 7:23 ` Andrei Emeltchenko
2012-07-25 23:51 ` [RFCv0 15/21] Bluetooth: Enable data sends on AMP controller Mat Martineau
2012-07-25 23:51 ` [RFCv0 16/21] Bluetooth: Do not send data during channel move Mat Martineau
2012-07-25 23:51 ` [RFCv0 17/21] Bluetooth: Configure appropriate timeouts for AMP controllers Mat Martineau
2012-07-25 23:51 ` [RFCv0 18/21] Bluetooth: Ignore BR/EDR packet size constraints when fragmenting for AMP Mat Martineau
2012-07-25 23:51 ` [RFCv0 19/21] Bluetooth: Tie AMP link setup to connect/disconnect Mat Martineau
2012-07-25 23:51 ` [RFCv0 20/21] Bluetooth: Do not process ERTM reject during move Mat Martineau
2012-07-25 23:51 ` [RFCv0 21/21] Bluetooth: Start channel move when socket option is changed Mat Martineau
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.1207270758080.6052@mathewm-linux \
--to=mathewm@codeaurora.org \
--cc=Andrei.Emeltchenko.news@gmail.com \
--cc=gustavo@padovan.org \
--cc=linux-bluetooth@vger.kernel.org \
--cc=pkrystad@codeaurora.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