Lines Matching refs:pc
31 l3_1TR6_message(struct l3_process *pc, u_char mt, u_char pd) in l3_1TR6_message() argument
39 MsgHead(p, pc->callref, mt, pd); in l3_1TR6_message()
40 l3_msg(pc->st, DL_DATA | REQUEST, skb); in l3_1TR6_message()
44 l3_1tr6_release_req(struct l3_process *pc, u_char pr, void *arg) in l3_1tr6_release_req() argument
46 StopAllL3Timer(pc); in l3_1tr6_release_req()
47 newl3state(pc, 19); in l3_1tr6_release_req()
48 l3_1TR6_message(pc, MT_N1_REL, PROTO_DIS_N1); in l3_1tr6_release_req()
49 L3AddTimer(&pc->timer, T308, CC_T308_1); in l3_1tr6_release_req()
53 l3_1tr6_invalid(struct l3_process *pc, u_char pr, void *arg) in l3_1tr6_invalid() argument
58 l3_1tr6_release_req(pc, 0, NULL); in l3_1tr6_invalid()
62 l3_1tr6_error(struct l3_process *pc, u_char *msg, struct sk_buff *skb) in l3_1tr6_error() argument
65 if (pc->st->l3.debug & L3_DEB_WARN) in l3_1tr6_error()
66 l3_debug(pc->st, msg); in l3_1tr6_error()
67 l3_1tr6_release_req(pc, 0, NULL); in l3_1tr6_error()
71 l3_1tr6_setup_req(struct l3_process *pc, u_char pr, void *arg) in l3_1tr6_setup_req() argument
81 MsgHead(p, pc->callref, MT_N1_SETUP, PROTO_DIS_N1); in l3_1tr6_setup_req()
82 teln = pc->para.setup.phone; in l3_1tr6_setup_req()
83 pc->para.spv = 0; in l3_1tr6_setup_req()
87 pc->para.spv = 1; in l3_1tr6_setup_req()
100 if (pc->st->l3.debug & L3_DEB_WARN) in l3_1tr6_setup_req()
101 l3_debug(pc->st, "Wrong MSN Code"); in l3_1tr6_setup_req()
111 if (pc->para.spv) { /* SPV ? */ in l3_1tr6_setup_req()
117 *p++ = pc->para.setup.si1; /* 0 for all Services */ in l3_1tr6_setup_req()
118 *p++ = pc->para.setup.si2; /* 0 for all Services */ in l3_1tr6_setup_req()
123 *p++ = pc->para.setup.si1; /* 0 for all Services */ in l3_1tr6_setup_req()
124 *p++ = pc->para.setup.si2; /* 0 for all Services */ in l3_1tr6_setup_req()
126 eaz = pc->para.setup.eazmsn; in l3_1tr6_setup_req()
146 *p++ = pc->para.setup.si1; in l3_1tr6_setup_req()
147 *p++ = pc->para.setup.si2; in l3_1tr6_setup_req()
153 L3DelTimer(&pc->timer); in l3_1tr6_setup_req()
154 L3AddTimer(&pc->timer, T303, CC_T303); in l3_1tr6_setup_req()
155 newl3state(pc, 1); in l3_1tr6_setup_req()
156 l3_msg(pc->st, DL_DATA | REQUEST, skb); in l3_1tr6_setup_req()
160 l3_1tr6_setup(struct l3_process *pc, u_char pr, void *arg) in l3_1tr6_setup() argument
171 l3_1tr6_error(pc, "setup wrong chanID len", skb); in l3_1tr6_setup()
175 l3_1tr6_error(pc, "setup wrong WE0_chanID", skb); in l3_1tr6_setup()
178 if ((pc->para.bchannel = p[2] & 0x3)) in l3_1tr6_setup()
181 l3_1tr6_error(pc, "missing setup chanID", skb); in l3_1tr6_setup()
187 pc->para.setup.si1 = p[2]; in l3_1tr6_setup()
188 pc->para.setup.si2 = p[3]; in l3_1tr6_setup()
190 l3_1tr6_error(pc, "missing setup SI", skb); in l3_1tr6_setup()
196 iecpy(pc->para.setup.eazmsn, p, 1); in l3_1tr6_setup()
198 pc->para.setup.eazmsn[0] = 0; in l3_1tr6_setup()
202 iecpy(pc->para.setup.phone, p, 1); in l3_1tr6_setup()
204 pc->para.setup.phone[0] = 0; in l3_1tr6_setup()
207 pc->para.spv = 0; in l3_1tr6_setup()
210 pc->para.spv = 1; in l3_1tr6_setup()
216 if ((pc->para.setup.si1 != 7) && (pc->st->l3.debug & L3_DEB_WARN)) { in l3_1tr6_setup()
218 pc->para.setup.phone, in l3_1tr6_setup()
219 pc->para.setup.eazmsn); in l3_1tr6_setup()
220 l3_debug(pc->st, tmp); in l3_1tr6_setup()
222 newl3state(pc, 6); in l3_1tr6_setup()
223 pc->st->l3.l3l4(pc->st, CC_SETUP | INDICATION, pc); in l3_1tr6_setup()
225 release_l3_process(pc); in l3_1tr6_setup()
229 l3_1tr6_setup_ack(struct l3_process *pc, u_char pr, void *arg) in l3_1tr6_setup_ack() argument
234 L3DelTimer(&pc->timer); in l3_1tr6_setup_ack()
236 newl3state(pc, 2); in l3_1tr6_setup_ack()
239 l3_1tr6_error(pc, "setup_ack wrong chanID len", skb); in l3_1tr6_setup_ack()
243 l3_1tr6_error(pc, "setup_ack wrong WE0_chanID", skb); in l3_1tr6_setup_ack()
246 pc->para.bchannel = p[2] & 0x3; in l3_1tr6_setup_ack()
248 l3_1tr6_error(pc, "missing setup_ack WE0_chanID", skb); in l3_1tr6_setup_ack()
252 L3AddTimer(&pc->timer, T304, CC_T304); in l3_1tr6_setup_ack()
253 pc->st->l3.l3l4(pc->st, CC_MORE_INFO | INDICATION, pc); in l3_1tr6_setup_ack()
257 l3_1tr6_call_sent(struct l3_process *pc, u_char pr, void *arg) in l3_1tr6_call_sent() argument
262 L3DelTimer(&pc->timer); in l3_1tr6_call_sent()
266 l3_1tr6_error(pc, "call sent wrong chanID len", skb); in l3_1tr6_call_sent()
270 l3_1tr6_error(pc, "call sent wrong WE0_chanID", skb); in l3_1tr6_call_sent()
273 if ((pc->state == 2) && (pc->para.bchannel != (p[2] & 0x3))) { in l3_1tr6_call_sent()
274 l3_1tr6_error(pc, "call sent wrong chanID value", skb); in l3_1tr6_call_sent()
277 pc->para.bchannel = p[2] & 0x3; in l3_1tr6_call_sent()
279 l3_1tr6_error(pc, "missing call sent WE0_chanID", skb); in l3_1tr6_call_sent()
283 L3AddTimer(&pc->timer, T310, CC_T310); in l3_1tr6_call_sent()
284 newl3state(pc, 3); in l3_1tr6_call_sent()
285 pc->st->l3.l3l4(pc->st, CC_PROCEEDING | INDICATION, pc); in l3_1tr6_call_sent()
289 l3_1tr6_alert(struct l3_process *pc, u_char pr, void *arg) in l3_1tr6_alert() argument
294 L3DelTimer(&pc->timer); /* T304 */ in l3_1tr6_alert()
295 newl3state(pc, 4); in l3_1tr6_alert()
296 pc->st->l3.l3l4(pc->st, CC_ALERTING | INDICATION, pc); in l3_1tr6_alert()
300 l3_1tr6_info(struct l3_process *pc, u_char pr, void *arg) in l3_1tr6_info() argument
314 if (tmpcharge > pc->para.chargeinfo) { in l3_1tr6_info()
315 pc->para.chargeinfo = tmpcharge; in l3_1tr6_info()
316 pc->st->l3.l3l4(pc->st, CC_CHARGE | INDICATION, pc); in l3_1tr6_info()
318 if (pc->st->l3.debug & L3_DEB_CHARGE) { in l3_1tr6_info()
319 sprintf(tmp, "charging info %d", pc->para.chargeinfo); in l3_1tr6_info()
320 l3_debug(pc->st, tmp); in l3_1tr6_info()
322 } else if (pc->st->l3.debug & L3_DEB_CHARGE) in l3_1tr6_info()
323 l3_debug(pc->st, "charging info not found"); in l3_1tr6_info()
329 l3_1tr6_info_s2(struct l3_process *pc, u_char pr, void *arg) in l3_1tr6_info_s2() argument
337 l3_1tr6_connect(struct l3_process *pc, u_char pr, void *arg) in l3_1tr6_connect() argument
341 L3DelTimer(&pc->timer); /* T310 */ in l3_1tr6_connect()
343 l3_1tr6_error(pc, "missing connect date", skb); in l3_1tr6_connect()
346 newl3state(pc, 10); in l3_1tr6_connect()
348 pc->para.chargeinfo = 0; in l3_1tr6_connect()
349 pc->st->l3.l3l4(pc->st, CC_SETUP | CONFIRM, pc); in l3_1tr6_connect()
353 l3_1tr6_rel(struct l3_process *pc, u_char pr, void *arg) in l3_1tr6_rel() argument
361 pc->para.cause = p[2]; in l3_1tr6_rel()
363 pc->para.loc = p[3]; in l3_1tr6_rel()
365 pc->para.loc = 0; in l3_1tr6_rel()
367 pc->para.cause = 0; in l3_1tr6_rel()
368 pc->para.loc = 0; in l3_1tr6_rel()
371 pc->para.cause = NO_CAUSE; in l3_1tr6_rel()
372 l3_1tr6_error(pc, "missing REL cause", skb); in l3_1tr6_rel()
376 StopAllL3Timer(pc); in l3_1tr6_rel()
377 newl3state(pc, 0); in l3_1tr6_rel()
378 l3_1TR6_message(pc, MT_N1_REL_ACK, PROTO_DIS_N1); in l3_1tr6_rel()
379 pc->st->l3.l3l4(pc->st, CC_RELEASE | INDICATION, pc); in l3_1tr6_rel()
380 release_l3_process(pc); in l3_1tr6_rel()
384 l3_1tr6_rel_ack(struct l3_process *pc, u_char pr, void *arg) in l3_1tr6_rel_ack() argument
389 StopAllL3Timer(pc); in l3_1tr6_rel_ack()
390 newl3state(pc, 0); in l3_1tr6_rel_ack()
391 pc->para.cause = NO_CAUSE; in l3_1tr6_rel_ack()
392 pc->st->l3.l3l4(pc->st, CC_RELEASE | CONFIRM, pc); in l3_1tr6_rel_ack()
393 release_l3_process(pc); in l3_1tr6_rel_ack()
397 l3_1tr6_disc(struct l3_process *pc, u_char pr, void *arg) in l3_1tr6_disc() argument
404 StopAllL3Timer(pc); in l3_1tr6_disc()
412 if (tmpcharge > pc->para.chargeinfo) { in l3_1tr6_disc()
413 pc->para.chargeinfo = tmpcharge; in l3_1tr6_disc()
414 pc->st->l3.l3l4(pc->st, CC_CHARGE | INDICATION, pc); in l3_1tr6_disc()
416 if (pc->st->l3.debug & L3_DEB_CHARGE) { in l3_1tr6_disc()
417 sprintf(tmp, "charging info %d", pc->para.chargeinfo); in l3_1tr6_disc()
418 l3_debug(pc->st, tmp); in l3_1tr6_disc()
420 } else if (pc->st->l3.debug & L3_DEB_CHARGE) in l3_1tr6_disc()
421 l3_debug(pc->st, "charging info not found"); in l3_1tr6_disc()
427 pc->para.cause = p[2]; in l3_1tr6_disc()
429 pc->para.loc = p[3]; in l3_1tr6_disc()
431 pc->para.loc = 0; in l3_1tr6_disc()
433 pc->para.cause = 0; in l3_1tr6_disc()
434 pc->para.loc = 0; in l3_1tr6_disc()
437 if (pc->st->l3.debug & L3_DEB_WARN) in l3_1tr6_disc()
438 l3_debug(pc->st, "cause not found"); in l3_1tr6_disc()
439 pc->para.cause = NO_CAUSE; in l3_1tr6_disc()
442 l3_1tr6_error(pc, "missing connack date", skb); in l3_1tr6_disc()
446 newl3state(pc, 12); in l3_1tr6_disc()
447 pc->st->l3.l3l4(pc->st, CC_DISCONNECT | INDICATION, pc); in l3_1tr6_disc()
452 l3_1tr6_connect_ack(struct l3_process *pc, u_char pr, void *arg) in l3_1tr6_connect_ack() argument
457 l3_1tr6_error(pc, "missing connack date", skb); in l3_1tr6_connect_ack()
461 newl3state(pc, 10); in l3_1tr6_connect_ack()
462 pc->para.chargeinfo = 0; in l3_1tr6_connect_ack()
463 L3DelTimer(&pc->timer); in l3_1tr6_connect_ack()
464 pc->st->l3.l3l4(pc->st, CC_SETUP_COMPL | INDICATION, pc); in l3_1tr6_connect_ack()
468 l3_1tr6_alert_req(struct l3_process *pc, u_char pr, void *arg) in l3_1tr6_alert_req() argument
470 newl3state(pc, 7); in l3_1tr6_alert_req()
471 l3_1TR6_message(pc, MT_N1_ALERT, PROTO_DIS_N1); in l3_1tr6_alert_req()
475 l3_1tr6_setup_rsp(struct l3_process *pc, u_char pr, void *arg) in l3_1tr6_setup_rsp() argument
482 MsgHead(p, pc->callref, MT_N1_CONN, PROTO_DIS_N1); in l3_1tr6_setup_rsp()
483 if (pc->para.spv) { /* SPV ? */ in l3_1tr6_setup_rsp()
489 *p++ = pc->para.setup.si1; in l3_1tr6_setup_rsp()
490 *p++ = pc->para.setup.si2; in l3_1tr6_setup_rsp()
495 *p++ = pc->para.setup.si1; in l3_1tr6_setup_rsp()
496 *p++ = pc->para.setup.si2; in l3_1tr6_setup_rsp()
498 newl3state(pc, 8); in l3_1tr6_setup_rsp()
503 l3_msg(pc->st, DL_DATA | REQUEST, skb); in l3_1tr6_setup_rsp()
504 L3DelTimer(&pc->timer); in l3_1tr6_setup_rsp()
505 L3AddTimer(&pc->timer, T313, CC_T313); in l3_1tr6_setup_rsp()
509 l3_1tr6_reset(struct l3_process *pc, u_char pr, void *arg) in l3_1tr6_reset() argument
511 release_l3_process(pc); in l3_1tr6_reset()
515 l3_1tr6_disconnect_req(struct l3_process *pc, u_char pr, void *arg) in l3_1tr6_disconnect_req() argument
524 if (pc->para.cause > 0) in l3_1tr6_disconnect_req()
525 cause = pc->para.cause; in l3_1tr6_disconnect_req()
538 StopAllL3Timer(pc); in l3_1tr6_disconnect_req()
539 MsgHead(p, pc->callref, MT_N1_DISC, PROTO_DIS_N1); in l3_1tr6_disconnect_req()
544 newl3state(pc, 11); in l3_1tr6_disconnect_req()
549 l3_msg(pc->st, DL_DATA | REQUEST, skb); in l3_1tr6_disconnect_req()
550 L3AddTimer(&pc->timer, T305, CC_T305); in l3_1tr6_disconnect_req()
554 l3_1tr6_t303(struct l3_process *pc, u_char pr, void *arg) in l3_1tr6_t303() argument
556 if (pc->N303 > 0) { in l3_1tr6_t303()
557 pc->N303--; in l3_1tr6_t303()
558 L3DelTimer(&pc->timer); in l3_1tr6_t303()
559 l3_1tr6_setup_req(pc, pr, arg); in l3_1tr6_t303()
561 L3DelTimer(&pc->timer); in l3_1tr6_t303()
562 pc->para.cause = 0; in l3_1tr6_t303()
563 l3_1tr6_disconnect_req(pc, 0, NULL); in l3_1tr6_t303()
568 l3_1tr6_t304(struct l3_process *pc, u_char pr, void *arg) in l3_1tr6_t304() argument
570 L3DelTimer(&pc->timer); in l3_1tr6_t304()
571 pc->para.cause = 0xE6; in l3_1tr6_t304()
572 l3_1tr6_disconnect_req(pc, pr, NULL); in l3_1tr6_t304()
573 pc->st->l3.l3l4(pc->st, CC_SETUP_ERR, pc); in l3_1tr6_t304()
577 l3_1tr6_t305(struct l3_process *pc, u_char pr, void *arg) in l3_1tr6_t305() argument
586 L3DelTimer(&pc->timer); in l3_1tr6_t305()
587 if (pc->para.cause != NO_CAUSE) in l3_1tr6_t305()
588 cause = pc->para.cause; in l3_1tr6_t305()
598 MsgHead(p, pc->callref, MT_N1_REL, PROTO_DIS_N1); in l3_1tr6_t305()
603 newl3state(pc, 19); in l3_1tr6_t305()
608 l3_msg(pc->st, DL_DATA | REQUEST, skb); in l3_1tr6_t305()
609 L3AddTimer(&pc->timer, T308, CC_T308_1); in l3_1tr6_t305()
613 l3_1tr6_t310(struct l3_process *pc, u_char pr, void *arg) in l3_1tr6_t310() argument
615 L3DelTimer(&pc->timer); in l3_1tr6_t310()
616 pc->para.cause = 0xE6; in l3_1tr6_t310()
617 l3_1tr6_disconnect_req(pc, pr, NULL); in l3_1tr6_t310()
618 pc->st->l3.l3l4(pc->st, CC_SETUP_ERR, pc); in l3_1tr6_t310()
622 l3_1tr6_t313(struct l3_process *pc, u_char pr, void *arg) in l3_1tr6_t313() argument
624 L3DelTimer(&pc->timer); in l3_1tr6_t313()
625 pc->para.cause = 0xE6; in l3_1tr6_t313()
626 l3_1tr6_disconnect_req(pc, pr, NULL); in l3_1tr6_t313()
627 pc->st->l3.l3l4(pc->st, CC_CONNECT_ERR, pc); in l3_1tr6_t313()
631 l3_1tr6_t308_1(struct l3_process *pc, u_char pr, void *arg) in l3_1tr6_t308_1() argument
633 L3DelTimer(&pc->timer); in l3_1tr6_t308_1()
634 l3_1TR6_message(pc, MT_N1_REL, PROTO_DIS_N1); in l3_1tr6_t308_1()
635 L3AddTimer(&pc->timer, T308, CC_T308_2); in l3_1tr6_t308_1()
636 newl3state(pc, 19); in l3_1tr6_t308_1()
640 l3_1tr6_t308_2(struct l3_process *pc, u_char pr, void *arg) in l3_1tr6_t308_2() argument
642 L3DelTimer(&pc->timer); in l3_1tr6_t308_2()
643 pc->st->l3.l3l4(pc->st, CC_RELEASE_ERR, pc); in l3_1tr6_t308_2()
644 release_l3_process(pc); in l3_1tr6_t308_2()
648 l3_1tr6_dl_reset(struct l3_process *pc, u_char pr, void *arg) in l3_1tr6_dl_reset() argument
650 pc->para.cause = CAUSE_LocalProcErr; in l3_1tr6_dl_reset()
651 l3_1tr6_disconnect_req(pc, pr, NULL); in l3_1tr6_dl_reset()
652 pc->st->l3.l3l4(pc->st, CC_SETUP_ERR, pc); in l3_1tr6_dl_reset()
656 l3_1tr6_dl_release(struct l3_process *pc, u_char pr, void *arg) in l3_1tr6_dl_release() argument
658 newl3state(pc, 0); in l3_1tr6_dl_release()
659 pc->para.cause = 0x1b; /* Destination out of order */ in l3_1tr6_dl_release()
660 pc->para.loc = 0; in l3_1tr6_dl_release()
661 pc->st->l3.l3l4(pc->st, CC_RELEASE | INDICATION, pc); in l3_1tr6_dl_release()
662 release_l3_process(pc); in l3_1tr6_dl_release()