[{"id":1760522,"web_url":"http://patchwork.ozlabs.org/comment/1760522/","msgid":"<59A732B8.6020405@iogearbox.net>","list_archive_url":null,"date":"2017-08-30T21:48:40","subject":"Re: [Patch net-next] net_sched: add reverse binding for tc class","submitter":{"id":65705,"url":"http://patchwork.ozlabs.org/api/people/65705/","name":"Daniel Borkmann","email":"daniel@iogearbox.net"},"content":"On 08/30/2017 11:30 PM, Cong Wang wrote:\n[...]\n> Note, we still can NOT totally get rid of those class lookup in\n> ->enqueue() because cgroup and flow filters have no way to determine\n> the classid at setup time, they still have to go through dynamic lookup.\n[...]\n> ---\n>   include/net/sch_generic.h |  1 +\n>   net/sched/cls_basic.c     |  9 +++++++\n>   net/sched/cls_bpf.c       |  9 +++++++\n\nSame is for cls_bpf as well, so bind_class wouldn't work there\neither as we could return dynamic classids. bind_class cannot\nbe added here, too.\n\n>   net/sched/cls_flower.c    |  9 +++++++\n>   net/sched/cls_fw.c        |  9 +++++++\n>   net/sched/cls_matchall.c  |  9 +++++++\n>   net/sched/cls_route.c     |  9 +++++++\n>   net/sched/cls_rsvp.h      |  9 +++++++\n>   net/sched/cls_tcindex.c   |  9 +++++++\n>   net/sched/cls_u32.c       |  9 +++++++\n>   net/sched/sch_api.c       | 68 +++++++++++++++++++++++++++++++++++++++++++++--\n>   11 files changed, 148 insertions(+), 2 deletions(-)","headers":{"Return-Path":"<netdev-owner@vger.kernel.org>","X-Original-To":"patchwork-incoming@ozlabs.org","Delivered-To":"patchwork-incoming@ozlabs.org","Authentication-Results":"ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=netdev-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)","Received":["from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3xjJzf263pz9s8P\n\tfor <patchwork-incoming@ozlabs.org>;\n\tThu, 31 Aug 2017 07:48:46 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1751341AbdH3Vsm (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tWed, 30 Aug 2017 17:48:42 -0400","from www62.your-server.de ([213.133.104.62]:52367 \"EHLO\n\twww62.your-server.de\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S1750824AbdH3Vsl (ORCPT\n\t<rfc822;netdev@vger.kernel.org>); Wed, 30 Aug 2017 17:48:41 -0400","from [92.105.166.74] (helo=localhost.localdomain)\n\tby www62.your-server.de with esmtpsa (TLSv1.2:DHE-RSA-AES256-SHA:256)\n\t(Exim 4.85_2) (envelope-from <daniel@iogearbox.net>)\n\tid 1dnAqm-00024g-LE; Wed, 30 Aug 2017 23:48:40 +0200"],"Message-ID":"<59A732B8.6020405@iogearbox.net>","Date":"Wed, 30 Aug 2017 23:48:40 +0200","From":"Daniel Borkmann <daniel@iogearbox.net>","User-Agent":"Mozilla/5.0 (X11; Linux x86_64;\n\trv:31.0) Gecko/20100101 Thunderbird/31.7.0","MIME-Version":"1.0","To":"Cong Wang <xiyou.wangcong@gmail.com>, netdev@vger.kernel.org","CC":"Jamal Hadi Salim <jhs@mojatatu.com>","Subject":"Re: [Patch net-next] net_sched: add reverse binding for tc class","References":"<20170830213036.24250-1-xiyou.wangcong@gmail.com>","In-Reply-To":"<20170830213036.24250-1-xiyou.wangcong@gmail.com>","Content-Type":"text/plain; charset=windows-1252; format=flowed","Content-Transfer-Encoding":"7bit","X-Authenticated-Sender":"daniel@iogearbox.net","X-Virus-Scanned":"Clear (ClamAV 0.99.2/23742/Wed Aug 30 22:36:10 2017)","Sender":"netdev-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<netdev.vger.kernel.org>","X-Mailing-List":"netdev@vger.kernel.org"}},{"id":1760528,"web_url":"http://patchwork.ozlabs.org/comment/1760528/","msgid":"<CAM_iQpU9B71C5cWs969k464T7HvNhcwps7NYNQx8Q3KCijOfnA@mail.gmail.com>","list_archive_url":null,"date":"2017-08-30T22:01:06","subject":"Re: [Patch net-next] net_sched: add reverse binding for tc class","submitter":{"id":211,"url":"http://patchwork.ozlabs.org/api/people/211/","name":"Cong Wang","email":"xiyou.wangcong@gmail.com"},"content":"On Wed, Aug 30, 2017 at 2:48 PM, Daniel Borkmann <daniel@iogearbox.net> wrote:\n> On 08/30/2017 11:30 PM, Cong Wang wrote:\n> [...]\n>>\n>> Note, we still can NOT totally get rid of those class lookup in\n>> ->enqueue() because cgroup and flow filters have no way to determine\n>> the classid at setup time, they still have to go through dynamic lookup.\n>\n> [...]\n>>\n>> ---\n>>   include/net/sch_generic.h |  1 +\n>>   net/sched/cls_basic.c     |  9 +++++++\n>>   net/sched/cls_bpf.c       |  9 +++++++\n>\n>\n> Same is for cls_bpf as well, so bind_class wouldn't work there\n> either as we could return dynamic classids. bind_class cannot\n> be added here, too.\n\nI think you are probably right, but the following code is\nmisleading there:\n\n        if (tb[TCA_BPF_CLASSID]) {\n                prog->res.classid = nla_get_u32(tb[TCA_BPF_CLASSID]);\n                tcf_bind_filter(tp, &prog->res, base);\n        }\n\nIf the classid is dynamic, why this tb[TCA_BPF_CLASSID]?","headers":{"Return-Path":"<netdev-owner@vger.kernel.org>","X-Original-To":"patchwork-incoming@ozlabs.org","Delivered-To":"patchwork-incoming@ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=netdev-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=gmail.com header.i=@gmail.com\n\theader.b=\"u7ituOk/\"; dkim-atps=neutral"],"Received":["from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3xjKGM5sKqz9s8w\n\tfor <patchwork-incoming@ozlabs.org>;\n\tThu, 31 Aug 2017 08:01:31 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1751758AbdH3WB3 (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tWed, 30 Aug 2017 18:01:29 -0400","from mail-pg0-f42.google.com ([74.125.83.42]:38829 \"EHLO\n\tmail-pg0-f42.google.com\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S1751746AbdH3WB1 (ORCPT\n\t<rfc822;netdev@vger.kernel.org>); Wed, 30 Aug 2017 18:01:27 -0400","by mail-pg0-f42.google.com with SMTP id b8so23472174pgn.5\n\tfor <netdev@vger.kernel.org>; Wed, 30 Aug 2017 15:01:27 -0700 (PDT)","by 10.100.166.199 with HTTP; Wed, 30 Aug 2017 15:01:06 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=gmail.com; s=20161025;\n\th=mime-version:in-reply-to:references:from:date:message-id:subject:to\n\t:cc; bh=x5hTCw3SqJsIqGnlep5ssSFQDEDFusOsikYk675WfMI=;\n\tb=u7ituOk/kU3p0KQYT3JbDtVTt8MfNksmJGXACLCOqmK4bPdU5Jbw4MIPIPhp3qYu1n\n\t7kSLL154r844b3Yatv4xVNvc2JAzWnHyvCVCni92tH92P/DLSHES+RIu0+PhCPv8WPpL\n\tRKuZW9AKIzyf/WJUm04AdmILrf1OgnFlCnjkFa1RwB0X4ZINiQn7Li+3dFOHHBNlWbj+\n\tAzZ/+UtNCtX5CFyYR0BhscpkA8RFmlIcHqP+euaz8KO3B4JszcV8k60+UdpHTnGnKWUS\n\tDb5QHXOhbsUHWEiLmTwO5MvTzwDJp5yzxHtETyz5npRK9x7endRJkJNU9qZFSAj2LJ+k\n\tLjIQ==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:mime-version:in-reply-to:references:from:date\n\t:message-id:subject:to:cc;\n\tbh=x5hTCw3SqJsIqGnlep5ssSFQDEDFusOsikYk675WfMI=;\n\tb=kuTerN98Dn3XXHjObVCNMfoki19SoSf/pncBwAZE5zVxLmxZYD3VMLsUqK+K3HI27S\n\tpCWdvnP1VJfZ8so3qHF4AHqc4A+GV9TVKcT0EH4dAoYMDCZE0K+brxXGOlWKhypgAQ2C\n\tsokKLBws9onAuKDTL5+Esjm4UEJAC5ZkgpPn8/7ulTDI7Sg5d+JK9JiXzFm+Q4xxFow1\n\twOHFAWRiHKUrZWuVazhc/LUEu/qnHBuTOfmK9NGYbjB+1L1TuWia4pt4vlwof/+q2WMI\n\t8MsAd3MIMpu5C+o5+9d0h33XD3exRJUOgKXIGU3bFZpkQnqOJX+eHZ6czKuX48p7llGK\n\tWZZQ==","X-Gm-Message-State":"AHYfb5im/eB0z5GDtR68ayEA03QXFNYoI3/gP+IhEisgfHsF0CcFvjP6\n\tRLQllQ7u2Ah06bXgOz+7RVMZvNAZ7A==","X-Received":"by 10.98.14.194 with SMTP id 63mr70356pfo.80.1504130486803; Wed,\n\t30 Aug 2017 15:01:26 -0700 (PDT)","MIME-Version":"1.0","In-Reply-To":"<59A732B8.6020405@iogearbox.net>","References":"<20170830213036.24250-1-xiyou.wangcong@gmail.com>\n\t<59A732B8.6020405@iogearbox.net>","From":"Cong Wang <xiyou.wangcong@gmail.com>","Date":"Wed, 30 Aug 2017 15:01:06 -0700","Message-ID":"<CAM_iQpU9B71C5cWs969k464T7HvNhcwps7NYNQx8Q3KCijOfnA@mail.gmail.com>","Subject":"Re: [Patch net-next] net_sched: add reverse binding for tc class","To":"Daniel Borkmann <daniel@iogearbox.net>","Cc":"Linux Kernel Network Developers <netdev@vger.kernel.org>,\n\tJamal Hadi Salim <jhs@mojatatu.com>","Content-Type":"text/plain; charset=\"UTF-8\"","Sender":"netdev-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<netdev.vger.kernel.org>","X-Mailing-List":"netdev@vger.kernel.org"}},{"id":1760538,"web_url":"http://patchwork.ozlabs.org/comment/1760538/","msgid":"<59A73AAE.509@iogearbox.net>","list_archive_url":null,"date":"2017-08-30T22:22:38","subject":"Re: [Patch net-next] net_sched: add reverse binding for tc class","submitter":{"id":65705,"url":"http://patchwork.ozlabs.org/api/people/65705/","name":"Daniel Borkmann","email":"daniel@iogearbox.net"},"content":"On 08/31/2017 12:01 AM, Cong Wang wrote:\n> On Wed, Aug 30, 2017 at 2:48 PM, Daniel Borkmann <daniel@iogearbox.net> wrote:\n>> On 08/30/2017 11:30 PM, Cong Wang wrote:\n>> [...]\n>>>\n>>> Note, we still can NOT totally get rid of those class lookup in\n>>> ->enqueue() because cgroup and flow filters have no way to determine\n>>> the classid at setup time, they still have to go through dynamic lookup.\n>>\n>> [...]\n>>>\n>>> ---\n>>>    include/net/sch_generic.h |  1 +\n>>>    net/sched/cls_basic.c     |  9 +++++++\n>>>    net/sched/cls_bpf.c       |  9 +++++++\n>>\n>> Same is for cls_bpf as well, so bind_class wouldn't work there\n>> either as we could return dynamic classids. bind_class cannot\n>> be added here, too.\n>\n> I think you are probably right, but the following code is\n> misleading there:\n>\n>          if (tb[TCA_BPF_CLASSID]) {\n>                  prog->res.classid = nla_get_u32(tb[TCA_BPF_CLASSID]);\n>                  tcf_bind_filter(tp, &prog->res, base);\n>          }\n>\n> If the classid is dynamic, why this tb[TCA_BPF_CLASSID]?\n\nThe prog->res.classid is the default one, but can be overridden\nlater depending on the specified program. cls_bpf_classify() does\nafter prog return (filter_res holds return code):\n\n\t[...]\n\t\tif (filter_res == 0)\n\t\t\tcontinue;\n\t\tif (filter_res != -1) {\n\t\t\tres->class   = 0;\n\t\t\tres->classid = filter_res;\n\t\t} else {\n\t\t\t*res = prog->res;\n\t\t}\n\t[...]\n\nMeaning in case of a match (-1), we use the default bound one,\nbut prog may as well return an alternative found classid if it\nwants to. So both versions are possible.","headers":{"Return-Path":"<netdev-owner@vger.kernel.org>","X-Original-To":"patchwork-incoming@ozlabs.org","Delivered-To":"patchwork-incoming@ozlabs.org","Authentication-Results":"ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=netdev-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)","Received":["from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3xjKkp4JQBz9s8w\n\tfor <patchwork-incoming@ozlabs.org>;\n\tThu, 31 Aug 2017 08:22:42 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1751586AbdH3WWk (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tWed, 30 Aug 2017 18:22:40 -0400","from www62.your-server.de ([213.133.104.62]:55829 \"EHLO\n\twww62.your-server.de\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S1751250AbdH3WWk (ORCPT\n\t<rfc822;netdev@vger.kernel.org>); Wed, 30 Aug 2017 18:22:40 -0400","from [92.105.166.74] (helo=localhost.localdomain)\n\tby www62.your-server.de with esmtpsa (TLSv1.2:DHE-RSA-AES256-SHA:256)\n\t(Exim 4.85_2) (envelope-from <daniel@iogearbox.net>)\n\tid 1dnBNe-0005dB-TZ; Thu, 31 Aug 2017 00:22:38 +0200"],"Message-ID":"<59A73AAE.509@iogearbox.net>","Date":"Thu, 31 Aug 2017 00:22:38 +0200","From":"Daniel Borkmann <daniel@iogearbox.net>","User-Agent":"Mozilla/5.0 (X11; Linux x86_64;\n\trv:31.0) Gecko/20100101 Thunderbird/31.7.0","MIME-Version":"1.0","To":"Cong Wang <xiyou.wangcong@gmail.com>","CC":"Linux Kernel Network Developers <netdev@vger.kernel.org>,\n\tJamal Hadi Salim <jhs@mojatatu.com>","Subject":"Re: [Patch net-next] net_sched: add reverse binding for tc class","References":"<20170830213036.24250-1-xiyou.wangcong@gmail.com>\n\t<59A732B8.6020405@iogearbox.net>\n\t<CAM_iQpU9B71C5cWs969k464T7HvNhcwps7NYNQx8Q3KCijOfnA@mail.gmail.com>","In-Reply-To":"<CAM_iQpU9B71C5cWs969k464T7HvNhcwps7NYNQx8Q3KCijOfnA@mail.gmail.com>","Content-Type":"text/plain; charset=utf-8; format=flowed","Content-Transfer-Encoding":"7bit","X-Authenticated-Sender":"daniel@iogearbox.net","X-Virus-Scanned":"Clear (ClamAV 0.99.2/23742/Wed Aug 30 22:36:10 2017)","Sender":"netdev-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<netdev.vger.kernel.org>","X-Mailing-List":"netdev@vger.kernel.org"}},{"id":1760553,"web_url":"http://patchwork.ozlabs.org/comment/1760553/","msgid":"<59A73FFC.5070803@iogearbox.net>","list_archive_url":null,"date":"2017-08-30T22:45:16","subject":"Re: [Patch net-next] net_sched: add reverse binding for tc class","submitter":{"id":65705,"url":"http://patchwork.ozlabs.org/api/people/65705/","name":"Daniel Borkmann","email":"daniel@iogearbox.net"},"content":"On 08/31/2017 12:22 AM, Daniel Borkmann wrote:\n> On 08/31/2017 12:01 AM, Cong Wang wrote:\n>> On Wed, Aug 30, 2017 at 2:48 PM, Daniel Borkmann <daniel@iogearbox.net> wrote:\n>>> On 08/30/2017 11:30 PM, Cong Wang wrote:\n>>> [...]\n>>>>\n>>>> Note, we still can NOT totally get rid of those class lookup in\n>>>> ->enqueue() because cgroup and flow filters have no way to determine\n>>>> the classid at setup time, they still have to go through dynamic lookup.\n>>>\n>>> [...]\n>>>>\n>>>> ---\n>>>>    include/net/sch_generic.h |  1 +\n>>>>    net/sched/cls_basic.c     |  9 +++++++\n>>>>    net/sched/cls_bpf.c       |  9 +++++++\n>>>\n>>> Same is for cls_bpf as well, so bind_class wouldn't work there\n>>> either as we could return dynamic classids. bind_class cannot\n>>> be added here, too.\n>>\n>> I think you are probably right, but the following code is\n>> misleading there:\n>>\n>>          if (tb[TCA_BPF_CLASSID]) {\n>>                  prog->res.classid = nla_get_u32(tb[TCA_BPF_CLASSID]);\n>>                  tcf_bind_filter(tp, &prog->res, base);\n>>          }\n>>\n>> If the classid is dynamic, why this tb[TCA_BPF_CLASSID]?\n>\n> The prog->res.classid is the default one, but can be overridden\n> later depending on the specified program. cls_bpf_classify() does\n> after prog return (filter_res holds return code):\n>\n>      [...]\n>          if (filter_res == 0)\n>              continue;\n>          if (filter_res != -1) {\n>              res->class   = 0;\n>              res->classid = filter_res;\n>          } else {\n>              *res = prog->res;\n>          }\n>      [...]\n>\n> Meaning in case of a match (-1), we use the default bound one,\n> but prog may as well return an alternative found classid if it\n> wants to. So both versions are possible.\n\nBut even for that case your patch looks fine to me actually, since\nfor dynamic classid we set class to 0. No objections from my side\nthen.","headers":{"Return-Path":"<netdev-owner@vger.kernel.org>","X-Original-To":"patchwork-incoming@ozlabs.org","Delivered-To":"patchwork-incoming@ozlabs.org","Authentication-Results":"ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=netdev-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)","Received":["from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3xjLFF2BrRz9s83\n\tfor <patchwork-incoming@ozlabs.org>;\n\tThu, 31 Aug 2017 08:45:37 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1750941AbdH3Wpa (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tWed, 30 Aug 2017 18:45:30 -0400","from www62.your-server.de ([213.133.104.62]:58265 \"EHLO\n\twww62.your-server.de\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S1750761AbdH3Wpa (ORCPT\n\t<rfc822;netdev@vger.kernel.org>); Wed, 30 Aug 2017 18:45:30 -0400","from [92.105.166.74] (helo=localhost.localdomain)\n\tby www62.your-server.de with esmtpsa (TLSv1.2:DHE-RSA-AES256-SHA:256)\n\t(Exim 4.85_2) (envelope-from <daniel@iogearbox.net>)\n\tid 1dnBjl-0002jp-0U; Thu, 31 Aug 2017 00:45:29 +0200"],"Message-ID":"<59A73FFC.5070803@iogearbox.net>","Date":"Thu, 31 Aug 2017 00:45:16 +0200","From":"Daniel Borkmann <daniel@iogearbox.net>","User-Agent":"Mozilla/5.0 (X11; Linux x86_64;\n\trv:31.0) Gecko/20100101 Thunderbird/31.7.0","MIME-Version":"1.0","To":"Cong Wang <xiyou.wangcong@gmail.com>","CC":"Linux Kernel Network Developers <netdev@vger.kernel.org>,\n\tJamal Hadi Salim <jhs@mojatatu.com>","Subject":"Re: [Patch net-next] net_sched: add reverse binding for tc class","References":"<20170830213036.24250-1-xiyou.wangcong@gmail.com>\n\t<59A732B8.6020405@iogearbox.net>\n\t<CAM_iQpU9B71C5cWs969k464T7HvNhcwps7NYNQx8Q3KCijOfnA@mail.gmail.com>\n\t<59A73AAE.509@iogearbox.net>","In-Reply-To":"<59A73AAE.509@iogearbox.net>","Content-Type":"text/plain; charset=utf-8; format=flowed","Content-Transfer-Encoding":"7bit","X-Authenticated-Sender":"daniel@iogearbox.net","X-Virus-Scanned":"Clear (ClamAV 0.99.2/23742/Wed Aug 30 22:36:10 2017)","Sender":"netdev-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<netdev.vger.kernel.org>","X-Mailing-List":"netdev@vger.kernel.org"}},{"id":1760570,"web_url":"http://patchwork.ozlabs.org/comment/1760570/","msgid":"<CAM_iQpW26pfWE-UyGQ6B=auhOw+Hk-ON4sck6hz0Wx48JMdYxQ@mail.gmail.com>","list_archive_url":null,"date":"2017-08-30T23:15:03","subject":"Re: [Patch net-next] net_sched: add reverse binding for tc class","submitter":{"id":211,"url":"http://patchwork.ozlabs.org/api/people/211/","name":"Cong Wang","email":"xiyou.wangcong@gmail.com"},"content":"On Wed, Aug 30, 2017 at 3:45 PM, Daniel Borkmann <daniel@iogearbox.net> wrote:\n> On 08/31/2017 12:22 AM, Daniel Borkmann wrote:\n>>\n>> The prog->res.classid is the default one, but can be overridden\n>> later depending on the specified program. cls_bpf_classify() does\n>> after prog return (filter_res holds return code):\n>>\n>>      [...]\n>>          if (filter_res == 0)\n>>              continue;\n>>          if (filter_res != -1) {\n>>              res->class   = 0;\n>>              res->classid = filter_res;\n>>          } else {\n>>              *res = prog->res;\n>>          }\n>>      [...]\n>>\n>> Meaning in case of a match (-1), we use the default bound one,\n>> but prog may as well return an alternative found classid if it\n>> wants to. So both versions are possible.\n>\n>\n> But even for that case your patch looks fine to me actually, since\n> for dynamic classid we set class to 0. No objections from my side\n> then.\n\nSounds good. Then I will leave it as it is.\n\nThanks for explanation.","headers":{"Return-Path":"<netdev-owner@vger.kernel.org>","X-Original-To":"patchwork-incoming@ozlabs.org","Delivered-To":"patchwork-incoming@ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=netdev-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=gmail.com header.i=@gmail.com\n\theader.b=\"q7wo4M/G\"; dkim-atps=neutral"],"Received":["from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3xjLvg0Zgyz9s7M\n\tfor <patchwork-incoming@ozlabs.org>;\n\tThu, 31 Aug 2017 09:15:27 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1751632AbdH3XPZ (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tWed, 30 Aug 2017 19:15:25 -0400","from mail-wm0-f44.google.com ([74.125.82.44]:36266 \"EHLO\n\tmail-wm0-f44.google.com\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S1751613AbdH3XPY (ORCPT\n\t<rfc822;netdev@vger.kernel.org>); Wed, 30 Aug 2017 19:15:24 -0400","by mail-wm0-f44.google.com with SMTP id u126so18403974wmg.1\n\tfor <netdev@vger.kernel.org>; Wed, 30 Aug 2017 16:15:24 -0700 (PDT)","by 10.80.137.231 with HTTP; Wed, 30 Aug 2017 16:15:03 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=gmail.com; s=20161025;\n\th=mime-version:in-reply-to:references:from:date:message-id:subject:to\n\t:cc; bh=z3VipNVScZbi9pNA2tx5mvnZDmLVYnbL1pHD5bBPIio=;\n\tb=q7wo4M/G0bIB/JQRjVfaNetBKhtffJYE4QSeBF/RbRNRQwNa86xhOSyd42X4nCQYCO\n\tWZldB6kFIaGLzLhyuQfhDXE744Jo+a8PjbUQvcYayt6VlCZzGi6xlF4W9tNBB+XWczDz\n\tDqv4dld2XXW9Nx1JRNkRlCDxn2KHZ9Q6napYYn7wWjgzkuYGNJ7tOrakxqymUjIZ59gO\n\tR09RUeja9CHU3CM90fH2KdnXDBu5gtK/eIsrEYhoPycIrarGXrl4gou2zOn7ZKSnhfP/\n\tVqa6VEFxF02wMqGiNb5tTTK6p8u0RRhr5VMpBXbMFwj0cRjeNifQEFmCu4S3iK4bBzBH\n\trWKQ==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:mime-version:in-reply-to:references:from:date\n\t:message-id:subject:to:cc;\n\tbh=z3VipNVScZbi9pNA2tx5mvnZDmLVYnbL1pHD5bBPIio=;\n\tb=ohZJp6WYIWZzUo5T4VFsa2Mz9FbOucvtmnm9q4TWT/SnOKpl+lr/h/qIuOTRLuFbKt\n\tHSlWOOBAYZFe2T9MZIRz2ZajpqU/xvldg73+nzeqNOIeq/D0wV8KSAmFOpSsmG8z7cQt\n\tUB6tf8eEOjFCLvQ/A5QSuDlZQp7JEUpGsRcqd7jjHWdP5PSxRvnxmLN4zHEcNAWohUvV\n\tmWdLlgY/41ytP0vp46PzsgadSLxF8f3IWVWPeP8QwA6cy/VPoksEfiGDwnGrHJYCeZL0\n\txa6ZN0+bjdmeHBzfWHZyhF2cEq4nHsk537mxr84ylQ6pVVfUwlcLoumr9wpz49GasHl9\n\tciFw==","X-Gm-Message-State":"AHYfb5hjzEPHdb0fToOAdFGxg6TuLE5mePZPNr5qXEDbtmAK+D9GqwRJ\n\tPoQNgnCKtbHAwGStoYdA5BVRbunSoA==","X-Received":"by 10.80.142.194 with SMTP id x2mr111642edx.52.1504134923608;\n\tWed, 30 Aug 2017 16:15:23 -0700 (PDT)","MIME-Version":"1.0","In-Reply-To":"<59A73FFC.5070803@iogearbox.net>","References":"<20170830213036.24250-1-xiyou.wangcong@gmail.com>\n\t<59A732B8.6020405@iogearbox.net>\n\t<CAM_iQpU9B71C5cWs969k464T7HvNhcwps7NYNQx8Q3KCijOfnA@mail.gmail.com>\n\t<59A73AAE.509@iogearbox.net> <59A73FFC.5070803@iogearbox.net>","From":"Cong Wang <xiyou.wangcong@gmail.com>","Date":"Wed, 30 Aug 2017 16:15:03 -0700","Message-ID":"<CAM_iQpW26pfWE-UyGQ6B=auhOw+Hk-ON4sck6hz0Wx48JMdYxQ@mail.gmail.com>","Subject":"Re: [Patch net-next] net_sched: add reverse binding for tc class","To":"Daniel Borkmann <daniel@iogearbox.net>","Cc":"Linux Kernel Network Developers <netdev@vger.kernel.org>,\n\tJamal Hadi Salim <jhs@mojatatu.com>","Content-Type":"text/plain; charset=\"UTF-8\"","Sender":"netdev-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<netdev.vger.kernel.org>","X-Mailing-List":"netdev@vger.kernel.org"}},{"id":1761253,"web_url":"http://patchwork.ozlabs.org/comment/1761253/","msgid":"<20170831.114105.1838514102434934968.davem@davemloft.net>","list_archive_url":null,"date":"2017-08-31T18:41:05","subject":"Re: [Patch net-next] net_sched: add reverse binding for tc class","submitter":{"id":15,"url":"http://patchwork.ozlabs.org/api/people/15/","name":"David Miller","email":"davem@davemloft.net"},"content":"From: Cong Wang <xiyou.wangcong@gmail.com>\nDate: Wed, 30 Aug 2017 14:30:36 -0700\n\n> TC filters when used as classifiers are bound to TC classes.\n> However, there is a hidden difference when adding them in different\n> orders:\n> \n> 1. If we add tc classes before its filters, everything is fine.\n>    Logically, the classes exist before we specify their ID's in\n>    filters, it is easy to bind them together, just as in the current\n>    code base.\n> \n> 2. If we add tc filters before the tc classes they bind, we have to\n>    do dynamic lookup in fast path. What's worse, this happens all\n>    the time not just once, because on fast path tcf_result is passed\n>    on stack, there is no way to propagate back to the one in tc filters.\n> \n> This hidden difference hurts performance silently if we have many tc\n> classes in hierarchy.\n> \n> This patch intends to close this gap by doing the reverse binding when\n> we create a new class, in this case we can actually search all the\n> filters in its parent, match and fixup by classid. And because\n> tcf_result is specific to each type of tc filter, we have to introduce\n> a new ops for each filter to tell how to bind the class.\n> \n> Note, we still can NOT totally get rid of those class lookup in\n> ->enqueue() because cgroup and flow filters have no way to determine\n> the classid at setup time, they still have to go through dynamic lookup.\n> \n> Cc: Jamal Hadi Salim <jhs@mojatatu.com>\n> Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>\n\nApplied, thanks.","headers":{"Return-Path":"<netdev-owner@vger.kernel.org>","X-Original-To":"patchwork-incoming@ozlabs.org","Delivered-To":"patchwork-incoming@ozlabs.org","Authentication-Results":"ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=netdev-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)","Received":["from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3xjrmm672fz9s7g\n\tfor <patchwork-incoming@ozlabs.org>;\n\tFri,  1 Sep 2017 04:41:12 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1751393AbdHaSlK (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tThu, 31 Aug 2017 14:41:10 -0400","from shards.monkeyblade.net ([184.105.139.130]:55616 \"EHLO\n\tshards.monkeyblade.net\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S1750996AbdHaSlJ (ORCPT\n\t<rfc822;netdev@vger.kernel.org>); Thu, 31 Aug 2017 14:41:09 -0400","from localhost (74-93-104-98-Washington.hfc.comcastbusiness.net\n\t[74.93.104.98]) (using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(Client did not present a certificate)\n\t(Authenticated sender: davem-davemloft)\n\tby shards.monkeyblade.net (Postfix) with ESMTPSA id DA3141251BC4D;\n\tThu, 31 Aug 2017 11:41:08 -0700 (PDT)"],"Date":"Thu, 31 Aug 2017 11:41:05 -0700 (PDT)","Message-Id":"<20170831.114105.1838514102434934968.davem@davemloft.net>","To":"xiyou.wangcong@gmail.com","Cc":"netdev@vger.kernel.org, jhs@mojatatu.com","Subject":"Re: [Patch net-next] net_sched: add reverse binding for tc class","From":"David Miller <davem@davemloft.net>","In-Reply-To":"<20170830213036.24250-1-xiyou.wangcong@gmail.com>","References":"<20170830213036.24250-1-xiyou.wangcong@gmail.com>","X-Mailer":"Mew version 6.7 on Emacs 25.2 / Mule 6.0 (HANACHIRUSATO)","Mime-Version":"1.0","Content-Type":"Text/Plain; charset=us-ascii","Content-Transfer-Encoding":"7bit","X-Greylist":"Sender succeeded SMTP AUTH, not delayed by\n\tmilter-greylist-4.5.12 (shards.monkeyblade.net\n\t[149.20.54.216]); Thu, 31 Aug 2017 11:41:09 -0700 (PDT)","Sender":"netdev-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<netdev.vger.kernel.org>","X-Mailing-List":"netdev@vger.kernel.org"}}]