Use broadcasts.
Greetings
Timo
The 802.11(e) standard only allows a NoACK policy on QoS packets. In the base standard only groupcast packets are not acked, unicasts are always acked.
In the attachment a small patch I made to set the wifimode on broadcast/groupcast packet. Only for the ConstantRateManager.
Greetings
Timo
> However, it turned out that it is not that simple.
indeed.
>
> First, in MacLow::ReceiveOk() line 607, Ack is scheduled without
> checking m_txParams.MustWaitAck(). Thus, it will fail assertion at
> line 1152 in mac-low.cc.
I don't really understand the above: line 607 is reached through the
following if statement which includes a check for MustWaitAck and is
called on the tx side:
else if (hdr.IsAck () &&
hdr.GetAddr1 () == m_self &&
(m_normalAckTimeoutEvent.IsRunning () ||
m_fastAckTimeoutEvent.IsRunning () ||
m_superFastAckTimeoutEvent.IsRunning ()) &&
m_txParams.MustWaitAck ())
and line 1152 is called on the rx side so, there is no direct immediate
relationship between these two pieces of code: the chain of causal
events leading to the crash must be a bit longer.
> It will be nice to enable "no ACK" as a generic method that user can
> use easily. In real system, this is an option. For example, in Linux,
> you can use "iwpriv ath0 noackpolicy" command. This is just a thought.
Yes, it sounds like a nice feature to have:
1) I am a bit curious what you intend to use this for
2) I am worried that a complete patch would be intrusive: you would need
to make sure that you modify correctly MacLow::CalculateOverallTxTime
and that the DcaTxop class still works correctly after these changes to
MacLow.
i.e., I am trying to evaluate the pros and cons of adding this feature:
if the cost is sufficiently low, we should go for it, but if the cost is
many new if statements in MacLow, and other classes, it is going to be a
tough sell.
Mathieu
hrm, right: I must have temporarily switched to a parallel dimension:
sorry about this.
Anyway, line 607 as you show it is on the rx side so, it can't check
MustWaitAck which is set on the tx side. Or, maybe you are suggesting
that this code checks WifiMacHeader::IsQosNoAck ? I am afraid that this
would work only for 802.11e-enabled frames.
> Agreed. FYI, I tried both approaches, one is based on your tip with
> modifications I described early, the other approach is to use Timo's
> patch. Both approaches worked fine for my current purpose. They
> produced the same results. It seems to me that Timo's patch can be
> viewed as low cost and a generalization of setting broadcast rates. It
> may make sense to include that patch.
yes, I tried to find a good reason to not take that patch, but it looks
good :)
Mathieu
> yes, I tried to find a good reason to not take that patch, but it looks
> good :)
timo: you have commit powers so, feel free to push this in ns-3-dev if
it is compatible with raj's release management timeline.
Mathieu
> > Yes, it sounds like a nice feature to have:
> > 1) I am a bit curious what you intend to use this for
>
> Well, at this moment, I just want to measure raw frame error rate for
> single hop under different tx modes. However, I can see many cross-
> layer protocol designs may need more flexibility to control MAC
> behavior such as ACK. Also, multicast routing protocol may want to set
> broadcast rate to higher rate than the basic rate etc.
I should have pointed this out yesterday but, did you consider
src/devices/wifi/wifi-phy-test.cc ?
i.e.,:
[mlacage@diese ns-3-dev]$ ./build/debug/src/devices/wifi/wifi-phy-test
regards,
Mathieu