From patchwork Sat Feb 3 23:34:13 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ophir Munk X-Patchwork-Id: 34909 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 475F57CEF; Sun, 4 Feb 2018 00:34:32 +0100 (CET) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01on0051.outbound.protection.outlook.com [104.47.1.51]) by dpdk.org (Postfix) with ESMTP id E15917CD8 for ; Sun, 4 Feb 2018 00:34:30 +0100 (CET) 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=lpHitvGxsFj+n3QWcPXDPryFSjcAHDers+NVHpZ2/DE=; b=HCtPMASpcto5/zQbJ6FQtrw3mOQKuWuJL3hWhLs9uCAHt66q2l4b2BKkecPzMvqx8uN0mEBPuISmyj7tLOF+VxwU7jqy/MU0RJTsZmutuSKV/j1kuyxYVO10CK2wxuANgg1MFq1Teg7EfUdk/zXh7Yk4UfZZk3FE7anJMDg31d8= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=ophirmu@mellanox.com; Received: from mellanox.com (37.142.13.130) by AM0PR0502MB3875.eurprd05.prod.outlook.com (2603:10a6:208:20::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.444.14; Sat, 3 Feb 2018 23:34:27 +0000 From: Ophir Munk To: dev@dpdk.org, Pascal Mazon Cc: Thomas Monjalon , Olga Shern , Ophir Munk Date: Sat, 3 Feb 2018 23:34:13 +0000 Message-Id: <1517700853-6467-1-git-send-email-ophirmu@mellanox.com> X-Mailer: git-send-email 1.8.3.1 MIME-Version: 1.0 X-Originating-IP: [37.142.13.130] X-ClientProxiedBy: VI1PR0302CA0001.eurprd03.prod.outlook.com (2603:10a6:800:e9::11) To AM0PR0502MB3875.eurprd05.prod.outlook.com (2603:10a6:208:20::17) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 056c84c3-f3d8-4a5f-5ed6-08d56b5eab27 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:AM0PR0502MB3875; X-Microsoft-Exchange-Diagnostics: 1; AM0PR0502MB3875; 3:AuOlF2MQ0qPhKy0+eK/nKFp/A17iRcJEn1OUcn3t6C6/p6nmiJexoHoKimK6y19HE/qh1ZhZYZeowVtIY6pkYU4F+oSa5DUnjCUb/Wt62lfimlYyxzwhOvGsav/ekYCvf4IzFGeW4jVqM8JJt2AIg16EZgen0VI8NJXHUd+rGZc13t6tugVdzBkoQLnKAQszIS0+/fnhpgeOIYaLRET5eD9LUtEuc5U2st9bIxJLtgDIQyQnTBc3X8IALdOl/88H; 25:lH+O1AQiNK87s85Yapzop0H2B+fb0aikh9hwRoWUz3LeJ3gFhjddtQkIZwtFBm7n1scKOBdCSU5d2YEU5p34zPb3Kh4Oi1mR6l5H1tozaOy3Z321Z4JC1rz0/CN70Jc0e04rOjmqCCAnBZWZ46LJBLBbkyuylcWjg0nmg+l4VLLptK6bT5OqfohUVdgmrVct52blfkMgT7JQbwv6Fz0icViR+ARxg6vi+6AOD+fjuFM4An5KxrUExZ7VvdC0w9FoMOIo/XQwfIP/VtLEOP2yXdY5q+r+IDdvzWyo9BHe1NKKVpMlO2qAZmfczwVR9Vw4dXr/EtTBFk5jrLddFgRNpw==; 31:Va0M72v3wSAia2ceMU6Xtdo0g1K7h/qMRmbo1S+2smcsDgMI0SlVDTM0p+L3h2mwlaiy4Ge36H7T7ATUtVvT9ZNd6RVMNeQzJfk/cKvd2GIDXkb5H4rHab4zvlAQuLLD/KMP+v+t2vazKG/4eaHC55W43xwC59vnYW0ojOP69HlJyN4Bh45nBrhy/SV53JfbQKkhksnIzLFSeFTvWEtXbvGwMZDLd6yi7TiqR/gTFrQ= X-MS-TrafficTypeDiagnostic: AM0PR0502MB3875: X-LD-Processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr X-Microsoft-Exchange-Diagnostics: 1; AM0PR0502MB3875; 20:6S1FOvp+Bbt7fFB07VPnoMj6i6eWw+6KcO0/x/3tnBw6xWVhKrCXXq8LURfpR2n10RYayCKpSOvpi8gfy34zr+Gswa51hc7sbDpQCBJpD+ZMcSpjzVLyNLqB7uerNN5oeX+05AvVI0PZHqC5YkJUplyTNxdzmY5XfySIsOPGaFuCSrjG9sPdNBvA7W8G4aDzwwN1TNLGIQ4JExDOUOvm5J3n1bzMWRaE/LBXUYg30CPnFa3WnsHLgYte5a5h+Pd7QyXJHYbuY+lFd1LrRxJ2jGYb8Rd53anGGUAanWy0ATqPJis3Qbxa5zzX60PPytfNrxAGnTuDR4yJvEh8EIvyKSqhtaLv0ZIePOAs3kb7trSb+XRR+wVldWAmVXRn18PnU39D+U5Z89c90uH72teBm22a3ZueLsNaHREkQ4zLTUw6eZWu1taAkLBcXBxM2xsP8X1wuB4oVxD/dbTPs9yD0wx1w50a1XNrPl0PZKA/iFdSQbNHuJeaImeypA2gg3j1; 4:RSGnGiG1r4aU7RHtETBBtQOkR8vCA+kVdT0jnV0I41IXujwyw0dD9mXPxcV5ZHJ8aDrw490E1rIWSL+tRZCofkpIVy1u6zcZNfiHbaK/xx/2LiBUg8XwgMgm+9bwtHxUffsQTvluOA7qcdlY6UZVYnBELaETSv/SyGhfAdpyu6D+9YzKJXDudLoLu3HbZDVYj4sWI/V9B1N1ImtB4wqfr4jKkfnD5XnBbr/wd/u2i0zUN6HU0Z4Q77iiMMR9aU60w2/jTTIZh2+q3WdlDpYgyA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040501)(2401047)(8121501046)(5005006)(3002001)(3231101)(2400082)(944501161)(93006095)(93001095)(10201501046)(6055026)(6041288)(20161123558120)(20161123564045)(20161123560045)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:AM0PR0502MB3875; BCL:0; PCL:0; RULEID:; SRVR:AM0PR0502MB3875; X-Forefront-PRVS: 05724A8921 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(396003)(39860400002)(39380400002)(346002)(376002)(189003)(199004)(4326008)(97736004)(106356001)(105586002)(7736002)(21086003)(478600001)(53936002)(36756003)(186003)(5660300001)(33026002)(6916009)(50226002)(6666003)(305945005)(8936002)(2906002)(26005)(4720700003)(69596002)(8676002)(25786009)(81166006)(16526019)(81156014)(16586007)(48376002)(52116002)(55016002)(54906003)(7696005)(107886003)(6116002)(66066001)(316002)(50466002)(59450400001)(86362001)(3846002)(386003)(47776003)(51416003)(68736007); DIR:OUT; SFP:1101; SCL:1; SRVR:AM0PR0502MB3875; H:mellanox.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; AM0PR0502MB3875; 23:oyCZQUjlCCgcq3dOplJPEFbFNpNGEuzxHoEA2BF?= BzGYYBYDdQVaSfVniLW5kWzxLQ0MOOcSrjr43xPWMyz4tiR0FIQi+5QKphy+ePSul1UDaOccpMLCHXf/ZSM7STR0XJoOUt7eLXCOHEoDBRjemQ7kUNyzuF4u5rxdoKEnbGfnCvnOjZ4KyIUOHwJuVDhV+Q6O8xdGoTbr4Iv/K0ZdphyAnLfIuoG6Ljt9Yr3hXEBjStYSjcAC77d+QK7yzdndtCkkJGVZWIzVV+wnUcHm6tJ6Df5Fead7F3KCawmlZaPnzWFUAu++1VKbSchw3Iu6LI4bcmfElb4xnnWU0yylvCy3+fpPetUCY44Aj2/rMV5P+jjG1cOHsJE3MT2x+sLvkMhkIQ0E3eaIIiu1PVhvQB0KoRhwziwqM9fwbzgwrPKmv0RewgHERXeQR65tsQe0vVHsJHd7HXl4PTuvY7DeFLwOlLeQyJVQy6Py/KoVFTCiQ9V9X1RcXbkzdbmHAbfBK7/DcE/BIgeCj8riizmcDmR1OfIC3vnzwKenVAQDTj+lRGXlC/tz2GxFasZG+aVxPllKAVXnjAxH4MJ7JbdLDIdFNNBjFvNn1srrh3Ntv8k34mlDqaFzFpkfHqlgF7osSVLyt7eB+4/1pUaHvwHjXdOvHrgdIiJXWQspENbBmQ/7RYLE90uqtTpE3c22ybEVxltdZl6xXsMwIYDeod95GceCwLS0caqKoCXTIxKPJdAX/Uvg6cH9qQQTxDiDpXHoBJcHhjexigGj0VHRQE1PYliMW0c9P1VT3YKkBHJD+Gi/bRydUN7K8sBxayjAc+0a8awWN1itxA5pfIcFpMXNVROPMt7LgDuYlXuR1Cnd2y8C3M8RGHqED1sKXHZdSErs26d4+t7PGBi1BBgH5MHlmKR7jWC964RuUBo7r2K6TAQJAPAcaRIVRgvw4rzq7t+qtxeLq+yTb1dToC3b6p0nw10xP43kbsV8g8l9nENcEw2Rie0vLAPEQytVkOGHt41RR+4PqP55xcnlM32zjrY+mmRLsgvp1yUZuJVThJU+3Wy/Ce5R0Tj78v+x2xHoT9cp4pHbgGqFv02gsTihtKmFOmyOZ/fBVZ4MjD+Z9Fip3YemmwqjneQShSZBBuXvXj3P0yiN+3Ihhof8gaTL6z23tBy7wttkQdVrwJXvRNT4ao97ucxFj9TkrlmIRKfWodOLD X-Microsoft-Exchange-Diagnostics: 1; AM0PR0502MB3875; 6:sE9lGflip30rAGOKgV5ChqZ8pYfPsy+7MCn/zE5SNkGm9cLjUQns3Rcwf8G0ffAcvRAffhoPNCDfXe3ksbpZxcjq91Llw+hcn6CSaKxWZc8gzoYXdxd9zl3GJTGTktHWan25XODq74VVYMZ1OdPKtID+PbhcNbaIS+Pcno1updkFNwAb5C01FrtD1GILIK3sfk2wJIJwhUK142ACWKt3zcVk9V27WvsuomB6uV7sj6MOsFRbE22h/C1OB7Op+mrOrGPP+1ia7xuRiB9le1UCZ1qCkTTudDZKWV4wtk5K9tdgdQ8sG6e6JEmIBA2NQRnKqhiulNepamkCpeeEMt/R9vuKjw/GKnxqyg9nkNWIDZ0=; 5:M6sjxDpdzJdhdNlzzbvwPeJnQYftxLR3JqDz5d/30565Ao1dUYKpXZgQHZUxgC6zk3TUq7F2fWOBcOKN6mHt/0fGjTDXXBWgn/ofFgmX2EenXUlTIGZ4uBo8EPcrL4C/C2mCljVa85I30R5NDherrODtH4NyMiJfnhuWIqoirXk=; 24:6Fa/gro92DCCceHTaN1/5JZSVovqb7yqSG8zVqgS9XfyRx7IqFmSgGoBD9/IaVwu5/F50LPREITtA4KDRN9ku9puHVhA9BEBQN2Jwb/quR4=; 7:3j+XBwVjy4Lyz185HapQ+HNPXR48IshFC09lLwJvXXcP2Em61c95oFwDG1UZ4M1hE4GfB/ET44Fw1LZQJkBmW0ptkdjp/cL4pdLXAhoh8iV81y20VB4Z/aefrs1MYUdjLgUWc+2i9/JsLPO2uF5dOD1HVY3froj700eIVZBE1AsSTXV5p6i0HHyALaRsnzmB1PCNCAG/5mK9EEVRDfLi66+c3tb7xn+/KPmL969lyMQzz73BH/XycNSSDXhcHkgN SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Feb 2018 23:34:27.5687 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 056c84c3-f3d8-4a5f-5ed6-08d56b5eab27 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR0502MB3875 Subject: [dpdk-dev] [PATCH v1] net/tap: fix eBPF handling of non-RSS flows 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" eBPF classifier (section "cls_q" in tap_bpf_program.c) is looking for marked packets whose skb->cb[1] contains an RSS queue number and redirects those packets to the matched queue. It is expected that skb->cb[1] has been previously set with a valid RSS queue number during an eBPF action (section "l3_l4" in tap_bpf_program.c), however for non-RSS flows skb->cb[1] may contain a random unset value which can falsely be interpreted as a valid RSS queue. To avoid this potential error, tap_bpf_program.c has been updated as follows: 1. After calculating the RSS queue number it is added a unique offset in order to uniquely identify it as a valid RSS queue number. 2. After matching an RSS queue to a packet - skb->cb[1] is set to 0 Fixes: cdc07e83bb24 ("net/tap: add eBPF program file") Fixes: aabe70df73a3 ("net/tap: add eBPF bytes code") Signed-off-by: Ophir Munk --- drivers/net/tap/tap_bpf_insns.h | 23 +++++++++++++---------- drivers/net/tap/tap_bpf_program.c | 5 ++++- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/drivers/net/tap/tap_bpf_insns.h b/drivers/net/tap/tap_bpf_insns.h index c406f78..89873b6 100644 --- a/drivers/net/tap/tap_bpf_insns.h +++ b/drivers/net/tap/tap_bpf_insns.h @@ -6,17 +6,20 @@ /* bpf_insn array matching cls_q section. See tap_bpf_program.c file */ struct bpf_insn cls_q_insns[] = { - {0x61, 1, 1, 52, 0x00000000}, - {0x18, 2, 0, 0, 0xdeadbeef}, + {0x61, 2, 1, 52, 0x00000000}, + {0x18, 3, 0, 0, 0xdeadbeef}, {0x00, 0, 0, 0, 0x00000000}, - {0x63, 10, 2, -4, 0x00000000}, - {0x61, 2, 10, -4, 0x00000000}, - {0x07, 2, 0, 0, 0x00000001}, - {0x67, 2, 0, 0, 0x00000020}, - {0x77, 2, 0, 0, 0x00000020}, - {0xb7, 0, 0, 0, 0xffffffff}, - {0x1d, 1, 2, 1, 0x00000000}, + {0x63, 10, 3, -4, 0x00000000}, {0xb7, 0, 0, 0, 0x00000000}, + {0x61, 3, 10, -4, 0x00000000}, + {0x07, 3, 0, 0, 0x7cafe800}, + {0x67, 3, 0, 0, 0x00000020}, + {0x77, 3, 0, 0, 0x00000020}, + {0x5d, 2, 3, 4, 0x00000000}, + {0xb7, 2, 0, 0, 0x00000000}, + {0x63, 1, 2, 52, 0x00000000}, + {0x18, 0, 0, 0, 0xffffffff}, + {0x00, 0, 0, 0, 0x00000000}, {0x95, 0, 0, 0, 0x00000000}, }; @@ -1685,7 +1688,7 @@ struct bpf_insn l3_l4_hash_insns[] = { {0x4f, 3, 2, 0, 0x00000000}, {0x67, 3, 0, 0, 0x00000010}, {0x4f, 3, 1, 0, 0x00000000}, - {0x07, 3, 0, 0, 0x00000001}, + {0x07, 3, 0, 0, 0x7cafe800}, {0x63, 5, 3, 52, 0x00000000}, {0xb7, 7, 0, 0, 0x00000001}, {0xbf, 0, 7, 0, 0x00000000}, diff --git a/drivers/net/tap/tap_bpf_program.c b/drivers/net/tap/tap_bpf_program.c index 848c50b..64dcdb8 100644 --- a/drivers/net/tap/tap_bpf_program.c +++ b/drivers/net/tap/tap_bpf_program.c @@ -31,7 +31,7 @@ * The queue number is offset by 1, to distinguish packets that have * gone through this rule (skb->cb[1] != 0) from others. */ -#define QUEUE_OFFSET 1 +#define QUEUE_OFFSET 0x7cafe800 #define PIN_GLOBAL_NS 2 #define KEY_IDX 0 @@ -63,6 +63,9 @@ match_q(struct __sk_buff *skb) if (queue != match_queue) return TC_ACT_OK; + + /* queue match */ + skb->cb[1] = 0; return TC_ACT_UNSPEC; }