static void lc_release_cnf(struct FsmInst *fi, int event, void *arg) { struct PStack *st = fi->userdata; FsmChangeState(fi, ST_L3_LC_REL); skb_queue_purge(&st->l3.squeue); l3ml3p(st, DL_RELEASE | CONFIRM); }
static void lc_release_cnf(struct FsmInst *fi, int event, void *arg) { layer3_t *l3 = fi->userdata; mISDN_FsmChangeState(fi, ST_L3_LC_REL); discard_queue(&l3->squeue); l3ml3p(l3, DL_RELEASE | CONFIRM); }
static void lc_release_ind(struct FsmInst *fi, int event, void *arg) { struct PStack *st = fi->userdata; FsmDelTimer(&st->l3.l3m_timer, 52); FsmChangeState(fi, ST_L3_LC_REL); skb_queue_purge(&st->l3.squeue); l3ml3p(st, DL_RELEASE | INDICATION); }
static void lc_release_ind(struct FsmInst *fi, int event, void *arg) { layer3_t *l3 = fi->userdata; mISDN_FsmDelTimer(&l3->l3m_timer, 52); mISDN_FsmChangeState(fi, ST_L3_LC_REL); discard_queue(&l3->squeue); l3ml3p(l3, DL_RELEASE | INDICATION); }
static void lc_connect(struct FsmInst *fi, int event, void *arg) { struct PStack *st = fi->userdata; struct sk_buff *skb = arg; int dequeued = 0; FsmChangeState(fi, ST_L3_LC_ESTAB); while ((skb = skb_dequeue(&st->l3.squeue))) { st->l3.l3l2(st, DL_DATA | REQUEST, skb); dequeued++; } if ((!st->l3.proc) && dequeued) { if (st->l3.debug) l3_debug(st, "lc_connect: release link"); FsmEvent(&st->l3.l3m, EV_RELEASE_REQ, NULL); } else l3ml3p(st, DL_ESTABLISH | INDICATION); }
static void lc_connect(struct FsmInst *fi, int event, void *arg) { layer3_t *l3 = fi->userdata; struct sk_buff *skb; int dequeued = 0; mISDN_FsmChangeState(fi, ST_L3_LC_ESTAB); while ((skb = skb_dequeue(&l3->squeue))) { if (l3down(l3, DL_DATA | REQUEST, l3_newid(l3), skb)) dev_kfree_skb(skb); dequeued++; } if (list_empty(&l3->plist) && dequeued) { if (l3->debug) l3m_debug(fi, "lc_connect: release link"); mISDN_FsmEvent(&l3->l3m, EV_RELEASE_REQ, NULL); } else l3ml3p(l3, DL_ESTABLISH | INDICATION); }