1 // SPDX-License-Identifier: GPL-2.0 2 /* 3 * llc_c_st.c - This module contains state transition of connection component. 4 * 5 * Description of event functions and actions there is in 802.2 LLC standard, 6 * or in "llc_c_ac.c" and "llc_c_ev.c" modules. 7 * 8 * Copyright (c) 1997 by Procom Technology, Inc. 9 * 2001-2003 by Arnaldo Carvalho de Melo <acme@conectiva.com.br> 10 */ 11 #include <linux/types.h> 12 #include <net/llc_if.h> 13 #include <net/llc_sap.h> 14 #include <net/llc_c_ev.h> 15 #include <net/llc_c_ac.h> 16 #include <net/llc_c_st.h> 17 18 #define NONE NULL 19 20 /* COMMON CONNECTION STATE transitions 21 * Common transitions for 22 * LLC_CONN_STATE_NORMAL, 23 * LLC_CONN_STATE_BUSY, 24 * LLC_CONN_STATE_REJ, 25 * LLC_CONN_STATE_AWAIT, 26 * LLC_CONN_STATE_AWAIT_BUSY and 27 * LLC_CONN_STATE_AWAIT_REJ states 28 */ 29 /* State transitions for LLC_CONN_EV_DISC_REQ event */ 30 static const llc_conn_action_t llc_common_actions_1[] = { 31 [0] = llc_conn_ac_send_disc_cmd_p_set_x, 32 [1] = llc_conn_ac_start_ack_timer, 33 [2] = llc_conn_ac_stop_other_timers, 34 [3] = llc_conn_ac_set_retry_cnt_0, 35 [4] = llc_conn_ac_set_cause_flag_1, 36 [5] = NULL, 37 }; 38 39 static const struct llc_conn_state_trans llc_common_state_trans_1 = { 40 .ev = llc_conn_ev_disc_req, 41 .next_state = LLC_CONN_STATE_D_CONN, 42 .ev_qualifiers = NONE, 43 .ev_actions = llc_common_actions_1, 44 }; 45 46 /* State transitions for LLC_CONN_EV_RESET_REQ event */ 47 static const llc_conn_action_t llc_common_actions_2[] = { 48 [0] = llc_conn_ac_send_sabme_cmd_p_set_x, 49 [1] = llc_conn_ac_start_ack_timer, 50 [2] = llc_conn_ac_stop_other_timers, 51 [3] = llc_conn_ac_set_retry_cnt_0, 52 [4] = llc_conn_ac_set_cause_flag_1, 53 [5] = NULL, 54 }; 55 56 static const struct llc_conn_state_trans llc_common_state_trans_2 = { 57 .ev = llc_conn_ev_rst_req, 58 .next_state = LLC_CONN_STATE_RESET, 59 .ev_qualifiers = NONE, 60 .ev_actions = llc_common_actions_2, 61 }; 62 63 /* State transitions for LLC_CONN_EV_RX_SABME_CMD_Pbit_SET_X event */ 64 static const llc_conn_action_t llc_common_actions_3[] = { 65 [0] = llc_conn_ac_stop_all_timers, 66 [1] = llc_conn_ac_set_vs_0, 67 [2] = llc_conn_ac_set_vr_0, 68 [3] = llc_conn_ac_send_ua_rsp_f_set_p, 69 [4] = llc_conn_ac_rst_ind, 70 [5] = llc_conn_ac_set_p_flag_0, 71 [6] = llc_conn_ac_set_remote_busy_0, 72 [7] = llc_conn_reset, 73 [8] = NULL, 74 }; 75 76 static const struct llc_conn_state_trans llc_common_state_trans_3 = { 77 .ev = llc_conn_ev_rx_sabme_cmd_pbit_set_x, 78 .next_state = LLC_CONN_STATE_NORMAL, 79 .ev_qualifiers = NONE, 80 .ev_actions = llc_common_actions_3, 81 }; 82 83 /* State transitions for LLC_CONN_EV_RX_DISC_CMD_Pbit_SET_X event */ 84 static const llc_conn_action_t llc_common_actions_4[] = { 85 [0] = llc_conn_ac_stop_all_timers, 86 [1] = llc_conn_ac_send_ua_rsp_f_set_p, 87 [2] = llc_conn_ac_disc_ind, 88 [3] = llc_conn_disc, 89 [4] = NULL, 90 }; 91 92 static const struct llc_conn_state_trans llc_common_state_trans_4 = { 93 .ev = llc_conn_ev_rx_disc_cmd_pbit_set_x, 94 .next_state = LLC_CONN_STATE_ADM, 95 .ev_qualifiers = NONE, 96 .ev_actions = llc_common_actions_4, 97 }; 98 99 /* State transitions for LLC_CONN_EV_RX_FRMR_RSP_Fbit_SET_X event */ 100 static const llc_conn_action_t llc_common_actions_5[] = { 101 [0] = llc_conn_ac_send_sabme_cmd_p_set_x, 102 [1] = llc_conn_ac_start_ack_timer, 103 [2] = llc_conn_ac_stop_other_timers, 104 [3] = llc_conn_ac_set_retry_cnt_0, 105 [4] = llc_conn_ac_rst_ind, 106 [5] = llc_conn_ac_set_cause_flag_0, 107 [6] = llc_conn_reset, 108 [7] = NULL, 109 }; 110 111 static const struct llc_conn_state_trans llc_common_state_trans_5 = { 112 .ev = llc_conn_ev_rx_frmr_rsp_fbit_set_x, 113 .next_state = LLC_CONN_STATE_RESET, 114 .ev_qualifiers = NONE, 115 .ev_actions = llc_common_actions_5, 116 }; 117 118 /* State transitions for LLC_CONN_EV_RX_DM_RSP_Fbit_SET_X event */ 119 static const llc_conn_action_t llc_common_actions_6[] = { 120 [0] = llc_conn_ac_disc_ind, 121 [1] = llc_conn_ac_stop_all_timers, 122 [2] = llc_conn_disc, 123 [3] = NULL, 124 }; 125 126 static const struct llc_conn_state_trans llc_common_state_trans_6 = { 127 .ev = llc_conn_ev_rx_dm_rsp_fbit_set_x, 128 .next_state = LLC_CONN_STATE_ADM, 129 .ev_qualifiers = NONE, 130 .ev_actions = llc_common_actions_6, 131 }; 132 133 /* State transitions for LLC_CONN_EV_RX_ZZZ_CMD_Pbit_SET_X_INVAL_Nr event */ 134 static const llc_conn_action_t llc_common_actions_7a[] = { 135 [0] = llc_conn_ac_send_frmr_rsp_f_set_x, 136 [1] = llc_conn_ac_start_ack_timer, 137 [2] = llc_conn_ac_stop_other_timers, 138 [3] = llc_conn_ac_set_retry_cnt_0, 139 [4] = NULL, 140 }; 141 142 static const struct llc_conn_state_trans llc_common_state_trans_7a = { 143 .ev = llc_conn_ev_rx_zzz_cmd_pbit_set_x_inval_nr, 144 .next_state = LLC_CONN_STATE_ERROR, 145 .ev_qualifiers = NONE, 146 .ev_actions = llc_common_actions_7a, 147 }; 148 149 /* State transitions for LLC_CONN_EV_RX_I_CMD_Pbit_SET_X_INVAL_Ns event */ 150 static const llc_conn_action_t llc_common_actions_7b[] = { 151 [0] = llc_conn_ac_send_frmr_rsp_f_set_x, 152 [1] = llc_conn_ac_start_ack_timer, 153 [2] = llc_conn_ac_stop_other_timers, 154 [3] = llc_conn_ac_set_retry_cnt_0, 155 [4] = NULL, 156 }; 157 158 static const struct llc_conn_state_trans llc_common_state_trans_7b = { 159 .ev = llc_conn_ev_rx_i_cmd_pbit_set_x_inval_ns, 160 .next_state = LLC_CONN_STATE_ERROR, 161 .ev_qualifiers = NONE, 162 .ev_actions = llc_common_actions_7b, 163 }; 164 165 /* State transitions for LLC_CONN_EV_RX_ZZZ_RSP_Fbit_SET_X_INVAL_Nr event */ 166 static const llc_conn_action_t llc_common_actions_8a[] = { 167 [0] = llc_conn_ac_send_frmr_rsp_f_set_x, 168 [1] = llc_conn_ac_start_ack_timer, 169 [2] = llc_conn_ac_stop_other_timers, 170 [3] = llc_conn_ac_set_retry_cnt_0, 171 [4] = NULL, 172 }; 173 174 static const struct llc_conn_state_trans llc_common_state_trans_8a = { 175 .ev = llc_conn_ev_rx_zzz_rsp_fbit_set_x_inval_nr, 176 .next_state = LLC_CONN_STATE_ERROR, 177 .ev_qualifiers = NONE, 178 .ev_actions = llc_common_actions_8a, 179 }; 180 181 /* State transitions for LLC_CONN_EV_RX_I_RSP_Fbit_SET_X_INVAL_Ns event */ 182 static const llc_conn_action_t llc_common_actions_8b[] = { 183 [0] = llc_conn_ac_send_frmr_rsp_f_set_x, 184 [1] = llc_conn_ac_start_ack_timer, 185 [2] = llc_conn_ac_stop_other_timers, 186 [3] = llc_conn_ac_set_retry_cnt_0, 187 [4] = NULL, 188 }; 189 190 static const struct llc_conn_state_trans llc_common_state_trans_8b = { 191 .ev = llc_conn_ev_rx_i_rsp_fbit_set_x_inval_ns, 192 .next_state = LLC_CONN_STATE_ERROR, 193 .ev_qualifiers = NONE, 194 .ev_actions = llc_common_actions_8b, 195 }; 196 197 /* State transitions for LLC_CONN_EV_RX_BAD_PDU event */ 198 static const llc_conn_action_t llc_common_actions_8c[] = { 199 [0] = llc_conn_ac_send_frmr_rsp_f_set_x, 200 [1] = llc_conn_ac_start_ack_timer, 201 [2] = llc_conn_ac_stop_other_timers, 202 [3] = llc_conn_ac_set_retry_cnt_0, 203 [4] = NULL, 204 }; 205 206 static const struct llc_conn_state_trans llc_common_state_trans_8c = { 207 .ev = llc_conn_ev_rx_bad_pdu, 208 .next_state = LLC_CONN_STATE_ERROR, 209 .ev_qualifiers = NONE, 210 .ev_actions = llc_common_actions_8c, 211 }; 212 213 /* State transitions for LLC_CONN_EV_RX_UA_RSP_Fbit_SET_X event */ 214 static const llc_conn_action_t llc_common_actions_9[] = { 215 [0] = llc_conn_ac_send_frmr_rsp_f_set_x, 216 [1] = llc_conn_ac_start_ack_timer, 217 [2] = llc_conn_ac_stop_other_timers, 218 [3] = llc_conn_ac_set_retry_cnt_0, 219 [4] = NULL, 220 }; 221 222 static const struct llc_conn_state_trans llc_common_state_trans_9 = { 223 .ev = llc_conn_ev_rx_ua_rsp_fbit_set_x, 224 .next_state = LLC_CONN_STATE_ERROR, 225 .ev_qualifiers = NONE, 226 .ev_actions = llc_common_actions_9, 227 }; 228 229 /* State transitions for LLC_CONN_EV_RX_XXX_RSP_Fbit_SET_1 event */ 230 #if 0 231 static const llc_conn_ev_qfyr_t llc_common_ev_qfyrs_10[] = { 232 [0] = llc_conn_ev_qlfy_p_flag_eq_0, 233 [1] = NULL, 234 }; 235 236 static const llc_conn_action_t llc_common_actions_10[] = { 237 [0] = llc_conn_ac_send_frmr_rsp_f_set_x, 238 [1] = llc_conn_ac_start_ack_timer, 239 [2] = llc_conn_ac_stop_other_timers, 240 [3] = llc_conn_ac_set_retry_cnt_0, 241 [4] = NULL, 242 }; 243 244 static const struct llc_conn_state_trans llc_common_state_trans_10 = { 245 .ev = llc_conn_ev_rx_xxx_rsp_fbit_set_1, 246 .next_state = LLC_CONN_STATE_ERROR, 247 .ev_qualifiers = llc_common_ev_qfyrs_10, 248 .ev_actions = llc_common_actions_10, 249 }; 250 #endif 251 252 /* State transitions for LLC_CONN_EV_P_TMR_EXP event */ 253 static const llc_conn_ev_qfyr_t llc_common_ev_qfyrs_11a[] = { 254 [0] = llc_conn_ev_qlfy_retry_cnt_gte_n2, 255 [1] = NULL, 256 }; 257 258 static const llc_conn_action_t llc_common_actions_11a[] = { 259 [0] = llc_conn_ac_send_sabme_cmd_p_set_x, 260 [1] = llc_conn_ac_start_ack_timer, 261 [2] = llc_conn_ac_stop_other_timers, 262 [3] = llc_conn_ac_set_retry_cnt_0, 263 [4] = llc_conn_ac_set_cause_flag_0, 264 [5] = NULL, 265 }; 266 267 static const struct llc_conn_state_trans llc_common_state_trans_11a = { 268 .ev = llc_conn_ev_p_tmr_exp, 269 .next_state = LLC_CONN_STATE_RESET, 270 .ev_qualifiers = llc_common_ev_qfyrs_11a, 271 .ev_actions = llc_common_actions_11a, 272 }; 273 274 /* State transitions for LLC_CONN_EV_ACK_TMR_EXP event */ 275 static const llc_conn_ev_qfyr_t llc_common_ev_qfyrs_11b[] = { 276 [0] = llc_conn_ev_qlfy_retry_cnt_gte_n2, 277 [1] = NULL, 278 }; 279 280 static const llc_conn_action_t llc_common_actions_11b[] = { 281 [0] = llc_conn_ac_send_sabme_cmd_p_set_x, 282 [1] = llc_conn_ac_start_ack_timer, 283 [2] = llc_conn_ac_stop_other_timers, 284 [3] = llc_conn_ac_set_retry_cnt_0, 285 [4] = llc_conn_ac_set_cause_flag_0, 286 [5] = NULL, 287 }; 288 289 static const struct llc_conn_state_trans llc_common_state_trans_11b = { 290 .ev = llc_conn_ev_ack_tmr_exp, 291 .next_state = LLC_CONN_STATE_RESET, 292 .ev_qualifiers = llc_common_ev_qfyrs_11b, 293 .ev_actions = llc_common_actions_11b, 294 }; 295 296 /* State transitions for LLC_CONN_EV_REJ_TMR_EXP event */ 297 static const llc_conn_ev_qfyr_t llc_common_ev_qfyrs_11c[] = { 298 [0] = llc_conn_ev_qlfy_retry_cnt_gte_n2, 299 [1] = NULL, 300 }; 301 302 static const llc_conn_action_t llc_common_actions_11c[] = { 303 [0] = llc_conn_ac_send_sabme_cmd_p_set_x, 304 [1] = llc_conn_ac_start_ack_timer, 305 [2] = llc_conn_ac_stop_other_timers, 306 [3] = llc_conn_ac_set_retry_cnt_0, 307 [4] = llc_conn_ac_set_cause_flag_0, 308 [5] = NULL, 309 }; 310 311 static const struct llc_conn_state_trans llc_common_state_trans_11c = { 312 .ev = llc_conn_ev_rej_tmr_exp, 313 .next_state = LLC_CONN_STATE_RESET, 314 .ev_qualifiers = llc_common_ev_qfyrs_11c, 315 .ev_actions = llc_common_actions_11c, 316 }; 317 318 /* State transitions for LLC_CONN_EV_BUSY_TMR_EXP event */ 319 static const llc_conn_ev_qfyr_t llc_common_ev_qfyrs_11d[] = { 320 [0] = llc_conn_ev_qlfy_retry_cnt_gte_n2, 321 [1] = NULL, 322 }; 323 324 static const llc_conn_action_t llc_common_actions_11d[] = { 325 [0] = llc_conn_ac_send_sabme_cmd_p_set_x, 326 [1] = llc_conn_ac_start_ack_timer, 327 [2] = llc_conn_ac_stop_other_timers, 328 [3] = llc_conn_ac_set_retry_cnt_0, 329 [4] = llc_conn_ac_set_cause_flag_0, 330 [5] = NULL, 331 }; 332 333 static const struct llc_conn_state_trans llc_common_state_trans_11d = { 334 .ev = llc_conn_ev_busy_tmr_exp, 335 .next_state = LLC_CONN_STATE_RESET, 336 .ev_qualifiers = llc_common_ev_qfyrs_11d, 337 .ev_actions = llc_common_actions_11d, 338 }; 339 340 /* 341 * Common dummy state transition; must be last entry for all state 342 * transition groups - it'll be on .bss, so will be zeroed. 343 */ 344 static const struct llc_conn_state_trans llc_common_state_trans_end; 345 346 /* LLC_CONN_STATE_ADM transitions */ 347 /* State transitions for LLC_CONN_EV_CONN_REQ event */ 348 static const llc_conn_action_t llc_adm_actions_1[] = { 349 [0] = llc_conn_ac_send_sabme_cmd_p_set_x, 350 [1] = llc_conn_ac_start_ack_timer, 351 [2] = llc_conn_ac_set_retry_cnt_0, 352 [3] = llc_conn_ac_set_s_flag_0, 353 [4] = NULL, 354 }; 355 356 static const struct llc_conn_state_trans llc_adm_state_trans_1 = { 357 .ev = llc_conn_ev_conn_req, 358 .next_state = LLC_CONN_STATE_SETUP, 359 .ev_qualifiers = NONE, 360 .ev_actions = llc_adm_actions_1, 361 }; 362 363 /* State transitions for LLC_CONN_EV_RX_SABME_CMD_Pbit_SET_X event */ 364 static const llc_conn_action_t llc_adm_actions_2[] = { 365 [0] = llc_conn_ac_send_ua_rsp_f_set_p, 366 [1] = llc_conn_ac_set_vs_0, 367 [2] = llc_conn_ac_set_vr_0, 368 [3] = llc_conn_ac_set_retry_cnt_0, 369 [4] = llc_conn_ac_set_p_flag_0, 370 [5] = llc_conn_ac_set_remote_busy_0, 371 [6] = llc_conn_ac_conn_ind, 372 [7] = NULL, 373 }; 374 375 static const struct llc_conn_state_trans llc_adm_state_trans_2 = { 376 .ev = llc_conn_ev_rx_sabme_cmd_pbit_set_x, 377 .next_state = LLC_CONN_STATE_NORMAL, 378 .ev_qualifiers = NONE, 379 .ev_actions = llc_adm_actions_2, 380 }; 381 382 /* State transitions for LLC_CONN_EV_RX_DISC_CMD_Pbit_SET_X event */ 383 static const llc_conn_action_t llc_adm_actions_3[] = { 384 [0] = llc_conn_ac_send_dm_rsp_f_set_p, 385 [1] = llc_conn_disc, 386 [2] = NULL, 387 }; 388 389 static const struct llc_conn_state_trans llc_adm_state_trans_3 = { 390 .ev = llc_conn_ev_rx_disc_cmd_pbit_set_x, 391 .next_state = LLC_CONN_STATE_ADM, 392 .ev_qualifiers = NONE, 393 .ev_actions = llc_adm_actions_3, 394 }; 395 396 /* State transitions for LLC_CONN_EV_RX_XXX_CMD_Pbit_SET_1 event */ 397 static const llc_conn_action_t llc_adm_actions_4[] = { 398 [0] = llc_conn_ac_send_dm_rsp_f_set_1, 399 [1] = llc_conn_disc, 400 [2] = NULL, 401 }; 402 403 static const struct llc_conn_state_trans llc_adm_state_trans_4 = { 404 .ev = llc_conn_ev_rx_xxx_cmd_pbit_set_1, 405 .next_state = LLC_CONN_STATE_ADM, 406 .ev_qualifiers = NONE, 407 .ev_actions = llc_adm_actions_4, 408 }; 409 410 /* State transitions for LLC_CONN_EV_RX_XXX_YYY event */ 411 static const llc_conn_action_t llc_adm_actions_5[] = { 412 [0] = llc_conn_disc, 413 [1] = NULL, 414 }; 415 416 static const struct llc_conn_state_trans llc_adm_state_trans_5 = { 417 .ev = llc_conn_ev_rx_any_frame, 418 .next_state = LLC_CONN_OUT_OF_SVC, 419 .ev_qualifiers = NONE, 420 .ev_actions = llc_adm_actions_5, 421 }; 422 423 /* 424 * Array of pointers; 425 * one to each transition 426 */ 427 static const struct llc_conn_state_trans *llc_adm_state_transitions[] = { 428 [0] = &llc_adm_state_trans_1, /* Request */ 429 [1] = &llc_common_state_trans_end, 430 [2] = &llc_common_state_trans_end, /* local_busy */ 431 [3] = &llc_common_state_trans_end, /* init_pf_cycle */ 432 [4] = &llc_common_state_trans_end, /* timer */ 433 [5] = &llc_adm_state_trans_2, /* Receive frame */ 434 [6] = &llc_adm_state_trans_3, 435 [7] = &llc_adm_state_trans_4, 436 [8] = &llc_adm_state_trans_5, 437 [9] = &llc_common_state_trans_end, 438 }; 439 440 /* LLC_CONN_STATE_SETUP transitions */ 441 /* State transitions for LLC_CONN_EV_RX_SABME_CMD_Pbit_SET_X event */ 442 static const llc_conn_action_t llc_setup_actions_1[] = { 443 [0] = llc_conn_ac_send_ua_rsp_f_set_p, 444 [1] = llc_conn_ac_set_vs_0, 445 [2] = llc_conn_ac_set_vr_0, 446 [3] = llc_conn_ac_set_s_flag_1, 447 [4] = NULL, 448 }; 449 450 static const struct llc_conn_state_trans llc_setup_state_trans_1 = { 451 .ev = llc_conn_ev_rx_sabme_cmd_pbit_set_x, 452 .next_state = LLC_CONN_STATE_SETUP, 453 .ev_qualifiers = NONE, 454 .ev_actions = llc_setup_actions_1, 455 }; 456 457 /* State transitions for LLC_CONN_EV_RX_UA_RSP_Fbit_SET_X event */ 458 static const llc_conn_ev_qfyr_t llc_setup_ev_qfyrs_2[] = { 459 [0] = llc_conn_ev_qlfy_p_flag_eq_f, 460 [1] = llc_conn_ev_qlfy_set_status_conn, 461 [2] = NULL, 462 }; 463 464 static const llc_conn_action_t llc_setup_actions_2[] = { 465 [0] = llc_conn_ac_stop_ack_timer, 466 [1] = llc_conn_ac_set_vs_0, 467 [2] = llc_conn_ac_set_vr_0, 468 [3] = llc_conn_ac_upd_p_flag, 469 [4] = llc_conn_ac_set_remote_busy_0, 470 [5] = llc_conn_ac_conn_confirm, 471 [6] = NULL, 472 }; 473 474 static const struct llc_conn_state_trans llc_setup_state_trans_2 = { 475 .ev = llc_conn_ev_rx_ua_rsp_fbit_set_x, 476 .next_state = LLC_CONN_STATE_NORMAL, 477 .ev_qualifiers = llc_setup_ev_qfyrs_2, 478 .ev_actions = llc_setup_actions_2, 479 }; 480 481 /* State transitions for LLC_CONN_EV_ACK_TMR_EXP event */ 482 static const llc_conn_ev_qfyr_t llc_setup_ev_qfyrs_3[] = { 483 [0] = llc_conn_ev_qlfy_s_flag_eq_1, 484 [1] = llc_conn_ev_qlfy_set_status_conn, 485 [2] = NULL, 486 }; 487 488 static const llc_conn_action_t llc_setup_actions_3[] = { 489 [0] = llc_conn_ac_set_p_flag_0, 490 [1] = llc_conn_ac_set_remote_busy_0, 491 [2] = llc_conn_ac_conn_confirm, 492 [3] = NULL, 493 }; 494 495 static const struct llc_conn_state_trans llc_setup_state_trans_3 = { 496 .ev = llc_conn_ev_ack_tmr_exp, 497 .next_state = LLC_CONN_STATE_NORMAL, 498 .ev_qualifiers = llc_setup_ev_qfyrs_3, 499 .ev_actions = llc_setup_actions_3, 500 }; 501 502 /* State transitions for LLC_CONN_EV_RX_DISC_CMD_Pbit_SET_X event */ 503 static const llc_conn_ev_qfyr_t llc_setup_ev_qfyrs_4[] = { 504 [0] = llc_conn_ev_qlfy_set_status_disc, 505 [1] = NULL, 506 }; 507 508 static const llc_conn_action_t llc_setup_actions_4[] = { 509 [0] = llc_conn_ac_send_dm_rsp_f_set_p, 510 [1] = llc_conn_ac_stop_ack_timer, 511 [2] = llc_conn_ac_conn_confirm, 512 [3] = llc_conn_disc, 513 [4] = NULL, 514 }; 515 516 static const struct llc_conn_state_trans llc_setup_state_trans_4 = { 517 .ev = llc_conn_ev_rx_disc_cmd_pbit_set_x, 518 .next_state = LLC_CONN_STATE_ADM, 519 .ev_qualifiers = llc_setup_ev_qfyrs_4, 520 .ev_actions = llc_setup_actions_4, 521 }; 522 523 /* State transitions for LLC_CONN_EV_RX_DM_RSP_Fbit_SET_X event */ 524 static const llc_conn_ev_qfyr_t llc_setup_ev_qfyrs_5[] = { 525 [0] = llc_conn_ev_qlfy_set_status_disc, 526 [1] = NULL, 527 }; 528 529 static const llc_conn_action_t llc_setup_actions_5[] = { 530 [0] = llc_conn_ac_stop_ack_timer, 531 [1] = llc_conn_ac_conn_confirm, 532 [2] = llc_conn_disc, 533 [3] = NULL, 534 }; 535 536 static const struct llc_conn_state_trans llc_setup_state_trans_5 = { 537 .ev = llc_conn_ev_rx_dm_rsp_fbit_set_x, 538 .next_state = LLC_CONN_STATE_ADM, 539 .ev_qualifiers = llc_setup_ev_qfyrs_5, 540 .ev_actions = llc_setup_actions_5, 541 }; 542 543 /* State transitions for LLC_CONN_EV_ACK_TMR_EXP event */ 544 static const llc_conn_ev_qfyr_t llc_setup_ev_qfyrs_7[] = { 545 [0] = llc_conn_ev_qlfy_retry_cnt_lt_n2, 546 [1] = llc_conn_ev_qlfy_s_flag_eq_0, 547 [2] = NULL, 548 }; 549 550 static const llc_conn_action_t llc_setup_actions_7[] = { 551 [0] = llc_conn_ac_send_sabme_cmd_p_set_x, 552 [1] = llc_conn_ac_start_ack_timer, 553 [2] = llc_conn_ac_inc_retry_cnt_by_1, 554 [3] = NULL, 555 }; 556 557 static const struct llc_conn_state_trans llc_setup_state_trans_7 = { 558 .ev = llc_conn_ev_ack_tmr_exp, 559 .next_state = LLC_CONN_STATE_SETUP, 560 .ev_qualifiers = llc_setup_ev_qfyrs_7, 561 .ev_actions = llc_setup_actions_7, 562 }; 563 564 /* State transitions for LLC_CONN_EV_ACK_TMR_EXP event */ 565 static const llc_conn_ev_qfyr_t llc_setup_ev_qfyrs_8[] = { 566 [0] = llc_conn_ev_qlfy_retry_cnt_gte_n2, 567 [1] = llc_conn_ev_qlfy_s_flag_eq_0, 568 [2] = llc_conn_ev_qlfy_set_status_failed, 569 [3] = NULL, 570 }; 571 572 static const llc_conn_action_t llc_setup_actions_8[] = { 573 [0] = llc_conn_ac_conn_confirm, 574 [1] = llc_conn_disc, 575 [2] = NULL, 576 }; 577 578 static const struct llc_conn_state_trans llc_setup_state_trans_8 = { 579 .ev = llc_conn_ev_ack_tmr_exp, 580 .next_state = LLC_CONN_STATE_ADM, 581 .ev_qualifiers = llc_setup_ev_qfyrs_8, 582 .ev_actions = llc_setup_actions_8, 583 }; 584 585 /* 586 * Array of pointers; 587 * one to each transition 588 */ 589 static const struct llc_conn_state_trans *llc_setup_state_transitions[] = { 590 [0] = &llc_common_state_trans_end, /* Request */ 591 [1] = &llc_common_state_trans_end, /* local busy */ 592 [2] = &llc_common_state_trans_end, /* init_pf_cycle */ 593 [3] = &llc_setup_state_trans_3, /* Timer */ 594 [4] = &llc_setup_state_trans_7, 595 [5] = &llc_setup_state_trans_8, 596 [6] = &llc_common_state_trans_end, 597 [7] = &llc_setup_state_trans_1, /* Receive frame */ 598 [8] = &llc_setup_state_trans_2, 599 [9] = &llc_setup_state_trans_4, 600 [10] = &llc_setup_state_trans_5, 601 [11] = &llc_common_state_trans_end, 602 }; 603 604 /* LLC_CONN_STATE_NORMAL transitions */ 605 /* State transitions for LLC_CONN_EV_DATA_REQ event */ 606 static const llc_conn_ev_qfyr_t llc_normal_ev_qfyrs_1[] = { 607 [0] = llc_conn_ev_qlfy_remote_busy_eq_0, 608 [1] = llc_conn_ev_qlfy_p_flag_eq_0, 609 [2] = llc_conn_ev_qlfy_last_frame_eq_0, 610 [3] = NULL, 611 }; 612 613 static const llc_conn_action_t llc_normal_actions_1[] = { 614 [0] = llc_conn_ac_send_i_as_ack, 615 [1] = llc_conn_ac_start_ack_tmr_if_not_running, 616 [2] = NULL, 617 }; 618 619 static const struct llc_conn_state_trans llc_normal_state_trans_1 = { 620 .ev = llc_conn_ev_data_req, 621 .next_state = LLC_CONN_STATE_NORMAL, 622 .ev_qualifiers = llc_normal_ev_qfyrs_1, 623 .ev_actions = llc_normal_actions_1, 624 }; 625 626 /* State transitions for LLC_CONN_EV_DATA_REQ event */ 627 static const llc_conn_ev_qfyr_t llc_normal_ev_qfyrs_2[] = { 628 [0] = llc_conn_ev_qlfy_remote_busy_eq_0, 629 [1] = llc_conn_ev_qlfy_p_flag_eq_0, 630 [2] = llc_conn_ev_qlfy_last_frame_eq_1, 631 [3] = NULL, 632 }; 633 634 static const llc_conn_action_t llc_normal_actions_2[] = { 635 [0] = llc_conn_ac_send_i_cmd_p_set_1, 636 [1] = llc_conn_ac_start_p_timer, 637 [2] = NULL, 638 }; 639 640 static const struct llc_conn_state_trans llc_normal_state_trans_2 = { 641 .ev = llc_conn_ev_data_req, 642 .next_state = LLC_CONN_STATE_NORMAL, 643 .ev_qualifiers = llc_normal_ev_qfyrs_2, 644 .ev_actions = llc_normal_actions_2, 645 }; 646 647 /* State transitions for LLC_CONN_EV_DATA_REQ event */ 648 static const llc_conn_ev_qfyr_t llc_normal_ev_qfyrs_2_1[] = { 649 [0] = llc_conn_ev_qlfy_remote_busy_eq_1, 650 [1] = llc_conn_ev_qlfy_set_status_remote_busy, 651 [2] = NULL, 652 }; 653 654 /* just one member, NULL, .bss zeroes it */ 655 static const llc_conn_action_t llc_normal_actions_2_1[1]; 656 657 static const struct llc_conn_state_trans llc_normal_state_trans_2_1 = { 658 .ev = llc_conn_ev_data_req, 659 .next_state = LLC_CONN_STATE_NORMAL, 660 .ev_qualifiers = llc_normal_ev_qfyrs_2_1, 661 .ev_actions = llc_normal_actions_2_1, 662 }; 663 664 /* State transitions for LLC_CONN_EV_LOCAL_BUSY_DETECTED event */ 665 static const llc_conn_ev_qfyr_t llc_normal_ev_qfyrs_3[] = { 666 [0] = llc_conn_ev_qlfy_p_flag_eq_0, 667 [1] = NULL, 668 }; 669 670 static const llc_conn_action_t llc_normal_actions_3[] = { 671 [0] = llc_conn_ac_rst_sendack_flag, 672 [1] = llc_conn_ac_send_rnr_xxx_x_set_0, 673 [2] = llc_conn_ac_set_data_flag_0, 674 [3] = NULL, 675 }; 676 677 static const struct llc_conn_state_trans llc_normal_state_trans_3 = { 678 .ev = llc_conn_ev_local_busy_detected, 679 .next_state = LLC_CONN_STATE_BUSY, 680 .ev_qualifiers = llc_normal_ev_qfyrs_3, 681 .ev_actions = llc_normal_actions_3, 682 }; 683 684 /* State transitions for LLC_CONN_EV_LOCAL_BUSY_DETECTED event */ 685 static const llc_conn_ev_qfyr_t llc_normal_ev_qfyrs_4[] = { 686 [0] = llc_conn_ev_qlfy_p_flag_eq_1, 687 [1] = NULL, 688 }; 689 690 static const llc_conn_action_t llc_normal_actions_4[] = { 691 [0] = llc_conn_ac_rst_sendack_flag, 692 [1] = llc_conn_ac_send_rnr_xxx_x_set_0, 693 [2] = llc_conn_ac_set_data_flag_0, 694 [3] = NULL, 695 }; 696 697 static const struct llc_conn_state_trans llc_normal_state_trans_4 = { 698 .ev = llc_conn_ev_local_busy_detected, 699 .next_state = LLC_CONN_STATE_BUSY, 700 .ev_qualifiers = llc_normal_ev_qfyrs_4, 701 .ev_actions = llc_normal_actions_4, 702 }; 703 704 /* State transitions for LLC_CONN_EV_RX_I_CMD_Pbit_SET_0_UNEXPD_Ns event */ 705 static const llc_conn_ev_qfyr_t llc_normal_ev_qfyrs_5a[] = { 706 [0] = llc_conn_ev_qlfy_p_flag_eq_0, 707 [1] = NULL, 708 }; 709 710 static const llc_conn_action_t llc_normal_actions_5a[] = { 711 [0] = llc_conn_ac_rst_sendack_flag, 712 [1] = llc_conn_ac_send_rej_xxx_x_set_0, 713 [2] = llc_conn_ac_upd_nr_received, 714 [3] = llc_conn_ac_upd_p_flag, 715 [4] = llc_conn_ac_start_rej_timer, 716 [5] = llc_conn_ac_clear_remote_busy_if_f_eq_1, 717 [6] = NULL, 718 }; 719 720 static const struct llc_conn_state_trans llc_normal_state_trans_5a = { 721 .ev = llc_conn_ev_rx_i_cmd_pbit_set_0_unexpd_ns, 722 .next_state = LLC_CONN_STATE_REJ, 723 .ev_qualifiers = llc_normal_ev_qfyrs_5a, 724 .ev_actions = llc_normal_actions_5a, 725 }; 726 727 /* State transitions for LLC_CONN_EV_RX_I_RSP_Fbit_SET_0_UNEXPD_Ns event */ 728 static const llc_conn_ev_qfyr_t llc_normal_ev_qfyrs_5b[] = { 729 [0] = llc_conn_ev_qlfy_p_flag_eq_0, 730 [1] = NULL, 731 }; 732 733 static const llc_conn_action_t llc_normal_actions_5b[] = { 734 [0] = llc_conn_ac_rst_sendack_flag, 735 [1] = llc_conn_ac_send_rej_xxx_x_set_0, 736 [2] = llc_conn_ac_upd_nr_received, 737 [3] = llc_conn_ac_upd_p_flag, 738 [4] = llc_conn_ac_start_rej_timer, 739 [5] = llc_conn_ac_clear_remote_busy_if_f_eq_1, 740 [6] = NULL, 741 }; 742 743 static const struct llc_conn_state_trans llc_normal_state_trans_5b = { 744 .ev = llc_conn_ev_rx_i_rsp_fbit_set_0_unexpd_ns, 745 .next_state = LLC_CONN_STATE_REJ, 746 .ev_qualifiers = llc_normal_ev_qfyrs_5b, 747 .ev_actions = llc_normal_actions_5b, 748 }; 749 750 /* State transitions for LLC_CONN_EV_RX_I_RSP_Fbit_SET_1_UNEXPD_Ns event */ 751 static const llc_conn_ev_qfyr_t llc_normal_ev_qfyrs_5c[] = { 752 [0] = llc_conn_ev_qlfy_p_flag_eq_1, 753 [1] = NULL, 754 }; 755 756 static const llc_conn_action_t llc_normal_actions_5c[] = { 757 [0] = llc_conn_ac_rst_sendack_flag, 758 [1] = llc_conn_ac_send_rej_xxx_x_set_0, 759 [2] = llc_conn_ac_upd_nr_received, 760 [3] = llc_conn_ac_upd_p_flag, 761 [4] = llc_conn_ac_start_rej_timer, 762 [5] = llc_conn_ac_clear_remote_busy_if_f_eq_1, 763 [6] = NULL, 764 }; 765 766 static const struct llc_conn_state_trans llc_normal_state_trans_5c = { 767 .ev = llc_conn_ev_rx_i_rsp_fbit_set_1_unexpd_ns, 768 .next_state = LLC_CONN_STATE_REJ, 769 .ev_qualifiers = llc_normal_ev_qfyrs_5c, 770 .ev_actions = llc_normal_actions_5c, 771 }; 772 773 /* State transitions for LLC_CONN_EV_RX_I_CMD_Pbit_SET_0_UNEXPD_Ns event */ 774 static const llc_conn_ev_qfyr_t llc_normal_ev_qfyrs_6a[] = { 775 [0] = llc_conn_ev_qlfy_p_flag_eq_1, 776 [1] = NULL, 777 }; 778 779 static const llc_conn_action_t llc_normal_actions_6a[] = { 780 [0] = llc_conn_ac_rst_sendack_flag, 781 [1] = llc_conn_ac_send_rej_xxx_x_set_0, 782 [2] = llc_conn_ac_upd_nr_received, 783 [3] = llc_conn_ac_start_rej_timer, 784 [4] = NULL, 785 }; 786 787 static const struct llc_conn_state_trans llc_normal_state_trans_6a = { 788 .ev = llc_conn_ev_rx_i_cmd_pbit_set_0_unexpd_ns, 789 .next_state = LLC_CONN_STATE_REJ, 790 .ev_qualifiers = llc_normal_ev_qfyrs_6a, 791 .ev_actions = llc_normal_actions_6a, 792 }; 793 794 /* State transitions for LLC_CONN_EV_RX_I_RSP_Fbit_SET_0_UNEXPD_Ns event */ 795 static const llc_conn_ev_qfyr_t llc_normal_ev_qfyrs_6b[] = { 796 [0] = llc_conn_ev_qlfy_p_flag_eq_1, 797 [1] = NULL, 798 }; 799 800 static const llc_conn_action_t llc_normal_actions_6b[] = { 801 [0] = llc_conn_ac_rst_sendack_flag, 802 [1] = llc_conn_ac_send_rej_xxx_x_set_0, 803 [2] = llc_conn_ac_upd_nr_received, 804 [3] = llc_conn_ac_start_rej_timer, 805 [4] = NULL, 806 }; 807 808 static const struct llc_conn_state_trans llc_normal_state_trans_6b = { 809 .ev = llc_conn_ev_rx_i_rsp_fbit_set_0_unexpd_ns, 810 .next_state = LLC_CONN_STATE_REJ, 811 .ev_qualifiers = llc_normal_ev_qfyrs_6b, 812 .ev_actions = llc_normal_actions_6b, 813 }; 814 815 /* State transitions for LLC_CONN_EV_RX_I_CMD_Pbit_SET_1_UNEXPD_Ns event */ 816 static const llc_conn_action_t llc_normal_actions_7[] = { 817 [0] = llc_conn_ac_rst_sendack_flag, 818 [1] = llc_conn_ac_send_rej_rsp_f_set_1, 819 [2] = llc_conn_ac_upd_nr_received, 820 [3] = llc_conn_ac_start_rej_timer, 821 [4] = NULL, 822 }; 823 824 static const struct llc_conn_state_trans llc_normal_state_trans_7 = { 825 .ev = llc_conn_ev_rx_i_cmd_pbit_set_1_unexpd_ns, 826 .next_state = LLC_CONN_STATE_REJ, 827 .ev_qualifiers = NONE, 828 .ev_actions = llc_normal_actions_7, 829 }; 830 831 /* State transitions for LLC_CONN_EV_RX_I_RSP_Fbit_SET_X event */ 832 static const llc_conn_ev_qfyr_t llc_normal_ev_qfyrs_8a[] = { 833 [0] = llc_conn_ev_qlfy_p_flag_eq_f, 834 [1] = NULL, 835 }; 836 837 static const llc_conn_action_t llc_normal_actions_8[] = { 838 [0] = llc_conn_ac_inc_vr_by_1, 839 [1] = llc_conn_ac_data_ind, 840 [2] = llc_conn_ac_upd_p_flag, 841 [3] = llc_conn_ac_upd_nr_received, 842 [4] = llc_conn_ac_clear_remote_busy_if_f_eq_1, 843 [5] = llc_conn_ac_send_ack_if_needed, 844 [6] = NULL, 845 }; 846 847 static const struct llc_conn_state_trans llc_normal_state_trans_8a = { 848 .ev = llc_conn_ev_rx_i_rsp_fbit_set_x, 849 .next_state = LLC_CONN_STATE_NORMAL, 850 .ev_qualifiers = llc_normal_ev_qfyrs_8a, 851 .ev_actions = llc_normal_actions_8, 852 }; 853 854 /* State transitions for LLC_CONN_EV_RX_I_CMD_Pbit_SET_0 event */ 855 static const llc_conn_ev_qfyr_t llc_normal_ev_qfyrs_8b[] = { 856 [0] = llc_conn_ev_qlfy_p_flag_eq_0, 857 [1] = NULL, 858 }; 859 860 static const struct llc_conn_state_trans llc_normal_state_trans_8b = { 861 .ev = llc_conn_ev_rx_i_cmd_pbit_set_0, 862 .next_state = LLC_CONN_STATE_NORMAL, 863 .ev_qualifiers = llc_normal_ev_qfyrs_8b, 864 .ev_actions = llc_normal_actions_8, 865 }; 866 867 /* State transitions for LLC_CONN_EV_RX_I_RSP_Fbit_SET_0 event */ 868 static const llc_conn_ev_qfyr_t llc_normal_ev_qfyrs_9a[] = { 869 [0] = llc_conn_ev_qlfy_p_flag_eq_1, 870 [1] = NULL, 871 }; 872 873 static const llc_conn_action_t llc_normal_actions_9a[] = { 874 [0] = llc_conn_ac_inc_vr_by_1, 875 [1] = llc_conn_ac_upd_nr_received, 876 [2] = llc_conn_ac_data_ind, 877 [3] = llc_conn_ac_send_ack_if_needed, 878 [4] = NULL, 879 }; 880 881 static const struct llc_conn_state_trans llc_normal_state_trans_9a = { 882 .ev = llc_conn_ev_rx_i_rsp_fbit_set_0, 883 .next_state = LLC_CONN_STATE_NORMAL, 884 .ev_qualifiers = llc_normal_ev_qfyrs_9a, 885 .ev_actions = llc_normal_actions_9a, 886 }; 887 888 /* State transitions for LLC_CONN_EV_RX_I_CMD_Pbit_SET_0 event */ 889 static const llc_conn_ev_qfyr_t llc_normal_ev_qfyrs_9b[] = { 890 [0] = llc_conn_ev_qlfy_p_flag_eq_1, 891 [1] = NULL, 892 }; 893 894 static const llc_conn_action_t llc_normal_actions_9b[] = { 895 [0] = llc_conn_ac_inc_vr_by_1, 896 [1] = llc_conn_ac_upd_nr_received, 897 [2] = llc_conn_ac_data_ind, 898 [3] = llc_conn_ac_send_ack_if_needed, 899 [4] = NULL, 900 }; 901 902 static const struct llc_conn_state_trans llc_normal_state_trans_9b = { 903 .ev = llc_conn_ev_rx_i_cmd_pbit_set_0, 904 .next_state = LLC_CONN_STATE_NORMAL, 905 .ev_qualifiers = llc_normal_ev_qfyrs_9b, 906 .ev_actions = llc_normal_actions_9b, 907 }; 908 909 /* State transitions for LLC_CONN_EV_RX_I_CMD_Pbit_SET_1 event */ 910 static const llc_conn_action_t llc_normal_actions_10[] = { 911 [0] = llc_conn_ac_inc_vr_by_1, 912 [1] = llc_conn_ac_send_ack_rsp_f_set_1, 913 [2] = llc_conn_ac_rst_sendack_flag, 914 [3] = llc_conn_ac_upd_nr_received, 915 [4] = llc_conn_ac_data_ind, 916 [5] = NULL, 917 }; 918 919 static const struct llc_conn_state_trans llc_normal_state_trans_10 = { 920 .ev = llc_conn_ev_rx_i_cmd_pbit_set_1, 921 .next_state = LLC_CONN_STATE_NORMAL, 922 .ev_qualifiers = NONE, 923 .ev_actions = llc_normal_actions_10, 924 }; 925 926 /* State transitions for * LLC_CONN_EV_RX_RR_CMD_Pbit_SET_0 event */ 927 static const llc_conn_action_t llc_normal_actions_11a[] = { 928 [0] = llc_conn_ac_upd_p_flag, 929 [1] = llc_conn_ac_upd_nr_received, 930 [2] = llc_conn_ac_clear_remote_busy, 931 [3] = NULL, 932 }; 933 934 static const struct llc_conn_state_trans llc_normal_state_trans_11a = { 935 .ev = llc_conn_ev_rx_rr_cmd_pbit_set_0, 936 .next_state = LLC_CONN_STATE_NORMAL, 937 .ev_qualifiers = NONE, 938 .ev_actions = llc_normal_actions_11a, 939 }; 940 941 /* State transitions for LLC_CONN_EV_RX_RR_RSP_Fbit_SET_0 event */ 942 static const llc_conn_action_t llc_normal_actions_11b[] = { 943 [0] = llc_conn_ac_upd_p_flag, 944 [1] = llc_conn_ac_upd_nr_received, 945 [2] = llc_conn_ac_clear_remote_busy, 946 [3] = NULL, 947 }; 948 949 static const struct llc_conn_state_trans llc_normal_state_trans_11b = { 950 .ev = llc_conn_ev_rx_rr_rsp_fbit_set_0, 951 .next_state = LLC_CONN_STATE_NORMAL, 952 .ev_qualifiers = NONE, 953 .ev_actions = llc_normal_actions_11b, 954 }; 955 956 /* State transitions for LLC_CONN_EV_RX_RR_RSP_Fbit_SET_1 event */ 957 static const llc_conn_ev_qfyr_t llc_normal_ev_qfyrs_11c[] = { 958 [0] = llc_conn_ev_qlfy_p_flag_eq_1, 959 [1] = NULL, 960 }; 961 962 static const llc_conn_action_t llc_normal_actions_11c[] = { 963 [0] = llc_conn_ac_upd_p_flag, 964 [1] = llc_conn_ac_upd_nr_received, 965 [2] = llc_conn_ac_inc_tx_win_size, 966 [3] = llc_conn_ac_clear_remote_busy, 967 [4] = NULL, 968 }; 969 970 static const struct llc_conn_state_trans llc_normal_state_trans_11c = { 971 .ev = llc_conn_ev_rx_rr_rsp_fbit_set_1, 972 .next_state = LLC_CONN_STATE_NORMAL, 973 .ev_qualifiers = llc_normal_ev_qfyrs_11c, 974 .ev_actions = llc_normal_actions_11c, 975 }; 976 977 /* State transitions for LLC_CONN_EV_RX_RR_CMD_Pbit_SET_1 event */ 978 static const llc_conn_action_t llc_normal_actions_12[] = { 979 [0] = llc_conn_ac_send_ack_rsp_f_set_1, 980 [1] = llc_conn_ac_upd_nr_received, 981 [2] = llc_conn_ac_adjust_npta_by_rr, 982 [3] = llc_conn_ac_rst_sendack_flag, 983 [4] = llc_conn_ac_clear_remote_busy, 984 [5] = NULL, 985 }; 986 987 static const struct llc_conn_state_trans llc_normal_state_trans_12 = { 988 .ev = llc_conn_ev_rx_rr_cmd_pbit_set_1, 989 .next_state = LLC_CONN_STATE_NORMAL, 990 .ev_qualifiers = NONE, 991 .ev_actions = llc_normal_actions_12, 992 }; 993 994 /* State transitions for LLC_CONN_EV_RX_RNR_CMD_Pbit_SET_0 event */ 995 static const llc_conn_action_t llc_normal_actions_13a[] = { 996 [0] = llc_conn_ac_upd_p_flag, 997 [1] = llc_conn_ac_upd_nr_received, 998 [2] = llc_conn_ac_set_remote_busy, 999 [3] = NULL, 1000 }; 1001 1002 static const struct llc_conn_state_trans llc_normal_state_trans_13a = { 1003 .ev = llc_conn_ev_rx_rnr_cmd_pbit_set_0, 1004 .next_state = LLC_CONN_STATE_NORMAL, 1005 .ev_qualifiers = NONE, 1006 .ev_actions = llc_normal_actions_13a, 1007 }; 1008 1009 /* State transitions for LLC_CONN_EV_RX_RNR_RSP_Fbit_SET_0 event */ 1010 static const llc_conn_action_t llc_normal_actions_13b[] = { 1011 [0] = llc_conn_ac_upd_p_flag, 1012 [1] = llc_conn_ac_upd_nr_received, 1013 [2] = llc_conn_ac_set_remote_busy, 1014 [3] = NULL, 1015 }; 1016 1017 static const struct llc_conn_state_trans llc_normal_state_trans_13b = { 1018 .ev = llc_conn_ev_rx_rnr_rsp_fbit_set_0, 1019 .next_state = LLC_CONN_STATE_NORMAL, 1020 .ev_qualifiers = NONE, 1021 .ev_actions = llc_normal_actions_13b, 1022 }; 1023 1024 /* State transitions for LLC_CONN_EV_RX_RNR_RSP_Fbit_SET_1 event */ 1025 static const llc_conn_ev_qfyr_t llc_normal_ev_qfyrs_13c[] = { 1026 [0] = llc_conn_ev_qlfy_p_flag_eq_1, 1027 [1] = NULL, 1028 }; 1029 1030 static const llc_conn_action_t llc_normal_actions_13c[] = { 1031 [0] = llc_conn_ac_upd_p_flag, 1032 [1] = llc_conn_ac_upd_nr_received, 1033 [2] = llc_conn_ac_set_remote_busy, 1034 [3] = NULL, 1035 }; 1036 1037 static const struct llc_conn_state_trans llc_normal_state_trans_13c = { 1038 .ev = llc_conn_ev_rx_rnr_rsp_fbit_set_1, 1039 .next_state = LLC_CONN_STATE_NORMAL, 1040 .ev_qualifiers = llc_normal_ev_qfyrs_13c, 1041 .ev_actions = llc_normal_actions_13c, 1042 }; 1043 1044 /* State transitions for LLC_CONN_EV_RX_RNR_CMD_Pbit_SET_1 event */ 1045 static const llc_conn_action_t llc_normal_actions_14[] = { 1046 [0] = llc_conn_ac_send_rr_rsp_f_set_1, 1047 [1] = llc_conn_ac_upd_nr_received, 1048 [2] = llc_conn_ac_adjust_npta_by_rnr, 1049 [3] = llc_conn_ac_rst_sendack_flag, 1050 [4] = llc_conn_ac_set_remote_busy, 1051 [5] = NULL, 1052 }; 1053 1054 static const struct llc_conn_state_trans llc_normal_state_trans_14 = { 1055 .ev = llc_conn_ev_rx_rnr_cmd_pbit_set_1, 1056 .next_state = LLC_CONN_STATE_NORMAL, 1057 .ev_qualifiers = NONE, 1058 .ev_actions = llc_normal_actions_14, 1059 }; 1060 1061 /* State transitions for LLC_CONN_EV_RX_REJ_CMD_Pbit_SET_0 event */ 1062 static const llc_conn_ev_qfyr_t llc_normal_ev_qfyrs_15a[] = { 1063 [0] = llc_conn_ev_qlfy_p_flag_eq_0, 1064 [1] = NULL, 1065 }; 1066 1067 static const llc_conn_action_t llc_normal_actions_15a[] = { 1068 [0] = llc_conn_ac_set_vs_nr, 1069 [1] = llc_conn_ac_upd_nr_received, 1070 [2] = llc_conn_ac_upd_p_flag, 1071 [3] = llc_conn_ac_dec_tx_win_size, 1072 [4] = llc_conn_ac_resend_i_xxx_x_set_0, 1073 [5] = llc_conn_ac_clear_remote_busy, 1074 [6] = NULL, 1075 }; 1076 1077 static const struct llc_conn_state_trans llc_normal_state_trans_15a = { 1078 .ev = llc_conn_ev_rx_rej_cmd_pbit_set_0, 1079 .next_state = LLC_CONN_STATE_NORMAL, 1080 .ev_qualifiers = llc_normal_ev_qfyrs_15a, 1081 .ev_actions = llc_normal_actions_15a, 1082 }; 1083 1084 /* State transitions for LLC_CONN_EV_RX_REJ_RSP_Fbit_SET_X event */ 1085 static const llc_conn_ev_qfyr_t llc_normal_ev_qfyrs_15b[] = { 1086 [0] = llc_conn_ev_qlfy_p_flag_eq_f, 1087 [1] = NULL, 1088 }; 1089 1090 static const llc_conn_action_t llc_normal_actions_15b[] = { 1091 [0] = llc_conn_ac_set_vs_nr, 1092 [1] = llc_conn_ac_upd_nr_received, 1093 [2] = llc_conn_ac_upd_p_flag, 1094 [3] = llc_conn_ac_dec_tx_win_size, 1095 [4] = llc_conn_ac_resend_i_xxx_x_set_0, 1096 [5] = llc_conn_ac_clear_remote_busy, 1097 [6] = NULL, 1098 }; 1099 1100 static const struct llc_conn_state_trans llc_normal_state_trans_15b = { 1101 .ev = llc_conn_ev_rx_rej_rsp_fbit_set_x, 1102 .next_state = LLC_CONN_STATE_NORMAL, 1103 .ev_qualifiers = llc_normal_ev_qfyrs_15b, 1104 .ev_actions = llc_normal_actions_15b, 1105 }; 1106 1107 /* State transitions for LLC_CONN_EV_RX_REJ_CMD_Pbit_SET_0 event */ 1108 static const llc_conn_ev_qfyr_t llc_normal_ev_qfyrs_16a[] = { 1109 [0] = llc_conn_ev_qlfy_p_flag_eq_1, 1110 [1] = NULL, 1111 }; 1112 1113 static const llc_conn_action_t llc_normal_actions_16a[] = { 1114 [0] = llc_conn_ac_set_vs_nr, 1115 [1] = llc_conn_ac_upd_nr_received, 1116 [2] = llc_conn_ac_dec_tx_win_size, 1117 [3] = llc_conn_ac_resend_i_xxx_x_set_0, 1118 [4] = llc_conn_ac_clear_remote_busy, 1119 [5] = NULL, 1120 }; 1121 1122 static const struct llc_conn_state_trans llc_normal_state_trans_16a = { 1123 .ev = llc_conn_ev_rx_rej_cmd_pbit_set_0, 1124 .next_state = LLC_CONN_STATE_NORMAL, 1125 .ev_qualifiers = llc_normal_ev_qfyrs_16a, 1126 .ev_actions = llc_normal_actions_16a, 1127 }; 1128 1129 /* State transitions for LLC_CONN_EV_RX_REJ_RSP_Fbit_SET_0 event */ 1130 static const llc_conn_ev_qfyr_t llc_normal_ev_qfyrs_16b[] = { 1131 [0] = llc_conn_ev_qlfy_p_flag_eq_1, 1132 [1] = NULL, 1133 }; 1134 1135 static const llc_conn_action_t llc_normal_actions_16b[] = { 1136 [0] = llc_conn_ac_set_vs_nr, 1137 [1] = llc_conn_ac_upd_nr_received, 1138 [2] = llc_conn_ac_dec_tx_win_size, 1139 [3] = llc_conn_ac_resend_i_xxx_x_set_0, 1140 [4] = llc_conn_ac_clear_remote_busy, 1141 [5] = NULL, 1142 }; 1143 1144 static const struct llc_conn_state_trans llc_normal_state_trans_16b = { 1145 .ev = llc_conn_ev_rx_rej_rsp_fbit_set_0, 1146 .next_state = LLC_CONN_STATE_NORMAL, 1147 .ev_qualifiers = llc_normal_ev_qfyrs_16b, 1148 .ev_actions = llc_normal_actions_16b, 1149 }; 1150 1151 /* State transitions for LLC_CONN_EV_RX_REJ_CMD_Pbit_SET_1 event */ 1152 static const llc_conn_action_t llc_normal_actions_17[] = { 1153 [0] = llc_conn_ac_set_vs_nr, 1154 [1] = llc_conn_ac_upd_nr_received, 1155 [2] = llc_conn_ac_dec_tx_win_size, 1156 [3] = llc_conn_ac_resend_i_rsp_f_set_1, 1157 [4] = llc_conn_ac_clear_remote_busy, 1158 [5] = NULL, 1159 }; 1160 1161 static const struct llc_conn_state_trans llc_normal_state_trans_17 = { 1162 .ev = llc_conn_ev_rx_rej_cmd_pbit_set_1, 1163 .next_state = LLC_CONN_STATE_NORMAL, 1164 .ev_qualifiers = NONE, 1165 .ev_actions = llc_normal_actions_17, 1166 }; 1167 1168 /* State transitions for LLC_CONN_EV_INIT_P_F_CYCLE event */ 1169 static const llc_conn_ev_qfyr_t llc_normal_ev_qfyrs_18[] = { 1170 [0] = llc_conn_ev_qlfy_p_flag_eq_0, 1171 [1] = NULL, 1172 }; 1173 1174 static const llc_conn_action_t llc_normal_actions_18[] = { 1175 [0] = llc_conn_ac_send_rr_cmd_p_set_1, 1176 [1] = llc_conn_ac_start_p_timer, 1177 [2] = NULL, 1178 }; 1179 1180 static const struct llc_conn_state_trans llc_normal_state_trans_18 = { 1181 .ev = llc_conn_ev_init_p_f_cycle, 1182 .next_state = LLC_CONN_STATE_NORMAL, 1183 .ev_qualifiers = llc_normal_ev_qfyrs_18, 1184 .ev_actions = llc_normal_actions_18, 1185 }; 1186 1187 /* State transitions for LLC_CONN_EV_P_TMR_EXP event */ 1188 static const llc_conn_ev_qfyr_t llc_normal_ev_qfyrs_19[] = { 1189 [0] = llc_conn_ev_qlfy_retry_cnt_lt_n2, 1190 [1] = NULL, 1191 }; 1192 1193 static const llc_conn_action_t llc_normal_actions_19[] = { 1194 [0] = llc_conn_ac_rst_sendack_flag, 1195 [1] = llc_conn_ac_send_rr_cmd_p_set_1, 1196 [2] = llc_conn_ac_rst_vs, 1197 [3] = llc_conn_ac_start_p_timer, 1198 [4] = llc_conn_ac_inc_retry_cnt_by_1, 1199 [5] = NULL, 1200 }; 1201 1202 static const struct llc_conn_state_trans llc_normal_state_trans_19 = { 1203 .ev = llc_conn_ev_p_tmr_exp, 1204 .next_state = LLC_CONN_STATE_AWAIT, 1205 .ev_qualifiers = llc_normal_ev_qfyrs_19, 1206 .ev_actions = llc_normal_actions_19, 1207 }; 1208 1209 /* State transitions for LLC_CONN_EV_ACK_TMR_EXP event */ 1210 static const llc_conn_ev_qfyr_t llc_normal_ev_qfyrs_20a[] = { 1211 [0] = llc_conn_ev_qlfy_p_flag_eq_0, 1212 [1] = llc_conn_ev_qlfy_retry_cnt_lt_n2, 1213 [2] = NULL, 1214 }; 1215 1216 static const llc_conn_action_t llc_normal_actions_20a[] = { 1217 [0] = llc_conn_ac_rst_sendack_flag, 1218 [1] = llc_conn_ac_send_rr_cmd_p_set_1, 1219 [2] = llc_conn_ac_rst_vs, 1220 [3] = llc_conn_ac_start_p_timer, 1221 [4] = llc_conn_ac_inc_retry_cnt_by_1, 1222 [5] = NULL, 1223 }; 1224 1225 static const struct llc_conn_state_trans llc_normal_state_trans_20a = { 1226 .ev = llc_conn_ev_ack_tmr_exp, 1227 .next_state = LLC_CONN_STATE_AWAIT, 1228 .ev_qualifiers = llc_normal_ev_qfyrs_20a, 1229 .ev_actions = llc_normal_actions_20a, 1230 }; 1231 1232 /* State transitions for LLC_CONN_EV_BUSY_TMR_EXP event */ 1233 static const llc_conn_ev_qfyr_t llc_normal_ev_qfyrs_20b[] = { 1234 [0] = llc_conn_ev_qlfy_p_flag_eq_0, 1235 [1] = llc_conn_ev_qlfy_retry_cnt_lt_n2, 1236 [2] = NULL, 1237 }; 1238 1239 static const llc_conn_action_t llc_normal_actions_20b[] = { 1240 [0] = llc_conn_ac_rst_sendack_flag, 1241 [1] = llc_conn_ac_send_rr_cmd_p_set_1, 1242 [2] = llc_conn_ac_rst_vs, 1243 [3] = llc_conn_ac_start_p_timer, 1244 [4] = llc_conn_ac_inc_retry_cnt_by_1, 1245 [5] = NULL, 1246 }; 1247 1248 static const struct llc_conn_state_trans llc_normal_state_trans_20b = { 1249 .ev = llc_conn_ev_busy_tmr_exp, 1250 .next_state = LLC_CONN_STATE_AWAIT, 1251 .ev_qualifiers = llc_normal_ev_qfyrs_20b, 1252 .ev_actions = llc_normal_actions_20b, 1253 }; 1254 1255 /* State transitions for LLC_CONN_EV_TX_BUFF_FULL event */ 1256 static const llc_conn_ev_qfyr_t llc_normal_ev_qfyrs_21[] = { 1257 [0] = llc_conn_ev_qlfy_p_flag_eq_0, 1258 [1] = NULL, 1259 }; 1260 1261 static const llc_conn_action_t llc_normal_actions_21[] = { 1262 [0] = llc_conn_ac_send_rr_cmd_p_set_1, 1263 [1] = llc_conn_ac_start_p_timer, 1264 [2] = NULL, 1265 }; 1266 1267 static const struct llc_conn_state_trans llc_normal_state_trans_21 = { 1268 .ev = llc_conn_ev_tx_buffer_full, 1269 .next_state = LLC_CONN_STATE_NORMAL, 1270 .ev_qualifiers = llc_normal_ev_qfyrs_21, 1271 .ev_actions = llc_normal_actions_21, 1272 }; 1273 1274 /* 1275 * Array of pointers; 1276 * one to each transition 1277 */ 1278 static const struct llc_conn_state_trans *llc_normal_state_transitions[] = { 1279 [0] = &llc_normal_state_trans_1, /* Requests */ 1280 [1] = &llc_normal_state_trans_2, 1281 [2] = &llc_normal_state_trans_2_1, 1282 [3] = &llc_common_state_trans_1, 1283 [4] = &llc_common_state_trans_2, 1284 [5] = &llc_common_state_trans_end, 1285 [6] = &llc_normal_state_trans_21, 1286 [7] = &llc_normal_state_trans_3, /* Local busy */ 1287 [8] = &llc_normal_state_trans_4, 1288 [9] = &llc_common_state_trans_end, 1289 [10] = &llc_normal_state_trans_18, /* Init pf cycle */ 1290 [11] = &llc_common_state_trans_end, 1291 [12] = &llc_common_state_trans_11a, /* Timers */ 1292 [13] = &llc_common_state_trans_11b, 1293 [14] = &llc_common_state_trans_11c, 1294 [15] = &llc_common_state_trans_11d, 1295 [16] = &llc_normal_state_trans_19, 1296 [17] = &llc_normal_state_trans_20a, 1297 [18] = &llc_normal_state_trans_20b, 1298 [19] = &llc_common_state_trans_end, 1299 [20] = &llc_normal_state_trans_8b, /* Receive frames */ 1300 [21] = &llc_normal_state_trans_9b, 1301 [22] = &llc_normal_state_trans_10, 1302 [23] = &llc_normal_state_trans_11b, 1303 [24] = &llc_normal_state_trans_11c, 1304 [25] = &llc_normal_state_trans_5a, 1305 [26] = &llc_normal_state_trans_5b, 1306 [27] = &llc_normal_state_trans_5c, 1307 [28] = &llc_normal_state_trans_6a, 1308 [29] = &llc_normal_state_trans_6b, 1309 [30] = &llc_normal_state_trans_7, 1310 [31] = &llc_normal_state_trans_8a, 1311 [32] = &llc_normal_state_trans_9a, 1312 [33] = &llc_normal_state_trans_11a, 1313 [34] = &llc_normal_state_trans_12, 1314 [35] = &llc_normal_state_trans_13a, 1315 [36] = &llc_normal_state_trans_13b, 1316 [37] = &llc_normal_state_trans_13c, 1317 [38] = &llc_normal_state_trans_14, 1318 [39] = &llc_normal_state_trans_15a, 1319 [40] = &llc_normal_state_trans_15b, 1320 [41] = &llc_normal_state_trans_16a, 1321 [42] = &llc_normal_state_trans_16b, 1322 [43] = &llc_normal_state_trans_17, 1323 [44] = &llc_common_state_trans_3, 1324 [45] = &llc_common_state_trans_4, 1325 [46] = &llc_common_state_trans_5, 1326 [47] = &llc_common_state_trans_6, 1327 [48] = &llc_common_state_trans_7a, 1328 [49] = &llc_common_state_trans_7b, 1329 [50] = &llc_common_state_trans_8a, 1330 [51] = &llc_common_state_trans_8b, 1331 [52] = &llc_common_state_trans_8c, 1332 [53] = &llc_common_state_trans_9, 1333 /* [54] = &llc_common_state_trans_10, */ 1334 [54] = &llc_common_state_trans_end, 1335 }; 1336 1337 /* LLC_CONN_STATE_BUSY transitions */ 1338 /* State transitions for LLC_CONN_EV_DATA_REQ event */ 1339 static const llc_conn_ev_qfyr_t llc_busy_ev_qfyrs_1[] = { 1340 [0] = llc_conn_ev_qlfy_remote_busy_eq_0, 1341 [1] = llc_conn_ev_qlfy_p_flag_eq_0, 1342 [2] = NULL, 1343 }; 1344 1345 static const llc_conn_action_t llc_busy_actions_1[] = { 1346 [0] = llc_conn_ac_send_i_xxx_x_set_0, 1347 [1] = llc_conn_ac_start_ack_tmr_if_not_running, 1348 [2] = NULL, 1349 }; 1350 1351 static const struct llc_conn_state_trans llc_busy_state_trans_1 = { 1352 .ev = llc_conn_ev_data_req, 1353 .next_state = LLC_CONN_STATE_BUSY, 1354 .ev_qualifiers = llc_busy_ev_qfyrs_1, 1355 .ev_actions = llc_busy_actions_1, 1356 }; 1357 1358 /* State transitions for LLC_CONN_EV_DATA_REQ event */ 1359 static const llc_conn_ev_qfyr_t llc_busy_ev_qfyrs_2[] = { 1360 [0] = llc_conn_ev_qlfy_remote_busy_eq_0, 1361 [1] = llc_conn_ev_qlfy_p_flag_eq_1, 1362 [2] = NULL, 1363 }; 1364 1365 static const llc_conn_action_t llc_busy_actions_2[] = { 1366 [0] = llc_conn_ac_send_i_xxx_x_set_0, 1367 [1] = llc_conn_ac_start_ack_tmr_if_not_running, 1368 [2] = NULL, 1369 }; 1370 1371 static const struct llc_conn_state_trans llc_busy_state_trans_2 = { 1372 .ev = llc_conn_ev_data_req, 1373 .next_state = LLC_CONN_STATE_BUSY, 1374 .ev_qualifiers = llc_busy_ev_qfyrs_2, 1375 .ev_actions = llc_busy_actions_2, 1376 }; 1377 1378 /* State transitions for LLC_CONN_EV_DATA_REQ event */ 1379 static const llc_conn_ev_qfyr_t llc_busy_ev_qfyrs_2_1[] = { 1380 [0] = llc_conn_ev_qlfy_remote_busy_eq_1, 1381 [1] = llc_conn_ev_qlfy_set_status_remote_busy, 1382 [2] = NULL, 1383 }; 1384 1385 /* just one member, NULL, .bss zeroes it */ 1386 static const llc_conn_action_t llc_busy_actions_2_1[1]; 1387 1388 static const struct llc_conn_state_trans llc_busy_state_trans_2_1 = { 1389 .ev = llc_conn_ev_data_req, 1390 .next_state = LLC_CONN_STATE_BUSY, 1391 .ev_qualifiers = llc_busy_ev_qfyrs_2_1, 1392 .ev_actions = llc_busy_actions_2_1, 1393 }; 1394 1395 /* State transitions for LLC_CONN_EV_LOCAL_BUSY_CLEARED event */ 1396 static const llc_conn_ev_qfyr_t llc_busy_ev_qfyrs_3[] = { 1397 [0] = llc_conn_ev_qlfy_data_flag_eq_1, 1398 [1] = llc_conn_ev_qlfy_p_flag_eq_0, 1399 [2] = NULL, 1400 }; 1401 1402 static const llc_conn_action_t llc_busy_actions_3[] = { 1403 [0] = llc_conn_ac_send_rej_xxx_x_set_0, 1404 [1] = llc_conn_ac_start_rej_timer, 1405 [2] = NULL, 1406 }; 1407 1408 static const struct llc_conn_state_trans llc_busy_state_trans_3 = { 1409 .ev = llc_conn_ev_local_busy_cleared, 1410 .next_state = LLC_CONN_STATE_REJ, 1411 .ev_qualifiers = llc_busy_ev_qfyrs_3, 1412 .ev_actions = llc_busy_actions_3, 1413 }; 1414 1415 /* State transitions for LLC_CONN_EV_LOCAL_BUSY_CLEARED event */ 1416 static const llc_conn_ev_qfyr_t llc_busy_ev_qfyrs_4[] = { 1417 [0] = llc_conn_ev_qlfy_data_flag_eq_1, 1418 [1] = llc_conn_ev_qlfy_p_flag_eq_1, 1419 [2] = NULL, 1420 }; 1421 1422 static const llc_conn_action_t llc_busy_actions_4[] = { 1423 [0] = llc_conn_ac_send_rej_xxx_x_set_0, 1424 [1] = llc_conn_ac_start_rej_timer, 1425 [2] = NULL, 1426 }; 1427 1428 static const struct llc_conn_state_trans llc_busy_state_trans_4 = { 1429 .ev = llc_conn_ev_local_busy_cleared, 1430 .next_state = LLC_CONN_STATE_REJ, 1431 .ev_qualifiers = llc_busy_ev_qfyrs_4, 1432 .ev_actions = llc_busy_actions_4, 1433 }; 1434 1435 /* State transitions for LLC_CONN_EV_LOCAL_BUSY_CLEARED event */ 1436 static const llc_conn_ev_qfyr_t llc_busy_ev_qfyrs_5[] = { 1437 [0] = llc_conn_ev_qlfy_data_flag_eq_0, 1438 [1] = llc_conn_ev_qlfy_p_flag_eq_0, 1439 [2] = NULL, 1440 }; 1441 1442 static const llc_conn_action_t llc_busy_actions_5[] = { 1443 [0] = llc_conn_ac_send_rr_xxx_x_set_0, 1444 [1] = NULL, 1445 }; 1446 1447 static const struct llc_conn_state_trans llc_busy_state_trans_5 = { 1448 .ev = llc_conn_ev_local_busy_cleared, 1449 .next_state = LLC_CONN_STATE_NORMAL, 1450 .ev_qualifiers = llc_busy_ev_qfyrs_5, 1451 .ev_actions = llc_busy_actions_5, 1452 }; 1453 1454 /* State transitions for LLC_CONN_EV_LOCAL_BUSY_CLEARED event */ 1455 static const llc_conn_ev_qfyr_t llc_busy_ev_qfyrs_6[] = { 1456 [0] = llc_conn_ev_qlfy_data_flag_eq_0, 1457 [1] = llc_conn_ev_qlfy_p_flag_eq_1, 1458 [2] = NULL, 1459 }; 1460 1461 static const llc_conn_action_t llc_busy_actions_6[] = { 1462 [0] = llc_conn_ac_send_rr_xxx_x_set_0, 1463 [1] = NULL, 1464 }; 1465 1466 static const struct llc_conn_state_trans llc_busy_state_trans_6 = { 1467 .ev = llc_conn_ev_local_busy_cleared, 1468 .next_state = LLC_CONN_STATE_NORMAL, 1469 .ev_qualifiers = llc_busy_ev_qfyrs_6, 1470 .ev_actions = llc_busy_actions_6, 1471 }; 1472 1473 /* State transitions for LLC_CONN_EV_LOCAL_BUSY_CLEARED event */ 1474 static const llc_conn_ev_qfyr_t llc_busy_ev_qfyrs_7[] = { 1475 [0] = llc_conn_ev_qlfy_data_flag_eq_2, 1476 [1] = llc_conn_ev_qlfy_p_flag_eq_0, 1477 [2] = NULL, 1478 }; 1479 1480 static const llc_conn_action_t llc_busy_actions_7[] = { 1481 [0] = llc_conn_ac_send_rr_xxx_x_set_0, 1482 [1] = NULL, 1483 }; 1484 1485 static const struct llc_conn_state_trans llc_busy_state_trans_7 = { 1486 .ev = llc_conn_ev_local_busy_cleared, 1487 .next_state = LLC_CONN_STATE_REJ, 1488 .ev_qualifiers = llc_busy_ev_qfyrs_7, 1489 .ev_actions = llc_busy_actions_7, 1490 }; 1491 1492 /* State transitions for LLC_CONN_EV_LOCAL_BUSY_CLEARED event */ 1493 static const llc_conn_ev_qfyr_t llc_busy_ev_qfyrs_8[] = { 1494 [0] = llc_conn_ev_qlfy_data_flag_eq_2, 1495 [1] = llc_conn_ev_qlfy_p_flag_eq_1, 1496 [2] = NULL, 1497 }; 1498 1499 static const llc_conn_action_t llc_busy_actions_8[] = { 1500 [0] = llc_conn_ac_send_rr_xxx_x_set_0, 1501 [1] = NULL, 1502 }; 1503 1504 static const struct llc_conn_state_trans llc_busy_state_trans_8 = { 1505 .ev = llc_conn_ev_local_busy_cleared, 1506 .next_state = LLC_CONN_STATE_REJ, 1507 .ev_qualifiers = llc_busy_ev_qfyrs_8, 1508 .ev_actions = llc_busy_actions_8, 1509 }; 1510 1511 /* State transitions for LLC_CONN_EV_RX_I_RSP_Fbit_SET_X_UNEXPD_Ns event */ 1512 static const llc_conn_ev_qfyr_t llc_busy_ev_qfyrs_9a[] = { 1513 [0] = llc_conn_ev_qlfy_p_flag_eq_f, 1514 [1] = NULL, 1515 }; 1516 1517 static const llc_conn_action_t llc_busy_actions_9a[] = { 1518 [0] = llc_conn_ac_opt_send_rnr_xxx_x_set_0, 1519 [1] = llc_conn_ac_upd_p_flag, 1520 [2] = llc_conn_ac_upd_nr_received, 1521 [3] = llc_conn_ac_set_data_flag_1_if_data_flag_eq_0, 1522 [4] = llc_conn_ac_clear_remote_busy_if_f_eq_1, 1523 [5] = NULL, 1524 }; 1525 1526 static const struct llc_conn_state_trans llc_busy_state_trans_9a = { 1527 .ev = llc_conn_ev_rx_i_rsp_fbit_set_x_unexpd_ns, 1528 .next_state = LLC_CONN_STATE_BUSY, 1529 .ev_qualifiers = llc_busy_ev_qfyrs_9a, 1530 .ev_actions = llc_busy_actions_9a, 1531 }; 1532 1533 /* State transitions for LLC_CONN_EV_RX_I_CMD_Pbit_SET_0_UNEXPD_Ns event */ 1534 static const llc_conn_ev_qfyr_t llc_busy_ev_qfyrs_9b[] = { 1535 [0] = llc_conn_ev_qlfy_p_flag_eq_0, 1536 [1] = NULL, 1537 }; 1538 1539 static const llc_conn_action_t llc_busy_actions_9b[] = { 1540 [0] = llc_conn_ac_opt_send_rnr_xxx_x_set_0, 1541 [1] = llc_conn_ac_upd_p_flag, 1542 [2] = llc_conn_ac_upd_nr_received, 1543 [3] = llc_conn_ac_set_data_flag_1_if_data_flag_eq_0, 1544 [4] = llc_conn_ac_clear_remote_busy_if_f_eq_1, 1545 [5] = NULL, 1546 }; 1547 1548 static const struct llc_conn_state_trans llc_busy_state_trans_9b = { 1549 .ev = llc_conn_ev_rx_i_cmd_pbit_set_0_unexpd_ns, 1550 .next_state = LLC_CONN_STATE_BUSY, 1551 .ev_qualifiers = llc_busy_ev_qfyrs_9b, 1552 .ev_actions = llc_busy_actions_9b, 1553 }; 1554 1555 /* State transitions for LLC_CONN_EV_RX_I_RSP_Fbit_SET_0_UNEXPD_Ns event */ 1556 static const llc_conn_ev_qfyr_t llc_busy_ev_qfyrs_10a[] = { 1557 [0] = llc_conn_ev_qlfy_p_flag_eq_1, 1558 [1] = NULL, 1559 }; 1560 1561 static const llc_conn_action_t llc_busy_actions_10a[] = { 1562 [0] = llc_conn_ac_opt_send_rnr_xxx_x_set_0, 1563 [1] = llc_conn_ac_upd_nr_received, 1564 [2] = llc_conn_ac_set_data_flag_1_if_data_flag_eq_0, 1565 [3] = NULL, 1566 }; 1567 1568 static const struct llc_conn_state_trans llc_busy_state_trans_10a = { 1569 .ev = llc_conn_ev_rx_i_rsp_fbit_set_0_unexpd_ns, 1570 .next_state = LLC_CONN_STATE_BUSY, 1571 .ev_qualifiers = llc_busy_ev_qfyrs_10a, 1572 .ev_actions = llc_busy_actions_10a, 1573 }; 1574 1575 /* State transitions for LLC_CONN_EV_RX_I_CMD_Pbit_SET_0_UNEXPD_Ns event */ 1576 static const llc_conn_ev_qfyr_t llc_busy_ev_qfyrs_10b[] = { 1577 [0] = llc_conn_ev_qlfy_p_flag_eq_1, 1578 [1] = NULL, 1579 }; 1580 1581 static const llc_conn_action_t llc_busy_actions_10b[] = { 1582 [0] = llc_conn_ac_opt_send_rnr_xxx_x_set_0, 1583 [1] = llc_conn_ac_upd_nr_received, 1584 [2] = llc_conn_ac_set_data_flag_1_if_data_flag_eq_0, 1585 [3] = NULL, 1586 }; 1587 1588 static const struct llc_conn_state_trans llc_busy_state_trans_10b = { 1589 .ev = llc_conn_ev_rx_i_cmd_pbit_set_0_unexpd_ns, 1590 .next_state = LLC_CONN_STATE_BUSY, 1591 .ev_qualifiers = llc_busy_ev_qfyrs_10b, 1592 .ev_actions = llc_busy_actions_10b, 1593 }; 1594 1595 /* State transitions for LLC_CONN_EV_RX_I_CMD_Pbit_SET_1_UNEXPD_Ns event */ 1596 static const llc_conn_action_t llc_busy_actions_11[] = { 1597 [0] = llc_conn_ac_send_rnr_rsp_f_set_1, 1598 [1] = llc_conn_ac_upd_nr_received, 1599 [2] = llc_conn_ac_set_data_flag_1_if_data_flag_eq_0, 1600 [3] = NULL, 1601 }; 1602 1603 static const struct llc_conn_state_trans llc_busy_state_trans_11 = { 1604 .ev = llc_conn_ev_rx_i_cmd_pbit_set_1_unexpd_ns, 1605 .next_state = LLC_CONN_STATE_BUSY, 1606 .ev_qualifiers = NONE, 1607 .ev_actions = llc_busy_actions_11, 1608 }; 1609 1610 /* State transitions for LLC_CONN_EV_RX_I_CMD_Pbit_SET_1 event */ 1611 static const llc_conn_action_t llc_busy_actions_12[] = { 1612 [0] = llc_conn_ac_inc_vr_by_1, 1613 [1] = llc_conn_ac_data_ind, 1614 [2] = llc_conn_ac_send_rnr_rsp_f_set_1, 1615 [3] = llc_conn_ac_upd_nr_received, 1616 [4] = llc_conn_ac_stop_rej_tmr_if_data_flag_eq_2, 1617 [5] = llc_conn_ac_set_data_flag_0, 1618 [6] = NULL, 1619 }; 1620 1621 static const struct llc_conn_state_trans llc_busy_state_trans_12 = { 1622 .ev = llc_conn_ev_rx_i_cmd_pbit_set_1, 1623 .next_state = LLC_CONN_STATE_BUSY, 1624 .ev_qualifiers = NONE, 1625 .ev_actions = llc_busy_actions_12, 1626 }; 1627 1628 /* State transitions for LLC_CONN_EV_RX_I_RSP_Fbit_SET_X event */ 1629 static const llc_conn_ev_qfyr_t llc_busy_ev_qfyrs_13a[] = { 1630 [0] = llc_conn_ev_qlfy_p_flag_eq_f, 1631 [1] = NULL, 1632 }; 1633 1634 static const llc_conn_action_t llc_busy_actions_13a[] = { 1635 [0] = llc_conn_ac_inc_vr_by_1, 1636 [1] = llc_conn_ac_data_ind, 1637 [2] = llc_conn_ac_upd_p_flag, 1638 [3] = llc_conn_ac_opt_send_rnr_xxx_x_set_0, 1639 [4] = llc_conn_ac_upd_nr_received, 1640 [5] = llc_conn_ac_stop_rej_tmr_if_data_flag_eq_2, 1641 [6] = llc_conn_ac_set_data_flag_0, 1642 [7] = llc_conn_ac_clear_remote_busy_if_f_eq_1, 1643 [8] = NULL, 1644 }; 1645 1646 static const struct llc_conn_state_trans llc_busy_state_trans_13a = { 1647 .ev = llc_conn_ev_rx_i_rsp_fbit_set_x, 1648 .next_state = LLC_CONN_STATE_BUSY, 1649 .ev_qualifiers = llc_busy_ev_qfyrs_13a, 1650 .ev_actions = llc_busy_actions_13a, 1651 }; 1652 1653 /* State transitions for LLC_CONN_EV_RX_I_CMD_Pbit_SET_0 event */ 1654 static const llc_conn_ev_qfyr_t llc_busy_ev_qfyrs_13b[] = { 1655 [0] = llc_conn_ev_qlfy_p_flag_eq_0, 1656 [1] = NULL, 1657 }; 1658 1659 static const llc_conn_action_t llc_busy_actions_13b[] = { 1660 [0] = llc_conn_ac_inc_vr_by_1, 1661 [1] = llc_conn_ac_data_ind, 1662 [2] = llc_conn_ac_upd_p_flag, 1663 [3] = llc_conn_ac_opt_send_rnr_xxx_x_set_0, 1664 [4] = llc_conn_ac_upd_nr_received, 1665 [5] = llc_conn_ac_stop_rej_tmr_if_data_flag_eq_2, 1666 [6] = llc_conn_ac_set_data_flag_0, 1667 [7] = llc_conn_ac_clear_remote_busy_if_f_eq_1, 1668 [8] = NULL, 1669 }; 1670 1671 static const struct llc_conn_state_trans llc_busy_state_trans_13b = { 1672 .ev = llc_conn_ev_rx_i_cmd_pbit_set_0, 1673 .next_state = LLC_CONN_STATE_BUSY, 1674 .ev_qualifiers = llc_busy_ev_qfyrs_13b, 1675 .ev_actions = llc_busy_actions_13b, 1676 }; 1677 1678 /* State transitions for LLC_CONN_EV_RX_I_RSP_Fbit_SET_0 event */ 1679 static const llc_conn_ev_qfyr_t llc_busy_ev_qfyrs_14a[] = { 1680 [0] = llc_conn_ev_qlfy_p_flag_eq_1, 1681 [1] = NULL, 1682 }; 1683 1684 static const llc_conn_action_t llc_busy_actions_14a[] = { 1685 [0] = llc_conn_ac_inc_vr_by_1, 1686 [1] = llc_conn_ac_data_ind, 1687 [2] = llc_conn_ac_opt_send_rnr_xxx_x_set_0, 1688 [3] = llc_conn_ac_upd_nr_received, 1689 [4] = llc_conn_ac_stop_rej_tmr_if_data_flag_eq_2, 1690 [5] = llc_conn_ac_set_data_flag_0, 1691 [6] = NULL, 1692 }; 1693 1694 static const struct llc_conn_state_trans llc_busy_state_trans_14a = { 1695 .ev = llc_conn_ev_rx_i_rsp_fbit_set_0, 1696 .next_state = LLC_CONN_STATE_BUSY, 1697 .ev_qualifiers = llc_busy_ev_qfyrs_14a, 1698 .ev_actions = llc_busy_actions_14a, 1699 }; 1700 1701 /* State transitions for LLC_CONN_EV_RX_I_CMD_Pbit_SET_0 event */ 1702 static const llc_conn_ev_qfyr_t llc_busy_ev_qfyrs_14b[] = { 1703 [0] = llc_conn_ev_qlfy_p_flag_eq_1, 1704 [1] = NULL, 1705 }; 1706 1707 static const llc_conn_action_t llc_busy_actions_14b[] = { 1708 [0] = llc_conn_ac_inc_vr_by_1, 1709 [1] = llc_conn_ac_data_ind, 1710 [2] = llc_conn_ac_opt_send_rnr_xxx_x_set_0, 1711 [3] = llc_conn_ac_upd_nr_received, 1712 [4] = llc_conn_ac_stop_rej_tmr_if_data_flag_eq_2, 1713 [5] = llc_conn_ac_set_data_flag_0, 1714 [6] = NULL, 1715 }; 1716 1717 static const struct llc_conn_state_trans llc_busy_state_trans_14b = { 1718 .ev = llc_conn_ev_rx_i_cmd_pbit_set_0, 1719 .next_state = LLC_CONN_STATE_BUSY, 1720 .ev_qualifiers = llc_busy_ev_qfyrs_14b, 1721 .ev_actions = llc_busy_actions_14b, 1722 }; 1723 1724 /* State transitions for LLC_CONN_EV_RX_RR_CMD_Pbit_SET_0 event */ 1725 static const llc_conn_action_t llc_busy_actions_15a[] = { 1726 [0] = llc_conn_ac_upd_p_flag, 1727 [1] = llc_conn_ac_upd_nr_received, 1728 [2] = llc_conn_ac_clear_remote_busy, 1729 [3] = NULL, 1730 }; 1731 1732 static const struct llc_conn_state_trans llc_busy_state_trans_15a = { 1733 .ev = llc_conn_ev_rx_rr_cmd_pbit_set_0, 1734 .next_state = LLC_CONN_STATE_BUSY, 1735 .ev_qualifiers = NONE, 1736 .ev_actions = llc_busy_actions_15a, 1737 }; 1738 1739 /* State transitions for LLC_CONN_EV_RX_RR_RSP_Fbit_SET_0 event */ 1740 static const llc_conn_action_t llc_busy_actions_15b[] = { 1741 [0] = llc_conn_ac_upd_p_flag, 1742 [1] = llc_conn_ac_upd_nr_received, 1743 [2] = llc_conn_ac_clear_remote_busy, 1744 [3] = NULL, 1745 }; 1746 1747 static const struct llc_conn_state_trans llc_busy_state_trans_15b = { 1748 .ev = llc_conn_ev_rx_rr_rsp_fbit_set_0, 1749 .next_state = LLC_CONN_STATE_BUSY, 1750 .ev_qualifiers = NONE, 1751 .ev_actions = llc_busy_actions_15b, 1752 }; 1753 1754 /* State transitions for LLC_CONN_EV_RX_RR_RSP_Fbit_SET_1 event */ 1755 static const llc_conn_ev_qfyr_t llc_busy_ev_qfyrs_15c[] = { 1756 [0] = llc_conn_ev_qlfy_p_flag_eq_1, 1757 [1] = NULL, 1758 }; 1759 1760 static const llc_conn_action_t llc_busy_actions_15c[] = { 1761 [0] = llc_conn_ac_upd_p_flag, 1762 [1] = llc_conn_ac_upd_nr_received, 1763 [2] = llc_conn_ac_clear_remote_busy, 1764 [3] = NULL, 1765 }; 1766 1767 static const struct llc_conn_state_trans llc_busy_state_trans_15c = { 1768 .ev = llc_conn_ev_rx_rr_rsp_fbit_set_1, 1769 .next_state = LLC_CONN_STATE_BUSY, 1770 .ev_qualifiers = llc_busy_ev_qfyrs_15c, 1771 .ev_actions = llc_busy_actions_15c, 1772 }; 1773 1774 /* State transitions for LLC_CONN_EV_RX_RR_CMD_Pbit_SET_1 event */ 1775 static const llc_conn_action_t llc_busy_actions_16[] = { 1776 [0] = llc_conn_ac_send_rnr_rsp_f_set_1, 1777 [1] = llc_conn_ac_upd_nr_received, 1778 [2] = llc_conn_ac_clear_remote_busy, 1779 [3] = NULL, 1780 }; 1781 1782 static const struct llc_conn_state_trans llc_busy_state_trans_16 = { 1783 .ev = llc_conn_ev_rx_rr_cmd_pbit_set_1, 1784 .next_state = LLC_CONN_STATE_BUSY, 1785 .ev_qualifiers = NONE, 1786 .ev_actions = llc_busy_actions_16, 1787 }; 1788 1789 /* State transitions for LLC_CONN_EV_RX_RNR_CMD_Pbit_SET_0 event */ 1790 static const llc_conn_action_t llc_busy_actions_17a[] = { 1791 [0] = llc_conn_ac_upd_p_flag, 1792 [1] = llc_conn_ac_upd_nr_received, 1793 [2] = llc_conn_ac_set_remote_busy, 1794 [3] = NULL, 1795 }; 1796 1797 static const struct llc_conn_state_trans llc_busy_state_trans_17a = { 1798 .ev = llc_conn_ev_rx_rnr_cmd_pbit_set_0, 1799 .next_state = LLC_CONN_STATE_BUSY, 1800 .ev_qualifiers = NONE, 1801 .ev_actions = llc_busy_actions_17a, 1802 }; 1803 1804 /* State transitions for LLC_CONN_EV_RX_RNR_RSP_Fbit_SET_0 event */ 1805 static const llc_conn_action_t llc_busy_actions_17b[] = { 1806 [0] = llc_conn_ac_upd_p_flag, 1807 [1] = llc_conn_ac_upd_nr_received, 1808 [2] = llc_conn_ac_set_remote_busy, 1809 [3] = NULL, 1810 }; 1811 1812 static const struct llc_conn_state_trans llc_busy_state_trans_17b = { 1813 .ev = llc_conn_ev_rx_rnr_rsp_fbit_set_0, 1814 .next_state = LLC_CONN_STATE_BUSY, 1815 .ev_qualifiers = NONE, 1816 .ev_actions = llc_busy_actions_17b, 1817 }; 1818 1819 /* State transitions for LLC_CONN_EV_RX_RNR_RSP_Fbit_SET_1 event */ 1820 static const llc_conn_ev_qfyr_t llc_busy_ev_qfyrs_17c[] = { 1821 [0] = llc_conn_ev_qlfy_p_flag_eq_1, 1822 [1] = NULL, 1823 }; 1824 1825 static const llc_conn_action_t llc_busy_actions_17c[] = { 1826 [0] = llc_conn_ac_upd_p_flag, 1827 [1] = llc_conn_ac_upd_nr_received, 1828 [2] = llc_conn_ac_set_remote_busy, 1829 [3] = NULL, 1830 }; 1831 1832 static const struct llc_conn_state_trans llc_busy_state_trans_17c = { 1833 .ev = llc_conn_ev_rx_rnr_rsp_fbit_set_1, 1834 .next_state = LLC_CONN_STATE_BUSY, 1835 .ev_qualifiers = llc_busy_ev_qfyrs_17c, 1836 .ev_actions = llc_busy_actions_17c, 1837 }; 1838 1839 /* State transitions for LLC_CONN_EV_RX_RNR_CMD_Pbit_SET_1 event */ 1840 static const llc_conn_action_t llc_busy_actions_18[] = { 1841 [0] = llc_conn_ac_send_rnr_rsp_f_set_1, 1842 [1] = llc_conn_ac_upd_nr_received, 1843 [2] = llc_conn_ac_set_remote_busy, 1844 [3] = NULL, 1845 }; 1846 1847 static const struct llc_conn_state_trans llc_busy_state_trans_18 = { 1848 .ev = llc_conn_ev_rx_rnr_cmd_pbit_set_1, 1849 .next_state = LLC_CONN_STATE_BUSY, 1850 .ev_qualifiers = NONE, 1851 .ev_actions = llc_busy_actions_18, 1852 }; 1853 1854 /* State transitions for LLC_CONN_EV_RX_REJ_CMD_Pbit_SET_0 event */ 1855 static const llc_conn_ev_qfyr_t llc_busy_ev_qfyrs_19a[] = { 1856 [0] = llc_conn_ev_qlfy_p_flag_eq_0, 1857 [1] = NULL, 1858 }; 1859 1860 static const llc_conn_action_t llc_busy_actions_19a[] = { 1861 [0] = llc_conn_ac_set_vs_nr, 1862 [1] = llc_conn_ac_upd_nr_received, 1863 [2] = llc_conn_ac_upd_p_flag, 1864 [3] = llc_conn_ac_resend_i_xxx_x_set_0, 1865 [4] = llc_conn_ac_clear_remote_busy, 1866 [5] = NULL, 1867 }; 1868 1869 static const struct llc_conn_state_trans llc_busy_state_trans_19a = { 1870 .ev = llc_conn_ev_rx_rej_cmd_pbit_set_0, 1871 .next_state = LLC_CONN_STATE_BUSY, 1872 .ev_qualifiers = llc_busy_ev_qfyrs_19a, 1873 .ev_actions = llc_busy_actions_19a, 1874 }; 1875 1876 /* State transitions for LLC_CONN_EV_RX_REJ_RSP_Fbit_SET_X event */ 1877 static const llc_conn_ev_qfyr_t llc_busy_ev_qfyrs_19b[] = { 1878 [0] = llc_conn_ev_qlfy_p_flag_eq_f, 1879 [1] = NULL, 1880 }; 1881 1882 static const llc_conn_action_t llc_busy_actions_19b[] = { 1883 [0] = llc_conn_ac_set_vs_nr, 1884 [1] = llc_conn_ac_upd_nr_received, 1885 [2] = llc_conn_ac_upd_p_flag, 1886 [3] = llc_conn_ac_resend_i_xxx_x_set_0, 1887 [4] = llc_conn_ac_clear_remote_busy, 1888 [5] = NULL, 1889 }; 1890 1891 static const struct llc_conn_state_trans llc_busy_state_trans_19b = { 1892 .ev = llc_conn_ev_rx_rej_rsp_fbit_set_x, 1893 .next_state = LLC_CONN_STATE_BUSY, 1894 .ev_qualifiers = llc_busy_ev_qfyrs_19b, 1895 .ev_actions = llc_busy_actions_19b, 1896 }; 1897 1898 /* State transitions for LLC_CONN_EV_RX_REJ_CMD_Pbit_SET_0 event */ 1899 static const llc_conn_ev_qfyr_t llc_busy_ev_qfyrs_20a[] = { 1900 [0] = llc_conn_ev_qlfy_p_flag_eq_1, 1901 [1] = NULL, 1902 }; 1903 1904 static const llc_conn_action_t llc_busy_actions_20a[] = { 1905 [0] = llc_conn_ac_set_vs_nr, 1906 [1] = llc_conn_ac_upd_nr_received, 1907 [2] = llc_conn_ac_resend_i_xxx_x_set_0, 1908 [3] = llc_conn_ac_clear_remote_busy, 1909 [4] = NULL, 1910 }; 1911 1912 static const struct llc_conn_state_trans llc_busy_state_trans_20a = { 1913 .ev = llc_conn_ev_rx_rej_cmd_pbit_set_0, 1914 .next_state = LLC_CONN_STATE_BUSY, 1915 .ev_qualifiers = llc_busy_ev_qfyrs_20a, 1916 .ev_actions = llc_busy_actions_20a, 1917 }; 1918 1919 /* State transitions for LLC_CONN_EV_RX_REJ_RSP_Fbit_SET_0 event */ 1920 static const llc_conn_ev_qfyr_t llc_busy_ev_qfyrs_20b[] = { 1921 [0] = llc_conn_ev_qlfy_p_flag_eq_1, 1922 [1] = NULL, 1923 }; 1924 1925 static const llc_conn_action_t llc_busy_actions_20b[] = { 1926 [0] = llc_conn_ac_set_vs_nr, 1927 [1] = llc_conn_ac_upd_nr_received, 1928 [2] = llc_conn_ac_resend_i_xxx_x_set_0, 1929 [3] = llc_conn_ac_clear_remote_busy, 1930 [4] = NULL, 1931 }; 1932 1933 static const struct llc_conn_state_trans llc_busy_state_trans_20b = { 1934 .ev = llc_conn_ev_rx_rej_rsp_fbit_set_0, 1935 .next_state = LLC_CONN_STATE_BUSY, 1936 .ev_qualifiers = llc_busy_ev_qfyrs_20b, 1937 .ev_actions = llc_busy_actions_20b, 1938 }; 1939 1940 /* State transitions for LLC_CONN_EV_RX_REJ_CMD_Pbit_SET_1 event */ 1941 static const llc_conn_action_t llc_busy_actions_21[] = { 1942 [0] = llc_conn_ac_set_vs_nr, 1943 [1] = llc_conn_ac_upd_nr_received, 1944 [2] = llc_conn_ac_send_rnr_rsp_f_set_1, 1945 [3] = llc_conn_ac_resend_i_xxx_x_set_0, 1946 [4] = llc_conn_ac_clear_remote_busy, 1947 [5] = NULL, 1948 }; 1949 1950 static const struct llc_conn_state_trans llc_busy_state_trans_21 = { 1951 .ev = llc_conn_ev_rx_rej_cmd_pbit_set_1, 1952 .next_state = LLC_CONN_STATE_BUSY, 1953 .ev_qualifiers = NONE, 1954 .ev_actions = llc_busy_actions_21, 1955 }; 1956 1957 /* State transitions for LLC_CONN_EV_INIT_P_F_CYCLE event */ 1958 static const llc_conn_ev_qfyr_t llc_busy_ev_qfyrs_22[] = { 1959 [0] = llc_conn_ev_qlfy_p_flag_eq_0, 1960 [1] = NULL, 1961 }; 1962 1963 static const llc_conn_action_t llc_busy_actions_22[] = { 1964 [0] = llc_conn_ac_send_rnr_cmd_p_set_1, 1965 [1] = llc_conn_ac_start_p_timer, 1966 [2] = NULL, 1967 }; 1968 1969 static const struct llc_conn_state_trans llc_busy_state_trans_22 = { 1970 .ev = llc_conn_ev_init_p_f_cycle, 1971 .next_state = LLC_CONN_STATE_BUSY, 1972 .ev_qualifiers = llc_busy_ev_qfyrs_22, 1973 .ev_actions = llc_busy_actions_22, 1974 }; 1975 1976 /* State transitions for LLC_CONN_EV_P_TMR_EXP event */ 1977 static const llc_conn_ev_qfyr_t llc_busy_ev_qfyrs_23[] = { 1978 [0] = llc_conn_ev_qlfy_retry_cnt_lt_n2, 1979 [1] = NULL, 1980 }; 1981 1982 static const llc_conn_action_t llc_busy_actions_23[] = { 1983 [0] = llc_conn_ac_send_rnr_cmd_p_set_1, 1984 [1] = llc_conn_ac_rst_vs, 1985 [2] = llc_conn_ac_start_p_timer, 1986 [3] = llc_conn_ac_inc_retry_cnt_by_1, 1987 [4] = NULL, 1988 }; 1989 1990 static const struct llc_conn_state_trans llc_busy_state_trans_23 = { 1991 .ev = llc_conn_ev_p_tmr_exp, 1992 .next_state = LLC_CONN_STATE_AWAIT_BUSY, 1993 .ev_qualifiers = llc_busy_ev_qfyrs_23, 1994 .ev_actions = llc_busy_actions_23, 1995 }; 1996 1997 /* State transitions for LLC_CONN_EV_ACK_TMR_EXP event */ 1998 static const llc_conn_ev_qfyr_t llc_busy_ev_qfyrs_24a[] = { 1999 [0] = llc_conn_ev_qlfy_p_flag_eq_0, 2000 [1] = llc_conn_ev_qlfy_retry_cnt_lt_n2, 2001 [2] = NULL, 2002 }; 2003 2004 static const llc_conn_action_t llc_busy_actions_24a[] = { 2005 [0] = llc_conn_ac_send_rnr_cmd_p_set_1, 2006 [1] = llc_conn_ac_start_p_timer, 2007 [2] = llc_conn_ac_inc_retry_cnt_by_1, 2008 [3] = llc_conn_ac_rst_vs, 2009 [4] = NULL, 2010 }; 2011 2012 static const struct llc_conn_state_trans llc_busy_state_trans_24a = { 2013 .ev = llc_conn_ev_ack_tmr_exp, 2014 .next_state = LLC_CONN_STATE_AWAIT_BUSY, 2015 .ev_qualifiers = llc_busy_ev_qfyrs_24a, 2016 .ev_actions = llc_busy_actions_24a, 2017 }; 2018 2019 /* State transitions for LLC_CONN_EV_BUSY_TMR_EXP event */ 2020 static const llc_conn_ev_qfyr_t llc_busy_ev_qfyrs_24b[] = { 2021 [0] = llc_conn_ev_qlfy_p_flag_eq_0, 2022 [1] = llc_conn_ev_qlfy_retry_cnt_lt_n2, 2023 [2] = NULL, 2024 }; 2025 2026 static const llc_conn_action_t llc_busy_actions_24b[] = { 2027 [0] = llc_conn_ac_send_rnr_cmd_p_set_1, 2028 [1] = llc_conn_ac_start_p_timer, 2029 [2] = llc_conn_ac_inc_retry_cnt_by_1, 2030 [3] = llc_conn_ac_rst_vs, 2031 [4] = NULL, 2032 }; 2033 2034 static const struct llc_conn_state_trans llc_busy_state_trans_24b = { 2035 .ev = llc_conn_ev_busy_tmr_exp, 2036 .next_state = LLC_CONN_STATE_AWAIT_BUSY, 2037 .ev_qualifiers = llc_busy_ev_qfyrs_24b, 2038 .ev_actions = llc_busy_actions_24b, 2039 }; 2040 2041 /* State transitions for LLC_CONN_EV_REJ_TMR_EXP event */ 2042 static const llc_conn_ev_qfyr_t llc_busy_ev_qfyrs_25[] = { 2043 [0] = llc_conn_ev_qlfy_p_flag_eq_0, 2044 [1] = llc_conn_ev_qlfy_retry_cnt_lt_n2, 2045 [2] = NULL, 2046 }; 2047 2048 static const llc_conn_action_t llc_busy_actions_25[] = { 2049 [0] = llc_conn_ac_send_rnr_cmd_p_set_1, 2050 [1] = llc_conn_ac_start_p_timer, 2051 [2] = llc_conn_ac_inc_retry_cnt_by_1, 2052 [3] = llc_conn_ac_rst_vs, 2053 [4] = llc_conn_ac_set_data_flag_1, 2054 [5] = NULL, 2055 }; 2056 2057 static const struct llc_conn_state_trans llc_busy_state_trans_25 = { 2058 .ev = llc_conn_ev_rej_tmr_exp, 2059 .next_state = LLC_CONN_STATE_AWAIT_BUSY, 2060 .ev_qualifiers = llc_busy_ev_qfyrs_25, 2061 .ev_actions = llc_busy_actions_25, 2062 }; 2063 2064 /* State transitions for LLC_CONN_EV_REJ_TMR_EXP event */ 2065 static const llc_conn_ev_qfyr_t llc_busy_ev_qfyrs_26[] = { 2066 [0] = llc_conn_ev_qlfy_p_flag_eq_1, 2067 [1] = llc_conn_ev_qlfy_retry_cnt_lt_n2, 2068 [2] = NULL, 2069 }; 2070 2071 static const llc_conn_action_t llc_busy_actions_26[] = { 2072 [0] = llc_conn_ac_set_data_flag_1, 2073 [1] = NULL, 2074 }; 2075 2076 static const struct llc_conn_state_trans llc_busy_state_trans_26 = { 2077 .ev = llc_conn_ev_rej_tmr_exp, 2078 .next_state = LLC_CONN_STATE_BUSY, 2079 .ev_qualifiers = llc_busy_ev_qfyrs_26, 2080 .ev_actions = llc_busy_actions_26, 2081 }; 2082 2083 /* 2084 * Array of pointers; 2085 * one to each transition 2086 */ 2087 static const struct llc_conn_state_trans *llc_busy_state_transitions[] = { 2088 [0] = &llc_common_state_trans_1, /* Request */ 2089 [1] = &llc_common_state_trans_2, 2090 [2] = &llc_busy_state_trans_1, 2091 [3] = &llc_busy_state_trans_2, 2092 [4] = &llc_busy_state_trans_2_1, 2093 [5] = &llc_common_state_trans_end, 2094 [6] = &llc_busy_state_trans_3, /* Local busy */ 2095 [7] = &llc_busy_state_trans_4, 2096 [8] = &llc_busy_state_trans_5, 2097 [9] = &llc_busy_state_trans_6, 2098 [10] = &llc_busy_state_trans_7, 2099 [11] = &llc_busy_state_trans_8, 2100 [12] = &llc_common_state_trans_end, 2101 [13] = &llc_busy_state_trans_22, /* Initiate PF cycle */ 2102 [14] = &llc_common_state_trans_end, 2103 [15] = &llc_common_state_trans_11a, /* Timer */ 2104 [16] = &llc_common_state_trans_11b, 2105 [17] = &llc_common_state_trans_11c, 2106 [18] = &llc_common_state_trans_11d, 2107 [19] = &llc_busy_state_trans_23, 2108 [20] = &llc_busy_state_trans_24a, 2109 [21] = &llc_busy_state_trans_24b, 2110 [22] = &llc_busy_state_trans_25, 2111 [23] = &llc_busy_state_trans_26, 2112 [24] = &llc_common_state_trans_end, 2113 [25] = &llc_busy_state_trans_9a, /* Receive frame */ 2114 [26] = &llc_busy_state_trans_9b, 2115 [27] = &llc_busy_state_trans_10a, 2116 [28] = &llc_busy_state_trans_10b, 2117 [29] = &llc_busy_state_trans_11, 2118 [30] = &llc_busy_state_trans_12, 2119 [31] = &llc_busy_state_trans_13a, 2120 [32] = &llc_busy_state_trans_13b, 2121 [33] = &llc_busy_state_trans_14a, 2122 [34] = &llc_busy_state_trans_14b, 2123 [35] = &llc_busy_state_trans_15a, 2124 [36] = &llc_busy_state_trans_15b, 2125 [37] = &llc_busy_state_trans_15c, 2126 [38] = &llc_busy_state_trans_16, 2127 [39] = &llc_busy_state_trans_17a, 2128 [40] = &llc_busy_state_trans_17b, 2129 [41] = &llc_busy_state_trans_17c, 2130 [42] = &llc_busy_state_trans_18, 2131 [43] = &llc_busy_state_trans_19a, 2132 [44] = &llc_busy_state_trans_19b, 2133 [45] = &llc_busy_state_trans_20a, 2134 [46] = &llc_busy_state_trans_20b, 2135 [47] = &llc_busy_state_trans_21, 2136 [48] = &llc_common_state_trans_3, 2137 [49] = &llc_common_state_trans_4, 2138 [50] = &llc_common_state_trans_5, 2139 [51] = &llc_common_state_trans_6, 2140 [52] = &llc_common_state_trans_7a, 2141 [53] = &llc_common_state_trans_7b, 2142 [54] = &llc_common_state_trans_8a, 2143 [55] = &llc_common_state_trans_8b, 2144 [56] = &llc_common_state_trans_8c, 2145 [57] = &llc_common_state_trans_9, 2146 /* [58] = &llc_common_state_trans_10, */ 2147 [58] = &llc_common_state_trans_end, 2148 }; 2149 2150 /* LLC_CONN_STATE_REJ transitions */ 2151 /* State transitions for LLC_CONN_EV_DATA_REQ event */ 2152 static const llc_conn_ev_qfyr_t llc_reject_ev_qfyrs_1[] = { 2153 [0] = llc_conn_ev_qlfy_remote_busy_eq_0, 2154 [1] = llc_conn_ev_qlfy_p_flag_eq_0, 2155 [2] = NULL, 2156 }; 2157 2158 static const llc_conn_action_t llc_reject_actions_1[] = { 2159 [0] = llc_conn_ac_send_i_xxx_x_set_0, 2160 [1] = NULL, 2161 }; 2162 2163 static const struct llc_conn_state_trans llc_reject_state_trans_1 = { 2164 .ev = llc_conn_ev_data_req, 2165 .next_state = LLC_CONN_STATE_REJ, 2166 .ev_qualifiers = llc_reject_ev_qfyrs_1, 2167 .ev_actions = llc_reject_actions_1, 2168 }; 2169 2170 /* State transitions for LLC_CONN_EV_DATA_REQ event */ 2171 static const llc_conn_ev_qfyr_t llc_reject_ev_qfyrs_2[] = { 2172 [0] = llc_conn_ev_qlfy_remote_busy_eq_0, 2173 [1] = llc_conn_ev_qlfy_p_flag_eq_1, 2174 [2] = NULL, 2175 }; 2176 2177 static const llc_conn_action_t llc_reject_actions_2[] = { 2178 [0] = llc_conn_ac_send_i_xxx_x_set_0, 2179 [1] = NULL, 2180 }; 2181 2182 static const struct llc_conn_state_trans llc_reject_state_trans_2 = { 2183 .ev = llc_conn_ev_data_req, 2184 .next_state = LLC_CONN_STATE_REJ, 2185 .ev_qualifiers = llc_reject_ev_qfyrs_2, 2186 .ev_actions = llc_reject_actions_2, 2187 }; 2188 2189 /* State transitions for LLC_CONN_EV_DATA_REQ event */ 2190 static const llc_conn_ev_qfyr_t llc_reject_ev_qfyrs_2_1[] = { 2191 [0] = llc_conn_ev_qlfy_remote_busy_eq_1, 2192 [1] = llc_conn_ev_qlfy_set_status_remote_busy, 2193 [2] = NULL, 2194 }; 2195 2196 /* just one member, NULL, .bss zeroes it */ 2197 static const llc_conn_action_t llc_reject_actions_2_1[1]; 2198 2199 static const struct llc_conn_state_trans llc_reject_state_trans_2_1 = { 2200 .ev = llc_conn_ev_data_req, 2201 .next_state = LLC_CONN_STATE_REJ, 2202 .ev_qualifiers = llc_reject_ev_qfyrs_2_1, 2203 .ev_actions = llc_reject_actions_2_1, 2204 }; 2205 2206 2207 /* State transitions for LLC_CONN_EV_LOCAL_BUSY_DETECTED event */ 2208 static const llc_conn_ev_qfyr_t llc_reject_ev_qfyrs_3[] = { 2209 [0] = llc_conn_ev_qlfy_p_flag_eq_0, 2210 [1] = NULL, 2211 }; 2212 2213 static const llc_conn_action_t llc_reject_actions_3[] = { 2214 [0] = llc_conn_ac_send_rnr_xxx_x_set_0, 2215 [1] = llc_conn_ac_set_data_flag_2, 2216 [2] = NULL, 2217 }; 2218 2219 static const struct llc_conn_state_trans llc_reject_state_trans_3 = { 2220 .ev = llc_conn_ev_local_busy_detected, 2221 .next_state = LLC_CONN_STATE_BUSY, 2222 .ev_qualifiers = llc_reject_ev_qfyrs_3, 2223 .ev_actions = llc_reject_actions_3, 2224 }; 2225 2226 /* State transitions for LLC_CONN_EV_LOCAL_BUSY_DETECTED event */ 2227 static const llc_conn_ev_qfyr_t llc_reject_ev_qfyrs_4[] = { 2228 [0] = llc_conn_ev_qlfy_p_flag_eq_1, 2229 [1] = NULL, 2230 }; 2231 2232 static const llc_conn_action_t llc_reject_actions_4[] = { 2233 [0] = llc_conn_ac_send_rnr_xxx_x_set_0, 2234 [1] = llc_conn_ac_set_data_flag_2, 2235 [2] = NULL, 2236 }; 2237 2238 static const struct llc_conn_state_trans llc_reject_state_trans_4 = { 2239 .ev = llc_conn_ev_local_busy_detected, 2240 .next_state = LLC_CONN_STATE_BUSY, 2241 .ev_qualifiers = llc_reject_ev_qfyrs_4, 2242 .ev_actions = llc_reject_actions_4, 2243 }; 2244 2245 /* State transitions for LLC_CONN_EV_RX_I_CMD_Pbit_SET_0_UNEXPD_Ns event */ 2246 static const llc_conn_action_t llc_reject_actions_5a[] = { 2247 [0] = llc_conn_ac_upd_nr_received, 2248 [1] = llc_conn_ac_upd_p_flag, 2249 [2] = llc_conn_ac_clear_remote_busy_if_f_eq_1, 2250 [3] = NULL, 2251 }; 2252 2253 static const struct llc_conn_state_trans llc_reject_state_trans_5a = { 2254 .ev = llc_conn_ev_rx_i_cmd_pbit_set_0_unexpd_ns, 2255 .next_state = LLC_CONN_STATE_REJ, 2256 .ev_qualifiers = NONE, 2257 .ev_actions = llc_reject_actions_5a, 2258 }; 2259 2260 /* State transitions for LLC_CONN_EV_RX_I_RSP_Fbit_SET_0_UNEXPD_Ns event */ 2261 static const llc_conn_action_t llc_reject_actions_5b[] = { 2262 [0] = llc_conn_ac_upd_nr_received, 2263 [1] = llc_conn_ac_upd_p_flag, 2264 [2] = llc_conn_ac_clear_remote_busy_if_f_eq_1, 2265 [3] = NULL, 2266 }; 2267 2268 static const struct llc_conn_state_trans llc_reject_state_trans_5b = { 2269 .ev = llc_conn_ev_rx_i_rsp_fbit_set_0_unexpd_ns, 2270 .next_state = LLC_CONN_STATE_REJ, 2271 .ev_qualifiers = NONE, 2272 .ev_actions = llc_reject_actions_5b, 2273 }; 2274 2275 /* State transitions for LLC_CONN_EV_RX_I_RSP_Fbit_SET_1_UNEXPD_Ns event */ 2276 static const llc_conn_ev_qfyr_t llc_reject_ev_qfyrs_5c[] = { 2277 [0] = llc_conn_ev_qlfy_p_flag_eq_1, 2278 [1] = NULL, 2279 }; 2280 2281 static const llc_conn_action_t llc_reject_actions_5c[] = { 2282 [0] = llc_conn_ac_upd_nr_received, 2283 [1] = llc_conn_ac_upd_p_flag, 2284 [2] = llc_conn_ac_clear_remote_busy_if_f_eq_1, 2285 [3] = NULL, 2286 }; 2287 2288 static const struct llc_conn_state_trans llc_reject_state_trans_5c = { 2289 .ev = llc_conn_ev_rx_i_rsp_fbit_set_1_unexpd_ns, 2290 .next_state = LLC_CONN_STATE_REJ, 2291 .ev_qualifiers = llc_reject_ev_qfyrs_5c, 2292 .ev_actions = llc_reject_actions_5c, 2293 }; 2294 2295 /* State transitions for LLC_CONN_EV_RX_I_CMD_Pbit_SET_1_UNEXPD_Ns event */ 2296 static const llc_conn_action_t llc_reject_actions_6[] = { 2297 [0] = llc_conn_ac_send_rr_rsp_f_set_1, 2298 [1] = llc_conn_ac_upd_nr_received, 2299 [2] = NULL, 2300 }; 2301 2302 static const struct llc_conn_state_trans llc_reject_state_trans_6 = { 2303 .ev = llc_conn_ev_rx_i_cmd_pbit_set_1_unexpd_ns, 2304 .next_state = LLC_CONN_STATE_REJ, 2305 .ev_qualifiers = NONE, 2306 .ev_actions = llc_reject_actions_6, 2307 }; 2308 2309 /* State transitions for LLC_CONN_EV_RX_I_RSP_Fbit_SET_X event */ 2310 static const llc_conn_ev_qfyr_t llc_reject_ev_qfyrs_7a[] = { 2311 [0] = llc_conn_ev_qlfy_p_flag_eq_f, 2312 [1] = NULL, 2313 }; 2314 2315 static const llc_conn_action_t llc_reject_actions_7a[] = { 2316 [0] = llc_conn_ac_inc_vr_by_1, 2317 [1] = llc_conn_ac_data_ind, 2318 [2] = llc_conn_ac_upd_p_flag, 2319 [3] = llc_conn_ac_send_ack_xxx_x_set_0, 2320 [4] = llc_conn_ac_upd_nr_received, 2321 [5] = llc_conn_ac_clear_remote_busy_if_f_eq_1, 2322 [6] = llc_conn_ac_stop_rej_timer, 2323 [7] = NULL, 2324 2325 }; 2326 2327 static const struct llc_conn_state_trans llc_reject_state_trans_7a = { 2328 .ev = llc_conn_ev_rx_i_rsp_fbit_set_x, 2329 .next_state = LLC_CONN_STATE_NORMAL, 2330 .ev_qualifiers = llc_reject_ev_qfyrs_7a, 2331 .ev_actions = llc_reject_actions_7a, 2332 }; 2333 2334 /* State transitions for LLC_CONN_EV_RX_I_CMD_Pbit_SET_0 event */ 2335 static const llc_conn_ev_qfyr_t llc_reject_ev_qfyrs_7b[] = { 2336 [0] = llc_conn_ev_qlfy_p_flag_eq_0, 2337 [1] = NULL, 2338 }; 2339 2340 static const llc_conn_action_t llc_reject_actions_7b[] = { 2341 [0] = llc_conn_ac_inc_vr_by_1, 2342 [1] = llc_conn_ac_data_ind, 2343 [2] = llc_conn_ac_upd_p_flag, 2344 [3] = llc_conn_ac_send_ack_xxx_x_set_0, 2345 [4] = llc_conn_ac_upd_nr_received, 2346 [5] = llc_conn_ac_clear_remote_busy_if_f_eq_1, 2347 [6] = llc_conn_ac_stop_rej_timer, 2348 [7] = NULL, 2349 }; 2350 2351 static const struct llc_conn_state_trans llc_reject_state_trans_7b = { 2352 .ev = llc_conn_ev_rx_i_cmd_pbit_set_0, 2353 .next_state = LLC_CONN_STATE_NORMAL, 2354 .ev_qualifiers = llc_reject_ev_qfyrs_7b, 2355 .ev_actions = llc_reject_actions_7b, 2356 }; 2357 2358 /* State transitions for LLC_CONN_EV_RX_I_RSP_Fbit_SET_0 event */ 2359 static const llc_conn_ev_qfyr_t llc_reject_ev_qfyrs_8a[] = { 2360 [0] = llc_conn_ev_qlfy_p_flag_eq_1, 2361 [1] = NULL, 2362 }; 2363 2364 static const llc_conn_action_t llc_reject_actions_8a[] = { 2365 [0] = llc_conn_ac_inc_vr_by_1, 2366 [1] = llc_conn_ac_data_ind, 2367 [2] = llc_conn_ac_send_ack_xxx_x_set_0, 2368 [3] = llc_conn_ac_upd_nr_received, 2369 [4] = llc_conn_ac_stop_rej_timer, 2370 [5] = NULL, 2371 }; 2372 2373 static const struct llc_conn_state_trans llc_reject_state_trans_8a = { 2374 .ev = llc_conn_ev_rx_i_rsp_fbit_set_0, 2375 .next_state = LLC_CONN_STATE_NORMAL, 2376 .ev_qualifiers = llc_reject_ev_qfyrs_8a, 2377 .ev_actions = llc_reject_actions_8a, 2378 }; 2379 2380 /* State transitions for LLC_CONN_EV_RX_I_CMD_Pbit_SET_0 event */ 2381 static const llc_conn_ev_qfyr_t llc_reject_ev_qfyrs_8b[] = { 2382 [0] = llc_conn_ev_qlfy_p_flag_eq_1, 2383 [1] = NULL, 2384 }; 2385 2386 static const llc_conn_action_t llc_reject_actions_8b[] = { 2387 [0] = llc_conn_ac_inc_vr_by_1, 2388 [1] = llc_conn_ac_data_ind, 2389 [2] = llc_conn_ac_send_ack_xxx_x_set_0, 2390 [3] = llc_conn_ac_upd_nr_received, 2391 [4] = llc_conn_ac_stop_rej_timer, 2392 [5] = NULL, 2393 }; 2394 2395 static const struct llc_conn_state_trans llc_reject_state_trans_8b = { 2396 .ev = llc_conn_ev_rx_i_cmd_pbit_set_0, 2397 .next_state = LLC_CONN_STATE_NORMAL, 2398 .ev_qualifiers = llc_reject_ev_qfyrs_8b, 2399 .ev_actions = llc_reject_actions_8b, 2400 }; 2401 2402 /* State transitions for LLC_CONN_EV_RX_I_CMD_Pbit_SET_1 event */ 2403 static const llc_conn_action_t llc_reject_actions_9[] = { 2404 [0] = llc_conn_ac_inc_vr_by_1, 2405 [1] = llc_conn_ac_data_ind, 2406 [2] = llc_conn_ac_send_ack_rsp_f_set_1, 2407 [3] = llc_conn_ac_upd_nr_received, 2408 [4] = llc_conn_ac_stop_rej_timer, 2409 [5] = NULL, 2410 }; 2411 2412 static const struct llc_conn_state_trans llc_reject_state_trans_9 = { 2413 .ev = llc_conn_ev_rx_i_cmd_pbit_set_1, 2414 .next_state = LLC_CONN_STATE_NORMAL, 2415 .ev_qualifiers = NONE, 2416 .ev_actions = llc_reject_actions_9, 2417 }; 2418 2419 /* State transitions for LLC_CONN_EV_RX_RR_CMD_Pbit_SET_0 event */ 2420 static const llc_conn_action_t llc_reject_actions_10a[] = { 2421 [0] = llc_conn_ac_upd_p_flag, 2422 [1] = llc_conn_ac_upd_nr_received, 2423 [2] = llc_conn_ac_clear_remote_busy, 2424 [3] = NULL, 2425 }; 2426 2427 static const struct llc_conn_state_trans llc_reject_state_trans_10a = { 2428 .ev = llc_conn_ev_rx_rr_cmd_pbit_set_0, 2429 .next_state = LLC_CONN_STATE_REJ, 2430 .ev_qualifiers = NONE, 2431 .ev_actions = llc_reject_actions_10a, 2432 }; 2433 2434 /* State transitions for LLC_CONN_EV_RX_RR_RSP_Fbit_SET_0 event */ 2435 static const llc_conn_action_t llc_reject_actions_10b[] = { 2436 [0] = llc_conn_ac_upd_p_flag, 2437 [1] = llc_conn_ac_upd_nr_received, 2438 [2] = llc_conn_ac_clear_remote_busy, 2439 [3] = NULL, 2440 }; 2441 2442 static const struct llc_conn_state_trans llc_reject_state_trans_10b = { 2443 .ev = llc_conn_ev_rx_rr_rsp_fbit_set_0, 2444 .next_state = LLC_CONN_STATE_REJ, 2445 .ev_qualifiers = NONE, 2446 .ev_actions = llc_reject_actions_10b, 2447 }; 2448 2449 /* State transitions for LLC_CONN_EV_RX_RR_RSP_Fbit_SET_1 event */ 2450 static const llc_conn_ev_qfyr_t llc_reject_ev_qfyrs_10c[] = { 2451 [0] = llc_conn_ev_qlfy_p_flag_eq_1, 2452 [1] = NULL, 2453 }; 2454 2455 static const llc_conn_action_t llc_reject_actions_10c[] = { 2456 [0] = llc_conn_ac_upd_p_flag, 2457 [1] = llc_conn_ac_upd_nr_received, 2458 [2] = llc_conn_ac_clear_remote_busy, 2459 [3] = NULL, 2460 }; 2461 2462 static const struct llc_conn_state_trans llc_reject_state_trans_10c = { 2463 .ev = llc_conn_ev_rx_rr_rsp_fbit_set_1, 2464 .next_state = LLC_CONN_STATE_REJ, 2465 .ev_qualifiers = llc_reject_ev_qfyrs_10c, 2466 .ev_actions = llc_reject_actions_10c, 2467 }; 2468 2469 /* State transitions for LLC_CONN_EV_RX_RR_CMD_Pbit_SET_1 event */ 2470 static const llc_conn_action_t llc_reject_actions_11[] = { 2471 [0] = llc_conn_ac_send_ack_rsp_f_set_1, 2472 [1] = llc_conn_ac_upd_nr_received, 2473 [2] = llc_conn_ac_clear_remote_busy, 2474 [3] = NULL, 2475 }; 2476 2477 static const struct llc_conn_state_trans llc_reject_state_trans_11 = { 2478 .ev = llc_conn_ev_rx_rr_cmd_pbit_set_1, 2479 .next_state = LLC_CONN_STATE_REJ, 2480 .ev_qualifiers = NONE, 2481 .ev_actions = llc_reject_actions_11, 2482 }; 2483 2484 /* State transitions for LLC_CONN_EV_RX_RNR_CMD_Pbit_SET_0 event */ 2485 static const llc_conn_action_t llc_reject_actions_12a[] = { 2486 [0] = llc_conn_ac_upd_p_flag, 2487 [1] = llc_conn_ac_upd_nr_received, 2488 [2] = llc_conn_ac_set_remote_busy, 2489 [3] = NULL, 2490 }; 2491 2492 static const struct llc_conn_state_trans llc_reject_state_trans_12a = { 2493 .ev = llc_conn_ev_rx_rnr_cmd_pbit_set_0, 2494 .next_state = LLC_CONN_STATE_REJ, 2495 .ev_qualifiers = NONE, 2496 .ev_actions = llc_reject_actions_12a, 2497 }; 2498 2499 /* State transitions for LLC_CONN_EV_RX_RNR_RSP_Fbit_SET_0 event */ 2500 static const llc_conn_action_t llc_reject_actions_12b[] = { 2501 [0] = llc_conn_ac_upd_p_flag, 2502 [1] = llc_conn_ac_upd_nr_received, 2503 [2] = llc_conn_ac_set_remote_busy, 2504 [3] = NULL, 2505 }; 2506 2507 static const struct llc_conn_state_trans llc_reject_state_trans_12b = { 2508 .ev = llc_conn_ev_rx_rnr_rsp_fbit_set_0, 2509 .next_state = LLC_CONN_STATE_REJ, 2510 .ev_qualifiers = NONE, 2511 .ev_actions = llc_reject_actions_12b, 2512 }; 2513 2514 /* State transitions for LLC_CONN_EV_RX_RNR_RSP_Fbit_SET_1 event */ 2515 static const llc_conn_ev_qfyr_t llc_reject_ev_qfyrs_12c[] = { 2516 [0] = llc_conn_ev_qlfy_p_flag_eq_1, 2517 [1] = NULL, 2518 }; 2519 2520 static const llc_conn_action_t llc_reject_actions_12c[] = { 2521 [0] = llc_conn_ac_upd_p_flag, 2522 [1] = llc_conn_ac_upd_nr_received, 2523 [2] = llc_conn_ac_set_remote_busy, 2524 [3] = NULL, 2525 }; 2526 2527 static const struct llc_conn_state_trans llc_reject_state_trans_12c = { 2528 .ev = llc_conn_ev_rx_rnr_rsp_fbit_set_1, 2529 .next_state = LLC_CONN_STATE_REJ, 2530 .ev_qualifiers = llc_reject_ev_qfyrs_12c, 2531 .ev_actions = llc_reject_actions_12c, 2532 }; 2533 2534 /* State transitions for LLC_CONN_EV_RX_RNR_CMD_Pbit_SET_1 event */ 2535 static const llc_conn_action_t llc_reject_actions_13[] = { 2536 [0] = llc_conn_ac_send_rr_rsp_f_set_1, 2537 [1] = llc_conn_ac_upd_nr_received, 2538 [2] = llc_conn_ac_set_remote_busy, 2539 [3] = NULL, 2540 }; 2541 2542 static const struct llc_conn_state_trans llc_reject_state_trans_13 = { 2543 .ev = llc_conn_ev_rx_rnr_cmd_pbit_set_1, 2544 .next_state = LLC_CONN_STATE_REJ, 2545 .ev_qualifiers = NONE, 2546 .ev_actions = llc_reject_actions_13, 2547 }; 2548 2549 /* State transitions for LLC_CONN_EV_RX_REJ_CMD_Pbit_SET_0 event */ 2550 static const llc_conn_ev_qfyr_t llc_reject_ev_qfyrs_14a[] = { 2551 [0] = llc_conn_ev_qlfy_p_flag_eq_0, 2552 [1] = NULL, 2553 }; 2554 2555 static const llc_conn_action_t llc_reject_actions_14a[] = { 2556 [0] = llc_conn_ac_set_vs_nr, 2557 [1] = llc_conn_ac_upd_nr_received, 2558 [2] = llc_conn_ac_upd_p_flag, 2559 [3] = llc_conn_ac_resend_i_xxx_x_set_0, 2560 [4] = llc_conn_ac_clear_remote_busy, 2561 [5] = NULL, 2562 }; 2563 2564 static const struct llc_conn_state_trans llc_reject_state_trans_14a = { 2565 .ev = llc_conn_ev_rx_rej_cmd_pbit_set_0, 2566 .next_state = LLC_CONN_STATE_REJ, 2567 .ev_qualifiers = llc_reject_ev_qfyrs_14a, 2568 .ev_actions = llc_reject_actions_14a, 2569 }; 2570 2571 /* State transitions for LLC_CONN_EV_RX_REJ_RSP_Fbit_SET_X event */ 2572 static const llc_conn_ev_qfyr_t llc_reject_ev_qfyrs_14b[] = { 2573 [0] = llc_conn_ev_qlfy_p_flag_eq_f, 2574 [1] = NULL, 2575 }; 2576 2577 static const llc_conn_action_t llc_reject_actions_14b[] = { 2578 [0] = llc_conn_ac_set_vs_nr, 2579 [1] = llc_conn_ac_upd_nr_received, 2580 [2] = llc_conn_ac_upd_p_flag, 2581 [3] = llc_conn_ac_resend_i_xxx_x_set_0, 2582 [4] = llc_conn_ac_clear_remote_busy, 2583 [5] = NULL, 2584 }; 2585 2586 static const struct llc_conn_state_trans llc_reject_state_trans_14b = { 2587 .ev = llc_conn_ev_rx_rej_rsp_fbit_set_x, 2588 .next_state = LLC_CONN_STATE_REJ, 2589 .ev_qualifiers = llc_reject_ev_qfyrs_14b, 2590 .ev_actions = llc_reject_actions_14b, 2591 }; 2592 2593 /* State transitions for LLC_CONN_EV_RX_REJ_CMD_Pbit_SET_0 event */ 2594 static const llc_conn_ev_qfyr_t llc_reject_ev_qfyrs_15a[] = { 2595 [0] = llc_conn_ev_qlfy_p_flag_eq_1, 2596 [1] = NULL, 2597 }; 2598 2599 static const llc_conn_action_t llc_reject_actions_15a[] = { 2600 [0] = llc_conn_ac_set_vs_nr, 2601 [1] = llc_conn_ac_upd_nr_received, 2602 [2] = llc_conn_ac_resend_i_xxx_x_set_0, 2603 [3] = llc_conn_ac_clear_remote_busy, 2604 [4] = NULL, 2605 }; 2606 2607 static const struct llc_conn_state_trans llc_reject_state_trans_15a = { 2608 .ev = llc_conn_ev_rx_rej_cmd_pbit_set_0, 2609 .next_state = LLC_CONN_STATE_REJ, 2610 .ev_qualifiers = llc_reject_ev_qfyrs_15a, 2611 .ev_actions = llc_reject_actions_15a, 2612 }; 2613 2614 /* State transitions for LLC_CONN_EV_RX_REJ_RSP_Fbit_SET_0 event */ 2615 static const llc_conn_ev_qfyr_t llc_reject_ev_qfyrs_15b[] = { 2616 [0] = llc_conn_ev_qlfy_p_flag_eq_1, 2617 [1] = NULL, 2618 }; 2619 2620 static const llc_conn_action_t llc_reject_actions_15b[] = { 2621 [0] = llc_conn_ac_set_vs_nr, 2622 [1] = llc_conn_ac_upd_nr_received, 2623 [2] = llc_conn_ac_resend_i_xxx_x_set_0, 2624 [3] = llc_conn_ac_clear_remote_busy, 2625 [4] = NULL, 2626 }; 2627 2628 static const struct llc_conn_state_trans llc_reject_state_trans_15b = { 2629 .ev = llc_conn_ev_rx_rej_rsp_fbit_set_0, 2630 .next_state = LLC_CONN_STATE_REJ, 2631 .ev_qualifiers = llc_reject_ev_qfyrs_15b, 2632 .ev_actions = llc_reject_actions_15b, 2633 }; 2634 2635 /* State transitions for LLC_CONN_EV_RX_REJ_CMD_Pbit_SET_1 event */ 2636 static const llc_conn_action_t llc_reject_actions_16[] = { 2637 [0] = llc_conn_ac_set_vs_nr, 2638 [1] = llc_conn_ac_upd_nr_received, 2639 [2] = llc_conn_ac_resend_i_rsp_f_set_1, 2640 [3] = llc_conn_ac_clear_remote_busy, 2641 [4] = NULL, 2642 }; 2643 2644 static const struct llc_conn_state_trans llc_reject_state_trans_16 = { 2645 .ev = llc_conn_ev_rx_rej_cmd_pbit_set_1, 2646 .next_state = LLC_CONN_STATE_REJ, 2647 .ev_qualifiers = NONE, 2648 .ev_actions = llc_reject_actions_16, 2649 }; 2650 2651 /* State transitions for LLC_CONN_EV_INIT_P_F_CYCLE event */ 2652 static const llc_conn_ev_qfyr_t llc_reject_ev_qfyrs_17[] = { 2653 [0] = llc_conn_ev_qlfy_p_flag_eq_0, 2654 [1] = NULL, 2655 }; 2656 2657 static const llc_conn_action_t llc_reject_actions_17[] = { 2658 [0] = llc_conn_ac_send_rr_cmd_p_set_1, 2659 [1] = llc_conn_ac_start_p_timer, 2660 [2] = NULL, 2661 }; 2662 2663 static const struct llc_conn_state_trans llc_reject_state_trans_17 = { 2664 .ev = llc_conn_ev_init_p_f_cycle, 2665 .next_state = LLC_CONN_STATE_REJ, 2666 .ev_qualifiers = llc_reject_ev_qfyrs_17, 2667 .ev_actions = llc_reject_actions_17, 2668 }; 2669 2670 /* State transitions for LLC_CONN_EV_REJ_TMR_EXP event */ 2671 static const llc_conn_ev_qfyr_t llc_reject_ev_qfyrs_18[] = { 2672 [0] = llc_conn_ev_qlfy_p_flag_eq_0, 2673 [1] = llc_conn_ev_qlfy_retry_cnt_lt_n2, 2674 [2] = NULL, 2675 }; 2676 2677 static const llc_conn_action_t llc_reject_actions_18[] = { 2678 [0] = llc_conn_ac_send_rej_cmd_p_set_1, 2679 [1] = llc_conn_ac_start_p_timer, 2680 [2] = llc_conn_ac_start_rej_timer, 2681 [3] = llc_conn_ac_inc_retry_cnt_by_1, 2682 [4] = NULL, 2683 }; 2684 2685 static const struct llc_conn_state_trans llc_reject_state_trans_18 = { 2686 .ev = llc_conn_ev_rej_tmr_exp, 2687 .next_state = LLC_CONN_STATE_REJ, 2688 .ev_qualifiers = llc_reject_ev_qfyrs_18, 2689 .ev_actions = llc_reject_actions_18, 2690 }; 2691 2692 /* State transitions for LLC_CONN_EV_P_TMR_EXP event */ 2693 static const llc_conn_ev_qfyr_t llc_reject_ev_qfyrs_19[] = { 2694 [0] = llc_conn_ev_qlfy_retry_cnt_lt_n2, 2695 [1] = NULL, 2696 }; 2697 2698 static const llc_conn_action_t llc_reject_actions_19[] = { 2699 [0] = llc_conn_ac_send_rr_cmd_p_set_1, 2700 [1] = llc_conn_ac_start_p_timer, 2701 [2] = llc_conn_ac_start_rej_timer, 2702 [3] = llc_conn_ac_inc_retry_cnt_by_1, 2703 [4] = llc_conn_ac_rst_vs, 2704 [5] = NULL, 2705 }; 2706 2707 static const struct llc_conn_state_trans llc_reject_state_trans_19 = { 2708 .ev = llc_conn_ev_p_tmr_exp, 2709 .next_state = LLC_CONN_STATE_AWAIT_REJ, 2710 .ev_qualifiers = llc_reject_ev_qfyrs_19, 2711 .ev_actions = llc_reject_actions_19, 2712 }; 2713 2714 /* State transitions for LLC_CONN_EV_ACK_TMR_EXP event */ 2715 static const llc_conn_ev_qfyr_t llc_reject_ev_qfyrs_20a[] = { 2716 [0] = llc_conn_ev_qlfy_p_flag_eq_0, 2717 [1] = llc_conn_ev_qlfy_retry_cnt_lt_n2, 2718 [2] = NULL, 2719 }; 2720 2721 static const llc_conn_action_t llc_reject_actions_20a[] = { 2722 [0] = llc_conn_ac_send_rr_cmd_p_set_1, 2723 [1] = llc_conn_ac_start_p_timer, 2724 [2] = llc_conn_ac_start_rej_timer, 2725 [3] = llc_conn_ac_inc_retry_cnt_by_1, 2726 [4] = llc_conn_ac_rst_vs, 2727 [5] = NULL, 2728 }; 2729 2730 static const struct llc_conn_state_trans llc_reject_state_trans_20a = { 2731 .ev = llc_conn_ev_ack_tmr_exp, 2732 .next_state = LLC_CONN_STATE_AWAIT_REJ, 2733 .ev_qualifiers = llc_reject_ev_qfyrs_20a, 2734 .ev_actions = llc_reject_actions_20a, 2735 }; 2736 2737 /* State transitions for LLC_CONN_EV_BUSY_TMR_EXP event */ 2738 static const llc_conn_ev_qfyr_t llc_reject_ev_qfyrs_20b[] = { 2739 [0] = llc_conn_ev_qlfy_p_flag_eq_0, 2740 [1] = llc_conn_ev_qlfy_retry_cnt_lt_n2, 2741 [2] = NULL, 2742 }; 2743 2744 static const llc_conn_action_t llc_reject_actions_20b[] = { 2745 [0] = llc_conn_ac_send_rr_cmd_p_set_1, 2746 [1] = llc_conn_ac_start_p_timer, 2747 [2] = llc_conn_ac_start_rej_timer, 2748 [3] = llc_conn_ac_inc_retry_cnt_by_1, 2749 [4] = llc_conn_ac_rst_vs, 2750 [5] = NULL, 2751 }; 2752 2753 static const struct llc_conn_state_trans llc_reject_state_trans_20b = { 2754 .ev = llc_conn_ev_busy_tmr_exp, 2755 .next_state = LLC_CONN_STATE_AWAIT_REJ, 2756 .ev_qualifiers = llc_reject_ev_qfyrs_20b, 2757 .ev_actions = llc_reject_actions_20b, 2758 }; 2759 2760 /* 2761 * Array of pointers; 2762 * one to each transition 2763 */ 2764 static const struct llc_conn_state_trans *llc_reject_state_transitions[] = { 2765 [0] = &llc_common_state_trans_1, /* Request */ 2766 [1] = &llc_common_state_trans_2, 2767 [2] = &llc_common_state_trans_end, 2768 [3] = &llc_reject_state_trans_1, 2769 [4] = &llc_reject_state_trans_2, 2770 [5] = &llc_reject_state_trans_2_1, 2771 [6] = &llc_reject_state_trans_3, /* Local busy */ 2772 [7] = &llc_reject_state_trans_4, 2773 [8] = &llc_common_state_trans_end, 2774 [9] = &llc_reject_state_trans_17, /* Initiate PF cycle */ 2775 [10] = &llc_common_state_trans_end, 2776 [11] = &llc_common_state_trans_11a, /* Timer */ 2777 [12] = &llc_common_state_trans_11b, 2778 [13] = &llc_common_state_trans_11c, 2779 [14] = &llc_common_state_trans_11d, 2780 [15] = &llc_reject_state_trans_18, 2781 [16] = &llc_reject_state_trans_19, 2782 [17] = &llc_reject_state_trans_20a, 2783 [18] = &llc_reject_state_trans_20b, 2784 [19] = &llc_common_state_trans_end, 2785 [20] = &llc_common_state_trans_3, /* Receive frame */ 2786 [21] = &llc_common_state_trans_4, 2787 [22] = &llc_common_state_trans_5, 2788 [23] = &llc_common_state_trans_6, 2789 [24] = &llc_common_state_trans_7a, 2790 [25] = &llc_common_state_trans_7b, 2791 [26] = &llc_common_state_trans_8a, 2792 [27] = &llc_common_state_trans_8b, 2793 [28] = &llc_common_state_trans_8c, 2794 [29] = &llc_common_state_trans_9, 2795 /* [30] = &llc_common_state_trans_10, */ 2796 [30] = &llc_reject_state_trans_5a, 2797 [31] = &llc_reject_state_trans_5b, 2798 [32] = &llc_reject_state_trans_5c, 2799 [33] = &llc_reject_state_trans_6, 2800 [34] = &llc_reject_state_trans_7a, 2801 [35] = &llc_reject_state_trans_7b, 2802 [36] = &llc_reject_state_trans_8a, 2803 [37] = &llc_reject_state_trans_8b, 2804 [38] = &llc_reject_state_trans_9, 2805 [39] = &llc_reject_state_trans_10a, 2806 [40] = &llc_reject_state_trans_10b, 2807 [41] = &llc_reject_state_trans_10c, 2808 [42] = &llc_reject_state_trans_11, 2809 [43] = &llc_reject_state_trans_12a, 2810 [44] = &llc_reject_state_trans_12b, 2811 [45] = &llc_reject_state_trans_12c, 2812 [46] = &llc_reject_state_trans_13, 2813 [47] = &llc_reject_state_trans_14a, 2814 [48] = &llc_reject_state_trans_14b, 2815 [49] = &llc_reject_state_trans_15a, 2816 [50] = &llc_reject_state_trans_15b, 2817 [51] = &llc_reject_state_trans_16, 2818 [52] = &llc_common_state_trans_end, 2819 }; 2820 2821 /* LLC_CONN_STATE_AWAIT transitions */ 2822 /* State transitions for LLC_CONN_EV_DATA_REQ event */ 2823 static const llc_conn_ev_qfyr_t llc_await_ev_qfyrs_1_0[] = { 2824 [0] = llc_conn_ev_qlfy_set_status_refuse, 2825 [1] = NULL, 2826 }; 2827 2828 /* just one member, NULL, .bss zeroes it */ 2829 static const llc_conn_action_t llc_await_actions_1_0[1]; 2830 2831 static const struct llc_conn_state_trans llc_await_state_trans_1_0 = { 2832 .ev = llc_conn_ev_data_req, 2833 .next_state = LLC_CONN_STATE_AWAIT, 2834 .ev_qualifiers = llc_await_ev_qfyrs_1_0, 2835 .ev_actions = llc_await_actions_1_0, 2836 }; 2837 2838 /* State transitions for LLC_CONN_EV_LOCAL_BUSY_DETECTED event */ 2839 static const llc_conn_action_t llc_await_actions_1[] = { 2840 [0] = llc_conn_ac_send_rnr_xxx_x_set_0, 2841 [1] = llc_conn_ac_set_data_flag_0, 2842 [2] = NULL, 2843 }; 2844 2845 static const struct llc_conn_state_trans llc_await_state_trans_1 = { 2846 .ev = llc_conn_ev_local_busy_detected, 2847 .next_state = LLC_CONN_STATE_AWAIT_BUSY, 2848 .ev_qualifiers = NONE, 2849 .ev_actions = llc_await_actions_1, 2850 }; 2851 2852 /* State transitions for LLC_CONN_EV_RX_I_RSP_Fbit_SET_1_UNEXPD_Ns event */ 2853 static const llc_conn_action_t llc_await_actions_2[] = { 2854 [0] = llc_conn_ac_send_rej_xxx_x_set_0, 2855 [1] = llc_conn_ac_upd_nr_received, 2856 [2] = llc_conn_ac_upd_vs, 2857 [3] = llc_conn_ac_stop_p_timer, 2858 [4] = llc_conn_ac_resend_i_xxx_x_set_0, 2859 [5] = llc_conn_ac_start_rej_timer, 2860 [6] = llc_conn_ac_clear_remote_busy, 2861 [7] = NULL, 2862 }; 2863 2864 static const struct llc_conn_state_trans llc_await_state_trans_2 = { 2865 .ev = llc_conn_ev_rx_i_rsp_fbit_set_1_unexpd_ns, 2866 .next_state = LLC_CONN_STATE_REJ, 2867 .ev_qualifiers = NONE, 2868 .ev_actions = llc_await_actions_2, 2869 }; 2870 2871 /* State transitions for LLC_CONN_EV_RX_I_CMD_Pbit_SET_0_UNEXPD_Ns event */ 2872 static const llc_conn_action_t llc_await_actions_3a[] = { 2873 [0] = llc_conn_ac_send_rej_xxx_x_set_0, 2874 [1] = llc_conn_ac_upd_nr_received, 2875 [2] = llc_conn_ac_upd_vs, 2876 [3] = llc_conn_ac_start_rej_timer, 2877 [4] = NULL, 2878 }; 2879 2880 static const struct llc_conn_state_trans llc_await_state_trans_3a = { 2881 .ev = llc_conn_ev_rx_i_cmd_pbit_set_0_unexpd_ns, 2882 .next_state = LLC_CONN_STATE_AWAIT_REJ, 2883 .ev_qualifiers = NONE, 2884 .ev_actions = llc_await_actions_3a, 2885 }; 2886 2887 /* State transitions for LLC_CONN_EV_RX_I_RSP_Fbit_SET_0_UNEXPD_Ns event */ 2888 static const llc_conn_action_t llc_await_actions_3b[] = { 2889 [0] = llc_conn_ac_send_rej_xxx_x_set_0, 2890 [1] = llc_conn_ac_upd_nr_received, 2891 [2] = llc_conn_ac_upd_vs, 2892 [3] = llc_conn_ac_start_rej_timer, 2893 [4] = NULL, 2894 }; 2895 2896 static const struct llc_conn_state_trans llc_await_state_trans_3b = { 2897 .ev = llc_conn_ev_rx_i_rsp_fbit_set_0_unexpd_ns, 2898 .next_state = LLC_CONN_STATE_AWAIT_REJ, 2899 .ev_qualifiers = NONE, 2900 .ev_actions = llc_await_actions_3b, 2901 }; 2902 2903 /* State transitions for LLC_CONN_EV_RX_I_CMD_Pbit_SET_1_UNEXPD_Ns event */ 2904 static const llc_conn_action_t llc_await_actions_4[] = { 2905 [0] = llc_conn_ac_send_rej_rsp_f_set_1, 2906 [1] = llc_conn_ac_upd_nr_received, 2907 [2] = llc_conn_ac_upd_vs, 2908 [3] = llc_conn_ac_start_rej_timer, 2909 [4] = llc_conn_ac_start_p_timer, 2910 [5] = NULL, 2911 }; 2912 2913 static const struct llc_conn_state_trans llc_await_state_trans_4 = { 2914 .ev = llc_conn_ev_rx_i_cmd_pbit_set_1_unexpd_ns, 2915 .next_state = LLC_CONN_STATE_AWAIT_REJ, 2916 .ev_qualifiers = NONE, 2917 .ev_actions = llc_await_actions_4, 2918 }; 2919 2920 /* State transitions for LLC_CONN_EV_RX_I_RSP_Fbit_SET_1 event */ 2921 static const llc_conn_action_t llc_await_actions_5[] = { 2922 [0] = llc_conn_ac_inc_vr_by_1, 2923 [1] = llc_conn_ac_data_ind, 2924 [2] = llc_conn_ac_stop_p_timer, 2925 [3] = llc_conn_ac_upd_nr_received, 2926 [4] = llc_conn_ac_upd_vs, 2927 [5] = llc_conn_ac_resend_i_xxx_x_set_0_or_send_rr, 2928 [6] = llc_conn_ac_clear_remote_busy, 2929 [7] = NULL, 2930 }; 2931 2932 static const struct llc_conn_state_trans llc_await_state_trans_5 = { 2933 .ev = llc_conn_ev_rx_i_rsp_fbit_set_1, 2934 .next_state = LLC_CONN_STATE_NORMAL, 2935 .ev_qualifiers = NONE, 2936 .ev_actions = llc_await_actions_5, 2937 }; 2938 2939 /* State transitions for LLC_CONN_EV_RX_I_RSP_Fbit_SET_0 event */ 2940 static const llc_conn_action_t llc_await_actions_6a[] = { 2941 [0] = llc_conn_ac_inc_vr_by_1, 2942 [1] = llc_conn_ac_data_ind, 2943 [2] = llc_conn_ac_send_rr_xxx_x_set_0, 2944 [3] = llc_conn_ac_upd_nr_received, 2945 [4] = llc_conn_ac_upd_vs, 2946 [5] = NULL, 2947 }; 2948 2949 static const struct llc_conn_state_trans llc_await_state_trans_6a = { 2950 .ev = llc_conn_ev_rx_i_rsp_fbit_set_0, 2951 .next_state = LLC_CONN_STATE_AWAIT, 2952 .ev_qualifiers = NONE, 2953 .ev_actions = llc_await_actions_6a, 2954 }; 2955 2956 /* State transitions for LLC_CONN_EV_RX_I_CMD_Pbit_SET_0 event */ 2957 static const llc_conn_action_t llc_await_actions_6b[] = { 2958 [0] = llc_conn_ac_inc_vr_by_1, 2959 [1] = llc_conn_ac_data_ind, 2960 [2] = llc_conn_ac_send_rr_xxx_x_set_0, 2961 [3] = llc_conn_ac_upd_nr_received, 2962 [4] = llc_conn_ac_upd_vs, 2963 [5] = NULL, 2964 }; 2965 2966 static const struct llc_conn_state_trans llc_await_state_trans_6b = { 2967 .ev = llc_conn_ev_rx_i_cmd_pbit_set_0, 2968 .next_state = LLC_CONN_STATE_AWAIT, 2969 .ev_qualifiers = NONE, 2970 .ev_actions = llc_await_actions_6b, 2971 }; 2972 2973 /* State transitions for LLC_CONN_EV_RX_I_CMD_Pbit_SET_1 event */ 2974 static const llc_conn_action_t llc_await_actions_7[] = { 2975 [0] = llc_conn_ac_inc_vr_by_1, 2976 [1] = llc_conn_ac_data_ind, 2977 [2] = llc_conn_ac_send_rr_rsp_f_set_1, 2978 [3] = llc_conn_ac_upd_nr_received, 2979 [4] = llc_conn_ac_upd_vs, 2980 [5] = NULL, 2981 }; 2982 2983 static const struct llc_conn_state_trans llc_await_state_trans_7 = { 2984 .ev = llc_conn_ev_rx_i_cmd_pbit_set_1, 2985 .next_state = LLC_CONN_STATE_AWAIT, 2986 .ev_qualifiers = NONE, 2987 .ev_actions = llc_await_actions_7, 2988 }; 2989 2990 /* State transitions for LLC_CONN_EV_RX_RR_RSP_Fbit_SET_1 event */ 2991 static const llc_conn_action_t llc_await_actions_8a[] = { 2992 [0] = llc_conn_ac_upd_nr_received, 2993 [1] = llc_conn_ac_upd_vs, 2994 [2] = llc_conn_ac_stop_p_timer, 2995 [3] = llc_conn_ac_resend_i_xxx_x_set_0, 2996 [4] = llc_conn_ac_clear_remote_busy, 2997 [5] = NULL, 2998 }; 2999 3000 static const struct llc_conn_state_trans llc_await_state_trans_8a = { 3001 .ev = llc_conn_ev_rx_rr_rsp_fbit_set_1, 3002 .next_state = LLC_CONN_STATE_NORMAL, 3003 .ev_qualifiers = NONE, 3004 .ev_actions = llc_await_actions_8a, 3005 }; 3006 3007 /* State transitions for LLC_CONN_EV_RX_REJ_RSP_Fbit_SET_1 event */ 3008 static const llc_conn_action_t llc_await_actions_8b[] = { 3009 [0] = llc_conn_ac_upd_nr_received, 3010 [1] = llc_conn_ac_upd_vs, 3011 [2] = llc_conn_ac_stop_p_timer, 3012 [3] = llc_conn_ac_resend_i_xxx_x_set_0, 3013 [4] = llc_conn_ac_clear_remote_busy, 3014 [5] = NULL, 3015 }; 3016 3017 static const struct llc_conn_state_trans llc_await_state_trans_8b = { 3018 .ev = llc_conn_ev_rx_rej_rsp_fbit_set_1, 3019 .next_state = LLC_CONN_STATE_NORMAL, 3020 .ev_qualifiers = NONE, 3021 .ev_actions = llc_await_actions_8b, 3022 }; 3023 3024 /* State transitions for LLC_CONN_EV_RX_RR_CMD_Pbit_SET_0 event */ 3025 static const llc_conn_action_t llc_await_actions_9a[] = { 3026 [0] = llc_conn_ac_upd_nr_received, 3027 [1] = llc_conn_ac_upd_vs, 3028 [2] = llc_conn_ac_clear_remote_busy, 3029 [3] = NULL, 3030 }; 3031 3032 static const struct llc_conn_state_trans llc_await_state_trans_9a = { 3033 .ev = llc_conn_ev_rx_rr_cmd_pbit_set_0, 3034 .next_state = LLC_CONN_STATE_AWAIT, 3035 .ev_qualifiers = NONE, 3036 .ev_actions = llc_await_actions_9a, 3037 }; 3038 3039 /* State transitions for LLC_CONN_EV_RX_RR_RSP_Fbit_SET_0 event */ 3040 static const llc_conn_action_t llc_await_actions_9b[] = { 3041 [0] = llc_conn_ac_upd_nr_received, 3042 [1] = llc_conn_ac_upd_vs, 3043 [2] = llc_conn_ac_clear_remote_busy, 3044 [3] = NULL, 3045 }; 3046 3047 static const struct llc_conn_state_trans llc_await_state_trans_9b = { 3048 .ev = llc_conn_ev_rx_rr_rsp_fbit_set_0, 3049 .next_state = LLC_CONN_STATE_AWAIT, 3050 .ev_qualifiers = NONE, 3051 .ev_actions = llc_await_actions_9b, 3052 }; 3053 3054 /* State transitions for LLC_CONN_EV_RX_REJ_CMD_Pbit_SET_0 event */ 3055 static const llc_conn_action_t llc_await_actions_9c[] = { 3056 [0] = llc_conn_ac_upd_nr_received, 3057 [1] = llc_conn_ac_upd_vs, 3058 [2] = llc_conn_ac_clear_remote_busy, 3059 [3] = NULL, 3060 }; 3061 3062 static const struct llc_conn_state_trans llc_await_state_trans_9c = { 3063 .ev = llc_conn_ev_rx_rej_cmd_pbit_set_0, 3064 .next_state = LLC_CONN_STATE_AWAIT, 3065 .ev_qualifiers = NONE, 3066 .ev_actions = llc_await_actions_9c, 3067 }; 3068 3069 /* State transitions for LLC_CONN_EV_RX_REJ_RSP_Fbit_SET_0 event */ 3070 static const llc_conn_action_t llc_await_actions_9d[] = { 3071 [0] = llc_conn_ac_upd_nr_received, 3072 [1] = llc_conn_ac_upd_vs, 3073 [2] = llc_conn_ac_clear_remote_busy, 3074 [3] = NULL, 3075 }; 3076 3077 static const struct llc_conn_state_trans llc_await_state_trans_9d = { 3078 .ev = llc_conn_ev_rx_rej_rsp_fbit_set_0, 3079 .next_state = LLC_CONN_STATE_AWAIT, 3080 .ev_qualifiers = NONE, 3081 .ev_actions = llc_await_actions_9d, 3082 }; 3083 3084 /* State transitions for LLC_CONN_EV_RX_RR_CMD_Pbit_SET_1 event */ 3085 static const llc_conn_action_t llc_await_actions_10a[] = { 3086 [0] = llc_conn_ac_send_rr_rsp_f_set_1, 3087 [1] = llc_conn_ac_upd_nr_received, 3088 [2] = llc_conn_ac_upd_vs, 3089 [3] = llc_conn_ac_clear_remote_busy, 3090 [4] = NULL, 3091 }; 3092 3093 static const struct llc_conn_state_trans llc_await_state_trans_10a = { 3094 .ev = llc_conn_ev_rx_rr_cmd_pbit_set_1, 3095 .next_state = LLC_CONN_STATE_AWAIT, 3096 .ev_qualifiers = NONE, 3097 .ev_actions = llc_await_actions_10a, 3098 }; 3099 3100 /* State transitions for LLC_CONN_EV_RX_REJ_CMD_Pbit_SET_1 event */ 3101 static const llc_conn_action_t llc_await_actions_10b[] = { 3102 [0] = llc_conn_ac_send_rr_rsp_f_set_1, 3103 [1] = llc_conn_ac_upd_nr_received, 3104 [2] = llc_conn_ac_upd_vs, 3105 [3] = llc_conn_ac_clear_remote_busy, 3106 [4] = NULL, 3107 }; 3108 3109 static const struct llc_conn_state_trans llc_await_state_trans_10b = { 3110 .ev = llc_conn_ev_rx_rej_cmd_pbit_set_1, 3111 .next_state = LLC_CONN_STATE_AWAIT, 3112 .ev_qualifiers = NONE, 3113 .ev_actions = llc_await_actions_10b, 3114 }; 3115 3116 /* State transitions for LLC_CONN_EV_RX_RNR_RSP_Fbit_SET_1 event */ 3117 static const llc_conn_action_t llc_await_actions_11[] = { 3118 [0] = llc_conn_ac_upd_nr_received, 3119 [1] = llc_conn_ac_upd_vs, 3120 [2] = llc_conn_ac_stop_p_timer, 3121 [3] = llc_conn_ac_set_remote_busy, 3122 [4] = NULL, 3123 }; 3124 3125 static const struct llc_conn_state_trans llc_await_state_trans_11 = { 3126 .ev = llc_conn_ev_rx_rnr_rsp_fbit_set_1, 3127 .next_state = LLC_CONN_STATE_NORMAL, 3128 .ev_qualifiers = NONE, 3129 .ev_actions = llc_await_actions_11, 3130 }; 3131 3132 /* State transitions for LLC_CONN_EV_RX_RNR_CMD_Pbit_SET_0 event */ 3133 static const llc_conn_action_t llc_await_actions_12a[] = { 3134 [0] = llc_conn_ac_upd_nr_received, 3135 [1] = llc_conn_ac_upd_vs, 3136 [2] = llc_conn_ac_set_remote_busy, 3137 [3] = NULL, 3138 }; 3139 3140 static const struct llc_conn_state_trans llc_await_state_trans_12a = { 3141 .ev = llc_conn_ev_rx_rnr_cmd_pbit_set_0, 3142 .next_state = LLC_CONN_STATE_AWAIT, 3143 .ev_qualifiers = NONE, 3144 .ev_actions = llc_await_actions_12a, 3145 }; 3146 3147 /* State transitions for LLC_CONN_EV_RX_RNR_RSP_Fbit_SET_0 event */ 3148 static const llc_conn_action_t llc_await_actions_12b[] = { 3149 [0] = llc_conn_ac_upd_nr_received, 3150 [1] = llc_conn_ac_upd_vs, 3151 [2] = llc_conn_ac_set_remote_busy, 3152 [3] = NULL, 3153 }; 3154 3155 static const struct llc_conn_state_trans llc_await_state_trans_12b = { 3156 .ev = llc_conn_ev_rx_rnr_rsp_fbit_set_0, 3157 .next_state = LLC_CONN_STATE_AWAIT, 3158 .ev_qualifiers = NONE, 3159 .ev_actions = llc_await_actions_12b, 3160 }; 3161 3162 /* State transitions for LLC_CONN_EV_RX_RNR_CMD_Pbit_SET_1 event */ 3163 static const llc_conn_action_t llc_await_actions_13[] = { 3164 [0] = llc_conn_ac_send_rr_rsp_f_set_1, 3165 [1] = llc_conn_ac_upd_nr_received, 3166 [2] = llc_conn_ac_upd_vs, 3167 [3] = llc_conn_ac_set_remote_busy, 3168 [4] = NULL, 3169 }; 3170 3171 static const struct llc_conn_state_trans llc_await_state_trans_13 = { 3172 .ev = llc_conn_ev_rx_rnr_cmd_pbit_set_1, 3173 .next_state = LLC_CONN_STATE_AWAIT, 3174 .ev_qualifiers = NONE, 3175 .ev_actions = llc_await_actions_13, 3176 }; 3177 3178 /* State transitions for LLC_CONN_EV_P_TMR_EXP event */ 3179 static const llc_conn_ev_qfyr_t llc_await_ev_qfyrs_14[] = { 3180 [0] = llc_conn_ev_qlfy_retry_cnt_lt_n2, 3181 [1] = NULL, 3182 }; 3183 3184 static const llc_conn_action_t llc_await_actions_14[] = { 3185 [0] = llc_conn_ac_send_rr_cmd_p_set_1, 3186 [1] = llc_conn_ac_start_p_timer, 3187 [2] = llc_conn_ac_inc_retry_cnt_by_1, 3188 [3] = NULL, 3189 }; 3190 3191 static const struct llc_conn_state_trans llc_await_state_trans_14 = { 3192 .ev = llc_conn_ev_p_tmr_exp, 3193 .next_state = LLC_CONN_STATE_AWAIT, 3194 .ev_qualifiers = llc_await_ev_qfyrs_14, 3195 .ev_actions = llc_await_actions_14, 3196 }; 3197 3198 /* 3199 * Array of pointers; 3200 * one to each transition 3201 */ 3202 static const struct llc_conn_state_trans *llc_await_state_transitions[] = { 3203 [0] = &llc_common_state_trans_1, /* Request */ 3204 [1] = &llc_common_state_trans_2, 3205 [2] = &llc_await_state_trans_1_0, 3206 [3] = &llc_common_state_trans_end, 3207 [4] = &llc_await_state_trans_1, /* Local busy */ 3208 [5] = &llc_common_state_trans_end, 3209 [6] = &llc_common_state_trans_end, /* Initiate PF Cycle */ 3210 [7] = &llc_common_state_trans_11a, /* Timer */ 3211 [8] = &llc_common_state_trans_11b, 3212 [9] = &llc_common_state_trans_11c, 3213 [10] = &llc_common_state_trans_11d, 3214 [11] = &llc_await_state_trans_14, 3215 [12] = &llc_common_state_trans_end, 3216 [13] = &llc_common_state_trans_3, /* Receive frame */ 3217 [14] = &llc_common_state_trans_4, 3218 [15] = &llc_common_state_trans_5, 3219 [16] = &llc_common_state_trans_6, 3220 [17] = &llc_common_state_trans_7a, 3221 [18] = &llc_common_state_trans_7b, 3222 [19] = &llc_common_state_trans_8a, 3223 [20] = &llc_common_state_trans_8b, 3224 [21] = &llc_common_state_trans_8c, 3225 [22] = &llc_common_state_trans_9, 3226 /* [23] = &llc_common_state_trans_10, */ 3227 [23] = &llc_await_state_trans_2, 3228 [24] = &llc_await_state_trans_3a, 3229 [25] = &llc_await_state_trans_3b, 3230 [26] = &llc_await_state_trans_4, 3231 [27] = &llc_await_state_trans_5, 3232 [28] = &llc_await_state_trans_6a, 3233 [29] = &llc_await_state_trans_6b, 3234 [30] = &llc_await_state_trans_7, 3235 [31] = &llc_await_state_trans_8a, 3236 [32] = &llc_await_state_trans_8b, 3237 [33] = &llc_await_state_trans_9a, 3238 [34] = &llc_await_state_trans_9b, 3239 [35] = &llc_await_state_trans_9c, 3240 [36] = &llc_await_state_trans_9d, 3241 [37] = &llc_await_state_trans_10a, 3242 [38] = &llc_await_state_trans_10b, 3243 [39] = &llc_await_state_trans_11, 3244 [40] = &llc_await_state_trans_12a, 3245 [41] = &llc_await_state_trans_12b, 3246 [42] = &llc_await_state_trans_13, 3247 [43] = &llc_common_state_trans_end, 3248 }; 3249 3250 /* LLC_CONN_STATE_AWAIT_BUSY transitions */ 3251 /* State transitions for LLC_CONN_EV_DATA_CONN_REQ event */ 3252 static const llc_conn_ev_qfyr_t llc_await_busy_ev_qfyrs_1_0[] = { 3253 [0] = llc_conn_ev_qlfy_set_status_refuse, 3254 [1] = NULL, 3255 }; 3256 3257 /* just one member, NULL, .bss zeroes it */ 3258 static const llc_conn_action_t llc_await_busy_actions_1_0[1]; 3259 3260 static const struct llc_conn_state_trans llc_await_busy_state_trans_1_0 = { 3261 .ev = llc_conn_ev_data_req, 3262 .next_state = LLC_CONN_STATE_AWAIT_BUSY, 3263 .ev_qualifiers = llc_await_busy_ev_qfyrs_1_0, 3264 .ev_actions = llc_await_busy_actions_1_0, 3265 }; 3266 3267 /* State transitions for LLC_CONN_EV_LOCAL_BUSY_CLEARED event */ 3268 static const llc_conn_ev_qfyr_t llc_await_busy_ev_qfyrs_1[] = { 3269 [0] = llc_conn_ev_qlfy_data_flag_eq_1, 3270 [1] = NULL, 3271 }; 3272 3273 static const llc_conn_action_t llc_await_busy_actions_1[] = { 3274 [0] = llc_conn_ac_send_rej_xxx_x_set_0, 3275 [1] = llc_conn_ac_start_rej_timer, 3276 [2] = NULL, 3277 }; 3278 3279 static const struct llc_conn_state_trans llc_await_busy_state_trans_1 = { 3280 .ev = llc_conn_ev_local_busy_cleared, 3281 .next_state = LLC_CONN_STATE_AWAIT_REJ, 3282 .ev_qualifiers = llc_await_busy_ev_qfyrs_1, 3283 .ev_actions = llc_await_busy_actions_1, 3284 }; 3285 3286 /* State transitions for LLC_CONN_EV_LOCAL_BUSY_CLEARED event */ 3287 static const llc_conn_ev_qfyr_t llc_await_busy_ev_qfyrs_2[] = { 3288 [0] = llc_conn_ev_qlfy_data_flag_eq_0, 3289 [1] = NULL, 3290 }; 3291 3292 static const llc_conn_action_t llc_await_busy_actions_2[] = { 3293 [0] = llc_conn_ac_send_rr_xxx_x_set_0, 3294 [1] = NULL, 3295 }; 3296 3297 static const struct llc_conn_state_trans llc_await_busy_state_trans_2 = { 3298 .ev = llc_conn_ev_local_busy_cleared, 3299 .next_state = LLC_CONN_STATE_AWAIT, 3300 .ev_qualifiers = llc_await_busy_ev_qfyrs_2, 3301 .ev_actions = llc_await_busy_actions_2, 3302 }; 3303 3304 /* State transitions for LLC_CONN_EV_LOCAL_BUSY_CLEARED event */ 3305 static const llc_conn_ev_qfyr_t llc_await_busy_ev_qfyrs_3[] = { 3306 [0] = llc_conn_ev_qlfy_data_flag_eq_2, 3307 [1] = NULL, 3308 }; 3309 3310 static const llc_conn_action_t llc_await_busy_actions_3[] = { 3311 [0] = llc_conn_ac_send_rr_xxx_x_set_0, 3312 [1] = NULL, 3313 }; 3314 3315 static const struct llc_conn_state_trans llc_await_busy_state_trans_3 = { 3316 .ev = llc_conn_ev_local_busy_cleared, 3317 .next_state = LLC_CONN_STATE_AWAIT_REJ, 3318 .ev_qualifiers = llc_await_busy_ev_qfyrs_3, 3319 .ev_actions = llc_await_busy_actions_3, 3320 }; 3321 3322 /* State transitions for LLC_CONN_EV_RX_I_RSP_Fbit_SET_1_UNEXPD_Ns event */ 3323 static const llc_conn_action_t llc_await_busy_actions_4[] = { 3324 [0] = llc_conn_ac_opt_send_rnr_xxx_x_set_0, 3325 [1] = llc_conn_ac_upd_nr_received, 3326 [2] = llc_conn_ac_upd_vs, 3327 [3] = llc_conn_ac_stop_p_timer, 3328 [4] = llc_conn_ac_set_data_flag_1, 3329 [5] = llc_conn_ac_clear_remote_busy, 3330 [6] = llc_conn_ac_resend_i_xxx_x_set_0, 3331 [7] = NULL, 3332 }; 3333 3334 static const struct llc_conn_state_trans llc_await_busy_state_trans_4 = { 3335 .ev = llc_conn_ev_rx_i_rsp_fbit_set_1_unexpd_ns, 3336 .next_state = LLC_CONN_STATE_BUSY, 3337 .ev_qualifiers = NONE, 3338 .ev_actions = llc_await_busy_actions_4, 3339 }; 3340 3341 /* State transitions for LLC_CONN_EV_RX_I_CMD_Pbit_SET_0_UNEXPD_Ns event */ 3342 static const llc_conn_action_t llc_await_busy_actions_5a[] = { 3343 [0] = llc_conn_ac_opt_send_rnr_xxx_x_set_0, 3344 [1] = llc_conn_ac_upd_nr_received, 3345 [2] = llc_conn_ac_upd_vs, 3346 [3] = llc_conn_ac_set_data_flag_1, 3347 [4] = NULL, 3348 }; 3349 3350 static const struct llc_conn_state_trans llc_await_busy_state_trans_5a = { 3351 .ev = llc_conn_ev_rx_i_cmd_pbit_set_0_unexpd_ns, 3352 .next_state = LLC_CONN_STATE_AWAIT_BUSY, 3353 .ev_qualifiers = NONE, 3354 .ev_actions = llc_await_busy_actions_5a, 3355 }; 3356 3357 /* State transitions for LLC_CONN_EV_RX_I_RSP_Fbit_SET_0_UNEXPD_Ns event */ 3358 static const llc_conn_action_t llc_await_busy_actions_5b[] = { 3359 [0] = llc_conn_ac_opt_send_rnr_xxx_x_set_0, 3360 [1] = llc_conn_ac_upd_nr_received, 3361 [2] = llc_conn_ac_upd_vs, 3362 [3] = llc_conn_ac_set_data_flag_1, 3363 [4] = NULL, 3364 }; 3365 3366 static const struct llc_conn_state_trans llc_await_busy_state_trans_5b = { 3367 .ev = llc_conn_ev_rx_i_rsp_fbit_set_0_unexpd_ns, 3368 .next_state = LLC_CONN_STATE_AWAIT_BUSY, 3369 .ev_qualifiers = NONE, 3370 .ev_actions = llc_await_busy_actions_5b, 3371 }; 3372 3373 /* State transitions for LLC_CONN_EV_RX_I_CMD_Pbit_SET_1_UNEXPD_Ns event */ 3374 static const llc_conn_action_t llc_await_busy_actions_6[] = { 3375 [0] = llc_conn_ac_send_rnr_rsp_f_set_1, 3376 [1] = llc_conn_ac_upd_nr_received, 3377 [2] = llc_conn_ac_upd_vs, 3378 [3] = llc_conn_ac_set_data_flag_1, 3379 [4] = NULL, 3380 }; 3381 3382 static const struct llc_conn_state_trans llc_await_busy_state_trans_6 = { 3383 .ev = llc_conn_ev_rx_i_cmd_pbit_set_1_unexpd_ns, 3384 .next_state = LLC_CONN_STATE_AWAIT_BUSY, 3385 .ev_qualifiers = NONE, 3386 .ev_actions = llc_await_busy_actions_6, 3387 }; 3388 3389 /* State transitions for LLC_CONN_EV_RX_I_RSP_Fbit_SET_1 event */ 3390 static const llc_conn_action_t llc_await_busy_actions_7[] = { 3391 [0] = llc_conn_ac_opt_send_rnr_xxx_x_set_0, 3392 [1] = llc_conn_ac_inc_vr_by_1, 3393 [2] = llc_conn_ac_data_ind, 3394 [3] = llc_conn_ac_stop_p_timer, 3395 [4] = llc_conn_ac_upd_nr_received, 3396 [5] = llc_conn_ac_upd_vs, 3397 [6] = llc_conn_ac_set_data_flag_0, 3398 [7] = llc_conn_ac_clear_remote_busy, 3399 [8] = llc_conn_ac_resend_i_xxx_x_set_0, 3400 [9] = NULL, 3401 }; 3402 3403 static const struct llc_conn_state_trans llc_await_busy_state_trans_7 = { 3404 .ev = llc_conn_ev_rx_i_rsp_fbit_set_1, 3405 .next_state = LLC_CONN_STATE_BUSY, 3406 .ev_qualifiers = NONE, 3407 .ev_actions = llc_await_busy_actions_7, 3408 }; 3409 3410 /* State transitions for LLC_CONN_EV_RX_I_RSP_Fbit_SET_0 event */ 3411 static const llc_conn_action_t llc_await_busy_actions_8a[] = { 3412 [0] = llc_conn_ac_opt_send_rnr_xxx_x_set_0, 3413 [1] = llc_conn_ac_inc_vr_by_1, 3414 [2] = llc_conn_ac_data_ind, 3415 [3] = llc_conn_ac_upd_nr_received, 3416 [4] = llc_conn_ac_upd_vs, 3417 [5] = llc_conn_ac_set_data_flag_0, 3418 [6] = NULL, 3419 }; 3420 3421 static const struct llc_conn_state_trans llc_await_busy_state_trans_8a = { 3422 .ev = llc_conn_ev_rx_i_rsp_fbit_set_0, 3423 .next_state = LLC_CONN_STATE_AWAIT_BUSY, 3424 .ev_qualifiers = NONE, 3425 .ev_actions = llc_await_busy_actions_8a, 3426 }; 3427 3428 /* State transitions for LLC_CONN_EV_RX_I_CMD_Pbit_SET_0 event */ 3429 static const llc_conn_action_t llc_await_busy_actions_8b[] = { 3430 [0] = llc_conn_ac_opt_send_rnr_xxx_x_set_0, 3431 [1] = llc_conn_ac_inc_vr_by_1, 3432 [2] = llc_conn_ac_data_ind, 3433 [3] = llc_conn_ac_upd_nr_received, 3434 [4] = llc_conn_ac_upd_vs, 3435 [5] = llc_conn_ac_set_data_flag_0, 3436 [6] = NULL, 3437 }; 3438 3439 static const struct llc_conn_state_trans llc_await_busy_state_trans_8b = { 3440 .ev = llc_conn_ev_rx_i_cmd_pbit_set_0, 3441 .next_state = LLC_CONN_STATE_AWAIT_BUSY, 3442 .ev_qualifiers = NONE, 3443 .ev_actions = llc_await_busy_actions_8b, 3444 }; 3445 3446 /* State transitions for LLC_CONN_EV_RX_I_CMD_Pbit_SET_1 event */ 3447 static const llc_conn_action_t llc_await_busy_actions_9[] = { 3448 [0] = llc_conn_ac_send_rnr_rsp_f_set_1, 3449 [1] = llc_conn_ac_inc_vr_by_1, 3450 [2] = llc_conn_ac_data_ind, 3451 [3] = llc_conn_ac_upd_nr_received, 3452 [4] = llc_conn_ac_upd_vs, 3453 [5] = llc_conn_ac_set_data_flag_0, 3454 [6] = NULL, 3455 }; 3456 3457 static const struct llc_conn_state_trans llc_await_busy_state_trans_9 = { 3458 .ev = llc_conn_ev_rx_i_cmd_pbit_set_1, 3459 .next_state = LLC_CONN_STATE_AWAIT_BUSY, 3460 .ev_qualifiers = NONE, 3461 .ev_actions = llc_await_busy_actions_9, 3462 }; 3463 3464 /* State transitions for LLC_CONN_EV_RX_RR_RSP_Fbit_SET_1 event */ 3465 static const llc_conn_action_t llc_await_busy_actions_10a[] = { 3466 [0] = llc_conn_ac_upd_nr_received, 3467 [1] = llc_conn_ac_upd_vs, 3468 [2] = llc_conn_ac_stop_p_timer, 3469 [3] = llc_conn_ac_resend_i_xxx_x_set_0, 3470 [4] = llc_conn_ac_clear_remote_busy, 3471 [5] = NULL, 3472 }; 3473 3474 static const struct llc_conn_state_trans llc_await_busy_state_trans_10a = { 3475 .ev = llc_conn_ev_rx_rr_rsp_fbit_set_1, 3476 .next_state = LLC_CONN_STATE_BUSY, 3477 .ev_qualifiers = NONE, 3478 .ev_actions = llc_await_busy_actions_10a, 3479 }; 3480 3481 /* State transitions for LLC_CONN_EV_RX_REJ_RSP_Fbit_SET_1 event */ 3482 static const llc_conn_action_t llc_await_busy_actions_10b[] = { 3483 [0] = llc_conn_ac_upd_nr_received, 3484 [1] = llc_conn_ac_upd_vs, 3485 [2] = llc_conn_ac_stop_p_timer, 3486 [3] = llc_conn_ac_resend_i_xxx_x_set_0, 3487 [4] = llc_conn_ac_clear_remote_busy, 3488 [5] = NULL, 3489 }; 3490 3491 static const struct llc_conn_state_trans llc_await_busy_state_trans_10b = { 3492 .ev = llc_conn_ev_rx_rej_rsp_fbit_set_1, 3493 .next_state = LLC_CONN_STATE_BUSY, 3494 .ev_qualifiers = NONE, 3495 .ev_actions = llc_await_busy_actions_10b, 3496 }; 3497 3498 /* State transitions for LLC_CONN_EV_RX_RR_CMD_Pbit_SET_0 event */ 3499 static const llc_conn_action_t llc_await_busy_actions_11a[] = { 3500 [0] = llc_conn_ac_upd_nr_received, 3501 [1] = llc_conn_ac_upd_vs, 3502 [2] = llc_conn_ac_clear_remote_busy, 3503 [3] = NULL, 3504 }; 3505 3506 static const struct llc_conn_state_trans llc_await_busy_state_trans_11a = { 3507 .ev = llc_conn_ev_rx_rr_cmd_pbit_set_0, 3508 .next_state = LLC_CONN_STATE_AWAIT_BUSY, 3509 .ev_qualifiers = NONE, 3510 .ev_actions = llc_await_busy_actions_11a, 3511 }; 3512 3513 /* State transitions for LLC_CONN_EV_RX_RR_RSP_Fbit_SET_0 event */ 3514 static const llc_conn_action_t llc_await_busy_actions_11b[] = { 3515 [0] = llc_conn_ac_upd_nr_received, 3516 [1] = llc_conn_ac_upd_vs, 3517 [2] = llc_conn_ac_clear_remote_busy, 3518 [3] = NULL, 3519 }; 3520 3521 static const struct llc_conn_state_trans llc_await_busy_state_trans_11b = { 3522 .ev = llc_conn_ev_rx_rr_rsp_fbit_set_0, 3523 .next_state = LLC_CONN_STATE_AWAIT_BUSY, 3524 .ev_qualifiers = NONE, 3525 .ev_actions = llc_await_busy_actions_11b, 3526 }; 3527 3528 /* State transitions for LLC_CONN_EV_RX_REJ_CMD_Pbit_SET_0 event */ 3529 static const llc_conn_action_t llc_await_busy_actions_11c[] = { 3530 [0] = llc_conn_ac_upd_nr_received, 3531 [1] = llc_conn_ac_upd_vs, 3532 [2] = llc_conn_ac_clear_remote_busy, 3533 [3] = NULL, 3534 }; 3535 3536 static const struct llc_conn_state_trans llc_await_busy_state_trans_11c = { 3537 .ev = llc_conn_ev_rx_rej_cmd_pbit_set_0, 3538 .next_state = LLC_CONN_STATE_AWAIT_BUSY, 3539 .ev_qualifiers = NONE, 3540 .ev_actions = llc_await_busy_actions_11c, 3541 }; 3542 3543 /* State transitions for LLC_CONN_EV_RX_REJ_RSP_Fbit_SET_0 event */ 3544 static const llc_conn_action_t llc_await_busy_actions_11d[] = { 3545 [0] = llc_conn_ac_upd_nr_received, 3546 [1] = llc_conn_ac_upd_vs, 3547 [2] = llc_conn_ac_clear_remote_busy, 3548 [3] = NULL, 3549 }; 3550 3551 static const struct llc_conn_state_trans llc_await_busy_state_trans_11d = { 3552 .ev = llc_conn_ev_rx_rej_rsp_fbit_set_0, 3553 .next_state = LLC_CONN_STATE_AWAIT_BUSY, 3554 .ev_qualifiers = NONE, 3555 .ev_actions = llc_await_busy_actions_11d, 3556 }; 3557 3558 /* State transitions for LLC_CONN_EV_RX_RR_CMD_Pbit_SET_1 event */ 3559 static const llc_conn_action_t llc_await_busy_actions_12a[] = { 3560 [0] = llc_conn_ac_send_rnr_rsp_f_set_1, 3561 [1] = llc_conn_ac_upd_nr_received, 3562 [2] = llc_conn_ac_upd_vs, 3563 [3] = llc_conn_ac_clear_remote_busy, 3564 [4] = NULL, 3565 }; 3566 3567 static const struct llc_conn_state_trans llc_await_busy_state_trans_12a = { 3568 .ev = llc_conn_ev_rx_rr_cmd_pbit_set_1, 3569 .next_state = LLC_CONN_STATE_AWAIT_BUSY, 3570 .ev_qualifiers = NONE, 3571 .ev_actions = llc_await_busy_actions_12a, 3572 }; 3573 3574 /* State transitions for LLC_CONN_EV_RX_REJ_CMD_Pbit_SET_1 event */ 3575 static const llc_conn_action_t llc_await_busy_actions_12b[] = { 3576 [0] = llc_conn_ac_send_rnr_rsp_f_set_1, 3577 [1] = llc_conn_ac_upd_nr_received, 3578 [2] = llc_conn_ac_upd_vs, 3579 [3] = llc_conn_ac_clear_remote_busy, 3580 [4] = NULL, 3581 }; 3582 3583 static const struct llc_conn_state_trans llc_await_busy_state_trans_12b = { 3584 .ev = llc_conn_ev_rx_rej_cmd_pbit_set_1, 3585 .next_state = LLC_CONN_STATE_AWAIT_BUSY, 3586 .ev_qualifiers = NONE, 3587 .ev_actions = llc_await_busy_actions_12b, 3588 }; 3589 3590 /* State transitions for LLC_CONN_EV_RX_RNR_RSP_Fbit_SET_1 event */ 3591 static const llc_conn_action_t llc_await_busy_actions_13[] = { 3592 [0] = llc_conn_ac_upd_nr_received, 3593 [1] = llc_conn_ac_upd_vs, 3594 [2] = llc_conn_ac_stop_p_timer, 3595 [3] = llc_conn_ac_set_remote_busy, 3596 [4] = NULL, 3597 }; 3598 3599 static const struct llc_conn_state_trans llc_await_busy_state_trans_13 = { 3600 .ev = llc_conn_ev_rx_rnr_rsp_fbit_set_1, 3601 .next_state = LLC_CONN_STATE_BUSY, 3602 .ev_qualifiers = NONE, 3603 .ev_actions = llc_await_busy_actions_13, 3604 }; 3605 3606 /* State transitions for LLC_CONN_EV_RX_RNR_CMD_Pbit_SET_0 event */ 3607 static const llc_conn_action_t llc_await_busy_actions_14a[] = { 3608 [0] = llc_conn_ac_upd_nr_received, 3609 [1] = llc_conn_ac_upd_vs, 3610 [2] = llc_conn_ac_set_remote_busy, 3611 [3] = NULL, 3612 }; 3613 3614 static const struct llc_conn_state_trans llc_await_busy_state_trans_14a = { 3615 .ev = llc_conn_ev_rx_rnr_cmd_pbit_set_0, 3616 .next_state = LLC_CONN_STATE_AWAIT_BUSY, 3617 .ev_qualifiers = NONE, 3618 .ev_actions = llc_await_busy_actions_14a, 3619 }; 3620 3621 /* State transitions for LLC_CONN_EV_RX_RNR_RSP_Fbit_SET_0 event */ 3622 static const llc_conn_action_t llc_await_busy_actions_14b[] = { 3623 [0] = llc_conn_ac_upd_nr_received, 3624 [1] = llc_conn_ac_upd_vs, 3625 [2] = llc_conn_ac_set_remote_busy, 3626 [3] = NULL, 3627 }; 3628 3629 static const struct llc_conn_state_trans llc_await_busy_state_trans_14b = { 3630 .ev = llc_conn_ev_rx_rnr_rsp_fbit_set_0, 3631 .next_state = LLC_CONN_STATE_AWAIT_BUSY, 3632 .ev_qualifiers = NONE, 3633 .ev_actions = llc_await_busy_actions_14b, 3634 }; 3635 3636 /* State transitions for LLC_CONN_EV_RX_RNR_CMD_Pbit_SET_1 event */ 3637 static const llc_conn_action_t llc_await_busy_actions_15[] = { 3638 [0] = llc_conn_ac_send_rnr_rsp_f_set_1, 3639 [1] = llc_conn_ac_upd_nr_received, 3640 [2] = llc_conn_ac_upd_vs, 3641 [3] = llc_conn_ac_set_remote_busy, 3642 [4] = NULL, 3643 }; 3644 3645 static const struct llc_conn_state_trans llc_await_busy_state_trans_15 = { 3646 .ev = llc_conn_ev_rx_rnr_cmd_pbit_set_1, 3647 .next_state = LLC_CONN_STATE_AWAIT_BUSY, 3648 .ev_qualifiers = NONE, 3649 .ev_actions = llc_await_busy_actions_15, 3650 }; 3651 3652 /* State transitions for LLC_CONN_EV_P_TMR_EXP event */ 3653 static const llc_conn_ev_qfyr_t llc_await_busy_ev_qfyrs_16[] = { 3654 [0] = llc_conn_ev_qlfy_retry_cnt_lt_n2, 3655 [1] = NULL, 3656 }; 3657 3658 static const llc_conn_action_t llc_await_busy_actions_16[] = { 3659 [0] = llc_conn_ac_send_rnr_cmd_p_set_1, 3660 [1] = llc_conn_ac_start_p_timer, 3661 [2] = llc_conn_ac_inc_retry_cnt_by_1, 3662 [3] = NULL, 3663 }; 3664 3665 static const struct llc_conn_state_trans llc_await_busy_state_trans_16 = { 3666 .ev = llc_conn_ev_p_tmr_exp, 3667 .next_state = LLC_CONN_STATE_AWAIT_BUSY, 3668 .ev_qualifiers = llc_await_busy_ev_qfyrs_16, 3669 .ev_actions = llc_await_busy_actions_16, 3670 }; 3671 3672 /* 3673 * Array of pointers; 3674 * one to each transition 3675 */ 3676 static const struct llc_conn_state_trans *llc_await_busy_state_transitions[] = { 3677 [0] = &llc_common_state_trans_1, /* Request */ 3678 [1] = &llc_common_state_trans_2, 3679 [2] = &llc_await_busy_state_trans_1_0, 3680 [3] = &llc_common_state_trans_end, 3681 [4] = &llc_await_busy_state_trans_1, /* Local busy */ 3682 [5] = &llc_await_busy_state_trans_2, 3683 [6] = &llc_await_busy_state_trans_3, 3684 [7] = &llc_common_state_trans_end, 3685 [8] = &llc_common_state_trans_end, /* Initiate PF cycle */ 3686 [9] = &llc_common_state_trans_11a, /* Timer */ 3687 [10] = &llc_common_state_trans_11b, 3688 [11] = &llc_common_state_trans_11c, 3689 [12] = &llc_common_state_trans_11d, 3690 [13] = &llc_await_busy_state_trans_16, 3691 [14] = &llc_common_state_trans_end, 3692 [15] = &llc_await_busy_state_trans_4, /* Receive frame */ 3693 [16] = &llc_await_busy_state_trans_5a, 3694 [17] = &llc_await_busy_state_trans_5b, 3695 [18] = &llc_await_busy_state_trans_6, 3696 [19] = &llc_await_busy_state_trans_7, 3697 [20] = &llc_await_busy_state_trans_8a, 3698 [21] = &llc_await_busy_state_trans_8b, 3699 [22] = &llc_await_busy_state_trans_9, 3700 [23] = &llc_await_busy_state_trans_10a, 3701 [24] = &llc_await_busy_state_trans_10b, 3702 [25] = &llc_await_busy_state_trans_11a, 3703 [26] = &llc_await_busy_state_trans_11b, 3704 [27] = &llc_await_busy_state_trans_11c, 3705 [28] = &llc_await_busy_state_trans_11d, 3706 [29] = &llc_await_busy_state_trans_12a, 3707 [30] = &llc_await_busy_state_trans_12b, 3708 [31] = &llc_await_busy_state_trans_13, 3709 [32] = &llc_await_busy_state_trans_14a, 3710 [33] = &llc_await_busy_state_trans_14b, 3711 [34] = &llc_await_busy_state_trans_15, 3712 [35] = &llc_common_state_trans_3, 3713 [36] = &llc_common_state_trans_4, 3714 [37] = &llc_common_state_trans_5, 3715 [38] = &llc_common_state_trans_6, 3716 [39] = &llc_common_state_trans_7a, 3717 [40] = &llc_common_state_trans_7b, 3718 [41] = &llc_common_state_trans_8a, 3719 [42] = &llc_common_state_trans_8b, 3720 [43] = &llc_common_state_trans_8c, 3721 [44] = &llc_common_state_trans_9, 3722 /* [45] = &llc_common_state_trans_10, */ 3723 [45] = &llc_common_state_trans_end, 3724 }; 3725 3726 /* ----------------- LLC_CONN_STATE_AWAIT_REJ transitions --------------- */ 3727 /* State transitions for LLC_CONN_EV_DATA_CONN_REQ event */ 3728 static const llc_conn_ev_qfyr_t llc_await_reject_ev_qfyrs_1_0[] = { 3729 [0] = llc_conn_ev_qlfy_set_status_refuse, 3730 [1] = NULL, 3731 }; 3732 3733 /* just one member, NULL, .bss zeroes it */ 3734 static const llc_conn_action_t llc_await_reject_actions_1_0[1]; 3735 3736 static const struct llc_conn_state_trans llc_await_reject_state_trans_1_0 = { 3737 .ev = llc_conn_ev_data_req, 3738 .next_state = LLC_CONN_STATE_AWAIT_REJ, 3739 .ev_qualifiers = llc_await_reject_ev_qfyrs_1_0, 3740 .ev_actions = llc_await_reject_actions_1_0, 3741 }; 3742 3743 /* State transitions for LLC_CONN_EV_LOCAL_BUSY_DETECTED event */ 3744 static const llc_conn_action_t llc_await_rejct_actions_1[] = { 3745 [0] = llc_conn_ac_send_rnr_xxx_x_set_0, 3746 [1] = llc_conn_ac_set_data_flag_2, 3747 [2] = NULL 3748 }; 3749 3750 static const struct llc_conn_state_trans llc_await_rejct_state_trans_1 = { 3751 .ev = llc_conn_ev_local_busy_detected, 3752 .next_state = LLC_CONN_STATE_AWAIT_BUSY, 3753 .ev_qualifiers = NONE, 3754 .ev_actions = llc_await_rejct_actions_1, 3755 }; 3756 3757 /* State transitions for LLC_CONN_EV_RX_I_CMD_Pbit_SET_0_UNEXPD_Ns event */ 3758 static const llc_conn_action_t llc_await_rejct_actions_2a[] = { 3759 [0] = llc_conn_ac_upd_nr_received, 3760 [1] = llc_conn_ac_upd_vs, 3761 [2] = NULL 3762 }; 3763 3764 static const struct llc_conn_state_trans llc_await_rejct_state_trans_2a = { 3765 .ev = llc_conn_ev_rx_i_cmd_pbit_set_0_unexpd_ns, 3766 .next_state = LLC_CONN_STATE_AWAIT_REJ, 3767 .ev_qualifiers = NONE, 3768 .ev_actions = llc_await_rejct_actions_2a, 3769 }; 3770 3771 /* State transitions for LLC_CONN_EV_RX_I_RSP_Fbit_SET_0_UNEXPD_Ns event */ 3772 static const llc_conn_action_t llc_await_rejct_actions_2b[] = { 3773 [0] = llc_conn_ac_upd_nr_received, 3774 [1] = llc_conn_ac_upd_vs, 3775 [2] = NULL 3776 }; 3777 3778 static const struct llc_conn_state_trans llc_await_rejct_state_trans_2b = { 3779 .ev = llc_conn_ev_rx_i_rsp_fbit_set_0_unexpd_ns, 3780 .next_state = LLC_CONN_STATE_AWAIT_REJ, 3781 .ev_qualifiers = NONE, 3782 .ev_actions = llc_await_rejct_actions_2b, 3783 }; 3784 3785 /* State transitions for LLC_CONN_EV_RX_I_CMD_Pbit_SET_1_UNEXPD_Ns event */ 3786 static const llc_conn_action_t llc_await_rejct_actions_3[] = { 3787 [0] = llc_conn_ac_send_rr_rsp_f_set_1, 3788 [1] = llc_conn_ac_upd_nr_received, 3789 [2] = llc_conn_ac_upd_vs, 3790 [3] = NULL 3791 }; 3792 3793 static const struct llc_conn_state_trans llc_await_rejct_state_trans_3 = { 3794 .ev = llc_conn_ev_rx_i_cmd_pbit_set_1_unexpd_ns, 3795 .next_state = LLC_CONN_STATE_AWAIT_REJ, 3796 .ev_qualifiers = NONE, 3797 .ev_actions = llc_await_rejct_actions_3, 3798 }; 3799 3800 /* State transitions for LLC_CONN_EV_RX_I_RSP_Fbit_SET_1 event */ 3801 static const llc_conn_action_t llc_await_rejct_actions_4[] = { 3802 [0] = llc_conn_ac_inc_vr_by_1, 3803 [1] = llc_conn_ac_data_ind, 3804 [2] = llc_conn_ac_stop_p_timer, 3805 [3] = llc_conn_ac_stop_rej_timer, 3806 [4] = llc_conn_ac_upd_nr_received, 3807 [5] = llc_conn_ac_upd_vs, 3808 [6] = llc_conn_ac_resend_i_xxx_x_set_0_or_send_rr, 3809 [7] = llc_conn_ac_clear_remote_busy, 3810 [8] = NULL, 3811 }; 3812 3813 static const struct llc_conn_state_trans llc_await_rejct_state_trans_4 = { 3814 .ev = llc_conn_ev_rx_i_rsp_fbit_set_1, 3815 .next_state = LLC_CONN_STATE_NORMAL, 3816 .ev_qualifiers = NONE, 3817 .ev_actions = llc_await_rejct_actions_4, 3818 }; 3819 3820 /* State transitions for LLC_CONN_EV_RX_I_RSP_Fbit_SET_0 event */ 3821 static const llc_conn_action_t llc_await_rejct_actions_5a[] = { 3822 [0] = llc_conn_ac_inc_vr_by_1, 3823 [1] = llc_conn_ac_data_ind, 3824 [2] = llc_conn_ac_send_rr_xxx_x_set_0, 3825 [3] = llc_conn_ac_stop_rej_timer, 3826 [4] = llc_conn_ac_upd_nr_received, 3827 [5] = llc_conn_ac_upd_vs, 3828 [6] = NULL, 3829 }; 3830 3831 static const struct llc_conn_state_trans llc_await_rejct_state_trans_5a = { 3832 .ev = llc_conn_ev_rx_i_rsp_fbit_set_0, 3833 .next_state = LLC_CONN_STATE_AWAIT, 3834 .ev_qualifiers = NONE, 3835 .ev_actions = llc_await_rejct_actions_5a, 3836 }; 3837 3838 /* State transitions for LLC_CONN_EV_RX_I_CMD_Pbit_SET_0 event */ 3839 static const llc_conn_action_t llc_await_rejct_actions_5b[] = { 3840 [0] = llc_conn_ac_inc_vr_by_1, 3841 [1] = llc_conn_ac_data_ind, 3842 [2] = llc_conn_ac_send_rr_xxx_x_set_0, 3843 [3] = llc_conn_ac_stop_rej_timer, 3844 [4] = llc_conn_ac_upd_nr_received, 3845 [5] = llc_conn_ac_upd_vs, 3846 [6] = NULL, 3847 }; 3848 3849 static const struct llc_conn_state_trans llc_await_rejct_state_trans_5b = { 3850 .ev = llc_conn_ev_rx_i_cmd_pbit_set_0, 3851 .next_state = LLC_CONN_STATE_AWAIT, 3852 .ev_qualifiers = NONE, 3853 .ev_actions = llc_await_rejct_actions_5b, 3854 }; 3855 3856 /* State transitions for LLC_CONN_EV_RX_I_CMD_Pbit_SET_1 event */ 3857 static const llc_conn_action_t llc_await_rejct_actions_6[] = { 3858 [0] = llc_conn_ac_inc_vr_by_1, 3859 [1] = llc_conn_ac_data_ind, 3860 [2] = llc_conn_ac_send_rr_rsp_f_set_1, 3861 [3] = llc_conn_ac_stop_rej_timer, 3862 [4] = llc_conn_ac_upd_nr_received, 3863 [5] = llc_conn_ac_upd_vs, 3864 [6] = NULL, 3865 }; 3866 3867 static const struct llc_conn_state_trans llc_await_rejct_state_trans_6 = { 3868 .ev = llc_conn_ev_rx_i_cmd_pbit_set_1, 3869 .next_state = LLC_CONN_STATE_AWAIT, 3870 .ev_qualifiers = NONE, 3871 .ev_actions = llc_await_rejct_actions_6, 3872 }; 3873 3874 /* State transitions for LLC_CONN_EV_RX_RR_RSP_Fbit_SET_1 event */ 3875 static const llc_conn_action_t llc_await_rejct_actions_7a[] = { 3876 [0] = llc_conn_ac_upd_nr_received, 3877 [1] = llc_conn_ac_upd_vs, 3878 [2] = llc_conn_ac_stop_p_timer, 3879 [3] = llc_conn_ac_resend_i_xxx_x_set_0, 3880 [4] = llc_conn_ac_clear_remote_busy, 3881 [5] = NULL, 3882 }; 3883 3884 static const struct llc_conn_state_trans llc_await_rejct_state_trans_7a = { 3885 .ev = llc_conn_ev_rx_rr_rsp_fbit_set_1, 3886 .next_state = LLC_CONN_STATE_REJ, 3887 .ev_qualifiers = NONE, 3888 .ev_actions = llc_await_rejct_actions_7a, 3889 }; 3890 3891 /* State transitions for LLC_CONN_EV_RX_REJ_RSP_Fbit_SET_1 event */ 3892 static const llc_conn_action_t llc_await_rejct_actions_7b[] = { 3893 [0] = llc_conn_ac_upd_nr_received, 3894 [1] = llc_conn_ac_upd_vs, 3895 [2] = llc_conn_ac_stop_p_timer, 3896 [3] = llc_conn_ac_resend_i_xxx_x_set_0, 3897 [4] = llc_conn_ac_clear_remote_busy, 3898 [5] = NULL, 3899 }; 3900 3901 static const struct llc_conn_state_trans llc_await_rejct_state_trans_7b = { 3902 .ev = llc_conn_ev_rx_rej_rsp_fbit_set_1, 3903 .next_state = LLC_CONN_STATE_REJ, 3904 .ev_qualifiers = NONE, 3905 .ev_actions = llc_await_rejct_actions_7b, 3906 }; 3907 3908 /* State transitions for LLC_CONN_EV_RX_I_RSP_Fbit_SET_1_UNEXPD_Ns event */ 3909 static const llc_conn_action_t llc_await_rejct_actions_7c[] = { 3910 [0] = llc_conn_ac_upd_nr_received, 3911 [1] = llc_conn_ac_upd_vs, 3912 [2] = llc_conn_ac_stop_p_timer, 3913 [3] = llc_conn_ac_resend_i_xxx_x_set_0, 3914 [4] = llc_conn_ac_clear_remote_busy, 3915 [5] = NULL, 3916 }; 3917 3918 static const struct llc_conn_state_trans llc_await_rejct_state_trans_7c = { 3919 .ev = llc_conn_ev_rx_i_rsp_fbit_set_1_unexpd_ns, 3920 .next_state = LLC_CONN_STATE_REJ, 3921 .ev_qualifiers = NONE, 3922 .ev_actions = llc_await_rejct_actions_7c, 3923 }; 3924 3925 /* State transitions for LLC_CONN_EV_RX_RR_CMD_Pbit_SET_0 event */ 3926 static const llc_conn_action_t llc_await_rejct_actions_8a[] = { 3927 [0] = llc_conn_ac_upd_nr_received, 3928 [1] = llc_conn_ac_upd_vs, 3929 [2] = llc_conn_ac_clear_remote_busy, 3930 [3] = NULL, 3931 }; 3932 3933 static const struct llc_conn_state_trans llc_await_rejct_state_trans_8a = { 3934 .ev = llc_conn_ev_rx_rr_cmd_pbit_set_0, 3935 .next_state = LLC_CONN_STATE_AWAIT_REJ, 3936 .ev_qualifiers = NONE, 3937 .ev_actions = llc_await_rejct_actions_8a, 3938 }; 3939 3940 /* State transitions for LLC_CONN_EV_RX_RR_RSP_Fbit_SET_0 event */ 3941 static const llc_conn_action_t llc_await_rejct_actions_8b[] = { 3942 [0] = llc_conn_ac_upd_nr_received, 3943 [1] = llc_conn_ac_upd_vs, 3944 [2] = llc_conn_ac_clear_remote_busy, 3945 [3] = NULL, 3946 }; 3947 3948 static const struct llc_conn_state_trans llc_await_rejct_state_trans_8b = { 3949 .ev = llc_conn_ev_rx_rr_rsp_fbit_set_0, 3950 .next_state = LLC_CONN_STATE_AWAIT_REJ, 3951 .ev_qualifiers = NONE, 3952 .ev_actions = llc_await_rejct_actions_8b, 3953 }; 3954 3955 /* State transitions for LLC_CONN_EV_RX_REJ_CMD_Pbit_SET_0 event */ 3956 static const llc_conn_action_t llc_await_rejct_actions_8c[] = { 3957 [0] = llc_conn_ac_upd_nr_received, 3958 [1] = llc_conn_ac_upd_vs, 3959 [2] = llc_conn_ac_clear_remote_busy, 3960 [3] = NULL, 3961 }; 3962 3963 static const struct llc_conn_state_trans llc_await_rejct_state_trans_8c = { 3964 .ev = llc_conn_ev_rx_rej_cmd_pbit_set_0, 3965 .next_state = LLC_CONN_STATE_AWAIT_REJ, 3966 .ev_qualifiers = NONE, 3967 .ev_actions = llc_await_rejct_actions_8c, 3968 }; 3969 3970 /* State transitions for LLC_CONN_EV_RX_REJ_RSP_Fbit_SET_0 event */ 3971 static const llc_conn_action_t llc_await_rejct_actions_8d[] = { 3972 [0] = llc_conn_ac_upd_nr_received, 3973 [1] = llc_conn_ac_upd_vs, 3974 [2] = llc_conn_ac_clear_remote_busy, 3975 [3] = NULL, 3976 }; 3977 3978 static const struct llc_conn_state_trans llc_await_rejct_state_trans_8d = { 3979 .ev = llc_conn_ev_rx_rej_rsp_fbit_set_0, 3980 .next_state = LLC_CONN_STATE_AWAIT_REJ, 3981 .ev_qualifiers = NONE, 3982 .ev_actions = llc_await_rejct_actions_8d, 3983 }; 3984 3985 /* State transitions for LLC_CONN_EV_RX_RR_CMD_Pbit_SET_1 event */ 3986 static const llc_conn_action_t llc_await_rejct_actions_9a[] = { 3987 [0] = llc_conn_ac_send_rr_rsp_f_set_1, 3988 [1] = llc_conn_ac_upd_nr_received, 3989 [2] = llc_conn_ac_upd_vs, 3990 [3] = llc_conn_ac_clear_remote_busy, 3991 [4] = NULL, 3992 }; 3993 3994 static const struct llc_conn_state_trans llc_await_rejct_state_trans_9a = { 3995 .ev = llc_conn_ev_rx_rr_cmd_pbit_set_1, 3996 .next_state = LLC_CONN_STATE_AWAIT_REJ, 3997 .ev_qualifiers = NONE, 3998 .ev_actions = llc_await_rejct_actions_9a, 3999 }; 4000 4001 /* State transitions for LLC_CONN_EV_RX_REJ_CMD_Pbit_SET_1 event */ 4002 static const llc_conn_action_t llc_await_rejct_actions_9b[] = { 4003 [0] = llc_conn_ac_send_rr_rsp_f_set_1, 4004 [1] = llc_conn_ac_upd_nr_received, 4005 [2] = llc_conn_ac_upd_vs, 4006 [3] = llc_conn_ac_clear_remote_busy, 4007 [4] = NULL, 4008 }; 4009 4010 static const struct llc_conn_state_trans llc_await_rejct_state_trans_9b = { 4011 .ev = llc_conn_ev_rx_rej_cmd_pbit_set_1, 4012 .next_state = LLC_CONN_STATE_AWAIT_REJ, 4013 .ev_qualifiers = NONE, 4014 .ev_actions = llc_await_rejct_actions_9b, 4015 }; 4016 4017 /* State transitions for LLC_CONN_EV_RX_RNR_RSP_Fbit_SET_1 event */ 4018 static const llc_conn_action_t llc_await_rejct_actions_10[] = { 4019 [0] = llc_conn_ac_upd_nr_received, 4020 [1] = llc_conn_ac_upd_vs, 4021 [2] = llc_conn_ac_stop_p_timer, 4022 [3] = llc_conn_ac_set_remote_busy, 4023 [4] = NULL, 4024 }; 4025 4026 static const struct llc_conn_state_trans llc_await_rejct_state_trans_10 = { 4027 .ev = llc_conn_ev_rx_rnr_rsp_fbit_set_1, 4028 .next_state = LLC_CONN_STATE_REJ, 4029 .ev_qualifiers = NONE, 4030 .ev_actions = llc_await_rejct_actions_10, 4031 }; 4032 4033 /* State transitions for LLC_CONN_EV_RX_RNR_CMD_Pbit_SET_0 event */ 4034 static const llc_conn_action_t llc_await_rejct_actions_11a[] = { 4035 [0] = llc_conn_ac_upd_nr_received, 4036 [1] = llc_conn_ac_upd_vs, 4037 [2] = llc_conn_ac_set_remote_busy, 4038 [3] = NULL, 4039 }; 4040 4041 static const struct llc_conn_state_trans llc_await_rejct_state_trans_11a = { 4042 .ev = llc_conn_ev_rx_rnr_cmd_pbit_set_0, 4043 .next_state = LLC_CONN_STATE_AWAIT_REJ, 4044 .ev_qualifiers = NONE, 4045 .ev_actions = llc_await_rejct_actions_11a, 4046 }; 4047 4048 /* State transitions for LLC_CONN_EV_RX_RNR_RSP_Fbit_SET_0 event */ 4049 static const llc_conn_action_t llc_await_rejct_actions_11b[] = { 4050 [0] = llc_conn_ac_upd_nr_received, 4051 [1] = llc_conn_ac_upd_vs, 4052 [2] = llc_conn_ac_set_remote_busy, 4053 [3] = NULL, 4054 }; 4055 4056 static const struct llc_conn_state_trans llc_await_rejct_state_trans_11b = { 4057 .ev = llc_conn_ev_rx_rnr_rsp_fbit_set_0, 4058 .next_state = LLC_CONN_STATE_AWAIT_REJ, 4059 .ev_qualifiers = NONE, 4060 .ev_actions = llc_await_rejct_actions_11b, 4061 }; 4062 4063 /* State transitions for LLC_CONN_EV_RX_RNR_CMD_Pbit_SET_1 event */ 4064 static const llc_conn_action_t llc_await_rejct_actions_12[] = { 4065 [0] = llc_conn_ac_send_rr_rsp_f_set_1, 4066 [1] = llc_conn_ac_upd_nr_received, 4067 [2] = llc_conn_ac_upd_vs, 4068 [3] = llc_conn_ac_set_remote_busy, 4069 [4] = NULL, 4070 }; 4071 4072 static const struct llc_conn_state_trans llc_await_rejct_state_trans_12 = { 4073 .ev = llc_conn_ev_rx_rnr_cmd_pbit_set_1, 4074 .next_state = LLC_CONN_STATE_AWAIT_REJ, 4075 .ev_qualifiers = NONE, 4076 .ev_actions = llc_await_rejct_actions_12, 4077 }; 4078 4079 /* State transitions for LLC_CONN_EV_P_TMR_EXP event */ 4080 static const llc_conn_ev_qfyr_t llc_await_rejct_ev_qfyrs_13[] = { 4081 [0] = llc_conn_ev_qlfy_retry_cnt_lt_n2, 4082 [1] = NULL, 4083 }; 4084 4085 static const llc_conn_action_t llc_await_rejct_actions_13[] = { 4086 [0] = llc_conn_ac_send_rej_cmd_p_set_1, 4087 [1] = llc_conn_ac_stop_p_timer, 4088 [2] = llc_conn_ac_inc_retry_cnt_by_1, 4089 [3] = NULL, 4090 }; 4091 4092 static const struct llc_conn_state_trans llc_await_rejct_state_trans_13 = { 4093 .ev = llc_conn_ev_p_tmr_exp, 4094 .next_state = LLC_CONN_STATE_AWAIT_REJ, 4095 .ev_qualifiers = llc_await_rejct_ev_qfyrs_13, 4096 .ev_actions = llc_await_rejct_actions_13, 4097 }; 4098 4099 /* 4100 * Array of pointers; 4101 * one to each transition 4102 */ 4103 static const struct llc_conn_state_trans *llc_await_rejct_state_transitions[] = { 4104 [0] = &llc_await_reject_state_trans_1_0, 4105 [1] = &llc_common_state_trans_1, /* requests */ 4106 [2] = &llc_common_state_trans_2, 4107 [3] = &llc_common_state_trans_end, 4108 [4] = &llc_await_rejct_state_trans_1, /* local busy */ 4109 [5] = &llc_common_state_trans_end, 4110 [6] = &llc_common_state_trans_end, /* Initiate PF cycle */ 4111 [7] = &llc_await_rejct_state_trans_13, /* timers */ 4112 [8] = &llc_common_state_trans_11a, 4113 [9] = &llc_common_state_trans_11b, 4114 [10] = &llc_common_state_trans_11c, 4115 [11] = &llc_common_state_trans_11d, 4116 [12] = &llc_common_state_trans_end, 4117 [13] = &llc_await_rejct_state_trans_2a, /* receive frames */ 4118 [14] = &llc_await_rejct_state_trans_2b, 4119 [15] = &llc_await_rejct_state_trans_3, 4120 [16] = &llc_await_rejct_state_trans_4, 4121 [17] = &llc_await_rejct_state_trans_5a, 4122 [18] = &llc_await_rejct_state_trans_5b, 4123 [19] = &llc_await_rejct_state_trans_6, 4124 [20] = &llc_await_rejct_state_trans_7a, 4125 [21] = &llc_await_rejct_state_trans_7b, 4126 [22] = &llc_await_rejct_state_trans_7c, 4127 [23] = &llc_await_rejct_state_trans_8a, 4128 [24] = &llc_await_rejct_state_trans_8b, 4129 [25] = &llc_await_rejct_state_trans_8c, 4130 [26] = &llc_await_rejct_state_trans_8d, 4131 [27] = &llc_await_rejct_state_trans_9a, 4132 [28] = &llc_await_rejct_state_trans_9b, 4133 [29] = &llc_await_rejct_state_trans_10, 4134 [30] = &llc_await_rejct_state_trans_11a, 4135 [31] = &llc_await_rejct_state_trans_11b, 4136 [32] = &llc_await_rejct_state_trans_12, 4137 [33] = &llc_common_state_trans_3, 4138 [34] = &llc_common_state_trans_4, 4139 [35] = &llc_common_state_trans_5, 4140 [36] = &llc_common_state_trans_6, 4141 [37] = &llc_common_state_trans_7a, 4142 [38] = &llc_common_state_trans_7b, 4143 [39] = &llc_common_state_trans_8a, 4144 [40] = &llc_common_state_trans_8b, 4145 [41] = &llc_common_state_trans_8c, 4146 [42] = &llc_common_state_trans_9, 4147 /* [43] = &llc_common_state_trans_10, */ 4148 [43] = &llc_common_state_trans_end, 4149 }; 4150 4151 /* LLC_CONN_STATE_D_CONN transitions */ 4152 /* State transitions for LLC_CONN_EV_RX_SABME_CMD_Pbit_SET_X event, 4153 * cause_flag = 1 */ 4154 static const llc_conn_ev_qfyr_t llc_d_conn_ev_qfyrs_1[] = { 4155 [0] = llc_conn_ev_qlfy_cause_flag_eq_1, 4156 [1] = llc_conn_ev_qlfy_set_status_conflict, 4157 [2] = NULL, 4158 }; 4159 4160 static const llc_conn_action_t llc_d_conn_actions_1[] = { 4161 [0] = llc_conn_ac_send_dm_rsp_f_set_p, 4162 [1] = llc_conn_ac_stop_ack_timer, 4163 [2] = llc_conn_ac_disc_confirm, 4164 [3] = llc_conn_disc, 4165 [4] = NULL, 4166 }; 4167 4168 static const struct llc_conn_state_trans llc_d_conn_state_trans_1 = { 4169 .ev = llc_conn_ev_rx_sabme_cmd_pbit_set_x, 4170 .next_state = LLC_CONN_STATE_ADM, 4171 .ev_qualifiers = llc_d_conn_ev_qfyrs_1, 4172 .ev_actions = llc_d_conn_actions_1, 4173 }; 4174 4175 /* State transitions for LLC_CONN_EV_RX_SABME_CMD_Pbit_SET_X event, 4176 * cause_flag = 0 4177 */ 4178 static const llc_conn_ev_qfyr_t llc_d_conn_ev_qfyrs_1_1[] = { 4179 [0] = llc_conn_ev_qlfy_cause_flag_eq_0, 4180 [1] = llc_conn_ev_qlfy_set_status_conflict, 4181 [2] = NULL, 4182 }; 4183 4184 static const llc_conn_action_t llc_d_conn_actions_1_1[] = { 4185 [0] = llc_conn_ac_send_dm_rsp_f_set_p, 4186 [1] = llc_conn_ac_stop_ack_timer, 4187 [2] = llc_conn_disc, 4188 [3] = NULL, 4189 }; 4190 4191 static const struct llc_conn_state_trans llc_d_conn_state_trans_1_1 = { 4192 .ev = llc_conn_ev_rx_sabme_cmd_pbit_set_x, 4193 .next_state = LLC_CONN_STATE_ADM, 4194 .ev_qualifiers = llc_d_conn_ev_qfyrs_1_1, 4195 .ev_actions = llc_d_conn_actions_1_1, 4196 }; 4197 4198 /* State transitions for LLC_CONN_EV_RX_UA_RSP_Fbit_SET_X event, 4199 * cause_flag = 1 4200 */ 4201 static const llc_conn_ev_qfyr_t llc_d_conn_ev_qfyrs_2[] = { 4202 [0] = llc_conn_ev_qlfy_p_flag_eq_f, 4203 [1] = llc_conn_ev_qlfy_cause_flag_eq_1, 4204 [2] = llc_conn_ev_qlfy_set_status_disc, 4205 [3] = NULL, 4206 }; 4207 4208 static const llc_conn_action_t llc_d_conn_actions_2[] = { 4209 [0] = llc_conn_ac_stop_ack_timer, 4210 [1] = llc_conn_ac_disc_confirm, 4211 [2] = llc_conn_disc, 4212 [3] = NULL, 4213 }; 4214 4215 static const struct llc_conn_state_trans llc_d_conn_state_trans_2 = { 4216 .ev = llc_conn_ev_rx_ua_rsp_fbit_set_x, 4217 .next_state = LLC_CONN_STATE_ADM, 4218 .ev_qualifiers = llc_d_conn_ev_qfyrs_2, 4219 .ev_actions = llc_d_conn_actions_2, 4220 }; 4221 4222 /* State transitions for LLC_CONN_EV_RX_UA_RSP_Fbit_SET_X event, 4223 * cause_flag = 0 4224 */ 4225 static const llc_conn_ev_qfyr_t llc_d_conn_ev_qfyrs_2_1[] = { 4226 [0] = llc_conn_ev_qlfy_p_flag_eq_f, 4227 [1] = llc_conn_ev_qlfy_cause_flag_eq_0, 4228 [2] = llc_conn_ev_qlfy_set_status_disc, 4229 [3] = NULL, 4230 }; 4231 4232 static const llc_conn_action_t llc_d_conn_actions_2_1[] = { 4233 [0] = llc_conn_ac_stop_ack_timer, 4234 [1] = llc_conn_disc, 4235 [2] = NULL, 4236 }; 4237 4238 static const struct llc_conn_state_trans llc_d_conn_state_trans_2_1 = { 4239 .ev = llc_conn_ev_rx_ua_rsp_fbit_set_x, 4240 .next_state = LLC_CONN_STATE_ADM, 4241 .ev_qualifiers = llc_d_conn_ev_qfyrs_2_1, 4242 .ev_actions = llc_d_conn_actions_2_1, 4243 }; 4244 4245 /* State transitions for LLC_CONN_EV_RX_DISC_CMD_Pbit_SET_X event */ 4246 static const llc_conn_action_t llc_d_conn_actions_3[] = { 4247 [0] = llc_conn_ac_send_ua_rsp_f_set_p, 4248 [1] = NULL, 4249 }; 4250 4251 static const struct llc_conn_state_trans llc_d_conn_state_trans_3 = { 4252 .ev = llc_conn_ev_rx_disc_cmd_pbit_set_x, 4253 .next_state = LLC_CONN_STATE_D_CONN, 4254 .ev_qualifiers = NONE, 4255 .ev_actions = llc_d_conn_actions_3, 4256 }; 4257 4258 /* State transitions for LLC_CONN_EV_RX_DM_RSP_Fbit_SET_X event, 4259 * cause_flag = 1 4260 */ 4261 static const llc_conn_ev_qfyr_t llc_d_conn_ev_qfyrs_4[] = { 4262 [0] = llc_conn_ev_qlfy_cause_flag_eq_1, 4263 [1] = llc_conn_ev_qlfy_set_status_disc, 4264 [2] = NULL, 4265 }; 4266 4267 static const llc_conn_action_t llc_d_conn_actions_4[] = { 4268 [0] = llc_conn_ac_stop_ack_timer, 4269 [1] = llc_conn_ac_disc_confirm, 4270 [2] = llc_conn_disc, 4271 [3] = NULL, 4272 }; 4273 4274 static const struct llc_conn_state_trans llc_d_conn_state_trans_4 = { 4275 .ev = llc_conn_ev_rx_dm_rsp_fbit_set_x, 4276 .next_state = LLC_CONN_STATE_ADM, 4277 .ev_qualifiers = llc_d_conn_ev_qfyrs_4, 4278 .ev_actions = llc_d_conn_actions_4, 4279 }; 4280 4281 /* State transitions for LLC_CONN_EV_RX_DM_RSP_Fbit_SET_X event, 4282 * cause_flag = 0 4283 */ 4284 static const llc_conn_ev_qfyr_t llc_d_conn_ev_qfyrs_4_1[] = { 4285 [0] = llc_conn_ev_qlfy_cause_flag_eq_0, 4286 [1] = llc_conn_ev_qlfy_set_status_disc, 4287 [2] = NULL, 4288 }; 4289 4290 static const llc_conn_action_t llc_d_conn_actions_4_1[] = { 4291 [0] = llc_conn_ac_stop_ack_timer, 4292 [1] = llc_conn_disc, 4293 [2] = NULL, 4294 }; 4295 4296 static const struct llc_conn_state_trans llc_d_conn_state_trans_4_1 = { 4297 .ev = llc_conn_ev_rx_dm_rsp_fbit_set_x, 4298 .next_state = LLC_CONN_STATE_ADM, 4299 .ev_qualifiers = llc_d_conn_ev_qfyrs_4_1, 4300 .ev_actions = llc_d_conn_actions_4_1, 4301 }; 4302 4303 /* 4304 * State transition for 4305 * LLC_CONN_EV_DATA_CONN_REQ event 4306 */ 4307 static const llc_conn_ev_qfyr_t llc_d_conn_ev_qfyrs_5[] = { 4308 [0] = llc_conn_ev_qlfy_set_status_refuse, 4309 [1] = NULL, 4310 }; 4311 4312 /* just one member, NULL, .bss zeroes it */ 4313 static const llc_conn_action_t llc_d_conn_actions_5[1]; 4314 4315 static const struct llc_conn_state_trans llc_d_conn_state_trans_5 = { 4316 .ev = llc_conn_ev_data_req, 4317 .next_state = LLC_CONN_STATE_D_CONN, 4318 .ev_qualifiers = llc_d_conn_ev_qfyrs_5, 4319 .ev_actions = llc_d_conn_actions_5, 4320 }; 4321 4322 /* State transitions for LLC_CONN_EV_ACK_TMR_EXP event */ 4323 static const llc_conn_ev_qfyr_t llc_d_conn_ev_qfyrs_6[] = { 4324 [0] = llc_conn_ev_qlfy_retry_cnt_lt_n2, 4325 [1] = NULL, 4326 }; 4327 4328 static const llc_conn_action_t llc_d_conn_actions_6[] = { 4329 [0] = llc_conn_ac_send_disc_cmd_p_set_x, 4330 [1] = llc_conn_ac_start_ack_timer, 4331 [2] = llc_conn_ac_inc_retry_cnt_by_1, 4332 [3] = NULL, 4333 }; 4334 4335 static const struct llc_conn_state_trans llc_d_conn_state_trans_6 = { 4336 .ev = llc_conn_ev_ack_tmr_exp, 4337 .next_state = LLC_CONN_STATE_D_CONN, 4338 .ev_qualifiers = llc_d_conn_ev_qfyrs_6, 4339 .ev_actions = llc_d_conn_actions_6, 4340 }; 4341 4342 /* State transitions for LLC_CONN_EV_ACK_TMR_EXP event, cause_flag = 1 */ 4343 static const llc_conn_ev_qfyr_t llc_d_conn_ev_qfyrs_7[] = { 4344 [0] = llc_conn_ev_qlfy_retry_cnt_gte_n2, 4345 [1] = llc_conn_ev_qlfy_cause_flag_eq_1, 4346 [2] = llc_conn_ev_qlfy_set_status_failed, 4347 [3] = NULL, 4348 }; 4349 4350 static const llc_conn_action_t llc_d_conn_actions_7[] = { 4351 [0] = llc_conn_ac_disc_confirm, 4352 [1] = llc_conn_disc, 4353 [2] = NULL, 4354 }; 4355 4356 static const struct llc_conn_state_trans llc_d_conn_state_trans_7 = { 4357 .ev = llc_conn_ev_ack_tmr_exp, 4358 .next_state = LLC_CONN_STATE_ADM, 4359 .ev_qualifiers = llc_d_conn_ev_qfyrs_7, 4360 .ev_actions = llc_d_conn_actions_7, 4361 }; 4362 4363 /* State transitions for LLC_CONN_EV_ACK_TMR_EXP event, cause_flag = 0 */ 4364 static const llc_conn_ev_qfyr_t llc_d_conn_ev_qfyrs_8[] = { 4365 [0] = llc_conn_ev_qlfy_retry_cnt_gte_n2, 4366 [1] = llc_conn_ev_qlfy_cause_flag_eq_0, 4367 [2] = llc_conn_ev_qlfy_set_status_failed, 4368 [3] = NULL, 4369 }; 4370 4371 static const llc_conn_action_t llc_d_conn_actions_8[] = { 4372 [0] = llc_conn_disc, 4373 [1] = NULL, 4374 }; 4375 4376 static const struct llc_conn_state_trans llc_d_conn_state_trans_8 = { 4377 .ev = llc_conn_ev_ack_tmr_exp, 4378 .next_state = LLC_CONN_STATE_ADM, 4379 .ev_qualifiers = llc_d_conn_ev_qfyrs_8, 4380 .ev_actions = llc_d_conn_actions_8, 4381 }; 4382 4383 /* 4384 * Array of pointers; 4385 * one to each transition 4386 */ 4387 static const struct llc_conn_state_trans *llc_d_conn_state_transitions[] = { 4388 [0] = &llc_d_conn_state_trans_5, /* Request */ 4389 [1] = &llc_common_state_trans_end, 4390 [2] = &llc_common_state_trans_end, /* Local busy */ 4391 [3] = &llc_common_state_trans_end, /* Initiate PF cycle */ 4392 [4] = &llc_d_conn_state_trans_6, /* Timer */ 4393 [5] = &llc_d_conn_state_trans_7, 4394 [6] = &llc_d_conn_state_trans_8, 4395 [7] = &llc_common_state_trans_end, 4396 [8] = &llc_d_conn_state_trans_1, /* Receive frame */ 4397 [9] = &llc_d_conn_state_trans_1_1, 4398 [10] = &llc_d_conn_state_trans_2, 4399 [11] = &llc_d_conn_state_trans_2_1, 4400 [12] = &llc_d_conn_state_trans_3, 4401 [13] = &llc_d_conn_state_trans_4, 4402 [14] = &llc_d_conn_state_trans_4_1, 4403 [15] = &llc_common_state_trans_end, 4404 }; 4405 4406 /* LLC_CONN_STATE_RESET transitions */ 4407 /* State transitions for LLC_CONN_EV_RX_SABME_CMD_Pbit_SET_X event */ 4408 static const llc_conn_action_t llc_rst_actions_1[] = { 4409 [0] = llc_conn_ac_set_vs_0, 4410 [1] = llc_conn_ac_set_vr_0, 4411 [2] = llc_conn_ac_set_s_flag_1, 4412 [3] = llc_conn_ac_send_ua_rsp_f_set_p, 4413 [4] = NULL, 4414 }; 4415 4416 static const struct llc_conn_state_trans llc_rst_state_trans_1 = { 4417 .ev = llc_conn_ev_rx_sabme_cmd_pbit_set_x, 4418 .next_state = LLC_CONN_STATE_RESET, 4419 .ev_qualifiers = NONE, 4420 .ev_actions = llc_rst_actions_1, 4421 }; 4422 4423 /* State transitions for LLC_CONN_EV_RX_UA_RSP_Fbit_SET_X event, 4424 * cause_flag = 1 4425 */ 4426 static const llc_conn_ev_qfyr_t llc_rst_ev_qfyrs_2[] = { 4427 [0] = llc_conn_ev_qlfy_p_flag_eq_f, 4428 [1] = llc_conn_ev_qlfy_cause_flag_eq_1, 4429 [2] = llc_conn_ev_qlfy_set_status_conn, 4430 [3] = NULL, 4431 }; 4432 4433 static const llc_conn_action_t llc_rst_actions_2[] = { 4434 [0] = llc_conn_ac_stop_ack_timer, 4435 [1] = llc_conn_ac_set_vs_0, 4436 [2] = llc_conn_ac_set_vr_0, 4437 [3] = llc_conn_ac_upd_p_flag, 4438 [4] = llc_conn_ac_rst_confirm, 4439 [5] = llc_conn_ac_set_remote_busy_0, 4440 [6] = llc_conn_reset, 4441 [7] = NULL, 4442 }; 4443 4444 static const struct llc_conn_state_trans llc_rst_state_trans_2 = { 4445 .ev = llc_conn_ev_rx_ua_rsp_fbit_set_x, 4446 .next_state = LLC_CONN_STATE_NORMAL, 4447 .ev_qualifiers = llc_rst_ev_qfyrs_2, 4448 .ev_actions = llc_rst_actions_2, 4449 }; 4450 4451 /* State transitions for LLC_CONN_EV_RX_UA_RSP_Fbit_SET_X event, 4452 * cause_flag = 0 4453 */ 4454 static const llc_conn_ev_qfyr_t llc_rst_ev_qfyrs_2_1[] = { 4455 [0] = llc_conn_ev_qlfy_p_flag_eq_f, 4456 [1] = llc_conn_ev_qlfy_cause_flag_eq_0, 4457 [2] = llc_conn_ev_qlfy_set_status_rst_done, 4458 [3] = NULL, 4459 }; 4460 4461 static const llc_conn_action_t llc_rst_actions_2_1[] = { 4462 [0] = llc_conn_ac_stop_ack_timer, 4463 [1] = llc_conn_ac_set_vs_0, 4464 [2] = llc_conn_ac_set_vr_0, 4465 [3] = llc_conn_ac_upd_p_flag, 4466 [4] = llc_conn_ac_rst_confirm, 4467 [5] = llc_conn_ac_set_remote_busy_0, 4468 [6] = llc_conn_reset, 4469 [7] = NULL, 4470 }; 4471 4472 static const struct llc_conn_state_trans llc_rst_state_trans_2_1 = { 4473 .ev = llc_conn_ev_rx_ua_rsp_fbit_set_x, 4474 .next_state = LLC_CONN_STATE_NORMAL, 4475 .ev_qualifiers = llc_rst_ev_qfyrs_2_1, 4476 .ev_actions = llc_rst_actions_2_1, 4477 }; 4478 4479 /* State transitions for LLC_CONN_EV_ACK_TMR_EXP event */ 4480 static const llc_conn_ev_qfyr_t llc_rst_ev_qfyrs_3[] = { 4481 [0] = llc_conn_ev_qlfy_s_flag_eq_1, 4482 [1] = llc_conn_ev_qlfy_set_status_rst_done, 4483 [2] = NULL, 4484 }; 4485 4486 static const llc_conn_action_t llc_rst_actions_3[] = { 4487 [0] = llc_conn_ac_set_p_flag_0, 4488 [1] = llc_conn_ac_set_remote_busy_0, 4489 [2] = NULL, 4490 }; 4491 4492 static const struct llc_conn_state_trans llc_rst_state_trans_3 = { 4493 .ev = llc_conn_ev_ack_tmr_exp, 4494 .next_state = LLC_CONN_STATE_NORMAL, 4495 .ev_qualifiers = llc_rst_ev_qfyrs_3, 4496 .ev_actions = llc_rst_actions_3, 4497 }; 4498 4499 /* State transitions for LLC_CONN_EV_RX_DISC_CMD_Pbit_SET_X event, 4500 * cause_flag = 1 4501 */ 4502 static const llc_conn_ev_qfyr_t llc_rst_ev_qfyrs_4[] = { 4503 [0] = llc_conn_ev_qlfy_cause_flag_eq_1, 4504 [1] = llc_conn_ev_qlfy_set_status_disc, 4505 [2] = NULL, 4506 }; 4507 static const llc_conn_action_t llc_rst_actions_4[] = { 4508 [0] = llc_conn_ac_send_dm_rsp_f_set_p, 4509 [1] = llc_conn_ac_disc_ind, 4510 [2] = llc_conn_ac_stop_ack_timer, 4511 [3] = llc_conn_disc, 4512 [4] = NULL, 4513 }; 4514 4515 static const struct llc_conn_state_trans llc_rst_state_trans_4 = { 4516 .ev = llc_conn_ev_rx_disc_cmd_pbit_set_x, 4517 .next_state = LLC_CONN_STATE_ADM, 4518 .ev_qualifiers = llc_rst_ev_qfyrs_4, 4519 .ev_actions = llc_rst_actions_4, 4520 }; 4521 4522 /* State transitions for LLC_CONN_EV_RX_DISC_CMD_Pbit_SET_X event, 4523 * cause_flag = 0 4524 */ 4525 static const llc_conn_ev_qfyr_t llc_rst_ev_qfyrs_4_1[] = { 4526 [0] = llc_conn_ev_qlfy_cause_flag_eq_0, 4527 [1] = llc_conn_ev_qlfy_set_status_refuse, 4528 [2] = NULL, 4529 }; 4530 4531 static const llc_conn_action_t llc_rst_actions_4_1[] = { 4532 [0] = llc_conn_ac_send_dm_rsp_f_set_p, 4533 [1] = llc_conn_ac_stop_ack_timer, 4534 [2] = llc_conn_disc, 4535 [3] = NULL, 4536 }; 4537 4538 static const struct llc_conn_state_trans llc_rst_state_trans_4_1 = { 4539 .ev = llc_conn_ev_rx_disc_cmd_pbit_set_x, 4540 .next_state = LLC_CONN_STATE_ADM, 4541 .ev_qualifiers = llc_rst_ev_qfyrs_4_1, 4542 .ev_actions = llc_rst_actions_4_1, 4543 }; 4544 4545 /* State transitions for LLC_CONN_EV_RX_DM_RSP_Fbit_SET_X event, 4546 * cause_flag = 1 4547 */ 4548 static const llc_conn_ev_qfyr_t llc_rst_ev_qfyrs_5[] = { 4549 [0] = llc_conn_ev_qlfy_cause_flag_eq_1, 4550 [1] = llc_conn_ev_qlfy_set_status_disc, 4551 [2] = NULL, 4552 }; 4553 4554 static const llc_conn_action_t llc_rst_actions_5[] = { 4555 [0] = llc_conn_ac_disc_ind, 4556 [1] = llc_conn_ac_stop_ack_timer, 4557 [2] = llc_conn_disc, 4558 [3] = NULL, 4559 }; 4560 4561 static const struct llc_conn_state_trans llc_rst_state_trans_5 = { 4562 .ev = llc_conn_ev_rx_dm_rsp_fbit_set_x, 4563 .next_state = LLC_CONN_STATE_ADM, 4564 .ev_qualifiers = llc_rst_ev_qfyrs_5, 4565 .ev_actions = llc_rst_actions_5, 4566 }; 4567 4568 /* State transitions for LLC_CONN_EV_RX_DM_RSP_Fbit_SET_X event, 4569 * cause_flag = 0 4570 */ 4571 static const llc_conn_ev_qfyr_t llc_rst_ev_qfyrs_5_1[] = { 4572 [0] = llc_conn_ev_qlfy_cause_flag_eq_0, 4573 [1] = llc_conn_ev_qlfy_set_status_refuse, 4574 [2] = NULL, 4575 }; 4576 4577 static const llc_conn_action_t llc_rst_actions_5_1[] = { 4578 [0] = llc_conn_ac_stop_ack_timer, 4579 [1] = llc_conn_disc, 4580 [2] = NULL, 4581 }; 4582 4583 static const struct llc_conn_state_trans llc_rst_state_trans_5_1 = { 4584 .ev = llc_conn_ev_rx_dm_rsp_fbit_set_x, 4585 .next_state = LLC_CONN_STATE_ADM, 4586 .ev_qualifiers = llc_rst_ev_qfyrs_5_1, 4587 .ev_actions = llc_rst_actions_5_1, 4588 }; 4589 4590 /* State transitions for DATA_CONN_REQ event */ 4591 static const llc_conn_ev_qfyr_t llc_rst_ev_qfyrs_6[] = { 4592 [0] = llc_conn_ev_qlfy_set_status_refuse, 4593 [1] = NULL, 4594 }; 4595 4596 /* just one member, NULL, .bss zeroes it */ 4597 static const llc_conn_action_t llc_rst_actions_6[1]; 4598 4599 static const struct llc_conn_state_trans llc_rst_state_trans_6 = { 4600 .ev = llc_conn_ev_data_req, 4601 .next_state = LLC_CONN_STATE_RESET, 4602 .ev_qualifiers = llc_rst_ev_qfyrs_6, 4603 .ev_actions = llc_rst_actions_6, 4604 }; 4605 4606 /* State transitions for LLC_CONN_EV_ACK_TMR_EXP event */ 4607 static const llc_conn_ev_qfyr_t llc_rst_ev_qfyrs_7[] = { 4608 [0] = llc_conn_ev_qlfy_retry_cnt_lt_n2, 4609 [1] = llc_conn_ev_qlfy_s_flag_eq_0, 4610 [2] = NULL, 4611 }; 4612 4613 static const llc_conn_action_t llc_rst_actions_7[] = { 4614 [0] = llc_conn_ac_send_sabme_cmd_p_set_x, 4615 [1] = llc_conn_ac_start_ack_timer, 4616 [2] = llc_conn_ac_inc_retry_cnt_by_1, 4617 [3] = NULL, 4618 }; 4619 4620 static const struct llc_conn_state_trans llc_rst_state_trans_7 = { 4621 .ev = llc_conn_ev_ack_tmr_exp, 4622 .next_state = LLC_CONN_STATE_RESET, 4623 .ev_qualifiers = llc_rst_ev_qfyrs_7, 4624 .ev_actions = llc_rst_actions_7, 4625 }; 4626 4627 /* State transitions for LLC_CONN_EV_ACK_TMR_EXP event */ 4628 static const llc_conn_ev_qfyr_t llc_rst_ev_qfyrs_8[] = { 4629 [0] = llc_conn_ev_qlfy_retry_cnt_gte_n2, 4630 [1] = llc_conn_ev_qlfy_s_flag_eq_0, 4631 [2] = llc_conn_ev_qlfy_cause_flag_eq_1, 4632 [3] = llc_conn_ev_qlfy_set_status_failed, 4633 [4] = NULL, 4634 }; 4635 static const llc_conn_action_t llc_rst_actions_8[] = { 4636 [0] = llc_conn_ac_disc_ind, 4637 [1] = llc_conn_disc, 4638 [2] = NULL, 4639 }; 4640 4641 static const struct llc_conn_state_trans llc_rst_state_trans_8 = { 4642 .ev = llc_conn_ev_ack_tmr_exp, 4643 .next_state = LLC_CONN_STATE_ADM, 4644 .ev_qualifiers = llc_rst_ev_qfyrs_8, 4645 .ev_actions = llc_rst_actions_8, 4646 }; 4647 4648 /* State transitions for LLC_CONN_EV_ACK_TMR_EXP event */ 4649 static const llc_conn_ev_qfyr_t llc_rst_ev_qfyrs_8_1[] = { 4650 [0] = llc_conn_ev_qlfy_retry_cnt_gte_n2, 4651 [1] = llc_conn_ev_qlfy_s_flag_eq_0, 4652 [2] = llc_conn_ev_qlfy_cause_flag_eq_0, 4653 [3] = llc_conn_ev_qlfy_set_status_failed, 4654 [4] = NULL, 4655 }; 4656 static const llc_conn_action_t llc_rst_actions_8_1[] = { 4657 [0] = llc_conn_ac_disc_ind, 4658 [1] = llc_conn_disc, 4659 [2] = NULL, 4660 }; 4661 4662 static const struct llc_conn_state_trans llc_rst_state_trans_8_1 = { 4663 .ev = llc_conn_ev_ack_tmr_exp, 4664 .next_state = LLC_CONN_STATE_ADM, 4665 .ev_qualifiers = llc_rst_ev_qfyrs_8_1, 4666 .ev_actions = llc_rst_actions_8_1, 4667 }; 4668 4669 /* 4670 * Array of pointers; 4671 * one to each transition 4672 */ 4673 static const struct llc_conn_state_trans *llc_rst_state_transitions[] = { 4674 [0] = &llc_rst_state_trans_6, /* Request */ 4675 [1] = &llc_common_state_trans_end, 4676 [2] = &llc_common_state_trans_end, /* Local busy */ 4677 [3] = &llc_common_state_trans_end, /* Initiate PF cycle */ 4678 [4] = &llc_rst_state_trans_3, /* Timer */ 4679 [5] = &llc_rst_state_trans_7, 4680 [6] = &llc_rst_state_trans_8, 4681 [7] = &llc_rst_state_trans_8_1, 4682 [8] = &llc_common_state_trans_end, 4683 [9] = &llc_rst_state_trans_1, /* Receive frame */ 4684 [10] = &llc_rst_state_trans_2, 4685 [11] = &llc_rst_state_trans_2_1, 4686 [12] = &llc_rst_state_trans_4, 4687 [13] = &llc_rst_state_trans_4_1, 4688 [14] = &llc_rst_state_trans_5, 4689 [15] = &llc_rst_state_trans_5_1, 4690 [16] = &llc_common_state_trans_end, 4691 }; 4692 4693 /* LLC_CONN_STATE_ERROR transitions */ 4694 /* State transitions for LLC_CONN_EV_RX_SABME_CMD_Pbit_SET_X event */ 4695 static const llc_conn_action_t llc_error_actions_1[] = { 4696 [0] = llc_conn_ac_set_vs_0, 4697 [1] = llc_conn_ac_set_vr_0, 4698 [2] = llc_conn_ac_send_ua_rsp_f_set_p, 4699 [3] = llc_conn_ac_rst_ind, 4700 [4] = llc_conn_ac_set_p_flag_0, 4701 [5] = llc_conn_ac_set_remote_busy_0, 4702 [6] = llc_conn_ac_stop_ack_timer, 4703 [7] = llc_conn_reset, 4704 [8] = NULL, 4705 }; 4706 4707 static const struct llc_conn_state_trans llc_error_state_trans_1 = { 4708 .ev = llc_conn_ev_rx_sabme_cmd_pbit_set_x, 4709 .next_state = LLC_CONN_STATE_NORMAL, 4710 .ev_qualifiers = NONE, 4711 .ev_actions = llc_error_actions_1, 4712 }; 4713 4714 /* State transitions for LLC_CONN_EV_RX_DISC_CMD_Pbit_SET_X event */ 4715 static const llc_conn_action_t llc_error_actions_2[] = { 4716 [0] = llc_conn_ac_send_ua_rsp_f_set_p, 4717 [1] = llc_conn_ac_disc_ind, 4718 [2] = llc_conn_ac_stop_ack_timer, 4719 [3] = llc_conn_disc, 4720 [4] = NULL, 4721 }; 4722 4723 static const struct llc_conn_state_trans llc_error_state_trans_2 = { 4724 .ev = llc_conn_ev_rx_disc_cmd_pbit_set_x, 4725 .next_state = LLC_CONN_STATE_ADM, 4726 .ev_qualifiers = NONE, 4727 .ev_actions = llc_error_actions_2, 4728 }; 4729 4730 /* State transitions for LLC_CONN_EV_RX_DM_RSP_Fbit_SET_X event */ 4731 static const llc_conn_action_t llc_error_actions_3[] = { 4732 [0] = llc_conn_ac_disc_ind, 4733 [1] = llc_conn_ac_stop_ack_timer, 4734 [2] = llc_conn_disc, 4735 [3] = NULL, 4736 }; 4737 4738 static const struct llc_conn_state_trans llc_error_state_trans_3 = { 4739 .ev = llc_conn_ev_rx_dm_rsp_fbit_set_x, 4740 .next_state = LLC_CONN_STATE_ADM, 4741 .ev_qualifiers = NONE, 4742 .ev_actions = llc_error_actions_3, 4743 }; 4744 4745 /* State transitions for LLC_CONN_EV_RX_FRMR_RSP_Fbit_SET_X event */ 4746 static const llc_conn_action_t llc_error_actions_4[] = { 4747 [0] = llc_conn_ac_send_sabme_cmd_p_set_x, 4748 [1] = llc_conn_ac_start_ack_timer, 4749 [2] = llc_conn_ac_set_retry_cnt_0, 4750 [3] = llc_conn_ac_set_cause_flag_0, 4751 [4] = NULL, 4752 }; 4753 4754 static const struct llc_conn_state_trans llc_error_state_trans_4 = { 4755 .ev = llc_conn_ev_rx_frmr_rsp_fbit_set_x, 4756 .next_state = LLC_CONN_STATE_RESET, 4757 .ev_qualifiers = NONE, 4758 .ev_actions = llc_error_actions_4, 4759 }; 4760 4761 /* State transitions for LLC_CONN_EV_RX_XXX_CMD_Pbit_SET_X event */ 4762 static const llc_conn_action_t llc_error_actions_5[] = { 4763 [0] = llc_conn_ac_resend_frmr_rsp_f_set_p, 4764 [1] = NULL, 4765 }; 4766 4767 static const struct llc_conn_state_trans llc_error_state_trans_5 = { 4768 .ev = llc_conn_ev_rx_xxx_cmd_pbit_set_x, 4769 .next_state = LLC_CONN_STATE_ERROR, 4770 .ev_qualifiers = NONE, 4771 .ev_actions = llc_error_actions_5, 4772 }; 4773 4774 /* State transitions for LLC_CONN_EV_RX_XXX_RSP_Fbit_SET_X event */ 4775 static const struct llc_conn_state_trans llc_error_state_trans_6 = { 4776 .ev = llc_conn_ev_rx_xxx_rsp_fbit_set_x, 4777 .next_state = LLC_CONN_STATE_ERROR, 4778 .ev_qualifiers = NONE, 4779 .ev_actions = NONE, 4780 }; 4781 4782 /* State transitions for LLC_CONN_EV_ACK_TMR_EXP event */ 4783 static const llc_conn_ev_qfyr_t llc_error_ev_qfyrs_7[] = { 4784 [0] = llc_conn_ev_qlfy_retry_cnt_lt_n2, 4785 [1] = NULL, 4786 }; 4787 4788 static const llc_conn_action_t llc_error_actions_7[] = { 4789 [0] = llc_conn_ac_resend_frmr_rsp_f_set_0, 4790 [1] = llc_conn_ac_start_ack_timer, 4791 [2] = llc_conn_ac_inc_retry_cnt_by_1, 4792 [3] = NULL, 4793 }; 4794 4795 static const struct llc_conn_state_trans llc_error_state_trans_7 = { 4796 .ev = llc_conn_ev_ack_tmr_exp, 4797 .next_state = LLC_CONN_STATE_ERROR, 4798 .ev_qualifiers = llc_error_ev_qfyrs_7, 4799 .ev_actions = llc_error_actions_7, 4800 }; 4801 4802 /* State transitions for LLC_CONN_EV_ACK_TMR_EXP event */ 4803 static const llc_conn_ev_qfyr_t llc_error_ev_qfyrs_8[] = { 4804 [0] = llc_conn_ev_qlfy_retry_cnt_gte_n2, 4805 [1] = NULL, 4806 }; 4807 4808 static const llc_conn_action_t llc_error_actions_8[] = { 4809 [0] = llc_conn_ac_send_sabme_cmd_p_set_x, 4810 [1] = llc_conn_ac_set_s_flag_0, 4811 [2] = llc_conn_ac_start_ack_timer, 4812 [3] = llc_conn_ac_set_retry_cnt_0, 4813 [4] = llc_conn_ac_set_cause_flag_0, 4814 [5] = NULL, 4815 }; 4816 4817 static const struct llc_conn_state_trans llc_error_state_trans_8 = { 4818 .ev = llc_conn_ev_ack_tmr_exp, 4819 .next_state = LLC_CONN_STATE_RESET, 4820 .ev_qualifiers = llc_error_ev_qfyrs_8, 4821 .ev_actions = llc_error_actions_8, 4822 }; 4823 4824 /* State transitions for LLC_CONN_EV_DATA_CONN_REQ event */ 4825 static const llc_conn_ev_qfyr_t llc_error_ev_qfyrs_9[] = { 4826 [0] = llc_conn_ev_qlfy_set_status_refuse, 4827 [1] = NULL, 4828 }; 4829 4830 /* just one member, NULL, .bss zeroes it */ 4831 static const llc_conn_action_t llc_error_actions_9[1]; 4832 4833 static const struct llc_conn_state_trans llc_error_state_trans_9 = { 4834 .ev = llc_conn_ev_data_req, 4835 .next_state = LLC_CONN_STATE_ERROR, 4836 .ev_qualifiers = llc_error_ev_qfyrs_9, 4837 .ev_actions = llc_error_actions_9, 4838 }; 4839 4840 /* 4841 * Array of pointers; 4842 * one to each transition 4843 */ 4844 static const struct llc_conn_state_trans *llc_error_state_transitions[] = { 4845 [0] = &llc_error_state_trans_9, /* Request */ 4846 [1] = &llc_common_state_trans_end, 4847 [2] = &llc_common_state_trans_end, /* Local busy */ 4848 [3] = &llc_common_state_trans_end, /* Initiate PF cycle */ 4849 [4] = &llc_error_state_trans_7, /* Timer */ 4850 [5] = &llc_error_state_trans_8, 4851 [6] = &llc_common_state_trans_end, 4852 [7] = &llc_error_state_trans_1, /* Receive frame */ 4853 [8] = &llc_error_state_trans_2, 4854 [9] = &llc_error_state_trans_3, 4855 [10] = &llc_error_state_trans_4, 4856 [11] = &llc_error_state_trans_5, 4857 [12] = &llc_error_state_trans_6, 4858 [13] = &llc_common_state_trans_end, 4859 }; 4860 4861 /* LLC_CONN_STATE_TEMP transitions */ 4862 /* State transitions for LLC_CONN_EV_DISC_REQ event */ 4863 static const llc_conn_action_t llc_temp_actions_1[] = { 4864 [0] = llc_conn_ac_stop_all_timers, 4865 [1] = llc_conn_ac_send_disc_cmd_p_set_x, 4866 [2] = llc_conn_disc, 4867 [3] = NULL, 4868 }; 4869 4870 static const struct llc_conn_state_trans llc_temp_state_trans_1 = { 4871 .ev = llc_conn_ev_disc_req, 4872 .next_state = LLC_CONN_STATE_ADM, 4873 .ev_qualifiers = NONE, 4874 .ev_actions = llc_temp_actions_1, 4875 }; 4876 4877 /* 4878 * Array of pointers; 4879 * one to each transition 4880 */ 4881 static const struct llc_conn_state_trans *llc_temp_state_transitions[] = { 4882 [0] = &llc_temp_state_trans_1, /* requests */ 4883 [1] = &llc_common_state_trans_end, 4884 [2] = &llc_common_state_trans_end, /* local busy */ 4885 [3] = &llc_common_state_trans_end, /* init_pf_cycle */ 4886 [4] = &llc_common_state_trans_end, /* timer */ 4887 [5] = &llc_common_state_trans_end, /* receive */ 4888 }; 4889 4890 /* Connection State Transition Table */ 4891 struct llc_conn_state llc_conn_state_table[NBR_CONN_STATES] = { 4892 [LLC_CONN_STATE_ADM - 1] = { 4893 .current_state = LLC_CONN_STATE_ADM, 4894 .transitions = llc_adm_state_transitions, 4895 }, 4896 [LLC_CONN_STATE_SETUP - 1] = { 4897 .current_state = LLC_CONN_STATE_SETUP, 4898 .transitions = llc_setup_state_transitions, 4899 }, 4900 [LLC_CONN_STATE_NORMAL - 1] = { 4901 .current_state = LLC_CONN_STATE_NORMAL, 4902 .transitions = llc_normal_state_transitions, 4903 }, 4904 [LLC_CONN_STATE_BUSY - 1] = { 4905 .current_state = LLC_CONN_STATE_BUSY, 4906 .transitions = llc_busy_state_transitions, 4907 }, 4908 [LLC_CONN_STATE_REJ - 1] = { 4909 .current_state = LLC_CONN_STATE_REJ, 4910 .transitions = llc_reject_state_transitions, 4911 }, 4912 [LLC_CONN_STATE_AWAIT - 1] = { 4913 .current_state = LLC_CONN_STATE_AWAIT, 4914 .transitions = llc_await_state_transitions, 4915 }, 4916 [LLC_CONN_STATE_AWAIT_BUSY - 1] = { 4917 .current_state = LLC_CONN_STATE_AWAIT_BUSY, 4918 .transitions = llc_await_busy_state_transitions, 4919 }, 4920 [LLC_CONN_STATE_AWAIT_REJ - 1] = { 4921 .current_state = LLC_CONN_STATE_AWAIT_REJ, 4922 .transitions = llc_await_rejct_state_transitions, 4923 }, 4924 [LLC_CONN_STATE_D_CONN - 1] = { 4925 .current_state = LLC_CONN_STATE_D_CONN, 4926 .transitions = llc_d_conn_state_transitions, 4927 }, 4928 [LLC_CONN_STATE_RESET - 1] = { 4929 .current_state = LLC_CONN_STATE_RESET, 4930 .transitions = llc_rst_state_transitions, 4931 }, 4932 [LLC_CONN_STATE_ERROR - 1] = { 4933 .current_state = LLC_CONN_STATE_ERROR, 4934 .transitions = llc_error_state_transitions, 4935 }, 4936 [LLC_CONN_STATE_TEMP - 1] = { 4937 .current_state = LLC_CONN_STATE_TEMP, 4938 .transitions = llc_temp_state_transitions, 4939 }, 4940 }; 4941