ice: Add EXTTS feature to the feature bitmap
authorAnirudh Venkataramanan <anirudh.venkataramanan@intel.com>
Tue, 28 Jun 2022 10:36:57 +0000 (12:36 +0200)
committerTony Nguyen <anthony.l.nguyen@intel.com>
Fri, 15 Jul 2022 17:41:39 +0000 (10:41 -0700)
External time stamp sources are supported only on certain devices. Enforce
the right support matrix by adding the ICE_F_PTP_EXTTS bit to the feature
bitmap set.

Co-developed-by: Maciej Machnikowski <maciej.machnikowski@intel.com>
Signed-off-by: Maciej Machnikowski <maciej.machnikowski@intel.com>
Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
Signed-off-by: Anatolii Gerasymenko <anatolii.gerasymenko@intel.com>
Tested-by: Gurucharan <gurucharanx.g@intel.com> (A Contingent worker at Intel)
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
drivers/net/ethernet/intel/ice/ice.h
drivers/net/ethernet/intel/ice/ice_lib.c
drivers/net/ethernet/intel/ice/ice_ptp.c

index 60453b3..f72c5cc 100644 (file)
 
 enum ice_feature {
        ICE_F_DSCP,
+       ICE_F_PTP_EXTTS,
        ICE_F_SMA_CTRL,
        ICE_F_GNSS,
        ICE_F_MAX
index a6c4be5..bc357df 100644 (file)
@@ -4182,6 +4182,7 @@ void ice_init_feature_support(struct ice_pf *pf)
        case ICE_DEV_ID_E810C_QSFP:
        case ICE_DEV_ID_E810C_SFP:
                ice_set_feature_support(pf, ICE_F_DSCP);
+               ice_set_feature_support(pf, ICE_F_PTP_EXTTS);
                if (ice_is_e810t(&pf->hw)) {
                        ice_set_feature_support(pf, ICE_F_SMA_CTRL);
                        if (ice_gnss_is_gps_present(&pf->hw))
index ef9344e..29c7a0c 100644 (file)
@@ -1900,9 +1900,12 @@ ice_ptp_setup_pins_e810t(struct ice_pf *pf, struct ptp_clock_info *info)
        }
 
        info->n_per_out = N_PER_OUT_E810T;
-       info->n_ext_ts = N_EXT_TS_E810;
-       info->n_pins = NUM_PTP_PINS_E810T;
-       info->verify = ice_verify_pin_e810t;
+
+       if (ice_is_feature_supported(pf, ICE_F_PTP_EXTTS)) {
+               info->n_ext_ts = N_EXT_TS_E810;
+               info->n_pins = NUM_PTP_PINS_E810T;
+               info->verify = ice_verify_pin_e810t;
+       }
 
        /* Complete setup of the SMA pins */
        ice_ptp_setup_sma_pins_e810t(pf, info);
@@ -1910,11 +1913,16 @@ ice_ptp_setup_pins_e810t(struct ice_pf *pf, struct ptp_clock_info *info)
 
 /**
  * ice_ptp_setup_pins_e810 - Setup PTP pins in sysfs
+ * @pf: pointer to the PF instance
  * @info: PTP clock capabilities
  */
-static void ice_ptp_setup_pins_e810(struct ptp_clock_info *info)
+static void ice_ptp_setup_pins_e810(struct ice_pf *pf, struct ptp_clock_info *info)
 {
        info->n_per_out = N_PER_OUT_E810;
+
+       if (!ice_is_feature_supported(pf, ICE_F_PTP_EXTTS))
+               return;
+
        info->n_ext_ts = N_EXT_TS_E810;
 }
 
@@ -1956,7 +1964,7 @@ ice_ptp_set_funcs_e810(struct ice_pf *pf, struct ptp_clock_info *info)
        if (ice_is_e810t(&pf->hw))
                ice_ptp_setup_pins_e810t(pf, info);
        else
-               ice_ptp_setup_pins_e810(info);
+               ice_ptp_setup_pins_e810(pf, info);
 }
 
 /**