[lkml]   [2008]   [Feb]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    Patch in this message
    Subject[PATCH 1/2] firewire: endianess fix
    The generation of incoming requests was filled in in wrong byte order on
    machines with big endian CPU.

    Signed-off-by: Stefan Richter <>

    This patch is a shot in the dark, based on a warning when building with
    C=1 CHECKFLAGS="-D__CHECK_ENDIAN__". Is it really a fix, or was the
    previous code accidentally correct?

    This needs to be tested on different big endian PCs, if possible with
    the Apple Uninorth FireWire controller and other types of controllers.
    One test which involves ohci->request_generation is simply with an SBP-2
    device (harddisk, CD-ROM...). Does SBP-2 login etc. work?

    If possible, also test whether the device remains accessible after
    forcing a bus reset, e.g. by "echo br short > firecontrol". You need
    the easy to build utility firecontrol and a libraw1394 with "juju"
    backend. See for directions.

    drivers/firewire/fw-ohci.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    Index: linux/drivers/firewire/fw-ohci.c
    --- linux.orig/drivers/firewire/fw-ohci.c
    +++ linux/drivers/firewire/fw-ohci.c
    @@ -375,7 +375,7 @@ static __le32 *handle_ar_packet(struct a

    if (p.ack + 16 == 0x09)
    - ohci->request_generation = (buffer[2] >> 16) & 0xff;
    + ohci->request_generation = (p.header[2] >> 16) & 0xff;
    else if (ctx == &ohci->ar_request_ctx)
    fw_core_handle_request(&ohci->card, &p);
    Stefan Richter
    -=====-==--- --=- =-===

     \ /
      Last update: 2008-02-23 12:29    [W:0.022 / U:1.220 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site