diff --git a/src/python/oftest/testutils.py b/src/python/oftest/testutils.py
index 480604d..32fa86c 100644
--- a/src/python/oftest/testutils.py
+++ b/src/python/oftest/testutils.py
@@ -338,17 +338,19 @@
     if reply is None:
         return -1
     logging.debug(reply.show())
+    p = None
     for idx in range(len(reply.ports)):
         if reply.ports[idx].port_no == port_no:
+            p = reply.ports[idx]
             break
-    if idx >= len(reply.ports):
-        return -1
     mod = message.port_mod()
     mod.port_no = port_no
-    mod.hw_addr = reply.ports[idx].hw_addr
+    if p:
+        mod.hw_addr = p.hw_addr
     mod.config = config
     mod.mask = mask
-    mod.advertise = reply.ports[idx].advertised
+    if p:
+        mod.advertise = p.advertised
     controller.message_send(mod)
     return 0
 
@@ -714,6 +716,8 @@
             logging.info("Ran " + str(test_count) + " tests; exiting")
             break
 
+    if not test_param_get('pktout_actions', default=True):
+        return
 
     ingress_port = of_ports[0]
     egr_ports = get_egr_list(parent, of_ports, egr_count,
diff --git a/tests/cxn.py b/tests/cxn.py
index 4b3ee59..34bacad 100644
--- a/tests/cxn.py
+++ b/tests/cxn.py
@@ -25,9 +25,6 @@
     Base handshake case to set up controller, but do not send hello.
     """
 
-    controllers = []
-    default_timeout = 2
-
     def controllerSetup(self, host, port):
         con = controller.Controller(host=host,port=port)
 
@@ -42,6 +39,7 @@
     def setUp(self):
         logging.info("** START TEST CASE " + str(self))
 
+        self.controllers = []
         self.default_timeout = test_param_get('default_timeout',
                                               default=2)
 
