From: Dan Williams Date: Wed, 19 Mar 2008 04:23:59 +0000 (-0700) Subject: async_tx: avoid the async xor_zero_sum path when src_cnt > device->max_xor X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=8d8002f642886ae256a3c5d70fe8aff4faf3631a;p=openwrt%2Fstaging%2Fblogic.git 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: Cc: Neil Brown Signed-off-by: Dan Williams --- 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, BUG_ON(src_cnt <= 1); - if (device) { + if (device && src_cnt <= device->max_xor) { dma_addr_t *dma_src = (dma_addr_t *) src_list; unsigned long dma_prep_flags = cb_fn ? DMA_PREP_INTERRUPT : 0; int i;