patches for DPDK stable branches
 help / color / mirror / Atom feed
From: Christian Ehrhardt <christian.ehrhardt@canonical.com>
To: "Min Hu (Connor)" <humin29@huawei.com>
Cc: dpdk stable <stable@dpdk.org>
Subject: Re: [dpdk-stable] [PATCH 19.11.9 1/3] net/hns3: fix HW buffer size on MTU update
Date: Mon, 31 May 2021 10:41:41 +0200	[thread overview]
Message-ID: <CAATJJ0JDkQTSsc2r-nVAyDJt9x67Z00YLmPLwB78d0hmRujyhw@mail.gmail.com> (raw)
In-Reply-To: <1621666044-39902-1-git-send-email-humin29@huawei.com>

On Sat, May 22, 2021 at 8:47 AM Min Hu (Connor) <humin29@huawei.com> wrote:
>
> From: Chengchang Tang <tangchengchang@huawei.com>
>
> [ upstream commit 25fb790f7868f8eee96f7f051a834dec01b8a369 ]

Thank you for the backports, queued patches 1-3 for 19.11.9 now

> After MTU changed, the buffer used to store packets in HW should be
> reallocated. And buffer size is allocated based on the maximum frame
> size in the PF struct. However, the value of maximum frame size  is
> not updated in time when MTU is changed. This would lead to a packet
> loss for not enough buffer.
>
> This patch update the maximum frame size before reallocating the HW
> buffer. And a rollback operation is added to avoid the side effects
> of buffer reallocation failures.
>
> Fixes: 1f5ca0b460cd ("net/hns3: support some device operations")
> Fixes: d51867db65c1 ("net/hns3: add initialization")
> Cc: stable@dpdk.org
>
> Signed-off-by: Chengchang Tang <tangchengchang@huawei.com>
> Signed-off-by: Lijun Ou <oulijun@huawei.com>
> ---
>  drivers/net/hns3/hns3_ethdev.c | 22 ++++++++++++++++++----
>  1 file changed, 18 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/net/hns3/hns3_ethdev.c b/drivers/net/hns3/hns3_ethdev.c
> index 3a799ed..952538d 100644
> --- a/drivers/net/hns3/hns3_ethdev.c
> +++ b/drivers/net/hns3/hns3_ethdev.c
> @@ -2418,21 +2418,35 @@ hns3_set_mac_mtu(struct hns3_hw *hw, uint16_t new_mps)
>  static int
>  hns3_config_mtu(struct hns3_hw *hw, uint16_t mps)
>  {
> +       struct hns3_adapter *hns = HNS3_DEV_HW_TO_ADAPTER(hw);
> +       uint16_t original_mps = hns->pf.mps;
> +       int err;
>         int ret;
>
>         ret = hns3_set_mac_mtu(hw, mps);
>         if (ret) {
> -               hns3_err(hw, "Failed to set mtu, ret = %d", ret);
> +               hns3_err(hw, "failed to set mtu, ret = %d", ret);
>                 return ret;
>         }
>
> +       hns->pf.mps = mps;
>         ret = hns3_buffer_alloc(hw);
>         if (ret) {
> -               hns3_err(hw, "Failed to allocate buffer, ret = %d", ret);
> -               return ret;
> +               hns3_err(hw, "failed to allocate buffer, ret = %d", ret);
> +               goto rollback;
>         }
>
>         return 0;
> +
> +rollback:
> +       err = hns3_set_mac_mtu(hw, original_mps);
> +       if (err) {
> +               hns3_err(hw, "fail to rollback MTU, err = %d", err);
> +               return ret;
> +       }
> +       hns->pf.mps = original_mps;
> +
> +       return ret;
>  }
>
>  static int
> @@ -2465,7 +2479,7 @@ hns3_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)
>                          dev->data->port_id, mtu, ret);
>                 return ret;
>         }
> -       hns->pf.mps = (uint16_t)frame_size;
> +
>         if (is_jumbo_frame)
>                 dev->data->dev_conf.rxmode.offloads |=
>                                                 DEV_RX_OFFLOAD_JUMBO_FRAME;
> --
> 2.7.4
>


-- 
Christian Ehrhardt
Staff Engineer, Ubuntu Server
Canonical Ltd

      parent reply	other threads:[~2021-05-31  8:42 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-22  6:47 Min Hu (Connor)
2021-05-22  6:47 ` [dpdk-stable] [PATCH 19.11.9 2/3] net/hns3: fix processing Tx offload flags Min Hu (Connor)
2021-05-22  6:47 ` [dpdk-stable] [PATCH 19.11.9 3/3] net/hns3: fix handling link update Min Hu (Connor)
2021-05-31  8:41 ` 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=CAATJJ0JDkQTSsc2r-nVAyDJt9x67Z00YLmPLwB78d0hmRujyhw@mail.gmail.com \
    --to=christian.ehrhardt@canonical.com \
    --cc=humin29@huawei.com \
    --cc=stable@dpdk.org \
    /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).