From patchwork Mon Feb 18 16:00:24 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ilya Maximets X-Patchwork-Id: 1044145 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="XOwti7HS"; 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 4437yS0wHjz9s1l for ; Tue, 19 Feb 2019 03:06:08 +1100 (AEDT) Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id 9E61D1705; Mon, 18 Feb 2019 16:02: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 D82A91669 for ; Mon, 18 Feb 2019 16:01:16 +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 4FBB5F8 for ; Mon, 18 Feb 2019 16:01:16 +0000 (UTC) Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20190218160114euoutp011cee42fc178ed64d6b8ac325d4876a48~EgLJG7-GQ2991329913euoutp01Z for ; Mon, 18 Feb 2019 16:01:14 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20190218160114euoutp011cee42fc178ed64d6b8ac325d4876a48~EgLJG7-GQ2991329913euoutp01Z DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1550505674; bh=hh8tfOqBxX/8z+J5T0usOT+qycsLscAuCHyfq+9aaoU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=XOwti7HSlDeS5pl8kjB/RACfy5BjAr+63EsTGdGNO6Hkszhe6KW3cfCNiCoO8qjeE co5ZXVxUwl9dROn4ANvY7ShIGCNehXPmd/3/oOuCb60iU/UYIOeNkaTjniXZRKZpUz FPWdVlNNcetSomUxv6r202UlWCyyk57jDcMu0bug= Received: from eusmges1new.samsung.com (unknown [203.254.199.242]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20190218160114eucas1p217d2c3fa2a315033e17a7ba4ece3e250~EgLIajIXw2967129671eucas1p2h; Mon, 18 Feb 2019 16:01:14 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges1new.samsung.com (EUCPMTA) with SMTP id F5.17.04441.9C6DA6C5; Mon, 18 Feb 2019 16:01:13 +0000 (GMT) Received: from eusmtrp1.samsung.com (unknown [182.198.249.138]) by eucas1p1.samsung.com (KnoxPortal) with ESMTPA id 20190218160113eucas1p1c1b189b3a17c2ef0b0f8ac34295e8bab~EgLHuztNl0200302003eucas1p13; Mon, 18 Feb 2019 16:01:13 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eusmtrp1.samsung.com (KnoxPortal) with ESMTP id 20190218160113eusmtrp13a6cf997fe95f87858650113539307f9~EgLHgcokg1433714337eusmtrp1D; Mon, 18 Feb 2019 16:01:13 +0000 (GMT) X-AuditID: cbfec7f2-5c9ff70000001159-0d-5c6ad6c96774 Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id 5A.37.04284.9C6DA6C5; Mon, 18 Feb 2019 16:01:13 +0000 (GMT) Received: from imaximets.rnd.samsung.ru (unknown [106.109.129.180]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20190218160112eusmtip272d6526cc8a86cd26eb9bc5428ff560b~EgLGbUeVC0380303803eusmtip2s; Mon, 18 Feb 2019 16:01:11 +0000 (GMT) From: Ilya Maximets To: ovs-dev@openvswitch.org, Ian Stokes Date: Mon, 18 Feb 2019 19:00:24 +0300 Message-Id: <20190218160025.29904-9-i.maximets@samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190218160025.29904-1-i.maximets@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFupjleLIzCtJLcpLzFFi42LZduzned2T17JiDF5PMLb4sG0ii8WWaZNZ LV4tOs9scaX9J7vFxodnWS3WHvrAbjFpyglGi7mfnjNa/Nm2ntGB02PxnpdMHs+mH2byuLH9 NKvHs5v/GT3e77vK5tG3ZRWjx//mq6wB7FFcNimpOZllqUX6dglcGSePv2Aq2KpYsaGpna2B cYt4FyMnh4SAicT6WT1MXYxcHEICKxglPl3cxAKSEBL4wijR1lAAkfjMKHFyy3+gBAdYx61d 3hDx5YwSp/f+ZoNwfjBK/H/whBmkm01AR+LU6iOMILaIgJ3EtFVNYCuYBdqYJLZuXws2SVjA XeLYrwKQGhYBVYnvE36ygdi8AtYS06f+ZoE4T15i9YYDYDM5BWwk1uy8wwgRn8wu8Wi9KoTt IrFnzzJmCFtY4tXxLewQtozE6ck9UHPqJe63vGQEuUFCoINRYvqhf0wQCXuJLa/PsYPcwyyg KbF+lz5E2FFi7vS3bBAP80nceCsIEmYGMidtm84MEeaV6GgTgqhWkfh9cDnUBVISN999hrrA Q+LNplZ2SPD0M0q8XDyLeQKj/CyEZQsYGVcxiqeWFuempxYb5qWW6xUn5haX5qXrJefnbmIE ppLT/45/2sH49VLSIUYBDkYlHt4Fy7NihFgTy4orcw8xSnAwK4nwHjkKFOJNSaysSi3Kjy8q zUktPsQozcGiJM5bzfAgWkggPbEkNTs1tSC1CCbLxMEp1cBYa55sYPH4bNgp7p/PEyUiA2rT G/3Vr8nPUSv50aNcy2Mo7bnIUJO/ko9ZImLnVp/7c41e/K+TVsnY4l6omTlDLF9/K8OdO10G i+8sOfZkmkkAi3JDfsasyzFFfuLhzdfW/qx2lGt/m72m39Jm0QTHk6tNLgYU1tfqcLN5L87X iaoQjSh5q8RSnJFoqMVcVJwIAMKrX70hAwAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrILMWRmVeSWpSXmKPExsVy+t/xe7onr2XFGHS/Y7f4sG0ii8WWaZNZ LV4tOs9scaX9J7vFxodnWS3WHvrAbjFpyglGi7mfnjNa/Nm2ntGB02PxnpdMHs+mH2byuLH9 NKvHs5v/GT3e77vK5tG3ZRWjx//mq6wB7FF6NkX5pSWpChn5xSW2StGGFkZ6hpYWekYmlnqG xuaxVkamSvp2NimpOZllqUX6dgl6GSePv2Aq2KpYsaGpna2BcYt4FyMHh4SAicStXd5djFwc QgJLGSWunZnP3sXICRSXkvjx6wIrhC0s8edaFxtE0TdGiRlv37GAJNgEdCROrT7CCGKLCDhI bL67mBWkiFmgh0niVNtZZpANwgLuEsd+FYDUsAioSnyf8JMNxOYVsJaYPvU3C8QCeYnVGw4w g9icAjYSa3beAZspBFTT//o58wRGvgWMDKsYRVJLi3PTc4sN9YoTc4tL89L1kvNzNzECg3vb sZ+bdzBe2hh8iFGAg1GJh3fB8qwYIdbEsuLK3EOMEhzMSiK8R44ChXhTEiurUovy44tKc1KL DzGaAh01kVlKNDkfGHl5JfGGpobmFpaG5sbmxmYWSuK85w0qo4QE0hNLUrNTUwtSi2D6mDg4 pRoYreRq7/UvubqpeMLVie1zjB8djmc3ST02NViE9+cigVt6QtHyJtv9D2svkU5nUKkq3Wm7 Sbla4ojk+dP/nHYpXOEJvuvC/fTk7M/7O48ey3kkqKPwLDv/7gcOk0MXgmruiu6t0nCtO2h7 78Hzmpynk9XqPW47x+clfWe2f8KxlT1Xk0VH7NtCJZbijERDLeai4kQAZVb5iYQCAAA= X-CMS-MailID: 20190218160113eucas1p1c1b189b3a17c2ef0b0f8ac34295e8bab X-Msg-Generator: CA X-RootMTR: 20190218160113eucas1p1c1b189b3a17c2ef0b0f8ac34295e8bab X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20190218160113eucas1p1c1b189b3a17c2ef0b0f8ac34295e8bab References: <20190218160025.29904-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: Roni Bar Yanai , Flavio Leitner , Ilya Maximets Subject: [ovs-dev] [PATCH v5 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 Acked-by: Flavio Leitner --- 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; } }