1271 // receive |
1271 // receive |
1272 down(&master->io_sem); |
1272 down(&master->io_sem); |
1273 ecrt_master_receive(master); |
1273 ecrt_master_receive(master); |
1274 up(&master->io_sem); |
1274 up(&master->io_sem); |
1275 |
1275 |
1276 fsm_exec = 0; |
1276 if (master->injection_seq_rt == master->injection_seq_fsm) { |
1277 // execute master & slave state machines |
1277 fsm_exec = 0; |
1278 if (down_interruptible(&master->master_sem)) |
1278 // execute master & slave state machines |
1279 break; |
1279 if (down_interruptible(&master->master_sem)) |
1280 fsm_exec = ec_fsm_master_exec(&master->fsm); |
1280 break; |
1281 for (slave = master->slaves; |
1281 fsm_exec = ec_fsm_master_exec(&master->fsm); |
1282 slave < master->slaves + master->slave_count; |
1282 for (slave = master->slaves; |
1283 slave++) { |
1283 slave < master->slaves + master->slave_count; |
1284 ec_fsm_slave_exec(&slave->fsm); |
1284 slave++) { |
1285 } |
1285 ec_fsm_slave_exec(&slave->fsm); |
1286 up(&master->master_sem); |
1286 } |
1287 |
1287 up(&master->master_sem); |
1288 // queue and send |
1288 |
1289 down(&master->io_sem); |
1289 // queue and send |
1290 if (fsm_exec) { |
1290 down(&master->io_sem); |
1291 ec_master_queue_datagram(master, &master->fsm_datagram); |
1291 if (fsm_exec) { |
1292 } |
1292 master->injection_seq_rt++; |
1293 ec_master_inject_external_datagrams(master); |
1293 } |
|
1294 } |
1294 ecrt_master_send(master); |
1295 ecrt_master_send(master); |
1295 sent_bytes = master->main_device.tx_skb[ |
1296 sent_bytes = master->main_device.tx_skb[ |
1296 master->main_device.tx_ring_index]->len; |
1297 master->main_device.tx_ring_index]->len; |
1297 up(&master->io_sem); |
1298 up(&master->io_sem); |
1298 |
1299 |
1340 |
1341 |
1341 fsm_exec = 0; |
1342 fsm_exec = 0; |
1342 // execute master & slave state machines |
1343 // execute master & slave state machines |
1343 if (down_interruptible(&master->master_sem)) |
1344 if (down_interruptible(&master->master_sem)) |
1344 break; |
1345 break; |
1345 fsm_exec += ec_fsm_master_exec(&master->fsm); |
1346 fsm_exec = ec_fsm_master_exec(&master->fsm); |
1346 for (slave = master->slaves; |
1347 for (slave = master->slaves; |
1347 slave < master->slaves + master->slave_count; |
1348 slave < master->slaves + master->slave_count; |
1348 slave++) { |
1349 slave++) { |
1349 ec_fsm_slave_exec(&slave->fsm); |
1350 ec_fsm_slave_exec(&slave->fsm); |
1350 } |
1351 } |