forked from Minki/linux
rt2x00: Register frame length in TX entry descriptor instead of L2PAD.
And use it consistently in the chipset drivers. Preparation for further clean ups. Signed-off-by: Gertjan van Wingerde <gwingerde@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
a21ee72403
commit
df624ca541
@ -1017,8 +1017,8 @@ static void rt2400pci_write_tx_desc(struct rt2x00_dev *rt2x00dev,
|
||||
rt2x00_desc_write(entry_priv->desc, 1, word);
|
||||
|
||||
rt2x00_desc_read(txd, 2, &word);
|
||||
rt2x00_set_field32(&word, TXD_W2_BUFFER_LENGTH, skb->len);
|
||||
rt2x00_set_field32(&word, TXD_W2_DATABYTE_COUNT, skb->len);
|
||||
rt2x00_set_field32(&word, TXD_W2_BUFFER_LENGTH, txdesc->length);
|
||||
rt2x00_set_field32(&word, TXD_W2_DATABYTE_COUNT, txdesc->length);
|
||||
rt2x00_desc_write(txd, 2, word);
|
||||
|
||||
rt2x00_desc_read(txd, 3, &word);
|
||||
|
@ -1208,7 +1208,7 @@ static void rt2500pci_write_tx_desc(struct rt2x00_dev *rt2x00dev,
|
||||
rt2x00_set_field32(&word, TXD_W0_IFS, txdesc->ifs);
|
||||
rt2x00_set_field32(&word, TXD_W0_RETRY_MODE,
|
||||
test_bit(ENTRY_TXD_RETRY_MODE, &txdesc->flags));
|
||||
rt2x00_set_field32(&word, TXD_W0_DATABYTE_COUNT, skb->len);
|
||||
rt2x00_set_field32(&word, TXD_W0_DATABYTE_COUNT, txdesc->length);
|
||||
rt2x00_set_field32(&word, TXD_W0_CIPHER_ALG, CIPHER_NONE);
|
||||
rt2x00_desc_write(txd, 0, word);
|
||||
}
|
||||
|
@ -1071,7 +1071,7 @@ static void rt2500usb_write_tx_desc(struct rt2x00_dev *rt2x00dev,
|
||||
rt2x00_set_field32(&word, TXD_W0_NEW_SEQ,
|
||||
test_bit(ENTRY_TXD_FIRST_FRAGMENT, &txdesc->flags));
|
||||
rt2x00_set_field32(&word, TXD_W0_IFS, txdesc->ifs);
|
||||
rt2x00_set_field32(&word, TXD_W0_DATABYTE_COUNT, skb->len);
|
||||
rt2x00_set_field32(&word, TXD_W0_DATABYTE_COUNT, txdesc->length);
|
||||
rt2x00_set_field32(&word, TXD_W0_CIPHER, !!txdesc->cipher);
|
||||
rt2x00_set_field32(&word, TXD_W0_KEY_ID, txdesc->key_idx);
|
||||
rt2x00_desc_write(txd, 0, word);
|
||||
|
@ -663,7 +663,7 @@ static int rt2800pci_write_tx_data(struct queue_entry* entry,
|
||||
test_bit(ENTRY_TXD_ENCRYPT, &txdesc->flags) ?
|
||||
txdesc->key_idx : 0xff);
|
||||
rt2x00_set_field32(&word, TXWI_W1_MPDU_TOTAL_BYTE_COUNT,
|
||||
skb->len - txdesc->l2pad);
|
||||
txdesc->length);
|
||||
rt2x00_set_field32(&word, TXWI_W1_PACKETID,
|
||||
skbdesc->entry->queue->qid + 1);
|
||||
rt2x00_desc_write(txwi, 1, word);
|
||||
|
@ -437,7 +437,7 @@ static void rt2800usb_write_tx_desc(struct rt2x00_dev *rt2x00dev,
|
||||
test_bit(ENTRY_TXD_ENCRYPT, &txdesc->flags) ?
|
||||
txdesc->key_idx : 0xff);
|
||||
rt2x00_set_field32(&word, TXWI_W1_MPDU_TOTAL_BYTE_COUNT,
|
||||
skb->len - txdesc->l2pad);
|
||||
txdesc->length);
|
||||
rt2x00_set_field32(&word, TXWI_W1_PACKETID,
|
||||
skbdesc->entry->queue->qid + 1);
|
||||
rt2x00_desc_write(txwi, 1, word);
|
||||
|
@ -333,12 +333,10 @@ static void rt2x00queue_create_tx_descriptor(struct queue_entry *entry,
|
||||
txdesc->aifs = entry->queue->aifs;
|
||||
|
||||
/*
|
||||
* Header and alignment information.
|
||||
* Header and frame information.
|
||||
*/
|
||||
txdesc->length = entry->skb->len;
|
||||
txdesc->header_length = ieee80211_get_hdrlen_from_skb(entry->skb);
|
||||
if (test_bit(DRIVER_REQUIRE_L2PAD, &rt2x00dev->flags) &&
|
||||
(entry->skb->len > txdesc->header_length))
|
||||
txdesc->l2pad = L2PAD_SIZE(txdesc->header_length);
|
||||
|
||||
/*
|
||||
* Check whether this frame is to be acked.
|
||||
|
@ -285,8 +285,8 @@ enum txentry_desc_flags {
|
||||
*
|
||||
* @flags: Descriptor flags (See &enum queue_entry_flags).
|
||||
* @queue: Queue identification (See &enum data_queue_qid).
|
||||
* @length: Length of the entire frame.
|
||||
* @header_length: Length of 802.11 header.
|
||||
* @l2pad: Amount of padding to align 802.11 payload to 4-byte boundrary.
|
||||
* @length_high: PLCP length high word.
|
||||
* @length_low: PLCP length low word.
|
||||
* @signal: PLCP signal.
|
||||
@ -311,8 +311,8 @@ struct txentry_desc {
|
||||
|
||||
enum data_queue_qid queue;
|
||||
|
||||
u16 length;
|
||||
u16 header_length;
|
||||
u16 l2pad;
|
||||
|
||||
u16 length_high;
|
||||
u16 length_low;
|
||||
|
@ -1808,7 +1808,8 @@ static void rt61pci_write_tx_desc(struct rt2x00_dev *rt2x00dev,
|
||||
|
||||
if (skbdesc->desc_len > TXINFO_SIZE) {
|
||||
rt2x00_desc_read(txd, 11, &word);
|
||||
rt2x00_set_field32(&word, TXD_W11_BUFFER_LENGTH0, skb->len);
|
||||
rt2x00_set_field32(&word, TXD_W11_BUFFER_LENGTH0,
|
||||
txdesc->length);
|
||||
rt2x00_desc_write(txd, 11, word);
|
||||
}
|
||||
|
||||
@ -1831,7 +1832,7 @@ static void rt61pci_write_tx_desc(struct rt2x00_dev *rt2x00dev,
|
||||
rt2x00_set_field32(&word, TXD_W0_KEY_TABLE,
|
||||
test_bit(ENTRY_TXD_ENCRYPT_PAIRWISE, &txdesc->flags));
|
||||
rt2x00_set_field32(&word, TXD_W0_KEY_INDEX, txdesc->key_idx);
|
||||
rt2x00_set_field32(&word, TXD_W0_DATABYTE_COUNT, skb->len);
|
||||
rt2x00_set_field32(&word, TXD_W0_DATABYTE_COUNT, txdesc->length);
|
||||
rt2x00_set_field32(&word, TXD_W0_BURST,
|
||||
test_bit(ENTRY_TXD_BURST, &txdesc->flags));
|
||||
rt2x00_set_field32(&word, TXD_W0_CIPHER_ALG, txdesc->cipher);
|
||||
|
@ -1494,7 +1494,7 @@ static void rt73usb_write_tx_desc(struct rt2x00_dev *rt2x00dev,
|
||||
rt2x00_set_field32(&word, TXD_W0_KEY_TABLE,
|
||||
test_bit(ENTRY_TXD_ENCRYPT_PAIRWISE, &txdesc->flags));
|
||||
rt2x00_set_field32(&word, TXD_W0_KEY_INDEX, txdesc->key_idx);
|
||||
rt2x00_set_field32(&word, TXD_W0_DATABYTE_COUNT, skb->len);
|
||||
rt2x00_set_field32(&word, TXD_W0_DATABYTE_COUNT, txdesc->length);
|
||||
rt2x00_set_field32(&word, TXD_W0_BURST2,
|
||||
test_bit(ENTRY_TXD_BURST, &txdesc->flags));
|
||||
rt2x00_set_field32(&word, TXD_W0_CIPHER_ALG, txdesc->cipher);
|
||||
|
Loading…
Reference in New Issue
Block a user