
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>
105 lines
3.5 KiB
Diff
105 lines
3.5 KiB
Diff
From 3b37119a08ffe4be182ade746a6b1fe3bcf65921 Mon Sep 17 00:00:00 2001
|
|
From: Karol Kolacinski <karol.kolacinski@intel.com>
|
|
Date: Wed, 29 Nov 2023 13:40:22 +0100
|
|
Subject: [PATCH 12/36] ice: Schedule service task in IRQ top half
|
|
|
|
Schedule service task and EXTTS in the top half to avoid bottom half
|
|
scheduling if possible, which significantly reduces timestamping delay.
|
|
|
|
Co-developed-by: Michal Michalik <michal.michalik@intel.com>
|
|
Signed-off-by: Michal Michalik <michal.michalik@intel.com>
|
|
Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
|
|
Signed-off-by: Karol Kolacinski <karol.kolacinski@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>
|
|
(cherry picked from commit 00d50001444ef5c75c8ab476a6674708f3ff613b)
|
|
Signed-off-by: Jiping Ma <jiping.ma2@windriver.com>
|
|
---
|
|
drivers/net/ethernet/intel/ice/ice.h | 1 -
|
|
drivers/net/ethernet/intel/ice/ice_main.c | 20 +++++++++++---------
|
|
2 files changed, 11 insertions(+), 10 deletions(-)
|
|
|
|
diff --git a/drivers/net/ethernet/intel/ice/ice.h b/drivers/net/ethernet/intel/ice/ice.h
|
|
index 54a98c4032b7..efe78d5e4da1 100644
|
|
--- a/drivers/net/ethernet/intel/ice/ice.h
|
|
+++ b/drivers/net/ethernet/intel/ice/ice.h
|
|
@@ -517,7 +517,6 @@ enum ice_pf_flags {
|
|
};
|
|
|
|
enum ice_misc_thread_tasks {
|
|
- ICE_MISC_THREAD_EXTTS_EVENT,
|
|
ICE_MISC_THREAD_TX_TSTAMP,
|
|
ICE_MISC_THREAD_NBITS /* must be last */
|
|
};
|
|
diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c
|
|
index d2f3b4374d14..2acaa17a12bf 100644
|
|
--- a/drivers/net/ethernet/intel/ice/ice_main.c
|
|
+++ b/drivers/net/ethernet/intel/ice/ice_main.c
|
|
@@ -3109,6 +3109,7 @@ static void ice_ena_misc_vector(struct ice_pf *pf)
|
|
static irqreturn_t ice_misc_intr(int __always_unused irq, void *data)
|
|
{
|
|
struct ice_pf *pf = (struct ice_pf *)data;
|
|
+ irqreturn_t ret = IRQ_HANDLED;
|
|
struct ice_hw *hw = &pf->hw;
|
|
struct device *dev;
|
|
u32 oicr, ena_mask;
|
|
@@ -3190,8 +3191,10 @@ 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 (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);
|
|
+ ret = IRQ_WAKE_THREAD;
|
|
+ }
|
|
}
|
|
|
|
if (oicr & PFINT_OICR_TSYN_EVNT_M) {
|
|
@@ -3207,7 +3210,7 @@ static irqreturn_t ice_misc_intr(int __always_unused irq, void *data)
|
|
GLTSYN_STAT_EVENT1_M |
|
|
GLTSYN_STAT_EVENT2_M);
|
|
|
|
- set_bit(ICE_MISC_THREAD_EXTTS_EVENT, pf->misc_thread);
|
|
+ ice_ptp_extts_event(pf);
|
|
}
|
|
}
|
|
|
|
@@ -3230,8 +3233,11 @@ static irqreturn_t ice_misc_intr(int __always_unused irq, void *data)
|
|
set_bit(ICE_PFR_REQ, pf->state);
|
|
}
|
|
}
|
|
+ ice_service_task_schedule(pf);
|
|
+ if (ret == IRQ_HANDLED)
|
|
+ ice_irq_dynamic_ena(hw, NULL, NULL);
|
|
|
|
- return IRQ_WAKE_THREAD;
|
|
+ return ret;
|
|
}
|
|
|
|
/**
|
|
@@ -3247,12 +3253,7 @@ static irqreturn_t ice_misc_intr_thread_fn(int __always_unused irq, void *data)
|
|
hw = &pf->hw;
|
|
|
|
if (ice_is_reset_in_progress(pf->state))
|
|
- return IRQ_HANDLED;
|
|
-
|
|
- ice_service_task_schedule(pf);
|
|
-
|
|
- if (test_and_clear_bit(ICE_MISC_THREAD_EXTTS_EVENT, pf->misc_thread))
|
|
- ice_ptp_extts_event(pf);
|
|
+ goto skip_irq;
|
|
|
|
if (test_and_clear_bit(ICE_MISC_THREAD_TX_TSTAMP, pf->misc_thread)) {
|
|
/* Process outstanding Tx timestamps. If there is more work,
|
|
@@ -3264,6 +3265,7 @@ static irqreturn_t ice_misc_intr_thread_fn(int __always_unused irq, void *data)
|
|
}
|
|
}
|
|
|
|
+skip_irq:
|
|
ice_irq_dynamic_ena(hw, NULL, NULL);
|
|
|
|
return IRQ_HANDLED;
|
|
--
|
|
2.43.0
|
|
|