]> rtime.felk.cvut.cz Git - linux-imx.git/blobdiff - drivers/firewire/ohci.c
firewire: ohci: fix too-early completion of IR multichannel buffers
[linux-imx.git] / drivers / firewire / ohci.c
index 384b5b08126ceee243f71b1c4f6c6ee00c75379c..e52615a14382afcafd79ba011648e135284e07df 100644 (file)
@@ -2751,7 +2751,7 @@ static int handle_ir_buffer_fill(struct context *context,
                container_of(context, struct iso_context, context);
        u32 buffer_dma;
 
-       if (!last->transfer_status)
+       if (last->res_count != 0)
                /* Descriptor(s) not done yet, stop iteration */
                return 0;
 
@@ -2765,8 +2765,7 @@ static int handle_ir_buffer_fill(struct context *context,
        if (le16_to_cpu(last->control) & DESCRIPTOR_IRQ_ALWAYS)
                ctx->base.callback.mc(&ctx->base,
                                      le32_to_cpu(last->data_address) +
-                                     le16_to_cpu(last->req_count) -
-                                     le16_to_cpu(last->res_count),
+                                     le16_to_cpu(last->req_count),
                                      ctx->base.callback_data);
 
        return 1;