[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20220422102257.rqy2zd6liqwu7y7x@skbuf>
Date: Fri, 22 Apr 2022 13:22:57 +0300
From: Vladimir Oltean <olteanv@...il.com>
To: Vladimir Oltean <vladimir.oltean@....com>
Cc: netdev@...r.kernel.org, Jakub Kicinski <kuba@...nel.org>,
"David S. Miller" <davem@...emloft.net>,
Paolo Abeni <pabeni@...hat.com>,
Florian Fainelli <f.fainelli@...il.com>,
Andrew Lunn <andrew@...n.ch>,
Vivien Didelot <vivien.didelot@...il.com>,
Claudiu Manoil <claudiu.manoil@....com>,
Alexandre Belloni <alexandre.belloni@...tlin.com>,
UNGLinuxDriver@...rochip.com,
Tobias Waldekranz <tobias@...dekranz.com>,
Mattias Forsblad <mattias.forsblad@...il.com>,
Roopa Prabhu <roopa@...dia.com>,
Nikolay Aleksandrov <razor@...ckwall.org>,
Jiri Pirko <jiri@...dia.com>, Ido Schimmel <idosch@...dia.com>,
Joachim Wiberg <troglobit@...il.com>,
Marek BehĂșn <kabel@...nel.org>,
Ansuel Smith <ansuelsmth@...il.com>,
DENG Qingfang <dqfext@...il.com>,
Kurt Kanzenbach <kurt@...utronix.de>
Subject: Re: [PATCH net-next 0/8] DSA selftests
On Fri, Apr 22, 2022 at 01:14:56PM +0300, Vladimir Oltean wrote:
> When working on complex new features or reworks it becomes increasingly
> difficult to ensure there aren't regressions being introduced, and
> therefore it would be nice if we could go over the functionality we
> already have and write some tests for it.
>
> Verbally I know from Tobias Waldekranz that he has been working on some
> selftests for DSA, yet I have never seen them, so here I am adding some
> tests I have written which have been useful for me. The list is by no
> means complete (it only covers elementary functionality), but it's still
> good to have as a starting point. I also borrowed some refactoring
> changes from Joachim Wiberg that he submitted for his "net: bridge:
> forwarding of unknown IPv4/IPv6/MAC BUM traffic" series, but not the
> entirety of his selftests. I now think that his selftests have some
> overlap with bridge_vlan_unaware.sh and bridge_vlan_aware.sh and they
> should be more tightly integrated with each other - yet I didn't do that
> either :). Another issue I had with his selftests was that they jumped
> straight ahead to configure brport flags on br0 (a radical new idea
> still at RFC status) while we have bigger problems, and we don't have
> nearly enough coverage for the *existing* functionality.
>
> One idea introduced here which I haven't seen before is the symlinking
> of relevant forwarding selftests to the selftests/drivers/net/<my-driver>/
> folder, plus a forwarding.config file. I think there's some value in
> having things structured this way, since the forwarding dir has so many
> selftests that aren't relevant to DSA that it is a bit difficult to find
> the ones that are.
>
> While searching for applications that I could use for multicast testing
> (not my domain of interest/knowledge really), I found Joachim Wiberg's
> mtools, mcjoin and omping, and I tried them all with various degrees of
> success. In particular, I was going to use mcjoin, but I faced some
> issues getting IPv6 multicast traffic to work in a VRF, and I bothered
> David Ahern about it here:
> https://lore.kernel.org/netdev/97eaffb8-2125-834e-641f-c99c097b6ee2@gmail.com/t/
> It seems that the problem is that this application should use
> SO_BINDTODEVICE, yet it doesn't.
>
> So I ended up patching the bare-bones mtools (msend, mreceive) forked by
> Joachim from the University of Virginia's Multimedia Networks Group to
> include IPv6 support, and to use SO_BINDTODEVICE. This is what I'm using
> now for IPv6.
>
> Note that mausezahn doesn't appear to do a particularly good job of
> supporting IPv6 really, and I needed a program to emit the actual
> IP_ADD_MEMBERSHIP calls, for dev_mc_add(), so I could test RX filtering.
> Crafting the IGMP/MLD reports by hand doesn't really do the trick.
> While extremely bare-bones, the mreceive application now seems to do
> what I need it to.
>
> Feedback appreciated, it is very likely that I could have done things in
> a better way.
>
> Joachim Wiberg (2):
> selftests: forwarding: add TCPDUMP_EXTRA_FLAGS to lib.sh
> selftests: forwarding: multiple instances in tcpdump helper
>
> Vladimir Oltean (6):
> selftests: forwarding: add option to run tests with stable MAC
> addresses
> selftests: forwarding: add helpers for IP multicast group joins/leaves
> selftests: forwarding: add helper for retrieving IPv6 link-local
> address of interface
> selftests: forwarding: add a no_forwarding.sh test
> selftests: forwarding: add a test for local_termination.sh
> selftests: drivers: dsa: add a subset of forwarding selftests
>
> .../drivers/net/dsa/bridge_locked_port.sh | 1 +
> .../selftests/drivers/net/dsa/bridge_mdb.sh | 1 +
> .../selftests/drivers/net/dsa/bridge_mld.sh | 1 +
> .../drivers/net/dsa/bridge_vlan_aware.sh | 1 +
> .../drivers/net/dsa/bridge_vlan_mcast.sh | 1 +
> .../drivers/net/dsa/bridge_vlan_unaware.sh | 1 +
> .../drivers/net/dsa/forwarding.config | 2 +
> .../testing/selftests/drivers/net/dsa/lib.sh | 1 +
> .../drivers/net/dsa/local_termination.sh | 1 +
> .../drivers/net/dsa/no_forwarding.sh | 1 +
> .../drivers/net/ocelot/tc_flower_chains.sh | 24 +-
> tools/testing/selftests/net/forwarding/lib.sh | 112 ++++++-
> .../net/forwarding/local_termination.sh | 299 ++++++++++++++++++
> .../selftests/net/forwarding/no_forwarding.sh | 261 +++++++++++++++
> 14 files changed, 687 insertions(+), 20 deletions(-)
> create mode 120000 tools/testing/selftests/drivers/net/dsa/bridge_locked_port.sh
> create mode 120000 tools/testing/selftests/drivers/net/dsa/bridge_mdb.sh
> create mode 120000 tools/testing/selftests/drivers/net/dsa/bridge_mld.sh
> create mode 120000 tools/testing/selftests/drivers/net/dsa/bridge_vlan_aware.sh
> create mode 120000 tools/testing/selftests/drivers/net/dsa/bridge_vlan_mcast.sh
> create mode 120000 tools/testing/selftests/drivers/net/dsa/bridge_vlan_unaware.sh
> create mode 100644 tools/testing/selftests/drivers/net/dsa/forwarding.config
> create mode 120000 tools/testing/selftests/drivers/net/dsa/lib.sh
> create mode 120000 tools/testing/selftests/drivers/net/dsa/local_termination.sh
> create mode 120000 tools/testing/selftests/drivers/net/dsa/no_forwarding.sh
> mode change 100644 => 100755 tools/testing/selftests/net/forwarding/lib.sh
> create mode 100755 tools/testing/selftests/net/forwarding/local_termination.sh
> create mode 100755 tools/testing/selftests/net/forwarding/no_forwarding.sh
>
> --
> 2.25.1
>
Sorry again, now I've really fixed all the places from which I could
have possibly copy-pasted Nikolay's dead NVIDIA email address.
It shouldn't happen again next time.
For those who consider replying, if you don't forget, maybe you can also
replace Nikolay's address in Cc: here to avoid getting a bounce-back
email from NVIDIA.
Sorry!
Powered by blists - more mailing lists