The 08/12/2019 18:48, Yangbo Lu wrote: > The ingress ports setting of rule should support covering all ports. > This patch is to use u16 ingress_port for ingress port mask setting > for ace rule. One bit corresponds one port. That is how the HW is working, and it would be nice if we could operate on a port masks/lists instead. But how can this be used?
Can you please explain how/when this will make a difference? > Signed-off-by: Yangbo Lu <yangbo...@nxp.com> > --- > drivers/net/ethernet/mscc/ocelot_ace.c | 2 +- > drivers/net/ethernet/mscc/ocelot_ace.h | 2 +- > drivers/net/ethernet/mscc/ocelot_flower.c | 2 +- > 3 files changed, 3 insertions(+), 3 deletions(-) > > diff --git a/drivers/net/ethernet/mscc/ocelot_ace.c > b/drivers/net/ethernet/mscc/ocelot_ace.c > index 5580a58..91250f3 100644 > --- a/drivers/net/ethernet/mscc/ocelot_ace.c > +++ b/drivers/net/ethernet/mscc/ocelot_ace.c > @@ -352,7 +352,7 @@ static void is2_entry_set(struct ocelot *ocelot, int ix, > data.type = IS2_ACTION_TYPE_NORMAL; > > VCAP_KEY_ANY_SET(PAG); > - VCAP_KEY_SET(IGR_PORT_MASK, 0, ~BIT(ace->chip_port)); > + VCAP_KEY_SET(IGR_PORT_MASK, 0, ~ace->ingress_port); > VCAP_KEY_BIT_SET(FIRST, OCELOT_VCAP_BIT_1); > VCAP_KEY_BIT_SET(HOST_MATCH, OCELOT_VCAP_BIT_ANY); > VCAP_KEY_BIT_SET(L2_MC, ace->dmac_mc); > diff --git a/drivers/net/ethernet/mscc/ocelot_ace.h > b/drivers/net/ethernet/mscc/ocelot_ace.h > index ce72f02..0fe23e0 100644 > --- a/drivers/net/ethernet/mscc/ocelot_ace.h > +++ b/drivers/net/ethernet/mscc/ocelot_ace.h > @@ -193,7 +193,7 @@ struct ocelot_ace_rule { > > enum ocelot_ace_action action; > struct ocelot_ace_stats stats; > - int chip_port; > + u16 ingress_port; > > enum ocelot_vcap_bit dmac_mc; > enum ocelot_vcap_bit dmac_bc; > diff --git a/drivers/net/ethernet/mscc/ocelot_flower.c > b/drivers/net/ethernet/mscc/ocelot_flower.c > index 7c60e8c..bfddc50 100644 > --- a/drivers/net/ethernet/mscc/ocelot_flower.c > +++ b/drivers/net/ethernet/mscc/ocelot_flower.c > @@ -184,7 +184,7 @@ struct ocelot_ace_rule *ocelot_ace_rule_create(struct > flow_cls_offload *f, > return NULL; > > rule->ocelot = block->port->ocelot; > - rule->chip_port = block->port->chip_port; > + rule->ingress_port = BIT(block->port->chip_port); > return rule; > } -- Allan