• Home
  • Raw
  • Download

Lines Matching refs:l2

107 static int l2addrsize(struct Layer2 *l2);
110 set_peer_busy(struct Layer2 *l2) { in set_peer_busy() argument
111 test_and_set_bit(FLG_PEER_BUSY, &l2->flag); in set_peer_busy()
112 if (!skb_queue_empty(&l2->i_queue) || in set_peer_busy()
113 !skb_queue_empty(&l2->ui_queue)) in set_peer_busy()
114 test_and_set_bit(FLG_L2BLOCK, &l2->flag); in set_peer_busy()
118 clear_peer_busy(struct Layer2 *l2) { in clear_peer_busy() argument
119 if (test_and_clear_bit(FLG_PEER_BUSY, &l2->flag)) in clear_peer_busy()
120 test_and_clear_bit(FLG_L2BLOCK, &l2->flag); in clear_peer_busy()
124 InitWin(struct Layer2 *l2) in InitWin() argument
129 l2->windowar[i] = NULL; in InitWin()
133 freewin1(struct Layer2 *l2) in freewin1() argument
138 if (l2->windowar[i]) { in freewin1()
140 dev_kfree_skb(l2->windowar[i]); in freewin1()
141 l2->windowar[i] = NULL; in freewin1()
150 freewin1(&st->l2); in freewin()
154 ReleaseWin(struct Layer2 *l2) in ReleaseWin() argument
158 if ((cnt = freewin1(l2))) in ReleaseWin()
167 if (test_bit(FLG_MOD128, &st->l2.flag)) in cansend()
168 p1 = (st->l2.vs - st->l2.va) % 128; in cansend()
170 p1 = (st->l2.vs - st->l2.va) % 8; in cansend()
171 return ((p1 < st->l2.window) && !test_bit(FLG_PEER_BUSY, &st->l2.flag)); in cansend()
175 clear_exception(struct Layer2 *l2) in clear_exception() argument
177 test_and_clear_bit(FLG_ACK_PEND, &l2->flag); in clear_exception()
178 test_and_clear_bit(FLG_REJEXC, &l2->flag); in clear_exception()
179 test_and_clear_bit(FLG_OWN_BUSY, &l2->flag); in clear_exception()
180 clear_peer_busy(l2); in clear_exception()
184 l2headersize(struct Layer2 *l2, int ui) in l2headersize() argument
186 return (((test_bit(FLG_MOD128, &l2->flag) && (!ui)) ? 2 : 1) + in l2headersize()
187 (test_bit(FLG_LAPD, &l2->flag) ? 2 : 1)); in l2headersize()
191 l2addrsize(struct Layer2 *l2) in l2addrsize() argument
193 return (test_bit(FLG_LAPD, &l2->flag) ? 2 : 1); in l2addrsize()
197 sethdraddr(struct Layer2 *l2, u_char *header, int rsp) in sethdraddr() argument
202 if (test_bit(FLG_LAPD, &l2->flag)) { in sethdraddr()
203 *ptr++ = (l2->sap << 2) | (rsp ? 2 : 0); in sethdraddr()
204 *ptr++ = (l2->tei << 1) | 1; in sethdraddr()
207 if (test_bit(FLG_ORIG, &l2->flag)) in sethdraddr()
221 if (test_bit(FLG_LAPB, &st->l2.flag)) in enqueue_super()
223 st->l2.l2l1(st, PH_DATA | REQUEST, skb); in enqueue_super()
257 if (!test_bit(FLG_MOD128, &st->l2.flag)) in IsSFrame()
267 return (test_bit(FLG_MOD128, &st->l2.flag) ? d == SABME : d == SABM); in IsSABME()
273 return (test_bit(FLG_MOD128, &st->l2.flag) ? data[0] == REJ : (data[0] & 0xf) == REJ); in IsREJ()
285 return (test_bit(FLG_MOD128, &st->l2.flag) ? data[0] == RNR : (data[0] & 0xf) == RNR); in IsRNR()
291 int i = l2addrsize(&st->l2) + (test_bit(FLG_MOD128, &st->l2.flag) ? 2 : 1); in iframe_error()
294 if (test_bit(FLG_ORIG, &st->l2.flag)) in iframe_error()
304 if ((skb->len - i) > st->l2.maxlen) in iframe_error()
314 if (skb->len != l2addrsize(&st->l2) + in super_error()
315 (test_bit(FLG_MOD128, &st->l2.flag) ? 2 : 1)) in super_error()
325 if (test_bit(FLG_ORIG, &st->l2.flag)) in unnum_error()
331 if (skb->len != l2addrsize(&st->l2) + 1) in unnum_error()
341 if (test_bit(FLG_ORIG, &st->l2.flag)) in UI_error()
347 if (skb->len > st->l2.maxlen + l2addrsize(&st->l2) + 1) in UI_error()
356 int headers = l2addrsize(&st->l2) + 1; in FRMR_error()
360 if (test_bit(FLG_ORIG, &st->l2.flag)) in FRMR_error()
366 if (test_bit(FLG_MOD128, &st->l2.flag)) { in FRMR_error()
370 l2m_debug(&st->l2.l2m, "FRMR information %2x %2x %2x %2x %2x", in FRMR_error()
377 l2m_debug(&st->l2.l2m, "FRMR information %2x %2x %2x", in FRMR_error()
387 struct Layer2 *l2 = &st->l2; in legalnr() local
389 if (test_bit(FLG_MOD128, &l2->flag)) in legalnr()
390 return ((nr - l2->va) % 128) <= ((l2->vs - l2->va) % 128); in legalnr()
392 return ((nr - l2->va) % 8) <= ((l2->vs - l2->va) % 8); in legalnr()
398 struct Layer2 *l2 = &st->l2; in setva() local
402 spin_lock_irqsave(&l2->lock, flags); in setva()
403 while (l2->va != nr) { in setva()
404 (l2->va)++; in setva()
405 if (test_bit(FLG_MOD128, &l2->flag)) in setva()
406 l2->va %= 128; in setva()
408 l2->va %= 8; in setva()
409 len = l2->windowar[l2->sow]->len; in setva()
410 if (PACKET_NOACK == l2->windowar[l2->sow]->pkt_type) in setva()
412 dev_kfree_skb(l2->windowar[l2->sow]); in setva()
413 l2->windowar[l2->sow] = NULL; in setva()
414 l2->sow = (l2->sow + 1) % l2->window; in setva()
415 spin_unlock_irqrestore(&l2->lock, flags); in setva()
418 spin_lock_irqsave(&l2->lock, flags); in setva()
420 spin_unlock_irqrestore(&l2->lock, flags); in setva()
430 i = sethdraddr(&st->l2, tmp, cr); in send_uframe()
443 return (skb->data[l2addrsize(&(st->l2))] & 0x10); in get_PollFlag()
459 FsmAddTimer(&st->l2.t200, st->l2.T200, EV_L2_T200, NULL, i); in start_t200()
460 test_and_set_bit(FLG_T200_RUN, &st->l2.flag); in start_t200()
466 FsmRestartTimer(&st->l2.t200, st->l2.T200, EV_L2_T200, NULL, i); in restart_t200()
467 test_and_set_bit(FLG_T200_RUN, &st->l2.flag); in restart_t200()
473 if (test_and_clear_bit(FLG_T200_RUN, &st->l2.flag)) in stop_t200()
474 FsmDelTimer(&st->l2.t200, i); in stop_t200()
482 if (test_and_clear_bit(FLG_PEND_REL, &st->l2.flag)) in st5_dl_release_l2l3()
487 st->l2.l2l3(st, pr, NULL); in st5_dl_release_l2l3()
493 if (test_bit(FLG_LAPB, &st->l2.flag)) in lapb_dl_release_l2l3()
494 st->l2.l2l1(st, PH_DEACTIVATE | REQUEST, NULL); in lapb_dl_release_l2l3()
495 st->l2.l2l3(st, DL_RELEASE | f, NULL); in lapb_dl_release_l2l3()
504 clear_exception(&st->l2); in establishlink()
505 st->l2.rc = 0; in establishlink()
506 cmd = (test_bit(FLG_MOD128, &st->l2.flag) ? SABME : SABM) | 0x10; in establishlink()
508 FsmDelTimer(&st->l2.t203, 1); in establishlink()
510 test_and_clear_bit(FLG_PEND_REL, &st->l2.flag); in establishlink()
538 test_and_clear_bit(FLG_L3_INIT, &st->l2.flag); in l2_mdl_error_dm()
554 test_and_clear_bit(FLG_L3_INIT, &st->l2.flag); in l2_st8_mdl_error_dm()
569 st->l2.l2tei(st, MDL_ASSIGN | INDICATION, NULL); in l2_mdl_assign()
578 skb_queue_tail(&st->l2.ui_queue, skb); in l2_queue_ui_assign()
580 st->l2.l2tei(st, MDL_ASSIGN | INDICATION, NULL); in l2_queue_ui_assign()
589 skb_queue_tail(&st->l2.ui_queue, skb); in l2_queue_ui()
599 i = sethdraddr(&(st->l2), header, CMD); in tx_ui()
601 while ((skb = skb_dequeue(&st->l2.ui_queue))) { in tx_ui()
613 skb_queue_tail(&st->l2.ui_queue, skb); in l2_send_ui()
623 skb_pull(skb, l2headersize(&st->l2, 1)); in l2_got_ui()
624 st->l2.l2l3(st, DL_UNIT_DATA | INDICATION, skb); in l2_got_ui()
638 test_and_set_bit(FLG_L3_INIT, &st->l2.flag); in l2_establish()
646 skb_queue_purge(&st->l2.i_queue); in l2_discard_i_setl3()
647 test_and_set_bit(FLG_L3_INIT, &st->l2.flag); in l2_discard_i_setl3()
648 test_and_clear_bit(FLG_PEND_REL, &st->l2.flag); in l2_discard_i_setl3()
656 skb_queue_purge(&st->l2.i_queue); in l2_l3_reestablish()
658 test_and_set_bit(FLG_L3_INIT, &st->l2.flag); in l2_l3_reestablish()
666 st->l2.l2l3(st, DL_RELEASE | CONFIRM, NULL); in l2_release()
674 test_and_set_bit(FLG_PEND_REL, &st->l2.flag); in l2_pend_rel()
682 skb_queue_purge(&st->l2.i_queue); in l2_disconnect()
685 st->l2.rc = 0; in l2_disconnect()
687 FsmDelTimer(&st->l2.t203, 1); in l2_disconnect()
699 clear_exception(&st->l2); in l2_start_multi()
700 st->l2.vs = 0; in l2_start_multi()
701 st->l2.va = 0; in l2_start_multi()
702 st->l2.vr = 0; in l2_start_multi()
703 st->l2.sow = 0; in l2_start_multi()
705 FsmAddTimer(&st->l2.t203, st->l2.T203, EV_L2_T203, NULL, 3); in l2_start_multi()
707 st->l2.l2l3(st, DL_ESTABLISH | INDICATION, NULL); in l2_start_multi()
741 if (st->l2.vs != st->l2.va) { in l2_restart_multi()
742 skb_queue_purge(&st->l2.i_queue); in l2_restart_multi()
746 clear_exception(&st->l2); in l2_restart_multi()
747 st->l2.vs = 0; in l2_restart_multi()
748 st->l2.va = 0; in l2_restart_multi()
749 st->l2.vr = 0; in l2_restart_multi()
750 st->l2.sow = 0; in l2_restart_multi()
753 FsmRestartTimer(&st->l2.t203, st->l2.T203, EV_L2_T203, NULL, 3); in l2_restart_multi()
756 st->l2.l2l3(st, DL_ESTABLISH | INDICATION, NULL); in l2_restart_multi()
759 if (!skb_queue_empty(&st->l2.i_queue) && cansend(st)) in l2_restart_multi()
760 st->l2.l2l1(st, PH_PULL | REQUEST, NULL); in l2_restart_multi()
770 FsmDelTimer(&st->l2.t203, 3); in l2_stop_multi()
775 skb_queue_purge(&st->l2.i_queue); in l2_stop_multi()
793 if (test_and_clear_bit(FLG_PEND_REL, &st->l2.flag)) in l2_connected()
796 if (test_and_clear_bit(FLG_L3_INIT, &st->l2.flag)) { in l2_connected()
798 } else if (st->l2.vs != st->l2.va) { in l2_connected()
799 skb_queue_purge(&st->l2.i_queue); in l2_connected()
805 st->l2.vr = 0; in l2_connected()
806 st->l2.vs = 0; in l2_connected()
807 st->l2.va = 0; in l2_connected()
808 st->l2.sow = 0; in l2_connected()
810 FsmAddTimer(&st->l2.t203, st->l2.T203, EV_L2_T203, NULL, 4); in l2_connected()
813 st->l2.l2l3(st, pr, NULL); in l2_connected()
815 if (!skb_queue_empty(&st->l2.i_queue) && cansend(st)) in l2_connected()
816 st->l2.l2l1(st, PH_PULL | REQUEST, NULL); in l2_connected()
844 test_and_set_bit(FLG_L3_INIT, &st->l2.flag); in l2_reestablish()
856 if (!test_bit(FLG_L3_INIT, &st->l2.flag)) in l2_st5_dm_release()
857 skb_queue_purge(&st->l2.i_queue); in l2_st5_dm_release()
858 if (test_bit(FLG_LAPB, &st->l2.flag)) in l2_st5_dm_release()
859 st->l2.l2l1(st, PH_DEACTIVATE | REQUEST, NULL); in l2_st5_dm_release()
882 struct Layer2 *l2; in enquiry_cr() local
886 l2 = &st->l2; in enquiry_cr()
887 i = sethdraddr(l2, tmp, cr); in enquiry_cr()
888 if (test_bit(FLG_MOD128, &l2->flag)) { in enquiry_cr()
890 tmp[i++] = (l2->vr << 1) | (pf ? 1 : 0); in enquiry_cr()
892 tmp[i++] = (l2->vr << 5) | typ | (pf ? 0x10 : 0); in enquiry_cr()
904 if (test_bit(FLG_OWN_BUSY, &st->l2.flag)) in enquiry_response()
908 test_and_clear_bit(FLG_ACK_PEND, &st->l2.flag); in enquiry_response()
914 if (test_bit(FLG_OWN_BUSY, &st->l2.flag)) in transmit_enquiry()
918 test_and_clear_bit(FLG_ACK_PEND, &st->l2.flag); in transmit_enquiry()
930 test_and_clear_bit(FLG_L3_INIT, &st->l2.flag); in nrerrorrecovery()
936 struct Layer2 *l2 = &st->l2; in invoke_retransmission() local
940 spin_lock_irqsave(&l2->lock, flags); in invoke_retransmission()
941 if (l2->vs != nr) { in invoke_retransmission()
942 while (l2->vs != nr) { in invoke_retransmission()
943 (l2->vs)--; in invoke_retransmission()
944 if (test_bit(FLG_MOD128, &l2->flag)) { in invoke_retransmission()
945 l2->vs %= 128; in invoke_retransmission()
946 p1 = (l2->vs - l2->va) % 128; in invoke_retransmission()
948 l2->vs %= 8; in invoke_retransmission()
949 p1 = (l2->vs - l2->va) % 8; in invoke_retransmission()
951 p1 = (p1 + l2->sow) % l2->window; in invoke_retransmission()
952 if (test_bit(FLG_LAPB, &l2->flag)) in invoke_retransmission()
953 st->l1.bcs->tx_cnt += l2->windowar[p1]->len + l2headersize(l2, 0); in invoke_retransmission()
954 skb_queue_head(&l2->i_queue, l2->windowar[p1]); in invoke_retransmission()
955 l2->windowar[p1] = NULL; in invoke_retransmission()
957 spin_unlock_irqrestore(&l2->lock, flags); in invoke_retransmission()
958 st->l2.l2l1(st, PH_PULL | REQUEST, NULL); in invoke_retransmission()
961 spin_unlock_irqrestore(&l2->lock, flags); in invoke_retransmission()
971 struct Layer2 *l2 = &st->l2; in l2_st7_got_super() local
974 if (test_bit(FLG_ORIG, &l2->flag)) in l2_st7_got_super()
977 skb_pull(skb, l2addrsize(l2)); in l2_st7_got_super()
979 set_peer_busy(l2); in l2_st7_got_super()
982 clear_peer_busy(l2); in l2_st7_got_super()
986 if (test_bit(FLG_MOD128, &l2->flag)) { in l2_st7_got_super()
1006 if (FsmAddTimer(&st->l2.t203, st->l2.T203, in l2_st7_got_super()
1008 l2m_debug(&st->l2.l2m, "Restart T203 ST7 REJ"); in l2_st7_got_super()
1009 } else if ((nr == l2->vs) && (typ == RR)) { in l2_st7_got_super()
1012 FsmRestartTimer(&st->l2.t203, st->l2.T203, in l2_st7_got_super()
1014 } else if ((l2->va != nr) || (typ == RNR)) { in l2_st7_got_super()
1016 if (typ != RR) FsmDelTimer(&st->l2.t203, 9); in l2_st7_got_super()
1019 if (!skb_queue_empty(&st->l2.i_queue) && (typ == RR)) in l2_st7_got_super()
1020 st->l2.l2l1(st, PH_PULL | REQUEST, NULL); in l2_st7_got_super()
1031 if (test_bit(FLG_LAPB, &st->l2.flag)) in l2_feed_i_if_reest()
1032 st->l1.bcs->tx_cnt += skb->len + l2headersize(&st->l2, 0); in l2_feed_i_if_reest()
1033 if (!test_bit(FLG_L3_INIT, &st->l2.flag)) in l2_feed_i_if_reest()
1034 skb_queue_tail(&st->l2.i_queue, skb); in l2_feed_i_if_reest()
1045 if (test_bit(FLG_LAPB, &st->l2.flag)) in l2_feed_i_pull()
1046 st->l1.bcs->tx_cnt += skb->len + l2headersize(&st->l2, 0); in l2_feed_i_pull()
1047 skb_queue_tail(&st->l2.i_queue, skb); in l2_feed_i_pull()
1048 st->l2.l2l1(st, PH_PULL | REQUEST, NULL); in l2_feed_i_pull()
1057 if (test_bit(FLG_LAPB, &st->l2.flag)) in l2_feed_iqueue()
1058 st->l1.bcs->tx_cnt += skb->len + l2headersize(&st->l2, 0); in l2_feed_iqueue()
1059 skb_queue_tail(&st->l2.i_queue, skb); in l2_feed_iqueue()
1067 struct Layer2 *l2 = &(st->l2); in l2_got_iframe() local
1071 i = l2addrsize(l2); in l2_got_iframe()
1072 if (test_bit(FLG_MOD128, &l2->flag)) { in l2_got_iframe()
1081 if (test_bit(FLG_OWN_BUSY, &l2->flag)) { in l2_got_iframe()
1084 } else if (l2->vr == ns) { in l2_got_iframe()
1085 (l2->vr)++; in l2_got_iframe()
1086 if (test_bit(FLG_MOD128, &l2->flag)) in l2_got_iframe()
1087 l2->vr %= 128; in l2_got_iframe()
1089 l2->vr %= 8; in l2_got_iframe()
1090 test_and_clear_bit(FLG_REJEXC, &l2->flag); in l2_got_iframe()
1095 test_and_set_bit(FLG_ACK_PEND, &l2->flag); in l2_got_iframe()
1096 skb_pull(skb, l2headersize(l2, 0)); in l2_got_iframe()
1097 st->l2.l2l3(st, DL_DATA | INDICATION, skb); in l2_got_iframe()
1101 if (test_and_set_bit(FLG_REJEXC, &l2->flag)) { in l2_got_iframe()
1106 test_and_clear_bit(FLG_ACK_PEND, &l2->flag); in l2_got_iframe()
1111 if (!test_bit(FLG_PEER_BUSY, &st->l2.flag) && (fi->state == ST_L2_7)) { in l2_got_iframe()
1112 if (nr == st->l2.vs) { in l2_got_iframe()
1114 FsmRestartTimer(&st->l2.t203, st->l2.T203, in l2_got_iframe()
1116 } else if (nr != st->l2.va) in l2_got_iframe()
1125 if (!skb_queue_empty(&st->l2.i_queue) && (fi->state == ST_L2_7)) in l2_got_iframe()
1126 st->l2.l2l1(st, PH_PULL | REQUEST, NULL); in l2_got_iframe()
1127 if (test_and_clear_bit(FLG_ACK_PEND, &st->l2.flag)) in l2_got_iframe()
1136 st->l2.tei = (long) arg; in l2_got_tei()
1140 test_and_set_bit(FLG_L3_INIT, &st->l2.flag); in l2_got_tei()
1143 if (!skb_queue_empty(&st->l2.ui_queue)) in l2_got_tei()
1152 if (test_bit(FLG_LAPD, &st->l2.flag) && in l2_st5_tout_200()
1153 test_bit(FLG_DCHAN_BUSY, &st->l2.flag)) { in l2_st5_tout_200()
1154 FsmAddTimer(&st->l2.t200, st->l2.T200, EV_L2_T200, NULL, 9); in l2_st5_tout_200()
1155 } else if (st->l2.rc == st->l2.N200) { in l2_st5_tout_200()
1157 test_and_clear_bit(FLG_T200_RUN, &st->l2.flag); in l2_st5_tout_200()
1158 skb_queue_purge(&st->l2.i_queue); in l2_st5_tout_200()
1160 if (test_bit(FLG_LAPB, &st->l2.flag)) in l2_st5_tout_200()
1161 st->l2.l2l1(st, PH_DEACTIVATE | REQUEST, NULL); in l2_st5_tout_200()
1164 st->l2.rc++; in l2_st5_tout_200()
1165 FsmAddTimer(&st->l2.t200, st->l2.T200, EV_L2_T200, NULL, 9); in l2_st5_tout_200()
1166 send_uframe(st, (test_bit(FLG_MOD128, &st->l2.flag) ? SABME : SABM) in l2_st5_tout_200()
1176 if (test_bit(FLG_LAPD, &st->l2.flag) && in l2_st6_tout_200()
1177 test_bit(FLG_DCHAN_BUSY, &st->l2.flag)) { in l2_st6_tout_200()
1178 FsmAddTimer(&st->l2.t200, st->l2.T200, EV_L2_T200, NULL, 9); in l2_st6_tout_200()
1179 } else if (st->l2.rc == st->l2.N200) { in l2_st6_tout_200()
1181 test_and_clear_bit(FLG_T200_RUN, &st->l2.flag); in l2_st6_tout_200()
1185 st->l2.rc++; in l2_st6_tout_200()
1186 FsmAddTimer(&st->l2.t200, st->l2.T200, EV_L2_T200, in l2_st6_tout_200()
1197 if (test_bit(FLG_LAPD, &st->l2.flag) && in l2_st7_tout_200()
1198 test_bit(FLG_DCHAN_BUSY, &st->l2.flag)) { in l2_st7_tout_200()
1199 FsmAddTimer(&st->l2.t200, st->l2.T200, EV_L2_T200, NULL, 9); in l2_st7_tout_200()
1202 test_and_clear_bit(FLG_T200_RUN, &st->l2.flag); in l2_st7_tout_200()
1203 st->l2.rc = 0; in l2_st7_tout_200()
1207 st->l2.rc++; in l2_st7_tout_200()
1215 if (test_bit(FLG_LAPD, &st->l2.flag) && in l2_st8_tout_200()
1216 test_bit(FLG_DCHAN_BUSY, &st->l2.flag)) { in l2_st8_tout_200()
1217 FsmAddTimer(&st->l2.t200, st->l2.T200, EV_L2_T200, NULL, 9); in l2_st8_tout_200()
1220 test_and_clear_bit(FLG_T200_RUN, &st->l2.flag); in l2_st8_tout_200()
1221 if (st->l2.rc == st->l2.N200) { in l2_st8_tout_200()
1224 test_and_clear_bit(FLG_L3_INIT, &st->l2.flag); in l2_st8_tout_200()
1227 st->l2.rc++; in l2_st8_tout_200()
1236 if (test_bit(FLG_LAPD, &st->l2.flag) && in l2_st7_tout_203()
1237 test_bit(FLG_DCHAN_BUSY, &st->l2.flag)) { in l2_st7_tout_203()
1238 FsmAddTimer(&st->l2.t203, st->l2.T203, EV_L2_T203, NULL, 9); in l2_st7_tout_203()
1243 st->l2.rc = 0; in l2_st7_tout_203()
1251 struct Layer2 *l2 = &st->l2; in l2_pull_iqueue() local
1260 skb = skb_dequeue(&l2->i_queue); in l2_pull_iqueue()
1264 hdr_space_needed = l2headersize(l2, 0); in l2_pull_iqueue()
1267 skb_queue_head(&l2->i_queue, skb); in l2_pull_iqueue()
1270 spin_lock_irqsave(&l2->lock, flags); in l2_pull_iqueue()
1271 if (test_bit(FLG_MOD128, &l2->flag)) in l2_pull_iqueue()
1272 p1 = (l2->vs - l2->va) % 128; in l2_pull_iqueue()
1274 p1 = (l2->vs - l2->va) % 8; in l2_pull_iqueue()
1275 p1 = (p1 + l2->sow) % l2->window; in l2_pull_iqueue()
1276 if (l2->windowar[p1]) { in l2_pull_iqueue()
1279 dev_kfree_skb(l2->windowar[p1]); in l2_pull_iqueue()
1281 l2->windowar[p1] = skb; in l2_pull_iqueue()
1283 i = sethdraddr(&st->l2, header, CMD); in l2_pull_iqueue()
1285 if (test_bit(FLG_MOD128, &l2->flag)) { in l2_pull_iqueue()
1286 header[i++] = l2->vs << 1; in l2_pull_iqueue()
1287 header[i++] = l2->vr << 1; in l2_pull_iqueue()
1288 l2->vs = (l2->vs + 1) % 128; in l2_pull_iqueue()
1290 header[i++] = (l2->vr << 5) | (l2->vs << 1); in l2_pull_iqueue()
1291 l2->vs = (l2->vs + 1) % 8; in l2_pull_iqueue()
1293 spin_unlock_irqrestore(&l2->lock, flags); in l2_pull_iqueue()
1295 st->l2.l2l1(st, PH_PULL | INDICATION, nskb); in l2_pull_iqueue()
1296 test_and_clear_bit(FLG_ACK_PEND, &st->l2.flag); in l2_pull_iqueue()
1297 if (!test_and_set_bit(FLG_T200_RUN, &st->l2.flag)) { in l2_pull_iqueue()
1298 FsmDelTimer(&st->l2.t203, 13); in l2_pull_iqueue()
1299 FsmAddTimer(&st->l2.t200, st->l2.T200, EV_L2_T200, NULL, 11); in l2_pull_iqueue()
1301 if (!skb_queue_empty(&l2->i_queue) && cansend(st)) in l2_pull_iqueue()
1302 st->l2.l2l1(st, PH_PULL | REQUEST, NULL); in l2_pull_iqueue()
1312 struct Layer2 *l2 = &st->l2; in l2_st8_got_super() local
1315 if (test_bit(FLG_ORIG, &l2->flag)) in l2_st8_got_super()
1318 skb_pull(skb, l2addrsize(l2)); in l2_st8_got_super()
1321 set_peer_busy(l2); in l2_st8_got_super()
1324 clear_peer_busy(l2); in l2_st8_got_super()
1326 if (test_bit(FLG_MOD128, &l2->flag)) { in l2_st8_got_super()
1341 FsmAddTimer(&l2->t203, l2->T203, in l2_st8_got_super()
1347 if (!skb_queue_empty(&l2->i_queue) && cansend(st)) in l2_st8_got_super()
1348 st->l2.l2l1(st, PH_PULL | REQUEST, NULL); in l2_st8_got_super()
1367 skb_pull(skb, l2addrsize(&st->l2) + 1); in l2_got_FRMR()
1373 test_and_clear_bit(FLG_L3_INIT, &st->l2.flag); in l2_got_FRMR()
1383 skb_queue_purge(&st->l2.ui_queue); in l2_st24_tei_remove()
1384 st->l2.tei = -1; in l2_st24_tei_remove()
1393 skb_queue_purge(&st->l2.ui_queue); in l2_st3_tei_remove()
1394 st->l2.tei = -1; in l2_st3_tei_remove()
1395 st->l2.l2l3(st, DL_RELEASE | INDICATION, NULL); in l2_st3_tei_remove()
1404 skb_queue_purge(&st->l2.i_queue); in l2_st5_tei_remove()
1405 skb_queue_purge(&st->l2.ui_queue); in l2_st5_tei_remove()
1407 st->l2.tei = -1; in l2_st5_tei_remove()
1418 skb_queue_purge(&st->l2.ui_queue); in l2_st6_tei_remove()
1419 st->l2.tei = -1; in l2_st6_tei_remove()
1421 st->l2.l2l3(st, DL_RELEASE | CONFIRM, NULL); in l2_st6_tei_remove()
1430 skb_queue_purge(&st->l2.i_queue); in l2_tei_remove()
1431 skb_queue_purge(&st->l2.ui_queue); in l2_tei_remove()
1433 st->l2.tei = -1; in l2_tei_remove()
1435 FsmDelTimer(&st->l2.t203, 19); in l2_tei_remove()
1436 st->l2.l2l3(st, DL_RELEASE | INDICATION, NULL); in l2_tei_remove()
1445 skb_queue_purge(&st->l2.i_queue); in l2_st14_persistent_da()
1446 skb_queue_purge(&st->l2.ui_queue); in l2_st14_persistent_da()
1447 if (test_and_clear_bit(FLG_ESTAB_PEND, &st->l2.flag)) in l2_st14_persistent_da()
1448 st->l2.l2l3(st, DL_RELEASE | INDICATION, NULL); in l2_st14_persistent_da()
1456 skb_queue_purge(&st->l2.i_queue); in l2_st5_persistent_da()
1457 skb_queue_purge(&st->l2.ui_queue); in l2_st5_persistent_da()
1469 skb_queue_purge(&st->l2.ui_queue); in l2_st6_persistent_da()
1471 st->l2.l2l3(st, DL_RELEASE | CONFIRM, NULL); in l2_st6_persistent_da()
1480 skb_queue_purge(&st->l2.i_queue); in l2_persistent_da()
1481 skb_queue_purge(&st->l2.ui_queue); in l2_persistent_da()
1484 FsmDelTimer(&st->l2.t203, 19); in l2_persistent_da()
1485 st->l2.l2l3(st, DL_RELEASE | INDICATION, NULL); in l2_persistent_da()
1494 if (!test_and_set_bit(FLG_OWN_BUSY, &st->l2.flag)) { in l2_set_own_busy()
1496 test_and_clear_bit(FLG_ACK_PEND, &st->l2.flag); in l2_set_own_busy()
1505 if (!test_and_clear_bit(FLG_OWN_BUSY, &st->l2.flag)) { in l2_clear_own_busy()
1507 test_and_clear_bit(FLG_ACK_PEND, &st->l2.flag); in l2_clear_own_busy()
1526 test_and_clear_bit(FLG_L3_INIT, &st->l2.flag); in l2_frame_error_reest()
1632 len = l2addrsize(&st->l2); in isdnl2_l1l2()
1636 FsmEvent(&st->l2.l2m, EV_L2_FRAME_ERROR, (void *) 'N'); in isdnl2_l1l2()
1642 ret = FsmEvent(&st->l2.l2m, EV_L2_I, skb); in isdnl2_l1l2()
1645 ret = FsmEvent(&st->l2.l2m, EV_L2_SUPER, skb); in isdnl2_l1l2()
1648 ret = FsmEvent(&st->l2.l2m, EV_L2_UI, skb); in isdnl2_l1l2()
1651 ret = FsmEvent(&st->l2.l2m, EV_L2_SABME, skb); in isdnl2_l1l2()
1654 ret = FsmEvent(&st->l2.l2m, EV_L2_UA, skb); in isdnl2_l1l2()
1657 ret = FsmEvent(&st->l2.l2m, EV_L2_DISC, skb); in isdnl2_l1l2()
1660 ret = FsmEvent(&st->l2.l2m, EV_L2_DM, skb); in isdnl2_l1l2()
1663 ret = FsmEvent(&st->l2.l2m, EV_L2_FRMR, skb); in isdnl2_l1l2()
1665 FsmEvent(&st->l2.l2m, EV_L2_FRAME_ERROR, (void *) 'L'); in isdnl2_l1l2()
1671 FsmEvent(&st->l2.l2m, EV_L2_FRAME_ERROR, (void *)(long)c); in isdnl2_l1l2()
1678 FsmEvent(&st->l2.l2m, EV_L2_ACK_PULL, arg); in isdnl2_l1l2()
1681 test_and_set_bit(FLG_DCHAN_BUSY, &st->l2.flag); in isdnl2_l1l2()
1684 test_and_clear_bit(FLG_DCHAN_BUSY, &st->l2.flag); in isdnl2_l1l2()
1688 test_and_set_bit(FLG_L1_ACTIV, &st->l2.flag); in isdnl2_l1l2()
1689 if (test_and_clear_bit(FLG_ESTAB_PEND, &st->l2.flag)) in isdnl2_l1l2()
1690 FsmEvent(&st->l2.l2m, EV_L2_DL_ESTABLISH_REQ, arg); in isdnl2_l1l2()
1694 test_and_clear_bit(FLG_L1_ACTIV, &st->l2.flag); in isdnl2_l1l2()
1695 FsmEvent(&st->l2.l2m, EV_L1_DEACTIVATE, arg); in isdnl2_l1l2()
1698 l2m_debug(&st->l2.l2m, "l2 unknown pr %04x", pr); in isdnl2_l1l2()
1708 if (FsmEvent(&st->l2.l2m, EV_L2_DL_DATA, arg)) { in isdnl2_l3l2()
1713 if (FsmEvent(&st->l2.l2m, EV_L2_DL_UNIT_DATA, arg)) { in isdnl2_l3l2()
1718 if (test_bit(FLG_L1_ACTIV, &st->l2.flag)) { in isdnl2_l3l2()
1719 if (test_bit(FLG_LAPD, &st->l2.flag) || in isdnl2_l3l2()
1720 test_bit(FLG_ORIG, &st->l2.flag)) { in isdnl2_l3l2()
1721 FsmEvent(&st->l2.l2m, EV_L2_DL_ESTABLISH_REQ, arg); in isdnl2_l3l2()
1724 if (test_bit(FLG_LAPD, &st->l2.flag) || in isdnl2_l3l2()
1725 test_bit(FLG_ORIG, &st->l2.flag)) { in isdnl2_l3l2()
1726 test_and_set_bit(FLG_ESTAB_PEND, &st->l2.flag); in isdnl2_l3l2()
1728 st->l2.l2l1(st, PH_ACTIVATE, NULL); in isdnl2_l3l2()
1732 if (test_bit(FLG_LAPB, &st->l2.flag)) { in isdnl2_l3l2()
1733 st->l2.l2l1(st, PH_DEACTIVATE, NULL); in isdnl2_l3l2()
1735 FsmEvent(&st->l2.l2m, EV_L2_DL_RELEASE_REQ, arg); in isdnl2_l3l2()
1738 FsmEvent(&st->l2.l2m, EV_L2_MDL_ASSIGN, arg); in isdnl2_l3l2()
1741 FsmEvent(&st->l2.l2m, EV_L2_MDL_REMOVE, arg); in isdnl2_l3l2()
1744 FsmEvent(&st->l2.l2m, EV_L2_MDL_ERROR, arg); in isdnl2_l3l2()
1752 FsmDelTimer(&st->l2.t200, 21); in releasestack_isdnl2()
1753 FsmDelTimer(&st->l2.t203, 16); in releasestack_isdnl2()
1754 skb_queue_purge(&st->l2.i_queue); in releasestack_isdnl2()
1755 skb_queue_purge(&st->l2.ui_queue); in releasestack_isdnl2()
1756 ReleaseWin(&st->l2); in releasestack_isdnl2()
1766 VHiSax_putstatus(st->l1.hardware, st->l2.debug_id, fmt, args); in l2m_debug()
1773 spin_lock_init(&st->l2.lock); in setstack_isdnl2()
1777 skb_queue_head_init(&st->l2.i_queue); in setstack_isdnl2()
1778 skb_queue_head_init(&st->l2.ui_queue); in setstack_isdnl2()
1779 InitWin(&st->l2); in setstack_isdnl2()
1780 st->l2.debug = 0; in setstack_isdnl2()
1782 st->l2.l2m.fsm = &l2fsm; in setstack_isdnl2()
1783 if (test_bit(FLG_LAPB, &st->l2.flag)) in setstack_isdnl2()
1784 st->l2.l2m.state = ST_L2_4; in setstack_isdnl2()
1786 st->l2.l2m.state = ST_L2_1; in setstack_isdnl2()
1787 st->l2.l2m.debug = 0; in setstack_isdnl2()
1788 st->l2.l2m.userdata = st; in setstack_isdnl2()
1789 st->l2.l2m.userint = 0; in setstack_isdnl2()
1790 st->l2.l2m.printdebug = l2m_debug; in setstack_isdnl2()
1791 strcpy(st->l2.debug_id, debug_id); in setstack_isdnl2()
1793 FsmInitTimer(&st->l2.l2m, &st->l2.t200); in setstack_isdnl2()
1794 FsmInitTimer(&st->l2.l2m, &st->l2.t203); in setstack_isdnl2()
1803 st->l2.l2l1(st, PH_DATA | REQUEST, arg); in transl2_l3l2()
1806 st->l2.l2l1(st, PH_ACTIVATE | REQUEST, NULL); in transl2_l3l2()
1809 st->l2.l2l1(st, PH_DEACTIVATE | REQUEST, NULL); in transl2_l3l2()