[dpdk-dev] [PATCH / RFC] sched: Correct subport calcuation

2016-06-23 Thread Dumitrescu, Cristian


> -Original Message-
> From: Simon Kagstrom [mailto:simon.kagstrom at netinsight.net]
> Sent: Friday, June 10, 2016 7:29 AM
> To: Dumitrescu, Cristian ;
> stephen at networkplumber.org; dev at dpdk.org;
> thomas.monjalon at 6wind.com
> Subject: [PATCH / RFC] sched: Correct subport calcuation
> 
> Signed-off-by: Simon Kagstrom 
> ---
> I'm a total newbie to the rte_sched design and implementation, so I've
> added the RFC.
> 
> We get crashes (at other places in the scheduler) without this code.
> 
>  lib/librte_sched/rte_sched.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/lib/librte_sched/rte_sched.c b/lib/librte_sched/rte_sched.c
> index 1609ea8..b46ecfb 100644
> --- a/lib/librte_sched/rte_sched.c
> +++ b/lib/librte_sched/rte_sched.c
> @@ -1869,7 +1869,7 @@ grinder_next_pipe(struct rte_sched_port *port,
> uint32_t pos)
> 
>   /* Install new pipe in the grinder */
>   grinder->pindex = pipe_qindex >> 4;
> - grinder->subport = port->subport + (grinder->pindex / port-
> >n_pipes_per_subport);
> + grinder->subport = port->subport + (grinder->pindex / port-
> >n_subports_per_port);
>   grinder->pipe = port->pipe + grinder->pindex;
>   grinder->pipe_params = NULL; /* to be set after the pipe structure is
> prefetched */
>   grinder->productive = 0;
> --
> 1.9.1

Hi Simon,

NACK.

Each port has an array of queues (size is port->n_queues_per_port), which are 
organized into equal size groups associated with pipes and subports:
- Each pipe is assigned the next group of RTE_SCHED_QUEUES_PER_PIPE (i.e. 16) 
queues in ascending order;
- Each subport is assigned the next group of port->n_pipes_per_subport pipes 
(congurable parameter).
The following is true:
n_queues_per_port = RTE_SCHED_QUEUES_PER_PIPE * n_pipes_per_subport * 
n_subports_per_port

Given a queue index (pipe_qindex), the following are true:
- Pipe index: pindex = pipe_qindex >> 4;
- Subport index (let's call it sindex): sindex = pindex / n_pipes_per_subport, 
right?

I don't know why you get crashes in your application, but what I do know is 
that your proposed method to compute sindex is not correct :)

Regards,
Cristian


[dpdk-dev] [PATCH / RFC] sched: Correct subport calcuation

2016-06-21 Thread Dumitrescu, Cristian
Hi Simon,

I am going to take a look at it this week and come back to you.

Thanks,
Cristian

> -Original Message-
> From: Simon K?gstr?m [mailto:simon.kagstrom at netinsight.net]
> Sent: Tuesday, June 21, 2016 7:41 AM
> To: Dumitrescu, Cristian ;
> stephen at networkplumber.org; dev at dpdk.org;
> thomas.monjalon at 6wind.com
> Subject: Re: [dpdk-dev] [PATCH / RFC] sched: Correct subport calcuation
> 
> Hi again!
> 
> Any news about this patch? I'm off for parental leave starting next week
> (until january), so any comments (or simply dropping it!) would be good
> to have before that :-)
> 
> // Simon
> 
> On 2016-06-10 08:29, Simon Kagstrom wrote:
> > Signed-off-by: Simon Kagstrom 
> > ---
> > I'm a total newbie to the rte_sched design and implementation, so I've
> > added the RFC.
> >
> > We get crashes (at other places in the scheduler) without this code.
> >
> >  lib/librte_sched/rte_sched.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/lib/librte_sched/rte_sched.c b/lib/librte_sched/rte_sched.c
> > index 1609ea8..b46ecfb 100644
> > --- a/lib/librte_sched/rte_sched.c
> > +++ b/lib/librte_sched/rte_sched.c
> > @@ -1869,7 +1869,7 @@ grinder_next_pipe(struct rte_sched_port *port,
> uint32_t pos)
> >
> > /* Install new pipe in the grinder */
> > grinder->pindex = pipe_qindex >> 4;
> > -   grinder->subport = port->subport + (grinder->pindex / port-
> >n_pipes_per_subport);
> > +   grinder->subport = port->subport + (grinder->pindex / port-
> >n_subports_per_port);
> > grinder->pipe = port->pipe + grinder->pindex;
> > grinder->pipe_params = NULL; /* to be set after the pipe structure is
> prefetched */
> > grinder->productive = 0;
> >


[dpdk-dev] [PATCH / RFC] sched: Correct subport calcuation

2016-06-21 Thread Simon Kågström
Hi again!

Any news about this patch? I'm off for parental leave starting next week
(until january), so any comments (or simply dropping it!) would be good
to have before that :-)

// Simon

On 2016-06-10 08:29, Simon Kagstrom wrote:
> Signed-off-by: Simon Kagstrom 
> ---
> I'm a total newbie to the rte_sched design and implementation, so I've
> added the RFC.
> 
> We get crashes (at other places in the scheduler) without this code.
> 
>  lib/librte_sched/rte_sched.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/lib/librte_sched/rte_sched.c b/lib/librte_sched/rte_sched.c
> index 1609ea8..b46ecfb 100644
> --- a/lib/librte_sched/rte_sched.c
> +++ b/lib/librte_sched/rte_sched.c
> @@ -1869,7 +1869,7 @@ grinder_next_pipe(struct rte_sched_port *port, uint32_t 
> pos)
>  
>   /* Install new pipe in the grinder */
>   grinder->pindex = pipe_qindex >> 4;
> - grinder->subport = port->subport + (grinder->pindex / 
> port->n_pipes_per_subport);
> + grinder->subport = port->subport + (grinder->pindex / 
> port->n_subports_per_port);
>   grinder->pipe = port->pipe + grinder->pindex;
>   grinder->pipe_params = NULL; /* to be set after the pipe structure is 
> prefetched */
>   grinder->productive = 0;
> 


[dpdk-dev] [PATCH / RFC] sched: Correct subport calcuation

2016-06-10 Thread Simon Kagstrom
Signed-off-by: Simon Kagstrom 
---
I'm a total newbie to the rte_sched design and implementation, so I've
added the RFC.

We get crashes (at other places in the scheduler) without this code.

 lib/librte_sched/rte_sched.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/librte_sched/rte_sched.c b/lib/librte_sched/rte_sched.c
index 1609ea8..b46ecfb 100644
--- a/lib/librte_sched/rte_sched.c
+++ b/lib/librte_sched/rte_sched.c
@@ -1869,7 +1869,7 @@ grinder_next_pipe(struct rte_sched_port *port, uint32_t 
pos)

/* Install new pipe in the grinder */
grinder->pindex = pipe_qindex >> 4;
-   grinder->subport = port->subport + (grinder->pindex / 
port->n_pipes_per_subport);
+   grinder->subport = port->subport + (grinder->pindex / 
port->n_subports_per_port);
grinder->pipe = port->pipe + grinder->pindex;
grinder->pipe_params = NULL; /* to be set after the pipe structure is 
prefetched */
grinder->productive = 0;
-- 
1.9.1