linux-bluetooth.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Marcel Holtmann <marcel@holtmann.org>
To: Bastien Nocera <hadess@hadess.net>
Cc: Bluetooth Kernel Mailing List <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: Mon, 25 Jan 2021 19:29:37 +0100	[thread overview]
Message-ID: <F18A5D4E-E940-476A-A1AE-233D4114C3F1@holtmann.org> (raw)
In-Reply-To: <20201208172912.4352-1-hadess@hadess.net>

Hi Bastien,

> 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>
> ---
> net/bluetooth/l2cap_core.c | 1 +
> 1 file changed, 1 insertion(+)

patch has been applied to bluetooth-next tree.

Regards

Marcel


      parent reply	other threads:[~2021-01-26  5:32 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
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 [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=F18A5D4E-E940-476A-A1AE-233D4114C3F1@holtmann.org \
    --to=marcel@holtmann.org \
    --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).