ixgbe: fix ixgbe_fc_autoneg_fiber bug
authorDon Skidmore <donald.c.skidmore@intel.com>
Thu, 28 Jul 2011 01:00:58 +0000 (01:00 +0000)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Mon, 29 Aug 2011 08:31:46 +0000 (01:31 -0700)
A logic error in ixgbe_fc_autoneg_fiber() that treated a masked u32 as a
boolean would make it so we would never fall hit a error check case.  So
now I force the u32 to a boolean value with '!!'.

Signed-off-by: Don Skidmore <donald.c.skidmore@intel.com>
Tested-by: Phil Schmitt <phillip.j.schmitt@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/ixgbe/ixgbe_common.c

index fc1375f26fe56a5991f434ab70a1069fb01d01a8..90a04e2471dfea367c396fb5e900981ba1bbb8a4 100644 (file)
@@ -2121,8 +2121,8 @@ static s32 ixgbe_fc_autoneg_fiber(struct ixgbe_hw *hw)
         */
 
        linkstat = IXGBE_READ_REG(hw, IXGBE_PCS1GLSTA);
-       if (((linkstat & IXGBE_PCS1GLSTA_AN_COMPLETE) == 0) ||
-           ((linkstat & IXGBE_PCS1GLSTA_AN_TIMED_OUT) == 1)) {
+       if ((!!(linkstat & IXGBE_PCS1GLSTA_AN_COMPLETE) == 0) ||
+           (!!(linkstat & IXGBE_PCS1GLSTA_AN_TIMED_OUT) == 1)) {
                ret_val = IXGBE_ERR_FC_NOT_NEGOTIATED;
                goto out;
        }