diff mbox series

[iwl-net,v1,1/1] igc: Correct the short interval between PTM requests.

Message ID 20230717171927.78516-1-sasha.neftin@intel.com
State Changes Requested
Headers show
Series [iwl-net,v1,1/1] igc: Correct the short interval between PTM requests. | expand

Commit Message

Sasha Neftin July 17, 2023, 5:19 p.m. UTC
With the 10us interval, we were seeing PTM transactions taking around 12us.
With the 1us interval, PTM dialogs took around 2us. Checked with the PCIe
sniffer.

Fixes: a90ec8483732 ("igc: Add support for PTP getcrosststamp()")
Suggested-by: Vinicius Costa Gomes <vinicius.gomes@intel.com>
Signed-off-by: Sasha Neftin <sasha.neftin@intel.com>
---
 drivers/net/ethernet/intel/igc/igc_defines.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Paul Menzel July 17, 2023, 5:32 p.m. UTC | #1
[Cc: +linux-pci@vger.kernel.org]

Dear Sasha,


Thank you for your patch.

Maybe be more specific in the commit message summary. Maybe:

igc: Decrease PTM short interval from 10 us to 1 us

Am 17.07.23 um 19:19 schrieb Sasha Neftin:
> With the 10us interval, we were seeing PTM transactions taking around 12us.
> With the 1us interval, PTM dialogs took around 2us. Checked with the PCIe
> sniffer.

On what board, and with what device and what firmware versions?

> Fixes: a90ec8483732 ("igc: Add support for PTP getcrosststamp()")
> Suggested-by: Vinicius Costa Gomes <vinicius.gomes@intel.com>
> Signed-off-by: Sasha Neftin <sasha.neftin@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 44a507029946..c3722f524ea7 100644
> --- a/drivers/net/ethernet/intel/igc/igc_defines.h
> +++ b/drivers/net/ethernet/intel/igc/igc_defines.h
> @@ -549,7 +549,7 @@
>   #define IGC_PTM_CTRL_SHRT_CYC(usec)	(((usec) & 0x2f) << 2)
>   #define IGC_PTM_CTRL_PTM_TO(usec)	(((usec) & 0xff) << 8)
>   
> -#define IGC_PTM_SHORT_CYC_DEFAULT	10  /* Default Short/interrupted cycle interval */
> +#define IGC_PTM_SHORT_CYC_DEFAULT	1   /* Default short cycle interval */

Why is the comment updated?

>   #define IGC_PTM_CYC_TIME_DEFAULT	5   /* Default PTM cycle time */
>   #define IGC_PTM_TIMEOUT_DEFAULT		255 /* Default timeout for PTM errors */


Kind regards,

Paul
Sasha Neftin July 18, 2023, 4:15 p.m. UTC | #2
On 7/17/2023 20:32, Paul Menzel wrote:
> [Cc: +linux-pci@vger.kernel.org]
> 
> Dear Sasha,
> 
> 
> Thank you for your patch.
> 
> Maybe be more specific in the commit message summary. Maybe:
> 
> igc: Decrease PTM short interval from 10 us to 1 us

Good.

> 
> Am 17.07.23 um 19:19 schrieb Sasha Neftin:
>> With the 10us interval, we were seeing PTM transactions taking around 
>> 12us.
>> With the 1us interval, PTM dialogs took around 2us. Checked with the PCIe
>> sniffer.
> 
> On what board, and with what device and what firmware versions?

Any with the PTM support. HW feature and not dependent on the firmware.

> 
>> Fixes: a90ec8483732 ("igc: Add support for PTP getcrosststamp()")
>> Suggested-by: Vinicius Costa Gomes <vinicius.gomes@intel.com>
>> Signed-off-by: Sasha Neftin <sasha.neftin@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 44a507029946..c3722f524ea7 100644
>> --- a/drivers/net/ethernet/intel/igc/igc_defines.h
>> +++ b/drivers/net/ethernet/intel/igc/igc_defines.h
>> @@ -549,7 +549,7 @@
>>   #define IGC_PTM_CTRL_SHRT_CYC(usec)    (((usec) & 0x2f) << 2)
>>   #define IGC_PTM_CTRL_PTM_TO(usec)    (((usec) & 0xff) << 8)
>> -#define IGC_PTM_SHORT_CYC_DEFAULT    10  /* Default Short/interrupted 
>> cycle interval */
>> +#define IGC_PTM_SHORT_CYC_DEFAULT    1   /* Default short cycle 
>> interval */
> 
> Why is the comment updated?

Interval, not interrupt...

> 
>>   #define IGC_PTM_CYC_TIME_DEFAULT    5   /* Default PTM cycle time */
>>   #define IGC_PTM_TIMEOUT_DEFAULT        255 /* Default timeout for 
>> PTM errors */
> 
> 
> Kind regards,
> 
> Paul

Sasha
Bjorn Helgaas July 18, 2023, 4:45 p.m. UTC | #3
[+cc Paul, Vinicius, Kai-Heng, Guilherme]

On Mon, Jul 17, 2023 at 08:19:27PM +0300, Sasha Neftin wrote:
> With the 10us interval, we were seeing PTM transactions taking around 12us.
> With the 1us interval, PTM dialogs took around 2us. Checked with the PCIe
> sniffer.
> 
> Fixes: a90ec8483732 ("igc: Add support for PTP getcrosststamp()")
> Suggested-by: Vinicius Costa Gomes <vinicius.gomes@intel.com>
> Signed-off-by: Sasha Neftin <sasha.neftin@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 44a507029946..c3722f524ea7 100644
> --- a/drivers/net/ethernet/intel/igc/igc_defines.h
> +++ b/drivers/net/ethernet/intel/igc/igc_defines.h
> @@ -549,7 +549,7 @@
>  #define IGC_PTM_CTRL_SHRT_CYC(usec)	(((usec) & 0x2f) << 2)
>  #define IGC_PTM_CTRL_PTM_TO(usec)	(((usec) & 0xff) << 8)
>  
> -#define IGC_PTM_SHORT_CYC_DEFAULT	10  /* Default Short/interrupted cycle interval */
> +#define IGC_PTM_SHORT_CYC_DEFAULT	1   /* Default short cycle interval */

Not related to *this* patch, but from looking at igc_ptp_reset(),
where IGC_PTM_SHORT_CYC_DEFAULT is used,

  /* PCIe PTM Control */
  #define IGC_PTM_CTRL_START_NOW  BIT(29) /* Start PTM Now */
  #define IGC_PTM_CTRL_EN         BIT(30) /* Enable PTM */

  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;

  wr32(IGC_PTM_CTRL, ctrl);

Obviously this must be implementation-specific PTM configuration,
which is fine.  But I assume even though this sets IGC_PTM_CTRL_EN and
IGC_PTM_CTRL_START_NOW, the device will not actually send PTM Request
messages unless the architected PTM Enable bit in the PTM Capability
is set (PCIe r6.0, sec 7.9.15.3).  Right?

I'm asking because Kai-Heng has been working on issues where
Unsupported Request errors are reported because some devices seem to
send PTM Requests when we don't think they should.  See
https://lore.kernel.org/r/20230714050541.2765246-1-kai.heng.feng@canonical.com

>  #define IGC_PTM_CYC_TIME_DEFAULT	5   /* Default PTM cycle time */
>  #define IGC_PTM_TIMEOUT_DEFAULT		255 /* Default timeout for PTM errors */
Sasha Neftin July 18, 2023, 5:10 p.m. UTC | #4
On 7/18/2023 19:45, Bjorn Helgaas wrote:
> [+cc Paul, Vinicius, Kai-Heng, Guilherme]
> 
> On Mon, Jul 17, 2023 at 08:19:27PM +0300, Sasha Neftin wrote:
>> With the 10us interval, we were seeing PTM transactions taking around 12us.
>> With the 1us interval, PTM dialogs took around 2us. Checked with the PCIe
>> sniffer.
>>
>> Fixes: a90ec8483732 ("igc: Add support for PTP getcrosststamp()")
>> Suggested-by: Vinicius Costa Gomes <vinicius.gomes@intel.com>
>> Signed-off-by: Sasha Neftin <sasha.neftin@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 44a507029946..c3722f524ea7 100644
>> --- a/drivers/net/ethernet/intel/igc/igc_defines.h
>> +++ b/drivers/net/ethernet/intel/igc/igc_defines.h
>> @@ -549,7 +549,7 @@
>>   #define IGC_PTM_CTRL_SHRT_CYC(usec)	(((usec) & 0x2f) << 2)
>>   #define IGC_PTM_CTRL_PTM_TO(usec)	(((usec) & 0xff) << 8)
>>   
>> -#define IGC_PTM_SHORT_CYC_DEFAULT	10  /* Default Short/interrupted cycle interval */
>> +#define IGC_PTM_SHORT_CYC_DEFAULT	1   /* Default short cycle interval */
> 
> Not related to *this* patch, but from looking at igc_ptp_reset(),
> where IGC_PTM_SHORT_CYC_DEFAULT is used,
> 
>    /* PCIe PTM Control */
>    #define IGC_PTM_CTRL_START_NOW  BIT(29) /* Start PTM Now */
>    #define IGC_PTM_CTRL_EN         BIT(30) /* Enable PTM */
> 
>    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;
> 
>    wr32(IGC_PTM_CTRL, ctrl);
> 
> Obviously this must be implementation-specific PTM configuration,
> which is fine.  But I assume even though this sets IGC_PTM_CTRL_EN and
> IGC_PTM_CTRL_START_NOW, the device will not actually send PTM Request
> messages unless the architected PTM Enable bit in the PTM Capability
> is set (PCIe r6.0, sec 7.9.15.3).  Right?

Right.

> 
> I'm asking because Kai-Heng has been working on issues where
> Unsupported Request errors are reported because some devices seem to
> send PTM Requests when we don't think they should.  See
> https://lore.kernel.org/r/20230714050541.2765246-1-kai.heng.feng@canonical.com

I know. This is a different problem. (I can not reproduce, we will try 
to get HP dock). We will think how to help here.

> 
>>   #define IGC_PTM_CYC_TIME_DEFAULT	5   /* Default PTM cycle time */
>>   #define IGC_PTM_TIMEOUT_DEFAULT		255 /* Default timeout for PTM errors */
Paul Menzel July 18, 2023, 10:37 p.m. UTC | #5
[Cc: +Vinicius]

Dear Sasha,


Am 18.07.23 um 18:15 schrieb Neftin, Sasha:
> On 7/17/2023 20:32, Paul Menzel wrote:
>> [Cc: +linux-pci@vger.kernel.org]

[…]

>> Maybe be more specific in the commit message summary. Maybe:
>>
>> igc: Decrease PTM short interval from 10 us to 1 us
> 
> Good.
> 
>> Am 17.07.23 um 19:19 schrieb Sasha Neftin:
>>> With the 10us interval, we were seeing PTM transactions taking around 12us.
>>> With the 1us interval, PTM dialogs took around 2us. Checked with the
>>> PCIe sniffer.
>>
>> On what board, and with what device and what firmware versions?
> 
> Any with the PTM support. HW feature and not dependent on the firmware.

Still you tested it. It’s always beneficial to at least denote one of 
the systems with all the details. Especially as it shouldn’t cost you 
more than a minute to add these details.

>>> Fixes: a90ec8483732 ("igc: Add support for PTP getcrosststamp()")
>>> Suggested-by: Vinicius Costa Gomes <vinicius.gomes@intel.com>
>>> Signed-off-by: Sasha Neftin <sasha.neftin@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 44a507029946..c3722f524ea7 100644
>>> --- a/drivers/net/ethernet/intel/igc/igc_defines.h
>>> +++ b/drivers/net/ethernet/intel/igc/igc_defines.h
>>> @@ -549,7 +549,7 @@
>>>   #define IGC_PTM_CTRL_SHRT_CYC(usec)    (((usec) & 0x2f) << 2)
>>>   #define IGC_PTM_CTRL_PTM_TO(usec)    (((usec) & 0xff) << 8)
>>> -#define IGC_PTM_SHORT_CYC_DEFAULT    10  /* Default Short/interrupted cycle interval */
>>> +#define IGC_PTM_SHORT_CYC_DEFAULT    1   /* Default short cycle 
>>> interval */
>>
>> Why is the comment updated?
> 
> Interval, not interrupt...

Sorry, I do not understand your answer. It’d be great, if you elaborated.

>>>   #define IGC_PTM_CYC_TIME_DEFAULT    5   /* Default PTM cycle time */
>>>   #define IGC_PTM_TIMEOUT_DEFAULT        255 /* Default timeout for PTM errors */


Kind regards,

Paul
diff mbox series

Patch

diff --git a/drivers/net/ethernet/intel/igc/igc_defines.h b/drivers/net/ethernet/intel/igc/igc_defines.h
index 44a507029946..c3722f524ea7 100644
--- a/drivers/net/ethernet/intel/igc/igc_defines.h
+++ b/drivers/net/ethernet/intel/igc/igc_defines.h
@@ -549,7 +549,7 @@ 
 #define IGC_PTM_CTRL_SHRT_CYC(usec)	(((usec) & 0x2f) << 2)
 #define IGC_PTM_CTRL_PTM_TO(usec)	(((usec) & 0xff) << 8)
 
-#define IGC_PTM_SHORT_CYC_DEFAULT	10  /* Default Short/interrupted cycle interval */
+#define IGC_PTM_SHORT_CYC_DEFAULT	1   /* 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 */