On 01/09, Song, Yoong Siang wrote:
On Wednesday, January 8, 2025 1:08 AM, Stanislav Fomichev stfomichev@gmail.com wrote:
On 01/06, Song Yoong Siang wrote:
Enable launch time (Time-Based Scheduling) support to XDP zero copy via XDP Tx metadata framework.
This patch is tested with tools/testing/selftests/bpf/xdp_hw_metadata on Intel Tiger Lake platform. Below are the test steps and result.
Test Steps:
Add mqprio qdisc: $ sudo tc qdisc add dev enp0s30f4 handle 8001: parent root mqprio num_tc 4 map 0 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 queues 1@0 1@1 1@2 1@3 hw 0
Enable launch time hardware offload on hardware queue 1: $ sudo tc qdisc replace dev enp0s30f4 parent 8001:2 etf offload clockid CLOCK_TAI delta 500000
Add an ingress qdisc: $ sudo tc qdisc add dev enp0s30f4 ingress
Add a flower filter to route incoming packet with VLAN priority 1 into hardware queue 1: $ sudo tc filter add dev enp0s30f4 parent ffff: protocol 802.1Q flower vlan_prio 1 hw_tc 1
Enable VLAN tag stripping: $ sudo ethtool -K enp0s30f4 rxvlan on
Start xdp_hw_metadata selftest application: $ sudo ./xdp_hw_metadata enp0s30f4 -l 1000000000
Send an UDP packet with VLAN priority 1 to port 9091 of DUT.
Tangential: I wonder whether we can add the setup steps to the xdp_hw_metadata tool? It is useful to have one command to run that takes care of all the details. Same way it already enables HW tstamping..
Or, if not the full setup, some kind of detection we can signal to the user that some things might be missing?
Sure. I can try to add the setup steps into xdp_hw_metadata by using ioctl() function. However, there are some device specific command, like the number of queue, their priority, how they route the incoming packet, etc. I will try to find out a common way that can work for most of the devices, at least work for both igc and stmmac.
We can query the number of queues (and everything else you need) in the tool, similar to what we do in testing/selftests/drivers/net/hw/ncdevmem.c, take a look. But if it's too complicated, maybe at least print these commands on startup and tell the user to run them.
The reason I'm asking is that I hope that we eventually can run this tool from (automatic) testing/selftests/drivers/net/hw testsuite to make sure the metadata stuff keeps working.