199a2dd95SBruce Richardson /* SPDX-License-Identifier: BSD-3-Clause 299a2dd95SBruce Richardson * Copyright(c) 2010-2014 Intel Corporation 399a2dd95SBruce Richardson */ 499a2dd95SBruce Richardson 599a2dd95SBruce Richardson #ifndef __INCLUDE_RTE_PORT_ETHDEV_H__ 699a2dd95SBruce Richardson #define __INCLUDE_RTE_PORT_ETHDEV_H__ 799a2dd95SBruce Richardson 899a2dd95SBruce Richardson /** 999a2dd95SBruce Richardson * @file 1099a2dd95SBruce Richardson * RTE Port Ethernet Device 1199a2dd95SBruce Richardson * 1299a2dd95SBruce Richardson * ethdev_reader: input port built on top of pre-initialized NIC RX queue 1399a2dd95SBruce Richardson * ethdev_writer: output port built on top of pre-initialized NIC TX queue 143e4c5be9SThomas Monjalon */ 1599a2dd95SBruce Richardson 1699a2dd95SBruce Richardson #include <stdint.h> 1799a2dd95SBruce Richardson 1899a2dd95SBruce Richardson #include "rte_port.h" 1999a2dd95SBruce Richardson 20*719834a6SMattias Rönnblom #ifdef __cplusplus 21*719834a6SMattias Rönnblom extern "C" { 22*719834a6SMattias Rönnblom #endif 23*719834a6SMattias Rönnblom 2499a2dd95SBruce Richardson /** ethdev_reader port parameters */ 2599a2dd95SBruce Richardson struct rte_port_ethdev_reader_params { 2699a2dd95SBruce Richardson /** NIC RX port ID */ 2799a2dd95SBruce Richardson uint16_t port_id; 2899a2dd95SBruce Richardson 2999a2dd95SBruce Richardson /** NIC RX queue ID */ 3099a2dd95SBruce Richardson uint16_t queue_id; 3199a2dd95SBruce Richardson }; 3299a2dd95SBruce Richardson 3399a2dd95SBruce Richardson /** ethdev_reader port operations */ 3499a2dd95SBruce Richardson extern struct rte_port_in_ops rte_port_ethdev_reader_ops; 3599a2dd95SBruce Richardson 3699a2dd95SBruce Richardson /** ethdev_writer port parameters */ 3799a2dd95SBruce Richardson struct rte_port_ethdev_writer_params { 3899a2dd95SBruce Richardson /** NIC RX port ID */ 3999a2dd95SBruce Richardson uint16_t port_id; 4099a2dd95SBruce Richardson 4199a2dd95SBruce Richardson /** NIC RX queue ID */ 4299a2dd95SBruce Richardson uint16_t queue_id; 4399a2dd95SBruce Richardson 4499a2dd95SBruce Richardson /** Recommended burst size to NIC TX queue. The actual burst size can be 4599a2dd95SBruce Richardson bigger or smaller than this value. */ 4699a2dd95SBruce Richardson uint32_t tx_burst_sz; 4799a2dd95SBruce Richardson }; 4899a2dd95SBruce Richardson 4999a2dd95SBruce Richardson /** ethdev_writer port operations */ 5099a2dd95SBruce Richardson extern struct rte_port_out_ops rte_port_ethdev_writer_ops; 5199a2dd95SBruce Richardson 5299a2dd95SBruce Richardson /** ethdev_writer_nodrop port parameters */ 5399a2dd95SBruce Richardson struct rte_port_ethdev_writer_nodrop_params { 5499a2dd95SBruce Richardson /** NIC RX port ID */ 5599a2dd95SBruce Richardson uint16_t port_id; 5699a2dd95SBruce Richardson 5799a2dd95SBruce Richardson /** NIC RX queue ID */ 5899a2dd95SBruce Richardson uint16_t queue_id; 5999a2dd95SBruce Richardson 6099a2dd95SBruce Richardson /** Recommended burst size to NIC TX queue. The actual burst size can be 6199a2dd95SBruce Richardson bigger or smaller than this value. */ 6299a2dd95SBruce Richardson uint32_t tx_burst_sz; 6399a2dd95SBruce Richardson 6499a2dd95SBruce Richardson /** Maximum number of retries, 0 for no limit */ 6599a2dd95SBruce Richardson uint32_t n_retries; 6699a2dd95SBruce Richardson }; 6799a2dd95SBruce Richardson 6899a2dd95SBruce Richardson /** ethdev_writer_nodrop port operations */ 6999a2dd95SBruce Richardson extern struct rte_port_out_ops rte_port_ethdev_writer_nodrop_ops; 7099a2dd95SBruce Richardson 7199a2dd95SBruce Richardson #ifdef __cplusplus 7299a2dd95SBruce Richardson } 7399a2dd95SBruce Richardson #endif 7499a2dd95SBruce Richardson 7599a2dd95SBruce Richardson #endif 76