diff options
author | Johannes Berg <johannes.berg@intel.com> | 2015-05-19 15:40:21 +0200 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2015-05-19 15:46:21 +0200 |
commit | 22d3a3c829fa9ecdb493d1f1f2838d543f8d86a3 (patch) | |
tree | d8961aabf48478add145e56acc0683fec328f9b1 /net/mac80211/ieee80211_i.h | |
parent | 47b4e1fc4972cc43a19121bc2608a60aef3bf216 (diff) | |
download | linux-22d3a3c829fa9ecdb493d1f1f2838d543f8d86a3.tar.gz linux-22d3a3c829fa9ecdb493d1f1f2838d543f8d86a3.tar.bz2 linux-22d3a3c829fa9ecdb493d1f1f2838d543f8d86a3.zip |
mac80211: don't use napi_gro_receive() outside NAPI context
No matter how the driver manages its NAPI context, there's no way
sending frames to it from a timer can be correct, since it would
corrupt the internal GRO lists.
To avoid that, always use the non-NAPI path when releasing frames
from the timer.
Cc: stable@vger.kernel.org
Reported-by: Jean Trivelly <jean.trivelly@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211/ieee80211_i.h')
-rw-r--r-- | net/mac80211/ieee80211_i.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h index ab46ab4a7249..cdc374296245 100644 --- a/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h @@ -205,6 +205,8 @@ enum ieee80211_packet_rx_flags { * @IEEE80211_RX_CMNTR: received on cooked monitor already * @IEEE80211_RX_BEACON_REPORTED: This frame was already reported * to cfg80211_report_obss_beacon(). + * @IEEE80211_RX_REORDER_TIMER: this frame is released by the + * reorder buffer timeout timer, not the normal RX path * * These flags are used across handling multiple interfaces * for a single frame. @@ -212,6 +214,7 @@ enum ieee80211_packet_rx_flags { enum ieee80211_rx_flags { IEEE80211_RX_CMNTR = BIT(0), IEEE80211_RX_BEACON_REPORTED = BIT(1), + IEEE80211_RX_REORDER_TIMER = BIT(2), }; struct ieee80211_rx_data { |