lkml.org 
[lkml]   [2017]   [Mar]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.4 12/36] net: mvpp2: fix DMA address calculation in mvpp2_txq_inc_put()
    Date
    4.4-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>

    commit 239a3b663647869330955ec59caac0100ef9b60a upstream.

    When TX descriptors are filled in, the buffer DMA address is split
    between the tx_desc->buf_phys_addr field (high-order bits) and
    tx_desc->packet_offset field (5 low-order bits).

    However, when we re-calculate the DMA address from the TX descriptor in
    mvpp2_txq_inc_put(), we do not take tx_desc->packet_offset into
    account. This means that when the DMA address is not aligned on a 32
    bytes boundary, we end up calling dma_unmap_single() with a DMA address
    that was not the one returned by dma_map_single().

    This inconsistency is detected by the kernel when DMA_API_DEBUG is
    enabled. We fix this problem by properly calculating the DMA address in
    mvpp2_txq_inc_put().

    Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/net/ethernet/marvell/mvpp2.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    --- a/drivers/net/ethernet/marvell/mvpp2.c
    +++ b/drivers/net/ethernet/marvell/mvpp2.c
    @@ -993,7 +993,7 @@ static void mvpp2_txq_inc_put(struct mvp
    txq_pcpu->buffs + txq_pcpu->txq_put_index;
    tx_buf->skb = skb;
    tx_buf->size = tx_desc->data_size;
    - tx_buf->phys = tx_desc->buf_phys_addr;
    + tx_buf->phys = tx_desc->buf_phys_addr + tx_desc->packet_offset;
    txq_pcpu->txq_put_index++;
    if (txq_pcpu->txq_put_index == txq_pcpu->size)
    txq_pcpu->txq_put_index = 0;

    \
     
     \ /
      Last update: 2017-03-13 10:25    [W:3.648 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site