From: "Xing, Beilei" <beilei.xing@intel.com> To: "Peng, Yuan" <yuan.peng@intel.com>, "Sun, GuinanX" <guinanx.sun@intel.com>, "dev@dpdk.org" <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 Date: Thu, 15 Oct 2020 05:37:25 +0000 Message-ID: <MN2PR11MB3807B38210280B7B81E7ACFEF7020@MN2PR11MB3807.namprd11.prod.outlook.com> (raw) In-Reply-To: <BN6PR11MB184197C1DDBBAAA42F27B0BDFE020@BN6PR11MB1841.namprd11.prod.outlook.com> > -----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? > + 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
next prev parent reply other threads:[~2020-10-15 5:37 UTC|newest] Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-10-15 2:02 Guinan Sun 2020-10-15 5:13 ` Peng, Yuan 2020-10-15 5:37 ` Xing, Beilei [this message] 2020-10-15 5:57 ` Sun, GuinanX 2020-10-15 6:43 ` Xing, Beilei 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=MN2PR11MB3807B38210280B7B81E7ACFEF7020@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
DPDK patches and discussions This inbox may be cloned and mirrored by anyone: git clone --mirror https://inbox.dpdk.org/dev/0 dev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 dev dev/ https://inbox.dpdk.org/dev \ dev@dpdk.org public-inbox-index dev Example config snippet for mirrors. Newsgroup available over NNTP: nntp://inbox.dpdk.org/inbox.dpdk.dev AGPL code for this site: git clone https://public-inbox.org/public-inbox.git