diff options
author | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2009-01-08 23:07:40 +0100 |
---|---|---|
committer | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2009-03-24 20:56:46 +0100 |
commit | 5d9cb7d276a9c465fef5a771792eac2cf1929f2b (patch) | |
tree | 46fb54d0e462debe4016830ee1fa9f7292fb511b /drivers/firewire/fw-cdev.c | |
parent | 77258da403be4cfce84b6abcdb515ad0bd1f92f1 (diff) | |
download | op-kernel-dev-5d9cb7d276a9c465fef5a771792eac2cf1929f2b.zip op-kernel-dev-5d9cb7d276a9c465fef5a771792eac2cf1929f2b.tar.gz |
firewire: cdev: add ioctls for iso resource management, amendment
Some fixes:
- Remove stale documentation.
- Fix a != vs. == thinko that got in the way of channel management.
- Try bandwidth deallocation even if channel deallocation failed.
A simplification:
- fw_cdev_allocate_iso_resource.channels is now ordered like
libdc1394's dc1394_iso_allocate_channel() channels_allowed
argument.
By the way, I looked closer at cards from NEC, TI, and VIA, and noticed
that they all don't implement IEEE 1394a behaviour which is meant to
deviate from IEEE 1212's notion of lock compare-swap. This means that
we have to do two lock transactions instead of one in many cases where
one transaction would already succeed on a fully 1394a compliant IRM.
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Diffstat (limited to 'drivers/firewire/fw-cdev.c')
-rw-r--r-- | drivers/firewire/fw-cdev.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/firewire/fw-cdev.c b/drivers/firewire/fw-cdev.c index b93ad9c..257b0c7 100644 --- a/drivers/firewire/fw-cdev.c +++ b/drivers/firewire/fw-cdev.c @@ -1082,7 +1082,7 @@ static void iso_resource_work(struct work_struct *work) spin_unlock_irq(&client->lock); if (todo == ISO_RES_ALLOC && channel >= 0) - r->channels = 1ULL << (63 - channel); + r->channels = 1ULL << channel; if (todo == ISO_RES_REALLOC && success) goto out; |