bpf.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jesper Dangaard Brouer <jbrouer@redhat.com>
To: Tariq Toukan <ttoukan.linux@gmail.com>,
	Daniel Borkmann <borkmann@iogearbox.net>,
	Alexei Starovoitov <ast@kernel.org>,
	Andrii Nakryiko <andrii.nakryiko@gmail.com>,
	bpf@vger.kernel.org
Cc: brouer@redhat.com, gal@nvidia.com, lorenzo@kernel.org,
	netdev@vger.kernel.org, andrew.gospodarek@broadcom.com,
	Tariq Toukan <tariqt@nvidia.com>
Subject: Re: [PATCH bpf-next] samples/bpf: xdp1 and xdp2 reduce XDPBUFSIZE to 60
Date: Wed, 31 May 2023 11:38:47 +0200	[thread overview]
Message-ID: <0ba065fb-bb19-1319-b77a-065077e11011@redhat.com> (raw)
In-Reply-To: <948629b6-8607-9797-8897-7d3e0535fa7b@gmail.com>



On 31/05/2023 09.23, Tariq Toukan wrote:
> 
> 
> On 30/05/2023 17:30, Jesper Dangaard Brouer wrote:
>> Default samples/pktgen scripts send 60 byte packets as hardware
>> adds 4-bytes FCS checksum, which fulfils minimum Ethernet 64 bytes
>> frame size.
>>
>> XDP layer will not necessary have access to the 4-bytes FCS checksum.
>>
>> This leads to bpf_xdp_load_bytes() failing as it tries to copy
>> 64-bytes from an XDP packet that only have 60-bytes available.
>>
>> Fixes: 772251742262 ("samples/bpf: fixup some tools to be able to 
>> support xdp multibuffer")
>> Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
>> ---
>>   samples/bpf/xdp1_kern.c |    2 +-
>>   samples/bpf/xdp2_kern.c |    2 +-
>>   2 files changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/samples/bpf/xdp1_kern.c b/samples/bpf/xdp1_kern.c
>> index 0a5c704badd0..d91f27cbcfa9 100644
>> --- a/samples/bpf/xdp1_kern.c
>> +++ b/samples/bpf/xdp1_kern.c
>> @@ -39,7 +39,7 @@ static int parse_ipv6(void *data, u64 nh_off, void 
>> *data_end)
>>       return ip6h->nexthdr;
>>   }
>> -#define XDPBUFSIZE    64
>> +#define XDPBUFSIZE    60
> 
> Perf with the presence of load/store copies is far from being optimal..
> Still, do we care if memcpy of 60 bytes performs worse than 64 (full 
> cacheline)?

In this case that statement isn't true. I tested it and the
60 bytes define performs (slightly) better than 64 bytes one.

> Maybe not really in this case, looking forward for the replacement of 
> memcpy with the proper dyncptr API.
>

This is a fix to allow sending minimum sized Ethernet frames to these 
samples.

Looking forward, yes once dynptr is ready, we should update these
samples to use that, because the use of bpf_xdp_load_bytes() have a
surprisingly large overhead. But we cannot leave these samples broken in
the mean while.


> Other than that:
> Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
> 

Thanks

> 
>>   SEC("xdp.frags")
>>   int xdp_prog1(struct xdp_md *ctx)
>>   {
>> diff --git a/samples/bpf/xdp2_kern.c b/samples/bpf/xdp2_kern.c
>> index 67804ecf7ce3..8bca674451ed 100644
>> --- a/samples/bpf/xdp2_kern.c
>> +++ b/samples/bpf/xdp2_kern.c
>> @@ -55,7 +55,7 @@ static int parse_ipv6(void *data, u64 nh_off, void 
>> *data_end)
>>       return ip6h->nexthdr;
>>   }
>> -#define XDPBUFSIZE    64
>> +#define XDPBUFSIZE    60
>>   SEC("xdp.frags")
>>   int xdp_prog1(struct xdp_md *ctx)
>>   {
>>
>>
> 


  reply	other threads:[~2023-05-31  9:38 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-30 14:30 [PATCH bpf-next] samples/bpf: xdp1 and xdp2 reduce XDPBUFSIZE to 60 Jesper Dangaard Brouer
2023-05-31  7:23 ` Tariq Toukan
2023-05-31  9:38   ` Jesper Dangaard Brouer [this message]
2023-05-31 11:10 ` patchwork-bot+netdevbpf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=0ba065fb-bb19-1319-b77a-065077e11011@redhat.com \
    --to=jbrouer@redhat.com \
    --cc=andrew.gospodarek@broadcom.com \
    --cc=andrii.nakryiko@gmail.com \
    --cc=ast@kernel.org \
    --cc=borkmann@iogearbox.net \
    --cc=bpf@vger.kernel.org \
    --cc=brouer@redhat.com \
    --cc=gal@nvidia.com \
    --cc=lorenzo@kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=tariqt@nvidia.com \
    --cc=ttoukan.linux@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).