Lines Matching refs:hdev
49 struct hci_dev *hdev; member
153 void hci_send_to_sock(struct hci_dev *hdev, struct sk_buff *skb) in hci_send_to_sock() argument
158 BT_DBG("hdev %p len %d", hdev, skb->len); in hci_send_to_sock()
165 if (sk->sk_state != BT_BOUND || hci_pi(sk)->hdev != hdev) in hci_send_to_sock()
254 void hci_send_to_monitor(struct hci_dev *hdev, struct sk_buff *skb) in hci_send_to_monitor() argument
263 BT_DBG("hdev %p len %d", hdev, skb->len); in hci_send_to_monitor()
299 hdr->index = cpu_to_le16(hdev->id); in hci_send_to_monitor()
307 static struct sk_buff *create_monitor_event(struct hci_dev *hdev, int event) in create_monitor_event() argument
322 ni->type = hdev->dev_type; in create_monitor_event()
323 ni->bus = hdev->bus; in create_monitor_event()
324 bacpy(&ni->bdaddr, &hdev->bdaddr); in create_monitor_event()
325 memcpy(ni->name, hdev->name, 8); in create_monitor_event()
339 if (hdev->manufacturer == 0xffff) in create_monitor_event()
350 bacpy(&ii->bdaddr, &hdev->bdaddr); in create_monitor_event()
351 ii->manufacturer = cpu_to_le16(hdev->manufacturer); in create_monitor_event()
380 hdr->index = cpu_to_le16(hdev->id); in create_monitor_event()
388 struct hci_dev *hdev; in send_monitor_replay() local
392 list_for_each_entry(hdev, &hci_dev_list, list) { in send_monitor_replay()
395 skb = create_monitor_event(hdev, HCI_DEV_REG); in send_monitor_replay()
402 if (!test_bit(HCI_RUNNING, &hdev->flags)) in send_monitor_replay()
405 skb = create_monitor_event(hdev, HCI_DEV_OPEN); in send_monitor_replay()
412 if (test_bit(HCI_UP, &hdev->flags)) in send_monitor_replay()
413 skb = create_monitor_event(hdev, HCI_DEV_UP); in send_monitor_replay()
414 else if (hci_dev_test_flag(hdev, HCI_SETUP)) in send_monitor_replay()
415 skb = create_monitor_event(hdev, HCI_DEV_SETUP); in send_monitor_replay()
429 static void hci_si_event(struct hci_dev *hdev, int type, int dlen, void *data) in hci_si_event() argument
451 hci_send_to_sock(hdev, skb); in hci_si_event()
455 void hci_sock_dev_event(struct hci_dev *hdev, int event) in hci_sock_dev_event() argument
457 BT_DBG("hdev %s event %d", hdev->name, event); in hci_sock_dev_event()
463 skb = create_monitor_event(hdev, event); in hci_sock_dev_event()
476 ev.dev_id = hdev->id; in hci_sock_dev_event()
487 if (hci_pi(sk)->hdev == hdev) { in hci_sock_dev_event()
488 hci_pi(sk)->hdev = NULL; in hci_sock_dev_event()
493 hci_dev_put(hdev); in hci_sock_dev_event()
554 struct hci_dev *hdev; in hci_sock_release() local
561 hdev = hci_pi(sk)->hdev; in hci_sock_release()
568 if (hdev) { in hci_sock_release()
579 hci_dev_do_close(hdev); in hci_sock_release()
580 hci_dev_clear_flag(hdev, HCI_USER_CHANNEL); in hci_sock_release()
581 mgmt_index_added(hdev); in hci_sock_release()
584 atomic_dec(&hdev->promisc); in hci_sock_release()
585 hci_dev_put(hdev); in hci_sock_release()
597 static int hci_sock_blacklist_add(struct hci_dev *hdev, void __user *arg) in hci_sock_blacklist_add() argument
605 hci_dev_lock(hdev); in hci_sock_blacklist_add()
607 err = hci_bdaddr_list_add(&hdev->blacklist, &bdaddr, BDADDR_BREDR); in hci_sock_blacklist_add()
609 hci_dev_unlock(hdev); in hci_sock_blacklist_add()
614 static int hci_sock_blacklist_del(struct hci_dev *hdev, void __user *arg) in hci_sock_blacklist_del() argument
622 hci_dev_lock(hdev); in hci_sock_blacklist_del()
624 err = hci_bdaddr_list_del(&hdev->blacklist, &bdaddr, BDADDR_BREDR); in hci_sock_blacklist_del()
626 hci_dev_unlock(hdev); in hci_sock_blacklist_del()
635 struct hci_dev *hdev = hci_pi(sk)->hdev; in hci_sock_bound_ioctl() local
637 if (!hdev) in hci_sock_bound_ioctl()
640 if (hci_dev_test_flag(hdev, HCI_USER_CHANNEL)) in hci_sock_bound_ioctl()
643 if (hci_dev_test_flag(hdev, HCI_UNCONFIGURED)) in hci_sock_bound_ioctl()
646 if (hdev->dev_type != HCI_BREDR) in hci_sock_bound_ioctl()
656 return hci_get_conn_info(hdev, (void __user *) arg); in hci_sock_bound_ioctl()
659 return hci_get_auth_info(hdev, (void __user *) arg); in hci_sock_bound_ioctl()
664 return hci_sock_blacklist_add(hdev, (void __user *) arg); in hci_sock_bound_ioctl()
669 return hci_sock_blacklist_del(hdev, (void __user *) arg); in hci_sock_bound_ioctl()
753 struct hci_dev *hdev = NULL; in hci_sock_bind() local
777 if (hci_pi(sk)->hdev) { in hci_sock_bind()
783 hdev = hci_dev_get(haddr.hci_dev); in hci_sock_bind()
784 if (!hdev) { in hci_sock_bind()
789 atomic_inc(&hdev->promisc); in hci_sock_bind()
792 hci_pi(sk)->hdev = hdev; in hci_sock_bind()
796 if (hci_pi(sk)->hdev) { in hci_sock_bind()
811 hdev = hci_dev_get(haddr.hci_dev); in hci_sock_bind()
812 if (!hdev) { in hci_sock_bind()
817 if (test_bit(HCI_INIT, &hdev->flags) || in hci_sock_bind()
818 hci_dev_test_flag(hdev, HCI_SETUP) || in hci_sock_bind()
819 hci_dev_test_flag(hdev, HCI_CONFIG) || in hci_sock_bind()
820 (!hci_dev_test_flag(hdev, HCI_AUTO_OFF) && in hci_sock_bind()
821 test_bit(HCI_UP, &hdev->flags))) { in hci_sock_bind()
823 hci_dev_put(hdev); in hci_sock_bind()
827 if (hci_dev_test_and_set_flag(hdev, HCI_USER_CHANNEL)) { in hci_sock_bind()
829 hci_dev_put(hdev); in hci_sock_bind()
833 mgmt_index_removed(hdev); in hci_sock_bind()
835 err = hci_dev_open(hdev->id); in hci_sock_bind()
847 hci_dev_clear_flag(hdev, HCI_USER_CHANNEL); in hci_sock_bind()
848 mgmt_index_added(hdev); in hci_sock_bind()
849 hci_dev_put(hdev); in hci_sock_bind()
854 atomic_inc(&hdev->promisc); in hci_sock_bind()
856 hci_pi(sk)->hdev = hdev; in hci_sock_bind()
931 struct hci_dev *hdev; in hci_sock_getname() local
941 hdev = hci_pi(sk)->hdev; in hci_sock_getname()
942 if (!hdev) { in hci_sock_getname()
949 haddr->hci_dev = hdev->id; in hci_sock_getname()
1049 struct hci_dev *hdev = NULL; in hci_mgmt_cmd() local
1096 hdev = hci_dev_get(index); in hci_mgmt_cmd()
1097 if (!hdev) { in hci_mgmt_cmd()
1103 if (hci_dev_test_flag(hdev, HCI_SETUP) || in hci_mgmt_cmd()
1104 hci_dev_test_flag(hdev, HCI_CONFIG) || in hci_mgmt_cmd()
1105 hci_dev_test_flag(hdev, HCI_USER_CHANNEL)) { in hci_mgmt_cmd()
1111 if (hci_dev_test_flag(hdev, HCI_UNCONFIGURED) && in hci_mgmt_cmd()
1120 if (no_hdev != !hdev) { in hci_mgmt_cmd()
1134 if (hdev && chan->hdev_init) in hci_mgmt_cmd()
1135 chan->hdev_init(sk, hdev); in hci_mgmt_cmd()
1139 err = handler->func(sk, hdev, cp, len); in hci_mgmt_cmd()
1146 if (hdev) in hci_mgmt_cmd()
1147 hci_dev_put(hdev); in hci_mgmt_cmd()
1158 struct hci_dev *hdev; in hci_sock_sendmsg() local
1194 hdev = hci_pi(sk)->hdev; in hci_sock_sendmsg()
1195 if (!hdev) { in hci_sock_sendmsg()
1200 if (!test_bit(HCI_UP, &hdev->flags)) { in hci_sock_sendmsg()
1230 skb_queue_tail(&hdev->raw_q, skb); in hci_sock_sendmsg()
1231 queue_work(hdev->workqueue, &hdev->tx_work); in hci_sock_sendmsg()
1246 skb_queue_tail(&hdev->raw_q, skb); in hci_sock_sendmsg()
1247 queue_work(hdev->workqueue, &hdev->tx_work); in hci_sock_sendmsg()
1254 skb_queue_tail(&hdev->cmd_q, skb); in hci_sock_sendmsg()
1255 queue_work(hdev->workqueue, &hdev->cmd_work); in hci_sock_sendmsg()
1269 skb_queue_tail(&hdev->raw_q, skb); in hci_sock_sendmsg()
1270 queue_work(hdev->workqueue, &hdev->tx_work); in hci_sock_sendmsg()