LKML Archive on lore.kernel.org help / color / mirror / Atom feed
From: Xiaoliang Yang <xiaoliang.yang_1@nxp.com> To: davem@davemloft.net, linux-kernel@vger.kernel.org, netdev@vger.kernel.org Cc: allan.nielsen@microchip.com, joergen.andreasen@microchip.com, UNGLinuxDriver@microchip.com, vinicius.gomes@intel.com, michael.chan@broadcom.com, vishal@chelsio.com, saeedm@mellanox.com, jiri@mellanox.com, idosch@mellanox.com, alexandre.belloni@bootlin.com, kuba@kernel.org, xiaoliang.yang_1@nxp.com, po.liu@nxp.com, vladimir.oltean@nxp.com, leoyang.li@nxp.com Subject: [RFC v2 net-next 3/8] net: mscc: ocelot: set vcap IS2 chain to goto PSFP chain Date: Wed, 18 Aug 2021 14:19:17 +0800 [thread overview] Message-ID: <20210818061922.12625-4-xiaoliang.yang_1@nxp.com> (raw) In-Reply-To: <20210818061922.12625-1-xiaoliang.yang_1@nxp.com> Some chips in the ocelot series such as VSC9959 support Per-Stream Filtering and Policing(PSFP), which is processing after VCAP blocks. We set this block on chain 30000 and set vcap IS2 chain to goto PSFP chain if hardware support. Signed-off-by: Xiaoliang Yang <xiaoliang.yang_1@nxp.com> --- drivers/net/ethernet/mscc/ocelot_flower.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/mscc/ocelot_flower.c b/drivers/net/ethernet/mscc/ocelot_flower.c index 8b843d3c9189..ce812194e44c 100644 --- a/drivers/net/ethernet/mscc/ocelot_flower.c +++ b/drivers/net/ethernet/mscc/ocelot_flower.c @@ -20,6 +20,9 @@ (1 * VCAP_BLOCK + (lookup) * VCAP_LOOKUP) #define VCAP_IS2_CHAIN(lookup, pag) \ (2 * VCAP_BLOCK + (lookup) * VCAP_LOOKUP + (pag)) +/* PSFP chain and block ID */ +#define PSFP_BLOCK_ID OCELOT_NUM_VCAP_BLOCKS +#define OCELOT_PSFP_CHAIN (3 * VCAP_BLOCK) static int ocelot_chain_to_block(int chain, bool ingress) { @@ -46,6 +49,9 @@ static int ocelot_chain_to_block(int chain, bool ingress) if (chain == VCAP_IS2_CHAIN(lookup, pag)) return VCAP_IS2; + if (chain == OCELOT_PSFP_CHAIN) + return PSFP_BLOCK_ID; + return -EOPNOTSUPP; } @@ -84,7 +90,8 @@ static bool ocelot_is_goto_target_valid(int goto_target, int chain, goto_target == VCAP_IS1_CHAIN(1) || goto_target == VCAP_IS1_CHAIN(2) || goto_target == VCAP_IS2_CHAIN(0, 0) || - goto_target == VCAP_IS2_CHAIN(1, 0)); + goto_target == VCAP_IS2_CHAIN(1, 0) || + goto_target == OCELOT_PSFP_CHAIN); if (chain == VCAP_IS1_CHAIN(0)) return (goto_target == VCAP_IS1_CHAIN(1)); @@ -111,7 +118,11 @@ static bool ocelot_is_goto_target_valid(int goto_target, int chain, if (chain == VCAP_IS2_CHAIN(0, pag)) return (goto_target == VCAP_IS2_CHAIN(1, pag)); - /* VCAP IS2 lookup 1 cannot jump anywhere */ + /* VCAP IS2 lookup 1 can goto to PSFP block if hardware support */ + for (pag = 0; pag < VCAP_IS2_NUM_PAG; pag++) + if (chain == VCAP_IS2_CHAIN(1, pag)) + return (goto_target == OCELOT_PSFP_CHAIN); + return false; } @@ -353,7 +364,7 @@ static int ocelot_flower_parse_action(struct ocelot *ocelot, int port, if (filter->goto_target == -1) { if ((filter->block_id == VCAP_IS2 && filter->lookup == 1) || - chain == 0) { + chain == 0 || filter->block_id == PSFP_BLOCK_ID) { allow_missing_goto_target = true; } else { NL_SET_ERR_MSG_MOD(extack, "Missing GOTO action"); -- 2.17.1
next prev parent reply other threads:[~2021-08-18 6:09 UTC|newest] Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-08-18 6:19 [RFC v2 net-next 0/8] net: dsa: felix: psfp support on vsc9959 Xiaoliang Yang 2021-08-18 6:19 ` [RFC v2 net-next 1/8] net: mscc: ocelot: add MAC table write and lookup operations Xiaoliang Yang 2021-08-18 14:05 ` Vladimir Oltean 2021-08-18 6:19 ` [RFC v2 net-next 2/8] net: mscc: ocelot: export MAC table lookup and write Xiaoliang Yang 2021-08-18 14:07 ` Vladimir Oltean 2021-08-18 14:08 ` Vladimir Oltean 2021-08-18 6:19 ` Xiaoliang Yang [this message] 2021-08-18 14:54 ` [RFC v2 net-next 3/8] net: mscc: ocelot: set vcap IS2 chain to goto PSFP chain Vladimir Oltean 2021-08-19 9:49 ` Xiaoliang Yang 2021-08-18 6:19 ` [RFC v2 net-next 4/8] net: mscc: ocelot: add gate and police action offload to PSFP Xiaoliang Yang 2021-08-18 15:00 ` Vladimir Oltean 2021-08-19 10:00 ` Xiaoliang Yang 2021-08-18 6:19 ` [RFC v2 net-next 5/8] net: dsa: felix: support psfp filter on vsc9959 Xiaoliang Yang 2021-08-18 18:58 ` Vladimir Oltean 2021-08-18 6:19 ` [RFC v2 net-next 6/8] net: dsa: felix: add stream gate settings for psfp Xiaoliang Yang 2021-08-18 6:19 ` [RFC v2 net-next 7/8] net: mscc: ocelot: use index to set vcap policer Xiaoliang Yang 2021-08-18 6:19 ` [RFC v2 net-next 8/8] net: dsa: felix: use vcap policer to set flow meter for psfp Xiaoliang Yang
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20210818061922.12625-4-xiaoliang.yang_1@nxp.com \ --to=xiaoliang.yang_1@nxp.com \ --cc=UNGLinuxDriver@microchip.com \ --cc=alexandre.belloni@bootlin.com \ --cc=allan.nielsen@microchip.com \ --cc=davem@davemloft.net \ --cc=idosch@mellanox.com \ --cc=jiri@mellanox.com \ --cc=joergen.andreasen@microchip.com \ --cc=kuba@kernel.org \ --cc=leoyang.li@nxp.com \ --cc=linux-kernel@vger.kernel.org \ --cc=michael.chan@broadcom.com \ --cc=netdev@vger.kernel.org \ --cc=po.liu@nxp.com \ --cc=saeedm@mellanox.com \ --cc=vinicius.gomes@intel.com \ --cc=vishal@chelsio.com \ --cc=vladimir.oltean@nxp.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).