From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.6 required=3.0 tests=DATE_IN_PAST_24_48, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 684A8C43381 for ; Wed, 27 Feb 2019 12:46:21 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 300F82075B for ; Wed, 27 Feb 2019 12:46:21 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="nHc2AU1A" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730269AbfB0MqU (ORCPT ); Wed, 27 Feb 2019 07:46:20 -0500 Received: from mail-pf1-f195.google.com ([209.85.210.195]:42682 "EHLO mail-pf1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730201AbfB0MqT (ORCPT ); Wed, 27 Feb 2019 07:46:19 -0500 Received: by mail-pf1-f195.google.com with SMTP id n74so7970374pfi.9 for ; Wed, 27 Feb 2019 04:46:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=pN/7nu6zdPOkbdxhsiTINiIY6N6Pt+OM+d3dwjgT230=; b=nHc2AU1A71hgWpzS6SEXSWuqN2r1tx8ixm+jy5P6ABRqlvnbgy6qOjgbPquaxEdDtS DU+KBqonZLInMbquRMg0NjeHP+wuW1dQtYaBQsnaVZWa13AXV65v+D54FAwGzuihcBJi zCoE7VkQRmAP6bpz2os+fZga524gk6CxG6tMaFO9Op8x/8Ba/texsGmH7Ejltf+av8l1 ZEKSDU8Rx+rk5vwwgWqIc9IcUTW+MI/9bX1BZdOVyOoD1f5hpfDe4bt4Fl1soPxN8+h3 Of6ngCmD4ngQT2+wioHGeKZ7K7aKavEVtF7ChzxJXYhgbwn4kAIYzjPl21d1JL6kmGet h5DQ== 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:in-reply-to :references; bh=pN/7nu6zdPOkbdxhsiTINiIY6N6Pt+OM+d3dwjgT230=; b=QBwVTNeDJwp1fIboMRY2twd9wFdVB8ms2gZCos/XekLS/ZghMdqlrIiYgW6oGyynp8 wsbnlsZ8eWsUc95u0VVaBMJXbl6X0AcOjkWy77n2/hbhPLgMEz+J3V4I5nx219FSYNTn e4hd/3xRlYvW/EzLaMZC9R4lAKWdvyyKTH9dzfpCVLcWi4l4g8HnMz6oC26nfyWlCvyE /qwY8jY5wlPOPDJwqpScYc/nLSS/7sNihKwYoFmXQ6thAxyY+uOMWZyY4AdCaY0OJVf4 ZCsAnCqIIxb7nVWtYskZ9fbyO9WKDm8KrafS8yUcs01C/PmhF+Rd7DRMf6ty9tBDHJdx Z3YA== X-Gm-Message-State: AHQUAubTChg+q5EedBbne5TcEqSjcOo0PWlI52BujupUmZCZloLN11ne lJUV6qPyIOXRX8GvQvZA/ME= X-Google-Smtp-Source: AHgI3IbzjA8J16lhciVU6n48WIF5ljraajphneXmhoco/+oNWNxRxia+cYCAB0cFK8n3uwq80PPlIA== X-Received: by 2002:aa7:8186:: with SMTP id g6mr1497994pfi.138.1551271579190; Wed, 27 Feb 2019 04:46:19 -0800 (PST) Received: from local.opencloud.tech.localdomain ([203.100.54.194]) by smtp.gmail.com with ESMTPSA id q18sm18871238pgv.9.2019.02.27.04.46.16 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 27 Feb 2019 04:46:18 -0800 (PST) From: xiangxia.m.yue@gmail.com To: saeedm@mellanox.com, gerlitz.or@gmail.com, roid@mellanox.com Cc: netdev@vger.kernel.org, Tonghao Zhang Subject: [PATCH net-next v3 4/4] net/mlx5e: Return -EOPNOTSUPP when attempting to offload an unsupported action Date: Tue, 26 Feb 2019 04:27:43 -0800 Message-Id: <1551184063-40628-5-git-send-email-xiangxia.m.yue@gmail.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1551184063-40628-1-git-send-email-xiangxia.m.yue@gmail.com> References: <1551184063-40628-1-git-send-email-xiangxia.m.yue@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Tonghao Zhang * Now the encapsulation is not supported for mlx5 VFs. When we try to offload that action, the -EINVAL is returned, but not -EOPNOTSUPP. This patch changes the returned value and ignore to confuse user. The command is shown as below [1]. * When max modify header action is zero, we return -EOPNOTSUPP directly. In this way, we can ignore wrong message info (e.g. "mlx5: parsed 0 pedit actions, can't do more"). This happens when offloading pedit actions on mlx(cx4) VFs. The command is shown as below [2]. For example: (p2p1_0 is VF net device) [1] $ tc filter add dev p2p1_0 protocol ip parent ffff: prio 1 flower skip_sw \ src_mac e4:11:22:33:44:01 \ action tunnel_key set \ src_ip 1.1.1.100 \ dst_ip 1.1.1.200 \ dst_port 4789 id 100 \ action mirred egress redirect dev vxlan0 [2] $ tc filter add dev p2p1_0 parent ffff: protocol ip prio 1 \ flower skip_sw dst_mac 00:10:56:fb:64:e8 \ dst_ip 1.1.1.100 src_ip 1.1.1.200 \ action pedit ex munge eth src set 00:10:56:b4:5d:20 Signed-off-by: Tonghao Zhang --- drivers/net/ethernet/mellanox/mlx5/core/en_tc.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c index 56ac50d..3a02b22 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c @@ -2035,7 +2035,7 @@ static int parse_tc_pedit_action(struct mlx5e_priv *priv, struct netlink_ext_ack *extack) { u8 cmd = (act->id == FLOW_ACTION_MANGLE) ? 0 : 1; - int err = -EOPNOTSUPP; + int max_actions, err = -EOPNOTSUPP; u32 mask, val, offset; u8 htype; @@ -2047,6 +2047,17 @@ static int parse_tc_pedit_action(struct mlx5e_priv *priv, goto out_err; } + if (namespace == MLX5_FLOW_NAMESPACE_FDB) /* FDB offloading */ + max_actions = MLX5_CAP_ESW_FLOWTABLE_FDB(priv->mdev, max_modify_header_actions); + else /* namespace is MLX5_FLOW_NAMESPACE_KERNEL - NIC offloading */ + max_actions = MLX5_CAP_FLOWTABLE_NIC_RX(priv->mdev, max_modify_header_actions); + + if (!max_actions) { + NL_SET_ERR_MSG_MOD(extack, + "don't support pedit actions, can't offload"); + goto out_err; + } + mask = act->mangle.mask; val = act->mangle.val; offset = act->mangle.offset; @@ -2294,7 +2305,8 @@ static int parse_tc_nic_actions(struct mlx5e_priv *priv, } break; default: - return -EINVAL; + NL_SET_ERR_MSG_MOD(extack, "The offload action is not supported"); + return -EOPNOTSUPP; } } @@ -2616,7 +2628,8 @@ static int parse_tc_fdb_actions(struct mlx5e_priv *priv, break; } default: - return -EINVAL; + NL_SET_ERR_MSG_MOD(extack, "The offload action is not supported"); + return -EOPNOTSUPP; } } -- 1.8.3.1