On Wed, Aug 14, 2019 at 10:57:12AM +0200, Allan W. Nielsen wrote: > Hi Y.b. and Andrew, > > The 08/14/2019 04:28, Y.b. Lu wrote: > > > > I'd like to trap all IEEE 1588 PTP Ethernet frames to CPU through etype > > > 0x88f7. > > > > > > Is this the correct way to handle PTP for this switch? For other switches > > > we > > > don't need such traps. The switch itself identifies PTP frames and > > > forwards > > > them to the CPU so it can process them. > > > > > > I'm just wondering if your general approach is wrong? > > > > [Y.b. Lu] PTP messages over Ethernet will use two multicast addresses. > > 01-80-C2-00-00-0E for peer delay messages. > Yes, and as you write, this is a BPDU which must not be forwarded (and they > are > not). > > > 01-1B-19-00-00-00 for other messages. > Yes, this is a normal L2 multicast address, which by default are broadcastet. > > > But only 01-80-C2-00-00-0E could be handled by hardware filter for BPDU > > frames > > (01-80-C2-00-00-0x). For PTP messages handling, trapping them to CPU > > through > > VCAP IS2 is the suggested way by Ocelot/Felix.
Hi Allan The typical userspace for this is linuxptp. It implements Boundary Clock (BC), Ordinary Clock (OC) and Transparent Clock (TC). On switches, it works great for L2 PTP. But it has architectural issues for L3 PTP when used with a bridge. I've no idea if Richard is fixing this. > 3) It can be done via 'tc' using the trap action, but I do not know if this is > the desired way of doing it. No, it is not. It could be the way you the implement ptp_clock_info.enable() does the same as what TC could do, but TC itself is not used, it should all be internal to the driver. And you might also want to consider hiding such rules from TC, otherwise the user might remove them and things break. Andrew