Lines Matching refs:session

73 static struct cmtp_application *cmtp_application_add(struct cmtp_session *session, __u16 appl)  in cmtp_application_add()  argument
77 BT_DBG("session %p application %p appl %d", session, app, appl); in cmtp_application_add()
85 list_add_tail(&app->list, &session->applications); in cmtp_application_add()
90 static void cmtp_application_del(struct cmtp_session *session, struct cmtp_application *app) in cmtp_application_del() argument
92 BT_DBG("session %p application %p", session, app); in cmtp_application_del()
100 static struct cmtp_application *cmtp_application_get(struct cmtp_session *session, int pattern, __u… in cmtp_application_get() argument
105 list_for_each(p, &session->applications) { in cmtp_application_get()
126 static int cmtp_msgnum_get(struct cmtp_session *session) in cmtp_msgnum_get() argument
128 session->msgnum++; in cmtp_msgnum_get()
130 if ((session->msgnum & 0xff) > 200) in cmtp_msgnum_get()
131 session->msgnum = CMTP_INITIAL_MSGNUM + 1; in cmtp_msgnum_get()
133 return session->msgnum; in cmtp_msgnum_get()
136 static void cmtp_send_capimsg(struct cmtp_session *session, struct sk_buff *skb) in cmtp_send_capimsg() argument
140 BT_DBG("session %p skb %p len %d", session, skb, skb->len); in cmtp_send_capimsg()
145 skb_queue_tail(&session->transmit, skb); in cmtp_send_capimsg()
147 wake_up_interruptible(sk_sleep(session->sock->sk)); in cmtp_send_capimsg()
150 static void cmtp_send_interopmsg(struct cmtp_session *session, in cmtp_send_interopmsg() argument
157 BT_DBG("session %p subcmd 0x%02x appl %d msgnum %d", session, subcmd, appl, msgnum); in cmtp_send_interopmsg()
183 cmtp_send_capimsg(session, skb); in cmtp_send_interopmsg()
186 static void cmtp_recv_interopmsg(struct cmtp_session *session, struct sk_buff *skb) in cmtp_recv_interopmsg() argument
188 struct capi_ctr *ctrl = &session->ctrl; in cmtp_recv_interopmsg()
193 BT_DBG("session %p skb %p len %d", session, skb, skb->len); in cmtp_recv_interopmsg()
207 application = cmtp_application_get(session, CMTP_MSGNUM, msgnum); in cmtp_recv_interopmsg()
212 wake_up_interruptible(&session->wait); in cmtp_recv_interopmsg()
220 application = cmtp_application_get(session, CMTP_MAPPING, appl); in cmtp_recv_interopmsg()
224 wake_up_interruptible(&session->wait); in cmtp_recv_interopmsg()
237 session->ncontroller = controller; in cmtp_recv_interopmsg()
238 wake_up_interruptible(&session->wait); in cmtp_recv_interopmsg()
246 session->state = BT_CONNECTED; in cmtp_recv_interopmsg()
309 cmtp_send_interopmsg(session, CAPI_RESP, appl, msgnum, func, in cmtp_recv_interopmsg()
319 void cmtp_recv_capimsg(struct cmtp_session *session, struct sk_buff *skb) in cmtp_recv_capimsg() argument
321 struct capi_ctr *ctrl = &session->ctrl; in cmtp_recv_capimsg()
326 BT_DBG("session %p skb %p len %d", session, skb, skb->len); in cmtp_recv_capimsg()
332 cmtp_recv_interopmsg(session, skb); in cmtp_recv_capimsg()
336 if (session->flags & BIT(CMTP_LOOPBACK)) { in cmtp_recv_capimsg()
344 application = cmtp_application_get(session, CMTP_MAPPING, appl); in cmtp_recv_capimsg()
355 contr = (contr & 0xffffff80) | session->num; in cmtp_recv_capimsg()
371 struct cmtp_session *session = ctrl->driverdata; in cmtp_reset_ctr() local
377 atomic_inc(&session->terminate); in cmtp_reset_ctr()
378 wake_up_process(session->task); in cmtp_reset_ctr()
384 struct cmtp_session *session = ctrl->driverdata; in cmtp_register_appl() local
393 application = cmtp_application_add(session, appl); in cmtp_register_appl()
412 application->msgnum = cmtp_msgnum_get(session); in cmtp_register_appl()
414 cmtp_send_interopmsg(session, CAPI_REQ, 0x0000, application->msgnum, in cmtp_register_appl()
417 add_wait_queue(&session->wait, &wait); in cmtp_register_appl()
442 remove_wait_queue(&session->wait, &wait); in cmtp_register_appl()
445 cmtp_application_del(session, application); in cmtp_register_appl()
452 struct cmtp_session *session = ctrl->driverdata; in cmtp_release_appl() local
457 application = cmtp_application_get(session, CMTP_APPLID, appl); in cmtp_release_appl()
463 application->msgnum = cmtp_msgnum_get(session); in cmtp_release_appl()
465 cmtp_send_interopmsg(session, CAPI_REQ, application->mapping, application->msgnum, in cmtp_release_appl()
468 wait_event_interruptible_timeout(session->wait, in cmtp_release_appl()
471 cmtp_application_del(session, application); in cmtp_release_appl()
476 struct cmtp_session *session = ctrl->driverdata; in cmtp_send_message() local
486 application = cmtp_application_get(session, CMTP_APPLID, appl); in cmtp_send_message()
494 if ((contr & 0x7f) == session->num) { in cmtp_send_message()
499 cmtp_send_capimsg(session, skb); in cmtp_send_message()
512 struct cmtp_session *session = ctrl->driverdata; in cmtp_proc_show() local
517 seq_printf(m, "addr %s\n", session->name); in cmtp_proc_show()
518 seq_printf(m, "ctrl %d\n", session->num); in cmtp_proc_show()
520 list_for_each(p, &session->applications) { in cmtp_proc_show()
541 int cmtp_attach_device(struct cmtp_session *session) in cmtp_attach_device() argument
546 BT_DBG("session %p", session); in cmtp_attach_device()
550 cmtp_send_interopmsg(session, CAPI_REQ, 0xffff, CMTP_INITIAL_MSGNUM, in cmtp_attach_device()
553 ret = wait_event_interruptible_timeout(session->wait, in cmtp_attach_device()
554 session->ncontroller, CMTP_INTEROP_TIMEOUT); in cmtp_attach_device()
556 BT_INFO("Found %d CAPI controller(s) on device %s", session->ncontroller, session->name); in cmtp_attach_device()
561 if (!session->ncontroller) in cmtp_attach_device()
564 if (session->ncontroller > 1) in cmtp_attach_device()
567 session->ctrl.owner = THIS_MODULE; in cmtp_attach_device()
568 session->ctrl.driverdata = session; in cmtp_attach_device()
569 strcpy(session->ctrl.name, session->name); in cmtp_attach_device()
571 session->ctrl.driver_name = "cmtp"; in cmtp_attach_device()
572 session->ctrl.load_firmware = cmtp_load_firmware; in cmtp_attach_device()
573 session->ctrl.reset_ctr = cmtp_reset_ctr; in cmtp_attach_device()
574 session->ctrl.register_appl = cmtp_register_appl; in cmtp_attach_device()
575 session->ctrl.release_appl = cmtp_release_appl; in cmtp_attach_device()
576 session->ctrl.send_message = cmtp_send_message; in cmtp_attach_device()
578 session->ctrl.procinfo = cmtp_procinfo; in cmtp_attach_device()
579 session->ctrl.proc_fops = &cmtp_proc_fops; in cmtp_attach_device()
581 if (attach_capi_ctr(&session->ctrl) < 0) { in cmtp_attach_device()
586 session->num = session->ctrl.cnr; in cmtp_attach_device()
588 BT_DBG("session %p num %d", session, session->num); in cmtp_attach_device()
592 cmtp_send_interopmsg(session, CAPI_REQ, 0xffff, cmtp_msgnum_get(session), in cmtp_attach_device()
595 cmtp_send_interopmsg(session, CAPI_REQ, 0xffff, cmtp_msgnum_get(session), in cmtp_attach_device()
598 cmtp_send_interopmsg(session, CAPI_REQ, 0xffff, cmtp_msgnum_get(session), in cmtp_attach_device()
601 cmtp_send_interopmsg(session, CAPI_REQ, 0xffff, cmtp_msgnum_get(session), in cmtp_attach_device()
607 void cmtp_detach_device(struct cmtp_session *session) in cmtp_detach_device() argument
609 BT_DBG("session %p", session); in cmtp_detach_device()
611 detach_capi_ctr(&session->ctrl); in cmtp_detach_device()