net: mscc: ocelot: restrict tc-trap actions to VCAP IS2 lookup 0
authorVladimir Oltean <vladimir.oltean@nxp.com>
Wed, 4 May 2022 23:55:02 +0000 (02:55 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 18 May 2022 08:26:48 +0000 (10:26 +0200)
commite4a3386221d219ac0d75e0f3743a71a5e9f447fd
treea4a6db8557d0e1d7f012514ec26bb2e83b481dd0
parentceffde8c6e1d680098a03495d8be5e2a0b42703f
net: mscc: ocelot: restrict tc-trap actions to VCAP IS2 lookup 0

[ Upstream commit 477d2b91623e682e9a8126ea92acb8f684969cc7 ]

Once the CPU port was added to the destination port mask of a packet, it
can never be cleared, so even packets marked as dropped by the MASK_MODE
of a VCAP IS2 filter will still reach it. This is why we need the
OCELOT_POLICER_DISCARD to "kill dropped packets dead" and make software
stop seeing them.

We disallow policer rules from being put on any other chain than the one
for the first lookup, but we don't do this for "drop" rules, although we
should. This change is merely ascertaining that the rules dont't
(completely) work and letting the user know.

The blamed commit is the one that introduced the multi-chain architecture
in ocelot. Prior to that, we should have always offloaded the filters to
VCAP IS2 lookup 0, where they did work.

Fixes: 1397a2eb52e2 ("net: mscc: ocelot: create TCAM skeleton from tc filter chains")
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/ethernet/mscc/ocelot_flower.c