|
@@ -285,6 +285,19 @@ static int aq_ethtool_set_coalesce(struct net_device *ndev,
|
|
return aq_nic_update_interrupt_moderation_settings(aq_nic);
|
|
return aq_nic_update_interrupt_moderation_settings(aq_nic);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+static int aq_ethtool_nway_reset(struct net_device *ndev)
|
|
|
|
+{
|
|
|
|
+ struct aq_nic_s *aq_nic = netdev_priv(ndev);
|
|
|
|
+
|
|
|
|
+ if (unlikely(!aq_nic->aq_fw_ops->renegotiate))
|
|
|
|
+ return -EOPNOTSUPP;
|
|
|
|
+
|
|
|
|
+ if (netif_running(ndev))
|
|
|
|
+ return aq_nic->aq_fw_ops->renegotiate(aq_nic->aq_hw);
|
|
|
|
+
|
|
|
|
+ return 0;
|
|
|
|
+}
|
|
|
|
+
|
|
static void aq_ethtool_get_pauseparam(struct net_device *ndev,
|
|
static void aq_ethtool_get_pauseparam(struct net_device *ndev,
|
|
struct ethtool_pauseparam *pause)
|
|
struct ethtool_pauseparam *pause)
|
|
{
|
|
{
|
|
@@ -390,6 +403,7 @@ const struct ethtool_ops aq_ethtool_ops = {
|
|
.get_drvinfo = aq_ethtool_get_drvinfo,
|
|
.get_drvinfo = aq_ethtool_get_drvinfo,
|
|
.get_strings = aq_ethtool_get_strings,
|
|
.get_strings = aq_ethtool_get_strings,
|
|
.get_rxfh_indir_size = aq_ethtool_get_rss_indir_size,
|
|
.get_rxfh_indir_size = aq_ethtool_get_rss_indir_size,
|
|
|
|
+ .nway_reset = aq_ethtool_nway_reset,
|
|
.get_ringparam = aq_get_ringparam,
|
|
.get_ringparam = aq_get_ringparam,
|
|
.set_ringparam = aq_set_ringparam,
|
|
.set_ringparam = aq_set_ringparam,
|
|
.get_pauseparam = aq_ethtool_get_pauseparam,
|
|
.get_pauseparam = aq_ethtool_get_pauseparam,
|