DPDK patches and discussions
 help / color / mirror / Atom feed
* [PATCH] net/tap: do not include l2 header in gso size when compared with mtu
@ 2022-02-28  8:27 Harold Huang
  2022-03-04 16:30 ` Ferruh Yigit
  2022-03-08 14:35 ` Harold Huang
  0 siblings, 2 replies; 6+ messages in thread
From: Harold Huang @ 2022-02-28  8:27 UTC (permalink / raw)
  To: dev; +Cc: ophirmu, Harold Huang, stable, Keith Wiles, Raslan Darawsheh

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@dpdk.org
Signed-off-by: Harold Huang <baymaxhuang@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


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] net/tap: do not include l2 header in gso size when compared with mtu
  2022-02-28  8:27 [PATCH] net/tap: do not include l2 header in gso size when compared with mtu Harold Huang
@ 2022-03-04 16:30 ` Ferruh Yigit
  2022-03-08 14:35 ` Harold Huang
  1 sibling, 0 replies; 6+ messages in thread
From: Ferruh Yigit @ 2022-03-04 16:30 UTC (permalink / raw)
  To: Harold Huang, dev, Ophir Munk, Raslan Darawsheh; +Cc: stable, Keith Wiles

On 2/28/2022 8:27 AM, Harold Huang 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@dpdk.org
> Signed-off-by: Harold Huang <baymaxhuang@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;
>   			}

update emails for Ophir & Raslan.

Hi Ophir, since original code is from you can you please
help on review?

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] net/tap: do not include l2 header in gso size when compared with mtu
  2022-02-28  8:27 [PATCH] net/tap: do not include l2 header in gso size when compared with mtu Harold Huang
  2022-03-04 16:30 ` Ferruh Yigit
@ 2022-03-08 14:35 ` Harold Huang
  2022-05-20 22:08   ` Ferruh Yigit
  2023-10-17 16:47   ` Stephen Hemminger
  1 sibling, 2 replies; 6+ messages in thread
From: Harold Huang @ 2022-03-08 14:35 UTC (permalink / raw)
  To: dev; +Cc: ophirmu, stable, Keith Wiles, Raslan Darawsheh, jiayu.hu

On Mon, Feb 28, 2022 at 4:27 PM Harold Huang <baymaxhuang@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@dpdk.org
> Signed-off-by: Harold Huang <baymaxhuang@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?

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] net/tap: do not include l2 header in gso size when compared with mtu
  2022-03-08 14:35 ` Harold Huang
@ 2022-05-20 22:08   ` Ferruh Yigit
  2022-05-24 14:01     ` Ophir Munk
  2023-10-17 16:47   ` Stephen Hemminger
  1 sibling, 1 reply; 6+ messages in thread
From: Ferruh Yigit @ 2022-05-20 22:08 UTC (permalink / raw)
  To: Harold Huang, dev, jiayu.hu, Ophir Munk, Raslan Darawsheh
  Cc: stable, Keith Wiles

On 3/8/2022 2:35 PM, Harold Huang wrote:
> On Mon, Feb 28, 2022 at 4:27 PM Harold Huang <baymaxhuang@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@dpdk.org
>> Signed-off-by: Harold Huang <baymaxhuang@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@gmail.com/

Thanks,
ferruh

^ permalink raw reply	[flat|nested] 6+ messages in thread

* RE: [PATCH] net/tap: do not include l2 header in gso size when compared with mtu
  2022-05-20 22:08   ` Ferruh Yigit
@ 2022-05-24 14:01     ` Ophir Munk
  0 siblings, 0 replies; 6+ messages in thread
From: Ophir Munk @ 2022-05-24 14:01 UTC (permalink / raw)
  To: Ferruh Yigit, Harold Huang, dev, jiayu.hu, Raslan Darawsheh
  Cc: stable, Keith Wiles, NBU-Contact-Thomas Monjalon (EXTERNAL)

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@amd.com>
> Sent: Saturday, May 21, 2022 1:08 AM
> To: Harold Huang <baymaxhuang@gmail.com>; dev@dpdk.org;
> jiayu.hu@intel.com; Ophir Munk <ophirmu@nvidia.com>; Raslan Darawsheh
> <rasland@nvidia.com>
> Cc: stable@dpdk.org; Keith Wiles <keith.wiles@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@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@dpdk.org
> >> Signed-off-by: Harold Huang <baymaxhuang@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@gmail.com/
> 
> Thanks,
> ferruh

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] net/tap: do not include l2 header in gso size when compared with mtu
  2022-03-08 14:35 ` Harold Huang
  2022-05-20 22:08   ` Ferruh Yigit
@ 2023-10-17 16:47   ` Stephen Hemminger
  1 sibling, 0 replies; 6+ messages in thread
From: Stephen Hemminger @ 2023-10-17 16:47 UTC (permalink / raw)
  To: Harold Huang
  Cc: dev, ophirmu, stable, Keith Wiles, Raslan Darawsheh, jiayu.hu

On Tue, 8 Mar 2022 22:35:18 +0800
Harold Huang <baymaxhuang@gmail.com> wrote:

> On Mon, Feb 28, 2022 at 4:27 PM Harold Huang <baymaxhuang@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@dpdk.org
> > Signed-off-by: Harold Huang <baymaxhuang@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?

See Ophir's comment and address it in new version

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)

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2023-10-17 16:47 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-02-28  8:27 [PATCH] net/tap: do not include l2 header in gso size when compared with mtu Harold Huang
2022-03-04 16:30 ` Ferruh Yigit
2022-03-08 14:35 ` Harold Huang
2022-05-20 22:08   ` Ferruh Yigit
2022-05-24 14:01     ` Ophir Munk
2023-10-17 16:47   ` Stephen Hemminger

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).