[dpdk-dev] [RFC] ethdev: configure SR-IOV VF from host
Thomas Monjalon
thomas at monjalon.net
Thu Aug 15 19:59:18 CEST 2019
15/08/2019 17:34, Jerin Jacob Kollanukkaran:
> From: Thomas Monjalon
> >
> > 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)
>
> Instead of changing the port number behavior, How about adding a bit field/
> I think, There is no ABI breakage as the parent type of bit field is uint8_t and there
> is still more room.
>
> --- a/lib/librte_ethdev/rte_ethdev_core.h
> +++ b/lib/librte_ethdev/rte_ethdev_core.h
> @@ -621,6 +621,7 @@ struct rte_eth_dev_data {
> all_multicast : 1, /**< RX all multicast mode ON(1) / OFF(0). */
> dev_started : 1, /**< Device state: STARTED(1) / STOPPED(0). */
> lro : 1; /**< RX LRO is ON(1) / OFF(0) */
> + vf : 1; /**< SR-IOV VF device */
> uint8_t rx_queue_state[RTE_MAX_QUEUES_PER_PORT];
> /**< Queues state: STARTED(1) / STOPPED(0). */
> uint8_t tx_queue_state[RTE_MAX_QUEUES_PER_PORT];
Sorry I don't understand how it can help.
We need to specify which VF we want to configure.
My proposal is to use the representor port,
which is connected to a VF.
We distinguish the representor and the VF with a flag in the port id
parameter passed to the functions.
More information about the dev
mailing list