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);
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);
441 struct rfcomm_dev *dev;
449 dev = rfcomm_dev_get(req.dev_id);
450 if (!dev)
453 if (dev->flags != NOCAP_FLAGS && !capable(CAP_NET_ADMIN)) {
454 tty_port_put(&dev->port);
459 if (test_and_set_bit(RFCOMM_DEV_RELEASED, &dev->status)) {
460 tty_port_put(&dev->port);
465 rfcomm_dlc_close(dev->dlc, 0);
468 tty = tty_port_tty_get(&dev->port);
474 if (!test_bit(RFCOMM_TTY_OWNED, &dev->status))
475 tty_port_put(&dev->port);
477 tty_port_put(&dev->port);
505 struct rfcomm_dev *dev;
529 list_for_each_entry(dev, &rfcomm_dev_list, list) {
530 if (!tty_port_get(&dev->port))
532 (di + n)->id = dev->id;
533 (di + n)->flags = dev->flags;
534 (di + n)->state = dev->dlc->state;
535 (di + n)->channel = dev->channel;
536 bacpy(&(di + n)->src, &dev->src);
537 bacpy(&(di + n)->dst, &dev->dst);
538 tty_port_put(&dev->port);
556 struct rfcomm_dev *dev;
565 dev = rfcomm_dev_get(di.id);
566 if (!dev)
569 di.flags = dev->flags;
570 di.channel = dev->channel;
571 di.state = dev->dlc->state;
572 bacpy(&di.src, &dev->src);
573 bacpy(&di.dst, &dev->dst);
578 tty_port_put(&dev->port);
606 struct rfcomm_dev *dev = dlc->owner;
608 if (!dev) {
613 if (!skb_queue_empty(&dev->pending)) {
614 skb_queue_tail(&dev->pending, skb);
620 tty_insert_flip_string(&dev->port, skb->data, skb->len);
621 tty_flip_buffer_push(&dev->port);
628 struct rfcomm_dev *dev = dlc->owner;
629 if (!dev)
632 BT_DBG("dlc %p dev %p err %d", dlc, dev, err);
634 dev->err = err;
636 rfcomm_reparent_device(dev);
638 wake_up_interruptible(&dev->port.open_wait);
640 tty_port_tty_hangup(&dev->port, false);
645 struct rfcomm_dev *dev = dlc->owner;
646 if (!dev)
649 BT_DBG("dlc %p dev %p v24_sig 0x%02x", dlc, dev, v24_sig);
651 if ((dev->modem_status & TIOCM_CD) && !(v24_sig & RFCOMM_V24_DV))
652 tty_port_tty_hangup(&dev->port, true);
654 dev->modem_status =
662 static void rfcomm_tty_copy_pending(struct rfcomm_dev *dev)
667 BT_DBG("dev %p", dev);
669 rfcomm_dlc_lock(dev->dlc);
671 while ((skb = skb_dequeue(&dev->pending))) {
672 inserted += tty_insert_flip_string(&dev->port, skb->data,
677 rfcomm_dlc_unlock(dev->dlc);
680 tty_flip_buffer_push(&dev->port);
688 struct rfcomm_dev *dev = tty->driver_data;
690 clear_bit(RFCOMM_TTY_ATTACHED, &dev->flags);
692 rfcomm_dlc_lock(dev->dlc);
694 rfcomm_dlc_unlock(dev->dlc);
698 * between dev and dlc
700 skb_queue_purge(&dev->dlc->tx_queue);
702 tty_port_put(&dev->port);
711 struct rfcomm_dev *dev;
715 dev = rfcomm_dev_get(tty->index);
716 if (!dev)
719 dlc = dev->dlc;
723 tty->driver_data = dev;
725 set_bit(RFCOMM_TTY_ATTACHED, &dev->flags);
728 err = tty_port_install(&dev->port, driver, tty);
739 if (test_bit(RFCOMM_RELEASE_ONHUP, &dev->flags)) {
740 set_bit(RFCOMM_TTY_OWNED, &dev->status);
741 tty_port_put(&dev->port);
749 struct rfcomm_dev *dev = tty->driver_data;
754 BT_DBG("dev %p dst %pMR channel %d opened %d", dev, &dev->dst,
755 dev->channel, dev->port.count);
757 err = tty_port_open(&dev->port, tty, filp);
766 rfcomm_tty_copy_pending(dev);
768 rfcomm_dlc_unthrottle(dev->dlc);
775 struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
777 BT_DBG("tty %p dev %p dlc %p opened %d", tty, dev, dev->dlc,
778 dev->port.count);
780 tty_port_close(&dev->port, tty, filp);
785 struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
786 struct rfcomm_dlc *dlc = dev->dlc;
795 skb = rfcomm_wmalloc(dev, size + RFCOMM_SKB_RESERVE, GFP_ATOMIC);
814 struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
817 if (dev && dev->dlc)
818 room = rfcomm_room(dev);
879 struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
883 if (!dev || !dev->dlc || !dev->dlc->session)
1004 rfcomm_send_rpn(dev->dlc->session, 1, dev->dlc->dlci, baud,
1011 struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
1013 BT_DBG("tty %p dev %p", tty, dev);
1015 rfcomm_dlc_throttle(dev->dlc);
1020 struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
1022 BT_DBG("tty %p dev %p", tty, dev);
1024 rfcomm_dlc_unthrottle(dev->dlc);
1029 struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
1031 BT_DBG("tty %p dev %p", tty, dev);
1033 if (!dev || !dev->dlc)
1036 if (!skb_queue_empty(&dev->dlc->tx_queue))
1037 return dev->dlc->mtu;
1044 struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
1046 BT_DBG("tty %p dev %p", tty, dev);
1048 if (!dev || !dev->dlc)
1051 skb_queue_purge(&dev->dlc->tx_queue);
1067 struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
1069 BT_DBG("tty %p dev %p", tty, dev);
1071 tty_port_hangup(&dev->port);
1076 struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
1078 BT_DBG("tty %p dev %p", tty, dev);
1080 return dev->modem_status;
1085 struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
1086 struct rfcomm_dlc *dlc = dev->dlc;
1089 BT_DBG("tty %p dev %p set 0x%02x clear 0x%02x", tty, dev, set, clear);