[dpdk-dev] ethdev: replace bus specific struct with generic dev
Checks
Commit Message
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(-)
Comments
On 3/27/2018 11:10 PM, 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/cxgbe/cxgbe_ethdev.c b/drivers/net/cxgbe/cxgbe_ethdev.c
> index 781d75cc2..ec3a024c6 100644
> --- a/drivers/net/cxgbe/cxgbe_ethdev.c
> +++ b/drivers/net/cxgbe/cxgbe_ethdev.c
> @@ -148,7 +148,7 @@ static void cxgbe_dev_info_get(struct rte_eth_dev *eth_dev,
> .nb_align = 1,
> };
>
> - device_info->pci_dev = RTE_ETH_DEV_TO_PCI(eth_dev);
> + device_info->device = eth_dev->device;
>
> device_info->min_rx_bufsize = CXGBE_MIN_RX_BUFSIZE;
> device_info->max_rx_pktlen = CXGBE_MAX_RX_PKTLEN;
> diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c
> index db493648a..29513158f 100644
> --- a/drivers/net/dpaa/dpaa_ethdev.c
> +++ b/drivers/net/dpaa/dpaa_ethdev.c
> @@ -245,6 +245,7 @@ static void dpaa_eth_dev_info(struct rte_eth_dev *dev,
>
> PMD_INIT_FUNC_TRACE();
>
> + dev_info->device = dev->device;
> dev_info->max_rx_queues = dpaa_intf->nb_rx_queues;
> dev_info->max_tx_queues = dpaa_intf->nb_tx_queues;
> dev_info->min_rx_bufsize = DPAA_MIN_RX_BUF_SIZE;
> diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c
> index 2fb7b2da7..7802067e8 100644
> --- a/drivers/net/dpaa2/dpaa2_ethdev.c
> +++ b/drivers/net/dpaa2/dpaa2_ethdev.c
> @@ -163,6 +163,7 @@ dpaa2_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
>
> dev_info->if_index = priv->hw_id;
>
> + dev_info->device = dev->device;
> dev_info->max_mac_addrs = priv->max_mac_filters;
> dev_info->max_rx_pktlen = DPAA2_MAX_RX_PKT_LEN;
> dev_info->min_rx_bufsize = DPAA2_MIN_RX_BUF_SIZE;
[...]
For dpaa and dpaa2 specific change...
> 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. */
[...]
And for the above change:
Acked-By: Shreyansh Jain <shreyansh.jain@nxp.com>
> -----Original Message-----
> From: Ferruh Yigit [mailto:ferruh.yigit@intel.com]
> Sent: Tuesday, March 27, 2018 1:41 PM
<...>
> Subject: [PATCH] ethdev: replace bus specific struct with generic dev
>
> 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 +-
Acked-by: Allain Legacy <allain.legacy@windriver.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(®_info, 0, sizeof(reg_info));
> rte_eth_dev_get_reg_info(port_id, ®_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
On Tuesday 27 March 2018 11:10 PM, 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 +-
Resending, as mailman had issues sending to too many recipient.
nits: patch apply failed on tip 20526313, applied manually.
with that:
Acked-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
[..]
On 3/29/2018 7:17 AM, Tomasz Duszynski wrote:
> 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,
OK, I will send new version.
(reduced cc list)
@@ -754,6 +754,8 @@ vlan_id_is_invalid(uint16_t vlan_id)
static int
port_reg_off_is_invalid(portid_t port_id, uint32_t reg_off)
{
+ const struct rte_pci_device *pci_dev;
+ const struct rte_bus *bus;
uint64_t pci_len;
if (reg_off & 0x3) {
@@ -762,7 +764,14 @@ port_reg_off_is_invalid(portid_t port_id, uint32_t reg_off)
(unsigned)reg_off);
return 1;
}
- pci_len = ports[port_id].dev_info.pci_dev->mem_resource[0].len;
+
+ bus = rte_bus_find_by_device(ports[port_id].dev_info.device);
+ if (bus && !strcmp(bus->name, "pci"))
+ pci_dev = RTE_DEV_TO_PCI(ports[port_id].dev_info.device);
+ else
+ return 1;
+
+ pci_len = pci_dev->mem_resource[0].len;
if (reg_off >= pci_len) {
printf("Port %d: register offset %u (0x%X) out of port PCI "
"resource (length=%"PRIu64")\n",
@@ -500,12 +500,18 @@ mbuf_pool_find(unsigned int sock_id)
static inline uint32_t
port_pci_reg_read(struct rte_port *port, uint32_t reg_off)
{
+ const struct rte_pci_device *pci_dev;
+ const struct rte_bus *bus;
void *reg_addr;
uint32_t reg_v;
- reg_addr = (void *)
- ((char *)port->dev_info.pci_dev->mem_resource[0].addr +
- reg_off);
+ bus = rte_bus_find_by_device(port->dev_info.device);
+ if (bus && !strcmp(bus->name, "pci"))
+ pci_dev = RTE_DEV_TO_PCI(port->dev_info.device);
+ else
+ return 0;
+
+ reg_addr = ((char *)pci_dev->mem_resource[0].addr + reg_off);
reg_v = *((volatile uint32_t *)reg_addr);
return rte_le_to_cpu_32(reg_v);
}
@@ -516,11 +522,17 @@ port_pci_reg_read(struct rte_port *port, uint32_t reg_off)
static inline void
port_pci_reg_write(struct rte_port *port, uint32_t reg_off, uint32_t reg_v)
{
+ const struct rte_pci_device *pci_dev;
+ const struct rte_bus *bus;
void *reg_addr;
- reg_addr = (void *)
- ((char *)port->dev_info.pci_dev->mem_resource[0].addr +
- reg_off);
+ bus = rte_bus_find_by_device(port->dev_info.device);
+ if (bus && !strcmp(bus->name, "pci"))
+ pci_dev = RTE_DEV_TO_PCI(port->dev_info.device);
+ else
+ return;
+
+ reg_addr = ((char *)pci_dev->mem_resource[0].addr + reg_off);
*((volatile uint32_t *)reg_addr) = rte_cpu_to_le_32(reg_v);
}
@@ -293,6 +293,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->if_index = internals->if_index;
dev_info->max_mac_addrs = 1;
dev_info->max_rx_pktlen = (uint32_t)ETH_FRAME_LEN;
@@ -748,6 +748,8 @@ eth_ark_dev_info_get(struct rte_eth_dev *dev,
struct ark_mpu_t *rx_mpu = RTE_PTR_ADD(ark->bar0, ARK_MPU_RX_BASE);
uint16_t ports = ark->num_ports;
+ dev_info->device = dev->device;
+
dev_info->max_rx_pktlen = ARK_RX_MAX_PKT_LEN;
dev_info->min_rx_bufsize = ARK_RX_MIN_BUFSIZE;
@@ -771,7 +773,7 @@ eth_ark_dev_info_get(struct rte_eth_dev *dev,
ETH_LINK_SPEED_40G |
ETH_LINK_SPEED_50G |
ETH_LINK_SPEED_100G);
- dev_info->pci_dev = RTE_ETH_DEV_TO_PCI(dev);
+ dev_info->device = dev->device;
}
static int
@@ -507,7 +507,7 @@ avf_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
struct avf_info *vf = AVF_DEV_PRIVATE_TO_VF(dev->data->dev_private);
memset(dev_info, 0, sizeof(*dev_info));
- dev_info->pci_dev = RTE_ETH_DEV_TO_PCI(dev);
+ dev_info->device = dev->device;
dev_info->max_rx_queues = vf->vsi_res->num_queue_pairs;
dev_info->max_tx_queues = vf->vsi_res->num_queue_pairs;
dev_info->min_rx_bufsize = AVF_BUF_SIZE_MIN;
@@ -2206,7 +2206,7 @@ avp_dev_info_get(struct rte_eth_dev *eth_dev,
{
struct avp_dev *avp = AVP_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private);
- dev_info->pci_dev = RTE_ETH_DEV_TO_PCI(eth_dev);
+ dev_info->device = eth_dev->device;
dev_info->max_rx_queues = avp->max_rx_queues;
dev_info->max_tx_queues = avp->max_tx_queues;
dev_info->min_rx_bufsize = AVP_MIN_RX_BUFSIZE;
@@ -447,7 +447,7 @@ static void
bnx2x_dev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
{
struct bnx2x_softc *sc = dev->data->dev_private;
- dev_info->pci_dev = RTE_ETH_DEV_TO_PCI(dev);
+ dev_info->device = dev->device;
dev_info->max_rx_queues = sc->max_rx_queues;
dev_info->max_tx_queues = sc->max_tx_queues;
dev_info->min_rx_bufsize = BNX2X_MIN_RX_BUF_SIZE;
@@ -407,7 +407,7 @@ static void bnxt_dev_info_get_op(struct rte_eth_dev *eth_dev,
uint16_t max_vnics, i, j, vpool, vrxq;
unsigned int max_rx_rings;
- dev_info->pci_dev = RTE_ETH_DEV_TO_PCI(eth_dev);
+ dev_info->device = eth_dev->device;
/* MAC Specifics */
dev_info->max_mac_addrs = bp->max_l2_ctx;
@@ -148,7 +148,7 @@ static void cxgbe_dev_info_get(struct rte_eth_dev *eth_dev,
.nb_align = 1,
};
- device_info->pci_dev = RTE_ETH_DEV_TO_PCI(eth_dev);
+ device_info->device = eth_dev->device;
device_info->min_rx_bufsize = CXGBE_MIN_RX_BUFSIZE;
device_info->max_rx_pktlen = CXGBE_MAX_RX_PKTLEN;
@@ -245,6 +245,7 @@ static void dpaa_eth_dev_info(struct rte_eth_dev *dev,
PMD_INIT_FUNC_TRACE();
+ dev_info->device = dev->device;
dev_info->max_rx_queues = dpaa_intf->nb_rx_queues;
dev_info->max_tx_queues = dpaa_intf->nb_tx_queues;
dev_info->min_rx_bufsize = DPAA_MIN_RX_BUF_SIZE;
@@ -163,6 +163,7 @@ dpaa2_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
dev_info->if_index = priv->hw_id;
+ dev_info->device = dev->device;
dev_info->max_mac_addrs = priv->max_mac_filters;
dev_info->max_rx_pktlen = DPAA2_MAX_RX_PKT_LEN;
dev_info->min_rx_bufsize = DPAA2_MIN_RX_BUF_SIZE;
@@ -1048,7 +1048,7 @@ eth_em_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
{
struct e1000_hw *hw = E1000_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->min_rx_bufsize = 256; /* See BSIZE field of RCTL register. */
dev_info->max_rx_pktlen = em_get_max_pktlen(hw);
dev_info->max_mac_addrs = hw->mac.rar_entry_count;
@@ -2144,7 +2144,7 @@ eth_igb_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
{
struct e1000_hw *hw = E1000_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->min_rx_bufsize = 256; /* See BSIZE field of RCTL register. */
dev_info->max_rx_pktlen = 0x3FFF; /* See RLPML register. */
dev_info->max_mac_addrs = hw->mac.rar_entry_count;
@@ -2273,7 +2273,7 @@ eth_igbvf_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
{
struct e1000_hw *hw = E1000_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->min_rx_bufsize = 256; /* See BSIZE field of RCTL register. */
dev_info->max_rx_pktlen = 0x3FFF; /* See RLPML register. */
dev_info->max_mac_addrs = hw->mac.rar_entry_count;
@@ -1527,7 +1527,7 @@ static void ena_infos_get(struct rte_eth_dev *dev,
ena_dev = &adapter->ena_dev;
ena_assert_msg(ena_dev != NULL, "Uninitialized device");
- dev_info->pci_dev = RTE_ETH_DEV_TO_PCI(dev);
+ dev_info->device = dev->device;
dev_info->speed_capa =
ETH_LINK_SPEED_1G |
@@ -471,7 +471,7 @@ static void enicpmd_dev_info_get(struct rte_eth_dev *eth_dev,
struct enic *enic = pmd_priv(eth_dev);
ENICPMD_FUNC_TRACE();
- device_info->pci_dev = RTE_ETH_DEV_TO_PCI(eth_dev);
+ device_info->device = eth_dev->device;
/* Scattered Rx uses two receive queues per rx queue exposed to dpdk */
device_info->max_rx_queues = enic->conf_rq_count / 2;
device_info->max_tx_queues = enic->conf_wq_count;
@@ -1375,7 +1375,7 @@ fm10k_dev_infos_get(struct rte_eth_dev *dev,
PMD_INIT_FUNC_TRACE();
- dev_info->pci_dev = pdev;
+ dev_info->device = dev->device;
dev_info->min_rx_bufsize = FM10K_MIN_RX_BUF_SIZE;
dev_info->max_rx_pktlen = FM10K_MAX_PKT_SIZE;
dev_info->max_rx_queues = hw->mac.max_queues;
@@ -3200,7 +3200,7 @@ i40e_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
struct i40e_vsi *vsi = pf->main_vsi;
struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev);
- dev_info->pci_dev = pci_dev;
+ dev_info->device = dev->device;
dev_info->max_rx_queues = vsi->nb_qps;
dev_info->max_tx_queues = vsi->nb_qps;
dev_info->min_rx_bufsize = I40E_BUF_SIZE_MIN;
@@ -2165,7 +2165,7 @@ i40evf_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
struct i40e_vf *vf = I40EVF_DEV_PRIVATE_TO_VF(dev->data->dev_private);
memset(dev_info, 0, sizeof(*dev_info));
- dev_info->pci_dev = RTE_ETH_DEV_TO_PCI(dev);
+ dev_info->device = dev->device;
dev_info->max_rx_queues = vf->vsi_res->num_queue_pairs;
dev_info->max_tx_queues = vf->vsi_res->num_queue_pairs;
dev_info->min_rx_bufsize = I40E_BUF_SIZE_MIN;
@@ -3572,7 +3572,7 @@ ixgbe_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
struct ixgbe_hw *hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private);
struct rte_eth_conf *dev_conf = &dev->data->dev_conf;
- dev_info->pci_dev = pci_dev;
+ dev_info->device = dev->device;
dev_info->max_rx_queues = (uint16_t)hw->mac.max_rx_queues;
dev_info->max_tx_queues = (uint16_t)hw->mac.max_tx_queues;
if (RTE_ETH_DEV_SRIOV(dev).active == 0) {
@@ -3731,7 +3731,7 @@ ixgbevf_dev_info_get(struct rte_eth_dev *dev,
struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev);
struct ixgbe_hw *hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private);
- dev_info->pci_dev = pci_dev;
+ dev_info->device = dev->device;
dev_info->max_rx_queues = (uint16_t)hw->mac.max_rx_queues;
dev_info->max_tx_queues = (uint16_t)hw->mac.max_tx_queues;
dev_info->min_rx_bufsize = 1024; /* cf BSIZEPACKET in SRRCTL reg */
@@ -201,7 +201,7 @@ eth_kni_dev_info(struct rte_eth_dev *dev __rte_unused,
dev_info->max_rx_queues = KNI_MAX_QUEUE_PER_PORT;
dev_info->max_tx_queues = KNI_MAX_QUEUE_PER_PORT;
dev_info->min_rx_bufsize = 0;
- dev_info->pci_dev = NULL;
+ dev_info->device = NULL;
}
static int
@@ -373,7 +373,7 @@ lio_dev_info_get(struct rte_eth_dev *eth_dev,
struct lio_device *lio_dev = LIO_DEV(eth_dev);
struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(eth_dev);
- devinfo->pci_dev = pci_dev;
+ devinfo->device = eth_dev->device;
switch (pci_dev->id.subsystem_device_id) {
/* CN23xx 10G cards */
@@ -555,7 +555,7 @@ mlx4_dev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *info)
unsigned int max;
char ifname[IF_NAMESIZE];
- info->pci_dev = RTE_ETH_DEV_TO_PCI(dev);
+ info->device = dev->device;
/* FIXME: we should ask the device for these values. */
info->min_rx_bufsize = 32;
info->max_rx_pktlen = 65536;
@@ -403,7 +403,7 @@ mlx5_dev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *info)
unsigned int max;
char ifname[IF_NAMESIZE];
- info->pci_dev = RTE_ETH_DEV_TO_PCI(dev);
+ info->device = dev->device;
/* FIXME: we should ask the device for these values. */
info->min_rx_bufsize = 32;
info->max_rx_pktlen = 65536;
@@ -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;
+
info->speed_capa = ETH_LINK_SPEED_10M |
ETH_LINK_SPEED_100M |
ETH_LINK_SPEED_1G |
@@ -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;
@@ -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);
@@ -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,
@@ -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;
@@ -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;
@@ -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;
@@ -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 */
@@ -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;
@@ -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();
@@ -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;
@@ -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 =
@@ -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;
@@ -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(®_info, 0, sizeof(reg_info));
rte_eth_dev_get_reg_info(port_id, ®_info);
@@ -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;
@@ -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,
@@ -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. */
@@ -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;