[PATCH net-next 0/7] stmmac: add XDP ZC support
Ong Boon Leong
boon.leong.ong at intel.com
Mon Apr 12 16:41:23 BST 2021
Hi,
This is the v1 patch series to add XDP ZC support to stmmac driver and
the changes are as listed in below summary:-
1-4/7: Refactor RX & TX buffer allocation and initialization to prepare
stmmac driver for XSK RX & TX pool enabling and disabling.
5/7: Refactor stmmac_xdp_run_prog() for XDP ZC use which does not need
to check for XDP program loaded.
6-7/7: XDP ZC RX and TX enabling.
The above patch series have been tested using xdpsock app in samples/bpf
directory on Intel mGbE controller. The DUT receives burst traffic
packets generated by using pktgen_sample03_burst_single_flow.sh in
samples/pktgen.
########################################################################
==========
A) RX-Only
==========
root at intel-corei7-64:~ $ ./xdpsock -i eth0 -r -S
sock0 at eth0:0 rxdrop xdp-skb
pps pkts 1.00
rx 112161 12229475
tx 0 0
sock0 at eth0:0 rxdrop xdp-skb
pps pkts 1.00
rx 112280 12341779
tx 0 0
sock0 at eth0:0 rxdrop xdp-skb
pps pkts 1.00
rx 112358 12454155
tx 0 0
====================================================
root at intel-corei7-64:~ $ ./xdpsock -i eth0 -r -N -c
sock0 at eth0:0 rxdrop xdp-drv
pps pkts 1.00
rx 681082 2616133
tx 0 0
sock0 at eth0:0 rxdrop xdp-drv
pps pkts 1.00
rx 681205 3297415
tx 0 0
sock0 at eth0:0 rxdrop xdp-drv
pps pkts 1.00
rx 681386 3978873
tx 0 0
====================================================
root at intel-corei7-64:~ $ ./xdpsock -i eth0 -r -z
sock0 at eth0:0 rxdrop xdp-drv
pps pkts 1.00
rx 703915 19579779
tx 0 0
sock0 at eth0:0 rxdrop xdp-drv
pps pkts 1.00
rx 703766 20283768
tx 0 0
sock0 at eth0:0 rxdrop xdp-drv
pps pkts 1.00
rx 703383 20987229
tx 0 0
==========
B) TX-Only
==========
root at intel-corei7-64:~ $ ./xdpsock -i eth0 -t -S
sock0 at eth0:0 txonly xdp-skb
pps pkts 1.00
rx 0 0
tx 140269 4326720
sock0 at eth0:0 txonly xdp-skb
pps pkts 1.00
rx 0 0
tx 140514 4467264
sock0 at eth0:0 txonly xdp-skb
pps pkts 1.00
rx 0 0
tx 140009 4607296
====================================================
root at intel-corei7-64:~ $ ./xdpsock -i eth0 -t -N -c
sock0 at eth0:0 txonly xdp-drv
pps pkts 1.00
rx 0 0
tx 138222 3108160
sock0 at eth0:0 txonly xdp-drv
pps pkts 1.00
rx 0 0
tx 139629 3247872
sock0 at eth0:0 txonly xdp-drv
pps pkts 1.00
rx 0 0
tx 139821 3387712
====================================================
root at intel-corei7-64:~ $ ./xdpsock -i eth0 -t -z
sock0 at eth0:0 txonly xdp-drv
pps pkts 1.00
rx 0 0
tx 447382 13390848
sock0 at eth0:0 txonly xdp-drv
pps pkts 1.00
rx 0 0
tx 447384 13838272
sock0 at eth0:0 txonly xdp-drv
pps pkts 1.00
rx 0 0
tx 447384 14285696
================
C) L2 Forwarding
================
root at intel-corei7-64:~ $ ./xdpsock -i eth0 -l -S
sock0 at eth0:0 l2fwd xdp-skb
pps pkts 1.00
rx 85021 7363434
tx 85021 7363434
sock0 at eth0:0 l2fwd xdp-skb
pps pkts 1.00
rx 85003 7448446
tx 85003 7448446
sock0 at eth0:0 l2fwd xdp-skb
pps pkts 1.00
rx 84946 7533403
tx 84946 7533403
====================================================
root at intel-corei7-64:~ $ ./xdpsock -i eth0 -l -N -c
sock0 at eth0:0 l2fwd xdp-drv
pps pkts 1.00
rx 132136 1092673
tx 132072 1092609
sock0 at eth0:0 l2fwd xdp-drv
pps pkts 1.00
rx 132428 1225118
tx 132428 1225054
sock0 at eth0:0 l2fwd xdp-drv
pps pkts 1.00
rx 132623 1357757
tx 132623 1357693
====================================================
root at intel-corei7-64:~ $ ./xdpsock -i eth0 -l -z
sock0 at eth0:0 l2fwd xdp-drv
pps pkts 1.00
rx 468476 43619530
tx 468476 43619466
sock0 at eth0:0 l2fwd xdp-drv
pps pkts 1.00
rx 468633 44088218
tx 468633 44088154
sock0 at eth0:0 l2fwd xdp-drv
pps pkts 1.00
rx 468439 44556775
tx 468439 44556711
########################################################################
Based on the results obtained from above using xdpsock test cases, the
result looks promising. It will be great if community can help to review
and test the above patch series on your respective platform and provide
me feedback for any improvement.
Thank you very much,
Boon Leong
Ong Boon Leong (7):
net: stmmac: rearrange RX buffer allocation and free functions
net: stmmac: introduce dma_recycle_rx_skbufs for
stmmac_reinit_rx_buffers
net: stmmac: refactor stmmac_init_rx_buffers for
stmmac_reinit_rx_buffers
net: stmmac: rearrange RX and TX desc init into per-queue basis
net: stmmac: Refactor __stmmac_xdp_run_prog for XDP ZC
net: stmmac: Enable RX via AF_XDP zero-copy
net: stmmac: Add TX via XDP zero-copy socket
drivers/net/ethernet/stmicro/stmmac/stmmac.h | 24 +-
.../net/ethernet/stmicro/stmmac/stmmac_main.c | 1698 +++++++++++++----
.../net/ethernet/stmicro/stmmac/stmmac_xdp.c | 94 +
.../net/ethernet/stmicro/stmmac/stmmac_xdp.h | 3 +
4 files changed, 1396 insertions(+), 423 deletions(-)
--
2.25.1
More information about the linux-arm-kernel
mailing list