Skip to contentSkip to conversation

bnx2x: fix a power state test

PATCH In review Dan Carpenter 3 participants 3 messages May 31, 2013 – Jun 1, 2013

Subsystems (4)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 bnx2x: fix a power state test

PCI_D0 is zero so the original test is never true.

---
I don't have the hardware to test this, and I'm not positive on it. Buyer beware!

drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c +1 -1
index 263950c..a9a1609 100644
@@ -1391,7 +1391,7 @@ static bool bnx2x_is_nvm_accessible(struct bnx2x *bp)
 		rc = pci_read_config_word(bp->pdev,
 					  bp->pm_cap + PCI_PM_CTRL, &pm);
 
-	if ((rc && !netif_running(dev)) || (!rc && ((pm & PCI_D0) != PCI_D0)))
+	if ((rc && !netif_running(dev)) || (!rc && pm != PCI_D0))
 		return false;
 
 	return true;
maintainer
#1 lore raw

From: Dan Carpenter <[email protected]>
Date: Fri, 31 May 2013 13:07:19 +0300

Quoted 6 lines

PCI_D0 is zero so the original test is never true.

---
I don't have the hardware to test this, and I'm not positive on it. Buyer beware!

Someone please review/test this patch, thanks.

#2 lore raw
In reply to Dan Carpenter
Quoted 14 lines

PCI_D0 is zero so the original test is never true.

---
I don't have the hardware to test this, and I'm not positive on it. Buyer beware!

drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c +0 -0
index 263950c..a9a1609 100644

drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c static bool bnx2x_is_nvm_accessible(struct bnx2x · line 1396

Quoted 7 lines
drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c +1 -1
@@ -1391,7 +1391,7 @@ static bool bnx2x_is_nvm_accessible(struct bnx2x
 *bp)
 		rc = pci_read_config_word(bp->pdev,
 					  bp->pm_cap + PCI_PM_CTRL, &pm);
 
-	if ((rc && !netif_running(dev)) || (!rc && ((pm & PCI_D0) != PCI_D0)))
+	if ((rc && !netif_running(dev)) || (!rc && pm != PCI_D0))
 		return false;

Hi Dan,

Thanks for the catch, but I think your fix might be incomplete; It should probably be
+ if ((rc && !netif_running(dev)) || (!rc && ((pm & PCI_PM_CTRL_STATE_MASK) != PCI_D0)))
Otherwise the condition will fail if other bits are set in the PM control register.

Thanks,
Yuval