* [dpdk-dev] [PATCH] net/mlx5: fix Rx descriptor status returned value @ 2020-03-13 9:56 Didier Pallard 2020-03-16 16:05 ` Slava Ovsiienko 0 siblings, 1 reply; 8+ messages in thread From: Didier Pallard @ 2020-03-13 9:56 UTC (permalink / raw) To: dev; +Cc: stable Two bugs in rx_queue_count function: - One entry may contain several segments, so 'used' must be multiplied by number of segments per entry to properly reflect the queue usage. - rx_queue_count returns the number of entries used in queue, so it ranges from 0 to max number of entries in queue, not this number minus one. Fixes: 8788fec1f269 ("net/mlx5: implement descriptor status API") Cc: stable@dpdk.org Signed-off-by: Didier Pallard <didier.pallard@6wind.com> --- drivers/net/mlx5/mlx5_rxtx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/mlx5/mlx5_rxtx.c b/drivers/net/mlx5/mlx5_rxtx.c index 5ac63da8039d..17f80c25443e 100644 --- a/drivers/net/mlx5/mlx5_rxtx.c +++ b/drivers/net/mlx5/mlx5_rxtx.c @@ -500,7 +500,7 @@ rx_queue_count(struct mlx5_rxq_data *rxq) used += n; cqe = &(*rxq->cqes)[cq_ci & cqe_cnt]; } - used = RTE_MIN(used, (1U << rxq->elts_n) - 1); + used = RTE_MIN(used * (1 << rxq->sges_n), 1U << rxq->elts_n); return used; } -- 2.24.1 ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [dpdk-dev] [PATCH] net/mlx5: fix Rx descriptor status returned value 2020-03-13 9:56 [dpdk-dev] [PATCH] net/mlx5: fix Rx descriptor status returned value Didier Pallard @ 2020-03-16 16:05 ` Slava Ovsiienko 2020-03-16 17:24 ` Didier Pallard 0 siblings, 1 reply; 8+ messages in thread From: Slava Ovsiienko @ 2020-03-16 16:05 UTC (permalink / raw) To: Didier Pallard, dev; +Cc: stable, Matan Azrad Hi, Didier First, thank you for the patch. If we have a look at the description of rte_eth_rx_queue_count(): "Get the number of used descriptors of a rx queue". It means the DPDK generic descriptors, not PMD specific ones. "DPDK descriptor" means the entity which can handle one packet. rte_eth_rx_queue_count() should return the potential number of packets could be fetched from the Rx queue on the next rx_burst() call. Application should know anything about PMD descriptors, it must be isolated. So, rx_queue_count() should return the number of expected packets not hardware entries. That's why the value being returned is compared with elts, not with HW desctriptors. As for -1 - I agree, should be fixed. It seems we have another bug - the Rx queue is created with number of hardware descriptors which does not correspond the requested packets in case of multi-segment packets (requested desc is divided by (1<<sges_n), it seems it should not). With best regards, Slava > -----Original Message----- > From: dev <dev-bounces@dpdk.org> On Behalf Of Didier Pallard > Sent: Friday, March 13, 2020 11:57 > To: dev@dpdk.org > Cc: stable@dpdk.org > Subject: [dpdk-dev] [PATCH] net/mlx5: fix Rx descriptor status returned value > > Two bugs in rx_queue_count function: > - One entry may contain several segments, so 'used' must be multiplied > by number of segments per entry to properly reflect the queue usage. > - rx_queue_count returns the number of entries used in queue, so it ranges > from 0 to max number of entries in queue, not this number minus > one. > > Fixes: 8788fec1f269 ("net/mlx5: implement descriptor status API") > Cc: stable@dpdk.org > Signed-off-by: Didier Pallard <didier.pallard@6wind.com> > --- > drivers/net/mlx5/mlx5_rxtx.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/net/mlx5/mlx5_rxtx.c b/drivers/net/mlx5/mlx5_rxtx.c index > 5ac63da8039d..17f80c25443e 100644 > --- a/drivers/net/mlx5/mlx5_rxtx.c > +++ b/drivers/net/mlx5/mlx5_rxtx.c > @@ -500,7 +500,7 @@ rx_queue_count(struct mlx5_rxq_data *rxq) > used += n; > cqe = &(*rxq->cqes)[cq_ci & cqe_cnt]; > } > - used = RTE_MIN(used, (1U << rxq->elts_n) - 1); > + used = RTE_MIN(used * (1 << rxq->sges_n), 1U << rxq->elts_n); > return used; > } > > -- > 2.24.1 ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [dpdk-dev] [PATCH] net/mlx5: fix Rx descriptor status returned value 2020-03-16 16:05 ` Slava Ovsiienko @ 2020-03-16 17:24 ` Didier Pallard 2020-03-17 8:33 ` Slava Ovsiienko 0 siblings, 1 reply; 8+ messages in thread From: Didier Pallard @ 2020-03-16 17:24 UTC (permalink / raw) To: Slava Ovsiienko; +Cc: dev, stable, Matan Azrad Well, you're right, another way to fix the problem could be to set up the queue size assuming the provided number is a number of packets in queue rather than a number of mbufs in queue. But not sure it's better, it's also important for the application/user to know the number of mbufs that could fit in a rx/tx queue, whatever the number of packets that it covers, since it is very important to size the memory pools correctly to avoid any mbuf shortage during system life. Thanks Didier On Mon, Mar 16, 2020 at 5:05 PM Slava Ovsiienko <viacheslavo@mellanox.com> wrote: > Hi, Didier > > First, thank you for the patch. > > If we have a look at the description of rte_eth_rx_queue_count(): "Get the > number of used descriptors of a rx queue". > It means the DPDK generic descriptors, not PMD specific ones. "DPDK > descriptor" means the entity which can handle one packet. > rte_eth_rx_queue_count() should return the potential number of packets > could be fetched from the Rx queue on the next rx_burst() call. > Application should know anything about PMD descriptors, it must be > isolated. So, rx_queue_count() should return the number of expected > packets not hardware entries. That's why the value being returned is > compared with elts, not with HW desctriptors. > > As for -1 - I agree, should be fixed. > > It seems we have another bug - the Rx queue is created with number of > hardware descriptors which does not correspond the requested packets > in case of multi-segment packets (requested desc is divided by > (1<<sges_n), it seems it should not). > > With best regards, Slava > > > -----Original Message----- > > From: dev <dev-bounces@dpdk.org> On Behalf Of Didier Pallard > > Sent: Friday, March 13, 2020 11:57 > > To: dev@dpdk.org > > Cc: stable@dpdk.org > > Subject: [dpdk-dev] [PATCH] net/mlx5: fix Rx descriptor status returned > value > > > > Two bugs in rx_queue_count function: > > - One entry may contain several segments, so 'used' must be multiplied > > by number of segments per entry to properly reflect the queue usage. > > - rx_queue_count returns the number of entries used in queue, so it > ranges > > from 0 to max number of entries in queue, not this number minus > > one. > > > > Fixes: 8788fec1f269 ("net/mlx5: implement descriptor status API") > > Cc: stable@dpdk.org > > Signed-off-by: Didier Pallard <didier.pallard@6wind.com> > > --- > > drivers/net/mlx5/mlx5_rxtx.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/drivers/net/mlx5/mlx5_rxtx.c b/drivers/net/mlx5/mlx5_rxtx.c > index > > 5ac63da8039d..17f80c25443e 100644 > > --- a/drivers/net/mlx5/mlx5_rxtx.c > > +++ b/drivers/net/mlx5/mlx5_rxtx.c > > @@ -500,7 +500,7 @@ rx_queue_count(struct mlx5_rxq_data *rxq) > > used += n; > > cqe = &(*rxq->cqes)[cq_ci & cqe_cnt]; > > } > > - used = RTE_MIN(used, (1U << rxq->elts_n) - 1); > > + used = RTE_MIN(used * (1 << rxq->sges_n), 1U << rxq->elts_n); > > return used; > > } > > > > -- > > 2.24.1 > > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [dpdk-dev] [PATCH] net/mlx5: fix Rx descriptor status returned value 2020-03-16 17:24 ` Didier Pallard @ 2020-03-17 8:33 ` Slava Ovsiienko 2020-03-17 9:19 ` Didier Pallard 0 siblings, 1 reply; 8+ messages in thread From: Slava Ovsiienko @ 2020-03-17 8:33 UTC (permalink / raw) To: Didier Pallard; +Cc: dev, stable, Matan Azrad >> From: Didier Pallard <didier.pallard@6wind.com> >> Sent: Monday, March 16, 2020 19:24 >> To: Slava Ovsiienko <viacheslavo@mellanox.com> >> Cc: dev@dpdk.org; stable@dpdk.org; Matan Azrad <matan@mellanox.com> >> Subject: Re: [dpdk-dev] [PATCH] net/mlx5: fix Rx descriptor status returned value >> Well, you're right, another way to fix the problem could be to set up the queue size assuming the provided number >> is a number of packets in queue rather than a number of mbufs in queue. Yes, it is intended in queue setup routine. But, for mlx5 we have a bug for regular mlx5_rx_burst if scattering is enabled, the Rx queue is created with size wqe_n elements, should be wqe_n << sges_n instead, to be able to receive the requested number of packets (wqe_n). I think we must fix. Would you like to update your patch, or should I provide mine? >> But not sure it's better, it's also important for the application/user to know the number of mbufs that could fit in a rx/tx queue, >> whatever the number of packets that it covers, since it is very important to size the memory pools correctly to avoid any >> mbuf shortage during system life. >> Thanks >> Didier To estimate - the number of "DPDK descriptors" should be multiplied by the maximal length of scattered packet chain. With best regards, Slava > -----Original Message----- > From: dev <mailto:dev-bounces@dpdk.org> On Behalf Of Didier Pallard > Sent: Friday, March 13, 2020 11:57 > To: mailto:dev@dpdk.org > Cc: mailto:stable@dpdk.org > Subject: [dpdk-dev] [PATCH] net/mlx5: fix Rx descriptor status returned value > > Two bugs in rx_queue_count function: > - One entry may contain several segments, so 'used' must be multiplied > by number of segments per entry to properly reflect the queue usage. > - rx_queue_count returns the number of entries used in queue, so it ranges > from 0 to max number of entries in queue, not this number minus > one. > > Fixes: 8788fec1f269 ("net/mlx5: implement descriptor status API") > Cc: mailto:stable@dpdk.org > Signed-off-by: Didier Pallard <mailto:didier.pallard@6wind.com> > --- > drivers/net/mlx5/mlx5_rxtx.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/net/mlx5/mlx5_rxtx.c b/drivers/net/mlx5/mlx5_rxtx.c index > 5ac63da8039d..17f80c25443e 100644 > --- a/drivers/net/mlx5/mlx5_rxtx.c > +++ b/drivers/net/mlx5/mlx5_rxtx.c > @@ -500,7 +500,7 @@ rx_queue_count(struct mlx5_rxq_data *rxq) > used += n; > cqe = &(*rxq->cqes)[cq_ci & cqe_cnt]; > } > - used = RTE_MIN(used, (1U << rxq->elts_n) - 1); > + used = RTE_MIN(used * (1 << rxq->sges_n), 1U << rxq->elts_n); > return used; > } > > -- > 2.24.1 ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [dpdk-dev] [PATCH] net/mlx5: fix Rx descriptor status returned value 2020-03-17 8:33 ` Slava Ovsiienko @ 2020-03-17 9:19 ` Didier Pallard 2020-03-17 9:25 ` Slava Ovsiienko 0 siblings, 1 reply; 8+ messages in thread From: Didier Pallard @ 2020-03-17 9:19 UTC (permalink / raw) To: Slava Ovsiienko; +Cc: dev, stable, Matan Azrad well, please do if you don't mind, You will validate it quicker, and I'm currently working on a different topic. Btw, do you think it's possible to have an implementation of [r,t]x_status_descriptor functions for vectorized implementation? thanks didier On Tue, Mar 17, 2020 at 9:33 AM Slava Ovsiienko <viacheslavo@mellanox.com> wrote: > >> From: Didier Pallard <didier.pallard@6wind.com> > >> Sent: Monday, March 16, 2020 19:24 > >> To: Slava Ovsiienko <viacheslavo@mellanox.com> > >> Cc: dev@dpdk.org; stable@dpdk.org; Matan Azrad <matan@mellanox.com> > >> Subject: Re: [dpdk-dev] [PATCH] net/mlx5: fix Rx descriptor status > returned value > >> Well, you're right, another way to fix the problem could be to set up > the queue size assuming the provided number > >> is a number of packets in queue rather than a number of mbufs in queue. > > Yes, it is intended in queue setup routine. But, for mlx5 we have a bug > for regular mlx5_rx_burst if scattering is enabled, > the Rx queue is created with size wqe_n elements, should be wqe_n << > sges_n instead, to be able to receive the requested > number of packets (wqe_n). I think we must fix. Would you like to update > your patch, or should I provide mine? > > >> But not sure it's better, it's also important for the application/user > to know the number of mbufs that could fit in a rx/tx queue, > >> whatever the number of packets that it covers, since it is very > important to size the memory pools correctly to avoid any > >> mbuf shortage during system life. > >> Thanks > >> Didier > To estimate - the number of "DPDK descriptors" should be multiplied by the > maximal length of scattered packet chain. > > With best regards, Slava > > > -----Original Message----- > > From: dev <mailto:dev-bounces@dpdk.org> On Behalf Of Didier Pallard > > Sent: Friday, March 13, 2020 11:57 > > To: mailto:dev@dpdk.org > > Cc: mailto:stable@dpdk.org > > Subject: [dpdk-dev] [PATCH] net/mlx5: fix Rx descriptor status returned > value > > > > Two bugs in rx_queue_count function: > > - One entry may contain several segments, so 'used' must be multiplied > > by number of segments per entry to properly reflect the queue usage. > > - rx_queue_count returns the number of entries used in queue, so it > ranges > > from 0 to max number of entries in queue, not this number minus > > one. > > > > Fixes: 8788fec1f269 ("net/mlx5: implement descriptor status API") > > Cc: mailto:stable@dpdk.org > > Signed-off-by: Didier Pallard <mailto:didier.pallard@6wind.com> > > --- > > drivers/net/mlx5/mlx5_rxtx.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/drivers/net/mlx5/mlx5_rxtx.c b/drivers/net/mlx5/mlx5_rxtx.c > index > > 5ac63da8039d..17f80c25443e 100644 > > --- a/drivers/net/mlx5/mlx5_rxtx.c > > +++ b/drivers/net/mlx5/mlx5_rxtx.c > > @@ -500,7 +500,7 @@ rx_queue_count(struct mlx5_rxq_data *rxq) > > used += n; > > cqe = &(*rxq->cqes)[cq_ci & cqe_cnt]; > > } > > - used = RTE_MIN(used, (1U << rxq->elts_n) - 1); > > + used = RTE_MIN(used * (1 << rxq->sges_n), 1U << rxq->elts_n); > > return used; > > } > > > > -- > > 2.24.1 > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [dpdk-dev] [PATCH] net/mlx5: fix Rx descriptor status returned value 2020-03-17 9:19 ` Didier Pallard @ 2020-03-17 9:25 ` Slava Ovsiienko 2020-03-17 9:41 ` Didier Pallard 2020-10-29 11:29 ` Didier Pallard 0 siblings, 2 replies; 8+ messages in thread From: Slava Ovsiienko @ 2020-03-17 9:25 UTC (permalink / raw) To: Didier Pallard; +Cc: dev, stable, Matan Azrad From: Didier Pallard <didier.pallard@6wind.com> Sent: Tuesday, March 17, 2020 11:19 To: Slava Ovsiienko <viacheslavo@mellanox.com> Cc: dev@dpdk.org; stable@dpdk.org; Matan Azrad <matan@mellanox.com> Subject: Re: [dpdk-dev] [PATCH] net/mlx5: fix Rx descriptor status returned value >>>well, please do if you don't mind, OK, I will. >>>You will validate it quicker, and I'm currently working on a different topic. >>>Btw, do you think it's possible to have an implementation of [r,t]x_status_descriptor functions for vectorized implementation? >>>thanks Yes, we are planning this update. With best regards, Slava didier On Tue, Mar 17, 2020 at 9:33 AM Slava Ovsiienko <viacheslavo@mellanox.com<mailto:viacheslavo@mellanox.com>> wrote: >> From: Didier Pallard <didier.pallard@6wind.com<mailto:didier.pallard@6wind.com>> >> Sent: Monday, March 16, 2020 19:24 >> To: Slava Ovsiienko <viacheslavo@mellanox.com<mailto:viacheslavo@mellanox.com>> >> Cc: dev@dpdk.org<mailto:dev@dpdk.org>; stable@dpdk.org<mailto:stable@dpdk.org>; Matan Azrad <matan@mellanox.com<mailto:matan@mellanox.com>> >> Subject: Re: [dpdk-dev] [PATCH] net/mlx5: fix Rx descriptor status returned value >> Well, you're right, another way to fix the problem could be to set up the queue size assuming the provided number >> is a number of packets in queue rather than a number of mbufs in queue. Yes, it is intended in queue setup routine. But, for mlx5 we have a bug for regular mlx5_rx_burst if scattering is enabled, the Rx queue is created with size wqe_n elements, should be wqe_n << sges_n instead, to be able to receive the requested number of packets (wqe_n). I think we must fix. Would you like to update your patch, or should I provide mine? >> But not sure it's better, it's also important for the application/user to know the number of mbufs that could fit in a rx/tx queue, >> whatever the number of packets that it covers, since it is very important to size the memory pools correctly to avoid any >> mbuf shortage during system life. >> Thanks >> Didier To estimate - the number of "DPDK descriptors" should be multiplied by the maximal length of scattered packet chain. With best regards, Slava > -----Original Message----- > From: dev <mailto:dev-bounces@dpdk.org<mailto:dev-bounces@dpdk.org>> On Behalf Of Didier Pallard > Sent: Friday, March 13, 2020 11:57 > To: mailto:dev@dpdk.org<mailto:dev@dpdk.org> > Cc: mailto:stable@dpdk.org<mailto:stable@dpdk.org> > Subject: [dpdk-dev] [PATCH] net/mlx5: fix Rx descriptor status returned value > > Two bugs in rx_queue_count function: > - One entry may contain several segments, so 'used' must be multiplied > by number of segments per entry to properly reflect the queue usage. > - rx_queue_count returns the number of entries used in queue, so it ranges > from 0 to max number of entries in queue, not this number minus > one. > > Fixes: 8788fec1f269 ("net/mlx5: implement descriptor status API") > Cc: mailto:stable@dpdk.org<mailto:stable@dpdk.org> > Signed-off-by: Didier Pallard <mailto:didier.pallard@6wind.com<mailto:didier.pallard@6wind.com>> > --- > drivers/net/mlx5/mlx5_rxtx.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/net/mlx5/mlx5_rxtx.c b/drivers/net/mlx5/mlx5_rxtx.c index > 5ac63da8039d..17f80c25443e 100644 > --- a/drivers/net/mlx5/mlx5_rxtx.c > +++ b/drivers/net/mlx5/mlx5_rxtx.c > @@ -500,7 +500,7 @@ rx_queue_count(struct mlx5_rxq_data *rxq) > used += n; > cqe = &(*rxq->cqes)[cq_ci & cqe_cnt]; > } > - used = RTE_MIN(used, (1U << rxq->elts_n) - 1); > + used = RTE_MIN(used * (1 << rxq->sges_n), 1U << rxq->elts_n); > return used; > } > > -- > 2.24.1 ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [dpdk-dev] [PATCH] net/mlx5: fix Rx descriptor status returned value 2020-03-17 9:25 ` Slava Ovsiienko @ 2020-03-17 9:41 ` Didier Pallard 2020-10-29 11:29 ` Didier Pallard 1 sibling, 0 replies; 8+ messages in thread From: Didier Pallard @ 2020-03-17 9:41 UTC (permalink / raw) To: Slava Ovsiienko; +Cc: dev, stable, Matan Azrad OK, thank you best regards didier On Tue, Mar 17, 2020 at 10:25 AM Slava Ovsiienko <viacheslavo@mellanox.com> wrote: > *From:* Didier Pallard <didier.pallard@6wind.com> > *Sent:* Tuesday, March 17, 2020 11:19 > *To:* Slava Ovsiienko <viacheslavo@mellanox.com> > *Cc:* dev@dpdk.org; stable@dpdk.org; Matan Azrad <matan@mellanox.com> > *Subject:* Re: [dpdk-dev] [PATCH] net/mlx5: fix Rx descriptor status > returned value > > >>>well, please do if you don't mind, > > OK, I will. > > > > >>>You will validate it quicker, and I'm currently working on a > different topic. > > >>>Btw, do you think it's possible to have an implementation of > [r,t]x_status_descriptor functions for vectorized implementation? > > >>>thanks > > Yes, we are planning this update. > > > > With best regards, Slava > > > > > > didier > > > > On Tue, Mar 17, 2020 at 9:33 AM Slava Ovsiienko <viacheslavo@mellanox.com> > wrote: > > >> From: Didier Pallard <didier.pallard@6wind.com> > >> Sent: Monday, March 16, 2020 19:24 > >> To: Slava Ovsiienko <viacheslavo@mellanox.com> > >> Cc: dev@dpdk.org; stable@dpdk.org; Matan Azrad <matan@mellanox.com> > >> Subject: Re: [dpdk-dev] [PATCH] net/mlx5: fix Rx descriptor status > returned value > >> Well, you're right, another way to fix the problem could be to set up > the queue size assuming the provided number > >> is a number of packets in queue rather than a number of mbufs in queue. > > Yes, it is intended in queue setup routine. But, for mlx5 we have a bug > for regular mlx5_rx_burst if scattering is enabled, > the Rx queue is created with size wqe_n elements, should be wqe_n << > sges_n instead, to be able to receive the requested > number of packets (wqe_n). I think we must fix. Would you like to update > your patch, or should I provide mine? > > >> But not sure it's better, it's also important for the application/user > to know the number of mbufs that could fit in a rx/tx queue, > >> whatever the number of packets that it covers, since it is very > important to size the memory pools correctly to avoid any > >> mbuf shortage during system life. > >> Thanks > >> Didier > To estimate - the number of "DPDK descriptors" should be multiplied by the > maximal length of scattered packet chain. > > With best regards, Slava > > > -----Original Message----- > > From: dev <mailto:dev-bounces@dpdk.org> On Behalf Of Didier Pallard > > Sent: Friday, March 13, 2020 11:57 > > To: mailto:dev@dpdk.org > > Cc: mailto:stable@dpdk.org > > Subject: [dpdk-dev] [PATCH] net/mlx5: fix Rx descriptor status returned > value > > > > Two bugs in rx_queue_count function: > > - One entry may contain several segments, so 'used' must be multiplied > > by number of segments per entry to properly reflect the queue usage. > > - rx_queue_count returns the number of entries used in queue, so it > ranges > > from 0 to max number of entries in queue, not this number minus > > one. > > > > Fixes: 8788fec1f269 ("net/mlx5: implement descriptor status API") > > Cc: mailto:stable@dpdk.org > > Signed-off-by: Didier Pallard <mailto:didier.pallard@6wind.com> > > --- > > drivers/net/mlx5/mlx5_rxtx.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/drivers/net/mlx5/mlx5_rxtx.c b/drivers/net/mlx5/mlx5_rxtx.c > index > > 5ac63da8039d..17f80c25443e 100644 > > --- a/drivers/net/mlx5/mlx5_rxtx.c > > +++ b/drivers/net/mlx5/mlx5_rxtx.c > > @@ -500,7 +500,7 @@ rx_queue_count(struct mlx5_rxq_data *rxq) > > used += n; > > cqe = &(*rxq->cqes)[cq_ci & cqe_cnt]; > > } > > - used = RTE_MIN(used, (1U << rxq->elts_n) - 1); > > + used = RTE_MIN(used * (1 << rxq->sges_n), 1U << rxq->elts_n); > > return used; > > } > > > > -- > > 2.24.1 > > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [dpdk-dev] [PATCH] net/mlx5: fix Rx descriptor status returned value 2020-03-17 9:25 ` Slava Ovsiienko 2020-03-17 9:41 ` Didier Pallard @ 2020-10-29 11:29 ` Didier Pallard 1 sibling, 0 replies; 8+ messages in thread From: Didier Pallard @ 2020-10-29 11:29 UTC (permalink / raw) To: Slava Ovsiienko; +Cc: dev, stable, Matan Azrad Hi slava, Is this fixed in main branch now? If yes could you please point me out the proper commit? Thanks Didier On 3/17/20 10:25 AM, Slava Ovsiienko wrote: > > *From:* Didier Pallard <didier.pallard@6wind.com> > *Sent:* Tuesday, March 17, 2020 11:19 > *To:* Slava Ovsiienko <viacheslavo@mellanox.com> > *Cc:* dev@dpdk.org; stable@dpdk.org; Matan Azrad <matan@mellanox.com> > *Subject:* Re: [dpdk-dev] [PATCH] net/mlx5: fix Rx descriptor status > returned value > > >>>well, please do if you don't mind, > > OK, I will. > > >>>You will validate it quicker, and I'm currently working on a > different topic. > > >>>Btw, do you think it's possible to have an implementation of > [r,t]x_status_descriptor functions for vectorized implementation? > > >>>thanks > > Yes, we are planning this update. > > With best regards, Slava > > didier > > On Tue, Mar 17, 2020 at 9:33 AM Slava Ovsiienko > <viacheslavo@mellanox.com <mailto:viacheslavo@mellanox.com>> wrote: > > >> From: Didier Pallard <didier.pallard@6wind.com > <mailto:didier.pallard@6wind.com>> > >> Sent: Monday, March 16, 2020 19:24 > >> To: Slava Ovsiienko <viacheslavo@mellanox.com > <mailto:viacheslavo@mellanox.com>> > >> Cc: dev@dpdk.org <mailto:dev@dpdk.org>; stable@dpdk.org > <mailto:stable@dpdk.org>; Matan Azrad <matan@mellanox.com > <mailto:matan@mellanox.com>> > >> Subject: Re: [dpdk-dev] [PATCH] net/mlx5: fix Rx descriptor > status returned value > >> Well, you're right, another way to fix the problem could be to > set up the queue size assuming the provided number > >> is a number of packets in queue rather than a number of mbufs > in queue. > > Yes, it is intended in queue setup routine. But, for mlx5 we have > a bug for regular mlx5_rx_burst if scattering is enabled, > the Rx queue is created with size wqe_n elements, should be wqe_n > << sges_n instead, to be able to receive the requested > number of packets (wqe_n). I think we must fix. Would you like to > update your patch, or should I provide mine? > > >> But not sure it's better, it's also important for the > application/user to know the number of mbufs that could fit in a > rx/tx queue, > >> whatever the number of packets that it covers, since it is very > important to size the memory pools correctly to avoid any > >> mbuf shortage during system life. > >> Thanks > >> Didier > To estimate - the number of "DPDK descriptors" should be > multiplied by the maximal length of scattered packet chain. > > With best regards, Slava > > > -----Original Message----- > > From: dev <mailto:dev-bounces@dpdk.org > <mailto:dev-bounces@dpdk.org>> On Behalf Of Didier Pallard > > Sent: Friday, March 13, 2020 11:57 > > To: mailto:dev@dpdk.org <mailto:dev@dpdk.org> > > Cc: mailto:stable@dpdk.org <mailto:stable@dpdk.org> > > Subject: [dpdk-dev] [PATCH] net/mlx5: fix Rx descriptor status > returned value > > > > Two bugs in rx_queue_count function: > > - One entry may contain several segments, so 'used' must be > multiplied > > by number of segments per entry to properly reflect the queue > usage. > > - rx_queue_count returns the number of entries used in queue, so > it ranges > > from 0 to max number of entries in queue, not this number minus > > one. > > > > Fixes: 8788fec1f269 ("net/mlx5: implement descriptor status API") > > Cc: mailto:stable@dpdk.org <mailto:stable@dpdk.org> > > Signed-off-by: Didier Pallard <mailto:didier.pallard@6wind.com > <mailto:didier.pallard@6wind.com>> > > --- > > drivers/net/mlx5/mlx5_rxtx.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/drivers/net/mlx5/mlx5_rxtx.c > b/drivers/net/mlx5/mlx5_rxtx.c index > > 5ac63da8039d..17f80c25443e 100644 > > --- a/drivers/net/mlx5/mlx5_rxtx.c > > +++ b/drivers/net/mlx5/mlx5_rxtx.c > > @@ -500,7 +500,7 @@ rx_queue_count(struct mlx5_rxq_data *rxq) > > used += n; > > cqe = &(*rxq->cqes)[cq_ci & cqe_cnt]; > > } > > - used = RTE_MIN(used, (1U << rxq->elts_n) - 1); > > + used = RTE_MIN(used * (1 << rxq->sges_n), 1U << rxq->elts_n); > > return used; > > } > > > > -- > > 2.24.1 > ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2020-10-29 11:29 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2020-03-13 9:56 [dpdk-dev] [PATCH] net/mlx5: fix Rx descriptor status returned value Didier Pallard 2020-03-16 16:05 ` Slava Ovsiienko 2020-03-16 17:24 ` Didier Pallard 2020-03-17 8:33 ` Slava Ovsiienko 2020-03-17 9:19 ` Didier Pallard 2020-03-17 9:25 ` Slava Ovsiienko 2020-03-17 9:41 ` Didier Pallard 2020-10-29 11:29 ` Didier Pallard
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).