* [Intel-wired-lan] [PATCH iwl-net v1 0/5] igc: PTM timeout fix
@ 2024-08-07 0:30 christopher.s.hall
2024-08-07 0:30 ` [Intel-wired-lan] [PATCH iwl-net v1 1/5] igc: Ensure the PTM cycle is reliably triggered christopher.s.hall
` (5 more replies)
0 siblings, 6 replies; 15+ messages in thread
From: christopher.s.hall @ 2024-08-07 0:30 UTC (permalink / raw)
To: intel-wired-lan
Cc: Christopher S M Hall, david.zage, vinschen, vinicius.gomes,
netdev, rodrigo.cadore
From: Christopher S M Hall <christopher.s.hall@intel.com>
There have been sporadic reports of PTM timeouts using i225/i226 devices
These timeouts have been root caused to:
1) Manipulating the PTM status register while PTM is enabled and triggered
2) The hardware retrying too quickly when an inappropriate response is
received from the upstream device
The issue can be reproduced with the following:
$ sudo phc2sys -R 1000 -O 0 -i tsn0 -m
Note: 1000 Hz (-R 1000) is unrealistically large, but provides a way to
quickly reproduce the issue.
PHC2SYS exits with:
"ioctl PTP_OFFSET_PRECISE: Connection timed out" when the PTM transaction
fails
Christopher S M Hall (5):
igc: Ensure the PTM cycle is reliably triggered
igc: Lengthen the hardware retry time to prevent timeouts
igc: Move ktime snapshot into PTM retry loop
igc: Reduce retry count to a more reasonable number
igc: Add lock preventing multiple simultaneous PTM transactions
drivers/net/ethernet/intel/igc/igc.h | 1 +
drivers/net/ethernet/intel/igc/igc_defines.h | 3 +-
drivers/net/ethernet/intel/igc/igc_ptp.c | 100 +++++++++++--------
3 files changed, 63 insertions(+), 41 deletions(-)
--
2.34.1
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Intel-wired-lan] [PATCH iwl-net v1 1/5] igc: Ensure the PTM cycle is reliably triggered
2024-08-07 0:30 [Intel-wired-lan] [PATCH iwl-net v1 0/5] igc: PTM timeout fix christopher.s.hall
@ 2024-08-07 0:30 ` christopher.s.hall
2024-08-07 5:05 ` Paul Menzel
2024-08-07 16:15 ` Corinna Vinschen
2024-08-07 0:30 ` [Intel-wired-lan] [PATCH iwl-net v1 2/5] igc: Lengthen the hardware retry time to prevent timeouts christopher.s.hall
` (4 subsequent siblings)
5 siblings, 2 replies; 15+ messages in thread
From: christopher.s.hall @ 2024-08-07 0:30 UTC (permalink / raw)
To: intel-wired-lan
Cc: Christopher S M Hall, david.zage, vinschen, vinicius.gomes,
netdev, Michal Swiatkowski, rodrigo.cadore
From: Christopher S M Hall <christopher.s.hall@intel.com>
Writing to clear the PTM status 'valid' bit while the PTM cycle is
triggered results in unreliable PTM operation. To fix this, clear the
PTM 'trigger' and status after each PTM transaction.
The issue can be reproduced with the following:
$ sudo phc2sys -R 1000 -O 0 -i tsn0 -m
Note: 1000 Hz (-R 1000) is unrealistically large, but provides a way to
quickly reproduce the issue.
PHC2SYS exits with:
"ioctl PTP_OFFSET_PRECISE: Connection timed out" when the PTM transaction
fails
Fixes: a90ec8483732 ("igc: Add support for PTP getcrosststamp()")
Signed-off-by: Christopher S M Hall <christopher.s.hall@intel.com>
Reviewed-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
---
drivers/net/ethernet/intel/igc/igc_defines.h | 1 +
drivers/net/ethernet/intel/igc/igc_ptp.c | 70 ++++++++++++--------
2 files changed, 42 insertions(+), 29 deletions(-)
diff --git a/drivers/net/ethernet/intel/igc/igc_defines.h b/drivers/net/ethernet/intel/igc/igc_defines.h
index 511384f3ec5c..ec191d26c650 100644
--- a/drivers/net/ethernet/intel/igc/igc_defines.h
+++ b/drivers/net/ethernet/intel/igc/igc_defines.h
@@ -583,6 +583,7 @@
#define IGC_PTM_STAT_T4M1_OVFL BIT(3) /* T4 minus T1 overflow */
#define IGC_PTM_STAT_ADJUST_1ST BIT(4) /* 1588 timer adjusted during 1st PTM cycle */
#define IGC_PTM_STAT_ADJUST_CYC BIT(5) /* 1588 timer adjusted during non-1st PTM cycle */
+#define IGC_PTM_STAT_ALL GENMASK(5, 0) /* Used to clear all status */
/* PCIe PTM Cycle Control */
#define IGC_PTM_CYCLE_CTRL_CYC_TIME(msec) ((msec) & 0x3ff) /* PTM Cycle Time (msec) */
diff --git a/drivers/net/ethernet/intel/igc/igc_ptp.c b/drivers/net/ethernet/intel/igc/igc_ptp.c
index 946edbad4302..00cc80d8d164 100644
--- a/drivers/net/ethernet/intel/igc/igc_ptp.c
+++ b/drivers/net/ethernet/intel/igc/igc_ptp.c
@@ -974,11 +974,38 @@ static void igc_ptm_log_error(struct igc_adapter *adapter, u32 ptm_stat)
}
}
+static void igc_ptm_trigger(struct igc_hw *hw)
+{
+ u32 ctrl;
+
+ /* To "manually" start the PTM cycle we need to set the
+ * trigger (TRIG) bit
+ */
+ ctrl = rd32(IGC_PTM_CTRL);
+ ctrl |= IGC_PTM_CTRL_TRIG;
+ wr32(IGC_PTM_CTRL, ctrl);
+ /* Perform flush after write to CTRL register otherwise
+ * transaction may not start
+ */
+ wrfl();
+}
+
+static void igc_ptm_reset(struct igc_hw *hw)
+{
+ u32 ctrl;
+
+ ctrl = rd32(IGC_PTM_CTRL);
+ ctrl &= ~IGC_PTM_CTRL_TRIG;
+ wr32(IGC_PTM_CTRL, ctrl);
+ /* Write to clear all status */
+ wr32(IGC_PTM_STAT, IGC_PTM_STAT_ALL);
+}
+
static int igc_phc_get_syncdevicetime(ktime_t *device,
struct system_counterval_t *system,
void *ctx)
{
- u32 stat, t2_curr_h, t2_curr_l, ctrl;
+ u32 stat, t2_curr_h, t2_curr_l;
struct igc_adapter *adapter = ctx;
struct igc_hw *hw = &adapter->hw;
int err, count = 100;
@@ -994,25 +1021,13 @@ static int igc_phc_get_syncdevicetime(ktime_t *device,
* are transitory. Repeating the process returns valid
* data eventually.
*/
-
- /* To "manually" start the PTM cycle we need to clear and
- * then set again the TRIG bit.
- */
- ctrl = rd32(IGC_PTM_CTRL);
- ctrl &= ~IGC_PTM_CTRL_TRIG;
- wr32(IGC_PTM_CTRL, ctrl);
- ctrl |= IGC_PTM_CTRL_TRIG;
- wr32(IGC_PTM_CTRL, ctrl);
-
- /* The cycle only starts "for real" when software notifies
- * that it has read the registers, this is done by setting
- * VALID bit.
- */
- wr32(IGC_PTM_STAT, IGC_PTM_STAT_VALID);
+ igc_ptm_trigger(hw);
err = readx_poll_timeout(rd32, IGC_PTM_STAT, stat,
stat, IGC_PTM_STAT_SLEEP,
IGC_PTM_STAT_TIMEOUT);
+ igc_ptm_reset(hw);
+
if (err < 0) {
netdev_err(adapter->netdev, "Timeout reading IGC_PTM_STAT register\n");
return err;
@@ -1021,15 +1036,7 @@ static int igc_phc_get_syncdevicetime(ktime_t *device,
if ((stat & IGC_PTM_STAT_VALID) == IGC_PTM_STAT_VALID)
break;
- if (stat & ~IGC_PTM_STAT_VALID) {
- /* An error occurred, log it. */
- igc_ptm_log_error(adapter, stat);
- /* The STAT register is write-1-to-clear (W1C),
- * so write the previous error status to clear it.
- */
- wr32(IGC_PTM_STAT, stat);
- continue;
- }
+ igc_ptm_log_error(adapter, stat);
} while (--count);
if (!count) {
@@ -1255,7 +1262,7 @@ void igc_ptp_stop(struct igc_adapter *adapter)
void igc_ptp_reset(struct igc_adapter *adapter)
{
struct igc_hw *hw = &adapter->hw;
- u32 cycle_ctrl, ctrl;
+ u32 cycle_ctrl, ctrl, stat;
unsigned long flags;
u32 timadj;
@@ -1290,14 +1297,19 @@ void igc_ptp_reset(struct igc_adapter *adapter)
ctrl = IGC_PTM_CTRL_EN |
IGC_PTM_CTRL_START_NOW |
IGC_PTM_CTRL_SHRT_CYC(IGC_PTM_SHORT_CYC_DEFAULT) |
- IGC_PTM_CTRL_PTM_TO(IGC_PTM_TIMEOUT_DEFAULT) |
- IGC_PTM_CTRL_TRIG;
+ IGC_PTM_CTRL_PTM_TO(IGC_PTM_TIMEOUT_DEFAULT);
wr32(IGC_PTM_CTRL, ctrl);
/* Force the first cycle to run. */
- wr32(IGC_PTM_STAT, IGC_PTM_STAT_VALID);
+ igc_ptm_trigger(hw);
+
+ if (readx_poll_timeout_atomic(rd32, IGC_PTM_STAT, stat,
+ stat, IGC_PTM_STAT_SLEEP,
+ IGC_PTM_STAT_TIMEOUT))
+ netdev_err(adapter->netdev, "Timeout reading IGC_PTM_STAT register\n");
+ igc_ptm_reset(hw);
break;
default:
/* No work to do. */
--
2.34.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [Intel-wired-lan] [PATCH iwl-net v1 2/5] igc: Lengthen the hardware retry time to prevent timeouts
2024-08-07 0:30 [Intel-wired-lan] [PATCH iwl-net v1 0/5] igc: PTM timeout fix christopher.s.hall
2024-08-07 0:30 ` [Intel-wired-lan] [PATCH iwl-net v1 1/5] igc: Ensure the PTM cycle is reliably triggered christopher.s.hall
@ 2024-08-07 0:30 ` christopher.s.hall
2024-08-08 14:54 ` Corinna Vinschen
2024-08-07 0:30 ` [Intel-wired-lan] [PATCH iwl-net v1 3/5] igc: Move ktime snapshot into PTM retry loop christopher.s.hall
` (3 subsequent siblings)
5 siblings, 1 reply; 15+ messages in thread
From: christopher.s.hall @ 2024-08-07 0:30 UTC (permalink / raw)
To: intel-wired-lan
Cc: Christopher S M Hall, david.zage, vinschen, vinicius.gomes,
netdev, rodrigo.cadore
From: Christopher S M Hall <christopher.s.hall@intel.com>
Lengthen the hardware retry timer to four microseconds.
The i225/i226 hardware retries if it receives an inappropriate response
from the upstream device. If the device retries too quickly, the root
port does not respond.
The issue can be reproduced with the following:
$ sudo phc2sys -R 1000 -O 0 -i tsn0 -m
Note: 1000 Hz (-R 1000) is unrealistically large, but provides a way to
quickly reproduce the issue.
PHC2SYS exits with:
"ioctl PTP_OFFSET_PRECISE: Connection timed out" when the PTM transaction
fails
Fixes: 6b8aa753a9f9 ("igc: Decrease PTM short interval from 10 us to 1 us")
Signed-off-by: Christopher S M Hall <christopher.s.hall@intel.com>
---
drivers/net/ethernet/intel/igc/igc_defines.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/intel/igc/igc_defines.h b/drivers/net/ethernet/intel/igc/igc_defines.h
index ec191d26c650..253327c23903 100644
--- a/drivers/net/ethernet/intel/igc/igc_defines.h
+++ b/drivers/net/ethernet/intel/igc/igc_defines.h
@@ -564,7 +564,7 @@
#define IGC_PTM_CTRL_SHRT_CYC(usec) (((usec) & 0x3f) << 2)
#define IGC_PTM_CTRL_PTM_TO(usec) (((usec) & 0xff) << 8)
-#define IGC_PTM_SHORT_CYC_DEFAULT 1 /* Default short cycle interval */
+#define IGC_PTM_SHORT_CYC_DEFAULT 4 /* Default short cycle interval */
#define IGC_PTM_CYC_TIME_DEFAULT 5 /* Default PTM cycle time */
#define IGC_PTM_TIMEOUT_DEFAULT 255 /* Default timeout for PTM errors */
--
2.34.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [Intel-wired-lan] [PATCH iwl-net v1 3/5] igc: Move ktime snapshot into PTM retry loop
2024-08-07 0:30 [Intel-wired-lan] [PATCH iwl-net v1 0/5] igc: PTM timeout fix christopher.s.hall
2024-08-07 0:30 ` [Intel-wired-lan] [PATCH iwl-net v1 1/5] igc: Ensure the PTM cycle is reliably triggered christopher.s.hall
2024-08-07 0:30 ` [Intel-wired-lan] [PATCH iwl-net v1 2/5] igc: Lengthen the hardware retry time to prevent timeouts christopher.s.hall
@ 2024-08-07 0:30 ` christopher.s.hall
2024-08-08 14:54 ` Corinna Vinschen
2024-08-07 0:30 ` [Intel-wired-lan] [PATCH iwl-net v1 4/5] igc: Reduce retry count to a more reasonable number christopher.s.hall
` (2 subsequent siblings)
5 siblings, 1 reply; 15+ messages in thread
From: christopher.s.hall @ 2024-08-07 0:30 UTC (permalink / raw)
To: intel-wired-lan
Cc: Christopher S M Hall, david.zage, vinschen, vinicius.gomes,
netdev, rodrigo.cadore
From: Christopher S M Hall <christopher.s.hall@intel.com>
Move ktime_get_snapshot() into the loop. If a retry does occur, a more
recent snapshot will result in a more accurate cross-timestamp.
Fixes: a90ec8483732 ("igc: Add support for PTP getcrosststamp()")
Signed-off-by: Christopher S M Hall <christopher.s.hall@intel.com>
---
drivers/net/ethernet/intel/igc/igc_ptp.c | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/drivers/net/ethernet/intel/igc/igc_ptp.c b/drivers/net/ethernet/intel/igc/igc_ptp.c
index 00cc80d8d164..fb885fcaa97c 100644
--- a/drivers/net/ethernet/intel/igc/igc_ptp.c
+++ b/drivers/net/ethernet/intel/igc/igc_ptp.c
@@ -1011,16 +1011,16 @@ static int igc_phc_get_syncdevicetime(ktime_t *device,
int err, count = 100;
ktime_t t1, t2_curr;
- /* Get a snapshot of system clocks to use as historic value. */
- ktime_get_snapshot(&adapter->snapshot);
-
+ /* Doing this in a loop because in the event of a
+ * badly timed (ha!) system clock adjustment, we may
+ * get PTM errors from the PCI root, but these errors
+ * are transitory. Repeating the process returns valid
+ * data eventually.
+ */
do {
- /* Doing this in a loop because in the event of a
- * badly timed (ha!) system clock adjustment, we may
- * get PTM errors from the PCI root, but these errors
- * are transitory. Repeating the process returns valid
- * data eventually.
- */
+ /* Get a snapshot of system clocks to use as historic value. */
+ ktime_get_snapshot(&adapter->snapshot);
+
igc_ptm_trigger(hw);
err = readx_poll_timeout(rd32, IGC_PTM_STAT, stat,
--
2.34.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [Intel-wired-lan] [PATCH iwl-net v1 4/5] igc: Reduce retry count to a more reasonable number
2024-08-07 0:30 [Intel-wired-lan] [PATCH iwl-net v1 0/5] igc: PTM timeout fix christopher.s.hall
` (2 preceding siblings ...)
2024-08-07 0:30 ` [Intel-wired-lan] [PATCH iwl-net v1 3/5] igc: Move ktime snapshot into PTM retry loop christopher.s.hall
@ 2024-08-07 0:30 ` christopher.s.hall
2024-08-07 5:28 ` Paul Menzel
2024-08-07 0:30 ` [Intel-wired-lan] [PATCH iwl-net v1 5/5] igc: Add lock preventing multiple simultaneous PTM transactions christopher.s.hall
2024-10-11 9:25 ` [Intel-wired-lan] [PATCH iwl-net v1 0/5] igc: PTM timeout fix Corinna Vinschen
5 siblings, 1 reply; 15+ messages in thread
From: christopher.s.hall @ 2024-08-07 0:30 UTC (permalink / raw)
To: intel-wired-lan
Cc: Christopher S M Hall, david.zage, vinschen, vinicius.gomes,
netdev, rodrigo.cadore
From: Christopher S M Hall <christopher.s.hall@intel.com>
Setting the retry count to 8x is more than sufficient. 100x is unreasonable
and would indicate broken hardware/firmware.
Fixes: a90ec8483732 ("igc: Add support for PTP getcrosststamp()")
Signed-off-by: Christopher S M Hall <christopher.s.hall@intel.com>
---
drivers/net/ethernet/intel/igc/igc_ptp.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/intel/igc/igc_ptp.c b/drivers/net/ethernet/intel/igc/igc_ptp.c
index fb885fcaa97c..f770e39650ef 100644
--- a/drivers/net/ethernet/intel/igc/igc_ptp.c
+++ b/drivers/net/ethernet/intel/igc/igc_ptp.c
@@ -1008,8 +1008,8 @@ static int igc_phc_get_syncdevicetime(ktime_t *device,
u32 stat, t2_curr_h, t2_curr_l;
struct igc_adapter *adapter = ctx;
struct igc_hw *hw = &adapter->hw;
- int err, count = 100;
ktime_t t1, t2_curr;
+ int err, count = 8;
/* Doing this in a loop because in the event of a
* badly timed (ha!) system clock adjustment, we may
--
2.34.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [Intel-wired-lan] [PATCH iwl-net v1 5/5] igc: Add lock preventing multiple simultaneous PTM transactions
2024-08-07 0:30 [Intel-wired-lan] [PATCH iwl-net v1 0/5] igc: PTM timeout fix christopher.s.hall
` (3 preceding siblings ...)
2024-08-07 0:30 ` [Intel-wired-lan] [PATCH iwl-net v1 4/5] igc: Reduce retry count to a more reasonable number christopher.s.hall
@ 2024-08-07 0:30 ` christopher.s.hall
2024-08-08 15:17 ` Corinna Vinschen
2024-10-11 9:25 ` [Intel-wired-lan] [PATCH iwl-net v1 0/5] igc: PTM timeout fix Corinna Vinschen
5 siblings, 1 reply; 15+ messages in thread
From: christopher.s.hall @ 2024-08-07 0:30 UTC (permalink / raw)
To: intel-wired-lan
Cc: Christopher S M Hall, david.zage, vinschen, vinicius.gomes,
netdev, rodrigo.cadore
From: Christopher S M Hall <christopher.s.hall@intel.com>
Add a mutex around the PTM transaction to prevent multiple transactors
Multiple processes try to initiate a PTM transaction, one or all may
fail. This can be reproduced by running two instances of the
following:
$ sudo phc2sys -O 0 -i tsn0 -m
PHC2SYS exits with:
"ioctl PTP_OFFSET_PRECISE: Connection timed out" when the PTM transaction
fails
Note: Normally two instance of PHC2SYS will not run, but one process
should not break another.
Fixes: a90ec8483732 ("igc: Add support for PTP getcrosststamp()")
Signed-off-by: Christopher S M Hall <christopher.s.hall@intel.com>
---
drivers/net/ethernet/intel/igc/igc.h | 1 +
drivers/net/ethernet/intel/igc/igc_ptp.c | 12 ++++++++++--
2 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/intel/igc/igc.h b/drivers/net/ethernet/intel/igc/igc.h
index c38b4d0f00ce..fbac02c79178 100644
--- a/drivers/net/ethernet/intel/igc/igc.h
+++ b/drivers/net/ethernet/intel/igc/igc.h
@@ -315,6 +315,7 @@ struct igc_adapter {
struct timespec64 prev_ptp_time; /* Pre-reset PTP clock */
ktime_t ptp_reset_start; /* Reset time in clock mono */
struct system_time_snapshot snapshot;
+ struct mutex ptm_lock; /* Only allow one PTM transaction at a time */
char fw_version[32];
diff --git a/drivers/net/ethernet/intel/igc/igc_ptp.c b/drivers/net/ethernet/intel/igc/igc_ptp.c
index f770e39650ef..c70a6393c210 100644
--- a/drivers/net/ethernet/intel/igc/igc_ptp.c
+++ b/drivers/net/ethernet/intel/igc/igc_ptp.c
@@ -1068,9 +1068,16 @@ static int igc_ptp_getcrosststamp(struct ptp_clock_info *ptp,
{
struct igc_adapter *adapter = container_of(ptp, struct igc_adapter,
ptp_caps);
+ int ret;
- return get_device_system_crosststamp(igc_phc_get_syncdevicetime,
- adapter, &adapter->snapshot, cts);
+ /* This blocks until any in progress PTM transactions complete */
+ mutex_lock(&adapter->ptm_lock);
+
+ ret = get_device_system_crosststamp(igc_phc_get_syncdevicetime,
+ adapter, &adapter->snapshot, cts);
+ mutex_unlock(&adapter->ptm_lock);
+
+ return ret;
}
static int igc_ptp_getcyclesx64(struct ptp_clock_info *ptp,
@@ -1302,6 +1309,7 @@ void igc_ptp_reset(struct igc_adapter *adapter)
wr32(IGC_PTM_CTRL, ctrl);
/* Force the first cycle to run. */
+ mutex_init(&adapter->ptm_lock);
igc_ptm_trigger(hw);
if (readx_poll_timeout_atomic(rd32, IGC_PTM_STAT, stat,
--
2.34.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [Intel-wired-lan] [PATCH iwl-net v1 1/5] igc: Ensure the PTM cycle is reliably triggered
2024-08-07 0:30 ` [Intel-wired-lan] [PATCH iwl-net v1 1/5] igc: Ensure the PTM cycle is reliably triggered christopher.s.hall
@ 2024-08-07 5:05 ` Paul Menzel
2024-08-07 16:15 ` Corinna Vinschen
1 sibling, 0 replies; 15+ messages in thread
From: Paul Menzel @ 2024-08-07 5:05 UTC (permalink / raw)
To: Christopher S M Hall
Cc: david.zage, vinschen, vinicius.gomes, netdev, intel-wired-lan,
Michal Swiatkowski, rodrigo.cadore
Dear Christopher,
Thank you for the patch.
Am 07.08.24 um 02:30 schrieb christopher.s.hall@intel.com:
> From: Christopher S M Hall <christopher.s.hall@intel.com>
>
> Writing to clear the PTM status 'valid' bit while the PTM cycle is
> triggered results in unreliable PTM operation. To fix this, clear the
> PTM 'trigger' and status after each PTM transaction.
I do not understand, why the *valid* bit is not needed anymore, and why
it’s the trigger bit seems to do the same task. It’d be great if you
elaborated.
Is that also documented in the dataheet?
> The issue can be reproduced with the following:
>
> $ sudo phc2sys -R 1000 -O 0 -i tsn0 -m
>
> Note: 1000 Hz (-R 1000) is unrealistically large, but provides a way to
> quickly reproduce the issue.
>
> PHC2SYS exits with:
>
> "ioctl PTP_OFFSET_PRECISE: Connection timed out" when the PTM transaction
> fails
>
> Fixes: a90ec8483732 ("igc: Add support for PTP getcrosststamp()")
> Signed-off-by: Christopher S M Hall <christopher.s.hall@intel.com>
> Reviewed-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
> ---
> drivers/net/ethernet/intel/igc/igc_defines.h | 1 +
> drivers/net/ethernet/intel/igc/igc_ptp.c | 70 ++++++++++++--------
> 2 files changed, 42 insertions(+), 29 deletions(-)
>
> diff --git a/drivers/net/ethernet/intel/igc/igc_defines.h b/drivers/net/ethernet/intel/igc/igc_defines.h
> index 511384f3ec5c..ec191d26c650 100644
> --- a/drivers/net/ethernet/intel/igc/igc_defines.h
> +++ b/drivers/net/ethernet/intel/igc/igc_defines.h
> @@ -583,6 +583,7 @@
> #define IGC_PTM_STAT_T4M1_OVFL BIT(3) /* T4 minus T1 overflow */
> #define IGC_PTM_STAT_ADJUST_1ST BIT(4) /* 1588 timer adjusted during 1st PTM cycle */
> #define IGC_PTM_STAT_ADJUST_CYC BIT(5) /* 1588 timer adjusted during non-1st PTM cycle */
> +#define IGC_PTM_STAT_ALL GENMASK(5, 0) /* Used to clear all status */
>
> /* PCIe PTM Cycle Control */
> #define IGC_PTM_CYCLE_CTRL_CYC_TIME(msec) ((msec) & 0x3ff) /* PTM Cycle Time (msec) */
> diff --git a/drivers/net/ethernet/intel/igc/igc_ptp.c b/drivers/net/ethernet/intel/igc/igc_ptp.c
> index 946edbad4302..00cc80d8d164 100644
> --- a/drivers/net/ethernet/intel/igc/igc_ptp.c
> +++ b/drivers/net/ethernet/intel/igc/igc_ptp.c
> @@ -974,11 +974,38 @@ static void igc_ptm_log_error(struct igc_adapter *adapter, u32 ptm_stat)
> }
> }
>
> +static void igc_ptm_trigger(struct igc_hw *hw)
> +{
> + u32 ctrl;
> +
> + /* To "manually" start the PTM cycle we need to set the
> + * trigger (TRIG) bit
> + */
> + ctrl = rd32(IGC_PTM_CTRL);
> + ctrl |= IGC_PTM_CTRL_TRIG;
> + wr32(IGC_PTM_CTRL, ctrl);
> + /* Perform flush after write to CTRL register otherwise
> + * transaction may not start
> + */
> + wrfl();
> +}
> +
> +static void igc_ptm_reset(struct igc_hw *hw)
> +{
> + u32 ctrl;
> +
> + ctrl = rd32(IGC_PTM_CTRL);
> + ctrl &= ~IGC_PTM_CTRL_TRIG;
> + wr32(IGC_PTM_CTRL, ctrl);
> + /* Write to clear all status */
> + wr32(IGC_PTM_STAT, IGC_PTM_STAT_ALL);
> +}
> +
> static int igc_phc_get_syncdevicetime(ktime_t *device,
> struct system_counterval_t *system,
> void *ctx)
> {
> - u32 stat, t2_curr_h, t2_curr_l, ctrl;
> + u32 stat, t2_curr_h, t2_curr_l;
> struct igc_adapter *adapter = ctx;
> struct igc_hw *hw = &adapter->hw;
> int err, count = 100;
> @@ -994,25 +1021,13 @@ static int igc_phc_get_syncdevicetime(ktime_t *device,
> * are transitory. Repeating the process returns valid
> * data eventually.
> */
> -
> - /* To "manually" start the PTM cycle we need to clear and
> - * then set again the TRIG bit.
> - */
> - ctrl = rd32(IGC_PTM_CTRL);
> - ctrl &= ~IGC_PTM_CTRL_TRIG;
> - wr32(IGC_PTM_CTRL, ctrl);
> - ctrl |= IGC_PTM_CTRL_TRIG;
> - wr32(IGC_PTM_CTRL, ctrl);
> -
> - /* The cycle only starts "for real" when software notifies
> - * that it has read the registers, this is done by setting
> - * VALID bit.
> - */
> - wr32(IGC_PTM_STAT, IGC_PTM_STAT_VALID);
> + igc_ptm_trigger(hw);
>
> err = readx_poll_timeout(rd32, IGC_PTM_STAT, stat,
> stat, IGC_PTM_STAT_SLEEP,
> IGC_PTM_STAT_TIMEOUT);
> + igc_ptm_reset(hw);
> +
> if (err < 0) {
> netdev_err(adapter->netdev, "Timeout reading IGC_PTM_STAT register\n");
> return err;
> @@ -1021,15 +1036,7 @@ static int igc_phc_get_syncdevicetime(ktime_t *device,
> if ((stat & IGC_PTM_STAT_VALID) == IGC_PTM_STAT_VALID)
> break;
>
> - if (stat & ~IGC_PTM_STAT_VALID) {
> - /* An error occurred, log it. */
> - igc_ptm_log_error(adapter, stat);
> - /* The STAT register is write-1-to-clear (W1C),
> - * so write the previous error status to clear it.
> - */
> - wr32(IGC_PTM_STAT, stat);
> - continue;
> - }
> + igc_ptm_log_error(adapter, stat);
Could this refactoring be a separate commit?
> } while (--count);
>
> if (!count) {
> @@ -1255,7 +1262,7 @@ void igc_ptp_stop(struct igc_adapter *adapter)
> void igc_ptp_reset(struct igc_adapter *adapter)
> {
> struct igc_hw *hw = &adapter->hw;
> - u32 cycle_ctrl, ctrl;
> + u32 cycle_ctrl, ctrl, stat;
> unsigned long flags;
> u32 timadj;
>
> @@ -1290,14 +1297,19 @@ void igc_ptp_reset(struct igc_adapter *adapter)
> ctrl = IGC_PTM_CTRL_EN |
> IGC_PTM_CTRL_START_NOW |
> IGC_PTM_CTRL_SHRT_CYC(IGC_PTM_SHORT_CYC_DEFAULT) |
> - IGC_PTM_CTRL_PTM_TO(IGC_PTM_TIMEOUT_DEFAULT) |
> - IGC_PTM_CTRL_TRIG;
> + IGC_PTM_CTRL_PTM_TO(IGC_PTM_TIMEOUT_DEFAULT);
>
> wr32(IGC_PTM_CTRL, ctrl);
>
> /* Force the first cycle to run. */
> - wr32(IGC_PTM_STAT, IGC_PTM_STAT_VALID);
> + igc_ptm_trigger(hw);
> +
> + if (readx_poll_timeout_atomic(rd32, IGC_PTM_STAT, stat,
> + stat, IGC_PTM_STAT_SLEEP,
> + IGC_PTM_STAT_TIMEOUT))
> + netdev_err(adapter->netdev, "Timeout reading IGC_PTM_STAT register\n");
I’d add the timeout value to the message.
>
> + igc_ptm_reset(hw);
> break;
> default:
> /* No work to do. */
Kind regards,
Paul
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Intel-wired-lan] [PATCH iwl-net v1 4/5] igc: Reduce retry count to a more reasonable number
2024-08-07 0:30 ` [Intel-wired-lan] [PATCH iwl-net v1 4/5] igc: Reduce retry count to a more reasonable number christopher.s.hall
@ 2024-08-07 5:28 ` Paul Menzel
0 siblings, 0 replies; 15+ messages in thread
From: Paul Menzel @ 2024-08-07 5:28 UTC (permalink / raw)
To: Christopher S M Hall
Cc: david.zage, vinschen, vinicius.gomes, netdev, intel-wired-lan,
rodrigo.cadore
Dear Christopher,
Thank you for your patch.
In the summary, I’d add specific values:
igc: Reduce retry count to from 100 to reasonable 8
Am 07.08.24 um 02:30 schrieb christopher.s.hall@intel.com:
> From: Christopher S M Hall <christopher.s.hall@intel.com>
>
> Setting the retry count to 8x is more than sufficient. 100x is unreasonable
> and would indicate broken hardware/firmware.
I’d remove the leading space.
Is using a 100 causing so much more delay and debugging an issue is harder?
> Fixes: a90ec8483732 ("igc: Add support for PTP getcrosststamp()")
> Signed-off-by: Christopher S M Hall <christopher.s.hall@intel.com>
> ---
> drivers/net/ethernet/intel/igc/igc_ptp.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/net/ethernet/intel/igc/igc_ptp.c b/drivers/net/ethernet/intel/igc/igc_ptp.c
> index fb885fcaa97c..f770e39650ef 100644
> --- a/drivers/net/ethernet/intel/igc/igc_ptp.c
> +++ b/drivers/net/ethernet/intel/igc/igc_ptp.c
> @@ -1008,8 +1008,8 @@ static int igc_phc_get_syncdevicetime(ktime_t *device,
> u32 stat, t2_curr_h, t2_curr_l;
> struct igc_adapter *adapter = ctx;
> struct igc_hw *hw = &adapter->hw;
> - int err, count = 100;
> ktime_t t1, t2_curr;
> + int err, count = 8;
Is there data available that no more than 8 retries were needed?
> /* Doing this in a loop because in the event of a
> * badly timed (ha!) system clock adjustment, we may
Kind regards,
Paul
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Intel-wired-lan] [PATCH iwl-net v1 1/5] igc: Ensure the PTM cycle is reliably triggered
2024-08-07 0:30 ` [Intel-wired-lan] [PATCH iwl-net v1 1/5] igc: Ensure the PTM cycle is reliably triggered christopher.s.hall
2024-08-07 5:05 ` Paul Menzel
@ 2024-08-07 16:15 ` Corinna Vinschen
2024-08-07 20:27 ` Hall, Christopher S
1 sibling, 1 reply; 15+ messages in thread
From: Corinna Vinschen @ 2024-08-07 16:15 UTC (permalink / raw)
To: christopher.s.hall
Cc: david.zage, vinicius.gomes, netdev, intel-wired-lan,
Michal Swiatkowski, rodrigo.cadore
Hi Christopher,
On Aug 6 17:30, christopher.s.hall@intel.com wrote:
> From: Christopher S M Hall <christopher.s.hall@intel.com>
>
> Writing to clear the PTM status 'valid' bit while the PTM cycle is
> triggered results in unreliable PTM operation. To fix this, clear the
> PTM 'trigger' and status after each PTM transaction.
>
> The issue can be reproduced with the following:
>
> $ sudo phc2sys -R 1000 -O 0 -i tsn0 -m
>
> Note: 1000 Hz (-R 1000) is unrealistically large, but provides a way to
> quickly reproduce the issue.
>
> PHC2SYS exits with:
>
> "ioctl PTP_OFFSET_PRECISE: Connection timed out" when the PTM transaction
> fails
It would be great to add the problems encountered with kdump to the
commit message as well, as discussed with Vinicius, wouldn't it?
If you need a description, I can provide one.
Thanks,
Corinna
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Intel-wired-lan] [PATCH iwl-net v1 1/5] igc: Ensure the PTM cycle is reliably triggered
2024-08-07 16:15 ` Corinna Vinschen
@ 2024-08-07 20:27 ` Hall, Christopher S
2024-08-08 14:50 ` Corinna Vinschen
0 siblings, 1 reply; 15+ messages in thread
From: Hall, Christopher S @ 2024-08-07 20:27 UTC (permalink / raw)
To: Vinschen, Corinna
Cc: Zage, David, Gomes, Vinicius, netdev@vger.kernel.org,
intel-wired-lan@lists.osuosl.org, Michal Swiatkowski,
rodrigo.cadore@l-acoustics.com
Hi Corrina,
> > PHC2SYS exits with:
> >
> > "ioctl PTP_OFFSET_PRECISE: Connection timed out" when the PTM
> transaction
> > fails
>
> It would be great to add the problems encountered with kdump to the
> commit message as well, as discussed with Vinicius, wouldn't it?
>
> If you need a description, I can provide one.
Does this patch fix the issue you observed? If it does, I am happy to
include your description of the problem it solves. A tested-by tag would
be appreciated as well.
Thanks,
Chris
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Intel-wired-lan] [PATCH iwl-net v1 1/5] igc: Ensure the PTM cycle is reliably triggered
2024-08-07 20:27 ` Hall, Christopher S
@ 2024-08-08 14:50 ` Corinna Vinschen
0 siblings, 0 replies; 15+ messages in thread
From: Corinna Vinschen @ 2024-08-08 14:50 UTC (permalink / raw)
To: Hall, Christopher S
Cc: Zage, David, Gomes, Vinicius, netdev@vger.kernel.org,
intel-wired-lan@lists.osuosl.org, Michal Swiatkowski,
rodrigo.cadore@l-acoustics.com
Hi Christopher,
On Aug 7 20:27, Hall, Christopher S wrote:
> Hi Corrina,
s/rrin/rinn/ ;)
> > > PHC2SYS exits with:
> > >
> > > "ioctl PTP_OFFSET_PRECISE: Connection timed out" when the PTM
> > transaction
> > > fails
> >
> > It would be great to add the problems encountered with kdump to the
> > commit message as well, as discussed with Vinicius, wouldn't it?
> >
> > If you need a description, I can provide one.
>
> Does this patch fix the issue you observed?
Yes, it does.
> If it does, I am happy to
> include your description of the problem it solves.
Is the following ok?
This patch also fixes a hang in igc_probe() when loading the igc
driver in the kdump kernel on systems supporting PTM.
The igc driver running in the base kernel enables PTM trigger in
igc_probe(). Therefore the driver is always in PTM trigger mode,
except in brief periods when manually triggering a PTM cycle.
When a crash occurs, the NIC is reset while PTM trigger is enabled.
Due to a hardware problem, the NIC is subsequently in a bad busmaster
state and doesn't handle register reads/writes. When running
igc_probe() in the kdump kernel, the first register access to a NIC
register hangs driver probing and ultimately breaks kdump.
With this patch, igc has PTM trigger disabled most of the time,
and the trigger is only enabled for very brief (10 - 100 us) periods
when manually triggering a PTM cycle. Chances that a crash occurs
during a PTM trigger are not 0, but extremly reduced.
> A tested-by tag would be appreciated as well.
Reviewed-by: Corinna Vinschen <vinschen@redhat.com>
Tested-by: Corinna Vinschen <vinschen@redhat.com> (kdump hang only)
Thanks,
Corinna
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Intel-wired-lan] [PATCH iwl-net v1 2/5] igc: Lengthen the hardware retry time to prevent timeouts
2024-08-07 0:30 ` [Intel-wired-lan] [PATCH iwl-net v1 2/5] igc: Lengthen the hardware retry time to prevent timeouts christopher.s.hall
@ 2024-08-08 14:54 ` Corinna Vinschen
0 siblings, 0 replies; 15+ messages in thread
From: Corinna Vinschen @ 2024-08-08 14:54 UTC (permalink / raw)
To: christopher.s.hall
Cc: vinicius.gomes, netdev, david.zage, rodrigo.cadore,
intel-wired-lan
On Aug 6 17:30, christopher.s.hall@intel.com wrote:
> From: Christopher S M Hall <christopher.s.hall@intel.com>
>
> Lengthen the hardware retry timer to four microseconds.
>
> The i225/i226 hardware retries if it receives an inappropriate response
> from the upstream device. If the device retries too quickly, the root
> port does not respond.
>
> The issue can be reproduced with the following:
>
> $ sudo phc2sys -R 1000 -O 0 -i tsn0 -m
>
> Note: 1000 Hz (-R 1000) is unrealistically large, but provides a way to
> quickly reproduce the issue.
>
> PHC2SYS exits with:
>
> "ioctl PTP_OFFSET_PRECISE: Connection timed out" when the PTM transaction
> fails
>
> Fixes: 6b8aa753a9f9 ("igc: Decrease PTM short interval from 10 us to 1 us")
> Signed-off-by: Christopher S M Hall <christopher.s.hall@intel.com>
> ---
> drivers/net/ethernet/intel/igc/igc_defines.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/net/ethernet/intel/igc/igc_defines.h b/drivers/net/ethernet/intel/igc/igc_defines.h
> index ec191d26c650..253327c23903 100644
> --- a/drivers/net/ethernet/intel/igc/igc_defines.h
> +++ b/drivers/net/ethernet/intel/igc/igc_defines.h
> @@ -564,7 +564,7 @@
> #define IGC_PTM_CTRL_SHRT_CYC(usec) (((usec) & 0x3f) << 2)
> #define IGC_PTM_CTRL_PTM_TO(usec) (((usec) & 0xff) << 8)
>
> -#define IGC_PTM_SHORT_CYC_DEFAULT 1 /* Default short cycle interval */
> +#define IGC_PTM_SHORT_CYC_DEFAULT 4 /* Default short cycle interval */
> #define IGC_PTM_CYC_TIME_DEFAULT 5 /* Default PTM cycle time */
> #define IGC_PTM_TIMEOUT_DEFAULT 255 /* Default timeout for PTM errors */
>
> --
> 2.34.1
Reviewed-by: Corinna Vinschen <vinschen@redhat.com>
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Intel-wired-lan] [PATCH iwl-net v1 3/5] igc: Move ktime snapshot into PTM retry loop
2024-08-07 0:30 ` [Intel-wired-lan] [PATCH iwl-net v1 3/5] igc: Move ktime snapshot into PTM retry loop christopher.s.hall
@ 2024-08-08 14:54 ` Corinna Vinschen
0 siblings, 0 replies; 15+ messages in thread
From: Corinna Vinschen @ 2024-08-08 14:54 UTC (permalink / raw)
To: christopher.s.hall
Cc: vinicius.gomes, netdev, david.zage, rodrigo.cadore,
intel-wired-lan
On Aug 6 17:30, christopher.s.hall@intel.com wrote:
> From: Christopher S M Hall <christopher.s.hall@intel.com>
>
> Move ktime_get_snapshot() into the loop. If a retry does occur, a more
> recent snapshot will result in a more accurate cross-timestamp.
>
> Fixes: a90ec8483732 ("igc: Add support for PTP getcrosststamp()")
> Signed-off-by: Christopher S M Hall <christopher.s.hall@intel.com>
> ---
> drivers/net/ethernet/intel/igc/igc_ptp.c | 18 +++++++++---------
> 1 file changed, 9 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/net/ethernet/intel/igc/igc_ptp.c b/drivers/net/ethernet/intel/igc/igc_ptp.c
> index 00cc80d8d164..fb885fcaa97c 100644
> --- a/drivers/net/ethernet/intel/igc/igc_ptp.c
> +++ b/drivers/net/ethernet/intel/igc/igc_ptp.c
> @@ -1011,16 +1011,16 @@ static int igc_phc_get_syncdevicetime(ktime_t *device,
> int err, count = 100;
> ktime_t t1, t2_curr;
>
> - /* Get a snapshot of system clocks to use as historic value. */
> - ktime_get_snapshot(&adapter->snapshot);
> -
> + /* Doing this in a loop because in the event of a
> + * badly timed (ha!) system clock adjustment, we may
> + * get PTM errors from the PCI root, but these errors
> + * are transitory. Repeating the process returns valid
> + * data eventually.
> + */
> do {
> - /* Doing this in a loop because in the event of a
> - * badly timed (ha!) system clock adjustment, we may
> - * get PTM errors from the PCI root, but these errors
> - * are transitory. Repeating the process returns valid
> - * data eventually.
> - */
> + /* Get a snapshot of system clocks to use as historic value. */
> + ktime_get_snapshot(&adapter->snapshot);
> +
> igc_ptm_trigger(hw);
>
> err = readx_poll_timeout(rd32, IGC_PTM_STAT, stat,
> --
> 2.34.1
Reviewed-by: Corinna Vinschen <vinschen@redhat.com>
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Intel-wired-lan] [PATCH iwl-net v1 5/5] igc: Add lock preventing multiple simultaneous PTM transactions
2024-08-07 0:30 ` [Intel-wired-lan] [PATCH iwl-net v1 5/5] igc: Add lock preventing multiple simultaneous PTM transactions christopher.s.hall
@ 2024-08-08 15:17 ` Corinna Vinschen
0 siblings, 0 replies; 15+ messages in thread
From: Corinna Vinschen @ 2024-08-08 15:17 UTC (permalink / raw)
To: christopher.s.hall
Cc: vinicius.gomes, netdev, david.zage, rodrigo.cadore,
intel-wired-lan
Hi Christopher,
On Aug 6 17:30, christopher.s.hall@intel.com wrote:
> From: Christopher S M Hall <christopher.s.hall@intel.com>
>
> Add a mutex around the PTM transaction to prevent multiple transactors
>
> Multiple processes try to initiate a PTM transaction, one or all may
> fail. This can be reproduced by running two instances of the
> following:
I saw a former version of the patch which additionally added a mutex
lock/unlock in igc_ptp_reset() just before calling igc_ptm_trigger().
Is it safe to skip that? igc_ptp_reset() is called from igc_reset()
which in turn is called from quite a few places.
Thanks,
Corinna
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Intel-wired-lan] [PATCH iwl-net v1 0/5] igc: PTM timeout fix
2024-08-07 0:30 [Intel-wired-lan] [PATCH iwl-net v1 0/5] igc: PTM timeout fix christopher.s.hall
` (4 preceding siblings ...)
2024-08-07 0:30 ` [Intel-wired-lan] [PATCH iwl-net v1 5/5] igc: Add lock preventing multiple simultaneous PTM transactions christopher.s.hall
@ 2024-10-11 9:25 ` Corinna Vinschen
5 siblings, 0 replies; 15+ messages in thread
From: Corinna Vinschen @ 2024-10-11 9:25 UTC (permalink / raw)
To: christopher.s.hall
Cc: vinicius.gomes, netdev, david.zage, rodrigo.cadore,
intel-wired-lan
Hi Christopher,
are you planning a followup to this patch series any tinme soon?
Thanks,
Corinna
On Aug 6 17:30, christopher.s.hall@intel.com wrote:
> From: Christopher S M Hall <christopher.s.hall@intel.com>
>
> There have been sporadic reports of PTM timeouts using i225/i226 devices
>
> These timeouts have been root caused to:
>
> 1) Manipulating the PTM status register while PTM is enabled and triggered
> 2) The hardware retrying too quickly when an inappropriate response is
> received from the upstream device
>
> The issue can be reproduced with the following:
>
> $ sudo phc2sys -R 1000 -O 0 -i tsn0 -m
>
> Note: 1000 Hz (-R 1000) is unrealistically large, but provides a way to
> quickly reproduce the issue.
>
> PHC2SYS exits with:
>
> "ioctl PTP_OFFSET_PRECISE: Connection timed out" when the PTM transaction
> fails
>
> Christopher S M Hall (5):
> igc: Ensure the PTM cycle is reliably triggered
> igc: Lengthen the hardware retry time to prevent timeouts
> igc: Move ktime snapshot into PTM retry loop
> igc: Reduce retry count to a more reasonable number
> igc: Add lock preventing multiple simultaneous PTM transactions
>
> drivers/net/ethernet/intel/igc/igc.h | 1 +
> drivers/net/ethernet/intel/igc/igc_defines.h | 3 +-
> drivers/net/ethernet/intel/igc/igc_ptp.c | 100 +++++++++++--------
> 3 files changed, 63 insertions(+), 41 deletions(-)
>
> --
> 2.34.1
^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2024-10-11 9:26 UTC | newest]
Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-08-07 0:30 [Intel-wired-lan] [PATCH iwl-net v1 0/5] igc: PTM timeout fix christopher.s.hall
2024-08-07 0:30 ` [Intel-wired-lan] [PATCH iwl-net v1 1/5] igc: Ensure the PTM cycle is reliably triggered christopher.s.hall
2024-08-07 5:05 ` Paul Menzel
2024-08-07 16:15 ` Corinna Vinschen
2024-08-07 20:27 ` Hall, Christopher S
2024-08-08 14:50 ` Corinna Vinschen
2024-08-07 0:30 ` [Intel-wired-lan] [PATCH iwl-net v1 2/5] igc: Lengthen the hardware retry time to prevent timeouts christopher.s.hall
2024-08-08 14:54 ` Corinna Vinschen
2024-08-07 0:30 ` [Intel-wired-lan] [PATCH iwl-net v1 3/5] igc: Move ktime snapshot into PTM retry loop christopher.s.hall
2024-08-08 14:54 ` Corinna Vinschen
2024-08-07 0:30 ` [Intel-wired-lan] [PATCH iwl-net v1 4/5] igc: Reduce retry count to a more reasonable number christopher.s.hall
2024-08-07 5:28 ` Paul Menzel
2024-08-07 0:30 ` [Intel-wired-lan] [PATCH iwl-net v1 5/5] igc: Add lock preventing multiple simultaneous PTM transactions christopher.s.hall
2024-08-08 15:17 ` Corinna Vinschen
2024-10-11 9:25 ` [Intel-wired-lan] [PATCH iwl-net v1 0/5] igc: PTM timeout fix Corinna Vinschen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox