The shift left operation "pkt->vlan_tci << 16" gets vlan_tci extended to signed type and may cause invalid descriptor. Also the same issue for the "data_len" field. This patch fixes it by casting them to uint64_t.
Fixes: 21f13c541eb0 ("fm10k: add vector Tx") Cc: sta...@dpdk.org Signed-off-by: Xiao Wang <xiao.w.w...@intel.com> --- drivers/net/fm10k/fm10k_rxtx_vec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/fm10k/fm10k_rxtx_vec.c b/drivers/net/fm10k/fm10k_rxtx_vec.c index 96b46a2bd..788e2484a 100644 --- a/drivers/net/fm10k/fm10k_rxtx_vec.c +++ b/drivers/net/fm10k/fm10k_rxtx_vec.c @@ -711,7 +711,7 @@ vtx1(volatile struct fm10k_tx_desc *txdp, struct rte_mbuf *pkt, uint64_t flags) { __m128i descriptor = _mm_set_epi64x(flags << 56 | - pkt->vlan_tci << 16 | pkt->data_len, + (uint64_t)pkt->vlan_tci << 16 | (uint64_t)pkt->data_len, MBUF_DMA_ADDR(pkt)); _mm_store_si128((__m128i *)txdp, descriptor); } -- 2.15.1