diff --git a/tests/testutils.py b/tests/testutils.py
index 084f74d..450b330 100644
--- a/tests/testutils.py
+++ b/tests/testutils.py
@@ -214,7 +214,8 @@
     rv = controller.message_send(mod)
     return rv
 
-def receive_pkt_check(dataplane, pkt, yes_ports, no_ports, assert_if, logger):
+def receive_pkt_check(dataplane, pkt, yes_ports, no_ports, assert_if, logger,
+                      config):
     """
     Check for proper receive packets across all ports
     @param dataplane The dataplane object
@@ -223,10 +224,14 @@
     @param no_ports Set or list of ports that should not receive packet
     @param assert_if Object that implements assertXXX
     """
+    exp_pkt_arg = None
+    if config and config["relax"]:
+        exp_pkt_arg = pkt
+
     for ofport in yes_ports:
         logger.debug("Checking for pkt on port " + str(ofport))
         (rcv_port, rcv_pkt, pkt_time) = dataplane.poll(
-            port_number=ofport, timeout=1)
+            port_number=ofport, timeout=1, exp_pkt=exp_pkt_arg)
         assert_if.assertTrue(rcv_pkt is not None, 
                              "Did not receive pkt on " + str(ofport))
         assert_if.assertEqual(str(pkt), str(rcv_pkt),
@@ -236,7 +241,7 @@
     for ofport in no_ports:
         logger.debug("Negative check for pkt on port " + str(ofport))
         (rcv_port, rcv_pkt, pkt_time) = dataplane.poll(
-            port_number=ofport, timeout=1)
+            port_number=ofport, timeout=1, exp_pkt=exp_pkt_arg)
         assert_if.assertTrue(rcv_pkt is None, 
                              "Unexpected pkt on port " + str(ofport))
 
@@ -247,8 +252,14 @@
 
     parent must implement dataplane, assertTrue and assertEqual
     """
+    exp_pkt_arg = None
+    if parent.config["relax"]:
+        exp_pkt_arg = exp_pkt
+
     (rcv_port, rcv_pkt, pkt_time) = parent.dataplane.poll(port_number=egr_port,
-                                                          timeout=1)
+                                                          timeout=1, 
+                                                          exp_pkt=exp_pkt_arg)
+
     if rcv_pkt is None:
         parent.logger.error("ERROR: No packet received from " + str(egr_port))
 
@@ -592,7 +603,6 @@
 
     new_actions = []
 
-
     base_pkt_params = {}
     base_pkt_params['pktlen'] = 100
     base_pkt_params['dl_dst'] = '00:DE:F0:12:34:56'
