Commit d6321407 authored by Jacob Keller's avatar Jacob Keller Committed by Jeff Kirsher

ixgbe: allow ixgbe_ptp_reset to maintain current hwtstamp config

Rather than clearing the hwtstamp configuration, we should use the known
configuration requested by the user and call the function which has now
been separated from the ioctl. This means that after a reset, the
timestamp mode will be maintained rather than lost. We still can't
maintain the clock value, however.
Signed-off-by: default avatarJacob Keller <jacob.e.keller@intel.com>
Tested-by: default avatarPhil Schmitt <phillip.j.schmitt@intel.com>
Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
parent a7ef4286
...@@ -812,9 +812,13 @@ void ixgbe_ptp_start_cyclecounter(struct ixgbe_adapter *adapter) ...@@ -812,9 +812,13 @@ void ixgbe_ptp_start_cyclecounter(struct ixgbe_adapter *adapter)
* ixgbe_ptp_reset * ixgbe_ptp_reset
* @adapter: the ixgbe private board structure * @adapter: the ixgbe private board structure
* *
* When the MAC resets, all timesync features are reset. This function should be * When the MAC resets, all the hardware bits for timesync are reset. This
* called to re-enable the PTP clock structure. It will re-init the timecounter * function is used to re-enable the device for PTP based on current settings.
* structure based on the kernel time as well as setup the cycle counter data. * We do lose the current clock time, so just reset the cyclecounter to the
* system real clock time.
*
* This function will maintain hwtstamp_config settings, and resets the SDP
* output if it was enabled.
*/ */
void ixgbe_ptp_reset(struct ixgbe_adapter *adapter) void ixgbe_ptp_reset(struct ixgbe_adapter *adapter)
{ {
...@@ -826,8 +830,8 @@ void ixgbe_ptp_reset(struct ixgbe_adapter *adapter) ...@@ -826,8 +830,8 @@ void ixgbe_ptp_reset(struct ixgbe_adapter *adapter)
IXGBE_WRITE_REG(hw, IXGBE_SYSTIMH, 0x00000000); IXGBE_WRITE_REG(hw, IXGBE_SYSTIMH, 0x00000000);
IXGBE_WRITE_FLUSH(hw); IXGBE_WRITE_FLUSH(hw);
/* Reset the saved tstamp_config */ /* reset the hardware timestamping mode */
memset(&adapter->tstamp_config, 0, sizeof(adapter->tstamp_config)); ixgbe_ptp_set_timestamp_mode(adapter, &adapter->tstamp_config);
ixgbe_ptp_start_cyclecounter(adapter); ixgbe_ptp_start_cyclecounter(adapter);
...@@ -907,6 +911,8 @@ void ixgbe_ptp_init(struct ixgbe_adapter *adapter) ...@@ -907,6 +911,8 @@ void ixgbe_ptp_init(struct ixgbe_adapter *adapter)
} else } else
e_dev_info("registered PHC device on %s\n", netdev->name); e_dev_info("registered PHC device on %s\n", netdev->name);
adapter->tstamp_config.rx_filter = HWTSTAMP_FILTER_NONE;
adapter->tstamp_config.tx_type = HWTSTAMP_TX_OFF;
ixgbe_ptp_reset(adapter); ixgbe_ptp_reset(adapter);
/* enter the IXGBE_PTP_RUNNING state */ /* enter the IXGBE_PTP_RUNNING state */
......
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