equal
deleted
inserted
replaced
827 From section 11.5.3 in IEEE802.11e: |
827 From section 11.5.3 in IEEE802.11e: |
828 When a recipient does not have an active Block ack for a TID, but receives |
828 When a recipient does not have an active Block ack for a TID, but receives |
829 data MPDUs with the Ack Policy subfield set to Block Ack, it shall discard |
829 data MPDUs with the Ack Policy subfield set to Block Ack, it shall discard |
830 them and shall send a DELBA frame using the normal access |
830 them and shall send a DELBA frame using the normal access |
831 mechanisms. */ |
831 mechanisms. */ |
832 AccessClass ac = QosUtilsMapTidToAc (hdr.GetQosTid ()); |
832 AcIndex ac = QosUtilsMapTidToAc (hdr.GetQosTid ()); |
833 m_edcaListeners[ac]->BlockAckInactivityTimeout (hdr.GetAddr2 (), hdr.GetQosTid ()); |
833 m_edcaListeners[ac]->BlockAckInactivityTimeout (hdr.GetAddr2 (), hdr.GetQosTid ()); |
834 return; |
834 return; |
835 } |
835 } |
836 else if (hdr.IsQosData () && hdr.IsQosNoAck ()) |
836 else if (hdr.IsQosData () && hdr.IsQosNoAck ()) |
837 { |
837 { |
1536 if (respHdr->GetTimeout () != 0) |
1536 if (respHdr->GetTimeout () != 0) |
1537 { |
1537 { |
1538 AgreementsI it = m_bAckAgreements.find (std::make_pair (originator, respHdr->GetTid ())); |
1538 AgreementsI it = m_bAckAgreements.find (std::make_pair (originator, respHdr->GetTid ())); |
1539 Time timeout = MicroSeconds (1024 * agreement.GetTimeout ()); |
1539 Time timeout = MicroSeconds (1024 * agreement.GetTimeout ()); |
1540 |
1540 |
1541 AccessClass ac = QosUtilsMapTidToAc (agreement.GetTid ()); |
1541 AcIndex ac = QosUtilsMapTidToAc (agreement.GetTid ()); |
1542 |
1542 |
1543 it->second.first.m_inactivityEvent = Simulator::Schedule (timeout, |
1543 it->second.first.m_inactivityEvent = Simulator::Schedule (timeout, |
1544 &MacLowBlockAckEventListener::BlockAckInactivityTimeout, |
1544 &MacLowBlockAckEventListener::BlockAckInactivityTimeout, |
1545 m_edcaListeners[ac], |
1545 m_edcaListeners[ac], |
1546 originator, tid); |
1546 originator, tid); |
1844 { |
1844 { |
1845 NS_ASSERT (agreement.m_inactivityEvent.IsRunning ()); |
1845 NS_ASSERT (agreement.m_inactivityEvent.IsRunning ()); |
1846 agreement.m_inactivityEvent.Cancel (); |
1846 agreement.m_inactivityEvent.Cancel (); |
1847 Time timeout = MicroSeconds (1024 * agreement.GetTimeout ()); |
1847 Time timeout = MicroSeconds (1024 * agreement.GetTimeout ()); |
1848 |
1848 |
1849 AccessClass ac = QosUtilsMapTidToAc (agreement.GetTid ()); |
1849 AcIndex ac = QosUtilsMapTidToAc (agreement.GetTid ()); |
1850 //std::map<AccessClass, MacLowTransmissionListener*>::iterator it = m_edcaListeners.find (ac); |
1850 //std::map<AcIndex, MacLowTransmissionListener*>::iterator it = m_edcaListeners.find (ac); |
1851 //NS_ASSERT (it != m_edcaListeners.end ()); |
1851 //NS_ASSERT (it != m_edcaListeners.end ()); |
1852 |
1852 |
1853 agreement.m_inactivityEvent = Simulator::Schedule (timeout, |
1853 agreement.m_inactivityEvent = Simulator::Schedule (timeout, |
1854 &MacLowBlockAckEventListener::BlockAckInactivityTimeout, |
1854 &MacLowBlockAckEventListener::BlockAckInactivityTimeout, |
1855 m_edcaListeners[ac], |
1855 m_edcaListeners[ac], |
1857 agreement.GetTid ()); |
1857 agreement.GetTid ()); |
1858 } |
1858 } |
1859 } |
1859 } |
1860 |
1860 |
1861 void |
1861 void |
1862 MacLow::RegisterBlockAckListenerForAc (enum AccessClass ac, MacLowBlockAckEventListener *listener) |
1862 MacLow::RegisterBlockAckListenerForAc (enum AcIndex ac, MacLowBlockAckEventListener *listener) |
1863 { |
1863 { |
1864 m_edcaListeners.insert (std::make_pair (ac, listener)); |
1864 m_edcaListeners.insert (std::make_pair (ac, listener)); |
1865 } |
1865 } |
1866 |
1866 |
1867 } // namespace ns3 |
1867 } // namespace ns3 |