• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/src/linux/linux-2.6/drivers/isdn/hisax/

Lines Matching refs:st

147 freewin(struct PStack *st)
149 freewin1(&st->l2);
162 cansend(struct PStack *st)
166 if(test_bit(FLG_MOD128, &st->l2.flag))
167 p1 = (st->l2.vs - st->l2.va) % 128;
169 p1 = (st->l2.vs - st->l2.va) % 8;
170 return ((p1 < st->l2.window) && !test_bit(FLG_PEER_BUSY, &st->l2.flag));
217 enqueue_super(struct PStack *st,
220 if (test_bit(FLG_LAPB, &st->l2.flag))
221 st->l1.bcs->tx_cnt += skb->len;
222 st->l2.l2l1(st, PH_DATA | REQUEST, skb);
252 IsSFrame(u_char * data, struct PStack *st)
256 if (!test_bit(FLG_MOD128, &st->l2.flag))
262 IsSABME(u_char * data, struct PStack *st)
266 return (test_bit(FLG_MOD128, &st->l2.flag) ? d == SABME : d == SABM);
270 IsREJ(u_char * data, struct PStack *st)
272 return (test_bit(FLG_MOD128, &st->l2.flag) ? data[0] == REJ : (data[0] & 0xf) == REJ);
282 IsRNR(u_char * data, struct PStack *st)
284 return (test_bit(FLG_MOD128, &st->l2.flag) ? data[0] == RNR : (data[0] & 0xf) == RNR);
288 iframe_error(struct PStack *st, struct sk_buff *skb)
290 int i = l2addrsize(&st->l2) + (test_bit(FLG_MOD128, &st->l2.flag) ? 2 : 1);
293 if (test_bit(FLG_ORIG, &st->l2.flag))
303 if ((skb->len - i) > st->l2.maxlen)
311 super_error(struct PStack *st, struct sk_buff *skb)
313 if (skb->len != l2addrsize(&st->l2) +
314 (test_bit(FLG_MOD128, &st->l2.flag) ? 2 : 1))
321 unnum_error(struct PStack *st, struct sk_buff *skb, int wantrsp)
324 if (test_bit(FLG_ORIG, &st->l2.flag))
330 if (skb->len != l2addrsize(&st->l2) + 1)
337 UI_error(struct PStack *st, struct sk_buff *skb)
340 if (test_bit(FLG_ORIG, &st->l2.flag))
346 if (skb->len > st->l2.maxlen + l2addrsize(&st->l2) + 1)
353 FRMR_error(struct PStack *st, struct sk_buff *skb)
355 int headers = l2addrsize(&st->l2) + 1;
359 if (test_bit(FLG_ORIG, &st->l2.flag))
365 if (test_bit(FLG_MOD128, &st->l2.flag)) {
369 l2m_debug(&st->l2.l2m, "FRMR information %2x %2x %2x %2x %2x",
376 l2m_debug(&st->l2.l2m, "FRMR information %2x %2x %2x",
384 legalnr(struct PStack *st, unsigned int nr)
386 struct Layer2 *l2 = &st->l2;
395 setva(struct PStack *st, unsigned int nr)
397 struct Layer2 *l2 = &st->l2;
415 if (test_bit(FLG_LLI_L2WAKEUP, &st->lli.flag) && (len >=0))
416 lli_writewakeup(st, len);
423 send_uframe(struct PStack *st, u_char cmd, u_char cr)
429 i = sethdraddr(&st->l2, tmp, cr);
436 enqueue_super(st, skb);
440 get_PollFlag(struct PStack * st, struct sk_buff * skb)
442 return (skb->data[l2addrsize(&(st->l2))] & 0x10);
446 get_PollFlagFree(struct PStack *st, struct sk_buff *skb)
450 PF = get_PollFlag(st, skb);
456 start_t200(struct PStack *st, int i)
458 FsmAddTimer(&st->l2.t200, st->l2.T200, EV_L2_T200, NULL, i);
459 test_and_set_bit(FLG_T200_RUN, &st->l2.flag);
463 restart_t200(struct PStack *st, int i)
465 FsmRestartTimer(&st->l2.t200, st->l2.T200, EV_L2_T200, NULL, i);
466 test_and_set_bit(FLG_T200_RUN, &st->l2.flag);
470 stop_t200(struct PStack *st, int i)
472 if(test_and_clear_bit(FLG_T200_RUN, &st->l2.flag))
473 FsmDelTimer(&st->l2.t200, i);
477 st5_dl_release_l2l3(struct PStack *st)
481 if(test_and_clear_bit(FLG_PEND_REL, &st->l2.flag))
486 st->l2.l2l3(st, pr, NULL);
490 lapb_dl_release_l2l3(struct PStack *st, int f)
492 if (test_bit(FLG_LAPB, &st->l2.flag))
493 st->l2.l2l1(st, PH_DEACTIVATE | REQUEST, NULL);
494 st->l2.l2l3(st, DL_RELEASE | f, NULL);
500 struct PStack *st = fi->userdata;
503 clear_exception(&st->l2);
504 st->l2.rc = 0;
505 cmd = (test_bit(FLG_MOD128, &st->l2.flag) ? SABME : SABM) | 0x10;
506 send_uframe(st, cmd, CMD);
507 FsmDelTimer(&st->l2.t203, 1);
508 restart_t200(st, 1);
509 test_and_clear_bit(FLG_PEND_REL, &st->l2.flag);
510 freewin(st);
518 struct PStack *st = fi->userdata;
520 if (get_PollFlagFree(st, skb))
521 st->ma.layer(st, MDL_ERROR | INDICATION, (void *) 'C');
523 st->ma.layer(st, MDL_ERROR | INDICATION, (void *) 'D');
530 struct PStack *st = fi->userdata;
532 if (get_PollFlagFree(st, skb))
533 st->ma.layer(st, MDL_ERROR | INDICATION, (void *) 'B');
535 st->ma.layer(st, MDL_ERROR | INDICATION, (void *) 'E');
537 test_and_clear_bit(FLG_L3_INIT, &st->l2.flag);
545 struct PStack *st = fi->userdata;
547 if (get_PollFlagFree(st, skb))
548 st->ma.layer(st, MDL_ERROR | INDICATION, (void *) 'B');
550 st->ma.layer(st, MDL_ERROR | INDICATION, (void *) 'E');
553 test_and_clear_bit(FLG_L3_INIT, &st->l2.flag);
565 struct PStack *st = fi->userdata;
568 st->l2.l2tei(st, MDL_ASSIGN | INDICATION, NULL);
574 struct PStack *st = fi->userdata;
577 skb_queue_tail(&st->l2.ui_queue, skb);
579 st->l2.l2tei(st, MDL_ASSIGN | INDICATION, NULL);
585 struct PStack *st = fi->userdata;
588 skb_queue_tail(&st->l2.ui_queue, skb);
592 tx_ui(struct PStack *st)
598 i = sethdraddr(&(st->l2), header, CMD);
600 while ((skb = skb_dequeue(&st->l2.ui_queue))) {
602 enqueue_ui(st, skb);
609 struct PStack *st = fi->userdata;
612 skb_queue_tail(&st->l2.ui_queue, skb);
613 tx_ui(st);
619 struct PStack *st = fi->userdata;
622 skb_pull(skb, l2headersize(&st->l2, 1));
623 st->l2.l2l3(st, DL_UNIT_DATA | INDICATION, skb);
634 struct PStack *st = fi->userdata;
637 test_and_set_bit(FLG_L3_INIT, &st->l2.flag);
643 struct PStack *st = fi->userdata;
645 skb_queue_purge(&st->l2.i_queue);
646 test_and_set_bit(FLG_L3_INIT, &st->l2.flag);
647 test_and_clear_bit(FLG_PEND_REL, &st->l2.flag);
653 struct PStack *st = fi->userdata;
655 skb_queue_purge(&st->l2.i_queue);
657 test_and_set_bit(FLG_L3_INIT, &st->l2.flag);
663 struct PStack *st = fi->userdata;
665 st->l2.l2l3(st, DL_RELEASE | CONFIRM, NULL);
671 struct PStack *st = fi->userdata;
673 test_and_set_bit(FLG_PEND_REL, &st->l2.flag);
679 struct PStack *st = fi->userdata;
681 skb_queue_purge(&st->l2.i_queue);
682 freewin(st);
684 st->l2.rc = 0;
685 send_uframe(st, DISC | 0x10, CMD);
686 FsmDelTimer(&st->l2.t203, 1);
687 restart_t200(st, 2);
693 struct PStack *st = fi->userdata;
696 send_uframe(st, UA | get_PollFlagFree(st, skb), RSP);
698 clear_exception(&st->l2);
699 st->l2.vs = 0;
700 st->l2.va = 0;
701 st->l2.vr = 0;
702 st->l2.sow = 0;
704 FsmAddTimer(&st->l2.t203, st->l2.T203, EV_L2_T203, NULL, 3);
706 st->l2.l2l3(st, DL_ESTABLISH | INDICATION, NULL);
712 struct PStack *st = fi->userdata;
715 send_uframe(st, UA | get_PollFlagFree(st, skb), RSP);
721 struct PStack *st = fi->userdata;
724 send_uframe(st, DM | get_PollFlagFree(st, skb), RSP);
730 struct PStack *st = fi->userdata;
736 send_uframe(st, UA | get_PollFlagFree(st, skb), RSP);
738 st->ma.layer(st, MDL_ERROR | INDICATION, (void *) 'F');
740 if (st->l2.vs != st->l2.va) {
741 skb_queue_purge(&st->l2.i_queue);
745 clear_exception(&st->l2);
746 st->l2.vs = 0;
747 st->l2.va = 0;
748 st->l2.vr = 0;
749 st->l2.sow = 0;
751 stop_t200(st, 3);
752 FsmRestartTimer(&st->l2.t203, st->l2.T203, EV_L2_T203, NULL, 3);
755 st->l2.l2l3(st, DL_ESTABLISH | INDICATION, NULL);
758 if (!skb_queue_empty(&st->l2.i_queue) && cansend(st))
759 st->l2.l2l1(st, PH_PULL | REQUEST, NULL);
765 struct PStack *st = fi->userdata;
769 FsmDelTimer(&st->l2.t203, 3);
770 stop_t200(st, 4);
772 send_uframe(st, UA | get_PollFlagFree(st, skb), RSP);
774 skb_queue_purge(&st->l2.i_queue);
775 freewin(st);
776 lapb_dl_release_l2l3(st, INDICATION);
782 struct PStack *st = fi->userdata;
786 if (!get_PollFlag(st, skb)) {
792 if (test_and_clear_bit(FLG_PEND_REL, &st->l2.flag))
795 if (test_and_clear_bit(FLG_L3_INIT, &st->l2.flag)) {
797 } else if (st->l2.vs != st->l2.va) {
798 skb_queue_purge(&st->l2.i_queue);
802 stop_t200(st, 5);
804 st->l2.vr = 0;
805 st->l2.vs = 0;
806 st->l2.va = 0;
807 st->l2.sow = 0;
809 FsmAddTimer(&st->l2.t203, st->l2.T203, EV_L2_T203, NULL, 4);
812 st->l2.l2l3(st, pr, NULL);
814 if (!skb_queue_empty(&st->l2.i_queue) && cansend(st))
815 st->l2.l2l1(st, PH_PULL | REQUEST, NULL);
821 struct PStack *st = fi->userdata;
824 if (!get_PollFlag(st, skb)) {
830 stop_t200(st, 6);
831 lapb_dl_release_l2l3(st, CONFIRM);
838 struct PStack *st = fi->userdata;
841 if (!get_PollFlagFree(st, skb)) {
843 test_and_set_bit(FLG_L3_INIT, &st->l2.flag);
850 struct PStack *st = fi->userdata;
853 if (get_PollFlagFree(st, skb)) {
854 stop_t200(st, 7);
855 if (!test_bit(FLG_L3_INIT, &st->l2.flag))
856 skb_queue_purge(&st->l2.i_queue);
857 if (test_bit(FLG_LAPB, &st->l2.flag))
858 st->l2.l2l1(st, PH_DEACTIVATE | REQUEST, NULL);
859 st5_dl_release_l2l3(st);
867 struct PStack *st = fi->userdata;
870 if (get_PollFlagFree(st, skb)) {
871 stop_t200(st, 8);
872 lapb_dl_release_l2l3(st, CONFIRM);
878 enquiry_cr(struct PStack *st, u_char typ, u_char cr, u_char pf)
885 l2 = &st->l2;
897 enqueue_super(st, skb);
901 enquiry_response(struct PStack *st)
903 if (test_bit(FLG_OWN_BUSY, &st->l2.flag))
904 enquiry_cr(st, RNR, RSP, 1);
906 enquiry_cr(st, RR, RSP, 1);
907 test_and_clear_bit(FLG_ACK_PEND, &st->l2.flag);
911 transmit_enquiry(struct PStack *st)
913 if (test_bit(FLG_OWN_BUSY, &st->l2.flag))
914 enquiry_cr(st, RNR, CMD, 1);
916 enquiry_cr(st, RR, CMD, 1);
917 test_and_clear_bit(FLG_ACK_PEND, &st->l2.flag);
918 start_t200(st, 9);
925 struct PStack *st = fi->userdata;
927 st->ma.layer(st, MDL_ERROR | INDICATION, (void *) 'J');
929 test_and_clear_bit(FLG_L3_INIT, &st->l2.flag);
933 invoke_retransmission(struct PStack *st, unsigned int nr)
935 struct Layer2 *l2 = &st->l2;
952 st->l1.bcs->tx_cnt += l2->windowar[p1]->len + l2headersize(l2, 0);
957 st->l2.l2l1(st, PH_PULL | REQUEST, NULL);
966 struct PStack *st = fi->userdata;
970 struct Layer2 *l2 = &st->l2;
977 if (IsRNR(skb->data, st)) {
982 if (IsREJ(skb->data, st))
996 st->ma.layer(st, MDL_ERROR | INDICATION, (void *) 'A');
998 enquiry_response(st);
1000 if (legalnr(st, nr)) {
1002 setva(st, nr);
1003 invoke_retransmission(st, nr);
1004 stop_t200(st, 10);
1005 if (FsmAddTimer(&st->l2.t203, st->l2.T203,
1007 l2m_debug(&st->l2.l2m, "Restart T203 ST7 REJ");
1009 setva(st, nr);
1010 stop_t200(st, 11);
1011 FsmRestartTimer(&st->l2.t203, st->l2.T203,
1014 setva(st, nr);
1015 if(typ != RR) FsmDelTimer(&st->l2.t203, 9);
1016 restart_t200(st, 12);
1018 if (!skb_queue_empty(&st->l2.i_queue) && (typ == RR))
1019 st->l2.l2l1(st, PH_PULL | REQUEST, NULL);
1027 struct PStack *st = fi->userdata;
1030 if (test_bit(FLG_LAPB, &st->l2.flag))
1031 st->l1.bcs->tx_cnt += skb->len + l2headersize(&st->l2, 0);
1032 if (!test_bit(FLG_L3_INIT, &st->l2.flag))
1033 skb_queue_tail(&st->l2.i_queue, skb);
1041 struct PStack *st = fi->userdata;
1044 if (test_bit(FLG_LAPB, &st->l2.flag))
1045 st->l1.bcs->tx_cnt += skb->len + l2headersize(&st->l2, 0);
1046 skb_queue_tail(&st->l2.i_queue, skb);
1047 st->l2.l2l1(st, PH_PULL | REQUEST, NULL);
1053 struct PStack *st = fi->userdata;
1056 if (test_bit(FLG_LAPB, &st->l2.flag))
1057 st->l1.bcs->tx_cnt += skb->len + l2headersize(&st->l2, 0);
1058 skb_queue_tail(&st->l2.i_queue, skb);
1064 struct PStack *st = fi->userdata;
1066 struct Layer2 *l2 = &(st->l2);
1082 if(PollFlag) enquiry_response(st);
1092 enquiry_response(st);
1096 st->l2.l2l3(st, DL_DATA | INDICATION, skb);
1102 enquiry_response(st);
1104 enquiry_cr(st, REJ, RSP, PollFlag);
1109 if (legalnr(st, nr)) {
1110 if (!test_bit(FLG_PEER_BUSY, &st->l2.flag) && (fi->state == ST_L2_7)) {
1111 if (nr == st->l2.vs) {
1112 stop_t200(st, 13);
1113 FsmRestartTimer(&st->l2.t203, st->l2.T203,
1115 } else if (nr != st->l2.va)
1116 restart_t200(st, 14);
1118 setva(st, nr);
1124 if (!skb_queue_empty(&st->l2.i_queue) && (fi->state == ST_L2_7))
1125 st->l2.l2l1(st, PH_PULL | REQUEST, NULL);
1126 if (test_and_clear_bit(FLG_ACK_PEND, &st->l2.flag))
1127 enquiry_cr(st, RR, RSP, 0);
1133 struct PStack *st = fi->userdata;
1135 st->l2.tei = (long) arg;
1139 test_and_set_bit(FLG_L3_INIT, &st->l2.flag);
1142 if (!skb_queue_empty(&st->l2.ui_queue))
1143 tx_ui(st);
1149 struct PStack *st = fi->userdata;
1151 if (test_bit(FLG_LAPD, &st->l2.flag) &&
1152 test_bit(FLG_DCHAN_BUSY, &st->l2.flag)) {
1153 FsmAddTimer(&st->l2.t200, st->l2.T200, EV_L2_T200, NULL, 9);
1154 } else if (st->l2.rc == st->l2.N200) {
1156 test_and_clear_bit(FLG_T200_RUN, &st->l2.flag);
1157 skb_queue_purge(&st->l2.i_queue);
1158 st->ma.layer(st, MDL_ERROR | INDICATION, (void *) 'G');
1159 if (test_bit(FLG_LAPB, &st->l2.flag))
1160 st->l2.l2l1(st, PH_DEACTIVATE | REQUEST, NULL);
1161 st5_dl_release_l2l3(st);
1163 st->l2.rc++;
1164 FsmAddTimer(&st->l2.t200, st->l2.T200, EV_L2_T200, NULL, 9);
1165 send_uframe(st, (test_bit(FLG_MOD128, &st->l2.flag) ? SABME : SABM)
1173 struct PStack *st = fi->userdata;
1175 if (test_bit(FLG_LAPD, &st->l2.flag) &&
1176 test_bit(FLG_DCHAN_BUSY, &st->l2.flag)) {
1177 FsmAddTimer(&st->l2.t200, st->l2.T200, EV_L2_T200, NULL, 9);
1178 } else if (st->l2.rc == st->l2.N200) {
1180 test_and_clear_bit(FLG_T200_RUN, &st->l2.flag);
1181 st->ma.layer(st, MDL_ERROR | INDICATION, (void *) 'H');
1182 lapb_dl_release_l2l3(st, CONFIRM);
1184 st->l2.rc++;
1185 FsmAddTimer(&st->l2.t200, st->l2.T200, EV_L2_T200,
1187 send_uframe(st, DISC | 0x10, CMD);
1194 struct PStack *st = fi->userdata;
1196 if (test_bit(FLG_LAPD, &st->l2.flag) &&
1197 test_bit(FLG_DCHAN_BUSY, &st->l2.flag)) {
1198 FsmAddTimer(&st->l2.t200, st->l2.T200, EV_L2_T200, NULL, 9);
1201 test_and_clear_bit(FLG_T200_RUN, &st->l2.flag);
1202 st->l2.rc = 0;
1205 transmit_enquiry(st);
1206 st->l2.rc++;
1212 struct PStack *st = fi->userdata;
1214 if (test_bit(FLG_LAPD, &st->l2.flag) &&
1215 test_bit(FLG_DCHAN_BUSY, &st->l2.flag)) {
1216 FsmAddTimer(&st->l2.t200, st->l2.T200, EV_L2_T200, NULL, 9);
1219 test_and_clear_bit(FLG_T200_RUN, &st->l2.flag);
1220 if (st->l2.rc == st->l2.N200) {
1221 st->ma.layer(st, MDL_ERROR | INDICATION, (void *) 'I');
1223 test_and_clear_bit(FLG_L3_INIT, &st->l2.flag);
1225 transmit_enquiry(st);
1226 st->l2.rc++;
1233 struct PStack *st = fi->userdata;
1235 if (test_bit(FLG_LAPD, &st->l2.flag) &&
1236 test_bit(FLG_DCHAN_BUSY, &st->l2.flag)) {
1237 FsmAddTimer(&st->l2.t203, st->l2.T203, EV_L2_T203, NULL, 9);
1241 transmit_enquiry(st);
1242 st->l2.rc = 0;
1248 struct PStack *st = fi->userdata;
1250 struct Layer2 *l2 = &st->l2;
1256 if (!cansend(st))
1276 i = sethdraddr(&st->l2, header, CMD);
1300 st->l2.l2l1(st, PH_PULL | INDICATION, skb);
1301 test_and_clear_bit(FLG_ACK_PEND, &st->l2.flag);
1302 if (!test_and_set_bit(FLG_T200_RUN, &st->l2.flag)) {
1303 FsmDelTimer(&st->l2.t203, 13);
1304 FsmAddTimer(&st->l2.t200, st->l2.T200, EV_L2_T200, NULL, 11);
1306 if (!skb_queue_empty(&l2->i_queue) && cansend(st))
1307 st->l2.l2l1(st, PH_PULL | REQUEST, NULL);
1313 struct PStack *st = fi->userdata;
1317 struct Layer2 *l2 = &st->l2;
1325 if (IsRNR(skb->data, st)) {
1341 if (legalnr(st, nr)) {
1343 restart_t200(st, 15);
1345 stop_t200(st, 16);
1348 setva(st, nr);
1350 invoke_retransmission(st, nr);
1352 if (!skb_queue_empty(&l2->i_queue) && cansend(st))
1353 st->l2.l2l1(st, PH_PULL | REQUEST, NULL);
1358 enquiry_response(st);
1359 if (legalnr(st, nr)) {
1360 setva(st, nr);
1369 struct PStack *st = fi->userdata;
1372 skb_pull(skb, l2addrsize(&st->l2) + 1);
1376 st->ma.layer(st, MDL_ERROR | INDICATION, (void *) 'K');
1378 test_and_clear_bit(FLG_L3_INIT, &st->l2.flag);
1386 struct PStack *st = fi->userdata;
1388 skb_queue_purge(&st->l2.ui_queue);
1389 st->l2.tei = -1;
1396 struct PStack *st = fi->userdata;
1398 skb_queue_purge(&st->l2.ui_queue);
1399 st->l2.tei = -1;
1400 st->l2.l2l3(st, DL_RELEASE | INDICATION, NULL);
1407 struct PStack *st = fi->userdata;
1409 skb_queue_purge(&st->l2.i_queue);
1410 skb_queue_purge(&st->l2.ui_queue);
1411 freewin(st);
1412 st->l2.tei = -1;
1413 stop_t200(st, 17);
1414 st5_dl_release_l2l3(st);
1421 struct PStack *st = fi->userdata;
1423 skb_queue_purge(&st->l2.ui_queue);
1424 st->l2.tei = -1;
1425 stop_t200(st, 18);
1426 st->l2.l2l3(st, DL_RELEASE | CONFIRM, NULL);
1433 struct PStack *st = fi->userdata;
1435 skb_queue_purge(&st->l2.i_queue);
1436 skb_queue_purge(&st->l2.ui_queue);
1437 freewin(st);
1438 st->l2.tei = -1;
1439 stop_t200(st, 17);
1440 FsmDelTimer(&st->l2.t203, 19);
1441 st->l2.l2l3(st, DL_RELEASE | INDICATION, NULL);
1448 struct PStack *st = fi->userdata;
1450 skb_queue_purge(&st->l2.i_queue);
1451 skb_queue_purge(&st->l2.ui_queue);
1452 if (test_and_clear_bit(FLG_ESTAB_PEND, &st->l2.flag))
1453 st->l2.l2l3(st, DL_RELEASE | INDICATION, NULL);
1459 struct PStack *st = fi->userdata;
1461 skb_queue_purge(&st->l2.i_queue);
1462 skb_queue_purge(&st->l2.ui_queue);
1463 freewin(st);
1464 stop_t200(st, 19);
1465 st5_dl_release_l2l3(st);
1472 struct PStack *st = fi->userdata;
1474 skb_queue_purge(&st->l2.ui_queue);
1475 stop_t200(st, 20);
1476 st->l2.l2l3(st, DL_RELEASE | CONFIRM, NULL);
1483 struct PStack *st = fi->userdata;
1485 skb_queue_purge(&st->l2.i_queue);
1486 skb_queue_purge(&st->l2.ui_queue);
1487 freewin(st);
1488 stop_t200(st, 19);
1489 FsmDelTimer(&st->l2.t203, 19);
1490 st->l2.l2l3(st, DL_RELEASE | INDICATION, NULL);
1497 struct PStack *st = fi->userdata;
1499 if(!test_and_set_bit(FLG_OWN_BUSY, &st->l2.flag)) {
1500 enquiry_cr(st, RNR, RSP, 0);
1501 test_and_clear_bit(FLG_ACK_PEND, &st->l2.flag);
1508 struct PStack *st = fi->userdata;
1510 if(!test_and_clear_bit(FLG_OWN_BUSY, &st->l2.flag)) {
1511 enquiry_cr(st, RR, RSP, 0);
1512 test_and_clear_bit(FLG_ACK_PEND, &st->l2.flag);
1519 struct PStack *st = fi->userdata;
1521 st->ma.layer(st, MDL_ERROR | INDICATION, arg);
1527 struct PStack *st = fi->userdata;
1529 st->ma.layer(st, MDL_ERROR | INDICATION, arg);
1531 test_and_clear_bit(FLG_L3_INIT, &st->l2.flag);
1629 isdnl2_l1l2(struct PStack *st, int pr, void *arg)
1639 len = l2addrsize(&st->l2);
1643 FsmEvent(&st->l2.l2m, EV_L2_FRAME_ERROR, (void *) 'N');
1648 if(!(c = iframe_error(st, skb)))
1649 ret = FsmEvent(&st->l2.l2m, EV_L2_I, skb);
1650 } else if (IsSFrame(datap, st)) { /* S-Frame */
1651 if(!(c = super_error(st, skb)))
1652 ret = FsmEvent(&st->l2.l2m, EV_L2_SUPER, skb);
1654 if(!(c = UI_error(st, skb)))
1655 ret = FsmEvent(&st->l2.l2m, EV_L2_UI, skb);
1656 } else if (IsSABME(datap, st)) {
1657 if(!(c = unnum_error(st, skb, CMD)))
1658 ret = FsmEvent(&st->l2.l2m, EV_L2_SABME, skb);
1660 if(!(c = unnum_error(st, skb, RSP)))
1661 ret = FsmEvent(&st->l2.l2m, EV_L2_UA, skb);
1663 if(!(c = unnum_error(st, skb, CMD)))
1664 ret = FsmEvent(&st->l2.l2m, EV_L2_DISC, skb);
1666 if(!(c = unnum_error(st, skb, RSP)))
1667 ret = FsmEvent(&st->l2.l2m, EV_L2_DM, skb);
1669 if(!(c = FRMR_error(st,skb)))
1670 ret = FsmEvent(&st->l2.l2m, EV_L2_FRMR, skb);
1672 FsmEvent(&st->l2.l2m, EV_L2_FRAME_ERROR, (void *) 'L');
1678 FsmEvent(&st->l2.l2m, EV_L2_FRAME_ERROR, (void *)(long)c);
1685 FsmEvent(&st->l2.l2m, EV_L2_ACK_PULL, arg);
1688 test_and_set_bit(FLG_DCHAN_BUSY, &st->l2.flag);
1691 test_and_clear_bit(FLG_DCHAN_BUSY, &st->l2.flag);
1695 test_and_set_bit(FLG_L1_ACTIV, &st->l2.flag);
1696 if (test_and_clear_bit(FLG_ESTAB_PEND, &st->l2.flag))
1697 FsmEvent(&st->l2.l2m, EV_L2_DL_ESTABLISH_REQ, arg);
1701 test_and_clear_bit(FLG_L1_ACTIV, &st->l2.flag);
1702 FsmEvent(&st->l2.l2m, EV_L1_DEACTIVATE, arg);
1705 l2m_debug(&st->l2.l2m, "l2 unknown pr %04x", pr);
1711 isdnl2_l3l2(struct PStack *st, int pr, void *arg)
1715 if (FsmEvent(&st->l2.l2m, EV_L2_DL_DATA, arg)) {
1720 if (FsmEvent(&st->l2.l2m, EV_L2_DL_UNIT_DATA, arg)) {
1725 if (test_bit(FLG_L1_ACTIV, &st->l2.flag)) {
1726 if (test_bit(FLG_LAPD, &st->l2.flag) ||
1727 test_bit(FLG_ORIG, &st->l2.flag)) {
1728 FsmEvent(&st->l2.l2m, EV_L2_DL_ESTABLISH_REQ, arg);
1731 if (test_bit(FLG_LAPD, &st->l2.flag) ||
1732 test_bit(FLG_ORIG, &st->l2.flag)) {
1733 test_and_set_bit(FLG_ESTAB_PEND, &st->l2.flag);
1735 st->l2.l2l1(st, PH_ACTIVATE, NULL);
1739 if (test_bit(FLG_LAPB, &st->l2.flag)) {
1740 st->l2.l2l1(st, PH_DEACTIVATE, NULL);
1742 FsmEvent(&st->l2.l2m, EV_L2_DL_RELEASE_REQ, arg);
1745 FsmEvent(&st->l2.l2m, EV_L2_MDL_ASSIGN, arg);
1748 FsmEvent(&st->l2.l2m, EV_L2_MDL_REMOVE, arg);
1751 FsmEvent(&st->l2.l2m, EV_L2_MDL_ERROR, arg);
1757 releasestack_isdnl2(struct PStack *st)
1759 FsmDelTimer(&st->l2.t200, 21);
1760 FsmDelTimer(&st->l2.t203, 16);
1761 skb_queue_purge(&st->l2.i_queue);
1762 skb_queue_purge(&st->l2.ui_queue);
1763 ReleaseWin(&st->l2);
1770 struct PStack *st = fi->userdata;
1773 VHiSax_putstatus(st->l1.hardware, st->l2.debug_id, fmt, args);
1778 setstack_isdnl2(struct PStack *st, char *debug_id)
1780 spin_lock_init(&st->l2.lock);
1781 st->l1.l1l2 = isdnl2_l1l2;
1782 st->l3.l3l2 = isdnl2_l3l2;
1784 skb_queue_head_init(&st->l2.i_queue);
1785 skb_queue_head_init(&st->l2.ui_queue);
1786 InitWin(&st->l2);
1787 st->l2.debug = 0;
1789 st->l2.l2m.fsm = &l2fsm;
1790 if (test_bit(FLG_LAPB, &st->l2.flag))
1791 st->l2.l2m.state = ST_L2_4;
1793 st->l2.l2m.state = ST_L2_1;
1794 st->l2.l2m.debug = 0;
1795 st->l2.l2m.userdata = st;
1796 st->l2.l2m.userint = 0;
1797 st->l2.l2m.printdebug = l2m_debug;
1798 strcpy(st->l2.debug_id, debug_id);
1800 FsmInitTimer(&st->l2.l2m, &st->l2.t200);
1801 FsmInitTimer(&st->l2.l2m, &st->l2.t203);
1805 transl2_l3l2(struct PStack *st, int pr, void *arg)
1810 st->l2.l2l1(st, PH_DATA | REQUEST, arg);
1813 st->l2.l2l1(st, PH_ACTIVATE | REQUEST, NULL);
1816 st->l2.l2l1(st, PH_DEACTIVATE | REQUEST, NULL);
1822 setstack_transl2(struct PStack *st)
1824 st->l3.l3l2 = transl2_l3l2;
1828 releasestack_transl2(struct PStack *st)