> + /* > + * We're just computing (a-b) in GF(216). > + ndesc = (unsigned)*hq->hq_avail_idx - (unsigned)hq->hq_cur_aidx; I think the comment here is wrong? Subtraction (and addition) in GF(2^16) is just xor of 16 bit numbers. You seem to actually be working in Z(2^16), where subtraction is normal subtraction mod 65536. David.