OSDN Git Service

Bluetooth: L2CAP: Add definitions for Enhanced Credit Based Mode
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Tue, 3 Mar 2020 00:56:19 +0000 (16:56 -0800)
committerMarcel Holtmann <marcel@holtmann.org>
Sun, 8 Mar 2020 09:05:39 +0000 (10:05 +0100)
This introduces the definitions for the new L2CAP mode called Enhanced
Credit Based Mode.

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
include/net/bluetooth/l2cap.h

index 61dc731..2f051d0 100644 (file)
@@ -119,6 +119,10 @@ struct l2cap_conninfo {
 #define L2CAP_LE_CONN_REQ      0x14
 #define L2CAP_LE_CONN_RSP      0x15
 #define L2CAP_LE_CREDITS       0x16
+#define L2CAP_ECRED_CONN_REQ   0x17
+#define L2CAP_ECRED_CONN_RSP   0x18
+#define L2CAP_ECRED_RECONF_REQ 0x19
+#define L2CAP_ECRED_RECONF_RSP 0x1a
 
 /* L2CAP extended feature mask */
 #define L2CAP_FEAT_FLOWCTL     0x00000001
@@ -359,6 +363,7 @@ struct l2cap_conf_rfc {
  * ever be used in the BR/EDR configuration phase.
  */
 #define L2CAP_MODE_LE_FLOWCTL  0x80
+#define L2CAP_MODE_EXT_FLOWCTL 0x81
 
 struct l2cap_conf_efs {
        __u8    id;
@@ -483,6 +488,39 @@ struct l2cap_le_credits {
        __le16     credits;
 } __packed;
 
+#define L2CAP_ECRED_MIN_MTU            64
+#define L2CAP_ECRED_MIN_MPS            64
+
+struct l2cap_ecred_conn_req {
+       __le16 psm;
+       __le16 mtu;
+       __le16 mps;
+       __le16 credits;
+       __le16 scid[0];
+} __packed;
+
+struct l2cap_ecred_conn_rsp {
+       __le16 mtu;
+       __le16 mps;
+       __le16 credits;
+       __le16 result;
+       __le16 dcid[0];
+};
+
+struct l2cap_ecred_reconf_req {
+       __le16 mtu;
+       __le16 mps;
+       __le16 scid[0];
+} __packed;
+
+#define L2CAP_RECONF_SUCCESS           0x0000
+#define L2CAP_RECONF_INVALID_MTU       0x0001
+#define L2CAP_RECONF_INVALID_MPS       0x0002
+
+struct l2cap_ecred_reconf_rsp {
+       __le16 result;
+} __packed;
+
 /* ----- L2CAP channels and connections ----- */
 struct l2cap_seq_list {
        __u16   head;
@@ -724,6 +762,7 @@ enum {
        FLAG_EFS_ENABLE,
        FLAG_DEFER_SETUP,
        FLAG_LE_CONN_REQ_SENT,
+       FLAG_ECRED_CONN_REQ_SENT,
        FLAG_PENDING_SECURITY,
        FLAG_HOLD_HCI_CONN,
 };