0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017 #include <linux/types.h>
0018 #include <net/llc_if.h>
0019 #include <net/llc_s_ev.h>
0020 #include <net/llc_s_ac.h>
0021 #include <net/llc_s_st.h>
0022
0023
0024
0025
0026
0027 static struct llc_sap_state_trans llc_sap_state_trans_end;
0028
0029
0030
0031
0032 static const llc_sap_action_t llc_sap_inactive_state_actions_1[] = {
0033 [0] = llc_sap_action_report_status,
0034 [1] = NULL,
0035 };
0036
0037 static struct llc_sap_state_trans llc_sap_inactive_state_trans_1 = {
0038 .ev = llc_sap_ev_activation_req,
0039 .next_state = LLC_SAP_STATE_ACTIVE,
0040 .ev_actions = llc_sap_inactive_state_actions_1,
0041 };
0042
0043
0044 static struct llc_sap_state_trans *llc_sap_inactive_state_transitions[] = {
0045 [0] = &llc_sap_inactive_state_trans_1,
0046 [1] = &llc_sap_state_trans_end,
0047 };
0048
0049
0050 static const llc_sap_action_t llc_sap_active_state_actions_1[] = {
0051 [0] = llc_sap_action_unitdata_ind,
0052 [1] = NULL,
0053 };
0054
0055 static struct llc_sap_state_trans llc_sap_active_state_trans_1 = {
0056 .ev = llc_sap_ev_rx_ui,
0057 .next_state = LLC_SAP_STATE_ACTIVE,
0058 .ev_actions = llc_sap_active_state_actions_1,
0059 };
0060
0061
0062 static const llc_sap_action_t llc_sap_active_state_actions_2[] = {
0063 [0] = llc_sap_action_send_ui,
0064 [1] = NULL,
0065 };
0066
0067 static struct llc_sap_state_trans llc_sap_active_state_trans_2 = {
0068 .ev = llc_sap_ev_unitdata_req,
0069 .next_state = LLC_SAP_STATE_ACTIVE,
0070 .ev_actions = llc_sap_active_state_actions_2,
0071 };
0072
0073
0074 static const llc_sap_action_t llc_sap_active_state_actions_3[] = {
0075 [0] = llc_sap_action_send_xid_c,
0076 [1] = NULL,
0077 };
0078
0079 static struct llc_sap_state_trans llc_sap_active_state_trans_3 = {
0080 .ev = llc_sap_ev_xid_req,
0081 .next_state = LLC_SAP_STATE_ACTIVE,
0082 .ev_actions = llc_sap_active_state_actions_3,
0083 };
0084
0085
0086 static const llc_sap_action_t llc_sap_active_state_actions_4[] = {
0087 [0] = llc_sap_action_send_xid_r,
0088 [1] = NULL,
0089 };
0090
0091 static struct llc_sap_state_trans llc_sap_active_state_trans_4 = {
0092 .ev = llc_sap_ev_rx_xid_c,
0093 .next_state = LLC_SAP_STATE_ACTIVE,
0094 .ev_actions = llc_sap_active_state_actions_4,
0095 };
0096
0097
0098 static const llc_sap_action_t llc_sap_active_state_actions_5[] = {
0099 [0] = llc_sap_action_xid_ind,
0100 [1] = NULL,
0101 };
0102
0103 static struct llc_sap_state_trans llc_sap_active_state_trans_5 = {
0104 .ev = llc_sap_ev_rx_xid_r,
0105 .next_state = LLC_SAP_STATE_ACTIVE,
0106 .ev_actions = llc_sap_active_state_actions_5,
0107 };
0108
0109
0110 static const llc_sap_action_t llc_sap_active_state_actions_6[] = {
0111 [0] = llc_sap_action_send_test_c,
0112 [1] = NULL,
0113 };
0114
0115 static struct llc_sap_state_trans llc_sap_active_state_trans_6 = {
0116 .ev = llc_sap_ev_test_req,
0117 .next_state = LLC_SAP_STATE_ACTIVE,
0118 .ev_actions = llc_sap_active_state_actions_6,
0119 };
0120
0121
0122 static const llc_sap_action_t llc_sap_active_state_actions_7[] = {
0123 [0] = llc_sap_action_send_test_r,
0124 [1] = NULL,
0125 };
0126
0127 static struct llc_sap_state_trans llc_sap_active_state_trans_7 = {
0128 .ev = llc_sap_ev_rx_test_c,
0129 .next_state = LLC_SAP_STATE_ACTIVE,
0130 .ev_actions = llc_sap_active_state_actions_7
0131 };
0132
0133
0134 static const llc_sap_action_t llc_sap_active_state_actions_8[] = {
0135 [0] = llc_sap_action_test_ind,
0136 [1] = NULL,
0137 };
0138
0139 static struct llc_sap_state_trans llc_sap_active_state_trans_8 = {
0140 .ev = llc_sap_ev_rx_test_r,
0141 .next_state = LLC_SAP_STATE_ACTIVE,
0142 .ev_actions = llc_sap_active_state_actions_8,
0143 };
0144
0145
0146
0147
0148 static const llc_sap_action_t llc_sap_active_state_actions_9[] = {
0149 [0] = llc_sap_action_report_status,
0150 [1] = NULL,
0151 };
0152
0153 static struct llc_sap_state_trans llc_sap_active_state_trans_9 = {
0154 .ev = llc_sap_ev_deactivation_req,
0155 .next_state = LLC_SAP_STATE_INACTIVE,
0156 .ev_actions = llc_sap_active_state_actions_9
0157 };
0158
0159
0160 static struct llc_sap_state_trans *llc_sap_active_state_transitions[] = {
0161 [0] = &llc_sap_active_state_trans_2,
0162 [1] = &llc_sap_active_state_trans_1,
0163 [2] = &llc_sap_active_state_trans_3,
0164 [3] = &llc_sap_active_state_trans_4,
0165 [4] = &llc_sap_active_state_trans_5,
0166 [5] = &llc_sap_active_state_trans_6,
0167 [6] = &llc_sap_active_state_trans_7,
0168 [7] = &llc_sap_active_state_trans_8,
0169 [8] = &llc_sap_active_state_trans_9,
0170 [9] = &llc_sap_state_trans_end,
0171 };
0172
0173
0174 struct llc_sap_state llc_sap_state_table[LLC_NR_SAP_STATES] = {
0175 [LLC_SAP_STATE_INACTIVE - 1] = {
0176 .curr_state = LLC_SAP_STATE_INACTIVE,
0177 .transitions = llc_sap_inactive_state_transitions,
0178 },
0179 [LLC_SAP_STATE_ACTIVE - 1] = {
0180 .curr_state = LLC_SAP_STATE_ACTIVE,
0181 .transitions = llc_sap_active_state_transitions,
0182 },
0183 };