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 sysfs_emit(buf, "%pMR\n", &dev->dst); in address_show()
210 struct rfcomm_dev *dev = dev_get_drvdata(tty_dev); in channel_show() local
211 return sysfs_emit(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
447 dev = rfcomm_dev_get(req.dev_id); in __rfcomm_release_dev()
448 if (!dev) in __rfcomm_release_dev()
451 if (dev->flags != NOCAP_FLAGS && !capable(CAP_NET_ADMIN)) { in __rfcomm_release_dev()
452 tty_port_put(&dev->port); in __rfcomm_release_dev()
457 if (test_and_set_bit(RFCOMM_DEV_RELEASED, &dev->status)) { in __rfcomm_release_dev()
458 tty_port_put(&dev->port); in __rfcomm_release_dev()
463 rfcomm_dlc_close(dev->dlc, 0); in __rfcomm_release_dev()
466 tty_port_tty_vhangup(&dev->port); in __rfcomm_release_dev()
468 if (!test_bit(RFCOMM_TTY_OWNED, &dev->status)) in __rfcomm_release_dev()
469 tty_port_put(&dev->port); in __rfcomm_release_dev()
471 tty_port_put(&dev->port); in __rfcomm_release_dev()
499 struct rfcomm_dev *dev; in rfcomm_get_dev_list() local
522 list_for_each_entry(dev, &rfcomm_dev_list, list) { in rfcomm_get_dev_list()
523 if (!tty_port_get(&dev->port)) in rfcomm_get_dev_list()
525 di[n].id = dev->id; in rfcomm_get_dev_list()
526 di[n].flags = dev->flags; in rfcomm_get_dev_list()
527 di[n].state = dev->dlc->state; in rfcomm_get_dev_list()
528 di[n].channel = dev->channel; in rfcomm_get_dev_list()
529 bacpy(&di[n].src, &dev->src); in rfcomm_get_dev_list()
530 bacpy(&di[n].dst, &dev->dst); in rfcomm_get_dev_list()
531 tty_port_put(&dev->port); in rfcomm_get_dev_list()
547 struct rfcomm_dev *dev; in rfcomm_get_dev_info() local
556 dev = rfcomm_dev_get(di.id); in rfcomm_get_dev_info()
557 if (!dev) in rfcomm_get_dev_info()
560 di.flags = dev->flags; in rfcomm_get_dev_info()
561 di.channel = dev->channel; in rfcomm_get_dev_info()
562 di.state = dev->dlc->state; in rfcomm_get_dev_info()
563 bacpy(&di.src, &dev->src); in rfcomm_get_dev_info()
564 bacpy(&di.dst, &dev->dst); in rfcomm_get_dev_info()
569 tty_port_put(&dev->port); in rfcomm_get_dev_info()
597 struct rfcomm_dev *dev = dlc->owner; in rfcomm_dev_data_ready() local
599 if (!dev) { in rfcomm_dev_data_ready()
604 if (!skb_queue_empty(&dev->pending)) { in rfcomm_dev_data_ready()
605 skb_queue_tail(&dev->pending, skb); in rfcomm_dev_data_ready()
611 tty_insert_flip_string(&dev->port, skb->data, skb->len); in rfcomm_dev_data_ready()
612 tty_flip_buffer_push(&dev->port); in rfcomm_dev_data_ready()
619 struct rfcomm_dev *dev = dlc->owner; in rfcomm_dev_state_change() local
620 if (!dev) in rfcomm_dev_state_change()
623 BT_DBG("dlc %p dev %p err %d", dlc, dev, err); in rfcomm_dev_state_change()
625 dev->err = err; in rfcomm_dev_state_change()
627 rfcomm_reparent_device(dev); in rfcomm_dev_state_change()
629 wake_up_interruptible(&dev->port.open_wait); in rfcomm_dev_state_change()
631 tty_port_tty_hangup(&dev->port, false); in rfcomm_dev_state_change()
636 struct rfcomm_dev *dev = dlc->owner; in rfcomm_dev_modem_status() local
637 if (!dev) in rfcomm_dev_modem_status()
640 BT_DBG("dlc %p dev %p v24_sig 0x%02x", dlc, dev, v24_sig); in rfcomm_dev_modem_status()
642 if ((dev->modem_status & TIOCM_CD) && !(v24_sig & RFCOMM_V24_DV)) in rfcomm_dev_modem_status()
643 tty_port_tty_hangup(&dev->port, true); in rfcomm_dev_modem_status()
645 dev->modem_status = in rfcomm_dev_modem_status()
653 static void rfcomm_tty_copy_pending(struct rfcomm_dev *dev) in rfcomm_tty_copy_pending() argument
658 BT_DBG("dev %p", dev); in rfcomm_tty_copy_pending()
660 rfcomm_dlc_lock(dev->dlc); in rfcomm_tty_copy_pending()
662 while ((skb = skb_dequeue(&dev->pending))) { in rfcomm_tty_copy_pending()
663 inserted += tty_insert_flip_string(&dev->port, skb->data, in rfcomm_tty_copy_pending()
668 rfcomm_dlc_unlock(dev->dlc); in rfcomm_tty_copy_pending()
671 tty_flip_buffer_push(&dev->port); in rfcomm_tty_copy_pending()
679 struct rfcomm_dev *dev = tty->driver_data; in rfcomm_tty_cleanup() local
681 clear_bit(RFCOMM_TTY_ATTACHED, &dev->flags); in rfcomm_tty_cleanup()
683 rfcomm_dlc_lock(dev->dlc); in rfcomm_tty_cleanup()
685 rfcomm_dlc_unlock(dev->dlc); in rfcomm_tty_cleanup()
691 skb_queue_purge(&dev->dlc->tx_queue); in rfcomm_tty_cleanup()
693 tty_port_put(&dev->port); in rfcomm_tty_cleanup()
702 struct rfcomm_dev *dev; in rfcomm_tty_install() local
706 dev = rfcomm_dev_get(tty->index); in rfcomm_tty_install()
707 if (!dev) in rfcomm_tty_install()
710 dlc = dev->dlc; in rfcomm_tty_install()
714 tty->driver_data = dev; in rfcomm_tty_install()
716 set_bit(RFCOMM_TTY_ATTACHED, &dev->flags); in rfcomm_tty_install()
719 err = tty_port_install(&dev->port, driver, tty); in rfcomm_tty_install()
730 if (test_bit(RFCOMM_RELEASE_ONHUP, &dev->flags)) { in rfcomm_tty_install()
731 set_bit(RFCOMM_TTY_OWNED, &dev->status); in rfcomm_tty_install()
732 tty_port_put(&dev->port); in rfcomm_tty_install()
740 struct rfcomm_dev *dev = tty->driver_data; in rfcomm_tty_open() local
745 BT_DBG("dev %p dst %pMR channel %d opened %d", dev, &dev->dst, in rfcomm_tty_open()
746 dev->channel, dev->port.count); in rfcomm_tty_open()
748 err = tty_port_open(&dev->port, tty, filp); in rfcomm_tty_open()
757 rfcomm_tty_copy_pending(dev); in rfcomm_tty_open()
759 rfcomm_dlc_unthrottle(dev->dlc); in rfcomm_tty_open()
766 struct rfcomm_dev *dev = tty->driver_data; in rfcomm_tty_close() local
768 BT_DBG("tty %p dev %p dlc %p opened %d", tty, dev, dev->dlc, in rfcomm_tty_close()
769 dev->port.count); in rfcomm_tty_close()
771 tty_port_close(&dev->port, tty, filp); in rfcomm_tty_close()
777 struct rfcomm_dev *dev = tty->driver_data; in rfcomm_tty_write() local
778 struct rfcomm_dlc *dlc = dev->dlc; in rfcomm_tty_write()
787 skb = rfcomm_wmalloc(dev, size + RFCOMM_SKB_RESERVE, GFP_ATOMIC); in rfcomm_tty_write()
806 struct rfcomm_dev *dev = tty->driver_data; in rfcomm_tty_write_room() local
809 if (dev && dev->dlc) in rfcomm_tty_write_room()
810 room = rfcomm_room(dev); in rfcomm_tty_write_room()
860 struct rfcomm_dev *dev = tty->driver_data; in rfcomm_tty_set_termios() local
864 if (!dev || !dev->dlc || !dev->dlc->session) in rfcomm_tty_set_termios()
985 rfcomm_send_rpn(dev->dlc->session, 1, dev->dlc->dlci, baud, in rfcomm_tty_set_termios()
992 struct rfcomm_dev *dev = tty->driver_data; in rfcomm_tty_throttle() local
994 BT_DBG("tty %p dev %p", tty, dev); in rfcomm_tty_throttle()
996 rfcomm_dlc_throttle(dev->dlc); in rfcomm_tty_throttle()
1001 struct rfcomm_dev *dev = tty->driver_data; in rfcomm_tty_unthrottle() local
1003 BT_DBG("tty %p dev %p", tty, dev); in rfcomm_tty_unthrottle()
1005 rfcomm_dlc_unthrottle(dev->dlc); in rfcomm_tty_unthrottle()
1010 struct rfcomm_dev *dev = tty->driver_data; in rfcomm_tty_chars_in_buffer() local
1012 BT_DBG("tty %p dev %p", tty, dev); in rfcomm_tty_chars_in_buffer()
1014 if (!dev || !dev->dlc) in rfcomm_tty_chars_in_buffer()
1017 if (!skb_queue_empty(&dev->dlc->tx_queue)) in rfcomm_tty_chars_in_buffer()
1018 return dev->dlc->mtu; in rfcomm_tty_chars_in_buffer()
1025 struct rfcomm_dev *dev = tty->driver_data; in rfcomm_tty_flush_buffer() local
1027 BT_DBG("tty %p dev %p", tty, dev); in rfcomm_tty_flush_buffer()
1029 if (!dev || !dev->dlc) in rfcomm_tty_flush_buffer()
1032 skb_queue_purge(&dev->dlc->tx_queue); in rfcomm_tty_flush_buffer()
1048 struct rfcomm_dev *dev = tty->driver_data; in rfcomm_tty_hangup() local
1050 BT_DBG("tty %p dev %p", tty, dev); in rfcomm_tty_hangup()
1052 tty_port_hangup(&dev->port); in rfcomm_tty_hangup()
1057 struct rfcomm_dev *dev = tty->driver_data; in rfcomm_tty_tiocmget() local
1059 BT_DBG("tty %p dev %p", tty, dev); in rfcomm_tty_tiocmget()
1061 return dev->modem_status; in rfcomm_tty_tiocmget()
1066 struct rfcomm_dev *dev = tty->driver_data; in rfcomm_tty_tiocmset() local
1067 struct rfcomm_dlc *dlc = dev->dlc; in rfcomm_tty_tiocmset()
1070 BT_DBG("tty %p dev %p set 0x%02x clear 0x%02x", tty, dev, set, clear); in rfcomm_tty_tiocmset()