All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marcel Holtmann <marcel@holtmann.org>
To: Jaganath Kanakkassery <jaganath.k.os@gmail.com>
Cc: linux-bluetooth@vger.kernel.org,
	Jaganath Kanakkassery <jaganathx.kanakkassery@intel.com>
Subject: Re: [PATCH v4 11/13] Bluetooth: Use ext adv for directed adv
Date: Sat, 14 Jul 2018 20:56:13 +0200	[thread overview]
Message-ID: <E64F7C6F-2280-466B-AB2B-2E68E4E4DC22@holtmann.org> (raw)
In-Reply-To: <1531301495-14479-12-git-send-email-jaganathx.kanakkassery@intel.com>

Hi Jaganath,

> This patch does extended advertising for directed advertising
> if the controller supportes. Instance 0 is used for directed
> advertising.
> 
> Signed-off-by: Jaganath Kanakkassery <jaganathx.kanakkassery@intel.com>
> ---
> net/bluetooth/hci_conn.c | 67 ++++++++++++++++++++++++++++++++----------------
> 1 file changed, 45 insertions(+), 22 deletions(-)
> 
> diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c
> index 5d421a2..fc27bd8 100644
> --- a/net/bluetooth/hci_conn.c
> +++ b/net/bluetooth/hci_conn.c
> @@ -870,35 +870,58 @@ static void hci_req_directed_advertising(struct hci_request *req,
> 					 struct hci_conn *conn)
> {
> 	struct hci_dev *hdev = req->hdev;
> -	struct hci_cp_le_set_adv_param cp;
> 	u8 own_addr_type;
> 	u8 enable;
> 
> -	/* Clear the HCI_LE_ADV bit temporarily so that the
> -	 * hci_update_random_address knows that it's safe to go ahead
> -	 * and write a new random address. The flag will be set back on
> -	 * as soon as the SET_ADV_ENABLE HCI command completes.
> -	 */
> -	hci_dev_clear_flag(hdev, HCI_LE_ADV);
> +	if (ext_adv_capable(hdev)) {
> +		struct hci_cp_le_set_ext_adv_params cp;
> 
> -	/* Set require_privacy to false so that the remote device has a
> -	 * chance of identifying us.
> -	 */
> -	if (hci_update_random_address(req, false, conn_use_rpa(conn),
> -				      &own_addr_type) < 0)
> -		return;
> +		memset(&cp, 0, sizeof(cp));
> 
> -	memset(&cp, 0, sizeof(cp));
> -	cp.type = LE_ADV_DIRECT_IND;
> -	cp.own_address_type = own_addr_type;
> -	cp.direct_addr_type = conn->dst_type;
> -	bacpy(&cp.direct_addr, &conn->dst);
> -	cp.channel_map = hdev->le_adv_channel_map;
> +		cp.evt_properties = cpu_to_le16(LE_LEGACY_ADV_DIRECT_IND);
> +		cp.own_addr_type = own_addr_type;
> +		cp.channel_map = hdev->le_adv_channel_map;
> +		cp.tx_power = 127;

Use the proper constant here. Or maybe we actually want to use hdev->adv_tx_power here instead. As I mentioned in early patches we want to keep the behavior of what legacy advertising does.

> +		cp.primary_phy = HCI_ADV_PHY_1M;
> +		cp.secondary_phy = HCI_ADV_PHY_1M;
> +		cp.handle = 0; /* Use instance 0 for directed adv */
> +		cp.own_addr_type = own_addr_type;
> +		cp.peer_addr_type = conn->dst_type;
> +		bacpy(&cp.peer_addr, &conn->dst);
> +
> +		hci_req_add(req, HCI_OP_LE_SET_EXT_ADV_PARAMS, sizeof(cp), &cp);
> 
> -	hci_req_add(req, HCI_OP_LE_SET_ADV_PARAM, sizeof(cp), &cp);
> +		__hci_req_enable_ext_advertising(req);
> +	} else {
> +		struct hci_cp_le_set_adv_param cp;
> +
> +		/* Clear the HCI_LE_ADV bit temporarily so that the
> +		 * hci_update_random_address knows that it's safe to go ahead
> +		 * and write a new random address. The flag will be set back on
> +		 * as soon as the SET_ADV_ENABLE HCI command completes.
> +		 */
> +		hci_dev_clear_flag(hdev, HCI_LE_ADV);
> 
> -	enable = 0x01;
> -	hci_req_add(req, HCI_OP_LE_SET_ADV_ENABLE, sizeof(enable), &enable);
> +		/* Set require_privacy to false so that the remote device has a
> +		 * chance of identifying us.
> +		 */
> +		if (hci_update_random_address(req, false, conn_use_rpa(conn),
> +					      &own_addr_type) < 0)
> +			return;
> +
> +		memset(&cp, 0, sizeof(cp));
> +		cp.type = LE_ADV_DIRECT_IND;
> +		cp.own_address_type = own_addr_type;
> +		cp.direct_addr_type = conn->dst_type;
> +		bacpy(&cp.direct_addr, &conn->dst);
> +		cp.channel_map = hdev->le_adv_channel_map;
> +
> +		hci_req_add(req, HCI_OP_LE_SET_ADV_PARAM, sizeof(cp), &cp);
> +
> +		enable = 0x01;
> +		hci_req_add(req, HCI_OP_LE_SET_ADV_ENABLE, sizeof(enable),
> +			    &enable);
> +	}
> 
> 	conn->state = BT_CONNECT;
> }

Regards

Marcel


  reply	other threads:[~2018-07-14 18:56 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-11  9:31 [PATCH v4 00/13] Bluetooth: Extended Adv, Scan, Connection and PHY support Jaganath Kanakkassery
2018-07-11  9:31 ` [PATCH v4 01/13] Bluetooth: Define default phys in hdev and set 1M as default Jaganath Kanakkassery
2018-07-14 16:47   ` Marcel Holtmann
2018-07-11  9:31 ` [PATCH v4 02/13] Bluetooth: Implement Get PHY Configuration mgmt command Jaganath Kanakkassery
2018-07-14 17:00   ` Marcel Holtmann
2018-07-15  7:56     ` Jaganath K
2018-07-16 13:08       ` Marcel Holtmann
2018-07-16 13:46         ` Jaganath K
2018-07-11  9:31 ` [PATCH v4 03/13] Bluetooth: Implement Set PHY Confguration command Jaganath Kanakkassery
2018-07-14 17:18   ` Marcel Holtmann
2018-07-15  9:36     ` Jaganath K
2018-07-16 13:14       ` Marcel Holtmann
2018-07-11  9:31 ` [PATCH v4 04/13] Bluetooth: Set Scan PHYs based on selected PHYs by user Jaganath Kanakkassery
2018-07-14 17:24   ` Marcel Holtmann
2018-07-11  9:31 ` [PATCH v4 05/13] Bluetooth: Handle extended ADV PDU types Jaganath Kanakkassery
2018-07-14 17:28   ` Marcel Holtmann
2018-07-15  9:52     ` Jaganath K
2018-07-16 13:09       ` Marcel Holtmann
2018-07-11  9:31 ` [PATCH v4 06/13] Bluetooth: Use selected PHYs in extended connect Jaganath Kanakkassery
2018-07-14 17:30   ` Marcel Holtmann
2018-07-11  9:31 ` [PATCH v4 07/13] Bluetooth: Read no of adv sets during init Jaganath Kanakkassery
2018-07-14 17:32   ` Marcel Holtmann
2018-07-16  6:27     ` Jaganath K
2018-07-16 13:18       ` Marcel Holtmann
2018-07-16 13:51         ` Jaganath K
2018-07-11  9:31 ` [PATCH v4 08/13] Bluetooth: Impmlement extended adv enable Jaganath Kanakkassery
2018-07-14 18:38   ` Marcel Holtmann
2018-07-16  8:12     ` Jaganath K
2018-07-11  9:31 ` [PATCH v4 09/13] Bluetooth: Use Set ext adv/scan rsp data if controller supports Jaganath Kanakkassery
2018-07-14 18:47   ` Marcel Holtmann
2018-07-11  9:31 ` [PATCH v4 10/13] Bluetooth: Implement disable and removal of adv instance Jaganath Kanakkassery
2018-07-14 18:50   ` Marcel Holtmann
2018-07-16  8:21     ` Jaganath K
2018-07-11  9:31 ` [PATCH v4 11/13] Bluetooth: Use ext adv for directed adv Jaganath Kanakkassery
2018-07-14 18:56   ` Marcel Holtmann [this message]
2018-07-11  9:31 ` [PATCH v4 12/13] Bluetooth: Implement Set ADV set random address Jaganath Kanakkassery
2018-07-14 20:52   ` Marcel Holtmann
2018-07-16  9:57     ` Jaganath K
2018-07-11  9:31 ` [PATCH v4 13/13] Bluetooth: Implement secondary advertising on different PHYs Jaganath Kanakkassery

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=E64F7C6F-2280-466B-AB2B-2E68E4E4DC22@holtmann.org \
    --to=marcel@holtmann.org \
    --cc=jaganath.k.os@gmail.com \
    --cc=jaganathx.kanakkassery@intel.com \
    --cc=linux-bluetooth@vger.kernel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.