diff options
Diffstat (limited to 'net/mac80211/status.c')
-rw-r--r-- | net/mac80211/status.c | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/net/mac80211/status.c b/net/mac80211/status.c index 60cb7a665976..ba29ebc86141 100644 --- a/net/mac80211/status.c +++ b/net/mac80211/status.c | |||
@@ -541,6 +541,23 @@ static void ieee80211_tx_latency_end_msrmnt(struct ieee80211_local *local, | |||
541 | */ | 541 | */ |
542 | #define STA_LOST_PKT_THRESHOLD 50 | 542 | #define STA_LOST_PKT_THRESHOLD 50 |
543 | 543 | ||
544 | static void ieee80211_lost_packet(struct sta_info *sta, struct sk_buff *skb) | ||
545 | { | ||
546 | struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); | ||
547 | |||
548 | /* This packet was aggregated but doesn't carry status info */ | ||
549 | if ((info->flags & IEEE80211_TX_CTL_AMPDU) && | ||
550 | !(info->flags & IEEE80211_TX_STAT_AMPDU)) | ||
551 | return; | ||
552 | |||
553 | if (++sta->lost_packets < STA_LOST_PKT_THRESHOLD) | ||
554 | return; | ||
555 | |||
556 | cfg80211_cqm_pktloss_notify(sta->sdata->dev, sta->sta.addr, | ||
557 | sta->lost_packets, GFP_ATOMIC); | ||
558 | sta->lost_packets = 0; | ||
559 | } | ||
560 | |||
544 | void ieee80211_tx_status(struct ieee80211_hw *hw, struct sk_buff *skb) | 561 | void ieee80211_tx_status(struct ieee80211_hw *hw, struct sk_buff *skb) |
545 | { | 562 | { |
546 | struct sk_buff *skb2; | 563 | struct sk_buff *skb2; |
@@ -680,12 +697,8 @@ void ieee80211_tx_status(struct ieee80211_hw *hw, struct sk_buff *skb) | |||
680 | if (info->flags & IEEE80211_TX_STAT_ACK) { | 697 | if (info->flags & IEEE80211_TX_STAT_ACK) { |
681 | if (sta->lost_packets) | 698 | if (sta->lost_packets) |
682 | sta->lost_packets = 0; | 699 | sta->lost_packets = 0; |
683 | } else if (++sta->lost_packets >= STA_LOST_PKT_THRESHOLD) { | 700 | } else { |
684 | cfg80211_cqm_pktloss_notify(sta->sdata->dev, | 701 | ieee80211_lost_packet(sta, skb); |
685 | sta->sta.addr, | ||
686 | sta->lost_packets, | ||
687 | GFP_ATOMIC); | ||
688 | sta->lost_packets = 0; | ||
689 | } | 702 | } |
690 | } | 703 | } |
691 | 704 | ||