From: Brahmajit Das <[email protected]>

[ Upstream commit 99e9c5ffbbee0f258a1da4eadf602b943f8c8300 ]

Variable idx is set in the loop, but is never used resulting in dead
code. Building with GCC 16, which enables
-Werror=unused-but-set-parameter= by default results in build error.
This patch removes the idx parameter, since all the callers of the
fm10k_unbind_hw_stats_q as 0 as idx anyways.

Suggested-by: Vadim Fedorenko <[email protected]>
Signed-off-by: Brahmajit Das <[email protected]>
Reviewed-by: Aleksandr Loktionov <[email protected]>
Signed-off-by: Tony Nguyen <[email protected]>
Signed-off-by: Sasha Levin <[email protected]>
---

LLM Generated explanations, may be completely bogus:

YES – dropping the unused `idx` argument fixes a real build break while
leaving runtime behaviour unchanged.

- `fm10k_unbind_hw_stats_q` now only walks the passed queue array and
  clears the cached indices
  (`drivers/net/ethernet/intel/fm10k/fm10k_common.c:455`), so the dead
  `idx++` expression that triggered GCC 16’s default `-Werror=unused-
  but-set-parameter` is gone; this restores the ability to build the
  driver with upcoming toolchains.
- The header signature is updated accordingly
  (`drivers/net/ethernet/intel/fm10k/fm10k_common.h:43-46`), and the
  only in-tree callers—PF/VF rebind paths—are adjusted to match
  (`drivers/net/ethernet/intel/fm10k/fm10k_pf.c:1392`,
  `drivers/net/ethernet/intel/fm10k/fm10k_vf.c:468`); all of them
  already passed `0`, so no logic changes.
- `fm10k_hw_stats_q` only carries the `rx_stats_idx`/`tx_stats_idx`
  fields that this helper zeros
  (`drivers/net/ethernet/intel/fm10k/fm10k_type.h:419-426`); no other
  state depends on the removed parameter, and no additional callers
  exist (confirmed by tree-wide search).
- The patch is tiny, self-contained, and purely defensive: it keeps
  released stable kernels buildable with newer GCC without touching live
  datapaths, so regression risk is minimal and it meets the stable
  backport guidelines for important build fixes.

 drivers/net/ethernet/intel/fm10k/fm10k_common.c | 5 ++---
 drivers/net/ethernet/intel/fm10k/fm10k_common.h | 2 +-
 drivers/net/ethernet/intel/fm10k/fm10k_pf.c     | 2 +-
 drivers/net/ethernet/intel/fm10k/fm10k_vf.c     | 2 +-
 4 files changed, 5 insertions(+), 6 deletions(-)

diff --git a/drivers/net/ethernet/intel/fm10k/fm10k_common.c 
b/drivers/net/ethernet/intel/fm10k/fm10k_common.c
index f51a63fca513e..1f919a50c7653 100644
--- a/drivers/net/ethernet/intel/fm10k/fm10k_common.c
+++ b/drivers/net/ethernet/intel/fm10k/fm10k_common.c
@@ -447,17 +447,16 @@ void fm10k_update_hw_stats_q(struct fm10k_hw *hw, struct 
fm10k_hw_stats_q *q,
 /**
  *  fm10k_unbind_hw_stats_q - Unbind the queue counters from their queues
  *  @q: pointer to the ring of hardware statistics queue
- *  @idx: index pointing to the start of the ring iteration
  *  @count: number of queues to iterate over
  *
  *  Function invalidates the index values for the queues so any updates that
  *  may have happened are ignored and the base for the queue stats is reset.
  **/
-void fm10k_unbind_hw_stats_q(struct fm10k_hw_stats_q *q, u32 idx, u32 count)
+void fm10k_unbind_hw_stats_q(struct fm10k_hw_stats_q *q, u32 count)
 {
        u32 i;
 
-       for (i = 0; i < count; i++, idx++, q++) {
+       for (i = 0; i < count; i++, q++) {
                q->rx_stats_idx = 0;
                q->tx_stats_idx = 0;
        }
diff --git a/drivers/net/ethernet/intel/fm10k/fm10k_common.h 
b/drivers/net/ethernet/intel/fm10k/fm10k_common.h
index 4c48fb73b3e78..13fca6a91a01b 100644
--- a/drivers/net/ethernet/intel/fm10k/fm10k_common.h
+++ b/drivers/net/ethernet/intel/fm10k/fm10k_common.h
@@ -43,6 +43,6 @@ u32 fm10k_read_hw_stats_32b(struct fm10k_hw *hw, u32 addr,
 void fm10k_update_hw_stats_q(struct fm10k_hw *hw, struct fm10k_hw_stats_q *q,
                             u32 idx, u32 count);
 #define fm10k_unbind_hw_stats_32b(s) ((s)->base_h = 0)
-void fm10k_unbind_hw_stats_q(struct fm10k_hw_stats_q *q, u32 idx, u32 count);
+void fm10k_unbind_hw_stats_q(struct fm10k_hw_stats_q *q, u32 count);
 s32 fm10k_get_host_state_generic(struct fm10k_hw *hw, bool *host_ready);
 #endif /* _FM10K_COMMON_H_ */
diff --git a/drivers/net/ethernet/intel/fm10k/fm10k_pf.c 
b/drivers/net/ethernet/intel/fm10k/fm10k_pf.c
index b9dd7b7198324..3394645a18fe8 100644
--- a/drivers/net/ethernet/intel/fm10k/fm10k_pf.c
+++ b/drivers/net/ethernet/intel/fm10k/fm10k_pf.c
@@ -1389,7 +1389,7 @@ static void fm10k_rebind_hw_stats_pf(struct fm10k_hw *hw,
        fm10k_unbind_hw_stats_32b(&stats->nodesc_drop);
 
        /* Unbind Queue Statistics */
-       fm10k_unbind_hw_stats_q(stats->q, 0, hw->mac.max_queues);
+       fm10k_unbind_hw_stats_q(stats->q, hw->mac.max_queues);
 
        /* Reinitialize bases for all stats */
        fm10k_update_hw_stats_pf(hw, stats);
diff --git a/drivers/net/ethernet/intel/fm10k/fm10k_vf.c 
b/drivers/net/ethernet/intel/fm10k/fm10k_vf.c
index 7fb1961f29210..6861a0bdc14e1 100644
--- a/drivers/net/ethernet/intel/fm10k/fm10k_vf.c
+++ b/drivers/net/ethernet/intel/fm10k/fm10k_vf.c
@@ -465,7 +465,7 @@ static void fm10k_rebind_hw_stats_vf(struct fm10k_hw *hw,
                                     struct fm10k_hw_stats *stats)
 {
        /* Unbind Queue Statistics */
-       fm10k_unbind_hw_stats_q(stats->q, 0, hw->mac.max_queues);
+       fm10k_unbind_hw_stats_q(stats->q, hw->mac.max_queues);
 
        /* Reinitialize bases for all stats */
        fm10k_update_hw_stats_vf(hw, stats);
-- 
2.51.0

Reply via email to