#include "l2fwd_common.h"
int
l2fwd_event_init_ports(struct l2fwd_resources *rsrc)
{
uint16_t nb_rxd = RX_DESC_DEFAULT;
uint16_t nb_txd = TX_DESC_DEFAULT;
},
};
uint16_t nb_ports_available = 0;
uint16_t port_id;
int ret;
if (rsrc->event_mode) {
}
if ((rsrc->enabled_port_mask & (1 << port_id)) == 0) {
printf("Skipping disabled port %u\n", port_id);
continue;
}
nb_ports_available++;
printf("Initializing port %u... ", port_id);
fflush(stdout);
if (ret != 0)
rte_panic(
"Error during getting device (port %u) info: %s\n",
port_id, strerror(-ret));
printf("Port %u modified RSS hash function based on hardware support,"
"requested:%#"PRIx64" configured:%#"PRIx64"",
port_id,
}
if (ret < 0)
rte_panic(
"Cannot configure device: err=%d, port=%u\n",
ret, port_id);
&nb_txd);
if (ret < 0)
rte_panic(
"Cannot adjust number of descriptors: err=%d, port=%u\n",
ret, port_id);
fflush(stdout);
&rxq_conf,
rsrc->pktmbuf_pool);
if (ret < 0)
rte_panic(
"rte_eth_rx_queue_setup:err=%d, port=%u\n",
ret, port_id);
fflush(stdout);
&txq_conf);
if (ret < 0)
rte_panic(
"rte_eth_tx_queue_setup:err=%d, port=%u\n",
ret, port_id);
port_id,
}
return nb_ports_available;
}
static void
l2fwd_event_vector_array_free(
struct rte_event events[], uint16_t num)
{
uint16_t i;
for (i = 0; i < num; i++) {
&events[i].vec->mbufs[events[i].vec->elem_offset],
events[i].vec->nb_elem);
events[i].vec);
}
}
static void
{
l2fwd_event_vector_array_free(&ev, 1);
else
}
void
l2fwd_event_worker_cleanup(uint8_t event_d_id, uint8_t port_id,
uint16_t nb_deq, uint8_t is_vector)
{
int i;
if (nb_deq) {
if (is_vector)
l2fwd_event_vector_array_free(events + nb_enq,
nb_deq - nb_enq);
else
for (i = nb_enq; i < nb_deq; i++)
for (i = 0; i < nb_deq; i++)
}
NULL);
}
int rte_eth_dev_configure(uint16_t port_id, uint16_t nb_rx_queue, uint16_t nb_tx_queue, const struct rte_eth_conf *eth_conf)
int rte_eth_rx_queue_setup(uint16_t port_id, 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)
#define RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE
int rte_eth_dev_info_get(uint16_t port_id, struct rte_eth_dev_info *dev_info) __rte_warn_unused_result
int rte_eth_promiscuous_enable(uint16_t port_id)
int rte_eth_tx_queue_setup(uint16_t port_id, uint16_t tx_queue_id, uint16_t nb_tx_desc, unsigned int socket_id, const struct rte_eth_txconf *tx_conf)
int rte_eth_macaddr_get(uint16_t port_id, struct rte_ether_addr *mac_addr)
int rte_eth_dev_socket_id(uint16_t port_id)
int rte_eth_dev_adjust_nb_rx_tx_desc(uint16_t port_id, uint16_t *nb_rx_desc, uint16_t *nb_tx_desc)
#define RTE_ETH_FOREACH_DEV(p)
#define RTE_ETHER_ADDR_PRT_FMT
#define RTE_ETHER_ADDR_BYTES(mac_addrs)
#define RTE_EVENT_TYPE_VECTOR
void rte_event_port_quiesce(uint8_t dev_id, uint8_t port_id, rte_eventdev_port_flush_t release_cb, void *args)
#define RTE_EVENT_OP_RELEASE
static uint16_t rte_event_enqueue_burst(uint8_t dev_id, uint8_t port_id, const struct rte_event ev[], uint16_t nb_events)
static void rte_pktmbuf_free(struct rte_mbuf *m)
void rte_pktmbuf_free_bulk(struct rte_mbuf **mbufs, unsigned int count)
static struct rte_mempool * rte_mempool_from_obj(void *obj)
static __rte_always_inline void rte_mempool_put(struct rte_mempool *mp, void *obj)
struct rte_eth_txmode txmode
struct rte_eth_rxmode rxmode
struct rte_eth_rss_conf rss_conf
struct rte_eth_conf::@149 rx_adv_conf
struct rte_eth_txconf default_txconf
struct rte_eth_rxconf default_rxconf
uint64_t flow_type_rss_offloads
enum rte_eth_rx_mq_mode mq_mode
enum rte_eth_tx_mq_mode mq_mode