examples/tep_term: fix packet length with multi-segments
authorMichael Qiu <qiudayu@chinac.com>
Tue, 18 Oct 2016 05:49:07 +0000 (13:49 +0800)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Tue, 25 Oct 2016 15:50:47 +0000 (17:50 +0200)
For multi-seg mbuf, ip->total_length should be pkt_len subtract
ether len.

Fixes: 4abe471ed6fc ("examples/tep_term: implement VXLAN processing")

Signed-off-by: Michael Qiu <qiudayu@chinac.com>
Acked-by: Jianfeng Tan <jianfeng.tan@intel.com>
examples/tep_termination/vxlan.c

index 109e93a..9f0e836 100644 (file)
@@ -221,7 +221,7 @@ encapsulation(struct rte_mbuf *m, uint8_t queue_id)
        /* copy in IP header */
        ip = rte_memcpy(ip, &app_ip_hdr[vport_id],
                sizeof(struct ipv4_hdr));
        /* copy in IP header */
        ip = rte_memcpy(ip, &app_ip_hdr[vport_id],
                sizeof(struct ipv4_hdr));
-       ip->total_length = rte_cpu_to_be_16(m->data_len
+       ip->total_length = rte_cpu_to_be_16(m->pkt_len
                                - sizeof(struct ether_hdr));
 
        /* outer IP checksum */
                                - sizeof(struct ether_hdr));
 
        /* outer IP checksum */