patches for DPDK stable branches
 help / color / mirror / Atom feed
From: Christian Ehrhardt <christian.ehrhardt@canonical.com>
To: Gregory Etelson <getelson@nvidia.com>
Cc: dpdk stable <stable@dpdk.org>, Matan Azrad <matan@nvidia.com>,
	 Viacheslav Ovsiienko <viacheslavo@nvidia.com>
Subject: Re: [dpdk-stable] [PATCH 19.11] net/mlx5: fix representor interrupt handler
Date: Mon, 16 Aug 2021 10:52:33 +0200	[thread overview]
Message-ID: <CAATJJ0L3Uk+vPFgyqstCYLuy1WfN8ZStyacuaTCdbzj_TTw47A@mail.gmail.com> (raw)
In-Reply-To: <20210812111223.16226-1-getelson@nvidia.com>

On Thu, Aug 12, 2021 at 1:12 PM Gregory Etelson <getelson@nvidia.com> wrote:
>
> [ upstream commit 494d6863c2464838e8ee65b9a7d3d108145ae08d ]
>
> In mlx5 PMD the PCI device interrupt vector was used by Uplink
> representor exclusively and other VF representors did not support
> interrupt mode.
> All the VFs and Uplink representors are separate ethernet devices
> and must have dedicated interrupt vectors.
> The fix provides each representor with a dedicated interrupt
> vector.
>
> Fixes: 5882bde88da2 ("net/mlx5: fix representor interrupts handler")


Thanks, applied

> Signed-off-by: Gregory Etelson <getelson@nvidia.com>
> Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
> ---
>  drivers/net/mlx5/mlx5.c     | 30 ++++++++++++++++++++++++++++++
>  drivers/net/mlx5/mlx5_rxq.c |  6 ------
>  2 files changed, 30 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c
> index 3208b2eda7..b070d9ba89 100644
> --- a/drivers/net/mlx5/mlx5.c
> +++ b/drivers/net/mlx5/mlx5.c
> @@ -1334,6 +1334,11 @@ mlx5_dev_close(struct rte_eth_dev *dev)
>                 priv->rxqs_n = 0;
>                 priv->rxqs = NULL;
>         }
> +       if (priv->representor) {
> +               /* Each representor has a dedicated interrupts handler */
> +               rte_free(dev->intr_handle);
> +               dev->intr_handle = NULL;
> +       }
>         if (priv->txqs != NULL) {
>                 /* XXX race condition if mlx5_tx_burst() is still running. */
>                 usleep(1000);
> @@ -3421,6 +3426,31 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
>                 }
>                 restore = list[i].eth_dev->data->dev_flags;
>                 rte_eth_copy_pci_info(list[i].eth_dev, pci_dev);
> +               /**
> +                * Each representor has a dedicated interrupts vector.
> +                * rte_eth_copy_pci_info() assigns PF interrupts handle to
> +                * representor eth_dev object because representor and PF
> +                * share the same PCI address.
> +                * Override representor device with a dedicated
> +                * interrupts handle here.
> +                * Representor interrupts handle is released in
> +                * mlx5_dev_stop().
> +                */
> +               if (list[i].info.representor) {
> +                       struct rte_intr_handle *intr_handle;
> +                       intr_handle = rte_zmalloc("representor interrupts",
> +                                                 sizeof(*intr_handle), 0);
> +                       if (!intr_handle) {
> +                               DRV_LOG(ERR,
> +                                       "port %u failed to allocate memory for interrupt handler "
> +                                       "Rx interrupts will not be supported",
> +                                       i);
> +                               rte_errno = ENOMEM;
> +                               ret = -rte_errno;
> +                               goto exit;
> +                       }
> +                       list[i].eth_dev->intr_handle = intr_handle;
> +               }
>                 /* Restore non-PCI flags cleared by the above call. */
>                 list[i].eth_dev->data->dev_flags |= restore;
>                 rte_eth_dev_probing_finish(list[i].eth_dev);
> diff --git a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c
> index e3f41d121d..16466a4ef9 100644
> --- a/drivers/net/mlx5/mlx5_rxq.c
> +++ b/drivers/net/mlx5/mlx5_rxq.c
> @@ -723,9 +723,6 @@ mlx5_rx_intr_vec_enable(struct rte_eth_dev *dev)
>         unsigned int count = 0;
>         struct rte_intr_handle *intr_handle = dev->intr_handle;
>
> -       /* Representor shares dev->intr_handle with PF. */
> -       if (priv->representor)
> -               return 0;
>         if (!dev->data->dev_conf.intr_conf.rxq)
>                 return 0;
>         mlx5_rx_intr_vec_disable(dev);
> @@ -803,9 +800,6 @@ mlx5_rx_intr_vec_disable(struct rte_eth_dev *dev)
>         unsigned int rxqs_n = priv->rxqs_n;
>         unsigned int n = RTE_MIN(rxqs_n, (uint32_t)RTE_MAX_RXTX_INTR_VEC_ID);
>
> -       /* Representor shares dev->intr_handle with PF. */
> -       if (priv->representor)
> -               return;
>         if (!dev->data->dev_conf.intr_conf.rxq)
>                 return;
>         if (!intr_handle->intr_vec)
> --
> 2.32.0
>


-- 
Christian Ehrhardt
Staff Engineer, Ubuntu Server
Canonical Ltd

      reply	other threads:[~2021-08-16  8:53 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-08-12 11:12 Gregory Etelson
2021-08-16  8:52 ` Christian Ehrhardt [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAATJJ0L3Uk+vPFgyqstCYLuy1WfN8ZStyacuaTCdbzj_TTw47A@mail.gmail.com \
    --to=christian.ehrhardt@canonical.com \
    --cc=getelson@nvidia.com \
    --cc=matan@nvidia.com \
    --cc=stable@dpdk.org \
    --cc=viacheslavo@nvidia.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).