app/regex: fix mbuf size for multi segemnt buffers
Checks
Commit Message
When allocating multi segmented buffers, and in case there is
a remainder in total buf len, the actual job len might be more
than expected job_len.
This adds additional space in the mbuf in the multi seg case,
to allow the remaining memory to be stored in one segment.
Fixes: c1d1b94eec58 ("app/regex: fix number of matches")
Cc: ggribbon@nvidia.com
Cc: stable@dpdk.org
Signed-off-by: Raslan Darawsheh <rasland@nvidia.com>
Acked-by: Ori Kam <orika@nvidia.com>
---
app/test-regex/main.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
Comments
05/07/2022 10:09, Raslan Darawsheh:
> When allocating multi segmented buffers, and in case there is
> a remainder in total buf len, the actual job len might be more
> than expected job_len.
>
> This adds additional space in the mbuf in the multi seg case,
> to allow the remaining memory to be stored in one segment.
>
> Fixes: c1d1b94eec58 ("app/regex: fix number of matches")
> Cc: ggribbon@nvidia.com
> Cc: stable@dpdk.org
>
> Signed-off-by: Raslan Darawsheh <rasland@nvidia.com>
> Acked-by: Ori Kam <orika@nvidia.com>
Applied (with fixed typo in title), thanks.
@@ -412,8 +412,8 @@ run_regex(void *args)
mbuf_mp = rte_pktmbuf_pool_create(mbuf_pool,
rte_align32pow2(nb_jobs * nb_qps * nb_segs),
0, 0, (nb_segs == 1) ? MBUF_SIZE :
- (rte_align32pow2(job_len) / nb_segs +
- RTE_PKTMBUF_HEADROOM),
+ (rte_align32pow2(job_len + (data_len % nb_jobs)) /
+ nb_segs + RTE_PKTMBUF_HEADROOM),
rte_socket_id());
if (mbuf_mp == NULL) {
printf("Error, can't create memory pool\n");