* [dpdk-dev] [PATCH] fix repopulation of tx_mbufs table
@ 2018-11-23 8:23 Rafal Kozik
2018-12-14 11:26 ` [dpdk-dev] [PATCH][pktgen] " Rafał Kozik
0 siblings, 1 reply; 6+ messages in thread
From: Rafal Kozik @ 2018-11-23 8:23 UTC (permalink / raw)
To: dev, keith.wiles; +Cc: mw, mk, gtzalik, evgenys, matua, igorch, Rafal Kozik
If in one TX cycle NIC does not send any packet, pktgen tries
to allocate 0 mbufs from pool. In such case DPDK return error
and packets will not be send. As no packet will be send in
next iteration this situation will repeat.
Checking if taking more mbufs is needed will prevent this situation.
Fixes: f034b381d19f ("cleanup and fix for FVL NIC performance")
Signed-off-by: Rafal Kozik <rk@semihalf.com>
---
app/pktgen.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/app/pktgen.c b/app/pktgen.c
index 2d9ff59..b4d3dfe 100644
--- a/app/pktgen.c
+++ b/app/pktgen.c
@@ -1054,7 +1054,8 @@ pktgen_send_pkts(port_info_t *info, uint16_t qid, struct rte_mempool *mp)
uint16_t saved = info->q[qid].tx_mbufs.len;
uint16_t nb_pkts = info->tx_burst - saved;
- rc = pg_pktmbuf_alloc_bulk(mp,
+ if (likely(nb_pkts > 0))
+ rc = pg_pktmbuf_alloc_bulk(mp,
&info->q[qid].tx_mbufs.m_table[saved],
nb_pkts);
if (rc == 0) {
@@ -1070,7 +1071,8 @@ pktgen_send_pkts(port_info_t *info, uint16_t qid, struct rte_mempool *mp)
uint16_t saved = info->q[qid].tx_mbufs.len;
uint16_t nb_pkts = txCnt - saved;
- rc = pg_pktmbuf_alloc_bulk(mp,
+ if (likely(nb_pkts > 0))
+ rc = pg_pktmbuf_alloc_bulk(mp,
&info->q[qid].tx_mbufs.m_table[saved],
nb_pkts);
if (rc == 0) {
--
2.7.4
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [dpdk-dev] [PATCH][pktgen] fix repopulation of tx_mbufs table
2018-11-23 8:23 [dpdk-dev] [PATCH] fix repopulation of tx_mbufs table Rafal Kozik
@ 2018-12-14 11:26 ` Rafał Kozik
2018-12-14 15:29 ` Wiles, Keith
0 siblings, 1 reply; 6+ messages in thread
From: Rafał Kozik @ 2018-12-14 11:26 UTC (permalink / raw)
To: dev, keith.wiles
Cc: Marcin Wojtas, Michał Krawczyk, Tzalik, Guy, Schmeilin,
Evgeny, Matushevsky, Alexander, Chauskin, Igor
Hello Keith,
as from my last post passed about three weeks I would kindly ask
if you could provide any comments about this patch?
Best regards,
Rafal Kozik
pt., 23 lis 2018 o 09:23 Rafal Kozik <rk@semihalf.com> napisał(a):
>
> If in one TX cycle NIC does not send any packet, pktgen tries
> to allocate 0 mbufs from pool. In such case DPDK return error
> and packets will not be send. As no packet will be send in
> next iteration this situation will repeat.
>
> Checking if taking more mbufs is needed will prevent this situation.
>
> Fixes: f034b381d19f ("cleanup and fix for FVL NIC performance")
>
> Signed-off-by: Rafal Kozik <rk@semihalf.com>
> ---
> app/pktgen.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/app/pktgen.c b/app/pktgen.c
> index 2d9ff59..b4d3dfe 100644
> --- a/app/pktgen.c
> +++ b/app/pktgen.c
> @@ -1054,7 +1054,8 @@ pktgen_send_pkts(port_info_t *info, uint16_t qid, struct rte_mempool *mp)
> uint16_t saved = info->q[qid].tx_mbufs.len;
> uint16_t nb_pkts = info->tx_burst - saved;
>
> - rc = pg_pktmbuf_alloc_bulk(mp,
> + if (likely(nb_pkts > 0))
> + rc = pg_pktmbuf_alloc_bulk(mp,
> &info->q[qid].tx_mbufs.m_table[saved],
> nb_pkts);
> if (rc == 0) {
> @@ -1070,7 +1071,8 @@ pktgen_send_pkts(port_info_t *info, uint16_t qid, struct rte_mempool *mp)
> uint16_t saved = info->q[qid].tx_mbufs.len;
> uint16_t nb_pkts = txCnt - saved;
>
> - rc = pg_pktmbuf_alloc_bulk(mp,
> + if (likely(nb_pkts > 0))
> + rc = pg_pktmbuf_alloc_bulk(mp,
> &info->q[qid].tx_mbufs.m_table[saved],
> nb_pkts);
> if (rc == 0) {
> --
> 2.7.4
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [dpdk-dev] [PATCH][pktgen] fix repopulation of tx_mbufs table
2018-12-14 11:26 ` [dpdk-dev] [PATCH][pktgen] " Rafał Kozik
@ 2018-12-14 15:29 ` Wiles, Keith
2018-12-14 15:45 ` Wiles, Keith
0 siblings, 1 reply; 6+ messages in thread
From: Wiles, Keith @ 2018-12-14 15:29 UTC (permalink / raw)
To: Rafał Kozik
Cc: dev, Marcin Wojtas, Michał Krawczyk, Tzalik, Guy, Schmeilin,
Evgeny, Matushevsky, Alexander, Chauskin, Igor
> On Dec 14, 2018, at 5:26 AM, Rafał Kozik <rk@semihalf.com> wrote:
>
> Hello Keith,
>
> as from my last post passed about three weeks I would kindly ask
> if you could provide any comments about this patch?
Missed this patch originally as it did not have pktgen on the status line.
Can you give more details as to how to reproduce the failure?
>
> Best regards,
> Rafal Kozik
>
> pt., 23 lis 2018 o 09:23 Rafal Kozik <rk@semihalf.com> napisał(a):
>>
>> If in one TX cycle NIC does not send any packet, pktgen tries
>> to allocate 0 mbufs from pool. In such case DPDK return error
>> and packets will not be send. As no packet will be send in
>> next iteration this situation will repeat.
>>
>> Checking if taking more mbufs is needed will prevent this situation.
>>
>> Fixes: f034b381d19f ("cleanup and fix for FVL NIC performance")
>>
>> Signed-off-by: Rafal Kozik <rk@semihalf.com>
>> ---
>> app/pktgen.c | 6 ++++--
>> 1 file changed, 4 insertions(+), 2 deletions(-)
>>
>> diff --git a/app/pktgen.c b/app/pktgen.c
>> index 2d9ff59..b4d3dfe 100644
>> --- a/app/pktgen.c
>> +++ b/app/pktgen.c
>> @@ -1054,7 +1054,8 @@ pktgen_send_pkts(port_info_t *info, uint16_t qid, struct rte_mempool *mp)
>> uint16_t saved = info->q[qid].tx_mbufs.len;
>> uint16_t nb_pkts = info->tx_burst - saved;
>>
>> - rc = pg_pktmbuf_alloc_bulk(mp,
>> + if (likely(nb_pkts > 0))
>> + rc = pg_pktmbuf_alloc_bulk(mp,
>> &info->q[qid].tx_mbufs.m_table[saved],
>> nb_pkts);
>> if (rc == 0) {
>> @@ -1070,7 +1071,8 @@ pktgen_send_pkts(port_info_t *info, uint16_t qid, struct rte_mempool *mp)
>> uint16_t saved = info->q[qid].tx_mbufs.len;
>> uint16_t nb_pkts = txCnt - saved;
>>
>> - rc = pg_pktmbuf_alloc_bulk(mp,
>> + if (likely(nb_pkts > 0))
>> + rc = pg_pktmbuf_alloc_bulk(mp,
>> &info->q[qid].tx_mbufs.m_table[saved],
>> nb_pkts);
>> if (rc == 0) {
>> --
>> 2.7.4
>>
Regards,
Keith
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [dpdk-dev] [PATCH][pktgen] fix repopulation of tx_mbufs table
2018-12-14 15:29 ` Wiles, Keith
@ 2018-12-14 15:45 ` Wiles, Keith
2018-12-14 15:48 ` Rafał Kozik
0 siblings, 1 reply; 6+ messages in thread
From: Wiles, Keith @ 2018-12-14 15:45 UTC (permalink / raw)
To: Rafał Kozik, Thomas Monjalon, Yigit, Ferruh
Cc: dev, Marcin Wojtas, Michał Krawczyk, Tzalik, Guy, Schmeilin,
Evgeny, Matushevsky, Alexander, Chauskin, Igor
> On Dec 14, 2018, at 9:29 AM, Wiles, Keith <keith.wiles@intel.com> wrote:
>
>
>
>> On Dec 14, 2018, at 5:26 AM, Rafał Kozik <rk@semihalf.com> wrote:
>>
>> Hello Keith,
>>
>> as from my last post passed about three weeks I would kindly ask
>> if you could provide any comments about this patch?
>
> Missed this patch originally as it did not have pktgen on the status line.
>
> Can you give more details as to how to reproduce the failure?
I can not find your patch in patchwork, does anyone know why?
>>
>> Best regards,
>> Rafal Kozik
>>
>> pt., 23 lis 2018 o 09:23 Rafal Kozik <rk@semihalf.com> napisał(a):
>>>
>>> If in one TX cycle NIC does not send any packet, pktgen tries
>>> to allocate 0 mbufs from pool. In such case DPDK return error
>>> and packets will not be send. As no packet will be send in
>>> next iteration this situation will repeat.
>>>
>>> Checking if taking more mbufs is needed will prevent this situation.
>>>
>>> Fixes: f034b381d19f ("cleanup and fix for FVL NIC performance")
>>>
>>> Signed-off-by: Rafal Kozik <rk@semihalf.com>
>>> ---
>>> app/pktgen.c | 6 ++++--
>>> 1 file changed, 4 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/app/pktgen.c b/app/pktgen.c
>>> index 2d9ff59..b4d3dfe 100644
>>> --- a/app/pktgen.c
>>> +++ b/app/pktgen.c
>>> @@ -1054,7 +1054,8 @@ pktgen_send_pkts(port_info_t *info, uint16_t qid, struct rte_mempool *mp)
>>> uint16_t saved = info->q[qid].tx_mbufs.len;
>>> uint16_t nb_pkts = info->tx_burst - saved;
>>>
>>> - rc = pg_pktmbuf_alloc_bulk(mp,
>>> + if (likely(nb_pkts > 0))
>>> + rc = pg_pktmbuf_alloc_bulk(mp,
>>> &info->q[qid].tx_mbufs.m_table[saved],
>>> nb_pkts);
>>> if (rc == 0) {
>>> @@ -1070,7 +1071,8 @@ pktgen_send_pkts(port_info_t *info, uint16_t qid, struct rte_mempool *mp)
>>> uint16_t saved = info->q[qid].tx_mbufs.len;
>>> uint16_t nb_pkts = txCnt - saved;
>>>
>>> - rc = pg_pktmbuf_alloc_bulk(mp,
>>> + if (likely(nb_pkts > 0))
>>> + rc = pg_pktmbuf_alloc_bulk(mp,
>>> &info->q[qid].tx_mbufs.m_table[saved],
>>> nb_pkts);
>>> if (rc == 0) {
>>> --
>>> 2.7.4
>>>
>
> Regards,
> Keith
Regards,
Keith
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [dpdk-dev] [PATCH][pktgen] fix repopulation of tx_mbufs table
2018-12-14 15:45 ` Wiles, Keith
@ 2018-12-14 15:48 ` Rafał Kozik
2018-12-14 15:52 ` Wiles, Keith
0 siblings, 1 reply; 6+ messages in thread
From: Rafał Kozik @ 2018-12-14 15:48 UTC (permalink / raw)
To: Wiles, Keith
Cc: Thomas Monjalon, Yigit, Ferruh, dev, Marcin Wojtas,
Michał Krawczyk, Tzalik, Guy, Schmeilin, Evgeny,
Matushevsky, Alexander, Chauskin, Igor
pt., 14 gru 2018 o 16:45 Wiles, Keith <keith.wiles@intel.com> napisał(a):
>
>
>
> > On Dec 14, 2018, at 9:29 AM, Wiles, Keith <keith.wiles@intel.com> wrote:
> >
> >
> >
> >> On Dec 14, 2018, at 5:26 AM, Rafał Kozik <rk@semihalf.com> wrote:
> >>
> >> Hello Keith,
> >>
> >> as from my last post passed about three weeks I would kindly ask
> >> if you could provide any comments about this patch?
> >
> > Missed this patch originally as it did not have pktgen on the status line.
Thank you for response. I apologies for wrong status line.
> >
> > Can you give more details as to how to reproduce the failure?
It occurred when pktgen is set to send more packets the NIC is able to transfer.
I such cases there could by cycle, when no packets are send, as Tx ring is full.
>
> I can not find your patch in patchwork, does anyone know why?
It was set as Not Applicable: http://patchwork.dpdk.org/patch/48305/
>
> >>
> >> Best regards,
> >> Rafal Kozik
> >>
> >> pt., 23 lis 2018 o 09:23 Rafal Kozik <rk@semihalf.com> napisał(a):
> >>>
> >>> If in one TX cycle NIC does not send any packet, pktgen tries
> >>> to allocate 0 mbufs from pool. In such case DPDK return error
> >>> and packets will not be send. As no packet will be send in
> >>> next iteration this situation will repeat.
> >>>
> >>> Checking if taking more mbufs is needed will prevent this situation.
> >>>
> >>> Fixes: f034b381d19f ("cleanup and fix for FVL NIC performance")
> >>>
> >>> Signed-off-by: Rafal Kozik <rk@semihalf.com>
> >>> ---
> >>> app/pktgen.c | 6 ++++--
> >>> 1 file changed, 4 insertions(+), 2 deletions(-)
> >>>
> >>> diff --git a/app/pktgen.c b/app/pktgen.c
> >>> index 2d9ff59..b4d3dfe 100644
> >>> --- a/app/pktgen.c
> >>> +++ b/app/pktgen.c
> >>> @@ -1054,7 +1054,8 @@ pktgen_send_pkts(port_info_t *info, uint16_t qid, struct rte_mempool *mp)
> >>> uint16_t saved = info->q[qid].tx_mbufs.len;
> >>> uint16_t nb_pkts = info->tx_burst - saved;
> >>>
> >>> - rc = pg_pktmbuf_alloc_bulk(mp,
> >>> + if (likely(nb_pkts > 0))
> >>> + rc = pg_pktmbuf_alloc_bulk(mp,
> >>> &info->q[qid].tx_mbufs.m_table[saved],
> >>> nb_pkts);
> >>> if (rc == 0) {
> >>> @@ -1070,7 +1071,8 @@ pktgen_send_pkts(port_info_t *info, uint16_t qid, struct rte_mempool *mp)
> >>> uint16_t saved = info->q[qid].tx_mbufs.len;
> >>> uint16_t nb_pkts = txCnt - saved;
> >>>
> >>> - rc = pg_pktmbuf_alloc_bulk(mp,
> >>> + if (likely(nb_pkts > 0))
> >>> + rc = pg_pktmbuf_alloc_bulk(mp,
> >>> &info->q[qid].tx_mbufs.m_table[saved],
> >>> nb_pkts);
> >>> if (rc == 0) {
> >>> --
> >>> 2.7.4
> >>>
> >
> > Regards,
> > Keith
>
> Regards,
> Keith
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [dpdk-dev] [PATCH][pktgen] fix repopulation of tx_mbufs table
2018-12-14 15:48 ` Rafał Kozik
@ 2018-12-14 15:52 ` Wiles, Keith
0 siblings, 0 replies; 6+ messages in thread
From: Wiles, Keith @ 2018-12-14 15:52 UTC (permalink / raw)
To: Rafał Kozik
Cc: Thomas Monjalon, Yigit, Ferruh, dev, Marcin Wojtas,
Michał Krawczyk, Tzalik, Guy, Schmeilin, Evgeny,
Matushevsky, Alexander, Chauskin, Igor
> On Dec 14, 2018, at 9:48 AM, Rafał Kozik <rk@semihalf.com> wrote:
>
> pt., 14 gru 2018 o 16:45 Wiles, Keith <keith.wiles@intel.com> napisał(a):
>>
>>
>>
>>> On Dec 14, 2018, at 9:29 AM, Wiles, Keith <keith.wiles@intel.com> wrote:
>>>
>>>
>>>
>>>> On Dec 14, 2018, at 5:26 AM, Rafał Kozik <rk@semihalf.com> wrote:
>>>>
>>>> Hello Keith,
>>>>
>>>> as from my last post passed about three weeks I would kindly ask
>>>> if you could provide any comments about this patch?
>>>
>>> Missed this patch originally as it did not have pktgen on the status line.
>
> Thank you for response. I apologies for wrong status line.
>
>>>
>>> Can you give more details as to how to reproduce the failure?
>
> It occurred when pktgen is set to send more packets the NIC is able to transfer.
> I such cases there could by cycle, when no packets are send, as Tx ring is full.
>
>>
>> I can not find your patch in patchwork, does anyone know why?
>
> It was set as Not Applicable: http://patchwork.dpdk.org/patch/48305/
Strange I searched using your name with ‘any’ patches and that did not show up or I miss type something.
Looking at the code and your patch it looks fine, so I will integrate the patch with a small formatting fix for indents.
>>
>>>>
>>>> Best regards,
>>>> Rafal Kozik
>>>>
>>>> pt., 23 lis 2018 o 09:23 Rafal Kozik <rk@semihalf.com> napisał(a):
>>>>>
>>>>> If in one TX cycle NIC does not send any packet, pktgen tries
>>>>> to allocate 0 mbufs from pool. In such case DPDK return error
>>>>> and packets will not be send. As no packet will be send in
>>>>> next iteration this situation will repeat.
>>>>>
>>>>> Checking if taking more mbufs is needed will prevent this situation.
>>>>>
>>>>> Fixes: f034b381d19f ("cleanup and fix for FVL NIC performance")
>>>>>
>>>>> Signed-off-by: Rafal Kozik <rk@semihalf.com>
>>>>> ---
>>>>> app/pktgen.c | 6 ++++--
>>>>> 1 file changed, 4 insertions(+), 2 deletions(-)
>>>>>
>>>>> diff --git a/app/pktgen.c b/app/pktgen.c
>>>>> index 2d9ff59..b4d3dfe 100644
>>>>> --- a/app/pktgen.c
>>>>> +++ b/app/pktgen.c
>>>>> @@ -1054,7 +1054,8 @@ pktgen_send_pkts(port_info_t *info, uint16_t qid, struct rte_mempool *mp)
>>>>> uint16_t saved = info->q[qid].tx_mbufs.len;
>>>>> uint16_t nb_pkts = info->tx_burst - saved;
>>>>>
>>>>> - rc = pg_pktmbuf_alloc_bulk(mp,
>>>>> + if (likely(nb_pkts > 0))
>>>>> + rc = pg_pktmbuf_alloc_bulk(mp,
>>>>> &info->q[qid].tx_mbufs.m_table[saved],
>>>>> nb_pkts);
>>>>> if (rc == 0) {
>>>>> @@ -1070,7 +1071,8 @@ pktgen_send_pkts(port_info_t *info, uint16_t qid, struct rte_mempool *mp)
>>>>> uint16_t saved = info->q[qid].tx_mbufs.len;
>>>>> uint16_t nb_pkts = txCnt - saved;
>>>>>
>>>>> - rc = pg_pktmbuf_alloc_bulk(mp,
>>>>> + if (likely(nb_pkts > 0))
>>>>> + rc = pg_pktmbuf_alloc_bulk(mp,
>>>>> &info->q[qid].tx_mbufs.m_table[saved],
>>>>> nb_pkts);
>>>>> if (rc == 0) {
>>>>> --
>>>>> 2.7.4
>>>>>
>>>
>>> Regards,
>>> Keith
>>
>> Regards,
>> Keith
Regards,
Keith
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2018-12-14 15:52 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-11-23 8:23 [dpdk-dev] [PATCH] fix repopulation of tx_mbufs table Rafal Kozik
2018-12-14 11:26 ` [dpdk-dev] [PATCH][pktgen] " Rafał Kozik
2018-12-14 15:29 ` Wiles, Keith
2018-12-14 15:45 ` Wiles, Keith
2018-12-14 15:48 ` Rafał Kozik
2018-12-14 15:52 ` Wiles, Keith
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).