All of lore.kernel.org
 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 Wa
Subject: Re: [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 [PATCH] ethdev: replace bus specific struct with generic dev 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 ` [PATCH v2] " Ferruh Yigit
2018-03-29 17:52   ` [PATCH v3] " Ferruh Yigit
2018-03-30  6:44     ` David Marchand
2018-03-30 10:27       ` Ferruh Yigit
2018-03-30 15:17     ` [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       ` [PATCH v5] " Ferruh Yigit
2018-04-09 12:09         ` [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=ajit.khaparde@broadcom.com \
    --cc=allain.legacy@windriver.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=jingjing.wu@intel.com \
    --cc=john.miller@atomicrules.com \
    --cc=johndale@cisco.com \
    --cc=linville@tuxdriver.com \
    --cc=matt.peters@windriver.com \
    --cc=mk@semihalf.com \
    --cc=mw@semihalf.com \
    --cc=qi.z.zhang@intel.com \
    --cc=rahul.lakkireddy@chelsio.com \
    --cc=rasesh.mody@cavium.com \
    --cc=shepard.siegel@atomicrules.com \
    --cc=shreyansh.jain@nxp.com \
    --cc=somnath.kotur@broadcom.com \
    --cc=wenzhuo.lu@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.