aboutsummaryrefslogtreecommitdiff
path: root/platform
diff options
context:
space:
mode:
authorMatias Elo <matias.elo@nokia.com>2022-10-31 14:36:24 +0200
committerMatias Elo <matias.elo@nokia.com>2022-11-30 10:32:09 +0200
commit5569a65116f998fa087ccaed221bd58a24ae62dc (patch)
treeb6ada02c234fa7ae805d0e319f1a376f2ce4c181 /platform
parent5234e07944fa288836042b7673056f203b11c6df (diff)
linux-gen: pktio: use ODP_PKTIN_MAX_QUEUES and ODP_PKTOUT_MAX_QUEUES
Use separate ODP_PKTIN_MAX_QUEUES and ODP_PKTOUT_MAX_QUEUES defines where applicable. Signed-off-by: Matias Elo <matias.elo@nokia.com> Reviewed-by: Petri Savolainen <petri.savolainen@nokia.com>
Diffstat (limited to 'platform')
-rw-r--r--platform/linux-generic/include/odp_packet_io_internal.h5
-rw-r--r--platform/linux-generic/odp_packet_io.c4
-rw-r--r--platform/linux-generic/odp_pcapng.c3
-rw-r--r--platform/linux-generic/odp_schedule_scalable.c2
-rw-r--r--platform/linux-generic/pktio/dpdk.c19
-rw-r--r--platform/linux-generic/pktio/netmap.c21
-rw-r--r--platform/linux-generic/pktio/null.c4
-rw-r--r--platform/linux-generic/pktio/socket_xdp.c8
8 files changed, 36 insertions, 30 deletions
diff --git a/platform/linux-generic/include/odp_packet_io_internal.h b/platform/linux-generic/include/odp_packet_io_internal.h
index e6373852b..73da0c2be 100644
--- a/platform/linux-generic/include/odp_packet_io_internal.h
+++ b/platform/linux-generic/include/odp_packet_io_internal.h
@@ -39,7 +39,6 @@ extern "C" {
#include <string.h>
#include <sys/select.h>
-#define PKTIO_MAX_QUEUES ODP_PKTOUT_MAX_QUEUES
#define PKTIO_LSO_PROFILES 16
/* Assume at least Ethernet header per each segment */
#define PKTIO_LSO_MIN_PAYLOAD_OFFSET 14
@@ -158,12 +157,12 @@ typedef struct ODP_ALIGNED_CACHE {
odp_queue_t queue;
odp_pktin_queue_t pktin;
odp_pktin_vector_config_t vector;
- } in_queue[PKTIO_MAX_QUEUES];
+ } in_queue[ODP_PKTIN_MAX_QUEUES];
struct {
odp_queue_t queue;
odp_pktout_queue_t pktout;
- } out_queue[PKTIO_MAX_QUEUES];
+ } out_queue[ODP_PKTOUT_MAX_QUEUES];
} pktio_entry_t;
diff --git a/platform/linux-generic/odp_packet_io.c b/platform/linux-generic/odp_packet_io.c
index dcea113bc..4eccbdc7d 100644
--- a/platform/linux-generic/odp_packet_io.c
+++ b/platform/linux-generic/odp_packet_io.c
@@ -259,7 +259,7 @@ static void init_out_queues(pktio_entry_t *entry)
{
int i;
- for (i = 0; i < PKTIO_MAX_QUEUES; i++) {
+ for (i = 0; i < ODP_PKTOUT_MAX_QUEUES; i++) {
entry->out_queue[i].queue = ODP_QUEUE_INVALID;
entry->out_queue[i].pktout = PKTOUT_INVALID;
}
@@ -279,7 +279,7 @@ static void init_pktio_entry(pktio_entry_t *entry)
odp_atomic_init_u64(&entry->stats_extra.out_discards, 0);
odp_atomic_init_u64(&entry->tx_ts, 0);
- for (i = 0; i < PKTIO_MAX_QUEUES; i++) {
+ for (i = 0; i < ODP_PKTIN_MAX_QUEUES; i++) {
entry->in_queue[i].queue = ODP_QUEUE_INVALID;
entry->in_queue[i].pktin = PKTIN_INVALID;
}
diff --git a/platform/linux-generic/odp_pcapng.c b/platform/linux-generic/odp_pcapng.c
index b08df3fc9..4423b0483 100644
--- a/platform/linux-generic/odp_pcapng.c
+++ b/platform/linux-generic/odp_pcapng.c
@@ -46,6 +46,9 @@
#define INOTIFY_BUF_LEN (16 * (sizeof(struct inotify_event)))
#define PCAPNG_WATCH_DIR "/var/run/odp/"
+#define PKTIO_MAX_QUEUES (ODP_PKTIN_MAX_QUEUES > ODP_PKTOUT_MAX_QUEUES ? \
+ ODP_PKTIN_MAX_QUEUES : ODP_PKTOUT_MAX_QUEUES)
+
/* pcapng: enhanced packet block file encoding */
typedef struct ODP_PACKED pcapng_section_hdr_block_s {
uint32_t block_type;
diff --git a/platform/linux-generic/odp_schedule_scalable.c b/platform/linux-generic/odp_schedule_scalable.c
index f90189d05..172a4d336 100644
--- a/platform/linux-generic/odp_schedule_scalable.c
+++ b/platform/linux-generic/odp_schedule_scalable.c
@@ -716,7 +716,7 @@ static void pktio_start(int pktio_idx,
_ODP_ASSERT(pktio_idx < ODP_CONFIG_PKTIO_ENTRIES);
for (i = 0; i < num_in_queue; i++) {
rxq = in_queue_idx[i];
- _ODP_ASSERT(rxq < PKTIO_MAX_QUEUES);
+ _ODP_ASSERT(rxq < ODP_PKTIN_MAX_QUEUES);
__atomic_fetch_add(&global->poll_count[pktio_idx], 1,
__ATOMIC_RELAXED);
qentry = _odp_qentry_from_ext(odpq[i]);
diff --git a/platform/linux-generic/pktio/dpdk.c b/platform/linux-generic/pktio/dpdk.c
index 30e6a0e61..205cf1075 100644
--- a/platform/linux-generic/pktio/dpdk.c
+++ b/platform/linux-generic/pktio/dpdk.c
@@ -141,7 +141,7 @@ typedef struct ODP_ALIGNED_CACHE {
/* Minimum RX burst size */
uint8_t min_rx_burst;
/* Cache for storing extra RX packets */
- pkt_cache_t rx_cache[PKTIO_MAX_QUEUES];
+ pkt_cache_t rx_cache[ODP_PKTIN_MAX_QUEUES];
/* --- Control path data --- */
@@ -162,14 +162,14 @@ typedef struct ODP_ALIGNED_CACHE {
/* Use system call to get/set vdev promisc mode */
uint8_t vdev_sysc_promisc;
/* Number of TX descriptors per queue */
- uint16_t num_tx_desc[PKTIO_MAX_QUEUES];
+ uint16_t num_tx_desc[ODP_PKTOUT_MAX_QUEUES];
/* --- Locks for MT safe operations --- */
/* RX queue locks */
- odp_ticketlock_t rx_lock[PKTIO_MAX_QUEUES] ODP_ALIGNED_CACHE;
+ odp_ticketlock_t rx_lock[ODP_PKTIN_MAX_QUEUES] ODP_ALIGNED_CACHE;
/* TX queue locks */
- odp_ticketlock_t tx_lock[PKTIO_MAX_QUEUES] ODP_ALIGNED_CACHE;
+ odp_ticketlock_t tx_lock[ODP_PKTOUT_MAX_QUEUES] ODP_ALIGNED_CACHE;
} pkt_dpdk_t;
ODP_STATIC_ASSERT(PKTIO_PRIVATE_SIZE >= sizeof(pkt_dpdk_t),
@@ -1264,7 +1264,7 @@ static int dpdk_close(pktio_entry_t *pktio_entry)
unsigned i, j;
/* Free cache packets */
- for (i = 0; i < PKTIO_MAX_QUEUES; i++) {
+ for (i = 0; i < ODP_PKTIN_MAX_QUEUES; i++) {
idx = pkt_dpdk->rx_cache[i].idx;
for (j = 0; j < pkt_dpdk->rx_cache[i].count; j++)
@@ -1572,7 +1572,7 @@ static int dpdk_init_capability(pktio_entry_t *pktio_entry,
memset(capa, 0, sizeof(odp_pktio_capability_t));
capa->max_input_queues = RTE_MIN(dev_info->max_rx_queues,
- PKTIO_MAX_QUEUES);
+ ODP_PKTIN_MAX_QUEUES);
/* ixgbe devices support only 16 rx queues in RSS mode */
if (!strncmp(dev_info->driver_name, IXGBE_DRV_NAME,
@@ -1581,7 +1581,7 @@ static int dpdk_init_capability(pktio_entry_t *pktio_entry,
capa->max_input_queues);
capa->max_output_queues = RTE_MIN(dev_info->max_tx_queues,
- PKTIO_MAX_QUEUES);
+ ODP_PKTOUT_MAX_QUEUES);
capa->min_output_queue_size = dev_info->tx_desc_lim.nb_min;
capa->max_output_queue_size = dev_info->tx_desc_lim.nb_max;
@@ -1845,10 +1845,11 @@ static int dpdk_open(odp_pktio_t id ODP_UNUSED,
return -1;
}
- for (i = 0; i < PKTIO_MAX_QUEUES; i++) {
+ for (i = 0; i < ODP_PKTIN_MAX_QUEUES; i++)
odp_ticketlock_init(&pkt_dpdk->rx_lock[i]);
+
+ for (i = 0; i < ODP_PKTOUT_MAX_QUEUES; i++)
odp_ticketlock_init(&pkt_dpdk->tx_lock[i]);
- }
rte_eth_stats_reset(pkt_dpdk->port_id);
diff --git a/platform/linux-generic/pktio/netmap.c b/platform/linux-generic/pktio/netmap.c
index 41ded2ae1..0352e33f7 100644
--- a/platform/linux-generic/pktio/netmap.c
+++ b/platform/linux-generic/pktio/netmap.c
@@ -95,9 +95,9 @@ typedef struct {
odp_bool_t lockless_rx; /**< no locking for rx */
odp_bool_t lockless_tx; /**< no locking for tx */
/** mapping of pktin queues to netmap rx descriptors */
- netmap_ring_t rx_desc_ring[PKTIO_MAX_QUEUES];
+ netmap_ring_t rx_desc_ring[ODP_PKTIN_MAX_QUEUES];
/** mapping of pktout queues to netmap tx descriptors */
- netmap_ring_t tx_desc_ring[PKTIO_MAX_QUEUES];
+ netmap_ring_t tx_desc_ring[ODP_PKTOUT_MAX_QUEUES];
netmap_opt_t opt; /**< options */
} pkt_netmap_t;
@@ -314,13 +314,15 @@ static inline void netmap_close_descriptors(pktio_entry_t *pktio_entry)
int i, j;
pkt_netmap_t *pkt_nm = pkt_priv(pktio_entry);
- for (i = 0; i < PKTIO_MAX_QUEUES; i++) {
+ for (i = 0; i < ODP_PKTIN_MAX_QUEUES; i++) {
for (j = 0; j < NM_MAX_DESC; j++) {
if (pkt_nm->rx_desc_ring[i].desc[j] != NULL) {
nm_close(pkt_nm->rx_desc_ring[i].desc[j]);
pkt_nm->rx_desc_ring[i].desc[j] = NULL;
}
}
+ }
+ for (i = 0; i < ODP_PKTOUT_MAX_QUEUES; i++) {
for (j = 0; j < NM_MAX_DESC; j++) {
if (pkt_nm->tx_desc_ring[i].desc[j] != NULL) {
nm_close(pkt_nm->tx_desc_ring[i].desc[j]);
@@ -422,8 +424,8 @@ static void netmap_init_capability(pktio_entry_t *pktio_entry)
memset(capa, 0, sizeof(odp_pktio_capability_t));
- capa->max_input_queues = PKTIO_MAX_QUEUES;
- if (pkt_nm->num_rx_rings < PKTIO_MAX_QUEUES)
+ capa->max_input_queues = ODP_PKTIN_MAX_QUEUES;
+ if (pkt_nm->num_rx_rings < ODP_PKTIN_MAX_QUEUES)
capa->max_input_queues = pkt_nm->num_rx_rings;
if (capa->max_input_queues > NM_MAX_DESC) {
/* Have to use a single descriptor to fetch packets from all
@@ -434,8 +436,8 @@ static void netmap_init_capability(pktio_entry_t *pktio_entry)
NM_MAX_DESC, capa->max_input_queues);
}
- capa->max_output_queues = PKTIO_MAX_QUEUES;
- if (pkt_nm->num_tx_rings < PKTIO_MAX_QUEUES)
+ capa->max_output_queues = ODP_PKTOUT_MAX_QUEUES;
+ if (pkt_nm->num_tx_rings < ODP_PKTOUT_MAX_QUEUES)
capa->max_output_queues = pkt_nm->num_tx_rings;
if (capa->max_output_queues > NM_MAX_DESC) {
capa->max_output_queues = NM_MAX_DESC;
@@ -578,10 +580,11 @@ static int netmap_open(odp_pktio_t id ODP_UNUSED, pktio_entry_t *pktio_entry,
nm_close(desc);
- for (i = 0; i < PKTIO_MAX_QUEUES; i++) {
+ for (i = 0; i < ODP_PKTIN_MAX_QUEUES; i++)
odp_ticketlock_init(&pkt_nm->rx_desc_ring[i].lock);
+
+ for (i = 0; i < ODP_PKTOUT_MAX_QUEUES; i++)
odp_ticketlock_init(&pkt_nm->tx_desc_ring[i].lock);
- }
if (pkt_nm->is_virtual) {
static unsigned int mac;
diff --git a/platform/linux-generic/pktio/null.c b/platform/linux-generic/pktio/null.c
index 0bd33f517..b067a68ec 100644
--- a/platform/linux-generic/pktio/null.c
+++ b/platform/linux-generic/pktio/null.c
@@ -130,8 +130,8 @@ static int null_capability(pktio_entry_t *pktio_entry ODP_UNUSED,
{
memset(capa, 0, sizeof(odp_pktio_capability_t));
- capa->max_input_queues = PKTIO_MAX_QUEUES;
- capa->max_output_queues = PKTIO_MAX_QUEUES;
+ capa->max_input_queues = ODP_PKTIN_MAX_QUEUES;
+ capa->max_output_queues = ODP_PKTOUT_MAX_QUEUES;
capa->set_op.op.promisc_mode = 0;
odp_pktio_config_init(&capa->config);
diff --git a/platform/linux-generic/pktio/socket_xdp.c b/platform/linux-generic/pktio/socket_xdp.c
index b10fc9fce..be79ca267 100644
--- a/platform/linux-generic/pktio/socket_xdp.c
+++ b/platform/linux-generic/pktio/socket_xdp.c
@@ -94,7 +94,7 @@ typedef struct {
} xdp_umem_info_t;
typedef struct {
- xdp_sock_t qs[PKTIO_MAX_QUEUES];
+ xdp_sock_t qs[ODP_PKTOUT_MAX_QUEUES];
xdp_umem_info_t *umem_info;
uint32_t num_q;
int pktio_idx;
@@ -275,7 +275,7 @@ static int sock_xdp_open(odp_pktio_t pktio, pktio_entry_t *pktio_entry, const ch
priv->max_mtu = pool->seg_len;
- for (int i = 0; i < PKTIO_MAX_QUEUES; ++i) {
+ for (int i = 0; i < ODP_PKTOUT_MAX_QUEUES; ++i) {
odp_ticketlock_init(&priv->qs[i].rx_lock);
odp_ticketlock_init(&priv->qs[i].tx_lock);
}
@@ -852,8 +852,8 @@ static int set_queue_capability(int fd, const char *devname, odp_pktio_capabilit
channels.max_combined = 1U;
}
- max_channels = _ODP_MIN((uint32_t)PKTIO_MAX_QUEUES, channels.max_combined);
- capa->max_input_queues = max_channels;
+ max_channels = _ODP_MIN((uint32_t)ODP_PKTOUT_MAX_QUEUES, channels.max_combined);
+ capa->max_input_queues = _ODP_MIN((uint32_t)ODP_PKTIN_MAX_QUEUES, max_channels);
capa->max_output_queues = max_channels;
return 0;