[PATCH] net/tap: do not include l2 header in gso size when compared with mtu

Ophir Munk ophirmu at nvidia.com
Tue May 24 16:01:06 CEST 2022


Hi all,

Please note that max size is calculated in the same function (drivers/net/tap/rte_eth_tap.c) as:
 max_size = *txq->mtu + (RTE_ETHER_HDR_LEN + RTE_ETHER_CRC_LEN + 4);

Since tso_setgsz should not exceed the max packet size - the desired update should be:
                      tso_segsz > max_size

rather than the suggested one:

                      tso_segsz > *txq->mtu + mbuf_in->l2_len)

Regards,
Ophir

> -----Original Message-----
> From: Ferruh Yigit <ferruh.yigit at amd.com>
> Sent: Saturday, May 21, 2022 1:08 AM
> To: Harold Huang <baymaxhuang at gmail.com>; dev at dpdk.org;
> jiayu.hu at intel.com; Ophir Munk <ophirmu at nvidia.com>; Raslan Darawsheh
> <rasland at nvidia.com>
> Cc: stable at dpdk.org; Keith Wiles <keith.wiles at intel.com>
> Subject: Re: [PATCH] net/tap: do not include l2 header in gso size when
> compared with mtu
> 
> On 3/8/2022 2:35 PM, Harold Huang wrote:
> > On Mon, Feb 28, 2022 at 4:27 PM Harold Huang
> <baymaxhuang at gmail.com> wrote:
> >>
> >> The gso size is calculated with all of the headers and payload. As a
> >> result, the l2 header should not be included when comparing gso size
> >> with mtu.
> >>
> >> Fixes: 050316a88313 ("net/tap: support TSO (TCP Segment Offload)")
> >> Cc: stable at dpdk.org
> >> Signed-off-by: Harold Huang <baymaxhuang at gmail.com>
> >> ---
> >>   drivers/net/tap/rte_eth_tap.c | 2 +-
> >>   1 file changed, 1 insertion(+), 1 deletion(-)
> >>
> >> diff --git a/drivers/net/tap/rte_eth_tap.c
> >> b/drivers/net/tap/rte_eth_tap.c index f1b48cae82..2b561d232c 100644
> >> --- a/drivers/net/tap/rte_eth_tap.c
> >> +++ b/drivers/net/tap/rte_eth_tap.c
> >> @@ -731,7 +731,7 @@ pmd_tx_burst(void *queue, struct rte_mbuf
> **bufs, uint16_t nb_pkts)
> >>                                          mbuf_in->l4_len;
> >>                          tso_segsz = mbuf_in->tso_segsz + hdrs_len;
> >>                          if (unlikely(tso_segsz == hdrs_len) ||
> >> -                               tso_segsz > *txq->mtu) {
> >> +                               tso_segsz > *txq->mtu +
> >> + mbuf_in->l2_len) {
> >>                                  txq->stats.errs++;
> >>                                  break;
> >>                          }
> >> --
> >> 2.27.0
> >>
> >
> > Hi, Jiayu,
> >
> > This is the only example in the driver to use GSO. I think it is
> > important for us to calculate a correct GSO size. I see you are the
> > GSO lib maintainer, could you please help review this patch?
> 
> 
> Hi Jiayu, Ophir,
> 
> Can you please review this patch?
> 
> For reference, patchwork link:
> https://patches.dpdk.org/project/dpdk/patch/20220228082724.1646930-1-
> baymaxhuang at gmail.com/
> 
> Thanks,
> ferruh


More information about the stable mailing list