lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <Z6UIqPt+Rkpo5E+M@boxer>
Date: Thu, 6 Feb 2025 20:08:24 +0100
From: Maciej Fijalkowski <maciej.fijalkowski@...el.com>
To: Song Yoong Siang <yoong.siang.song@...el.com>
CC: "David S . Miller" <davem@...emloft.net>, Eric Dumazet
	<edumazet@...gle.com>, Jakub Kicinski <kuba@...nel.org>, Paolo Abeni
	<pabeni@...hat.com>, Simon Horman <horms@...nel.org>, Willem de Bruijn
	<willemb@...gle.com>, Florian Bezdeka <florian.bezdeka@...mens.com>, "Donald
 Hunter" <donald.hunter@...il.com>, Jonathan Corbet <corbet@....net>, "Bjorn
 Topel" <bjorn@...nel.org>, Magnus Karlsson <magnus.karlsson@...el.com>,
	Jonathan Lemon <jonathan.lemon@...il.com>, Andrew Lunn
	<andrew+netdev@...n.ch>, Alexei Starovoitov <ast@...nel.org>, Daniel Borkmann
	<daniel@...earbox.net>, Jesper Dangaard Brouer <hawk@...nel.org>, "John
 Fastabend" <john.fastabend@...il.com>, Joe Damato <jdamato@...tly.com>,
	Stanislav Fomichev <sdf@...ichev.me>, Xuan Zhuo <xuanzhuo@...ux.alibaba.com>,
	Mina Almasry <almasrymina@...gle.com>, Daniel Jurgens <danielj@...dia.com>,
	Andrii Nakryiko <andrii@...nel.org>, Eduard Zingerman <eddyz87@...il.com>,
	Mykola Lysenko <mykolal@...com>, Martin KaFai Lau <martin.lau@...ux.dev>,
	Song Liu <song@...nel.org>, Yonghong Song <yonghong.song@...ux.dev>, KP Singh
	<kpsingh@...nel.org>, Hao Luo <haoluo@...gle.com>, Jiri Olsa
	<jolsa@...nel.org>, Shuah Khan <shuah@...nel.org>, Alexandre Torgue
	<alexandre.torgue@...s.st.com>, Jose Abreu <joabreu@...opsys.com>, "Maxime
 Coquelin" <mcoquelin.stm32@...il.com>, Tony Nguyen
	<anthony.l.nguyen@...el.com>, Przemek Kitszel <przemyslaw.kitszel@...el.com>,
	Faizal Rahim <faizal.abdul.rahim@...ux.intel.com>, Choong Yong Liang
	<yong.liang.choong@...ux.intel.com>, Bouska Zdenek
	<zdenek.bouska@...mens.com>, <netdev@...r.kernel.org>,
	<linux-kernel@...r.kernel.org>, <linux-doc@...r.kernel.org>,
	<bpf@...r.kernel.org>, <linux-kselftest@...r.kernel.org>,
	<linux-stm32@...md-mailman.stormreply.com>,
	<linux-arm-kernel@...ts.infradead.org>, <intel-wired-lan@...ts.osuosl.org>,
	<xdp-hints@...-project.net>
Subject: Re: [PATCH bpf-next v9 3/5] net: stmmac: Add launch time support to
 XDP ZC

On Thu, Feb 06, 2025 at 02:04:06PM +0800, Song Yoong Siang wrote:
> Enable launch time (Time-Based Scheduling) support for XDP zero copy via
> the XDP Tx metadata framework.
> 
> This patch has been tested with tools/testing/selftests/bpf/xdp_hw_metadata
> on Intel Tiger Lake platform. Below are the test steps and result.
> 
> Test 1: Send a single packet with the launch time set to 1 s in the future.
> 
> Test steps:
> 1. On the DUT, start the xdp_hw_metadata selftest application:
>    $ sudo ./xdp_hw_metadata enp0s30f4 -l 1000000000 -L 1
> 
> 2. On the Link Partner, send a UDP packet with VLAN priority 1 to port 9091
>    of the DUT.
> 
> Result:
> When the launch time is set to 1 s in the future, the delta between the
> launch time and the transmit hardware timestamp is 16.963 us, as shown in
> printout of the xdp_hw_metadata application below.
>   0x55b5864717a8: rx_desc[4]->addr=88100 addr=88100 comp_addr=88100 EoP
>   No rx_hash, err=-95
>   HW RX-time:   1734579065767717328 (sec:1734579065.7677)
>                 delta to User RX-time sec:0.0004 (375.624 usec)
>   XDP RX-time:   1734579065768004454 (sec:1734579065.7680)
>                  delta to User RX-time sec:0.0001 (88.498 usec)
>   No rx_vlan_tci or rx_vlan_proto, err=-95
>   0x55b5864717a8: ping-pong with csum=5619 (want 0000)
>                   csum_start=34 csum_offset=6
>   HW RX-time:   1734579065767717328 (sec:1734579065.7677)
>                 delta to HW Launch-time sec:1.0000 (1000000.000 usec)
>   0x55b5864717a8: complete tx idx=4 addr=4018
>   HW Launch-time:   1734579066767717328 (sec:1734579066.7677)
>                     delta to HW TX-complete-time sec:0.0000 (16.963 usec)
>   HW TX-complete-time:   1734579066767734291 (sec:1734579066.7677)
>                          delta to User TX-complete-time sec:0.0001
>                          (130.408 usec)
>   XDP RX-time:   1734579065768004454 (sec:1734579065.7680)
>                  delta to User TX-complete-time sec:0.9999
>                 (999860.245 usec)
>   HW RX-time:   1734579065767717328 (sec:1734579065.7677)
>                 delta to HW TX-complete-time sec:1.0000 (1000016.963 usec)
>   0x55b5864717a8: complete rx idx=132 addr=88100
> 
> Test 2: Send 1000 packets with a 10 ms interval and the launch time set to
>         500 us in the future.
> 
> Test steps:
> 1. On the DUT, start the xdp_hw_metadata selftest application:
>    $ sudo chrt -f 99 ./xdp_hw_metadata enp0s30f4 -l 500000 -L 1 > \
>      /dev/shm/result.log
> 
> 2. On the Link Partner, send 1000 UDP packets with a 10 ms interval and
>    VLAN priority 1 to port 9091 of the DUT.
> 
> Result:
> When the launch time is set to 500 us in the future, the average delta
> between the launch time and the transmit hardware timestamp is 13.854 us,
> as shown in the analysis of /dev/shm/result.log below. The XDP launch time
> works correctly in sending 1000 packets continuously.
>   Min delta: 08.410 us
>   Avr delta: 13.854 us
>   Max delta: 17.076 us
>   Total packets forwarded: 1000
> 
> Reviewed-by: Choong Yong Liang <yong.liang.choong@...ux.intel.com>
> Signed-off-by: Song Yoong Siang <yoong.siang.song@...el.com>

Sorry haven't looked here in previous review approaches :/

> ---
>  drivers/net/ethernet/stmicro/stmmac/stmmac.h      |  2 ++
>  drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 13 +++++++++++++
>  2 files changed, 15 insertions(+)
> 
> diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac.h b/drivers/net/ethernet/stmicro/stmmac/stmmac.h
> index f05cae103d83..925d8b97a42b 100644
> --- a/drivers/net/ethernet/stmicro/stmmac/stmmac.h
> +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac.h
> @@ -106,6 +106,8 @@ struct stmmac_metadata_request {
>  	struct stmmac_priv *priv;
>  	struct dma_desc *tx_desc;
>  	bool *set_ic;
> +	struct dma_edesc *edesc;
> +	int tbs;

wanted to comment you're introducing holes here but set_ic is a ptr:)

>  };
>  
>  struct stmmac_xsk_tx_complete {
> diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> index d04543e5697b..5e5d24924ce7 100644
> --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> @@ -2514,9 +2514,20 @@ static u64 stmmac_xsk_fill_timestamp(void *_priv)
>  	return 0;
>  }
>  
> +static void stmmac_xsk_request_launch_time(u64 launch_time, void *_priv)
> +{
> +	struct stmmac_metadata_request *meta_req = _priv;
> +	struct timespec64 ts = ns_to_timespec64(launch_time);

nit: Apply reverse christmas tree rule here (order the variable
definitions from longest to shortest), but it's not a showstopper I
guess...

> +
> +	if (meta_req->tbs & STMMAC_TBS_EN)
> +		stmmac_set_desc_tbs(meta_req->priv, meta_req->edesc, ts.tv_sec,
> +				    ts.tv_nsec);
> +}
> +
>  static const struct xsk_tx_metadata_ops stmmac_xsk_tx_metadata_ops = {
>  	.tmo_request_timestamp		= stmmac_xsk_request_timestamp,
>  	.tmo_fill_timestamp		= stmmac_xsk_fill_timestamp,
> +	.tmo_request_launch_time	= stmmac_xsk_request_launch_time,
>  };
>  
>  static bool stmmac_xdp_xmit_zc(struct stmmac_priv *priv, u32 queue, u32 budget)
> @@ -2600,6 +2611,8 @@ static bool stmmac_xdp_xmit_zc(struct stmmac_priv *priv, u32 queue, u32 budget)
>  		meta_req.priv = priv;
>  		meta_req.tx_desc = tx_desc;
>  		meta_req.set_ic = &set_ic;
> +		meta_req.tbs = tx_q->tbs;
> +		meta_req.edesc = &tx_q->dma_entx[entry];
>  		xsk_tx_metadata_request(meta, &stmmac_xsk_tx_metadata_ops,
>  					&meta_req);
>  		if (set_ic) {
> -- 
> 2.34.1
> 

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ