ioat3: fix p-disabled q-continuation
authorDan Williams <dan.j.williams@intel.com>
Thu, 17 Dec 2009 20:52:39 +0000 (13:52 -0700)
committerDan Williams <dan.j.williams@intel.com>
Thu, 17 Dec 2009 20:52:39 +0000 (13:52 -0700)
commitcd78809f6191485a90ea6c92c2b58900ab5c156f
treed17a0e30178ec8ae78e04df69ca3d7b280054361
parent22763c5cf3690a681551162c15d34d935308c8d7
ioat3: fix p-disabled q-continuation

When continuing a pq calculation the driver needs 3 extra sources.  The
driver can perform a 3 source calculation with a single descriptor, but
needs an extended descriptor to process up to 8 sources in one
operation.  However, in the p-disabled case only one extra source is
needed.  When continuing a p-disabled operation there are occasions
(i.e. 0 < src_cnt % 8 < 3) where the tail operation does not need an
extended descriptor.  Properly account for this fact otherwise invalid
'dmacount' values will be written to hardware usually causing the
channel to halt with 'invalid descriptor' errors.

Cc: <stable@kernel.org>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
drivers/dma/ioat/dma_v3.c