From: "Lu, Wenzhuo" <wenzhuo.lu@intel.com>
To: "Wang, Xiao W" <xiao.w.wang@intel.com>, "dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [dpdk-dev] [PATCH v2] ixgbe: support multicast promiscuous mode on VF
Date: Mon, 15 Feb 2016 08:43:34 +0000 [thread overview]
Message-ID: <6A0DE07E22DDAD4C9103DF62FEBC09090342A9EA@shsmsx102.ccr.corp.intel.com> (raw)
Hi Xiao,
> -----Original Message-----
> From: Wang, Xiao W
> Sent: Monday, February 15, 2016 4:10 PM
> To: Lu, Wenzhuo; dev@dpdk.org
> Subject: RE: [dpdk-dev] [PATCH v2] ixgbe: support multicast promiscuous mode
> on VF
>
> Hi,
>
> Best Regards,
> Wang, Xiao
>
> > -----Original Message-----
> > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Wenzhuo Lu
> > Sent: Sunday, February 14, 2016 2:25 PM
> > To: dev@dpdk.org
> > Subject: [dpdk-dev] [PATCH v2] ixgbe: support multicast promiscuous
> > mode on VF
> >
> > Add multicast promiscuous mode support on ixgbe VF driver.
> >
> > Please note if we want to use this promiscuous mode, we need both PF
> > and VF driver to support it. The reason is this VF feature is configged on PF.
> > If use kernel PF driver + dpdk VF driver, make sure kernel PF driver
> > support VF multicast promiscuous mode. If use dpdk PF + dpdk VF,
> > better make sure PF driver is the same version as VF.
> >
> > V2:
> > Update release note.
>
> Maybe it's better to put change log below the "---"
>
> >
> > Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
> > Acked-by: Shaopeng He <shaopeng.he@intel.com>
> > ---
> > doc/guides/rel_notes/release_16_04.rst | 11 ++++++
> > drivers/net/ixgbe/base/ixgbe_mbx.h | 4 +++
> > drivers/net/ixgbe/ixgbe_ethdev.c | 66
> > ++++++++++++++++++++++++++++++++++
> > drivers/net/ixgbe/ixgbe_pf.c | 65
> > +++++++++++++++++++++++++++++++++
> > 4 files changed, 146 insertions(+)
> >
> > diff --git a/doc/guides/rel_notes/release_16_04.rst
> > b/doc/guides/rel_notes/release_16_04.rst
> > index 27fc624..e71d316 100644
> > --- a/doc/guides/rel_notes/release_16_04.rst
> > +++ b/doc/guides/rel_notes/release_16_04.rst
> > @@ -39,6 +39,17 @@ This section should contain new features added in
> > this release. Sample format:
> >
> > Enabled virtio 1.0 support for virtio pmd driver.
> >
> > +* **Added multicast promiscuous mode support on VF for ixgbe.**
> > +
> > + Added multicast promiscuous mode support on ixgbe VF driver. So all
> > + the VFs can receive the multicast packets.
> > +
> > + Please note if we want to use this promiscuous mode, we need both
> > + PF and VF driver to support it. The reason is this VF feature is configged on
> PF.
> > + If use kernel PF driver + dpdk VF driver, make sure kernel PF
> > + driver support VF multicast promiscuous mode. If use dpdk PF + dpdk
> > + VF, better make sure PF driver is the same version as VF.
> > +
> >
> > Resolved Issues
> > ---------------
> > diff --git a/drivers/net/ixgbe/base/ixgbe_mbx.h
> > b/drivers/net/ixgbe/base/ixgbe_mbx.h
> > index 445df10..4a120a3 100644
> > --- a/drivers/net/ixgbe/base/ixgbe_mbx.h
> > +++ b/drivers/net/ixgbe/base/ixgbe_mbx.h
> > @@ -89,6 +89,7 @@ enum ixgbe_pfvf_api_rev {
> > ixgbe_mbox_api_10, /* API version 1.0, linux/freebsd VF driver */
> > ixgbe_mbox_api_20, /* API version 2.0, solaris Phase1 VF driver */
> > ixgbe_mbox_api_11, /* API version 1.1, linux/freebsd VF driver */
> > + ixgbe_mbox_api_12, /* API version 1.2, linux/freebsd VF driver */
> > /* This value should always be last */
> > ixgbe_mbox_api_unknown, /* indicates that API version is not
> > known */
> > };
> > @@ -107,6 +108,9 @@ enum ixgbe_pfvf_api_rev {
> > /* mailbox API, version 1.1 VF requests */
> > #define IXGBE_VF_GET_QUEUES 0x09 /* get queue configuration */
> >
> > +/* mailbox API, version 1.2 VF requests */
> > +#define IXGBE_VF_UPDATE_XCAST_MODE 0x0C
> > +
> > /* GET_QUEUES return data indices within the mailbox */
> > #define IXGBE_VF_TX_QUEUES 1 /* number of Tx queues
> supported */
> > #define IXGBE_VF_RX_QUEUES 2 /* number of Rx queues
> supported */
> > diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c
> > b/drivers/net/ixgbe/ixgbe_ethdev.c
> > index 3e6fe86..82ba755 100644
> > --- a/drivers/net/ixgbe/ixgbe_ethdev.c
> > +++ b/drivers/net/ixgbe/ixgbe_ethdev.c
> > @@ -138,6 +138,12 @@
> >
> > #define IXGBE_CYCLECOUNTER_MASK 0xffffffffffffffffULL
> >
> > +enum ixgbevf_xcast_modes {
> > + IXGBEVF_XCAST_MODE_NONE = 0,
> > + IXGBEVF_XCAST_MODE_MULTI,
> > + IXGBEVF_XCAST_MODE_ALLMULTI,
> > +};
> > +
> > static int eth_ixgbe_dev_init(struct rte_eth_dev *eth_dev); static
> > int eth_ixgbe_dev_uninit(struct rte_eth_dev *eth_dev); static int
> > ixgbe_dev_configure(struct rte_eth_dev *dev); @@ -237,6 +243,8 @@
> > static int ixgbevf_dev_rx_queue_intr_disable(struct rte_eth_dev *dev,
> > static void ixgbevf_set_ivar_map(struct ixgbe_hw *hw, int8_t direction,
> > uint8_t queue, uint8_t msix_vector); static
> void
> > ixgbevf_configure_msix(struct rte_eth_dev *dev);
> > +static void ixgbevf_dev_allmulticast_enable(struct rte_eth_dev *dev);
> > +static void ixgbevf_dev_allmulticast_disable(struct rte_eth_dev
> > +*dev);
> >
> > /* For Eth VMDQ APIs support */
> > static int ixgbe_uc_hash_table_set(struct rte_eth_dev *dev, struct @@
> > -511,6
> > +519,8 @@ static const struct eth_dev_ops ixgbevf_eth_dev_ops = {
> > .stats_reset = ixgbevf_dev_stats_reset,
> > .xstats_reset = ixgbevf_dev_stats_reset,
> > .dev_close = ixgbevf_dev_close,
> > + .allmulticast_enable = ixgbevf_dev_allmulticast_enable,
> > + .allmulticast_disable = ixgbevf_dev_allmulticast_disable,
> > .dev_infos_get = ixgbevf_dev_info_get,
> > .mtu_set = ixgbevf_dev_set_mtu,
> > .vlan_filter_set = ixgbevf_vlan_filter_set,
> > @@ -1224,6 +1234,7 @@ ixgbevf_negotiate_api(struct ixgbe_hw *hw)
> >
> > /* start with highest supported, proceed down */
> > static const enum ixgbe_pfvf_api_rev sup_ver[] = {
> > + ixgbe_mbox_api_12,
> > ixgbe_mbox_api_11,
> > ixgbe_mbox_api_10,
> > };
> > @@ -6191,6 +6202,61 @@ ixgbe_dev_get_dcb_info(struct rte_eth_dev *dev,
> > return 0;
> > }
> >
> > +/* ixgbevf_update_xcast_mode - Update Multicast mode
> > + * @hw: pointer to the HW structure
> > + * @netdev: pointer to net device structure
> > + * @xcast_mode: new multicast mode
> > + *
> > + * Updates the Multicast Mode of VF.
> > + */
> > +static int ixgbevf_update_xcast_mode(struct ixgbe_hw *hw,
> > + int xcast_mode)
> > +{
> > + struct ixgbe_mbx_info *mbx = &hw->mbx;
> > + u32 msgbuf[2];
> > + s32 err;
> > +
> > + switch (hw->api_version) {
> > + case ixgbe_mbox_api_12:
> > + break;
> > + default:
> > + return -EOPNOTSUPP;
> > + }
> > +
> > + msgbuf[0] = IXGBE_VF_UPDATE_XCAST_MODE;
> > + msgbuf[1] = xcast_mode;
> > +
> > + err = mbx->ops.write_posted(hw, msgbuf, 2, 0);
> > + if (err)
> > + return err;
> > +
> > + err = mbx->ops.read_posted(hw, msgbuf, 2, 0);
>
> Is it more reasonable to read a message of size 1 than 2? Pf side only write 1
> word into mbx.
Thanks for the comment. But actually PF writes 16 words into the mbx, and 2 words have meaning.
Word0 is used to check ack/nack. PF uses word1 to write the xcast_mode back. I don't check the word1 because I don't see the necessary:)
>
> > + if (err)
> > + return err;
next reply other threads:[~2016-02-15 8:43 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-15 8:43 Lu, Wenzhuo [this message]
2016-03-03 3:51 ` Wang, Xiao W
2016-03-08 13:37 ` Bruce Richardson
-- strict thread matches above, loose matches on Subject: below --
2016-01-04 8:07 [dpdk-dev] [PATCH] " Wenzhuo Lu
2016-02-14 6:24 ` [dpdk-dev] [PATCH v2] " Wenzhuo Lu
2016-02-15 8:09 ` Wang, Xiao W
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=6A0DE07E22DDAD4C9103DF62FEBC09090342A9EA@shsmsx102.ccr.corp.intel.com \
--to=wenzhuo.lu@intel.com \
--cc=dev@dpdk.org \
--cc=xiao.w.wang@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 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).