diff --git a/providers/null/src/main/java/org/onosproject/provider/nil/NullPacketProvider.java b/providers/null/src/main/java/org/onosproject/provider/nil/NullPacketProvider.java
index 3791393..54b45e4 100644
--- a/providers/null/src/main/java/org/onosproject/provider/nil/NullPacketProvider.java
+++ b/providers/null/src/main/java/org/onosproject/provider/nil/NullPacketProvider.java
@@ -40,6 +40,7 @@
 import java.util.stream.Collectors;
 
 import static com.google.common.collect.ImmutableList.copyOf;
+import static java.util.concurrent.TimeUnit.MILLISECONDS;
 import static java.util.concurrent.TimeUnit.SECONDS;
 import static org.onosproject.net.MastershipRole.MASTER;
 import static org.slf4j.LoggerFactory.getLogger;
@@ -99,7 +100,11 @@
      * @param packetRate new packet rate
      */
     void adjustRate(int packetRate) {
-        delay = 1000 / packetRate;
+        boolean needsRestart = delay == 0 && packetRate > 0;
+        delay = packetRate > 0 ? 1000 / packetRate : 0;
+        if (needsRestart) {
+            timeout = timer.newTimeout(new PacketDriverTask(), 1, MILLISECONDS);
+        }
         log.info("Settings: packetRate={}, delay={}", packetRate, delay);
     }
 
@@ -126,7 +131,7 @@
         ICMP icmp;
         Ethernet eth;
 
-        public PacketDriverTask() {
+        PacketDriverTask() {
             icmp = new ICMP();
             icmp.setIcmpType((byte) 8).setIcmpCode((byte) 0).setChecksum((short) 0);
             eth = new Ethernet();
@@ -136,7 +141,7 @@
 
         @Override
         public void run(Timeout to) {
-            if (!devices.isEmpty() && !to.isCancelled()) {
+            if (!devices.isEmpty() && !to.isCancelled() && delay > 0) {
                 sendEvent(devices.get(Math.min(currentDevice, devices.size() - 1)));
                 currentDevice = (currentDevice + 1) % devices.size();
                 timeout = timer.newTimeout(to.getTask(), delay, TimeUnit.MILLISECONDS);
@@ -145,8 +150,8 @@
 
         private void sendEvent(Device device) {
             // Make it look like things came from ports attached to hosts
-            eth.setSourceMACAddress("00:00:10:00:00:0" + SRC_HOST)
-                    .setDestinationMACAddress("00:00:10:00:00:0" + DST_HOST);
+            eth.setSourceMACAddress("00:00:00:10:00:0" + SRC_HOST)
+                    .setDestinationMACAddress("00:00:00:10:00:0" + DST_HOST);
             InboundPacket inPkt = new DefaultInboundPacket(
                     new ConnectPoint(device.id(), PortNumber.portNumber(SRC_HOST)),
                     eth, ByteBuffer.wrap(eth.serialize()));
