From patchwork Mon Apr 16 14:26:26 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Scheurich X-Patchwork-Id: 898647 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=openvswitch.org (client-ip=140.211.169.12; helo=mail.linuxfoundation.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=ericsson.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=ericsson.com header.i=@ericsson.com header.b="TH1EHdlR"; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=ericsson.com header.i=@ericsson.com header.b="aUBC66yV"; dkim-atps=neutral Received: from mail.linuxfoundation.org (mail.linuxfoundation.org [140.211.169.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 40PrM31swGz9s1l for ; Tue, 17 Apr 2018 00:27:43 +1000 (AEST) Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id 881DFDE3; Mon, 16 Apr 2018 14:26:58 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@mail.linuxfoundation.org Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org [172.17.192.35]) by mail.linuxfoundation.org (Postfix) with ESMTPS id 573CFDBB for ; Mon, 16 Apr 2018 14:26:56 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from sesbmg22.ericsson.net (sesbmg22.ericsson.net [193.180.251.48]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id 43BE4473 for ; Mon, 16 Apr 2018 14:26:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; d=ericsson.com; s=mailgw201801; c=relaxed/simple; q=dns/txt; i=@ericsson.com; t=1523888813; h=From:Sender:Reply-To:Subject:Date:Message-ID:To:CC:MIME-Version:Content-Type: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=xA/La+oE/Ea2RfbOHyi4IqmYDRVXkjAN9IF/Ncu+1aI=; b=TH1EHdlRKcrRQa0zrLS6OaBJTXNUs6iP+6s5f9/bQuSSkpAaAjNkFAVX39cELMVe qxqHarQVupXF3Kj+WmngOnrN18NonCz6XEqV07H5MgdEalOVVaJZcPHea3RGDa4i W8LNxOSVbG3Tmj0CqrCDVTFwS31tHkK42Gn6OXKJEFo=; X-AuditID: c1b4fb30-1ebff70000005970-62-5ad4b2adf613 Received: from ESESSHC007.ericsson.se (Unknown_Domain [153.88.183.39]) by sesbmg22.ericsson.net (Symantec Mail Security) with SMTP id 5D.44.22896.DA2B4DA5; Mon, 16 Apr 2018 16:26:53 +0200 (CEST) Received: from ESESSMB505.ericsson.se (153.88.183.166) by ESESSHC007.ericsson.se (153.88.183.39) with Microsoft SMTP Server (TLS) id 14.3.382.0; Mon, 16 Apr 2018 16:26:52 +0200 Received: from ESESSMB505.ericsson.se (153.88.183.166) by ESESSMB505.ericsson.se (153.88.183.166) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1034.26; Mon, 16 Apr 2018 16:26:52 +0200 Received: from EUR03-VE1-obe.outbound.protection.outlook.com (153.88.183.157) by ESESSMB505.ericsson.se (153.88.183.166) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1034.26 via Frontend Transport; Mon, 16 Apr 2018 16:26:52 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ericsson.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=1dSfEkm73OGDRzZdhH/9JoY53U1tZ5DzM4+2Bn6+YTg=; b=aUBC66yVZl8Ihf8AMMnDqwwNgJuVBC6NtBTuKQaoNl79ke1gQDnpKWC8+3NXs3ib1ReTt/NR0yzLSK1pqj8qiZVuxnlcTgydaMb9IxHFkigJWCdxUVwO92eO/jcWklaLZsXCXcxw6X0ZgW2VJQnAPdpZhvYwRsmaTfJjgdt1Uo4= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=jan.scheurich@ericsson.com; Received: from ubuntu.eed.ericsson.se (129.192.10.2) by DB3PR07MB0650.eurprd07.prod.outlook.com (2a01:111:e400:943d::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.696.8; Mon, 16 Apr 2018 14:26:47 +0000 From: Jan Scheurich To: Date: Mon, 16 Apr 2018 16:26:26 +0200 Message-ID: <1523888788-20288-2-git-send-email-jan.scheurich@ericsson.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1523888788-20288-1-git-send-email-jan.scheurich@ericsson.com> References: <1523888788-20288-1-git-send-email-jan.scheurich@ericsson.com> MIME-Version: 1.0 X-Originating-IP: [129.192.10.2] X-ClientProxiedBy: PR2P264CA0035.FRAP264.PROD.OUTLOOK.COM (2603:10a6:101:1::23) To DB3PR07MB0650.eurprd07.prod.outlook.com (2a01:111:e400:943d::16) X-MS-PublicTrafficType: Email X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:DB3PR07MB0650; X-Microsoft-Exchange-Diagnostics: 1; DB3PR07MB0650; 3:oOg2u0d20h/dLgH0Ethp6uC3Nr4GXeogD90fLYIgyPjCoKVl48gQ+t9PRJg7/xYkijURi6WED7dsJW7K8sSjesIlwoRn/nsxyZhY+RrQjsstgryiRFLSKEJv3No+cmQzg4a9UfdBYth6d7fQfmBNcRBxI3atrjaN8z3k3OgJfSbF992QiEmYodqVj4gRtk2zUSHTQ0KHWuhwhy+ZrAmTLnzu6glRpeOwVQkvvwOphSguMydVUOxgErFY8cxIi7+v; 25:qvZ4nFkHtb0gthmGgtHGSRFD+Z5EORfYEHbbU7EmfDHW/tGnCHtDyrxMlGs1m4L5KOK5yfvXUisz8XtRzY+Kabtm8xyu6okSfDFJDEb2RMFN/sts4GTWR1xi2QvfXGwDpVb4TptGy8hiRJ5PP7V1tu/gEQlZv7V5Tv6R/+vYZZA7lMUbs7nwvkEMyskPkv3oKx5K27aqPftnIrbUCBPvfyC4wnpceLcpuFx5Gxc1qvxY4JXZE2GJ51004h6OaiClru5bURpfBdf9unTLPubPQWjRgCv+ti8S+4XaBNuDEUE5OTCasPf/iFuqOI64lIIjSrwZzKaYT28Z9CV5+Mk9+Q==; 31:+3yEC7r2K4Orzf30YVHUf6v+VzRfRzwQPbZQ+1+wpcaGvvluECVAiY3YXfhe7nRfzEITPcskqomDFkcmYGpjOyYf5j6MGtRPl2isfNomDKd8qini749csl7jm1AdiNWnXm9o3LJJqOxGAlE4ybseFOg6uZSuMjHabzYwuloI2Q9hhyqYYgEkKznPR5x1YakWKUOe1GbTALuXGBqBnIvwFhUhg7H89i+ATTf741aFsrk= X-MS-TrafficTypeDiagnostic: DB3PR07MB0650: X-Microsoft-Exchange-Diagnostics: 1; DB3PR07MB0650; 20:N7ZKLh3y0HTPnptc/ldV2tZUMMRHkOuupqgZ7yfcMkkvYVtxgQzvlAehJqlafYyvypzX07XHtGkn+j7Gfyp6tpwNYPD1jjHdA7OfnH7caDxFkS5dPo0MtpyNg/FdlPJL1w/e1rLTI5ol8UoOa2fkI0fDV+1hNrSGHElSex0qmCC4MmESXj0CBJ6qnPOOFwQj9+4foZNr0hvlPYFahlXuNJ6BllDfud2sqj3ibaUH/V3RfvQaQ3ZVt6pkubIZqsg7Z8SgljLUyCQK14V2dKctICuM1fWIMSyHQKZnz5E9YosIKCWI4f2whRNZKddaGWs+wi4dnnVzV7K3SQMIqeJ2ktLAeRMAJ7Niz6rJ1PBziD0LZigEjugg4yb9GHD+5mayfho72s8UYhlyPgvP7wSYqEhXBXP5iEIjktRPWyPrByie4c3yf3D040HbwgH09qiVfJlfwkhGaZkj1CAn7ttb8dFtVPOjRORR8+QTis1ActVjnrnxX/wWzkcKnSEA2yRW; 4:E510kOcN3mraAlMdEQhMN2WS7rMArGJF4XYxOnCAdoxW7AFBYPbBtNPH1HZyep6VUn/PhuB8SUTwt2u7B4GcgCWY7bqJKO094uZ6qRl7D5eezLltaUZ6MwAMPIIBPzGf23jmuXDjQf1hY1rntOBlODJaC1JK/ThdA2K+kv5/e6Keh4L42EAI7OvnmmU1w/Q55oEfcXT5asCGDi1f3tYsgi//bx2Nl6mcXMk6l7gVkpXy9qrK6Yr1tnAFXpBzgMNZLesOpkMOpxflWKN1zmz77q/fwbF4STqlqOyPS+Hvqmb7amtIIHUtQZ5YZAZ5MwqC X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(37575265505322); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3231232)(944501327)(52105095)(93006095)(93001095)(3002001)(10201501046)(6041310)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123558120)(20161123562045)(6072148)(201708071742011); SRVR:DB3PR07MB0650; BCL:0; PCL:0; RULEID:; SRVR:DB3PR07MB0650; X-Forefront-PRVS: 0644578634 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(376002)(39380400002)(396003)(39860400002)(346002)(199004)(189003)(186003)(16526019)(8676002)(6486002)(81156014)(50226002)(97736004)(81166006)(15760500003)(11346002)(478600001)(446003)(44832011)(68736007)(6506007)(66066001)(51416003)(316002)(52116002)(36756003)(76176011)(106356001)(105586002)(956004)(2616005)(50466002)(26005)(2351001)(107886003)(16586007)(386003)(2361001)(305945005)(86362001)(3846002)(5660300001)(2906002)(4326008)(53936002)(25786009)(7736002)(6116002)(6512007)(476003)(47776003)(486006)(8936002)(48376002)(6666003)(6916009); DIR:OUT; SFP:1101; SCL:1; SRVR:DB3PR07MB0650; H:ubuntu.eed.ericsson.se; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: ericsson.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB3PR07MB0650; 23:cbCDrSDgwR06C4qP7VEelhM3xiF9U6uUY0OhL1vLn?= e2RYK5mD53UAKR4drJJqcRnhm4qWkzlxhrGqGDejqsheyKETkzmB6qrwgGJsMWEDOGZnfZ25D8zxzo2Iia48mNrNn7ZvhTDX++739qnMgQIZxiweget/8Kq15qAhSlSCMH1wDDLdrA6kZoVQRKegGScY7CsrNaaAv0H829RCskYL0ZEGLZ/Y1OF8mzr9isoAaCHjwhi1guErtyPn0hE99FPzPvJpPxhUaeBN4xLJJzEbx3Xyw1R34L9KMFBYsfNC8uzxyrNpTxmM1YNLwgq+3BnM3AEiq/9gRBJd4mM9Z8PP9Z87kz0nC5ELDtEiObT4SfkvCWHNlcPggrgK+B2HyO8QuH9TBZDC2s/wRQiJK9We1pDBpfYlwB/vu/LBmfqW2kYfM45Su4MYJsSP2K7M/Z136z2cVr3GJuZfWH9jlx3hLcwXmK29nOE2HMUmDV4+r1U5bnM4kchdErBWL+5iBNU9sJKlkeO3/G4ii5iWIXp/gbAyWTq3V0brfp4Ge7+xPgbDEGJnSyw8MD+40mL8T3AL/zykIMroTMo6CU9USI+irVFKLkkrFpi/DW9gOfCHrYLVl/OPKmGRwDicIVaXku9BfhaNJQfI2mN+PrLbnv+1IcABFVrtOiGrHEqHPXFJJMsLUdviXeBcsMpkB3XlZ3mmEqz3x0PGqdii8T564wqlKWpVebu+4utgG/hIFLnDDbLGbVZCh6WVwZPykznARAIw6r0RH5GfVUu60ceGzqP3iPwxI/X4Yok5DHwe+9IvRdYFVAAC2EJoC15rQO+32SBjozrHvsfkxCEoWDDoWXq4ckK0zxW7+LEKo5Su59ixrjIMVT1mzqSYAaWPBnRyqE50pIL96j/bcWZPg8WdBFl5VCiG6XdI+asxiWAWFPP1UI51Eq+Ze/erXtHRxF2g+w4lpe+axWDmoiUFDUdUazMhQU3yBa6gbIfQPHNf82TYJL6M6S1yvtrYhDVhASoJO5P4lh77nNq+PCYb5pCzTlMRdgZocw4GyvSjPWmgRxgS4YUcUw+fFy81bA8cQgW7SapnRiIh6gfkLqqlTMqc7va3SsWq/Bbmo+KefLQvew0KoPkTAGV4wTRTWQ+C9IwR7UCgGZ0PTvQGRudnnYGmtBPPygLD/07zlE5O52QYWGGbDuwJ9gCzYRSKPwNFBsPrOTvKlF7iYuiwrZ7DQu1e6x2vBO/Fv06CmU/E7FlDCs4rEfrQdj/7D1ORWufTJpkiOWEr70h2kFLoMU4d4Tmen8EQQ== X-Microsoft-Antispam-Message-Info: msD3LsfpW5/ArD18t1ic/LgftDQVGrIpWlvd//vd4RDHQCMYOY6eHNibOGYqQoJr/53sQbjfRzsbenrIdfhEvqCv71O/xnmnkx3XVpStz5CfJLF+qxQyyWQSO/zuYZpe2kIdlS3k+hD5/kiPljt6XUFAHb3wSSjYvDkGi9HeEh8lEEsQl3i4KuColASiYazN X-Microsoft-Exchange-Diagnostics: 1; DB3PR07MB0650; 6:mQQQgelU00U0qBf2jIi42VM8ob+sA3Opa5j232NlQr7t8qn0Y4VPHJOiVejp3NomJqNcw+GbKIMVnSGeSYjBEtvl+5h0bz0O9OMneQvK8s5b1JcjzFeXsOLX57aOgPWH+2fjxodvnGgdqwMgS1oZPjOeFG4Zm1hS3oYPDldCvWXGCaADnuiXpoBxlDHSkOfZGO/MDKrIbkMYrldkpto4SHvxdLNVcdf/HZrpGF5qQNiq1+9w47TlZ6flYn6K0Yug04tgF5OOZ5nLqLhrEX3253PMf/bs8J+LlCUrE1bkZ+CxMRW1yg4V5RYe+BPUpRWQZBkcry2PPXmsKRrZDgPYPy+czqGjTp0I+sY1C3hXiqY041q+7Lk2JCXZoaZ20tztSOpr9I3Lvg31O6zRKOCemxakkBuGNDGIKkx17aNDY6BfAUpKcPPYMdg0v9PYYHx6U0rRu5cT4eKu3hwyXszjCA==; 5:1XiYOyPnkFaGIhEqNhGUV0OoWvkeidNVtlf2QAS9vyvdDLiwQjXzGQ4kuhwN3Io77UJ2Nl/4MGRcGZTHIZu3Va9qqIKMy3pK+xCUj0kMj7JEXnXrzXQCXJMVSPwrUBMWEZDYaWTJ33+rKZ03L2/PapT9A2FyyQ7E8amb6yGPHRc=; 24:hjRY+bedDm2YCP8zhGVwcljAvbqN/JvCOz5ty56RpIKPrCWXWZA6teS+fZwShBB/oblUo0AHwyDIBVEMCls/raUlHZp2E/+CuZurifpiDBA= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DB3PR07MB0650; 7:NyuWhTugh361dSUNIJ+c3p97EkwGxv6EIp+OvUeU08lkpPUlSJ+KivPHdHBdNTW/KiCsho2OESJGJ6pgrzZaTVCTaUpY6k31alYmT9dmETHFJ3xXkBAHMKIdV5K4RKWFbmKqj4A2ifFFADL/J9xzNKppMf4tToa6GKHE12ZMQNjwCV4pEUsocwXRtWYB4OS4pnmrtb4ctIY/ru/nZf0lf1uXgvP0kSmGmWuONjTfq73x0r0jSRaljFIiT4EguPRJ X-MS-Office365-Filtering-Correlation-Id: 07827a4a-4cf5-4136-884a-08d5a3a61689 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2018 14:26:47.7421 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 07827a4a-4cf5-4136-884a-08d5a3a61689 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 92e84ceb-fbfd-47ab-be52-080c6b87953f X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB3PR07MB0650 X-OriginatorOrg: ericsson.com X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrBIsWRmVeSWpSXmKPExsUyM2K7uu7aTVeiDJrmqVu8mtzAaHH09B5m iy+7+hgdmD0Wr5jC6vHs5n9Gj+fXelgCmKO4bFJSczLLUov07RK4Mnbc+8NUcFC74vdnmQbG DrkuRk4OCQETiR8HP7KC2EICRxglfvSadzFyAdlbGCU+bDzHCOF8Z5R4OHk/C4SzlEli7fsG MIdF4BOTxIKdvYwg/YwCsRItW6cyQVR1MUksX/EFaDAHB5uAgcTs3Q4gNSICkhL/Fm9hA7GZ BcokVp3fwwZSIiwQLjHzgg1ImEVAVeLv17MsIDavgJfEwruvWCFOlZM4eWwymM0p4C1x/fQ9 RoizvSSmb17FBlEvKHFy5hMWiPESEgdfvGCG6FWQ2LhlJtjNEgLTGSW+7VnODtGsLvH30FcW iCJZiaNn50AVbWOU6L62jx3CaWCXOPJ0H9QZWhKXJ96DSvxgk5jWvJEJIpEt8W1yGxuEbSXx +td3RoiipcwST/afhkrISFxvb4CadJFV4tlj3QmMerOQ3D4Lye0LGJlWMYoWpxYn5aYbGeml FmUmFxfn5+nlpZZsYgSmh4NbfhvsYHz53PEQowAHoxIPL9PiK1FCrIllxZW5hxglOJiVRHiX JV6OEuJNSaysSi3Kjy8qzUktPsQozcGiJM5r4bc5SkggPbEkNTs1tSC1CCbLxMEp1cBofv+Z +04v4TBVo/j31zZXFX2fyHlC4bOVzH6BybNlyz8m1gX3rPderyDS6tiwUGfCYr3waWIhXKFC RrZrmLNWcVtU7bJelr1FoH/Zl2/iebNTs6amHGpk/3XWPVKB9erku6/c38/mip7x/taJenX+ yimbGfKes3QXPta6kV259MXq/Zx9NeJKLMUZiYZazEXFiQBPS07zCwMAAA== X-Spam-Status: No, score=-4.3 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on smtp1.linux-foundation.org Cc: nitin.katiyar@ericsson.com, ychen103103@163.com Subject: [ovs-dev] [PATCH v2 1/3] userspace datapath: Add OVS_HASH_L4_SYMMETRIC dp_hash algorithm X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: ovs-dev-bounces@openvswitch.org Errors-To: ovs-dev-bounces@openvswitch.org This commit implements a new dp_hash algorithm OVS_HASH_L4_SYMMETRIC in the netdev datapath. It will be used as default hash algorithm for the dp_hash-based select groups in a subsequent commit to maintain compatibility with the symmetry property of the current default hash selection method. Signed-off-by: Jan Scheurich Signed-off-by: Nitin Katiyar Co-authored-by: Nitin Katiyar --- datapath/linux/compat/include/linux/openvswitch.h | 4 +++ lib/flow.c | 42 +++++++++++++++++++++-- lib/flow.h | 1 + lib/odp-execute.c | 23 +++++++++++-- 4 files changed, 65 insertions(+), 5 deletions(-) diff --git a/datapath/linux/compat/include/linux/openvswitch.h b/datapath/linux/compat/include/linux/openvswitch.h index 84ebcaf..2bb3cb2 100644 --- a/datapath/linux/compat/include/linux/openvswitch.h +++ b/datapath/linux/compat/include/linux/openvswitch.h @@ -720,6 +720,10 @@ struct ovs_action_push_vlan { */ enum ovs_hash_alg { OVS_HASH_ALG_L4, +#ifndef __KERNEL__ + OVS_HASH_ALG_SYM_L4, +#endif + __OVS_HASH_MAX }; /* diff --git a/lib/flow.c b/lib/flow.c index 09b66b8..9d8c1ca 100644 --- a/lib/flow.c +++ b/lib/flow.c @@ -2108,6 +2108,44 @@ flow_hash_symmetric_l4(const struct flow *flow, uint32_t basis) return jhash_bytes(&fields, sizeof fields, basis); } +/* Symmetrically Hashes non-IP 'flow' based on its L2 headers. */ +uint32_t +flow_hash_symmetric_l2(const struct flow *flow, uint32_t basis) +{ + union { + struct { + ovs_be16 eth_type; + ovs_be16 vlan_tci; + struct eth_addr eth_addr; + ovs_be16 pad; + }; + uint32_t word[3]; + } fields; + + uint32_t hash = basis; + int i; + + if (flow->packet_type != htons(PT_ETH)) { + /* Cannot hash non-Ethernet flows */ + return 0; + } + + for (i = 0; i < ARRAY_SIZE(fields.eth_addr.be16); i++) { + fields.eth_addr.be16[i] = + flow->dl_src.be16[i] ^ flow->dl_dst.be16[i]; + } + for (i = 0; i < FLOW_MAX_VLAN_HEADERS; i++) { + fields.vlan_tci ^= flow->vlans[i].tci & htons(VLAN_VID_MASK); + } + fields.eth_type = flow->dl_type; + fields.pad = 0; + + hash = hash_add(hash, fields.word[0]); + hash = hash_add(hash, fields.word[1]); + hash = hash_add(hash, fields.word[2]); + return hash_finish(hash, basis); +} + /* Hashes 'flow' based on its L3 through L4 protocol information */ uint32_t flow_hash_symmetric_l3l4(const struct flow *flow, uint32_t basis, @@ -2128,8 +2166,8 @@ flow_hash_symmetric_l3l4(const struct flow *flow, uint32_t basis, hash = hash_add64(hash, a[i] ^ b[i]); } } else { - /* Cannot hash non-IP flows */ - return 0; + /* Revert to hashing L2 headers */ + return flow_hash_symmetric_l2(flow, basis); } hash = hash_add(hash, flow->nw_proto); diff --git a/lib/flow.h b/lib/flow.h index af82931..900e8f8 100644 --- a/lib/flow.h +++ b/lib/flow.h @@ -236,6 +236,7 @@ hash_odp_port(odp_port_t odp_port) uint32_t flow_hash_5tuple(const struct flow *flow, uint32_t basis); uint32_t flow_hash_symmetric_l4(const struct flow *flow, uint32_t basis); +uint32_t flow_hash_symmetric_l2(const struct flow *flow, uint32_t basis); uint32_t flow_hash_symmetric_l3l4(const struct flow *flow, uint32_t basis, bool inc_udp_ports ); diff --git a/lib/odp-execute.c b/lib/odp-execute.c index 1969f02..c716c41 100644 --- a/lib/odp-execute.c +++ b/lib/odp-execute.c @@ -726,14 +726,16 @@ odp_execute_actions(void *dp, struct dp_packet_batch *batch, bool steal, } switch ((enum ovs_action_attr) type) { + case OVS_ACTION_ATTR_HASH: { const struct ovs_action_hash *hash_act = nl_attr_get(a); - /* Calculate a hash value directly. This might not match the + /* Calculate a hash value directly. This might not match the * value computed by the datapath, but it is much less expensive, * and the current use case (bonding) does not require a strict * match to work properly. */ - if (hash_act->hash_alg == OVS_HASH_ALG_L4) { + switch (hash_act->hash_alg) { + case OVS_HASH_ALG_L4: { struct flow flow; uint32_t hash; @@ -749,7 +751,22 @@ odp_execute_actions(void *dp, struct dp_packet_batch *batch, bool steal, } packet->md.dp_hash = hash; } - } else { + break; + } + case OVS_HASH_ALG_SYM_L4: { + struct flow flow; + uint32_t hash; + + DP_PACKET_BATCH_FOR_EACH (i, packet, batch) { + flow_extract(packet, &flow); + hash = flow_hash_symmetric_l3l4(&flow, + hash_act->hash_basis, + false); + packet->md.dp_hash = hash; + } + break; + } + default: /* Assert on unknown hash algorithm. */ OVS_NOT_REACHED(); }