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