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