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 | 41 +++++++++++++++++++++++++++++++++++ > 1 file changed, 41 insertions(+) > > diff --git a/include/net/bluetooth/l2cap.h b/include/net/bluetooth/l2cap.h > index 093aedebdf0c..d85fb2c8e6eb 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_EXT_FLOWCTL_CONN_REQ 0x17 > +#define L2CAP_EXT_FLOWCTL_CONN_RSP 0x18 > +#define L2CAP_EXT_FLOWCTL_RECONF_REQ 0x19 > +#define L2CAP_EXT_FLOWCTL_RECONF_RSP 0x1a > + the extra empty line here is not needed. > > /* L2CAP extended feature mask */ > #define L2CAP_FEAT_FLOWCTL 0x00000001 > @@ -360,6 +365,8 @@ struct l2cap_conf_rfc { > */ > #define L2CAP_MODE_LE_FLOWCTL 0x80 > > +#define L2CAP_MODE_EXT_FLOWCTL 0x81 > + So while for the mode, I prefer using EXT_FLOWCTL, but internally I would use ECRED to keep the constants and struct names short. > struct l2cap_conf_efs { > __u8 id; > __u8 stype; > @@ -483,6 +490,39 @@ struct l2cap_le_credits { > __le16 credits; > } __packed; > > +#define L2CAP_EXT_FLOWCTL_MIN_MTU 64 > +#define L2CAP_EXT_FLOWCTL_MIN_MPS 64 > + > +struct l2cap_ext_flowctl_conn_req { > + __le16 psm; > + __le16 mtu; > + __le16 mps; > + __le16 credits; > + __le16 scid[0]; > +} __packed; > + > +struct l2cap_ext_flowctl_conn_rsp { > + __le16 mtu; > + __le16 mps; > + __le16 credits; > + __le16 result; > + __le16 dcid[0]; > +}; > + > +struct l2cap_ext_flowctl_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_ext_flowctl_reconf_rsp { > + __le16 result; > +} __packed; > + > /* ----- L2CAP channels and connections ----- */ > struct l2cap_seq_list { > __u16 head; > @@ -724,6 +764,7 @@ enum { > FLAG_EFS_ENABLE, > FLAG_DEFER_SETUP, > FLAG_LE_CONN_REQ_SENT, > + FLAG_EXT_FLOWCTL_CONN_REQ_SENT, I know that I said use EXT_FLOWCTL here, but I think internally in the kernel we should use ECRED. Otherwise the code becomes hard to read. Regards Marcel