From: Jiri Pirko <jiri@resnulli.us>
To: netdev@vger.kernel.org
Cc: davem@davemloft.net, kuba@kernel.org, idosch@mellanox.com,
mlxsw@mellanox.com
Subject: [patch net-next 04/12] mlxsw: spectrum_trap: Move policer initialization to mlxsw_sp_trap_init()
Date: Sun, 23 Feb 2020 08:31:36 +0100 [thread overview]
Message-ID: <20200223073144.28529-5-jiri@resnulli.us> (raw)
In-Reply-To: <20200223073144.28529-1-jiri@resnulli.us>
From: Jiri Pirko <jiri@mellanox.com>
No need to initialize a single policer multiple times for each group.
So move the initialization to be done from mlxsw_sp_trap_init(), making
the function much simpler. Also, rename it so it is with sync with
spectrum.c policers initialization.
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: Ido Schimmel <idosch@mellanox.com>
---
.../ethernet/mellanox/mlxsw/spectrum_trap.c | 72 +++++--------------
1 file changed, 19 insertions(+), 53 deletions(-)
diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
index 4f38681afa34..871bd609b0c9 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_trap.c
@@ -237,9 +237,25 @@ static u16 mlxsw_sp_listener_devlink_map[] = {
DEVLINK_TRAP_GENERIC_ID_OVERLAY_SMAC_MC,
};
+#define MLXSW_SP_DISCARD_POLICER_ID (MLXSW_REG_HTGT_TRAP_GROUP_MAX + 1)
+
+static int mlxsw_sp_trap_cpu_policers_set(struct mlxsw_sp *mlxsw_sp)
+{
+ char qpcr_pl[MLXSW_REG_QPCR_LEN];
+
+ mlxsw_reg_qpcr_pack(qpcr_pl, MLXSW_SP_DISCARD_POLICER_ID,
+ MLXSW_REG_QPCR_IR_UNITS_M, false, 10 * 1024, 7);
+ return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(qpcr), qpcr_pl);
+}
+
int mlxsw_sp_devlink_traps_init(struct mlxsw_sp *mlxsw_sp)
{
struct devlink *devlink = priv_to_devlink(mlxsw_sp->core);
+ int err;
+
+ err = mlxsw_sp_trap_cpu_policers_set(mlxsw_sp);
+ if (err)
+ return err;
if (WARN_ON(ARRAY_SIZE(mlxsw_sp_listener_devlink_map) !=
ARRAY_SIZE(mlxsw_sp_listeners_arr)))
@@ -330,41 +346,8 @@ int mlxsw_sp_trap_action_set(struct mlxsw_core *mlxsw_core,
return 0;
}
-#define MLXSW_SP_DISCARD_POLICER_ID (MLXSW_REG_HTGT_TRAP_GROUP_MAX + 1)
-
-static int
-mlxsw_sp_trap_group_policer_init(struct mlxsw_sp *mlxsw_sp,
- const struct devlink_trap_group *group)
-{
- enum mlxsw_reg_qpcr_ir_units ir_units;
- char qpcr_pl[MLXSW_REG_QPCR_LEN];
- u16 policer_id;
- u8 burst_size;
- bool is_bytes;
- u32 rate;
-
- switch (group->id) {
- case DEVLINK_TRAP_GROUP_GENERIC_ID_L2_DROPS: /* fall through */
- case DEVLINK_TRAP_GROUP_GENERIC_ID_L3_DROPS: /* fall through */
- case DEVLINK_TRAP_GROUP_GENERIC_ID_TUNNEL_DROPS:
- policer_id = MLXSW_SP_DISCARD_POLICER_ID;
- ir_units = MLXSW_REG_QPCR_IR_UNITS_M;
- is_bytes = false;
- rate = 10 * 1024; /* 10Kpps */
- burst_size = 7;
- break;
- default:
- return -EINVAL;
- }
-
- mlxsw_reg_qpcr_pack(qpcr_pl, policer_id, ir_units, is_bytes, rate,
- burst_size);
- return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(qpcr), qpcr_pl);
-}
-
-static int
-__mlxsw_sp_trap_group_init(struct mlxsw_sp *mlxsw_sp,
- const struct devlink_trap_group *group)
+int mlxsw_sp_trap_group_init(struct mlxsw_core *mlxsw_core,
+ const struct devlink_trap_group *group)
{
char htgt_pl[MLXSW_REG_HTGT_LEN];
u8 priority, tc, group_id;
@@ -394,22 +377,5 @@ __mlxsw_sp_trap_group_init(struct mlxsw_sp *mlxsw_sp,
}
mlxsw_reg_htgt_pack(htgt_pl, group_id, policer_id, priority, tc);
- return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(htgt), htgt_pl);
-}
-
-int mlxsw_sp_trap_group_init(struct mlxsw_core *mlxsw_core,
- const struct devlink_trap_group *group)
-{
- struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core);
- int err;
-
- err = mlxsw_sp_trap_group_policer_init(mlxsw_sp, group);
- if (err)
- return err;
-
- err = __mlxsw_sp_trap_group_init(mlxsw_sp, group);
- if (err)
- return err;
-
- return 0;
+ return mlxsw_reg_write(mlxsw_core, MLXSW_REG(htgt), htgt_pl);
}
--
2.21.1
next prev parent reply other threads:[~2020-02-23 7:31 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-23 7:31 [patch net-next 00/12] mlxsw: Cosmetic fixes Jiri Pirko
2020-02-23 7:31 ` [patch net-next 01/12] mlxsw: spectrum_trap: Use err variable instead of directly checking func return value Jiri Pirko
2020-02-23 7:31 ` [patch net-next 02/12] mlxsw: spectrum_trap: Move functions to avoid their forward declarations Jiri Pirko
2020-02-23 7:31 ` [patch net-next 03/12] mlxsw: core_acl_flex_actions: Rename Trap / Discard Action to Trap Action Jiri Pirko
2020-02-23 7:31 ` Jiri Pirko [this message]
2020-02-23 7:31 ` [patch net-next 05/12] mlxsw: core: Remove unused action field from mlxsw_rx_listener struct Jiri Pirko
2020-02-23 7:31 ` [patch net-next 06/12] mlxsw: core: Remove dummy union name from struct mlxsw_listener Jiri Pirko
2020-02-23 7:31 ` [patch net-next 07/12] mlxsw: core: Convert is_event and is_ctrl bools to be single bits Jiri Pirko
2020-02-23 7:31 ` [patch net-next 08/12] mlxsw: core: Remove initialization to false of mlxsw_listener struct Jiri Pirko
2020-02-23 7:31 ` [patch net-next 09/12] mlxsw: spectrum_trap: Make global arrays const as they should be Jiri Pirko
2020-02-23 7:31 ` [patch net-next 10/12] mlxsw: spectrum_acl: Make block arg const where appropriate Jiri Pirko
2020-02-23 7:31 ` [patch net-next 11/12] mlxsw: core: Remove priv from listener equality comparison Jiri Pirko
2020-02-23 7:31 ` [patch net-next 12/12] mlxsw: pci: Remove unused values Jiri Pirko
2020-02-24 0:13 ` [patch net-next 00/12] mlxsw: Cosmetic fixes David Miller
2020-02-24 7:02 ` Jiri Pirko
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=20200223073144.28529-5-jiri@resnulli.us \
--to=jiri@resnulli.us \
--cc=davem@davemloft.net \
--cc=idosch@mellanox.com \
--cc=kuba@kernel.org \
--cc=mlxsw@mellanox.com \
--cc=netdev@vger.kernel.org \
/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: link
Be 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).