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

(-)a/src/wifi/model/dca-txop.cc (-4 / +15 lines)
 Lines 103-108    Link Here 
103
  {
103
  {
104
    m_txop->Cancel ();
104
    m_txop->Cancel ();
105
  }
105
  }
106
  virtual void EndTxNoAck (void)
107
  {
108
    m_txop->EndTxNoAck ();
109
  }
106
110
107
private:
111
private:
108
  DcaTxop *m_txop;
112
  DcaTxop *m_txop;
 Lines 407-416    Link Here 
407
                                 &m_currentHdr,
411
                                 &m_currentHdr,
408
                                 params,
412
                                 params,
409
                                 m_transmissionListener);
413
                                 m_transmissionListener);
410
      m_currentPacket = 0;
411
      m_dcf->ResetCw ();
412
      m_dcf->StartBackoffNow (m_rng->GetNext (0, m_dcf->GetCw ()));
413
      StartAccessIfNeeded ();
414
      NS_LOG_DEBUG ("tx broadcast");
414
      NS_LOG_DEBUG ("tx broadcast");
415
    }
415
    }
416
  else
416
  else
 Lines 621-624    Link Here 
621
   */
621
   */
622
}
622
}
623
623
624
void
625
DcaTxop::EndTxNoAck (void)
626
{
627
  NS_LOG_FUNCTION (this);
628
  NS_LOG_DEBUG ("a transmission that did not require an ACK just finished");
629
  m_currentPacket = 0;
630
  m_dcf->ResetCw ();
631
  m_dcf->StartBackoffNow (m_rng->GetNext (0, m_dcf->GetCw ()));
632
  StartAccessIfNeeded ();
633
}
634
624
} // namespace ns3
635
} // namespace ns3
(-)a/src/wifi/model/dca-txop.h (+1 lines)
 Lines 147-152    Link Here 
147
  void MissedAck (void);
147
  void MissedAck (void);
148
  void StartNext (void);
148
  void StartNext (void);
149
  void Cancel (void);
149
  void Cancel (void);
150
  void EndTxNoAck (void);
150
151
151
  void RestartAccessIfNeeded (void);
152
  void RestartAccessIfNeeded (void);
152
  void StartAccessIfNeeded (void);
153
  void StartAccessIfNeeded (void);
(-)a/src/wifi/model/edca-txop-n.cc (-4 / +15 lines)
 Lines 111-116    Link Here 
111
  {
111
  {
112
    m_txop->Cancel ();
112
    m_txop->Cancel ();
113
  }
113
  }
114
  virtual void EndTxNoAck (void)
115
  {
116
    m_txop->EndTxNoAck ();
117
  }
114
118
115
private:
119
private:
116
  EdcaTxopN *m_txop;
120
  EdcaTxopN *m_txop;
 Lines 384-393    Link Here 
384
                                params,
388
                                params,
385
                                m_transmissionListener);
389
                                m_transmissionListener);
386
390
387
      m_currentPacket = 0;
388
      m_dcf->ResetCw ();
389
      m_dcf->StartBackoffNow (m_rng->GetNext (0, m_dcf->GetCw ()));
390
      StartAccessIfNeeded ();
391
      NS_LOG_DEBUG ("tx broadcast");
391
      NS_LOG_DEBUG ("tx broadcast");
392
    }
392
    }
393
  else if (m_currentHdr.GetType () == WIFI_MAC_CTL_BACKREQ)
393
  else if (m_currentHdr.GetType () == WIFI_MAC_CTL_BACKREQ)
 Lines 730-735    Link Here 
730
  NS_LOG_DEBUG ("transmission cancelled");
730
  NS_LOG_DEBUG ("transmission cancelled");
731
}
731
}
732
732
733
void
734
EdcaTxopN::EndTxNoAck (void)
735
{
736
  NS_LOG_FUNCTION (this);
737
  NS_LOG_DEBUG ("a transmission that did not require an ACK just finished");
738
  m_currentPacket = 0;
739
  m_dcf->ResetCw ();
740
  m_dcf->StartBackoffNow (m_rng->GetNext (0, m_dcf->GetCw ()));
741
  StartAccessIfNeeded ();
742
}
743
733
bool
744
bool
734
EdcaTxopN::NeedFragmentation (void) const
745
EdcaTxopN::NeedFragmentation (void) const
735
{
746
{
(-)a/src/wifi/model/edca-txop-n.h (+1 lines)
 Lines 126-131    Link Here 
126
  void MissedAck (void);
126
  void MissedAck (void);
127
  void StartNext (void);
127
  void StartNext (void);
128
  void Cancel (void);
128
  void Cancel (void);
129
  void EndTxNoAck (void);
129
130
130
  void RestartAccessIfNeeded (void);
131
  void RestartAccessIfNeeded (void);
131
  void StartAccessIfNeeded (void);
132
  void StartAccessIfNeeded (void);
(-)a/src/wifi/model/mac-low.cc (-1 / +16 lines)
 Lines 360-365    Link Here 
360
    m_sendAckEvent (),
360
    m_sendAckEvent (),
361
    m_sendDataEvent (),
361
    m_sendDataEvent (),
362
    m_waitSifsEvent (),
362
    m_waitSifsEvent (),
363
    m_endTxNoAckEvent (),
363
    m_currentPacket (0),
364
    m_currentPacket (0),
364
    m_listener (0)
365
    m_listener (0)
365
{
366
{
 Lines 396-401    Link Here 
396
  m_sendAckEvent.Cancel ();
397
  m_sendAckEvent.Cancel ();
397
  m_sendDataEvent.Cancel ();
398
  m_sendDataEvent.Cancel ();
398
  m_waitSifsEvent.Cancel ();
399
  m_waitSifsEvent.Cancel ();
400
  m_endTxNoAckEvent.Cancel ();
399
  m_phy = 0;
401
  m_phy = 0;
400
  m_stationManager = 0;
402
  m_stationManager = 0;
401
  delete m_phyMacLowListener;
403
  delete m_phyMacLowListener;
 Lines 457-462    Link Here 
457
      m_waitSifsEvent.Cancel ();
459
      m_waitSifsEvent.Cancel ();
458
      oneRunning = true;
460
      oneRunning = true;
459
    }
461
    }
462
  if (m_endTxNoAckEvent.IsRunning ()) 
463
    {
464
      m_endTxNoAckEvent.Cancel ();
465
      oneRunning = true;
466
    }
460
  if (oneRunning && m_listener != 0)
467
  if (oneRunning && m_listener != 0)
461
    {
468
    {
462
      m_listener->Cancel ();
469
      m_listener->Cancel ();
 Lines 1352-1358    Link Here 
1352
  else
1359
  else
1353
    {
1360
    {
1354
      // since we do not expect any timer to be triggered.
1361
      // since we do not expect any timer to be triggered.
1355
      m_listener = 0;
1362
      Simulator::Schedule(txDuration, &MacLow::EndTxNoAck, this);
1356
    }
1363
    }
1357
}
1364
}
1358
1365
 Lines 1490-1495    Link Here 
1490
  m_listener->StartNext ();
1497
  m_listener->StartNext ();
1491
}
1498
}
1492
1499
1500
void 
1501
MacLow::EndTxNoAck (void)
1502
{
1503
  MacLowTransmissionListener *listener = m_listener;
1504
  m_listener = 0;
1505
  listener->EndTxNoAck ();
1506
}
1507
1493
void
1508
void
1494
MacLow::FastAckFailedTimeout (void)
1509
MacLow::FastAckFailedTimeout (void)
1495
{
1510
{
(-)a/src/wifi/model/mac-low.h (-1 / +11 lines)
 Lines 123-129    Link Here 
123
   * you can assume that the packet has not been passed
123
   * you can assume that the packet has not been passed
124
   * down the stack to the PHY.
124
   * down the stack to the PHY.
125
   */
125
   */
126
  virtual void Cancel (void) = 0;
126
  virtual void Cancel (void) = 0;	
127
128
  /** 
129
   * Invoked upon the end of the transmission of a frame that does not
130
   * require an ACK (e.g., broadcast and multicast frames).
131
   * 
132
   */
133
  virtual void EndTxNoAck (void) = 0;
134
127
};
135
};
128
136
129
137
 Lines 541-546    Link Here 
541
  void SendAckAfterData (Mac48Address source, Time duration, WifiMode txMode, double rtsSnr);
549
  void SendAckAfterData (Mac48Address source, Time duration, WifiMode txMode, double rtsSnr);
542
  void SendDataAfterCts (Mac48Address source, Time duration, WifiMode txMode);
550
  void SendDataAfterCts (Mac48Address source, Time duration, WifiMode txMode);
543
  void WaitSifsAfterEndTx (void);
551
  void WaitSifsAfterEndTx (void);
552
  void EndTxNoAck (void);
544
553
545
  void SendRtsForPacket (void);
554
  void SendRtsForPacket (void);
546
  void SendDataPacket (void);
555
  void SendDataPacket (void);
 Lines 614-619    Link Here 
614
  EventId m_sendAckEvent;
623
  EventId m_sendAckEvent;
615
  EventId m_sendDataEvent;
624
  EventId m_sendDataEvent;
616
  EventId m_waitSifsEvent;
625
  EventId m_waitSifsEvent;
626
  EventId m_endTxNoAckEvent;
617
  EventId m_navCounterResetCtsMissed;
627
  EventId m_navCounterResetCtsMissed;
618
628
619
  Ptr<Packet> m_currentPacket;
629
  Ptr<Packet> m_currentPacket;

Return to bug 555