From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-eopbgr10065.outbound.protection.outlook.com [40.107.1.65]) by dpdk.org (Postfix) with ESMTP id 65E46E5D for ; Thu, 28 Dec 2017 11:09:22 +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=htu9e2x8Zn1Kwi5kO+Y2csYA5SJ9neO57+ZfeRiOJPA=; b=JV5i9oyu4vmytpMm9XE5k8mj7E1yzgQzdG0f5DhWWVeSuJVne10a6w8xbMzTI5tWSCvEGFtwuFGz0BfXm3NGKxWrb3+ThTVWwZTV4/WOh2DK821va27ojfliHYvbn5+sv4lFl/WNZ65YX6zZ32aZAaHSJbAObuhpYdwI4+A7NXU= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=ophirmu@mellanox.com; Received: from mellanox.com (37.142.13.130) by AM3PR05MB1251.eurprd05.prod.outlook.com (2a01:111:e400:586f::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.366.8; Thu, 28 Dec 2017 10:09:19 +0000 From: Ophir Munk To: dev@dpdk.org, Pascal Mazon , Ophir Munk Cc: Thomas Monjalon , Olga Shern Date: Thu, 28 Dec 2017 10:09:03 +0000 Message-Id: <1514455745-17349-1-git-send-email-ophirmu@mellanox.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1513513315-21618-1-git-send-email-ophirmu@mellanox.com> References: <1513513315-21618-1-git-send-email-ophirmu@mellanox.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [37.142.13.130] X-ClientProxiedBy: AM5PR0701CA0018.eurprd07.prod.outlook.com (2603:10a6:203:51::28) To AM3PR05MB1251.eurprd05.prod.outlook.com (2a01:111:e400:586f::13) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ac1002c8-c56f-4d2c-33a6-08d54ddb0fe3 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(48565401081)(2017052603307)(7153060); SRVR:AM3PR05MB1251; X-Microsoft-Exchange-Diagnostics: 1; AM3PR05MB1251; 3:Yfa7ufO33PZPjLSruSHYMzTNEHvwcDRtMPtH6p0v7XxsUnNFZ2AXT/qeFML/utqfA+58QG8sIrhBKKsJg5lNgs99fdMmQcHs4f/H8l6iqA3zf9xbhP8OEjJaNqlXbecbWBTh6W0HkgUQYsZ3ZbtgIHoMyEEeNgf202SQMH7zdOet+l4SjJfKoPFrvQbNVH61IMWeOVrvjGHiFYpBsgadkBXbLtbHWH18bZtAGZbt9TIilaUbdJU0fP8ipECVGm3+; 25:3dc3x8b8q2pDnCteCk8SxLC7+KSYfT/SA+O65EdcdptJWQAq38G4uK+4OwCXO9hUz7OEPFjac+XL6PkKGJAOWYuUq9t3g9ZpIWhBWYH1mJ2PPnk5biEkCQAGDCJOyD59zfefRkIIkTm1ppBJRhnfgqDHEtPNoHVXBMuaWyn4ewEpR9yuutkkFs/DxPoVFUlmD9H/WZlEBZ9AsX2RDtbhS4NR2SltZuiVdkiFH7gHOJ9OGXSjEwWMHKahu5mQ4pKD+UIihkYSX4K76KdnvMlHcY69vqR2MqXsaLDPmmqntRiW9R+WVjNerBeIFHvsBqDNPpS5Atfrl+jOBgxlQyR64sj10ie0THeuyYW8M9pRzJM=; 31:yE2L0skNnhKmvBU4KtIE4ygBVYYS96CmLpEnA6gw41HSHfHom6TJHUFa4yle7Z4T7E/lVdMZuZYHLrs1kTIQzri+QFnrwH+8TGBtj+YvOOxv49lYqkbbUX+AZ1j7cDDC/sFlTkldcSg7ov2mCXEm1H9WAmtxxYoTppDeMEufTQq/9rfKOITLIjQCuqzS1e/HTRdkgWh9Dz2yAQZqqIhppv62ehzqLVz0wq6vOU3uSZI= X-MS-TrafficTypeDiagnostic: AM3PR05MB1251: X-LD-Processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr X-Microsoft-Exchange-Diagnostics: 1; AM3PR05MB1251; 20:xVOHiW9mpMgqtIip1Hj/IX545NlpQNanMmTfovtUfodG4g2vmJUEZi5nGZCGqR+yZtvN+sjM26EmNop2k71anWsEtutg9JrXHhj9Npe45qaNWkFcOyMu7klQWfCHaXi8LQA2hDxZ2l4Bmg8el6bMl4l7RMXFx8mHvIq0gHg5a/7LAem5MClxKd7q68fmEOmH0x8ZWmu4zmADc55UUT1rEgS7I9SjvKyX0NuwMS3PvAIRVy/NjY1aV6BsYsSCMZ7jYABjVJNG4qRa3l13nfddk5qBreKuFsedo7skla6HnO1yek4xO6oVbJu4mmdm63e6puAi+SQlTAv2eCuSqgNyuetiADD+9FdJ0Hgymf4hKOThGL06HhMZaaDCBn+CeT7f3cHMVAhYosijINQs/E630YjW1koEwO+2bYD7djpxwKH5caFRgT4d3oi54nUMdicPCPwL+Gee+PqK5+7nVEGVv8clxGdK4GP+RRL0atzSPljywa/hcJ3GpM4mGse88jtd; 4:x03T+w+4Ab/fx5DdEcPEi74RGUvb/5QhOmqLZqX4Hln2qtDspRSyfzoRuCv7nR/tkeFjhNGZ6rVUSKN1WE3nOoQwYCLMtbYIrR8Y2CTNEt0HjJFOV8luWqraJ6lwSpq/4ZVBubg1KrDgvtYq7Csm4aa/r22Uf0NnEbdrZXfZhGCystE8yMhaipF3I6bNY5qWs7Vh7qe/aOAgiOkdKw79QhbkofW1qOedpXNIquGJeQTnuoT27YuI0x69DIFtK2WaaB6cr0Es095noqBXTcqW3Q== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(8121501046)(5005006)(93006095)(93001095)(3002001)(10201501046)(3231023)(944501075)(6055026)(6041268)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123562045)(20161123558120)(20161123560045)(6072148)(201708071742011); SRVR:AM3PR05MB1251; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:AM3PR05MB1251; X-Forefront-PRVS: 05352A48BE X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(39380400002)(376002)(366004)(396003)(346002)(39860400002)(199004)(189003)(305945005)(5660300001)(6306002)(55016002)(8676002)(81156014)(3846002)(6116002)(86362001)(33026002)(66066001)(16526018)(16586007)(316002)(2906002)(110136005)(54906003)(47776003)(106356001)(25786009)(21086003)(4720700003)(6666003)(7049001)(69596002)(105586002)(2950100002)(36756003)(59450400001)(7696005)(51416003)(52116002)(76176011)(50226002)(7736002)(4326008)(68736007)(8936002)(386003)(48376002)(50466002)(53936002)(81166006)(107886003)(97736004)(478600001)(966005)(217873001); DIR:OUT; SFP:1101; SCL:1; SRVR:AM3PR05MB1251; H:mellanox.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX: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; AM3PR05MB1251; 23:5gFxDqXAMP4Ar1X8xGXbhvWOjz7hjQhABJY7XKi+a?= =?us-ascii?Q?LGjVaOlrlzphGBJ1Y4WOmkddJQkDHJHD04i+UScH9YnQ+zCDa9Rt0TwMcuuY?= =?us-ascii?Q?ZaxNbKqZ65PhVv8no6oa/tdveZx0PWG/odyNVew2AGi4hrbTVpZBSdPqtwWR?= =?us-ascii?Q?9iU8KaYFtzvajgGjXb/NBN5TY3N7UxSz7RVEfVVST0e0O3H+fE0XhBVnd1wn?= =?us-ascii?Q?SEavCaVkbYZX6juTHGvnuNOFVyBIBHwAetpk3zTfjOIpCbQXtZptJ52uGlYq?= =?us-ascii?Q?SQR4VFZsrq/9Q8vthvAc0d0xcWmlIEp44Mik0iN8+dVdbReFbdjdct5uM7Xf?= =?us-ascii?Q?S2p9nLBMTbhdAxpLA/ZiZ+fH1NwvWWaVxfQ8mzH9LAZ0xSLnQNmTHRasyuu+?= =?us-ascii?Q?dxtf8rSTjBJ9C+xlbcuShayWv9cBL+NCEY0IRKorN0HEOY7cvwodnMFLWwgb?= =?us-ascii?Q?mnKc8ZsYUBw7HcYvUF4PUsSvtGQaDPmjNJUUocoNCRSNGxzF/1vJ69WjnaXB?= =?us-ascii?Q?sMmxIVw382tY62OhMte5ZE8yjrDgiEuxE3unOB+cSp1gb/dpmOBNb38GQH+/?= =?us-ascii?Q?KOwzLlpEAtyHkrGFpw1Ijz8QZg1sM+2HXP27g+eoqGssQ0SXbFbdi9rLLmhW?= =?us-ascii?Q?iAKWy14J0/IN+ECQu4OWxILYciGYa4k892PdUwYMeZShdlndlJU3cquy1aDY?= =?us-ascii?Q?84yYbsPmF0/MYXEqz53+G/Pg/7ABR6ldhDYKZBM0moGGN61HwH858ZwoBIqk?= =?us-ascii?Q?WJJLc4U7cc7LkaICWqznOCQtYff4/4wWInwxoskRw2roGgevkdij5uMebttR?= =?us-ascii?Q?IOrPjcpDx4SXew652suOtnW/Uvo4fyEOMbHOjXIoWZ8x+IBP6SrKS4jLoPOw?= =?us-ascii?Q?KTkhDPnmFNEXRTmcY04wRdJ8YBzjb6UFy7V7P70gbk9rGWqfhIO9rSoOKgwz?= =?us-ascii?Q?vX+676P/wQhNkuQJwZr/FMkrcSIPN5s2ZFocSd7EFUwFCBduUBQJMjw6i/8j?= =?us-ascii?Q?sE8GsD2b7of5lVxZd3vk2Bps/YU1GE4UhQhX9hS/Zd6we4de9GttPcBEwthN?= =?us-ascii?Q?a76dMtoJ6MjIxvRHBUBGQMxjQ0sdMDibNqwZ8h78lLFnXZHYcDkaey5si6T+?= =?us-ascii?Q?tVyJXFNHDoq5HKnX+HjoqPqH7p/e+WpmJWBLZ5MXs4vPHNXECpLnrAwdm+3j?= =?us-ascii?Q?WOGZPVh+lsAGaTP7Ud7MF5TkmEBRENFYXuA6w+ACQgk3RAxtXo96kPFVth+h?= =?us-ascii?Q?Zjbm+BHpOjdZBuD7rdc4/QedH+EyxnL3nRGJ7IWxTS//R3A8GwZ37/b7x4W8?= =?us-ascii?B?UT09?= X-Microsoft-Exchange-Diagnostics: 1; AM3PR05MB1251; 6:B2+hIO3jsf/ZxJzVqLRvmu2Qt9rLv2+FE5OgyhSd/NScO6u2CjYAFuLvhi0nNg32nTzoBWzl5PNxhnehHVmmiLG3c9AY0sbDM9NbK2JsHW1+tILfdapOTjAfya9tdowTDZGP+3s8N7ubECYvJxcGoMiJIstPDZJa8n71SfWlEgaJdB3O53IL8HtOtc9wvYbRrHBIpkyEdhXuIddZKCRKIjc9HUWkfHjMmML9krPDDREr0mEYlphRhnKOjHOFPph7TRy/+AbqAC94RV34JU5/DzQNkDdSWjNwDDCnU0AjiYFw/xr23pu1Up21xjaWuclJBJj7SpepihT25VotLTJyJzvNMi9uQhGJk9m9domMvpI=; 5:p8aJALI7BMecgEs7Ed8BYLwYszzK0DCWdxXCPuNED1Pmvnol7vhnGsbksH53tk9YwoKBknvMpK8mH0ihqIdH2SWLiAuNZD+d+PKa1IAaWSryJA/00Ess9Rmjr6iOOyHVNKMYi36i/rzDwK2kDEd3SUaNi0g1Q8HfZSf52iO4U5Q=; 24:YJHR5tykW0fIZ9iTUfxktflfwJNWTx6Al+9JkDHUrTDpiwhjyS0anJit9fLZGgPyzwRjtgcf0W2/7ka4ocuuIJuzGiv9zOncipO4a23mras=; 7:gbszsJAwxs/dTMkaMn8Bm5sUj5JUK92SPrArr8lbIMxL+wikX5tRZfSJlBdcx675wvf2pt9E+CvyG2jhyx/ZqdAsFTcaMqHnG9ng7c9sVkTioTAiw2a0KnqGZOmf/JZzy1NhIUmg2JiJMv3N7XWVMzCFYwu/C5a+vRy435nZUi/RyXO17rBfVCdnkHOddz8g0kGum+MYv33b8eeBXG+t4u1VMAwQ0UzrV4fO9IRgZtA79eLJHZG6qwKLUzqCpXGI SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Dec 2017 10:09:19.4862 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ac1002c8-c56f-4d2c-33a6-08d54ddb0fe3 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM3PR05MB1251 Subject: [dpdk-dev] [PATCH v2 0/2] TAP RSS eBPF cover letter 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: Thu, 28 Dec 2017 10:09:22 -0000 The patches of TAP RSS eBPF follow the RFC on this issue https://dpdk.org/dev/patchwork/patch/31781/ v2 changes with respect to v1 ============================= * v2 has new commits organization (3 --> 2) * BPF program was revised. It is successfully tested on IPv4 L3 L4 layers (compatible to mlx4 device) * Licensing: no comments received for using "Dual BSD/GPL" string during BPF program loading to the kernel. (v1 and v2 are using the same license strings) Any comments are welcome. * Compatibility to kernel versions: eBPF requires Linux version 4.2 configured with BPF. TAP PMD will successfully compile on systems with old or non-BPF configured kernels. During compilation time the required Linux headers are searched for. If they are not present missing definitions are locally added (tap_autoconf.h). If the kernel cannot support a BPF operation - at runtime it will gracefully reject the netlink message (with BPF) sent to it. Commit #1: net/tap: add eBPF instructions to TAP device =========================================== This commit introduces BPF program (tap_bpf_program.c) with a classifier and an action sections. The current implementation calculates RSS hash over L3 addresses (IPv4) and L4 ports. BPF program compilation is not part of dpdk compilation. This commit includes the eBPF machine instructions in the format of C arrays (tap_bpf_insns.c). The option to update the BPF program and download new machine instructions will be described in another commit. Commit #2: net/tap: implement RSS with eBPF classifier and action ====================================================== This commit builds and sends netlink messages to the kernel that include BPF programs. There is a single BPF classifier for each TAP queue. Packets marked with an RSS queue will be directed to this queue using a traffic control with "skbedit" action otherwise they will be pipelined to the following rules. There is a single BPF action for each RSS rule (may add more to support IPv6). The action is to calculate Toeplitz hash based on L3 addresses and L4 ports, mark the packet with the RSS queue according the resulting hash, then reclassify the packet. Ophir Munk (2): net/tap: add eBPF instructions to TAP device net/tap: implement RSS with eBPF classifier and action drivers/net/tap/Makefile | 31 ++ drivers/net/tap/rte_eth_tap.h | 9 +- drivers/net/tap/tap_bpf.h | 92 +++++ drivers/net/tap/tap_bpf_insns.c | 759 ++++++++++++++++++++++++++++++++++++++ drivers/net/tap/tap_bpf_program.c | 213 +++++++++++ drivers/net/tap/tap_flow.c | 625 ++++++++++++++++++++++++++----- drivers/net/tap/tap_flow.h | 15 + drivers/net/tap/tap_tcmsgs.h | 4 + 8 files changed, 1652 insertions(+), 96 deletions(-) create mode 100644 drivers/net/tap/tap_bpf.h create mode 100644 drivers/net/tap/tap_bpf_insns.c create mode 100644 drivers/net/tap/tap_bpf_program.c -- 2.7.4