From: Thomas Monjalon <thomas@monjalon.net>
To: "Iremonger, Bernard" <bernard.iremonger@intel.com>
Cc: "Yigit, Ferruh" <ferruh.yigit@intel.com>,
Andrew Rybchenko <arybchenko@solarflare.com>,
"dev@dpdk.org" <dev@dpdk.org>,
Shahaf Shuler <shahafs@mellanox.com>,
"E. Scott Daniels" <daniels@research.att.com>,
"Lu, Wenzhuo" <wenzhuo.lu@intel.com>,
Alex Zelezniak <alexz@att.com>,
Ajit Khaparde <ajit.khaparde@broadcom.com>,
"Doherty, Declan" <declan.doherty@intel.com>
Subject: Re: [dpdk-dev] [RFC] ethdev: configure SR-IOV VF from host
Date: Wed, 04 Sep 2019 10:23:10 +0200 [thread overview]
Message-ID: <2893154.vhdUhTTG4t@xps> (raw)
In-Reply-To: <8CEF83825BEC744B83065625E567D7C260DE9D47@IRSMSX108.ger.corp.intel.com>
29/08/2019 17:02, Iremonger, Bernard:
> Hi Thomas,
>
> From: Thomas Monjalon [mailto:thomas@monjalon.net]
> >
> > In a virtual environment, the network controller may have to configure some
> > SR-IOV VF parameters for security reasons.
> >
> > When the PF (host port) is drived by DPDK (OVS-DPDK case), we face two
> > different cases:
> > - driver is bifurcated (Mellanox case),
> > so the VF can be configured via the kernel.
> > - driver is on top of UIO or VFIO, so DPDK API is required.
> >
> > This RFC proposes to use generic DPDK API for VF configuration.
> > The impacted functions are (can be extended):
> >
> > - rte_eth_dev_is_valid_port
> > - rte_eth_promiscuous_enable
> > - rte_eth_promiscuous_disable
> > - rte_eth_promiscuous_get
> > - rte_eth_allmulticast_enable
> > - rte_eth_allmulticast_disable
> > - rte_eth_allmulticast_get
> > - rte_eth_dev_set_mc_addr_list
> > - rte_eth_dev_default_mac_addr_set
> > - rte_eth_macaddr_get
> > - rte_eth_dev_mac_addr_add
> > - rte_eth_dev_mac_addr_remove
> > - rte_eth_dev_vlan_filter
> > - rte_eth_dev_get_mtu
> > - rte_eth_dev_set_mtu
> >
> > In order to target these functions to a VF (which has no port id in the host),
> > the higher bit of port id is reserved:
> >
> > #define RTE_ETH_VF_PORT_FLAG (1 << 15)
> >
> > This bit can be combined only with the port id of a representor.
> > The meaning is to target the VF connected with the representor port, instead
> > of the representor port itself.
> >
> > If a function is not expected to support VF configuration, it will return -
> > EINVAL, i.e. there is no code change.
> > If an API function (listed above) can support VF configuration, but the PMD
> > does not support it, then -ENOTSUP must be returned.
> >
> > As an example, this is the change required in rte_eth_dev_is_valid_port:
> >
> > int
> > rte_eth_dev_is_valid_port(uint16_t port_id) {
> > + uint32_t dev_flags;
> > + uint16_t vf_flag;
> > +
> > + vf_flag = port_id & RTE_ETH_VF_PORT_FLAG;
> > + port_id &= RTE_ETH_VF_PORT_FLAG - 1; /* remove VF flag */
> > +
> > if (port_id >= RTE_MAX_ETHPORTS ||
> > (rte_eth_devices[port_id].state == RTE_ETH_DEV_UNUSED))
> > return 0;
> > - else
> > - return 1;
> > +
> > + dev_flags = rte_eth_dev_shared_data->data[port_id].dev_flags;
> > + if (vf_flag != 0 && (dev_flags & RTE_ETH_DEV_REPRESENTOR) == 0)
> > + return 0; /* VF flag has no meaning if not a representor
> > + */
> > +
> > + return 1;
> > }
>
>
> Some of the functions in the list above for example, rte_eth_dev_promiscuous_enable() use the dev_ops structure, is it intended to add more rte_eth_dev_* functions to the dev_ops structure?
I propose to use the same functions for PF and VF.
> At present the ixgbe and i40e PMD's have sets of private functions for configuring SRIOV VF's from the DPDK PF, rte_pmd_ixgbe_* and rte_pmd_i40e_* functions (see rte_pmd_ixgbe.h and rte_pmd_i40e.h).
>
> At the time these functions were not allowed to be added to the dev_ops structure as there were so many of them. There was a proposal to add a dev_ctrl function to the dev_ops structure which would access the private functions. Maybe adding the dev_ctrl function should be considered again.
>
> Having two ways (through dev_ops and private PMD functions) to configure DPDK VF's from the DPDK PF will be confusing for developers.
No, I propose to replace the private API with the representor magic.
next prev parent reply other threads:[~2019-09-04 8:23 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-08-15 15:06 [dpdk-dev] [RFC] ethdev: configure SR-IOV VF from host Thomas Monjalon
2019-08-15 15:34 ` Jerin Jacob Kollanukkaran
2019-08-15 17:59 ` Thomas Monjalon
2019-08-29 15:02 ` Iremonger, Bernard
2019-09-04 8:23 ` Thomas Monjalon [this message]
2019-10-29 18:50 ` [dpdk-dev] [PATCH v2 0/3] " Thomas Monjalon
2019-10-29 18:50 ` [dpdk-dev] [PATCH v2 1/3] ethdev: identify " Thomas Monjalon
2019-10-29 18:50 ` [dpdk-dev] [PATCH v2 2/3] ethdev: set VF MAC address " Thomas Monjalon
2019-11-01 0:18 ` [dpdk-dev] [RFC PATCH] net/i[xgb|40]e: " Thomas Monjalon
2019-10-29 18:50 ` [dpdk-dev] [PATCH v2 3/3] net/mlx5: " Thomas Monjalon
2019-10-30 4:08 ` [dpdk-dev] [PATCH v2 0/3] ethdev: configure SR-IOV VF " Jerin Jacob
2019-10-30 7:22 ` Shahaf Shuler
2019-10-30 9:24 ` Jerin Jacob
2019-11-01 0:24 ` Thomas Monjalon
2019-11-01 9:06 ` Ilya Maximets
2019-11-01 9:56 ` Ilya Maximets
2019-10-30 8:56 ` Thomas Monjalon
2019-10-30 9:15 ` Jerin Jacob
2019-11-01 0:33 ` Thomas Monjalon
2019-11-01 11:01 ` Jerin Jacob
2019-11-01 13:25 ` Jerin Jacob
2019-11-03 6:31 ` Shahaf Shuler
2019-10-30 15:07 ` Ilya Maximets
2019-10-30 15:49 ` Thomas Monjalon
2019-10-30 16:09 ` Ilya Maximets
2019-10-30 21:42 ` Thomas Monjalon
2019-11-01 9:32 ` Ilya Maximets
2019-11-03 6:48 ` Shahaf Shuler
2019-11-03 15:27 ` Ananyev, Konstantin
2019-11-03 22:09 ` Thomas Monjalon
2019-11-07 14:44 ` Thomas Monjalon
2019-11-04 10:28 ` Ilya Maximets
2019-11-04 14:30 ` Asaf Penso
2019-11-04 14:58 ` Ilya Maximets
2019-11-04 20:33 ` Shahaf Shuler
2019-11-05 12:15 ` Ilya Maximets
-- strict thread matches above, loose matches on Subject: below --
2019-08-16 5:16 [dpdk-dev] [RFC] " Jerin Jacob Kollanukkaran
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=2893154.vhdUhTTG4t@xps \
--to=thomas@monjalon.net \
--cc=ajit.khaparde@broadcom.com \
--cc=alexz@att.com \
--cc=arybchenko@solarflare.com \
--cc=bernard.iremonger@intel.com \
--cc=daniels@research.att.com \
--cc=declan.doherty@intel.com \
--cc=dev@dpdk.org \
--cc=ferruh.yigit@intel.com \
--cc=shahafs@mellanox.com \
--cc=wenzhuo.lu@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.