From patchwork Mon Feb 5 14:40:42 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ophir Munk X-Patchwork-Id: 34986 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 84CE51B3D5; Mon, 5 Feb 2018 15:40:56 +0100 (CET) Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01on0042.outbound.protection.outlook.com [104.47.2.42]) by dpdk.org (Postfix) with ESMTP id AEAFC1B3BF for ; Mon, 5 Feb 2018 15:40:54 +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=oAIky6JuQB2hCyN9Pu/3mGP8u65VY9IgxFmGzWgCixU=; b=vPfInNDmlW4t18Go+MtMxArCrvXWePVHNhHaXDjbJZxbDpwHI+2ibWZJOkM+u5txDs9nc/q5+DeLIblk8cX39hFfeSWUjkNPpraP5K+fHSZgxNhlymf2a8JgPYHnuSMBusemEQqxhkIHaUdSWX62pTnyFHfggQhGCzCFOuwM/wQ= Received: from mellanox.com (37.142.13.130) by VI1PR0502MB3888.eurprd05.prod.outlook.com (2603:10a6:803:c::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.444.14; Mon, 5 Feb 2018 14:40:52 +0000 From: Ophir Munk To: dev@dpdk.org, Pascal Mazon Cc: Thomas Monjalon , Olga Shern , Ophir Munk Date: Mon, 5 Feb 2018 14:40:42 +0000 Message-Id: <1517841642-10429-2-git-send-email-ophirmu@mellanox.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1517841642-10429-1-git-send-email-ophirmu@mellanox.com> References: <1517700853-6467-1-git-send-email-ophirmu@mellanox.com> <1517841642-10429-1-git-send-email-ophirmu@mellanox.com> MIME-Version: 1.0 X-Originating-IP: [37.142.13.130] X-ClientProxiedBy: VI1PR0901CA0090.eurprd09.prod.outlook.com (2603:10a6:800:7e::16) To VI1PR0502MB3888.eurprd05.prod.outlook.com (2603:10a6:803:c::21) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: d0acedcf-abda-47eb-74d6-08d56ca67573 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:VI1PR0502MB3888; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0502MB3888; 3:E63SsdFo0sxqo+FR719K/Cz+fNzjaq2G/RRCIle7+wgNkHBpmLY0oR8GBnKVvO4eVE/b1U9JcRcELtFxV/DFdk+Bfoa15T1JdpcKJWUaSr1e1D38D4ggA/qiLAtnSm/ymgit5cvQxXb/HJvLCM8wwKUd8v+JFMFgHxTppWHbvsg7Yut2IXvEylWKQ9Cewgz4POenLx1H7yoKU3FhyBj8KtKdpFPS27wTUDBXuDpl5hh+AOQZM4tGO8BHmDemccas; 25:/sESdyoSazBfge7ICd/Ob34LJIkX9H8oTeuLq1ti+uf0DEoJSMO64FeI13bWBEH4IEUHM2PuDNvTsVA2ImuovzNLixe3pWiaZq2P5c2cLKkwQuIXnYMXHN+5w3K1r4qVLCGQCZ4s3BQa6U8cD/n/x5uDpUQXFNwsR8/aWoAWxczPMavAZLbtGSeypbSPA0RMUfe2UWwfm6O4lRvUTT8z8sShQ+c7K/i9LLwXyrrPxKeXQEXrc0YrmDKs+LTyAEUny1LHn7fslcmuj7ftrxzVxtmYlpJlsoNpDnMS0WX+dAiodtUY9QQyx03rQAIXKk8nzr5uWnDsoXUVNSAvTKkAXg==; 31:rvu3R7HHdvABb62nQJbNn+3xHMUPL4ByVjwigg7PtvyAhwtBM+eQCiu6KYVcbo4po2S8tWiMBh+E9i0yqoD/Mp6lrLyGUpfPkR6G/8/gr6Z7ZG1Oae4034j1CYgMjWMN8k309U7uocR49McEYgKk5JU4xds43Xa3LgB5MFsQ9ygU3KlLR54+0CSJxwUTquoJcNPC88IgvWJPoqiHYQtOLHw6C4Vkodt7WpXEzerFNwc= X-MS-TrafficTypeDiagnostic: VI1PR0502MB3888: Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=ophirmu@mellanox.com; X-LD-Processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr X-Microsoft-Exchange-Diagnostics: 1; VI1PR0502MB3888; 20:hoRuWsK8GaIIHsLlSqCLClrZuMpWPMjkUaQkRMtTWDmspnQY7c7uiuutb/+LgFdiB5BKbfpc1jaK2Y5k9gFZ9+fywyg5eYMr8fhAvYndKoj4907aZR2uVqJNzAUGmXJIj9H8p3PbX/JsCnAzBn584kpo6CTUd36pJm8OFTneQ4ni6AYPWFXIbtPf6U8/FnPtvPmJPa1Y/vBXG5+7k9iXVnaWNNlZpu4NOXtXyZDIrswfFBhKz0Q5Az1HS2NXuIb6BPeWOazJGYg3Axfi51G9v6gb+DN9vwaoJXbsrC+yeROIJYmYHRQWPG+lnaA6TvuwRP8dj2QeVfjahAcX5msJw196h3kOo0F9Hd+GlMz1PIwZkX5KPQIONvDhP4CpP6gDFfhmO2/njfpxGYDj+rwLRmU1k1pFYzNhSY+6U92n1wI1wFbZrQtBHIu0UvG/Tc9zxjePDzdXBrqgDQKZOKniUCKxx8SZ13FA1oNM4+7iuJ10qHDk9XwCU9ttP1BM259L; 4:bNTDYndJuW0sFjj5Ziy6bl3Pz2X8mL/khpgjhg4gqRYdeBazQizX3KyUJ9f+iZLqd5ANiqmOSr2v3ovl18E0GLx1p/dsacgtpH3oLKXJDrJJXCYuiVwQYzo5e1joxpThXysLahX+da6Qa1GYpbPkjGcIUuj9ZKKMbwCIC8jgPUoXkaqWypwo5KXv31CCxcyMj6FqgQTvVhnQpTXW9VYUvDWisV9lOeZQAFEgd7CSQ5IAkA02sNdURl/Nn8HhnAR5HzLOFQ+JJofINO5rilQTFA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040501)(2401047)(5005006)(8121501046)(10201501046)(3002001)(3231101)(2400082)(944501161)(93006095)(93001095)(6055026)(6041288)(20161123562045)(20161123558120)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:VI1PR0502MB3888; BCL:0; PCL:0; RULEID:; SRVR:VI1PR0502MB3888; X-Forefront-PRVS: 0574D4712B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(396003)(39380400002)(39860400002)(376002)(346002)(189003)(199004)(86362001)(7736002)(8676002)(55016002)(68736007)(26005)(53936002)(3846002)(7696005)(51416003)(6116002)(52116002)(47776003)(386003)(2906002)(21086003)(478600001)(36756003)(186003)(66066001)(16586007)(33026002)(54906003)(107886003)(59450400001)(105586002)(76176011)(16526019)(6916009)(4326008)(50226002)(50466002)(316002)(4720700003)(25786009)(8936002)(106356001)(305945005)(48376002)(81166006)(5660300001)(97736004)(2950100002)(81156014)(69596002)(6666003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR0502MB3888; 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; VI1PR0502MB3888; 23:lYOolidgo4foM4IdwCfB+MYbsBRyGdn/06jVT5b?= Qknyy7DZPxr+5ZOn1bInKDFB7iHHOzKBMCrugCFvvA8O8drvwKzH/dLF5BPEu9L0nEH7QEub92r/gn3E7w711Efm5jeEJOJdP9gNTrO6PwloiXOT6CRs7B2lRqOnOm2BfFbpCU9SYXEHOO5QibBv379I/3guofqmim4ttV01oW6+7d9QL1lcV5xcrubcsfXQeHzwz+/zZDBPv46+FAY03+hmqYeXD9nre+N1fjfSMC3rAEfF2637jPwhDI0EWfZx20Bv+EgziywMCWG9543UZ2epllPkn9JaSqngHKhMzN/AApARmt8mP3DMFtzKHe+pPFZpWCo00BiR264GdPFTphbtmEtezUQu48CDdTkt9bcEWEVYzRNkN1/KXWhDRuqAjE/9oL9sLTRNzxUnSMhLnmmkeXXOKIHfXr7pBnxfLdgnZxgyuspuV+vAFVWDRc+VvqQ1fCGCfA5qHtzQPLBQTeTDSB7xTqGgUVwxpwwRkK4cH8nhTA3F9T7xO9yWRF5ExKO+Qj1rcP+oexxMvdX21jhWsCe9BMkcuHz17GZEqPul3w3ReuNxILpIpXW3RfGaP/QCBomy1ElXe7z7cKIUYd/kHetXjtV0tZxcoEYX0/ECxg+P2u2Axk9QfuWHztCIOVtilZC3y86tPqY7jdMF9jGaMdiwogs06Xy3DANfp9UMXEpYeR5t/pVZF6b4sEBFkh5C8sL10gloFFwTCDhQ80/xfkQGTuG4ebMYCs+3/woNUIyuSDLFOxgZJ6vfOnrys3+2Wrt3iY6gkV4nrgBUcKbR2awO+Ev8WkScsMPRN+vDqqC4F9PF3anxok7RfWGSe+wKN/iY7UuY/3vi2ArqQ7WtKAW7aOV4NOKa3+9P2NKJvFbz4HhZ00yj2lLJFnbeVcziK2IVu0alyQZ5PNkNZgXJLOSJQsoYs/uzra7Ebh3unSHqlNgAi0A1kVRJjf2BmhXAihHGuxfgswKKBNQaIG67wfk4NBRd3nb6qdtvmScmmEOCfG0PgwX3tNTwiOAEmSQ/ivl4MC683gR92AWZbdihgoeovQfIPWES3aXU3u0HYUDmUm9xw0fhd2sRcUUWhQn734jd6ZROE2DXUdGFrNHaZkmbl5mCTRuWuXh+8pm2Jgc7ZwxdlcpGCsga7aD0H/5bYK5SI9Zh0R0UWEeEyG/jLECOJQeZ3L4Ki5g6kGz2v2hBRUZkKmO7PBO+qKXKckS0= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0502MB3888; 6:AM5G6pudcR2vrOy7GTaSXZfzTEoygDzL5NaGQ5ldigaBLrwoYX/Ql41vFF5qHWxQBm7RHhwHOrc9fMUacxMF5NIZhbsg3A2AC9OIiCbfgPF6o9LkFXSbTMXNJkhxDtd/I2/XmfHSGF6t8NFFoW1fpIFbh1BLuMYPYuaUOXZmYw7u1k2QH8kMPl9jN5NEVVfxTWglOnqciSiPx6WgJgfPpM7USy8pqd8iiq6MRLeksrGl0sUEJF5N+HbT+F7uljvxNerbszE4s82FEuazee+PS4MNzch5l0jgEez1rWJYUvAUkdHp1sLxVzXMXja5uZDJesypwVtbl1jq9UYWQewxq8pGzPIKAaPOF1+zQ2s32cM=; 5:66c+0dmH80hibON/cRT4u3/0XuRjAw3QucnGHSBYaCT/hwQvxcL7lWR4rPZ1WbGYkzEE6vSr+Db3J6qxSsv3e4xkna8t2ysO5L1sqph7iS5k2w4ujNiIqou++Z0oGqzhydWaIaDnscVzqQyr8HZfNF/BKeFpfX7uUU4QVen9xtU=; 24:nTAYNJs+BlxG5jmI+i5QRru7pApPjlJex16n0l8CtjmI+G2y65bo/SGgTpFYFB4tGsO5z3QFA4vkxKGPN3+3OkKbbIQU4K26+YMfk1WJP3g=; 7:nLYfTOaLDiDKyBTKFS2sj0u/6XvyCn+wL3JKBZ31nDNiOO8w5NcbPizBF6SYPu5Wj8dGyNMvFA5FerPaAIbw0aGh0Iv8Kclx7gWY2yOIA4hc6w/6XU+oHApPtZ/tR8bwBWOrZ03vWsfzzZ5o+VF8TRdjg6Hwn8XdvVQP7SGnseiJjZIdzLENOBgelsMbWVSwDCADgk+QjlWFTJeH7t9JjkdP0itopZj+fvCESyh9zMYoR0RL2h6aCftxyOMI1Xk7 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Feb 2018 14:40:52.5852 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d0acedcf-abda-47eb-74d6-08d56ca67573 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0502MB3888 Subject: [dpdk-dev] [PATCH v2] 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" The eBPF classifier (section "cls_q" in tap_bpf_program.c) is tracing marked packets in which 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 could 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 Acked-by: Pascal Mazon --- drivers/net/tap/tap_bpf_insns.h | 23 +++++++++++++---------- drivers/net/tap/tap_bpf_program.c | 9 ++++++--- 2 files changed, 19 insertions(+), 13 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..8abb3b7 100644 --- a/drivers/net/tap/tap_bpf_program.c +++ b/drivers/net/tap/tap_bpf_program.c @@ -28,10 +28,10 @@ ((b) & 0xff)) /* - * The queue number is offset by 1, to distinguish packets that have - * gone through this rule (skb->cb[1] != 0) from others. + * The queue number is offset by a unique QUEUE_OFFSET, 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; }