Lines Matching refs:dev

82 	struct rfcomm_dev *dev = container_of(port, struct rfcomm_dev, port);  in rfcomm_dev_destruct()  local
83 struct rfcomm_dlc *dlc = dev->dlc; in rfcomm_dev_destruct()
85 BT_DBG("dev %p dlc %p", dev, dlc); in rfcomm_dev_destruct()
89 if (dlc->owner == dev) in rfcomm_dev_destruct()
95 if (dev->tty_dev) in rfcomm_dev_destruct()
96 tty_unregister_device(rfcomm_tty_driver, dev->id); in rfcomm_dev_destruct()
99 list_del(&dev->list); in rfcomm_dev_destruct()
102 kfree(dev); in rfcomm_dev_destruct()
112 struct rfcomm_dev *dev = container_of(port, struct rfcomm_dev, port); in rfcomm_dev_activate() local
115 err = rfcomm_dlc_open(dev->dlc, &dev->src, &dev->dst, dev->channel); in rfcomm_dev_activate()
124 struct rfcomm_dev *dev = container_of(port, struct rfcomm_dev, port); in rfcomm_dev_carrier_raised() local
126 return (dev->dlc->state == BT_CONNECTED); in rfcomm_dev_carrier_raised()
132 struct rfcomm_dev *dev = container_of(port, struct rfcomm_dev, port); in rfcomm_dev_shutdown() local
134 if (dev->tty_dev->parent) in rfcomm_dev_shutdown()
135 device_move(dev->tty_dev, NULL, DPM_ORDER_DEV_LAST); in rfcomm_dev_shutdown()
138 rfcomm_dlc_close(dev->dlc, 0); in rfcomm_dev_shutdown()
150 struct rfcomm_dev *dev; in __rfcomm_dev_lookup() local
152 list_for_each_entry(dev, &rfcomm_dev_list, list) in __rfcomm_dev_lookup()
153 if (dev->id == id) in __rfcomm_dev_lookup()
154 return dev; in __rfcomm_dev_lookup()
161 struct rfcomm_dev *dev; in rfcomm_dev_get() local
165 dev = __rfcomm_dev_lookup(id); in rfcomm_dev_get()
167 if (dev && !tty_port_get(&dev->port)) in rfcomm_dev_get()
168 dev = NULL; in rfcomm_dev_get()
172 return dev; in rfcomm_dev_get()
175 static void rfcomm_reparent_device(struct rfcomm_dev *dev) in rfcomm_reparent_device() argument
180 hdev = hci_get_route(&dev->dst, &dev->src, BDADDR_BREDR); in rfcomm_reparent_device()
188 conn = hci_conn_hash_lookup_ba(hdev, ACL_LINK, &dev->dst); in rfcomm_reparent_device()
193 if (conn && device_is_registered(&conn->dev)) in rfcomm_reparent_device()
194 device_move(dev->tty_dev, &conn->dev, DPM_ORDER_DEV_AFTER_PARENT); in rfcomm_reparent_device()
203 struct rfcomm_dev *dev = dev_get_drvdata(tty_dev); in address_show() local
204 return sprintf(buf, "%pMR\n", &dev->dst); in address_show()
210 struct rfcomm_dev *dev = dev_get_drvdata(tty_dev); in channel_show() local
211 return sprintf(buf, "%d\n", dev->channel); in channel_show()
220 struct rfcomm_dev *dev, *entry; in __rfcomm_dev_add() local
224 dev = kzalloc(sizeof(struct rfcomm_dev), GFP_KERNEL); in __rfcomm_dev_add()
225 if (!dev) in __rfcomm_dev_add()
231 dev->id = 0; in __rfcomm_dev_add()
234 if (entry->id != dev->id) in __rfcomm_dev_add()
237 dev->id++; in __rfcomm_dev_add()
241 dev->id = req->dev_id; in __rfcomm_dev_add()
244 if (entry->id == dev->id) { in __rfcomm_dev_add()
249 if (entry->id > dev->id - 1) in __rfcomm_dev_add()
256 if ((dev->id < 0) || (dev->id > RFCOMM_MAX_DEV - 1)) { in __rfcomm_dev_add()
261 sprintf(dev->name, "rfcomm%d", dev->id); in __rfcomm_dev_add()
263 list_add(&dev->list, head); in __rfcomm_dev_add()
265 bacpy(&dev->src, &req->src); in __rfcomm_dev_add()
266 bacpy(&dev->dst, &req->dst); in __rfcomm_dev_add()
267 dev->channel = req->channel; in __rfcomm_dev_add()
269 dev->flags = req->flags & in __rfcomm_dev_add()
272 tty_port_init(&dev->port); in __rfcomm_dev_add()
273 dev->port.ops = &rfcomm_port_ops; in __rfcomm_dev_add()
275 skb_queue_head_init(&dev->pending); in __rfcomm_dev_add()
289 skb_queue_tail(&dev->pending, skb); in __rfcomm_dev_add()
298 dlc->owner = dev; in __rfcomm_dev_add()
299 dev->dlc = dlc; in __rfcomm_dev_add()
310 return dev; in __rfcomm_dev_add()
314 kfree(dev); in __rfcomm_dev_add()
320 struct rfcomm_dev *dev; in rfcomm_dev_add() local
325 dev = __rfcomm_dev_add(req, dlc); in rfcomm_dev_add()
326 if (IS_ERR(dev)) { in rfcomm_dev_add()
328 return PTR_ERR(dev); in rfcomm_dev_add()
331 tty = tty_port_register_device(&dev->port, rfcomm_tty_driver, in rfcomm_dev_add()
332 dev->id, NULL); in rfcomm_dev_add()
334 tty_port_put(&dev->port); in rfcomm_dev_add()
338 dev->tty_dev = tty; in rfcomm_dev_add()
339 rfcomm_reparent_device(dev); in rfcomm_dev_add()
340 dev_set_drvdata(dev->tty_dev, dev); in rfcomm_dev_add()
342 if (device_create_file(dev->tty_dev, &dev_attr_address) < 0) in rfcomm_dev_add()
345 if (device_create_file(dev->tty_dev, &dev_attr_channel) < 0) in rfcomm_dev_add()
348 return dev->id; in rfcomm_dev_add()
352 static inline unsigned int rfcomm_room(struct rfcomm_dev *dev) in rfcomm_room() argument
354 struct rfcomm_dlc *dlc = dev->dlc; in rfcomm_room()
357 int pending = 40 - atomic_read(&dev->wmem_alloc); in rfcomm_room()
364 struct rfcomm_dev *dev = (void *) skb->sk; in rfcomm_wfree() local
365 atomic_dec(&dev->wmem_alloc); in rfcomm_wfree()
366 if (test_bit(RFCOMM_TTY_ATTACHED, &dev->flags)) in rfcomm_wfree()
367 tty_port_tty_wakeup(&dev->port); in rfcomm_wfree()
368 tty_port_put(&dev->port); in rfcomm_wfree()
371 static void rfcomm_set_owner_w(struct sk_buff *skb, struct rfcomm_dev *dev) in rfcomm_set_owner_w() argument
373 tty_port_get(&dev->port); in rfcomm_set_owner_w()
374 atomic_inc(&dev->wmem_alloc); in rfcomm_set_owner_w()
375 skb->sk = (void *) dev; in rfcomm_set_owner_w()
379 static struct sk_buff *rfcomm_wmalloc(struct rfcomm_dev *dev, unsigned long size, gfp_t priority) in rfcomm_wmalloc() argument
383 rfcomm_set_owner_w(skb, dev); in rfcomm_wmalloc()
440 struct rfcomm_dev *dev; in __rfcomm_release_dev() local
448 dev = rfcomm_dev_get(req.dev_id); in __rfcomm_release_dev()
449 if (!dev) in __rfcomm_release_dev()
452 if (dev->flags != NOCAP_FLAGS && !capable(CAP_NET_ADMIN)) { in __rfcomm_release_dev()
453 tty_port_put(&dev->port); in __rfcomm_release_dev()
458 if (test_and_set_bit(RFCOMM_DEV_RELEASED, &dev->status)) { in __rfcomm_release_dev()
459 tty_port_put(&dev->port); in __rfcomm_release_dev()
464 rfcomm_dlc_close(dev->dlc, 0); in __rfcomm_release_dev()
467 tty = tty_port_tty_get(&dev->port); in __rfcomm_release_dev()
473 if (!test_bit(RFCOMM_TTY_OWNED, &dev->status)) in __rfcomm_release_dev()
474 tty_port_put(&dev->port); in __rfcomm_release_dev()
476 tty_port_put(&dev->port); in __rfcomm_release_dev()
504 struct rfcomm_dev *dev; in rfcomm_get_dev_list() local
528 list_for_each_entry(dev, &rfcomm_dev_list, list) { in rfcomm_get_dev_list()
529 if (!tty_port_get(&dev->port)) in rfcomm_get_dev_list()
531 (di + n)->id = dev->id; in rfcomm_get_dev_list()
532 (di + n)->flags = dev->flags; in rfcomm_get_dev_list()
533 (di + n)->state = dev->dlc->state; in rfcomm_get_dev_list()
534 (di + n)->channel = dev->channel; in rfcomm_get_dev_list()
535 bacpy(&(di + n)->src, &dev->src); in rfcomm_get_dev_list()
536 bacpy(&(di + n)->dst, &dev->dst); in rfcomm_get_dev_list()
537 tty_port_put(&dev->port); in rfcomm_get_dev_list()
555 struct rfcomm_dev *dev; in rfcomm_get_dev_info() local
564 dev = rfcomm_dev_get(di.id); in rfcomm_get_dev_info()
565 if (!dev) in rfcomm_get_dev_info()
568 di.flags = dev->flags; in rfcomm_get_dev_info()
569 di.channel = dev->channel; in rfcomm_get_dev_info()
570 di.state = dev->dlc->state; in rfcomm_get_dev_info()
571 bacpy(&di.src, &dev->src); in rfcomm_get_dev_info()
572 bacpy(&di.dst, &dev->dst); in rfcomm_get_dev_info()
577 tty_port_put(&dev->port); in rfcomm_get_dev_info()
605 struct rfcomm_dev *dev = dlc->owner; in rfcomm_dev_data_ready() local
607 if (!dev) { in rfcomm_dev_data_ready()
612 if (!skb_queue_empty(&dev->pending)) { in rfcomm_dev_data_ready()
613 skb_queue_tail(&dev->pending, skb); in rfcomm_dev_data_ready()
619 tty_insert_flip_string(&dev->port, skb->data, skb->len); in rfcomm_dev_data_ready()
620 tty_flip_buffer_push(&dev->port); in rfcomm_dev_data_ready()
627 struct rfcomm_dev *dev = dlc->owner; in rfcomm_dev_state_change() local
628 if (!dev) in rfcomm_dev_state_change()
631 BT_DBG("dlc %p dev %p err %d", dlc, dev, err); in rfcomm_dev_state_change()
633 dev->err = err; in rfcomm_dev_state_change()
635 rfcomm_reparent_device(dev); in rfcomm_dev_state_change()
637 wake_up_interruptible(&dev->port.open_wait); in rfcomm_dev_state_change()
639 tty_port_tty_hangup(&dev->port, false); in rfcomm_dev_state_change()
644 struct rfcomm_dev *dev = dlc->owner; in rfcomm_dev_modem_status() local
645 if (!dev) in rfcomm_dev_modem_status()
648 BT_DBG("dlc %p dev %p v24_sig 0x%02x", dlc, dev, v24_sig); in rfcomm_dev_modem_status()
650 if ((dev->modem_status & TIOCM_CD) && !(v24_sig & RFCOMM_V24_DV)) in rfcomm_dev_modem_status()
651 tty_port_tty_hangup(&dev->port, true); in rfcomm_dev_modem_status()
653 dev->modem_status = in rfcomm_dev_modem_status()
661 static void rfcomm_tty_copy_pending(struct rfcomm_dev *dev) in rfcomm_tty_copy_pending() argument
666 BT_DBG("dev %p", dev); in rfcomm_tty_copy_pending()
668 rfcomm_dlc_lock(dev->dlc); in rfcomm_tty_copy_pending()
670 while ((skb = skb_dequeue(&dev->pending))) { in rfcomm_tty_copy_pending()
671 inserted += tty_insert_flip_string(&dev->port, skb->data, in rfcomm_tty_copy_pending()
676 rfcomm_dlc_unlock(dev->dlc); in rfcomm_tty_copy_pending()
679 tty_flip_buffer_push(&dev->port); in rfcomm_tty_copy_pending()
687 struct rfcomm_dev *dev = tty->driver_data; in rfcomm_tty_cleanup() local
689 clear_bit(RFCOMM_TTY_ATTACHED, &dev->flags); in rfcomm_tty_cleanup()
691 rfcomm_dlc_lock(dev->dlc); in rfcomm_tty_cleanup()
693 rfcomm_dlc_unlock(dev->dlc); in rfcomm_tty_cleanup()
699 skb_queue_purge(&dev->dlc->tx_queue); in rfcomm_tty_cleanup()
701 tty_port_put(&dev->port); in rfcomm_tty_cleanup()
710 struct rfcomm_dev *dev; in rfcomm_tty_install() local
714 dev = rfcomm_dev_get(tty->index); in rfcomm_tty_install()
715 if (!dev) in rfcomm_tty_install()
718 dlc = dev->dlc; in rfcomm_tty_install()
722 tty->driver_data = dev; in rfcomm_tty_install()
724 set_bit(RFCOMM_TTY_ATTACHED, &dev->flags); in rfcomm_tty_install()
727 err = tty_port_install(&dev->port, driver, tty); in rfcomm_tty_install()
738 if (test_bit(RFCOMM_RELEASE_ONHUP, &dev->flags)) { in rfcomm_tty_install()
739 set_bit(RFCOMM_TTY_OWNED, &dev->status); in rfcomm_tty_install()
740 tty_port_put(&dev->port); in rfcomm_tty_install()
748 struct rfcomm_dev *dev = tty->driver_data; in rfcomm_tty_open() local
753 BT_DBG("dev %p dst %pMR channel %d opened %d", dev, &dev->dst, in rfcomm_tty_open()
754 dev->channel, dev->port.count); in rfcomm_tty_open()
756 err = tty_port_open(&dev->port, tty, filp); in rfcomm_tty_open()
765 rfcomm_tty_copy_pending(dev); in rfcomm_tty_open()
767 rfcomm_dlc_unthrottle(dev->dlc); in rfcomm_tty_open()
774 struct rfcomm_dev *dev = tty->driver_data; in rfcomm_tty_close() local
776 BT_DBG("tty %p dev %p dlc %p opened %d", tty, dev, dev->dlc, in rfcomm_tty_close()
777 dev->port.count); in rfcomm_tty_close()
779 tty_port_close(&dev->port, tty, filp); in rfcomm_tty_close()
785 struct rfcomm_dev *dev = tty->driver_data; in rfcomm_tty_write() local
786 struct rfcomm_dlc *dlc = dev->dlc; in rfcomm_tty_write()
795 skb = rfcomm_wmalloc(dev, size + RFCOMM_SKB_RESERVE, GFP_ATOMIC); in rfcomm_tty_write()
814 struct rfcomm_dev *dev = tty->driver_data; in rfcomm_tty_write_room() local
817 if (dev && dev->dlc) in rfcomm_tty_write_room()
818 room = rfcomm_room(dev); in rfcomm_tty_write_room()
868 struct rfcomm_dev *dev = tty->driver_data; in rfcomm_tty_set_termios() local
872 if (!dev || !dev->dlc || !dev->dlc->session) in rfcomm_tty_set_termios()
993 rfcomm_send_rpn(dev->dlc->session, 1, dev->dlc->dlci, baud, in rfcomm_tty_set_termios()
1000 struct rfcomm_dev *dev = tty->driver_data; in rfcomm_tty_throttle() local
1002 BT_DBG("tty %p dev %p", tty, dev); in rfcomm_tty_throttle()
1004 rfcomm_dlc_throttle(dev->dlc); in rfcomm_tty_throttle()
1009 struct rfcomm_dev *dev = tty->driver_data; in rfcomm_tty_unthrottle() local
1011 BT_DBG("tty %p dev %p", tty, dev); in rfcomm_tty_unthrottle()
1013 rfcomm_dlc_unthrottle(dev->dlc); in rfcomm_tty_unthrottle()
1018 struct rfcomm_dev *dev = tty->driver_data; in rfcomm_tty_chars_in_buffer() local
1020 BT_DBG("tty %p dev %p", tty, dev); in rfcomm_tty_chars_in_buffer()
1022 if (!dev || !dev->dlc) in rfcomm_tty_chars_in_buffer()
1025 if (!skb_queue_empty(&dev->dlc->tx_queue)) in rfcomm_tty_chars_in_buffer()
1026 return dev->dlc->mtu; in rfcomm_tty_chars_in_buffer()
1033 struct rfcomm_dev *dev = tty->driver_data; in rfcomm_tty_flush_buffer() local
1035 BT_DBG("tty %p dev %p", tty, dev); in rfcomm_tty_flush_buffer()
1037 if (!dev || !dev->dlc) in rfcomm_tty_flush_buffer()
1040 skb_queue_purge(&dev->dlc->tx_queue); in rfcomm_tty_flush_buffer()
1056 struct rfcomm_dev *dev = tty->driver_data; in rfcomm_tty_hangup() local
1058 BT_DBG("tty %p dev %p", tty, dev); in rfcomm_tty_hangup()
1060 tty_port_hangup(&dev->port); in rfcomm_tty_hangup()
1065 struct rfcomm_dev *dev = tty->driver_data; in rfcomm_tty_tiocmget() local
1067 BT_DBG("tty %p dev %p", tty, dev); in rfcomm_tty_tiocmget()
1069 return dev->modem_status; in rfcomm_tty_tiocmget()
1074 struct rfcomm_dev *dev = tty->driver_data; in rfcomm_tty_tiocmset() local
1075 struct rfcomm_dlc *dlc = dev->dlc; in rfcomm_tty_tiocmset()
1078 BT_DBG("tty %p dev %p set 0x%02x clear 0x%02x", tty, dev, set, clear); in rfcomm_tty_tiocmset()