master/datagram.c
changeset 1606 6c5849669900
parent 1553 4e8d56d6f12a
child 1822 74e6ac2369f4
equal deleted inserted replaced
1605:1a588303083a 1606:6c5849669900
   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     }