diff options
author | Ivo van Doorn <ivdoorn@gmail.com> | 2009-04-26 10:08:30 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-05-06 15:14:49 -0400 |
commit | 9eb4e21e289beba9cfe34f24920eee83c144e62f (patch) | |
tree | ab2da2b66f308e94159742b52a126787a8e2d1a5 /drivers/net/wireless/rt2x00/rt2x00queue.c | |
parent | bbb33881ae5bfe4197a005dc03b29b7dcc07fa28 (diff) |
rt2x00: Move iv_len into tx descriptor data
By placing the iv_len into the tx descriptor data and
by passing this data to the crypto IV handlers we can
save multiple calls to ieee80211_get_hdrlen_from_skb()
and some if-statements when copying/removing the IV data
from the outgoing frame.
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/rt2x00/rt2x00queue.c')
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00queue.c | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2x00queue.c b/drivers/net/wireless/rt2x00/rt2x00queue.c index a5664bd8493e..6f78915b364c 100644 --- a/drivers/net/wireless/rt2x00/rt2x00queue.c +++ b/drivers/net/wireless/rt2x00/rt2x00queue.c | |||
@@ -368,7 +368,6 @@ int rt2x00queue_write_tx_frame(struct data_queue *queue, struct sk_buff *skb) | |||
368 | struct queue_entry *entry = rt2x00queue_get_entry(queue, Q_INDEX); | 368 | struct queue_entry *entry = rt2x00queue_get_entry(queue, Q_INDEX); |
369 | struct txentry_desc txdesc; | 369 | struct txentry_desc txdesc; |
370 | struct skb_frame_desc *skbdesc; | 370 | struct skb_frame_desc *skbdesc; |
371 | unsigned int iv_len = 0; | ||
372 | u8 rate_idx, rate_flags; | 371 | u8 rate_idx, rate_flags; |
373 | 372 | ||
374 | if (unlikely(rt2x00queue_full(queue))) | 373 | if (unlikely(rt2x00queue_full(queue))) |
@@ -390,9 +389,6 @@ int rt2x00queue_write_tx_frame(struct data_queue *queue, struct sk_buff *skb) | |||
390 | entry->skb = skb; | 389 | entry->skb = skb; |
391 | rt2x00queue_create_tx_descriptor(entry, &txdesc); | 390 | rt2x00queue_create_tx_descriptor(entry, &txdesc); |
392 | 391 | ||
393 | if (IEEE80211_SKB_CB(skb)->control.hw_key != NULL) | ||
394 | iv_len = IEEE80211_SKB_CB(skb)->control.hw_key->iv_len; | ||
395 | |||
396 | /* | 392 | /* |
397 | * All information is retrieved from the skb->cb array, | 393 | * All information is retrieved from the skb->cb array, |
398 | * now we should claim ownership of the driver part of that | 394 | * now we should claim ownership of the driver part of that |
@@ -415,9 +411,9 @@ int rt2x00queue_write_tx_frame(struct data_queue *queue, struct sk_buff *skb) | |||
415 | if (test_bit(ENTRY_TXD_ENCRYPT, &txdesc.flags) && | 411 | if (test_bit(ENTRY_TXD_ENCRYPT, &txdesc.flags) && |
416 | !test_bit(ENTRY_TXD_ENCRYPT_IV, &txdesc.flags)) { | 412 | !test_bit(ENTRY_TXD_ENCRYPT_IV, &txdesc.flags)) { |
417 | if (test_bit(DRIVER_REQUIRE_COPY_IV, &queue->rt2x00dev->flags)) | 413 | if (test_bit(DRIVER_REQUIRE_COPY_IV, &queue->rt2x00dev->flags)) |
418 | rt2x00crypto_tx_copy_iv(skb, iv_len); | 414 | rt2x00crypto_tx_copy_iv(skb, &txdesc); |
419 | else | 415 | else |
420 | rt2x00crypto_tx_remove_iv(skb, iv_len); | 416 | rt2x00crypto_tx_remove_iv(skb, &txdesc); |
421 | } | 417 | } |
422 | 418 | ||
423 | /* | 419 | /* |