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.


Reply via email to