public inbox for netdev@vger.kernel.org 
 help / color / mirror / Atom feed
From: Vlad Buslov <vladbu@nvidia•com>
To: Victor Nogueira <victor@mojatatu•com>
Cc: <jhs@mojatatu•com>, <xiyou.wangcong@gmail•com>,
	<jiri@resnulli•us>, <davem@davemloft•net>, <edumazet@google•com>,
	<kuba@kernel•org>, <pabeni@redhat•com>, <netdev@vger•kernel.org>,
	<mleitner@redhat•com>, <horms@kernel•org>,
	<pctammela@mojatatu•com>, <kernel@mojatatu•com>
Subject: Re: [PATCH net-next v2 0/3] net/sched: Introduce tc block ports tracking and use
Date: Mon, 21 Aug 2023 22:07:48 +0300	[thread overview]
Message-ID: <875y586whs.fsf@nvidia.com> (raw)
In-Reply-To: <20230819163515.2266246-1-victor@mojatatu.com>

On Sat 19 Aug 2023 at 13:35, Victor Nogueira <victor@mojatatu•com> wrote:
> __context__
> The "tc block" is a collection of netdevs/ports which allow qdiscs to share
> match-action block instances (as opposed to the traditional tc filter per
> netdev/port)[1].
>
> Example setup:
> $ tc qdisc add dev ens7 ingress block 22
> $ tc qdisc add dev ens8 ingress block 22
>
> Once the block is created we can add a filter using the block index:
> $ tc filter add block 22 protocol ip pref 25 \
>   flower dst_ip 192.168.0.0/16 action drop
>
> A packet with dst IP matching 192.168.0.0/16 arriving on the ingress of
> either ens7 or ens8 is dropped.
>
> __this patchset__
> Up to this point in the implementation, the block is unaware of its ports.
> This patch fixes that and makes the tc block ports available to the
> datapath as well as the offload control path (by virtue of the ports being
> in the tc block structure).

Could you elaborate on offload control path? I guess I'm missing
something here because struct flow_cls_offload doesn't seem to include
pointer to the parent tcf_block instance.

>
> For the datapath we provide a use case of the tc block in an action
> we call "blockcast" in patch 3. This action can be used in an example as
> such:
>
> $ tc qdisc add dev ens7 ingress block 22
> $ tc qdisc add dev ens8 ingress block 22
> $ tc qdisc add dev ens9 ingress block 22
> $ tc filter add block 22 protocol ip pref 25 \
>   flower dst_ip 192.168.0.0/16 action blockcast
>
> When a packet(matching dst IP 192.168.0.0/16) arrives on the ingress of any
> of ens7, ens8 or ens9 it will be copied to all ports other than itself.
> For example, if it arrives on ens8 then a copy of the packet will be
> "blockcasted";-> to both ens7 and ens9 (unmodified), but not to ens7.
>
> For an offload path, one use case is to "group" all ports belonging to a
> PCI device into the same tc block.
>
> Patch 1 introduces the required infra. Patch 2 exposes the tc block to the
> tc datapath and patch 3 implements datapath usage via a new tc action
> "blockcast".
>
> __Acknowledgements__
> Suggestions from Vlad Buslov and Marcelo Ricardo Leitner made this patchset
> better. The idea of integrating the ports into the tc block was suggested
> by Jiri Pirko.
>
> [1] See commit ca46abd6f89f ("Merge branch 'net-sched-allow-qdiscs-to-share-filter-block-instances'")
>
> Changes in v2:
>   - Remove RFC tag
>   - Add more details in patch 0(Jiri)
>   - When CONFIG_NET_TC_SKB_EXT is selected we have unused qdisc_cb
>     Reported-by: kernel test robot <lkp@intel•com> (and horms@kernel•org)
>   - Fix bad dev dereference in printk of blockcast action (Simon)
>
> Victor Nogueira (3):
>   net/sched: Introduce tc block netdev tracking infra
>   net/sched: cls_api: Expose tc block ports to the datapath
>   Introduce blockcast tc action
>
>  include/net/sch_generic.h |   8 +
>  include/net/tc_wrapper.h  |   5 +
>  net/sched/Kconfig         |  13 ++
>  net/sched/Makefile        |   1 +
>  net/sched/act_blockcast.c | 299 ++++++++++++++++++++++++++++++++++++++
>  net/sched/cls_api.c       |  11 +-
>  net/sched/sch_api.c       |  79 +++++++++-
>  net/sched/sch_generic.c   |  40 ++++-
>  8 files changed, 449 insertions(+), 7 deletions(-)
>  create mode 100644 net/sched/act_blockcast.c


  parent reply	other threads:[~2023-08-21 19:12 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-08-19 16:35 [PATCH net-next v2 0/3] net/sched: Introduce tc block ports tracking and use Victor Nogueira
2023-08-19 16:35 ` [PATCH net-next v2 1/3] net/sched: Introduce tc block netdev tracking infra Victor Nogueira
2023-08-21 19:12   ` Vlad Buslov
2023-08-24 14:05     ` Jamal Hadi Salim
2023-08-19 16:35 ` [PATCH net-next v2 2/3] net/sched: cls_api: Expose tc block ports to the datapath Victor Nogueira
2023-08-23 17:33   ` Marcelo Ricardo Leitner
2023-08-24 14:09     ` Jamal Hadi Salim
2023-08-19 16:35 ` [PATCH net-next v2 3/3] net/sched: act_blockcast: Introduce blockcast tc action Victor Nogueira
2023-08-23 17:58   ` Marcelo Ricardo Leitner
2023-08-24 14:19     ` Jamal Hadi Salim
2023-08-24 14:30   ` Weird sparse error WAS( " Jamal Hadi Salim
2023-08-24 14:41     ` Paolo Abeni
2023-08-24 14:57       ` Jamal Hadi Salim
2023-09-05  9:18     ` Dan Carpenter
2023-08-21 19:07 ` Vlad Buslov [this message]
2023-08-24 13:47   ` [PATCH net-next v2 0/3] net/sched: Introduce tc block ports tracking and use Jamal Hadi Salim

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=875y586whs.fsf@nvidia.com \
    --to=vladbu@nvidia$(echo .)com \
    --cc=davem@davemloft$(echo .)net \
    --cc=edumazet@google$(echo .)com \
    --cc=horms@kernel$(echo .)org \
    --cc=jhs@mojatatu$(echo .)com \
    --cc=jiri@resnulli$(echo .)us \
    --cc=kernel@mojatatu$(echo .)com \
    --cc=kuba@kernel$(echo .)org \
    --cc=mleitner@redhat$(echo .)com \
    --cc=netdev@vger$(echo .)kernel.org \
    --cc=pabeni@redhat$(echo .)com \
    --cc=pctammela@mojatatu$(echo .)com \
    --cc=victor@mojatatu$(echo .)com \
    --cc=xiyou.wangcong@gmail$(echo .)com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
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