DPDK patches and discussions
 help / color / mirror / Atom feed
From: "Zhang, Helin" <helin.zhang@intel.com>
To: "Ding, HengX" <hengx.ding@intel.com>, "dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [dpdk-dev] [PATCH] ethdev: The users could get device types now
Date: Sun, 28 Sep 2014 03:50:58 +0000	[thread overview]
Message-ID: <F35DEAC7BCE34641BA9FAC6BCA4A12E70A796F29@SHSMSX104.ccr.corp.intel.com> (raw)
In-Reply-To: <1411874836-3274-1-git-send-email-hengx.ding@intel.com>

Acked-by: Helin Zhang <helin.zhang@intel.com>

> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Ding Heng
> Sent: Sunday, September 28, 2014 11:27 AM
> To: dev@dpdk.org
> Subject: [dpdk-dev] [PATCH] ethdev: The users could get device types now
> 
> As different PMDs support different features, application may want to know
> the NIC type of a port, then decide how to use that port.
> Add a new field in struct rte_eth_dev, users are able to get device type now.
> 
> Signed-off-by: Ding Heng <hengx.ding@intel.com>
> ---
>  lib/librte_ether/rte_ethdev.c | 32 ++++++++++++++++++++++++++++++++
> lib/librte_ether/rte_ethdev.h | 20 ++++++++++++++++++++
>  2 files changed, 52 insertions(+)
> 
> diff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c index
> fd1010a..490ea3a 100644
> --- a/lib/librte_ether/rte_ethdev.c
> +++ b/lib/librte_ether/rte_ethdev.c
> @@ -235,6 +235,38 @@ rte_eth_dev_init(struct rte_pci_driver *pci_drv,
>  	if (diag == 0)
>  		return (0);
> 
> +	/* Define the device type */
> +	if (strcmp(eth_drv->pci_drv.name, "rte_i40e_pmd") == 0)
> +		eth_dev->dev_type = ETH_DEV_I40E;
> +	else if (strcmp(eth_drv->pci_drv.name, "rte_i40evf_pmd") == 0)
> +		eth_dev->dev_type = ETH_DEV_I40E_VF;
> +	else if (strcmp(eth_drv->pci_drv.name, "rte_em_pmd") == 0)
> +		eth_dev->dev_type = ETH_DEV_EM;
> +	else if (strcmp(eth_drv->pci_drv.name, "rte_igb_pmd") == 0)
> +		eth_dev->dev_type = ETH_DEV_IGB;
> +	else if (strcmp(eth_drv->pci_drv.name, "rte_igbvf_pmd") == 0)
> +		eth_dev->dev_type = ETH_DEV_IGB_VF;
> +	else if (strcmp(eth_drv->pci_drv.name, "rte_ixgbe_pmd") == 0)
> +		eth_dev->dev_type = ETH_DEV_IXGBE;
> +	else if (strcmp(eth_drv->pci_drv.name, "rte_ixgbevf_pmd") == 0)
> +		eth_dev->dev_type = ETH_DEV_IXGBE_VF;
> +	else if (strcmp(eth_drv->pci_drv.name, "eth_bond") == 0)
> +		eth_dev->dev_type = ETH_DEV_BOND;
> +	else if (strcmp(eth_drv->pci_drv.name, "eth_ring") == 0)
> +		eth_dev->dev_type = ETH_DEV_RING;
> +	else if (strcmp(eth_drv->pci_drv.name, "rte_virtio_pmd") == 0)
> +		eth_dev->dev_type = ETH_DEV_VIRTIO;
> +	else if (strcmp(eth_drv->pci_drv.name, "rte_vmxnet3_pmd") == 0)
> +		eth_dev->dev_type = ETH_DEV_VMXNET3;
> +	else if (strcmp(eth_drv->pci_drv.name, "eth_xenvirt") == 0)
> +		eth_dev->dev_type = ETH_DEV_XENVIRT;
> +	else if (strcmp(eth_drv->pci_drv.name, "rte_max_pmd") == 0)
> +		eth_dev->dev_type = ETH_DEV_MAX;
> +	else if (strcmp(eth_drv->pci_drv.name, "eth_pcap") == 0)
> +		eth_dev->dev_type = ETH_DEV_PCAP;
> +	else
> +		eth_dev->dev_type = ETH_DEV_UNKNOWN;
> +
>  	PMD_DEBUG_TRACE("driver %s: eth_dev_init(vendor_id=0x%u
> device_id=0x%x)"
>  			" failed\n", pci_drv->name,
>  			(unsigned) pci_dev->id.vendor_id,
> diff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h index
> 50df654..83a7ea5 100644
> --- a/lib/librte_ether/rte_ethdev.h
> +++ b/lib/librte_ether/rte_ethdev.h
> @@ -268,6 +268,25 @@ enum rte_eth_rx_mq_mode {
>  	ETH_MQ_RX_VMDQ_DCB_RSS, /**< Enable both VMDQ and DCB in
> VMDq */  };
> 
> +/*Device type*/
> +enum rte_eth_dev_type {
> +	ETH_DEV_UNKNOWN = 0,
> +	ETH_DEV_EM,
> +	ETH_DEV_IGB,
> +	ETH_DEV_IGB_VF,
> +	ETH_DEV_IXGBE,
> +	ETH_DEV_IXGBE_VF,
> +	ETH_DEV_I40E,
> +	ETH_DEV_I40E_VF,
> +	ETH_DEV_BOND,
> +	ETH_DEV_PCAP,
> +	ETH_DEV_RING,
> +	ETH_DEV_VIRTIO,
> +	ETH_DEV_VMXNET3,
> +	ETH_DEV_XENVIRT,
> +	ETH_DEV_MAX
> +};
> +
>  /**
>   * for rx mq mode backward compatible
>   */
> @@ -1487,6 +1506,7 @@ struct rte_eth_dev {
>  	struct eth_dev_ops *dev_ops;    /**< Functions exported by PMD */
>  	struct rte_pci_device *pci_dev; /**< PCI info. supplied by probing */
>  	struct rte_eth_dev_cb_list callbacks; /**< User application callbacks */
> +	enum rte_eth_dev_type dev_type;  /**< Device type info. */
>  };
> 
>  struct rte_eth_dev_sriov {
> --
> 1.9.3

  reply	other threads:[~2014-09-28  3:44 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-28  3:27 Ding Heng
2014-09-28  3:50 ` Zhang, Helin [this message]
2014-09-28 12:36 ` Neil Horman
2014-09-29  3:06   ` Stephen Hemminger

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=F35DEAC7BCE34641BA9FAC6BCA4A12E70A796F29@SHSMSX104.ccr.corp.intel.com \
    --to=helin.zhang@intel.com \
    --cc=dev@dpdk.org \
    --cc=hengx.ding@intel.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).