net/fm10k: fix descriptor filling in vector Tx
Checks
Commit Message
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: stable@dpdk.org
Signed-off-by: Xiao Wang <xiao.w.wang@intel.com>
---
drivers/net/fm10k/fm10k_rxtx_vec.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Comments
> -----Original Message-----
> From: Wang, Xiao W
> Sent: Wednesday, July 3, 2019 10:54 AM
> To: Zhang, Qi Z <qi.z.zhang@intel.com>
> Cc: dev@dpdk.org; Kiejdo, Marek <marek.kiejdo@intel.com>; Wang, Xiao W
> <xiao.w.wang@intel.com>; stable@dpdk.org
> Subject: [PATCH] net/fm10k: fix descriptor filling in vector Tx
>
> 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: stable@dpdk.org
>
> Signed-off-by: Xiao Wang <xiao.w.wang@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
Applied to dpdk-next-net-intel.
Thanks
Qi
@@ -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);
}