diff --git a/src/shared/drivers/WIZ5500/WIZ5500.cpp b/src/shared/drivers/WIZ5500/WIZ5500.cpp
index 5019835e25a22d2772f42b7b037b44803c0786d9..d3a9a38f329fa5019ae7999763ed0124c5af2d5a 100644
--- a/src/shared/drivers/WIZ5500/WIZ5500.cpp
+++ b/src/shared/drivers/WIZ5500/WIZ5500.cpp
@@ -127,14 +127,16 @@ void Wiz5500::reset()
 
 void Wiz5500::handleINTn()
 {
-    if (interrupt_service_thread)
+    if (intn_thread)
     {
-        interrupt_service_thread->IRQwakeup();
-        if (interrupt_service_thread->IRQgetPriority() >
+        intn_thread->IRQwakeup();
+        if (intn_thread->IRQgetPriority() >
             miosix::Thread::IRQgetCurrentThread()->IRQgetPriority())
         {
             miosix::Scheduler::IRQfindNextThread();
         }
+
+        intn_thread = nullptr;
     }
 }
 
@@ -443,6 +445,7 @@ TimedWaitResult Wiz5500::waitForINTn(Lock<FastMutex>& l, long long until)
 
     Unlock<FastMutex> ul(l);
     FastInterruptDisableLock il;
+    intn_thread = Thread::IRQgetCurrentThread();
     while (intn.value() != 0 && result == TimedWaitResult::NoTimeout)
     {
         long long now = getTime();
diff --git a/src/shared/drivers/WIZ5500/WIZ5500.h b/src/shared/drivers/WIZ5500/WIZ5500.h
index 50dd23927a43f9dc732ea0bdac0cdcc6a05c23e7..bdc4172a4516170391a71df0e596515091795534 100644
--- a/src/shared/drivers/WIZ5500/WIZ5500.h
+++ b/src/shared/drivers/WIZ5500/WIZ5500.h
@@ -275,7 +275,10 @@ private:
     void spiWriteIp(uint8_t block, uint16_t address, WizIp data);
     void spiWriteMac(uint8_t block, uint16_t address, WizMac data);
 
+    // Thread currently servicing interrupts
     miosix::Thread* interrupt_service_thread = nullptr;
+    // Thread currently waiting for an INTn
+    miosix::Thread* intn_thread = nullptr;
 
     struct ThreadWaitInfo
     {
diff --git a/src/tests/drivers/test-wiz5500.cpp b/src/tests/drivers/test-wiz5500.cpp
index 4c37f5f138938066609f95f0fc3272ee809c2c08..432407ef0aa915fd07402059ebca92f7b4132ec8 100644
--- a/src/tests/drivers/test-wiz5500.cpp
+++ b/src/tests/drivers/test-wiz5500.cpp
@@ -290,7 +290,6 @@ int main()
             std::cout << ip << ":" << port << std::endl;
         });
 
-    
     wiz->setOnIpConflict([]() { printf("[wiz5500] Ip conflict\n"); });
 
     wiz->setGatewayIp({192, 168, 1, 1});