From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ouyang Changchun Subject: [PATCH v2] vhost: Fix packet length issue Date: Thu, 30 Oct 2014 22:59:36 +0800 Message-ID: <1414681176-13965-1-git-send-email-changchun.ouyang@intel.com> References: <1414659602-10115-1-git-send-email-changchun.ouyang@intel.com> To: dev-VfR2kkLFssw@public.gmane.org Return-path: In-Reply-To: <1414659602-10115-1-git-send-email-changchun.ouyang-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces-VfR2kkLFssw@public.gmane.org Sender: "dev" 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 --- v2 change: Update data length by plus offset in first segment instead of last segment. v1 change: Update the packet length by plus offset. Use macro to replace constant; examples/vhost/main.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/examples/vhost/main.c b/examples/vhost/main.c index 0566124..9ed48fc 100644 --- a/examples/vhost/main.c +++ b/examples/vhost/main.c @@ -1097,7 +1097,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]; @@ -1121,8 +1127,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; -- 1.8.4.2