Re: [PATCH] mac80211: minstrel_ht should not override user supplied rts setting
From: Daniel Halperin <hidden>
Date: 2012-01-28 20:26:50
On Sat, Jan 28, 2012 at 12:09 PM, Marek Lindner [off-list ref] wrote:
On Sunday, January 29, 2012 04:03:41 you wrote:quoted
On Sat, Jan 28, 2012 at 11:58 AM, Marek Lindner [off-list ref]wrote:quoted
quoted
On Sunday, January 29, 2012 03:17:32 Daniel Halperin wrote:quoted
Adaptive RTS/CTS is important to control for interference---RTS/CTS is there so that other Wi-Fi devices know not to interfere with your flow. It may well be the case that this is not a major problem in whatever your scenario you're working, Marek, but it makes a big difference in a many bad corner cases.I am very well aware of what RTS/CTS is for and I am not against using it. However, having the rate algorithm overriding the user setting for a specific rate is extremely hard to grasp or debug. To give you an understanding where I am coming from: In our networks we experienced extremely variable throughput ranging from 30Mbit/s (single stream) to 0.2 Mbit/s in the next second. As you can imagine we were trying to figure out what was going on. After spending some time and losing hair I noticed that the RTS/CTS implementation of our driver (ath9k) is buggy. Every once in a while the nodes would "battle" each other with RTS/CTS packets. Strange enough for us, sometimes no RTS packets were sent and sometimes they would battle. All attempts to disable RTS/CTS for the mere sake of testing(!) was impossible. First I thought ath9k did not properly implement the "iw rts" setting but that wasn't the case. After losing more hair I realized that minstrel_ht, a rate control algorithm(!), was overriding my rts settings but not always(!). The only way to make RTS shut up was to apply the posted patch.Can you explain what the low-level behavior of an RTS/CTS "battle" is? Abstractly, the behavior you're describing sounds like a buggy driver that doesn't obey overheard RTS or CTS packets.I certainly can explain it but this is for another thread and unrelated to the points raised before.
Frankly, the correctness of your argument depend on whether there's a bug or not. If the difference is -2% normally and +300% in bad interference conditions, you're going to lose this debate. If the difference is legitimately -99% normally, you might win. Your description reminds me of this: http://www.spinics.net/lists/linux-wireless/msg83803.html. Maybe there really is a bug in ath9k. Dan