From patchwork Wed Oct 18 10:55:45 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Xing, Beilei" X-Patchwork-Id: 132828 X-Patchwork-Delegate: qi.z.zhang@intel.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 97F7743193; Wed, 18 Oct 2023 04:36:00 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1D9B340261; Wed, 18 Oct 2023 04:36:00 +0200 (CEST) Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.136]) by mails.dpdk.org (Postfix) with ESMTP id 6148C4003C for ; Wed, 18 Oct 2023 04:35:58 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1697596558; x=1729132558; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=yp2YbLCsp9hRpqD/0yT7KprnglYJnP0+acryoTyyy5w=; b=PXVT7t21GMHrebW0f/VnseARWDXaOshUSeI+efgyw1cMdUOcgvMhFLo4 B2o3O8uG3oMLgKglVAUOYzSZcmROL7zMmsLxdPyYOp0mK0J+NPC0XlMAg Kfx47jpYIXFYt3scRbOkl+knyc436WG6fzLm3s/CbFwi7DqREK9lj0Whl vPBtwjQqtCoMvVXgwhBZC3Zfykr40QEgc0vk6VoNmvN0Nr7ZW+NlvlpDD ePWSWP04UKxAS1P3c2LxjRKGCRn3nI8qLvdRwCXQ3jxeGj+Rr4bRQeVUl QMmp6frQZq7xKuclcdxV91XsZv2sOVajS/7ekNTOvhMwxJeJiCiuICoRA w==; X-IronPort-AV: E=McAfee;i="6600,9927,10866"; a="365274728" X-IronPort-AV: E=Sophos;i="6.03,233,1694761200"; d="scan'208";a="365274728" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Oct 2023 19:35:57 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10866"; a="929985860" X-IronPort-AV: E=Sophos;i="6.03,233,1694761200"; d="scan'208";a="929985860" Received: from dpdk-beileix-icelake.sh.intel.com ([10.67.116.231]) by orsmga005.jf.intel.com with ESMTP; 17 Oct 2023 19:35:55 -0700 From: beilei.xing@intel.com To: jingjing.wu@intel.com, yuying.zhang@intel.com Cc: dev@dpdk.org, Beilei Xing Subject: [PATCH v2] net/cpfl: remove devargs from adapter Date: Wed, 18 Oct 2023 10:55:45 +0000 Message-Id: <20231018105545.834264-1-beilei.xing@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231017180626.831240-1-beilei.xing@intel.com> References: <20231017180626.831240-1-beilei.xing@intel.com> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org From: Beilei Xing Member devargs can be removed from struct cpfl_adapter_ext since it's not a global parameter, it should be local. Signed-off-by: Beilei Xing Acked-by: Qi Zhang --- v2 change: - Fix compile issue on some platform. drivers/net/cpfl/cpfl_ethdev.c | 47 +++++++++++++++++------------ drivers/net/cpfl/cpfl_ethdev.h | 1 - drivers/net/cpfl/cpfl_flow.c | 8 ++--- drivers/net/cpfl/cpfl_flow.h | 2 +- drivers/net/cpfl/cpfl_representor.c | 3 +- drivers/net/cpfl/cpfl_representor.h | 4 ++- 6 files changed, 36 insertions(+), 29 deletions(-) diff --git a/drivers/net/cpfl/cpfl_ethdev.c b/drivers/net/cpfl/cpfl_ethdev.c index 0093deab5a..34e2f99e29 100644 --- a/drivers/net/cpfl/cpfl_ethdev.c +++ b/drivers/net/cpfl/cpfl_ethdev.c @@ -1604,19 +1604,16 @@ parse_file(const char *key, const char *value, void *args) #endif static int -cpfl_parse_devargs(struct rte_pci_device *pci_dev, struct cpfl_adapter_ext *adapter, bool first) +cpfl_parse_devargs(struct rte_pci_device *pci_dev, struct cpfl_adapter_ext *adapter, + bool first, struct cpfl_devargs *cpfl_args) { struct rte_devargs *devargs = pci_dev->device.devargs; - struct cpfl_devargs *cpfl_args = &adapter->devargs; struct rte_kvargs *kvlist; int ret; if (devargs == NULL) return 0; - if (first) - memset(cpfl_args, 0, sizeof(struct cpfl_devargs)); - kvlist = rte_kvargs_parse(devargs->args, first ? cpfl_valid_args_first : cpfl_valid_args_again); if (kvlist == NULL) { @@ -2273,12 +2270,17 @@ cpfl_repr_allowlist_uninit(struct cpfl_adapter_ext *adapter) static int -cpfl_adapter_ext_init(struct rte_pci_device *pci_dev, struct cpfl_adapter_ext *adapter) +cpfl_adapter_ext_init(struct rte_pci_device *pci_dev, struct cpfl_adapter_ext *adapter, + struct cpfl_devargs *devargs) { struct idpf_adapter *base = &adapter->base; struct idpf_hw *hw = &base->hw; int ret = 0; +#ifndef RTE_HAS_JANSSON + RTE_SET_USED(devargs); +#endif + hw->hw_addr = (void *)pci_dev->mem_resource[0].addr; hw->hw_addr_len = pci_dev->mem_resource[0].len; hw->back = base; @@ -2330,7 +2332,7 @@ cpfl_adapter_ext_init(struct rte_pci_device *pci_dev, struct cpfl_adapter_ext *a } #ifdef RTE_HAS_JANSSON - ret = cpfl_flow_init(adapter); + ret = cpfl_flow_init(adapter, devargs); if (ret) { PMD_INIT_LOG(ERR, "Failed to init flow module"); goto err_flow_init; @@ -2626,9 +2628,8 @@ cpfl_adapter_ext_deinit(struct cpfl_adapter_ext *adapter) } static int -cpfl_vport_devargs_process(struct cpfl_adapter_ext *adapter) +cpfl_vport_devargs_process(struct cpfl_adapter_ext *adapter, struct cpfl_devargs *devargs) { - struct cpfl_devargs *devargs = &adapter->devargs; int i; /* refine vport number, at least 1 vport */ @@ -2663,15 +2664,16 @@ cpfl_vport_devargs_process(struct cpfl_adapter_ext *adapter) } static int -cpfl_vport_create(struct rte_pci_device *pci_dev, struct cpfl_adapter_ext *adapter) +cpfl_vport_create(struct rte_pci_device *pci_dev, struct cpfl_adapter_ext *adapter, + struct cpfl_devargs *devargs) { struct cpfl_vport_param vport_param; char name[RTE_ETH_NAME_MAX_LEN]; int ret, i; - for (i = 0; i < adapter->devargs.req_vport_nb; i++) { + for (i = 0; i < devargs->req_vport_nb; i++) { vport_param.adapter = adapter; - vport_param.devarg_id = adapter->devargs.req_vports[i]; + vport_param.devarg_id = devargs->req_vports[i]; vport_param.idx = cpfl_vport_idx_alloc(adapter); if (vport_param.idx == CPFL_INVALID_VPORT_IDX) { PMD_INIT_LOG(ERR, "No space for vport %u", vport_param.devarg_id); @@ -2679,7 +2681,7 @@ cpfl_vport_create(struct rte_pci_device *pci_dev, struct cpfl_adapter_ext *adapt } snprintf(name, sizeof(name), "net_%s_vport_%d", pci_dev->device.name, - adapter->devargs.req_vports[i]); + devargs->req_vports[i]); ret = rte_eth_dev_create(&pci_dev->device, name, sizeof(struct cpfl_vport), NULL, NULL, cpfl_dev_vport_init, @@ -2696,6 +2698,7 @@ static int cpfl_pci_probe_first(struct rte_pci_device *pci_dev) { struct cpfl_adapter_ext *adapter; + struct cpfl_devargs devargs; int retval; uint16_t port_id; @@ -2706,13 +2709,15 @@ cpfl_pci_probe_first(struct rte_pci_device *pci_dev) return -ENOMEM; } - retval = cpfl_parse_devargs(pci_dev, adapter, true); + memset(&devargs, 0, sizeof(devargs)); + + retval = cpfl_parse_devargs(pci_dev, adapter, true, &devargs); if (retval != 0) { PMD_INIT_LOG(ERR, "Failed to parse private devargs"); return retval; } - retval = cpfl_adapter_ext_init(pci_dev, adapter); + retval = cpfl_adapter_ext_init(pci_dev, adapter, &devargs); if (retval != 0) { PMD_INIT_LOG(ERR, "Failed to init adapter."); return retval; @@ -2722,19 +2727,19 @@ cpfl_pci_probe_first(struct rte_pci_device *pci_dev) TAILQ_INSERT_TAIL(&cpfl_adapter_list, adapter, next); rte_spinlock_unlock(&cpfl_adapter_lock); - retval = cpfl_vport_devargs_process(adapter); + retval = cpfl_vport_devargs_process(adapter, &devargs); if (retval != 0) { PMD_INIT_LOG(ERR, "Failed to process vport devargs"); goto err; } - retval = cpfl_vport_create(pci_dev, adapter); + retval = cpfl_vport_create(pci_dev, adapter, &devargs); if (retval != 0) { PMD_INIT_LOG(ERR, "Failed to create vports."); goto err; } - retval = cpfl_repr_devargs_process(adapter); + retval = cpfl_repr_devargs_process(adapter, &devargs); if (retval != 0) { PMD_INIT_LOG(ERR, "Failed to process repr devargs"); goto close_ethdev; @@ -2766,15 +2771,17 @@ cpfl_pci_probe_first(struct rte_pci_device *pci_dev) static int cpfl_pci_probe_again(struct rte_pci_device *pci_dev, struct cpfl_adapter_ext *adapter) { + struct cpfl_devargs devargs; int ret; - ret = cpfl_parse_devargs(pci_dev, adapter, false); + memset(&devargs, 0, sizeof(devargs)); + ret = cpfl_parse_devargs(pci_dev, adapter, false, &devargs); if (ret != 0) { PMD_INIT_LOG(ERR, "Failed to parse private devargs"); return ret; } - ret = cpfl_repr_devargs_process(adapter); + ret = cpfl_repr_devargs_process(adapter, &devargs); if (ret != 0) { PMD_INIT_LOG(ERR, "Failed to process reprenstor devargs"); return ret; diff --git a/drivers/net/cpfl/cpfl_ethdev.h b/drivers/net/cpfl/cpfl_ethdev.h index bb53fca7c0..7a31a376b6 100644 --- a/drivers/net/cpfl/cpfl_ethdev.h +++ b/drivers/net/cpfl/cpfl_ethdev.h @@ -212,7 +212,6 @@ struct cpfl_adapter_ext { uint16_t cur_vport_nb; uint16_t used_vecs_num; - struct cpfl_devargs devargs; rte_spinlock_t vport_map_lock; struct rte_hash *vport_map_hash; diff --git a/drivers/net/cpfl/cpfl_flow.c b/drivers/net/cpfl/cpfl_flow.c index 4c9e375cca..3ba6c0f0e7 100644 --- a/drivers/net/cpfl/cpfl_flow.c +++ b/drivers/net/cpfl/cpfl_flow.c @@ -300,11 +300,11 @@ const struct rte_flow_ops cpfl_flow_ops = { }; int -cpfl_flow_init(struct cpfl_adapter_ext *ad) +cpfl_flow_init(struct cpfl_adapter_ext *ad, struct cpfl_devargs *devargs) { int ret; - if (ad->devargs.flow_parser[0] == '\0') { + if (devargs->flow_parser[0] == '\0') { PMD_INIT_LOG(WARNING, "flow module is not initialized"); return 0; } @@ -315,7 +315,7 @@ cpfl_flow_init(struct cpfl_adapter_ext *ad) goto err; } - ret = cpfl_parser_create(&ad->flow_parser, ad->devargs.flow_parser); + ret = cpfl_parser_create(&ad->flow_parser, devargs->flow_parser); if (ret) { PMD_DRV_LOG(ERR, "Failed to create flow parser"); goto err; @@ -331,7 +331,7 @@ cpfl_flow_init(struct cpfl_adapter_ext *ad) void cpfl_flow_uninit(struct cpfl_adapter_ext *ad) { - if (ad->devargs.flow_parser[0] == '\0') + if (ad->flow_parser == NULL) return; cpfl_parser_destroy(ad->flow_parser); diff --git a/drivers/net/cpfl/cpfl_flow.h b/drivers/net/cpfl/cpfl_flow.h index 22c0cb4e65..1bde847763 100644 --- a/drivers/net/cpfl/cpfl_flow.h +++ b/drivers/net/cpfl/cpfl_flow.h @@ -63,7 +63,7 @@ struct cpfl_flow_engine *cpfl_flow_engine_match(struct rte_eth_dev *dev, void **meta); int cpfl_flow_engine_init(struct cpfl_adapter_ext *adapter); void cpfl_flow_engine_uninit(struct cpfl_adapter_ext *adapter); -int cpfl_flow_init(struct cpfl_adapter_ext *ad); +int cpfl_flow_init(struct cpfl_adapter_ext *ad, struct cpfl_devargs *devargs); void cpfl_flow_uninit(struct cpfl_adapter_ext *ad); struct rte_flow *cpfl_flow_create(struct rte_eth_dev *dev, const struct rte_flow_attr *attr, diff --git a/drivers/net/cpfl/cpfl_representor.c b/drivers/net/cpfl/cpfl_representor.c index cb253f7af4..e2ed9eda04 100644 --- a/drivers/net/cpfl/cpfl_representor.c +++ b/drivers/net/cpfl/cpfl_representor.c @@ -93,9 +93,8 @@ cpfl_repr_devargs_process_one(struct cpfl_adapter_ext *adapter, } int -cpfl_repr_devargs_process(struct cpfl_adapter_ext *adapter) +cpfl_repr_devargs_process(struct cpfl_adapter_ext *adapter, struct cpfl_devargs *devargs) { - struct cpfl_devargs *devargs = &adapter->devargs; int ret, i, j; /* check and refine repr args */ diff --git a/drivers/net/cpfl/cpfl_representor.h b/drivers/net/cpfl/cpfl_representor.h index d3a4de531e..d7f6e186f8 100644 --- a/drivers/net/cpfl/cpfl_representor.h +++ b/drivers/net/cpfl/cpfl_representor.h @@ -21,6 +21,8 @@ struct cpfl_repr_param { struct cpfl_vport_info *vport_info; }; -int cpfl_repr_devargs_process(struct cpfl_adapter_ext *adapter); +extern struct cpfl_devargs *devargs; + +int cpfl_repr_devargs_process(struct cpfl_adapter_ext *adapter, struct cpfl_devargs *devargs); int cpfl_repr_create(struct rte_pci_device *pci_dev, struct cpfl_adapter_ext *adapter); #endif