|
|
| 123 |
{ |
123 |
{ |
| 124 |
m_txop->StartNextFragment (); |
124 |
m_txop->StartNextFragment (); |
| 125 |
} |
125 |
} |
| 126 |
virtual void StartNext (void) |
126 |
virtual void StartNextPacketInBA (void) |
| 127 |
{ |
127 |
{ |
| 128 |
m_txop->StartNext (); |
128 |
m_txop->StartNextPacketInBA (); |
|
|
129 |
} |
| 130 |
virtual void StartNextPacketInTxop (void) |
| 131 |
{ |
| 132 |
m_txop->StartNextPacketInTxop (); |
| 129 |
} |
133 |
} |
| 130 |
virtual void Cancel (void) |
134 |
virtual void Cancel (void) |
| 131 |
{ |
135 |
{ |
|
|
| 1201 |
} |
1205 |
} |
| 1202 |
|
1206 |
|
| 1203 |
void |
1207 |
void |
| 1204 |
EdcaTxopN::StartNext (void) |
1208 |
EdcaTxopN::StartNextPacketInBA (void) |
|
|
1209 |
{ |
| 1210 |
NS_LOG_FUNCTION (this); |
| 1211 |
Ptr<const Packet> peekedPacket = m_baManager->GetNextPacket (m_currentHdr); |
| 1212 |
Time tstamp; |
| 1213 |
if (peekedPacket == 0) |
| 1214 |
{ |
| 1215 |
peekedPacket = m_queue->PeekByTidAndAddress (&m_currentHdr, |
| 1216 |
m_currentHdr.GetQosTid (), |
| 1217 |
WifiMacHeader::ADDR1, |
| 1218 |
m_currentHdr.GetAddr1 (), |
| 1219 |
&tstamp); |
| 1220 |
} |
| 1221 |
if (peekedPacket == 0 || m_baManager->HasBar (m_currentBar)) |
| 1222 |
{ |
| 1223 |
SendBlockAckRequest (m_currentBar); |
| 1224 |
return; |
| 1225 |
} |
| 1226 |
|
| 1227 |
MacLowTransmissionParameters params; |
| 1228 |
params.DisableOverrideDurationId (); |
| 1229 |
params.DisableAck (); |
| 1230 |
params.DisableNextData (); |
| 1231 |
|
| 1232 |
NS_LOG_DEBUG ("start next packet belonging to the same BA"); |
| 1233 |
m_currentPacket = m_queue->DequeueByTidAndAddress (&m_currentHdr, |
| 1234 |
m_currentHdr.GetQosTid (), |
| 1235 |
WifiMacHeader::ADDR1, |
| 1236 |
m_currentHdr.GetAddr1 ()); |
| 1237 |
NS_ASSERT (m_currentPacket != 0); |
| 1238 |
uint16_t sequence = m_txMiddle->GetNextSequenceNumberfor (&m_currentHdr); |
| 1239 |
m_currentHdr.SetSequenceNumber (sequence); |
| 1240 |
m_stationManager->UpdateFragmentationThreshold (); |
| 1241 |
m_currentHdr.SetFragmentNumber (0); |
| 1242 |
m_currentHdr.SetNoMoreFragments (); |
| 1243 |
m_currentHdr.SetNoRetry (); |
| 1244 |
m_fragmentNumber = 0; |
| 1245 |
|
| 1246 |
VerifyBlockAck (); |
| 1247 |
GetLow ()->StartTransmission (m_currentPacket, &m_currentHdr, params, m_transmissionListener); |
| 1248 |
CompleteTx (); |
| 1249 |
} |
| 1250 |
|
| 1251 |
void |
| 1252 |
EdcaTxopN::StartNextPacketInTxop (void) |
| 1205 |
{ |
1253 |
{ |
| 1206 |
NS_LOG_FUNCTION (this); |
1254 |
NS_LOG_FUNCTION (this); |
| 1207 |
Time txopLimit = GetTxopLimit (); |
1255 |
Time txopLimit = GetTxopLimit (); |