From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by dpdk.org (Postfix) with ESMTP id 6EAF51B130; Wed, 13 Feb 2019 04:42:48 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga107.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 12 Feb 2019 19:42:48 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.58,364,1544515200"; d="scan'208";a="274627375" Received: from kmsmsx156.gar.corp.intel.com ([172.21.138.133]) by orsmga004.jf.intel.com with ESMTP; 12 Feb 2019 19:42:46 -0800 Received: from pgsmsx109.gar.corp.intel.com (10.221.44.109) by KMSMSX156.gar.corp.intel.com (172.21.138.133) with Microsoft SMTP Server (TLS) id 14.3.408.0; Wed, 13 Feb 2019 11:42:45 +0800 Received: from pgsmsx103.gar.corp.intel.com ([169.254.2.6]) by PGSMSX109.gar.corp.intel.com ([169.254.14.167]) with mapi id 14.03.0415.000; Wed, 13 Feb 2019 11:42:45 +0800 From: "Zhao1, Wei" To: "Zhang, Qi Z" , "dev@dpdk.org" CC: "stable@dpdk.org" , "Lu, Wenzhuo" Thread-Topic: [PATCH v2 2/3] net/ixgbe: enable promiscuous mode on PF host Thread-Index: AQHUrVw7zK8Uhfzcy02M8hR4VPC5aKXcu0CAgACGUMA= Date: Wed, 13 Feb 2019 03:42:44 +0000 Message-ID: References: <1547613775-58027-1-git-send-email-wei.zhao1@intel.com> <1547614920-59680-1-git-send-email-wei.zhao1@intel.com> <1547614920-59680-3-git-send-email-wei.zhao1@intel.com> <039ED4275CED7440929022BC67E7061153333BE7@SHSMSX103.ccr.corp.intel.com> In-Reply-To: <039ED4275CED7440929022BC67E7061153333BE7@SHSMSX103.ccr.corp.intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.0.400.15 dlp-reaction: no-action x-originating-ip: [172.30.20.206] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH v2 2/3] net/ixgbe: enable promiscuous mode on PF host X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 13 Feb 2019 03:42:50 -0000 > -----Original Message----- > From: Zhang, Qi Z > Sent: Wednesday, February 13, 2019 11:42 AM > To: Zhao1, Wei ; dev@dpdk.org > Cc: stable@dpdk.org; Lu, Wenzhuo > Subject: RE: [PATCH v2 2/3] net/ixgbe: enable promiscuous mode on PF host >=20 >=20 >=20 > > -----Original Message----- > > From: Zhao1, Wei > > Sent: Wednesday, January 16, 2019 1:02 PM > > To: dev@dpdk.org > > Cc: stable@dpdk.org; Lu, Wenzhuo ; Zhang, Qi Z > > ; Zhao1, Wei > > Subject: [PATCH v2 2/3] net/ixgbe: enable promiscuous mode on PF host > > >=20 > The title is misleading, we are going to support VF's promiscuous mode bu= t > not PF. >=20 > How about "Add VF promiscuous mode support when PF as host" Get, update in v3 >=20 > > There is need to PF host promiscuous mode enable. For ixgbe, in order > > to support VF vlan promiscuous or unicast promiscuous, we need to set > > PF host register PFVML2FLT of bit UPE and VPE. > > It also align to ixgbe kernel code version 5.5.3. > > > > Fixes: 72dec9e37a84 ("ixgbe: support multicast promiscuous mode on > > VF") >=20 > Same to previous patch, not a fix. > > > > Signed-off-by: Wei Zhao > > --- > > drivers/net/ixgbe/ixgbe_ethdev.h | 1 + > > drivers/net/ixgbe/ixgbe_pf.c | 78 > > ++++++++++++++++++++++++++++------------ > > 2 files changed, 57 insertions(+), 22 deletions(-) > > > > diff --git a/drivers/net/ixgbe/ixgbe_ethdev.h > > b/drivers/net/ixgbe/ixgbe_ethdev.h > > index d0b9396..e81f152 100644 > > --- a/drivers/net/ixgbe/ixgbe_ethdev.h > > +++ b/drivers/net/ixgbe/ixgbe_ethdev.h > > @@ -265,6 +265,7 @@ struct ixgbe_vf_info { > > uint8_t spoofchk_enabled; > > uint8_t api_version; > > uint16_t switch_domain_id; > > + uint16_t xcast_mode; > > }; > > > > /* > > diff --git a/drivers/net/ixgbe/ixgbe_pf.c > > b/drivers/net/ixgbe/ixgbe_pf.c index 4b833ff..c9d1a1c 100644 > > --- a/drivers/net/ixgbe/ixgbe_pf.c > > +++ b/drivers/net/ixgbe/ixgbe_pf.c > > @@ -408,23 +408,6 @@ ixgbe_vf_reset_msg(struct rte_eth_dev *dev, > > uint16_t > > vf) } > > > > static int > > -ixgbe_enable_vf_mc_promisc(struct rte_eth_dev *dev, uint32_t vf) -{ > > - struct ixgbe_hw *hw =3D > > IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private); > > - uint32_t vmolr; > > - > > - vmolr =3D IXGBE_READ_REG(hw, IXGBE_VMOLR(vf)); > > - > > - RTE_LOG(INFO, PMD, "VF %u: enabling multicast promiscuous\n", vf); > > - > > - vmolr |=3D IXGBE_VMOLR_MPE; > > - > > - IXGBE_WRITE_REG(hw, IXGBE_VMOLR(vf), vmolr); > > - > > - return 0; > > -} > > - > > -static int > > ixgbe_disable_vf_mc_promisc(struct rte_eth_dev *dev, uint32_t vf) { > > struct ixgbe_hw *hw =3D > > IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private); > > @@ -688,19 +671,70 @@ ixgbe_set_vf_mc_promisc(struct rte_eth_dev > *dev, > > uint32_t vf, uint32_t *msgbuf) { > > struct ixgbe_vf_info *vfinfo =3D > > *(IXGBE_DEV_PRIVATE_TO_P_VFDATA(dev->data- > >dev_private)); > > - bool enable =3D !!msgbuf[1]; /* msgbuf contains the flag to enable > */ > > + struct ixgbe_hw *hw =3D > > IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private); > > + int xcast_mode =3D msgbuf[1]; /* msgbuf contains the flag to enable > */ > > + u32 vmolr, fctrl, disable, enable; > > > > switch (vfinfo[vf].api_version) { > > case ixgbe_mbox_api_12: > > + /* promisc introduced in 1.3 version */ > > + if (xcast_mode =3D=3D IXGBEVF_XCAST_MODE_PROMISC) > > + return -EOPNOTSUPP; > > + break; > > + /* Fall threw */ > > + case ixgbe_mbox_api_13: > > break; > > default: > > return -1; > > } > > > > - if (enable) > > - return ixgbe_enable_vf_mc_promisc(dev, vf); > > - else > > - return ixgbe_disable_vf_mc_promisc(dev, vf); > > + if (vfinfo[vf].xcast_mode =3D=3D xcast_mode) > > + goto out; > > + > > + switch (xcast_mode) { > > + case IXGBEVF_XCAST_MODE_NONE: > > + disable =3D IXGBE_VMOLR_BAM | IXGBE_VMOLR_ROMPE | > > + IXGBE_VMOLR_MPE | IXGBE_VMOLR_UPE | > > IXGBE_VMOLR_VPE; > > + enable =3D 0; > > + break; > > + case IXGBEVF_XCAST_MODE_MULTI: > > + disable =3D IXGBE_VMOLR_MPE | IXGBE_VMOLR_UPE | > > IXGBE_VMOLR_VPE; > > + enable =3D IXGBE_VMOLR_BAM | IXGBE_VMOLR_ROMPE; > > + break; > > + case IXGBEVF_XCAST_MODE_ALLMULTI: > > + disable =3D IXGBE_VMOLR_UPE | IXGBE_VMOLR_VPE; > > + enable =3D IXGBE_VMOLR_BAM | IXGBE_VMOLR_ROMPE | > > IXGBE_VMOLR_MPE; > > + break; > > + case IXGBEVF_XCAST_MODE_PROMISC: > > + if (hw->mac.type <=3D ixgbe_mac_82599EB) > > + return -1; > > + > > + fctrl =3D IXGBE_READ_REG(hw, IXGBE_FCTRL); > > + if (!(fctrl & IXGBE_FCTRL_UPE)) { > > + /* VF promisc requires PF in promisc */ > > + RTE_LOG(ERR, PMD, > > + "Enabling VF promisc requires PF in promisc\n"); > > + return -1; > > + } > > + > > + disable =3D 0; > > + enable =3D IXGBE_VMOLR_BAM | IXGBE_VMOLR_ROMPE | > > + IXGBE_VMOLR_MPE | IXGBE_VMOLR_UPE | > > IXGBE_VMOLR_VPE; > > + break; > > + default: > > + return -1; > > + } > > + > > + vmolr =3D IXGBE_READ_REG(hw, IXGBE_VMOLR(vf)); > > + vmolr &=3D ~disable; > > + vmolr |=3D enable; > > + IXGBE_WRITE_REG(hw, IXGBE_VMOLR(vf), vmolr); > > + vfinfo[vf].xcast_mode =3D xcast_mode; > > + > > +out: > > + msgbuf[1] =3D xcast_mode; > > + > > + return 0; > > } > > > > static int > > -- > > 2.7.5