ice: Cleanup ice_update_link_info
authorBruce Allan <bruce.w.allan@intel.com>
Tue, 16 Apr 2019 17:34:54 +0000 (10:34 -0700)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Thu, 30 May 2019 06:07:22 +0000 (23:07 -0700)
Do not allocate memory for the Get PHY Abilities command data buffer when
it is not necessary, change one local variable to another to reduce the
number of de-references, reduce the scope of some local variables, and
reorder the code and change exit points to get rid of an unnecessary goto
label.

Signed-off-by: Bruce Allan <bruce.w.allan@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

index c24dc996985863995a3ac5b6e77fbe03f8e8a24d..6988eb8695f13c7a8bff4042e3e8665988db27ec 100644 (file)
@@ -1998,36 +1998,37 @@ ice_aq_set_phy_cfg(struct ice_hw *hw, u8 lport,
  */
 enum ice_status ice_update_link_info(struct ice_port_info *pi)
 {
-       struct ice_aqc_get_phy_caps_data *pcaps;
-       struct ice_phy_info *phy_info;
+       struct ice_link_status *li;
        enum ice_status status;
-       struct ice_hw *hw;
 
        if (!pi)
                return ICE_ERR_PARAM;
 
-       hw = pi->hw;
-
-       pcaps = devm_kzalloc(ice_hw_to_dev(hw), sizeof(*pcaps), GFP_KERNEL);
-       if (!pcaps)
-               return ICE_ERR_NO_MEMORY;
+       li = &pi->phy.link_info;
 
-       phy_info = &pi->phy;
        status = ice_aq_get_link_info(pi, true, NULL, NULL);
        if (status)
-               goto out;
+               return status;
+
+       if (li->link_info & ICE_AQ_MEDIA_AVAILABLE) {
+               struct ice_aqc_get_phy_caps_data *pcaps;
+               struct ice_hw *hw;
+
+               hw = pi->hw;
+               pcaps = devm_kzalloc(ice_hw_to_dev(hw), sizeof(*pcaps),
+                                    GFP_KERNEL);
+               if (!pcaps)
+                       return ICE_ERR_NO_MEMORY;
 
-       if (phy_info->link_info.link_info & ICE_AQ_MEDIA_AVAILABLE) {
                status = ice_aq_get_phy_caps(pi, false, ICE_AQC_REPORT_SW_CFG,
                                             pcaps, NULL);
-               if (status)
-                       goto out;
+               if (!status)
+                       memcpy(li->module_type, &pcaps->module_type,
+                              sizeof(li->module_type));
 
-               memcpy(phy_info->link_info.module_type, &pcaps->module_type,
-                      sizeof(phy_info->link_info.module_type));
+               devm_kfree(ice_hw_to_dev(hw), pcaps);
        }
-out:
-       devm_kfree(ice_hw_to_dev(hw), pcaps);
+
        return status;
 }