Calmed down the networking stack a lot - since it basically works, there is no

reason to slow it down with debug output that much; this will also help investigating
some issues where you just aren't interested in most of the output.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19672 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Axel Dörfler
2007-01-01 22:10:43 +00:00
parent 10f5cebea3
commit af3a31f770
11 changed files with 32 additions and 29 deletions
@@ -32,7 +32,7 @@
#include <sys/sockio.h> #include <sys/sockio.h>
#define TRACE_ARP //#define TRACE_ARP
#ifdef TRACE_ARP #ifdef TRACE_ARP
# define TRACE(x) dprintf x # define TRACE(x) dprintf x
#else #else
@@ -130,7 +130,7 @@ ethernet_send_data(net_device *_device, net_buffer *buffer)
{ {
ethernet_device *device = (ethernet_device *)_device; ethernet_device *device = (ethernet_device *)_device;
dprintf("try to send ethernet packet of %lu bytes (flags %ld):\n", buffer->size, buffer->flags); //dprintf("try to send ethernet packet of %lu bytes (flags %ld):\n", buffer->size, buffer->flags);
if (buffer->size > device->frame_size || buffer->size < ETHER_HEADER_LENGTH) if (buffer->size > device->frame_size || buffer->size < ETHER_HEADER_LENGTH)
return B_BAD_VALUE; return B_BAD_VALUE;
@@ -156,9 +156,9 @@ dprintf("try to send ethernet packet of %lu bytes (flags %ld):\n", buffer->size,
struct iovec iovec; struct iovec iovec;
gBufferModule->get_iovecs(buffer, &iovec, 1); gBufferModule->get_iovecs(buffer, &iovec, 1);
dump_block((const char *)iovec.iov_base, buffer->size, " "); //dump_block((const char *)iovec.iov_base, buffer->size, " ");
ssize_t bytesWritten = write(device->fd, iovec.iov_base, iovec.iov_len); ssize_t bytesWritten = write(device->fd, iovec.iov_base, iovec.iov_len);
dprintf("sent: %ld\n", bytesWritten); //dprintf("sent: %ld\n", bytesWritten);
if (bytesWritten < 0) { if (bytesWritten < 0) {
device->stats.send.errors++; device->stats.send.errors++;
@@ -28,7 +28,7 @@
#include <string.h> #include <string.h>
#define TRACE_IPV4 //#define TRACE_IPV4
#ifdef TRACE_IPV4 #ifdef TRACE_IPV4
# define TRACE(x) dprintf x # define TRACE(x) dprintf x
#else #else
@@ -12,7 +12,7 @@
#include <KernelExport.h> #include <KernelExport.h>
#define TRACE_BUFFER_QUEUE //#define TRACE_BUFFER_QUEUE
#ifdef TRACE_BUFFER_QUEUE #ifdef TRACE_BUFFER_QUEUE
# define TRACE(x) dprintf x # define TRACE(x) dprintf x
#else #else
@@ -17,7 +17,7 @@
#include <KernelExport.h> #include <KernelExport.h>
#define TRACE_ENDPOINT_MANAGER //#define TRACE_ENDPOINT_MANAGER
#ifdef TRACE_ENDPOINT_MANAGER #ifdef TRACE_ENDPOINT_MANAGER
# define TRACE(x) dprintf x # define TRACE(x) dprintf x
#else #else
@@ -41,7 +41,7 @@
// SACK, Selective Acknowledgment - RFC 2018, RFC 2883, RFC 3517 // SACK, Selective Acknowledgment - RFC 2018, RFC 2883, RFC 3517
// Forward RTO-Recovery, RFC 4138 // Forward RTO-Recovery, RFC 4138
#define TRACE_TCP //#define TRACE_TCP
#ifdef TRACE_TCP #ifdef TRACE_TCP
# define TRACE(x) dprintf x # define TRACE(x) dprintf x
#else #else
@@ -380,7 +380,7 @@ TCPEndpoint::SendData(net_buffer *buffer)
* fSendMaxSegmentSize; * fSendMaxSegmentSize;
chunk = gBufferModule->split(buffer, chunkSize); chunk = gBufferModule->split(buffer, chunkSize);
dprintf(" TCP::Send() split buffer at %lu (buffer size %lu, mss %lu) -> %p\n", chunkSize, socket->send.buffer_size, fSendMaxSegmentSize, chunk); TRACE((" TCP::Send() split buffer at %lu (buffer size %lu, mss %lu) -> %p\n", chunkSize, socket->send.buffer_size, fSendMaxSegmentSize, chunk));
if (chunk == NULL) if (chunk == NULL)
return B_NO_MEMORY; return B_NO_MEMORY;
} else } else
@@ -475,7 +475,7 @@ TCPEndpoint::ReadData(size_t numBytes, uint32 flags, net_buffer** _buffer)
RecursiveLocker locker(fLock); RecursiveLocker locker(fLock);
dprintf("read %lu bytes, %lu are available\n", numBytes, fReceiveQueue.Available()); TRACE(("read %lu bytes, %lu are available\n", numBytes, fReceiveQueue.Available()));
if (numBytes < fReceiveQueue.Available()) if (numBytes < fReceiveQueue.Available())
release_sem_etc(fReceiveLock, 1, B_DO_NOT_RESCHEDULE); release_sem_etc(fReceiveLock, 1, B_DO_NOT_RESCHEDULE);
@@ -722,7 +722,7 @@ TCPEndpoint::Receive(tcp_segment_header &segment, net_buffer *buffer)
// this is a pure acknowledge segment - we're on the sending end // this is a pure acknowledge segment - we're on the sending end
if (fSendUnacknowledged < segment.acknowledge if (fSendUnacknowledged < segment.acknowledge
&& fSendMax >= segment.acknowledge) { && fSendMax >= segment.acknowledge) {
dprintf("header prediction send!\n"); TRACE(("header prediction send!\n"));
// and it only acknowledges outstanding data // and it only acknowledges outstanding data
// TODO: update RTT estimators // TODO: update RTT estimators
@@ -745,11 +745,11 @@ dprintf("header prediction send!\n");
} else if (segment.acknowledge == fSendUnacknowledged } else if (segment.acknowledge == fSendUnacknowledged
&& fReceiveQueue.IsContiguous() && fReceiveQueue.IsContiguous()
&& fReceiveQueue.Free() >= buffer->size) { && fReceiveQueue.Free() >= buffer->size) {
dprintf("header prediction receive!\n"); TRACE(("header prediction receive!\n"));
// we're on the receiving end of the connection, and this segment // we're on the receiving end of the connection, and this segment
// is the one we were expecting, in-sequence // is the one we were expecting, in-sequence
fReceiveNext += buffer->size; fReceiveNext += buffer->size;
dprintf("receive next = %lu!\n", (uint32)fReceiveNext); TRACE(("receive next = %lu!\n", (uint32)fReceiveNext));
fReceiveQueue.Add(buffer, segment.sequence); fReceiveQueue.Add(buffer, segment.sequence);
release_sem_etc(fReceiveLock, 1, B_DO_NOT_RESCHEDULE); release_sem_etc(fReceiveLock, 1, B_DO_NOT_RESCHEDULE);
@@ -805,7 +805,7 @@ dprintf("receive next = %lu!\n", (uint32)fReceiveNext);
} }
// remove duplicate data at the start // remove duplicate data at the start
dprintf("* remove %ld bytes from the start\n", drop); TRACE(("* remove %ld bytes from the start\n", drop));
gBufferModule->remove_header(buffer, drop); gBufferModule->remove_header(buffer, drop);
segment.sequence += drop; segment.sequence += drop;
} }
@@ -830,7 +830,7 @@ dprintf("* remove %ld bytes from the start\n", drop);
} }
segment.flags &= ~(TCP_FLAG_FINISH | TCP_FLAG_PUSH); segment.flags &= ~(TCP_FLAG_FINISH | TCP_FLAG_PUSH);
dprintf("* remove %ld bytes from the end\n", drop); TRACE(("* remove %ld bytes from the end\n", drop));
gBufferModule->remove_trailer(buffer, drop); gBufferModule->remove_trailer(buffer, drop);
} }
@@ -859,7 +859,7 @@ dprintf("* remove %ld bytes from the end\n", drop);
// TODO: handle this! // TODO: handle this!
if (buffer->size == 0 && advertisedWindow == fSendWindow if (buffer->size == 0 && advertisedWindow == fSendWindow
&& (segment.flags & TCP_FLAG_FINISH) == 0) { && (segment.flags & TCP_FLAG_FINISH) == 0) {
dprintf("duplicate ack!\n"); TRACE(("duplicate ack!\n"));
fDuplicateAcknowledgeCount++; fDuplicateAcknowledgeCount++;
gStackModule->cancel_timer(&fRetransmitTimer); gStackModule->cancel_timer(&fRetransmitTimer);
@@ -876,10 +876,10 @@ dprintf("* remove %ld bytes from the end\n", drop);
// there is no outstanding data to be acknowledged // there is no outstanding data to be acknowledged
// TODO: if the transmit timer function is already waiting // TODO: if the transmit timer function is already waiting
// to acquire this endpoint's lock, we should stop it anyway // to acquire this endpoint's lock, we should stop it anyway
dprintf("all inflight data ack'd!\n"); TRACE(("all inflight data ack'd!\n"));
gStackModule->cancel_timer(&fRetransmitTimer); gStackModule->cancel_timer(&fRetransmitTimer);
} else { } else {
dprintf("set retransmit timer!\n"); TRACE(("set retransmit timer!\n"));
// TODO: set retransmit timer correctly // TODO: set retransmit timer correctly
if (!gStackModule->is_timer_active(&fRetransmitTimer)) if (!gStackModule->is_timer_active(&fRetransmitTimer))
gStackModule->set_timer(&fRetransmitTimer, 1000000LL); gStackModule->set_timer(&fRetransmitTimer, 1000000LL);
@@ -893,7 +893,7 @@ dprintf("set retransmit timer!\n");
if (segment.acknowledge > fSendQueue.LastSequence() && fState > ESTABLISHED) { if (segment.acknowledge > fSendQueue.LastSequence() && fState > ESTABLISHED) {
// our TCP_FLAG_FINISH has been acknowledged // our TCP_FLAG_FINISH has been acknowledged
dprintf("FIN has been acknowledged!\n"); TRACE(("FIN has been acknowledged!\n"));
switch (fState) { switch (fState) {
case FINISH_SENT: case FINISH_SENT:
@@ -923,7 +923,7 @@ dprintf("FIN has been acknowledged!\n");
// TODO: ignore data *after* FIN // TODO: ignore data *after* FIN
if (segment.flags & TCP_FLAG_FINISH) { if (segment.flags & TCP_FLAG_FINISH) {
dprintf("peer is finishing connection!"); TRACE(("peer is finishing connection!"));
fReceiveNext++; fReceiveNext++;
fFlags |= FLAG_NO_RECEIVE; fFlags |= FLAG_NO_RECEIVE;
@@ -966,7 +966,7 @@ dprintf("FIN has been acknowledged!\n");
if (buffer->size > 0) { if (buffer->size > 0) {
if (fReceiveNext == segment.sequence) if (fReceiveNext == segment.sequence)
fReceiveNext += buffer->size; fReceiveNext += buffer->size;
dprintf("adding data, receive next = %lu!\n", (uint32)fReceiveNext); TRACE(("adding data, receive next = %lu!\n", (uint32)fReceiveNext));
fReceiveQueue.Add(buffer, segment.sequence); fReceiveQueue.Add(buffer, segment.sequence);
release_sem_etc(fReceiveLock, 1, B_DO_NOT_RESCHEDULE); release_sem_etc(fReceiveLock, 1, B_DO_NOT_RESCHEDULE);
@@ -29,7 +29,7 @@
#include <NetBufferUtilities.h> #include <NetBufferUtilities.h>
#include <NetUtilities.h> #include <NetUtilities.h>
#define TRACE_TCP //#define TRACE_TCP
#ifdef TRACE_TCP #ifdef TRACE_TCP
# define TRACE(x) dprintf x # define TRACE(x) dprintf x
# define TRACE_BLOCK(x) dump_block x # define TRACE_BLOCK(x) dump_block x
@@ -298,7 +298,7 @@ name_for_state(tcp_state state)
#if 0 #if 0
void static void
dump_tcp_header(tcp_header &header) dump_tcp_header(tcp_header &header)
{ {
dprintf(" source port: %u\n", ntohs(header.source_port)); dprintf(" source port: %u\n", ntohs(header.source_port));
@@ -528,6 +528,7 @@ tcp_receive_data(net_buffer *buffer)
AddressString(gDomain, (sockaddr *)&buffer->source, true).Data(), AddressString(gDomain, (sockaddr *)&buffer->source, true).Data(),
AddressString(gDomain, (sockaddr *)&buffer->destination, true).Data())); AddressString(gDomain, (sockaddr *)&buffer->destination, true).Data()));
//dump_tcp_header(header); //dump_tcp_header(header);
//gBufferModule->dump(buffer);
tcp_segment_header segment; tcp_segment_header segment;
segment.sequence = header.Sequence(); segment.sequence = header.Sequence();
@@ -27,7 +27,7 @@
#include <string.h> #include <string.h>
#define TRACE_UDP //#define TRACE_UDP
#ifdef TRACE_UDP #ifdef TRACE_UDP
# define TRACE(x) dprintf x # define TRACE(x) dprintf x
# define TRACE_BLOCK(x) dump_block x # define TRACE_BLOCK(x) dump_block x
@@ -49,7 +49,7 @@ device_reader_thread(void *_interface)
net_buffer *buffer; net_buffer *buffer;
status = device->module->receive_data(device, &buffer); status = device->module->receive_data(device, &buffer);
if (status == B_OK) { if (status == B_OK) {
dprintf("received buffer of %ld bytes length\n", buffer->size); //dprintf("received buffer of %ld bytes length\n", buffer->size);
tries = 0; tries = 0;
// feed device monitors // feed device monitors
@@ -354,8 +354,8 @@ datalink_send_data(struct net_route *route, net_buffer *buffer)
net_interface *interface = route->interface; net_interface *interface = route->interface;
net_domain *domain = interface->domain; net_domain *domain = interface->domain;
dprintf("send buffer (%ld bytes) to interface %s (route flags %lx)\n", //dprintf("send buffer (%ld bytes) to interface %s (route flags %lx)\n",
buffer->size, interface->name, route->flags); // buffer->size, interface->name, route->flags);
if (route->flags & RTF_REJECT) if (route->flags & RTF_REJECT)
return ENETUNREACH; return ENETUNREACH;
+1 -1
View File
@@ -27,7 +27,7 @@
#include <sys/sockio.h> #include <sys/sockio.h>
#define TRACE_ROUTES //#define TRACE_ROUTES
#ifdef TRACE_ROUTES #ifdef TRACE_ROUTES
# define TRACE(x) dprintf x # define TRACE(x) dprintf x
#else #else
+3 -1
View File
@@ -31,7 +31,7 @@
#include <string.h> #include <string.h>
#define TRACE_STACK //#define TRACE_STACK
#ifdef TRACE_STACK #ifdef TRACE_STACK
# define TRACE(x) dprintf x # define TRACE(x) dprintf x
#else #else
@@ -314,9 +314,11 @@ chain::Hash(void *_chain, const void *_key, uint32 range)
// TODO: check if this makes a good hash... // TODO: check if this makes a good hash...
#define HASH(o) ((uint32)(((o)->family) ^ ((o)->type) ^ ((o)->protocol)) % range) #define HASH(o) ((uint32)(((o)->family) ^ ((o)->type) ^ ((o)->protocol)) % range)
#if 0
TRACE(("%d.%d.%d: Hash: %lu\n", chain ? chain->family : key->family, TRACE(("%d.%d.%d: Hash: %lu\n", chain ? chain->family : key->family,
chain ? chain->type : key->type, chain ? chain->protocol : key->protocol, chain ? chain->type : key->type, chain ? chain->protocol : key->protocol,
chain ? HASH(chain) : HASH(key))); chain ? HASH(chain) : HASH(key)));
#endif
if (chain != NULL) if (chain != NULL)
return HASH(chain); return HASH(chain);