Are different MCS rates supported when you are running in noack mode?

Context: I am using ath9k modems+Compex WPQ864 (linux-ipq864) boards. I have configured one of the boards as Access point and other one as station. I have connected them on wlan and ping works. I am trying to turn off ack using:

iw dev wlan1 set noack_map 0xff

And I tried to modify MCS rates using:

iw dev wlan1 set bitrates ht-mcs-5 7

But this works as intended when ack is on, but has no effect when I turn off ack using the above noack_map command. And the rate is always at 6Mbps.

iw wlan1 station dump 

shows the following output:

inactive time:  570 ms
rx bytes:       190293
rx packets:     1700
tx bytes:       187747
tx packets:     1621
tx retries:     0
tx failed:      883
rx drop misc:   1
signal:         -37 [-44, -38] dBm
signal avg:     -36 [-43, -37] dBm
tx bitrate:     6.0 MBit/s
rx bitrate:     13.0 MBit/s MCS 1rx drop misc:   1
signal:         -37 [-44, -38] dBm
signal avg:     -36 [-43, -37] dBm
tx bitrate:     6.0 MBit/s
rx bitrate:     13.0 MBit/s MCS 1

Any help is appreciated.

  • Just out of curiosity, why are you using noack modes? Btw these bitrates are extremely bad for the signal strength output of iw wlan1 station dump. Jul 26 '18 at 16:06
  • Turning off the ack is an absolute requirement to achieve a goal for overall system.
    – LinuxUser
    Jul 27 '18 at 0:03
  • 1
    Now I'm very curious: What is the goal for the overall system that requires turning off ack's? And I guess you'll have to read the ath9k driver source to find an answer, OpenWRT very likely has no influence on this.
    – dirkt
    Jul 27 '18 at 6:16
  • Oh, everybody's curious about the goal :) It's the delay, dude! Sometimes you can afford losing a packet, but cannot afford the stream to get stuck even for a few milliseconds. It will increase jitter and bite your ass if you're doing VoIP or something similar.
    – ogurets
    Aug 9 '18 at 23:39

Lucky you! I'm trying to create a low-delay channel for video. Every method I've tried to suppress Acks (packet injection, QoS, noack_map 0x01) works, but is dropping my data rate down to 1 Mbps.

You could try NoAck'ing one socket instead of the whole interface (this is C, I've tried to do this via iptables' set-tos option, but didn't figure out how it works):

int priority = 262;  // Wifi QoS priority Video (VI)
if (setsockopt(s, SOL_SOCKET, SO_PRIORITY, (const char *)&priority, sizeof(priority)) < 0) {
    perror("setsockopt SO_PRIORITY");

It will give your socket priority 6 (VI aka Video) in QoS Control field of 802.11 header. Then use this:

iw dev wlan0 set noack_map 0x00C0

to enable NoAck for this socket. This should've been the proper way of doing it, but for me the data rate of these NoAcked frames was hard nailed to 1 Mbps despite of iw dev set bitrates and iw dev set mcast_rate. Maybe you would be luckier.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.