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