diff options
| author | Clemens Ladisch <clemens@ladisch.de> | 2011-04-12 07:54:59 +0200 | 
|---|---|---|
| committer | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2011-04-19 20:00:11 +0200 | 
| commit | 0ff8fbc61727c926883eec381fbd3d32d1fab504 (patch) | |
| tree | 37261139bea74569bf4a41bccd5d47d4b406b6a3 /drivers/firewire | |
| parent | da28947e7e3602669e27d5e9ce787436ed662fa4 (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.c | 7 | 
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)  static struct descriptor *find_branch_descriptor(struct descriptor *d, int z)  { -	int b, key; +	__le16 branch; -	b   = (le16_to_cpu(d->control) & DESCRIPTOR_BRANCH_ALWAYS) >> 2; -	key = (le16_to_cpu(d->control) & DESCRIPTOR_KEY_IMMEDIATE) >> 8; +	branch = d->control & cpu_to_le16(DESCRIPTOR_BRANCH_ALWAYS);  	/* figure out which descriptor the branch address goes in */ -	if (z == 2 && (b == 3 || key == 2)) +	if (z == 2 && branch == cpu_to_le16(DESCRIPTOR_BRANCH_ALWAYS))  		return d;  	else  		return d + z - 1; | 
