From patchwork Mon Jul 6 08:25:01 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Somnath Kotur X-Patchwork-Id: 73217 X-Patchwork-Delegate: ajit.khaparde@broadcom.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 89715A00C5; Mon, 6 Jul 2020 10:34:13 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id C79071DB33; Mon, 6 Jul 2020 10:30:29 +0200 (CEST) Received: from relay.smtp.broadcom.com (unknown [192.19.211.62]) by dpdk.org (Postfix) with ESMTP id D7E331DA0B for ; Mon, 6 Jul 2020 10:30:08 +0200 (CEST) Received: from dhcp-10-123-153-55.dhcp.broadcom.net (dhcp-10-123-153-55.dhcp.broadcom.net [10.123.153.55]) by relay.smtp.broadcom.com (Postfix) with ESMTP id 6746C29863E; Mon, 6 Jul 2020 01:30:08 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.10.3 relay.smtp.broadcom.com 6746C29863E DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1594024208; bh=Y2wPV4eHMgMSWXRGWoAryVwRuMgtCXD7OS7CucQ/HBE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=bim8bPaNzJE40KYlMAwdUJ0gUfB0xhPYZKWJvGT4j58iiNc3FGmzdnsjL1OvT+xVm 4NhYJzO+aRHXdZxExMVz5tS9oJ2rjf2JJr3QAe/6zCcRHpJ3zVPYqyby1tLnKKBZ7X Zhq9B/7TMLNoxjB+LCKn38Hg2J1XabVq1K5P5UaA= From: Somnath Kotur To: dev@dpdk.org Cc: ferruh.yigit@intel.com Date: Mon, 6 Jul 2020 13:55:01 +0530 Message-Id: <20200706082502.26935-20-somnath.kotur@broadcom.com> X-Mailer: git-send-email 2.10.1.613.g2cc2e70 In-Reply-To: <20200706082502.26935-1-somnath.kotur@broadcom.com> References: <20200706082502.26935-1-somnath.kotur@broadcom.com> Subject: [dpdk-dev] [PATCH 19/20] net/bnxt: enable flow ctrl ops for the VF-rep device 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" Inorder to offload flows on the vfrep device, it must be populated with rte_flow_ops. This patch enables the same. Signed-off-by: Somnath Kotur Signed-off-by: Venkat Duvvuru --- drivers/net/bnxt/bnxt.h | 5 +++++ drivers/net/bnxt/bnxt_ethdev.c | 9 +++++++-- drivers/net/bnxt/bnxt_reps.c | 3 +-- drivers/net/bnxt/tf_ulp/bnxt_ulp.c | 8 ++++++-- 4 files changed, 19 insertions(+), 6 deletions(-) diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h index f16bf33..f69ba24 100644 --- a/drivers/net/bnxt/bnxt.h +++ b/drivers/net/bnxt/bnxt.h @@ -897,4 +897,9 @@ void bnxt_flow_cnt_alarm_cb(void *arg); int bnxt_flow_stats_req(struct bnxt *bp); int bnxt_flow_stats_cnt(struct bnxt *bp); uint32_t bnxt_get_speed_capabilities(struct bnxt *bp); + +int +bnxt_filter_ctrl_op(struct rte_eth_dev *dev, + enum rte_filter_type filter_type, + enum rte_filter_op filter_op, void *arg); #endif diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index b21f850..5626ec3 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -3702,7 +3702,7 @@ bnxt_fdir_filter(struct rte_eth_dev *dev, return ret; } -static int +int bnxt_filter_ctrl_op(struct rte_eth_dev *dev, enum rte_filter_type filter_type, enum rte_filter_op filter_op, void *arg) @@ -3710,7 +3710,12 @@ bnxt_filter_ctrl_op(struct rte_eth_dev *dev, struct bnxt *bp = dev->data->dev_private; int ret = 0; - ret = is_bnxt_in_error(dev->data->dev_private); + if (BNXT_ETH_DEV_IS_REPRESENTOR(dev)) { + struct bnxt_vf_representor *vfr = dev->data->dev_private; + bp = vfr->parent_dev->data->dev_private; + } + + ret = is_bnxt_in_error(bp); if (ret) return ret; diff --git a/drivers/net/bnxt/bnxt_reps.c b/drivers/net/bnxt/bnxt_reps.c index a37a061..875e7b0 100644 --- a/drivers/net/bnxt/bnxt_reps.c +++ b/drivers/net/bnxt/bnxt_reps.c @@ -29,6 +29,7 @@ static const struct eth_dev_ops bnxt_vf_rep_dev_ops = { .dev_stop = bnxt_vf_rep_dev_stop_op, .stats_get = bnxt_vf_rep_stats_get_op, .stats_reset = bnxt_vf_rep_stats_reset_op, + .filter_ctrl = bnxt_filter_ctrl_op }; uint16_t @@ -132,8 +133,6 @@ bnxt_vf_rep_tx_burst(void *tx_queue, pthread_mutex_unlock(&parent->rep_info->vfr_lock); return rc; - - return 0; } int bnxt_vf_representor_init(struct rte_eth_dev *eth_dev, void *params) diff --git a/drivers/net/bnxt/tf_ulp/bnxt_ulp.c b/drivers/net/bnxt/tf_ulp/bnxt_ulp.c index 469ad36..397d0a9 100644 --- a/drivers/net/bnxt/tf_ulp/bnxt_ulp.c +++ b/drivers/net/bnxt/tf_ulp/bnxt_ulp.c @@ -923,9 +923,13 @@ bnxt_ulp_cntxt_ptr2_flow_db_get(struct bnxt_ulp_context *ulp_ctx) struct bnxt_ulp_context * bnxt_ulp_eth_dev_ptr2_cntxt_get(struct rte_eth_dev *dev) { - struct bnxt *bp; + struct bnxt *bp = (struct bnxt *)dev->data->dev_private; + + if (BNXT_ETH_DEV_IS_REPRESENTOR(dev)) { + struct bnxt_vf_representor *vfr = dev->data->dev_private; + bp = vfr->parent_dev->data->dev_private; + } - bp = (struct bnxt *)dev->data->dev_private; if (!bp) { BNXT_TF_DBG(ERR, "Bnxt private data is not initialized\n"); return NULL;