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=-7.8 required=3.0 tests=DATE_IN_PAST_06_12, 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 708C9C43381 for ; Thu, 21 Feb 2019 13:42:32 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 3BE882084F for ; Thu, 21 Feb 2019 13:42:32 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="leoukShb" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728105AbfBUNmb (ORCPT ); Thu, 21 Feb 2019 08:42:31 -0500 Received: from mail-pl1-f195.google.com ([209.85.214.195]:45492 "EHLO mail-pl1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725991AbfBUNma (ORCPT ); Thu, 21 Feb 2019 08:42:30 -0500 Received: by mail-pl1-f195.google.com with SMTP id r14so14201084pls.12 for ; Thu, 21 Feb 2019 05:42:29 -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; bh=AUlWa9FoNeZjfHOPdayDZ3ELIRDaZU/99VW/g5UF+z8=; b=leoukShbhdXY/3lFKWccR33MpXWbHv4jvNK243YoRvRDQvRZqhu9VD7qDThT2P2dDz npTRYsGliK+uwLQTzmvi9DPQBUX7K7WWVD6B8GKrVTm2OU+7r62BPWg5FyU/9bmYejWo oShJ/5Ho9geuu0gttdkt9Am7mbJjaCEdy97u51H3t6wrlT7MC7aeDm+VhwAbkBgQC1RE 3+J3fCkykdW9VxwMSHLRyZWuGumSzV6XiL+/9IxtjVB9khiey67fsjhs9vYTN08RupYg DK5w42t7Mk7zWNsujsZM19d51fkhTGTgfWw0m1PKsqh5jiKqCdyBWCzmjHEFR/Es64u0 tjrA== 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=AUlWa9FoNeZjfHOPdayDZ3ELIRDaZU/99VW/g5UF+z8=; b=VVMkZjVBQ37ILnfOfx9XsUb+uwY+VVBkjxxNL6ye8j4VOioH/zPQUbbmGnENK8tO3+ ar0yyiCs2RYjHdALALi0czr41P4mI0wD6GXK1ufOVFqhAJkkEfzTJ6QAb6REAOx3AAEt D93ih6TOYpHeBOIKAoc+lh0q/YOeB7Q1yI65mvZ/WKpuCyWwqJ6YFzPgOLnrX4hkSEHW gKtxxa0JZkR9o814+d2ZGL2Dr/4mgILwShf38LqpE3LHTD9nXewbzI48J9V5sAgc+XlH MxM6S66CDO4tfqc+Qk3XFnBpxmkfbWU2Q2p+61aKC2bzaSq3OMLhBc3LmqixG+ZX5/1r 2Xzw== X-Gm-Message-State: AHQUAuYWwSzF7iFDW4tVhEgbWPBpdnfBLIPxoIH16Mly38qd7pWYpQDb r0fuaAcCoTlSeVqqWmRhQ2g= X-Google-Smtp-Source: AHgI3IZzrCiTMU6jXIHwhxOA11DZHJe3fWXviXqHpjkNtorYMKRgva0UnorNwRnizcwzofTN2W5UaQ== X-Received: by 2002:a17:902:a7:: with SMTP id a36mr42537029pla.295.1550756549506; Thu, 21 Feb 2019 05:42:29 -0800 (PST) Received: from local.opencloud.tech.localdomain ([203.100.54.194]) by smtp.gmail.com with ESMTPSA id n4sm5265970pfh.8.2019.02.21.05.42.27 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 21 Feb 2019 05:42:28 -0800 (PST) From: xiangxia.m.yue@gmail.com To: saeedm@mellanox.com, gerlitz.or@gmail.com Cc: netdev@vger.kernel.org, Tonghao Zhang Subject: [PATCH net-next 1/5] net/mlx5e: Return -EOPNOTSUPP when modify header action zero Date: Wed, 20 Feb 2019 18:14:39 -0800 Message-Id: <1550715283-23579-1-git-send-email-xiangxia.m.yue@gmail.com> X-Mailer: git-send-email 1.8.3.1 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Tonghao Zhang 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 VFs. For example: $ tc filter add dev mlx_vfs 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 | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c index b38986e..c4359f1 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c @@ -2002,7 +2002,8 @@ static int offload_pedit_fields(struct pedit_headers_action *hdrs, static int alloc_mod_hdr_actions(struct mlx5e_priv *priv, struct pedit_headers_action *hdrs, int namespace, - struct mlx5e_tc_flow_parse_attr *parse_attr) + struct mlx5e_tc_flow_parse_attr *parse_attr, + struct netlink_ext_ack *extack) { int nkeys, action_size, max_actions; @@ -2015,6 +2016,13 @@ static int alloc_mod_hdr_actions(struct mlx5e_priv *priv, 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"); + netdev_warn(priv->netdev, "don't support pedit actions, can't offload\n"); + return -EOPNOTSUPP; + } + /* can get up to crazingly 16 HW actions in 32 bits pedit SW key */ max_actions = min(max_actions, nkeys * 16); @@ -2072,7 +2080,8 @@ static int alloc_tc_pedit_action(struct mlx5e_priv *priv, int namespace, u8 cmd; if (!parse_attr->mod_hdr_actions) { - err = alloc_mod_hdr_actions(priv, hdrs, namespace, parse_attr); + err = alloc_mod_hdr_actions(priv, hdrs, + namespace, parse_attr, extack); if (err) goto out_err; } -- 1.8.3.1