Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp2658713pxj; Mon, 31 May 2021 07:36:06 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyj7Gu1Vokox9b/Ox79I7YmCoAE+PM8imZv/fYSG6jl9TvWweoLNWDY8wsCfdf4Jxuf8+UJ X-Received: by 2002:a17:906:488a:: with SMTP id v10mr15752434ejq.383.1622471766234; Mon, 31 May 2021 07:36:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1622471766; cv=none; d=google.com; s=arc-20160816; b=fzNzFQPL9x7VlPHLzz1Jy5Cz9pcHQXjWC5zM7X6xq6np6BMIEIdvVNKrwCAlnsf3Mw IZ5qt9UrGFJu13h60V3Xmz+4VZaN4RB/RA6rKto/GRNCDRV9rjkuO3Oa/3LSH6Q0yjLB VKUaL+nxVOXTXzF3kvmPK6R5TGg4Oy8xvXFl2H1+Sbhl/xqvskgBhJzmsQliDtDhNGBG ZTd+2iZWUbubc73v0zdlC1APx/eNpac1Bu9dHJaNCjhx9mTJfGYYeFbIEK61yM3a5zjw ipcCXry0wytL1tZE/O+ribmfZDJW1+7CdhkV3HxPSx9os6gNduyd2kZwi4t1NocbmQEt mswg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=j4aPgj3HzDnSQaLulWMDMbXJDDCtHmE/6tE9pNxcq/8=; b=mnfEfCwD51aXbKclF3zF4mTAt3eEGEzZgiCe6ZDlbXil1gUSJdxEV6lssC+PwNV+cb lCQGm/mFWY/BlmwSEGpw28gdwZA1I+w+f8LuDNK793ULy7p3/DqNJv8/L6lMCESRR05Y JPsWhmuTMxSnhaPLBSVsytCO2E3veQynQOg1QscsguJ1DoPPqAgX1zW1fEvGfjBPuL3d FgNfECTt6tzGnETpKWddouVOPU2Hsq/9qeDr7vxILMpM6HIE3900MUnXwcN5Cm0p8gM6 zmKS+N/kJhXI/i1dUiYLA5mm5HEi7C5aEMnIppzVmUbBSB+cpRDiFVFexoqSk2hl1ag/ KTSQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=gcS74qve; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id c7si12948129ejd.399.2021.05.31.07.35.43; Mon, 31 May 2021 07:36:06 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=gcS74qve; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232629AbhEaOga (ORCPT + 99 others); Mon, 31 May 2021 10:36:30 -0400 Received: from mail.kernel.org ([198.145.29.99]:60416 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232481AbhEaNzz (ORCPT ); Mon, 31 May 2021 09:55:55 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 1089A61927; Mon, 31 May 2021 13:34:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1622468070; bh=b6pxLm9b+aHmQ8leoDa2uMcseGzhDvHezK5XJWEJodM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=gcS74qvecCdIhCx1mjqnYlbGDIHHI44UYY8svT2rlF04Jltz5eMAb7ogBeOhs2AI/ ps/ORAh1vHLoZ9xwpRwMi1eL6Chhxd3T5OCU4pT5/TP3GNdHduXPFrWPviQSzxw7+r tAzKg4XQMtvuVucA+cI5gpHraH/87nBb3BYJOpY4= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Ariel Levkovich Subject: [PATCH 5.10 105/252] net/mlx5: Set term table as an unmanaged flow table Date: Mon, 31 May 2021 15:12:50 +0200 Message-Id: <20210531130701.562990707@linuxfoundation.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210531130657.971257589@linuxfoundation.org> References: <20210531130657.971257589@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Ariel Levkovich commit 6ff51ab8aa8fcbcddeeefce8ca705b575805d12b upstream. Termination tables are restricted to have the default miss action and cannot be set to forward to another table in case of a miss. If the fs prio of the termination table is not the last one in the list, fs_core will attempt to attach it to another table. Set the unmanaged ft flag when creating the termination table ft and select the tc offload prio for it to prevent fs_core from selecting the forwarding to next ft miss action and use the default one. In addition, set the flow that forwards to the termination table to ignore ft level restrictions since the ft level is not set by fs_core for unamanged fts. Fixes: 249ccc3c95bd ("net/mlx5e: Add support for offloading traffic from uplink to uplink") Signed-off-by: Ariel Levkovich Signed-off-by: Greg Kroah-Hartman --- drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads_termtbl.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) --- a/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads_termtbl.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads_termtbl.c @@ -76,10 +76,11 @@ mlx5_eswitch_termtbl_create(struct mlx5_ /* As this is the terminating action then the termination table is the * same prio as the slow path */ - ft_attr.flags = MLX5_FLOW_TABLE_TERMINATION | + ft_attr.flags = MLX5_FLOW_TABLE_TERMINATION | MLX5_FLOW_TABLE_UNMANAGED | MLX5_FLOW_TABLE_TUNNEL_EN_REFORMAT; - ft_attr.prio = FDB_SLOW_PATH; + ft_attr.prio = FDB_TC_OFFLOAD; ft_attr.max_fte = 1; + ft_attr.level = 1; ft_attr.autogroup.max_num_groups = 1; tt->termtbl = mlx5_create_auto_grouped_flow_table(root_ns, &ft_attr); if (IS_ERR(tt->termtbl)) { @@ -216,6 +217,7 @@ mlx5_eswitch_termtbl_required(struct mlx int i; if (!MLX5_CAP_ESW_FLOWTABLE_FDB(esw->dev, termination_table) || + !MLX5_CAP_ESW_FLOWTABLE_FDB(esw->dev, ignore_flow_level) || attr->flags & MLX5_ESW_ATTR_FLAG_SLOW_PATH || !mlx5_eswitch_offload_is_uplink_port(esw, spec)) return false; @@ -288,6 +290,7 @@ mlx5_eswitch_add_termtbl_rule(struct mlx /* create the FTE */ flow_act->action &= ~MLX5_FLOW_CONTEXT_ACTION_PACKET_REFORMAT; flow_act->pkt_reformat = NULL; + flow_act->flags |= FLOW_ACT_IGNORE_FLOW_LEVEL; rule = mlx5_add_flow_rules(fdb, spec, flow_act, dest, num_dest); if (IS_ERR(rule)) goto revert_changes;