xref: /openbmc/linux/net/llc/llc_c_st.c (revision 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2)
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