diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2400pci.c | 78 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2500pci.c | 72 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2500usb.c | 33 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00pci.c | 89 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00pci.h | 22 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00usb.c | 144 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00usb.h | 17 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt61pci.c | 69 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt73usb.c | 6 |
9 files changed, 223 insertions, 307 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2400pci.c b/drivers/net/wireless/rt2x00/rt2400pci.c index a491ba5bb5c3..b11f445c7479 100644 --- a/drivers/net/wireless/rt2x00/rt2400pci.c +++ b/drivers/net/wireless/rt2x00/rt2400pci.c | |||
@@ -620,39 +620,38 @@ static void rt2400pci_link_tuner(struct rt2x00_dev *rt2x00dev) | |||
620 | static void rt2400pci_init_rxentry(struct rt2x00_dev *rt2x00dev, | 620 | static void rt2400pci_init_rxentry(struct rt2x00_dev *rt2x00dev, |
621 | struct queue_entry *entry) | 621 | struct queue_entry *entry) |
622 | { | 622 | { |
623 | struct queue_entry_priv_pci_rx *priv_rx = entry->priv_data; | 623 | struct queue_entry_priv_pci *entry_priv = entry->priv_data; |
624 | u32 word; | 624 | u32 word; |
625 | 625 | ||
626 | rt2x00_desc_read(priv_rx->desc, 2, &word); | 626 | rt2x00_desc_read(entry_priv->desc, 2, &word); |
627 | rt2x00_set_field32(&word, RXD_W2_BUFFER_LENGTH, | 627 | rt2x00_set_field32(&word, RXD_W2_BUFFER_LENGTH, |
628 | entry->queue->data_size); | 628 | entry->queue->data_size); |
629 | rt2x00_desc_write(priv_rx->desc, 2, word); | 629 | rt2x00_desc_write(entry_priv->desc, 2, word); |
630 | 630 | ||
631 | rt2x00_desc_read(priv_rx->desc, 1, &word); | 631 | rt2x00_desc_read(entry_priv->desc, 1, &word); |
632 | rt2x00_set_field32(&word, RXD_W1_BUFFER_ADDRESS, priv_rx->data_dma); | 632 | rt2x00_set_field32(&word, RXD_W1_BUFFER_ADDRESS, entry_priv->data_dma); |
633 | rt2x00_desc_write(priv_rx->desc, 1, word); | 633 | rt2x00_desc_write(entry_priv->desc, 1, word); |
634 | 634 | ||
635 | rt2x00_desc_read(priv_rx->desc, 0, &word); | 635 | rt2x00_desc_read(entry_priv->desc, 0, &word); |
636 | rt2x00_set_field32(&word, RXD_W0_OWNER_NIC, 1); | 636 | rt2x00_set_field32(&word, RXD_W0_OWNER_NIC, 1); |
637 | rt2x00_desc_write(priv_rx->desc, 0, word); | 637 | rt2x00_desc_write(entry_priv->desc, 0, word); |
638 | } | 638 | } |
639 | 639 | ||
640 | static void rt2400pci_init_txentry(struct rt2x00_dev *rt2x00dev, | 640 | static void rt2400pci_init_txentry(struct rt2x00_dev *rt2x00dev, |
641 | struct queue_entry *entry) | 641 | struct queue_entry *entry) |
642 | { | 642 | { |
643 | struct queue_entry_priv_pci_tx *priv_tx = entry->priv_data; | 643 | struct queue_entry_priv_pci *entry_priv = entry->priv_data; |
644 | u32 word; | 644 | u32 word; |
645 | 645 | ||
646 | rt2x00_desc_read(priv_tx->desc, 0, &word); | 646 | rt2x00_desc_read(entry_priv->desc, 0, &word); |
647 | rt2x00_set_field32(&word, TXD_W0_VALID, 0); | 647 | rt2x00_set_field32(&word, TXD_W0_VALID, 0); |
648 | rt2x00_set_field32(&word, TXD_W0_OWNER_NIC, 0); | 648 | rt2x00_set_field32(&word, TXD_W0_OWNER_NIC, 0); |
649 | rt2x00_desc_write(priv_tx->desc, 0, word); | 649 | rt2x00_desc_write(entry_priv->desc, 0, word); |
650 | } | 650 | } |
651 | 651 | ||
652 | static int rt2400pci_init_queues(struct rt2x00_dev *rt2x00dev) | 652 | static int rt2400pci_init_queues(struct rt2x00_dev *rt2x00dev) |
653 | { | 653 | { |
654 | struct queue_entry_priv_pci_rx *priv_rx; | 654 | struct queue_entry_priv_pci *entry_priv; |
655 | struct queue_entry_priv_pci_tx *priv_tx; | ||
656 | u32 reg; | 655 | u32 reg; |
657 | 656 | ||
658 | /* | 657 | /* |
@@ -665,28 +664,28 @@ static int rt2400pci_init_queues(struct rt2x00_dev *rt2x00dev) | |||
665 | rt2x00_set_field32(®, TXCSR2_NUM_PRIO, rt2x00dev->tx[0].limit); | 664 | rt2x00_set_field32(®, TXCSR2_NUM_PRIO, rt2x00dev->tx[0].limit); |
666 | rt2x00pci_register_write(rt2x00dev, TXCSR2, reg); | 665 | rt2x00pci_register_write(rt2x00dev, TXCSR2, reg); |
667 | 666 | ||
668 | priv_tx = rt2x00dev->tx[1].entries[0].priv_data; | 667 | entry_priv = rt2x00dev->tx[1].entries[0].priv_data; |
669 | rt2x00pci_register_read(rt2x00dev, TXCSR3, ®); | 668 | rt2x00pci_register_read(rt2x00dev, TXCSR3, ®); |
670 | rt2x00_set_field32(®, TXCSR3_TX_RING_REGISTER, | 669 | rt2x00_set_field32(®, TXCSR3_TX_RING_REGISTER, |
671 | priv_tx->desc_dma); | 670 | entry_priv->desc_dma); |
672 | rt2x00pci_register_write(rt2x00dev, TXCSR3, reg); | 671 | rt2x00pci_register_write(rt2x00dev, TXCSR3, reg); |
673 | 672 | ||
674 | priv_tx = rt2x00dev->tx[0].entries[0].priv_data; | 673 | entry_priv = rt2x00dev->tx[0].entries[0].priv_data; |
675 | rt2x00pci_register_read(rt2x00dev, TXCSR5, ®); | 674 | rt2x00pci_register_read(rt2x00dev, TXCSR5, ®); |
676 | rt2x00_set_field32(®, TXCSR5_PRIO_RING_REGISTER, | 675 | rt2x00_set_field32(®, TXCSR5_PRIO_RING_REGISTER, |
677 | priv_tx->desc_dma); | 676 | entry_priv->desc_dma); |
678 | rt2x00pci_register_write(rt2x00dev, TXCSR5, reg); | 677 | rt2x00pci_register_write(rt2x00dev, TXCSR5, reg); |
679 | 678 | ||
680 | priv_tx = rt2x00dev->bcn[1].entries[0].priv_data; | 679 | entry_priv = rt2x00dev->bcn[1].entries[0].priv_data; |
681 | rt2x00pci_register_read(rt2x00dev, TXCSR4, ®); | 680 | rt2x00pci_register_read(rt2x00dev, TXCSR4, ®); |
682 | rt2x00_set_field32(®, TXCSR4_ATIM_RING_REGISTER, | 681 | rt2x00_set_field32(®, TXCSR4_ATIM_RING_REGISTER, |
683 | priv_tx->desc_dma); | 682 | entry_priv->desc_dma); |
684 | rt2x00pci_register_write(rt2x00dev, TXCSR4, reg); | 683 | rt2x00pci_register_write(rt2x00dev, TXCSR4, reg); |
685 | 684 | ||
686 | priv_tx = rt2x00dev->bcn[0].entries[0].priv_data; | 685 | entry_priv = rt2x00dev->bcn[0].entries[0].priv_data; |
687 | rt2x00pci_register_read(rt2x00dev, TXCSR6, ®); | 686 | rt2x00pci_register_read(rt2x00dev, TXCSR6, ®); |
688 | rt2x00_set_field32(®, TXCSR6_BEACON_RING_REGISTER, | 687 | rt2x00_set_field32(®, TXCSR6_BEACON_RING_REGISTER, |
689 | priv_tx->desc_dma); | 688 | entry_priv->desc_dma); |
690 | rt2x00pci_register_write(rt2x00dev, TXCSR6, reg); | 689 | rt2x00pci_register_write(rt2x00dev, TXCSR6, reg); |
691 | 690 | ||
692 | rt2x00pci_register_read(rt2x00dev, RXCSR1, ®); | 691 | rt2x00pci_register_read(rt2x00dev, RXCSR1, ®); |
@@ -694,9 +693,10 @@ static int rt2400pci_init_queues(struct rt2x00_dev *rt2x00dev) | |||
694 | rt2x00_set_field32(®, RXCSR1_NUM_RXD, rt2x00dev->rx->limit); | 693 | rt2x00_set_field32(®, RXCSR1_NUM_RXD, rt2x00dev->rx->limit); |
695 | rt2x00pci_register_write(rt2x00dev, RXCSR1, reg); | 694 | rt2x00pci_register_write(rt2x00dev, RXCSR1, reg); |
696 | 695 | ||
697 | priv_rx = rt2x00dev->rx->entries[0].priv_data; | 696 | entry_priv = rt2x00dev->rx->entries[0].priv_data; |
698 | rt2x00pci_register_read(rt2x00dev, RXCSR2, ®); | 697 | rt2x00pci_register_read(rt2x00dev, RXCSR2, ®); |
699 | rt2x00_set_field32(®, RXCSR2_RX_RING_REGISTER, priv_rx->desc_dma); | 698 | rt2x00_set_field32(®, RXCSR2_RX_RING_REGISTER, |
699 | entry_priv->desc_dma); | ||
700 | rt2x00pci_register_write(rt2x00dev, RXCSR2, reg); | 700 | rt2x00pci_register_write(rt2x00dev, RXCSR2, reg); |
701 | 701 | ||
702 | return 0; | 702 | return 0; |
@@ -995,7 +995,7 @@ static void rt2400pci_write_tx_desc(struct rt2x00_dev *rt2x00dev, | |||
995 | struct txentry_desc *txdesc) | 995 | struct txentry_desc *txdesc) |
996 | { | 996 | { |
997 | struct skb_frame_desc *skbdesc = get_skb_frame_desc(skb); | 997 | struct skb_frame_desc *skbdesc = get_skb_frame_desc(skb); |
998 | struct queue_entry_priv_pci_tx *entry_priv = skbdesc->entry->priv_data; | 998 | struct queue_entry_priv_pci *entry_priv = skbdesc->entry->priv_data; |
999 | __le32 *txd = skbdesc->desc; | 999 | __le32 *txd = skbdesc->desc; |
1000 | u32 word; | 1000 | u32 word; |
1001 | 1001 | ||
@@ -1078,14 +1078,14 @@ static void rt2400pci_kick_tx_queue(struct rt2x00_dev *rt2x00dev, | |||
1078 | static void rt2400pci_fill_rxdone(struct queue_entry *entry, | 1078 | static void rt2400pci_fill_rxdone(struct queue_entry *entry, |
1079 | struct rxdone_entry_desc *rxdesc) | 1079 | struct rxdone_entry_desc *rxdesc) |
1080 | { | 1080 | { |
1081 | struct queue_entry_priv_pci_rx *priv_rx = entry->priv_data; | 1081 | struct queue_entry_priv_pci *entry_priv = entry->priv_data; |
1082 | u32 word0; | 1082 | u32 word0; |
1083 | u32 word2; | 1083 | u32 word2; |
1084 | u32 word3; | 1084 | u32 word3; |
1085 | 1085 | ||
1086 | rt2x00_desc_read(priv_rx->desc, 0, &word0); | 1086 | rt2x00_desc_read(entry_priv->desc, 0, &word0); |
1087 | rt2x00_desc_read(priv_rx->desc, 2, &word2); | 1087 | rt2x00_desc_read(entry_priv->desc, 2, &word2); |
1088 | rt2x00_desc_read(priv_rx->desc, 3, &word3); | 1088 | rt2x00_desc_read(entry_priv->desc, 3, &word3); |
1089 | 1089 | ||
1090 | if (rt2x00_get_field32(word0, RXD_W0_CRC_ERROR)) | 1090 | if (rt2x00_get_field32(word0, RXD_W0_CRC_ERROR)) |
1091 | rxdesc->flags |= RX_FLAG_FAILED_FCS_CRC; | 1091 | rxdesc->flags |= RX_FLAG_FAILED_FCS_CRC; |
@@ -1114,15 +1114,15 @@ static void rt2400pci_txdone(struct rt2x00_dev *rt2x00dev, | |||
1114 | const enum data_queue_qid queue_idx) | 1114 | const enum data_queue_qid queue_idx) |
1115 | { | 1115 | { |
1116 | struct data_queue *queue = rt2x00queue_get_queue(rt2x00dev, queue_idx); | 1116 | struct data_queue *queue = rt2x00queue_get_queue(rt2x00dev, queue_idx); |
1117 | struct queue_entry_priv_pci_tx *priv_tx; | 1117 | struct queue_entry_priv_pci *entry_priv; |
1118 | struct queue_entry *entry; | 1118 | struct queue_entry *entry; |
1119 | struct txdone_entry_desc txdesc; | 1119 | struct txdone_entry_desc txdesc; |
1120 | u32 word; | 1120 | u32 word; |
1121 | 1121 | ||
1122 | while (!rt2x00queue_empty(queue)) { | 1122 | while (!rt2x00queue_empty(queue)) { |
1123 | entry = rt2x00queue_get_entry(queue, Q_INDEX_DONE); | 1123 | entry = rt2x00queue_get_entry(queue, Q_INDEX_DONE); |
1124 | priv_tx = entry->priv_data; | 1124 | entry_priv = entry->priv_data; |
1125 | rt2x00_desc_read(priv_tx->desc, 0, &word); | 1125 | rt2x00_desc_read(entry_priv->desc, 0, &word); |
1126 | 1126 | ||
1127 | if (rt2x00_get_field32(word, TXD_W0_OWNER_NIC) || | 1127 | if (rt2x00_get_field32(word, TXD_W0_OWNER_NIC) || |
1128 | !rt2x00_get_field32(word, TXD_W0_VALID)) | 1128 | !rt2x00_get_field32(word, TXD_W0_VALID)) |
@@ -1489,14 +1489,14 @@ static int rt2400pci_beacon_update(struct ieee80211_hw *hw, struct sk_buff *skb, | |||
1489 | { | 1489 | { |
1490 | struct rt2x00_dev *rt2x00dev = hw->priv; | 1490 | struct rt2x00_dev *rt2x00dev = hw->priv; |
1491 | struct rt2x00_intf *intf = vif_to_intf(control->vif); | 1491 | struct rt2x00_intf *intf = vif_to_intf(control->vif); |
1492 | struct queue_entry_priv_pci_tx *priv_tx; | 1492 | struct queue_entry_priv_pci *entry_priv; |
1493 | struct skb_frame_desc *skbdesc; | 1493 | struct skb_frame_desc *skbdesc; |
1494 | struct txentry_desc txdesc; | 1494 | struct txentry_desc txdesc; |
1495 | u32 reg; | 1495 | u32 reg; |
1496 | 1496 | ||
1497 | if (unlikely(!intf->beacon)) | 1497 | if (unlikely(!intf->beacon)) |
1498 | return -ENOBUFS; | 1498 | return -ENOBUFS; |
1499 | priv_tx = intf->beacon->priv_data; | 1499 | entry_priv = intf->beacon->priv_data; |
1500 | 1500 | ||
1501 | /* | 1501 | /* |
1502 | * Copy all TX descriptor information into txdesc, | 1502 | * Copy all TX descriptor information into txdesc, |
@@ -1514,7 +1514,7 @@ static int rt2400pci_beacon_update(struct ieee80211_hw *hw, struct sk_buff *skb, | |||
1514 | skbdesc->flags |= FRAME_DESC_DRIVER_GENERATED; | 1514 | skbdesc->flags |= FRAME_DESC_DRIVER_GENERATED; |
1515 | skbdesc->data = skb->data; | 1515 | skbdesc->data = skb->data; |
1516 | skbdesc->data_len = skb->len; | 1516 | skbdesc->data_len = skb->len; |
1517 | skbdesc->desc = priv_tx->desc; | 1517 | skbdesc->desc = entry_priv->desc; |
1518 | skbdesc->desc_len = intf->beacon->queue->desc_size; | 1518 | skbdesc->desc_len = intf->beacon->queue->desc_size; |
1519 | skbdesc->entry = intf->beacon; | 1519 | skbdesc->entry = intf->beacon; |
1520 | 1520 | ||
@@ -1533,7 +1533,7 @@ static int rt2400pci_beacon_update(struct ieee80211_hw *hw, struct sk_buff *skb, | |||
1533 | * Write entire beacon with descriptor to register, | 1533 | * Write entire beacon with descriptor to register, |
1534 | * and kick the beacon generator. | 1534 | * and kick the beacon generator. |
1535 | */ | 1535 | */ |
1536 | memcpy(priv_tx->data, skb->data, skb->len); | 1536 | memcpy(entry_priv->data, skb->data, skb->len); |
1537 | rt2x00queue_write_tx_descriptor(intf->beacon, &txdesc); | 1537 | rt2x00queue_write_tx_descriptor(intf->beacon, &txdesc); |
1538 | rt2x00dev->ops->lib->kick_tx_queue(rt2x00dev, QID_BEACON); | 1538 | rt2x00dev->ops->lib->kick_tx_queue(rt2x00dev, QID_BEACON); |
1539 | 1539 | ||
@@ -1594,28 +1594,28 @@ static const struct data_queue_desc rt2400pci_queue_rx = { | |||
1594 | .entry_num = RX_ENTRIES, | 1594 | .entry_num = RX_ENTRIES, |
1595 | .data_size = DATA_FRAME_SIZE, | 1595 | .data_size = DATA_FRAME_SIZE, |
1596 | .desc_size = RXD_DESC_SIZE, | 1596 | .desc_size = RXD_DESC_SIZE, |
1597 | .priv_size = sizeof(struct queue_entry_priv_pci_rx), | 1597 | .priv_size = sizeof(struct queue_entry_priv_pci), |
1598 | }; | 1598 | }; |
1599 | 1599 | ||
1600 | static const struct data_queue_desc rt2400pci_queue_tx = { | 1600 | static const struct data_queue_desc rt2400pci_queue_tx = { |
1601 | .entry_num = TX_ENTRIES, | 1601 | .entry_num = TX_ENTRIES, |
1602 | .data_size = DATA_FRAME_SIZE, | 1602 | .data_size = DATA_FRAME_SIZE, |
1603 | .desc_size = TXD_DESC_SIZE, | 1603 | .desc_size = TXD_DESC_SIZE, |
1604 | .priv_size = sizeof(struct queue_entry_priv_pci_tx), | 1604 | .priv_size = sizeof(struct queue_entry_priv_pci), |
1605 | }; | 1605 | }; |
1606 | 1606 | ||
1607 | static const struct data_queue_desc rt2400pci_queue_bcn = { | 1607 | static const struct data_queue_desc rt2400pci_queue_bcn = { |
1608 | .entry_num = BEACON_ENTRIES, | 1608 | .entry_num = BEACON_ENTRIES, |
1609 | .data_size = MGMT_FRAME_SIZE, | 1609 | .data_size = MGMT_FRAME_SIZE, |
1610 | .desc_size = TXD_DESC_SIZE, | 1610 | .desc_size = TXD_DESC_SIZE, |
1611 | .priv_size = sizeof(struct queue_entry_priv_pci_tx), | 1611 | .priv_size = sizeof(struct queue_entry_priv_pci), |
1612 | }; | 1612 | }; |
1613 | 1613 | ||
1614 | static const struct data_queue_desc rt2400pci_queue_atim = { | 1614 | static const struct data_queue_desc rt2400pci_queue_atim = { |
1615 | .entry_num = ATIM_ENTRIES, | 1615 | .entry_num = ATIM_ENTRIES, |
1616 | .data_size = DATA_FRAME_SIZE, | 1616 | .data_size = DATA_FRAME_SIZE, |
1617 | .desc_size = TXD_DESC_SIZE, | 1617 | .desc_size = TXD_DESC_SIZE, |
1618 | .priv_size = sizeof(struct queue_entry_priv_pci_tx), | 1618 | .priv_size = sizeof(struct queue_entry_priv_pci), |
1619 | }; | 1619 | }; |
1620 | 1620 | ||
1621 | static const struct rt2x00_ops rt2400pci_ops = { | 1621 | static const struct rt2x00_ops rt2400pci_ops = { |
diff --git a/drivers/net/wireless/rt2x00/rt2500pci.c b/drivers/net/wireless/rt2x00/rt2500pci.c index 805781306dd1..06e87cdff455 100644 --- a/drivers/net/wireless/rt2x00/rt2500pci.c +++ b/drivers/net/wireless/rt2x00/rt2500pci.c | |||
@@ -715,34 +715,33 @@ dynamic_cca_tune: | |||
715 | static void rt2500pci_init_rxentry(struct rt2x00_dev *rt2x00dev, | 715 | static void rt2500pci_init_rxentry(struct rt2x00_dev *rt2x00dev, |
716 | struct queue_entry *entry) | 716 | struct queue_entry *entry) |
717 | { | 717 | { |
718 | struct queue_entry_priv_pci_rx *priv_rx = entry->priv_data; | 718 | struct queue_entry_priv_pci *entry_priv = entry->priv_data; |
719 | u32 word; | 719 | u32 word; |
720 | 720 | ||
721 | rt2x00_desc_read(priv_rx->desc, 1, &word); | 721 | rt2x00_desc_read(entry_priv->desc, 1, &word); |
722 | rt2x00_set_field32(&word, RXD_W1_BUFFER_ADDRESS, priv_rx->data_dma); | 722 | rt2x00_set_field32(&word, RXD_W1_BUFFER_ADDRESS, entry_priv->data_dma); |
723 | rt2x00_desc_write(priv_rx->desc, 1, word); | 723 | rt2x00_desc_write(entry_priv->desc, 1, word); |
724 | 724 | ||
725 | rt2x00_desc_read(priv_rx->desc, 0, &word); | 725 | rt2x00_desc_read(entry_priv->desc, 0, &word); |
726 | rt2x00_set_field32(&word, RXD_W0_OWNER_NIC, 1); | 726 | rt2x00_set_field32(&word, RXD_W0_OWNER_NIC, 1); |
727 | rt2x00_desc_write(priv_rx->desc, 0, word); | 727 | rt2x00_desc_write(entry_priv->desc, 0, word); |
728 | } | 728 | } |
729 | 729 | ||
730 | static void rt2500pci_init_txentry(struct rt2x00_dev *rt2x00dev, | 730 | static void rt2500pci_init_txentry(struct rt2x00_dev *rt2x00dev, |
731 | struct queue_entry *entry) | 731 | struct queue_entry *entry) |
732 | { | 732 | { |
733 | struct queue_entry_priv_pci_tx *priv_tx = entry->priv_data; | 733 | struct queue_entry_priv_pci *entry_priv = entry->priv_data; |
734 | u32 word; | 734 | u32 word; |
735 | 735 | ||
736 | rt2x00_desc_read(priv_tx->desc, 0, &word); | 736 | rt2x00_desc_read(entry_priv->desc, 0, &word); |
737 | rt2x00_set_field32(&word, TXD_W0_VALID, 0); | 737 | rt2x00_set_field32(&word, TXD_W0_VALID, 0); |
738 | rt2x00_set_field32(&word, TXD_W0_OWNER_NIC, 0); | 738 | rt2x00_set_field32(&word, TXD_W0_OWNER_NIC, 0); |
739 | rt2x00_desc_write(priv_tx->desc, 0, word); | 739 | rt2x00_desc_write(entry_priv->desc, 0, word); |
740 | } | 740 | } |
741 | 741 | ||
742 | static int rt2500pci_init_queues(struct rt2x00_dev *rt2x00dev) | 742 | static int rt2500pci_init_queues(struct rt2x00_dev *rt2x00dev) |
743 | { | 743 | { |
744 | struct queue_entry_priv_pci_rx *priv_rx; | 744 | struct queue_entry_priv_pci *entry_priv; |
745 | struct queue_entry_priv_pci_tx *priv_tx; | ||
746 | u32 reg; | 745 | u32 reg; |
747 | 746 | ||
748 | /* | 747 | /* |
@@ -755,28 +754,28 @@ static int rt2500pci_init_queues(struct rt2x00_dev *rt2x00dev) | |||
755 | rt2x00_set_field32(®, TXCSR2_NUM_PRIO, rt2x00dev->tx[0].limit); | 754 | rt2x00_set_field32(®, TXCSR2_NUM_PRIO, rt2x00dev->tx[0].limit); |
756 | rt2x00pci_register_write(rt2x00dev, TXCSR2, reg); | 755 | rt2x00pci_register_write(rt2x00dev, TXCSR2, reg); |
757 | 756 | ||
758 | priv_tx = rt2x00dev->tx[1].entries[0].priv_data; | 757 | entry_priv = rt2x00dev->tx[1].entries[0].priv_data; |
759 | rt2x00pci_register_read(rt2x00dev, TXCSR3, ®); | 758 | rt2x00pci_register_read(rt2x00dev, TXCSR3, ®); |
760 | rt2x00_set_field32(®, TXCSR3_TX_RING_REGISTER, | 759 | rt2x00_set_field32(®, TXCSR3_TX_RING_REGISTER, |
761 | priv_tx->desc_dma); | 760 | entry_priv->desc_dma); |
762 | rt2x00pci_register_write(rt2x00dev, TXCSR3, reg); | 761 | rt2x00pci_register_write(rt2x00dev, TXCSR3, reg); |
763 | 762 | ||
764 | priv_tx = rt2x00dev->tx[0].entries[0].priv_data; | 763 | entry_priv = rt2x00dev->tx[0].entries[0].priv_data; |
765 | rt2x00pci_register_read(rt2x00dev, TXCSR5, ®); | 764 | rt2x00pci_register_read(rt2x00dev, TXCSR5, ®); |
766 | rt2x00_set_field32(®, TXCSR5_PRIO_RING_REGISTER, | 765 | rt2x00_set_field32(®, TXCSR5_PRIO_RING_REGISTER, |
767 | priv_tx->desc_dma); | 766 | entry_priv->desc_dma); |
768 | rt2x00pci_register_write(rt2x00dev, TXCSR5, reg); | 767 | rt2x00pci_register_write(rt2x00dev, TXCSR5, reg); |
769 | 768 | ||
770 | priv_tx = rt2x00dev->bcn[1].entries[0].priv_data; | 769 | entry_priv = rt2x00dev->bcn[1].entries[0].priv_data; |
771 | rt2x00pci_register_read(rt2x00dev, TXCSR4, ®); | 770 | rt2x00pci_register_read(rt2x00dev, TXCSR4, ®); |
772 | rt2x00_set_field32(®, TXCSR4_ATIM_RING_REGISTER, | 771 | rt2x00_set_field32(®, TXCSR4_ATIM_RING_REGISTER, |
773 | priv_tx->desc_dma); | 772 | entry_priv->desc_dma); |
774 | rt2x00pci_register_write(rt2x00dev, TXCSR4, reg); | 773 | rt2x00pci_register_write(rt2x00dev, TXCSR4, reg); |
775 | 774 | ||
776 | priv_tx = rt2x00dev->bcn[0].entries[0].priv_data; | 775 | entry_priv = rt2x00dev->bcn[0].entries[0].priv_data; |
777 | rt2x00pci_register_read(rt2x00dev, TXCSR6, ®); | 776 | rt2x00pci_register_read(rt2x00dev, TXCSR6, ®); |
778 | rt2x00_set_field32(®, TXCSR6_BEACON_RING_REGISTER, | 777 | rt2x00_set_field32(®, TXCSR6_BEACON_RING_REGISTER, |
779 | priv_tx->desc_dma); | 778 | entry_priv->desc_dma); |
780 | rt2x00pci_register_write(rt2x00dev, TXCSR6, reg); | 779 | rt2x00pci_register_write(rt2x00dev, TXCSR6, reg); |
781 | 780 | ||
782 | rt2x00pci_register_read(rt2x00dev, RXCSR1, ®); | 781 | rt2x00pci_register_read(rt2x00dev, RXCSR1, ®); |
@@ -784,9 +783,10 @@ static int rt2500pci_init_queues(struct rt2x00_dev *rt2x00dev) | |||
784 | rt2x00_set_field32(®, RXCSR1_NUM_RXD, rt2x00dev->rx->limit); | 783 | rt2x00_set_field32(®, RXCSR1_NUM_RXD, rt2x00dev->rx->limit); |
785 | rt2x00pci_register_write(rt2x00dev, RXCSR1, reg); | 784 | rt2x00pci_register_write(rt2x00dev, RXCSR1, reg); |
786 | 785 | ||
787 | priv_rx = rt2x00dev->rx->entries[0].priv_data; | 786 | entry_priv = rt2x00dev->rx->entries[0].priv_data; |
788 | rt2x00pci_register_read(rt2x00dev, RXCSR2, ®); | 787 | rt2x00pci_register_read(rt2x00dev, RXCSR2, ®); |
789 | rt2x00_set_field32(®, RXCSR2_RX_RING_REGISTER, priv_rx->desc_dma); | 788 | rt2x00_set_field32(®, RXCSR2_RX_RING_REGISTER, |
789 | entry_priv->desc_dma); | ||
790 | rt2x00pci_register_write(rt2x00dev, RXCSR2, reg); | 790 | rt2x00pci_register_write(rt2x00dev, RXCSR2, reg); |
791 | 791 | ||
792 | return 0; | 792 | return 0; |
@@ -1154,7 +1154,7 @@ static void rt2500pci_write_tx_desc(struct rt2x00_dev *rt2x00dev, | |||
1154 | struct txentry_desc *txdesc) | 1154 | struct txentry_desc *txdesc) |
1155 | { | 1155 | { |
1156 | struct skb_frame_desc *skbdesc = get_skb_frame_desc(skb); | 1156 | struct skb_frame_desc *skbdesc = get_skb_frame_desc(skb); |
1157 | struct queue_entry_priv_pci_tx *entry_priv = skbdesc->entry->priv_data; | 1157 | struct queue_entry_priv_pci *entry_priv = skbdesc->entry->priv_data; |
1158 | __le32 *txd = skbdesc->desc; | 1158 | __le32 *txd = skbdesc->desc; |
1159 | u32 word; | 1159 | u32 word; |
1160 | 1160 | ||
@@ -1235,12 +1235,12 @@ static void rt2500pci_kick_tx_queue(struct rt2x00_dev *rt2x00dev, | |||
1235 | static void rt2500pci_fill_rxdone(struct queue_entry *entry, | 1235 | static void rt2500pci_fill_rxdone(struct queue_entry *entry, |
1236 | struct rxdone_entry_desc *rxdesc) | 1236 | struct rxdone_entry_desc *rxdesc) |
1237 | { | 1237 | { |
1238 | struct queue_entry_priv_pci_rx *priv_rx = entry->priv_data; | 1238 | struct queue_entry_priv_pci *entry_priv = entry->priv_data; |
1239 | u32 word0; | 1239 | u32 word0; |
1240 | u32 word2; | 1240 | u32 word2; |
1241 | 1241 | ||
1242 | rt2x00_desc_read(priv_rx->desc, 0, &word0); | 1242 | rt2x00_desc_read(entry_priv->desc, 0, &word0); |
1243 | rt2x00_desc_read(priv_rx->desc, 2, &word2); | 1243 | rt2x00_desc_read(entry_priv->desc, 2, &word2); |
1244 | 1244 | ||
1245 | if (rt2x00_get_field32(word0, RXD_W0_CRC_ERROR)) | 1245 | if (rt2x00_get_field32(word0, RXD_W0_CRC_ERROR)) |
1246 | rxdesc->flags |= RX_FLAG_FAILED_FCS_CRC; | 1246 | rxdesc->flags |= RX_FLAG_FAILED_FCS_CRC; |
@@ -1271,15 +1271,15 @@ static void rt2500pci_txdone(struct rt2x00_dev *rt2x00dev, | |||
1271 | const enum data_queue_qid queue_idx) | 1271 | const enum data_queue_qid queue_idx) |
1272 | { | 1272 | { |
1273 | struct data_queue *queue = rt2x00queue_get_queue(rt2x00dev, queue_idx); | 1273 | struct data_queue *queue = rt2x00queue_get_queue(rt2x00dev, queue_idx); |
1274 | struct queue_entry_priv_pci_tx *priv_tx; | 1274 | struct queue_entry_priv_pci *entry_priv; |
1275 | struct queue_entry *entry; | 1275 | struct queue_entry *entry; |
1276 | struct txdone_entry_desc txdesc; | 1276 | struct txdone_entry_desc txdesc; |
1277 | u32 word; | 1277 | u32 word; |
1278 | 1278 | ||
1279 | while (!rt2x00queue_empty(queue)) { | 1279 | while (!rt2x00queue_empty(queue)) { |
1280 | entry = rt2x00queue_get_entry(queue, Q_INDEX_DONE); | 1280 | entry = rt2x00queue_get_entry(queue, Q_INDEX_DONE); |
1281 | priv_tx = entry->priv_data; | 1281 | entry_priv = entry->priv_data; |
1282 | rt2x00_desc_read(priv_tx->desc, 0, &word); | 1282 | rt2x00_desc_read(entry_priv->desc, 0, &word); |
1283 | 1283 | ||
1284 | if (rt2x00_get_field32(word, TXD_W0_OWNER_NIC) || | 1284 | if (rt2x00_get_field32(word, TXD_W0_OWNER_NIC) || |
1285 | !rt2x00_get_field32(word, TXD_W0_VALID)) | 1285 | !rt2x00_get_field32(word, TXD_W0_VALID)) |
@@ -1804,7 +1804,7 @@ static int rt2500pci_beacon_update(struct ieee80211_hw *hw, struct sk_buff *skb, | |||
1804 | { | 1804 | { |
1805 | struct rt2x00_dev *rt2x00dev = hw->priv; | 1805 | struct rt2x00_dev *rt2x00dev = hw->priv; |
1806 | struct rt2x00_intf *intf = vif_to_intf(control->vif); | 1806 | struct rt2x00_intf *intf = vif_to_intf(control->vif); |
1807 | struct queue_entry_priv_pci_tx *priv_tx; | 1807 | struct queue_entry_priv_pci *entry_priv; |
1808 | struct skb_frame_desc *skbdesc; | 1808 | struct skb_frame_desc *skbdesc; |
1809 | struct txentry_desc txdesc; | 1809 | struct txentry_desc txdesc; |
1810 | u32 reg; | 1810 | u32 reg; |
@@ -1812,7 +1812,7 @@ static int rt2500pci_beacon_update(struct ieee80211_hw *hw, struct sk_buff *skb, | |||
1812 | if (unlikely(!intf->beacon)) | 1812 | if (unlikely(!intf->beacon)) |
1813 | return -ENOBUFS; | 1813 | return -ENOBUFS; |
1814 | 1814 | ||
1815 | priv_tx = intf->beacon->priv_data; | 1815 | entry_priv = intf->beacon->priv_data; |
1816 | 1816 | ||
1817 | /* | 1817 | /* |
1818 | * Copy all TX descriptor information into txdesc, | 1818 | * Copy all TX descriptor information into txdesc, |
@@ -1830,7 +1830,7 @@ static int rt2500pci_beacon_update(struct ieee80211_hw *hw, struct sk_buff *skb, | |||
1830 | skbdesc->flags |= FRAME_DESC_DRIVER_GENERATED; | 1830 | skbdesc->flags |= FRAME_DESC_DRIVER_GENERATED; |
1831 | skbdesc->data = skb->data; | 1831 | skbdesc->data = skb->data; |
1832 | skbdesc->data_len = skb->len; | 1832 | skbdesc->data_len = skb->len; |
1833 | skbdesc->desc = priv_tx->desc; | 1833 | skbdesc->desc = entry_priv->desc; |
1834 | skbdesc->desc_len = intf->beacon->queue->desc_size; | 1834 | skbdesc->desc_len = intf->beacon->queue->desc_size; |
1835 | skbdesc->entry = intf->beacon; | 1835 | skbdesc->entry = intf->beacon; |
1836 | 1836 | ||
@@ -1849,7 +1849,7 @@ static int rt2500pci_beacon_update(struct ieee80211_hw *hw, struct sk_buff *skb, | |||
1849 | * Write entire beacon with descriptor to register, | 1849 | * Write entire beacon with descriptor to register, |
1850 | * and kick the beacon generator. | 1850 | * and kick the beacon generator. |
1851 | */ | 1851 | */ |
1852 | memcpy(priv_tx->data, skb->data, skb->len); | 1852 | memcpy(entry_priv->data, skb->data, skb->len); |
1853 | rt2x00queue_write_tx_descriptor(intf->beacon, &txdesc); | 1853 | rt2x00queue_write_tx_descriptor(intf->beacon, &txdesc); |
1854 | rt2x00dev->ops->lib->kick_tx_queue(rt2x00dev, QID_BEACON); | 1854 | rt2x00dev->ops->lib->kick_tx_queue(rt2x00dev, QID_BEACON); |
1855 | 1855 | ||
@@ -1910,28 +1910,28 @@ static const struct data_queue_desc rt2500pci_queue_rx = { | |||
1910 | .entry_num = RX_ENTRIES, | 1910 | .entry_num = RX_ENTRIES, |
1911 | .data_size = DATA_FRAME_SIZE, | 1911 | .data_size = DATA_FRAME_SIZE, |
1912 | .desc_size = RXD_DESC_SIZE, | 1912 | .desc_size = RXD_DESC_SIZE, |
1913 | .priv_size = sizeof(struct queue_entry_priv_pci_rx), | 1913 | .priv_size = sizeof(struct queue_entry_priv_pci), |
1914 | }; | 1914 | }; |
1915 | 1915 | ||
1916 | static const struct data_queue_desc rt2500pci_queue_tx = { | 1916 | static const struct data_queue_desc rt2500pci_queue_tx = { |
1917 | .entry_num = TX_ENTRIES, | 1917 | .entry_num = TX_ENTRIES, |
1918 | .data_size = DATA_FRAME_SIZE, | 1918 | .data_size = DATA_FRAME_SIZE, |
1919 | .desc_size = TXD_DESC_SIZE, | 1919 | .desc_size = TXD_DESC_SIZE, |
1920 | .priv_size = sizeof(struct queue_entry_priv_pci_tx), | 1920 | .priv_size = sizeof(struct queue_entry_priv_pci), |
1921 | }; | 1921 | }; |
1922 | 1922 | ||
1923 | static const struct data_queue_desc rt2500pci_queue_bcn = { | 1923 | static const struct data_queue_desc rt2500pci_queue_bcn = { |
1924 | .entry_num = BEACON_ENTRIES, | 1924 | .entry_num = BEACON_ENTRIES, |
1925 | .data_size = MGMT_FRAME_SIZE, | 1925 | .data_size = MGMT_FRAME_SIZE, |
1926 | .desc_size = TXD_DESC_SIZE, | 1926 | .desc_size = TXD_DESC_SIZE, |
1927 | .priv_size = sizeof(struct queue_entry_priv_pci_tx), | 1927 | .priv_size = sizeof(struct queue_entry_priv_pci), |
1928 | }; | 1928 | }; |
1929 | 1929 | ||
1930 | static const struct data_queue_desc rt2500pci_queue_atim = { | 1930 | static const struct data_queue_desc rt2500pci_queue_atim = { |
1931 | .entry_num = ATIM_ENTRIES, | 1931 | .entry_num = ATIM_ENTRIES, |
1932 | .data_size = DATA_FRAME_SIZE, | 1932 | .data_size = DATA_FRAME_SIZE, |
1933 | .desc_size = TXD_DESC_SIZE, | 1933 | .desc_size = TXD_DESC_SIZE, |
1934 | .priv_size = sizeof(struct queue_entry_priv_pci_tx), | 1934 | .priv_size = sizeof(struct queue_entry_priv_pci), |
1935 | }; | 1935 | }; |
1936 | 1936 | ||
1937 | static const struct rt2x00_ops rt2500pci_ops = { | 1937 | static const struct rt2x00_ops rt2500pci_ops = { |
diff --git a/drivers/net/wireless/rt2x00/rt2500usb.c b/drivers/net/wireless/rt2x00/rt2500usb.c index 0bf9ab3da5e6..4122c5ebe7c3 100644 --- a/drivers/net/wireless/rt2x00/rt2500usb.c +++ b/drivers/net/wireless/rt2x00/rt2500usb.c | |||
@@ -1124,11 +1124,12 @@ static void rt2500usb_kick_tx_queue(struct rt2x00_dev *rt2x00dev, | |||
1124 | static void rt2500usb_fill_rxdone(struct queue_entry *entry, | 1124 | static void rt2500usb_fill_rxdone(struct queue_entry *entry, |
1125 | struct rxdone_entry_desc *rxdesc) | 1125 | struct rxdone_entry_desc *rxdesc) |
1126 | { | 1126 | { |
1127 | struct queue_entry_priv_usb_rx *priv_rx = entry->priv_data; | 1127 | struct queue_entry_priv_usb *entry_priv = entry->priv_data; |
1128 | struct skb_frame_desc *skbdesc = get_skb_frame_desc(entry->skb); | 1128 | struct skb_frame_desc *skbdesc = get_skb_frame_desc(entry->skb); |
1129 | __le32 *rxd = | 1129 | __le32 *rxd = |
1130 | (__le32 *)(entry->skb->data + | 1130 | (__le32 *)(entry->skb->data + |
1131 | (priv_rx->urb->actual_length - entry->queue->desc_size)); | 1131 | (entry_priv->urb->actual_length - |
1132 | entry->queue->desc_size)); | ||
1132 | u32 word0; | 1133 | u32 word0; |
1133 | u32 word1; | 1134 | u32 word1; |
1134 | 1135 | ||
@@ -1184,7 +1185,7 @@ static void rt2500usb_fill_rxdone(struct queue_entry *entry, | |||
1184 | static void rt2500usb_beacondone(struct urb *urb) | 1185 | static void rt2500usb_beacondone(struct urb *urb) |
1185 | { | 1186 | { |
1186 | struct queue_entry *entry = (struct queue_entry *)urb->context; | 1187 | struct queue_entry *entry = (struct queue_entry *)urb->context; |
1187 | struct queue_entry_priv_usb_bcn *priv_bcn = entry->priv_data; | 1188 | struct queue_entry_priv_usb_bcn *bcn_priv = entry->priv_data; |
1188 | 1189 | ||
1189 | if (!test_bit(DEVICE_ENABLED_RADIO, &entry->queue->rt2x00dev->flags)) | 1190 | if (!test_bit(DEVICE_ENABLED_RADIO, &entry->queue->rt2x00dev->flags)) |
1190 | return; | 1191 | return; |
@@ -1195,9 +1196,9 @@ static void rt2500usb_beacondone(struct urb *urb) | |||
1195 | * Otherwise we should free the sk_buffer, the device | 1196 | * Otherwise we should free the sk_buffer, the device |
1196 | * should be doing the rest of the work now. | 1197 | * should be doing the rest of the work now. |
1197 | */ | 1198 | */ |
1198 | if (priv_bcn->guardian_urb == urb) { | 1199 | if (bcn_priv->guardian_urb == urb) { |
1199 | usb_submit_urb(priv_bcn->urb, GFP_ATOMIC); | 1200 | usb_submit_urb(bcn_priv->urb, GFP_ATOMIC); |
1200 | } else if (priv_bcn->urb == urb) { | 1201 | } else if (bcn_priv->urb == urb) { |
1201 | dev_kfree_skb(entry->skb); | 1202 | dev_kfree_skb(entry->skb); |
1202 | entry->skb = NULL; | 1203 | entry->skb = NULL; |
1203 | } | 1204 | } |
@@ -1672,7 +1673,7 @@ static int rt2500usb_beacon_update(struct ieee80211_hw *hw, | |||
1672 | struct rt2x00_dev *rt2x00dev = hw->priv; | 1673 | struct rt2x00_dev *rt2x00dev = hw->priv; |
1673 | struct usb_device *usb_dev = rt2x00dev_usb_dev(rt2x00dev); | 1674 | struct usb_device *usb_dev = rt2x00dev_usb_dev(rt2x00dev); |
1674 | struct rt2x00_intf *intf = vif_to_intf(control->vif); | 1675 | struct rt2x00_intf *intf = vif_to_intf(control->vif); |
1675 | struct queue_entry_priv_usb_bcn *priv_bcn; | 1676 | struct queue_entry_priv_usb_bcn *bcn_priv; |
1676 | struct skb_frame_desc *skbdesc; | 1677 | struct skb_frame_desc *skbdesc; |
1677 | struct txentry_desc txdesc; | 1678 | struct txentry_desc txdesc; |
1678 | int pipe = usb_sndbulkpipe(usb_dev, 1); | 1679 | int pipe = usb_sndbulkpipe(usb_dev, 1); |
@@ -1682,7 +1683,7 @@ static int rt2500usb_beacon_update(struct ieee80211_hw *hw, | |||
1682 | if (unlikely(!intf->beacon)) | 1683 | if (unlikely(!intf->beacon)) |
1683 | return -ENOBUFS; | 1684 | return -ENOBUFS; |
1684 | 1685 | ||
1685 | priv_bcn = intf->beacon->priv_data; | 1686 | bcn_priv = intf->beacon->priv_data; |
1686 | 1687 | ||
1687 | /* | 1688 | /* |
1688 | * Copy all TX descriptor information into txdesc, | 1689 | * Copy all TX descriptor information into txdesc, |
@@ -1729,7 +1730,7 @@ static int rt2500usb_beacon_update(struct ieee80211_hw *hw, | |||
1729 | */ | 1730 | */ |
1730 | length = rt2500usb_get_tx_data_len(rt2x00dev, skb); | 1731 | length = rt2500usb_get_tx_data_len(rt2x00dev, skb); |
1731 | 1732 | ||
1732 | usb_fill_bulk_urb(priv_bcn->urb, usb_dev, pipe, | 1733 | usb_fill_bulk_urb(bcn_priv->urb, usb_dev, pipe, |
1733 | skb->data, length, rt2500usb_beacondone, | 1734 | skb->data, length, rt2500usb_beacondone, |
1734 | intf->beacon); | 1735 | intf->beacon); |
1735 | 1736 | ||
@@ -1738,15 +1739,15 @@ static int rt2500usb_beacon_update(struct ieee80211_hw *hw, | |||
1738 | * We only need a single byte, so lets recycle | 1739 | * We only need a single byte, so lets recycle |
1739 | * the 'flags' field we are not using for beacons. | 1740 | * the 'flags' field we are not using for beacons. |
1740 | */ | 1741 | */ |
1741 | priv_bcn->guardian_data = 0; | 1742 | bcn_priv->guardian_data = 0; |
1742 | usb_fill_bulk_urb(priv_bcn->guardian_urb, usb_dev, pipe, | 1743 | usb_fill_bulk_urb(bcn_priv->guardian_urb, usb_dev, pipe, |
1743 | &priv_bcn->guardian_data, 1, rt2500usb_beacondone, | 1744 | &bcn_priv->guardian_data, 1, rt2500usb_beacondone, |
1744 | intf->beacon); | 1745 | intf->beacon); |
1745 | 1746 | ||
1746 | /* | 1747 | /* |
1747 | * Send out the guardian byte. | 1748 | * Send out the guardian byte. |
1748 | */ | 1749 | */ |
1749 | usb_submit_urb(priv_bcn->guardian_urb, GFP_ATOMIC); | 1750 | usb_submit_urb(bcn_priv->guardian_urb, GFP_ATOMIC); |
1750 | 1751 | ||
1751 | /* | 1752 | /* |
1752 | * Enable beacon generation. | 1753 | * Enable beacon generation. |
@@ -1797,14 +1798,14 @@ static const struct data_queue_desc rt2500usb_queue_rx = { | |||
1797 | .entry_num = RX_ENTRIES, | 1798 | .entry_num = RX_ENTRIES, |
1798 | .data_size = DATA_FRAME_SIZE, | 1799 | .data_size = DATA_FRAME_SIZE, |
1799 | .desc_size = RXD_DESC_SIZE, | 1800 | .desc_size = RXD_DESC_SIZE, |
1800 | .priv_size = sizeof(struct queue_entry_priv_usb_rx), | 1801 | .priv_size = sizeof(struct queue_entry_priv_usb), |
1801 | }; | 1802 | }; |
1802 | 1803 | ||
1803 | static const struct data_queue_desc rt2500usb_queue_tx = { | 1804 | static const struct data_queue_desc rt2500usb_queue_tx = { |
1804 | .entry_num = TX_ENTRIES, | 1805 | .entry_num = TX_ENTRIES, |
1805 | .data_size = DATA_FRAME_SIZE, | 1806 | .data_size = DATA_FRAME_SIZE, |
1806 | .desc_size = TXD_DESC_SIZE, | 1807 | .desc_size = TXD_DESC_SIZE, |
1807 | .priv_size = sizeof(struct queue_entry_priv_usb_tx), | 1808 | .priv_size = sizeof(struct queue_entry_priv_usb), |
1808 | }; | 1809 | }; |
1809 | 1810 | ||
1810 | static const struct data_queue_desc rt2500usb_queue_bcn = { | 1811 | static const struct data_queue_desc rt2500usb_queue_bcn = { |
@@ -1818,7 +1819,7 @@ static const struct data_queue_desc rt2500usb_queue_atim = { | |||
1818 | .entry_num = ATIM_ENTRIES, | 1819 | .entry_num = ATIM_ENTRIES, |
1819 | .data_size = DATA_FRAME_SIZE, | 1820 | .data_size = DATA_FRAME_SIZE, |
1820 | .desc_size = TXD_DESC_SIZE, | 1821 | .desc_size = TXD_DESC_SIZE, |
1821 | .priv_size = sizeof(struct queue_entry_priv_usb_tx), | 1822 | .priv_size = sizeof(struct queue_entry_priv_usb), |
1822 | }; | 1823 | }; |
1823 | 1824 | ||
1824 | static const struct rt2x00_ops rt2500usb_ops = { | 1825 | static const struct rt2x00_ops rt2500usb_ops = { |
diff --git a/drivers/net/wireless/rt2x00/rt2x00pci.c b/drivers/net/wireless/rt2x00/rt2x00pci.c index a056b12fbd1c..fa7de41be049 100644 --- a/drivers/net/wireless/rt2x00/rt2x00pci.c +++ b/drivers/net/wireless/rt2x00/rt2x00pci.c | |||
@@ -39,7 +39,7 @@ int rt2x00pci_write_tx_data(struct rt2x00_dev *rt2x00dev, | |||
39 | struct ieee80211_tx_control *control) | 39 | struct ieee80211_tx_control *control) |
40 | { | 40 | { |
41 | struct queue_entry *entry = rt2x00queue_get_entry(queue, Q_INDEX); | 41 | struct queue_entry *entry = rt2x00queue_get_entry(queue, Q_INDEX); |
42 | struct queue_entry_priv_pci_tx *priv_tx = entry->priv_data; | 42 | struct queue_entry_priv_pci *entry_priv = entry->priv_data; |
43 | struct skb_frame_desc *skbdesc; | 43 | struct skb_frame_desc *skbdesc; |
44 | struct txentry_desc txdesc; | 44 | struct txentry_desc txdesc; |
45 | u32 word; | 45 | u32 word; |
@@ -47,7 +47,7 @@ int rt2x00pci_write_tx_data(struct rt2x00_dev *rt2x00dev, | |||
47 | if (rt2x00queue_full(queue)) | 47 | if (rt2x00queue_full(queue)) |
48 | return -EINVAL; | 48 | return -EINVAL; |
49 | 49 | ||
50 | rt2x00_desc_read(priv_tx->desc, 0, &word); | 50 | rt2x00_desc_read(entry_priv->desc, 0, &word); |
51 | 51 | ||
52 | if (rt2x00_get_field32(word, TXD_ENTRY_OWNER_NIC) || | 52 | if (rt2x00_get_field32(word, TXD_ENTRY_OWNER_NIC) || |
53 | rt2x00_get_field32(word, TXD_ENTRY_VALID)) { | 53 | rt2x00_get_field32(word, TXD_ENTRY_VALID)) { |
@@ -72,12 +72,12 @@ int rt2x00pci_write_tx_data(struct rt2x00_dev *rt2x00dev, | |||
72 | skbdesc = get_skb_frame_desc(skb); | 72 | skbdesc = get_skb_frame_desc(skb); |
73 | skbdesc->data = skb->data; | 73 | skbdesc->data = skb->data; |
74 | skbdesc->data_len = skb->len; | 74 | skbdesc->data_len = skb->len; |
75 | skbdesc->desc = priv_tx->desc; | 75 | skbdesc->desc = entry_priv->desc; |
76 | skbdesc->desc_len = queue->desc_size; | 76 | skbdesc->desc_len = queue->desc_size; |
77 | skbdesc->entry = entry; | 77 | skbdesc->entry = entry; |
78 | 78 | ||
79 | memcpy(&priv_tx->control, control, sizeof(priv_tx->control)); | 79 | memcpy(&entry_priv->control, control, sizeof(entry_priv->control)); |
80 | memcpy(priv_tx->data, skb->data, skb->len); | 80 | memcpy(entry_priv->data, skb->data, skb->len); |
81 | 81 | ||
82 | rt2x00queue_write_tx_descriptor(entry, &txdesc); | 82 | rt2x00queue_write_tx_descriptor(entry, &txdesc); |
83 | rt2x00queue_index_inc(queue, Q_INDEX); | 83 | rt2x00queue_index_inc(queue, Q_INDEX); |
@@ -93,7 +93,7 @@ void rt2x00pci_rxdone(struct rt2x00_dev *rt2x00dev) | |||
93 | { | 93 | { |
94 | struct data_queue *queue = rt2x00dev->rx; | 94 | struct data_queue *queue = rt2x00dev->rx; |
95 | struct queue_entry *entry; | 95 | struct queue_entry *entry; |
96 | struct queue_entry_priv_pci_rx *priv_rx; | 96 | struct queue_entry_priv_pci *entry_priv; |
97 | struct ieee80211_hdr *hdr; | 97 | struct ieee80211_hdr *hdr; |
98 | struct skb_frame_desc *skbdesc; | 98 | struct skb_frame_desc *skbdesc; |
99 | struct rxdone_entry_desc rxdesc; | 99 | struct rxdone_entry_desc rxdesc; |
@@ -103,8 +103,8 @@ void rt2x00pci_rxdone(struct rt2x00_dev *rt2x00dev) | |||
103 | 103 | ||
104 | while (1) { | 104 | while (1) { |
105 | entry = rt2x00queue_get_entry(queue, Q_INDEX); | 105 | entry = rt2x00queue_get_entry(queue, Q_INDEX); |
106 | priv_rx = entry->priv_data; | 106 | entry_priv = entry->priv_data; |
107 | rt2x00_desc_read(priv_rx->desc, 0, &word); | 107 | rt2x00_desc_read(entry_priv->desc, 0, &word); |
108 | 108 | ||
109 | if (rt2x00_get_field32(word, RXD_ENTRY_OWNER_NIC)) | 109 | if (rt2x00_get_field32(word, RXD_ENTRY_OWNER_NIC)) |
110 | break; | 110 | break; |
@@ -112,7 +112,7 @@ void rt2x00pci_rxdone(struct rt2x00_dev *rt2x00dev) | |||
112 | memset(&rxdesc, 0, sizeof(rxdesc)); | 112 | memset(&rxdesc, 0, sizeof(rxdesc)); |
113 | rt2x00dev->ops->lib->fill_rxdone(entry, &rxdesc); | 113 | rt2x00dev->ops->lib->fill_rxdone(entry, &rxdesc); |
114 | 114 | ||
115 | hdr = (struct ieee80211_hdr *)priv_rx->data; | 115 | hdr = (struct ieee80211_hdr *)entry_priv->data; |
116 | header_size = | 116 | header_size = |
117 | ieee80211_get_hdrlen(le16_to_cpu(hdr->frame_control)); | 117 | ieee80211_get_hdrlen(le16_to_cpu(hdr->frame_control)); |
118 | 118 | ||
@@ -132,7 +132,7 @@ void rt2x00pci_rxdone(struct rt2x00_dev *rt2x00dev) | |||
132 | 132 | ||
133 | skb_reserve(entry->skb, align); | 133 | skb_reserve(entry->skb, align); |
134 | memcpy(skb_put(entry->skb, rxdesc.size), | 134 | memcpy(skb_put(entry->skb, rxdesc.size), |
135 | priv_rx->data, rxdesc.size); | 135 | entry_priv->data, rxdesc.size); |
136 | 136 | ||
137 | /* | 137 | /* |
138 | * Fill in skb descriptor | 138 | * Fill in skb descriptor |
@@ -141,7 +141,7 @@ void rt2x00pci_rxdone(struct rt2x00_dev *rt2x00dev) | |||
141 | memset(skbdesc, 0, sizeof(*skbdesc)); | 141 | memset(skbdesc, 0, sizeof(*skbdesc)); |
142 | skbdesc->data = entry->skb->data; | 142 | skbdesc->data = entry->skb->data; |
143 | skbdesc->data_len = entry->skb->len; | 143 | skbdesc->data_len = entry->skb->len; |
144 | skbdesc->desc = priv_rx->desc; | 144 | skbdesc->desc = entry_priv->desc; |
145 | skbdesc->desc_len = queue->desc_size; | 145 | skbdesc->desc_len = queue->desc_size; |
146 | skbdesc->entry = entry; | 146 | skbdesc->entry = entry; |
147 | 147 | ||
@@ -152,7 +152,7 @@ void rt2x00pci_rxdone(struct rt2x00_dev *rt2x00dev) | |||
152 | 152 | ||
153 | if (test_bit(DEVICE_ENABLED_RADIO, &queue->rt2x00dev->flags)) { | 153 | if (test_bit(DEVICE_ENABLED_RADIO, &queue->rt2x00dev->flags)) { |
154 | rt2x00_set_field32(&word, RXD_ENTRY_OWNER_NIC, 1); | 154 | rt2x00_set_field32(&word, RXD_ENTRY_OWNER_NIC, 1); |
155 | rt2x00_desc_write(priv_rx->desc, 0, word); | 155 | rt2x00_desc_write(entry_priv->desc, 0, word); |
156 | } | 156 | } |
157 | 157 | ||
158 | rt2x00queue_index_inc(queue, Q_INDEX); | 158 | rt2x00queue_index_inc(queue, Q_INDEX); |
@@ -163,10 +163,10 @@ EXPORT_SYMBOL_GPL(rt2x00pci_rxdone); | |||
163 | void rt2x00pci_txdone(struct rt2x00_dev *rt2x00dev, struct queue_entry *entry, | 163 | void rt2x00pci_txdone(struct rt2x00_dev *rt2x00dev, struct queue_entry *entry, |
164 | struct txdone_entry_desc *txdesc) | 164 | struct txdone_entry_desc *txdesc) |
165 | { | 165 | { |
166 | struct queue_entry_priv_pci_tx *priv_tx = entry->priv_data; | 166 | struct queue_entry_priv_pci *entry_priv = entry->priv_data; |
167 | u32 word; | 167 | u32 word; |
168 | 168 | ||
169 | txdesc->control = &priv_tx->control; | 169 | txdesc->control = &entry_priv->control; |
170 | rt2x00lib_txdone(entry, txdesc); | 170 | rt2x00lib_txdone(entry, txdesc); |
171 | 171 | ||
172 | /* | 172 | /* |
@@ -174,10 +174,10 @@ void rt2x00pci_txdone(struct rt2x00_dev *rt2x00dev, struct queue_entry *entry, | |||
174 | */ | 174 | */ |
175 | entry->flags = 0; | 175 | entry->flags = 0; |
176 | 176 | ||
177 | rt2x00_desc_read(priv_tx->desc, 0, &word); | 177 | rt2x00_desc_read(entry_priv->desc, 0, &word); |
178 | rt2x00_set_field32(&word, TXD_ENTRY_OWNER_NIC, 0); | 178 | rt2x00_set_field32(&word, TXD_ENTRY_OWNER_NIC, 0); |
179 | rt2x00_set_field32(&word, TXD_ENTRY_VALID, 0); | 179 | rt2x00_set_field32(&word, TXD_ENTRY_VALID, 0); |
180 | rt2x00_desc_write(priv_tx->desc, 0, word); | 180 | rt2x00_desc_write(entry_priv->desc, 0, word); |
181 | 181 | ||
182 | rt2x00queue_index_inc(entry->queue, Q_INDEX_DONE); | 182 | rt2x00queue_index_inc(entry->queue, Q_INDEX_DONE); |
183 | 183 | ||
@@ -187,7 +187,7 @@ void rt2x00pci_txdone(struct rt2x00_dev *rt2x00dev, struct queue_entry *entry, | |||
187 | * is reenabled when the txdone handler has finished. | 187 | * is reenabled when the txdone handler has finished. |
188 | */ | 188 | */ |
189 | if (!rt2x00queue_full(entry->queue)) | 189 | if (!rt2x00queue_full(entry->queue)) |
190 | ieee80211_wake_queue(rt2x00dev->hw, priv_tx->control.queue); | 190 | ieee80211_wake_queue(rt2x00dev->hw, entry_priv->control.queue); |
191 | 191 | ||
192 | } | 192 | } |
193 | EXPORT_SYMBOL_GPL(rt2x00pci_txdone); | 193 | EXPORT_SYMBOL_GPL(rt2x00pci_txdone); |
@@ -226,14 +226,9 @@ static int rt2x00pci_alloc_queue_dma(struct rt2x00_dev *rt2x00dev, | |||
226 | struct data_queue *queue) | 226 | struct data_queue *queue) |
227 | { | 227 | { |
228 | struct pci_dev *pci_dev = rt2x00dev_pci(rt2x00dev); | 228 | struct pci_dev *pci_dev = rt2x00dev_pci(rt2x00dev); |
229 | struct queue_entry_priv_pci_rx *priv_rx; | 229 | struct queue_entry_priv_pci *entry_priv; |
230 | struct queue_entry_priv_pci_tx *priv_tx; | ||
231 | void *addr; | 230 | void *addr; |
232 | dma_addr_t dma; | 231 | dma_addr_t dma; |
233 | void *desc_addr; | ||
234 | dma_addr_t desc_dma; | ||
235 | void *data_addr; | ||
236 | dma_addr_t data_dma; | ||
237 | unsigned int i; | 232 | unsigned int i; |
238 | 233 | ||
239 | /* | 234 | /* |
@@ -249,24 +244,11 @@ static int rt2x00pci_alloc_queue_dma(struct rt2x00_dev *rt2x00dev, | |||
249 | * Initialize all queue entries to contain valid addresses. | 244 | * Initialize all queue entries to contain valid addresses. |
250 | */ | 245 | */ |
251 | for (i = 0; i < queue->limit; i++) { | 246 | for (i = 0; i < queue->limit; i++) { |
252 | desc_addr = desc_offset(queue, addr, i); | 247 | entry_priv = queue->entries[i].priv_data; |
253 | desc_dma = desc_offset(queue, dma, i); | 248 | entry_priv->desc = desc_offset(queue, addr, i); |
254 | data_addr = data_offset(queue, addr, i); | 249 | entry_priv->desc_dma = desc_offset(queue, dma, i); |
255 | data_dma = data_offset(queue, dma, i); | 250 | entry_priv->data = data_offset(queue, addr, i); |
256 | 251 | entry_priv->data_dma = data_offset(queue, dma, i); | |
257 | if (queue->qid == QID_RX) { | ||
258 | priv_rx = queue->entries[i].priv_data; | ||
259 | priv_rx->desc = desc_addr; | ||
260 | priv_rx->desc_dma = desc_dma; | ||
261 | priv_rx->data = data_addr; | ||
262 | priv_rx->data_dma = data_dma; | ||
263 | } else { | ||
264 | priv_tx = queue->entries[i].priv_data; | ||
265 | priv_tx->desc = desc_addr; | ||
266 | priv_tx->desc_dma = desc_dma; | ||
267 | priv_tx->data = data_addr; | ||
268 | priv_tx->data_dma = data_dma; | ||
269 | } | ||
270 | } | 252 | } |
271 | 253 | ||
272 | return 0; | 254 | return 0; |
@@ -276,28 +258,13 @@ static void rt2x00pci_free_queue_dma(struct rt2x00_dev *rt2x00dev, | |||
276 | struct data_queue *queue) | 258 | struct data_queue *queue) |
277 | { | 259 | { |
278 | struct pci_dev *pci_dev = rt2x00dev_pci(rt2x00dev); | 260 | struct pci_dev *pci_dev = rt2x00dev_pci(rt2x00dev); |
279 | struct queue_entry_priv_pci_rx *priv_rx; | 261 | struct queue_entry_priv_pci *entry_priv = |
280 | struct queue_entry_priv_pci_tx *priv_tx; | 262 | queue->entries[0].priv_data; |
281 | void *data_addr; | ||
282 | dma_addr_t data_dma; | ||
283 | |||
284 | if (queue->qid == QID_RX) { | ||
285 | priv_rx = queue->entries[0].priv_data; | ||
286 | data_addr = priv_rx->data; | ||
287 | data_dma = priv_rx->data_dma; | ||
288 | |||
289 | priv_rx->data = NULL; | ||
290 | } else { | ||
291 | priv_tx = queue->entries[0].priv_data; | ||
292 | data_addr = priv_tx->data; | ||
293 | data_dma = priv_tx->data_dma; | ||
294 | |||
295 | priv_tx->data = NULL; | ||
296 | } | ||
297 | 263 | ||
298 | if (data_addr) | 264 | if (entry_priv->data) |
299 | pci_free_consistent(pci_dev, dma_size(queue), | 265 | pci_free_consistent(pci_dev, dma_size(queue), |
300 | data_addr, data_dma); | 266 | entry_priv->data, entry_priv->data_dma); |
267 | entry_priv->data = NULL; | ||
301 | } | 268 | } |
302 | 269 | ||
303 | int rt2x00pci_initialize(struct rt2x00_dev *rt2x00dev) | 270 | int rt2x00pci_initialize(struct rt2x00_dev *rt2x00dev) |
diff --git a/drivers/net/wireless/rt2x00/rt2x00pci.h b/drivers/net/wireless/rt2x00/rt2x00pci.h index 2b0ef17bba6e..557d15a888ab 100644 --- a/drivers/net/wireless/rt2x00/rt2x00pci.h +++ b/drivers/net/wireless/rt2x00/rt2x00pci.h | |||
@@ -95,31 +95,15 @@ int rt2x00pci_write_tx_data(struct rt2x00_dev *rt2x00dev, | |||
95 | struct ieee80211_tx_control *control); | 95 | struct ieee80211_tx_control *control); |
96 | 96 | ||
97 | /** | 97 | /** |
98 | * struct queue_entry_priv_pci_rx: Per RX entry PCI specific information | 98 | * struct queue_entry_priv_pci: Per entry PCI specific information |
99 | * | ||
100 | * @desc: Pointer to device descriptor. | ||
101 | * @desc_dma: DMA pointer to @desc. | ||
102 | * @data: Pointer to device's entry memory. | ||
103 | * @data_dma: DMA pointer to &data. | ||
104 | */ | ||
105 | struct queue_entry_priv_pci_rx { | ||
106 | __le32 *desc; | ||
107 | dma_addr_t desc_dma; | ||
108 | |||
109 | void *data; | ||
110 | dma_addr_t data_dma; | ||
111 | }; | ||
112 | |||
113 | /** | ||
114 | * struct queue_entry_priv_pci_tx: Per TX entry PCI specific information | ||
115 | * | 99 | * |
116 | * @desc: Pointer to device descriptor | 100 | * @desc: Pointer to device descriptor |
117 | * @desc_dma: DMA pointer to @desc. | 101 | * @desc_dma: DMA pointer to &desc. |
118 | * @data: Pointer to device's entry memory. | 102 | * @data: Pointer to device's entry memory. |
119 | * @data_dma: DMA pointer to &data. | 103 | * @data_dma: DMA pointer to &data. |
120 | * @control: mac80211 control structure used to transmit data. | 104 | * @control: mac80211 control structure used to transmit data. |
121 | */ | 105 | */ |
122 | struct queue_entry_priv_pci_tx { | 106 | struct queue_entry_priv_pci { |
123 | __le32 *desc; | 107 | __le32 *desc; |
124 | dma_addr_t desc_dma; | 108 | dma_addr_t desc_dma; |
125 | 109 | ||
diff --git a/drivers/net/wireless/rt2x00/rt2x00usb.c b/drivers/net/wireless/rt2x00/rt2x00usb.c index df6621025f4b..dcee1b4f152b 100644 --- a/drivers/net/wireless/rt2x00/rt2x00usb.c +++ b/drivers/net/wireless/rt2x00/rt2x00usb.c | |||
@@ -129,7 +129,7 @@ static void rt2x00usb_interrupt_txdone(struct urb *urb) | |||
129 | { | 129 | { |
130 | struct queue_entry *entry = (struct queue_entry *)urb->context; | 130 | struct queue_entry *entry = (struct queue_entry *)urb->context; |
131 | struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; | 131 | struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; |
132 | struct queue_entry_priv_usb_tx *priv_tx = entry->priv_data; | 132 | struct queue_entry_priv_usb *entry_priv = entry->priv_data; |
133 | struct txdone_entry_desc txdesc; | 133 | struct txdone_entry_desc txdesc; |
134 | __le32 *txd = (__le32 *)entry->skb->data; | 134 | __le32 *txd = (__le32 *)entry->skb->data; |
135 | u32 word; | 135 | u32 word; |
@@ -159,7 +159,7 @@ static void rt2x00usb_interrupt_txdone(struct urb *urb) | |||
159 | else | 159 | else |
160 | __set_bit(TXDONE_FAILURE, &txdesc.flags); | 160 | __set_bit(TXDONE_FAILURE, &txdesc.flags); |
161 | txdesc.retry = 0; | 161 | txdesc.retry = 0; |
162 | txdesc.control = &priv_tx->control; | 162 | txdesc.control = &entry_priv->control; |
163 | 163 | ||
164 | rt2x00lib_txdone(entry, &txdesc); | 164 | rt2x00lib_txdone(entry, &txdesc); |
165 | 165 | ||
@@ -175,7 +175,7 @@ static void rt2x00usb_interrupt_txdone(struct urb *urb) | |||
175 | * is reenabled when the txdone handler has finished. | 175 | * is reenabled when the txdone handler has finished. |
176 | */ | 176 | */ |
177 | if (!rt2x00queue_full(entry->queue)) | 177 | if (!rt2x00queue_full(entry->queue)) |
178 | ieee80211_wake_queue(rt2x00dev->hw, priv_tx->control.queue); | 178 | ieee80211_wake_queue(rt2x00dev->hw, entry_priv->control.queue); |
179 | } | 179 | } |
180 | 180 | ||
181 | int rt2x00usb_write_tx_data(struct rt2x00_dev *rt2x00dev, | 181 | int rt2x00usb_write_tx_data(struct rt2x00_dev *rt2x00dev, |
@@ -184,7 +184,7 @@ int rt2x00usb_write_tx_data(struct rt2x00_dev *rt2x00dev, | |||
184 | { | 184 | { |
185 | struct usb_device *usb_dev = rt2x00dev_usb_dev(rt2x00dev); | 185 | struct usb_device *usb_dev = rt2x00dev_usb_dev(rt2x00dev); |
186 | struct queue_entry *entry = rt2x00queue_get_entry(queue, Q_INDEX); | 186 | struct queue_entry *entry = rt2x00queue_get_entry(queue, Q_INDEX); |
187 | struct queue_entry_priv_usb_tx *priv_tx = entry->priv_data; | 187 | struct queue_entry_priv_usb *entry_priv = entry->priv_data; |
188 | struct skb_frame_desc *skbdesc; | 188 | struct skb_frame_desc *skbdesc; |
189 | struct txentry_desc txdesc; | 189 | struct txentry_desc txdesc; |
190 | u32 length; | 190 | u32 length; |
@@ -224,7 +224,7 @@ int rt2x00usb_write_tx_data(struct rt2x00_dev *rt2x00dev, | |||
224 | skbdesc->desc_len = queue->desc_size; | 224 | skbdesc->desc_len = queue->desc_size; |
225 | skbdesc->entry = entry; | 225 | skbdesc->entry = entry; |
226 | 226 | ||
227 | memcpy(&priv_tx->control, control, sizeof(priv_tx->control)); | 227 | memcpy(&entry_priv->control, control, sizeof(entry_priv->control)); |
228 | rt2x00queue_write_tx_descriptor(entry, &txdesc); | 228 | rt2x00queue_write_tx_descriptor(entry, &txdesc); |
229 | 229 | ||
230 | /* | 230 | /* |
@@ -238,9 +238,9 @@ int rt2x00usb_write_tx_data(struct rt2x00_dev *rt2x00dev, | |||
238 | * Initialize URB and send the frame to the device. | 238 | * Initialize URB and send the frame to the device. |
239 | */ | 239 | */ |
240 | __set_bit(ENTRY_OWNER_DEVICE_DATA, &entry->flags); | 240 | __set_bit(ENTRY_OWNER_DEVICE_DATA, &entry->flags); |
241 | usb_fill_bulk_urb(priv_tx->urb, usb_dev, usb_sndbulkpipe(usb_dev, 1), | 241 | usb_fill_bulk_urb(entry_priv->urb, usb_dev, usb_sndbulkpipe(usb_dev, 1), |
242 | skb->data, length, rt2x00usb_interrupt_txdone, entry); | 242 | skb->data, length, rt2x00usb_interrupt_txdone, entry); |
243 | usb_submit_urb(priv_tx->urb, GFP_ATOMIC); | 243 | usb_submit_urb(entry_priv->urb, GFP_ATOMIC); |
244 | 244 | ||
245 | rt2x00queue_index_inc(queue, Q_INDEX); | 245 | rt2x00queue_index_inc(queue, Q_INDEX); |
246 | 246 | ||
@@ -380,10 +380,8 @@ skip_entry: | |||
380 | */ | 380 | */ |
381 | void rt2x00usb_disable_radio(struct rt2x00_dev *rt2x00dev) | 381 | void rt2x00usb_disable_radio(struct rt2x00_dev *rt2x00dev) |
382 | { | 382 | { |
383 | struct queue_entry_priv_usb_rx *priv_rx; | 383 | struct queue_entry_priv_usb *entry_priv; |
384 | struct queue_entry_priv_usb_tx *priv_tx; | 384 | struct queue_entry_priv_usb_bcn *bcn_priv; |
385 | struct queue_entry_priv_usb_bcn *priv_bcn; | ||
386 | struct data_queue *queue; | ||
387 | unsigned int i; | 385 | unsigned int i; |
388 | 386 | ||
389 | rt2x00usb_vendor_request_sw(rt2x00dev, USB_RX_CONTROL, 0, 0, | 387 | rt2x00usb_vendor_request_sw(rt2x00dev, USB_RX_CONTROL, 0, 0, |
@@ -393,31 +391,17 @@ void rt2x00usb_disable_radio(struct rt2x00_dev *rt2x00dev) | |||
393 | * Cancel all queues. | 391 | * Cancel all queues. |
394 | */ | 392 | */ |
395 | for (i = 0; i < rt2x00dev->rx->limit; i++) { | 393 | for (i = 0; i < rt2x00dev->rx->limit; i++) { |
396 | priv_rx = rt2x00dev->rx->entries[i].priv_data; | 394 | entry_priv = rt2x00dev->rx->entries[i].priv_data; |
397 | usb_kill_urb(priv_rx->urb); | 395 | usb_kill_urb(entry_priv->urb); |
398 | } | ||
399 | |||
400 | tx_queue_for_each(rt2x00dev, queue) { | ||
401 | for (i = 0; i < queue->limit; i++) { | ||
402 | priv_tx = queue->entries[i].priv_data; | ||
403 | usb_kill_urb(priv_tx->urb); | ||
404 | } | ||
405 | } | 396 | } |
406 | 397 | ||
398 | /* | ||
399 | * Kill guardian urb. | ||
400 | */ | ||
407 | for (i = 0; i < rt2x00dev->bcn->limit; i++) { | 401 | for (i = 0; i < rt2x00dev->bcn->limit; i++) { |
408 | priv_bcn = rt2x00dev->bcn->entries[i].priv_data; | 402 | bcn_priv = rt2x00dev->bcn->entries[i].priv_data; |
409 | usb_kill_urb(priv_bcn->urb); | 403 | if (bcn_priv->guardian_urb) |
410 | 404 | usb_kill_urb(bcn_priv->guardian_urb); | |
411 | if (priv_bcn->guardian_urb) | ||
412 | usb_kill_urb(priv_bcn->guardian_urb); | ||
413 | } | ||
414 | |||
415 | if (!test_bit(DRIVER_REQUIRE_ATIM_QUEUE, &rt2x00dev->flags)) | ||
416 | return; | ||
417 | |||
418 | for (i = 0; i < rt2x00dev->bcn[1].limit; i++) { | ||
419 | priv_tx = rt2x00dev->bcn[1].entries[i].priv_data; | ||
420 | usb_kill_urb(priv_tx->urb); | ||
421 | } | 405 | } |
422 | } | 406 | } |
423 | EXPORT_SYMBOL_GPL(rt2x00usb_disable_radio); | 407 | EXPORT_SYMBOL_GPL(rt2x00usb_disable_radio); |
@@ -429,15 +413,15 @@ void rt2x00usb_init_rxentry(struct rt2x00_dev *rt2x00dev, | |||
429 | struct queue_entry *entry) | 413 | struct queue_entry *entry) |
430 | { | 414 | { |
431 | struct usb_device *usb_dev = rt2x00dev_usb_dev(rt2x00dev); | 415 | struct usb_device *usb_dev = rt2x00dev_usb_dev(rt2x00dev); |
432 | struct queue_entry_priv_usb_rx *priv_rx = entry->priv_data; | 416 | struct queue_entry_priv_usb *entry_priv = entry->priv_data; |
433 | 417 | ||
434 | usb_fill_bulk_urb(priv_rx->urb, usb_dev, | 418 | usb_fill_bulk_urb(entry_priv->urb, usb_dev, |
435 | usb_rcvbulkpipe(usb_dev, 1), | 419 | usb_rcvbulkpipe(usb_dev, 1), |
436 | entry->skb->data, entry->skb->len, | 420 | entry->skb->data, entry->skb->len, |
437 | rt2x00usb_interrupt_rxdone, entry); | 421 | rt2x00usb_interrupt_rxdone, entry); |
438 | 422 | ||
439 | __set_bit(ENTRY_OWNER_DEVICE_DATA, &entry->flags); | 423 | __set_bit(ENTRY_OWNER_DEVICE_DATA, &entry->flags); |
440 | usb_submit_urb(priv_rx->urb, GFP_ATOMIC); | 424 | usb_submit_urb(entry_priv->urb, GFP_ATOMIC); |
441 | } | 425 | } |
442 | EXPORT_SYMBOL_GPL(rt2x00usb_init_rxentry); | 426 | EXPORT_SYMBOL_GPL(rt2x00usb_init_rxentry); |
443 | 427 | ||
@@ -451,38 +435,31 @@ EXPORT_SYMBOL_GPL(rt2x00usb_init_txentry); | |||
451 | static int rt2x00usb_alloc_urb(struct rt2x00_dev *rt2x00dev, | 435 | static int rt2x00usb_alloc_urb(struct rt2x00_dev *rt2x00dev, |
452 | struct data_queue *queue) | 436 | struct data_queue *queue) |
453 | { | 437 | { |
454 | struct queue_entry_priv_usb_rx *priv_rx; | 438 | struct queue_entry_priv_usb *entry_priv; |
455 | struct queue_entry_priv_usb_tx *priv_tx; | 439 | struct queue_entry_priv_usb_bcn *bcn_priv; |
456 | struct queue_entry_priv_usb_bcn *priv_bcn; | ||
457 | struct urb *urb; | ||
458 | unsigned int guardian = | ||
459 | test_bit(DRIVER_REQUIRE_BEACON_GUARD, &rt2x00dev->flags); | ||
460 | unsigned int i; | 440 | unsigned int i; |
461 | 441 | ||
442 | for (i = 0; i < queue->limit; i++) { | ||
443 | entry_priv = queue->entries[i].priv_data; | ||
444 | entry_priv->urb = usb_alloc_urb(0, GFP_KERNEL); | ||
445 | if (!entry_priv->urb) | ||
446 | return -ENOMEM; | ||
447 | } | ||
448 | |||
462 | /* | 449 | /* |
463 | * Allocate the URB's | 450 | * If this is not the beacon queue or |
451 | * no guardian byte was required for the beacon, | ||
452 | * then we are done. | ||
464 | */ | 453 | */ |
454 | if (rt2x00dev->bcn != queue || | ||
455 | !test_bit(DRIVER_REQUIRE_BEACON_GUARD, &rt2x00dev->flags)) | ||
456 | return 0; | ||
457 | |||
465 | for (i = 0; i < queue->limit; i++) { | 458 | for (i = 0; i < queue->limit; i++) { |
466 | urb = usb_alloc_urb(0, GFP_KERNEL); | 459 | bcn_priv = queue->entries[i].priv_data; |
467 | if (!urb) | 460 | bcn_priv->guardian_urb = usb_alloc_urb(0, GFP_KERNEL); |
461 | if (!bcn_priv->guardian_urb) | ||
468 | return -ENOMEM; | 462 | return -ENOMEM; |
469 | |||
470 | if (queue->qid == QID_RX) { | ||
471 | priv_rx = queue->entries[i].priv_data; | ||
472 | priv_rx->urb = urb; | ||
473 | } else if (queue->qid == QID_MGMT && guardian) { | ||
474 | priv_bcn = queue->entries[i].priv_data; | ||
475 | priv_bcn->urb = urb; | ||
476 | |||
477 | urb = usb_alloc_urb(0, GFP_KERNEL); | ||
478 | if (!urb) | ||
479 | return -ENOMEM; | ||
480 | |||
481 | priv_bcn->guardian_urb = urb; | ||
482 | } else { | ||
483 | priv_tx = queue->entries[i].priv_data; | ||
484 | priv_tx->urb = urb; | ||
485 | } | ||
486 | } | 463 | } |
487 | 464 | ||
488 | return 0; | 465 | return 0; |
@@ -491,38 +468,35 @@ static int rt2x00usb_alloc_urb(struct rt2x00_dev *rt2x00dev, | |||
491 | static void rt2x00usb_free_urb(struct rt2x00_dev *rt2x00dev, | 468 | static void rt2x00usb_free_urb(struct rt2x00_dev *rt2x00dev, |
492 | struct data_queue *queue) | 469 | struct data_queue *queue) |
493 | { | 470 | { |
494 | struct queue_entry_priv_usb_rx *priv_rx; | 471 | struct queue_entry_priv_usb *entry_priv; |
495 | struct queue_entry_priv_usb_tx *priv_tx; | 472 | struct queue_entry_priv_usb_bcn *bcn_priv; |
496 | struct queue_entry_priv_usb_bcn *priv_bcn; | ||
497 | struct urb *urb; | ||
498 | unsigned int guardian = | ||
499 | test_bit(DRIVER_REQUIRE_BEACON_GUARD, &rt2x00dev->flags); | ||
500 | unsigned int i; | 473 | unsigned int i; |
501 | 474 | ||
502 | if (!queue->entries) | 475 | if (!queue->entries) |
503 | return; | 476 | return; |
504 | 477 | ||
505 | for (i = 0; i < queue->limit; i++) { | 478 | for (i = 0; i < queue->limit; i++) { |
506 | if (queue->qid == QID_RX) { | 479 | entry_priv = queue->entries[i].priv_data; |
507 | priv_rx = queue->entries[i].priv_data; | 480 | usb_kill_urb(entry_priv->urb); |
508 | urb = priv_rx->urb; | 481 | usb_free_urb(entry_priv->urb); |
509 | } else if (queue->qid == QID_MGMT && guardian) { | ||
510 | priv_bcn = queue->entries[i].priv_data; | ||
511 | |||
512 | usb_kill_urb(priv_bcn->guardian_urb); | ||
513 | usb_free_urb(priv_bcn->guardian_urb); | ||
514 | |||
515 | urb = priv_bcn->urb; | ||
516 | } else { | ||
517 | priv_tx = queue->entries[i].priv_data; | ||
518 | urb = priv_tx->urb; | ||
519 | } | ||
520 | |||
521 | usb_kill_urb(urb); | ||
522 | usb_free_urb(urb); | ||
523 | if (queue->entries[i].skb) | 482 | if (queue->entries[i].skb) |
524 | kfree_skb(queue->entries[i].skb); | 483 | kfree_skb(queue->entries[i].skb); |
525 | } | 484 | } |
485 | |||
486 | /* | ||
487 | * If this is not the beacon queue or | ||
488 | * no guardian byte was required for the beacon, | ||
489 | * then we are done. | ||
490 | */ | ||
491 | if (rt2x00dev->bcn != queue || | ||
492 | !test_bit(DRIVER_REQUIRE_BEACON_GUARD, &rt2x00dev->flags)) | ||
493 | return; | ||
494 | |||
495 | for (i = 0; i < queue->limit; i++) { | ||
496 | bcn_priv = queue->entries[i].priv_data; | ||
497 | usb_kill_urb(bcn_priv->guardian_urb); | ||
498 | usb_free_urb(bcn_priv->guardian_urb); | ||
499 | } | ||
526 | } | 500 | } |
527 | 501 | ||
528 | int rt2x00usb_initialize(struct rt2x00_dev *rt2x00dev) | 502 | int rt2x00usb_initialize(struct rt2x00_dev *rt2x00dev) |
diff --git a/drivers/net/wireless/rt2x00/rt2x00usb.h b/drivers/net/wireless/rt2x00/rt2x00usb.h index 4da9eb376ebd..15b404aa714d 100644 --- a/drivers/net/wireless/rt2x00/rt2x00usb.h +++ b/drivers/net/wireless/rt2x00/rt2x00usb.h | |||
@@ -220,30 +220,21 @@ int rt2x00usb_write_tx_data(struct rt2x00_dev *rt2x00dev, | |||
220 | struct ieee80211_tx_control *control); | 220 | struct ieee80211_tx_control *control); |
221 | 221 | ||
222 | /** | 222 | /** |
223 | * struct queue_entry_priv_usb_rx: Per RX entry USB specific information | 223 | * struct queue_entry_priv_usb: Per entry USB specific information |
224 | * | ||
225 | * @urb: Urb structure used for device communication. | ||
226 | */ | ||
227 | struct queue_entry_priv_usb_rx { | ||
228 | struct urb *urb; | ||
229 | }; | ||
230 | |||
231 | /** | ||
232 | * struct queue_entry_priv_usb_tx: Per TX entry USB specific information | ||
233 | * | 224 | * |
234 | * @urb: Urb structure used for device communication. | 225 | * @urb: Urb structure used for device communication. |
235 | * @control: mac80211 control structure used to transmit data. | 226 | * @control: mac80211 control structure used to transmit data. |
236 | */ | 227 | */ |
237 | struct queue_entry_priv_usb_tx { | 228 | struct queue_entry_priv_usb { |
238 | struct urb *urb; | 229 | struct urb *urb; |
239 | 230 | ||
240 | struct ieee80211_tx_control control; | 231 | struct ieee80211_tx_control control; |
241 | }; | 232 | }; |
242 | 233 | ||
243 | /** | 234 | /** |
244 | * struct queue_entry_priv_usb_tx: Per TX entry USB specific information | 235 | * struct queue_entry_priv_usb_bcn: Per TX entry USB specific information |
245 | * | 236 | * |
246 | * The first section should match &struct queue_entry_priv_usb_tx exactly. | 237 | * The first section should match &struct queue_entry_priv_usb exactly. |
247 | * rt2500usb can use this structure to send a guardian byte when working | 238 | * rt2500usb can use this structure to send a guardian byte when working |
248 | * with beacons. | 239 | * with beacons. |
249 | * | 240 | * |
diff --git a/drivers/net/wireless/rt2x00/rt61pci.c b/drivers/net/wireless/rt2x00/rt61pci.c index 2e5e45cbd2e5..7598b6e15784 100644 --- a/drivers/net/wireless/rt2x00/rt61pci.c +++ b/drivers/net/wireless/rt2x00/rt61pci.c | |||
@@ -1018,35 +1018,34 @@ static int rt61pci_load_firmware(struct rt2x00_dev *rt2x00dev, void *data, | |||
1018 | static void rt61pci_init_rxentry(struct rt2x00_dev *rt2x00dev, | 1018 | static void rt61pci_init_rxentry(struct rt2x00_dev *rt2x00dev, |
1019 | struct queue_entry *entry) | 1019 | struct queue_entry *entry) |
1020 | { | 1020 | { |
1021 | struct queue_entry_priv_pci_rx *priv_rx = entry->priv_data; | 1021 | struct queue_entry_priv_pci *entry_priv = entry->priv_data; |
1022 | u32 word; | 1022 | u32 word; |
1023 | 1023 | ||
1024 | rt2x00_desc_read(priv_rx->desc, 5, &word); | 1024 | rt2x00_desc_read(entry_priv->desc, 5, &word); |
1025 | rt2x00_set_field32(&word, RXD_W5_BUFFER_PHYSICAL_ADDRESS, | 1025 | rt2x00_set_field32(&word, RXD_W5_BUFFER_PHYSICAL_ADDRESS, |
1026 | priv_rx->data_dma); | 1026 | entry_priv->data_dma); |
1027 | rt2x00_desc_write(priv_rx->desc, 5, word); | 1027 | rt2x00_desc_write(entry_priv->desc, 5, word); |
1028 | 1028 | ||
1029 | rt2x00_desc_read(priv_rx->desc, 0, &word); | 1029 | rt2x00_desc_read(entry_priv->desc, 0, &word); |
1030 | rt2x00_set_field32(&word, RXD_W0_OWNER_NIC, 1); | 1030 | rt2x00_set_field32(&word, RXD_W0_OWNER_NIC, 1); |
1031 | rt2x00_desc_write(priv_rx->desc, 0, word); | 1031 | rt2x00_desc_write(entry_priv->desc, 0, word); |
1032 | } | 1032 | } |
1033 | 1033 | ||
1034 | static void rt61pci_init_txentry(struct rt2x00_dev *rt2x00dev, | 1034 | static void rt61pci_init_txentry(struct rt2x00_dev *rt2x00dev, |
1035 | struct queue_entry *entry) | 1035 | struct queue_entry *entry) |
1036 | { | 1036 | { |
1037 | struct queue_entry_priv_pci_tx *priv_tx = entry->priv_data; | 1037 | struct queue_entry_priv_pci *entry_priv = entry->priv_data; |
1038 | u32 word; | 1038 | u32 word; |
1039 | 1039 | ||
1040 | rt2x00_desc_read(priv_tx->desc, 0, &word); | 1040 | rt2x00_desc_read(entry_priv->desc, 0, &word); |
1041 | rt2x00_set_field32(&word, TXD_W0_VALID, 0); | 1041 | rt2x00_set_field32(&word, TXD_W0_VALID, 0); |
1042 | rt2x00_set_field32(&word, TXD_W0_OWNER_NIC, 0); | 1042 | rt2x00_set_field32(&word, TXD_W0_OWNER_NIC, 0); |
1043 | rt2x00_desc_write(priv_tx->desc, 0, word); | 1043 | rt2x00_desc_write(entry_priv->desc, 0, word); |
1044 | } | 1044 | } |
1045 | 1045 | ||
1046 | static int rt61pci_init_queues(struct rt2x00_dev *rt2x00dev) | 1046 | static int rt61pci_init_queues(struct rt2x00_dev *rt2x00dev) |
1047 | { | 1047 | { |
1048 | struct queue_entry_priv_pci_rx *priv_rx; | 1048 | struct queue_entry_priv_pci *entry_priv; |
1049 | struct queue_entry_priv_pci_tx *priv_tx; | ||
1050 | u32 reg; | 1049 | u32 reg; |
1051 | 1050 | ||
1052 | /* | 1051 | /* |
@@ -1068,28 +1067,28 @@ static int rt61pci_init_queues(struct rt2x00_dev *rt2x00dev) | |||
1068 | rt2x00dev->tx[0].desc_size / 4); | 1067 | rt2x00dev->tx[0].desc_size / 4); |
1069 | rt2x00pci_register_write(rt2x00dev, TX_RING_CSR1, reg); | 1068 | rt2x00pci_register_write(rt2x00dev, TX_RING_CSR1, reg); |
1070 | 1069 | ||
1071 | priv_tx = rt2x00dev->tx[0].entries[0].priv_data; | 1070 | entry_priv = rt2x00dev->tx[0].entries[0].priv_data; |
1072 | rt2x00pci_register_read(rt2x00dev, AC0_BASE_CSR, ®); | 1071 | rt2x00pci_register_read(rt2x00dev, AC0_BASE_CSR, ®); |
1073 | rt2x00_set_field32(®, AC0_BASE_CSR_RING_REGISTER, | 1072 | rt2x00_set_field32(®, AC0_BASE_CSR_RING_REGISTER, |
1074 | priv_tx->desc_dma); | 1073 | entry_priv->desc_dma); |
1075 | rt2x00pci_register_write(rt2x00dev, AC0_BASE_CSR, reg); | 1074 | rt2x00pci_register_write(rt2x00dev, AC0_BASE_CSR, reg); |
1076 | 1075 | ||
1077 | priv_tx = rt2x00dev->tx[1].entries[0].priv_data; | 1076 | entry_priv = rt2x00dev->tx[1].entries[0].priv_data; |
1078 | rt2x00pci_register_read(rt2x00dev, AC1_BASE_CSR, ®); | 1077 | rt2x00pci_register_read(rt2x00dev, AC1_BASE_CSR, ®); |
1079 | rt2x00_set_field32(®, AC1_BASE_CSR_RING_REGISTER, | 1078 | rt2x00_set_field32(®, AC1_BASE_CSR_RING_REGISTER, |
1080 | priv_tx->desc_dma); | 1079 | entry_priv->desc_dma); |
1081 | rt2x00pci_register_write(rt2x00dev, AC1_BASE_CSR, reg); | 1080 | rt2x00pci_register_write(rt2x00dev, AC1_BASE_CSR, reg); |
1082 | 1081 | ||
1083 | priv_tx = rt2x00dev->tx[2].entries[0].priv_data; | 1082 | entry_priv = rt2x00dev->tx[2].entries[0].priv_data; |
1084 | rt2x00pci_register_read(rt2x00dev, AC2_BASE_CSR, ®); | 1083 | rt2x00pci_register_read(rt2x00dev, AC2_BASE_CSR, ®); |
1085 | rt2x00_set_field32(®, AC2_BASE_CSR_RING_REGISTER, | 1084 | rt2x00_set_field32(®, AC2_BASE_CSR_RING_REGISTER, |
1086 | priv_tx->desc_dma); | 1085 | entry_priv->desc_dma); |
1087 | rt2x00pci_register_write(rt2x00dev, AC2_BASE_CSR, reg); | 1086 | rt2x00pci_register_write(rt2x00dev, AC2_BASE_CSR, reg); |
1088 | 1087 | ||
1089 | priv_tx = rt2x00dev->tx[3].entries[0].priv_data; | 1088 | entry_priv = rt2x00dev->tx[3].entries[0].priv_data; |
1090 | rt2x00pci_register_read(rt2x00dev, AC3_BASE_CSR, ®); | 1089 | rt2x00pci_register_read(rt2x00dev, AC3_BASE_CSR, ®); |
1091 | rt2x00_set_field32(®, AC3_BASE_CSR_RING_REGISTER, | 1090 | rt2x00_set_field32(®, AC3_BASE_CSR_RING_REGISTER, |
1092 | priv_tx->desc_dma); | 1091 | entry_priv->desc_dma); |
1093 | rt2x00pci_register_write(rt2x00dev, AC3_BASE_CSR, reg); | 1092 | rt2x00pci_register_write(rt2x00dev, AC3_BASE_CSR, reg); |
1094 | 1093 | ||
1095 | rt2x00pci_register_read(rt2x00dev, RX_RING_CSR, ®); | 1094 | rt2x00pci_register_read(rt2x00dev, RX_RING_CSR, ®); |
@@ -1099,10 +1098,10 @@ static int rt61pci_init_queues(struct rt2x00_dev *rt2x00dev) | |||
1099 | rt2x00_set_field32(®, RX_RING_CSR_RXD_WRITEBACK_SIZE, 4); | 1098 | rt2x00_set_field32(®, RX_RING_CSR_RXD_WRITEBACK_SIZE, 4); |
1100 | rt2x00pci_register_write(rt2x00dev, RX_RING_CSR, reg); | 1099 | rt2x00pci_register_write(rt2x00dev, RX_RING_CSR, reg); |
1101 | 1100 | ||
1102 | priv_rx = rt2x00dev->rx->entries[0].priv_data; | 1101 | entry_priv = rt2x00dev->rx->entries[0].priv_data; |
1103 | rt2x00pci_register_read(rt2x00dev, RX_BASE_CSR, ®); | 1102 | rt2x00pci_register_read(rt2x00dev, RX_BASE_CSR, ®); |
1104 | rt2x00_set_field32(®, RX_BASE_CSR_RING_REGISTER, | 1103 | rt2x00_set_field32(®, RX_BASE_CSR_RING_REGISTER, |
1105 | priv_rx->desc_dma); | 1104 | entry_priv->desc_dma); |
1106 | rt2x00pci_register_write(rt2x00dev, RX_BASE_CSR, reg); | 1105 | rt2x00pci_register_write(rt2x00dev, RX_BASE_CSR, reg); |
1107 | 1106 | ||
1108 | rt2x00pci_register_read(rt2x00dev, TX_DMA_DST_CSR, ®); | 1107 | rt2x00pci_register_read(rt2x00dev, TX_DMA_DST_CSR, ®); |
@@ -1515,7 +1514,7 @@ static void rt61pci_write_tx_desc(struct rt2x00_dev *rt2x00dev, | |||
1515 | struct txentry_desc *txdesc) | 1514 | struct txentry_desc *txdesc) |
1516 | { | 1515 | { |
1517 | struct skb_frame_desc *skbdesc = get_skb_frame_desc(skb); | 1516 | struct skb_frame_desc *skbdesc = get_skb_frame_desc(skb); |
1518 | struct queue_entry_priv_pci_tx *entry_priv = skbdesc->entry->priv_data; | 1517 | struct queue_entry_priv_pci *entry_priv = skbdesc->entry->priv_data; |
1519 | __le32 *txd = skbdesc->desc; | 1518 | __le32 *txd = skbdesc->desc; |
1520 | u32 word; | 1519 | u32 word; |
1521 | 1520 | ||
@@ -1661,12 +1660,12 @@ static int rt61pci_agc_to_rssi(struct rt2x00_dev *rt2x00dev, int rxd_w1) | |||
1661 | static void rt61pci_fill_rxdone(struct queue_entry *entry, | 1660 | static void rt61pci_fill_rxdone(struct queue_entry *entry, |
1662 | struct rxdone_entry_desc *rxdesc) | 1661 | struct rxdone_entry_desc *rxdesc) |
1663 | { | 1662 | { |
1664 | struct queue_entry_priv_pci_rx *priv_rx = entry->priv_data; | 1663 | struct queue_entry_priv_pci *entry_priv = entry->priv_data; |
1665 | u32 word0; | 1664 | u32 word0; |
1666 | u32 word1; | 1665 | u32 word1; |
1667 | 1666 | ||
1668 | rt2x00_desc_read(priv_rx->desc, 0, &word0); | 1667 | rt2x00_desc_read(entry_priv->desc, 0, &word0); |
1669 | rt2x00_desc_read(priv_rx->desc, 1, &word1); | 1668 | rt2x00_desc_read(entry_priv->desc, 1, &word1); |
1670 | 1669 | ||
1671 | if (rt2x00_get_field32(word0, RXD_W0_CRC_ERROR)) | 1670 | if (rt2x00_get_field32(word0, RXD_W0_CRC_ERROR)) |
1672 | rxdesc->flags |= RX_FLAG_FAILED_FCS_CRC; | 1671 | rxdesc->flags |= RX_FLAG_FAILED_FCS_CRC; |
@@ -1695,7 +1694,7 @@ static void rt61pci_txdone(struct rt2x00_dev *rt2x00dev) | |||
1695 | struct data_queue *queue; | 1694 | struct data_queue *queue; |
1696 | struct queue_entry *entry; | 1695 | struct queue_entry *entry; |
1697 | struct queue_entry *entry_done; | 1696 | struct queue_entry *entry_done; |
1698 | struct queue_entry_priv_pci_tx *priv_tx; | 1697 | struct queue_entry_priv_pci *entry_priv; |
1699 | struct txdone_entry_desc txdesc; | 1698 | struct txdone_entry_desc txdesc; |
1700 | u32 word; | 1699 | u32 word; |
1701 | u32 reg; | 1700 | u32 reg; |
@@ -1740,8 +1739,8 @@ static void rt61pci_txdone(struct rt2x00_dev *rt2x00dev) | |||
1740 | continue; | 1739 | continue; |
1741 | 1740 | ||
1742 | entry = &queue->entries[index]; | 1741 | entry = &queue->entries[index]; |
1743 | priv_tx = entry->priv_data; | 1742 | entry_priv = entry->priv_data; |
1744 | rt2x00_desc_read(priv_tx->desc, 0, &word); | 1743 | rt2x00_desc_read(entry_priv->desc, 0, &word); |
1745 | 1744 | ||
1746 | if (rt2x00_get_field32(word, TXD_W0_OWNER_NIC) || | 1745 | if (rt2x00_get_field32(word, TXD_W0_OWNER_NIC) || |
1747 | !rt2x00_get_field32(word, TXD_W0_VALID)) | 1746 | !rt2x00_get_field32(word, TXD_W0_VALID)) |
@@ -2363,7 +2362,7 @@ static int rt61pci_beacon_update(struct ieee80211_hw *hw, struct sk_buff *skb, | |||
2363 | { | 2362 | { |
2364 | struct rt2x00_dev *rt2x00dev = hw->priv; | 2363 | struct rt2x00_dev *rt2x00dev = hw->priv; |
2365 | struct rt2x00_intf *intf = vif_to_intf(control->vif); | 2364 | struct rt2x00_intf *intf = vif_to_intf(control->vif); |
2366 | struct queue_entry_priv_pci_tx *priv_tx; | 2365 | struct queue_entry_priv_pci *entry_priv; |
2367 | struct skb_frame_desc *skbdesc; | 2366 | struct skb_frame_desc *skbdesc; |
2368 | struct txentry_desc txdesc; | 2367 | struct txentry_desc txdesc; |
2369 | unsigned int beacon_base; | 2368 | unsigned int beacon_base; |
@@ -2380,8 +2379,8 @@ static int rt61pci_beacon_update(struct ieee80211_hw *hw, struct sk_buff *skb, | |||
2380 | intf->beacon->skb = skb; | 2379 | intf->beacon->skb = skb; |
2381 | rt2x00queue_create_tx_descriptor(intf->beacon, &txdesc, control); | 2380 | rt2x00queue_create_tx_descriptor(intf->beacon, &txdesc, control); |
2382 | 2381 | ||
2383 | priv_tx = intf->beacon->priv_data; | 2382 | entry_priv = intf->beacon->priv_data; |
2384 | memset(priv_tx->desc, 0, intf->beacon->queue->desc_size); | 2383 | memset(entry_priv->desc, 0, intf->beacon->queue->desc_size); |
2385 | 2384 | ||
2386 | /* | 2385 | /* |
2387 | * Fill in skb descriptor | 2386 | * Fill in skb descriptor |
@@ -2391,7 +2390,7 @@ static int rt61pci_beacon_update(struct ieee80211_hw *hw, struct sk_buff *skb, | |||
2391 | skbdesc->flags |= FRAME_DESC_DRIVER_GENERATED; | 2390 | skbdesc->flags |= FRAME_DESC_DRIVER_GENERATED; |
2392 | skbdesc->data = skb->data; | 2391 | skbdesc->data = skb->data; |
2393 | skbdesc->data_len = skb->len; | 2392 | skbdesc->data_len = skb->len; |
2394 | skbdesc->desc = priv_tx->desc; | 2393 | skbdesc->desc = entry_priv->desc; |
2395 | skbdesc->desc_len = intf->beacon->queue->desc_size; | 2394 | skbdesc->desc_len = intf->beacon->queue->desc_size; |
2396 | skbdesc->entry = intf->beacon; | 2395 | skbdesc->entry = intf->beacon; |
2397 | 2396 | ||
@@ -2468,21 +2467,21 @@ static const struct data_queue_desc rt61pci_queue_rx = { | |||
2468 | .entry_num = RX_ENTRIES, | 2467 | .entry_num = RX_ENTRIES, |
2469 | .data_size = DATA_FRAME_SIZE, | 2468 | .data_size = DATA_FRAME_SIZE, |
2470 | .desc_size = RXD_DESC_SIZE, | 2469 | .desc_size = RXD_DESC_SIZE, |
2471 | .priv_size = sizeof(struct queue_entry_priv_pci_rx), | 2470 | .priv_size = sizeof(struct queue_entry_priv_pci), |
2472 | }; | 2471 | }; |
2473 | 2472 | ||
2474 | static const struct data_queue_desc rt61pci_queue_tx = { | 2473 | static const struct data_queue_desc rt61pci_queue_tx = { |
2475 | .entry_num = TX_ENTRIES, | 2474 | .entry_num = TX_ENTRIES, |
2476 | .data_size = DATA_FRAME_SIZE, | 2475 | .data_size = DATA_FRAME_SIZE, |
2477 | .desc_size = TXD_DESC_SIZE, | 2476 | .desc_size = TXD_DESC_SIZE, |
2478 | .priv_size = sizeof(struct queue_entry_priv_pci_tx), | 2477 | .priv_size = sizeof(struct queue_entry_priv_pci), |
2479 | }; | 2478 | }; |
2480 | 2479 | ||
2481 | static const struct data_queue_desc rt61pci_queue_bcn = { | 2480 | static const struct data_queue_desc rt61pci_queue_bcn = { |
2482 | .entry_num = 4 * BEACON_ENTRIES, | 2481 | .entry_num = 4 * BEACON_ENTRIES, |
2483 | .data_size = 0, /* No DMA required for beacons */ | 2482 | .data_size = 0, /* No DMA required for beacons */ |
2484 | .desc_size = TXINFO_SIZE, | 2483 | .desc_size = TXINFO_SIZE, |
2485 | .priv_size = sizeof(struct queue_entry_priv_pci_tx), | 2484 | .priv_size = sizeof(struct queue_entry_priv_pci), |
2486 | }; | 2485 | }; |
2487 | 2486 | ||
2488 | static const struct rt2x00_ops rt61pci_ops = { | 2487 | static const struct rt2x00_ops rt61pci_ops = { |
diff --git a/drivers/net/wireless/rt2x00/rt73usb.c b/drivers/net/wireless/rt2x00/rt73usb.c index 5d70dd840c15..e55bcbdfc1e1 100644 --- a/drivers/net/wireless/rt2x00/rt73usb.c +++ b/drivers/net/wireless/rt2x00/rt73usb.c | |||
@@ -2058,21 +2058,21 @@ static const struct data_queue_desc rt73usb_queue_rx = { | |||
2058 | .entry_num = RX_ENTRIES, | 2058 | .entry_num = RX_ENTRIES, |
2059 | .data_size = DATA_FRAME_SIZE, | 2059 | .data_size = DATA_FRAME_SIZE, |
2060 | .desc_size = RXD_DESC_SIZE, | 2060 | .desc_size = RXD_DESC_SIZE, |
2061 | .priv_size = sizeof(struct queue_entry_priv_usb_rx), | 2061 | .priv_size = sizeof(struct queue_entry_priv_usb), |
2062 | }; | 2062 | }; |
2063 | 2063 | ||
2064 | static const struct data_queue_desc rt73usb_queue_tx = { | 2064 | static const struct data_queue_desc rt73usb_queue_tx = { |
2065 | .entry_num = TX_ENTRIES, | 2065 | .entry_num = TX_ENTRIES, |
2066 | .data_size = DATA_FRAME_SIZE, | 2066 | .data_size = DATA_FRAME_SIZE, |
2067 | .desc_size = TXD_DESC_SIZE, | 2067 | .desc_size = TXD_DESC_SIZE, |
2068 | .priv_size = sizeof(struct queue_entry_priv_usb_tx), | 2068 | .priv_size = sizeof(struct queue_entry_priv_usb), |
2069 | }; | 2069 | }; |
2070 | 2070 | ||
2071 | static const struct data_queue_desc rt73usb_queue_bcn = { | 2071 | static const struct data_queue_desc rt73usb_queue_bcn = { |
2072 | .entry_num = 4 * BEACON_ENTRIES, | 2072 | .entry_num = 4 * BEACON_ENTRIES, |
2073 | .data_size = MGMT_FRAME_SIZE, | 2073 | .data_size = MGMT_FRAME_SIZE, |
2074 | .desc_size = TXINFO_SIZE, | 2074 | .desc_size = TXINFO_SIZE, |
2075 | .priv_size = sizeof(struct queue_entry_priv_usb_tx), | 2075 | .priv_size = sizeof(struct queue_entry_priv_usb), |
2076 | }; | 2076 | }; |
2077 | 2077 | ||
2078 | static const struct rt2x00_ops rt73usb_ops = { | 2078 | static const struct rt2x00_ops rt73usb_ops = { |