From: Greg Kroah-Hartman Date: Tue, 27 Aug 2024 13:42:13 +0000 (+0200) Subject: 5.15-stable patches X-Git-Tag: v6.1.107~16 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=b574298d1988431f74ac869292f99bcf2f543ec7;p=thirdparty%2Fkernel%2Fstable-queue.git 5.15-stable patches added patches: igc-fix-qbv-tx-latency-by-setting-gtxoffset.patch --- diff --git a/queue-5.15/igc-fix-qbv-tx-latency-by-setting-gtxoffset.patch b/queue-5.15/igc-fix-qbv-tx-latency-by-setting-gtxoffset.patch new file mode 100644 index 00000000000..256fb7f5bcc --- /dev/null +++ b/queue-5.15/igc-fix-qbv-tx-latency-by-setting-gtxoffset.patch @@ -0,0 +1,90 @@ +From 6c3fc0b1c3d073bd6fc3bf43dbd0e64240537464 Mon Sep 17 00:00:00 2001 +From: Faizal Rahim +Date: Sun, 7 Jul 2024 08:53:18 -0400 +Subject: igc: Fix qbv tx latency by setting gtxoffset + +From: Faizal Rahim + +commit 6c3fc0b1c3d073bd6fc3bf43dbd0e64240537464 upstream. + +A large tx latency issue was discovered during testing when only QBV was +enabled. The issue occurs because gtxoffset was not set when QBV is +active, it was only set when launch time is active. + +The patch "igc: Correct the launchtime offset" only sets gtxoffset when +the launchtime_enable field is set by the user. Enabling launchtime_enable +ultimately sets the register IGC_TXQCTL_QUEUE_MODE_LAUNCHT (referred to as +LaunchT in the SW user manual). + +Section 7.5.2.6 of the IGC i225/6 SW User Manual Rev 1.2.4 states: +"The latency between transmission scheduling (launch time) and the +time the packet is transmitted to the network is listed in Table 7-61." + +However, the patch misinterprets the phrase "launch time" in that section +by assuming it specifically refers to the LaunchT register, whereas it +actually denotes the generic term for when a packet is released from the +internal buffer to the MAC transmit logic. + +This launch time, as per that section, also implicitly refers to the QBV +gate open time, where a packet waits in the buffer for the QBV gate to +open. Therefore, latency applies whenever QBV is in use. TSN features such +as QBU and QAV reuse QBV, making the latency universal to TSN features. + +Discussed with i226 HW owner (Shalev, Avi) and we were in agreement that +the term "launch time" used in Section 7.5.2.6 is not clear and can be +easily misinterpreted. Avi will update this section to: +"When TQAVCTRL.TRANSMIT_MODE = TSN, the latency between transmission +scheduling and the time the packet is transmitted to the network is listed +in Table 7-61." + +Fix this issue by using igc_tsn_is_tx_mode_in_tsn() as a condition to +write to gtxoffset, aligning with the newly updated SW User Manual. + +Tested: +1. Enrol taprio on talker board + base-time 0 + cycle-time 1000000 + flags 0x2 + index 0 cmd S gatemask 0x1 interval1 + index 0 cmd S gatemask 0x1 interval2 + + Note: + interval1 = interval for a 64 bytes packet to go through + interval2 = cycle-time - interval1 + +2. Take tcpdump on listener board + +3. Use udp tai app on talker to send packets to listener + +4. Check the timestamp on listener via wireshark + +Test Result: +100 Mbps: 113 ~193 ns +1000 Mbps: 52 ~ 84 ns +2500 Mbps: 95 ~ 223 ns + +Note that the test result is similar to the patch "igc: Correct the +launchtime offset". + +Fixes: 790835fcc0cb ("igc: Correct the launchtime offset") +Signed-off-by: Faizal Rahim +Reviewed-by: Simon Horman +Acked-by: Vinicius Costa Gomes +Tested-by: Mor Bar-Gabay +Signed-off-by: Tony Nguyen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/net/ethernet/intel/igc/igc_tsn.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/net/ethernet/intel/igc/igc_tsn.c ++++ b/drivers/net/ethernet/intel/igc/igc_tsn.c +@@ -54,7 +54,7 @@ void igc_tsn_adjust_txtime_offset(struct + struct igc_hw *hw = &adapter->hw; + u16 txoffset; + +- if (!is_any_launchtime(adapter)) ++ if (!igc_tsn_is_tx_mode_in_tsn(adapter)) + return; + + switch (adapter->link_speed) { diff --git a/queue-5.15/series b/queue-5.15/series index 7bb15edd844..ee2b5c06973 100644 --- a/queue-5.15/series +++ b/queue-5.15/series @@ -170,3 +170,4 @@ alsa-timer-relax-start-tick-time-check-for-slave-timer-elements.patch mm-numa-no-task_numa_fault-call-if-pmd-is-changed.patch mm-numa-no-task_numa_fault-call-if-pte-is-changed.patch bluetooth-hci_ldisc-check-hci_uart_proto_ready-flag-in-hciuartgetproto.patch +igc-fix-qbv-tx-latency-by-setting-gtxoffset.patch