|
@@ -142,7 +142,7 @@ freewin1(struct Layer2 *l2)
|
|
return cnt;
|
|
return cnt;
|
|
}
|
|
}
|
|
|
|
|
|
-inline void
|
|
|
|
|
|
+static inline void
|
|
freewin(struct PStack *st)
|
|
freewin(struct PStack *st)
|
|
{
|
|
{
|
|
freewin1(&st->l2);
|
|
freewin1(&st->l2);
|
|
@@ -157,7 +157,7 @@ ReleaseWin(struct Layer2 *l2)
|
|
printk(KERN_WARNING "isdl2 freed %d skbuffs in release\n", cnt);
|
|
printk(KERN_WARNING "isdl2 freed %d skbuffs in release\n", cnt);
|
|
}
|
|
}
|
|
|
|
|
|
-inline unsigned int
|
|
|
|
|
|
+static inline unsigned int
|
|
cansend(struct PStack *st)
|
|
cansend(struct PStack *st)
|
|
{
|
|
{
|
|
unsigned int p1;
|
|
unsigned int p1;
|
|
@@ -169,7 +169,7 @@ cansend(struct PStack *st)
|
|
return ((p1 < st->l2.window) && !test_bit(FLG_PEER_BUSY, &st->l2.flag));
|
|
return ((p1 < st->l2.window) && !test_bit(FLG_PEER_BUSY, &st->l2.flag));
|
|
}
|
|
}
|
|
|
|
|
|
-inline void
|
|
|
|
|
|
+static inline void
|
|
clear_exception(struct Layer2 *l2)
|
|
clear_exception(struct Layer2 *l2)
|
|
{
|
|
{
|
|
test_and_clear_bit(FLG_ACK_PEND, &l2->flag);
|
|
test_and_clear_bit(FLG_ACK_PEND, &l2->flag);
|
|
@@ -178,7 +178,7 @@ clear_exception(struct Layer2 *l2)
|
|
clear_peer_busy(l2);
|
|
clear_peer_busy(l2);
|
|
}
|
|
}
|
|
|
|
|
|
-inline int
|
|
|
|
|
|
+static inline int
|
|
l2headersize(struct Layer2 *l2, int ui)
|
|
l2headersize(struct Layer2 *l2, int ui)
|
|
{
|
|
{
|
|
return (((test_bit(FLG_MOD128, &l2->flag) && (!ui)) ? 2 : 1) +
|
|
return (((test_bit(FLG_MOD128, &l2->flag) && (!ui)) ? 2 : 1) +
|
|
@@ -223,40 +223,31 @@ enqueue_super(struct PStack *st,
|
|
|
|
|
|
#define enqueue_ui(a, b) enqueue_super(a, b)
|
|
#define enqueue_ui(a, b) enqueue_super(a, b)
|
|
|
|
|
|
-inline int
|
|
|
|
|
|
+static inline int
|
|
IsUI(u_char * data)
|
|
IsUI(u_char * data)
|
|
{
|
|
{
|
|
return ((data[0] & 0xef) == UI);
|
|
return ((data[0] & 0xef) == UI);
|
|
}
|
|
}
|
|
|
|
|
|
-inline int
|
|
|
|
|
|
+static inline int
|
|
IsUA(u_char * data)
|
|
IsUA(u_char * data)
|
|
{
|
|
{
|
|
return ((data[0] & 0xef) == UA);
|
|
return ((data[0] & 0xef) == UA);
|
|
}
|
|
}
|
|
|
|
|
|
-inline int
|
|
|
|
|
|
+static inline int
|
|
IsDM(u_char * data)
|
|
IsDM(u_char * data)
|
|
{
|
|
{
|
|
return ((data[0] & 0xef) == DM);
|
|
return ((data[0] & 0xef) == DM);
|
|
}
|
|
}
|
|
|
|
|
|
-inline int
|
|
|
|
|
|
+static inline int
|
|
IsDISC(u_char * data)
|
|
IsDISC(u_char * data)
|
|
{
|
|
{
|
|
return ((data[0] & 0xef) == DISC);
|
|
return ((data[0] & 0xef) == DISC);
|
|
}
|
|
}
|
|
|
|
|
|
-inline int
|
|
|
|
-IsRR(u_char * data, struct PStack *st)
|
|
|
|
-{
|
|
|
|
- if (test_bit(FLG_MOD128, &st->l2.flag))
|
|
|
|
- return (data[0] == RR);
|
|
|
|
- else
|
|
|
|
- return ((data[0] & 0xf) == 1);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-inline int
|
|
|
|
|
|
+static inline int
|
|
IsSFrame(u_char * data, struct PStack *st)
|
|
IsSFrame(u_char * data, struct PStack *st)
|
|
{
|
|
{
|
|
register u_char d = *data;
|
|
register u_char d = *data;
|
|
@@ -266,7 +257,7 @@ IsSFrame(u_char * data, struct PStack *st)
|
|
return(((d & 0xf3) == 1) && ((d & 0x0c) != 0x0c));
|
|
return(((d & 0xf3) == 1) && ((d & 0x0c) != 0x0c));
|
|
}
|
|
}
|
|
|
|
|
|
-inline int
|
|
|
|
|
|
+static inline int
|
|
IsSABME(u_char * data, struct PStack *st)
|
|
IsSABME(u_char * data, struct PStack *st)
|
|
{
|
|
{
|
|
u_char d = data[0] & ~0x10;
|
|
u_char d = data[0] & ~0x10;
|
|
@@ -274,25 +265,25 @@ IsSABME(u_char * data, struct PStack *st)
|
|
return (test_bit(FLG_MOD128, &st->l2.flag) ? d == SABME : d == SABM);
|
|
return (test_bit(FLG_MOD128, &st->l2.flag) ? d == SABME : d == SABM);
|
|
}
|
|
}
|
|
|
|
|
|
-inline int
|
|
|
|
|
|
+static inline int
|
|
IsREJ(u_char * data, struct PStack *st)
|
|
IsREJ(u_char * data, struct PStack *st)
|
|
{
|
|
{
|
|
return (test_bit(FLG_MOD128, &st->l2.flag) ? data[0] == REJ : (data[0] & 0xf) == REJ);
|
|
return (test_bit(FLG_MOD128, &st->l2.flag) ? data[0] == REJ : (data[0] & 0xf) == REJ);
|
|
}
|
|
}
|
|
|
|
|
|
-inline int
|
|
|
|
|
|
+static inline int
|
|
IsFRMR(u_char * data)
|
|
IsFRMR(u_char * data)
|
|
{
|
|
{
|
|
return ((data[0] & 0xef) == FRMR);
|
|
return ((data[0] & 0xef) == FRMR);
|
|
}
|
|
}
|
|
|
|
|
|
-inline int
|
|
|
|
|
|
+static inline int
|
|
IsRNR(u_char * data, struct PStack *st)
|
|
IsRNR(u_char * data, struct PStack *st)
|
|
{
|
|
{
|
|
return (test_bit(FLG_MOD128, &st->l2.flag) ? data[0] == RNR : (data[0] & 0xf) == RNR);
|
|
return (test_bit(FLG_MOD128, &st->l2.flag) ? data[0] == RNR : (data[0] & 0xf) == RNR);
|
|
}
|
|
}
|
|
|
|
|
|
-int
|
|
|
|
|
|
+static int
|
|
iframe_error(struct PStack *st, struct sk_buff *skb)
|
|
iframe_error(struct PStack *st, struct sk_buff *skb)
|
|
{
|
|
{
|
|
int i = l2addrsize(&st->l2) + (test_bit(FLG_MOD128, &st->l2.flag) ? 2 : 1);
|
|
int i = l2addrsize(&st->l2) + (test_bit(FLG_MOD128, &st->l2.flag) ? 2 : 1);
|
|
@@ -315,7 +306,7 @@ iframe_error(struct PStack *st, struct sk_buff *skb)
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-int
|
|
|
|
|
|
+static int
|
|
super_error(struct PStack *st, struct sk_buff *skb)
|
|
super_error(struct PStack *st, struct sk_buff *skb)
|
|
{
|
|
{
|
|
if (skb->len != l2addrsize(&st->l2) +
|
|
if (skb->len != l2addrsize(&st->l2) +
|
|
@@ -325,7 +316,7 @@ super_error(struct PStack *st, struct sk_buff *skb)
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-int
|
|
|
|
|
|
+static int
|
|
unnum_error(struct PStack *st, struct sk_buff *skb, int wantrsp)
|
|
unnum_error(struct PStack *st, struct sk_buff *skb, int wantrsp)
|
|
{
|
|
{
|
|
int rsp = (*skb->data & 0x2) >> 1;
|
|
int rsp = (*skb->data & 0x2) >> 1;
|
|
@@ -341,7 +332,7 @@ unnum_error(struct PStack *st, struct sk_buff *skb, int wantrsp)
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-int
|
|
|
|
|
|
+static int
|
|
UI_error(struct PStack *st, struct sk_buff *skb)
|
|
UI_error(struct PStack *st, struct sk_buff *skb)
|
|
{
|
|
{
|
|
int rsp = *skb->data & 0x2;
|
|
int rsp = *skb->data & 0x2;
|
|
@@ -357,7 +348,7 @@ UI_error(struct PStack *st, struct sk_buff *skb)
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-int
|
|
|
|
|
|
+static int
|
|
FRMR_error(struct PStack *st, struct sk_buff *skb)
|
|
FRMR_error(struct PStack *st, struct sk_buff *skb)
|
|
{
|
|
{
|
|
int headers = l2addrsize(&st->l2) + 1;
|
|
int headers = l2addrsize(&st->l2) + 1;
|
|
@@ -444,51 +435,44 @@ send_uframe(struct PStack *st, u_char cmd, u_char cr)
|
|
enqueue_super(st, skb);
|
|
enqueue_super(st, skb);
|
|
}
|
|
}
|
|
|
|
|
|
-inline u_char
|
|
|
|
|
|
+static inline u_char
|
|
get_PollFlag(struct PStack * st, struct sk_buff * skb)
|
|
get_PollFlag(struct PStack * st, struct sk_buff * skb)
|
|
{
|
|
{
|
|
return (skb->data[l2addrsize(&(st->l2))] & 0x10);
|
|
return (skb->data[l2addrsize(&(st->l2))] & 0x10);
|
|
}
|
|
}
|
|
|
|
|
|
-inline void
|
|
|
|
-FreeSkb(struct sk_buff *skb)
|
|
|
|
-{
|
|
|
|
- dev_kfree_skb(skb);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-inline u_char
|
|
|
|
|
|
+static inline u_char
|
|
get_PollFlagFree(struct PStack *st, struct sk_buff *skb)
|
|
get_PollFlagFree(struct PStack *st, struct sk_buff *skb)
|
|
{
|
|
{
|
|
u_char PF;
|
|
u_char PF;
|
|
|
|
|
|
PF = get_PollFlag(st, skb);
|
|
PF = get_PollFlag(st, skb);
|
|
- FreeSkb(skb);
|
|
|
|
|
|
+ dev_kfree_skb(skb);
|
|
return (PF);
|
|
return (PF);
|
|
}
|
|
}
|
|
|
|
|
|
-inline void
|
|
|
|
|
|
+static inline void
|
|
start_t200(struct PStack *st, int i)
|
|
start_t200(struct PStack *st, int i)
|
|
{
|
|
{
|
|
FsmAddTimer(&st->l2.t200, st->l2.T200, EV_L2_T200, NULL, i);
|
|
FsmAddTimer(&st->l2.t200, st->l2.T200, EV_L2_T200, NULL, i);
|
|
test_and_set_bit(FLG_T200_RUN, &st->l2.flag);
|
|
test_and_set_bit(FLG_T200_RUN, &st->l2.flag);
|
|
}
|
|
}
|
|
|
|
|
|
-inline void
|
|
|
|
|
|
+static inline void
|
|
restart_t200(struct PStack *st, int i)
|
|
restart_t200(struct PStack *st, int i)
|
|
{
|
|
{
|
|
FsmRestartTimer(&st->l2.t200, st->l2.T200, EV_L2_T200, NULL, i);
|
|
FsmRestartTimer(&st->l2.t200, st->l2.T200, EV_L2_T200, NULL, i);
|
|
test_and_set_bit(FLG_T200_RUN, &st->l2.flag);
|
|
test_and_set_bit(FLG_T200_RUN, &st->l2.flag);
|
|
}
|
|
}
|
|
|
|
|
|
-inline void
|
|
|
|
|
|
+static inline void
|
|
stop_t200(struct PStack *st, int i)
|
|
stop_t200(struct PStack *st, int i)
|
|
{
|
|
{
|
|
if(test_and_clear_bit(FLG_T200_RUN, &st->l2.flag))
|
|
if(test_and_clear_bit(FLG_T200_RUN, &st->l2.flag))
|
|
FsmDelTimer(&st->l2.t200, i);
|
|
FsmDelTimer(&st->l2.t200, i);
|
|
}
|
|
}
|
|
|
|
|
|
-inline void
|
|
|
|
|
|
+static inline void
|
|
st5_dl_release_l2l3(struct PStack *st)
|
|
st5_dl_release_l2l3(struct PStack *st)
|
|
{
|
|
{
|
|
int pr;
|
|
int pr;
|
|
@@ -501,7 +485,7 @@ st5_dl_release_l2l3(struct PStack *st)
|
|
st->l2.l2l3(st, pr, NULL);
|
|
st->l2.l2l3(st, pr, NULL);
|
|
}
|
|
}
|
|
|
|
|
|
-inline void
|
|
|
|
|
|
+static inline void
|
|
lapb_dl_release_l2l3(struct PStack *st, int f)
|
|
lapb_dl_release_l2l3(struct PStack *st, int f)
|
|
{
|
|
{
|
|
if (test_bit(FLG_LAPB, &st->l2.flag))
|
|
if (test_bit(FLG_LAPB, &st->l2.flag))
|
|
@@ -802,7 +786,7 @@ l2_connected(struct FsmInst *fi, int event, void *arg)
|
|
l2_mdl_error_ua(fi, event, arg);
|
|
l2_mdl_error_ua(fi, event, arg);
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
- FreeSkb(skb);
|
|
|
|
|
|
+ dev_kfree_skb(skb);
|
|
|
|
|
|
if (test_and_clear_bit(FLG_PEND_REL, &st->l2.flag))
|
|
if (test_and_clear_bit(FLG_PEND_REL, &st->l2.flag))
|
|
l2_disconnect(fi, event, arg);
|
|
l2_disconnect(fi, event, arg);
|
|
@@ -840,7 +824,7 @@ l2_released(struct FsmInst *fi, int event, void *arg)
|
|
l2_mdl_error_ua(fi, event, arg);
|
|
l2_mdl_error_ua(fi, event, arg);
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
- FreeSkb(skb);
|
|
|
|
|
|
+ dev_kfree_skb(skb);
|
|
|
|
|
|
stop_t200(st, 6);
|
|
stop_t200(st, 6);
|
|
lapb_dl_release_l2l3(st, CONFIRM);
|
|
lapb_dl_release_l2l3(st, CONFIRM);
|
|
@@ -889,7 +873,7 @@ l2_st6_dm_release(struct FsmInst *fi, int event, void *arg)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-inline void
|
|
|
|
|
|
+static inline void
|
|
enquiry_cr(struct PStack *st, u_char typ, u_char cr, u_char pf)
|
|
enquiry_cr(struct PStack *st, u_char typ, u_char cr, u_char pf)
|
|
{
|
|
{
|
|
struct sk_buff *skb;
|
|
struct sk_buff *skb;
|
|
@@ -912,7 +896,7 @@ enquiry_cr(struct PStack *st, u_char typ, u_char cr, u_char pf)
|
|
enqueue_super(st, skb);
|
|
enqueue_super(st, skb);
|
|
}
|
|
}
|
|
|
|
|
|
-inline void
|
|
|
|
|
|
+static inline void
|
|
enquiry_response(struct PStack *st)
|
|
enquiry_response(struct PStack *st)
|
|
{
|
|
{
|
|
if (test_bit(FLG_OWN_BUSY, &st->l2.flag))
|
|
if (test_bit(FLG_OWN_BUSY, &st->l2.flag))
|
|
@@ -922,7 +906,7 @@ enquiry_response(struct PStack *st)
|
|
test_and_clear_bit(FLG_ACK_PEND, &st->l2.flag);
|
|
test_and_clear_bit(FLG_ACK_PEND, &st->l2.flag);
|
|
}
|
|
}
|
|
|
|
|
|
-inline void
|
|
|
|
|
|
+static inline void
|
|
transmit_enquiry(struct PStack *st)
|
|
transmit_enquiry(struct PStack *st)
|
|
{
|
|
{
|
|
if (test_bit(FLG_OWN_BUSY, &st->l2.flag))
|
|
if (test_bit(FLG_OWN_BUSY, &st->l2.flag))
|
|
@@ -1004,7 +988,7 @@ l2_st7_got_super(struct FsmInst *fi, int event, void *arg)
|
|
PollFlag = (skb->data[0] & 0x10);
|
|
PollFlag = (skb->data[0] & 0x10);
|
|
nr = (skb->data[0] >> 5) & 0x7;
|
|
nr = (skb->data[0] >> 5) & 0x7;
|
|
}
|
|
}
|
|
- FreeSkb(skb);
|
|
|
|
|
|
+ dev_kfree_skb(skb);
|
|
|
|
|
|
if (PollFlag) {
|
|
if (PollFlag) {
|
|
if (rsp)
|
|
if (rsp)
|
|
@@ -1047,7 +1031,7 @@ l2_feed_i_if_reest(struct FsmInst *fi, int event, void *arg)
|
|
if (!test_bit(FLG_L3_INIT, &st->l2.flag))
|
|
if (!test_bit(FLG_L3_INIT, &st->l2.flag))
|
|
skb_queue_tail(&st->l2.i_queue, skb);
|
|
skb_queue_tail(&st->l2.i_queue, skb);
|
|
else
|
|
else
|
|
- FreeSkb(skb);
|
|
|
|
|
|
+ dev_kfree_skb(skb);
|
|
}
|
|
}
|
|
|
|
|
|
static void
|
|
static void
|
|
@@ -1093,7 +1077,7 @@ l2_got_iframe(struct FsmInst *fi, int event, void *arg)
|
|
nr = (skb->data[i] >> 5) & 0x7;
|
|
nr = (skb->data[i] >> 5) & 0x7;
|
|
}
|
|
}
|
|
if (test_bit(FLG_OWN_BUSY, &l2->flag)) {
|
|
if (test_bit(FLG_OWN_BUSY, &l2->flag)) {
|
|
- FreeSkb(skb);
|
|
|
|
|
|
+ dev_kfree_skb(skb);
|
|
if(PollFlag) enquiry_response(st);
|
|
if(PollFlag) enquiry_response(st);
|
|
} else if (l2->vr == ns) {
|
|
} else if (l2->vr == ns) {
|
|
(l2->vr)++;
|
|
(l2->vr)++;
|
|
@@ -1111,7 +1095,7 @@ l2_got_iframe(struct FsmInst *fi, int event, void *arg)
|
|
st->l2.l2l3(st, DL_DATA | INDICATION, skb);
|
|
st->l2.l2l3(st, DL_DATA | INDICATION, skb);
|
|
} else {
|
|
} else {
|
|
/* n(s)!=v(r) */
|
|
/* n(s)!=v(r) */
|
|
- FreeSkb(skb);
|
|
|
|
|
|
+ dev_kfree_skb(skb);
|
|
if (test_and_set_bit(FLG_REJEXC, &l2->flag)) {
|
|
if (test_and_set_bit(FLG_REJEXC, &l2->flag)) {
|
|
if (PollFlag)
|
|
if (PollFlag)
|
|
enquiry_response(st);
|
|
enquiry_response(st);
|
|
@@ -1309,7 +1293,7 @@ l2_pull_iqueue(struct FsmInst *fi, int event, void *arg)
|
|
skb = alloc_skb(oskb->len + i, GFP_ATOMIC);
|
|
skb = alloc_skb(oskb->len + i, GFP_ATOMIC);
|
|
memcpy(skb_put(skb, i), header, i);
|
|
memcpy(skb_put(skb, i), header, i);
|
|
memcpy(skb_put(skb, oskb->len), oskb->data, oskb->len);
|
|
memcpy(skb_put(skb, oskb->len), oskb->data, oskb->len);
|
|
- FreeSkb(oskb);
|
|
|
|
|
|
+ dev_kfree_skb(oskb);
|
|
}
|
|
}
|
|
st->l2.l2l1(st, PH_PULL | INDICATION, skb);
|
|
st->l2.l2l1(st, PH_PULL | INDICATION, skb);
|
|
test_and_clear_bit(FLG_ACK_PEND, &st->l2.flag);
|
|
test_and_clear_bit(FLG_ACK_PEND, &st->l2.flag);
|
|
@@ -1349,7 +1333,7 @@ l2_st8_got_super(struct FsmInst *fi, int event, void *arg)
|
|
PollFlag = (skb->data[0] & 0x10);
|
|
PollFlag = (skb->data[0] & 0x10);
|
|
nr = (skb->data[0] >> 5) & 0x7;
|
|
nr = (skb->data[0] >> 5) & 0x7;
|
|
}
|
|
}
|
|
- FreeSkb(skb);
|
|
|
|
|
|
+ dev_kfree_skb(skb);
|
|
|
|
|
|
if (rsp && PollFlag) {
|
|
if (rsp && PollFlag) {
|
|
if (legalnr(st, nr)) {
|
|
if (legalnr(st, nr)) {
|
|
@@ -1391,7 +1375,7 @@ l2_got_FRMR(struct FsmInst *fi, int event, void *arg)
|
|
establishlink(fi);
|
|
establishlink(fi);
|
|
test_and_clear_bit(FLG_L3_INIT, &st->l2.flag);
|
|
test_and_clear_bit(FLG_L3_INIT, &st->l2.flag);
|
|
}
|
|
}
|
|
- FreeSkb(skb);
|
|
|
|
|
|
+ dev_kfree_skb(skb);
|
|
}
|
|
}
|
|
|
|
|
|
static void
|
|
static void
|
|
@@ -1655,7 +1639,7 @@ isdnl2_l1l2(struct PStack *st, int pr, void *arg)
|
|
datap += len;
|
|
datap += len;
|
|
else {
|
|
else {
|
|
FsmEvent(&st->l2.l2m, EV_L2_FRAME_ERROR, (void *) 'N');
|
|
FsmEvent(&st->l2.l2m, EV_L2_FRAME_ERROR, (void *) 'N');
|
|
- FreeSkb(skb);
|
|
|
|
|
|
+ dev_kfree_skb(skb);
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
if (!(*datap & 1)) { /* I-Frame */
|
|
if (!(*datap & 1)) { /* I-Frame */
|
|
@@ -1684,16 +1668,16 @@ isdnl2_l1l2(struct PStack *st, int pr, void *arg)
|
|
ret = FsmEvent(&st->l2.l2m, EV_L2_FRMR, skb);
|
|
ret = FsmEvent(&st->l2.l2m, EV_L2_FRMR, skb);
|
|
} else {
|
|
} else {
|
|
FsmEvent(&st->l2.l2m, EV_L2_FRAME_ERROR, (void *) 'L');
|
|
FsmEvent(&st->l2.l2m, EV_L2_FRAME_ERROR, (void *) 'L');
|
|
- FreeSkb(skb);
|
|
|
|
|
|
+ dev_kfree_skb(skb);
|
|
ret = 0;
|
|
ret = 0;
|
|
}
|
|
}
|
|
if(c) {
|
|
if(c) {
|
|
- FreeSkb(skb);
|
|
|
|
|
|
+ dev_kfree_skb(skb);
|
|
FsmEvent(&st->l2.l2m, EV_L2_FRAME_ERROR, (void *)(long)c);
|
|
FsmEvent(&st->l2.l2m, EV_L2_FRAME_ERROR, (void *)(long)c);
|
|
ret = 0;
|
|
ret = 0;
|
|
}
|
|
}
|
|
if (ret)
|
|
if (ret)
|
|
- FreeSkb(skb);
|
|
|
|
|
|
+ dev_kfree_skb(skb);
|
|
break;
|
|
break;
|
|
case (PH_PULL | CONFIRM):
|
|
case (PH_PULL | CONFIRM):
|
|
FsmEvent(&st->l2.l2m, EV_L2_ACK_PULL, arg);
|
|
FsmEvent(&st->l2.l2m, EV_L2_ACK_PULL, arg);
|