diff options
author | Johannes Berg <johannes@sipsolutions.net> | 2010-01-17 01:47:59 +0100 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-01-19 16:25:21 -0500 |
commit | c6fcf6bcfc3cfc1c00cc7fd9610cfa2b1a18041f (patch) | |
tree | 301713d3f65f3cc9cb99e374c655d6f8bf99c741 /include | |
parent | 813d76694043d00b59475baa1fbfaf54a2eb7fad (diff) | |
download | linux-3.10-c6fcf6bcfc3cfc1c00cc7fd9610cfa2b1a18041f.tar.gz linux-3.10-c6fcf6bcfc3cfc1c00cc7fd9610cfa2b1a18041f.tar.bz2 linux-3.10-c6fcf6bcfc3cfc1c00cc7fd9610cfa2b1a18041f.zip |
mac80211: re-enable re-transmission of filtered frames
In an earlier commit,
mac80211: disable software retry for now
Pavel Roskin reported a problem that seems to be due to
software retry of already transmitted frames. It turns
out that we've never done that correctly, but due to
some recent changes it now crashes in the TX code. I've
added a comment in the patch that explains the problem
better and also points to possible solutions -- which
I can't implement right now.
I disabled software retry of failed/filtered frames
because it was broken. With the work of the previous
patches, it now becomes fairly easy to re-enable it
by adding a flag indicating that the frame shouldn't
be modified, but still running it through the transmit
handlers to populate the control information.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/net/mac80211.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h index c90047de442..f03f97b627f 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h @@ -271,6 +271,9 @@ struct ieee80211_bss_conf { * transmit function after the current frame, this can be used * by drivers to kick the DMA queue only if unset or when the * queue gets full. + * @IEEE80211_TX_INTFL_RETRANSMISSION: This frame is being retransmitted + * after TX status because the destination was asleep, it must not + * be modified again (no seqno assignment, crypto, etc.) */ enum mac80211_tx_control_flags { IEEE80211_TX_CTL_REQ_TX_STATUS = BIT(0), @@ -291,6 +294,7 @@ enum mac80211_tx_control_flags { IEEE80211_TX_INTFL_DONT_ENCRYPT = BIT(16), IEEE80211_TX_CTL_PSPOLL_RESPONSE = BIT(17), IEEE80211_TX_CTL_MORE_FRAMES = BIT(18), + IEEE80211_TX_INTFL_RETRANSMISSION = BIT(19), }; /** |