Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 38ea3686 authored by Michael Chan's avatar Michael Chan Committed by David S. Miller
Browse files

[BNX2]: Disable parallel detect on an HP blade.



Because of some board issues, we need to disable parallel detect on
an HP blade.  Without this patch, the link state can become stuck
when it goes into parallel detect mode.

Signed-off-by: default avatarMichael Chan <mchan@broadcom.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent a2724e25
Loading
Loading
Loading
Loading
+13 −1
Original line number Original line Diff line number Diff line
@@ -5362,11 +5362,15 @@ bnx2_test_intr(struct bnx2 *bp)
	return -ENODEV;
	return -ENODEV;
}
}


/* Determining link for parallel detection. */
static int
static int
bnx2_5706_serdes_has_link(struct bnx2 *bp)
bnx2_5706_serdes_has_link(struct bnx2 *bp)
{
{
	u32 mode_ctl, an_dbg, exp;
	u32 mode_ctl, an_dbg, exp;


	if (bp->phy_flags & BNX2_PHY_FLAG_NO_PARALLEL)
		return 0;

	bnx2_write_phy(bp, MII_BNX2_MISC_SHADOW, MISC_SHDW_MODE_CTL);
	bnx2_write_phy(bp, MII_BNX2_MISC_SHADOW, MISC_SHDW_MODE_CTL);
	bnx2_read_phy(bp, MII_BNX2_MISC_SHADOW, &mode_ctl);
	bnx2_read_phy(bp, MII_BNX2_MISC_SHADOW, &mode_ctl);


@@ -7328,7 +7332,15 @@ bnx2_init_board(struct pci_dev *pdev, struct net_device *dev)
			bp->flags |= BNX2_FLAG_NO_WOL;
			bp->flags |= BNX2_FLAG_NO_WOL;
			bp->wol = 0;
			bp->wol = 0;
		}
		}
		if (CHIP_NUM(bp) != CHIP_NUM_5706) {
		if (CHIP_NUM(bp) == CHIP_NUM_5706) {
			/* Don't do parallel detect on this board because of
			 * some board problems.  The link will not go down
			 * if we do parallel detect.
			 */
			if (pdev->subsystem_vendor == PCI_VENDOR_ID_HP &&
			    pdev->subsystem_device == 0x310c)
				bp->phy_flags |= BNX2_PHY_FLAG_NO_PARALLEL;
		} else {
			bp->phy_addr = 2;
			bp->phy_addr = 2;
			if (reg & BNX2_SHARED_HW_CFG_PHY_2_5G)
			if (reg & BNX2_SHARED_HW_CFG_PHY_2_5G)
				bp->phy_flags |= BNX2_PHY_FLAG_2_5G_CAPABLE;
				bp->phy_flags |= BNX2_PHY_FLAG_2_5G_CAPABLE;
+1 −0
Original line number Original line Diff line number Diff line
@@ -6673,6 +6673,7 @@ struct bnx2 {
#define BNX2_PHY_FLAG_DIS_EARLY_DAC		0x00000400
#define BNX2_PHY_FLAG_DIS_EARLY_DAC		0x00000400
#define BNX2_PHY_FLAG_REMOTE_PHY_CAP		0x00000800
#define BNX2_PHY_FLAG_REMOTE_PHY_CAP		0x00000800
#define BNX2_PHY_FLAG_FORCED_DOWN		0x00001000
#define BNX2_PHY_FLAG_FORCED_DOWN		0x00001000
#define BNX2_PHY_FLAG_NO_PARALLEL		0x00002000


	u32			mii_bmcr;
	u32			mii_bmcr;
	u32			mii_bmsr;
	u32			mii_bmsr;