netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Vadim Fedorenko <vadim.fedorenko@linux.dev>
To: Kurt Kanzenbach <kurt@linutronix.de>,
	Tony Nguyen <anthony.l.nguyen@intel.com>,
	Przemek Kitszel <przemyslaw.kitszel@intel.com>
Cc: Andrew Lunn <andrew+netdev@lunn.ch>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	Richard Cochran <richardcochran@gmail.com>,
	Vinicius Costa Gomes <vinicius.gomes@intel.com>,
	Sebastian Andrzej Siewior <bigeasy@linutronix.de>,
	Paul Menzel <pmenzel@molgen.mpg.de>,
	Miroslav Lichvar <mlichvar@redhat.com>,
	Jacob Keller <jacob.e.keller@intel.com>,
	intel-wired-lan@lists.osuosl.org, netdev@vger.kernel.org
Subject: Re: [PATCH iwl-next v2] igb: Convert Tx timestamping to PTP aux worker
Date: Fri, 22 Aug 2025 17:27:10 +0100	[thread overview]
Message-ID: <27e8fb9f-0e9c-4a0b-b961-64ff9d2f5228@linux.dev> (raw)
In-Reply-To: <20250822-igb_irq_ts-v2-1-1ac37078a7a4@linutronix.de>

On 22/08/2025 08:28, Kurt Kanzenbach wrote:
> The current implementation uses schedule_work() which is executed by the
> system work queue to retrieve Tx timestamps. This increases latency and can
> lead to timeouts in case of heavy system load.
> 
> Therefore, switch to the PTP aux worker which can be prioritized and pinned
> according to use case. Tested on Intel i210.
> 
>    * igb_ptp_tx_work
> - * @work: pointer to work struct
> + * @ptp: pointer to ptp clock information
>    *
>    * This work function polls the TSYNCTXCTL valid bit to determine when a
>    * timestamp has been taken for the current stored skb.
>    **/
> -static void igb_ptp_tx_work(struct work_struct *work)
> +static long igb_ptp_tx_work(struct ptp_clock_info *ptp)
>   {
> -	struct igb_adapter *adapter = container_of(work, struct igb_adapter,
> -						   ptp_tx_work);
> +	struct igb_adapter *adapter = container_of(ptp, struct igb_adapter,
> +						   ptp_caps);
>   	struct e1000_hw *hw = &adapter->hw;
>   	u32 tsynctxctl;
>   
>   	if (!adapter->ptp_tx_skb)
> -		return;
> +		return -1;
>   
>   	if (time_is_before_jiffies(adapter->ptp_tx_start +
>   				   IGB_PTP_TX_TIMEOUT)) {
> @@ -824,15 +824,17 @@ static void igb_ptp_tx_work(struct work_struct *work)
>   		 */
>   		rd32(E1000_TXSTMPH);
>   		dev_warn(&adapter->pdev->dev, "clearing Tx timestamp hang\n");
> -		return;
> +		return -1;
>   	}
>   
>   	tsynctxctl = rd32(E1000_TSYNCTXCTL);
> -	if (tsynctxctl & E1000_TSYNCTXCTL_VALID)
> +	if (tsynctxctl & E1000_TSYNCTXCTL_VALID) {
>   		igb_ptp_tx_hwtstamp(adapter);
> -	else
> -		/* reschedule to check later */
> -		schedule_work(&adapter->ptp_tx_work);
> +		return -1;
> +	}
> +
> +	/* reschedule to check later */
> +	return 1;

do_aux_work is expected to return delay in jiffies to re-schedule the
work. it would be cleaner to use msec_to_jiffies macros to tell how much
time the driver has to wait before the next try of retrieving the
timestamp. AFAIU, the timestamp may come ASAP in this case, so it's
actually reasonable to request immediate re-schedule of the worker by
returning 0.

>   }

  parent reply	other threads:[~2025-08-22 16:27 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-08-22  7:28 [PATCH iwl-next v2] igb: Convert Tx timestamping to PTP aux worker Kurt Kanzenbach
2025-08-22  7:52 ` Sebastian Andrzej Siewior
2025-08-22 23:55   ` Jacob Keller
2025-08-23  7:29   ` Kurt Kanzenbach
2025-08-25  7:53     ` Miroslav Lichvar
2025-08-25  9:22       ` Kurt Kanzenbach
2025-08-25 23:23         ` [Intel-wired-lan] " Jacob Keller
2025-08-25 23:28     ` Jacob Keller
2025-08-26 12:59       ` Sebastian Andrzej Siewior
2025-08-26 18:23         ` Jacob Keller
2025-08-27 12:57           ` Kurt Kanzenbach
2025-08-27 13:39             ` Paul Menzel
2025-08-27 16:22               ` Jacob Keller
2025-08-27 13:57         ` Miroslav Lichvar
2025-08-27 14:05           ` Kurt Kanzenbach
2025-08-27 14:10           ` Sebastian Andrzej Siewior
2025-08-27 14:41             ` Miroslav Lichvar
2025-08-27 14:52               ` Sebastian Andrzej Siewior
2025-08-27 16:21                 ` Jacob Keller
2025-08-22 16:27 ` Vadim Fedorenko [this message]
2025-08-23  7:44   ` Kurt Kanzenbach
2025-08-25 13:18     ` Vadim Fedorenko
2025-08-25 23:24       ` Jacob Keller
2025-08-25 10:58 ` [Intel-wired-lan] " Loktionov, Aleksandr

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=27e8fb9f-0e9c-4a0b-b961-64ff9d2f5228@linux.dev \
    --to=vadim.fedorenko@linux.dev \
    --cc=andrew+netdev@lunn.ch \
    --cc=anthony.l.nguyen@intel.com \
    --cc=bigeasy@linutronix.de \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=intel-wired-lan@lists.osuosl.org \
    --cc=jacob.e.keller@intel.com \
    --cc=kuba@kernel.org \
    --cc=kurt@linutronix.de \
    --cc=mlichvar@redhat.com \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=pmenzel@molgen.mpg.de \
    --cc=przemyslaw.kitszel@intel.com \
    --cc=richardcochran@gmail.com \
    --cc=vinicius.gomes@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).