diff --git a/0001-lib-tc-Handle-error-parsing-action-in-nl_parse_singl.patch b/0001-lib-tc-Handle-error-parsing-action-in-nl_parse_singl.patch new file mode 100644 index 0000000..8ba2786 --- /dev/null +++ b/0001-lib-tc-Handle-error-parsing-action-in-nl_parse_singl.patch @@ -0,0 +1,62 @@ +From 827903321ab68f7cd91e9d7c5d9bdec796b3060d Mon Sep 17 00:00:00 2001 +From: Roi Dayan +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 +Reviewed-by: Paul Blakey +Signed-off-by: Simon Horman +--- + 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 + diff --git a/0001-net-enic-fix-L4-Rx-ptype-comparison.patch b/0001-net-enic-fix-L4-Rx-ptype-comparison.patch deleted file mode 100644 index e262e3c..0000000 --- a/0001-net-enic-fix-L4-Rx-ptype-comparison.patch +++ /dev/null @@ -1,43 +0,0 @@ -From f596cb198e65ff6839d35763d824399eb407adab Mon Sep 17 00:00:00 2001 -From: Hyong Youb Kim -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 -Reviewed-by: John Daley ---- - 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 - diff --git a/0001-net-enic-fix-crash-due-to-static-max-number-of-queue.patch b/0001-net-enic-fix-crash-due-to-static-max-number-of-queue.patch deleted file mode 100644 index 2e7e31f..0000000 --- a/0001-net-enic-fix-crash-due-to-static-max-number-of-queue.patch +++ /dev/null @@ -1,194 +0,0 @@ -From acc4c80cf3b5fb3c0f87bcb7c4eb68958f60ef15 Mon Sep 17 00:00:00 2001 -From: Hyong Youb Kim -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 -Reviewed-by: John Daley ---- - 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 - diff --git a/0001-ofproto-dpif-xlate-translate-action_set-in-clone-act.patch b/0001-ofproto-dpif-xlate-translate-action_set-in-clone-act.patch new file mode 100644 index 0000000..8c855f9 --- /dev/null +++ b/0001-ofproto-dpif-xlate-translate-action_set-in-clone-act.patch @@ -0,0 +1,57 @@ +From 118b21d93f55f4cdb511d770c90f0d49bd624187 Mon Sep 17 00:00:00 2001 +From: Eric Garver +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 +Signed-off-by: Ben Pfaff +--- + 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 + diff --git a/0001-ovn-Calculate-UDP-checksum-for-DNS-over-IPv6.patch b/0001-ovn-Calculate-UDP-checksum-for-DNS-over-IPv6.patch new file mode 100644 index 0000000..d3379e0 --- /dev/null +++ b/0001-ovn-Calculate-UDP-checksum-for-DNS-over-IPv6.patch @@ -0,0 +1,61 @@ +From b91dd29864d853228add9d9d432ca3d1bbc4fa43 Mon Sep 17 00:00:00 2001 +From: Mark Michelson +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 +Signed-off-by: Ben Pfaff +--- + 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 + diff --git a/0001-rhel-don-t-drop-capabilities-when-running-as-root.patch b/0001-rhel-don-t-drop-capabilities-when-running-as-root.patch new file mode 100644 index 0000000..990b0d4 --- /dev/null +++ b/0001-rhel-don-t-drop-capabilities-when-running-as-root.patch @@ -0,0 +1,81 @@ +From 6796c04a9afacf2d09248509d54d5ea586050a3c Mon Sep 17 00:00:00 2001 +From: Aaron Conole +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 +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 +Acked-By: Timothy Redaelli +Signed-off-by: Russell Bryant +--- + 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 + diff --git a/0001-vhost-prevent-features-to-be-changed-while-device-is.patch b/0001-vhost-prevent-features-to-be-changed-while-device-is.patch deleted file mode 100644 index 3060c98..0000000 --- a/0001-vhost-prevent-features-to-be-changed-while-device-is.patch +++ /dev/null @@ -1,59 +0,0 @@ -From fec618a3fdcc88fa50089edb5748a6554ac49070 Mon Sep 17 00:00:00 2001 -From: Maxime Coquelin -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 -Acked-by: Laszlo Ersek -Acked-by: Yuanhan Liu -(cherry picked from commit 07f8db29b8833378dd506f3e197319f8b669aed9) -Signed-off-by: Maxime Coquelin ---- - 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 - diff --git a/0001-vhost_user_protect_active_rings_from_async_ring_changes.patch b/0001-vhost_user_protect_active_rings_from_async_ring_changes.patch deleted file mode 100644 index 64a280b..0000000 --- a/0001-vhost_user_protect_active_rings_from_async_ring_changes.patch +++ /dev/null @@ -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 -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 , - Maxime Coquelin , - Yuanhan Liu , Tiwei Bie , - "Tan, Jianfeng" , - Stephen Hemminger , - Victor Kaplansky -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 -Reviewed-by: Maxime Coquelin ---- -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 - #include - #include -+#include - - #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 diff --git a/0002-netdev-tc-offloads-Add-support-for-IP-fragmentation.patch b/0002-netdev-tc-offloads-Add-support-for-IP-fragmentation.patch new file mode 100644 index 0000000..19de05a --- /dev/null +++ b/0002-netdev-tc-offloads-Add-support-for-IP-fragmentation.patch @@ -0,0 +1,185 @@ +From a99f73a22e6303555af3f93535d03c7537da5a9a Mon Sep 17 00:00:00 2001 +From: Roi Dayan +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 +Reviewed-by: Shahar Klein +Reviewed-by: Paul Blakey +Signed-off-by: Simon Horman +--- + 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 ], [ +- 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 ], [ +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 + #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 + diff --git a/0002-tests-ofproto-dpif-New-test-for-action_set-after-tra.patch b/0002-tests-ofproto-dpif-New-test-for-action_set-after-tra.patch new file mode 100644 index 0000000..0063624 --- /dev/null +++ b/0002-tests-ofproto-dpif-New-test-for-action_set-after-tra.patch @@ -0,0 +1,51 @@ +From 14ebc6c199a7c3c1097776e18a9c29ced8cc8cc9 Mon Sep 17 00:00:00 2001 +From: Eric Garver +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 +Signed-off-by: Ben Pfaff +--- + 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 + diff --git a/0002-vhost-propagate-set-features-handling-error.patch b/0002-vhost-propagate-set-features-handling-error.patch deleted file mode 100644 index db021de..0000000 --- a/0002-vhost-propagate-set-features-handling-error.patch +++ /dev/null @@ -1,40 +0,0 @@ -From d7f0078e3a3d838b4ec6a87dca62771246e53db6 Mon Sep 17 00:00:00 2001 -From: Maxime Coquelin -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 -Acked-by: Laszlo Ersek -Acked-by: Yuanhan Liu -(cherry picked from commit 59fe5e17d9308b008ffa22ea250ddd363c84c3b5) -Signed-off-by: Maxime Coquelin ---- - 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 - diff --git a/0003-vhost-extract-virtqueue-cleaning-and-freeing-functio.patch b/0003-vhost-extract-virtqueue-cleaning-and-freeing-functio.patch deleted file mode 100644 index d1caace..0000000 --- a/0003-vhost-extract-virtqueue-cleaning-and-freeing-functio.patch +++ /dev/null @@ -1,83 +0,0 @@ -From 297fcc013877e57c387e444bf7323fbfd77e4b3f Mon Sep 17 00:00:00 2001 -From: Maxime Coquelin -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 -Acked-by: Laszlo Ersek -Acked-by: Yuanhan Liu -(cherry picked from commit 467fe22df94b85d2df67b9be3ccbfb3dd72cdd6d) -Signed-off-by: Maxime Coquelin ---- - 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 - diff --git a/0004-vhost-destroy-unused-virtqueues-when-multiqueue-not-.patch b/0004-vhost-destroy-unused-virtqueues-when-multiqueue-not-.patch deleted file mode 100644 index 7a32bfc..0000000 --- a/0004-vhost-destroy-unused-virtqueues-when-multiqueue-not-.patch +++ /dev/null @@ -1,63 +0,0 @@ -From eb2b3b18edc3af42f52ca5b3f30aa8bfbd08206a Mon Sep 17 00:00:00 2001 -From: Maxime Coquelin -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 -Acked-by: Laszlo Ersek -Acked-by: Yuanhan Liu -(cherry picked from commit e29109323595beb3884da58126ebb3b878cb66f5) -Signed-off-by: Maxime Coquelin ---- - 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 - diff --git a/0005-vhost-add-flag-for-built-in-virtio-driver.patch b/0005-vhost-add-flag-for-built-in-virtio-driver.patch deleted file mode 100644 index 8e3d130..0000000 --- a/0005-vhost-add-flag-for-built-in-virtio-driver.patch +++ /dev/null @@ -1,188 +0,0 @@ -From 8db980965f3d8cde1abbdb89eaecbc829460133e Mon Sep 17 00:00:00 2001 -From: Stefan Hajnoczi -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 -Reviewed-by: Maxime Coquelin -Acked-by: Yuanhan Liu -(cherry picked from commit 1c717af4c699e60081feb1d645f86189551f9a9c) -Signed-off-by: Maxime Coquelin ---- - 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 - diff --git a/0006-vhost-drop-virtqueues-only-with-built-in-virtio-driv.patch b/0006-vhost-drop-virtqueues-only-with-built-in-virtio-driv.patch deleted file mode 100644 index 398aaba..0000000 --- a/0006-vhost-drop-virtqueues-only-with-built-in-virtio-driv.patch +++ /dev/null @@ -1,42 +0,0 @@ -From c18b2f65e0a3be55e30fc3df6062e00353dfdb26 Mon Sep 17 00:00:00 2001 -From: Stefan Hajnoczi -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 -Reviewed-by: Maxime Coquelin -Acked-by: Yuanhan Liu -(cherry picked from commit 33adfbc805651f455dbf19f1e4b4b0878717a5e5) -Signed-off-by: Maxime Coquelin ---- - 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 - diff --git a/README b/README deleted file mode 100644 index f984f87..0000000 --- a/README +++ /dev/null @@ -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. diff --git a/arm64-armv8a-linuxapp-gcc-config b/arm64-armv8a-linuxapp-gcc-config deleted file mode 100644 index 2f52c7b..0000000 --- a/arm64-armv8a-linuxapp-gcc-config +++ /dev/null @@ -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 diff --git a/configlib.sh b/configlib.sh deleted file mode 100644 index a1049b3..0000000 --- a/configlib.sh +++ /dev/null @@ -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 -} - diff --git a/gen_config_group.sh b/gen_config_group.sh deleted file mode 100755 index 223f600..0000000 --- a/gen_config_group.sh +++ /dev/null @@ -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" diff --git a/openvswitch.spec b/openvswitch.spec index 4df14f2..1084820 100644 --- a/openvswitch.spec +++ b/openvswitch.spec @@ -40,16 +40,13 @@ Name: openvswitch Summary: Open vSwitch daemon/database/utilities URL: http://www.openvswitch.org/ Version: 2.9.0 -Release: 3%{?commit0:.%{date}git%{shortcommit0}}%{?dist} +Release: 4%{?commit0:.%{date}git%{shortcommit0}}%{?dist} # Nearly all of openvswitch is ASL 2.0. The bugtool is LGPLv2+, and the # lib/sflow*.[ch] files are SISSL # datapath/ is GPLv2 (although not built into any of the binary packages) License: ASL 2.0 and LGPLv2+ and SISSL -%define dpdkver 17.11 -%define dpdkdir dpdk -%define dpdksver %(echo %{dpdkver} | cut -d. -f-2) # NOTE: DPDK does not currently build for s390x %define dpdkarches x86_64 aarch64 ppc64le @@ -58,63 +55,27 @@ Source: https://github.com/openvswitch/ovs/archive/%{commit0}.tar.gz#/%{name}-%{ %else Source: http://openvswitch.org/releases/%{name}-%{version}.tar.gz %endif -Source10: http://fast.dpdk.org/rel/dpdk-%{dpdkver}.tar.xz - -Source500: configlib.sh -Source501: gen_config_group.sh -Source502: set_config.sh - -# Important: source503 is used as the actual copy file -# @TODO: this causes a warning - fix it? -Source504: arm64-armv8a-linuxapp-gcc-config -Source505: ppc_64-power8-linuxapp-gcc-config -Source506: x86_64-native-linuxapp-gcc-config # The DPDK is designed to optimize througput of network traffic using, among # other techniques, carefully crafted assembly instructions. As such it # needs extensive work to port it to other architectures. ExclusiveArch: x86_64 aarch64 ppc64le s390x -# dpdk_mach_arch maps between rpm and dpdk arch name, often same as _target_cpu -# dpdk_mach_tmpl is the config template dpdk_mach name, often "native" -# dpdk_mach is the actual dpdk_mach name used in the dpdk make system -%ifarch x86_64 -%define dpdk_mach_arch x86_64 -%define dpdk_mach_tmpl native -%define dpdk_mach default -%endif -%ifarch aarch64 -%define dpdk_mach_arch arm64 -%define dpdk_mach_tmpl armv8a -%define dpdk_mach armv8a -%endif -%ifarch ppc64le -%define dpdk_mach_arch ppc_64 -%define dpdk_mach_tmpl power8 -%define dpdk_mach power8 -%endif - -%define dpdktarget %{dpdk_mach_arch}-%{dpdk_mach_tmpl}-linuxapp-gcc - # ovs-patches # OVS (including OVN) backports (0 - 300) Patch10: 0001-ofproto-dpif-Delete-system-tunnel-interface-when-rem.patch +Patch20: 0001-ovn-Calculate-UDP-checksum-for-DNS-over-IPv6.patch -# DPDK backports (400-500) -Patch400: 0001-vhost_user_protect_active_rings_from_async_ring_changes.patch +Patch30: 0001-ofproto-dpif-xlate-translate-action_set-in-clone-act.patch +Patch31: 0002-tests-ofproto-dpif-New-test-for-action_set-after-tra.patch -Patch410: 0001-net-enic-fix-crash-due-to-static-max-number-of-queue.patch -Patch411: 0001-net-enic-fix-L4-Rx-ptype-comparison.patch +Patch40: 0001-lib-tc-Handle-error-parsing-action-in-nl_parse_singl.patch +Patch41: 0002-netdev-tc-offloads-Add-support-for-IP-fragmentation.patch -Patch420: 0001-vhost-prevent-features-to-be-changed-while-device-is.patch -Patch421: 0002-vhost-propagate-set-features-handling-error.patch -Patch422: 0003-vhost-extract-virtqueue-cleaning-and-freeing-functio.patch -Patch423: 0004-vhost-destroy-unused-virtqueues-when-multiqueue-not-.patch -Patch424: 0005-vhost-add-flag-for-built-in-virtio-driver.patch -Patch425: 0006-vhost-drop-virtqueues-only-with-built-in-virtio-driv.patch +Patch50: 0001-rhel-don-t-drop-capabilities-when-running-as-root.patch BuildRequires: gcc @@ -140,15 +101,7 @@ BuildRequires: libcap-ng libcap-ng-devel %if %{with dpdk} %ifarch %{dpdkarches} -# DPDK driver dependencies -BuildRequires: zlib-devel libpcap-devel numactl-devel - -# Virtual provide for depending on DPDK-enabled OVS -Provides: openvswitch-dpdk = %{version}-%{release} -# Migration path for openvswitch-dpdk package -Obsoletes: openvswitch-dpdk < 2.6.0 -# Required by packaging policy for the bundled DPDK -Provides: bundled(dpdk) = %{dpdkver} +BuildRequires: dpdk-devel libpcap-devel numactl-devel %endif %endif @@ -156,11 +109,8 @@ Requires: openssl iproute module-init-tools #Upstream kernel commit 4f647e0a3c37b8d5086214128614a136064110c3 #Requires: kernel >= 3.15.0-0 -Requires(post): /usr/bin/getent -Requires(post): /usr/sbin/useradd +Requires(pre): shadow-utils Requires(post): /bin/sed -Requires(post): /usr/sbin/usermod -Requires(post): /usr/sbin/groupadd Requires(post): systemd-units Requires(preun): systemd-units Requires(postun): systemd-units @@ -263,9 +213,9 @@ Docker network plugins for OVN. %prep %if 0%{?commit0:1} -%autosetup -n ovs-%{commit0} -a 10 -p 1 +%autosetup -n ovs-%{commit0} -p 1 %else -%autosetup -a 10 -p 1 +%autosetup -p 1 %endif %build @@ -273,55 +223,9 @@ Docker network plugins for OVN. # fix the snapshot unreleased version to be the released one. sed -i.old -e "s/^AC_INIT(openvswitch,.*,/AC_INIT(openvswitch, %{version},/" configure.ac %endif -./boot.sh - -%if %{with dpdk} -%ifarch %{dpdkarches} # build dpdk -# Lets build DPDK first -cd %{dpdkdir}-%{dpdkver} - -# In case dpdk-devel is installed -unset RTE_SDK RTE_INCLUDE RTE_TARGET - -# Avoid appending second -Wall to everything, it breaks upstream warning -# disablers in makefiles. Strip explicit -march= from optflags since they -# will only guarantee build failures, DPDK is picky with that. -export EXTRA_CFLAGS="$(echo %{optflags} | sed -e 's:-Wall::g' -e 's:-march=[[:alnum:]]* ::g') -Wformat -fPIC" - -# DPDK defaults to using builder-specific compiler flags. However, -# the config has been changed by specifying CONFIG_RTE_MACHINE=default -# in order to build for a more generic host. NOTE: It is possible that -# the compiler flags used still won't work for all Fedora-supported -# machines, but runtime checks in DPDK will catch those situations. - -make V=1 O=%{dpdktarget} T=%{dpdktarget} %{?_smp_mflags} config - -cp -f %{SOURCE500} %{SOURCE502} "%{_sourcedir}/%{dpdktarget}-config" . -%{SOURCE502} %{dpdktarget}-config "%{dpdktarget}/.config" - -make V=1 O=%{dpdktarget} %{?_smp_mflags} -# Generate a list of supported drivers, its hard to tell otherwise. -cat << EOF > README.DPDK-PMDS -DPDK drivers included in this package: - -EOF - -for f in $(ls %{dpdk_mach_arch}-%{dpdk_mach_tmpl}-linuxapp-gcc/lib/lib*_pmd_*); do - basename ${f} | cut -c12- | cut -d. -f1 | tr [:lower:] [:upper:] -done >> README.DPDK-PMDS - -cat << EOF >> README.DPDK-PMDS - -For further information about the drivers, see -http://dpdk.org/doc/guides-%{dpdksver}/nics/index.html -EOF - -cd - -%endif # build dpdk -%endif +./boot.sh -# And now for OVS... %configure \ %if %{with libcapng} --enable-libcapng \ @@ -331,7 +235,7 @@ cd - --enable-ssl \ %if %{with dpdk} %ifarch %{dpdkarches} - --with-dpdk=$(pwd)/%{dpdkdir}-%{dpdkver}/%{dpdktarget} \ + --with-dpdk \ %endif %endif --with-pkidir=%{_sharedstatedir}/openvswitch/pki \ @@ -488,23 +392,24 @@ rm -rf $RPM_BUILD_ROOT fi %endif +%pre +getent group openvswitch >/dev/null || groupadd -r openvswitch +getent passwd openvswitch >/dev/null || \ + useradd -r -g openvswitch -d / -s /sbin/nologin \ + -c "Open vSwitch Daemons" openvswitch +getent group hugetlbfs >/dev/null || groupadd hugetlbfs +usermod -a -G hugetlbfs openvswitch +exit 0 + %post if [ $1 -eq 1 ]; then - getent passwd openvswitch >/dev/null || \ - useradd -r -d / -s /sbin/nologin -c "Open vSwitch Daemons" openvswitch - sed -i 's:^#OVS_USER_ID=:OVS_USER_ID=:' /etc/sysconfig/openvswitch - getent group hugetlbfs >/dev/null || \ - groupadd hugetlbfs - usermod -a -G hugetlbfs openvswitch sed -i \ 's@OVS_USER_ID="openvswitch:openvswitch"@OVS_USER_ID="openvswitch:hugetlbfs"@'\ /etc/sysconfig/openvswitch - - # In the case of upgrade, this is not needed. - chown -R openvswitch:openvswitch /etc/openvswitch fi +chown -R openvswitch:openvswitch /etc/openvswitch %if 0%{?systemd_post:1} %systemd_post %{name}.service @@ -618,12 +523,13 @@ fi %files %defattr(-,openvswitch,openvswitch) -%verify(not owner group) %dir %{_sysconfdir}/openvswitch -%verify(not owner group) %{_sysconfdir}/openvswitch/default.conf +%dir %{_sysconfdir}/openvswitch +%{_sysconfdir}/openvswitch/default.conf %config %ghost %verify(not owner group md5 size mtime) %{_sysconfdir}/openvswitch/conf.db -%config %ghost %verify(not owner group md5 size mtime) %{_sysconfdir}/openvswitch/system-id.conf -%config(noreplace) %verify(not owner group md5 size mtime) %{_sysconfdir}/sysconfig/openvswitch +%ghost %attr(0600,-,-) %verify(not owner group md5 size mtime) %{_sysconfdir}/openvswitch/.conf.db.~lock~ +%config %ghost %{_sysconfdir}/openvswitch/system-id.conf %defattr(-,root,root) +%config(noreplace) %{_sysconfdir}/sysconfig/openvswitch %{_sysconfdir}/bash_completion.d/ovs-appctl-bashcomp.bash %{_sysconfdir}/bash_completion.d/ovs-vsctl-bashcomp.bash %config(noreplace) %{_sysconfdir}/logrotate.d/openvswitch @@ -678,14 +584,9 @@ fi %{_mandir}/man8/ovs-parse-backtrace.8* %{_udevrulesdir}/91-vfio.rules %doc COPYING NOTICE README.rst NEWS rhel/README.RHEL.rst -%if %{with dpdk} -%ifarch %{dpdkarches} -%doc dpdk-%{dpdkver}/README.DPDK-PMDS -%endif -%endif /var/lib/openvswitch %attr(755,-,-) /var/log/openvswitch -%ghost %attr(755,root,root) %{_rundir}/openvswitch +%ghost %attr(755,root,root) %verify(not owner group) %{_rundir}/openvswitch %if %{with ovn_docker} %files ovn-docker @@ -733,6 +634,12 @@ fi %{_unitdir}/ovn-controller-vtep.service %changelog +* Tue Apr 10 2018 Timothy Redaelli - 2.9.0-4 +- Align with with RHEL "Fast Datapath" 2.9.0-15 +- Backport "rhel: don't drop capabilities when running as root" +- Change owner of /etc/openvswitch during upgrade +- Use DPDK as shared library + * Tue Feb 20 2018 Iryna Shcherbina - 2.9.0-3 - Update Python 2 dependency declarations to new packaging standards (See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3) diff --git a/ppc_64-power8-linuxapp-gcc-config b/ppc_64-power8-linuxapp-gcc-config deleted file mode 100644 index 6f323c4..0000000 --- a/ppc_64-power8-linuxapp-gcc-config +++ /dev/null @@ -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 diff --git a/sources b/sources index 9e29d2b..3e0279f 100644 --- a/sources +++ b/sources @@ -1,2 +1 @@ SHA512 (openvswitch-2.9.0.tar.gz) = c9feb45c650b73093ad1f25f2fc6dbd135dfab691b3322bf87c6efe34bcbfc0a099d1db85c14fe08eb05f4154eae56dd81de54c0a6be97b42a4aa4b6ae53e37b -SHA512 (dpdk-17.11.tar.xz) = 0b4dd3ce0dd2c57a0ab4dc8d8f7a27b914d418e48219eecfd6aad123af8ca64515b414385cb512aa5bc1fca6bda429841590f90fcc461821717deaa50545ca8d diff --git a/x86_64-native-linuxapp-gcc-config b/x86_64-native-linuxapp-gcc-config deleted file mode 100644 index f81d420..0000000 --- a/x86_64-native-linuxapp-gcc-config +++ /dev/null @@ -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