> -----Original Message----- > From: Varghese, Vipin > Sent: Friday, February 2, 2018 1:39 PM > To: Jerin Jacob <jerin.ja...@caviumnetworks.com>; Rao, Nikhil > <nikhil....@intel.com> > Cc: dev@dpdk.org; Jacob, Jerin <jerin.jacobkollanukka...@cavium.com>; Van > Haaren, Harry <harry.van.haa...@intel.com>; Hemant Agrawal > <hemant.agra...@nxp.com>; Jain, Deepak K <deepak.k.j...@intel.com> > Subject: RE: [PATCH] event/rx_adapter: fix ignore return of event start > > > > > -----Original Message----- > > From: Jerin Jacob [mailto:jerin.ja...@caviumnetworks.com] > > Sent: Wednesday, January 31, 2018 6:54 AM > > To: Rao, Nikhil <nikhil....@intel.com> > > Cc: Varghese, Vipin <vipin.vargh...@intel.com>; dev@dpdk.org; Jacob, > > Jerin <jerin.jacobkollanukka...@cavium.com>; Van Haaren, Harry > > <harry.van.haa...@intel.com>; Hemant Agrawal > <hemant.agra...@nxp.com>; > > Jain, Deepak K <deepak.k.j...@intel.com> > > Subject: Re: [PATCH] event/rx_adapter: fix ignore return of event > > start > > > > -----Original Message----- > > > > > > > > > Adding eventdev PMD folks for their suggestions on how to handle the > > > return > > value from rte_event_dev_start() below. > > > > > > > -----Original Message----- > > > > From: Varghese, Vipin > > > > Sent: Wednesday, January 31, 2018 4:26 AM > > > > To: dev@dpdk.org; Rao, Nikhil <nikhil....@intel.com> > > > > Cc: Jain, Deepak K <deepak.k.j...@intel.com>; Varghese, Vipin > > > > <vipin.vargh...@intel.com> > > > > Subject: [PATCH] event/rx_adapter: fix ignore return of event > > > > start > > > > > > > > Capture the return value for rte_event_dev_start. Return the > > > > result back to user. > > > > > > > > Coverity issue: 257000 > > > > Fixes: 9c38b704d280 ("eventdev: add eth Rx adapter > > > > implementation") > > > > Cc: nikhil....@intel.com > > > > > > > > Signed-off-by: Vipin Varghese <vipin.vargh...@intel.com> > > > > --- > > > > lib/librte_eventdev/rte_event_eth_rx_adapter.c | 4 ++-- > > > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > > > > > diff --git a/lib/librte_eventdev/rte_event_eth_rx_adapter.c > > > > b/lib/librte_eventdev/rte_event_eth_rx_adapter.c > > > > index 90106e6..a818bef 100644 > > > > --- a/lib/librte_eventdev/rte_event_eth_rx_adapter.c > > > > +++ b/lib/librte_eventdev/rte_event_eth_rx_adapter.c > > > > @@ -603,7 +603,7 @@ static uint16_t gcd_u16(uint16_t a, uint16_t b) > > > > RTE_EDEV_LOG_ERR("failed to configure event dev %u\n", > > > > dev_id); > > > > if (started) > > > > - rte_event_dev_start(dev_id); > > > > + ret = rte_event_dev_start(dev_id); > > > > > > Currently the a non-zero return value at this point signifies an > > > error returned > > from rte_event_dev_configure(), so I suggest that the return value is > > typecasted to void. > > > > If I understand it correctly, Any one of the failure(configure() or > > start()) should result in bad state. Right? > > i.e If some reason PMD is not able to start() even after failure > > configuration() would result in bad state. > > If so, one option could be combine the error like ret |= operation or > > create a new logical error in Rx adapter which denotes this new error. > > > > So do we agree to ACK these changes to get the code fix to the mainline?
Sorry, if my original email wasn't clear, if rte_event_dev_configure() returns an error and rte_eventdev_start() returns success that would be a problem, i.e., the fix is incorrect. Of the 2 options suggested by Jerin - Since ret is not a bitmask ret |= wouldn't work, if I understand the option correctly . A new error would work. How about EIO ? and we also update the documentation to indicate that the event device would be in a stopped state if the return code is EIO. > rework the logic as required? > > > > > > > > return ret; > > > > } > > > > > > > > @@ -617,7 +617,7 @@ static uint16_t gcd_u16(uint16_t a, uint16_t b) > > > > conf->event_port_id = port_id; > > > > conf->max_nb_rx = 128; > > > > if (started) > > > > - rte_event_dev_start(dev_id); > > > > + ret = rte_event_dev_start(dev_id); > > > This change looks good to me. > > > > > > > rx_adapter->default_cb_arg = 1; > > > > return ret; > > > > } > > > > -- > > > > 1.9.1 > > >