diff options
author | Clemens Ladisch <clemens@ladisch.de> | 2013-07-22 15:32:09 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-08-04 04:50:38 -0400 |
commit | f8c974f6fbdef40d37f957292f3238552a8d3598 (patch) | |
tree | 60392c81dcd63784f90d5e50952cce49a2963b94 /include | |
parent | 6d2c6593cf6592707c68e95f43982adbe573c6ac (diff) |
firewire: fix libdc1394/FlyCap2 iso event regression
commit 0699a73af3811b66b1ab5650575acee5eea841ab upstream.
Commit 18d627113b83 (firewire: prevent dropping of completed iso packet
header data) was intended to be an obvious bug fix, but libdc1394 and
FlyCap2 depend on the old behaviour by ignoring all returned information
and thus not noticing that not all packets have been received yet. The
result was that the video frame buffers would be saved before they
contained the correct data.
Reintroduce the old behaviour for old clients.
Tested-by: Stepan Salenikovich <stepan.salenikovich@gmail.com>
Tested-by: Josep Bosch <jep250@gmail.com>
Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/firewire.h | 1 | ||||
-rw-r--r-- | include/uapi/linux/firewire-cdev.h | 4 |
2 files changed, 3 insertions, 2 deletions
diff --git a/include/linux/firewire.h b/include/linux/firewire.h index 191501afd7fb..217e4b42b7c8 100644 --- a/include/linux/firewire.h +++ b/include/linux/firewire.h | |||
@@ -434,6 +434,7 @@ struct fw_iso_context { | |||
434 | int type; | 434 | int type; |
435 | int channel; | 435 | int channel; |
436 | int speed; | 436 | int speed; |
437 | bool drop_overflow_headers; | ||
437 | size_t header_size; | 438 | size_t header_size; |
438 | union { | 439 | union { |
439 | fw_iso_callback_t sc; | 440 | fw_iso_callback_t sc; |
diff --git a/include/uapi/linux/firewire-cdev.h b/include/uapi/linux/firewire-cdev.h index d50036953497..1db453e4b550 100644 --- a/include/uapi/linux/firewire-cdev.h +++ b/include/uapi/linux/firewire-cdev.h | |||
@@ -215,8 +215,8 @@ struct fw_cdev_event_request2 { | |||
215 | * with the %FW_CDEV_ISO_INTERRUPT bit set, when explicitly requested with | 215 | * with the %FW_CDEV_ISO_INTERRUPT bit set, when explicitly requested with |
216 | * %FW_CDEV_IOC_FLUSH_ISO, or when there have been so many completed packets | 216 | * %FW_CDEV_IOC_FLUSH_ISO, or when there have been so many completed packets |
217 | * without the interrupt bit set that the kernel's internal buffer for @header | 217 | * without the interrupt bit set that the kernel's internal buffer for @header |
218 | * is about to overflow. (In the last case, kernels with ABI version < 5 drop | 218 | * is about to overflow. (In the last case, ABI versions < 5 drop header data |
219 | * header data up to the next interrupt packet.) | 219 | * up to the next interrupt packet.) |
220 | * | 220 | * |
221 | * Isochronous transmit events (context type %FW_CDEV_ISO_CONTEXT_TRANSMIT): | 221 | * Isochronous transmit events (context type %FW_CDEV_ISO_CONTEXT_TRANSMIT): |
222 | * | 222 | * |