Message ID | 20200312123453.Bluez.v2.1.I50b301a0464eb68e3d62721bf59e11ed2617c415@changeid (mailing list archive) |
---|---|
State | Accepted |
Delegated to: | Marcel Holtmann |
Headers | show |
Series | [Bluez,v2] Bluetooth: L2CAP: handle l2cap config request during open state | expand |
Hi Howard, > According to Core Spec Version 5.2 | Vol 3, Part A 6.1.5, > the incoming L2CAP_ConfigReq should be handled during > OPEN state. > > The section below shows the btmon trace when running > L2CAP/COS/CFD/BV-12-C before and after this change. > > === Before === > ... >> ACL Data RX: Handle 256 flags 0x02 dlen 12 #22 > L2CAP: Connection Request (0x02) ident 2 len 4 > PSM: 1 (0x0001) > Source CID: 65 > < ACL Data TX: Handle 256 flags 0x00 dlen 16 #23 > L2CAP: Connection Response (0x03) ident 2 len 8 > Destination CID: 64 > Source CID: 65 > Result: Connection successful (0x0000) > Status: No further information available (0x0000) > < ACL Data TX: Handle 256 flags 0x00 dlen 12 #24 > L2CAP: Configure Request (0x04) ident 2 len 4 > Destination CID: 65 > Flags: 0x0000 >> HCI Event: Number of Completed Packets (0x13) plen 5 #25 > Num handles: 1 > Handle: 256 > Count: 1 >> HCI Event: Number of Completed Packets (0x13) plen 5 #26 > Num handles: 1 > Handle: 256 > Count: 1 >> ACL Data RX: Handle 256 flags 0x02 dlen 16 #27 > L2CAP: Configure Request (0x04) ident 3 len 8 > Destination CID: 64 > Flags: 0x0000 > Option: Unknown (0x10) [hint] > 01 00 .. > < ACL Data TX: Handle 256 flags 0x00 dlen 18 #28 > L2CAP: Configure Response (0x05) ident 3 len 10 > Source CID: 65 > Flags: 0x0000 > Result: Success (0x0000) > Option: Maximum Transmission Unit (0x01) [mandatory] > MTU: 672 >> HCI Event: Number of Completed Packets (0x13) plen 5 #29 > Num handles: 1 > Handle: 256 > Count: 1 >> ACL Data RX: Handle 256 flags 0x02 dlen 14 #30 > L2CAP: Configure Response (0x05) ident 2 len 6 > Source CID: 64 > Flags: 0x0000 > Result: Success (0x0000) >> ACL Data RX: Handle 256 flags 0x02 dlen 20 #31 > L2CAP: Configure Request (0x04) ident 3 len 12 > Destination CID: 64 > Flags: 0x0000 > Option: Unknown (0x10) [hint] > 01 00 91 02 11 11 ...... > < ACL Data TX: Handle 256 flags 0x00 dlen 14 #32 > L2CAP: Command Reject (0x01) ident 3 len 6 > Reason: Invalid CID in request (0x0002) > Destination CID: 64 > Source CID: 65 >> HCI Event: Number of Completed Packets (0x13) plen 5 #33 > Num handles: 1 > Handle: 256 > Count: 1 > ... > === After === > ... >> ACL Data RX: Handle 256 flags 0x02 dlen 12 #22 > L2CAP: Connection Request (0x02) ident 2 len 4 > PSM: 1 (0x0001) > Source CID: 65 > < ACL Data TX: Handle 256 flags 0x00 dlen 16 #23 > L2CAP: Connection Response (0x03) ident 2 len 8 > Destination CID: 64 > Source CID: 65 > Result: Connection successful (0x0000) > Status: No further information available (0x0000) > < ACL Data TX: Handle 256 flags 0x00 dlen 12 #24 > L2CAP: Configure Request (0x04) ident 2 len 4 > Destination CID: 65 > Flags: 0x0000 >> HCI Event: Number of Completed Packets (0x13) plen 5 #25 > Num handles: 1 > Handle: 256 > Count: 1 >> HCI Event: Number of Completed Packets (0x13) plen 5 #26 > Num handles: 1 > Handle: 256 > Count: 1 >> ACL Data RX: Handle 256 flags 0x02 dlen 16 #27 > L2CAP: Configure Request (0x04) ident 3 len 8 > Destination CID: 64 > Flags: 0x0000 > Option: Unknown (0x10) [hint] > 01 00 .. > < ACL Data TX: Handle 256 flags 0x00 dlen 18 #28 > L2CAP: Configure Response (0x05) ident 3 len 10 > Source CID: 65 > Flags: 0x0000 > Result: Success (0x0000) > Option: Maximum Transmission Unit (0x01) [mandatory] > MTU: 672 >> HCI Event: Number of Completed Packets (0x13) plen 5 #29 > Num handles: 1 > Handle: 256 > Count: 1 >> ACL Data RX: Handle 256 flags 0x02 dlen 14 #30 > L2CAP: Configure Response (0x05) ident 2 len 6 > Source CID: 64 > Flags: 0x0000 > Result: Success (0x0000) >> ACL Data RX: Handle 256 flags 0x02 dlen 20 #31 > L2CAP: Configure Request (0x04) ident 3 len 12 > Destination CID: 64 > Flags: 0x0000 > Option: Unknown (0x10) [hint] > 01 00 91 02 11 11 ..... > < ACL Data TX: Handle 256 flags 0x00 dlen 18 #32 > L2CAP: Configure Response (0x05) ident 3 len 10 > Source CID: 65 > Flags: 0x0000 > Result: Success (0x0000) > Option: Maximum Transmission Unit (0x01) [mandatory] > MTU: 672 > < ACL Data TX: Handle 256 flags 0x00 dlen 12 #33 > L2CAP: Configure Request (0x04) ident 3 len 4 > Destination CID: 65 > Flags: 0x0000 >> HCI Event: Number of Completed Packets (0x13) plen 5 #34 > Num handles: 1 > Handle: 256 > Count: 1 >> HCI Event: Number of Completed Packets (0x13) plen 5 #35 > Num handles: 1 > Handle: 256 > Count: 1 > ... > > Signed-off-by: Howard Chung <howardchung@google.com> > > --- > > Changes in v2: > - Updated commit messages > > net/bluetooth/l2cap_core.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) patch has been applied to bluetooth-next tree. Regards Marcel
diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c index 697c0f7f2c1a..5e6e35ab44dd 100644 --- a/net/bluetooth/l2cap_core.c +++ b/net/bluetooth/l2cap_core.c @@ -4300,7 +4300,8 @@ static inline int l2cap_config_req(struct l2cap_conn *conn, return 0; } - if (chan->state != BT_CONFIG && chan->state != BT_CONNECT2) { + if (chan->state != BT_CONFIG && chan->state != BT_CONNECT2 && + chan->state != BT_CONNECTED) { cmd_reject_invalid_cid(conn, cmd->ident, chan->scid, chan->dcid); goto unlock;