
Intel listed total 28 commits that need us to back port. There are 9 commits that are already included in our code base. The commit "ice: Add support for E825-C TS PLL handling" will not be back ported since we're not dealing with E825 for 24.09. So we need back port 18 commits. These commits were introduced in linux-6.9.y and linux-6.10.y. To back port these 18 commits successfully, we totally back ported 37 upstream commits. 1) The patches 1-15 are cherry picked to fix the conflicts for patch 16 ("ice: introduce PTP state machine") and patch 36 "ice: Introduce ice_ptp_hw struct". Also will be helpful for the subsequent commits back porting. 2) The patches 24-27 are cherry picked to fix the conflicts for patch 28 ("ice: Fix debugfs with devlink reload") 3) The minor adjust was done for the patches 17, 21, 23 and 33 to fit with the context change. Verification: - installs from iso succeed on servers with ice(Intel Ethernet Controller E810-XXVDA4T Westport Channel) and i40e hw(Intel Ethernet Controller X710) for rt and std. - interfaces are up and pass packets for rt and std. - create vfs, ensure that they are picked up by the new iavf driver and that the interface can come up and pass packets on rt and std system. - Check dmesg to see DDP package is loaded successfully and the version is 1.3.36.0 for rt and std. Story: 2011056 Task: 50950 Change-Id: I9aef0378ea01451684341093a167eaead3edc458 Signed-off-by: Jiping Ma <jiping.ma2@windriver.com>
94 lines
3.2 KiB
Diff
94 lines
3.2 KiB
Diff
From 3c155fbf8e2a0546302a01cc06e8ece18468148e Mon Sep 17 00:00:00 2001
|
|
From: Karol Kolacinski <karol.kolacinski@intel.com>
|
|
Date: Fri, 1 Dec 2023 10:08:42 -0800
|
|
Subject: [PATCH 03/36] ice: Re-enable timestamping correctly after reset
|
|
|
|
During reset, TX_TSYN interrupt should be processed as it may process
|
|
timestamps in brief moments before and after reset.
|
|
Timestamping should be enabled on VSIs at the end of reset procedure.
|
|
On ice_get_phy_tx_tstamp_ready error, interrupt should not be rearmed
|
|
because error only happens on resets.
|
|
|
|
Reviewed-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
|
|
Signed-off-by: Karol Kolacinski <karol.kolacinski@intel.com>
|
|
Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
|
|
Tested-by: Pucha Himasekhar Reddy <himasekharx.reddy.pucha@intel.com> (A Contingent worker at Intel)
|
|
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
|
|
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|
(cherry picked from commit 1cc5b6eaad92d69fe4d84bbee5c12ee297d56296)
|
|
Signed-off-by: Jiping Ma <jiping.ma2@windriver.com>
|
|
---
|
|
drivers/net/ethernet/intel/ice/ice_main.c | 2 +-
|
|
drivers/net/ethernet/intel/ice/ice_ptp.c | 19 ++++++++++---------
|
|
2 files changed, 11 insertions(+), 10 deletions(-)
|
|
|
|
diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c
|
|
index e957529b3fd6..d2f3b4374d14 100644
|
|
--- a/drivers/net/ethernet/intel/ice/ice_main.c
|
|
+++ b/drivers/net/ethernet/intel/ice/ice_main.c
|
|
@@ -3190,7 +3190,7 @@ static irqreturn_t ice_misc_intr(int __always_unused irq, void *data)
|
|
|
|
if (oicr & PFINT_OICR_TSYN_TX_M) {
|
|
ena_mask &= ~PFINT_OICR_TSYN_TX_M;
|
|
- if (!hw->reset_ongoing && ice_ptp_pf_handles_tx_interrupt(pf))
|
|
+ if (ice_ptp_pf_handles_tx_interrupt(pf))
|
|
set_bit(ICE_MISC_THREAD_TX_TSTAMP, pf->misc_thread);
|
|
}
|
|
|
|
diff --git a/drivers/net/ethernet/intel/ice/ice_ptp.c b/drivers/net/ethernet/intel/ice/ice_ptp.c
|
|
index b1951357ba9f..92459589f6ce 100644
|
|
--- a/drivers/net/ethernet/intel/ice/ice_ptp.c
|
|
+++ b/drivers/net/ethernet/intel/ice/ice_ptp.c
|
|
@@ -809,7 +809,9 @@ static enum ice_tx_tstamp_work ice_ptp_tx_tstamp_owner(struct ice_pf *pf)
|
|
|
|
/* Read the Tx ready status first */
|
|
err = ice_get_phy_tx_tstamp_ready(&pf->hw, i, &tstamp_ready);
|
|
- if (err || tstamp_ready)
|
|
+ if (err)
|
|
+ break;
|
|
+ else if (tstamp_ready)
|
|
return ICE_TX_TSTAMP_WORK_PENDING;
|
|
}
|
|
|
|
@@ -2535,12 +2537,10 @@ void ice_ptp_reset(struct ice_pf *pf)
|
|
int err, itr = 1;
|
|
u64 time_diff;
|
|
|
|
- if (test_bit(ICE_PFR_REQ, pf->state))
|
|
+ if (test_bit(ICE_PFR_REQ, pf->state) ||
|
|
+ !ice_pf_src_tmr_owned(pf))
|
|
goto pfr;
|
|
|
|
- if (!ice_pf_src_tmr_owned(pf))
|
|
- goto reset_ts;
|
|
-
|
|
err = ice_ptp_init_phc(hw);
|
|
if (err)
|
|
goto err;
|
|
@@ -2584,10 +2584,6 @@ void ice_ptp_reset(struct ice_pf *pf)
|
|
goto err;
|
|
}
|
|
|
|
-reset_ts:
|
|
- /* Restart the PHY timestamping block */
|
|
- ice_ptp_reset_phy_timestamping(pf);
|
|
-
|
|
pfr:
|
|
/* Init Tx structures */
|
|
if (ice_is_e810(&pf->hw)) {
|
|
@@ -2603,6 +2599,11 @@ void ice_ptp_reset(struct ice_pf *pf)
|
|
|
|
set_bit(ICE_FLAG_PTP, pf->flags);
|
|
|
|
+ /* Restart the PHY timestamping block */
|
|
+ if (!test_bit(ICE_PFR_REQ, pf->state) &&
|
|
+ ice_pf_src_tmr_owned(pf))
|
|
+ ice_ptp_restart_all_phy(pf);
|
|
+
|
|
/* Start periodic work going */
|
|
kthread_queue_delayed_work(ptp->kworker, &ptp->work, 0);
|
|
|
|
--
|
|
2.43.0
|
|
|