equal
deleted
inserted
replaced
168 master->debug_level = debug_level; |
168 master->debug_level = debug_level; |
169 master->stats.timeouts = 0; |
169 master->stats.timeouts = 0; |
170 master->stats.corrupted = 0; |
170 master->stats.corrupted = 0; |
171 master->stats.unmatched = 0; |
171 master->stats.unmatched = 0; |
172 master->stats.output_jiffies = 0; |
172 master->stats.output_jiffies = 0; |
173 master->frames_timed_out = 0; |
|
174 |
173 |
175 master->thread = NULL; |
174 master->thread = NULL; |
176 |
175 |
177 #ifdef EC_EOE |
176 #ifdef EC_EOE |
178 master->eoe_thread = NULL; |
177 master->eoe_thread = NULL; |
2095 /*****************************************************************************/ |
2094 /*****************************************************************************/ |
2096 |
2095 |
2097 void ecrt_master_receive(ec_master_t *master) |
2096 void ecrt_master_receive(ec_master_t *master) |
2098 { |
2097 { |
2099 ec_datagram_t *datagram, *next; |
2098 ec_datagram_t *datagram, *next; |
2100 unsigned int frames_timed_out = 0; |
|
2101 |
2099 |
2102 // receive datagrams |
2100 // receive datagrams |
2103 ec_device_poll(&master->main_device); |
2101 ec_device_poll(&master->main_device); |
2104 |
2102 |
2105 // dequeue all datagrams that timed out |
2103 // dequeue all datagrams that timed out |
2111 > timeout_cycles) { |
2109 > timeout_cycles) { |
2112 #else |
2110 #else |
2113 if (master->main_device.jiffies_poll - datagram->jiffies_sent |
2111 if (master->main_device.jiffies_poll - datagram->jiffies_sent |
2114 > timeout_jiffies) { |
2112 > timeout_jiffies) { |
2115 #endif |
2113 #endif |
2116 frames_timed_out = 1; |
|
2117 list_del_init(&datagram->queue); |
2114 list_del_init(&datagram->queue); |
2118 datagram->state = EC_DATAGRAM_TIMED_OUT; |
2115 datagram->state = EC_DATAGRAM_TIMED_OUT; |
2119 master->stats.timeouts++; |
2116 master->stats.timeouts++; |
2120 ec_master_output_stats(master); |
2117 ec_master_output_stats(master); |
2121 |
2118 |
2131 EC_DBG("TIMED OUT datagram %p, index %02X waited %u us.\n", |
2128 EC_DBG("TIMED OUT datagram %p, index %02X waited %u us.\n", |
2132 datagram, datagram->index, time_us); |
2129 datagram, datagram->index, time_us); |
2133 } |
2130 } |
2134 } |
2131 } |
2135 } |
2132 } |
2136 |
|
2137 master->frames_timed_out = frames_timed_out; |
|
2138 } |
2133 } |
2139 |
2134 |
2140 /*****************************************************************************/ |
2135 /*****************************************************************************/ |
2141 |
2136 |
2142 void ecrt_master_send_ext(ec_master_t *master) |
2137 void ecrt_master_send_ext(ec_master_t *master) |