From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50050.outbound.protection.outlook.com [40.107.5.50]) by dpdk.org (Postfix) with ESMTP id 9E2612BA7 for ; Mon, 7 May 2018 10:32:36 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=Kd7zfVIs4SZUW9YpUUlg3UXTQ7iWtLxmQ42T+wLgbwQ=; b=n0Q/FYUPfkfDF3emw1Y46goGrnORoYbq8RiRIG7Ie+gSRMISyYAH1e6nEBOo7bIzaZ4bhLDgqLXjfDnjFPh2b/XmZRAdNKpLmfcXOb59GhalQyWbKc4MRRPebz76b2TFAdsZ3G9aQAbWqLZovfcH7ed1Y/5xH5XQiWYZd48BM1k= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=ophirmu@mellanox.com; Received: from mellanox.com (37.142.13.130) by VI1PR0501MB2317.eurprd05.prod.outlook.com (2603:10a6:800:2c::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.735.17; Mon, 7 May 2018 08:32:34 +0000 From: Ophir Munk To: Ophir Munk Cc: stable@dpdk.org Date: Mon, 7 May 2018 08:32:25 +0000 Message-Id: <1525681945-21606-1-git-send-email-ophirmu@mellanox.com> X-Mailer: git-send-email 1.8.3.1 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [37.142.13.130] X-ClientProxiedBy: VI1P193CA0001.EURP193.PROD.OUTLOOK.COM (2603:10a6:800:bd::11) To VI1PR0501MB2317.eurprd05.prod.outlook.com (2603:10a6:800:2c::18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(48565401081)(2017052603328)(7153060)(7193020); SRVR:VI1PR0501MB2317; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0501MB2317; 3:qvgMrFhZ+jT7bzLL54oNE6Pp9nfCXhAw+zOTIKF19vpccYzK8GWS5vivdoVez5GCmdcLpIZx0fdLf2bS32utXnHDk3pmSfndBngGcok97N7QuaG3Aw7Uwk3dpwzuXD1jEBPc+fnUuPy6bQmPcMayE0ub26vW7pDSGzaXr3CrArV91PoMQcJqPdtujKwfcUXkWhaJtdpoNMakX0VNtAvNRh4KjczTEcQyj/QiDAlJb8G1Iy767WRb4ueSmQfGPUj3; 25:4T4Ttw7TV8eVtL2EY0hN8bCKLFkd0r5Qdm2XPsp489TNsoQaFKpj+RedH/JNgSgW5Y2Zz1yoSup3thTBk+l0YbYnBAlXdSskDN87m4q235wf8ng04FfvPm+6aM82PuDLsO1P35Y+Ke9zYeTEOSR8xXYSFkF5VmzOvQGQ+kknkeiFM3muYAQo4jMZ4508Nj2fP655fuHoK7VqjYJU3dIMvlfnx0LEWhsLby7uJrs9q25lsYagIVLMAVSHvYGJFPWxWXZvVsQtCalRsX6iIZpRXEHn6UMhyZx5nY2Jm8sHgYQDQtwZ3BmNvRpDveSouEBEuzvqpOkiaCcL9fcqeSwDpQ==; 31:BPPgJELdSd5L2J/qSebClGEqL3S4+pL/ZKnoUtU2jVbz3624Y10cQHnswi4mhWbALTHYW15ilxTU2FL2q6A6nHDRy8MH4vAMU1WTFxB2T+pV34Ztbvxlb+JXUwrUFj9h5yLuiERO2qQ+FsTTM32BpsW4GsUxaoId3Gw0CTO2hAABWYO/cMiJWG8F7PlJUOukbUHTYgherkcvncM3nj+DqIH6QzItc/nPzm0nSaJ//IU= X-MS-TrafficTypeDiagnostic: VI1PR0501MB2317: X-Microsoft-Exchange-Diagnostics: 1; VI1PR0501MB2317; 20:k94+h9Y1z/oJAhme4ZIC/w0Ly/1HUwwYN02N/mswZgQwFo6seycnAzB+zibz56GUmz+P1FBwhzz9XoaMNvOxCd6zfKsVSEjq5kp/Bx+wdW39qEcM0CM+bOhpJGmsb51pbzirkqPcNRGGzjneKnnFMyg20Ibp0HYuZoN4F/foqFt+hbYQc1k5Lxx0uMCkri0BOf1JfOodRk6JW+edX1PTtKJNiDIjsadCE0stSMCvWR7fNzPkcVmPo5QCT8aeFjM/TVtTHQDiW9ofCyf7j6f0FPW/HZ2OYzYO8ZHb86+WB3d+dEP2r/gM1xpXMX8PCjKez69cTP1hJv9NincaI63M//43irMYNoW64dX/T1/O0RFA7smo8RcevfUJFJhnnNL/z4tj5f3XfaGDCBsbhNa/1AGDNZcNcMPv+roobDWgbmpYSww2gxT7gLo/vephcP/QkTa8qINqc9AtOKqPi3MZM3SOy/jtH1ba5P7/LHFlwxLLomtU/Nc4Q01EG/mR6X9Y; 4:83ImPxvKlTRefcmkI7U03rAm1OXa0u4fgSWOSM9GB6xultZpWxsUw2qYNSI28YGlnDgmDZOklvC7O/vBfVJ6iHYv8docipJL5rdpuzcp33MG+vg5ohuxw5kftXPCmbQnJwnGRFZ60ar+h5z2EoqckW5RY0enKxO9MYDyFiaaVCDK4ysr4hnhIz7PFhx4V3yLKn1rW8PhRT0By3tx1UxGgiIFwcOXPBDA5rjhVuApT75NiX47b/EEm8l89MkJgpCLomqVtpX44sTvq6nC9LjiEg== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(93006095)(93001095)(3231254)(944501410)(52105095)(3002001)(10201501046)(6055026)(149027)(150027)(6041310)(20161123560045)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123564045)(6072148)(201708071742011); SRVR:VI1PR0501MB2317; BCL:0; PCL:0; RULEID:; SRVR:VI1PR0501MB2317; X-Forefront-PRVS: 066517B35B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(346002)(39380400002)(39860400002)(376002)(366004)(189003)(199004)(5660300001)(48376002)(50466002)(21086003)(97736004)(4326008)(6666003)(2906002)(53936002)(55016002)(47776003)(6200100001)(6862004)(66066001)(105586002)(106356001)(69596002)(36756003)(4720700003)(7049001)(33026002)(16526019)(3846002)(25786009)(8676002)(7736002)(6116002)(2616005)(68736007)(956004)(51416003)(476003)(86362001)(16586007)(52116002)(7696005)(486006)(386003)(316002)(37006003)(8936002)(81156014)(81166006)(50226002)(305945005)(26005)(478600001)(309714004); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR0501MB2317; H:mellanox.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0501MB2317; 23:keeLNcm70z0qFifmg4EbCCjXe74vkAviDctV3Z8?= =?us-ascii?Q?9fALomLHxGpoL1VFsplrUAHtIlbYi1FQ2yDorQu2ZCFdGnPV5L2bJ+/K4BVk?= =?us-ascii?Q?LK+TdwLDKz0QS6UtPXO4+RVZb1f8Dzo70Am1NN//80d2wuTOyEv9XSBmqq/0?= =?us-ascii?Q?8JkXi3XQqmX9p03zIV/7irddsThgjqiv1cuInlv/jTx/hjstGaotfmx9or7a?= =?us-ascii?Q?DlPrmyoL5xjapYb4rRsO9SIhKsT1ktdN4sPy1n0yZwan8BdjKSDWfR/9Y5S8?= =?us-ascii?Q?4dfKUDHPXn8ayXYw8bkO0FO2h86JwLl1YtUPdHxN2zGPypvc5d1Xi6UuJBF4?= =?us-ascii?Q?/wxztAg32xTVdKOxnLSnJAJa6QDdzmLoLWYyapH9KB2BkiDF+exnFF9k0+iv?= =?us-ascii?Q?Ms3SCR/P+5mkvwXDwj9Bt+auoFX2Vim0MLxIYp0pN5a9dKOk47WXL6XotzJH?= =?us-ascii?Q?S1AkbmxGLTUEXKu39+nU7wnuI5FRL3OdBN7k/hTE1/t8vPoaXORaPcOcNCyy?= =?us-ascii?Q?c8IDuYNK0ckmLnOQQFPsla8PY/mpAb5OKk72aAAVEbpuHvL29wdkmRlQ9ty7?= =?us-ascii?Q?ybDy7iDJbaAOvDcXaIYVkfSMKIzHhtbq0zAtg9majaTwNKG+q3A582KJwJir?= =?us-ascii?Q?GpuGFaHZE6QUjVGSrfN6pw106ePQce6bttco/n0D+sGGLFA0pqL+xbHruzlA?= =?us-ascii?Q?+yaYSEnVAJ5d4yEz29XqBtyvW67FTRjvn1Im/diMoCwxik0Or6GC1JAv1D1f?= =?us-ascii?Q?523GGjn9vio3xMnP+ZOxeh2ccrtXZbLiVJGYJkNl1ddCQEwFjdviYvo5ZXLk?= =?us-ascii?Q?0JyhDMOtIroTpTfbc9R5WeSa8hsuWZ8VBRJYEc3tYFJM4z5p3AZsHDF1rSDg?= =?us-ascii?Q?yWlbPcYjsN1F8wyTcfOySENqxBiXlgpCjLHfprs+hBaEfxr9RueiT4uPSzhl?= =?us-ascii?Q?OWzWA9rlxXCMqNbL9SzvqI1B10G0JDW9q1CswkyPg7GU1ANUf/yRkjAA9FBk?= =?us-ascii?Q?BX2om2p40qcnAwNTMLfvF2j9nO3or1a2tHJzTXYCbMPUDB2o7qqLObGkdzDj?= =?us-ascii?Q?6E/iYyfknIkmW7IroLeY14BI6pcDfx0bFu/6zmspwhdnr5PL6jqVHayvCMOZ?= =?us-ascii?Q?Wo/0q66FDUbwIauTBoyXSKtUVX/0rPxzUbiNRama4e2HO7u2tVU+Eu/qSiJ+?= =?us-ascii?Q?GtVvGiCUbVJJCekvlYasfQuS+bqptCohf86PR1jPgKyGrba6anfNs3h/MO0H?= =?us-ascii?Q?omsMzHdCAietviauywTmTykq5zc6zEym8SnTJWR5Y?= X-Microsoft-Antispam-Message-Info: Sq3N5sGEOYrPZQupCDryp71ah+0HNSIz5hzQKcXSeIOJVQNpC5jNLcxinYtFdR7CU6gVdNuYqWaXGSc8nR/1jJnbTXxGVc6kG0/Lm2y97aB/IGGpH8M8D1JubUdoOPxPh8uQ1FIzEOfxzPWP5yZyCmGo318k15U4QyeESI1aeJ/pGVremIFaN/CYan9UEQDW X-Microsoft-Exchange-Diagnostics: 1; VI1PR0501MB2317; 6:I7zfHUER/bj29ucql0Tt1F8pv65MYHNMsYghAu4GIfruwcS05f+4QbgiAgFQPr2CidqF3E0wqPEjGoAAPDDwDqWhNVzW/CEMPZTNAs79shHEB64vBYYhIIUbpxzCldbQYjDh3ggt2z1Ig0uL7YVfFtL9FnZjfl/cTC2Cw04M09i913t0tr61iIWKtPa7ofGNYHkz7atryC9R0danpfO/5pvqaZTKxF/3Sdzbhp74gqQRFnMNLaUQDC9ZfSgPS/tQJ37j6E+ygfulGgLmGaKljqGM7fxRtqGEFa8FV3SmRZtY4OQM80Swpc7a3tBhyXLEPa2f6mpe4GMT3ahcegNueRQr5gvbzy60XXvpepYtK5eesjV2zK2W39BFFPTexuv9NNvc34KilPBSXAFvrEYiLT/vQa6WQno4gn+HnwW8+zdnrCE59yhZsWX0t0pMJGpjTRc7xRqBks9PCu2/DvHkNQ==; 5:36KmwHo1nuW8vbQtDJPpPDn3kPl7xxJexF+ar4pfHvJ/CE5XZhCX7Hg8gqfc4MswmlWzi0d4+8kZeJFwRb13vedafLDXrQ9dqxIG6ncKE/hZ9OKrXei0QgRZmKgOPJv8+BsJusNzynlhUYeYwWmJtpFdPOZBFPD9Q8OWd9ak2/s=; 24:KKX0lIIgyBHPs76rqAmsqpcf5foY6F43jC2nif8c7+9ufks0/Btchmi2tE+pIRkmiVSdU+DNLBdeD19b+WfDKspYn+xnplnHdAB8INa4M1E= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; VI1PR0501MB2317; 7:jVShLLg7BIuj4lj5Bfh7tKKUG0y9tR+HqPWiRzaO51slXX1ofZmuEMlOh6gP2inmzTum3r/hAZOgZ093z5ogpQLCXdedcu5XVD5UjGRpWmEdcppyOslkQKR/1P5daxLGWqgXy7U3hLyKR3MGfPDU5rkXEYiv30GMlooDjJqLrTYqWDppIToDJ8EfA6zWtYKGh+DHZh27WbP/sH/Ina+ucg+GufTmahwfze383jE3B03Up3caQjVHHura4vi7wLE3 X-MS-Office365-Filtering-Correlation-Id: 8c54873f-8524-4815-df61-08d5b3f51576 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 May 2018 08:32:34.7045 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 8c54873f-8524-4815-df61-08d5b3f51576 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0501MB2317 Subject: [dpdk-stable] [PATCH v1] net/tap: fix isolation mode toggling X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 May 2018 08:32:36 -0000 Running testpmd command "flow isolae 0" (i.e. disabling flow isolation) followed by command "port isolate 1" (i.e. enabling flow isolation) may result in a TAP error: PMD: Kernel refused TC filter rule creation (17): File exists Root cause analysis: when disabling flow isolation we keep the local rule to redirect packets on TX (TAP_REMOTE_TX index) while we add it again when enabling flow isolation. As a result this rule is added two times in a raw which results in "File exists" error. The fix is to identify the "File exists" error and silently ignore it. Another issue occurs when enabling isolation mode several times in a raw in which case the same tc rules are added consecutively and rte_flow structs are added to a linked list before removing the previous rte_flow structs. The fix is to act upon isolation mode command only when there is a change from "0" to "1" (or vice versa). Fixes: f503d2694825 ("net/tap: support flow API isolated mode") Cc: stable@dpdk.org Signed-off-by: Ophir Munk --- drivers/net/tap/tap_flow.c | 37 +++++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/drivers/net/tap/tap_flow.c b/drivers/net/tap/tap_flow.c index aab9eef..91f15f6 100644 --- a/drivers/net/tap/tap_flow.c +++ b/drivers/net/tap/tap_flow.c @@ -1568,10 +1568,10 @@ tap_flow_isolate(struct rte_eth_dev *dev, { struct pmd_internals *pmd = dev->data->dev_private; - if (set) - pmd->flow_isolate = 1; - else - pmd->flow_isolate = 0; + /* if already in the right isolation mode - nothing to do */ + if ((!!set ^ pmd->flow_isolate) == 0) + return 0; + pmd->flow_isolate = !!set; /* * If netdevice is there, setup appropriate flow rules immediately. * Otherwise it will be set when bringing up the netdevice (tun_alloc). @@ -1579,21 +1579,30 @@ tap_flow_isolate(struct rte_eth_dev *dev, if (!pmd->rxq[0].fd) return 0; if (set) { - struct rte_flow *flow; + struct rte_flow *remote_flow; - while (1) { - flow = LIST_FIRST(&pmd->implicit_flows); - if (!flow) + while (!LIST_EMPTY(&pmd->implicit_flows)) { + remote_flow = LIST_FIRST(&pmd->implicit_flows); + if (!remote_flow) break; /* * Remove all implicit rules on the remote. * Keep the local rule to redirect packets on TX. * Keep also the last implicit local rule: ISOLATE. */ - if (flow->msg.t.tcm_ifindex == pmd->if_index) - break; - if (tap_flow_destroy_pmd(pmd, flow, NULL) < 0) - goto error; + if (remote_flow->msg.t.tcm_ifindex != pmd->if_index) { + /* + * remove TC from kernel and + * remote_flow from list + */ + if (tap_flow_destroy_pmd(pmd, remote_flow, + NULL) < 0) + goto error; + } else { + /* remove remote_flow from list */ + LIST_REMOVE(remote_flow, next); + rte_free(remote_flow); + } } /* Switch the TC rule according to pmd->flow_isolate */ if (tap_flow_implicit_create(pmd, TAP_ISOLATE) == -1) @@ -1739,8 +1748,8 @@ int tap_flow_implicit_create(struct pmd_internals *pmd, } err = tap_nl_recv_ack(pmd->nlsk_fd); if (err < 0) { - /* Silently ignore re-entering remote promiscuous rule */ - if (errno == EEXIST && idx == TAP_REMOTE_PROMISC) + /* Silently ignore re-entering existing rule */ + if (errno == EEXIST) goto success; TAP_LOG(ERR, "Kernel refused TC filter rule creation (%d): %s", -- 2.7.4