Lines Matching refs:buffer

74 #	define PROBE(buffer, window) \
79 system_time(), PrintAddress(buffer->source), \
80 PrintAddress(buffer->destination), buffer->size, fSendNext.Number(), \
85 # define PROBE(buffer, window) do { } while (0)
94 net_buffer* buffer)
97 fBuffer(buffer),
98 fBufferSize(buffer->size),
110 out.Print("tcp:%p (%12s) receive buffer %p (%" B_PRIu32 " bytes), "
129 Send(TCPEndpoint* endpoint, tcp_segment_header& segment, net_buffer* buffer,
133 fBuffer(buffer),
134 fBufferSize(buffer->size),
147 out.Print("tcp:%p (%12s) send buffer %p (%" B_PRIu32 " bytes), "
805 /*! Puts data contained in \a buffer into send buffer */
807 TCPEndpoint::SendData(net_buffer *buffer)
811 TRACE("SendData(buffer %p, size %" B_PRIu32 ", flags %#" B_PRIx32
812 ") [total %" B_PRIuSIZE " bytes, has %" B_PRIuSIZE "]", buffer,
813 buffer->size, buffer->flags, fSendQueue.Size(), fSendQueue.Free());
816 const uint32 flags = buffer->flags;
827 size_t left = buffer->size;
857 // we need to split the original buffer
858 net_buffer* clone = gBufferModule->clone(buffer, false);
870 gBufferModule->remove_header(buffer, size);
874 left -= buffer->size;
875 fSendQueue.Add(buffer);
1377 TCPEndpoint::_AddData(tcp_segment_header& segment, net_buffer* buffer)
1382 fFinishReceivedAt = segment.sequence + buffer->size;
1385 fReceiveQueue.Add(buffer, segment.sequence);
1470 net_buffer* buffer)
1487 if (fManager->BindChild(this, buffer->destination) != B_OK) {
1491 if (_PrepareSendPath(buffer->source) != B_OK) {
1510 return _Receive(segment, buffer);
1515 TCPEndpoint::_ListenReceive(tcp_segment_header& segment, net_buffer* buffer)
1538 segment, buffer);
1544 net_buffer *buffer)
1575 return _Receive(segment, buffer) | IMMEDIATE_ACKNOWLEDGE;
1580 TCPEndpoint::_Receive(tcp_segment_header& segment, net_buffer* buffer)
1592 size_t segmentLength = buffer->size;
1616 if (_AddData(segment, buffer))
1676 // buffer?
1680 // trim buffer to be within the receive window
1683 if ((uint32)drop > buffer->size
1684 || ((uint32)drop == buffer->size
1688 drop = buffer->size;
1693 gBufferModule->remove_header(buffer, drop);
1703 drop = (int32)(segment.sequence + buffer->size
1707 if ((uint32)drop >= buffer->size) {
1723 gBufferModule->remove_trailer(buffer, drop);
1755 if (buffer->size == 0 && advertisedWindow == fSendWindow
1822 // The buffer may be freed if its data is added to the queue, so cache
1824 const uint32 bufferSize = buffer->size;
1828 notify = _AddData(segment, buffer);
1831 fReceiveNext += buffer->size;
1892 TCPEndpoint::SegmentReceived(tcp_segment_header& segment, net_buffer* buffer)
1896 TRACE("SegmentReceived(): buffer %p (%" B_PRIu32 " bytes) address %s "
1898 ", wnd %" B_PRIu32, buffer, buffer->size, PrintAddress(buffer->source),
1899 PrintAddress(buffer->destination), segment.flags, segment.sequence,
1903 (uint32)segment.advertised_window << fSendWindowShift, buffer));
1908 segmentAction = _ListenReceive(segment, buffer);
1912 segmentAction = _SynchronizeSentReceive(segment, buffer);
1924 segmentAction = _Receive(segment, buffer);
2042 TCPEndpoint::_PrepareAndSend(tcp_segment_header& segment, net_buffer* buffer,
2045 LocalAddress().CopyTo(buffer->source);
2046 PeerAddress().CopyTo(buffer->destination);
2048 uint32 size = buffer->size, segmentLength = size;
2051 TRACE("_PrepareAndSend(): buffer %p (%" B_PRIu32 " bytes) address %s to "
2055 buffer, buffer->size, PrintAddress(buffer->source),
2056 PrintAddress(buffer->destination), segment.flags, segment.sequence,
2061 T(Send(this, segment, buffer, fSendQueue.FirstSequence(),
2064 PROBE(buffer, sendWindow);
2066 status_t status = add_tcp_header(AddressModule(), segment, buffer);
2068 gBufferModule->free(buffer);
2081 status = next->module->send_routed_data(next, fRoute, buffer);
2083 gBufferModule->free(buffer);
2121 // - we're at the end of our buffer queue, or
2122 // - the buffer is at least larger than half of the maximum send window,
2139 // size, or half the maximum buffer size we send a window update
2173 net_buffer* buffer = gBufferModule->create(256);
2174 if (buffer == NULL)
2177 return _PrepareAndSend(segment, buffer, false);
2253 net_buffer *buffer = gBufferModule->create(256);
2254 if (buffer == NULL)
2259 status = fSendQueue.Get(buffer, fSendNext, segmentLength);
2261 gBufferModule->free(buffer);
2265 sendWindow -= buffer->size;
2267 status = _PrepareAndSend(segment, buffer, retransmit);