equal
deleted
inserted
replaced
114 |
114 |
115 /** Destructor. |
115 /** Destructor. |
116 */ |
116 */ |
117 void ec_datagram_clear(ec_datagram_t *datagram /**< EtherCAT datagram. */) |
117 void ec_datagram_clear(ec_datagram_t *datagram /**< EtherCAT datagram. */) |
118 { |
118 { |
|
119 ec_datagram_unqueue(datagram); |
|
120 |
119 if (datagram->data_origin == EC_ORIG_INTERNAL && datagram->data) { |
121 if (datagram->data_origin == EC_ORIG_INTERNAL && datagram->data) { |
120 kfree(datagram->data); |
122 kfree(datagram->data); |
121 datagram->data = NULL; |
123 datagram->data = NULL; |
|
124 } |
|
125 } |
|
126 |
|
127 /*****************************************************************************/ |
|
128 |
|
129 /** Unqueue datagram. |
|
130 */ |
|
131 void ec_datagram_unqueue(ec_datagram_t *datagram /**< EtherCAT datagram. */) |
|
132 { |
|
133 if (!list_empty(&datagram->queue)) { |
|
134 list_del_init(&datagram->queue); |
122 } |
135 } |
123 } |
136 } |
124 |
137 |
125 /*****************************************************************************/ |
138 /*****************************************************************************/ |
126 |
139 |
147 datagram->data = NULL; |
160 datagram->data = NULL; |
148 datagram->mem_size = 0; |
161 datagram->mem_size = 0; |
149 } |
162 } |
150 |
163 |
151 if (!(datagram->data = kmalloc(size, GFP_KERNEL))) { |
164 if (!(datagram->data = kmalloc(size, GFP_KERNEL))) { |
152 EC_ERR("Failed to allocate %u bytes of datagram memory!\n", size); |
165 EC_ERR("Failed to allocate %zu bytes of datagram memory!\n", size); |
153 return -ENOMEM; |
166 return -ENOMEM; |
154 } |
167 } |
155 |
168 |
156 datagram->mem_size = size; |
169 datagram->mem_size = size; |
157 return 0; |
170 return 0; |
514 { |
527 { |
515 if (jiffies - datagram->stats_output_jiffies < HZ) { |
528 if (jiffies - datagram->stats_output_jiffies < HZ) { |
516 datagram->stats_output_jiffies = jiffies; |
529 datagram->stats_output_jiffies = jiffies; |
517 |
530 |
518 if (unlikely(datagram->skip_count)) { |
531 if (unlikely(datagram->skip_count)) { |
519 EC_WARN("Datagram %x (%s) was SKIPPED %u time%s.\n", |
532 EC_WARN("Datagram %p (%s) was SKIPPED %u time%s.\n", |
520 (unsigned int) datagram, datagram->name, |
533 datagram, datagram->name, |
521 datagram->skip_count, |
534 datagram->skip_count, |
522 datagram->skip_count == 1 ? "" : "s"); |
535 datagram->skip_count == 1 ? "" : "s"); |
523 datagram->skip_count = 0; |
536 datagram->skip_count = 0; |
524 } |
537 } |
525 } |
538 } |