diff options
Diffstat (limited to 'drivers/net/wireless/rt2x00/rt2800pci.c')
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2800pci.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2800pci.c b/drivers/net/wireless/rt2x00/rt2800pci.c index 7d4778d66e77..b2f23272c3aa 100644 --- a/drivers/net/wireless/rt2x00/rt2800pci.c +++ b/drivers/net/wireless/rt2x00/rt2800pci.c | |||
@@ -633,7 +633,8 @@ static void rt2800pci_write_tx_desc(struct rt2x00_dev *rt2x00dev, | |||
633 | struct txentry_desc *txdesc) | 633 | struct txentry_desc *txdesc) |
634 | { | 634 | { |
635 | struct skb_frame_desc *skbdesc = get_skb_frame_desc(skb); | 635 | struct skb_frame_desc *skbdesc = get_skb_frame_desc(skb); |
636 | __le32 *txd = skbdesc->desc; | 636 | struct queue_entry_priv_pci *entry_priv = skbdesc->entry->priv_data; |
637 | __le32 *txd = entry_priv->desc; | ||
637 | u32 word; | 638 | u32 word; |
638 | 639 | ||
639 | /* | 640 | /* |
@@ -657,15 +658,14 @@ static void rt2800pci_write_tx_desc(struct rt2x00_dev *rt2x00dev, | |||
657 | !test_bit(ENTRY_TXD_MORE_FRAG, &txdesc->flags)); | 658 | !test_bit(ENTRY_TXD_MORE_FRAG, &txdesc->flags)); |
658 | rt2x00_set_field32(&word, TXD_W1_BURST, | 659 | rt2x00_set_field32(&word, TXD_W1_BURST, |
659 | test_bit(ENTRY_TXD_BURST, &txdesc->flags)); | 660 | test_bit(ENTRY_TXD_BURST, &txdesc->flags)); |
660 | rt2x00_set_field32(&word, TXD_W1_SD_LEN0, | 661 | rt2x00_set_field32(&word, TXD_W1_SD_LEN0, TXWI_DESC_SIZE); |
661 | rt2x00dev->ops->extra_tx_headroom); | ||
662 | rt2x00_set_field32(&word, TXD_W1_LAST_SEC0, 0); | 662 | rt2x00_set_field32(&word, TXD_W1_LAST_SEC0, 0); |
663 | rt2x00_set_field32(&word, TXD_W1_DMA_DONE, 0); | 663 | rt2x00_set_field32(&word, TXD_W1_DMA_DONE, 0); |
664 | rt2x00_desc_write(txd, 1, word); | 664 | rt2x00_desc_write(txd, 1, word); |
665 | 665 | ||
666 | rt2x00_desc_read(txd, 2, &word); | 666 | rt2x00_desc_read(txd, 2, &word); |
667 | rt2x00_set_field32(&word, TXD_W2_SD_PTR1, | 667 | rt2x00_set_field32(&word, TXD_W2_SD_PTR1, |
668 | skbdesc->skb_dma + rt2x00dev->ops->extra_tx_headroom); | 668 | skbdesc->skb_dma + TXWI_DESC_SIZE); |
669 | rt2x00_desc_write(txd, 2, word); | 669 | rt2x00_desc_write(txd, 2, word); |
670 | 670 | ||
671 | rt2x00_desc_read(txd, 3, &word); | 671 | rt2x00_desc_read(txd, 3, &word); |
@@ -673,6 +673,12 @@ static void rt2800pci_write_tx_desc(struct rt2x00_dev *rt2x00dev, | |||
673 | !test_bit(ENTRY_TXD_ENCRYPT_IV, &txdesc->flags)); | 673 | !test_bit(ENTRY_TXD_ENCRYPT_IV, &txdesc->flags)); |
674 | rt2x00_set_field32(&word, TXD_W3_QSEL, 2); | 674 | rt2x00_set_field32(&word, TXD_W3_QSEL, 2); |
675 | rt2x00_desc_write(txd, 3, word); | 675 | rt2x00_desc_write(txd, 3, word); |
676 | |||
677 | /* | ||
678 | * Register descriptor details in skb frame descriptor. | ||
679 | */ | ||
680 | skbdesc->desc = txd; | ||
681 | skbdesc->desc_len = TXD_DESC_SIZE; | ||
676 | } | 682 | } |
677 | 683 | ||
678 | /* | 684 | /* |