• Vinicius Costa Gomes's avatar
    igc: Add support for multiple in-flight TX timestamps · 3ed247e7
    Vinicius Costa Gomes authored
    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: default avatarVinicius Costa Gomes <vinicius.gomes@intel.com>
    Reviewed-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
    Reviewed-by: default avatarMuhammad Husaini Zulkifli <muhammad.husaini.zulkifli@intel.com>
    Reviewed-by: Kurt Kanzenbach's avatarKurt Kanzenbach <kurt@linutronix.de>
    Tested-by: default avatarNaama Meir <naamax.meir@linux.intel.com>
    Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
    3ed247e7
igc_base.h 3.3 KB