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

(-)a/src/devices/wifi/dca-txop.cc (-2 / +2 lines)
 Lines 276-289    Link Here 
276
DcaTxop::NeedRtsRetransmission (void)
276
DcaTxop::NeedRtsRetransmission (void)
277
{
277
{
278
  WifiRemoteStation *station = GetStation (m_currentHdr.GetAddr1 ());
278
  WifiRemoteStation *station = GetStation (m_currentHdr.GetAddr1 ());
279
  return station->NeedRtsRetransmission (m_currentPacket);
279
  return station->NeedRtsRetransmission (&m_currentHdr);
280
}
280
}
281
281
282
bool
282
bool
283
DcaTxop::NeedDataRetransmission (void)
283
DcaTxop::NeedDataRetransmission (void)
284
{
284
{
285
  WifiRemoteStation *station = GetStation (m_currentHdr.GetAddr1 ());
285
  WifiRemoteStation *station = GetStation (m_currentHdr.GetAddr1 ());
286
  return station->NeedDataRetransmission (m_currentPacket);
286
  return station->NeedDataRetransmission (&m_currentHdr);
287
}
287
}
288
bool
288
bool
289
DcaTxop::NeedFragmentation (void)
289
DcaTxop::NeedFragmentation (void)
(-)a/src/devices/wifi/edca-txop-n.cc (-4 / +20 lines)
 Lines 410-416    Link Here 
410
    {
410
    {
411
      MY_DEBUG ("Cts Fail");
411
      MY_DEBUG ("Cts Fail");
412
      WifiRemoteStation *station = GetStation (m_currentHdr.GetAddr1 ());
412
      WifiRemoteStation *station = GetStation (m_currentHdr.GetAddr1 ());
413
      station->ReportFinalRtsFailed ();
413
      if (m_currentHdr.IsQosData ())
414
        {
415
          uint8_t tid = m_currentHdr.GetQosTid ();
416
          station->ReportFinalRtsFailed (QosUtilsMapTidToAc (tid));
417
        }
418
      else
419
        {
420
          station->ReportFinalRtsFailed ();
421
        }
414
      if (!m_txFailedCallback.IsNull ()) 
422
      if (!m_txFailedCallback.IsNull ()) 
415
        {
423
        {
416
          m_txFailedCallback (m_currentHdr);
424
          m_txFailedCallback (m_currentHdr);
 Lines 473-479    Link Here 
473
    {
481
    {
474
      MY_DEBUG ("Ack Fail");
482
      MY_DEBUG ("Ack Fail");
475
      WifiRemoteStation *station = GetStation (m_currentHdr.GetAddr1 ());
483
      WifiRemoteStation *station = GetStation (m_currentHdr.GetAddr1 ());
476
      station->ReportFinalDataFailed ();
484
      if (m_currentHdr.IsQosData ())
485
       {
486
         uint8_t tid = m_currentHdr.GetQosTid ();
487
         station->ReportFinalDataFailed (QosUtilsMapTidToAc (tid));
488
       }
489
      else
490
       {
491
         station->ReportFinalDataFailed ();
492
       }
477
      if (!m_txFailedCallback.IsNull ()) 
493
      if (!m_txFailedCallback.IsNull ()) 
478
        {
494
        {
479
          m_txFailedCallback (m_currentHdr);
495
          m_txFailedCallback (m_currentHdr);
 Lines 533-546    Link Here 
533
EdcaTxopN::NeedRtsRetransmission (void)
549
EdcaTxopN::NeedRtsRetransmission (void)
534
{
550
{
535
  WifiRemoteStation *station = GetStation (m_currentHdr.GetAddr1 ());
551
  WifiRemoteStation *station = GetStation (m_currentHdr.GetAddr1 ());
536
  return station->NeedRtsRetransmission (m_currentPacket);
552
  return station->NeedRtsRetransmission (&m_currentHdr);
537
}
553
}
538
554
539
bool
555
bool
540
EdcaTxopN::NeedDataRetransmission (void)
556
EdcaTxopN::NeedDataRetransmission (void)
541
{
557
{
542
  WifiRemoteStation *station = GetStation (m_currentHdr.GetAddr1 ());
558
  WifiRemoteStation *station = GetStation (m_currentHdr.GetAddr1 ());
543
  return station->NeedDataRetransmission (m_currentPacket);
559
  return station->NeedDataRetransmission (&m_currentHdr);
544
}
560
}
545
561
546
void
562
void
(-)a/src/devices/wifi/mac-low.cc (-7 / +54 lines)
 Lines 540-547    Link Here 
540
      packet->RemovePacketTag (tag);
540
      packet->RemovePacketTag (tag);
541
      WifiRemoteStation *station = GetStation (m_currentHdr.GetAddr1 ());
541
      WifiRemoteStation *station = GetStation (m_currentHdr.GetAddr1 ());
542
      station->ReportRxOk (rxSnr, txMode);
542
      station->ReportRxOk (rxSnr, txMode);
543
      station->ReportRtsOk (rxSnr, txMode, tag.Get ());
543
      if (m_currentHdr.IsQosData ())
544
      
544
        {
545
          uint8_t tid = m_currentHdr.GetQosTid ();
546
          station->ReportRtsOk (rxSnr, txMode, tag.Get (), QosUtilsMapTidToAc (tid));
547
        }
548
      else
549
        {
550
          station->ReportRtsOk (rxSnr, txMode, tag.Get ());
551
        }
545
      m_ctsTimeoutEvent.Cancel ();
552
      m_ctsTimeoutEvent.Cancel ();
546
      NotifyCtsTimeoutResetNow ();
553
      NotifyCtsTimeoutResetNow ();
547
      m_listener->GotCts (rxSnr, txMode);
554
      m_listener->GotCts (rxSnr, txMode);
 Lines 564-570    Link Here 
564
      packet->RemovePacketTag (tag);
571
      packet->RemovePacketTag (tag);
565
      WifiRemoteStation *station = GetStation (m_currentHdr.GetAddr1 ());
572
      WifiRemoteStation *station = GetStation (m_currentHdr.GetAddr1 ());
566
      station->ReportRxOk (rxSnr, txMode);
573
      station->ReportRxOk (rxSnr, txMode);
567
      station->ReportDataOk (rxSnr, txMode, tag.Get ());
574
      if (m_currentHdr.IsQosData ())
575
        {
576
          uint8_t tid = m_currentHdr.GetQosTid ();
577
          station->ReportDataOk (rxSnr, txMode, tag.Get (), QosUtilsMapTidToAc (tid));
578
        }
579
      else
580
        {
581
          station->ReportDataOk (rxSnr, txMode, tag.Get ());
582
        }
568
      bool gotAck = false;
583
      bool gotAck = false;
569
      if (m_txParams.MustWaitNormalAck () &&
584
      if (m_txParams.MustWaitNormalAck () &&
570
          m_normalAckTimeoutEvent.IsRunning ()) 
585
          m_normalAckTimeoutEvent.IsRunning ()) 
 Lines 879-885    Link Here 
879
  // we should restart a new cts timeout now until the expected
894
  // we should restart a new cts timeout now until the expected
880
  // end of rx if there was a rx start before now.
895
  // end of rx if there was a rx start before now.
881
  WifiRemoteStation *station = GetStation (m_currentHdr.GetAddr1 ());
896
  WifiRemoteStation *station = GetStation (m_currentHdr.GetAddr1 ());
882
  station->ReportRtsFailed ();
897
  if (m_currentHdr.IsQosData ())
898
    {
899
      uint8_t tid = m_currentHdr.GetQosTid ();
900
      station->ReportRtsFailed (QosUtilsMapTidToAc (tid));
901
    }
902
  else
903
    {
904
      station->ReportRtsFailed ();
905
    }
883
  m_currentPacket = 0;
906
  m_currentPacket = 0;
884
  MacLowTransmissionListener *listener = m_listener;
907
  MacLowTransmissionListener *listener = m_listener;
885
  m_listener = 0;
908
  m_listener = 0;
 Lines 894-900    Link Here 
894
  // we should restart a new ack timeout now until the expected
917
  // we should restart a new ack timeout now until the expected
895
  // end of rx if there was a rx start before now.
918
  // end of rx if there was a rx start before now.
896
  WifiRemoteStation *station = GetStation (m_currentHdr.GetAddr1 ());
919
  WifiRemoteStation *station = GetStation (m_currentHdr.GetAddr1 ());
897
  station->ReportDataFailed ();
920
  if (m_currentHdr.IsQosData ())
921
    {
922
      uint8_t tid = m_currentHdr.GetQosTid ();
923
      station->ReportDataFailed (QosUtilsMapTidToAc (tid));
924
    }
925
  else
926
    {
927
      station->ReportDataFailed ();
928
    }
898
  MacLowTransmissionListener *listener = m_listener;
929
  MacLowTransmissionListener *listener = m_listener;
899
  m_listener = 0;
930
  m_listener = 0;
900
  listener->MissedAck ();
931
  listener->MissedAck ();
 Lines 904-910    Link Here 
904
{
935
{
905
  NS_LOG_FUNCTION (this);
936
  NS_LOG_FUNCTION (this);
906
  WifiRemoteStation *station = GetStation (m_currentHdr.GetAddr1 ());
937
  WifiRemoteStation *station = GetStation (m_currentHdr.GetAddr1 ());
907
  station->ReportDataFailed ();
938
  if (m_currentHdr.IsQosData ())
939
    {
940
      uint8_t tid = m_currentHdr.GetQosTid ();
941
      station->ReportDataFailed (QosUtilsMapTidToAc (tid));
942
    }
943
  else
944
    {
945
      station->ReportDataFailed ();
946
    }
908
  MacLowTransmissionListener *listener = m_listener;
947
  MacLowTransmissionListener *listener = m_listener;
909
  m_listener = 0;
948
  m_listener = 0;
910
  if (m_phy->IsStateIdle ()) 
949
  if (m_phy->IsStateIdle ()) 
 Lines 922-928    Link Here 
922
{
961
{
923
  NS_LOG_FUNCTION (this);
962
  NS_LOG_FUNCTION (this);
924
  WifiRemoteStation *station = GetStation (m_currentHdr.GetAddr1 ());
963
  WifiRemoteStation *station = GetStation (m_currentHdr.GetAddr1 ());
925
  station->ReportDataFailed ();
964
  if (m_currentHdr.IsQosData ())
965
    {
966
      uint8_t tid = m_currentHdr.GetQosTid ();
967
      station->ReportDataFailed (QosUtilsMapTidToAc (tid));
968
    }
969
  else
970
    {
971
      station->ReportDataFailed ();
972
    }
926
  MacLowTransmissionListener *listener = m_listener;
973
  MacLowTransmissionListener *listener = m_listener;
927
  m_listener = 0;
974
  m_listener = 0;
928
  if (m_phy->IsStateIdle ()) 
975
  if (m_phy->IsStateIdle ()) 
(-)a/src/devices/wifi/wifi-remote-station-manager.cc (-18 / +117 lines)
 Lines 476-482    Link Here 
476
    m_slrc (0),
476
    m_slrc (0),
477
    m_avgSlrcCoefficient(0.9),
477
    m_avgSlrcCoefficient(0.9),
478
    m_avgSlrc (0)
478
    m_avgSlrc (0)
479
{}
479
{
480
  m_qosSsrc.insert (std::make_pair (AC_VO, 0));
481
  m_qosSsrc.insert (std::make_pair (AC_VI, 0));
482
  m_qosSsrc.insert (std::make_pair (AC_BE, 0));
483
  m_qosSsrc.insert (std::make_pair (AC_BK, 0));
484
485
  m_qosSlrc.insert (std::make_pair (AC_VO, 0));
486
  m_qosSlrc.insert (std::make_pair (AC_VI, 0));
487
  m_qosSlrc.insert (std::make_pair (AC_BE, 0));
488
  m_qosSlrc.insert (std::make_pair (AC_BK, 0));
489
}
480
WifiRemoteStation::~WifiRemoteStation ()
490
WifiRemoteStation::~WifiRemoteStation ()
481
{}
491
{}
482
492
 Lines 675-689    Link Here 
675
    }
685
    }
676
}
686
}
677
bool
687
bool
678
WifiRemoteStation::NeedRtsRetransmission (Ptr<const Packet> packet)
688
WifiRemoteStation::NeedRtsRetransmission (const WifiMacHeader *hdr)
679
{
689
{
680
  return (m_ssrc < GetManager ()->GetMaxSsrc ());
690
  if (hdr->IsQosData ())
691
    {
692
      AccessClass ac = QosUtilsMapTidToAc (hdr->GetQosTid ());
693
      return (m_qosSsrc.find (ac)->second < GetManager ()->GetMaxSsrc ());
694
    }
695
  else
696
   {
697
      return (m_ssrc < GetManager ()->GetMaxSsrc ());
698
   }
681
}
699
}
682
700
683
bool
701
bool
684
WifiRemoteStation::NeedDataRetransmission (Ptr<const Packet> packet)
702
WifiRemoteStation::NeedDataRetransmission (const WifiMacHeader *hdr)
685
{
703
{
686
  return (m_slrc < GetManager ()->GetMaxSlrc ());
704
  if (hdr->IsQosData ())
705
    {
706
      AccessClass ac = QosUtilsMapTidToAc (hdr->GetQosTid ());
707
      return (m_qosSlrc.find (ac)->second < GetManager ()->GetMaxSlrc ());
708
    }
709
  else
710
    {
711
      return (m_slrc < GetManager ()->GetMaxSlrc ());
712
    }
687
}
713
}
688
714
689
bool
715
bool
 Lines 745-799    Link Here 
745
}
771
}
746
772
747
void 
773
void 
748
WifiRemoteStation::ReportRtsFailed (void)
774
WifiRemoteStation::ReportRtsFailed (enum AccessClass ac)
749
{
775
{
750
  m_ssrc++;
776
  if (ac == AC_UNDEF)
777
    {
778
      NS_LOG_INFO ("Access class not supported");
779
      NS_ASSERT (false);
780
    }
781
  else if (ac == AC_BE_NQOS)
782
    {
783
      m_ssrc++;
784
    }
785
  else
786
    {
787
      m_qosSsrc.find (ac)->second++;
788
    }
751
  GetManager ()->NotifyTxRtsFailed (m_address);
789
  GetManager ()->NotifyTxRtsFailed (m_address);
752
  DoReportRtsFailed ();
790
  DoReportRtsFailed ();
753
}
791
}
754
792
755
void 
793
void 
756
WifiRemoteStation::ReportDataFailed (void)
794
WifiRemoteStation::ReportDataFailed (enum AccessClass ac)
757
{
795
{
758
  m_slrc++;
796
  if (ac == AC_UNDEF)
797
    {
798
      NS_LOG_INFO ("Access class not supported");
799
      NS_ASSERT (false);
800
    }
801
  else if (ac == AC_BE_NQOS)
802
    {
803
      m_slrc++;
804
    }
805
  else
806
    {
807
      m_qosSlrc.find (ac)->second++;
808
    }
759
  GetManager ()->NotifyTxDataFailed (m_address);
809
  GetManager ()->NotifyTxDataFailed (m_address);
760
  DoReportDataFailed ();
810
  DoReportDataFailed ();
761
}
811
}
762
812
763
void 
813
void 
764
WifiRemoteStation::ReportRtsOk (double ctsSnr, WifiMode ctsMode, double rtsSnr)
814
WifiRemoteStation::ReportRtsOk (double ctsSnr, WifiMode ctsMode, double rtsSnr, enum AccessClass ac)
765
{
815
{
766
  m_ssrc = 0;
816
  if (ac == AC_UNDEF)
817
    {
818
      NS_LOG_INFO ("Access class not supported");
819
      NS_ASSERT (false);
820
    }
821
  else if (ac == AC_BE_NQOS)
822
    {
823
      m_ssrc = 0;
824
    }
825
  else
826
    {
827
      m_qosSsrc.find (ac)->second = 0;
828
    }
767
  DoReportRtsOk (ctsSnr, ctsMode, rtsSnr);
829
  DoReportRtsOk (ctsSnr, ctsMode, rtsSnr);
768
}
830
}
769
831
770
void 
832
void 
771
WifiRemoteStation::ReportDataOk (double ackSnr, WifiMode ackMode, double dataSnr)
833
WifiRemoteStation::ReportDataOk (double ackSnr, WifiMode ackMode, double dataSnr, enum AccessClass ac)
772
{
834
{
773
  m_avgSlrc = m_avgSlrc * m_avgSlrcCoefficient + (double) m_slrc * (1 - m_avgSlrcCoefficient);
835
  m_avgSlrc = m_avgSlrc * m_avgSlrcCoefficient + (double) m_slrc * (1 - m_avgSlrcCoefficient);
774
  m_slrc = 0;
836
  if (ac == AC_UNDEF)
837
    {
838
      NS_LOG_INFO ("Access class not supported");
839
      NS_ASSERT (false);
840
    }
841
  else if (ac == AC_BE_NQOS)
842
    {
843
      m_slrc = 0;
844
    }
845
  else
846
    {
847
      m_qosSlrc.find (ac)->second = 0;
848
    }
775
  DoReportDataOk (ackSnr, ackMode, dataSnr);
849
  DoReportDataOk (ackSnr, ackMode, dataSnr);
776
}
850
}
777
851
778
void 
852
void 
779
WifiRemoteStation::ReportFinalRtsFailed (void)
853
WifiRemoteStation::ReportFinalRtsFailed (enum AccessClass ac)
780
{
854
{
781
  m_ssrc = 0;
855
  if (ac == AC_UNDEF)
856
    {
857
      NS_LOG_INFO ("Access class not supported");
858
      NS_ASSERT (false);
859
    }
860
  else if (ac == AC_BE_NQOS)
861
    {
862
      m_ssrc = 0;
863
    }
864
  else
865
    {
866
      m_qosSsrc.find (ac)->second = 0;
867
    }
782
  GetManager ()->NotifyTxFinalRtsFailed (m_address);
868
  GetManager ()->NotifyTxFinalRtsFailed (m_address);
783
  DoReportFinalRtsFailed ();
869
  DoReportFinalRtsFailed ();
784
}
870
}
785
871
786
void 
872
void 
787
WifiRemoteStation::ReportFinalDataFailed (void)
873
WifiRemoteStation::ReportFinalDataFailed (enum AccessClass ac)
788
{
874
{
789
  m_slrc = 0;
875
  if (ac == AC_UNDEF)
876
    {
877
      NS_LOG_INFO ("Access class not supported");
878
      NS_ASSERT (false);
879
    }
880
  else if (ac == AC_BE_NQOS)
881
    {
882
      m_slrc = 0;
883
    }
884
  else
885
    {
886
      m_qosSlrc.find (ac)->second = 0;
887
    }
790
  GetManager ()->NotifyTxFinalDataFailed (m_address);
888
  GetManager ()->NotifyTxFinalDataFailed (m_address);
791
  DoReportFinalDataFailed ();
889
  DoReportFinalDataFailed ();
792
}
890
}
793
891
794
void 
892
void 
795
WifiRemoteStation::ReportRxOk (double rxSnr, WifiMode txMode)
893
WifiRemoteStation::ReportRxOk (double rxSnr, WifiMode txMode, enum AccessClass ac)
796
{
894
{
895
  //How should we use 'ac' parameter here?
797
  DoReportRxOk (rxSnr, txMode);
896
  DoReportRxOk (rxSnr, txMode);
798
}
897
}
799
} // namespace ns3
898
} // namespace ns3
(-)a/src/devices/wifi/wifi-remote-station-manager.h (-11 / +30 lines)
 Lines 1-6    Link Here 
1
/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
1
/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
2
/*
2
/*
3
 * Copyright (c) 2005,2006,2007 INRIA
3
 * Copyright (c) 2005,2006,2007 INRIA
4
 * Copyright (c) 2009 MIRKO BANCHI
4
 *
5
 *
5
 * This program is free software; you can redistribute it and/or modify
6
 * This program is free software; you can redistribute it and/or modify
6
 * it under the terms of the GNU General Public License version 2 as 
7
 * it under the terms of the GNU General Public License version 2 as 
 Lines 16-32    Link Here 
16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17
 *
18
 *
18
 * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
19
 * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
20
 * Author: Mirko Banchi <mk.banchi@gmail.com>
19
 */
21
 */
20
#ifndef WIFI_REMOTE_STATION_MANAGER_H
22
#ifndef WIFI_REMOTE_STATION_MANAGER_H
21
#define WIFI_REMOTE_STATION_MANAGER_H
23
#define WIFI_REMOTE_STATION_MANAGER_H
22
24
23
#include <vector>
25
#include <vector>
24
#include <utility>
26
#include <utility>
27
#include <map>
25
#include "ns3/mac48-address.h"
28
#include "ns3/mac48-address.h"
26
#include "ns3/packet.h"
29
#include "ns3/packet.h"
27
#include "ns3/object.h"
30
#include "ns3/object.h"
28
#include "ns3/traced-value.h"
31
#include "ns3/traced-value.h"
32
#include "ns3/wifi-mac-header.h"
29
#include "wifi-mode.h"
33
#include "wifi-mode.h"
34
#include "qos-utils.h"
30
35
31
namespace ns3 {
36
namespace ns3 {
32
37
 Lines 224-258    Link Here 
224
   */
229
   */
225
  WifiMode GetRtsMode (Ptr<const Packet> packet);
230
  WifiMode GetRtsMode (Ptr<const Packet> packet);
226
  /**
231
  /**
232
   * \param ac Represents access class of the packet for which a rts was transmitted.
233
   *
227
   * Should be invoked whenever the RtsTimeout associated to a transmission
234
   * Should be invoked whenever the RtsTimeout associated to a transmission
228
   * attempt expires.
235
   * attempt expires.
229
   */
236
   */
230
  void ReportRtsFailed (void);
237
  void ReportRtsFailed (enum AccessClass ac = AC_BE_NQOS);
231
  /**
238
  /**
239
   * \param ac Access class which failed data belongs.
240
   *
232
   * Should be invoked whenever the AckTimeout associated to a transmission
241
   * Should be invoked whenever the AckTimeout associated to a transmission
233
   * attempt expires.
242
   * attempt expires.
234
   */
243
   */
235
  void ReportDataFailed (void);
244
  void ReportDataFailed (enum AccessClass ac = AC_BE_NQOS);
236
  /**
245
  /**
246
   * \param ac Represents access class of the packet for which the rts was transmitted.
247
   *
237
   * Should be invoked whenever we receive the Cts associated to an RTS 
248
   * Should be invoked whenever we receive the Cts associated to an RTS 
238
   * we just sent.
249
   * we just sent.
239
   */
250
   */
240
  void ReportRtsOk (double ctsSnr, WifiMode ctsMode, double rtsSnr);
251
  void ReportRtsOk (double ctsSnr, WifiMode ctsMode, double rtsSnr, enum AccessClass ac = AC_BE_NQOS);
241
  /**
252
  /**
253
   * \param ac Access class which correct received data belongs.
254
   *
242
   * Should be invoked whenever we receive the Ack associated to a data packet
255
   * Should be invoked whenever we receive the Ack associated to a data packet
243
   * we just sent.
256
   * we just sent.
244
   */
257
   */
245
  void ReportDataOk (double ackSnr, WifiMode ackMode, double dataSnr);
258
  void ReportDataOk (double ackSnr, WifiMode ackMode, double dataSnr, enum AccessClass ac = AC_BE_NQOS);
246
  /**
259
  /**
260
   * \param ac Represents access class of the packet for which a rts was transmitted.
261
   *
247
   * Should be invoked after calling ReportRtsFailed if 
262
   * Should be invoked after calling ReportRtsFailed if 
248
   * NeedRtsRetransmission returns false
263
   * NeedRtsRetransmission returns false
249
   */
264
   */
250
  void ReportFinalRtsFailed (void);
265
  void ReportFinalRtsFailed (enum AccessClass ac = AC_BE_NQOS);
251
  /**
266
  /**
267
   * \param ac Access class which failed data belongs.
268
   *
252
   * Should be invoked after calling ReportDataFailed if 
269
   * Should be invoked after calling ReportDataFailed if 
253
   * NeedDataRetransmission returns false
270
   * NeedDataRetransmission returns false
254
   */
271
   */
255
  void ReportFinalDataFailed (void);
272
  void ReportFinalDataFailed (enum AccessClass ac = AC_BE_NQOS);
256
273
257
  /**
274
  /**
258
   * \param rxSnr the snr of the packet received
275
   * \param rxSnr the snr of the packet received
 Lines 260-266    Link Here 
260
   *
277
   *
261
   * Should be invoked whenever a packet is successfully received.
278
   * Should be invoked whenever a packet is successfully received.
262
   */
279
   */
263
  void ReportRxOk (double rxSnr, WifiMode txMode);
280
  void ReportRxOk (double rxSnr, WifiMode txMode, enum AccessClass ac = AC_BE_NQOS);
264
281
265
  /**
282
  /**
266
   * \param packet the packet to send
283
   * \param packet the packet to send
 Lines 269-285    Link Here 
269
   */
286
   */
270
  virtual bool NeedRts (Ptr<const Packet> packet);
287
  virtual bool NeedRts (Ptr<const Packet> packet);
271
  /**
288
  /**
272
   * \param packet the packet to send
289
   * \param hdr the header of the packet to send
273
   * \returns true if we want to restart a failed RTS/CTS 
290
   * \returns true if we want to restart a failed RTS/CTS 
274
   *          handshake, false otherwise.
291
   *          handshake, false otherwise.
275
   */
292
   */
276
  virtual bool NeedRtsRetransmission (Ptr<const Packet> packet);
293
  virtual bool NeedRtsRetransmission (const WifiMacHeader *hdr);
277
  /**
294
  /**
278
   * \param packet the packet to send
295
   * \param hdr the header of the packet to send
279
   * \returns true if we want to resend a packet 
296
   * \returns true if we want to resend a packet 
280
   *          after a failed transmission attempt, false otherwise.
297
   *          after a failed transmission attempt, false otherwise.
281
   */
298
   */
282
  virtual bool NeedDataRetransmission (Ptr<const Packet> packet);
299
  virtual bool NeedDataRetransmission (const WifiMacHeader *hdr);
283
300
284
  /**
301
  /**
285
   * \param packet the packet to send
302
   * \param packet the packet to send
 Lines 361-366    Link Here 
361
  SupportedModes m_modes;
378
  SupportedModes m_modes;
362
  TracedValue<uint32_t> m_ssrc;
379
  TracedValue<uint32_t> m_ssrc;
363
  TracedValue<uint32_t> m_slrc;
380
  TracedValue<uint32_t> m_slrc;
381
  std::map<AccessClass, TracedValue<uint32_t> > m_qosSsrc;
382
  std::map<AccessClass, TracedValue<uint32_t> > m_qosSlrc;
364
  double m_avgSlrcCoefficient;
383
  double m_avgSlrcCoefficient;
365
  double m_avgSlrc;
384
  double m_avgSlrc;
366
  Mac48Address m_address;
385
  Mac48Address m_address;

Return to bug 602