diff mbox

mac80211_hwsim: Fix RX status reporting for HT

Message ID 20110806200700.GA13221@jm.kir.nu (mailing list archive)
State Not Applicable, archived
Headers show

Commit Message

Jouni Malinen Aug. 6, 2011, 8:07 p.m. UTC
RX_FLAG_HT must be included when reporting MCS rates. Without
this, mac80211 ended up dropping any frame sent at MCS index 12
or higher and that resulted in oddly random looking errors in
mac80211_hwsim tests.

Signed-off-by: Jouni Malinen <j@w1.fi>
---
 drivers/net/wireless/mac80211_hwsim.c |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

Comments

Johannes Berg Aug. 8, 2011, 8:33 a.m. UTC | #1
On Sat, 2011-08-06 at 23:07 +0300, Jouni Malinen wrote:
> RX_FLAG_HT must be included when reporting MCS rates. Without
> this, mac80211 ended up dropping any frame sent at MCS index 12
> or higher and that resulted in oddly random looking errors in
> mac80211_hwsim tests.

This "solved" the timing thing you ran into with the unrelated
suspend/resume patch then I guess?

johannes

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Jouni Malinen Aug. 8, 2011, 9 a.m. UTC | #2
On Mon, Aug 08, 2011 at 10:33:08AM +0200, Johannes Berg wrote:
> On Sat, 2011-08-06 at 23:07 +0300, Jouni Malinen wrote:
> > RX_FLAG_HT must be included when reporting MCS rates. Without
> > this, mac80211 ended up dropping any frame sent at MCS index 12
> > or higher and that resulted in oddly random looking errors in
> > mac80211_hwsim tests.
> 
> This "solved" the timing thing you ran into with the unrelated
> suspend/resume patch then I guess?

Yes, it did. This was indeed the reason for semi-random dropping of
EAPOL frames and the randomness part made it difficult to figure out
what on earth was happening.
diff mbox

Patch

diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c
index 031cd89..34b79fc 100644
--- a/drivers/net/wireless/mac80211_hwsim.c
+++ b/drivers/net/wireless/mac80211_hwsim.c
@@ -612,6 +612,12 @@  static bool mac80211_hwsim_tx_frame_no_nl(struct ieee80211_hw *hw,
 	rx_status.freq = data->channel->center_freq;
 	rx_status.band = data->channel->band;
 	rx_status.rate_idx = info->control.rates[0].idx;
+	if (info->control.rates[0].flags & IEEE80211_TX_RC_MCS)
+		rx_status.flag |= RX_FLAG_HT;
+	if (info->control.rates[0].flags & IEEE80211_TX_RC_40_MHZ_WIDTH)
+		rx_status.flag |= RX_FLAG_40MHZ;
+	if (info->control.rates[0].flags & IEEE80211_TX_RC_SHORT_GI)
+		rx_status.flag |= RX_FLAG_SHORT_GI;
 	/* TODO: simulate real signal strength (and optional packet loss) */
 	rx_status.signal = data->power_level - 50;