for (i = 0; i < n; i++) {
// transfer data
if (CR_RANGE(s->async->cmd.chanlist[i]) <= 1) {
- comedi_buf_put
+ err = comedi_buf_put
(s->async,
- le16_to_cpu(this_usbduxsub->
- inBuffer[i]) ^ 0x800);
+ le16_to_cpu(this_usbduxsub->
+ inBuffer[i]) ^ 0x800);
} else {
- comedi_buf_put
+ err = comedi_buf_put
(s->async,
- le16_to_cpu(this_usbduxsub->inBuffer[i]));
+ le16_to_cpu(this_usbduxsub->inBuffer[i]));
}
+ if (unlikely(err == 0)) {
+ /* buffer overflow */
+ usbdux_ai_stop(this_usbduxsub, 0);
+ return;
+ }
}
// tell comedi that data is there
comedi_event(this_usbduxsub->comedidev, s);
this_usbduxfastsub->ai_sample_count -= n;
}
// write the full buffer to comedi
- cfc_write_array_to_buffer(s,
- urb->transfer_buffer, urb->actual_length);
+ err = cfc_write_array_to_buffer(s,
+ urb->transfer_buffer, urb->actual_length);
+
+ if (unlikely(err == 0)) {
+ /* buffer overflow */
+ usbduxfast_ai_stop(this_usbduxfastsub, 0);
+ return;
+ }
// tell comedi that data is there
comedi_event(this_usbduxfastsub->comedidev, s);