From: <pbhagavatula@marvell.com>
To: <jerinj@marvell.com>, <sthotton@marvell.com>,
<abdullah.sevincer@intel.com>, <hemant.agrawal@nxp.com>,
<sachin.saxena@oss.nxp.com>, <harry.van.haaren@intel.com>,
<mattias.ronnblom@ericsson.com>, <liangma@liangbit.com>,
<peter.mccarthy@intel.com>, <stephen@networkplumber.org>,
Pavan Nikhilesh <pbhagavatula@marvell.com>
Cc: <dev@dpdk.org>
Subject: [PATCH v8 4/6] event/cnkx: add pre-schedule support
Date: Sun, 6 Oct 2024 22:36:06 +0530 [thread overview]
Message-ID: <20241006170608.14182-5-pbhagavatula@marvell.com> (raw)
In-Reply-To: <20241006170608.14182-1-pbhagavatula@marvell.com>
From: Pavan Nikhilesh <pbhagavatula@marvell.com>
Add device level and port level pre-schedule
support for cnxk eventdev.
Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
---
doc/guides/eventdevs/cnxk.rst | 10 ----------
doc/guides/eventdevs/features/cnxk.ini | 1 +
drivers/event/cnxk/cn10k_eventdev.c | 19 +++++++++++++++++--
drivers/event/cnxk/cn10k_worker.c | 21 +++++++++++++++++++++
drivers/event/cnxk/cn10k_worker.h | 2 ++
drivers/event/cnxk/cnxk_eventdev.c | 2 --
drivers/event/cnxk/cnxk_eventdev.h | 1 -
7 files changed, 41 insertions(+), 15 deletions(-)
diff --git a/doc/guides/eventdevs/cnxk.rst b/doc/guides/eventdevs/cnxk.rst
index d038930594..e21846f4e0 100644
--- a/doc/guides/eventdevs/cnxk.rst
+++ b/doc/guides/eventdevs/cnxk.rst
@@ -78,16 +78,6 @@ Runtime Config Options
-a 0002:0e:00.0,single_ws=1
-- ``CN10K Getwork mode``
-
- CN10K supports three getwork prefetch modes no prefetch[0], prefetch
- immediately[1] and delayed prefetch on forward progress event[2].
- The default getwork mode is 2.
-
- For example::
-
- -a 0002:0e:00.0,gw_mode=1
-
- ``Event Group QoS support``
SSO GGRPs i.e. queue uses DRAM & SRAM buffers to hold in-flight
diff --git a/doc/guides/eventdevs/features/cnxk.ini b/doc/guides/eventdevs/features/cnxk.ini
index d1516372fa..5ba528f086 100644
--- a/doc/guides/eventdevs/features/cnxk.ini
+++ b/doc/guides/eventdevs/features/cnxk.ini
@@ -17,6 +17,7 @@ carry_flow_id = Y
maintenance_free = Y
runtime_queue_attr = Y
profile_links = Y
+preschedule = Y
[Eth Rx adapter Features]
internal_port = Y
diff --git a/drivers/event/cnxk/cn10k_eventdev.c b/drivers/event/cnxk/cn10k_eventdev.c
index 2d7b169974..5bd779990e 100644
--- a/drivers/event/cnxk/cn10k_eventdev.c
+++ b/drivers/event/cnxk/cn10k_eventdev.c
@@ -527,6 +527,7 @@ cn10k_sso_fp_fns_set(struct rte_eventdev *event_dev)
event_dev->dma_enqueue = cn10k_dma_adapter_enqueue;
event_dev->profile_switch = cn10k_sso_hws_profile_switch;
+ event_dev->preschedule_modify = cn10k_sso_hws_preschedule_modify;
#else
RTE_SET_USED(event_dev);
#endif
@@ -541,6 +542,9 @@ cn10k_sso_info_get(struct rte_eventdev *event_dev,
dev_info->driver_name = RTE_STR(EVENTDEV_NAME_CN10K_PMD);
cnxk_sso_info_get(dev, dev_info);
dev_info->max_event_port_enqueue_depth = UINT32_MAX;
+ dev_info->event_dev_cap |= RTE_EVENT_DEV_CAP_EVENT_PRESCHEDULE |
+ RTE_EVENT_DEV_CAP_EVENT_PRESCHEDULE_ADAPTIVE |
+ RTE_EVENT_DEV_CAP_PER_PORT_PRESCHEDULE;
}
static int
@@ -566,6 +570,19 @@ cn10k_sso_dev_configure(const struct rte_eventdev *event_dev)
if (rc < 0)
goto cnxk_rsrc_fini;
+ switch (event_dev->data->dev_conf.preschedule_type) {
+ default:
+ case RTE_EVENT_PRESCHEDULE_NONE:
+ dev->gw_mode = CN10K_GW_MODE_NONE;
+ break;
+ case RTE_EVENT_PRESCHEDULE:
+ dev->gw_mode = CN10K_GW_MODE_PREF;
+ break;
+ case RTE_EVENT_PRESCHEDULE_ADAPTIVE:
+ dev->gw_mode = CN10K_GW_MODE_PREF_WFE;
+ break;
+ }
+
rc = cnxk_setup_event_ports(event_dev, cn10k_sso_init_hws_mem,
cn10k_sso_hws_setup);
if (rc < 0)
@@ -1199,7 +1216,6 @@ cn10k_sso_init(struct rte_eventdev *event_dev)
return 0;
}
- dev->gw_mode = CN10K_GW_MODE_PREF_WFE;
rc = cnxk_sso_init(event_dev);
if (rc < 0)
return rc;
@@ -1256,7 +1272,6 @@ RTE_PMD_REGISTER_KMOD_DEP(event_cn10k, "vfio-pci");
RTE_PMD_REGISTER_PARAM_STRING(event_cn10k, CNXK_SSO_XAE_CNT "=<int>"
CNXK_SSO_GGRP_QOS "=<string>"
CNXK_SSO_FORCE_BP "=1"
- CN10K_SSO_GW_MODE "=<int>"
CN10K_SSO_STASH "=<string>"
CNXK_TIM_DISABLE_NPA "=1"
CNXK_TIM_CHNK_SLOTS "=<int>"
diff --git a/drivers/event/cnxk/cn10k_worker.c b/drivers/event/cnxk/cn10k_worker.c
index d59769717e..a0e85face1 100644
--- a/drivers/event/cnxk/cn10k_worker.c
+++ b/drivers/event/cnxk/cn10k_worker.c
@@ -442,3 +442,24 @@ cn10k_sso_hws_profile_switch(void *port, uint8_t profile)
return 0;
}
+
+int __rte_hot
+cn10k_sso_hws_preschedule_modify(void *port, enum rte_event_dev_preschedule_type type)
+{
+ struct cn10k_sso_hws *ws = port;
+
+ ws->gw_wdata &= ~(BIT(19) | BIT(20));
+ switch (type) {
+ default:
+ case RTE_EVENT_PRESCHEDULE_NONE:
+ break;
+ case RTE_EVENT_PRESCHEDULE:
+ ws->gw_wdata |= BIT(19);
+ break;
+ case RTE_EVENT_PRESCHEDULE_ADAPTIVE:
+ ws->gw_wdata |= BIT(19) | BIT(20);
+ break;
+ }
+
+ return 0;
+}
diff --git a/drivers/event/cnxk/cn10k_worker.h b/drivers/event/cnxk/cn10k_worker.h
index c5026409d7..4785cc6575 100644
--- a/drivers/event/cnxk/cn10k_worker.h
+++ b/drivers/event/cnxk/cn10k_worker.h
@@ -377,6 +377,8 @@ uint16_t __rte_hot cn10k_sso_hws_enq_fwd_burst(void *port,
const struct rte_event ev[],
uint16_t nb_events);
int __rte_hot cn10k_sso_hws_profile_switch(void *port, uint8_t profile);
+int __rte_hot cn10k_sso_hws_preschedule_modify(void *port,
+ enum rte_event_dev_preschedule_type type);
#define R(name, flags) \
uint16_t __rte_hot cn10k_sso_hws_deq_##name( \
diff --git a/drivers/event/cnxk/cnxk_eventdev.c b/drivers/event/cnxk/cnxk_eventdev.c
index 4b2d6bffa6..c1df481827 100644
--- a/drivers/event/cnxk/cnxk_eventdev.c
+++ b/drivers/event/cnxk/cnxk_eventdev.c
@@ -624,8 +624,6 @@ cnxk_sso_parse_devargs(struct cnxk_sso_evdev *dev, struct rte_devargs *devargs)
&dev->force_ena_bp);
rte_kvargs_process(kvlist, CN9K_SSO_SINGLE_WS, &parse_kvargs_flag,
&single_ws);
- rte_kvargs_process(kvlist, CN10K_SSO_GW_MODE, &parse_kvargs_value,
- &dev->gw_mode);
rte_kvargs_process(kvlist, CN10K_SSO_STASH,
&parse_sso_kvargs_stash_dict, dev);
dev->dual_ws = !single_ws;
diff --git a/drivers/event/cnxk/cnxk_eventdev.h b/drivers/event/cnxk/cnxk_eventdev.h
index ece49394e7..f147ef3c78 100644
--- a/drivers/event/cnxk/cnxk_eventdev.h
+++ b/drivers/event/cnxk/cnxk_eventdev.h
@@ -30,7 +30,6 @@
#define CNXK_SSO_GGRP_QOS "qos"
#define CNXK_SSO_FORCE_BP "force_rx_bp"
#define CN9K_SSO_SINGLE_WS "single_ws"
-#define CN10K_SSO_GW_MODE "gw_mode"
#define CN10K_SSO_STASH "stash"
#define CNXK_SSO_MAX_PROFILES 2
--
2.25.1
next prev parent reply other threads:[~2024-10-06 17:06 UTC|newest]
Thread overview: 77+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-10 8:31 [RFC 0/3] Introduce event prefetching pbhagavatula
2024-09-10 8:31 ` [RFC 1/3] eventdev: introduce " pbhagavatula
2024-09-10 8:31 ` [RFC 2/3] eventdev: allow event ports to modified prefetches pbhagavatula
2024-09-10 8:31 ` [RFC 3/3] eventdev: add SW event prefetch hint pbhagavatula
2024-09-10 9:08 ` [RFC 0/3] Introduce event prefetching Mattias Rönnblom
2024-09-10 11:53 ` [EXTERNAL] " Pavan Nikhilesh Bhagavatula
2024-09-17 7:11 ` [PATCH v2 0/3] Introduce event pre-scheduling pbhagavatula
2024-09-17 7:11 ` [PATCH v2 1/3] eventdev: introduce " pbhagavatula
2024-09-18 22:38 ` Pathak, Pravin
2024-09-19 13:13 ` Pavan Nikhilesh Bhagavatula
2024-09-23 8:57 ` Mattias Rönnblom
2024-09-25 10:30 ` [EXTERNAL] " Pavan Nikhilesh Bhagavatula
2024-09-26 2:54 ` Pathak, Pravin
2024-09-26 10:03 ` Pavan Nikhilesh Bhagavatula
2024-09-27 3:31 ` Pathak, Pravin
2024-09-17 7:11 ` [PATCH v2 2/3] eventdev: add event port pre-schedule modify pbhagavatula
2024-09-17 7:11 ` [PATCH v2 3/3] eventdev: add SW event preschedule hint pbhagavatula
2024-10-01 6:14 ` [PATCH v3 0/6] Introduce event pre-scheduling pbhagavatula
2024-10-01 6:14 ` [PATCH v3 1/6] eventdev: introduce " pbhagavatula
2024-10-01 6:14 ` [PATCH v3 2/6] eventdev: add event port pre-schedule modify pbhagavatula
2024-10-01 6:14 ` [PATCH v3 3/6] eventdev: add SW event preschedule hint pbhagavatula
2024-10-01 6:14 ` [PATCH v3 4/6] event/cnkx: add pre-schedule support pbhagavatula
2024-10-01 6:14 ` [PATCH v3 5/6] app/test-eventdev: add pre-scheduling support pbhagavatula
2024-10-01 6:14 ` [PATCH v3 6/6] examples: use eventdev pre-scheduling pbhagavatula
2024-10-01 13:18 ` [PATCH v4 0/6] Introduce event pre-scheduling pbhagavatula
2024-10-01 13:18 ` [PATCH v4 1/6] eventdev: introduce " pbhagavatula
2024-10-04 4:47 ` Jerin Jacob
2024-10-01 13:18 ` [PATCH v4 2/6] eventdev: add event port pre-schedule modify pbhagavatula
2024-10-04 5:02 ` Jerin Jacob
2024-10-01 13:18 ` [PATCH v4 3/6] eventdev: add SW event preschedule hint pbhagavatula
2024-10-04 5:14 ` Jerin Jacob
2024-10-01 13:18 ` [PATCH v4 4/6] event/cnkx: add pre-schedule support pbhagavatula
2024-10-01 13:19 ` [PATCH v4 5/6] app/test-eventdev: add pre-scheduling support pbhagavatula
2024-10-01 13:19 ` [PATCH v4 6/6] examples: use eventdev pre-scheduling pbhagavatula
2024-10-01 15:33 ` [PATCH v4 0/6] Introduce event pre-scheduling Stephen Hemminger
2024-10-03 5:46 ` [EXTERNAL] " Pavan Nikhilesh Bhagavatula
2024-10-04 16:24 ` [PATCH v5 " pbhagavatula
2024-10-04 16:24 ` [PATCH v5 1/6] eventdev: introduce " pbhagavatula
2024-10-04 16:24 ` [PATCH v5 2/6] eventdev: add event port pre-schedule modify pbhagavatula
2024-10-04 16:24 ` [PATCH v5 3/6] eventdev: add event preschedule hint pbhagavatula
2024-10-04 16:24 ` [PATCH v5 4/6] event/cnkx: add pre-schedule support pbhagavatula
2024-10-04 16:24 ` [PATCH v5 5/6] app/test-eventdev: add pre-scheduling support pbhagavatula
2024-10-04 16:24 ` [PATCH v5 6/6] examples: use eventdev pre-scheduling pbhagavatula
2024-10-04 16:35 ` [PATCH v5 0/6] Introduce event pre-scheduling Stephen Hemminger
2024-10-04 16:50 ` [EXTERNAL] " Pavan Nikhilesh Bhagavatula
2024-10-05 7:25 ` [PATCH v6 " pbhagavatula
2024-10-05 7:25 ` [PATCH v6 1/6] eventdev: introduce " pbhagavatula
2024-10-05 7:25 ` [PATCH v6 2/6] eventdev: add event port pre-schedule modify pbhagavatula
2024-10-05 7:25 ` [PATCH v6 3/6] eventdev: add event preschedule hint pbhagavatula
2024-10-05 7:25 ` [PATCH v6 4/6] event/cnkx: add pre-schedule support pbhagavatula
2024-10-05 7:25 ` [PATCH v6 5/6] app/test-eventdev: add pre-scheduling support pbhagavatula
2024-10-05 7:26 ` [PATCH v6 6/6] examples: use eventdev pre-scheduling pbhagavatula
2024-10-05 7:59 ` [PATCH v7 0/6] Introduce event pre-scheduling pbhagavatula
2024-10-05 7:59 ` [PATCH v7 1/6] eventdev: introduce " pbhagavatula
2024-10-05 16:11 ` Stephen Hemminger
2024-10-06 17:03 ` [EXTERNAL] " Pavan Nikhilesh Bhagavatula
2024-10-05 7:59 ` [PATCH v7 2/6] eventdev: add event port pre-schedule modify pbhagavatula
2024-10-05 7:59 ` [PATCH v7 3/6] eventdev: add event preschedule hint pbhagavatula
2024-10-05 7:59 ` [PATCH v7 4/6] event/cnkx: add pre-schedule support pbhagavatula
2024-10-05 8:00 ` [PATCH v7 5/6] app/test-eventdev: add pre-scheduling support pbhagavatula
2024-10-05 8:00 ` [PATCH v7 6/6] examples: use eventdev pre-scheduling pbhagavatula
2024-10-06 17:06 ` [PATCH v8 0/6] Introduce event pre-scheduling pbhagavatula
2024-10-06 17:06 ` [PATCH v8 1/6] eventdev: introduce " pbhagavatula
2024-10-06 17:06 ` [PATCH v8 2/6] eventdev: add event port pre-schedule modify pbhagavatula
2024-10-06 17:06 ` [PATCH v8 3/6] eventdev: add event preschedule hint pbhagavatula
2024-10-07 12:24 ` Jerin Jacob
2024-10-06 17:06 ` pbhagavatula [this message]
2024-10-06 17:06 ` [PATCH v8 5/6] app/test-eventdev: add pre-scheduling support pbhagavatula
2024-10-06 17:06 ` [PATCH v8 6/6] examples: use eventdev pre-scheduling pbhagavatula
2024-10-07 13:09 ` [PATCH v9 0/6] Introduce event pre-scheduling pbhagavatula
2024-10-07 13:09 ` [PATCH v9 1/6] eventdev: introduce " pbhagavatula
2024-10-07 13:09 ` [PATCH v9 2/6] eventdev: add event port pre-schedule modify pbhagavatula
2024-10-07 13:09 ` [PATCH v9 3/6] eventdev: add event preschedule hint pbhagavatula
2024-10-07 13:09 ` [PATCH v9 4/6] event/cnkx: add pre-schedule support pbhagavatula
2024-10-07 13:09 ` [PATCH v9 5/6] app/test-eventdev: add pre-scheduling support pbhagavatula
2024-10-07 13:09 ` [PATCH v9 6/6] examples: use eventdev pre-scheduling pbhagavatula
2024-10-08 5:17 ` [PATCH v9 0/6] Introduce event pre-scheduling Jerin Jacob
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=20241006170608.14182-5-pbhagavatula@marvell.com \
--to=pbhagavatula@marvell.com \
--cc=abdullah.sevincer@intel.com \
--cc=dev@dpdk.org \
--cc=harry.van.haaren@intel.com \
--cc=hemant.agrawal@nxp.com \
--cc=jerinj@marvell.com \
--cc=liangma@liangbit.com \
--cc=mattias.ronnblom@ericsson.com \
--cc=peter.mccarthy@intel.com \
--cc=sachin.saxena@oss.nxp.com \
--cc=stephen@networkplumber.org \
--cc=sthotton@marvell.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).