eventdev: negate maintenance capability flag

Message ID 20211110092906.20980-1-mattias.ronnblom@ericsson.com (mailing list archive)
State Superseded, archived
Headers
Series eventdev: negate maintenance capability flag |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/github-robot: build fail github build: failed
ci/Intel-compilation fail Compilation issues

Commit Message

Mattias Rönnblom Nov. 10, 2021, 9:29 a.m. UTC
  Replace RTE_EVENT_DEV_CAP_REQUIRES_MAINT, which signaled the need
for the application to call rte_event_maintain(), with
RTE_EVENT_DEV_CAP_MAINTENANCE_FREE, which does the opposite (i.e.,
signifies that the event device does not require maintenance).

This approach is more in line with how other eventdev hardware and/or
software limitations are handled in the Eventdev API.

Signed-off-by: Mattias Rönnblom <mattias.ronnblom@ericsson.com>
---
 doc/guides/eventdevs/dsw.rst               |  4 ++--
 drivers/event/cnxk/cnxk_eventdev.c         |  3 ++-
 drivers/event/dlb2/dlb2.c                  |  3 ++-
 drivers/event/dpaa/dpaa_eventdev.c         |  3 ++-
 drivers/event/dpaa2/dpaa2_eventdev.c       |  3 ++-
 drivers/event/dsw/dsw_evdev.c              |  3 +--
 drivers/event/octeontx/ssovf_evdev.c       |  3 ++-
 drivers/event/octeontx2/otx2_evdev.c       |  3 ++-
 drivers/event/opdl/opdl_evdev.c            |  1 +
 drivers/event/skeleton/skeleton_eventdev.c |  3 ++-
 drivers/event/sw/sw_evdev.c                |  3 ++-
 lib/eventdev/rte_eventdev.h                | 19 ++++++++++---------
 12 files changed, 30 insertions(+), 21 deletions(-)
  

Comments

Van Haaren, Harry Nov. 10, 2021, 9:55 a.m. UTC | #1
> -----Original Message-----
> From: Mattias Rönnblom <mattias.ronnblom@ericsson.com>
> Sent: Wednesday, November 10, 2021 9:29 AM
> To: jerinj@marvell.com; Jerin Jacob <jerinjacobk@gmail.com>; Sunil Kumar Kori
> <skori@marvell.com>
> Cc: dev@dpdk.org; Pavan Nikhilesh Bhagavatula <pbhagavatula@marvell.com>;
> Hemant Agrawal <hemant.agrawal@nxp.com>; Nipun Gupta
> <nipun.gupta@nxp.com>; Van Haaren, Harry <harry.van.haaren@intel.com>;
> Thomas Monjalon <thomas@monjalon.net>; David Marchand
> <david.marchand@redhat.com>; Gujjar, Abhinandan S
> <abhinandan.gujjar@intel.com>; Carrillo, Erik G <erik.g.carrillo@intel.com>;
> Jayatheerthan, Jay <jay.jayatheerthan@intel.com>; Yigit, Ferruh
> <ferruh.yigit@intel.com>; Akhil Goyal <gakhil@marvell.com>; mattias.ronnblom
> <mattias.ronnblom@ericsson.com>
> Subject: [PATCH] eventdev: negate maintenance capability flag
> 
> Replace RTE_EVENT_DEV_CAP_REQUIRES_MAINT, which signaled the need
> for the application to call rte_event_maintain(), with
> RTE_EVENT_DEV_CAP_MAINTENANCE_FREE, which does the opposite (i.e.,
> signifies that the event device does not require maintenance).
> 
> This approach is more in line with how other eventdev hardware and/or
> software limitations are handled in the Eventdev API.
> 
> Signed-off-by: Mattias Rönnblom <mattias.ronnblom@ericsson.com>

Generally patch looks fine to me, but on testing I got a strange warning from the
compiler on the OPDL driver:

In file included from ../drivers/event/opdl/opdl_evdev.h:8,
                 from ../drivers/event/opdl/opdl_evdev.c:15:
../drivers/event/opdl/opdl_evdev.c: In function ‘opdl_info_get’:
../lib/eventdev/rte_eventdev.h:302:44: warning: conversion from ‘long long unsigned int’ to ‘un
signed char’ changes value from ‘1024’ to ‘0’ [-Woverflow]
  302 | #define RTE_EVENT_DEV_CAP_MAINTENANCE_FREE (1ULL << 10)
      |                                            ^
../drivers/event/opdl/opdl_evdev.c:379:34: note: in expansion of macro ‘RTE_EVENT_DEV_CAP_MAINT
ENANCE_FREE’
  379 |                                  RTE_EVENT_DEV_CAP_MAINTENANCE_FREE,
      |                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Investigating, RTE_EVENT_DEV_CAP_* are assigned to struct rte_event_dev_info::event_dev_cap,
which is a uint32_t. The error suggests that the variable being assigned to is a "unsigned char"? 

<snip>

>  static void
> diff --git a/drivers/event/opdl/opdl_evdev.c b/drivers/event/opdl/opdl_evdev.c
> index 5007e9a7bf..787ee4713d 100644
> --- a/drivers/event/opdl/opdl_evdev.c
> +++ b/drivers/event/opdl/opdl_evdev.c
> @@ -376,6 +376,7 @@ opdl_info_get(struct rte_eventdev *dev, struct
> rte_event_dev_info *info)
>  		.max_num_events = OPDL_INFLIGHT_EVENTS_TOTAL,
>  		.event_dev_cap = RTE_EVENT_DEV_CAP_BURST_MODE |
>  				 RTE_EVENT_DEV_CAP_CARRY_FLOW_ID,
> +				 RTE_EVENT_DEV_CAP_MAINTENANCE_FREE,
>  	};

Aha! Replace:
>  				 RTE_EVENT_DEV_CAP_CARRY_FLOW_ID,
with:
>  				 RTE_EVENT_DEV_CAP_CARRY_FLOW_ID | 

The "," character was causing the _FREE flag to not be combined with the previous
flags field, instead being its own (unnamed?) assignment to the struct rte_event_dev_info.

With that , to | change, all looks good to me. -Harry
  
Mattias Rönnblom Nov. 10, 2021, 10:07 a.m. UTC | #2
On 2021-11-10 10:55, Van Haaren, Harry wrote:
>> -----Original Message-----
>> From: Mattias Rönnblom <mattias.ronnblom@ericsson.com>
>> Sent: Wednesday, November 10, 2021 9:29 AM
>> To: jerinj@marvell.com; Jerin Jacob <jerinjacobk@gmail.com>; Sunil Kumar Kori
>> <skori@marvell.com>
>> Cc: dev@dpdk.org; Pavan Nikhilesh Bhagavatula <pbhagavatula@marvell.com>;
>> Hemant Agrawal <hemant.agrawal@nxp.com>; Nipun Gupta
>> <nipun.gupta@nxp.com>; Van Haaren, Harry <harry.van.haaren@intel.com>;
>> Thomas Monjalon <thomas@monjalon.net>; David Marchand
>> <david.marchand@redhat.com>; Gujjar, Abhinandan S
>> <abhinandan.gujjar@intel.com>; Carrillo, Erik G <erik.g.carrillo@intel.com>;
>> Jayatheerthan, Jay <jay.jayatheerthan@intel.com>; Yigit, Ferruh
>> <ferruh.yigit@intel.com>; Akhil Goyal <gakhil@marvell.com>; mattias.ronnblom
>> <mattias.ronnblom@ericsson.com>
>> Subject: [PATCH] eventdev: negate maintenance capability flag
>>
>> Replace RTE_EVENT_DEV_CAP_REQUIRES_MAINT, which signaled the need
>> for the application to call rte_event_maintain(), with
>> RTE_EVENT_DEV_CAP_MAINTENANCE_FREE, which does the opposite (i.e.,
>> signifies that the event device does not require maintenance).
>>
>> This approach is more in line with how other eventdev hardware and/or
>> software limitations are handled in the Eventdev API.
>>
>> Signed-off-by: Mattias Rönnblom <mattias.ronnblom@ericsson.com>
> Generally patch looks fine to me, but on testing I got a strange warning from the
> compiler on the OPDL driver:
>
> In file included from ../drivers/event/opdl/opdl_evdev.h:8,
>                   from ../drivers/event/opdl/opdl_evdev.c:15:
> ../drivers/event/opdl/opdl_evdev.c: In function ‘opdl_info_get’:
> ../lib/eventdev/rte_eventdev.h:302:44: warning: conversion from ‘long long unsigned int’ to ‘un
> signed char’ changes value from ‘1024’ to ‘0’ [-Woverflow]
>    302 | #define RTE_EVENT_DEV_CAP_MAINTENANCE_FREE (1ULL << 10)
>        |                                            ^
> ../drivers/event/opdl/opdl_evdev.c:379:34: note: in expansion of macro ‘RTE_EVENT_DEV_CAP_MAINT
> ENANCE_FREE’
>    379 |                                  RTE_EVENT_DEV_CAP_MAINTENANCE_FREE,
>        |                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> Investigating, RTE_EVENT_DEV_CAP_* are assigned to struct rte_event_dev_info::event_dev_cap,
> which is a uint32_t. The error suggests that the variable being assigned to is a "unsigned char"?
>
> <snip>
>
>>   static void
>> diff --git a/drivers/event/opdl/opdl_evdev.c b/drivers/event/opdl/opdl_evdev.c
>> index 5007e9a7bf..787ee4713d 100644
>> --- a/drivers/event/opdl/opdl_evdev.c
>> +++ b/drivers/event/opdl/opdl_evdev.c
>> @@ -376,6 +376,7 @@ opdl_info_get(struct rte_eventdev *dev, struct
>> rte_event_dev_info *info)
>>   		.max_num_events = OPDL_INFLIGHT_EVENTS_TOTAL,
>>   		.event_dev_cap = RTE_EVENT_DEV_CAP_BURST_MODE |
>>   				 RTE_EVENT_DEV_CAP_CARRY_FLOW_ID,
>> +				 RTE_EVENT_DEV_CAP_MAINTENANCE_FREE,
>>   	};
> Aha! Replace:
>>   				 RTE_EVENT_DEV_CAP_CARRY_FLOW_ID,
> with:
>>   				 RTE_EVENT_DEV_CAP_CARRY_FLOW_ID |
> The "," character was causing the _FREE flag to not be combined with the previous
> flags field, instead being its own (unnamed?) assignment to the struct rte_event_dev_info.
>
> With that , to | change, all looks good to me. -Harry
>
>
I sent a v2. Thanks!
  
Jerin Jacob Nov. 10, 2021, 10:43 a.m. UTC | #3
On Wed, Nov 10, 2021 at 3:37 PM Mattias Rönnblom
<mattias.ronnblom@ericsson.com> wrote:
>
> On 2021-11-10 10:55, Van Haaren, Harry wrote:
> >> -----Original Message-----
> >> From: Mattias Rönnblom <mattias.ronnblom@ericsson.com>
> >> Sent: Wednesday, November 10, 2021 9:29 AM
> >> To: jerinj@marvell.com; Jerin Jacob <jerinjacobk@gmail.com>; Sunil Kumar Kori
> >> <skori@marvell.com>
> >> Cc: dev@dpdk.org; Pavan Nikhilesh Bhagavatula <pbhagavatula@marvell.com>;
> >> Hemant Agrawal <hemant.agrawal@nxp.com>; Nipun Gupta
> >> <nipun.gupta@nxp.com>; Van Haaren, Harry <harry.van.haaren@intel.com>;
> >> Thomas Monjalon <thomas@monjalon.net>; David Marchand
> >> <david.marchand@redhat.com>; Gujjar, Abhinandan S
> >> <abhinandan.gujjar@intel.com>; Carrillo, Erik G <erik.g.carrillo@intel.com>;
> >> Jayatheerthan, Jay <jay.jayatheerthan@intel.com>; Yigit, Ferruh
> >> <ferruh.yigit@intel.com>; Akhil Goyal <gakhil@marvell.com>; mattias.ronnblom
> >> <mattias.ronnblom@ericsson.com>
> >> Subject: [PATCH] eventdev: negate maintenance capability flag
> >>
> >> Replace RTE_EVENT_DEV_CAP_REQUIRES_MAINT, which signaled the need
> >> for the application to call rte_event_maintain(), with
> >> RTE_EVENT_DEV_CAP_MAINTENANCE_FREE, which does the opposite (i.e.,
> >> signifies that the event device does not require maintenance).
> >>
> >> This approach is more in line with how other eventdev hardware and/or
> >> software limitations are handled in the Eventdev API.
> >>
> >> Signed-off-by: Mattias Rönnblom <mattias.ronnblom@ericsson.com>
> > Generally patch looks fine to me, but on testing I got a strange warning from the
> > compiler on the OPDL driver:
> >
> > In file included from ../drivers/event/opdl/opdl_evdev.h:8,
> >                   from ../drivers/event/opdl/opdl_evdev.c:15:
> > ../drivers/event/opdl/opdl_evdev.c: In function ‘opdl_info_get’:
> > ../lib/eventdev/rte_eventdev.h:302:44: warning: conversion from ‘long long unsigned int’ to ‘un
> > signed char’ changes value from ‘1024’ to ‘0’ [-Woverflow]
> >    302 | #define RTE_EVENT_DEV_CAP_MAINTENANCE_FREE (1ULL << 10)
> >        |                                            ^
> > ../drivers/event/opdl/opdl_evdev.c:379:34: note: in expansion of macro ‘RTE_EVENT_DEV_CAP_MAINT
> > ENANCE_FREE’
> >    379 |                                  RTE_EVENT_DEV_CAP_MAINTENANCE_FREE,
> >        |                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> >
> > Investigating, RTE_EVENT_DEV_CAP_* are assigned to struct rte_event_dev_info::event_dev_cap,
> > which is a uint32_t. The error suggests that the variable being assigned to is a "unsigned char"?
> >
> > <snip>
> >
> >>   static void
> >> diff --git a/drivers/event/opdl/opdl_evdev.c b/drivers/event/opdl/opdl_evdev.c
> >> index 5007e9a7bf..787ee4713d 100644
> >> --- a/drivers/event/opdl/opdl_evdev.c
> >> +++ b/drivers/event/opdl/opdl_evdev.c
> >> @@ -376,6 +376,7 @@ opdl_info_get(struct rte_eventdev *dev, struct
> >> rte_event_dev_info *info)
> >>              .max_num_events = OPDL_INFLIGHT_EVENTS_TOTAL,
> >>              .event_dev_cap = RTE_EVENT_DEV_CAP_BURST_MODE |
> >>                               RTE_EVENT_DEV_CAP_CARRY_FLOW_ID,
> >> +                             RTE_EVENT_DEV_CAP_MAINTENANCE_FREE,
> >>      };
> > Aha! Replace:
> >>                               RTE_EVENT_DEV_CAP_CARRY_FLOW_ID,
> > with:
> >>                               RTE_EVENT_DEV_CAP_CARRY_FLOW_ID |
> > The "," character was causing the _FREE flag to not be combined with the previous
> > flags field, instead being its own (unnamed?) assignment to the struct rte_event_dev_info.
> >
> > With that , to | change, all looks good to me. -Harry
> >
> >
> I sent a v2. Thanks!

v2 has doc build error. Please send v3

http://mails.dpdk.org/archives/test-report/2021-November/241649.html
>
  

Patch

diff --git a/doc/guides/eventdevs/dsw.rst b/doc/guides/eventdevs/dsw.rst
index 18f7e9588f..5c6b51f65f 100644
--- a/doc/guides/eventdevs/dsw.rst
+++ b/doc/guides/eventdevs/dsw.rst
@@ -44,8 +44,8 @@  Port Maintenance
 ~~~~~~~~~~~~~~~~
 
 The distributed software eventdev uses an internal signaling scheme
-between the ports to achieve load balancing. Therefore, it sets the
-``RTE_EVENT_DEV_CAP_REQUIRES_MAINT`` flag.
+between the ports to achieve load balancing. Therefore, it does not
+set the ``RTE_EVENT_DEV_CAP_MAINTENANCE_FREE`` flag.
 
 During periods when the application thread using a particular port is
 neither attempting to enqueue nor to dequeue events, it must
diff --git a/drivers/event/cnxk/cnxk_eventdev.c b/drivers/event/cnxk/cnxk_eventdev.c
index 50d5c351bc..f7a5026250 100644
--- a/drivers/event/cnxk/cnxk_eventdev.c
+++ b/drivers/event/cnxk/cnxk_eventdev.c
@@ -119,7 +119,8 @@  cnxk_sso_info_get(struct cnxk_sso_evdev *dev,
 				  RTE_EVENT_DEV_CAP_RUNTIME_PORT_LINK |
 				  RTE_EVENT_DEV_CAP_MULTIPLE_QUEUE_PORT |
 				  RTE_EVENT_DEV_CAP_NONSEQ_MODE |
-				  RTE_EVENT_DEV_CAP_CARRY_FLOW_ID;
+				  RTE_EVENT_DEV_CAP_CARRY_FLOW_ID |
+				  RTE_EVENT_DEV_CAP_MAINTENANCE_FREE;
 }
 
 int
diff --git a/drivers/event/dlb2/dlb2.c b/drivers/event/dlb2/dlb2.c
index 0dbe85762c..16e9764dbf 100644
--- a/drivers/event/dlb2/dlb2.c
+++ b/drivers/event/dlb2/dlb2.c
@@ -66,7 +66,8 @@  static struct rte_event_dev_info evdev_dlb2_default_info = {
 			  RTE_EVENT_DEV_CAP_BURST_MODE |
 			  RTE_EVENT_DEV_CAP_DISTRIBUTED_SCHED |
 			  RTE_EVENT_DEV_CAP_IMPLICIT_RELEASE_DISABLE |
-			  RTE_EVENT_DEV_CAP_QUEUE_ALL_TYPES),
+			  RTE_EVENT_DEV_CAP_QUEUE_ALL_TYPES |
+			  RTE_EVENT_DEV_CAP_MAINTENANCE_FREE),
 };
 
 struct process_local_port_data
diff --git a/drivers/event/dpaa/dpaa_eventdev.c b/drivers/event/dpaa/dpaa_eventdev.c
index eec4bc62b7..ff6cc0be18 100644
--- a/drivers/event/dpaa/dpaa_eventdev.c
+++ b/drivers/event/dpaa/dpaa_eventdev.c
@@ -356,7 +356,8 @@  dpaa_event_dev_info_get(struct rte_eventdev *dev,
 		RTE_EVENT_DEV_CAP_BURST_MODE |
 		RTE_EVENT_DEV_CAP_MULTIPLE_QUEUE_PORT |
 		RTE_EVENT_DEV_CAP_NONSEQ_MODE |
-		RTE_EVENT_DEV_CAP_CARRY_FLOW_ID;
+		RTE_EVENT_DEV_CAP_CARRY_FLOW_ID |
+		RTE_EVENT_DEV_CAP_MAINTENANCE_FREE;
 }
 
 static int
diff --git a/drivers/event/dpaa2/dpaa2_eventdev.c b/drivers/event/dpaa2/dpaa2_eventdev.c
index 710156ad14..4d94c315d2 100644
--- a/drivers/event/dpaa2/dpaa2_eventdev.c
+++ b/drivers/event/dpaa2/dpaa2_eventdev.c
@@ -408,7 +408,8 @@  dpaa2_eventdev_info_get(struct rte_eventdev *dev,
 		RTE_EVENT_DEV_CAP_MULTIPLE_QUEUE_PORT |
 		RTE_EVENT_DEV_CAP_NONSEQ_MODE |
 		RTE_EVENT_DEV_CAP_QUEUE_ALL_TYPES |
-		RTE_EVENT_DEV_CAP_CARRY_FLOW_ID;
+		RTE_EVENT_DEV_CAP_CARRY_FLOW_ID |
+		RTE_EVENT_DEV_CAP_MAINTENANCE_FREE;
 
 }
 
diff --git a/drivers/event/dsw/dsw_evdev.c b/drivers/event/dsw/dsw_evdev.c
index 5ff8fcc6a9..ffabf0d23d 100644
--- a/drivers/event/dsw/dsw_evdev.c
+++ b/drivers/event/dsw/dsw_evdev.c
@@ -222,8 +222,7 @@  dsw_info_get(struct rte_eventdev *dev __rte_unused,
 		RTE_EVENT_DEV_CAP_DISTRIBUTED_SCHED|
 		RTE_EVENT_DEV_CAP_NONSEQ_MODE|
 		RTE_EVENT_DEV_CAP_MULTIPLE_QUEUE_PORT|
-		RTE_EVENT_DEV_CAP_CARRY_FLOW_ID|
-		RTE_EVENT_DEV_CAP_REQUIRES_MAINT
+		RTE_EVENT_DEV_CAP_CARRY_FLOW_ID
 	};
 }
 
diff --git a/drivers/event/octeontx/ssovf_evdev.c b/drivers/event/octeontx/ssovf_evdev.c
index 366b6d356b..9e14e35d10 100644
--- a/drivers/event/octeontx/ssovf_evdev.c
+++ b/drivers/event/octeontx/ssovf_evdev.c
@@ -155,7 +155,8 @@  ssovf_info_get(struct rte_eventdev *dev, struct rte_event_dev_info *dev_info)
 					RTE_EVENT_DEV_CAP_RUNTIME_PORT_LINK |
 					RTE_EVENT_DEV_CAP_MULTIPLE_QUEUE_PORT |
 					RTE_EVENT_DEV_CAP_NONSEQ_MODE |
-					RTE_EVENT_DEV_CAP_CARRY_FLOW_ID;
+					RTE_EVENT_DEV_CAP_CARRY_FLOW_ID |
+					RTE_EVENT_DEV_CAP_MAINTENANCE_FREE;
 
 }
 
diff --git a/drivers/event/octeontx2/otx2_evdev.c b/drivers/event/octeontx2/otx2_evdev.c
index f26bed334f..ccf28b678b 100644
--- a/drivers/event/octeontx2/otx2_evdev.c
+++ b/drivers/event/octeontx2/otx2_evdev.c
@@ -505,7 +505,8 @@  otx2_sso_info_get(struct rte_eventdev *event_dev,
 					RTE_EVENT_DEV_CAP_RUNTIME_PORT_LINK |
 					RTE_EVENT_DEV_CAP_MULTIPLE_QUEUE_PORT |
 					RTE_EVENT_DEV_CAP_NONSEQ_MODE |
-					RTE_EVENT_DEV_CAP_CARRY_FLOW_ID;
+					RTE_EVENT_DEV_CAP_CARRY_FLOW_ID |
+					RTE_EVENT_DEV_CAP_MAINTENANCE_FREE;
 }
 
 static void
diff --git a/drivers/event/opdl/opdl_evdev.c b/drivers/event/opdl/opdl_evdev.c
index 5007e9a7bf..787ee4713d 100644
--- a/drivers/event/opdl/opdl_evdev.c
+++ b/drivers/event/opdl/opdl_evdev.c
@@ -376,6 +376,7 @@  opdl_info_get(struct rte_eventdev *dev, struct rte_event_dev_info *info)
 		.max_num_events = OPDL_INFLIGHT_EVENTS_TOTAL,
 		.event_dev_cap = RTE_EVENT_DEV_CAP_BURST_MODE |
 				 RTE_EVENT_DEV_CAP_CARRY_FLOW_ID,
+				 RTE_EVENT_DEV_CAP_MAINTENANCE_FREE,
 	};
 
 	*info = evdev_opdl_info;
diff --git a/drivers/event/skeleton/skeleton_eventdev.c b/drivers/event/skeleton/skeleton_eventdev.c
index af0efb3302..bf3b01ebc8 100644
--- a/drivers/event/skeleton/skeleton_eventdev.c
+++ b/drivers/event/skeleton/skeleton_eventdev.c
@@ -102,7 +102,8 @@  skeleton_eventdev_info_get(struct rte_eventdev *dev,
 	dev_info->event_dev_cap = RTE_EVENT_DEV_CAP_QUEUE_QOS |
 					RTE_EVENT_DEV_CAP_BURST_MODE |
 					RTE_EVENT_DEV_CAP_EVENT_QOS |
-					RTE_EVENT_DEV_CAP_CARRY_FLOW_ID;
+					RTE_EVENT_DEV_CAP_CARRY_FLOW_ID |
+					RTE_EVENT_DEV_CAP_MAINTENANCE_FREE;
 }
 
 static int
diff --git a/drivers/event/sw/sw_evdev.c b/drivers/event/sw/sw_evdev.c
index 070a4802e9..808f59d1e5 100644
--- a/drivers/event/sw/sw_evdev.c
+++ b/drivers/event/sw/sw_evdev.c
@@ -609,7 +609,8 @@  sw_info_get(struct rte_eventdev *dev, struct rte_event_dev_info *info)
 				RTE_EVENT_DEV_CAP_RUNTIME_PORT_LINK |
 				RTE_EVENT_DEV_CAP_MULTIPLE_QUEUE_PORT |
 				RTE_EVENT_DEV_CAP_NONSEQ_MODE |
-				RTE_EVENT_DEV_CAP_CARRY_FLOW_ID),
+				RTE_EVENT_DEV_CAP_CARRY_FLOW_ID |
+				RTE_EVENT_DEV_CAP_MAINTENANCE_FREE),
 	};
 
 	*info = evdev_sw_info;
diff --git a/lib/eventdev/rte_eventdev.h b/lib/eventdev/rte_eventdev.h
index e026486ca5..4119f51fa0 100644
--- a/lib/eventdev/rte_eventdev.h
+++ b/lib/eventdev/rte_eventdev.h
@@ -299,13 +299,14 @@  struct rte_event;
  * the content of this field is implementation dependent.
  */
 
-#define RTE_EVENT_DEV_CAP_REQUIRES_MAINT (1ULL << 10)
-/**< Event device requires calls to rte_event_maintain() during
- * periods when neither rte_event_dequeue_burst() nor
- * rte_event_enqueue_burst() are called on a port. This will allow the
- * event device to perform internal processing, such as flushing
- * buffered events, return credits to a global pool, or process
- * signaling related to load balancing.
+#define RTE_EVENT_DEV_CAP_MAINTENANCE_FREE (1ULL << 10)
+/**< Event device *does not* require calls to rte_event_maintain().
+ * An event device that does not set this flag requires calls to
+ * rte_event_maintain() during periods when neither
+ * rte_event_dequeue_burst() nor rte_event_enqueue_burst() are called
+ * on a port. This will allow the event device to perform internal
+ * processing, such as flushing buffered events, return credits to a
+ * global pool, or process signaling related to load balancing.
  */
 
 /* Event device priority levels */
@@ -2082,8 +2083,8 @@  rte_event_dequeue_burst(uint8_t dev_id, uint8_t port_id, struct rte_event ev[],
 /**
  * Maintain an event device.
  *
- * This function is only relevant for event devices which have the
- * @ref RTE_EVENT_DEV_CAP_REQUIRES_MAINT flag set. Such devices
+ * This function is only relevant for event devices which do not have
+ * the @ref RTE_EVENT_DEV_CAP_MAINTENANCE_FREE flag set. Such devices
  * require an application thread using a particular port to
  * periodically call rte_event_maintain() on that port during periods
  * which it is neither attempting to enqueue events to nor dequeue