From: Florian Grandel <fgrandel@gmail.com>
To: Arman Uguray <armansito@chromium.org>
Cc: BlueZ development <linux-bluetooth@vger.kernel.org>
Subject: Re: [PATCH v3 2/2] Bluetooth: mgmt: Start using multi-adv inst list
Date: Thu, 30 Apr 2015 17:46:44 +0200 [thread overview]
Message-ID: <55424E64.2000402@gmail.com> (raw)
In-Reply-To: <CAHrH25TvFm1ZTbVG51qpJ0HmcUhJMPHt+zqDvi9-VR2RUt_TLg@mail.gmail.com>
Hi Arman,
to answer your remaining review questions...
>> @@ -1044,11 +1047,13 @@ static u8 create_instance_adv_data(struct hci_dev *hdev, u8 instance, u8 *ptr)
>> }
>>
>> if (instance) {
>
> Maybe we should do this check earlier and just return 0 if instance
> doesn't exist. This code worked before since the only valid instances
> were 0x00 and 0x01. Now you may need to do a look up earlier and
> return 0 if instance is non-zero and hci_find_adv_instance returns
> NULL.
>
Agreed. I'm checking for this condition early on now and return 0 when
the current instance identifier is invalid for some reason.
>> -static void clear_adv_instance(struct hci_dev *hdev)
>> +static void clear_adv_instance(struct sock *sk, struct hci_dev *hdev,
>> + u8 instance)
>> {
>> - struct hci_request req;
>> -
>> - if (!hci_dev_test_flag(hdev, HCI_ADVERTISING_INSTANCE))
>> - return;
>> -
>> - if (hdev->adv_instance.timeout)
>> - cancel_delayed_work(&hdev->adv_instance.timeout_exp);
>> -
>> - memset(&hdev->adv_instance, 0, sizeof(hdev->adv_instance));
>> - advertising_removed(NULL, hdev, 1);
>> - hci_dev_clear_flag(hdev, HCI_ADVERTISING_INSTANCE);
>> -
>> - if (!hdev_is_powered(hdev) ||
>> - hci_dev_test_flag(hdev, HCI_ADVERTISING))
>> - return;
>> + struct adv_info *adv_instance, *n;
>> + int err;
>>
>> - hci_req_init(&req, hdev);
>> - disable_advertising(&req);
>> - hci_req_run(&req, NULL);
>
> Why did you remove this logic? Advertising needs to be disabled if
> HCI_ADVERTISING_INSTANCE is set and HCI_ADVERTISING wasn't. Hence most
> of the logic above (within this function) is still needed.
This was a serious oversight on my side. My intention was to deduplicate
code in remove_advertising(). While this is probably a good idea, I just
didn't implement it correctly. For the moment being I removed the
refactoring. I'll propose an improved patch later on. Just not now - my
change set is large enough without that change. ;-)
>
>> + /* A value of 0 indicates that all instances should be cleared. */
>> + if (instance == 0x00) {
>> + list_for_each_entry_safe(adv_instance, n,
>> + &hdev->adv_instances, list) {
>
> Didn't you add a hci_adv_instances_clear for this purpose? Now you
> have nested loops for iterating through the list and doing the lookup.
> If you've added this loop just to send the removed event, then perhaps
> it makes more sense to make advertising_removed public (like
> mgmt_advertising_removed) and to call it from hci.c. Or, just do a
> loop first to send the removed events and then call
> hci_adv_instances_clear.
I implemented the latter proposal.
>> @@ -4697,11 +4694,14 @@ static void set_advertising_complete(struct hci_dev *hdev, u8 status,
>> * set up earlier, then enable the advertising instance.
>> */
>> if (hci_dev_test_flag(hdev, HCI_ADVERTISING) ||
>> - !hci_dev_test_flag(hdev, HCI_ADVERTISING_INSTANCE))
>> + !hci_dev_test_flag(hdev, HCI_ADVERTISING_INSTANCE) ||
>> + list_empty(&hdev->adv_instances))
>
> We should make sure that the HCI_ADVERTISING_INSTANCE setting is set
> as long as hdev->adv_instances is non-empty and it's not set if the
> list is empty.
I introduced a TODO for that as there are several other similar cases in
the code. The code currently still relies on HCI_MAX_ADV_INSTANCES being
exactly one and should work correctly in that case. All places in the
code that need tweaking for real multi-adv support are marked with TODOs
now.
>
>> @@ -6882,24 +6883,37 @@ static void add_advertising_complete(struct hci_dev *hdev, u8 status,
>> if (status) {
>> + /* TODO: Start advertising another adv instance if any? */
>> hci_dev_clear_flag(hdev, HCI_ADVERTISING_INSTANCE);
>> - memset(&hdev->adv_instance, 0, sizeof(hdev->adv_instance));
>> - advertising_removed(cmd ? cmd->sk : NULL, hdev, 1);
>> +
>> + if (cmd) {
>
> If "cmd" is NULL for whatever reason, then we'll end up leaking the
> instance. Maybe there is a better way to propagate the pending
> instance ID?
I fixed that by introducing a "pending" flag in the adv_info struct.
This also catches other cases, e.g. when no new instance has been
introduced.
>> @@ -6981,38 +7015,31 @@ static int add_advertising(struct sock *sk, struct hci_dev *hdev,
>> goto unlock;
>> }
>>
>> + /* TODO: Trigger an advertising added event even when instance
>> + * advertising is already switched on?
>> + */
>
> With a single instance, what this prevents is sending an "added" event
> for an instance that was previously added. So the TODO doesn't make
> sense in that context but the new code needs to correctly abide by
> that logic. What you actually need to pay attention to is to not send
> any HCI commands to update advertising data every time you add a new
> instance. So maybe add a TODO for that.
I obviously didn't understand the purpose of this code. I refactored the
code to make it work in the way you propose at least for one instance
and introduced a TODO for the real multi-adv case.
> The patch is still a bit too large
> for linux-bluetooth standards and it's a bit difficult to get through,
> so if you can break it down into smaller logical pieces it will be
> easier for the others to review it.
I now split up the code in much more manageable pieces. This comes at
the cost, though, that e2e-tests (mgmt-tester) won't run any more if you
take away parts of the change set. I asked the question on the list,
whether that was ok, but this was probably overlooked. I assume, though,
that such a thing is valid as otherwise there would be no means to
introduce such a strongly coherent patch in multiple pieces. I'm making
sure though (git rebase -i --exec make) that the build will not break
for any of the pieces.
Thanks again for your great in-depth review!
Florian
prev parent reply other threads:[~2015-04-30 15:46 UTC|newest]
Thread overview: 172+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-04 15:43 [PATCH] Bluetooth: hci_core/mgmt: Change adv inst to list Florian Grandel
2015-04-05 18:21 ` [PATCH v2] " Florian Grandel
2015-04-09 9:49 ` Johan Hedberg
2015-04-09 10:28 ` Florian Grandel
2015-04-10 2:30 ` [PATCH v3 0/2] Bluetooth: Multi-Advertising Infrastructure Florian Grandel
2015-04-21 1:52 ` jerico.dev
2015-04-30 15:33 ` [PATCH v4 00/17] BlueZ/Bluetooth: Multi-advertising infrastructure Florian Grandel
2015-05-06 10:27 ` jerico.dev
2015-05-24 22:38 ` [PATCH v5 00/16] Bluetooth: " Florian Grandel
2015-05-25 0:52 ` Marcel Holtmann
2015-05-25 7:51 ` Florian Grandel
2015-05-26 0:34 ` [PATCH v6 " Florian Grandel
2015-05-27 19:23 ` Marcel Holtmann
2015-05-27 21:04 ` Florian Grandel
2015-05-31 1:20 ` Johan Hedberg
2015-06-01 12:19 ` Florian Grandel
2015-06-13 3:40 ` [PATCH v7 00/20] Bluetooth: Multi-advertising Florian Grandel
2015-06-18 1:16 ` [PATCH v8 00/20] Multi-advertising Florian Grandel
2015-06-18 16:58 ` Marcel Holtmann
2015-06-18 1:16 ` [PATCH v8 01/20] Bluetooth: hci_core/mgmt: Introduce multi-adv list Florian Grandel
2015-06-18 1:16 ` [PATCH v8 02/20] Bluetooth: hci_core/mgmt: move adv timeout to hdev Florian Grandel
2015-06-18 1:16 ` [PATCH v8 03/20] Bluetooth: mgmt: dry update_scan_rsp_data() Florian Grandel
2015-06-18 1:16 ` [PATCH v8 04/20] Bluetooth: mgmt: rename update_*_data_for_instance() Florian Grandel
2015-06-18 1:16 ` [PATCH v8 05/20] Bluetooth: mgmt: multi adv for read_adv_features() Florian Grandel
2015-06-18 1:16 ` [PATCH v8 06/20] Bluetooth: mgmt: multi adv for get_current_adv_instance() Florian Grandel
2015-06-18 1:16 ` [PATCH v8 07/20] Bluetooth: mgmt: multi adv for get_adv_instance_flags() Florian Grandel
2015-06-18 1:16 ` [PATCH v8 08/20] Bluetooth: mgmt: improve get_adv_instance_flags() readability Florian Grandel
2015-06-18 1:16 ` [PATCH v8 09/20] Bluetooth: mgmt: multi adv for enable_advertising() Florian Grandel
2015-06-18 1:16 ` [PATCH v8 10/20] Bluetooth: mgmt: multi adv for create_instance_scan_rsp_data() Florian Grandel
2015-06-18 1:16 ` [PATCH v8 11/20] Bluetooth: mgmt: multi adv for create_instance_adv_data() Florian Grandel
2015-06-18 1:16 ` [PATCH v8 12/20] Bluetooth: mgmt: multi adv for set_advertising*() Florian Grandel
2015-06-18 1:16 ` [PATCH v8 13/20] Bluetooth: mgmt: multi adv for clear_adv_instances() Florian Grandel
2015-06-18 1:16 ` [PATCH v8 14/20] Bluetooth: mgmt/hci_core: multi-adv for add_advertising*() Florian Grandel
2015-06-18 1:16 ` [PATCH v8 15/20] Bluetooth: mgmt: multi adv for remove_advertising*() Florian Grandel
2015-06-18 1:16 ` [PATCH v8 16/20] Bluetooth: mgmt: program multi-adv on power on Florian Grandel
2015-06-18 1:16 ` [PATCH v8 17/20] Bluetooth: mgmt: multi-adv for trigger_le_scan() Florian Grandel
2015-06-18 1:16 ` [PATCH v8 18/20] Bluetooth: mgmt: multi-adv for mgmt_reenable_advertising() Florian Grandel
2015-06-18 1:16 ` [PATCH v8 19/20] Bluetooth: hci_core: remove obsolete adv_instance Florian Grandel
2015-06-18 1:16 ` [PATCH v8 20/20] Bluetooth: hci_core: increase max adv inst Florian Grandel
2015-06-13 3:40 ` [PATCH v7 01/20] Bluetooth: hci_core/mgmt: Introduce multi-adv list Florian Grandel
2015-06-13 3:40 ` [PATCH v7 02/20] Bluetooth: hci_core/mgmt: move adv timeout to hdev Florian Grandel
2015-06-13 3:40 ` [PATCH v7 03/20] Bluetooth: mgmt: dry update_scan_rsp_data() Florian Grandel
2015-06-13 3:40 ` [PATCH v7 04/20] Bluetooth: mgmt: rename update_*_data_for_instance() Florian Grandel
2015-06-13 3:40 ` [PATCH v7 05/20] Bluetooth: mgmt: multi adv for read_adv_features() Florian Grandel
2015-06-13 3:40 ` [PATCH v7 06/20] Bluetooth: mgmt: multi adv for get_current_adv_instance() Florian Grandel
2015-06-13 3:41 ` [PATCH v7 07/20] Bluetooth: mgmt: multi adv for get_adv_instance_flags() Florian Grandel
2015-06-13 3:41 ` [PATCH v7 08/20] Bluetooth: mgmt: improve get_adv_instance_flags() readability Florian Grandel
2015-06-13 3:41 ` [PATCH v7 09/20] Bluetooth: mgmt: multi adv for enable_advertising() Florian Grandel
2015-06-13 3:41 ` [PATCH v7 10/20] Bluetooth: mgmt: multi adv for create_instance_scan_rsp_data() Florian Grandel
2015-06-13 3:41 ` [PATCH v7 11/20] Bluetooth: mgmt: multi adv for create_instance_adv_data() Florian Grandel
2015-06-13 3:41 ` [PATCH v7 12/20] Bluetooth: mgmt: multi adv for set_advertising*() Florian Grandel
2015-06-13 3:41 ` [PATCH v7 13/20] Bluetooth: mgmt: multi adv for clear_adv_instances() Florian Grandel
2015-06-13 3:41 ` [PATCH v7 14/20] Bluetooth: mgmt/hci_core: multi-adv for add_advertising*() Florian Grandel
2015-06-13 3:41 ` [PATCH v7 15/20] Bluetooth: mgmt: multi adv for remove_advertising*() Florian Grandel
2015-06-13 3:41 ` [PATCH v7 16/20] Bluetooth: mgmt: program multi-adv on power on Florian Grandel
2015-06-13 3:41 ` [PATCH v7 17/20] Bluetooth: mgmt: multi-adv for trigger_le_scan() Florian Grandel
2015-06-13 3:41 ` [PATCH v7 18/20] Bluetooth: mgmt: multi-adv for mgmt_reenable_advertising() Florian Grandel
2015-06-13 3:41 ` [PATCH v7 19/20] Bluetooth: hci_core: remove obsolete adv_instance Florian Grandel
2015-06-13 3:41 ` [PATCH v7 20/20] Bluetooth: hci_core: increase max adv inst Florian Grandel
2015-05-26 0:34 ` [PATCH v6 01/16] Bluetooth: hci_core: Introduce multi-adv inst list Florian Grandel
2015-05-26 0:34 ` [PATCH v6 02/16] Bluetooth: mgmt: dry update_scan_rsp_data() Florian Grandel
2015-05-26 0:34 ` [PATCH v6 03/16] Bluetooth: mgmt: multi adv for read_adv_features() Florian Grandel
2015-05-26 0:34 ` [PATCH v6 04/16] Bluetooth: mgmt: multi adv for get_current_adv_instance() Florian Grandel
2015-05-26 0:34 ` [PATCH v6 05/16] Bluetooth: mgmt: multi adv for get_adv_instance_flags() Florian Grandel
2015-05-26 0:34 ` [PATCH v6 06/16] Bluetooth: mgmt: improve get_adv_instance_flags() readability Florian Grandel
2015-05-26 0:34 ` [PATCH v6 07/16] Bluetooth: mgmt: multi adv for enable_advertising() Florian Grandel
2015-05-26 0:34 ` [PATCH v6 08/16] Bluetooth: mgmt: use current adv instance in set_advertising() Florian Grandel
2015-05-26 0:34 ` [PATCH v6 09/16] Bluetooth: mgmt: multi adv for create_instance_scan_rsp_data() Florian Grandel
2015-05-26 0:34 ` [PATCH v6 10/16] Bluetooth: mgmt: multi adv for create_instance_adv_data() Florian Grandel
2015-05-26 0:34 ` [PATCH v6 11/16] Bluetooth: mgmt: refactor update_*_data() Florian Grandel
2015-05-26 0:34 ` [PATCH v6 12/16] Bluetooth: mgmt: multi adv for set_advertising_complete() Florian Grandel
2015-05-26 0:34 ` [PATCH v6 13/16] Bluetooth: mgmt: multi adv for add_advertising() Florian Grandel
2015-05-26 0:34 ` [PATCH v6 14/16] Bluetooth: mgmt: multi adv for clear_adv_instances() Florian Grandel
2015-05-26 0:34 ` [PATCH v6 15/16] Bluetooth: mgmt: multi adv for remove_advertising() Florian Grandel
2015-05-26 0:34 ` [PATCH v6 16/16] Bluetooth: hci_core: remove obsolete adv_instance Florian Grandel
2015-05-24 22:38 ` [PATCH v5 01/16] Bluetooth: hci_core: Introduce multi-adv inst list Florian Grandel
2015-05-24 22:39 ` [PATCH v5 02/16] Bluetooth: mgmt: dry update_scan_rsp_data() Florian Grandel
2015-05-24 22:39 ` [PATCH v5 03/16] Bluetooth: mgmt: multi adv for read_adv_features() Florian Grandel
2015-05-24 22:39 ` [PATCH v5 04/16] Bluetooth: mgmt: multi adv for get_current_adv_instance() Florian Grandel
2015-05-24 22:39 ` [PATCH v5 05/16] Bluetooth: mgmt: multi adv for get_adv_instance_flags() Florian Grandel
2015-05-24 22:39 ` [PATCH v5 06/16] Bluetooth: mgmt: improve get_adv_instance_flags() readability Florian Grandel
2015-05-24 22:39 ` [PATCH v5 07/16] Bluetooth: mgmt: multi adv for enable_advertising() Florian Grandel
2015-05-24 22:39 ` [PATCH v5 08/16] Bluetooth: mgmt: use current adv instance in set_advertising() Florian Grandel
2015-05-24 22:39 ` [PATCH v5 09/16] Bluetooth: mgmt: multi adv for create_instance_scan_rsp_data() Florian Grandel
2015-05-24 22:39 ` [PATCH v5 10/16] Bluetooth: mgmt: multi adv for create_instance_adv_data() Florian Grandel
2015-05-24 22:39 ` [PATCH v5 11/16] Bluetooth: mgmt: refactor update_*_data() Florian Grandel
2015-05-24 22:39 ` [PATCH v5 12/16] Bluetooth: mgmt: multi adv for set_advertising_complete() Florian Grandel
2015-05-25 0:25 ` Marcel Holtmann
2015-05-25 8:03 ` Florian Grandel
2015-05-24 22:39 ` [PATCH v5 13/16] Bluetooth: mgmt: multi adv for add_advertising() Florian Grandel
2015-05-24 22:39 ` [PATCH v5 14/16] Bluetooth: mgmt: multi adv for clear_adv_instances() Florian Grandel
2015-05-24 22:39 ` [PATCH v5 15/16] Bluetooth: mgmt: multi adv for remove_advertising() Florian Grandel
2015-05-24 22:39 ` [PATCH v5 16/16] Bluetooth: hci_core: remove obsolete adv_instance Florian Grandel
2015-05-24 22:40 ` [BlueZ v5] tools/mgmt_tester: expect 0 rp when removing all adv inst Florian Grandel
2015-05-25 0:52 ` Marcel Holtmann
2015-05-25 7:53 ` Florian Grandel
2015-05-26 0:35 ` [BlueZ v6 0/4] tools/mgmt-tester: multi-advertising additions Florian Grandel
2015-05-26 1:22 ` [BlueZ v7 " Florian Grandel
2015-06-13 3:42 ` [BlueZ v8 00/15] doc/tests/btmgmt: multi-advertising Florian Grandel
2015-06-18 1:17 ` [BlueZ v9 00/16] Multi-advertising Florian Grandel
2015-06-18 5:55 ` Johan Hedberg
2015-06-18 7:11 ` Johan Hedberg
2015-06-18 10:19 ` Johan Hedberg
2015-06-18 1:17 ` [BlueZ v9 01/16] doc/mgmt-api: multi-adv implementation details Florian Grandel
2015-06-18 1:17 ` [BlueZ v9 02/16] doc/mgmt-api: fix typos Florian Grandel
2015-06-18 1:17 ` [BlueZ v9 03/16] tools/btmgmt: make inst duration configurable Florian Grandel
2015-06-18 1:17 ` [BlueZ v9 04/16] tools/mgmt-tester: error message when unexp params Florian Grandel
2015-06-18 1:17 ` [BlueZ v9 05/16] tools/mgmt-tester: expect 0 rp when removing all adv inst Florian Grandel
2015-06-18 1:17 ` [BlueZ v9 06/16] tools/mgmt-tester: comment add adv test setup Florian Grandel
2015-06-18 1:17 ` [BlueZ v9 07/16] tools/mgmt-tester: rename add adv tests Florian Grandel
2015-06-18 1:17 ` [BlueZ v9 08/16] tools/mgmt-tester: increase max adv inst Florian Grandel
2015-06-18 1:17 ` [BlueZ v9 09/16] tools/mgmt-tester: keep instances on power cycle Florian Grandel
2015-06-18 1:17 ` [BlueZ v9 10/16] tools/mgmt-tester: test adv inst override Florian Grandel
2015-06-18 1:17 ` [BlueZ v9 11/16] tools/mgmt-tester: make test timeout configurable Florian Grandel
2015-06-18 1:17 ` [BlueZ v9 12/16] tools/mgmt-tester: allow for event-only tests Florian Grandel
2015-06-18 1:17 ` [BlueZ v9 13/16] tools/mgmt-tester: test advertising timeout Florian Grandel
2015-06-18 1:17 ` [BlueZ v9 14/16] tools/mgmt-tester: test le off Florian Grandel
2015-06-18 1:17 ` [BlueZ v9 15/16] tools/mgmt-tester: fix duplicate code Florian Grandel
2015-06-18 1:17 ` [BlueZ v9 16/16] tools/mgmt-tester: test multi-adv Florian Grandel
2015-06-13 3:42 ` [BlueZ v8 01/15] doc/mgmt-api: multi-adv implementation details Florian Grandel
2015-06-15 11:33 ` Marcel Holtmann
2015-06-16 9:59 ` Florian Grandel
2015-06-13 3:42 ` [BlueZ v8 02/15] doc/mgmt-api: fix typos Florian Grandel
2015-06-13 3:42 ` [BlueZ v8 03/15] tools/btmgmt: make inst duration configurable Florian Grandel
2015-06-13 3:42 ` [BlueZ v8 04/15] tools/mgmt-tester: error message when unexp params Florian Grandel
2015-06-13 3:42 ` [BlueZ v8 05/15] tools/mgmt-tester: expect 0 rp when removing all adv inst Florian Grandel
2015-06-13 3:42 ` [BlueZ v8 06/15] tools/mgmt-tester: comment add adv test setup Florian Grandel
2015-06-13 3:42 ` [BlueZ v8 07/15] tools/mgmt-tester: rename add adv tests Florian Grandel
2015-06-13 3:42 ` [BlueZ v8 08/15] tools/mgmt-tester: increase max adv inst Florian Grandel
2015-06-13 3:42 ` [BlueZ v8 09/15] tools/mgmt-tester: test adv inst override Florian Grandel
2015-06-13 3:42 ` [BlueZ v8 10/15] tools/mgmt-tester: make test timeout configurable Florian Grandel
2015-06-13 3:42 ` [BlueZ v8 11/15] tools/mgmt-tester: allow for event-only tests Florian Grandel
2015-06-13 3:42 ` [BlueZ v8 12/15] tools/mgmt-tester: test advertising timeout Florian Grandel
2015-06-13 3:42 ` [BlueZ v8 13/15] tools/mgmt-tester: test le off Florian Grandel
2015-06-13 3:42 ` [BlueZ v8 14/15] tools/mgmt-tester: fix duplicate code Florian Grandel
2015-06-13 3:42 ` [BlueZ v8 15/15] tools/mgmt-tester: test multi-adv Florian Grandel
2015-05-26 1:22 ` [BlueZ v7 1/4] tools/mgmt_tester: expect 0 rp when removing all adv inst Florian Grandel
2015-05-26 1:22 ` [BlueZ v7 2/4] tools/mgmt-tester: comment add adv test setup Florian Grandel
2015-05-26 1:22 ` [BlueZ v7 3/4] tools/mgmt-tester: rename add adv tests Florian Grandel
2015-05-26 1:22 ` [BlueZ v7 4/4] tools/mgmt-tester: add an additional add adv test Florian Grandel
2015-05-26 0:35 ` [BlueZ v6 1/4] tools/mgmt_tester: expect 0 rp when removing all adv inst Florian Grandel
2015-05-26 0:35 ` [BlueZ v6 2/4] tools/mgmt-tester: comment add adv test setup Florian Grandel
2015-05-26 0:35 ` [BlueZ v6 3/4] tools/mgmt-tester: rename add adv tests Florian Grandel
2015-05-26 0:35 ` [BlueZ v6 4/4] tools/mgmt-tester: add an additional add adv test Florian Grandel
2015-04-30 15:33 ` [BlueZ v4 01/17] tools/mgmt_tester: expect 0 rp when removing all adv inst Florian Grandel
2015-04-30 15:33 ` [PATCH v4 02/17] Bluetooth: hci_core: Introduce multi-adv inst list Florian Grandel
2015-05-23 21:25 ` Marcel Holtmann
2015-05-24 21:50 ` Florian Grandel
2015-04-30 15:33 ` [PATCH v4 03/17] Bluetooth: mgmt: dry update_scan_rsp_data() Florian Grandel
2015-04-30 15:33 ` [PATCH v4 04/17] Bluetooth: mgmt: multi adv for read_adv_features() Florian Grandel
2015-05-23 21:25 ` Marcel Holtmann
2015-05-24 22:41 ` Florian Grandel
2015-04-30 15:33 ` [PATCH v4 05/17] Bluetooth: mgmt: multi adv for get_current_adv_instance() Florian Grandel
2015-04-30 15:33 ` [PATCH v4 06/17] Bluetooth: mgmt: multi adv for get_adv_instance_flags() Florian Grandel
2015-04-30 15:33 ` [PATCH v4 07/17] Bluetooth: mgmt: improve get_adv_instance_flags() readability Florian Grandel
2015-04-30 15:33 ` [PATCH v4 08/17] Bluetooth: mgmt: multi adv for enable_advertising() Florian Grandel
2015-04-30 15:33 ` [PATCH v4 09/17] Bluetooth: mgmt: use current adv instance in set_advertising() Florian Grandel
2015-04-30 15:33 ` [PATCH v4 10/17] Bluetooth: mgmt: multi adv for create_instance_scan_rsp_data() Florian Grandel
2015-04-30 15:33 ` [PATCH v4 11/17] Bluetooth: mgmt: multi adv for create_instance_adv_data() Florian Grandel
2015-04-30 15:33 ` [PATCH v4 12/17] Bluetooth: mgmt: refactor update_*_data() Florian Grandel
2015-04-30 15:33 ` [PATCH v4 13/17] Bluetooth: mgmt: multi adv for set_advertising_complete() Florian Grandel
2015-04-30 15:33 ` [PATCH v4 14/17] Bluetooth: mgmt: multi adv for add_advertising() Florian Grandel
2015-04-30 15:33 ` [PATCH v4 15/17] Bluetooth: mgmt: multi adv for clear_adv_instances() Florian Grandel
2015-04-30 15:33 ` [PATCH v4 16/17] Bluetooth: multi adv for remove_advertising() Florian Grandel
2015-04-30 15:33 ` [PATCH v4 17/17] Bluetooth: hci_core: Remove obsolete adv_instance Florian Grandel
2015-04-10 2:30 ` [PATCH v3 1/2] Bluetooth: hci_core: Introduce multi-adv inst list Florian Grandel
2015-04-24 0:37 ` Arman Uguray
2015-04-29 12:20 ` Florian Grandel
2015-04-10 2:30 ` [PATCH v3 2/2] Bluetooth: mgmt: Start using " Florian Grandel
2015-04-24 1:33 ` Arman Uguray
2015-04-24 11:43 ` Florian Grandel
2015-04-30 15:46 ` Florian Grandel [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=55424E64.2000402@gmail.com \
--to=fgrandel@gmail.com \
--cc=armansito@chromium.org \
--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.