lkml.org 
[lkml]   [2009]   [Sep]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[PATCH 22/29] net_dma: poll for a descriptor after allocation failure
    From
    Date
    Handle descriptor allocation failures by polling for a descriptor.  The
    driver will force forward progress when polled. In the best case this
    polling interval will be the time it takes for one dma memcpy
    transaction to complete. In the worst case, channel hang, we will need
    to wait 100ms for the cleanup watchdog to fire (ioatdma driver).

    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    ---
    drivers/dma/iovlock.c | 10 ++++++++++
    1 files changed, 10 insertions(+), 0 deletions(-)

    diff --git a/drivers/dma/iovlock.c b/drivers/dma/iovlock.c
    index 9f6fe46..c0a272c 100644
    --- a/drivers/dma/iovlock.c
    +++ b/drivers/dma/iovlock.c
    @@ -183,6 +183,11 @@ dma_cookie_t dma_memcpy_to_iovec(struct dma_chan *chan, struct iovec *iov,
    iov_byte_offset,
    kdata,
    copy);
    + /* poll for a descriptor slot */
    + if (unlikely(dma_cookie < 0)) {
    + dma_async_issue_pending(chan);
    + continue;
    + }

    len -= copy;
    iov[iovec_idx].iov_len -= copy;
    @@ -248,6 +253,11 @@ dma_cookie_t dma_memcpy_pg_to_iovec(struct dma_chan *chan, struct iovec *iov,
    page,
    offset,
    copy);
    + /* poll for a descriptor slot */
    + if (unlikely(dma_cookie < 0)) {
    + dma_async_issue_pending(chan);
    + continue;
    + }

    len -= copy;
    iov[iovec_idx].iov_len -= copy;


    \
     
     \ /
      Last update: 2009-09-04 04:57    [W:0.038 / U:18.668 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site