From patchwork Tue Jul 7 03:11:05 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: William Tu X-Patchwork-Id: 1324058 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=openvswitch.org (client-ip=140.211.166.137; helo=fraxinus.osuosl.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=KK2Ru2Be; dkim-atps=neutral Received: from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4B16t93yWdz9sRN for ; Tue, 7 Jul 2020 13:12:00 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id E5B028705C; Tue, 7 Jul 2020 03:11:57 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id IJZAXkosB-bO; Tue, 7 Jul 2020 03:11:55 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by fraxinus.osuosl.org (Postfix) with ESMTP id BBD3086214; Tue, 7 Jul 2020 03:11:55 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 9C96BC0893; Tue, 7 Jul 2020 03:11:55 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@lists.linuxfoundation.org Received: from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136]) by lists.linuxfoundation.org (Postfix) with ESMTP id D0520C016F for ; Tue, 7 Jul 2020 03:11:54 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id B44D922795 for ; Tue, 7 Jul 2020 03:11:54 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from silver.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id xHf7PG+5hG4N for ; Tue, 7 Jul 2020 03:11:54 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail-pf1-f193.google.com (mail-pf1-f193.google.com [209.85.210.193]) by silver.osuosl.org (Postfix) with ESMTPS id 268AB2277A for ; Tue, 7 Jul 2020 03:11:54 +0000 (UTC) Received: by mail-pf1-f193.google.com with SMTP id q17so17800383pfu.8 for ; Mon, 06 Jul 2020 20:11:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=9AcUU3uQDmmUobOM1t8eTHypMdjjL9ahUlVI6CFClwc=; b=KK2Ru2Bexba9+AsBorijn8A97ZDlTLYgpzQ0JEFkRYW6+JifR4XXavHANxJ9d8txe0 SqSXzOkfoJOU/6bnonXeAz9wZTnBngH6756GCSLSX9b6/zDLIlTYEOXzbE6QBWYBW280 zwMHBfSFLT25ZGIBh1vh0y9iXxI2RuTIvT8vw0MrBxQMTVTQYowxA8aKEGD/AGwKcgej v5FGAo9SgRLB93ZhXyWc122nLLKx1zI5StOX5SqXjlYEyOwRN9JAHf3Wn51ENzPP8LHc BtXXxDHpLL9mXM1LkKtbSlkSJb7xvQl4REI9jGXLO4kgPKPuKZgZnmrri454v8yPQNf2 w46w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=9AcUU3uQDmmUobOM1t8eTHypMdjjL9ahUlVI6CFClwc=; b=NuKAlzNucAiAbVFibH4wMjlOKpA2QoHZC16u7puhsGlZIFWnhgT7qRHk79FiS+ILmB ip6bBqXqt9KUSqAOoUaSleHg8qx2DU6p+zV+EZpuGmDSctojwv+eRwE/rZvbZFF8FhwP 1l1/a5uF27zjWbWDawvyUWEM89X4gVVwwClavZ12SkIDvdxTy5YHlOYQW3fOCBJbfwq5 dkwpL3J3w7NlAbsCs3ItWNq410BAZhYSCCKBANZerbYnR0II+Oj7g2ZpOn9dMIe+FRlR 6rd1mUYiR6FxfQkl24JBQa5y20WOxkziESyLVyZUPIsS3bZTWATzP+mzbIdhB/9OzSXz wvUA== X-Gm-Message-State: AOAM531Ox/XcsLfpZLjlNyZVi+2md5IPSMsp1fVNMIZjhtiRRvNNcNz4 3zMGUQ4B3SbWYK1L+tyKcakeqUcTKEA= X-Google-Smtp-Source: ABdhPJxcm4zoIa9S/5m0S9pOuo8e8+tA3zHCeb685EiWpDX3twS8c6+onruclVXbk37YK+nVyB05WQ== X-Received: by 2002:a63:5a54:: with SMTP id k20mr42236668pgm.226.1594091513393; Mon, 06 Jul 2020 20:11:53 -0700 (PDT) Received: from sc9-mailhost3.vmware.com (c-76-21-95-192.hsd1.ca.comcast.net. [76.21.95.192]) by smtp.gmail.com with ESMTPSA id r191sm3944405pfr.181.2020.07.06.20.11.52 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 06 Jul 2020 20:11:52 -0700 (PDT) From: William Tu To: dev@openvswitch.org Date: Mon, 6 Jul 2020 20:11:05 -0700 Message-Id: <1594091466-31946-1-git-send-email-u9012063@gmail.com> X-Mailer: git-send-email 2.7.4 Cc: simon.horman@netronome.com Subject: [ovs-dev] [PATCHv3] netdev-offload-tc: Add drop action support. X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: ovs-dev-bounces@openvswitch.org Sender: "dev" Currently drop action is not offloaded when using userspace datapath with tc offload. The patch programs tc gact (generic action) chain ID 0 to drop the packet by setting it to TC_ACT_SHOT. Example: $ ovs-appctl dpctl/add-flow netdev@ovs-netdev \ 'recirc_id(0),in_port(2),eth(),eth_type(0x0806),\ arp(op=2,tha=00:50:56:e1:4b:ab,tip=10.255.1.116)' drop Or no action also infers drop $ ovs-appctl dpctl/add-flow netdev@ovs-netdev \ 'recirc_id(0),in_port(2),eth(),eth_type(0x0806),\ arp(op=2,tha=00:50:56:e1:4b:ab,tip=10.255.1.116)' '' $ tc filter show dev ovs-p0 ingress filter protocol arp pref 2 flower chain 0 filter protocol arp pref 2 flower chain 0 handle 0x1 eth_type arp arp_tip 10.255.1.116 arp_op reply arp_tha 00:50:56:e1:4b:ab skip_hw not_in_hw action order 1: gact action drop ... Signed-off-by: William Tu Acked-by: Tonghao Zhang --- v3: remove redundant check for no action at nl_msg_put_flower_acts --- lib/netdev-offload-tc.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/netdev-offload-tc.c b/lib/netdev-offload-tc.c index 258d31f54b08..e50e00f23ccb 100644 --- a/lib/netdev-offload-tc.c +++ b/lib/netdev-offload-tc.c @@ -1788,6 +1788,10 @@ netdev_tc_flow_put(struct netdev *netdev, struct match *match, action->chain = nl_attr_get_u32(nla); flower.action_count++; recirc_act = true; + } else if (nl_attr_type(nla) == OVS_ACTION_ATTR_DROP) { + action->type = TC_ACT_GOTO; + action->chain = 0; /* 0 is reserved and not used by recirc. */ + flower.action_count++; } else { VLOG_DBG_RL(&rl, "unsupported put action type: %d", nl_attr_type(nla));