* [iwl-next v2] ice: refactor the Tx scheduler feature
@ 2025-03-07 13:25 Martyna Szapar-Mudlaw
2025-03-16 13:15 ` Simon Horman
0 siblings, 1 reply; 2+ messages in thread
From: Martyna Szapar-Mudlaw @ 2025-03-07 13:25 UTC (permalink / raw)
To: intel-wired-lan
Cc: netdev, Mateusz Polchlopek, Marcin Szycik, Michal Swiatkowski,
Jedrzej Jagielski, Przemek Kitszel, Aleksandr Loktionov,
Martyna Szapar-Mudlaw
From: Mateusz Polchlopek <mateusz.polchlopek@intel.com>
Simplify the code by eliminating an unnecessary wrapper function.
Previously, ice_devlink_tx_sched_layers_get() acted as a thin wrapper
around ice_get_tx_topo_user_sel(), adding no real value but increasing
code complexity. Since both functions were only used once, the wrapper
was redundant and contributed approximately 20 lines of unnecessary
code. Remove ice_get_tx_topo_user_sel() and moves its instructions
directly into ice_devlink_tx_sched_layers_get(), improving readability
and reducing function jumps, without altering functionality.
Also remove unnecessary comment and make usage of str_enabled_disabled() in
ice_init_tx_topology().
Suggested-by: Marcin Szycik <marcin.szycik@linux.intel.com>
Reviewed-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
Reviewed-by: Jedrzej Jagielski <jedrzej.jagielski@intel.com>
Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
Signed-off-by: Mateusz Polchlopek <mateusz.polchlopek@intel.com>
Signed-off-by: Martyna Szapar-Mudlaw <martyna.szapar-mudlaw@linux.intel.com>
---
v1->v2:
Expanded the commit message with the motivation for the changes, no code modifications.
---
.../net/ethernet/intel/ice/devlink/devlink.c | 56 +++++++------------
drivers/net/ethernet/intel/ice/ice_ddp.c | 2 -
drivers/net/ethernet/intel/ice/ice_main.c | 8 +--
3 files changed, 23 insertions(+), 43 deletions(-)
diff --git a/drivers/net/ethernet/intel/ice/devlink/devlink.c b/drivers/net/ethernet/intel/ice/devlink/devlink.c
index fcb199efbea5..2355e21d115c 100644
--- a/drivers/net/ethernet/intel/ice/devlink/devlink.c
+++ b/drivers/net/ethernet/intel/ice/devlink/devlink.c
@@ -529,41 +529,6 @@ ice_devlink_reload_empr_finish(struct ice_pf *pf,
return 0;
}
-/**
- * ice_get_tx_topo_user_sel - Read user's choice from flash
- * @pf: pointer to pf structure
- * @layers: value read from flash will be saved here
- *
- * Reads user's preference for Tx Scheduler Topology Tree from PFA TLV.
- *
- * Return: zero when read was successful, negative values otherwise.
- */
-static int ice_get_tx_topo_user_sel(struct ice_pf *pf, uint8_t *layers)
-{
- struct ice_aqc_nvm_tx_topo_user_sel usr_sel = {};
- struct ice_hw *hw = &pf->hw;
- int err;
-
- err = ice_acquire_nvm(hw, ICE_RES_READ);
- if (err)
- return err;
-
- err = ice_aq_read_nvm(hw, ICE_AQC_NVM_TX_TOPO_MOD_ID, 0,
- sizeof(usr_sel), &usr_sel, true, true, NULL);
- if (err)
- goto exit_release_res;
-
- if (usr_sel.data & ICE_AQC_NVM_TX_TOPO_USER_SEL)
- *layers = ICE_SCHED_5_LAYERS;
- else
- *layers = ICE_SCHED_9_LAYERS;
-
-exit_release_res:
- ice_release_nvm(hw);
-
- return err;
-}
-
/**
* ice_update_tx_topo_user_sel - Save user's preference in flash
* @pf: pointer to pf structure
@@ -610,19 +575,36 @@ static int ice_update_tx_topo_user_sel(struct ice_pf *pf, int layers)
* @id: the parameter ID to set
* @ctx: context to store the parameter value
*
+ * Reads user's preference for Tx Scheduler Topology Tree from PFA TLV.
+ *
* Return: zero on success and negative value on failure.
*/
static int ice_devlink_tx_sched_layers_get(struct devlink *devlink, u32 id,
struct devlink_param_gset_ctx *ctx)
{
+ struct ice_aqc_nvm_tx_topo_user_sel usr_sel = {};
struct ice_pf *pf = devlink_priv(devlink);
+ struct ice_hw *hw = &pf->hw;
int err;
- err = ice_get_tx_topo_user_sel(pf, &ctx->val.vu8);
+ err = ice_acquire_nvm(hw, ICE_RES_READ);
if (err)
return err;
- return 0;
+ err = ice_aq_read_nvm(hw, ICE_AQC_NVM_TX_TOPO_MOD_ID, 0,
+ sizeof(usr_sel), &usr_sel, true, true, NULL);
+ if (err)
+ goto exit_release_res;
+
+ if (usr_sel.data & ICE_AQC_NVM_TX_TOPO_USER_SEL)
+ ctx->val.vu8 = ICE_SCHED_5_LAYERS;
+ else
+ ctx->val.vu8 = ICE_SCHED_9_LAYERS;
+
+exit_release_res:
+ ice_release_nvm(hw);
+
+ return err;
}
/**
diff --git a/drivers/net/ethernet/intel/ice/ice_ddp.c b/drivers/net/ethernet/intel/ice/ice_ddp.c
index 69d5b1a28491..a2f738eaf02e 100644
--- a/drivers/net/ethernet/intel/ice/ice_ddp.c
+++ b/drivers/net/ethernet/intel/ice/ice_ddp.c
@@ -2324,8 +2324,6 @@ enum ice_ddp_state ice_copy_and_init_pkg(struct ice_hw *hw, const u8 *buf,
* @flags: pointer to descriptor flags
* @set: 0-get, 1-set topology
*
- * The function will get or set Tx topology
- *
* Return: zero when set was successful, negative values otherwise.
*/
static int
diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c
index a03e1819e6d5..a55ec9be7b1d 100644
--- a/drivers/net/ethernet/intel/ice/ice_main.c
+++ b/drivers/net/ethernet/intel/ice/ice_main.c
@@ -4550,10 +4550,10 @@ ice_init_tx_topology(struct ice_hw *hw, const struct firmware *firmware)
dev = ice_pf_to_dev(pf);
err = ice_cfg_tx_topo(hw, firmware->data, firmware->size);
if (!err) {
- if (hw->num_tx_sched_layers > num_tx_sched_layers)
- dev_info(dev, "Tx scheduling layers switching feature disabled\n");
- else
- dev_info(dev, "Tx scheduling layers switching feature enabled\n");
+ dev_info(dev, "Tx scheduling layers switching feature %s\n",
+ str_enabled_disabled(hw->num_tx_sched_layers <=
+ num_tx_sched_layers));
+
/* if there was a change in topology ice_cfg_tx_topo triggered
* a CORER and we need to re-init hw
*/
--
2.47.0
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [iwl-next v2] ice: refactor the Tx scheduler feature
2025-03-07 13:25 [iwl-next v2] ice: refactor the Tx scheduler feature Martyna Szapar-Mudlaw
@ 2025-03-16 13:15 ` Simon Horman
0 siblings, 0 replies; 2+ messages in thread
From: Simon Horman @ 2025-03-16 13:15 UTC (permalink / raw)
To: Martyna Szapar-Mudlaw
Cc: intel-wired-lan, netdev, Mateusz Polchlopek, Marcin Szycik,
Michal Swiatkowski, Jedrzej Jagielski, Przemek Kitszel,
Aleksandr Loktionov
On Fri, Mar 07, 2025 at 02:25:56PM +0100, Martyna Szapar-Mudlaw wrote:
> From: Mateusz Polchlopek <mateusz.polchlopek@intel.com>
>
> Simplify the code by eliminating an unnecessary wrapper function.
> Previously, ice_devlink_tx_sched_layers_get() acted as a thin wrapper
> around ice_get_tx_topo_user_sel(), adding no real value but increasing
> code complexity. Since both functions were only used once, the wrapper
> was redundant and contributed approximately 20 lines of unnecessary
> code. Remove ice_get_tx_topo_user_sel() and moves its instructions
> directly into ice_devlink_tx_sched_layers_get(), improving readability
> and reducing function jumps, without altering functionality.
Thanks, this explanation looks good to me.
>
> Also remove unnecessary comment and make usage of str_enabled_disabled() in
> ice_init_tx_topology().
Sorry for not noticing this in my review of v1,
but I would lean towards these changes being separate patches.
That not withstanding, this looks good to me.
Reviewed-by: Simon Horman <horms@kernel.org>
> Suggested-by: Marcin Szycik <marcin.szycik@linux.intel.com>
> Reviewed-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
> Reviewed-by: Jedrzej Jagielski <jedrzej.jagielski@intel.com>
> Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
> Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
> Signed-off-by: Mateusz Polchlopek <mateusz.polchlopek@intel.com>
> Signed-off-by: Martyna Szapar-Mudlaw <martyna.szapar-mudlaw@linux.intel.com>
...
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2025-03-16 13:15 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-03-07 13:25 [iwl-next v2] ice: refactor the Tx scheduler feature Martyna Szapar-Mudlaw
2025-03-16 13:15 ` Simon Horman
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).