DPDK patches and discussions
 help / color / mirror / Atom feed
From: Tomasz Duszynski <tdu@semihalf.com>
To: Ferruh Yigit <ferruh.yigit@intel.com>
Cc: Wenzhuo Lu <wenzhuo.lu@intel.com>,
	Jingjing Wu <jingjing.wu@intel.com>,
	"John W. Linville" <linville@tuxdriver.com>,
	Shepard Siegel <shepard.siegel@atomicrules.com>,
	Ed Czeck <ed.czeck@atomicrules.com>,
	John Miller <john.miller@atomicrules.com>,
	Allain Legacy <allain.legacy@windriver.com>,
	Matt Peters <matt.peters@windriver.com>,
	Harish Patil <harish.patil@cavium.com>,
	Rasesh Mody <rasesh.mody@cavium.com>,
	Ajit Khaparde <ajit.khaparde@broadcom.com>,
	Somnath Kotur <somnath.kotur@broadcom.com>,
	Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>,
	Hemant Agrawal <hemant.agrawal@nxp.com>,
	Shreyansh Jain <shreyansh.jain@nxp.com>,
	Marcin Wojtas <mw@semihalf.com>,
	Michal Krawczyk <mk@semihalf.com>,
	Guy Tzalik <gtzalik@amazon.com>,
	Evgeny Schemeilin <evgenys@amazon.com>,
	John Daley <johndale@cisco.com>,
	Hyong Youb Kim <hyonkim@cisco.com>,
	Qi Zhang <qi.z.zhang@intel.com>,
	Xiao Wang <xiao.w.wang@intel.com>,
	Beilei Xing <beilei.xing@intel.com>,
	Konstantin Ananyev <konstantin.ananyev@intel.com>,
	Shijith Thotton <shijith.thotton@cavium.com>,
	Srisivasubramanian Srinivasan <ssrinivasan@cavium.com>,
	Adrien Mazarguil <adrien.mazarguil@6wind.com>,
	Nelio Laranjeiro <nelio.laranjeiro@6wind.com>,
	Yongseok Koh <yskoh@mellanox.com>, Jacek Siuda <jck@semihalf.com>,
	Tomasz Duszynski <tdu@semihalf.com>,
	Dmitri Epshtein <dima@marvell.com>,
	Natalie Samsonov <nsamsono@marvell.com>,
	Jianbo Liu <jianbo.liu@arm.com>,
	Alejandro Lucero <alejandro.lucero@netronome.com>,
	Tetsuya Mukawa <mtetsuyah@gmail.com>,
	Santosh Shukla <santosh.shukla@caviumnetworks.com>,
	Jerin Jacob <jerin.jacob@caviumnetworks.com>,
	Shahed Shaikh <shahed.shaikh@cavium.com>,
	Bruce Richardson <bruce.richardson@intel.com>,
	Andrew Rybchenko <arybchenko@solarflare.com>,
	Matej Vido <vido@cesnet.cz>,
	Pascal Mazon <pascal.mazon@6wind.com>,
	Maciej Czekaj <maciej.czekaj@caviumnetworks.com>,
	Maxime Coquelin <maxime.coquelin@redhat.com>,
	Tiwei Bie <tiwei.bie@intel.com>,
	Shrikrishna Khare <skhare@vmware.com>,
	Remy Horton <remy.horton@intel.com>, Ori Kam <orika@mellanox.com>,
	Pablo de Lara <pablo.de.lara.guarch@intel.com>,
	Radu Nicolau <radu.nicolau@intel.com>,
	Akhil Goyal <akhil.goyal@nxp.com>,
	Tomasz Kantecki <tomasz.kantecki@intel.com>,
	Cristian Dumitrescu <cristian.dumitrescu@intel.com>,
	Thomas Monjalon <thomas@monjalon.net>,
	dev@dpdk.org
Subject: Re: [dpdk-dev] [PATCH] ethdev: replace bus specific struct with generic dev
Date: Thu, 29 Mar 2018 08:17:23 +0200	[thread overview]
Message-ID: <20180329061723.GA31647@sh> (raw)
In-Reply-To: <20180327174052.266285-1-ferruh.yigit@intel.com>

On Tue, Mar 27, 2018 at 06:40:52PM +0100, Ferruh Yigit wrote:
> Public struct rte_eth_dev_info has a "struct rte_pci_device" field in it
> although it is common for all ethdev in all buses.
>
> Replacing pci specific struct with generic device struct and updating
> places that are using pci device in a way to get this information from
> generic device.
>
> Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
> ---
> Cc: Pablo de Lara <pablo.de.lara.guarch@intel.com>
>
> There is no deprecation notice sent for this update but in this release
> ethdev info already updated and ABI already broken, it can be good
> opportunity for this update.
> ---
>  app/test-pmd/config.c                     | 11 ++++++++++-
>  app/test-pmd/testpmd.h                    | 24 ++++++++++++++++++------
>  drivers/net/af_packet/rte_eth_af_packet.c |  1 +
>  drivers/net/ark/ark_ethdev.c              |  4 +++-
>  drivers/net/avf/avf_ethdev.c              |  2 +-
>  drivers/net/avp/avp_ethdev.c              |  2 +-
>  drivers/net/bnx2x/bnx2x_ethdev.c          |  2 +-
>  drivers/net/bnxt/bnxt_ethdev.c            |  2 +-
>  drivers/net/cxgbe/cxgbe_ethdev.c          |  2 +-
>  drivers/net/dpaa/dpaa_ethdev.c            |  1 +
>  drivers/net/dpaa2/dpaa2_ethdev.c          |  1 +
>  drivers/net/e1000/em_ethdev.c             |  2 +-
>  drivers/net/e1000/igb_ethdev.c            |  4 ++--
>  drivers/net/ena/ena_ethdev.c              |  2 +-
>  drivers/net/enic/enic_ethdev.c            |  2 +-
>  drivers/net/fm10k/fm10k_ethdev.c          |  2 +-
>  drivers/net/i40e/i40e_ethdev.c            |  2 +-
>  drivers/net/i40e/i40e_ethdev_vf.c         |  2 +-
>  drivers/net/ixgbe/ixgbe_ethdev.c          |  4 ++--
>  drivers/net/kni/rte_eth_kni.c             |  2 +-
>  drivers/net/liquidio/lio_ethdev.c         |  2 +-
>  drivers/net/mlx4/mlx4_ethdev.c            |  2 +-
>  drivers/net/mlx5/mlx5_ethdev.c            |  2 +-
>  drivers/net/mrvl/mrvl_ethdev.c            |  2 ++
>  drivers/net/nfp/nfp_net.c                 |  2 +-
>  drivers/net/null/rte_eth_null.c           |  1 +
>  drivers/net/octeontx/octeontx_ethdev.c    |  2 +-
>  drivers/net/pcap/rte_eth_pcap.c           |  1 +
>  drivers/net/qede/qede_ethdev.c            |  2 +-
>  drivers/net/ring/rte_eth_ring.c           |  1 +
>  drivers/net/sfc/sfc_ethdev.c              |  2 +-
>  drivers/net/szedata2/rte_eth_szedata2.c   |  2 +-
>  drivers/net/tap/rte_eth_tap.c             |  2 +-
>  drivers/net/thunderx/nicvf_ethdev.c       |  2 +-
>  drivers/net/virtio/virtio_ethdev.c        |  2 +-
>  drivers/net/vmxnet3/vmxnet3_ethdev.c      |  2 +-
>  examples/ethtool/lib/rte_ethtool.c        | 15 +++++++++------
>  examples/ip_pipeline/init.c               | 10 ++++++++--
>  examples/kni/main.c                       | 10 +++++++---
>  lib/librte_ether/rte_ethdev.h             |  2 +-
>  test/test/test_kni.c                      | 28 ++++++++++++++++++++++------
>  41 files changed, 114 insertions(+), 54 deletions(-)
>

[...]

> diff --git a/drivers/net/mrvl/mrvl_ethdev.c b/drivers/net/mrvl/mrvl_ethdev.c
> index c0483b912..d46c65255 100644
> --- a/drivers/net/mrvl/mrvl_ethdev.c
> +++ b/drivers/net/mrvl/mrvl_ethdev.c
> @@ -1314,6 +1314,8 @@ static void
>  mrvl_dev_infos_get(struct rte_eth_dev *dev __rte_unused,
>  		   struct rte_eth_dev_info *info)
>  {
> +	info->device = dev->device;

Since dev is used perhaps __rte_unused can be dropped.
Besides that,

Acked-by: Tomasz Duszynski <tdu@semihalf.com>

> +
>  	info->speed_capa = ETH_LINK_SPEED_10M |
>  			   ETH_LINK_SPEED_100M |
>  			   ETH_LINK_SPEED_1G |
> diff --git a/drivers/net/nfp/nfp_net.c b/drivers/net/nfp/nfp_net.c
> index 8591c7de0..add00baf9 100644
> --- a/drivers/net/nfp/nfp_net.c
> +++ b/drivers/net/nfp/nfp_net.c
> @@ -1159,7 +1159,7 @@ nfp_net_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
>
>  	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
>
> -	dev_info->pci_dev = RTE_ETH_DEV_TO_PCI(dev);
> +	dev_info->device = dev->device;
>  	dev_info->max_rx_queues = (uint16_t)hw->max_rx_queues;
>  	dev_info->max_tx_queues = (uint16_t)hw->max_tx_queues;
>  	dev_info->min_rx_bufsize = ETHER_MIN_MTU;
> diff --git a/drivers/net/null/rte_eth_null.c b/drivers/net/null/rte_eth_null.c
> index 73fe8b04a..7506f77f6 100644
> --- a/drivers/net/null/rte_eth_null.c
> +++ b/drivers/net/null/rte_eth_null.c
> @@ -292,6 +292,7 @@ eth_dev_info(struct rte_eth_dev *dev,
>  		return;
>
>  	internals = dev->data->dev_private;
> +	dev_info->device = dev->device;
>  	dev_info->max_mac_addrs = 1;
>  	dev_info->max_rx_pktlen = (uint32_t)-1;
>  	dev_info->max_rx_queues = RTE_DIM(internals->rx_null_queues);
> diff --git a/drivers/net/octeontx/octeontx_ethdev.c b/drivers/net/octeontx/octeontx_ethdev.c
> index 90dd249a6..edd4dd3ff 100644
> --- a/drivers/net/octeontx/octeontx_ethdev.c
> +++ b/drivers/net/octeontx/octeontx_ethdev.c
> @@ -611,7 +611,7 @@ octeontx_dev_info(struct rte_eth_dev *dev,
>  	dev_info->max_rx_queues = 1;
>  	dev_info->max_tx_queues = PKO_MAX_NUM_DQ;
>  	dev_info->min_rx_bufsize = 0;
> -	dev_info->pci_dev = NULL;
> +	dev_info->device = NULL;
>
>  	dev_info->default_rxconf = (struct rte_eth_rxconf) {
>  		.rx_free_thresh = 0,
> diff --git a/drivers/net/pcap/rte_eth_pcap.c b/drivers/net/pcap/rte_eth_pcap.c
> index c1571e1fe..2e739a24e 100644
> --- a/drivers/net/pcap/rte_eth_pcap.c
> +++ b/drivers/net/pcap/rte_eth_pcap.c
> @@ -526,6 +526,7 @@ eth_dev_info(struct rte_eth_dev *dev,
>  {
>  	struct pmd_internals *internals = dev->data->dev_private;
>
> +	dev_info->device = dev->device;
>  	dev_info->if_index = internals->if_index;
>  	dev_info->max_mac_addrs = 1;
>  	dev_info->max_rx_pktlen = (uint32_t) -1;
> diff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c
> index a91f43683..59d604b78 100644
> --- a/drivers/net/qede/qede_ethdev.c
> +++ b/drivers/net/qede/qede_ethdev.c
> @@ -1515,7 +1515,7 @@ qede_dev_info_get(struct rte_eth_dev *eth_dev,
>
>  	PMD_INIT_FUNC_TRACE(edev);
>
> -	dev_info->pci_dev = RTE_ETH_DEV_TO_PCI(eth_dev);
> +	dev_info->device = eth_dev->device;
>  	dev_info->min_rx_bufsize = (uint32_t)QEDE_MIN_RX_BUFF_SIZE;
>  	dev_info->max_rx_pktlen = (uint32_t)ETH_TX_MAX_NON_LSO_PKT_LEN;
>  	dev_info->rx_desc_lim = qede_rx_desc_lim;
> diff --git a/drivers/net/ring/rte_eth_ring.c b/drivers/net/ring/rte_eth_ring.c
> index df13c44be..14274fa36 100644
> --- a/drivers/net/ring/rte_eth_ring.c
> +++ b/drivers/net/ring/rte_eth_ring.c
> @@ -153,6 +153,7 @@ eth_dev_info(struct rte_eth_dev *dev,
>  		struct rte_eth_dev_info *dev_info)
>  {
>  	struct pmd_internals *internals = dev->data->dev_private;
> +	dev_info->device = dev->device;
>  	dev_info->max_mac_addrs = 1;
>  	dev_info->max_rx_pktlen = (uint32_t)-1;
>  	dev_info->max_rx_queues = (uint16_t)internals->max_rx_queues;
> diff --git a/drivers/net/sfc/sfc_ethdev.c b/drivers/net/sfc/sfc_ethdev.c
> index f16d52081..2c0ad7ecf 100644
> --- a/drivers/net/sfc/sfc_ethdev.c
> +++ b/drivers/net/sfc/sfc_ethdev.c
> @@ -89,7 +89,7 @@ sfc_dev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
>
>  	sfc_log_init(sa, "entry");
>
> -	dev_info->pci_dev = RTE_ETH_DEV_TO_PCI(dev);
> +	dev_info->device = dev->device;
>  	dev_info->max_rx_pktlen = EFX_MAC_PDU_MAX;
>
>  	/* Autonegotiation may be disabled */
> diff --git a/drivers/net/szedata2/rte_eth_szedata2.c b/drivers/net/szedata2/rte_eth_szedata2.c
> index 1d02aee6f..4157cc88f 100644
> --- a/drivers/net/szedata2/rte_eth_szedata2.c
> +++ b/drivers/net/szedata2/rte_eth_szedata2.c
> @@ -1031,7 +1031,7 @@ eth_dev_info(struct rte_eth_dev *dev,
>  		struct rte_eth_dev_info *dev_info)
>  {
>  	struct pmd_internals *internals = dev->data->dev_private;
> -	dev_info->pci_dev = RTE_ETH_DEV_TO_PCI(dev);
> +	dev_info->device = dev->device;
>  	dev_info->if_index = 0;
>  	dev_info->max_mac_addrs = 1;
>  	dev_info->max_rx_pktlen = (uint32_t)-1;
> diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c
> index 67ed9d466..23843e32e 100644
> --- a/drivers/net/tap/rte_eth_tap.c
> +++ b/drivers/net/tap/rte_eth_tap.c
> @@ -688,7 +688,7 @@ tap_dev_info(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
>  	dev_info->max_rx_queues = RTE_PMD_TAP_MAX_QUEUES;
>  	dev_info->max_tx_queues = RTE_PMD_TAP_MAX_QUEUES;
>  	dev_info->min_rx_bufsize = 0;
> -	dev_info->pci_dev = NULL;
> +	dev_info->device = NULL;
>  	dev_info->speed_capa = tap_dev_speed_capa();
>  	dev_info->rx_offload_capa = tap_rx_offload_get_port_capa();
>  	dev_info->tx_offload_capa = tap_tx_offload_get_port_capa();
> diff --git a/drivers/net/thunderx/nicvf_ethdev.c b/drivers/net/thunderx/nicvf_ethdev.c
> index 067f2243b..f9e4a5810 100644
> --- a/drivers/net/thunderx/nicvf_ethdev.c
> +++ b/drivers/net/thunderx/nicvf_ethdev.c
> @@ -1400,7 +1400,7 @@ nicvf_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
>
>  	PMD_INIT_FUNC_TRACE();
>
> -	dev_info->pci_dev = RTE_ETH_DEV_TO_PCI(dev);
> +	dev_info->device = dev->device;
>
>  	/* Autonegotiation may be disabled */
>  	dev_info->speed_capa = ETH_LINK_SPEED_FIXED;
> diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c
> index 4dddb1c80..c623ce186 100644
> --- a/drivers/net/virtio/virtio_ethdev.c
> +++ b/drivers/net/virtio/virtio_ethdev.c
> @@ -2057,7 +2057,7 @@ virtio_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
>
>  	dev_info->speed_capa = ETH_LINK_SPEED_10G; /* fake value */
>
> -	dev_info->pci_dev = dev->device ? RTE_ETH_DEV_TO_PCI(dev) : NULL;
> +	dev_info->device = dev->device;
>  	dev_info->max_rx_queues =
>  		RTE_MIN(hw->max_queue_pairs, VIRTIO_MAX_RX_QUEUES);
>  	dev_info->max_tx_queues =
> diff --git a/drivers/net/vmxnet3/vmxnet3_ethdev.c b/drivers/net/vmxnet3/vmxnet3_ethdev.c
> index 426008722..220668e19 100644
> --- a/drivers/net/vmxnet3/vmxnet3_ethdev.c
> +++ b/drivers/net/vmxnet3/vmxnet3_ethdev.c
> @@ -1025,7 +1025,7 @@ static void
>  vmxnet3_dev_info_get(struct rte_eth_dev *dev,
>  		     struct rte_eth_dev_info *dev_info)
>  {
> -	dev_info->pci_dev = RTE_ETH_DEV_TO_PCI(dev);
> +	dev_info->device = dev->device;
>
>  	dev_info->max_rx_queues = VMXNET3_MAX_RX_QUEUES;
>  	dev_info->max_tx_queues = VMXNET3_MAX_TX_QUEUES;
> diff --git a/examples/ethtool/lib/rte_ethtool.c b/examples/ethtool/lib/rte_ethtool.c
> index 90dfbb739..4c770ec6a 100644
> --- a/examples/ethtool/lib/rte_ethtool.c
> +++ b/examples/ethtool/lib/rte_ethtool.c
> @@ -22,6 +22,8 @@ rte_ethtool_get_drvinfo(uint16_t port_id, struct ethtool_drvinfo *drvinfo)
>  {
>  	struct rte_eth_dev_info dev_info;
>  	struct rte_dev_reg_info reg_info;
> +	const struct rte_pci_device *pci_dev;
> +	const struct rte_bus *bus;
>  	int n;
>  	int ret;
>
> @@ -46,15 +48,16 @@ rte_ethtool_get_drvinfo(uint16_t port_id, struct ethtool_drvinfo *drvinfo)
>  	snprintf(drvinfo->version, sizeof(drvinfo->version), "%s",
>  		rte_version());
>  	/* TODO: replace bus_info by rte_devargs.name */
> -	if (dev_info.pci_dev)
> +	bus = rte_bus_find_by_device(dev_info.device);
> +	if (bus && !strcmp(bus->name, "pci")) {
> +		pci_dev = RTE_DEV_TO_PCI(dev_info.device);
>  		snprintf(drvinfo->bus_info, sizeof(drvinfo->bus_info),
>  			"%04x:%02x:%02x.%x",
> -			dev_info.pci_dev->addr.domain,
> -			dev_info.pci_dev->addr.bus,
> -			dev_info.pci_dev->addr.devid,
> -			dev_info.pci_dev->addr.function);
> -	else
> +			pci_dev->addr.domain, pci_dev->addr.bus,
> +			pci_dev->addr.devid, pci_dev->addr.function);
> +	} else {
>  		snprintf(drvinfo->bus_info, sizeof(drvinfo->bus_info), "N/A");
> +	}
>
>  	memset(&reg_info, 0, sizeof(reg_info));
>  	rte_eth_dev_get_reg_info(port_id, &reg_info);
> diff --git a/examples/ip_pipeline/init.c b/examples/ip_pipeline/init.c
> index bb07efa13..f57236b7a 100644
> --- a/examples/ip_pipeline/init.c
> +++ b/examples/ip_pipeline/init.c
> @@ -1266,6 +1266,8 @@ app_init_kni(struct app_params *app) {
>  		struct rte_eth_dev_info dev_info;
>  		struct app_mempool_params *mempool_params;
>  		struct rte_mempool *mempool;
> +		const struct rte_pci_device *pci_dev;
> +		const struct rte_bus *bus;
>  		struct rte_kni_conf conf;
>  		struct rte_kni_ops ops;
>
> @@ -1297,8 +1299,12 @@ app_init_kni(struct app_params *app) {
>  		}
>  		conf.group_id = p_link->pmd_id;
>  		conf.mbuf_size = mempool_params->buffer_size;
> -		conf.addr = dev_info.pci_dev->addr;
> -		conf.id = dev_info.pci_dev->id;
> +		bus = rte_bus_find_by_device(dev_info.device);
> +		if (bus && !strcmp(bus->name, "pci")) {
> +			pci_dev = RTE_DEV_TO_PCI(dev_info.device);
> +			conf.addr = pci_dev->addr;
> +			conf.id = pci_dev->id;
> +		}
>
>  		memset(&ops, 0, sizeof(ops));
>  		ops.port_id = (uint8_t) p_link->pmd_id;
> diff --git a/examples/kni/main.c b/examples/kni/main.c
> index 0d9980ee1..06eb74f6f 100644
> --- a/examples/kni/main.c
> +++ b/examples/kni/main.c
> @@ -834,13 +834,17 @@ kni_alloc(uint16_t port_id)
>  		if (i == 0) {
>  			struct rte_kni_ops ops;
>  			struct rte_eth_dev_info dev_info;
> +			const struct rte_pci_device *pci_dev;
> +			const struct rte_bus *bus;
>
>  			memset(&dev_info, 0, sizeof(dev_info));
>  			rte_eth_dev_info_get(port_id, &dev_info);
>
> -			if (dev_info.pci_dev) {
> -				conf.addr = dev_info.pci_dev->addr;
> -				conf.id = dev_info.pci_dev->id;
> +			bus = rte_bus_find_by_device(dev_info.device);
> +			if (bus && !strcmp(bus->name, "pci")) {
> +				pci_dev = RTE_DEV_TO_PCI(dev_info.device);
> +				conf.addr = pci_dev->addr;
> +				conf.id = pci_dev->id;
>  			}
>  			/* Get the interface default mac address */
>  			rte_eth_macaddr_get(port_id,
> diff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h
> index ab1030d42..0ed903966 100644
> --- a/lib/librte_ether/rte_ethdev.h
> +++ b/lib/librte_ether/rte_ethdev.h
> @@ -995,7 +995,7 @@ struct rte_pci_device;
>   * Ethernet device information
>   */
>  struct rte_eth_dev_info {
> -	struct rte_pci_device *pci_dev; /**< Device PCI information. */
> +	struct rte_device *device; /** Generic device information */
>  	const char *driver_name; /**< Device Driver name. */
>  	unsigned int if_index; /**< Index to bound host interface, or 0 if none.
>  		Use if_indextoname() to translate into an interface name. */
> diff --git a/test/test/test_kni.c b/test/test/test_kni.c
> index e4839cdb7..e23eb0837 100644
> --- a/test/test/test_kni.c
> +++ b/test/test/test_kni.c
> @@ -357,6 +357,8 @@ test_kni_processing(uint16_t port_id, struct rte_mempool *mp)
>  	struct rte_kni_conf conf;
>  	struct rte_eth_dev_info info;
>  	struct rte_kni_ops ops;
> +	const struct rte_pci_device *pci_dev;
> +	const struct rte_bus *bus;
>
>  	if (!mp)
>  		return -1;
> @@ -366,8 +368,12 @@ test_kni_processing(uint16_t port_id, struct rte_mempool *mp)
>  	memset(&ops, 0, sizeof(ops));
>
>  	rte_eth_dev_info_get(port_id, &info);
> -	conf.addr = info.pci_dev->addr;
> -	conf.id = info.pci_dev->id;
> +	bus = rte_bus_find_by_device(info.device);
> +	if (bus && !strcmp(bus->name, "pci")) {
> +		pci_dev = RTE_DEV_TO_PCI(info.device);
> +		conf.addr = pci_dev->addr;
> +		conf.id = pci_dev->id;
> +	}
>  	snprintf(conf.name, sizeof(conf.name), TEST_KNI_PORT);
>
>  	/* core id 1 configured for kernel thread */
> @@ -465,6 +471,8 @@ test_kni(void)
>  	struct rte_kni_conf conf;
>  	struct rte_eth_dev_info info;
>  	struct rte_kni_ops ops;
> +	const struct rte_pci_device *pci_dev;
> +	const struct rte_bus *bus;
>
>  	/* Initialize KNI subsytem */
>  	rte_kni_init(KNI_TEST_MAX_PORTS);
> @@ -523,8 +531,12 @@ test_kni(void)
>  	memset(&conf, 0, sizeof(conf));
>  	memset(&ops, 0, sizeof(ops));
>  	rte_eth_dev_info_get(port_id, &info);
> -	conf.addr = info.pci_dev->addr;
> -	conf.id = info.pci_dev->id;
> +	bus = rte_bus_find_by_device(info.device);
> +	if (bus && !strcmp(bus->name, "pci")) {
> +		pci_dev = RTE_DEV_TO_PCI(info.device);
> +		conf.addr = pci_dev->addr;
> +		conf.id = pci_dev->id;
> +	}
>  	conf.group_id = port_id;
>  	conf.mbuf_size = MAX_PACKET_SZ;
>
> @@ -552,8 +564,12 @@ test_kni(void)
>  	memset(&info, 0, sizeof(info));
>  	memset(&ops, 0, sizeof(ops));
>  	rte_eth_dev_info_get(port_id, &info);
> -	conf.addr = info.pci_dev->addr;
> -	conf.id = info.pci_dev->id;
> +	bus = rte_bus_find_by_device(info.device);
> +	if (bus && !strcmp(bus->name, "pci")) {
> +		pci_dev = RTE_DEV_TO_PCI(info.device);
> +		conf.addr = pci_dev->addr;
> +		conf.id = pci_dev->id;
> +	}
>  	conf.group_id = port_id;
>  	conf.mbuf_size = MAX_PACKET_SZ;
>
> --
> 2.14.3
>

--
- Tomasz Duszyński

  parent reply	other threads:[~2018-03-29  6:17 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-27 17:40 Ferruh Yigit
2018-03-28  7:04 ` Shreyansh Jain
2018-03-28 13:11 ` Legacy, Allain
2018-03-29  6:17 ` Tomasz Duszynski [this message]
2018-03-29  9:20   ` Ferruh Yigit
2018-03-29  8:01 ` santosh
2018-03-29 14:50 ` [dpdk-dev] [PATCH v2] " Ferruh Yigit
2018-03-29 17:52   ` [dpdk-dev] [PATCH v3] " Ferruh Yigit
2018-03-30  6:44     ` David Marchand
2018-03-30 10:27       ` Ferruh Yigit
2018-03-30 15:17     ` [dpdk-dev] [PATCH v4] " Ferruh Yigit
2018-03-30 15:29       ` David Marchand
2018-04-02  9:40         ` David Marchand
2018-04-02 16:13         ` santosh
2018-04-03  9:06           ` David Marchand
2018-04-03  9:50             ` Ferruh Yigit
2018-04-04 17:57               ` De Lara Guarch, Pablo
2018-04-05  9:19                 ` Ferruh Yigit
2018-04-05 16:40       ` [dpdk-dev] [PATCH v5] " Ferruh Yigit
2018-04-09 12:09         ` [dpdk-dev] [PATCH v6] " Ferruh Yigit
2018-04-10 13:34           ` Thomas Monjalon
2018-04-10 18:19             ` Ferruh Yigit

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=20180329061723.GA31647@sh \
    --to=tdu@semihalf.com \
    --cc=adrien.mazarguil@6wind.com \
    --cc=ajit.khaparde@broadcom.com \
    --cc=akhil.goyal@nxp.com \
    --cc=alejandro.lucero@netronome.com \
    --cc=allain.legacy@windriver.com \
    --cc=arybchenko@solarflare.com \
    --cc=beilei.xing@intel.com \
    --cc=bruce.richardson@intel.com \
    --cc=cristian.dumitrescu@intel.com \
    --cc=dev@dpdk.org \
    --cc=dima@marvell.com \
    --cc=ed.czeck@atomicrules.com \
    --cc=evgenys@amazon.com \
    --cc=ferruh.yigit@intel.com \
    --cc=gtzalik@amazon.com \
    --cc=harish.patil@cavium.com \
    --cc=hemant.agrawal@nxp.com \
    --cc=hyonkim@cisco.com \
    --cc=jck@semihalf.com \
    --cc=jerin.jacob@caviumnetworks.com \
    --cc=jianbo.liu@arm.com \
    --cc=jingjing.wu@intel.com \
    --cc=john.miller@atomicrules.com \
    --cc=johndale@cisco.com \
    --cc=konstantin.ananyev@intel.com \
    --cc=linville@tuxdriver.com \
    --cc=maciej.czekaj@caviumnetworks.com \
    --cc=matt.peters@windriver.com \
    --cc=maxime.coquelin@redhat.com \
    --cc=mk@semihalf.com \
    --cc=mtetsuyah@gmail.com \
    --cc=mw@semihalf.com \
    --cc=nelio.laranjeiro@6wind.com \
    --cc=nsamsono@marvell.com \
    --cc=orika@mellanox.com \
    --cc=pablo.de.lara.guarch@intel.com \
    --cc=pascal.mazon@6wind.com \
    --cc=qi.z.zhang@intel.com \
    --cc=radu.nicolau@intel.com \
    --cc=rahul.lakkireddy@chelsio.com \
    --cc=rasesh.mody@cavium.com \
    --cc=remy.horton@intel.com \
    --cc=santosh.shukla@caviumnetworks.com \
    --cc=shahed.shaikh@cavium.com \
    --cc=shepard.siegel@atomicrules.com \
    --cc=shijith.thotton@cavium.com \
    --cc=shreyansh.jain@nxp.com \
    --cc=skhare@vmware.com \
    --cc=somnath.kotur@broadcom.com \
    --cc=ssrinivasan@cavium.com \
    --cc=thomas@monjalon.net \
    --cc=tiwei.bie@intel.com \
    --cc=tomasz.kantecki@intel.com \
    --cc=vido@cesnet.cz \
    --cc=wenzhuo.lu@intel.com \
    --cc=xiao.w.wang@intel.com \
    --cc=yskoh@mellanox.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).