Added support for DPDK 19.08 20/68320/6
authorXavier Simonart <xavier.simonart@intel.com>
Tue, 6 Aug 2019 11:01:27 +0000 (13:01 +0200)
committerXavier Simonart <xavier.simonart@intel.com>
Wed, 29 Jan 2020 09:58:19 +0000 (09:58 +0000)
Change-Id: I090bf8f1cd5a5d2dfa4f336bc66c46cc03d6c5bb
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
VNFs/DPPD-PROX/commands.c
VNFs/DPPD-PROX/defaults.c
VNFs/DPPD-PROX/handle_gen.c
VNFs/DPPD-PROX/handle_swap.c
VNFs/DPPD-PROX/prox_args.c
VNFs/DPPD-PROX/prox_compat.h
VNFs/DPPD-PROX/prox_port_cfg.c

index 11b43e5..df5e69c 100644 (file)
@@ -258,7 +258,7 @@ static int add_multicast_addr(uint8_t port_id, prox_rte_ether_addr *addr)
                return -1;
        }
         for (i = 0; i < port_cfg->nb_mc_addr; i++) {
-                if (is_same_ether_addr(addr, &port_cfg->mc_addr[i])) {
+                if (prox_rte_is_same_ether_addr(addr, &port_cfg->mc_addr[i])) {
                         plog_info("multicast address already added to port\n");
                         return -1;
                 }
@@ -283,7 +283,7 @@ static int del_multicast_addr(uint8_t port_id, prox_rte_ether_addr *addr)
        struct prox_port_cfg* port_cfg = &prox_port_cfg[port_id];
 
         for (i = 0; i < port_cfg->nb_mc_addr; i++) {
-                if (is_same_ether_addr(addr, &port_cfg->mc_addr[i])) {
+                if (prox_rte_is_same_ether_addr(addr, &port_cfg->mc_addr[i])) {
                        // Copy last address to the slot to be deleted
                        prox_rte_ether_addr_copy(&port_cfg->mc_addr[port_cfg->nb_mc_addr-1], &port_cfg->mc_addr[i]);
 
@@ -347,15 +347,17 @@ static void get_hp_sz_string(char *sz_str, uint64_t hp_sz)
 // Unused for now, keep for reference
 static int print_all_segments(const struct rte_memseg_list *memseg_list, const struct rte_memseg *memseg, void *arg)
 {
-       struct rte_mem_config *mcfg = rte_eal_get_configuration()->mem_config;
-       int memseg_list_idx, memseg_idx;
+       int memseg_list_idx = 0, memseg_idx;
        int n = (*(int *)arg)++;
 
+#if RTE_VERSION < RTE_VERSION_NUM(19,8,0,0)
+       struct rte_mem_config *mcfg = rte_eal_get_configuration()->mem_config;
        memseg_list_idx = memseg_list - mcfg->memsegs;
        if ((memseg_list_idx < 0) || (memseg_list_idx >= RTE_MAX_MEMSEG_LISTS)) {
                plog_err("Invalid memseg_list_idx = %d; memseg_list = %p, mcfg->memsegs = %p\n", memseg_list_idx, memseg_list, mcfg->memsegs);
                return -1;
        }
+#endif
        memseg_idx = rte_fbarray_find_idx(&memseg_list->memseg_arr, memseg);
        if (memseg_idx < 0) {
                plog_err("Invalid memseg_idx = %d; memseg_list = %p, memseg = %p\n", memseg_idx, memseg_list, memseg);
@@ -381,15 +383,17 @@ static int print_all_segments(const struct rte_memseg_list *memseg_list, const s
 // Contiguous segments are shown as 1 big segment
 static int print_segments(const struct rte_memseg_list *memseg_list, const struct rte_memseg *memseg, size_t len, void *arg)
 {
-       struct rte_mem_config *mcfg = rte_eal_get_configuration()->mem_config;
-       int memseg_list_idx, memseg_idx;
+       int memseg_list_idx = 0, memseg_idx;
        static int n = 0;
 
+#if RTE_VERSION < RTE_VERSION_NUM(19,8,0,0)
+       struct rte_mem_config *mcfg = rte_eal_get_configuration()->mem_config;
        memseg_list_idx = memseg_list - mcfg->memsegs;
        if ((memseg_list_idx < 0) || (memseg_list_idx >= RTE_MAX_MEMSEG_LISTS)) {
                plog_err("Invalid memseg_list_idx = %d; memseg_list = %p, mcfg->memsegs = %p\n", memseg_list_idx, memseg_list, mcfg->memsegs);
                return -1;
        }
+#endif
        memseg_idx = rte_fbarray_find_idx(&memseg_list->memseg_arr, memseg);
        if (memseg_idx < 0) {
                plog_err("Invalid memseg_idx = %d; memseg_list = %p, memseg = %p\n", memseg_idx, memseg_list, memseg);
@@ -412,6 +416,7 @@ static int print_segments(const struct rte_memseg_list *memseg_list, const struc
 }
 
 #endif
+
 void cmd_mem_layout(void)
 {
 #if RTE_VERSION < RTE_VERSION_NUM(18,5,0,0)
index 915ee31..2724048 100644 (file)
@@ -94,7 +94,11 @@ 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 = {
index 7c67b3c..3bcb231 100644 (file)
@@ -1081,7 +1081,7 @@ void task_gen_reset_values(struct task_base *tbase)
        task_gen_reset_pkt_templates_content(task);
        if (task->flags & TASK_OVERWRITE_SRC_MAC_WITH_PORT_MAC) {
                for (uint32_t i = 0; i < task->n_pkts; ++i) {
-                       rte_memcpy(&task->pkt_template[i].buf[sizeof(struct ether_addr)], &task->src_mac, sizeof(prox_rte_ether_addr));
+                       rte_memcpy(&task->pkt_template[i].buf[sizeof(prox_rte_ether_addr)], &task->src_mac, sizeof(prox_rte_ether_addr));
                }
        }
 }
@@ -1317,7 +1317,7 @@ static void init_task_gen(struct task_base *tbase, struct task_args *targ)
                task->flags |= TASK_OVERWRITE_SRC_MAC_WITH_PORT_MAC;
                memcpy(&task->src_mac, &prox_port_cfg[task->base.tx_params_hw.tx_port_queue->port].eth_addr, sizeof(prox_rte_ether_addr));
                for (uint32_t i = 0; i < task->n_pkts; ++i) {
-                       rte_memcpy(&task->pkt_template[i].buf[sizeof(struct ether_addr)], &task->src_mac, sizeof(prox_rte_ether_addr));
+                       rte_memcpy(&task->pkt_template[i].buf[sizeof(prox_rte_ether_addr)], &task->src_mac, sizeof(prox_rte_ether_addr));
                }
        }
        for (uint32_t i = 0; i < targ->n_rand_str; ++i) {
index 5286a4f..457c2fa 100644 (file)
@@ -226,7 +226,7 @@ static int handle_swap_bulk(struct task_base *tbase, struct rte_mbuf **mbufs, ui
                        break;
                case IPPROTO_UDP:
                case IPPROTO_TCP:
-                       if (task->igmp_address && IS_IPV4_MCAST(rte_be_to_cpu_32(ip))) {
+                       if (task->igmp_address && PROX_RTE_IS_IPV4_MCAST(rte_be_to_cpu_32(ip))) {
                                out[j] = OUT_DISCARD;
                                continue;
                        }
index f770675..d31fac2 100644 (file)
@@ -1554,6 +1554,10 @@ static int get_core_cfg(unsigned sindex, char *str, void *data)
                if (err) {
                        return -1;
                }
+               if (queue_id >= RTE_SCHED_BE_QUEUES_PER_PIPE) {
+                       set_errf("queue_id must be < %d", RTE_SCHED_BE_QUEUES_PER_PIPE);
+                       return -1;
+               }
                targ->qos_conf.pipe_params[0].wrr_weights[queue_id] = val;
                return 0;
        }
index 7c1c2e1..9c18e36 100644 (file)
@@ -173,7 +173,38 @@ typedef struct vlan_hdr prox_rte_vlan_hdr;
 typedef struct udp_hdr prox_rte_udp_hdr;
 typedef struct tcp_hdr prox_rte_tcp_hdr;
 
+#ifndef RTE_SCHED_BE_QUEUES_PER_PIPE
+#define RTE_SCHED_BE_QUEUES_PER_PIPE RTE_SCHED_QUEUES_PER_PIPE
+#endif
+
+#define PROX_RTE_IS_IPV4_MCAST IS_IPV4_MCAST
+#define prox_rte_is_same_ether_addr is_same_ether_addr
 #else
+
+#define PROX_RTE_ETHER_CRC_LEN RTE_ETHER_CRC_LEN
+#define PROX_RTE_ETHER_MIN_LEN RTE_ETHER_MIN_LEN
+#define PROX_RTE_ETHER_MAX_LEN RTE_ETHER_MAX_LEN
+#define PROX_RTE_ETHER_HDR_LEN RTE_ETHER_HDR_LEN
+#define PROX_RTE_TCP_SYN_FLAG RTE_TCP_SYN_FLAG
+#define PROX_RTE_TCP_FIN_FLAG RTE_TCP_FIN_FLAG
+#define PROX_RTE_TCP_RST_FLAG RTE_TCP_RST_FLAG
+#define PROX_RTE_TCP_ACK_FLAG RTE_TCP_ACK_FLAG
+
+#define prox_rte_ether_addr_copy rte_ether_addr_copy
+#define prox_rte_eth_random_addr rte_eth_random_addr
+
+typedef struct rte_ipv6_hdr prox_rte_ipv6_hdr;
+typedef struct rte_ipv4_hdr prox_rte_ipv4_hdr;
+typedef struct rte_ether_addr prox_rte_ether_addr;
+typedef struct rte_ether_hdr prox_rte_ether_hdr;
+typedef struct rte_vlan_hdr prox_rte_vlan_hdr;
+typedef struct rte_vxlan_gpe_hdr prox_rte_vxlan_gpe_hdr;
+typedef struct rte_udp_hdr prox_rte_udp_hdr;
+typedef struct rte_tcp_hdr prox_rte_tcp_hdr;
+
+#define PROX_RTE_IS_IPV4_MCAST  RTE_IS_IPV4_MCAST
+#define prox_rte_is_same_ether_addr rte_is_same_ether_addr
+
 #endif
 
 static inline char *prox_strncpy(char * dest, const char * src, size_t count)
@@ -206,14 +237,19 @@ static int prox_rte_cryptodev_queue_pair_setup(uint8_t dev_id, uint16_t queue_pa
 }
 
 #else
-#define prox_esp_hdr esp_hdr
 #define prox_rte_cryptodev_qp_conf rte_cryptodev_qp_conf
-
 static int prox_rte_cryptodev_queue_pair_setup(uint8_t dev_id, uint16_t queue_pair_id, struct prox_rte_cryptodev_qp_conf *qp_conf, int socket_id)
 {
        return rte_cryptodev_queue_pair_setup(dev_id, queue_pair_id, (struct rte_cryptodev_qp_conf *)qp_conf, socket_id);
 }
 
+#if RTE_VERSION < RTE_VERSION_NUM(19,8,0,0)
+#define prox_esp_hdr esp_hdr
+
+#else  // From DPDK 19.08
+#define prox_esp_hdr rte_esp_hdr
+
+#endif
 #endif
 #endif // CONFIG_RTE_LIBRTE_PMD_AESNI_MB
 
index 73afe57..9af141f 100644 (file)
@@ -181,7 +181,7 @@ void init_rte_dev(int use_dummy_devices)
                char port_name[32] = "0dummy_dev";
                for (uint32_t i = 0; i < nb_ports; ++i) {
 #if (RTE_VERSION > RTE_VERSION_NUM(17,5,0,1))
-                       rte_vdev_init(port_name, "size=PROX_RTE_ETHER_MIN_LEN,copy=0");
+                       rte_vdev_init(port_name, "size=64,copy=0");
 #else
                        eth_dev_null_create(port_name, 0, PROX_RTE_ETHER_MIN_LEN, 0);
 #endif