diff options
author | Michael Buesch <mbuesch@freenet.de> | 2005-10-21 13:39:52 -0400 |
---|---|---|
committer | James Ketrenos <jketreno@linux.intel.com> | 2005-10-21 14:00:28 -0400 |
commit | d3f7bf4fa9626d371f26cd310477202628a8126a (patch) | |
tree | 7b12b1ed327ff6f8e9820979e302e23e6a157223 /net/ieee80211/ieee80211_tx.c | |
parent | f0f15ab5542f73d07e35eeee713df289599427b2 (diff) |
ieee80211 subsystem:
* Use GFP mask on TX skb allocation.
* Use the tx_headroom and reserve requested space.
Signed-off-by: Michael Buesch <mbuesch@freenet.de>
Signed-off-by: James Ketrenos <jketreno@linux.intel.com>
Diffstat (limited to 'net/ieee80211/ieee80211_tx.c')
-rw-r--r-- | net/ieee80211/ieee80211_tx.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/net/ieee80211/ieee80211_tx.c b/net/ieee80211/ieee80211_tx.c index f4f2a33973a7..fb4509032402 100644 --- a/net/ieee80211/ieee80211_tx.c +++ b/net/ieee80211/ieee80211_tx.c | |||
@@ -190,7 +190,7 @@ void ieee80211_txb_free(struct ieee80211_txb *txb) | |||
190 | } | 190 | } |
191 | 191 | ||
192 | static struct ieee80211_txb *ieee80211_alloc_txb(int nr_frags, int txb_size, | 192 | static struct ieee80211_txb *ieee80211_alloc_txb(int nr_frags, int txb_size, |
193 | gfp_t gfp_mask) | 193 | int headroom, gfp_t gfp_mask) |
194 | { | 194 | { |
195 | struct ieee80211_txb *txb; | 195 | struct ieee80211_txb *txb; |
196 | int i; | 196 | int i; |
@@ -204,11 +204,13 @@ static struct ieee80211_txb *ieee80211_alloc_txb(int nr_frags, int txb_size, | |||
204 | txb->frag_size = txb_size; | 204 | txb->frag_size = txb_size; |
205 | 205 | ||
206 | for (i = 0; i < nr_frags; i++) { | 206 | for (i = 0; i < nr_frags; i++) { |
207 | txb->fragments[i] = dev_alloc_skb(txb_size); | 207 | txb->fragments[i] = __dev_alloc_skb(txb_size + headroom, |
208 | gfp_mask); | ||
208 | if (unlikely(!txb->fragments[i])) { | 209 | if (unlikely(!txb->fragments[i])) { |
209 | i--; | 210 | i--; |
210 | break; | 211 | break; |
211 | } | 212 | } |
213 | skb_reserve(txb->fragments[i], headroom); | ||
212 | } | 214 | } |
213 | if (unlikely(i != nr_frags)) { | 215 | if (unlikely(i != nr_frags)) { |
214 | while (i >= 0) | 216 | while (i >= 0) |
@@ -384,7 +386,8 @@ int ieee80211_xmit(struct sk_buff *skb, struct net_device *dev) | |||
384 | /* When we allocate the TXB we allocate enough space for the reserve | 386 | /* When we allocate the TXB we allocate enough space for the reserve |
385 | * and full fragment bytes (bytes_per_frag doesn't include prefix, | 387 | * and full fragment bytes (bytes_per_frag doesn't include prefix, |
386 | * postfix, header, FCS, etc.) */ | 388 | * postfix, header, FCS, etc.) */ |
387 | txb = ieee80211_alloc_txb(nr_frags, frag_size, GFP_ATOMIC); | 389 | txb = ieee80211_alloc_txb(nr_frags, frag_size, |
390 | ieee->tx_headroom, GFP_ATOMIC); | ||
388 | if (unlikely(!txb)) { | 391 | if (unlikely(!txb)) { |
389 | printk(KERN_WARNING "%s: Could not allocate TXB\n", | 392 | printk(KERN_WARNING "%s: Could not allocate TXB\n", |
390 | ieee->dev->name); | 393 | ieee->dev->name); |