Lines Matching refs:dev
83 struct rfcomm_dev *dev = container_of(port, struct rfcomm_dev, port);
84 struct rfcomm_dlc *dlc = dev->dlc;
86 BT_DBG("dev %p dlc %p", dev, dlc);
89 /* Detach DLC if it's owned by this dev */
90 if (dlc->owner == dev)
96 if (dev->tty_dev)
97 tty_unregister_device(rfcomm_tty_driver, dev->id);
100 list_del(&dev->list);
103 kfree(dev);
113 struct rfcomm_dev *dev = container_of(port, struct rfcomm_dev, port);
116 err = rfcomm_dlc_open(dev->dlc, &dev->src, &dev->dst, dev->channel);
125 struct rfcomm_dev *dev = container_of(port, struct rfcomm_dev, port);
127 return (dev->dlc->state == BT_CONNECTED);
133 struct rfcomm_dev *dev = container_of(port, struct rfcomm_dev, port);
135 if (dev->tty_dev->parent)
136 device_move(dev->tty_dev, NULL, DPM_ORDER_DEV_LAST);
139 rfcomm_dlc_close(dev->dlc, 0);
151 struct rfcomm_dev *dev;
153 list_for_each_entry(dev, &rfcomm_dev_list, list)
154 if (dev->id == id)
155 return dev;
162 struct rfcomm_dev *dev;
166 dev = __rfcomm_dev_lookup(id);
168 if (dev && !tty_port_get(&dev->port))
169 dev = NULL;
173 return dev;
176 static void rfcomm_reparent_device(struct rfcomm_dev *dev)
181 hdev = hci_get_route(&dev->dst, &dev->src, BDADDR_BREDR);
189 conn = hci_conn_hash_lookup_ba(hdev, ACL_LINK, &dev->dst);
194 if (conn && device_is_registered(&conn->dev))
195 device_move(dev->tty_dev, &conn->dev, DPM_ORDER_DEV_AFTER_PARENT);
203 struct rfcomm_dev *dev = dev_get_drvdata(tty_dev);
204 return sprintf(buf, "%pMR\n", &dev->dst);
209 struct rfcomm_dev *dev = dev_get_drvdata(tty_dev);
210 return sprintf(buf, "%d\n", dev->channel);
219 struct rfcomm_dev *dev, *entry;
223 dev = kzalloc(sizeof(struct rfcomm_dev), GFP_KERNEL);
224 if (!dev)
230 dev->id = 0;
233 if (entry->id != dev->id)
236 dev->id++;
240 dev->id = req->dev_id;
243 if (entry->id == dev->id) {
248 if (entry->id > dev->id - 1)
255 if ((dev->id < 0) || (dev->id > RFCOMM_MAX_DEV - 1)) {
260 sprintf(dev->name, "rfcomm%d", dev->id);
262 list_add(&dev->list, head);
264 bacpy(&dev->src, &req->src);
265 bacpy(&dev->dst, &req->dst);
266 dev->channel = req->channel;
268 dev->flags = req->flags &
271 tty_port_init(&dev->port);
272 dev->port.ops = &rfcomm_port_ops;
274 skb_queue_head_init(&dev->pending);
288 skb_queue_tail(&dev->pending, skb);
297 dlc->owner = dev;
298 dev->dlc = dlc;
309 return dev;
313 kfree(dev);
319 struct rfcomm_dev *dev;
324 dev = __rfcomm_dev_add(req, dlc);
325 if (IS_ERR(dev)) {
327 return PTR_ERR(dev);
330 tty = tty_port_register_device(&dev->port, rfcomm_tty_driver,
331 dev->id, NULL);
333 tty_port_put(&dev->port);
337 dev->tty_dev = tty;
338 rfcomm_reparent_device(dev);
339 dev_set_drvdata(dev->tty_dev, dev);
341 if (device_create_file(dev->tty_dev, &dev_attr_address) < 0)
344 if (device_create_file(dev->tty_dev, &dev_attr_channel) < 0)
347 return dev->id;
351 static inline unsigned int rfcomm_room(struct rfcomm_dev *dev)
353 struct rfcomm_dlc *dlc = dev->dlc;
356 int pending = 40 - atomic_read(&dev->wmem_alloc);
363 struct rfcomm_dev *dev = (void *) skb->sk;
364 atomic_dec(&dev->wmem_alloc);
365 if (test_bit(RFCOMM_TTY_ATTACHED, &dev->flags))
366 tty_port_tty_wakeup(&dev->port);
367 tty_port_put(&dev->port);
370 static void rfcomm_set_owner_w(struct sk_buff *skb, struct rfcomm_dev *dev)
372 tty_port_get(&dev->port);
373 atomic_inc(&dev->wmem_alloc);
374 skb->sk = (void *) dev;
378 static struct sk_buff *rfcomm_wmalloc(struct rfcomm_dev *dev, unsigned long size, gfp_t priority)
382 rfcomm_set_owner_w(skb, dev);
439 struct rfcomm_dev *dev;
447 dev = rfcomm_dev_get(req.dev_id);
448 if (!dev)
451 if (dev->flags != NOCAP_FLAGS && !capable(CAP_NET_ADMIN)) {
452 tty_port_put(&dev->port);
457 if (test_and_set_bit(RFCOMM_DEV_RELEASED, &dev->status)) {
458 tty_port_put(&dev->port);
463 rfcomm_dlc_close(dev->dlc, 0);
466 tty = tty_port_tty_get(&dev->port);
472 if (!test_bit(RFCOMM_TTY_OWNED, &dev->status))
473 tty_port_put(&dev->port);
475 tty_port_put(&dev->port);
503 struct rfcomm_dev *dev;
527 list_for_each_entry(dev, &rfcomm_dev_list, list) {
528 if (!tty_port_get(&dev->port))
530 (di + n)->id = dev->id;
531 (di + n)->flags = dev->flags;
532 (di + n)->state = dev->dlc->state;
533 (di + n)->channel = dev->channel;
534 bacpy(&(di + n)->src, &dev->src);
535 bacpy(&(di + n)->dst, &dev->dst);
536 tty_port_put(&dev->port);
554 struct rfcomm_dev *dev;
563 dev = rfcomm_dev_get(di.id);
564 if (!dev)
567 di.flags = dev->flags;
568 di.channel = dev->channel;
569 di.state = dev->dlc->state;
570 bacpy(&di.src, &dev->src);
571 bacpy(&di.dst, &dev->dst);
576 tty_port_put(&dev->port);
604 struct rfcomm_dev *dev = dlc->owner;
606 if (!dev) {
611 if (!skb_queue_empty(&dev->pending)) {
612 skb_queue_tail(&dev->pending, skb);
618 tty_insert_flip_string(&dev->port, skb->data, skb->len);
619 tty_flip_buffer_push(&dev->port);
626 struct rfcomm_dev *dev = dlc->owner;
627 if (!dev)
630 BT_DBG("dlc %p dev %p err %d", dlc, dev, err);
632 dev->err = err;
634 rfcomm_reparent_device(dev);
636 wake_up_interruptible(&dev->port.open_wait);
638 tty_port_tty_hangup(&dev->port, false);
643 struct rfcomm_dev *dev = dlc->owner;
644 if (!dev)
647 BT_DBG("dlc %p dev %p v24_sig 0x%02x", dlc, dev, v24_sig);
649 if ((dev->modem_status & TIOCM_CD) && !(v24_sig & RFCOMM_V24_DV))
650 tty_port_tty_hangup(&dev->port, true);
652 dev->modem_status =
660 static void rfcomm_tty_copy_pending(struct rfcomm_dev *dev)
665 BT_DBG("dev %p", dev);
667 rfcomm_dlc_lock(dev->dlc);
669 while ((skb = skb_dequeue(&dev->pending))) {
670 inserted += tty_insert_flip_string(&dev->port, skb->data,
675 rfcomm_dlc_unlock(dev->dlc);
678 tty_flip_buffer_push(&dev->port);
686 struct rfcomm_dev *dev = tty->driver_data;
688 clear_bit(RFCOMM_TTY_ATTACHED, &dev->flags);
690 rfcomm_dlc_lock(dev->dlc);
692 rfcomm_dlc_unlock(dev->dlc);
696 * between dev and dlc
698 skb_queue_purge(&dev->dlc->tx_queue);
700 tty_port_put(&dev->port);
709 struct rfcomm_dev *dev;
713 dev = rfcomm_dev_get(tty->index);
714 if (!dev)
717 dlc = dev->dlc;
721 tty->driver_data = dev;
723 set_bit(RFCOMM_TTY_ATTACHED, &dev->flags);
726 err = tty_port_install(&dev->port, driver, tty);
737 if (test_bit(RFCOMM_RELEASE_ONHUP, &dev->flags)) {
738 set_bit(RFCOMM_TTY_OWNED, &dev->status);
739 tty_port_put(&dev->port);
747 struct rfcomm_dev *dev = tty->driver_data;
752 BT_DBG("dev %p dst %pMR channel %d opened %d", dev, &dev->dst,
753 dev->channel, dev->port.count);
755 err = tty_port_open(&dev->port, tty, filp);
764 rfcomm_tty_copy_pending(dev);
766 rfcomm_dlc_unthrottle(dev->dlc);
773 struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
775 BT_DBG("tty %p dev %p dlc %p opened %d", tty, dev, dev->dlc,
776 dev->port.count);
778 tty_port_close(&dev->port, tty, filp);
783 struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
784 struct rfcomm_dlc *dlc = dev->dlc;
793 skb = rfcomm_wmalloc(dev, size + RFCOMM_SKB_RESERVE, GFP_ATOMIC);
812 struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
815 if (dev && dev->dlc)
816 room = rfcomm_room(dev);
865 struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
869 if (!dev || !dev->dlc || !dev->dlc->session)
990 rfcomm_send_rpn(dev->dlc->session, 1, dev->dlc->dlci, baud,
997 struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
999 BT_DBG("tty %p dev %p", tty, dev);
1001 rfcomm_dlc_throttle(dev->dlc);
1006 struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
1008 BT_DBG("tty %p dev %p", tty, dev);
1010 rfcomm_dlc_unthrottle(dev->dlc);
1015 struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
1017 BT_DBG("tty %p dev %p", tty, dev);
1019 if (!dev || !dev->dlc)
1022 if (!skb_queue_empty(&dev->dlc->tx_queue))
1023 return dev->dlc->mtu;
1030 struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
1032 BT_DBG("tty %p dev %p", tty, dev);
1034 if (!dev || !dev->dlc)
1037 skb_queue_purge(&dev->dlc->tx_queue);
1053 struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
1055 BT_DBG("tty %p dev %p", tty, dev);
1057 tty_port_hangup(&dev->port);
1062 struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
1064 BT_DBG("tty %p dev %p", tty, dev);
1066 return dev->modem_status;
1071 struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
1072 struct rfcomm_dlc *dlc = dev->dlc;
1075 BT_DBG("tty %p dev %p set 0x%02x clear 0x%02x", tty, dev, set, clear);