
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>
120 lines
4.9 KiB
Diff
120 lines
4.9 KiB
Diff
From 084497314e63f3d92178bc44500a27a277abc378 Mon Sep 17 00:00:00 2001
|
|
From: Jacob Keller <jacob.e.keller@intel.com>
|
|
Date: Thu, 25 Jan 2024 13:57:51 -0800
|
|
Subject: [PATCH 18/36] ice: rename verify_cached to has_ready_bitmap
|
|
|
|
The tx->verify_cached flag is used to inform the Tx timestamp tracking
|
|
code whether it needs to verify the cached Tx timestamp value against
|
|
a previous captured value. This is necessary on E810 hardware which does
|
|
not have a Tx timestamp ready bitmap.
|
|
|
|
In addition, we currently rely on the fact that the
|
|
ice_get_phy_tx_tstamp_ready() function returns all 1s for E810 hardware.
|
|
Instead of introducing a brand new flag, rename and verify_cached to
|
|
has_ready_bitmap, inverting the relevant checks.
|
|
|
|
Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
|
|
Signed-off-by: Karol Kolacinski <karol.kolacinski@intel.com>
|
|
Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
|
|
Reviewed-by: Simon Horman <horms@kernel.org>
|
|
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 3f2216e8dbce04da5376ea7df410541f7b687cb0)
|
|
Signed-off-by: Jiping Ma <jiping.ma2@windriver.com>
|
|
---
|
|
drivers/net/ethernet/intel/ice/ice_ptp.c | 12 ++++++------
|
|
drivers/net/ethernet/intel/ice/ice_ptp.h | 8 +++++---
|
|
2 files changed, 11 insertions(+), 9 deletions(-)
|
|
|
|
diff --git a/drivers/net/ethernet/intel/ice/ice_ptp.c b/drivers/net/ethernet/intel/ice/ice_ptp.c
|
|
index 20d1d22235d3..a8c6b83579e6 100644
|
|
--- a/drivers/net/ethernet/intel/ice/ice_ptp.c
|
|
+++ b/drivers/net/ethernet/intel/ice/ice_ptp.c
|
|
@@ -606,11 +606,11 @@ void ice_ptp_complete_tx_single_tstamp(struct ice_ptp_tx *tx)
|
|
* timestamp. If it is not, skip this for now assuming it hasn't yet
|
|
* been captured by hardware.
|
|
*/
|
|
- if (!drop_ts && tx->verify_cached &&
|
|
+ if (!drop_ts && !tx->has_ready_bitmap &&
|
|
raw_tstamp == tx->tstamps[idx].cached_tstamp)
|
|
return;
|
|
|
|
- if (tx->verify_cached && raw_tstamp)
|
|
+ if (!tx->has_ready_bitmap && raw_tstamp)
|
|
tx->tstamps[idx].cached_tstamp = raw_tstamp;
|
|
clear_bit(idx, tx->in_use);
|
|
skb = tx->tstamps[idx].skb;
|
|
@@ -751,7 +751,7 @@ static void ice_ptp_process_tx_tstamp(struct ice_ptp_tx *tx)
|
|
* from the last cached timestamp. If it is not, skip this for
|
|
* now assuming it hasn't yet been captured by hardware.
|
|
*/
|
|
- if (!drop_ts && tx->verify_cached &&
|
|
+ if (!drop_ts && !tx->has_ready_bitmap &&
|
|
raw_tstamp == tx->tstamps[idx].cached_tstamp)
|
|
continue;
|
|
|
|
@@ -761,7 +761,7 @@ static void ice_ptp_process_tx_tstamp(struct ice_ptp_tx *tx)
|
|
|
|
skip_ts_read:
|
|
spin_lock_irqsave(&tx->lock, flags);
|
|
- if (tx->verify_cached && raw_tstamp)
|
|
+ if (!tx->has_ready_bitmap && raw_tstamp)
|
|
tx->tstamps[idx].cached_tstamp = raw_tstamp;
|
|
clear_bit(idx, tx->in_use);
|
|
skb = tx->tstamps[idx].skb;
|
|
@@ -1014,7 +1014,7 @@ ice_ptp_init_tx_e82x(struct ice_pf *pf, struct ice_ptp_tx *tx, u8 port)
|
|
tx->block = port / ICE_PORTS_PER_QUAD;
|
|
tx->offset = (port % ICE_PORTS_PER_QUAD) * INDEX_PER_PORT_E82X;
|
|
tx->len = INDEX_PER_PORT_E82X;
|
|
- tx->verify_cached = 0;
|
|
+ tx->has_ready_bitmap = 1;
|
|
|
|
return ice_ptp_alloc_tx_tracker(tx);
|
|
}
|
|
@@ -1037,7 +1037,7 @@ ice_ptp_init_tx_e810(struct ice_pf *pf, struct ice_ptp_tx *tx)
|
|
* verify new timestamps against cached copy of the last read
|
|
* timestamp.
|
|
*/
|
|
- tx->verify_cached = 1;
|
|
+ tx->has_ready_bitmap = 0;
|
|
|
|
return ice_ptp_alloc_tx_tracker(tx);
|
|
}
|
|
diff --git a/drivers/net/ethernet/intel/ice/ice_ptp.h b/drivers/net/ethernet/intel/ice/ice_ptp.h
|
|
index cd74712a17a1..1486a0b3b016 100644
|
|
--- a/drivers/net/ethernet/intel/ice/ice_ptp.h
|
|
+++ b/drivers/net/ethernet/intel/ice/ice_ptp.h
|
|
@@ -100,7 +100,7 @@ struct ice_perout_channel {
|
|
* the last timestamp we read for a given index. If the current timestamp
|
|
* value is the same as the cached value, we assume a new timestamp hasn't
|
|
* been captured. This avoids reporting stale timestamps to the stack. This is
|
|
- * only done if the verify_cached flag is set in ice_ptp_tx structure.
|
|
+ * only done if the has_ready_bitmap flag is not set in ice_ptp_tx structure.
|
|
*/
|
|
struct ice_tx_tstamp {
|
|
struct sk_buff *skb;
|
|
@@ -130,7 +130,9 @@ enum ice_tx_tstamp_work {
|
|
* @init: if true, the tracker is initialized;
|
|
* @calibrating: if true, the PHY is calibrating the Tx offset. During this
|
|
* window, timestamps are temporarily disabled.
|
|
- * @verify_cached: if true, verify new timestamp differs from last read value
|
|
+ * @has_ready_bitmap: if true, the hardware has a valid Tx timestamp ready
|
|
+ * bitmap register. If false, fall back to verifying new
|
|
+ * timestamp values against previously cached copy.
|
|
* @last_ll_ts_idx_read: index of the last LL TS read by the FW
|
|
*/
|
|
struct ice_ptp_tx {
|
|
@@ -143,7 +145,7 @@ struct ice_ptp_tx {
|
|
u8 len;
|
|
u8 init : 1;
|
|
u8 calibrating : 1;
|
|
- u8 verify_cached : 1;
|
|
+ u8 has_ready_bitmap : 1;
|
|
s8 last_ll_ts_idx_read;
|
|
};
|
|
|
|
--
|
|
2.43.0
|
|
|