Commit 7e1cdcbb authored by Felix Fietkau's avatar Felix Fietkau Committed by Johannes Berg

mac0211: add a helper function for fixing up tx status rates

Signed-off-by: default avatarFelix Fietkau <nbd@openwrt.org>
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent ad9dda63
...@@ -621,24 +621,13 @@ static void ieee80211_lost_packet(struct sta_info *sta, ...@@ -621,24 +621,13 @@ static void ieee80211_lost_packet(struct sta_info *sta,
sta->lost_packets = 0; sta->lost_packets = 0;
} }
void ieee80211_tx_status(struct ieee80211_hw *hw, struct sk_buff *skb) static int ieee80211_tx_get_rates(struct ieee80211_hw *hw,
struct ieee80211_tx_info *info,
int *retry_count)
{ {
struct sk_buff *skb2;
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data;
struct ieee80211_local *local = hw_to_local(hw);
struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
__le16 fc;
struct ieee80211_supported_band *sband;
struct ieee80211_sub_if_data *sdata;
struct net_device *prev_dev = NULL;
struct sta_info *sta, *tmp;
int retry_count = -1, i;
int rates_idx = -1; int rates_idx = -1;
bool send_to_cooked; int count = -1;
bool acked; int i;
struct ieee80211_bar *bar;
int rtap_len;
int shift = 0;
for (i = 0; i < IEEE80211_TX_MAX_RATES; i++) { for (i = 0; i < IEEE80211_TX_MAX_RATES; i++) {
if ((info->flags & IEEE80211_TX_CTL_AMPDU) && if ((info->flags & IEEE80211_TX_CTL_AMPDU) &&
...@@ -656,12 +645,37 @@ void ieee80211_tx_status(struct ieee80211_hw *hw, struct sk_buff *skb) ...@@ -656,12 +645,37 @@ void ieee80211_tx_status(struct ieee80211_hw *hw, struct sk_buff *skb)
break; break;
} }
retry_count += info->status.rates[i].count; count += info->status.rates[i].count;
} }
rates_idx = i - 1; rates_idx = i - 1;
if (retry_count < 0) if (count < 0)
retry_count = 0; count = 0;
*retry_count = count;
return rates_idx;
}
void ieee80211_tx_status(struct ieee80211_hw *hw, struct sk_buff *skb)
{
struct sk_buff *skb2;
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data;
struct ieee80211_local *local = hw_to_local(hw);
struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
__le16 fc;
struct ieee80211_supported_band *sband;
struct ieee80211_sub_if_data *sdata;
struct net_device *prev_dev = NULL;
struct sta_info *sta, *tmp;
int retry_count;
int rates_idx;
bool send_to_cooked;
bool acked;
struct ieee80211_bar *bar;
int rtap_len;
int shift = 0;
rates_idx = ieee80211_tx_get_rates(hw, info, &retry_count);
rcu_read_lock(); rcu_read_lock();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment