X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=VNFs%2FDPPD-PROX%2Fprox_args.c;h=d77eab1ad68a9e74bf0c6872714cbccc6f791320;hb=3d17d9c7e0daae0b82973283a23f3e85d0decabd;hp=aa7ff51cc7dccca6ffb8f66ee2211e646188ce5c;hpb=52919e307f83c2aa945e5d12c82fa4d7189529e8;p=samplevnf.git diff --git a/VNFs/DPPD-PROX/prox_args.c b/VNFs/DPPD-PROX/prox_args.c index aa7ff51c..d77eab1a 100644 --- a/VNFs/DPPD-PROX/prox_args.c +++ b/VNFs/DPPD-PROX/prox_args.c @@ -539,12 +539,42 @@ static int get_port_cfg(unsigned sindex, char *str, void *data) } cfg->lsc_val = val; } +#if RTE_VERSION >= RTE_VERSION_NUM(18,8,0,1) + else if (STR_EQ(str, "disable tx offload")) { + uint32_t val; + if (parse_int(&val, pkey)) { + return -1; + } + if (val) + cfg->disabled_tx_offload = val; + } +#endif else if (STR_EQ(str, "strip crc")) { uint32_t val; if (parse_bool(&val, pkey)) { return -1; } - cfg->port_conf.rxmode.hw_strip_crc = val; + if (val) + cfg->requested_rx_offload |= DEV_RX_OFFLOAD_CRC_STRIP; + else + cfg->requested_rx_offload &= ~DEV_RX_OFFLOAD_CRC_STRIP; + } + else if (STR_EQ(str, "vlan")) { +#if RTE_VERSION >= RTE_VERSION_NUM(18,8,0,1) + uint32_t val; + if (parse_bool(&val, pkey)) { + return -1; + } + if (val) { + cfg->requested_rx_offload |= DEV_RX_OFFLOAD_VLAN_STRIP; + cfg->requested_tx_offload |= DEV_TX_OFFLOAD_VLAN_INSERT; + } else { + cfg->requested_rx_offload &= ~DEV_RX_OFFLOAD_VLAN_STRIP; + cfg->requested_tx_offload &= ~DEV_TX_OFFLOAD_VLAN_INSERT; + } +#else + plog_warn("vlan option not supported : update DPDK at least to 18.08 to support this option\n"); +#endif } else if (STR_EQ(str, "mtu size")) { uint32_t val; @@ -553,9 +583,12 @@ static int get_port_cfg(unsigned sindex, char *str, void *data) } if (val) { cfg->mtu = val; - if (cfg->mtu + ETHER_HDR_LEN + ETHER_CRC_LEN > ETHER_MAX_LEN) { - cfg->port_conf.rxmode.max_rx_pkt_len = cfg->mtu + ETHER_HDR_LEN + ETHER_CRC_LEN + 2 * PROX_VLAN_TAG_SIZE; - cfg->port_conf.rxmode.jumbo_frame = 1; + // A frame of 1526 bytes (1500 bytes mtu, 14 bytes hdr, 4 bytes crc and 8 bytes vlan) + // should not be considered as a jumbo frame. However rte_ethdev.c considers that + // the max_rx_pkt_len for a non jumbo frame is 1518 + cfg->port_conf.rxmode.max_rx_pkt_len = cfg->mtu + ETHER_HDR_LEN + ETHER_CRC_LEN; + if (cfg->port_conf.rxmode.max_rx_pkt_len > ETHER_MAX_LEN) { + cfg->requested_rx_offload |= DEV_RX_OFFLOAD_JUMBO_FRAME; } } } @@ -1219,7 +1252,6 @@ static int get_core_cfg(unsigned sindex, char *str, void *data) } else if (STR_EQ(str, "mbuf size")) { - targ->mbuf_size_set_explicitely = 1; return parse_int(&targ->mbuf_size, pkey); } if (STR_EQ(str, "memcache size")) { @@ -1330,6 +1362,10 @@ static int get_core_cfg(unsigned sindex, char *str, void *data) if (STR_EQ(str, "local ipv6")) { /* source IPv6 address to be used for packets */ return parse_ip6(&targ->local_ipv6, pkey); } + if (STR_EQ(str, "arp timeout")) + return parse_int(&targ->arp_timeout, pkey); + if (STR_EQ(str, "arp update time")) + return parse_int(&targ->arp_update_time, pkey); if (STR_EQ(str, "number of packets")) return parse_int(&targ->n_pkts, pkey); if (STR_EQ(str, "pipes")) {