#include <rte_common.h>
#include <rte_debug.h>
#include <rte_ethdev.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_log.h>
#include <rte_lcore.h>
#include <rte_memory.h>
#include <stdint.h>
#include <limits.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_pdump.h>
#include "rte_eal.h"
#include "rte_lcore.h"
#include <rte_mbuf.h>
#include <rte_ethdev.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_pci.h>
#include <rte_bus_pci.h>
#include <rte_malloc.h>
Also, make sure to start the actual text at the margin.
=======================================================
+* The internal header files ``rte_ethdev_driver.h``, ``rte_ethdev_vdev.h`` and
+ ``rte_ethdev_pci.h`` are no longer installed as part of the DPDK
+ ``ninja install`` action and are renamed to ``ethdev_driver.h``,
+ ``ethdev_vdev.h`` and ``ethdev_pci.h`` respectively in the source tree, to
+ reflect the fact that they are non-public headers.
+
* Removed support for NetXtreme devices belonging to ``BCM573xx and
BCM5740x`` families. Specifically the support for the following Broadcom
PCI device IDs ``0x16c8, 0x16c9, 0x16ca, 0x16ce, 0x16cf, 0x16df, 0x16d0,``
``0x16d1, 0x16d2, 0x16d4, 0x16d5, 0x16e7, 0x16e8, 0x16e9`` has been removed.
+
API Changes
-----------
#include <rte_eal.h>
#include <rte_alarm.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_malloc.h>
#include <rte_ring.h>
#include <rte_bus.h>
#include <stdbool.h>
#include <net/if.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_ether.h>
#include <compat.h>
#include <rte_malloc.h>
#include <rte_devargs.h>
#include <rte_memcpy.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_mbuf_dyn.h>
#include <rte_fslmc.h>
#include <eal_filesystem.h>
#include <rte_mbuf.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_malloc.h>
#include <rte_memcpy.h>
#include <rte_string_fns.h>
#include <rte_cycles.h>
#include <rte_kvargs.h>
#include <rte_dev.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_mbuf_pool_ops.h>
#include <fslmc_logs.h>
#include <rte_cycles.h>
#include <rte_kvargs.h>
#include <rte_dev.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <fslmc_logs.h>
#include <rte_fslmc.h>
#include<sys/eventfd.h>
#include <rte_mbuf.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_malloc.h>
#include <rte_memcpy.h>
#include <rte_string_fns.h>
#include <rte_memory.h>
#include <rte_pci.h>
#include <rte_bus_vdev.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_cryptodev.h>
#include <rte_event_eth_rx_adapter.h>
#include <rte_event_eth_tx_adapter.h>
#include <rte_cycles.h>
#include <rte_kvargs.h>
#include <rte_dev.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_fslmc.h>
#include <mc/fsl_dpcon.h>
#include <rte_debug.h>
#include <rte_dev.h>
#include <rte_eal.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_event_eth_rx_adapter.h>
#include <rte_kvargs.h>
#include <rte_lcore.h>
#include <errno.h>
#include <rte_mbuf.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_malloc.h>
#include <rte_memcpy.h>
#include <rte_string_fns.h>
#include <rte_string_fns.h>
#include <rte_mbuf.h>
-#include <rte_ethdev_driver.h>
-#include <rte_ethdev_vdev.h>
+#include <ethdev_driver.h>
+#include <ethdev_vdev.h>
#include <rte_malloc.h>
#include <rte_kvargs.h>
#include <rte_bus_vdev.h>
#include <bpf/xsk.h>
#include <rte_ethdev.h>
-#include <rte_ethdev_driver.h>
-#include <rte_ethdev_vdev.h>
+#include <ethdev_driver.h>
+#include <ethdev_vdev.h>
#include <rte_kvargs.h>
#include <rte_bus_vdev.h>
#include <rte_string_fns.h>
#include <dlfcn.h>
#include <rte_bus_pci.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_pci.h>
#include <rte_kvargs.h>
#include "rte_pmd_ark.h"
#include <rte_mbuf.h>
#include <rte_mempool.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
extern uint64_t ark_timestamp_rx_dynflag;
extern int ark_timestamp_dynfield_offset;
#include <stdint.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
uint16_t eth_ark_xmit_pkts_noop(void *vtxq,
#ifndef _ARK_EXT_H_
#define _ARK_EXT_H_
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
/*
* This is the template file for users who which to define a dynamic
#include <assert.h>
#include <rte_mbuf.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_malloc.h>
#include <rte_memcpy.h>
#include <rte_string_fns.h>
#include <unistd.h>
#include <rte_string_fns.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_malloc.h>
#include "ark_pktchkr.h"
#include <rte_string_fns.h>
#include <rte_eal.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_malloc.h>
#include "ark_pktgen.h"
*/
#include <rte_string_fns.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_pci.h>
#include <rte_alarm.h>
#include "atl_ethdev.h"
*/
#include <rte_malloc.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_net.h>
#include "atl_ethdev.h"
* Copyright(c) 2018 Aquantia Corporation
*/
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include "rte_pmd_atlantic.h"
#include "atl_ethdev.h"
#include <errno.h>
#include <unistd.h>
-#include <rte_ethdev_driver.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_driver.h>
+#include <ethdev_pci.h>
#include <rte_memcpy.h>
#include <rte_string_fns.h>
#include <rte_malloc.h>
#include <rte_ethdev.h>
#include <rte_dev.h>
#include <rte_errno.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_pci.h>
#include <rte_common.h>
#include <rte_cycles.h>
#include <rte_io.h>
#include <rte_string_fns.h>
#include <rte_dev.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_pci.h>
#include <rte_alarm.h>
/*
#include <rte_debug.h>
#include <rte_pci.h>
#include <rte_malloc.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_spinlock.h>
#include <rte_eal.h>
#include <rte_mempool.h>
#include <rte_pci.h>
#include <rte_bus_pci.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_memory.h>
#include <rte_lcore.h>
#include <rte_spinlock.h>
#include <stdbool.h>
#include <rte_dev.h>
-#include <rte_ethdev_driver.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_driver.h>
+#include <ethdev_pci.h>
#include <rte_malloc.h>
#include <rte_cycles.h>
#include <rte_alarm.h>
#ifndef _BNXT_STATS_H_
#define _BNXT_STATS_H_
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
void bnxt_free_stats(struct bnxt *bp);
int bnxt_stats_get_op(struct rte_eth_dev *eth_dev,
#include <unistd.h>
#include <rte_dev.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_malloc.h>
#include <rte_cycles.h>
#include <rte_byteorder.h>
#include <stdint.h>
#include <sys/queue.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_flow.h>
#include <rte_spinlock.h>
#include <rte_bitmap.h>
#include <rte_mbuf.h>
#include <rte_malloc.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_tcp.h>
#include <rte_bus_vdev.h>
#include <rte_kvargs.h>
#include <rte_mbuf.h>
#include <rte_malloc.h>
-#include <rte_ethdev_driver.h>
-#include <rte_ethdev_vdev.h>
+#include <ethdev_driver.h>
+#include <ethdev_vdev.h>
#include <rte_tcp.h>
#include <rte_udp.h>
#include <rte_ip.h>
#include <rte_eal.h>
#include <rte_alarm.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_malloc.h>
#include <rte_random.h>
#include <rte_dev.h>
* All rights reserved.
*/
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_ether.h>
#include "common.h"
#include <rte_eal.h>
#include <rte_alarm.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_driver.h>
+#include <ethdev_pci.h>
#include <rte_malloc.h>
#include <rte_random.h>
#include <rte_dev.h>
#include <rte_eal.h>
#include <rte_alarm.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_driver.h>
+#include <ethdev_pci.h>
#include <rte_random.h>
#include <rte_dev.h>
#include <rte_kvargs.h>
* All rights reserved.
*/
-#include <rte_ethdev_driver.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_driver.h>
+#include <ethdev_pci.h>
#include "cxgbe.h"
#include "cxgbe_pfvf.h"
* All rights reserved.
*/
-#include <rte_ethdev_driver.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_driver.h>
+#include <ethdev_pci.h>
#include <rte_malloc.h>
#include "base/common.h"
#include <rte_eal.h>
#include <rte_alarm.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_malloc.h>
#include <rte_random.h>
#include <rte_dev.h>
#include <rte_eal.h>
#include <rte_alarm.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_malloc.h>
#include <rte_ring.h>
/* System headers */
#include <stdbool.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_event_eth_rx_adapter.h>
#include <fsl_usd.h>
#include <rte_eal.h>
#include <rte_alarm.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_malloc.h>
#include <rte_ring.h>
#include <rte_ip.h>
#include <net/if.h>
#include <rte_mbuf.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_malloc.h>
#include <rte_memcpy.h>
#include <rte_string_fns.h>
#include <net/if.h>
#include <rte_mbuf.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_malloc.h>
#include <rte_memcpy.h>
#include <rte_string_fns.h>
#include <net/if.h>
#include <rte_mbuf.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_malloc.h>
#include <rte_memcpy.h>
#include <rte_string_fns.h>
#include <rte_pci.h>
#include <rte_bus_pci.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_driver.h>
+#include <ethdev_pci.h>
#include <rte_memory.h>
#include <rte_eal.h>
#include <rte_malloc.h>
#include <rte_malloc.h>
#include <rte_mbuf.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_prefetch.h>
#include <rte_ip.h>
#include <rte_udp.h>
#include <rte_pci.h>
#include <rte_bus_pci.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_driver.h>
+#include <ethdev_pci.h>
#include <rte_memory.h>
#include <rte_eal.h>
#include <rte_malloc.h>
#include <rte_debug.h>
#include <rte_pci.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_driver.h>
+#include <ethdev_pci.h>
#include <rte_memory.h>
#include <rte_eal.h>
#include <rte_atomic.h>
#include <rte_debug.h>
#include <rte_eal.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_memcpy.h>
#include <rte_malloc.h>
#include <rte_random.h>
#include <rte_malloc.h>
#include <rte_mbuf.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_prefetch.h>
#include <rte_udp.h>
#include <rte_tcp.h>
#include <rte_string_fns.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_driver.h>
+#include <ethdev_pci.h>
#include <rte_tcp.h>
#include <rte_atomic.h>
#include <rte_dev.h>
*/
#include <stdbool.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_pci.h>
#include <rte_random.h>
#include <dpaax_iova_table.h>
#include <rte_dev.h>
#include <rte_pci.h>
#include <rte_bus_pci.h>
-#include <rte_ethdev_driver.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_driver.h>
+#include <ethdev_pci.h>
#include <rte_kvargs.h>
#include <rte_string_fns.h>
#include <errno.h>
#include <stdint.h>
#include <rte_log.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_flow_driver.h>
#include <rte_ether.h>
#include <rte_ip.h>
#include <errno.h>
#include <stdint.h>
#include <rte_log.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_flow_driver.h>
#include <rte_ether.h>
#include <rte_hash.h>
#include <rte_malloc.h>
#include <rte_mbuf.h>
#include <rte_string_fns.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include "enic_compat.h"
#include "enic.h"
*/
#include "enic_compat.h"
-#include "rte_ethdev_driver.h"
+#include "ethdev_driver.h"
#include "wq_enet_desc.h"
#include "rq_enet_desc.h"
#include "cq_enet_desc.h"
*/
#include <rte_mbuf.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_net.h>
#include <rte_prefetch.h>
*/
#include <rte_mbuf.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_vect.h>
#include "enic_compat.h"
#include <rte_bus_pci.h>
#include <rte_common.h>
#include <rte_dev.h>
-#include <rte_ethdev_driver.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_driver.h>
+#include <ethdev_pci.h>
#include <rte_flow_driver.h>
#include <rte_kvargs.h>
#include <rte_pci.h>
#include <rte_alarm.h>
#include <rte_malloc.h>
-#include <rte_ethdev_driver.h>
-#include <rte_ethdev_vdev.h>
+#include <ethdev_driver.h>
+#include <ethdev_vdev.h>
#include <rte_devargs.h>
#include <rte_kvargs.h>
#include <rte_bus_vdev.h>
#include <rte_debug.h>
#include <rte_atomic.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_malloc.h>
#include <rte_flow.h>
#include <rte_cycles.h>
#include <rte_atomic.h>
#include <rte_dev.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_devargs.h>
#include <rte_flow.h>
#include <rte_interrupts.h>
#include <rte_atomic.h>
#include <rte_debug.h>
#include <rte_mbuf.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include "failsafe_private.h"
* Copyright(c) 2013-2016 Intel Corporation
*/
-#include <rte_ethdev_driver.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_driver.h>
+#include <ethdev_pci.h>
#include <rte_malloc.h>
#include <rte_memzone.h>
#include <rte_string_fns.h>
#include <inttypes.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_common.h>
#include <rte_net.h>
#include "fm10k.h"
#include <inttypes.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_common.h>
#include "fm10k.h"
#include "base/fm10k_type.h"
* Copyright(c) 2017 Huawei Technologies Co., Ltd
*/
-#include<rte_ethdev_driver.h>
+#include<ethdev_driver.h>
#include <rte_bus_pci.h>
#include <rte_hash.h>
#include <rte_jhash.h>
#include <rte_pci.h>
#include <rte_bus_pci.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_pci.h>
#include <rte_mbuf.h>
#include <rte_malloc.h>
#include <rte_memcpy.h>
#include <rte_ethdev.h>
#include <rte_ethdev_core.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include "base/hinic_compat.h"
#include "base/hinic_pmd_cfg.h"
* Copyright(c) 2018-2019 Hisilicon Limited.
*/
-#include <rte_ethdev_pci.h>
+#include <ethdev_pci.h>
#include <rte_io.h>
#include "hns3_ethdev.h"
#include <rte_alarm.h>
#include <rte_bus_pci.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_pci.h>
#include <rte_pci.h>
#include "hns3_ethdev.h"
#define _HNS3_ETHDEV_H_
#include <sys/time.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_byteorder.h>
#include <rte_io.h>
#include <rte_spinlock.h>
#include <linux/pci_regs.h>
#include <rte_alarm.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_pci.h>
#include <rte_io.h>
#include <rte_pci.h>
#include <rte_vfio.h>
* Copyright(c) 2018-2019 Hisilicon Limited.
*/
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_hash.h>
#include <rte_hash_crc.h>
#include <rte_io.h>
* Copyright(c) 2018-2019 Hisilicon Limited.
*/
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_io.h>
#include "hns3_ethdev.h"
*/
#include <rte_eal.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_string_fns.h>
#include <rte_io.h>
* Copyright(c) 2018-2019 Hisilicon Limited.
*/
-#include <rte_ethdev_pci.h>
+#include <ethdev_pci.h>
#include <rte_io.h>
#include "hns3_ethdev.h"
#include <rte_common.h>
#include <rte_cycles.h>
#include <rte_vxlan.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_io.h>
#include <rte_net.h>
#include <rte_malloc.h>
*/
#include <rte_io.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include "hns3_ethdev.h"
#include "hns3_rxtx.h"
#include <arm_sve.h>
#include <rte_io.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include "hns3_ethdev.h"
#include "hns3_rxtx.h"
#include <rte_pci.h>
#include <rte_bus_pci.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_driver.h>
+#include <ethdev_pci.h>
#include <rte_memzone.h>
#include <rte_malloc.h>
#include <rte_memcpy.h>
#include <rte_eal.h>
#include <rte_alarm.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_driver.h>
+#include <ethdev_pci.h>
#include <rte_malloc.h>
#include <rte_dev.h>
#include <stdarg.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_log.h>
#include <rte_memzone.h>
#include <rte_malloc.h>
#include <rte_debug.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_log.h>
#include <rte_malloc.h>
#include <rte_tailq.h>
#include <rte_string_fns.h>
#include <rte_pci.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_malloc.h>
#include <rte_memcpy.h>
#include <rte_mbuf.h>
#include <rte_malloc.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_tcp.h>
#include <rte_sctp.h>
#include <rte_udp.h>
*/
#include <stdint.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_malloc.h>
#include "base/i40e_prototype.h"
*/
#include <stdint.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_malloc.h>
#include "base/i40e_prototype.h"
*/
#include <stdint.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_malloc.h>
#include "base/i40e_prototype.h"
#ifndef _I40E_RXTX_VEC_COMMON_H_
#define _I40E_RXTX_VEC_COMMON_H_
#include <stdint.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_malloc.h>
#include "i40e_ethdev.h"
*/
#include <stdint.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_malloc.h>
#include <rte_vect.h>
*/
#include <stdint.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_malloc.h>
#include "base/i40e_prototype.h"
#include <rte_pci.h>
#include <rte_malloc.h>
-#include "rte_ethdev_driver.h"
+#include "ethdev_driver.h"
#include "base/i40e_type.h"
#include "base/virtchnl.h"
#include "i40e_ethdev.h"
#include <rte_atomic.h>
#include <rte_eal.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_driver.h>
+#include <ethdev_pci.h>
#include <rte_malloc.h>
#include <rte_memzone.h>
#include <rte_dev.h>
#include <stdarg.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_malloc.h>
#include <rte_tailq.h>
#include <stdarg.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_malloc.h>
#include <rte_tailq.h>
#include <rte_debug.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_log.h>
#include <rte_malloc.h>
#include <rte_eth_ctrl.h>
#include <rte_mbuf.h>
#include <rte_malloc.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_tcp.h>
#include <rte_sctp.h>
#include <rte_udp.h>
#ifndef _IAVF_RXTX_VEC_COMMON_H_
#define _IAVF_RXTX_VEC_COMMON_H_
#include <stdint.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_malloc.h>
#include "iavf.h"
*/
#include <stdint.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_malloc.h>
#include "iavf.h"
#include <rte_atomic.h>
#include <rte_eal.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_driver.h>
+#include <ethdev_pci.h>
#include <rte_dev.h>
#include "iavf.h"
#include <stdarg.h>
#include <rte_debug.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_log.h>
#include <rte_malloc.h>
#include <rte_eth_ctrl.h>
#include <rte_atomic.h>
#include <rte_eal.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_driver.h>
+#include <ethdev_pci.h>
#include <rte_malloc.h>
#include <rte_memzone.h>
#include <rte_dev.h>
#ifndef _ICE_DCF_H_
#define _ICE_DCF_H_
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <iavf_prototype.h>
#include <iavf_adminq_cmd.h>
#include <rte_atomic.h>
#include <rte_eal.h>
#include <rte_ether.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_pci.h>
#include <rte_kvargs.h>
#include <rte_malloc.h>
#include <rte_memzone.h>
*/
#include <rte_string_fns.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_pci.h>
#include <stdio.h>
#include <sys/types.h>
#include <rte_kvargs.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include "base/ice_common.h"
#include "base/ice_adminq_cmd.h"
#include <stdarg.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_malloc.h>
#include <rte_tailq.h>
#include <rte_debug.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_log.h>
#include <rte_malloc.h>
#include <rte_eth_ctrl.h>
* Copyright(c) 2018 Intel Corporation
*/
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_net.h>
#include <rte_vect.h>
#include <stdarg.h>
#include <rte_debug.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_log.h>
#include <rte_malloc.h>
#include <rte_eth_ctrl.h>
#include <rte_string_fns.h>
#include <rte_pci.h>
#include <rte_bus_pci.h>
-#include <rte_ethdev_driver.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_driver.h>
+#include <ethdev_pci.h>
#include <rte_malloc.h>
#include <rte_alarm.h>
#include <rte_ethdev.h>
#include <rte_ethdev_core.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_eth_ctrl.h>
#include "igc_ethdev.h"
#include <rte_config.h>
#include <rte_malloc.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_net.h>
#include "igc_logs.h"
#include <rte_pci.h>
#include <rte_bus_pci.h>
#include <rte_ethdev.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_malloc.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_pci.h>
#include "ionic_logs.h"
#include "ionic.h"
*/
#include <rte_malloc.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include "ionic.h"
#include "ionic_logs.h"
#include <rte_malloc.h>
#include <rte_mbuf.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_prefetch.h>
#include <rte_udp.h>
#include <rte_tcp.h>
#include <rte_mbuf.h>
#include <rte_sched.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_io.h>
#include <rte_rawdev.h>
#include <rte_mbuf.h>
#include <rte_flow_driver.h>
-#include <rte_ethdev_driver.h>
-#include <rte_ethdev_vdev.h>
+#include <ethdev_driver.h>
+#include <ethdev_vdev.h>
#include <rte_malloc.h>
#include <rte_memcpy.h>
#include <rte_bus_vdev.h>
#include <rte_io.h>
#include <rte_debug.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_log.h>
#include <rte_malloc.h>
#include <rte_eth_ctrl.h>
#include <rte_mbuf.h>
#include <rte_sched.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_spinlock.h>
#include <rte_io.h>
#include <rte_mbuf.h>
#include <rte_sched.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_io.h>
#include <rte_rawdev.h>
#include <time.h>
#include <rte_atomic.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include "ixgbe_ethdev.h"
#include "ixgbe_bypass_api.h"
#include "rte_pmd_ixgbe.h"
#include <rte_eal.h>
#include <rte_alarm.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_driver.h>
+#include <ethdev_pci.h>
#include <rte_malloc.h>
#include <rte_random.h>
#include <rte_dev.h>
#include <rte_debug.h>
#include <rte_pci.h>
#include <rte_vxlan.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_malloc.h>
#include "ixgbe_logs.h"
#include <rte_eal.h>
#include <rte_alarm.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_malloc.h>
#include <rte_random.h>
#include <rte_dev.h>
* Copyright(c) 2010-2017 Intel Corporation
*/
-#include <rte_ethdev_driver.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_driver.h>
+#include <ethdev_pci.h>
#include <rte_ip.h>
#include <rte_jhash.h>
#include <rte_security_driver.h>
#include <rte_debug.h>
#include <rte_eal.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_memcpy.h>
#include <rte_malloc.h>
#include <rte_random.h>
#include <rte_malloc.h>
#include <rte_mbuf.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_security_driver.h>
#include <rte_prefetch.h>
#include <rte_udp.h>
#ifndef _IXGBE_RXTX_VEC_COMMON_H_
#define _IXGBE_RXTX_VEC_COMMON_H_
#include <stdint.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include "ixgbe_ethdev.h"
#include "ixgbe_rxtx.h"
*/
#include <stdint.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_malloc.h>
#include <rte_vect.h>
*/
#include <stdint.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_malloc.h>
#include "ixgbe_ethdev.h"
#include <rte_pci.h>
#include <rte_malloc.h>
-#include "rte_ethdev_driver.h"
+#include "ethdev_driver.h"
#include "base/ixgbe_type.h"
#include "base/ixgbe_vf.h"
#include "ixgbe_ethdev.h"
* Copyright(c) 2010-2017 Intel Corporation
*/
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include "base/ixgbe_api.h"
#include "base/ixgbe_x550.h"
#include <unistd.h>
#include <rte_string_fns.h>
-#include <rte_ethdev_driver.h>
-#include <rte_ethdev_vdev.h>
+#include <ethdev_driver.h>
+#include <ethdev_vdev.h>
#include <rte_kni.h>
#include <rte_kvargs.h>
#include <rte_malloc.h>
#include <string.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_cycles.h>
#include <rte_malloc.h>
* Copyright(c) 2017 Cavium, Inc
*/
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_cycles.h>
#include "lio_logs.h"
*/
#include <rte_string_fns.h>
-#include <rte_ethdev_driver.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_driver.h>
+#include <ethdev_pci.h>
#include <rte_cycles.h>
#include <rte_malloc.h>
#include <rte_alarm.h>
* Copyright(c) 2017 Cavium, Inc
*/
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_cycles.h>
#include <rte_malloc.h>
#include <rte_version.h>
#include <rte_mbuf.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
-#include <rte_ethdev_vdev.h>
+#include <ethdev_driver.h>
+#include <ethdev_vdev.h>
#include <rte_malloc.h>
#include <rte_kvargs.h>
#include <rte_bus_vdev.h>
#include <rte_version.h>
#include <rte_mbuf.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
-#include <rte_ethdev_vdev.h>
+#include <ethdev_driver.h>
+#include <ethdev_vdev.h>
#include <rte_malloc.h>
#include <rte_kvargs.h>
#include <rte_bus_vdev.h>
#include <sys/queue.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_ether.h>
#include <rte_interrupts.h>
#include <rte_common.h>
#include <rte_dev.h>
#include <rte_errno.h>
-#include <rte_ethdev_driver.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_driver.h>
+#include <ethdev_pci.h>
#include <rte_ether.h>
#include <rte_flow.h>
#include <rte_interrupts.h>
#pragma GCC diagnostic error "-Wpedantic"
#endif
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_ether.h>
#include <rte_interrupts.h>
#include <rte_mempool.h>
#include <rte_bus_pci.h>
#include <rte_errno.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_ether.h>
#include <rte_flow.h>
#include <rte_pci.h>
#include <rte_byteorder.h>
#include <rte_errno.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_ether.h>
#include <rte_flow.h>
#include <rte_flow_driver.h>
#pragma GCC diagnostic error "-Wpedantic"
#endif
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_flow.h>
#include <rte_flow_driver.h>
#include <rte_byteorder.h>
#include <rte_alarm.h>
#include <rte_errno.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_io.h>
#include <rte_interrupts.h>
#include <time.h>
#include <rte_eal.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_string_fns.h>
#include "mlx4.h"
#include <rte_byteorder.h>
#include <rte_common.h>
#include <rte_errno.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_flow.h>
#include <rte_malloc.h>
#include <rte_mbuf.h>
#pragma GCC diagnostic error "-Wpedantic"
#endif
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_mbuf.h>
#include <rte_mempool.h>
#include <rte_common.h>
#include <rte_errno.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_malloc.h>
#include <rte_mbuf.h>
#include <rte_mempool.h>
#include <sys/un.h>
#include <time.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_bus_pci.h>
#include <rte_mbuf.h>
#include <rte_common.h>
#include <time.h>
#include <rte_eal.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_string_fns.h>
#include <mlx5_common_mp.h>
#include <fcntl.h>
#include <rte_malloc.h>
-#include <rte_ethdev_driver.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_driver.h>
+#include <ethdev_pci.h>
#include <rte_pci.h>
#include <rte_bus_pci.h>
#include <rte_common.h>
#include <rte_mbuf.h>
#include <rte_malloc.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_common.h>
#include <mlx5_glue.h>
*/
#include <sys/types.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_common.h>
#include <rte_malloc.h>
#include <rte_hypervisor.h>
#include <errno.h>
#include <rte_malloc.h>
-#include <rte_ethdev_driver.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_driver.h>
+#include <ethdev_pci.h>
#include <rte_pci.h>
#include <rte_bus_pci.h>
#include <rte_common.h>
#include <rte_pci.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_rwlock.h>
#include <rte_interrupts.h>
#include <rte_errno.h>
#ifndef RTE_PMD_MLX5_DEFS_H_
#define RTE_PMD_MLX5_DEFS_H_
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_vxlan.h>
#include "mlx5_autoconf.h"
#include <stdlib.h>
#include <errno.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_bus_pci.h>
#include <rte_mbuf.h>
#include <rte_common.h>
#include <rte_common.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_eal_paging.h>
#include <rte_flow.h>
#include <rte_cycles.h>
#include <rte_common.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_flow.h>
#include <rte_flow_driver.h>
#include <rte_malloc.h>
#include <rte_common.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_flow.h>
#include <rte_flow_driver.h>
#include <rte_malloc.h>
#include <netinet/in.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_common.h>
#include "mlx5_defs.h"
#include <string.h>
#include <rte_malloc.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <mlx5_malloc.h>
#include <errno.h>
#include <string.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <mlx5_glue.h>
#include "mlx5.h"
#include <rte_mbuf.h>
#include <rte_malloc.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_common.h>
#include <rte_interrupts.h>
#include <rte_debug.h>
#include <stdio.h>
#include <unistd.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_common.h>
#include <rte_malloc.h>
#include <unistd.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_interrupts.h>
#include <rte_alarm.h>
#include <rte_cycles.h>
#include <stdint.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_interrupts.h>
#include <rte_alarm.h>
#include <rte_malloc.h>
#include <rte_mbuf.h>
#include <rte_malloc.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_common.h>
#include <rte_eal_paging.h>
#include <stdint.h>
#include <unistd.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_common.h>
#include <rte_malloc.h>
#include <rte_hypervisor.h>
#include <rte_errno.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_interrupts.h>
#include <mlx5_glue.h>
#include <time.h>
#include <rte_eal.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_string_fns.h>
#include <mlx5_common_mp.h>
#include <stdlib.h>
#include <rte_windows.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_pci.h>
#include <mlx5_glue.h>
#include <mlx5_devx_cmds.h>
*/
#include <sys/types.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_common.h>
#include <mlx5.h>
*/
#include <rte_string_fns.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_kvargs.h>
#include <rte_bus_vdev.h>
*/
#include <rte_string_fns.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_kvargs.h>
#include <rte_log.h>
#include <rte_malloc.h>
#include <rte_atomic.h>
#include <rte_branch_prediction.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_cycles.h>
#include <rte_errno.h>
#include <rte_memory.h>
#include <unistd.h>
#include <time.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_ethdev.h>
#include <rte_string_fns.h>
#include <rte_memzone.h>
#include <rte_ether.h>
#include <rte_ethdev.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_lcore.h>
#include <rte_memory.h>
#include <rte_bus_vmbus.h>
#include <netcope/rxmac.h>
#include <netcope/txmac.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_pci.h>
#include <rte_kvargs.h>
#include "nfb_stats.h"
#include <nfb/nfb.h>
#include <nfb/ndp.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_ethdev.h>
#include <rte_malloc.h>
#include <rte_common.h>
#include <rte_log.h>
#include <rte_debug.h>
-#include <rte_ethdev_driver.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_driver.h>
+#include <ethdev_pci.h>
#include <rte_dev.h>
#include <rte_ether.h>
#include <rte_malloc.h>
#ifndef __NFP_CPP_H__
#define __NFP_CPP_H__
-#include <rte_ethdev_pci.h>
+#include <ethdev_pci.h>
#include "nfp-common/nfp_platform.h"
#include "nfp-common/nfp_resid.h"
#include <sys/file.h>
#include <sys/stat.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_pci.h>
#include <rte_string_fns.h>
#include "nfp_cpp.h"
#include <sys/types.h>
#include <rte_byteorder.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_pci.h>
#include "nfp_cpp.h"
#include "nfp_target.h"
*/
#include <rte_mbuf.h>
-#include <rte_ethdev_driver.h>
-#include <rte_ethdev_vdev.h>
+#include <ethdev_driver.h>
+#include <ethdev_vdev.h>
#include <rte_malloc.h>
#include <rte_memcpy.h>
#include <rte_bus_vdev.h>
#include <stdbool.h>
#include <rte_common.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_eventdev.h>
#include <rte_mempool.h>
#include <rte_memory.h>
#include <rte_atomic.h>
#include <rte_common.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_ether.h>
#include <rte_log.h>
#include <rte_mbuf.h>
#ifndef __OCTEONTX_RXTX_H__
#define __OCTEONTX_RXTX_H__
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#define OFFLOAD_FLAGS \
uint16_t rx_offload_flags; \
#include <inttypes.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_pci.h>
#include <rte_io.h>
#include <rte_malloc.h>
#include <rte_mbuf.h>
*/
#include <rte_common.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_pci.h>
#include "otx2_ethdev.h"
* Copyright(C) 2019 Marvell International Ltd.
*/
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include "otx2_ethdev.h"
#include <pcap.h>
#include <rte_cycles.h>
-#include <rte_ethdev_driver.h>
-#include <rte_ethdev_vdev.h>
+#include <ethdev_driver.h>
+#include <ethdev_vdev.h>
#include <rte_kvargs.h>
#include <rte_malloc.h>
#include <rte_mbuf.h>
#include <compat.h>
#include <rte_ethdev.h>
-#include <rte_ethdev_vdev.h>
+#include <ethdev_vdev.h>
#define ETH_ALEN 6
#define GEMAC_NO_PHY BIT(0)
#include <sys/ioctl.h>
#include <sys/epoll.h>
#include <rte_kvargs.h>
-#include <rte_ethdev_vdev.h>
+#include <ethdev_vdev.h>
#include <rte_bus_vdev.h>
#include <rte_ether.h>
#include <dpaa_of.h>
#include <sys/queue.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_driver.h>
+#include <ethdev_pci.h>
#include <rte_dev.h>
#include <rte_ip.h>
#include "rte_eth_ring.h"
#include <rte_mbuf.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_malloc.h>
#include <rte_memcpy.h>
#include <rte_string_fns.h>
#include <rte_pci.h>
#include <rte_bus_pci.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_kvargs.h>
#include <rte_spinlock.h>
#include <rte_atomic.h>
#define _SFC_DP_RX_H
#include <rte_mempool.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include "sfc_dp.h"
#ifndef _SFC_DP_TX_H
#define _SFC_DP_TX_H
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include "sfc_dp.h"
#include "sfc_debug.h"
*/
#include <rte_dev.h>
-#include <rte_ethdev_driver.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_driver.h>
+#include <ethdev_pci.h>
#include <rte_pci.h>
#include <rte_bus_pci.h>
#include <rte_errno.h>
#ifndef _SFC_EV_H_
#define _SFC_EV_H_
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include "efx.h"
#include <rte_byteorder.h>
#include <rte_tailq.h>
#include <rte_common.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_ether.h>
#include <rte_flow.h>
#include <rte_flow_driver.h>
#include <rte_mbuf.h>
#include <rte_mempool.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include "efx.h"
#define _SFC_TX_H
#include <rte_mbuf.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include "efx.h"
#include <stdlib.h>
#include <string.h>
-#include <rte_ethdev_driver.h>
-#include <rte_ethdev_vdev.h>
+#include <ethdev_driver.h>
+#include <ethdev_vdev.h>
#include <rte_malloc.h>
#include <rte_bus_vdev.h>
#include <rte_kvargs.h>
#include <rte_pipeline.h>
#include <rte_ethdev_core.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_tm_driver.h>
#include <rte_flow_driver.h>
#include <rte_mtr_driver.h>
#include <libsze2.h>
#include <rte_mbuf.h>
-#include <rte_ethdev_driver.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_driver.h>
+#include <ethdev_pci.h>
#include <rte_malloc.h>
#include <rte_memcpy.h>
#include <rte_kvargs.h>
#include <rte_byteorder.h>
#include <rte_common.h>
#include <rte_mbuf.h>
-#include <rte_ethdev_driver.h>
-#include <rte_ethdev_vdev.h>
+#include <ethdev_driver.h>
+#include <ethdev_vdev.h>
#include <rte_malloc.h>
#include <rte_bus_vdev.h>
#include <rte_kvargs.h>
#include <linux/if_tun.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_ether.h>
#include <rte_gso.h>
#include "tap_log.h"
#include <rte_dev.h>
#include <rte_eal.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_driver.h>
+#include <ethdev_pci.h>
#include <rte_interrupts.h>
#include <rte_log.h>
#include <rte_memory.h>
#ifndef __THUNDERX_NICVF_ETHDEV_H__
#define __THUNDERX_NICVF_ETHDEV_H__
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#define THUNDERX_NICVF_PMD_VERSION "2.0"
#define THUNDERX_REG_BYTES 8
#include <rte_common.h>
#include <rte_cycles.h>
#include <rte_errno.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_ether.h>
#include <rte_log.h>
#include <rte_mbuf.h>
#define __THUNDERX_NICVF_RXTX_H__
#include <rte_byteorder.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#define NICVF_RX_OFFLOAD_NONE 0x1
#define NICVF_RX_OFFLOAD_CKSUM 0x2
#include <rte_mempool.h>
#include <rte_mbuf.h>
#include <rte_interrupts.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_memory.h>
struct nicvf_rbdr {
#include <stdint.h>
#include <string.h>
#include <rte_common.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_pci.h>
#include <rte_interrupts.h>
#include <rte_log.h>
* Copyright(c) 2015-2020
*/
-#include <rte_ethdev_pci.h>
+#include <ethdev_pci.h>
#include <rte_security_driver.h>
#include <rte_cryptodev.h>
#include <rte_debug.h>
#include <rte_eal.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_memcpy.h>
#include <rte_malloc.h>
#include <rte_random.h>
#include <rte_log.h>
#include <rte_debug.h>
#include <rte_ethdev.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_security_driver.h>
#include <rte_memzone.h>
#include <rte_atomic.h>
#include <sys/epoll.h>
#include <rte_mbuf.h>
-#include <rte_ethdev_driver.h>
-#include <rte_ethdev_vdev.h>
+#include <ethdev_driver.h>
+#include <ethdev_vdev.h>
#include <rte_malloc.h>
#include <rte_memcpy.h>
#include <rte_bus_vdev.h>
#include <errno.h>
#include <unistd.h>
-#include <rte_ethdev_driver.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_driver.h>
+#include <ethdev_pci.h>
#include <rte_memcpy.h>
#include <rte_string_fns.h>
#include <rte_memzone.h>
#include <rte_pci.h>
#include <rte_bus_pci.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
struct virtqueue;
struct virtnet_ctl;
#include <rte_malloc.h>
#include <rte_mbuf.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_prefetch.h>
#include <rte_string_fns.h>
#include <rte_errno.h>
#include <rte_malloc.h>
#include <rte_mbuf.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_prefetch.h>
#include <rte_string_fns.h>
#include <rte_errno.h>
#include <rte_branch_prediction.h>
#include <rte_cycles.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_errno.h>
#include <rte_memory.h>
#include <rte_mempool.h>
#include <rte_branch_prediction.h>
#include <rte_cycles.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_errno.h>
#include <rte_memory.h>
#include <rte_mempool.h>
#include <rte_branch_prediction.h>
#include <rte_cycles.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_errno.h>
#include <rte_memory.h>
#include <rte_mempool.h>
#include <rte_malloc.h>
#include <rte_kvargs.h>
-#include <rte_ethdev_vdev.h>
+#include <ethdev_vdev.h>
#include <rte_bus_vdev.h>
#include <rte_alarm.h>
#include <rte_cycles.h>
#include <rte_eal.h>
#include <rte_alarm.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
-#include <rte_ethdev_pci.h>
+#include <ethdev_driver.h>
+#include <ethdev_pci.h>
#include <rte_string_fns.h>
#include <rte_malloc.h>
#include <rte_dev.h>
#include <rte_malloc.h>
#include <rte_mbuf.h>
#include <rte_ether.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_prefetch.h>
#include <rte_ip.h>
#include <rte_udp.h>
--- /dev/null
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2017 Intel Corporation
+ */
+
+#ifndef _RTE_ETHDEV_DRIVER_H_
+#define _RTE_ETHDEV_DRIVER_H_
+
+/**
+ * @file
+ *
+ * RTE Ethernet Device PMD API
+ *
+ * These APIs for the use from Ethernet drivers, user applications shouldn't
+ * use them.
+ *
+ */
+
+#include <rte_ethdev.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**< @internal Declaration of the hairpin peer queue information structure. */
+struct rte_hairpin_peer_info;
+
+/*
+ * Definitions of all functions exported by an Ethernet driver through the
+ * generic structure of type *eth_dev_ops* supplied in the *rte_eth_dev*
+ * structure associated with an Ethernet device.
+ */
+
+typedef int (*eth_dev_configure_t)(struct rte_eth_dev *dev);
+/**< @internal Ethernet device configuration. */
+
+typedef int (*eth_dev_start_t)(struct rte_eth_dev *dev);
+/**< @internal Function used to start a configured Ethernet device. */
+
+typedef int (*eth_dev_stop_t)(struct rte_eth_dev *dev);
+/**< @internal Function used to stop a configured Ethernet device. */
+
+typedef int (*eth_dev_set_link_up_t)(struct rte_eth_dev *dev);
+/**< @internal Function used to link up a configured Ethernet device. */
+
+typedef int (*eth_dev_set_link_down_t)(struct rte_eth_dev *dev);
+/**< @internal Function used to link down a configured Ethernet device. */
+
+typedef int (*eth_dev_close_t)(struct rte_eth_dev *dev);
+/**< @internal Function used to close a configured Ethernet device. */
+
+typedef int (*eth_dev_reset_t)(struct rte_eth_dev *dev);
+/** <@internal Function used to reset a configured Ethernet device. */
+
+typedef int (*eth_is_removed_t)(struct rte_eth_dev *dev);
+/**< @internal Function used to detect an Ethernet device removal. */
+
+/**
+ * @internal
+ * Function used to enable the Rx promiscuous mode of an Ethernet device.
+ *
+ * @param dev
+ * ethdev handle of port.
+ *
+ * @return
+ * Negative errno value on error, 0 on success.
+ *
+ * @retval 0
+ * Success, promiscuous mode is enabled.
+ * @retval -ENOTSUP
+ * Promiscuous mode is not supported.
+ * @retval -ENODEV
+ * Device is gone.
+ * @retval -E_RTE_SECONDARY
+ * Function was called from a secondary process instance and not supported.
+ * @retval -ETIMEDOUT
+ * Attempt to enable promiscuos mode failed because of timeout.
+ * @retval -EAGAIN
+ * Failed to enable promiscuous mode.
+ */
+typedef int (*eth_promiscuous_enable_t)(struct rte_eth_dev *dev);
+
+/**
+ * @internal
+ * Function used to disable the Rx promiscuous mode of an Ethernet device.
+ *
+ * @param dev
+ * ethdev handle of port.
+ *
+ * @return
+ * Negative errno value on error, 0 on success.
+ *
+ * @retval 0
+ * Success, promiscuous mode is disabled.
+ * @retval -ENOTSUP
+ * Promiscuous mode disabling is not supported.
+ * @retval -ENODEV
+ * Device is gone.
+ * @retval -E_RTE_SECONDARY
+ * Function was called from a secondary process instance and not supported.
+ * @retval -ETIMEDOUT
+ * Attempt to disable promiscuos mode failed because of timeout.
+ * @retval -EAGAIN
+ * Failed to disable promiscuous mode.
+ */
+typedef int (*eth_promiscuous_disable_t)(struct rte_eth_dev *dev);
+
+/**
+ * @internal
+ * Enable the receipt of all multicast packets by an Ethernet device.
+ *
+ * @param dev
+ * ethdev handle of port.
+ *
+ * @return
+ * Negative errno value on error, 0 on success.
+ *
+ * @retval 0
+ * Success, all-multicast mode is enabled.
+ * @retval -ENOTSUP
+ * All-multicast mode is not supported.
+ * @retval -ENODEV
+ * Device is gone.
+ * @retval -E_RTE_SECONDARY
+ * Function was called from a secondary process instance and not supported.
+ * @retval -ETIMEDOUT
+ * Attempt to enable all-multicast mode failed because of timeout.
+ * @retval -EAGAIN
+ * Failed to enable all-multicast mode.
+ */
+typedef int (*eth_allmulticast_enable_t)(struct rte_eth_dev *dev);
+
+/**
+ * @internal
+ * Disable the receipt of all multicast packets by an Ethernet device.
+ *
+ * @param dev
+ * ethdev handle of port.
+ *
+ * @return
+ * Negative errno value on error, 0 on success.
+ *
+ * @retval 0
+ * Success, all-multicast mode is disabled.
+ * @retval -ENOTSUP
+ * All-multicast mode disabling is not supported.
+ * @retval -ENODEV
+ * Device is gone.
+ * @retval -E_RTE_SECONDARY
+ * Function was called from a secondary process instance and not supported.
+ * @retval -ETIMEDOUT
+ * Attempt to disable all-multicast mode failed because of timeout.
+ * @retval -EAGAIN
+ * Failed to disable all-multicast mode.
+ */
+typedef int (*eth_allmulticast_disable_t)(struct rte_eth_dev *dev);
+
+typedef int (*eth_link_update_t)(struct rte_eth_dev *dev,
+ int wait_to_complete);
+/**< @internal Get link speed, duplex mode and state (up/down) of an Ethernet device. */
+
+typedef int (*eth_stats_get_t)(struct rte_eth_dev *dev,
+ struct rte_eth_stats *igb_stats);
+/**< @internal Get global I/O statistics of an Ethernet device. */
+
+/**
+ * @internal
+ * Reset global I/O statistics of an Ethernet device to 0.
+ *
+ * @param dev
+ * ethdev handle of port.
+ *
+ * @return
+ * Negative errno value on error, 0 on success.
+ *
+ * @retval 0
+ * Success, statistics has been reset.
+ * @retval -ENOTSUP
+ * Resetting statistics is not supported.
+ * @retval -EINVAL
+ * Resetting statistics is not valid.
+ * @retval -ENOMEM
+ * Not enough memory to get the stats.
+ */
+typedef int (*eth_stats_reset_t)(struct rte_eth_dev *dev);
+
+typedef int (*eth_xstats_get_t)(struct rte_eth_dev *dev,
+ struct rte_eth_xstat *stats, unsigned int n);
+/**< @internal Get extended stats of an Ethernet device. */
+
+typedef int (*eth_xstats_get_by_id_t)(struct rte_eth_dev *dev,
+ const uint64_t *ids,
+ uint64_t *values,
+ unsigned int n);
+/**< @internal Get extended stats of an Ethernet device. */
+
+/**
+ * @internal
+ * Reset extended stats of an Ethernet device.
+ *
+ * @param dev
+ * ethdev handle of port.
+ *
+ * @return
+ * Negative errno value on error, 0 on success.
+ *
+ * @retval 0
+ * Success, statistics has been reset.
+ * @retval -ENOTSUP
+ * Resetting statistics is not supported.
+ * @retval -EINVAL
+ * Resetting statistics is not valid.
+ * @retval -ENOMEM
+ * Not enough memory to get the stats.
+ */
+typedef int (*eth_xstats_reset_t)(struct rte_eth_dev *dev);
+
+typedef int (*eth_xstats_get_names_t)(struct rte_eth_dev *dev,
+ struct rte_eth_xstat_name *xstats_names, unsigned int size);
+/**< @internal Get names of extended stats of an Ethernet device. */
+
+typedef int (*eth_xstats_get_names_by_id_t)(struct rte_eth_dev *dev,
+ struct rte_eth_xstat_name *xstats_names, const uint64_t *ids,
+ unsigned int size);
+/**< @internal Get names of extended stats of an Ethernet device. */
+
+typedef int (*eth_queue_stats_mapping_set_t)(struct rte_eth_dev *dev,
+ uint16_t queue_id,
+ uint8_t stat_idx,
+ uint8_t is_rx);
+/**< @internal Set a queue statistics mapping for a tx/rx queue of an Ethernet device. */
+
+typedef int (*eth_dev_infos_get_t)(struct rte_eth_dev *dev,
+ struct rte_eth_dev_info *dev_info);
+/**< @internal Get specific information of an Ethernet device. */
+
+typedef const uint32_t *(*eth_dev_supported_ptypes_get_t)(struct rte_eth_dev *dev);
+/**< @internal Get supported ptypes of an Ethernet device. */
+
+/**
+ * @internal
+ * Inform Ethernet device about reduced range of packet types to handle.
+ *
+ * @param dev
+ * The Ethernet device identifier.
+ * @param ptype_mask
+ * The ptype family that application is interested in should be bitwise OR of
+ * RTE_PTYPE_*_MASK or 0.
+ * @return
+ * - (0) if Success.
+ */
+typedef int (*eth_dev_ptypes_set_t)(struct rte_eth_dev *dev,
+ uint32_t ptype_mask);
+
+typedef int (*eth_queue_start_t)(struct rte_eth_dev *dev,
+ uint16_t queue_id);
+/**< @internal Start rx and tx of a queue of an Ethernet device. */
+
+typedef int (*eth_queue_stop_t)(struct rte_eth_dev *dev,
+ uint16_t queue_id);
+/**< @internal Stop rx and tx of a queue of an Ethernet device. */
+
+typedef int (*eth_rx_queue_setup_t)(struct rte_eth_dev *dev,
+ uint16_t rx_queue_id,
+ uint16_t nb_rx_desc,
+ unsigned int socket_id,
+ const struct rte_eth_rxconf *rx_conf,
+ struct rte_mempool *mb_pool);
+/**< @internal Set up a receive queue of an Ethernet device. */
+
+typedef int (*eth_tx_queue_setup_t)(struct rte_eth_dev *dev,
+ uint16_t tx_queue_id,
+ uint16_t nb_tx_desc,
+ unsigned int socket_id,
+ const struct rte_eth_txconf *tx_conf);
+/**< @internal Setup a transmit queue of an Ethernet device. */
+
+typedef int (*eth_rx_enable_intr_t)(struct rte_eth_dev *dev,
+ uint16_t rx_queue_id);
+/**< @internal Enable interrupt of a receive queue of an Ethernet device. */
+
+typedef int (*eth_rx_disable_intr_t)(struct rte_eth_dev *dev,
+ uint16_t rx_queue_id);
+/**< @internal Disable interrupt of a receive queue of an Ethernet device. */
+
+typedef void (*eth_queue_release_t)(void *queue);
+/**< @internal Release memory resources allocated by given RX/TX queue. */
+
+typedef int (*eth_fw_version_get_t)(struct rte_eth_dev *dev,
+ char *fw_version, size_t fw_size);
+/**< @internal Get firmware information of an Ethernet device. */
+
+typedef int (*eth_tx_done_cleanup_t)(void *txq, uint32_t free_cnt);
+/**< @internal Force mbufs to be from TX ring. */
+
+typedef void (*eth_rxq_info_get_t)(struct rte_eth_dev *dev,
+ uint16_t rx_queue_id, struct rte_eth_rxq_info *qinfo);
+
+typedef void (*eth_txq_info_get_t)(struct rte_eth_dev *dev,
+ uint16_t tx_queue_id, struct rte_eth_txq_info *qinfo);
+
+typedef int (*eth_burst_mode_get_t)(struct rte_eth_dev *dev,
+ uint16_t queue_id, struct rte_eth_burst_mode *mode);
+
+typedef int (*mtu_set_t)(struct rte_eth_dev *dev, uint16_t mtu);
+/**< @internal Set MTU. */
+
+typedef int (*vlan_filter_set_t)(struct rte_eth_dev *dev,
+ uint16_t vlan_id,
+ int on);
+/**< @internal filtering of a VLAN Tag Identifier by an Ethernet device. */
+
+typedef int (*vlan_tpid_set_t)(struct rte_eth_dev *dev,
+ enum rte_vlan_type type, uint16_t tpid);
+/**< @internal set the outer/inner VLAN-TPID by an Ethernet device. */
+
+typedef int (*vlan_offload_set_t)(struct rte_eth_dev *dev, int mask);
+/**< @internal set VLAN offload function by an Ethernet device. */
+
+typedef int (*vlan_pvid_set_t)(struct rte_eth_dev *dev,
+ uint16_t vlan_id,
+ int on);
+/**< @internal set port based TX VLAN insertion by an Ethernet device. */
+
+typedef void (*vlan_strip_queue_set_t)(struct rte_eth_dev *dev,
+ uint16_t rx_queue_id,
+ int on);
+/**< @internal VLAN stripping enable/disable by an queue of Ethernet device. */
+
+typedef int (*flow_ctrl_get_t)(struct rte_eth_dev *dev,
+ struct rte_eth_fc_conf *fc_conf);
+/**< @internal Get current flow control parameter on an Ethernet device */
+
+typedef int (*flow_ctrl_set_t)(struct rte_eth_dev *dev,
+ struct rte_eth_fc_conf *fc_conf);
+/**< @internal Setup flow control parameter on an Ethernet device */
+
+typedef int (*priority_flow_ctrl_set_t)(struct rte_eth_dev *dev,
+ struct rte_eth_pfc_conf *pfc_conf);
+/**< @internal Setup priority flow control parameter on an Ethernet device */
+
+typedef int (*reta_update_t)(struct rte_eth_dev *dev,
+ struct rte_eth_rss_reta_entry64 *reta_conf,
+ uint16_t reta_size);
+/**< @internal Update RSS redirection table on an Ethernet device */
+
+typedef int (*reta_query_t)(struct rte_eth_dev *dev,
+ struct rte_eth_rss_reta_entry64 *reta_conf,
+ uint16_t reta_size);
+/**< @internal Query RSS redirection table on an Ethernet device */
+
+typedef int (*rss_hash_update_t)(struct rte_eth_dev *dev,
+ struct rte_eth_rss_conf *rss_conf);
+/**< @internal Update RSS hash configuration of an Ethernet device */
+
+typedef int (*rss_hash_conf_get_t)(struct rte_eth_dev *dev,
+ struct rte_eth_rss_conf *rss_conf);
+/**< @internal Get current RSS hash configuration of an Ethernet device */
+
+typedef int (*eth_dev_led_on_t)(struct rte_eth_dev *dev);
+/**< @internal Turn on SW controllable LED on an Ethernet device */
+
+typedef int (*eth_dev_led_off_t)(struct rte_eth_dev *dev);
+/**< @internal Turn off SW controllable LED on an Ethernet device */
+
+typedef void (*eth_mac_addr_remove_t)(struct rte_eth_dev *dev, uint32_t index);
+/**< @internal Remove MAC address from receive address register */
+
+typedef int (*eth_mac_addr_add_t)(struct rte_eth_dev *dev,
+ struct rte_ether_addr *mac_addr,
+ uint32_t index,
+ uint32_t vmdq);
+/**< @internal Set a MAC address into Receive Address Register */
+
+typedef int (*eth_mac_addr_set_t)(struct rte_eth_dev *dev,
+ struct rte_ether_addr *mac_addr);
+/**< @internal Set a MAC address into Receive Address Register */
+
+typedef int (*eth_uc_hash_table_set_t)(struct rte_eth_dev *dev,
+ struct rte_ether_addr *mac_addr,
+ uint8_t on);
+/**< @internal Set a Unicast Hash bitmap */
+
+typedef int (*eth_uc_all_hash_table_set_t)(struct rte_eth_dev *dev,
+ uint8_t on);
+/**< @internal Set all Unicast Hash bitmap */
+
+typedef int (*eth_set_queue_rate_limit_t)(struct rte_eth_dev *dev,
+ uint16_t queue_idx,
+ uint16_t tx_rate);
+/**< @internal Set queue TX rate */
+
+typedef int (*eth_mirror_rule_set_t)(struct rte_eth_dev *dev,
+ struct rte_eth_mirror_conf *mirror_conf,
+ uint8_t rule_id,
+ uint8_t on);
+/**< @internal Add a traffic mirroring rule on an Ethernet device */
+
+typedef int (*eth_mirror_rule_reset_t)(struct rte_eth_dev *dev,
+ uint8_t rule_id);
+/**< @internal Remove a traffic mirroring rule on an Ethernet device */
+
+typedef int (*eth_udp_tunnel_port_add_t)(struct rte_eth_dev *dev,
+ struct rte_eth_udp_tunnel *tunnel_udp);
+/**< @internal Add tunneling UDP port */
+
+typedef int (*eth_udp_tunnel_port_del_t)(struct rte_eth_dev *dev,
+ struct rte_eth_udp_tunnel *tunnel_udp);
+/**< @internal Delete tunneling UDP port */
+
+typedef int (*eth_set_mc_addr_list_t)(struct rte_eth_dev *dev,
+ struct rte_ether_addr *mc_addr_set,
+ uint32_t nb_mc_addr);
+/**< @internal set the list of multicast addresses on an Ethernet device */
+
+typedef int (*eth_timesync_enable_t)(struct rte_eth_dev *dev);
+/**< @internal Function used to enable IEEE1588/802.1AS timestamping. */
+
+typedef int (*eth_timesync_disable_t)(struct rte_eth_dev *dev);
+/**< @internal Function used to disable IEEE1588/802.1AS timestamping. */
+
+typedef int (*eth_timesync_read_rx_timestamp_t)(struct rte_eth_dev *dev,
+ struct timespec *timestamp,
+ uint32_t flags);
+/**< @internal Function used to read an RX IEEE1588/802.1AS timestamp. */
+
+typedef int (*eth_timesync_read_tx_timestamp_t)(struct rte_eth_dev *dev,
+ struct timespec *timestamp);
+/**< @internal Function used to read a TX IEEE1588/802.1AS timestamp. */
+
+typedef int (*eth_timesync_adjust_time)(struct rte_eth_dev *dev, int64_t);
+/**< @internal Function used to adjust the device clock */
+
+typedef int (*eth_timesync_read_time)(struct rte_eth_dev *dev,
+ struct timespec *timestamp);
+/**< @internal Function used to get time from the device clock. */
+
+typedef int (*eth_timesync_write_time)(struct rte_eth_dev *dev,
+ const struct timespec *timestamp);
+/**< @internal Function used to get time from the device clock */
+
+typedef int (*eth_read_clock)(struct rte_eth_dev *dev,
+ uint64_t *timestamp);
+/**< @internal Function used to get the current value of the device clock. */
+
+typedef int (*eth_get_reg_t)(struct rte_eth_dev *dev,
+ struct rte_dev_reg_info *info);
+/**< @internal Retrieve registers */
+
+typedef int (*eth_get_eeprom_length_t)(struct rte_eth_dev *dev);
+/**< @internal Retrieve eeprom size */
+
+typedef int (*eth_get_eeprom_t)(struct rte_eth_dev *dev,
+ struct rte_dev_eeprom_info *info);
+/**< @internal Retrieve eeprom data */
+
+typedef int (*eth_set_eeprom_t)(struct rte_eth_dev *dev,
+ struct rte_dev_eeprom_info *info);
+/**< @internal Program eeprom data */
+
+typedef int (*eth_get_module_info_t)(struct rte_eth_dev *dev,
+ struct rte_eth_dev_module_info *modinfo);
+/**< @internal Retrieve type and size of plugin module eeprom */
+
+typedef int (*eth_get_module_eeprom_t)(struct rte_eth_dev *dev,
+ struct rte_dev_eeprom_info *info);
+/**< @internal Retrieve plugin module eeprom data */
+
+/**
+ * Feature filter types
+ */
+enum rte_filter_type {
+ RTE_ETH_FILTER_NONE = 0,
+ RTE_ETH_FILTER_ETHERTYPE,
+ RTE_ETH_FILTER_FLEXIBLE,
+ RTE_ETH_FILTER_SYN,
+ RTE_ETH_FILTER_NTUPLE,
+ RTE_ETH_FILTER_TUNNEL,
+ RTE_ETH_FILTER_FDIR,
+ RTE_ETH_FILTER_HASH,
+ RTE_ETH_FILTER_L2_TUNNEL,
+ RTE_ETH_FILTER_GENERIC,
+};
+
+/**
+ * Generic operations on filters
+ */
+enum rte_filter_op {
+ RTE_ETH_FILTER_GET, /**< get flow API ops */
+};
+
+typedef int (*eth_filter_ctrl_t)(struct rte_eth_dev *dev,
+ enum rte_filter_type filter_type,
+ enum rte_filter_op filter_op,
+ void *arg);
+/**< @internal Take operations to assigned filter type on an Ethernet device */
+
+typedef int (*eth_tm_ops_get_t)(struct rte_eth_dev *dev, void *ops);
+/**< @internal Get Traffic Management (TM) operations on an Ethernet device */
+
+typedef int (*eth_mtr_ops_get_t)(struct rte_eth_dev *dev, void *ops);
+/**< @internal Get Traffic Metering and Policing (MTR) operations */
+
+typedef int (*eth_get_dcb_info)(struct rte_eth_dev *dev,
+ struct rte_eth_dcb_info *dcb_info);
+/**< @internal Get dcb information on an Ethernet device */
+
+typedef int (*eth_pool_ops_supported_t)(struct rte_eth_dev *dev,
+ const char *pool);
+/**< @internal Test if a port supports specific mempool ops */
+
+/**
+ * @internal
+ * Get the hairpin capabilities.
+ *
+ * @param dev
+ * ethdev handle of port.
+ * @param cap
+ * returns the hairpin capabilities from the device.
+ *
+ * @return
+ * Negative errno value on error, 0 on success.
+ *
+ * @retval 0
+ * Success, hairpin is supported.
+ * @retval -ENOTSUP
+ * Hairpin is not supported.
+ */
+typedef int (*eth_hairpin_cap_get_t)(struct rte_eth_dev *dev,
+ struct rte_eth_hairpin_cap *cap);
+
+/**
+ * @internal
+ * Setup RX hairpin queue.
+ *
+ * @param dev
+ * ethdev handle of port.
+ * @param rx_queue_id
+ * the selected RX queue index.
+ * @param nb_rx_desc
+ * the requested number of descriptors for this queue. 0 - use PMD default.
+ * @param conf
+ * the RX hairpin configuration structure.
+ *
+ * @return
+ * Negative errno value on error, 0 on success.
+ *
+ * @retval 0
+ * Success, hairpin is supported.
+ * @retval -ENOTSUP
+ * Hairpin is not supported.
+ * @retval -EINVAL
+ * One of the parameters is invalid.
+ * @retval -ENOMEM
+ * Unable to allocate resources.
+ */
+typedef int (*eth_rx_hairpin_queue_setup_t)
+ (struct rte_eth_dev *dev, uint16_t rx_queue_id,
+ uint16_t nb_rx_desc,
+ const struct rte_eth_hairpin_conf *conf);
+
+/**
+ * @internal
+ * Setup TX hairpin queue.
+ *
+ * @param dev
+ * ethdev handle of port.
+ * @param tx_queue_id
+ * the selected TX queue index.
+ * @param nb_tx_desc
+ * the requested number of descriptors for this queue. 0 - use PMD default.
+ * @param conf
+ * the TX hairpin configuration structure.
+ *
+ * @return
+ * Negative errno value on error, 0 on success.
+ *
+ * @retval 0
+ * Success, hairpin is supported.
+ * @retval -ENOTSUP
+ * Hairpin is not supported.
+ * @retval -EINVAL
+ * One of the parameters is invalid.
+ * @retval -ENOMEM
+ * Unable to allocate resources.
+ */
+typedef int (*eth_tx_hairpin_queue_setup_t)
+ (struct rte_eth_dev *dev, uint16_t tx_queue_id,
+ uint16_t nb_tx_desc,
+ const struct rte_eth_hairpin_conf *hairpin_conf);
+
+/**
+ * @internal
+ * Get Forward Error Correction(FEC) capability.
+ *
+ * @param dev
+ * ethdev handle of port.
+ * @param speed_fec_capa
+ * speed_fec_capa is out only with per-speed capabilities.
+ * @param num
+ * a number of elements in an speed_fec_capa array.
+ *
+ * @return
+ * Negative errno value on error, positive value on success.
+ *
+ * @retval positive value
+ * A non-negative value lower or equal to num: success. The return value
+ * is the number of entries filled in the fec capa array.
+ * A non-negative value higher than num: error, the given fec capa array
+ * is too small. The return value corresponds to the num that should
+ * be given to succeed. The entries in the fec capa array are not valid
+ * and shall not be used by the caller.
+ * @retval -ENOTSUP
+ * Operation is not supported.
+ * @retval -EIO
+ * Device is removed.
+ * @retval -EINVAL
+ * *num* or *speed_fec_capa* invalid.
+ */
+typedef int (*eth_fec_get_capability_t)(struct rte_eth_dev *dev,
+ struct rte_eth_fec_capa *speed_fec_capa, unsigned int num);
+
+/**
+ * @internal
+ * Get Forward Error Correction(FEC) mode.
+ *
+ * @param dev
+ * ethdev handle of port.
+ * @param fec_capa
+ * a bitmask of enabled FEC modes. If AUTO bit is set, other
+ * bits specify FEC modes which may be negotiated. If AUTO
+ * bit is clear, specify FEC modes to be used (only one valid
+ * mode per speed may be set).
+ *
+ * @return
+ * Negative errno value on error, 0 on success.
+ *
+ * @retval 0
+ * Success, get FEC success.
+ * @retval -ENOTSUP
+ * Operation is not supported.
+ * @retval -EIO
+ * Device is removed.
+ */
+typedef int (*eth_fec_get_t)(struct rte_eth_dev *dev,
+ uint32_t *fec_capa);
+
+/**
+ * @internal
+ * Set Forward Error Correction(FEC) mode.
+ *
+ * @param dev
+ * ethdev handle of port.
+ * @param fec_capa
+ * bitmask of allowed FEC modes. It must be only one
+ * if AUTO is disabled. If AUTO is enabled, other
+ * bits specify FEC modes which may be negotiated.
+ *
+ * @return
+ * Negative errno value on error, 0 on success.
+ *
+ * @retval 0
+ * Success, set FEC success.
+ * @retval -ENOTSUP
+ * Operation is not supported.
+ * @retval -EINVAL
+ * Unsupported FEC mode requested.
+ * @retval -EIO
+ * Device is removed.
+ */
+typedef int (*eth_fec_set_t)(struct rte_eth_dev *dev, uint32_t fec_capa);
+
+/**
+ * @internal
+ * Get all hairpin Tx/Rx peer ports of the current device, if any.
+ *
+ * @param dev
+ * ethdev handle of port.
+ * @param peer_ports
+ * array to save the ports list.
+ * @param len
+ * array length.
+ * @param direction
+ * value to decide the current to peer direction
+ * positive - used as Tx to get all peer Rx ports.
+ * zero - used as Rx to get all peer Tx ports.
+ *
+ * @return
+ * Negative errno value on error, 0 or positive on success.
+ *
+ * @retval 0
+ * Success, no peer ports.
+ * @retval >0
+ * Actual number of the peer ports.
+ * @retval -ENOTSUP
+ * Get peer ports API is not supported.
+ * @retval -EINVAL
+ * One of the parameters is invalid.
+ */
+typedef int (*hairpin_get_peer_ports_t)(struct rte_eth_dev *dev,
+ uint16_t *peer_ports, size_t len,
+ uint32_t direction);
+
+/**
+ * @internal
+ * Bind all hairpin Tx queues of one port to the Rx queues of the peer port.
+ *
+ * @param dev
+ * ethdev handle of port.
+ * @param rx_port
+ * the peer Rx port.
+ *
+ * @return
+ * Negative errno value on error, 0 on success.
+ *
+ * @retval 0
+ * Success, bind successfully.
+ * @retval -ENOTSUP
+ * Bind API is not supported.
+ * @retval -EINVAL
+ * One of the parameters is invalid.
+ * @retval -EBUSY
+ * Device is not started.
+ */
+typedef int (*eth_hairpin_bind_t)(struct rte_eth_dev *dev,
+ uint16_t rx_port);
+
+/**
+ * @internal
+ * Unbind all hairpin Tx queues of one port from the Rx queues of the peer port.
+ *
+ * @param dev
+ * ethdev handle of port.
+ * @param rx_port
+ * the peer Rx port.
+ *
+ * @return
+ * Negative errno value on error, 0 on success.
+ *
+ * @retval 0
+ * Success, unbind successfully.
+ * @retval -ENOTSUP
+ * Bind API is not supported.
+ * @retval -EINVAL
+ * One of the parameters is invalid.
+ * @retval -EBUSY
+ * Device is already stopped.
+ */
+typedef int (*eth_hairpin_unbind_t)(struct rte_eth_dev *dev,
+ uint16_t rx_port);
+
+typedef int (*eth_hairpin_queue_peer_update_t)
+ (struct rte_eth_dev *dev, uint16_t peer_queue,
+ struct rte_hairpin_peer_info *current_info,
+ struct rte_hairpin_peer_info *peer_info, uint32_t direction);
+/**< @internal Update and fetch peer queue information. */
+
+typedef int (*eth_hairpin_queue_peer_bind_t)
+ (struct rte_eth_dev *dev, uint16_t cur_queue,
+ struct rte_hairpin_peer_info *peer_info, uint32_t direction);
+/**< @internal Bind peer queue to the current queue with fetched information. */
+
+typedef int (*eth_hairpin_queue_peer_unbind_t)
+ (struct rte_eth_dev *dev, uint16_t cur_queue, uint32_t direction);
+/**< @internal Unbind peer queue from the current queue. */
+
+/**
+ * @internal
+ * Get address of memory location whose contents will change whenever there is
+ * new data to be received on an Rx queue.
+ *
+ * @param rxq
+ * Ethdev queue pointer.
+ * @param pmc
+ * The pointer to power-optimized monitoring condition structure.
+ * @return
+ * Negative errno value on error, 0 on success.
+ *
+ * @retval 0
+ * Success
+ * @retval -EINVAL
+ * Invalid parameters
+ */
+typedef int (*eth_get_monitor_addr_t)(void *rxq,
+ struct rte_power_monitor_cond *pmc);
+
+/**
+ * @internal A structure containing the functions exported by an Ethernet driver.
+ */
+struct eth_dev_ops {
+ eth_dev_configure_t dev_configure; /**< Configure device. */
+ eth_dev_start_t dev_start; /**< Start device. */
+ eth_dev_stop_t dev_stop; /**< Stop device. */
+ eth_dev_set_link_up_t dev_set_link_up; /**< Device link up. */
+ eth_dev_set_link_down_t dev_set_link_down; /**< Device link down. */
+ eth_dev_close_t dev_close; /**< Close device. */
+ eth_dev_reset_t dev_reset; /**< Reset device. */
+ eth_link_update_t link_update; /**< Get device link state. */
+ eth_is_removed_t is_removed;
+ /**< Check if the device was physically removed. */
+
+ eth_promiscuous_enable_t promiscuous_enable; /**< Promiscuous ON. */
+ eth_promiscuous_disable_t promiscuous_disable;/**< Promiscuous OFF. */
+ eth_allmulticast_enable_t allmulticast_enable;/**< RX multicast ON. */
+ eth_allmulticast_disable_t allmulticast_disable;/**< RX multicast OFF. */
+ eth_mac_addr_remove_t mac_addr_remove; /**< Remove MAC address. */
+ eth_mac_addr_add_t mac_addr_add; /**< Add a MAC address. */
+ eth_mac_addr_set_t mac_addr_set; /**< Set a MAC address. */
+ eth_set_mc_addr_list_t set_mc_addr_list; /**< set list of mcast addrs. */
+ mtu_set_t mtu_set; /**< Set MTU. */
+
+ eth_stats_get_t stats_get; /**< Get generic device statistics. */
+ eth_stats_reset_t stats_reset; /**< Reset generic device statistics. */
+ eth_xstats_get_t xstats_get; /**< Get extended device statistics. */
+ eth_xstats_reset_t xstats_reset; /**< Reset extended device statistics. */
+ eth_xstats_get_names_t xstats_get_names;
+ /**< Get names of extended statistics. */
+ eth_queue_stats_mapping_set_t queue_stats_mapping_set;
+ /**< Configure per queue stat counter mapping. */
+
+ eth_dev_infos_get_t dev_infos_get; /**< Get device info. */
+ eth_rxq_info_get_t rxq_info_get; /**< retrieve RX queue information. */
+ eth_txq_info_get_t txq_info_get; /**< retrieve TX queue information. */
+ eth_burst_mode_get_t rx_burst_mode_get; /**< Get RX burst mode */
+ eth_burst_mode_get_t tx_burst_mode_get; /**< Get TX burst mode */
+ eth_fw_version_get_t fw_version_get; /**< Get firmware version. */
+ eth_dev_supported_ptypes_get_t dev_supported_ptypes_get;
+ /**< Get packet types supported and identified by device. */
+ eth_dev_ptypes_set_t dev_ptypes_set;
+ /**< Inform Ethernet device about reduced range of packet types to handle. */
+
+ vlan_filter_set_t vlan_filter_set; /**< Filter VLAN Setup. */
+ vlan_tpid_set_t vlan_tpid_set; /**< Outer/Inner VLAN TPID Setup. */
+ vlan_strip_queue_set_t vlan_strip_queue_set; /**< VLAN Stripping on queue. */
+ vlan_offload_set_t vlan_offload_set; /**< Set VLAN Offload. */
+ vlan_pvid_set_t vlan_pvid_set; /**< Set port based TX VLAN insertion. */
+
+ eth_queue_start_t rx_queue_start;/**< Start RX for a queue. */
+ eth_queue_stop_t rx_queue_stop; /**< Stop RX for a queue. */
+ eth_queue_start_t tx_queue_start;/**< Start TX for a queue. */
+ eth_queue_stop_t tx_queue_stop; /**< Stop TX for a queue. */
+ eth_rx_queue_setup_t rx_queue_setup;/**< Set up device RX queue. */
+ eth_queue_release_t rx_queue_release; /**< Release RX queue. */
+
+ eth_rx_enable_intr_t rx_queue_intr_enable; /**< Enable Rx queue interrupt. */
+ eth_rx_disable_intr_t rx_queue_intr_disable; /**< Disable Rx queue interrupt. */
+ eth_tx_queue_setup_t tx_queue_setup;/**< Set up device TX queue. */
+ eth_queue_release_t tx_queue_release; /**< Release TX queue. */
+ eth_tx_done_cleanup_t tx_done_cleanup;/**< Free tx ring mbufs */
+
+ eth_dev_led_on_t dev_led_on; /**< Turn on LED. */
+ eth_dev_led_off_t dev_led_off; /**< Turn off LED. */
+
+ flow_ctrl_get_t flow_ctrl_get; /**< Get flow control. */
+ flow_ctrl_set_t flow_ctrl_set; /**< Setup flow control. */
+ priority_flow_ctrl_set_t priority_flow_ctrl_set; /**< Setup priority flow control. */
+
+ eth_uc_hash_table_set_t uc_hash_table_set; /**< Set Unicast Table Array. */
+ eth_uc_all_hash_table_set_t uc_all_hash_table_set; /**< Set Unicast hash bitmap. */
+
+ eth_mirror_rule_set_t mirror_rule_set; /**< Add a traffic mirror rule. */
+ eth_mirror_rule_reset_t mirror_rule_reset; /**< reset a traffic mirror rule. */
+
+ eth_udp_tunnel_port_add_t udp_tunnel_port_add; /** Add UDP tunnel port. */
+ eth_udp_tunnel_port_del_t udp_tunnel_port_del; /** Del UDP tunnel port. */
+
+ eth_set_queue_rate_limit_t set_queue_rate_limit; /**< Set queue rate limit. */
+
+ rss_hash_update_t rss_hash_update; /** Configure RSS hash protocols. */
+ rss_hash_conf_get_t rss_hash_conf_get; /** Get current RSS hash configuration. */
+ reta_update_t reta_update; /** Update redirection table. */
+ reta_query_t reta_query; /** Query redirection table. */
+
+ eth_get_reg_t get_reg; /**< Get registers. */
+ eth_get_eeprom_length_t get_eeprom_length; /**< Get eeprom length. */
+ eth_get_eeprom_t get_eeprom; /**< Get eeprom data. */
+ eth_set_eeprom_t set_eeprom; /**< Set eeprom. */
+
+ eth_get_module_info_t get_module_info;
+ /** Get plugin module eeprom attribute. */
+ eth_get_module_eeprom_t get_module_eeprom;
+ /** Get plugin module eeprom data. */
+
+ eth_filter_ctrl_t filter_ctrl; /**< common filter control. */
+
+ eth_get_dcb_info get_dcb_info; /** Get DCB information. */
+
+ eth_timesync_enable_t timesync_enable;
+ /** Turn IEEE1588/802.1AS timestamping on. */
+ eth_timesync_disable_t timesync_disable;
+ /** Turn IEEE1588/802.1AS timestamping off. */
+ eth_timesync_read_rx_timestamp_t timesync_read_rx_timestamp;
+ /** Read the IEEE1588/802.1AS RX timestamp. */
+ eth_timesync_read_tx_timestamp_t timesync_read_tx_timestamp;
+ /** Read the IEEE1588/802.1AS TX timestamp. */
+ eth_timesync_adjust_time timesync_adjust_time; /** Adjust the device clock. */
+ eth_timesync_read_time timesync_read_time; /** Get the device clock time. */
+ eth_timesync_write_time timesync_write_time; /** Set the device clock time. */
+
+ eth_read_clock read_clock;
+
+ eth_xstats_get_by_id_t xstats_get_by_id;
+ /**< Get extended device statistic values by ID. */
+ eth_xstats_get_names_by_id_t xstats_get_names_by_id;
+ /**< Get name of extended device statistics by ID. */
+
+ eth_tm_ops_get_t tm_ops_get;
+ /**< Get Traffic Management (TM) operations. */
+
+ eth_mtr_ops_get_t mtr_ops_get;
+ /**< Get Traffic Metering and Policing (MTR) operations. */
+
+ eth_pool_ops_supported_t pool_ops_supported;
+ /**< Test if a port supports specific mempool ops */
+
+ eth_hairpin_cap_get_t hairpin_cap_get;
+ /**< Returns the hairpin capabilities. */
+ eth_rx_hairpin_queue_setup_t rx_hairpin_queue_setup;
+ /**< Set up device RX hairpin queue. */
+ eth_tx_hairpin_queue_setup_t tx_hairpin_queue_setup;
+ /**< Set up device TX hairpin queue. */
+
+ eth_fec_get_capability_t fec_get_capability;
+ /**< Get Forward Error Correction(FEC) capability. */
+ eth_fec_get_t fec_get;
+ /**< Get Forward Error Correction(FEC) mode. */
+ eth_fec_set_t fec_set;
+ /**< Set Forward Error Correction(FEC) mode. */
+ hairpin_get_peer_ports_t hairpin_get_peer_ports;
+ /**< Get hairpin peer ports list. */
+ eth_hairpin_bind_t hairpin_bind;
+ /**< Bind all hairpin Tx queues of device to the peer port Rx queues. */
+ eth_hairpin_unbind_t hairpin_unbind;
+ /**< Unbind all hairpin Tx queues from the peer port Rx queues. */
+ eth_hairpin_queue_peer_update_t hairpin_queue_peer_update;
+ /**< Pass the current queue info and get the peer queue info. */
+ eth_hairpin_queue_peer_bind_t hairpin_queue_peer_bind;
+ /**< Set up the connection between the pair of hairpin queues. */
+ eth_hairpin_queue_peer_unbind_t hairpin_queue_peer_unbind;
+ /**< Disconnect the hairpin queues of a pair from each other. */
+
+ eth_get_monitor_addr_t get_monitor_addr;
+ /**< Get power monitoring condition for Rx queue. */
+};
+
+/**
+ * RX/TX queue states
+ */
+#define RTE_ETH_QUEUE_STATE_STOPPED 0
+#define RTE_ETH_QUEUE_STATE_STARTED 1
+#define RTE_ETH_QUEUE_STATE_HAIRPIN 2
+
+/**
+ * @internal
+ * Check if the selected Rx queue is hairpin queue.
+ *
+ * @param dev
+ * Pointer to the selected device.
+ * @param queue_id
+ * The selected queue.
+ *
+ * @return
+ * - (1) if the queue is hairpin queue, 0 otherwise.
+ */
+__rte_internal
+int rte_eth_dev_is_rx_hairpin_queue(struct rte_eth_dev *dev, uint16_t queue_id);
+
+/**
+ * @internal
+ * Check if the selected Tx queue is hairpin queue.
+ *
+ * @param dev
+ * Pointer to the selected device.
+ * @param queue_id
+ * The selected queue.
+ *
+ * @return
+ * - (1) if the queue is hairpin queue, 0 otherwise.
+ */
+__rte_internal
+int rte_eth_dev_is_tx_hairpin_queue(struct rte_eth_dev *dev, uint16_t queue_id);
+
+/**
+ * @internal
+ * Returns a ethdev slot specified by the unique identifier name.
+ *
+ * @param name
+ * The pointer to the Unique identifier name for each Ethernet device
+ * @return
+ * - The pointer to the ethdev slot, on success. NULL on error
+ */
+__rte_internal
+struct rte_eth_dev *rte_eth_dev_allocated(const char *name);
+
+/**
+ * @internal
+ * Allocates a new ethdev slot for an ethernet device and returns the pointer
+ * to that slot for the driver to use.
+ *
+ * @param name Unique identifier name for each Ethernet device
+ * @return
+ * - Slot in the rte_dev_devices array for a new device;
+ */
+__rte_internal
+struct rte_eth_dev *rte_eth_dev_allocate(const char *name);
+
+/**
+ * @internal
+ * Attach to the ethdev already initialized by the primary
+ * process.
+ *
+ * @param name Ethernet device's name.
+ * @return
+ * - Success: Slot in the rte_dev_devices array for attached
+ * device.
+ * - Error: Null pointer.
+ */
+__rte_internal
+struct rte_eth_dev *rte_eth_dev_attach_secondary(const char *name);
+
+/**
+ * @internal
+ * Notify RTE_ETH_EVENT_DESTROY and release the specified ethdev port.
+ *
+ * The following PMD-managed data fields will be freed:
+ * - dev_private
+ * - mac_addrs
+ * - hash_mac_addrs
+ * If one of these fields should not be freed,
+ * it must be reset to NULL by the PMD, typically in dev_close method.
+ *
+ * @param eth_dev
+ * Device to be detached.
+ * @return
+ * - 0 on success, negative on error
+ */
+__rte_internal
+int rte_eth_dev_release_port(struct rte_eth_dev *eth_dev);
+
+/**
+ * @internal
+ * Release device queues and clear its configuration to force the user
+ * application to reconfigure it. It is for internal use only.
+ *
+ * @param dev
+ * Pointer to struct rte_eth_dev.
+ *
+ * @return
+ * void
+ */
+__rte_internal
+void rte_eth_dev_internal_reset(struct rte_eth_dev *dev);
+
+/**
+ * @internal Executes all the user application registered callbacks for
+ * the specific device. It is for DPDK internal user only. User
+ * application should not call it directly.
+ *
+ * @param dev
+ * Pointer to struct rte_eth_dev.
+ * @param event
+ * Eth device interrupt event type.
+ * @param ret_param
+ * To pass data back to user application.
+ * This allows the user application to decide if a particular function
+ * is permitted or not.
+ *
+ * @return
+ * int
+ */
+__rte_internal
+int rte_eth_dev_callback_process(struct rte_eth_dev *dev,
+ enum rte_eth_event_type event, void *ret_param);
+
+/**
+ * @internal
+ * This is the last step of device probing.
+ * It must be called after a port is allocated and initialized successfully.
+ *
+ * The notification RTE_ETH_EVENT_NEW is sent to other entities
+ * (libraries and applications).
+ * The state is set as RTE_ETH_DEV_ATTACHED.
+ *
+ * @param dev
+ * New ethdev port.
+ */
+__rte_internal
+void rte_eth_dev_probing_finish(struct rte_eth_dev *dev);
+
+/**
+ * Create memzone for HW rings.
+ * malloc can't be used as the physical address is needed.
+ * If the memzone is already created, then this function returns a ptr
+ * to the old one.
+ *
+ * @param eth_dev
+ * The *eth_dev* pointer is the address of the *rte_eth_dev* structure
+ * @param name
+ * The name of the memory zone
+ * @param queue_id
+ * The index of the queue to add to name
+ * @param size
+ * The sizeof of the memory area
+ * @param align
+ * Alignment for resulting memzone. Must be a power of 2.
+ * @param socket_id
+ * The *socket_id* argument is the socket identifier in case of NUMA.
+ */
+__rte_internal
+const struct rte_memzone *
+rte_eth_dma_zone_reserve(const struct rte_eth_dev *eth_dev, const char *name,
+ uint16_t queue_id, size_t size,
+ unsigned align, int socket_id);
+
+/**
+ * Free previously allocated memzone for HW rings.
+ *
+ * @param eth_dev
+ * The *eth_dev* pointer is the address of the *rte_eth_dev* structure
+ * @param name
+ * The name of the memory zone
+ * @param queue_id
+ * The index of the queue to add to name
+ * @return
+ * Negative errno value on error, 0 on success.
+ */
+__rte_internal
+int
+rte_eth_dma_zone_free(const struct rte_eth_dev *eth_dev, const char *name,
+ uint16_t queue_id);
+
+/**
+ * @internal
+ * Atomically set the link status for the specific device.
+ * It is for use by DPDK device driver use only.
+ * User applications should not call it
+ *
+ * @param dev
+ * Pointer to struct rte_eth_dev.
+ * @param link
+ * New link status value.
+ * @return
+ * Same convention as eth_link_update operation.
+ * 0 if link up status has changed
+ * -1 if link up status was unchanged
+ */
+static inline int
+rte_eth_linkstatus_set(struct rte_eth_dev *dev,
+ const struct rte_eth_link *new_link)
+{
+ uint64_t *dev_link = (uint64_t *)&(dev->data->dev_link);
+ union {
+ uint64_t val64;
+ struct rte_eth_link link;
+ } orig;
+
+ RTE_BUILD_BUG_ON(sizeof(*new_link) != sizeof(uint64_t));
+
+ orig.val64 = __atomic_exchange_n(dev_link, *(const uint64_t *)new_link,
+ __ATOMIC_SEQ_CST);
+
+ return (orig.link.link_status == new_link->link_status) ? -1 : 0;
+}
+
+/**
+ * @internal
+ * Atomically get the link speed and status.
+ *
+ * @param dev
+ * Pointer to struct rte_eth_dev.
+ * @param link
+ * link status value.
+ */
+static inline void
+rte_eth_linkstatus_get(const struct rte_eth_dev *dev,
+ struct rte_eth_link *link)
+{
+ uint64_t *src = (uint64_t *)&(dev->data->dev_link);
+ uint64_t *dst = (uint64_t *)link;
+
+ RTE_BUILD_BUG_ON(sizeof(*link) != sizeof(uint64_t));
+
+ *dst = __atomic_load_n(src, __ATOMIC_SEQ_CST);
+}
+
+/**
+ * Allocate an unique switch domain identifier.
+ *
+ * A pool of switch domain identifiers which can be allocated on request. This
+ * will enabled devices which support the concept of switch domains to request
+ * a switch domain id which is guaranteed to be unique from other devices
+ * running in the same process.
+ *
+ * @param domain_id
+ * switch domain identifier parameter to pass back to application
+ *
+ * @return
+ * Negative errno value on error, 0 on success.
+ */
+__rte_internal
+int
+rte_eth_switch_domain_alloc(uint16_t *domain_id);
+
+/**
+ * Free switch domain.
+ *
+ * Return a switch domain identifier to the pool of free identifiers after it is
+ * no longer in use by device.
+ *
+ * @param domain_id
+ * switch domain identifier to free
+ *
+ * @return
+ * Negative errno value on error, 0 on success.
+ */
+__rte_internal
+int
+rte_eth_switch_domain_free(uint16_t domain_id);
+
+/** Generic Ethernet device arguments */
+struct rte_eth_devargs {
+ uint16_t ports[RTE_MAX_ETHPORTS];
+ /** port/s number to enable on a multi-port single function */
+ uint16_t nb_ports;
+ /** number of ports in ports field */
+ uint16_t representor_ports[RTE_MAX_ETHPORTS];
+ /** representor port/s identifier to enable on device */
+ uint16_t nb_representor_ports;
+ /** number of ports in representor port field */
+};
+
+/**
+ * PMD helper function to parse ethdev arguments
+ *
+ * @param devargs
+ * device arguments
+ * @param eth_devargs
+ * parsed ethdev specific arguments.
+ *
+ * @return
+ * Negative errno value on error, 0 on success.
+ */
+__rte_internal
+int
+rte_eth_devargs_parse(const char *devargs, struct rte_eth_devargs *eth_devargs);
+
+
+typedef int (*ethdev_init_t)(struct rte_eth_dev *ethdev, void *init_params);
+typedef int (*ethdev_bus_specific_init)(struct rte_eth_dev *ethdev,
+ void *bus_specific_init_params);
+
+/**
+ * PMD helper function for the creation of a new ethdev ports.
+ *
+ * @param device
+ * rte_device handle.
+ * @param name
+ * port name.
+ * @param priv_data_size
+ * size of private data required for port.
+ * @param bus_specific_init
+ * port bus specific initialisation callback function
+ * @param bus_init_params
+ * port bus specific initialisation parameters
+ * @param ethdev_init
+ * device specific port initialization callback function
+ * @param init_params
+ * port initialisation parameters
+ *
+ * @return
+ * Negative errno value on error, 0 on success.
+ */
+__rte_internal
+int
+rte_eth_dev_create(struct rte_device *device, const char *name,
+ size_t priv_data_size,
+ ethdev_bus_specific_init bus_specific_init, void *bus_init_params,
+ ethdev_init_t ethdev_init, void *init_params);
+
+
+typedef int (*ethdev_uninit_t)(struct rte_eth_dev *ethdev);
+
+/**
+ * PMD helper function for cleaning up the resources of a ethdev port on it's
+ * destruction.
+ *
+ * @param ethdev
+ * ethdev handle of port.
+ * @param ethdev_uninit
+ * device specific port un-initialise callback function
+ *
+ * @return
+ * Negative errno value on error, 0 on success.
+ */
+__rte_internal
+int
+rte_eth_dev_destroy(struct rte_eth_dev *ethdev, ethdev_uninit_t ethdev_uninit);
+
+/**
+ * @internal
+ * Pass the current hairpin queue HW and/or SW information to the peer queue
+ * and fetch back the information of the peer queue.
+ *
+ * @param peer_port
+ * Peer port identifier of the Ethernet device.
+ * @param peer_queue
+ * Peer queue index of the port.
+ * @param cur_info
+ * Pointer to the current information structure.
+ * @param peer_info
+ * Pointer to the peer information, output.
+ * @param direction
+ * Direction to pass the information.
+ * positive - pass Tx queue information and get peer Rx queue information
+ * zero - pass Rx queue information and get peer Tx queue information
+ *
+ * @return
+ * Negative errno value on error, 0 on success.
+ */
+__rte_internal
+int
+rte_eth_hairpin_queue_peer_update(uint16_t peer_port, uint16_t peer_queue,
+ struct rte_hairpin_peer_info *cur_info,
+ struct rte_hairpin_peer_info *peer_info,
+ uint32_t direction);
+
+/**
+ * @internal
+ * Configure current hairpin queue with the peer information fetched to create
+ * the connection (bind) with peer queue in the specified direction.
+ * This function might need to be called twice to fully create the connections.
+ *
+ * @param cur_port
+ * Current port identifier of the Ethernet device.
+ * @param cur_queue
+ * Current queue index of the port.
+ * @param peer_info
+ * Pointer to the peer information, input.
+ * @param direction
+ * Direction to create the connection.
+ * positive - bind current Tx queue to peer Rx queue
+ * zero - bind current Rx queue to peer Tx queue
+ *
+ * @return
+ * Negative errno value on error, 0 on success.
+ */
+__rte_internal
+int
+rte_eth_hairpin_queue_peer_bind(uint16_t cur_port, uint16_t cur_queue,
+ struct rte_hairpin_peer_info *peer_info,
+ uint32_t direction);
+
+/**
+ * @internal
+ * Reset the current queue state and configuration to disconnect (unbind) it
+ * from the peer queue.
+ * This function might need to be called twice to disconnect each other.
+ *
+ * @param cur_port
+ * Current port identifier of the Ethernet device.
+ * @param cur_queue
+ * Current queue index of the port.
+ * @param direction
+ * Direction to destroy the connection.
+ * positive - unbind current Tx queue from peer Rx queue
+ * zero - unbind current Rx queue from peer Tx queue
+ *
+ * @return
+ * Negative errno value on error, 0 on success.
+ */
+__rte_internal
+int
+rte_eth_hairpin_queue_peer_unbind(uint16_t cur_port, uint16_t cur_queue,
+ uint32_t direction);
+
+
+/*
+ * Legacy ethdev API used internally by drivers.
+ */
+
+/**
+ * Define all structures for Ethertype Filter type.
+ */
+
+#define RTE_ETHTYPE_FLAGS_MAC 0x0001 /**< If set, compare mac */
+#define RTE_ETHTYPE_FLAGS_DROP 0x0002 /**< If set, drop packet when match */
+
+/**
+ * A structure used to define the ethertype filter entry
+ * to support RTE_ETH_FILTER_ETHERTYPE data representation.
+ */
+struct rte_eth_ethertype_filter {
+ struct rte_ether_addr mac_addr; /**< Mac address to match. */
+ uint16_t ether_type; /**< Ether type to match */
+ uint16_t flags; /**< Flags from RTE_ETHTYPE_FLAGS_* */
+ uint16_t queue; /**< Queue assigned to when match*/
+};
+
+/**
+ * A structure used to define the TCP syn filter entry
+ * to support RTE_ETH_FILTER_SYN data representation.
+ */
+struct rte_eth_syn_filter {
+ /** 1 - higher priority than other filters, 0 - lower priority. */
+ uint8_t hig_pri;
+ uint16_t queue; /**< Queue assigned to when match */
+};
+
+/**
+ * filter type of tunneling packet
+ */
+#define ETH_TUNNEL_FILTER_OMAC 0x01 /**< filter by outer MAC addr */
+#define ETH_TUNNEL_FILTER_OIP 0x02 /**< filter by outer IP Addr */
+#define ETH_TUNNEL_FILTER_TENID 0x04 /**< filter by tenant ID */
+#define ETH_TUNNEL_FILTER_IMAC 0x08 /**< filter by inner MAC addr */
+#define ETH_TUNNEL_FILTER_IVLAN 0x10 /**< filter by inner VLAN ID */
+#define ETH_TUNNEL_FILTER_IIP 0x20 /**< filter by inner IP addr */
+
+#define RTE_TUNNEL_FILTER_IMAC_IVLAN (ETH_TUNNEL_FILTER_IMAC | \
+ ETH_TUNNEL_FILTER_IVLAN)
+#define RTE_TUNNEL_FILTER_IMAC_IVLAN_TENID (ETH_TUNNEL_FILTER_IMAC | \
+ ETH_TUNNEL_FILTER_IVLAN | \
+ ETH_TUNNEL_FILTER_TENID)
+#define RTE_TUNNEL_FILTER_IMAC_TENID (ETH_TUNNEL_FILTER_IMAC | \
+ ETH_TUNNEL_FILTER_TENID)
+#define RTE_TUNNEL_FILTER_OMAC_TENID_IMAC (ETH_TUNNEL_FILTER_OMAC | \
+ ETH_TUNNEL_FILTER_TENID | \
+ ETH_TUNNEL_FILTER_IMAC)
+
+/**
+ * Select IPv4 or IPv6 for tunnel filters.
+ */
+enum rte_tunnel_iptype {
+ RTE_TUNNEL_IPTYPE_IPV4 = 0, /**< IPv4. */
+ RTE_TUNNEL_IPTYPE_IPV6, /**< IPv6. */
+};
+
+/**
+ * Tunneling Packet filter configuration.
+ */
+struct rte_eth_tunnel_filter_conf {
+ struct rte_ether_addr outer_mac; /**< Outer MAC address to match. */
+ struct rte_ether_addr inner_mac; /**< Inner MAC address to match. */
+ uint16_t inner_vlan; /**< Inner VLAN to match. */
+ enum rte_tunnel_iptype ip_type; /**< IP address type. */
+ /**
+ * Outer destination IP address to match if ETH_TUNNEL_FILTER_OIP
+ * is set in filter_type, or inner destination IP address to match
+ * if ETH_TUNNEL_FILTER_IIP is set in filter_type.
+ */
+ union {
+ uint32_t ipv4_addr; /**< IPv4 address in big endian. */
+ uint32_t ipv6_addr[4]; /**< IPv6 address in big endian. */
+ } ip_addr;
+ /** Flags from ETH_TUNNEL_FILTER_XX - see above. */
+ uint16_t filter_type;
+ enum rte_eth_tunnel_type tunnel_type; /**< Tunnel Type. */
+ uint32_t tenant_id; /**< Tenant ID to match. VNI, GRE key... */
+ uint16_t queue_id; /**< Queue assigned to if match. */
+};
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RTE_ETHDEV_DRIVER_H_ */
--- /dev/null
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2017 Brocade Communications Systems, Inc.
+ * Author: Jan Blunck <jblunck@infradead.org>
+ */
+
+#ifndef _RTE_ETHDEV_PCI_H_
+#define _RTE_ETHDEV_PCI_H_
+
+#include <rte_malloc.h>
+#include <rte_pci.h>
+#include <rte_bus_pci.h>
+#include <rte_config.h>
+#include <ethdev_driver.h>
+
+/**
+ * Copy pci device info to the Ethernet device data.
+ * Shared memory (eth_dev->data) only updated by primary process, so it is safe
+ * to call this function from both primary and secondary processes.
+ *
+ * @param eth_dev
+ * The *eth_dev* pointer is the address of the *rte_eth_dev* structure.
+ * @param pci_dev
+ * The *pci_dev* pointer is the address of the *rte_pci_device* structure.
+ */
+static inline void
+rte_eth_copy_pci_info(struct rte_eth_dev *eth_dev,
+ struct rte_pci_device *pci_dev)
+{
+ if ((eth_dev == NULL) || (pci_dev == NULL)) {
+ RTE_ETHDEV_LOG(ERR, "NULL pointer eth_dev=%p pci_dev=%p",
+ (void *)eth_dev, (void *)pci_dev);
+ return;
+ }
+
+ eth_dev->intr_handle = &pci_dev->intr_handle;
+
+ if (rte_eal_process_type() == RTE_PROC_PRIMARY) {
+ eth_dev->data->dev_flags = 0;
+ if (pci_dev->driver->drv_flags & RTE_PCI_DRV_INTR_LSC)
+ eth_dev->data->dev_flags |= RTE_ETH_DEV_INTR_LSC;
+ if (pci_dev->driver->drv_flags & RTE_PCI_DRV_INTR_RMV)
+ eth_dev->data->dev_flags |= RTE_ETH_DEV_INTR_RMV;
+
+ eth_dev->data->numa_node = pci_dev->device.numa_node;
+ }
+}
+
+static inline int
+eth_dev_pci_specific_init(struct rte_eth_dev *eth_dev, void *bus_device) {
+ struct rte_pci_device *pci_dev = bus_device;
+
+ if (!pci_dev)
+ return -ENODEV;
+
+ rte_eth_copy_pci_info(eth_dev, pci_dev);
+
+ return 0;
+}
+
+/**
+ * @internal
+ * Allocates a new ethdev slot for an ethernet device and returns the pointer
+ * to that slot for the driver to use.
+ *
+ * @param dev
+ * Pointer to the PCI device
+ *
+ * @param private_data_size
+ * Size of private data structure
+ *
+ * @return
+ * A pointer to a rte_eth_dev or NULL if allocation failed.
+ */
+static inline struct rte_eth_dev *
+rte_eth_dev_pci_allocate(struct rte_pci_device *dev, size_t private_data_size)
+{
+ struct rte_eth_dev *eth_dev;
+ const char *name;
+
+ if (!dev)
+ return NULL;
+
+ name = dev->device.name;
+
+ if (rte_eal_process_type() == RTE_PROC_PRIMARY) {
+ eth_dev = rte_eth_dev_allocate(name);
+ if (!eth_dev)
+ return NULL;
+
+ if (private_data_size) {
+ eth_dev->data->dev_private = rte_zmalloc_socket(name,
+ private_data_size, RTE_CACHE_LINE_SIZE,
+ dev->device.numa_node);
+ if (!eth_dev->data->dev_private) {
+ rte_eth_dev_release_port(eth_dev);
+ return NULL;
+ }
+ }
+ } else {
+ eth_dev = rte_eth_dev_attach_secondary(name);
+ if (!eth_dev)
+ return NULL;
+ }
+
+ eth_dev->device = &dev->device;
+ rte_eth_copy_pci_info(eth_dev, dev);
+ return eth_dev;
+}
+
+typedef int (*eth_dev_pci_callback_t)(struct rte_eth_dev *eth_dev);
+
+/**
+ * @internal
+ * Wrapper for use by pci drivers in a .probe function to attach to a ethdev
+ * interface.
+ */
+static inline int
+rte_eth_dev_pci_generic_probe(struct rte_pci_device *pci_dev,
+ size_t private_data_size, eth_dev_pci_callback_t dev_init)
+{
+ struct rte_eth_dev *eth_dev;
+ int ret;
+
+ eth_dev = rte_eth_dev_pci_allocate(pci_dev, private_data_size);
+ if (!eth_dev)
+ return -ENOMEM;
+
+ RTE_FUNC_PTR_OR_ERR_RET(*dev_init, -EINVAL);
+ ret = dev_init(eth_dev);
+ if (ret)
+ rte_eth_dev_release_port(eth_dev);
+ else
+ rte_eth_dev_probing_finish(eth_dev);
+
+ return ret;
+}
+
+/**
+ * @internal
+ * Wrapper for use by pci drivers in a .remove function to detach a ethdev
+ * interface.
+ */
+static inline int
+rte_eth_dev_pci_generic_remove(struct rte_pci_device *pci_dev,
+ eth_dev_pci_callback_t dev_uninit)
+{
+ struct rte_eth_dev *eth_dev;
+ int ret;
+
+ eth_dev = rte_eth_dev_allocated(pci_dev->device.name);
+ if (!eth_dev)
+ return 0;
+
+ if (dev_uninit) {
+ ret = dev_uninit(eth_dev);
+ if (ret)
+ return ret;
+ }
+
+ rte_eth_dev_release_port(eth_dev);
+ return 0;
+}
+
+#endif /* _RTE_ETHDEV_PCI_H_ */
*/
#include "rte_ethdev.h"
-#include "rte_ethdev_driver.h"
+#include "ethdev_driver.h"
#include "ethdev_private.h"
uint16_t
--- /dev/null
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2017 Brocade Communications Systems, Inc.
+ * Author: Jan Blunck <jblunck@infradead.org>
+ */
+
+#ifndef _RTE_ETHDEV_VDEV_H_
+#define _RTE_ETHDEV_VDEV_H_
+
+#include <rte_config.h>
+#include <rte_malloc.h>
+#include <rte_bus_vdev.h>
+#include <ethdev_driver.h>
+
+/**
+ * @internal
+ * Allocates a new ethdev slot for an ethernet device and returns the pointer
+ * to that slot for the driver to use.
+ *
+ * @param dev
+ * Pointer to virtual device
+ *
+ * @param private_data_size
+ * Size of private data structure
+ *
+ * @return
+ * A pointer to a rte_eth_dev or NULL if allocation failed.
+ */
+static inline struct rte_eth_dev *
+rte_eth_vdev_allocate(struct rte_vdev_device *dev, size_t private_data_size)
+{
+ struct rte_eth_dev *eth_dev;
+ const char *name = rte_vdev_device_name(dev);
+
+ eth_dev = rte_eth_dev_allocate(name);
+ if (!eth_dev)
+ return NULL;
+
+ if (private_data_size) {
+ eth_dev->data->dev_private = rte_zmalloc_socket(name,
+ private_data_size, RTE_CACHE_LINE_SIZE,
+ dev->device.numa_node);
+ if (!eth_dev->data->dev_private) {
+ rte_eth_dev_release_port(eth_dev);
+ return NULL;
+ }
+ }
+
+ eth_dev->device = &dev->device;
+ eth_dev->intr_handle = NULL;
+
+ eth_dev->data->numa_node = dev->device.numa_node;
+ return eth_dev;
+}
+
+#endif /* _RTE_ETHDEV_VDEV_H_ */
'rte_tm.c')
headers = files('rte_ethdev.h',
- 'rte_ethdev_driver.h',
'rte_ethdev_core.h',
- 'rte_ethdev_pci.h',
'rte_ethdev_trace.h',
'rte_ethdev_trace_fp.h',
- 'rte_ethdev_vdev.h',
'rte_eth_ctrl.h',
'rte_dev_info.h',
'rte_flow.h',
#include "rte_ethdev.h"
#include "rte_ethdev_core.h"
-#include "rte_ethdev_driver.h"
+#include "ethdev_driver.h"
#include "ethdev_private.h"
enum eth_params {
#include "rte_ethdev_trace.h"
#include "rte_ethdev.h"
-#include "rte_ethdev_driver.h"
+#include "ethdev_driver.h"
#include "ethdev_profile.h"
#include "ethdev_private.h"
* - The driver-oriented Ethernet API that exports functions allowing
* an Ethernet Poll Mode Driver (PMD) to allocate an Ethernet device instance,
* create memzone for HW rings and process registered callbacks, and so on.
- * PMDs should include rte_ethdev_driver.h instead of this header.
+ * PMDs should include ethdev_driver.h instead of this header.
*
* By default, all the functions of the Ethernet Device API exported by a PMD
* are lock-free functions which assume to not be invoked in parallel on
+++ /dev/null
-/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2017 Intel Corporation
- */
-
-#ifndef _RTE_ETHDEV_DRIVER_H_
-#define _RTE_ETHDEV_DRIVER_H_
-
-/**
- * @file
- *
- * RTE Ethernet Device PMD API
- *
- * These APIs for the use from Ethernet drivers, user applications shouldn't
- * use them.
- *
- */
-
-#include <rte_ethdev.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**< @internal Declaration of the hairpin peer queue information structure. */
-struct rte_hairpin_peer_info;
-
-/*
- * Definitions of all functions exported by an Ethernet driver through the
- * generic structure of type *eth_dev_ops* supplied in the *rte_eth_dev*
- * structure associated with an Ethernet device.
- */
-
-typedef int (*eth_dev_configure_t)(struct rte_eth_dev *dev);
-/**< @internal Ethernet device configuration. */
-
-typedef int (*eth_dev_start_t)(struct rte_eth_dev *dev);
-/**< @internal Function used to start a configured Ethernet device. */
-
-typedef int (*eth_dev_stop_t)(struct rte_eth_dev *dev);
-/**< @internal Function used to stop a configured Ethernet device. */
-
-typedef int (*eth_dev_set_link_up_t)(struct rte_eth_dev *dev);
-/**< @internal Function used to link up a configured Ethernet device. */
-
-typedef int (*eth_dev_set_link_down_t)(struct rte_eth_dev *dev);
-/**< @internal Function used to link down a configured Ethernet device. */
-
-typedef int (*eth_dev_close_t)(struct rte_eth_dev *dev);
-/**< @internal Function used to close a configured Ethernet device. */
-
-typedef int (*eth_dev_reset_t)(struct rte_eth_dev *dev);
-/** <@internal Function used to reset a configured Ethernet device. */
-
-typedef int (*eth_is_removed_t)(struct rte_eth_dev *dev);
-/**< @internal Function used to detect an Ethernet device removal. */
-
-/**
- * @internal
- * Function used to enable the Rx promiscuous mode of an Ethernet device.
- *
- * @param dev
- * ethdev handle of port.
- *
- * @return
- * Negative errno value on error, 0 on success.
- *
- * @retval 0
- * Success, promiscuous mode is enabled.
- * @retval -ENOTSUP
- * Promiscuous mode is not supported.
- * @retval -ENODEV
- * Device is gone.
- * @retval -E_RTE_SECONDARY
- * Function was called from a secondary process instance and not supported.
- * @retval -ETIMEDOUT
- * Attempt to enable promiscuos mode failed because of timeout.
- * @retval -EAGAIN
- * Failed to enable promiscuous mode.
- */
-typedef int (*eth_promiscuous_enable_t)(struct rte_eth_dev *dev);
-
-/**
- * @internal
- * Function used to disable the Rx promiscuous mode of an Ethernet device.
- *
- * @param dev
- * ethdev handle of port.
- *
- * @return
- * Negative errno value on error, 0 on success.
- *
- * @retval 0
- * Success, promiscuous mode is disabled.
- * @retval -ENOTSUP
- * Promiscuous mode disabling is not supported.
- * @retval -ENODEV
- * Device is gone.
- * @retval -E_RTE_SECONDARY
- * Function was called from a secondary process instance and not supported.
- * @retval -ETIMEDOUT
- * Attempt to disable promiscuos mode failed because of timeout.
- * @retval -EAGAIN
- * Failed to disable promiscuous mode.
- */
-typedef int (*eth_promiscuous_disable_t)(struct rte_eth_dev *dev);
-
-/**
- * @internal
- * Enable the receipt of all multicast packets by an Ethernet device.
- *
- * @param dev
- * ethdev handle of port.
- *
- * @return
- * Negative errno value on error, 0 on success.
- *
- * @retval 0
- * Success, all-multicast mode is enabled.
- * @retval -ENOTSUP
- * All-multicast mode is not supported.
- * @retval -ENODEV
- * Device is gone.
- * @retval -E_RTE_SECONDARY
- * Function was called from a secondary process instance and not supported.
- * @retval -ETIMEDOUT
- * Attempt to enable all-multicast mode failed because of timeout.
- * @retval -EAGAIN
- * Failed to enable all-multicast mode.
- */
-typedef int (*eth_allmulticast_enable_t)(struct rte_eth_dev *dev);
-
-/**
- * @internal
- * Disable the receipt of all multicast packets by an Ethernet device.
- *
- * @param dev
- * ethdev handle of port.
- *
- * @return
- * Negative errno value on error, 0 on success.
- *
- * @retval 0
- * Success, all-multicast mode is disabled.
- * @retval -ENOTSUP
- * All-multicast mode disabling is not supported.
- * @retval -ENODEV
- * Device is gone.
- * @retval -E_RTE_SECONDARY
- * Function was called from a secondary process instance and not supported.
- * @retval -ETIMEDOUT
- * Attempt to disable all-multicast mode failed because of timeout.
- * @retval -EAGAIN
- * Failed to disable all-multicast mode.
- */
-typedef int (*eth_allmulticast_disable_t)(struct rte_eth_dev *dev);
-
-typedef int (*eth_link_update_t)(struct rte_eth_dev *dev,
- int wait_to_complete);
-/**< @internal Get link speed, duplex mode and state (up/down) of an Ethernet device. */
-
-typedef int (*eth_stats_get_t)(struct rte_eth_dev *dev,
- struct rte_eth_stats *igb_stats);
-/**< @internal Get global I/O statistics of an Ethernet device. */
-
-/**
- * @internal
- * Reset global I/O statistics of an Ethernet device to 0.
- *
- * @param dev
- * ethdev handle of port.
- *
- * @return
- * Negative errno value on error, 0 on success.
- *
- * @retval 0
- * Success, statistics has been reset.
- * @retval -ENOTSUP
- * Resetting statistics is not supported.
- * @retval -EINVAL
- * Resetting statistics is not valid.
- * @retval -ENOMEM
- * Not enough memory to get the stats.
- */
-typedef int (*eth_stats_reset_t)(struct rte_eth_dev *dev);
-
-typedef int (*eth_xstats_get_t)(struct rte_eth_dev *dev,
- struct rte_eth_xstat *stats, unsigned int n);
-/**< @internal Get extended stats of an Ethernet device. */
-
-typedef int (*eth_xstats_get_by_id_t)(struct rte_eth_dev *dev,
- const uint64_t *ids,
- uint64_t *values,
- unsigned int n);
-/**< @internal Get extended stats of an Ethernet device. */
-
-/**
- * @internal
- * Reset extended stats of an Ethernet device.
- *
- * @param dev
- * ethdev handle of port.
- *
- * @return
- * Negative errno value on error, 0 on success.
- *
- * @retval 0
- * Success, statistics has been reset.
- * @retval -ENOTSUP
- * Resetting statistics is not supported.
- * @retval -EINVAL
- * Resetting statistics is not valid.
- * @retval -ENOMEM
- * Not enough memory to get the stats.
- */
-typedef int (*eth_xstats_reset_t)(struct rte_eth_dev *dev);
-
-typedef int (*eth_xstats_get_names_t)(struct rte_eth_dev *dev,
- struct rte_eth_xstat_name *xstats_names, unsigned int size);
-/**< @internal Get names of extended stats of an Ethernet device. */
-
-typedef int (*eth_xstats_get_names_by_id_t)(struct rte_eth_dev *dev,
- struct rte_eth_xstat_name *xstats_names, const uint64_t *ids,
- unsigned int size);
-/**< @internal Get names of extended stats of an Ethernet device. */
-
-typedef int (*eth_queue_stats_mapping_set_t)(struct rte_eth_dev *dev,
- uint16_t queue_id,
- uint8_t stat_idx,
- uint8_t is_rx);
-/**< @internal Set a queue statistics mapping for a tx/rx queue of an Ethernet device. */
-
-typedef int (*eth_dev_infos_get_t)(struct rte_eth_dev *dev,
- struct rte_eth_dev_info *dev_info);
-/**< @internal Get specific information of an Ethernet device. */
-
-typedef const uint32_t *(*eth_dev_supported_ptypes_get_t)(struct rte_eth_dev *dev);
-/**< @internal Get supported ptypes of an Ethernet device. */
-
-/**
- * @internal
- * Inform Ethernet device about reduced range of packet types to handle.
- *
- * @param dev
- * The Ethernet device identifier.
- * @param ptype_mask
- * The ptype family that application is interested in should be bitwise OR of
- * RTE_PTYPE_*_MASK or 0.
- * @return
- * - (0) if Success.
- */
-typedef int (*eth_dev_ptypes_set_t)(struct rte_eth_dev *dev,
- uint32_t ptype_mask);
-
-typedef int (*eth_queue_start_t)(struct rte_eth_dev *dev,
- uint16_t queue_id);
-/**< @internal Start rx and tx of a queue of an Ethernet device. */
-
-typedef int (*eth_queue_stop_t)(struct rte_eth_dev *dev,
- uint16_t queue_id);
-/**< @internal Stop rx and tx of a queue of an Ethernet device. */
-
-typedef int (*eth_rx_queue_setup_t)(struct rte_eth_dev *dev,
- uint16_t rx_queue_id,
- uint16_t nb_rx_desc,
- unsigned int socket_id,
- const struct rte_eth_rxconf *rx_conf,
- struct rte_mempool *mb_pool);
-/**< @internal Set up a receive queue of an Ethernet device. */
-
-typedef int (*eth_tx_queue_setup_t)(struct rte_eth_dev *dev,
- uint16_t tx_queue_id,
- uint16_t nb_tx_desc,
- unsigned int socket_id,
- const struct rte_eth_txconf *tx_conf);
-/**< @internal Setup a transmit queue of an Ethernet device. */
-
-typedef int (*eth_rx_enable_intr_t)(struct rte_eth_dev *dev,
- uint16_t rx_queue_id);
-/**< @internal Enable interrupt of a receive queue of an Ethernet device. */
-
-typedef int (*eth_rx_disable_intr_t)(struct rte_eth_dev *dev,
- uint16_t rx_queue_id);
-/**< @internal Disable interrupt of a receive queue of an Ethernet device. */
-
-typedef void (*eth_queue_release_t)(void *queue);
-/**< @internal Release memory resources allocated by given RX/TX queue. */
-
-typedef int (*eth_fw_version_get_t)(struct rte_eth_dev *dev,
- char *fw_version, size_t fw_size);
-/**< @internal Get firmware information of an Ethernet device. */
-
-typedef int (*eth_tx_done_cleanup_t)(void *txq, uint32_t free_cnt);
-/**< @internal Force mbufs to be from TX ring. */
-
-typedef void (*eth_rxq_info_get_t)(struct rte_eth_dev *dev,
- uint16_t rx_queue_id, struct rte_eth_rxq_info *qinfo);
-
-typedef void (*eth_txq_info_get_t)(struct rte_eth_dev *dev,
- uint16_t tx_queue_id, struct rte_eth_txq_info *qinfo);
-
-typedef int (*eth_burst_mode_get_t)(struct rte_eth_dev *dev,
- uint16_t queue_id, struct rte_eth_burst_mode *mode);
-
-typedef int (*mtu_set_t)(struct rte_eth_dev *dev, uint16_t mtu);
-/**< @internal Set MTU. */
-
-typedef int (*vlan_filter_set_t)(struct rte_eth_dev *dev,
- uint16_t vlan_id,
- int on);
-/**< @internal filtering of a VLAN Tag Identifier by an Ethernet device. */
-
-typedef int (*vlan_tpid_set_t)(struct rte_eth_dev *dev,
- enum rte_vlan_type type, uint16_t tpid);
-/**< @internal set the outer/inner VLAN-TPID by an Ethernet device. */
-
-typedef int (*vlan_offload_set_t)(struct rte_eth_dev *dev, int mask);
-/**< @internal set VLAN offload function by an Ethernet device. */
-
-typedef int (*vlan_pvid_set_t)(struct rte_eth_dev *dev,
- uint16_t vlan_id,
- int on);
-/**< @internal set port based TX VLAN insertion by an Ethernet device. */
-
-typedef void (*vlan_strip_queue_set_t)(struct rte_eth_dev *dev,
- uint16_t rx_queue_id,
- int on);
-/**< @internal VLAN stripping enable/disable by an queue of Ethernet device. */
-
-typedef int (*flow_ctrl_get_t)(struct rte_eth_dev *dev,
- struct rte_eth_fc_conf *fc_conf);
-/**< @internal Get current flow control parameter on an Ethernet device */
-
-typedef int (*flow_ctrl_set_t)(struct rte_eth_dev *dev,
- struct rte_eth_fc_conf *fc_conf);
-/**< @internal Setup flow control parameter on an Ethernet device */
-
-typedef int (*priority_flow_ctrl_set_t)(struct rte_eth_dev *dev,
- struct rte_eth_pfc_conf *pfc_conf);
-/**< @internal Setup priority flow control parameter on an Ethernet device */
-
-typedef int (*reta_update_t)(struct rte_eth_dev *dev,
- struct rte_eth_rss_reta_entry64 *reta_conf,
- uint16_t reta_size);
-/**< @internal Update RSS redirection table on an Ethernet device */
-
-typedef int (*reta_query_t)(struct rte_eth_dev *dev,
- struct rte_eth_rss_reta_entry64 *reta_conf,
- uint16_t reta_size);
-/**< @internal Query RSS redirection table on an Ethernet device */
-
-typedef int (*rss_hash_update_t)(struct rte_eth_dev *dev,
- struct rte_eth_rss_conf *rss_conf);
-/**< @internal Update RSS hash configuration of an Ethernet device */
-
-typedef int (*rss_hash_conf_get_t)(struct rte_eth_dev *dev,
- struct rte_eth_rss_conf *rss_conf);
-/**< @internal Get current RSS hash configuration of an Ethernet device */
-
-typedef int (*eth_dev_led_on_t)(struct rte_eth_dev *dev);
-/**< @internal Turn on SW controllable LED on an Ethernet device */
-
-typedef int (*eth_dev_led_off_t)(struct rte_eth_dev *dev);
-/**< @internal Turn off SW controllable LED on an Ethernet device */
-
-typedef void (*eth_mac_addr_remove_t)(struct rte_eth_dev *dev, uint32_t index);
-/**< @internal Remove MAC address from receive address register */
-
-typedef int (*eth_mac_addr_add_t)(struct rte_eth_dev *dev,
- struct rte_ether_addr *mac_addr,
- uint32_t index,
- uint32_t vmdq);
-/**< @internal Set a MAC address into Receive Address Register */
-
-typedef int (*eth_mac_addr_set_t)(struct rte_eth_dev *dev,
- struct rte_ether_addr *mac_addr);
-/**< @internal Set a MAC address into Receive Address Register */
-
-typedef int (*eth_uc_hash_table_set_t)(struct rte_eth_dev *dev,
- struct rte_ether_addr *mac_addr,
- uint8_t on);
-/**< @internal Set a Unicast Hash bitmap */
-
-typedef int (*eth_uc_all_hash_table_set_t)(struct rte_eth_dev *dev,
- uint8_t on);
-/**< @internal Set all Unicast Hash bitmap */
-
-typedef int (*eth_set_queue_rate_limit_t)(struct rte_eth_dev *dev,
- uint16_t queue_idx,
- uint16_t tx_rate);
-/**< @internal Set queue TX rate */
-
-typedef int (*eth_mirror_rule_set_t)(struct rte_eth_dev *dev,
- struct rte_eth_mirror_conf *mirror_conf,
- uint8_t rule_id,
- uint8_t on);
-/**< @internal Add a traffic mirroring rule on an Ethernet device */
-
-typedef int (*eth_mirror_rule_reset_t)(struct rte_eth_dev *dev,
- uint8_t rule_id);
-/**< @internal Remove a traffic mirroring rule on an Ethernet device */
-
-typedef int (*eth_udp_tunnel_port_add_t)(struct rte_eth_dev *dev,
- struct rte_eth_udp_tunnel *tunnel_udp);
-/**< @internal Add tunneling UDP port */
-
-typedef int (*eth_udp_tunnel_port_del_t)(struct rte_eth_dev *dev,
- struct rte_eth_udp_tunnel *tunnel_udp);
-/**< @internal Delete tunneling UDP port */
-
-typedef int (*eth_set_mc_addr_list_t)(struct rte_eth_dev *dev,
- struct rte_ether_addr *mc_addr_set,
- uint32_t nb_mc_addr);
-/**< @internal set the list of multicast addresses on an Ethernet device */
-
-typedef int (*eth_timesync_enable_t)(struct rte_eth_dev *dev);
-/**< @internal Function used to enable IEEE1588/802.1AS timestamping. */
-
-typedef int (*eth_timesync_disable_t)(struct rte_eth_dev *dev);
-/**< @internal Function used to disable IEEE1588/802.1AS timestamping. */
-
-typedef int (*eth_timesync_read_rx_timestamp_t)(struct rte_eth_dev *dev,
- struct timespec *timestamp,
- uint32_t flags);
-/**< @internal Function used to read an RX IEEE1588/802.1AS timestamp. */
-
-typedef int (*eth_timesync_read_tx_timestamp_t)(struct rte_eth_dev *dev,
- struct timespec *timestamp);
-/**< @internal Function used to read a TX IEEE1588/802.1AS timestamp. */
-
-typedef int (*eth_timesync_adjust_time)(struct rte_eth_dev *dev, int64_t);
-/**< @internal Function used to adjust the device clock */
-
-typedef int (*eth_timesync_read_time)(struct rte_eth_dev *dev,
- struct timespec *timestamp);
-/**< @internal Function used to get time from the device clock. */
-
-typedef int (*eth_timesync_write_time)(struct rte_eth_dev *dev,
- const struct timespec *timestamp);
-/**< @internal Function used to get time from the device clock */
-
-typedef int (*eth_read_clock)(struct rte_eth_dev *dev,
- uint64_t *timestamp);
-/**< @internal Function used to get the current value of the device clock. */
-
-typedef int (*eth_get_reg_t)(struct rte_eth_dev *dev,
- struct rte_dev_reg_info *info);
-/**< @internal Retrieve registers */
-
-typedef int (*eth_get_eeprom_length_t)(struct rte_eth_dev *dev);
-/**< @internal Retrieve eeprom size */
-
-typedef int (*eth_get_eeprom_t)(struct rte_eth_dev *dev,
- struct rte_dev_eeprom_info *info);
-/**< @internal Retrieve eeprom data */
-
-typedef int (*eth_set_eeprom_t)(struct rte_eth_dev *dev,
- struct rte_dev_eeprom_info *info);
-/**< @internal Program eeprom data */
-
-typedef int (*eth_get_module_info_t)(struct rte_eth_dev *dev,
- struct rte_eth_dev_module_info *modinfo);
-/**< @internal Retrieve type and size of plugin module eeprom */
-
-typedef int (*eth_get_module_eeprom_t)(struct rte_eth_dev *dev,
- struct rte_dev_eeprom_info *info);
-/**< @internal Retrieve plugin module eeprom data */
-
-/**
- * Feature filter types
- */
-enum rte_filter_type {
- RTE_ETH_FILTER_NONE = 0,
- RTE_ETH_FILTER_ETHERTYPE,
- RTE_ETH_FILTER_FLEXIBLE,
- RTE_ETH_FILTER_SYN,
- RTE_ETH_FILTER_NTUPLE,
- RTE_ETH_FILTER_TUNNEL,
- RTE_ETH_FILTER_FDIR,
- RTE_ETH_FILTER_HASH,
- RTE_ETH_FILTER_L2_TUNNEL,
- RTE_ETH_FILTER_GENERIC,
-};
-
-/**
- * Generic operations on filters
- */
-enum rte_filter_op {
- RTE_ETH_FILTER_GET, /**< get flow API ops */
-};
-
-typedef int (*eth_filter_ctrl_t)(struct rte_eth_dev *dev,
- enum rte_filter_type filter_type,
- enum rte_filter_op filter_op,
- void *arg);
-/**< @internal Take operations to assigned filter type on an Ethernet device */
-
-typedef int (*eth_tm_ops_get_t)(struct rte_eth_dev *dev, void *ops);
-/**< @internal Get Traffic Management (TM) operations on an Ethernet device */
-
-typedef int (*eth_mtr_ops_get_t)(struct rte_eth_dev *dev, void *ops);
-/**< @internal Get Traffic Metering and Policing (MTR) operations */
-
-typedef int (*eth_get_dcb_info)(struct rte_eth_dev *dev,
- struct rte_eth_dcb_info *dcb_info);
-/**< @internal Get dcb information on an Ethernet device */
-
-typedef int (*eth_pool_ops_supported_t)(struct rte_eth_dev *dev,
- const char *pool);
-/**< @internal Test if a port supports specific mempool ops */
-
-/**
- * @internal
- * Get the hairpin capabilities.
- *
- * @param dev
- * ethdev handle of port.
- * @param cap
- * returns the hairpin capabilities from the device.
- *
- * @return
- * Negative errno value on error, 0 on success.
- *
- * @retval 0
- * Success, hairpin is supported.
- * @retval -ENOTSUP
- * Hairpin is not supported.
- */
-typedef int (*eth_hairpin_cap_get_t)(struct rte_eth_dev *dev,
- struct rte_eth_hairpin_cap *cap);
-
-/**
- * @internal
- * Setup RX hairpin queue.
- *
- * @param dev
- * ethdev handle of port.
- * @param rx_queue_id
- * the selected RX queue index.
- * @param nb_rx_desc
- * the requested number of descriptors for this queue. 0 - use PMD default.
- * @param conf
- * the RX hairpin configuration structure.
- *
- * @return
- * Negative errno value on error, 0 on success.
- *
- * @retval 0
- * Success, hairpin is supported.
- * @retval -ENOTSUP
- * Hairpin is not supported.
- * @retval -EINVAL
- * One of the parameters is invalid.
- * @retval -ENOMEM
- * Unable to allocate resources.
- */
-typedef int (*eth_rx_hairpin_queue_setup_t)
- (struct rte_eth_dev *dev, uint16_t rx_queue_id,
- uint16_t nb_rx_desc,
- const struct rte_eth_hairpin_conf *conf);
-
-/**
- * @internal
- * Setup TX hairpin queue.
- *
- * @param dev
- * ethdev handle of port.
- * @param tx_queue_id
- * the selected TX queue index.
- * @param nb_tx_desc
- * the requested number of descriptors for this queue. 0 - use PMD default.
- * @param conf
- * the TX hairpin configuration structure.
- *
- * @return
- * Negative errno value on error, 0 on success.
- *
- * @retval 0
- * Success, hairpin is supported.
- * @retval -ENOTSUP
- * Hairpin is not supported.
- * @retval -EINVAL
- * One of the parameters is invalid.
- * @retval -ENOMEM
- * Unable to allocate resources.
- */
-typedef int (*eth_tx_hairpin_queue_setup_t)
- (struct rte_eth_dev *dev, uint16_t tx_queue_id,
- uint16_t nb_tx_desc,
- const struct rte_eth_hairpin_conf *hairpin_conf);
-
-/**
- * @internal
- * Get Forward Error Correction(FEC) capability.
- *
- * @param dev
- * ethdev handle of port.
- * @param speed_fec_capa
- * speed_fec_capa is out only with per-speed capabilities.
- * @param num
- * a number of elements in an speed_fec_capa array.
- *
- * @return
- * Negative errno value on error, positive value on success.
- *
- * @retval positive value
- * A non-negative value lower or equal to num: success. The return value
- * is the number of entries filled in the fec capa array.
- * A non-negative value higher than num: error, the given fec capa array
- * is too small. The return value corresponds to the num that should
- * be given to succeed. The entries in the fec capa array are not valid
- * and shall not be used by the caller.
- * @retval -ENOTSUP
- * Operation is not supported.
- * @retval -EIO
- * Device is removed.
- * @retval -EINVAL
- * *num* or *speed_fec_capa* invalid.
- */
-typedef int (*eth_fec_get_capability_t)(struct rte_eth_dev *dev,
- struct rte_eth_fec_capa *speed_fec_capa, unsigned int num);
-
-/**
- * @internal
- * Get Forward Error Correction(FEC) mode.
- *
- * @param dev
- * ethdev handle of port.
- * @param fec_capa
- * a bitmask of enabled FEC modes. If AUTO bit is set, other
- * bits specify FEC modes which may be negotiated. If AUTO
- * bit is clear, specify FEC modes to be used (only one valid
- * mode per speed may be set).
- *
- * @return
- * Negative errno value on error, 0 on success.
- *
- * @retval 0
- * Success, get FEC success.
- * @retval -ENOTSUP
- * Operation is not supported.
- * @retval -EIO
- * Device is removed.
- */
-typedef int (*eth_fec_get_t)(struct rte_eth_dev *dev,
- uint32_t *fec_capa);
-
-/**
- * @internal
- * Set Forward Error Correction(FEC) mode.
- *
- * @param dev
- * ethdev handle of port.
- * @param fec_capa
- * bitmask of allowed FEC modes. It must be only one
- * if AUTO is disabled. If AUTO is enabled, other
- * bits specify FEC modes which may be negotiated.
- *
- * @return
- * Negative errno value on error, 0 on success.
- *
- * @retval 0
- * Success, set FEC success.
- * @retval -ENOTSUP
- * Operation is not supported.
- * @retval -EINVAL
- * Unsupported FEC mode requested.
- * @retval -EIO
- * Device is removed.
- */
-typedef int (*eth_fec_set_t)(struct rte_eth_dev *dev, uint32_t fec_capa);
-
-/**
- * @internal
- * Get all hairpin Tx/Rx peer ports of the current device, if any.
- *
- * @param dev
- * ethdev handle of port.
- * @param peer_ports
- * array to save the ports list.
- * @param len
- * array length.
- * @param direction
- * value to decide the current to peer direction
- * positive - used as Tx to get all peer Rx ports.
- * zero - used as Rx to get all peer Tx ports.
- *
- * @return
- * Negative errno value on error, 0 or positive on success.
- *
- * @retval 0
- * Success, no peer ports.
- * @retval >0
- * Actual number of the peer ports.
- * @retval -ENOTSUP
- * Get peer ports API is not supported.
- * @retval -EINVAL
- * One of the parameters is invalid.
- */
-typedef int (*hairpin_get_peer_ports_t)(struct rte_eth_dev *dev,
- uint16_t *peer_ports, size_t len,
- uint32_t direction);
-
-/**
- * @internal
- * Bind all hairpin Tx queues of one port to the Rx queues of the peer port.
- *
- * @param dev
- * ethdev handle of port.
- * @param rx_port
- * the peer Rx port.
- *
- * @return
- * Negative errno value on error, 0 on success.
- *
- * @retval 0
- * Success, bind successfully.
- * @retval -ENOTSUP
- * Bind API is not supported.
- * @retval -EINVAL
- * One of the parameters is invalid.
- * @retval -EBUSY
- * Device is not started.
- */
-typedef int (*eth_hairpin_bind_t)(struct rte_eth_dev *dev,
- uint16_t rx_port);
-
-/**
- * @internal
- * Unbind all hairpin Tx queues of one port from the Rx queues of the peer port.
- *
- * @param dev
- * ethdev handle of port.
- * @param rx_port
- * the peer Rx port.
- *
- * @return
- * Negative errno value on error, 0 on success.
- *
- * @retval 0
- * Success, unbind successfully.
- * @retval -ENOTSUP
- * Bind API is not supported.
- * @retval -EINVAL
- * One of the parameters is invalid.
- * @retval -EBUSY
- * Device is already stopped.
- */
-typedef int (*eth_hairpin_unbind_t)(struct rte_eth_dev *dev,
- uint16_t rx_port);
-
-typedef int (*eth_hairpin_queue_peer_update_t)
- (struct rte_eth_dev *dev, uint16_t peer_queue,
- struct rte_hairpin_peer_info *current_info,
- struct rte_hairpin_peer_info *peer_info, uint32_t direction);
-/**< @internal Update and fetch peer queue information. */
-
-typedef int (*eth_hairpin_queue_peer_bind_t)
- (struct rte_eth_dev *dev, uint16_t cur_queue,
- struct rte_hairpin_peer_info *peer_info, uint32_t direction);
-/**< @internal Bind peer queue to the current queue with fetched information. */
-
-typedef int (*eth_hairpin_queue_peer_unbind_t)
- (struct rte_eth_dev *dev, uint16_t cur_queue, uint32_t direction);
-/**< @internal Unbind peer queue from the current queue. */
-
-/**
- * @internal
- * Get address of memory location whose contents will change whenever there is
- * new data to be received on an Rx queue.
- *
- * @param rxq
- * Ethdev queue pointer.
- * @param pmc
- * The pointer to power-optimized monitoring condition structure.
- * @return
- * Negative errno value on error, 0 on success.
- *
- * @retval 0
- * Success
- * @retval -EINVAL
- * Invalid parameters
- */
-typedef int (*eth_get_monitor_addr_t)(void *rxq,
- struct rte_power_monitor_cond *pmc);
-
-/**
- * @internal A structure containing the functions exported by an Ethernet driver.
- */
-struct eth_dev_ops {
- eth_dev_configure_t dev_configure; /**< Configure device. */
- eth_dev_start_t dev_start; /**< Start device. */
- eth_dev_stop_t dev_stop; /**< Stop device. */
- eth_dev_set_link_up_t dev_set_link_up; /**< Device link up. */
- eth_dev_set_link_down_t dev_set_link_down; /**< Device link down. */
- eth_dev_close_t dev_close; /**< Close device. */
- eth_dev_reset_t dev_reset; /**< Reset device. */
- eth_link_update_t link_update; /**< Get device link state. */
- eth_is_removed_t is_removed;
- /**< Check if the device was physically removed. */
-
- eth_promiscuous_enable_t promiscuous_enable; /**< Promiscuous ON. */
- eth_promiscuous_disable_t promiscuous_disable;/**< Promiscuous OFF. */
- eth_allmulticast_enable_t allmulticast_enable;/**< RX multicast ON. */
- eth_allmulticast_disable_t allmulticast_disable;/**< RX multicast OFF. */
- eth_mac_addr_remove_t mac_addr_remove; /**< Remove MAC address. */
- eth_mac_addr_add_t mac_addr_add; /**< Add a MAC address. */
- eth_mac_addr_set_t mac_addr_set; /**< Set a MAC address. */
- eth_set_mc_addr_list_t set_mc_addr_list; /**< set list of mcast addrs. */
- mtu_set_t mtu_set; /**< Set MTU. */
-
- eth_stats_get_t stats_get; /**< Get generic device statistics. */
- eth_stats_reset_t stats_reset; /**< Reset generic device statistics. */
- eth_xstats_get_t xstats_get; /**< Get extended device statistics. */
- eth_xstats_reset_t xstats_reset; /**< Reset extended device statistics. */
- eth_xstats_get_names_t xstats_get_names;
- /**< Get names of extended statistics. */
- eth_queue_stats_mapping_set_t queue_stats_mapping_set;
- /**< Configure per queue stat counter mapping. */
-
- eth_dev_infos_get_t dev_infos_get; /**< Get device info. */
- eth_rxq_info_get_t rxq_info_get; /**< retrieve RX queue information. */
- eth_txq_info_get_t txq_info_get; /**< retrieve TX queue information. */
- eth_burst_mode_get_t rx_burst_mode_get; /**< Get RX burst mode */
- eth_burst_mode_get_t tx_burst_mode_get; /**< Get TX burst mode */
- eth_fw_version_get_t fw_version_get; /**< Get firmware version. */
- eth_dev_supported_ptypes_get_t dev_supported_ptypes_get;
- /**< Get packet types supported and identified by device. */
- eth_dev_ptypes_set_t dev_ptypes_set;
- /**< Inform Ethernet device about reduced range of packet types to handle. */
-
- vlan_filter_set_t vlan_filter_set; /**< Filter VLAN Setup. */
- vlan_tpid_set_t vlan_tpid_set; /**< Outer/Inner VLAN TPID Setup. */
- vlan_strip_queue_set_t vlan_strip_queue_set; /**< VLAN Stripping on queue. */
- vlan_offload_set_t vlan_offload_set; /**< Set VLAN Offload. */
- vlan_pvid_set_t vlan_pvid_set; /**< Set port based TX VLAN insertion. */
-
- eth_queue_start_t rx_queue_start;/**< Start RX for a queue. */
- eth_queue_stop_t rx_queue_stop; /**< Stop RX for a queue. */
- eth_queue_start_t tx_queue_start;/**< Start TX for a queue. */
- eth_queue_stop_t tx_queue_stop; /**< Stop TX for a queue. */
- eth_rx_queue_setup_t rx_queue_setup;/**< Set up device RX queue. */
- eth_queue_release_t rx_queue_release; /**< Release RX queue. */
-
- eth_rx_enable_intr_t rx_queue_intr_enable; /**< Enable Rx queue interrupt. */
- eth_rx_disable_intr_t rx_queue_intr_disable; /**< Disable Rx queue interrupt. */
- eth_tx_queue_setup_t tx_queue_setup;/**< Set up device TX queue. */
- eth_queue_release_t tx_queue_release; /**< Release TX queue. */
- eth_tx_done_cleanup_t tx_done_cleanup;/**< Free tx ring mbufs */
-
- eth_dev_led_on_t dev_led_on; /**< Turn on LED. */
- eth_dev_led_off_t dev_led_off; /**< Turn off LED. */
-
- flow_ctrl_get_t flow_ctrl_get; /**< Get flow control. */
- flow_ctrl_set_t flow_ctrl_set; /**< Setup flow control. */
- priority_flow_ctrl_set_t priority_flow_ctrl_set; /**< Setup priority flow control. */
-
- eth_uc_hash_table_set_t uc_hash_table_set; /**< Set Unicast Table Array. */
- eth_uc_all_hash_table_set_t uc_all_hash_table_set; /**< Set Unicast hash bitmap. */
-
- eth_mirror_rule_set_t mirror_rule_set; /**< Add a traffic mirror rule. */
- eth_mirror_rule_reset_t mirror_rule_reset; /**< reset a traffic mirror rule. */
-
- eth_udp_tunnel_port_add_t udp_tunnel_port_add; /** Add UDP tunnel port. */
- eth_udp_tunnel_port_del_t udp_tunnel_port_del; /** Del UDP tunnel port. */
-
- eth_set_queue_rate_limit_t set_queue_rate_limit; /**< Set queue rate limit. */
-
- rss_hash_update_t rss_hash_update; /** Configure RSS hash protocols. */
- rss_hash_conf_get_t rss_hash_conf_get; /** Get current RSS hash configuration. */
- reta_update_t reta_update; /** Update redirection table. */
- reta_query_t reta_query; /** Query redirection table. */
-
- eth_get_reg_t get_reg; /**< Get registers. */
- eth_get_eeprom_length_t get_eeprom_length; /**< Get eeprom length. */
- eth_get_eeprom_t get_eeprom; /**< Get eeprom data. */
- eth_set_eeprom_t set_eeprom; /**< Set eeprom. */
-
- eth_get_module_info_t get_module_info;
- /** Get plugin module eeprom attribute. */
- eth_get_module_eeprom_t get_module_eeprom;
- /** Get plugin module eeprom data. */
-
- eth_filter_ctrl_t filter_ctrl; /**< common filter control. */
-
- eth_get_dcb_info get_dcb_info; /** Get DCB information. */
-
- eth_timesync_enable_t timesync_enable;
- /** Turn IEEE1588/802.1AS timestamping on. */
- eth_timesync_disable_t timesync_disable;
- /** Turn IEEE1588/802.1AS timestamping off. */
- eth_timesync_read_rx_timestamp_t timesync_read_rx_timestamp;
- /** Read the IEEE1588/802.1AS RX timestamp. */
- eth_timesync_read_tx_timestamp_t timesync_read_tx_timestamp;
- /** Read the IEEE1588/802.1AS TX timestamp. */
- eth_timesync_adjust_time timesync_adjust_time; /** Adjust the device clock. */
- eth_timesync_read_time timesync_read_time; /** Get the device clock time. */
- eth_timesync_write_time timesync_write_time; /** Set the device clock time. */
-
- eth_read_clock read_clock;
-
- eth_xstats_get_by_id_t xstats_get_by_id;
- /**< Get extended device statistic values by ID. */
- eth_xstats_get_names_by_id_t xstats_get_names_by_id;
- /**< Get name of extended device statistics by ID. */
-
- eth_tm_ops_get_t tm_ops_get;
- /**< Get Traffic Management (TM) operations. */
-
- eth_mtr_ops_get_t mtr_ops_get;
- /**< Get Traffic Metering and Policing (MTR) operations. */
-
- eth_pool_ops_supported_t pool_ops_supported;
- /**< Test if a port supports specific mempool ops */
-
- eth_hairpin_cap_get_t hairpin_cap_get;
- /**< Returns the hairpin capabilities. */
- eth_rx_hairpin_queue_setup_t rx_hairpin_queue_setup;
- /**< Set up device RX hairpin queue. */
- eth_tx_hairpin_queue_setup_t tx_hairpin_queue_setup;
- /**< Set up device TX hairpin queue. */
-
- eth_fec_get_capability_t fec_get_capability;
- /**< Get Forward Error Correction(FEC) capability. */
- eth_fec_get_t fec_get;
- /**< Get Forward Error Correction(FEC) mode. */
- eth_fec_set_t fec_set;
- /**< Set Forward Error Correction(FEC) mode. */
- hairpin_get_peer_ports_t hairpin_get_peer_ports;
- /**< Get hairpin peer ports list. */
- eth_hairpin_bind_t hairpin_bind;
- /**< Bind all hairpin Tx queues of device to the peer port Rx queues. */
- eth_hairpin_unbind_t hairpin_unbind;
- /**< Unbind all hairpin Tx queues from the peer port Rx queues. */
- eth_hairpin_queue_peer_update_t hairpin_queue_peer_update;
- /**< Pass the current queue info and get the peer queue info. */
- eth_hairpin_queue_peer_bind_t hairpin_queue_peer_bind;
- /**< Set up the connection between the pair of hairpin queues. */
- eth_hairpin_queue_peer_unbind_t hairpin_queue_peer_unbind;
- /**< Disconnect the hairpin queues of a pair from each other. */
-
- eth_get_monitor_addr_t get_monitor_addr;
- /**< Get power monitoring condition for Rx queue. */
-};
-
-/**
- * RX/TX queue states
- */
-#define RTE_ETH_QUEUE_STATE_STOPPED 0
-#define RTE_ETH_QUEUE_STATE_STARTED 1
-#define RTE_ETH_QUEUE_STATE_HAIRPIN 2
-
-/**
- * @internal
- * Check if the selected Rx queue is hairpin queue.
- *
- * @param dev
- * Pointer to the selected device.
- * @param queue_id
- * The selected queue.
- *
- * @return
- * - (1) if the queue is hairpin queue, 0 otherwise.
- */
-__rte_internal
-int rte_eth_dev_is_rx_hairpin_queue(struct rte_eth_dev *dev, uint16_t queue_id);
-
-/**
- * @internal
- * Check if the selected Tx queue is hairpin queue.
- *
- * @param dev
- * Pointer to the selected device.
- * @param queue_id
- * The selected queue.
- *
- * @return
- * - (1) if the queue is hairpin queue, 0 otherwise.
- */
-__rte_internal
-int rte_eth_dev_is_tx_hairpin_queue(struct rte_eth_dev *dev, uint16_t queue_id);
-
-/**
- * @internal
- * Returns a ethdev slot specified by the unique identifier name.
- *
- * @param name
- * The pointer to the Unique identifier name for each Ethernet device
- * @return
- * - The pointer to the ethdev slot, on success. NULL on error
- */
-__rte_internal
-struct rte_eth_dev *rte_eth_dev_allocated(const char *name);
-
-/**
- * @internal
- * Allocates a new ethdev slot for an ethernet device and returns the pointer
- * to that slot for the driver to use.
- *
- * @param name Unique identifier name for each Ethernet device
- * @return
- * - Slot in the rte_dev_devices array for a new device;
- */
-__rte_internal
-struct rte_eth_dev *rte_eth_dev_allocate(const char *name);
-
-/**
- * @internal
- * Attach to the ethdev already initialized by the primary
- * process.
- *
- * @param name Ethernet device's name.
- * @return
- * - Success: Slot in the rte_dev_devices array for attached
- * device.
- * - Error: Null pointer.
- */
-__rte_internal
-struct rte_eth_dev *rte_eth_dev_attach_secondary(const char *name);
-
-/**
- * @internal
- * Notify RTE_ETH_EVENT_DESTROY and release the specified ethdev port.
- *
- * The following PMD-managed data fields will be freed:
- * - dev_private
- * - mac_addrs
- * - hash_mac_addrs
- * If one of these fields should not be freed,
- * it must be reset to NULL by the PMD, typically in dev_close method.
- *
- * @param eth_dev
- * Device to be detached.
- * @return
- * - 0 on success, negative on error
- */
-__rte_internal
-int rte_eth_dev_release_port(struct rte_eth_dev *eth_dev);
-
-/**
- * @internal
- * Release device queues and clear its configuration to force the user
- * application to reconfigure it. It is for internal use only.
- *
- * @param dev
- * Pointer to struct rte_eth_dev.
- *
- * @return
- * void
- */
-__rte_internal
-void rte_eth_dev_internal_reset(struct rte_eth_dev *dev);
-
-/**
- * @internal Executes all the user application registered callbacks for
- * the specific device. It is for DPDK internal user only. User
- * application should not call it directly.
- *
- * @param dev
- * Pointer to struct rte_eth_dev.
- * @param event
- * Eth device interrupt event type.
- * @param ret_param
- * To pass data back to user application.
- * This allows the user application to decide if a particular function
- * is permitted or not.
- *
- * @return
- * int
- */
-__rte_internal
-int rte_eth_dev_callback_process(struct rte_eth_dev *dev,
- enum rte_eth_event_type event, void *ret_param);
-
-/**
- * @internal
- * This is the last step of device probing.
- * It must be called after a port is allocated and initialized successfully.
- *
- * The notification RTE_ETH_EVENT_NEW is sent to other entities
- * (libraries and applications).
- * The state is set as RTE_ETH_DEV_ATTACHED.
- *
- * @param dev
- * New ethdev port.
- */
-__rte_internal
-void rte_eth_dev_probing_finish(struct rte_eth_dev *dev);
-
-/**
- * Create memzone for HW rings.
- * malloc can't be used as the physical address is needed.
- * If the memzone is already created, then this function returns a ptr
- * to the old one.
- *
- * @param eth_dev
- * The *eth_dev* pointer is the address of the *rte_eth_dev* structure
- * @param name
- * The name of the memory zone
- * @param queue_id
- * The index of the queue to add to name
- * @param size
- * The sizeof of the memory area
- * @param align
- * Alignment for resulting memzone. Must be a power of 2.
- * @param socket_id
- * The *socket_id* argument is the socket identifier in case of NUMA.
- */
-__rte_internal
-const struct rte_memzone *
-rte_eth_dma_zone_reserve(const struct rte_eth_dev *eth_dev, const char *name,
- uint16_t queue_id, size_t size,
- unsigned align, int socket_id);
-
-/**
- * Free previously allocated memzone for HW rings.
- *
- * @param eth_dev
- * The *eth_dev* pointer is the address of the *rte_eth_dev* structure
- * @param name
- * The name of the memory zone
- * @param queue_id
- * The index of the queue to add to name
- * @return
- * Negative errno value on error, 0 on success.
- */
-__rte_internal
-int
-rte_eth_dma_zone_free(const struct rte_eth_dev *eth_dev, const char *name,
- uint16_t queue_id);
-
-/**
- * @internal
- * Atomically set the link status for the specific device.
- * It is for use by DPDK device driver use only.
- * User applications should not call it
- *
- * @param dev
- * Pointer to struct rte_eth_dev.
- * @param link
- * New link status value.
- * @return
- * Same convention as eth_link_update operation.
- * 0 if link up status has changed
- * -1 if link up status was unchanged
- */
-static inline int
-rte_eth_linkstatus_set(struct rte_eth_dev *dev,
- const struct rte_eth_link *new_link)
-{
- uint64_t *dev_link = (uint64_t *)&(dev->data->dev_link);
- union {
- uint64_t val64;
- struct rte_eth_link link;
- } orig;
-
- RTE_BUILD_BUG_ON(sizeof(*new_link) != sizeof(uint64_t));
-
- orig.val64 = __atomic_exchange_n(dev_link, *(const uint64_t *)new_link,
- __ATOMIC_SEQ_CST);
-
- return (orig.link.link_status == new_link->link_status) ? -1 : 0;
-}
-
-/**
- * @internal
- * Atomically get the link speed and status.
- *
- * @param dev
- * Pointer to struct rte_eth_dev.
- * @param link
- * link status value.
- */
-static inline void
-rte_eth_linkstatus_get(const struct rte_eth_dev *dev,
- struct rte_eth_link *link)
-{
- uint64_t *src = (uint64_t *)&(dev->data->dev_link);
- uint64_t *dst = (uint64_t *)link;
-
- RTE_BUILD_BUG_ON(sizeof(*link) != sizeof(uint64_t));
-
- *dst = __atomic_load_n(src, __ATOMIC_SEQ_CST);
-}
-
-/**
- * Allocate an unique switch domain identifier.
- *
- * A pool of switch domain identifiers which can be allocated on request. This
- * will enabled devices which support the concept of switch domains to request
- * a switch domain id which is guaranteed to be unique from other devices
- * running in the same process.
- *
- * @param domain_id
- * switch domain identifier parameter to pass back to application
- *
- * @return
- * Negative errno value on error, 0 on success.
- */
-__rte_internal
-int
-rte_eth_switch_domain_alloc(uint16_t *domain_id);
-
-/**
- * Free switch domain.
- *
- * Return a switch domain identifier to the pool of free identifiers after it is
- * no longer in use by device.
- *
- * @param domain_id
- * switch domain identifier to free
- *
- * @return
- * Negative errno value on error, 0 on success.
- */
-__rte_internal
-int
-rte_eth_switch_domain_free(uint16_t domain_id);
-
-/** Generic Ethernet device arguments */
-struct rte_eth_devargs {
- uint16_t ports[RTE_MAX_ETHPORTS];
- /** port/s number to enable on a multi-port single function */
- uint16_t nb_ports;
- /** number of ports in ports field */
- uint16_t representor_ports[RTE_MAX_ETHPORTS];
- /** representor port/s identifier to enable on device */
- uint16_t nb_representor_ports;
- /** number of ports in representor port field */
-};
-
-/**
- * PMD helper function to parse ethdev arguments
- *
- * @param devargs
- * device arguments
- * @param eth_devargs
- * parsed ethdev specific arguments.
- *
- * @return
- * Negative errno value on error, 0 on success.
- */
-__rte_internal
-int
-rte_eth_devargs_parse(const char *devargs, struct rte_eth_devargs *eth_devargs);
-
-
-typedef int (*ethdev_init_t)(struct rte_eth_dev *ethdev, void *init_params);
-typedef int (*ethdev_bus_specific_init)(struct rte_eth_dev *ethdev,
- void *bus_specific_init_params);
-
-/**
- * PMD helper function for the creation of a new ethdev ports.
- *
- * @param device
- * rte_device handle.
- * @param name
- * port name.
- * @param priv_data_size
- * size of private data required for port.
- * @param bus_specific_init
- * port bus specific initialisation callback function
- * @param bus_init_params
- * port bus specific initialisation parameters
- * @param ethdev_init
- * device specific port initialization callback function
- * @param init_params
- * port initialisation parameters
- *
- * @return
- * Negative errno value on error, 0 on success.
- */
-__rte_internal
-int
-rte_eth_dev_create(struct rte_device *device, const char *name,
- size_t priv_data_size,
- ethdev_bus_specific_init bus_specific_init, void *bus_init_params,
- ethdev_init_t ethdev_init, void *init_params);
-
-
-typedef int (*ethdev_uninit_t)(struct rte_eth_dev *ethdev);
-
-/**
- * PMD helper function for cleaning up the resources of a ethdev port on it's
- * destruction.
- *
- * @param ethdev
- * ethdev handle of port.
- * @param ethdev_uninit
- * device specific port un-initialise callback function
- *
- * @return
- * Negative errno value on error, 0 on success.
- */
-__rte_internal
-int
-rte_eth_dev_destroy(struct rte_eth_dev *ethdev, ethdev_uninit_t ethdev_uninit);
-
-/**
- * @internal
- * Pass the current hairpin queue HW and/or SW information to the peer queue
- * and fetch back the information of the peer queue.
- *
- * @param peer_port
- * Peer port identifier of the Ethernet device.
- * @param peer_queue
- * Peer queue index of the port.
- * @param cur_info
- * Pointer to the current information structure.
- * @param peer_info
- * Pointer to the peer information, output.
- * @param direction
- * Direction to pass the information.
- * positive - pass Tx queue information and get peer Rx queue information
- * zero - pass Rx queue information and get peer Tx queue information
- *
- * @return
- * Negative errno value on error, 0 on success.
- */
-__rte_internal
-int
-rte_eth_hairpin_queue_peer_update(uint16_t peer_port, uint16_t peer_queue,
- struct rte_hairpin_peer_info *cur_info,
- struct rte_hairpin_peer_info *peer_info,
- uint32_t direction);
-
-/**
- * @internal
- * Configure current hairpin queue with the peer information fetched to create
- * the connection (bind) with peer queue in the specified direction.
- * This function might need to be called twice to fully create the connections.
- *
- * @param cur_port
- * Current port identifier of the Ethernet device.
- * @param cur_queue
- * Current queue index of the port.
- * @param peer_info
- * Pointer to the peer information, input.
- * @param direction
- * Direction to create the connection.
- * positive - bind current Tx queue to peer Rx queue
- * zero - bind current Rx queue to peer Tx queue
- *
- * @return
- * Negative errno value on error, 0 on success.
- */
-__rte_internal
-int
-rte_eth_hairpin_queue_peer_bind(uint16_t cur_port, uint16_t cur_queue,
- struct rte_hairpin_peer_info *peer_info,
- uint32_t direction);
-
-/**
- * @internal
- * Reset the current queue state and configuration to disconnect (unbind) it
- * from the peer queue.
- * This function might need to be called twice to disconnect each other.
- *
- * @param cur_port
- * Current port identifier of the Ethernet device.
- * @param cur_queue
- * Current queue index of the port.
- * @param direction
- * Direction to destroy the connection.
- * positive - unbind current Tx queue from peer Rx queue
- * zero - unbind current Rx queue from peer Tx queue
- *
- * @return
- * Negative errno value on error, 0 on success.
- */
-__rte_internal
-int
-rte_eth_hairpin_queue_peer_unbind(uint16_t cur_port, uint16_t cur_queue,
- uint32_t direction);
-
-
-/*
- * Legacy ethdev API used internally by drivers.
- */
-
-/**
- * Define all structures for Ethertype Filter type.
- */
-
-#define RTE_ETHTYPE_FLAGS_MAC 0x0001 /**< If set, compare mac */
-#define RTE_ETHTYPE_FLAGS_DROP 0x0002 /**< If set, drop packet when match */
-
-/**
- * A structure used to define the ethertype filter entry
- * to support RTE_ETH_FILTER_ETHERTYPE data representation.
- */
-struct rte_eth_ethertype_filter {
- struct rte_ether_addr mac_addr; /**< Mac address to match. */
- uint16_t ether_type; /**< Ether type to match */
- uint16_t flags; /**< Flags from RTE_ETHTYPE_FLAGS_* */
- uint16_t queue; /**< Queue assigned to when match*/
-};
-
-/**
- * A structure used to define the TCP syn filter entry
- * to support RTE_ETH_FILTER_SYN data representation.
- */
-struct rte_eth_syn_filter {
- /** 1 - higher priority than other filters, 0 - lower priority. */
- uint8_t hig_pri;
- uint16_t queue; /**< Queue assigned to when match */
-};
-
-/**
- * filter type of tunneling packet
- */
-#define ETH_TUNNEL_FILTER_OMAC 0x01 /**< filter by outer MAC addr */
-#define ETH_TUNNEL_FILTER_OIP 0x02 /**< filter by outer IP Addr */
-#define ETH_TUNNEL_FILTER_TENID 0x04 /**< filter by tenant ID */
-#define ETH_TUNNEL_FILTER_IMAC 0x08 /**< filter by inner MAC addr */
-#define ETH_TUNNEL_FILTER_IVLAN 0x10 /**< filter by inner VLAN ID */
-#define ETH_TUNNEL_FILTER_IIP 0x20 /**< filter by inner IP addr */
-
-#define RTE_TUNNEL_FILTER_IMAC_IVLAN (ETH_TUNNEL_FILTER_IMAC | \
- ETH_TUNNEL_FILTER_IVLAN)
-#define RTE_TUNNEL_FILTER_IMAC_IVLAN_TENID (ETH_TUNNEL_FILTER_IMAC | \
- ETH_TUNNEL_FILTER_IVLAN | \
- ETH_TUNNEL_FILTER_TENID)
-#define RTE_TUNNEL_FILTER_IMAC_TENID (ETH_TUNNEL_FILTER_IMAC | \
- ETH_TUNNEL_FILTER_TENID)
-#define RTE_TUNNEL_FILTER_OMAC_TENID_IMAC (ETH_TUNNEL_FILTER_OMAC | \
- ETH_TUNNEL_FILTER_TENID | \
- ETH_TUNNEL_FILTER_IMAC)
-
-/**
- * Select IPv4 or IPv6 for tunnel filters.
- */
-enum rte_tunnel_iptype {
- RTE_TUNNEL_IPTYPE_IPV4 = 0, /**< IPv4. */
- RTE_TUNNEL_IPTYPE_IPV6, /**< IPv6. */
-};
-
-/**
- * Tunneling Packet filter configuration.
- */
-struct rte_eth_tunnel_filter_conf {
- struct rte_ether_addr outer_mac; /**< Outer MAC address to match. */
- struct rte_ether_addr inner_mac; /**< Inner MAC address to match. */
- uint16_t inner_vlan; /**< Inner VLAN to match. */
- enum rte_tunnel_iptype ip_type; /**< IP address type. */
- /**
- * Outer destination IP address to match if ETH_TUNNEL_FILTER_OIP
- * is set in filter_type, or inner destination IP address to match
- * if ETH_TUNNEL_FILTER_IIP is set in filter_type.
- */
- union {
- uint32_t ipv4_addr; /**< IPv4 address in big endian. */
- uint32_t ipv6_addr[4]; /**< IPv6 address in big endian. */
- } ip_addr;
- /** Flags from ETH_TUNNEL_FILTER_XX - see above. */
- uint16_t filter_type;
- enum rte_eth_tunnel_type tunnel_type; /**< Tunnel Type. */
- uint32_t tenant_id; /**< Tenant ID to match. VNI, GRE key... */
- uint16_t queue_id; /**< Queue assigned to if match. */
-};
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _RTE_ETHDEV_DRIVER_H_ */
+++ /dev/null
-/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2017 Brocade Communications Systems, Inc.
- * Author: Jan Blunck <jblunck@infradead.org>
- */
-
-#ifndef _RTE_ETHDEV_PCI_H_
-#define _RTE_ETHDEV_PCI_H_
-
-#include <rte_malloc.h>
-#include <rte_pci.h>
-#include <rte_bus_pci.h>
-#include <rte_config.h>
-#include <rte_ethdev_driver.h>
-
-/**
- * Copy pci device info to the Ethernet device data.
- * Shared memory (eth_dev->data) only updated by primary process, so it is safe
- * to call this function from both primary and secondary processes.
- *
- * @param eth_dev
- * The *eth_dev* pointer is the address of the *rte_eth_dev* structure.
- * @param pci_dev
- * The *pci_dev* pointer is the address of the *rte_pci_device* structure.
- */
-static inline void
-rte_eth_copy_pci_info(struct rte_eth_dev *eth_dev,
- struct rte_pci_device *pci_dev)
-{
- if ((eth_dev == NULL) || (pci_dev == NULL)) {
- RTE_ETHDEV_LOG(ERR, "NULL pointer eth_dev=%p pci_dev=%p",
- (void *)eth_dev, (void *)pci_dev);
- return;
- }
-
- eth_dev->intr_handle = &pci_dev->intr_handle;
-
- if (rte_eal_process_type() == RTE_PROC_PRIMARY) {
- eth_dev->data->dev_flags = 0;
- if (pci_dev->driver->drv_flags & RTE_PCI_DRV_INTR_LSC)
- eth_dev->data->dev_flags |= RTE_ETH_DEV_INTR_LSC;
- if (pci_dev->driver->drv_flags & RTE_PCI_DRV_INTR_RMV)
- eth_dev->data->dev_flags |= RTE_ETH_DEV_INTR_RMV;
-
- eth_dev->data->numa_node = pci_dev->device.numa_node;
- }
-}
-
-static inline int
-eth_dev_pci_specific_init(struct rte_eth_dev *eth_dev, void *bus_device) {
- struct rte_pci_device *pci_dev = bus_device;
-
- if (!pci_dev)
- return -ENODEV;
-
- rte_eth_copy_pci_info(eth_dev, pci_dev);
-
- return 0;
-}
-
-/**
- * @internal
- * Allocates a new ethdev slot for an ethernet device and returns the pointer
- * to that slot for the driver to use.
- *
- * @param dev
- * Pointer to the PCI device
- *
- * @param private_data_size
- * Size of private data structure
- *
- * @return
- * A pointer to a rte_eth_dev or NULL if allocation failed.
- */
-static inline struct rte_eth_dev *
-rte_eth_dev_pci_allocate(struct rte_pci_device *dev, size_t private_data_size)
-{
- struct rte_eth_dev *eth_dev;
- const char *name;
-
- if (!dev)
- return NULL;
-
- name = dev->device.name;
-
- if (rte_eal_process_type() == RTE_PROC_PRIMARY) {
- eth_dev = rte_eth_dev_allocate(name);
- if (!eth_dev)
- return NULL;
-
- if (private_data_size) {
- eth_dev->data->dev_private = rte_zmalloc_socket(name,
- private_data_size, RTE_CACHE_LINE_SIZE,
- dev->device.numa_node);
- if (!eth_dev->data->dev_private) {
- rte_eth_dev_release_port(eth_dev);
- return NULL;
- }
- }
- } else {
- eth_dev = rte_eth_dev_attach_secondary(name);
- if (!eth_dev)
- return NULL;
- }
-
- eth_dev->device = &dev->device;
- rte_eth_copy_pci_info(eth_dev, dev);
- return eth_dev;
-}
-
-typedef int (*eth_dev_pci_callback_t)(struct rte_eth_dev *eth_dev);
-
-/**
- * @internal
- * Wrapper for use by pci drivers in a .probe function to attach to a ethdev
- * interface.
- */
-static inline int
-rte_eth_dev_pci_generic_probe(struct rte_pci_device *pci_dev,
- size_t private_data_size, eth_dev_pci_callback_t dev_init)
-{
- struct rte_eth_dev *eth_dev;
- int ret;
-
- eth_dev = rte_eth_dev_pci_allocate(pci_dev, private_data_size);
- if (!eth_dev)
- return -ENOMEM;
-
- RTE_FUNC_PTR_OR_ERR_RET(*dev_init, -EINVAL);
- ret = dev_init(eth_dev);
- if (ret)
- rte_eth_dev_release_port(eth_dev);
- else
- rte_eth_dev_probing_finish(eth_dev);
-
- return ret;
-}
-
-/**
- * @internal
- * Wrapper for use by pci drivers in a .remove function to detach a ethdev
- * interface.
- */
-static inline int
-rte_eth_dev_pci_generic_remove(struct rte_pci_device *pci_dev,
- eth_dev_pci_callback_t dev_uninit)
-{
- struct rte_eth_dev *eth_dev;
- int ret;
-
- eth_dev = rte_eth_dev_allocated(pci_dev->device.name);
- if (!eth_dev)
- return 0;
-
- if (dev_uninit) {
- ret = dev_uninit(eth_dev);
- if (ret)
- return ret;
- }
-
- rte_eth_dev_release_port(eth_dev);
- return 0;
-}
-
-#endif /* _RTE_ETHDEV_PCI_H_ */
+++ /dev/null
-/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2017 Brocade Communications Systems, Inc.
- * Author: Jan Blunck <jblunck@infradead.org>
- */
-
-#ifndef _RTE_ETHDEV_VDEV_H_
-#define _RTE_ETHDEV_VDEV_H_
-
-#include <rte_config.h>
-#include <rte_malloc.h>
-#include <rte_bus_vdev.h>
-#include <rte_ethdev_driver.h>
-
-/**
- * @internal
- * Allocates a new ethdev slot for an ethernet device and returns the pointer
- * to that slot for the driver to use.
- *
- * @param dev
- * Pointer to virtual device
- *
- * @param private_data_size
- * Size of private data structure
- *
- * @return
- * A pointer to a rte_eth_dev or NULL if allocation failed.
- */
-static inline struct rte_eth_dev *
-rte_eth_vdev_allocate(struct rte_vdev_device *dev, size_t private_data_size)
-{
- struct rte_eth_dev *eth_dev;
- const char *name = rte_vdev_device_name(dev);
-
- eth_dev = rte_eth_dev_allocate(name);
- if (!eth_dev)
- return NULL;
-
- if (private_data_size) {
- eth_dev->data->dev_private = rte_zmalloc_socket(name,
- private_data_size, RTE_CACHE_LINE_SIZE,
- dev->device.numa_node);
- if (!eth_dev->data->dev_private) {
- rte_eth_dev_release_port(eth_dev);
- return NULL;
- }
- }
-
- eth_dev->device = &dev->device;
- eth_dev->intr_handle = NULL;
-
- eth_dev->data->numa_node = dev->device.numa_node;
- return eth_dev;
-}
-
-#endif /* _RTE_ETHDEV_VDEV_H_ */
#include <stdint.h>
#include "rte_ethdev.h"
-#include "rte_ethdev_driver.h"
+#include "ethdev_driver.h"
#include "rte_flow.h"
#ifdef __cplusplus
#include <rte_errno.h>
#include "rte_ethdev.h"
-#include "rte_ethdev_driver.h"
+#include "ethdev_driver.h"
#include "rte_mtr.h"
#ifdef __cplusplus
#include <rte_errno.h>
#include "rte_ethdev.h"
-#include "rte_ethdev_driver.h"
+#include "ethdev_driver.h"
#include "rte_tm.h"
#ifdef __cplusplus