Lines Matching refs:lapb

39 static void lapb_state0_machine(struct lapb_cb *lapb, struct sk_buff *skb,  in lapb_state0_machine()  argument
44 lapb_dbg(1, "(%p) S0 RX SABM(%d)\n", lapb->dev, frame->pf); in lapb_state0_machine()
45 if (lapb->mode & LAPB_EXTENDED) { in lapb_state0_machine()
47 lapb->dev, frame->pf); in lapb_state0_machine()
48 lapb_send_control(lapb, LAPB_DM, frame->pf, in lapb_state0_machine()
52 lapb->dev, frame->pf); in lapb_state0_machine()
53 lapb_dbg(0, "(%p) S0 -> S3\n", lapb->dev); in lapb_state0_machine()
54 lapb_send_control(lapb, LAPB_UA, frame->pf, in lapb_state0_machine()
56 lapb_stop_t1timer(lapb); in lapb_state0_machine()
57 lapb_stop_t2timer(lapb); in lapb_state0_machine()
58 lapb->state = LAPB_STATE_3; in lapb_state0_machine()
59 lapb->condition = 0x00; in lapb_state0_machine()
60 lapb->n2count = 0; in lapb_state0_machine()
61 lapb->vs = 0; in lapb_state0_machine()
62 lapb->vr = 0; in lapb_state0_machine()
63 lapb->va = 0; in lapb_state0_machine()
64 lapb_connect_indication(lapb, LAPB_OK); in lapb_state0_machine()
69 lapb_dbg(1, "(%p) S0 RX SABME(%d)\n", lapb->dev, frame->pf); in lapb_state0_machine()
70 if (lapb->mode & LAPB_EXTENDED) { in lapb_state0_machine()
72 lapb->dev, frame->pf); in lapb_state0_machine()
73 lapb_dbg(0, "(%p) S0 -> S3\n", lapb->dev); in lapb_state0_machine()
74 lapb_send_control(lapb, LAPB_UA, frame->pf, in lapb_state0_machine()
76 lapb_stop_t1timer(lapb); in lapb_state0_machine()
77 lapb_stop_t2timer(lapb); in lapb_state0_machine()
78 lapb->state = LAPB_STATE_3; in lapb_state0_machine()
79 lapb->condition = 0x00; in lapb_state0_machine()
80 lapb->n2count = 0; in lapb_state0_machine()
81 lapb->vs = 0; in lapb_state0_machine()
82 lapb->vr = 0; in lapb_state0_machine()
83 lapb->va = 0; in lapb_state0_machine()
84 lapb_connect_indication(lapb, LAPB_OK); in lapb_state0_machine()
87 lapb->dev, frame->pf); in lapb_state0_machine()
88 lapb_send_control(lapb, LAPB_DM, frame->pf, in lapb_state0_machine()
94 lapb_dbg(1, "(%p) S0 RX DISC(%d)\n", lapb->dev, frame->pf); in lapb_state0_machine()
95 lapb_dbg(1, "(%p) S0 TX UA(%d)\n", lapb->dev, frame->pf); in lapb_state0_machine()
96 lapb_send_control(lapb, LAPB_UA, frame->pf, LAPB_RESPONSE); in lapb_state0_machine()
110 static void lapb_state1_machine(struct lapb_cb *lapb, struct sk_buff *skb, in lapb_state1_machine() argument
115 lapb_dbg(1, "(%p) S1 RX SABM(%d)\n", lapb->dev, frame->pf); in lapb_state1_machine()
116 if (lapb->mode & LAPB_EXTENDED) { in lapb_state1_machine()
118 lapb->dev, frame->pf); in lapb_state1_machine()
119 lapb_send_control(lapb, LAPB_DM, frame->pf, in lapb_state1_machine()
123 lapb->dev, frame->pf); in lapb_state1_machine()
124 lapb_send_control(lapb, LAPB_UA, frame->pf, in lapb_state1_machine()
130 lapb_dbg(1, "(%p) S1 RX SABME(%d)\n", lapb->dev, frame->pf); in lapb_state1_machine()
131 if (lapb->mode & LAPB_EXTENDED) { in lapb_state1_machine()
133 lapb->dev, frame->pf); in lapb_state1_machine()
134 lapb_send_control(lapb, LAPB_UA, frame->pf, in lapb_state1_machine()
138 lapb->dev, frame->pf); in lapb_state1_machine()
139 lapb_send_control(lapb, LAPB_DM, frame->pf, in lapb_state1_machine()
145 lapb_dbg(1, "(%p) S1 RX DISC(%d)\n", lapb->dev, frame->pf); in lapb_state1_machine()
146 lapb_dbg(1, "(%p) S1 TX DM(%d)\n", lapb->dev, frame->pf); in lapb_state1_machine()
147 lapb_send_control(lapb, LAPB_DM, frame->pf, LAPB_RESPONSE); in lapb_state1_machine()
151 lapb_dbg(1, "(%p) S1 RX UA(%d)\n", lapb->dev, frame->pf); in lapb_state1_machine()
153 lapb_dbg(0, "(%p) S1 -> S3\n", lapb->dev); in lapb_state1_machine()
154 lapb_stop_t1timer(lapb); in lapb_state1_machine()
155 lapb_stop_t2timer(lapb); in lapb_state1_machine()
156 lapb->state = LAPB_STATE_3; in lapb_state1_machine()
157 lapb->condition = 0x00; in lapb_state1_machine()
158 lapb->n2count = 0; in lapb_state1_machine()
159 lapb->vs = 0; in lapb_state1_machine()
160 lapb->vr = 0; in lapb_state1_machine()
161 lapb->va = 0; in lapb_state1_machine()
162 lapb_connect_confirmation(lapb, LAPB_OK); in lapb_state1_machine()
167 lapb_dbg(1, "(%p) S1 RX DM(%d)\n", lapb->dev, frame->pf); in lapb_state1_machine()
169 lapb_dbg(0, "(%p) S1 -> S0\n", lapb->dev); in lapb_state1_machine()
170 lapb_clear_queues(lapb); in lapb_state1_machine()
171 lapb->state = LAPB_STATE_0; in lapb_state1_machine()
172 lapb_start_t1timer(lapb); in lapb_state1_machine()
173 lapb_stop_t2timer(lapb); in lapb_state1_machine()
174 lapb_disconnect_indication(lapb, LAPB_REFUSED); in lapb_state1_machine()
186 static void lapb_state2_machine(struct lapb_cb *lapb, struct sk_buff *skb, in lapb_state2_machine() argument
193 lapb->dev, frame->pf); in lapb_state2_machine()
194 lapb_dbg(1, "(%p) S2 TX DM(%d)\n", lapb->dev, frame->pf); in lapb_state2_machine()
195 lapb_send_control(lapb, LAPB_DM, frame->pf, LAPB_RESPONSE); in lapb_state2_machine()
199 lapb_dbg(1, "(%p) S2 RX DISC(%d)\n", lapb->dev, frame->pf); in lapb_state2_machine()
200 lapb_dbg(1, "(%p) S2 TX UA(%d)\n", lapb->dev, frame->pf); in lapb_state2_machine()
201 lapb_send_control(lapb, LAPB_UA, frame->pf, LAPB_RESPONSE); in lapb_state2_machine()
205 lapb_dbg(1, "(%p) S2 RX UA(%d)\n", lapb->dev, frame->pf); in lapb_state2_machine()
207 lapb_dbg(0, "(%p) S2 -> S0\n", lapb->dev); in lapb_state2_machine()
208 lapb->state = LAPB_STATE_0; in lapb_state2_machine()
209 lapb_start_t1timer(lapb); in lapb_state2_machine()
210 lapb_stop_t2timer(lapb); in lapb_state2_machine()
211 lapb_disconnect_confirmation(lapb, LAPB_OK); in lapb_state2_machine()
216 lapb_dbg(1, "(%p) S2 RX DM(%d)\n", lapb->dev, frame->pf); in lapb_state2_machine()
218 lapb_dbg(0, "(%p) S2 -> S0\n", lapb->dev); in lapb_state2_machine()
219 lapb->state = LAPB_STATE_0; in lapb_state2_machine()
220 lapb_start_t1timer(lapb); in lapb_state2_machine()
221 lapb_stop_t2timer(lapb); in lapb_state2_machine()
222 lapb_disconnect_confirmation(lapb, LAPB_NOTCONNECTED); in lapb_state2_machine()
231 lapb->dev, frame->pf); in lapb_state2_machine()
232 lapb_dbg(1, "(%p) S2 RX DM(%d)\n", lapb->dev, frame->pf); in lapb_state2_machine()
234 lapb_send_control(lapb, LAPB_DM, frame->pf, in lapb_state2_machine()
246 static void lapb_state3_machine(struct lapb_cb *lapb, struct sk_buff *skb, in lapb_state3_machine() argument
250 int modulus = (lapb->mode & LAPB_EXTENDED) ? LAPB_EMODULUS : in lapb_state3_machine()
255 lapb_dbg(1, "(%p) S3 RX SABM(%d)\n", lapb->dev, frame->pf); in lapb_state3_machine()
256 if (lapb->mode & LAPB_EXTENDED) { in lapb_state3_machine()
258 lapb->dev, frame->pf); in lapb_state3_machine()
259 lapb_send_control(lapb, LAPB_DM, frame->pf, in lapb_state3_machine()
263 lapb->dev, frame->pf); in lapb_state3_machine()
264 lapb_send_control(lapb, LAPB_UA, frame->pf, in lapb_state3_machine()
266 lapb_stop_t1timer(lapb); in lapb_state3_machine()
267 lapb_stop_t2timer(lapb); in lapb_state3_machine()
268 lapb->condition = 0x00; in lapb_state3_machine()
269 lapb->n2count = 0; in lapb_state3_machine()
270 lapb->vs = 0; in lapb_state3_machine()
271 lapb->vr = 0; in lapb_state3_machine()
272 lapb->va = 0; in lapb_state3_machine()
273 lapb_requeue_frames(lapb); in lapb_state3_machine()
278 lapb_dbg(1, "(%p) S3 RX SABME(%d)\n", lapb->dev, frame->pf); in lapb_state3_machine()
279 if (lapb->mode & LAPB_EXTENDED) { in lapb_state3_machine()
281 lapb->dev, frame->pf); in lapb_state3_machine()
282 lapb_send_control(lapb, LAPB_UA, frame->pf, in lapb_state3_machine()
284 lapb_stop_t1timer(lapb); in lapb_state3_machine()
285 lapb_stop_t2timer(lapb); in lapb_state3_machine()
286 lapb->condition = 0x00; in lapb_state3_machine()
287 lapb->n2count = 0; in lapb_state3_machine()
288 lapb->vs = 0; in lapb_state3_machine()
289 lapb->vr = 0; in lapb_state3_machine()
290 lapb->va = 0; in lapb_state3_machine()
291 lapb_requeue_frames(lapb); in lapb_state3_machine()
294 lapb->dev, frame->pf); in lapb_state3_machine()
295 lapb_send_control(lapb, LAPB_DM, frame->pf, in lapb_state3_machine()
301 lapb_dbg(1, "(%p) S3 RX DISC(%d)\n", lapb->dev, frame->pf); in lapb_state3_machine()
302 lapb_dbg(0, "(%p) S3 -> S0\n", lapb->dev); in lapb_state3_machine()
303 lapb_clear_queues(lapb); in lapb_state3_machine()
304 lapb_send_control(lapb, LAPB_UA, frame->pf, LAPB_RESPONSE); in lapb_state3_machine()
305 lapb_start_t1timer(lapb); in lapb_state3_machine()
306 lapb_stop_t2timer(lapb); in lapb_state3_machine()
307 lapb->state = LAPB_STATE_0; in lapb_state3_machine()
308 lapb_disconnect_indication(lapb, LAPB_OK); in lapb_state3_machine()
312 lapb_dbg(1, "(%p) S3 RX DM(%d)\n", lapb->dev, frame->pf); in lapb_state3_machine()
313 lapb_dbg(0, "(%p) S3 -> S0\n", lapb->dev); in lapb_state3_machine()
314 lapb_clear_queues(lapb); in lapb_state3_machine()
315 lapb->state = LAPB_STATE_0; in lapb_state3_machine()
316 lapb_start_t1timer(lapb); in lapb_state3_machine()
317 lapb_stop_t2timer(lapb); in lapb_state3_machine()
318 lapb_disconnect_indication(lapb, LAPB_NOTCONNECTED); in lapb_state3_machine()
323 lapb->dev, frame->pf, frame->nr); in lapb_state3_machine()
324 lapb->condition |= LAPB_PEER_RX_BUSY_CONDITION; in lapb_state3_machine()
325 lapb_check_need_response(lapb, frame->cr, frame->pf); in lapb_state3_machine()
326 if (lapb_validate_nr(lapb, frame->nr)) { in lapb_state3_machine()
327 lapb_check_iframes_acked(lapb, frame->nr); in lapb_state3_machine()
329 lapb->frmr_data = *frame; in lapb_state3_machine()
330 lapb->frmr_type = LAPB_FRMR_Z; in lapb_state3_machine()
331 lapb_transmit_frmr(lapb); in lapb_state3_machine()
332 lapb_dbg(0, "(%p) S3 -> S4\n", lapb->dev); in lapb_state3_machine()
333 lapb_start_t1timer(lapb); in lapb_state3_machine()
334 lapb_stop_t2timer(lapb); in lapb_state3_machine()
335 lapb->state = LAPB_STATE_4; in lapb_state3_machine()
336 lapb->n2count = 0; in lapb_state3_machine()
342 lapb->dev, frame->pf, frame->nr); in lapb_state3_machine()
343 lapb->condition &= ~LAPB_PEER_RX_BUSY_CONDITION; in lapb_state3_machine()
344 lapb_check_need_response(lapb, frame->cr, frame->pf); in lapb_state3_machine()
345 if (lapb_validate_nr(lapb, frame->nr)) { in lapb_state3_machine()
346 lapb_check_iframes_acked(lapb, frame->nr); in lapb_state3_machine()
348 lapb->frmr_data = *frame; in lapb_state3_machine()
349 lapb->frmr_type = LAPB_FRMR_Z; in lapb_state3_machine()
350 lapb_transmit_frmr(lapb); in lapb_state3_machine()
351 lapb_dbg(0, "(%p) S3 -> S4\n", lapb->dev); in lapb_state3_machine()
352 lapb_start_t1timer(lapb); in lapb_state3_machine()
353 lapb_stop_t2timer(lapb); in lapb_state3_machine()
354 lapb->state = LAPB_STATE_4; in lapb_state3_machine()
355 lapb->n2count = 0; in lapb_state3_machine()
361 lapb->dev, frame->pf, frame->nr); in lapb_state3_machine()
362 lapb->condition &= ~LAPB_PEER_RX_BUSY_CONDITION; in lapb_state3_machine()
363 lapb_check_need_response(lapb, frame->cr, frame->pf); in lapb_state3_machine()
364 if (lapb_validate_nr(lapb, frame->nr)) { in lapb_state3_machine()
365 lapb_frames_acked(lapb, frame->nr); in lapb_state3_machine()
366 lapb_stop_t1timer(lapb); in lapb_state3_machine()
367 lapb->n2count = 0; in lapb_state3_machine()
368 lapb_requeue_frames(lapb); in lapb_state3_machine()
370 lapb->frmr_data = *frame; in lapb_state3_machine()
371 lapb->frmr_type = LAPB_FRMR_Z; in lapb_state3_machine()
372 lapb_transmit_frmr(lapb); in lapb_state3_machine()
373 lapb_dbg(0, "(%p) S3 -> S4\n", lapb->dev); in lapb_state3_machine()
374 lapb_start_t1timer(lapb); in lapb_state3_machine()
375 lapb_stop_t2timer(lapb); in lapb_state3_machine()
376 lapb->state = LAPB_STATE_4; in lapb_state3_machine()
377 lapb->n2count = 0; in lapb_state3_machine()
383 lapb->dev, frame->pf, frame->ns, frame->nr); in lapb_state3_machine()
384 if (!lapb_validate_nr(lapb, frame->nr)) { in lapb_state3_machine()
385 lapb->frmr_data = *frame; in lapb_state3_machine()
386 lapb->frmr_type = LAPB_FRMR_Z; in lapb_state3_machine()
387 lapb_transmit_frmr(lapb); in lapb_state3_machine()
388 lapb_dbg(0, "(%p) S3 -> S4\n", lapb->dev); in lapb_state3_machine()
389 lapb_start_t1timer(lapb); in lapb_state3_machine()
390 lapb_stop_t2timer(lapb); in lapb_state3_machine()
391 lapb->state = LAPB_STATE_4; in lapb_state3_machine()
392 lapb->n2count = 0; in lapb_state3_machine()
395 if (lapb->condition & LAPB_PEER_RX_BUSY_CONDITION) in lapb_state3_machine()
396 lapb_frames_acked(lapb, frame->nr); in lapb_state3_machine()
398 lapb_check_iframes_acked(lapb, frame->nr); in lapb_state3_machine()
400 if (frame->ns == lapb->vr) { in lapb_state3_machine()
402 cn = lapb_data_indication(lapb, skb); in lapb_state3_machine()
415 lapb->vr = (lapb->vr + 1) % modulus; in lapb_state3_machine()
416 lapb->condition &= ~LAPB_REJECT_CONDITION; in lapb_state3_machine()
418 lapb_enquiry_response(lapb); in lapb_state3_machine()
420 if (!(lapb->condition & in lapb_state3_machine()
422 lapb->condition |= LAPB_ACK_PENDING_CONDITION; in lapb_state3_machine()
423 lapb_start_t2timer(lapb); in lapb_state3_machine()
427 if (lapb->condition & LAPB_REJECT_CONDITION) { in lapb_state3_machine()
429 lapb_enquiry_response(lapb); in lapb_state3_machine()
432 lapb->dev, frame->pf, lapb->vr); in lapb_state3_machine()
433 lapb->condition |= LAPB_REJECT_CONDITION; in lapb_state3_machine()
434 lapb_send_control(lapb, LAPB_REJ, frame->pf, in lapb_state3_machine()
436 lapb->condition &= ~LAPB_ACK_PENDING_CONDITION; in lapb_state3_machine()
443 lapb->dev, frame->pf, in lapb_state3_machine()
445 lapb_establish_data_link(lapb); in lapb_state3_machine()
446 lapb_dbg(0, "(%p) S3 -> S1\n", lapb->dev); in lapb_state3_machine()
447 lapb_requeue_frames(lapb); in lapb_state3_machine()
448 lapb->state = LAPB_STATE_1; in lapb_state3_machine()
452 lapb_dbg(1, "(%p) S3 RX ILLEGAL(%d)\n", lapb->dev, frame->pf); in lapb_state3_machine()
453 lapb->frmr_data = *frame; in lapb_state3_machine()
454 lapb->frmr_type = LAPB_FRMR_W; in lapb_state3_machine()
455 lapb_transmit_frmr(lapb); in lapb_state3_machine()
456 lapb_dbg(0, "(%p) S3 -> S4\n", lapb->dev); in lapb_state3_machine()
457 lapb_start_t1timer(lapb); in lapb_state3_machine()
458 lapb_stop_t2timer(lapb); in lapb_state3_machine()
459 lapb->state = LAPB_STATE_4; in lapb_state3_machine()
460 lapb->n2count = 0; in lapb_state3_machine()
472 static void lapb_state4_machine(struct lapb_cb *lapb, struct sk_buff *skb, in lapb_state4_machine() argument
477 lapb_dbg(1, "(%p) S4 RX SABM(%d)\n", lapb->dev, frame->pf); in lapb_state4_machine()
478 if (lapb->mode & LAPB_EXTENDED) { in lapb_state4_machine()
480 lapb->dev, frame->pf); in lapb_state4_machine()
481 lapb_send_control(lapb, LAPB_DM, frame->pf, in lapb_state4_machine()
485 lapb->dev, frame->pf); in lapb_state4_machine()
486 lapb_dbg(0, "(%p) S4 -> S3\n", lapb->dev); in lapb_state4_machine()
487 lapb_send_control(lapb, LAPB_UA, frame->pf, in lapb_state4_machine()
489 lapb_stop_t1timer(lapb); in lapb_state4_machine()
490 lapb_stop_t2timer(lapb); in lapb_state4_machine()
491 lapb->state = LAPB_STATE_3; in lapb_state4_machine()
492 lapb->condition = 0x00; in lapb_state4_machine()
493 lapb->n2count = 0; in lapb_state4_machine()
494 lapb->vs = 0; in lapb_state4_machine()
495 lapb->vr = 0; in lapb_state4_machine()
496 lapb->va = 0; in lapb_state4_machine()
497 lapb_connect_indication(lapb, LAPB_OK); in lapb_state4_machine()
502 lapb_dbg(1, "(%p) S4 RX SABME(%d)\n", lapb->dev, frame->pf); in lapb_state4_machine()
503 if (lapb->mode & LAPB_EXTENDED) { in lapb_state4_machine()
505 lapb->dev, frame->pf); in lapb_state4_machine()
506 lapb_dbg(0, "(%p) S4 -> S3\n", lapb->dev); in lapb_state4_machine()
507 lapb_send_control(lapb, LAPB_UA, frame->pf, in lapb_state4_machine()
509 lapb_stop_t1timer(lapb); in lapb_state4_machine()
510 lapb_stop_t2timer(lapb); in lapb_state4_machine()
511 lapb->state = LAPB_STATE_3; in lapb_state4_machine()
512 lapb->condition = 0x00; in lapb_state4_machine()
513 lapb->n2count = 0; in lapb_state4_machine()
514 lapb->vs = 0; in lapb_state4_machine()
515 lapb->vr = 0; in lapb_state4_machine()
516 lapb->va = 0; in lapb_state4_machine()
517 lapb_connect_indication(lapb, LAPB_OK); in lapb_state4_machine()
520 lapb->dev, frame->pf); in lapb_state4_machine()
521 lapb_send_control(lapb, LAPB_DM, frame->pf, in lapb_state4_machine()
533 void lapb_data_input(struct lapb_cb *lapb, struct sk_buff *skb) in lapb_data_input() argument
537 if (lapb_decode(lapb, skb, &frame) < 0) { in lapb_data_input()
542 switch (lapb->state) { in lapb_data_input()
544 lapb_state0_machine(lapb, skb, &frame); break; in lapb_data_input()
546 lapb_state1_machine(lapb, skb, &frame); break; in lapb_data_input()
548 lapb_state2_machine(lapb, skb, &frame); break; in lapb_data_input()
550 lapb_state3_machine(lapb, skb, &frame); break; in lapb_data_input()
552 lapb_state4_machine(lapb, skb, &frame); break; in lapb_data_input()
555 lapb_kick(lapb); in lapb_data_input()