minor bugs
authorimarom <[email protected]>
Wed, 30 Nov 2016 15:54:54 +0000 (17:54 +0200)
committerimarom <[email protected]>
Wed, 30 Nov 2016 15:54:54 +0000 (17:54 +0200)
Signed-off-by: imarom <[email protected]>
scripts/automation/trex_control_plane/stl/console/trex_console.py
scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_client.py
scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_rx_features.py
src/common/pcap.cpp
src/rpc-server/commands/trex_rpc_cmd_general.cpp
src/stateless/rx/trex_stateless_rx_core.cpp

index f1635b9..e4321b8 100755 (executable)
@@ -320,6 +320,7 @@ class TRexConsole(TRexGeneralCmd):
     def help_push (self):
         self.do_push("-h")
 
+    @verify_connected
     def do_portattr (self, line):
         '''Change/show port(s) attributes\n'''
         self.stateless_client.set_port_attr_line(line)
index 0425c20..feb6ef4 100755 (executable)
@@ -1403,6 +1403,7 @@ class STLClient(object):
 
 
     # get stats
+    @__api_check(True)
     def get_stats (self, ports = None, sync_now = True):
         """
         Return dictionary containing statistics information gathered from the server.
index 5c2fd9a..3754e60 100644 (file)
@@ -139,7 +139,7 @@ class ARPResolver(Resolver):
         self.src = self.port.get_src_addr()
         
         if self.dst['ipv4'] is None:
-            return self.port.err("Port has a non-IPv4 destination: '{0}'".format(dst['mac']))
+            return self.port.err("Port has a non-IPv4 destination: '{0}'".format(self.dst['mac']))
             
         if self.src['ipv4'] is None:
             return self.port.err('Port must have an IPv4 source address configured')
index f5eb3c4..b976aed 100755 (executable)
@@ -223,6 +223,7 @@ bool LibPCapWriter::Create(char * name)
         printf(" ERROR create file \n");
         return(false);
     }
+    
     /* prepare the write counter */
     m_pkt_count = 0;
     return init();
index 849c9be..cb7d514 100644 (file)
@@ -648,7 +648,11 @@ TrexRpcCmdGetPortStatus::_run(const Json::Value &params, Json::Value &result) {
     get_stateless_obj()->get_platform_api()->getPortAttrObj(port_id)->to_json(result["result"]["attr"]);
     
     /* RX info */
-    result["result"]["rx_info"] = port->rx_features_to_json();
+    try {
+        result["result"]["rx_info"] = port->rx_features_to_json();
+    } catch (const TrexException &ex) {
+        generate_execute_err(result, ex.what());
+    }
     
     return (TREX_RPC_CMD_OK);
 }
index b24fcb8..f518fcd 100644 (file)
@@ -182,31 +182,28 @@ void CRxCoreStateless::port_manager_tick() {
 }
 
 void CRxCoreStateless::handle_work_stage(bool do_try_rx_queue) {
-    int i = 0;
-    int j = 0;
+    
+    /* set the next sync time to */
+    dsec_t sync_time_sec = now_sec() + (1.0 / 1000);
     
     while (m_state == STATE_WORKING) {
-
+        
         if (do_try_rx_queue) {
             try_rx_queues();
         }
 
         process_all_pending_pkts();
 
-        /* TODO: with scheduler, this should be solved better */
-        i++;
-        if (i == 100000) { // approx 10msec
-            i = 0;
-            periodic_check_for_cp_messages(); // m_state might change in here
-            
-            j++;
-            if (j == 100) { // approx 1 sec
-                j = 0;
-                port_manager_tick();
-            }
+        dsec_t now = now_sec();
+        
+        if ( (now - sync_time_sec) > 0 ) {
+            periodic_check_for_cp_messages();
+            port_manager_tick();
+            sync_time_sec = now + (1.0 / 1000);
         }
         
         rte_pause();
+        
     }
 }