aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/firewire
diff options
context:
space:
mode:
authorClemens Ladisch <clemens@ladisch.de>2011-04-12 01:54:59 -0400
committerStefan Richter <stefanr@s5r6.in-berlin.de>2011-04-19 14:00:11 -0400
commit0ff8fbc61727c926883eec381fbd3d32d1fab504 (patch)
tree37261139bea74569bf4a41bccd5d47d4b406b6a3 /drivers/firewire
parentda28947e7e3602669e27d5e9ce787436ed662fa4 (diff)
firewire: ohci: optimize find_branch_descriptor()
When z==2, the condition "key == 2" is superfluous because it cannot occur without "b == 3", as a descriptor with b!=3 and key==2 would be an OUTPUT_MORE_IMMEDIATE descriptor which cannot be used alone. Also remove magic numbers and needless computations on the b field. Signed-off-by: Clemens Ladisch <clemens@ladisch.de> Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Diffstat (limited to 'drivers/firewire')
-rw-r--r--drivers/firewire/ohci.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/drivers/firewire/ohci.c b/drivers/firewire/ohci.c
index 435ed800d03f..ce767a4882fb 100644
--- a/drivers/firewire/ohci.c
+++ b/drivers/firewire/ohci.c
@@ -1006,13 +1006,12 @@ static void ar_context_run(struct ar_context *ctx)
1006 1006
1007static struct descriptor *find_branch_descriptor(struct descriptor *d, int z) 1007static struct descriptor *find_branch_descriptor(struct descriptor *d, int z)
1008{ 1008{
1009 int b, key; 1009 __le16 branch;
1010 1010
1011 b = (le16_to_cpu(d->control) & DESCRIPTOR_BRANCH_ALWAYS) >> 2; 1011 branch = d->control & cpu_to_le16(DESCRIPTOR_BRANCH_ALWAYS);
1012 key = (le16_to_cpu(d->control) & DESCRIPTOR_KEY_IMMEDIATE) >> 8;
1013 1012
1014 /* figure out which descriptor the branch address goes in */ 1013 /* figure out which descriptor the branch address goes in */
1015 if (z == 2 && (b == 3 || key == 2)) 1014 if (z == 2 && branch == cpu_to_le16(DESCRIPTOR_BRANCH_ALWAYS))
1016 return d; 1015 return d;
1017 else 1016 else
1018 return d + z - 1; 1017 return d + z - 1;