|
|
| 363 |
m_sendCtsEvent (), |
363 |
m_sendCtsEvent (), |
| 364 |
m_sendAckEvent (), |
364 |
m_sendAckEvent (), |
| 365 |
m_sendDataEvent (), |
365 |
m_sendDataEvent (), |
| 366 |
m_waitSifsEvent (), |
366 |
m_waitIfsEvent (), |
| 367 |
m_endTxNoAckEvent (), |
367 |
m_endTxNoAckEvent (), |
| 368 |
m_currentPacket (0), |
368 |
m_currentPacket (0), |
| 369 |
m_listener (0), |
369 |
m_listener (0), |
|
|
| 428 |
m_sendCtsEvent.Cancel (); |
428 |
m_sendCtsEvent.Cancel (); |
| 429 |
m_sendAckEvent.Cancel (); |
429 |
m_sendAckEvent.Cancel (); |
| 430 |
m_sendDataEvent.Cancel (); |
430 |
m_sendDataEvent.Cancel (); |
| 431 |
m_waitSifsEvent.Cancel (); |
431 |
m_waitIfsEvent.Cancel (); |
| 432 |
m_endTxNoAckEvent.Cancel (); |
432 |
m_endTxNoAckEvent.Cancel (); |
| 433 |
m_waitRifsEvent.Cancel (); |
|
|
| 434 |
m_phy = 0; |
433 |
m_phy = 0; |
| 435 |
m_stationManager = 0; |
434 |
m_stationManager = 0; |
| 436 |
if (m_phyMacLowListener != 0) |
435 |
if (m_phyMacLowListener != 0) |
|
|
| 493 |
m_sendDataEvent.Cancel (); |
492 |
m_sendDataEvent.Cancel (); |
| 494 |
oneRunning = true; |
493 |
oneRunning = true; |
| 495 |
} |
494 |
} |
| 496 |
if (m_waitSifsEvent.IsRunning ()) |
495 |
if (m_waitIfsEvent.IsRunning ()) |
| 497 |
{ |
496 |
{ |
| 498 |
m_waitSifsEvent.Cancel (); |
497 |
m_waitIfsEvent.Cancel (); |
| 499 |
oneRunning = true; |
|
|
| 500 |
} |
| 501 |
if (m_waitRifsEvent.IsRunning ()) |
| 502 |
{ |
| 503 |
m_waitRifsEvent.Cancel (); |
| 504 |
oneRunning = true; |
498 |
oneRunning = true; |
| 505 |
} |
499 |
} |
| 506 |
if (m_endTxNoAckEvent.IsRunning ()) |
500 |
if (m_endTxNoAckEvent.IsRunning ()) |
|
|
| 1000 |
} |
994 |
} |
| 1001 |
if (m_txParams.HasNextPacket ()) |
995 |
if (m_txParams.HasNextPacket ()) |
| 1002 |
{ |
996 |
{ |
| 1003 |
m_waitSifsEvent = Simulator::Schedule (GetSifs (), |
997 |
if (m_stationManager->GetRifsPermitted ()) |
| 1004 |
&MacLow::WaitSifsAfterEndTxFragment, this); |
998 |
{ |
|
|
999 |
m_waitIfsEvent = Simulator::Schedule (GetRifs (), |
| 1000 |
&MacLow::WaitIfsAfterEndTxFragment, this); |
| 1001 |
} |
| 1002 |
else |
| 1003 |
{ |
| 1004 |
m_waitIfsEvent = Simulator::Schedule (GetSifs (), |
| 1005 |
&MacLow::WaitIfsAfterEndTxFragment, this); |
| 1006 |
} |
| 1005 |
} |
1007 |
} |
| 1006 |
else if (m_currentHdr.IsQosData () && !m_ampdu) |
1008 |
else if (m_currentHdr.IsQosData () && !m_ampdu) |
| 1007 |
{ |
1009 |
{ |
| 1008 |
m_waitSifsEvent = Simulator::Schedule (GetSifs (), |
1010 |
if (m_stationManager->GetRifsPermitted ()) |
| 1009 |
&MacLow::WaitSifsAfterEndTx, this); |
1011 |
{ |
|
|
1012 |
m_waitIfsEvent = Simulator::Schedule (GetRifs (), |
| 1013 |
&MacLow::WaitIfsAfterEndTx, this); |
| 1014 |
} |
| 1015 |
else |
| 1016 |
{ |
| 1017 |
m_waitIfsEvent = Simulator::Schedule (GetSifs (), |
| 1018 |
&MacLow::WaitIfsAfterEndTx, this); |
| 1019 |
} |
| 1010 |
} |
1020 |
} |
| 1011 |
|
1021 |
|
| 1012 |
FlushAggregateQueue (); |
1022 |
FlushAggregateQueue (); |
|
|
| 1965 |
} |
1975 |
} |
| 1966 |
else if (m_txParams.HasNextPacket ()) |
1976 |
else if (m_txParams.HasNextPacket ()) |
| 1967 |
{ |
1977 |
{ |
| 1968 |
if (m_stationManager->HasHtSupported ()) |
1978 |
if (m_stationManager->GetRifsPermitted ()) |
|
|
1979 |
|
| 1969 |
{ |
1980 |
{ |
| 1970 |
Time delay = txDuration + GetRifs (); |
1981 |
Time delay = txDuration + GetRifs (); |
| 1971 |
NS_ASSERT (m_waitRifsEvent.IsExpired ()); |
1982 |
NS_ASSERT (m_waitIfsEvent.IsExpired ()); |
| 1972 |
m_waitRifsEvent = Simulator::Schedule (delay, &MacLow::WaitSifsAfterEndTxFragment, this); |
1983 |
m_waitIfsEvent = Simulator::Schedule (delay, &MacLow::WaitIfsAfterEndTxFragment, this); |
| 1973 |
} |
1984 |
} |
| 1974 |
else |
1985 |
else |
| 1975 |
{ |
1986 |
{ |
| 1976 |
Time delay = txDuration + GetSifs (); |
1987 |
Time delay = txDuration + GetSifs (); |
| 1977 |
NS_ASSERT (m_waitSifsEvent.IsExpired ()); |
1988 |
NS_ASSERT (m_waitIfsEvent.IsExpired ()); |
| 1978 |
m_waitSifsEvent = Simulator::Schedule (delay, &MacLow::WaitSifsAfterEndTxFragment, this); |
1989 |
m_waitIfsEvent = Simulator::Schedule (delay, &MacLow::WaitIfsAfterEndTxFragment, this); |
| 1979 |
} |
1990 |
} |
| 1980 |
} |
1991 |
} |
| 1981 |
else |
1992 |
else |
|
|
| 2281 |
} |
2292 |
} |
| 2282 |
if (m_txParams.HasNextPacket ()) |
2293 |
if (m_txParams.HasNextPacket ()) |
| 2283 |
{ |
2294 |
{ |
| 2284 |
newDuration += GetSifs (); |
2295 |
if (m_stationManager->GetRifsPermitted ()) |
|
|
2296 |
{ |
| 2297 |
newDuration += GetRifs (); |
| 2298 |
} |
| 2299 |
else |
| 2300 |
{ |
| 2301 |
newDuration += GetSifs (); |
| 2302 |
} |
| 2285 |
newDuration += m_phy->CalculateTxDuration (m_txParams.GetNextPacketSize (), m_currentTxVector, preamble, m_phy->GetFrequency ()); |
2303 |
newDuration += m_phy->CalculateTxDuration (m_txParams.GetNextPacketSize (), m_currentTxVector, preamble, m_phy->GetFrequency ()); |
| 2286 |
if (m_txParams.MustWaitCompressedBlockAck ()) |
2304 |
if (m_txParams.MustWaitCompressedBlockAck ()) |
| 2287 |
{ |
2305 |
{ |
|
|
| 2316 |
} |
2334 |
} |
| 2317 |
|
2335 |
|
| 2318 |
void |
2336 |
void |
| 2319 |
MacLow::WaitSifsAfterEndTxFragment (void) |
2337 |
MacLow::WaitIfsAfterEndTxFragment (void) |
| 2320 |
{ |
2338 |
{ |
| 2321 |
m_listener->StartNextFragment (); |
2339 |
m_listener->StartNextFragment (); |
| 2322 |
} |
2340 |
} |
| 2323 |
|
2341 |
|
| 2324 |
void |
2342 |
void |
| 2325 |
MacLow::WaitSifsAfterEndTx (void) |
2343 |
MacLow::WaitIfsAfterEndTx (void) |
| 2326 |
{ |
2344 |
{ |
| 2327 |
m_listener->StartNext (); |
2345 |
m_listener->StartNext (); |
| 2328 |
} |
2346 |
} |