master/cdev.c
changeset 1851 a56bd34e20a1
parent 1839 7f36c38e2518
child 1857 ed8b490b5bc3
equal deleted inserted replaced
1850:fa112b8a371b 1851:a56bd34e20a1
   182         ec_master_t *master, /**< EtherCAT master. */
   182         ec_master_t *master, /**< EtherCAT master. */
   183         unsigned long arg /**< Userspace address to store the results. */
   183         unsigned long arg /**< Userspace address to store the results. */
   184         )
   184         )
   185 {
   185 {
   186     ec_ioctl_master_t data;
   186     ec_ioctl_master_t data;
       
   187     unsigned int i;
   187 
   188 
   188     if (down_interruptible(&master->master_sem))
   189     if (down_interruptible(&master->master_sem))
   189         return -EINTR;
   190         return -EINTR;
   190     data.slave_count = master->slave_count;
   191     data.slave_count = master->slave_count;
   191     data.config_count = ec_master_config_count(master);
   192     data.config_count = ec_master_config_count(master);
   209     }
   210     }
   210     data.devices[0].attached = master->main_device.dev ? 1 : 0;
   211     data.devices[0].attached = master->main_device.dev ? 1 : 0;
   211     data.devices[0].link_state = master->main_device.link_state ? 1 : 0;
   212     data.devices[0].link_state = master->main_device.link_state ? 1 : 0;
   212     data.devices[0].tx_count = master->main_device.tx_count;
   213     data.devices[0].tx_count = master->main_device.tx_count;
   213     data.devices[0].rx_count = master->main_device.rx_count;
   214     data.devices[0].rx_count = master->main_device.rx_count;
       
   215     for (i = 0; i < EC_RATE_COUNT; i++) {
       
   216         data.devices[0].tx_rates[i] = master->main_device.tx_rates[i];
       
   217         data.devices[0].loss_rates[i] = master->main_device.loss_rates[i];
       
   218     }
   214 
   219 
   215     if (master->backup_device.dev) {
   220     if (master->backup_device.dev) {
   216         memcpy(data.devices[1].address,
   221         memcpy(data.devices[1].address,
   217                 master->backup_device.dev->dev_addr, ETH_ALEN); 
   222                 master->backup_device.dev->dev_addr, ETH_ALEN); 
   218     } else {
   223     } else {
   220     }
   225     }
   221     data.devices[1].attached = master->backup_device.dev ? 1 : 0;
   226     data.devices[1].attached = master->backup_device.dev ? 1 : 0;
   222     data.devices[1].link_state = master->backup_device.link_state ? 1 : 0;
   227     data.devices[1].link_state = master->backup_device.link_state ? 1 : 0;
   223     data.devices[1].tx_count = master->backup_device.tx_count;
   228     data.devices[1].tx_count = master->backup_device.tx_count;
   224     data.devices[1].rx_count = master->backup_device.rx_count;
   229     data.devices[1].rx_count = master->backup_device.rx_count;
       
   230     for (i = 0; i < EC_RATE_COUNT; i++) {
       
   231         data.devices[1].tx_rates[i] = master->backup_device.tx_rates[i];
       
   232         data.devices[1].loss_rates[i] = master->backup_device.loss_rates[i];
       
   233     }
   225 
   234 
   226     up(&master->device_sem);
   235     up(&master->device_sem);
   227 
   236 
   228     data.app_time = master->app_time;
   237     data.app_time = master->app_time;
   229     data.ref_clock =
   238     data.ref_clock =