FreeSkb(skb); 
dev_kfree_skb(skb); 
l2_got_iframe(struct FsmInst *fi, int event, void *arg){	struct PStack *st = fi->userdata;	struct sk_buff *skb = arg;	struct Layer2 *l2 = &(st->l2);	int PollFlag, ns, i;	unsigned int nr;	i = l2addrsize(l2);	if (test_bit(FLG_MOD128, &l2->flag)) {		PollFlag = ((skb->data[i + 1] & 0x1) == 0x1);		ns = skb->data[i] >> 1;		nr = (skb->data[i + 1] >> 1) & 0x7f;	} else {		PollFlag = (skb->data[i] & 0x10);		ns = (skb->data[i] >> 1) & 0x7;		nr = (skb->data[i] >> 5) & 0x7;	}	if (test_bit(FLG_OWN_BUSY, &l2->flag)) {		FreeSkb(skb);		if(PollFlag) enquiry_response(st);	} else if (l2->vr == ns) {		(l2->vr)++;		if(test_bit(FLG_MOD128, &l2->flag))			l2->vr %= 128;		else			l2->vr %= 8;		test_and_clear_bit(FLG_REJEXC, &l2->flag);		if (PollFlag)			enquiry_response(st);		else			test_and_set_bit(FLG_ACK_PEND, &l2->flag);		skb_pull(skb, l2headersize(l2, 0));		st->l2.l2l3(st, DL_DATA | INDICATION, skb);	} else {		/* n(s)!=v(r) */		FreeSkb(skb);		if (test_and_set_bit(FLG_REJEXC, &l2->flag)) {			if (PollFlag)				enquiry_response(st);		} else {			enquiry_cr(st, REJ, RSP, PollFlag);			test_and_clear_bit(FLG_ACK_PEND, &l2->flag);		}	}	if (legalnr(st, nr)) {		if (!test_bit(FLG_PEER_BUSY, &st->l2.flag) && (fi->state == ST_L2_7)) {			if (nr == st->l2.vs) {				stop_t200(st, 13);				FsmRestartTimer(&st->l2.t203, st->l2.T203,						EV_L2_T203, NULL, 7);			} else if (nr != st->l2.va)				restart_t200(st, 14);		}		setva(st, nr);	} else {		nrerrorrecovery(fi);		return;	}	if (skb_queue_len(&st->l2.i_queue) && (fi->state == ST_L2_7))		st->l2.l2l1(st, PH_PULL | REQUEST, NULL);	if (test_and_clear_bit(FLG_ACK_PEND, &st->l2.flag))		enquiry_cr(st, RR, RSP, 0);}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/672c3fd9069e5a138f9d4afc9aeb5aa34aacce32/isdnl2.c/buggy/drivers/isdn/hisax/isdnl2.c