On 19/05/2025 10:19, Abdul Rahim, Faizal wrote:
From: Faizal Rahim <[email protected]>

Changes:
1. Introduce tx_enabled flag to control preemptible queue. tx_enabled
    is set via mmsv module based on multiple factors, including link
    up/down status, to determine if FPE is active or inactive.
2. Add priority field to TXDCTL for express queue to improve data
    fetch performance.
3. Block preemptible queue setup in taprio unless reverse-tsn-txq-prio
    private flag is set. Encourages adoption of standard queue priority
    scheme for new features.
4. Hardware-padded frames from preemptible queues result in incorrect
    mCRC values, as padding bytes are excluded from the computation. Pad
    frames to at least 60 bytes using skb_padto() before transmission to
    ensure the hardware includes padding in the mCRC calculation.

Tested preemption with taprio by:
1. Enable FPE:
    ethtool --set-mm enp1s0 pmac-enabled on tx-enabled on verify-enabled on
2. Enable private flag to reverse TX queue priority:
    ethtool --set-priv-flags enp1s0 reverse-txq-prio on
3. Enable preemptible queue in taprio:
    taprio num_tc 4 map 0 1 2 3 0 0 0 0 0 0 0 0 0 0 0 0 \
    queues 1@0 1@1 1@2 1@3 \
    fp P P P E

Reviewed-by: Aleksandr Loktionov <[email protected]>
Co-developed-by: Chwee-Lin Choong <[email protected]>
Signed-off-by: Chwee-Lin Choong <[email protected]>
Signed-off-by: Faizal Rahim <[email protected]>
Reviewed-by: Simon Horman <[email protected]>
---
  drivers/net/ethernet/intel/igc/igc.h         |  6 ++
  drivers/net/ethernet/intel/igc/igc_defines.h |  1 +
  drivers/net/ethernet/intel/igc/igc_main.c    | 21 +++++-
  drivers/net/ethernet/intel/igc/igc_tsn.c     | 71 ++++++++++++++++++++
  drivers/net/ethernet/intel/igc/igc_tsn.h     |  4 ++
  5 files changed, 100 insertions(+), 3 deletions(-)

Tested-by: Mor Bar-Gabay <[email protected]>

Reply via email to