diff options
author | Johannes Berg <johannes@sipsolutions.net> | 2009-08-10 10:01:54 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-08-14 09:13:57 -0400 |
commit | feff1f2fea3fc7ee055e46d0fbdb2d25ad2b14c4 (patch) | |
tree | 58cfb7fc4e89db0a75fbcd7d61cac0267c0a9856 /net/mac80211/tx.c | |
parent | 5e68ff6563ef79d87296c70f8eb2bee454d3fe75 (diff) |
mac80211: take statistics before encryption
When encryption is used, the number of bytes
sent to the peer increases by the IV and ICV.
This is accounted if software encryption is
used, but not if the devices does hardware
encryption. To make the numbers comparable,
never account for that overhead.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/tx.c')
-rw-r--r-- | net/mac80211/tx.c | 36 |
1 files changed, 18 insertions, 18 deletions
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c index 7f2e4cdb8904..588c18a60de4 100644 --- a/net/mac80211/tx.c +++ b/net/mac80211/tx.c | |||
@@ -844,6 +844,23 @@ ieee80211_tx_h_fragment(struct ieee80211_tx_data *tx) | |||
844 | } | 844 | } |
845 | 845 | ||
846 | static ieee80211_tx_result debug_noinline | 846 | static ieee80211_tx_result debug_noinline |
847 | ieee80211_tx_h_stats(struct ieee80211_tx_data *tx) | ||
848 | { | ||
849 | struct sk_buff *skb = tx->skb; | ||
850 | |||
851 | if (!tx->sta) | ||
852 | return TX_CONTINUE; | ||
853 | |||
854 | tx->sta->tx_packets++; | ||
855 | do { | ||
856 | tx->sta->tx_fragments++; | ||
857 | tx->sta->tx_bytes += skb->len; | ||
858 | } while ((skb = skb->next)); | ||
859 | |||
860 | return TX_CONTINUE; | ||
861 | } | ||
862 | |||
863 | static ieee80211_tx_result debug_noinline | ||
847 | ieee80211_tx_h_encrypt(struct ieee80211_tx_data *tx) | 864 | ieee80211_tx_h_encrypt(struct ieee80211_tx_data *tx) |
848 | { | 865 | { |
849 | if (!tx->key) | 866 | if (!tx->key) |
@@ -887,23 +904,6 @@ ieee80211_tx_h_calculate_duration(struct ieee80211_tx_data *tx) | |||
887 | return TX_CONTINUE; | 904 | return TX_CONTINUE; |
888 | } | 905 | } |
889 | 906 | ||
890 | static ieee80211_tx_result debug_noinline | ||
891 | ieee80211_tx_h_stats(struct ieee80211_tx_data *tx) | ||
892 | { | ||
893 | struct sk_buff *skb = tx->skb; | ||
894 | |||
895 | if (!tx->sta) | ||
896 | return TX_CONTINUE; | ||
897 | |||
898 | tx->sta->tx_packets++; | ||
899 | do { | ||
900 | tx->sta->tx_fragments++; | ||
901 | tx->sta->tx_bytes += skb->len; | ||
902 | } while ((skb = skb->next)); | ||
903 | |||
904 | return TX_CONTINUE; | ||
905 | } | ||
906 | |||
907 | /* actual transmit path */ | 907 | /* actual transmit path */ |
908 | 908 | ||
909 | /* | 909 | /* |
@@ -1213,9 +1213,9 @@ static int invoke_tx_handlers(struct ieee80211_tx_data *tx) | |||
1213 | CALL_TXH(ieee80211_tx_h_sequence) | 1213 | CALL_TXH(ieee80211_tx_h_sequence) |
1214 | CALL_TXH(ieee80211_tx_h_fragment) | 1214 | CALL_TXH(ieee80211_tx_h_fragment) |
1215 | /* handlers after fragment must be aware of tx info fragmentation! */ | 1215 | /* handlers after fragment must be aware of tx info fragmentation! */ |
1216 | CALL_TXH(ieee80211_tx_h_stats) | ||
1216 | CALL_TXH(ieee80211_tx_h_encrypt) | 1217 | CALL_TXH(ieee80211_tx_h_encrypt) |
1217 | CALL_TXH(ieee80211_tx_h_calculate_duration) | 1218 | CALL_TXH(ieee80211_tx_h_calculate_duration) |
1218 | CALL_TXH(ieee80211_tx_h_stats) | ||
1219 | #undef CALL_TXH | 1219 | #undef CALL_TXH |
1220 | 1220 | ||
1221 | txh_done: | 1221 | txh_done: |