From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ori Kam Subject: [PATCH] net/mlx5: fix number of segment calculation Date: Thu, 9 Nov 2017 18:04:32 +0200 Message-ID: <1510243472-24872-1-git-send-email-orika@mellanox.com> Mime-Version: 1.0 Content-Type: text/plain Cc: dev@dpdk.org, orika@mellanox.com, stable@dpdk.org To: adrien.mazarguil@6wind.com, nelio.laranjeiro@6wind.com, yskoh@mellanox.com Return-path: List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" The CRC size should be taken into consideration when computing the number of mbuf segments for packet on the receive path. Large packets can be dropped due to extra CRC length. Fixes: a1366b1a2be3 ("net/mlx5: add reference counter on DPDK Rx queues") Cc: stable@dpdk.org Cc: nelio.laranjeiro@6wind.com Signed-off-by: Ori Kam --- drivers/net/mlx5/mlx5_rxq.c | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c index 6b29aae..701925b 100644 --- a/drivers/net/mlx5/mlx5_rxq.c +++ b/drivers/net/mlx5/mlx5_rxq.c @@ -887,6 +887,8 @@ struct mlx5_rxq_ctrl* const uint16_t desc_n = desc + priv->rx_vec_en * MLX5_VPMD_DESCS_PER_LOOP; unsigned int mb_len = rte_pktmbuf_data_room_size(mp); + uint8_t crc_size = + !!(dev->data->dev_conf.rxmode.hw_strip_crc == 0) << 2; tmpl = rte_calloc_socket("RXQ", 1, sizeof(*tmpl) + @@ -900,12 +902,13 @@ struct mlx5_rxq_ctrl* /* Enable scattered packets support for this queue if necessary. */ assert(mb_len >= RTE_PKTMBUF_HEADROOM); if (dev->data->dev_conf.rxmode.max_rx_pkt_len <= - (mb_len - RTE_PKTMBUF_HEADROOM)) { + (mb_len - RTE_PKTMBUF_HEADROOM - crc_size)) { tmpl->rxq.sges_n = 0; } else if (dev->data->dev_conf.rxmode.enable_scatter) { unsigned int size = RTE_PKTMBUF_HEADROOM + - dev->data->dev_conf.rxmode.max_rx_pkt_len; + dev->data->dev_conf.rxmode.max_rx_pkt_len + + crc_size; unsigned int sges_n; /* -- 1.7.1