mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2026-09-22 09:34:56 +02:00
ice: fix AQ error code comparison in ice_set_pauseparam()
[ Upstream commit2bf7744bc3] Fix unreachable code: the conditionals in ice_set_pauseparam() used the bitwise-AND operator suggesting aq_failures is a bitmap, but it is actually an enum, making the third condition logically unreachable. Replace the if-else ladder with a switch statement. Also move the aq_failures initialization to the variable declaration and remove the redundant zeroing from ice_set_fc(). Fixes:fcea6f3da5("ice: Add stats and ethtool support") Signed-off-by: Lukasz Czapnik <lukasz.czapnik@intel.com> Signed-off-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com> Reviewed-by: Simon Horman <horms@kernel.org> Tested-by: Rinitha S <sx.rinitha@intel.com> (A Contingent worker at Intel) Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
335c2dd21a
commit
d662269211
@@ -3454,7 +3454,6 @@ ice_set_fc(struct ice_port_info *pi, u8 *aq_failures, bool ena_auto_link_update)
|
||||
if (!pi || !aq_failures)
|
||||
return -EINVAL;
|
||||
|
||||
*aq_failures = 0;
|
||||
hw = pi->hw;
|
||||
|
||||
pcaps = devm_kzalloc(ice_hw_to_dev(hw), sizeof(*pcaps), GFP_KERNEL);
|
||||
|
||||
@@ -3015,7 +3015,7 @@ ice_set_pauseparam(struct net_device *netdev, struct ethtool_pauseparam *pause)
|
||||
struct ice_vsi *vsi = np->vsi;
|
||||
struct ice_hw *hw = &pf->hw;
|
||||
struct ice_port_info *pi;
|
||||
u8 aq_failures;
|
||||
u8 aq_failures = 0;
|
||||
bool link_up;
|
||||
u32 is_an;
|
||||
int err;
|
||||
@@ -3086,18 +3086,22 @@ ice_set_pauseparam(struct net_device *netdev, struct ethtool_pauseparam *pause)
|
||||
/* Set the FC mode and only restart AN if link is up */
|
||||
err = ice_set_fc(pi, &aq_failures, link_up);
|
||||
|
||||
if (aq_failures & ICE_SET_FC_AQ_FAIL_GET) {
|
||||
switch (aq_failures) {
|
||||
case ICE_SET_FC_AQ_FAIL_GET:
|
||||
netdev_info(netdev, "Set fc failed on the get_phy_capabilities call with err %d aq_err %s\n",
|
||||
err, ice_aq_str(hw->adminq.sq_last_status));
|
||||
err = -EAGAIN;
|
||||
} else if (aq_failures & ICE_SET_FC_AQ_FAIL_SET) {
|
||||
break;
|
||||
case ICE_SET_FC_AQ_FAIL_SET:
|
||||
netdev_info(netdev, "Set fc failed on the set_phy_config call with err %d aq_err %s\n",
|
||||
err, ice_aq_str(hw->adminq.sq_last_status));
|
||||
err = -EAGAIN;
|
||||
} else if (aq_failures & ICE_SET_FC_AQ_FAIL_UPDATE) {
|
||||
break;
|
||||
case ICE_SET_FC_AQ_FAIL_UPDATE:
|
||||
netdev_info(netdev, "Set fc failed on the get_link_info call with err %d aq_err %s\n",
|
||||
err, ice_aq_str(hw->adminq.sq_last_status));
|
||||
err = -EAGAIN;
|
||||
break;
|
||||
}
|
||||
|
||||
return err;
|
||||
|
||||
Reference in New Issue
Block a user