lkml.org 
[lkml]   [2021]   [Jul]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.13 540/800] net: broadcom: bcm4908_enet: reset DMA rings sw indexes properly
    Date
    From: Rafał Miłecki <rafal@milecki.pl>

    [ Upstream commit ddeacc4f6494e07cbb6f033627926623f3e7a9d0 ]

    Resetting software indexes in bcm4908_dma_alloc_buf_descs() is not
    enough as it's called during device probe only. Driver resets DMA on
    every .ndo_open callback and it's required to reset indexes then.

    This fixes inconsistent rings state and stalled traffic after interface
    down & up sequence.

    Fixes: 4feffeadbcb2 ("net: broadcom: bcm4908enet: add BCM4908 controller driver")
    Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/net/ethernet/broadcom/bcm4908_enet.c | 6 +++---
    1 file changed, 3 insertions(+), 3 deletions(-)

    diff --git a/drivers/net/ethernet/broadcom/bcm4908_enet.c b/drivers/net/ethernet/broadcom/bcm4908_enet.c
    index 60d908507f51..02a569500234 100644
    --- a/drivers/net/ethernet/broadcom/bcm4908_enet.c
    +++ b/drivers/net/ethernet/broadcom/bcm4908_enet.c
    @@ -174,9 +174,6 @@ static int bcm4908_dma_alloc_buf_descs(struct bcm4908_enet *enet,
    if (!ring->slots)
    goto err_free_buf_descs;

    - ring->read_idx = 0;
    - ring->write_idx = 0;
    -
    return 0;

    err_free_buf_descs:
    @@ -304,6 +301,9 @@ static void bcm4908_enet_dma_ring_init(struct bcm4908_enet *enet,

    enet_write(enet, ring->st_ram_block + ENET_DMA_CH_STATE_RAM_BASE_DESC_PTR,
    (uint32_t)ring->dma_addr);
    +
    + ring->read_idx = 0;
    + ring->write_idx = 0;
    }

    static void bcm4908_enet_dma_uninit(struct bcm4908_enet *enet)
    --
    2.30.2


    \
     
     \ /
      Last update: 2021-07-12 10:45    [W:5.203 / U:0.536 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site