Hi Luiz, > This introduces the definitions for the new L2CAP mode called Enhanced > Credit Based Mode. > > Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@xxxxxxxxx> > --- > include/net/bluetooth/l2cap.h | 43 +++++++++++++++++++++++++++++++++++ > 1 file changed, 43 insertions(+) > > diff --git a/include/net/bluetooth/l2cap.h b/include/net/bluetooth/l2cap.h > index 093aedebdf0c..2a38e1f93c45 100644 > --- a/include/net/bluetooth/l2cap.h > +++ b/include/net/bluetooth/l2cap.h > @@ -119,6 +119,11 @@ 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 > @@ -360,6 +365,9 @@ struct l2cap_conf_rfc { > */ > #define L2CAP_MODE_LE_FLOWCTL 0x80 > > +/* This is essentially L2CAP_MODE_LE_FLOWCTL but works with BR/EDR */ Scrap this comment. It doesn’t help at this location. > +#define L2CAP_MODE_ECRED 0x81 > + I am not completely fine with this name. I wonder if we better do L2CAP_MODE_EXT_FLOWCTL. > struct l2cap_conf_efs { > __u8 id; > __u8 stype; > @@ -483,6 +491,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 +765,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, > }; > @@ -923,6 +965,7 @@ void l2cap_cleanup_sockets(void); > bool l2cap_is_socket(struct socket *sock); > > void __l2cap_le_connect_rsp_defer(struct l2cap_chan *chan); > +void __l2cap_ecred_conn_rsp_defer(struct l2cap_chan *chan); This can’t be in this patch. > void __l2cap_connect_rsp_defer(struct l2cap_chan *chan); > > int l2cap_add_psm(struct l2cap_chan *chan, bdaddr_t *src, __le16 psm); Regards Marcel