All of lore.kernel.org
 help / color / mirror / Atom feed
From: Saeed Mahameed <saeed@kernel.org>
To: Tony Nguyen <anthony.l.nguyen@intel.com>
Cc: davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com,
	edumazet@google.com, netdev@vger.kernel.org,
	jacob.e.keller@intel.com, richardcochran@gmail.com,
	leon@kernel.org
Subject: Re: [PATCH net-next v3 00/14][pull request] Intel Wired LAN Driver Updates 2022-12-08 (ice)
Date: Thu, 8 Dec 2022 16:23:09 -0800	[thread overview]
Message-ID: <Y5J/7T2SH2geV9Og@x130> (raw)
In-Reply-To: <20221208213932.1274143-1-anthony.l.nguyen@intel.com>

On 08 Dec 13:39, Tony Nguyen wrote:
>Jacob Keller says:
>
>This series of patches primarily consists of changes to fix some corner
>cases that can cause Tx timestamp failures. The issues were discovered and
>reported by Siddaraju DH and primarily affect E822 hardware, though this
>series also includes some improvements that affect E810 hardware as well.
>
>The primary issue is regarding the way that E822 determines when to generate
>timestamp interrupts. If the driver reads timestamp indexes which do not
>have a valid timestamp, the E822 interrupt tracking logic can get stuck.
>This is due to the way that E822 hardware tracks timestamp index reads
>internally. I was previously unaware of this behavior as it is significantly
>different in E810 hardware.
>
>Most of the fixes target refactors to ensure that the ice driver does not
>read timestamp indexes which are not valid on E822 hardware. This is done by
>using the Tx timestamp ready bitmap register from the PHY. This register
>indicates what timestamp indexes have outstanding timestamps waiting to be
>captured.
>
>Care must be taken in all cases where we read the timestamp registers, and
>thus all flows which might have read these registers are refactored. The
>ice_ptp_tx_tstamp function is modified to consolidate as much of the logic
>relating to these registers as possible. It now handles discarding stale
>timestamps which are old or which occurred after a PHC time update. This
>replaces previously standalone thread functions like the periodic work
>function and the ice_ptp_flush_tx_tracker function.
>
>In addition, some minor cleanups noticed while writing these refactors are
>included.
>
>The remaining patches refactor the E822 implementation to remove the
>"bypass" mode for timestamps. The E822 hardware has the ability to provide a
>more precise timestamp by making use of measurements of the precise way that
>packets flow through the hardware pipeline. These measurements are known as
>"Vernier" calibration. The "bypass" mode disables many of these measurements
>in favor of a faster start up time for Tx and Rx timestamping. Instead, once
>these measurements were captured, the driver tries to reconfigure the PHY to
>enable the vernier calibrations.
>
>Unfortunately this recalibration does not work. Testing indicates that the
>PHY simply remains in bypass mode without the increased timestamp precision.
>Remove the attempt at recalibration and always use vernier mode. This has
>one disadvantage that Tx and Rx timestamps cannot begin until after at least
>one packet of that type goes through the hardware pipeline. Because of this,
>further refactor the driver to separate Tx and Rx vernier calibration.
>Complete the Tx and Rx independently, enabling the appropriate type of
>timestamp as soon as the relevant packet has traversed the hardware
>pipeline. This was reported by Milena Olech.
>
>Note that although these might be considered "bug fixes", the required
>changes in order to appropriately resolve these issues is large. Thus it
>does not feel suitable to send this series to net.
>---
>v3:
>- Dropped patch 'ice: disable Tx timestamps while link is down'
>- Use bitmap_or function over for_each_set_bit
>- Change incorrect function name (ice_ptp_tstamp_tx()) to correct one
>(ice_ptp_tx_tstamp()) in patch 9 commit message
>

LGTM

Reviewed-by: Saeed Mahameed <saeed@kernel.org>

>v2: https://lore.kernel.org/netdev/20221207210937.1099650-1-anthony.l.nguyen@intel.com/
>- Dropped incorrect/useless locking around init in ice_ptp_tx_tstamp
>- Added patch to call sychronize_irq during teardown of Tx tracker
>- Renamed and refactored "ts_handled" into "more_timestamps" for clarity
>- Moved all initialization of Tx tracker to before spin_lock_init
>- Initialize raw_stamp to 0 and add check that it has been set
>
>v1: https://lore.kernel.org/netdev/20221130194330.3257836-1-anthony.l.nguyen@intel.com/
>
>The following are changes since commit bde55dd9ccda7a3f5f735d89e855691362745248:
>  net: dsa: microchip: add stats64 support for ksz8 series of switches
>and are available in the git repository at:
>  git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/next-queue 100GbE
>
>Jacob Keller (10):
>  ice: fix misuse of "link err" with "link status"
>  ice: always call ice_ptp_link_change and make it void
>  ice: handle discarding old Tx requests in ice_ptp_tx_tstamp
>  ice: check Tx timestamp memory register for ready timestamps
>  ice: synchronize the misc IRQ when tearing down Tx tracker
>  ice: protect init and calibrating check in ice_ptp_request_ts
>  ice: cleanup allocations in ice_ptp_alloc_tx_tracker
>  ice: handle flushing stale Tx timestamps in ice_ptp_tx_tstamp
>  ice: only check set bits in ice_ptp_flush_tx_tracker
>  ice: reschedule ice_ptp_wait_for_offset_valid during reset
>
>Karol Kolacinski (1):
>  ice: Reset TS memory for all quads
>
>Milena Olech (1):
>  ice: Remove the E822 vernier "bypass" logic
>
>Sergey Temerkhanov (1):
>  ice: Use more generic names for ice_ptp_tx fields
>
>Siddaraju DH (1):
>  ice: make Tx and Rx vernier offset calibration independent
>
> drivers/net/ethernet/intel/ice/ice_main.c   |   9 +-
> drivers/net/ethernet/intel/ice/ice_ptp.c    | 546 ++++++++++----------
> drivers/net/ethernet/intel/ice/ice_ptp.h    |  39 +-
> drivers/net/ethernet/intel/ice/ice_ptp_hw.c | 336 ++++++------
> drivers/net/ethernet/intel/ice/ice_ptp_hw.h |   8 +-
> 5 files changed, 463 insertions(+), 475 deletions(-)
>
>-- 
>2.35.1
>

  parent reply	other threads:[~2022-12-09  0:23 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-12-08 21:39 [PATCH net-next v3 00/14][pull request] Intel Wired LAN Driver Updates 2022-12-08 (ice) Tony Nguyen
2022-12-08 21:39 ` [PATCH net-next v3 01/14] ice: Use more generic names for ice_ptp_tx fields Tony Nguyen
2022-12-08 21:39 ` [PATCH net-next v3 02/14] ice: Remove the E822 vernier "bypass" logic Tony Nguyen
2022-12-08 21:39 ` [PATCH net-next v3 03/14] ice: Reset TS memory for all quads Tony Nguyen
2022-12-08 21:39 ` [PATCH net-next v3 04/14] ice: fix misuse of "link err" with "link status" Tony Nguyen
2022-12-08 21:39 ` [PATCH net-next v3 05/14] ice: always call ice_ptp_link_change and make it void Tony Nguyen
2022-12-08 21:39 ` [PATCH net-next v3 06/14] ice: handle discarding old Tx requests in ice_ptp_tx_tstamp Tony Nguyen
2022-12-08 21:39 ` [PATCH net-next v3 07/14] ice: check Tx timestamp memory register for ready timestamps Tony Nguyen
2022-12-08 21:39 ` [PATCH net-next v3 08/14] ice: synchronize the misc IRQ when tearing down Tx tracker Tony Nguyen
2022-12-08 21:39 ` [PATCH net-next v3 09/14] ice: protect init and calibrating check in ice_ptp_request_ts Tony Nguyen
2022-12-08 21:39 ` [PATCH net-next v3 10/14] ice: cleanup allocations in ice_ptp_alloc_tx_tracker Tony Nguyen
2022-12-08 21:39 ` [PATCH net-next v3 11/14] ice: handle flushing stale Tx timestamps in ice_ptp_tx_tstamp Tony Nguyen
2022-12-08 21:39 ` [PATCH net-next v3 12/14] ice: only check set bits in ice_ptp_flush_tx_tracker Tony Nguyen
2022-12-08 21:39 ` [PATCH net-next v3 13/14] ice: make Tx and Rx vernier offset calibration independent Tony Nguyen
2022-12-08 21:39 ` [PATCH net-next v3 14/14] ice: reschedule ice_ptp_wait_for_offset_valid during reset Tony Nguyen
2022-12-09  0:23 ` Saeed Mahameed [this message]
2022-12-10  3:50 ` [PATCH net-next v3 00/14][pull request] Intel Wired LAN Driver Updates 2022-12-08 (ice) patchwork-bot+netdevbpf

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=Y5J/7T2SH2geV9Og@x130 \
    --to=saeed@kernel.org \
    --cc=anthony.l.nguyen@intel.com \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=jacob.e.keller@intel.com \
    --cc=kuba@kernel.org \
    --cc=leon@kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=richardcochran@gmail.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.