X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=KernelLand%2FModules%2FIPStack%2Fadapters.c;h=16e0f9753dce2712a22bcd1f64dbfc0e78af040e;hb=ab5e490b4d1fba7570595b87d79d46c00c3ad8ac;hp=83741dfe582441e48f9e44edd537756a1c6912f1;hpb=11dbd684e9a3d907d43d71a3145205f1a86992fb;p=tpg%2Facess2.git diff --git a/KernelLand/Modules/IPStack/adapters.c b/KernelLand/Modules/IPStack/adapters.c index 83741dfe..16e0f975 100644 --- a/KernelLand/Modules/IPStack/adapters.c +++ b/KernelLand/Modules/IPStack/adapters.c @@ -344,7 +344,9 @@ void IPStack_SendDebugText(const char *Text) if( CPU_HAS_LOCK(&lLock) ) return ; // Nested! SHORTLOCK(&lLock); + #if ARCHDIR_is_x86 __asm__ __volatile__ ("sti"); // Start interrupts (x86 specific) + #endif // Cache packets until a newline static char cache[1500 - (sizeof(pkt_hdr) + 4)]; @@ -370,13 +372,13 @@ void IPStack_SendDebugText(const char *Text) memcpy(buffer, pkt_hdr, sizeof(pkt_hdr)); memcpy(buffer + sizeof(pkt_hdr), cache, cache_len); - *(Uint16*)&buffer[14+2] = BigEndian16( sizeof(pkt_hdr)-14 + cache_len ); // IP Size - *(Uint16*)&buffer[14+10] = BigEndian16( 0 ); // IP Header - *(Uint16*)&buffer[14+20+4] = BigEndian16( 8+cache_len ); // UDP Size - *(Uint16*)&buffer[14+20+6] = BigEndian16( 0 ); // UDP Checksum - *(Uint32*)&buffer[link_checksum_ofs] = BigEndian32( 0 ); // 802.3 checksum? + ((Uint16*)buffer)[(14+2)/2] = BigEndian16( sizeof(pkt_hdr)-14 + cache_len ); // IP Size + ((Uint16*)buffer)[(14+10)/2] = BigEndian16( 0 ); // IP Header + ((Uint16*)buffer)[(14+20+4)/2] = BigEndian16( 8+cache_len ); // UDP Size + ((Uint16*)buffer)[(14+20+6)/2] = BigEndian16( 0 ); // UDP Checksum +// *(Uint32*)&buffer[link_checksum_ofs] = BigEndian32( 0 ); // 802.3 checksum? // TODO: Calculate checksums - *(Uint16*)&buffer[14+10] = BigEndian16( IPv4_Checksum(buffer+14,20) ); // IP Header + ((Uint16*)buffer)[(14+10)/2] = BigEndian16( IPv4_Checksum(buffer+14,20) ); // IP Header // Create buffer tIPStackBuffer *buf = IPStack_Buffer_CreateBuffer(1);