aboutsummaryrefslogtreecommitdiffstats
path: root/include/net/mac80211.h
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2011-11-16 10:02:47 -0500
committerJohn W. Linville <linville@tuxdriver.com>2011-11-21 16:20:43 -0500
commit11127e9121d4dd9da868cf0fd89dcac35f7f0fa3 (patch)
tree8cb16ecbd5942679c18934064b935a7e256a77da /include/net/mac80211.h
parent74e4dbfd57a38c4ec4131cebdbfa3d621d38dd6a (diff)
mac80211: transmit fragment list to drivers
Drivers can usually handle fragmented packets much easier when they get the entire list of fragments at once. The only thing they need to do is keep enough space on the queues for up to ten fragments of a single MSDU. This allows them to implement this with a new operation tx_frags. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'include/net/mac80211.h')
-rw-r--r--include/net/mac80211.h22
1 files changed, 17 insertions, 5 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index 0756049ae76d..5b5c8a7e26d7 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -1760,11 +1760,21 @@ enum ieee80211_frame_release_type {
1760 * skb contains the buffer starting from the IEEE 802.11 header. 1760 * skb contains the buffer starting from the IEEE 802.11 header.
1761 * The low-level driver should send the frame out based on 1761 * The low-level driver should send the frame out based on
1762 * configuration in the TX control data. This handler should, 1762 * configuration in the TX control data. This handler should,
1763 * preferably, never fail and stop queues appropriately, more 1763 * preferably, never fail and stop queues appropriately.
1764 * importantly, however, it must never fail for A-MPDU-queues. 1764 * This must be implemented if @tx_frags is not.
1765 * This function should return NETDEV_TX_OK except in very 1765 * Must be atomic.
1766 * limited cases. 1766 *
1767 * Must be implemented and atomic. 1767 * @tx_frags: Called to transmit multiple fragments of a single MSDU.
1768 * This handler must consume all fragments, sending out some of
1769 * them only is useless and it can't ask for some of them to be
1770 * queued again. If the frame is not fragmented the queue has a
1771 * single SKB only. To avoid issues with the networking stack
1772 * when TX status is reported the frames should be removed from
1773 * the skb queue.
1774 * If this is used, the tx_info @vif and @sta pointers will be
1775 * invalid -- you must not use them in that case.
1776 * This must be implemented if @tx isn't.
1777 * Must be atomic.
1768 * 1778 *
1769 * @start: Called before the first netdevice attached to the hardware 1779 * @start: Called before the first netdevice attached to the hardware
1770 * is enabled. This should turn on the hardware and must turn on 1780 * is enabled. This should turn on the hardware and must turn on
@@ -2101,6 +2111,8 @@ enum ieee80211_frame_release_type {
2101 */ 2111 */
2102struct ieee80211_ops { 2112struct ieee80211_ops {
2103 void (*tx)(struct ieee80211_hw *hw, struct sk_buff *skb); 2113 void (*tx)(struct ieee80211_hw *hw, struct sk_buff *skb);
2114 void (*tx_frags)(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
2115 struct ieee80211_sta *sta, struct sk_buff_head *skbs);
2104 int (*start)(struct ieee80211_hw *hw); 2116 int (*start)(struct ieee80211_hw *hw);
2105 void (*stop)(struct ieee80211_hw *hw); 2117 void (*stop)(struct ieee80211_hw *hw);
2106#ifdef CONFIG_PM 2118#ifdef CONFIG_PM