View | Details | Raw Unified | Return to bug 1039
Collapse All | Expand All

(-)a/src/internet/model/nsc-tcp-socket-impl.cc (-1 / +15 lines)
 Lines 63-69    Link Here 
63
}
63
}
64
64
65
NscTcpSocketImpl::NscTcpSocketImpl ()
65
NscTcpSocketImpl::NscTcpSocketImpl ()
66
  : m_endPoint (0),
66
  : m_nagle (false),
67
    m_endPoint (0),
67
    m_node (0),
68
    m_node (0),
68
    m_tcp (0),
69
    m_tcp (0),
69
    m_localAddress (Ipv4Address::GetZero ()),
70
    m_localAddress (Ipv4Address::GetZero ()),
 Lines 85-90    Link Here 
85
  : TcpSocket(sock), //copy the base class callbacks
86
  : TcpSocket(sock), //copy the base class callbacks
86
    m_delAckMaxCount (sock.m_delAckMaxCount),
87
    m_delAckMaxCount (sock.m_delAckMaxCount),
87
    m_delAckTimeout (sock.m_delAckTimeout),
88
    m_delAckTimeout (sock.m_delAckTimeout),
89
    m_nagle (sock.m_nagle),
88
    m_endPoint (0),
90
    m_endPoint (0),
89
    m_node (sock.m_node),
91
    m_node (sock.m_node),
90
    m_tcp (sock.m_tcp),
92
    m_tcp (sock.m_tcp),
 Lines 794-799    Link Here 
794
  return m_delAckMaxCount;
796
  return m_delAckMaxCount;
795
}
797
}
796
798
799
void
800
NscTcpSocketImpl::SetNagle (bool enable)
801
{
802
  m_nagle = enable;
803
}
804
805
bool
806
NscTcpSocketImpl::GetNagle (void) const
807
{
808
  return m_nagle;
809
}
810
797
void 
811
void 
798
NscTcpSocketImpl::SetPersistTimeout (Time timeout)
812
NscTcpSocketImpl::SetPersistTimeout (Time timeout)
799
{
813
{
(-)a/src/internet/model/nsc-tcp-socket-impl.h (+3 lines)
 Lines 124-129    Link Here 
124
  virtual void SetDelAckTimeout (Time timeout);
124
  virtual void SetDelAckTimeout (Time timeout);
125
  virtual Time GetDelAckTimeout (void) const;
125
  virtual Time GetDelAckTimeout (void) const;
126
  virtual void SetDelAckMaxCount (uint32_t count);
126
  virtual void SetDelAckMaxCount (uint32_t count);
127
  virtual bool GetNagle (void) const;
128
  virtual void SetNagle (bool enable);
127
  virtual uint32_t GetDelAckMaxCount (void) const;
129
  virtual uint32_t GetDelAckMaxCount (void) const;
128
  virtual void SetPersistTimeout (Time timeout);
130
  virtual void SetPersistTimeout (Time timeout);
129
  virtual Time GetPersistTimeout (void) const;
131
  virtual Time GetPersistTimeout (void) const;
 Lines 131-136    Link Here 
131
  enum Socket::SocketErrno GetNativeNs3Errno(int err) const;
133
  enum Socket::SocketErrno GetNativeNs3Errno(int err) const;
132
  uint32_t m_delAckMaxCount;
134
  uint32_t m_delAckMaxCount;
133
  Time m_delAckTimeout;
135
  Time m_delAckTimeout;
136
  bool m_nagle;
134
137
135
  Ipv4EndPoint *m_endPoint;
138
  Ipv4EndPoint *m_endPoint;
136
  Ptr<Node> m_node;
139
  Ptr<Node> m_node;
(-)a/src/internet/model/rtt-estimator.cc (-1 / +1 lines)
 Lines 53-59    Link Here 
53
                   MakeTimeChecker ())
53
                   MakeTimeChecker ())
54
    .AddAttribute ("MinRTO", 
54
    .AddAttribute ("MinRTO", 
55
                   "Minimum retransmit timeout value",
55
                   "Minimum retransmit timeout value",
56
                   TimeValue (Seconds (0.2)),
56
                   TimeValue (Seconds (1)),
57
                   MakeTimeAccessor (&RttEstimator::minrto),
57
                   MakeTimeAccessor (&RttEstimator::minrto),
58
                   MakeTimeChecker ())
58
                   MakeTimeChecker ())
59
    ;
59
    ;
(-)a/src/internet/model/tcp-socket-base.cc (+24 lines)
 Lines 83-88    Link Here 
83
TcpSocketBase::TcpSocketBase (void)
83
TcpSocketBase::TcpSocketBase (void)
84
  : m_dupAckCount (0),
84
  : m_dupAckCount (0),
85
    m_delAckCount (0),
85
    m_delAckCount (0),
86
    m_nagle (true),
86
    m_endPoint (0),
87
    m_endPoint (0),
87
    m_node (0),
88
    m_node (0),
88
    m_tcp (0),
89
    m_tcp (0),
 Lines 109-114    Link Here 
109
    m_dupAckCount (sock.m_dupAckCount),
110
    m_dupAckCount (sock.m_dupAckCount),
110
    m_delAckCount (0),
111
    m_delAckCount (0),
111
    m_delAckMaxCount (sock.m_delAckMaxCount),
112
    m_delAckMaxCount (sock.m_delAckMaxCount),
113
    m_nagle (sock.m_nagle),
112
    m_cnCount (sock.m_cnCount),
114
    m_cnCount (sock.m_cnCount),
113
    m_delAckTimeout (sock.m_delAckTimeout),
115
    m_delAckTimeout (sock.m_delAckTimeout),
114
    m_persistTimeout (sock.m_persistTimeout),
116
    m_persistTimeout (sock.m_persistTimeout),
 Lines 1296-1301    Link Here 
1296
        {
1298
        {
1297
          break; // No more
1299
          break; // No more
1298
        }
1300
        }
1301
1302
      // Nagle's algorithm. Hold off sending if there is unacked data in the 
1303
      // buffer and the amount of data to send is less than a segment size
1304
      if (UnAckDataCount () > 0 && 
1305
          m_txBuffer.SizeFromSequence (m_nextTxSequence) < m_segmentSize)
1306
        {
1307
          NS_LOG_LOGIC ("Invoking Nagle's algorithm. Wait to send.");
1308
          break;
1309
        }
1310
1299
      uint32_t s = std::min (w, m_segmentSize);  // Send no more than window
1311
      uint32_t s = std::min (w, m_segmentSize);  // Send no more than window
1300
      Ptr<Packet> p = m_txBuffer.CopyFromSequence (s, m_nextTxSequence);
1312
      Ptr<Packet> p = m_txBuffer.CopyFromSequence (s, m_nextTxSequence);
1301
      NS_LOG_LOGIC ("TcpSocketBase " << this << " SendPendingData" <<
1313
      NS_LOG_LOGIC ("TcpSocketBase " << this << " SendPendingData" <<
 Lines 1732-1737    Link Here 
1732
}
1744
}
1733
1745
1734
void
1746
void
1747
TcpSocketBase::SetNagle (bool enable)
1748
{
1749
  m_nagle = enable;
1750
}
1751
1752
bool
1753
TcpSocketBase::GetNagle (void) const
1754
{
1755
  return m_nagle;
1756
}
1757
1758
void
1735
TcpSocketBase::SetPersistTimeout (Time timeout)
1759
TcpSocketBase::SetPersistTimeout (Time timeout)
1736
{
1760
{
1737
  m_persistTimeout = timeout;
1761
  m_persistTimeout = timeout;
(-)a/src/internet/model/tcp-socket-base.h (+3 lines)
 Lines 115-120    Link Here 
115
  virtual Time     GetDelAckTimeout (void) const;
115
  virtual Time     GetDelAckTimeout (void) const;
116
  virtual void     SetDelAckMaxCount (uint32_t count);
116
  virtual void     SetDelAckMaxCount (uint32_t count);
117
  virtual uint32_t GetDelAckMaxCount (void) const;
117
  virtual uint32_t GetDelAckMaxCount (void) const;
118
  virtual void     SetNagle (bool enable);
119
  virtual bool     GetNagle (void) const;
118
  virtual void     SetPersistTimeout (Time timeout);
120
  virtual void     SetPersistTimeout (Time timeout);
119
  virtual Time     GetPersistTimeout (void) const;
121
  virtual Time     GetPersistTimeout (void) const;
120
  virtual bool     SetAllowBroadcast (bool allowBroadcast);
122
  virtual bool     SetAllowBroadcast (bool allowBroadcast);
 Lines 182-187    Link Here 
182
  uint32_t          m_dupAckCount;     //< Dupack counter
184
  uint32_t          m_dupAckCount;     //< Dupack counter
183
  uint32_t          m_delAckCount;     //< Delayed ACK counter
185
  uint32_t          m_delAckCount;     //< Delayed ACK counter
184
  uint32_t          m_delAckMaxCount;  //< Number of packet to fire an ACK before delay timeout
186
  uint32_t          m_delAckMaxCount;  //< Number of packet to fire an ACK before delay timeout
187
  bool              m_nagle;           //< Enable or disable Nagle's algorithm
185
  uint32_t          m_cnCount;         //< Count of remaining connection retries
188
  uint32_t          m_cnCount;         //< Count of remaining connection retries
186
  TracedValue<Time> m_rto;             //< Retransmit timeout
189
  TracedValue<Time> m_rto;             //< Retransmit timeout
187
  TracedValue<Time> m_lastRtt;         //< Last RTT sample collected
190
  TracedValue<Time> m_lastRtt;         //< Last RTT sample collected
(-)a/src/internet/model/tcp-socket.cc (+6 lines)
 Lines 22-27    Link Here 
22
#include "ns3/log.h"
22
#include "ns3/log.h"
23
#include "ns3/uinteger.h"
23
#include "ns3/uinteger.h"
24
#include "ns3/double.h"
24
#include "ns3/double.h"
25
#include "ns3/boolean.h"
25
#include "ns3/trace-source-accessor.h"
26
#include "ns3/trace-source-accessor.h"
26
#include "ns3/nstime.h"
27
#include "ns3/nstime.h"
27
#include "tcp-socket.h"
28
#include "tcp-socket.h"
 Lines 93-98    Link Here 
93
                   MakeUintegerAccessor (&TcpSocket::GetDelAckMaxCount,
94
                   MakeUintegerAccessor (&TcpSocket::GetDelAckMaxCount,
94
                                         &TcpSocket::SetDelAckMaxCount),
95
                                         &TcpSocket::SetDelAckMaxCount),
95
                   MakeUintegerChecker<uint32_t> ())
96
                   MakeUintegerChecker<uint32_t> ())
97
    .AddAttribute ("Nagle", "Whether or not Nagle's algorithm is enabled",
98
                   BooleanValue (true),
99
                   MakeBooleanAccessor (&TcpSocket::SetNagle,
100
                                        &TcpSocket::GetNagle),
101
                   MakeBooleanChecker ())
96
    .AddAttribute ("PersistTimeout",
102
    .AddAttribute ("PersistTimeout",
97
                   "Persist timeout to probe for rx window",
103
                   "Persist timeout to probe for rx window",
98
                   TimeValue (Seconds (6)),
104
                   TimeValue (Seconds (6)),
(-)a/src/internet/model/tcp-socket.h (+2 lines)
 Lines 89-94    Link Here 
89
  virtual Time GetDelAckTimeout (void) const = 0;
89
  virtual Time GetDelAckTimeout (void) const = 0;
90
  virtual void SetDelAckMaxCount (uint32_t count) = 0;
90
  virtual void SetDelAckMaxCount (uint32_t count) = 0;
91
  virtual uint32_t GetDelAckMaxCount (void) const = 0;
91
  virtual uint32_t GetDelAckMaxCount (void) const = 0;
92
  virtual void SetNagle (bool enable) = 0;
93
  virtual bool GetNagle (void) const = 0;
92
  virtual void SetPersistTimeout (Time timeout) = 0;
94
  virtual void SetPersistTimeout (Time timeout) = 0;
93
  virtual Time GetPersistTimeout (void) const = 0;
95
  virtual Time GetPersistTimeout (void) const = 0;
94
  
96
  

Return to bug 1039