X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=app%2Ftest-pmd%2Fcsumonly.c;h=d813d4fae09658d034c494134a73a4363eb6cd8b;hb=701283309404e394693fba46ed71834593af808e;hp=8f2f840690daee998cb21b72dde8cb84637aecb6;hpb=df655504e33b5e66ad21df4b33fd6eea00a624fe;p=dpdk.git diff --git a/app/test-pmd/csumonly.c b/app/test-pmd/csumonly.c index 8f2f840690..d813d4fae0 100644 --- a/app/test-pmd/csumonly.c +++ b/app/test-pmd/csumonly.c @@ -105,7 +105,7 @@ parse_ipv4(struct rte_ipv4_hdr *ipv4_hdr, struct testpmd_offload_info *info) { struct rte_tcp_hdr *tcp_hdr; - info->l3_len = (ipv4_hdr->version_ihl & 0x0f) * 4; + info->l3_len = rte_ipv4_hdr_len(ipv4_hdr); info->l4_proto = ipv4_hdr->next_proto_id; /* only fill l4_len for TCP, it's useful for TSO */ @@ -1080,9 +1080,17 @@ tunnel_update: ret = rte_gso_segment(pkts_burst[i], gso_ctx, &gso_segments[nb_segments], GSO_MAX_PKT_BURST - nb_segments); - if (ret >= 0) + if (ret >= 1) { + /* pkts_burst[i] can be freed safely here. */ + rte_pktmbuf_free(pkts_burst[i]); nb_segments += ret; - else { + } else if (ret == 0) { + /* 0 means it can be transmitted directly + * without gso. + */ + gso_segments[nb_segments] = pkts_burst[i]; + nb_segments += 1; + } else { TESTPMD_LOG(DEBUG, "Unable to segment packet"); rte_pktmbuf_free(pkts_burst[i]); }