Menu

#72 "invalid ack" on ppc, fix for

bug (general)
open
nobody
subsystem (7)
7
2004-05-13
2004-03-21
No

I've never gotten my FireWire CDR working for my
PowerBook running a 2.6 kernel, although it works just
fine with older Linux kernels.

Looking in 2.6.4, directory drivers/ieee1394:

hpsb_packet::ack_code is of type char (see
ieee1394_core.h). Whether this is a signed or an
unsigned type is implementation-dependent. On x86 it's
signed; on ppc, it's unsigned.

The ACK-codes for internal use are defined as negative
numbers (see ieee1394.h).

The function hpsb_packet_success() (see
ieee1394_transactions.c) switches on ACK code; it
should return -EGAIN for the internal error codes, but
instead fails first with the message "got invalid ack
254 from node 65535 (tcode 0)" and then later with
"ieee1394: sbp2: Error logging into SBP-2 device -
login timed-out" and "sbp2: probe of 0001db0250003667-1
failed with error -16"

It appears that the ack code gets extended to an int
for the switch argument; "negative" numbers will be
sign-extended on some systems (so they will stay
negative), but zero-extended on others (so they are now
positive and not match any of the case labels). This
would explain that first error message.

Tested fix: make hpsb_packet::ack_code a signed char.
This gets rid of the "invalid ack" error message,
though things still don't work.

Discussion

  • Jeroen T. Vermeulen

    • labels: --> subsystem
     
  • Jeroen T. Vermeulen

    • priority: 5 --> 7
     
  • Jeroen T. Vermeulen

    Logged In: YES
    user_id=105550

    The bug is still present in the 2.6.6 kernel. Please change
    drivers/ieee1394/ieee1394_core.h, line 41:

    /* These are core internal. */
    signed char tlabel;
    - char ack_code;
    + signed char ack_code;
    char tcode;

    This fixes at least the "invalid ack" bug when loading the
    driver, although the problems connecting to an actual
    external device remain.

     
  • alan johnson

    alan johnson - 2004-07-03

    Logged In: YES
    user_id=943591

    seem to need this

     

Log in to post a comment.

MongoDB Logo MongoDB