2 BlueZ - Bluetooth protocol stack for Linux
3 Copyright (C) 2000-2001 Qualcomm Incorporated
5 Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License version 2 as
9 published by the Free Software Foundation;
11 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
12 OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
13 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
14 IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
15 CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
16 WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
17 ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
18 OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
20 ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
21 COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
22 SOFTWARE IS DISCLAIMED.
25 /* Bluetooth HCI event handling. */
27 #include <linux/module.h>
29 #include <linux/types.h>
30 #include <linux/errno.h>
31 #include <linux/kernel.h>
32 #include <linux/slab.h>
33 #include <linux/poll.h>
34 #include <linux/fcntl.h>
35 #include <linux/init.h>
36 #include <linux/skbuff.h>
37 #include <linux/interrupt.h>
38 #include <linux/notifier.h>
41 #include <asm/system.h>
42 #include <asm/uaccess.h>
43 #include <asm/unaligned.h>
45 #include <net/bluetooth/bluetooth.h>
46 #include <net/bluetooth/hci_core.h>
48 #ifndef CONFIG_BT_HCI_CORE_DEBUG
53 /* Handle HCI Event packets */
55 static void hci_cc_inquiry_cancel(struct hci_dev *hdev, struct sk_buff *skb)
57 __u8 status = *((__u8 *) skb->data);
59 BT_DBG("%s status 0x%x", hdev->name, status);
64 clear_bit(HCI_INQUIRY, &hdev->flags);
66 hci_req_complete(hdev, status);
68 hci_conn_check_pending(hdev);
71 static void hci_cc_exit_periodic_inq(struct hci_dev *hdev, struct sk_buff *skb)
73 __u8 status = *((__u8 *) skb->data);
75 BT_DBG("%s status 0x%x", hdev->name, status);
80 clear_bit(HCI_INQUIRY, &hdev->flags);
82 hci_conn_check_pending(hdev);
85 static void hci_cc_remote_name_req_cancel(struct hci_dev *hdev, struct sk_buff *skb)
87 BT_DBG("%s", hdev->name);
90 static void hci_cc_role_discovery(struct hci_dev *hdev, struct sk_buff *skb)
92 struct hci_rp_role_discovery *rp = (void *) skb->data;
93 struct hci_conn *conn;
95 BT_DBG("%s status 0x%x", hdev->name, rp->status);
102 conn = hci_conn_hash_lookup_handle(hdev, __le16_to_cpu(rp->handle));
105 conn->link_mode &= ~HCI_LM_MASTER;
107 conn->link_mode |= HCI_LM_MASTER;
110 hci_dev_unlock(hdev);
113 static void hci_cc_read_link_policy(struct hci_dev *hdev, struct sk_buff *skb)
115 struct hci_rp_read_link_policy *rp = (void *) skb->data;
116 struct hci_conn *conn;
118 BT_DBG("%s status 0x%x", hdev->name, rp->status);
125 conn = hci_conn_hash_lookup_handle(hdev, __le16_to_cpu(rp->handle));
127 conn->link_policy = __le16_to_cpu(rp->policy);
129 hci_dev_unlock(hdev);
132 static void hci_cc_write_link_policy(struct hci_dev *hdev, struct sk_buff *skb)
134 struct hci_rp_write_link_policy *rp = (void *) skb->data;
135 struct hci_conn *conn;
138 BT_DBG("%s status 0x%x", hdev->name, rp->status);
143 sent = hci_sent_cmd_data(hdev, HCI_OP_WRITE_LINK_POLICY);
149 conn = hci_conn_hash_lookup_handle(hdev, __le16_to_cpu(rp->handle));
151 conn->link_policy = get_unaligned_le16(sent + 2);
153 hci_dev_unlock(hdev);
156 static void hci_cc_read_def_link_policy(struct hci_dev *hdev, struct sk_buff *skb)
158 struct hci_rp_read_def_link_policy *rp = (void *) skb->data;
160 BT_DBG("%s status 0x%x", hdev->name, rp->status);
165 hdev->link_policy = __le16_to_cpu(rp->policy);
168 static void hci_cc_write_def_link_policy(struct hci_dev *hdev, struct sk_buff *skb)
170 __u8 status = *((__u8 *) skb->data);
173 BT_DBG("%s status 0x%x", hdev->name, status);
175 sent = hci_sent_cmd_data(hdev, HCI_OP_WRITE_DEF_LINK_POLICY);
180 hdev->link_policy = get_unaligned_le16(sent);
182 hci_req_complete(hdev, status);
185 static void hci_cc_reset(struct hci_dev *hdev, struct sk_buff *skb)
187 __u8 status = *((__u8 *) skb->data);
189 BT_DBG("%s status 0x%x", hdev->name, status);
191 hci_req_complete(hdev, status);
194 static void hci_cc_write_local_name(struct hci_dev *hdev, struct sk_buff *skb)
196 __u8 status = *((__u8 *) skb->data);
199 BT_DBG("%s status 0x%x", hdev->name, status);
204 sent = hci_sent_cmd_data(hdev, HCI_OP_WRITE_LOCAL_NAME);
208 memcpy(hdev->dev_name, sent, 248);
211 static void hci_cc_read_local_name(struct hci_dev *hdev, struct sk_buff *skb)
213 struct hci_rp_read_local_name *rp = (void *) skb->data;
215 BT_DBG("%s status 0x%x", hdev->name, rp->status);
220 memcpy(hdev->dev_name, rp->name, 248);
223 static void hci_cc_write_auth_enable(struct hci_dev *hdev, struct sk_buff *skb)
225 __u8 status = *((__u8 *) skb->data);
228 BT_DBG("%s status 0x%x", hdev->name, status);
230 sent = hci_sent_cmd_data(hdev, HCI_OP_WRITE_AUTH_ENABLE);
235 __u8 param = *((__u8 *) sent);
237 if (param == AUTH_ENABLED)
238 set_bit(HCI_AUTH, &hdev->flags);
240 clear_bit(HCI_AUTH, &hdev->flags);
243 hci_req_complete(hdev, status);
246 static void hci_cc_write_encrypt_mode(struct hci_dev *hdev, struct sk_buff *skb)
248 __u8 status = *((__u8 *) skb->data);
251 BT_DBG("%s status 0x%x", hdev->name, status);
253 sent = hci_sent_cmd_data(hdev, HCI_OP_WRITE_ENCRYPT_MODE);
258 __u8 param = *((__u8 *) sent);
261 set_bit(HCI_ENCRYPT, &hdev->flags);
263 clear_bit(HCI_ENCRYPT, &hdev->flags);
266 hci_req_complete(hdev, status);
269 static void hci_cc_write_scan_enable(struct hci_dev *hdev, struct sk_buff *skb)
271 __u8 status = *((__u8 *) skb->data);
274 BT_DBG("%s status 0x%x", hdev->name, status);
276 sent = hci_sent_cmd_data(hdev, HCI_OP_WRITE_SCAN_ENABLE);
281 __u8 param = *((__u8 *) sent);
283 clear_bit(HCI_PSCAN, &hdev->flags);
284 clear_bit(HCI_ISCAN, &hdev->flags);
286 if (param & SCAN_INQUIRY)
287 set_bit(HCI_ISCAN, &hdev->flags);
289 if (param & SCAN_PAGE)
290 set_bit(HCI_PSCAN, &hdev->flags);
293 hci_req_complete(hdev, status);
296 static void hci_cc_read_class_of_dev(struct hci_dev *hdev, struct sk_buff *skb)
298 struct hci_rp_read_class_of_dev *rp = (void *) skb->data;
300 BT_DBG("%s status 0x%x", hdev->name, rp->status);
305 memcpy(hdev->dev_class, rp->dev_class, 3);
307 BT_DBG("%s class 0x%.2x%.2x%.2x", hdev->name,
308 hdev->dev_class[2], hdev->dev_class[1], hdev->dev_class[0]);
311 static void hci_cc_write_class_of_dev(struct hci_dev *hdev, struct sk_buff *skb)
313 __u8 status = *((__u8 *) skb->data);
316 BT_DBG("%s status 0x%x", hdev->name, status);
321 sent = hci_sent_cmd_data(hdev, HCI_OP_WRITE_CLASS_OF_DEV);
325 memcpy(hdev->dev_class, sent, 3);
328 static void hci_cc_read_voice_setting(struct hci_dev *hdev, struct sk_buff *skb)
330 struct hci_rp_read_voice_setting *rp = (void *) skb->data;
333 BT_DBG("%s status 0x%x", hdev->name, rp->status);
338 setting = __le16_to_cpu(rp->voice_setting);
340 if (hdev->voice_setting == setting)
343 hdev->voice_setting = setting;
345 BT_DBG("%s voice setting 0x%04x", hdev->name, setting);
348 tasklet_disable(&hdev->tx_task);
349 hdev->notify(hdev, HCI_NOTIFY_VOICE_SETTING);
350 tasklet_enable(&hdev->tx_task);
354 static void hci_cc_write_voice_setting(struct hci_dev *hdev, struct sk_buff *skb)
356 __u8 status = *((__u8 *) skb->data);
360 BT_DBG("%s status 0x%x", hdev->name, status);
365 sent = hci_sent_cmd_data(hdev, HCI_OP_WRITE_VOICE_SETTING);
369 setting = get_unaligned_le16(sent);
371 if (hdev->voice_setting == setting)
374 hdev->voice_setting = setting;
376 BT_DBG("%s voice setting 0x%04x", hdev->name, setting);
379 tasklet_disable(&hdev->tx_task);
380 hdev->notify(hdev, HCI_NOTIFY_VOICE_SETTING);
381 tasklet_enable(&hdev->tx_task);
385 static void hci_cc_host_buffer_size(struct hci_dev *hdev, struct sk_buff *skb)
387 __u8 status = *((__u8 *) skb->data);
389 BT_DBG("%s status 0x%x", hdev->name, status);
391 hci_req_complete(hdev, status);
394 static void hci_cc_read_ssp_mode(struct hci_dev *hdev, struct sk_buff *skb)
396 struct hci_rp_read_ssp_mode *rp = (void *) skb->data;
398 BT_DBG("%s status 0x%x", hdev->name, rp->status);
403 hdev->ssp_mode = rp->mode;
406 static void hci_cc_write_ssp_mode(struct hci_dev *hdev, struct sk_buff *skb)
408 __u8 status = *((__u8 *) skb->data);
411 BT_DBG("%s status 0x%x", hdev->name, status);
416 sent = hci_sent_cmd_data(hdev, HCI_OP_WRITE_SSP_MODE);
420 hdev->ssp_mode = *((__u8 *) sent);
423 static void hci_cc_read_local_version(struct hci_dev *hdev, struct sk_buff *skb)
425 struct hci_rp_read_local_version *rp = (void *) skb->data;
427 BT_DBG("%s status 0x%x", hdev->name, rp->status);
432 hdev->hci_ver = rp->hci_ver;
433 hdev->hci_rev = __le16_to_cpu(rp->hci_rev);
434 hdev->manufacturer = __le16_to_cpu(rp->manufacturer);
436 BT_DBG("%s manufacturer %d hci ver %d:%d", hdev->name,
438 hdev->hci_ver, hdev->hci_rev);
441 static void hci_cc_read_local_commands(struct hci_dev *hdev, struct sk_buff *skb)
443 struct hci_rp_read_local_commands *rp = (void *) skb->data;
445 BT_DBG("%s status 0x%x", hdev->name, rp->status);
450 memcpy(hdev->commands, rp->commands, sizeof(hdev->commands));
453 static void hci_cc_read_local_features(struct hci_dev *hdev, struct sk_buff *skb)
455 struct hci_rp_read_local_features *rp = (void *) skb->data;
457 BT_DBG("%s status 0x%x", hdev->name, rp->status);
462 memcpy(hdev->features, rp->features, 8);
464 /* Adjust default settings according to features
465 * supported by device. */
467 if (hdev->features[0] & LMP_3SLOT)
468 hdev->pkt_type |= (HCI_DM3 | HCI_DH3);
470 if (hdev->features[0] & LMP_5SLOT)
471 hdev->pkt_type |= (HCI_DM5 | HCI_DH5);
473 if (hdev->features[1] & LMP_HV2) {
474 hdev->pkt_type |= (HCI_HV2);
475 hdev->esco_type |= (ESCO_HV2);
478 if (hdev->features[1] & LMP_HV3) {
479 hdev->pkt_type |= (HCI_HV3);
480 hdev->esco_type |= (ESCO_HV3);
483 if (hdev->features[3] & LMP_ESCO)
484 hdev->esco_type |= (ESCO_EV3);
486 if (hdev->features[4] & LMP_EV4)
487 hdev->esco_type |= (ESCO_EV4);
489 if (hdev->features[4] & LMP_EV5)
490 hdev->esco_type |= (ESCO_EV5);
492 BT_DBG("%s features 0x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x", hdev->name,
493 hdev->features[0], hdev->features[1],
494 hdev->features[2], hdev->features[3],
495 hdev->features[4], hdev->features[5],
496 hdev->features[6], hdev->features[7]);
499 static void hci_cc_read_buffer_size(struct hci_dev *hdev, struct sk_buff *skb)
501 struct hci_rp_read_buffer_size *rp = (void *) skb->data;
503 BT_DBG("%s status 0x%x", hdev->name, rp->status);
508 hdev->acl_mtu = __le16_to_cpu(rp->acl_mtu);
509 hdev->sco_mtu = rp->sco_mtu;
510 hdev->acl_pkts = __le16_to_cpu(rp->acl_max_pkt);
511 hdev->sco_pkts = __le16_to_cpu(rp->sco_max_pkt);
513 if (test_bit(HCI_QUIRK_FIXUP_BUFFER_SIZE, &hdev->quirks)) {
518 hdev->acl_cnt = hdev->acl_pkts;
519 hdev->sco_cnt = hdev->sco_pkts;
521 BT_DBG("%s acl mtu %d:%d sco mtu %d:%d", hdev->name,
522 hdev->acl_mtu, hdev->acl_pkts,
523 hdev->sco_mtu, hdev->sco_pkts);
526 static void hci_cc_read_bd_addr(struct hci_dev *hdev, struct sk_buff *skb)
528 struct hci_rp_read_bd_addr *rp = (void *) skb->data;
530 BT_DBG("%s status 0x%x", hdev->name, rp->status);
533 bacpy(&hdev->bdaddr, &rp->bdaddr);
535 hci_req_complete(hdev, rp->status);
538 static inline void hci_cs_inquiry(struct hci_dev *hdev, __u8 status)
540 BT_DBG("%s status 0x%x", hdev->name, status);
543 hci_req_complete(hdev, status);
545 hci_conn_check_pending(hdev);
547 set_bit(HCI_INQUIRY, &hdev->flags);
550 static inline void hci_cs_create_conn(struct hci_dev *hdev, __u8 status)
552 struct hci_cp_create_conn *cp;
553 struct hci_conn *conn;
555 BT_DBG("%s status 0x%x", hdev->name, status);
557 cp = hci_sent_cmd_data(hdev, HCI_OP_CREATE_CONN);
563 conn = hci_conn_hash_lookup_ba(hdev, ACL_LINK, &cp->bdaddr);
565 BT_DBG("%s bdaddr %s conn %p", hdev->name, batostr(&cp->bdaddr), conn);
568 if (conn && conn->state == BT_CONNECT) {
569 if (status != 0x0c || conn->attempt > 2) {
570 conn->state = BT_CLOSED;
571 hci_proto_connect_cfm(conn, status);
574 conn->state = BT_CONNECT2;
578 conn = hci_conn_add(hdev, ACL_LINK, &cp->bdaddr);
581 conn->link_mode |= HCI_LM_MASTER;
583 BT_ERR("No memmory for new connection");
587 hci_dev_unlock(hdev);
590 static void hci_cs_add_sco(struct hci_dev *hdev, __u8 status)
592 struct hci_cp_add_sco *cp;
593 struct hci_conn *acl, *sco;
596 BT_DBG("%s status 0x%x", hdev->name, status);
601 cp = hci_sent_cmd_data(hdev, HCI_OP_ADD_SCO);
605 handle = __le16_to_cpu(cp->handle);
607 BT_DBG("%s handle %d", hdev->name, handle);
611 acl = hci_conn_hash_lookup_handle(hdev, handle);
612 if (acl && (sco = acl->link)) {
613 sco->state = BT_CLOSED;
615 hci_proto_connect_cfm(sco, status);
619 hci_dev_unlock(hdev);
622 static void hci_cs_remote_name_req(struct hci_dev *hdev, __u8 status)
624 BT_DBG("%s status 0x%x", hdev->name, status);
627 static void hci_cs_setup_sync_conn(struct hci_dev *hdev, __u8 status)
629 struct hci_cp_setup_sync_conn *cp;
630 struct hci_conn *acl, *sco;
633 BT_DBG("%s status 0x%x", hdev->name, status);
638 cp = hci_sent_cmd_data(hdev, HCI_OP_SETUP_SYNC_CONN);
642 handle = __le16_to_cpu(cp->handle);
644 BT_DBG("%s handle %d", hdev->name, handle);
648 acl = hci_conn_hash_lookup_handle(hdev, handle);
649 if (acl && (sco = acl->link)) {
650 sco->state = BT_CLOSED;
652 hci_proto_connect_cfm(sco, status);
656 hci_dev_unlock(hdev);
659 static void hci_cs_sniff_mode(struct hci_dev *hdev, __u8 status)
661 struct hci_cp_sniff_mode *cp;
662 struct hci_conn *conn;
664 BT_DBG("%s status 0x%x", hdev->name, status);
669 cp = hci_sent_cmd_data(hdev, HCI_OP_SNIFF_MODE);
675 conn = hci_conn_hash_lookup_handle(hdev, __le16_to_cpu(cp->handle));
677 clear_bit(HCI_CONN_MODE_CHANGE_PEND, &conn->pend);
679 hci_dev_unlock(hdev);
682 static void hci_cs_exit_sniff_mode(struct hci_dev *hdev, __u8 status)
684 struct hci_cp_exit_sniff_mode *cp;
685 struct hci_conn *conn;
687 BT_DBG("%s status 0x%x", hdev->name, status);
692 cp = hci_sent_cmd_data(hdev, HCI_OP_EXIT_SNIFF_MODE);
698 conn = hci_conn_hash_lookup_handle(hdev, __le16_to_cpu(cp->handle));
700 clear_bit(HCI_CONN_MODE_CHANGE_PEND, &conn->pend);
702 hci_dev_unlock(hdev);
705 static inline void hci_inquiry_complete_evt(struct hci_dev *hdev, struct sk_buff *skb)
707 __u8 status = *((__u8 *) skb->data);
709 BT_DBG("%s status %d", hdev->name, status);
711 clear_bit(HCI_INQUIRY, &hdev->flags);
713 hci_req_complete(hdev, status);
715 hci_conn_check_pending(hdev);
718 static inline void hci_inquiry_result_evt(struct hci_dev *hdev, struct sk_buff *skb)
720 struct inquiry_data data;
721 struct inquiry_info *info = (void *) (skb->data + 1);
722 int num_rsp = *((__u8 *) skb->data);
724 BT_DBG("%s num_rsp %d", hdev->name, num_rsp);
731 for (; num_rsp; num_rsp--) {
732 bacpy(&data.bdaddr, &info->bdaddr);
733 data.pscan_rep_mode = info->pscan_rep_mode;
734 data.pscan_period_mode = info->pscan_period_mode;
735 data.pscan_mode = info->pscan_mode;
736 memcpy(data.dev_class, info->dev_class, 3);
737 data.clock_offset = info->clock_offset;
740 hci_inquiry_cache_update(hdev, &data);
743 hci_dev_unlock(hdev);
746 static inline void hci_conn_complete_evt(struct hci_dev *hdev, struct sk_buff *skb)
748 struct hci_ev_conn_complete *ev = (void *) skb->data;
749 struct hci_conn *conn;
751 BT_DBG("%s", hdev->name);
755 conn = hci_conn_hash_lookup_ba(hdev, ev->link_type, &ev->bdaddr);
760 conn->handle = __le16_to_cpu(ev->handle);
761 conn->state = BT_CONNECTED;
763 if (test_bit(HCI_AUTH, &hdev->flags))
764 conn->link_mode |= HCI_LM_AUTH;
766 if (test_bit(HCI_ENCRYPT, &hdev->flags))
767 conn->link_mode |= HCI_LM_ENCRYPT;
769 /* Get remote features */
770 if (conn->type == ACL_LINK) {
771 struct hci_cp_read_remote_features cp;
772 cp.handle = ev->handle;
773 hci_send_cmd(hdev, HCI_OP_READ_REMOTE_FEATURES, sizeof(cp), &cp);
776 /* Set packet type for incoming connection */
777 if (!conn->out && hdev->hci_ver < 3) {
778 struct hci_cp_change_conn_ptype cp;
779 cp.handle = ev->handle;
780 cp.pkt_type = cpu_to_le16(conn->pkt_type);
781 hci_send_cmd(hdev, HCI_OP_CHANGE_CONN_PTYPE,
784 /* Update disconnect timer */
789 conn->state = BT_CLOSED;
791 if (conn->type == ACL_LINK) {
792 struct hci_conn *sco = conn->link;
795 if (lmp_esco_capable(hdev))
796 hci_setup_sync(sco, conn->handle);
798 hci_add_sco(sco, conn->handle);
800 hci_proto_connect_cfm(sco, ev->status);
806 hci_proto_connect_cfm(conn, ev->status);
811 hci_dev_unlock(hdev);
813 hci_conn_check_pending(hdev);
816 static inline void hci_conn_request_evt(struct hci_dev *hdev, struct sk_buff *skb)
818 struct hci_ev_conn_request *ev = (void *) skb->data;
819 int mask = hdev->link_mode;
821 BT_DBG("%s bdaddr %s type 0x%x", hdev->name,
822 batostr(&ev->bdaddr), ev->link_type);
824 mask |= hci_proto_connect_ind(hdev, &ev->bdaddr, ev->link_type);
826 if (mask & HCI_LM_ACCEPT) {
827 /* Connection accepted */
828 struct inquiry_entry *ie;
829 struct hci_conn *conn;
833 if ((ie = hci_inquiry_cache_lookup(hdev, &ev->bdaddr)))
834 memcpy(ie->data.dev_class, ev->dev_class, 3);
836 conn = hci_conn_hash_lookup_ba(hdev, ev->link_type, &ev->bdaddr);
838 if (!(conn = hci_conn_add(hdev, ev->link_type, &ev->bdaddr))) {
839 BT_ERR("No memmory for new connection");
840 hci_dev_unlock(hdev);
845 memcpy(conn->dev_class, ev->dev_class, 3);
846 conn->state = BT_CONNECT;
848 hci_dev_unlock(hdev);
850 if (ev->link_type == ACL_LINK || !lmp_esco_capable(hdev)) {
851 struct hci_cp_accept_conn_req cp;
853 bacpy(&cp.bdaddr, &ev->bdaddr);
855 if (lmp_rswitch_capable(hdev) && (mask & HCI_LM_MASTER))
856 cp.role = 0x00; /* Become master */
858 cp.role = 0x01; /* Remain slave */
860 hci_send_cmd(hdev, HCI_OP_ACCEPT_CONN_REQ,
863 struct hci_cp_accept_sync_conn_req cp;
865 bacpy(&cp.bdaddr, &ev->bdaddr);
866 cp.pkt_type = cpu_to_le16(conn->pkt_type);
868 cp.tx_bandwidth = cpu_to_le32(0x00001f40);
869 cp.rx_bandwidth = cpu_to_le32(0x00001f40);
870 cp.max_latency = cpu_to_le16(0xffff);
871 cp.content_format = cpu_to_le16(hdev->voice_setting);
872 cp.retrans_effort = 0xff;
874 hci_send_cmd(hdev, HCI_OP_ACCEPT_SYNC_CONN_REQ,
878 /* Connection rejected */
879 struct hci_cp_reject_conn_req cp;
881 bacpy(&cp.bdaddr, &ev->bdaddr);
883 hci_send_cmd(hdev, HCI_OP_REJECT_CONN_REQ, sizeof(cp), &cp);
887 static inline void hci_disconn_complete_evt(struct hci_dev *hdev, struct sk_buff *skb)
889 struct hci_ev_disconn_complete *ev = (void *) skb->data;
890 struct hci_conn *conn;
892 BT_DBG("%s status %d", hdev->name, ev->status);
899 conn = hci_conn_hash_lookup_handle(hdev, __le16_to_cpu(ev->handle));
901 conn->state = BT_CLOSED;
902 hci_proto_disconn_ind(conn, ev->reason);
906 hci_dev_unlock(hdev);
909 static inline void hci_auth_complete_evt(struct hci_dev *hdev, struct sk_buff *skb)
911 struct hci_ev_auth_complete *ev = (void *) skb->data;
912 struct hci_conn *conn;
914 BT_DBG("%s status %d", hdev->name, ev->status);
918 conn = hci_conn_hash_lookup_handle(hdev, __le16_to_cpu(ev->handle));
921 conn->link_mode |= HCI_LM_AUTH;
923 clear_bit(HCI_CONN_AUTH_PEND, &conn->pend);
925 hci_auth_cfm(conn, ev->status);
927 if (test_bit(HCI_CONN_ENCRYPT_PEND, &conn->pend)) {
929 struct hci_cp_set_conn_encrypt cp;
930 cp.handle = cpu_to_le16(conn->handle);
932 hci_send_cmd(conn->hdev,
933 HCI_OP_SET_CONN_ENCRYPT, sizeof(cp), &cp);
935 clear_bit(HCI_CONN_ENCRYPT_PEND, &conn->pend);
936 hci_encrypt_cfm(conn, ev->status, 0x00);
941 hci_dev_unlock(hdev);
944 static inline void hci_remote_name_evt(struct hci_dev *hdev, struct sk_buff *skb)
946 BT_DBG("%s", hdev->name);
948 hci_conn_check_pending(hdev);
951 static inline void hci_encrypt_change_evt(struct hci_dev *hdev, struct sk_buff *skb)
953 struct hci_ev_encrypt_change *ev = (void *) skb->data;
954 struct hci_conn *conn;
956 BT_DBG("%s status %d", hdev->name, ev->status);
960 conn = hci_conn_hash_lookup_handle(hdev, __le16_to_cpu(ev->handle));
964 /* Encryption implies authentication */
965 conn->link_mode |= HCI_LM_AUTH;
966 conn->link_mode |= HCI_LM_ENCRYPT;
968 conn->link_mode &= ~HCI_LM_ENCRYPT;
971 clear_bit(HCI_CONN_ENCRYPT_PEND, &conn->pend);
973 hci_encrypt_cfm(conn, ev->status, ev->encrypt);
976 hci_dev_unlock(hdev);
979 static inline void hci_change_link_key_complete_evt(struct hci_dev *hdev, struct sk_buff *skb)
981 struct hci_ev_change_link_key_complete *ev = (void *) skb->data;
982 struct hci_conn *conn;
984 BT_DBG("%s status %d", hdev->name, ev->status);
988 conn = hci_conn_hash_lookup_handle(hdev, __le16_to_cpu(ev->handle));
991 conn->link_mode |= HCI_LM_SECURE;
993 clear_bit(HCI_CONN_AUTH_PEND, &conn->pend);
995 hci_key_change_cfm(conn, ev->status);
998 hci_dev_unlock(hdev);
1001 static inline void hci_remote_features_evt(struct hci_dev *hdev, struct sk_buff *skb)
1003 struct hci_ev_remote_features *ev = (void *) skb->data;
1004 struct hci_conn *conn;
1006 BT_DBG("%s status %d", hdev->name, ev->status);
1013 conn = hci_conn_hash_lookup_handle(hdev, __le16_to_cpu(ev->handle));
1015 memcpy(conn->features, ev->features, 8);
1017 hci_dev_unlock(hdev);
1020 static inline void hci_remote_version_evt(struct hci_dev *hdev, struct sk_buff *skb)
1022 BT_DBG("%s", hdev->name);
1025 static inline void hci_qos_setup_complete_evt(struct hci_dev *hdev, struct sk_buff *skb)
1027 BT_DBG("%s", hdev->name);
1030 static inline void hci_cmd_complete_evt(struct hci_dev *hdev, struct sk_buff *skb)
1032 struct hci_ev_cmd_complete *ev = (void *) skb->data;
1035 skb_pull(skb, sizeof(*ev));
1037 opcode = __le16_to_cpu(ev->opcode);
1040 case HCI_OP_INQUIRY_CANCEL:
1041 hci_cc_inquiry_cancel(hdev, skb);
1044 case HCI_OP_EXIT_PERIODIC_INQ:
1045 hci_cc_exit_periodic_inq(hdev, skb);
1048 case HCI_OP_REMOTE_NAME_REQ_CANCEL:
1049 hci_cc_remote_name_req_cancel(hdev, skb);
1052 case HCI_OP_ROLE_DISCOVERY:
1053 hci_cc_role_discovery(hdev, skb);
1056 case HCI_OP_READ_LINK_POLICY:
1057 hci_cc_read_link_policy(hdev, skb);
1060 case HCI_OP_WRITE_LINK_POLICY:
1061 hci_cc_write_link_policy(hdev, skb);
1064 case HCI_OP_READ_DEF_LINK_POLICY:
1065 hci_cc_read_def_link_policy(hdev, skb);
1068 case HCI_OP_WRITE_DEF_LINK_POLICY:
1069 hci_cc_write_def_link_policy(hdev, skb);
1073 hci_cc_reset(hdev, skb);
1076 case HCI_OP_WRITE_LOCAL_NAME:
1077 hci_cc_write_local_name(hdev, skb);
1080 case HCI_OP_READ_LOCAL_NAME:
1081 hci_cc_read_local_name(hdev, skb);
1084 case HCI_OP_WRITE_AUTH_ENABLE:
1085 hci_cc_write_auth_enable(hdev, skb);
1088 case HCI_OP_WRITE_ENCRYPT_MODE:
1089 hci_cc_write_encrypt_mode(hdev, skb);
1092 case HCI_OP_WRITE_SCAN_ENABLE:
1093 hci_cc_write_scan_enable(hdev, skb);
1096 case HCI_OP_READ_CLASS_OF_DEV:
1097 hci_cc_read_class_of_dev(hdev, skb);
1100 case HCI_OP_WRITE_CLASS_OF_DEV:
1101 hci_cc_write_class_of_dev(hdev, skb);
1104 case HCI_OP_READ_VOICE_SETTING:
1105 hci_cc_read_voice_setting(hdev, skb);
1108 case HCI_OP_WRITE_VOICE_SETTING:
1109 hci_cc_write_voice_setting(hdev, skb);
1112 case HCI_OP_HOST_BUFFER_SIZE:
1113 hci_cc_host_buffer_size(hdev, skb);
1116 case HCI_OP_READ_SSP_MODE:
1117 hci_cc_read_ssp_mode(hdev, skb);
1120 case HCI_OP_WRITE_SSP_MODE:
1121 hci_cc_write_ssp_mode(hdev, skb);
1124 case HCI_OP_READ_LOCAL_VERSION:
1125 hci_cc_read_local_version(hdev, skb);
1128 case HCI_OP_READ_LOCAL_COMMANDS:
1129 hci_cc_read_local_commands(hdev, skb);
1132 case HCI_OP_READ_LOCAL_FEATURES:
1133 hci_cc_read_local_features(hdev, skb);
1136 case HCI_OP_READ_BUFFER_SIZE:
1137 hci_cc_read_buffer_size(hdev, skb);
1140 case HCI_OP_READ_BD_ADDR:
1141 hci_cc_read_bd_addr(hdev, skb);
1145 BT_DBG("%s opcode 0x%x", hdev->name, opcode);
1150 atomic_set(&hdev->cmd_cnt, 1);
1151 if (!skb_queue_empty(&hdev->cmd_q))
1152 hci_sched_cmd(hdev);
1156 static inline void hci_cmd_status_evt(struct hci_dev *hdev, struct sk_buff *skb)
1158 struct hci_ev_cmd_status *ev = (void *) skb->data;
1161 skb_pull(skb, sizeof(*ev));
1163 opcode = __le16_to_cpu(ev->opcode);
1166 case HCI_OP_INQUIRY:
1167 hci_cs_inquiry(hdev, ev->status);
1170 case HCI_OP_CREATE_CONN:
1171 hci_cs_create_conn(hdev, ev->status);
1174 case HCI_OP_ADD_SCO:
1175 hci_cs_add_sco(hdev, ev->status);
1178 case HCI_OP_REMOTE_NAME_REQ:
1179 hci_cs_remote_name_req(hdev, ev->status);
1182 case HCI_OP_SETUP_SYNC_CONN:
1183 hci_cs_setup_sync_conn(hdev, ev->status);
1186 case HCI_OP_SNIFF_MODE:
1187 hci_cs_sniff_mode(hdev, ev->status);
1190 case HCI_OP_EXIT_SNIFF_MODE:
1191 hci_cs_exit_sniff_mode(hdev, ev->status);
1195 BT_DBG("%s opcode 0x%x", hdev->name, opcode);
1200 atomic_set(&hdev->cmd_cnt, 1);
1201 if (!skb_queue_empty(&hdev->cmd_q))
1202 hci_sched_cmd(hdev);
1206 static inline void hci_role_change_evt(struct hci_dev *hdev, struct sk_buff *skb)
1208 struct hci_ev_role_change *ev = (void *) skb->data;
1209 struct hci_conn *conn;
1211 BT_DBG("%s status %d", hdev->name, ev->status);
1215 conn = hci_conn_hash_lookup_ba(hdev, ACL_LINK, &ev->bdaddr);
1219 conn->link_mode &= ~HCI_LM_MASTER;
1221 conn->link_mode |= HCI_LM_MASTER;
1224 clear_bit(HCI_CONN_RSWITCH_PEND, &conn->pend);
1226 hci_role_switch_cfm(conn, ev->status, ev->role);
1229 hci_dev_unlock(hdev);
1232 static inline void hci_num_comp_pkts_evt(struct hci_dev *hdev, struct sk_buff *skb)
1234 struct hci_ev_num_comp_pkts *ev = (void *) skb->data;
1238 skb_pull(skb, sizeof(*ev));
1240 BT_DBG("%s num_hndl %d", hdev->name, ev->num_hndl);
1242 if (skb->len < ev->num_hndl * 4) {
1243 BT_DBG("%s bad parameters", hdev->name);
1247 tasklet_disable(&hdev->tx_task);
1249 for (i = 0, ptr = (__le16 *) skb->data; i < ev->num_hndl; i++) {
1250 struct hci_conn *conn;
1251 __u16 handle, count;
1253 handle = get_unaligned_le16(ptr++);
1254 count = get_unaligned_le16(ptr++);
1256 conn = hci_conn_hash_lookup_handle(hdev, handle);
1258 conn->sent -= count;
1260 if (conn->type == ACL_LINK) {
1261 if ((hdev->acl_cnt += count) > hdev->acl_pkts)
1262 hdev->acl_cnt = hdev->acl_pkts;
1264 if ((hdev->sco_cnt += count) > hdev->sco_pkts)
1265 hdev->sco_cnt = hdev->sco_pkts;
1272 tasklet_enable(&hdev->tx_task);
1275 static inline void hci_mode_change_evt(struct hci_dev *hdev, struct sk_buff *skb)
1277 struct hci_ev_mode_change *ev = (void *) skb->data;
1278 struct hci_conn *conn;
1280 BT_DBG("%s status %d", hdev->name, ev->status);
1284 conn = hci_conn_hash_lookup_handle(hdev, __le16_to_cpu(ev->handle));
1286 conn->mode = ev->mode;
1287 conn->interval = __le16_to_cpu(ev->interval);
1289 if (!test_and_clear_bit(HCI_CONN_MODE_CHANGE_PEND, &conn->pend)) {
1290 if (conn->mode == HCI_CM_ACTIVE)
1291 conn->power_save = 1;
1293 conn->power_save = 0;
1297 hci_dev_unlock(hdev);
1300 static inline void hci_pin_code_request_evt(struct hci_dev *hdev, struct sk_buff *skb)
1302 BT_DBG("%s", hdev->name);
1305 static inline void hci_link_key_request_evt(struct hci_dev *hdev, struct sk_buff *skb)
1307 BT_DBG("%s", hdev->name);
1310 static inline void hci_link_key_notify_evt(struct hci_dev *hdev, struct sk_buff *skb)
1312 BT_DBG("%s", hdev->name);
1315 static inline void hci_clock_offset_evt(struct hci_dev *hdev, struct sk_buff *skb)
1317 struct hci_ev_clock_offset *ev = (void *) skb->data;
1318 struct hci_conn *conn;
1320 BT_DBG("%s status %d", hdev->name, ev->status);
1324 conn = hci_conn_hash_lookup_handle(hdev, __le16_to_cpu(ev->handle));
1325 if (conn && !ev->status) {
1326 struct inquiry_entry *ie;
1328 if ((ie = hci_inquiry_cache_lookup(hdev, &conn->dst))) {
1329 ie->data.clock_offset = ev->clock_offset;
1330 ie->timestamp = jiffies;
1334 hci_dev_unlock(hdev);
1337 static inline void hci_pkt_type_change_evt(struct hci_dev *hdev, struct sk_buff *skb)
1339 struct hci_ev_pkt_type_change *ev = (void *) skb->data;
1340 struct hci_conn *conn;
1342 BT_DBG("%s status %d", hdev->name, ev->status);
1346 conn = hci_conn_hash_lookup_handle(hdev, __le16_to_cpu(ev->handle));
1347 if (conn && !ev->status)
1348 conn->pkt_type = __le16_to_cpu(ev->pkt_type);
1350 hci_dev_unlock(hdev);
1353 static inline void hci_pscan_rep_mode_evt(struct hci_dev *hdev, struct sk_buff *skb)
1355 struct hci_ev_pscan_rep_mode *ev = (void *) skb->data;
1356 struct inquiry_entry *ie;
1358 BT_DBG("%s", hdev->name);
1362 if ((ie = hci_inquiry_cache_lookup(hdev, &ev->bdaddr))) {
1363 ie->data.pscan_rep_mode = ev->pscan_rep_mode;
1364 ie->timestamp = jiffies;
1367 hci_dev_unlock(hdev);
1370 static inline void hci_inquiry_result_with_rssi_evt(struct hci_dev *hdev, struct sk_buff *skb)
1372 struct inquiry_data data;
1373 int num_rsp = *((__u8 *) skb->data);
1375 BT_DBG("%s num_rsp %d", hdev->name, num_rsp);
1382 if ((skb->len - 1) / num_rsp != sizeof(struct inquiry_info_with_rssi)) {
1383 struct inquiry_info_with_rssi_and_pscan_mode *info = (void *) (skb->data + 1);
1385 for (; num_rsp; num_rsp--) {
1386 bacpy(&data.bdaddr, &info->bdaddr);
1387 data.pscan_rep_mode = info->pscan_rep_mode;
1388 data.pscan_period_mode = info->pscan_period_mode;
1389 data.pscan_mode = info->pscan_mode;
1390 memcpy(data.dev_class, info->dev_class, 3);
1391 data.clock_offset = info->clock_offset;
1392 data.rssi = info->rssi;
1394 hci_inquiry_cache_update(hdev, &data);
1397 struct inquiry_info_with_rssi *info = (void *) (skb->data + 1);
1399 for (; num_rsp; num_rsp--) {
1400 bacpy(&data.bdaddr, &info->bdaddr);
1401 data.pscan_rep_mode = info->pscan_rep_mode;
1402 data.pscan_period_mode = info->pscan_period_mode;
1403 data.pscan_mode = 0x00;
1404 memcpy(data.dev_class, info->dev_class, 3);
1405 data.clock_offset = info->clock_offset;
1406 data.rssi = info->rssi;
1408 hci_inquiry_cache_update(hdev, &data);
1412 hci_dev_unlock(hdev);
1415 static inline void hci_remote_ext_features_evt(struct hci_dev *hdev, struct sk_buff *skb)
1417 BT_DBG("%s", hdev->name);
1420 static inline void hci_sync_conn_complete_evt(struct hci_dev *hdev, struct sk_buff *skb)
1422 struct hci_ev_sync_conn_complete *ev = (void *) skb->data;
1423 struct hci_conn *conn;
1425 BT_DBG("%s status %d", hdev->name, ev->status);
1429 conn = hci_conn_hash_lookup_ba(hdev, ev->link_type, &ev->bdaddr);
1431 if (ev->link_type == ESCO_LINK)
1434 conn = hci_conn_hash_lookup_ba(hdev, ESCO_LINK, &ev->bdaddr);
1438 conn->type = SCO_LINK;
1442 conn->handle = __le16_to_cpu(ev->handle);
1443 conn->state = BT_CONNECTED;
1445 conn->state = BT_CLOSED;
1447 hci_proto_connect_cfm(conn, ev->status);
1452 hci_dev_unlock(hdev);
1455 static inline void hci_sync_conn_changed_evt(struct hci_dev *hdev, struct sk_buff *skb)
1457 BT_DBG("%s", hdev->name);
1460 static inline void hci_sniff_subrate_evt(struct hci_dev *hdev, struct sk_buff *skb)
1462 struct hci_ev_sniff_subrate *ev = (void *) skb->data;
1463 struct hci_conn *conn;
1465 BT_DBG("%s status %d", hdev->name, ev->status);
1469 conn = hci_conn_hash_lookup_handle(hdev, __le16_to_cpu(ev->handle));
1473 hci_dev_unlock(hdev);
1476 static inline void hci_extended_inquiry_result_evt(struct hci_dev *hdev, struct sk_buff *skb)
1478 struct inquiry_data data;
1479 struct extended_inquiry_info *info = (void *) (skb->data + 1);
1480 int num_rsp = *((__u8 *) skb->data);
1482 BT_DBG("%s num_rsp %d", hdev->name, num_rsp);
1489 for (; num_rsp; num_rsp--) {
1490 bacpy(&data.bdaddr, &info->bdaddr);
1491 data.pscan_rep_mode = info->pscan_rep_mode;
1492 data.pscan_period_mode = info->pscan_period_mode;
1493 data.pscan_mode = 0x00;
1494 memcpy(data.dev_class, info->dev_class, 3);
1495 data.clock_offset = info->clock_offset;
1496 data.rssi = info->rssi;
1498 hci_inquiry_cache_update(hdev, &data);
1501 hci_dev_unlock(hdev);
1504 static inline void hci_io_capa_request_evt(struct hci_dev *hdev, struct sk_buff *skb)
1506 struct hci_ev_io_capa_request *ev = (void *) skb->data;
1507 struct hci_conn *conn;
1509 BT_DBG("%s", hdev->name);
1513 conn = hci_conn_hash_lookup_ba(hdev, ACL_LINK, &ev->bdaddr);
1515 hci_conn_hold(conn);
1517 hci_dev_unlock(hdev);
1520 static inline void hci_simple_pair_complete_evt(struct hci_dev *hdev, struct sk_buff *skb)
1522 struct hci_ev_simple_pair_complete *ev = (void *) skb->data;
1523 struct hci_conn *conn;
1525 BT_DBG("%s", hdev->name);
1529 conn = hci_conn_hash_lookup_ba(hdev, ACL_LINK, &ev->bdaddr);
1533 hci_dev_unlock(hdev);
1536 void hci_event_packet(struct hci_dev *hdev, struct sk_buff *skb)
1538 struct hci_event_hdr *hdr = (void *) skb->data;
1539 __u8 event = hdr->evt;
1541 skb_pull(skb, HCI_EVENT_HDR_SIZE);
1544 case HCI_EV_INQUIRY_COMPLETE:
1545 hci_inquiry_complete_evt(hdev, skb);
1548 case HCI_EV_INQUIRY_RESULT:
1549 hci_inquiry_result_evt(hdev, skb);
1552 case HCI_EV_CONN_COMPLETE:
1553 hci_conn_complete_evt(hdev, skb);
1556 case HCI_EV_CONN_REQUEST:
1557 hci_conn_request_evt(hdev, skb);
1560 case HCI_EV_DISCONN_COMPLETE:
1561 hci_disconn_complete_evt(hdev, skb);
1564 case HCI_EV_AUTH_COMPLETE:
1565 hci_auth_complete_evt(hdev, skb);
1568 case HCI_EV_REMOTE_NAME:
1569 hci_remote_name_evt(hdev, skb);
1572 case HCI_EV_ENCRYPT_CHANGE:
1573 hci_encrypt_change_evt(hdev, skb);
1576 case HCI_EV_CHANGE_LINK_KEY_COMPLETE:
1577 hci_change_link_key_complete_evt(hdev, skb);
1580 case HCI_EV_REMOTE_FEATURES:
1581 hci_remote_features_evt(hdev, skb);
1584 case HCI_EV_REMOTE_VERSION:
1585 hci_remote_version_evt(hdev, skb);
1588 case HCI_EV_QOS_SETUP_COMPLETE:
1589 hci_qos_setup_complete_evt(hdev, skb);
1592 case HCI_EV_CMD_COMPLETE:
1593 hci_cmd_complete_evt(hdev, skb);
1596 case HCI_EV_CMD_STATUS:
1597 hci_cmd_status_evt(hdev, skb);
1600 case HCI_EV_ROLE_CHANGE:
1601 hci_role_change_evt(hdev, skb);
1604 case HCI_EV_NUM_COMP_PKTS:
1605 hci_num_comp_pkts_evt(hdev, skb);
1608 case HCI_EV_MODE_CHANGE:
1609 hci_mode_change_evt(hdev, skb);
1612 case HCI_EV_PIN_CODE_REQ:
1613 hci_pin_code_request_evt(hdev, skb);
1616 case HCI_EV_LINK_KEY_REQ:
1617 hci_link_key_request_evt(hdev, skb);
1620 case HCI_EV_LINK_KEY_NOTIFY:
1621 hci_link_key_notify_evt(hdev, skb);
1624 case HCI_EV_CLOCK_OFFSET:
1625 hci_clock_offset_evt(hdev, skb);
1628 case HCI_EV_PKT_TYPE_CHANGE:
1629 hci_pkt_type_change_evt(hdev, skb);
1632 case HCI_EV_PSCAN_REP_MODE:
1633 hci_pscan_rep_mode_evt(hdev, skb);
1636 case HCI_EV_INQUIRY_RESULT_WITH_RSSI:
1637 hci_inquiry_result_with_rssi_evt(hdev, skb);
1640 case HCI_EV_REMOTE_EXT_FEATURES:
1641 hci_remote_ext_features_evt(hdev, skb);
1644 case HCI_EV_SYNC_CONN_COMPLETE:
1645 hci_sync_conn_complete_evt(hdev, skb);
1648 case HCI_EV_SYNC_CONN_CHANGED:
1649 hci_sync_conn_changed_evt(hdev, skb);
1652 case HCI_EV_SNIFF_SUBRATE:
1653 hci_sniff_subrate_evt(hdev, skb);
1656 case HCI_EV_EXTENDED_INQUIRY_RESULT:
1657 hci_extended_inquiry_result_evt(hdev, skb);
1660 case HCI_EV_IO_CAPA_REQUEST:
1661 hci_io_capa_request_evt(hdev, skb);
1664 case HCI_EV_SIMPLE_PAIR_COMPLETE:
1665 hci_simple_pair_complete_evt(hdev, skb);
1669 BT_DBG("%s event 0x%x", hdev->name, event);
1674 hdev->stat.evt_rx++;
1677 /* Generate internal stack event */
1678 void hci_si_event(struct hci_dev *hdev, int type, int dlen, void *data)
1680 struct hci_event_hdr *hdr;
1681 struct hci_ev_stack_internal *ev;
1682 struct sk_buff *skb;
1684 skb = bt_skb_alloc(HCI_EVENT_HDR_SIZE + sizeof(*ev) + dlen, GFP_ATOMIC);
1688 hdr = (void *) skb_put(skb, HCI_EVENT_HDR_SIZE);
1689 hdr->evt = HCI_EV_STACK_INTERNAL;
1690 hdr->plen = sizeof(*ev) + dlen;
1692 ev = (void *) skb_put(skb, sizeof(*ev) + dlen);
1694 memcpy(ev->data, data, dlen);
1696 bt_cb(skb)->incoming = 1;
1697 __net_timestamp(skb);
1699 bt_cb(skb)->pkt_type = HCI_EVENT_PKT;
1700 skb->dev = (void *) hdev;
1701 hci_send_to_sock(hdev, skb);