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