From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id 9A20614E8 for ; Thu, 14 Dec 2017 15:42:36 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 14 Dec 2017 06:42:35 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.45,400,1508828400"; d="scan'208";a="2516275" Received: from irsmsx106.ger.corp.intel.com ([163.33.3.31]) by fmsmga008.fm.intel.com with ESMTP; 14 Dec 2017 06:42:34 -0800 Received: from irsmsx108.ger.corp.intel.com ([169.254.11.167]) by IRSMSX106.ger.corp.intel.com ([169.254.8.36]) with mapi id 14.03.0319.002; Thu, 14 Dec 2017 14:42:33 +0000 From: "Iremonger, Bernard" To: "Singh, Jasvinder" , "dev@dpdk.org" CC: "Mcnamara, John" Thread-Topic: [PATCH v2 3/4] examples/flow_classify: update sample application Thread-Index: AQHTcps3Ux04+nL+TEyXlIb6NdkWmKNC7bvw Date: Thu, 14 Dec 2017 14:42:32 +0000 Message-ID: <8CEF83825BEC744B83065625E567D7C24E068E73@IRSMSX108.ger.corp.intel.com> References: <20171123113215.64757-1-jasvinder.singh@intel.com> <20171211162646.146936-1-jasvinder.singh@intel.com> <20171211162646.146936-3-jasvinder.singh@intel.com> In-Reply-To: <20171211162646.146936-3-jasvinder.singh@intel.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiNGY2MjhiMTAtNzM0Ny00ZTRjLThhMTUtZDVmOTk0NjlmZjg2IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX0lDIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjIuNS4xOCIsIlRydXN0ZWRMYWJlbEhhc2giOiIxblc5T0pRMllhbzFCQXcwMnhoY1pUKzR3NGNZVlBcL1lWSSthZU1hY3BKcThMUFN4XC8rMlg5dXBmOTdidzBpXC9rIn0= x-ctpclassification: CTP_IC dlp-product: dlpe-windows dlp-version: 11.0.0.116 dlp-reaction: no-action x-originating-ip: [163.33.239.182] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH v2 3/4] examples/flow_classify: update sample application X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 14 Dec 2017 14:42:37 -0000 Hi Jasvinder, > -----Original Message----- > From: Singh, Jasvinder > Sent: Monday, December 11, 2017 4:27 PM > To: dev@dpdk.org > Cc: Iremonger, Bernard ; Mcnamara, John > > Subject: [PATCH v2 3/4] examples/flow_classify: update sample application >=20 > Update the flow_classify sample app to adapt the changes. >=20 > Signed-off-by: Jasvinder Singh > --- > v2: > - use validate api to verify before adding flow rule >=20 > examples/flow_classify/flow_classify.c | 36 +++++++++++++++++++++++-----= --- > --- > 1 file changed, 25 insertions(+), 11 deletions(-) >=20 > diff --git a/examples/flow_classify/flow_classify.c > b/examples/flow_classify/flow_classify.c > index 766f1dd..25b8fc6 100644 > --- a/examples/flow_classify/flow_classify.c > +++ b/examples/flow_classify/flow_classify.c > @@ -94,7 +94,6 @@ static const struct rte_eth_conf port_conf_default =3D = { >=20 > struct flow_classifier { > struct rte_flow_classifier *cls; > - uint32_t table_id[RTE_FLOW_CLASSIFY_TABLE_MAX]; > }; >=20 > struct flow_classifier_acl { > @@ -195,7 +194,15 @@ static struct rte_flow_item end_item =3D { > RTE_FLOW_ITEM_TYPE_END, > /* sample actions: > * "actions count / end" > */ > -static struct rte_flow_action count_action =3D { > RTE_FLOW_ACTION_TYPE_COUNT, 0}; > +struct rte_flow_query_count count =3D { > + .reset =3D 1, > + .hits_set =3D 1, > + .bytes_set =3D 1, > + .hits =3D 0, > + .bytes =3D 0, > +}; > +static struct rte_flow_action count_action =3D { > RTE_FLOW_ACTION_TYPE_COUNT, > + &count}; > static struct rte_flow_action end_action =3D { RTE_FLOW_ACTION_TYPE_END,= 0}; > static struct rte_flow_action actions[2]; >=20 > @@ -274,7 +281,7 @@ lcore_main(struct flow_classifier *cls_app) > int i =3D 0; >=20 > ret =3D rte_flow_classify_table_entry_delete(cls_app->cls, > - cls_app->table_id[0], rules[7]); > + rules[7]); > if (ret) > printf("table_entry_delete failed [7] %d\n\n", ret); > else > @@ -317,7 +324,6 @@ lcore_main(struct flow_classifier *cls_app) > if (rules[i]) { > ret =3D rte_flow_classifier_query( > cls_app->cls, > - cls_app->table_id[0], > bufs, nb_rx, rules[i], > &classify_stats); > if (ret) > @@ -634,9 +640,18 @@ add_classify_rule(struct rte_eth_ntuple_filter > *ntuple_filter, > actions[0] =3D count_action; > actions[1] =3D end_action; >=20 > + /* Validate and add rule */ > + ret =3D rte_flow_classify_validate(cls_app->cls, &attr, > + pattern_ipv4_5tuple, actions); Parameter &error is missing from validate call, resulting in a compile erro= r. > + if (ret) { > + printf("table entry validate failed ipv4_proto =3D %u\n", > + ipv4_proto); > + return ret; > + } > + > rule =3D rte_flow_classify_table_entry_add( > - cls_app->cls, cls_app->table_id[0], &key_found, > - &attr, pattern_ipv4_5tuple, actions, &error); > + cls_app->cls, &attr, pattern_ipv4_5tuple, > + actions, &key_found, &error); > if (rule =3D=3D NULL) { > printf("table entry add failed ipv4_proto =3D %u\n", > ipv4_proto); > @@ -809,7 +824,6 @@ main(int argc, char *argv[]) >=20 > cls_params.name =3D "flow_classifier"; > cls_params.socket_id =3D socket_id; > - cls_params.type =3D RTE_FLOW_CLASSIFY_TABLE_TYPE_ACL; >=20 > cls_app->cls =3D rte_flow_classifier_create(&cls_params); > if (cls_app->cls =3D=3D NULL) { > @@ -824,11 +838,11 @@ main(int argc, char *argv[]) > memcpy(table_acl_params.field_format, ipv4_defs, sizeof(ipv4_defs)); >=20 > /* initialise table create params */ > - cls_table_params.ops =3D &rte_table_acl_ops, > - cls_table_params.arg_create =3D &table_acl_params, > + cls_table_params.ops =3D &rte_table_acl_ops; > + cls_table_params.arg_create =3D &table_acl_params; > + cls_table_params.type =3D > RTE_FLOW_CLASSIFY_TABLE_ACL_IP4_5TUPLE; >=20 > - ret =3D rte_flow_classify_table_create(cls_app->cls, &cls_table_params, > - &cls_app->table_id[0]); > + ret =3D rte_flow_classify_table_create(cls_app->cls, &cls_table_params)= ; > if (ret) { > rte_flow_classifier_free(cls_app->cls); > rte_free(cls_app); > -- > 2.9.3