All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Xing, Beilei" <beilei.xing@intel.com>
To: "Sun, GuinanX" <guinanx.sun@intel.com>,
	"Peng, Yuan" <yuan.peng@intel.com>, "dev@dpdk.org" <dev@dpdk.org>
Cc: "Wu, Jingjing" <jingjing.wu@intel.com>,
	"Zhang, Qi Z" <qi.z.zhang@intel.com>
Subject: Re: [dpdk-dev] [PATCH] net/iavf: fix adding multicast MAC address
Date: Thu, 15 Oct 2020 06:43:57 +0000	[thread overview]
Message-ID: <MN2PR11MB3807BB17A9D01669F40E06B2F7020@MN2PR11MB3807.namprd11.prod.outlook.com> (raw)
In-Reply-To: <d337163ee9d0410792853b6aee4c83c0@intel.com>



> -----Original Message-----
> From: Sun, GuinanX <guinanx.sun@intel.com>
> Sent: Thursday, October 15, 2020 1:57 PM
> To: Xing, Beilei <beilei.xing@intel.com>; Peng, Yuan <yuan.peng@intel.com>;
> dev@dpdk.org
> Cc: Wu, Jingjing <jingjing.wu@intel.com>; Zhang, Qi Z <qi.z.zhang@intel.com>
> Subject: RE: [dpdk-dev] [PATCH] net/iavf: fix adding multicast MAC address
> 
> Hi beilei
> 
> > -----Original Message-----
> > From: Xing, Beilei <beilei.xing@intel.com>
> > Sent: Thursday, October 15, 2020 1:37 PM
> > To: Peng, Yuan <yuan.peng@intel.com>; Sun, GuinanX
> > <guinanx.sun@intel.com>; dev@dpdk.org
> > Cc: Wu, Jingjing <jingjing.wu@intel.com>; Zhang, Qi Z
> > <qi.z.zhang@intel.com>; Sun, GuinanX <guinanx.sun@intel.com>
> > Subject: RE: [dpdk-dev] [PATCH] net/iavf: fix adding multicast MAC
> > address
> >
> >
> >
> > > -----Original Message-----
> > > From: Peng, Yuan <yuan.peng@intel.com>
> > > Sent: Thursday, October 15, 2020 1:14 PM
> > > To: Sun, GuinanX <guinanx.sun@intel.com>; dev@dpdk.org
> > > Cc: Xing, Beilei <beilei.xing@intel.com>; Wu, Jingjing
> > > <jingjing.wu@intel.com>; Zhang, Qi Z <qi.z.zhang@intel.com>; Sun,
> > > GuinanX <guinanx.sun@intel.com>
> > > Subject: RE: [dpdk-dev] [PATCH] net/iavf: fix adding multicast MAC
> > > address
> > >
> > > Test-by Peng, Yuan <yuan.peng@intel.com>
> > >
> > >
> > > -----Original Message-----
> > > From: dev <dev-bounces@dpdk.org> On Behalf Of Guinan Sun
> > > Sent: Thursday, October 15, 2020 10:02 AM
> > > To: dev@dpdk.org
> > > Cc: Xing, Beilei <beilei.xing@intel.com>; Wu, Jingjing
> > > <jingjing.wu@intel.com>; Zhang, Qi Z <qi.z.zhang@intel.com>; Sun,
> > > GuinanX <guinanx.sun@intel.com>
> > > Subject: [dpdk-dev] [PATCH] net/iavf: fix adding multicast MAC
> > > address
> > >
> > > When the multicast address is added, it will flush previous
> > > addresses first, and then add new ones.
> > > So when adding an address that exceeds the upper limit causes a
> > > failure, you need to add the previous address list back. This patch
> > > fixes the
> > issue.
> > >
> > > Fixes: 05e4c3aff35f ("net/iavf: support multicast configuration")
> > >
> > > Signed-off-by: Guinan Sun <guinanx.sun@intel.com>
> > > ---
> > >  drivers/net/iavf/iavf_ethdev.c | 30 ++++++++++++++++++++++--------
> > > drivers/net/iavf/iavf_vchnl.c  |  3 ---
> > >  2 files changed, 22 insertions(+), 11 deletions(-)
> > >
> > > diff --git a/drivers/net/iavf/iavf_ethdev.c
> > > b/drivers/net/iavf/iavf_ethdev.c index e68e3bc71..042edadd9 100644
> > > --- a/drivers/net/iavf/iavf_ethdev.c
> > > +++ b/drivers/net/iavf/iavf_ethdev.c
> > > @@ -164,7 +164,14 @@ iavf_set_mc_addr_list(struct rte_eth_dev *dev,
> > > struct iavf_info *vf = IAVF_DEV_PRIVATE_TO_VF(dev->data-
> > > >dev_private);
> > >  struct iavf_adapter *adapter =
> > >  IAVF_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private);
> > > -int err;
> > > +int err, temp_err;
> > > +
> > > +if (mc_addrs_num > IAVF_NUM_MACADDR_MAX) { PMD_DRV_LOG(ERR,
> > > +    "can't add more than a limited number (%u) of
> > > addresses.",
> > > +    (uint32_t)IAVF_NUM_MACADDR_MAX); return -EINVAL; }
> > >
> > >  /* flush previous addresses */
> > >  err = iavf_add_del_mc_addr_list(adapter, vf->mc_addrs, vf-
> > > >mc_addrs_num, @@ -172,17 +179,24 @@ iavf_set_mc_addr_list(struct
> > > rte_eth_dev *dev,
> > >  if (err)
> > >  return err;
> > >
> > > -vf->mc_addrs_num = 0;
> > > -
> > >  /* add new ones */
> > >  err = iavf_add_del_mc_addr_list(adapter, mc_addrs, mc_addrs_num,
> > > true); -if (err) -return err;
> > >
> > > -vf->mc_addrs_num = mc_addrs_num;
> > > -memcpy(vf->mc_addrs, mc_addrs, mc_addrs_num * sizeof(*mc_addrs));
> > > +if (err) {
> > > +/* When adding new addresses fail, need to add the
> > > + * previous addresses back.
> > > + */
> > > +temp_err = iavf_add_del_mc_addr_list(adapter, vf->mc_addrs,
> > > +     vf->mc_addrs_num, true);
> >
> > Can we reuse err here?
> 
> This err cannot be reused.
> 
> When performing mac address addition, the testpmd side will first add the
> mac address to mac_pool.
> When the driver layer returns that it failed to add an address, the tespmd layer
> will delete the failed address from mac_pool.
> 
> If err is reused, the successful result of executing the add back address will
> overwrite the previous err, causing problems with the address stored in
> mac_pool on the testpmd side.
> 

Yes, I missed return err in the end of the function.
Little comments, can we use 'ret' which is more common to indicate return value?

> >
> > > +if (temp_err)
> > > +return temp_err;
> > > +} else {
> > > +vf->mc_addrs_num = mc_addrs_num;
> > > +memcpy(vf->mc_addrs,
> > > +       mc_addrs, mc_addrs_num * sizeof(*mc_addrs)); }
> > >
> > > -return 0;
> > > +return err;
> > >  }
> > >
> > >  static int
> > > diff --git a/drivers/net/iavf/iavf_vchnl.c
> > > b/drivers/net/iavf/iavf_vchnl.c index
> > > db0b76876..a2295f879 100644
> > > --- a/drivers/net/iavf/iavf_vchnl.c
> > > +++ b/drivers/net/iavf/iavf_vchnl.c
> > > @@ -1107,9 +1107,6 @@ iavf_add_del_mc_addr_list(struct iavf_adapter
> > > *adapter,  if (mc_addrs == NULL || mc_addrs_num == 0)  return 0;
> > >
> > > -if (mc_addrs_num > IAVF_NUM_MACADDR_MAX) -return -EINVAL;
> > > -
> > >  list = (struct virtchnl_ether_addr_list *)cmd_buffer;  list->vsi_id
> > > =
> > > vf->vsi_res->vsi_id;  list->num_elements = mc_addrs_num;
> > > --
> > > 2.13.6
> >
> 


  reply	other threads:[~2020-10-15  6:44 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-15  2:02 [dpdk-dev] [PATCH] net/iavf: fix adding multicast MAC address Guinan Sun
2020-10-15  5:13 ` Peng, Yuan
2020-10-15  5:37   ` Xing, Beilei
2020-10-15  5:57     ` Sun, GuinanX
2020-10-15  6:43       ` Xing, Beilei [this message]
2020-10-15  6:46         ` Sun, GuinanX
2020-10-15  6:55 ` [dpdk-dev] [PATCH v2] " Guinan Sun
2020-10-15  8:13 ` [dpdk-dev] [PATCH v3] " Guinan Sun
2020-10-15  8:38   ` Xing, Beilei
2020-10-15  8:43 ` [dpdk-dev] [PATCH v4] " Guinan Sun
2020-10-20  9:06   ` Zhang, Qi Z

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=MN2PR11MB3807BB17A9D01669F40E06B2F7020@MN2PR11MB3807.namprd11.prod.outlook.com \
    --to=beilei.xing@intel.com \
    --cc=dev@dpdk.org \
    --cc=guinanx.sun@intel.com \
    --cc=jingjing.wu@intel.com \
    --cc=qi.z.zhang@intel.com \
    --cc=yuan.peng@intel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.