Re: [PATCH] Bluetooth: Fix - Remove adv set for directed advertising

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Marcel

On Thu, Feb 20, 2020 at 1:07 PM Marcel Holtmann <marcel@xxxxxxxxxxxx> wrote:
>
> Hi Sathish,
>
> > Extended advertising Data is set during bluetooth initialization
> > by default which causes InvalidHCICommandParameters when setting
> > Extended advertising parameters.
> >
> > As per Core Spec 5.2 Vol 2, PART E, Sec 7.8.53, for
> > advertising_event_property LE_LEGACY_ADV_DIRECT_IND does not
> > supports advertising data when the advertising set already
> > contains some, the controller shall return erroc code
> > 'InvalidHCICommandParameters(0x12).
> >
> > So it is required to remove adv set for handle 0x00. since we use
> > instance 0 for directed adv.
> >
> > Signed-off-by: Sathish Narsimman <sathish.narasimman@xxxxxxxxx>
> > ---
> > include/net/bluetooth/hci.h |  2 ++
> > net/bluetooth/hci_conn.c    | 10 ++++++++++
> > net/bluetooth/hci_request.c |  5 +++++
> > net/bluetooth/hci_request.h |  1 +
> > 4 files changed, 18 insertions(+)
> >
> > diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h
> > index 6293bdd7d862..0d7e36c54733 100644
> > --- a/include/net/bluetooth/hci.h
> > +++ b/include/net/bluetooth/hci.h
> > @@ -1724,6 +1724,8 @@ struct hci_cp_le_set_ext_scan_rsp_data {
> >
> > #define LE_SET_ADV_DATA_NO_FRAG               0x01
> >
> > +#define HCI_OP_LE_REMOVE_ADV_SET     0x203c
> > +
> > #define HCI_OP_LE_CLEAR_ADV_SETS      0x203d
> >
> > #define HCI_OP_LE_SET_ADV_SET_RAND_ADDR       0x2035
> > diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c
> > index 65fa44cbe514..1887da39a93d 100644
> > --- a/net/bluetooth/hci_conn.c
> > +++ b/net/bluetooth/hci_conn.c
> > @@ -898,6 +898,16 @@ static void hci_req_directed_advertising(struct hci_request *req,
> >               cp.peer_addr_type = conn->dst_type;
> >               bacpy(&cp.peer_addr, &conn->dst);
> >
> > +             /* As per Core Spec 5.2 Vol 2, PART E, Sec 7.8.53, for
> > +              * advertising_event_property LE_LEGACY_ADV_DIRECT_IND
> > +              * does not supports advertising data when the advertising set already
> > +              * contains some, the controller shall return erroc code 'Invalid
> > +              * HCI Command Parameters(0x12).
> > +              * So it is required to remove adv set for handle 0x00. since we use
> > +              * instance 0 for directed adv.
> > +              */
> > +             hci_req_add(req, HCI_OP_LE_REMOVE_ADV_SET, sizeof(cp.handle), &cp.handle);
> > +
> >               hci_req_add(req, HCI_OP_LE_SET_EXT_ADV_PARAMS, sizeof(cp), &cp);
> >
> >               if (own_addr_type == ADDR_LE_DEV_RANDOM &&
> > diff --git a/net/bluetooth/hci_request.c b/net/bluetooth/hci_request.c
> > index 2a1b64dbf76e..63da7acbb48c 100644
> > --- a/net/bluetooth/hci_request.c
> > +++ b/net/bluetooth/hci_request.c
> > @@ -1550,6 +1550,11 @@ int hci_get_random_address(struct hci_dev *hdev, bool require_privacy,
> >       return 0;
> > }
> >
> > +void __hci_req_remove_adv_set(struct hci_request *req, u8 handle)
> > +{
> > +     hci_req_add(req, HCI_OP_LE_REMOVE_ADV_SET, sizeof(handle), &handle);
> > +}
> > +
> > void __hci_req_clear_ext_adv_sets(struct hci_request *req)
> > {
> >       hci_req_add(req, HCI_OP_LE_CLEAR_ADV_SETS, 0, NULL);
> > diff --git a/net/bluetooth/hci_request.h b/net/bluetooth/hci_request.h
> > index a7019fbeadd3..8dd40c6c33c8 100644
> > --- a/net/bluetooth/hci_request.h
> > +++ b/net/bluetooth/hci_request.h
> > @@ -84,6 +84,7 @@ void hci_req_clear_adv_instance(struct hci_dev *hdev, struct sock *sk,
> > int __hci_req_setup_ext_adv_instance(struct hci_request *req, u8 instance);
> > int __hci_req_start_ext_adv(struct hci_request *req, u8 instance);
> > int __hci_req_enable_ext_advertising(struct hci_request *req, u8 instance);
> > +void __hci_req_remove_adv_set(struct hci_request *req, u8 handle);
>
> I don’t get this part of the patch. It is actually not used.
>
> Regards
>
> Marcel
>

it is a mistake. corected and updated the right patch set v2

Regards
Sathish N




[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux