]> git.baikalelectronics.ru Git - kernel.git/commit
net: mscc: ocelot: fix all IP traffic getting trapped to CPU with PTP over IP
authorVladimir Oltean <vladimir.oltean@nxp.com>
Fri, 4 Feb 2022 23:03:21 +0000 (01:03 +0200)
committerDavid S. Miller <davem@davemloft.net>
Sat, 5 Feb 2022 15:27:01 +0000 (15:27 +0000)
commitf9d7fa94ec65438af00df0c0460ab2ac9586684c
tree5dc961abbafe56d5db8c514449c35e3b07b5239d
parent9ccd97e5dc35080f16da5eb6b03cbf8a7d7f9e60
net: mscc: ocelot: fix all IP traffic getting trapped to CPU with PTP over IP

The filters for the PTP trap keys are incorrectly configured, in the
sense that is2_entry_set() only looks at trap->key.ipv4.dport or
trap->key.ipv6.dport if trap->key.ipv4.proto or trap->key.ipv6.proto is
set to IPPROTO_TCP or IPPROTO_UDP.

But we don't do that, so is2_entry_set() goes through the "else" branch
of the IP protocol check, and ends up installing a rule for "Any IP
protocol match" (because msk is also 0). The UDP port is ignored.

This means that when we run "ptp4l -i swp0 -4", all IP traffic is
trapped to the CPU, which hinders bridging.

Fix this by specifying the IP protocol in the VCAP IS2 filters for PTP
over UDP.

Fixes: 53d36c1d30aa ("net: mscc: ocelot: set up traps for PTP packets")
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mscc/ocelot.c