Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/131185/?format=api
http://patchwork.dpdk.org/api/patches/131185/?format=api", "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/20230906093407.3635038-2-wenjing.qiao@intel.com/", "project": { "id": 1, "url": "http://patchwork.dpdk.org/api/projects/1/?format=api", "name": "DPDK", "link_name": "dpdk", "list_id": "dev.dpdk.org", "list_email": "dev@dpdk.org", "web_url": "http://core.dpdk.org", "scm_url": "git://dpdk.org/dpdk", "webscm_url": "http://git.dpdk.org/dpdk", "list_archive_url": "https://inbox.dpdk.org/dev", "list_archive_url_format": "https://inbox.dpdk.org/dev/{}", "commit_url_format": "" }, "msgid": "<20230906093407.3635038-2-wenjing.qiao@intel.com>", "list_archive_url": "https://inbox.dpdk.org/dev/20230906093407.3635038-2-wenjing.qiao@intel.com", "date": "2023-09-06T09:33:59", "name": "[v3,1/9] net/cpfl: parse flow parser file in devargs", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": true, "hash": "a421fba7877b00810d00d0766a6f45e9af94bf8f", "submitter": { "id": 2680, "url": "http://patchwork.dpdk.org/api/people/2680/?format=api", "name": "Wenjing Qiao", "email": "wenjing.qiao@intel.com" }, "delegate": { "id": 1540, "url": "http://patchwork.dpdk.org/api/users/1540/?format=api", "username": "qzhan15", "first_name": "Qi", "last_name": "Zhang", "email": "qi.z.zhang@intel.com" }, "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/20230906093407.3635038-2-wenjing.qiao@intel.com/mbox/", "series": [ { "id": 29433, "url": "http://patchwork.dpdk.org/api/series/29433/?format=api", "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=29433", "date": "2023-09-06T09:33:58", "name": "add rte flow support for cpfl", "version": 3, "mbox": "http://patchwork.dpdk.org/series/29433/mbox/" } ], "comments": "http://patchwork.dpdk.org/api/patches/131185/comments/", "check": "warning", "checks": "http://patchwork.dpdk.org/api/patches/131185/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<dev-bounces@dpdk.org>", "X-Original-To": "patchwork@inbox.dpdk.org", "Delivered-To": "patchwork@inbox.dpdk.org", "Received": [ "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 2777942528;\n\tWed, 6 Sep 2023 11:34:25 +0200 (CEST)", "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id D7FFA402C6;\n\tWed, 6 Sep 2023 11:34:22 +0200 (CEST)", "from mgamail.intel.com (mgamail.intel.com [192.55.52.120])\n by mails.dpdk.org (Postfix) with ESMTP id 7D977402BD\n for <dev@dpdk.org>; Wed, 6 Sep 2023 11:34:20 +0200 (CEST)", "from fmsmga001.fm.intel.com ([10.253.24.23])\n by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 06 Sep 2023 02:34:20 -0700", "from dpdk-wenjing-02.sh.intel.com ([10.67.119.75])\n by fmsmga001.fm.intel.com with ESMTP; 06 Sep 2023 02:34:07 -0700" ], "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple;\n d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n t=1693992860; x=1725528860;\n h=from:to:cc:subject:date:message-id:in-reply-to:\n references:mime-version:content-transfer-encoding;\n bh=Y0vsEhizp4sEZiRabZb+UKeE27BzIna15bA2FxV5Zk0=;\n b=brAvMf3wqpkwmYN6rHli64NcE9ZFrJQWhQMeO52HEURbA5ELoMygDVKU\n 4GciQsHdE068Q4KNhtEpISfpwKFIKsXiXGgYLp+9cNaYOL2V7jXVyvjNt\n qS01R9487tGSaGptVW3VskPCPETK8FkR3RYMLWYP0SfBA6kbCedVVyzIS\n vqW+MJuLhxY8j67OYouDKym7Ao0j+3J8/J/Slq1dboHpfU9PD7Gg1J2pG\n K7e9czsDp4bjX/QgxfidvzuoCO4wv8b2RZEGO5oJTSu1V+tkESKgdZCVd\n Pz82dkOtUqXUHeHg4ltLbeyYx+yyKpiH+ziehmvktEFZY4aqkFGVUDaA0 Q==;", "X-IronPort-AV": [ "E=McAfee;i=\"6600,9927,10824\"; a=\"375919349\"", "E=Sophos;i=\"6.02,231,1688454000\"; d=\"scan'208\";a=\"375919349\"", "E=McAfee;i=\"6600,9927,10824\"; a=\"884623094\"", "E=Sophos;i=\"6.02,231,1688454000\"; d=\"scan'208\";a=\"884623094\"" ], "X-ExtLoop1": "1", "From": "Wenjing Qiao <wenjing.qiao@intel.com>", "To": "yuying.zhang@intel.com, dev@dpdk.org, qi.z.zhang@intel.com,\n jingjing.wu@intel.com, beilei.xing@intel.com", "Cc": "mingxia.liu@intel.com,\n\tWenjing Qiao <wenjing.qiao@intel.com>", "Subject": "[PATCH v3 1/9] net/cpfl: parse flow parser file in devargs", "Date": "Wed, 6 Sep 2023 09:33:59 +0000", "Message-Id": "<20230906093407.3635038-2-wenjing.qiao@intel.com>", "X-Mailer": "git-send-email 2.34.1", "In-Reply-To": "<20230906093407.3635038-1-wenjing.qiao@intel.com>", "References": "<20230901113158.1654044-1-yuying.zhang@intel.com>\n <20230906093407.3635038-1-wenjing.qiao@intel.com>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "X-BeenThere": "dev@dpdk.org", "X-Mailman-Version": "2.1.29", "Precedence": "list", "List-Id": "DPDK patches and discussions <dev.dpdk.org>", "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>", "List-Archive": "<http://mails.dpdk.org/archives/dev/>", "List-Post": "<mailto:dev@dpdk.org>", "List-Help": "<mailto:dev-request@dpdk.org?subject=help>", "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>", "Errors-To": "dev-bounces@dpdk.org" }, "content": "Add devargs \"flow_parser\" for rte_flow json parser.\n\nSigned-off-by: Wenjing Qiao <wenjing.qiao@intel.com>\n---\n doc/guides/nics/cpfl.rst | 32 ++++++++++++++++++++++++++++\n drivers/net/cpfl/cpfl_ethdev.c | 38 +++++++++++++++++++++++++++++++++-\n drivers/net/cpfl/cpfl_ethdev.h | 3 +++\n drivers/net/cpfl/meson.build | 6 ++++++\n 4 files changed, 78 insertions(+), 1 deletion(-)", "diff": "diff --git a/doc/guides/nics/cpfl.rst b/doc/guides/nics/cpfl.rst\nindex c20334230b..7032dd1a1a 100644\n--- a/doc/guides/nics/cpfl.rst\n+++ b/doc/guides/nics/cpfl.rst\n@@ -128,12 +128,24 @@ Runtime Configuration\n \n -a BDF,representor=vf[0-3],representor=c1pf1\n \n+- ``flow_parser`` (default ``not enabled``)\n+\n+ The PMD supports using a JSON file to parse rte_flow tokens into low level hardware\n+ resources defined in a DDP package file.\n+\n+ The user can specify the path of json file, for example::\n+\n+ -a ca:00.0,flow_parser=\"refpkg.json\"\n+\n+ Then the PMD will load json file for device ``ca:00.0``.\n+ The parameter is optional.\n \n Driver compilation and testing\n ------------------------------\n \n Refer to the document :doc:`build_and_test` for details.\n \n+Rte flow need to install json-c library.\n \n Features\n --------\n@@ -164,3 +176,23 @@ Hairpin queue\n E2100 Series can loopback packets from RX port to TX port.\n This feature is called port-to-port or hairpin.\n Currently, the PMD only supports single port hairpin.\n+\n+Rte_flow\n+~~~~~~~~~~~~~\n+\n+Rte_flow uses a json file to direct CPF PMD to parse rte_flow tokens into\n+low level hardware resources defined in a DDP package file.\n+\n+#. install json-c library::\n+\n+ .. code-block:: console\n+\n+ git clone https://github.com/json-c/json-c.git\n+ cd json-c\n+ git checkout 777dd06be83ef7fac71c2218b565557cd068a714\n+\n+#. run testpmd with the json file::\n+\n+ .. code-block:: console\n+\n+ dpdk-testpmd -c 0x3 -n 4 -a 0000:af:00.6,vport=[0],flow_parser=\"refpkg.json\" -- -i\ndiff --git a/drivers/net/cpfl/cpfl_ethdev.c b/drivers/net/cpfl/cpfl_ethdev.c\nindex 88c1479f3a..3c4a6a4724 100644\n--- a/drivers/net/cpfl/cpfl_ethdev.c\n+++ b/drivers/net/cpfl/cpfl_ethdev.c\n@@ -21,6 +21,10 @@\n #define CPFL_RX_SINGLE_Q\t\"rx_single\"\n #define CPFL_VPORT\t\t\"vport\"\n \n+#ifdef CPFL_FLOW_JSON_SUPPORT\n+#define CPFL_FLOW_PARSER\t\"flow_parser\"\n+#endif\n+\n rte_spinlock_t cpfl_adapter_lock;\n /* A list for all adapters, one adapter matches one PCI device */\n struct cpfl_adapter_list cpfl_adapter_list;\n@@ -31,6 +35,9 @@ static const char * const cpfl_valid_args_first[] = {\n \tCPFL_TX_SINGLE_Q,\n \tCPFL_RX_SINGLE_Q,\n \tCPFL_VPORT,\n+#ifdef CPFL_FLOW_JSON_SUPPORT\n+\tCPFL_FLOW_PARSER,\n+#endif\n \tNULL\n };\n \n@@ -1537,6 +1544,24 @@ parse_repr(const char *key __rte_unused, const char *value, void *args)\n \treturn 0;\n }\n \n+#ifdef CPFL_FLOW_JSON_SUPPORT\n+static int\n+parse_file(const char *key, const char *value, void *args)\n+{\n+\tchar *name = args;\n+\n+\tif (strlen(value) > CPFL_FLOW_FILE_LEN - 1) {\n+\t\tPMD_DRV_LOG(ERR, \"file path(%s) is too long.\", value);\n+\t\treturn -1;\n+\t}\n+\n+\tPMD_DRV_LOG(DEBUG, \"value:\\\"%s\\\" for key:\\\"%s\\\"\", value, key);\n+\tstrlcpy(name, value, CPFL_FLOW_FILE_LEN);\n+\n+\treturn 0;\n+}\n+#endif\n+\n static int\n cpfl_parse_devargs(struct rte_pci_device *pci_dev, struct cpfl_adapter_ext *adapter, bool first)\n {\n@@ -1585,7 +1610,18 @@ cpfl_parse_devargs(struct rte_pci_device *pci_dev, struct cpfl_adapter_ext *adap\n \t\t\t\t &adapter->base.is_rx_singleq);\n \tif (ret != 0)\n \t\tgoto fail;\n-\n+#ifdef CPFL_FLOW_JSON_SUPPORT\n+\tif (rte_kvargs_get(kvlist, CPFL_FLOW_PARSER)) {\n+\t\tret = rte_kvargs_process(kvlist, CPFL_FLOW_PARSER,\n+\t\t\t\t\t &parse_file, cpfl_args->flow_parser);\n+\t\tif (ret) {\n+\t\t\tPMD_DRV_LOG(ERR, \"Failed to parser flow_parser, ret: %d\", ret);\n+\t\t\tgoto fail;\n+\t\t}\n+\t} else {\n+\t\tcpfl_args->flow_parser[0] = '\\0';\n+\t}\n+#endif\n fail:\n \trte_kvargs_free(kvlist);\n \treturn ret;\ndiff --git a/drivers/net/cpfl/cpfl_ethdev.h b/drivers/net/cpfl/cpfl_ethdev.h\nindex a891bd8df9..ed730cc0e9 100644\n--- a/drivers/net/cpfl/cpfl_ethdev.h\n+++ b/drivers/net/cpfl/cpfl_ethdev.h\n@@ -87,6 +87,8 @@\n #define ACC_LCE_ID\t15\n #define IMC_MBX_EFD_ID\t0\n \n+#define CPFL_FLOW_FILE_LEN 100\n+\n struct cpfl_vport_param {\n \tstruct cpfl_adapter_ext *adapter;\n \tuint16_t devarg_id; /* arg id from user */\n@@ -100,6 +102,7 @@ struct cpfl_devargs {\n \tuint16_t req_vport_nb;\n \tuint8_t repr_args_num;\n \tstruct rte_eth_devargs repr_args[CPFL_REPR_ARG_NUM_MAX];\n+\tchar flow_parser[CPFL_FLOW_FILE_LEN];\n };\n \n struct p2p_queue_chunks_info {\ndiff --git a/drivers/net/cpfl/meson.build b/drivers/net/cpfl/meson.build\nindex fb075c6860..0be25512c3 100644\n--- a/drivers/net/cpfl/meson.build\n+++ b/drivers/net/cpfl/meson.build\n@@ -38,3 +38,9 @@ if arch_subdir == 'x86'\n cflags += ['-DCC_AVX512_SUPPORT']\n endif\n endif\n+\n+js_dep = dependency('json-c', required: false, method : 'pkg-config')\n+if js_dep.found()\n+ dpdk_conf.set('CPFL_FLOW_JSON_SUPPORT', true)\n+ ext_deps += js_dep\n+endif\n\\ No newline at end of file\n", "prefixes": [ "v3", "1/9" ] }{ "id": 131185, "url": "