From patchwork Wed Dec 26 08:50:36 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ilya Maximets X-Patchwork-Id: 1018603 X-Patchwork-Delegate: ian.stokes@intel.com 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=samsung.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=samsung.com header.i=@samsung.com header.b="DjL6ux5K"; 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 43Pmsv0Qs3z9s8r for ; Wed, 26 Dec 2018 19:51:31 +1100 (AEDT) Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id CB4DFD21; Wed, 26 Dec 2018 08:50:58 +0000 (UTC) X-Original-To: ovs-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 8EE89CCB for ; Wed, 26 Dec 2018 08:50:57 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id 5F73C2C4 for ; Wed, 26 Dec 2018 08:50:56 +0000 (UTC) Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20181226085054euoutp012b4b63072902c30d89c66e2249e1faa7~z1d-fXY_90259202592euoutp018 for ; Wed, 26 Dec 2018 08:50:54 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20181226085054euoutp012b4b63072902c30d89c66e2249e1faa7~z1d-fXY_90259202592euoutp018 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1545814254; bh=y6Y4f4Pwfufpa2+0o9L9ioD9EtfynaUfFWSv8p6TFuo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=DjL6ux5KPLelU33UhxOCEaSYvgFgpZjHNf6l+4Y0vTteWOixtSLe6TpRC/aEudLhy QDe3StJPqtHL8bzUu8ibJXobmzqTDZhR8idrwmLGuAgfsdxc5wNH4yx6DTtn8UIUsm LhFNvJeBxy1a57gcefoUQquI5jexTQIsx5xCZ5KI= Received: from eusmges3new.samsung.com (unknown [203.254.199.245]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20181226085053eucas1p2540c5f9c4b00518875dd6be33200502a~z1d_NDbSb1430114301eucas1p2u; Wed, 26 Dec 2018 08:50:53 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges3new.samsung.com (EUCPMTA) with SMTP id 00.BD.04806.CE0432C5; Wed, 26 Dec 2018 08:50:52 +0000 (GMT) Received: from eusmtrp1.samsung.com (unknown [182.198.249.138]) by eucas1p1.samsung.com (KnoxPortal) with ESMTPA id 20181226085052eucas1p12a4588985964a665c552fd3ee78235e7~z1d9RRqtd2279422794eucas1p1f; Wed, 26 Dec 2018 08:50:52 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eusmtrp1.samsung.com (KnoxPortal) with ESMTP id 20181226085051eusmtrp1bc2a938a77329a4944ebb345fc614aa9~z1d9Cw4ct3160831608eusmtrp1S; Wed, 26 Dec 2018 08:50:51 +0000 (GMT) X-AuditID: cbfec7f5-367ff700000012c6-9c-5c2340ecc6c8 Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id 5C.6B.04128.BE0432C5; Wed, 26 Dec 2018 08:50:51 +0000 (GMT) Received: from imaximets.rnd.samsung.ru (unknown [106.109.129.180]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20181226085051eusmtip2929394eb38b8aeab41c91386435f7f4e~z1d8b743R0919609196eusmtip2I; Wed, 26 Dec 2018 08:50:51 +0000 (GMT) From: Ilya Maximets To: ovs-dev@openvswitch.org, Ian Stokes Date: Wed, 26 Dec 2018 11:50:36 +0300 Message-Id: <20181226085044.9311-2-i.maximets@samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181226085044.9311-1-i.maximets@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFupjleLIzCtJLcpLzFFi42LZduznOd03DsoxBl3bLS22TJvManGl/Se7 xcaHZ1kt1h76wG4xacoJRou5n54zWtye42Xx9OIvZouWJTuZHDg9bvy7xeaxeM9LJo9n0w8D iZv/GT3e77vK5tG3ZRWjx//mq6wB7FFcNimpOZllqUX6dglcGU0/j7MUvGWvOPJ5EUsD4wy2 LkZODgkBE4mGQ89Zuxi5OIQEVjBKdByawwbhfGGUeHDnJjuE85lRYv6GWcxdjBxgLVs/MkHE lzNKbDn/HqroB6PEtcV/WEDmsgnoSJxafYQRxBYRsJOYtqqJCcRmFpjEJPFkrRmILSzgI3H8 0xKwOIuAqkTnu0nsIDavgJXE7cNXGSHuk5dYveEAM4jNKWAtcfppDyPIMgmBfnaJnt+3mCCK XCQ+zHnIDGELS7w6voUdwpaROD25hwXCrpe43/ISqrmDUWL6oX9QzfYSW16fYwd5jVlAU2L9 Ln2ILx0lNjazQph8EjfeCkKczycxadt0aDjwSnS0CUHMUJH4fXA51AFSEjfffYY6wEOib89W Fkjw9DFKHF2yk20Co/wshF0LGBlXMYqnlhbnpqcWG+ellusVJ+YWl+al6yXn525iBKaS0/+O f93BuO9P0iFGAQ5GJR7eHz5KMUKsiWXFlbmHGCU4mJVEeD0/A4V4UxIrq1KL8uOLSnNSiw8x SnOwKInzVjM8iBYSSE8sSc1OTS1ILYLJMnFwSjUwHvq2VM9KbIFP987HX0VeiFvPSVj798Lp +wUvsz6tiQvfzirdIHnhyZTrMrdt9aPPbVaeUnJ/ZWDC3bStqRsyH5vLSy6RXGdr/K7Y/8XS 7ekfZ5nw5M71/RS2f3FoLPvrX+7ptS+W/u/luuOv4NqxtE/dMHrOha4f0744XPku2t24rSAi 68PC1UosxRmJhlrMRcWJAE8LF+QhAwAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrILMWRmVeSWpSXmKPExsVy+t/xe7qvHZRjDG4ftbbYMm0yq8WV9p/s FhsfnmW1WHvoA7vFpCknGC3mfnrOaHF7jpfF04u/mC1aluxkcuD0uPHvFpvH4j0vmTyeTT8M JG7+Z/R4v+8qm0ffllWMHv+br7IGsEfp2RTll5akKmTkF5fYKkUbWhjpGVpa6BmZWOoZGpvH WhmZKunb2aSk5mSWpRbp2yXoZTT9PM5S8Ja94sjnRSwNjDPYuhg5OCQETCS2fmTqYuTiEBJY yihx5lQHaxcjJ1BcSuLHrwtQtrDEn2tdbBBF3xgl+h7+ZgNJsAnoSJxafYQRxBYRcJDYfHcx K0gRs8AMJolzOy6wgySEBXwkjn9awgRiswioSnS+mwQW5xWwkrh9+CojxAZ5idUbDjCD2JwC 1hKnn/aAxYWAauY83MA8gZFvASPDKkaR1NLi3PTcYiO94sTc4tK8dL3k/NxNjMDg3nbs55Yd jF3vgg8xCnAwKvHw/vBRihFiTSwrrsw9xCjBwawkwuv5GSjEm5JYWZValB9fVJqTWnyI0RTo qInMUqLJ+cDIyyuJNzQ1NLewNDQ3Njc2s1AS5z1vUBklJJCeWJKanZpakFoE08fEwSnVwHjB XdbyQdAjL0+zl+KrA1bXTUyT8zh9fOYm5b2B8bxPmqT0aqbaXiqoOs1mtWI//wc15e7fvr3i v3+eNzcvDtxvv9M56OLVLd/Sbb7kMG1ZG/a2bPbum3LHJvTEiLRbqiUqcNoe4Tym9M6C782u vPr/e9e4n7mzQPH9iZmX/9iFLVWzuCFr/lWJpTgj0VCLuag4EQDxom20hAIAAA== X-CMS-MailID: 20181226085052eucas1p12a4588985964a665c552fd3ee78235e7 X-Msg-Generator: CA X-RootMTR: 20181226085052eucas1p12a4588985964a665c552fd3ee78235e7 X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20181226085052eucas1p12a4588985964a665c552fd3ee78235e7 References: <20181226085044.9311-1-i.maximets@samsung.com> X-Spam-Status: No, score=-7.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on smtp1.linux-foundation.org Cc: Shahaf Shuler , Flavio Leitner , Ilya Maximets Subject: [ovs-dev] [PATCH v3 1/9] dpif-netdev: Reduce log level for not found mark id. 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: , MIME-Version: 1.0 Sender: ovs-dev-bounces@openvswitch.org Errors-To: ovs-dev-bounces@openvswitch.org It's a normal case for 'find' function, especially because this happens for every first packet of flow that was not offloaded yet. Should not warn about this. Dropped to DBG to avoid log trashing in case of big number of new flows. CC: Yuanhan Liu Fixes: 241bad15d99a ("dpif-netdev: associate flow with a mark id") Signed-off-by: Ilya Maximets --- lib/dpif-netdev.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c index 1564db9c6..8136b0389 100644 --- a/lib/dpif-netdev.c +++ b/lib/dpif-netdev.c @@ -2157,8 +2157,8 @@ megaflow_to_mark_find(const ovs_u128 *mega_ufid) } } - VLOG_WARN("Mark id for ufid "UUID_FMT" was not found\n", - UUID_ARGS((struct uuid *)mega_ufid)); + VLOG_DBG("Mark id for ufid "UUID_FMT" was not found\n", + UUID_ARGS((struct uuid *)mega_ufid)); return INVALID_FLOW_MARK; } From patchwork Wed Dec 26 08:50:37 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ilya Maximets X-Patchwork-Id: 1018604 X-Patchwork-Delegate: ian.stokes@intel.com 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=samsung.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=samsung.com header.i=@samsung.com header.b="rRJCbiJV"; 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 43PmtX43Crz9s8J for ; Wed, 26 Dec 2018 19:52:04 +1100 (AEDT) Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id 8D09ADBE; Wed, 26 Dec 2018 08:51:01 +0000 (UTC) X-Original-To: ovs-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 56C98DB8 for ; Wed, 26 Dec 2018 08:50:59 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id C6CEC2C4 for ; Wed, 26 Dec 2018 08:50:58 +0000 (UTC) Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20181226085057euoutp01a111aed35f2af36141954843c73341ab~z1eCDVsOZ0222102221euoutp01L for ; Wed, 26 Dec 2018 08:50:57 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20181226085057euoutp01a111aed35f2af36141954843c73341ab~z1eCDVsOZ0222102221euoutp01L DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1545814257; bh=KUc+5OOt1D/IPYViFHOhYsgA46KTIOV2cYJXMt21jSk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=rRJCbiJVEW5QKENkHTaXHpGwq1Z+cqIiZIzDiEuCam1vli8kBbqF+FGdBFofvfroq OSGbIWt59Pkzbp6X1iqllSDT6De1UXg5Q2eZNG1qpUv3jdC/ECfz45TKpLOMKewITB ec3vuy/aGOR5by1TujAdU8RVW89y0tbmxb5NVcAY= Received: from eusmges3new.samsung.com (unknown [203.254.199.245]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20181226085056eucas1p27efdae5ee754bd67831f78234ef0b90f~z1eBpqwIy2313323133eucas1p2d; Wed, 26 Dec 2018 08:50:56 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges3new.samsung.com (EUCPMTA) with SMTP id D1.BD.04806.0F0432C5; Wed, 26 Dec 2018 08:50:56 +0000 (GMT) Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by eucas1p2.samsung.com (KnoxPortal) with ESMTPA id 20181226085055eucas1p2257412818200bf6afb1936588e32e6ad~z1eAgnUzW0510305103eucas1p2H; Wed, 26 Dec 2018 08:50:55 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eusmtrp2.samsung.com (KnoxPortal) with ESMTP id 20181226085055eusmtrp2f968918e7b87bfab785974db7a666d9b~z1eASBbDk0275202752eusmtrp2u; Wed, 26 Dec 2018 08:50:55 +0000 (GMT) X-AuditID: cbfec7f5-34dff700000012c6-a3-5c2340f0927e Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id BF.D6.04284.FE0432C5; Wed, 26 Dec 2018 08:50:55 +0000 (GMT) Received: from imaximets.rnd.samsung.ru (unknown [106.109.129.180]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20181226085054eusmtip2013f3bc8cd0e715c3562709c7a47113a~z1d-sWgIK0919609196eusmtip2J; Wed, 26 Dec 2018 08:50:54 +0000 (GMT) From: Ilya Maximets To: ovs-dev@openvswitch.org, Ian Stokes Date: Wed, 26 Dec 2018 11:50:37 +0300 Message-Id: <20181226085044.9311-3-i.maximets@samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181226085044.9311-1-i.maximets@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFmplleLIzCtJLcpLzFFi42LZduznOd0PDsoxBh396hZbpk1mtbjS/pPd YuPDs6wWaw99YLeYNOUEo8XcT88ZLW7P8bJ4evEXswOHx+I9L5k8nk0/DCRu/mf0eL/vKptH 35ZVjB7/m6+yBrBFcdmkpOZklqUW6dslcGUsurmXseCAfMX9G92sDYxnJLsYOTkkBEwkFn56 y9bFyMUhJLCCUeLe4sUsIAkhgS+MEpPXW0EkPjNK9HyeyAjTcWDPMaiO5YwS8/beYYJwfgB1 zJ3IBFLFJqAjcWr1EbAOEQE7iWmrmsCKmAXeMUrcPwHSwcEhLGAvcetkGUgNi4CqxO5Ln1lB bF4BK4mlW5axQ2yTl1i94QAziM0pYC1x+mkPI8gcCYH/bBKnF1xkgihykfj96hxUg7DEq+Nb oGwZif8750PV1Evcb3kJ1dzBKDH90D+ohL3EltcgzRxA12lKrN+lDxF2lNgx8TrYnRICfBI3 3gqChJmBzEnbpjNDhHklOtqEIKpVJH4fXM4MYUtJ3Hz3GeoCD4m7b89DA6sPGFirFrFMYJSf hbBsASPjKkbx1NLi3PTUYuO81HK94sTc4tK8dL3k/NxNjMDEcfrf8a87GPf9STrEKMDBqMTD +8NHKUaINbGsuDL3EKMEB7OSCK/nZ6AQb0piZVVqUX58UWlOavEhRmkOFiVx3mqGB9FCAumJ JanZqakFqUUwWSYOTqkGxsDHfR4RjcqVYRPm7Lxj/T/gfIZqb+My9Yln5EMCl+63utF2xyIy Y25Rq8SeqdMCr7Mt2uN77Q7j+oK/Gwrjg95Ja9W47Kq5m9nSN+GD/MSTaxfscpM5nH9xusqT feq157itP25IvTV74am0PpepEU3vhHjuzH02d1bSEh51tk/M7ieWmGXPZlNiKc5INNRiLipO BAB3v35LGAMAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrOLMWRmVeSWpSXmKPExsVy+t/xe7rvHZRjDDZflbbYMm0yq8WV9p/s FhsfnmW1WHvoA7vFpCknGC3mfnrOaHF7jpfF04u/mB04PBbvecnk8Wz6YSBx8z+jx/t9V9k8 +rasYvT433yVNYAtSs+mKL+0JFUhI7+4xFYp2tDCSM/Q0kLPyMRSz9DYPNbKyFRJ384mJTUn syy1SN8uQS9j0c29jAUH5Cvu3+hmbWA8I9nFyMkhIWAicWDPMbYuRi4OIYGljBLNryaxQiSk JH78ugBlC0v8udYFVfSNUeL4qw52kASbgI7EqdVHGEFsEQEHic13F7OCFDELfGKUOPdmNksX IweHsIC9xK2TZSA1LAKqErsvfQYbyitgJbF0yzJ2iAXyEqs3HGAGsTkFrCVOP+0BmykEVDPn 4QbmCYx8CxgZVjGKpJYW56bnFhvqFSfmFpfmpesl5+duYgQG8rZjPzfvYLy0MfgQowAHoxIP 7w8fpRgh1sSy4srcQ4wSHMxKIryen4FCvCmJlVWpRfnxRaU5qcWHGE2BjprILCWanA+MsryS eENTQ3MLS0NzY3NjMwslcd7zBpVRQgLpiSWp2ampBalFMH1MHJxSDYw1Wh8/9Qd+3ZPUMSNz flD+gftKr+pFHjAl+PLP2Lb30j2Zq/Jnf07fseC58eY8SfYtKdOVdvGKdnQce3fApkZ32m2/ /ImB/Dw8hW0no677MbnfXLmda31fUsjKo4t6+dbt7NxxsmFy1Y9zgv9PuV4U3Xpy2VzvEqFr nVpW/Pejgh5lqOc3ar9WYinOSDTUYi4qTgQAm4LkjHoCAAA= X-CMS-MailID: 20181226085055eucas1p2257412818200bf6afb1936588e32e6ad X-Msg-Generator: CA X-RootMTR: 20181226085055eucas1p2257412818200bf6afb1936588e32e6ad X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20181226085055eucas1p2257412818200bf6afb1936588e32e6ad References: <20181226085044.9311-1-i.maximets@samsung.com> X-Spam-Status: No, score=-7.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on smtp1.linux-foundation.org Cc: Shahaf Shuler , Flavio Leitner , Ilya Maximets Subject: [ovs-dev] [PATCH v3 2/9] dp-packet: Constantify offloading APIs. 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: , MIME-Version: 1.0 Sender: ovs-dev-bounces@openvswitch.org Errors-To: ovs-dev-bounces@openvswitch.org Getters should have const arguments. Signed-off-by: Ilya Maximets --- lib/dp-packet.h | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/lib/dp-packet.h b/lib/dp-packet.h index 7b85dd902..bfc2d308f 100644 --- a/lib/dp-packet.h +++ b/lib/dp-packet.h @@ -469,7 +469,7 @@ dp_packet_set_allocated(struct dp_packet *b, uint16_t s) /* Returns the RSS hash of the packet 'p'. Note that the returned value is * correct only if 'dp_packet_rss_valid(p)' returns true */ static inline uint32_t -dp_packet_get_rss_hash(struct dp_packet *p) +dp_packet_get_rss_hash(const struct dp_packet *p) { return p->mbuf.hash.rss; } @@ -482,7 +482,7 @@ dp_packet_set_rss_hash(struct dp_packet *p, uint32_t hash) } static inline bool -dp_packet_rss_valid(struct dp_packet *p) +dp_packet_rss_valid(const struct dp_packet *p) { return p->mbuf.ol_flags & PKT_RX_RSS_HASH; } @@ -509,28 +509,28 @@ dp_packet_mbuf_init(struct dp_packet *p) } static inline bool -dp_packet_ip_checksum_valid(struct dp_packet *p) +dp_packet_ip_checksum_valid(const struct dp_packet *p) { return (p->mbuf.ol_flags & PKT_RX_IP_CKSUM_MASK) == PKT_RX_IP_CKSUM_GOOD; } static inline bool -dp_packet_ip_checksum_bad(struct dp_packet *p) +dp_packet_ip_checksum_bad(const struct dp_packet *p) { return (p->mbuf.ol_flags & PKT_RX_IP_CKSUM_MASK) == PKT_RX_IP_CKSUM_BAD; } static inline bool -dp_packet_l4_checksum_valid(struct dp_packet *p) +dp_packet_l4_checksum_valid(const struct dp_packet *p) { return (p->mbuf.ol_flags & PKT_RX_L4_CKSUM_MASK) == PKT_RX_L4_CKSUM_GOOD; } static inline bool -dp_packet_l4_checksum_bad(struct dp_packet *p) +dp_packet_l4_checksum_bad(const struct dp_packet *p) { return (p->mbuf.ol_flags & PKT_RX_L4_CKSUM_MASK) == PKT_RX_L4_CKSUM_BAD; @@ -544,7 +544,7 @@ reset_dp_packet_checksum_ol_flags(struct dp_packet *p) } static inline bool -dp_packet_has_flow_mark(struct dp_packet *p, uint32_t *mark) +dp_packet_has_flow_mark(const struct dp_packet *p, uint32_t *mark) { if (p->mbuf.ol_flags & PKT_RX_FDIR_ID) { *mark = p->mbuf.hash.fdir.hi; @@ -606,7 +606,7 @@ dp_packet_set_allocated(struct dp_packet *b, uint16_t s) /* Returns the RSS hash of the packet 'p'. Note that the returned value is * correct only if 'dp_packet_rss_valid(p)' returns true */ static inline uint32_t -dp_packet_get_rss_hash(struct dp_packet *p) +dp_packet_get_rss_hash(const struct dp_packet *p) { return p->rss_hash; } @@ -619,7 +619,7 @@ dp_packet_set_rss_hash(struct dp_packet *p, uint32_t hash) } static inline bool -dp_packet_rss_valid(struct dp_packet *p) +dp_packet_rss_valid(const struct dp_packet *p) { return p->rss_hash_valid; } @@ -641,25 +641,25 @@ dp_packet_mbuf_init(struct dp_packet *p OVS_UNUSED) } static inline bool -dp_packet_ip_checksum_valid(struct dp_packet *p OVS_UNUSED) +dp_packet_ip_checksum_valid(const struct dp_packet *p OVS_UNUSED) { return false; } static inline bool -dp_packet_ip_checksum_bad(struct dp_packet *p OVS_UNUSED) +dp_packet_ip_checksum_bad(const struct dp_packet *p OVS_UNUSED) { return false; } static inline bool -dp_packet_l4_checksum_valid(struct dp_packet *p OVS_UNUSED) +dp_packet_l4_checksum_valid(const struct dp_packet *p OVS_UNUSED) { return false; } static inline bool -dp_packet_l4_checksum_bad(struct dp_packet *p OVS_UNUSED) +dp_packet_l4_checksum_bad(const struct dp_packet *p OVS_UNUSED) { return false; } @@ -670,7 +670,7 @@ reset_dp_packet_checksum_ol_flags(struct dp_packet *p OVS_UNUSED) } static inline bool -dp_packet_has_flow_mark(struct dp_packet *p OVS_UNUSED, +dp_packet_has_flow_mark(const struct dp_packet *p OVS_UNUSED, uint32_t *mark OVS_UNUSED) { return false; From patchwork Wed Dec 26 08:50:38 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ilya Maximets X-Patchwork-Id: 1018606 X-Patchwork-Delegate: ian.stokes@intel.com 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=samsung.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=samsung.com header.i=@samsung.com header.b="AanYbdRr"; 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 43PmvN4kNQz9s8J for ; Wed, 26 Dec 2018 19:52:48 +1100 (AEDT) Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id 6B38EE1E; Wed, 26 Dec 2018 08:51:04 +0000 (UTC) X-Original-To: ovs-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 B18D4D2B for ; Wed, 26 Dec 2018 08:51:02 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id 00AB51C0 for ; Wed, 26 Dec 2018 08:51:01 +0000 (UTC) Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20181226085059euoutp01f646497e53bf2196876af2b7e3e8027c~z1eEKrJV-0222102221euoutp01M for ; Wed, 26 Dec 2018 08:50:59 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20181226085059euoutp01f646497e53bf2196876af2b7e3e8027c~z1eEKrJV-0222102221euoutp01M DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1545814259; bh=RW0VbX3fnjPj3Kc/isc+YdTX8ZfypFTeKcE0Z5Jbel8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=AanYbdRrqWt+H+0/V6ROBsAdvvXoBYec/1/9HZZQSQcNru2FLkGg6xLReqgmsv3+u o853N3FSEVdOM58e0WTvTKOknyWXorPuAE7LSOkH65E9BACInfwfujnQf2memQ48VW MU+b1Qq0HMenIwfUq/2V4BO3MMjoey6VwwoHe1O4= Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20181226085059eucas1p12ced2432b9d1260ec00a1cd2c843163a~z1eDrcpqZ0727107271eucas1p14; Wed, 26 Dec 2018 08:50:59 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges2new.samsung.com (EUCPMTA) with SMTP id 00.59.04294.2F0432C5; Wed, 26 Dec 2018 08:50:58 +0000 (GMT) Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by eucas1p1.samsung.com (KnoxPortal) with ESMTPA id 20181226085058eucas1p15f1ede2b069ec20cdc2fde624aa070c3~z1eCptdqF0726207262eucas1p1I; Wed, 26 Dec 2018 08:50:58 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eusmtrp2.samsung.com (KnoxPortal) with ESMTP id 20181226085057eusmtrp27ec30ff32255ff12662bf3f0a0d7cd92~z1eCbJN1o0275202752eusmtrp2v; Wed, 26 Dec 2018 08:50:57 +0000 (GMT) X-AuditID: cbfec7f4-84fff700000010c6-0c-5c2340f29f4e Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id 70.E6.04284.1F0432C5; Wed, 26 Dec 2018 08:50:57 +0000 (GMT) Received: from imaximets.rnd.samsung.ru (unknown [106.109.129.180]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20181226085057eusmtip2ebd8db0561848bb92b51e1069b0350ad~z1eB0qfBW0997509975eusmtip2t; Wed, 26 Dec 2018 08:50:57 +0000 (GMT) From: Ilya Maximets To: ovs-dev@openvswitch.org, Ian Stokes Date: Wed, 26 Dec 2018 11:50:38 +0300 Message-Id: <20181226085044.9311-4-i.maximets@samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181226085044.9311-1-i.maximets@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFmphleLIzCtJLcpLzFFi42LZduznOd1PDsoxBn/OmFhsmTaZ1eJK+092 i40Pz7JarD30gd1i0pQTjBZzPz1ntLg9x8vi6cVfzA4cHov3vGTyeDb9MJC4+Z/R4/2+q2we fVtWMXr8b77KGsAWxWWTkpqTWZZapG+XwJWxe2c3U8Evy4r51y8zNzCe1O1i5OCQEDCRmHW+ qouRi0NIYAWjxMoj/1khnC+MEsdXvWGEcD4zSizYvoqli5ETrOPazm3sEInljBL3jy9mB0kI CfxglHj2kAPEZhPQkTi1+ggjiC0iYCcxbVUTE0gDs8A7oIYTd5hAEsIC1hJbH+9jA7FZBFQl dny5zARyE6+AlcS2VnaIZfISqzccYAaxOYHKTz/tAbtIQuA/m0Trwt/MEEUuErfPPmWCsIUl Xh3fAtUsI/F/53yoeL3E/ZaXUM0djBLTD/2DSthLbHl9jh1kMbOApsT6XfoQYUeJ2e9aWSFh xCdx460gSJgZyJy0bTozRJhXoqNNCKJaReL3weVQ10hJ3Hz3GeoCD4n/K38yQ8Kqj1GitX8C +wRG+VkIyxYwMq5iFE8tLc5NTy02ykst1ytOzC0uzUvXS87P3cQITBun/x3/soNx15+kQ4wC HIxKPLw/fJRihFgTy4orcw8xSnAwK4nwen4GCvGmJFZWpRblxxeV5qQWH2KU5mBREuetZngQ LSSQnliSmp2aWpBaBJNl4uCUamDk3PLmY+afHXmy6zudGnh8n3w9oK7t/6uh4azexbkKC92b zuZzinxbbDD3gYJMTuSFDZt8UhlFJrd5r/vVuTu78Ujl96o3Gq9PfIws4n5nd/Puv1k3XrJN u/27U3TNbKnVca3rZgVOrD/66MtigZCF5fFJYqFijn3v9xpfm9VgY5Bw566bYNE3JZbijERD Leai4kQA4hsE8hcDAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrOLMWRmVeSWpSXmKPExsVy+t/xe7ofHZRjDG481LDYMm0yq8WV9p/s FhsfnmW1WHvoA7vFpCknGC3mfnrOaHF7jpfF04u/mB04PBbvecnk8Wz6YSBx8z+jx/t9V9k8 +rasYvT433yVNYAtSs+mKL+0JFUhI7+4xFYp2tDCSM/Q0kLPyMRSz9DYPNbKyFRJ384mJTUn syy1SN8uQS9j985upoJflhXzr19mbmA8qdvFyMkhIWAicW3nNvYuRi4OIYGljBKrV0xmhUhI Sfz4dQHKFpb4c62LDaLoG6PErSfXmEASbAI6EqdWH2EEsUUEHCQ2313MClLELPCJUeLcm9ks IAlhAWuJrY/3sYHYLAKqEju+XAZq5uDgFbCS2NbKDrFAXmL1hgPMIDYnUPnppz1gM4WASuY8 3MA8gZFvASPDKkaR1NLi3PTcYkO94sTc4tK8dL3k/NxNjMBA3nbs5+YdjJc2Bh9iFOBgVOLh /eGjFCPEmlhWXJl7iFGCg1lJhNfzM1CINyWxsiq1KD++qDQntfgQoynQTROZpUST84FRllcS b2hqaG5haWhubG5sZqEkznveoDJKSCA9sSQ1OzW1ILUIpo+Jg1OqgVGt9rSFvFj2Pfunpf6H 78x+9tRmqbvROlkPkws/J+38VlnKtv6me22A3cMLegZWSwxT9b5LvUt49aPnVWXZyluCj6UK Pv3Q+x4oynbC4sEMNcFisZ9HturzSm707M148yOqiFP64dzQQolZ2U92OXLt6Pw858ri2Xt1 Ts+W/jNnX/jOLSKsej1KLMUZiYZazEXFiQCGwWxjegIAAA== X-CMS-MailID: 20181226085058eucas1p15f1ede2b069ec20cdc2fde624aa070c3 X-Msg-Generator: CA X-RootMTR: 20181226085058eucas1p15f1ede2b069ec20cdc2fde624aa070c3 X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20181226085058eucas1p15f1ede2b069ec20cdc2fde624aa070c3 References: <20181226085044.9311-1-i.maximets@samsung.com> X-Spam-Status: No, score=-7.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on smtp1.linux-foundation.org Cc: Shahaf Shuler , Flavio Leitner , Ilya Maximets Subject: [ovs-dev] [PATCH v3 3/9] dp-packet: Refactor offloading API. 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: , MIME-Version: 1.0 Sender: ovs-dev-bounces@openvswitch.org Errors-To: ovs-dev-bounces@openvswitch.org 1. No reason to have mbuf related APIs in a generic code. 2. Not only RSS/checksums should be invalidated in case of tunnel decapsulation or sending to 'ring' ports. In order to fix two above issues, new function 'dp_packet_offload_invalidate' introduced. In order to clean up/unify the code and simplify addition of new offloading features to non-DPDK version of dp-packet, introduced 'ol_flags' bitmask. Additionally reduced code complexity in 'dp_packet_clone_with_headroom' by using already existent generic APIs. Unfortunately, we still need to have a special case for mbuf initialization inside 'dp_packet_init__()'. Signed-off-by: Ilya Maximets --- lib/dp-packet.c | 14 ++++------- lib/dp-packet.h | 62 ++++++++++++++--------------------------------- lib/netdev-dpdk.c | 6 ++--- lib/netdev.c | 4 +-- 4 files changed, 28 insertions(+), 58 deletions(-) diff --git a/lib/dp-packet.c b/lib/dp-packet.c index 93b0e9c84..b5942f815 100644 --- a/lib/dp-packet.c +++ b/lib/dp-packet.c @@ -30,8 +30,10 @@ dp_packet_init__(struct dp_packet *b, size_t allocated, enum dp_packet_source so b->source = source; dp_packet_reset_offsets(b); pkt_metadata_init(&b->md, 0); - dp_packet_rss_invalidate(b); +#ifdef DPDK_NETDEV dp_packet_mbuf_init(b); +#endif + dp_packet_offload_invalidate(b); dp_packet_reset_cutlen(b); /* By default assume the packet type to be Ethernet. */ b->packet_type = htonl(PT_ETH); @@ -173,16 +175,10 @@ dp_packet_clone_with_headroom(const struct dp_packet *buffer, size_t headroom) #ifdef DPDK_NETDEV new_buffer->mbuf.ol_flags = buffer->mbuf.ol_flags; -#else - new_buffer->rss_hash_valid = buffer->rss_hash_valid; #endif - if (dp_packet_rss_valid(new_buffer)) { -#ifdef DPDK_NETDEV - new_buffer->mbuf.hash.rss = buffer->mbuf.hash.rss; -#else - new_buffer->rss_hash = buffer->rss_hash; -#endif + if (dp_packet_rss_valid(buffer)) { + dp_packet_set_rss_hash(new_buffer, dp_packet_get_rss_hash(buffer)); } return new_buffer; diff --git a/lib/dp-packet.h b/lib/dp-packet.h index bfc2d308f..67914ec59 100644 --- a/lib/dp-packet.h +++ b/lib/dp-packet.h @@ -58,8 +58,9 @@ struct dp_packet { uint16_t allocated_; /* Number of bytes allocated. */ uint16_t data_ofs; /* First byte actually in use. */ uint32_t size_; /* Number of bytes in use. */ + uint32_t ol_flags; /* Offloading flags. */ +#define DP_PACKET_OL_RSS_HASH_MASK 0x1 /* Is the 'rss_hash' valid? */ uint32_t rss_hash; /* Packet hash. */ - bool rss_hash_valid; /* Is the 'rss_hash' valid? */ #endif enum dp_packet_source source; /* Source of memory allocated as 'base'. */ @@ -408,6 +409,16 @@ dp_packet_get_nd_payload(const struct dp_packet *b) #ifdef DPDK_NETDEV BUILD_ASSERT_DECL(offsetof(struct dp_packet, mbuf) == 0); +/* This initialization is needed for packets that do not come from DPDK + * interfaces, when vswitchd is built with --with-dpdk. */ +static inline void +dp_packet_mbuf_init(struct dp_packet *p) +{ + p->mbuf.tx_offload = p->mbuf.packet_type = 0; + p->mbuf.nb_segs = 1; + p->mbuf.next = NULL; +} + static inline void * dp_packet_base(const struct dp_packet *b) { @@ -488,24 +499,9 @@ dp_packet_rss_valid(const struct dp_packet *p) } static inline void -dp_packet_rss_invalidate(struct dp_packet *p OVS_UNUSED) -{ -} - -static inline void -dp_packet_mbuf_rss_flag_reset(struct dp_packet *p) -{ - p->mbuf.ol_flags &= ~PKT_RX_RSS_HASH; -} - -/* This initialization is needed for packets that do not come from DPDK - * interfaces, when vswitchd is built with --with-dpdk. */ -static inline void -dp_packet_mbuf_init(struct dp_packet *p) +dp_packet_offload_invalidate(struct dp_packet *p OVS_UNUSED) { - p->mbuf.ol_flags = p->mbuf.tx_offload = p->mbuf.packet_type = 0; - p->mbuf.nb_segs = 1; - p->mbuf.next = NULL; + p->mbuf.ol_flags = 0; } static inline bool @@ -536,13 +532,6 @@ dp_packet_l4_checksum_bad(const struct dp_packet *p) PKT_RX_L4_CKSUM_BAD; } -static inline void -reset_dp_packet_checksum_ol_flags(struct dp_packet *p) -{ - p->mbuf.ol_flags &= ~(PKT_RX_L4_CKSUM_GOOD | PKT_RX_L4_CKSUM_BAD | - PKT_RX_IP_CKSUM_GOOD | PKT_RX_IP_CKSUM_BAD); -} - static inline bool dp_packet_has_flow_mark(const struct dp_packet *p, uint32_t *mark) { @@ -615,29 +604,19 @@ static inline void dp_packet_set_rss_hash(struct dp_packet *p, uint32_t hash) { p->rss_hash = hash; - p->rss_hash_valid = true; + p->ol_flags |= DP_PACKET_OL_RSS_HASH_MASK; } static inline bool dp_packet_rss_valid(const struct dp_packet *p) { - return p->rss_hash_valid; + return p->ol_flags & DP_PACKET_OL_RSS_HASH_MASK; } static inline void -dp_packet_rss_invalidate(struct dp_packet *p) -{ - p->rss_hash_valid = false; -} - -static inline void -dp_packet_mbuf_rss_flag_reset(struct dp_packet *p OVS_UNUSED) -{ -} - -static inline void -dp_packet_mbuf_init(struct dp_packet *p OVS_UNUSED) +dp_packet_offload_invalidate(struct dp_packet *p) { + p->ol_flags = 0; } static inline bool @@ -664,11 +643,6 @@ dp_packet_l4_checksum_bad(const struct dp_packet *p OVS_UNUSED) return false; } -static inline void -reset_dp_packet_checksum_ol_flags(struct dp_packet *p OVS_UNUSED) -{ -} - static inline bool dp_packet_has_flow_mark(const struct dp_packet *p OVS_UNUSED, uint32_t *mark OVS_UNUSED) diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c index 320422bf6..e28eae69f 100644 --- a/lib/netdev-dpdk.c +++ b/lib/netdev-dpdk.c @@ -3694,11 +3694,11 @@ netdev_dpdk_ring_send(struct netdev *netdev, int qid, struct dp_packet *packet; /* When using 'dpdkr' and sending to a DPDK ring, we want to ensure that - * the rss hash field is clear. This is because the same mbuf may be + * the offload fields are clear. This is because the same mbuf may be * modified by the consumer of the ring and return into the datapath - * without recalculating the RSS hash. */ + * without recalculating the RSS hash or revalidating the checksums. */ DP_PACKET_BATCH_FOR_EACH (i, packet, batch) { - dp_packet_mbuf_rss_flag_reset(packet); + dp_packet_offload_invalidate(packet); } netdev_dpdk_send__(dev, qid, batch, concurrent_txq); diff --git a/lib/netdev.c b/lib/netdev.c index 45b50f26c..4f26515dc 100644 --- a/lib/netdev.c +++ b/lib/netdev.c @@ -814,10 +814,10 @@ netdev_pop_header(struct netdev *netdev, struct dp_packet_batch *batch) DP_PACKET_BATCH_REFILL_FOR_EACH (i, size, packet, batch) { packet = netdev->netdev_class->pop_header(packet); if (packet) { - /* Reset the checksum offload flags if present, to avoid wrong + /* Reset the offload flags if present, to avoid wrong * interpretation in the further packet processing when * recirculated.*/ - reset_dp_packet_checksum_ol_flags(packet); + dp_packet_offload_invalidate(packet); dp_packet_batch_refill(batch, packet, i); } } From patchwork Wed Dec 26 08:50:39 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ilya Maximets X-Patchwork-Id: 1018611 X-Patchwork-Delegate: ian.stokes@intel.com 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=samsung.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=samsung.com header.i=@samsung.com header.b="UdG+tjTm"; 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 43Pmvw3T48z9s8J for ; Wed, 26 Dec 2018 19:53:16 +1100 (AEDT) Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id 25CEFE21; Wed, 26 Dec 2018 08:51:05 +0000 (UTC) X-Original-To: ovs-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 18A00D2B for ; Wed, 26 Dec 2018 08:51:04 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com [210.118.77.12]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id 043091C0 for ; Wed, 26 Dec 2018 08:51:02 +0000 (UTC) Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20181226085101euoutp028e8a78ef9420fb2da509aed49d9aaa1c~z1eGAtqjb0321703217euoutp02c for ; Wed, 26 Dec 2018 08:51:01 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20181226085101euoutp028e8a78ef9420fb2da509aed49d9aaa1c~z1eGAtqjb0321703217euoutp02c DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1545814261; bh=IN6+Mw0BDbPQbY+g2vetmAtETzckPwsoYzC7hOY2t0c=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=UdG+tjTmlcAajjy2PfBrqwpk5+BG7nieUAF9AzZzeImXBJaNhuIkFR3kfxBoOggru NsgmGMY8tza3ujkgkAp5vPhDPII6rRvHFSlyFpbtqn+UZZBlFbziyd0EDXf36O4Zoc 6D5nouG3GOfsBQ0+zh31wz8WlGdFcUwJKYcNj5iA= Received: from eusmges3new.samsung.com (unknown [203.254.199.245]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20181226085101eucas1p22458bc7dcf0f6b202569980bbe654dd8~z1eFqKjo71430914309eucas1p2w; Wed, 26 Dec 2018 08:51:01 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges3new.samsung.com (EUCPMTA) with SMTP id 83.BD.04806.4F0432C5; Wed, 26 Dec 2018 08:51:00 +0000 (GMT) Received: from eusmtrp1.samsung.com (unknown [182.198.249.138]) by eucas1p1.samsung.com (KnoxPortal) with ESMTPA id 20181226085100eucas1p1784280806eb7442cc99ba2aa4c6ce6cd~z1eE0U8ox2280522805eucas1p10; Wed, 26 Dec 2018 08:51:00 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eusmtrp1.samsung.com (KnoxPortal) with ESMTP id 20181226085100eusmtrp15700ad9d8bb4b5fc6eee5d467a42e541~z1eEl35sc3160831608eusmtrp1X; Wed, 26 Dec 2018 08:51:00 +0000 (GMT) X-AuditID: cbfec7f5-34dff700000012c6-ab-5c2340f49dbf Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id 2F.6B.04128.3F0432C5; Wed, 26 Dec 2018 08:51:00 +0000 (GMT) Received: from imaximets.rnd.samsung.ru (unknown [106.109.129.180]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20181226085059eusmtip221c5b4e40e2d16efe3cd44e092483b25~z1eEA3GK_1074310743eusmtip2U; Wed, 26 Dec 2018 08:50:59 +0000 (GMT) From: Ilya Maximets To: ovs-dev@openvswitch.org, Ian Stokes Date: Wed, 26 Dec 2018 11:50:39 +0300 Message-Id: <20181226085044.9311-5-i.maximets@samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181226085044.9311-1-i.maximets@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFmpmleLIzCtJLcpLzFFi42LZduznOd0vDsoxBoe2mllsmTaZ1eJK+092 i40Pz7JarD30gd1i0pQTjBZzPz1ntLg9x8vi6cVfzA4cHov3vGTyeDb9MJC4+Z/R4/2+q2we fVtWMXr8b77KGsAWxWWTkpqTWZZapG+XwJXxcS97wVH+iuNvV7E3MLbzdDFyckgImEj0TjrC 3MXIxSEksIJRYsuWP0wQzhdGiU8LLjGCVAkJfGaU2HxTDabj+f9VrBBFyxklli2ZyAZR9INR 4uylAhCbTUBH4tTqI2DNIgJ2EtNWNYFNZRZ4xyhx/8QdJpCEsIC3RPPG7UA2BweLgKrEkxXs IGFeASuJh3P2sUEsk5dYveEAM4jNKWAtcfppDyPIHAmB32wSPY3L2SGKXCRePZkD1SAs8er4 Fqi4jMTpyT0sEHa9xP2Wl1DNHYwS0w/9Y4JI2EtseX2OHeQIZgFNifW79CHCjhLzPkwAu01C gE/ixltBkDAzkDlp23RmiDCvREebEES1isTvg8uZIWwpiZvvPkNd4CHxZcN0NkhY9TFKPG1a zDaBUX4WwrIFjIyrGMVTS4tz01OLjfNSy/WKE3OLS/PS9ZLzczcxApPG6X/Hv+5g3Pcn6RCj AAejEg/vDx+lGCHWxLLiytxDjBIczEoivJ6fgUK8KYmVValF+fFFpTmpxYcYpTlYlMR5qxke RAsJpCeWpGanphakFsFkmTg4pRoY922LKGvx0xZXsVhYHnsy4lO61NwKy3uMp78ZL2CVV5Vd Znb/lABrJctjJb51ljln55zS8LWdnGDedubG1a93ji/jKd9WMGFzdbhQbH3QuqaImxMbotep JvAdfe6hvfLUqbP//YRPTbgSPUkuIz5pzX5DNZHG9XFnI2VWeIrtf+5x6rDHx3s1SizFGYmG WsxFxYkAQSbxlxYDAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrGLMWRmVeSWpSXmKPExsVy+t/xe7pfHJRjDNpeMFpsmTaZ1eJK+092 i40Pz7JarD30gd1i0pQTjBZzPz1ntLg9x8vi6cVfzA4cHov3vGTyeDb9MJC4+Z/R4/2+q2we fVtWMXr8b77KGsAWpWdTlF9akqqQkV9cYqsUbWhhpGdoaaFnZGKpZ2hsHmtlZKqkb2eTkpqT WZZapG+XoJfxcS97wVH+iuNvV7E3MLbzdDFyckgImEg8/7+KtYuRi0NIYCmjxIdnx1ggElIS P35dYIWwhSX+XOtigyj6xiix6/NhRpAEm4COxKnVR8BsEQEHic13F4NNYhb4xChx7s1ssEnC At4SzRu3M3UxcnCwCKhKPFnBDhLmFbCSeDhnHxvEAnmJ1RsOMIPYnALWEqef9oDNFAKqmfNw A/MERr4FjAyrGEVSS4tz03OLjfSKE3OLS/PS9ZLzczcxAsN427GfW3Ywdr0LPsQowMGoxMP7 w0cpRog1say4MvcQowQHs5IIr+dnoBBvSmJlVWpRfnxRaU5q8SFGU6CbJjJLiSbnA2MsryTe 0NTQ3MLS0NzY3NjMQkmc97xBZZSQQHpiSWp2ampBahFMHxMHp1QD42LD2wln5kw2uz4vqFPb 9rn5fO7jqqlKwT1LH6UuZHD7dHNN248f/x8x2Pgf8LHgf/te7HZgXd9hi7ObqttWbY72aZ8Q nMckd2eFYlHhilA9f+cHWw4mPH/gN3c3z3G38qwSrYPSSVIBQk9afFvqph1Y+eb4oQV/JSZo JPWdE47b3c7fLJy6R4mlOCPRUIu5qDgRADMpmAl5AgAA X-CMS-MailID: 20181226085100eucas1p1784280806eb7442cc99ba2aa4c6ce6cd X-Msg-Generator: CA X-RootMTR: 20181226085100eucas1p1784280806eb7442cc99ba2aa4c6ce6cd X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20181226085100eucas1p1784280806eb7442cc99ba2aa4c6ce6cd References: <20181226085044.9311-1-i.maximets@samsung.com> X-Spam-Status: No, score=-7.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on smtp1.linux-foundation.org Cc: Shahaf Shuler , Flavio Leitner , Ilya Maximets Subject: [ovs-dev] [PATCH v3 4/9] dp-packet: Add flow_mark support for non-DPDK case. 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: , MIME-Version: 1.0 Sender: ovs-dev-bounces@openvswitch.org Errors-To: ovs-dev-bounces@openvswitch.org Additionally, new API call 'dp_packet_set_flow_mark' is needed for packet clone. Mostly for dummy HWOL implementation. Signed-off-by: Ilya Maximets --- lib/dp-packet.h | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/lib/dp-packet.h b/lib/dp-packet.h index 67914ec59..936b31527 100644 --- a/lib/dp-packet.h +++ b/lib/dp-packet.h @@ -60,7 +60,9 @@ struct dp_packet { uint32_t size_; /* Number of bytes in use. */ uint32_t ol_flags; /* Offloading flags. */ #define DP_PACKET_OL_RSS_HASH_MASK 0x1 /* Is the 'rss_hash' valid? */ +#define DP_PACKET_OL_FLOW_MARK_MASK 0x2 /* Is the 'flow_mark' valid? */ uint32_t rss_hash; /* Packet hash. */ + uint32_t flow_mark; /* Packet flow mark. */ #endif enum dp_packet_source source; /* Source of memory allocated as 'base'. */ @@ -543,6 +545,13 @@ dp_packet_has_flow_mark(const struct dp_packet *p, uint32_t *mark) return false; } +static inline void +dp_packet_set_flow_mark(struct dp_packet *p, uint32_t mark) +{ + p->mbuf.hash.fdir.hi = mark; + p->mbuf.ol_flags |= PKT_RX_FDIR_ID; +} + #else /* DPDK_NETDEV */ static inline void * dp_packet_base(const struct dp_packet *b) @@ -644,11 +653,21 @@ dp_packet_l4_checksum_bad(const struct dp_packet *p OVS_UNUSED) } static inline bool -dp_packet_has_flow_mark(const struct dp_packet *p OVS_UNUSED, - uint32_t *mark OVS_UNUSED) +dp_packet_has_flow_mark(const struct dp_packet *p, uint32_t *mark) { + if (p->ol_flags & DP_PACKET_OL_FLOW_MARK_MASK) { + *mark = p->flow_mark; + return true; + } return false; } + +static inline void +dp_packet_set_flow_mark(struct dp_packet *p, uint32_t mark) +{ + p->flow_mark = mark; + p->ol_flags |= DP_PACKET_OL_FLOW_MARK_MASK; +} #endif /* DPDK_NETDEV */ static inline void From patchwork Wed Dec 26 08:50:40 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ilya Maximets X-Patchwork-Id: 1018612 X-Patchwork-Delegate: ian.stokes@intel.com 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=samsung.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=samsung.com header.i=@samsung.com header.b="W+yFMFui"; 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 43PmwN3PqWz9s8r for ; Wed, 26 Dec 2018 19:53:40 +1100 (AEDT) Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id C62F6E1D; Wed, 26 Dec 2018 08:51:07 +0000 (UTC) X-Original-To: ovs-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 14CD7E1D for ; Wed, 26 Dec 2018 08:51:07 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id EC1EB34F for ; Wed, 26 Dec 2018 08:51:05 +0000 (UTC) Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20181226085104euoutp01e82f8ebfefbc63b97f09a9e7b45ecf55~z1eI3GzAp0360703607euoutp01J for ; Wed, 26 Dec 2018 08:51:04 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20181226085104euoutp01e82f8ebfefbc63b97f09a9e7b45ecf55~z1eI3GzAp0360703607euoutp01J DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1545814264; bh=fyRsihvJBo5m3bRlQxl4Fp9Ej6E+9YUpm7bVMe+Oa18=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=W+yFMFuiG6shCZM7+NF5jukKAJ6nep7lj8KwnG00pPyiKZL83Oevw2rh9E+3KWc/n z1XvvOJtMmZqQCxwdgYq5svH3aLHgXWeYSncH8Jv4EmSEhpA3XHHkagisir2Qyv1F4 MJJC5puApLQRwTtuxd37omAXy+tgGiLKFuSUXzhE= Received: from eusmges1new.samsung.com (unknown [203.254.199.242]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20181226085104eucas1p112d9fa971fb37afc62893a6a39315d2a~z1eIPwpr00727107271eucas1p1A; Wed, 26 Dec 2018 08:51:04 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges1new.samsung.com (EUCPMTA) with SMTP id 3C.34.04441.7F0432C5; Wed, 26 Dec 2018 08:51:03 +0000 (GMT) Received: from eusmtrp1.samsung.com (unknown [182.198.249.138]) by eucas1p2.samsung.com (KnoxPortal) with ESMTPA id 20181226085103eucas1p2d63421fb0683d59ac17980131ba20eaf~z1eHfY_7T2312123121eucas1p2e; Wed, 26 Dec 2018 08:51:03 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eusmtrp1.samsung.com (KnoxPortal) with ESMTP id 20181226085102eusmtrp16c88233e9c259aac9ae20dceaf6e2785~z1eHQvuYA3160831608eusmtrp1a; Wed, 26 Dec 2018 08:51:02 +0000 (GMT) X-AuditID: cbfec7f2-5e3ff70000001159-05-5c2340f7e6ae Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id FF.6B.04128.6F0432C5; Wed, 26 Dec 2018 08:51:02 +0000 (GMT) Received: from imaximets.rnd.samsung.ru (unknown [106.109.129.180]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20181226085102eusmtip2fe5790d91336ec112266d5fd4cc84cca~z1eGoQvDt1074310743eusmtip2V; Wed, 26 Dec 2018 08:51:02 +0000 (GMT) From: Ilya Maximets To: ovs-dev@openvswitch.org, Ian Stokes Date: Wed, 26 Dec 2018 11:50:40 +0300 Message-Id: <20181226085044.9311-6-i.maximets@samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181226085044.9311-1-i.maximets@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFmpileLIzCtJLcpLzFFi42LZduznOd3vDsoxBgf26VhsmTaZ1eJK+092 i40Pz7JarD30gd1i0pQTjBZzPz1ntLg9x8vi6cVfzA4cHov3vGTyeDb9MJC4+Z/R4/2+q2we fVtWMXr8b77KGsAWxWWTkpqTWZZapG+XwJWxfdIrxoJGzoobc/pYGhhb2LsYOTkkBEwk5n+6 z9jFyMUhJLCCUaLh91ymLkYOIOcLo8R8boj4Z0aJvvNb4BpufZjAApFYzijxZUoHO4Tzg1Fi 7amvrCBVbAI6EqdWH2EEsUUE7CSmrWpiAiliFnjHKHH/xB0mkISwgJPEpZOzwYpYBFQlnmxd wQiymlfASmLd/GKIbfISqzccYAaxOQWsJU4/7QE7VULgN5vEyr/XWEHqJQRcJC7OKISoF5Z4 dRzmUhmJ05N7WCDseon7LS+hejsYJaYf+scEkbCX2PL6HDvIHGYBTYn1u/Qhwo4SO+72sUOM 55O48VYQJMwMZE7aNp0ZIswr0dEmBFGtIvH74HJmCFtK4ua7z1AXeEjsm7qKDcQWEuhjlLj7 uWQCo/wshF0LGBlXMYqnlhbnpqcWG+allusVJ+YWl+al6yXn525iBKaM0/+Of9rB+PVS0iFG AQ5GJR7eAH+lGCHWxLLiytxDjBIczEoivJ6fgUK8KYmVValF+fFFpTmpxYcYpTlYlMR5qxke RAsJpCeWpGanphakFsFkmTg4pRoYq5fys7Qut+2SOWBfUSpo8P/rhAL9fK3FxU12P77yFxk7 cuZyGLoemFvlJL5U28HzrXb0s2cy6Rv65kv2ey4s+njDN9fIz+5IqaPBd5VnZzI1rvyQifxu tI87MtKmpyhJYbbrw6jnD2yW/1m9XzT4bb0fn8fivdOev4i1mmRs937N7fhXqfZKLMUZiYZa zEXFiQCU7iIBFQMAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrOLMWRmVeSWpSXmKPExsVy+t/xe7rfHJRjDO4tMbXYMm0yq8WV9p/s FhsfnmW1WHvoA7vFpCknGC3mfnrOaHF7jpfF04u/mB04PBbvecnk8Wz6YSBx8z+jx/t9V9k8 +rasYvT433yVNYAtSs+mKL+0JFUhI7+4xFYp2tDCSM/Q0kLPyMRSz9DYPNbKyFRJ384mJTUn syy1SN8uQS9j+6RXjAWNnBU35vSxNDC2sHcxcnJICJhI3PowgaWLkYtDSGApo8T7lzeYIRJS Ej9+XWCFsIUl/lzrYoMo+sYoMeNfAyNIgk1AR+LU6iNgtoiAg8Tmu4tZQYqYBT4xSpx7M5sF JCEs4CRx6eRssCIWAVWJJ1tXANkcHLwCVhLr5hdDLJCXWL3hANhiTgFridNPe8DKhYBK5jzc wDyBkW8BI8MqRpHU0uLc9NxiI73ixNzi0rx0veT83E2MwEDeduznlh2MXe+CDzEKcDAq8fD+ 8FGKEWJNLCuuzD3EKMHBrCTC6/kZKMSbklhZlVqUH19UmpNafIjRFOimicxSosn5wCjLK4k3 NDU0t7A0NDc2NzazUBLnPW9QGSUkkJ5YkpqdmlqQWgTTx8TBKdXAOEc6of1PyJbCj+9nyKoK xz2a05VmfvzQqfCp1fVT9TKyGjtvLzXYU3ybP43V/v3c1jatacYFB2+JH2RyYutXP/lx/9Gv kU35X1aVXvpsM1Gh9nlLF7fq/aCZwY4TL81bflZ8TknlZIY5W699kJ9n/8z0JZft9cPz5nhG /m7Z0dWiuV9y2wUuHiWW4oxEQy3mouJEAIHcOF56AgAA X-CMS-MailID: 20181226085103eucas1p2d63421fb0683d59ac17980131ba20eaf X-Msg-Generator: CA X-RootMTR: 20181226085103eucas1p2d63421fb0683d59ac17980131ba20eaf X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20181226085103eucas1p2d63421fb0683d59ac17980131ba20eaf References: <20181226085044.9311-1-i.maximets@samsung.com> X-Spam-Status: No, score=-7.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on smtp1.linux-foundation.org Cc: Shahaf Shuler , Flavio Leitner , Ilya Maximets Subject: [ovs-dev] [PATCH v3 5/9] dp-packet: Copy flow mark on packet clone. 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: , MIME-Version: 1.0 Sender: ovs-dev-bounces@openvswitch.org Errors-To: ovs-dev-bounces@openvswitch.org Dummy interfaces clones dp-packet while 'receive' appctl processing. In general, we should do this anyway to avoid any possible issues in the future with real interfaces. Signed-off-by: Ilya Maximets --- lib/dp-packet.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/dp-packet.c b/lib/dp-packet.c index b5942f815..4ccb4da5c 100644 --- a/lib/dp-packet.c +++ b/lib/dp-packet.c @@ -163,6 +163,7 @@ struct dp_packet * dp_packet_clone_with_headroom(const struct dp_packet *buffer, size_t headroom) { struct dp_packet *new_buffer; + uint32_t mark; new_buffer = dp_packet_clone_data_with_headroom(dp_packet_data(buffer), dp_packet_size(buffer), @@ -180,6 +181,9 @@ dp_packet_clone_with_headroom(const struct dp_packet *buffer, size_t headroom) if (dp_packet_rss_valid(buffer)) { dp_packet_set_rss_hash(new_buffer, dp_packet_get_rss_hash(buffer)); } + if (dp_packet_has_flow_mark(buffer, &mark)) { + dp_packet_set_flow_mark(new_buffer, mark); + } return new_buffer; } From patchwork Wed Dec 26 08:50:41 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ilya Maximets X-Patchwork-Id: 1018613 X-Patchwork-Delegate: ian.stokes@intel.com 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=samsung.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=samsung.com header.i=@samsung.com header.b="JK2R8IAr"; 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 43Pmwr3tyMz9s8J for ; Wed, 26 Dec 2018 19:54:04 +1100 (AEDT) Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id 86272E80; Wed, 26 Dec 2018 08:51:12 +0000 (UTC) X-Original-To: ovs-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 0E633E24 for ; Wed, 26 Dec 2018 08:51:11 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id 0C7BE1C0 for ; Wed, 26 Dec 2018 08:51:08 +0000 (UTC) Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20181226085107euoutp018a2f81a39b3a32105d414e30779cb0cf~z1eLjRCma0361203612euoutp01J for ; Wed, 26 Dec 2018 08:51:07 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20181226085107euoutp018a2f81a39b3a32105d414e30779cb0cf~z1eLjRCma0361203612euoutp01J DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1545814267; bh=3rWIi0Gt5J29znu+PM6i39ErbxJ+q0v1Jr+JECUW7mA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=JK2R8IAr0fF4bpKq3IpD2NT2IPYbd7EYL8Wr2g8xZrhLAUuL4vRqe7zCbP8VtI1bc NhxwmOmk3pSMkVEZfHou1YTsCj7vS0PHlXEl23kNJZFmgtG0AUMwcR/jkGo6FEpULK GALEKjj9izWxEIcHG31FmwRoSTGLccWNLxksZbWE= Received: from eusmges1new.samsung.com (unknown [203.254.199.242]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20181226085106eucas1p1e6193bf253d62f36624b1ee0205c4bc7~z1eK27J0c2056720567eucas1p11; Wed, 26 Dec 2018 08:51:06 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges1new.samsung.com (EUCPMTA) with SMTP id 9D.34.04441.AF0432C5; Wed, 26 Dec 2018 08:51:06 +0000 (GMT) Received: from eusmtrp1.samsung.com (unknown [182.198.249.138]) by eucas1p1.samsung.com (KnoxPortal) with ESMTPA id 20181226085105eucas1p1bcf196ad2e639aa5b516a7a2a0d9f1a8~z1eJ2QWsX2280522805eucas1p18; Wed, 26 Dec 2018 08:51:05 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eusmtrp1.samsung.com (KnoxPortal) with ESMTP id 20181226085105eusmtrp1ef6649c2d5131aa2951eca1fc11b1f95~z1eJlw5lH3160831608eusmtrp1c; Wed, 26 Dec 2018 08:51:05 +0000 (GMT) X-AuditID: cbfec7f2-5c9ff70000001159-0a-5c2340fafef6 Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id 21.7B.04128.9F0432C5; Wed, 26 Dec 2018 08:51:05 +0000 (GMT) Received: from imaximets.rnd.samsung.ru (unknown [106.109.129.180]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20181226085104eusmtip2a7a3ef4a3dd4b36aa48d8b8b540bdd1e~z1eI5_EYU0919609196eusmtip2L; Wed, 26 Dec 2018 08:51:04 +0000 (GMT) From: Ilya Maximets To: ovs-dev@openvswitch.org, Ian Stokes Date: Wed, 26 Dec 2018 11:50:41 +0300 Message-Id: <20181226085044.9311-7-i.maximets@samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181226085044.9311-1-i.maximets@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFmpnleLIzCtJLcpLzFFi42LZduznOd1fDsoxBjtmyVpsmTaZ1eJK+092 i40Pz7JarD30gd1i0pQTjBZzPz1ntLg9x8vi6cVfzA4cHov3vGTyeDb9MJC4+Z/R4/2+q2we fVtWMXr8b77KGsAWxWWTkpqTWZZapG+XwJXRu+c6a8F33Yov34+wNzC+Uepi5OSQEDCR2HO2 hbWLkYtDSGAFo8TtZzeZIJwvjBKbZrxggXA+M0rcf7abCaZl0ds9UFXLGSXu3l4AVfWDUeL9 5essIFVsAjoSp1YfYQSxRQTsJKatagLrYBZ4BzTqxB2wUcICgRLN736zg9gsAqoSG7/2g8V5 BawkLu5azQKxTl5i9YYDzCA2p4C1xOmnPYwggyQEfrNJvDzwgxGiyEVi86uVUA3CEq+Ob2GH sGUkTk/ugYrXS9xveQnV3MEoMf3QP6iH7CW2vD4H1MABdJ6mxPpd+hBhR4l7mz6wgIQlBPgk brwVBAkzA5mTtk1nhgjzSnS0CUFUq0j8PricGcKWkrj57jPUBR4S9/dvhwZQH6PE0icfWCYw ys9CWLaAkXEVo3hqaXFuemqxYV5quV5xYm5xaV66XnJ+7iZGYPI4/e/4px2MXy8lHWIU4GBU 4uEN8FeKEWJNLCuuzD3EKMHBrCTC6/kZKMSbklhZlVqUH19UmpNafIhRmoNFSZy3muFBtJBA emJJanZqakFqEUyWiYNTqoFRQeOmp9hyxwu+ufUpi+ZqfDsUnbd0/ceOtGmhBvt/c2UFl+zu V3Oy7Kl9rLa14KDsF917tzcKH7wVHx4Zdc3PUurlV9euj9ocC2v+TrY9LHertadWOyRxjaLP VgsFiYPBZwq3Zpa3eF+rKVxy8skP5z8xl1u3JarZ9U8T4LZ4JHZtS/HBqAAlluKMREMt5qLi RACTCoL8GgMAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrBLMWRmVeSWpSXmKPExsVy+t/xe7o/HZRjDJ7MEbfYMm0yq8WV9p/s FhsfnmW1WHvoA7vFpCknGC3mfnrOaHF7jpfF04u/mB04PBbvecnk8Wz6YSBx8z+jx/t9V9k8 +rasYvT433yVNYAtSs+mKL+0JFUhI7+4xFYp2tDCSM/Q0kLPyMRSz9DYPNbKyFRJ384mJTUn syy1SN8uQS+jd8911oLvuhVfvh9hb2B8o9TFyMkhIWAisejtHqYuRi4OIYGljBK9/56wQiSk JH78ugBlC0v8udbFBlH0jVGif9FHNpAEm4COxKnVRxhBbBEBB4nNdxezghQxC3xilDj3ZjYL SEJYwF/izqRnYA0sAqoSG7/2M4HYvAJWEhd3rWaB2CAvsXrDAWYQm1PAWuL00x6woUJANXMe bmCewMi3gJFhFaNIamlxbnpusZFecWJucWleul5yfu4mRmAobzv2c8sOxq53wYcYBTgYlXh4 f/goxQixJpYVV+YeYpTgYFYS4fX8DBTiTUmsrEotyo8vKs1JLT7EaAp01ERmKdHkfGCc5ZXE G5oamltYGpobmxubWSiJ8543qIwSEkhPLEnNTk0tSC2C6WPi4JRqYGwXPyiTprs7LH9L2sc3 s7c+9Xw0t2u6m0wij41h5ab6ucnzhX6wvC8S7t3JYFhrnMqykj1XZdHjw7sMr7Bx7dlkpyj+ u23t+r+5cj4mMhvdfaQz7u+7v9dNf+ErJQMB5sJNJka/XiU8FI069uKYK9cx+1uyU3YZ5Cxp MfhXeYn9tvfG5VJPg5VYijMSDbWYi4oTAZ/slYt7AgAA X-CMS-MailID: 20181226085105eucas1p1bcf196ad2e639aa5b516a7a2a0d9f1a8 X-Msg-Generator: CA X-RootMTR: 20181226085105eucas1p1bcf196ad2e639aa5b516a7a2a0d9f1a8 X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20181226085105eucas1p1bcf196ad2e639aa5b516a7a2a0d9f1a8 References: <20181226085044.9311-1-i.maximets@samsung.com> X-Spam-Status: No, score=-7.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on smtp1.linux-foundation.org Cc: Shahaf Shuler , Flavio Leitner , Ilya Maximets Subject: [ovs-dev] [PATCH v3 6/9] netdev-dummy: Implement dummy put/del flow offload API. 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: , MIME-Version: 1.0 Sender: ovs-dev-bounces@openvswitch.org Errors-To: ovs-dev-bounces@openvswitch.org Basic partial HWOL API for dummy interfaces. Signed-off-by: Ilya Maximets --- lib/netdev-dummy.c | 106 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 103 insertions(+), 3 deletions(-) diff --git a/lib/netdev-dummy.c b/lib/netdev-dummy.c index 72b4f7adc..6ee3cbca8 100644 --- a/lib/netdev-dummy.c +++ b/lib/netdev-dummy.c @@ -29,6 +29,7 @@ #include "odp-util.h" #include "openvswitch/dynamic-string.h" #include "openvswitch/list.h" +#include "openvswitch/match.h" #include "openvswitch/ofp-print.h" #include "openvswitch/ofpbuf.h" #include "openvswitch/vlog.h" @@ -92,6 +93,13 @@ struct pkt_list_node { struct ovs_list list_node; }; +struct offloaded_flow { + struct hmap_node node; + ovs_u128 ufid; + struct match match; + uint32_t mark; +}; + /* Protects 'dummy_list'. */ static struct ovs_mutex dummy_list_mutex = OVS_MUTEX_INITIALIZER; @@ -124,6 +132,8 @@ struct netdev_dummy { struct in6_addr ipv6, ipv6_mask; struct ovs_list rxes OVS_GUARDED; /* List of child "netdev_rxq_dummy"s. */ + struct hmap offloaded_flows OVS_GUARDED; + /* The following properties are for dummy-pmd and they cannot be changed * when a device is running, so we remember the request and update them * next time netdev_dummy_reconfigure() is called. */ @@ -699,6 +709,7 @@ netdev_dummy_construct(struct netdev *netdev_) dummy_packet_conn_init(&netdev->conn); ovs_list_init(&netdev->rxes); + hmap_init(&netdev->offloaded_flows); ovs_mutex_unlock(&netdev->mutex); ovs_mutex_lock(&dummy_list_mutex); @@ -712,6 +723,7 @@ static void netdev_dummy_destruct(struct netdev *netdev_) { struct netdev_dummy *netdev = netdev_dummy_cast(netdev_); + struct offloaded_flow *off_flow; ovs_mutex_lock(&dummy_list_mutex); ovs_list_remove(&netdev->list_node); @@ -727,6 +739,11 @@ netdev_dummy_destruct(struct netdev *netdev_) dummy_packet_conn_close(&netdev->conn); netdev->conn.type = NONE; + HMAP_FOR_EACH_POP (off_flow, node, &netdev->offloaded_flows) { + free(off_flow); + } + hmap_destroy(&netdev->offloaded_flows); + ovs_mutex_unlock(&netdev->mutex); ovs_mutex_destroy(&netdev->mutex); } @@ -1388,8 +1405,88 @@ netdev_dummy_update_flags(struct netdev *netdev_, return error; } - -/* Helper functions. */ + +/* Flow offload API. */ +static uint32_t +netdev_dummy_flow_hash(const ovs_u128 *ufid) +{ + return ufid->u32[0]; +} + +static struct offloaded_flow * +find_offloaded_flow(const struct hmap *offloaded_flows, const ovs_u128 *ufid) +{ + uint32_t hash = netdev_dummy_flow_hash(ufid); + struct offloaded_flow *data; + + HMAP_FOR_EACH_WITH_HASH (data, node, hash, offloaded_flows) { + if (ovs_u128_equals(*ufid, data->ufid)) { + return data; + } + } + + return NULL; +} + +static int +netdev_dummy_flow_put(struct netdev *netdev, struct match *match, + struct nlattr *actions OVS_UNUSED, + size_t actions_len OVS_UNUSED, + const ovs_u128 *ufid, struct offload_info *info, + struct dpif_flow_stats *stats OVS_UNUSED) +{ + struct netdev_dummy *dev = netdev_dummy_cast(netdev); + struct offloaded_flow *off_flow; + + ovs_mutex_lock(&dev->mutex); + + off_flow = find_offloaded_flow(&dev->offloaded_flows, ufid); + if (!off_flow) { + /* Create new offloaded flow. */ + off_flow = xzalloc(sizeof *off_flow); + memcpy(&off_flow->ufid, ufid, sizeof *ufid); + hmap_insert(&dev->offloaded_flows, &off_flow->node, + netdev_dummy_flow_hash(ufid)); + } + + off_flow->mark = info->flow_mark; + memcpy(&off_flow->match, match, sizeof *match); + + /* As we have per-netdev 'offloaded_flows', we don't need to match + * the 'in_port' for received packets. This will also allow offloading for + * packets passed to 'receive' command without specifying the 'in_port'. */ + off_flow->match.wc.masks.in_port.odp_port = 0; + + ovs_mutex_unlock(&dev->mutex); + + return 0; +} + +static int +netdev_dummy_flow_del(struct netdev *netdev, const ovs_u128 *ufid, + struct dpif_flow_stats *stats OVS_UNUSED) +{ + struct netdev_dummy *dev = netdev_dummy_cast(netdev); + struct offloaded_flow *off_flow; + + ovs_mutex_lock(&dev->mutex); + + off_flow = find_offloaded_flow(&dev->offloaded_flows, ufid); + if (!off_flow) { + ovs_mutex_unlock(&dev->mutex); + return -1; + } + + hmap_remove(&dev->offloaded_flows, &off_flow->node); + free(off_flow); + + ovs_mutex_unlock(&dev->mutex); + return 0; +} + +#define DUMMY_FLOW_OFFLOAD_API \ + .flow_put = netdev_dummy_flow_put, \ + .flow_del = netdev_dummy_flow_del #define NETDEV_DUMMY_CLASS_COMMON \ .run = netdev_dummy_run, \ @@ -1423,7 +1520,8 @@ netdev_dummy_update_flags(struct netdev *netdev_, .rxq_dealloc = netdev_dummy_rxq_dealloc, \ .rxq_recv = netdev_dummy_rxq_recv, \ .rxq_wait = netdev_dummy_rxq_wait, \ - .rxq_drain = netdev_dummy_rxq_drain + .rxq_drain = netdev_dummy_rxq_drain, \ + DUMMY_FLOW_OFFLOAD_API static const struct netdev_class dummy_class = { NETDEV_DUMMY_CLASS_COMMON, @@ -1441,6 +1539,8 @@ static const struct netdev_class dummy_pmd_class = { .is_pmd = true, .reconfigure = netdev_dummy_reconfigure }; + +/* Helper functions. */ static void pkt_list_delete(struct ovs_list *l) From patchwork Wed Dec 26 08:50:42 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ilya Maximets X-Patchwork-Id: 1018614 X-Patchwork-Delegate: ian.stokes@intel.com 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=samsung.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=samsung.com header.i=@samsung.com header.b="aWDEEVLr"; 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 43PmxL73Qqz9s8J for ; Wed, 26 Dec 2018 19:54:30 +1100 (AEDT) Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id 319EEE46; Wed, 26 Dec 2018 08:51:13 +0000 (UTC) X-Original-To: ovs-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 5ECD0E24 for ; Wed, 26 Dec 2018 08:51:11 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id B06A17C3 for ; Wed, 26 Dec 2018 08:51:10 +0000 (UTC) Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20181226085109euoutp015f53b32034a9367ffc24ac73dd0b5053~z1eNMxdIn0259202592euoutp01E for ; Wed, 26 Dec 2018 08:51:09 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20181226085109euoutp015f53b32034a9367ffc24ac73dd0b5053~z1eNMxdIn0259202592euoutp01E DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1545814269; bh=PtDfvhyCFiW952JzFxFhpTDPb6iyKkdrpgvUv94aI6g=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=aWDEEVLrPNNvMYxkzHTOKjzdoML5gM4DJcl4OXe6nhYaVipXg7z7lNpXS700Ms9/5 l6w/KQKfyYZJJ+0dTHFsd+Q7snisuaq5jlxQF8+2fxmrrVhBwfVQB+t/nAdUJVZmEQ 91Y6OnEJHvoe2JIFaQ+y+SU9jXjuq5dTKr25Zyso= Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20181226085108eucas1p1879dcbc278fd48a4076321f821ab4925~z1eMpE3f30726207262eucas1p1X; Wed, 26 Dec 2018 08:51:08 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges2new.samsung.com (EUCPMTA) with SMTP id C2.59.04294.CF0432C5; Wed, 26 Dec 2018 08:51:08 +0000 (GMT) Received: from eusmtrp1.samsung.com (unknown [182.198.249.138]) by eucas1p2.samsung.com (KnoxPortal) with ESMTPA id 20181226085108eucas1p2be5cafc53242baa233bda824711ddb33~z1eL9X3rF0946409464eucas1p2D; Wed, 26 Dec 2018 08:51:08 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eusmtrp1.samsung.com (KnoxPortal) with ESMTP id 20181226085107eusmtrp14562302998f31e5c26eb9fb299ba824a~z1eLu6B_43160831608eusmtrp1h; Wed, 26 Dec 2018 08:51:07 +0000 (GMT) X-AuditID: cbfec7f4-835ff700000010c6-1f-5c2340fcb727 Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id E2.7B.04128.BF0432C5; Wed, 26 Dec 2018 08:51:07 +0000 (GMT) Received: from imaximets.rnd.samsung.ru (unknown [106.109.129.180]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20181226085107eusmtip2d8b4de20e7c05da07542f4bd000031fb~z1eLIQPCe0919609196eusmtip2M; Wed, 26 Dec 2018 08:51:07 +0000 (GMT) From: Ilya Maximets To: ovs-dev@openvswitch.org, Ian Stokes Date: Wed, 26 Dec 2018 11:50:42 +0300 Message-Id: <20181226085044.9311-8-i.maximets@samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181226085044.9311-1-i.maximets@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFmpjleLIzCtJLcpLzFFi42LZduznOd0/DsoxBg/OSVtsmTaZ1eJK+092 i40Pz7JarD30gd1i0pQTjBZzPz1ntLg9x8vi6cVfzA4cHov3vGTyeDb9MJC4+Z/R4/2+q2we fVtWMXr8b77KGsAWxWWTkpqTWZZapG+XwJVx5tUktoLDmhXrVqxnbWD8LNPFyMkhIWAicXPh bpYuRi4OIYEVjBITX81nhHC+MEp0rr7OCuF8ZpRY82UdC0zL+21noVqWM0rcu/YDyvnBKLFx zhZmkCo2AR2JU6uPMILYIgJ2EtNWNTGBFDELvGOUuH/iDhNIQljAQ+Jz23WwsSwCqhJLFv8C sjk4eAWsJDY1iUFsk5dYveEA2ExOAWuJ0097wO6TEPjPJrHn7XlWiCIXiSnP5zJC2MISr45v YYewZSROT+6BOrte4n7LS6jmDkaJ6Yf+MUEk7CW2vD7HDrKYWUBTYv0ufYiwo8TsSROYQMIS AnwSN94KgoSZgcxJ26YzQ4R5JTrahCCqVSR+H1zODGFLSdx89xnqAg+JnQumMEHCp49R4krn ZJYJjPKzEJYtYGRcxSieWlqcm55abJSXWq5XnJhbXJqXrpecn7uJEZg6Tv87/mUH464/SYcY BTgYlXh4f/goxQixJpYVV+YeYpTgYFYS4fX8DBTiTUmsrEotyo8vKs1JLT7EKM3BoiTOW83w IFpIID2xJDU7NbUgtQgmy8TBKdXA6Ps1ty//RuJ6zsfGvRd/2Dt32nKsqfx3dXNX1b9Xzhst kpcorV9xrsP1f3+a0OGNTEkSDKsiq70vX5u5tulTBY+0j2xgwJHkl39Dvk+uYxFouqBjd2aT AoNQ+R1LhXvLOVzeLX3S2bNT+Lf5Aec/0W8ePW6YV1TjIZV1+/Sbopa5m4IvhV6IVmIpzkg0 1GIuKk4EANzlv4cZAwAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrOLMWRmVeSWpSXmKPExsVy+t/xe7q/HZRjDOae07DYMm0yq8WV9p/s FhsfnmW1WHvoA7vFpCknGC3mfnrOaHF7jpfF04u/mB04PBbvecnk8Wz6YSBx8z+jx/t9V9k8 +rasYvT433yVNYAtSs+mKL+0JFUhI7+4xFYp2tDCSM/Q0kLPyMRSz9DYPNbKyFRJ384mJTUn syy1SN8uQS/jzKtJbAWHNSvWrVjP2sD4WaaLkZNDQsBE4v22syxdjFwcQgJLGSV6T01ihEhI Sfz4dYEVwhaW+HOtiw2i6BujxL0/u9hBEmwCOhKnVh8BaxARcJDYfHcxK0gRs8AnRolzb2az gCSEBTwkPrddB7NZBFQlliz+BWRzcPAKWElsahKDWCAvsXrDAWYQm1PAWuL00x6wmUJAJXMe bmCewMi3gJFhFaNIamlxbnpusZFecWJucWleul5yfu4mRmAgbzv2c8sOxq53wYcYBTgYlXh4 f/goxQixJpYVV+YeYpTgYFYS4fX8DBTiTUmsrEotyo8vKs1JLT7EaAp000RmKdHkfGCU5ZXE G5oamltYGpobmxubWSiJ8543qIwSEkhPLEnNTk0tSC2C6WPi4JRqYDwmm3aR8WxBsdqyju2K c+492aW8KTecUUhdXai1sC7vTk/onMdzZSe4Jfs7Bz2Kmb52kmdzENvi9NV79f3u/nhwoiO0 jj82oJZra9HZzQfeerW/+qxf5ps652PMzhkK9S8Xn3/z+JMOV3+bvPqZvt5DnI8flGW8m1H2 /XL6jo28H17yzmV7UKTEUpyRaKjFXFScCADpOtFFegIAAA== X-CMS-MailID: 20181226085108eucas1p2be5cafc53242baa233bda824711ddb33 X-Msg-Generator: CA X-RootMTR: 20181226085108eucas1p2be5cafc53242baa233bda824711ddb33 X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20181226085108eucas1p2be5cafc53242baa233bda824711ddb33 References: <20181226085044.9311-1-i.maximets@samsung.com> X-Spam-Status: No, score=-7.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on smtp1.linux-foundation.org Cc: Shahaf Shuler , Flavio Leitner , Ilya Maximets Subject: [ovs-dev] [PATCH v3 7/9] netdev-dummy: Set flow mark for offloaded flows. 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: , MIME-Version: 1.0 Sender: ovs-dev-bounces@openvswitch.org Errors-To: ovs-dev-bounces@openvswitch.org Match packets received on dummy interfaces with offloaded flows and set up corresponding marks in dp-packet. Signed-off-by: Ilya Maximets --- lib/netdev-dummy.c | 40 ++++++++++++++++++++++++++++------------ 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/lib/netdev-dummy.c b/lib/netdev-dummy.c index 6ee3cbca8..2732fc2da 100644 --- a/lib/netdev-dummy.c +++ b/lib/netdev-dummy.c @@ -156,7 +156,7 @@ struct netdev_rxq_dummy { static unixctl_cb_func netdev_dummy_set_admin_state; static int netdev_dummy_construct(struct netdev *); static void netdev_dummy_queue_packet(struct netdev_dummy *, - struct dp_packet *, int); + struct dp_packet *, struct flow *, int); static void dummy_packet_stream_close(struct dummy_packet_stream *); @@ -283,7 +283,7 @@ dummy_packet_stream_run(struct netdev_dummy *dev, struct dummy_packet_stream *s) if (retval == n && dp_packet_size(&s->rxbuf) > 2) { dp_packet_pull(&s->rxbuf, 2); netdev_dummy_queue_packet(dev, - dp_packet_clone(&s->rxbuf), 0); + dp_packet_clone(&s->rxbuf), NULL, 0); dp_packet_clear(&s->rxbuf); } } else if (retval != -EAGAIN) { @@ -1151,7 +1151,7 @@ netdev_dummy_send(struct netdev *netdev, int qid OVS_UNUSED, struct dp_packet *reply = dp_packet_new(0); compose_arp(reply, ARP_OP_REPLY, dev->hwaddr, flow.dl_src, false, flow.nw_dst, flow.nw_src); - netdev_dummy_queue_packet(dev, reply, 0); + netdev_dummy_queue_packet(dev, reply, NULL, 0); } } @@ -1562,12 +1562,11 @@ eth_from_packet(const char *s) } static struct dp_packet * -eth_from_flow(const char *s, size_t packet_size) +eth_from_flow_str(const char *s, size_t packet_size, struct flow *flow) { enum odp_key_fitness fitness; struct dp_packet *packet; struct ofpbuf odp_key; - struct flow flow; int error; /* Convert string to datapath key. @@ -1584,7 +1583,7 @@ eth_from_flow(const char *s, size_t packet_size) } /* Convert odp_key to flow. */ - fitness = odp_flow_key_to_flow(odp_key.data, odp_key.size, &flow); + fitness = odp_flow_key_to_flow(odp_key.data, odp_key.size, flow); if (fitness == ODP_FIT_ERROR) { ofpbuf_uninit(&odp_key); return NULL; @@ -1592,15 +1591,15 @@ eth_from_flow(const char *s, size_t packet_size) packet = dp_packet_new(0); if (packet_size) { - flow_compose(packet, &flow, NULL, 0); + flow_compose(packet, flow, NULL, 0); if (dp_packet_size(packet) < packet_size) { - packet_expand(packet, &flow, packet_size); + packet_expand(packet, flow, packet_size); } else if (dp_packet_size(packet) > packet_size){ dp_packet_delete(packet); packet = NULL; } } else { - flow_compose(packet, &flow, NULL, 64); + flow_compose(packet, flow, NULL, 64); } ofpbuf_uninit(&odp_key); @@ -1620,14 +1619,28 @@ netdev_dummy_queue_packet__(struct netdev_rxq_dummy *rx, struct dp_packet *packe static void netdev_dummy_queue_packet(struct netdev_dummy *dummy, struct dp_packet *packet, - int queue_id) + struct flow *flow, int queue_id) OVS_REQUIRES(dummy->mutex) { struct netdev_rxq_dummy *rx, *prev; + struct offloaded_flow *data; + struct flow packet_flow; if (dummy->rxq_pcap) { ovs_pcap_write(dummy->rxq_pcap, packet); } + + if (!flow) { + flow = &packet_flow; + flow_extract(packet, flow); + } + HMAP_FOR_EACH (data, node, &dummy->offloaded_flows) { + if (flow_equal_except(flow, &data->match.flow, &data->match.wc)) { + dp_packet_set_flow_mark(packet, data->mark); + break; + } + } + prev = NULL; LIST_FOR_EACH (rx, node, &dummy->rxes) { if (rx->up.queue_id == queue_id && @@ -1673,6 +1686,7 @@ netdev_dummy_receive(struct unixctl_conn *conn, for (i = k; i < argc; i++) { struct dp_packet *packet; + struct flow flow; /* Try to parse 'argv[i]' as packet in hex. */ packet = eth_from_packet(argv[i]); @@ -1692,15 +1706,17 @@ netdev_dummy_receive(struct unixctl_conn *conn, i += 2; } /* Try parse 'argv[i]' as odp flow. */ - packet = eth_from_flow(flow_str, packet_size); + packet = eth_from_flow_str(flow_str, packet_size, &flow); if (!packet) { unixctl_command_reply_error(conn, "bad packet or flow syntax"); goto exit; } + } else { + flow_extract(packet, &flow); } - netdev_dummy_queue_packet(dummy_dev, packet, rx_qid); + netdev_dummy_queue_packet(dummy_dev, packet, &flow, rx_qid); } unixctl_command_reply(conn, NULL); From patchwork Wed Dec 26 08:50:43 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ilya Maximets X-Patchwork-Id: 1018615 X-Patchwork-Delegate: ian.stokes@intel.com 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=samsung.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=samsung.com header.i=@samsung.com header.b="Qt3j8obD"; 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 43Pmxw6wryz9s8J for ; Wed, 26 Dec 2018 19:55:00 +1100 (AEDT) Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id 13BD2E82; Wed, 26 Dec 2018 08:51:14 +0000 (UTC) X-Original-To: ovs-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 7234FE7C for ; Wed, 26 Dec 2018 08:51:13 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com [210.118.77.12]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id DB4F634F for ; Wed, 26 Dec 2018 08:51:12 +0000 (UTC) Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20181226085111euoutp02ef6054f2e32fa6c3dbd7ea9461a4c2f4~z1ePQCfQK0324803248euoutp02b for ; Wed, 26 Dec 2018 08:51:11 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20181226085111euoutp02ef6054f2e32fa6c3dbd7ea9461a4c2f4~z1ePQCfQK0324803248euoutp02b DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1545814271; bh=hh8tfOqBxX/8z+J5T0usOT+qycsLscAuCHyfq+9aaoU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Qt3j8obDCJ2kuOR6cPTdRUIlxD2QE0smR1DfqwklJWDWYZrAXaJdDB/UEKcOsk13c b+Mm7JhNQi5K0VvB6AFr7xE5W/XtQc2OfBZdwh5K85cwfOg0LCDC8y25Kc+1pQ0Yy/ S6N9HOPE/DH3BFEwcErSkWU+D02p3ian+OAk+hwk= Received: from eusmges3new.samsung.com (unknown [203.254.199.245]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20181226085111eucas1p1e0098df9da72e48a200121187a16f9b6~z1eOyQ6692603626036eucas1p1H; Wed, 26 Dec 2018 08:51:11 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges3new.samsung.com (EUCPMTA) with SMTP id E5.BD.04806.EF0432C5; Wed, 26 Dec 2018 08:51:10 +0000 (GMT) Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by eucas1p2.samsung.com (KnoxPortal) with ESMTPA id 20181226085110eucas1p260795696a9ec8f23eae839b959a65556~z1eOG7Y5D2311623116eucas1p2o; Wed, 26 Dec 2018 08:51:10 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eusmtrp2.samsung.com (KnoxPortal) with ESMTP id 20181226085110eusmtrp2b942443b5c26e9e9cbd8f0dc2ec68f5d~z1eN4cNZ70299702997eusmtrp2V; Wed, 26 Dec 2018 08:51:10 +0000 (GMT) X-AuditID: cbfec7f5-367ff700000012c6-be-5c2340fee5a1 Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id 63.E6.04284.EF0432C5; Wed, 26 Dec 2018 08:51:10 +0000 (GMT) Received: from imaximets.rnd.samsung.ru (unknown [106.109.129.180]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20181226085109eusmtip286469c1187b755d6d94edde740bb33c3~z1eNWODFQ0920209202eusmtip2W; Wed, 26 Dec 2018 08:51:09 +0000 (GMT) From: Ilya Maximets To: ovs-dev@openvswitch.org, Ian Stokes Date: Wed, 26 Dec 2018 11:50:43 +0300 Message-Id: <20181226085044.9311-9-i.maximets@samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181226085044.9311-1-i.maximets@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFmpmleLIzCtJLcpLzFFi42LZduznOd1/DsoxBlu79Cy2TJvManGl/Se7 xcaHZ1kt1h76wG4xacoJRou5n54zWtye42Xx9OIvZgcOj8V7XjJ5PJt+GEjc/M/o8X7fVTaP vi2rGD3+N19lDWCL4rJJSc3JLEst0rdL4Mo4efwFU8FWxYoNTe1sDYxbxLsYOTkkBEwk7j+d z9jFyMUhJLCCUeLKmR8sEM4XRomlTw8zg1QJCXxmlDi43gCmY/mG22wQRcsZJa5+aWGCcH4w Smz41MIOUsUmoCNxavURRhBbRMBOYtqqJrAiZoF3jBL3T9xhAkkIC7hLXF66HMxmEVCVWL/q D5jNK2AlsWPiShaIdfISqzccADuDU8Ba4vTTHrBjJQS+s0k82f+NGaLIRWLHkpvsELawxKvj W6BsGYn/O+czQdj1EvdbXkI1dzBKTD/0DyphL7Hl9TmgBg6g8zQl1u/Shwg7SjxfvJAFJCwh wCdx460gSJgZyJy0bTozRJhXoqNNCKJaReL3weVQ10hJ3Hz3GWggO5DtIdGiDwnDPkaJlzeS JjDKz0LYtICRcRWjeGppcW56arFxXmq5XnFibnFpXrpecn7uJkZg0jj97/jXHYz7/iQdYhTg YFTi4f3hoxQjxJpYVlyZe4hRgoNZSYTX8zNQiDclsbIqtSg/vqg0J7X4EKM0B4uSOG81w4No IYH0xJLU7NTUgtQimCwTB6dUA6PFjQx+6XjvFed5VaIT9j6WdiiPSNmQZrBk4o/Li6+z2xjF 7/blCNbubOResHPH6QVM9V/Fw2fdmb1q+alZV470ejkstN6RKuDQOf/rA/Wqz3s3fdS1yH/2 foP91PM2/SxzvjEw1T19ZCYakJF5XspKoV106+S5rXK7952SW3tVRcnhxRfTDYlKLMUZiYZa zEXFiQDNcmJrFgMAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrBLMWRmVeSWpSXmKPExsVy+t/xe7r/HJRjDNb8Z7LYMm0yq8WV9p/s FhsfnmW1WHvoA7vFpCknGC3mfnrOaHF7jpfF04u/mB04PBbvecnk8Wz6YSBx8z+jx/t9V9k8 +rasYvT433yVNYAtSs+mKL+0JFUhI7+4xFYp2tDCSM/Q0kLPyMRSz9DYPNbKyFRJ384mJTUn syy1SN8uQS/j5PEXTAVbFSs2NLWzNTBuEe9i5OSQEDCRWL7hNlsXIxeHkMBSRoll01+zQCSk JH78usAKYQtL/LnWBVX0jVHi5tEdYEVsAjoSp1YfYQSxRQQcJDbfXcwKUsQs8IlR4tyb2WBF wgLuEpeXLmcCsVkEVCXWr/oDZvMKWEnsmLgSapu8xOoNB5hBbE4Ba4nTT3vAhgoB1cx5uIF5 AiPfAkaGVYwiqaXFuem5xYZ6xYm5xaV56XrJ+bmbGIGhvO3Yz807GC9tDD7EKMDBqMTD+8NH KUaINbGsuDL3EKMEB7OSCK/nZ6AQb0piZVVqUX58UWlOavEhRlOgoyYyS4km5wPjLK8k3tDU 0NzC0tDc2NzYzEJJnPe8QWWUkEB6YklqdmpqQWoRTB8TB6dUA+OsjYaWPR4fZRZMWzlT03qa UnDrpmUSsVJPvAteSi0NuCzikqkrrXLmuHmw5kHLrMrUKywLl39V/xi/rDz2mev7Hps15gZ7 DVd3RUTyc09iyqu0eGO2UtWx9eSv/c/OxYle38L8UXOCq66/VUdK9mor3YC6R4fDX0RoB/v+ rAmVrP79rrbcU4mlOCPRUIu5qDgRAJN6ClJ7AgAA X-CMS-MailID: 20181226085110eucas1p260795696a9ec8f23eae839b959a65556 X-Msg-Generator: CA X-RootMTR: 20181226085110eucas1p260795696a9ec8f23eae839b959a65556 X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20181226085110eucas1p260795696a9ec8f23eae839b959a65556 References: <20181226085044.9311-1-i.maximets@samsung.com> X-Spam-Status: No, score=-7.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on smtp1.linux-foundation.org Cc: Shahaf Shuler , Flavio Leitner , Ilya Maximets Subject: [ovs-dev] [PATCH v3 8/9] netdev-dummy: Add flow offloading related logs. 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: , MIME-Version: 1.0 Sender: ovs-dev-bounces@openvswitch.org Errors-To: ovs-dev-bounces@openvswitch.org Add debug logging for partial HWOL for dummy interfaces for the future using in tests. Signed-off-by: Ilya Maximets --- lib/netdev-dummy.c | 66 +++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 63 insertions(+), 3 deletions(-) diff --git a/lib/netdev-dummy.c b/lib/netdev-dummy.c index 2732fc2da..3138f19ea 100644 --- a/lib/netdev-dummy.c +++ b/lib/netdev-dummy.c @@ -1437,6 +1437,7 @@ netdev_dummy_flow_put(struct netdev *netdev, struct match *match, { struct netdev_dummy *dev = netdev_dummy_cast(netdev); struct offloaded_flow *off_flow; + bool modify = true; ovs_mutex_lock(&dev->mutex); @@ -1447,6 +1448,7 @@ netdev_dummy_flow_put(struct netdev *netdev, struct match *match, memcpy(&off_flow->ufid, ufid, sizeof *ufid); hmap_insert(&dev->offloaded_flows, &off_flow->node, netdev_dummy_flow_hash(ufid)); + modify = false; } off_flow->mark = info->flow_mark; @@ -1459,6 +1461,20 @@ netdev_dummy_flow_put(struct netdev *netdev, struct match *match, ovs_mutex_unlock(&dev->mutex); + if (VLOG_IS_DBG_ENABLED()) { + struct ds ds = DS_EMPTY_INITIALIZER; + + ds_put_format(&ds, "%s: flow put[%s]: ", netdev_get_name(netdev), + modify ? "modify" : "create"); + odp_format_ufid(ufid, &ds); + ds_put_cstr(&ds, " flow match: "); + match_format(match, NULL, &ds, OFP_DEFAULT_PRIORITY); + ds_put_format(&ds, ", mark: %"PRIu32, info->flow_mark); + + VLOG_DBG("%s", ds_cstr(&ds)); + ds_destroy(&ds); + } + return 0; } @@ -1468,20 +1484,43 @@ netdev_dummy_flow_del(struct netdev *netdev, const ovs_u128 *ufid, { struct netdev_dummy *dev = netdev_dummy_cast(netdev); struct offloaded_flow *off_flow; + const char *error = NULL; + uint32_t mark; ovs_mutex_lock(&dev->mutex); off_flow = find_offloaded_flow(&dev->offloaded_flows, ufid); if (!off_flow) { - ovs_mutex_unlock(&dev->mutex); - return -1; + error = "No such flow."; + goto exit; } + mark = off_flow->mark; hmap_remove(&dev->offloaded_flows, &off_flow->node); free(off_flow); +exit: ovs_mutex_unlock(&dev->mutex); - return 0; + + if (error || VLOG_IS_DBG_ENABLED()) { + struct ds ds = DS_EMPTY_INITIALIZER; + + ds_put_format(&ds, "%s: ", netdev_get_name(netdev)); + if (error) { + ds_put_cstr(&ds, "failed to "); + } + ds_put_cstr(&ds, "flow del: "); + odp_format_ufid(ufid, &ds); + if (error) { + ds_put_format(&ds, " error: %s", error); + } else { + ds_put_format(&ds, " mark: %"PRIu32, mark); + } + VLOG(error ? VLL_WARN : VLL_DBG, "%s", ds_cstr(&ds)); + ds_destroy(&ds); + } + + return error ? -1 : 0; } #define DUMMY_FLOW_OFFLOAD_API \ @@ -1636,7 +1675,28 @@ netdev_dummy_queue_packet(struct netdev_dummy *dummy, struct dp_packet *packet, } HMAP_FOR_EACH (data, node, &dummy->offloaded_flows) { if (flow_equal_except(flow, &data->match.flow, &data->match.wc)) { + dp_packet_set_flow_mark(packet, data->mark); + + if (VLOG_IS_DBG_ENABLED()) { + struct ds ds = DS_EMPTY_INITIALIZER; + + ds_put_format(&ds, "%s: packet: ", + netdev_get_name(&dummy->up)); + /* 'flow' does not contain proper port number here. + * Let's just clear it as it wildcarded anyway. */ + flow->in_port.ofp_port = 0; + flow_format(&ds, flow, NULL); + + ds_put_cstr(&ds, " matches with flow: "); + odp_format_ufid(&data->ufid, &ds); + ds_put_cstr(&ds, " "); + match_format(&data->match, NULL, &ds, OFP_DEFAULT_PRIORITY); + ds_put_format(&ds, " with mark: %"PRIu32, data->mark); + + VLOG_DBG("%s", ds_cstr(&ds)); + ds_destroy(&ds); + } break; } } From patchwork Wed Dec 26 08:50:44 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ilya Maximets X-Patchwork-Id: 1018616 X-Patchwork-Delegate: ian.stokes@intel.com 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=samsung.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=samsung.com header.i=@samsung.com header.b="Hi0r07Nr"; 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 43PmyL75JNz9s8J for ; Wed, 26 Dec 2018 19:55:22 +1100 (AEDT) Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id B84CDE8D; Wed, 26 Dec 2018 08:51:16 +0000 (UTC) X-Original-To: ovs-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 ADFE4A55 for ; Wed, 26 Dec 2018 08:51:15 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id 1B8411C0 for ; Wed, 26 Dec 2018 08:51:15 +0000 (UTC) Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20181226085113euoutp011a0ad7b10af1580088c6101190bfeba2~z1eRRVRkH0360703607euoutp01P for ; Wed, 26 Dec 2018 08:51:13 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20181226085113euoutp011a0ad7b10af1580088c6101190bfeba2~z1eRRVRkH0360703607euoutp01P DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1545814273; bh=dc89GEalWjYqNNeoWpAKOYkhBqPMK3jbd/pqHomdhbM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Hi0r07NrZuhfU2npAe5pqfSnxAwNaqkMMPVX+zLh/jXFbBw8zyBpN0xHuYdfP5a8c O6ENXUBJUkp/V47+pNnfc/i93h/SIDBPhusP+ktq2dSxCSRvtW6PR/MIWO2d0pU5zp c3YYD+MybkS/fFoWjztXe9Zh1bfdgAWSYygdsYpI= Received: from eusmges3new.samsung.com (unknown [203.254.199.245]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20181226085113eucas1p134223b5cc9a7194cd69cf4445a5b83e5~z1eQ5gtzK2602526025eucas1p1M; Wed, 26 Dec 2018 08:51:13 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges3new.samsung.com (EUCPMTA) with SMTP id A6.BD.04806.101432C5; Wed, 26 Dec 2018 08:51:13 +0000 (GMT) Received: from eusmtrp1.samsung.com (unknown [182.198.249.138]) by eucas1p1.samsung.com (KnoxPortal) with ESMTPA id 20181226085112eucas1p150342241b4428f8f547939ec2a24615b~z1eQQEqXw2603626036eucas1p1J; Wed, 26 Dec 2018 08:51:12 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eusmtrp1.samsung.com (KnoxPortal) with ESMTP id 20181226085112eusmtrp18524565307eb915f03a1513199e4a6c9~z1eQBKYQ73160831608eusmtrp1k; Wed, 26 Dec 2018 08:51:12 +0000 (GMT) X-AuditID: cbfec7f5-367ff700000012c6-c2-5c234101baa2 Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id 44.7B.04128.001432C5; Wed, 26 Dec 2018 08:51:12 +0000 (GMT) Received: from imaximets.rnd.samsung.ru (unknown [106.109.129.180]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20181226085111eusmtip2c35d6b14653ee9213c952e2672188833~z1ePb9nYK0920209202eusmtip2X; Wed, 26 Dec 2018 08:51:11 +0000 (GMT) From: Ilya Maximets To: ovs-dev@openvswitch.org, Ian Stokes Date: Wed, 26 Dec 2018 11:50:44 +0300 Message-Id: <20181226085044.9311-10-i.maximets@samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181226085044.9311-1-i.maximets@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFmpjleLIzCtJLcpLzFFi42LZduzneV1GR+UYg7nLmS22TJvManGl/Se7 xcaHZ1kt1h76wG4xacoJRou5n54zWtye42Xx9OIvZgcOj8V7XjJ5PJt+GEjc/M/o8X7fVTaP vi2rGD3+N19lDWCL4rJJSc3JLEst0rdL4Mr4+f0ia8FzpYpNXzqYGxgvy3YxcnJICJhIfLl9 nq2LkYtDSGAFo0TP48OsEM4XRomlN9awQzifGSVeXF7ADNNyv/EuVNVyRolfd2YyQTg/GCWu N+5gBaliE9CROLX6CCOILSJgJzFtVRNYEbPAO0aJ+yfuMIEkhAWCJR5O/s0GYrMIqEq8+nsX bAWvgLXErO2/WSDWyUus3nAALM4JFD/9tIcRZJCEwG82iTdve9khilwkpl/pZ4WwhSVeHd8C FZeROD25B2pQvcT9lpdQzR2MEtMP/WOCSNhLbHl9DqiBA+g8TYn1u/Qhwo4S/ddngIUlBPgk brwVBAkzA5mTtk1nhgjzSnS0CUFUq0j8PrgcGkJSEjfffYbq9JC4uFQMEj59jBK3Z/xmncAo Pwth1wJGxlWM4qmlxbnpqcXGeanlesWJucWleel6yfm5mxiBqeP0v+NfdzDu+5N0iFGAg1GJ h/eHj1KMEGtiWXFl7iFGCQ5mJRFez89AId6UxMqq1KL8+KLSnNTiQ4zSHCxK4rzVDA+ihQTS E0tSs1NTC1KLYLJMHJxSDYwMqd7L5PXSeoItSp5p/i1knyekeadE6azS/+0R8gv4C/rtLjLe CqzPl1nX81VixaK4mz2ehdMnLucwWsm7Qv24h7P18e1sItnvcr+1RMTquu7yOTln0/yzet5r 0hPLV72cOfPHtRy7B7m7p1ld5pi9P3rJmX0T/p+5Z7nm0Na6m2xvmwo3vf+ixFKckWioxVxU nAgAIoZ+uBkDAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrBLMWRmVeSWpSXmKPExsVy+t/xe7oMjsoxBpu6hSy2TJvManGl/Se7 xcaHZ1kt1h76wG4xacoJRou5n54zWtye42Xx9OIvZgcOj8V7XjJ5PJt+GEjc/M/o8X7fVTaP vi2rGD3+N19lDWCL0rMpyi8tSVXIyC8usVWKNrQw0jO0tNAzMrHUMzQ2j7UyMlXSt7NJSc3J LEst0rdL0Mv4+f0ia8FzpYpNXzqYGxgvy3YxcnJICJhI3G+8y9rFyMUhJLCUUeLl0e1MEAkp iR+/LrBC2MISf651sUEUfWOUWNXZAVbEJqAjcWr1EUYQW0TAQWLz3cVgk5gFPjFKnHszmwUk ISwQKDHjyWOwIhYBVYlXf+8yg9i8AtYSs7b/ZoHYIC+xesMBsDgnUPz00x6weiEBK4k5Dzcw T2DkW8DIsIpRJLW0ODc9t9hIrzgxt7g0L10vOT93EyMwlLcd+7llB2PXu+BDjAIcjEo8vD98 lGKEWBPLiitzDzFKcDArifB6fgYK8aYkVlalFuXHF5XmpBYfYjQFOmois5Rocj4wzvJK4g1N Dc0tLA3Njc2NzSyUxHnPG1RGCQmkJ5akZqemFqQWwfQxcXBKNTD238+VOHVy59eb+fE37/hw sS2VZbjKFlFSYGCqftPZuGV5IHvwlvif0lz73dfJXBB4vv1PsvyiDR80lb7MnCUzd5rb6sOz U5YtaZr08PWbuykHfC5Y9DzNqeATVeap8nmjlyGQtqCowcrpjFzeB8sTPn3mXb3fXz6bVlhc kDHlkqyEyeTLS1SUWIozEg21mIuKEwEuMbbnewIAAA== X-CMS-MailID: 20181226085112eucas1p150342241b4428f8f547939ec2a24615b X-Msg-Generator: CA X-RootMTR: 20181226085112eucas1p150342241b4428f8f547939ec2a24615b X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20181226085112eucas1p150342241b4428f8f547939ec2a24615b References: <20181226085044.9311-1-i.maximets@samsung.com> X-Spam-Status: No, score=-7.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on smtp1.linux-foundation.org Cc: Shahaf Shuler , Flavio Leitner , Ilya Maximets Subject: [ovs-dev] [PATCH v3 9/9] dpif-netdev.at: Add basic test for partial HW offloading. 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: , MIME-Version: 1.0 Sender: ovs-dev-bounces@openvswitch.org Errors-To: ovs-dev-bounces@openvswitch.org Simple test for basic partial HWOL functionality. Signed-off-by: Ilya Maximets --- tests/dpif-netdev.at | 74 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/tests/dpif-netdev.at b/tests/dpif-netdev.at index 6915d43ba..8b30a9573 100644 --- a/tests/dpif-netdev.at +++ b/tests/dpif-netdev.at @@ -34,6 +34,18 @@ filter_flow_install () { grep 'flow_add' | sed 's/.*flow_add: //' | sort | uniq } +filter_hw_flow_install () { + grep 'netdev_dummy.*flow put\[create\]' | sed 's/.*|DBG|//' | sort | uniq +} + +filter_hw_flow_del () { + grep 'netdev_dummy.*flow del' | sed 's/.*|DBG|//' | sort | uniq +} + +filter_hw_packet_netdev_dummy () { + grep 'netdev_dummy.*: packet:' | sed 's/.*|DBG|//' | sort | uniq +} + filter_flow_dump () { grep 'flow_dump ' | sed ' s/.*flow_dump // @@ -346,3 +358,65 @@ recirc_id(0),in_port(8),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(frag=no), a OVS_VSWITCHD_STOP AT_CLEANUP + +m4_define([DPIF_NETDEV_FLOW_HW_OFFLOAD], + [AT_SETUP([dpif-netdev - partial hw offload - $1]) + AT_SKIP_IF([test "$IS_WIN32" = "yes" || test "$IS_BSD" = "yes"]) + OVS_VSWITCHD_START( + [add-port br0 p1 -- set interface p1 type=$1 ofport_request=1 options:pstream=punix:$OVS_RUNDIR/p1.sock -- \ + set bridge br0 datapath-type=dummy \ + other-config:datapath-id=1234 fail-mode=secure], [], [], + [m4_if([$1], [dummy-pmd], [--dummy-numa="0,0,0,0,1,1,1,1"], [])]) + AT_CHECK([ovs-appctl vlog/set dpif:file:dbg dpif_netdev:file:dbg netdev_dummy:file:dbg]) + + AT_CHECK([ovs-vsctl set Open_vSwitch . other_config:hw-offload=true]) + OVS_WAIT_UNTIL([grep "netdev: Flow API Enabled" ovs-vswitchd.log]) + + AT_CHECK([ovs-ofctl del-flows br0]) + AT_CHECK([ovs-ofctl add-flow br0 in_port=1,actions=IN_PORT]) + + packet="packet_type(ns=0,id=0),eth(src=00:06:07:08:09:0a,dst=00:01:02:03:04:05),eth_type(0x0800),ipv4(src=127.0.0.1,dst=127.0.0.1,proto=0,tos=0,ttl=64,frag=no)" + AT_CHECK([ovs-appctl netdev-dummy/receive p1 $packet --len 64], [0]) + + OVS_WAIT_UNTIL([grep "miss upcall" ovs-vswitchd.log]) + AT_CHECK([grep -A 1 'miss upcall' ovs-vswitchd.log | tail -n 1], [0], [dnl +skb_priority(0),skb_mark(0),ct_state(0),ct_zone(0),ct_mark(0),ct_label(0),recirc_id(0),dp_hash(0),in_port(1),packet_type(ns=0,id=0),eth(src=00:06:07:08:09:0a,dst=00:01:02:03:04:05),eth_type(0x0800),ipv4(src=127.0.0.1,dst=127.0.0.1,proto=0,tos=0,ttl=64,frag=no) +]) + # Check that flow successfully offloaded. + OVS_WAIT_UNTIL([grep "succeed to add netdev flow" ovs-vswitchd.log]) + AT_CHECK([filter_hw_flow_install < ovs-vswitchd.log | strip_xout], [0], [dnl +p1: flow put[[create]]: flow match: recirc_id=0,eth,ip,in_port=1,vlan_tci=0x0000,nw_frag=no, mark: 0 +]) + # Check that datapath flow installed successfully. + AT_CHECK([filter_flow_install < ovs-vswitchd.log | strip_xout], [0], [dnl +recirc_id(0),in_port(1),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(frag=no), actions: +]) + # Inject the same packet again. + AT_CHECK([ovs-appctl netdev-dummy/receive p1 $packet --len 64], [0]) + + # Check for succesfull packet matching with installed offloaded flow. + AT_CHECK([filter_hw_packet_netdev_dummy < ovs-vswitchd.log | strip_xout], [0], [dnl +p1: packet: ip,vlan_tci=0x0000,dl_src=00:06:07:08:09:0a,dl_dst=00:01:02:03:04:05,nw_src=127.0.0.1,nw_dst=127.0.0.1,nw_proto=0,nw_tos=0,nw_ecn=0,nw_ttl=64 matches with flow: recirc_id=0,eth,ip,vlan_tci=0x0000,nw_frag=no with mark: 0 +]) + + ovs-appctl revalidator/wait + # Dump the datapath flow to see that actions was executed for a packet. + AT_CHECK([ovs-appctl dpif/dump-flows br0 | strip_timers], [0], [dnl +recirc_id(0),in_port(1),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(frag=no), packets:1, bytes:64, used:0.0s, actions:1 +]) + + # Wait for datapath flow expiration. + ovs-appctl time/stop + ovs-appctl time/warp 15000 + ovs-appctl revalidator/wait + + # Check that flow successfully deleted from HW. + OVS_WAIT_UNTIL([grep "succeed to delete netdev flow" ovs-vswitchd.log]) + AT_CHECK([filter_hw_flow_del < ovs-vswitchd.log | strip_xout], [0], [dnl +p1: flow del: mark: 0 +]) + OVS_VSWITCHD_STOP + AT_CLEANUP]) + +DPIF_NETDEV_FLOW_HW_OFFLOAD([dummy]) +DPIF_NETDEV_FLOW_HW_OFFLOAD([dummy-pmd])