Lines Matching refs:hdev
53 struct hci_dev *hdev; member
65 struct hci_dev *hdev = hci_pi(sk)->hdev; in hci_hdev_from_sock() local
67 if (!hdev) in hci_hdev_from_sock()
69 if (hci_dev_test_flag(hdev, HCI_UNREGISTER)) in hci_hdev_from_sock()
71 return hdev; in hci_hdev_from_sock()
203 void hci_send_to_sock(struct hci_dev *hdev, struct sk_buff *skb) in hci_send_to_sock() argument
208 BT_DBG("hdev %p len %d", hdev, skb->len); in hci_send_to_sock()
215 if (sk->sk_state != BT_BOUND || hci_pi(sk)->hdev != hdev) in hci_send_to_sock()
359 void hci_send_to_monitor(struct hci_dev *hdev, struct sk_buff *skb) in hci_send_to_monitor() argument
368 BT_DBG("hdev %p len %d", hdev, skb->len); in hci_send_to_monitor()
418 hdr->index = cpu_to_le16(hdev->id); in hci_send_to_monitor()
426 void hci_send_monitor_ctrl_event(struct hci_dev *hdev, u16 event, in hci_send_monitor_ctrl_event() argument
433 if (hdev) in hci_send_monitor_ctrl_event()
434 index = cpu_to_le16(hdev->id); in hci_send_monitor_ctrl_event()
480 static struct sk_buff *create_monitor_event(struct hci_dev *hdev, int event) in create_monitor_event() argument
496 ni->bus = hdev->bus; in create_monitor_event()
497 bacpy(&ni->bdaddr, &hdev->bdaddr); in create_monitor_event()
498 memcpy_and_pad(ni->name, sizeof(ni->name), hdev->name, in create_monitor_event()
499 strnlen(hdev->name, sizeof(ni->name)), '\0'); in create_monitor_event()
513 if (hdev->manufacturer == 0xffff) in create_monitor_event()
523 bacpy(&ii->bdaddr, &hdev->bdaddr); in create_monitor_event()
524 ii->manufacturer = cpu_to_le16(hdev->manufacturer); in create_monitor_event()
553 hdr->index = cpu_to_le16(hdev->id); in create_monitor_event()
610 if (hci_pi(sk)->hdev) in create_monitor_ctrl_open()
611 hdr->index = cpu_to_le16(hci_pi(sk)->hdev->id); in create_monitor_ctrl_open()
650 if (hci_pi(sk)->hdev) in create_monitor_ctrl_close()
651 hdr->index = cpu_to_le16(hci_pi(sk)->hdev->id); in create_monitor_ctrl_close()
724 struct hci_dev *hdev; in send_monitor_replay() local
728 list_for_each_entry(hdev, &hci_dev_list, list) { in send_monitor_replay()
731 skb = create_monitor_event(hdev, HCI_DEV_REG); in send_monitor_replay()
738 if (!test_bit(HCI_RUNNING, &hdev->flags)) in send_monitor_replay()
741 skb = create_monitor_event(hdev, HCI_DEV_OPEN); in send_monitor_replay()
748 if (test_bit(HCI_UP, &hdev->flags)) in send_monitor_replay()
749 skb = create_monitor_event(hdev, HCI_DEV_UP); in send_monitor_replay()
750 else if (hci_dev_test_flag(hdev, HCI_SETUP)) in send_monitor_replay()
751 skb = create_monitor_event(hdev, HCI_DEV_SETUP); in send_monitor_replay()
785 static void hci_si_event(struct hci_dev *hdev, int type, int dlen, void *data) in hci_si_event() argument
807 hci_send_to_sock(hdev, skb); in hci_si_event()
811 void hci_sock_dev_event(struct hci_dev *hdev, int event) in hci_sock_dev_event() argument
813 BT_DBG("hdev %s event %d", hdev->name, event); in hci_sock_dev_event()
819 skb = create_monitor_event(hdev, event); in hci_sock_dev_event()
832 ev.dev_id = hdev->id; in hci_sock_dev_event()
842 if (hci_pi(sk)->hdev == hdev) { in hci_sock_dev_event()
904 struct hci_dev *hdev; in hci_sock_release() local
935 hdev = hci_pi(sk)->hdev; in hci_sock_release()
936 if (hdev) { in hci_sock_release()
938 !hci_dev_test_flag(hdev, HCI_UNREGISTER)) { in hci_sock_release()
953 hci_dev_do_close(hdev); in hci_sock_release()
954 hci_dev_clear_flag(hdev, HCI_USER_CHANNEL); in hci_sock_release()
955 mgmt_index_added(hdev); in hci_sock_release()
958 atomic_dec(&hdev->promisc); in hci_sock_release()
959 hci_dev_put(hdev); in hci_sock_release()
968 static int hci_sock_reject_list_add(struct hci_dev *hdev, void __user *arg) in hci_sock_reject_list_add() argument
976 hci_dev_lock(hdev); in hci_sock_reject_list_add()
978 err = hci_bdaddr_list_add(&hdev->reject_list, &bdaddr, BDADDR_BREDR); in hci_sock_reject_list_add()
980 hci_dev_unlock(hdev); in hci_sock_reject_list_add()
985 static int hci_sock_reject_list_del(struct hci_dev *hdev, void __user *arg) in hci_sock_reject_list_del() argument
993 hci_dev_lock(hdev); in hci_sock_reject_list_del()
995 err = hci_bdaddr_list_del(&hdev->reject_list, &bdaddr, BDADDR_BREDR); in hci_sock_reject_list_del()
997 hci_dev_unlock(hdev); in hci_sock_reject_list_del()
1006 struct hci_dev *hdev = hci_hdev_from_sock(sk); in hci_sock_bound_ioctl() local
1008 if (IS_ERR(hdev)) in hci_sock_bound_ioctl()
1009 return PTR_ERR(hdev); in hci_sock_bound_ioctl()
1011 if (hci_dev_test_flag(hdev, HCI_USER_CHANNEL)) in hci_sock_bound_ioctl()
1014 if (hci_dev_test_flag(hdev, HCI_UNCONFIGURED)) in hci_sock_bound_ioctl()
1024 return hci_get_conn_info(hdev, (void __user *)arg); in hci_sock_bound_ioctl()
1027 return hci_get_auth_info(hdev, (void __user *)arg); in hci_sock_bound_ioctl()
1032 return hci_sock_reject_list_add(hdev, (void __user *)arg); in hci_sock_bound_ioctl()
1037 return hci_sock_reject_list_del(hdev, (void __user *)arg); in hci_sock_bound_ioctl()
1193 struct hci_dev *hdev = NULL; in hci_sock_bind() local
1215 hdev = hci_pi(sk)->hdev; in hci_sock_bind()
1216 if (hdev && hci_dev_test_flag(hdev, HCI_UNREGISTER)) { in hci_sock_bind()
1217 hci_pi(sk)->hdev = NULL; in hci_sock_bind()
1219 hci_dev_put(hdev); in hci_sock_bind()
1221 hdev = NULL; in hci_sock_bind()
1230 if (hci_pi(sk)->hdev) { in hci_sock_bind()
1236 hdev = hci_dev_get(haddr.hci_dev); in hci_sock_bind()
1237 if (!hdev) { in hci_sock_bind()
1242 atomic_inc(&hdev->promisc); in hci_sock_bind()
1265 hci_pi(sk)->hdev = hdev; in hci_sock_bind()
1277 if (hci_pi(sk)->hdev) { in hci_sock_bind()
1292 hdev = hci_dev_get(haddr.hci_dev); in hci_sock_bind()
1293 if (!hdev) { in hci_sock_bind()
1298 if (test_bit(HCI_INIT, &hdev->flags) || in hci_sock_bind()
1299 hci_dev_test_flag(hdev, HCI_SETUP) || in hci_sock_bind()
1300 hci_dev_test_flag(hdev, HCI_CONFIG) || in hci_sock_bind()
1301 (!hci_dev_test_flag(hdev, HCI_AUTO_OFF) && in hci_sock_bind()
1302 test_bit(HCI_UP, &hdev->flags))) { in hci_sock_bind()
1304 hci_dev_put(hdev); in hci_sock_bind()
1308 if (hci_dev_test_and_set_flag(hdev, HCI_USER_CHANNEL)) { in hci_sock_bind()
1310 hci_dev_put(hdev); in hci_sock_bind()
1314 mgmt_index_removed(hdev); in hci_sock_bind()
1316 err = hci_dev_open(hdev->id); in hci_sock_bind()
1328 hci_dev_clear_flag(hdev, HCI_USER_CHANNEL); in hci_sock_bind()
1329 mgmt_index_added(hdev); in hci_sock_bind()
1330 hci_dev_put(hdev); in hci_sock_bind()
1356 hci_pi(sk)->hdev = hdev; in hci_sock_bind()
1366 atomic_inc(&hdev->promisc); in hci_sock_bind()
1493 struct hci_dev *hdev; in hci_sock_getname() local
1503 hdev = hci_hdev_from_sock(sk); in hci_sock_getname()
1504 if (IS_ERR(hdev)) { in hci_sock_getname()
1505 err = PTR_ERR(hdev); in hci_sock_getname()
1510 haddr->hci_dev = hdev->id; in hci_sock_getname()
1623 struct hci_dev *hdev = NULL; in hci_mgmt_cmd() local
1674 hdev = hci_dev_get(index); in hci_mgmt_cmd()
1675 if (!hdev) { in hci_mgmt_cmd()
1681 if (hci_dev_test_flag(hdev, HCI_SETUP) || in hci_mgmt_cmd()
1682 hci_dev_test_flag(hdev, HCI_CONFIG) || in hci_mgmt_cmd()
1683 hci_dev_test_flag(hdev, HCI_USER_CHANNEL)) { in hci_mgmt_cmd()
1689 if (hci_dev_test_flag(hdev, HCI_UNCONFIGURED) && in hci_mgmt_cmd()
1699 if (no_hdev != !hdev) { in hci_mgmt_cmd()
1714 if (hdev && chan->hdev_init) in hci_mgmt_cmd()
1715 chan->hdev_init(sk, hdev); in hci_mgmt_cmd()
1719 err = handler->func(sk, hdev, cp, len); in hci_mgmt_cmd()
1726 if (hdev) in hci_mgmt_cmd()
1727 hci_dev_put(hdev); in hci_mgmt_cmd()
1736 struct hci_dev *hdev; in hci_logging_frame() local
1780 hdev = hci_dev_get(index); in hci_logging_frame()
1781 if (!hdev) in hci_logging_frame()
1784 hdev = NULL; in hci_logging_frame()
1792 if (hdev) in hci_logging_frame()
1793 hci_dev_put(hdev); in hci_logging_frame()
1803 struct hci_dev *hdev; in hci_sock_sendmsg() local
1847 hdev = hci_hdev_from_sock(sk); in hci_sock_sendmsg()
1848 if (IS_ERR(hdev)) { in hci_sock_sendmsg()
1849 err = PTR_ERR(hdev); in hci_sock_sendmsg()
1853 if (!test_bit(HCI_UP, &hdev->flags)) { in hci_sock_sendmsg()
1876 skb_queue_tail(&hdev->raw_q, skb); in hci_sock_sendmsg()
1877 queue_work(hdev->workqueue, &hdev->tx_work); in hci_sock_sendmsg()
1897 skb_queue_tail(&hdev->raw_q, skb); in hci_sock_sendmsg()
1898 queue_work(hdev->workqueue, &hdev->tx_work); in hci_sock_sendmsg()
1905 skb_queue_tail(&hdev->cmd_q, skb); in hci_sock_sendmsg()
1906 queue_work(hdev->workqueue, &hdev->cmd_work); in hci_sock_sendmsg()
1921 skb_queue_tail(&hdev->raw_q, skb); in hci_sock_sendmsg()
1922 queue_work(hdev->workqueue, &hdev->tx_work); in hci_sock_sendmsg()