Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

phy: mscc: Fix parsing of unicast frames

According to the 1588 standard, it is possible to use both unicast and
multicast frames to send the PTP information. It was noticed that if the
frames were unicast they were not processed by the analyzer meaning that
they were not timestamped. Therefore fix this to match also these
unicast frames.

Fixes: ab2bf9339357 ("net: phy: mscc: 1588 block initialization")
Signed-off-by: Horatiu Vultur <horatiu.vultur@microchip.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Link: https://patch.msgid.link/20250726140307.3039694-1-horatiu.vultur@microchip.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

authored by

Horatiu Vultur and committed by
Jakub Kicinski
6fb5ff63 2da4def0

+2
+1
drivers/net/phy/mscc/mscc_ptp.c
··· 900 900 get_unaligned_be32(ptp_multicast)); 901 901 } else { 902 902 val |= ANA_ETH1_FLOW_ADDR_MATCH2_ANY_MULTICAST; 903 + val |= ANA_ETH1_FLOW_ADDR_MATCH2_ANY_UNICAST; 903 904 vsc85xx_ts_write_csr(phydev, blk, 904 905 MSCC_ANA_ETH1_FLOW_ADDR_MATCH2(0), val); 905 906 vsc85xx_ts_write_csr(phydev, blk,
+1
drivers/net/phy/mscc/mscc_ptp.h
··· 98 98 #define MSCC_ANA_ETH1_FLOW_ADDR_MATCH2(x) (MSCC_ANA_ETH1_FLOW_ENA(x) + 3) 99 99 #define ANA_ETH1_FLOW_ADDR_MATCH2_MASK_MASK GENMASK(22, 20) 100 100 #define ANA_ETH1_FLOW_ADDR_MATCH2_ANY_MULTICAST 0x400000 101 + #define ANA_ETH1_FLOW_ADDR_MATCH2_ANY_UNICAST 0x200000 101 102 #define ANA_ETH1_FLOW_ADDR_MATCH2_FULL_ADDR 0x100000 102 103 #define ANA_ETH1_FLOW_ADDR_MATCH2_SRC_DEST_MASK GENMASK(17, 16) 103 104 #define ANA_ETH1_FLOW_ADDR_MATCH2_SRC_DEST 0x020000