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)
 {
        struct igc_adapter *adapter = netdev_priv(netdev);
        .get_rxfh_indir_size    = igc_get_rxfh_indir_size,
        .get_rxfh               = igc_get_rxfh,
        .set_rxfh               = igc_set_rxfh,
+       .get_ts_info            = igc_get_ts_info,
        .get_channels           = igc_get_channels,
        .set_channels           = igc_set_channels,
        .get_priv_flags         = igc_get_priv_flags,