Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/41947/?format=api
http://patchwork.dpdk.org/api/patches/41947/?format=api", "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/1530267871-7161-10-git-send-email-jia.guo@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": "<1530267871-7161-10-git-send-email-jia.guo@intel.com>", "list_archive_url": "https://inbox.dpdk.org/dev/1530267871-7161-10-git-send-email-jia.guo@intel.com", "date": "2018-06-29T10:24:31", "name": "[V4,9/9] app/testpmd: enable device hotplug monitoring", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": true, "hash": "d29fee62fbebb418eddd933e546ee84e244a0ea7", "submitter": { "id": 507, "url": "http://patchwork.dpdk.org/api/people/507/?format=api", "name": "Guo, Jia", "email": "jia.guo@intel.com" }, "delegate": null, "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/1530267871-7161-10-git-send-email-jia.guo@intel.com/mbox/", "series": [ { "id": 314, "url": "http://patchwork.dpdk.org/api/series/314/?format=api", "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=314", "date": "2018-06-29T10:24:22", "name": "hot plug failure handle mechanism", "version": 4, "mbox": "http://patchwork.dpdk.org/series/314/mbox/" } ], "comments": "http://patchwork.dpdk.org/api/patches/41947/comments/", "check": "success", "checks": "http://patchwork.dpdk.org/api/patches/41947/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<dev-bounces@dpdk.org>", "X-Original-To": "patchwork@dpdk.org", "Delivered-To": "patchwork@dpdk.org", "Received": [ "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 1A5F41B566;\n\tFri, 29 Jun 2018 12:27:20 +0200 (CEST)", "from mga03.intel.com (mga03.intel.com [134.134.136.65])\n\tby dpdk.org (Postfix) with ESMTP id 6A66A1B562\n\tfor <dev@dpdk.org>; Fri, 29 Jun 2018 12:27:18 +0200 (CEST)", "from fmsmga005.fm.intel.com ([10.253.24.32])\n\tby orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t29 Jun 2018 03:27:18 -0700", "from jeffguo-z170x-ud5.sh.intel.com (HELO localhost.localdomain)\n\t([10.67.104.10])\n\tby fmsmga005.fm.intel.com with ESMTP; 29 Jun 2018 03:27:15 -0700" ], "X-Amp-Result": "SKIPPED(no attachment in message)", "X-Amp-File-Uploaded": "False", "X-ExtLoop1": "1", "X-IronPort-AV": "E=Sophos;i=\"5.51,285,1526367600\"; d=\"scan'208\";a=\"241324473\"", "From": "Jeff Guo <jia.guo@intel.com>", "To": "stephen@networkplumber.org, bruce.richardson@intel.com,\n\tferruh.yigit@intel.com, konstantin.ananyev@intel.com,\n\tgaetan.rivet@6wind.com, jingjing.wu@intel.com, thomas@monjalon.net,\n\tmotih@mellanox.com, matan@mellanox.com, harry.van.haaren@intel.com,\n\tqi.z.zhang@intel.com, shaopeng.he@intel.com, bernard.iremonger@intel.com", "Cc": "jblunck@infradead.org, shreyansh.jain@nxp.com, dev@dpdk.org,\n\tjia.guo@intel.com, helin.zhang@intel.com", "Date": "Fri, 29 Jun 2018 18:24:31 +0800", "Message-Id": "<1530267871-7161-10-git-send-email-jia.guo@intel.com>", "X-Mailer": "git-send-email 2.7.4", "In-Reply-To": "<1530267871-7161-1-git-send-email-jia.guo@intel.com>", "References": "<1530267871-7161-1-git-send-email-jia.guo@intel.com>", "Subject": "[dpdk-dev] [PATCH V4 9/9] app/testpmd: enable device hotplug\n\tmonitoring", "X-BeenThere": "dev@dpdk.org", "X-Mailman-Version": "2.1.15", "Precedence": "list", "List-Id": "DPDK patches and discussions <dev.dpdk.org>", "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n\t<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\t<mailto:dev-request@dpdk.org?subject=subscribe>", "Errors-To": "dev-bounces@dpdk.org", "Sender": "\"dev\" <dev-bounces@dpdk.org>" }, "content": "As we know, there 2 different hotplug mechanisms in dpdk, the one is\nethdev event + kernel driver hotplug solution, while the other one is\neal device event + pci uio driver hotplug solution, each of them have\ndifferent configure and callback process in testpmd. In oder to avoid\nthe race between them, this patch aim to use a new parameter\n\"--hotplug-mode\" to replace the previous \"--hot-plug\" command parameter,\nto identify these different mode.\n\nThere are 3 modes on hotplug mode: disable, eal, or ethdev(default).\n\nIf user want to use eal device event monitor mode, could use below\ncommand when start testpmd. If not set this parameter, ethdev hotplug\nmode is default to be used.\n\nE.g. ./build/app/testpmd -c 0x3 --n 4 -- -i --hotplug-mode=eal\n\nSigned-off-by: Jeff Guo <jia.guo@intel.com>\n---\nv4->v3:\nchange to use new parameter \"--hotplug-mode\" in testpmd\nto identify the eal hotplug and ethdev hotplug\n---\n app/test-pmd/parameters.c | 20 ++++++++++++++++----\n app/test-pmd/testpmd.c | 18 +++++++++++-------\n app/test-pmd/testpmd.h | 8 +++++++-\n doc/guides/testpmd_app_ug/run_app.rst | 10 ++++++++--\n 4 files changed, 42 insertions(+), 14 deletions(-)", "diff": "diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c\nindex 7580762..601e13e 100644\n--- a/app/test-pmd/parameters.c\n+++ b/app/test-pmd/parameters.c\n@@ -186,7 +186,8 @@ usage(char* progname)\n \tprintf(\" --flow-isolate-all: \"\n \t \"requests flow API isolated mode on all ports at initialization time.\\n\");\n \tprintf(\" --tx-offloads=0xXXXXXXXX: hexadecimal bitmask of TX queue offloads\\n\");\n-\tprintf(\" --hot-plug: enable hot plug for device.\\n\");\n+\tprintf(\" --hotplug-mode=N: set hotplug mode for device \"\n+\t \"(N: disable (default) or eal or ethdev.\\n\");\n \tprintf(\" --vxlan-gpe-port=N: UPD port of tunnel VXLAN-GPE\\n\");\n \tprintf(\" --mlockall: lock all memory\\n\");\n \tprintf(\" --no-mlockall: do not lock all memory\\n\");\n@@ -621,7 +622,7 @@ launch_args_parse(int argc, char** argv)\n \t\t{ \"print-event\",\t\t1, 0, 0 },\n \t\t{ \"mask-event\",\t\t\t1, 0, 0 },\n \t\t{ \"tx-offloads\",\t\t1, 0, 0 },\n-\t\t{ \"hot-plug\",\t\t\t0, 0, 0 },\n+\t\t{ \"hotplug-mode\",\t\t1, 0, 0 },\n \t\t{ \"vxlan-gpe-port\",\t\t1, 0, 0 },\n \t\t{ \"mlockall\",\t\t\t0, 0, 0 },\n \t\t{ \"no-mlockall\",\t\t0, 0, 0 },\n@@ -1139,8 +1140,19 @@ launch_args_parse(int argc, char** argv)\n \t\t\t\t\trte_exit(EXIT_FAILURE,\n \t\t\t\t\t\t \"invalid mask-event argument\\n\");\n \t\t\t\t}\n-\t\t\tif (!strcmp(lgopts[opt_idx].name, \"hot-plug\"))\n-\t\t\t\thot_plug = 1;\n+\t\t\tif (!strcmp(lgopts[opt_idx].name, \"hotplug-mode\")) {\n+\t\t\t\tif (!strcmp(optarg, \"disable\"))\n+\t\t\t\t\thotplug_mode = HOTPLUG_MODE_DISABLE;\n+\t\t\t\telse if (!strcmp(optarg, \"eal\"))\n+\t\t\t\t\thotplug_mode = HOTPLUG_MODE_EAL;\n+\t\t\t\telse if (!strcmp(optarg, \"ethdev\"))\n+\t\t\t\t\thotplug_mode = HOTPLUG_MODE_ETHDEV;\n+\t\t\t\telse\n+\t\t\t\t\trte_exit(EXIT_FAILURE,\n+\t\t\t\t\t\t \"hotplug-mode %s invalid - must be: \"\n+\t\t\t\t\t\t \"disable, eal, ethdev.\\n\",\n+\t\t\t\t\t\t optarg);\n+\t\t\t}\n \t\t\tif (!strcmp(lgopts[opt_idx].name, \"mlockall\"))\n \t\t\t\tdo_mlockall = 1;\n \t\t\tif (!strcmp(lgopts[opt_idx].name, \"no-mlockall\"))\ndiff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c\nindex 42ed196..9269400 100644\n--- a/app/test-pmd/testpmd.c\n+++ b/app/test-pmd/testpmd.c\n@@ -286,7 +286,7 @@ uint8_t lsc_interrupt = 1; /* enabled by default */\n */\n uint8_t rmv_interrupt = 1; /* enabled by default */\n \n-uint8_t hot_plug = 0; /**< hotplug disabled by default. */\n+uint8_t hotplug_mode = HOTPLUG_MODE_ETHDEV; /**< hotplug disabled by default. */\n \n /*\n * Display or mask ether events\n@@ -2043,7 +2043,7 @@ pmd_test_exit(void)\n \t\t}\n \t}\n \n-\tif (hot_plug) {\n+\tif (hotplug_mode == HOTPLUG_MODE_EAL) {\n \t\tret = rte_dev_event_monitor_stop();\n \t\tif (ret)\n \t\t\tRTE_LOG(ERR, EAL,\n@@ -2181,9 +2181,13 @@ eth_event_callback(portid_t port_id, enum rte_eth_event_type type, void *param,\n \n \tswitch (type) {\n \tcase RTE_ETH_EVENT_INTR_RMV:\n-\t\tif (rte_eal_alarm_set(100000,\n-\t\t\t\trmv_event_callback, (void *)(intptr_t)port_id))\n-\t\t\tfprintf(stderr, \"Could not set up deferred device removal\\n\");\n+\t\tif (hotplug_mode == HOTPLUG_MODE_ETHDEV) {\n+\t\t\tif (rte_eal_alarm_set(100000,\n+\t\t\t\t\trmv_event_callback,\n+\t\t\t\t\t(void *)(intptr_t)port_id))\n+\t\t\t\tfprintf(stderr, \"Could not set up deferred \"\n+\t\t\t\t\t\"device removal\\n\");\n+\t\t}\n \t\tbreak;\n \tdefault:\n \t\tbreak;\n@@ -2734,8 +2738,8 @@ main(int argc, char** argv)\n \n \tinit_config();\n \n-\tif (hot_plug) {\n-\t\t/* enable hot plug monitoring */\n+\tif (hotplug_mode == HOTPLUG_MODE_EAL) {\n+\t\t/* enable hotplug event monitoring */\n \t\tret = rte_dev_event_monitor_start();\n \t\tif (ret) {\n \t\t\trte_errno = EINVAL;\ndiff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h\nindex f51cd9d..e29ee2a 100644\n--- a/app/test-pmd/testpmd.h\n+++ b/app/test-pmd/testpmd.h\n@@ -69,6 +69,12 @@ enum {\n \tPORT_TOPOLOGY_LOOP,\n };\n \n+enum {\n+\tHOTPLUG_MODE_DISABLE,\n+\tHOTPLUG_MODE_EAL,\n+\tHOTPLUG_MODE_ETHDEV,\n+};\n+\n #ifdef RTE_TEST_PMD_RECORD_BURST_STATS\n /**\n * The data structure associated with RX and TX packet burst statistics\n@@ -335,7 +341,7 @@ extern uint8_t lsc_interrupt; /**< disabled by \"--no-lsc-interrupt\" parameter */\n extern uint8_t rmv_interrupt; /**< disabled by \"--no-rmv-interrupt\" parameter */\n extern uint32_t event_print_mask;\n /**< set by \"--print-event xxxx\" and \"--mask-event xxxx parameters */\n-extern uint8_t hot_plug; /**< enable by \"--hot-plug\" parameter */\n+extern uint8_t hotplug_mode; /**< set by \"--hotplug-mode\" parameter */\n extern int do_mlockall; /**< set by \"--mlockall\" or \"--no-mlockall\" parameter */\n \n #ifdef RTE_LIBRTE_IXGBE_BYPASS\ndiff --git a/doc/guides/testpmd_app_ug/run_app.rst b/doc/guides/testpmd_app_ug/run_app.rst\nindex f301c2b..09e2716 100644\n--- a/doc/guides/testpmd_app_ug/run_app.rst\n+++ b/doc/guides/testpmd_app_ug/run_app.rst\n@@ -482,9 +482,15 @@ The commandline options are:\n Set the hexadecimal bitmask of TX queue offloads.\n The default value is 0.\n \n-* ``--hot-plug``\n+* ``--hotplug-mode``\n \n- Enable device event monitor machenism for hotplug.\n+ Set the hotplug handle mode, that is ``disable`` or ``eal`` or ``ethdev`` (the default).\n+\n+ In ``disable`` mode, it will not handle the hotplug for device.\n+\n+ In ``eal`` mode, it will start device event monitor and register eth_dev_event_callback for hotplug process.\n+\n+ In ``ethdev`` mode, it will process RTE_ETH_EVENT_INTR_RMV event which is detected from ethdev.\n \n * ``--vxlan-gpe-port=N``\n \n", "prefixes": [ "V4", "9/9" ] }{ "id": 41947, "url": "