Hi Marcel, Luiz, > -----Original Message----- > From: Luiz Augusto von Dentz [mailto:luiz.dentz@xxxxxxxxx] > Sent: Thursday, September 27, 2018 4:47 PM > To: Marcel Holtmann <marcel@xxxxxxxxxxxx> > Cc: Panda, Bharat B <bharat.b.panda@xxxxxxxxx>; linux- > bluetooth@xxxxxxxxxxxxxxx > Subject: Re: [PATCH] support fast advertising interval > > Hi Marcel, Bharat, > > On Thu, Sep 27, 2018 at 1:57 PM, Marcel Holtmann <marcel@xxxxxxxxxxxx> > wrote: > > Hi Bharat, > > > >> Changes made to add support for fast advertising interval as per core > >> 4.1 specification, section 9.3.11.2. > >> > >> A peripheral device enetering any of the following GAP modes and > >> sending either non-connectable advertising events or scannable > >> undirected advertising events should use adv_fast_interval2(100ms - > >> 150ms) for adv_fast_period(30s). > >> - Non-Discoverable Mode > >> - Non-Connectable Mode > >> - Limited Discoverable Mode > >> - General Discoverable Mode > > > > can we also get a patch documenting this in mgmt-api.txt in bluez.git. I will send a separate patch for same following v2 for current patch. > > > >> > >> Signed-off-by: Bharat Bhusan Panda <bharat.b.panda@xxxxxxxxx> > >> --- > >> include/net/bluetooth/hci_core.h | 2 ++ > >> net/bluetooth/hci_request.c | 22 ++++++++++++++++++++++ > >> 2 files changed, 24 insertions(+) > >> > >> diff --git a/include/net/bluetooth/hci_core.h > >> b/include/net/bluetooth/hci_core.h > >> index b619a19..2fe908c 100644 > >> --- a/include/net/bluetooth/hci_core.h > >> +++ b/include/net/bluetooth/hci_core.h > >> @@ -1456,6 +1456,8 @@ struct hci_mgmt_chan { > >> #define DISCOV_INTERLEAVED_INQUIRY_LEN 0x04 > >> #define DISCOV_BREDR_INQUIRY_LEN 0x08 > >> #define DISCOV_LE_RESTART_DELAY msecs_to_jiffies(200) /* msec > */ > >> +#define DISCOV_LE_FAST_ADV_INT_MIN 100 /* msec */ > >> +#define DISCOV_LE_FAST_ADV_INT_MAX 150 /* msec */ > >> > >> void mgmt_fill_version_info(void *ver); int mgmt_new_settings(struct > >> hci_dev *hdev); diff --git a/net/bluetooth/hci_request.c > >> b/net/bluetooth/hci_request.c index 66c0781..5cf3ef9 100644 > >> --- a/net/bluetooth/hci_request.c > >> +++ b/net/bluetooth/hci_request.c > >> @@ -1005,6 +1005,28 @@ void __hci_req_enable_advertising(struct > hci_request *req) > >> else > >> cp.type = LE_ADV_NONCONN_IND; > >> > >> + /* As per core 4.1 spec, section 9.3.11.2: A peripheral device > >> + * enetering any of the following GAP modes and sending either > > > > Fix the typo please. > > > >> + * non-connectable advertising events or scannable undirected > >> + * advertising events should use adv_fast_interval2(100ms - 150ms) > >> + * for adv_fast_period(30s). > >> + * > >> + * - Non-Discoverable Mode > >> + * - Non-Connectable Mode > >> + * - Limited Discoverable Mode > >> + * - General Discoverable Mode > >> + */ > >> + if ((cp.type == LE_ADV_NONCONN_IND) || (cp.type = > >> + LE_ADV_SCAN_IND)) { > > > > This extra (x == y) parentheses are not needed. > > Btw the second part of the expression seem wrong, it is assigning not > comparing. Yes, the assignment was always making the condition true. I have fixed the typo and retested the patch working. Patch v2 will be followed with the fix. > > > > >> + if ((hci_dev_test_flag(hdev, HCI_DISCOVERABLE)) || > >> + (hci_dev_test_flag(hdev, HCI_LIMITED_DISCOVERABLE)) || > >> + (hdev->discovery.limited == true)) { > > > > And this is wrongly aligned. In addition, you need a bit more comment text > above explains on what are the conditions. > > > >> + cp.min_interval = > >> + cpu_to_le16(DISCOV_LE_FAST_ADV_INT_MIN); > >> + cp.max_interval = > >> + cpu_to_le16(DISCOV_LE_FAST_ADV_INT_MAX); > >> + } > >> + } > >> + > >> cp.own_address_type = own_addr_type; > >> cp.channel_map = hdev->le_adv_channel_map; > > > > Regards > > > > Marcel > > > > > > -- > Luiz Augusto von Dentz Regards, Bharat