• Frank Schaefer's avatar
    [media] em28xx: fix analog streaming with USB bulk transfers · 33f6984e
    Frank Schaefer authored
    With the conversion to videobuf2, some unnecessary calls of
    em28xx_set_alternate() have been removed. It is now called at analog streaming
    start only.
    This has unveiled a bug that causes USB bulk transfers to fail with all urbs
    having status -EVOERFLOW.
    The reason is, that for bulk transfers usb_set_interface() needs to be called
    even if the previous alt setting was the same (side note: bulk transfers seem
    to work only with alt=0).
    While it seems to be NOT necessary for isoc transfers, it's reasonable to just
    call usb_set_interface() unconditionally in em28xx_set_alternate().
    Also add a comment that explains the issue to prevent regressions in the future.
    
    Cc: stable@vger.kernel.org # for 3.8
    Signed-off-by: default avatarFrank Schäfer <fschaefer.oss@googlemail.com>
    Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
    33f6984e
em28xx-core.c 32.8 KB