]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
ice: Free VSI contexts during for unload
authorVictor Raj <victor.raj@intel.com>
Fri, 26 Oct 2018 17:40:53 +0000 (10:40 -0700)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Tue, 6 Nov 2018 20:46:47 +0000 (12:46 -0800)
In the unload path, all VSIs are freed. Also free the related VSI
contexts to prevent memory leaks.

Signed-off-by: Victor Raj <victor.raj@intel.com>
Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/ice/ice_common.c
drivers/net/ethernet/intel/ice/ice_switch.c
drivers/net/ethernet/intel/ice/ice_switch.h

index 8cd6a2401fd9f2c1a804ba4ee3920e0309c87a4a..554fd707a6d69f45f165a6b77ef23bb027ac6baa 100644 (file)
@@ -811,6 +811,9 @@ void ice_deinit_hw(struct ice_hw *hw)
        /* Attempt to disable FW logging before shutting down control queues */
        ice_cfg_fw_log(hw, false);
        ice_shutdown_all_ctrlq(hw);
+
+       /* Clear VSI contexts if not already cleared */
+       ice_clear_all_vsi_ctx(hw);
 }
 
 /**
index 33403f39f1b3f8680dcf5b63c37956a5df2d0fad..40c9c65589568b34a1eb5ec50d842e41ddd030e3 100644 (file)
@@ -347,6 +347,18 @@ static void ice_clear_vsi_ctx(struct ice_hw *hw, u16 vsi_handle)
        }
 }
 
+/**
+ * ice_clear_all_vsi_ctx - clear all the VSI context entries
+ * @hw: pointer to the hw struct
+ */
+void ice_clear_all_vsi_ctx(struct ice_hw *hw)
+{
+       u16 i;
+
+       for (i = 0; i < ICE_MAX_VSI; i++)
+               ice_clear_vsi_ctx(hw, i);
+}
+
 /**
  * ice_add_vsi - add VSI context to the hardware and VSI handle list
  * @hw: pointer to the hw struct
index b88d96a1ef6935c2564e07e3443378b65f32b7ea..d5ef0bd58bf9789260bbf7575868f16a6123ec81 100644 (file)
@@ -190,6 +190,8 @@ ice_update_vsi(struct ice_hw *hw, u16 vsi_handle, struct ice_vsi_ctx *vsi_ctx,
               struct ice_sq_cd *cd);
 bool ice_is_vsi_valid(struct ice_hw *hw, u16 vsi_handle);
 struct ice_vsi_ctx *ice_get_vsi_ctx(struct ice_hw *hw, u16 vsi_handle);
+void ice_clear_all_vsi_ctx(struct ice_hw *hw);
+/* Switch config */
 enum ice_status ice_get_initial_sw_cfg(struct ice_hw *hw);
 
 /* Switch/bridge related commands */