diff options
Diffstat (limited to 'VNFs/DPPD-PROX/defaults.c')
-rw-r--r-- | VNFs/DPPD-PROX/defaults.c | 86 |
1 files changed, 68 insertions, 18 deletions
diff --git a/VNFs/DPPD-PROX/defaults.c b/VNFs/DPPD-PROX/defaults.c index a6be0d7e..f5624b97 100644 --- a/VNFs/DPPD-PROX/defaults.c +++ b/VNFs/DPPD-PROX/defaults.c @@ -1,5 +1,5 @@ /* -// Copyright (c) 2010-2017 Intel Corporation +// Copyright (c) 2010-2020 Intel Corporation // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -17,6 +17,7 @@ #include <string.h> #include <libgen.h> #include <rte_sched.h> +#include <rte_ether.h> #include <rte_version.h> #include "lconf.h" @@ -27,14 +28,16 @@ #include "etypes.h" #include "toeplitz.h" #include "handle_master.h" +#include "prox_compat.h" +#include "prox_ipv6.h" #define TEN_GIGABIT 1250000000 #define QUEUE_SIZES 128 #define NB_PIPES 32768 #define NB_MBUF 4096 #define RING_RX_SIZE 256 -#define NB_RX_RING_DESC 256 -#define NB_TX_RING_DESC 256 +#define NB_RX_RING_DESC 2048 +#define NB_TX_RING_DESC 2048 /* 1500000 milliseconds */ #define DEFAULT_CPE_TIMEOUT_MS 1500000 @@ -46,16 +49,12 @@ static const struct rte_eth_conf default_port_conf = { .rxmode = { - .split_hdr_size = 0, - .header_split = 0, /* Header Split disabled */ - .hw_ip_checksum = 0, /* IP checksum offload disabled */ - .hw_vlan_filter = 0, /* VLAN filtering disabled */ - .hw_vlan_strip = 0, /* VLAN filtering disabled */ - .jumbo_frame = 0, /* Jumbo frame support disabled */ - .hw_strip_crc = 1, /* CRC stripped by hardware --- always set to 1 in VF */ - .hw_vlan_extend = 0, .mq_mode = 0, - .max_rx_pkt_len = PROX_MTU + ETHER_HDR_LEN + ETHER_CRC_LEN +#if RTE_VERSION < RTE_VERSION_NUM(21,11,0,0) + .max_rx_pkt_len = PROX_MTU + PROX_RTE_ETHER_HDR_LEN + PROX_RTE_ETHER_CRC_LEN, +#else + .mtu = PROX_MTU, +#endif }, .rx_adv_conf = { .rss_conf = { @@ -81,6 +80,16 @@ static struct rte_eth_txconf default_tx_conf = { .tx_rs_thresh = 32, /* Use PMD default values */ }; +#if RTE_VERSION >= RTE_VERSION_NUM(20,11,0,0) +static struct rte_sched_subport_profile_params subport_profile_params_default = { + .tb_rate = TEN_GIGABIT / NB_PIPES, + .tb_size = 4000000, + + .tc_rate = {TEN_GIGABIT / NB_PIPES, TEN_GIGABIT / NB_PIPES, TEN_GIGABIT / NB_PIPES, TEN_GIGABIT / NB_PIPES}, + .tc_period = 40, +}; +#endif + static struct rte_sched_port_params port_params_default = { .name = "port_0", .socket = 0, @@ -88,10 +97,15 @@ static struct rte_sched_port_params port_params_default = { .rate = 0, .frame_overhead = RTE_SCHED_FRAME_OVERHEAD_DEFAULT, .n_subports_per_port = 1, +#if RTE_VERSION >= RTE_VERSION_NUM(20,11,0,0) + .subport_profiles = &subport_profile_params_default, +#endif .n_pipes_per_subport = NB_PIPES, +#if RTE_VERSION < RTE_VERSION_NUM(19,11,0,0) .qsize = {QUEUE_SIZES, QUEUE_SIZES, QUEUE_SIZES, QUEUE_SIZES}, .pipe_profiles = NULL, .n_pipe_profiles = 1 /* only one profile */ +#endif }; static struct rte_sched_pipe_params pipe_params_default = { @@ -101,18 +115,37 @@ static struct rte_sched_pipe_params pipe_params_default = { .tc_rate = {TEN_GIGABIT / NB_PIPES, TEN_GIGABIT / NB_PIPES, TEN_GIGABIT / NB_PIPES, TEN_GIGABIT / NB_PIPES}, .tc_period = 40, +#if RTE_VERSION >= RTE_VERSION_NUM(19,8,0,0) + .wrr_weights = {1, 1, 1, 1}, +#else .wrr_weights = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, +#endif }; static struct rte_sched_subport_params subport_params_default = { +#if RTE_VERSION < RTE_VERSION_NUM(20,11,0,0) .tb_rate = TEN_GIGABIT, .tb_size = 4000000, .tc_rate = {TEN_GIGABIT, TEN_GIGABIT, TEN_GIGABIT, TEN_GIGABIT}, .tc_period = 40, /* default was 10 */ +#endif +#if RTE_VERSION > RTE_VERSION_NUM(19,11,0,0) + .qsize = {QUEUE_SIZES, QUEUE_SIZES, QUEUE_SIZES, QUEUE_SIZES}, + .pipe_profiles = NULL, + .n_pipe_profiles = 1 /* only one profile */ +#endif }; -void set_global_defaults(__attribute__((unused)) struct prox_cfg *prox_cfg) +void set_global_defaults(struct prox_cfg *prox_cfg) { + if (parse_ip6(&prox_cfg->all_routers_ipv6_mcast_addr, ALL_ROUTERS_IPV6_MCAST_ADDR) != 0) + plog_err("Failed to parse %s\n", ALL_ROUTERS_IPV6_MCAST_ADDR); + if (parse_ip6(&prox_cfg->all_nodes_ipv6_mcast_addr, ALL_NODES_IPV6_MCAST_ADDR) != 0) + plog_err("Failed to parse %s\n", ALL_NODES_IPV6_MCAST_ADDR); + if (parse_ip6(&prox_cfg->random_ip, RANDOM_IPV6) != 0) + plog_err("Failed to parse %s\n", RANDOM_IPV6); + set_mcast_mac_from_ipv6(&prox_cfg->all_routers_mac_addr, &prox_cfg->all_routers_ipv6_mcast_addr); + set_mcast_mac_from_ipv6(&prox_cfg->all_nodes_mac_addr, &prox_cfg->all_nodes_ipv6_mcast_addr); } void set_task_defaults(struct prox_cfg* prox_cfg, struct lcore_cfg* lcore_cfg_init) @@ -140,7 +173,11 @@ void set_task_defaults(struct prox_cfg* prox_cfg, struct lcore_cfg* lcore_cfg_in targ->qos_conf.port_params = port_params_default; targ->qos_conf.pipe_params[0] = pipe_params_default; targ->qos_conf.subport_params[0] = subport_params_default; +#if RTE_VERSION > RTE_VERSION_NUM(19,11,0,0) + targ->qos_conf.subport_params[0].pipe_profiles = targ->qos_conf.pipe_params; +#else targ->qos_conf.port_params.pipe_profiles = targ->qos_conf.pipe_params; +#endif targ->qos_conf.port_params.rate = TEN_GIGABIT; targ->qinq_tag = ETYPE_8021ad; targ->n_concur_conn = 8192*2; @@ -153,21 +190,24 @@ void set_task_defaults(struct prox_cfg* prox_cfg, struct lcore_cfg* lcore_cfg_in targ->mapping[i] = i; // identity } - targ->cbs = ETHER_MAX_LEN; - targ->ebs = ETHER_MAX_LEN; - targ->pbs = ETHER_MAX_LEN; + targ->cbs = PROX_RTE_ETHER_MAX_LEN; + targ->ebs = PROX_RTE_ETHER_MAX_LEN; + targ->pbs = PROX_RTE_ETHER_MAX_LEN; targ->n_max_rules = 1024; targ->ring_size = RING_RX_SIZE; targ->nb_cache_mbuf = MAX_PKT_BURST * 4; - targ->overhead = ETHER_CRC_LEN + 20; + targ->overhead = PROX_RTE_ETHER_CRC_LEN + 20; targ->tunnel_hop_limit = 3; targ->ctrl_freq = 1000; targ->lb_friend_core = 0xFF; - targ->n_pkts = 1024*64; + targ->n_pkts = 0; + targ->runtime_flags |= TASK_TX_CRC; targ->accuracy_limit_nsec = 5000; + targ->probability_delay = 1000000; + targ->probability_no_drop = 1000000; } } } @@ -176,6 +216,7 @@ void set_port_defaults(void) { for (uint8_t i = 0; i < PROX_MAX_PORTS; ++i ) { prox_port_cfg[i].promiscuous = 1; + prox_port_cfg[i].nb_mc_addr = 0; prox_port_cfg[i].n_rxd = NB_RX_RING_DESC; prox_port_cfg[i].n_txd = NB_TX_RING_DESC; prox_port_cfg[i].port_conf = default_port_conf; @@ -184,5 +225,14 @@ void set_port_defaults(void) prox_port_cfg[i].rx_ring[0] = '\0'; prox_port_cfg[i].tx_ring[0] = '\0'; prox_port_cfg[i].mtu = PROX_MTU; + prox_port_cfg[i].dpdk_mapping = NO_VDEV_PORT; + prox_port_cfg[i].v6_mask_length = 8; + + // CRC_STRIP becoming the default behavior in DPDK 18.08, and + // DEV_RX_OFFLOAD_CRC_STRIP define has been deleted +#if defined (RTE_ETH_RX_OFFLOAD_CRC_STRIP) + prox_port_cfg[i].requested_rx_offload = RTE_ETH_RX_OFFLOAD_CRC_STRIP; +#endif + prox_port_cfg[i].requested_tx_offload = RTE_ETH_TX_OFFLOAD_IPV4_CKSUM | RTE_ETH_TX_OFFLOAD_UDP_CKSUM; } } |