[dpdk-dev] [PATCH] net/mlx4: use PCI address as port name

Marcelo Ricardo Leitner marcelo.leitner at gmail.com
Fri Feb 16 14:19:24 CET 2018


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: stable at dpdk.org
> Signed-off-by: Yuanhan Liu <yliu at 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
> 


More information about the dev mailing list