Modules/IPStack - Disabled ethernet checksum generation, silenced some logging
[tpg/acess2.git] / KernelLand / Modules / IPStack / arp.c
index 43c3425..2957eee 100644 (file)
@@ -67,6 +67,7 @@ int ARP_Initialise()
        #endif
        
        Link_RegisterType(0x0806, ARP_int_GetPacket);
+       Semaphore_Init(&gARP_Cache4Semaphore, 0, 0, "ARP4", "Cache Changes");
        return 1;
 }
 
@@ -171,6 +172,7 @@ tMacAddr ARP_Resolve4(tInterface *Interface, tIPv4 Address)
                        Log_Log("ARP4", "Timeout");
                        break;
                }
+               Log_Debug("ARP4", "Cache change");
                
                Mutex_Acquire( &glARP_Cache4 );
                for( i = 0; i < giARP_Cache4Space; i++ )
@@ -219,17 +221,20 @@ void ARP_UpdateCache4(tIPv4 SWAddr, tMacAddr HWAddr)
                else
                        i = oldest;
        }
-       
-       Log_Log("ARP4", "Caching %i.%i.%i.%i (%02x:%02x:%02x:%02x:%02x:%02x) in %i",
-               SWAddr.B[0], SWAddr.B[1], SWAddr.B[2], SWAddr.B[3],
-               HWAddr.B[0], HWAddr.B[1], HWAddr.B[2], HWAddr.B[3], HWAddr.B[4], HWAddr.B[5],
-               i
-               );
+
+       if( memcmp(&gaARP_Cache4[i].MAC, &HWAddr, sizeof(HWAddr)) != 0 )
+       {
+               Log_Log("ARP4", "Caching %i.%i.%i.%i (%02x:%02x:%02x:%02x:%02x:%02x) in %i",
+                       SWAddr.B[0], SWAddr.B[1], SWAddr.B[2], SWAddr.B[3],
+                       HWAddr.B[0], HWAddr.B[1], HWAddr.B[2], HWAddr.B[3], HWAddr.B[4], HWAddr.B[5],
+                       i
+                       );
                
-       gaARP_Cache4[i].IP = SWAddr;
-       gaARP_Cache4[i].MAC = HWAddr;
-       gaARP_Cache4[i].LastUpdate = now();
-       Semaphore_Signal(&gARP_Cache4Semaphore, giARP_WaitingThreads);
+               gaARP_Cache4[i].IP = SWAddr;
+               gaARP_Cache4[i].MAC = HWAddr;
+               gaARP_Cache4[i].LastUpdate = now();
+               Semaphore_Signal(&gARP_Cache4Semaphore, giARP_WaitingThreads);
+       }
        Mutex_Release(&glARP_Cache4);
 }
 

UCC git Repository :: git.ucc.asn.au