Lines Matching +full:p +full:- +full:state

1 // SPDX-License-Identifier: GPL-2.0-or-later
10 * 2000-10-29 Henner Eisen lapb_data_indication() return status.
36 * State machine for state 0, Disconnected State.
42 switch (frame->type) { in lapb_state0_machine()
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()
46 lapb_dbg(1, "(%p) S0 TX DM(%d)\n", 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()
51 lapb_dbg(1, "(%p) S0 TX UA(%d)\n", 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()
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()
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()
71 lapb_dbg(1, "(%p) S0 TX UA(%d)\n", 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()
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()
86 lapb_dbg(1, "(%p) S0 TX DM(%d)\n", 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()
107 * State machine for state 1, Awaiting Connection State.
113 switch (frame->type) { in lapb_state1_machine()
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()
117 lapb_dbg(1, "(%p) S1 TX DM(%d)\n", 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()
122 lapb_dbg(1, "(%p) S1 TX UA(%d)\n", 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()
132 lapb_dbg(1, "(%p) S1 TX UA(%d)\n", 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()
137 lapb_dbg(1, "(%p) S1 TX DM(%d)\n", 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()
152 if (frame->pf) { in lapb_state1_machine()
153 lapb_dbg(0, "(%p) S1 -> S3\n", lapb->dev); 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()
167 lapb_dbg(1, "(%p) S1 RX DM(%d)\n", lapb->dev, frame->pf); in lapb_state1_machine()
168 if (frame->pf) { in lapb_state1_machine()
169 lapb_dbg(0, "(%p) S1 -> S0\n", lapb->dev); in lapb_state1_machine()
171 lapb->state = LAPB_STATE_0; in lapb_state1_machine()
183 * State machine for state 2, Awaiting Release State.
189 switch (frame->type) { in lapb_state2_machine()
192 lapb_dbg(1, "(%p) S2 RX {SABM,SABME}(%d)\n", in lapb_state2_machine()
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()
206 if (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()
216 lapb_dbg(1, "(%p) S2 RX DM(%d)\n", lapb->dev, frame->pf); in lapb_state2_machine()
217 if (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()
230 lapb_dbg(1, "(%p) S2 RX {I,REJ,RNR,RR}(%d)\n", 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()
233 if (frame->pf) in lapb_state2_machine()
234 lapb_send_control(lapb, LAPB_DM, frame->pf, in lapb_state2_machine()
243 * State machine for state 3, Connected State.
250 int modulus = (lapb->mode & LAPB_EXTENDED) ? LAPB_EMODULUS : in lapb_state3_machine()
253 switch (frame->type) { 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()
257 lapb_dbg(1, "(%p) S3 TX DM(%d)\n", 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()
262 lapb_dbg(1, "(%p) S3 TX UA(%d)\n", 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()
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()
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()
280 lapb_dbg(1, "(%p) S3 TX UA(%d)\n", 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()
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()
293 lapb_dbg(1, "(%p) S3 TX DM(%d)\n", 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()
304 lapb_send_control(lapb, LAPB_UA, frame->pf, LAPB_RESPONSE); in lapb_state3_machine()
307 lapb->state = LAPB_STATE_0; 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()
315 lapb->state = LAPB_STATE_0; in lapb_state3_machine()
322 lapb_dbg(1, "(%p) S3 RX RNR(%d) R%d\n", 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()
332 lapb_dbg(0, "(%p) S3 -> S4\n", lapb->dev); in lapb_state3_machine()
335 lapb->state = LAPB_STATE_4; in lapb_state3_machine()
336 lapb->n2count = 0; in lapb_state3_machine()
341 lapb_dbg(1, "(%p) S3 RX RR(%d) R%d\n", 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()
351 lapb_dbg(0, "(%p) S3 -> S4\n", lapb->dev); in lapb_state3_machine()
354 lapb->state = LAPB_STATE_4; in lapb_state3_machine()
355 lapb->n2count = 0; in lapb_state3_machine()
360 lapb_dbg(1, "(%p) S3 RX REJ(%d) R%d\n", 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()
367 lapb->n2count = 0; in lapb_state3_machine()
370 lapb->frmr_data = *frame; in lapb_state3_machine()
371 lapb->frmr_type = LAPB_FRMR_Z; in lapb_state3_machine()
373 lapb_dbg(0, "(%p) S3 -> S4\n", lapb->dev); in lapb_state3_machine()
376 lapb->state = LAPB_STATE_4; in lapb_state3_machine()
377 lapb->n2count = 0; in lapb_state3_machine()
382 lapb_dbg(1, "(%p) S3 RX I(%d) S%d R%d\n", 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()
388 lapb_dbg(0, "(%p) S3 -> S4\n", lapb->dev); 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()
408 * to re-transmit the frame later like 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()
417 if (frame->pf) in lapb_state3_machine()
420 if (!(lapb->condition & in lapb_state3_machine()
422 lapb->condition |= LAPB_ACK_PENDING_CONDITION; in lapb_state3_machine()
427 if (lapb->condition & LAPB_REJECT_CONDITION) { in lapb_state3_machine()
428 if (frame->pf) in lapb_state3_machine()
431 lapb_dbg(1, "(%p) S3 TX REJ(%d) R%d\n", 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()
442 lapb_dbg(1, "(%p) S3 RX FRMR(%d) %5ph\n", in lapb_state3_machine()
443 lapb->dev, frame->pf, in lapb_state3_machine()
444 skb->data); in lapb_state3_machine()
446 lapb_dbg(0, "(%p) S3 -> S1\n", lapb->dev); 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()
456 lapb_dbg(0, "(%p) S3 -> S4\n", lapb->dev); in lapb_state3_machine()
459 lapb->state = LAPB_STATE_4; in lapb_state3_machine()
460 lapb->n2count = 0; in lapb_state3_machine()
469 * State machine for state 4, Frame Reject State.
475 switch (frame->type) { in lapb_state4_machine()
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()
479 lapb_dbg(1, "(%p) S4 TX DM(%d)\n", 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()
484 lapb_dbg(1, "(%p) S4 TX UA(%d)\n", 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()
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()
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()
504 lapb_dbg(1, "(%p) S4 TX UA(%d)\n", 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()
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()
519 lapb_dbg(1, "(%p) S4 TX DM(%d)\n", 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()
542 switch (lapb->state) { in lapb_data_input()