Lines Matching refs:lapb

44 static void lapb_state0_machine(struct lapb_cb *lapb, struct sk_buff *skb,  in lapb_state0_machine()  argument
49 lapb_dbg(1, "(%p) S0 RX SABM(%d)\n", lapb->dev, frame->pf); in lapb_state0_machine()
50 if (lapb->mode & LAPB_EXTENDED) { in lapb_state0_machine()
52 lapb->dev, frame->pf); in lapb_state0_machine()
53 lapb_send_control(lapb, LAPB_DM, frame->pf, in lapb_state0_machine()
57 lapb->dev, frame->pf); in lapb_state0_machine()
58 lapb_dbg(0, "(%p) S0 -> S3\n", lapb->dev); in lapb_state0_machine()
59 lapb_send_control(lapb, LAPB_UA, frame->pf, in lapb_state0_machine()
61 lapb_stop_t1timer(lapb); in lapb_state0_machine()
62 lapb_stop_t2timer(lapb); in lapb_state0_machine()
63 lapb->state = LAPB_STATE_3; in lapb_state0_machine()
64 lapb->condition = 0x00; in lapb_state0_machine()
65 lapb->n2count = 0; in lapb_state0_machine()
66 lapb->vs = 0; in lapb_state0_machine()
67 lapb->vr = 0; in lapb_state0_machine()
68 lapb->va = 0; in lapb_state0_machine()
69 lapb_connect_indication(lapb, LAPB_OK); in lapb_state0_machine()
74 lapb_dbg(1, "(%p) S0 RX SABME(%d)\n", lapb->dev, frame->pf); in lapb_state0_machine()
75 if (lapb->mode & LAPB_EXTENDED) { in lapb_state0_machine()
77 lapb->dev, frame->pf); in lapb_state0_machine()
78 lapb_dbg(0, "(%p) S0 -> S3\n", lapb->dev); in lapb_state0_machine()
79 lapb_send_control(lapb, LAPB_UA, frame->pf, in lapb_state0_machine()
81 lapb_stop_t1timer(lapb); in lapb_state0_machine()
82 lapb_stop_t2timer(lapb); in lapb_state0_machine()
83 lapb->state = LAPB_STATE_3; in lapb_state0_machine()
84 lapb->condition = 0x00; in lapb_state0_machine()
85 lapb->n2count = 0; in lapb_state0_machine()
86 lapb->vs = 0; in lapb_state0_machine()
87 lapb->vr = 0; in lapb_state0_machine()
88 lapb->va = 0; in lapb_state0_machine()
89 lapb_connect_indication(lapb, LAPB_OK); in lapb_state0_machine()
92 lapb->dev, frame->pf); in lapb_state0_machine()
93 lapb_send_control(lapb, LAPB_DM, frame->pf, in lapb_state0_machine()
99 lapb_dbg(1, "(%p) S0 RX DISC(%d)\n", lapb->dev, frame->pf); in lapb_state0_machine()
100 lapb_dbg(1, "(%p) S0 TX UA(%d)\n", lapb->dev, frame->pf); in lapb_state0_machine()
101 lapb_send_control(lapb, LAPB_UA, frame->pf, LAPB_RESPONSE); in lapb_state0_machine()
115 static void lapb_state1_machine(struct lapb_cb *lapb, struct sk_buff *skb, in lapb_state1_machine() argument
120 lapb_dbg(1, "(%p) S1 RX SABM(%d)\n", lapb->dev, frame->pf); in lapb_state1_machine()
121 if (lapb->mode & LAPB_EXTENDED) { in lapb_state1_machine()
123 lapb->dev, frame->pf); in lapb_state1_machine()
124 lapb_send_control(lapb, LAPB_DM, frame->pf, in lapb_state1_machine()
128 lapb->dev, frame->pf); in lapb_state1_machine()
129 lapb_send_control(lapb, LAPB_UA, frame->pf, in lapb_state1_machine()
135 lapb_dbg(1, "(%p) S1 RX SABME(%d)\n", lapb->dev, frame->pf); in lapb_state1_machine()
136 if (lapb->mode & LAPB_EXTENDED) { in lapb_state1_machine()
138 lapb->dev, frame->pf); in lapb_state1_machine()
139 lapb_send_control(lapb, LAPB_UA, frame->pf, in lapb_state1_machine()
143 lapb->dev, frame->pf); in lapb_state1_machine()
144 lapb_send_control(lapb, LAPB_DM, frame->pf, in lapb_state1_machine()
150 lapb_dbg(1, "(%p) S1 RX DISC(%d)\n", lapb->dev, frame->pf); in lapb_state1_machine()
151 lapb_dbg(1, "(%p) S1 TX DM(%d)\n", lapb->dev, frame->pf); in lapb_state1_machine()
152 lapb_send_control(lapb, LAPB_DM, frame->pf, LAPB_RESPONSE); in lapb_state1_machine()
156 lapb_dbg(1, "(%p) S1 RX UA(%d)\n", lapb->dev, frame->pf); in lapb_state1_machine()
158 lapb_dbg(0, "(%p) S1 -> S3\n", lapb->dev); in lapb_state1_machine()
159 lapb_stop_t1timer(lapb); in lapb_state1_machine()
160 lapb_stop_t2timer(lapb); in lapb_state1_machine()
161 lapb->state = LAPB_STATE_3; in lapb_state1_machine()
162 lapb->condition = 0x00; in lapb_state1_machine()
163 lapb->n2count = 0; in lapb_state1_machine()
164 lapb->vs = 0; in lapb_state1_machine()
165 lapb->vr = 0; in lapb_state1_machine()
166 lapb->va = 0; in lapb_state1_machine()
167 lapb_connect_confirmation(lapb, LAPB_OK); in lapb_state1_machine()
172 lapb_dbg(1, "(%p) S1 RX DM(%d)\n", lapb->dev, frame->pf); in lapb_state1_machine()
174 lapb_dbg(0, "(%p) S1 -> S0\n", lapb->dev); in lapb_state1_machine()
175 lapb_clear_queues(lapb); in lapb_state1_machine()
176 lapb->state = LAPB_STATE_0; in lapb_state1_machine()
177 lapb_start_t1timer(lapb); in lapb_state1_machine()
178 lapb_stop_t2timer(lapb); in lapb_state1_machine()
179 lapb_disconnect_indication(lapb, LAPB_REFUSED); in lapb_state1_machine()
191 static void lapb_state2_machine(struct lapb_cb *lapb, struct sk_buff *skb, in lapb_state2_machine() argument
198 lapb->dev, frame->pf); in lapb_state2_machine()
199 lapb_dbg(1, "(%p) S2 TX DM(%d)\n", lapb->dev, frame->pf); in lapb_state2_machine()
200 lapb_send_control(lapb, LAPB_DM, frame->pf, LAPB_RESPONSE); in lapb_state2_machine()
204 lapb_dbg(1, "(%p) S2 RX DISC(%d)\n", lapb->dev, frame->pf); in lapb_state2_machine()
205 lapb_dbg(1, "(%p) S2 TX UA(%d)\n", lapb->dev, frame->pf); in lapb_state2_machine()
206 lapb_send_control(lapb, LAPB_UA, frame->pf, LAPB_RESPONSE); in lapb_state2_machine()
210 lapb_dbg(1, "(%p) S2 RX UA(%d)\n", lapb->dev, frame->pf); in lapb_state2_machine()
212 lapb_dbg(0, "(%p) S2 -> S0\n", lapb->dev); in lapb_state2_machine()
213 lapb->state = LAPB_STATE_0; in lapb_state2_machine()
214 lapb_start_t1timer(lapb); in lapb_state2_machine()
215 lapb_stop_t2timer(lapb); in lapb_state2_machine()
216 lapb_disconnect_confirmation(lapb, LAPB_OK); in lapb_state2_machine()
221 lapb_dbg(1, "(%p) S2 RX DM(%d)\n", lapb->dev, frame->pf); in lapb_state2_machine()
223 lapb_dbg(0, "(%p) S2 -> S0\n", lapb->dev); in lapb_state2_machine()
224 lapb->state = LAPB_STATE_0; in lapb_state2_machine()
225 lapb_start_t1timer(lapb); in lapb_state2_machine()
226 lapb_stop_t2timer(lapb); in lapb_state2_machine()
227 lapb_disconnect_confirmation(lapb, LAPB_NOTCONNECTED); in lapb_state2_machine()
236 lapb->dev, frame->pf); in lapb_state2_machine()
237 lapb_dbg(1, "(%p) S2 RX DM(%d)\n", lapb->dev, frame->pf); in lapb_state2_machine()
239 lapb_send_control(lapb, LAPB_DM, frame->pf, in lapb_state2_machine()
251 static void lapb_state3_machine(struct lapb_cb *lapb, struct sk_buff *skb, in lapb_state3_machine() argument
255 int modulus = (lapb->mode & LAPB_EXTENDED) ? LAPB_EMODULUS : in lapb_state3_machine()
260 lapb_dbg(1, "(%p) S3 RX SABM(%d)\n", lapb->dev, frame->pf); in lapb_state3_machine()
261 if (lapb->mode & LAPB_EXTENDED) { in lapb_state3_machine()
263 lapb->dev, frame->pf); in lapb_state3_machine()
264 lapb_send_control(lapb, LAPB_DM, frame->pf, in lapb_state3_machine()
268 lapb->dev, frame->pf); in lapb_state3_machine()
269 lapb_send_control(lapb, LAPB_UA, frame->pf, in lapb_state3_machine()
271 lapb_stop_t1timer(lapb); in lapb_state3_machine()
272 lapb_stop_t2timer(lapb); in lapb_state3_machine()
273 lapb->condition = 0x00; in lapb_state3_machine()
274 lapb->n2count = 0; in lapb_state3_machine()
275 lapb->vs = 0; in lapb_state3_machine()
276 lapb->vr = 0; in lapb_state3_machine()
277 lapb->va = 0; in lapb_state3_machine()
278 lapb_requeue_frames(lapb); in lapb_state3_machine()
283 lapb_dbg(1, "(%p) S3 RX SABME(%d)\n", lapb->dev, frame->pf); in lapb_state3_machine()
284 if (lapb->mode & LAPB_EXTENDED) { in lapb_state3_machine()
286 lapb->dev, frame->pf); in lapb_state3_machine()
287 lapb_send_control(lapb, LAPB_UA, frame->pf, in lapb_state3_machine()
289 lapb_stop_t1timer(lapb); in lapb_state3_machine()
290 lapb_stop_t2timer(lapb); in lapb_state3_machine()
291 lapb->condition = 0x00; in lapb_state3_machine()
292 lapb->n2count = 0; in lapb_state3_machine()
293 lapb->vs = 0; in lapb_state3_machine()
294 lapb->vr = 0; in lapb_state3_machine()
295 lapb->va = 0; in lapb_state3_machine()
296 lapb_requeue_frames(lapb); in lapb_state3_machine()
299 lapb->dev, frame->pf); in lapb_state3_machine()
300 lapb_send_control(lapb, LAPB_DM, frame->pf, in lapb_state3_machine()
306 lapb_dbg(1, "(%p) S3 RX DISC(%d)\n", lapb->dev, frame->pf); in lapb_state3_machine()
307 lapb_dbg(0, "(%p) S3 -> S0\n", lapb->dev); in lapb_state3_machine()
308 lapb_clear_queues(lapb); in lapb_state3_machine()
309 lapb_send_control(lapb, LAPB_UA, frame->pf, LAPB_RESPONSE); in lapb_state3_machine()
310 lapb_start_t1timer(lapb); in lapb_state3_machine()
311 lapb_stop_t2timer(lapb); in lapb_state3_machine()
312 lapb->state = LAPB_STATE_0; in lapb_state3_machine()
313 lapb_disconnect_indication(lapb, LAPB_OK); in lapb_state3_machine()
317 lapb_dbg(1, "(%p) S3 RX DM(%d)\n", lapb->dev, frame->pf); in lapb_state3_machine()
318 lapb_dbg(0, "(%p) S3 -> S0\n", lapb->dev); in lapb_state3_machine()
319 lapb_clear_queues(lapb); in lapb_state3_machine()
320 lapb->state = LAPB_STATE_0; in lapb_state3_machine()
321 lapb_start_t1timer(lapb); in lapb_state3_machine()
322 lapb_stop_t2timer(lapb); in lapb_state3_machine()
323 lapb_disconnect_indication(lapb, LAPB_NOTCONNECTED); in lapb_state3_machine()
328 lapb->dev, frame->pf, frame->nr); in lapb_state3_machine()
329 lapb->condition |= LAPB_PEER_RX_BUSY_CONDITION; in lapb_state3_machine()
330 lapb_check_need_response(lapb, frame->cr, frame->pf); in lapb_state3_machine()
331 if (lapb_validate_nr(lapb, frame->nr)) { in lapb_state3_machine()
332 lapb_check_iframes_acked(lapb, frame->nr); in lapb_state3_machine()
334 lapb->frmr_data = *frame; in lapb_state3_machine()
335 lapb->frmr_type = LAPB_FRMR_Z; in lapb_state3_machine()
336 lapb_transmit_frmr(lapb); in lapb_state3_machine()
337 lapb_dbg(0, "(%p) S3 -> S4\n", lapb->dev); in lapb_state3_machine()
338 lapb_start_t1timer(lapb); in lapb_state3_machine()
339 lapb_stop_t2timer(lapb); in lapb_state3_machine()
340 lapb->state = LAPB_STATE_4; in lapb_state3_machine()
341 lapb->n2count = 0; in lapb_state3_machine()
347 lapb->dev, frame->pf, frame->nr); in lapb_state3_machine()
348 lapb->condition &= ~LAPB_PEER_RX_BUSY_CONDITION; in lapb_state3_machine()
349 lapb_check_need_response(lapb, frame->cr, frame->pf); in lapb_state3_machine()
350 if (lapb_validate_nr(lapb, frame->nr)) { in lapb_state3_machine()
351 lapb_check_iframes_acked(lapb, frame->nr); in lapb_state3_machine()
353 lapb->frmr_data = *frame; in lapb_state3_machine()
354 lapb->frmr_type = LAPB_FRMR_Z; in lapb_state3_machine()
355 lapb_transmit_frmr(lapb); in lapb_state3_machine()
356 lapb_dbg(0, "(%p) S3 -> S4\n", lapb->dev); in lapb_state3_machine()
357 lapb_start_t1timer(lapb); in lapb_state3_machine()
358 lapb_stop_t2timer(lapb); in lapb_state3_machine()
359 lapb->state = LAPB_STATE_4; in lapb_state3_machine()
360 lapb->n2count = 0; in lapb_state3_machine()
366 lapb->dev, frame->pf, frame->nr); in lapb_state3_machine()
367 lapb->condition &= ~LAPB_PEER_RX_BUSY_CONDITION; in lapb_state3_machine()
368 lapb_check_need_response(lapb, frame->cr, frame->pf); in lapb_state3_machine()
369 if (lapb_validate_nr(lapb, frame->nr)) { in lapb_state3_machine()
370 lapb_frames_acked(lapb, frame->nr); in lapb_state3_machine()
371 lapb_stop_t1timer(lapb); in lapb_state3_machine()
372 lapb->n2count = 0; in lapb_state3_machine()
373 lapb_requeue_frames(lapb); in lapb_state3_machine()
375 lapb->frmr_data = *frame; in lapb_state3_machine()
376 lapb->frmr_type = LAPB_FRMR_Z; in lapb_state3_machine()
377 lapb_transmit_frmr(lapb); in lapb_state3_machine()
378 lapb_dbg(0, "(%p) S3 -> S4\n", lapb->dev); in lapb_state3_machine()
379 lapb_start_t1timer(lapb); in lapb_state3_machine()
380 lapb_stop_t2timer(lapb); in lapb_state3_machine()
381 lapb->state = LAPB_STATE_4; in lapb_state3_machine()
382 lapb->n2count = 0; in lapb_state3_machine()
388 lapb->dev, frame->pf, frame->ns, frame->nr); in lapb_state3_machine()
389 if (!lapb_validate_nr(lapb, frame->nr)) { in lapb_state3_machine()
390 lapb->frmr_data = *frame; in lapb_state3_machine()
391 lapb->frmr_type = LAPB_FRMR_Z; in lapb_state3_machine()
392 lapb_transmit_frmr(lapb); in lapb_state3_machine()
393 lapb_dbg(0, "(%p) S3 -> S4\n", lapb->dev); in lapb_state3_machine()
394 lapb_start_t1timer(lapb); in lapb_state3_machine()
395 lapb_stop_t2timer(lapb); in lapb_state3_machine()
396 lapb->state = LAPB_STATE_4; in lapb_state3_machine()
397 lapb->n2count = 0; in lapb_state3_machine()
400 if (lapb->condition & LAPB_PEER_RX_BUSY_CONDITION) in lapb_state3_machine()
401 lapb_frames_acked(lapb, frame->nr); in lapb_state3_machine()
403 lapb_check_iframes_acked(lapb, frame->nr); in lapb_state3_machine()
405 if (frame->ns == lapb->vr) { in lapb_state3_machine()
407 cn = lapb_data_indication(lapb, skb); in lapb_state3_machine()
420 lapb->vr = (lapb->vr + 1) % modulus; in lapb_state3_machine()
421 lapb->condition &= ~LAPB_REJECT_CONDITION; in lapb_state3_machine()
423 lapb_enquiry_response(lapb); in lapb_state3_machine()
425 if (!(lapb->condition & in lapb_state3_machine()
427 lapb->condition |= LAPB_ACK_PENDING_CONDITION; in lapb_state3_machine()
428 lapb_start_t2timer(lapb); in lapb_state3_machine()
432 if (lapb->condition & LAPB_REJECT_CONDITION) { in lapb_state3_machine()
434 lapb_enquiry_response(lapb); in lapb_state3_machine()
437 lapb->dev, frame->pf, lapb->vr); in lapb_state3_machine()
438 lapb->condition |= LAPB_REJECT_CONDITION; in lapb_state3_machine()
439 lapb_send_control(lapb, LAPB_REJ, frame->pf, in lapb_state3_machine()
441 lapb->condition &= ~LAPB_ACK_PENDING_CONDITION; in lapb_state3_machine()
448 lapb->dev, frame->pf, in lapb_state3_machine()
451 lapb_establish_data_link(lapb); in lapb_state3_machine()
452 lapb_dbg(0, "(%p) S3 -> S1\n", lapb->dev); in lapb_state3_machine()
453 lapb_requeue_frames(lapb); in lapb_state3_machine()
454 lapb->state = LAPB_STATE_1; in lapb_state3_machine()
458 lapb_dbg(1, "(%p) S3 RX ILLEGAL(%d)\n", lapb->dev, frame->pf); in lapb_state3_machine()
459 lapb->frmr_data = *frame; in lapb_state3_machine()
460 lapb->frmr_type = LAPB_FRMR_W; in lapb_state3_machine()
461 lapb_transmit_frmr(lapb); in lapb_state3_machine()
462 lapb_dbg(0, "(%p) S3 -> S4\n", lapb->dev); in lapb_state3_machine()
463 lapb_start_t1timer(lapb); in lapb_state3_machine()
464 lapb_stop_t2timer(lapb); in lapb_state3_machine()
465 lapb->state = LAPB_STATE_4; in lapb_state3_machine()
466 lapb->n2count = 0; in lapb_state3_machine()
478 static void lapb_state4_machine(struct lapb_cb *lapb, struct sk_buff *skb, in lapb_state4_machine() argument
483 lapb_dbg(1, "(%p) S4 RX SABM(%d)\n", lapb->dev, frame->pf); in lapb_state4_machine()
484 if (lapb->mode & LAPB_EXTENDED) { in lapb_state4_machine()
486 lapb->dev, frame->pf); in lapb_state4_machine()
487 lapb_send_control(lapb, LAPB_DM, frame->pf, in lapb_state4_machine()
491 lapb->dev, frame->pf); in lapb_state4_machine()
492 lapb_dbg(0, "(%p) S4 -> S3\n", lapb->dev); in lapb_state4_machine()
493 lapb_send_control(lapb, LAPB_UA, frame->pf, in lapb_state4_machine()
495 lapb_stop_t1timer(lapb); in lapb_state4_machine()
496 lapb_stop_t2timer(lapb); in lapb_state4_machine()
497 lapb->state = LAPB_STATE_3; in lapb_state4_machine()
498 lapb->condition = 0x00; in lapb_state4_machine()
499 lapb->n2count = 0; in lapb_state4_machine()
500 lapb->vs = 0; in lapb_state4_machine()
501 lapb->vr = 0; in lapb_state4_machine()
502 lapb->va = 0; in lapb_state4_machine()
503 lapb_connect_indication(lapb, LAPB_OK); in lapb_state4_machine()
508 lapb_dbg(1, "(%p) S4 RX SABME(%d)\n", lapb->dev, frame->pf); in lapb_state4_machine()
509 if (lapb->mode & LAPB_EXTENDED) { in lapb_state4_machine()
511 lapb->dev, frame->pf); in lapb_state4_machine()
512 lapb_dbg(0, "(%p) S4 -> S3\n", lapb->dev); in lapb_state4_machine()
513 lapb_send_control(lapb, LAPB_UA, frame->pf, in lapb_state4_machine()
515 lapb_stop_t1timer(lapb); in lapb_state4_machine()
516 lapb_stop_t2timer(lapb); in lapb_state4_machine()
517 lapb->state = LAPB_STATE_3; in lapb_state4_machine()
518 lapb->condition = 0x00; in lapb_state4_machine()
519 lapb->n2count = 0; in lapb_state4_machine()
520 lapb->vs = 0; in lapb_state4_machine()
521 lapb->vr = 0; in lapb_state4_machine()
522 lapb->va = 0; in lapb_state4_machine()
523 lapb_connect_indication(lapb, LAPB_OK); in lapb_state4_machine()
526 lapb->dev, frame->pf); in lapb_state4_machine()
527 lapb_send_control(lapb, LAPB_DM, frame->pf, in lapb_state4_machine()
539 void lapb_data_input(struct lapb_cb *lapb, struct sk_buff *skb) in lapb_data_input() argument
543 if (lapb_decode(lapb, skb, &frame) < 0) { in lapb_data_input()
548 switch (lapb->state) { in lapb_data_input()
550 lapb_state0_machine(lapb, skb, &frame); break; in lapb_data_input()
552 lapb_state1_machine(lapb, skb, &frame); break; in lapb_data_input()
554 lapb_state2_machine(lapb, skb, &frame); break; in lapb_data_input()
556 lapb_state3_machine(lapb, skb, &frame); break; in lapb_data_input()
558 lapb_state4_machine(lapb, skb, &frame); break; in lapb_data_input()
561 lapb_kick(lapb); in lapb_data_input()