From: Данил <danstiv404@gmail.com>
To: Markus Uhr <uhrmar@gmail.com>, luiz.dentz@gmail.com
Cc: johan.hedberg@gmail.com, linux-bluetooth@vger.kernel.org,
marcel@holtmann.org, raul.cheleguini@gmail.com
Subject: Re: [PATCH v2] Bluetooth: Add new quirk for broken extended create connection for ATS2851
Date: Tue, 24 Sep 2024 22:55:13 +0700 [thread overview]
Message-ID: <fda1cccc-06db-46f5-bc48-1696de2a7f83@gmail.com> (raw)
In-Reply-To: <20240826202129.446112-1-uhrmar@gmail.com>
Hi!
Any news? I'm also interested in getting this patch into the kernel.
27.08.2024 3:21, Markus Uhr пишет:
> On Mon, 12 Aug 2024 11:17:20 -0400
> Luiz Augusto von Dentz <luiz.dentz@gmail.com> wrote:
>
>> On Sun, Aug 11, 2024 at 5:05 PM Markus Uhr <uhrmar@gmail.com> wrote:
>>> I'm interested in getting this patch merged. Was this just
>>> forgotten, or is there still work to be done before it can be
>>> merged?
>> It might need to be resend since it is no longer listed in patchwork.
> This is a resubmission of the patch, rebased on current bluetooth-next
> master.
>
> In addition to the original change, this revision also disables
> 'enhanced connection complete' when the quirk is active. This
> eliminates an ugly kernel error log
>
> Bluetooth: hci0: Opcode 0x200e failed: -16
>
> when the controller connects successfully.
>
>
> Best,
> Markus
>
> -- >8 --
> Subject: [PATCH v3] Bluetooth: Add new quirk for broken extended create connection for ATS2851
>
> The controller based on ATS2851 advertises support for the "LE Extended
> Create Connection" command, but it does not actually implement it. This
> issue is blocking the pairing process from beginning.
>
> To resolve this, add the quirk HCI_QUIRK_BROKEN_EXT_CREATE_CONN.
> This will avoid the unsupported command and instead send a regular "LE
> Create Connection" command.
>
> < HCI Command: LE Extended Create Conn.. (0x08|0x0043) plen 26
> Filter policy: Accept list is not used (0x00)
> Own address type: Public (0x00)
> Peer address type: Random (0x01)
> Peer address: DD:5E:B9:FE:49:3D (Static)
> Initiating PHYs: 0x01
> Entry 0: LE 1M
> Scan interval: 60.000 msec (0x0060)
> Scan window: 60.000 msec (0x0060)
> Min connection interval: 30.00 msec (0x0018)
> Max connection interval: 50.00 msec (0x0028)
> Connection latency: 0 (0x0000)
> Supervision timeout: 420 msec (0x002a)
> Min connection length: 0.000 msec (0x0000)
> Max connection length: 0.000 msec (0x0000)
>> HCI Event: Command Status (0x0f) plen 4
> LE Extended Create Connection (0x08|0x0043) ncmd 1
> Status: Unknown HCI Command (0x01)
>
> Signed-off-by: Markus Uhr <uhrmar@gmail.com>
> ---
> drivers/bluetooth/btusb.c | 1 +
> include/net/bluetooth/hci.h | 7 +++++++
> include/net/bluetooth/hci_core.h | 9 ++++++---
> net/bluetooth/hci_sync.c | 4 ++++
> 4 files changed, 18 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
> index 36a869a57..31f39e68a 100644
> --- a/drivers/bluetooth/btusb.c
> +++ b/drivers/bluetooth/btusb.c
> @@ -3883,6 +3883,7 @@ static int btusb_probe(struct usb_interface *intf,
> set_bit(HCI_QUIRK_BROKEN_READ_TRANSMIT_POWER, &hdev->quirks);
> set_bit(HCI_QUIRK_BROKEN_SET_RPA_TIMEOUT, &hdev->quirks);
> set_bit(HCI_QUIRK_BROKEN_EXT_SCAN, &hdev->quirks);
> + set_bit(HCI_QUIRK_BROKEN_EXT_CREATE_CONN, &hdev->quirks);
> set_bit(HCI_QUIRK_BROKEN_READ_ENC_KEY_SIZE, &hdev->quirks);
> }
>
> diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h
> index bab1e3d74..4c942db4a 100644
> --- a/include/net/bluetooth/hci.h
> +++ b/include/net/bluetooth/hci.h
> @@ -328,6 +328,13 @@ enum {
> */
> HCI_QUIRK_BROKEN_READ_ENC_KEY_SIZE,
>
> + /*
> + * When this quirk is set, the HCI_OP_LE_EXT_CREATE_CONN command is
> + * disabled. This is required for the Actions Semiconductor ATS2851
> + * based controllers, which erroneously claims to support it.
> + */
> + HCI_QUIRK_BROKEN_EXT_CREATE_CONN,
> +
> /*
> * When this quirk is set, the reserved bits of Primary/Secondary_PHY
> * inside the LE Extended Advertising Report events are discarded.
> diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h
> index e449dba69..a7a03ab13 100644
> --- a/include/net/bluetooth/hci_core.h
> +++ b/include/net/bluetooth/hci_core.h
> @@ -1876,7 +1876,8 @@ void hci_conn_del_sysfs(struct hci_conn *conn);
> !test_bit(HCI_QUIRK_BROKEN_EXT_SCAN, &(dev)->quirks))
>
> /* Use ext create connection if command is supported */
> -#define use_ext_conn(dev) ((dev)->commands[37] & 0x80)
> +#define use_ext_conn(dev) (((dev)->commands[37] & 0x80) && \
> + !test_bit(HCI_QUIRK_BROKEN_EXT_CREATE_CONN, &(dev)->quirks))
>
> /* Extended advertising support */
> #define ext_adv_capable(dev) (((dev)->le_features[1] & HCI_LE_EXT_ADV))
> @@ -1890,8 +1891,10 @@ void hci_conn_del_sysfs(struct hci_conn *conn);
> * C24: Mandatory if the LE Controller supports Connection State and either
> * LE Feature (LL Privacy) or LE Feature (Extended Advertising) is supported
> */
> -#define use_enhanced_conn_complete(dev) (ll_privacy_capable(dev) || \
> - ext_adv_capable(dev))
> +#define use_enhanced_conn_complete(dev) ((ll_privacy_capable(dev) || \
> + ext_adv_capable(dev)) && \
> + !test_bit(HCI_QUIRK_BROKEN_EXT_CREATE_CONN, \
> + &(dev)->quirks))
>
> /* Periodic advertising support */
> #define per_adv_capable(dev) (((dev)->le_features[1] & HCI_LE_PERIODIC_ADV))
> diff --git a/net/bluetooth/hci_sync.c b/net/bluetooth/hci_sync.c
> index e79cd40bd..160f260a7 100644
> --- a/net/bluetooth/hci_sync.c
> +++ b/net/bluetooth/hci_sync.c
> @@ -4800,6 +4800,9 @@ static const struct {
> HCI_QUIRK_BROKEN(SET_RPA_TIMEOUT,
> "HCI LE Set Random Private Address Timeout command is "
> "advertised, but not supported."),
> + HCI_QUIRK_BROKEN(EXT_CREATE_CONN,
> + "HCI LE Extended Create Connection command is "
> + "advertised, but not supported."),
> HCI_QUIRK_BROKEN(LE_CODED,
> "HCI LE Coded PHY feature bit is set, "
> "but its usage is not supported.")
> @@ -6427,6 +6430,7 @@ static int hci_le_create_conn_sync(struct hci_dev *hdev, void *data)
> if (err)
> goto done;
>
> + /* Send command LE Extended Create Connection if supported */
> if (use_ext_conn(hdev)) {
> err = hci_le_ext_create_conn_sync(hdev, conn, own_addr_type);
> goto done;
prev parent reply other threads:[~2024-09-24 15:55 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-04-25 16:31 [PATCH v2] Bluetooth: Add new quirk for broken extended create connection for ATS2851 Raul Cheleguini
2023-04-25 17:02 ` [v2] " bluez.test.bot
2024-08-11 21:05 ` [PATCH v2] " Markus Uhr
2024-08-12 15:17 ` Luiz Augusto von Dentz
2024-08-26 20:21 ` Markus Uhr
2024-09-24 15:55 ` Данил [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=fda1cccc-06db-46f5-bc48-1696de2a7f83@gmail.com \
--to=danstiv404@gmail.com \
--cc=johan.hedberg@gmail.com \
--cc=linux-bluetooth@vger.kernel.org \
--cc=luiz.dentz@gmail.com \
--cc=marcel@holtmann.org \
--cc=raul.cheleguini@gmail.com \
--cc=uhrmar@gmail.com \
/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