Hi Allan, > -----Original Message----- > From: Allan W. Nielsen <allan.niel...@microchip.com> > Sent: Monday, August 12, 2019 8:32 PM > To: Y.b. Lu <yangbo...@nxp.com> > Cc: netdev@vger.kernel.org; David S . Miller <da...@davemloft.net>; > Alexandre Belloni <alexandre.bell...@bootlin.com>; Microchip Linux Driver > Support <unglinuxdri...@microchip.com> > Subject: Re: [PATCH 3/3] ocelot_ace: fix action of trap > > The 08/12/2019 18:48, Yangbo Lu wrote: > > The trap action should be copying the frame to CPU and dropping it for > > forwarding, but current setting was just copying frame to CPU. > > Are there any actions which do a "copy-to-cpu" and still forward the frame in > HW?
[Y.b. Lu] We're using Felix switch whose code hadn't been accepted by upstream. https://patchwork.ozlabs.org/project/netdev/list/?series=115399&state=* I'd like to trap all IEEE 1588 PTP Ethernet frames to CPU through etype 0x88f7. When I used current TRAP option, I found the frames were not only copied to CPU, but also forwarded to other ports. So I just made the TRAP option same with DROP option except enabling CPU_COPY_ENA in the patch. Thanks. > > > Signed-off-by: Yangbo Lu <yangbo...@nxp.com> > > --- > > drivers/net/ethernet/mscc/ocelot_ace.c | 6 +++--- > > 1 file changed, 3 insertions(+), 3 deletions(-) > > > > diff --git a/drivers/net/ethernet/mscc/ocelot_ace.c > > b/drivers/net/ethernet/mscc/ocelot_ace.c > > index 91250f3..59ad590 100644 > > --- a/drivers/net/ethernet/mscc/ocelot_ace.c > > +++ b/drivers/net/ethernet/mscc/ocelot_ace.c > > @@ -317,9 +317,9 @@ static void is2_action_set(struct vcap_data *data, > > break; > > case OCELOT_ACL_ACTION_TRAP: > > VCAP_ACT_SET(PORT_MASK, 0x0); > > - VCAP_ACT_SET(MASK_MODE, 0x0); > > - VCAP_ACT_SET(POLICE_ENA, 0x0); > > - VCAP_ACT_SET(POLICE_IDX, 0x0); > > + VCAP_ACT_SET(MASK_MODE, 0x1); > > + VCAP_ACT_SET(POLICE_ENA, 0x1); > > + VCAP_ACT_SET(POLICE_IDX, OCELOT_POLICER_DISCARD); > This seems wrong. The policer is used to ensure that traffic are discarded, > even > in the case where other users of the code has requested it to go to the CPU. > > Are you sure this is working? If it is working, then I fear we have an issue > with > the DROP action which uses this to discard frames. > > > VCAP_ACT_SET(CPU_QU_NUM, 0x0); > > VCAP_ACT_SET(CPU_COPY_ENA, 0x1); > > break; > > -- > > 2.7.4 > > -- > /Allan