Loading include/net/bluetooth/hci.h +9 −0 Original line number Original line Diff line number Diff line Loading @@ -246,6 +246,15 @@ enum { #define HCI_AT_GENERAL_BONDING 0x04 #define HCI_AT_GENERAL_BONDING 0x04 #define HCI_AT_GENERAL_BONDING_MITM 0x05 #define HCI_AT_GENERAL_BONDING_MITM 0x05 /* Link Key types */ #define HCI_LK_COMBINATION 0x00 #define HCI_LK_LOCAL_UNIT 0x01 #define HCI_LK_REMOTE_UNIT 0x02 #define HCI_LK_DEBUG_COMBINATION 0x03 #define HCI_LK_UNAUTH_COMBINATION 0x04 #define HCI_LK_AUTH_COMBINATION 0x05 #define HCI_LK_CHANGED_COMBINATION 0x06 /* ----- HCI Commands ---- */ /* ----- HCI Commands ---- */ #define HCI_OP_NOP 0x0000 #define HCI_OP_NOP 0x0000 Loading include/net/bluetooth/hci_core.h +11 −5 Original line number Original line Diff line number Diff line Loading @@ -126,6 +126,8 @@ struct hci_dev { __u16 sniff_min_interval; __u16 sniff_min_interval; __u16 sniff_max_interval; __u16 sniff_max_interval; unsigned int auto_accept_delay; unsigned long quirks; unsigned long quirks; atomic_t cmd_cnt; atomic_t cmd_cnt; Loading Loading @@ -226,6 +228,7 @@ struct hci_conn { __u16 pkt_type; __u16 pkt_type; __u16 link_policy; __u16 link_policy; __u32 link_mode; __u32 link_mode; __u8 key_type; __u8 auth_type; __u8 auth_type; __u8 sec_level; __u8 sec_level; __u8 pending_sec_level; __u8 pending_sec_level; Loading @@ -245,6 +248,7 @@ struct hci_conn { struct timer_list disc_timer; struct timer_list disc_timer; struct timer_list idle_timer; struct timer_list idle_timer; struct timer_list auto_accept_timer; struct work_struct work_add; struct work_struct work_add; struct work_struct work_del; struct work_struct work_del; Loading Loading @@ -511,8 +515,8 @@ int hci_uuids_clear(struct hci_dev *hdev); int hci_link_keys_clear(struct hci_dev *hdev); int hci_link_keys_clear(struct hci_dev *hdev); struct link_key *hci_find_link_key(struct hci_dev *hdev, bdaddr_t *bdaddr); struct link_key *hci_find_link_key(struct hci_dev *hdev, bdaddr_t *bdaddr); int hci_add_link_key(struct hci_dev *hdev, int new_key, bdaddr_t *bdaddr, int hci_add_link_key(struct hci_dev *hdev, struct hci_conn *conn, int new_key, u8 *key, u8 type, u8 pin_len); bdaddr_t *bdaddr, u8 *val, u8 type, u8 pin_len); int hci_remove_link_key(struct hci_dev *hdev, bdaddr_t *bdaddr); int hci_remove_link_key(struct hci_dev *hdev, bdaddr_t *bdaddr); int hci_remote_oob_data_clear(struct hci_dev *hdev); int hci_remote_oob_data_clear(struct hci_dev *hdev); Loading Loading @@ -771,15 +775,16 @@ int mgmt_index_removed(u16 index); int mgmt_powered(u16 index, u8 powered); int mgmt_powered(u16 index, u8 powered); int mgmt_discoverable(u16 index, u8 discoverable); int mgmt_discoverable(u16 index, u8 discoverable); int mgmt_connectable(u16 index, u8 connectable); int mgmt_connectable(u16 index, u8 connectable); int mgmt_new_key(u16 index, struct link_key *key, u8 old_key_type); int mgmt_new_key(u16 index, struct link_key *key, u8 persistent); int mgmt_connected(u16 index, bdaddr_t *bdaddr); int mgmt_connected(u16 index, bdaddr_t *bdaddr); int mgmt_disconnected(u16 index, bdaddr_t *bdaddr); int mgmt_disconnected(u16 index, bdaddr_t *bdaddr); int mgmt_disconnect_failed(u16 index); int mgmt_disconnect_failed(u16 index); int mgmt_connect_failed(u16 index, bdaddr_t *bdaddr, u8 status); int mgmt_connect_failed(u16 index, bdaddr_t *bdaddr, u8 status); int mgmt_pin_code_request(u16 index, bdaddr_t *bdaddr); int mgmt_pin_code_request(u16 index, bdaddr_t *bdaddr, u8 secure); int mgmt_pin_code_reply_complete(u16 index, bdaddr_t *bdaddr, u8 status); int mgmt_pin_code_reply_complete(u16 index, bdaddr_t *bdaddr, u8 status); int mgmt_pin_code_neg_reply_complete(u16 index, bdaddr_t *bdaddr, u8 status); int mgmt_pin_code_neg_reply_complete(u16 index, bdaddr_t *bdaddr, u8 status); int mgmt_user_confirm_request(u16 index, bdaddr_t *bdaddr, __le32 value); int mgmt_user_confirm_request(u16 index, bdaddr_t *bdaddr, __le32 value, u8 confirm_hint); int mgmt_user_confirm_reply_complete(u16 index, bdaddr_t *bdaddr, u8 status); int mgmt_user_confirm_reply_complete(u16 index, bdaddr_t *bdaddr, u8 status); int mgmt_user_confirm_neg_reply_complete(u16 index, bdaddr_t *bdaddr, int mgmt_user_confirm_neg_reply_complete(u16 index, bdaddr_t *bdaddr, u8 status); u8 status); Loading @@ -790,6 +795,7 @@ int mgmt_read_local_oob_data_reply_complete(u16 index, u8 *hash, u8 *randomizer, int mgmt_device_found(u16 index, bdaddr_t *bdaddr, u8 *dev_class, s8 rssi, int mgmt_device_found(u16 index, bdaddr_t *bdaddr, u8 *dev_class, s8 rssi, u8 *eir); u8 *eir); int mgmt_remote_name(u16 index, bdaddr_t *bdaddr, u8 *name); int mgmt_remote_name(u16 index, bdaddr_t *bdaddr, u8 *name); int mgmt_discovering(u16 index, u8 discovering); /* HCI info for socket */ /* HCI info for socket */ #define hci_pi(sk) ((struct hci_pinfo *) sk) #define hci_pi(sk) ((struct hci_pinfo *) sk) Loading include/net/bluetooth/l2cap.h +36 −33 Original line number Original line Diff line number Diff line Loading @@ -284,6 +284,25 @@ struct srej_list { struct l2cap_chan { struct l2cap_chan { struct sock *sk; struct sock *sk; struct l2cap_conn *conn; __le16 psm; __u16 dcid; __u16 scid; __u16 imtu; __u16 omtu; __u16 flush_to; __u8 mode; __le16 sport; __u8 sec_level; __u8 role_switch; __u8 force_reliable; __u8 flushable; __u8 ident; __u8 ident; __u8 conf_req[64]; __u8 conf_req[64]; Loading @@ -291,6 +310,15 @@ struct l2cap_chan { __u8 num_conf_req; __u8 num_conf_req; __u8 num_conf_rsp; __u8 num_conf_rsp; __u8 fcs; __u8 tx_win; __u8 max_tx; __u16 retrans_timeout; __u16 monitor_timeout; __u16 mps; __u8 conf_state; __u16 conn_state; __u16 conn_state; __u8 next_tx_seq; __u8 next_tx_seq; Loading Loading @@ -360,32 +388,6 @@ struct l2cap_conn { struct l2cap_pinfo { struct l2cap_pinfo { struct bt_sock bt; struct bt_sock bt; __le16 psm; __u16 dcid; __u16 scid; __u16 imtu; __u16 omtu; __u16 flush_to; __u8 mode; __u8 fcs; __u8 sec_level; __u8 role_switch; __u8 force_reliable; __u8 flushable; __u8 conf_state; __u8 tx_win; __u8 max_tx; __u16 retrans_timeout; __u16 monitor_timeout; __u16 mps; __le16 sport; struct l2cap_conn *conn; struct l2cap_chan *chan; struct l2cap_chan *chan; }; }; Loading Loading @@ -439,21 +441,20 @@ static inline int l2cap_tx_window_full(struct l2cap_chan *ch) #define __is_sar_start(ctrl) (((ctrl) & L2CAP_CTRL_SAR) == L2CAP_SDU_START) #define __is_sar_start(ctrl) (((ctrl) & L2CAP_CTRL_SAR) == L2CAP_SDU_START) extern int disable_ertm; extern int disable_ertm; extern const struct proto_ops l2cap_sock_ops; extern struct bt_sock_list l2cap_sk_list; extern struct bt_sock_list l2cap_sk_list; int l2cap_init_sockets(void); int l2cap_init_sockets(void); void l2cap_cleanup_sockets(void); void l2cap_cleanup_sockets(void); void l2cap_send_cmd(struct l2cap_conn *conn, u8 ident, u8 code, u16 len, void *data); void l2cap_send_cmd(struct l2cap_conn *conn, u8 ident, u8 code, u16 len, void *data); void __l2cap_connect_rsp_defer(struct sock *sk); void __l2cap_connect_rsp_defer(struct l2cap_chan *chan); int __l2cap_wait_ack(struct sock *sk); int __l2cap_wait_ack(struct sock *sk); struct sk_buff *l2cap_create_connless_pdu(struct sock *sk, struct msghdr *msg, size_t len); struct sk_buff *l2cap_create_connless_pdu(struct l2cap_chan *chan, struct msghdr *msg, size_t len); struct sk_buff *l2cap_create_basic_pdu(struct sock *sk, struct msghdr *msg, size_t len); struct sk_buff *l2cap_create_basic_pdu(struct l2cap_chan *chan, struct msghdr *msg, size_t len); struct sk_buff *l2cap_create_iframe_pdu(struct sock *sk, struct msghdr *msg, size_t len, u16 control, u16 sdulen); struct sk_buff *l2cap_create_iframe_pdu(struct l2cap_chan *chan, struct msghdr *msg, size_t len, u16 control, u16 sdulen); int l2cap_sar_segment_sdu(struct l2cap_chan *chan, struct msghdr *msg, size_t len); int l2cap_sar_segment_sdu(struct l2cap_chan *chan, struct msghdr *msg, size_t len); void l2cap_do_send(struct sock *sk, struct sk_buff *skb); void l2cap_do_send(struct l2cap_chan *chan, struct sk_buff *skb); void l2cap_streaming_send(struct l2cap_chan *chan); void l2cap_streaming_send(struct l2cap_chan *chan); int l2cap_ertm_send(struct l2cap_chan *chan); int l2cap_ertm_send(struct l2cap_chan *chan); Loading @@ -465,7 +466,9 @@ void l2cap_sock_init(struct sock *sk, struct sock *parent); struct sock *l2cap_sock_alloc(struct net *net, struct socket *sock, struct sock *l2cap_sock_alloc(struct net *net, struct socket *sock, int proto, gfp_t prio); int proto, gfp_t prio); void l2cap_send_disconn_req(struct l2cap_conn *conn, struct l2cap_chan *chan, int err); void l2cap_send_disconn_req(struct l2cap_conn *conn, struct l2cap_chan *chan, int err); struct l2cap_chan *l2cap_chan_alloc(struct sock *sk); void l2cap_chan_del(struct l2cap_chan *chan, int err); void l2cap_chan_del(struct l2cap_chan *chan, int err); int l2cap_do_connect(struct sock *sk); void l2cap_chan_free(struct l2cap_chan *chan); int l2cap_chan_connect(struct l2cap_chan *chan); #endif /* __L2CAP_H */ #endif /* __L2CAP_H */ include/net/bluetooth/mgmt.h +9 −1 Original line number Original line Diff line number Diff line Loading @@ -195,6 +195,10 @@ struct mgmt_cp_remove_remote_oob_data { bdaddr_t bdaddr; bdaddr_t bdaddr; } __packed; } __packed; #define MGMT_OP_START_DISCOVERY 0x001B #define MGMT_OP_STOP_DISCOVERY 0x001C #define MGMT_EV_CMD_COMPLETE 0x0001 #define MGMT_EV_CMD_COMPLETE 0x0001 struct mgmt_ev_cmd_complete { struct mgmt_ev_cmd_complete { __le16 opcode; __le16 opcode; Loading Loading @@ -226,8 +230,8 @@ struct mgmt_ev_controller_error { #define MGMT_EV_NEW_KEY 0x000A #define MGMT_EV_NEW_KEY 0x000A struct mgmt_ev_new_key { struct mgmt_ev_new_key { __u8 store_hint; struct mgmt_key_info key; struct mgmt_key_info key; __u8 old_key_type; } __packed; } __packed; #define MGMT_EV_CONNECTED 0x000B #define MGMT_EV_CONNECTED 0x000B Loading @@ -249,11 +253,13 @@ struct mgmt_ev_connect_failed { #define MGMT_EV_PIN_CODE_REQUEST 0x000E #define MGMT_EV_PIN_CODE_REQUEST 0x000E struct mgmt_ev_pin_code_request { struct mgmt_ev_pin_code_request { bdaddr_t bdaddr; bdaddr_t bdaddr; __u8 secure; } __packed; } __packed; #define MGMT_EV_USER_CONFIRM_REQUEST 0x000F #define MGMT_EV_USER_CONFIRM_REQUEST 0x000F struct mgmt_ev_user_confirm_request { struct mgmt_ev_user_confirm_request { bdaddr_t bdaddr; bdaddr_t bdaddr; __u8 confirm_hint; __le32 value; __le32 value; } __packed; } __packed; Loading Loading @@ -281,3 +287,5 @@ struct mgmt_ev_remote_name { bdaddr_t bdaddr; bdaddr_t bdaddr; __u8 name[MGMT_MAX_NAME_LENGTH]; __u8 name[MGMT_MAX_NAME_LENGTH]; } __packed; } __packed; #define MGMT_EV_DISCOVERING 0x0014 net/bluetooth/cmtp/core.c +2 −1 Original line number Original line Diff line number Diff line Loading @@ -346,7 +346,8 @@ int cmtp_add_connection(struct cmtp_connadd_req *req, struct socket *sock) bacpy(&session->bdaddr, &bt_sk(sock->sk)->dst); bacpy(&session->bdaddr, &bt_sk(sock->sk)->dst); session->mtu = min_t(uint, l2cap_pi(sock->sk)->omtu, l2cap_pi(sock->sk)->imtu); session->mtu = min_t(uint, l2cap_pi(sock->sk)->chan->omtu, l2cap_pi(sock->sk)->chan->imtu); BT_DBG("mtu %d", session->mtu); BT_DBG("mtu %d", session->mtu); Loading Loading
include/net/bluetooth/hci.h +9 −0 Original line number Original line Diff line number Diff line Loading @@ -246,6 +246,15 @@ enum { #define HCI_AT_GENERAL_BONDING 0x04 #define HCI_AT_GENERAL_BONDING 0x04 #define HCI_AT_GENERAL_BONDING_MITM 0x05 #define HCI_AT_GENERAL_BONDING_MITM 0x05 /* Link Key types */ #define HCI_LK_COMBINATION 0x00 #define HCI_LK_LOCAL_UNIT 0x01 #define HCI_LK_REMOTE_UNIT 0x02 #define HCI_LK_DEBUG_COMBINATION 0x03 #define HCI_LK_UNAUTH_COMBINATION 0x04 #define HCI_LK_AUTH_COMBINATION 0x05 #define HCI_LK_CHANGED_COMBINATION 0x06 /* ----- HCI Commands ---- */ /* ----- HCI Commands ---- */ #define HCI_OP_NOP 0x0000 #define HCI_OP_NOP 0x0000 Loading
include/net/bluetooth/hci_core.h +11 −5 Original line number Original line Diff line number Diff line Loading @@ -126,6 +126,8 @@ struct hci_dev { __u16 sniff_min_interval; __u16 sniff_min_interval; __u16 sniff_max_interval; __u16 sniff_max_interval; unsigned int auto_accept_delay; unsigned long quirks; unsigned long quirks; atomic_t cmd_cnt; atomic_t cmd_cnt; Loading Loading @@ -226,6 +228,7 @@ struct hci_conn { __u16 pkt_type; __u16 pkt_type; __u16 link_policy; __u16 link_policy; __u32 link_mode; __u32 link_mode; __u8 key_type; __u8 auth_type; __u8 auth_type; __u8 sec_level; __u8 sec_level; __u8 pending_sec_level; __u8 pending_sec_level; Loading @@ -245,6 +248,7 @@ struct hci_conn { struct timer_list disc_timer; struct timer_list disc_timer; struct timer_list idle_timer; struct timer_list idle_timer; struct timer_list auto_accept_timer; struct work_struct work_add; struct work_struct work_add; struct work_struct work_del; struct work_struct work_del; Loading Loading @@ -511,8 +515,8 @@ int hci_uuids_clear(struct hci_dev *hdev); int hci_link_keys_clear(struct hci_dev *hdev); int hci_link_keys_clear(struct hci_dev *hdev); struct link_key *hci_find_link_key(struct hci_dev *hdev, bdaddr_t *bdaddr); struct link_key *hci_find_link_key(struct hci_dev *hdev, bdaddr_t *bdaddr); int hci_add_link_key(struct hci_dev *hdev, int new_key, bdaddr_t *bdaddr, int hci_add_link_key(struct hci_dev *hdev, struct hci_conn *conn, int new_key, u8 *key, u8 type, u8 pin_len); bdaddr_t *bdaddr, u8 *val, u8 type, u8 pin_len); int hci_remove_link_key(struct hci_dev *hdev, bdaddr_t *bdaddr); int hci_remove_link_key(struct hci_dev *hdev, bdaddr_t *bdaddr); int hci_remote_oob_data_clear(struct hci_dev *hdev); int hci_remote_oob_data_clear(struct hci_dev *hdev); Loading Loading @@ -771,15 +775,16 @@ int mgmt_index_removed(u16 index); int mgmt_powered(u16 index, u8 powered); int mgmt_powered(u16 index, u8 powered); int mgmt_discoverable(u16 index, u8 discoverable); int mgmt_discoverable(u16 index, u8 discoverable); int mgmt_connectable(u16 index, u8 connectable); int mgmt_connectable(u16 index, u8 connectable); int mgmt_new_key(u16 index, struct link_key *key, u8 old_key_type); int mgmt_new_key(u16 index, struct link_key *key, u8 persistent); int mgmt_connected(u16 index, bdaddr_t *bdaddr); int mgmt_connected(u16 index, bdaddr_t *bdaddr); int mgmt_disconnected(u16 index, bdaddr_t *bdaddr); int mgmt_disconnected(u16 index, bdaddr_t *bdaddr); int mgmt_disconnect_failed(u16 index); int mgmt_disconnect_failed(u16 index); int mgmt_connect_failed(u16 index, bdaddr_t *bdaddr, u8 status); int mgmt_connect_failed(u16 index, bdaddr_t *bdaddr, u8 status); int mgmt_pin_code_request(u16 index, bdaddr_t *bdaddr); int mgmt_pin_code_request(u16 index, bdaddr_t *bdaddr, u8 secure); int mgmt_pin_code_reply_complete(u16 index, bdaddr_t *bdaddr, u8 status); int mgmt_pin_code_reply_complete(u16 index, bdaddr_t *bdaddr, u8 status); int mgmt_pin_code_neg_reply_complete(u16 index, bdaddr_t *bdaddr, u8 status); int mgmt_pin_code_neg_reply_complete(u16 index, bdaddr_t *bdaddr, u8 status); int mgmt_user_confirm_request(u16 index, bdaddr_t *bdaddr, __le32 value); int mgmt_user_confirm_request(u16 index, bdaddr_t *bdaddr, __le32 value, u8 confirm_hint); int mgmt_user_confirm_reply_complete(u16 index, bdaddr_t *bdaddr, u8 status); int mgmt_user_confirm_reply_complete(u16 index, bdaddr_t *bdaddr, u8 status); int mgmt_user_confirm_neg_reply_complete(u16 index, bdaddr_t *bdaddr, int mgmt_user_confirm_neg_reply_complete(u16 index, bdaddr_t *bdaddr, u8 status); u8 status); Loading @@ -790,6 +795,7 @@ int mgmt_read_local_oob_data_reply_complete(u16 index, u8 *hash, u8 *randomizer, int mgmt_device_found(u16 index, bdaddr_t *bdaddr, u8 *dev_class, s8 rssi, int mgmt_device_found(u16 index, bdaddr_t *bdaddr, u8 *dev_class, s8 rssi, u8 *eir); u8 *eir); int mgmt_remote_name(u16 index, bdaddr_t *bdaddr, u8 *name); int mgmt_remote_name(u16 index, bdaddr_t *bdaddr, u8 *name); int mgmt_discovering(u16 index, u8 discovering); /* HCI info for socket */ /* HCI info for socket */ #define hci_pi(sk) ((struct hci_pinfo *) sk) #define hci_pi(sk) ((struct hci_pinfo *) sk) Loading
include/net/bluetooth/l2cap.h +36 −33 Original line number Original line Diff line number Diff line Loading @@ -284,6 +284,25 @@ struct srej_list { struct l2cap_chan { struct l2cap_chan { struct sock *sk; struct sock *sk; struct l2cap_conn *conn; __le16 psm; __u16 dcid; __u16 scid; __u16 imtu; __u16 omtu; __u16 flush_to; __u8 mode; __le16 sport; __u8 sec_level; __u8 role_switch; __u8 force_reliable; __u8 flushable; __u8 ident; __u8 ident; __u8 conf_req[64]; __u8 conf_req[64]; Loading @@ -291,6 +310,15 @@ struct l2cap_chan { __u8 num_conf_req; __u8 num_conf_req; __u8 num_conf_rsp; __u8 num_conf_rsp; __u8 fcs; __u8 tx_win; __u8 max_tx; __u16 retrans_timeout; __u16 monitor_timeout; __u16 mps; __u8 conf_state; __u16 conn_state; __u16 conn_state; __u8 next_tx_seq; __u8 next_tx_seq; Loading Loading @@ -360,32 +388,6 @@ struct l2cap_conn { struct l2cap_pinfo { struct l2cap_pinfo { struct bt_sock bt; struct bt_sock bt; __le16 psm; __u16 dcid; __u16 scid; __u16 imtu; __u16 omtu; __u16 flush_to; __u8 mode; __u8 fcs; __u8 sec_level; __u8 role_switch; __u8 force_reliable; __u8 flushable; __u8 conf_state; __u8 tx_win; __u8 max_tx; __u16 retrans_timeout; __u16 monitor_timeout; __u16 mps; __le16 sport; struct l2cap_conn *conn; struct l2cap_chan *chan; struct l2cap_chan *chan; }; }; Loading Loading @@ -439,21 +441,20 @@ static inline int l2cap_tx_window_full(struct l2cap_chan *ch) #define __is_sar_start(ctrl) (((ctrl) & L2CAP_CTRL_SAR) == L2CAP_SDU_START) #define __is_sar_start(ctrl) (((ctrl) & L2CAP_CTRL_SAR) == L2CAP_SDU_START) extern int disable_ertm; extern int disable_ertm; extern const struct proto_ops l2cap_sock_ops; extern struct bt_sock_list l2cap_sk_list; extern struct bt_sock_list l2cap_sk_list; int l2cap_init_sockets(void); int l2cap_init_sockets(void); void l2cap_cleanup_sockets(void); void l2cap_cleanup_sockets(void); void l2cap_send_cmd(struct l2cap_conn *conn, u8 ident, u8 code, u16 len, void *data); void l2cap_send_cmd(struct l2cap_conn *conn, u8 ident, u8 code, u16 len, void *data); void __l2cap_connect_rsp_defer(struct sock *sk); void __l2cap_connect_rsp_defer(struct l2cap_chan *chan); int __l2cap_wait_ack(struct sock *sk); int __l2cap_wait_ack(struct sock *sk); struct sk_buff *l2cap_create_connless_pdu(struct sock *sk, struct msghdr *msg, size_t len); struct sk_buff *l2cap_create_connless_pdu(struct l2cap_chan *chan, struct msghdr *msg, size_t len); struct sk_buff *l2cap_create_basic_pdu(struct sock *sk, struct msghdr *msg, size_t len); struct sk_buff *l2cap_create_basic_pdu(struct l2cap_chan *chan, struct msghdr *msg, size_t len); struct sk_buff *l2cap_create_iframe_pdu(struct sock *sk, struct msghdr *msg, size_t len, u16 control, u16 sdulen); struct sk_buff *l2cap_create_iframe_pdu(struct l2cap_chan *chan, struct msghdr *msg, size_t len, u16 control, u16 sdulen); int l2cap_sar_segment_sdu(struct l2cap_chan *chan, struct msghdr *msg, size_t len); int l2cap_sar_segment_sdu(struct l2cap_chan *chan, struct msghdr *msg, size_t len); void l2cap_do_send(struct sock *sk, struct sk_buff *skb); void l2cap_do_send(struct l2cap_chan *chan, struct sk_buff *skb); void l2cap_streaming_send(struct l2cap_chan *chan); void l2cap_streaming_send(struct l2cap_chan *chan); int l2cap_ertm_send(struct l2cap_chan *chan); int l2cap_ertm_send(struct l2cap_chan *chan); Loading @@ -465,7 +466,9 @@ void l2cap_sock_init(struct sock *sk, struct sock *parent); struct sock *l2cap_sock_alloc(struct net *net, struct socket *sock, struct sock *l2cap_sock_alloc(struct net *net, struct socket *sock, int proto, gfp_t prio); int proto, gfp_t prio); void l2cap_send_disconn_req(struct l2cap_conn *conn, struct l2cap_chan *chan, int err); void l2cap_send_disconn_req(struct l2cap_conn *conn, struct l2cap_chan *chan, int err); struct l2cap_chan *l2cap_chan_alloc(struct sock *sk); void l2cap_chan_del(struct l2cap_chan *chan, int err); void l2cap_chan_del(struct l2cap_chan *chan, int err); int l2cap_do_connect(struct sock *sk); void l2cap_chan_free(struct l2cap_chan *chan); int l2cap_chan_connect(struct l2cap_chan *chan); #endif /* __L2CAP_H */ #endif /* __L2CAP_H */
include/net/bluetooth/mgmt.h +9 −1 Original line number Original line Diff line number Diff line Loading @@ -195,6 +195,10 @@ struct mgmt_cp_remove_remote_oob_data { bdaddr_t bdaddr; bdaddr_t bdaddr; } __packed; } __packed; #define MGMT_OP_START_DISCOVERY 0x001B #define MGMT_OP_STOP_DISCOVERY 0x001C #define MGMT_EV_CMD_COMPLETE 0x0001 #define MGMT_EV_CMD_COMPLETE 0x0001 struct mgmt_ev_cmd_complete { struct mgmt_ev_cmd_complete { __le16 opcode; __le16 opcode; Loading Loading @@ -226,8 +230,8 @@ struct mgmt_ev_controller_error { #define MGMT_EV_NEW_KEY 0x000A #define MGMT_EV_NEW_KEY 0x000A struct mgmt_ev_new_key { struct mgmt_ev_new_key { __u8 store_hint; struct mgmt_key_info key; struct mgmt_key_info key; __u8 old_key_type; } __packed; } __packed; #define MGMT_EV_CONNECTED 0x000B #define MGMT_EV_CONNECTED 0x000B Loading @@ -249,11 +253,13 @@ struct mgmt_ev_connect_failed { #define MGMT_EV_PIN_CODE_REQUEST 0x000E #define MGMT_EV_PIN_CODE_REQUEST 0x000E struct mgmt_ev_pin_code_request { struct mgmt_ev_pin_code_request { bdaddr_t bdaddr; bdaddr_t bdaddr; __u8 secure; } __packed; } __packed; #define MGMT_EV_USER_CONFIRM_REQUEST 0x000F #define MGMT_EV_USER_CONFIRM_REQUEST 0x000F struct mgmt_ev_user_confirm_request { struct mgmt_ev_user_confirm_request { bdaddr_t bdaddr; bdaddr_t bdaddr; __u8 confirm_hint; __le32 value; __le32 value; } __packed; } __packed; Loading Loading @@ -281,3 +287,5 @@ struct mgmt_ev_remote_name { bdaddr_t bdaddr; bdaddr_t bdaddr; __u8 name[MGMT_MAX_NAME_LENGTH]; __u8 name[MGMT_MAX_NAME_LENGTH]; } __packed; } __packed; #define MGMT_EV_DISCOVERING 0x0014
net/bluetooth/cmtp/core.c +2 −1 Original line number Original line Diff line number Diff line Loading @@ -346,7 +346,8 @@ int cmtp_add_connection(struct cmtp_connadd_req *req, struct socket *sock) bacpy(&session->bdaddr, &bt_sk(sock->sk)->dst); bacpy(&session->bdaddr, &bt_sk(sock->sk)->dst); session->mtu = min_t(uint, l2cap_pi(sock->sk)->omtu, l2cap_pi(sock->sk)->imtu); session->mtu = min_t(uint, l2cap_pi(sock->sk)->chan->omtu, l2cap_pi(sock->sk)->chan->imtu); BT_DBG("mtu %d", session->mtu); BT_DBG("mtu %d", session->mtu); Loading