Commit cb41145e authored by Carolyn Wyborny's avatar Carolyn Wyborny Committed by Jeff Kirsher
Browse files

igb: Support the get_ts_info ethtool method.



Based on original patch from Richard Cochran <richardcochran@gmail.com>

Original patch caused build errors without CONFIG_IGB_1588_CLOCK and
CONFIG_PPS enabled, since the added code was not properly wrapped.

CC: Richard Cochran <richardcochran@gmail.com>
Signed-off-by: default avatarCarolyn Wyborny <carolyn.wyborny@intel.com>
Tested-by: default avatarJeff Pieper <jeffrey.e.pieper@intel.com>
Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
parent d3eef8c8
Loading
Loading
Loading
Loading
+35 −0
Original line number Original line Diff line number Diff line
@@ -2271,6 +2271,38 @@ static void igb_ethtool_complete(struct net_device *netdev)
	pm_runtime_put(&adapter->pdev->dev);
	pm_runtime_put(&adapter->pdev->dev);
}
}


#ifdef CONFIG_IGB_PTP
static int igb_ethtool_get_ts_info(struct net_device *dev,
				   struct ethtool_ts_info *info)
{
	struct igb_adapter *adapter = netdev_priv(dev);

	info->so_timestamping =
		SOF_TIMESTAMPING_TX_HARDWARE |
		SOF_TIMESTAMPING_RX_HARDWARE |
		SOF_TIMESTAMPING_RAW_HARDWARE;

	if (adapter->ptp_clock)
		info->phc_index = ptp_clock_index(adapter->ptp_clock);
	else
		info->phc_index = -1;

	info->tx_types =
		(1 << HWTSTAMP_TX_OFF) |
		(1 << HWTSTAMP_TX_ON);

	info->rx_filters =
		(1 << HWTSTAMP_FILTER_NONE) |
		(1 << HWTSTAMP_FILTER_ALL) |
		(1 << HWTSTAMP_FILTER_SOME) |
		(1 << HWTSTAMP_FILTER_PTP_V1_L4_SYNC) |
		(1 << HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ) |
		(1 << HWTSTAMP_FILTER_PTP_V2_EVENT);

	return 0;
}

#endif
static const struct ethtool_ops igb_ethtool_ops = {
static const struct ethtool_ops igb_ethtool_ops = {
	.get_settings           = igb_get_settings,
	.get_settings           = igb_get_settings,
	.set_settings           = igb_set_settings,
	.set_settings           = igb_set_settings,
@@ -2299,6 +2331,9 @@ static const struct ethtool_ops igb_ethtool_ops = {
	.set_coalesce           = igb_set_coalesce,
	.set_coalesce           = igb_set_coalesce,
	.begin			= igb_ethtool_begin,
	.begin			= igb_ethtool_begin,
	.complete		= igb_ethtool_complete,
	.complete		= igb_ethtool_complete,
#ifdef CONFIG_IGB_PTP
	.get_ts_info		= igb_ethtool_get_ts_info,
#endif
};
};


void igb_set_ethtool_ops(struct net_device *netdev)
void igb_set_ethtool_ops(struct net_device *netdev)