[PATCH v4 049/103] net/ice/base: allow skipping PF clear
Anatoly Burakov
anatoly.burakov at intel.com
Wed Jun 26 13:41:37 CEST 2024
From: Stefan Wegrzyn <stefan.wegrzyn at intel.com>
As per updated data sheet, add 'skip_clear_pf' field to ice_hw structure, which
can be used to skip call to ice_clear_pf_cfg() in ice_init_hw(). Also, make
'fw_vsi_num' field of ice_hw structure visible to every component using shared
code.
Signed-off-by: Stefan Wegrzyn <stefan.wegrzyn at intel.com>
Signed-off-by: Ian Stokes <ian.stokes at intel.com>
---
drivers/net/ice/base/ice_common.c | 10 +++++++---
drivers/net/ice/base/ice_switch.c | 4 ++++
drivers/net/ice/base/ice_type.h | 3 +++
3 files changed, 14 insertions(+), 3 deletions(-)
diff --git a/drivers/net/ice/base/ice_common.c b/drivers/net/ice/base/ice_common.c
index bb845700dd..950163510e 100644
--- a/drivers/net/ice/base/ice_common.c
+++ b/drivers/net/ice/base/ice_common.c
@@ -1025,6 +1025,8 @@ int ice_init_hw(struct ice_hw *hw)
ice_get_itr_intrl_gran(hw);
+ hw->fw_vsi_num = ICE_DFLT_VSI_INVAL;
+
status = ice_create_all_ctrlq(hw);
if (status)
goto err_unroll_cqinit;
@@ -1036,9 +1038,11 @@ int ice_init_hw(struct ice_hw *hw)
if (ice_get_fw_mode(hw) == ICE_FW_MODE_ROLLBACK)
ice_print_rollback_msg(hw);
- status = ice_clear_pf_cfg(hw);
- if (status)
- goto err_unroll_cqinit;
+ if (!hw->skip_clear_pf) {
+ status = ice_clear_pf_cfg(hw);
+ if (status)
+ goto err_unroll_cqinit;
+ }
/* Set bit to enable Flow Director filters */
wr32(hw, PFQF_FD_ENA, PFQF_FD_ENA_FD_ENA_M);
diff --git a/drivers/net/ice/base/ice_switch.c b/drivers/net/ice/base/ice_switch.c
index 54a42d2777..10121d848f 100644
--- a/drivers/net/ice/base/ice_switch.c
+++ b/drivers/net/ice/base/ice_switch.c
@@ -3883,6 +3883,10 @@ int ice_get_initial_sw_cfg(struct ice_hw *hw)
switch (res_type) {
case ICE_AQC_GET_SW_CONF_RESP_VSI:
+ if (hw->fw_vsi_num != ICE_DFLT_VSI_INVAL)
+ ice_debug(hw, ICE_DBG_SW, "fw_vsi_num %d -> %d\n",
+ hw->fw_vsi_num, vsi_port_num);
+ hw->fw_vsi_num = vsi_port_num;
if (hw->dcf_enabled && !is_vf)
hw->pf_id = pf_vf_num;
break;
diff --git a/drivers/net/ice/base/ice_type.h b/drivers/net/ice/base/ice_type.h
index 638e812c0f..46fb5bd8c8 100644
--- a/drivers/net/ice/base/ice_type.h
+++ b/drivers/net/ice/base/ice_type.h
@@ -1258,6 +1258,7 @@ struct ice_hw {
enum ice_mac_type mac_type;
u16 fd_ctr_base; /* FD counter base index */
+ u16 fw_vsi_num;
/* pci info */
u16 device_id;
u16 vendor_id;
@@ -1404,6 +1405,8 @@ struct ice_hw {
ice_declare_bitmap(hw_ptype, ICE_FLOW_PTYPE_MAX);
u8 dvm_ena;
u16 io_expander_handle;
+
+ bool skip_clear_pf;
};
/* Statistics collected by each port, VSI, VEB, and S-channel */
--
2.43.0
More information about the dev
mailing list