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 %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()
291 cmtp_send_interopmsg(session, CAPI_RESP, appl, msgnum, func, in cmtp_recv_interopmsg()
301 void cmtp_recv_capimsg(struct cmtp_session *session, struct sk_buff *skb) in cmtp_recv_capimsg() argument
303 struct capi_ctr *ctrl = &session->ctrl; in cmtp_recv_capimsg()
308 BT_DBG("session %p skb %p len %u", session, skb, skb->len); in cmtp_recv_capimsg()
314 cmtp_recv_interopmsg(session, skb); in cmtp_recv_capimsg()
318 if (session->flags & BIT(CMTP_LOOPBACK)) { in cmtp_recv_capimsg()
326 application = cmtp_application_get(session, CMTP_MAPPING, appl); in cmtp_recv_capimsg()
337 contr = (contr & 0xffffff80) | session->num; in cmtp_recv_capimsg()
353 struct cmtp_session *session = ctrl->driverdata; in cmtp_reset_ctr() local
359 atomic_inc(&session->terminate); in cmtp_reset_ctr()
360 wake_up_process(session->task); in cmtp_reset_ctr()
366 struct cmtp_session *session = ctrl->driverdata; in cmtp_register_appl() local
375 application = cmtp_application_add(session, appl); in cmtp_register_appl()
394 application->msgnum = cmtp_msgnum_get(session); in cmtp_register_appl()
396 cmtp_send_interopmsg(session, CAPI_REQ, 0x0000, application->msgnum, in cmtp_register_appl()
399 add_wait_queue(&session->wait, &wait); in cmtp_register_appl()
424 remove_wait_queue(&session->wait, &wait); in cmtp_register_appl()
427 cmtp_application_del(session, application); in cmtp_register_appl()
434 struct cmtp_session *session = ctrl->driverdata; in cmtp_release_appl() local
439 application = cmtp_application_get(session, CMTP_APPLID, appl); in cmtp_release_appl()
445 application->msgnum = cmtp_msgnum_get(session); in cmtp_release_appl()
447 cmtp_send_interopmsg(session, CAPI_REQ, application->mapping, application->msgnum, in cmtp_release_appl()
450 wait_event_interruptible_timeout(session->wait, in cmtp_release_appl()
453 cmtp_application_del(session, application); in cmtp_release_appl()
458 struct cmtp_session *session = ctrl->driverdata; in cmtp_send_message() local
468 application = cmtp_application_get(session, CMTP_APPLID, appl); in cmtp_send_message()
476 if ((contr & 0x7f) == session->num) { in cmtp_send_message()
481 cmtp_send_capimsg(session, skb); in cmtp_send_message()
494 struct cmtp_session *session = ctrl->driverdata; in cmtp_proc_show() local
498 seq_printf(m, "addr %s\n", session->name); in cmtp_proc_show()
499 seq_printf(m, "ctrl %d\n", session->num); in cmtp_proc_show()
501 list_for_each_entry(app, &session->applications, list) { in cmtp_proc_show()
508 int cmtp_attach_device(struct cmtp_session *session) in cmtp_attach_device() argument
513 BT_DBG("session %p", session); in cmtp_attach_device()
517 cmtp_send_interopmsg(session, CAPI_REQ, 0xffff, CMTP_INITIAL_MSGNUM, in cmtp_attach_device()
520 ret = wait_event_interruptible_timeout(session->wait, in cmtp_attach_device()
521 session->ncontroller, CMTP_INTEROP_TIMEOUT); in cmtp_attach_device()
523 BT_INFO("Found %d CAPI controller(s) on device %s", session->ncontroller, session->name); in cmtp_attach_device()
528 if (!session->ncontroller) in cmtp_attach_device()
531 if (session->ncontroller > 1) in cmtp_attach_device()
534 session->ctrl.owner = THIS_MODULE; in cmtp_attach_device()
535 session->ctrl.driverdata = session; in cmtp_attach_device()
536 strcpy(session->ctrl.name, session->name); in cmtp_attach_device()
538 session->ctrl.driver_name = "cmtp"; in cmtp_attach_device()
539 session->ctrl.load_firmware = cmtp_load_firmware; in cmtp_attach_device()
540 session->ctrl.reset_ctr = cmtp_reset_ctr; in cmtp_attach_device()
541 session->ctrl.register_appl = cmtp_register_appl; in cmtp_attach_device()
542 session->ctrl.release_appl = cmtp_release_appl; in cmtp_attach_device()
543 session->ctrl.send_message = cmtp_send_message; in cmtp_attach_device()
545 session->ctrl.procinfo = cmtp_procinfo; in cmtp_attach_device()
546 session->ctrl.proc_show = cmtp_proc_show; in cmtp_attach_device()
548 if (attach_capi_ctr(&session->ctrl) < 0) { in cmtp_attach_device()
553 session->num = session->ctrl.cnr; in cmtp_attach_device()
555 BT_DBG("session %p num %d", session, session->num); in cmtp_attach_device()
559 cmtp_send_interopmsg(session, CAPI_REQ, 0xffff, cmtp_msgnum_get(session), in cmtp_attach_device()
562 cmtp_send_interopmsg(session, CAPI_REQ, 0xffff, cmtp_msgnum_get(session), in cmtp_attach_device()
565 cmtp_send_interopmsg(session, CAPI_REQ, 0xffff, cmtp_msgnum_get(session), in cmtp_attach_device()
568 cmtp_send_interopmsg(session, CAPI_REQ, 0xffff, cmtp_msgnum_get(session), in cmtp_attach_device()
574 void cmtp_detach_device(struct cmtp_session *session) in cmtp_detach_device() argument
576 BT_DBG("session %p", session); in cmtp_detach_device()
578 detach_capi_ctr(&session->ctrl); in cmtp_detach_device()