Backport "rhel: don't drop capabilities when running as root" Change owner of /etc/openvswitch during upgrade Use DPDK as shared libraryf38
parent
29fd8ea464
commit
a927d52891
@ -0,0 +1,62 @@
|
|||||||
|
From 827903321ab68f7cd91e9d7c5d9bdec796b3060d Mon Sep 17 00:00:00 2001
|
||||||
|
From: Roi Dayan <roid@mellanox.com>
|
||||||
|
Date: Mon, 12 Mar 2018 14:58:46 +0200
|
||||||
|
Subject: [PATCH 1/2] lib/tc: Handle error parsing action in
|
||||||
|
nl_parse_single_action
|
||||||
|
|
||||||
|
Raise the error up instead of ignoring it.
|
||||||
|
Before this commit beside an error an incorrect rule was also printed.
|
||||||
|
|
||||||
|
Signed-off-by: Roi Dayan <roid@mellanox.com>
|
||||||
|
Reviewed-by: Paul Blakey <paulb@mellanox.com>
|
||||||
|
Signed-off-by: Simon Horman <simon.horman@netronome.com>
|
||||||
|
---
|
||||||
|
lib/tc.c | 17 +++++++++++------
|
||||||
|
1 file changed, 11 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/lib/tc.c b/lib/tc.c
|
||||||
|
index 914465a9f..b49bbe89b 100644
|
||||||
|
--- a/lib/tc.c
|
||||||
|
+++ b/lib/tc.c
|
||||||
|
@@ -809,6 +809,7 @@ nl_parse_single_action(struct nlattr *action, struct tc_flower *flower)
|
||||||
|
struct nlattr *stats_attrs[ARRAY_SIZE(stats_policy)];
|
||||||
|
struct ovs_flow_stats *stats = &flower->stats;
|
||||||
|
const struct gnet_stats_basic *bs;
|
||||||
|
+ int err = 0;
|
||||||
|
|
||||||
|
if (!nl_parse_nested(action, act_policy, action_attrs,
|
||||||
|
ARRAY_SIZE(act_policy))) {
|
||||||
|
@@ -821,20 +822,24 @@ nl_parse_single_action(struct nlattr *action, struct tc_flower *flower)
|
||||||
|
act_cookie = action_attrs[TCA_ACT_COOKIE];
|
||||||
|
|
||||||
|
if (!strcmp(act_kind, "gact")) {
|
||||||
|
- nl_parse_act_drop(act_options, flower);
|
||||||
|
+ err = nl_parse_act_drop(act_options, flower);
|
||||||
|
} else if (!strcmp(act_kind, "mirred")) {
|
||||||
|
- nl_parse_act_mirred(act_options, flower);
|
||||||
|
+ err = nl_parse_act_mirred(act_options, flower);
|
||||||
|
} else if (!strcmp(act_kind, "vlan")) {
|
||||||
|
- nl_parse_act_vlan(act_options, flower);
|
||||||
|
+ err = nl_parse_act_vlan(act_options, flower);
|
||||||
|
} else if (!strcmp(act_kind, "tunnel_key")) {
|
||||||
|
- nl_parse_act_tunnel_key(act_options, flower);
|
||||||
|
+ err = nl_parse_act_tunnel_key(act_options, flower);
|
||||||
|
} else if (!strcmp(act_kind, "pedit")) {
|
||||||
|
- nl_parse_act_pedit(act_options, flower);
|
||||||
|
+ err = nl_parse_act_pedit(act_options, flower);
|
||||||
|
} else if (!strcmp(act_kind, "csum")) {
|
||||||
|
nl_parse_act_csum(act_options, flower);
|
||||||
|
} else {
|
||||||
|
VLOG_ERR_RL(&error_rl, "unknown tc action kind: %s", act_kind);
|
||||||
|
- return EINVAL;
|
||||||
|
+ err = EINVAL;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (err) {
|
||||||
|
+ return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (act_cookie) {
|
||||||
|
--
|
||||||
|
2.14.3
|
||||||
|
|
@ -1,43 +0,0 @@
|
|||||||
From f596cb198e65ff6839d35763d824399eb407adab Mon Sep 17 00:00:00 2001
|
|
||||||
From: Hyong Youb Kim <hyonkim@cisco.com>
|
|
||||||
Date: Wed, 10 Jan 2018 01:17:04 -0800
|
|
||||||
Subject: [PATCH] net/enic: fix L4 Rx ptype comparison
|
|
||||||
|
|
||||||
[ upstream commit 5dbff3af25a4a68980992f5040246e1d7f20b4cd ]
|
|
||||||
|
|
||||||
For non-UDP/TCP packets, enic may wrongly set PKT_RX_L4_CKSUM_BAD in
|
|
||||||
ol_flags. The comparison that checks if a packet is UDP or TCP assumes
|
|
||||||
that RTE_PTYPE_L4 values are bit flags, but they are not. For example,
|
|
||||||
the following evaluates to true because NONFRAG is 0x600 and UDP is
|
|
||||||
0x200, and causes the current code to think the packet is UDP.
|
|
||||||
|
|
||||||
!!(RTE_PTYPE_L4_NONFRAG & RTE_PTYPE_L4_UDP)
|
|
||||||
|
|
||||||
So, fix this by comparing the packet type against UDP and TCP
|
|
||||||
individually.
|
|
||||||
|
|
||||||
Fixes: 453d15059b58 ("net/enic: use new Rx checksum flags")
|
|
||||||
|
|
||||||
Signed-off-by: Hyong Youb Kim <hyonkim@cisco.com>
|
|
||||||
Reviewed-by: John Daley <johndale@cisco.com>
|
|
||||||
---
|
|
||||||
drivers/net/enic/enic_rxtx.c | 3 ++-
|
|
||||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/dpdk-17.11/drivers/net/enic/enic_rxtx.c b/dpdk-17.11/drivers/net/enic/enic_rxtx.c
|
|
||||||
index a3663d516..831c90a1c 100644
|
|
||||||
--- a/dpdk-17.11/drivers/net/enic/enic_rxtx.c
|
|
||||||
+++ b/dpdk-17.11/drivers/net/enic/enic_rxtx.c
|
|
||||||
@@ -285,7 +285,8 @@ enic_cq_rx_to_pkt_flags(struct cq_desc *cqd, struct rte_mbuf *mbuf)
|
|
||||||
else
|
|
||||||
pkt_flags |= PKT_RX_IP_CKSUM_BAD;
|
|
||||||
|
|
||||||
- if (l4_flags & (RTE_PTYPE_L4_UDP | RTE_PTYPE_L4_TCP)) {
|
|
||||||
+ if (l4_flags == RTE_PTYPE_L4_UDP ||
|
|
||||||
+ l4_flags == RTE_PTYPE_L4_TCP) {
|
|
||||||
if (enic_cq_rx_desc_tcp_udp_csum_ok(cqrd))
|
|
||||||
pkt_flags |= PKT_RX_L4_CKSUM_GOOD;
|
|
||||||
else
|
|
||||||
--
|
|
||||||
2.14.3
|
|
||||||
|
|
@ -1,194 +0,0 @@
|
|||||||
From acc4c80cf3b5fb3c0f87bcb7c4eb68958f60ef15 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Hyong Youb Kim <hyonkim@cisco.com>
|
|
||||||
Date: Mon, 22 Jan 2018 17:05:28 -0800
|
|
||||||
Subject: [PATCH] net/enic: fix crash due to static max number of queues
|
|
||||||
|
|
||||||
[ upstream commit 6c45c330589d334c4f7b729e61ae30a6acfcc119 ]
|
|
||||||
|
|
||||||
ENIC_CQ_MAX, ENIC_WQ_MAX and others are arbitrary values that
|
|
||||||
prevent the app from using more queues when they are available on
|
|
||||||
hardware. Remove them and dynamically allocate vnic_cq and such
|
|
||||||
arrays to accommodate all available hardware queues.
|
|
||||||
|
|
||||||
As a side effect of removing ENIC_CQ_MAX, this commit fixes a segfault
|
|
||||||
that would happen when the app requests more than 16 CQs, because
|
|
||||||
enic_set_vnic_res() does not consider ENIC_CQ_MAX. For example, the
|
|
||||||
following command causes a crash.
|
|
||||||
|
|
||||||
testpmd -- --rxq=16 --txq=16
|
|
||||||
|
|
||||||
Fixes: ce93d3c36db0 ("net/enic: fix resource check failures when bonding devices")
|
|
||||||
|
|
||||||
Signed-off-by: Hyong Youb Kim <hyonkim@cisco.com>
|
|
||||||
Reviewed-by: John Daley <johndale@cisco.com>
|
|
||||||
---
|
|
||||||
drivers/net/enic/enic.h | 25 +++++++++---------------
|
|
||||||
drivers/net/enic/enic_ethdev.c | 20 ++------------------
|
|
||||||
drivers/net/enic/enic_main.c | 43 ++++++++++++++++++++++++++++++++----------
|
|
||||||
3 files changed, 44 insertions(+), 44 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/dpdk-17.11/drivers/net/enic/enic.h b/dpdk-17.11/drivers/net/enic/enic.h
|
|
||||||
index e36ec385c..a43fddc5f 100644
|
|
||||||
--- a/dpdk-17.11/drivers/net/enic/enic.h
|
|
||||||
+++ b/dpdk-17.11/drivers/net/enic/enic.h
|
|
||||||
@@ -53,13 +53,6 @@
|
|
||||||
#define DRV_DESCRIPTION "Cisco VIC Ethernet NIC Poll-mode Driver"
|
|
||||||
#define DRV_COPYRIGHT "Copyright 2008-2015 Cisco Systems, Inc"
|
|
||||||
|
|
||||||
-#define ENIC_WQ_MAX 8
|
|
||||||
-/* With Rx scatter support, we use two RQs on VIC per RQ used by app. Both
|
|
||||||
- * RQs use the same CQ.
|
|
||||||
- */
|
|
||||||
-#define ENIC_RQ_MAX 16
|
|
||||||
-#define ENIC_CQ_MAX (ENIC_WQ_MAX + (ENIC_RQ_MAX / 2))
|
|
||||||
-#define ENIC_INTR_MAX (ENIC_CQ_MAX + 2)
|
|
||||||
#define ENIC_MAX_MAC_ADDR 64
|
|
||||||
|
|
||||||
#define VLAN_ETH_HLEN 18
|
|
||||||
@@ -150,17 +143,17 @@ struct enic {
|
|
||||||
unsigned int flags;
|
|
||||||
unsigned int priv_flags;
|
|
||||||
|
|
||||||
- /* work queue */
|
|
||||||
- struct vnic_wq wq[ENIC_WQ_MAX];
|
|
||||||
- unsigned int wq_count;
|
|
||||||
+ /* work queue (len = conf_wq_count) */
|
|
||||||
+ struct vnic_wq *wq;
|
|
||||||
+ unsigned int wq_count; /* equals eth_dev nb_tx_queues */
|
|
||||||
|
|
||||||
- /* receive queue */
|
|
||||||
- struct vnic_rq rq[ENIC_RQ_MAX];
|
|
||||||
- unsigned int rq_count;
|
|
||||||
+ /* receive queue (len = conf_rq_count) */
|
|
||||||
+ struct vnic_rq *rq;
|
|
||||||
+ unsigned int rq_count; /* equals eth_dev nb_rx_queues */
|
|
||||||
|
|
||||||
- /* completion queue */
|
|
||||||
- struct vnic_cq cq[ENIC_CQ_MAX];
|
|
||||||
- unsigned int cq_count;
|
|
||||||
+ /* completion queue (len = conf_cq_count) */
|
|
||||||
+ struct vnic_cq *cq;
|
|
||||||
+ unsigned int cq_count; /* equals rq_count + wq_count */
|
|
||||||
|
|
||||||
/* interrupt resource */
|
|
||||||
struct vnic_intr intr;
|
|
||||||
diff --git a/dpdk-17.11/drivers/net/enic/enic_ethdev.c b/dpdk-17.11/drivers/net/enic/enic_ethdev.c
|
|
||||||
index 669dbf336..98391b008 100644
|
|
||||||
--- a/dpdk-17.11/drivers/net/enic/enic_ethdev.c
|
|
||||||
+++ b/dpdk-17.11/drivers/net/enic/enic_ethdev.c
|
|
||||||
@@ -205,13 +205,7 @@ static int enicpmd_dev_tx_queue_setup(struct rte_eth_dev *eth_dev,
|
|
||||||
return -E_RTE_SECONDARY;
|
|
||||||
|
|
||||||
ENICPMD_FUNC_TRACE();
|
|
||||||
- if (queue_idx >= ENIC_WQ_MAX) {
|
|
||||||
- dev_err(enic,
|
|
||||||
- "Max number of TX queues exceeded. Max is %d\n",
|
|
||||||
- ENIC_WQ_MAX);
|
|
||||||
- return -EINVAL;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
+ RTE_ASSERT(queue_idx < enic->conf_wq_count);
|
|
||||||
eth_dev->data->tx_queues[queue_idx] = (void *)&enic->wq[queue_idx];
|
|
||||||
|
|
||||||
ret = enic_alloc_wq(enic, queue_idx, socket_id, nb_desc);
|
|
||||||
@@ -325,17 +319,7 @@ static int enicpmd_dev_rx_queue_setup(struct rte_eth_dev *eth_dev,
|
|
||||||
|
|
||||||
if (rte_eal_process_type() != RTE_PROC_PRIMARY)
|
|
||||||
return -E_RTE_SECONDARY;
|
|
||||||
-
|
|
||||||
- /* With Rx scatter support, two RQs are now used on VIC per RQ used
|
|
||||||
- * by the application.
|
|
||||||
- */
|
|
||||||
- if (queue_idx * 2 >= ENIC_RQ_MAX) {
|
|
||||||
- dev_err(enic,
|
|
||||||
- "Max number of RX queues exceeded. Max is %d. This PMD uses 2 RQs on VIC per RQ used by DPDK.\n",
|
|
||||||
- ENIC_RQ_MAX);
|
|
||||||
- return -EINVAL;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
+ RTE_ASSERT(enic_rte_rq_idx_to_sop_idx(queue_idx) < enic->conf_rq_count);
|
|
||||||
eth_dev->data->rx_queues[queue_idx] =
|
|
||||||
(void *)&enic->rq[enic_rte_rq_idx_to_sop_idx(queue_idx)];
|
|
||||||
|
|
||||||
diff --git a/dpdk-17.11/drivers/net/enic/enic_main.c b/dpdk-17.11/drivers/net/enic/enic_main.c
|
|
||||||
index 8af0ccd3c..1694aed12 100644
|
|
||||||
--- a/dpdk-17.11/drivers/net/enic/enic_main.c
|
|
||||||
+++ b/dpdk-17.11/drivers/net/enic/enic_main.c
|
|
||||||
@@ -1075,6 +1075,9 @@ static void enic_dev_deinit(struct enic *enic)
|
|
||||||
vnic_dev_notify_unset(enic->vdev);
|
|
||||||
|
|
||||||
rte_free(eth_dev->data->mac_addrs);
|
|
||||||
+ rte_free(enic->cq);
|
|
||||||
+ rte_free(enic->rq);
|
|
||||||
+ rte_free(enic->wq);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1082,27 +1085,28 @@ int enic_set_vnic_res(struct enic *enic)
|
|
||||||
{
|
|
||||||
struct rte_eth_dev *eth_dev = enic->rte_dev;
|
|
||||||
int rc = 0;
|
|
||||||
+ unsigned int required_rq, required_wq, required_cq;
|
|
||||||
|
|
||||||
- /* With Rx scatter support, two RQs are now used per RQ used by
|
|
||||||
- * the application.
|
|
||||||
- */
|
|
||||||
- if (enic->conf_rq_count < eth_dev->data->nb_rx_queues) {
|
|
||||||
+ /* Always use two vNIC RQs per eth_dev RQ, regardless of Rx scatter. */
|
|
||||||
+ required_rq = eth_dev->data->nb_rx_queues * 2;
|
|
||||||
+ required_wq = eth_dev->data->nb_tx_queues;
|
|
||||||
+ required_cq = eth_dev->data->nb_rx_queues + eth_dev->data->nb_tx_queues;
|
|
||||||
+
|
|
||||||
+ if (enic->conf_rq_count < required_rq) {
|
|
||||||
dev_err(dev, "Not enough Receive queues. Requested:%u which uses %d RQs on VIC, Configured:%u\n",
|
|
||||||
eth_dev->data->nb_rx_queues,
|
|
||||||
- eth_dev->data->nb_rx_queues * 2, enic->conf_rq_count);
|
|
||||||
+ required_rq, enic->conf_rq_count);
|
|
||||||
rc = -EINVAL;
|
|
||||||
}
|
|
||||||
- if (enic->conf_wq_count < eth_dev->data->nb_tx_queues) {
|
|
||||||
+ if (enic->conf_wq_count < required_wq) {
|
|
||||||
dev_err(dev, "Not enough Transmit queues. Requested:%u, Configured:%u\n",
|
|
||||||
eth_dev->data->nb_tx_queues, enic->conf_wq_count);
|
|
||||||
rc = -EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
- if (enic->conf_cq_count < (eth_dev->data->nb_rx_queues +
|
|
||||||
- eth_dev->data->nb_tx_queues)) {
|
|
||||||
+ if (enic->conf_cq_count < required_cq) {
|
|
||||||
dev_err(dev, "Not enough Completion queues. Required:%u, Configured:%u\n",
|
|
||||||
- (eth_dev->data->nb_rx_queues +
|
|
||||||
- eth_dev->data->nb_tx_queues), enic->conf_cq_count);
|
|
||||||
+ required_cq, enic->conf_cq_count);
|
|
||||||
rc = -EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1307,6 +1311,25 @@ static int enic_dev_init(struct enic *enic)
|
|
||||||
dev_err(enic, "See the ENIC PMD guide for more information.\n");
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
+ /* Queue counts may be zeros. rte_zmalloc returns NULL in that case. */
|
|
||||||
+ enic->cq = rte_zmalloc("enic_vnic_cq", sizeof(struct vnic_cq) *
|
|
||||||
+ enic->conf_cq_count, 8);
|
|
||||||
+ enic->rq = rte_zmalloc("enic_vnic_rq", sizeof(struct vnic_rq) *
|
|
||||||
+ enic->conf_rq_count, 8);
|
|
||||||
+ enic->wq = rte_zmalloc("enic_vnic_wq", sizeof(struct vnic_wq) *
|
|
||||||
+ enic->conf_wq_count, 8);
|
|
||||||
+ if (enic->conf_cq_count > 0 && enic->cq == NULL) {
|
|
||||||
+ dev_err(enic, "failed to allocate vnic_cq, aborting.\n");
|
|
||||||
+ return -1;
|
|
||||||
+ }
|
|
||||||
+ if (enic->conf_rq_count > 0 && enic->rq == NULL) {
|
|
||||||
+ dev_err(enic, "failed to allocate vnic_rq, aborting.\n");
|
|
||||||
+ return -1;
|
|
||||||
+ }
|
|
||||||
+ if (enic->conf_wq_count > 0 && enic->wq == NULL) {
|
|
||||||
+ dev_err(enic, "failed to allocate vnic_wq, aborting.\n");
|
|
||||||
+ return -1;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
/* Get the supported filters */
|
|
||||||
enic_fdir_info(enic);
|
|
||||||
--
|
|
||||||
2.14.3
|
|
||||||
|
|
@ -0,0 +1,57 @@
|
|||||||
|
From 118b21d93f55f4cdb511d770c90f0d49bd624187 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Eric Garver <e@erig.me>
|
||||||
|
Date: Thu, 1 Mar 2018 17:59:41 -0500
|
||||||
|
Subject: [PATCH 1/2] ofproto-dpif-xlate: translate action_set in clone action
|
||||||
|
|
||||||
|
A clone action saves the action_set prior to performing the clone, then
|
||||||
|
restores it afterwards. However when xlating the actions it neglects to
|
||||||
|
consider the action_set so any write_action() inside a clone() are
|
||||||
|
ignored. Unfortunately patch ports are internally implemented via
|
||||||
|
clone(). So a frame traversing to a second bridge via patch port will
|
||||||
|
never be affected by write_action() in the second bridge's flow table.
|
||||||
|
|
||||||
|
Lets make clone() aware of the action_set.
|
||||||
|
|
||||||
|
Signed-off-by: Eric Garver <e@erig.me>
|
||||||
|
Signed-off-by: Ben Pfaff <blp@ovn.org>
|
||||||
|
---
|
||||||
|
ofproto/ofproto-dpif-xlate.c | 9 +++++++++
|
||||||
|
1 file changed, 9 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/ofproto/ofproto-dpif-xlate.c b/ofproto/ofproto-dpif-xlate.c
|
||||||
|
index cc450a896948..bc6429c25346 100644
|
||||||
|
--- a/ofproto/ofproto-dpif-xlate.c
|
||||||
|
+++ b/ofproto/ofproto-dpif-xlate.c
|
||||||
|
@@ -5303,6 +5303,9 @@ clone_xlate_actions(const struct ofpact *actions, size_t actions_len,
|
||||||
|
if (reversible_actions(actions, actions_len) || is_last_action) {
|
||||||
|
old_flow = ctx->xin->flow;
|
||||||
|
do_xlate_actions(actions, actions_len, ctx, is_last_action);
|
||||||
|
+ if (!ctx->freezing) {
|
||||||
|
+ xlate_action_set(ctx);
|
||||||
|
+ }
|
||||||
|
if (ctx->freezing) {
|
||||||
|
finish_freezing(ctx);
|
||||||
|
}
|
||||||
|
@@ -5324,6 +5327,9 @@ clone_xlate_actions(const struct ofpact *actions, size_t actions_len,
|
||||||
|
/* Use clone action as datapath clone. */
|
||||||
|
offset = nl_msg_start_nested(ctx->odp_actions, OVS_ACTION_ATTR_CLONE);
|
||||||
|
do_xlate_actions(actions, actions_len, ctx, true);
|
||||||
|
+ if (!ctx->freezing) {
|
||||||
|
+ xlate_action_set(ctx);
|
||||||
|
+ }
|
||||||
|
if (ctx->freezing) {
|
||||||
|
finish_freezing(ctx);
|
||||||
|
}
|
||||||
|
@@ -5337,6 +5343,9 @@ clone_xlate_actions(const struct ofpact *actions, size_t actions_len,
|
||||||
|
ac_offset = nl_msg_start_nested(ctx->odp_actions,
|
||||||
|
OVS_SAMPLE_ATTR_ACTIONS);
|
||||||
|
do_xlate_actions(actions, actions_len, ctx, true);
|
||||||
|
+ if (!ctx->freezing) {
|
||||||
|
+ xlate_action_set(ctx);
|
||||||
|
+ }
|
||||||
|
if (ctx->freezing) {
|
||||||
|
finish_freezing(ctx);
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.11.0
|
||||||
|
|
@ -0,0 +1,61 @@
|
|||||||
|
From b91dd29864d853228add9d9d432ca3d1bbc4fa43 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Mark Michelson <mmichels@redhat.com>
|
||||||
|
Date: Wed, 7 Mar 2018 09:31:00 -0600
|
||||||
|
Subject: [PATCH] ovn: Calculate UDP checksum for DNS over IPv6
|
||||||
|
|
||||||
|
Unlike IPv4, IPv6 mandates the calculation of the UDP checksum. For DNS
|
||||||
|
resolution in OVN, we were setting the checksum to 0, which results in
|
||||||
|
errors.
|
||||||
|
|
||||||
|
This patch fixes the problem by calculating the checksum for DNS over
|
||||||
|
IPv6. It also alters the applicable test by skipping the checksum when
|
||||||
|
comparing the expected and actual packets.
|
||||||
|
|
||||||
|
Signed-off-by: Mark Michelson <mmichels@redhat.com>
|
||||||
|
Signed-off-by: Ben Pfaff <blp@ovn.org>
|
||||||
|
---
|
||||||
|
ovn/controller/pinctrl.c | 11 +++++++++++
|
||||||
|
tests/ovn.at | 5 +++--
|
||||||
|
2 files changed, 14 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/ovn/controller/pinctrl.c b/ovn/controller/pinctrl.c
|
||||||
|
index 9fc7a0326..980f51fc9 100644
|
||||||
|
--- a/ovn/controller/pinctrl.c
|
||||||
|
+++ b/ovn/controller/pinctrl.c
|
||||||
|
@@ -927,6 +927,17 @@ pinctrl_handle_dns_lookup(
|
||||||
|
} else {
|
||||||
|
struct ovs_16aligned_ip6_hdr *nh = dp_packet_l3(&pkt_out);
|
||||||
|
nh->ip6_plen = htons(new_l4_size);
|
||||||
|
+
|
||||||
|
+ /* IPv6 needs UDP checksum calculated */
|
||||||
|
+ uint32_t csum;
|
||||||
|
+ csum = packet_csum_pseudoheader6(nh);
|
||||||
|
+ csum = csum_continue(csum, out_udp, dp_packet_size(&pkt_out) -
|
||||||
|
+ ((const unsigned char *)out_udp -
|
||||||
|
+ (const unsigned char *)eth));
|
||||||
|
+ out_udp->udp_csum = csum_finish(csum);
|
||||||
|
+ if (!out_udp->udp_csum) {
|
||||||
|
+ out_udp->udp_csum = htons(0xffff);
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
pin->packet = dp_packet_data(&pkt_out);
|
||||||
|
diff --git a/tests/ovn.at b/tests/ovn.at
|
||||||
|
index b57a93d3f..83c0e9d6e 100644
|
||||||
|
--- a/tests/ovn.at
|
||||||
|
+++ b/tests/ovn.at
|
||||||
|
@@ -7099,8 +7099,9 @@ test_dns6 1 f00000000001 f000000000f0 $src_ip $dst_ip $dns_reply $dns_req_data $
|
||||||
|
OVS_WAIT_UNTIL([test 9 = `cat ofctl_monitor*.log | grep -c NXT_RESUME`])
|
||||||
|
|
||||||
|
$PYTHON "$top_srcdir/utilities/ovs-pcap.in" hv1/vif1-tx.pcap > 1.packets
|
||||||
|
-cat 1.expected > expout
|
||||||
|
-AT_CHECK([cat 1.packets], [0], [expout])
|
||||||
|
+# Skipping the UDP checksum.
|
||||||
|
+cat 1.expected | cut -c 1-120,125- > expout
|
||||||
|
+AT_CHECK([cat 1.packets | cut -c 1-120,125-], [0], [expout])
|
||||||
|
|
||||||
|
reset_pcap_file hv1-vif1 hv1/vif1
|
||||||
|
reset_pcap_file hv1-vif2 hv1/vif2
|
||||||
|
--
|
||||||
|
2.14.3
|
||||||
|
|
@ -0,0 +1,81 @@
|
|||||||
|
From 6796c04a9afacf2d09248509d54d5ea586050a3c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Aaron Conole <aconole@redhat.com>
|
||||||
|
Date: Tue, 13 Feb 2018 16:42:16 -0500
|
||||||
|
Subject: [PATCH] rhel: don't drop capabilities when running as root
|
||||||
|
|
||||||
|
Currently, regardless of which user is being set as the running user,
|
||||||
|
Open vSwitch daemons on RHEL systems drop capabilities. This means the
|
||||||
|
very powerful CAP_SYS_ADMIN is dropped, even when the user is 'root'.
|
||||||
|
|
||||||
|
For the majority of use cases this behavior works, as the user can
|
||||||
|
enable or disable various configurations, regardless of which datapath
|
||||||
|
functions are desired. However, when using certain DPDK PMDs, the
|
||||||
|
enablement and configuration calls require CAP_SYS_ADMIN.
|
||||||
|
|
||||||
|
Instead of retaining CAP_SYS_ADMIN in all cases, which would practically
|
||||||
|
nullify the uid/gid and privilege drop, we don't pass the --ovs-user
|
||||||
|
option to the daemons. This shunts the capability and privilege
|
||||||
|
dropping code.
|
||||||
|
|
||||||
|
Reported-by: Marcos Felipe Schwarz <marcos.f.sch@gmail.com>
|
||||||
|
Reported-at: https://mail.openvswitch.org/pipermail/ovs-discuss/2018-January/045955.html
|
||||||
|
Fixes: e3e738a3d058 ("redhat: allow dpdk to also run as non-root user")
|
||||||
|
Signed-off-by: Aaron Conole <aconole@redhat.com>
|
||||||
|
Acked-By: Timothy Redaelli <tredaelli@redhat.com>
|
||||||
|
Signed-off-by: Russell Bryant <russell@ovn.org>
|
||||||
|
---
|
||||||
|
rhel/usr_lib_systemd_system_ovs-vswitchd.service.in | 7 ++++---
|
||||||
|
rhel/usr_lib_systemd_system_ovsdb-server.service | 6 ++++--
|
||||||
|
2 files changed, 8 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/rhel/usr_lib_systemd_system_ovs-vswitchd.service.in b/rhel/usr_lib_systemd_system_ovs-vswitchd.service.in
|
||||||
|
index c6d9aa1b8..889740f1a 100644
|
||||||
|
--- a/rhel/usr_lib_systemd_system_ovs-vswitchd.service.in
|
||||||
|
+++ b/rhel/usr_lib_systemd_system_ovs-vswitchd.service.in
|
||||||
|
@@ -13,17 +13,18 @@ Restart=on-failure
|
||||||
|
Environment=HOME=/var/run/openvswitch
|
||||||
|
EnvironmentFile=/etc/openvswitch/default.conf
|
||||||
|
EnvironmentFile=-/etc/sysconfig/openvswitch
|
||||||
|
+EnvironmentFile=-/run/openvswitch/useropts
|
||||||
|
@begin_dpdk@
|
||||||
|
-ExecStartPre=-/usr/bin/chown :hugetlbfs /dev/hugepages
|
||||||
|
+ExecStartPre=-/bin/sh -c '/usr/bin/chown :${OVS_USER_ID##*:} /dev/hugepages'
|
||||||
|
ExecStartPre=-/usr/bin/chmod 0775 /dev/hugepages
|
||||||
|
@end_dpdk@
|
||||||
|
ExecStart=/usr/share/openvswitch/scripts/ovs-ctl \
|
||||||
|
--no-ovsdb-server --no-monitor --system-id=random \
|
||||||
|
- --ovs-user=${OVS_USER_ID} \
|
||||||
|
+ ${OVSUSER} \
|
||||||
|
start $OPTIONS
|
||||||
|
ExecStop=/usr/share/openvswitch/scripts/ovs-ctl --no-ovsdb-server stop
|
||||||
|
ExecReload=/usr/share/openvswitch/scripts/ovs-ctl --no-ovsdb-server \
|
||||||
|
--no-monitor --system-id=random \
|
||||||
|
- --ovs-user=${OVS_USER_ID} \
|
||||||
|
+ ${OVSUSER} \
|
||||||
|
restart $OPTIONS
|
||||||
|
TimeoutSec=300
|
||||||
|
diff --git a/rhel/usr_lib_systemd_system_ovsdb-server.service b/rhel/usr_lib_systemd_system_ovsdb-server.service
|
||||||
|
index 234d39355..e05742d87 100644
|
||||||
|
--- a/rhel/usr_lib_systemd_system_ovsdb-server.service
|
||||||
|
+++ b/rhel/usr_lib_systemd_system_ovsdb-server.service
|
||||||
|
@@ -11,13 +11,15 @@ Restart=on-failure
|
||||||
|
EnvironmentFile=/etc/openvswitch/default.conf
|
||||||
|
EnvironmentFile=-/etc/sysconfig/openvswitch
|
||||||
|
ExecStartPre=/usr/bin/chown ${OVS_USER_ID} /var/run/openvswitch
|
||||||
|
+ExecStartPre=/bin/sh -c 'rm -f /run/openvswitch/useropts; if [ "${OVS_USER_ID/:*/}" != "root" ]; then /usr/bin/echo "OVSUSER=--ovs-user=${OVS_USER_ID}" > /run/openvswitch/useropts; fi'
|
||||||
|
+EnvironmentFile=-/run/openvswitch/useropts
|
||||||
|
ExecStart=/usr/share/openvswitch/scripts/ovs-ctl \
|
||||||
|
--no-ovs-vswitchd --no-monitor --system-id=random \
|
||||||
|
- --ovs-user=${OVS_USER_ID} \
|
||||||
|
+ ${OVSUSER} \
|
||||||
|
start $OPTIONS
|
||||||
|
ExecStop=/usr/share/openvswitch/scripts/ovs-ctl --no-ovs-vswitchd stop
|
||||||
|
ExecReload=/usr/share/openvswitch/scripts/ovs-ctl --no-ovs-vswitchd \
|
||||||
|
- --ovs-user=${OVS_USER_ID} \
|
||||||
|
+ ${OVSUSER} \
|
||||||
|
--no-monitor restart $OPTIONS
|
||||||
|
RuntimeDirectory=openvswitch
|
||||||
|
RuntimeDirectoryMode=0755
|
||||||
|
--
|
||||||
|
2.14.3
|
||||||
|
|
@ -1,59 +0,0 @@
|
|||||||
From fec618a3fdcc88fa50089edb5748a6554ac49070 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Maxime Coquelin <maxime.coquelin@redhat.com>
|
|
||||||
Date: Wed, 13 Dec 2017 09:51:06 +0100
|
|
||||||
Subject: [PATCH 1/6] vhost: prevent features to be changed while device is
|
|
||||||
running
|
|
||||||
|
|
||||||
As section 2.2 of the Virtio spec states about features
|
|
||||||
negotiation:
|
|
||||||
"During device initialization, the driver reads this and tells
|
|
||||||
the device the subset that it accepts. The only way to
|
|
||||||
renegotiate is to reset the device."
|
|
||||||
|
|
||||||
This patch implements a check to prevent illegal features change
|
|
||||||
while the device is running.
|
|
||||||
|
|
||||||
One exception is the VHOST_F_LOG_ALL feature bit, which is enabled
|
|
||||||
when live-migration is initiated. But this feature is not negotiated
|
|
||||||
with the Virtio driver, but directly with the Vhost master.
|
|
||||||
|
|
||||||
Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
|
|
||||||
Acked-by: Laszlo Ersek <lersek@redhat.com>
|
|
||||||
Acked-by: Yuanhan Liu <yliu@fridaylinux.org>
|
|
||||||
(cherry picked from commit 07f8db29b8833378dd506f3e197319f8b669aed9)
|
|
||||||
Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
|
|
||||||
---
|
|
||||||
dpdk-17.11/lib/librte_vhost/vhost_user.c | 17 ++++++++++++++++-
|
|
||||||
1 file changed, 16 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/dpdk-17.11/lib/librte_vhost/vhost_user.c b/dpdk-17.11/lib/librte_vhost/vhost_user.c
|
|
||||||
index f4c7ce462..545dbcb2b 100644
|
|
||||||
--- a/dpdk-17.11/lib/librte_vhost/vhost_user.c
|
|
||||||
+++ b/dpdk-17.11/lib/librte_vhost/vhost_user.c
|
|
||||||
@@ -183,7 +183,22 @@ vhost_user_set_features(struct virtio_net *dev, uint64_t features)
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
- if ((dev->flags & VIRTIO_DEV_RUNNING) && dev->features != features) {
|
|
||||||
+ if (dev->flags & VIRTIO_DEV_RUNNING) {
|
|
||||||
+ if (dev->features == features)
|
|
||||||
+ return 0;
|
|
||||||
+
|
|
||||||
+ /*
|
|
||||||
+ * Error out if master tries to change features while device is
|
|
||||||
+ * in running state. The exception being VHOST_F_LOG_ALL, which
|
|
||||||
+ * is enabled when the live-migration starts.
|
|
||||||
+ */
|
|
||||||
+ if ((dev->features ^ features) & ~(1ULL << VHOST_F_LOG_ALL)) {
|
|
||||||
+ RTE_LOG(ERR, VHOST_CONFIG,
|
|
||||||
+ "(%d) features changed while device is running.\n",
|
|
||||||
+ dev->vid);
|
|
||||||
+ return -1;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
if (dev->notify_ops->features_changed)
|
|
||||||
dev->notify_ops->features_changed(dev->vid, features);
|
|
||||||
}
|
|
||||||
--
|
|
||||||
2.14.3
|
|
||||||
|
|
@ -1,310 +0,0 @@
|
|||||||
From patchwork Wed Jan 17 13:49:25 2018
|
|
||||||
Content-Type: text/plain; charset="utf-8"
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Transfer-Encoding: 7bit
|
|
||||||
Subject: [dpdk-dev,
|
|
||||||
v5] vhost_user: protect active rings from async ring changes
|
|
||||||
From: Victor Kaplansky <victork@redhat.com>
|
|
||||||
X-Patchwork-Id: 33921
|
|
||||||
X-Patchwork-Delegate: yuanhan.liu@linux.intel.com
|
|
||||||
List-Id: dev.dpdk.org
|
|
||||||
To: dev@dpdk.org
|
|
||||||
Cc: stable@dpdk.org, Jens Freimann <jfreiman@redhat.com>,
|
|
||||||
Maxime Coquelin <maxime.coquelin@redhat.com>,
|
|
||||||
Yuanhan Liu <yliu@fridaylinux.org>, Tiwei Bie <tiwei.bie@intel.com>,
|
|
||||||
"Tan, Jianfeng" <jianfeng.tan@intel.com>,
|
|
||||||
Stephen Hemminger <stephen@networkplumber.org>,
|
|
||||||
Victor Kaplansky <victork@redhat.com>
|
|
||||||
Date: Wed, 17 Jan 2018 15:49:25 +0200
|
|
||||||
|
|
||||||
When performing live migration or memory hot-plugging,
|
|
||||||
the changes to the device and vrings made by message handler
|
|
||||||
done independently from vring usage by PMD threads.
|
|
||||||
|
|
||||||
This causes for example segfaults during live-migration
|
|
||||||
with MQ enable, but in general virtually any request
|
|
||||||
sent by qemu changing the state of device can cause
|
|
||||||
problems.
|
|
||||||
|
|
||||||
These patches fixes all above issues by adding a spinlock
|
|
||||||
to every vring and requiring message handler to start operation
|
|
||||||
only after ensuring that all PMD threads related to the device
|
|
||||||
are out of critical section accessing the vring data.
|
|
||||||
|
|
||||||
Each vring has its own lock in order to not create contention
|
|
||||||
between PMD threads of different vrings and to prevent
|
|
||||||
performance degradation by scaling queue pair number.
|
|
||||||
|
|
||||||
See https://bugzilla.redhat.com/show_bug.cgi?id=1450680
|
|
||||||
|
|
||||||
Signed-off-by: Victor Kaplansky <victork@redhat.com>
|
|
||||||
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
|
|
||||||
---
|
|
||||||
v5:
|
|
||||||
o get rid of spinlock wrapping functions in vhost.h
|
|
||||||
|
|
||||||
v4:
|
|
||||||
|
|
||||||
o moved access_unlock before accessing enable flag and
|
|
||||||
access_unlock after iommu_unlock consistently.
|
|
||||||
o cosmetics: removed blank line.
|
|
||||||
o the access_lock variable moved to be in the same
|
|
||||||
cache line with enable and access_ok flags.
|
|
||||||
o dequeue path is now guarded with trylock and returning
|
|
||||||
zero if unsuccessful.
|
|
||||||
o GET_VRING_BASE operation is not guarded by access lock
|
|
||||||
to avoid deadlock with device_destroy. See the comment
|
|
||||||
in the code.
|
|
||||||
o Fixed error path exit from enqueue and dequeue carefully
|
|
||||||
unlocking access and iommu locks as appropriate.
|
|
||||||
|
|
||||||
v3:
|
|
||||||
o Added locking to enqueue flow.
|
|
||||||
o Enqueue path guarded as well as dequeue path.
|
|
||||||
o Changed name of active_lock.
|
|
||||||
o Added initialization of guarding spinlock.
|
|
||||||
o Reworked functions skimming over all virt-queues.
|
|
||||||
o Performance measurements done by Maxime Coquelin shows
|
|
||||||
no degradation in bandwidth and throughput.
|
|
||||||
o Spelling.
|
|
||||||
o Taking lock only on set operations.
|
|
||||||
o IOMMU messages are not guarded by access lock.
|
|
||||||
|
|
||||||
v2:
|
|
||||||
o Fixed checkpatch complains.
|
|
||||||
o Added Signed-off-by.
|
|
||||||
o Refined placement of guard to exclude IOMMU messages.
|
|
||||||
o TODO: performance degradation measurement.
|
|
||||||
|
|
||||||
dpdk-17.11/lib/librte_vhost/vhost.h | 6 ++--
|
|
||||||
dpdk-17.11/lib/librte_vhost/vhost.c | 1 +
|
|
||||||
dpdk-17.11/lib/librte_vhost/vhost_user.c | 70 ++++++++++++++++++++++++++++++++
|
|
||||||
dpdk-17.11/lib/librte_vhost/virtio_net.c | 28 ++++++++++++++---
|
|
||||||
4 files changed, 99 insertions(+), 6 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/dpdk-17.11/lib/librte_vhost/vhost.h b/dpdk-17.11/lib/librte_vhost/vhost.h
|
|
||||||
index 1cc81c17..c8f2a817 100644
|
|
||||||
--- a/dpdk-17.11/lib/librte_vhost/vhost.h
|
|
||||||
+++ b/dpdk-17.11/lib/librte_vhost/vhost.h
|
|
||||||
@@ -108,12 +108,14 @@ struct vhost_virtqueue {
|
|
||||||
|
|
||||||
/* Backend value to determine if device should started/stopped */
|
|
||||||
int backend;
|
|
||||||
+ int enabled;
|
|
||||||
+ int access_ok;
|
|
||||||
+ rte_spinlock_t access_lock;
|
|
||||||
+
|
|
||||||
/* Used to notify the guest (trigger interrupt) */
|
|
||||||
int callfd;
|
|
||||||
/* Currently unused as polling mode is enabled */
|
|
||||||
int kickfd;
|
|
||||||
- int enabled;
|
|
||||||
- int access_ok;
|
|
||||||
|
|
||||||
/* Physical address of used ring, for logging */
|
|
||||||
uint64_t log_guest_addr;
|
|
||||||
diff --git a/dpdk-17.11/lib/librte_vhost/vhost.c b/dpdk-17.11/lib/librte_vhost/vhost.c
|
|
||||||
index 4f8b73a0..dcc42fc7 100644
|
|
||||||
--- a/dpdk-17.11/lib/librte_vhost/vhost.c
|
|
||||||
+++ b/dpdk-17.11/lib/librte_vhost/vhost.c
|
|
||||||
@@ -259,6 +259,7 @@ alloc_vring_queue(struct virtio_net *dev, uint32_t vring_idx)
|
|
||||||
|
|
||||||
dev->virtqueue[vring_idx] = vq;
|
|
||||||
init_vring_queue(dev, vring_idx);
|
|
||||||
+ rte_spinlock_init(&vq->access_lock);
|
|
||||||
|
|
||||||
dev->nr_vring += 1;
|
|
||||||
|
|
||||||
diff --git a/dpdk-17.11/lib/librte_vhost/vhost_user.c b/dpdk-17.11/lib/librte_vhost/vhost_user.c
|
|
||||||
index f4c7ce46..0685d4e7 100644
|
|
||||||
--- a/dpdk-17.11/lib/librte_vhost/vhost_user.c
|
|
||||||
+++ b/dpdk-17.11/lib/librte_vhost/vhost_user.c
|
|
||||||
@@ -1190,12 +1190,47 @@ vhost_user_check_and_alloc_queue_pair(struct virtio_net *dev, VhostUserMsg *msg)
|
|
||||||
return alloc_vring_queue(dev, vring_idx);
|
|
||||||
}
|
|
||||||
|
|
||||||
+static void
|
|
||||||
+vhost_user_lock_all_queue_pairs(struct virtio_net *dev)
|
|
||||||
+{
|
|
||||||
+ unsigned int i = 0;
|
|
||||||
+ unsigned int vq_num = 0;
|
|
||||||
+
|
|
||||||
+ while (vq_num < dev->nr_vring) {
|
|
||||||
+ struct vhost_virtqueue *vq = dev->virtqueue[i];
|
|
||||||
+
|
|
||||||
+ if (vq) {
|
|
||||||
+ rte_spinlock_lock(&vq->access_lock);
|
|
||||||
+ vq_num++;
|
|
||||||
+ }
|
|
||||||
+ i++;
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static void
|
|
||||||
+vhost_user_unlock_all_queue_pairs(struct virtio_net *dev)
|
|
||||||
+{
|
|
||||||
+ unsigned int i = 0;
|
|
||||||
+ unsigned int vq_num = 0;
|
|
||||||
+
|
|
||||||
+ while (vq_num < dev->nr_vring) {
|
|
||||||
+ struct vhost_virtqueue *vq = dev->virtqueue[i];
|
|
||||||
+
|
|
||||||
+ if (vq) {
|
|
||||||
+ rte_spinlock_unlock(&vq->access_lock);
|
|
||||||
+ vq_num++;
|
|
||||||
+ }
|
|
||||||
+ i++;
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
int
|
|
||||||
vhost_user_msg_handler(int vid, int fd)
|
|
||||||
{
|
|
||||||
struct virtio_net *dev;
|
|
||||||
struct VhostUserMsg msg;
|
|
||||||
int ret;
|
|
||||||
+ int unlock_required = 0;
|
|
||||||
|
|
||||||
dev = get_device(vid);
|
|
||||||
if (dev == NULL)
|
|
||||||
@@ -1241,6 +1276,38 @@ vhost_user_msg_handler(int vid, int fd)
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ /*
|
|
||||||
+ * Note: we don't lock all queues on VHOST_USER_GET_VRING_BASE,
|
|
||||||
+ * since it is sent when virtio stops and device is destroyed.
|
|
||||||
+ * destroy_device waits for queues to be inactive, so it is safe.
|
|
||||||
+ * Otherwise taking the access_lock would cause a dead lock.
|
|
||||||
+ */
|
|
||||||
+ switch (msg.request.master) {
|
|
||||||
+ case VHOST_USER_SET_FEATURES:
|
|
||||||
+ case VHOST_USER_SET_PROTOCOL_FEATURES:
|
|
||||||
+ case VHOST_USER_SET_OWNER:
|
|
||||||
+ case VHOST_USER_RESET_OWNER:
|
|
||||||
+ case VHOST_USER_SET_MEM_TABLE:
|
|
||||||
+ case VHOST_USER_SET_LOG_BASE:
|
|
||||||
+ case VHOST_USER_SET_LOG_FD:
|
|
||||||
+ case VHOST_USER_SET_VRING_NUM:
|
|
||||||
+ case VHOST_USER_SET_VRING_ADDR:
|
|
||||||
+ case VHOST_USER_SET_VRING_BASE:
|
|
||||||
+ case VHOST_USER_SET_VRING_KICK:
|
|
||||||
+ case VHOST_USER_SET_VRING_CALL:
|
|
||||||
+ case VHOST_USER_SET_VRING_ERR:
|
|
||||||
+ case VHOST_USER_SET_VRING_ENABLE:
|
|
||||||
+ case VHOST_USER_SEND_RARP:
|
|
||||||
+ case VHOST_USER_NET_SET_MTU:
|
|
||||||
+ case VHOST_USER_SET_SLAVE_REQ_FD:
|
|
||||||
+ vhost_user_lock_all_queue_pairs(dev);
|
|
||||||
+ unlock_required = 1;
|
|
||||||
+ break;
|
|
||||||
+ default:
|
|
||||||
+ break;
|
|
||||||
+
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
switch (msg.request.master) {
|
|
||||||
case VHOST_USER_GET_FEATURES:
|
|
||||||
msg.payload.u64 = vhost_user_get_features(dev);
|
|
||||||
@@ -1342,6 +1409,9 @@ vhost_user_msg_handler(int vid, int fd)
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
+ if (unlock_required)
|
|
||||||
+ vhost_user_unlock_all_queue_pairs(dev);
|
|
||||||
+
|
|
||||||
if (msg.flags & VHOST_USER_NEED_REPLY) {
|
|
||||||
msg.payload.u64 = !!ret;
|
|
||||||
msg.size = sizeof(msg.payload.u64);
|
|
||||||
diff --git a/dpdk-17.11/lib/librte_vhost/virtio_net.c b/dpdk-17.11/lib/librte_vhost/virtio_net.c
|
|
||||||
index 6fee16e5..e09a927d 100644
|
|
||||||
--- a/dpdk-17.11/lib/librte_vhost/virtio_net.c
|
|
||||||
+++ b/dpdk-17.11/lib/librte_vhost/virtio_net.c
|
|
||||||
@@ -44,6 +44,7 @@
|
|
||||||
#include <rte_udp.h>
|
|
||||||
#include <rte_sctp.h>
|
|
||||||
#include <rte_arp.h>
|
|
||||||
+#include <rte_spinlock.h>
|
|
||||||
|
|
||||||
#include "iotlb.h"
|
|
||||||
#include "vhost.h"
|
|
||||||
@@ -326,8 +327,11 @@ virtio_dev_rx(struct virtio_net *dev, uint16_t queue_id,
|
|
||||||
}
|
|
||||||
|
|
||||||
vq = dev->virtqueue[queue_id];
|
|
||||||
+
|
|
||||||
+ rte_spinlock_lock(&vq->access_lock);
|
|
||||||
+
|
|
||||||
if (unlikely(vq->enabled == 0))
|
|
||||||
- return 0;
|
|
||||||
+ goto out_access_unlock;
|
|
||||||
|
|
||||||
if (dev->features & (1ULL << VIRTIO_F_IOMMU_PLATFORM))
|
|
||||||
vhost_user_iotlb_rd_lock(vq);
|
|
||||||
@@ -419,6 +423,9 @@ virtio_dev_rx(struct virtio_net *dev, uint16_t queue_id,
|
|
||||||
if (dev->features & (1ULL << VIRTIO_F_IOMMU_PLATFORM))
|
|
||||||
vhost_user_iotlb_rd_unlock(vq);
|
|
||||||
|
|
||||||
+out_access_unlock:
|
|
||||||
+ rte_spinlock_unlock(&vq->access_lock);
|
|
||||||
+
|
|
||||||
return count;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -651,8 +658,11 @@ virtio_dev_merge_rx(struct virtio_net *dev, uint16_t queue_id,
|
|
||||||
}
|
|
||||||
|
|
||||||
vq = dev->virtqueue[queue_id];
|
|
||||||
+
|
|
||||||
+ rte_spinlock_lock(&vq->access_lock);
|
|
||||||
+
|
|
||||||
if (unlikely(vq->enabled == 0))
|
|
||||||
- return 0;
|
|
||||||
+ goto out_access_unlock;
|
|
||||||
|
|
||||||
if (dev->features & (1ULL << VIRTIO_F_IOMMU_PLATFORM))
|
|
||||||
vhost_user_iotlb_rd_lock(vq);
|
|
||||||
@@ -715,6 +725,9 @@ virtio_dev_merge_rx(struct virtio_net *dev, uint16_t queue_id,
|
|
||||||
if (dev->features & (1ULL << VIRTIO_F_IOMMU_PLATFORM))
|
|
||||||
vhost_user_iotlb_rd_unlock(vq);
|
|
||||||
|
|
||||||
+out_access_unlock:
|
|
||||||
+ rte_spinlock_unlock(&vq->access_lock);
|
|
||||||
+
|
|
||||||
return pkt_idx;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1180,9 +1193,13 @@ rte_vhost_dequeue_burst(int vid, uint16_t queue_id,
|
|
||||||
}
|
|
||||||
|
|
||||||
vq = dev->virtqueue[queue_id];
|
|
||||||
- if (unlikely(vq->enabled == 0))
|
|
||||||
+
|
|
||||||
+ if (unlikely(rte_spinlock_trylock(&vq->access_lock) == 0))
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
+ if (unlikely(vq->enabled == 0))
|
|
||||||
+ goto out_access_unlock;
|
|
||||||
+
|
|
||||||
vq->batch_copy_nb_elems = 0;
|
|
||||||
|
|
||||||
if (dev->features & (1ULL << VIRTIO_F_IOMMU_PLATFORM))
|
|
||||||
@@ -1240,7 +1257,7 @@ rte_vhost_dequeue_burst(int vid, uint16_t queue_id,
|
|
||||||
if (rarp_mbuf == NULL) {
|
|
||||||
RTE_LOG(ERR, VHOST_DATA,
|
|
||||||
"Failed to allocate memory for mbuf.\n");
|
|
||||||
- return 0;
|
|
||||||
+ goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (make_rarp_packet(rarp_mbuf, &dev->mac)) {
|
|
||||||
@@ -1356,6 +1373,9 @@ rte_vhost_dequeue_burst(int vid, uint16_t queue_id,
|
|
||||||
if (dev->features & (1ULL << VIRTIO_F_IOMMU_PLATFORM))
|
|
||||||
vhost_user_iotlb_rd_unlock(vq);
|
|
||||||
|
|
||||||
+out_access_unlock:
|
|
||||||
+ rte_spinlock_unlock(&vq->access_lock);
|
|
||||||
+
|
|
||||||
if (unlikely(rarp_mbuf != NULL)) {
|
|
||||||
/*
|
|
||||||
* Inject it to the head of "pkts" array, so that switch's mac
|
|
@ -0,0 +1,185 @@
|
|||||||
|
From a99f73a22e6303555af3f93535d03c7537da5a9a Mon Sep 17 00:00:00 2001
|
||||||
|
From: Roi Dayan <roid@mellanox.com>
|
||||||
|
Date: Mon, 12 Mar 2018 14:58:47 +0200
|
||||||
|
Subject: [PATCH 2/2] netdev-tc-offloads: Add support for IP fragmentation
|
||||||
|
|
||||||
|
Add support for frag no, first and later.
|
||||||
|
|
||||||
|
Signed-off-by: Roi Dayan <roid@mellanox.com>
|
||||||
|
Reviewed-by: Shahar Klein <shahark@mellanox.com>
|
||||||
|
Reviewed-by: Paul Blakey <paulb@mellanox.com>
|
||||||
|
Signed-off-by: Simon Horman <simon.horman@netronome.com>
|
||||||
|
---
|
||||||
|
acinclude.m4 | 6 +++---
|
||||||
|
include/linux/pkt_cls.h | 5 +++--
|
||||||
|
lib/netdev-tc-offloads.c | 38 ++++++++++++++++++++++++++++++++------
|
||||||
|
lib/tc.c | 14 ++++++++++++++
|
||||||
|
lib/tc.h | 1 +
|
||||||
|
5 files changed, 53 insertions(+), 11 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/acinclude.m4 b/acinclude.m4
|
||||||
|
index 176b93e8e..6a02f6527 100644
|
||||||
|
--- a/acinclude.m4
|
||||||
|
+++ b/acinclude.m4
|
||||||
|
@@ -178,10 +178,10 @@ dnl Configure Linux tc compat.
|
||||||
|
AC_DEFUN([OVS_CHECK_LINUX_TC], [
|
||||||
|
AC_COMPILE_IFELSE([
|
||||||
|
AC_LANG_PROGRAM([#include <linux/pkt_cls.h>], [
|
||||||
|
- int x = TCA_FLOWER_KEY_IP_TTL_MASK;
|
||||||
|
+ int x = TCA_FLOWER_KEY_FLAGS_FRAG_IS_FIRST;
|
||||||
|
])],
|
||||||
|
- [AC_DEFINE([HAVE_TCA_FLOWER_KEY_IP_TTL_MASK], [1],
|
||||||
|
- [Define to 1 if TCA_FLOWER_KEY_IP_TTL_MASK is avaiable.])])
|
||||||
|
+ [AC_DEFINE([HAVE_TCA_FLOWER_KEY_FLAGS_FRAG_IS_FIRST], [1],
|
||||||
|
+ [Define to 1 if TCA_FLOWER_KEY_FLAGS_FRAG_IS_FIRST is avaiable.])])
|
||||||
|
|
||||||
|
AC_COMPILE_IFELSE([
|
||||||
|
AC_LANG_PROGRAM([#include <linux/tc_act/tc_vlan.h>], [
|
||||||
|
diff --git a/include/linux/pkt_cls.h b/include/linux/pkt_cls.h
|
||||||
|
index f7bc7ea70..60976f3f7 100644
|
||||||
|
--- a/include/linux/pkt_cls.h
|
||||||
|
+++ b/include/linux/pkt_cls.h
|
||||||
|
@@ -1,7 +1,7 @@
|
||||||
|
#ifndef __LINUX_PKT_CLS_WRAPPER_H
|
||||||
|
#define __LINUX_PKT_CLS_WRAPPER_H 1
|
||||||
|
|
||||||
|
-#if defined(__KERNEL__) || defined(HAVE_TCA_FLOWER_KEY_IP_TTL_MASK)
|
||||||
|
+#if defined(__KERNEL__) || defined(HAVE_TCA_FLOWER_KEY_FLAGS_FRAG_IS_FIRST)
|
||||||
|
#include_next <linux/pkt_cls.h>
|
||||||
|
#else
|
||||||
|
|
||||||
|
@@ -201,8 +201,9 @@ enum {
|
||||||
|
|
||||||
|
enum {
|
||||||
|
TCA_FLOWER_KEY_FLAGS_IS_FRAGMENT = (1 << 0),
|
||||||
|
+ TCA_FLOWER_KEY_FLAGS_FRAG_IS_FIRST = (1 << 1),
|
||||||
|
};
|
||||||
|
|
||||||
|
-#endif /* __KERNEL__ || !HAVE_TCA_FLOWER_KEY_IP_TTL_MASK */
|
||||||
|
+#endif /* __KERNEL__ || !HAVE_TCA_FLOWER_KEY_FLAGS_FRAG_IS_FIRST */
|
||||||
|
|
||||||
|
#endif /* __LINUX_PKT_CLS_WRAPPER_H */
|
||||||
|
diff --git a/lib/netdev-tc-offloads.c b/lib/netdev-tc-offloads.c
|
||||||
|
index 9364d94f0..f22415ee1 100644
|
||||||
|
--- a/lib/netdev-tc-offloads.c
|
||||||
|
+++ b/lib/netdev-tc-offloads.c
|
||||||
|
@@ -428,6 +428,27 @@ parse_tc_flower_to_match(struct tc_flower *flower,
|
||||||
|
|
||||||
|
match_set_nw_ttl_masked(match, key->ip_ttl, mask->ip_ttl);
|
||||||
|
|
||||||
|
+ if (mask->flags) {
|
||||||
|
+ uint8_t flags = 0;
|
||||||
|
+ uint8_t flags_mask = 0;
|
||||||
|
+
|
||||||
|
+ if (mask->flags & TCA_FLOWER_KEY_FLAGS_IS_FRAGMENT) {
|
||||||
|
+ if (key->flags & TCA_FLOWER_KEY_FLAGS_IS_FRAGMENT) {
|
||||||
|
+ flags |= FLOW_NW_FRAG_ANY;
|
||||||
|
+ }
|
||||||
|
+ flags_mask |= FLOW_NW_FRAG_ANY;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (mask->flags & TCA_FLOWER_KEY_FLAGS_FRAG_IS_FIRST) {
|
||||||
|
+ if (!(key->flags & TCA_FLOWER_KEY_FLAGS_FRAG_IS_FIRST)) {
|
||||||
|
+ flags |= FLOW_NW_FRAG_LATER;
|
||||||
|
+ }
|
||||||
|
+ flags_mask |= FLOW_NW_FRAG_LATER;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ match_set_nw_frag_masked(match, flags, flags_mask);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
match_set_nw_src_masked(match, key->ipv4.ipv4_src, mask->ipv4.ipv4_src);
|
||||||
|
match_set_nw_dst_masked(match, key->ipv4.ipv4_dst, mask->ipv4.ipv4_dst);
|
||||||
|
|
||||||
|
@@ -780,11 +801,6 @@ test_key_and_mask(struct match *match)
|
||||||
|
return EOPNOTSUPP;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (mask->nw_frag) {
|
||||||
|
- VLOG_DBG_RL(&rl, "offloading attribute nw_frag isn't supported");
|
||||||
|
- return EOPNOTSUPP;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
for (int i = 0; i < FLOW_MAX_MPLS_LABELS; i++) {
|
||||||
|
if (mask->mpls_lse[i]) {
|
||||||
|
VLOG_DBG_RL(&rl, "offloading attribute mpls_lse isn't supported");
|
||||||
|
@@ -932,6 +948,17 @@ netdev_tc_flow_put(struct netdev *netdev, struct match *match,
|
||||||
|
flower.key.ip_ttl = key->nw_ttl;
|
||||||
|
flower.mask.ip_ttl = mask->nw_ttl;
|
||||||
|
|
||||||
|
+ if (mask->nw_frag) {
|
||||||
|
+ if (key->nw_frag & FLOW_NW_FRAG_ANY)
|
||||||
|
+ flower.key.flags |= TCA_FLOWER_KEY_FLAGS_IS_FRAGMENT;
|
||||||
|
+ if (!(key->nw_frag & FLOW_NW_FRAG_LATER))
|
||||||
|
+ flower.key.flags |= TCA_FLOWER_KEY_FLAGS_FRAG_IS_FIRST;
|
||||||
|
+
|
||||||
|
+ flower.mask.flags |= TCA_FLOWER_KEY_FLAGS_IS_FRAGMENT;
|
||||||
|
+ flower.mask.flags |= TCA_FLOWER_KEY_FLAGS_FRAG_IS_FIRST;
|
||||||
|
+ mask->nw_frag = 0;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (key->nw_proto == IPPROTO_TCP) {
|
||||||
|
flower.key.tcp_dst = key->tp_dst;
|
||||||
|
flower.mask.tcp_dst = mask->tp_dst;
|
||||||
|
@@ -958,7 +985,6 @@ netdev_tc_flow_put(struct netdev *netdev, struct match *match,
|
||||||
|
mask->tp_dst = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
- mask->nw_frag = 0;
|
||||||
|
mask->nw_tos = 0;
|
||||||
|
mask->nw_proto = 0;
|
||||||
|
mask->nw_ttl = 0;
|
||||||
|
diff --git a/lib/tc.c b/lib/tc.c
|
||||||
|
index b49bbe89b..c446d8407 100644
|
||||||
|
--- a/lib/tc.c
|
||||||
|
+++ b/lib/tc.c
|
||||||
|
@@ -281,6 +281,8 @@ static const struct nl_policy tca_flower_policy[] = {
|
||||||
|
.optional = true, },
|
||||||
|
[TCA_FLOWER_KEY_ENC_UDP_DST_PORT] = { .type = NL_A_U16,
|
||||||
|
.optional = true, },
|
||||||
|
+ [TCA_FLOWER_KEY_FLAGS] = { .type = NL_A_BE32, .optional = true, },
|
||||||
|
+ [TCA_FLOWER_KEY_FLAGS_MASK] = { .type = NL_A_BE32, .optional = true, },
|
||||||
|
[TCA_FLOWER_KEY_IP_TTL] = { .type = NL_A_U8,
|
||||||
|
.optional = true, },
|
||||||
|
[TCA_FLOWER_KEY_IP_TTL_MASK] = { .type = NL_A_U8,
|
||||||
|
@@ -374,6 +376,11 @@ nl_parse_flower_ip(struct nlattr **attrs, struct tc_flower *flower) {
|
||||||
|
mask->ip_proto = UINT8_MAX;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ if (attrs[TCA_FLOWER_KEY_FLAGS_MASK]) {
|
||||||
|
+ key->flags = ntohl(nl_attr_get_u32(attrs[TCA_FLOWER_KEY_FLAGS]));
|
||||||
|
+ mask->flags = ntohl(nl_attr_get_u32(attrs[TCA_FLOWER_KEY_FLAGS_MASK]));
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (attrs[TCA_FLOWER_KEY_IPV4_SRC_MASK]) {
|
||||||
|
key->ipv4.ipv4_src =
|
||||||
|
nl_attr_get_be32(attrs[TCA_FLOWER_KEY_IPV4_SRC]);
|
||||||
|
@@ -1495,6 +1502,13 @@ nl_msg_put_flower_options(struct ofpbuf *request, struct tc_flower *flower)
|
||||||
|
flower->key.ip_proto);
|
||||||
|
}
|
||||||
|
|
||||||
|
+ if (flower->mask.flags) {
|
||||||
|
+ nl_msg_put_u32(request, TCA_FLOWER_KEY_FLAGS,
|
||||||
|
+ htonl(flower->key.flags));
|
||||||
|
+ nl_msg_put_u32(request, TCA_FLOWER_KEY_FLAGS_MASK,
|
||||||
|
+ htonl(flower->mask.flags));
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (flower->key.ip_proto == IPPROTO_UDP) {
|
||||||
|
FLOWER_PUT_MASKED_VALUE(udp_src, TCA_FLOWER_KEY_UDP_SRC);
|
||||||
|
FLOWER_PUT_MASKED_VALUE(udp_dst, TCA_FLOWER_KEY_UDP_DST);
|
||||||
|
diff --git a/lib/tc.h b/lib/tc.h
|
||||||
|
index 6af51c69b..4400a829e 100644
|
||||||
|
--- a/lib/tc.h
|
||||||
|
+++ b/lib/tc.h
|
||||||
|
@@ -92,6 +92,7 @@ struct tc_flower_key {
|
||||||
|
|
||||||
|
ovs_be16 encap_eth_type;
|
||||||
|
|
||||||
|
+ uint8_t flags;
|
||||||
|
uint8_t ip_ttl;
|
||||||
|
|
||||||
|
struct {
|
||||||
|
--
|
||||||
|
2.14.3
|
||||||
|
|
@ -0,0 +1,51 @@
|
|||||||
|
From 14ebc6c199a7c3c1097776e18a9c29ced8cc8cc9 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Eric Garver <e@erig.me>
|
||||||
|
Date: Thu, 1 Mar 2018 17:59:42 -0500
|
||||||
|
Subject: [PATCH 2/2] tests/ofproto-dpif: New test for action_set after
|
||||||
|
traversing patch port
|
||||||
|
|
||||||
|
Signed-off-by: Eric Garver <e@erig.me>
|
||||||
|
Signed-off-by: Ben Pfaff <blp@ovn.org>
|
||||||
|
---
|
||||||
|
tests/ofproto-dpif.at | 25 +++++++++++++++++++++++++
|
||||||
|
1 file changed, 25 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/tests/ofproto-dpif.at b/tests/ofproto-dpif.at
|
||||||
|
index 48cbc672d204..d2058eddd3eb 100644
|
||||||
|
--- a/tests/ofproto-dpif.at
|
||||||
|
+++ b/tests/ofproto-dpif.at
|
||||||
|
@@ -371,6 +371,31 @@ AT_CHECK([tail -1 stdout], [0],
|
||||||
|
OVS_VSWITCHD_STOP
|
||||||
|
AT_CLEANUP
|
||||||
|
|
||||||
|
+AT_SETUP([ofproto-dpif - patch port with action set])
|
||||||
|
+OVS_VSWITCHD_START([ \
|
||||||
|
+ add-br br1 -- \
|
||||||
|
+ set bridge br1 datapath-type=dummy fail-mode=secure -- \
|
||||||
|
+ add-port br0 patch10 -- \
|
||||||
|
+ set interface patch10 type=patch options:peer=patch20 ofport_request=10 -- \
|
||||||
|
+ add-port br1 patch20 -- \
|
||||||
|
+ set interface patch20 type=patch options:peer=patch10 ofport_request=20
|
||||||
|
+ ])
|
||||||
|
+add_of_ports br0 1
|
||||||
|
+add_of_ports br1 2
|
||||||
|
+AT_CHECK([ovs-ofctl -O OpenFlow12 add-flow br1 'ip actions=write_actions(pop_vlan,output:2)'])
|
||||||
|
+AT_CHECK([ovs-ofctl -O OpenFlow12 add-flow br0 'ip actions=output:10'])
|
||||||
|
+AT_CHECK([ovs-appctl ofproto/trace br1 'in_port=20,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,dl_vlan=100,dl_type=0x0800,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_proto=1,nw_tos=0,nw_ttl=128,icmp_type=8,icmp_code=0'], [0], [stdout])
|
||||||
|
+AT_CHECK([tail -1 stdout], [0],
|
||||||
|
+ [Datapath actions: pop_vlan,2
|
||||||
|
+])
|
||||||
|
+AT_CHECK([ovs-appctl ofproto/trace br0 'in_port=1,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,dl_vlan=100,dl_type=0x0800,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_proto=1,nw_tos=0,nw_ttl=128,icmp_type=8,icmp_code=0'], [0], [stdout])
|
||||||
|
+AT_CHECK([tail -1 stdout], [0],
|
||||||
|
+ [Datapath actions: pop_vlan,2
|
||||||
|
+])
|
||||||
|
+OVS_VSWITCHD_STOP
|
||||||
|
+AT_CLEANUP
|
||||||
|
+
|
||||||
|
+
|
||||||
|
AT_SETUP([ofproto-dpif - select group])
|
||||||
|
OVS_VSWITCHD_START
|
||||||
|
add_of_ports br0 1 10 11
|
||||||
|
--
|
||||||
|
2.11.0
|
||||||
|
|
@ -1,40 +0,0 @@
|
|||||||
From d7f0078e3a3d838b4ec6a87dca62771246e53db6 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Maxime Coquelin <maxime.coquelin@redhat.com>
|
|
||||||
Date: Wed, 13 Dec 2017 09:51:07 +0100
|
|
||||||
Subject: [PATCH 2/6] vhost: propagate set features handling error
|
|
||||||
|
|
||||||
Not propagating VHOST_USER_SET_FEATURES request handling
|
|
||||||
error may result in unpredictable behavior, as host and
|
|
||||||
guests features may no more be synchronized.
|
|
||||||
|
|
||||||
This patch fixes this by reporting the error to the upper
|
|
||||||
layer, which would result in the device being destroyed
|
|
||||||
and the connection with the master to be closed.
|
|
||||||
|
|
||||||
Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
|
|
||||||
Acked-by: Laszlo Ersek <lersek@redhat.com>
|
|
||||||
Acked-by: Yuanhan Liu <yliu@fridaylinux.org>
|
|
||||||
(cherry picked from commit 59fe5e17d9308b008ffa22ea250ddd363c84c3b5)
|
|
||||||
Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
|
|
||||||
---
|
|
||||||
dpdk-17.11/lib/librte_vhost/vhost_user.c | 4 +++-
|
|
||||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/dpdk-17.11/lib/librte_vhost/vhost_user.c b/dpdk-17.11/lib/librte_vhost/vhost_user.c
|
|
||||||
index 545dbcb2b..471b1612c 100644
|
|
||||||
--- a/dpdk-17.11/lib/librte_vhost/vhost_user.c
|
|
||||||
+++ b/dpdk-17.11/lib/librte_vhost/vhost_user.c
|
|
||||||
@@ -1263,7 +1263,9 @@ vhost_user_msg_handler(int vid, int fd)
|
|
||||||
send_vhost_reply(fd, &msg);
|
|
||||||
break;
|
|
||||||
case VHOST_USER_SET_FEATURES:
|
|
||||||
- vhost_user_set_features(dev, msg.payload.u64);
|
|
||||||
+ ret = vhost_user_set_features(dev, msg.payload.u64);
|
|
||||||
+ if (ret)
|
|
||||||
+ return -1;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case VHOST_USER_GET_PROTOCOL_FEATURES:
|
|
||||||
--
|
|
||||||
2.14.3
|
|
||||||
|
|
@ -1,83 +0,0 @@
|
|||||||
From 297fcc013877e57c387e444bf7323fbfd77e4b3f Mon Sep 17 00:00:00 2001
|
|
||||||
From: Maxime Coquelin <maxime.coquelin@redhat.com>
|
|
||||||
Date: Wed, 13 Dec 2017 09:51:08 +0100
|
|
||||||
Subject: [PATCH 3/6] vhost: extract virtqueue cleaning and freeing functions
|
|
||||||
|
|
||||||
This patch extracts needed code for vhost_user.c to be able
|
|
||||||
to clean and free virtqueues unitary.
|
|
||||||
|
|
||||||
Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
|
|
||||||
Acked-by: Laszlo Ersek <lersek@redhat.com>
|
|
||||||
Acked-by: Yuanhan Liu <yliu@fridaylinux.org>
|
|
||||||
(cherry picked from commit 467fe22df94b85d2df67b9be3ccbfb3dd72cdd6d)
|
|
||||||
Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
|
|
||||||
---
|
|
||||||
dpdk-17.11/lib/librte_vhost/vhost.c | 22 ++++++++++++----------
|
|
||||||
dpdk-17.11/lib/librte_vhost/vhost.h | 3 +++
|
|
||||||
2 files changed, 15 insertions(+), 10 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/dpdk-17.11/lib/librte_vhost/vhost.c b/dpdk-17.11/lib/librte_vhost/vhost.c
|
|
||||||
index 4f8b73a09..df528a4ea 100644
|
|
||||||
--- a/dpdk-17.11/lib/librte_vhost/vhost.c
|
|
||||||
+++ b/dpdk-17.11/lib/librte_vhost/vhost.c
|
|
||||||
@@ -103,7 +103,7 @@ get_device(int vid)
|
|
||||||
return dev;
|
|
||||||
}
|
|
||||||
|
|
||||||
-static void
|
|
||||||
+void
|
|
||||||
cleanup_vq(struct vhost_virtqueue *vq, int destroy)
|
|
||||||
{
|
|
||||||
if ((vq->callfd >= 0) && (destroy != 0))
|
|
||||||
@@ -127,6 +127,15 @@ cleanup_device(struct virtio_net *dev, int destroy)
|
|
||||||
cleanup_vq(dev->virtqueue[i], destroy);
|
|
||||||
}
|
|
||||||
|
|
||||||
+void
|
|
||||||
+free_vq(struct vhost_virtqueue *vq)
|
|
||||||
+{
|
|
||||||
+ rte_free(vq->shadow_used_ring);
|
|
||||||
+ rte_free(vq->batch_copy_elems);
|
|
||||||
+ rte_mempool_free(vq->iotlb_pool);
|
|
||||||
+ rte_free(vq);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
/*
|
|
||||||
* Release virtqueues and device memory.
|
|
||||||
*/
|
|
||||||
@@ -134,16 +143,9 @@ static void
|
|
||||||
free_device(struct virtio_net *dev)
|
|
||||||
{
|
|
||||||
uint32_t i;
|
|
||||||
- struct vhost_virtqueue *vq;
|
|
||||||
-
|
|
||||||
- for (i = 0; i < dev->nr_vring; i++) {
|
|
||||||
- vq = dev->virtqueue[i];
|
|
||||||
|
|
||||||
- rte_free(vq->shadow_used_ring);
|
|
||||||
- rte_free(vq->batch_copy_elems);
|
|
||||||
- rte_mempool_free(vq->iotlb_pool);
|
|
||||||
- rte_free(vq);
|
|
||||||
- }
|
|
||||||
+ for (i = 0; i < dev->nr_vring; i++)
|
|
||||||
+ free_vq(dev->virtqueue[i]);
|
|
||||||
|
|
||||||
rte_free(dev);
|
|
||||||
}
|
|
||||||
diff --git a/dpdk-17.11/lib/librte_vhost/vhost.h b/dpdk-17.11/lib/librte_vhost/vhost.h
|
|
||||||
index 1cc81c17c..9cad1bb3c 100644
|
|
||||||
--- a/dpdk-17.11/lib/librte_vhost/vhost.h
|
|
||||||
+++ b/dpdk-17.11/lib/librte_vhost/vhost.h
|
|
||||||
@@ -364,6 +364,9 @@ void cleanup_device(struct virtio_net *dev, int destroy);
|
|
||||||
void reset_device(struct virtio_net *dev);
|
|
||||||
void vhost_destroy_device(int);
|
|
||||||
|
|
||||||
+void cleanup_vq(struct vhost_virtqueue *vq, int destroy);
|
|
||||||
+void free_vq(struct vhost_virtqueue *vq);
|
|
||||||
+
|
|
||||||
int alloc_vring_queue(struct virtio_net *dev, uint32_t vring_idx);
|
|
||||||
|
|
||||||
void vhost_set_ifname(int, const char *if_name, unsigned int if_len);
|
|
||||||
--
|
|
||||||
2.14.3
|
|
||||||
|
|
@ -1,63 +0,0 @@
|
|||||||
From eb2b3b18edc3af42f52ca5b3f30aa8bfbd08206a Mon Sep 17 00:00:00 2001
|
|
||||||
From: Maxime Coquelin <maxime.coquelin@redhat.com>
|
|
||||||
Date: Wed, 13 Dec 2017 09:51:09 +0100
|
|
||||||
Subject: [PATCH 4/6] vhost: destroy unused virtqueues when multiqueue not
|
|
||||||
negotiated
|
|
||||||
|
|
||||||
QEMU sends VHOST_USER_SET_VRING_CALL requests for all queues
|
|
||||||
declared in QEMU command line before the guest is started.
|
|
||||||
It has the effect in DPDK vhost-user backend to allocate vrings
|
|
||||||
for all queues declared by QEMU.
|
|
||||||
|
|
||||||
If the first driver being used does not support multiqueue,
|
|
||||||
the device never changes to VIRTIO_DEV_RUNNING state as only
|
|
||||||
the first queue pair is initialized. One driver impacted by
|
|
||||||
this bug is virtio-net's iPXE driver which does not support
|
|
||||||
VIRTIO_NET_F_MQ feature.
|
|
||||||
|
|
||||||
It is safe to destroy unused virtqueues in SET_FEATURES request
|
|
||||||
handler, as it is ensured the device is not in running state
|
|
||||||
at this stage, so virtqueues aren't being processed.
|
|
||||||
|
|
||||||
Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
|
|
||||||
Acked-by: Laszlo Ersek <lersek@redhat.com>
|
|
||||||
Acked-by: Yuanhan Liu <yliu@fridaylinux.org>
|
|
||||||
(cherry picked from commit e29109323595beb3884da58126ebb3b878cb66f5)
|
|
||||||
Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
|
|
||||||
---
|
|
||||||
dpdk-17.11/lib/librte_vhost/vhost_user.c | 19 +++++++++++++++++++
|
|
||||||
1 file changed, 19 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/dpdk-17.11/lib/librte_vhost/vhost_user.c b/dpdk-17.11/lib/librte_vhost/vhost_user.c
|
|
||||||
index 471b1612c..1848c8de9 100644
|
|
||||||
--- a/dpdk-17.11/lib/librte_vhost/vhost_user.c
|
|
||||||
+++ b/dpdk-17.11/lib/librte_vhost/vhost_user.c
|
|
||||||
@@ -216,6 +216,25 @@ vhost_user_set_features(struct virtio_net *dev, uint64_t features)
|
|
||||||
(dev->features & (1 << VIRTIO_NET_F_MRG_RXBUF)) ? "on" : "off",
|
|
||||||
(dev->features & (1ULL << VIRTIO_F_VERSION_1)) ? "on" : "off");
|
|
||||||
|
|
||||||
+ if (!(dev->features & (1ULL << VIRTIO_NET_F_MQ))) {
|
|
||||||
+ /*
|
|
||||||
+ * Remove all but first queue pair if MQ hasn't been
|
|
||||||
+ * negotiated. This is safe because the device is not
|
|
||||||
+ * running at this stage.
|
|
||||||
+ */
|
|
||||||
+ while (dev->nr_vring > 2) {
|
|
||||||
+ struct vhost_virtqueue *vq;
|
|
||||||
+
|
|
||||||
+ vq = dev->virtqueue[--dev->nr_vring];
|
|
||||||
+ if (!vq)
|
|
||||||
+ continue;
|
|
||||||
+
|
|
||||||
+ dev->virtqueue[dev->nr_vring] = NULL;
|
|
||||||
+ cleanup_vq(vq, 1);
|
|
||||||
+ free_vq(vq);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
--
|
|
||||||
2.14.3
|
|
||||||
|
|
@ -1,188 +0,0 @@
|
|||||||
From 8db980965f3d8cde1abbdb89eaecbc829460133e Mon Sep 17 00:00:00 2001
|
|
||||||
From: Stefan Hajnoczi <stefanha@redhat.com>
|
|
||||||
Date: Wed, 31 Jan 2018 17:46:50 +0000
|
|
||||||
Subject: [PATCH 5/6] vhost: add flag for built-in virtio driver
|
|
||||||
|
|
||||||
The librte_vhost API is used in two ways:
|
|
||||||
1. As a vhost net device backend via rte_vhost_enqueue/dequeue_burst().
|
|
||||||
2. As a library for implementing vhost device backends.
|
|
||||||
|
|
||||||
There is no distinction between the two at the API level or in the
|
|
||||||
librte_vhost implementation. For example, device state is kept in
|
|
||||||
"struct virtio_net" regardless of whether this is actually a net device
|
|
||||||
backend or whether the built-in virtio_net.c driver is in use.
|
|
||||||
|
|
||||||
The virtio_net.c driver should be a librte_vhost API client just like
|
|
||||||
the vhost-scsi code and have no special access to vhost.h internals.
|
|
||||||
Unfortunately, fixing this requires significant librte_vhost API
|
|
||||||
changes.
|
|
||||||
|
|
||||||
This patch takes a different approach: keep the librte_vhost API
|
|
||||||
unchanged but track whether the built-in virtio_net.c driver is in use.
|
|
||||||
See the next patch for a bug fix that requires knowledge of whether
|
|
||||||
virtio_net.c is in use.
|
|
||||||
|
|
||||||
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
|
|
||||||
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
|
|
||||||
Acked-by: Yuanhan Liu <yliu@fridaylinux.org>
|
|
||||||
(cherry picked from commit 1c717af4c699e60081feb1d645f86189551f9a9c)
|
|
||||||
Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
|
|
||||||
---
|
|
||||||
dpdk-17.11/lib/librte_vhost/socket.c | 15 +++++++++++++++
|
|
||||||
dpdk-17.11/lib/librte_vhost/vhost.c | 17 ++++++++++++++++-
|
|
||||||
dpdk-17.11/lib/librte_vhost/vhost.h | 3 +++
|
|
||||||
dpdk-17.11/lib/librte_vhost/virtio_net.c | 14 ++++++++++++++
|
|
||||||
4 files changed, 48 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/dpdk-17.11/lib/librte_vhost/socket.c b/dpdk-17.11/lib/librte_vhost/socket.c
|
|
||||||
index 422da002f..ceecc6149 100644
|
|
||||||
--- a/dpdk-17.11/lib/librte_vhost/socket.c
|
|
||||||
+++ b/dpdk-17.11/lib/librte_vhost/socket.c
|
|
||||||
@@ -69,6 +69,7 @@ struct vhost_user_socket {
|
|
||||||
bool reconnect;
|
|
||||||
bool dequeue_zero_copy;
|
|
||||||
bool iommu_support;
|
|
||||||
+ bool use_builtin_virtio_net;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* The "supported_features" indicates the feature bits the
|
|
||||||
@@ -224,6 +225,8 @@ vhost_user_add_connection(int fd, struct vhost_user_socket *vsocket)
|
|
||||||
size = strnlen(vsocket->path, PATH_MAX);
|
|
||||||
vhost_set_ifname(vid, vsocket->path, size);
|
|
||||||
|
|
||||||
+ vhost_set_builtin_virtio_net(vid, vsocket->use_builtin_virtio_net);
|
|
||||||
+
|
|
||||||
if (vsocket->dequeue_zero_copy)
|
|
||||||
vhost_enable_dequeue_zero_copy(vid);
|
|
||||||
|
|
||||||
@@ -547,6 +550,12 @@ rte_vhost_driver_disable_features(const char *path, uint64_t features)
|
|
||||||
|
|
||||||
pthread_mutex_lock(&vhost_user.mutex);
|
|
||||||
vsocket = find_vhost_user_socket(path);
|
|
||||||
+
|
|
||||||
+ /* Note that use_builtin_virtio_net is not affected by this function
|
|
||||||
+ * since callers may want to selectively disable features of the
|
|
||||||
+ * built-in vhost net device backend.
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
if (vsocket)
|
|
||||||
vsocket->features &= ~features;
|
|
||||||
pthread_mutex_unlock(&vhost_user.mutex);
|
|
||||||
@@ -587,6 +596,11 @@ rte_vhost_driver_set_features(const char *path, uint64_t features)
|
|
||||||
if (vsocket) {
|
|
||||||
vsocket->supported_features = features;
|
|
||||||
vsocket->features = features;
|
|
||||||
+
|
|
||||||
+ /* Anyone setting feature bits is implementing their own vhost
|
|
||||||
+ * device backend.
|
|
||||||
+ */
|
|
||||||
+ vsocket->use_builtin_virtio_net = false;
|
|
||||||
}
|
|
||||||
pthread_mutex_unlock(&vhost_user.mutex);
|
|
||||||
|
|
||||||
@@ -667,6 +681,7 @@ rte_vhost_driver_register(const char *path, uint64_t flags)
|
|
||||||
* rte_vhost_driver_set_features(), which will overwrite following
|
|
||||||
* two values.
|
|
||||||
*/
|
|
||||||
+ vsocket->use_builtin_virtio_net = true;
|
|
||||||
vsocket->supported_features = VIRTIO_NET_SUPPORTED_FEATURES;
|
|
||||||
vsocket->features = VIRTIO_NET_SUPPORTED_FEATURES;
|
|
||||||
|
|
||||||
diff --git a/dpdk-17.11/lib/librte_vhost/vhost.c b/dpdk-17.11/lib/librte_vhost/vhost.c
|
|
||||||
index df528a4ea..75deaa877 100644
|
|
||||||
--- a/dpdk-17.11/lib/librte_vhost/vhost.c
|
|
||||||
+++ b/dpdk-17.11/lib/librte_vhost/vhost.c
|
|
||||||
@@ -279,7 +279,7 @@ reset_device(struct virtio_net *dev)
|
|
||||||
|
|
||||||
dev->features = 0;
|
|
||||||
dev->protocol_features = 0;
|
|
||||||
- dev->flags = 0;
|
|
||||||
+ dev->flags &= VIRTIO_DEV_BUILTIN_VIRTIO_NET;
|
|
||||||
|
|
||||||
for (i = 0; i < dev->nr_vring; i++)
|
|
||||||
reset_vring_queue(dev, i);
|
|
||||||
@@ -315,6 +315,7 @@ vhost_new_device(void)
|
|
||||||
|
|
||||||
vhost_devices[i] = dev;
|
|
||||||
dev->vid = i;
|
|
||||||
+ dev->flags = VIRTIO_DEV_BUILTIN_VIRTIO_NET;
|
|
||||||
dev->slave_req_fd = -1;
|
|
||||||
|
|
||||||
return i;
|
|
||||||
@@ -371,6 +372,20 @@ vhost_enable_dequeue_zero_copy(int vid)
|
|
||||||
dev->dequeue_zero_copy = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
+void
|
|
||||||
+vhost_set_builtin_virtio_net(int vid, bool enable)
|
|
||||||
+{
|
|
||||||
+ struct virtio_net *dev = get_device(vid);
|
|
||||||
+
|
|
||||||
+ if (dev == NULL)
|
|
||||||
+ return;
|
|
||||||
+
|
|
||||||
+ if (enable)
|
|
||||||
+ dev->flags |= VIRTIO_DEV_BUILTIN_VIRTIO_NET;
|
|
||||||
+ else
|
|
||||||
+ dev->flags &= ~VIRTIO_DEV_BUILTIN_VIRTIO_NET;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
int
|
|
||||||
rte_vhost_get_mtu(int vid, uint16_t *mtu)
|
|
||||||
{
|
|
||||||
diff --git a/dpdk-17.11/lib/librte_vhost/vhost.h b/dpdk-17.11/lib/librte_vhost/vhost.h
|
|
||||||
index 9cad1bb3c..e06531e6b 100644
|
|
||||||
--- a/dpdk-17.11/lib/librte_vhost/vhost.h
|
|
||||||
+++ b/dpdk-17.11/lib/librte_vhost/vhost.h
|
|
||||||
@@ -53,6 +53,8 @@
|
|
||||||
#define VIRTIO_DEV_RUNNING 1
|
|
||||||
/* Used to indicate that the device is ready to operate */
|
|
||||||
#define VIRTIO_DEV_READY 2
|
|
||||||
+/* Used to indicate that the built-in vhost net device backend is enabled */
|
|
||||||
+#define VIRTIO_DEV_BUILTIN_VIRTIO_NET 4
|
|
||||||
|
|
||||||
/* Backend value set by guest. */
|
|
||||||
#define VIRTIO_DEV_STOPPED -1
|
|
||||||
@@ -371,6 +373,7 @@ int alloc_vring_queue(struct virtio_net *dev, uint32_t vring_idx);
|
|
||||||
|
|
||||||
void vhost_set_ifname(int, const char *if_name, unsigned int if_len);
|
|
||||||
void vhost_enable_dequeue_zero_copy(int vid);
|
|
||||||
+void vhost_set_builtin_virtio_net(int vid, bool enable);
|
|
||||||
|
|
||||||
struct vhost_device_ops const *vhost_driver_callback_get(const char *path);
|
|
||||||
|
|
||||||
diff --git a/dpdk-17.11/lib/librte_vhost/virtio_net.c b/dpdk-17.11/lib/librte_vhost/virtio_net.c
|
|
||||||
index 6fee16e55..3bfd71945 100644
|
|
||||||
--- a/dpdk-17.11/lib/librte_vhost/virtio_net.c
|
|
||||||
+++ b/dpdk-17.11/lib/librte_vhost/virtio_net.c
|
|
||||||
@@ -727,6 +727,13 @@ rte_vhost_enqueue_burst(int vid, uint16_t queue_id,
|
|
||||||
if (!dev)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
+ if (unlikely(!(dev->flags & VIRTIO_DEV_BUILTIN_VIRTIO_NET))) {
|
|
||||||
+ RTE_LOG(ERR, VHOST_DATA,
|
|
||||||
+ "(%d) %s: built-in vhost net backend is disabled.\n",
|
|
||||||
+ dev->vid, __func__);
|
|
||||||
+ return 0;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
if (dev->features & (1 << VIRTIO_NET_F_MRG_RXBUF))
|
|
||||||
return virtio_dev_merge_rx(dev, queue_id, pkts, count);
|
|
||||||
else
|
|
||||||
@@ -1173,6 +1180,13 @@ rte_vhost_dequeue_burst(int vid, uint16_t queue_id,
|
|
||||||
if (!dev)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
+ if (unlikely(!(dev->flags & VIRTIO_DEV_BUILTIN_VIRTIO_NET))) {
|
|
||||||
+ RTE_LOG(ERR, VHOST_DATA,
|
|
||||||
+ "(%d) %s: built-in vhost net backend is disabled.\n",
|
|
||||||
+ dev->vid, __func__);
|
|
||||||
+ return 0;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
if (unlikely(!is_valid_virt_queue_idx(queue_id, 1, dev->nr_vring))) {
|
|
||||||
RTE_LOG(ERR, VHOST_DATA, "(%d) %s: invalid virtqueue idx %d.\n",
|
|
||||||
dev->vid, __func__, queue_id);
|
|
||||||
--
|
|
||||||
2.14.3
|
|
||||||
|
|
@ -1,42 +0,0 @@
|
|||||||
From c18b2f65e0a3be55e30fc3df6062e00353dfdb26 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Stefan Hajnoczi <stefanha@redhat.com>
|
|
||||||
Date: Wed, 31 Jan 2018 17:46:51 +0000
|
|
||||||
Subject: [PATCH 6/6] vhost: drop virtqueues only with built-in virtio driver
|
|
||||||
|
|
||||||
Commit e29109323595beb3884da58126ebb3b878cb66f5 ("vhost: destroy unused
|
|
||||||
virtqueues when multiqueue not negotiated") broke vhost-scsi by removing
|
|
||||||
virtqueues when the virtio-net-specific VIRTIO_NET_F_MQ feature bit is
|
|
||||||
missing.
|
|
||||||
|
|
||||||
The vhost_user.c code shouldn't assume all devices are vhost net device
|
|
||||||
backends. Use the new VIRTIO_DEV_BUILTIN_VIRTIO_NET flag to check
|
|
||||||
whether virtio_net.c is being used.
|
|
||||||
|
|
||||||
This fixes examples/vhost_scsi.
|
|
||||||
|
|
||||||
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
|
|
||||||
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
|
|
||||||
Acked-by: Yuanhan Liu <yliu@fridaylinux.org>
|
|
||||||
(cherry picked from commit 33adfbc805651f455dbf19f1e4b4b0878717a5e5)
|
|
||||||
Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
|
|
||||||
---
|
|
||||||
dpdk-17.11/lib/librte_vhost/vhost_user.c | 3 ++-
|
|
||||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/dpdk-17.11/lib/librte_vhost/vhost_user.c b/dpdk-17.11/lib/librte_vhost/vhost_user.c
|
|
||||||
index 1848c8de9..f334497d4 100644
|
|
||||||
--- a/dpdk-17.11/lib/librte_vhost/vhost_user.c
|
|
||||||
+++ b/dpdk-17.11/lib/librte_vhost/vhost_user.c
|
|
||||||
@@ -216,7 +216,8 @@ vhost_user_set_features(struct virtio_net *dev, uint64_t features)
|
|
||||||
(dev->features & (1 << VIRTIO_NET_F_MRG_RXBUF)) ? "on" : "off",
|
|
||||||
(dev->features & (1ULL << VIRTIO_F_VERSION_1)) ? "on" : "off");
|
|
||||||
|
|
||||||
- if (!(dev->features & (1ULL << VIRTIO_NET_F_MQ))) {
|
|
||||||
+ if ((dev->flags & VIRTIO_DEV_BUILTIN_VIRTIO_NET) &&
|
|
||||||
+ !(dev->features & (1ULL << VIRTIO_NET_F_MQ))) {
|
|
||||||
/*
|
|
||||||
* Remove all but first queue pair if MQ hasn't been
|
|
||||||
* negotiated. This is safe because the device is not
|
|
||||||
--
|
|
||||||
2.14.3
|
|
||||||
|
|
@ -1,86 +0,0 @@
|
|||||||
The RH DPDK Configuration System
|
|
||||||
================================
|
|
||||||
|
|
||||||
Overview
|
|
||||||
--------
|
|
||||||
|
|
||||||
As we're aware, the DPDK configuration is an important thing to manage
|
|
||||||
well. We have a number of concerns that must be addressed in any
|
|
||||||
configuration management system.
|
|
||||||
|
|
||||||
1. We want to make sure that we have 'conscious' configurations made up
|
|
||||||
for each platform, and for each DPDK-enabled package
|
|
||||||
2. We want to make sure that when DPDK project adds a new configuration,
|
|
||||||
we make a conscious decision about whether we enable that
|
|
||||||
configuration.
|
|
||||||
3. We need to make sure that we can accommodate the wacky new
|
|
||||||
configuration management system coming down the pipe for
|
|
||||||
DPDK (meson+ninja).
|
|
||||||
|
|
||||||
|
|
||||||
Procedure (High level)
|
|
||||||
----------------------
|
|
||||||
|
|
||||||
Taking some inspiration from the kernel config DPDK packages will use
|
|
||||||
the following procedure:
|
|
||||||
|
|
||||||
1. We generate the DPDK configuration from source (as we do today with
|
|
||||||
'make T=TEMPLATE config'). This creates a base configuration file.
|
|
||||||
In this case TEMPLATE is the combination of $arch and $release that
|
|
||||||
can vary for the package.
|
|
||||||
2. We generate a sha256 sum from that file (based on a rules engine
|
|
||||||
described later).
|
|
||||||
3. We take a hand-built checked-in configuration (dpdk.TEMPLATE.config)
|
|
||||||
which has a special tag inside containing the required base sha256
|
|
||||||
sum and compare with the generated sha256 sum.
|
|
||||||
4. If the comparison succeeds, we overwrite the generated config with
|
|
||||||
the hand-built config. Proceed building as normal.
|
|
||||||
5. If the comparison fails, we halt the build. Clearly a new
|
|
||||||
configuration was introduced which was not considered and needs to be
|
|
||||||
addressed.
|
|
||||||
|
|
||||||
It's important to note that if the default configuration changes, that
|
|
||||||
will also cause the shasum to change. Even if the default for a
|
|
||||||
parameter that we override changes, this will trip up this simplistic
|
|
||||||
version.
|
|
||||||
|
|
||||||
|
|
||||||
SHA Sum
|
|
||||||
-------
|
|
||||||
|
|
||||||
To generate the sha256 sum:
|
|
||||||
* remove all 'comment' and empty lines
|
|
||||||
* sort the remaining lines
|
|
||||||
* calculate the sha sum
|
|
||||||
|
|
||||||
This is expressed in bash as a one-liner:
|
|
||||||
|
|
||||||
egrep -v ^"$cmnt" $1 | egrep -v ^$ | sort -u | sha256sum | cut -d" " -f1
|
|
||||||
|
|
||||||
The new DPDK configuration will be generating into a header file
|
|
||||||
(rte_config.h), and so some 'forward' consideration was given to making
|
|
||||||
the comment line as configurable (instead of using straight '#') - hence the
|
|
||||||
'$cmnt' variable.
|
|
||||||
|
|
||||||
The SHA sum will be identified in the 'new' header by the standard ascii
|
|
||||||
tag format:
|
|
||||||
|
|
||||||
# -*- cfg-sha: [a-z0-9]+
|
|
||||||
|
|
||||||
Or in the case of a .c file:
|
|
||||||
/* -*- cfg-sha: [a-z0-9]+ */
|
|
||||||
|
|
||||||
|
|
||||||
Helper scripts
|
|
||||||
--------------
|
|
||||||
|
|
||||||
Included are a set of scripts for DPDK configuration, which replaces
|
|
||||||
the original setconf functions in the old spec file.
|
|
||||||
|
|
||||||
* set_config.sh - A script which copies the new DPDK configuration over the
|
|
||||||
old one. This validates the sha sum.
|
|
||||||
* gen_config_group.sh - A script which reads the .spec file for all of the
|
|
||||||
architectures and generates starting configurations.
|
|
||||||
Use this script to get a baseline configuration for
|
|
||||||
modifying.
|
|
||||||
* configlib.sh - A library for generating and reading SHA sums.
|
|
@ -1,559 +0,0 @@
|
|||||||
# -*- cfg-sha: 2543d3fdeee262a6a7fdcdd19e5c36cde5ae450d4cdf35a4a4af438710180e98
|
|
||||||
# BSD LICENSE
|
|
||||||
# Copyright (C) Cavium, Inc 2015. All rights reserved.
|
|
||||||
# Redistribution and use in source and binary forms, with or without
|
|
||||||
# modification, are permitted provided that the following conditions
|
|
||||||
# are met:
|
|
||||||
# * Redistributions of source code must retain the above copyright
|
|
||||||
# notice, this list of conditions and the following disclaimer.
|
|
||||||
# * Redistributions in binary form must reproduce the above copyright
|
|
||||||
# notice, this list of conditions and the following disclaimer in
|
|
||||||
# the documentation and/or other materials provided with the
|
|
||||||
# distribution.
|
|
||||||
# * Neither the name of Cavium, Inc nor the names of its
|
|
||||||
# contributors may be used to endorse or promote products derived
|
|
||||||
# from this software without specific prior written permission.
|
|
||||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
# BSD LICENSE
|
|
||||||
# Copyright (C) Cavium, Inc 2017. All rights reserved.
|
|
||||||
# Redistribution and use in source and binary forms, with or without
|
|
||||||
# modification, are permitted provided that the following conditions
|
|
||||||
# are met:
|
|
||||||
# * Redistributions of source code must retain the above copyright
|
|
||||||
# notice, this list of conditions and the following disclaimer.
|
|
||||||
# * Redistributions in binary form must reproduce the above copyright
|
|
||||||
# notice, this list of conditions and the following disclaimer in
|
|
||||||
# the documentation and/or other materials provided with the
|
|
||||||
# distribution.
|
|
||||||
# * Neither the name of Cavium, Inc nor the names of its
|
|
||||||
# contributors may be used to endorse or promote products derived
|
|
||||||
# from this software without specific prior written permission.
|
|
||||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
# BSD LICENSE
|
|
||||||
# Copyright(c) 2010-2016 Intel Corporation. All rights reserved.
|
|
||||||
# All rights reserved.
|
|
||||||
# Redistribution and use in source and binary forms, with or without
|
|
||||||
# modification, are permitted provided that the following conditions
|
|
||||||
# are met:
|
|
||||||
# * Redistributions of source code must retain the above copyright
|
|
||||||
# notice, this list of conditions and the following disclaimer.
|
|
||||||
# * Redistributions in binary form must reproduce the above copyright
|
|
||||||
# notice, this list of conditions and the following disclaimer in
|
|
||||||
# the documentation and/or other materials provided with the
|
|
||||||
# distribution.
|
|
||||||
# * Neither the name of Intel Corporation nor the names of its
|
|
||||||
# contributors may be used to endorse or promote products derived
|
|
||||||
# from this software without specific prior written permission.
|
|
||||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
# BSD LICENSE
|
|
||||||
# Copyright(c) 2010-2017 Intel Corporation. All rights reserved.
|
|
||||||
# All rights reserved.
|
|
||||||
# Redistribution and use in source and binary forms, with or without
|
|
||||||
# modification, are permitted provided that the following conditions
|
|
||||||
# are met:
|
|
||||||
# * Redistributions of source code must retain the above copyright
|
|
||||||
# notice, this list of conditions and the following disclaimer.
|
|
||||||
# * Redistributions in binary form must reproduce the above copyright
|
|
||||||
# notice, this list of conditions and the following disclaimer in
|
|
||||||
# the documentation and/or other materials provided with the
|
|
||||||
# distribution.
|
|
||||||
# * Neither the name of Intel Corporation nor the names of its
|
|
||||||
# contributors may be used to endorse or promote products derived
|
|
||||||
# from this software without specific prior written permission.
|
|
||||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
# RTE_EXEC_ENV values are the directories in mk/exec-env/
|
|
||||||
CONFIG_RTE_EXEC_ENV="linuxapp"
|
|
||||||
# RTE_ARCH values are architecture we compile for. directories in mk/arch/
|
|
||||||
CONFIG_RTE_ARCH="arm64"
|
|
||||||
# machine can define specific variables or action for a specific board
|
|
||||||
# RTE_MACHINE values are architecture we compile for. directories in mk/machine/
|
|
||||||
CONFIG_RTE_MACHINE="armv8a"
|
|
||||||
# The compiler we use.
|
|
||||||
# RTE_TOOLCHAIN values are architecture we compile for. directories in mk/toolchain/
|
|
||||||
CONFIG_RTE_TOOLCHAIN="gcc"
|
|
||||||
# Use intrinsics or assembly code for key routines
|
|
||||||
CONFIG_RTE_FORCE_INTRINSICS=y
|
|
||||||
# Machine forces strict alignment constraints.
|
|
||||||
CONFIG_RTE_ARCH_STRICT_ALIGN=n
|
|
||||||
# Compile to share library
|
|
||||||
CONFIG_RTE_BUILD_SHARED_LIB=n
|
|
||||||
# Use newest code breaking previous ABI
|
|
||||||
CONFIG_RTE_NEXT_ABI=n
|
|
||||||
# Major ABI to overwrite library specific LIBABIVER
|
|
||||||
CONFIG_RTE_MAJOR_ABI=
|
|
||||||
# Machine's cache line size
|
|
||||||
CONFIG_RTE_CACHE_LINE_SIZE=128
|
|
||||||
# Compile Environment Abstraction Layer
|
|
||||||
CONFIG_RTE_LIBRTE_EAL=y
|
|
||||||
CONFIG_RTE_MAX_LCORE=128
|
|
||||||
CONFIG_RTE_MAX_NUMA_NODES=8
|
|
||||||
CONFIG_RTE_MAX_MEMSEG=256
|
|
||||||
CONFIG_RTE_MAX_MEMZONE=2560
|
|
||||||
CONFIG_RTE_MAX_TAILQ=32
|
|
||||||
CONFIG_RTE_ENABLE_ASSERT=n
|
|
||||||
CONFIG_RTE_LOG_LEVEL=RTE_LOG_INFO
|
|
||||||
CONFIG_RTE_LOG_DP_LEVEL=RTE_LOG_INFO
|
|
||||||
CONFIG_RTE_LOG_HISTORY=256
|
|
||||||
CONFIG_RTE_BACKTRACE=y
|
|
||||||
CONFIG_RTE_LIBEAL_USE_HPET=n
|
|
||||||
CONFIG_RTE_EAL_ALLOW_INV_SOCKET_ID=n
|
|
||||||
CONFIG_RTE_EAL_ALWAYS_PANIC_ON_ERROR=n
|
|
||||||
CONFIG_RTE_EAL_IGB_UIO=n
|
|
||||||
CONFIG_RTE_EAL_VFIO=y
|
|
||||||
CONFIG_RTE_MALLOC_DEBUG=n
|
|
||||||
CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES=y
|
|
||||||
# Recognize/ignore architecture we compile for. AVX/AVX512 CPU flags for performance/power testing.
|
|
||||||
# AVX512 is marked as experimental for now, will enable it after enough
|
|
||||||
# field test and possible optimization.
|
|
||||||
CONFIG_RTE_ENABLE_AVX=y
|
|
||||||
CONFIG_RTE_ENABLE_AVX512=n
|
|
||||||
# Default driver path (or "" to disable)
|
|
||||||
CONFIG_RTE_EAL_PMD_PATH=""
|
|
||||||
# Compile Environment Abstraction Layer to support Vmware TSC map
|
|
||||||
CONFIG_RTE_LIBRTE_EAL_VMWARE_TSC_MAP_SUPPORT=y
|
|
||||||
# Compile architecture we compile for. PCI library
|
|
||||||
CONFIG_RTE_LIBRTE_PCI=y
|
|
||||||
# Compile architecture we compile for. argument parser library
|
|
||||||
CONFIG_RTE_LIBRTE_KVARGS=y
|
|
||||||
# Compile generic ethernet library
|
|
||||||
CONFIG_RTE_LIBRTE_ETHER=y
|
|
||||||
CONFIG_RTE_LIBRTE_ETHDEV_DEBUG=n
|
|
||||||
CONFIG_RTE_MAX_ETHPORTS=32
|
|
||||||
CONFIG_RTE_MAX_QUEUES_PER_PORT=1024
|
|
||||||
CONFIG_RTE_LIBRTE_IEEE1588=n
|
|
||||||
CONFIG_RTE_ETHDEV_QUEUE_STAT_CNTRS=16
|
|
||||||
CONFIG_RTE_ETHDEV_RXTX_CALLBACKS=y
|
|
||||||
CONFIG_RTE_ETHDEV_PROFILE_ITT_WASTED_RX_ITERATIONS=n
|
|
||||||
# Turn off Tx preparation stage
|
|
||||||
# Warning: rte_eth_tx_prepare() can be safely disabled only if using a
|
|
||||||
# driver which do not implement any Tx preparation.
|
|
||||||
CONFIG_RTE_ETHDEV_TX_PREPARE_NOOP=n
|
|
||||||
# Compile PCI bus driver
|
|
||||||
CONFIG_RTE_LIBRTE_PCI_BUS=y
|
|
||||||
# Compile architecture we compile for. vdev bus
|
|
||||||
CONFIG_RTE_LIBRTE_VDEV_BUS=y
|
|
||||||
# Compile burst-oriented Amazon ENA PMD driver
|
|
||||||
CONFIG_RTE_LIBRTE_ENA_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_ENA_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_ENA_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_ENA_DEBUG_TX_FREE=n
|
|
||||||
CONFIG_RTE_LIBRTE_ENA_DEBUG_DRIVER=n
|
|
||||||
CONFIG_RTE_LIBRTE_ENA_COM_DEBUG=n
|
|
||||||
# Compile burst-oriented IGB & EM PMD drivers
|
|
||||||
CONFIG_RTE_LIBRTE_EM_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_IGB_PMD=y
|
|
||||||
CONFIG_RTE_LIBRTE_E1000_DEBUG_INIT=n
|
|
||||||
CONFIG_RTE_LIBRTE_E1000_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_E1000_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_E1000_DEBUG_TX_FREE=n
|
|
||||||
CONFIG_RTE_LIBRTE_E1000_DEBUG_DRIVER=n
|
|
||||||
CONFIG_RTE_LIBRTE_E1000_PF_DISABLE_STRIP_CRC=n
|
|
||||||
# Compile burst-oriented IXGBE PMD driver
|
|
||||||
CONFIG_RTE_LIBRTE_IXGBE_PMD=y
|
|
||||||
CONFIG_RTE_LIBRTE_IXGBE_DEBUG_INIT=n
|
|
||||||
CONFIG_RTE_LIBRTE_IXGBE_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_IXGBE_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_IXGBE_DEBUG_TX_FREE=n
|
|
||||||
CONFIG_RTE_LIBRTE_IXGBE_DEBUG_DRIVER=n
|
|
||||||
CONFIG_RTE_LIBRTE_IXGBE_PF_DISABLE_STRIP_CRC=n
|
|
||||||
CONFIG_RTE_IXGBE_INC_VECTOR=y
|
|
||||||
CONFIG_RTE_LIBRTE_IXGBE_BYPASS=n
|
|
||||||
# Compile burst-oriented I40E PMD driver
|
|
||||||
CONFIG_RTE_LIBRTE_I40E_PMD=y
|
|
||||||
CONFIG_RTE_LIBRTE_I40E_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_I40E_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_I40E_DEBUG_TX_FREE=n
|
|
||||||
CONFIG_RTE_LIBRTE_I40E_RX_ALLOW_BULK_ALLOC=y
|
|
||||||
CONFIG_RTE_LIBRTE_I40E_INC_VECTOR=y
|
|
||||||
CONFIG_RTE_LIBRTE_I40E_16BYTE_RX_DESC=n
|
|
||||||
CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_PF=64
|
|
||||||
CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_VF=4
|
|
||||||
CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_VM=4
|
|
||||||
# interval up to 8160 us, aligned to 2 (or default value)
|
|
||||||
CONFIG_RTE_LIBRTE_I40E_ITR_INTERVAL=-1
|
|
||||||
# Compile burst-oriented FM10K PMD
|
|
||||||
CONFIG_RTE_LIBRTE_FM10K_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_FM10K_DEBUG_INIT=n
|
|
||||||
CONFIG_RTE_LIBRTE_FM10K_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_FM10K_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_FM10K_DEBUG_TX_FREE=n
|
|
||||||
CONFIG_RTE_LIBRTE_FM10K_DEBUG_DRIVER=n
|
|
||||||
CONFIG_RTE_LIBRTE_FM10K_RX_OLFLAGS_ENABLE=y
|
|
||||||
CONFIG_RTE_LIBRTE_FM10K_INC_VECTOR=y
|
|
||||||
# Compile burst-oriented Mellanox ConnectX-3 (MLX4) PMD
|
|
||||||
CONFIG_RTE_LIBRTE_MLX4_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_MLX4_DEBUG=n
|
|
||||||
CONFIG_RTE_LIBRTE_MLX4_DEBUG_BROKEN_VERBS=n
|
|
||||||
CONFIG_RTE_LIBRTE_MLX4_TX_MP_CACHE=8
|
|
||||||
# Compile burst-oriented Mellanox ConnectX-4 & ConnectX-5 (MLX5) PMD
|
|
||||||
CONFIG_RTE_LIBRTE_MLX5_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_MLX5_DEBUG=n
|
|
||||||
CONFIG_RTE_LIBRTE_MLX5_TX_MP_CACHE=8
|
|
||||||
# Compile burst-oriented Broadcom PMD driver
|
|
||||||
CONFIG_RTE_LIBRTE_BNX2X_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_BNX2X_DEBUG=n
|
|
||||||
CONFIG_RTE_LIBRTE_BNX2X_DEBUG_INIT=n
|
|
||||||
CONFIG_RTE_LIBRTE_BNX2X_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_BNX2X_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_BNX2X_MF_SUPPORT=n
|
|
||||||
CONFIG_RTE_LIBRTE_BNX2X_DEBUG_PERIODIC=n
|
|
||||||
# Compile burst-oriented Chelsio Terminator (CXGBE) PMD
|
|
||||||
CONFIG_RTE_LIBRTE_CXGBE_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_CXGBE_DEBUG=n
|
|
||||||
CONFIG_RTE_LIBRTE_CXGBE_DEBUG_REG=n
|
|
||||||
CONFIG_RTE_LIBRTE_CXGBE_DEBUG_MBOX=n
|
|
||||||
CONFIG_RTE_LIBRTE_CXGBE_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_CXGBE_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_CXGBE_TPUT=y
|
|
||||||
# Compile burst-oriented Cisco ENIC PMD driver
|
|
||||||
CONFIG_RTE_LIBRTE_ENIC_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_ENIC_DEBUG=n
|
|
||||||
CONFIG_RTE_LIBRTE_ENIC_DEBUG_FLOW=n
|
|
||||||
# Compile burst-oriented Netronome NFP PMD driver
|
|
||||||
CONFIG_RTE_LIBRTE_NFP_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_NFP_DEBUG=n
|
|
||||||
# Compile Marvell PMD driver
|
|
||||||
CONFIG_RTE_LIBRTE_MRVL_PMD=n
|
|
||||||
# Compile burst-oriented Broadcom BNXT PMD driver
|
|
||||||
CONFIG_RTE_LIBRTE_BNXT_PMD=n
|
|
||||||
# Compile burst-oriented Solarflare libefx-based PMD
|
|
||||||
CONFIG_RTE_LIBRTE_SFC_EFX_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_SFC_EFX_DEBUG=n
|
|
||||||
# Compile SOFTNIC PMD
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_SOFTNIC=y
|
|
||||||
# Compile software PMD backed by SZEDATA2 device
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_SZEDATA2=n
|
|
||||||
# Defines firmware type address space.
|
|
||||||
# See documentation for supported values.
|
|
||||||
# Other values raise compile time error.
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_SZEDATA2_AS=0
|
|
||||||
# Compile burst-oriented Cavium Thunderx NICVF PMD driver
|
|
||||||
CONFIG_RTE_LIBRTE_THUNDERX_NICVF_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_INIT=n
|
|
||||||
CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_DRIVER=n
|
|
||||||
CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_MBOX=n
|
|
||||||
# Compile burst-oriented Cavium LiquidIO PMD driver
|
|
||||||
CONFIG_RTE_LIBRTE_LIO_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_LIO_DEBUG_DRIVER=n
|
|
||||||
CONFIG_RTE_LIBRTE_LIO_DEBUG_INIT=n
|
|
||||||
CONFIG_RTE_LIBRTE_LIO_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_LIO_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_LIO_DEBUG_MBOX=n
|
|
||||||
CONFIG_RTE_LIBRTE_LIO_DEBUG_REGS=n
|
|
||||||
# NXP DPAA Bus
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA_BUS=n
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA_MEMPOOL=n
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA_PMD=n
|
|
||||||
# Compile burst-oriented Cavium OCTEONTX network PMD driver
|
|
||||||
CONFIG_RTE_LIBRTE_OCTEONTX_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_OCTEONTX_DEBUG_INIT=n
|
|
||||||
CONFIG_RTE_LIBRTE_OCTEONTX_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_OCTEONTX_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_OCTEONTX_DEBUG_DRIVER=n
|
|
||||||
CONFIG_RTE_LIBRTE_OCTEONTX_DEBUG_MBOX=n
|
|
||||||
# Compile NXP DPAA2 FSL-MC Bus
|
|
||||||
CONFIG_RTE_LIBRTE_FSLMC_BUS=n
|
|
||||||
# Compile Support Libraries for NXP DPAA2
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA2_MEMPOOL=n
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA2_USE_PHYS_IOVA=y
|
|
||||||
# Compile burst-oriented NXP DPAA2 PMD driver
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA2_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA2_DEBUG_INIT=n
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA2_DEBUG_DRIVER=n
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA2_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA2_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA2_DEBUG_TX_FREE=n
|
|
||||||
# Compile burst-oriented VIRTIO PMD driver
|
|
||||||
CONFIG_RTE_LIBRTE_VIRTIO_PMD=y
|
|
||||||
CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_INIT=n
|
|
||||||
CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_DRIVER=n
|
|
||||||
CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_DUMP=n
|
|
||||||
# Compile virtio device emulation inside virtio PMD driver
|
|
||||||
CONFIG_RTE_VIRTIO_USER=n
|
|
||||||
# Compile burst-oriented VMXNET3 PMD driver
|
|
||||||
CONFIG_RTE_LIBRTE_VMXNET3_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_INIT=n
|
|
||||||
CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_TX_FREE=n
|
|
||||||
CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_DRIVER=n
|
|
||||||
# Compile example software rings based PMD
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_RING=y
|
|
||||||
CONFIG_RTE_PMD_RING_MAX_RX_RINGS=16
|
|
||||||
CONFIG_RTE_PMD_RING_MAX_TX_RINGS=16
|
|
||||||
# Compile software PMD backed by PCAP files
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_PCAP=n
|
|
||||||
# Compile link bonding PMD library
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_BOND=n
|
|
||||||
CONFIG_RTE_LIBRTE_BOND_DEBUG_ALB=n
|
|
||||||
CONFIG_RTE_LIBRTE_BOND_DEBUG_ALB_L1=n
|
|
||||||
# QLogic 10G/25G/40G/50G/100G PMD
|
|
||||||
CONFIG_RTE_LIBRTE_QEDE_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_QEDE_DEBUG_INIT=n
|
|
||||||
CONFIG_RTE_LIBRTE_QEDE_DEBUG_INFO=n
|
|
||||||
CONFIG_RTE_LIBRTE_QEDE_DEBUG_DRIVER=n
|
|
||||||
CONFIG_RTE_LIBRTE_QEDE_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_QEDE_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_QEDE_VF_TX_SWITCH=y
|
|
||||||
#Provides abs path/name of architecture we compile for. firmware file.
|
|
||||||
#Empty string denotes driver will use default firmware
|
|
||||||
CONFIG_RTE_LIBRTE_QEDE_FW=""
|
|
||||||
# Compile software PMD backed by AF_PACKET sockets (Linux only)
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_AF_PACKET=n
|
|
||||||
# Compile ARK PMD
|
|
||||||
CONFIG_RTE_LIBRTE_ARK_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_ARK_PAD_TX=y
|
|
||||||
CONFIG_RTE_LIBRTE_ARK_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_ARK_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_ARK_DEBUG_STATS=n
|
|
||||||
CONFIG_RTE_LIBRTE_ARK_DEBUG_TRACE=n
|
|
||||||
# Compile WRS accelerated virtual port (AVP) guest PMD driver
|
|
||||||
CONFIG_RTE_LIBRTE_AVP_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_AVP_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_AVP_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_AVP_DEBUG_DRIVER=y
|
|
||||||
CONFIG_RTE_LIBRTE_AVP_DEBUG_BUFFERS=n
|
|
||||||
# Compile architecture we compile for. TAP PMD
|
|
||||||
# It is enabled by default for Linux only.
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_TAP=n
|
|
||||||
# Compile null PMD
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_NULL=n
|
|
||||||
# Compile fail-safe PMD
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_FAILSAFE=y
|
|
||||||
# Do prefetch of packet data within PMD driver receive function
|
|
||||||
CONFIG_RTE_PMD_PACKET_PREFETCH=y
|
|
||||||
# Compile generic crypto device library
|
|
||||||
CONFIG_RTE_LIBRTE_CRYPTODEV=n
|
|
||||||
CONFIG_RTE_LIBRTE_CRYPTODEV_DEBUG=n
|
|
||||||
CONFIG_RTE_CRYPTO_MAX_DEVS=64
|
|
||||||
CONFIG_RTE_CRYPTODEV_NAME_LEN=64
|
|
||||||
# Compile PMD for ARMv8 Crypto device
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO_DEBUG=n
|
|
||||||
# Compile NXP DPAA2 crypto sec driver for CAAM HW
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_DPAA2_SEC=n
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA2_SEC_DEBUG_INIT=n
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA2_SEC_DEBUG_DRIVER=n
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA2_SEC_DEBUG_RX=n
|
|
||||||
# NXP DPAA caam - crypto driver
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_DPAA_SEC=n
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA_SEC_DEBUG_INIT=n
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA_SEC_DEBUG_DRIVER=n
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA_SEC_DEBUG_RX=n
|
|
||||||
# Compile PMD for QuickAssist based devices
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_QAT=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_INIT=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_DRIVER=n
|
|
||||||
# Number of sessions to create in architecture we compile for. session memory pool
|
|
||||||
# on a single QuickAssist device.
|
|
||||||
CONFIG_RTE_QAT_PMD_MAX_NB_SESSIONS=2048
|
|
||||||
# Compile PMD for AESNI backed device
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_AESNI_MB=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_AESNI_MB_DEBUG=n
|
|
||||||
# Compile PMD for Software backed device
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_OPENSSL=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_OPENSSL_DEBUG=n
|
|
||||||
# Compile PMD for AESNI GCM device
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_AESNI_GCM=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_AESNI_GCM_DEBUG=n
|
|
||||||
# Compile PMD for SNOW 3G device
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_SNOW3G=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_SNOW3G_DEBUG=n
|
|
||||||
# Compile PMD for KASUMI device
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_KASUMI=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_KASUMI_DEBUG=n
|
|
||||||
# Compile PMD for ZUC device
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_ZUC=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_ZUC_DEBUG=n
|
|
||||||
# Compile PMD for Crypto Scheduler device
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_CRYPTO_SCHEDULER=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_CRYPTO_SCHEDULER_DEBUG=n
|
|
||||||
# Compile PMD for NULL Crypto device
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_NULL_CRYPTO=n
|
|
||||||
# Compile PMD for Marvell Crypto device
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_MRVL_CRYPTO=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_MRVL_CRYPTO_DEBUG=n
|
|
||||||
# Compile generic security library
|
|
||||||
CONFIG_RTE_LIBRTE_SECURITY=n
|
|
||||||
# Compile generic event device library
|
|
||||||
CONFIG_RTE_LIBRTE_EVENTDEV=y
|
|
||||||
CONFIG_RTE_LIBRTE_EVENTDEV_DEBUG=n
|
|
||||||
CONFIG_RTE_EVENT_MAX_DEVS=16
|
|
||||||
CONFIG_RTE_EVENT_MAX_QUEUES_PER_DEV=64
|
|
||||||
# Compile PMD for skeleton event device
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_SKELETON_EVENTDEV=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_SKELETON_EVENTDEV_DEBUG=n
|
|
||||||
# Compile PMD for software event device
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_SW_EVENTDEV=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_SW_EVENTDEV_DEBUG=n
|
|
||||||
# Compile PMD for octeontx sso event device
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF_DEBUG=n
|
|
||||||
# Compile librte_ring
|
|
||||||
CONFIG_RTE_LIBRTE_RING=y
|
|
||||||
# Compile librte_mempool
|
|
||||||
CONFIG_RTE_LIBRTE_MEMPOOL=y
|
|
||||||
CONFIG_RTE_MEMPOOL_CACHE_MAX_SIZE=512
|
|
||||||
CONFIG_RTE_LIBRTE_MEMPOOL_DEBUG=n
|
|
||||||
# Compile Mempool drivers
|
|
||||||
CONFIG_RTE_DRIVER_MEMPOOL_RING=y
|
|
||||||
CONFIG_RTE_DRIVER_MEMPOOL_STACK=y
|
|
||||||
# Compile PMD for octeontx fpa mempool device
|
|
||||||
CONFIG_RTE_LIBRTE_OCTEONTX_MEMPOOL=y
|
|
||||||
CONFIG_RTE_LIBRTE_OCTEONTX_MEMPOOL_DEBUG=n
|
|
||||||
# Compile librte_mbuf
|
|
||||||
CONFIG_RTE_LIBRTE_MBUF=y
|
|
||||||
CONFIG_RTE_LIBRTE_MBUF_DEBUG=n
|
|
||||||
CONFIG_RTE_MBUF_DEFAULT_MEMPOOL_OPS="ring_mp_mc"
|
|
||||||
CONFIG_RTE_MBUF_REFCNT_ATOMIC=y
|
|
||||||
CONFIG_RTE_PKTMBUF_HEADROOM=128
|
|
||||||
# Compile librte_timer
|
|
||||||
CONFIG_RTE_LIBRTE_TIMER=n
|
|
||||||
CONFIG_RTE_LIBRTE_TIMER_DEBUG=n
|
|
||||||
# Compile librte_cfgfile
|
|
||||||
CONFIG_RTE_LIBRTE_CFGFILE=n
|
|
||||||
# Compile librte_cmdline
|
|
||||||
CONFIG_RTE_LIBRTE_CMDLINE=y
|
|
||||||
CONFIG_RTE_LIBRTE_CMDLINE_DEBUG=n
|
|
||||||
# Compile librte_hash
|
|
||||||
CONFIG_RTE_LIBRTE_HASH=y
|
|
||||||
CONFIG_RTE_LIBRTE_HASH_DEBUG=n
|
|
||||||
# Compile librte_efd
|
|
||||||
CONFIG_RTE_LIBRTE_EFD=y
|
|
||||||
# Compile librte_member
|
|
||||||
CONFIG_RTE_LIBRTE_MEMBER=y
|
|
||||||
# Compile librte_jobstats
|
|
||||||
CONFIG_RTE_LIBRTE_JOBSTATS=n
|
|
||||||
# Compile architecture we compile for. device metrics library
|
|
||||||
CONFIG_RTE_LIBRTE_METRICS=y
|
|
||||||
# Compile architecture we compile for. bitrate statistics library
|
|
||||||
CONFIG_RTE_LIBRTE_BITRATE=y
|
|
||||||
# Compile architecture we compile for. latency statistics library
|
|
||||||
CONFIG_RTE_LIBRTE_LATENCY_STATS=y
|
|
||||||
# Compile librte_lpm
|
|
||||||
CONFIG_RTE_LIBRTE_LPM=n
|
|
||||||
CONFIG_RTE_LIBRTE_LPM_DEBUG=n
|
|
||||||
# Compile librte_acl
|
|
||||||
CONFIG_RTE_LIBRTE_ACL=n
|
|
||||||
CONFIG_RTE_LIBRTE_ACL_DEBUG=n
|
|
||||||
# Compile librte_power
|
|
||||||
CONFIG_RTE_LIBRTE_POWER=n
|
|
||||||
CONFIG_RTE_LIBRTE_POWER_DEBUG=n
|
|
||||||
CONFIG_RTE_MAX_LCORE_FREQS=64
|
|
||||||
# Compile librte_net
|
|
||||||
CONFIG_RTE_LIBRTE_NET=y
|
|
||||||
# Compile librte_ip_frag
|
|
||||||
CONFIG_RTE_LIBRTE_IP_FRAG=y
|
|
||||||
CONFIG_RTE_LIBRTE_IP_FRAG_DEBUG=n
|
|
||||||
CONFIG_RTE_LIBRTE_IP_FRAG_MAX_FRAG=4
|
|
||||||
CONFIG_RTE_LIBRTE_IP_FRAG_TBL_STAT=n
|
|
||||||
# Compile GRO library
|
|
||||||
CONFIG_RTE_LIBRTE_GRO=y
|
|
||||||
# Compile GSO library
|
|
||||||
CONFIG_RTE_LIBRTE_GSO=y
|
|
||||||
# Compile librte_meter
|
|
||||||
CONFIG_RTE_LIBRTE_METER=y
|
|
||||||
# Compile librte_classify
|
|
||||||
CONFIG_RTE_LIBRTE_FLOW_CLASSIFY=n
|
|
||||||
# Compile librte_sched
|
|
||||||
CONFIG_RTE_LIBRTE_SCHED=y
|
|
||||||
CONFIG_RTE_SCHED_DEBUG=n
|
|
||||||
CONFIG_RTE_SCHED_RED=n
|
|
||||||
CONFIG_RTE_SCHED_COLLECT_STATS=n
|
|
||||||
CONFIG_RTE_SCHED_SUBPORT_TC_OV=n
|
|
||||||
CONFIG_RTE_SCHED_PORT_N_GRINDERS=8
|
|
||||||
CONFIG_RTE_SCHED_VECTOR=n
|
|
||||||
# Compile architecture we compile for. distributor library
|
|
||||||
CONFIG_RTE_LIBRTE_DISTRIBUTOR=n
|
|
||||||
# Compile architecture we compile for. reorder library
|
|
||||||
CONFIG_RTE_LIBRTE_REORDER=n
|
|
||||||
# Compile librte_port
|
|
||||||
CONFIG_RTE_LIBRTE_PORT=n
|
|
||||||
CONFIG_RTE_PORT_STATS_COLLECT=n
|
|
||||||
CONFIG_RTE_PORT_PCAP=n
|
|
||||||
# Compile librte_table
|
|
||||||
CONFIG_RTE_LIBRTE_TABLE=n
|
|
||||||
CONFIG_RTE_TABLE_STATS_COLLECT=n
|
|
||||||
# Compile librte_pipeline
|
|
||||||
CONFIG_RTE_LIBRTE_PIPELINE=n
|
|
||||||
CONFIG_RTE_PIPELINE_STATS_COLLECT=n
|
|
||||||
# Compile librte_kni
|
|
||||||
CONFIG_RTE_LIBRTE_KNI=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_KNI=n
|
|
||||||
CONFIG_RTE_KNI_KMOD=n
|
|
||||||
CONFIG_RTE_KNI_KMOD_ETHTOOL=n
|
|
||||||
CONFIG_RTE_KNI_PREEMPT_DEFAULT=y
|
|
||||||
# Compile architecture we compile for. pdump library
|
|
||||||
CONFIG_RTE_LIBRTE_PDUMP=y
|
|
||||||
# Compile vhost user library
|
|
||||||
CONFIG_RTE_LIBRTE_VHOST=y
|
|
||||||
CONFIG_RTE_LIBRTE_VHOST_NUMA=y
|
|
||||||
CONFIG_RTE_LIBRTE_VHOST_DEBUG=n
|
|
||||||
# Compile vhost PMD
|
|
||||||
# To compile, CONFIG_RTE_LIBRTE_VHOST should be enabled.
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_VHOST=n
|
|
||||||
# Compile architecture we compile for. test application
|
|
||||||
CONFIG_RTE_APP_TEST=y
|
|
||||||
CONFIG_RTE_APP_TEST_RESOURCE_TAR=n
|
|
||||||
# Compile architecture we compile for. PMD test application
|
|
||||||
CONFIG_RTE_TEST_PMD=n
|
|
||||||
CONFIG_RTE_TEST_PMD_RECORD_CORE_CYCLES=n
|
|
||||||
CONFIG_RTE_TEST_PMD_RECORD_BURST_STATS=n
|
|
||||||
# Compile architecture we compile for. crypto performance application
|
|
||||||
CONFIG_RTE_APP_CRYPTO_PERF=y
|
|
||||||
# Compile architecture we compile for. eventdev application
|
|
||||||
CONFIG_RTE_APP_EVENTDEV=y
|
|
||||||
CONFIG_RTE_EXEC_ENV_LINUXAPP=y
|
|
||||||
CONFIG_RTE_ARCH_ARM64=y
|
|
||||||
CONFIG_RTE_ARCH_64=y
|
|
||||||
# Maximum available cache line size in arm64 implementations.
|
|
||||||
# Setting to maximum available cache line size in generic config
|
|
||||||
# to address minimum DMA alignment across all arm64 implementations.
|
|
||||||
CONFIG_RTE_TOOLCHAIN_GCC=y
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_XENVIRT=n
|
|
@ -1,105 +0,0 @@
|
|||||||
# Copyright (C) 2017, Red Hat, Inc.
|
|
||||||
#
|
|
||||||
# Core configuration file library.
|
|
||||||
|
|
||||||
# Configurations are determined by sha values. The way to determine is by
|
|
||||||
# the special text:
|
|
||||||
# $FILE_COMMENT_TYPE -*- cfg-sha: $SHA256 -*-
|
|
||||||
|
|
||||||
export LC_ALL=C
|
|
||||||
|
|
||||||
# check required binaries
|
|
||||||
__check_reqd_binaries() {
|
|
||||||
local BIN __binaries=("egrep" "sort" "sha256sum" "sed")
|
|
||||||
for BIN in $__binaries; do
|
|
||||||
if ! type -P $BIN >/dev/null 2>&1; then
|
|
||||||
echo "Binary $BIN not found. Please install."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
# Calculates a sha from a file
|
|
||||||
# The algorithm for generating a sha from a config is thus:
|
|
||||||
#
|
|
||||||
# 1. Remove all comment lines and blank lines
|
|
||||||
# 2. Sort the content
|
|
||||||
# 3. generate the sha-256 sum
|
|
||||||
#
|
|
||||||
# From a script perspective, this means:
|
|
||||||
# egrep -v ^\# %file% | egrep -v ^$ | sort -u | sha256sum
|
|
||||||
#
|
|
||||||
# Params:
|
|
||||||
# $1 = output variable
|
|
||||||
# $2 = file to use to calculate the shasum
|
|
||||||
# $3 = file comment type (defaults to # if unspecified)
|
|
||||||
calc_sha() {
|
|
||||||
__check_reqd_binaries
|
|
||||||
|
|
||||||
if [ "$1" == "" ]; then
|
|
||||||
echo "Please pass in a storage variable."
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
local __resultvar=$1
|
|
||||||
__retval=1
|
|
||||||
shift
|
|
||||||
|
|
||||||
local __file=$1
|
|
||||||
local cmnt=${2:-#}
|
|
||||||
|
|
||||||
if [ -f "$__file" ]; then
|
|
||||||
local __shasum=$(egrep -v ^"$cmnt" "$__file" | egrep -v ^$ | sort -u | sha256sum -t | cut -d" " -f1)
|
|
||||||
eval $__resultvar="'$__shasum'"
|
|
||||||
__retval=0
|
|
||||||
fi
|
|
||||||
return $__retval
|
|
||||||
}
|
|
||||||
|
|
||||||
# Retrieves a sha stored in a file
|
|
||||||
# Param:
|
|
||||||
# $1 = output variable
|
|
||||||
# $2 = file to use to calculate the shasum
|
|
||||||
# $3 = file comment type (defaults to # if unspecified)
|
|
||||||
retr_sha() {
|
|
||||||
__check_reqd_binaries
|
|
||||||
|
|
||||||
if [ "$1" == "" ]; then
|
|
||||||
echo "Please pass in a storage variable."
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
local __resultvar=$1
|
|
||||||
__retval=1
|
|
||||||
shift
|
|
||||||
|
|
||||||
local __file=$1
|
|
||||||
local cmnt=${2:-#}
|
|
||||||
|
|
||||||
if [ -f "$__file" ]; then
|
|
||||||
if grep -q "$cmnt -\*- cfg-sha:" "$__file"; then
|
|
||||||
local __shasum=$(grep "$cmnt -\*- cfg-sha:" "$__file" | sed -e "s@$cmnt -\*- cfg-sha: @@" | cut -d" " -f1)
|
|
||||||
eval $__resultvar="'$__shasum'"
|
|
||||||
__retval=0
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
return $__retval
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# Set a config value
|
|
||||||
# set_conf dpdk_build_tree parameter value
|
|
||||||
# dpdk_build_tree is the directory where the .config lives
|
|
||||||
# parameter is the config parameter
|
|
||||||
# value is the value to set for the config parameter
|
|
||||||
set_conf() {
|
|
||||||
c="$1/.config"
|
|
||||||
shift
|
|
||||||
|
|
||||||
if grep -q "$1" "$c"; then
|
|
||||||
sed -i "s:^$1=.*$:$1=$2:g" $c
|
|
||||||
else
|
|
||||||
echo $1=$2 >> "$c"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
@ -1,151 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
source configlib.sh
|
|
||||||
|
|
||||||
# Generates arch configurations in the current directory based on
|
|
||||||
# 1. an openvswitch.spec file
|
|
||||||
# 2. an expanded dpdk tree
|
|
||||||
|
|
||||||
if (( $# != 2 )); then
|
|
||||||
echo "$0: openvswitch.spec dpdk_tree" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
OVSSPEC="$1"
|
|
||||||
DPDKDIR="$2"
|
|
||||||
|
|
||||||
# accumulate all arch + name triples
|
|
||||||
OVS_DPDK_CONF_MACH_ARCH=()
|
|
||||||
for arch in $(grep %define\ dpdk_mach_arch "$OVSSPEC" | sed 's@%define dpdk_mach_arch @@')
|
|
||||||
do
|
|
||||||
OVS_DPDK_CONF_MACH_ARCH+=($arch)
|
|
||||||
done
|
|
||||||
|
|
||||||
OVS_DPDK_CONF_MACH_TMPL=()
|
|
||||||
for tmpl in $(grep %define\ dpdk_mach_tmpl "$OVSSPEC" | sed 's@%define dpdk_mach_tmpl @@')
|
|
||||||
do
|
|
||||||
OVS_DPDK_CONF_MACH_TMPL+=($tmpl)
|
|
||||||
done
|
|
||||||
|
|
||||||
OVS_DPDK_CONF_MACH=()
|
|
||||||
for mach in $(grep %define\ dpdk_mach\ "$OVSSPEC" | sed 's@%define dpdk_mach @@')
|
|
||||||
do
|
|
||||||
OVS_DPDK_CONF_MACH+=($mach)
|
|
||||||
done
|
|
||||||
|
|
||||||
OVS_DPDK_TARGETS=()
|
|
||||||
for ((i=0; i < ${#OVS_DPDK_CONF_MACH[@]}; i++));
|
|
||||||
do
|
|
||||||
OVS_DPDK_TARGETS+=("${OVS_DPDK_CONF_MACH_ARCH[$i]}-${OVS_DPDK_CONF_MACH_TMPL[$i]}-linuxapp-gcc")
|
|
||||||
echo "DPDK-target: ${OVS_DPDK_TARGETS[$i]}"
|
|
||||||
done
|
|
||||||
|
|
||||||
OUTPUT_DIR=$(pwd)
|
|
||||||
pushd "$DPDKDIR"
|
|
||||||
for ((i=0; i < ${#OVS_DPDK_TARGETS[@]}; i++));
|
|
||||||
do
|
|
||||||
echo "For ${OVS_DPDK_TARGETS[$i]}:"
|
|
||||||
|
|
||||||
echo " a. Generating initial config"
|
|
||||||
echo " make V=1 T=${OVS_DPDK_TARGETS[$i]} O=${OVS_DPDK_TARGETS[$i]}"
|
|
||||||
make V=1 T=${OVS_DPDK_TARGETS[$i]} O=${OVS_DPDK_TARGETS[$i]} -j8 config
|
|
||||||
ORIG_SHA=""
|
|
||||||
OUTDIR="${OVS_DPDK_TARGETS[$i]}"
|
|
||||||
|
|
||||||
echo " b. calculating and applying sha"
|
|
||||||
calc_sha ORIG_SHA "${OUTDIR}/.config"
|
|
||||||
if [ "$ORIG_SHA" == "" ]; then
|
|
||||||
echo "ERROR: Unable to get sha for arch ${OVS_DPDK_TARGETS[$i]}"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
echo "# -*- cfg-sha: ${ORIG_SHA}" > ${OUTDIR}/.config.new
|
|
||||||
cat "${OUTDIR}/.config" >> "${OUTDIR}/.config.new"
|
|
||||||
cp "${OUTDIR}/.config" "${OUTDIR}/.config.orig"
|
|
||||||
mv -f "${OUTDIR}/.config.new" "${OUTDIR}/.config"
|
|
||||||
|
|
||||||
echo " c. setting initial configurations"
|
|
||||||
# these are the original setconf values from openvswitch.spec
|
|
||||||
set_conf "${OUTDIR}" CONFIG_RTE_MACHINE "\\\"${OVS_DPDK_CONF_MACH[$i]}\\\""
|
|
||||||
|
|
||||||
# Disable DPDK libraries not needed by OVS
|
|
||||||
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_TIMER n
|
|
||||||
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_CFGFILE n
|
|
||||||
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_JOBSTATS n
|
|
||||||
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_LPM n
|
|
||||||
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_ACL n
|
|
||||||
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_POWER n
|
|
||||||
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_DISTRIBUTOR n
|
|
||||||
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_REORDER n
|
|
||||||
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_PORT n
|
|
||||||
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_TABLE n
|
|
||||||
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_PIPELINE n
|
|
||||||
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_KNI n
|
|
||||||
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_CRYPTODEV n
|
|
||||||
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_SECURITY n
|
|
||||||
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_FLOW_CLASSIFY n
|
|
||||||
|
|
||||||
# Disable virtio user as not used by OVS
|
|
||||||
set_conf "${OUTDIR}" CONFIG_RTE_VIRTIO_USER n
|
|
||||||
|
|
||||||
# Enable DPDK libraries needed by OVS
|
|
||||||
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_VHOST_NUMA y
|
|
||||||
|
|
||||||
# start by disabling ALL PMDs
|
|
||||||
for pmd in $(grep _PMD= "${OUTDIR}/.config" | sed 's@=\(y\|n\)@@g')
|
|
||||||
do
|
|
||||||
set_conf "${OUTDIR}" $pmd n
|
|
||||||
done
|
|
||||||
|
|
||||||
# PMDs which have their own naming scheme
|
|
||||||
# the default for this was 'n' at one point. Make sure we keep it
|
|
||||||
# as such
|
|
||||||
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_PMD_QAT n
|
|
||||||
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF n
|
|
||||||
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_PMD_VHOST n
|
|
||||||
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_PMD_KNI n
|
|
||||||
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_PMD_XENVIRT n
|
|
||||||
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_PMD_NULL_CRYPTO n
|
|
||||||
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_PMD_NULL n
|
|
||||||
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_PMD_TAP n
|
|
||||||
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_PMD_CRYPTO_SCHEDULER n
|
|
||||||
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_PMD_SKELETON_EVENTDEV n
|
|
||||||
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_PMD_SW_EVENTDEV n
|
|
||||||
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_PMD_PCAP n
|
|
||||||
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_PMD_BOND n
|
|
||||||
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_PMD_AF_PACKET n
|
|
||||||
|
|
||||||
# whitelist of enabled PMDs
|
|
||||||
# Soft PMDs to enable
|
|
||||||
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_PMD_RING y
|
|
||||||
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_VIRTIO_PMD y
|
|
||||||
|
|
||||||
# HW PMDs
|
|
||||||
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_I40E_PMD y
|
|
||||||
case "${OVS_DPDK_CONF_MACH_ARCH[i]}" in
|
|
||||||
x86_64)
|
|
||||||
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_ENIC_PMD y
|
|
||||||
;&
|
|
||||||
arm64)
|
|
||||||
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_IXGBE_PMD y
|
|
||||||
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_IGB_PMD y
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# Disable kernel modules
|
|
||||||
set_conf "${OUTDIR}" CONFIG_RTE_EAL_IGB_UIO n
|
|
||||||
set_conf "${OUTDIR}" CONFIG_RTE_KNI_KMOD n
|
|
||||||
|
|
||||||
# Disable experimental stuff
|
|
||||||
set_conf "${OUTDIR}" CONFIG_RTE_NEXT_ABI n
|
|
||||||
|
|
||||||
cp "${OUTDIR}/.config" "${OUTPUT_DIR}/${OVS_DPDK_TARGETS[$i]}-config"
|
|
||||||
done
|
|
||||||
popd >/dev/null
|
|
||||||
|
|
||||||
echo -n "For each arch ( "
|
|
||||||
for ((i=0; i < ${#OVS_DPDK_CONF_MACH_ARCH[@]}; i++));
|
|
||||||
do
|
|
||||||
echo -n "${OVS_DPDK_CONF_MACH_ARCH[i]} "
|
|
||||||
done
|
|
||||||
echo "):"
|
|
||||||
echo "1. ensure you enable the requisite hw"
|
|
@ -1,534 +0,0 @@
|
|||||||
# -*- cfg-sha: 4d1578565c23e449d8e5c1c18e88181f05769b5132b7f22dcbed6bce900e9d0c
|
|
||||||
# BSD LICENSE
|
|
||||||
# Copyright (C) IBM Corporation 2014.
|
|
||||||
# Redistribution and use in source and binary forms, with or without
|
|
||||||
# modification, are permitted provided that the following conditions
|
|
||||||
# are met:
|
|
||||||
# * Redistributions of source code must retain the above copyright
|
|
||||||
# notice, this list of conditions and the following disclaimer.
|
|
||||||
# * Redistributions in binary form must reproduce the above copyright
|
|
||||||
# notice, this list of conditions and the following disclaimer in
|
|
||||||
# the documentation and/or other materials provided with the
|
|
||||||
# distribution.
|
|
||||||
# * Neither the name of IBM Corporation nor the names of its
|
|
||||||
# contributors may be used to endorse or promote products derived
|
|
||||||
# from this software without specific prior written permission.
|
|
||||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
# BSD LICENSE
|
|
||||||
# Copyright(c) 2010-2016 Intel Corporation. All rights reserved.
|
|
||||||
# All rights reserved.
|
|
||||||
# Redistribution and use in source and binary forms, with or without
|
|
||||||
# modification, are permitted provided that the following conditions
|
|
||||||
# are met:
|
|
||||||
# * Redistributions of source code must retain the above copyright
|
|
||||||
# notice, this list of conditions and the following disclaimer.
|
|
||||||
# * Redistributions in binary form must reproduce the above copyright
|
|
||||||
# notice, this list of conditions and the following disclaimer in
|
|
||||||
# the documentation and/or other materials provided with the
|
|
||||||
# distribution.
|
|
||||||
# * Neither the name of Intel Corporation nor the names of its
|
|
||||||
# contributors may be used to endorse or promote products derived
|
|
||||||
# from this software without specific prior written permission.
|
|
||||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
# BSD LICENSE
|
|
||||||
# Copyright(c) 2010-2017 Intel Corporation. All rights reserved.
|
|
||||||
# All rights reserved.
|
|
||||||
# Redistribution and use in source and binary forms, with or without
|
|
||||||
# modification, are permitted provided that the following conditions
|
|
||||||
# are met:
|
|
||||||
# * Redistributions of source code must retain the above copyright
|
|
||||||
# notice, this list of conditions and the following disclaimer.
|
|
||||||
# * Redistributions in binary form must reproduce the above copyright
|
|
||||||
# notice, this list of conditions and the following disclaimer in
|
|
||||||
# the documentation and/or other materials provided with the
|
|
||||||
# distribution.
|
|
||||||
# * Neither the name of Intel Corporation nor the names of its
|
|
||||||
# contributors may be used to endorse or promote products derived
|
|
||||||
# from this software without specific prior written permission.
|
|
||||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
# RTE_EXEC_ENV values are the directories in mk/exec-env/
|
|
||||||
CONFIG_RTE_EXEC_ENV="linuxapp"
|
|
||||||
# RTE_ARCH values are architecture we compile for. directories in mk/arch/
|
|
||||||
CONFIG_RTE_ARCH="ppc_64"
|
|
||||||
# machine can define specific variables or action for a specific board
|
|
||||||
# RTE_MACHINE values are architecture we compile for. directories in mk/machine/
|
|
||||||
CONFIG_RTE_MACHINE="power8"
|
|
||||||
# The compiler we use.
|
|
||||||
# RTE_TOOLCHAIN values are architecture we compile for. directories in mk/toolchain/
|
|
||||||
CONFIG_RTE_TOOLCHAIN="gcc"
|
|
||||||
# Use intrinsics or assembly code for key routines
|
|
||||||
CONFIG_RTE_FORCE_INTRINSICS=n
|
|
||||||
# Machine forces strict alignment constraints.
|
|
||||||
CONFIG_RTE_ARCH_STRICT_ALIGN=n
|
|
||||||
# Compile to share library
|
|
||||||
CONFIG_RTE_BUILD_SHARED_LIB=n
|
|
||||||
# Use newest code breaking previous ABI
|
|
||||||
CONFIG_RTE_NEXT_ABI=n
|
|
||||||
# Major ABI to overwrite library specific LIBABIVER
|
|
||||||
CONFIG_RTE_MAJOR_ABI=
|
|
||||||
# Machine's cache line size
|
|
||||||
CONFIG_RTE_CACHE_LINE_SIZE=128
|
|
||||||
# Compile Environment Abstraction Layer
|
|
||||||
CONFIG_RTE_LIBRTE_EAL=y
|
|
||||||
CONFIG_RTE_MAX_LCORE=256
|
|
||||||
CONFIG_RTE_MAX_NUMA_NODES=32
|
|
||||||
CONFIG_RTE_MAX_MEMSEG=256
|
|
||||||
CONFIG_RTE_MAX_MEMZONE=2560
|
|
||||||
CONFIG_RTE_MAX_TAILQ=32
|
|
||||||
CONFIG_RTE_ENABLE_ASSERT=n
|
|
||||||
CONFIG_RTE_LOG_LEVEL=RTE_LOG_INFO
|
|
||||||
CONFIG_RTE_LOG_DP_LEVEL=RTE_LOG_INFO
|
|
||||||
CONFIG_RTE_LOG_HISTORY=256
|
|
||||||
CONFIG_RTE_BACKTRACE=y
|
|
||||||
CONFIG_RTE_LIBEAL_USE_HPET=n
|
|
||||||
CONFIG_RTE_EAL_ALLOW_INV_SOCKET_ID=n
|
|
||||||
CONFIG_RTE_EAL_ALWAYS_PANIC_ON_ERROR=n
|
|
||||||
CONFIG_RTE_EAL_IGB_UIO=n
|
|
||||||
CONFIG_RTE_EAL_VFIO=y
|
|
||||||
CONFIG_RTE_MALLOC_DEBUG=n
|
|
||||||
CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES=y
|
|
||||||
# Recognize/ignore architecture we compile for. AVX/AVX512 CPU flags for performance/power testing.
|
|
||||||
# AVX512 is marked as experimental for now, will enable it after enough
|
|
||||||
# field test and possible optimization.
|
|
||||||
CONFIG_RTE_ENABLE_AVX=y
|
|
||||||
CONFIG_RTE_ENABLE_AVX512=n
|
|
||||||
# Default driver path (or "" to disable)
|
|
||||||
CONFIG_RTE_EAL_PMD_PATH=""
|
|
||||||
# Compile Environment Abstraction Layer to support Vmware TSC map
|
|
||||||
CONFIG_RTE_LIBRTE_EAL_VMWARE_TSC_MAP_SUPPORT=n
|
|
||||||
# Compile architecture we compile for. PCI library
|
|
||||||
CONFIG_RTE_LIBRTE_PCI=y
|
|
||||||
# Compile architecture we compile for. argument parser library
|
|
||||||
CONFIG_RTE_LIBRTE_KVARGS=y
|
|
||||||
# Compile generic ethernet library
|
|
||||||
CONFIG_RTE_LIBRTE_ETHER=y
|
|
||||||
CONFIG_RTE_LIBRTE_ETHDEV_DEBUG=n
|
|
||||||
CONFIG_RTE_MAX_ETHPORTS=32
|
|
||||||
CONFIG_RTE_MAX_QUEUES_PER_PORT=1024
|
|
||||||
CONFIG_RTE_LIBRTE_IEEE1588=n
|
|
||||||
CONFIG_RTE_ETHDEV_QUEUE_STAT_CNTRS=16
|
|
||||||
CONFIG_RTE_ETHDEV_RXTX_CALLBACKS=y
|
|
||||||
CONFIG_RTE_ETHDEV_PROFILE_ITT_WASTED_RX_ITERATIONS=n
|
|
||||||
# Turn off Tx preparation stage
|
|
||||||
# Warning: rte_eth_tx_prepare() can be safely disabled only if using a
|
|
||||||
# driver which do not implement any Tx preparation.
|
|
||||||
CONFIG_RTE_ETHDEV_TX_PREPARE_NOOP=n
|
|
||||||
# Compile PCI bus driver
|
|
||||||
CONFIG_RTE_LIBRTE_PCI_BUS=y
|
|
||||||
# Compile architecture we compile for. vdev bus
|
|
||||||
CONFIG_RTE_LIBRTE_VDEV_BUS=y
|
|
||||||
# Compile burst-oriented Amazon ENA PMD driver
|
|
||||||
CONFIG_RTE_LIBRTE_ENA_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_ENA_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_ENA_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_ENA_DEBUG_TX_FREE=n
|
|
||||||
CONFIG_RTE_LIBRTE_ENA_DEBUG_DRIVER=n
|
|
||||||
CONFIG_RTE_LIBRTE_ENA_COM_DEBUG=n
|
|
||||||
# Compile burst-oriented IGB & EM PMD drivers
|
|
||||||
CONFIG_RTE_LIBRTE_EM_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_IGB_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_E1000_DEBUG_INIT=n
|
|
||||||
CONFIG_RTE_LIBRTE_E1000_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_E1000_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_E1000_DEBUG_TX_FREE=n
|
|
||||||
CONFIG_RTE_LIBRTE_E1000_DEBUG_DRIVER=n
|
|
||||||
CONFIG_RTE_LIBRTE_E1000_PF_DISABLE_STRIP_CRC=n
|
|
||||||
# Compile burst-oriented IXGBE PMD driver
|
|
||||||
CONFIG_RTE_LIBRTE_IXGBE_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_IXGBE_DEBUG_INIT=n
|
|
||||||
CONFIG_RTE_LIBRTE_IXGBE_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_IXGBE_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_IXGBE_DEBUG_TX_FREE=n
|
|
||||||
CONFIG_RTE_LIBRTE_IXGBE_DEBUG_DRIVER=n
|
|
||||||
CONFIG_RTE_LIBRTE_IXGBE_PF_DISABLE_STRIP_CRC=n
|
|
||||||
CONFIG_RTE_IXGBE_INC_VECTOR=y
|
|
||||||
CONFIG_RTE_LIBRTE_IXGBE_BYPASS=n
|
|
||||||
# Compile burst-oriented I40E PMD driver
|
|
||||||
CONFIG_RTE_LIBRTE_I40E_PMD=y
|
|
||||||
CONFIG_RTE_LIBRTE_I40E_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_I40E_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_I40E_DEBUG_TX_FREE=n
|
|
||||||
CONFIG_RTE_LIBRTE_I40E_RX_ALLOW_BULK_ALLOC=y
|
|
||||||
CONFIG_RTE_LIBRTE_I40E_INC_VECTOR=y
|
|
||||||
CONFIG_RTE_LIBRTE_I40E_16BYTE_RX_DESC=n
|
|
||||||
CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_PF=64
|
|
||||||
CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_VF=4
|
|
||||||
CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_VM=4
|
|
||||||
# interval up to 8160 us, aligned to 2 (or default value)
|
|
||||||
CONFIG_RTE_LIBRTE_I40E_ITR_INTERVAL=-1
|
|
||||||
# Compile burst-oriented FM10K PMD
|
|
||||||
CONFIG_RTE_LIBRTE_FM10K_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_FM10K_DEBUG_INIT=n
|
|
||||||
CONFIG_RTE_LIBRTE_FM10K_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_FM10K_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_FM10K_DEBUG_TX_FREE=n
|
|
||||||
CONFIG_RTE_LIBRTE_FM10K_DEBUG_DRIVER=n
|
|
||||||
CONFIG_RTE_LIBRTE_FM10K_RX_OLFLAGS_ENABLE=y
|
|
||||||
CONFIG_RTE_LIBRTE_FM10K_INC_VECTOR=y
|
|
||||||
# Compile burst-oriented Mellanox ConnectX-3 (MLX4) PMD
|
|
||||||
CONFIG_RTE_LIBRTE_MLX4_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_MLX4_DEBUG=n
|
|
||||||
CONFIG_RTE_LIBRTE_MLX4_DEBUG_BROKEN_VERBS=n
|
|
||||||
CONFIG_RTE_LIBRTE_MLX4_TX_MP_CACHE=8
|
|
||||||
# Compile burst-oriented Mellanox ConnectX-4 & ConnectX-5 (MLX5) PMD
|
|
||||||
CONFIG_RTE_LIBRTE_MLX5_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_MLX5_DEBUG=n
|
|
||||||
CONFIG_RTE_LIBRTE_MLX5_TX_MP_CACHE=8
|
|
||||||
# Compile burst-oriented Broadcom PMD driver
|
|
||||||
CONFIG_RTE_LIBRTE_BNX2X_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_BNX2X_DEBUG=n
|
|
||||||
CONFIG_RTE_LIBRTE_BNX2X_DEBUG_INIT=n
|
|
||||||
CONFIG_RTE_LIBRTE_BNX2X_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_BNX2X_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_BNX2X_MF_SUPPORT=n
|
|
||||||
CONFIG_RTE_LIBRTE_BNX2X_DEBUG_PERIODIC=n
|
|
||||||
# Compile burst-oriented Chelsio Terminator (CXGBE) PMD
|
|
||||||
CONFIG_RTE_LIBRTE_CXGBE_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_CXGBE_DEBUG=n
|
|
||||||
CONFIG_RTE_LIBRTE_CXGBE_DEBUG_REG=n
|
|
||||||
CONFIG_RTE_LIBRTE_CXGBE_DEBUG_MBOX=n
|
|
||||||
CONFIG_RTE_LIBRTE_CXGBE_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_CXGBE_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_CXGBE_TPUT=y
|
|
||||||
# Compile burst-oriented Cisco ENIC PMD driver
|
|
||||||
CONFIG_RTE_LIBRTE_ENIC_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_ENIC_DEBUG=n
|
|
||||||
CONFIG_RTE_LIBRTE_ENIC_DEBUG_FLOW=n
|
|
||||||
# Compile burst-oriented Netronome NFP PMD driver
|
|
||||||
CONFIG_RTE_LIBRTE_NFP_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_NFP_DEBUG=n
|
|
||||||
# Compile Marvell PMD driver
|
|
||||||
CONFIG_RTE_LIBRTE_MRVL_PMD=n
|
|
||||||
# Compile burst-oriented Broadcom BNXT PMD driver
|
|
||||||
CONFIG_RTE_LIBRTE_BNXT_PMD=n
|
|
||||||
# Compile burst-oriented Solarflare libefx-based PMD
|
|
||||||
CONFIG_RTE_LIBRTE_SFC_EFX_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_SFC_EFX_DEBUG=n
|
|
||||||
# Compile SOFTNIC PMD
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_SOFTNIC=y
|
|
||||||
# Compile software PMD backed by SZEDATA2 device
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_SZEDATA2=n
|
|
||||||
# Defines firmware type address space.
|
|
||||||
# See documentation for supported values.
|
|
||||||
# Other values raise compile time error.
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_SZEDATA2_AS=0
|
|
||||||
# Compile burst-oriented Cavium Thunderx NICVF PMD driver
|
|
||||||
CONFIG_RTE_LIBRTE_THUNDERX_NICVF_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_INIT=n
|
|
||||||
CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_DRIVER=n
|
|
||||||
CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_MBOX=n
|
|
||||||
# Compile burst-oriented Cavium LiquidIO PMD driver
|
|
||||||
CONFIG_RTE_LIBRTE_LIO_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_LIO_DEBUG_DRIVER=n
|
|
||||||
CONFIG_RTE_LIBRTE_LIO_DEBUG_INIT=n
|
|
||||||
CONFIG_RTE_LIBRTE_LIO_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_LIO_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_LIO_DEBUG_MBOX=n
|
|
||||||
CONFIG_RTE_LIBRTE_LIO_DEBUG_REGS=n
|
|
||||||
# NXP DPAA Bus
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA_BUS=n
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA_MEMPOOL=n
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA_PMD=n
|
|
||||||
# Compile burst-oriented Cavium OCTEONTX network PMD driver
|
|
||||||
CONFIG_RTE_LIBRTE_OCTEONTX_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_OCTEONTX_DEBUG_INIT=n
|
|
||||||
CONFIG_RTE_LIBRTE_OCTEONTX_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_OCTEONTX_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_OCTEONTX_DEBUG_DRIVER=n
|
|
||||||
CONFIG_RTE_LIBRTE_OCTEONTX_DEBUG_MBOX=n
|
|
||||||
# Compile NXP DPAA2 FSL-MC Bus
|
|
||||||
CONFIG_RTE_LIBRTE_FSLMC_BUS=n
|
|
||||||
# Compile Support Libraries for NXP DPAA2
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA2_MEMPOOL=n
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA2_USE_PHYS_IOVA=y
|
|
||||||
# Compile burst-oriented NXP DPAA2 PMD driver
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA2_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA2_DEBUG_INIT=n
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA2_DEBUG_DRIVER=n
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA2_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA2_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA2_DEBUG_TX_FREE=n
|
|
||||||
# Compile burst-oriented VIRTIO PMD driver
|
|
||||||
CONFIG_RTE_LIBRTE_VIRTIO_PMD=y
|
|
||||||
CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_INIT=n
|
|
||||||
CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_DRIVER=n
|
|
||||||
CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_DUMP=n
|
|
||||||
# Compile virtio device emulation inside virtio PMD driver
|
|
||||||
CONFIG_RTE_VIRTIO_USER=n
|
|
||||||
# Compile burst-oriented VMXNET3 PMD driver
|
|
||||||
CONFIG_RTE_LIBRTE_VMXNET3_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_INIT=n
|
|
||||||
CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_TX_FREE=n
|
|
||||||
CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_DRIVER=n
|
|
||||||
# Compile example software rings based PMD
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_RING=y
|
|
||||||
CONFIG_RTE_PMD_RING_MAX_RX_RINGS=16
|
|
||||||
CONFIG_RTE_PMD_RING_MAX_TX_RINGS=16
|
|
||||||
# Compile software PMD backed by PCAP files
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_PCAP=n
|
|
||||||
# Compile link bonding PMD library
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_BOND=n
|
|
||||||
CONFIG_RTE_LIBRTE_BOND_DEBUG_ALB=n
|
|
||||||
CONFIG_RTE_LIBRTE_BOND_DEBUG_ALB_L1=n
|
|
||||||
# QLogic 10G/25G/40G/50G/100G PMD
|
|
||||||
CONFIG_RTE_LIBRTE_QEDE_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_QEDE_DEBUG_INIT=n
|
|
||||||
CONFIG_RTE_LIBRTE_QEDE_DEBUG_INFO=n
|
|
||||||
CONFIG_RTE_LIBRTE_QEDE_DEBUG_DRIVER=n
|
|
||||||
CONFIG_RTE_LIBRTE_QEDE_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_QEDE_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_QEDE_VF_TX_SWITCH=y
|
|
||||||
#Provides abs path/name of architecture we compile for. firmware file.
|
|
||||||
#Empty string denotes driver will use default firmware
|
|
||||||
CONFIG_RTE_LIBRTE_QEDE_FW=""
|
|
||||||
# Compile software PMD backed by AF_PACKET sockets (Linux only)
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_AF_PACKET=n
|
|
||||||
# Compile ARK PMD
|
|
||||||
CONFIG_RTE_LIBRTE_ARK_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_ARK_PAD_TX=y
|
|
||||||
CONFIG_RTE_LIBRTE_ARK_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_ARK_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_ARK_DEBUG_STATS=n
|
|
||||||
CONFIG_RTE_LIBRTE_ARK_DEBUG_TRACE=n
|
|
||||||
# Compile WRS accelerated virtual port (AVP) guest PMD driver
|
|
||||||
CONFIG_RTE_LIBRTE_AVP_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_AVP_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_AVP_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_AVP_DEBUG_DRIVER=y
|
|
||||||
CONFIG_RTE_LIBRTE_AVP_DEBUG_BUFFERS=n
|
|
||||||
# Compile architecture we compile for. TAP PMD
|
|
||||||
# It is enabled by default for Linux only.
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_TAP=n
|
|
||||||
# Compile null PMD
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_NULL=n
|
|
||||||
# Compile fail-safe PMD
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_FAILSAFE=y
|
|
||||||
# Do prefetch of packet data within PMD driver receive function
|
|
||||||
CONFIG_RTE_PMD_PACKET_PREFETCH=y
|
|
||||||
# Compile generic crypto device library
|
|
||||||
CONFIG_RTE_LIBRTE_CRYPTODEV=n
|
|
||||||
CONFIG_RTE_LIBRTE_CRYPTODEV_DEBUG=n
|
|
||||||
CONFIG_RTE_CRYPTO_MAX_DEVS=64
|
|
||||||
CONFIG_RTE_CRYPTODEV_NAME_LEN=64
|
|
||||||
# Compile PMD for ARMv8 Crypto device
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO_DEBUG=n
|
|
||||||
# Compile NXP DPAA2 crypto sec driver for CAAM HW
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_DPAA2_SEC=n
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA2_SEC_DEBUG_INIT=n
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA2_SEC_DEBUG_DRIVER=n
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA2_SEC_DEBUG_RX=n
|
|
||||||
# NXP DPAA caam - crypto driver
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_DPAA_SEC=n
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA_SEC_DEBUG_INIT=n
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA_SEC_DEBUG_DRIVER=n
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA_SEC_DEBUG_RX=n
|
|
||||||
# Compile PMD for QuickAssist based devices
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_QAT=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_INIT=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_DRIVER=n
|
|
||||||
# Number of sessions to create in architecture we compile for. session memory pool
|
|
||||||
# on a single QuickAssist device.
|
|
||||||
CONFIG_RTE_QAT_PMD_MAX_NB_SESSIONS=2048
|
|
||||||
# Compile PMD for AESNI backed device
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_AESNI_MB=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_AESNI_MB_DEBUG=n
|
|
||||||
# Compile PMD for Software backed device
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_OPENSSL=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_OPENSSL_DEBUG=n
|
|
||||||
# Compile PMD for AESNI GCM device
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_AESNI_GCM=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_AESNI_GCM_DEBUG=n
|
|
||||||
# Compile PMD for SNOW 3G device
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_SNOW3G=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_SNOW3G_DEBUG=n
|
|
||||||
# Compile PMD for KASUMI device
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_KASUMI=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_KASUMI_DEBUG=n
|
|
||||||
# Compile PMD for ZUC device
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_ZUC=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_ZUC_DEBUG=n
|
|
||||||
# Compile PMD for Crypto Scheduler device
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_CRYPTO_SCHEDULER=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_CRYPTO_SCHEDULER_DEBUG=n
|
|
||||||
# Compile PMD for NULL Crypto device
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_NULL_CRYPTO=n
|
|
||||||
# Compile PMD for Marvell Crypto device
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_MRVL_CRYPTO=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_MRVL_CRYPTO_DEBUG=n
|
|
||||||
# Compile generic security library
|
|
||||||
CONFIG_RTE_LIBRTE_SECURITY=n
|
|
||||||
# Compile generic event device library
|
|
||||||
CONFIG_RTE_LIBRTE_EVENTDEV=y
|
|
||||||
CONFIG_RTE_LIBRTE_EVENTDEV_DEBUG=n
|
|
||||||
CONFIG_RTE_EVENT_MAX_DEVS=16
|
|
||||||
CONFIG_RTE_EVENT_MAX_QUEUES_PER_DEV=64
|
|
||||||
# Compile PMD for skeleton event device
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_SKELETON_EVENTDEV=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_SKELETON_EVENTDEV_DEBUG=n
|
|
||||||
# Compile PMD for software event device
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_SW_EVENTDEV=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_SW_EVENTDEV_DEBUG=n
|
|
||||||
# Compile PMD for octeontx sso event device
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF_DEBUG=n
|
|
||||||
# Compile librte_ring
|
|
||||||
CONFIG_RTE_LIBRTE_RING=y
|
|
||||||
# Compile librte_mempool
|
|
||||||
CONFIG_RTE_LIBRTE_MEMPOOL=y
|
|
||||||
CONFIG_RTE_MEMPOOL_CACHE_MAX_SIZE=512
|
|
||||||
CONFIG_RTE_LIBRTE_MEMPOOL_DEBUG=n
|
|
||||||
# Compile Mempool drivers
|
|
||||||
CONFIG_RTE_DRIVER_MEMPOOL_RING=y
|
|
||||||
CONFIG_RTE_DRIVER_MEMPOOL_STACK=y
|
|
||||||
# Compile PMD for octeontx fpa mempool device
|
|
||||||
CONFIG_RTE_LIBRTE_OCTEONTX_MEMPOOL=y
|
|
||||||
CONFIG_RTE_LIBRTE_OCTEONTX_MEMPOOL_DEBUG=n
|
|
||||||
# Compile librte_mbuf
|
|
||||||
CONFIG_RTE_LIBRTE_MBUF=y
|
|
||||||
CONFIG_RTE_LIBRTE_MBUF_DEBUG=n
|
|
||||||
CONFIG_RTE_MBUF_DEFAULT_MEMPOOL_OPS="ring_mp_mc"
|
|
||||||
CONFIG_RTE_MBUF_REFCNT_ATOMIC=y
|
|
||||||
CONFIG_RTE_PKTMBUF_HEADROOM=128
|
|
||||||
# Compile librte_timer
|
|
||||||
CONFIG_RTE_LIBRTE_TIMER=n
|
|
||||||
CONFIG_RTE_LIBRTE_TIMER_DEBUG=n
|
|
||||||
# Compile librte_cfgfile
|
|
||||||
CONFIG_RTE_LIBRTE_CFGFILE=n
|
|
||||||
# Compile librte_cmdline
|
|
||||||
CONFIG_RTE_LIBRTE_CMDLINE=y
|
|
||||||
CONFIG_RTE_LIBRTE_CMDLINE_DEBUG=n
|
|
||||||
# Compile librte_hash
|
|
||||||
CONFIG_RTE_LIBRTE_HASH=y
|
|
||||||
CONFIG_RTE_LIBRTE_HASH_DEBUG=n
|
|
||||||
# Compile librte_efd
|
|
||||||
CONFIG_RTE_LIBRTE_EFD=y
|
|
||||||
# Compile librte_member
|
|
||||||
CONFIG_RTE_LIBRTE_MEMBER=y
|
|
||||||
# Compile librte_jobstats
|
|
||||||
CONFIG_RTE_LIBRTE_JOBSTATS=n
|
|
||||||
# Compile architecture we compile for. device metrics library
|
|
||||||
CONFIG_RTE_LIBRTE_METRICS=y
|
|
||||||
# Compile architecture we compile for. bitrate statistics library
|
|
||||||
CONFIG_RTE_LIBRTE_BITRATE=y
|
|
||||||
# Compile architecture we compile for. latency statistics library
|
|
||||||
CONFIG_RTE_LIBRTE_LATENCY_STATS=y
|
|
||||||
# Compile librte_lpm
|
|
||||||
CONFIG_RTE_LIBRTE_LPM=n
|
|
||||||
CONFIG_RTE_LIBRTE_LPM_DEBUG=n
|
|
||||||
# Compile librte_acl
|
|
||||||
CONFIG_RTE_LIBRTE_ACL=n
|
|
||||||
CONFIG_RTE_LIBRTE_ACL_DEBUG=n
|
|
||||||
# Compile librte_power
|
|
||||||
CONFIG_RTE_LIBRTE_POWER=n
|
|
||||||
CONFIG_RTE_LIBRTE_POWER_DEBUG=n
|
|
||||||
CONFIG_RTE_MAX_LCORE_FREQS=64
|
|
||||||
# Compile librte_net
|
|
||||||
CONFIG_RTE_LIBRTE_NET=y
|
|
||||||
# Compile librte_ip_frag
|
|
||||||
CONFIG_RTE_LIBRTE_IP_FRAG=y
|
|
||||||
CONFIG_RTE_LIBRTE_IP_FRAG_DEBUG=n
|
|
||||||
CONFIG_RTE_LIBRTE_IP_FRAG_MAX_FRAG=4
|
|
||||||
CONFIG_RTE_LIBRTE_IP_FRAG_TBL_STAT=n
|
|
||||||
# Compile GRO library
|
|
||||||
CONFIG_RTE_LIBRTE_GRO=y
|
|
||||||
# Compile GSO library
|
|
||||||
CONFIG_RTE_LIBRTE_GSO=y
|
|
||||||
# Compile librte_meter
|
|
||||||
CONFIG_RTE_LIBRTE_METER=y
|
|
||||||
# Compile librte_classify
|
|
||||||
CONFIG_RTE_LIBRTE_FLOW_CLASSIFY=n
|
|
||||||
# Compile librte_sched
|
|
||||||
CONFIG_RTE_LIBRTE_SCHED=y
|
|
||||||
CONFIG_RTE_SCHED_DEBUG=n
|
|
||||||
CONFIG_RTE_SCHED_RED=n
|
|
||||||
CONFIG_RTE_SCHED_COLLECT_STATS=n
|
|
||||||
CONFIG_RTE_SCHED_SUBPORT_TC_OV=n
|
|
||||||
CONFIG_RTE_SCHED_PORT_N_GRINDERS=8
|
|
||||||
CONFIG_RTE_SCHED_VECTOR=n
|
|
||||||
# Compile architecture we compile for. distributor library
|
|
||||||
CONFIG_RTE_LIBRTE_DISTRIBUTOR=n
|
|
||||||
# Compile architecture we compile for. reorder library
|
|
||||||
CONFIG_RTE_LIBRTE_REORDER=n
|
|
||||||
# Compile librte_port
|
|
||||||
CONFIG_RTE_LIBRTE_PORT=n
|
|
||||||
CONFIG_RTE_PORT_STATS_COLLECT=n
|
|
||||||
CONFIG_RTE_PORT_PCAP=n
|
|
||||||
# Compile librte_table
|
|
||||||
CONFIG_RTE_LIBRTE_TABLE=n
|
|
||||||
CONFIG_RTE_TABLE_STATS_COLLECT=n
|
|
||||||
# Compile librte_pipeline
|
|
||||||
CONFIG_RTE_LIBRTE_PIPELINE=n
|
|
||||||
CONFIG_RTE_PIPELINE_STATS_COLLECT=n
|
|
||||||
# Compile librte_kni
|
|
||||||
CONFIG_RTE_LIBRTE_KNI=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_KNI=n
|
|
||||||
CONFIG_RTE_KNI_KMOD=n
|
|
||||||
CONFIG_RTE_KNI_KMOD_ETHTOOL=n
|
|
||||||
CONFIG_RTE_KNI_PREEMPT_DEFAULT=y
|
|
||||||
# Compile architecture we compile for. pdump library
|
|
||||||
CONFIG_RTE_LIBRTE_PDUMP=y
|
|
||||||
# Compile vhost user library
|
|
||||||
CONFIG_RTE_LIBRTE_VHOST=y
|
|
||||||
CONFIG_RTE_LIBRTE_VHOST_NUMA=y
|
|
||||||
CONFIG_RTE_LIBRTE_VHOST_DEBUG=n
|
|
||||||
# Compile vhost PMD
|
|
||||||
# To compile, CONFIG_RTE_LIBRTE_VHOST should be enabled.
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_VHOST=n
|
|
||||||
# Compile architecture we compile for. test application
|
|
||||||
CONFIG_RTE_APP_TEST=y
|
|
||||||
CONFIG_RTE_APP_TEST_RESOURCE_TAR=n
|
|
||||||
# Compile architecture we compile for. PMD test application
|
|
||||||
CONFIG_RTE_TEST_PMD=n
|
|
||||||
CONFIG_RTE_TEST_PMD_RECORD_CORE_CYCLES=n
|
|
||||||
CONFIG_RTE_TEST_PMD_RECORD_BURST_STATS=n
|
|
||||||
# Compile architecture we compile for. crypto performance application
|
|
||||||
CONFIG_RTE_APP_CRYPTO_PERF=y
|
|
||||||
# Compile architecture we compile for. eventdev application
|
|
||||||
CONFIG_RTE_APP_EVENTDEV=y
|
|
||||||
CONFIG_RTE_EXEC_ENV_LINUXAPP=y
|
|
||||||
CONFIG_RTE_ARCH_PPC_64=y
|
|
||||||
CONFIG_RTE_ARCH_64=y
|
|
||||||
CONFIG_RTE_TOOLCHAIN_GCC=y
|
|
||||||
# Note: Power doesn't have this support
|
|
||||||
# Note: Initially, all of architecture we compile for. PMD drivers compilation are turned off on Power
|
|
||||||
# Will turn on them only after architecture we compile for. successful testing on Power
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_XENVIRT=n
|
|
@ -1,533 +0,0 @@
|
|||||||
# -*- cfg-sha: 56176386deef83f9f1fd9d1c143a20be1294c8ed5e720aaef37e4b007ccbbde3
|
|
||||||
# BSD LICENSE
|
|
||||||
# Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
|
|
||||||
# All rights reserved.
|
|
||||||
# Redistribution and use in source and binary forms, with or without
|
|
||||||
# modification, are permitted provided that the following conditions
|
|
||||||
# are met:
|
|
||||||
# * Redistributions of source code must retain the above copyright
|
|
||||||
# notice, this list of conditions and the following disclaimer.
|
|
||||||
# * Redistributions in binary form must reproduce the above copyright
|
|
||||||
# notice, this list of conditions and the following disclaimer in
|
|
||||||
# the documentation and/or other materials provided with the
|
|
||||||
# distribution.
|
|
||||||
# * Neither the name of Intel Corporation nor the names of its
|
|
||||||
# contributors may be used to endorse or promote products derived
|
|
||||||
# from this software without specific prior written permission.
|
|
||||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
# BSD LICENSE
|
|
||||||
# Copyright(c) 2010-2016 Intel Corporation. All rights reserved.
|
|
||||||
# All rights reserved.
|
|
||||||
# Redistribution and use in source and binary forms, with or without
|
|
||||||
# modification, are permitted provided that the following conditions
|
|
||||||
# are met:
|
|
||||||
# * Redistributions of source code must retain the above copyright
|
|
||||||
# notice, this list of conditions and the following disclaimer.
|
|
||||||
# * Redistributions in binary form must reproduce the above copyright
|
|
||||||
# notice, this list of conditions and the following disclaimer in
|
|
||||||
# the documentation and/or other materials provided with the
|
|
||||||
# distribution.
|
|
||||||
# * Neither the name of Intel Corporation nor the names of its
|
|
||||||
# contributors may be used to endorse or promote products derived
|
|
||||||
# from this software without specific prior written permission.
|
|
||||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
# BSD LICENSE
|
|
||||||
# Copyright(c) 2010-2017 Intel Corporation. All rights reserved.
|
|
||||||
# All rights reserved.
|
|
||||||
# Redistribution and use in source and binary forms, with or without
|
|
||||||
# modification, are permitted provided that the following conditions
|
|
||||||
# are met:
|
|
||||||
# * Redistributions of source code must retain the above copyright
|
|
||||||
# notice, this list of conditions and the following disclaimer.
|
|
||||||
# * Redistributions in binary form must reproduce the above copyright
|
|
||||||
# notice, this list of conditions and the following disclaimer in
|
|
||||||
# the documentation and/or other materials provided with the
|
|
||||||
# distribution.
|
|
||||||
# * Neither the name of Intel Corporation nor the names of its
|
|
||||||
# contributors may be used to endorse or promote products derived
|
|
||||||
# from this software without specific prior written permission.
|
|
||||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
# RTE_EXEC_ENV values are the directories in mk/exec-env/
|
|
||||||
CONFIG_RTE_EXEC_ENV="linuxapp"
|
|
||||||
# RTE_ARCH values are architecture we compile for. directories in mk/arch/
|
|
||||||
CONFIG_RTE_ARCH="x86_64"
|
|
||||||
# machine can define specific variables or action for a specific board
|
|
||||||
# RTE_MACHINE values are architecture we compile for. directories in mk/machine/
|
|
||||||
CONFIG_RTE_MACHINE="default"
|
|
||||||
# The compiler we use.
|
|
||||||
# RTE_TOOLCHAIN values are architecture we compile for. directories in mk/toolchain/
|
|
||||||
CONFIG_RTE_TOOLCHAIN="gcc"
|
|
||||||
# Use intrinsics or assembly code for key routines
|
|
||||||
CONFIG_RTE_FORCE_INTRINSICS=n
|
|
||||||
# Machine forces strict alignment constraints.
|
|
||||||
CONFIG_RTE_ARCH_STRICT_ALIGN=n
|
|
||||||
# Compile to share library
|
|
||||||
CONFIG_RTE_BUILD_SHARED_LIB=n
|
|
||||||
# Use newest code breaking previous ABI
|
|
||||||
CONFIG_RTE_NEXT_ABI=n
|
|
||||||
# Major ABI to overwrite library specific LIBABIVER
|
|
||||||
CONFIG_RTE_MAJOR_ABI=
|
|
||||||
# Machine's cache line size
|
|
||||||
CONFIG_RTE_CACHE_LINE_SIZE=64
|
|
||||||
# Compile Environment Abstraction Layer
|
|
||||||
CONFIG_RTE_LIBRTE_EAL=y
|
|
||||||
CONFIG_RTE_MAX_LCORE=128
|
|
||||||
CONFIG_RTE_MAX_NUMA_NODES=8
|
|
||||||
CONFIG_RTE_MAX_MEMSEG=256
|
|
||||||
CONFIG_RTE_MAX_MEMZONE=2560
|
|
||||||
CONFIG_RTE_MAX_TAILQ=32
|
|
||||||
CONFIG_RTE_ENABLE_ASSERT=n
|
|
||||||
CONFIG_RTE_LOG_LEVEL=RTE_LOG_INFO
|
|
||||||
CONFIG_RTE_LOG_DP_LEVEL=RTE_LOG_INFO
|
|
||||||
CONFIG_RTE_LOG_HISTORY=256
|
|
||||||
CONFIG_RTE_BACKTRACE=y
|
|
||||||
CONFIG_RTE_LIBEAL_USE_HPET=n
|
|
||||||
CONFIG_RTE_EAL_ALLOW_INV_SOCKET_ID=n
|
|
||||||
CONFIG_RTE_EAL_ALWAYS_PANIC_ON_ERROR=n
|
|
||||||
CONFIG_RTE_EAL_IGB_UIO=n
|
|
||||||
CONFIG_RTE_EAL_VFIO=y
|
|
||||||
CONFIG_RTE_MALLOC_DEBUG=n
|
|
||||||
CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES=y
|
|
||||||
# Recognize/ignore architecture we compile for. AVX/AVX512 CPU flags for performance/power testing.
|
|
||||||
# AVX512 is marked as experimental for now, will enable it after enough
|
|
||||||
# field test and possible optimization.
|
|
||||||
CONFIG_RTE_ENABLE_AVX=y
|
|
||||||
CONFIG_RTE_ENABLE_AVX512=n
|
|
||||||
# Default driver path (or "" to disable)
|
|
||||||
CONFIG_RTE_EAL_PMD_PATH=""
|
|
||||||
# Compile Environment Abstraction Layer to support Vmware TSC map
|
|
||||||
CONFIG_RTE_LIBRTE_EAL_VMWARE_TSC_MAP_SUPPORT=y
|
|
||||||
# Compile architecture we compile for. PCI library
|
|
||||||
CONFIG_RTE_LIBRTE_PCI=y
|
|
||||||
# Compile architecture we compile for. argument parser library
|
|
||||||
CONFIG_RTE_LIBRTE_KVARGS=y
|
|
||||||
# Compile generic ethernet library
|
|
||||||
CONFIG_RTE_LIBRTE_ETHER=y
|
|
||||||
CONFIG_RTE_LIBRTE_ETHDEV_DEBUG=n
|
|
||||||
CONFIG_RTE_MAX_ETHPORTS=32
|
|
||||||
CONFIG_RTE_MAX_QUEUES_PER_PORT=1024
|
|
||||||
CONFIG_RTE_LIBRTE_IEEE1588=n
|
|
||||||
CONFIG_RTE_ETHDEV_QUEUE_STAT_CNTRS=16
|
|
||||||
CONFIG_RTE_ETHDEV_RXTX_CALLBACKS=y
|
|
||||||
CONFIG_RTE_ETHDEV_PROFILE_ITT_WASTED_RX_ITERATIONS=n
|
|
||||||
# Turn off Tx preparation stage
|
|
||||||
# Warning: rte_eth_tx_prepare() can be safely disabled only if using a
|
|
||||||
# driver which do not implement any Tx preparation.
|
|
||||||
CONFIG_RTE_ETHDEV_TX_PREPARE_NOOP=n
|
|
||||||
# Compile PCI bus driver
|
|
||||||
CONFIG_RTE_LIBRTE_PCI_BUS=y
|
|
||||||
# Compile architecture we compile for. vdev bus
|
|
||||||
CONFIG_RTE_LIBRTE_VDEV_BUS=y
|
|
||||||
# Compile burst-oriented Amazon ENA PMD driver
|
|
||||||
CONFIG_RTE_LIBRTE_ENA_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_ENA_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_ENA_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_ENA_DEBUG_TX_FREE=n
|
|
||||||
CONFIG_RTE_LIBRTE_ENA_DEBUG_DRIVER=n
|
|
||||||
CONFIG_RTE_LIBRTE_ENA_COM_DEBUG=n
|
|
||||||
# Compile burst-oriented IGB & EM PMD drivers
|
|
||||||
CONFIG_RTE_LIBRTE_EM_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_IGB_PMD=y
|
|
||||||
CONFIG_RTE_LIBRTE_E1000_DEBUG_INIT=n
|
|
||||||
CONFIG_RTE_LIBRTE_E1000_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_E1000_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_E1000_DEBUG_TX_FREE=n
|
|
||||||
CONFIG_RTE_LIBRTE_E1000_DEBUG_DRIVER=n
|
|
||||||
CONFIG_RTE_LIBRTE_E1000_PF_DISABLE_STRIP_CRC=n
|
|
||||||
# Compile burst-oriented IXGBE PMD driver
|
|
||||||
CONFIG_RTE_LIBRTE_IXGBE_PMD=y
|
|
||||||
CONFIG_RTE_LIBRTE_IXGBE_DEBUG_INIT=n
|
|
||||||
CONFIG_RTE_LIBRTE_IXGBE_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_IXGBE_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_IXGBE_DEBUG_TX_FREE=n
|
|
||||||
CONFIG_RTE_LIBRTE_IXGBE_DEBUG_DRIVER=n
|
|
||||||
CONFIG_RTE_LIBRTE_IXGBE_PF_DISABLE_STRIP_CRC=n
|
|
||||||
CONFIG_RTE_IXGBE_INC_VECTOR=y
|
|
||||||
CONFIG_RTE_LIBRTE_IXGBE_BYPASS=n
|
|
||||||
# Compile burst-oriented I40E PMD driver
|
|
||||||
CONFIG_RTE_LIBRTE_I40E_PMD=y
|
|
||||||
CONFIG_RTE_LIBRTE_I40E_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_I40E_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_I40E_DEBUG_TX_FREE=n
|
|
||||||
CONFIG_RTE_LIBRTE_I40E_RX_ALLOW_BULK_ALLOC=y
|
|
||||||
CONFIG_RTE_LIBRTE_I40E_INC_VECTOR=y
|
|
||||||
CONFIG_RTE_LIBRTE_I40E_16BYTE_RX_DESC=n
|
|
||||||
CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_PF=64
|
|
||||||
CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_VF=4
|
|
||||||
CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_VM=4
|
|
||||||
# interval up to 8160 us, aligned to 2 (or default value)
|
|
||||||
CONFIG_RTE_LIBRTE_I40E_ITR_INTERVAL=-1
|
|
||||||
# Compile burst-oriented FM10K PMD
|
|
||||||
CONFIG_RTE_LIBRTE_FM10K_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_FM10K_DEBUG_INIT=n
|
|
||||||
CONFIG_RTE_LIBRTE_FM10K_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_FM10K_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_FM10K_DEBUG_TX_FREE=n
|
|
||||||
CONFIG_RTE_LIBRTE_FM10K_DEBUG_DRIVER=n
|
|
||||||
CONFIG_RTE_LIBRTE_FM10K_RX_OLFLAGS_ENABLE=y
|
|
||||||
CONFIG_RTE_LIBRTE_FM10K_INC_VECTOR=y
|
|
||||||
# Compile burst-oriented Mellanox ConnectX-3 (MLX4) PMD
|
|
||||||
CONFIG_RTE_LIBRTE_MLX4_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_MLX4_DEBUG=n
|
|
||||||
CONFIG_RTE_LIBRTE_MLX4_DEBUG_BROKEN_VERBS=n
|
|
||||||
CONFIG_RTE_LIBRTE_MLX4_TX_MP_CACHE=8
|
|
||||||
# Compile burst-oriented Mellanox ConnectX-4 & ConnectX-5 (MLX5) PMD
|
|
||||||
CONFIG_RTE_LIBRTE_MLX5_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_MLX5_DEBUG=n
|
|
||||||
CONFIG_RTE_LIBRTE_MLX5_TX_MP_CACHE=8
|
|
||||||
# Compile burst-oriented Broadcom PMD driver
|
|
||||||
CONFIG_RTE_LIBRTE_BNX2X_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_BNX2X_DEBUG=n
|
|
||||||
CONFIG_RTE_LIBRTE_BNX2X_DEBUG_INIT=n
|
|
||||||
CONFIG_RTE_LIBRTE_BNX2X_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_BNX2X_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_BNX2X_MF_SUPPORT=n
|
|
||||||
CONFIG_RTE_LIBRTE_BNX2X_DEBUG_PERIODIC=n
|
|
||||||
# Compile burst-oriented Chelsio Terminator (CXGBE) PMD
|
|
||||||
CONFIG_RTE_LIBRTE_CXGBE_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_CXGBE_DEBUG=n
|
|
||||||
CONFIG_RTE_LIBRTE_CXGBE_DEBUG_REG=n
|
|
||||||
CONFIG_RTE_LIBRTE_CXGBE_DEBUG_MBOX=n
|
|
||||||
CONFIG_RTE_LIBRTE_CXGBE_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_CXGBE_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_CXGBE_TPUT=y
|
|
||||||
# Compile burst-oriented Cisco ENIC PMD driver
|
|
||||||
CONFIG_RTE_LIBRTE_ENIC_PMD=y
|
|
||||||
CONFIG_RTE_LIBRTE_ENIC_DEBUG=n
|
|
||||||
CONFIG_RTE_LIBRTE_ENIC_DEBUG_FLOW=n
|
|
||||||
# Compile burst-oriented Netronome NFP PMD driver
|
|
||||||
CONFIG_RTE_LIBRTE_NFP_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_NFP_DEBUG=n
|
|
||||||
# Compile Marvell PMD driver
|
|
||||||
CONFIG_RTE_LIBRTE_MRVL_PMD=n
|
|
||||||
# Compile burst-oriented Broadcom BNXT PMD driver
|
|
||||||
CONFIG_RTE_LIBRTE_BNXT_PMD=n
|
|
||||||
# Compile burst-oriented Solarflare libefx-based PMD
|
|
||||||
CONFIG_RTE_LIBRTE_SFC_EFX_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_SFC_EFX_DEBUG=n
|
|
||||||
# Compile SOFTNIC PMD
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_SOFTNIC=y
|
|
||||||
# Compile software PMD backed by SZEDATA2 device
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_SZEDATA2=n
|
|
||||||
# Defines firmware type address space.
|
|
||||||
# See documentation for supported values.
|
|
||||||
# Other values raise compile time error.
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_SZEDATA2_AS=0
|
|
||||||
# Compile burst-oriented Cavium Thunderx NICVF PMD driver
|
|
||||||
CONFIG_RTE_LIBRTE_THUNDERX_NICVF_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_INIT=n
|
|
||||||
CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_DRIVER=n
|
|
||||||
CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_MBOX=n
|
|
||||||
# Compile burst-oriented Cavium LiquidIO PMD driver
|
|
||||||
CONFIG_RTE_LIBRTE_LIO_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_LIO_DEBUG_DRIVER=n
|
|
||||||
CONFIG_RTE_LIBRTE_LIO_DEBUG_INIT=n
|
|
||||||
CONFIG_RTE_LIBRTE_LIO_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_LIO_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_LIO_DEBUG_MBOX=n
|
|
||||||
CONFIG_RTE_LIBRTE_LIO_DEBUG_REGS=n
|
|
||||||
# NXP DPAA Bus
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA_BUS=n
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA_MEMPOOL=n
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA_PMD=n
|
|
||||||
# Compile burst-oriented Cavium OCTEONTX network PMD driver
|
|
||||||
CONFIG_RTE_LIBRTE_OCTEONTX_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_OCTEONTX_DEBUG_INIT=n
|
|
||||||
CONFIG_RTE_LIBRTE_OCTEONTX_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_OCTEONTX_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_OCTEONTX_DEBUG_DRIVER=n
|
|
||||||
CONFIG_RTE_LIBRTE_OCTEONTX_DEBUG_MBOX=n
|
|
||||||
# Compile NXP DPAA2 FSL-MC Bus
|
|
||||||
CONFIG_RTE_LIBRTE_FSLMC_BUS=n
|
|
||||||
# Compile Support Libraries for NXP DPAA2
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA2_MEMPOOL=n
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA2_USE_PHYS_IOVA=y
|
|
||||||
# Compile burst-oriented NXP DPAA2 PMD driver
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA2_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA2_DEBUG_INIT=n
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA2_DEBUG_DRIVER=n
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA2_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA2_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA2_DEBUG_TX_FREE=n
|
|
||||||
# Compile burst-oriented VIRTIO PMD driver
|
|
||||||
CONFIG_RTE_LIBRTE_VIRTIO_PMD=y
|
|
||||||
CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_INIT=n
|
|
||||||
CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_DRIVER=n
|
|
||||||
CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_DUMP=n
|
|
||||||
# Compile virtio device emulation inside virtio PMD driver
|
|
||||||
CONFIG_RTE_VIRTIO_USER=n
|
|
||||||
# Compile burst-oriented VMXNET3 PMD driver
|
|
||||||
CONFIG_RTE_LIBRTE_VMXNET3_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_INIT=n
|
|
||||||
CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_TX_FREE=n
|
|
||||||
CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_DRIVER=n
|
|
||||||
# Compile example software rings based PMD
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_RING=y
|
|
||||||
CONFIG_RTE_PMD_RING_MAX_RX_RINGS=16
|
|
||||||
CONFIG_RTE_PMD_RING_MAX_TX_RINGS=16
|
|
||||||
# Compile software PMD backed by PCAP files
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_PCAP=n
|
|
||||||
# Compile link bonding PMD library
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_BOND=n
|
|
||||||
CONFIG_RTE_LIBRTE_BOND_DEBUG_ALB=n
|
|
||||||
CONFIG_RTE_LIBRTE_BOND_DEBUG_ALB_L1=n
|
|
||||||
# QLogic 10G/25G/40G/50G/100G PMD
|
|
||||||
CONFIG_RTE_LIBRTE_QEDE_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_QEDE_DEBUG_INIT=n
|
|
||||||
CONFIG_RTE_LIBRTE_QEDE_DEBUG_INFO=n
|
|
||||||
CONFIG_RTE_LIBRTE_QEDE_DEBUG_DRIVER=n
|
|
||||||
CONFIG_RTE_LIBRTE_QEDE_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_QEDE_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_QEDE_VF_TX_SWITCH=y
|
|
||||||
#Provides abs path/name of architecture we compile for. firmware file.
|
|
||||||
#Empty string denotes driver will use default firmware
|
|
||||||
CONFIG_RTE_LIBRTE_QEDE_FW=""
|
|
||||||
# Compile software PMD backed by AF_PACKET sockets (Linux only)
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_AF_PACKET=n
|
|
||||||
# Compile ARK PMD
|
|
||||||
CONFIG_RTE_LIBRTE_ARK_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_ARK_PAD_TX=y
|
|
||||||
CONFIG_RTE_LIBRTE_ARK_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_ARK_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_ARK_DEBUG_STATS=n
|
|
||||||
CONFIG_RTE_LIBRTE_ARK_DEBUG_TRACE=n
|
|
||||||
# Compile WRS accelerated virtual port (AVP) guest PMD driver
|
|
||||||
CONFIG_RTE_LIBRTE_AVP_PMD=n
|
|
||||||
CONFIG_RTE_LIBRTE_AVP_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_AVP_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_AVP_DEBUG_DRIVER=y
|
|
||||||
CONFIG_RTE_LIBRTE_AVP_DEBUG_BUFFERS=n
|
|
||||||
# Compile architecture we compile for. TAP PMD
|
|
||||||
# It is enabled by default for Linux only.
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_TAP=n
|
|
||||||
# Compile null PMD
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_NULL=n
|
|
||||||
# Compile fail-safe PMD
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_FAILSAFE=y
|
|
||||||
# Do prefetch of packet data within PMD driver receive function
|
|
||||||
CONFIG_RTE_PMD_PACKET_PREFETCH=y
|
|
||||||
# Compile generic crypto device library
|
|
||||||
CONFIG_RTE_LIBRTE_CRYPTODEV=n
|
|
||||||
CONFIG_RTE_LIBRTE_CRYPTODEV_DEBUG=n
|
|
||||||
CONFIG_RTE_CRYPTO_MAX_DEVS=64
|
|
||||||
CONFIG_RTE_CRYPTODEV_NAME_LEN=64
|
|
||||||
# Compile PMD for ARMv8 Crypto device
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO_DEBUG=n
|
|
||||||
# Compile NXP DPAA2 crypto sec driver for CAAM HW
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_DPAA2_SEC=n
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA2_SEC_DEBUG_INIT=n
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA2_SEC_DEBUG_DRIVER=n
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA2_SEC_DEBUG_RX=n
|
|
||||||
# NXP DPAA caam - crypto driver
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_DPAA_SEC=n
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA_SEC_DEBUG_INIT=n
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA_SEC_DEBUG_DRIVER=n
|
|
||||||
CONFIG_RTE_LIBRTE_DPAA_SEC_DEBUG_RX=n
|
|
||||||
# Compile PMD for QuickAssist based devices
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_QAT=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_INIT=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_TX=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_RX=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_DRIVER=n
|
|
||||||
# Number of sessions to create in architecture we compile for. session memory pool
|
|
||||||
# on a single QuickAssist device.
|
|
||||||
CONFIG_RTE_QAT_PMD_MAX_NB_SESSIONS=2048
|
|
||||||
# Compile PMD for AESNI backed device
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_AESNI_MB=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_AESNI_MB_DEBUG=n
|
|
||||||
# Compile PMD for Software backed device
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_OPENSSL=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_OPENSSL_DEBUG=n
|
|
||||||
# Compile PMD for AESNI GCM device
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_AESNI_GCM=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_AESNI_GCM_DEBUG=n
|
|
||||||
# Compile PMD for SNOW 3G device
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_SNOW3G=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_SNOW3G_DEBUG=n
|
|
||||||
# Compile PMD for KASUMI device
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_KASUMI=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_KASUMI_DEBUG=n
|
|
||||||
# Compile PMD for ZUC device
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_ZUC=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_ZUC_DEBUG=n
|
|
||||||
# Compile PMD for Crypto Scheduler device
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_CRYPTO_SCHEDULER=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_CRYPTO_SCHEDULER_DEBUG=n
|
|
||||||
# Compile PMD for NULL Crypto device
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_NULL_CRYPTO=n
|
|
||||||
# Compile PMD for Marvell Crypto device
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_MRVL_CRYPTO=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_MRVL_CRYPTO_DEBUG=n
|
|
||||||
# Compile generic security library
|
|
||||||
CONFIG_RTE_LIBRTE_SECURITY=n
|
|
||||||
# Compile generic event device library
|
|
||||||
CONFIG_RTE_LIBRTE_EVENTDEV=y
|
|
||||||
CONFIG_RTE_LIBRTE_EVENTDEV_DEBUG=n
|
|
||||||
CONFIG_RTE_EVENT_MAX_DEVS=16
|
|
||||||
CONFIG_RTE_EVENT_MAX_QUEUES_PER_DEV=64
|
|
||||||
# Compile PMD for skeleton event device
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_SKELETON_EVENTDEV=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_SKELETON_EVENTDEV_DEBUG=n
|
|
||||||
# Compile PMD for software event device
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_SW_EVENTDEV=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_SW_EVENTDEV_DEBUG=n
|
|
||||||
# Compile PMD for octeontx sso event device
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF_DEBUG=n
|
|
||||||
# Compile librte_ring
|
|
||||||
CONFIG_RTE_LIBRTE_RING=y
|
|
||||||
# Compile librte_mempool
|
|
||||||
CONFIG_RTE_LIBRTE_MEMPOOL=y
|
|
||||||
CONFIG_RTE_MEMPOOL_CACHE_MAX_SIZE=512
|
|
||||||
CONFIG_RTE_LIBRTE_MEMPOOL_DEBUG=n
|
|
||||||
# Compile Mempool drivers
|
|
||||||
CONFIG_RTE_DRIVER_MEMPOOL_RING=y
|
|
||||||
CONFIG_RTE_DRIVER_MEMPOOL_STACK=y
|
|
||||||
# Compile PMD for octeontx fpa mempool device
|
|
||||||
CONFIG_RTE_LIBRTE_OCTEONTX_MEMPOOL=y
|
|
||||||
CONFIG_RTE_LIBRTE_OCTEONTX_MEMPOOL_DEBUG=n
|
|
||||||
# Compile librte_mbuf
|
|
||||||
CONFIG_RTE_LIBRTE_MBUF=y
|
|
||||||
CONFIG_RTE_LIBRTE_MBUF_DEBUG=n
|
|
||||||
CONFIG_RTE_MBUF_DEFAULT_MEMPOOL_OPS="ring_mp_mc"
|
|
||||||
CONFIG_RTE_MBUF_REFCNT_ATOMIC=y
|
|
||||||
CONFIG_RTE_PKTMBUF_HEADROOM=128
|
|
||||||
# Compile librte_timer
|
|
||||||
CONFIG_RTE_LIBRTE_TIMER=n
|
|
||||||
CONFIG_RTE_LIBRTE_TIMER_DEBUG=n
|
|
||||||
# Compile librte_cfgfile
|
|
||||||
CONFIG_RTE_LIBRTE_CFGFILE=n
|
|
||||||
# Compile librte_cmdline
|
|
||||||
CONFIG_RTE_LIBRTE_CMDLINE=y
|
|
||||||
CONFIG_RTE_LIBRTE_CMDLINE_DEBUG=n
|
|
||||||
# Compile librte_hash
|
|
||||||
CONFIG_RTE_LIBRTE_HASH=y
|
|
||||||
CONFIG_RTE_LIBRTE_HASH_DEBUG=n
|
|
||||||
# Compile librte_efd
|
|
||||||
CONFIG_RTE_LIBRTE_EFD=y
|
|
||||||
# Compile librte_member
|
|
||||||
CONFIG_RTE_LIBRTE_MEMBER=y
|
|
||||||
# Compile librte_jobstats
|
|
||||||
CONFIG_RTE_LIBRTE_JOBSTATS=n
|
|
||||||
# Compile architecture we compile for. device metrics library
|
|
||||||
CONFIG_RTE_LIBRTE_METRICS=y
|
|
||||||
# Compile architecture we compile for. bitrate statistics library
|
|
||||||
CONFIG_RTE_LIBRTE_BITRATE=y
|
|
||||||
# Compile architecture we compile for. latency statistics library
|
|
||||||
CONFIG_RTE_LIBRTE_LATENCY_STATS=y
|
|
||||||
# Compile librte_lpm
|
|
||||||
CONFIG_RTE_LIBRTE_LPM=n
|
|
||||||
CONFIG_RTE_LIBRTE_LPM_DEBUG=n
|
|
||||||
# Compile librte_acl
|
|
||||||
CONFIG_RTE_LIBRTE_ACL=n
|
|
||||||
CONFIG_RTE_LIBRTE_ACL_DEBUG=n
|
|
||||||
# Compile librte_power
|
|
||||||
CONFIG_RTE_LIBRTE_POWER=n
|
|
||||||
CONFIG_RTE_LIBRTE_POWER_DEBUG=n
|
|
||||||
CONFIG_RTE_MAX_LCORE_FREQS=64
|
|
||||||
# Compile librte_net
|
|
||||||
CONFIG_RTE_LIBRTE_NET=y
|
|
||||||
# Compile librte_ip_frag
|
|
||||||
CONFIG_RTE_LIBRTE_IP_FRAG=y
|
|
||||||
CONFIG_RTE_LIBRTE_IP_FRAG_DEBUG=n
|
|
||||||
CONFIG_RTE_LIBRTE_IP_FRAG_MAX_FRAG=4
|
|
||||||
CONFIG_RTE_LIBRTE_IP_FRAG_TBL_STAT=n
|
|
||||||
# Compile GRO library
|
|
||||||
CONFIG_RTE_LIBRTE_GRO=y
|
|
||||||
# Compile GSO library
|
|
||||||
CONFIG_RTE_LIBRTE_GSO=y
|
|
||||||
# Compile librte_meter
|
|
||||||
CONFIG_RTE_LIBRTE_METER=y
|
|
||||||
# Compile librte_classify
|
|
||||||
CONFIG_RTE_LIBRTE_FLOW_CLASSIFY=n
|
|
||||||
# Compile librte_sched
|
|
||||||
CONFIG_RTE_LIBRTE_SCHED=y
|
|
||||||
CONFIG_RTE_SCHED_DEBUG=n
|
|
||||||
CONFIG_RTE_SCHED_RED=n
|
|
||||||
CONFIG_RTE_SCHED_COLLECT_STATS=n
|
|
||||||
CONFIG_RTE_SCHED_SUBPORT_TC_OV=n
|
|
||||||
CONFIG_RTE_SCHED_PORT_N_GRINDERS=8
|
|
||||||
CONFIG_RTE_SCHED_VECTOR=n
|
|
||||||
# Compile architecture we compile for. distributor library
|
|
||||||
CONFIG_RTE_LIBRTE_DISTRIBUTOR=n
|
|
||||||
# Compile architecture we compile for. reorder library
|
|
||||||
CONFIG_RTE_LIBRTE_REORDER=n
|
|
||||||
# Compile librte_port
|
|
||||||
CONFIG_RTE_LIBRTE_PORT=n
|
|
||||||
CONFIG_RTE_PORT_STATS_COLLECT=n
|
|
||||||
CONFIG_RTE_PORT_PCAP=n
|
|
||||||
# Compile librte_table
|
|
||||||
CONFIG_RTE_LIBRTE_TABLE=n
|
|
||||||
CONFIG_RTE_TABLE_STATS_COLLECT=n
|
|
||||||
# Compile librte_pipeline
|
|
||||||
CONFIG_RTE_LIBRTE_PIPELINE=n
|
|
||||||
CONFIG_RTE_PIPELINE_STATS_COLLECT=n
|
|
||||||
# Compile librte_kni
|
|
||||||
CONFIG_RTE_LIBRTE_KNI=n
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_KNI=n
|
|
||||||
CONFIG_RTE_KNI_KMOD=n
|
|
||||||
CONFIG_RTE_KNI_KMOD_ETHTOOL=n
|
|
||||||
CONFIG_RTE_KNI_PREEMPT_DEFAULT=y
|
|
||||||
# Compile architecture we compile for. pdump library
|
|
||||||
CONFIG_RTE_LIBRTE_PDUMP=y
|
|
||||||
# Compile vhost user library
|
|
||||||
CONFIG_RTE_LIBRTE_VHOST=y
|
|
||||||
CONFIG_RTE_LIBRTE_VHOST_NUMA=y
|
|
||||||
CONFIG_RTE_LIBRTE_VHOST_DEBUG=n
|
|
||||||
# Compile vhost PMD
|
|
||||||
# To compile, CONFIG_RTE_LIBRTE_VHOST should be enabled.
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_VHOST=n
|
|
||||||
# Compile architecture we compile for. test application
|
|
||||||
CONFIG_RTE_APP_TEST=y
|
|
||||||
CONFIG_RTE_APP_TEST_RESOURCE_TAR=n
|
|
||||||
# Compile architecture we compile for. PMD test application
|
|
||||||
CONFIG_RTE_TEST_PMD=n
|
|
||||||
CONFIG_RTE_TEST_PMD_RECORD_CORE_CYCLES=n
|
|
||||||
CONFIG_RTE_TEST_PMD_RECORD_BURST_STATS=n
|
|
||||||
# Compile architecture we compile for. crypto performance application
|
|
||||||
CONFIG_RTE_APP_CRYPTO_PERF=y
|
|
||||||
# Compile architecture we compile for. eventdev application
|
|
||||||
CONFIG_RTE_APP_EVENTDEV=y
|
|
||||||
CONFIG_RTE_EXEC_ENV_LINUXAPP=y
|
|
||||||
CONFIG_RTE_ARCH_X86_64=y
|
|
||||||
CONFIG_RTE_ARCH_X86=y
|
|
||||||
CONFIG_RTE_ARCH_64=y
|
|
||||||
CONFIG_RTE_TOOLCHAIN_GCC=y
|
|
||||||
CONFIG_RTE_LIBRTE_PMD_XENVIRT=n
|
|
Loading…
Reference in new issue