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>
162 lines
4.6 KiB
Diff
162 lines
4.6 KiB
Diff
From 675a8843a0de1411666389eeabeea452161f8cc5 Mon Sep 17 00:00:00 2001
|
|
From: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
|
|
Date: Fri, 23 Feb 2024 17:06:27 +0100
|
|
Subject: [PATCH 33/36] ice: do not disable Tx queues twice in ice_down()
|
|
|
|
ice_down() clears QINT_TQCTL_CAUSE_ENA_M bit twice, which is not
|
|
necessary. First clearing happens in ice_vsi_dis_irq() and second in
|
|
ice_vsi_stop_tx_ring() - remove the first one.
|
|
|
|
While at it, make ice_vsi_dis_irq() static as ice_down() is the only
|
|
current caller of it.
|
|
|
|
Signed-off-by: Maciej Fijalkowski <maciej.fijalkowski@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 d5926e01e3739542bb047b77f850d7f641eaa7bc)
|
|
[Adjust ice_lib.c with the context change.]
|
|
Signed-off-by: Jiping Ma <jiping.ma2@windriver.com>
|
|
---
|
|
drivers/net/ethernet/intel/ice/ice_lib.c | 55 -----------------------
|
|
drivers/net/ethernet/intel/ice/ice_lib.h | 2 -
|
|
drivers/net/ethernet/intel/ice/ice_main.c | 44 ++++++++++++++++++
|
|
3 files changed, 44 insertions(+), 57 deletions(-)
|
|
|
|
diff --git a/drivers/net/ethernet/intel/ice/ice_lib.c b/drivers/net/ethernet/intel/ice/ice_lib.c
|
|
index 106ef843f4b5..f23cb9c8e3dd 100644
|
|
--- a/drivers/net/ethernet/intel/ice/ice_lib.c
|
|
+++ b/drivers/net/ethernet/intel/ice/ice_lib.c
|
|
@@ -2877,61 +2877,6 @@ void ice_dis_vsi(struct ice_vsi *vsi, bool locked)
|
|
}
|
|
}
|
|
|
|
-/**
|
|
- * ice_vsi_dis_irq - Mask off queue interrupt generation on the VSI
|
|
- * @vsi: the VSI being un-configured
|
|
- */
|
|
-void ice_vsi_dis_irq(struct ice_vsi *vsi)
|
|
-{
|
|
- struct ice_pf *pf = vsi->back;
|
|
- struct ice_hw *hw = &pf->hw;
|
|
- u32 val;
|
|
- int i;
|
|
-
|
|
- /* disable interrupt causation from each queue */
|
|
- if (vsi->tx_rings) {
|
|
- ice_for_each_txq(vsi, i) {
|
|
- if (vsi->tx_rings[i]) {
|
|
- u16 reg;
|
|
-
|
|
- reg = vsi->tx_rings[i]->reg_idx;
|
|
- val = rd32(hw, QINT_TQCTL(reg));
|
|
- val &= ~QINT_TQCTL_CAUSE_ENA_M;
|
|
- wr32(hw, QINT_TQCTL(reg), val);
|
|
- }
|
|
- }
|
|
- }
|
|
-
|
|
- if (vsi->rx_rings) {
|
|
- ice_for_each_rxq(vsi, i) {
|
|
- if (vsi->rx_rings[i]) {
|
|
- u16 reg;
|
|
-
|
|
- reg = vsi->rx_rings[i]->reg_idx;
|
|
- val = rd32(hw, QINT_RQCTL(reg));
|
|
- val &= ~QINT_RQCTL_CAUSE_ENA_M;
|
|
- wr32(hw, QINT_RQCTL(reg), val);
|
|
- }
|
|
- }
|
|
- }
|
|
-
|
|
- /* disable each interrupt */
|
|
- ice_for_each_q_vector(vsi, i) {
|
|
- if (!vsi->q_vectors[i])
|
|
- continue;
|
|
- wr32(hw, GLINT_DYN_CTL(vsi->q_vectors[i]->reg_idx), 0);
|
|
- }
|
|
-
|
|
- ice_flush(hw);
|
|
-
|
|
- /* don't call synchronize_irq() for VF's from the host */
|
|
- if (vsi->type == ICE_VSI_VF)
|
|
- return;
|
|
-
|
|
- ice_for_each_q_vector(vsi, i)
|
|
- synchronize_irq(vsi->q_vectors[i]->irq.virq);
|
|
-}
|
|
-
|
|
/**
|
|
* ice_vsi_release - Delete a VSI and free its resources
|
|
* @vsi: the VSI being removed
|
|
diff --git a/drivers/net/ethernet/intel/ice/ice_lib.h b/drivers/net/ethernet/intel/ice/ice_lib.h
|
|
index f24f5d1e6f9c..dbd0f3409323 100644
|
|
--- a/drivers/net/ethernet/intel/ice/ice_lib.h
|
|
+++ b/drivers/net/ethernet/intel/ice/ice_lib.h
|
|
@@ -110,8 +110,6 @@ void
|
|
ice_write_qrxflxp_cntxt(struct ice_hw *hw, u16 pf_q, u32 rxdid, u32 prio,
|
|
bool ena_ts);
|
|
|
|
-void ice_vsi_dis_irq(struct ice_vsi *vsi);
|
|
-
|
|
void ice_vsi_free_irq(struct ice_vsi *vsi);
|
|
|
|
void ice_vsi_free_rx_rings(struct ice_vsi *vsi);
|
|
diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c
|
|
index c882c218281a..685635a22616 100644
|
|
--- a/drivers/net/ethernet/intel/ice/ice_main.c
|
|
+++ b/drivers/net/ethernet/intel/ice/ice_main.c
|
|
@@ -7023,6 +7023,50 @@ static void ice_napi_disable_all(struct ice_vsi *vsi)
|
|
}
|
|
}
|
|
|
|
+/**
|
|
+ * ice_vsi_dis_irq - Mask off queue interrupt generation on the VSI
|
|
+ * @vsi: the VSI being un-configured
|
|
+ */
|
|
+static void ice_vsi_dis_irq(struct ice_vsi *vsi)
|
|
+{
|
|
+ struct ice_pf *pf = vsi->back;
|
|
+ struct ice_hw *hw = &pf->hw;
|
|
+ u32 val;
|
|
+ int i;
|
|
+
|
|
+ /* disable interrupt causation from each Rx queue; Tx queues are
|
|
+ * handled in ice_vsi_stop_tx_ring()
|
|
+ */
|
|
+ if (vsi->rx_rings) {
|
|
+ ice_for_each_rxq(vsi, i) {
|
|
+ if (vsi->rx_rings[i]) {
|
|
+ u16 reg;
|
|
+
|
|
+ reg = vsi->rx_rings[i]->reg_idx;
|
|
+ val = rd32(hw, QINT_RQCTL(reg));
|
|
+ val &= ~QINT_RQCTL_CAUSE_ENA_M;
|
|
+ wr32(hw, QINT_RQCTL(reg), val);
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+
|
|
+ /* disable each interrupt */
|
|
+ ice_for_each_q_vector(vsi, i) {
|
|
+ if (!vsi->q_vectors[i])
|
|
+ continue;
|
|
+ wr32(hw, GLINT_DYN_CTL(vsi->q_vectors[i]->reg_idx), 0);
|
|
+ }
|
|
+
|
|
+ ice_flush(hw);
|
|
+
|
|
+ /* don't call synchronize_irq() for VF's from the host */
|
|
+ if (vsi->type == ICE_VSI_VF)
|
|
+ return;
|
|
+
|
|
+ ice_for_each_q_vector(vsi, i)
|
|
+ synchronize_irq(vsi->q_vectors[i]->irq.virq);
|
|
+}
|
|
+
|
|
/**
|
|
* ice_down - Shutdown the connection
|
|
* @vsi: The VSI being stopped
|
|
--
|
|
2.43.0
|
|
|