Commit 60dbede0 authored by Vinicius Costa Gomes's avatar Vinicius Costa Gomes Committed by Jeff Kirsher

igc: Add support for ethtool GET_TS_INFO command

This command allows igc to report what types of timestamping are
supported. ptp4l uses this to detect if the hardware supports
timestamping.
Signed-off-by: default avatarVinicius Costa Gomes <vinicius.gomes@intel.com>
Tested-by: default avatarAaron Brown <aaron.f.brown@intel.com>
Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
parent 2c344ae2
...@@ -1600,6 +1600,39 @@ static int igc_set_channels(struct net_device *netdev, ...@@ -1600,6 +1600,39 @@ static int igc_set_channels(struct net_device *netdev,
return 0; return 0;
} }
static int igc_get_ts_info(struct net_device *dev,
struct ethtool_ts_info *info)
{
struct igc_adapter *adapter = netdev_priv(dev);
if (adapter->ptp_clock)
info->phc_index = ptp_clock_index(adapter->ptp_clock);
else
info->phc_index = -1;
switch (adapter->hw.mac.type) {
case igc_i225:
info->so_timestamping =
SOF_TIMESTAMPING_TX_SOFTWARE |
SOF_TIMESTAMPING_RX_SOFTWARE |
SOF_TIMESTAMPING_SOFTWARE |
SOF_TIMESTAMPING_TX_HARDWARE |
SOF_TIMESTAMPING_RX_HARDWARE |
SOF_TIMESTAMPING_RAW_HARDWARE;
info->tx_types =
BIT(HWTSTAMP_TX_OFF) |
BIT(HWTSTAMP_TX_ON);
info->rx_filters = BIT(HWTSTAMP_FILTER_NONE);
info->rx_filters |= BIT(HWTSTAMP_FILTER_ALL);
return 0;
default:
return -EOPNOTSUPP;
}
}
static u32 igc_get_priv_flags(struct net_device *netdev) static u32 igc_get_priv_flags(struct net_device *netdev)
{ {
struct igc_adapter *adapter = netdev_priv(netdev); struct igc_adapter *adapter = netdev_priv(netdev);
...@@ -1847,6 +1880,7 @@ static const struct ethtool_ops igc_ethtool_ops = { ...@@ -1847,6 +1880,7 @@ static const struct ethtool_ops igc_ethtool_ops = {
.get_rxfh_indir_size = igc_get_rxfh_indir_size, .get_rxfh_indir_size = igc_get_rxfh_indir_size,
.get_rxfh = igc_get_rxfh, .get_rxfh = igc_get_rxfh,
.set_rxfh = igc_set_rxfh, .set_rxfh = igc_set_rxfh,
.get_ts_info = igc_get_ts_info,
.get_channels = igc_get_channels, .get_channels = igc_get_channels,
.set_channels = igc_set_channels, .set_channels = igc_set_channels,
.get_priv_flags = igc_get_priv_flags, .get_priv_flags = igc_get_priv_flags,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment