Lines Matching full: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 %u", 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
104 list_for_each_entry(app, &session->applications, list) { in cmtp_application_get()
124 static int cmtp_msgnum_get(struct cmtp_session *session) in cmtp_msgnum_get() argument
126 session->msgnum++; in cmtp_msgnum_get()
128 if ((session->msgnum & 0xff) > 200) in cmtp_msgnum_get()
129 session->msgnum = CMTP_INITIAL_MSGNUM + 1; in cmtp_msgnum_get()
131 return session->msgnum; in cmtp_msgnum_get()
134 static void cmtp_send_capimsg(struct cmtp_session *session, struct sk_buff *skb) in cmtp_send_capimsg() argument
138 BT_DBG("session %p skb %p len %u", session, skb, skb->len); in cmtp_send_capimsg()
143 skb_queue_tail(&session->transmit, skb); in cmtp_send_capimsg()
145 wake_up_interruptible(sk_sleep(session->sock->sk)); in cmtp_send_capimsg()
148 static void cmtp_send_interopmsg(struct cmtp_session *session, in cmtp_send_interopmsg() argument
155 BT_DBG("session %p subcmd 0x%02x appl %u msgnum %u", session, subcmd, appl, msgnum); in cmtp_send_interopmsg()
181 cmtp_send_capimsg(session, skb); in cmtp_send_interopmsg()
184 static void cmtp_recv_interopmsg(struct cmtp_session *session, struct sk_buff *skb) in cmtp_recv_interopmsg() argument
186 struct capi_ctr *ctrl = &session->ctrl; in cmtp_recv_interopmsg()
191 BT_DBG("session %p skb %p len %u", session, skb, skb->len); in cmtp_recv_interopmsg()
205 application = cmtp_application_get(session, CMTP_MSGNUM, msgnum); in cmtp_recv_interopmsg()
210 wake_up_interruptible(&session->wait); in cmtp_recv_interopmsg()
218 application = cmtp_application_get(session, CMTP_MAPPING, appl); in cmtp_recv_interopmsg()
222 wake_up_interruptible(&session->wait); in cmtp_recv_interopmsg()
235 session->ncontroller = controller; in cmtp_recv_interopmsg()
236 wake_up_interruptible(&session->wait); in cmtp_recv_interopmsg()
244 session->state = BT_CONNECTED; in cmtp_recv_interopmsg()
307 cmtp_send_interopmsg(session, CAPI_RESP, appl, msgnum, func, in cmtp_recv_interopmsg()
317 void cmtp_recv_capimsg(struct cmtp_session *session, struct sk_buff *skb) in cmtp_recv_capimsg() argument
319 struct capi_ctr *ctrl = &session->ctrl; in cmtp_recv_capimsg()
324 BT_DBG("session %p skb %p len %u", session, skb, skb->len); in cmtp_recv_capimsg()
330 cmtp_recv_interopmsg(session, skb); in cmtp_recv_capimsg()
334 if (session->flags & BIT(CMTP_LOOPBACK)) { in cmtp_recv_capimsg()
342 application = cmtp_application_get(session, CMTP_MAPPING, appl); in cmtp_recv_capimsg()
353 contr = (contr & 0xffffff80) | session->num; in cmtp_recv_capimsg()
369 struct cmtp_session *session = ctrl->driverdata; in cmtp_reset_ctr() local
375 atomic_inc(&session->terminate); in cmtp_reset_ctr()
376 wake_up_process(session->task); in cmtp_reset_ctr()
382 struct cmtp_session *session = ctrl->driverdata; in cmtp_register_appl() local
391 application = cmtp_application_add(session, appl); in cmtp_register_appl()
410 application->msgnum = cmtp_msgnum_get(session); in cmtp_register_appl()
412 cmtp_send_interopmsg(session, CAPI_REQ, 0x0000, application->msgnum, in cmtp_register_appl()
415 add_wait_queue(&session->wait, &wait); in cmtp_register_appl()
440 remove_wait_queue(&session->wait, &wait); in cmtp_register_appl()
443 cmtp_application_del(session, application); in cmtp_register_appl()
450 struct cmtp_session *session = ctrl->driverdata; in cmtp_release_appl() local
455 application = cmtp_application_get(session, CMTP_APPLID, appl); in cmtp_release_appl()
461 application->msgnum = cmtp_msgnum_get(session); in cmtp_release_appl()
463 cmtp_send_interopmsg(session, CAPI_REQ, application->mapping, application->msgnum, in cmtp_release_appl()
466 wait_event_interruptible_timeout(session->wait, in cmtp_release_appl()
469 cmtp_application_del(session, application); in cmtp_release_appl()
474 struct cmtp_session *session = ctrl->driverdata; in cmtp_send_message() local
484 application = cmtp_application_get(session, CMTP_APPLID, appl); in cmtp_send_message()
492 if ((contr & 0x7f) == session->num) { in cmtp_send_message()
497 cmtp_send_capimsg(session, skb); in cmtp_send_message()
510 struct cmtp_session *session = ctrl->driverdata; in cmtp_proc_show() local
514 seq_printf(m, "addr %s\n", session->name); in cmtp_proc_show()
515 seq_printf(m, "ctrl %d\n", session->num); in cmtp_proc_show()
517 list_for_each_entry(app, &session->applications, list) { in cmtp_proc_show()
524 int cmtp_attach_device(struct cmtp_session *session) in cmtp_attach_device() argument
529 BT_DBG("session %p", session); in cmtp_attach_device()
533 cmtp_send_interopmsg(session, CAPI_REQ, 0xffff, CMTP_INITIAL_MSGNUM, in cmtp_attach_device()
536 ret = wait_event_interruptible_timeout(session->wait, in cmtp_attach_device()
537 session->ncontroller, CMTP_INTEROP_TIMEOUT); in cmtp_attach_device()
539 BT_INFO("Found %d CAPI controller(s) on device %s", session->ncontroller, session->name); in cmtp_attach_device()
544 if (!session->ncontroller) in cmtp_attach_device()
547 if (session->ncontroller > 1) in cmtp_attach_device()
550 session->ctrl.owner = THIS_MODULE; in cmtp_attach_device()
551 session->ctrl.driverdata = session; in cmtp_attach_device()
552 strcpy(session->ctrl.name, session->name); in cmtp_attach_device()
554 session->ctrl.driver_name = "cmtp"; in cmtp_attach_device()
555 session->ctrl.load_firmware = cmtp_load_firmware; in cmtp_attach_device()
556 session->ctrl.reset_ctr = cmtp_reset_ctr; in cmtp_attach_device()
557 session->ctrl.register_appl = cmtp_register_appl; in cmtp_attach_device()
558 session->ctrl.release_appl = cmtp_release_appl; in cmtp_attach_device()
559 session->ctrl.send_message = cmtp_send_message; in cmtp_attach_device()
561 session->ctrl.procinfo = cmtp_procinfo; in cmtp_attach_device()
562 session->ctrl.proc_show = cmtp_proc_show; in cmtp_attach_device()
564 if (attach_capi_ctr(&session->ctrl) < 0) { in cmtp_attach_device()
569 session->num = session->ctrl.cnr; in cmtp_attach_device()
571 BT_DBG("session %p num %d", session, session->num); in cmtp_attach_device()
575 cmtp_send_interopmsg(session, CAPI_REQ, 0xffff, cmtp_msgnum_get(session), in cmtp_attach_device()
578 cmtp_send_interopmsg(session, CAPI_REQ, 0xffff, cmtp_msgnum_get(session), in cmtp_attach_device()
581 cmtp_send_interopmsg(session, CAPI_REQ, 0xffff, cmtp_msgnum_get(session), in cmtp_attach_device()
584 cmtp_send_interopmsg(session, CAPI_REQ, 0xffff, cmtp_msgnum_get(session), in cmtp_attach_device()
590 void cmtp_detach_device(struct cmtp_session *session) in cmtp_detach_device() argument
592 BT_DBG("session %p", session); in cmtp_detach_device()
594 detach_capi_ctr(&session->ctrl); in cmtp_detach_device()