Bugzilla – Bug 2136
The usage of tid in wifi and wave module shall be "if (tid > 7)" rather than "if (tid >= 7)"
Last modified: 2015-06-07 10:46:43 UTC
Hi, In adhoc-wifi-mac.cc, ap-wifi-mac.cc, sta-wifi-mac.cc of wifi moudle and ocb-wifi-mac.cc of wave moudule, there is a method called "Enqueue". Its implementation has a part about tid: // Fill in the QoS control field in the MAC header tid = QosUtilsGetTidForPacket (packet); // Any value greater than 7 is invalid and likely indicates that // the packet had no QoS tag, so we revert to zero, which'll // mean that AC_BE is used. if (tid >= 7) { tid = 0; } hdr.SetQosTid (tid); Here if tid is greater than 7, then tid will be assigned default valud 0. However I think we should use "if (tid > 7)" rather than "if (tid >= 7)". Because if tid from a packet is 7, the correspnding AcIndex is AC_VO. If tid is chaned to 0 by original code there, the correspnding AcIndex is AC_BE. So imaging that, there is a packet which is important and wants to use AC_VO MAC queue, but is wrongly inserted into AC_VO MAC queue :( I found this issue in the old ns-3 version, but seems still there in current devel version. I still use an old ns-3 version thus I have not created the patch. Hope the maintainer can review this issue and complete the patch. Thanks. Junling
Thanks for reporting, I will have a check. In which version have you noticed the issue?
I confirm the bug still exists in ns-3-dev. It should indeed be greater than 7 and not equal and greater. Since it is an obvious fix, I will commit it asap, I do not think there is much comments to bring on this.
fixed in changeset 11426:e2441f5f2c55