RE: [EXT] Re: [v1,net-next 3/4] net: qos: police action add index for tc flower offloading

From: Po Liu
Date: Tue Jun 23 2020 - 03:39:13 EST


Hi Ido,



> -----Original Message-----
> From: Ido Schimmel <idosch@xxxxxxxxxx>
> Sent: 2020年6月23日 15:10
> To: Po Liu <po.liu@xxxxxxx>
> Cc: davem@xxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx;
> netdev@xxxxxxxxxxxxxxx; jiri@xxxxxxxxxxx; vinicius.gomes@xxxxxxxxx;
> vlad@xxxxxxxxxx; Claudiu Manoil <claudiu.manoil@xxxxxxx>; Vladimir
> Oltean <vladimir.oltean@xxxxxxx>; Alexandru Marginean
> <alexandru.marginean@xxxxxxx>; michael.chan@xxxxxxxxxxxx;
> vishal@xxxxxxxxxxx; saeedm@xxxxxxxxxxxx; leon@xxxxxxxxxx;
> jiri@xxxxxxxxxxxx; idosch@xxxxxxxxxxxx;
> alexandre.belloni@xxxxxxxxxxx; UNGLinuxDriver@xxxxxxxxxxxxx;
> kuba@xxxxxxxxxx; jhs@xxxxxxxxxxxx; xiyou.wangcong@xxxxxxxxx;
> simon.horman@xxxxxxxxxxxxx; pablo@xxxxxxxxxxxxx;
> moshe@xxxxxxxxxxxx; m-karicheri2@xxxxxx;
> andre.guedes@xxxxxxxxxxxxxxx; stephen@xxxxxxxxxxxxxxxxxx
> Subject: [EXT] Re: [v1,net-next 3/4] net: qos: police action add index for tc
> flower offloading
>
> Caution: EXT Email
>
> On Tue, Jun 23, 2020 at 02:34:11PM +0800, Po Liu wrote:
> > From: Po Liu <Po.Liu@xxxxxxx>
> >
> > Hardware may own many entries for police flow. So that make one(or
> > multi) flow to be policed by one hardware entry. This patch add the
> > police action index provide to the driver side make it mapping the
> > driver hardware entry index.
>
> Maybe first mention that it is possible for multiple filters in software to
> share the same policer. Something like:
>
> "
> It is possible for several tc filters to share the same police action by
> specifying the action's index when installing the filters.
>
> Propagate this index to device drivers through the flow offload
> intermediate representation, so that drivers could share a single hardware
> policer between multiple filters.
> "
>
> >
> > Signed-off-by: Po Liu <Po.Liu@xxxxxxx>
> > ---
> > include/net/flow_offload.h | 1 +
> > net/sched/cls_api.c | 1 +
> > 2 files changed, 2 insertions(+)
> >
> > diff --git a/include/net/flow_offload.h b/include/net/flow_offload.h
> > index c2ef19c6b27d..eed98075b1ae 100644
> > --- a/include/net/flow_offload.h
> > +++ b/include/net/flow_offload.h
> > @@ -232,6 +232,7 @@ struct flow_action_entry {
> > bool truncate;
> > } sample;
> > struct { /* FLOW_ACTION_POLICE */
> > + u32 index;
> > s64 burst;
> > u64 rate_bytes_ps;
> > u32 mtu;
> > diff --git a/net/sched/cls_api.c b/net/sched/cls_api.c index
> > 6aba7d5ba1ec..fdc4c89ca1fa 100644
> > --- a/net/sched/cls_api.c
> > +++ b/net/sched/cls_api.c
> > @@ -3659,6 +3659,7 @@ int tc_setup_flow_action(struct flow_action
> *flow_action,
> > entry->police.rate_bytes_ps =
> > tcf_police_rate_bytes_ps(act);
> > entry->police.mtu = tcf_police_tcfp_mtu(act);
> > + entry->police.index = act->tcfa_index;
> > } else if (is_tcf_ct(act)) {
> > entry->id = FLOW_ACTION_CT;
> > entry->ct.action = tcf_ct_action(act);
> > --
> > 2.17.1
> >