[SRU][J:linux-bluefield][PATCH v1 1/1] UBUNTU: SAUCE: mlxbf-gige: Fix intermittent no ip issue

Asmaa Mnebhi asmaa at nvidia.com
Wed Mar 1 18:31:32 UTC 2023


++ at Vladimir Sokolovsky<mailto:vlad at nvidia.com> @Karin Feldman<mailto:karinf at nvidia.com> @Peter Kjersgard<mailto:pkjersgard at nvidia.com> @David Thompson<mailto:davthompson at nvidia.com>



> -----Original Message-----

> From: Asmaa Mnebhi <asmaa at nvidia.com>

> Sent: Tuesday, February 28, 2023 6:04 PM

> To: kernel-team at lists.ubuntu.com

> Cc: Asmaa Mnebhi <asmaa at nvidia.com>

> Subject: [SRU][J:linux-bluefield][PATCH v1 1/1] UBUNTU: SAUCE: mlxbf-gige:

> Fix intermittent no ip issue

>

> BugLink: https://bugs.launchpad.net/bugs/2008833

>

> During the reboot test, the OOB might not get an ip assigned.

> This is due to a race condition between phy_startcall and the RX DMA being

> enabled and depends on the amount of background traffic received by the

> OOB. Enable the RX DMA after teh phy is started.

>

> Signed-off-by: Asmaa Mnebhi <asmaa at nvidia.com<mailto:asmaa at nvidia.com>>

> ---

>  .../ethernet/mellanox/mlxbf_gige/mlxbf_gige_main.c | 14 +++++++-------

>  .../ethernet/mellanox/mlxbf_gige/mlxbf_gige_rx.c   |  6 +++---

>  2 files changed, 10 insertions(+), 10 deletions(-)

>

> diff --git a/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_main.c

> b/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_main.c

> index 4cf058cdbba0..5e929867bd6c 100644

> --- a/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_main.c

> +++ b/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_main.c

> @@ -166,14 +166,14 @@ static int mlxbf_gige_open(struct net_device

> *netdev)

>             */

>            priv->valid_polarity = 0;

>

> -          err = mlxbf_gige_rx_init(priv);

> +         phy_start(phydev);

> +

> +         err = mlxbf_gige_tx_init(priv);

>            if (err)

>                           goto free_irqs;

> -          err = mlxbf_gige_tx_init(priv);

> +         err = mlxbf_gige_rx_init(priv);

>            if (err)

> -                        goto rx_deinit;

> -

> -          phy_start(phydev);

> +                       goto tx_deinit;

>

>            netif_napi_add(netdev, &priv->napi, mlxbf_gige_poll,

> NAPI_POLL_WEIGHT);

>            napi_enable(&priv->napi);

> @@ -195,8 +195,8 @@ static int mlxbf_gige_open(struct net_device

> *netdev)

>

>            return 0;

>

> -rx_deinit:

> -          mlxbf_gige_rx_deinit(priv);

> +tx_deinit:

> +         mlxbf_gige_tx_deinit(priv);

>

>  free_irqs:

>            mlxbf_gige_free_irqs(priv);

> diff --git a/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_rx.c

> b/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_rx.c

> index 96230763cf6c..f21dafde490b 100644

> --- a/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_rx.c

> +++ b/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_rx.c

> @@ -142,6 +142,9 @@ int mlxbf_gige_rx_init(struct mlxbf_gige *priv)

>            writeq(MLXBF_GIGE_RX_MAC_FILTER_COUNT_PASS_EN,

>                   priv->base + MLXBF_GIGE_RX_MAC_FILTER_COUNT_PASS);

>

> +         writeq(ilog2(priv->rx_q_entries),

> +                priv->base + MLXBF_GIGE_RX_WQE_SIZE_LOG2);

> +

>            /* Clear MLXBF_GIGE_INT_MASK 'receive pkt' bit to

>             * indicate readiness to receive interrupts

>             */

> @@ -154,9 +157,6 @@ int mlxbf_gige_rx_init(struct mlxbf_gige *priv)

>            data |= MLXBF_GIGE_RX_DMA_EN;

>            writeq(data, priv->base + MLXBF_GIGE_RX_DMA);

>

> -          writeq(ilog2(priv->rx_q_entries),

> -                 priv->base + MLXBF_GIGE_RX_WQE_SIZE_LOG2);

> -

>            return 0;

>

>  free_wqe_and_skb:

> --

> 2.30.1


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.ubuntu.com/archives/kernel-team/attachments/20230301/a38b521b/attachment-0001.html>


More information about the kernel-team mailing list