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 */ 36 static 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 45 static const 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 */ 53 static 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 62 static const 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 */ 70 static 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 82 static const 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 */ 90 static 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 98 static const 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 */ 106 static 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 117 static const 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 */ 125 static 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 132 static const 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 */ 140 static 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 148 static const 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 */ 156 static 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 164 static const 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 */ 172 static 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 180 static const 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 */ 188 static 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 196 static const 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 */ 204 static 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 212 static const 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 */ 220 static 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 228 static const 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 237 static 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 242 static 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 250 static const 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 */ 259 static 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 264 static 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 273 static const 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 */ 281 static 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 286 static 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 295 static const 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 */ 303 static 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 308 static 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 317 static const 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 */ 325 static 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 330 static 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 339 static const 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 */ 350 static const 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 */ 354 static 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 362 static const 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 */ 370 static 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 381 static const 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 */ 389 static 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 395 static const 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 */ 403 static 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 409 static const 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 */ 417 static const llc_conn_action_t llc_adm_actions_5[] = { 418 [0] = llc_conn_disc, 419 [1] = NULL, 420 }; 421 422 static const 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 */ 433 static const 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 */ 448 static 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 456 static const 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 */ 464 static 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 470 static 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 480 static const 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 */ 488 static 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 494 static 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 501 static const 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 */ 509 static 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 514 static 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 522 static const 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 */ 530 static 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 535 static 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 542 static const 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 */ 550 static 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 556 static 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 563 static const 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 */ 571 static 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 578 static 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 584 static const 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 */ 595 static const 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 */ 612 static 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 619 static 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 625 static const 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 */ 633 static 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 640 static 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 646 static const 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 */ 654 static 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 */ 661 static const llc_conn_action_t llc_normal_actions_2_1[1]; 662 663 static const 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 */ 671 static 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 676 static 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 683 static const 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 */ 691 static 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 696 static 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 703 static const 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 */ 711 static 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 716 static 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 726 static const 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 */ 734 static 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 739 static 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 749 static const 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 */ 757 static 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 762 static 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 772 static const 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 */ 780 static 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 785 static 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 793 static const 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 */ 801 static 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 806 static 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 814 static const 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 */ 822 static 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 830 static const 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 */ 838 static 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 843 static 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 853 static const 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 */ 861 static 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 866 static const 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 */ 874 static 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 879 static 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 887 static const 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 */ 895 static 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 900 static 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 908 static const 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 */ 916 static 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 925 static const 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 */ 933 static 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 940 static const 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 */ 948 static 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 955 static const 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 */ 963 static 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 968 static 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 976 static const 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 */ 984 static 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 993 static const 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 */ 1001 static 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 1008 static const 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 */ 1016 static 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 1023 static const 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 */ 1031 static 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 1036 static 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 1043 static const 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 */ 1051 static 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 1060 static const 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 */ 1068 static 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 1073 static 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 1083 static const 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 */ 1091 static 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 1096 static 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 1106 static const 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 */ 1114 static 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 1119 static 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 1128 static const 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 */ 1136 static 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 1141 static 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 1150 static const 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 */ 1158 static 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 1167 static const 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 */ 1175 static 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 1180 static 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 1186 static const 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 */ 1194 static 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 1199 static 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 1208 static const 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 */ 1216 static 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 1222 static 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 1231 static const 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 */ 1239 static 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 1245 static 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 1254 static const 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 */ 1262 static 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 1267 static 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 1273 static const 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 */ 1284 static const 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 */ 1345 static 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 1351 static 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 1357 static const 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 */ 1365 static 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 1371 static 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 1377 static const 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 */ 1385 static 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 */ 1392 static const llc_conn_action_t llc_busy_actions_2_1[1]; 1393 1394 static const 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 */ 1402 static 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 1408 static 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 1414 static const 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 */ 1422 static 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 1428 static 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 1434 static const 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 */ 1442 static 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 1448 static 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 1453 static const 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 */ 1461 static 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 1467 static 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 1472 static const 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 */ 1480 static 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 1486 static 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 1491 static const 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 */ 1499 static 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 1505 static 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 1510 static const 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 */ 1518 static 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 1523 static 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 1532 static const 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 */ 1540 static 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 1545 static 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 1554 static const 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 */ 1562 static 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 1567 static 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 1574 static const 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 */ 1582 static 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 1587 static 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 1594 static const 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 */ 1602 static 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 1609 static const 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 */ 1617 static 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 1627 static const 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 */ 1635 static 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 1640 static 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 1652 static const 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 */ 1660 static 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 1665 static 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 1677 static const 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 */ 1685 static 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 1690 static 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 1700 static const 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 */ 1708 static 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 1713 static 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 1723 static const 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 */ 1731 static 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 1738 static const 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 */ 1746 static 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 1753 static const 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 */ 1761 static 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 1766 static 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 1773 static const 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 */ 1781 static 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 1788 static const 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 */ 1796 static 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 1803 static const 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 */ 1811 static 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 1818 static const 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 */ 1826 static 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 1831 static 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 1838 static const 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 */ 1846 static 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 1853 static const 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 */ 1861 static 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 1866 static 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 1875 static const 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 */ 1883 static 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 1888 static 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 1897 static const 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 */ 1905 static 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 1910 static 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 1918 static const 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 */ 1926 static 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 1931 static 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 1939 static const 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 */ 1947 static 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 1956 static const 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 */ 1964 static 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 1969 static 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 1975 static const 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 */ 1983 static 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 1988 static 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 1996 static const 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 */ 2004 static 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 2010 static 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 2018 static const 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 */ 2026 static 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 2032 static 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 2040 static const 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 */ 2048 static 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 2054 static 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 2063 static const 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 */ 2071 static 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 2077 static const llc_conn_action_t llc_busy_actions_26[] = { 2078 [0] = llc_conn_ac_set_data_flag_1, 2079 [1] = NULL, 2080 }; 2081 2082 static const 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 */ 2093 static const 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 */ 2158 static 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 2164 static 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 2169 static const 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 */ 2177 static 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 2183 static 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 2188 static const 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 */ 2196 static 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 */ 2203 static const llc_conn_action_t llc_reject_actions_2_1[1]; 2204 2205 static const 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 */ 2214 static 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 2219 static 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 2225 static const 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 */ 2233 static 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 2238 static 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 2244 static const 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 */ 2252 static 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 2259 static const 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 */ 2267 static 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 2274 static const 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 */ 2282 static 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 2287 static 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 2294 static const 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 */ 2302 static 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 2308 static const 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 */ 2316 static 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 2321 static 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 2333 static const 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 */ 2341 static 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 2346 static 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 2357 static const 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 */ 2365 static 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 2370 static 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 2379 static const 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 */ 2387 static 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 2392 static 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 2401 static const 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 */ 2409 static 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 2418 static const 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 */ 2426 static 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 2433 static const 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 */ 2441 static 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 2448 static const 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 */ 2456 static 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 2461 static 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 2468 static const 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 */ 2476 static 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 2483 static const 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 */ 2491 static 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 2498 static const 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 */ 2506 static 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 2513 static const 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 */ 2521 static 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 2526 static 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 2533 static const 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 */ 2541 static 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 2548 static const 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 */ 2556 static 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 2561 static 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 2570 static const 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 */ 2578 static 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 2583 static 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 2592 static const 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 */ 2600 static 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 2605 static 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 2613 static const 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 */ 2621 static 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 2626 static 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 2634 static const 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 */ 2642 static 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 2650 static const 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 */ 2658 static 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 2663 static 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 2669 static const 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 */ 2677 static 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 2683 static 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 2691 static const 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 */ 2699 static 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 2704 static 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 2713 static const 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 */ 2721 static 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 2727 static 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 2736 static const 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 */ 2744 static 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 2750 static 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 2759 static const 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 */ 2770 static const 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 */ 2829 static 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 */ 2835 static const llc_conn_action_t llc_await_actions_1_0[1]; 2836 2837 static const 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 */ 2845 static 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 2851 static const 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 */ 2859 static 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 2870 static const 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 */ 2878 static 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 2886 static const 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 */ 2894 static 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 2902 static const 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 */ 2910 static 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 2919 static const 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 */ 2927 static 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 2938 static const 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 */ 2946 static 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 2955 static const 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 */ 2963 static 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 2972 static const 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 */ 2980 static 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 2989 static const 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 */ 2997 static 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 3006 static const 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 */ 3014 static 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 3023 static const 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 */ 3031 static 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 3038 static const 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 */ 3046 static 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 3053 static const 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 */ 3061 static 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 3068 static const 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 */ 3076 static 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 3083 static const 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 */ 3091 static 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 3099 static const 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 */ 3107 static 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 3115 static const 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 */ 3123 static 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 3131 static const 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 */ 3139 static 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 3146 static const 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 */ 3154 static 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 3161 static const 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 */ 3169 static 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 3177 static const 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 */ 3185 static 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 3190 static 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 3197 static const 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 */ 3208 static const 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 */ 3258 static 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 */ 3264 static const llc_conn_action_t llc_await_busy_actions_1_0[1]; 3265 3266 static const 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 */ 3274 static 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 3279 static 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 3285 static const 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 */ 3293 static 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 3298 static 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 3303 static const 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 */ 3311 static 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 3316 static 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 3321 static const 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 */ 3329 static 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 3340 static const 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 */ 3348 static 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 3356 static const 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 */ 3364 static 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 3372 static const 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 */ 3380 static 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 3388 static const 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 */ 3396 static 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 3409 static const 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 */ 3417 static 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 3427 static const 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 */ 3435 static 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 3445 static const 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 */ 3453 static 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 3463 static const 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 */ 3471 static 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 3480 static const 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 */ 3488 static 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 3497 static const 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 */ 3505 static 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 3512 static const 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 */ 3520 static 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 3527 static const 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 */ 3535 static 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 3542 static const 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 */ 3550 static 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 3557 static const 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 */ 3565 static 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 3573 static const 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 */ 3581 static 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 3589 static const 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 */ 3597 static 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 3605 static const 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 */ 3613 static 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 3620 static const 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 */ 3628 static 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 3635 static const 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 */ 3643 static 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 3651 static const 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 */ 3659 static 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 3664 static 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 3671 static const 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 */ 3682 static const 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 */ 3734 static 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 */ 3740 static const llc_conn_action_t llc_await_reject_actions_1_0[1]; 3741 3742 static const 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 */ 3750 static 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 3756 static const 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 */ 3764 static 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 3770 static const 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 */ 3778 static 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 3784 static const 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 */ 3792 static 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 3799 static const 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 */ 3807 static 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 3819 static const 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 */ 3827 static 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 3837 static const 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 */ 3845 static 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 3855 static const 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 */ 3863 static 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 3873 static const 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 */ 3881 static 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 3890 static const 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 */ 3898 static 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 3907 static const 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 */ 3915 static 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 3924 static const 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 */ 3932 static 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 3939 static const 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 */ 3947 static 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 3954 static const 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 */ 3962 static 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 3969 static const 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 */ 3977 static 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 3984 static const 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 */ 3992 static 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 4000 static const 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 */ 4008 static 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 4016 static const 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 */ 4024 static 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 4032 static const 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 */ 4040 static 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 4047 static const 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 */ 4055 static 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 4062 static const 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 */ 4070 static 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 4078 static const 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 */ 4086 static 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 4091 static 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 4098 static const 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 */ 4109 static const 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 */ 4160 static 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 4166 static 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 4174 static const 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 */ 4184 static 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 4190 static 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 4197 static const 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 */ 4207 static 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 4214 static 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 4221 static const 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 */ 4231 static 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 4238 static 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 4244 static const 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 */ 4252 static 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 4257 static const 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 */ 4267 static 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 4273 static 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 4280 static const 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 */ 4290 static 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 4296 static 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 4302 static const 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 */ 4313 static 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 */ 4319 static const llc_conn_action_t llc_d_conn_actions_5[1]; 4320 4321 static const 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 */ 4329 static 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 4334 static 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 4341 static const 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 */ 4349 static 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 4356 static 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 4362 static const 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 */ 4370 static 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 4377 static const llc_conn_action_t llc_d_conn_actions_8[] = { 4378 [0] = llc_conn_disc, 4379 [1] = NULL, 4380 }; 4381 4382 static const 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 */ 4393 static const 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 */ 4414 static 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 4422 static const 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 */ 4432 static 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 4439 static 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 4450 static const 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 */ 4460 static 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 4467 static 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 4478 static const 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 */ 4486 static 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 4492 static 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 4498 static const 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 */ 4508 static 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 }; 4513 static 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 4521 static const 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 */ 4531 static 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 4537 static 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 4544 static const 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 */ 4554 static 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 4560 static 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 4567 static const 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 */ 4577 static 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 4583 static 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 4589 static const 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 */ 4597 static 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 */ 4603 static const llc_conn_action_t llc_rst_actions_6[1]; 4604 4605 static const 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 */ 4613 static 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 4619 static 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 4626 static const 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 */ 4634 static 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 }; 4641 static 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 4647 static const 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 */ 4655 static 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 }; 4662 static 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 4668 static const 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 */ 4679 static const 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 */ 4701 static 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 4713 static const 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 */ 4721 static 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 4729 static const 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 */ 4737 static 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 4744 static const 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 */ 4752 static 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 4760 static const 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 */ 4768 static 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 4773 static const 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 */ 4781 static const 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 */ 4789 static 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 4794 static 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 4801 static const 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 */ 4809 static 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 4814 static 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 4823 static const 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 */ 4831 static 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 */ 4837 static const llc_conn_action_t llc_error_actions_9[1]; 4838 4839 static const 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 */ 4850 static const 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 */ 4869 static 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 4876 static const 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 */ 4887 static const 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 */ 4897 struct 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