bianbu-linux-6.6/drivers/net/ethernet/intel/igc
Vinicius Costa Gomes 3ed247e789 igc: Add support for multiple in-flight TX timestamps
Add support for using the four sets of timestamping registers that
i225/i226 have available for TX.

In some workloads, where multiple applications request hardware
transmission timestamps, it was possible that some of those requests
were denied because the only in use register was already occupied.

This is also in preparation to future support for hardware
timestamping with multiple PTP domains. With multiple domains chances
of multiple TX timestamps being requested at the same time increase.

Before:
$ sudo ./ntpperf -i enp3s0 -m 10:22:22:22:22:21 -d 192.168.1.3 -s 172.18.0.0/16 -I -H -o 37
               |          responses            |     TX timestamp offset (ns)
rate   clients |  lost invalid   basic  xleave |    min    mean     max stddev
1000       100   0.00%   0.00%   0.00% 100.00%       +1     +41     +73     13
1500       150   0.00%   0.00%   0.00% 100.00%       +9     +49     +87     15
2250       225   0.00%   0.00%   0.00% 100.00%       +9     +42     +79     13
3375       337   0.00%   0.00%   0.00% 100.00%      +11     +46     +81     13
5062       506   0.00%   0.00%   0.00% 100.00%       +7     +44     +80     13
7593       759   0.00%   0.00%   0.00% 100.00%       +9     +44     +79     12
11389     1138   0.00%   0.00%   0.00% 100.00%      +14     +51     +87     13
17083     1708   0.00%   0.00%   0.00% 100.00%       +1     +41     +80     14
25624     2562   0.00%   0.00%   0.00% 100.00%      +11     +50   +5107     51
38436     3843   0.00%   0.00%   0.00% 100.00%       -2     +36   +7843     38
57654     5765   0.00%   0.00%   0.00% 100.00%       +4     +42  +10503     69
86481     8648   0.00%   0.00%   0.00% 100.00%      +11     +54   +5492     65
129721   12972   0.00%   0.00%   0.00% 100.00%      +31   +2680   +6942   2606
194581   16384  16.79%   0.00%   0.87%  82.34%      +73   +4444  +15879   3116
291871   16384  35.05%   0.00%   1.53%  63.42%     +188   +5381  +17019   3035
437806   16384  54.95%   0.00%   2.55%  42.50%     +233   +6302  +13885   2846

After:
$ sudo ./ntpperf -i enp3s0 -m 10:22:22:22:22:21 -d 192.168.1.3 -s 172.18.0.0/16 -I -H -o 37
               |          responses            |     TX timestamp offset (ns)
rate   clients |  lost invalid   basic  xleave |    min    mean     max stddev
1000       100   0.00%   0.00%   0.00% 100.00%      -20     +12     +43     13
1500       150   0.00%   0.00%   0.00% 100.00%      -23     +18     +57     14
2250       225   0.00%   0.00%   0.00% 100.00%       -2     +33     +67     13
3375       337   0.00%   0.00%   0.00% 100.00%       +1     +38     +76     13
5062       506   0.00%   0.00%   0.00% 100.00%       +9     +52     +93     14
7593       759   0.00%   0.00%   0.00% 100.00%      +11     +47     +82     13
11389     1138   0.00%   0.00%   0.00% 100.00%       -9     +27     +74     13
17083     1708   0.00%   0.00%   0.00% 100.00%      -13     +25     +66     14
25624     2562   0.00%   0.00%   0.00% 100.00%       -8     +28     +65     13
38436     3843   0.00%   0.00%   0.00% 100.00%      -13     +28     +69     13
57654     5765   0.00%   0.00%   0.00% 100.00%      -11     +32     +71     14
86481     8648   0.00%   0.00%   0.00% 100.00%       +2     +44     +83     14
129721   12972  15.36%   0.00%   0.35%  84.29%       -2   +2248  +22907   4252
194581   16384  42.98%   0.00%   1.98%  55.04%       -4   +5278  +65039   5856
291871   16384  54.33%   0.00%   2.21%  43.46%       -3   +6306  +22608   5665

We can see that with 4 registers, as expected, we are able to handle a
increasing number of requests more consistently, but as soon as all
registers are in use, the decrease in quality of service happens in a
sharp step.

Signed-off-by: Vinicius Costa Gomes <vinicius.gomes@intel.com>
Reviewed-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Reviewed-by: Muhammad Husaini Zulkifli <muhammad.husaini.zulkifli@intel.com>
Reviewed-by: Kurt Kanzenbach <kurt@linutronix.de>
Tested-by: Naama Meir <naamax.meir@linux.intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
2023-08-24 12:55:24 -07:00
..
igc.h igc: Add support for multiple in-flight TX timestamps 2023-08-24 12:55:24 -07:00
igc_base.c igc: remove I226 Qbv BaseTime restriction 2023-01-03 09:35:37 -08:00
igc_base.h igc: Add support for multiple in-flight TX timestamps 2023-08-24 12:55:24 -07:00
igc_defines.h igc: Add support for multiple in-flight TX timestamps 2023-08-24 12:55:24 -07:00
igc_diag.c igc: add support to eeprom, registers and link self-tests 2020-05-18 15:06:28 -07:00
igc_diag.h igc: add support to eeprom, registers and link self-tests 2020-05-18 15:06:28 -07:00
igc_dump.c igb/igc: use strongly typed pointer 2021-05-26 09:11:41 -07:00
igc_ethtool.c igc: set TP bit in 'supported' and 'advertising' fields of ethtool_link_ksettings 2023-07-05 11:18:43 -07:00
igc_hw.h igc: offload queue max SDU from tc-taprio 2023-03-07 13:45:56 -08:00
igc_i225.c igc: Remove obsolete DMA coalescing code 2023-03-21 11:37:16 -07:00
igc_i225.h igc: Add initial LTR support 2020-06-29 18:21:09 -07:00
igc_mac.c intel/igc:fix repeated words in comments 2022-06-30 11:06:23 -07:00
igc_mac.h igc: remove IGC_REMOVED function 2020-05-19 15:01:48 -07:00
igc_main.c igc: Add support for multiple in-flight TX timestamps 2023-08-24 12:55:24 -07:00
igc_nvm.c
igc_nvm.h
igc_phy.c igc: Change type of the 'igc_check_downshift' method 2022-05-10 14:02:53 -07:00
igc_phy.h igc: Change type of the 'igc_check_downshift' method 2022-05-10 14:02:53 -07:00
igc_ptp.c igc: Add support for multiple in-flight TX timestamps 2023-08-24 12:55:24 -07:00
igc_regs.h igc: Add support for multiple in-flight TX timestamps 2023-08-24 12:55:24 -07:00
igc_tsn.c igc: No strict mode in pure launchtime/CBS offload 2023-07-10 08:58:16 -07:00
igc_tsn.h igc: Remove reset adapter task for i226 during disable tsn config 2023-01-03 09:36:25 -08:00
igc_xdp.c drivers: net: turn on XDP features 2023-02-02 20:48:23 -08:00
igc_xdp.h igc: Enable RX via AF_XDP zero-copy 2021-05-20 10:21:42 -07:00
Makefile igc: Add initial XDP support 2021-03-29 09:09:53 -07:00