static void l2_mdl_error_ua(struct FsmInst *fi, int event, void *arg) { struct sk_buff *skb = arg; struct layer2 *l2 = fi->userdata; if (get_PollFlagFree(l2, skb)) l2mgr(l2, MDL_ERROR_IND, (void *) 'C'); else l2mgr(l2, MDL_ERROR_IND, (void *) 'D'); }
static void l2_mdl_error_ua(struct FsmInst *fi, int event, void *arg) { msg_t *msg = arg; layer2_t *l2 = fi->userdata; if (get_PollFlagFree(l2, msg)) l2mgr(l2, MDL_ERROR | INDICATION, (void *) 'C'); else l2mgr(l2, MDL_ERROR | INDICATION, (void *) 'D'); }
static void l2_st8_mdl_error_dm(struct FsmInst *fi, int event, void *arg) { struct sk_buff *skb = arg; struct layer2 *l2 = fi->userdata; if (get_PollFlagFree(l2, skb)) l2mgr(l2, MDL_ERROR_IND, (void *) 'B'); else l2mgr(l2, MDL_ERROR_IND, (void *) 'E'); establishlink(fi); test_and_clear_bit(FLG_L3_INIT, &l2->flag); }
static void l2_st8_mdl_error_dm(struct FsmInst *fi, int event, void *arg) { msg_t *msg = arg; layer2_t *l2 = fi->userdata; if (get_PollFlagFree(l2, msg)) l2mgr(l2, MDL_ERROR | INDICATION, (void *) 'B'); else { l2mgr(l2, MDL_ERROR | INDICATION, (void *) 'E'); } establishlink(fi); test_and_clear_bit(FLG_L3_INIT, &l2->flag); }
static void l2_restart_multi(struct FsmInst *fi, int event, void *arg) { struct layer2 *l2 = fi->userdata; struct sk_buff *skb = arg; int est = 0; send_uframe(l2, skb, UA | get_PollFlag(l2, skb), RSP); l2mgr(l2, MDL_ERROR_IND, (void *) 'F'); if (l2->vs != l2->va) { skb_queue_purge(&l2->i_queue); est = 1; } clear_exception(l2); l2->vs = 0; l2->va = 0; l2->vr = 0; l2->sow = 0; mISDN_FsmChangeState(fi, ST_L2_7); stop_t200(l2, 3); mISDN_FsmRestartTimer(&l2->t203, l2->T203, EV_L2_T203, NULL, 3); if (est) l2up_create(l2, DL_ESTABLISH_IND, 0, NULL); /* mISDN_queue_data(&l2->inst, l2->inst.id | MSG_BROADCAST, * MGR_SHORTSTATUS | INDICATION, SSTATUS_L2_ESTABLISHED, * 0, NULL, 0); */ if (skb_queue_len(&l2->i_queue) && cansend(l2)) mISDN_FsmEvent(fi, EV_L2_ACK_PULL, NULL); }
static void l2_restart_multi(struct FsmInst *fi, int event, void *arg) { layer2_t *l2 = fi->userdata; msg_t *msg = arg; int est = 0; send_uframe(l2, msg, UA | get_PollFlag(l2, msg), RSP); l2mgr(l2, MDL_ERROR | INDICATION, (void *) 'F'); if (l2->vs != l2->va) { msg_queue_purge(&l2->i_queue); est = 1; } clear_exception(l2); l2->vs = 0; l2->va = 0; l2->vr = 0; l2->sow = 0; FsmChangeState(fi, ST_L2_7); stop_t200(l2, 3); FsmRestartTimer(&l2->t203, l2->T203, EV_L2_T203, NULL, 3); if (est) l2up_create(l2, DL_ESTABLISH | INDICATION, CES(l2), 0, NULL); if (msg_queue_len(&l2->i_queue) && cansend(l2)) FsmEvent(fi, EV_L2_ACK_PULL, NULL); }
static void nrerrorrecovery(struct FsmInst *fi) { struct layer2 *l2 = fi->userdata; l2mgr(l2, MDL_ERROR_IND, (void *) 'J'); establishlink(fi); test_and_clear_bit(FLG_L3_INIT, &l2->flag); }