DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH] eventdev: Fix links_map initialization
@ 2017-03-02  4:47 Gage Eads
  2017-03-06 13:06 ` Jerin Jacob
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Gage Eads @ 2017-03-02  4:47 UTC (permalink / raw)
  To: dev
  Cc: jerin.jacob, bruce.richardson, hemant.agrawal, harry.van.haaren,
	nipun.gupta

This patch initializes the links_map array entries to
EVENT_QUEUE_SERVICE_PRIORITY_INVALID, as expected by
rte_event_port_links_get().

Signed-off-by: Gage Eads <gage.eads@intel.com>
---
 lib/librte_eventdev/rte_eventdev.c | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/lib/librte_eventdev/rte_eventdev.c b/lib/librte_eventdev/rte_eventdev.c
index 68bfc3b..b8cd92b 100644
--- a/lib/librte_eventdev/rte_eventdev.c
+++ b/lib/librte_eventdev/rte_eventdev.c
@@ -190,6 +190,8 @@ rte_event_dev_queue_config(struct rte_eventdev *dev, uint8_t nb_queues)
 	return 0;
 }
 
+#define EVENT_QUEUE_SERVICE_PRIORITY_INVALID (0xdead)
+
 static inline int
 rte_event_dev_port_config(struct rte_eventdev *dev, uint8_t nb_ports)
 {
@@ -251,6 +253,9 @@ rte_event_dev_port_config(struct rte_eventdev *dev, uint8_t nb_ports)
 					"nb_ports %u", nb_ports);
 			return -(ENOMEM);
 		}
+		for (i = 0; i < nb_ports * RTE_EVENT_MAX_QUEUES_PER_DEV; i++)
+			dev->data->links_map[i] =
+				EVENT_QUEUE_SERVICE_PRIORITY_INVALID;
 	} else if (dev->data->ports != NULL && nb_ports != 0) {/* re-config */
 		RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->port_release, -ENOTSUP);
 
@@ -305,6 +310,10 @@ rte_event_dev_port_config(struct rte_eventdev *dev, uint8_t nb_ports)
 
 		if (nb_ports > old_nb_ports) {
 			uint8_t new_ps = nb_ports - old_nb_ports;
+			unsigned int old_links_map_end =
+				old_nb_ports * RTE_EVENT_MAX_QUEUES_PER_DEV;
+			unsigned int links_map_end =
+				nb_ports * RTE_EVENT_MAX_QUEUES_PER_DEV;
 
 			memset(ports + old_nb_ports, 0,
 				sizeof(ports[0]) * new_ps);
@@ -312,9 +321,9 @@ rte_event_dev_port_config(struct rte_eventdev *dev, uint8_t nb_ports)
 				sizeof(ports_dequeue_depth[0]) * new_ps);
 			memset(ports_enqueue_depth + old_nb_ports, 0,
 				sizeof(ports_enqueue_depth[0]) * new_ps);
-			memset(links_map +
-				(old_nb_ports * RTE_EVENT_MAX_QUEUES_PER_DEV),
-				0, sizeof(ports_enqueue_depth[0]) * new_ps);
+			for (i = old_links_map_end; i < links_map_end; i++)
+				links_map[i] =
+					EVENT_QUEUE_SERVICE_PRIORITY_INVALID;
 		}
 
 		dev->data->ports = ports;
@@ -815,8 +824,6 @@ rte_event_port_link(uint8_t dev_id, uint8_t port_id,
 	return diag;
 }
 
-#define EVENT_QUEUE_SERVICE_PRIORITY_INVALID (0xdead)
-
 int
 rte_event_port_unlink(uint8_t dev_id, uint8_t port_id,
 		      uint8_t queues[], uint16_t nb_unlinks)
-- 
2.7.4

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [dpdk-dev] [PATCH] eventdev: Fix links_map initialization
  2017-03-02  4:47 [dpdk-dev] [PATCH] eventdev: Fix links_map initialization Gage Eads
@ 2017-03-06 13:06 ` Jerin Jacob
  2017-03-06 14:38   ` Eads, Gage
  2017-03-06 17:02 ` [dpdk-dev] [PATCH v2] eventdev: Fix links_map initialization for sw PMD Gage Eads
  2017-03-07 16:25 ` [dpdk-dev] [PATCH v3] eventdev: fix links map initialization for SW PMD Gage Eads
  2 siblings, 1 reply; 8+ messages in thread
From: Jerin Jacob @ 2017-03-06 13:06 UTC (permalink / raw)
  To: Gage Eads
  Cc: dev, bruce.richardson, hemant.agrawal, harry.van.haaren, nipun.gupta

On Wed, Mar 01, 2017 at 10:47:36PM -0600, Gage Eads wrote:
> This patch initializes the links_map array entries to
> EVENT_QUEUE_SERVICE_PRIORITY_INVALID, as expected by
> rte_event_port_links_get().
> 
> Signed-off-by: Gage Eads <gage.eads@intel.com>
> ---
>  lib/librte_eventdev/rte_eventdev.c | 17 ++++++++++++-----
>  1 file changed, 12 insertions(+), 5 deletions(-)
> 
> diff --git a/lib/librte_eventdev/rte_eventdev.c b/lib/librte_eventdev/rte_eventdev.c
> index 68bfc3b..b8cd92b 100644
> --- a/lib/librte_eventdev/rte_eventdev.c
> +++ b/lib/librte_eventdev/rte_eventdev.c
> @@ -190,6 +190,8 @@ rte_event_dev_queue_config(struct rte_eventdev *dev, uint8_t nb_queues)
>  	return 0;
>  }
>  
> +#define EVENT_QUEUE_SERVICE_PRIORITY_INVALID (0xdead)
> +
>  static inline int
>  rte_event_dev_port_config(struct rte_eventdev *dev, uint8_t nb_ports)
>  {
> @@ -251,6 +253,9 @@ rte_event_dev_port_config(struct rte_eventdev *dev, uint8_t nb_ports)
>  					"nb_ports %u", nb_ports);
>  			return -(ENOMEM);
>  		}
> +		for (i = 0; i < nb_ports * RTE_EVENT_MAX_QUEUES_PER_DEV; i++)
> +			dev->data->links_map[i] =
> +				EVENT_QUEUE_SERVICE_PRIORITY_INVALID;
>  	} else if (dev->data->ports != NULL && nb_ports != 0) {/* re-config */
>  		RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->port_release, -ENOTSUP);
>  
> @@ -305,6 +310,10 @@ rte_event_dev_port_config(struct rte_eventdev *dev, uint8_t nb_ports)
>  
>  		if (nb_ports > old_nb_ports) {
>  			uint8_t new_ps = nb_ports - old_nb_ports;
> +			unsigned int old_links_map_end =
> +				old_nb_ports * RTE_EVENT_MAX_QUEUES_PER_DEV;
> +			unsigned int links_map_end =
> +				nb_ports * RTE_EVENT_MAX_QUEUES_PER_DEV;
>  
>  			memset(ports + old_nb_ports, 0,
>  				sizeof(ports[0]) * new_ps);
> @@ -312,9 +321,9 @@ rte_event_dev_port_config(struct rte_eventdev *dev, uint8_t nb_ports)
>  				sizeof(ports_dequeue_depth[0]) * new_ps);
>  			memset(ports_enqueue_depth + old_nb_ports, 0,
>  				sizeof(ports_enqueue_depth[0]) * new_ps);
> -			memset(links_map +
> -				(old_nb_ports * RTE_EVENT_MAX_QUEUES_PER_DEV),
> -				0, sizeof(ports_enqueue_depth[0]) * new_ps);
> +			for (i = old_links_map_end; i < links_map_end; i++)
> +				links_map[i] =
> +					EVENT_QUEUE_SERVICE_PRIORITY_INVALID;

rte_event_port_setup() has rte_event_port_unlink() at the end of the
function. On rte_event_port_unlink, we are doing the same
operation(writing EVENT_QUEUE_SERVICE_PRIORITY_INVALID) and
rte_event_port_links_get() should be called after rte_event_dev_start(),
If so, Do you still think this duplicates writes are required? or Do you
have any other call sequence in mind?

---------------------------- Description from header file-----------------
The functions exported by the application Event API to setup a device
designated by its device identifier must be invoked in the following order:
    - rte_event_dev_configure()
    - rte_event_queue_setup()
    - rte_event_port_setup()
    - rte_event_port_link()
    - rte_event_dev_start()

Then, the application can invoke, in any order, the functions
exported by the Event API to schedule events, dequeue events, enqueue events,
change event queue(s) to event port [un]link establishment and so on.

Application may use rte_event_[queue/port]_default_conf_get() to get the
default configuration to set up an event queue or event port by
overriding few default values.

If the application wants to change the configuration (i.e. call
rte_event_dev_configure(), rte_event_queue_setup(), or
rte_event_port_setup()), it must call rte_event_dev_stop() first to stop the
device and then do the reconfiguration before calling rte_event_dev_start()
again. The schedule, enqueue and dequeue functions should not be invoked
when the device is stopped.
-----------------------------------------------------------------------------



>  		}
>  
>  		dev->data->ports = ports;
> @@ -815,8 +824,6 @@ rte_event_port_link(uint8_t dev_id, uint8_t port_id,
>  	return diag;
>  }
>  
> -#define EVENT_QUEUE_SERVICE_PRIORITY_INVALID (0xdead)
> -
>  int
>  rte_event_port_unlink(uint8_t dev_id, uint8_t port_id,
>  		      uint8_t queues[], uint16_t nb_unlinks)
> -- 
> 2.7.4
> 

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [dpdk-dev] [PATCH] eventdev: Fix links_map initialization
  2017-03-06 13:06 ` Jerin Jacob
@ 2017-03-06 14:38   ` Eads, Gage
  2017-03-06 16:51     ` Jerin Jacob
  0 siblings, 1 reply; 8+ messages in thread
From: Eads, Gage @ 2017-03-06 14:38 UTC (permalink / raw)
  To: Jerin Jacob
  Cc: dev, Richardson, Bruce, hemant.agrawal, Van Haaren, Harry, nipun.gupta

>  -----Original Message-----
>  From: Jerin Jacob [mailto:jerin.jacob@caviumnetworks.com]
>  Sent: Monday, March 6, 2017 7:06 AM
>  To: Eads, Gage <gage.eads@intel.com>
>  Cc: dev@dpdk.org; Richardson, Bruce <bruce.richardson@intel.com>;
>  hemant.agrawal@nxp.com; Van Haaren, Harry <harry.van.haaren@intel.com>;
>  nipun.gupta@nxp.com
>  Subject: Re: [PATCH] eventdev: Fix links_map initialization
>  
>  On Wed, Mar 01, 2017 at 10:47:36PM -0600, Gage Eads wrote:
>  > This patch initializes the links_map array entries to
>  > EVENT_QUEUE_SERVICE_PRIORITY_INVALID, as expected by
>  > rte_event_port_links_get().
>  >
>  > Signed-off-by: Gage Eads <gage.eads@intel.com>
>  > ---
>  >  lib/librte_eventdev/rte_eventdev.c | 17 ++++++++++++-----
>  >  1 file changed, 12 insertions(+), 5 deletions(-)
>  >
>  > diff --git a/lib/librte_eventdev/rte_eventdev.c
>  > b/lib/librte_eventdev/rte_eventdev.c
>  > index 68bfc3b..b8cd92b 100644
>  > --- a/lib/librte_eventdev/rte_eventdev.c
>  > +++ b/lib/librte_eventdev/rte_eventdev.c
>  > @@ -190,6 +190,8 @@ rte_event_dev_queue_config(struct rte_eventdev
>  *dev, uint8_t nb_queues)
>  >  	return 0;
>  >  }
>  >
>  > +#define EVENT_QUEUE_SERVICE_PRIORITY_INVALID (0xdead)
>  > +
>  >  static inline int
>  >  rte_event_dev_port_config(struct rte_eventdev *dev, uint8_t nb_ports)
>  > { @@ -251,6 +253,9 @@ rte_event_dev_port_config(struct rte_eventdev
>  > *dev, uint8_t nb_ports)
>  >  					"nb_ports %u", nb_ports);
>  >  			return -(ENOMEM);
>  >  		}
>  > +		for (i = 0; i < nb_ports * RTE_EVENT_MAX_QUEUES_PER_DEV;
>  i++)
>  > +			dev->data->links_map[i] =
>  > +				EVENT_QUEUE_SERVICE_PRIORITY_INVALID;
>  >  	} else if (dev->data->ports != NULL && nb_ports != 0) {/* re-config */
>  >  		RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->port_release,
>  -ENOTSUP);
>  >
>  > @@ -305,6 +310,10 @@ rte_event_dev_port_config(struct rte_eventdev
>  > *dev, uint8_t nb_ports)
>  >
>  >  		if (nb_ports > old_nb_ports) {
>  >  			uint8_t new_ps = nb_ports - old_nb_ports;
>  > +			unsigned int old_links_map_end =
>  > +				old_nb_ports *
>  RTE_EVENT_MAX_QUEUES_PER_DEV;
>  > +			unsigned int links_map_end =
>  > +				nb_ports *
>  RTE_EVENT_MAX_QUEUES_PER_DEV;
>  >
>  >  			memset(ports + old_nb_ports, 0,
>  >  				sizeof(ports[0]) * new_ps);
>  > @@ -312,9 +321,9 @@ rte_event_dev_port_config(struct rte_eventdev
>  *dev, uint8_t nb_ports)
>  >  				sizeof(ports_dequeue_depth[0]) * new_ps);
>  >  			memset(ports_enqueue_depth + old_nb_ports, 0,
>  >  				sizeof(ports_enqueue_depth[0]) * new_ps);
>  > -			memset(links_map +
>  > -				(old_nb_ports *
>  RTE_EVENT_MAX_QUEUES_PER_DEV),
>  > -				0, sizeof(ports_enqueue_depth[0]) * new_ps);
>  > +			for (i = old_links_map_end; i < links_map_end; i++)
>  > +				links_map[i] =
>  > +
>  	EVENT_QUEUE_SERVICE_PRIORITY_INVALID;
>  
>  rte_event_port_setup() has rte_event_port_unlink() at the end of the function.
>  On rte_event_port_unlink, we are doing the same operation(writing
>  EVENT_QUEUE_SERVICE_PRIORITY_INVALID) and
>  rte_event_port_links_get() should be called after rte_event_dev_start(), If so,
>  Do you still think this duplicates writes are required? or Do you have any other
>  call sequence in mind?

Ah, I didn't realize that was a purpose of calling port_unlink at the end of
port_setup. There is, however, an issue with initializing through the port unlink
when called by rte_event_port_setup(). The for-loop in rte_event_port_unlink() to
reset the links_map runs from 0 to diag, and diag is 0 when the port is being set up
since it has no queues to unlink at that time. (This is at least true of the sw PMD,
but would be the case for others, I imagine.)

Perhaps a simpler form of this patch is to copy that for-loop, with the bound being
dev->data->nb_queues, into rte_event_port_setup() after rte_event_port_unlink()
is called (if it is successful). What do you think?

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [dpdk-dev] [PATCH] eventdev: Fix links_map initialization
  2017-03-06 14:38   ` Eads, Gage
@ 2017-03-06 16:51     ` Jerin Jacob
  0 siblings, 0 replies; 8+ messages in thread
From: Jerin Jacob @ 2017-03-06 16:51 UTC (permalink / raw)
  To: Eads, Gage
  Cc: dev, Richardson, Bruce, hemant.agrawal, Van Haaren, Harry, nipun.gupta

On Mon, Mar 06, 2017 at 02:38:05PM +0000, Eads, Gage wrote:
> >  -----Original Message-----
> >  From: Jerin Jacob [mailto:jerin.jacob@caviumnetworks.com]
> >  Sent: Monday, March 6, 2017 7:06 AM
> >  To: Eads, Gage <gage.eads@intel.com>
> >  Cc: dev@dpdk.org; Richardson, Bruce <bruce.richardson@intel.com>;
> >  hemant.agrawal@nxp.com; Van Haaren, Harry <harry.van.haaren@intel.com>;
> >  nipun.gupta@nxp.com
> >  Subject: Re: [PATCH] eventdev: Fix links_map initialization
> >  
> >  On Wed, Mar 01, 2017 at 10:47:36PM -0600, Gage Eads wrote:
> >  > This patch initializes the links_map array entries to
> >  > EVENT_QUEUE_SERVICE_PRIORITY_INVALID, as expected by
> >  > rte_event_port_links_get().
> >  >
> >  > Signed-off-by: Gage Eads <gage.eads@intel.com>
> >  > ---
> >  >  lib/librte_eventdev/rte_eventdev.c | 17 ++++++++++++-----
> >  >  1 file changed, 12 insertions(+), 5 deletions(-)
> >  >
> >  > diff --git a/lib/librte_eventdev/rte_eventdev.c
> >  > b/lib/librte_eventdev/rte_eventdev.c
> >  > index 68bfc3b..b8cd92b 100644
> >  > --- a/lib/librte_eventdev/rte_eventdev.c
> >  > +++ b/lib/librte_eventdev/rte_eventdev.c
> >  > @@ -190,6 +190,8 @@ rte_event_dev_queue_config(struct rte_eventdev
> >  *dev, uint8_t nb_queues)
> >  >  	return 0;
> >  >  }
> >  >
> >  > +#define EVENT_QUEUE_SERVICE_PRIORITY_INVALID (0xdead)
> >  > +
> >  >  static inline int
> >  >  rte_event_dev_port_config(struct rte_eventdev *dev, uint8_t nb_ports)
> >  > { @@ -251,6 +253,9 @@ rte_event_dev_port_config(struct rte_eventdev
> >  > *dev, uint8_t nb_ports)
> >  >  					"nb_ports %u", nb_ports);
> >  >  			return -(ENOMEM);
> >  >  		}
> >  > +		for (i = 0; i < nb_ports * RTE_EVENT_MAX_QUEUES_PER_DEV;
> >  i++)
> >  > +			dev->data->links_map[i] =
> >  > +				EVENT_QUEUE_SERVICE_PRIORITY_INVALID;
> >  >  	} else if (dev->data->ports != NULL && nb_ports != 0) {/* re-config */
> >  >  		RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->port_release,
> >  -ENOTSUP);
> >  >
> >  > @@ -305,6 +310,10 @@ rte_event_dev_port_config(struct rte_eventdev
> >  > *dev, uint8_t nb_ports)
> >  >
> >  >  		if (nb_ports > old_nb_ports) {
> >  >  			uint8_t new_ps = nb_ports - old_nb_ports;
> >  > +			unsigned int old_links_map_end =
> >  > +				old_nb_ports *
> >  RTE_EVENT_MAX_QUEUES_PER_DEV;
> >  > +			unsigned int links_map_end =
> >  > +				nb_ports *
> >  RTE_EVENT_MAX_QUEUES_PER_DEV;
> >  >
> >  >  			memset(ports + old_nb_ports, 0,
> >  >  				sizeof(ports[0]) * new_ps);
> >  > @@ -312,9 +321,9 @@ rte_event_dev_port_config(struct rte_eventdev
> >  *dev, uint8_t nb_ports)
> >  >  				sizeof(ports_dequeue_depth[0]) * new_ps);
> >  >  			memset(ports_enqueue_depth + old_nb_ports, 0,
> >  >  				sizeof(ports_enqueue_depth[0]) * new_ps);
> >  > -			memset(links_map +
> >  > -				(old_nb_ports *
> >  RTE_EVENT_MAX_QUEUES_PER_DEV),
> >  > -				0, sizeof(ports_enqueue_depth[0]) * new_ps);
> >  > +			for (i = old_links_map_end; i < links_map_end; i++)
> >  > +				links_map[i] =
> >  > +
> >  	EVENT_QUEUE_SERVICE_PRIORITY_INVALID;
> >  
> >  rte_event_port_setup() has rte_event_port_unlink() at the end of the function.
> >  On rte_event_port_unlink, we are doing the same operation(writing
> >  EVENT_QUEUE_SERVICE_PRIORITY_INVALID) and
> >  rte_event_port_links_get() should be called after rte_event_dev_start(), If so,
> >  Do you still think this duplicates writes are required? or Do you have any other
> >  call sequence in mind?
> 
> Ah, I didn't realize that was a purpose of calling port_unlink at the end of
> port_setup. There is, however, an issue with initializing through the port unlink
> when called by rte_event_port_setup(). The for-loop in rte_event_port_unlink() to
> reset the links_map runs from 0 to diag, and diag is 0 when the port is being set up
> since it has no queues to unlink at that time. (This is at least true of the sw PMD,
> but would be the case for others, I imagine.)

I see. It was not the case for HW PMD. But if it is helping SW PMD case then we can use
your original patch.

> 
> Perhaps a simpler form of this patch is to copy that for-loop, with the bound being
> dev->data->nb_queues, into rte_event_port_setup() after rte_event_port_unlink()
> is called (if it is successful). What do you think?

I think your original patch is fine. IMO, you can change the commit
message to reflect the issue and send v2 based on your existing v1.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [dpdk-dev] [PATCH v2] eventdev: Fix links_map initialization for sw PMD
  2017-03-02  4:47 [dpdk-dev] [PATCH] eventdev: Fix links_map initialization Gage Eads
  2017-03-06 13:06 ` Jerin Jacob
@ 2017-03-06 17:02 ` Gage Eads
  2017-03-07  6:12   ` Jerin Jacob
  2017-03-07 16:25 ` [dpdk-dev] [PATCH v3] eventdev: fix links map initialization for SW PMD Gage Eads
  2 siblings, 1 reply; 8+ messages in thread
From: Gage Eads @ 2017-03-06 17:02 UTC (permalink / raw)
  To: dev
  Cc: jerin.jacob, bruce.richardson, hemant.agrawal, harry.van.haaren,
	nipun.gupta

This patch initializes the links_map array entries to
EVENT_QUEUE_SERVICE_PRIORITY_INVALID, as expected by
rte_event_port_links_get(). This is necessary for the sw eventdev PMD,
which does not initialize links_map when rte_event_port_setup() calls
rte_event_port_unlink().

Signed-off-by: Gage Eads <gage.eads@intel.com>
---
v2: Refined commit message's description of patch

 lib/librte_eventdev/rte_eventdev.c | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/lib/librte_eventdev/rte_eventdev.c b/lib/librte_eventdev/rte_eventdev.c
index 68bfc3b..b8cd92b 100644
--- a/lib/librte_eventdev/rte_eventdev.c
+++ b/lib/librte_eventdev/rte_eventdev.c
@@ -190,6 +190,8 @@ rte_event_dev_queue_config(struct rte_eventdev *dev, uint8_t nb_queues)
 	return 0;
 }
 
+#define EVENT_QUEUE_SERVICE_PRIORITY_INVALID (0xdead)
+
 static inline int
 rte_event_dev_port_config(struct rte_eventdev *dev, uint8_t nb_ports)
 {
@@ -251,6 +253,9 @@ rte_event_dev_port_config(struct rte_eventdev *dev, uint8_t nb_ports)
 					"nb_ports %u", nb_ports);
 			return -(ENOMEM);
 		}
+		for (i = 0; i < nb_ports * RTE_EVENT_MAX_QUEUES_PER_DEV; i++)
+			dev->data->links_map[i] =
+				EVENT_QUEUE_SERVICE_PRIORITY_INVALID;
 	} else if (dev->data->ports != NULL && nb_ports != 0) {/* re-config */
 		RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->port_release, -ENOTSUP);
 
@@ -305,6 +310,10 @@ rte_event_dev_port_config(struct rte_eventdev *dev, uint8_t nb_ports)
 
 		if (nb_ports > old_nb_ports) {
 			uint8_t new_ps = nb_ports - old_nb_ports;
+			unsigned int old_links_map_end =
+				old_nb_ports * RTE_EVENT_MAX_QUEUES_PER_DEV;
+			unsigned int links_map_end =
+				nb_ports * RTE_EVENT_MAX_QUEUES_PER_DEV;
 
 			memset(ports + old_nb_ports, 0,
 				sizeof(ports[0]) * new_ps);
@@ -312,9 +321,9 @@ rte_event_dev_port_config(struct rte_eventdev *dev, uint8_t nb_ports)
 				sizeof(ports_dequeue_depth[0]) * new_ps);
 			memset(ports_enqueue_depth + old_nb_ports, 0,
 				sizeof(ports_enqueue_depth[0]) * new_ps);
-			memset(links_map +
-				(old_nb_ports * RTE_EVENT_MAX_QUEUES_PER_DEV),
-				0, sizeof(ports_enqueue_depth[0]) * new_ps);
+			for (i = old_links_map_end; i < links_map_end; i++)
+				links_map[i] =
+					EVENT_QUEUE_SERVICE_PRIORITY_INVALID;
 		}
 
 		dev->data->ports = ports;
@@ -815,8 +824,6 @@ rte_event_port_link(uint8_t dev_id, uint8_t port_id,
 	return diag;
 }
 
-#define EVENT_QUEUE_SERVICE_PRIORITY_INVALID (0xdead)
-
 int
 rte_event_port_unlink(uint8_t dev_id, uint8_t port_id,
 		      uint8_t queues[], uint16_t nb_unlinks)
-- 
2.7.4

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [dpdk-dev] [PATCH v2] eventdev: Fix links_map initialization for sw PMD
  2017-03-06 17:02 ` [dpdk-dev] [PATCH v2] eventdev: Fix links_map initialization for sw PMD Gage Eads
@ 2017-03-07  6:12   ` Jerin Jacob
  0 siblings, 0 replies; 8+ messages in thread
From: Jerin Jacob @ 2017-03-07  6:12 UTC (permalink / raw)
  To: Gage Eads
  Cc: dev, bruce.richardson, hemant.agrawal, harry.van.haaren, nipun.gupta

On Mon, Mar 06, 2017 at 11:02:48AM -0600, Gage Eads wrote:

Please fix the check-git-log.sh errors with this patch. With that change,

Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>

➜ $ ./devtools/check-git-log.sh
Wrong headline format:
	eventdev: Fix links_map initialization for sw PMD
Wrong headline uppercase:
	eventdev: Fix links_map initialization for sw PMD
Wrong headline lowercase:
	eventdev: Fix links_map initialization for sw PMD
Missing 'Fixes' tag:
	eventdev: Fix links_map initialization for sw PMD



> This patch initializes the links_map array entries to
> EVENT_QUEUE_SERVICE_PRIORITY_INVALID, as expected by
> rte_event_port_links_get(). This is necessary for the sw eventdev PMD,
> which does not initialize links_map when rte_event_port_setup() calls
> rte_event_port_unlink().
> 
> Signed-off-by: Gage Eads <gage.eads@intel.com>
> ---
> v2: Refined commit message's description of patch
> 
>  lib/librte_eventdev/rte_eventdev.c | 17 ++++++++++++-----
>  1 file changed, 12 insertions(+), 5 deletions(-)
> 
> diff --git a/lib/librte_eventdev/rte_eventdev.c b/lib/librte_eventdev/rte_eventdev.c
> index 68bfc3b..b8cd92b 100644
> --- a/lib/librte_eventdev/rte_eventdev.c
> +++ b/lib/librte_eventdev/rte_eventdev.c
> @@ -190,6 +190,8 @@ rte_event_dev_queue_config(struct rte_eventdev *dev, uint8_t nb_queues)
>  	return 0;
>  }
>  
> +#define EVENT_QUEUE_SERVICE_PRIORITY_INVALID (0xdead)
> +
>  static inline int
>  rte_event_dev_port_config(struct rte_eventdev *dev, uint8_t nb_ports)
>  {
> @@ -251,6 +253,9 @@ rte_event_dev_port_config(struct rte_eventdev *dev, uint8_t nb_ports)
>  					"nb_ports %u", nb_ports);
>  			return -(ENOMEM);
>  		}
> +		for (i = 0; i < nb_ports * RTE_EVENT_MAX_QUEUES_PER_DEV; i++)
> +			dev->data->links_map[i] =
> +				EVENT_QUEUE_SERVICE_PRIORITY_INVALID;
>  	} else if (dev->data->ports != NULL && nb_ports != 0) {/* re-config */
>  		RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->port_release, -ENOTSUP);
>  
> @@ -305,6 +310,10 @@ rte_event_dev_port_config(struct rte_eventdev *dev, uint8_t nb_ports)
>  
>  		if (nb_ports > old_nb_ports) {
>  			uint8_t new_ps = nb_ports - old_nb_ports;
> +			unsigned int old_links_map_end =
> +				old_nb_ports * RTE_EVENT_MAX_QUEUES_PER_DEV;
> +			unsigned int links_map_end =
> +				nb_ports * RTE_EVENT_MAX_QUEUES_PER_DEV;
>  
>  			memset(ports + old_nb_ports, 0,
>  				sizeof(ports[0]) * new_ps);
> @@ -312,9 +321,9 @@ rte_event_dev_port_config(struct rte_eventdev *dev, uint8_t nb_ports)
>  				sizeof(ports_dequeue_depth[0]) * new_ps);
>  			memset(ports_enqueue_depth + old_nb_ports, 0,
>  				sizeof(ports_enqueue_depth[0]) * new_ps);
> -			memset(links_map +
> -				(old_nb_ports * RTE_EVENT_MAX_QUEUES_PER_DEV),
> -				0, sizeof(ports_enqueue_depth[0]) * new_ps);
> +			for (i = old_links_map_end; i < links_map_end; i++)
> +				links_map[i] =
> +					EVENT_QUEUE_SERVICE_PRIORITY_INVALID;
>  		}
>  
>  		dev->data->ports = ports;
> @@ -815,8 +824,6 @@ rte_event_port_link(uint8_t dev_id, uint8_t port_id,
>  	return diag;
>  }
>  
> -#define EVENT_QUEUE_SERVICE_PRIORITY_INVALID (0xdead)
> -
>  int
>  rte_event_port_unlink(uint8_t dev_id, uint8_t port_id,
>  		      uint8_t queues[], uint16_t nb_unlinks)
> -- 
> 2.7.4
> 

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [dpdk-dev] [PATCH v3] eventdev: fix links map initialization for SW PMD
  2017-03-02  4:47 [dpdk-dev] [PATCH] eventdev: Fix links_map initialization Gage Eads
  2017-03-06 13:06 ` Jerin Jacob
  2017-03-06 17:02 ` [dpdk-dev] [PATCH v2] eventdev: Fix links_map initialization for sw PMD Gage Eads
@ 2017-03-07 16:25 ` Gage Eads
  2017-03-13  8:52   ` Jerin Jacob
  2 siblings, 1 reply; 8+ messages in thread
From: Gage Eads @ 2017-03-07 16:25 UTC (permalink / raw)
  To: dev
  Cc: jerin.jacob, bruce.richardson, hemant.agrawal, harry.van.haaren,
	nipun.gupta

This patch initializes the links_map array entries to
EVENT_QUEUE_SERVICE_PRIORITY_INVALID, as expected by
rte_event_port_links_get(). This is necessary for the sw eventdev PMD,
which does not initialize links_map when rte_event_port_setup() calls
rte_event_port_unlink().

Fixes: e36bf651b3ca2 ("eventdev: implement the northbound APIs")

Signed-off-by: Gage Eads <gage.eads@intel.com>
Acked-by: Jerin Jacob <jerin.jacob at caviumnetworks.com>
---
v2: Refined commit message's description of patch
v3: Fixed check-git-log.sh errors, added Jerin's Acked-by

 lib/librte_eventdev/rte_eventdev.c | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/lib/librte_eventdev/rte_eventdev.c b/lib/librte_eventdev/rte_eventdev.c
index 68bfc3b..b8cd92b 100644
--- a/lib/librte_eventdev/rte_eventdev.c
+++ b/lib/librte_eventdev/rte_eventdev.c
@@ -190,6 +190,8 @@ rte_event_dev_queue_config(struct rte_eventdev *dev, uint8_t nb_queues)
 	return 0;
 }
 
+#define EVENT_QUEUE_SERVICE_PRIORITY_INVALID (0xdead)
+
 static inline int
 rte_event_dev_port_config(struct rte_eventdev *dev, uint8_t nb_ports)
 {
@@ -251,6 +253,9 @@ rte_event_dev_port_config(struct rte_eventdev *dev, uint8_t nb_ports)
 					"nb_ports %u", nb_ports);
 			return -(ENOMEM);
 		}
+		for (i = 0; i < nb_ports * RTE_EVENT_MAX_QUEUES_PER_DEV; i++)
+			dev->data->links_map[i] =
+				EVENT_QUEUE_SERVICE_PRIORITY_INVALID;
 	} else if (dev->data->ports != NULL && nb_ports != 0) {/* re-config */
 		RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->port_release, -ENOTSUP);
 
@@ -305,6 +310,10 @@ rte_event_dev_port_config(struct rte_eventdev *dev, uint8_t nb_ports)
 
 		if (nb_ports > old_nb_ports) {
 			uint8_t new_ps = nb_ports - old_nb_ports;
+			unsigned int old_links_map_end =
+				old_nb_ports * RTE_EVENT_MAX_QUEUES_PER_DEV;
+			unsigned int links_map_end =
+				nb_ports * RTE_EVENT_MAX_QUEUES_PER_DEV;
 
 			memset(ports + old_nb_ports, 0,
 				sizeof(ports[0]) * new_ps);
@@ -312,9 +321,9 @@ rte_event_dev_port_config(struct rte_eventdev *dev, uint8_t nb_ports)
 				sizeof(ports_dequeue_depth[0]) * new_ps);
 			memset(ports_enqueue_depth + old_nb_ports, 0,
 				sizeof(ports_enqueue_depth[0]) * new_ps);
-			memset(links_map +
-				(old_nb_ports * RTE_EVENT_MAX_QUEUES_PER_DEV),
-				0, sizeof(ports_enqueue_depth[0]) * new_ps);
+			for (i = old_links_map_end; i < links_map_end; i++)
+				links_map[i] =
+					EVENT_QUEUE_SERVICE_PRIORITY_INVALID;
 		}
 
 		dev->data->ports = ports;
@@ -815,8 +824,6 @@ rte_event_port_link(uint8_t dev_id, uint8_t port_id,
 	return diag;
 }
 
-#define EVENT_QUEUE_SERVICE_PRIORITY_INVALID (0xdead)
-
 int
 rte_event_port_unlink(uint8_t dev_id, uint8_t port_id,
 		      uint8_t queues[], uint16_t nb_unlinks)
-- 
2.7.4

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [dpdk-dev] [PATCH v3] eventdev: fix links map initialization for SW PMD
  2017-03-07 16:25 ` [dpdk-dev] [PATCH v3] eventdev: fix links map initialization for SW PMD Gage Eads
@ 2017-03-13  8:52   ` Jerin Jacob
  0 siblings, 0 replies; 8+ messages in thread
From: Jerin Jacob @ 2017-03-13  8:52 UTC (permalink / raw)
  To: Gage Eads
  Cc: dev, bruce.richardson, hemant.agrawal, harry.van.haaren, nipun.gupta

On Tue, Mar 07, 2017 at 10:25:00AM -0600, Gage Eads wrote:
> This patch initializes the links_map array entries to
> EVENT_QUEUE_SERVICE_PRIORITY_INVALID, as expected by
> rte_event_port_links_get(). This is necessary for the sw eventdev PMD,
> which does not initialize links_map when rte_event_port_setup() calls
> rte_event_port_unlink().
> 
> Fixes: e36bf651b3ca2 ("eventdev: implement the northbound APIs")
> 
> Signed-off-by: Gage Eads <gage.eads@intel.com>
> Acked-by: Jerin Jacob <jerin.jacob at caviumnetworks.com>

Applied to dpdk-next-eventdev/master after fixing check-git-log.sh warning
http://dpdk.org/ml/archives/test-report/2017-March/013029.html

Thanks.

> ---
> v2: Refined commit message's description of patch
> v3: Fixed check-git-log.sh errors, added Jerin's Acked-by
> 
>  lib/librte_eventdev/rte_eventdev.c | 17 ++++++++++++-----
>  1 file changed, 12 insertions(+), 5 deletions(-)
> 
> diff --git a/lib/librte_eventdev/rte_eventdev.c b/lib/librte_eventdev/rte_eventdev.c
> index 68bfc3b..b8cd92b 100644
> --- a/lib/librte_eventdev/rte_eventdev.c
> +++ b/lib/librte_eventdev/rte_eventdev.c
> @@ -190,6 +190,8 @@ rte_event_dev_queue_config(struct rte_eventdev *dev, uint8_t nb_queues)
>  	return 0;
>  }
>  
> +#define EVENT_QUEUE_SERVICE_PRIORITY_INVALID (0xdead)
> +
>  static inline int
>  rte_event_dev_port_config(struct rte_eventdev *dev, uint8_t nb_ports)
>  {
> @@ -251,6 +253,9 @@ rte_event_dev_port_config(struct rte_eventdev *dev, uint8_t nb_ports)
>  					"nb_ports %u", nb_ports);
>  			return -(ENOMEM);
>  		}
> +		for (i = 0; i < nb_ports * RTE_EVENT_MAX_QUEUES_PER_DEV; i++)
> +			dev->data->links_map[i] =
> +				EVENT_QUEUE_SERVICE_PRIORITY_INVALID;
>  	} else if (dev->data->ports != NULL && nb_ports != 0) {/* re-config */
>  		RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->port_release, -ENOTSUP);
>  
> @@ -305,6 +310,10 @@ rte_event_dev_port_config(struct rte_eventdev *dev, uint8_t nb_ports)
>  
>  		if (nb_ports > old_nb_ports) {
>  			uint8_t new_ps = nb_ports - old_nb_ports;
> +			unsigned int old_links_map_end =
> +				old_nb_ports * RTE_EVENT_MAX_QUEUES_PER_DEV;
> +			unsigned int links_map_end =
> +				nb_ports * RTE_EVENT_MAX_QUEUES_PER_DEV;
>  
>  			memset(ports + old_nb_ports, 0,
>  				sizeof(ports[0]) * new_ps);
> @@ -312,9 +321,9 @@ rte_event_dev_port_config(struct rte_eventdev *dev, uint8_t nb_ports)
>  				sizeof(ports_dequeue_depth[0]) * new_ps);
>  			memset(ports_enqueue_depth + old_nb_ports, 0,
>  				sizeof(ports_enqueue_depth[0]) * new_ps);
> -			memset(links_map +
> -				(old_nb_ports * RTE_EVENT_MAX_QUEUES_PER_DEV),
> -				0, sizeof(ports_enqueue_depth[0]) * new_ps);
> +			for (i = old_links_map_end; i < links_map_end; i++)
> +				links_map[i] =
> +					EVENT_QUEUE_SERVICE_PRIORITY_INVALID;
>  		}
>  
>  		dev->data->ports = ports;
> @@ -815,8 +824,6 @@ rte_event_port_link(uint8_t dev_id, uint8_t port_id,
>  	return diag;
>  }
>  
> -#define EVENT_QUEUE_SERVICE_PRIORITY_INVALID (0xdead)
> -
>  int
>  rte_event_port_unlink(uint8_t dev_id, uint8_t port_id,
>  		      uint8_t queues[], uint16_t nb_unlinks)
> -- 
> 2.7.4
> 

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2017-03-13  8:52 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-03-02  4:47 [dpdk-dev] [PATCH] eventdev: Fix links_map initialization Gage Eads
2017-03-06 13:06 ` Jerin Jacob
2017-03-06 14:38   ` Eads, Gage
2017-03-06 16:51     ` Jerin Jacob
2017-03-06 17:02 ` [dpdk-dev] [PATCH v2] eventdev: Fix links_map initialization for sw PMD Gage Eads
2017-03-07  6:12   ` Jerin Jacob
2017-03-07 16:25 ` [dpdk-dev] [PATCH v3] eventdev: fix links map initialization for SW PMD Gage Eads
2017-03-13  8:52   ` Jerin Jacob

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).