aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/net/ieee80211.h2
-rw-r--r--net/ieee80211/ieee80211_rx.c5
2 files changed, 7 insertions, 0 deletions
diff --git a/include/net/ieee80211.h b/include/net/ieee80211.h
index cb255432e4e4..e6af381e206d 100644
--- a/include/net/ieee80211.h
+++ b/include/net/ieee80211.h
@@ -1080,6 +1080,8 @@ struct ieee80211_device {
1080 int perfect_rssi; 1080 int perfect_rssi;
1081 int worst_rssi; 1081 int worst_rssi;
1082 1082
1083 u16 prev_seq_ctl; /* used to drop duplicate frames */
1084
1083 /* Callback functions */ 1085 /* Callback functions */
1084 void (*set_security) (struct net_device * dev, 1086 void (*set_security) (struct net_device * dev,
1085 struct ieee80211_security * sec); 1087 struct ieee80211_security * sec);
diff --git a/net/ieee80211/ieee80211_rx.c b/net/ieee80211/ieee80211_rx.c
index d9265195656d..ce28d571afac 100644
--- a/net/ieee80211/ieee80211_rx.c
+++ b/net/ieee80211/ieee80211_rx.c
@@ -478,6 +478,11 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb,
478 goto rx_exit; 478 goto rx_exit;
479 } 479 }
480#endif 480#endif
481 /* drop duplicate 802.11 retransmissions (IEEE 802.11 Chap. 9.29) */
482 if (sc == ieee->prev_seq_ctl)
483 goto rx_dropped;
484 else
485 ieee->prev_seq_ctl = sc;
481 486
482 /* Data frame - extract src/dst addresses */ 487 /* Data frame - extract src/dst addresses */
483 if (skb->len < IEEE80211_3ADDR_LEN) 488 if (skb->len < IEEE80211_3ADDR_LEN)