From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id F20F9A04E6; Sat, 31 Oct 2020 14:35:11 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 3F23CCA8F; Sat, 31 Oct 2020 14:35:09 +0100 (CET) Received: from mail-io1-f67.google.com (mail-io1-f67.google.com [209.85.166.67]) by dpdk.org (Postfix) with ESMTP id 41CC9CA64 for ; Sat, 31 Oct 2020 14:35:06 +0100 (CET) Received: by mail-io1-f67.google.com with SMTP id z17so10405264iog.11 for ; Sat, 31 Oct 2020 06:35:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=6QmY9pI6xAUi204/2CO1wLvLIoeShESz/RTruAZ6zxE=; b=ThVYCh9LKz1fCm8TCpyML4BTkWXCdWK4bmpOqtwYHS7l5hh9khFQi/igkytSa+kVsH lT0jul61DDPRDMxoUr6pCvbtLxbECl/pd+RzfBQTfEygiLB5jrBrV4nSoTnVA6IBpbUC KAku5eduFKa2lMSVUXAy2mUrUzQTH1MLOysdr7bzBMNyoZhraz1NGYMCHm9kvSNVXygZ NXXTr8J2iA3llA6wn8JKpHMxCnjG0EnfuCMUj0gav2ib7DQx2KXimAAq4niBp++kCRtj 5GOtRPbNdJKBj1hxNzAS1gtcmoVDtag79fxNcAdWko3pObZFK/clQDCPFXh37Q7eVuQG 1cxw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=6QmY9pI6xAUi204/2CO1wLvLIoeShESz/RTruAZ6zxE=; b=RWZB4vwLoVrnixz2btFt+geLvK6o+SFtgO47vDuBlmmT0jTjzEjYMFuywghXAOZaFN MpD3Bk5boTqusbkyGc8tpyeQPlFsqYw6/tPcpiXPD4mt+ChKZggcArWMCX9STayQ6bsl RHenpx+5TGWmJ4lb6Rn0aP4uazWSQv+pQiVJWoYyIXDxu3FwwGkPux8DVHYw5TL6ZWcw VotryoXsU+45ayzusubRXidFEmKviDIx1f+ZXj7U4YSkwarSWxk4XR119Cp9IawtsYNs qI3bQ0VUAD6qol5A4QeF3M3VM6/HFdRCo7+IW4ea4VicZ2Y4p45GbVMBpJnNjeWrUzUB UXJQ== X-Gm-Message-State: AOAM532QDGz9tewzv/3uINA33nyNfMWdZtQCMET+rwlPHBDb+/4WZBjE x2NSAup1hsFgTfuRHOJYzjqbi1uGRTIBGlafHKY= X-Google-Smtp-Source: ABdhPJyOc/7fPou75CIMd+J1vHCcSB+1DODS4fGgaBA7X9sxM69VSnjC4XKxXhQc/kibf1896nXR79BZn0RYBmWgkl0= X-Received: by 2002:a02:7:: with SMTP id 7mr5584794jaa.112.1604151304507; Sat, 31 Oct 2020 06:35:04 -0700 (PDT) MIME-Version: 1.0 References: <20201021033131.1743984-1-psatheesh@marvell.com> In-Reply-To: <20201021033131.1743984-1-psatheesh@marvell.com> From: Jerin Jacob Date: Sat, 31 Oct 2020 19:04:48 +0530 Message-ID: To: Satheesh Paul , Ferruh Yigit Cc: Jerin Jacob , Nithin Dabilpuram , Kiran Kumar K , dpdk-dev Content-Type: text/plain; charset="UTF-8" Subject: Re: [dpdk-dev] [PATCH] net/octeontx2: support for VF base steering rule X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On Wed, Oct 21, 2020 at 9:01 AM wrote: > > From: Satheesh Paul > > Adds support for merging a base steering rule with > all flow rules created on a VF. > > Signed-off-by: Satheesh Paul Acked-by: Jerin Jacob Applied to dpdk-next-net-mrvl/for-main. Thanks > --- > drivers/net/octeontx2/otx2_flow.c | 2 ++ > drivers/net/octeontx2/otx2_flow.h | 1 + > drivers/net/octeontx2/otx2_flow_utils.c | 19 ++++++++++++++++++- > 3 files changed, 21 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/octeontx2/otx2_flow.c b/drivers/net/octeontx2/otx2_flow.c > index e07cea709..a5900f349 100644 > --- a/drivers/net/octeontx2/otx2_flow.c > +++ b/drivers/net/octeontx2/otx2_flow.c > @@ -605,6 +605,8 @@ otx2_flow_create(struct rte_eth_dev *dev, > goto err_exit; > } > > + parse_state.is_vf = otx2_dev_is_vf(hw); > + > rc = flow_program_npc(&parse_state, mbox, &hw->npc_flow); > if (rc != 0) { > rte_flow_error_set(error, EIO, > diff --git a/drivers/net/octeontx2/otx2_flow.h b/drivers/net/octeontx2/otx2_flow.h > index 1f118c408..30a823c8a 100644 > --- a/drivers/net/octeontx2/otx2_flow.h > +++ b/drivers/net/octeontx2/otx2_flow.h > @@ -213,6 +213,7 @@ struct otx2_parse_state { > uint8_t flags[NPC_MAX_LID]; > uint8_t *mcam_data; /* point to flow->mcam_data + key_len */ > uint8_t *mcam_mask; /* point to flow->mcam_mask + key_len */ > + bool is_vf; > }; > > struct otx2_flow_item_info { > diff --git a/drivers/net/octeontx2/otx2_flow_utils.c b/drivers/net/octeontx2/otx2_flow_utils.c > index 6215a542f..9a0a5f9fb 100644 > --- a/drivers/net/octeontx2/otx2_flow_utils.c > +++ b/drivers/net/octeontx2/otx2_flow_utils.c > @@ -884,11 +884,13 @@ flow_check_preallocated_entry_cache(struct otx2_mbox *mbox, > > int > otx2_flow_mcam_alloc_and_write(struct rte_flow *flow, struct otx2_mbox *mbox, > - __rte_unused struct otx2_parse_state *pst, > + struct otx2_parse_state *pst, > struct otx2_npc_flow_info *flow_info) > { > int use_ctr = (flow->ctr_id == NPC_COUNTER_NONE ? 0 : 1); > + struct npc_mcam_read_base_rule_rsp *base_rule_rsp; > struct npc_mcam_write_entry_req *req; > + struct mcam_entry *base_entry; > struct mbox_msghdr *rsp; > uint16_t ctr = ~(0); > int rc, idx; > @@ -906,6 +908,21 @@ otx2_flow_mcam_alloc_and_write(struct rte_flow *flow, struct otx2_mbox *mbox, > otx2_flow_mcam_free_counter(mbox, ctr); > return NPC_MCAM_ALLOC_FAILED; > } > + > + if (pst->is_vf) { > + (void)otx2_mbox_alloc_msg_npc_read_base_steer_rule(mbox); > + rc = otx2_mbox_process_msg(mbox, (void *)&base_rule_rsp); > + if (rc) { > + otx2_err("Failed to fetch VF's base MCAM entry"); > + return rc; > + } > + base_entry = &base_rule_rsp->entry_data; > + for (idx = 0; idx < OTX2_MAX_MCAM_WIDTH_DWORDS; idx++) { > + flow->mcam_data[idx] |= base_entry->kw[idx]; > + flow->mcam_mask[idx] |= base_entry->kw_mask[idx]; > + } > + } > + > req = otx2_mbox_alloc_msg_npc_mcam_write_entry(mbox); > req->set_cntr = use_ctr; > req->cntr = ctr; > -- > 2.25.4 >