linux/tools/testing
Vladimir Oltean 954f46d2f0 selftests: forwarding: add Per-Stream Filtering and Policing test for Ocelot
The Felix VSC9959 switch in NXP LS1028A supports the tc-gate action
which enforced time-based access control per stream. A stream as seen by
this switch is identified by {MAC DA, VID}.

We use the standard forwarding selftest topology with 2 host interfaces
and 2 switch interfaces. The host ports must require timestamping non-IP
packets and supporting tc-etf offload, for isochron to work. The
isochron program monitors network sync status (ptp4l, phc2sys) and
deterministically transmits packets to the switch such that the tc-gate
action either (a) always accepts them based on its schedule, or
(b) always drops them.

I tried to keep as much of the logic that isn't specific to the NXP
LS1028A in a new tsn_lib.sh, for future reuse. This covers
synchronization using ptp4l and phc2sys, and isochron.

The cycle-time chosen for this selftest isn't particularly impressive
(and the focus is the functionality of the switch), but I didn't really
know what to do better, considering that it will mostly be run during
debugging sessions, various kernel bloatware would be enabled, like
lockdep, KASAN, etc, and we certainly can't run any races with those on.

I tried to look through the kselftest framework for other real time
applications and didn't really find any, so I'm not sure how better to
prepare the environment in case we want to go for a lower cycle time.
At the moment, the only thing the selftest is ensuring is that dynamic
frequency scaling is disabled on the CPU that isochron runs on. It would
probably be useful to have a blacklist of kernel config options (checked
through zcat /proc/config.gz) and some cyclictest scripts to run
beforehand, but I saw none of those.

Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Reviewed-by: Kurt Kanzenbach <kurt@linutronix.de>
Link: https://lore.kernel.org/r/20220501112953.3298973-1-vladimir.oltean@nxp.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2022-05-02 15:04:01 -07:00
..
cxl tools/testing/cxl: Add a physical_node link 2022-02-08 22:57:33 -08:00
fault-injection
ktest bootconfig/tracing/ktest: Update ktest example for boot-time tracing 2021-08-16 11:39:51 -04:00
kunit linux-kselftest-kunit-5.18-rc1 2022-03-23 12:56:39 -07:00
memblock memblock tests: Add TODO and README files 2022-03-10 12:19:44 +02:00
nvdimm tools/testing/nvdimm: Fix security_init() symbol collision 2022-04-08 12:59:25 -07:00
radix-tree tools: Add kmem_cache_alloc_lru() 2022-04-22 14:24:28 -04:00
scatterlist tools/testing/scatterlist: add missing defines 2022-01-30 09:56:58 +02:00
selftests selftests: forwarding: add Per-Stream Filtering and Policing test for Ocelot 2022-05-02 15:04:01 -07:00
vsock af_vsock: SOCK_SEQPACKET broken buffer test 2022-03-18 15:13:19 +00:00