Since upstream commit d9f3e9ecc456 ("net: ptp: introduce
.supported_perout_flags to ptp_clock_info") and commit 7c571ac57d9d ("net:
ptp: introduce .supported_extts_flags to ptp_clock_info"), kernel core now
requires that the driver set the .supported_perout_flags and
.supported_extts_flags fields in PTP clock info. Otherwise, the additional
flags will be rejected by the kernel automatically.
i40e does not support perout flags, so reject any request with perout
flags.
Fixes: d9f3e9ecc456 ("net: ptp: introduce .supported_perout_flags to
ptp_clock_info")
Signed-off-by: Przemyslaw Korba <[email protected]>
---
v2:
- add fixes tag
- remove old TODO comment
v1:
https://lore.kernel.org/intel-wired-lan/[email protected]/
drivers/net/ethernet/intel/i40e/i40e_ptp.c | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/intel/i40e/i40e_ptp.c
b/drivers/net/ethernet/intel/i40e/i40e_ptp.c
index 7bcea7d9720f..41ae6d78aacb 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_ptp.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_ptp.c
@@ -598,13 +598,20 @@ static int i40e_ptp_feature_enable(struct ptp_clock_info
*ptp,
enum ptp_pin_function func;
unsigned int chan;
- /* TODO: Implement flags handling for EXTTS and PEROUT */
switch (rq->type) {
case PTP_CLK_REQ_EXTTS:
+ if (rq->extts.flags & ~(PTP_ENABLE_FEATURE |
+ PTP_RISING_EDGE |
+ PTP_FALLING_EDGE |
+ PTP_STRICT_FLAGS))
+ return -EOPNOTSUPP;
+
func = PTP_PF_EXTTS;
chan = rq->extts.index;
break;
case PTP_CLK_REQ_PEROUT:
+ if (rq->perout.flags)
+ return -EOPNOTSUPP;
func = PTP_PF_PEROUT;
chan = rq->perout.index;
break;
@@ -1340,7 +1347,9 @@ static int i40e_init_pin_config(struct i40e_pf *pf)
pf->ptp_caps.n_ext_ts = 2;
pf->ptp_caps.pps = 1;
pf->ptp_caps.n_per_out = 2;
-
+ pf->ptp_caps.supported_extts_flags = PTP_RISING_EDGE |
+ PTP_FALLING_EDGE |
+ PTP_STRICT_FLAGS;
pf->ptp_caps.pin_config = kzalloc_objs(*pf->ptp_caps.pin_config,
pf->ptp_caps.n_pins);
if (!pf->ptp_caps.pin_config)
base-commit: d5fbc991435eac7a1ead7cd2ddb5a743528718bb
--
2.43.0