From: Luiz Augusto von Dentz <luiz.dentz@gmail.com>
To: Bastien Nocera <hadess@hadess.net>
Cc: "linux-bluetooth@vger.kernel.org"
<linux-bluetooth@vger.kernel.org>,
Florian Dollinger <dollinger.florian@gmx.de>
Subject: Re: [PATCH] Bluetooth: L2CAP: Try harder to accept device not knowing options
Date: Thu, 7 Jan 2021 17:29:22 -0800 [thread overview]
Message-ID: <CABBYNZ+41BSkQEGbXsemCgWQhmaEjB3KOkLrFyOjv_=_zMQy_Q@mail.gmail.com> (raw)
In-Reply-To: <20201208172912.4352-1-hadess@hadess.net>
Hi,
On Tue, Dec 8, 2020 at 9:36 AM Bastien Nocera <hadess@hadess.net> wrote:
>
> The current implementation of L2CAP options negotiation will continue
> the negotiation when a device responds with L2CAP_CONF_UNACCEPT ("unaccepted
> options"), but not when the device replies with L2CAP_CONF_UNKNOWN ("unknown
> options").
>
> Trying to continue the negotiation without ERTM support will allow
> Bluetooth-capable XBox One controllers (notably models 1708 and 1797)
> to connect.
>
> btmon before patch:
> > ACL Data RX: Handle 256 flags 0x02 dlen 16 #64 [hci0] 59.182702
> L2CAP: Connection Response (0x03) ident 2 len 8
> Destination CID: 64
> Source CID: 64
> Result: Connection successful (0x0000)
> Status: No further information available (0x0000)
> < ACL Data TX: Handle 256 flags 0x00 dlen 23 #65 [hci0] 59.182744
> L2CAP: Configure Request (0x04) ident 3 len 15
> Destination CID: 64
> Flags: 0x0000
> Option: Retransmission and Flow Control (0x04) [mandatory]
> Mode: Basic (0x00)
> TX window size: 0
> Max transmit: 0
> Retransmission timeout: 0
> Monitor timeout: 0
> Maximum PDU size: 0
> > ACL Data RX: Handle 256 flags 0x02 dlen 16 #66 [hci0] 59.183948
> L2CAP: Configure Request (0x04) ident 1 len 8
> Destination CID: 64
> Flags: 0x0000
> Option: Maximum Transmission Unit (0x01) [mandatory]
> MTU: 1480
> < ACL Data TX: Handle 256 flags 0x00 dlen 18 #67 [hci0] 59.183994
> L2CAP: Configure Response (0x05) ident 1 len 10
> Source CID: 64
> Flags: 0x0000
> Result: Success (0x0000)
> Option: Maximum Transmission Unit (0x01) [mandatory]
> MTU: 1480
> > ACL Data RX: Handle 256 flags 0x02 dlen 15 #69 [hci0] 59.187676
> L2CAP: Configure Response (0x05) ident 3 len 7
> Source CID: 64
> Flags: 0x0000
> Result: Failure - unknown options (0x0003)
> 04 .
> < ACL Data TX: Handle 256 flags 0x00 dlen 12 #70 [hci0] 59.187722
> L2CAP: Disconnection Request (0x06) ident 4 len 4
> Destination CID: 64
> Source CID: 64
> > ACL Data RX: Handle 256 flags 0x02 dlen 12 #73 [hci0] 59.192714
> L2CAP: Disconnection Response (0x07) ident 4 len 4
> Destination CID: 64
> Source CID: 64
>
> btmon after patch:
> > ACL Data RX: Handle 256 flags 0x02 dlen 16 #248 [hci0] 103.502970
> L2CAP: Connection Response (0x03) ident 5 len 8
> Destination CID: 65
> Source CID: 65
> Result: Connection pending (0x0001)
> Status: No further information available (0x0000)
> > ACL Data RX: Handle 256 flags 0x02 dlen 16 #249 [hci0] 103.504184
> L2CAP: Connection Response (0x03) ident 5 len 8
> Destination CID: 65
> Source CID: 65
> Result: Connection successful (0x0000)
> Status: No further information available (0x0000)
> < ACL Data TX: Handle 256 flags 0x00 dlen 23 #250 [hci0] 103.504398
> L2CAP: Configure Request (0x04) ident 6 len 15
> Destination CID: 65
> Flags: 0x0000
> Option: Retransmission and Flow Control (0x04) [mandatory]
> Mode: Basic (0x00)
> TX window size: 0
> Max transmit: 0
> Retransmission timeout: 0
> Monitor timeout: 0
> Maximum PDU size: 0
> > ACL Data RX: Handle 256 flags 0x02 dlen 16 #251 [hci0] 103.505472
> L2CAP: Configure Request (0x04) ident 3 len 8
> Destination CID: 65
> Flags: 0x0000
> Option: Maximum Transmission Unit (0x01) [mandatory]
> MTU: 1480
> < ACL Data TX: Handle 256 flags 0x00 dlen 18 #252 [hci0] 103.505689
> L2CAP: Configure Response (0x05) ident 3 len 10
> Source CID: 65
> Flags: 0x0000
> Result: Success (0x0000)
> Option: Maximum Transmission Unit (0x01) [mandatory]
> MTU: 1480
> > ACL Data RX: Handle 256 flags 0x02 dlen 15 #254 [hci0] 103.509165
> L2CAP: Configure Response (0x05) ident 6 len 7
> Source CID: 65
> Flags: 0x0000
> Result: Failure - unknown options (0x0003)
> 04 .
> < ACL Data TX: Handle 256 flags 0x00 dlen 12 #255 [hci0] 103.509426
> L2CAP: Configure Request (0x04) ident 7 len 4
> Destination CID: 65
> Flags: 0x0000
> < ACL Data TX: Handle 256 flags 0x00 dlen 12 #257 [hci0] 103.511870
> L2CAP: Connection Request (0x02) ident 8 len 4
> PSM: 1 (0x0001)
> Source CID: 66
> > ACL Data RX: Handle 256 flags 0x02 dlen 14 #259 [hci0] 103.514121
> L2CAP: Configure Response (0x05) ident 7 len 6
> Source CID: 65
> Flags: 0x0000
> Result: Success (0x0000)
>
> Signed-off-by: Florian Dollinger <dollinger.florian@gmx.de>
> Co-developed-by: Florian Dollinger <dollinger.florian@gmx.de>
Reviewed-by: Luiz Augusto Von Dentz <luiz.von.dentz@intel.com>
> ---
> net/bluetooth/l2cap_core.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c
> index 1ab27b90ddcb..3ab95ea2cd80 100644
> --- a/net/bluetooth/l2cap_core.c
> +++ b/net/bluetooth/l2cap_core.c
> @@ -4513,6 +4513,7 @@ static inline int l2cap_config_rsp(struct l2cap_conn *conn,
> }
> goto done;
>
> + case L2CAP_CONF_UNKNOWN:
> case L2CAP_CONF_UNACCEPT:
> if (chan->num_conf_rsp <= L2CAP_CONF_MAX_CONF_RSP) {
> char req[64];
> --
> 2.29.2
>
--
Luiz Augusto von Dentz
next prev parent reply other threads:[~2021-01-08 1:30 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-12-08 17:29 [PATCH] Bluetooth: L2CAP: Try harder to accept device not knowing options Bastien Nocera
2020-12-08 18:05 ` bluez.test.bot
[not found] ` <CABBYNZJNTDek+kKS5wtrr67Xx8DmFGvcV13cLSxULgJRa5N+3g@mail.gmail.com>
2020-12-08 18:27 ` [PATCH] " Bastien Nocera
2020-12-08 18:48 ` Luiz Augusto von Dentz
2020-12-16 15:49 ` Bastien Nocera
2021-01-06 9:25 ` Bastien Nocera
2021-01-06 9:47 ` Archie Pusaka
2021-01-06 10:36 ` Bastien Nocera
2021-01-06 16:42 ` Bastien Nocera
2021-01-08 1:29 ` Luiz Augusto von Dentz [this message]
2021-01-13 12:32 ` Bastien Nocera
2021-01-25 18:29 ` Bastien Nocera
2021-01-25 18:31 ` Bastien Nocera
2021-01-25 18:29 ` Marcel Holtmann
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='CABBYNZ+41BSkQEGbXsemCgWQhmaEjB3KOkLrFyOjv_=_zMQy_Q@mail.gmail.com' \
--to=luiz.dentz@gmail.com \
--cc=dollinger.florian@gmx.de \
--cc=hadess@hadess.net \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).