Lines Matching refs:hdev
49 struct hci_dev *hdev; member
156 void hci_send_to_sock(struct hci_dev *hdev, struct sk_buff *skb) in hci_send_to_sock() argument
161 BT_DBG("hdev %p len %d", hdev, skb->len); in hci_send_to_sock()
168 if (sk->sk_state != BT_BOUND || hci_pi(sk)->hdev != hdev) in hci_send_to_sock()
252 void hci_send_to_monitor(struct hci_dev *hdev, struct sk_buff *skb) in hci_send_to_monitor() argument
261 BT_DBG("hdev %p len %d", hdev, skb->len); in hci_send_to_monitor()
294 hdr->index = cpu_to_le16(hdev->id); in hci_send_to_monitor()
302 static struct sk_buff *create_monitor_event(struct hci_dev *hdev, int event) in create_monitor_event() argument
316 ni->type = hdev->dev_type; in create_monitor_event()
317 ni->bus = hdev->bus; in create_monitor_event()
318 bacpy(&ni->bdaddr, &hdev->bdaddr); in create_monitor_event()
319 memcpy(ni->name, hdev->name, 8); in create_monitor_event()
340 hdr->index = cpu_to_le16(hdev->id); in create_monitor_event()
348 struct hci_dev *hdev; in send_monitor_replay() local
352 list_for_each_entry(hdev, &hci_dev_list, list) { in send_monitor_replay()
355 skb = create_monitor_event(hdev, HCI_DEV_REG); in send_monitor_replay()
367 static void hci_si_event(struct hci_dev *hdev, int type, int dlen, void *data) in hci_si_event() argument
389 hci_send_to_sock(hdev, skb); in hci_si_event()
393 void hci_sock_dev_event(struct hci_dev *hdev, int event) in hci_sock_dev_event() argument
397 BT_DBG("hdev %s event %d", hdev->name, event); in hci_sock_dev_event()
403 skb = create_monitor_event(hdev, event); in hci_sock_dev_event()
413 ev.dev_id = hdev->id; in hci_sock_dev_event()
423 if (hci_pi(sk)->hdev == hdev) { in hci_sock_dev_event()
424 hci_pi(sk)->hdev = NULL; in hci_sock_dev_event()
429 hci_dev_put(hdev); in hci_sock_dev_event()
490 struct hci_dev *hdev; in hci_sock_release() local
497 hdev = hci_pi(sk)->hdev; in hci_sock_release()
504 if (hdev) { in hci_sock_release()
506 mgmt_index_added(hdev); in hci_sock_release()
507 hci_dev_clear_flag(hdev, HCI_USER_CHANNEL); in hci_sock_release()
508 hci_dev_close(hdev->id); in hci_sock_release()
511 atomic_dec(&hdev->promisc); in hci_sock_release()
512 hci_dev_put(hdev); in hci_sock_release()
524 static int hci_sock_blacklist_add(struct hci_dev *hdev, void __user *arg) in hci_sock_blacklist_add() argument
532 hci_dev_lock(hdev); in hci_sock_blacklist_add()
534 err = hci_bdaddr_list_add(&hdev->blacklist, &bdaddr, BDADDR_BREDR); in hci_sock_blacklist_add()
536 hci_dev_unlock(hdev); in hci_sock_blacklist_add()
541 static int hci_sock_blacklist_del(struct hci_dev *hdev, void __user *arg) in hci_sock_blacklist_del() argument
549 hci_dev_lock(hdev); in hci_sock_blacklist_del()
551 err = hci_bdaddr_list_del(&hdev->blacklist, &bdaddr, BDADDR_BREDR); in hci_sock_blacklist_del()
553 hci_dev_unlock(hdev); in hci_sock_blacklist_del()
562 struct hci_dev *hdev = hci_pi(sk)->hdev; in hci_sock_bound_ioctl() local
564 if (!hdev) in hci_sock_bound_ioctl()
567 if (hci_dev_test_flag(hdev, HCI_USER_CHANNEL)) in hci_sock_bound_ioctl()
570 if (hci_dev_test_flag(hdev, HCI_UNCONFIGURED)) in hci_sock_bound_ioctl()
573 if (hdev->dev_type != HCI_BREDR) in hci_sock_bound_ioctl()
583 return hci_get_conn_info(hdev, (void __user *) arg); in hci_sock_bound_ioctl()
586 return hci_get_auth_info(hdev, (void __user *) arg); in hci_sock_bound_ioctl()
591 return hci_sock_blacklist_add(hdev, (void __user *) arg); in hci_sock_bound_ioctl()
596 return hci_sock_blacklist_del(hdev, (void __user *) arg); in hci_sock_bound_ioctl()
680 struct hci_dev *hdev = NULL; in hci_sock_bind() local
704 if (hci_pi(sk)->hdev) { in hci_sock_bind()
710 hdev = hci_dev_get(haddr.hci_dev); in hci_sock_bind()
711 if (!hdev) { in hci_sock_bind()
716 atomic_inc(&hdev->promisc); in hci_sock_bind()
719 hci_pi(sk)->hdev = hdev; in hci_sock_bind()
723 if (hci_pi(sk)->hdev) { in hci_sock_bind()
738 hdev = hci_dev_get(haddr.hci_dev); in hci_sock_bind()
739 if (!hdev) { in hci_sock_bind()
744 if (test_bit(HCI_INIT, &hdev->flags) || in hci_sock_bind()
745 hci_dev_test_flag(hdev, HCI_SETUP) || in hci_sock_bind()
746 hci_dev_test_flag(hdev, HCI_CONFIG) || in hci_sock_bind()
747 (!hci_dev_test_flag(hdev, HCI_AUTO_OFF) && in hci_sock_bind()
748 test_bit(HCI_UP, &hdev->flags))) { in hci_sock_bind()
750 hci_dev_put(hdev); in hci_sock_bind()
754 if (hci_dev_test_and_set_flag(hdev, HCI_USER_CHANNEL)) { in hci_sock_bind()
756 hci_dev_put(hdev); in hci_sock_bind()
760 mgmt_index_removed(hdev); in hci_sock_bind()
762 err = hci_dev_open(hdev->id); in hci_sock_bind()
774 hci_dev_clear_flag(hdev, HCI_USER_CHANNEL); in hci_sock_bind()
775 mgmt_index_added(hdev); in hci_sock_bind()
776 hci_dev_put(hdev); in hci_sock_bind()
781 atomic_inc(&hdev->promisc); in hci_sock_bind()
783 hci_pi(sk)->hdev = hdev; in hci_sock_bind()
858 struct hci_dev *hdev; in hci_sock_getname() local
868 hdev = hci_pi(sk)->hdev; in hci_sock_getname()
869 if (!hdev) { in hci_sock_getname()
876 haddr->hci_dev = hdev->id; in hci_sock_getname()
976 struct hci_dev *hdev = NULL; in hci_mgmt_cmd() local
1023 hdev = hci_dev_get(index); in hci_mgmt_cmd()
1024 if (!hdev) { in hci_mgmt_cmd()
1030 if (hci_dev_test_flag(hdev, HCI_SETUP) || in hci_mgmt_cmd()
1031 hci_dev_test_flag(hdev, HCI_CONFIG) || in hci_mgmt_cmd()
1032 hci_dev_test_flag(hdev, HCI_USER_CHANNEL)) { in hci_mgmt_cmd()
1038 if (hci_dev_test_flag(hdev, HCI_UNCONFIGURED) && in hci_mgmt_cmd()
1047 if (no_hdev != !hdev) { in hci_mgmt_cmd()
1061 if (hdev && chan->hdev_init) in hci_mgmt_cmd()
1062 chan->hdev_init(sk, hdev); in hci_mgmt_cmd()
1066 err = handler->func(sk, hdev, cp, len); in hci_mgmt_cmd()
1073 if (hdev) in hci_mgmt_cmd()
1074 hci_dev_put(hdev); in hci_mgmt_cmd()
1085 struct hci_dev *hdev; in hci_sock_sendmsg() local
1121 hdev = hci_pi(sk)->hdev; in hci_sock_sendmsg()
1122 if (!hdev) { in hci_sock_sendmsg()
1127 if (!test_bit(HCI_UP, &hdev->flags)) { in hci_sock_sendmsg()
1157 skb_queue_tail(&hdev->raw_q, skb); in hci_sock_sendmsg()
1158 queue_work(hdev->workqueue, &hdev->tx_work); in hci_sock_sendmsg()
1173 skb_queue_tail(&hdev->raw_q, skb); in hci_sock_sendmsg()
1174 queue_work(hdev->workqueue, &hdev->tx_work); in hci_sock_sendmsg()
1181 skb_queue_tail(&hdev->cmd_q, skb); in hci_sock_sendmsg()
1182 queue_work(hdev->workqueue, &hdev->cmd_work); in hci_sock_sendmsg()
1190 skb_queue_tail(&hdev->raw_q, skb); in hci_sock_sendmsg()
1191 queue_work(hdev->workqueue, &hdev->tx_work); in hci_sock_sendmsg()