diff options
author | Johannes Berg <johannes@sipsolutions.net> | 2009-08-07 10:42:15 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-08-14 09:13:44 -0400 |
commit | ad5351db89681515681c5d5659ddf4c69e3cc6f5 (patch) | |
tree | 3c77642d10862aa9eea9c9366090941c18b69ac3 /net | |
parent | ab5b5342fd0ba5b9a2f58a94c5d41dd074b7c48e (diff) |
mac80211: allow DMA optimisation
If we have a lot of frames to transmit at once, for
instance with fragmentation, it can be an optimisation
to only tell the DMA engine about them on the last
fragment/frame to avoid banging the IO too much. This
patch allows implementation such an optimisation by
telling the driver when more frames can be expected.
Currently, this is used by mac80211 only on fragmented
frames, but could also be used in the future on other
frames when the queue was full and there are multiple
frames pending.
Note that drivers need to be careful when using this
flag, they need to kick their DMA engines not just
when this flag is clear, but also when the queue gets
full so that progress can be made.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net')
-rw-r--r-- | net/mac80211/tx.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c index 7cffaa046b33..7f2e4cdb8904 100644 --- a/net/mac80211/tx.c +++ b/net/mac80211/tx.c | |||
@@ -1154,6 +1154,9 @@ static int __ieee80211_tx(struct ieee80211_local *local, | |||
1154 | next = skb->next; | 1154 | next = skb->next; |
1155 | len = skb->len; | 1155 | len = skb->len; |
1156 | 1156 | ||
1157 | if (next) | ||
1158 | info->flags |= IEEE80211_TX_CTL_MORE_FRAMES; | ||
1159 | |||
1157 | sdata = vif_to_sdata(info->control.vif); | 1160 | sdata = vif_to_sdata(info->control.vif); |
1158 | 1161 | ||
1159 | switch (sdata->vif.type) { | 1162 | switch (sdata->vif.type) { |