ixgbe: add support for get_ts_info
This patch adds support for the ethtool get_ts_info operation, which enables access of available timestamp/timesync support for that device. It can query which ptp clock device is associated with the particular port. Signed-off-by: Jacob Keller <jacob.e.keller@intel.com> Tested-by: Stephen Ko <stephen.s.ko@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
parent
db76ad470e
commit
e3aac889c7
@ -2696,6 +2696,46 @@ static int ixgbe_set_rxnfc(struct net_device *dev, struct ethtool_rxnfc *cmd)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int ixgbe_get_ts_info(struct net_device *dev,
|
||||||
|
struct ethtool_ts_info *info)
|
||||||
|
{
|
||||||
|
struct ixgbe_adapter *adapter = netdev_priv(dev);
|
||||||
|
|
||||||
|
switch (adapter->hw.mac.type) {
|
||||||
|
#ifdef CONFIG_IXGBE_PTP
|
||||||
|
case ixgbe_mac_X540:
|
||||||
|
case ixgbe_mac_82599EB:
|
||||||
|
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_PTP_V1_L4_SYNC) |
|
||||||
|
(1 << HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ) |
|
||||||
|
(1 << HWTSTAMP_FILTER_PTP_V2_SYNC) |
|
||||||
|
(1 << HWTSTAMP_FILTER_PTP_V2_DELAY_REQ) |
|
||||||
|
(1 << HWTSTAMP_FILTER_PTP_V2_EVENT) |
|
||||||
|
(1 << HWTSTAMP_FILTER_SOME);
|
||||||
|
break;
|
||||||
|
#endif /* CONFIG_IXGBE_PTP */
|
||||||
|
default:
|
||||||
|
return ethtool_op_get_ts_info(dev, info);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static const struct ethtool_ops ixgbe_ethtool_ops = {
|
static const struct ethtool_ops ixgbe_ethtool_ops = {
|
||||||
.get_settings = ixgbe_get_settings,
|
.get_settings = ixgbe_get_settings,
|
||||||
.set_settings = ixgbe_set_settings,
|
.set_settings = ixgbe_set_settings,
|
||||||
@ -2724,6 +2764,7 @@ static const struct ethtool_ops ixgbe_ethtool_ops = {
|
|||||||
.set_coalesce = ixgbe_set_coalesce,
|
.set_coalesce = ixgbe_set_coalesce,
|
||||||
.get_rxnfc = ixgbe_get_rxnfc,
|
.get_rxnfc = ixgbe_get_rxnfc,
|
||||||
.set_rxnfc = ixgbe_set_rxnfc,
|
.set_rxnfc = ixgbe_set_rxnfc,
|
||||||
|
.get_ts_info = ixgbe_get_ts_info,
|
||||||
};
|
};
|
||||||
|
|
||||||
void ixgbe_set_ethtool_ops(struct net_device *netdev)
|
void ixgbe_set_ethtool_ops(struct net_device *netdev)
|
||||||
|
Loading…
Reference in New Issue
Block a user