From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01on0067.outbound.protection.outlook.com [104.47.2.67]) by dpdk.org (Postfix) with ESMTP id 43551CFFE for ; Thu, 10 May 2018 16:11:53 +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=QM8soC4YM+AhhvkhxHRs0XIkmYEwp8EkaTbUTX6zIi4=; b=hSeiyk+H+LLUAyipVbTbxF6j138S3WTfThwr5PzDpaWUhZWVLZh8O15GzJBSAuHzcSZxLGKrFHPEtUzYsMN9JNgs8TK/VSHvUWi+/rVkGO3i6aqArIu8KRGwpaH1BAPVI97XP1cPQvSPfCn/qpPNPVKKPbc8lszaSMwdw14JWQ4= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=ophirmu@mellanox.com; Received: from mellanox.com (37.142.13.130) by VI1PR0501MB2318.eurprd05.prod.outlook.com (2603:10a6:800:2c::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.755.16; Thu, 10 May 2018 14:11:51 +0000 From: Ophir Munk To: Ophir Munk Cc: stable@dpdk.org Date: Thu, 10 May 2018 14:11:40 +0000 Message-Id: <1525961501-14724-1-git-send-email-ophirmu@mellanox.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1525904821-17728-1-git-send-email-ophirmu@mellanox.com> References: <1525904821-17728-1-git-send-email-ophirmu@mellanox.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [37.142.13.130] X-ClientProxiedBy: VI1P195CA0047.EURP195.PROD.OUTLOOK.COM (2603:10a6:802:5a::36) To VI1PR0501MB2318.eurprd05.prod.outlook.com (2603:10a6:800:2c::19) 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:VI1PR0501MB2318; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0501MB2318; 3:HlFBergfxVZCxQl4mz8kkeoke1HNQ7nsaVK+IlV1QroykEZ8mvux1KFPe9NZMA8RPdvnkq1+PFJquVDjLxdtcKhEfWirTjLPKf+MsauBW+cl7PN4EqFuuuD/bA6ckpXczWcwX8ROiHZLN35ygnfKt7xWr1Yn1tlqYvm9VS0xN9gAe8Hn+6RncoUymb1uWiayozzLOsedpWjItNLzYH+GSnoBkct2K4I0MSKb7xjQwNRNRycPvYnYuKvVZWI5p5xn; 25:NAf30MoI1C0MtDMT5n0YmWvztbT/clhhXVy8MKLSjGIIAf/ZAYIKJDRzO25fzBJkJp/U7+KB/DNR8Igg52f33SqQSYit5yiXVnjVa+A9XyqQgtxhKkRP0HiPspdTTTt6JBnwdD2ifZz0GZ0riSq+6+q/uB/ZjYSySn7jJyQa7RxChOZYFizbOmvOZDxsZpU/c/xJMY635l39XaiXQ7roTWV1yMnC2xgI/Rv6cOHkG5PpSmUoxbuDyLK00XCWEZF8oBG9pS2qI0egGIX+/xnQgnqDF3olIrrhBAluyS6kubE7n6HdJAzo5/JgzWpGtEEtU/WqUYj3NJ8tfmM42Q+Nkg==; 31:Av89KZPgZUInV3VhmwSnyC1KQ0XyhBdzVXFG8A1hzbTqL9a9wRYLslN8vbAu5CI7jH+IumTqKPcUFIMRXA9I3pqOL4hYY27w9+Sfwa9lf8FxxB6199I7vR3UUnzudXl+tqte44+hzSgu5w7y5u0F5bhfbHlg2zkPJt4LjHOJZTPBc0C2PFrK0mokkrogRUVbQgCTy+71+mEWC8rEh48gfu4YsBmSIy7Bls/0p9DIzGs= X-MS-TrafficTypeDiagnostic: VI1PR0501MB2318: X-Microsoft-Exchange-Diagnostics: 1; VI1PR0501MB2318; 20:5nhsUoLEWnZiij8+WhbRReAjC9eq4/7s2/ajlEdYZTJKCuAlBMaAqdVuI/fuB18CBbuQyAiLwQu+eZvCYl6ookPLZj5u+wm0gB23f9rn6ktgVXc6npC7tYLAPuMgCKJjgIoe5m7Eq52xuk8xt3JEya/ZBSLKuiiW5xjE3befIqzaDdyWJ2pDsfrNzb3RA1sO9tqTuvTMukt9bbU3tKCax8Ze+qDRdOPIy0ksUNeJj+uf/dy5laUhXCgC/ZNvnGvgDbigVfG4viItELM2DIlMGPHzwGHv03TfUPeqVSCnS11jZ0z2O0tA5BDGIx3Dbn4Mg1SN2FrK163SDL2dPLWvlWhrEw+ojNS54nlqXXh+/M15Lz/QyFSKeI+KHh9fq4me65YxgsnVNUIgpKHAPcwaRjy5XkpHaeCLC1pYQk33/srsEZQiOfPlmFOspoDQIG/ZraPfrpKBamdFyOFAUlGjg8emqBsFLXCbecUngI1jH+1yR3+BG+lyNrMJTpMOJqq6; 4:oN+VGiHAqHXPJVNQvJtsr2Rqn4+swWhUnQ8EpTl/h1hDbJPUGqIE7eAHVgAYojScG2w5P0t3HNfBHlF0CC9ihNKPN65nQCHjmhG95n+9qDm/hgdy5Kq9XrLiwQqmIPI/gCWlFv5wGqHf7pggK3fP2k76Mnrp+WteQF5FmZ4AoUypmDUkfArRFEvKo2CJMgiTivHut9p0rELRpMeJv0jlsLgQIKS5yXf2hWNlUvOm/+t1OCtcQ8O736/Tg6pz5TC4I4tP4eYZCLJD1tDUrs+hnw== 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)(3002001)(10201501046)(93006095)(93001095)(3231254)(944501410)(52105095)(6055026)(149027)(150027)(6041310)(20161123558120)(20161123564045)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(6072148)(201708071742011); SRVR:VI1PR0501MB2318; BCL:0; PCL:0; RULEID:; SRVR:VI1PR0501MB2318; X-Forefront-PRVS: 066898046A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(39380400002)(39860400002)(376002)(346002)(366004)(396003)(199004)(189003)(50466002)(25786009)(7049001)(69596002)(33026002)(48376002)(956004)(55016002)(2616005)(105586002)(446003)(26005)(106356001)(6862004)(476003)(486006)(59450400001)(11346002)(21086003)(16526019)(53936002)(6666003)(51416003)(386003)(76176011)(52116002)(97736004)(5660300001)(7696005)(3846002)(66066001)(8936002)(6116002)(2906002)(50226002)(47776003)(36756003)(478600001)(37006003)(4720700003)(305945005)(316002)(7736002)(8676002)(81166006)(86362001)(4326008)(6200100001)(68736007)(16586007)(81156014)(309714004); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR0501MB2318; H:mellanox.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0501MB2318; 23:rfbmEuRJs8oLh+EK19TAIwssSGGpdNOBHfoW73U?= =?us-ascii?Q?zTl/2EpOiM+aupU9Bxugs591qLGn4zpysfjcLAChhW24EbTqCZjJbuciZoDr?= =?us-ascii?Q?7sCcVKWTnRlGLG6HHt3VJ2RTh719bnpBifC7xEUwqyEwImnbvC4cKnPmnzfz?= =?us-ascii?Q?tE1cKflMEPmWzBf3g2slG9ktBRFsMysm0s4ZvVrvF6IVgKHmn/9ZmwYs2/er?= =?us-ascii?Q?CecKQPieES+izgMGWMO6uXZhs4nLULEcNDRVTj+/a1abvSGtHmJREXj27sX8?= =?us-ascii?Q?RvyYJFyAu+pZiaLiyXh/lEK+Go6uLr7VUjGP1v0QyU8UW2IWFYdd4RM4VAOE?= =?us-ascii?Q?3OthZ6Vq1YkoPRGFEsu7vmgn2soGcK0YxHaxNvOUOkIt55aP+wOZ1wAITxwj?= =?us-ascii?Q?dWyALWIAj28EOgi9g5PpGUDKbfRbIsslgr0MN5Ksh20zH4aoZA2NSKPNOU8s?= =?us-ascii?Q?+1Djx9+Wp5DhR3dxA6hRwVO5RC0b6LeO3bglFtY4+EjVqQmUDB2kU6RDsk7V?= =?us-ascii?Q?4JPXK9Oexab0mCbP36QNh71zbUt8TFYKDPsTDPXRAwcQozA861EFf+BjNwky?= =?us-ascii?Q?n/Ye1BWBwWqJVy4jn+D/JcrSR9Jjxz7lDNZMOab92rU/ycXH0EffW3nF0yfi?= =?us-ascii?Q?afCHOYsoukX9fjFUQ/AD8GuejqoD0bncTMPZVgzFyDaORWxuv3eeNTdcpZcr?= =?us-ascii?Q?Q33uumBDiTVlCIXW52ZQu2UV2+qfKLiPrJu5b2D1mGPbeu6GV5vFEi8QMfGw?= =?us-ascii?Q?S1Q6g9AbrtR1mTwKTyMGKTXn7Lj6FocHNFGkP5V041X5RAWWAWbSiLCWoVE/?= =?us-ascii?Q?4CqqOx+q8PxNa6be282zCUl4OETDMEM7fv8jEDHA+g6pNlGQwE3l0uFvTKlC?= =?us-ascii?Q?v6vLWYV4BGD3UMX66ouc23S4S2kvbq/iXQwsEPwcEiK4N7nla6JKmZURLUTK?= =?us-ascii?Q?KIZ4MlIP5imyryF+XjNFVZMJLm03XCKGlrIWto1RWUlnoLS+0fARJLElNP0l?= =?us-ascii?Q?/jtN53988BrLTZmiNCCBX+ON3XhsHPW9WwSGsbZnRwmQSupS6YTKf30w6+qi?= =?us-ascii?Q?lzeArJJjDwJ2t+ClMzXn0Cs2JtW93AapjGAFZVeqEGQmbgJHuB2xy6JADwTj?= =?us-ascii?Q?UYaxTIYt0P9SVsjCC30hjPX9R5geqAes3QL+vyyZ42+i7ulMy4aMejcP3Dl5?= =?us-ascii?Q?4oWqIhmK9AdPK65KxXP467BElcJKcuvbw6EJIREKgD14KlcmS1RFPl0wqt7y?= =?us-ascii?Q?GkV/dpP64GshaTzso8POd4bExY0yc8RTyUwSSjLTh/ceyNYY+NBGXjpuEg73?= =?us-ascii?Q?3FcKqGFPQIS1Bz+JVWLqC1UMnYcgsD3CI4wWGzmta/iFBBhnr4OnpVbpyWlM?= =?us-ascii?Q?ElQXzSw=3D=3D?= X-Microsoft-Antispam-Message-Info: ZYMMzP+9JiDL0wCTYnm/pzrdVtPdFaGLMaSYyN6nAnx1d7g2pJt/A8DawtRP7V1DFvKK73VUovsDxrK8X1eNs8SxvrTBDYTpRAO7TT5zbB9/3iYe/fzIq/beRFhUoI90bxy0bUIrRgtiY7kkx/IisUl4V0+H/SRiFEKwfChX360+Z9NrCY212dUXCJxKUR3h X-Microsoft-Exchange-Diagnostics: 1; VI1PR0501MB2318; 6:kbmatFXiqEB5RE3xLDkvIlV1foOErHcdTv3sbjLGCZYI7CMTUfRScX3V6JHTGMLIuFEoJqTmiBjUh8uXp7OSUx0A7TEPIaL+bcehbrQOIYDH/zc28NDUAXqKQfSShELZ8oA3gkBNx0g2ApTDw2z1JkxmjFmeHhs0ZCPEw6AVX6sz6KiDm1kUQm7OM7jWuMC69EhIf0CRbgpKuePioaxf2DG9QacLFOXQ51n7gK96UaM+VN2dn1F9ovT2p5RPfTpM+UbRuAOs9H5BgIRyWRpZbu7xivCuIeos5S+enfD87hYHJ/7KWyMdOfcV96vC69ou8KzmkHtXH3RueMpJXwGwAbdFtwkUNGgO8xQwdgUjeLthgVYvF2ZPGEiZYV4eLcrd7qCGNUJCwv6irrlSsj3vr5COn5gEhuA93LXMOVz3c7Td7Gy9wIa2DbRZOj/WGqAuDhj9QmqtblI+1r58roU6EQ==; 5:xXy+baQl4sHaVlxfK0AOgEFuj680AgJXKaTym/19B+Wqvq3qiENflqIwp0Fbvn1lQKtQXT0+wtsg5vVmc2PaR990lWYGZsE6blvwhGIuINZcK0sbEvj+PVoUlnQwkrIl6Naua1ZK/4o+SsAOiwkcjJUtnTaQnng0X323HbvBMuU=; 24:7saaOj+bHT1SVZhzeJr+nZXDPWVyUCgicnEWB/8QD1aWYZtjn3rTD3usyZAVfDp7s9vlulive1EpanEwIBSyzeJt2wzYyd3ak+JiUIi4X4U= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; VI1PR0501MB2318; 7:ACWoQdW4xQ79lGFKVIED0vCHMXZssnpq3gLeCYDq6DjMHGZ3ujLkkA5/q4RdRjFQGTGdA3rxGD/5wMrLF0lCpuBubDKr7/82y7w/A/5ST8ueor1D9tjObLm+XaP8ujqfppWhZAhS0pT8yWhnGlRviO3TcWd7hREHUQTmUfLe/QJMYy5nnaeZweFLfmdZF98C/LgSNoyanqomvvjlLteCvbECH3pZW1XdfoRY3R3D3xTm5xA3njIpo8un3B2MJ1Dx X-MS-Office365-Filtering-Correlation-Id: a0d42cd0-e523-49e2-3128-08d5b67ffa48 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 May 2018 14:11:51.4399 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a0d42cd0-e523-49e2-3128-08d5b67ffa48 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0501MB2318 Subject: [dpdk-stable] [PATCH v3 1/2] 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: Thu, 10 May 2018 14:11:53 -0000 Running testpmd command "flow isolae 0" (i.e. disabling flow isolation) followed by command "flow 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 --- v1: Initial release v2: Update based on reviews (split into 2 commits) v3: More updates based on reviews 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