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, "%s", 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
170 l3_1tr6_error(pc, "setup wrong chanID len", skb); in l3_1tr6_setup()
174 l3_1tr6_error(pc, "setup wrong WE0_chanID", skb); in l3_1tr6_setup()
177 if ((pc->para.bchannel = p[2] & 0x3)) in l3_1tr6_setup()
180 l3_1tr6_error(pc, "missing setup chanID", skb); in l3_1tr6_setup()
186 pc->para.setup.si1 = p[2]; in l3_1tr6_setup()
187 pc->para.setup.si2 = p[3]; in l3_1tr6_setup()
189 l3_1tr6_error(pc, "missing setup SI", skb); in l3_1tr6_setup()
195 iecpy(pc->para.setup.eazmsn, p, 1); in l3_1tr6_setup()
197 pc->para.setup.eazmsn[0] = 0; in l3_1tr6_setup()
201 iecpy(pc->para.setup.phone, p, 1); in l3_1tr6_setup()
203 pc->para.setup.phone[0] = 0; in l3_1tr6_setup()
206 pc->para.spv = 0; in l3_1tr6_setup()
209 pc->para.spv = 1; in l3_1tr6_setup()
215 if ((pc->para.setup.si1 != 7) && (pc->st->l3.debug & L3_DEB_WARN)) { in l3_1tr6_setup()
216 l3_debug(pc->st, "non-digital call: %s -> %s", in l3_1tr6_setup()
217 pc->para.setup.phone, in l3_1tr6_setup()
218 pc->para.setup.eazmsn); in l3_1tr6_setup()
220 newl3state(pc, 6); in l3_1tr6_setup()
221 pc->st->l3.l3l4(pc->st, CC_SETUP | INDICATION, pc); in l3_1tr6_setup()
223 release_l3_process(pc); in l3_1tr6_setup()
227 l3_1tr6_setup_ack(struct l3_process *pc, u_char pr, void *arg) in l3_1tr6_setup_ack() argument
232 L3DelTimer(&pc->timer); in l3_1tr6_setup_ack()
234 newl3state(pc, 2); in l3_1tr6_setup_ack()
237 l3_1tr6_error(pc, "setup_ack wrong chanID len", skb); in l3_1tr6_setup_ack()
241 l3_1tr6_error(pc, "setup_ack wrong WE0_chanID", skb); in l3_1tr6_setup_ack()
244 pc->para.bchannel = p[2] & 0x3; in l3_1tr6_setup_ack()
246 l3_1tr6_error(pc, "missing setup_ack WE0_chanID", skb); in l3_1tr6_setup_ack()
250 L3AddTimer(&pc->timer, T304, CC_T304); in l3_1tr6_setup_ack()
251 pc->st->l3.l3l4(pc->st, CC_MORE_INFO | INDICATION, pc); in l3_1tr6_setup_ack()
255 l3_1tr6_call_sent(struct l3_process *pc, u_char pr, void *arg) in l3_1tr6_call_sent() argument
260 L3DelTimer(&pc->timer); in l3_1tr6_call_sent()
264 l3_1tr6_error(pc, "call sent wrong chanID len", skb); in l3_1tr6_call_sent()
268 l3_1tr6_error(pc, "call sent wrong WE0_chanID", skb); in l3_1tr6_call_sent()
271 if ((pc->state == 2) && (pc->para.bchannel != (p[2] & 0x3))) { in l3_1tr6_call_sent()
272 l3_1tr6_error(pc, "call sent wrong chanID value", skb); in l3_1tr6_call_sent()
275 pc->para.bchannel = p[2] & 0x3; in l3_1tr6_call_sent()
277 l3_1tr6_error(pc, "missing call sent WE0_chanID", skb); in l3_1tr6_call_sent()
281 L3AddTimer(&pc->timer, T310, CC_T310); in l3_1tr6_call_sent()
282 newl3state(pc, 3); in l3_1tr6_call_sent()
283 pc->st->l3.l3l4(pc->st, CC_PROCEEDING | INDICATION, pc); in l3_1tr6_call_sent()
287 l3_1tr6_alert(struct l3_process *pc, u_char pr, void *arg) in l3_1tr6_alert() argument
292 L3DelTimer(&pc->timer); /* T304 */ in l3_1tr6_alert()
293 newl3state(pc, 4); in l3_1tr6_alert()
294 pc->st->l3.l3l4(pc->st, CC_ALERTING | INDICATION, pc); in l3_1tr6_alert()
298 l3_1tr6_info(struct l3_process *pc, u_char pr, void *arg) in l3_1tr6_info() argument
312 if (tmpcharge > pc->para.chargeinfo) { in l3_1tr6_info()
313 pc->para.chargeinfo = tmpcharge; in l3_1tr6_info()
314 pc->st->l3.l3l4(pc->st, CC_CHARGE | INDICATION, pc); in l3_1tr6_info()
316 if (pc->st->l3.debug & L3_DEB_CHARGE) { in l3_1tr6_info()
317 l3_debug(pc->st, "charging info %d", in l3_1tr6_info()
318 pc->para.chargeinfo); in l3_1tr6_info()
320 } else if (pc->st->l3.debug & L3_DEB_CHARGE) in l3_1tr6_info()
321 l3_debug(pc->st, "charging info not found"); in l3_1tr6_info()
327 l3_1tr6_info_s2(struct l3_process *pc, u_char pr, void *arg) in l3_1tr6_info_s2() argument
335 l3_1tr6_connect(struct l3_process *pc, u_char pr, void *arg) in l3_1tr6_connect() argument
339 L3DelTimer(&pc->timer); /* T310 */ in l3_1tr6_connect()
341 l3_1tr6_error(pc, "missing connect date", skb); in l3_1tr6_connect()
344 newl3state(pc, 10); in l3_1tr6_connect()
346 pc->para.chargeinfo = 0; in l3_1tr6_connect()
347 pc->st->l3.l3l4(pc->st, CC_SETUP | CONFIRM, pc); in l3_1tr6_connect()
351 l3_1tr6_rel(struct l3_process *pc, u_char pr, void *arg) in l3_1tr6_rel() argument
359 pc->para.cause = p[2]; in l3_1tr6_rel()
361 pc->para.loc = p[3]; in l3_1tr6_rel()
363 pc->para.loc = 0; in l3_1tr6_rel()
365 pc->para.cause = 0; in l3_1tr6_rel()
366 pc->para.loc = 0; in l3_1tr6_rel()
369 pc->para.cause = NO_CAUSE; in l3_1tr6_rel()
370 l3_1tr6_error(pc, "missing REL cause", skb); in l3_1tr6_rel()
374 StopAllL3Timer(pc); in l3_1tr6_rel()
375 newl3state(pc, 0); in l3_1tr6_rel()
376 l3_1TR6_message(pc, MT_N1_REL_ACK, PROTO_DIS_N1); in l3_1tr6_rel()
377 pc->st->l3.l3l4(pc->st, CC_RELEASE | INDICATION, pc); in l3_1tr6_rel()
378 release_l3_process(pc); in l3_1tr6_rel()
382 l3_1tr6_rel_ack(struct l3_process *pc, u_char pr, void *arg) in l3_1tr6_rel_ack() argument
387 StopAllL3Timer(pc); in l3_1tr6_rel_ack()
388 newl3state(pc, 0); in l3_1tr6_rel_ack()
389 pc->para.cause = NO_CAUSE; in l3_1tr6_rel_ack()
390 pc->st->l3.l3l4(pc->st, CC_RELEASE | CONFIRM, pc); in l3_1tr6_rel_ack()
391 release_l3_process(pc); in l3_1tr6_rel_ack()
395 l3_1tr6_disc(struct l3_process *pc, u_char pr, void *arg) in l3_1tr6_disc() argument
402 StopAllL3Timer(pc); in l3_1tr6_disc()
410 if (tmpcharge > pc->para.chargeinfo) { in l3_1tr6_disc()
411 pc->para.chargeinfo = tmpcharge; in l3_1tr6_disc()
412 pc->st->l3.l3l4(pc->st, CC_CHARGE | INDICATION, pc); in l3_1tr6_disc()
414 if (pc->st->l3.debug & L3_DEB_CHARGE) { in l3_1tr6_disc()
415 l3_debug(pc->st, "charging info %d", in l3_1tr6_disc()
416 pc->para.chargeinfo); in l3_1tr6_disc()
418 } else if (pc->st->l3.debug & L3_DEB_CHARGE) in l3_1tr6_disc()
419 l3_debug(pc->st, "charging info not found"); in l3_1tr6_disc()
425 pc->para.cause = p[2]; in l3_1tr6_disc()
427 pc->para.loc = p[3]; in l3_1tr6_disc()
429 pc->para.loc = 0; in l3_1tr6_disc()
431 pc->para.cause = 0; in l3_1tr6_disc()
432 pc->para.loc = 0; in l3_1tr6_disc()
435 if (pc->st->l3.debug & L3_DEB_WARN) in l3_1tr6_disc()
436 l3_debug(pc->st, "cause not found"); in l3_1tr6_disc()
437 pc->para.cause = NO_CAUSE; in l3_1tr6_disc()
440 l3_1tr6_error(pc, "missing connack date", skb); in l3_1tr6_disc()
444 newl3state(pc, 12); in l3_1tr6_disc()
445 pc->st->l3.l3l4(pc->st, CC_DISCONNECT | INDICATION, pc); in l3_1tr6_disc()
450 l3_1tr6_connect_ack(struct l3_process *pc, u_char pr, void *arg) in l3_1tr6_connect_ack() argument
455 l3_1tr6_error(pc, "missing connack date", skb); in l3_1tr6_connect_ack()
459 newl3state(pc, 10); in l3_1tr6_connect_ack()
460 pc->para.chargeinfo = 0; in l3_1tr6_connect_ack()
461 L3DelTimer(&pc->timer); in l3_1tr6_connect_ack()
462 pc->st->l3.l3l4(pc->st, CC_SETUP_COMPL | INDICATION, pc); in l3_1tr6_connect_ack()
466 l3_1tr6_alert_req(struct l3_process *pc, u_char pr, void *arg) in l3_1tr6_alert_req() argument
468 newl3state(pc, 7); in l3_1tr6_alert_req()
469 l3_1TR6_message(pc, MT_N1_ALERT, PROTO_DIS_N1); in l3_1tr6_alert_req()
473 l3_1tr6_setup_rsp(struct l3_process *pc, u_char pr, void *arg) in l3_1tr6_setup_rsp() argument
480 MsgHead(p, pc->callref, MT_N1_CONN, PROTO_DIS_N1); in l3_1tr6_setup_rsp()
481 if (pc->para.spv) { /* SPV ? */ in l3_1tr6_setup_rsp()
487 *p++ = pc->para.setup.si1; in l3_1tr6_setup_rsp()
488 *p++ = pc->para.setup.si2; in l3_1tr6_setup_rsp()
493 *p++ = pc->para.setup.si1; in l3_1tr6_setup_rsp()
494 *p++ = pc->para.setup.si2; in l3_1tr6_setup_rsp()
496 newl3state(pc, 8); in l3_1tr6_setup_rsp()
501 l3_msg(pc->st, DL_DATA | REQUEST, skb); in l3_1tr6_setup_rsp()
502 L3DelTimer(&pc->timer); in l3_1tr6_setup_rsp()
503 L3AddTimer(&pc->timer, T313, CC_T313); in l3_1tr6_setup_rsp()
507 l3_1tr6_reset(struct l3_process *pc, u_char pr, void *arg) in l3_1tr6_reset() argument
509 release_l3_process(pc); in l3_1tr6_reset()
513 l3_1tr6_disconnect_req(struct l3_process *pc, u_char pr, void *arg) in l3_1tr6_disconnect_req() argument
522 if (pc->para.cause > 0) in l3_1tr6_disconnect_req()
523 cause = pc->para.cause; in l3_1tr6_disconnect_req()
536 StopAllL3Timer(pc); in l3_1tr6_disconnect_req()
537 MsgHead(p, pc->callref, MT_N1_DISC, PROTO_DIS_N1); in l3_1tr6_disconnect_req()
542 newl3state(pc, 11); in l3_1tr6_disconnect_req()
547 l3_msg(pc->st, DL_DATA | REQUEST, skb); in l3_1tr6_disconnect_req()
548 L3AddTimer(&pc->timer, T305, CC_T305); in l3_1tr6_disconnect_req()
552 l3_1tr6_t303(struct l3_process *pc, u_char pr, void *arg) in l3_1tr6_t303() argument
554 if (pc->N303 > 0) { in l3_1tr6_t303()
555 pc->N303--; in l3_1tr6_t303()
556 L3DelTimer(&pc->timer); in l3_1tr6_t303()
557 l3_1tr6_setup_req(pc, pr, arg); in l3_1tr6_t303()
559 L3DelTimer(&pc->timer); in l3_1tr6_t303()
560 pc->para.cause = 0; in l3_1tr6_t303()
561 l3_1tr6_disconnect_req(pc, 0, NULL); in l3_1tr6_t303()
566 l3_1tr6_t304(struct l3_process *pc, u_char pr, void *arg) in l3_1tr6_t304() argument
568 L3DelTimer(&pc->timer); in l3_1tr6_t304()
569 pc->para.cause = 0xE6; in l3_1tr6_t304()
570 l3_1tr6_disconnect_req(pc, pr, NULL); in l3_1tr6_t304()
571 pc->st->l3.l3l4(pc->st, CC_SETUP_ERR, pc); in l3_1tr6_t304()
575 l3_1tr6_t305(struct l3_process *pc, u_char pr, void *arg) in l3_1tr6_t305() argument
584 L3DelTimer(&pc->timer); in l3_1tr6_t305()
585 if (pc->para.cause != NO_CAUSE) in l3_1tr6_t305()
586 cause = pc->para.cause; in l3_1tr6_t305()
596 MsgHead(p, pc->callref, MT_N1_REL, PROTO_DIS_N1); in l3_1tr6_t305()
601 newl3state(pc, 19); in l3_1tr6_t305()
606 l3_msg(pc->st, DL_DATA | REQUEST, skb); in l3_1tr6_t305()
607 L3AddTimer(&pc->timer, T308, CC_T308_1); in l3_1tr6_t305()
611 l3_1tr6_t310(struct l3_process *pc, u_char pr, void *arg) in l3_1tr6_t310() argument
613 L3DelTimer(&pc->timer); in l3_1tr6_t310()
614 pc->para.cause = 0xE6; in l3_1tr6_t310()
615 l3_1tr6_disconnect_req(pc, pr, NULL); in l3_1tr6_t310()
616 pc->st->l3.l3l4(pc->st, CC_SETUP_ERR, pc); in l3_1tr6_t310()
620 l3_1tr6_t313(struct l3_process *pc, u_char pr, void *arg) in l3_1tr6_t313() argument
622 L3DelTimer(&pc->timer); in l3_1tr6_t313()
623 pc->para.cause = 0xE6; in l3_1tr6_t313()
624 l3_1tr6_disconnect_req(pc, pr, NULL); in l3_1tr6_t313()
625 pc->st->l3.l3l4(pc->st, CC_CONNECT_ERR, pc); in l3_1tr6_t313()
629 l3_1tr6_t308_1(struct l3_process *pc, u_char pr, void *arg) in l3_1tr6_t308_1() argument
631 L3DelTimer(&pc->timer); in l3_1tr6_t308_1()
632 l3_1TR6_message(pc, MT_N1_REL, PROTO_DIS_N1); in l3_1tr6_t308_1()
633 L3AddTimer(&pc->timer, T308, CC_T308_2); in l3_1tr6_t308_1()
634 newl3state(pc, 19); in l3_1tr6_t308_1()
638 l3_1tr6_t308_2(struct l3_process *pc, u_char pr, void *arg) in l3_1tr6_t308_2() argument
640 L3DelTimer(&pc->timer); in l3_1tr6_t308_2()
641 pc->st->l3.l3l4(pc->st, CC_RELEASE_ERR, pc); in l3_1tr6_t308_2()
642 release_l3_process(pc); in l3_1tr6_t308_2()
646 l3_1tr6_dl_reset(struct l3_process *pc, u_char pr, void *arg) in l3_1tr6_dl_reset() argument
648 pc->para.cause = CAUSE_LocalProcErr; in l3_1tr6_dl_reset()
649 l3_1tr6_disconnect_req(pc, pr, NULL); in l3_1tr6_dl_reset()
650 pc->st->l3.l3l4(pc->st, CC_SETUP_ERR, pc); in l3_1tr6_dl_reset()
654 l3_1tr6_dl_release(struct l3_process *pc, u_char pr, void *arg) in l3_1tr6_dl_release() argument
656 newl3state(pc, 0); in l3_1tr6_dl_release()
657 pc->para.cause = 0x1b; /* Destination out of order */ in l3_1tr6_dl_release()
658 pc->para.loc = 0; in l3_1tr6_dl_release()
659 pc->st->l3.l3l4(pc->st, CC_RELEASE | INDICATION, pc); in l3_1tr6_dl_release()
660 release_l3_process(pc); in l3_1tr6_dl_release()