Thread (86 messages) 86 messages, 7 authors, 2021-11-26

Re: [dpdk-dev] [PATCH] eventdev: negate maintenance capability flag

From: Mattias Rönnblom <hidden>
Date: 2021-11-10 10:07:36

On 2021-11-10 10:55, Van Haaren, Harry wrote:
quoted
-----Original Message-----
From: Mattias Rönnblom <redacted>
Sent: Wednesday, November 10, 2021 9:29 AM
To: jerinj@marvell.com; Jerin Jacob <redacted>; Sunil Kumar Kori
[off-list ref]
Cc: dev@dpdk.org; Pavan Nikhilesh Bhagavatula <redacted>;
Hemant Agrawal [off-list ref]; Nipun Gupta
[off-list ref]; Van Haaren, Harry [off-list ref];
Thomas Monjalon [off-list ref]; David Marchand
[off-list ref]; Gujjar, Abhinandan S
[off-list ref]; Carrillo, Erik G [off-list ref];
Jayatheerthan, Jay [off-list ref]; Yigit, Ferruh
[off-list ref]; Akhil Goyal [off-list ref]; mattias.ronnblom
[off-list ref]
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 <redacted>
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>
quoted
  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:
quoted
  				 RTE_EVENT_DEV_CAP_CARRY_FLOW_ID,
with:
quoted
  				 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!
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help