* [PATCH] staging: octeon: fix asymmetric output buffer pool accounting
@ 2026-11-13 9:18 Priyanshu Singh
2026-11-13 10:15 ` Oscar Alejandro Sánchez Lucero
0 siblings, 1 reply; 2+ messages in thread
From: Priyanshu Singh @ 2026-11-13 9:18 UTC (permalink / raw)
To: Greg Kroah-Hartman; +Cc: linux-staging, linux-kernel, Priyanshu Singh
In cvm_oct_configure_common_hw(), when CVMX_FPA_OUTPUT_BUFFER_POOL differs
from CVMX_FPA_PACKET_POOL, 1024 output buffers are allocated and added to
the hardware Free Pool Allocator (FPA) pool. However, in cvm_oct_probe()
(err_tx:) and in cvm_oct_remove(),cvm_oct_mem_empty_fpa() is called with
128 instead of 1024 as the expected buffer count.
This asymmetric accounting causes cvm_oct_free_hw_memory() to report a
false warning ("Freeing of pool 2 had too many buffers (-896)") upon
draining the pool.
Define CVM_OCT_NUM_OUTPUT_BUFFERS in ethernet-defines.h and use this
constant across cvm_oct_configure_common_hw(),
cvm_oct_probe(), and cvm_oct_remove() to ensure symmetric allocation
and deallocation.
Signed-off-by: Priyanshu Singh <singhpriyanshu9838@gmail.com>
---
drivers/staging/octeon/ethernet-defines.h | 2 ++
drivers/staging/octeon/ethernet.c | 9 ++++++---
2 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/drivers/staging/octeon/ethernet-defines.h b/drivers/staging/octeon/ethernet-defines.h
index c060374a3da2..3ce7c125ccfd 100644
--- a/drivers/staging/octeon/ethernet-defines.h
+++ b/drivers/staging/octeon/ethernet-defines.h
@@ -37,4 +37,6 @@
#define TOTAL_NUMBER_OF_PORTS (CVMX_PIP_NUM_INPUT_PORTS + 1)
+#define CVM_OCT_NUM_OUTPUT_BUFFERS 1024
+
#endif /* __ETHERNET_DEFINES_H__ */
diff --git a/drivers/staging/octeon/ethernet.c b/drivers/staging/octeon/ethernet.c
index dea5696a6642..e0e6d40602f0 100644
--- a/drivers/staging/octeon/ethernet.c
+++ b/drivers/staging/octeon/ethernet.c
@@ -162,7 +162,8 @@ static void cvm_oct_configure_common_hw(struct platform_device *pdev)
num_packet_buffers);
if (CVMX_FPA_OUTPUT_BUFFER_POOL != CVMX_FPA_PACKET_POOL)
cvm_oct_mem_fill_fpa(pdev, CVMX_FPA_OUTPUT_BUFFER_POOL,
- CVMX_FPA_OUTPUT_BUFFER_POOL_SIZE, 1024);
+ CVMX_FPA_OUTPUT_BUFFER_POOL_SIZE,
+ CVM_OCT_NUM_OUTPUT_BUFFERS);
#ifdef __LITTLE_ENDIAN
{
@@ -974,7 +975,8 @@ static int cvm_oct_probe(struct platform_device *pdev)
num_packet_buffers);
if (CVMX_FPA_OUTPUT_BUFFER_POOL != CVMX_FPA_PACKET_POOL)
cvm_oct_mem_empty_fpa(pdev, CVMX_FPA_OUTPUT_BUFFER_POOL,
- CVMX_FPA_OUTPUT_BUFFER_POOL_SIZE, 128);
+ CVMX_FPA_OUTPUT_BUFFER_POOL_SIZE,
+ CVM_OCT_NUM_OUTPUT_BUFFERS);
return ret;
}
@@ -1009,7 +1011,8 @@ static void cvm_oct_remove(struct platform_device *pdev)
num_packet_buffers);
if (CVMX_FPA_OUTPUT_BUFFER_POOL != CVMX_FPA_PACKET_POOL)
cvm_oct_mem_empty_fpa(pdev, CVMX_FPA_OUTPUT_BUFFER_POOL,
- CVMX_FPA_OUTPUT_BUFFER_POOL_SIZE, 128);
+ CVMX_FPA_OUTPUT_BUFFER_POOL_SIZE,
+ CVM_OCT_NUM_OUTPUT_BUFFERS);
}
static const struct of_device_id cvm_oct_match[] = {
--
2.53.0
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH] staging: octeon: fix asymmetric output buffer pool accounting
2026-11-13 9:18 [PATCH] staging: octeon: fix asymmetric output buffer pool accounting Priyanshu Singh
@ 2026-11-13 10:15 ` Oscar Alejandro Sánchez Lucero
0 siblings, 0 replies; 2+ messages in thread
From: Oscar Alejandro Sánchez Lucero @ 2026-11-13 10:15 UTC (permalink / raw)
To: Priyanshu Singh; +Cc: Greg Kroah-Hartman, linux-staging, linux-kernel
On Fri, Nov 13, 2026 at 09:18:47AM +0000, Priyanshu Singh wrote:
> In cvm_oct_configure_common_hw(), when CVMX_FPA_OUTPUT_BUFFER_POOL differs
> from CVMX_FPA_PACKET_POOL, 1024 output buffers are allocated and added to
> the hardware Free Pool Allocator (FPA) pool. However, in cvm_oct_probe()
> (err_tx:) and in cvm_oct_remove(),cvm_oct_mem_empty_fpa() is called with
> 128 instead of 1024 as the expected buffer count.
Hi Priyanshu,
A couple of quick comments:
Was this found via static analysis or code inspection? Since this changes
runtime buffer accounting rather than just coding style, it would be helpful
to mention how it was verified (e.g., compile-tested only) in the commit
message. Also, there is a missing space after the comma in
cvm_oct_remove(),cvm_oct_mem_empty_fpa().
Best regards,
Alejandro Lucero
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-11-13 10:16 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-11-13 9:18 [PATCH] staging: octeon: fix asymmetric output buffer pool accounting Priyanshu Singh
2026-11-13 10:15 ` Oscar Alejandro Sánchez Lucero
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®