]> git.droids-corp.org - dpdk.git/commitdiff
net/ice/base: refactor post DDP download VLAN mode config
authorQi Zhang <qi.z.zhang@intel.com>
Thu, 29 Apr 2021 00:41:39 +0000 (08:41 +0800)
committerQi Zhang <qi.z.zhang@intel.com>
Fri, 30 Apr 2021 13:26:25 +0000 (15:26 +0200)
Currently it's not clear that only the first PF downloads the package
and configures the VLAN mode. When this is happening all other PFs are
blocked on the global configuration lock. Once the package is
successfully downloaded and the global configuration lock has been
released then all PFs resume initialization. This includes some post
package download VLAN mode configuration. To make this more obvious add
the new function ice_post_pkg_dwnld_vlan_mode_cfg() so any/all post
download VLAN mode configuration code can be put in here.

This also makes it more clear that all PFs will call this new function.

Signed-off-by: Brett Creeley <brett.creeley@intel.com>
Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Qiming Yang <qiming.yang@intel.com>
drivers/net/ice/base/ice_flex_pipe.c
drivers/net/ice/base/ice_vlan_mode.c
drivers/net/ice/base/ice_vlan_mode.h

index b489c8ddb2129cbb5f3050b721570d773577d302..b3cea731f3e9e3233268b52e34d266dc9c0e9a6a 100644 (file)
@@ -1242,10 +1242,7 @@ ice_download_pkg(struct ice_hw *hw, struct ice_seg *ice_seg)
        status = ice_dwnld_cfg_bufs(hw, ice_buf_tbl->buf_array,
                                    LE32_TO_CPU(ice_buf_tbl->buf_count));
 
-       ice_cache_vlan_mode(hw);
-
-       if (ice_is_dvm_ena(hw))
-               ice_change_proto_id_to_dvm();
+       ice_post_pkg_dwnld_vlan_mode_cfg(hw);
 
        return status;
 }
index ce150009c2323eb18753657002bd010ffd0b798b..0a035ad4ab5051b935fc9e977b5dd0a75c79ffe4 100644 (file)
@@ -124,7 +124,7 @@ bool ice_is_dvm_ena(struct ice_hw *hw)
  * configuration lock has been released because all ports on a device need to
  * cache the VLAN mode.
  */
-void ice_cache_vlan_mode(struct ice_hw *hw)
+static void ice_cache_vlan_mode(struct ice_hw *hw)
 {
        hw->dvm_ena = ice_aq_is_dvm_ena(hw) ? true : false;
 }
@@ -374,3 +374,24 @@ enum ice_status ice_set_vlan_mode(struct ice_hw *hw)
 
        return ice_set_svm(hw);
 }
+
+/**
+ * ice_post_pkg_dwnld_vlan_mode_cfg - configure VLAN mode after DDP download
+ * @hw: pointer to the HW structure
+ *
+ * This function is meant to configure any VLAN mode specific functionality
+ * after the global configuration lock has been released and the DDP has been
+ * downloaded.
+ *
+ * Since only one PF downloads the DDP and configures the VLAN mode there needs
+ * to be a way to configure the other PFs after the DDP has been downloaded and
+ * the global configuration lock has been released. All such code should go in
+ * this function.
+ */
+void ice_post_pkg_dwnld_vlan_mode_cfg(struct ice_hw *hw)
+{
+       ice_cache_vlan_mode(hw);
+
+       if (ice_is_dvm_ena(hw))
+               ice_change_proto_id_to_dvm();
+}
index e9f13e7814b2de668f2f9e80629d67928956aeee..0e41b840003b63fd04c17bf28f4125067a1d5980 100644 (file)
@@ -10,7 +10,7 @@
 struct ice_hw;
 
 bool ice_is_dvm_ena(struct ice_hw *hw);
-void ice_cache_vlan_mode(struct ice_hw *hw);
 enum ice_status ice_set_vlan_mode(struct ice_hw *hw);
+void ice_post_pkg_dwnld_vlan_mode_cfg(struct ice_hw *hw);
 
 #endif /* _ICE_VLAN_MODE_H */