From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id E18CBA00C4; Sun, 10 May 2020 11:00:03 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 604F11D50C; Sun, 10 May 2020 11:00:03 +0200 (CEST) Received: from mail-io1-f65.google.com (mail-io1-f65.google.com [209.85.166.65]) by dpdk.org (Postfix) with ESMTP id C91531D506 for ; Sun, 10 May 2020 11:00:02 +0200 (CEST) Received: by mail-io1-f65.google.com with SMTP id j8so6258750iog.13 for ; Sun, 10 May 2020 02:00:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=JO/y3SmS8w7jROkUCAY3R2e5e0wKoyNp9/poXxhLydo=; b=mnbD5azMgrpNxDtHkUtcrvKRlFWh24YEHGu2Tfpb/9sLQQsbMwVr04V0XzpuYLUK/E 37YyBIbRikw3lAN8ttOuXt/F7zumjIjsPOqR03dyD26aUwcqmxJf28LKrIMLaysK6t6I K6cC8FeDBbBSS9qnb5quuMr/0Koa9THXmJIimO7imkSw19hcAGIwSYzx38SmA+oiVUfT oUJTKXkjA7xHNvSqIJ50TKy7BxRfTOpy74MvdZHPbrxkKCsVjHlLyK36T6OBiMuzmh7r 6DvfRBSJifYvUtTnwEPYWZUYIhcqKgUN/PMlcXFsUy5qpE6hk1I4ibcTtLht8Gz6CMvQ Iqsg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=JO/y3SmS8w7jROkUCAY3R2e5e0wKoyNp9/poXxhLydo=; b=ITdCWnRnrZ62dsbDRmxm8wkxiZJwRsFsN7MRt5tx5y4OkDLnFn8lNk2J4QeoNtBK3J 4XtJSBz5XWzMNafnA8mbuLnkpIvad+1Iult6hhSPV5o4D6E6dni8+bCILXgQCRP/ICJ+ 3pPSpC1Yk1zpnq3Ap6TW0W494Htbufa2M8HgCaTXdDA1kKwJkrxn/OG1Re0+nQGAWBGq nY3iViSgnAi1G9GibOUi9mA8lKbZOqLz1BAackruqr/+jcRIAdUif3djiJ4kfy+3wk8y o1aG+1NKNanUIYJhDKvAT8zSYCjmcs+639WvPMH9vtn5mm7SUyqbR6sLNvcgPvxWMM4d 9FLg== X-Gm-Message-State: AGi0PubSgZH9YtArwRgxanL3RInnPmcl8dzOIiFAQn8mwbnCCAh8Nmak CtVjAFwsfi4jWBN+y35pBzkZNmnABzN0YpxiIYE= X-Google-Smtp-Source: APiQypJZtfB3r5i69O46GiPUt055yggkPoMnbidW/nmgcU8fLO1Ljv2MfOkS1UbhkfsZvXXWSvuLFTB/OYGfks3qMS4= X-Received: by 2002:a05:6602:2e0b:: with SMTP id o11mr9895984iow.94.1589101201968; Sun, 10 May 2020 02:00:01 -0700 (PDT) MIME-Version: 1.0 References: <20200505030812.468-1-rmody@marvell.com> In-Reply-To: <20200505030812.468-1-rmody@marvell.com> From: Jerin Jacob Date: Sun, 10 May 2020 14:29:45 +0530 Message-ID: To: Rasesh Mody Cc: dpdk-dev , Jerin Jacob , Ferruh Yigit , GR-Everest-DPDK-Dev , Igor Russkikh Content-Type: text/plain; charset="UTF-8" Subject: Re: [dpdk-dev] [PATCH] net/bnx2x: add Rx desc MTU segment limitation X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On Tue, May 5, 2020 at 8:38 AM Rasesh Mody wrote: > > Add Rx descriptor limit for number of segments per MTU. > PMD doesn't support Jumbo Rx scatter gather hence set 1 segment per > MTU. Some applciations can adjust mbuf_size based on this value. > For others PMD detects the condition where Rx packet length cannot > be held by configured mbuf size and logs the message. > > Signed-off-by: Rasesh Mody > Signed-off-by: Igor Russkikh Applied to dpdk-next-net-mrvl/master. Thanks > --- > doc/guides/nics/bnx2x.rst | 17 +++++++++++++++++ > drivers/net/bnx2x/bnx2x_ethdev.c | 1 + > drivers/net/bnx2x/bnx2x_rxtx.c | 20 ++++++++++++++++++-- > 3 files changed, 36 insertions(+), 2 deletions(-) > > diff --git a/doc/guides/nics/bnx2x.rst b/doc/guides/nics/bnx2x.rst > index 67d765af8..ab90d8ae5 100644 > --- a/doc/guides/nics/bnx2x.rst > +++ b/doc/guides/nics/bnx2x.rst > @@ -108,6 +108,23 @@ Driver compilation and testing > Refer to the document :ref:`compiling and testing a PMD for a NIC ` > for details. > > +Jumbo: Limitation > +----------------- > + > +Rx descriptor limit for number of segments per MTU is set to 1. > +PMD doesn't support Jumbo Rx scatter gather. Some applciations can > +adjust mbuf_size based on this param and max_pkt_len. > + > +For others, PMD detects the condition where Rx packet length cannot > +be held by configured mbuf size and logs the message. > + > +Example output: > + > + .. code-block:: console > + > + [...] > + [bnx2x_recv_pkts:397(04:00.0:dpdk-port-0)] mbuf size 2048 is not enough to hold Rx packet length more than 2046 > + > SR-IOV: Prerequisites and sample Application Notes > -------------------------------------------------- > > diff --git a/drivers/net/bnx2x/bnx2x_ethdev.c b/drivers/net/bnx2x/bnx2x_ethdev.c > index 30588b152..adc3690fc 100644 > --- a/drivers/net/bnx2x/bnx2x_ethdev.c > +++ b/drivers/net/bnx2x/bnx2x_ethdev.c > @@ -533,6 +533,7 @@ bnx2x_dev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info) > > dev_info->rx_desc_lim.nb_max = MAX_RX_AVAIL; > dev_info->rx_desc_lim.nb_min = MIN_RX_SIZE_NONTPA; > + dev_info->rx_desc_lim.nb_mtu_seg_max = 1; > dev_info->tx_desc_lim.nb_max = MAX_TX_AVAIL; > > return 0; > diff --git a/drivers/net/bnx2x/bnx2x_rxtx.c b/drivers/net/bnx2x/bnx2x_rxtx.c > index e201b68db..57e2ce504 100644 > --- a/drivers/net/bnx2x/bnx2x_rxtx.c > +++ b/drivers/net/bnx2x/bnx2x_rxtx.c > @@ -343,8 +343,9 @@ bnx2x_recv_pkts(void *p_rxq, struct rte_mbuf **rx_pkts, uint16_t nb_pkts) > struct rte_mbuf *new_mb; > uint16_t rx_pref; > struct eth_fast_path_rx_cqe *cqe_fp; > - uint16_t len, pad; > + uint16_t len, pad, bd_len, buf_len; > struct rte_mbuf *rx_mb = NULL; > + static bool log_once = true; > > rte_spinlock_lock(&(fp)->rx_mtx); > > @@ -384,6 +385,20 @@ bnx2x_recv_pkts(void *p_rxq, struct rte_mbuf **rx_pkts, uint16_t nb_pkts) > > len = cqe_fp->pkt_len_or_gro_seg_len; > pad = cqe_fp->placement_offset; > + bd_len = cqe_fp->len_on_bd; > + buf_len = rxq->sw_ring[bd_cons]->buf_len; > + > + /* Check for sufficient buffer length */ > + if (unlikely(buf_len < len + (pad + RTE_PKTMBUF_HEADROOM))) { > + if (unlikely(log_once)) { > + PMD_DRV_LOG(ERR, sc, "mbuf size %d is not enough to hold Rx packet length more than %d", > + buf_len - RTE_PKTMBUF_HEADROOM, > + buf_len - > + (pad + RTE_PKTMBUF_HEADROOM)); > + log_once = false; > + } > + goto next_rx; > + } > > new_mb = rte_mbuf_raw_alloc(rxq->mb_pool); > if (unlikely(!new_mb)) { > @@ -408,7 +423,8 @@ bnx2x_recv_pkts(void *p_rxq, struct rte_mbuf **rx_pkts, uint16_t nb_pkts) > rx_mb->data_off = pad + RTE_PKTMBUF_HEADROOM; > rx_mb->nb_segs = 1; > rx_mb->next = NULL; > - rx_mb->pkt_len = rx_mb->data_len = len; > + rx_mb->pkt_len = len; > + rx_mb->data_len = bd_len; > rx_mb->port = rxq->port_id; > rte_prefetch1(rte_pktmbuf_mtod(rx_mb, void *)); > > -- > 2.18.0 >