Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp493828ybl; Tue, 28 Jan 2020 06:50:06 -0800 (PST) X-Google-Smtp-Source: APXvYqxrK+q4OUIhllZzXKHNGMHPRvwx4YQfvdjiaDaTPx4EipAdoVICTia8s+7uFZfhXjajSfL4 X-Received: by 2002:a05:6830:10d5:: with SMTP id z21mr17446211oto.30.1580223006056; Tue, 28 Jan 2020 06:50:06 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1580223006; cv=none; d=google.com; s=arc-20160816; b=J0KnoZLZYzQD18TbKtq9ZdLlyIuenzrbHaSoc0hkYsxyDkh0V0lAGX9sI8rPto6yiq LwTnCzKTSA29jCNrPySSUvFWKbhW7zfokZ8UV+SWZlVlYHIjlzVfaF2E7W/G9zIbIzz9 zgmYOw2iApXhfy3xWp9uQYMxihTNuLm6ljFDgJCeumNSwoVfIGzlpi101WHOugJtOEeq H+obdQOJkFCi/15cuOXW/OV/Mt1ExlJLg/4w7hsdDLaxWznM53/eswYH9QfRrCDeLv5r BWqgrtX1DqCYfRlygVuKTV0CaNy2L/zpyrMYkagBu5qHwdInt7cixQ6bYhFahD4Q2OOT b19A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=sFnOxasARu7hYkAJi/AJQ5wAEv09twAex665k0gScaU=; b=oOw7a5TyiSs8Em2W7opX+bCSlep9iUuqTfvKGIxHRu8JQoHlEYI+FHfYEnshUMiMRj BeZRGRdVi0SPlOh+8WfbLAV9BnVraOy6q4xBGOmn0HdnxLlsWCYaaXWULME9cXSlvr6A SSSiiucn76zumGj0tviKIEvA45XDwuzrSFOfTrT1dnzl7svek8guXiDLFiZ2ywx6hpeV ixymDiKvLK7+zIYnYrCknFBvnFVDN8ut4eQH1eJ16UEMOuVRMxYx5k/OsjshHiARD8kM SGsgi3W9lhulm40+UWrAQ4m84Zo2zZ6sTZD5kGOZnnKX9xM05YuwexGgen+U9vgb012v 4fdg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=ZQWoWFWi; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d197si4560899oig.115.2020.01.28.06.49.53; Tue, 28 Jan 2020 06:50:06 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=ZQWoWFWi; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727557AbgA1OCG (ORCPT + 99 others); Tue, 28 Jan 2020 09:02:06 -0500 Received: from mail.kernel.org ([198.145.29.99]:48274 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727550AbgA1OCF (ORCPT ); Tue, 28 Jan 2020 09:02:05 -0500 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id E5799205F4; Tue, 28 Jan 2020 14:02:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1580220124; bh=4mTqcUWHS9yCc82Xc+8HHbgzuyY5H1RUR/J6Ui0wbis=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ZQWoWFWijj/UeosxLR44J09fesGE7Yf9WSRFWdvmzj9RIrQL0/EkM/USPcOgbsu4Q d9FtbqXpRkEmjUjaWmu2q2XcrOiL5rQUYCnQwee5HXa4EAqIWjp/3vMpgmdIcK9uz8 +nL/Z3wIj8kqPXIlet2ehW7d+F3gMRqmlIWFUFSs= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Hamdan Igbaria , Erez Shitrit , Alex Vesker , Saeed Mahameed Subject: [PATCH 5.4 026/104] net/mlx5: DR, Enable counter on non-fwd-dest objects Date: Tue, 28 Jan 2020 14:59:47 +0100 Message-Id: <20200128135820.878204926@linuxfoundation.org> X-Mailer: git-send-email 2.25.0 In-Reply-To: <20200128135817.238524998@linuxfoundation.org> References: <20200128135817.238524998@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Erez Shitrit commmit b850a82114df9b0ec1d191dc64eed1f20a772e0f upstream. The current code handles only counters that attached to dest, we still have the cases where we have counter on non-dest, like over drop etc. Fixes: 6a48faeeca10 ("net/mlx5: Add direct rule fs_cmd implementation") Signed-off-by: Hamdan Igbaria Signed-off-by: Erez Shitrit Reviewed-by: Alex Vesker Signed-off-by: Saeed Mahameed Signed-off-by: Greg Kroah-Hartman --- drivers/net/ethernet/mellanox/mlx5/core/steering/fs_dr.c | 42 ++++++++++----- 1 file changed, 29 insertions(+), 13 deletions(-) --- a/drivers/net/ethernet/mellanox/mlx5/core/steering/fs_dr.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/steering/fs_dr.c @@ -352,26 +352,16 @@ static int mlx5_cmd_dr_create_fte(struct if (fte->action.action & MLX5_FLOW_CONTEXT_ACTION_FWD_DEST) { list_for_each_entry(dst, &fte->node.children, node.list) { enum mlx5_flow_destination_type type = dst->dest_attr.type; - u32 id; if (num_actions == MLX5_FLOW_CONTEXT_ACTION_MAX) { err = -ENOSPC; goto free_actions; } - switch (type) { - case MLX5_FLOW_DESTINATION_TYPE_COUNTER: - id = dst->dest_attr.counter_id; + if (type == MLX5_FLOW_DESTINATION_TYPE_COUNTER) + continue; - tmp_action = - mlx5dr_action_create_flow_counter(id); - if (!tmp_action) { - err = -ENOMEM; - goto free_actions; - } - fs_dr_actions[fs_dr_num_actions++] = tmp_action; - actions[num_actions++] = tmp_action; - break; + switch (type) { case MLX5_FLOW_DESTINATION_TYPE_FLOW_TABLE: tmp_action = create_ft_action(dev, dst); if (!tmp_action) { @@ -397,6 +387,32 @@ static int mlx5_cmd_dr_create_fte(struct } } + if (fte->action.action & MLX5_FLOW_CONTEXT_ACTION_COUNT) { + list_for_each_entry(dst, &fte->node.children, node.list) { + u32 id; + + if (dst->dest_attr.type != + MLX5_FLOW_DESTINATION_TYPE_COUNTER) + continue; + + if (num_actions == MLX5_FLOW_CONTEXT_ACTION_MAX) { + err = -ENOSPC; + goto free_actions; + } + + id = dst->dest_attr.counter_id; + tmp_action = + mlx5dr_action_create_flow_counter(id); + if (!tmp_action) { + err = -ENOMEM; + goto free_actions; + } + + fs_dr_actions[fs_dr_num_actions++] = tmp_action; + actions[num_actions++] = tmp_action; + } + } + params.match_sz = match_sz; params.match_buf = (u64 *)fte->val;