r8169: add support for pause ethtool ops
This adds support for the [g|s]et_pauseparam ethtool ops. It considers that the chip doesn't support pause frame use in jumbo mode. Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
1141bfef9c
commit
216f78ea8c
@ -1910,6 +1910,32 @@ static void rtl8169_get_ringparam(struct net_device *dev,
|
||||
data->tx_pending = NUM_TX_DESC;
|
||||
}
|
||||
|
||||
static void rtl8169_get_pauseparam(struct net_device *dev,
|
||||
struct ethtool_pauseparam *data)
|
||||
{
|
||||
struct rtl8169_private *tp = netdev_priv(dev);
|
||||
bool tx_pause, rx_pause;
|
||||
|
||||
phy_get_pause(tp->phydev, &tx_pause, &rx_pause);
|
||||
|
||||
data->autoneg = tp->phydev->autoneg;
|
||||
data->tx_pause = tx_pause ? 1 : 0;
|
||||
data->rx_pause = rx_pause ? 1 : 0;
|
||||
}
|
||||
|
||||
static int rtl8169_set_pauseparam(struct net_device *dev,
|
||||
struct ethtool_pauseparam *data)
|
||||
{
|
||||
struct rtl8169_private *tp = netdev_priv(dev);
|
||||
|
||||
if (dev->mtu > ETH_DATA_LEN)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
phy_set_asym_pause(tp->phydev, data->rx_pause, data->tx_pause);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct ethtool_ops rtl8169_ethtool_ops = {
|
||||
.supported_coalesce_params = ETHTOOL_COALESCE_USECS |
|
||||
ETHTOOL_COALESCE_MAX_FRAMES,
|
||||
@ -1931,6 +1957,8 @@ static const struct ethtool_ops rtl8169_ethtool_ops = {
|
||||
.get_link_ksettings = phy_ethtool_get_link_ksettings,
|
||||
.set_link_ksettings = phy_ethtool_set_link_ksettings,
|
||||
.get_ringparam = rtl8169_get_ringparam,
|
||||
.get_pauseparam = rtl8169_get_pauseparam,
|
||||
.set_pauseparam = rtl8169_set_pauseparam,
|
||||
};
|
||||
|
||||
static void rtl_enable_eee(struct rtl8169_private *tp)
|
||||
|
Loading…
Reference in New Issue
Block a user