ice: Cleanup ice_update_link_info
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>
This commit is contained in:

committed by
Jeff Kirsher

parent
d31530e83e
commit
092a33d403
@@ -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)
|
enum ice_status ice_update_link_info(struct ice_port_info *pi)
|
||||||
{
|
{
|
||||||
struct ice_aqc_get_phy_caps_data *pcaps;
|
struct ice_link_status *li;
|
||||||
struct ice_phy_info *phy_info;
|
|
||||||
enum ice_status status;
|
enum ice_status status;
|
||||||
struct ice_hw *hw;
|
|
||||||
|
|
||||||
if (!pi)
|
if (!pi)
|
||||||
return ICE_ERR_PARAM;
|
return ICE_ERR_PARAM;
|
||||||
|
|
||||||
hw = pi->hw;
|
li = &pi->phy.link_info;
|
||||||
|
|
||||||
pcaps = devm_kzalloc(ice_hw_to_dev(hw), sizeof(*pcaps), GFP_KERNEL);
|
|
||||||
if (!pcaps)
|
|
||||||
return ICE_ERR_NO_MEMORY;
|
|
||||||
|
|
||||||
phy_info = &pi->phy;
|
|
||||||
status = ice_aq_get_link_info(pi, true, NULL, NULL);
|
status = ice_aq_get_link_info(pi, true, NULL, NULL);
|
||||||
if (status)
|
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,
|
status = ice_aq_get_phy_caps(pi, false, ICE_AQC_REPORT_SW_CFG,
|
||||||
pcaps, NULL);
|
pcaps, NULL);
|
||||||
if (status)
|
if (!status)
|
||||||
goto out;
|
memcpy(li->module_type, &pcaps->module_type,
|
||||||
|
sizeof(li->module_type));
|
||||||
|
|
||||||
memcpy(phy_info->link_info.module_type, &pcaps->module_type,
|
devm_kfree(ice_hw_to_dev(hw), pcaps);
|
||||||
sizeof(phy_info->link_info.module_type));
|
|
||||||
}
|
}
|
||||||
out:
|
|
||||||
devm_kfree(ice_hw_to_dev(hw), pcaps);
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user