Lines Matching refs:dlc
62 struct rfcomm_dlc *dlc;
74 static void rfcomm_dev_data_ready(struct rfcomm_dlc *dlc, struct sk_buff *skb);
75 static void rfcomm_dev_state_change(struct rfcomm_dlc *dlc, int err);
76 static void rfcomm_dev_modem_status(struct rfcomm_dlc *dlc, u8 v24_sig);
83 struct rfcomm_dlc *dlc = dev->dlc;
85 BT_DBG("dev %p dlc %p", dev, dlc);
87 rfcomm_dlc_lock(dlc);
89 if (dlc->owner == dev)
90 dlc->owner = NULL;
91 rfcomm_dlc_unlock(dlc);
93 rfcomm_dlc_put(dlc);
109 /* device-specific initialization: open the dlc */
115 err = rfcomm_dlc_open(dev->dlc, &dev->src, &dev->dst, dev->channel);
121 /* we block the open until the dlc->state becomes BT_CONNECTED */
126 return (dev->dlc->state == BT_CONNECTED);
129 /* device-specific cleanup: close the dlc */
137 /* close the dlc */
138 rfcomm_dlc_close(dev->dlc, 0);
218 struct rfcomm_dlc *dlc)
277 rfcomm_dlc_lock(dlc);
280 struct sock *sk = dlc->owner;
285 rfcomm_dlc_throttle(dlc);
294 dlc->data_ready = rfcomm_dev_data_ready;
295 dlc->state_change = rfcomm_dev_state_change;
296 dlc->modem_status = rfcomm_dev_modem_status;
298 dlc->owner = dev;
299 dev->dlc = dlc;
301 rfcomm_dev_modem_status(dlc, dlc->remote_v24_sig);
303 rfcomm_dlc_unlock(dlc);
318 static int rfcomm_dev_add(struct rfcomm_dev_req *req, struct rfcomm_dlc *dlc)
325 dev = __rfcomm_dev_add(req, dlc);
327 rfcomm_dlc_put(dlc);
354 struct rfcomm_dlc *dlc = dev->dlc;
359 return max(0, pending) * dlc->mtu;
394 struct rfcomm_dlc *dlc;
410 dlc = rfcomm_pi(sk)->dlc;
411 rfcomm_dlc_hold(dlc);
414 dlc = rfcomm_dlc_exists(&req.src, &req.dst, req.channel);
415 if (IS_ERR(dlc))
416 return PTR_ERR(dlc);
417 if (dlc)
419 dlc = rfcomm_dlc_alloc(GFP_KERNEL);
420 if (!dlc)
424 id = rfcomm_dev_add(&req, dlc);
464 rfcomm_dlc_close(dev->dlc, 0);
533 (di + n)->state = dev->dlc->state;
570 di.state = dev->dlc->state;
603 static void rfcomm_dev_data_ready(struct rfcomm_dlc *dlc, struct sk_buff *skb)
605 struct rfcomm_dev *dev = dlc->owner;
617 BT_DBG("dlc %p len %d", dlc, skb->len);
625 static void rfcomm_dev_state_change(struct rfcomm_dlc *dlc, int err)
627 struct rfcomm_dev *dev = dlc->owner;
631 BT_DBG("dlc %p dev %p err %d", dlc, dev, err);
634 if (dlc->state == BT_CONNECTED) {
638 } else if (dlc->state == BT_CLOSED)
642 static void rfcomm_dev_modem_status(struct rfcomm_dlc *dlc, u8 v24_sig)
644 struct rfcomm_dev *dev = dlc->owner;
648 BT_DBG("dlc %p dev %p v24_sig 0x%02x", dlc, dev, v24_sig);
668 rfcomm_dlc_lock(dev->dlc);
676 rfcomm_dlc_unlock(dev->dlc);
691 rfcomm_dlc_lock(dev->dlc);
693 rfcomm_dlc_unlock(dev->dlc);
696 * purge the dlc->tx_queue to avoid circular dependencies
697 * between dev and dlc
699 skb_queue_purge(&dev->dlc->tx_queue);
711 struct rfcomm_dlc *dlc;
718 dlc = dev->dlc;
721 rfcomm_dlc_lock(dlc);
723 rfcomm_dlc_unlock(dlc);
767 rfcomm_dlc_unthrottle(dev->dlc);
776 BT_DBG("tty %p dev %p dlc %p opened %d", tty, dev, dev->dlc,
786 struct rfcomm_dlc *dlc = dev->dlc;
793 size = min_t(size_t, count, dlc->mtu);
803 rfcomm_dlc_send_noerror(dlc, skb);
817 if (dev && dev->dlc)
872 if (!dev || !dev->dlc || !dev->dlc->session)
993 rfcomm_send_rpn(dev->dlc->session, 1, dev->dlc->dlci, baud,
1004 rfcomm_dlc_throttle(dev->dlc);
1013 rfcomm_dlc_unthrottle(dev->dlc);
1022 if (!dev || !dev->dlc)
1025 if (!skb_queue_empty(&dev->dlc->tx_queue))
1026 return dev->dlc->mtu;
1037 if (!dev || !dev->dlc)
1040 skb_queue_purge(&dev->dlc->tx_queue);
1075 struct rfcomm_dlc *dlc = dev->dlc;
1080 rfcomm_dlc_get_modem_status(dlc, &v24_sig);
1100 rfcomm_dlc_set_modem_status(dlc, v24_sig);