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

(-)a/src/internet/model/nsc-tcp-socket-impl.cc (+13 lines)
 Lines 85-90    Link Here 
85
  : TcpSocket(sock), //copy the base class callbacks
85
  : TcpSocket(sock), //copy the base class callbacks
86
    m_delAckMaxCount (sock.m_delAckMaxCount),
86
    m_delAckMaxCount (sock.m_delAckMaxCount),
87
    m_delAckTimeout (sock.m_delAckTimeout),
87
    m_delAckTimeout (sock.m_delAckTimeout),
88
    m_nagle (sock.m_nagle),
88
    m_endPoint (0),
89
    m_endPoint (0),
89
    m_node (sock.m_node),
90
    m_node (sock.m_node),
90
    m_tcp (sock.m_tcp),
91
    m_tcp (sock.m_tcp),
 Lines 794-799    Link Here 
794
  return m_delAckMaxCount;
795
  return m_delAckMaxCount;
795
}
796
}
796
797
798
void
799
NscTcpSocketImpl::SetNagle (bool enable)
800
{
801
  m_nagle = enable;
802
}
803
804
bool
805
NscTcpSocketImpl::GetNagle (void) const
806
{
807
  return m_nagle;
808
}
809
797
void 
810
void 
798
NscTcpSocketImpl::SetPersistTimeout (Time timeout)
811
NscTcpSocketImpl::SetPersistTimeout (Time timeout)
799
{
812
{
(-)a/src/internet/model/nsc-tcp-socket-impl.h (+3 lines)
 Lines 125-136    Link Here 
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 uint32_t GetDelAckMaxCount (void) const;
127
  virtual uint32_t GetDelAckMaxCount (void) const;
128
  virtual void SetNagle (bool enable);
129
  virtual bool GetNagle (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;
130
132
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 (+27 lines)
 Lines 109-114    Link Here 
109
    m_dupAckCount (sock.m_dupAckCount),
109
    m_dupAckCount (sock.m_dupAckCount),
110
    m_delAckCount (0),
110
    m_delAckCount (0),
111
    m_delAckMaxCount (sock.m_delAckMaxCount),
111
    m_delAckMaxCount (sock.m_delAckMaxCount),
112
    m_nagle (sock.m_nagle),
112
    m_cnCount (sock.m_cnCount),
113
    m_cnCount (sock.m_cnCount),
113
    m_delAckTimeout (sock.m_delAckTimeout),
114
    m_delAckTimeout (sock.m_delAckTimeout),
114
    m_persistTimeout (sock.m_persistTimeout),
115
    m_persistTimeout (sock.m_persistTimeout),
 Lines 1296-1301    Link Here 
1296
        {
1297
        {
1297
          break; // No more
1298
          break; // No more
1298
        }
1299
        }
1300
1301
      // Nagle's algorithm. If enabled, hold off sending if there is unacked 
1302
      // data in the buffer and the amount of data to send is less than a 
1303
      // segment size
1304
      if (m_nagle)
1305
        {
1306
          if (UnAckDataCount () > 0 && 
1307
              m_txBuffer.SizeFromSequence (m_nextTxSequence) < m_segmentSize)
1308
            {
1309
              NS_LOG_LOGIC ("Invoking Nagle's algorithm. Wait to send.");
1310
              break;
1311
            }
1312
        }
1313
1299
      uint32_t s = std::min (w, m_segmentSize);  // Send no more than window
1314
      uint32_t s = std::min (w, m_segmentSize);  // Send no more than window
1300
      Ptr<Packet> p = m_txBuffer.CopyFromSequence (s, m_nextTxSequence);
1315
      Ptr<Packet> p = m_txBuffer.CopyFromSequence (s, m_nextTxSequence);
1301
      NS_LOG_LOGIC ("TcpSocketBase " << this << " SendPendingData" <<
1316
      NS_LOG_LOGIC ("TcpSocketBase " << this << " SendPendingData" <<
 Lines 1732-1737    Link Here 
1732
}
1747
}
1733
1748
1734
void
1749
void
1750
TcpSocketBase::SetNagle (bool enable)
1751
{
1752
  m_nagle = enable;
1753
}
1754
1755
bool
1756
TcpSocketBase::GetNagle (void) const
1757
{
1758
  return m_nagle;
1759
}
1760
1761
void
1735
TcpSocketBase::SetPersistTimeout (Time timeout)
1762
TcpSocketBase::SetPersistTimeout (Time timeout)
1736
{
1763
{
1737
  m_persistTimeout = timeout;
1764
  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", "Enable or disable Nagle's algorithm",
98
                   BooleanValue (true),
99
                   MakeBooleanAccessor (&TcpSocket::GetNagle,
100
                                        &TcpSocket::SetNagle),
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