• Home
  • Raw
  • Download

Lines Matching +full:num +full:- +full:cs

38 /* Value to delay the sending of the first B-channel packet after CONNECT
62 if (cards[i].cs) in hisax_findcard()
63 if (cards[i].cs->myid == driverid) in hisax_findcard()
64 return (cards[i].cs); in hisax_findcard()
75 sprintf(tmp, "Ch%d %s ", chanp->chan, in link_debug()
76 direction ? "LL->HL" : "HL->LL"); in link_debug()
77 VHiSax_putstatus(chanp->cs, tmp, fmt, args); in link_debug()
87 ST_WAIT_BCONN, /* 5 CONNECT/CONN_ACK received, awaiting b-channel prot. estbl. */
178 ic.driver = chanp->cs->myid; in HL_LL()
180 ic.arg = chanp->chan; in HL_LL()
181 chanp->cs->iif.statcallb(&ic); in HL_LL()
189 if (!chanp->proc) in lli_deliver_cause()
191 if (chanp->proc->para.cause == NO_CAUSE) in lli_deliver_cause()
193 ic.driver = chanp->cs->myid; in lli_deliver_cause()
195 ic.arg = chanp->chan; in lli_deliver_cause()
196 if (chanp->cs->protocol == ISDN_PTYPE_EURO) in lli_deliver_cause()
197 sprintf(ic.parm.num, "E%02X%02X", chanp->proc->para.loc & 0x7f, in lli_deliver_cause()
198 chanp->proc->para.cause & 0x7f); in lli_deliver_cause()
200 sprintf(ic.parm.num, "%02X%02X", chanp->proc->para.loc & 0x7f, in lli_deliver_cause()
201 chanp->proc->para.cause & 0x7f); in lli_deliver_cause()
202 chanp->cs->iif.statcallb(&ic); in lli_deliver_cause()
208 struct Channel *chanp = fi->userdata; in lli_close()
211 chanp->Flags = 0; in lli_close()
212 chanp->cs->cardmsg(chanp->cs, MDL_INFO_REL, (void *) (long)chanp->chan); in lli_close()
218 struct Channel *chanp = fi->userdata; in lli_leased_in()
222 if (!chanp->leased) in lli_leased_in()
224 chanp->cs->cardmsg(chanp->cs, MDL_INFO_SETUP, (void *) (long)chanp->chan); in lli_leased_in()
226 if (chanp->debug & 1) in lli_leased_in()
228 ic.driver = chanp->cs->myid; in lli_leased_in()
229 ic.command = ((chanp->chan < 2) ? ISDN_STAT_ICALL : ISDN_STAT_ICALLW); in lli_leased_in()
230 ic.arg = chanp->chan; in lli_leased_in()
235 sprintf(ic.parm.setup.eazmsn, "%d", chanp->chan + 1); in lli_leased_in()
236 sprintf(ic.parm.setup.phone, "LEASED%d", chanp->cs->myid); in lli_leased_in()
237 ret = chanp->cs->iif.statcallb(&ic); in lli_leased_in()
238 if (chanp->debug & 1) in lli_leased_in()
241 chanp->cs->cardmsg(chanp->cs, MDL_INFO_REL, (void *) (long)chanp->chan); in lli_leased_in()
253 struct Channel *chanp = fi->userdata; in lli_init_bchan_out()
256 if (chanp->debug & 1) in lli_init_bchan_out()
260 chanp->b_st->lli.l4l3(chanp->b_st, DL_ESTABLISH | REQUEST, NULL); in lli_init_bchan_out()
266 struct Channel *chanp = fi->userdata; in lli_prep_dialout()
268 FsmDelTimer(&chanp->drel_timer, 60); in lli_prep_dialout()
269 FsmDelTimer(&chanp->dial_timer, 73); in lli_prep_dialout()
270 chanp->l2_active_protocol = chanp->l2_protocol; in lli_prep_dialout()
271 chanp->incoming = 0; in lli_prep_dialout()
272 chanp->cs->cardmsg(chanp->cs, MDL_INFO_SETUP, (void *) (long)chanp->chan); in lli_prep_dialout()
273 if (chanp->leased) { in lli_prep_dialout()
277 chanp->d_st->lli.l4l3(chanp->d_st, CC_SETUP | REQUEST, chanp); in lli_prep_dialout()
284 struct Channel *chanp = fi->userdata; in lli_resume()
286 FsmDelTimer(&chanp->drel_timer, 60); in lli_resume()
287 FsmDelTimer(&chanp->dial_timer, 73); in lli_resume()
288 chanp->l2_active_protocol = chanp->l2_protocol; in lli_resume()
289 chanp->incoming = 0; in lli_resume()
290 chanp->cs->cardmsg(chanp->cs, MDL_INFO_SETUP, (void *) (long)chanp->chan); in lli_resume()
291 if (chanp->leased) { in lli_resume()
295 chanp->d_st->lli.l4l3(chanp->d_st, CC_RESUME | REQUEST, chanp); in lli_resume()
302 struct Channel *chanp = fi->userdata; in lli_go_active()
307 chanp->data_open = !0; in lli_go_active()
308 if (chanp->bcs->conmsg) in lli_go_active()
309 strcpy(ic.parm.num, chanp->bcs->conmsg); in lli_go_active()
311 ic.parm.num[0] = 0; in lli_go_active()
312 if (chanp->debug & 1) in lli_go_active()
313 link_debug(chanp, 0, "STAT_BCONN %s", ic.parm.num); in lli_go_active()
314 ic.driver = chanp->cs->myid; in lli_go_active()
316 ic.arg = chanp->chan; in lli_go_active()
317 chanp->cs->iif.statcallb(&ic); in lli_go_active()
318 chanp->cs->cardmsg(chanp->cs, MDL_INFO_CONN, (void *) (long)chanp->chan); in lli_go_active()
331 struct Channel *chanp = fi->userdata; in lli_deliver_call()
335 chanp->cs->cardmsg(chanp->cs, MDL_INFO_SETUP, (void *) (long)chanp->chan); in lli_deliver_call()
343 if (chanp->debug & 1) in lli_deliver_call()
344 link_debug(chanp, 0, (chanp->chan < 2) ? "STAT_ICALL" : "STAT_ICALLW"); in lli_deliver_call()
345 ic.driver = chanp->cs->myid; in lli_deliver_call()
346 ic.command = ((chanp->chan < 2) ? ISDN_STAT_ICALL : ISDN_STAT_ICALLW); in lli_deliver_call()
348 ic.arg = chanp->chan; in lli_deliver_call()
353 memcpy(&ic.parm.setup, &chanp->proc->para.setup, sizeof(setup_parm)); in lli_deliver_call()
354 ret = chanp->cs->iif.statcallb(&ic); in lli_deliver_call()
355 if (chanp->debug & 1) in lli_deliver_call()
360 FsmDelTimer(&chanp->drel_timer, 61); in lli_deliver_call()
362 chanp->d_st->lli.l4l3(chanp->d_st, CC_ALERTING | REQUEST, chanp->proc); in lli_deliver_call()
366 FsmDelTimer(&chanp->drel_timer, 61); in lli_deliver_call()
368 chanp->d_st->lli.l4l3(chanp->d_st, CC_PROCEED_SEND | REQUEST, chanp->proc); in lli_deliver_call()
370 memcpy(&chanp->setup, &ic.parm.setup, sizeof(setup_parm)); in lli_deliver_call()
371 chanp->d_st->lli.l4l3(chanp->d_st, CC_REDIR | REQUEST, chanp->proc); in lli_deliver_call()
377 FsmDelTimer(&chanp->drel_timer, 61); in lli_deliver_call()
378 chanp->d_st->lli.l4l3(chanp->d_st, CC_MORE_INFO | REQUEST, chanp->proc); in lli_deliver_call()
382 chanp->d_st->lli.l4l3(chanp->d_st, CC_IGNORE | REQUEST, chanp->proc); in lli_deliver_call()
383 chanp->cs->cardmsg(chanp->cs, MDL_INFO_REL, (void *) (long)chanp->chan); in lli_deliver_call()
388 chanp->d_st->lli.l4l3(chanp->d_st, CC_IGNORE | REQUEST, chanp->proc); in lli_deliver_call()
389 chanp->cs->cardmsg(chanp->cs, MDL_INFO_REL, (void *) (long)chanp->chan); in lli_deliver_call()
396 struct Channel *chanp = fi->userdata; in lli_send_dconnect()
399 chanp->d_st->lli.l4l3(chanp->d_st, CC_SETUP | RESPONSE, chanp->proc); in lli_send_dconnect()
405 struct Channel *chanp = fi->userdata; in lli_send_alert()
408 chanp->d_st->lli.l4l3(chanp->d_st, CC_ALERTING | REQUEST, chanp->proc); in lli_send_alert()
414 struct Channel *chanp = fi->userdata; in lli_send_redir()
416 chanp->d_st->lli.l4l3(chanp->d_st, CC_REDIR | REQUEST, chanp->proc); in lli_send_redir()
422 struct Channel *chanp = fi->userdata; in lli_init_bchan_in()
425 if (chanp->debug & 1) in lli_init_bchan_in()
428 chanp->l2_active_protocol = chanp->l2_protocol; in lli_init_bchan_in()
429 chanp->incoming = !0; in lli_init_bchan_in()
431 chanp->b_st->lli.l4l3(chanp->b_st, DL_ESTABLISH | REQUEST, NULL); in lli_init_bchan_in()
437 struct Channel *chanp = fi->userdata; in lli_setup_rsp()
439 if (chanp->leased) { in lli_setup_rsp()
444 chanp->d_st->lli.l4l3(chanp->d_st, CC_ALERTING | REQUEST, chanp->proc); in lli_setup_rsp()
446 chanp->d_st->lli.l4l3(chanp->d_st, CC_SETUP | RESPONSE, chanp->proc); in lli_setup_rsp()
455 struct Channel *chanp = fi->userdata; in lli_suspend()
457 chanp->d_st->lli.l4l3(chanp->d_st, CC_SUSPEND | REQUEST, chanp->proc); in lli_suspend()
467 ic.driver = chanp->cs->myid; in lli_leased_hup()
469 ic.arg = chanp->chan; in lli_leased_hup()
470 sprintf(ic.parm.num, "L0010"); in lli_leased_hup()
471 chanp->cs->iif.statcallb(&ic); in lli_leased_hup()
472 if (chanp->debug & 1) in lli_leased_hup()
481 struct Channel *chanp = fi->userdata; in lli_disconnect_req()
483 if (chanp->leased) { in lli_disconnect_req()
487 if (chanp->proc) in lli_disconnect_req()
488 chanp->proc->para.cause = 0x10; /* Normal Call Clearing */ in lli_disconnect_req()
489 chanp->d_st->lli.l4l3(chanp->d_st, CC_DISCONNECT | REQUEST, in lli_disconnect_req()
490 chanp->proc); in lli_disconnect_req()
497 struct Channel *chanp = fi->userdata; in lli_disconnect_reject()
499 if (chanp->leased) { in lli_disconnect_reject()
503 if (chanp->proc) in lli_disconnect_reject()
504 chanp->proc->para.cause = 0x15; /* Call Rejected */ in lli_disconnect_reject()
505 chanp->d_st->lli.l4l3(chanp->d_st, CC_DISCONNECT | REQUEST, in lli_disconnect_reject()
506 chanp->proc); in lli_disconnect_reject()
513 struct Channel *chanp = fi->userdata; in lli_dhup_close()
515 if (chanp->leased) { in lli_dhup_close()
518 if (chanp->debug & 1) in lli_dhup_close()
529 struct Channel *chanp = fi->userdata; in lli_reject_req()
531 if (chanp->leased) { in lli_reject_req()
536 if (chanp->proc) in lli_reject_req()
537 chanp->proc->para.cause = 0x15; /* Call Rejected */ in lli_reject_req()
538 chanp->d_st->lli.l4l3(chanp->d_st, CC_REJECT | REQUEST, chanp->proc); in lli_reject_req()
541 FsmRestartTimer(&chanp->drel_timer, 40, EV_HANGUP, NULL, 63); in lli_reject_req()
543 chanp->d_st->lli.l4l3(chanp->d_st, CC_ALERTING | REQUEST, chanp->proc); in lli_reject_req()
550 struct Channel *chanp = fi->userdata; in lli_disconn_bchan()
552 chanp->data_open = 0; in lli_disconn_bchan()
554 chanp->b_st->lli.l4l3(chanp->b_st, DL_RELEASE | REQUEST, NULL); in lli_disconn_bchan()
560 struct Channel *chanp = fi->userdata; in lli_start_disc()
562 if (chanp->leased) { in lli_start_disc()
572 struct Channel *chanp = fi->userdata; in lli_rel_b_disc()
581 struct Channel *chanp = fi->userdata; in lli_bhup_disc()
583 if (chanp->debug & 1) in lli_bhup_disc()
592 struct Channel *chanp = fi->userdata; in lli_bhup_rel_b()
595 chanp->data_open = 0; in lli_bhup_rel_b()
596 if (chanp->debug & 1) in lli_bhup_rel_b()
605 struct Channel *chanp = fi->userdata; in lli_release_bchan()
607 chanp->data_open = 0; in lli_release_bchan()
609 chanp->b_st->lli.l4l3(chanp->b_st, DL_RELEASE | REQUEST, NULL); in lli_release_bchan()
616 struct Channel *chanp = fi->userdata; in lli_rel_b_dhup()
625 struct Channel *chanp = fi->userdata; in lli_bhup_dhup()
627 if (chanp->debug & 1) in lli_bhup_dhup()
636 struct Channel *chanp = fi->userdata; in lli_abort()
638 chanp->data_open = 0; in lli_abort()
639 chanp->b_st->lli.l4l3(chanp->b_st, DL_RELEASE | REQUEST, NULL); in lli_abort()
646 struct Channel *chanp = fi->userdata; in lli_release_req()
648 if (chanp->leased) { in lli_release_req()
652 chanp->d_st->lli.l4l3(chanp->d_st, CC_RELEASE | REQUEST, in lli_release_req()
653 chanp->proc); in lli_release_req()
660 struct Channel *chanp = fi->userdata; in lli_rel_b_release_req()
669 struct Channel *chanp = fi->userdata; in lli_bhup_release_req()
671 if (chanp->debug & 1) in lli_bhup_release_req()
682 struct Channel *chanp = fi->userdata; in lli_charge_info()
685 ic.driver = chanp->cs->myid; in lli_charge_info()
687 ic.arg = chanp->chan; in lli_charge_info()
688 sprintf(ic.parm.num, "%d", chanp->proc->para.chargeinfo); in lli_charge_info()
689 chanp->cs->iif.statcallb(&ic); in lli_charge_info()
697 struct Channel *chanp = fi->userdata; in lli_dchan_not_ready()
699 if (chanp->debug & 1) in lli_dchan_not_ready()
707 struct Channel *chanp = fi->userdata; in lli_no_setup_rsp()
709 if (chanp->debug & 1) in lli_no_setup_rsp()
724 struct Channel *chanp = fi->userdata; in lli_failure_l()
728 ic.driver = chanp->cs->myid; in lli_failure_l()
730 ic.arg = chanp->chan; in lli_failure_l()
731 sprintf(ic.parm.num, "L%02X%02X", 0, 0x2f); in lli_failure_l()
732 chanp->cs->iif.statcallb(&ic); in lli_failure_l()
734 chanp->Flags = 0; in lli_failure_l()
735 chanp->cs->cardmsg(chanp->cs, MDL_INFO_REL, (void *) (long)chanp->chan); in lli_failure_l()
741 struct Channel *chanp = fi->userdata; in lli_rel_b_fail()
750 struct Channel *chanp = fi->userdata; in lli_bhup_fail()
752 if (chanp->debug & 1) in lli_bhup_fail()
761 struct Channel *chanp = fi->userdata; in lli_failure_a()
763 chanp->data_open = 0; in lli_failure_a()
764 chanp->b_st->lli.l4l3(chanp->b_st, DL_RELEASE | REQUEST, NULL); in lli_failure_a()
768 /* *INDENT-OFF* */
831 /* ETS 300-104 16.1 */
835 /* *INDENT-ON* */
856 struct PStack *st = chanp->b_st; in release_b_st()
858 if (test_and_clear_bit(FLG_START_B, &chanp->Flags)) { in release_b_st()
859 chanp->bcs->BC_Close(chanp->bcs); in release_b_st()
860 switch (chanp->l2_active_protocol) { in release_b_st()
878 struct IsdnCardState *cs = st->l1.hardware; in selectfreechannel() local
879 struct Channel *chanp = st->lli.userdata; in selectfreechannel()
882 if (test_bit(FLG_TWO_DCHAN, &cs->HW_Flags)) in selectfreechannel()
892 while (i < ((bch) ? cs->chanlimit : (2 + MAX_WAITING_CALLS))) { in selectfreechannel()
893 if (chanp->fi.state == ST_NULL) in selectfreechannel()
901 chanp = st->lli.userdata; in selectfreechannel()
904 if (chanp->fi.state == ST_NULL) in selectfreechannel()
913 static void stat_redir_result(struct IsdnCardState *cs, int chan, ulong result) in stat_redir_result() argument
916 ic.driver = cs->myid; in stat_redir_result()
919 ic.parm.num[0] = result; in stat_redir_result()
920 cs->iif.statcallb(&ic); in stat_redir_result()
927 struct IsdnCardState *cs = st->l1.hardware; in dchan_l3l4() local
934 if (!(chanp = selectfreechannel(pc->st, pc->para.bchannel))) { in dchan_l3l4()
935 pc->para.cause = 0x11; /* User busy */ in dchan_l3l4()
936 pc->st->lli.l4l3(pc->st, CC_REJECT | REQUEST, pc); in dchan_l3l4()
938 chanp->proc = pc; in dchan_l3l4()
939 pc->chan = chanp; in dchan_l3l4()
940 FsmEvent(&chanp->fi, EV_SETUP_IND, NULL); in dchan_l3l4()
944 if (!(chanp = pc->chan)) in dchan_l3l4()
949 FsmEvent(&chanp->fi, EV_SETUP_IND, NULL); in dchan_l3l4()
952 FsmEvent(&chanp->fi, EV_DISCONNECT_IND, NULL); in dchan_l3l4()
955 FsmEvent(&chanp->fi, EV_RELEASE, NULL); in dchan_l3l4()
958 FsmEvent(&chanp->fi, EV_RELEASE, NULL); in dchan_l3l4()
961 FsmEvent(&chanp->fi, EV_SETUP_CNF, NULL); in dchan_l3l4()
964 FsmEvent(&chanp->fi, EV_RELEASE, NULL); in dchan_l3l4()
967 FsmEvent(&chanp->fi, EV_RELEASE, NULL); in dchan_l3l4()
970 FsmEvent(&chanp->fi, EV_SETUP_CMPL_IND, NULL); in dchan_l3l4()
973 FsmEvent(&chanp->fi, EV_SETUP_CNF, NULL); in dchan_l3l4()
976 FsmEvent(&chanp->fi, EV_CINF, NULL); in dchan_l3l4()
979 FsmEvent(&chanp->fi, EV_NOSETUP_RSP, NULL); in dchan_l3l4()
982 FsmEvent(&chanp->fi, EV_SETUP_ERR, NULL); in dchan_l3l4()
985 FsmEvent(&chanp->fi, EV_CONNECT_ERR, NULL); in dchan_l3l4()
988 FsmEvent(&chanp->fi, EV_RELEASE, NULL); in dchan_l3l4()
997 stat_redir_result(cs, chanp->chan, pc->redir_result); in dchan_l3l4()
1000 if (chanp->debug & 0x800) { in dchan_l3l4()
1001 HiSax_putstatus(chanp->cs, "Ch", in dchan_l3l4()
1002 "%d L3->L4 unknown primitiv %#x", in dchan_l3l4()
1003 chanp->chan, pr); in dchan_l3l4()
1017 return -ENOMEM; in init_PStack()
1018 (*stp)->next = NULL; in init_PStack()
1019 (*stp)->l1.l1l2 = dummy_pstack; in init_PStack()
1020 (*stp)->l1.l1hw = dummy_pstack; in init_PStack()
1021 (*stp)->l1.l1tei = dummy_pstack; in init_PStack()
1022 (*stp)->l2.l2tei = dummy_pstack; in init_PStack()
1023 (*stp)->l2.l2l1 = dummy_pstack; in init_PStack()
1024 (*stp)->l2.l2l3 = dummy_pstack; in init_PStack()
1025 (*stp)->l3.l3l2 = dummy_pstack; in init_PStack()
1026 (*stp)->l3.l3ml3 = dummy_pstack; in init_PStack()
1027 (*stp)->l3.l3l4 = dummy_pstack; in init_PStack()
1028 (*stp)->lli.l4l3 = dummy_pstack; in init_PStack()
1029 (*stp)->ma.layer = dummy_pstack; in init_PStack()
1037 struct IsdnCardState *cs = chanp->cs; in init_d_st() local
1041 err = init_PStack(&chanp->d_st); in init_d_st()
1044 st = chanp->d_st; in init_d_st()
1045 st->next = NULL; in init_d_st()
1046 HiSax_addlist(cs, st); in init_d_st()
1047 setstack_HiSax(st, cs); in init_d_st()
1048 st->l2.sap = 0; in init_d_st()
1049 st->l2.tei = -1; in init_d_st()
1050 st->l2.flag = 0; in init_d_st()
1051 test_and_set_bit(FLG_MOD128, &st->l2.flag); in init_d_st()
1052 test_and_set_bit(FLG_LAPD, &st->l2.flag); in init_d_st()
1053 test_and_set_bit(FLG_ORIG, &st->l2.flag); in init_d_st()
1054 st->l2.maxlen = MAX_DFRAME_LEN; in init_d_st()
1055 st->l2.window = 1; in init_d_st()
1056 st->l2.T200 = 1000; /* 1000 milliseconds */ in init_d_st()
1057 st->l2.N200 = 3; /* try 3 times */ in init_d_st()
1058 st->l2.T203 = 10000; /* 10000 milliseconds */ in init_d_st()
1059 if (test_bit(FLG_TWO_DCHAN, &cs->HW_Flags)) in init_d_st()
1060 sprintf(tmp, "DCh%d Q.921 ", chanp->chan); in init_d_st()
1065 st->lli.userdata = chanp; in init_d_st()
1066 st->l3.l3l4 = dchan_l3l4; in init_d_st()
1075 struct Channel *chanp = fi->userdata; in callc_debug()
1079 sprintf(tmp, "Ch%d callc ", chanp->chan); in callc_debug()
1080 VHiSax_putstatus(chanp->cs, tmp, fmt, args); in callc_debug()
1087 struct Channel *chanp = csta->channel + chan; in init_chan()
1090 chanp->cs = csta; in init_chan()
1091 chanp->bcs = csta->bcs + chan; in init_chan()
1092 chanp->chan = chan; in init_chan()
1093 chanp->incoming = 0; in init_chan()
1094 chanp->debug = 0; in init_chan()
1095 chanp->Flags = 0; in init_chan()
1096 chanp->leased = 0; in init_chan()
1097 err = init_PStack(&chanp->b_st); in init_chan()
1100 chanp->b_st->l1.delay = DEFAULT_B_DELAY; in init_chan()
1101 chanp->fi.fsm = &callcfsm; in init_chan()
1102 chanp->fi.state = ST_NULL; in init_chan()
1103 chanp->fi.debug = 0; in init_chan()
1104 chanp->fi.userdata = chanp; in init_chan()
1105 chanp->fi.printdebug = callc_debug; in init_chan()
1106 FsmInitTimer(&chanp->fi, &chanp->dial_timer); in init_chan()
1107 FsmInitTimer(&chanp->fi, &chanp->drel_timer); in init_chan()
1108 if (!chan || (test_bit(FLG_TWO_DCHAN, &csta->HW_Flags) && chan < 2)) { in init_chan()
1113 chanp->d_st = csta->channel->d_st; in init_chan()
1115 chanp->data_open = 0; in init_chan()
1138 if (test_bit(FLG_PTP, &csta->channel->d_st->l2.flag)) { in CallcNewChan()
1140 csta->channel->d_st->lli.l4l3(csta->channel->d_st, in CallcNewChan()
1149 struct PStack *st = chanp->d_st; in release_d_st()
1155 HiSax_rmlist(st->l1.hardware, st); in release_d_st()
1157 chanp->d_st = NULL; in release_d_st()
1166 FsmDelTimer(&csta->channel[i].drel_timer, 74); in CallcFreeChan()
1167 FsmDelTimer(&csta->channel[i].dial_timer, 75); in CallcFreeChan()
1168 if (i || test_bit(FLG_TWO_DCHAN, &csta->HW_Flags)) in CallcFreeChan()
1169 release_d_st(csta->channel + i); in CallcFreeChan()
1170 if (csta->channel[i].b_st) { in CallcFreeChan()
1171 release_b_st(csta->channel + i); in CallcFreeChan()
1172 kfree(csta->channel[i].b_st); in CallcFreeChan()
1173 csta->channel[i].b_st = NULL; in CallcFreeChan()
1176 if (i || test_bit(FLG_TWO_DCHAN, &csta->HW_Flags)) { in CallcFreeChan()
1177 release_d_st(csta->channel + i); in CallcFreeChan()
1179 csta->channel[i].d_st = NULL; in CallcFreeChan()
1186 struct Channel *chanp = (struct Channel *) st->lli.userdata; in lldata_handler()
1191 if (chanp->data_open) { in lldata_handler()
1192 if (chanp->debug & 0x800) in lldata_handler()
1193 link_debug(chanp, 0, "lldata: %d", skb->len); in lldata_handler()
1194 chanp->cs->iif.rcvcallb_skb(chanp->cs->myid, chanp->chan, skb); in lldata_handler()
1202 FsmEvent(&chanp->fi, EV_BC_EST, NULL); in lldata_handler()
1206 FsmEvent(&chanp->fi, EV_BC_REL, NULL); in lldata_handler()
1218 struct Channel *chanp = (struct Channel *) st->lli.userdata; in lltrans_handler()
1223 if (chanp->data_open) { in lltrans_handler()
1224 if (chanp->debug & 0x800) in lltrans_handler()
1225 link_debug(chanp, 0, "lltrans: %d", skb->len); in lltrans_handler()
1226 chanp->cs->iif.rcvcallb_skb(chanp->cs->myid, chanp->chan, skb); in lltrans_handler()
1234 FsmEvent(&chanp->fi, EV_BC_EST, NULL); in lltrans_handler()
1238 FsmEvent(&chanp->fi, EV_BC_REL, NULL); in lltrans_handler()
1250 struct Channel *chanp = st->lli.userdata; in lli_writewakeup()
1253 if (chanp->debug & 0x800) in lli_writewakeup()
1255 ic.driver = chanp->cs->myid; in lli_writewakeup()
1257 ic.arg = chanp->chan; in lli_writewakeup()
1259 chanp->cs->iif.statcallb(&ic); in lli_writewakeup()
1265 struct PStack *st = chanp->b_st; in init_b_st()
1266 struct IsdnCardState *cs = chanp->cs; in init_b_st() local
1269 st->l1.hardware = cs; in init_b_st()
1270 if (chanp->leased) in init_b_st()
1271 st->l1.bc = chanp->chan & 1; in init_b_st()
1273 st->l1.bc = chanp->proc->para.bchannel - 1; in init_b_st()
1274 switch (chanp->l2_active_protocol) { in init_b_st()
1277 st->l1.mode = L1_MODE_HDLC; in init_b_st()
1280 st->l1.mode = L1_MODE_HDLC_56K; in init_b_st()
1283 st->l1.mode = L1_MODE_TRANS; in init_b_st()
1286 st->l1.mode = L1_MODE_V32; in init_b_st()
1289 st->l1.mode = L1_MODE_FAX; in init_b_st()
1292 chanp->bcs->conmsg = NULL; in init_b_st()
1293 if (chanp->bcs->BC_SetStack(st, chanp->bcs)) in init_b_st()
1294 return (-1); in init_b_st()
1295 st->l2.flag = 0; in init_b_st()
1296 test_and_set_bit(FLG_LAPB, &st->l2.flag); in init_b_st()
1297 st->l2.maxlen = MAX_DATA_SIZE; in init_b_st()
1299 test_and_set_bit(FLG_ORIG, &st->l2.flag); in init_b_st()
1300 st->l2.T200 = 1000; /* 1000 milliseconds */ in init_b_st()
1301 st->l2.window = 7; in init_b_st()
1302 st->l2.N200 = 4; /* try 4 times */ in init_b_st()
1303 st->l2.T203 = 5000; /* 5000 milliseconds */ in init_b_st()
1304 st->l3.debug = 0; in init_b_st()
1305 switch (chanp->l2_active_protocol) { in init_b_st()
1307 sprintf(tmp, "Ch%d X.75", chanp->chan); in init_b_st()
1310 st->l2.l2l3 = lldata_handler; in init_b_st()
1311 st->lli.userdata = chanp; in init_b_st()
1312 test_and_clear_bit(FLG_LLI_L1WAKEUP, &st->lli.flag); in init_b_st()
1313 test_and_set_bit(FLG_LLI_L2WAKEUP, &st->lli.flag); in init_b_st()
1314 st->l2.l2m.debug = chanp->debug & 16; in init_b_st()
1315 st->l2.debug = chanp->debug & 64; in init_b_st()
1322 st->l1.l1l2 = lltrans_handler; in init_b_st()
1323 st->lli.userdata = chanp; in init_b_st()
1324 test_and_set_bit(FLG_LLI_L1WAKEUP, &st->lli.flag); in init_b_st()
1325 test_and_clear_bit(FLG_LLI_L2WAKEUP, &st->lli.flag); in init_b_st()
1330 test_and_set_bit(FLG_START_B, &chanp->Flags); in init_b_st()
1337 struct Channel *chanp = (struct Channel *) st->lli.userdata; in leased_l4l3()
1342 link_debug(chanp, 0, "leased line d-channel DATA"); in leased_l4l3()
1346 st->l2.l2l1(st, PH_ACTIVATE | REQUEST, NULL); in leased_l4l3()
1360 struct Channel *chanp = (struct Channel *) st->lli.userdata; in leased_l1l2()
1366 link_debug(chanp, 0, "leased line d-channel DATA"); in leased_l1l2()
1375 if (test_bit(FLG_TWO_DCHAN, &chanp->cs->HW_Flags)) in leased_l1l2()
1380 FsmEvent(&chanp->fi, event, NULL); in leased_l1l2()
1396 struct Channel *chanp = csta->channel; in distr_debug()
1401 chanp[i].d_st->l2.l2m.debug = debugflags & 8; in distr_debug()
1402 chanp[i].b_st->l2.l2m.debug = debugflags & 0x10; in distr_debug()
1403 chanp[i].d_st->l2.debug = debugflags & 0x20; in distr_debug()
1404 chanp[i].b_st->l2.debug = debugflags & 0x40; in distr_debug()
1405 chanp[i].d_st->l3.l3m.debug = debugflags & 0x80; in distr_debug()
1406 chanp[i].b_st->l3.l3m.debug = debugflags & 0x100; in distr_debug()
1407 chanp[i].b_st->ma.tei_m.debug = debugflags & 0x200; in distr_debug()
1408 chanp[i].b_st->ma.debug = debugflags & 0x200; in distr_debug()
1409 chanp[i].d_st->l1.l1m.debug = debugflags & 0x1000; in distr_debug()
1410 chanp[i].b_st->l1.l1m.debug = debugflags & 0x2000; in distr_debug()
1413 csta->debug |= DEB_DLOG_HEX; in distr_debug()
1415 csta->debug &= ~DEB_DLOG_HEX; in distr_debug()
1425 t += QuickHex(t, (u_char *)cm, (cm->Length > 50) ? 50 : cm->Length); in capi_debug()
1426 t--; in capi_debug()
1428 HiSax_putstatus(chanp->cs, "Ch", "%d CAPIMSG %s", chanp->chan, tmpbuf); in capi_debug()
1433 if ((cm->para[0] != 3) || (cm->para[1] != 0)) in lli_got_fac_req()
1435 if (cm->para[2] < 3) in lli_got_fac_req()
1437 if (cm->para[4] != 0) in lli_got_fac_req()
1439 switch (cm->para[3]) { in lli_got_fac_req()
1441 strncpy(chanp->setup.phone, &cm->para[5], cm->para[5] + 1); in lli_got_fac_req()
1442 FsmEvent(&chanp->fi, EV_SUSPEND, cm); in lli_got_fac_req()
1445 strncpy(chanp->setup.phone, &cm->para[5], cm->para[5] + 1); in lli_got_fac_req()
1446 if (chanp->fi.state == ST_NULL) { in lli_got_fac_req()
1447 FsmEvent(&chanp->fi, EV_RESUME, cm); in lli_got_fac_req()
1449 FsmDelTimer(&chanp->dial_timer, 72); in lli_got_fac_req()
1450 FsmAddTimer(&chanp->dial_timer, 80, EV_RESUME, cm, 73); in lli_got_fac_req()
1457 lli_got_manufacturer(struct Channel *chanp, struct IsdnCardState *cs, capi_msg *cm) { in lli_got_manufacturer() argument
1458 if ((cs->typ == ISDN_CTYPE_ELSA) || (cs->typ == ISDN_CTYPE_ELSA_PNP) || in lli_got_manufacturer()
1459 (cs->typ == ISDN_CTYPE_ELSA_PCI)) { in lli_got_manufacturer()
1460 if (cs->hw.elsa.MFlag) { in lli_got_manufacturer()
1461 cs->cardmsg(cs, CARD_AUX_IND, cm->para); in lli_got_manufacturer()
1471 set_channel_limit(struct IsdnCardState *cs, int chanmax) in set_channel_limit() argument
1477 return (-EINVAL); in set_channel_limit()
1478 cs->chanlimit = 0; in set_channel_limit()
1480 ic.driver = cs->myid; in set_channel_limit()
1484 ic.parm.num[0] = 0; /* disabled */ in set_channel_limit()
1486 ic.parm.num[0] = 1; /* enabled */ in set_channel_limit()
1487 i = cs->iif.statcallb(&ic); in set_channel_limit()
1488 if (i) return (-EINVAL); in set_channel_limit()
1490 cs->chanlimit++; in set_channel_limit()
1498 struct IsdnCardState *csta = hisax_findcard(ic->driver); in HiSax_command()
1502 u_int num; in HiSax_command() local
1507 ic->command, ic->driver); in HiSax_command()
1508 return -ENODEV; in HiSax_command()
1510 switch (ic->command) { in HiSax_command()
1512 chanp = csta->channel + ic->arg; in HiSax_command()
1515 chanp = csta->channel + (ic->arg & 0xff); in HiSax_command()
1516 if (chanp->debug & 1) in HiSax_command()
1518 csta->cardnr + 1, ic->arg >> 8); in HiSax_command()
1519 chanp->l2_protocol = ic->arg >> 8; in HiSax_command()
1522 chanp = csta->channel + (ic->arg & 0xff); in HiSax_command()
1523 if (chanp->debug & 1) in HiSax_command()
1525 csta->cardnr + 1, ic->arg >> 8); in HiSax_command()
1526 chanp->l3_protocol = ic->arg >> 8; in HiSax_command()
1529 chanp = csta->channel + (ic->arg & 0xff); in HiSax_command()
1530 if (chanp->debug & 1) in HiSax_command()
1531 link_debug(chanp, 1, "DIAL %s -> %s (%d,%d)", in HiSax_command()
1532 ic->parm.setup.eazmsn, ic->parm.setup.phone, in HiSax_command()
1533 ic->parm.setup.si1, ic->parm.setup.si2); in HiSax_command()
1534 memcpy(&chanp->setup, &ic->parm.setup, sizeof(setup_parm)); in HiSax_command()
1535 if (!strcmp(chanp->setup.eazmsn, "0")) in HiSax_command()
1536 chanp->setup.eazmsn[0] = '\0'; in HiSax_command()
1539 if (chanp->fi.state == ST_NULL) { in HiSax_command()
1540 FsmEvent(&chanp->fi, EV_DIAL, NULL); in HiSax_command()
1542 FsmDelTimer(&chanp->dial_timer, 70); in HiSax_command()
1543 FsmAddTimer(&chanp->dial_timer, 50, EV_DIAL, NULL, 71); in HiSax_command()
1547 chanp = csta->channel + ic->arg; in HiSax_command()
1548 if (chanp->debug & 1) in HiSax_command()
1550 FsmEvent(&chanp->fi, EV_ACCEPTB, NULL); in HiSax_command()
1553 chanp = csta->channel + ic->arg; in HiSax_command()
1554 memcpy(&chanp->setup, &ic->parm.setup, sizeof(setup_parm)); in HiSax_command()
1555 if (chanp->debug & 1) in HiSax_command()
1557 FsmEvent(&chanp->fi, EV_ACCEPTD, NULL); in HiSax_command()
1560 chanp = csta->channel + ic->arg; in HiSax_command()
1561 if (chanp->debug & 1) in HiSax_command()
1563 FsmEvent(&chanp->fi, EV_HANGUP, NULL); in HiSax_command()
1566 chanp = csta->channel + ic->arg; in HiSax_command()
1567 if (chanp->debug & 1) in HiSax_command()
1568 capi_debug(chanp, &ic->parm.cmsg); in HiSax_command()
1569 if (ic->parm.cmsg.Length < 8) in HiSax_command()
1571 switch (ic->parm.cmsg.Command) { in HiSax_command()
1573 if (ic->parm.cmsg.Subcommand == CAPI_REQ) in HiSax_command()
1574 lli_got_fac_req(chanp, &ic->parm.cmsg); in HiSax_command()
1577 if (ic->parm.cmsg.Subcommand == CAPI_REQ) in HiSax_command()
1578 lli_got_manufacturer(chanp, csta, &ic->parm.cmsg); in HiSax_command()
1585 switch (ic->arg) { in HiSax_command()
1587 num = *(unsigned int *) ic->parm.num; in HiSax_command()
1588 HiSax_reportcard(csta->cardnr, num); in HiSax_command()
1591 num = *(unsigned int *) ic->parm.num; in HiSax_command()
1592 distr_debug(csta, num); in HiSax_command()
1594 csta->cardnr + 1, num); in HiSax_command()
1596 "card %d set to %x", csta->cardnr + 1, num); in HiSax_command()
1599 num = *(unsigned int *) ic->parm.num; in HiSax_command()
1600 csta->channel[0].b_st->l1.delay = num; in HiSax_command()
1601 csta->channel[1].b_st->l1.delay = num; in HiSax_command()
1603 csta->cardnr + 1, num); in HiSax_command()
1605 csta->cardnr + 1, num); in HiSax_command()
1608 num = *(unsigned int *) ic->parm.num; in HiSax_command()
1609 if ((num < 1) || (num > 2)) { in HiSax_command()
1611 "wrong channel %d", num); in HiSax_command()
1613 num); in HiSax_command()
1615 num--; in HiSax_command()
1616 chanp = csta->channel + num; in HiSax_command()
1617 chanp->leased = 1; in HiSax_command()
1620 csta->cardnr + 1, num + 1); in HiSax_command()
1621 chanp->d_st->l1.l1l2 = leased_l1l2; in HiSax_command()
1622 chanp->d_st->lli.l4l3 = leased_l4l3; in HiSax_command()
1623 chanp->d_st->lli.l4l3(chanp->d_st, in HiSax_command()
1627 case (6): /* set B-channel test loop */ in HiSax_command()
1628 num = *(unsigned int *) ic->parm.num; in HiSax_command()
1629 if (csta->stlist) in HiSax_command()
1630 csta->stlist->l2.l2l1(csta->stlist, in HiSax_command()
1631 PH_TESTLOOP | REQUEST, (void *) (long)num); in HiSax_command()
1634 num = *(unsigned int *) ic->parm.num; in HiSax_command()
1635 if (test_bit(FLG_TWO_DCHAN, &csta->HW_Flags)) { in HiSax_command()
1637 } else if (num) { in HiSax_command()
1638 test_and_set_bit(FLG_PTP, &csta->channel[0].d_st->l2.flag); in HiSax_command()
1639 test_and_set_bit(FLG_FIXED_TEI, &csta->channel[0].d_st->l2.flag); in HiSax_command()
1640 csta->channel[0].d_st->l2.tei = 0; in HiSax_command()
1644 csta->channel[0].d_st->lli.l4l3(csta->channel[0].d_st, in HiSax_command()
1647 test_and_clear_bit(FLG_PTP, &csta->channel[0].d_st->l2.flag); in HiSax_command()
1648 test_and_clear_bit(FLG_FIXED_TEI, &csta->channel[0].d_st->l2.flag); in HiSax_command()
1654 num = *(unsigned int *)ic->parm.num; in HiSax_command()
1655 chanp = csta->channel + (num & 1); in HiSax_command()
1656 num = num >> 1; in HiSax_command()
1657 if (num == 127) { in HiSax_command()
1658 test_and_clear_bit(FLG_FIXED_TEI, &chanp->d_st->l2.flag); in HiSax_command()
1659 chanp->d_st->l2.tei = -1; in HiSax_command()
1663 test_and_set_bit(FLG_FIXED_TEI, &chanp->d_st->l2.flag); in HiSax_command()
1664 chanp->d_st->l2.tei = num; in HiSax_command()
1665 HiSax_putstatus(csta, "set card ", "in FIXED TEI (%d) mode", num); in HiSax_command()
1667 num); in HiSax_command()
1669 chanp->d_st->lli.l4l3(chanp->d_st, in HiSax_command()
1673 num = csta->debug & DEB_DLOG_HEX; in HiSax_command()
1674 csta->debug = *(unsigned int *) ic->parm.num; in HiSax_command()
1675 csta->debug |= num; in HiSax_command()
1676 HiSax_putstatus(cards[0].cs, "l1 debugging ", in HiSax_command()
1678 csta->cardnr + 1, csta->debug); in HiSax_command()
1680 csta->cardnr + 1, csta->debug); in HiSax_command()
1683 csta->channel[0].d_st->l3.debug = *(unsigned int *) ic->parm.num; in HiSax_command()
1684 csta->channel[1].d_st->l3.debug = *(unsigned int *) ic->parm.num; in HiSax_command()
1685 HiSax_putstatus(cards[0].cs, "l3 debugging ", in HiSax_command()
1686 "flags card %d set to %x\n", csta->cardnr + 1, in HiSax_command()
1687 *(unsigned int *) ic->parm.num); in HiSax_command()
1689 csta->cardnr + 1, *(unsigned int *) ic->parm.num); in HiSax_command()
1692 i = *(unsigned int *) ic->parm.num; in HiSax_command()
1695 if (csta->auxcmd) in HiSax_command()
1696 return (csta->auxcmd(csta, ic)); in HiSax_command()
1698 (int) ic->arg); in HiSax_command()
1699 return (-EINVAL); in HiSax_command()
1704 chanp = csta->channel + ic->arg; in HiSax_command()
1705 if (chanp->debug & 1) in HiSax_command()
1707 FsmEvent(&chanp->fi, EV_PROCEED, NULL); in HiSax_command()
1711 chanp = csta->channel + ic->arg; in HiSax_command()
1712 if (chanp->debug & 1) in HiSax_command()
1714 FsmEvent(&chanp->fi, EV_ALERT, NULL); in HiSax_command()
1718 chanp = csta->channel + ic->arg; in HiSax_command()
1719 if (chanp->debug & 1) in HiSax_command()
1721 memcpy(&chanp->setup, &ic->parm.setup, sizeof(setup_parm)); in HiSax_command()
1722 FsmEvent(&chanp->fi, EV_REDIR, NULL); in HiSax_command()
1727 for (st = csta->stlist; st; st = st->next) in HiSax_command()
1728 if (st->protocol == (ic->arg & 0xFF)) in HiSax_command()
1729 return (st->lli.l4l3_proto(st, ic)); in HiSax_command()
1730 return (-EINVAL); in HiSax_command()
1733 if (csta->auxcmd) in HiSax_command()
1734 return (csta->auxcmd(csta, ic)); in HiSax_command()
1735 return (-EINVAL); in HiSax_command()
1746 int len = skb->len; in HiSax_writebuf_skb()
1752 return -ENODEV; in HiSax_writebuf_skb()
1754 chanp = csta->channel + chan; in HiSax_writebuf_skb()
1755 st = chanp->b_st; in HiSax_writebuf_skb()
1756 if (!chanp->data_open) { in HiSax_writebuf_skb()
1758 return -EIO; in HiSax_writebuf_skb()
1764 return -EINVAL; in HiSax_writebuf_skb()
1767 if ((len + chanp->bcs->tx_cnt) > MAX_DATA_MEM) { in HiSax_writebuf_skb()
1771 if (chanp->debug & 0x800) in HiSax_writebuf_skb()
1774 } else if (chanp->debug & 0x800) in HiSax_writebuf_skb()
1775 link_debug(chanp, 1, "writebuf %d/%d/%d", len, chanp->bcs->tx_cnt, MAX_DATA_MEM); in HiSax_writebuf_skb()
1778 nskb->truesize = nskb->len; in HiSax_writebuf_skb()
1780 nskb->pkt_type = PACKET_NOACK; in HiSax_writebuf_skb()
1781 if (chanp->l2_active_protocol == ISDN_PROTO_L2_X75I) in HiSax_writebuf_skb()
1782 st->l3.l3l2(st, DL_DATA | REQUEST, nskb); in HiSax_writebuf_skb()
1784 chanp->bcs->tx_cnt += len; in HiSax_writebuf_skb()
1785 st->l2.l2l1(st, PH_DATA | REQUEST, nskb); in HiSax_writebuf_skb()