Left: | ||
Right: |
LEFT | RIGHT |
---|---|
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) 2004,2005,2006 INRIA | 3 * Copyright (c) 2004,2005,2006 INRIA |
4 * | 4 * |
5 * This program is free software; you can redistribute it and/or modify | 5 * 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 | 6 * it under the terms of the GNU General Public License version 2 as |
7 * published by the Free Software Foundation; | 7 * published by the Free Software Foundation; |
8 * | 8 * |
9 * This program is distributed in the hope that it will be useful, | 9 * This program is distributed in the hope that it will be useful, |
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
12 * GNU General Public License for more details. | 12 * GNU General Public License for more details. |
13 * | 13 * |
14 * You should have received a copy of the GNU General Public License | 14 * You should have received a copy of the GNU General Public License |
15 * along with this program; if not, write to the Free Software | 15 * along with this program; if not, write to the Free Software |
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | 16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
17 * | 17 * |
18 * Author: Federico Maguolo <maguolof@dei.unipd.it> | 18 * Author: Federico Maguolo <maguolof@dei.unipd.it> |
19 */ | 19 */ |
20 | 20 |
21 #include "ns3/log.h" | |
22 #include "ns3/packet.h" | |
23 #include "ns3/simulator.h" | |
21 #include "rraa-wifi-manager.h" | 24 #include "rraa-wifi-manager.h" |
25 #include "wifi-phy.h" | |
22 #include "wifi-mac.h" | 26 #include "wifi-mac.h" |
23 #include "ns3/log.h" | |
24 #include "ns3/boolean.h" | |
25 #include "ns3/double.h" | |
26 #include "ns3/uinteger.h" | |
27 #include "ns3/simulator.h" | |
28 | 27 |
29 #define Min(a,b) ((a < b) ? a : b) | 28 #define Min(a,b) ((a < b) ? a : b) |
30 | 29 |
31 namespace ns3 { | 30 namespace ns3 { |
32 | 31 |
33 NS_LOG_COMPONENT_DEFINE ("RraaWifiManager"); | 32 NS_LOG_COMPONENT_DEFINE ("RraaWifiManager"); |
34 | 33 |
35 /** | 34 /** |
36 * \brief hold per-remote-station state for RRAA Wifi manager. | 35 * \brief hold per-remote-station state for RRAA Wifi manager. |
37 * | 36 * |
38 * This struct extends from WifiRemoteStation struct to hold additional | 37 * This struct extends from WifiRemoteStation struct to hold additional |
39 * information required by the RRAA Wifi manager | 38 * information required by the RRAA Wifi manager |
40 */ | 39 */ |
41 struct RraaWifiRemoteStation : public WifiRemoteStation | 40 struct RraaWifiRemoteStation : public WifiRemoteStation |
42 { | 41 { |
43 uint32_t m_counter; //!< Counter for transmission attempts. | 42 uint32_t m_counter; //!< Counter for transmission attempts. |
44 uint32_t m_nFailed; //!< Number of failed transmission attempts. | 43 uint32_t m_nFailed; //!< Number of failed transmission attempts. |
45 uint32_t m_adaptiveRtsWnd; //!< Window size for the Adaptive RTS mechanism . | 44 uint32_t m_adaptiveRtsWnd; //!< Window size for the Adaptive RTS mechanism . |
46 uint32_t m_rtsCounter; //!< Counter for RTS transmission attempts. | 45 uint32_t m_rtsCounter; //!< Counter for RTS transmission attempts. |
47 Time m_lastReset; //!< Time of the last reset. | 46 Time m_lastReset; //!< Time of the last reset. |
48 bool m_adaptiveRtsOn; //!< Check if Adaptive RTS mechanism is on. | 47 bool m_adaptiveRtsOn; //!< Check if Adaptive RTS mechanism is on. |
49 bool m_lastFrameFail; //!< Flag if the last frame sent has failed. | 48 bool m_lastFrameFail; //!< Flag if the last frame sent has failed. |
50 bool m_initialized; //!< For initializing variables. | 49 bool m_initialized; //!< For initializing variables. |
51 | 50 uint8_t m_nRate; //!< Number of supported rates. |
52 uint32_t m_nRate; //!< Number of supported rates. | 51 uint8_t m_rateIndex; //!< Current rate index. |
53 | |
54 uint32_t m_rateIndex; //!< Current rate index. | |
55 | 52 |
56 RraaThresholdsTable m_thresholds; //!< RRAA thresholds for this station. | 53 RraaThresholdsTable m_thresholds; //!< RRAA thresholds for this station. |
57 }; | 54 }; |
58 | 55 |
59 NS_OBJECT_ENSURE_REGISTERED (RraaWifiManager); | 56 NS_OBJECT_ENSURE_REGISTERED (RraaWifiManager); |
60 | 57 |
61 TypeId | 58 TypeId |
62 RraaWifiManager::GetTypeId (void) | 59 RraaWifiManager::GetTypeId (void) |
63 { | 60 { |
64 static TypeId tid = TypeId ("ns3::RraaWifiManager") | 61 static TypeId tid = TypeId ("ns3::RraaWifiManager") |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
106 "ns3::TracedValueCallback::Uint64") | 103 "ns3::TracedValueCallback::Uint64") |
107 ; | 104 ; |
108 return tid; | 105 return tid; |
109 } | 106 } |
110 | 107 |
111 | 108 |
112 RraaWifiManager::RraaWifiManager () | 109 RraaWifiManager::RraaWifiManager () |
113 : WifiRemoteStationManager (), | 110 : WifiRemoteStationManager (), |
114 m_currentRate (0) | 111 m_currentRate (0) |
115 { | 112 { |
113 NS_LOG_FUNCTION (this); | |
116 } | 114 } |
117 | 115 |
118 RraaWifiManager::~RraaWifiManager () | 116 RraaWifiManager::~RraaWifiManager () |
119 { | 117 { |
118 NS_LOG_FUNCTION (this); | |
120 } | 119 } |
121 | 120 |
122 void | 121 void |
123 RraaWifiManager::SetupPhy (const Ptr<WifiPhy> phy) | 122 RraaWifiManager::SetupPhy (const Ptr<WifiPhy> phy) |
124 { | 123 { |
125 NS_LOG_FUNCTION (this); | 124 NS_LOG_FUNCTION (this << phy); |
126 uint32_t nModes = phy->GetNModes (); | 125 uint8_t nModes = phy->GetNModes (); |
127 for (uint32_t i = 0; i < nModes; i++) | 126 for (uint8_t i = 0; i < nModes; i++) |
128 { | 127 { |
129 WifiMode mode = phy->GetMode (i); | 128 WifiMode mode = phy->GetMode (i); |
130 WifiTxVector txVector; | 129 WifiTxVector txVector; |
131 txVector.SetMode (mode); | 130 txVector.SetMode (mode); |
132 txVector.SetPreambleType (WIFI_PREAMBLE_LONG); | 131 txVector.SetPreambleType (WIFI_PREAMBLE_LONG); |
133 /* Calculate the TX Time of the data and the corresponding ACK*/ | 132 /* Calculate the TX Time of the data and the corresponding ACK*/ |
134 Time dataTxTime = phy->CalculateTxDuration (m_frameLength, txVector, phy-> GetFrequency ()); | 133 Time dataTxTime = phy->CalculateTxDuration (m_frameLength, txVector, phy-> GetFrequency ()); |
135 Time ackTxTime = phy->CalculateTxDuration (m_ackLength, txVector, phy->Get Frequency ()); | 134 Time ackTxTime = phy->CalculateTxDuration (m_ackLength, txVector, phy->Get Frequency ()); |
136 NS_LOG_DEBUG ("Calculating TX times: Mode= " << mode << " DataTxTime= " << dataTxTime << " AckTxTime= " << ackTxTime); | 135 NS_LOG_DEBUG ("Calculating TX times: Mode= " << mode << " DataTxTime= " << dataTxTime << " AckTxTime= " << ackTxTime); |
137 AddCalcTxTime (mode, dataTxTime + ackTxTime); | 136 AddCalcTxTime (mode, dataTxTime + ackTxTime); |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
222 void | 221 void |
223 RraaWifiManager::InitThresholds (RraaWifiRemoteStation *station) | 222 RraaWifiManager::InitThresholds (RraaWifiRemoteStation *station) |
224 { | 223 { |
225 NS_LOG_FUNCTION (this << station); | 224 NS_LOG_FUNCTION (this << station); |
226 NS_LOG_DEBUG ("InitThresholds = " << station); | 225 NS_LOG_DEBUG ("InitThresholds = " << station); |
227 | 226 |
228 double nextCritical = 0; | 227 double nextCritical = 0; |
229 double nextMtl = 0; | 228 double nextMtl = 0; |
230 double mtl = 0; | 229 double mtl = 0; |
231 double ori = 0; | 230 double ori = 0; |
232 for (uint32_t i = 0; i < station->m_nRate; i++) | 231 for (uint8_t i = 0; i < station->m_nRate; i++) |
233 { | 232 { |
234 WifiMode mode = GetSupported (station, i); | 233 WifiMode mode = GetSupported (station, i); |
235 Time totalTxTime = GetCalcTxTime (mode) + m_sifs + m_difs; | 234 Time totalTxTime = GetCalcTxTime (mode) + m_sifs + m_difs; |
236 if (i == GetMaxRate (station)) | 235 if (i == GetMaxRate (station)) |
237 { | 236 { |
238 ori = 0; | 237 ori = 0; |
239 } | 238 } |
240 else | 239 else |
241 { | 240 { |
242 WifiMode nextMode = GetSupported (station, i + 1); | 241 WifiMode nextMode = GetSupported (station, i + 1); |
243 Time nextTotalTxTime = GetCalcTxTime (nextMode) + m_sifs + m_difs; | 242 Time nextTotalTxTime = GetCalcTxTime (nextMode) + m_sifs + m_difs; |
244 nextCritical = 1 - (nextTotalTxTime.GetSeconds () / totalTxTime.GetSec onds ()); | 243 nextCritical = 1 - (nextTotalTxTime.GetSeconds () / totalTxTime.GetSec onds ()); |
245 nextMtl = m_alpha * nextCritical; | 244 nextMtl = m_alpha * nextCritical; |
246 ori = nextMtl / m_beta; | 245 ori = nextMtl / m_beta; |
247 } | 246 } |
248 if (i == GetMinRate (station)) | 247 if (i == 0) |
249 { | 248 { |
250 mtl = 1; | 249 mtl = 1; |
251 } | 250 } |
252 WifiRraaThresholds th; | 251 WifiRraaThresholds th; |
253 th.m_ewnd = static_cast<uint32_t>(ceil (m_tau / totalTxTime.GetSeconds ()) ); | 252 th.m_ewnd = static_cast<uint32_t> (ceil (m_tau / totalTxTime.GetSeconds () )); |
254 th.m_ori = ori; | 253 th.m_ori = ori; |
255 th.m_mtl = mtl; | 254 th.m_mtl = mtl; |
256 station->m_thresholds.push_back (std::make_pair (th, mode)); | 255 station->m_thresholds.push_back (std::make_pair (th, mode)); |
257 mtl = nextMtl; | 256 mtl = nextMtl; |
258 NS_LOG_DEBUG (mode << " " << th.m_ewnd << " " << th.m_mtl << " " << th.m_o ri); | 257 NS_LOG_DEBUG (mode << " " << th.m_ewnd << " " << th.m_mtl << " " << th.m_o ri); |
259 } | 258 } |
260 } | 259 } |
261 | 260 |
262 void | 261 void |
263 RraaWifiManager::ResetCountersBasic (RraaWifiRemoteStation *station) | 262 RraaWifiManager::ResetCountersBasic (RraaWifiRemoteStation *station) |
264 { | 263 { |
265 NS_LOG_FUNCTION (this << station); | 264 NS_LOG_FUNCTION (this << station); |
266 station->m_nFailed = 0; | 265 station->m_nFailed = 0; |
267 station->m_counter = GetThresholds (station, station->m_rateIndex).m_ewnd; | 266 station->m_counter = GetThresholds (station, station->m_rateIndex).m_ewnd; |
268 station->m_lastReset = Simulator::Now (); | 267 station->m_lastReset = Simulator::Now (); |
269 } | 268 } |
270 | 269 |
271 uint32_t | 270 uint8_t |
272 RraaWifiManager::GetMaxRate (RraaWifiRemoteStation *station) | 271 RraaWifiManager::GetMaxRate (RraaWifiRemoteStation *station) const |
273 { | 272 { |
274 return station->m_nRate - 1; | 273 return station->m_nRate - 1; |
275 } | |
276 | |
277 uint32_t | |
278 RraaWifiManager::GetMinRate (RraaWifiRemoteStation *station) | |
279 { | |
280 NS_UNUSED(station); | |
S. Deronne
2017/12/17 15:39:15
to be checked what is the purpose of this dummy fu
ammo6818-vandals.uidaho.edu
2017/12/20 04:16:34
function removed.
| |
281 return 0; | |
282 } | 274 } |
283 | 275 |
284 void | 276 void |
285 RraaWifiManager::DoReportRtsFailed (WifiRemoteStation *st) | 277 RraaWifiManager::DoReportRtsFailed (WifiRemoteStation *st) |
286 { | 278 { |
287 NS_LOG_FUNCTION (this << st); | 279 NS_LOG_FUNCTION (this << st); |
288 } | 280 } |
289 | 281 |
290 void | 282 void |
291 RraaWifiManager::DoReportDataFailed (WifiRemoteStation *st) | 283 RraaWifiManager::DoReportDataFailed (WifiRemoteStation *st) |
(...skipping 12 matching lines...) Expand all Loading... | |
304 double rxSnr, WifiMode txMode) | 296 double rxSnr, WifiMode txMode) |
305 { | 297 { |
306 NS_LOG_FUNCTION (this << st << rxSnr << txMode); | 298 NS_LOG_FUNCTION (this << st << rxSnr << txMode); |
307 } | 299 } |
308 | 300 |
309 void | 301 void |
310 RraaWifiManager::DoReportRtsOk (WifiRemoteStation *st, | 302 RraaWifiManager::DoReportRtsOk (WifiRemoteStation *st, |
311 double ctsSnr, WifiMode ctsMode, double rtsSnr) | 303 double ctsSnr, WifiMode ctsMode, double rtsSnr) |
312 { | 304 { |
313 NS_LOG_FUNCTION (this << st << ctsSnr << ctsMode << rtsSnr); | 305 NS_LOG_FUNCTION (this << st << ctsSnr << ctsMode << rtsSnr); |
314 NS_LOG_DEBUG ("self=" << st << " rts ok"); | |
315 } | 306 } |
316 | 307 |
317 void | 308 void |
318 RraaWifiManager::DoReportDataOk (WifiRemoteStation *st, | 309 RraaWifiManager::DoReportDataOk (WifiRemoteStation *st, |
319 double ackSnr, WifiMode ackMode, double dataSnr ) | 310 double ackSnr, WifiMode ackMode, double dataSnr ) |
320 { | 311 { |
321 NS_LOG_FUNCTION (this << st << ackSnr << ackMode << dataSnr); | 312 NS_LOG_FUNCTION (this << st << ackSnr << ackMode << dataSnr); |
322 RraaWifiRemoteStation *station = (RraaWifiRemoteStation *) st; | 313 RraaWifiRemoteStation *station = (RraaWifiRemoteStation *) st; |
323 station->m_lastFrameFail = false; | 314 station->m_lastFrameFail = false; |
324 CheckTimeout (station); | 315 CheckTimeout (station); |
(...skipping 11 matching lines...) Expand all Loading... | |
336 RraaWifiManager::DoReportFinalDataFailed (WifiRemoteStation *st) | 327 RraaWifiManager::DoReportFinalDataFailed (WifiRemoteStation *st) |
337 { | 328 { |
338 NS_LOG_FUNCTION (this << st); | 329 NS_LOG_FUNCTION (this << st); |
339 } | 330 } |
340 | 331 |
341 WifiTxVector | 332 WifiTxVector |
342 RraaWifiManager::DoGetDataTxVector (WifiRemoteStation *st) | 333 RraaWifiManager::DoGetDataTxVector (WifiRemoteStation *st) |
343 { | 334 { |
344 NS_LOG_FUNCTION (this << st); | 335 NS_LOG_FUNCTION (this << st); |
345 RraaWifiRemoteStation *station = (RraaWifiRemoteStation *) st; | 336 RraaWifiRemoteStation *station = (RraaWifiRemoteStation *) st; |
346 uint32_t channelWidth = GetChannelWidth (station); | 337 uint16_t channelWidth = GetChannelWidth (station); |
347 if (channelWidth > 20 && channelWidth != 22) | 338 if (channelWidth > 20 && channelWidth != 22) |
348 { | 339 { |
349 //avoid to use legacy rate adaptation algorithms for IEEE 802.11n/ac | 340 //avoid to use legacy rate adaptation algorithms for IEEE 802.11n/ac |
350 channelWidth = 20; | 341 channelWidth = 20; |
351 } | 342 } |
352 CheckInit (station); | 343 CheckInit (station); |
353 WifiMode mode = GetSupported (station, station->m_rateIndex); | 344 WifiMode mode = GetSupported (station, station->m_rateIndex); |
354 if (m_currentRate != mode.GetDataRate (static_cast<uint8_t>(channelWidth))) | 345 if (m_currentRate != mode.GetDataRate (channelWidth)) |
355 { | 346 { |
356 NS_LOG_DEBUG ("New datarate: " << mode.GetDataRate (static_cast<uint8_t>(c hannelWidth))); | 347 NS_LOG_DEBUG ("New datarate: " << mode.GetDataRate (channelWidth)); |
357 m_currentRate = mode.GetDataRate (static_cast<uint8_t>(channelWidth)); | 348 m_currentRate = mode.GetDataRate (channelWidth); |
358 } | 349 } |
359 return WifiTxVector (mode, GetDefaultTxPowerLevel (), static_cast<uint8_t>(Get LongRetryCount (station)), GetPreambleForTransmission (mode, GetAddress (station )), 800, 1, 1, 0, (uint8_t)channelWidth, GetAggregation (station), false); | 350 return WifiTxVector (mode, GetDefaultTxPowerLevel (), GetPreambleForTransmissi on (mode, GetAddress (station)), 800, 1, 1, 0, channelWidth, GetAggregation (sta tion), false); |
360 } | 351 } |
361 | 352 |
362 WifiTxVector | 353 WifiTxVector |
363 RraaWifiManager::DoGetRtsTxVector (WifiRemoteStation *st) | 354 RraaWifiManager::DoGetRtsTxVector (WifiRemoteStation *st) |
364 { | 355 { |
365 NS_LOG_FUNCTION (this << st); | 356 NS_LOG_FUNCTION (this << st); |
366 RraaWifiRemoteStation *station = (RraaWifiRemoteStation *) st; | 357 RraaWifiRemoteStation *station = (RraaWifiRemoteStation *) st; |
367 uint32_t channelWidth = GetChannelWidth (station); | 358 uint16_t channelWidth = GetChannelWidth (station); |
368 if (channelWidth > 20 && channelWidth != 22) | 359 if (channelWidth > 20 && channelWidth != 22) |
369 { | 360 { |
370 //avoid to use legacy rate adaptation algorithms for IEEE 802.11n/ac | 361 //avoid to use legacy rate adaptation algorithms for IEEE 802.11n/ac |
371 channelWidth = 20; | 362 channelWidth = 20; |
372 } | 363 } |
373 WifiTxVector rtsTxVector; | 364 WifiTxVector rtsTxVector; |
374 WifiMode mode; | 365 WifiMode mode; |
375 if (GetUseNonErpProtection () == false) | 366 if (GetUseNonErpProtection () == false) |
376 { | 367 { |
377 mode = GetSupported (station, 0); | 368 mode = GetSupported (station, 0); |
378 } | 369 } |
379 else | 370 else |
380 { | 371 { |
381 mode = GetNonErpSupported (station, 0); | 372 mode = GetNonErpSupported (station, 0); |
382 } | 373 } |
383 rtsTxVector = WifiTxVector (mode, GetDefaultTxPowerLevel (), static_cast<uint8 _t>(GetShortRetryCount (station)), GetPreambleForTransmission (mode, GetAddress (station)), 800, 1, 1, 0, (uint8_t)channelWidth, GetAggregation (station), false ); | 374 rtsTxVector = WifiTxVector (mode, GetDefaultTxPowerLevel (), GetPreambleForTra nsmission (mode, GetAddress (station)), 800, 1, 1, 0, channelWidth, GetAggregati on (station), false); |
384 return rtsTxVector; | 375 return rtsTxVector; |
385 } | 376 } |
386 | 377 |
387 bool | 378 bool |
388 RraaWifiManager::DoNeedRts (WifiRemoteStation *st, | 379 RraaWifiManager::DoNeedRts (WifiRemoteStation *st, |
389 Ptr<const Packet> packet, bool normally) | 380 Ptr<const Packet> packet, bool normally) |
390 { | 381 { |
391 NS_LOG_FUNCTION (this << st << packet << normally); | 382 NS_LOG_FUNCTION (this << st << packet << normally); |
392 RraaWifiRemoteStation *station = (RraaWifiRemoteStation *) st; | 383 RraaWifiRemoteStation *station = (RraaWifiRemoteStation *) st; |
393 CheckInit (station); | 384 CheckInit (station); |
(...skipping 14 matching lines...) Expand all Loading... | |
408 { | 399 { |
409 ResetCountersBasic (station); | 400 ResetCountersBasic (station); |
410 } | 401 } |
411 } | 402 } |
412 | 403 |
413 void | 404 void |
414 RraaWifiManager::RunBasicAlgorithm (RraaWifiRemoteStation *station) | 405 RraaWifiManager::RunBasicAlgorithm (RraaWifiRemoteStation *station) |
415 { | 406 { |
416 NS_LOG_FUNCTION (this << station); | 407 NS_LOG_FUNCTION (this << station); |
417 WifiRraaThresholds thresholds = GetThresholds (station, station->m_rateIndex); | 408 WifiRraaThresholds thresholds = GetThresholds (station, station->m_rateIndex); |
418 double ploss = (double) station->m_nFailed / (double) thresholds.m_ewnd; | 409 double ploss = (station->m_nFailed / thresholds.m_ewnd); |
419 if (station->m_counter == 0 | 410 if (station->m_counter == 0 |
420 || ploss > thresholds.m_mtl) | 411 || ploss > thresholds.m_mtl) |
421 { | 412 { |
422 if (station->m_rateIndex > GetMinRate (station) | 413 if (ploss > thresholds.m_mtl) |
423 && ploss > thresholds.m_mtl) | |
424 { | 414 { |
425 station->m_rateIndex--; | 415 station->m_rateIndex--; |
426 } | 416 } |
427 else if (station->m_rateIndex < GetMaxRate (station) | 417 else if (station->m_rateIndex < GetMaxRate (station) |
428 && ploss < thresholds.m_ori) | 418 && ploss < thresholds.m_ori) |
429 { | 419 { |
430 station->m_rateIndex++; | 420 station->m_rateIndex++; |
431 } | 421 } |
432 ResetCountersBasic (station); | 422 ResetCountersBasic (station); |
433 } | 423 } |
(...skipping 19 matching lines...) Expand all Loading... | |
453 station->m_adaptiveRtsOn = true; | 443 station->m_adaptiveRtsOn = true; |
454 station->m_rtsCounter--; | 444 station->m_rtsCounter--; |
455 } | 445 } |
456 else | 446 else |
457 { | 447 { |
458 station->m_adaptiveRtsOn = false; | 448 station->m_adaptiveRtsOn = false; |
459 } | 449 } |
460 } | 450 } |
461 | 451 |
462 WifiRraaThresholds | 452 WifiRraaThresholds |
463 RraaWifiManager::GetThresholds (RraaWifiRemoteStation *station, | 453 RraaWifiManager::GetThresholds (RraaWifiRemoteStation *station, uint8_t rate) co nst |
464 uint32_t rate) const | 454 { |
465 { | 455 NS_LOG_FUNCTION (this << station << +rate); |
466 NS_LOG_FUNCTION (this << station << rate); | |
467 WifiMode mode = GetSupported (station, rate); | 456 WifiMode mode = GetSupported (station, rate); |
468 return GetThresholds (station, mode); | 457 return GetThresholds (station, mode); |
469 } | 458 } |
470 | 459 |
471 bool | 460 bool |
472 RraaWifiManager::IsLowLatency (void) const | 461 RraaWifiManager::IsLowLatency (void) const |
473 { | 462 { |
474 return true; | 463 return true; |
475 } | 464 } |
476 | 465 |
(...skipping 21 matching lines...) Expand all Loading... | |
498 RraaWifiManager::SetHeSupported (bool enable) | 487 RraaWifiManager::SetHeSupported (bool enable) |
499 { | 488 { |
500 //HE is not supported by this algorithm. | 489 //HE is not supported by this algorithm. |
501 if (enable) | 490 if (enable) |
502 { | 491 { |
503 NS_FATAL_ERROR ("WifiRemoteStationManager selected does not support HE rat es"); | 492 NS_FATAL_ERROR ("WifiRemoteStationManager selected does not support HE rat es"); |
504 } | 493 } |
505 } | 494 } |
506 | 495 |
507 } //namespace ns3 | 496 } //namespace ns3 |
LEFT | RIGHT |