From: beilei.xing@intel.com
To: jingjing.wu@intel.com, yuying.zhang@intel.com
Cc: dev@dpdk.org, Beilei Xing <beilei.xing@intel.com>
Subject: [PATCH] net/cpfl: remove devargs from adapter
Date: Tue, 17 Oct 2023 18:06:26 +0000 [thread overview]
Message-ID: <20231017180626.831240-1-beilei.xing@intel.com> (raw)
From: Beilei Xing <beilei.xing@intel.com>
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 <beilei.xing@intel.com>
---
drivers/net/cpfl/cpfl_ethdev.c | 43 +++++++++++++++--------------
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, 32 insertions(+), 29 deletions(-)
diff --git a/drivers/net/cpfl/cpfl_ethdev.c b/drivers/net/cpfl/cpfl_ethdev.c
index 0093deab5a..8aa86b823c 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,7 +2270,8 @@ 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;
@@ -2330,7 +2328,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 +2624,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 +2660,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 +2677,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 +2694,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 +2705,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 +2723,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 +2767,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
--
2.34.1
next reply other threads:[~2023-10-17 9:46 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-17 18:06 beilei.xing [this message]
2023-10-18 10:55 ` [PATCH v2] " beilei.xing
2023-10-19 1:30 ` Zhang, Qi Z
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20231017180626.831240-1-beilei.xing@intel.com \
--to=beilei.xing@intel.com \
--cc=dev@dpdk.org \
--cc=jingjing.wu@intel.com \
--cc=yuying.zhang@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).