public inbox for netdev@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH net 0/4][pull request] Intel Wired LAN Driver Updates 2026-01-20 (ice, idpf)
@ 2026-01-20 22:44 Tony Nguyen
  2026-01-20 22:44 ` [PATCH net 1/4] ice: Fix persistent failure in ice_get_rxfh Tony Nguyen
                   ` (4 more replies)
  0 siblings, 5 replies; 7+ messages in thread
From: Tony Nguyen @ 2026-01-20 22:44 UTC (permalink / raw)
  To: davem, kuba, pabeni, edumazet, andrew+netdev, netdev; +Cc: Tony Nguyen

For ice:
Cody Haas breaks dependency of needing both RSS key and LUT for
ice_get_rxfh() as ethtool ioctls do not always supply both.

Paul fixes issues related to devlink reload; adding missing deinit HW
call and moving hwmon exit function to the proper call chain.

For idpf:
Mina Almasry moves a register read call into the time sandwich to ensure
the register is properly flushed.

The following are changes since commit b97d5eedf4976cc94321243be83b39efe81a0e15:
  netdevsim: fix a race issue related to the operation on bpf_bound_progs list
and are available in the git repository at:
  git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/net-queue 100GbE

Cody Haas (1):
  ice: Fix persistent failure in ice_get_rxfh

Mina Almasry (1):
  idpf: read lower clock bits inside the time sandwich

Paul Greenwalt (2):
  ice: add missing ice_deinit_hw() in devlink reinit path
  ice: fix devlink reload call trace

 .../net/ethernet/intel/ice/devlink/devlink.c  |  1 +
 drivers/net/ethernet/intel/ice/ice.h          |  1 +
 drivers/net/ethernet/intel/ice/ice_ethtool.c  |  6 +---
 drivers/net/ethernet/intel/ice/ice_main.c     | 31 +++++++++++++++++--
 drivers/net/ethernet/intel/idpf/idpf_ptp.c    |  2 +-
 5 files changed, 33 insertions(+), 8 deletions(-)

-- 
2.47.1


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH net 1/4] ice: Fix persistent failure in ice_get_rxfh
  2026-01-20 22:44 [PATCH net 0/4][pull request] Intel Wired LAN Driver Updates 2026-01-20 (ice, idpf) Tony Nguyen
@ 2026-01-20 22:44 ` Tony Nguyen
  2026-01-20 22:44 ` [PATCH net 2/4] ice: add missing ice_deinit_hw() in devlink reinit path Tony Nguyen
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 7+ messages in thread
From: Tony Nguyen @ 2026-01-20 22:44 UTC (permalink / raw)
  To: davem, kuba, pabeni, edumazet, andrew+netdev, netdev
  Cc: Cody Haas, anthony.l.nguyen, Aleksandr Loktionov, Przemek Kitszel,
	Rinitha S

From: Cody Haas <chaas@riotgames.com>

Several ioctl functions have the ability to call ice_get_rxfh, however
all of these ioctl functions do not provide all of the expected
information in ethtool_rxfh_param. For example, ethtool_get_rxfh_indir does
not provide an rss_key. This previously caused ethtool_get_rxfh_indir to
always fail with -EINVAL.

This change draws inspiration from i40e_get_rss to handle this
situation, by only calling the appropriate rss helpers when the
necessary information has been provided via ethtool_rxfh_param.

Fixes: b66a972abb6b ("ice: Refactor ice_set/get_rss into LUT and key specific functions")
Signed-off-by: Cody Haas <chaas@riotgames.com>
Closes: https://lore.kernel.org/intel-wired-lan/CAH7f-UKkJV8MLY7zCdgCrGE55whRhbGAXvgkDnwgiZ9gUZT7_w@mail.gmail.com/
Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
Tested-by: Rinitha S <sx.rinitha@intel.com> (A Contingent worker at Intel)
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
---
 drivers/net/ethernet/intel/ice/ice.h         |  1 +
 drivers/net/ethernet/intel/ice/ice_ethtool.c |  6 +----
 drivers/net/ethernet/intel/ice/ice_main.c    | 28 ++++++++++++++++++++
 3 files changed, 30 insertions(+), 5 deletions(-)

diff --git a/drivers/net/ethernet/intel/ice/ice.h b/drivers/net/ethernet/intel/ice/ice.h
index 147aaee192a7..00f75d87c73f 100644
--- a/drivers/net/ethernet/intel/ice/ice.h
+++ b/drivers/net/ethernet/intel/ice/ice.h
@@ -979,6 +979,7 @@ void ice_map_xdp_rings(struct ice_vsi *vsi);
 int
 ice_xdp_xmit(struct net_device *dev, int n, struct xdp_frame **frames,
 	     u32 flags);
+int ice_get_rss(struct ice_vsi *vsi, u8 *seed, u8 *lut, u16 lut_size);
 int ice_set_rss_lut(struct ice_vsi *vsi, u8 *lut, u16 lut_size);
 int ice_get_rss_lut(struct ice_vsi *vsi, u8 *lut, u16 lut_size);
 int ice_set_rss_key(struct ice_vsi *vsi, u8 *seed);
diff --git a/drivers/net/ethernet/intel/ice/ice_ethtool.c b/drivers/net/ethernet/intel/ice/ice_ethtool.c
index 969d4f8f9c02..3565a5d96c6d 100644
--- a/drivers/net/ethernet/intel/ice/ice_ethtool.c
+++ b/drivers/net/ethernet/intel/ice/ice_ethtool.c
@@ -3626,11 +3626,7 @@ ice_get_rxfh(struct net_device *netdev, struct ethtool_rxfh_param *rxfh)
 	if (!lut)
 		return -ENOMEM;
 
-	err = ice_get_rss_key(vsi, rxfh->key);
-	if (err)
-		goto out;
-
-	err = ice_get_rss_lut(vsi, lut, vsi->rss_table_size);
+	err = ice_get_rss(vsi, rxfh->key, lut, vsi->rss_table_size);
 	if (err)
 		goto out;
 
diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c
index 4bb68e7a00f5..6a9278487ccb 100644
--- a/drivers/net/ethernet/intel/ice/ice_main.c
+++ b/drivers/net/ethernet/intel/ice/ice_main.c
@@ -7988,6 +7988,34 @@ int ice_get_rss_key(struct ice_vsi *vsi, u8 *seed)
 	return status;
 }
 
+/**
+ * ice_get_rss - Get RSS LUT and/or key
+ * @vsi: Pointer to VSI structure
+ * @seed: Buffer to store the key in
+ * @lut: Buffer to store the lookup table entries
+ * @lut_size: Size of buffer to store the lookup table entries
+ *
+ * Return: 0 on success, negative on failure
+ */
+int ice_get_rss(struct ice_vsi *vsi, u8 *seed, u8 *lut, u16 lut_size)
+{
+	int err;
+
+	if (seed) {
+		err = ice_get_rss_key(vsi, seed);
+		if (err)
+			return err;
+	}
+
+	if (lut) {
+		err = ice_get_rss_lut(vsi, lut, lut_size);
+		if (err)
+			return err;
+	}
+
+	return 0;
+}
+
 /**
  * ice_set_rss_hfunc - Set RSS HASH function
  * @vsi: Pointer to VSI structure
-- 
2.47.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH net 2/4] ice: add missing ice_deinit_hw() in devlink reinit path
  2026-01-20 22:44 [PATCH net 0/4][pull request] Intel Wired LAN Driver Updates 2026-01-20 (ice, idpf) Tony Nguyen
  2026-01-20 22:44 ` [PATCH net 1/4] ice: Fix persistent failure in ice_get_rxfh Tony Nguyen
@ 2026-01-20 22:44 ` Tony Nguyen
  2026-01-20 22:44 ` [PATCH net 3/4] ice: fix devlink reload call trace Tony Nguyen
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 7+ messages in thread
From: Tony Nguyen @ 2026-01-20 22:44 UTC (permalink / raw)
  To: davem, kuba, pabeni, edumazet, andrew+netdev, netdev
  Cc: Paul Greenwalt, anthony.l.nguyen, Aleksandr Loktionov,
	Przemek Kitszel, Paul Menzel, Rinitha S

From: Paul Greenwalt <paul.greenwalt@intel.com>

devlink-reload results in ice_init_hw failed error, and then removing
the ice driver causes a NULL pointer dereference.

[  +0.102213] ice 0000:ca:00.0: ice_init_hw failed: -16
...
[  +0.000001] Call Trace:
[  +0.000003]  <TASK>
[  +0.000006]  ice_unload+0x8f/0x100 [ice]
[  +0.000081]  ice_remove+0xba/0x300 [ice]

Commit 1390b8b3d2be ("ice: remove duplicate call to ice_deinit_hw() on
error paths") removed ice_deinit_hw() from ice_deinit_dev(). As a result
ice_devlink_reinit_down() no longer calls ice_deinit_hw(), but
ice_devlink_reinit_up() still calls ice_init_hw(). Since the control
queues are not uninitialized, ice_init_hw() fails with -EBUSY.

Add ice_deinit_hw() to ice_devlink_reinit_down() to correspond with
ice_init_hw() in ice_devlink_reinit_up().

Fixes: 1390b8b3d2be ("ice: remove duplicate call to ice_deinit_hw() on error paths")
Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
Signed-off-by: Paul Greenwalt <paul.greenwalt@intel.com>
Reviewed-by: Paul Menzel <pmenzel@molgen.mpg.de>
Tested-by: Rinitha S <sx.rinitha@intel.com> (A Contingent worker at Intel)
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
---
 drivers/net/ethernet/intel/ice/devlink/devlink.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/net/ethernet/intel/ice/devlink/devlink.c b/drivers/net/ethernet/intel/ice/devlink/devlink.c
index d88b7f3fd1f9..2ef39cc70c21 100644
--- a/drivers/net/ethernet/intel/ice/devlink/devlink.c
+++ b/drivers/net/ethernet/intel/ice/devlink/devlink.c
@@ -460,6 +460,7 @@ static void ice_devlink_reinit_down(struct ice_pf *pf)
 	ice_vsi_decfg(ice_get_main_vsi(pf));
 	rtnl_unlock();
 	ice_deinit_pf(pf);
+	ice_deinit_hw(&pf->hw);
 	ice_deinit_dev(pf);
 }
 
-- 
2.47.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH net 3/4] ice: fix devlink reload call trace
  2026-01-20 22:44 [PATCH net 0/4][pull request] Intel Wired LAN Driver Updates 2026-01-20 (ice, idpf) Tony Nguyen
  2026-01-20 22:44 ` [PATCH net 1/4] ice: Fix persistent failure in ice_get_rxfh Tony Nguyen
  2026-01-20 22:44 ` [PATCH net 2/4] ice: add missing ice_deinit_hw() in devlink reinit path Tony Nguyen
@ 2026-01-20 22:44 ` Tony Nguyen
  2026-01-20 22:44 ` [PATCH net 4/4] idpf: read lower clock bits inside the time sandwich Tony Nguyen
  2026-01-22  4:00 ` [PATCH net 0/4][pull request] Intel Wired LAN Driver Updates 2026-01-20 (ice, idpf) patchwork-bot+netdevbpf
  4 siblings, 0 replies; 7+ messages in thread
From: Tony Nguyen @ 2026-01-20 22:44 UTC (permalink / raw)
  To: davem, kuba, pabeni, edumazet, andrew+netdev, netdev
  Cc: Paul Greenwalt, anthony.l.nguyen, Aleksandr Loktionov,
	Paul Menzel, Rinitha S

From: Paul Greenwalt <paul.greenwalt@intel.com>

Commit 4da71a77fc3b ("ice: read internal temperature sensor") introduced
internal temperature sensor reading via HWMON. ice_hwmon_init() was added
to ice_init_feature() and ice_hwmon_exit() was added to ice_remove(). As a
result if devlink reload is used to reinit the device and then the driver
is removed, a call trace can occur.

BUG: unable to handle page fault for address: ffffffffc0fd4b5d
Call Trace:
 string+0x48/0xe0
 vsnprintf+0x1f9/0x650
 sprintf+0x62/0x80
 name_show+0x1f/0x30
 dev_attr_show+0x19/0x60

The call trace repeats approximately every 10 minutes when system
monitoring tools (e.g., sadc) attempt to read the orphaned hwmon sysfs
attributes that reference freed module memory.

The sequence is:
1. Driver load, ice_hwmon_init() gets called from ice_init_feature()
2. Devlink reload down, flow does not call ice_remove()
3. Devlink reload up, ice_hwmon_init() gets called from
   ice_init_feature() resulting in a second instance
4. Driver unload, ice_hwmon_exit() called from ice_remove() leaving the
   first hwmon instance orphaned with dangling pointer

Fix this by moving ice_hwmon_exit() from ice_remove() to
ice_deinit_features() to ensure proper cleanup symmetry with
ice_hwmon_init().

Fixes: 4da71a77fc3b ("ice: read internal temperature sensor")
Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
Signed-off-by: Paul Greenwalt <paul.greenwalt@intel.com>
Reviewed-by: Paul Menzel <pmenzel@molgen.mpg.de>
Tested-by: Rinitha S <sx.rinitha@intel.com> (A Contingent worker at Intel)
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
---
 drivers/net/ethernet/intel/ice/ice_main.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c
index 6a9278487ccb..de488185cd4a 100644
--- a/drivers/net/ethernet/intel/ice/ice_main.c
+++ b/drivers/net/ethernet/intel/ice/ice_main.c
@@ -4836,6 +4836,7 @@ static void ice_deinit_features(struct ice_pf *pf)
 		ice_dpll_deinit(pf);
 	if (pf->eswitch_mode == DEVLINK_ESWITCH_MODE_SWITCHDEV)
 		xa_destroy(&pf->eswitch.reprs);
+	ice_hwmon_exit(pf);
 }
 
 static void ice_init_wakeup(struct ice_pf *pf)
@@ -5437,8 +5438,6 @@ static void ice_remove(struct pci_dev *pdev)
 		ice_free_vfs(pf);
 	}
 
-	ice_hwmon_exit(pf);
-
 	if (!ice_is_safe_mode(pf))
 		ice_remove_arfs(pf);
 
-- 
2.47.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH net 4/4] idpf: read lower clock bits inside the time sandwich
  2026-01-20 22:44 [PATCH net 0/4][pull request] Intel Wired LAN Driver Updates 2026-01-20 (ice, idpf) Tony Nguyen
                   ` (2 preceding siblings ...)
  2026-01-20 22:44 ` [PATCH net 3/4] ice: fix devlink reload call trace Tony Nguyen
@ 2026-01-20 22:44 ` Tony Nguyen
  2026-01-23 23:48   ` Keller, Jacob E
  2026-01-22  4:00 ` [PATCH net 0/4][pull request] Intel Wired LAN Driver Updates 2026-01-20 (ice, idpf) patchwork-bot+netdevbpf
  4 siblings, 1 reply; 7+ messages in thread
From: Tony Nguyen @ 2026-01-20 22:44 UTC (permalink / raw)
  To: davem, kuba, pabeni, edumazet, andrew+netdev, netdev
  Cc: Mina Almasry, anthony.l.nguyen, richardcochran, lrizzo,
	namangulati, willemb, intel-wired-lan, milena.olech,
	jacob.e.keller, Shachar Raindel, Aleksandr Loktionov,
	Samuel Salin

From: Mina Almasry <almasrymina@google.com>

PCIe reads need to be done inside the time sandwich because PCIe
writes may get buffered in the PCIe fabric and posted to the device
after the _postts completes. Doing the PCIe read inside the time
sandwich guarantees that the write gets flushed before the _postts
timestamp is taken.

Cc: lrizzo@google.com
Cc: namangulati@google.com
Cc: willemb@google.com
Cc: intel-wired-lan@lists.osuosl.org
Cc: milena.olech@intel.com
Cc: jacob.e.keller@intel.com

Fixes: 5cb8805d2366 ("idpf: negotiate PTP capabilities and get PTP clock")
Suggested-by: Shachar Raindel <shacharr@google.com>
Signed-off-by: Mina Almasry <almasrymina@google.com>
Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
Tested-by: Samuel Salin <Samuel.salin@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
---
 drivers/net/ethernet/intel/idpf/idpf_ptp.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/intel/idpf/idpf_ptp.c b/drivers/net/ethernet/intel/idpf/idpf_ptp.c
index 3e1052d070cf..0a8b50350b86 100644
--- a/drivers/net/ethernet/intel/idpf/idpf_ptp.c
+++ b/drivers/net/ethernet/intel/idpf/idpf_ptp.c
@@ -108,11 +108,11 @@ static u64 idpf_ptp_read_src_clk_reg_direct(struct idpf_adapter *adapter,
 	ptp_read_system_prets(sts);
 
 	idpf_ptp_enable_shtime(adapter);
+	lo = readl(ptp->dev_clk_regs.dev_clk_ns_l);
 
 	/* Read the system timestamp post PHC read */
 	ptp_read_system_postts(sts);
 
-	lo = readl(ptp->dev_clk_regs.dev_clk_ns_l);
 	hi = readl(ptp->dev_clk_regs.dev_clk_ns_h);
 
 	spin_unlock(&ptp->read_dev_clk_lock);
-- 
2.47.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH net 0/4][pull request] Intel Wired LAN Driver Updates 2026-01-20 (ice, idpf)
  2026-01-20 22:44 [PATCH net 0/4][pull request] Intel Wired LAN Driver Updates 2026-01-20 (ice, idpf) Tony Nguyen
                   ` (3 preceding siblings ...)
  2026-01-20 22:44 ` [PATCH net 4/4] idpf: read lower clock bits inside the time sandwich Tony Nguyen
@ 2026-01-22  4:00 ` patchwork-bot+netdevbpf
  4 siblings, 0 replies; 7+ messages in thread
From: patchwork-bot+netdevbpf @ 2026-01-22  4:00 UTC (permalink / raw)
  To: Tony Nguyen; +Cc: davem, kuba, pabeni, edumazet, andrew+netdev, netdev

Hello:

This series was applied to netdev/net.git (main)
by Tony Nguyen <anthony.l.nguyen@intel.com>:

On Tue, 20 Jan 2026 14:44:24 -0800 you wrote:
> For ice:
> Cody Haas breaks dependency of needing both RSS key and LUT for
> ice_get_rxfh() as ethtool ioctls do not always supply both.
> 
> Paul fixes issues related to devlink reload; adding missing deinit HW
> call and moving hwmon exit function to the proper call chain.
> 
> [...]

Here is the summary with links:
  - [net,1/4] ice: Fix persistent failure in ice_get_rxfh
    https://git.kernel.org/netdev/net/c/f406220eb8e2
  - [net,2/4] ice: add missing ice_deinit_hw() in devlink reinit path
    https://git.kernel.org/netdev/net/c/42fb5f3deb58
  - [net,3/4] ice: fix devlink reload call trace
    https://git.kernel.org/netdev/net/c/d3f867e7a046
  - [net,4/4] idpf: read lower clock bits inside the time sandwich
    https://git.kernel.org/netdev/net/c/bdfc7b55adcd

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



^ permalink raw reply	[flat|nested] 7+ messages in thread

* RE: [PATCH net 4/4] idpf: read lower clock bits inside the time sandwich
  2026-01-20 22:44 ` [PATCH net 4/4] idpf: read lower clock bits inside the time sandwich Tony Nguyen
@ 2026-01-23 23:48   ` Keller, Jacob E
  0 siblings, 0 replies; 7+ messages in thread
From: Keller, Jacob E @ 2026-01-23 23:48 UTC (permalink / raw)
  To: Nguyen, Anthony L, davem@davemloft.net, kuba@kernel.org,
	pabeni@redhat.com, edumazet@google.com, andrew+netdev@lunn.ch,
	netdev@vger.kernel.org
  Cc: Mina Almasry, richardcochran@gmail.com, lrizzo@google.com,
	namangulati@google.com, willemb@google.com,
	intel-wired-lan@lists.osuosl.org, Olech, Milena, Shachar Raindel,
	Loktionov, Aleksandr, Salin, Samuel



> -----Original Message-----
> From: Nguyen, Anthony L <anthony.l.nguyen@intel.com>
> Sent: Tuesday, January 20, 2026 2:44 PM
> To: davem@davemloft.net; kuba@kernel.org; pabeni@redhat.com;
> edumazet@google.com; andrew+netdev@lunn.ch; netdev@vger.kernel.org
> Cc: Mina Almasry <almasrymina@google.com>; Nguyen, Anthony L
> <anthony.l.nguyen@intel.com>; richardcochran@gmail.com;
> lrizzo@google.com; namangulati@google.com; willemb@google.com; intel-
> wired-lan@lists.osuosl.org; Olech, Milena <milena.olech@intel.com>; Keller,
> Jacob E <jacob.e.keller@intel.com>; Shachar Raindel <shacharr@google.com>;
> Loktionov, Aleksandr <aleksandr.loktionov@intel.com>; Salin, Samuel
> <samuel.salin@intel.com>
> Subject: [PATCH net 4/4] idpf: read lower clock bits inside the time sandwich
> 
> From: Mina Almasry <almasrymina@google.com>
> 
> PCIe reads need to be done inside the time sandwich because PCIe
> writes may get buffered in the PCIe fabric and posted to the device
> after the _postts completes. Doing the PCIe read inside the time
> sandwich guarantees that the write gets flushed before the _postts
> timestamp is taken.
> 
> Cc: lrizzo@google.com
> Cc: namangulati@google.com
> Cc: willemb@google.com
> Cc: intel-wired-lan@lists.osuosl.org
> Cc: milena.olech@intel.com
> Cc: jacob.e.keller@intel.com
> 
> Fixes: 5cb8805d2366 ("idpf: negotiate PTP capabilities and get PTP clock")
> Suggested-by: Shachar Raindel <shacharr@google.com>
> Signed-off-by: Mina Almasry <almasrymina@google.com>
> Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
> Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
> Tested-by: Samuel Salin <Samuel.salin@intel.com>
> Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
> ---
>  drivers/net/ethernet/intel/idpf/idpf_ptp.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/net/ethernet/intel/idpf/idpf_ptp.c
> b/drivers/net/ethernet/intel/idpf/idpf_ptp.c
> index 3e1052d070cf..0a8b50350b86 100644
> --- a/drivers/net/ethernet/intel/idpf/idpf_ptp.c
> +++ b/drivers/net/ethernet/intel/idpf/idpf_ptp.c
> @@ -108,11 +108,11 @@ static u64 idpf_ptp_read_src_clk_reg_direct(struct
> idpf_adapter *adapter,
>  	ptp_read_system_prets(sts);
> 
>  	idpf_ptp_enable_shtime(adapter);

I thought idpf_ptp_enable_shtime did a snapshot of the system time, but perhaps it didn't get flushed until after a read...

> +	lo = readl(ptp->dev_clk_regs.dev_clk_ns_l);
> 

In that case, doing this read makes sense, as it would trigger a flush to ensure that we have flushed the timestamp snapshot. There's no reason to use something like idpf_flush() here because we're already going to do an important read anyways.

Acked-by: Jacob Keller <Jacob.e.keller@intel.com>

>  	/* Read the system timestamp post PHC read */
>  	ptp_read_system_postts(sts);
> 
> -	lo = readl(ptp->dev_clk_regs.dev_clk_ns_l);
>  	hi = readl(ptp->dev_clk_regs.dev_clk_ns_h);
> 
>  	spin_unlock(&ptp->read_dev_clk_lock);
> --
> 2.47.1


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2026-01-23 23:48 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-01-20 22:44 [PATCH net 0/4][pull request] Intel Wired LAN Driver Updates 2026-01-20 (ice, idpf) Tony Nguyen
2026-01-20 22:44 ` [PATCH net 1/4] ice: Fix persistent failure in ice_get_rxfh Tony Nguyen
2026-01-20 22:44 ` [PATCH net 2/4] ice: add missing ice_deinit_hw() in devlink reinit path Tony Nguyen
2026-01-20 22:44 ` [PATCH net 3/4] ice: fix devlink reload call trace Tony Nguyen
2026-01-20 22:44 ` [PATCH net 4/4] idpf: read lower clock bits inside the time sandwich Tony Nguyen
2026-01-23 23:48   ` Keller, Jacob E
2026-01-22  4:00 ` [PATCH net 0/4][pull request] Intel Wired LAN Driver Updates 2026-01-20 (ice, idpf) patchwork-bot+netdevbpf

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox