diff options
author | Dan Williams <dan.j.williams@intel.com> | 2008-03-19 00:23:59 -0400 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2008-03-18 20:01:00 -0400 |
commit | 8d8002f642886ae256a3c5d70fe8aff4faf3631a (patch) | |
tree | 81a3df533e7a0ad2d268b28fba1507e770df0f55 | |
parent | f79abb627f033c85a6088231f20c85bc4a9bd757 (diff) |
async_tx: avoid the async xor_zero_sum path when src_cnt > device->max_xor
If the channel cannot perform the operation in one call to
->device_prep_dma_zero_sum, then fallback to the xor+page_is_zero path.
This only affects users with arrays larger than 16 devices on iop13xx or
32 devices on iop3xx.
Cc: <stable@kernel.org>
Cc: Neil Brown <neilb@suse.de>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
-rw-r--r-- | crypto/async_tx/async_xor.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/crypto/async_tx/async_xor.c b/crypto/async_tx/async_xor.c index 7a9db353f198..1c445c7bdab7 100644 --- a/crypto/async_tx/async_xor.c +++ b/crypto/async_tx/async_xor.c | |||
@@ -271,7 +271,7 @@ async_xor_zero_sum(struct page *dest, struct page **src_list, | |||
271 | 271 | ||
272 | BUG_ON(src_cnt <= 1); | 272 | BUG_ON(src_cnt <= 1); |
273 | 273 | ||
274 | if (device) { | 274 | if (device && src_cnt <= device->max_xor) { |
275 | dma_addr_t *dma_src = (dma_addr_t *) src_list; | 275 | dma_addr_t *dma_src = (dma_addr_t *) src_list; |
276 | unsigned long dma_prep_flags = cb_fn ? DMA_PREP_INTERRUPT : 0; | 276 | unsigned long dma_prep_flags = cb_fn ? DMA_PREP_INTERRUPT : 0; |
277 | int i; | 277 | int i; |