4

I am sending four WSM messages at once from the application layer to MAC_11p in veins. WSM messages are sent on CCH channel in the following order (priority is shown in parenthesis).

wsm(3), wsm(3), wsm(1), wsm(2)

Based on the access category in EDCA, 3 is the highest priority:

enum t_access_category
{
    AC_BK = 0,  // background
    AC_BE = 1,  // best effort
    AC_VI = 2,  // video
    AC_VO = 3   // voice
};

I am expecting that the WSM with priority 3 (voice) is sent down to the PHY_11p first, but apparently the MAC_11p layer sends the messages in the following order:

wsm(1), wsm(3), wsm(3), wsm(2)

Am I missing something here?

I was checking the 'initiateTransmit' method in the ECDA class and apparently the method iterates over the queues from background to voice. The WSM message in the background queue is selected for transmission and the remaining WSM messages will get internal contention!

Is this a bug?

ManiAm
  • 1,597
  • 4
  • 20
  • 41

1 Answers1

2

Yes, this appears to be a bug in Veins 4.5. The change was introduced between Veins 2.0-rc2 and Veins 2.0.

I have pushed commit https://github.com/sommer/veins/commit/d518253d to the master branch of Veins. It changes the behavior of internal collisions to be resolved using queues of higher priority first.

Christoph Sommer
  • 6,413
  • 1
  • 14
  • 34