diff --git a/src/Wifi.cpp b/src/Wifi.cpp
index e2a7271e..0abc0cc5 100644
--- a/src/Wifi.cpp
+++ b/src/Wifi.cpp
@@ -2214,13 +2214,15 @@ void Write(u32 addr, u16 val)
         val &= 0x0FFF;
         break;
 
+    case W_TXSlotCmd:
+        if (CmdCounter == 0)
+            val = (val & 0x7FFF) | (IOPORT(W_TXSlotCmd) & 0x8000);
+        // fall-through
     case W_TXSlotLoc1:
     case W_TXSlotLoc2:
     case W_TXSlotLoc3:
-    case W_TXSlotCmd:
         // checkme: is it possible to cancel a queued transfer that hasn't started yet
         // by clearing bit15 here?
-        // TODO: "W_TXBUF_CMD.Bit15 can be set ONLY while W_CMD_COUNT is non-zero."
         IOPORT(addr&0xFFF) = val;
         FireTX();
         return;