add VIC reg files
authorHanoh Haim <[email protected]>
Mon, 28 Nov 2016 17:21:16 +0000 (19:21 +0200)
committerHanoh Haim <[email protected]>
Mon, 28 Nov 2016 19:16:09 +0000 (21:16 +0200)
Signed-off-by: Hanoh Haim <[email protected]>
scripts/automation/regression/setups/trex11/backup/benchmark.yaml [new file with mode: 0644]
scripts/automation/regression/setups/trex11/backup/config.yaml [new file with mode: 0644]
scripts/automation/regression/setups/trex11/benchmark.yaml
scripts/automation/regression/setups/trex11/config.yaml
src/main_dpdk.cpp

diff --git a/scripts/automation/regression/setups/trex11/backup/benchmark.yaml b/scripts/automation/regression/setups/trex11/backup/benchmark.yaml
new file mode 100644 (file)
index 0000000..b366b3f
--- /dev/null
@@ -0,0 +1,155 @@
+################################################################
+####           TRex benchmark configuration file           ####
+################################################################
+
+### stateful ###
+
+test_jumbo:
+    multiplier          : 2.8
+    cores               : 1
+    bw_per_core         : 106.652
+
+
+test_routing_imix:
+    multiplier          : 0.5
+    cores               : 1
+    bw_per_core         : 11.577
+
+
+test_routing_imix_64:
+    multiplier          : 28
+    cores               : 1
+    bw_per_core         : 2.030
+
+
+test_static_routing_imix_asymmetric:
+    multiplier          : 0.8
+    cores               : 1
+    bw_per_core         : 13.742
+
+
+
+### stateless ###
+
+test_CPU_benchmark:
+    profiles:
+      - name            : stl/udp_for_benchmarks.py
+        kwargs          : {packet_len: 64}
+        cpu_util        : 1
+        bw_per_core     : 1
+
+      - name            : stl/udp_for_benchmarks.py
+        kwargs          : {packet_len: 64, stream_count: 10}
+        cpu_util        : 1
+        bw_per_core     : 1
+
+      - name            : stl/udp_for_benchmarks.py
+        kwargs          : {packet_len: 64, stream_count: 100}
+        cpu_util        : 1
+        bw_per_core     : 1
+
+# causes queue full
+#      - name            : stl/udp_for_benchmarks.py
+#        kwargs          : {packet_len: 64, stream_count: 1000}
+#        cpu_util        : 1
+#        bw_per_core     : 1
+
+      - name            : stl/udp_for_benchmarks.py
+        kwargs          : {packet_len: 128}
+        cpu_util        : 1
+        bw_per_core     : 1
+
+      - name            : stl/udp_for_benchmarks.py
+        kwargs          : {packet_len: 256}
+        cpu_util        : 1
+        bw_per_core     : 1
+
+      - name            : stl/udp_for_benchmarks.py
+        kwargs          : {packet_len: 512}
+        cpu_util        : 1
+        bw_per_core     : 1
+
+      - name            : stl/udp_for_benchmarks.py
+        kwargs          : {packet_len: 1500}
+        cpu_util        : 1
+        bw_per_core     : 1
+
+      - name            : stl/udp_for_benchmarks.py
+        kwargs          : {packet_len: 4000}
+        cpu_util        : 1
+        bw_per_core     : 1
+
+      - name            : stl/udp_for_benchmarks.py
+        kwargs          : {packet_len: 9000}
+        cpu_util        : 1
+        bw_per_core     : 1
+
+      - name            : stl/udp_for_benchmarks.py
+        kwargs          : {packet_len: 9000, stream_count: 10}
+        cpu_util        : 1
+        bw_per_core     : 1
+
+      - name            : stl/udp_for_benchmarks.py
+        kwargs          : {packet_len: 9000, stream_count: 100}
+        cpu_util        : 1
+        bw_per_core     : 1
+
+# not enough memory + queue full if memory increase
+#      - name            : stl/udp_for_benchmarks.py
+#        kwargs          : {packet_len: 9000, stream_count: 1000}
+#        cpu_util        : 1
+#        bw_per_core     : 1
+
+      - name            : stl/imix.py
+        cpu_util        : 1
+        bw_per_core     : 1
+
+      - name            : stl/udp_1pkt_tuple_gen.py
+        kwargs          : {packet_len: 64}
+        cpu_util        : 1
+        bw_per_core     : 1
+
+      - name            : stl/udp_1pkt_tuple_gen.py
+        kwargs          : {packet_len: 128}
+        cpu_util        : 1
+        bw_per_core     : 1
+
+      - name            : stl/udp_1pkt_tuple_gen.py
+        kwargs          : {packet_len: 256}
+        cpu_util        : 1
+        bw_per_core     : 1
+
+      - name            : stl/udp_1pkt_tuple_gen.py
+        kwargs          : {packet_len: 512}
+        cpu_util        : 1
+        bw_per_core     : 1
+
+      - name            : stl/udp_1pkt_tuple_gen.py
+        kwargs          : {packet_len: 1500}
+        cpu_util        : 1
+        bw_per_core     : 1
+
+      - name            : stl/udp_1pkt_tuple_gen.py
+        kwargs          : {packet_len: 4000}
+        cpu_util        : 1
+        bw_per_core     : 1
+
+      - name            : stl/udp_1pkt_tuple_gen.py
+        kwargs          : {packet_len: 9000}
+        cpu_util        : 1
+        bw_per_core     : 1
+
+      - name            : stl/pcap.py
+        kwargs          : {ipg_usec: 4, loop_count: 0}
+        cpu_util        : 1
+        bw_per_core     : 1
+
+      - name            : stl/udp_rand_len_9k.py
+        cpu_util        : 1
+        bw_per_core     : 1
+
+      - name            : stl/hlt/hlt_udp_rand_len_9k.py
+        cpu_util        : 1
+        bw_per_core     : 1
+
+
diff --git a/scripts/automation/regression/setups/trex11/backup/config.yaml b/scripts/automation/regression/setups/trex11/backup/config.yaml
new file mode 100644 (file)
index 0000000..782b754
--- /dev/null
@@ -0,0 +1,38 @@
+################################################################
+####         TRex nightly test configuration file          ####
+################################################################
+
+
+### TRex configuration:
+# hostname       - can be DNS name or IP for the TRex machine for ssh to the box
+# password       - root password for TRex machine
+# is_dual        - should the TRex inject with -p ?
+# version_path   - path to the TRex version and executable
+# cores          - how many cores should be used
+# latency        - rate of latency packets injected by the TRex
+# modes          - list of modes (tagging) of this setup (loopback, virtual etc.)
+#        * loopback - Trex works via loopback. Router and TFTP configurations may be skipped.
+#     * virtual  - virtual OS (accept low CPU utilization in tests)
+
+### Router configuration:
+# hostname       - the router hostname as apears in ______# cli prefix
+# ip_address     - the router's ip that can be used to communicate with
+# image          - the desired imaged wished to be loaded as the router's running config
+# line_password  - router password when access via Telent
+# en_password    - router password when changing to "enable" mode
+# interfaces     - an array of client-server pairs, representing the interfaces configurations of the router
+# configurations - an array of configurations that could possibly loaded into the router during the test. 
+#                  The "clean" configuration is a mandatory configuration the router will load with to run the basic test bench
+
+### TFTP configuration:
+# hostname       - the tftp hostname
+# ip_address     - the tftp's ip address
+# images_path    - the tftp's relative path in which the router's images are located
+
+### Test_misc configuration:
+# expected_bw    - the "golden" bandwidth (in Gbps) results planned on receiving from the test
+
+trex:
+  hostname       : csi-trex-11
+  cores          : 1
+  modes          : ['loopback', 'VM', 'virt_nics']
index b366b3f..ca5ea45 100644 (file)
@@ -1,33 +1,59 @@
-################################################################
+###############################################################
 ####           TRex benchmark configuration file           ####
-################################################################
+###############################################################
 
-### stateful ###
+#### common templates ###
 
 test_jumbo:
-    multiplier          : 2.8
-    cores               : 1
-    bw_per_core         : 106.652
+    multiplier          : 120
+    cores               : 2
+    bw_per_core         : 962.464
 
 
 test_routing_imix:
-    multiplier          : 0.5
-    cores               : 1
-    bw_per_core         : 11.577
+    multiplier          : 60
+    cores               : 4
+    bw_per_core         : 48.130
 
 
 test_routing_imix_64:
-    multiplier          : 28
-    cores               : 1
-    bw_per_core         : 2.030
+    multiplier          : 4000
+    cores               : 7
+    bw_per_core         : 12.699
 
 
 test_static_routing_imix_asymmetric:
-    multiplier          : 0.8
-    cores               : 1
-    bw_per_core         : 13.742
+    multiplier          : 50
+    cores               : 3
+    bw_per_core         : 50.561
 
 
+test_ipv6_simple:
+    multiplier          : 50
+    cores               : 7
+    bw_per_core         : 19.5
+
+
+test_rx_check_http: &rx_http
+    multiplier          : 99000
+    cores               : 7
+    rx_sample_rate      : 128
+    bw_per_core         : 49.464
+
+test_rx_check_http_ipv6:
+    <<                  : *rx_http
+    bw_per_core         : 49.237
+
+test_rx_check_sfr: &rx_sfr
+    multiplier          : 35
+    cores               : 7
+    rx_sample_rate      : 128
+    bw_per_core         : 20.871
+
+test_rx_check_sfr_ipv6:
+    <<                  : *rx_sfr
+    bw_per_core         : 19.198
+
 
 ### stateless ###
 
@@ -140,16 +166,68 @@ test_CPU_benchmark:
         bw_per_core     : 1
 
       - name            : stl/pcap.py
-        kwargs          : {ipg_usec: 4, loop_count: 0}
-        cpu_util        : 1
-        bw_per_core     : 1
-
-      - name            : stl/udp_rand_len_9k.py
-        cpu_util        : 1
-        bw_per_core     : 1
-
-      - name            : stl/hlt/hlt_udp_rand_len_9k.py
-        cpu_util        : 1
-        bw_per_core     : 1
-
-
+        kwargs          : {ipg_usec: 2, loop_count: 0}
+        cpu_util        : 1
+        bw_per_core     : 1
+
+      #- name            : stl/udp_rand_len_9k.py
+      #  cpu_util        : 1
+      #  bw_per_core     : 1
+
+      #- name            : stl/hlt/hlt_udp_rand_len_9k.py
+      #  cpu_util        : 1
+      #  bw_per_core     : 1
+
+test_performance_vm_single_cpu:
+    cfg:
+        mult                    : "90%"
+        mpps_per_core_golden    : 
+                                   min: 9.6
+                                   max: 13.3
+
+
+test_performance_vm_single_cpu_cached:
+    cfg:
+        mult                    : "10%"
+        mpps_per_core_golden    : 
+                                   min: 16.0
+                                   max: 25.0
+
+
+
+test_performance_syn_attack_single_cpu:
+     cfg:
+        mult                    : "90%"
+        mpps_per_core_golden    :
+                                  min: 9.0
+                                  max: 14.0
+
+test_performance_vm_multi_cpus:
+    cfg:
+        core_count             : 7
+        mult                   : "90%"
+        mpps_per_core_golden   :
+                                  min: 8.5
+                                  max: 12.0
+
+
+test_performance_vm_multi_cpus_cached:
+    cfg:
+        core_count             : 7
+        mult                   : "35%"
+        mpps_per_core_golden   :
+                                  min: 9.0
+                                  max: 15.0
+
+test_performance_syn_attack_multi_cpus:
+    cfg:
+        core_count             : 7
+        mult                   : "90%"
+        mpps_per_core_golden   :
+                                  min: 8.0
+                                  max: 16.0
+                                  
+
+test_all_profiles :
+        mult          : "5%"
+        
index 782b754..393c874 100644 (file)
@@ -4,15 +4,16 @@
 
 
 ### TRex configuration:
-# hostname       - can be DNS name or IP for the TRex machine for ssh to the box
-# password       - root password for TRex machine
-# is_dual        - should the TRex inject with -p ?
-# version_path   - path to the TRex version and executable
-# cores          - how many cores should be used
-# latency        - rate of latency packets injected by the TRex
-# modes          - list of modes (tagging) of this setup (loopback, virtual etc.)
-#        * loopback - Trex works via loopback. Router and TFTP configurations may be skipped.
-#     * virtual  - virtual OS (accept low CPU utilization in tests)
+# hostname        - can be DNS name or IP for the TRex machine for ssh to the box
+# password        - root password for TRex machine
+# is_dual         - should the TRex inject with -p ?
+# version_path    - path to the TRex version and executable
+# cores           - how many cores should be used
+# latency         - rate of latency packets injected by the TRex
+# modes           - list of modes (tagging) of this setup (loopback etc.)
+#        * loopback  - Trex works via loopback. Router and TFTP configurations may be skipped.
+#     * VM        - Virtual OS (accept low CPU utilization in tests, latency can get spikes)
+#     * virt_nics - NICs are virtual (VMXNET3 etc.)
 
 ### Router configuration:
 # hostname       - the router hostname as apears in ______# cli prefix
@@ -35,4 +36,6 @@
 trex:
   hostname       : csi-trex-11
   cores          : 1
-  modes          : ['loopback', 'VM', 'virt_nics']
+  modes          : ['loopback']
+
+
index f102acb..faec66d 100644 (file)
@@ -379,7 +379,7 @@ private:
     uint8_t m_if_per_card;
 };
 
-class CTRexExtendedDriverBaseVIC : public CTRexExtendedDriverBase40G {
+class CTRexExtendedDriverBaseVIC : public CTRexExtendedDriverBase {
 public:
     CTRexExtendedDriverBaseVIC(){
         m_if_per_card=2;
@@ -396,6 +396,22 @@ public:
     virtual bool is_hardware_filter_is_supported(){
         return (true);
     }
+    virtual void update_global_config_fdir(port_cfg_t * cfg){
+    }
+
+
+    virtual bool is_hardware_support_drop_queue(){
+        return(true);
+    }
+
+    void clear_extended_stats(CPhyEthIF * _if);
+
+    void get_extended_stats(CPhyEthIF * _if,CPhyEthIFStats *stats);
+
+
+    virtual int get_min_sample_rate(void){
+        return (RX_CHECK_MIX_SAMPLE_RATE);
+    }
 
     virtual int verify_fw_ver(int i);
 
@@ -6853,6 +6869,38 @@ int CTRexExtendedDriverBaseVIC::configure_rx_filter_rules_statefull(CPhyEthIF *
 }
 
 
+void CTRexExtendedDriverBaseVIC::clear_extended_stats(CPhyEthIF * _if){
+    rte_eth_stats_reset(_if->get_port_id());
+}
+
+void CTRexExtendedDriverBaseVIC::get_extended_stats(CPhyEthIF * _if,CPhyEthIFStats *stats) {
+    struct rte_eth_stats stats1;
+    struct rte_eth_stats *prev_stats = &stats->m_prev_stats;
+    rte_eth_stats_get(_if->get_port_id(), &stats1);
+
+    stats->ipackets += stats1.ipackets - prev_stats->ipackets;
+    stats->ibytes   += stats1.ibytes - prev_stats->ibytes;
+    stats->opackets += stats1.opackets - prev_stats->opackets;
+    stats->obytes   += stats1.obytes - prev_stats->obytes
+        + (stats1.opackets << 2) - (prev_stats->opackets << 2);
+    stats->f_ipackets += 0;
+    stats->f_ibytes   += 0;
+    stats->ierrors    += stats1.imissed + stats1.ierrors + stats1.rx_nombuf
+        - prev_stats->imissed - prev_stats->ierrors - prev_stats->rx_nombuf;
+    stats->oerrors    += stats1.oerrors - prev_stats->oerrors;
+    stats->imcasts    += 0;
+    stats->rx_nombuf  += stats1.rx_nombuf - prev_stats->rx_nombuf;
+
+    prev_stats->ipackets = stats1.ipackets;
+    prev_stats->ibytes = stats1.ibytes;
+    prev_stats->opackets = stats1.opackets;
+    prev_stats->obytes = stats1.obytes;
+    prev_stats->imissed = stats1.imissed;
+    prev_stats->oerrors = stats1.oerrors;
+    prev_stats->ierrors = stats1.ierrors;
+    prev_stats->rx_nombuf = stats1.rx_nombuf;
+}
+
 
 int CTRexExtendedDriverBaseVIC::verify_fw_ver(int port_id) {
 
@@ -6867,6 +6915,7 @@ int CTRexExtendedDriverBaseVIC::verify_fw_ver(int port_id) {
             return (0);
         }
     }
+
     printf("Error: VIC firmware should upgrade to support advanced filtering \n");
     printf("  Please refer to %s for upgrade instructions\n",
            "https://trex-tgn.cisco.com/trex/doc/trex_manual.html");