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.

Signed-off-by: Przemyslaw Korba <[email protected]>
---
 drivers/net/ethernet/intel/i40e/i40e_ptp.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_ptp.c 
b/drivers/net/ethernet/intel/i40e/i40e_ptp.c
index 7bcea7d9720f..8d7958692235 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_ptp.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_ptp.c
@@ -601,10 +601,18 @@ static int i40e_ptp_feature_enable(struct ptp_clock_info 
*ptp,
        /* 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 +1348,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

Reply via email to