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

net: ethernet: Add helper for MACs which support pause



Rather than have the MAC drivers manipulate phydev members, add a
helper function for MACs supporting Pause, but not Asym Pause.

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 af8d9bb2
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -890,7 +890,7 @@ static int bcm_enet_open(struct net_device *dev)
		}

		/* mask with MAC supported features */
		phydev->supported |= SUPPORTED_Pause;
		phy_support_sym_pause(phydev);
		phy_set_max_speed(phydev, SPEED_100);

		if (priv->pause_auto && priv->pause_rx && priv->pause_tx)
+1 −3
Original line number Diff line number Diff line
@@ -1950,14 +1950,12 @@ static int fec_enet_mii_probe(struct net_device *ndev)
		phy_remove_link_mode(phy_dev,
				     ETHTOOL_LINK_MODE_1000baseT_Half_BIT);
#if !defined(CONFIG_M5272)
		phy_dev->supported |= SUPPORTED_Pause;
		phy_support_sym_pause(phy_dev);
#endif
	}
	else
		phy_set_max_speed(phy_dev, 100);

	phy_dev->advertising = phy_dev->supported;

	fep->link = 0;
	fep->full_duplex = 0;

+14 −0
Original line number Diff line number Diff line
@@ -1783,6 +1783,20 @@ void phy_remove_link_mode(struct phy_device *phydev, u32 link_mode)
}
EXPORT_SYMBOL(phy_remove_link_mode);

/**
 * phy_support_sym_pause - Enable support of symmetrical pause
 * @phydev: target phy_device struct
 *
 * Description: Called by the MAC to indicate is supports symmetrical
 * Pause, but not asym pause.
 */
void phy_support_sym_pause(struct phy_device *phydev)
{
	phydev->supported |= SUPPORTED_Pause;
	phydev->advertising = phydev->supported;
}
EXPORT_SYMBOL(phy_support_sym_pause);

/**
 * phy_support_asym_pause - Enable support of asym pause
 * @phydev: target phy_device struct
+1 −0
Original line number Diff line number Diff line
@@ -1050,6 +1050,7 @@ int phy_start_interrupts(struct phy_device *phydev);
void phy_print_status(struct phy_device *phydev);
int phy_set_max_speed(struct phy_device *phydev, u32 max_speed);
void phy_remove_link_mode(struct phy_device *phydev, u32 link_mode);
void phy_support_sym_pause(struct phy_device *phydev);
void phy_support_asym_pause(struct phy_device *phydev);

int phy_register_fixup(const char *bus_id, u32 phy_uid, u32 phy_uid_mask,