packet_length fails in current cvs
Brought to you by:
aeb,
bencollins
I just installed the CVS from 2001.01.07 10:30 CET
and think I found a bug in ohci1394.c:
in
static __inline__ int packet_length(...)
if (d->ctx < 2) { /* Async Receive Response/Request */
...
} else if (d->ctx == 2) { /* Iso receive */
seems not to recognize iso-packets. At least on my
system all Iso-packets seem to come along with a d->ctx
of 0 not 2.
please tell me what this d->ctx stands for and where
the codes for it are defined.
if i quick hack the if clauses to handle packets with
ctx == 0 as iso-packets it seems to work, but on the
other hand, it DID work with the original kernel-2.2.16
code, where this funtion is identical to todays cvs.
regards, Tim
Logged In: YES
user_id=209822
hogsberg did break things in 1.87.
the function packet_length() relys on the ctx number to
determine if packets are iso or async.
the IF clause in packet_length() should rather be something
like this:
if (d->type == DMA_CTX_ASYNC) { //FIXED by te
/* was ...(d->ctx < 2) { Async Receive Response/Request */
} else if (d->type == DMA_CTX_ISO) { // FIXED by te
/* was ...(d->ctx == 2) { Iso */
regards, Tim
Logged In: YES
user_id=196071
This change is in the current CVS, so is fixed.