From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01on0079.outbound.protection.outlook.com [104.47.2.79]) by dpdk.org (Postfix) with ESMTP id 8E63ADE3; Mon, 7 May 2018 10:36: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=MqKNZ9Oz2ij7PvHim8RdYQsp0+lga1PBMGr7MlErJTM=; b=kBrhGxzXD9LsRJaNdltBAEi5ZxHclyMExcRHIPIEgYFvyVwHUlUFtp1+zU3KOwuA0TjszOLe6SjLmi/4blLC7f9c0JDa47Nakju/jwsBTIT9RQ0CAtyiBOLcj1uAVjBJJ9yHMAJ07vlAgzxEI2ihtz/rFwuodhHqZVhRjvxjbTQ= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=ophirmu@mellanox.com; Received: from mellanox.com (37.142.13.130) by HE1PR0501MB2314.eurprd05.prod.outlook.com (2603:10a6:3:27::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.735.18; Mon, 7 May 2018 08:36:50 +0000 From: Ophir Munk To: dev@dpdk.org, Pascal Mazon Cc: Thomas Monjalon , Olga Shern , Ophir Munk , stable@dpdk.org Date: Mon, 7 May 2018 08:36:40 +0000 Message-Id: <1525682200-21821-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: VI1PR0102CA0049.eurprd01.prod.exchangelabs.com (2603:10a6:803::26) To HE1PR0501MB2314.eurprd05.prod.outlook.com (2603:10a6:3:27::19) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(5600026)(48565401081)(2017052603328)(7153060)(7193020); SRVR:HE1PR0501MB2314; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2314; 3:mL6OrkLTcxSNZYtz111qJacFw6mxE9kn7MCt1TSft9cphltKMYjHIxEWzJwTCq2PSTURjwOKZwx0QGicdGFdJhB7q7CcEYmKns34G6w15XUF5fACnjJEHqSh0NIvdyctbzUYKMSOp2G5cu8JDddiWazDXS8QnoqIsENuc3/aU0EaBQ0+soM8PGpBFt3N2khHVUuBIffoZ4iwQ3a8RIn5vL8UxBrDZ6s3jj90zWPf2ScxTVCgFrBvegl/WDzZJapH; 25:XJiDdqsI/aT514Y14Urh5WPixndHeG9dzT27Xkq/1+Jthjz2sqIYGIS/WMuev23ucNk4Vhz/LstqHQjHlV1mguc2iZEpPQF5FaGhXx8K/4ScD4jurwxz5OKT1J8Comtrq81/uXDWJP7HHqf5CcJprJ/AbfqiEkWPm7PC0GeV9ZJJzJHZCc/nWVju07VKMXqaqVfernQLykU+uThXkoFztJ3tavKcEvJCfspqnu+vFXYnBKCs6wEDAtdwaNY2wNhIPenA7aGyfAvQiuRASszRN2PmTCdQYwnxG+DtmLCn1w/jori8fAbRf92NCVbJC9NY1AmlgRqeljjdhtSyYkhy2g==; 31:Of6QtBxg/II9/lHqw0k2HE0Qtxlz9PYo/6kuInN0GqtkT09sJG3DyxHI9n88Qo+xmeQA/a8plguIl4LppWJ8/+18VcDpQyLiIAJ+ia95sn3JgDflP5Q+n/sow7AMCPTpxb5sQmlGqAP/AcfDOEtARpAA6aVg1ACHGPn/uzQFAc/pdh2DGGW9dxbAErsYXJ7ar/l8kfEbpxcPKdnFx6Ff/o4/8vhyP1jEiOLZbxSvhDk= X-MS-TrafficTypeDiagnostic: HE1PR0501MB2314: X-LD-Processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2314; 20:RvTjGy57NatVk+A5JiLk2dYwBCSjUeKbwKK8Cf9KeFm/wr5SzLNVMKaWqaZMleQ9lSrTs/IvCOWJ51HqPg+fk1AzqDwGZS/qotWnNswrb2g14IAkx2KifO8G+O9hKJJ7ZxkEHegdC6TPfs3lp89VvrLEng5fK+nk1qtjrDwYrksfifz4Hf3uGk071M2VqPCEFX/R2T2DU5qqwfuNYy97s44clSvSm7Wgmg4uyUua2QNM4LZfwozev7hMKz/oqkhnq0uASLu6LgGn+Jk7mjo+usxuLYMYwaFd0tbsy4OR7+m+bXCs35g+Jrtc4bfryqJvAJirSTtW863LHWPYJscTRQDbYsqMeplKDtcc9GIeEufodAWlKCyqTv6BpkBykdqORwhca21WRhgdm5i5C2H0W85PU9ETuNvFR6FnH6DwQKfbMAeJTZL62XXgtRBYj6ua4NRbsPRJLyZHfKqsu6d6i67pEFt0p9bW/8L9Ft+ywOwXv8YJMBQI5rpNCjffzBhF; 4:0XFDa7aer94DtooP5Gh386YmoCKID2INms6zFYPCNgnP/+Eqm+IJTE3NKeZ/mIfAt/SN8N6r26qgxfzBxLBNie0YojYW0eDyU47rcM6Js1ekZuhpPKn0FfiV+0jFtA3hE31XZqC91FV2bMVPfp1UHVwemyUFP+dwiUaoOk+ZQUDNcX5U0tGmquuXs9m7xAg5nRwsL0djcp1b0y5uRXDN/31y7cjFR6OgJHkrPAFeVxLXk4Z3scWthP4iu/5TdJ+P1IMTCY/XOGrWogJhWNjiZw== 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)(5005006)(8121501046)(10201501046)(3231254)(944501410)(52105095)(3002001)(93006095)(93001095)(6055026)(149027)(150027)(6041310)(20161123558120)(20161123564045)(20161123562045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:HE1PR0501MB2314; BCL:0; PCL:0; RULEID:; SRVR:HE1PR0501MB2314; X-Forefront-PRVS: 066517B35B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(39860400002)(366004)(346002)(39380400002)(396003)(376002)(199004)(189003)(2616005)(47776003)(486006)(97736004)(25786009)(956004)(386003)(8936002)(36756003)(50226002)(5660300001)(4720700003)(105586002)(8676002)(476003)(6666003)(66066001)(81166006)(81156014)(6916009)(305945005)(106356001)(7736002)(478600001)(48376002)(26005)(52116002)(7696005)(50466002)(16526019)(51416003)(186003)(316002)(55016002)(4326008)(16586007)(68736007)(2906002)(33026002)(53936002)(54906003)(3846002)(86362001)(6116002)(21086003)(69596002)(309714004); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR0501MB2314; 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; HE1PR0501MB2314; 23:POopphHyFc3pxMG/sQ5GVrPHFIQDwkmHebE9iC7?= =?us-ascii?Q?7OFwmz/LuWb56zGKCXlbyARzk762J5ZSywqqfb+U1KRIw8USAOypUbNm1reJ?= =?us-ascii?Q?JnVsr1ZiitX6dOhdwmg2Mtmjvfj2JF7xAm7T0T0tSW3GqtvNN22drQRBfDuC?= =?us-ascii?Q?FiIq50dgiEAxUNtm4ts9F17GFBPE8GFyJqpoKgW3pGVdD5hcaVXO9MQZTd5p?= =?us-ascii?Q?EtjFOzwgcvTVGRPM59ZsortEugF0A6IUH/Pdrz1jPT6892T9d8ILB6Ir+XCl?= =?us-ascii?Q?87QzNYmb4VDPmegQK6D17LVxbQ8udt1V/toB+2le2USDmkAoC0A8NhUncnzU?= =?us-ascii?Q?YJF8/zUegWv+cqSXJZHK3irFPsWC6BaKsjrFGO8DpOLkKVIRTVLuBdWeUEG4?= =?us-ascii?Q?XmwztAdSfAnMTy7YG08qsFlu8kyVkx+/KN54afBsbeCyFsTeLdZqEb1ZFggZ?= =?us-ascii?Q?7GDQaQGSpyvDIQCurJmWh9CjzIjs4JKBbYnjPVt6vPjlKxRjWlBqOhsPf/cW?= =?us-ascii?Q?WcJ+rT2OatKKaCvUWXQjgqG/Z07jpFcdE4+hFOVGWFOxyECQN0a4SmuUxSdy?= =?us-ascii?Q?GGgb1jeHT2oKZdcRAFtSOvWGR/FFDMe4EhUs/9nPGLpAxSzBHtXX6FWMTjeG?= =?us-ascii?Q?B2E8sc4XDTeDYbzS1hXb2KB0voak76u8oE5nNuRynobO3TcWctKIMjaxQxU0?= =?us-ascii?Q?ve/ogscLMPt+nuhkC6buS+gTqAdoEJ+jJIR6Zq1NHqm2OacGGr3Kq5vx6FOq?= =?us-ascii?Q?acrKZye33ev++lHA3k25EnqvFt3sNjy6CDb7u3PwGP3cY9gMK8vXmpjWD6JJ?= =?us-ascii?Q?oY8B+B/2tCoMxCL0ldE2T5UZJkaUj8ASUY8CeTTcvWNgSNihMA5T99+lBiH8?= =?us-ascii?Q?625bVOz573wUsYqeSmKAMMBfjfgDdwR4ygNa8wNARn+/6EH0c27kA31JnEr7?= =?us-ascii?Q?0lN9bDaNdleLvVafY3hPmFqNwgk3rC9c5Y+bXaontZcQomFLTLoaMryPYf0g?= =?us-ascii?Q?kImPViceyZXLjTEVnw7uXF8SnPZG9PmwFPsbyvG0XumPMvojTQf26qRRA1LX?= =?us-ascii?Q?CPN200a5eEL0A5plyN3mgWHjDx6vvFUKH26OxjdLwrqRZSsJdPWPxAWcNmVo?= =?us-ascii?Q?7s4RRr41MX038+hKN+Eal8z5rNGs1RZ7W0Vu6SQK/4zye2afWFZQOOq5eJ98?= =?us-ascii?Q?JXkBdO9AA3V94A9Zxp6HMeLmOe4adxE3R57JO/YbN/NF23MquK8jhqWZRV3P?= =?us-ascii?Q?Q6iILHOGnHPwRC+VV5d4=3D?= X-Microsoft-Antispam-Message-Info: 0yBKBrjL899/OoJzBnVeQSt8rM/Bsvw7/rW3TaOctMMKt05BbIUjNziG3j21k0gU2UfGNC0Soq4YIuZWPjS7qeJI6SAvXBlQfujOMJm30UdMJrrUA/943R+PhIGuUUNvbJ83slsvj6Nr8MGWKj/Hd0npuQ6BZxCTGjV5Cir6dX0/ayCLvqFBg2pTRJD6a7Oa X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2314; 6:3S4p+vu0rmTNDzA5rfc5HyslFpkKRau7GoJe/551ySWWOQuJ+zqW3J/oO9JFpWVrLw5lIjQt8dSPikTnccQc59lB/4R4yDYPGkZz7/25uX+hSl/Unv0gMXJ1mP2gzQHJtUkHqXK0d1te/Anbq/QUbBCg6fW7uUsuX6LieShJaA8nzzxbREFE3ZeGUI2y2M7yO8hCAOsFmGScVg8KR5I71UwnhopNUnuL1pFM7eGdjl/JCK7jXENgbf2eSQefhSklgMzRjXSxXfFqDoKTv7T3Ez4pxzz3Zill+ZeVjL/Db0Cj3JjjIzOcQimJyyxf0D5vnJsHQkulPWgqrVoqhLJK2ns01z/KJZyuyn9Sx/tnRfg6RCo7Za/5JPzrW+8fM6c1naUWhv76Ru3HfV3bystqeyisj4TfGg6yocL1Z6S59pTMpOWJlUJNvuAyvR4HFus/JpPYUJuZHjFBoeLLbEpkNQ==; 5:pVAeAtOAlnOskGYSwp9cFZsy0eZ9SbdZbVi8NrD5Qm/Y1IuGMGtRJ6zDa9OW7RG9B6Fh0el89VutsmdpzZ4k1Y/bp088LbOUca9Wi4NsIa/VjaSmcAB/uS3ovwDU3hqOHBefbHebwy8pg5vHndMylo4RozJ8jip9SumheGxpukY=; 24:O56JVIz0DoHP7vauy+OsH8EoI5XhBOJVlP/eQXwlz1BXd2wg827tsWQeJHBpzW0I8Jplx+bEy3tN1lu97iCZOJCI1GjgMtHrthuIuF7QIvQ= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2314; 7:+OV0Nc00bvmY2BqTMthGOspBdlLLs9xne+8uo8DmYNogNdIbTrWxJgoPc3QQt7o2G4UH1IVzIu6xZUrJlYHxoRugd3OycK+vB/8/gWboxesGNSXUgP0HLH6T12d8ucQ8rxNCQsj4pTqrFCFjrZPK3pPbuwDAUhXaAq64zq4JrXOWlguI2GWUsFKJefa3WgRckaz63okT3tj5jg/jSx2vc5nSjv/CfQDKA3S9jGXry7/6L/bUCEtWbRQ5ZZuxuMtb X-MS-Office365-Filtering-Correlation-Id: 7345616b-c8b9-45f0-b955-08d5b3f5ae3e X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 May 2018 08:36:50.2936 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7345616b-c8b9-45f0-b955-08d5b3f5ae3e X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0501MB2314 Subject: [dpdk-dev] [PATCH v1] net/tap: fix isolation mode toggling 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: Mon, 07 May 2018 08:36: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 --- 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