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