112 int ret; |
112 int ret; |
113 |
113 |
114 master->index = index; |
114 master->index = index; |
115 master->reserved = 0; |
115 master->reserved = 0; |
116 |
116 |
117 init_MUTEX(&master->master_sem); |
117 sema_init(&master->master_sem, 1); |
118 |
118 |
119 master->main_mac = main_mac; |
119 master->main_mac = main_mac; |
120 master->backup_mac = backup_mac; |
120 master->backup_mac = backup_mac; |
121 init_MUTEX(&master->device_sem); |
121 |
|
122 sema_init(&master->device_sem, 1); |
122 |
123 |
123 master->phase = EC_ORPHANED; |
124 master->phase = EC_ORPHANED; |
124 master->active = 0; |
125 master->active = 0; |
125 master->injection_seq_fsm = 0; |
126 master->injection_seq_fsm = 0; |
126 master->injection_seq_rt = 0; |
127 master->injection_seq_rt = 0; |
134 master->app_start_time = 0ULL; |
135 master->app_start_time = 0ULL; |
135 master->has_start_time = 0; |
136 master->has_start_time = 0; |
136 |
137 |
137 master->scan_busy = 0; |
138 master->scan_busy = 0; |
138 master->allow_scan = 1; |
139 master->allow_scan = 1; |
139 init_MUTEX(&master->scan_sem); |
140 sema_init(&master->scan_sem, 1); |
140 init_waitqueue_head(&master->scan_queue); |
141 init_waitqueue_head(&master->scan_queue); |
141 |
142 |
142 master->config_busy = 0; |
143 master->config_busy = 0; |
143 master->allow_config = 1; |
144 master->allow_config = 1; |
144 init_MUTEX(&master->config_sem); |
145 sema_init(&master->config_sem, 1); |
145 init_waitqueue_head(&master->config_queue); |
146 init_waitqueue_head(&master->config_queue); |
146 |
147 |
147 INIT_LIST_HEAD(&master->datagram_queue); |
148 INIT_LIST_HEAD(&master->datagram_queue); |
148 master->datagram_index = 0; |
149 master->datagram_index = 0; |
149 |
150 |
150 INIT_LIST_HEAD(&master->ext_datagram_queue); |
151 INIT_LIST_HEAD(&master->ext_datagram_queue); |
151 init_MUTEX(&master->ext_queue_sem); |
152 sema_init(&master->ext_queue_sem, 1); |
152 |
153 |
153 INIT_LIST_HEAD(&master->domains); |
154 INIT_LIST_HEAD(&master->domains); |
154 |
155 |
155 master->debug_level = debug_level; |
156 master->debug_level = debug_level; |
156 master->stats.timeouts = 0; |
157 master->stats.timeouts = 0; |
164 #ifdef EC_EOE |
165 #ifdef EC_EOE |
165 master->eoe_thread = NULL; |
166 master->eoe_thread = NULL; |
166 INIT_LIST_HEAD(&master->eoe_handlers); |
167 INIT_LIST_HEAD(&master->eoe_handlers); |
167 #endif |
168 #endif |
168 |
169 |
169 init_MUTEX(&master->io_sem); |
170 sema_init(&master->io_sem, 1); |
170 master->send_cb = NULL; |
171 master->send_cb = NULL; |
171 master->receive_cb = NULL; |
172 master->receive_cb = NULL; |
172 master->cb_data = NULL; |
173 master->cb_data = NULL; |
173 master->app_send_cb = NULL; |
174 master->app_send_cb = NULL; |
174 master->app_receive_cb = NULL; |
175 master->app_receive_cb = NULL; |