@@ -10576,24 +10576,36 @@ static int tg3_set_ringparam(struct net_device *dev, struct ethtool_ringparam *e
return err;
}
-static void tg3_get_pauseparam(struct net_device *dev, struct ethtool_pauseparam *epause)
+static void tg3_get_pauseparamext(struct net_device *dev,
+ struct ethtool_pauseparamext *epause)
{
struct tg3 *tp = netdev_priv(dev);
- epause->autoneg = !!tg3_flag(tp, PAUSE_AUTONEG);
+ epause->cfg.autoneg = !!tg3_flag(tp, PAUSE_AUTONEG);
+
+ if (tp->link_config.flowctrl & FLOW_CTRL_RX)
+ epause->cfg.rx_pause = 1;
+ else
+ epause->cfg.rx_pause = 0;
+
+ if (tp->link_config.flowctrl & FLOW_CTRL_TX)
+ epause->cfg.tx_pause = 1;
+ else
+ epause->cfg.tx_pause = 0;
if (tp->link_config.active_flowctrl & FLOW_CTRL_RX)
- epause->rx_pause = 1;
+ epause->rx_pause_status = 1;
else
- epause->rx_pause = 0;
+ epause->rx_pause_status = 0;
if (tp->link_config.active_flowctrl & FLOW_CTRL_TX)
- epause->tx_pause = 1;
+ epause->tx_pause_status = 1;
else
- epause->tx_pause = 0;
+ epause->tx_pause_status = 0;
}
-static int tg3_set_pauseparam(struct net_device *dev, struct ethtool_pauseparam *epause)
+static int tg3_set_pauseparam(struct net_device *dev,
+ struct ethtool_pauseparam *epause)
{
struct tg3 *tp = netdev_priv(dev);
int err = 0;
@@ -11926,7 +11938,7 @@ static const struct ethtool_ops tg3_ethtool_ops = {
.set_eeprom = tg3_set_eeprom,
.get_ringparam = tg3_get_ringparam,
.set_ringparam = tg3_set_ringparam,
- .get_pauseparam = tg3_get_pauseparam,
+ .get_pauseparamext = tg3_get_pauseparamext,
.set_pauseparam = tg3_set_pauseparam,
.self_test = tg3_self_test,
.get_strings = tg3_get_strings,
This patch converts the tg3 driver to the get_pauseparamext ethtool command. Signed-off-by: Matt Carlson <mcarlson@broadcom.com> --- drivers/net/ethernet/broadcom/tg3.c | 28 ++++++++++++++++++++-------- 1 files changed, 20 insertions(+), 8 deletions(-)