lkml.org 
[lkml]   [2018]   [Sep]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 126/173] liquidio: fix hang when re-binding VF host drv after running DPDK VF driver
    Date
    4.14-stable review patch.  If anyone has any objections, please let me know.

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

    From: Rick Farrington <ricardo.farrington@cavium.com>

    [ Upstream commit ac13d6d8eaded15c67265eafc32f439ea3a0ac4a ]

    When configuring SLI_PKTn_OUTPUT_CONTROL, VF driver was assuming that IPTR
    mode was disabled by reset, which was not true. Since DPDK driver had
    set IPTR mode previously, the VF driver (which uses buf-ptr-only mode) was
    not properly handling DROQ packets (i.e. it saw zero-length packets).

    This represented an invalid hardware configuration which the driver could
    not handle.

    Signed-off-by: Rick Farrington <ricardo.farrington@cavium.com>
    Signed-off-by: Felix Manlunas <felix.manlunas@cavium.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c | 3 +++
    drivers/net/ethernet/cavium/liquidio/cn23xx_vf_device.c | 3 +++
    2 files changed, 6 insertions(+)

    --- a/drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c
    +++ b/drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c
    @@ -493,6 +493,9 @@ static void cn23xx_pf_setup_global_outpu
    for (q_no = srn; q_no < ern; q_no++) {
    reg_val = octeon_read_csr(oct, CN23XX_SLI_OQ_PKT_CONTROL(q_no));

    + /* clear IPTR */
    + reg_val &= ~CN23XX_PKT_OUTPUT_CTL_IPTR;
    +
    /* set DPTR */
    reg_val |= CN23XX_PKT_OUTPUT_CTL_DPTR;

    --- a/drivers/net/ethernet/cavium/liquidio/cn23xx_vf_device.c
    +++ b/drivers/net/ethernet/cavium/liquidio/cn23xx_vf_device.c
    @@ -165,6 +165,9 @@ static void cn23xx_vf_setup_global_outpu
    reg_val =
    octeon_read_csr(oct, CN23XX_VF_SLI_OQ_PKT_CONTROL(q_no));

    + /* clear IPTR */
    + reg_val &= ~CN23XX_PKT_OUTPUT_CTL_IPTR;
    +
    /* set DPTR */
    reg_val |= CN23XX_PKT_OUTPUT_CTL_DPTR;


    \
     
     \ /
      Last update: 2018-09-24 14:23    [W:4.568 / U:0.104 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site