From: Jiri Pirko <jiri@resnulli.us>
To: netdev@vger.kernel.org
Cc: davem@davemloft.net, kuba@kernel.org, saeedm@mellanox.com,
leon@kernel.org, michael.chan@broadcom.com, vishal@chelsio.com,
jeffrey.t.kirsher@intel.com, idosch@mellanox.com,
aelior@marvell.com, peppe.cavallaro@st.com,
alexandre.torgue@st.com, jhs@mojatatu.com,
xiyou.wangcong@gmail.com, pablo@netfilter.org,
ecree@solarflare.com, mlxsw@mellanox.com
Subject: [patch net-next v3 00/10] net: allow user specify TC action HW stats type
Date: Fri, 6 Mar 2020 14:28:46 +0100 [thread overview]
Message-ID: <20200306132856.6041-1-jiri@resnulli.us> (raw)
Currently, when user adds a TC action and the action gets offloaded,
the user expects the HW stats to be counted and included in stats dump.
However, since drivers may implement different types of counting, there
is no way to specify which one the user is interested in.
For example for mlx5, only delayed counters are available as the driver
periodically polls for updated stats.
In case of mlxsw, the counters are queried on dump time. However, the
HW resources for this type of counters is quite limited (couple of
thousands). This limits the amount of supported offloaded filters
significantly. Without counter assigned, the HW is capable to carry
millions of those.
On top of that, mlxsw HW is able to support delayed counters as well in
greater numbers. That is going to be added in a follow-up patch.
This patchset allows user to specify one of the following types of HW
stats for added action:
immediate - queried during dump time
delayed - polled from HW periodically or sent by HW in async manner
disabled - no stats needed
Note that if "hw_stats" option is not passed, user does not care about
the type, just expects any type of stats.
Examples:
$ tc filter add dev enp0s16np28 ingress proto ip handle 1 pref 1 flower skip_sw dst_ip 192.168.1.1 action drop hw_stats disabled
$ tc -s filter show dev enp0s16np28 ingress
filter protocol ip pref 1 flower chain 0
filter protocol ip pref 1 flower chain 0 handle 0x1
eth_type ipv4
dst_ip 192.168.1.1
skip_sw
in_hw in_hw_count 2
action order 1: gact action drop
random type none pass val 0
index 1 ref 1 bind 1 installed 7 sec used 2 sec
Action statistics:
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
hw_stats disabled
$ tc filter add dev enp0s16np28 ingress proto ip handle 1 pref 1 flower skip_sw dst_ip 192.168.1.1 action drop hw_stats immediate
$ tc -s filter show dev enp0s16np28 ingress
filter protocol ip pref 1 flower chain 0
filter protocol ip pref 1 flower chain 0 handle 0x1
eth_type ipv4
dst_ip 192.168.1.1
skip_sw
in_hw in_hw_count 2
action order 1: gact action drop
random type none pass val 0
index 1 ref 1 bind 1 installed 11 sec used 4 sec
Action statistics:
Sent 102 bytes 1 pkt (dropped 1, overlimits 0 requeues 0)
Sent software 0 bytes 0 pkt
Sent hardware 102 bytes 1 pkt
backlog 0b 0p requeues 0
hw_stats immediate
Jiri Pirko (10):
flow_offload: Introduce offload of HW stats type
ocelot_flower: use flow_offload_has_one_action() helper
flow_offload: check for basic action hw stats type
mlxsw: spectrum_flower: Do not allow mixing HW stats types for actions
mlxsw: restrict supported HW stats type to "any"
flow_offload: introduce "immediate" HW stats type and allow it in
mlxsw
flow_offload: introduce "delayed" HW stats type and allow it in mlx5
mlxsw: spectrum_acl: Ask device for rule stats only if counter was
created
flow_offload: introduce "disabled" HW stats type and allow it in mlxsw
sched: act: allow user to specify type of HW stats for a filter
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c | 9 ++-
.../ethernet/chelsio/cxgb4/cxgb4_tc_flower.c | 8 ++-
.../ethernet/chelsio/cxgb4/cxgb4_tc_flower.h | 3 +-
.../chelsio/cxgb4/cxgb4_tc_matchall.c | 3 +-
.../net/ethernet/marvell/mvpp2/mvpp2_cls.c | 6 ++
.../net/ethernet/mellanox/mlx5/core/en_tc.c | 11 +++
.../net/ethernet/mellanox/mlxsw/spectrum.h | 3 +-
.../ethernet/mellanox/mlxsw/spectrum_acl.c | 26 ++++---
.../ethernet/mellanox/mlxsw/spectrum_flower.c | 17 +++--
drivers/net/ethernet/mscc/ocelot_flower.c | 6 +-
.../ethernet/netronome/nfp/flower/action.c | 4 ++
.../net/ethernet/qlogic/qede/qede_filter.c | 10 ++-
.../net/ethernet/stmicro/stmmac/stmmac_tc.c | 9 ++-
include/net/act_api.h | 4 ++
include/net/flow_offload.h | 68 +++++++++++++++++++
include/uapi/linux/pkt_cls.h | 22 ++++++
net/dsa/slave.c | 4 ++
net/sched/act_api.c | 36 ++++++++++
net/sched/cls_api.c | 7 ++
19 files changed, 230 insertions(+), 26 deletions(-)
--
2.21.1
next reply other threads:[~2020-03-06 13:29 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-06 13:28 Jiri Pirko [this message]
2020-03-06 13:28 ` [patch net-next v3 01/10] flow_offload: Introduce offload of HW stats type Jiri Pirko
2020-03-06 19:23 ` Jakub Kicinski
2020-03-06 13:28 ` [patch net-next v3 02/10] ocelot_flower: use flow_offload_has_one_action() helper Jiri Pirko
2020-03-06 13:28 ` [patch net-next v3 03/10] flow_offload: check for basic action hw stats type Jiri Pirko
2020-03-06 19:28 ` Jakub Kicinski
2020-03-07 6:59 ` Jiri Pirko
2020-03-09 19:17 ` Jakub Kicinski
2020-03-10 10:13 ` Jiri Pirko
2020-03-06 13:28 ` [patch net-next v3 04/10] mlxsw: spectrum_flower: Do not allow mixing HW stats types for actions Jiri Pirko
2020-03-06 13:28 ` [patch net-next v3 05/10] mlxsw: restrict supported HW stats type to "any" Jiri Pirko
2020-03-06 13:28 ` [patch net-next v3 06/10] flow_offload: introduce "immediate" HW stats type and allow it in mlxsw Jiri Pirko
2020-03-06 13:28 ` [patch net-next v3 07/10] flow_offload: introduce "delayed" HW stats type and allow it in mlx5 Jiri Pirko
2020-03-06 13:28 ` [patch net-next v3 08/10] mlxsw: spectrum_acl: Ask device for rule stats only if counter was created Jiri Pirko
2020-03-06 13:28 ` [patch net-next v3 09/10] flow_offload: introduce "disabled" HW stats type and allow it in mlxsw Jiri Pirko
2020-03-06 19:31 ` Jakub Kicinski
2020-03-07 6:56 ` Jiri Pirko
2020-03-09 19:20 ` Jakub Kicinski
2020-03-10 10:14 ` Jiri Pirko
2020-03-06 13:28 ` [patch net-next v3 10/10] sched: act: allow user to specify type of HW stats for a filter 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=20200306132856.6041-1-jiri@resnulli.us \
--to=jiri@resnulli.us \
--cc=aelior@marvell.com \
--cc=alexandre.torgue@st.com \
--cc=davem@davemloft.net \
--cc=ecree@solarflare.com \
--cc=idosch@mellanox.com \
--cc=jeffrey.t.kirsher@intel.com \
--cc=jhs@mojatatu.com \
--cc=kuba@kernel.org \
--cc=leon@kernel.org \
--cc=michael.chan@broadcom.com \
--cc=mlxsw@mellanox.com \
--cc=netdev@vger.kernel.org \
--cc=pablo@netfilter.org \
--cc=peppe.cavallaro@st.com \
--cc=saeedm@mellanox.com \
--cc=vishal@chelsio.com \
--cc=xiyou.wangcong@gmail.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: 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