Received: by 2002:a05:6a10:1a4d:0:0:0:0 with SMTP id nk13csp870646pxb; Tue, 1 Feb 2022 12:07:56 -0800 (PST) X-Google-Smtp-Source: ABdhPJymhvUqaYjN+n2KoJgzUpHk21iN4KfZwkIJTE3uH12yZxKX8I5THXkmL353X+7Bzj/zbFPN X-Received: by 2002:a17:90b:4f83:: with SMTP id qe3mr4234187pjb.120.1643746076415; Tue, 01 Feb 2022 12:07:56 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643746076; cv=none; d=google.com; s=arc-20160816; b=dQaC2bo8B9L2j9wfSYrMMManK+msFsOyzhLmUrXYWZXpV0w6JxFm6Yc+8BACzVY9re uLEAAXotOeDezQtY2EVICezR7ph+JE3iV3wMg1uNKP0j9u2sbCjXMyo1jzfzBZhsdaYg zfmYxYQ4K3LlGrYRocnrXYKIcF/GaSocCebBxtcFFEeMBMHusKnD95lnWlmWerGLkVOI dEZNz2IxqUveHXLleb9PNYJcwe8aDS+SEIotZ5/sdftwNZI0og3ztaozKegZhRLBcwqZ 3km0MoN40EvEy/v4xh7nXU9UwcVMT0ZyJxXdy+kO9w+b3cgKzFgbi+9UNql2WxpT+jTA wj1w== 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=Qr6CGBTz8eMRSg9+ETUEinbzEeql1v/INiePY7+w0SY=; b=f56xDfKv/I8zAr0dPzq6Hs3rX9O6fitgPFdaHBKFaE4Zn+wlY9VDTms/9+jqi0Pd1H c3wwl4n41mpvxBSjjH8hOKqtWU5obKIL2zsHYnR7XxDSgPF2WhasmsuKDolYxMh2WVaN aEo5MDwVxZqrIMgRFwBx8N5CN0AA4hIZkbRvNaSlPOQ7GeuPMzBwdF28ATvV/XEk/rjb 5Oik1JJ9Utcr9bjDaY7eYVVgvliJKZ7JKJ5aarNAamGGYECM1iFq5B6KgjbXTgOpu0cF N4LoqX/D74t1rnOKOvoHFDZMLj1PMRLPEhykBDwzpqXtzpeQPv3Rw+VBLrg/IbbNj7dG xPHw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b="d30/Gpp/"; 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 s15si18164355pgs.627.2022.02.01.12.07.44; Tue, 01 Feb 2022 12:07:56 -0800 (PST) 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="d30/Gpp/"; 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 S1378980AbiAaL3k (ORCPT + 99 others); Mon, 31 Jan 2022 06:29:40 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47190 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1378435AbiAaLUK (ORCPT ); Mon, 31 Jan 2022 06:20:10 -0500 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 88E2FC0604C4; Mon, 31 Jan 2022 03:12:32 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 4B7C8B82A60; Mon, 31 Jan 2022 11:12:31 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 74B0FC36AE2; Mon, 31 Jan 2022 11:12:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1643627550; bh=i6vNzAuUx7hTZc8ChAo/kuIGElfoW0kNZKcnVbrqh1I=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=d30/Gpp/ytFMruGFHtWljNgQQIF9nqatV1MSoyFyEh9cpH3nG/nLrRJtorH2Z8nhw LZKTx5EdvbPxDCYWNoCH/Jus4p2V9KTx6MH/8B4IvzN6w9Aaz1vh5C91P2CY66kmZ9 SklsmgCTwUS2DdXCELnvAxqj6thW8l/onyMhFl1w= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Subbaraya Sundeep , Naveen Mamindlapalli , Sunil Goutham , "David S. Miller" , Sasha Levin Subject: [PATCH 5.15 120/171] octeontx2-af: Do not fixup all VF action entries Date: Mon, 31 Jan 2022 11:56:25 +0100 Message-Id: <20220131105234.102954173@linuxfoundation.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220131105229.959216821@linuxfoundation.org> References: <20220131105229.959216821@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: Subbaraya Sundeep [ Upstream commit d225c449ab2be25273a3674f476c6c0b57c50254 ] AF modifies all the rules destined for VF to use the action same as default RSS action. This fixup was needed because AF only installs default rules with RSS action. But the action in rules installed by a PF for its VFs should not be changed by this fixup. This is because action can be drop or direct to queue as specified by user(ntuple filters). This patch fixes that problem. Fixes: 967db3529eca ("octeontx2-af: add support for multicast/promisc packet") Signed-off-by: Subbaraya Sundeep Signed-off-by: Naveen Mamindlapalli Signed-off-by: Sunil Goutham Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- .../ethernet/marvell/octeontx2/af/rvu_npc.c | 22 ++++++++++++++++--- .../marvell/octeontx2/af/rvu_npc_fs.c | 20 ++++++++++------- 2 files changed, 31 insertions(+), 11 deletions(-) diff --git a/drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c b/drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c index 5efb4174e82df..87f18e32b4634 100644 --- a/drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c +++ b/drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c @@ -402,6 +402,7 @@ static void npc_fixup_vf_rule(struct rvu *rvu, struct npc_mcam *mcam, int blkaddr, int index, struct mcam_entry *entry, bool *enable) { + struct rvu_npc_mcam_rule *rule; u16 owner, target_func; struct rvu_pfvf *pfvf; u64 rx_action; @@ -423,6 +424,12 @@ static void npc_fixup_vf_rule(struct rvu *rvu, struct npc_mcam *mcam, test_bit(NIXLF_INITIALIZED, &pfvf->flags))) *enable = false; + /* fix up not needed for the rules added by user(ntuple filters) */ + list_for_each_entry(rule, &mcam->mcam_rules, list) { + if (rule->entry == index) + return; + } + /* copy VF default entry action to the VF mcam entry */ rx_action = npc_get_default_entry_action(rvu, mcam, blkaddr, target_func); @@ -489,8 +496,8 @@ static void npc_config_mcam_entry(struct rvu *rvu, struct npc_mcam *mcam, } /* PF installing VF rule */ - if (intf == NIX_INTF_RX && actindex < mcam->bmap_entries) - npc_fixup_vf_rule(rvu, mcam, blkaddr, index, entry, &enable); + if (is_npc_intf_rx(intf) && actindex < mcam->bmap_entries) + npc_fixup_vf_rule(rvu, mcam, blkaddr, actindex, entry, &enable); /* Set 'action' */ rvu_write64(rvu, blkaddr, @@ -916,7 +923,8 @@ static void npc_update_vf_flow_entry(struct rvu *rvu, struct npc_mcam *mcam, int blkaddr, u16 pcifunc, u64 rx_action) { int actindex, index, bank, entry; - bool enable; + struct rvu_npc_mcam_rule *rule; + bool enable, update; if (!(pcifunc & RVU_PFVF_FUNC_MASK)) return; @@ -924,6 +932,14 @@ static void npc_update_vf_flow_entry(struct rvu *rvu, struct npc_mcam *mcam, mutex_lock(&mcam->lock); for (index = 0; index < mcam->bmap_entries; index++) { if (mcam->entry2target_pffunc[index] == pcifunc) { + update = true; + /* update not needed for the rules added via ntuple filters */ + list_for_each_entry(rule, &mcam->mcam_rules, list) { + if (rule->entry == index) + update = false; + } + if (!update) + continue; bank = npc_get_bank(mcam, index); actindex = index; entry = index & (mcam->banksize - 1); diff --git a/drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c b/drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c index 51ddc7b81d0bd..ca404d51d9f56 100644 --- a/drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c +++ b/drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c @@ -1098,14 +1098,6 @@ find_rule: write_req.cntr = rule->cntr; } - err = rvu_mbox_handler_npc_mcam_write_entry(rvu, &write_req, - &write_rsp); - if (err) { - rvu_mcam_remove_counter_from_rule(rvu, owner, rule); - if (new) - kfree(rule); - return err; - } /* update rule */ memcpy(&rule->packet, &dummy.packet, sizeof(rule->packet)); memcpy(&rule->mask, &dummy.mask, sizeof(rule->mask)); @@ -1129,6 +1121,18 @@ find_rule: if (req->default_rule) pfvf->def_ucast_rule = rule; + /* write to mcam entry registers */ + err = rvu_mbox_handler_npc_mcam_write_entry(rvu, &write_req, + &write_rsp); + if (err) { + rvu_mcam_remove_counter_from_rule(rvu, owner, rule); + if (new) { + list_del(&rule->list); + kfree(rule); + } + return err; + } + /* VF's MAC address is being changed via PF */ if (pf_set_vfs_mac) { ether_addr_copy(pfvf->default_mac, req->packet.dmac); -- 2.34.1