Loading drivers/firewire/core-iso.c +11 −11 Original line number Diff line number Diff line Loading @@ -235,45 +235,45 @@ static int manage_bandwidth(struct fw_card *card, int irm_id, int generation, static int manage_channel(struct fw_card *card, int irm_id, int generation, u32 channels_mask, u64 offset, bool allocate, __be32 data[2]) { __be32 c, all, old; int i, ret = -EIO, retry = 5; __be32 bit, all, old; int channel, ret = -EIO, retry = 5; old = all = allocate ? cpu_to_be32(~0) : 0; for (i = 0; i < 32; i++) { if (!(channels_mask & 1 << i)) for (channel = 0; channel < 32; channel++) { if (!(channels_mask & 1 << channel)) continue; ret = -EBUSY; c = cpu_to_be32(1 << (31 - i)); if ((old & c) != (all & c)) bit = cpu_to_be32(1 << (31 - channel)); if ((old & bit) != (all & bit)) continue; data[0] = old; data[1] = old ^ c; data[1] = old ^ bit; switch (fw_run_transaction(card, TCODE_LOCK_COMPARE_SWAP, irm_id, generation, SCODE_100, offset, data, 8)) { case RCODE_GENERATION: /* A generation change frees all channels. */ return allocate ? -EAGAIN : i; return allocate ? -EAGAIN : channel; case RCODE_COMPLETE: if (data[0] == old) return i; return channel; old = data[0]; /* Is the IRM 1394a-2000 compliant? */ if ((data[0] & c) == (data[1] & c)) if ((data[0] & bit) == (data[1] & bit)) continue; /* 1394-1995 IRM, fall through to retry. */ default: if (retry) { retry--; i--; channel--; } else { ret = -EIO; } Loading Loading
drivers/firewire/core-iso.c +11 −11 Original line number Diff line number Diff line Loading @@ -235,45 +235,45 @@ static int manage_bandwidth(struct fw_card *card, int irm_id, int generation, static int manage_channel(struct fw_card *card, int irm_id, int generation, u32 channels_mask, u64 offset, bool allocate, __be32 data[2]) { __be32 c, all, old; int i, ret = -EIO, retry = 5; __be32 bit, all, old; int channel, ret = -EIO, retry = 5; old = all = allocate ? cpu_to_be32(~0) : 0; for (i = 0; i < 32; i++) { if (!(channels_mask & 1 << i)) for (channel = 0; channel < 32; channel++) { if (!(channels_mask & 1 << channel)) continue; ret = -EBUSY; c = cpu_to_be32(1 << (31 - i)); if ((old & c) != (all & c)) bit = cpu_to_be32(1 << (31 - channel)); if ((old & bit) != (all & bit)) continue; data[0] = old; data[1] = old ^ c; data[1] = old ^ bit; switch (fw_run_transaction(card, TCODE_LOCK_COMPARE_SWAP, irm_id, generation, SCODE_100, offset, data, 8)) { case RCODE_GENERATION: /* A generation change frees all channels. */ return allocate ? -EAGAIN : i; return allocate ? -EAGAIN : channel; case RCODE_COMPLETE: if (data[0] == old) return i; return channel; old = data[0]; /* Is the IRM 1394a-2000 compliant? */ if ((data[0] & c) == (data[1] & c)) if ((data[0] & bit) == (data[1] & bit)) continue; /* 1394-1995 IRM, fall through to retry. */ default: if (retry) { retry--; i--; channel--; } else { ret = -EIO; } Loading