On Sun, Feb 11, 2018 at 04:29:32PM +0800, Yuanhan Liu wrote:
> It is suggested to use PCI BDF to identify a port for port addition
> in OVS-DPDK. While mlx5 has its own naming style: name it by ib dev
                        ^
   I believe you mean mlx4 here?

> name. This breaks the typical OVS DPDK use case and brings more puzzle
> to the end users.
> 
> To fix it, this patch changes it to use PCI BDF as the name, too.
> Judging the fact that there are 2 ports associated with one PCI for
> ConnectX-3, a postfix is needed. Thus, the final name looks like
> something below:
> 
>     0000:04:00.0-port0
>     0000:04:00.0-port1
> 
> Cc: sta...@dpdk.org
> Signed-off-by: Yuanhan Liu <y...@fridaylinux.org>
> ---
>  drivers/net/mlx4/mlx4.c | 17 +++++++++--------
>  1 file changed, 9 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/net/mlx4/mlx4.c b/drivers/net/mlx4/mlx4.c
> index ee93daf..eb8851c 100644
> --- a/drivers/net/mlx4/mlx4.c
> +++ b/drivers/net/mlx4/mlx4.c
> @@ -497,6 +497,14 @@ mlx4_pci_probe(struct rte_pci_driver *pci_drv, struct 
> rte_pci_device *pci_dev)
>               struct priv *priv = NULL;
>               struct rte_eth_dev *eth_dev = NULL;
>               struct ether_addr mac;
> +             char name[RTE_ETH_NAME_MAX_LEN];
> +             int len;
> +
> +             len = snprintf(name, sizeof(name), PCI_PRI_FMT,
> +                      pci_dev->addr.domain, pci_dev->addr.bus,
> +                      pci_dev->addr.devid, pci_dev->addr.function);
> +             if (device_attr.phys_port_cnt > 1)
> +                     snprintf(name + len, sizeof(name), "-port%u", i);
>  
>               /* If port is not enabled, skip. */
>               if (!(conf.ports.enabled & (1 << i)))
> @@ -605,14 +613,7 @@ mlx4_pci_probe(struct rte_pci_driver *pci_drv, struct 
> rte_pci_device *pci_dev)
>               /* Get actual MTU if possible. */
>               mlx4_mtu_get(priv, &priv->mtu);
>               DEBUG("port %u MTU is %u", priv->port, priv->mtu);
> -             /* from rte_ethdev.c */
> -             {
> -                     char name[RTE_ETH_NAME_MAX_LEN];
> -
> -                     snprintf(name, sizeof(name), "%s port %u",
> -                              mlx4_glue->get_device_name(ibv_dev), port);
> -                     eth_dev = rte_eth_dev_allocate(name);
> -             }
> +             eth_dev = rte_eth_dev_allocate(name);
>               if (eth_dev == NULL) {
>                       ERROR("can not allocate rte ethdev");
>                       rte_errno = ENOMEM;
> -- 
> 2.7.4
> 

Reply via email to