Blame view

net/llc/llc_s_st.c 5.74 KB
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
  /*
   * llc_s_st.c - Defines SAP component state machine transitions.
   *
   * The followed transitions are SAP component state machine transitions
   * which are described in 802.2 LLC protocol standard document.
   *
   * Copyright (c) 1997 by Procom Technology, Inc.
   *		 2001-2003 by Arnaldo Carvalho de Melo <acme@conectiva.com.br>
   *
   * This program can be redistributed or modified under the terms of the
   * GNU General Public License as published by the Free Software Foundation.
   * This program is distributed without any warranty or implied warranty
   * of merchantability or fitness for a particular purpose.
   *
   * See the GNU General Public License for more details.
   */
  #include <linux/types.h>
  #include <net/llc_if.h>
  #include <net/llc_s_ev.h>
  #include <net/llc_s_ac.h>
  #include <net/llc_s_st.h>
  
  /* dummy last-transition indicator; common to all state transition groups
   * last entry for this state
   * all members are zeros, .bss zeroes it
   */
  static struct llc_sap_state_trans llc_sap_state_trans_end;
  
  /* state LLC_SAP_STATE_INACTIVE transition for
   * LLC_SAP_EV_ACTIVATION_REQ event
   */
22bbf5f3e   Joe Perches   llc: Make llc_sap...
32
  static const llc_sap_action_t llc_sap_inactive_state_actions_1[] = {
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
  	[0] = llc_sap_action_report_status,
  	[1] = NULL,
  };
  
  static struct llc_sap_state_trans llc_sap_inactive_state_trans_1 = {
  	.ev =		llc_sap_ev_activation_req,
  	.next_state =	LLC_SAP_STATE_ACTIVE,
  	.ev_actions =	llc_sap_inactive_state_actions_1,
  };
  
  /* array of pointers; one to each transition */
  static struct llc_sap_state_trans *llc_sap_inactive_state_transitions[] = {
  	[0] = &llc_sap_inactive_state_trans_1,
  	[1] = &llc_sap_state_trans_end,
  };
  
  /* state LLC_SAP_STATE_ACTIVE transition for LLC_SAP_EV_RX_UI event */
22bbf5f3e   Joe Perches   llc: Make llc_sap...
50
  static const llc_sap_action_t llc_sap_active_state_actions_1[] = {
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
51
52
53
54
55
56
57
58
59
60
61
  	[0] = llc_sap_action_unitdata_ind,
  	[1] = NULL,
  };
  
  static struct llc_sap_state_trans llc_sap_active_state_trans_1 = {
  	.ev =		llc_sap_ev_rx_ui,
  	.next_state =	LLC_SAP_STATE_ACTIVE,
  	.ev_actions =	llc_sap_active_state_actions_1,
  };
  
  /* state LLC_SAP_STATE_ACTIVE transition for LLC_SAP_EV_UNITDATA_REQ event */
22bbf5f3e   Joe Perches   llc: Make llc_sap...
62
  static const llc_sap_action_t llc_sap_active_state_actions_2[] = {
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
63
64
65
66
67
68
69
70
71
72
73
  	[0] = llc_sap_action_send_ui,
  	[1] = NULL,
  };
  
  static struct llc_sap_state_trans llc_sap_active_state_trans_2 = {
  	.ev =		llc_sap_ev_unitdata_req,
  	.next_state =	LLC_SAP_STATE_ACTIVE,
  	.ev_actions =	llc_sap_active_state_actions_2,
  };
  
  /* state LLC_SAP_STATE_ACTIVE transition for LLC_SAP_EV_XID_REQ event */
22bbf5f3e   Joe Perches   llc: Make llc_sap...
74
  static const llc_sap_action_t llc_sap_active_state_actions_3[] = {
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
75
76
77
78
79
80
81
82
83
84
85
  	[0] = llc_sap_action_send_xid_c,
  	[1] = NULL,
  };
  
  static struct llc_sap_state_trans llc_sap_active_state_trans_3 = {
  	.ev =		llc_sap_ev_xid_req,
  	.next_state =	LLC_SAP_STATE_ACTIVE,
  	.ev_actions =	llc_sap_active_state_actions_3,
  };
  
  /* state LLC_SAP_STATE_ACTIVE transition for LLC_SAP_EV_RX_XID_C event */
22bbf5f3e   Joe Perches   llc: Make llc_sap...
86
  static const llc_sap_action_t llc_sap_active_state_actions_4[] = {
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
87
88
89
90
91
92
93
94
95
96
97
  	[0] = llc_sap_action_send_xid_r,
  	[1] = NULL,
  };
  
  static struct llc_sap_state_trans llc_sap_active_state_trans_4 = {
  	.ev =		llc_sap_ev_rx_xid_c,
  	.next_state =	LLC_SAP_STATE_ACTIVE,
  	.ev_actions =	llc_sap_active_state_actions_4,
  };
  
  /* state LLC_SAP_STATE_ACTIVE transition for LLC_SAP_EV_RX_XID_R event */
22bbf5f3e   Joe Perches   llc: Make llc_sap...
98
  static const llc_sap_action_t llc_sap_active_state_actions_5[] = {
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
99
100
101
102
103
104
105
106
107
108
109
  	[0] = llc_sap_action_xid_ind,
  	[1] = NULL,
  };
  
  static struct llc_sap_state_trans llc_sap_active_state_trans_5 = {
  	.ev =		llc_sap_ev_rx_xid_r,
  	.next_state =	LLC_SAP_STATE_ACTIVE,
  	.ev_actions =	llc_sap_active_state_actions_5,
  };
  
  /* state LLC_SAP_STATE_ACTIVE transition for LLC_SAP_EV_TEST_REQ event */
22bbf5f3e   Joe Perches   llc: Make llc_sap...
110
  static const llc_sap_action_t llc_sap_active_state_actions_6[] = {
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
111
112
113
114
115
116
117
118
119
120
121
  	[0] = llc_sap_action_send_test_c,
  	[1] = NULL,
  };
  
  static struct llc_sap_state_trans llc_sap_active_state_trans_6 = {
  	.ev =		llc_sap_ev_test_req,
  	.next_state =	LLC_SAP_STATE_ACTIVE,
  	.ev_actions =	llc_sap_active_state_actions_6,
  };
  
  /* state LLC_SAP_STATE_ACTIVE transition for LLC_SAP_EV_RX_TEST_C event */
22bbf5f3e   Joe Perches   llc: Make llc_sap...
122
  static const llc_sap_action_t llc_sap_active_state_actions_7[] = {
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
123
124
125
126
127
128
129
130
131
132
133
  	[0] = llc_sap_action_send_test_r,
  	[1] = NULL,
  };
  
  static struct llc_sap_state_trans llc_sap_active_state_trans_7 = {
  	.ev =		llc_sap_ev_rx_test_c,
  	.next_state =	LLC_SAP_STATE_ACTIVE,
  	.ev_actions =	llc_sap_active_state_actions_7
  };
  
  /* state LLC_SAP_STATE_ACTIVE transition for LLC_SAP_EV_RX_TEST_R event */
22bbf5f3e   Joe Perches   llc: Make llc_sap...
134
  static const llc_sap_action_t llc_sap_active_state_actions_8[] = {
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
135
136
137
138
139
140
141
142
143
144
145
146
147
  	[0] = llc_sap_action_test_ind,
  	[1] = NULL,
  };
  
  static struct llc_sap_state_trans llc_sap_active_state_trans_8 = {
  	.ev =		llc_sap_ev_rx_test_r,
  	.next_state =	LLC_SAP_STATE_ACTIVE,
  	.ev_actions =	llc_sap_active_state_actions_8,
  };
  
  /* state LLC_SAP_STATE_ACTIVE transition for
   * LLC_SAP_EV_DEACTIVATION_REQ event
   */
22bbf5f3e   Joe Perches   llc: Make llc_sap...
148
  static const llc_sap_action_t llc_sap_active_state_actions_9[] = {
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
  	[0] = llc_sap_action_report_status,
  	[1] = NULL,
  };
  
  static struct llc_sap_state_trans llc_sap_active_state_trans_9 = {
  	.ev =		llc_sap_ev_deactivation_req,
  	.next_state =	LLC_SAP_STATE_INACTIVE,
  	.ev_actions =	llc_sap_active_state_actions_9
  };
  
  /* array of pointers; one to each transition */
  static struct llc_sap_state_trans *llc_sap_active_state_transitions[] = {
  	[0] = &llc_sap_active_state_trans_2,
  	[1] = &llc_sap_active_state_trans_1,
  	[2] = &llc_sap_active_state_trans_3,
  	[3] = &llc_sap_active_state_trans_4,
  	[4] = &llc_sap_active_state_trans_5,
  	[5] = &llc_sap_active_state_trans_6,
  	[6] = &llc_sap_active_state_trans_7,
  	[7] = &llc_sap_active_state_trans_8,
  	[8] = &llc_sap_active_state_trans_9,
  	[9] = &llc_sap_state_trans_end,
  };
  
  /* SAP state transition table */
  struct llc_sap_state llc_sap_state_table[LLC_NR_SAP_STATES] = {
  	[LLC_SAP_STATE_INACTIVE - 1] = {
  		.curr_state	= LLC_SAP_STATE_INACTIVE,
  		.transitions	= llc_sap_inactive_state_transitions,
d57b1869b   YOSHIFUJI Hideaki   [NET] LLC: Fix wh...
178
  	},
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
179
180
181
182
183
  	[LLC_SAP_STATE_ACTIVE - 1] = {
  		.curr_state	= LLC_SAP_STATE_ACTIVE,
  		.transitions	= llc_sap_active_state_transitions,
  	},
  };