|
@@ -540,6 +540,11 @@ void ixgbe_ptp_rx_hwtstamp(struct ixgbe_q_vector *q_vector,
|
|
|
* type has to be specified. Matching the kind of event packet is
|
|
|
* not supported, with the exception of "all V2 events regardless of
|
|
|
* level 2 or 4".
|
|
|
+ *
|
|
|
+ * Since hardware always timestamps Path delay packets when timestamping V2
|
|
|
+ * packets, regardless of the type specified in the register, only use V2
|
|
|
+ * Event mode. This more accurately tells the user what the hardware is going
|
|
|
+ * to do anyways.
|
|
|
*/
|
|
|
int ixgbe_ptp_hwtstamp_ioctl(struct ixgbe_adapter *adapter,
|
|
|
struct ifreq *ifr, int cmd)
|
|
@@ -583,27 +588,15 @@ int ixgbe_ptp_hwtstamp_ioctl(struct ixgbe_adapter *adapter,
|
|
|
tsync_rx_mtrl = IXGBE_RXMTRL_V1_DELAY_REQ_MSG;
|
|
|
is_l4 = true;
|
|
|
break;
|
|
|
+ case HWTSTAMP_FILTER_PTP_V2_EVENT:
|
|
|
+ case HWTSTAMP_FILTER_PTP_V2_L2_EVENT:
|
|
|
+ case HWTSTAMP_FILTER_PTP_V2_L4_EVENT:
|
|
|
case HWTSTAMP_FILTER_PTP_V2_SYNC:
|
|
|
case HWTSTAMP_FILTER_PTP_V2_L2_SYNC:
|
|
|
case HWTSTAMP_FILTER_PTP_V2_L4_SYNC:
|
|
|
- tsync_rx_ctl |= IXGBE_TSYNCRXCTL_TYPE_L2_L4_V2;
|
|
|
- tsync_rx_mtrl = IXGBE_RXMTRL_V2_SYNC_MSG;
|
|
|
- is_l2 = true;
|
|
|
- is_l4 = true;
|
|
|
- config.rx_filter = HWTSTAMP_FILTER_SOME;
|
|
|
- break;
|
|
|
case HWTSTAMP_FILTER_PTP_V2_DELAY_REQ:
|
|
|
case HWTSTAMP_FILTER_PTP_V2_L2_DELAY_REQ:
|
|
|
case HWTSTAMP_FILTER_PTP_V2_L4_DELAY_REQ:
|
|
|
- tsync_rx_ctl |= IXGBE_TSYNCRXCTL_TYPE_L2_L4_V2;
|
|
|
- tsync_rx_mtrl = IXGBE_RXMTRL_V2_DELAY_REQ_MSG;
|
|
|
- is_l2 = true;
|
|
|
- is_l4 = true;
|
|
|
- config.rx_filter = HWTSTAMP_FILTER_SOME;
|
|
|
- break;
|
|
|
- case HWTSTAMP_FILTER_PTP_V2_L4_EVENT:
|
|
|
- case HWTSTAMP_FILTER_PTP_V2_L2_EVENT:
|
|
|
- case HWTSTAMP_FILTER_PTP_V2_EVENT:
|
|
|
tsync_rx_ctl |= IXGBE_TSYNCRXCTL_TYPE_EVENT_V2;
|
|
|
config.rx_filter = HWTSTAMP_FILTER_PTP_V2_EVENT;
|
|
|
is_l2 = true;
|