netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jiri Pirko <jiri@resnulli.us>
To: Cong Wang <xiyou.wangcong@gmail.com>
Cc: Linux Kernel Network Developers <netdev@vger.kernel.org>,
	David Miller <davem@davemloft.net>,
	Jamal Hadi Salim <jhs@mojatatu.com>,
	mlxsw@mellanox.com, andrew@lunn.ch,
	Vivien Didelot <vivien.didelot@savoirfairelinux.com>,
	Florian Fainelli <f.fainelli@gmail.com>,
	Jakub Kicinski <jakub.kicinski@netronome.com>,
	Alexei Starovoitov <ast@kernel.org>,
	Daniel Borkmann <daniel@iogearbox.net>,
	Simon Horman <simon.horman@netronome.com>,
	Pieter Jansen van Vuuren <pieter.jansenvanvuuren@netronome.com>,
	john.hurley@netronome.com
Subject: Re: [patch net-next v2 00/10] net: sched: allow qdiscs to share filter block instances
Date: Sat, 18 Nov 2017 18:18:50 +0100	[thread overview]
Message-ID: <20171118171850.GA1951@nanopsycho.orion> (raw)
In-Reply-To: <CAM_iQpXpXx6XguOS8com0Dq-mYn_w3-+mLNBdEco++VF3erC2A@mail.gmail.com>

Thu, Nov 16, 2017 at 12:12:47AM CET, xiyou.wangcong@gmail.com wrote:
>On Sun, Nov 12, 2017 at 7:55 AM, Jiri Pirko <jiri@resnulli.us> wrote:
>> From: Jiri Pirko <jiri@mellanox.com>
>>
>> Currently the filters added to qdiscs are independent. So for example if you
>> have 2 netdevices and you create ingress qdisc on both and you want to add
>> identical filter rules both, you need to add them twice. This patchset
>> makes this easier and mainly saves resources allowing to share all filters
>> within a qdisc - I call it a "filter block". Also this helps to save
>> resources when we do offload to hw for example to expensive TCAM.
>>
>> So back to the example. First, we create 2 qdiscs. Both will share
>> block number 22. "22" is just an identification. If we don't pass any
>> block number, a new one will be generated by kernel:
>
>Should not block 0 by used by default if not specified by user?
>Why a new one?

That would mean you would share block 0 among all newly created qdiscs.
That is not right. By default, there should be no sharing.

>
>
>>
>> $ tc qdisc add dev ens7 ingress block 22
>>                                 ^^^^^^^^
>> $ tc qdisc add dev ens8 ingress block 22
>>                                 ^^^^^^^^
>>
>> Now if we list the qdiscs, we will see the block index in the output:
>>
>> $ tc qdisc
>> qdisc ingress ffff: dev ens7 parent ffff:fff1 block 22
>> qdisc ingress ffff: dev ens8 parent ffff:fff1 block 22
>>
>> Now we can add filter to any of qdiscs sharing the same block:
>>
>> $ tc filter add dev ens7 ingress protocol ip pref 25 flower dst_ip 192.168.0.0/16 action drop
>>
>
>So you don't need to specify block 22 for this filter?
>Because there is only one block???

eth7 was ingress qdisc was assigned block 22 during the creation.
There is always 1 block assigned to one qdisc. However there might be
multiple qdiscs sharing one block. I will try to make this more clear in
the cover letter.



>
>
>>
>> We will see the same output if we list filters for ens7 and ens8, including stats:
>>
>> $ tc -s filter show dev ens7 ingress
>> filter protocol ip pref 25 flower chain 0
>> filter protocol ip pref 25 flower chain 0 handle 0x1
>>   eth_type ipv4
>>   dst_ip 192.168.0.0/16
>>   not_in_hw
>>         action order 1: gact action drop
>>          random type none pass val 0
>>          index 1 ref 1 bind 1 installed 39 sec used 2 sec
>>         Action statistics:
>>         Sent 3108 bytes 37 pkt (dropped 37, overlimits 0 requeues 0)
>>         backlog 0b 0p requeues 0
>
>
>Don't see which block it belongs to here.

      reply	other threads:[~2017-11-18 17:18 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-12 15:55 [patch net-next v2 00/10] net: sched: allow qdiscs to share filter block instances Jiri Pirko
2017-11-12 15:55 ` [patch net-next v2 01/10] cls_bpf: move prog offload->netdev check into drivers Jiri Pirko
2017-11-13  2:14   ` Jakub Kicinski
2017-11-13  6:25     ` Jiri Pirko
2017-11-13  7:17       ` Jakub Kicinski
2017-11-13  7:55         ` Jiri Pirko
2017-11-13  8:12           ` Jakub Kicinski
2017-11-13  8:28             ` Jiri Pirko
2017-11-12 15:55 ` [patch net-next v2 02/10] net: sched: introduce support for multiple filter chain pointers registration Jiri Pirko
2017-11-12 15:55 ` [patch net-next v2 03/10] net: sched: avoid usage of tp->q in tcf_classify Jiri Pirko
2017-11-12 15:55 ` [patch net-next v2 04/10] net: sched: introduce block mechanism to handle netif_keep_dst calls Jiri Pirko
2017-11-13  7:47   ` Jakub Kicinski
2017-11-13  7:58     ` Jiri Pirko
2017-11-13  8:03       ` Jakub Kicinski
2017-11-13  8:08         ` Jiri Pirko
2017-11-13  8:17           ` Jakub Kicinski
2017-11-13  8:35             ` Jiri Pirko
2017-11-13  8:45               ` Jakub Kicinski
2017-11-13  8:54                 ` Jiri Pirko
2017-11-12 15:55 ` [patch net-next v2 05/10] net: sched: remove classid and q fields from tcf_proto Jiri Pirko
2017-11-12 15:56 ` [patch net-next v2 06/10] net: sched: allow ingress and clsact qdiscs to share filter blocks Jiri Pirko
2017-11-13  7:54   ` Jakub Kicinski
2017-11-13  7:56     ` Jiri Pirko
2017-11-13  8:05       ` Jakub Kicinski
2017-11-13  8:09         ` Jiri Pirko
2017-11-12 15:56 ` [patch net-next v2 07/10] mlxsw: spectrum_acl: Reshuffle code around mlxsw_sp_acl_ruleset_create/destroy Jiri Pirko
2017-11-12 15:56 ` [patch net-next v2 08/10] mlxsw: spectrum_acl: Don't store netdev and ingress for ruleset unbind Jiri Pirko
2017-11-12 15:56 ` [patch net-next v2 09/10] mlxsw: spectrum_acl: Implement TC block sharing Jiri Pirko
2017-11-12 15:56 ` [patch net-next v2 10/10] mlxsw: spectrum_acl: Pass mlxsw_sp_port down to ruleset bind/unbind ops Jiri Pirko
2017-11-15 23:12 ` [patch net-next v2 00/10] net: sched: allow qdiscs to share filter block instances Cong Wang
2017-11-18 17:18   ` Jiri Pirko [this message]

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=20171118171850.GA1951@nanopsycho.orion \
    --to=jiri@resnulli.us \
    --cc=andrew@lunn.ch \
    --cc=ast@kernel.org \
    --cc=daniel@iogearbox.net \
    --cc=davem@davemloft.net \
    --cc=f.fainelli@gmail.com \
    --cc=jakub.kicinski@netronome.com \
    --cc=jhs@mojatatu.com \
    --cc=john.hurley@netronome.com \
    --cc=mlxsw@mellanox.com \
    --cc=netdev@vger.kernel.org \
    --cc=pieter.jansenvanvuuren@netronome.com \
    --cc=simon.horman@netronome.com \
    --cc=vivien.didelot@savoirfairelinux.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;
as well as URLs for NNTP newsgroup(s).