在 noack 模式下运行时是否支持不同的 MCS 速率?
语境:我正在使用 ath9k 调制解调器 + Compex WPQ864 (linux-ipq864) 主板。我已将其中一个主板配置为接入点,将另一个配置为站点。我已将它们连接到 wlan 上,ping 成功。我尝试使用以下命令关闭 ack:
iw dev wlan1 set noack_map 0xff
我尝试使用以下方法修改 MCS 速率:
iw dev wlan1 set bitrates ht-mcs-5 7
但是当 ack 开启时,这个功能可以正常工作,但是当我使用上面的 noack_map 命令关闭 ack 时,它不起作用。并且速率始终为 6Mbps。
iw wlan1 station dump
显示以下输出:
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
任何帮助都将受到赞赏。
答案1
你真幸运!我正在尝试为视频创建一个低延迟通道。我尝试过的每种抑制 Acks 的方法(数据包注入、QoS、noack_map 0x01)都有效,但会使我的数据速率降至 1 Mbps。
您可以尝试对一个套接字而不是整个接口进行 NoAck(这是 C,我尝试通过 iptablesset-tos
选项来执行此操作,但没有弄清楚它是如何工作的):
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");
}
QoS Control
它会在802.11 标头字段中为您的套接字赋予优先级 6(VI 又名视频) 。然后使用以下命令:
iw dev wlan0 set noack_map 0x00C0
为该套接字启用 NoAck。这应该是正确的做法,但对我来说,尽管 和 ,这些 NoAcked 帧的数据速率仍然被硬性规定为 1 Mbps iw dev set bitrates
。iw dev set mcast_rate
也许你会更幸运。