Linux bluetooth development
 help / color / mirror / Atom feed
From: Johan Hedberg <johan.hedberg@gmail.com>
To: Marcel Holtmann <marcel@holtmann.org>
Cc: Andre Guedes <andre.guedes@openbossa.org>,
	"linux-bluetooth@vger.kernel.org"
	<linux-bluetooth@vger.kernel.org>
Subject: Re: [PATCH 03/17] Bluetooth: Stop scanning on LE connection
Date: Wed, 26 Feb 2014 22:26:49 +0200	[thread overview]
Message-ID: <20140226202649.GA30231@localhost.P-661HNU-F1> (raw)
In-Reply-To: <1D0457DC-259F-4680-A411-7D3060744C27@holtmann.org>

Hi Marcel,

On Wed, Feb 26, 2014, Marcel Holtmann wrote:
> >>> +static void hci_req_add_le_create_conn(struct hci_request *req,
> >>> +                                    struct hci_conn *conn)
> >>> +{
> >>> +     struct hci_cp_le_create_conn cp;
> >>> +     struct hci_dev *hdev = conn->hdev;
> >>> +     u8 own_addr_type;
> >>> +
> >>> +     memset(&cp, 0, sizeof(cp));
> >>> +
> >>> +     /* Update random address, but set require_privacy to false so
> >>> +      * that we never connect with an unresolvable address.
> >>> +      */
> >>> +     if (hci_update_random_address(req, false, &own_addr_type))
> >>> +             return;
> >>> +
> >>> +     conn->src_type = own_addr_type;
> >>> +
> >>> +     cp.scan_interval = cpu_to_le16(hdev->le_scan_interval);
> >>> +     cp.scan_window = cpu_to_le16(hdev->le_scan_window);
> >>> +     bacpy(&cp.peer_addr, &conn->dst);
> >>> +     cp.peer_addr_type = conn->dst_type;
> >>> +     cp.own_address_type = conn->src_type;
> >> 
> >> the reason why you get the own_addr_type when setting the random
> >> address is to actually use it here.
> >> 
> >> This is important since in cases where LE Privacy is enabled and we
> >> are using RPA, we want the random address used.
> > 
> > Year, I'm aware of it. 'own_addr_type' is assigned to
> > 'conn->src_type'. Then, 'conn->src_type' is used in
> > 'cp.own_address_type'.
> > 
> > IOW:
> >        conn->src_type = own_addr_type;
> >        ...
> >        cp.own_address_type = conn->src_type;
> > 
> > Or am I missing something?
> 
> the own_addr_type refers to the identity address.

No, it refers to whatever we want to pass to the HCI command.

> That is either the public address or a static random address. Based on
> which one it is the identity address type aka own_addr_type is either
> 0x00 or 0x01.

What's a bit confusing here is that in all other places we assign the
returned value directly to cp.own_addr_type and the hci_create_le_conn
function always takes care of updating the conn->src_type value. Now
that the hci_create_le_conn function gets removed in the patch set
however this new function becomes responsible for updating
conn->src_type. Nevertheless, I'd keep the original style from
hci_create_le_conn which assigns the same own_addr_type variable to both
conn->src_type as well as cp.own_addr_type.

In general what would help a lot in avoiding this kind of confusion is
to have proper code comments explaining what we're doing and more
importantly why we're doing it. The essential part here is that we track
the type used for HCI_LE_Create_Connection as long as the connection
attempt is in progress and update it to match the Identity Address as
soon as the connection is successful.

Johan

  reply	other threads:[~2014-02-26 20:26 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-25 21:01 [PATCH 00/17] LE auto connection Andre Guedes
2014-02-25 21:01 ` [PATCH 01/17] Bluetooth: Create hci_req_add_le_scan_disable helper Andre Guedes
2014-02-25 21:01 ` [PATCH 02/17] Bluetooth: Declare le_conn_failed in hci_core.h Andre Guedes
2014-02-25 21:01 ` [PATCH 03/17] Bluetooth: Stop scanning on LE connection Andre Guedes
2014-02-26  6:23   ` Marcel Holtmann
2014-02-26 19:34     ` Andre Guedes
2014-02-26 19:50       ` Marcel Holtmann
2014-02-26 20:26         ` Johan Hedberg [this message]
2014-02-25 21:01 ` [PATCH 04/17] Bluetooth: Remove unused function Andre Guedes
2014-02-25 21:01 ` [PATCH 05/17] Bluetooth: Refactor HCI connection code Andre Guedes
2014-02-25 21:01 ` [PATCH 06/17] Bluetooth: Move address type conversion to outside hci_connect_le Andre Guedes
2014-02-25 21:01 ` [PATCH 07/17] Bluetooth: Introduce hdev->pend_le_conn list Andre Guedes
2014-02-25 21:01 ` [PATCH 08/17] Bluetooth: Introduce LE auto connection infrastructure Andre Guedes
2014-02-26  6:31   ` Marcel Holtmann
2014-02-26 19:34     ` Andre Guedes
2014-02-25 21:01 ` [PATCH 09/17] Bluetooth: Introduce LE auto connect options Andre Guedes
2014-02-25 21:01 ` [PATCH 10/17] Bluetooth: Connection parameters and auto connection Andre Guedes
2014-02-26  6:33   ` Marcel Holtmann
2014-02-26 19:34     ` Andre Guedes
2014-02-26 19:52       ` Marcel Holtmann
2014-02-25 21:01 ` [PATCH 11/17] Bluetooth: Temporarily stop background scanning on discovery Andre Guedes
2014-02-25 21:01 ` [PATCH 12/17] Bluetooth: Auto connection and power on Andre Guedes
2014-02-25 21:01 ` [PATCH 13/17] Bluetooth: Connection parameters and resolvable address Andre Guedes
2014-02-26  6:37   ` Marcel Holtmann
2014-02-26 19:34     ` Andre Guedes
2014-02-25 21:01 ` [PATCH 14/17] Bluetooth: Support resolvable private addresses Andre Guedes
2014-02-25 21:01 ` [PATCH 15/17] Bluetooth: Add le_auto_conn file on debugfs Andre Guedes
2014-02-26  6:41   ` Marcel Holtmann
2014-02-26 19:35     ` Andre Guedes
2014-02-25 21:01 ` [PATCH 16/17] Bluetooth: Create hci_req_add_le_passive_scan helper Andre Guedes
2014-02-26  6:44   ` Marcel Holtmann
2014-02-26 19:35     ` Andre Guedes
2014-02-25 21:01 ` [PATCH 17/17] Bluetooth: Update background scan parameters Andre Guedes
2014-02-26  6:47   ` Marcel Holtmann
2014-02-26 19:35     ` Andre Guedes

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=20140226202649.GA30231@localhost.P-661HNU-F1 \
    --to=johan.hedberg@gmail.com \
    --cc=andre.guedes@openbossa.org \
    --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