From: Ouyang Changchun Date: Wed, 5 Nov 2014 07:10:33 +0000 (+0800) Subject: examples/vhost: fix packet length X-Git-Tag: spdx-start~10187 X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=e44fb8a4306dd4b62f46323d751f67e91ee5a31a;p=dpdk.git examples/vhost: fix packet length As HW vlan strip will reduce the packet length by minus length of vlan tag, so it need restore the packet length by plus it. Signed-off-by: Changchun Ouyang Acked-by: Konstantin Ananyev Acked-by: Huawei Xie --- diff --git a/examples/vhost/main.c b/examples/vhost/main.c index 57ef464884..5ca8dced2b 100644 --- a/examples/vhost/main.c +++ b/examples/vhost/main.c @@ -1078,7 +1078,13 @@ virtio_tx_route(struct vhost_dev *vdev, struct rte_mbuf *m, uint16_t vlan_tag) rte_pktmbuf_free(m); return; } - offset = 4; + + /* + * HW vlan strip will reduce the packet length + * by minus length of vlan tag, so need restore + * the packet length by plus it. + */ + offset = VLAN_HLEN; vlan_tag = (uint16_t) vlan_tags[(uint16_t)dev_ll->vdev->dev->device_fh]; @@ -1102,8 +1108,10 @@ virtio_tx_route(struct vhost_dev *vdev, struct rte_mbuf *m, uint16_t vlan_tag) len = tx_q->len; m->ol_flags = PKT_TX_VLAN_PKT; - /*FIXME: offset*/ + m->data_len += offset; + m->pkt_len += offset; + m->vlan_tci = vlan_tag; tx_q->m_table[len] = m;