|
@@ -521,6 +521,8 @@ static int i40e_ptp_set_timestamp_mode(struct i40e_pf *pf,
|
|
|
case HWTSTAMP_FILTER_PTP_V1_L4_SYNC:
|
|
|
case HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ:
|
|
|
case HWTSTAMP_FILTER_PTP_V1_L4_EVENT:
|
|
|
+ if (!(pf->flags & I40E_FLAG_PTP_L4_CAPABLE))
|
|
|
+ return -ERANGE;
|
|
|
pf->ptp_rx = true;
|
|
|
tsyntype = I40E_PRTTSYN_CTL1_V1MESSTYPE0_MASK |
|
|
|
I40E_PRTTSYN_CTL1_TSYNTYPE_V1 |
|
|
@@ -528,19 +530,26 @@ static int i40e_ptp_set_timestamp_mode(struct i40e_pf *pf,
|
|
|
config->rx_filter = HWTSTAMP_FILTER_PTP_V1_L4_EVENT;
|
|
|
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:
|
|
|
case HWTSTAMP_FILTER_PTP_V2_DELAY_REQ:
|
|
|
- case HWTSTAMP_FILTER_PTP_V2_L2_DELAY_REQ:
|
|
|
case HWTSTAMP_FILTER_PTP_V2_L4_DELAY_REQ:
|
|
|
+ if (!(pf->flags & I40E_FLAG_PTP_L4_CAPABLE))
|
|
|
+ return -ERANGE;
|
|
|
+ /* fall through */
|
|
|
+ case HWTSTAMP_FILTER_PTP_V2_L2_EVENT:
|
|
|
+ case HWTSTAMP_FILTER_PTP_V2_L2_SYNC:
|
|
|
+ case HWTSTAMP_FILTER_PTP_V2_L2_DELAY_REQ:
|
|
|
pf->ptp_rx = true;
|
|
|
tsyntype = I40E_PRTTSYN_CTL1_V2MESSTYPE0_MASK |
|
|
|
- I40E_PRTTSYN_CTL1_TSYNTYPE_V2 |
|
|
|
- I40E_PRTTSYN_CTL1_UDP_ENA_MASK;
|
|
|
- config->rx_filter = HWTSTAMP_FILTER_PTP_V2_EVENT;
|
|
|
+ I40E_PRTTSYN_CTL1_TSYNTYPE_V2;
|
|
|
+ if (pf->flags & I40E_FLAG_PTP_L4_CAPABLE) {
|
|
|
+ tsyntype |= I40E_PRTTSYN_CTL1_UDP_ENA_MASK;
|
|
|
+ config->rx_filter = HWTSTAMP_FILTER_PTP_V2_EVENT;
|
|
|
+ } else {
|
|
|
+ config->rx_filter = HWTSTAMP_FILTER_PTP_V2_L2_EVENT;
|
|
|
+ }
|
|
|
break;
|
|
|
case HWTSTAMP_FILTER_ALL:
|
|
|
default:
|