Commit 04b7d41d authored by Andrew Lunn's avatar Andrew Lunn Committed by David S. Miller
Browse files

net: ethernet: Fix up drivers masking pause support



PHY drivers don't indicate they support pause. They expect MAC drivers
to enable its support if the MAC has the needed hardware. Thus MAC
drivers should not mask Pause support, but enable it.

Change a few ANDs to ORs.

Signed-off-by: default avatarAndrew Lunn <andrew@lunn.ch>
Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 00eb2243
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -2123,14 +2123,14 @@ static int tg3_phy_init(struct tg3 *tp)
	case PHY_INTERFACE_MODE_RGMII:
		if (!(tp->phy_flags & TG3_PHYFLG_10_100_ONLY)) {
			phy_set_max_speed(phydev, SPEED_1000);
			phydev->supported &= (SUPPORTED_Pause |
			phydev->supported |= (SUPPORTED_Pause |
					      SUPPORTED_Asym_Pause);
			break;
		}
		/* fallthru */
	case PHY_INTERFACE_MODE_MII:
		phy_set_max_speed(phydev, SPEED_100);
		phydev->supported &= (SUPPORTED_Pause |
		phydev->supported |= (SUPPORTED_Pause |
				      SUPPORTED_Asym_Pause);
		break;
	default:
+2 −2
Original line number Diff line number Diff line
@@ -10,8 +10,6 @@

#define HCLGE_PHY_SUPPORTED_FEATURES	(SUPPORTED_Autoneg | \
					 SUPPORTED_TP | \
					 SUPPORTED_Pause | \
					 SUPPORTED_Asym_Pause | \
					 PHY_10BT_FEATURES | \
					 PHY_100BT_FEATURES | \
					 PHY_1000BT_FEATURES)
@@ -213,6 +211,8 @@ int hclge_mac_connect_phy(struct hclge_dev *hdev)
	}

	phydev->supported &= HCLGE_PHY_SUPPORTED_FEATURES;
	phydev->supported |= SUPPORTED_Pause | SUPPORTED_Asym_Pause;

	phydev->advertising = phydev->supported;

	return 0;
+1 −1
Original line number Diff line number Diff line
@@ -360,7 +360,7 @@ static int mtk_phy_connect(struct net_device *dev)
		SUPPORTED_Pause | SUPPORTED_Asym_Pause;

	phy_set_max_speed(dev->phydev, SPEED_1000);
	dev->phydev->supported &= SUPPORTED_Pause | SUPPORTED_Asym_Pause;
	dev->phydev->supported |= SUPPORTED_Pause | SUPPORTED_Asym_Pause;
	dev->phydev->advertising = dev->phydev->supported |
				    ADVERTISED_Autoneg;
	phy_start_aneg(dev->phydev);
+1 −1
Original line number Diff line number Diff line
@@ -1051,7 +1051,7 @@ static int smsc911x_mii_probe(struct net_device *dev)
	phy_set_max_speed(phydev, SPEED_100);

	/* mask with MAC supported features */
	phydev->supported &= (SUPPORTED_Pause | SUPPORTED_Asym_Pause);
	phydev->supported |= (SUPPORTED_Pause | SUPPORTED_Asym_Pause);
	phydev->advertising = phydev->supported;

	pdata->last_duplex = -1;
+1 −1
Original line number Diff line number Diff line
@@ -1138,7 +1138,7 @@ static int smsc9420_mii_probe(struct net_device *dev)
	phy_set_max_speed(phydev, SPEED_100);

	/* mask with MAC supported features */
	phydev->supported &= (SUPPORTED_Pause | SUPPORTED_Asym_Pause);
	phydev->supported |= (SUPPORTED_Pause | SUPPORTED_Asym_Pause);
	phydev->advertising = phydev->supported;

	phy_attached_info(phydev);