diff options
author | Ivo van Doorn <ivdoorn@gmail.com> | 2008-05-13 09:03:02 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2008-05-14 16:29:49 -0400 |
commit | b0a6717994a4e00ee19372e1bdaab53572ae025c (patch) | |
tree | bb6934e572c540f55ac50c7b62cef4eac8ad6456 | |
parent | 7a1d65235da829e6dc8938b82c991e40e278fc50 (diff) |
mac80211: Set IEEE80211_TXPD_REQ_TX_STATUS for all TX frames
All interfaces should set the IEEE80211_TXPD_REQ_TX_STATUS flag for all TX frames
which will force the master interface to set the IEEE80211_TX_CTL_REQ_TX_STATUS
flag. This in turn will allow drivers to check for that flag before reporting
the TX status to mac80211.
This is very usefull when frames (like beacons, RTS and CTS-to-self) should not
be reported back to mac80211. Later we could add more extensive checks to
exclude more frames from being reported, or let mac80211 decide if it wants
the frame for status reporting or not.
v2: Monitor interfaces should also set IEEE80211_TXPD_REQ_TX_STATUS
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
Acked-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | net/mac80211/tx.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c index 5f31a6233e13..4c25fd5d76a7 100644 --- a/net/mac80211/tx.c +++ b/net/mac80211/tx.c | |||
@@ -1337,6 +1337,8 @@ int ieee80211_monitor_start_xmit(struct sk_buff *skb, | |||
1337 | pkt_data->ifindex = dev->ifindex; | 1337 | pkt_data->ifindex = dev->ifindex; |
1338 | 1338 | ||
1339 | pkt_data->flags |= IEEE80211_TXPD_DO_NOT_ENCRYPT; | 1339 | pkt_data->flags |= IEEE80211_TXPD_DO_NOT_ENCRYPT; |
1340 | /* Interfaces should always request a status report */ | ||
1341 | pkt_data->flags |= IEEE80211_TXPD_REQ_TX_STATUS; | ||
1340 | 1342 | ||
1341 | /* | 1343 | /* |
1342 | * fix up the pointers accounting for the radiotap | 1344 | * fix up the pointers accounting for the radiotap |
@@ -1618,6 +1620,9 @@ int ieee80211_subif_start_xmit(struct sk_buff *skb, | |||
1618 | if (ethertype == ETH_P_PAE) | 1620 | if (ethertype == ETH_P_PAE) |
1619 | pkt_data->flags |= IEEE80211_TXPD_EAPOL_FRAME; | 1621 | pkt_data->flags |= IEEE80211_TXPD_EAPOL_FRAME; |
1620 | 1622 | ||
1623 | /* Interfaces should always request a status report */ | ||
1624 | pkt_data->flags |= IEEE80211_TXPD_REQ_TX_STATUS; | ||
1625 | |||
1621 | skb->dev = local->mdev; | 1626 | skb->dev = local->mdev; |
1622 | dev->stats.tx_packets++; | 1627 | dev->stats.tx_packets++; |
1623 | dev->stats.tx_bytes += skb->len; | 1628 | dev->stats.tx_bytes += skb->len; |